DOSP̽PSZHNU/ Nz~A>0JgQ~0 6gQJgFCpN+@A,@+ndN:+@ @IT,m"LpN"LpN"Lpr$<vN"LpN"L0<7r N"Lp5AN"L0<ZrN"Lp.ANEGo~|("Lps"NpA1gpA8/"LN _0H@bC",x#vEaLFJfSNPQ9g<9 f,xA 0g"6g"ArBQB`KNp @NpN m,mN"N,xNbN < rN:+@"_3|#| $#@(#|,N83| #|$N8 m"H.<  PM31 QN"m < N.N]LCN @ hpNuH~NU. $BE &O,xN B"Gf  GN]L~Nu" AlRNu*."&j:2h Boot Menu v3.1 Peter Stuer 1990 [Left] Continue boot Reset vectors [Right]intuition.librarydos.libraryOKPlease check%-20s: $%08lx OK%-20s: $%08lx SuspiciousColdCaptureCoolCaptureKickMemPtrKickTagPtrOldOpenLibraryPutMsgDoIOSumKickDataxVf(gᩙhbНklÍ}]}{]}˖}}əkf(` nfˀhf;).fi(}h}˖Z ʞjKfcX#}*fk} Kfxm8bZixYii*92RZ˖J "r)yiiIi92RJi8͹; jxi8s Ji+ngBjZ[jjhJʎjPÍ|Yiұ)ʂy1 dᩙ8b`õ|YiifᩙofᩙmjÐhjgY!|BJ~gmjg᳈|߁i}3(j /b[#gy/gxBj+ؖgBRʂi|+g ifᩙmjkvZ fkfHd+fxd˃f8KfdKKeq{pf+gyڂ񋃉*j)>&r h7 fKfhlFhc]z␨-| bngiho/Yi %|KHP(f0}w8x8H([tS=l+0&h{ # 3 o0kw8= `8K53 sut"F &k [5`W(}Kfa0lې0;u|K"ss*Hkqƥik%+ꊂiiqiiiiii)iiiPiiiiiiiiiJ B rI抂i*irii(+j(Kk!B2l P*")":z )YZ "iU + +H;hhhhhhiiiiii[Р#Yhhhhhhhhiiiiiiiii;((k( shhhh(c;@C#ыhhhhhhC hhhhhhhh(c# ɘhhhhhh(Ck(SۋShhhhhȨ;kIhhhhhh0 @Shhhhhh@(chhhhh C#Chhhhhhcchhhhhh ӳ(chhhhhhh{k["hhhhhh+CPk hhhhhhCțȳk;k۳{AhhhCțȳk;k۳{@( hCțȳk;k۳{@ (hh 0# s3{ {3k0ыhhc83#hhhhhhhhhhhhhhhhhhhhhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY !. if there are less than three lines left at the bottom of the current page. END PURPOSE Terminates program execution. SYNTAX END COMMENTS This command brings a program to a halt and returns control to the Superbase Menu system. END is optional and if you do not include it, DML will return control to Superbase when it reaches the last statement in a program. EXAMPLES 1 IF EOF("aaa") THEN END END GROUP SYNTAX END GROUP PURPOSE Marks the end of a BEFORE GROUP or AFTER GROUP sectio&n. COMMENTS A BEFORE GROUP or AFTER GROUP section in a Report program must end with an END GROUP statement. If it doesn't, Superbase will be unable to tell which statements below to which section. END HEADING PURPOSE Marks the end of a HEADING section in a Report program. SYNTAX END HEADING COMMENTS A HEADING section defines the headings for a report. It must start with the keyword HEADING, followed by one or more '?' statements which specify the heading information. END HEADING  D a numeric value from a date field or a date string. SYNTAX DAY(nexpr) COMMENTS The number which DAY returns takes the numeric format as set in the SET- NUMERIC FORMAT Superbase menu, or as set with the command DATEBASE. Associated date functions are DATE$ DAY DAY$ MONTH MONTH$ YEAR. EXAMPLES 1 numfieldc=DAY(datefielda) 2 numfieldc=DAY(datefielda + 90) 3 numfieldc=DAY(TODAY) 4 x%=DAY(datefielda + VAL(textfielda)) 5 x%=DAY(DAYS("11 Jan 85") 6 ?DAY(datefielda + 30) NOTES Examples 3 ?2 provides a calculation to insert the day number of the system date into a numeric field. DAY$ PURPOSE Returns the day of the week as a text string from a julian date number. SYNTAX DAY$(nexpr) COMMENTS Associated date functions are DATE$ DAY DAY$ MONTH MONTH$ YEAR. EXAMPLES 1 textfieldc=DAY$(datefielda) 2 textfieldc=DAY$(datefileda + 90) 3 textfieldc=DAY$(TODAY) 4 x$=DAY$(DAYS("11 January 1985")) 5 x$=DAYS(y%) 6 ?DAYS(datefielda + 30) NOTES Example 3 provides a calculation to i)nsert the weekday of the system date into a textfield. Example 4 provides a weekday for the date shown in quotation marks. DAYS PURPOSE Returns the date as a julian date number from a text string or text field. SYNTAX DAYS(strexpr) or DAYS(nexpr) COMMENTS This function returns a number which is the julian day number of the date in strexpr(31 December AD 0 has a julian date value of zero). It takes the 1752 Gregorian reform of the calendar into account. strexpr must be in a valid d>pBate format. A text expression which is not in one of the valid date formats will produce a message 'invalid date format'. Associated date functions are:DATE$ DAY DAY$ MONTH MONTH$ YEAR. EXAMPLES 1 numfieldc=DAYS(textfielda) 2 numfieldc=DAYS(datefielda + 90) 3 numfieldc=DAYS("11 jan 85") 4 x%=DAYS(a$) + 90 NOTES In example 2, the use of DAYS is redundant. DELETE PURPOSE Deletes a file stored on disk. SYNTAX DELETE filename COMMENTS This command has the same effect as the ERASE coXfmmand in MS DOS and DELETE in Amiga DOS. To delete a file on a drive or directory other than the current one, you need to place the path name in front of the file name. EXAMPLES 1 DELETE "aaa" 2 DELETE "b:aaa" 3 DLETE "DF0:aaa" DIM PURPOSE Defines array variables SYNTAX DIM variablename(nexpr[, nexpr][, nexpr]) COMMENTS Arrays can have up to three dimensions. nexpr specifies the number of elements in each dimension of an array. The maximum number of elements is limited only by th0Ke amount of available memory. A single DIM statement can be used to define more than one array. If DIM is used in this way, each array defintion should be separated by commas. Note that the first element in an array dimension has the subscipt 0. EXAMPLES 1 DIM x%(20) Defines a one dimensional numeric array with 21 elements. 2 DIM b$(10) 3 DIM x%(3, 10) 4 DIM b$(2, 12) 5 DIM a$(20), n%(2, 3, 10), c$(2, 10) DIRECTORY PURPOSE Changes the current directory. SYNTAX DIRECTORY "path" CO]"\MMENTS Directory can be used to switch to a directory on another drive or to a different directory in the same drive. EXAMPLES 1 DIRECTORY "dh0:mydir/testdir" 2 x$="a:":DIRECTORY x$ 3 C:/Images DISKSPACE PURPOSE Shows the amount of space remaining on a disk. SYNTAX DISKSPACE(strexpr) COMMENTS This function gives the number of unused bytes on a disk. On the Amiga, the disk name given in strexpr can be either a drive name or a volume name(i.e., a diskname such as Mydisk:). On the }\Amiga, the diskname must end in a colon. Note also that the free block given by the CLI are 488 byte blocks. EXAMPLES 1 Diskspace "df0:" 2 DISKSPACE ("Mydisk:") 3 x$="df1:":x%=DISKSPACE(x$) 4 ? "Remaining diskspace is: ";DISKSPACE("a:");"bytes" EDIT PURPOSE Allows the user to edit a program, a text file, a Query, or an Update. SYNTAX EDIT [TEXT]/[QUERY]/[UPDATE] COMMENTS Depending on which option has been selected, EDIT displays a window or a dialog. EDIT QUERY displays the queryAg dialog. EDIT UPDATE displays the update filter dialog. EDIT TEXT opens the text editor window. If none of the three options has been selected, EDIT opens the program window. After EDIT has opened a window or dialog, you can edit the information, just as you would if you had selected one of the Edit options from the Superbase menus for example, Edit Program from the Advanced menu, or Edit Query from the Process menu. The difference is that when you exit from the window or dialog, con]0trol returns to the program. To exit from a window, close the window by clicking on the close gadget in the top left-hand corner. You exit from a dialog by clicking on OK or Cancel. In Superbase itself, clicking on OK takes the user out of the dialog, and then runs the query or update;clicking on OK after EDIT returns control to the program without executing a query or an update.(To run a query, use ? QUERY, and use UPDATE to carry out an update.) EJECT PURPOSE Ejects the current pa Gge on the printer or feeds in a new page when the number of lines remaining is less than the number specified. SYNTAX EJECT[nexp] COMMENTS EJECT on its own has the same effect as pressing the Form Feed button on the printer. It sends a Form Feed character to the printer, which then moves the current page on and feeds in the next. If nexp is used, the page is ejected when the number of lines at the bottom of the page is less than nexp. EXAMPLES 1 EJECT 2 EJECT 3 Feeds in a new page0/Cess of building a new file. To define the file and store it on disk you also need to use ADD and MAKE. The whole process involves the following steps: 1. CREATE sbfname 2. ADD field At this point the file is held in memory and you can check it with ? STATUS sbfname. 3. MAKE sbfname Writes the file to disk. EXAMPLES 1 CREATE "Address" ADD "Recno;NUM CON IXU;999999.;0, 0", "SER(~Address~)" ADD "Title;TXT;10;1, 34" ADD "Firstname;TXT;15;3, 6" ADD "Lastname;TXT IXD;20;3, 34" ADD "|+Street;TXT;30;6, 6" ADD "City;TXT IXD;15;7, 6" ADD "Code;TXT;12;7, 31" ADD "Country;TEXT IXD;15;9, 6" MAKE "Address" NOTES This sample shows how to set up a simple address file under program control. The first ADD statement defines a numeric field which is automatically assigned a record number by means of the SER function. Note the use of the tilde character to enter the filename Address within quotation marks. Following this, the ADD statements define eight text fields which whdill hold the name and address. Once you have defined the file in this way, you could then enter its data under program control, using the commands BLANK and STORE. CREATE INDEX PURPOSE Creates a new index file. SYNTAX CREATE INDEX ON exp[FILE sbfname][TO index][UNIQUE] COMMENTS This command is the program equivalent of the New Index option on the Project menu. EXAMPLES 1 CREATE INDEX ON aaa 2 CREATE INDEX ON aaa.bbb UNIQUE 'bbb' does not need to be the current file, but it must bI:=e open. DATA PURPOSE Holds the data(numeric and string constants)that is accessed by a READ statement. SYNTAX DATA constant[, constant][, ......] COMMENTS The values(constants)following a DATA statement must be separated by commas and text constants must be in quotation marks. Because commas are used to separate the constants in a DATA statement, they cannot be included in a constant. If you need to insert a comma in your DATA items, you can use CHR$(44). To insert quotation marksUT*w in a string constant, use CHR$(34). Date values which are to be read into date fields must be in the correct format (e.g., "ddmmyy" or "mmddyy")and should be enclosed in quotation marks. If you intend to use the RESTORE statement, you need to place a label in front of the DATA statement. EXAMPLES 1 DATA "abcde", 1.04, 2.46, "uvwxyz" data1:DATA 12.2, 12.4, 12.97, 13.4, 9.2, -1 DATE$ PURPOSE Returns a string from a julian date number. SYNTAX DATE$(nexpr[, format-strin]) COMMENTS CThis function expresses a date number as a text string showing the day, month and year. The format-string option is used to specify the date format for the text string. It must be a valid Superbase format as shown in the entry for DATEBASE. If the format is given, the text string takes the date format as set with the Date Format option on the Set menu, or as specified with the DATEBASE command. The complementary function to DATE$ is DAYS. Associated date functions are DAY DAYS DAY$ McσONTH MONTH$ YEAR. EXAMPLES 1 textfieldc=DATE$(datefielda, "ddmmyy") 2 textfieldc=DATE$(datefielda + 90) 3 textfieldc=DATE$(TODAY) 4 x$=DATE$(y%) 5 ? DATE$(datefielda + 30) NOTES Example 3 provides a calculation to insert the system date into a textfield. Example 2 gives the date 90 days after the date in datefielda. The Calendar adjustment of 1752 has been accounted for. Unless you are sure that the date supplied in nexpr will always fall within this century, you should set the dat2e format to allow four figures for the year; otherwise you will not be able to distinguish between 1901 and 2001. With dates before AD 1000, the four figure year default option does not insert zeroes. AD 55, for example, is shown as 55 and not 0055. If you wish to have four figure years-say, to line up output-add 3653048 to nexpr. As well as ensuring that the date is always expressed as four figures, this is the only way to access AD 0. However, early calendars were not particularly r\accurate and accurate day counts between two dates cannot be relied on with dates before AD 1400. (Superbase always gives the same answer; history, though, is less consistent). DATEBASE PURPOSE Sets the DATE format and TIME format. SYNTAX DATEBASE string COMMENTS DATEBASE allows you to specify the format with which Superbase displays the date and time. Normally, this format only applies when you use the system variables, TODAY and NOW. It does not affect the format of date and tim ge fields, as set in the file definition. This means that if you define a date field with the format "dd-mmm-yy", the command ? datefield will display it in this format, irrespective of what the DATEBASE format is. However, you can force Superbase to display a date field in the current date format by enclosing the field name in parentheses, as in: ? (datefield) string must have a valid date or time format, as shown in the examples below. EXAMPLES 1 DATEBASE "dd mmmm, yyyy" Displays `L the date like this as 10 June 1987 2 DATEBASE "dd/mm/yy" Display the date as 10/6/87 3 DATEBASE "mm-dd-yy" Displays the date as 6-10-87 4 DATEBASE "dd.mm.yy" Displays the date as 6.10.87 5 DATEBASE "dd mm yy" Displays the date as 6 10 87 6 DATEBASE "hh:mm" Displays the time as 14:35 7 DATEBASE "hh:mm:ss" Displays the timeas 14:35:08 8 DATEBASE "hh:mm:ss.s" Displays the time as 14:35:08.36 9 DATEBASE "hh:mm am" Displays the time as 2:35 pm DAY PURPOSE Returns the day of the month as"M1nother program from within a program but does not clear the first program's variables. SYNTAX CHAIN filename COMMENTS CHAIN allows you to carry out a task by linking together a number of programs. When a program is running, this command loads another program from disk, and transfers control to it. The second program displaces the first in memory but any variables that have already been set retain their values. EXAMPLES 1 CHAIN "Nextprog" CHR$ PURPOSE Generates the character assoc#iated with an ASCII code. SYNTAX CHR$(nexpr) COMMENTS CHR$ works in the opposite way to ASC. Wheras ASC takes a character and returns its ASCII code, CHR$ generates the character from its associated code. It is useful for handling characters which are not available from the keyboard, such as certain characters used to control a printer. nexpr must have a positive value in the range 0-255(although not all these values will give printable characters). A value outside this range will $v lgive the error 'Invalid numeric parameter'. If nexpr is not an integer, the integer part of the number is used, i.e., 65.999 is treated as 65. EXAMPLES 1 textfieldc=CHR$(numfielda) 2 textfieldc=CHR$(INT(numfielda/256)) 3 x$=CHR$(65) 4 x$=CHR$(ASC(y$)+32) 5 FOR n%=32 to 127 ? CHR$(n%); Next NOTES Example 3 stores the letter A in x$. Example 4 demonstrates one way of turning an uppercase character into lowercase - but see LCASE$ and FCASE$. Example 5 displays the character set on t%-he screen. Note that it does not display characters are non-printing characters, and some of them have unexpected effects when you attempt to display or print them. CLEAR PURPOSE Clears all user variables. SYNTAX CLEAR COMMENTS This command clears all variable assignments in memory. Using ? MEMORY immediately after CLEAR would give no output. CLOSE PURPOSE Closes an input or output channel to a text file or comms line. SYNTAX CLOSE INPUT/OUTPUT COMMENTS Only one input channel a&/(9nd one output channel can be open at a time, so you are adivsed to use the CLOSE command when you have completed an I/O task. Unless you close the current channel you will not be able to open a new channel. CLOSE also ensure that all data in the disk buffer is written to disk. If you have a large disk buffer and a small amount of data, you will notice that some output commands-? LIST, for example-appear to have no effect. What happens is that DML places the data in the buffer before '2writing it to disk. It remains there until the buffer fills up-or until you execute a CLOSE OUTPUT command. Associated commands are OPEN and INPUT. EXAMPLES 1 OPEN FILE "aaa" FOR OUTPUT FOR i%=1 to 10:? i%, i%^2:NEXT i% CLOSE OUTPUT OPEN FILE "aaa" FOR INPUT getnext:INPUT LINE a$:? a$ IF EOF("*") THEN GOTO getnext CLOSE INPUT CLOSE FIELDS PURPOSE Closes the field list on the current file or another open file. SYNTAX CLOSE FIELDS[FILE sbfname] COMMENTS CLOSE FIELDS removes a( ny restrictions on which fields are shown. If you VIEW a record after issuing this command, all its fields will be displayed on screen. On its own, CLOSE FIELDS closes the field list for the current file. When FILE sbfname is added, it closes the list for that file. EXAMPLES 1 CLOSE FIELDS Close field list on current file. 2 CLOSE FIELDS FILE "abc" Close field list for file 'abc'. CLOSE FILE PURPOSE Closes all files or a specified file. SYNTAX CLOSE[ALL]/[FILE sbfname] COMMENTS C)5LOSE FILE works in the same way as the equivalent option in the PROJECT menu, but unlike the menu option it also allows you to close all the open files in one go. EXAMPLES 1 CLOSE Closes the current file. 2 CLOSE FILE "aaa" Closes the database file 'aaa'. 3 CLOSE ALL Closes all open database files. CLOSE FORM PURPOSE Closes the current Form SYNTAX CLOSE FORM COMMENTS This command works in the same way as the Close Form option on the Project Menu: it clears the current Form from m*Uρemory and displays the current file using one of the view modes. CLS PURPOSE Clears the screen. SYNTAX CLS COMMENTS CLS makes the output part of the screen-the output window-blank and takes the cursor to the top left-hand corner. EXAMPLES 1 CLS:? "Now at top of cleared screen" COL PURPOSE Returns the cursor's position across the screen. SYNTAX COL(0) COMMENTS Use this command to find out the column position of the screen cursor. For the row position, see ROW EXAMPLES 1 x%=COL+ (0) 2 ? COL(0) NOTES In practise, Example 2 would be pointless because the statement changes the cursor position in the course of printing it. COPY PURPOSE Makes a copy of a file on disk. SYNTAX COPY from.filename[, ]/[TO]to.filename COMMENTS Use this command either to copy a file to the same disk under a different name, or to copy it to another disk. In the latter case, you can give the file the same name or a new name. EXAMPLES 1 COPY "aaa", "bbb" Copies 'aaa' to 'bbb'. 2 COPY$#m "A:aaa" TO "B:bbb" Copies 'aaa' to drive B under the name 'bbb'. COS PURPOSE Returns the cosine of an angle measured in radians. SYNTAX COS(nexpr) COMMENTS To convert an angle in degrees to radians, multiply by PI/180. Associated functions are ATN, SIN and TAN. EXAMPLES 1 numfieldc=COS(numfielda) 2 x%=COS(y%) 3 x%=COS(VAL(x$)) 4 ? COS (x%) CREATE PURPOSE Creates a new database file in memory. SYNTAX CREATE sbfname[:passwords] COMMENTS CREATE is only the first step in the proc-K4 AND ASC(textfielda) < 91 4 x%=ASC("A") 5 x%=ASC(x$) 6 x%=ASC(UCASE$(MID$(extfield, 3, 1))) 7 ?ASC(x$) NOTES Example 3 provides one way of validating a text field to ensure that the first character is uppercase(but see FCASE$). ASK PURPOSE Inputs a character string from the keyboard. SYNTAX ASK[pos] [string] [&length];var/field COMMENTS This command allows the user to enter information from the keyboard into the computer while a program is running. It expects the user to type in.N/ one or more characters, and, as soon as the Return key is pressed, reads them into a variable or a field. string can be used to include a prompt message. pos gives the position of the prompt text and input string. It uses the @ output format parameter to specify the column position, followed by the row position. If pos is not given then the input string appears on the row where the cursor is currently located. &length limits the length of the input and shows the maximum length on sc/N6reen using an 'end-of-field' marker. The input can be assigned to a variable or a field(in a currently open file). If the field is not in the current file, it can be specified with the filename extension. var or field can be either string or numeric variables or fields, and they must match the type of input expected:a string variable will accept whatever you type in, but a numeric variables when you input non-numeric data such as letters. The same restriction applies to numeric field0 nIs. EXAMPLES 1 ASK;x$ 2 ASK@2, 12"Enter a text string";x$ 3 ASK@2, 14"Enter a 3 character word"&3;x$ 4 ASK"Enter data-Customer Code"&8Cuscode.custfile 5 ASK"Enter a number";n% ATN PURPOSE Calculates an angle whose tangent is known. The result is given in radians. SYNTAX ATN(nexpr) COMMENTS This function works out the angle from the angle's tangent given in nexpr. For example: TAN(0.7854)is 1.0, so ATN(1.00)returns 0.7854 rads(which is 45 degrees). To convert radians to degrees mul1wjtiply by PI/180. ATN is the complementary function of TAN. EXAMPLES 1 numfieldc=ATN(numfielda) 2 x%=ATN(y%) 3 x%=ATN(VAL(x$)) 4 ?ATN(x%) BEFORE GROUP PURPOSE Set before group activity with reports. SYNTAX BEFORE GROUP fieldname COMMENTS BEFORE GROUP is used in a Report Program to mark the start of a BEFORE GROUP section.fieldname identifies the group, and must be the name of a field which has previously been defined as a group-in the Forms Editor, you define a group in the SELE2t3CT box; Superbase then translates this into a GROUP statement in a Report program. The statements in the BEFORE GROUP section ar executed every time the group changes. Typically, they would be used to display header information for the group data which follows. A BEFORE GROUP section must end with an END GROUP statement. EXAMPLES 1 BEFORE GROUP Lastname.Clients ? "Deposits for client", Lastname.Clients ? ?"Firstname Lastname Bank Amount Date" "-----------------------------------3(=aj---" END GROUP BELL PURPOSE Makes a short beep. SYNTAX BELL COMMENTS Use this command to signal that a particular process has finished and to attract the user's attention. On the Amiga, BELL does not make a sound but causes the screen to flash. BLANK PURPOSE Creates a blank record in memory. SYNTAX BLANK[FILE sbfname] COMMENTS When you want to create a new record under program control, issuing a BLANK statement is the first step in the process. It sets up an empty record recor4Sd ready for data entry. There are several ways in which you can then enter data into the record's fields. Using BLANK with ENTER, allows the user to type in the data for a new record from the keyboard. Together these two commands have the same effect as the RECORD NEW option in the RECORD menu. Alternatively, you can enter data from within a program, by assigning it directly to the fields in the new record. Typically, this would be the method you used to create new records by reading5Y'l data in from another file on disk. EXAMPLES 1 BLANK 2 BLANK FILE"abc" 3 BLANK ENTER STORE 4 BLANK Firstname.address="John" Lastname.address="Smith" STORE The first example creates a new record in the current file. Example 2 creates a new record in another open file. Example 3 creates a new record in the current file, and allows the user to enter in the record;then it saves the record on disk. Example 4 creates a new record, and enters data into the fields Firstname and Lastnam68of\e;then saves the record on disk. BREAK PURPOSE Allows the user to interrupt or halt a program from the keyboard. SYNTAX BREAK ON/OFF COMMENTS BREAK ON and BREAK OFF enable and disable CTRL C. After BREAK ON(the default condition), you can stop a program while it is running by pressing the Control key and C at the same time. This has the same effect as clicking on the STOP button at the bottom of the screen. CTRL C generates error 11. If you want to include error handling routines !@Xin your programs, you can use the ON ERROR statement to check for this error number. CALL PURPOSE Calls a user supplied function. SYNTAX CALL function COMMENTS function is string expression containing a command line to be executed by DOS or Amiga DOS. The expression should duplicate a command line that would normally be typed at the DOS or CLI prompt. Superbase stays in memory so there must be enough memory for the specified command to function correctly. CHAIN PURPOSE Executes a8ttޣm fieldtype and each other by at least one space. You can specify up to three of these parameters, selecting one from each of the following groups: A) CLC Calculated CLV Calculated and validated CON Constant COV Constant and validated VAL Validated B) RDO Read only RDQ Read only required REQ Required C) IXU Indexed - Unique IXD Indexed - Normal format specifies the length of a field and the numeric format for numeric fields, format must be appropriate for the field type. For exam93kple, 20 for TXT, z99999.00 for NUM, ddmmmyy for DAT. The case parameter can be U, L or C, depending on whether the text data is to shown in upper case, lower case or with the first letter capitalized. The multiple response parameter is M followed by the number of elements in the multiple response field(maximum 9). These parameter are optional and can only be used with text fields. They must be separated from the field format by at least one space. For example, to define a text field :Pڥwith three multiple response fields, each up to 15 characters long, you would enter these parameters: 15 M3; If you also wanted the field data to be in upper case, you would enter: 15 UM3; row is the row position for FORM-view(maximum 255). col is the column position for FORM-view(maximum 255). row and col are optional, but you are strongly recommended to use them. If they are not used, all the fields will be positioned at the top left of the screen on top of one another when the r;/ecord is displayed in Form View. The field types in group A-CLC, CLV, CON, COV, VAL-must be followed by a formula or formulas. CLV and COV require two formulas;the formula for constants or calculations should be come first, followed by the validation formula. Formulas should be enclosed in quotation marks and must be separated by commas from the first part of the field definition string and from each other. formula-string must follow the rules(given in Volume 1)for using formulas forBa line. The solution is to assign formulas to string variables beforehand. For example: a$="Price.Orders * Quantity.Orders" ADD "Subtotal;NUM;$9999999.00;5, 20", a$ EXAMPLES 1 ADD "aatext;TXT REQ IXU;20 M3;1, 12" 2 ADD "aanumb;NUM;z999999.00;1, 40" 3 ADD "bbtext;TXT CLC RD0;10;2, 12", "UCASE$(LEFT$(aatext, 10))" 4 ADD "fielda;TXT VAL;12;15;20", "fielda LIKE " + CHR$(34) + "[a-c]*" + CHR$(34) NOTES Creating a file under program control is a three stage process involving CREATE, ?IzADD, and MAKE. For a description of the process, see CREATE. AFTER GROUP PURPOSE Set after group activity with reports. SYNTAX AFTER GROUP fieldname COMMENTS When you create a report using the Forms Editor's reporting facility, Superbase generates a Report program for you. The AFTER GROUP statement is used within a Report program to mark the start of an AFTER GROUP section. This consists of a series of "?" statements which specify the information that is output every time a group @changes. Each statement corresponds to a line in the AFTER GROUP box in the Forms Editor. fieldname identifies the group and must be name of a field which has previously been defined as a group with the GROUP statement. An AFTER GROUP section must end with an END REPORT statement. EXAMPLES 1 AFTER GROUP Lastname.Clients ? BF ?Client", GROUP, "has";COUNT amount;"Deposits" ? BF "Total desposits are", @25SUM amount ? BF "Maximum is", @s5 MAX amount ? BF "Minimum is", @25 MIN amounA.l:t END REPORT NOTES In the second line of this example, the keyword GROUP is used in order to retrieve the name of the last group. At this point, the group has already changed;so, Lastname.Clients could not be used instead of GROUP because it would output the name of the current group. EXAMPLES 1 AFTER REPORT ?@1, 3;UL "Statistics for the Report", UL OFF:? ?"Total amount is", @30 SUM amount ?"Number of deposits", @30 COUNT amount ?"Average amount", @30 MEAN amount END REPORT ,;ASC PURPOSE Returns the ASCII value of a single character. SYNTAX ASC(strexpr) COMMENTS ASC gives a numeric value-the ASCII code-for the text character in strexpr. When strexpr is longer than one character ASC returns the ASCII code of the leftmost character of strexpr. Appendix E, Volume 1, gives the ASCII characters and their decimal codes. The complementary function of ASC is CHR$. EXAMPLES 1 numfieldc=ASC(textfielda) 2 numfieldc=ASC(RIGHT$(textfielda, 1)) 3 ASC(textfielda) > 6CC 1$="aaaaaaaaaaaaaa bbbbbbbb" etc. The variables are output in the order in which they were assigned. If you specify OUTPUT TO file, the values of the variables can be recovered for a subsequent program by the SET file command. The "?" command is optional - MEMORY on its own has the same effect. ? QUERY PURPOSE Runs the current Query in memory and sends the results to an output device. SYNTAX ? QUERY COMMENTS Query has four output options(on the Amiga, SAY provides a fifth option)Dr. You can send the output from a Query to the screen, the printer, to disk(as an ASCII file) or to file(as an '.sbf' file). However, when you save a Query, the currently selected output option is not saved with the rest of the Query settings; so if you run a Query under program control, you will need to select the output device beforehand. To send output to the printer, either set the Printer option from the Set menu, or issue a PRINT;command. To send output to disk, you should use tE*`he OUTPUT TO filename or OPEN filename FOR OUTPUT commands. The Query output will then be stored on disk under file name specified. EXAMPLES 1 LOAD QUERY "Stockrep" PRINT; ? QUERY 2 LOAD QUERY "Addreport" OPEN "Addrep.asc" FOR OUTPUT ? QUERY NOTES In the first example, output from the Stockrep Query is directed to the printer; in the second example, output from the Addreport query is used to create an ASCII file on disk under the name Addrep.asc. ? STATUS PURPOSE Sends informaFm^tion about the System Status SYNTAX [?]STATUS[FILE sbfname] COMMENTS ? STATUS without the FILE option gives the same output as the menu option System Status. If no Superbase files('.sbf' files)are open, it displays the following information: Memory free Diskspace Free Current Directory Name Superbase Files open(as 0) Superbase Files available. If any database files are open, the header information for these files is also shown. ? STATUS FILE sbfname gives the same output as tGDY*he menu option SYSTEM STATUS FILE, and produces a status report for the file. At the top of the report, it shows file statistics such as the nmber of records and the file siz. Belows this, it shows the file definition details:for each field, it lists the field name, its attributes, format, Form View location, and any associated calculation or validation formula. If the file is not open, the error message 'Can't do this / File not open' appears. The '?' command is optional with STATUSḦ́ۧ - using STATUS on its own has the same effect. ? TEXT PURPOSE Sends a text file in memory to an output device. SYNTAX ? TEXT[MERGE] COMMENTS This command outputs the current text file in the Text Editor. If the text file is a form letter and its associated database file has been opened, adding the MERGE command will merge the data in the current record with the text file. See also the Keyword Reference entry for MERGE. EXAMPLES 1 OPEN FILE "Address" LOAD TEXT "Maillet" ? TEIdXT MERGE NOTES If the current output device is the screen, this example will insert the data from the first record(in the Address file)into the Maillet text file, and display the result in the database window. ABS PURPOSE Turns negative numbers into positive numbers but leaves positive numbers unchanged. SYNTAX ABS(nexpr) COMMENTS ABS returns the 'absolute' value of a number. In effect, it simply strips the sign off a negative number, making it positive. One of its common uses isJpE for calculating the difference between two numbers when you do not know which is larger. In example 2, which works out the number of days between two dates, ABS allows you to enter the dates without first knowing which is the later date. EXAMPLES 1 numfieldc=ABS(numfielda) 2 numfieldc=ABS(datefielda-datefieldb) 3 numfieldc>ABS(numfielda * numfieldb) 4 x%=ABS(y%) 5 x%=ABS(y% * numfielda * (datefielda-datefieldb)) 6 x%=ABS(VAL(RIGHT$(textfielda, 5))) 7 ? ABS(x%) ADD PURPOSE Adds a nK;ew field to a file definition. SYNTAX ADD[FILE sbfname]field-definition-string[formula-string][formula-string] COMMENTS This command is used in conjunction with CREATE and MAKE to create a new Superbase database file. It cannot be used to add a field to an existing file. To use ADD correctly, you need to understand how a file definition is set up. The best way to do this is to use the STATUS FILE option in Superbase's System menu. This will show you the file definition for the currL7ent file. Another way of viewing the same information would be to list an '.sbd' file on screen using the System menu's LIST option. With one exception, the parameters used with ADD to define a field are the same as those used in '.sbd' file definitions. The exception is '>' and '>>'. These are used in '.sbd' files to indicate that there are one or two formula lines to follow. You do not need to include these characters in a field definition string. From left to right, the field defi74nition string is composed of the following parameters: fieldname fieldtype[other fieldtype parameters] format[case and multiple response parameter for text fields] row; col Each of these parameters must take the same form as it does in an 'sbd' file. fieldname must conform to the rules for fieldnames. fieldtype must be one of the following: TXT text EXT external NUM numeric DAT date TIM timefield DEL deleted The other fieldtype parameters are optional and, if used, are separated froN2Ir example: ? "Hello", , , "goodbye" outputs Hello goodbye Placing a semicolon after the last expression in the output list prevents DML from outputting a new line character. For example: ? "Hello":? "there" outputs them on the same line as Hello there Note that when the output device is the screen, DML only outputs the expressions in a list when it starts a new line. For example, if you enter the line: ? "one";"two";"three"; nothing will appear on the screen until you enter anOsother line which does not have a semicolon at the end of it. If used, DOWN must be placed at the front of a line, before the line's expressions and after the ? character. It ensures that each expression in the list is output on a new line. For example: ? DOWN "one";"two";"three" nothing will appear on the screen until you enter another line which does not have a semicolon at the end of it. If used, DOWN must be placed at the front of a line, before the line's expressions and after tPP he ? character. It ensures that each expression in the list is output on a new line. For example: ? DOWN "one";"two";"three" formats the output on screen as one two three When Down is used to format field data, it displays the field names in inverse video at the left of the data - in same way as Record View displays a record. ALL outputs the fields in the current record; for example, if the screen is the current output device: ? DOWN ALL would have the same effect as clicking onQFx the current record button when Record View is selected. NEWLINE instructs DML to start a new line. Thus ? "one", "two"NEWLINE "three" outputs the expressions as one two three NEWLINE can also be used on its own - see NEWLINE, Keyword Reference. BF, UL, and IT set the text style for output. BF sets boldface UL sets underline IT sets italic Each of these can be set by ON(which is optional)and cleared by OFF. ATTR OFF clears all the text style attributes. For example: ? BF"Bold faRبce on";IT "italics on";BF OFF IT OFF "Bold and italics off" On the Amiga you can also set the forground and background colours, using FG and BG. Each takes a parameter in the range 1 to 4 for the four colours set by Preferences. For example: ? FG 2 BF 1 "Foreground colour 2, background colour 1" SAY, which is only availabe on the Amiga, uses the Amiga's narrator device to speak the items in an expression list. Thus if you wanted to speak the field names and field data for the currenS< t record, you would enter: ? SAY DOWN ALL EJECT can be used to ensure that a group of data items - the fields in a record, for example - all appear on the same page. For example: 5-6 ? DOWN "One";"Two";"Three";"Four" EJECT 4 displays a new page if there is not enough room at the bottom for the four items in the expression list. ? PURPOSE Sends information to a device. SYNTAX ? [@nexpr] [;expr;expr, ....] COMMENTS Used to send one or more expressions(an expression list)to tT,he current output device. ? can also include any of the output format parameters. When you output nemeric, date, and time constants or the results of functions for these data types, they take the format which has been set with the Number or Date/Time format options on the Set menu(or with the commands NUMBASE and DATEBASE). Field data is output in the format set in the file definition. However, you can force Superbase to output field data in the current format by enclosing the field Uname in brackets. Thus: ? (numfielda), (datefielda) displays the contents of these fields in the current numeric and date formats rather than in the formats they have been given in the file definition. EXAMPLES 1 ? "Hello" 2 ? "Hello";a$ 3 ? UL BF "Hello";a$;NEWLINE b$ 4 ? "The square root of";n%;"is";SQR(n% 5 ? "One""two""three" NOTES Depending on the numeric format that has been set, example 4 would output the numeric expressions, n% and SQR(n%), with leading spaces. To remove tVrjhese, you would have to use the STR$ and LTRIM$ functions. You will notice that there are no semicolons separating the expressions in example 5. It is not always to place a semicolon between two expressions. Provided DML has some other way of telling where one expression ends and the other one starts, you can omit the semicolon. In this example the quotation marks allow DML to distingusih between the three expressions. ? DIRECTORY PURPOSE Lists the current directory to an output deW/kvice. SYNTAX [?] DIRECTORY COMMENTS When the screen has been selected as the current output device, the directory is listed in two columns in alphabetic order. If the output device is the printer or a disk file, the directory is listed in single column. The "?" command is optional - DIRECTORY on its own has the same effect. ? LIST PURPOSE List a program in memory to an output device. SYNTAX ? LIST COMMENTS Do not confuse this command with LIST, which displays a text file on screBwen. ? LIST has several applications. You can use it to examine a program listing by displaying it on screen on printing it out;and, when the current output device is the disk drive, it allows you to save a program as a text file. In this last application, it has the same effect as: SAVE "program name", TEXT ? MEMORY PURPOSE Sends information about any defined variables to an output device. SYNTAX [?] MEMORY COMMENTS This outputs the variables in memory as: a%=123.46 b%=12.00 aY ving result of other keywords. For example, any of the following expressions would be suitable entries for strexpr: "hello" (a string constant) strfield (the name of a string field) numfield (the name of a numeric field) fielda$ (a string variable) fielda$ (a string variable) Address (a file name) MID$("immediately", 3, 2) (a calculated result) var This can be any variable, string or numeric. If the keyword requires variables of a particular type, strvar or nvar are used Zfor string or numeric variables. Various other conventions - such as fieldname or just field - are used to indicate particular data types. These should be self-explanatory.sbfile, for example, means that you should enter the name of a database file;on disk, Superbase identifies database files by an .sbf extension, but you should not include the extension name when you use it in a DML command. Any parameters or arguments contained in parentheses are compulsory(including any commas), [N5while those within square brackets- '['and']' - are optional. All other arguments are compulsory. For instance, supposing the syntax for a keyword is given as: XXX(strexpr$, nexpr[.nexpr2]) This means that strexpr and nexpr are required with the keyword XXX and that they must be separated by a comma. The next argument, nexpr2, is optional, but if used must be separated from the second argument by a comma. The '/' character is used to indicate a number of alternatives. For example: \*ϷmCLOSE ALL/FILE sbfile The syntax for this statement indicates that CLOSE can be followed by either ALL or FILE, but not both at the same time. ? COMMANDS ? is a general purpose output command. You can use it to display information on screen, or to send information to the printer, or to create a file on disk. When ? is followed by a list of expressions - text, numbers, variables, fields, etc it sends the expressions to the current output device. It can also be used with the following]m keywords: DIRECTORY LIST MEMORY QUERY STATUS TEXT These keywords have a specific function when used with ?, and have been treated as separate commands. You will find an entry for each of them further on in this section. CHANGING THE OUTPUT DEVICE When you load Superbase, the ? command takes the screen as the default device and works in the same way as the PRINT command does in other versions of Basic - it displays information on screen. If you want to direct output to another^V_ device use one of these commands first: PARAMETER PURPOSE PRINT for the printer OUTPUT TO for the disk drive DISPLAY to switch back to the screen ? then continues to output to the device selected by one of these commands. CLS and HOME do not reset the current output device. PRINT and DISPLAY can be followed by a list of expressions which will then be output to the devices associated with these commands. When you use PRINT and DISPLAY simply to change the current output dev_nRice, they should be followed by a semicolon, as in: PRINT; which directs all future output to the printer. OUTPUT TO needs a filename after it, as in: OUTPUT TO "texta" which directs output to a file on disk named 'texta'. OUTPUT FORMAT PARAMETERS After outputting a list of expressions, the ? command starts a new line unless you specify otherwise. This means that it takes the cursor to the beginning of the next line(if the current output device is the screen). You can instruct DML`v to output the next list of expressions on the same line, by placing a semicolon at the end of an expression list. When it is used in this way, the semicolon is known as an output format parameter, and is one of a number of parameters that allow you to specify how output is formatted. Apart from the semicolon, you place these parameters in front of the expressions that you want to format. Thus you can place them at the front of the line immediately after the ? character, and you can aEalso insert them in the middle of an expression list. Some output parameters are keywords such as BF and DOWN, and others are symbols such as the semicolon itself and the @ sign. If you use keyword parameters, they must separated from each other by spaces. For example, DML will accept a line like this: ? UL BF IT "One", , "TWO' UL OFF @5, 10"Three" but it will not accept ? ULBFIT"One", , "Two"ULOFF@5, 10"Three" The output format parameters for the ? command are: PARAMETER PURPOSEb Zh & Sets length of text string @ Sets row and column position , Outputs a space ; Used as a separator and to suppress new line DOWN Outputs each item on a new line ALL Outputs all the fields in the current record NEWLINE Starts a new line BF[ON] Sets text to bold face UL[ON] Underlines text IT[ON] Sets text to italic BF/UL/IT OFF Turns selected text attribute off ATTR OFF Turns all text attributes off FG(Amiga only) Sets foreground color BF(Amiga only) MVSets background color SAY(Amiga only) Speaks output EJECTnn Outputs data on a new page if there are less than nn lines left at the bottom of the page COMMENTS The @ sign, followed by a numeric expression, specifies the coloumn and row position for your output. For example, if the screen is the output device selected: ? @12, 7"Smith" displays the name Smith on the screen at column 12, row 7. As an alternative to using @, see LOCATE. DML treats a comma as a space character. Fodqt device. You may find it useful to assign this command to one of the function keys. Enter the single KEY as the function key string. Pressing the key will then show you at glance what the settings are for the other keys. FUNCTIONS KEYS FOR TEXT AND PROGRAM ENTRY In text entry, Function keys are useful for entering text strings which occur many times in the same document or are regularly used in different documents. They save you the trouble of having to type in the string yourself e:qeverytime it is needed. Provided the text cursor is shown on screen, pressing a function key will insert a string at the point where the cursor is located. The same applies to the use of function keys in program entry. You can define function keys to insert commonly used keywords in a program. For example, you might want to define the keys F1 to F5 as: REM LOAD " SAVE " OPEN FILE " WHILE Keys F5 to F10 could then be assigned commands which are useful during program development (you fVwould have to activate the database window before these could be executed): MEMORY RUN PAGING ON:? LIST EDIT STATUS If you wish to assign a text string that runs over several lines, you need to use the carriage return character. However, it is not possible to enter this character in the Function keys dialog, so you must enter it using the KEY command in a program or in the Command Line. Thus to assign an address to F1, you enter a string like this: KEY 1, "6 Park Terrace " + CHR$(g@13) + "Worcester Park" + CHR$(13) + "Surrey KT4 7 JZ" + CHR$(13) NOTE:In most cases, function key strings which are intended for text entry cannot be executed as commands. Pressing a function key of this type when the cursor is not active may cause an error message. EDITING A FUNCTION KEY STRING If a function key has already been set, selecting the Function keys option (Function keys Edit on the Amiga)from the Set menu displays the contents of the key in the string entry box. Initih:ally, the setting for the F1 key will be shown. If you wish to change the current setting, you can do so using the same editing controls as for the Command Line:cursor keys, Backspace, Del, Home and End. Alternatively, click on Clear to remove the current setting and type in a new function key string. Remember to press the Return key after editing a function key; otherwise your alterations will not be registered. FUNCTION KEY FILES The strings you assign to the functions keys can beiZ saved on disk for use in other sessions with Superbase. Function key files are saved as ASCII files with the extension '.sbk'. If you wish to examine a function key file, you may display it on screen or print it out with the List option on the System menu. Notice that any keys which have not been assigned a string are shown as blank lines. SAVING FUNCTION KEY FILES Selecting the Function keys Save option saves the current function key settings on disk. Superbase adds the '.sbk' extjension to the file name you type in. Function keys Save presents you with a file dialog, showing the existing '.sbk' files in the current directory. This operates in the same way as any other file dialog. If you select a file name from the list - instead of typing in a new name - a dialog will appear, asking if you wish to overwrite the selected file. You can then click on OK to overwrite, or Cancel to halt the operation. LOADING FUNCTION KEY FILES Select Function keys Load from thek*о Set menu to load a function key file from disk. A file dialog will appear showing the '.sbk' files in the current directory. After a file has been selected, it is loaded into memory and sets the current function keys. The LOAD KEY "file name" command is used to load a function key file under program control or from the Command Line. Once you have created the function key set that meets your requirements, you can include this command, followed by the name of the function key file, inl+& the Start program(see Creating a Start up program, Chapter 3). This way, the function keys will be set up for you as soon as Superbase has loaded. Another way of using the LOAD KEY command is to assign it to a function key. You will then be able to load a specified function key file with a single key press. CHAPTER 5 - KEYWORD REFERENCE GUIDE SYNTAX CONVENTIONS This section describes the conventions that have been used in the following documentation. The general format used to mvexplain each keyword is as follows: PURPOSE -a brief description of the keyword. SYNTAX - the format of the keyword. COMMENTS - explains the format and function of the keyword in more detail. EXAMPLES - program examples. NOTES - explains the program examples and covers any other points not dealt with under the above headings. For the syntax of the keyword, the following terms and symbols are used: nexpr This can be any valid numeric expression consisting of numeric fields, date fielX;Pds, numeric constants and/or numeric results of other keywords. For example, if a function expects a numeric argument, you could enter any of the following expressions: 156 (an integer) 156.25 (a floating point number) num% (a numeric variable) numfield (the name of a numeric field in a file) 3 + 6 (the result of an expression) SQR(25) (the result of a keyword) strexpr This can be any string or substring from a text field, external field, string variable, text literal or stropu can take advantage of this feature, especially if you use Superbase on a regular basis for a specific application. All the tasks that you need to perform at the start of a session - such as opening files and loading a function key set - can be taken care of by the start up program. The procedure for creating a start up program is straightforward. There are two requirements: The program must be stored in a directory where Superbase will find it:either the Start directory as specifipKFed in Options on the Set menu(see Chapter 7, Volume 1)or the directory which is current when Superbase is loaded;usually this will be the same directory as the Superbase program file. The program must be saved under the file name Start(this appears on disk as Start.sbp). When you run Superbase, it looks in the current directory for a program with the name Start. If you have specified a Start directory in the '.par' file, it then looks for the program in that directory. EXAMPLES LOAqCD KEY "Funkey1" OPEN FILE "Address" OPEN FILE "Customers" SET TABLE VIEW This program loads a function file, opens two database files, set Table View, and then displays the first record in the Customers file. LOAD KEY "Funkey1" NUMBASE "z999999." RUN "Prog2" After loading a function key file, this program sets the numeric format and then loads and executes prog2. CHAPTER 4 - FUNCTION KEYS With Superbase's function key facility, you can create a new set of key controls. Each fr>'^unction key may be assigned a string of up to 255 characters. Depending on the context, Superbase will interpret the string either as a command(or sequence of commands)or as text. The main applications for this facility are: Creating command sequences - one line programs - to provide keyboard equivalents for the Control Panel buttons and menu options. Creating more complex command sequences which will perform multiple operations with a singl key-stroke. Inserting often-used words, s4keywords, phrases, and paragraphs in a text document or a program. The number of functions keys you can define depends on which version of Superbase is used. All versions provide the function keys F1 to F10. In addition, Amiga and Atari owners can use the Help key, which may be regarded as key F0. Another set of ten function keys is available when you use F1 to F10 in combination with the Shift key. To summarize these differences: 21 function keys are available to Amiga and Atari owt;B6ners;F1 to F10 plus Help, and Shift F1 to Shift F10. MS DOS computers have 40 function keys;F1 to F10, and the same keys in combination with Shift, CTRL or Alt. SETTING A FUNCTION KEY There are two ways of setting a function key:using the Set Menu option Function keys(Function keys Edit on the Amiga), and using the DML command KEY. With the first method, you select Function keys from the Set menu. You will then be presented with the Function key dialog(see next page). On the Amiga,ub the four keys at the right of the panel are replaced by the HELP and Shift keys. On entry to the dialog, the F1 key is highlighted. Clicking on one of the other keys, F2 to F10 and HELP, highlights the key, making it available for setting. You can then assign a string to the key by typing it in the entry box below. Click in the box first if the cursor is not shown. For the Amiga and the Atari, the Shift key is the only one that can be used in combination with the keys F1 to F10 - Shvift HELP is the same HELP on its own. When you have set the functions keys you require, click on OK. This action will assign the strings you have entered to their respective keys and then remove the dialog. The other method of setting the function keys is to use the DML command KEY - either from the Command Line or from a program. Consult the keyword reference entry under KEY for an explanation of how to use this command. FUNCTION KEYS FOR COMMANDS As we mentioned earlier, Superbasew$"j8 treats function key assignments as commands or text according to the circumstances. If one of the editing cursors is active, a function key string is interpreted as text;if a cursor is not present, a string is executed as a command. There are three circumstances in which an editing cursor may be active:when you are editing a document in the Text Editor, or a program in the Program Editor, and when you are editing a field in record edit mode. The rules governing the commands which cax 4n assigned to function keys are the same as for the Command Line(see Chapter 3). If the commands can be executed as a one line program, they can also be assigned to a function key. Note that single word commands at the beginning of a function key string must have a trailing space if followed by a colon. EXAMPLES The following function key strings show how you can create keyboard equivalents for the Control panel buttons: SELECT FIRST:VIEW This has the same effect as clicking on thc^fe First record button. SELECT LAST:VIEW Equivalent to the Last Record button. a%=0:a$=" ":REQUEST "Locate key", "", 4, a%, a$, 20: IF a$ <> " " THEN SELECT KEY a$:VIEW Equivalent to the Key Lookup button. The REQUEST command is not necessary for this purpose, but it allows you to display a customized dialog, making the operation of using an index key easier to perform. It is worth pointing out that the command KEY lists all the current function key assignments to the current outpuzCc`s separated by colons)up to 255 characters. You can type in commands when ever the cursor is present. If the cursor is not shown, click in the box to activate it. There is very little restriction on which keywords can be entered as direct commands. READ(and DATA), GOSUB, and ON GOSUB cannot operate as direct commands, and you cannot use labels in the command line. Apart from these, almost any single or multi-statement line that can be entered in a program can also be entered in the c{eLommand line. Clearly, any statement that refers to another statement in the command line will not operate, because of the absence of labels. However, it is possible to enter GOTO statements which refer to labels in the current program. You may want to do this when you are testing a program. The normal way of executing a program -using the RUN command or Run option - clears the program's variables. GOTO allows you to execute a program or part of a program without destroying any variab|W"le assignments that may have already been made. You will use the command line for variety of purposes. There are some operations - such as appending a text or program file to a file in memory - which can only be performed using commands. You may also want to enter commands as an alternative to selecting options from the Superbase menus;but it is generally more practical to do this by assigning the commands to a function key. In addition, the command line is valuable tool for developi}ng and testing programs. Particularly useful are commands such as: ? MEMORY and ? LIST The first command lists the current program's variables and their values;the second can be used to display the program listing in the database window. EDITING THE COMMAND LINE The cursor keys move the cursor in the command line one character at a time. Home(Clr Home on the Atari ST)and End(Insert on the Atari ST)take the cursor to beginning and end of the command line. Del deletes the character ~q}in front of the cursor, Backspace deletes the character before. If you make a mistake while typing in the command line, you can use these keys to correct it. Command lines remain in the box after they have been executed and function key commands are placed in the command line box after execution, so you may also want to recall the previous command for editing. LOADING A PROGRAM To load a program from disk into the Program Editor, select Open from the Program menu. A file dialog willT appear, listing the names of the program files in the current directory. You can then select a file in the usual way. If you want to load a program in another directory or on another disk, type in the file name preceded by the path name. To append a program on disk to program in memory, select the Command option. Then enter: LOAD "programname", APPEND where "programname" is the name of the program on disk which is to be joined to the current program. Most of the programs you run wi/QXll have been created in the Program Editor. However, it also possible to load a program which has been written in a word processor, or has been created in another program editor. In this case, there are two requirements:the program file must have an '.sbp' extension, and it must be an ASCII file. Note that Open loads a program into the Program Editor, but it does not open the Program Editor window. If the window is closed and you wish to edit a program after loading it, select Edit. P? SAVING A PROGRAM Save on the Program menu saves the current program on disk. When you select this option. Superbase displays a dialog where you type in the name under which the program is to be saved. Normally, programs are saved on disk in 'tokenized' form;instead of storing each character in a keyword, Superbase represents keywords using single character tokens(keywords are represented in this way internally as well as on disk). To save a program as an ASCII file, enter in the comoQmand line: SAVE "program name", TEXT ASCII program files can be loaded back into the Program Editor and run straight away. Note that all program files, both tokenized and ASCII files, are given an '.sbp' extension. RUNNING A PROGRAM Select Run from the Program menu to run the program in memory. If there isn't a program in the Program Editor, Run displays the program file dialog. When a program has been selected, it is loaded into memory and then executed. The DML command RUN providJjes the program equivalent of the menu option. It is generally entered as a direct command, but it can also be used within a program. As a program command(rather than a direct command), RUN allows you to perform a task by linking together a series of programs. When one stage has been completed, RUN followed by a program file name will load and execute the program which performs the next stage. However, the drawback to using RUN for this purpose is that loading and executing a new progn'ram clears the previous program's variables. If you want to link a number of programs together, it usually preferable to use the CHAIN command. This provides the same facility as RUN but has the advantage that it does not clear any existing variable assignments. CREATING A START UP PROGRAM One of Superbase's most useful features is the way it lets you specify a 'start up' program, which will be automatically loaded and executed when you run Superbase. There are many ways in which yo` Mt time in a session, the window will be empty;you can then start entering program lines straight away. If you have previously loaded a program into memory and want to start afresh on a new program, select New to clear the existing program from memory. Entering program lines is simply a matter of typing them in at the keyboard. When you have typed in a line, pressing the Return key will take you to the start of the next line. Superbase accepts program lines up to 255 characters long. I6LAs you type characters beyond the right-hand edge of the window, the program will be scrolled to the left. Using the scroll bars enables you to move the window over any part of a line up to 255 characters. LINE FORMAT An explanation of the correct format for a Superbase program line is given in Chapter 2, Line Format and Labels. However, it is worth repeating th rule about inserting spaces in a line:you need to insert a space if you enter an expression - such as a variable name, a f"ield name, or a constant - after a keyword, or if you enter two adjacent keywords. In the following example, the space between the two items on the line must be entered by the user: ? "Hello" You should also type a space between a command and a colon if the command is placed at the start of a multi-statement line. If you do not do this, DML will interpret the command as a label. Otherwise, you can ignore spaces as you type in a program. If a line contains adjacent variables or opera7tors and other elements of an expression, DML inserts spaces between them when it 'parses' the line. Parasing refers to the process which takes place when you press Return or move the cursor away from the current line. DML scans the line and identifies the various elements in it. As well as inserting spaces between recognizable elements, it also converts any keywords that are entered in lower case to upper case. Thus if you typed: if a%=3.5+6then goto label1 DML would parse this lin>e as: IF a%=3.5+6THEN GOTO label1 You are recommended to enter program lines in lower case as a way of ensuring that you do not use reserved words as labels or variables. When a line is parsed, you will be able to see at a glance whether these items are correct, because the reserved words will be shown in upper case. It is unlikely that you will need to create programs with lines over 200 characters long. However, if you do, it is important to bear in mind that spaces may be insert'q~ed in the line. Even though the line you type in is less than 255 characters, it may exceed this limit when it has been parsed. EDITING A PROGRAM The Program Editor uses the same key controls for editing a program and moving the cursor around the screen as the Text Editor. As you would expect, it is not possible to specify margins or reformat a program;and the style setting functions are not available. Otherwise, the only difference is in the way the Return key works. In the Text Ed(ΖKitor, Return either moves the cursor to the start of the next line or creates a new line, depending on whether overwrite or inset mode has been selected. In this section, we only provide a list of the Program Editor key controls together a brief description of their functions. For a detailed explanation of these keys, see Chapter 10, Volume 1. The '^' character is used here to represent the CTRL key; ^N for instance, indicates that the CTRL key and the letter N should pressed in combv4Pination. MOVING THE CURSOR As with the Text Editor, you can move the cursor around the screen and edit a program at any point on the screen. The cursor keys are used to move the cursor by one character at a time. Note that the term character includes the space character. LEFT ARROW Moves the cursor to next character to the left. RIGHT ARROW Moves the cursor to the next character to the right. UP ARROW Moves the cursor to the character in the same column on the line above. DOWJKN ARROW Moves the cursor to the character in the same column on the line below. For larger cursor movements, use the following keys: ^B Takes the cursor to the first line in the text. ^G Takes the cursor to the last line in the text. Shift right cursor(Amiga) Moves the cursor to the beginning of a line. Shift left cursor(Amiga) Moves the cursor to the end of a line. Tab Moves the cursor eight characters to the right. Shift Tab Moves the cursor eight characters to the lef@k5t. Control T Moves the cursor eight characters to the left. DELETING AND INSERTING The following keys are used for deleting and inserting program lines or parts of a program line: BACKSPACE Delete character to the left of the cursor. DEL Delete character to the right of the cursor. ^W Delete word. ^E Delete to end of line. ^D Delete line. ^X Clear line. ^N New line. ^S Split line. ^A Join line. ^V Insert mode on/off. ^U Undo. Note that Undo works in the same y/E/way as in the Text Editor, and can be used as a 'cut and paste' facility, allowing you to move mutiple program lines to a new position. USING THE COMMAND LINE Selecting the Command option on the Program menu presents you with the DML Command Line dialog. Any commands you type in the command line box will be executed as soon as you click on OK or press Return;that is, they will be executed as direct commands. The command line box accepts single or multi-statement lines(with statementvo@vnerally necessary to insert spaces between the various elements of a command line. SYNTAX The Keyword Reference section gives the exact syntax for each keyword. However, there are several rules that apply generally. FILE NAMES AND FIELD NAMES Wherever a command is followed by a file name - or takes a file name as one of its arguments - the file name must be enclosed in quotation marks. Fieldnames should not be in quotation marks. For most operations, you should not include the extew.nsion name for a file(the part of the name after the full stop). Superbase automatically looks for files with the appropriate extension;so, with the command: OPEN FILE "Address" it looks for the file "Address.sbf". The one exception to this rule is when you are dealing with text files. OPEN FOR INPUT/OUTPUT, OUTPUT TO, IMPORT and EXPORT all take data to or from text files, and require that file names are given in full. If you save a file from Superbase's text editor, it automaticallxNj3y adds an '.sbf' extension to the file name - and when you open a file from the text editor, you do not need to supply the '.sbt' extension. But when you make use of a text editor file in some other applications - with IMPORT, for example - you must remember to include the .sbt extension. By the same token, you will not be able to load text files into the text editor unless you give them a .sbt extension. UPPER CASE AND LOWER CASE Certain string functions such as INSTR are case sensyitive, but otherwise DML ignores the difference between lower and upper case letters(small letters and capital letters). In other words, it does not matter whether you use lower or upper case letters when you type in a keyword or any of the following: variables file names field names It is a good idea, though, to enter program lines and direct command lines in lower case. Once DML has accepted a line, it converts any reserved words (that is, any keywords) to upper case. Typing in z\Olower case allows you to check that you have not used a reserved word by mistake. CHAPTER 3 - THE PROGRAM EDITOR THE PROGRAM MENU Operations relating to programs and programming are controlled from a single menu at the right of the menu bar, the Program menu. This section lists the Program menu options, and gives a brief explanation of their functions. Apart from Print and Remove (which should not require further explanation), each option is also described in more detail in the {Jsections that follow. COMMAND Opens the Command line window, allowing the user to enter program instructions as direct commands. RUN Runs the program in memory or, if there is no program in memory, loads a program from disk and runs it. NEW Opens the Program Editor window and clears any program that may be in memory. EDIT Opens the Program Editor window. OPEN Loads a program from disk into memory. CLOSE Clears the program in memory - the program that is currently in the Program |)M[Editor - and closes the Program Editor window. SAVE Saves the program in memory to disk. PRINT Prints the program in memory. REMOVE Deletes a program file from disk. THE PROGRAM EDITOR WINDOW When you select Edit or New from the Program menu, Superbase opens a window at the right-hand half of the screen. This is the program window where you enter and edit programs. In most respects, the program window can be treated in the same way as the text window: you use the same controls for c}2Jlosing, resizing and moving the window(as explained in Chapter 10, Volume 1); and you also use many of the same key controls for editing a program. In fact, both the Program Editor and the Text Editor make use of the same window. The window can only be occupied by one of them at a time, but any changes you make to the size or location of the window will apply when you switch to the other editor. The main difference between the two is that the Program Editor does not have its own set ~Q3of menus. The Program menu is available at all times - except when the Text Editor menus are active - whether the program window is open or closed. As with the Text Editor, you can switch between the program window and the database window simply by moving the mouse pointer to the required window and clicking in it. Thus, to edit a record after opening the program window, you would click twice in one of the fields displayed in the database window - once to make the database window act,ive, and once to activate the record editing cursor(on the Amiga, you would only need to click once). If you then wanted to return to the Program Editor, clicking once in the program window would make the program cursor active again. Notice that the Close option on the Program menu not only closes the window but also removes the current program from memory. If you wish to close the window without clearing the program from memory, click on the close window gadget at the top left-hand pcorner. NOTE: Screen output from a Superbase program is displayed in the database window. If there is a record in view, program data will be output below or to the right of the bottom line of record data. To clear the database window before displaying program data on screen, use the CLS command. CREATING A NEW PROGRAM Selecting Edit from the Program menu opens the program window and places the program cursor at the top left-hand corner. When you enter the Program Editor for the firsk̉racters can be used as wildcards. The question mark matches single characters and the asterisk '*' matches multiple characters. For a full explanation of how to use LIKE, see Volume I, Appendix B. CONTAINS CONTAINS works in the same way as LIKE, but it used with ASCII files on disk; for example, you could use the expression: CONTAINS "*Smith*" to search for an ASCII file which contained the name Smith. See Chapter 9, Volume 1, for more details. LOGICAL OR BOOLEAN OPERATORS. LogilsNcal operators are most frequently used to modify the results of relational operators. An expression that contains a relational operator can either be true or false. With a logical operator you can create more complex expressions whose truth or falsity(their 'truth value')depends on the truth or falsity of one or more relational expressions. AND This operator allows you to test whether two comparisons are true at the same time. For example: 12 > 5 and 6 < 16 are both true, so 12 >mq u 5 AND 6 < 16 is also true. NOT NOT reverses the truth or falsity of an expression. Thus: 12 < 5 is false, so NOT 12 < 5 is true. NOT is often used with the EOF function to set up a program loop for processing all the records in a file, e.g.: WHILE NOT EOF("address") SELECT NEXT VIEW WEND OR OR gives a true result if one or the other, or both, of its operands is true. For example: 12>5 OR 12<5 8=2*3 OR 6>5 8=2*4 OR 6<5 all give true results. 12>5 OR A$="LONDON" gives a tn-Brue result whatever the value of A$. 8=2*3 OR 12<5 gives a false result. Logical operators can also be used with numeric expressions to give a result which depends on the binary digits of the operands. In this context, they are sometimes known as bitwise operators. Instead of comparing the truth or falsity of expressions, AND and OR - when used as bitwise operators - compare the binary digits of two numbers, while NOT takes a single number, and changes each binary 1 to 0, and vice vohfersa. Thus AND returns binary 1, if and only if, the corresponding digits in the two operands are both 1, e.g.: 85 AND 19 gives a value of 17. 2-12 85 in binary is 01010101 19 in binary is 00010011 The result is 00010001 which is 17 TABLE OF PRECEDENCE Complex expressions, containing more than one operator and several simple expressions, are evaluated according to the following table. The higher up the table an operator is, the higher the precedence it is given. This means pB;Ӧthat if there are two simple expressions, the one whose operator has the highest precedence will be evaluated first. ^ Exponentiation */ Multiplication and Division MOD Modulo arithmetic +- Addition and Subtration <> <=> = Relational operators LIKE CONTAINS Relational operators NOT Logical NOT AND Logical AND OR Logical OR Where identical weighted operators are concerned evaluation will be from left to right e.g.: 12 + 3-2 is evaluated as 12 + 3=15 : 15-2=13 12 + 3*4 q|7is evaluated as 3 * 4=12 : 12 + 12=24 12 + 3*4-2 is evaluated as 3*4=12 : 12 + 12=12: 24-2=22 Parentheses can be used to promote expressions up the table, e.g.: (12+3) * (4-2) evaluates as 15*2=30 CONSTANTS The fixed values that you assign to variables or use as part of an expression are known as constants. There are two types:string constants and numeric constants. String constants must be enclosed in quotation marks. DML also provides a ready-defined constant PI, which has the r֮>value of 3.141593265359 and can be used in numeric calculations. EXPRESSIONS Expressions are formed from any combination of: Fields Variables Constants Functions Operators An expression can consist of a single variable name, a field name, or a constant, or it may be more complex, combining these with operators, constants and functions. The following are examples of expressions: 396 TODAY a$ "31 Ambleside Drive" textfielda numfielda Firstname.address LEFT$(Firstname.address, 1) 3.44*s@22.8 + 450 "Mr" + A$ A$ + B$ a%<>b% (a$=b$)AND(c%=1) INT(RND(1)*26)+1 COS(n%) LINE FORMAT AND LABELS There are no line numbers in DML;instead, to provide a reference for GOTO and GOSUB commands(or ON GOTO and ON GOSUB commands)you can place a label at the front of a line. Labels can be any combination of alphanumeric characters but cannot contain spaces. Labels must end in a colon (':')unless they consist only of numeric characters. You can use a number as a label without adding a ct olon, but this will not have the effect of altering the sequence of program lines. So, if you enter a line with the label '30' after a line with the label '50', both lines will remain in that order. A DML line, whether in direct mode or program mode, can contain more than one statement, provided the statements are separated by colons. Labels, however, can only be used in program mode. Any command which is placed at the beginning of a multi-statement line should be followed by a spaceue*. If it is followed by a colon without an intervening space, DML may interpret it as a label. For example, in the line: CLS:STATUS the command CLS has no effect, but CLS:STATUS works as intended. You also need to insert a space before an expression - a variable name or a field name, for example - if it is preceded by a DML command word. But otherwise in program mode, DML will accept lines without any spaces in them (it inserts spaces when it parses a line). In direct mode, it is ge`/ file to count. Depending on the funcion, the argument(or arguments)may be a field name, a file name, constant, a variable, or a combination of these connected by an operator to form an expression. You will find details of what kind of argument a function expects, in the Keyboard Reference section. Although functions are usually classed as either string or numeric functions, this does not always guarantee that they take a particular kind of argument. Numeric functions always take naoumeric arguments, but some string functions also expect a numeric argument. CHR$, for example, returns a string result from a numeric argument. When it comes to finding out what type of result a function returns, there is a simple rule you can apply. Functions which have a $ character at the end, return their results as string data;if they do not end in a $, they return a numeric result. There is one exception to this rule - REPLICATE, which returns a string result, despite the fab Sct that it does not have a $ at the end. OPERATORS DML provides three types of operators:arithmetic, relational and string. ARITHMETIC OPERATORS Addition The plus sign specifies that the operand on the right is added to the operand on the left, e.g.: 2 + 2 a% + b% + c% a% + 12.225 Subtraction The minus sign specifies that the operand on the right will be subtracted from the operand on the left e.g.: -3 -a% Multiplication The asterisk is recognised by DML as the multiplicationclzS symbol and specifies that the operand on the left is multiplied by the operand on the right, e.g.: 3 * 2 a% * b% a% * 12.225 Division The slash is recognized by DML as the division symbol and specifies that the operand on the left is divided by the operand on the right, e.g.: 3 / 2 a% / b% a% / 12.225 NOTE:UNLIKE IN MANY OTHER PROGRAMMING LANGUAGES, DIVISION BY ZERO DOES NOT CAUSE AN ERROR MESSAGE AND RETURNS A VALUE OF ZERO. THIS, OF COURSE, IS A FALSE RESULT, AND YOU SHOUd$ULD CHECK NUMERICAL DATA TO ENSURE IT DOES NOT OCCUR. Exponentiation The up arrow(or caret)is recognized by DML as the exponentiation symbol and specifies that the operand on the left is raised to the power specified by the operand on the right(the exponent);that is, the operand on the left is multiplied by itself the number of times specified by the exponent. If the exponent is 2, the number is squared;if the exponent is 3, the number is cubed; if the exponent is 1/2, the square rooteq of the number results, e.g.: 3 ^ 2 (3 squared) a% ^ b% a% ^ 12.225 a6 ^ 0.5 (the square root of 16) 27 ^ 0.33333333 (the cuberoot of 27) 3 ^ -2 (1/3 * 1/3) Modulo arithmetic MOD gives the remainder when the operand on the left is divided by the operand to the right, e.g.: 17 MOD 7 (returns 3) a % MOD b% Parentheses Parentheses are used to change the order in which the different parts of an expression are calculated. Without parentheses, expressions are evaluated in fOa certain order which depends on the operators they contain - some operators have precedence over others(see the Table of Precedence). For example, multiplication has precedence over addition; so, in the expression: 3 + 4 * 2 the 'four times' part is worked out first and then added to 3, giving 11 as the result. You could alter this by enclosing '3 + 4' in parentheses: (3 + 4) * 2 to give a result of 14. Parentheses must always be paired - each '('should have a matching')'. Concgxqatenation When used with strings or string variables, the plus sign causes the string specified by the right operand to be appended to the string specified by the left operand, e.g.: "ABCD" + "defg" evaluates as "ABCDefgh" Used in this way, the plus sign acts as a string operator. RELATIONAL OPERATORS Relational operators compare the values of two numbers or two strings, and return a result which is either true or false. They are mainly used with IF THEN and WHILE WEND statementshIx7 to make a decision about whether the program takes a particular action or not. For example: IF n% > 30 THEN GOSUB label The relational operators are: > greater than 12>55 is false, i.e.0 = greater than or equal to < less than <= less than or equal to 27<=27 is true, i.e.-1 <> not equal to 1=5-4 is true, i.e.-1 = equal to LIKE pattern matching operator for strings. CONTAINS pattern matching operator for text files. As far as the user is concerned the result of ixcomparison is either true or false. But when DML comes to evaluate a comparison, it actually assigns a numeric value to the result. If the result is true, DML assigns it the value of -1; if false, it assigns the value of 0. This means that if you enter the statement: ? 8>5 or ? "F"=LEFT$("FRIDAY", 1) DML will display -1. If the result of a comparision is false, it will display 0. For string operands, comparison is character by character from the left where 'a' is less than 'b' is j߮less than 'c' and upperacase characters are less than lower case characters ('A" is less than 'a'). Note that numeric data can only be compared with numeric data and string data can only be compared with string data. If you attempt to compare numeric data with string data then the message: Can't do this/Data types don't match appears. LIKE LIKE is a case insensitive pattern matching relational operator which is used to compare string data. The question mark '?' and asterisk '*' chaUgΒffix indicates that the variable can only store whole numbers(integers):in DML, the same numeric variable can be used for both whole numbers and floating point numbers. STRING VARIABLES String variables are used to hold ASCII characters - usually alphanumeric text. The maximum length of data that can be held in a string variable is 255 characters. ARRAYS DML supports string and numeric arrays with up to three dimensions. The maximum number of elements in an array is limited only bV7y the amount of memory available. The rules for array names are the same as those for numeric and string variables. Numeric arrays must end with '%' character, string arrays must end with '$' character. SYSTEM VARIABLES TODAY, NOW and ERRNO are variables which are supplied by DML. TODAY gives the system date, NOW gives the system time. DML treats these in the same way as date and time fields;that is, although they are numeric variables, they are displayed in the current date or timeWmaN format. If the time of day is 9:41 and the system clock has been set to this time. NOW would display it as 9:41. But it stores this as 34919810 - the number of thousandths of a second from midnight to 9:41. ERRNO returns the number of the last error that occurred. You cannot assign a value to a system variable, but otherwise TODAY, NOW and ERRNO can used in the same way as any other numeric variable. FILE TYPES When you save a file using one of the SAVE options, DML automatically aX0bdds one of the following extension names to the file name: aaa.sbf is a database file aaa.sbd is a file definition for a database file aaa.sbk is a function key file aaa.sbp is a program file aaa.sbq is a Query file aaa.sbt is a text file saved from the text editor aaa.sub is an Update file aaa.### is an index(where ### is a number from 001 to 999) DML stores program files, Text Editor files, database files and index files in its own format(for example, it tokenizes keywords Ybin program files and stores formatting information with documents saved in the Text Editor). The others are all text files and only contain ASCII characters. FIELDS With a few exceptions, you can use fields in the same way as variables. For instance, you can input data directly to fields;you can supply a field name as the argument for a function;and you can assign values to fields. Fieldnames must conform to the rules for field names as set out in Volume 1, i.e.: The maximum lengtZ h is 15 characters. The minimum length is one character. They must begin with an alphabetic character, but can thereafter contain any alphanumeric characters. They can also contain the underscore and space characters. Superbase will accept a field name with several spaces embedded in it - i.e., 'a bc d' is a valid name - but this is not recommended. DML is not case sensitive;'abc' is the same as 'ABC'. The file a field belongs to must be open;otherwise the following requester appear[Ed\s: Can't do this.... 'field name' Can't find this field Where more than one file is open and there are two files with the same field name, the file name must be given as an extension to the field name and the two must be separated by a full stop. This enables DML to identify the field you are referring to. NOTE:FAILING TO SUPPLY FILE EXTENSION NAMES TO FIELDS MAY RESULT IN INCORRECT DATA, ALTHOUGH IT DOES NOT CAUSE AN ERROR. If the file name contains spaces, it must be included wi\ thin quotation marks, e.g.: fielda.filea name.Customers Lastname."Customer File" DATE AND TIME Superbase stores dates as julian date numbers;that is, as the number of days from 31st December in the year zero. This means that date fields are numeric fields and hold their dates as numbers. When you display a date field, however, Superbase automatically converts it to a more recognizable format:it takes the format which has been set in the file definition(see Chapter 2, Volume 1).] The date format only controls the way dates are displayed. You can enter a date from the keyboard in almost any format. For instance, the date might be shown on screen as 24/02/87, but you can type in a date like '28 February, 1962' and DML will accept it. Incidentally, DML does remember that eleven days were lost when the Gregorian Calendar reform was implemented(September 2nd, 1752 is followed by September 14th). As with dates, DML stores the time in time fields as a numeric value^&, but displays it in a different format. The time is stored as the number of thousandths of a second from midnight. When you display the time, it is given in hours and minutes in either 12 or 24 hour format. FUNCTIONS Functions form one of the largest groups of DML keywords. Most of them perform a calculation on a number or a string, but there are also functions that give information about some aspect of the system. RECCOUNT, for example returns the number of records in a file, and_]B FREE returns the amount of free memory space. Unlike a command, a function cannot be entered on its own as a statement. Thus: ? RECCOUNT("address") NUMRECS%=RECCOUNT("address") are valid statements, but RECCOUNT("address") produces an error message. All functions take an argument, which is enclosed in parentheses, and return a result. If the function calculates a result, the argument is what it works on. In the example above, "address" is the argument. It tells the function whichJP^level by creating your own pop-up selection panels to guide the user's choices. USING THIS GUIDE Before reading this guide, you will need to be familiar with Superbase's menu and keyboard controls. Many of DML's commands provide a program equivalent of a menu or keyboard option, and the descriptions given here presume that you already know how to use the corresponding option. However, once you have mastered Superbase itself, you do not need to read this book all the way through. As KUua reference guide, it can be consulted as and when it is needed. CHAPTER 2 - OVERVIEW OPERATING MODES DML has two modes of operation:direct mode and program mode. DIRECT MODE In this mode, DML executes instructions as soon as you have typed them in. First you need to select the Command option from the Program Menu. Then enter your instructions - a single command or a line of commands separated by colons - in the command line window;when you select 'OK' or press the Return key, LcDML will carry out the instructions straight away. The command line window is 64 characters long but you can enter up to 255 characters and move within the window using the cursor keys. PROGRAM MODE In program mode, DML does not execute commands as you enter them. Instead they are stored in memory and executed only when the program is run. The main difference between this mode and direct mode is that with the latter you can only enter and execute one line at time;program mode allowsM62 you to enter a series of instruction lines which are carried out in sequence. Program lines can be up to 255 characters long. OTHER DML APPLICATIONS DML's functions, along with its operators and variables, can also be used in other Superbase operations - such as field definition validations and calculations, filter conditions, update commands and query derived field definitions. KEYWORDS AND RESERVED WORDS Any word that DML recognises as a specific instruction, or part of an instrNh0uction, is known as a keyword. A keyword cannot be used as a variable name, a field name, or a label. In this context, keywords are also knows as reserved words - DML reserves them for its own use, and will interpret then as such even if they are in lower case. A reserved word can, however, from part of a name. For example, you can incorporate the reserved word TO in any of the following ways: TOP: (in a label) TOTAL% (a numeric variable) tot$ (in a string variable) TOTALS$ (iONZn a field name) But you cannot use it like this: TO: TO% TO$ COMMANDS AND STATEMENTS Some programming manuals make a strict division between two kinds of executable instructions - commands and statements. Commands are those instructions which are generally executed in direct mode, while statements are instructions that can only appear in a program line. In DML there are only a few instructions that cannot be used in both operating modes and so the two terms are used almost interchaP€ngeably. Thus we refer to a line with more than one instuction on it as a multi-statement line; but it could equally well be called a multi-command line. VARIABLES There are three types of variables in DML:string variables, numeric variables, and arrays. In many circumstances, the fields in a Superbase file can also be treated in the same way as variables. VARIABLE NAMES Numeric variables must end with the '%' character, string variables end with an '$' character. Apart from this,QnNi the names for both types of variable follow the same rules: Variable names have a maximum length of 14 characters and a minimum length of 1 character(excluding '%' or '$'). The first character of the name must be a letter in the range 'a' to 'z' but the remaining characters can be either alphabetic or numeric. DML is not case sensitive; 'abc%' is the same as 'ABC%', and 'abc$' is the same as 'ABC$'. A variable name can contain a reserved word, but cannot consist of just a reserved wR"ord and the variable suffix, % or $. For example, names like 'lef$', 'cos%', 'report$' and 'FILE%' are forbidden. See Appendix A for the list of reserved words. Before using a variable, you must define it by assigning a value to it. This means that the first occurrence of a variable should be in an assignment statement, with the variable to the left of the equal sign. Suppose, for example, you instructed DML to display the value of a$, using the command ? a$ If you have not assignSłm a value to a$ beforehand, DML will issue the error message: Can't do this Variable not defined To avoid this error message, you would have to define a$ at an earlier stage in the program, with line such as a$="Hello" or a$="" The double quotes are known as the 'empty string'. They allow you to define a string variable without actually assigning a specific value;they are also used to clear the contents of string variables. There are, however, a number of exceptions to the rule TcVabout defining variables. Some statements - READ, ASK, WAIT, and INPUT - define variables implicitly when they are used for the first time. Thus DML would accept the line: READ a$ even if you had not assigned a value to a$ previously. NUMERIC VARIABLES DML's numeric variables hold numbers at 13 figure accuracy, but if displayed or printed, they are shown in the current default numeric format. Note that there is only one type of numeric variable. In some versions of Basic, the % su?܌r those name and address records where the person lives in the USA or West Germany. So we'll use the Country field, and LIKE operator, and the Value Box. You'll see the results of your selections appear as a Filter Command Line in the Main Box. Move the pointer into the Field Names Panel, and click once on the down arrow to bring Country into view. Then click on Country. The name appears in the Main Box. Next, move the pointer to the right and click on the LIKE button. This al@^pmso appears in the Main Box. Now you must type in "USA". This goes in the Value Box. Move the pointer into the Value Box and click on the mouse to produce the cursor. Type in "USA" (no quotation marks). Press Return -- this is essential, or the contents of the Value Box will not be copied into the Main Box. Your Filter Command Line should read: Country LIKE "USA" Next, you need the OR operator. Click on it and Superbase copies it into the Main Box. Now you must click on the CoA&untry field name again. This is important. A Filter Command Line like this is not allowed: Country LIKE "USA" OR "West Germany" So, click on Country, as before, followed by LIKE. Then, as before, click in the Value Box, and type in "West Germany". Press Return. Your Filter Command Line should look like this: Country LIKE "USA" OR Country LIKE "West Germany" If there are any mistakes click on Clear and repeat the steps above until you get it right. You have built your FilterBʠN Command Line, so now you can put it into action. Click on the OK button. Superbase activates your Filter and displays the first record in the file that matches the Filter. Click on Fast Forward. Superbase shows all the records that match the Filter. Now de-activate the Filter. Click on the Filter button so that it's not highlighted. Now click on Rewind. You'll see all the records in the file appear as normal. Let's go back and add another condition. Click on the Filter buttoCˈcn to recall the requester. Click on the OR operator, then on Country, then on LIKE, then in the Value Box, type in "France", and press Return. Your line should read: Country LIKE "USA" OR Country LIKE "West Germany" OR Country LIKE "France". Now click on OK and when Superbase shows the first record, click on Fast Forward. You will see that Superbase has added the addresses in France to the display. That concludes our short tutorial. OTHER FILTER BASED OPTIONS You should have Dcacquired a feel for the way the Filter requester works, and you can experiment freely with the Addresses file to deepen your knowledge. When you're ready, you can start using the Process options, all of which are selected from the Process menu. SUPERBASE PROFESSIONAL DATABASE MANAGEMENT LANGUAGE USER GUIDE BEFORE YOU BEGIN... This Volume presents you with two user guids, one for Superbase's Database Management Language(DML)and one for the Forms Editor. Although they are both undeEBvr the same cover, they can be treated as separate manuals. Each has its own Contents, Index, chapter numbers and page numbers. Note that the Forms Editor is a separate program from Superbase Professional. You will find instructions on how to install and load it on your computer in the Readme document which is supplied on the demonstration file disk. If you haven't done so already, you should read this document now. It also provides details of any features of Superbase Professional thFs+at are not covered in either Volume 1 or 2. CHAPTER 1 - INTRODUCTION TO DML Welcome to Superbase Professional's Database Management Language(DML). DML is based on the programming language Basic. It includes most of the standard Basic commands and functions, but supplements them with a large number of commands and functions that are specific to database management. The database commands duplicate the controls that Superbase Professional provides through its menus and dialogs.Gϣy- This means that almost all of Superbase's file and record handling facilities are available under program control. In fact, apart from Fast Forwards, Rewind and Duplicate, you can now carry out any Superbase operation using a single program command. Once you have familiarized yourself with Superbase's controls, the corresponding program, you may find the idea of learning a program language daunting. But as far as DML is concerned, a little goes long way, and you do not need to be fuHЯPK|lly conversant with the language in order to take advantage of it. In effect, you are already following a program sequence every time you perform a task which involves a series of menu operations. Writing a program that performs the task for you is simply a matter of entering commands in the same sequence. Generally, you will be able to find a single command to duplicate each of the menu operations. As you acquire more expertise, you can move on, building bigger and more complex progI:@rams by combining routines, until you have fully automated your database system. When you're ready, you can incorporate Superbase forms into your programs, taking advantage of their built-in facilities for generating and retrieving records in several files at once. At the highest level, you can specify your own pull-down menus, replacing the standard Superbase menus with the options that are relevant to the job in hand. And you can customize your application to an even more detailed 4 or for a number of interrelated fields: AND Both of the conditions linked by AND must be satisfied for the record to be accepted by the Filter: Country "West Germany" AND Balance >= 5000. OR Either of the conditions linked by OR is sufficient to make the record aceptable to the Filter: Country LIKE "West Germany" OR City LIKE "Geneva". NOT NOT is slightly different. It negates the effect of an expression: NOT (Country LIKE "West Germany" AND Balance > 5000). This will find al5ӚpRl the records other than the ones where the country is West Germany and the balance is greater than 5000. Note the use made of Parentheses with NOT. PARENTHESES The ( and ) operators are used in the normal way, to give priority to one part of the expression over another. ( The following expression has a higher priority for evaluation than the preceding expression. ) Required to end a higher priority expression. The numbers of opening and closing parentheses must be equal. 6ԔATHE MATHEMATICAL OPERATORS + This is used to express addition: Balance > Amount + 1000. - The minus sign expresses subraction: Balance > Amount - 1000. * The asterisk is used for multiplication: Balance > Amount * 1.15. / The slash represents division: Balance < Limit / 10. TYPING IN THE MAIN BOX The great power and flexibility of the Filter system is only achieved by giving the user control of every aspect of the operation. Because you type into the Main Box you incl7ү$Wude all kinds of expressions which are not available from the buttons on the requester itself, and all kinds of text and numeric values. The price you pay for this flexibility is an increased risk of making mistakes. This is not too serious, as you cannot harm your data by using a Filter (although you can discard records using the Remove Records Filter). However, you may see a Superbase "Can't do this" message concerning an error in the Filter Command Line in two possible situation8Hg?s: When you click an OK after creating or editing a Filter Command Line. When you use a Filter after changing the definition of a field with Project Edit. If you see a "Can't do this" message you must either change the Filter Command Line or change the file definition. Here's a summary of the editing facilities available when typing inside the Main Box: FILTER COMMAND LINE EDITING You can remove everything from the Main Box by clicking on the Clear button. If you have clicked 9׃T5in the box, hold down the right-hand Amiga Key (next to the space bar) and press X to delete its contents. (Note: we refer to this key combination as Amiga-X). Provided you have not left the box -- the cursor is still visible -- Amiga-Q will restore the contents you deleted with the Amiga-X. This does not work after clicking on Clear. If Superbase won't let you make an Operator selection when you return to modify an existing Filter Command Line, click in the Main Box and press:k Return. Now you can go ahead. Shift key and cursor right arrow and shift key and cursor left arrow move the cursor to the end and beginning of the Filter Command Line respectively. The DEL key romoves the character to the left of the cursor. Backspace repeats its action if held down. USING A FILTER The Filter Command Line is made active by clicking on OK. Whenever a Filter is in use, Superbase highlights the Flter button on the Control Panel. You can perform all but one of;l the Control Panel record selection operations we've discussed, and Superbase will restrict the records displayed to the ones that match the Filter values. For example, if you have specified the Country LIKE "West Germany" and you click on the First Record button, Superbase will go and find the first record in the file, according to the current index, which has the value "West Germany" in the Country field. The Key Lookup button is an exception to the filter effect. You can still <)TZrecall individual records by entering an index key value, whether or not they match the Filter. SUSPENDING A FILTER There wil be times when you want to remove the Filter effect so that you can review all the records in the file again. To do this, just click on the highlighted Filter button. It reverts to normal, and you'll find that when you use the Control Panel Superbase acts as if there were no Filter. MODIFYING OR RE-ACTIVIATING A FILTER If you've set up a Filter and then s=۟5`uspended it, you can bring it back into operation by clicking once more on the Filter button. Superbase displays the Filter requester, with the Filter Command Line in the Main Box just as you left it. If you want to, you can add to the Filter Command Line by clicking on more field names and oeprators (you may need to click in the Main Box and press Return first), or edit it after clicking in the Main Box, as described above. Whether you've made any changes or not, just click on OK> to use the Filter again. FIFTEEN MINUTE TUTORIAL Make sure you've got the Addresses file open, indexed on Lastname. Set Table View with Paging off. Go into Project Open Fields and open these fields: Forename Lastname Street City Country In Table View, drag the Lastname column a few columns to the left, and then do the same for City, overlapping the Street column if necessary, until the Country column comes into view. Click on the Filter button. We are going to search fo)ce type in "Forge". Press Return or click on OK, and Superbase looks up the first record with Forge in the Lastname field. ENTERING PARTIAL VALUES You don't even need to type the full index key in many cases. Try Key Lookup once more, but type in "Hut" and press Return. Superbase finds the first record for Huttermann. For your information, Superbase tells you that it didn't find the exact match. THE FILTER BUTTON = Filter: This is a very powerful feature. You may have thou*ިsands of records in a database file, yet you may often want to review them (or print them out) on a selective basis. The Filter allows you to enter a set of values, as simple or a comprehensive as you like, to restrict the display to only the records that match those values. THE FILTER REQUESTER Move the pointer and click on the Filter button on the Control Panel. This requester looks more complex than the ones you have seen so far, but after a little practice with the demonstrat+߱ion file you'll find that you can remember how to use it easily. It's important that you learn how to use the Filter, because Superbase uses filters in several other functions. The requester has four main parts: the Field Name Panel, the Operators, the Value Box, and the Main Box. A Filter is created by a combination of clicking on field names and operators and typing in values. These actions produce the Filter Command Line in the Main Box. Let's look at each component of the F,/ilter Requester in turn. FIELD NAME PANEL This appears on the left-hand side of the requester. You can scroll the list of field names up and down in the usual way, using the scroll bar and arrows at the right of the Field Name Panel. You specify that a field is to be used in the Filter by clicking on its name in this panel. The list of field names is complete. It's not affected by whether you have an Open Fields List, so the fields that specify the Filter neen not be the same a-Bs the ones that are shown in the Main Display. OPERATORS These appear to the right of the Field Name Panel, and can be divided into the Relational Operators, Logical Operators and Mathematical Operators. We'll see how these are used below. VALUE BOX This is the box with the word "Value" next to it. You use it for typing in values such as names, numbers, and dates, which will form part of the Filter. Always remember to press Return after typing in the Value Box. You must do thi.|s to ensure that the contents are copied to the Main Box. MAIN BOX This is the long box that appears below the Field Name Panel and extends across the whole requester. When you make selections with the mouse or type values into the Value Box, Superbase copies them into the Main Box, building up the Filter Command Line. In this way you get immediate feedback about the results of your selections. The maximum length of the Filter Command Line is much greater than the apparent lengt/\Fh of the box -- up to 255 characters are allowed. You can type directly into the Main Box, but in these exercises we'll stick to making selections with the mouse. USING THE OPERATORS The Operators are the most complex aspect of the requester. They are used to relate field names to other fields or values. For example, if we wanted to set up a Filter to show only the addresses in West Germany, we would need the expression: Country LIKE "West Germany". Here, Country is a field na0e me obtained by clicking in the Field Name Panel; LIKE is selected by clicking on the LIKE Operator button; and "West Germany" is typed into the Value Box. TEXT STRING AND PATTERN MATCHING: LIKE When you're searching for names or text strings, uyou should avoid using the equals sign operator, and use LIKE instead. This is because only LIKE accepts matches on either upper or lower case characters; it's said to be "case insensitive". The equals sign operator, on the other hand, req1puires exact matches for what you type in: It is "case sensitive". LIKE also permits searches for text strings that include pattern matching characters. these allow you to enter incomplete words for the Filter. For example, to find all the records where the Lastname begins with "C" you need the Filter Command Line: Lastname LIKE "C". To specify a range add square brackets to the value: Lastname LIKE"[A-D]*"; this finds all the records where the Lastname begins with "A", "B", "C2e'", or "D". Note that the Asterisk is placed outside the brackets. There are several other things you can do with the LIKE operator. You'll find a complete list and a number of examples in Appendix B. THE RELATIONAL OPERATORS = This specifies that the field is to be EXACTLY EQUAL TO the following value or field: Balance = 2000. <> The field is to be NOT EQUAL TO the following value or field: Country <> "France". > The field is to be GREATER THAN the following value or field: B3Ѿ=.alance > 1000. < The field is to be LESS THAN the following value or field: Balance < 1000. >= The field is to be GREATER THAN OR EQUAL TO the following value or field: Balance >= 1000. <= The field is to be LESS THAN OR EQUAL TO the following value or field: Balance <= 1000. THE LOGICAL OPERATORS AND, OR AND NOT Thes provide links between different expressions like the ones given above. You use them to specify alternatives and ranges for the Filter, either for a single field ~4g the Printer option on, you can copy the visible portion of the worksheet to the printer. Select Form View now from the Set Menu. Make sure you've got the Addresses file open, and that the current record is the first record in the file. DEFAULT FORM VIEW If you look at the screen you can see that the fields names already appear in a Form View. This is the default Form, which we have predefined for this demonstration file. You can change it, and then save it with Project Save File. Once a Form has been saved, the fields will appear in that layout every time you open the file. MOVING FIELDS Let's move the Lastname field to another position on the screen. Move the pointer so that it's on the field name Lastname. Then press and hold down the left-hand button of the mouse. Superbase outlines the field name and its data area. (If you see a cursor instead, you've started editing by mistake. Carefully click again on the field name itself.) Now drag the o B^utlined box to a new position two lines above its present position. Release the mouse button. As you can see, the field name and data have moved to this new position. Now, if you want to, you can arrange the Form View for Addresses in any way you like. This can be just an experiment, but if you want to save the present arrangement, you can do so. Select Save File from the Project Menu. Superbase stores the File Definition, which contains the Form View location of each field, on!A disk. Although you have freedom to drag fields to any position on the screen, there are as usual a few limits to what you can do. You cannot place a field on top of either the name or the data area of another field. If you try this, Superbase leaves the field you tried to drag in its original position. Superbase won't let you move a field off the right or left-hand end of the worksheet. To gain more lines, move a field down into the Control Panel. Then use the vertical scro"dVll bar on the Main Display window to bring it back into view. Move it down again if you still need more lines. To move a field over to the right of the worksheet, position it near the right-hand edge of the screen, then shift the display with the scroll bar, and drag the field further over. Only the open fields are shown, so close the Open Fields List if you want to see all the fields in Form View. Finally, a small but entertaining feature. Select Fast Forward, and drag the fi#nSelds around as described above. No problem. SUMMARY Time for a check list of what you should know before we proceed. * How to open a file * How to switch betgween Form View, Table View, and Record View * How to switch Paging off and on * How to drag columns around in Table View * How to Open and Close a list of fields * How to select the Current record * How to move to the First record * How to move to the Last record * How to move to the Next record * How to go to the Previous $Hrecord * How to use the Fast Forward to move forwards through the records * How to Rewind to move backwards through the file * How to Pause * How to Stop Understanding all these actions is essential if you wnat to be able to work easily with Superbase. If you do not understand them or are uncertain then take a little time to go back and re-read the appropriate sections before continuing. THE KEY LOOKUP BUTTON ? Key Lookup: This is for the retrieval of individual records. You en%@!ter a value for the field on which the file is currently indexed, and Superbase uses the index to find and display the record. You can only use one index field at a time -- the Filter button is used for multiple value searching. When you click on the Key Lookup button you'll see a requester for the entry of a key value. TYPING IN YOUR KEY To be able to type in the box, you must move the pointer into it and click the mouse once. This produces the cursor, and you can then type in &𬏓 your Index Key. Suppose you want to find the record for Julie Kasper. The file is indexed on the Number field, so we can use the current index to search for individuals by their Reference Numbers. Click in the box and then type in "KAS0001" (omit the quotation marks). This is the Index Key. RETRIEVING THE RECORD When you press Return or click on OK, Superbase looks up the first record for which the Number field has the value "KAS0001". If there were more than one with this va'8̝lue, you would have to browse through the file with the Next Record or Fast Forward button to find the exact record you wanted. KEY LOOKUP WITH A DIFFERENT INDEX You're not restricted to one index. Superbase allows you to have up to 999 indexes for each file, all automatically updated when you add or modify records. We've provided indexes on the other fileds besides the number field: Lastname, City and Country. Let's try one of these. Select Open index from the Project Menu. (!C4Click on the field name Lastname; this is copied into the Selection Box. When you're ready, click on OK. You've selected the Lastname index, and if you look at the title bar at the top of the window you'll see that the message now reads "Superbase: Addresses Indexed on Lastname". The record on the main display has not changed. Click on the Key Lookup button, and Superbase produces the Record Key requester. As you did above, click in the box and type in a key value, only this timp~#f restricting the fields that actually appear on the Main Display. You can do this with the Open Field option on the Project Menu. Display the Project Menu, and select Open Fields. The basic procedure for selecting fields is very simple: 1. Click on a field name in the left-hand panel. Superbase copies it into the right-hand panel. 2. Repeat until the selection of fields you want is in the right-hand panel. 3. Click on OK. The list of fields in the right-hand panel is ca\Rlled the Open Fields List. Let's make one now. Move the pointer onto the list of fields names, and click on City. Nitice how Superbase copies it across. Now click on Lastname. When you have both names in the list, click on OK. (If you make a mistake, DEL romoves the current field from the right-hand panel; Clear removes the whole list.) Superbase immediately returns to the Main Display showing the data for the two open fields. Try out the Control Panel buttons to see their eff҈ect. Experiment with Record View as well as Table View. When you've finished, restore the full set of fields by selecting Close Fields from the Project menu. PAGING This is another feature which gives you control over the Main Display: the Paging option. If Record View is not set, select it now from the Set Menu. Then go back to the Set menu, and move the pointer down to the Paging item, which should have a check mark against it. Release the mouse button while Paging is highligA)hted. You've now turned the paging option off. (You can check this by looking at the Set menu again; there should be no check mark against the Paging item.) Now, select the first record in the file by clicking on the First Record button. Then click on Fast Forward, and watch the display. You'll see that Superbase down't pause when the screen is full -- It just goes on displaying records. You can still use pause to halt the display, but the automatic pausing at the end of each "Nqpage" of data no longer occurs. The same applies when Rewind is in use, except that the records appear at the top of the screen. If you now switch back to Table View and try out some of the Control Panel buttons, you'll see that with Paging off the difference is similar to that in Record View. Each record appears below the last, without clearing the screen. Rewind displays records from the top down, as in Record View. MOVING COLUMNS For this exercise you need to be able to see E^all the fields on the screen, not just those in the Open Fields list, so if you have an open Fields list in use, close it now by selecting Close Fields from the Project Menu. You can see that if you have all the fields open in Table View, some of the field data is very likely to be hidden from view. Normally, to see hidden fields you have to scroll the screen to the right. However, Superbase provides a way of closing up columns to get more data on the screen. Assuming you're in Ti"able View -- set it if you're not -- click on the First button, then the First Record button on the Control Panel in order to get the first record of the Addresses file on your screen. MOVING A COLUMN TO THE LEFT Now move the pointer so that it is on the space to the right of "M" in the Title Field. Once you have done that press and hold down the left-hand button of the mouse. As you do this you will see two vertical lines appear, forming a column beneath the Title field. There are also lines extending off to the right of the screen. Keeping the left button depressed, drag the pointer a little to the left, then release the mouse. You will see that the column moves, and when you release the mouse the data beneath the field name has shifted to the left. All columns to the right have also moved leftwards. Now try the same with the Forename field. This time ove the column so that it is just to the right of the "e" in Title. If you also try this with Lastname and Street you will see that as you move the columns over to the left the field name City appears on the right of the screen. If you now move the City column to the left, the Code field will appear on the screen. Finally, if you move the Code field, Country will appear on the right- hand side. So by moving the columns you've got all the fields on one screen instead of two. Notice that you can move a column so that it overlaps the column to its left, truncating the data. This j/can be useful. MOVING A COLUMN TO THE RIGHT If you move a column back to the right, the truncated field name and data are not automatically restored to their full length. A quick way of restoring the length of a fiels is to double click in its column. Then if you click on the Current Record button the full field name and data will reappear. But as this only displays one record you will have to use Fast Forward if you want to redisplay a screen of Record data. FORM VIEW DESIGN qSuperbase allows you to rearrange the positions of the fields in Form View, setting more than one field on a line, creating columns of field to resemble invoices or other business forms, and generally talloring the system to suit your own application. The full 273 column woeksheet is available for Form View, and you can vary the depth by dragging fields downwards, creating new lines. You can use Form View for creating new records and editing them, as well as for display. By settin^lbar at the bottom of the window. Remember that if there were more fields in the record than you could see, you could view them by dragging the scroll bar at the right of the window downwards, or by clicking on the downward pointing arrow. RECORD VIEW, FORM VIEW AND TABLE VIEW The record format you're looking at now is only one of the three possible ways of looking at your file. It's called Record View. This view shows the records one at a time, restricting the format by keeping  7Othe field names on the left and limiting you to one field per line. This restriction allows records to be scrolled up and down the screen with the Control Panel buttons. In Form View, you also see one record at a time. Each record is like a form or page and, as you'll see later, you can drag the fields around to create a worksheet desinged to suit your application. The third display format is Table View. This displays the field names across the top of the screen with the data ap 4"pearing in rows and columns, each record occupying one line. SWITCHING TO TABLE VIEW Select Table View from the Set Menu. You will see the field names appear across the top of the screen. The same record is shown, but each item of data appears underneath its field name. As with Form View, there are ways of changing this row and colulmn display to suit your own preferences which we'll explain later. SCROLLING THE SCREEN While you are viewing your record in Table View you will n eލotice that the field names do not all fit onto the screen. The fileds to the right can be viewed using the arrow at the right of the bottom scroll bar. Move the pointer onto this arrow, and click on it once. The display shifts five columns to the left. Click once on the left-hand arrow to shift right and restore the display. If you want to shift the display by larger areas, drag the bottom scroll bar with the mouse. CONTROL PANEL Now that you've opened a file, and discovered h .ow to change the way in which records are displayed on the screen, let's look at the Control Panel. This is your means of controlling the main display. As you can see there are 12 buttons, most of them modelled on the controls for a video cassette or tape recorder, so you should find these conventions easy to learn and remember. Each button has a special purpose, and together they fall into three groups. On the left are the Pause and Stop buttons. Followed by seven buttons for br ~^owsing through the file. On the right are three special purpose buttons which we'll examine later. The functions of some controls are more intuitively obvious than others, so we'll take a look at the first nine now, one by one. Make sure you've set Table View for this exercise. ^ Current Record: This button is used to display the current record. When Table View has put a lot of records on the screen it can be helpful to select the current record as the top record in the  v7display. Also, you can only Edit the current reacord, and this button is a useful way of ensuring that you've got the right record. If you click on this button you will notice that Superbase clears the screen and then displays the current record. > Next Record: Allows you to view the next record in the file. The order in which the records appear is dicided by the current index, which is shown by the message on the title bar of the main display window. Try this now, and you'll se4e the data for the next record come onto the screen. In Table View it appears underneath the previous record. In Form View it replaces the previous record. < Previous Record: This gets the previous record in the file, relative to the current record. >> Fast Forward: Instead of moving forwards through the file one record at a time by pressing the Next button, you can move much quicker using the Fast Forward button. Click on this button, and Superbase gets the next records in`yl the file, displaying them row by row until the screen is full, when it selects the Pause button. || Pause: When the Pause button is selected, you cannot select any menu item until you either release it or click on the Stop button next to it. You can, however, use the other Control Panel buttons. So, to view the next screen of records, release the pause by clicking on the Pause button. Superbase continues with the Fast Forward display of records, stopping when the next screen ᴱis full, or when it reaches the end of the file. Pause is useful when you're searching for a record and you want to stop from time to time to read the screen. << Rewind: This does the opposite of the Fast Forward button. You will see the data appear from the top of the screen,in reverse index order. If you do this immediately after Fast Forward there will be an apparent delay while Superbase displays records over the text of the existing display. |< First: Pressing this buta ton automatically displays the first record in the file, according to current index order. >| Last: Pressing this button automatically displays the last record in the file, according to current index order. | Stop: If you want to stop the Fast Forward or Rewind display, click on Stop. You must also click on Stop if you want to interrupt Pause when it's selected. OPENING FIELD TO VIEW As Superbase imposes no limit on the number of fields per record, you need to have a way o #@ with the "Objects Off" option. This puts the power of your Amiga in the race and less in the off-track graphic detail. HOT KEYS: General ------- CTRL B - Toggles music on/off CTRL E - Toggles sound f/x CTRL L - Loads a saved game CTRL P - Pause game CTRL Q - Exits game CTRL S - Saves game F10 - Systems menu SPACE - Exits current screen ENTER - Next item, accept input BACKSPACE - Previous item ESC - Cancels any changes and ret Z{Lurns to main menu Keys used during race --------------------- ARROW KEYS - Left/Right = steering Up/Down = accelerating/braking ENTER - Shift gear up SPACE - Shift gear down BACKSPACE - Toggles leader board on/off TAB - Activates INSTANT-REPLAY ESC - Exits race B - Toggles the cars to polys/bitmap M - Toggle rear view mirror on/off O - Toggles ojects off/on T - Tune your car (only in practice mod \e) X - Turns driver's head to the right C - Sets driver's head to zero V - Turns driver's head to the left Tape functions during instant replay ------------------------------------ ESC - Exit replay F2 - Slow motion F3 - Pause the replay F4 - Stop the replay F5 - Rewind the tape F6 - Play the tape F7 - Fast forward F8 - Move forward one frame F9 - Move backward one frame DEL - Clear the replay Camera functions during instant repl /$ay -------------------------------------- F1 - Cycle through 6 camera views [ - Increase camera height ] - Decrease camera height Z - Zoom in z - Zoom out A - Swing camera to the right a - Swubg canera to the left 0 to 9 - Train camera on opponent car - to = - Train camera on player's car , < - Cycle backwards through cars . > - Cycle forward through Quicks docs typed by Zodact of --> Razor 1911 <-- * DANSE MACAB) RE * (713) 324-2139 * THE COMPANY WHQ * he right C - Sets driver's head to zero V - Turns driver's head to the left Tape functions during instant replay ------------------------------------ ESC - Exit replay F2 - Slow motion F3 - Pause the replay F4 - Stop the replay F5 - Rewind the tape F6 - Play the tape F7 - Fast forward F8 - Move forward one frame F9 - Move backward one frame DEL - Clear the replay Camera functions during instant repl no file open. Since you can't do any work without a file, let's open one and take a look at it. Files can only be opened from the Project menu. This is the first menu on the menu bar. SUPERBASE REQUESTERS Superbase now requestes the name of the file you wish to open. Requesters like this one (some are more complicated) are used in most Superbase operations. They also communicate messages to the user. They are known as requesters because their function is to request specific Taction from the user. Usually the action involves making selections by clicking the mouse or typing in a number of a text value of some kind. Many requesters show a panel that contains a list of items such as file name or field names. The panel may be only a few lines long, so there may be more files or fields than can be shown at one time. If there's a gap at the bottom of the scroll bar there are more items to be viewed. You can show them by dragging down the scroll bar at the{ right of the panel, or by clicking on the downwards pointing arrow gadget below the scroll bar. Many Superbase requesters include a Clear button. This has the effect of removing anything that's in the Selection Box, and can be used at any time. CHOOSING THE ADDRESSES FILE Move the pointer into the panel which contains a list of file names. Move it over the file name Addresses. This is the demonstration file you'll be using for the rest of this session. Using the left-hand but7ton, click once on the name Addresses. Superbase copies the name of the file you've selected into the Selection Box -- that's the box underneathe the panel of tile names. (If you see the wrong file name in the box, move the pointer carefully onto the right file name, and click again.) Once you've selected the file, move the pointer onto the OK button and click once. Superbase now opens the Addresses file. THE MAIN DISPLAY When Superbase opens a file from the start up screen, it w[6automatically reads the first record in the file and shows it on the Main Display screen. You'll see the name of the file appear on the title bar at the top of the window, followed by the name of the field on which the file is currently indexed. The Main Display is Superbase's permanent window onto your database. It's like a large worksheet, 273 colulmns across; the number of lines you can see depends on the size of your window. Surperbase uses the Main Display to show you the rec;gords in the current file, as well as the results of some other operations. At the bottom of the Main Display is the Control Panel, which we'll be looking at in a minute. On the Main Display, the field names for each record in the Addresses file appear down the left-hand side of the screen. The data for each filed is displayed to the right of its field name. If the data for a filed is wider than the window, it extends off to the right. You can bring it into view using the scroll k HERE," HE THOUGHT, AND GOT BLOWIN'. USE YOUR JOYSTICK TO BECOME LEROY, THE BEST BEASTIE BUSTER IN THE LANDS AROUND BIG FOREST, AND RID LEVEL AFTER OF CONSTRUCTION SITE OF THE MAD MEANIES THAT TRY TO STEAL AWAY ALL ITEMS THEY THINK ARE INTERESTING. UPON HAVING BLOWN THEM AWAY, COLLECT ALL ITEMS THEY LEAVE BEHIND, THUS ENABLING THE CONSTRUCTION WORKERS TO GET ON WITH THEIR JOB, AND OBTAINING POINTS THAT WILL BE ADDED TO YOUR SCORE! THE GAME -------- IT I,ۂS YOUR AIM TO GET RID OF ALL MONSTERS INFESTING THE PLATFORMS. TO ACHIEVE THIS, YOU HAVE TO BLOW UP MONSTER AND HAVE IT FLOAT OUT OF THE SCREEN. IT IS BETTER AND FASTER, HOWEVER, TO PUSH THE MONSTERS AS THEY FLOAT UP, WHICH CAUSES THEM TO DISAPPEAR OFF THE RIGHT OR LEFT EDGE OF THE SCREEN. WOU WILL ALSO GET RID OF ANY MONSTERS THAT COLIDES IN THEIR FLIGHT PATH. CONTROLS -------- YOU WILL NEED A JOYSTICK. MOVE THE JOYSTICK TO THE LEFT OR RIGHT TO MOVd?E IN THE CORRESPONDING DIRECTION. TO JUMP, MOVE THE UP. A SHORT PUSH WILL MAKE A SMALLER JUMP, A LONGER PUSH A LONGER JUMP. WATCH OUT NOT TO JUMP INTO MONSTERS MOVING ABOVE YOU. WHILE JUMPING, YOU CAN MOVE YOUR CHARACTER SOMEWHAT TO BOTH SIDES, THUS ALLOWING YOU TO REACH MORE DISTANT PLATFORMS OR TO AVOID MONSTERS. USE THE FIREBUTTON TO BLOW UP THE MONSTERS - POSSIBLY BY FAST, REPETITVE PUSHING. YOU CAN ONLY BLOW UP A MONSTER AT AP 4 jROXIMATE EQUAL HEIGHT WITH YOU. TO BLOW UP A MONSTER YOU HAVE TO BE STANDING ON SOMETHING SOLID AND THE DISTANCE SHOULD NOT BE TOO BIG. BONUS ITEMS ----------- ONCE YOU'VE BLOWN UP A MONSTER, THE ITEMS STOLEN BY THE MONSTERS WILL BE DROPPED. COLLECTING THESE WILL CAUSE YOUR SCORE TO BE INCREASED AT THE END OF THE LEVEL. WATCH OUT FOR BOXES STANDING AROUND. YOU WILL PICK UP THEIR CONTENTS BY WALKING PAST THEM. ESPECIALLY THE BOXES WITH THE INJECTION SYMBOL IN k THEM ARE VALUABLE, AS THEY WILL GIVE YOU A JUMP BONUS. BUT WATCH OUT: YOUR JUMPING POWER AND THE CHANCE OF COLLIDING WITH A MONSTER ABOVE YOU WILL INCREASE DRAMATICALLY. JUMP POWER INCREASE IS NOT DISMISSABLE IN SOME LEVELS, HOWEVER. TIME ---- YOU HAVE ONLY A LIMITED AMOUNT OF TIME AT YOUR DISPOSAL FOR EACH LEVEL. THE TIME REMAINING CAN BE READ AT THE FAR RIGHT SIDE OF THE STATUS LINE. WHEN YOUR TIME HAS PASSES EXCEPT FOR FIVE UNITS, A "HU lRRY UP!" WARNING WILL BE DISPLAYED. YOU WILL THEN HAVE ONLY A SHORT TIME LEFT TO FINISH THE LEVEL. AT THE END OF A LEVEL YOU WILL GET A TIME BONUS, CALCULATED FROM THE TIME REMAINING. THIS WILL THEN BE ADDED TO YOUR SCORE. YOU WILL GET AN EXTRA LIFE AT EACH 20,000 POINTS. THE PLATFORMS ------------- THE PLATFORMS CONSIST OF HORIZONTAL AND DIAGONAL PARTS. ON THE HORIZONTAL ONES YOU CAN MOVE NORMALLY, BUT WATCH OUT ON THE DIAGONALS; THERE, YOU q; CAN EITHER WALK UP OR SLIDE DOWN. SO WATCH WHAT IS HAPPENING AT THE LOWER END OF A DIAGONAL BEFORE YOU DECIDE TO USE IT. WALKING UP A DIAGONAL PLATFORM CAN BE ENDED BY RELEASING THE JOYSTICK - YOU WILL THEN SLIDE DOWN. SLIDING CAN NOT BE STOPPED UNTIL YOU REACH THE END. THE MONSTERS ------------ BECAUSE WE DON'T WANT TO TELL YOU EVERYTHING IN ADVANCE, EW WILL HERE MENTION SOME SPECIES ONLY. MUTANT BIRDS: THESE REGULARLY LAY EGGS THAT EXPLODE AFTER e#F A SHORT TIME. THE EGGS THEMSELVES ARE HARMLESS, BUT DON'T GET CAUGHT IN AN EXPLOSION AS THAT WILL BE LETHAL. SPITTING MONSTERS: MANY MONSTERS SPIT SHOTS THAT YOU WILL HAVE TO AVOID. RABID APES: YOU SHOULD SPECIFICALLY WATCH OUT FOR THESE WILD APES! MANY USE PRESSURE HAMMERS TO MOVE VERY QUICKLY. OTHERS ARE HIGH UP AND TRY TO KILL THE PLAYER BY LETTING BARRELS ROLL DOWN. THESE BARRELS NEVER SHOULD BE TOUCHED! CALL OUR BOARDS: HIGH CRIME 2 (USA)  PERIHELION (USA) THE BLACK SKYLINE (GER) MIND BOMB (GER) OR WRITE TO: VISION FACTORY, P.O.BOX 11, PORT NECHES, TX 77651, U.S.A. VISION FACTORY, POSTE RESTANTE, 8450 HAMMEL, DENMARK. NG CAN NOT BE STOPPED UNTIL YOU REACH THE END. THE MONSTERS ------------ BECAUSE WE DON'T WANT TO TELL YOU EVERYTHING IN ADVANCE, EW WILL HERE MENTION SOME SPECIES ONLY. MUTANT BIRDS: THESE REGULARLY LAY EGGS THAT EXPLODE AFTER% o Keyboard - up arror to accelerate - down arrow to brake - SPACEBAR to shift the gears down - BUTTON to shift gears up HOT TIP #1: NASCAR drivers turn the steering wheel with a short back-and-forth motion (called "sawing") to steer around banked turns. Using the keyboard controls enables you to come closer to this technique than the joystick controls allow. HOT TIP #2: When you want to feel even more speed as you fly around the turns, try playing the gametBt steo 6 for disk 2 STARTING THE GAME Password: REMOVED BY RAZOR 1911 QUICK START RACING If you want to begin racing immidiately, highlight Start Racing and press enter and you will automaticaly begin practicing with a Ford Thunderbird and Bill Elliot on the Daytona track. To get the system menu press F10 HOW TO DRIVE YOUR CAR o Joystick: - forward to accelerate - back to brake - press SPACEBAR to shift gears down - press FIRE BUTTON to shift gears upa %2nBBtYYRƯ#=-$\ r43#\1Y=bGOSpD;lJԑ .-$R0jО(GhL# db}..1^@MAqi +pJ 0 L KǮs ֠"*CibX%ܖ)8GEQ){5ur2d{uzmHߘ,R[̈=pX`2rŐlKZJ3SzJ`W1$m}b0 !+^71 z D:hkjnK2 #1qH#bLEAL)EL.&j >Aܓ=k`j'dUDr P DݖS>ҟhDb*'H!04p"(#ibm XO sJeokc;QL1MG7bE91CQPp&RIRE@Sc,%Ec (KPa՞84\  ~g-Q!U{CQ\~BAetts>?j=!zn8L16 U&n5͐Q=:ZzbDzRwHd#0X I@ EfgaP!gܶʕ=n`QIKm0gѼ#!pfP~mC*e8ry^a/8n܆f%Bf7CI$ǭ30eY8|i+޷Mue%T, Pi1Ze,6K.N90?|!gӣ{MB@g45m0|uЌ:? -80cA2+.Rf_8%5=ZFV,d5 윜D}EhsDvP2rQDM]m4`'1NW49bG pQ0hdPR \\\:p5Lllei],Me"tN#2/`8 J&Ug4FÐS$@-388F{#+ScXWrru3'sSZZ0 FޘI΀R22 OgcJx2rr0/ x:XX);غx1A@ǐL`pҦL#b6{H4O4Yi%Bp~> ~zZzz9{FIbqih=-$f.L3/&CaϨTfA!.Uxk HADN'T THOUGHT TWICE ABOUT HIRING HIM. LEROY HAD HIS WAY WITH MEANIES - LIKE NO OTHER HE COULD BLOW THEM UP, SO THEY DISAPPEARED WHILE LEAVING BEHIND WHAT THEY HAD STOLEN. HE WENT OUT THE NEAREST CONSTRUCTION SITE RIGHT AWAY. WHEN HE CAME THERE, LEROY LOOKED AT THE SKY AND DIDN'T BELIEVE HIS EYES: LOTS OF MAD MEANIES WERE RUNNING TO AND FROM ALL OVER THE CONSTRUCTION WORKS, STEALING AWAY ALL THE TOOLS THE WORKERS NEEDED! "THERE IS SOME WORK TO BE DONE #Q"FprBҙQD#A0<aJkL<n|pfA`AaH`.A\a<`"Ala0C3| B$N8CN>a"F <N.pNuv$",mN,xNuOAQa`/C3|N8J f |f(3|N8J g|pfAt`AaXpNu #F(3@#|$ #@,N8 <f 3|N8C)NupNrfpNu%C D |B*@N%@Jg"JN`A XB!H NuH@@J g"JNp%@%@p*NLNuChecking Clyinder 00 F4 All done checking disk for Saddam vi$=rus mutilation * No disk in the drive, Stopping check now 3 Found an Altered Root Block and have Corrected it O Found an Altered Root Block but Disk is WRITE PROTECTED -Block still No good- 1 Found an Altered Block but could not Correct it J Found an Altered Block but Disk is WRITE PROTECTED -Block still No good- . Found an Altered Block and have Corrected it *Can't open TrackDisk device on that Drive (Can't create a Message port for Disk IO (Not enough CHIP memory for Block Buffer )` USAGE: FixSaddam DF?: dos.librarytrackdisk.deviceg& "gg  g`B`g "g`BBL |CINh+@,@N*,xA g>"@  DF:f,~)0r <N:,f@A`A{` AJ`AaxJg "F <N.apNu -g$@aHNuEv(a+@gA*|1|0!@"HAr NDJnxR|g H@J@f:AaA' H @(0H@@(0aAa0<a<n F|pfJ |_> | | <_ | /\ \ /_ <_ <_ /\ /\ \_/ \ \/ __> | \__ | \ |_> |_| __> _|_ \ \/ \__ __> __> ------------------- TYPED BY: WHITEHEAT THE STORY (v ------------------- --------- LEROY SMILED TO HIMSELF WHEN HE CLOSED THE DOOR BEHIND MR.BOB, BOSS OF THE BIGGEST CONSTRUCTION COMPANY IN TIN TOWN, WHO HAD JUST PAID HIM A VISIT. LIKE MR.BOB HAD EXPLAINED, HIS CONSTRUCTION WORKERS WERE HAVING PROBLEMS WITH THE MAD MEANIES, NASTY LITTLE BEASTIES FROM THE BIG FOREST, THAT INVADED ALL HIS BUILDING SITES, STEALING ANYTHING THEY COULD GET THEIR LITTLE HANDS ON - INCLUDING THE TO! OLS THE WORKERS NEEDED TO GET THEIR JOBS DONE. THE MAD MEANIES FROM THE BIG FOREST USUALLY STAYED AWAY FROM TIN TOWN; INSTEAD, THEY USUALLY PREFERRED TO STEAL BIRD'S EGGS, OR GENERALLY BE A NUISANCE TO ALL OTHER ANIMALS IN THE FOREST. EACH CITY NEAR THE BIG FOREST HAD SOMEONE TO TAKE CARE OF THESE MAD MEANIES IN CASE, LIKE NOW, THEY SHOULD LEAVE THEIR HIDING PLACES. LEROY WAS THE BEST OF THIS BEASTIE BUSTERS AROUND, AND THAT'S WHY MR.BOB *f6ء 5thsJ!4âl*i\{ O- 9 @Zx߬_wF)6I8nW W8Qӗq'ZOM煘ht b^`Y@]_ 4q^h1Wv`9*K'(ˉ4M v-𓒎frVpKZA}H#d@;WD}Dܨ3 Ik'RAĊ׈֌PZ[KČ= :R1\D{h\m!{.7_磨 e "`#iIf?tiA֒=Nw_ҫ-y`amee'W@WNb|4>b8§G 5x%ֆҌ4]=SZ{_y/T>A>R:&#AAD@ae8Z ,TU 4{̯/$D?/Hit͋6 ׇ"8bsI*SggBfl/g,5)T88G(k~>_q!&T#}'wS :Qf9B8^`Pbr"Wɨ)i-LAP] %D*%04"8/UWQ,neZwgՆuq$8(ISƔ~Ⳃ9]RhZN{MШ©>~ ^̄`3B22i ,'y3U܍: w`0(gWCam Z!t&bH0 |<k-M4 Ni.#C+^gU\1-iH. 6@H!»=|'RJDR;+腑惖\[#s|0')ڸЌ{W8A T9OT1-h;h&0#1us4 '( .YAvILRO(ڞX7/EQQ@Q Z4 _d K $ Oԓ{DQ)`\3&|%`7㉛ĭ!`)~KR#K:+zOc&h-H-3˄a8(15!eF=eob0J&%(֐(R<1y5r3)KYN+NEhn  p(Pk"J!ƞ?K &8hhZ_ BQ\#HM-t3swxƛʞLK> 2JJb*<rṥFtdt1x CIk( ! F 1L[. |G{_IvDA,;QDC2x`FHq75}J*d2#>GMB  Ap\E@ >eF`f1pF'F "W!Tl 7Zji"Bs.)C pF.YzoD9`(F w썁2<铓PWC .+Fzύ~g­@D0!Lp`Tlo/8WPc}(V'W "&]Ej?;C>o·0gQJ xTZp o yF=` ׇ3<'!'`/OO,ǰSzo^'cЋf]8Zdz;uUJs,1Ҿ4G.R_[BU`FQ>xp d€Yph 9qW^P= <l/Ʋw =~ä[P%gVpj^tC3WciGXx|~ NJ4P6l&.ЛGPrlh60Ap'^M- % @B%U+BAćkT[ß򞠟`A`Tnlo]譀Ȍ? 4x~ t"jaT2H7=WcoEry\= _SvžPS:vy~3{s!=^6`{SW7*~ӽ2r 1ح#\ yU,'PB[d>ӨER)Tn&PJ'i.P vQG2 ?8:AeiQUucehB0F~g$ar5L[8xK#zn#Vnk'C!&Į6":80ke 70 D;<3ٕAя`HG0Ym\*]jl "xi=7OEV3 ,ruZs6%X:ܫ%w pu&(R8b$y( YBzeGC(%I(\̚Mee% 8.n%h厙SGWKZL'{[!H8/*Tbe+'Cm :ҹ ȴN7FWY=k$| #. 3rd 1AwAq$K V޸ `'1f#TW," *ab mz=Ûza;k>•!Cd)UQ ʉ}`?vC9C#SF2e*h\H4줫xaz(@#@LA< AMJC84dh0Ah!sAe-Ğdec'U*K&FqĮ~deapC:y%@ |7!֒d=5KS;C[^D)b f K``!<4Z=eؙh ܪf6m;hP&ҦL#b6{H4O4Yi%Bp~> ~zZzz9{FIbqih=-$f.L3/&CaϨTfA!.Uxku 3!(@?x?N4 .4E"iag8PAE6Ô-]aoZZ8_?T(8 \] i4+b6##6 %u{7ׄ$tcilii qm% M)( IyhH`?S(lcAY8O4W';^ֿEdy83*fe˱&Ls #R]2*/omc04Ts}_jAA; ٝ* X֖:{dp*9TTd"iH%j- F+b}lWƦ2̸Mx$쮐8 zȆ*~_ *Y_$i P>B5\g2m_W5 '}!KֲN5QEִ+F|i!e@5lA0D&kDfC#DؠjbyjDodxa@Q)A>D'W_ P0t0S^`|@Fp TO@N"Pn @IBmlK:ʭm]*"[絴~BJB8GÏf#!8O8 )%|@N*<׺?7`[Dy\yF͋$ @ oTZ8FOP/IfhPVK]%YF*PqJq\Hbesт6HbԂ~!SmZ9|UEc̉b!Ay%23@ א&'ShC4HA( B@! מq\(SNm&b6a9np鈄pCX\&7(o fp(p &q) Ʌl OFzql$G&.Q16=nc=,E$jɉ'P}b+[& gHpEfЈΓ/1b)l/}R&KTzebh;Dkd] M\bڧ|XXCcD&!TN??9#M@9SCypW8/kdk@K$/}ÐM̺ %43d"Ԫ`!%n;CwkM*} ?/"BzP`rm nF#`<)LPj.7]Eql,B _(Ȏr{ts釘5RPPc]ƈJM>ywxإfPF#K_Se4~ cyx̫֘r>`}c$}L-gL/:H'ƕ\4'9I #a 79 `H>tvp2WjQ*<O+~*DD(( z9Zp ˉt?= !g/93l!B8/3—it GlT}Vyc0G Q B%Ί;Rt!h%n-l}IK y_ ,'ߪ# T|$N`ܛ%rBHXv@lD?{dsҡT22vB4C&( ӾggFPR,@W[KҮ"Pl?&7B#;Af@VٵA>D.՗nCW[(`Eb0$AsÐ1 Hpq2h(ʜ,NqAr 0yo*`n5ںH>PF(@+I{-R̵L8b I;94ˈ&2ad=yc?2PxЈK} -"a= O?9Sj_ =/t`, nk%dKTo}ޠ Vxq OgEN0*>0NAtf]\;q# @#WPvǐ%`pilaeM I^pnɯp@3L)b2|be(98atn0J8-J'PEH7pk+7=@K$5RX!ߑd4;0|Ɔ L(8K /LFV\{qk1"ui)>7$Zs_<\ [ǺVBR5 grQ> 9򽉗VJfJ |14+R?PScMKcnr24|s_~UYvN֏SCc(1H^>y G<P}w4Ш eънpAd)e#4H,ty  FפHc׷a/Sc[Ѝ ֗&e*xYeG;»G#/T22%umC#KG0I ^@cu=1 d}\@f,;gY@J bKjXX9[WSoe ; 1Va]t2Wg(,,"3q\ )09 e;CGq'1.8~D4XR8ɂ=xheh"%ĭ0K/O(:糈J^!('%/wrZ} "B[$SHªDbd:pã_|/o,9Jb,hP9 @o(go .~Ap,i?I$rlD[{N혂ji q~q8f pzӆ8.??"W(!앹)hS7jdK>w`+u.,M 뀀X#"sZv6YHYHAQu2aX X'd-\^3W&gWpe4.O}p_ $`PPS*zH`0/:,MBs4L)З;vW$ :_9n11V{Dt2pHa\U=0=R1JˎxF4 b?ﰛ`gT 5Dv 'T򻩠FJ,eD͏hvO%֨PpE6^$ˆ]7Z$-,F^q+0Ox>]DU s>%$\?Q 82'.e  m"P,p1(`&Hi( (ȿx*? %&F=S#"D(P(OtjN@=ZE w¢@/ȝcSH GZI([{"^-$• 耰1h\(+ ?yOjcY 7n Z='P/dAjX{[s`DjnIx$a$-9h0 _$ '!ǖUjLI;t,-1?i^ADNkRP#l(?x羂?3:?{{q)Rr@>5,)PusfPP;C27 A(IA3=ePA)))'ݰtúz TGʰ]*}l6Oc# (l6QS%&>x cjclF30qjB FGA<ǖqh_ر u K9;Ja^[2t1$+\O>N.s,#lXEYix]a.tV 2ZPn :,p0֐ftd0/oN`a pgǶd|uFGvϕ3P#AUX ppn21]2$h!.~vQ-[;M#~O(O4ٷybּ!I 27`:5"ހ?2N fA'-G qj*Jj08 02ANх@toD1Й$hX, q.o!xڠ&Ǽx,&:M;Of6ýf| !*f #ʣSϲĆ/-(JD1?S ˎAF ~JX:zB{9(1SS9`}0SͷqA;+_pblS:#:Cj$hh /(߂XXسE?*c$o%< # AɌȣ'`"C,T`;  3"496B"ŚQ)% +S!oaGwلPv*D3eDhE/ePG5TѬ.kOQP72qv8 xV= ;{-@x%Fww(485U($~G򮡡r xA w aH7# ߂ 2r[?KB J BxV޼3+9ACL4RO:gH@4'َ=? t>Jd 3\BIy8oܙl|ǎ/  %lp4(22,iokÆf7} TzU W#Dv>ʧmی$GUgOjO%>( ͐}AkC)=c] [: 93>p^pS ,2o c?H0e8Y T#J!gg^@h*@iÇbk+b Ç73L<NS2| `+GvuPr#i;cz ch\!x0y"ǷڻXe R0(_AB{$*t2(oE?0ÿC\ fp1P6XX~ 0Ll0D(d5Ƨ_ܖqz|P2 x^,֥{)qpsFiQj/P=Բ^D&I  CI_wx y!r#RAcpb }j8+eE lidˍ8104X[;`1:ewx2Jn#8 Ė?nBUZMaWI+a.*L58P ]8>pPo{'QVfOx[ `m!k@p Gkh^鿸MKEBTⷽ|4[Z4//}!IJ\ 84ſÓ3 '͉LaΰMnAg˛G7  {!:`"x!ي `. %j%BkK%|-` )iDF,K hWƘ'F(./`l~ c+m#\Iz^02ssQ>pWB_,vQeJ tK<`# #3h&c! rÿ;r~Кbx^*Qb xfp'%J0hXB(Q@ cS~ Lc/ c<59 C7K=s=Q2tڀ yqt}5kg锧;ōPwpWGh"b/Stª79eiqaUp6R))n% '~_(ADBongb =3 DSB?PI|xkh/QWKrE;{/JsbP2A|b!@II<R0D`(+AH 5IEW0n5Fdu@ف1 BCucJ# tB "0j 洕UIx"DB;9O|fy!n"#8:1`=v$o N͸ 3Oiퟙa?x(&B`QP}_4-X~JߩtED™x hO3t'HI&"I^6!#u…Qm]P5?y.s*v7jtXz9j,xWF2lzl#bv5, sIlT IH0(pLTĩv0Yl,XD_+!mzc&5E KyI#~ԅ ѯX fXO30ipaX4 (]30w|O Ǒ01qb(0wlB('Og ւݫUFOam]2G6TD $!^{3`/S\E[xXY947.Uǵ[ޓyXUGc3gAY?v|4Jp=Vn3w:&&\]BK8D~vP5zt(h ǰ-Ix--̞> ~[n]@nt~xa v0C6u؈_=ZO\?SoSe ƅ^ 3:Z"O___rr:--`!TN&1@,-d>%pS|0د>ӹp~w'< 3OPWc,J爎ah4/F C}uT0GF>`+ %Y`ƧE{g  C7"|_B!J jd9T K2 IQ+z e4~0,\bIYDA0na Pp,ġɚYeY+ĸ0*NbAP-/ctqQE 2/O xLg 1 E7hľ&g?P(]-Cw P{dfںE(\(<ui1]/|27lM4=8/S.%-lz1]g^Nh @Bx%}y9 C-AA7&Jg) S J4P_:=lm)F4|K1N>VIo[t&Ty|.43b.%:Nz+ ?8[ӆ@|t2IEnø$V?:% j x1cǜ@&T&- -Eר\*yjSHx1bl x98#$nd/paCx#p3/| nF{,g}ٟd$)SFH >(aXMa@_&63\2A(,A;+riurs45w߃0e@-tz0`r{@m|?O.6gadƦFh%)7 xxZScJ87RRhi4[FTx|g.J"(9S(gC0C((ޏ Xv\*H ^ߪ7Y$ipm׼]Pr U+fp?ND"WS7 k% z)w= 4@1B.Wyt&F Ō-/9¸[Z85?(#tU}u?1(`O|!YQ#VAƝDiI `GFAZVqCioGOh $No(h(}^QFģBO=L,7?!lkHkXdSrAa䮻3! COkK"iq7VB vRBa"E -dgx`01@fLNǓDON(J*0 V?3Ylp*z=Lxs3Q-% (f - ]c >0.Gd)8~jz@P*~ MJTXipўC0L pؖRDc9t/f|Qx]LjL+]T 9*BU[sGBH^]AJaVDY#0hSs Q*lBSʹ9w m.|ӘGkD64\s'<Ј9PYHNFfo>:=S4Q=sPG7#@ڱEtl *SO͐ A/b`!ȖNGaαAGŮ4s S{K)%(_A%X8[o=' d:(^f xy~?h la4/+өzims1YŶ 1::͛b6 O;r VB71BbNU h mF[ ezs ~B4Xi?U]p%v֛".p yYT;Wh*?%Eg QpTC3xG kiQ*ۍa[.Yz>m`02B -gA(M8{[Ea>0> x߬`{A B]3gј*}c?T0\YA)?QwbǸ$ Nv}:1 ωv 4ޡ)[n4˞I 4Obe-̍7r*14l PpPP  烺~7ᷠn,qǼHpN={a!p54nm7mو ' ΄Tkr] CsKA ѕ}!?IgW`A(0b~.ShP M@#ڴ !\DS]+z:< .YQOg&N[`Z}r ¼na0Pƽhph2y}'c2_|.@Q ~BkvV$,Bk`θb(~'D 0PL\a0mŖ$8y9BЄ`(& zpG0QPRe*$?Ҩ3EyZ}Ck#nC]7tOI\nYz'7-8H=QH#Rg2`,\*'wI;f=M Q 5bxPoPJ P&ߒ<>W'BbhL(@m›_}i(f ]`r<⍚w QݤxKQ  K; H0rBh>_VtyPD~Ւ &`j,W5Tt@rRVwo329iQ`|/A (2 σ`<mޖn9='xA2eK!ߊbܸ:ZM`I߾tޫ-I;>A CO%‹e8M a|a- фVϚ{ {t촣,C9K&R?`j?r cBP R 21!p9>__._y{)SYQԐO y*O _. cVzȎ 4 EĤ%~Ӑ7.AZ0`.QB 𫛚AHeJ] Aڑ@'bMk U}@ X') V_ۍeHq.C/,qT"at&ٕyOd'9oLtQUNO6*x-m蹢9]}OSP|utTuŸ1X#{*)LV6#H<$IPCoGO)ZE+z OEhČ7҇p  TͶ#l6D14ks(; U(*X^O)뉉~0y N?JlbcFbggDa6#n6pFCRA,a 1ӓFC`mS32-a&1 .#>z$`KqJtT*-!B@qWa 0 4qZ~=B"mvO}&A4g=2 &Tj waIlQkC"^ya:[B_|srrQ݇.,"$`_C*i)ŒXyA>.?-@z}my팥;O+@|eq`[I*x?X+,iV7t}xoG ؿ/b{ tG8 Ff?BI!B\FT\-'XPйkF = ;?ATw|+7{ͭBj o>Xᐮiǥ@In 9D"=PMEWG6t y߬d(Bx>AZӄF Ѵb7jaa15r 8OΦKCz^Xlus jx")d|͟/<' AZ\ҐG+&\[%cX8p3*amXb-%`N[3w `H`4&ըǕ!4@:gby8z" %DEDBBeGA@.cvP@̆ KB'YŢ? C0v|^Rw6@$Ӽ;Jf1d4#|q W!Bkg(Hz@D"QON/V6C8W`׸z8"80Jo#hfãr}^^a$t`R0b)eҚP7^oE pB+ G4­ž'WT64081+c)ϹҾV =usI.`ul1' r kmO⨀&zxNGguj@l/:#bR# %Jt.JJL}V)U0"cBl:T ;hi-]/c@CvPO;8ļVg{ o[y򁲦J)"V0S D/ l_# pl~^-oǘAgwI(cx~~`lyM5 ȞƝ<, XaLV&O(?0k$rc뱟h rYt`YF?pn lx e]<@[>r[ۇk7:xP̄n5Ƃ 3.#~WTxc.;#rw:B*Z,$O1A ,@ ;w0\k 0O?緿S*Eh$q[F^OLa:X²]oIe-hxu­//\9źK:zU V^TCMk2~Ǭ4~[iCР aT`xV~WG-i3s^6bvnA@<(% PsZCjI$:lS xTTz [}5YRoܿL7wvN Erv5aPC['{{K@6>8h0"<2.e>~(P`Z˗_b>#5$$MeJ_( kRO4hf*aSQ$H8[9b6X5:WFq}q<^K"T1YR3ѤRjed#뙡Nx6)Dad(孃A^g8 M3 \'3糾c6gBv}>B0Ppҕ&UcBL-;Q, CtYJ. |iZii(sr5ņd'H<1R¿3 WRBI)%/4\e1LfFϙ OY 03~%]XZ/:Lx{F0GBŜ:& 2ƒUU}*f-0|9$W@of{++#!?(:D`$|IBHU<t1G||ȼS(F9-@=ZS+AU!Gh}5Wߙǻj+zk-l}/_=Qx" ]z[6,Zp4>g;JI'•Q4(@*P[΂q4M3`d eiGƞ:GF$EZxwĈ[t,Xg#G&>'C{M* #3 ެ|VHL),Jܟ)~L//__Sr.:8ho&Z֮G^B*zn grxAp"\;R SM%sGT ̩~oV pcLhkBQ¡|R?ASF8A 0#ć榧Γ}:>?lZ6ax.|0XxR_vO 2) Z[ ]P(ЖrQ(| qGpqP0E mn*Z  ed,Yr!(1gS+at2z#ỷط1-4͚n{iBeO}6oyEG o"p0G x>z*@[wqKX D>stMYt_!xIVlBs> xd1H yKh_[/SwZ& I-z^x_K/@V60`D!KX1]HoAu47 N_Bzf@P !wY;F3C /*0os8cT:)+gKq3n++{bҾC:fUڃ?T-d_kEDUa% _Gj=w呅FnRiqЦ B!L^ $"H8 ( _F!rR!<8$>  8nrU֪`y^hvpT֎9(Qa) [Dpil %VØVQr=(aFLP<>ЅޠM> EW-l0 vO"kPd?[ҀS; C{)n+DVwSHYr jŲ 3UK|V doA20<]AltUzDZ \E`u26ttp 8?2] dߎ0yt ^`0g,౜F9Jwe-i6Sr5T].F%MH>e'ty@?(, naJVjz7C~b<1aS˼4} s%doX0c:i%OOB"m43pt< M`(Jq(G0AXNiazyL@[ˡվYbs͟WXAxleJt`ԙNMV 4`g^$ X.$ C^T•3P:#?_Ob)s8V`9}QxFnl\)' DFόK"U;K"! A'?n ^Mehʖ"4+v)@|ٔT0=A_(x)zw} T=S,LLT%A[Y@ '+">\l\a<h{t x2d@Pw@,4 1z_0m{{?^[곡R/Do9GDf6G"?BC3 `C7ͫǞ֧Ê].x@G!Y͏bzZCcKB6.&$9$*MVɭ 4@2$ Drb(%Lp_9X7[쐚 =@j Fwj:7@>A Ӥ{C1SNQ=pvPtW Lp6, %ODjhT A:zn2 ფ-C/S Q; U8h\3+8aT8(P#bjJ#(2DPbXi3QR $"žVsK2Pc?.=8qb (A- NŁ;CO  @ǥ;5i4m,vX{Cq | _6!W |9x8ƥ Fsցy𲇇raʲ$'?l߅t3QO',#IDCzG22hT/ Z<.Oߓ͋P >8:C1|^υqjzEQo , PΪzH (sb=]0vw souk% Q(Y3!}/n(>?DUKsb\l~k/k,$bx(7Wn~RPBlGMҎ3=9|J0EYHa͞{|@mb!2+XeIavZ%Ra[SA?PTgS` afGn=Қ25|`i%Ok@;Ș`1{DB+vVS#& ad[ fŽͪNo~5!ZS jY!qgPgZ0?Md1ԍvr!?$4Q>͢5g7 \T:E3nMF09ɬ̄Q !# O/W"N/yM(H;#$!aזgd3–<肀 IY>1X=9󫃃+jzϋGsTt[wDer\?P59bw?eW@aL-e!OzX5~Q2Y0 -DF31B<;,gU=~60+bQ1?Ҝ1-j}bѭ|YΓfx]cPsBM;ZÆ])812ƋÀOT{u(J ñ!<3.MVs2-3GʅpOs>N%| x6v6l0e˰!Ȓ7dm@:Akkema(#v8fODbzaAaTUĩ8Wc>齕#>TElCD4ʋ9Գve@>.JB\N rrl&c^*1s2=zQ (LZ0Lȷ4 pʩqRyPL񁠦A̬,r6b?,PNN 3D%wf ߛ۸"^yue G0O{v%/‘r)~ $&Y^GZ u`䥨,ߌ s|366a\:eڄcW/@ e ˼grnCCp)zM x4 1e&Tp)hgCDBG|y 0r'QP7fODk;}q9'2i)ub ց\n r)EcUwXeIpm lew_ gd& ̤d$8zzn]PHmG@U78k5;@d6'Q~1A@\fMSZNh [&7#8PVbahayنV1sgt# [Κ_[ի(c ц\4 Q#<Twpr2^,0`PE]# X(6~& xgq_aW"-#5YbF=:}O#?y{=GKz;VXYwq(nc%4ςv~5|S8]6tsMBDkD\NBB,}aXQHS%-Bg@LѳdD"-;|!KƄ),f]aM#]TI sȒ?Vr_k?:q+]&3YJqgC!÷ppm kY8{GW=" 2=a<9fFJx-? yi@X)S :zH3gc-J@6NP~T1A25qE7$y l Ԁ0 mao Qib)a8!ȭN`ަ쬁6{` X L B"֠WfNC"HZx _jX yhNPO$bqZ{jAG@S>,)U1>_zJ֦' 6r|Huz'aIU|O 4U5TÜJfvHL9ͥ; x6?c[簕6=< ʑ@}}=~l'Z>Ӷ~0A/ pEUpJ-jB2EčKjG!ا'voh \׊2RTCQ%c}`:uUtWk: 0'h5 >3Re RH"%4Z?Ӷ7+Y~J B (]u!Dj1cBb0X1J>_;cD粣KlRʟE)a5ԔЄ2g;8m-#&L O$|zi78T {0Zoa$iŐ(zo'{O6رPX<)}R 0 |*x L0Y@3Jڞ@4R5VYQ?l+UcUwop2.ZFf/%$0$HB@EB1&v!< (CCWZ!;b@Dh^U}@~ĤZ=t:)645M =:|4uAI*}d.,Cq{jp؜mY۸}>L&K-;-D(}Է hu[UlzG_e`4es ]9tX$s.PO-VYaNmiN 9H]$6^!_|t@K` |!\̳ PJ>ymSG)G`3J~)#ȜaUgfX]z뿙jÈnA"?!$!0Hq5d@a58=FW3rI*[ !dj`(A#CY{E`Ye< rRC2JDU8c),x^~Jxf BÉ yiS{9o%L= 5*gq/WpNjѷ6Jrp 'ND0`9c(2tYԏe:c;PiA +CLz pwں$zԷn%hml|o%#(M)o5f=#$}9bzcdS>Rʹ&;OjZlP QC\/WJ0c Ü\ QD@sl%匍@Tr-wxqȘx;Z-?Rי 2]' V祦Rz7w)pChG~XcNڣp!,CHFY SD!#*  CHR-i!lϗێ|sAo, Ɵ>rH]ξsQp l36521# 62R. )i*i6h9zq)N l=:Z`Q\vN!I`P`s*jE#8(q)FxN$<4u=5I<VS_jo6=x9qGS6,lM(%OŌl (hZM ؟>le*yBFJ[Y屡F)i K9h.:9"XOǗoh8b1OA|yyC_vZ6FpOd 9ZJvTx᳅^Ӿx  @zY}(=pv3tE)Y<}S31@~/ ɵ=Oa Ҕ3 ӢŦ_IHß GG~/%{! [R=y֓@.QSw`x4(v֙֬ <>Lr=X7]!ge'5t&Ty"/|< 9}+95\cI 4 `-`Q I`mCAOJT9 ^JO‹Z9ZV@<3mVQNw @a*9Qq܀X)`j771c\c{'c *>(>dp1f:ju(bK '~pDIp9 3Q깔=%lqa@a3-,Gv]<–q/ʄJʒr2b?Q=gFL"_gP >2 M-~$eS&al#',Pzl1[CZt2\z=ogBI aku]/,qپ ˾xfE(cL))᭲'т|_ǮݞU?:98NdՋS܁ ֖"/3XSW #l}i=@b"﨔䳠Chbhm+2]YN=~{Eײݜ~ z%,d`}e⬠8"t`9+~odCPfg-Hp'-v2Բ͟󃠘l Kr">^  gqf?‚QS` Fnmr|L5b3h=4(&\#\@0OLoE|irO(SxgN~csO=xIə6 ӫ=zhj-wC;gHA(T2or>+&g??!~"_|pIdwQ| N镝i f A*en5*W؛(UVx碅aYt>?Qӫ{k"~SJRmERCk a72yZTPa `H%1|J0_ ݕjzS% F~ S%azhcbU 7>@Rl33 0~*U3.X ApCmYPF,y-w+8ҡ6EQyv ` b5'5puߢ9r5@zns_udRhh $S6@M[L g"f%*Y $ rY̽['P2J{OAKtoDxE S]Cb.Ȗ=n 0f#PZS =450 ھ ZFUa\@zp)op/~3=Nji' {kSZ[b@[D$eY Hp?`ĵZpuH=\nkGXD E/w Dz?XMQU) iMfn-]+Z8heP3dd*qQ(7')Lkfmys%=O Z}<υw#3XaGpfQA)clDU_‘!ґ NyX wx;' KcB~fu;k m_ ;bȮE-6|ҐHvD[0O.)h s9@Й8.zYjy ÅG/]LPg ҇ƞR.:*Vɘ?4Ɔ nQ <8Nhk 7QCX&۝z*a9Mw52q`&$ '6㴴NM]>;(?;zK( psy 枕W #}Ga#xNU 2JXYD-0l&#PӞ| f߬JB if />8fg0P!b?4 @\F0@ e! P"aƟhtmO\ )=v.LJ!=}O }pJןkt$ЃHG=~XzE[{ ߇a!nn)U GD0A#Q!tph! : SD:-F&&f֫#~?Q Gf[5} wXAfR+%Do[Q#p^3(,=`#ߖ 3Dl>uX? -l&䃀T ÿ!83;f-P~9[H\!sepY4\wuP C|ibX 8JM qPvkT{*~UPᬪDnTM_7;k*(,EE{`ݘz@# APH.1&2GWT@cu*L+DM,̥0BQF_3L@-9^ KG6ď$ 0= vp9:P PyZ8 @*1z6τ[U48~j"2,E@#a7[|0ĔVዻeb%jB];+L2G0FJ5(“hG0ǃ|⼼40B(94U=gNE>=F(xE!F O|D殖&0tf`/ST1\H~mr 4a)6#8AU@V]x,L ai`,+}1MBʔ踰'=K[,]lmI/D prAAubM~h6p%U 900972/R 86eֲ*.'`gepVy݀"EN $D1Mmz)׾ψT4=1`8| 9ro= qʏ%BP<%2>ThlHޖKD틙>qxx7oi҉څ@V4P|RDAB@Iv!O0?jvvQ;2dܟ ~!Gߖ 3!WqL{&q%]ݩT-%iz9^ηF䞠'Moo{ 0WӪ;MJg|10;yAW:BӇ fki%q3IfnV mI9z ]aTe?z>޲z_/xrζBPSj8C3%ם4>Q<0U; /&aB@Zt*?,$xO?夢Wz. EA\# E^-,ڴ`-9 M |Troќ_x:<7$)Px+ 2cw!6n2k&C,]~E>*|)yH tn ֐Rd*$ܬJ9^xkL1u zx+@Mo"~Hl²G/Ggv5r9svrFM]sҽeSh\ F}ʎ[1|aL= \*䭭TǗ x V~7Hu|XZ t5)QMw(\/MKѤPNҫ23Uґ2d7Tˬ&3*UqoQ/Na,*%X(LV߿84%@v-۫P Êbg|)u0M'd d[Z?ÂYģYSa|*g :ʮj ayz3B-BC<BlE6W4POchTMİ1*(x a.CGwyyG&l!մUk93lf1 ^.<2Qx$^!MFm.Sɍ | n1A+rFbê+ap\L2HiS35615S˯re~`gGKY :`!7 i\0 <8¬[(Hph#hi=ގ%(T3 þĻxt<bfUL0P=,H(e8j^=DZ%x>A'ح %l,` YFPl? h<3b}jIdɴ< e hgojj)n+Dmɶ@,ے8|N!^ErcXrML̄+2w‹l+cP)_^wnM-{r(`˜ @1Y|Ci@=i2d0Bi5슚:B a"):|jTښ ,9:NtPJ}J9B}ғPL0D3M0w0V7%UD X QA%Qe^?x'uI!MAX;P'{W»A@$a aEܭw$5+VS@c34 Nh1XFyA`4B:C'\.;Zel1g\(e6*P,gbhdLrGİq^\*\OIt HWqp ԃ:¶'B AJYgj3=Pjϔf|13r<֨}*4?ADdȬ|c Ⴣ/w^.F> w~3VMo*D\.5} +60\ &9cpGV#1@')OCD \c̩i" 7*<5N z>K`XE :rC@}o%iSE)O]]Hep@EӒe fޠaqM9'<9E~85\,Fdw6N٠| J L|hk9] &7Tz?0lmHۃSZq γ>nEO J+(zY/sk8>p2|fDGw9?C:kc<033IѩۍZpk bvL8^ՁNh"à%e~\"xqCQBBەaR}:9wІooİLQbgR,:h43+AgԬzH @٧d,cN=_YTa3 ͫڄ;PƆ<''-u->1˓RLMqS[0>NϝJĕAг PAPoeauX;H2[v#fZEySHqJY5 )n`vyUc>~$jem?I 9Ԉ fO]VT ,@NN'>gƂ-+A6>O88fkr{|P]qq}';gc9~DkCJmi[}Mp2>:h KNS ot.C肏YG-bxFV+hn鱅˨>?2J5]kF16Ƴ %y紴DYVJlh>nC8!ae|=7 m$5th}xbG )gokd9 ? o{ZFt~4e'6OUJ7q舠t 3@x?u%sN&  ɵ&K<0DW`zXu%  Ѹ!vVgFb>W1Rl߿ s>< 1hs-?fk@邼dgPE^F9,^zu|XB](oaQp{0tȧ&V.ur2(2M\di@O"\B[.x8E`0SE2,ag' G7BCd30D97i~,Rpvb0_wݽH]b"/t9 pMv%A91XC nOK _ t{Lid>_RRDӚ 7(\%T v. @洎M8 dY_;ZiV8bG취Ƙƭ (T0O Hg tZa`1^Q~LhWL=#8SihJ*Rx:B%z¶  @Npȼ0OH(Nj|8*!։< K{`'`_U|/3ۺA쟑0d:\|c^O_䣜0YP\80,*i1 Y?.ς.l;xV5;İ~Z1)pl X *0Zl/QqlG`d`v=!1KG(@0V$NIO]E̪/'噡Ʈ+$ U1@bZ~ :h . aJ!-w EDZϿAG!~W$.w2 >MLq /ʟ?NBC8)G)A0ô_dk".#"Y'^8wLLZ C8b`&!R<><{+> 'l [vko!"$q2$AØmoF6ը@8I%E&3P?Q=xav0n}yRЀM' 8YKq<*YHc OAAZeC{ghYDOMpߞY?z >!\SuZ94$8\f-'HL7M 'h~c]Y:%Lc; Ėf~X;YD@#tŗTP80&M*Թyr{,ͷ;T qVy* s?[HV|Ž@XXNW#ρKEJ`0MĤ5:托M0F7FD~8DEh5?T3Owr!0-ePC;P*Z8I(4/d!gEL e Ztc?al+ۜ6rNSkS`b6#n"OA~t"NQ4'Fi0r柌`D ~,o vV"xMP@q3x]0'O$c32pt G6`m]=sTPFRN\@REBO%$eDTU~LYD24.nb83ՂR8JFs0neX\N(O_.mTr+X^# Y= ON*)0e*XVPPVI<[tD ̓8>vX-BaPXI{~nos /TN,U?R44C#? gk͂h ` nDU2n xYN m3˶(L Ў&wN?yj႘:C ØVV ?TtkA/ :A*c^*@!6(a_̳l! 3Эsm~'Jʠ_G3_ajXU'KP ~>3Xӝ%NÌ:9}a+J^fQ4]=-pn/N?1j?DVxp^#SO y#ǟ"1-,P~9Ϥ}h)9stFOT&Oʜw>u> e?Ec5\E0j~œ8'Iyo>Y>K(/"?O 1Mm`C,O~@>oDQUonv MpIr.aq8k7燄B*]q|_`8b#wֈع9UF@tݧ(!Z QV,XNwf' 1 AP\γan>/Iċļ7a%W]r Q!Cȍy^dIΈ&:F&zXꘔ0jڍ tO`vl77t22V\“ 8D#CtWn lhIC;]|TO>śWUq8vFqY5vzx锭!xW (h`y0Sx~< [YB +8S x0^vךuDT*`ψ9xX*>gW!я4.))?cK8-epʋ"FT3&gA,Ğ95OdhV)Gם\LbZL[Na9?ߒJE z)</e3.n9pq'iĄ40l0Vv=kܝ/ {CB s<#G^= 5>.̄j><]$! 3Qa153L5 6(^hc^f|"mhMezcKA >v`hm'ϨR3l|? ƶaq 9'1SU$.<ngQ;Q7ZZaL|dG׷69 $}e( ~"<[h=g:K g aHsTpNw؞,' \1ίT;CE(c2H  8H?"a[F1غkufnO -/&SV0 ZIHDL *@P"8W N^f!DƾENoxxn͢ 2;MsPs(2G f-׬򠬔瞟hYJ;+ "<AG'li8 ;ZN(m/ tE$ao>˘VK<)Ьa(^"rojENR21Nn"a^2pztl@ !'@O1]xDNgaWhTPj y%%$%9s " >1jMcHF>u&zf,um$U!ݐ=O JNxdř*VHБؖM'<`bT~0K&GƇ!>p*!3#3*NC+{,ǐڈ37M_d:ں!* 6cj?PuGE2X]?G _d@ c3셰 ^P ro}Պ+/7t- @i61Z%2nSq ,0 xd`k* WB"+%Tj3ӷ=ȼǽϰgT6=֋$J#|Yg@{>~79IkI?1a:x\)L< pxZv6"Y^ $S&n/i(SAӌ'! M`TN]-߰ĉ4qYS=>M`wZ2\ Rn_eJ`ISYp_XL#H3yvtm64J+*g>A  P 57Zзa, JTRPn/@ߡwN@ |g[W4ZuVtLG0w 3֒`OQ?q4NtM=؞Cж!G/@ӕ\ppJhhCU{ {;TzͰpQA-X=Tɷ%]W[D L&O7/p%kK!,|d#Kݟ|@ BY){ge1 De䉍cyٟqB#JO@ 5g+Hn+V{*S=yar"QQNF(H4T`7zX]Ju!"G9po= 1 }"=#sK'yFKGw܂XRy^8+Ϛ K >A n@?Ӽ_P хkHߡs5&D<Θ vZ_jjT] E 27'u|[)R!fzSQJa'S  i{V85?[K; vB qΏToùʞ#8 W;ś`uWo0WZ #"3;ӁW{~pB `P- P/'a1~LcKKh–ɿdX .CIU1QPFzt S6B¸P6>43_[fS f& l{vJm( 7lk 8,W1tD(uݦ`Vب߯ppæcQy[Mv+n[w4+ ae%;Q< :ħ#IRbDv\_o]>&@"GӚ&[K:c|?i=qC%ei9d<~y1$ÈSǠE@RN`( p9è>5!(+#E \At,考0؂ 71Ԃ;W/PIx?$*/RWiᳮyz\X,Cx<itoi6-* $˶+0r*uͬ8&Cjp`Ktra& U![V ӶPsvT[!{h wKOsЦ\[E!(EÅџ<>$nwPqΏc}9<\VVGF! \'VГSN!hXyj]HƸT51hHcp|.1TI\.o!2#`"-4>U|OD*#+޿zNP w dz .|tj?m&[@:.PHpx̴X#uƖ^tyWK#+i>r=MItW ~wO~VuC1T}Nm \| 1TDsFo( M yV8i LiՇ5t1DX=,Ol#3$M?;Aa)XP4 3P<sÈuHXǸ=$m, Gz %" 'ζ!_Dž-7;83i2Ƞ"QJ4~(hftkj܊\y.T`?=J(#e;W̕'K$j _ K(%0򅢀.E)GDI{pǃ'x>6g7~|\簔hbO` IM@ :wEWX(tq6[ (BB KZC y_cJmְ@GB&(,UyA.&=\OABO K[6<2r^F9y^tNC,`+@- kw=B ҡ-7Z^' [䒭KpH/<2uߗ$~=x/ գԏ[c[ ]@l!F/=T,_# >v/]RX G1f8G h iŒTL,b @hxa@[3"O YBib9@'34/=.rB$#y[̝F)7C^63\c!R7xNL#+-!6G[Ѣvwp ˆ-(+~?pQ ǼY P0UB;s.C!d|+1q:~{#eX '؛Zy${6w~,ϙOԃ/'+8,-W-RS@67S) !vGa7QчG^ڟ޿Ar[Q/`v kDL<$x`=[B90&xI~<6AaK2{`ήP$|A`4|bex ~h-CoԵ~(p=@xL o/uM[n|_M-<h+4 5EKt@e:1ܖGG nN("PT\8 m4[ b+х0‰ቛC )()g_KŤB5?O:ƄSG1e\D0ܺ7C3|B&eBfުV WcxR-Mpkj:PZzvF X@M 䔰_S©6{yFAZC >NO[p,O)oK/@k8ـ~F$`6]Df|` +c =nxBJu!%^h1^>O_❲ /aTTQAV&0 ZA l'QhL6@X˜gG8Q;p>Ŀ@\L7孡Nf' tw;Xe#YA~ųU~G>_aId٣Z|'`_zahi] pOa>K{Ey`7|Al Mr]8֞Gۗ9dr"v(+fr}4D 9x9mE4zSkQ0|_ Hix|@`@ڊ #|YÇpӷ $EXOP"pYS-,Lȏ,C.Ium9uR4 a x퀘MWm l倆;HNL1tuq'8Ds !(=ËyP s43)8=Nabf2u ënؙ@n><2tXEI">,F/>1h DQmf;?%Xb e)h]7} L\eiNHS^5@.ʄvk?0BQ?|=8$+,6~7% EC1t n>яxqf`D-9^?&:MX03tyZIRD8eLeƏ cJyI>1+ ~O. p. c=̀D䎏KR0h6o 7zyT؁&`- !PEG'h>88 Yȧ@5_*\ɒƒ/k::-uh642: ="DF5Ȓ߰Kh.``^q_9rZ: `}Mh@r(@ kio)dq[yWDjg*UI d3}P/0ɓRc x/'EkPB8da;pE] &"w/a{0C%%(Xw +8Og<^1ց _ z]Xo[j`H|2d)K0bH'gpA +`D(x$LaFR! wv>rCht f-ĕ%hm򽾁H&IA0:iy&P#QG2 ^tQ |$ Y ^Q(Q1%!6/lGJ SA?2I U([`J(5i!U4Z:7 _D_@˜AØr]tBczI+, Ap)~e8ɐg(J}OC YCrXAS0H* VH~ P!2|YL66@zp-6[SKgAYE<\- WE6 ?hQޗ=On@BHPd_|w%)`z8ye,8?xDzU_C?b)Lĉ0/1>'?du:7),0kBp%%ޝ-oxcI?{|4a%[0L`d  ^lX;YLg L]0'sN@vZuǫE~:&O/Ws^KtǑ))"bf >I wh`}Ʌ4P8|zv;n \{@De`~{D.;j*ݴ)$$s|!wΆB*O*[ rbIK $G ? Z^)6 ө(w!A?|0Ozo+h h}KQe͒2t TnFHw~{}ôF"m(hs@2.8Kx-Mgy3z6ߐcFIPmmLKG]hufwPG`!5Opc8Q"gWv6R9!FNsW=3tJrє5Ʃ , 8+Qu;9EP―Q,i -d1@ac GkTPw\ $f7'E\F ?/BGG14 Qv s ;+Yxr&Zxܓb#$`q;OPnLCVl\W 4rA62>Kd _NPa,gEOK]tqcή94PPp_RbX$ L# Fz& )`Q֕oSդ6;xNx= ["ˀ_ 7G1GcTTuTQ_",@v  F&2a~0M<BIӖu ۖO hC.Eϧ: ~(QZ&s>?`>v qzfT9 j3/Z>Kr(}4o P!Fplũ ?L5ys^3'~G2xI oa-OY K~;C:)'XHFQ(.q Dnj-'UxD1~}#~7"\Fx~00Z\hg<_lOخaG=9Ahꄆn0C5vpų̈́5*D@F(n;[A ˻yv_1#LK gϓBT' g(B@WH # A6`[8n,x p!F{NQ{#rYDA@*$UlF8> '@s_ٞ)`J:mip B`)졇ஶ 0HTA(߄NՄ;z'h66P6F}Gr_D6/inxBPAETN`RvP&<QT0%E2џh,7()mi@(|(,8ദO޳ ֩x ^GC@+|eSw uσs,J^V}p}hbO~`m+'b=YnҐ1:p(.+$P}n:i$pAK&(DkDj|HJAI ` '74p*`dZzK7 ``#&}-a&[՜ cW-5pPOHђ_]"% 6jY!猉h' SE*d>#ćȶ42'HZ>w>3OM>Cg M9} ـ%P۹;`~ޠ"X ZIwAP2?Ŗiߗ=q:|)gC)Ve [1(^Qxn9=@@l#vP#s9])A)c8BO!.?D&AQG,iq5t# #ªC"O8>:3 `TNRZ76ɒE|< Ϙnk1AU;},@Oǔ mo#Èߥ*|@mBֽ$}Cyi ;A)1=&\ ˥XD((Ġ̳ԲK=U9x?_&x+ӨOSCaq`) Ws `kD&q`97AdV0͠?Fz,.m<,PGX>d?֫ 1aXt IL觋H綕l_A8΃j9X.:p=s8uq%` n=%T: iPHhN_JzP)Auq2 tq1`=bĪ0I&''- !/Y#SBH "0L+d93>0=IyɹÍZ5YQ mlrdE ,CT,Pz̄F/dnL>W ld fh 6l_XX1~ks1"w\Mb8Heǰn$a\= 7i +ixxa/\P'BY1usL+% 8 z G6f5@7\Dust4GK^P()X:_ŎP&4Jg,_ͧgx<{,}@IVd=(<_gv`lGxȞ '9p{4f0-{A3E"E|z ex_7GKA$@ZS+!1Nx޺\uCmm*$)@sGv ܠ# !*Z<'Vy_~2]Z= ==9<3 O (KYȐ =7`j'>v*M gW5:#7PǩmP 1"͔&tOۏR_b.%2+|k7T_.) xF:Aݟ;sbt!!Qg^_]P]K'c'[@v%ta!Aw"UJF쳩x_=F!O[ ɡd3R`FpL?r6,.P۠[t?ƀznBL]b1a$ 8y0IQ q_wL x͈ $~[ҭVp@ckCQ+J.(9!~CAaLLX F=K+k }u >JQ2H713Z;#9e3q0+Hh`bEpaP a, ]7GI7ѡྉlVs*7_0d> ZRT8?҇Նz(aS/~`JRs"5hXI~a~:'R`WL B%Qc[J3tu;Ő:R>IĈeA@n Wnzei} 8%}@#H9*9P DpDl]K0ބzTtkbB(3lšD?ლI@Rz1$kG+˩n tӤz'0<MYÀVC4.r41d  F1U3.PZC_]y $l񒾹O>bK~D a0Ppi~!mJL^=Sw$edTȟ+;C `%lRM˚'48qb{} E(eD:6၈'hbP!Pg:|eqr/q\$`!챃0F>b~Y2#\Zt2>[Ã]k؄Zu]֣? { ! ut?y(&Ahd/? ] (.N榶8 y^&p4:=pM<Guu kcS p@9' o~)ȂhtFO vgӟJ&2+9?:˓죶p]FzGYoϐ J[Hr| Lت<2*oyu1 )#P|aS"b:x(>uϼ 9p-sc~e g._!.{Af=<06ЁqwkA4hҥ"0U9O:9WAy 35ejQyVWIB;# !{WK , GLC._( ߰<bZPQi8s|XfA>T#Yr k_pΠ(<&dڵ6ue#)>k(v@S,3"gA?*<΃Mϵg*cz\UEWWs>3>دφH(9 KXΨF.׃6FUy@PEϷo ʿ1&<8>t6D[ZTpMD? /G!oS]Y4"S'N1&DP2qF/,ͧf-XT $iĕTE~&ɌΌy,}Q߰_ՊRZ:7uZWǛ )T z3ᛟ&fd8"T.3׊1۠03p>nR@(}  P=nZ3`*^P$isy~Vp`kZN;R=ձ˒"6"H/%,md ќ2 @] vuqB2#\;?{Yت4_o!.m"oe3>}}w$~$ ۢ<t" a @ X^ʙ^'eB+WNMd;y:wAZ cB7`,K-KA"d}zDOhD| XjH.]@OyH%g{ In pAIN%mFuA=&Նg'KAaJ;A`*ni11زZ$R{̻I@o ydDaU*cI=ph PM< m-yd퍌 qyuPWKXp@H^֪WY!_[g0m&d!4,eyFsj #Zx\ !؞3pQ/uWcE6C BXBgI <ZIHJ9l adshӝjw< N.ZRۚ(ScZ ?K8۱FOsdY1QL=9Og G IEQt~и@!˛t4X`+Fw oI}TztӨS_vsmAI!ԗ%ԈrSSf|=(fLg0pD"'ZF'Z~hhn% ΍| ?dž_s (_ϴ3w$l?.1w Ju]vq4"HjHptC#`Ac,tP1b8Z !ab#4\J<))QzU!K0 š:ǻZA32c!Gƒ l0B Tk|Cg #{Zp<҄qVE@?!զ`{1 Qq4~9vL~NZPnWӨ x3:(LD''(q2kN2OʘQ:iGe4$ :7 <':uʜl ‡ b6 5TbwCf~RV\7,|K8B}'⧴X{qb  2C#*UPAOrj&Ӆ~( _,0q[Z(-*\t³O{ֆ`b0~|-拃 `\x U)ֆ +w\R]]|ڀt`!\lJpAy)l}>07,zDO:MBL2A׽q\ AVyW dbWd ĵu?ywӷT Ȅ~/(Z\BD-@aЀ§JJ+GOG9IzF2;UCПͱ€hrKv'9y;O1˔˭]x>s'4 g05@-'߿?P3"z& %Ep}!O )y@P)TNerC>VlZvc{BD($/`>ȧZ[\ևʧB\OIe 7ϗ*Ǖn=Q>xs&"&.b폨3<0K%Ϋ%5tanRT[n@f{tlO"|)|x5tgav-0o! OMd!r? ?c^u'JdA렏;K33/1b/cB;%SNJr1 `T!'K/ x.B2;sx.pXIpN${ݠ i ]8LAl$%ZOLQ.ƥ( hJ+87ˆe#SSPY t*;?ͻi\ ȥ@sȨ_jN0KI&Ti&% o$`QQlUP H% )\. +( V(D0Xfv\E֩:K=ख़mQVikY"c fi['k}Nf}`&ӚNҤ;Gi3kAoc p㓐7 rղSu2 րbJрvL3(8Anh< :f#$L@J ^;vpBhXUn. 9[%[Ξ{drX/+(.XI~כ߸9H̀@RfE,\>11;PÚ8/gt] }4$GM}2$@f&R`PÞ{#Ol3%S$q8~BL4ØR(w)GE@s 593DʂBRD`J0cٟ'@KS??:~re%ɝJv>*iK1ZgW9Ǿ<| x8*hخ}8cDŽ'cN\ (xsLˑmѭ5󋟾C? G!1LH P~-P xm-lyg }suEXSp\ACW+2•~I_??Ǧ㙟'r+2F4 YxCõӛ>Y9!.5 !"+g4jtx^gWwb1w)+4Ġ}|%hHД?;T=;L+ ~;86.3s)3elW@<нĢM  Eap~ˏ@ۉe8 nLA*k;{ĈSB&҆B.WC,!x*pK0+-'k׸М|@X(^5-G P|nCPHKlBb=>&.SRN>=vޣQ?QFA>l~X ]02FD@eF=G730g :}t4o~yh?/mU2!0< AP+ Q_^{`sDFg@M x5gίqK%lX=dzCd^&a0)w.>As*PEUr8@:Z/]]ɁSj4^kl'Aӎd*_%pʒA 3|-~}ϳlժ,0:P +>7K6N, =p) sEg\?&fd9AF60YSp(x{߆Q@p-L1P AL !.i?=BXgP?jx"W6M'T aBJ'ߦ4*{ Z]sRII,6<PC0ŪzPxw1F6Hnx9 N&&T̷#Ab}q( J4+l^x65t(;kM~zev@p$0tk-u;3JGfT 5b"ցSO==pkꀟ#Ȅdž*phIsGnYC׀'Ec퍬ap_u )Z*"a6=QcW;ω:߹#nY=Ym\a&VO4H~Lǜ[RÄRjb_I~W a=~/ϐ;OǞg_~ >#'Q@Ӝ 0kp# aLCD/x?,Aq}Nj)7eaPрI)%:'i Ry i,G{kI!l/lD/U( &52 ʣx 8//~_e6_&&0usX$[o*zM D{b@!&!{/=Qw+]2{)Έ( q4pBG`'Ϣ.>\ Qg/Ns 9G4.b ~d1yӪ96cKJz`/Y$dWtOcBss=,hI`_<1灏 ˅b:Pk`_'Ƞm'[L%T ]\-9&5j%?+Vɻ0Q=oG髄1LYIƫL'bUQ~)gd|:-cy 3yfO\2)oʇvèU]iF0-}lwH.?noC7(I@Oa ?߮D/d"TOK0 Чqӧ> #Cyx[qȝ/|֜Zq `]x PNÇBW <RrtJ.5' \#N C\_+ޡRc$#*"!u@x_ql0eFb?jFsI •3/?C0 Rؓe,LLo j'!(+@3S0D|!YC {Hÿ:9q8o ^wBh[lDJ;ۛ ! ŅbMPz}նL~{r&寮Ɏb]ˆwaᶱe?Ӝ}^ ɞhLPúP2<^/c$cW[ aL( - FU| [{GK CBl=,P*%m!H_1!66`G|jj>'!;8:u݄W ^\_̚ o|( ChCH.M"YGWKȺjy6mU2A$ĊQ:@h-bZ9<0El!@6Jn8Q*F`%qO9pD@'rAH`[~yknYVW3c`k( ^^@iĔ ~K&vPKD#m:0~P0}\=\t& YP6ӢnLkD,}0mPh }UM(# W)L5̣ŅɂͽC pKddcU҃`nOi wycϴ "D d[߷f8YaFdh`9%> Z8¯te8η\Xۅ3("gJ$ -Gb'; {+ aX;d=8UCDOIUB|_pukŀ"t{L|*=Ohbz|QtDؾljX eD(? R"ųX=EzPGHL˜aǿ|gAL@9v4 ~gYQ.:nv^ :挳N \aZo ^[ޯzGRy9'vL] Z L!GY/r@4rY@{GtRfR] uȶzh~~ h.&O  -V~$]T.A?ݰz3Kd`0\2 {0N `l8*Qwu {r_?U ~=p)$)j* / D$&C:8~ZO 멏5h|Fj-`L@3U =-o7Pr9S˘[ b=V[JodOג0.ki0"?#Z.6}Ŕӹ Ⓑ=BxPH hǃS:[hAKR Sz2޼%*)w$քUB/"|QAdD~>\Tn); `7 ? lg3O87(I*#5/G-}v)"ZHx=+50#ݲ/r:5vrU C; f𒊗hÂxKN~Mǰ1: - 7\\?S&]_r~MI o8qD}/qc =EKe^sg mKP8X},QsE(_Sֳ |cS(<S!yIIZv69 Y E@<(iex3rnTOTc`b~*60, șZSA^{621=l"(6j W55x JO'$QAn(CyKT1D!xy/+k@%ڕ6-@\cItۋ&N^_hʲ?{m8"ctp(~ bükL>dia~VBv;,@8BNzGuפ%oIZؚMGFQ-pA ! mg]C>e8 @Y L}=34{*( HCL/ 2VOB(٦~kr%rt(.^02NdhiTY.>$^'mU`Df8z( (Ha)tH O"8Җ*n8g_[Kщ%a$&⛕{C@@XzTx O;y66@@A7ҩbRƾiyEC2G.v[4*%MA,E+_/k/YLJKJJn鈗δn$yhR|3 z}(L}8z:Z_ׁio:8">,. E- f!\V@P`vr? ZvYe:EA])aK7#),D`:m<\`A"8)ܒ0ijؙےE|g{&bA+ح#+ rvX rJ+K#G]R!T<  u: P(5; Q Ǝ-/)+& js:|>p(XKc%./#m`"I5h45r&I03WFv&hXqy#^?;tql} z܅pj*8+דH1 %+!0Tݥ ´ϞӘ( &BӚ]um`jJ% )7"w/hO~ L~!5RI8%(0x\QA !(C ?D@r?|n(nC׸-D2Jx6@Qa) *7ruiЕT&ob(&5t`!5  %3H!DBDI7޿P(m>u/H ہ {%C<$Xs)‡ @v CC#`VtT!Yݽz󍷴>P)0x3:L| ]2PPrA|0) Ap =[.讶"~þ1H12PD; #V)-"9LmQp~e}128Zz' ".:XXԟQXaȨNHg|pp6+pUyGQrm5tII##VߺG}0NfN5iz&9hnS;^{t I`#2RGE*DK[W'5Qق {T.<q;4{aI;%$e2Ζ0WGN0C!-.6n uIr],e1kcy?̯ ֫Req4,2t ! zaHSAR)T$xoyG n4 6 uw AڹіGl # l,m :+]41`|YU\*.hX#.)(cP>@[z~/lA ?sa#XJiJzH[!, H7PȐpOJΟ%3-ӎ4u͹ϿKCBJ(Mc|ցa︈R1y',B+ :;Glj4LORZy̒E87 !Pg8k!Z~=OBScI K lw]@NDU2S N}@o_ke Vh~hs?Ԙt~PQ>  Y0-? %SM,KFnz͟ڈu]ذ01@L+%"R76,=iU.}8EJ`],m 'ޠU?2q^%TDkBD?( 8@"#N9F([ cOxE5CS8Zu҆y%s;̕]BDS2h>`&crT4c؇8qN;: zzUbxPɘ 3t' `T+w샐:Vu|L||Y6/x 0 v*ge8 a QᎠ[J^htEd4GzP@@[ ]z> ى<eOav;">$E֩at)L_x@6dWqF xΔܼ PA,9<6O-e$h a/6+5 odi1ȳٙ!;t" QI$~Pe٢ vr"Gg(#wpҜ(e@;tGl~?_l^vvA'7H*WX6Pt-$gĄ(cH>8`&߀[)׳54cRIL/Kޗ Վ-#.)ѽ3Ԏ Ey m%-j'Uefnʃ`x^Di`0#*WH{H|PP[ڍԻ-gL`^aZa @&k1n + 6UJj\!mWY*П7YN9 ,Xvв4D,O-Ssfz40!>"ggŶRT(ύJ鬿an?7͚f<_Y@N~Yg=(8xUG "tExa?~gu'CZ_&+. 8};C8:5SihS3Z%0+:KQ@OEnfOPf`(E߉ F{x!zۓʾe8̝ \_#3oomcfVD}܋𒊔C>2] %#͌ _H"A 7Pۋ*Z=M3K#nF$Lh_S$AҹV'ǚ_"fbooBSǤ0S 1t0`IJrBDFX HLA~ X[OyLn߀A*CQ (!V6B ` Y*N#O}P? j&jh"!mr '!ߌ`j1[!'}dj4T yОR0cn( O !=<#|p$.Kod$usD~( 2Xky{8`1CRK+=3r(ܾ,ԇfs.T.P@gғR7e ~s6J*m#yF KWȘ:6pB6^pCAQsRPR'YV=(v%~}O6wL胤KǮ2g'dQFHc `>)TnI<%AɎD;, ^iajK24h.B84PBWKE8?WyzșvUۇF2u o]3rÏdQA N桳'ШgWz;hy $g(Aޙ a)Bu$]՗6ioےs x ?:7r>9 %(Z*ǸHYGo DhOa,VS 6n9:ep]ߋ~p[Ja3od!Q|=c$iĕTD~ )E,ie?$W@s<`OMmՎpݐKd|-w1c`DV, Cx9^8 .}KIC8iNtQ^%TDt|-# s0"SEx " *X=WZrGd҄x>4+剉7O&38$w"GN C_ ז-%W[($ ^ Sf*}>jxhAed' h;/$4Q10)@KϜLưIrP>8лDc{&'ߎGi5n`~,ò Q}wp+k%nt`d N !e5 kOIImacvY^d)-`zgrB:  Hq R/ѳ?%j׻9Hot azzs͠2ݺ#w gh!x"_7/SNN$6Z,gu(w^0yg% S.R!ruHH[;Zk{Axh0m =mJ/3c"$SEl<<ø=D|sy\=~asǣO1 }E.M!!0hFy< =#B+P:!6]Jsa orb&^ :c ln` @vdz<ՉnR К08?W`WQ_X)^w(Pd.JAh|(cv@2CpZ I*Ӊ+ʩCc{gP^Ы4j)ܢyY{aWʬ c :5suCŸڃp2כ5Ǡ aDPQIÐjx  d{;+[n575:ro4~___[T @݋I*@$<0Mj 3ƚ,q`- HjaȋeA5ݩi. diW8n()-b@&]% n`RH*h=m @Ȝ  jh&\ ]%pyK.msEיDA&L(U;KX$.&[* PV\ y<+@p,P7P?W%{Zy8(P |{Gy Njh!; i30!,:l'7";KE,2:CiF~ ]c &x5p1XtPz&v(xsdDPƩA$v4iҾ)&pӟJ0z< @~C>k̤|26rSE ;ction of the heart.Once you have ucceeded in doing this, a door will open to the next level. Before being allowed to actually enter that level however , you will have to kill a mean guardian. Guardians can be killed by shooting at certain of them , these parts flash white when hit. THE WEAPON SYSTEM Durring the game, you will be confronted with life- attak-and jump energy.Life energy decreases when you get hit or when you colide with a monster (when you get hit or when you coll Ճ'lide with a monster (when it runs out, you lose one life); jump energy determines houw high you can jump (also decreases upon hits or collioins); attak enery determines the amount of wea- pons or collide with specific monsters.There are a total of nine weapons which may be selected. The more attak energy you have, the more of these you can se- lect (though only one can be actually used at a time) - starting at the topmost of the list below. Magic Flash (the dafault weapon) ----- --------------------------- A steady beam that extends from the player at a cer- tain height. Shot ---- A standard shot. Flies straight. Bubble Shot ----------- A shot that colides with the ground after a certain distance. Shield (also kills enemies when it hits them) --------------------------------------------- A rotatimg shield that protects the player. Sinus Shot ---------- A shot sinuses away from the player. Exploding shot -------------- 3U" One shot is fired that later divides into several shots. Intelligent shot ---------------- Searches for an enemy automatically. Roatings shot ------------- A shot that rotated away from the player ahead of him. Smart Bombs ----------- Depending on your amount of attak energy, these will be three different smart bombs. Spiral Bomb ----------- Spirals away from the player. Crystal bomb ------------ Crystals spread out on screen and than explode.ӏT Smash Bomb ---------- Kurgan explodes and gets back together again. ------- Select these weapons by pressing space during the game - except during all end guardians attacks but the last. You can find this weapon menu on the right top by using the joystick. You can mix the weapons (THE spped range and power) in the mixmenu,explained below. ------- Spells and various items Scattered all around the levels (often hidden), you will dind several items (parts that do or do nWAot be- long to the remnants of the Heart of lore) which have a spectic meaning for you. The following of these items can be found. RED CRYSTAL ----------- Supplies extra live energy GREEN CRYSTAL ------------- Supplies extra jump energy Yellow CRYSTAL -------------- Supplies extra attack energy MAGIC STARS ----------- Scatered pieces of the heart of lore. These uou have to find. HEART ----- Extrs life - Adds one live to your reserves. -------------դH------- SPEED DOWN MUSHROOM Slows you down COLORS KILLER MUSHROOM Turns the scren black and white for a while. EARTHQUAKE MUSHROOM Spakes the earth, killing all apponents. INVULNERABILITY MUSHROOM Makes your invulnerable for a while. FREEZE MUSHROOM Freeze all opponents NEGATIVE MUSHROOM Drains a bit of your energy supplies ------------------------ GEMS (Crown,Ring,Brooche) Gives extra points GREEN POTION Supplies extra weapon range YELLOW P9cPOTION Supplies extra weapon power RED POTION Supplies extra weapon speed GAME KEYS : P ---) PAUSE (ON/OFF) ESC --) Commit suicide SPACE ) Enter Weapon menu M ---) Toggle sound effects/music/both --------------------------------------------------- Shut Berlin / Endless Piracy --------- Scatered pieces of the heart of lore. These uou have to find. HEART ----- Extrs life - Adds one live to your reserves. ------------- ׹ͪ Ӿc 8NКLfcKP2<=^(@2S~EK/AȆp vTik,9П<~>0mT3q< ̠hH49f a+`Z|Wpx6zt (<q,JGghIwC9owӫ'W0=Mc01)` O\PÛɀuB>p[?? 7ݧ6.dzU]i8"'^.-#KUzH1TguRIVI^UNDGm,!ƘNI Z+Nh*P3Po|X08B tЏ+<myvr1`kP G9]$q(O 8]o 9A7IK8l h 49._8{h6mta/SrsZAyۄ@5V' +臃l$ҦCodn!px/f=Cy|>? P5 '?B"`(xW; A [/ 9ހBx?7cHte 'p8Em5pp#s f!9ZP;E]kS˫SܼDc| [{Mn<?T8VT5:b3RNjXJZ+=i@/pIYv`&6`3Ȉ[c"_ $"\@3a3@"Cڡ[Ae$"X2NoV6. 7V 4~-=J:(1SH!8aPorưKSQ \5cGnf:csb @%`?Pppך#L`j P"+YO(i`Pc;)0` {\ =/ }z~J*`VWGaZ d@>L4* 8* 8ƀZ=i ,V[Љ7|$AKPB`.o'tE$;Y_vv tfa U^;T)x^L\B0oϰ6TъN`u c@$l #=-esx@{(#H2PB::"x}+_aD;>/1G; s#>?;ns%3=:|  :t9(3`,'Cooq^7?s\J]܏&sPVx'' #/7.g (p! /K-YWKYe ̙Vr|@aǢ]08{|}h/`ׅ]{ǹ`{ܰO系 W~;<'s۝L,~?8>c;j>Fy9 ל`SFu9 9syHg=b,xl'x`_ /@-O.Q1来P0/`RNGD<$ cS(|@; ѕ0AӄU?捩_g2ed!) Ug H&d*sȆӫW^Xv>jy9bǒ>5 )gP- B8'dFq1Sy#@ (sN+tT^N{-%qd3N;2xgNN;O?=̿bdޞRy4;adԘ`,P2c`a`df&lԌl꫉a`a \8*Y??}"<0dYÖ{w-}@Uǧĝ MS~$E iGQE!-ҩX9B`.0|VOZT a/XI0ȔA2 <i ˄ =׎Uק'0&tut5ac+-PPpG(kcoqt SEFS2EE D0Њ vNG61xfp#}`^v24|) 'M2 5yL/Y3(g_LɁG闏]!>`h ^ǔ}L|Ah'bva*Df%p%CHA4#&Cw=}}|onnA=j:<]hdc_7/LØWFb6)>bq2:+ȓ0P(a-,BEJqD5Vڈh_@-I_yc9C[̝(-R.M 6D/D1t0W52=3}A 9ةO^i_Iz?zODm mw;d;Rؓv&OW>=vqv[߯Rҩ|pE՗.X*HRԏ-j$ld) ?0U~j1{'˧ϸ=]=y/IRxOHNNN}[ݭJ_}vfF6}"*CtLεF!Yp$q7,CLD}Y.ۚbi lWvEwo0_= z"Q cCH?ywѡ/)0iI=35]PC9}߿sgT?|~BIddr9bx)嫤kGA0s3{~X.8惓yoˢnA03*-0/`_y D10fND1yKg:>'6?E5!@x~`:3` # }U ;qc׿\]Ic;HĿ'"vΖ<\$]44^z /W `Rs8 LNv^t eo/x:Pۙv63rBihkOGWzP4X%rvr\|}?Y|/X v&ɃD&LFќ =~|Ĥ#i?k @l="|o\.MLmMly?_7ixmܫڻû/^rq/cbc?M_Fx[Ns53|Dg/_ D<<gCyfFy#>%y"/?^Kb67T W>ǟ<31=u"ȧާ"6#bT  pHDcEvnNX.O2ҩW;Qiv@7ya}.x 4"nKJI$Q3d.(z\`X]W22WAd|PtT1M0'lE5S301E1,t\-ވO`% #}C J ׮B(dA9x|ۺǂ-\3qdz@t656tyCF3/ɖg#z<~K2f3?*<`L'glaehόB5~0klhyVîv33 t'o?}=`?s>#`n`{&`n~gKj救fsAfjTؗyώ~w(a0b)dx@ (1@ @\@"*Jtp ~=S  /'+J}QR& ~J(ʉȫ*`@[;8,)GJZPigbDlǂ1ITCɽ#gQrfcaJICF͘OR=@~=Z2,.YW,?}<ۏK=Kg;,3G6?}KvпbeXD> )9$Bz@(5\,+:3'{[c>N..LtPvt/'*p"0bJ(n>%$UDxv8Agd3u1 މ^s9Ǥ~qsǴ x8qDa8u>A8Y^LNFY5"=#(AX\R`y1C~PJ TPUedRA#!I,]<7rRG]r3e%*Y>U%'iED4ׄ%[>ad^T.i+*s;%_(ZFiH4t^ y^{hԄUtӀK#?"?ԏ T``&=I,llp#R|Jd\k8E g>J%8*Ks<]wqUC r ֔F֒ԱIKKjkhc ᬼ `!4CJؘ5\-t ? rCo g  _T 44hBiv PXTF`՚2%IYQ%Q?TJ_ʟP( At dĘH !O*rtN ) (RFRES@UVPNO:#(EEyiQ9Q%(_#h%nzBy$3S~_^ˉÜ tPK\꧿~HٶCD$}4Dph r'/>W'/r'xHHȿ>{"Ty'b$Z =ݽ'h 7OH;(uQAy9nHFTFʯp(khcHFPf.]l; \Ο?߾FT-0 D 8^Ikf B..6c>>=Ld % 쇶_z? pиPYٯ{wa{[:e?k #jk??z% |sIJ!;;Lȿ|]t4h4WG`5/`μ~ġ}_A)a]뷯*G?QjiE?)?DTTPB8:Z?0E(fg4W\Gr7r?꽔62'?3N+SgHwH0;ΜЀ_b"@ry;r@*\2 G0!XCFX{E+ !Hz>X5N֘ kd6e 12pK3 ?iఠ~R2ϐ[?%DץzE׻Aed5O`UZ_7p (tv?kc9ϰ#!~NrCDomfj\j]K? ʟqO47Y>^ l#U3-~-&~4MZV`vG3H1ȋz1s哼|Hs < @(08`!No"?ϷM[AMm7"s aK'UF8 `y3dh4dS@چ`g 6b</0 hD&:*M`H@!8PuG0 ޒ5A:(KA1HgXU<$h qĹN~Z{ 0,so p(D.8Aw8ɷ?\rBbl_:lǫL[aЎ|߭Nv'0' m*elkzsS$ӚP\B'4qhh,C@ 1 s)g B孡]D]4$(C W7O$ 5CYx,9C0Q!}wثgWcWV_+<h+&5B9$bMa&|~5Nrvg'v"{oibYAG|EОQ n_?sړ0BĊL?YIٺ)'`&aߵ/xfV5f@ܷy0֨'Z Ko_dw, c @r0Ҙt#/;D$;9HC%O-D(?&U7t?D0Ӝk*9gإ37膌(Աm\bX7aQBʗ1#X<2vO"<9c[ #Gh_?4+(3p A- \2} {@*KPa0c' g6Z/S E f;1DL"ŢA0,%78q4*|ky1=m>LpSxN;`-6> p%T9bnu[ԞsY` aX^^SAV}/C"$ZF&[G6߆b>}`<0N{ƖM¾(e>.olv@8?/cdoL~*Y7y,=ݻ Uά!yq$#ߌcLF`Bg1hh9hd5L&z fz )D,='|Pڈf'{/rޜ ks5"9JyOXH$'3+9Q}|zrYLr! a p!2E竬&)߶56@|$D HcKF; D @(:dwT<3rp ь-yw`_;&!r w"`00w?ΟD3sܘa} ACO#KC+dfN6(]xY)+ܳ PmYg !8D`BO_= lOư[‹j+sm/!mޛAP(E"o @ (U@̝"E~eˁ֞y@0MgWDA jE#51 ou7ݱ S]Afn#6Vu/`Z7#9etZIp jBaUY&7hQZ_$kF'{XPAU%dy1i%M99] {lfx(뇀dC*=Tt斲TgJ02 5UMPNXTVTNEGAeEg B EUR߄{; wdž0M.  ijzq)%U $LfCG5` J"lzj#'sa;#<(@b0vd ᓢ#,:"0^/A$R-(@ kdd S ?';CBF 9PJ-nS BɥSOJmb'B0C'@.$)SCc S[CK[W[0LC, m ~__ Lxe__?*AwWL2z[K"!|}[}_^7# kKk~hז ̻~>=`= |+wk"?>>GKꏙ')=t?f'쇙2o{ֿ$}?>0 WuW.kLW便CW~_^DOLR:F?3:r|fr.Nx:x+0A)b"$/    @Nv9bȥ?<_/}y/7̸2.: n#$/ $ˏW_b'8L_('8!L̲eq靆2L`d~ao^|h.p\˯/LD;̏/]_"iVNX.?:BOyϲ<qo=s._l{AȀ#xe<}29~R\r*೑O:;]g,Ľt_3`o{Xh=2 pe8e g40OÚ3 xG@\p>GB|]@&<>^rY-;H~u샬?gfygfygN ?zJ5r@PP9 #\vp{;O7CKDp ! w (N007uރ C#DPж q~'; --s-cۘ8\a?7*dcXIJT66 ;g<[X/zF0-30wؙBZ)'tq7_ {@:o(۱ l1Sk~b~|7M<hL٠Ouo?lO(o T|xo[hpQo"c}߰&g~8;n/, 3{ܾ11{1geY׷z[>o< e|rϭvG, }ft@@!kK?h.?!qs/?C?;!jûOC/C0Dꇆ?^#C;$ ~@t,κCh~00!pWwq5~Ǩ.`I<!_G#<&rW8<.}q} H1rSq|/.S؞;2_0P3lj1W @ *YCs_~Ʌ>E~='FX>E}̾y}+2We _}roB`~??iyLLM~EeYdeeyqqe^|`ٓٗ x9OXX q癟de_>d 2Q,|Uluxyʏ}!rˏo\.>^~e4>r`@Ne2yу?Y $H8>[ <(bigc`?m 4 xMg0$ `t?}0;G|;"=0L̰tG D|qΰlGw(N($ pb=O{WAa>6>O Z*:Ta:C |AaS &\JC$@W}_Ԋ+Sl;$y#okNIDGAML&6  * g)]Xk t '" qb֠F Y P^ Gd8wApp@q'Fv'q}%xCDh ;BL5t8k 4(yrI\h/yG' ҆B{ղuxpHY yDԤR8< N%@L'ڜem{E]67N!NXIXP5`uc_8)B}`n;t ̥c&txZ˿k לJKI68)ʚZFz1kl |U '+^ ? vӯ1F)ј^3R^gP9 F}lU\"T_Ů->mgj컈jn%j: Jf }m?-^X54X}ȩ/ɩȘ;߇%_R Q"??RGG0`k7%|sE@9!e1Xpv̄ 8PGoiiYrpz=Qޝ]|uXpNݹ ~b46lLh5NL_O!xi;p@m1Kn0:Jch`V>gӬgffQ 3"pV@N?8}O!,10$?+,{ @ `+/i/li@ *jie4ke-Td~}>j'cW>mNWD (E\!u^!$7J;=2r}/{0ȠDp&`Rci`/MwCb憖K 3(_P6i`,ihgM׬p/ +7u<{ FA9njX%8vU_`)%!A IfmsD>M,$"@m E; I4Fsతdc' [N%}yx r ~R_?3\ $ʗ~ȸڋaѷ_T#àΆnPA{І i#kc3KW # %ZhI `^ 7T Mie Wg:+b Ԅ\,>匴/>ZOu*p C r?C,=q!?}Wd@e^{IO"a3@\?Iy7.jpyOJH`kO!. ) (̌xOÙ<>a v%0+ʞxl)B. 5..6iMZN+ҡrn"#(8b.QYP`ڟ1`s [L/x[ RmAk)υx~Në@>e̥SJh2$w\oZ;҄LFӞgYB"s'WKwSP5g|kJ2[H*9ˇ\P.0aG= d`'˜MI7?\|Y ϊ{9?*S[?τ,)Y X.RZC>c!"81a)"WT|(-\C`!(Xp1}sAlwCȆx& (_t~I]KS ƧvN@T8Kn<1[ pGWKZbgX,ir*N(nMNCzS .FhzΟN`@2oAdQi{X\4[ԟsN&] A&h0L&?fq6=Ƽߜ" liP<_"(k]j (ffM_hg)W?$ ZT cV^P8Nvq‚[[1g [|} /BdBF7F HpJ40R>, ]X}?x|bi\ p`_NKW 1a%Ć%zCmb?GrMr;Nb?J|P$vgKE""Nف ǘh^0X u:6('Z^ܔJ7,L;Ɔ 4IgSA 5=ra+g h J׋Z G &oXޯ#bkB$[Լ7"۳P0BW\KpKjéz߹٢Jrr\3?w}KI ¯Sy3&H䥅e=C揹DZŜa\7P5XW;g#y@Wf@sos h `G pᖇyWWg{o]r3@{6z;S>:M ШQF6 9v1xZi)'XS'ᵡQH+8x oQ|OjF󣫑fD,*4ႄH7(7؅e@/#8sM%yn=d%"2vՙ̈́Q՗X"ڼi/M`h1\|)4AEdE-! Ij V-|>h*%cָd?')QM m e{#̃Sk#ol$OO㓉OP0Ozжf&/0PT6v،S8=XM|C4>yL,*]6K&turAw4'0誽E0Yxp ^:'PS lQq#7"Дߺ>GH u\+hD]]@1.ML$9{P4t^àB;:bvSl|F V״q%%JN]hDUT$~@@BT@PIESW +rc:N_ok&8*n=t}Cda(.8b79= n_֖~p42*3aۚO~z iˤK9^X-&%K_"F) 6  YVҖ2Ho5o %{na]iBXQ#6a3䛬 o*6wK aSL^3:506à{Cg) u 5cpaOʒ~h"r&a *)/ý1^r(Oj K THv:Ը*("+().!"O&'Ɂ*i`q`^]fCzs '6&JG2XLNS뜹㫞 ~dTz8x 8!8. !.;AwA~*/=V$_1-|‚** _/~ 1 F14 <#oWJ0r–PAB/pDyn.y zA' Yr"JB#G.?̈TucV}n@ƑDv`QSxsC"٤ݲ&zaX)9g֩tsU @Wo'?J,K,~1jWb:_1*F)A 'TAR490L11z^zf)  o 6jXM9HgBٛF Q;I'lߓ4-\zt|͞/Gᇈ|ӊ[@@y1a歃"}܅̦\ c43?+8jɠfX" ΃K,0N`}g=OW˱scu㵴qθ %?r|ip l4wLʃV`X>dR(Y T@=t`4ItD DI&wуc ׀Z8ƾyqUD;̋ hv)~;ǔj?a1f<,AI.ueEsA8]ڛ%ŢXWHO0p!P!~'#'H8fP'Ż1A8.u1)OѾrC٩gi>}Լ6_' s {! mQ7@=ķWF]M8o<0VNwJ&Uh֕0 O40prKbRVo&X>Hp*CEx_I*iU_h7>AoN6&71y[HO F:Δu/ <W0C H44޿R5XD3 wO:O0\OK<g_0DO#BY,!%/ٹY,ʺ sfTe @<>W<:CpXT\OpxN;9 #{a:r}<|P{W!{['qN]Suj4qVk:$OA @m̊T5co,PX] 3* *c ,=V!8?)\S*{k@S>2߃BY,wm/C>xTGybzVb^vX-.gJc%Eo@`x!{8fo;PA =($ φq4b{Fc)P :fi_}|,vpga Y\5Mq`S4f#+#a #I@W/n Z[tc (ǑPȰC͋SƒtDil3t2E=٘k{t`A G`<^^Kw՝pK ~pp |ЬxT5{J k i=# \6cr@C pɲؖR7~"8;\G\CX_,rU.d2~' # ‰3DL!*JH^ i"fYt*!$$8.+GTz Aa :O{4$q-3E_# TAKChuL%xl!-P z17t2qҳ4 ]?@jv'<죬aA,u>0s ð}|i<<`Oe.nByџR]q>)7$=Xu?P(5ȸ_RQ li:l˽=&G ǻ2]⤡5j 8EppEVq>11/vȧR 8j@f~w?с  c$G;Fo.O3 ` My{Z߇1@d TKP"&wvҝ>`O>;@_'5 e "w]} \p!s\B4x;#F`O{ &" u7Ep{wH?uh1:_L>L Bz0TKr,{VP\RXPFW۲? Č #߻DQ _\mcvǣ,%ܟ0]L^@,X0F?C#P.R8]?U%ݏH3[8B@D0^3Ifhp 9{|!D' Я!zվ(a\&ymEcI,DtZyOF&'*iTtP*"," B3Èz4 lylEXQ:4 mAlkv D O7{!n)p}Ҧ?Me Ͼ~<8'_ϝx"iޭBm*W⒂M44۳ pBei\vEݝ>vp叩 Sp IQ5QXwh(|o\*)8 Z4<6_gۡF4zl^cUY#s*,I[ n& 2_HGOn>LS^e~@ ΌtaZ4zLmh W2Jt޲$U"1A&436$3,;fxCDlAbLK<:{8刏дb{k!-;ׯ=k "Sʟ$Hhiq?1jaxj4mƨ8E,C\*t\d, ǟ]|#k8P>PSh0خ 'B;>Q]CRCI4Ӆq:y*cA' ˄`('`2o[a:Fy&h> ZgHQ*a6%]N| bF@ XM(V T ::%Q \OoD` +nrrxT[Ub<*~y蠘^Ja^O52)bZO A/nj `1%L>FWK hNR\BENhu>8B99~zA0y2*`Z  = >G="vHpJ\\a[ @9ߛ07h S޻v: ȳ雤N@ hl5UʄXJG{\Yڇ)as%eM LFWO8`0v.UPn30A(PSps®! ?hIZj1P# +a! K-.Mbh ^H.SbJiѽe6pDJ-9>d(~=+B0PlA͐ (5?\1Ĺ23"^ HP{5"FĒq)AI>[6x'w'w it1k }IU;*``1uʉ4sG9&E8,`phVtc 7-O*!2Ц!OzDҟ06 ?[1f;d[OM0q-X.}Z@7ˆ !pLxuq F 3;K5twȬ!D\oȩe P[ќ$$l5ƆGm CؽUwp$8ufXao.^nurBqQ `3h@I^`( " s&o=1͘ X+a7.p>CQAM[bO HCot,ahl ȟcs6-0'>ypz$FtϜˇC*s?aVR`B4 }j\6a Z8 ⪤nBPY:n 4fU"q0, ?5\>[#H[;NԖ>B)Owh/42, /2)WMr F¸,;h^ \ F@D5+9^Og J:BM%' "eƮ6QB{U<oI FOJ,=A}܉ޣGY:$aN*MU8<[+pQĻa1U-VJ1"׆FG%8~  24IlWi8 }Zc ^D=y %ȑ?*6.`{=ǧ5QF:׿02 tSXfX1 k{GٕuO F$>`J'6}܅L\z CX~,A +j?-w &`Ε5bPE?[.aWf?R>p "S`(AaBbM,,jjF=Q]~D|yoృciTyhY96"c˅~t1lztk8/ȐTb#olw/Lͳt'xL? ;?^lZF^)ƼiբLvMl'Tf[,_RS 3a͟ e{,9KNšG8R R| !:s:0FW^ 3IAU4JZЎuxP qWh_(⊒_`13,4}1 |/> bњzL7]k7a0]BQ%6s,dM "ήã\*lÝGȕsCB"vtAC+xg'')Z Rl I҄HO=[ac΢0;m ? #}N>OQSu}2FS[O$=0|d`}78KH cE Ttʮ |_!#3@ _*9?Pa5s0r?`dxN0I'☞I`' `xDj/]UrsWK:pye"`9Rf% L^YP\$4#ن~h!ue^Uo ' <|DwLhu#?H}y %r e*,{ Ktci %br t `a Yާ;96$)BIR//)QRY8ªZ;GO [ =頵 =*=4As68Dt{j@O)xq~<E-/wxT/-7nnKM\y~O ( w+l>"|{|^}BwyŮU \QZsiSҧt >Kp\3ʗ~2jc jF6u(Oi 1nbV@W>llEt z6 ,H햑:~M:O۫SV~s17A;f fJH(o&( 5)J~tS X^ǎrvZsAs ÄP.pt"s $M8ӗSHILr|U3p -Zu<Fö'u] f d~_px `Fs؅>S[> ] ̃%qJ#t6^b3g3 +AXBPI|aQ%@O-`B>X exk o^jXDm-=d^i#Q$*A~h'<_h'52ې>twNΌ HC<<M J((*QJR IOfP#\G\SꀧL# \`W†'h ){ؗ E Ғ8<lhc6CAF^REGDU{ ?/hMC A*^ &L2 u..8+[0<7.LJ-1DE>3Z-Zv76F_P墂;`iV[|z `zE|ƮR\]sTFo ác< w۹hPz6P/(_,Yj _M|cFdWH|KM8DV^κ,~%ա u֞:7P|4jS!W;وHhCPeEdqi"{۾n6\a40C[Y'Ꮅ4|6e/i.#uO6҇у,rtgC2IUȶ:"珩 6>oęҸ:]&`TjV`# Al܆Y/p c;6ԌGߓ#,opnTn#<`;.$২t39j@9Qu=:{t(}Bw!4 L4`$dž28xi?gq ,1T.-=kDHYM 81_|*r-h2ǨGC 6,(ǘ4( U.eO437­M ںQdb@ f@`ap0&UCg pT;> 1w&EppE?\\pߕȿGV98CU2;&}x6X׻pNNcQv_ˊOkύ難-a K r*W+Bd\C7@8 ܟb13rG̓Է"/+$:qVk5ǁdupdX!9©gFn4~ )u#-Мp% %{C)|IIq ?>ں* |nh3SLih>_Z/8fDC\ #LrɋVߞ 5:Pa &.tOBcS abtC0#hC92yPUERF roD={#u?|[?/#38d'""5˲ U<Ǜ< a!\?w1 gڜ7.0PIhtoz."!GW`ݩa6zy, >02 A""7^P u|r-Ic6:yCO}r}yqXH4u%?|}e-`.$ `wFwD2S$5@g3N)mgTqjgQ1 /(n+9_ 0-w %Ϸt` }լo:2‹aihm VÒ,{[_"|Mx-gWC'a=B]6QRw&3t0:`MpTԏ+Uz\cfcE8<)[9a) yS GW"_R(#UX>}`lD']_^ H)>\:VE?ZAHf aDxO#0<'J}>Ӕ[(pdaV2f, 0jInC/\vl- 8& /4v1sbTz@Qi_rߒNIi$%nnsZѾn\R!gB,)/N>Q/У;WѱpI`e/#GIL'jXTw8. x/VW,r l+D(P0rںIH2JrޔwF5?Q⾢ e#+h  ΕcMs|@yJM)zLv戃dPGHl 2RU<q}@gQCFNb^j&6:pC {OQ;Ċw4r!])*v9NqaF7(i?$`l\9G nQ#j`dQ)M]йBQ[ !*w l @-X^FXoB+ۘlb B(&EU)ix^8U\m{JcP>XPR<3oV%h!.Ui0{Ab19(-: JN.qT[ωs 8G30 ]F+25e5![dx6I|`p\AX7&ӨT!ۻ=*%%> dJaGFi)@K)r$ ELB3`h+NW4URDPa &t_"Ҳi.Er#6DɆ> ?jjmeFadE%,>~I Foh7i7ׄ †j'"NpZ{:7юvc~͸=\` Dg^[I!5 "ZyA9qQ%e4,CzUf 8 tN|~9sX` R:?Ćy|>"W/.{&By= GfךZ|6"(]!l-H Pf<`s~sv gVl3ιzɓ`r%C M"J jy&ի_-_m c_Ojrfq[{["J x 2YEb'`'î`(ejۀzE:0|6 -ȢG(~1I 8%Y~q2%>W|R\BEV"r8*Q8PҢyT~l~dNM,,`ljR(%^(w/uÆSgfsGEA@KbSS #-NemwD[F/0HX K'r}0 PLD)7jF =} #DKN*EdXp3`,z09 'C[C[\ƞ>y pyvXwCk$@ TrJX(ܺ:[u+`2c9.+{൉}O~)EHI_3\c\\pf,[[ >DrOHAc2Bp ;Ky9;x (7Ita1$yh蕭~?\pn`L:.gb+ n=MS@VZw a',ib|filg8TIl0w+EZ &vB=" 14äA?G 67`0L `E$⃮<͆mb@ҘZP ȢAN]D?g~pCp(#G`(QFk/v 8 “Os pe>fXˀEIN/r*\0p(#3'"\0J /' HF Ĥ,f2@UN& "p,(yȲ4xdh <^+ RBˡY)" 3@:h t\*\İ ;  _ ci\{" /wϩ!?HF>'.'2-B=*%æx;S3*<ֹ J.4UМ h˭b)7o]>1H`;fJ A"3FJC`ڥc741[T#jיY2}cHs;H|> w$y/?3ϒE`Cab78 UEIPFN \6)#هNg/)ـ'Zd_Y.5 S ?r {!$b_{Xv )('g^THa:Y_Z^oyXpEʸ#Jξ0$O85oXuI |q%&2z$}0c ܡ"$uQD(B REKb('߼P+KQd'TK]s{@ 9P .u~| ^6`)7B0IM* /ĤȾ 䑃cPǔOs !F0` n] 걗‹aYgR^+l2@S'r`# 8$U6Ox0Y[`̝ dBx\c$`Pl)È1ǂxobZ|! 4nnc!Kw E"='ʓ boulders may be moved by pushing into them. Remove boulders by firing at them. Go UP to board the ECO-COPTER and rescue the ponies. THE SHOWDOWN ------------ The entire nation's safety is in jeopardy! DUKE NUKEM's obsession for power has drawn him into the radicore industries nuclear power station, regarded as the largest of its kind. He intends to absorb the planet's radiation by causing a full-scale nuclear melt-down thus giving him ultimate power. Only the unique power(C of the five rings combined can save the day, as Captain Planet is summoned to put paid to NUKEM's intentions.....GO PLANET! Captain Planet's Controls Fly around this level using the normal keyboard or joystick commands. To aid Captain Planet, the planeteers' special powers are scattered around the caverns and may be used once collected. You may hold any two of the Planeteers' special powers throughout the gameplay and these will be displayed as icons at the top of the scre)en. To collect a power, fly into it's icon. If you already hold two powers, the currently selected power will be exchanged for it. To change the selected power, jold the FIRE button down. Quickly pressing FIRE will activate the selected power in the direction you are facing. EXTRA KEYBOARD CONTROLS ----------------------- P - Pause The Action ESC - Quit The Action F7 - Music On/Off F8 - PAL/NTSC Modeswitch (Good opportunity for a COMPANY NTSCFIX here! Ha!) F1 - Shri*Z(_nk The Screen Area Horizontally F3 - Shrink The Screen Area Vertically F2 - Expand The Screen Area Horizontally F4 - Expand The Screen Area Vertically Please return your registration card to qualify for Technical Support. Should you be unable to find a registration card it serves you right for not buying this product then, doesn't it dickoid! Zelnik's & /-\ction Man's personal flonky hello's to the following nobbers: The Surge, Rebel, Swayzar (happy now?), Overlord, Slayer+w., Lynch, Spirit, Reeet-Mon, Splatt, Papillon, Ringo Star, Ian, Duncan, Sycon and the rest of the English speaking civilised world (i.e. not Finland). Note to Foxy & Miss Videotape of the Cumpany (The 100% Cracking Factory from Hong-kong!):- This was another MFM game, So if you are correct in saying our crackers are not qualified enough to crack these type of protections, then load up X-Copy and watch all the green 0's! = DOS! haha! Special congrats to Phil Douglas for cracking t)]his bitch! Nice work man! And special Love and kisses sent out to The most Wonderful girl in the World called =+> Christine <+= Signed: -> Zelnik & /-\ction /Y\an of the none MFM cracking Crystal. 1991. r Technical Support. Should you be unable to find a registration card it serves you right for not buying this product then, doesn't it dickoid! Zelnik's & /-\ction Man's personal flonky hello's to the following nobbers: The Surge, Rebel, Swayzar (happy now?), Overlord, SlayerGrC/c:2Gzx<6PFLVFMTOɌ RtqqHoi:+s_">-+a9(̧B: U_J*OBL tH^=/"7.YLK^TNDTIN߂g.Ж{3ye ] <g~3,(1}odjpw UF`SGAǽ01F**M3μ"GLa3WDBp0A.Ǽ60PHyƢAutЯ2\ ѧ(0|+k/T{XD sC}xˀTLO *..t n-˼h<0DjHrwxka/) Tv)}p7Z9aFn-ARXFsT$clY +rs4N1bw(]26 A0PY@^NT@TL^ITWZAteijQs%`VbD~WYktdX\{D$u<'c"x N8jψÑ_/ʨ Y:HgZPT5CȶZ~^gT5 ndP-̹0_z ; “ M˹r6|\csBۜ$S. ț!0}!jd # uD`Gt:\|9˼xuc {TUPӘ R. WBeSO/ L:Fk]'(*REX c) fyԟ0¯wӘ#o9E%2y|a81e 8YfY34 ِ?<:AId_c(nX:Lp%! h69Uʒ8(%HhJ'U %?0-291|cO\Six(aK>ԌOnVAE}P>7/b2"?+IYy%A9qQyq%A IaA1QAU%?WcMqϊTW*jQgͽ@ᩝ- c?VWšY:|REıpX30s )l#`|߀ ؼ!z5WU8~-p0niGf׵6<%oa%bH5 `Ŗyg.`Z)3՚/0$ 3ǥ@x:,?|&fE7ISP%;V9l<  iSSla(١ 'iZiJ dĽXG`$M{ 0)jK 54L) ,wXBFXETIY@NDGU%Etz a,,M]gYL_Y?kA\ 0R B)##%>4`(D' pKL.;`>X#/o>3_8 쌷m the code could effectively be all one colour!) Once the code has been created it will be displayed on the screen under a cover with CODE written on it (cor!). On the screen you will see the following ; A Board will holes in and the CODE cover on the right. A row of FIVE coloured icons RED, GREEN, BLUE, YELLOW, MAGENTA. At the bottom a reminder of the Marking peg colours. Now the fun begins! To enter your g?Q(uess at the code use the mouse to point at the coloured icons and click the left mouse button once. A coloured marble will appear on the main board. Now select another coloured icon and click. Another marble will appear lower than the first. Repeat the procedure until four colours are stacked on top of each other (this is now your first guess at the code). Those of you who are awake will notice that above and below your guess appear @a?some coloured pegs or plain crosses (depending on how good your guess was!). For each of the RED pegs one of the colours in your guess is in the code AND correctly positioned in relation to the hidden code (which is displayed under the CODE shield in the same way as your guess i.e. vertically). For each of the WHITE pegs one of the colours in your guess is in the code BUT you have not placed it in the correct position (yet). Finally,AU[J for each CROSS one colour is not in the code at all. To make things more interesting the marker pegs DO NOT correspond to the two colours in the code next to them. So if you have two colours right and in the right place (Two RED Pegs) and one colour right and in the wrong place (One WHITE Peg) and one colour totally wrong (One Cross), this does not mean that the first two colours are the ones which are correct or that third one is right but B6L@oin the wrong place and the fourth is wrong. Phew! If you are still sane after that, I will continue... After you have had TEN guesses (the board will be full) if you have still not found the code it will be uncovered so you may see your mistakes! If you are clever enough to get the code it will be revealed for you so you can boast about the way in which you worked it out! A requester will then pop up asking if you wish to play cbagain with a suitable message depending on whether you guessed the code or not. If you reply YES, the board will be cleared and the game starts again. If you reply NO, you will be returned to the WorkBench screen or CLI from whence you came. Enjoy! same way as your guess i.e. vertically). For each of the WHITE pegs one of the colours in your guess is in the code BUT you have not placed it in the correct position (yet). Finally,DGies our environment has ever faced - LOOTEN PLUNDER (tm) DUKE NUKEM (tm) HOGGISH GREEDLY (tm) DOCTOR BLIGHT (tm) and more. The forces of Earth, fire, wind, water and heart are yours. Put them together and become CAPTAIN PLANET (tm). Your Eco-copter (tm) is waiting. CAPTAIN PLANET & THE PLANETEERS (tm) - the Amiga computer game - lets you play the role of each of the five Planeteers in an action-packed adventure to defeat the Eco-villains who threaten our environment. To succeed E~ybin bringing the dastardly Eco-villains to their knees, you must win throuh five levels of action - playing the part of each Planeteer in turn learning and harnessing the power of five rings. Only once all five levels have been successfully completed and the five Planeteers (tm) are once more reunited can you progress to the final challenge - to play the part of CAPTAIN PLANET (tm) himself in the decisive showdown against the massed forces of the environmental enemies. CONTROLSFRb* -------- You can play the game using the keyboard or a joystick. If you use a joystick, make sure it is connected to the correct port on the back of your Amiga. KEYBOARD CONTROLS LEFT Z RIGHT X UP/JUMP # DOWN / FIRE/USE RING RETURN THE GAME -------- The game is divided into six levels. The first five levels put you in control of each 1Fof the Planeteers in turn - set in a different location against a variety of enemies. Before each level, GAIA (tm) explains the fate that has befallen this particular part of the world and explains your quest to you. She will also warn you of the potential dangers that lie ahead - listen to what she says and you will find the quest easier. Once you have completed the level, GAIA (tm)will show you an `EXIT' sign which appears on screen showing which way you must go to escape the lMH -8eacts well to this movement. It is Su Hsun's Rooks, however, that move in for the kill to give Tai Tsung his only recorded defeat. Red Blue 1. C8H5 N8F7 2. C2F4 C2H5 3. N2F3 C5F4 4. N3F5 N2F3 Page 28 \/ 5. C5H3 M3F5 6. C3F4 P3F1 7. P3F1 N3F2 8. P7F1 P5F1 9. P9F1 P5F1 10. P9F1 P1F1 11. P3F1 M5F3 12. N5F7 P1F1 13. N7F5 M7F5 14. N5F6 K5F1 15. C3H6 N7F6 16. C6H5 K5H6 17. C2H4 C8H4 18. P3F1 N6F4 19. C5B1 R1F3 2NI}+0. C5H4 K6H5 21. R1H2 R1H6 22. R2F8 K5B1 23. C6H5 R6H5 24. C5H8 N4B2 25. R9F4 M5F7 26. R2H6 C4H7 27. R9F5 C7F7 28. K5F1 P5H6 29. K5H6 C7H4 30. R9H6 mate 4) Timur (Red) vs. Yung Le Ti (Blue), 1395 AD The great general of Southeast Asia, Timur, is rumored to have avoided a conflict with the Ming Dynasty in China by challenging the best Chinese player at the time, Yung Le Ti, to a game of Chinese Chess. The winner would be allowed all of the terriOJktories in Indochina without interference from the loser. One can only guess at how the history of that region might be different if the outcome of this game had been different. Timur moves into attack position early, while Yung Le Ti establishes his defenses. Through careful sacrifices, it is the great general and strategist, Timur, who comes out with a victory. Note also Timur's use of both Rooks to achieve his checkmate. Red Blue 1. C2H3 C2H3 2. R1F2 C8H5 3.PK N8F7 C3F4 4. C3F4 P3F1 5. P3F1 P3F1 Page 29 \/ 6. P1F1 C3F3 7. R9H7 N8F9 8. P3F1 R8H8 9. C8F5 R8F9 10. C8H1 M7F9 11. P3H4 R8H7 12. P4F1 R7H6 13. K5H4 P5F1 14. P4F1 C5H3 15. C3H5 P3F1 16. P4H5 G4H5 17. P5F1 K5F1 18. R1H6 C3F5 19. R4F6 K5F1 20. R4F1 N2F3 21. R4H5 K5H4 22. C5H7 C3B4 23. R7F3 C3F1 24. R7F2 R1F2 25. R7F1 M3F5 26. R7H6 mate 5) Morphy (Red) vs. Ching Ti (Blue), 1860 AD The great American chessmaster, Palos MQLcPorphy, is rumored to have agreed to play the Chinese master, Ching Ti, one game of Chinese Chess and one game of European Chess. After soundly defeating his opponent in the European game, Morphy was quite shocked to lose the Chinese game in only eleven moves. Morphy attempts one of the standard openings in Chinese Chess, but his experienced opponent uses it to set up the kill. Notice the power Ching Ti has when his Cannons are lined up together. Morphy can move out of the way RMJjbriefly, but not for long. Red Blue 1. C8H5 N8F7 2. P5F1 C2H5 3. C2F4 K5F1 4. N2F3 C5F3 5. C5F4 N7F5 6. C2H5 C7H6 7. R1H2 C6F4 8. K5F1 C6H5 9. K5H4 C5B3 10. N3F4 C5H6 11. N4F3 C5H6 mate Page 30 \/ "It is sufficient to estimate the enemy situation correctly and to concentrate your strength to capture him. There is no more to it than this. He who lacks foresight and under- estimates his enemy wSNJIill surely be captured by him." - Ts'ao Ts'ao Index Loading Instructions 2 Movement 3 Battle Chess II Menus 4 Load Game 4 Save Game 5 New Game 5 Set Up Board 5 Quit 5 Force Move 5 TakTOe Back 6 Replay 6 Suggest Move 6 Show Layout 6 Help Move 6 Sound On/Off 6 Music On/Off 6 3D Board 6 2D Roman 6 2D Chinese 6 Human/IBM/Modem 6 Levels UPt9L 7 Set Time 7 Shortcut Keys 7 Check 7 Playing By Modem 8 History of Chinese Chess 10 Basics of Chinese Chess 11 The Board 13 The Pieces 14 The King 14 The Counsellor 14 The MVQinister 15 The Knight 15 The Rook 16 The Cannon 16 The Pawn 17 Importance of the Pieces 18 Winning the Game 20 Drawn Games 21 Chinese Chess Notation 22 Strategy 23 Openings 2W 3 Midgame 24 Endgame 25 Appendix A 26 Fictional Games 26 SKID ROW SKID ROW SKID ROW SKID ROW SKID ROW SKID ROW SKID ROW 4 Save Game 5 New Game 5 Set Up Board 5 Quit 5 Force Move 5 TakBS1bsolutely necessary to consume a vast knowledge of opening moves since the Chinese Chess board is so much larger and more open than its western cousin. Imagination and innovation in the opening game very often results in a far superior position. Midgame: Like conventional chess, there is no single "formula" for success in the midgame. There are several guidelines that may be helpful in forming your own strategy: o Do not attack without enough reinforcements. o Try to shCT.5ift your point of attack from side of the board to the other in order to keep your opponent off balance. o Capture at least one Minister and/or Guard to help you set up your final blow. o Keep pressuring your opponent's weakly protected pieces, even if they are only Pawns. o Move your Rooks out into an attacking position early, but not at the expense of your initiative. o If a piece cannot be protected from an attack very easily, it is often better to use the 'extraDU 9` move to advance another piece to a much better position. When deciding whether or not to sacrifice a piece, you must take into account how valuable that piece is at that point of the game. For instance, a Cannon is not worth as much later in the game simply because there aren't that many pieces to jump over. Knights generally tend to become stronger later in the game because they benefit from greater mobility. Also keep in mind that a Cannon is invaluable when attacking a EV*}Page 25 \/ well defended King, since it is the only piece in the game that can 'jump` over other pieces. Endgame: The end-game in Chinese Chess is not quite as complicated as conventional chess because a) the King is very limited in its mobility, and b) a stalemate is considered a victory. There are a few points to keep in mind when approaching the end-game: o The King cannot move diagonally. Therefore, a Rook can effectively limit the King to only a few mFW3Ifoves without the risk of being captured itself. o The King cannot directly face the enemy King without another piece between them. This rule can effectively be used to contain the enemy King to a smaller area. o Make sure you have enough pieces to overcome the defenses. Otherwise, you should try to force a draw by using your offensive pieces (ones that can cross the river) in defense. The side with the most pieces or points does not necessarily have the advantage. MaGXCxny strategies exist to win the game or at least force a draw when you are at the disadvantage. Learning and practicing end game strategies by setting up boards with only a few pieces will greatly improve your Chinese Chess playing. "Use the most solid to attack the most empty." - Ts'ao Ts'ao "If you are able to hold critical points on his strategic roads the enemy cannot come. Therefore Master Wang said: HY>T 'When a cat is at the rat hole, ten thousand rats dare not come out; when a tiger guards the ford, ten thousand deer cannot cross." - Tu Yu Page 26 \/ Appendix A Fictional Games from History 1) Marco Polo (Red) vs. Kublai Khan (Blue), 1275 AD It is rumored that on one of his visits to China, Marco Polo engaged the great Khan in a game of Chinese Chess. Although-neither player was a master, Kublai was the morIZuރe experienced of the two. Marco Polo's fast and furious attack on the Khan's territory is at first successful, but he sacrifices too many pieces. The end result has Marco Polo with only one offensive piece remaining and a certain victory for the Khan. Red Blue 1. C2H5 N2F3 2. N2F3 C8H6 3. R1H2 N8F7 4. C8F4 C6F4 5. P7F1 C2F7 6. R9H8 C6H1 7. C8F1 C1H7 8. C8H3 C7B4 9. N3F4 C7H5 10. R2F7 C5F4 11. C5F4 N3F5 12. R2H5 M3F5 13. N4F5 R9F1 14. J[R2F7 R9H4 15. N5F3 R4F4 16. R8B4 C5B2 17. R8H4 R4H5 18. G6F5 C5F4 19. G4F5 G6F5 20. R4F5 R5H3 21. K5H4 R3F4 22. K4F1 R3H7 23. N4F4 R7B1 24. K4B1 R7H5 25. R4B2 G5B6 26. R4F3 K5F1 27. R4B1 K5B1 28. R4F1 K5F1 29. R4B1 K5B1 30. resigns 2)Tai Tsung (Red) vs. Emperor Chao (Blue), 975 AD Tai Tsung is one of the early masters of the game of Chinese Chess. His strategy is unusual and worthy of observation. Un- Page 27 \/ like many players, Tai Tsung K\g*used his Pawns as offensive spearheads for his attacks. Here is one of his rumored games against the Emperor. Notice Tai Tsung's early sacrifice of his Cannons for position. Then he slowly advances his Pawn along the seventh rank to secure his victory. Red Blue 1. C8F4 C8H5 2. N8F7 N2F3 3. C2F5 N8F7 4. N2F3 C5H8 5. R1H2 C8H9 6. R2F6 P7F1 7. R2F1 R9H8 8. R2F2 N7B8 9. M3F5 C9H7 10. P7F1 C7F4 11. N7F6 M3F5 12. N6F7 K5F1 13. M7F9 C7H1 14LGb,. R9H7 R1F1 15. P7F1 N7F6 16. P1F1 R1H4 17. R7F3 C1H5 18. N3F5 R4F6 19. P7H6 R4H5 20. G6F5 R5H1 21. P6F1 R1F2 22. G5B6 R1H2 23. C7B3 C2F1 24. P6F1 N3B1 25. C8H9 R2H4 26. K5H4 C2F6 27. P6F1 K5B1 28. C9F5 C2H6 29. C9F1 G4F5 30. P6F1 mate 3) Su Hsun (Red) vs. Tai Tsung (Blue), 989 AD It is rumored that the aging Tai Tsung put his undefeated record on the line against the poet Su Hsun. Tai Tsung as usual moves his Pawns out early, but Su Hsun r7^%OCapture the enemy piece putting the King in check. A player who cannot escape check in one of these three ways is said to be in checkmate and the game is over. If a player is not in check, but any move the player makes will put him in check (which is illegal), the player has been stalemated and loses the game. Page 21 \/ Drawn Games As in conventional chess, if neither side is able to capture the opposing King, the game ends in a draw. This often happens if neither side h8_|Das any pieces remaining which can cross the river. There are two other rules, unique to Chinese Chess, which help prevent draws: 1. It is illegal for the same piece to put the opposing King in check three times in a row. "Draw By Perpetual Check", as it is called, is NOT allowed. 2. It is illegal for a piece to chase an opposing piece back and fourth. If either piece moves to more than two squares while the "chase" occurs, then it is legal to continually threaten that piec9`?Ze. Also, if the threatened piece is protected at either point, the chase can continue. For example, a Rook moves from point A to point B to avoid capture by an enemy Knight. The enemy Knight then moves from point Y to point Z. If the Rook moves back to point A, the Knight could not move back to point Y unless the Rook is protected at either A or B. Therefore, draws usually occur when both sides are reduced in power so that neither can penetrate the enemy's defenses. Pa:aUge 22 \/ Chinese Chess Notation For the purposes of playing Chinese Chess by computer, algebraic notation is used to enter and note moves. The letters "a" through "i" run across the bottom of the board from left to right, while the numbers "1" through "10" (or "0" for our purposes) run from bottom to top. Therefore, to move the red Cannon on the left to capture the blue Knight on the first move, you type B3 B0 Descriptive Notation is more commonly used in texts containing games, although it is rather awkward. The vertical lines are numbered "1" through "9", left to right for red. Each move consists of a four letter code. The first letter is the piece's designation (eg. "C" for Cannon), the next place is the number of the file (line) that the piece is on. The third letter represents the type of movement ("F" for forward, "B" for backward, and "H" for horizontal). The last digit<cQ1 represent one of two things: if the piece remains on the same vertical line, it is the number of steps taken forward or backward; if it changed lines, then it is the new line the piece is on. The four opening moves in Fig. 1 can be represented as follows: Algebraic H3-E3 B1-C3 G4-G5 B3-B7 Des=duܙ4criptive C2H5 N8F7 P3F1 C8F4 Page 23 \/ Strategy The Objective in Chinese Chess is the same as in conventional chess, however, the strategies involved are much different. In Chinese Chess, a positional advantage is very important, since the King has such limited mobility. Often, a substantial material advantage can be offset by a single Rook deep in>e-K enemy territory. Remember that Chinese Chess is much quicker and deadlier than conventional chess. It's very common to win or lose in the first few moves of a game. Be aware of the many ways a King can be checkmated and watch for these positions developing. Openings: There are many different openings in Chinese Chess. Whole volumes have been dedicated to this single facet of the game. The most common opening is the "Central Cannon" opening. This consists of moving eith?fD`er Cannon directly behind the central Pawn. Subsequently, the Knights may be moved out to defend the central Pawn in case the opponent decides to open similarly. Otherwise, the central Pawn can advance with little fear of being captured by the enemy Pawn because it would place the opposing King in check by the supporting Cannon. Other variations on this opening consist of 'jamming' the enemy Cannon by advancing your other Cannon to the seventh rank or, using the Cannons to defe@gnd ranks adjacent to the river from attack. Other strategies involve moving pieces to free the most powerful piece, the Rook. Carefully watch which pieces are endangered and which ones you can capture. It's important to establish yourself offensively and defensively from the start of the game. For example, you can capture an enemy Knight with your Cannon on the very first move. This is generally not considered a good move since the resulting loss of your Cannon is Page AR~?24 \/ usually devastating in the opening game. However, it is important to note that you can threaten many pieces within one or two moves. "Those skilled at making the enemy move do so by creating a situation to which he must conform; they entice him with something he is certain to take, and with lures of ostensible profit they await him in strength." - Sun Tzu Though the opening game is important, it is not a,igs; the valiant the bells and drums; the weak are servants and prepare food. The wise lay plans." - Wu Ch'I Counsellors: Counsellors may move one point in any diagonal Page 15 \/ direction within the Imperial Palace. Ministers: Ministers may move exactly two points in a diagonal direction along the same line. They may never cross the river and they cannot jump over or through obstructing pieces. Knight-jKs: Knights may move one point forward, backward, left, or right, followed by one point diagonally left or right. Unlike conventional chess, the Knight may not leap over pieces to make its move. For example, if a point directly ahead of the Knight is occupied, the Knight cannot move forward in that direction. Page 16 \/ Rooks: Rooks may move any number of unobstructed points in a horizontal or vertical direction. Cannons: The Cannon moves much like the Rook. It.kLo may move any number of points in a horizontal or vertical direction. However, in order to capture a piece, the Cannon must first jump over a single piece of either color. This piece is called a "bridge" or "screen." The Cannon then moves to the point occupied by the captured piece. Page 17 \/ Pawns: Pawns may move a single point forward, until they cross the river. After crossing, they may move left or right in addition to forward. Pawns may never move backward and t/lykhey never promote upon reaching the far end of the Board. Unlike conventional chess, they capture by moving straight ahead. Roman Lettering Each piece is represented with the following letter on the 2D Roman board: K - Kings G - Counsellors (Guards) M - Ministers N - Knights R - Rooks C - Cannons P - Pawns Page 18 \/ The Individual Importance of Each Piece By now, you should be getting a sense of the power of each piece. 0mThe Rook is considered the most powerful piece because of its ability to move swiftly from one side of the board to the other. It is considered to have the roughly the power of a Knight and Cannon combined. Its power diminishes slightly toward the end of the game as it requires the help of other pieces to penetrate a well-established enemy defense. The Cannon is considered the second most powerful piece because of its ability to destroy from a distance and its swift movement. 1n0Like the Rook, its power diminishes toward the end of the game because its capturing power is reduced as more pieces are eliminated from play. However, it is perhaps the most important piece during the opening both offensively and defensively. The Knight is considered only slightly less powerful than the cannon because of its restricted movement early in the game. During that time, it is used primarily for defense. Its power greatly increases toward the mid-game as fewer piece2oاQs get in its way. Ministers and Counsellors are extremely limited because the former can never cross the river and the latter cannot leave the Imperial Palace. For this reason, both are used exclusively for defense. Ministers provide the outer defenses while Counsellors block attacks within the Imperial Palace. Pawns are considered the least powerful pieces because of their limited movement. Once across the river, however, the Pawn's power increases as its movement abilit3pnies increase. Initially, a Pawn is used to block the enemy's attacks and provide bridges for the cannons. Unlike conventional chess, Pawns are not promoted when reaching the far horizontal line. Therefore, it is not always wise to advance your pawns too far across the board. A way of remembering all of this is to think in terms Page 19 \/ of points: a Rook is worth about 9 points; a Cannon about 4.5; a Knight about 4; a Minister or Counsellor about 2; and a Pawn about 1. 4q"G If the Pawn has crossed the river, however, it should be considered about 2 points. Because of the King's importance in winning the game, his value cannot assigned a point value. Keeping this in mind, you can see that you would come out well ahead in power if you were able to trade a Knight for a Rook. However, there will be times when you may want to sacrifice a high value piece for one of much lower value - if, for instance by trading a Rook for a Counsellor you can set u5rKp for checkmate in the next move, then it doesn't really matter how many points you have lost. What ultimately matters in the game of Chines Chess is whether or not you win the game. Everything else, including points, is second. Page 20 \/ Winning the Game Because of the limitations on many of the pieces' movements, Chinese Chess games are generally shorter than conventional chess games. Basically, there are two ways to win: 1. Put your opponent in checkmate. 1. S6]xItalemate your opponent. A checkmate occurs when a King is in check and he has no way to escape and he has no way to escape the check. A stalemate occurs when a player has no legal moves to make. A player is considered to be in check when his King can be captured by an enemy piece on his opponent's next move. A player can escape check in one of three ways: 1. Move the King out of the way to a safe point. 2. Move another piece to block the path of the check. 3. !t(ely difference is that you never need to type any dialing commands. Page 10 \/ A Brief History of Chinese Chess The central theme in all forms of chess is that chess is a representation of war without the randomness or inequalities of real war. Both sides begin the battle with the same number of pieces, and except for the privilege of first move, the sides are completely even. "Understand the Principles and the Enemy Will Be Vanquished." "uH0 - Ping Fa The beginnings of chess can be traced back to seventh century India, where the game was called 'Chaturang`. Soon, it spread to the nearby regions of Persia and China. By the eleventh century, the game had migrated throughout Europe by way of Spanish and Italian traders. During this time, it underwent many modifications until it became the international version of chess that is seen today. While all this was happening in Europe, chess was undergoing diffe#vurent changes in China. The Chinese version of chess differs from its western counterpart in that it more so reflects the Chinese culture and philosophy. For instance, since the Chinese were the early developers of gunpowder, a piece representing a cannon was added to the set. Each piece has a unique history associated with it which reveals something of Chinese culture. The river in the middle of the board represents the 'Celestial River` or the 'Yellow River` dividing the "Nort$w )hern Territory" from the "Southern Territory". All in all, Chinese Chess is perhaps a more colorful representation of war. It combines a richer historical feeling characterized by the symbolic presence of each piece with a greater scope of movement allowed by the larger and more open board. Page 11 \/ Basics of Chinese Chess The goal of playing a game of Chinese Chess is identical to that of many other games - specifically, defeating your opponent. In Chinese Chess, t%x!'his is done by placing your opponent's King in checkmate or stalemate. Here are the rules of Chinese Chess in a nutshell: o Two opponents play against each other. One player is usually red, and the other, blue. o Each player has one King, two Rooks, two Cannons, two Knights, two Ministers (blue Ministers are sometimes replaced by Elephants), two Counsellors (or guards), and five Pawns. o The object of the game is to put the opponent's King in "checkmate" or "stalem&yiNhate". o The red player moves first then the two players alternate moves. You must move when it is your turn. o You may only move one piece per turn. A move is when a piece moves from one intersection to another intersection. Each kind of piece moves in its own individual way, described in the section of the manual titled, "The Individual Pieces." o No piece (except the Cannon) may jump over or pass through any other piece on the board when it moves. Only one piece can'zr] be on an intersection at a time. o Any piece may capture any of the opponent's pieces by landing on the same point with it. The captured piece is removed from the board and is out of the game. You may only capture one piece per turn. o When an opponent's piece threatens the King and that piece could capture the King on the next move, the King is said to be in "check". o If your king is in check, you must either move the King out of check, block the attack with anoth({IIer piece, or capture the piece putting your King in check. If you cannot escape check in one of these ways, the King is in "checkmate", you lose, and the game is over. Page 12 \/ o If your King cannot make a legal move and is not in check, your opponent has achieved a victory through stalemate. In Chinese Chess, a stalemate victory is just as desirable as one achieved through checkmate. o A draw occurs when neither side is capable of achieving a victory in the ways descri)|Djbed herein. "Nothing is more difficult than the art of maneuver. What is difficult about maneuver is to make the devious route the most direct and to turn misfortune to advantage." - Sun Tzu Page 13 \/ The Board As you can see by looking at your screen, the chessboard consists of nine vertical and ten horizontal lines. When you boot Chinese Chess, all the pieces are in their starting positions. All *}f^Chinese Chess games start from this initial position. Each side has an Imperial Palace made up of nine points in the 3 x 3 square marked by the diagonal lines. The open section, called the river, in the center of the board divides the northern territory from the southern. The markings at some of the intersections denote the starting positions of the pawns and the cannons. Page 14 \/ The Pieces Kings: The King may move one point forward, backward, left, or right, but +h9 may never move diagonally. He is also restricted to movement within the Imperial Palace. The King may never move so that he is in check or directly across the board from the enemy King with no pieces in between. Also, another piece may not move in such a way that the King will be in check or that he will be directly facing the enemy King. "The short men carry lances and halberds, and the tall men bows and crossbows. The strong carry the banners and fla`f 3D Board Shows the board in its splendid three-dimensional view with all pieces animating. 2D Roman Shows the Two-dimensional board with Roman lettering carved into the pieces. 2D Chinese Shows the two-dimensional board with Chinese lettering beautifully engraved into each piece. Human/IBM/Modem Plays Red/Blue Use these six settings to determine who plays which side. For example, if you wanted to play against another person, set Human Page 7 \/ Plays Blue an.Cd Human Plays Red. If you wanted the computer to play against itself, set IBM Plays Blue, IBM Plays Red. Any combination of these is allowed (Exception: Modem Plays Red, Modem Plays Blue) as long as one side plays Red and the other plays Blue. Levels Levels Novice through 8 are available. Novice is the easiest, and 8 is the hardest. The longer Battle Chess II thinks, the more carefully planned its moves will be, and the better game it will play. Under the Novice level, Battle Chess II only does one simplistic board evaluation. Remember, if it's taking too long, you can always override the thinking time by using the Force Move option. Set Time This lets you change Battle Chess II's average thinking time to any amount you want, from 1 minute to 10,000 minutes. A window will appear after you pick this option. Type a number measured in minutes and press the key, and Battle Chess II will take approximately that long to think per move.  A Shortcut Keys If you don't want to use the mouse to select the menus, certain shortcut keys are available in combination with the ALT key. See the box below for the keys. THINKING TIME PER LEVEL Level Time Nov. Special 1 5 seconds 2 10 seconds 3 30 seconds 4 1 minute 5 2 minutes 6 5 minutes 7 10 minutes 8 15 minutes Check When your King is in check, the mouse pointer will change to a "check" icon. It will change back to the normal pointer when the King escapes check. Shortcut Keys ALT F Force Move ALT M Suggest Move ALT T Take Back ALT S Toggle Sound on/off ALT R Replay ALT L Show Layout ALT H Help Move ALT U Toggle Music On/Off Page 8 \/ Playing Battle Chess II by Modem You can play Battle Chess II against a distant opponent if each of you have a Hayes-compatible modem hooked up to your IBM. If you have only one com port, you cannot have a mouse driver installed. If your modem is properlE;y connected, as shown in your modem manual, there are 3 steps to start playing over the modem with Battle Chess II. 1. Arrange with your opponent who will be Red and who will play Blue. After you've agreed, both of you should load Battle Chess II and set your opponent's color with the "Modem Plays Blue" or "Modem Plays Red" menu option. Hang up the phone on both ends before continuing. 2. One player must set his modem to auto-answer mode. You can do this by pressing the  ;then typing ATS0=1 and pressing the key. (That's a zero, not the letter "O".) 3. The other player must call the player whose modem is set to auto answer. To dial a number, press the key then type ATD 555-1212, substituting the correct phone number, and press the key. You can use any phone number with the ATD command, including area codes. Your modem will pick up the phone and dial the number, and if all goes well, it'll then connect with the modem on {̘the receiving end. If you get this far, you're set; you can start your chess game. When you move a piece, that move will happen on your opponent's end as well as yours. Note that after the two players are connected, the menu options New Game, Set Up Game, and Load Game will send an entire new chess board to both sides, discarding the current game. When you set one player to Modem you can send text to your modem or opponent by pressing the key. This will bring up a dialoguTe box in which you can enter a line of text. The window will disappear when you press and the line of text will be sent. This is the way you control your modem in Battle Chess II, Page 9 \/ using the modem's AT commands, and it is also the way you send messages to your opponent once you are connected. Press the key then type one line and press the key. A window will pop up on your opponent's screen with your message. After he or she dismisses the window, gthe game can continue. You can receive these messages at any time except when a window is open on your screen. If you type modem commands in this way, the modem will act on them. See your modem manual for details on AT commands. There are two steps to break the connection and hang up the phone. First, press the key, then type +++ (three plus signs), press , and wait a moment. This will get your modem's attention. Then press the key and type ATH to tell your sF modem to hang up. This will close the connection between the two players. Battle Chess II communicates at 300 baud with 8 bits and no parity. Playing Battle Chess II With Serial Cables If you and an opponent have two IBM computers, you may play with one person at each IBM. Hook up a null modem cable between the IBMs' serial ports. Then one person should pick Modem Plays Red and the other, Modem Plays Blue. You can proceed to play as if you were connected by modem. The on Q The bar is set (as for the high jump). Waggle the joystick to build up your power and press the fire button to start the jump angle sweep - the jump is made automatically. This process is repeated until you fail to clear the height. [8] DISCUS, HAMMER & SHOT  i>[ Build up speed (yellow bar) by joystick waggling - as you do so, you start to turn. Your rotation or facing is given by the blue rectangle. When the blue rectange fills its box, the facing is ideal and when the box is empty, you are the face opposite direction to the throw range. Whilst you are turning, the anlge meter oscillates up and down. The o UWnset of tiredness and the speed of rotation depends on the projectyle you are throwing. [9] The JAVELIN. Build up speed by joystick waggling and press the fire button to start the angle sweep. Keep the fire button held f&down and release it at any time to throw the JAVELIN. Overstepping the throwing board at the end of the track results in a vold throw. [10] STEEPLECHASE (400m HURDLES). Speed builds up automatically, reaching a maximum. Press fire to hurdle. Speed drops back to 0 if you fall! OU And that's it! The Doc was typed by Foxy!/The Company! Big hello to my friend: --> *HawkmooN* Some hellos to all active members in the cracking Factory! and to: All in my conf., Skelly & Brainie, JACK! (the crazy supplier,beat me!) Xenomorph/Skid Row, oֱOlivier & Waremonger & Bigfoot & Jester/Quartex, Strider & Warlord/Fairlight, Metallikat, Andeveron, The Omen!, Stalker, Garp, Ringo/Classic, Cpt Midnight, Papillon and the rest of the cool guys I know and respect! And boomba boomba to Mr.Video, Corsair & Juergen & Nos! Booomba!! *** DANSE MACABRE *** (713) 324-2139 *** DANSE MACABRE *** hurdle. Speed drops back to 0 if you fall! Py. New Game This option lets you start a new game at any time. Set Up Board This option lets you set up games for testing strategies. Set Up is performed on a 2-dimensional chess board with the additional chess pieces arranged vertically on each side of the board. Any of the pieces can be selected and moved into any position by clicking on them with the mouse. Keyboard Users: To select a piece on the side of the chess board, press the key, then using the arrows choosXIe a specific piece, and press the key. This will return your chosen piece to the chess board. From Set Up, you have four additional menu options: Clear Board: Removes all pieces from the board. Restore Board: While remaining in Set Up, this aborts any changes you've made. Next Move Blue, Next Move Red: This determines who moves next. Done: Returns you to normal playing mode so you can play the game you've set up. Note that once you've entered Set Up B]N&oard, all moves stored from your current game are lost. Quit You've had enough. Exit to the operating system. Force Move If you get impatient while waiting for Battle Chess II to make its move, you can force it to move, you can force it to move with this option. This interrupts the computer's thinking process and makes it take the best move that it has thought of so far (this command is not instantaneous). Page 6 \/ Take Back This option will take back the last move made by either side. You can take back as many moves as you want, back to the first move you made. Replay Let's say you've just taken back a move, then decided it wasn't such a bad move after all. Just select Replay to put the piece back where it was. Suggest Move Want a hint for your next possible move? The suggest Move option will give you that hint. Flashing highlights will appear on a point occupied by one of your pieces and the suggested destination point (this c~&eommand is not instantaneous). Show Layout If this is selected, a window will appear showing the 2D board and pieces. This is advantageous when you want to see the board layout without the pieces in the way. Help Move If selected, legal moves will be solid green squares while illegal ones are solid red. This defaults to on. Sound On/Off Toggles the combat and animation sounds on and off. Music On/Off Toggles the individual music scores for each piece on and off.# %@ `Jg x h!Cp.ELAp`("H"(Q/|`ЙQ"`ЙЙЙЙYn"(gR A`NuHy>NU x h.(jp`\ Ox&<IaT g!Hּ QB&<C~ a0C| a( G"OE'@`+gJkn` a$fRkJkk.Rk `&vA`vA"$A a8JgJf`L `~H< *a/"H&<pJWFgFH&<af6$ мNvg"g" @!_ A"_f B $@ai############################# :: ::::############################################################### ::: `:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::' INTERNATIONAL ATHLETICS DOC! ---------------------------- CONTROL ------- [1] General: Control is by the Joystick. To select a name, icon etc, move the joy>T3stick in the appropriate direction and press fire. In the `event' control icon (Torch), moving the joystick horizontally will toggle the event status ON or OFF. But REMEMBER tu plug your joystick in Mouse Port! [2] 100m, 200, 400m: Waggling the joytsick, and pressing fire boosts your speed. for longer d_X:istances, don't flag out - conserve your energy for the final sprint! [3] 110m Hurdles: (for 400m hurdles or steeplechase, see 10) Waggle the joystick for speed and press fire to hurlde. Remember - accurate hurdling is far more inportant than high speed waggling! [4] 800m, 1500m, 5000m: "/b Tactical information is provided on the inset panel. * The Yellow bar represents your remaining energy. When it falls to 0, you will collapse. * The RED Bra represents your energy output. This combines with which lane you are in to give your speed. Runners move slower on the outside (left handside) lanes ans faster as they move to the inside (right hand side) lanes. * The top number is your position in the race. * The bottom number is the number of lapg,s completed. Moving the joystick left or right will move will you in or out of a lane. Moving the joystick up or down will alter your energy Expenditure. [5] LONG JUMP AND TRIPLE JUMP. -The Tactical display shows: * The Yellow Bar represents power. * The Blue rectangle insn't used. * The red line shows the jump angle. Waggle the joystick to increase the power, press fire button to start the jump angle speed sweep - you will jump automatically. (The final jump angle will be the position of the jump angle indicator when you make the jump).  Nj [6] HIGH JUMP. * Only the red angle indicator is used. Firstly, set the initial bar entry height by using the joystick. You will now start your run - press and hold on the fire button to start the angle sweep and release the button to make the jump. If the jump is successful, the bar will will fgo up 5cm and the process is repeated until you fail to make the height ހ. N.B: With this, as with all the events that use the angle display, the optimum angle is 45 degrees (halfway down the scale) and the closer you get to this, the better will be your performance. [7] POLE VAULT. ### ### ::### :: ::### :### ::### ### ### ### ######### ######### ######### :####### ::: ::### :### ::### ### ### ### ######## :######### ### ##### ::##### :::: ::### :### ::### ### ### ### ### ::::::### ::### ### :#### :::### ::::: ::### ::####### :### ### ### ### ::::::### ::### ### ::### :::### ::::: ::### :::##### ::### ### ### ### ::::::### ::### ### ::### :::### ::::: ::#### :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::####################################ӄ&  )0SundayMondayTuesdayWednesdayThursdayFridaySaturdayTodayYesterdayTomorrowFutureH04&HCHCBCԃH@H@B@ЂL Nu/BJjDRDJjD Da"JDgD(Nu/BJjDRDJjDa `H0HAJAf HA64B@H@"H@20BAHAL NuHA&"BAHAH@B@tЀӁbR@QL NuH? CON:0/0/640/100/ARP Process*NIL:*fH?Hzp BQO*fa/@ kHH  x(h&lA\/H** cg*g .Y` odra(/@ o*/@,.X/E+B:+B+E+l+l+l n0+h&,,",(MN)@AJ XB!H"o  H @!IA\!LP(A XB!H*f*g)j )j`t kwf * f C`\ * fA"$<N/| )@gv *fAv fAR"$<N" f&/| )@g *f g @)hJf A/H`Nt*$o( o (a p(f B",gN(.",gN( fp,F%G< )@R"F oD )@T )oA\"o"Rn EG"L/,xN,_$a@ /OLL?Nu"/,N /$g (@*"*a@ /g @B /(g @$(gal /o @/,xN,_ /Dg"@N / `fJg gN",g Nff",gN",g gNNu&5("5( N"BN$fNu*x*m&o(,o /gN"/ fA"$<N+@g"N(Jg - @+hAp"$<N+@grLH8$-g(B)@8)@0)A)A (k@"-g*$A/j ,/j0/j4L%A %@Ba",n0Ld*C$L NB'|"K/,xN,_pNu.,o(x(lL4H,,(,g n"ؐBH",g& 5 到f+( +,Jg+0$/"/a> ,"@N ,g&@$+gadJg/k<"/N$N xR(' / g$*@+G+l+FA "N@,x"MN,xSj Nv.<`N xR('*n"*U zJgRca.pNuFa$pNu" g rJWF,<c,pJWFV<c <܀NuNEWCON:0/0/640/100/NEWShellCON:0/0/640/100/NewCLIS:Shell-StartupS:CLI-StartupNew Process %d. g&L gJf NuH?<*fG~I*a/A*gA/ Ia/ jG(Ka/pBQa8g(A A"RN/oJf/|Ba /O4L$<*,,n0Ld* <"@pH>(jNL|NupNJg&@X",R A&&B*n"&NupBQ/H8pJWF/@4j/j $/j(*V0fN/@$J(fN/@(/| /4<м0N"@/@,gFG, #@ o8f"/4 +#Aa'@`+gJkn` a$fRkJkk.Rk `&vA`vA"$A a8JgJf`L `~H< *a/"H&<pJWFgFH&<af6$ мNvg"g" @!_ A"_f B $@a }f`;|^`@0-Pm`g.;@`g(tERB$R g m@NCNn;B_AAm0;@;|Ba aJaD`bHxm>n8-> <8A"Kp rt4-<6->_CoHBBBHBv,n8zN,L@ Nu|hÃfpmFm|lpmHo|ElH ?@E t6 |/,n4pa,WrN:t,n4pa~,_"g$A*\J<fHLJH J,n8NJL@g J"m"iNJg2Cfap m hWCfaAfa ;mP``pm\f m.( K"m#hR)"i ga -bg ,n4"@N,_a"MN L"maBNuCal m h"Hg</fC`<:fJfB m ;@$;@,C`< m"PaA p BQRm@RmDa0 m h"ONJ@ga` OCa  MNJ0` Jm@g MNDJpg|gCaVBm@Nu m(g M <aJfrJlrACaHJg2->Rm>|lA A!`$I/,n8N,_"J m$P K/,n8N,_NupH@JfpRJf/^N"JgB&@ @C _QB!$WQO`$R g"@+)f ACNl&$ LNu/N"_ fNuA0-B "JLD)gNNu A"jN` A,n8N`,xNb`N` A,xN`Nd`N&`N`,n4N`B *g @fN``R) NuS)NuXH?g8 Ag$A&|gA%nA |g |ma"Bf` g"@ABp QIp(mRztN&<m<fRoRBR`"|dm|da@E<fEtRoZR`"/a "JfSAU"a`"p"SaNu<0H HANu -g,"@"-m:<$a:R"HAa:"-m2a -g "@afpL`"p8`p2`p,`p&`p `p` p`p`p/,n0N,_Nup`p`p`p`p`p`p`p`p`p`p`p`p`p`0<a" Nug A"( Nu0<` 0<`0< x h NuJg"X/"</,xN:,_"Jg @ Nu g !/,xN.,_NuHNLJg(H2E$O&O/B/B,xN O`LLNuJk>"+g RA'A|Pe(Jg$H0L@ $ NL@ JkЫ'@BNuH0&@E/,xN,_pJWFL NuNurH@p/,xN,_g?p"N"@Jf0,xNLApNu3_LH|,x#n/ J gN`A XB!HL@Nu gHB,xJ gN"Wp)NLBN/ G#K H'@Gr fBQ`&Q&_NuHjNS".A$x(jE\"ON"O k,xN ,g @N` JN JN"@g . File Drawer OK ParentCANCELDrives?<g <Z  1t8 t8 Ut8 t8 @ K H?<$HB <N*@Jg$+JAtCj0E,Q m(g KpaH="*.4p"<,xN:.gˎpap"FNEA`aEfAMa0-U@r+7t@6-maHrVaH2+ UAa>r+7a4pa<0+Y@a2 p_paprtvEapaprtvaECaECa~EnCarEBCafa A"G2f4-6-a8A"G2f6-a("Gp,xN.LD k>paaAfa`"F Gprxz Na0->]@2 H@Ao0J@lp;@< kV,xNJf8,WSmDfaJm@gaJm@gpm>faj` kV,xN`"@,g m(g Ip@a&`N`$)$i+iZ+i F+i$R+i(VN,W|gF|gƴ@gt|g| g|@fBp0*&"|vgS@gS@gS@gS@gS@gS@gU@o m(g Apa~Jk+"i"!I"_SnF`PNf, i fg |0A"aRBN`)gJ)Mg6 )Mn, )Nn" )< pm tn J0giLBiMCiND-i0"-i8)OgO);gO.E iOE.EnEO-i<a-iDn-iHra>J@g-i@j .64g$)4 @m &n&apJf|LNuBB)MJ)Ng )NfI.EgI=Aa=@B@)La=@wNu.EfS@HA00Nu|`? ."爐/ "nbr)"|}x@ 2f"|y@" "_ oꈂ`=A0. .Bf.Eg 32Nu <" "%tBjА6iiHAC </,NN,_LJgt"H,@-H-Ab=|C/,nbN,_-@gFC </,nNJf <CnN,_JgLH`AG.aAGNa`F#H| !|< !K!NNu#|< "dG | ||/,nbN,_NuCaA G aA"|G!KCJaAlGaA|GJ!K"N/,nbNP,_Cvp #| a(-@C#|dpa-@3pLH`#N#|< |/,nbN^,_NuB`B ")$gJnFf JJf:cAA (!I"#@ @ RnFC/,nbNL,_NuH ,I .JfFJnFo6A"P g #H"@-IJSnFBZ-i(R )$`"@J:g".Ʋ:o .gah n.2m n&S:-H.S&f n2>g.Eg>.f6.g. 2Bf .f`.g`axg| `>.B")$ nRfJk(R RR c)OgHAnrTf8BJ)f/,nbN,_`L@Nu$..EgFNug|`$g| `| .g|B>.~`t1|`H ,I0(k1|.Ef@gJfn.EfB.Eg.B.#f `."f.g3`.g:.fagg`$f `.`J>fF-n*>`>".6:o& n*-H*R:2m-n&* aʲ:l` J>f-n*>ag.Eg>.f6.g.[K=" p0(j8N"*ҩ#p"*ҩ#p ") ©Jfr`r#A $)ĩJfr`r#A gJ f$) G " p0(j8N$) "*p0(j$NR") p0(j(N`"*Ҫp0(j,N#j$r#A($n2ҪJg"*ҩ($0"*p8(j$Nrҩ(`"*ҪJg"*Ҫ$0"*p0(j$Nr%A`"*Ҫp0(j,NB$"*ҪJg""*Ҫ$0"*p8(j$Nr%A"*#p,J,g$*,l#B,#j0"),$*R"#A40nBҪ$0"*pD(j$N"*ҩ4$0"*pDʞBX(j$NRR$rҩ4`"*Ҫ#p(J(gz$)("*p<(j$N$)("*p<(j$NR")(p<(j(N"*tf"&*֪x8f&)(g$)(G," p<(j8N``<$) G<" p0(j8N`$$) "*p0IlNtgtvg`$*"*p0(jN#A$$*"*p4(jNҩ$gGT" p0(j4Nrҩ `Jfrp(j NNNq in drive 00Replace volumeis out of range is invalid- bad extension- not directory or filebitmap checksum error`b$)G|" p(j8N``"ҪJJl$)"pIDNN$)"pINN$)G" p(j8N`""0tgvg`N- bad block type- unexpected data block&*ցx8f(JgGx" p(j8N` r%ArN"$)fJfJ f Jg$)G" p(j8NrN- second root block- bad directory&勴8fJ8g*(*؁*0H8g$)G@" p(j8NrN - bad header#p,J,g$*,l#B,#j0"),$*R"#A40nBҪ$0"*pD(j$N"*ҩ4$0"*pD3̎#~ |Nu*8x'NVH0$n"|&j( QJ( f. QAlCp"Q2=| HnN0Bp`@ QAlCp"Q2=| HnN0.p0.p%@ XL N^Nu)>lNVH>8$n$. Jg / NX-j(=jX-j&j (j$p@ y h dfT n=X-H nHHX (+HHX (+HHX .oHHrЀ`BHHЀ.o 4e4|HHrЀ@.`B+HHЀ@..o |HHrЀ@.`B+HHЀ@.p0*p// N,,X.,.,X++SnPfXSng` n=X-H+HHX  n(.o|HHrЀ`B+HHЀ,XDX+SnfXSnf/ NJXg / NXL|N^Nu o ($!h $!@ h$BNu,J@ o (4!h 4!h8 !@8NuNV5Ξ0H?84. 6.$nJg / NX-j ,*4-j8(j&j =jX-j( n:-H&SEfTTTXUn"F=Q"n=Q"n=i"n=i"F=i=i"n=i"n=i nT8:&SDf=ESn=CSnp0.=@p0."ЀЁ=@0.HJngƴ@b nc0.nf^0.nf 0.ngJp0. Gp0.r2.r2.Nl28`&0SAJ@f2Dp0. G0.nfB0.nf 0.ng,p0. Gp0.r2.Ёr2.NlR28p0. G2D`&0SAJ@g6;`@c0.nf`0.nf 0.ngLp0. Gp0.r2.DЁr2.Nl28`&0SAJ@f2Dp0. G0.nf`0.nf 0.ngLp0. Gp0.r2.r2.NlR28p0. G2D`&0SAJ@fTTTXSnf n:-H&SEf/ NJXg / NXLN^Nu8&nP2 n2ABAHA HA0 2B@H@Nu B@H@HABA"BtҁрnRAQNu/$ B$HBHAЂH@B@ $Nu/$"a$Nu/$"a $74Nu/$lD"pJlDF @an4gD$Nu/ @p$lDF"lDF @aH$gD $NuH ,yL NL@Nu/,y"/N,_Nu/,y"/N,_Nu/,y"/Nj,_Nu/,y"/Nd,_Nu 4H\/,y LN:,_Nu/,y "o / N.,_Nu/,y "oN8,_Nu/,y "oN,_Nu4H /,y"oL N,_Nu/,y o / N,_Nu /,y8@PZ o / N|,_NuDЁr2.Nl28`&0SAJ@f2Dp0. G0.nf`0.nf 0.ngLp0. Gp0.r2.r2.NlR28p0. G2D`&0SAJ@fTTTXSnf n:-H&SEf/ NJXg / NXLN^Nu8&nP2 n2ABAHA HA0 2B@H@Nu B@H@HABA"BtҁрnRAQNu/$ B$HBHAЂH@B@ $Nu/$"a$Nu/$"a $ҧZ=v </ /,n"N,_"_NuL|Nupa&fB&`,)gJ/ Q"i"!I"_Snrf J&fv|))f /,n2N,_aPNupJn gNupC6/,n"N,_/,njpNpN,_"N Q"i"!I/.b"Np0.n/,n2N.,_ Nua. .&g"@a*NuNupa/,n2N,_"NuNu/ AL"P g #HJg "@a `BnrNu|/,n2N,_"_Nupax999.t.tnt49a}-B-BL JNup, `%Kz@>p#@@Jn gSn fBNBJBF3@R.&99.9.S.&l3Bn A"aAa/ C/,nbN>,_"_EH P .6B&n&aL 3.gNNu|)0) @ bXB)HA pN2<Q)f /,nbN,_Nu. ,. h |`3a3NuB) ig ig@ i g6`Jf BJ`p)g/ Q(in,b"$pN& vNVH> $n$. BF6*V=jd=jf0*h=@=@:*Zpr2*Ng yJh dgp=@jN/ N/* / p0/NBp0r2*V// NRCHn0.H/p0./p0./N=@8.O,`2/* / p0/NHxp0r2*V// NRCOSDfr2*Ngp0// NhPp0.// N|r2*Np€Pg *qg y h df / NVX) Jng B/ NP// p0/NJnO g/ N/ N #p0&ro  @-p`,"~‡ .~ GoA`p0 @oA`ARDnmp0*p/HnN&nPFg$`P`&p0*p/HSNXnPFfLN^NuH8 o4/"h8(Xg)gv`vgp`p`)gv`vgp`p@ Cf|`p0r2Ё@XSDfLNuNVH>8$n4.".(*6*X&j (j y(gz`z y h `fp`p,*qg *qfp0, F *-pJgx*qg-T4 Bdp0" A-pH`B2A0A0H @mo @f`A` A`A+6p0*p/HnNP .ќSCg`*qg-T4 Bdp0" A-pH`B2A0A0H @mo @f`A` A`Ap0*p/HnNP(SCg,`Jgp0"@ 1HќSCg`p0" A(HSCfL|N^NuNVH>8$n4.<*X&j(K-j(p0*p @p"€ AgB@=@=@8=D nT=P6.p+@pnp+np+nXSCf:n6Kp0r2Ёr2Nl@p0r2.Ёr2Nlp0r2.Ёr2Nl@p0r2.Ёr2Nl@XngR`>BD nT=P6.p+@XSCf:n,GBp0r2 r2Ёr2Nl@Xnf/ NXL|N^NuNVH>84. "n ".(Q y h\ h#eHxp0/// NO`\p0 @p(Ȁ D0-H$i()m =ij=iX&iiq.p0)p @p(Ȁ DfJgH=Z+g*cHxp0/p0./BNORnSng `0.nXSng`=Z+g@p0. @p"€ A"n0cHxp0/p0./BNORnSng `0.nXSng\`Jg+k=ZcHxp0/p0./HxNOcHxp0/p0./HxNO.cHxp0/p-ܴC0./HxNORnSnfXSng`v++k=Zp0. @p"€ A"n0J.gcHxp0/p0./B`^cHxp0/p0./HxNOcHxp0/p0./HxNO.cHxp0/p0./HxNORnSnfZXSnf//*NPJ(gp0*J//*(NPJ,gp0*L//*,NP*qgHxB/*PHH/ RNOBHHL<Nu)"o y(g r i h(//)/ Nh`r i h(//)/ NO Nu o"y)gp0(X//(/Nh`p0(X//(/NO NuNVH>"n n $.)Og|`|)Ogp`p=@)Ogp`p=@p(:pr0QFB26p(r28p(r22JFgDdp0`p0JngCdp0`p0(JngAdp0`p0(XSfL|N^NuNVH>"n n ".)Ogz`z)Og|`|)Ogp`p=@p(4p(6p8JEgCcDcDcp0`p0@0HJFg BcDcDcp0`p0@0H(Jng BcCcCcp0`p0@0H(XSfxL|N^NuxL,\H8",y oL$o,"o0(/4N,LDNuH?8@HRo6.*AH1YRo*&H(I|` K ""LNR܂Q LNupLNuH8",y oL$o("o,(/0NLDNuH>0JDgHaL(`04/"&o$$o(+qg8,+6+T8+X0HSCH/p0//N4O lBRTSDg`+qg6,+6+T8+Xp0/0HRCH//N4O lBRTSDg^`,+6+T:+X El8H`(<p0+pr//+/ H/p0/0H//NvECEJEOnL(]f$ fr9 rN~`B`|9 |,0hf,Jfpfprr7Ё`pgpf`p f Jf;`Jfp f@`pfp fK`pfp fp#L`plp g |:h`Jf c `ppo^p(@"$ҁ&ҁ҃҂"|H1f |:0hHH" Ё`Rpn"$ҁ&ҁ҃҂"|H1g Rpn Ag @fBJm BHR//HH/Nd#O| RhRp nB* R .oXL|N^NuNVK1PH><(.&. &|(|$|BBBBBBB y h\p0(,` | R |zJo R"@8S`htp#n6 yJ>g*9~HH/p/ RHp8 y h>N$O Jm ђ` f8/HyN  #Pfz/HyN zP |0Xf |$XRpnJo f B9|B9~BHy//HH/Nd#O` (f</HyN zP |0XfRp nJmH"` [f`z |0Xf< |Xf B9|B9~BHy7&//HH/Nd#ORpo`  fJ9~f`HxHy//HH/Nd#OlJ9~fB T o 9S#p#`n R"@ 8 R"@ 8`R R"@ 8`B f//N P`. e-|p!n yJ6g y-h6r ` @*n"pB`4 \f( 0m 9nz 0m 9nRRpo`RRJf й o 9S#`r ` @*n"p`Z \fJR 0m 9o`:tz 0m$ 9nHHԂ"ԁЂr0$Rpn R f*@8` R*@8Jg ` R"@8o й l JoJJg 9m ` B L<|N^NuNV/. $.BH/.Hnp0/N8"O n`\"y o(#J.fN `"yS#p"`"p` |"PR IC(Rmr $.N^NuH88$/&/ &o$p(@B`J ;fRB4`<  f "o(p"`, "f"o(p`"Lp @p0p4 (//N  0Pe 9c  g ;g "g#pLNu"o /"R |z0m m N! ݆ B`pNu"| 9S"`SJo" |zp0rrf3 Nu hV nd tTNH>4.&vn`T~j\D.t\TN0$xnRLD>82,& `Rrd^J8("$G~xR2&JfTX&DpcDEMLKHJ !CDBRKAEHYZJ6C19082345<=>?BIJmwzvpFgEtqrsxr-1E09:@AKL#NVH> $n$. BE=jV=jZ=jd=jf0*h=@=@8*ND|r2*Ng yJh dg|/ NJDXg $n$. BE=jV=jd=jf0*h=@=@=jZ8*ND|r2*Ng yJh dg|/ NJDX%lg $n$. Bn6*V=jd=jf0*h=@=@:*Z<*NFpr2*Ng yJh dgp=@/ NJFXg8/ N EXf*qf0*X j80S@g&`/*8/ p0R` /* / p0/NO Bp0r2*V// NRCHn0.H/p0./p0./N=@8.O`2/* / p0/NHxp0r2*V// NRCOSDf8.p0.// Nfr2*NPgp0// Nh'8oPr2*Np€g *qg y h df / NVXJFg&Hx/ p0/p0r2./NO`JngHx/ NP// p0./NJFO g / NX`Jng/ N/ N$^4j(& L 0XN|<4d 6(DZ 4 l   l        NVH<8&|(|Hx$SHj N S4( 6 B PdJBf SE 8`0@ |$p( ``DJf`:62.*&"NVpH><&n&<*<-|zr k$-Hp(@fB nR +ᖉV(J0fB EB"y$i\ j#e "yp#@:` C#By`*C UR"|z*E(UR +( E .o C m$C-RHnp/.N(@"y) Pf / HnpNX"PfN "`v|xr`d`R FĹo FCp1f/EpHrHNX"PfN "Jf FCp1fBHxN "P FR(|lJgJf E .n CBJf8Jyg0`"*C UR"|z$|(RR$|z .nJf'n `B pL<|LN^NuNVH>8(.*. &|$|HyHR/HyN  9hOg 9l̔R*&(Ar(A@A/;z$xS*&l3Lr#_ y ( f hfB`/,yN,_L Jf$ gClaz gCajpNupNu '= f H d z topaz.fontprinter trouble: z make printer on-line. z out of paper. z check printer and cabling. z .check printer and paper. z \resume z xcancel/ / f,NX"_aZNu/ i( )$B aJf"W#i$ a"_a0Nu/ / NX"_aNu/ / NX"_aNuH (y lhNJfTC3| #o #o$B),iN/,y N|,_C/,y N&,_/,y Nv,_pJLPNu</v:(TH82xh> p l T P & "  z r n b ^ Z F B > :  z.<Bh  ll   & " 4 B Rtd840,($      C)/ /$|zB9|B9~ yB( BBJgJf NJg&Nnp#p#|#|1$_Nu"| Q3 V Q3 X Q3 Z Q3 \ Q3 ^ Q3 jNu"| Q0( VyfF Q0( Xyf8 Q0( Zyf* Q0( \y f Q0( ^y f Q0( jygp`pNuNVH< nh"h#h$h%p0( *pLfp.#B`HnHnp0( /N8&pO o`xJfBHxN (PJfx y( f/HnNX(PfXN (`NE" `RS  gJf //NX(PfN (fBHxN RSPJgJgJfJfBHxN (PpL !cLoY|S"ca`~-r-*+23'u qP.,1o'///?AAAAAAACEEEEIIIIDNOOOOOxOUUUUYT3aaaaaaaceeeeiiiidnooooo/ouuuuytyPGenericnjPLHDbv@|xtplhd`\XTPLHD@<840,($  r)>|xtplhd`\XTPLHD@<840,($  NVH?<$n(|,<-|zrABSEf * -@-@ =j,=j.=j0=j2-j4-j8 y (.-@-@&F S=h Vp0.V-@t4*<-B|Hn|N y(XfHn/ Hx` -n|p@&.ƀ-Ct4.V r-Cgp|/.|HxB/.|/ &nN*Og`-n|Xp0.Vg |` |v%-H8 yr(8D Dg Df Df"F Q h dgnx"F Q h bfnx"F Q h dgnx"F QJh df "F Q=h ft`Bnt$*(gnx$*(VDHH*+VD. .HH-@ n-Pg\ nJ g"n i p0=@"n i `P n=h n0(nRn n=h n0(nRn` "n ip0=@"n i=hJneFJne@Jnc:Jnc4v6.$v6.p0.րev6.$v6.p0.րdHn/ Hx` yt4("-B yt4($-B y-hJgD"F Qt4( (.g H@ H@B@؀`x.fn". N@&`N&F St4( ^(R"Sv6) \" .N@( S0( V @mo @f`&\r `&^r`&Zr Nl(Jg .c ` .-@ y-hJgB"F Qt4( .g H@H@B@Ԁ`^.fV". N@&Zr `8$."F Q  jH@ jH@B@Ԁ0( Z @f`&X$`&Vr Nl$Jg .bJf ` .-@f-| .g@|-D-BJgJg .gp-@"F Q( qgp-@p-@` y h!eT&yp0+ "<N/N-@&yp40+ "<N/N-@P` p-@p-@Jf .ѮJf .Ѯ`B.ygj8.=n=nnSn .-n-@ .-n-@8.=n=D&.|p?ƀ&n|p" €$p*Āpƀ-B|J|f,_`/,y Nv,_p@Sn `parallel.deviceserial.device/ &I/,y N|,_A8/,y N,_Jg Clf `Cf `.G/.Hp/,y N,_@Gk/,y N,_-@Ha`BH/,y Nv,_/ y hNXCl/,y N>,_p.Gk/,y N,_/,y N|,_-_H_G/,y Nv,_Sn p'@'@f. g"KN&_NupaNu=Nu=Nu"nHJga|`Nu`LPp/,y N,_*ECAH XB!HCZ-ID-IHp/,y N,_,FGAL XB!HA8-H-Hz-Hp"L/,y N,_~ /,y N,_$ g6A8/,y N,_Jg Clf `Cf ` g"nHJg#0)H n* pN` o /aNuJg8/,yH瀀a@BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~ 6Ak S"k"!I+f"K/,y N,_/,y N,_LNuHAC(ED < NLJfH.<,xNL``Jg"@##H"NPpNu/ @# ,@Cp/,y N,_#gFCp/,y N,_#gCgp/,y N,_#gAH#H6Ep&@/,y N,_p/,y N,_B9 ,_NuH.<,xNL`"y/,y Nb,_H.<,xNL`"y/,y Nb,_H.<,xNL`"yM/,y Nb,_H.<,xNL`"N0.n/,y N.,_p`Jtimer.deviceintuition.librarydos.librarygraphics.library #2* .@2 <>@BbcddXh Z$lT0ZX XX8@H N/ N"_NuaaaNuJn f/NXCZ/,y N,_C/,y N>,_"y/,y Nb,_"y/,y Nb,_"y/,y Nb,_/.""N0.mQL|pNu x(P2 n2ABAHA HA0 2B@H@Nu B@H@HABA"BtҁрnRAQNu/$ B$HBHAЂH@B@ $Nu/$"a$Nu/$"a $Nu/$lD"pJlDF @an4gD$Nu/ @p$lDF"lDF @aH$gD $Nu /,yLN:,_Nu/,y"o / N.,_Nu$| S021@$ @hf $S5|0`$S5|$|@2(HHL Nu td8V'f o, o, e o, &b`"C0 |0R0 |0J0f o,tpr Nz$Hx/ /`DJf4 `XJl4`4Jo~4!B`tJf4!`Jo4`ZJlT` Jo`JlF4  T h Zf45` TJh Zf60R`S`v L NuH0 $/&/$or Nz JT0r N$r Nz JR0r N$ J0L Nuxjx 08 &. tf|&d@(s0B&k0S(0U&l6D&l066P&k1W&v000S&l0L&v000SNVH><(.&. .&| .m@rm8Ѐ0;N *"^ 33^yt33493Zyp09Ѐ33Ry Rp09RЀ49@3|` 4B$| "p09N@5 Rp09b$SHxt49/N%@`$SJ`Pfv`Dx3r29ҁ$$SԪ`#Vx3T 3"< Nzd3rd Nz 3r N 9z3p09r0Ё8p09r0Ё9p09r0Ё:p09r0Ё;p09d3rdp09N` 3r p09N`3$S j@ hf 3'`0'Hx#Hy$$S jdN&P`Jg@p@$| t42 r29ЁԀ SԨ`pƀ0 |0"B`l 8y r$|2t49p0Ԁ$SԪ` Bt49 p0Ԁ$SԪ` Bt49 p0Ԁ$SԪ` B``t49T_ԹV-B*.t49$SԪ`-Bx`$E^v(np-@=y,<`SRSf JoJnS F(q"<$R B E*Tp09"eJn*b$ Rrd N"p0(B$ Rrd Nzr N"p0(B$ Rr Nz"p0(BVRt49 .Ђ-@p09b E*b0W,vp09c4J9gHxHyZ$S jdN&B9PJf//.`rt49_$SԪ`-Bp09$Ԯ[(B*b0WJ9fHxHy`$S jdN&tPJf //.$S jdN&PJfb yf p09`p3^y yTf p09R`p3T^yT`t49$SԪ_/pbX>.62 &a-120V&a-60VFHJNbdflrx~ "6J^r &d@(s0B&k0S(0U&dD&d@(s1B(s0B&k0S&k4S&k0S&k2S&k0S=(0U)0U(s0B)s1B(1F)1F(s0B)s1B(1G)1G(s0B)s1B(1E)1E(s0B)s1B(0D)0D(s0B)s1B(0S)0S(s0B)s1B(0I)0I(s0B)s1B(2S)2S(s0B)s1B(0U)0U(s0B)s1B(0D)0D(s0B)s1B(0D)0D(s0B)s1B&l8D&l6D&l1L&l0Ljpv|NE $*06<BHNTZ`flrx~ &,28>DJPV\bhntz(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(~,e0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0N(0Nfb^ZVRNJFB>:62.*& " ~zvrnjfb^ZVRNJFB>:62.*&" B>:62.*&" ~zvrnjfb^ZVRNJFB>:62.*&"H08$o&o"o vt(| Tr2( j0 @ eb` @eb`F @f` @e @!b@0;NDbr"C0 |R0 |J0f T h Zf "Kp8 T h Vf "Kp 4` T h Vf "Kp 2 T h@ hf "Kp!3// /NPO `T T h Zf09` TJh Zf120` o, 2@ 5-F45--EFPWMWPPWWWGHxxSTSTTRRRRRRRRRR R p1p0xaxaxaaxa02ODDD (08@HPX`hpx$&02468:DHR\^`blnx  $~(48BFJNR\^hlpt~$(,0:>HRVZdhj R[R\0c|R#R\0R$R\0R\\R\0|R@R\0R~R\0cS\0a_T<~-r-R[R\0+_S\0002TS\0003T'uPS\000.T,S\0001TR[R\0->S\0001T-S4TS\0001T-S2TS\0003T-S4TR]R\0A`A'A^A~R[R\0R]R\0R[R\0C,E`Rl @R\0E^ER~R\0I`I`I^IR~R\0D-R\\R\0O`O'O^O~R\\R\0xR\\R\0U`U'U^R]R\0Y'TR~R\0R@R\0a'a^a~R{R\0R}R\0R{R\0R\\R\0R}R\0R{R\0e^eR~R\0R~R\0i'i^iR~R\0dR|R\0R|R\0o'o^o~R|R\0:-R|R\0R|R\0u'u^R}R\0y'tyR~R\0|xXtplhd`\XTPLHD@<840,($  |xtplhd`0,($  |xtplhd.`\XTPLHD@<840,($  H>8&o$$/((o,vr(<*< Sf`$|"C28( f CB0(Rp @n D$P j Xf B|$o0 D$P j Zf B|0$o0 D$P j Vf B|M` D$P j Vf B| $o8"D Q ]$o8 Qh _6A SBfp D$P j0 hf"<`rP D$PJj Vf$o8 Ѐ"`" D$P j Vf$o8 "Ѐ`$o8 Ёr N,F$o8r6A SAfX D$P| $o8Jf EB(`$o8qjp @S("ED$o8 Ej` CR R"E(p @n`N S f&Jf 6`6Jl B6`(p&`" S!f Jf 6` Jo B6`` SfB SfB Sf SfB Sf S7f$o0 S8f$o0 S fV$o8 'f$o8$o8 %c` CR( CRr( CR$H o8r r |((`V S9f$ CR( CRC( CR$H o8(`, S:f CR( CRN(`JSf D$P| v L|Nu, , 5-FPWHxTR DX*p02 lLQRBy@`36BQBy:p096"4#Z y hh$f("y#.# 9#` #.# 9ѹ$SHx/9N%@` SJ`Pft`p#|P|B, S h0 hf <`pP@ |1HxHT$S jdN$P`/9  )HQ$S *`(yHt//NtO` y hh$fv`& S"yQ (`$I( Hx//"P/N|& y hh$Of2pl,B"S//$S y *`HpN|&O"//$S jdN$Pfpf 9.`p#P`$S *`(yHtN`tpgf S h Vf|M` S h Vf| Sr2( \ S@ Sh _ |0 S h Zfp0`p2@HxHT$S jdN$P$S jhN SJ`g0/9$S/*`N`d"/N38tX LNuH<8&/ o$(/($HJ,gB*z`t492&B  !Ѓ$S"B`SS oJg g TrN&@$Q"Br$ R Ѐ |:(B*$ R(B9$ R (B$ "< N(B$  8t J*g$Q"BSg`p092$p Ԁgp#*Rp094$ւp096b y hh$f`3$ R B L8 o$ /("o,$o0"/4&t@J&h0(yH@ lh$f@fr<F@(y l dfH(I*I,I$h3Xz4(j h(0BB>****X3xvB30o`oooRBV@SyxfSyzfL``2(XSA6(lg@ $h4(j h(*X:oSE QQ`DQ`8$h4(j h(*X:SEvB30o RBQPF'CFm0 `@, x0X`HhbP5 Z@`'%eg hlnI\.}1rR]'֧>%X+d3)ge %x8@ڜ>dɅ'S4Ɓ?8Y|pcO8 ozzU f@$'- %'-$a'-`%9}C0ljT_脨MM@ղ@3-B|`yji{ isDŽ?lLFa#O88u0!43r)>GDA90b=t Bb8$ca8@֦N7p CcS[;rNuKRϷt3?P+˪)Ҋ L V-(N")S#Ar#AnDґtԁr0($GL" p,(j(NrҩtNJf r p,(jNrҩ`#ir#Anr p,(jNrҩ`")S#Ar#An8ґtԁr0(#A t nvl`r.p0(jNrҩ`p$(jNN%X4: %X2J\g"*\p (jNp (jNJ`g"*`p (jNp (jN"*xp (jNNNqT ignored !Invalid option combination N & H **BREAK Jdg$*hG|" p(j(Np(jN"tgrp(jNJgr p(jNrtgFN"p(jNr u&>©0Jg 0r0m`b#i@lGp( &)0$< ")4p\(jN#AJf`0")$ҩ(!&)($)r p\(jN" SYS:Btԉ#B`Rrp(jtN#A JgB$B(""0p(jN$) !(")!u #i ""Jf")Np(jN$0#p(`,rҩ$"p(j4NJf")N")#pJfrNNqN#A p(j8N#A$vJ((fF#CBBx#D *) !X ") !JgJ"$0&0(8gG" p0(jN#A`G" p0(jN#Ar JfX"#p$J$g<$) !$(")$&0$)rp4(jN")$p4(jN#At "#pJfr G" p0(jN#A")p0(jN©F$) !(,"$0$rp0(jN&)$)") p0INp4(jdNMH@4,tf\>.62 4:<>BDLPTX\`dfhpx|  "$(*,.02468:<@BDH\^u%Nq8Gl" pHI4N#A<$),r pL(jN#A@$) #p(D$),rpT(jN#AHBLJf$)#p(&0( #C`"t0#B&R#Ct")NRt ҂p\(jtN#A Jf`r ҩ R#A$)S#BPr#ATPn&ҩtԁr0($)ԩT(rҩT`")ҩt ")4v!")8()4!H")8()4!H")4B ")4!DJr%Ad``r#A`V")ҩt0G" <(j(N`.")ҩt0" <(j,NtHgvNg`R")t0l~"Jgt#B"Jgt%Bd-z>Jdg0Jg(G" <(j$Nr%Ax <(jPNJg <IlN`r%Ah <(jN#Atgd <(jN <INJfr <(jNJg0"*X <(jNG" <(j$Nr%Ax`` <(jPNN#FROM/A,TO/S,TO,OPT/K,HEX/S,NUMBER/S Bad args Can't open %S %S already exists Can't open %S Option '%C' ignored !Invalid option combination N & H **BREAK Jdg$*hG|" p(j(Np(jN"tgrp(jNJgr p(jNrtgFN"p(jNr $`#wgt gv fRhrN%I5 Br ҉#A$<hԉ#Bd#Bd%AlBtv%Cpr#A|tnZ" <INJf&&)$)|")d <I\N <(jPNR")dҩ|tԁ(rҩ|`&)t")d <I\Nr <(jNJg*"*X <(jNG" <(j$N``F <(jPNN ***BREAK Rp$*tpn&$<X"*lp(jN%AtJfrNBp"*lҪptԁr0($!(rNNqJg>x#D t"N#A$) rNV#At") NJf ")`rҩҩ#A$)&)$GD" p$(j/Wː!HpCjA`VLNgR?ATlB rm}:o V8;@?0}3r:,R]E 8J2veunP$%Q(ܑ! !|lqCTa{(c#y|'Co"E`2PĄ MHl+`gᢠ2O ĂK]@DDS$_5m+yBCɈGbx*.ɀf8!(qmP({fc#$ xl:`605T|#k+Ppi7[&oGr>@1f-g x|24+'I#DH +aRK@v2# mi;,($J6b@lEohbc ,pB@[S[*Jx`U*ldlaignk0nPK!q^Lxp)&+جQ(( @ dd@A &JXB] |.4$;3p" DP`/vCבy ;XcK`/ƀ"!u@.đP<h ر` ?e&) 4*P30?ٖ-8JEg,wC&pP`1DF) O"`$d@Db:wDdzn  @RTb-?=@h`5?F᱁NSA2'1BCd%,M~)R G(+ꘀ~qw1JYr,v% |Ggn Da_t(^GF!8I!J lА/(ŀtkGx=# 55-M IOB#q$PS @v ,9p @O0,iB} LV$ <hF8@3 ef%pwDq"y\69W0&ElD&Ta^FhՏ"m3DR_Ý̵xJPpu \DtVFf@&!f5s)胪kE# D\R0aDf" F mkhE(4NYȩ'_*9D\6N,UAt@G&G@w?<y^,;<ADBs<#fAyiQRHi0Zo|EhOM Q Bmgonccp|/fc`3*PUCQ1p:c )6!0*B/'a|hAm`+6 ֈpL.I}6 ëoP6t<rSQ^ˀ3h @@$3ɝSrrplǤz.`Wz%` -{ e)[?끐&aayEKA` C # %.*s@ ̊pI\` (/f.`8 (a@YMy]t_ocl LTh>& 42P N 3NhB6?8$%e|iœ{Fɓ :0ș) 3yeϿpP1%g@KX VDu8g?" eB&pʬ;4Pq2Yx@0;1ѐ–@,l rG+Mv8-AE;%~ y41`HO"D$|C0 ! h<(&A02مم \ P:R "TBDW0 4P;8c†v.v :-l@M~9;ۙ:;8DEV])d( '+"j  8ax.@! !p"@@ 5M )rG*"5'‘ b\@tGL!Qɳ8&>Zgq#L ` XS b{o&3ŧ$:`9:YlS?͖ϗQH#5 0$OTCHF A(J0%P C('!մ8)*,~3gzӺ% *M!@c '$t4t øf X!:_eWpH* *H{JT5 o1ՠ\ƚe:e~‘Q :4s F@H! C~f0@~jP%J}.(& % @A0u=N!@.IB [@ ѧ,u3 S2! 6999 zcb-MI/HZa@{iSNfa fCs*XT`=f9Og0E$!J+E(֐ #AlKapmxTYNFJM)t3ā;:4%h[f SC T p) <,:%Ha(I,!L\ p(0"oh%A ! EI9#P: @R ؇Bq[1?КE褀e<^IDNȆ>J#¦=6 EXCeqG==6<L >tx a F1OB @ D1GР;S?88M`9'2# ɠ RO{*! х]U @ " |M 7Mݑ l7R߅H@tمT؁I%"p@3 HDLāN!$Fn3:wcY #W78^HX}H|@,ug lU'|ã.dXOmP3(JAAz*BeXM``CTL! T!4*PBUHTP"hhe%cz? $dԕ@9)7,+у@d PzhY2y5$=EDkLG C^K ԭdf0)/$RPf @J8 H<Xe7*:M$Ԡ*y <@. q@C>@rI sBj aZ݁/;M adgw}sCt f" A!WHA)Q"ND> 8EŠB@_ጎ@oCaDcLwπ77Ԣ$@- zH=#(deg hlnI\.}1rR]'֧>%X+d3)ge %x8@ڜ>dɅ'S4Ɓ?8Y|pcO8 ozzU f@$'- %'-$a'-`%9}C0ljT_脨MM@ղ@3-B|`yji{ isDŽ?lLFa#O88u0!43r)>GDA90b=t Bb8$ca8@֦N7p CcS[;rNuKRϷt3?P+˪)Ҋ  #4)JPƅǞPT}}E@,DYBRLEV?q۽ HgJMYQU%9:QDS09A''U>wL-]fHl%MU32}>aBARt@%(q'ϐ`P'\HA~9ہB..ff6?貰E ݝp PUu2 C*# ӐKg12xZ[88dKdCd2V"`Pt 09<< l1PwL. /h5!cPa$ @Y0?]h0  0 X`$,%р_s yMT|J`Ġ@ l0 H`/@;LN0 `H%JF>C0 Pu 2` :mY$ BREAK    ? %C!Invalid response - try again : %C7B=BACK/S,DEL=DELETE/S,Q=QUIT/S,T=TYPE/S,C=COM/S,COMMAND Command ? %CDeleted #A&#p8 #jd(z0Ht"NҪdT#A$<Ԫ`oG" p$(j$NrN%id")t0#Br#An&$)ԁv0(tԩԁ(rҩ``")#p") #p J grҩ $)p$(j4NJo")!")! rNNq.No free store for filenames - list incomplete B #jdx#D`#j\p(I$NJg B` ;g>")JxoDBJ|fF#i r#A$ nG" p4(j$Nrҩ$`rҩ$G" p,(j(NJhgr$҉#A $<ԉ#B#B G& #C$tG<" <4(j(Nv$) ")$ <4(j8NJftGD" <4(j(N``") JgdJgv$"0 <4(jN`DtGh" <4(j(Nt") <4INJgv$") <4(jN") JgTtԩ" <4(jhNJf r <@(j(N <4(jN`r#AGx" <4(j$N") Jgt#B") Jf J g") tJ fF#B <8``J|f p,(jNJg7#A#i v:fG" ` G" () &$) ") <(j(NBp()&)$") <IN#ANNq%S%S%S is not a directory / %S%S%S (dir) /v ։#Cx4؉#D0z\ډ#EXB@BDBHBL|#FP.#pxTBX#jd\r <|(jN$)X <pILN"()T&0t/") <p(jN#ATJft#BD") <pI@N#AL$)" <pIN$)0") <pINJHg r#A``4JLg"&)X$)0") <pIN#A@`\J@g B@`L") <p(jN#A@Jg2 <pI\?,N$)X")@ <pILN")@ <pINJ@f B``JDg"#p d$)Pr <t(j(NJdgD")dt0҂t0r:g(r <t(j(NJg")dt0S%iLp(<X؉&)$)X" <tINJfr%Alt#BHBP`")Xtxfr <p(jN#Ad$&0( x08#Dhv֩X"0( $ <xINrҩXt <I,N$r <x(jN"!T"G$ "0 <xINrҩ$" <xIN#AH$&0( k8r <(jN <xIN$)dr <x(jN`JlfJXfJ@&|Xgrgr <|(jN$)X <pILNJ|fV")S#Adr#AhdnG" <x(j$Nrҩh`rҩX$G" <p(j(N` <p(jN")S$")X <pINJfr%Al%i\d")`NNq/ %S (dir) r҉"$<ԉ#B&<։#CBv2$Gt" <(j8NJf$G" <(j$Nr <(jNBlBXB|B\BhBpr <(jN%AtBx$"0( <IN"Jgt%B\"J gt%BX"Jgt%B|"Jgt%Bh"< <(jtN%A`Am [Jf$G" <(j$Nr <(jN%j`dr <(jNJf,tG" <I(N#A$r <(jN")t")! "&)!8")!")v!""0 <IHN")Jxl($G" $0( <(j(Nr%Al`*$)r <(jNv$)") <IhN") <IN"*l <(jPNNNq&DIR,OPT/K,ALL/S,DIRS/S,FILES/S,INTER/SBad arguments Cannot get workspace : %S not found "Could not get information for %S %S is not a directory J`g"*`p(jxN`,"*x#p"0p(jN"*xp(jxN%ixJxf$*trp(jN"p(jNNNqv ։#CB0(#pH 4x&t:")pD(jN#A0JgfG$ ")pHIHN$)")4pHIHNt")pHbIN#A8$)!0(rpH(jN$)!($)8rpH(jN")4t0Jf`B8$*")4pHIHN"t0#BO; y8LE~?c8Vƺ̠&0I)`Gmf䮋BvCEʧJ>=4 `~ , KN4\ĄdLYX qDzaj1+¤u$*Ԃy 4=LA+N~f4 5>i+#}P2a3[[ y QG9 vaiHvHO0P8kn},WF,: Q mLԄ U &U15345q{Aq@wڧNQGxۋ[(SeŞ+4)X*C[(SvqO0B& $ЏWhB!=a1QE{P`(j$Nr <`(jN"*%A`"%p\%p tBlBxB|r <`(jN%AB$%p(BJ(gv%C%C%C`0"tJgF%BvJfF%CxJ gF%D"*%AJf&G" <pIN$r <`(jNr <`(jN%Ap$&"0($08 <`I NJg"*l <`(jPN")t")! "&)!8")!")v!"$<Lԉ"0 <`I NJf:JLg")L <`(jtNx&*t:") <`(jN") t0#BTr#AXTn4$) ԁv0("F`\ <h(j,N$) ԩX(rҩX`") <`(jN%AJf$G" <`(j$Nr <`(jPN`z""0 <`(jN#ALJf(G" <`(j$Nr <`(jPN`")L <`(jNJtf"$0G" <`(j(NJf""0 <`IN%Ap""0 <`INJg"$0") <`IDN`""0 <`IN#AT$<\ԉ#BX <LIhN$)Tr <L(jN"$0") <LINv$)X") <LINJfr%Al")T <LINJf&Jg"&*p$)X"0 <LIG6v{ N"*l <`(jPNNBFROM,TO/A,ALL/S,QUIET/S,BUF=BUFFER/K,CLONE/S,DATES/S,NOPRO/S,COM/SBad arguments Destination cannot be a pattern Cannot get WorkSpace : Destination must be a directory Output directory not found  %S [created] `,"*|#p"0p(jN"*|p(jxN%i|J|fJg"*p(jxN$*rp(jN"p(jNNNqB$v0(#Cr#A n$ԁv0(t0n&ցx08v9o*"ҩ t0G" p(j(Nrp(jN$)r N$ԩ v0(X ҃t0#Av֩ "`x")NInvalid char '%C' in number T#(jPN`z""0 <`(jN#ALJf(G" <`(j$Nr <`(jPN`")L <`(jNJtf"$0G" <`(j(NJf""0 <`IN%Ap""0 <`INJg"$0") <`IDN`""0 <`IN#AT$<\ԉ#BX <LIhN$)Tr <L(jN"$0") <LINv$)X") <LINJfr%Al")T <LINJf&Jg"&*p$)X"0 <LIITҩv0#B #C$`Vrҩ <4IN")$ <4IN`Nrҩ <4INJ$g")$ <4IN` ") t#gv%gx(gz|g`R"*lF$)v0(n"*NJfrNR")ҩt0%B#jBB#ir#A nҪ#p$"ҩ$t0#B(`J`prҩ$$ԁr0(#A("*(fN")ҩ$t0" <8IN`,")(t#gv%gx'gz(g|?g~|g`rҩ `X`:NqJf t%B`@#jr#AnҪ$grҩ`R"*ҪJb!N"*n t%B`R"*Ҫt0%BNr'f p INp INN"#jpIN`Jr%A"Np IN$pIN"N"pIN"t)gv%CpIN"N")tgv#gx(gz)g||g`NqBpI|N#At|gv)g xf@$)")pIN#At|gN"*ґ"pI`N`$*")pIN`Nq`&"*ґt0#B"*ґ"JfNNq#AJf"N`"*ґt0""*ґt0Jf"*ґ")NBBBB%A%BKքB&x08%DB#Dr#A n$*ԁv(rҩ `pI8Nrp INtpIN"*FNNqrp (jNJgG(" p (j$NrNrN *** BREAK &x08*|0X#D#F #Fr#An&$)ԁv0(ҩ$ԁ(rҩ`")ҩ $(NB vւS#Cp (jNp (jN#At gv f<`R ") lrN"ҩ  "p (jN#Ar g tf") N&x08*X"t0#Br#A n.$ԁv0("p(j,N$)ԩ (rҩ `N`$)ԩv0(t/g&&)x08JgR()ةH`S J g,"ҩ t0r/g$ԩ v0(t:f"t0#B$v֩ "#A($n(R$ԁv0($)ԩ(r V% ҩ(`")&)$)" <0INJfr%Al`4") <((jtN&)$)" <(INJfr%AlrNNqCan't open %S for input - v ։#CB0(#pH 4x&t:")pD(jN#A0Jg`G$ ")pHIN$)")4pHIN")pHIxN#A8$!0(rpH(jN$!($)8rpH(jN")4t0Jf`B8$*")4pHIN")t0#B ;Zx0Nm<[y1Oj$JanFebMarAprMayJunJulAugSepOctNovDec DD-MMM-YYHH:MM:SSSundayMondayTuesday WednesdayThursdayFridaySaturdayBv$։#C x0؉#D,z@ډw^#E C3 . Using Mouse - To move your chess pieces, use the mouse to position the flashing square under the piece you want to move, then press the left button to select it. Select the desired destination point by using the mouse, then press the left button. (You will notice that legal moves are solid green squares and illegal w i~I tNr!ҩ#phJhgJfJXgJf <(jN`")hfG" `lrҩhfG" `R")hSfG" `8")hSoG" `rҩhm r ҩ `") #AJg#i rҩ &$)G" <(j(NJXf2r$ҩt0Jgr$ҩ$G" <(j(NR")өlJf $)") <IN#AJfJfJfJpgHG" #A#iptpfG" ` G" &$)") <(j(NJtgHG" #A#itttfw jAG" ` G" &$)") <(j(NJlgHG" #A#iltlfG" ` G" &$)") <(j(Nr <(j(N#A <(jNxg <(jN")x <(jNJgG " <(j$Nrg(r <(jNg") <(jN$)r <(j(N") <(jNNNqpDIR,P=PAT/K,KEYS/S,DATES/S,NODATES/S,TO/K,SUB/K,SINCE/K,UPTO/K,QUICK/S,BLOCK/S,NOHEAD/S,FILES/S,DIRS/S,LFORMAT/KArgs no good for key "%S" 2*** Invalid 'UPTO' or 'SINCE' parameter - iwkgnored %#?()#?|()*** Can't open %S :current directorycurrent directoryCan't examine "%S": Can't examine "%S": :current directory Directory " " is empty current directory Directory " " on %S %S Bad pattern for LIST current directorycurrent directory [%I5] Dir  empty %I7 Today YesterdayTomorrowFuture %T9 %S : %S %N file%S - s%N director%S - yies%N block%S used wZs**BREAK r#AtnDґ&)֩(08g""ҩ&)֩(08&0"Nrҩ`rN"#Q(#i,() v$0 rp(jN#AJf$&0( $rp(jNJg")N`Nq"$*XF#B0#Q(#i,() v$0 rp(jN#AJfV$&0( $rp(jNJgrp(j(N g*G" p(j$Nrp$(j(Np(jNr#A")N*** NEXT ENTRY INVALID: "*\p(j$NNNq&x08#D*|0X#F r#A n(R$)ԁv0($ԩ(rҩ`" N&x08#Dr#A  m0}ones are solid red.) Page 4 \/ Battle Chess II Menus Using Keyboard - Press the key to bring up the menus. Use the arrows to switch between the menus and highlight an opponent. Press the key to select it. Press the key to exit without selecting any opposition. Using Mouse - Press the right mouse button to bring up the menus. Keep holding the right mouse button down as you move the pointer over menus titles and the appropriate oppositions will appear. nzf Move the pointer down to the option you desire and when the option highlights, release your hold on the right mouse button. The four menus contain the following options: DISK Load Game, Save Game, New Game, Set Up Board, Quit MOVE Force Move, Take Back, Replay, Suggest Move, Show Layout, Help Move SETTINGS Sound On/Off, Music On/Off, 3-D Board, 2-D Board Roman, 2-D Board Chinese, Human Plays Blue, IBM Plays Blue, Modem Plays Blue, Human Plays Red, IBM Plays Red, Moodem Plays Red LEVEL Novice, Level 1-8, Set Time Menu options that have a "+" beside them are currently selected. Note that the Boards you can change to will show up in the Settings menu, while the one you are on does not. Menu Options Explained Load Game If you've saved a game before, this option recalls the game and picks up where you left off. After selecting Load Game, the Load window will then appear displaying a list of your saved games. Select the game you wish? key if you Page 5 \/ don't have a mouse. The game will be loaded with its saved settings. Save Game Pick this option if you want to save a game to disk while the game is in progress. After Battle Chess II asks you to insert your save disk, the Save window will appear. Choose a slot with the mouse or arrow keys, type a name for the game you wish to save, and then press the keHorqgDOXS18LION_BDCgq*xgSprƬuwsgqCpstMfetgLoaderrseWdd`$Menu Loader v3.1 (PAL) Peter StuerAf><?  PM31 QC@p,xN,@N$N&A2p8S "N""N,xNbpNudos.library@ +#hhhh@;#Ј阋hhh@cK㊃hhhh@ C8hhh@阋hhhh@ 9hhh@ sӋhhh@(ӓK㊃hhhh@(qhhh@H;"hhuvEP('&%*v ftRunru*|O&O(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F ^C:Loader fetgLoaderrW- ?fetgLoaderrw|.O aO(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F =<;:9NMLKJIH"Dft{DirrH2AO5O(jdp N$"<I(l/ / g ,倲l"4(T`,2(jtp NJg2**p$A. J (F @BDFHJLNPRTVXZ\^`bdfhjlnprtvxz|~8R'  ifrprinter.device |.-V =pvAd<'2 V`JJ X#.Lprinter.deviceprinter 35.562 (20 Jul 1988) H &I+B+4+n2mt n.J0 kD/,y N|,_J+f A4"K/,y N,_/,y Nv,_`J n* p "KNLNu)f|a 2apNuH $&I/,y N,_f0B+g 0frparallel.deviceiVpNuJ"<<parallel 34.9 (18 Apr 1988) parallel.devicemisc.resourceciaa.resourcezNuB)Jn g.ug)5f|`pB.v)5guJ)f J. fRn nu5v)5g #nZ6#n^:NuB)Jn g Sn fBnrB&u.vgNpNuB)p/ /,n"N,_"_|0) @ nHA pN<Q)f/,n2N,_ if .vgP9v`8 if69f.vf </ /,n"N,_"_ `Zfrj serial.deviceԋjO?pNuserial 34.12 (27 Mar 1989) J""<<Vserial.devicetimer.deviceintuition.librarymisc.resourcefHNuB)rbJn g.Eg )Of|NuH B.B.=|A XB!HA XB!H/ <rRn /,nbN:,_Sn @$"_Jg0/ p!CA/,nbN,_&@ < B/,KN|,_"K/,nbNb,_"_&B0+HAp=pBn|C+g|C<AB|D+g|DnCMnBLnDNa N+@HAB6=p8+.g Lp.8fu;Disk-Validatorl'0G$ #Bv lt "*Nt0҂`r $)( r0Ҫ$)( "*XW%A%j$*XS%BB"*p(jxNB#jr#A nҪt!rҩ `t "*NJg0r#At #B "*N") $)"*Ҫ!$*"*p(j$N$*"*p(jN#A$*"*p(jNҩ%A`J$< rp(j(N"*@&)$0(G" p(jNJf"p(jNrp(j N"*@Jg"p(jNB#j"*#A nL#Atāv#C#A$) m o$) GgpLIBSp$SBfq+ arp.libraryp'NuJ' MZARP Shell ProcessARP Background Shellarp.libraryArpLib 39.1 (cdh/sdb 4/9/89) dos.libraryintuition.librarygraphics.libraryenvironmentArp EnvLib ~6"R`\  h048<@DHLPTX\`rd 4 X ^z\.P %r$%$T$$$%j V !#l##%%$'' Ftz,2,/ '(>?z@(0r+d++@X~>>Z$%< $AQ\  athlet.docp .::: THE :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. ::::############################################################### ::: :::################################################################# :: ::#### :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::### :::##### ::::### ### :::####### ::####### :### ::### ### ::### :: ::### ::####### ::######### :######### ######### #### :### ### ::### :: ::### :### ::### ### ### ### ### ::### ### ::### ##### H5nXWVUTSRgfedcba`_^]rqponmlkjih}|{zyxwvuts~onmlg\ battleii.pppW& Distributed by S.D.C. Software Distribution Corporation SKID ROW presents Battle Chess II: Chinese Chess Amiga Reference Card Thank you for purchasing Battle Chess II: Chinese Chess ("BC") for your Amiga computer. BC2 requires a minimum of 512k and one disk drive to play, but is fully compatible wIHith more memory, two disk drives or a hard drive. BC2 is in stereo. We suggest you copy your master diskettes before play; BC2 has no disk copy-protection. LOADING INSTRUCTIONS FOR DISKETTE PLAY 1. Start your Amiga normally. 2. If you have two disk drives, insert Disk #1 in DF1: (your second drive). BC2 will ask for Disk #2 when required. If you are at the Workbench screen, double-click on the BC2 icon to start the game. If you are at the CLI, type: DF1:CHESS2 3. If you haK*yve only one disk drive, open the boot disk and double- click on the CLI icon. After the CLI window opens - switch your boot disk with BC2 Disk #1 and type: DF0:CHESS2 4. After pressing the mouse button at the title page, BC2 will ask you for a move out of the back of the manual. See Copy Protection, page 2 of the manual. LOADING INSTRUCTIONS FOR HARD DRIVE PLAY 1. Start your Amiga normally. 2. If you haven't installed BC2 to your hard drive, you will need to do so. Double-clIick on the BCII2HD icon from Workbench or type: BCII2HD from the CLI. 3. To load BC2 from here, double-click on the BC2 icon from Workbench or from the CLI enter the proper subdirectory and type: CHESS2 4. Press a mouse button at the title page. If you are playing for the first time, you will need to enter a confirmation move from the back of the manual. See Copy Protection, page 2 of the manual. If this is poses a problem, use the cracked version, See Skid Row. MOVEMENT Use your mouse to position the flashing square under the piece you want to move, then press the left mouse button to select it. Select the desired destination point by using the mouse, then press the left mouse button. You will notice that legal moves are solid green squares and illegal ones are solid red. There is no keyboard movement. MENUS See pages 4-7 of the manual for an explanation of the menus. There is no way to use the keyboard to bring up the menus. Use your mouse to ceoperate the menus or use the following shortcut keys. OA-F Force Move OA-M Suggest Move OA-T Take Back OA-S Toggle Sound On/Off OA-R Replay OA-L Show Layout OA-H Toggle Help Move OA-U Toggle Music On/Off OA is the Open Amiga key, located on the right of the space bar. PLAYING BATTLE CHESS II BY MODEM You can play BC2 over the modem with another Amiga or an IBM if both of you have Hayes-compatible modems. Refer to pages 8 and 9 in the manual. You can getsO a list of credits and the current version number of the software by pressing ESC at the title page before you use a mouse button. ------------------------------------------------------------------------- Battle Chess II: Chinese Chess Page 2 \/ Loading Instructions For IBM/Tandy and 100% Compatibles Battle Chess II requires at least 640K to play. Before you begin, make a backup of your Battle Chess II disks. (Refer to your DOS User's Manual for iqnstructions on how to make backups.) MAKE SURE YOU PLAY WITH YOUR BACKUP DISKS ONLY. 1. Boot your computer with DOS. If you have a mouse, make sure it is connected and the driver installed. 2. Insert your backup of the BCII Startup disk. The first time you play CHINESE CHESS you must run the setup program. Type a:setup . Follow the instructions on screen. The setup program will configure BCII to your system (graphics, sound boards, input device). If you are not s ure what you have or are having problems, configure your system to: Graphics - CGA, Sound Board - Internal Speaker, Input device - Keyboard. When you are finished with configurations make sure you save them to disk. 3. If you want to play BCII from your hard disk, create a subdirectory (we suggest creating one called CHESS2) and copy all files from all disks into it. (Refer to your DOS user's manual for instructions on how to create directories and how to copy files.) 4. To  ^load BCII from here, make sure you are in the proper directory or at the proper directory prompt, and type CHESS2 Copy Protection During the setup program, you will be asked to type in a move from one of the fictional games in Appendix A of this manual. Type in the move it requests and type . For example, if asked for Blue's third move in game #5, Morphy vs. Ching Ti, you would type K5F1 . BCII will then be configured specifically for your system. If yo gI=u change system configurations, you will need to run the setup program again. Page 3 \/ Movement NOTE: Mouse and joystick operations are the same. Using Keyboard - To move your chess pieces, use the arrows to position the flashing square under the piece you want to move, then press to select it. Select the desired destination point by using the arrows and press . (You will notice that legal moves are solid green squares and illegal ones are solid red.) QPONMLKJIHG\[ZY#uBA@?>=<qUv? crack.docp< -*- LEGEND! THE PRIDE OF GOD PRESENTS : -*- ---------------------- Cracker by Gary Mayhew ---------------------- Garsoft, March 1991. ---------------------- After reading the title page press the Left mouse button to start. Instructions for pla /+*)('&;:987654321FEDC(Uv ctplanet.docpC' Captain Planet And The Planeteers ------------------ Docs typed and Cunningly Tweaked by /-\ction /Y\an & Zelnik of Crystal. WELCOME. -------- Oil spills. Air pollution. Endangered animals. The Award Winning TV Show CAPTAIN PLANET & THE PLANETEERS (tm) has turned saving the Earth's environment into the ultimate adventure. And now it's your turn to go up against the most dangerous enemHk     %$#"! ,0/.-c dkok.ppp-%0PP20 J 41!Y*ّ%:uAey9I#rDeED@U@VR\PVhTS2BIQBy% z;iI*1ُ'*8"i#Iܓ) v bE;BahKp!O.%ad2qr9r/8P>0Z| ǰ"!|pZ'O \:9F^JgBT@cgCWºz&^n~+4o:  850?xvaȼ@d:\;|RLK3h  eW#YZbWsΙSa.e,zGM팩+uY<;gCm-oi1B*` 8X眡@Zt+"3DSYd:Y c3>h CXm̺Q}!f> ep-eland.txtpzE Enchanted Land ... cracked by __ _ __ __ __ ___ ___ ___ __ /_ /\// \ / /_ /_ /_ /__///__//__// \_/ /__/ //__//__/____/__/ / // \/ //__ / The sun set over Damiran in a haze of pink and purple. It cast an eldritch gealm on the leghtening shadows of the forest,seeming to evelop the land in somethink that could only contain peace and harmony. The may once upon a time have been true, but even long before the memories of the most aHZF f15.ascii.pppe PP20 U=7R pwIpo<;tBwP$TEUU%#)␈ Up\3pXӀ; /j1!2*q{;;%Pef0/,vHPw{ Q?ǽÔȌED$ 554J ]t,!~<ed 1>G-]l4@(12Mh(v7, \jR"8fz!y$ ,>qIa[ q|t6ݜ33Ss"¸+8oQ@s akcэM #`#*uhC{@t00 &nIP6 `08=Kf| Ǿl bG/bм<ÌS D"Nn5 FbwyÃDj &Pw$6 >C#-.s?b 'oEt *gN7툽^&&h&[%a%b%P5h*QO4t((__^>#M׽C`czŒ9TTd‹B//JchaPOJi *jf &.uRhM3 U%UTo ^\:Jƭ2B=ob4ԉht )(8=𜌢-`oe J_|^2e!x D2Wp и=^'6C=5^ϡ,6PF8~2Q H)$-2)#x(~qq?)K"ih;5O_: R pE\;BDFF00n ҠA!"|nX` B ÄҨA$ `t^0Ndv ȣ9fs3%] ^lWJئ A)A>/`*;jAobdZT̯kyrp ?xl4}h9q) lSΖ% x ~&2Ё w6N\z]|.'m8TwP*򄺺Ww.Qoj3l aYY ql'ڸ}-ZnH '"K~^a371A2V H|M:@ Vu1(~1+ '>?=QChIG?R.B@ vܟ[O[Y op~ĸ|R< (J K}8 c RApցM"19m4;xa"`0 J³Et$ ӶDd e "5 mhl.BI|(te_SXx-~~# efS(ELF U}{S/*`+]<2> @+քG!?%"SDEm<'o}AGAN|xZ'3UEs2 o/u,}u5a _𘆁*t`5p ʤyLaMPRֆbX C>9[\+zwjD{7zþ gP L7,6ǘ[}MHLE>O!us 5#(U jE*P@VD[ #B{cKODDzBwm5 u ~j<5}x0p|4" p(GWNF-3U¨3w,UZ/4:r ;c%xQUQQXeIʥJ~F 1QPv@$<_gnD:ڛ7DȊւE-#xW$/"C*PFQ\je(NPnT#MSd@9qA~!(gJ)՘Ŋg h*v6*hfQ$aMFy[q)_@iW[AAi058Eϭlۨn~ C ')jD154~(BnKR _c<":W07x}P^P^*^ ͏oNoYUd! T@5wf N@NТy'+;qu^aj%&fTCϛkdAC(Hg_ ,rA@!=@C[)5CoB<|W4sA"ժ  aވGiBxf`S9Υ<@;bz^3@b74%| _ 9īW7baԧ8EV KDXJ=A8F}}Gϯ4PC0gɬHvx/B 'G*}bԗ|gn ru40 8W%SNR&S&T vOK/>XHgj$ޝgH N.1-<bH胜 `f} P`{քÃ( C%+5elP@XIJ$!9omal«| ܧ߈_ըyqt2˒r[Np2C%U,2iĔcHg!FBlP/u!*ow?̀GWH&ܛwF@M 64QnLh TȆ-Fc==3UYq FFK( P&P*I?a f \re(Q,!'C4 2V & \(Qa8?Bfz2c-=y$Ӎa3 A+P'WH|qyB:XB1¨OcЁSF}\5̅W4Z0)b'PM1c Ɵ<zJ*&_9ײm?<~DUTx0Mܰ1N2\ Tu!+!@;ߖ{^wj :;!:8%ybVFA߅.AY%@C)dicQ |bS|rܟ4Q|Mav4 Hh`U'$Bs~@!>9N߷,U8q-7eZM4/k!D Q mGW/N *#]P~2Gd;۔omikt` 52t!{yAf"Ya >UhʉP?_t33KI&#RhiT6&3=&[#rR ?*(^jS8ZDzJ$YYI]wT 1x)U8i#G> F1ϰ(3eN<NJ'G9yy찕'b ǰ #1{SW7_yr02w{$#?:B*F@(7T@ک@"txa%/MH74m}_xB2pd)aH%iTZ_8=S!7B0p%7!D80&%gPbmP{4_,Nx ?hsa'|[8(s>{ W@Jc/~SZg&N%xi YX'{MN91D١sSV߆%a*B^ G%\{:e ,4L-**"|wߝ2oA1 v<'A)6E[Z(3K[@oR|ȍ~D~xdE2C#LzWvƖN0Ҟވ 0~9/ S0`lSJf2XW zo+w;a ?I0O w l݌jw;DAlNN 2t jk:'Ɖ^|^J'D zQ0B=I5P0}y&B=0aOI=\b F7PtɁNr:mͽB|ea >נS3qAJ) PE`c>nHRQPONMLKJ_^]\[ZYXWVUjihgfedcba`utsrqponmlk~}|{zyxwv& 3210/.-,+*)>=<;:987654IHGFEDCBA@?TSAn$#"fo FixSaddamp"/zxK"M2<vBQ,xH0EGC ! RB)g6  g  g& "gg  g`B`g "g`BBL |CINh+@,@N*,xA g>"@  DF:f,~)0r <N:,f@A`A{` AJ`AaxJg "F <N.apNu -g$@aHNuEv(a+@gA*|1|0!@"HAr NDJnxR|g H@J@f:AaA' H @(0H@@(0aAa0<a<n F|pfJ partition-name 4. Make a directory. Type: MAKEDIR BENC 5. Switch to the new directory. Type CD BENC 6. Copy disk 1 to the new directory. Type COPY DF0:BENC partition-name:BENC ALL 7. Repea/aFolie.docpԫgم------------------------------------------------------------------------------ - OLIE MAGNAAT DOC'S (DUTCH) BY TDB/LEGEND! - ------------------------------------------------------------------------------ Dit is een spel voor 1 speler tegen de computer. U gaat beiden olie zoeken en daarmee geld verdienen. Degene met het meeste geld is de winnaar. Om te kunnen boren moet u eerst rechten zien te kopen. U kunt dan in het gekochte gebied 8 keer boren. Als er geen olie zit da'Cn kost u dat $6000. Ook als u een beurt niet kunt boren kost dat $6000. Een werkende bron wordt met een vlaggetje aangegeven en brengt geld op. Als u mag boren dan doet u dat door een boorput in uw gebied met de muis aan te tikken. Het resultaat wordt meteen zichtbaar. Antwoorden zoals JA en NEE en NIET BOREN kunt u geven door de betreffende vakjes aan te tikken. ENJOY ! -=(TdB)=- pH`Y3l f?sbp4.docp v» SUPERBASE WELCOME TO SUPERBASE This Introductory session with Superbase will give you an understanding of how to perform some of the basic database operations of the Superbase system. Some more complex functions are explained in the section Working with Superbase. OPENING A FILE If you look at the top left-hand corner of the screen you will see a message that reads "Superbase: Please open a file". You always see this message when you start Superbase up, or when there isHƇ}|{zyHړA@?>=<;:987LKJIHGFEDCBWVUTSRQPONMba`_^]\[ZYXmlkjihgfedcxwvutsrqpon~H=5  +*)('&%$#"!6543210/.-,H~}H+43210EDCBA@?>=<;PONMLKJIHGF[ZYXWVUTSRQfedcba`_^]\qponmlkjihg|{zyxwvutsrH?     $#"! /.-,+*)('&%:98765HS)wvuf~}|{zyxF sharkeys.docpxKj@j Sharkey's Moll CRACKED by THE VERY BEST * Q U A R T E X * The Brief Downtown Chicago 1926 - a festering pit of vice and corruption. The kinda place where hanging around on street corners involves lengths of rope, angry mobs and a boy scout ability with knots. It takes a special kinda law enforcement officer to even think about stepping out onta the streets, and even then only with a hearty breakfast and a patented bullet proof vest. An' that kinda guy just so happens to b42onmlkj \fowskpF@Γ,yN(@JfA\NA\N# tC dNC Nh# C Nh# C Nh# axa,y A N4# a&,yabaVaZ,y y hVN y hVNJg @ (#  gg `A pCKBND+| dA pCKBND+| dA pC K BND+| dA pC 4K 4BND+| dNuKa"KaK aK 4aNu"M;|  -dN8Nu,y <4"<N:#H9y210/.-,+*)(=<;:9876543HGFEDCBA@?>SRQPONMLKJI^]\[ZYXWVUTihgfedcba`_ptsrqcSSB.pppq},HPP20 Sc(AÔD5K1Y \*&RX ѐ&,Ѕ(XNjd/U"*#`. =lh0!`{ăLHNpNa:{!9VJ `'IKz-C=2GxacO׵lӅy%'# cI7;6&*P@#x's#N*.uL$N)*_J FZNј@A74)i![@#PHOl?54(%-*--,,,,,,,,red with the Disaster Master virusIs infected with the BSG9 (TTV1) virusIs infected with the Hawnes virus Remo(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY%EveIgnoreDisplayRemoveIgnoreDisplayLearnRemoveIgnoreLearnLearn this BootBlockCan not Use the BrainFileBrain File Is DamagedSorry Can't Update Brain FileERROR| Opening File|S:VCBrainFileERROR| Opening Writing|S:VCBrainFileRewrite the boot sectors of this diskAre you sure you want toWrite ProtectedDISK ERROR: Disk isThe Virus is STILL Presentr3.3*3&3"322111j1f1^1Z1J1>121&11100&x sn000000000~0r0f0Z0N0B060*000////////////v/j/^/R/F/:/./"// ............z.n.b.V.J.<.2.(... .-------------z-v-f-b-R->-*--,,,,,,,,red with the Disaster Master virusIs infected with the BSG9 (TTV1) virusIs infected with the Hawnes virus Remo(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPY(W)XCOPYо Y"_NuA;( Nq,NqaA^6B`:@~A(a, nj@42<8U)A$A( ,y* A$AN( ,x* @@.A7N7dos.Nu 7"n:rA7ary <8LJf9ceC9 lYribisb8dos.,y8)yA8C4,x7Q7/"p-@9Nu,x:82a8DF0:DF1:DF2:DF3:SYS:df0:s/startup-sequencedf0:devs/ df0: df0:l/Disk-Validators:startup-sequenceS:VCBrainFileDOS pCNJg @ hpNup`dos.library5F\tDF0:DOS Error 000Object is in UseObject Already ExistsObject Not FoundDisk is not ValidatedDisk is Write ProtectedDevice (or Volumb^e) not mountedDisk is FullFile is Protected from DeletionFile is Write ProtectedFile is Read ProtectedNot a Valid DOS DiskNo Disk in driveDon't know whyQUITCHECKDRIVEintuition.librarygraphics.libraryclist.librarytrackdisk.deviceclipboard.deviceCON:0/0/640/200/FileNameDumpCON:0/79/640/134/Ascii Dump of Boot BlockVirus Checker V5.25 by John VeldthuisVirus Checker RequesterVirus Checker Brain FileVirus_CheckerTTV1A Program just Run infected your|Memory with thePleabUse check the entire disk from which that|program came for File VirusesYour Memory was infected by the16 Bit CreNew Alien BeaByte Bandit typSCA typRevengSaddam HusseiByte WarrioUltra FoDisaster Master BSGButoniReturn LamerThe UnKowVKill or AIDPVLProtectoIRBlowJoButonic-BahaByte Voyager Byte Voyager IDestructoDiskGuarParaDoAss Virus ProtectoPentagoJITTravelling JacHillMegaMasteIncognitTermigatoTravelleHCCoderJoshuScarFacNorth StaObelisExtremCLis "iJDisk-DoktorDigital EmotionWar HawkFORPIGX TeaGremlinKaukULDBRevenge LameDACCCSADDADivinLAMER ExterminatoByte Warrior Fast LoaderFICMad ISuperboVermiAbrahaF.A.S.JuliTimeBomGADAFFGraffitTurHawneVirus SlayePhantasmumblMicroSystemAustralian ParasitOpapBlackFlasTargeHCS ICenturionXeno VirusThe LAMEDisk is Not a DOS DISKNON-STANDARD BOOT CODEERROR: Not Enough Memory for BufferCan not Continue with Check for Link/File VirusesError : Cant open Consol!e Window|Files will Still be checked.Checking Disk in DF0:The file has been DELETED from the diskThe file has been DELETED from the disk|and you may need to replace it with the|Disk-Validator file from a good Disk.Has not been checked for File/Link VirusesThe virus has been removed but the program it|replaced cannot be renamed. Look in the DEVS or|Main directory for a file with a blank nameThe First File in The startup-sequenceVirus Checker: Disks Checked: %ld Disks Installed: "m%ld Viruses Found %ldDANGER| The disk in DF0: has been infected with theThere appears to be something wrong with the file|and I cannot fix it. The file has been cut to|ZERO length.Please Enter drive name to be Checked for|Link and File Viruses in the String Gadget|Then press or Click on Check Drive|Click on cancel to Abort Check Now.But the Virus has now been disabledWARNING| The systemsVector|is not Zero. This could be a Virus|or someother program Using this vect##or|CLEAR IT?Vector|Has been changed|Shall I RESTORE it?The Virus has been removedYou may need to edit the startup-sequence|on the disk to change the first lineCoolCaptureWarmCaptureColdCaptureERROR| FINDING FILEERROR| Deleting File ERROR| Renaming File ERROR| Reading FileERROR| Opening FileERROR| Writing FileERROR| Locking File**** Break - Exiting Check Okay Check DriveCancelYesCancelRetryCancelDANGER: Cannot open Trackdisk.device|It must be in $%Use. Try another driveDANGER: The FileIs infected with the Return Lamer! virusIs infected with the Centurions virusIs infected with the CCCP virusIs infected with the Xeno virusIs infected with the SADDAM virusIs infected with the IRQ virusIs infected with the Travelling Jack virusIs infected with the Butonic virusIs infected with the Revenge Lamer virusIs infected with the Disaster Master virusIs infected with the BSG9 (TTV1) virusIs infected with the Hawnes virus Remoa&n'HxHz&lHz" /HmHz(p Or|aO`,Ua Cf/C,m mLp$@N,_NuCpC"r0@/,m mLp$@C"N,_.-8a$nRH"G3|#m4(#|$B,N8"G3| B$N8"G)N><nd2<t m4.ԘdRQFf"G affif A @`pE>Jg"")@f ")gPX` r` #|gEbJg R0*"*E f`n -(g: @p0STH" f "(@f"(`f "( gAQC E v fQ|aHaha`vA S@R@an`vHI).-8, hgDaQJn<"G3|N8"GJ f$3| N8"G ) hg)hN>LNuN>QLNu (-f Hz'Hx`Hz'Hx/ (-WgHz"C!p0-p@/ Jfp`p Or|aOJfaNu @fa @faNu/A",m$<N,_/g@$m4H ,mx:<G$ <l<.Q"/&<NQLH0/A (-" _f HxHz' `HxHz&Hma0O "JgH,mNL@Jkfa |fa4NuHz$gHxHz'Hz'p Or|aOJkf m4,vp Q FCv Q,U/.-8*-pa.Jn>"E3|N8"EJ gJHz#Hx 1 Hz'MHz'Yp Or|a O"EJgN>NuHz#HxHz'JHz#p Or|aONu#|$#F(3|B,N8"E3|N8"E3| B$N8"EN>RDNuH?~ mL h2&H h4>(T o4aмJ o8Hz/aj Wa/H@//0, H|/0,HQ_/apO / o8Hz/a" Wa/H@//0, H|/0,Hiy≐/a(OJ o8HzP/a Wa2/H@//0, H|,/0,HQ_/aO,U lVN lVNJg"@,).)Nr@f G>(&H lVNJg"@N`,m LN `pL~NuH.a Gހ"K,m N"X\ k40(HX&L@NuH?>/ (/4*/8,/<./@(oD$oHB5D5E"K,m pN"KpN Z"V$ԆX&ևT"KN"KpN "$Ԇ&և"KN"KpN T"R$ԆU&ևS"KN T5@ R5@ W5@ S5@ ,m"J[t _pN,m "KpN"KpN \ k42(H҅V"KN La L"KNL|NuH0$&HBHCCHBBBЂL NuH?>~|$H"JJg(pt|JggR`R,m J$I"KNʾd.` "L|Nug<<߲gpNupr|JggR`NuH?>/$H| z,m "KpNpN Ja k42(H2,H≒/" a2PT" "KN Ja JRJ"KN(-JjUgR`$L|NuHp0-pCx@AaRaRLNuHCp0-p@Aa.a.LNuBlBdBhJg A@C/`Ap-p"pA/ a `JgXONuJDkA"-`~Q XOzA"tNJfJJf"zA0(| @C/fpgR`HzHxHzUHzHz p Or|aONu"NpaJfa^NuH?>HzHyHzp Or|aO<gJfC,Aa"aL|NuH?>"m$pNa/,UpP"<N:+@tg&@pP"<N:+@xg(@|.E J|JgR`B2`" t,mN"g*$-4N"N m4 (2<H DOSfA"$<N+@|faH" tN'pg 2:`g/`R/,UpA"<N:,_)pg0X"3p$4pNB2`p"2<0/,UN,_|gV| g"3p$4pNJfXdIFCN| fLY"3pBpN"tpBppA/,UN.,_JgDA`S (/g (:gSHS`B`v tp (kPCR`f" tNX'pg/`/pA"<,UN:,_)pgL"3p$4pN`C/R`f/ Ja,"-|g$ &N _pa@JgTH/a _&"-|g2$N`(aJgTH/a _&"-|g $N`ASv"-|g$N,`A$v"-|gNY"3pBpN"tpBppA/,UN.,_JfrdN:"-|gB|N,U -tg Bt"@pPN. -xg Bx"@pPN."m$pN"a L|NuHHzcHxHzp Or|aOLfpNuCHz?HxHza2/Hm/ p Or|aOa`^C&`C`Jg$Y"3pgN 4pg/"@pP,UN.,_JfNu Ѕdt  @gJ @gD @g> @gR @g& @g @g @g> @g @g @g` gS` ` gR`XJ`QNuG KpEr QA",$<,mN.fNu"$ &<N&"N jpNuNuH~,mJf(A"tNJg2."A,$N"N F*(|xat/ar"a|JfpL~Nu f g` P fXKIZIIJg0,",f0, g ", fR@/ "<,UN:,_(fZpCHzKHxHzJfa:/`Hz/ /HmHzp Or|azOJg/,U"D N.,_p TL~Nu"$<N.fC`"$&NG"Nܾg pCU`x"$<N.g ,g @N/`r DXH g`S&PHSS/ Q"H$HPH R gX Ѕe&"NC=p` "SQ$ "/aV&$"N/"N "g pC`Hz HxHz /HmHzwp Or|aNO`H/ D|"0`gR܁`*"0`\܁C`Ed& 2<dHF SQCP <EP"0P\ځPdCP؈28*aFff gXSdQ`"EQa$f gJfS YdQ``Tc QfTNupNu QfT` Qf\` Qg QfrT gЁ`r Qg Qg QfGT `L dNuHzHxHz /HmHz#p Or|aOpNuHE 8G JCp-p"q$&C0|߰|DFf((@p, a/" ~apJf" ~aff"apLNu"NJg" `" $NJfHzHxHza/Hzw/HmHzwp Or|aNO"apLNutNNual/zBd"$<,mN"ab+@dgVGx"-d$ vNJk>>A#gg< fx`Jfְ<"gа< gʰ<;fx`< gx :f| /f<+|`"-d$ ԭ`vNJkg@"-`3 :f| /f< g ;g "g g gR``B3"-dBdN :f KRKfS`|`Jf"-`QT`6C/JDjJJfF K  DF:g4 SY:fY` -`rRQ|` :f|/|NuJdg "-dNBdzNu@Ha@ Pa g$aT@iA@KJ*(@(AHzHz Aa AAV ANA;|ƞH,mA0"$<N.gvY$vN(*HDȼX|f |T+@L/,U"<N:,_+@(g| @00$"&*N(fBaF@fl"N;|PLNu -(g"@ -L/,UN.,_B("gNLNuHz;HxHz>{Hz;]p Or|a&O`Hz;HxHz>[Hz5`Hz;HxHz>IHz>_`H@ m(r 2XQLNuH m(,~> |T&,U"<N:Jg2+@(;|P"@ F"S"""""Q"F -L+CLN.p`pLNuH灂Hz;3HxHz=Hz>pp Or|a`OJkfJ(f ,UpT+@L"<N:+@(g;|PJmPf aDJfSmP"m4 m |v(p0RXBX @ ` aF@ m(1@,mA.{"$<N.gT"$-( Bv6XNJkN"NA.I"A0$NLLANuHz:7HxHz=Hz4lp Or|aO`Hz:HxHzYQA*/,mN4,_+@Lg @+h2P hV+HTp(rᩂ\+A\a4JmWuRg ,m mLNv~A@1|`A#R@Hz)HxHz'/JkHz {`Hz `R@Hz)HxHz'/Hz p Or|aONuH $H/.,SA&"Za.g`  C"ZaQ///a&O "LNuJf@kfNu(C#O`fNuJfNu,U ..g2 @ g$Hg agA(9aJf -m.a:+n. .* g8 @ g& g*g AgA( aHJf -m *a+n* .2gA'a$Jf-m2a+n2NuHz(HxHz&` Hz(HxHz' /Hz&p Or|aONu/ m$"(p!@ _Nu/ m$!A _NuH~a/a"aJfpL~NuIbIIJg0,",f0, g ", fR@"NJf:Hz'HxHz+a/Hz'3 /HmHz(Ip Or|a Op TL~Nu ,g @NJfHz)NJ#return later and will be automatically passed through the village. From the castle exit of the village, go east to the intersection at (26,86). This may also be shown as (58,85). Go south. From here on, always go east. You will eventually reach the castle gates. If you chose to go east from (26,86), you will eventually reach a gate back to the Well. THE SECRET OF THE SILVER BLADES Part 5 CASTLE: FINAL BATTLE The are three mazes which correspond to the three lev*ֽels of the castle. CASTLE LEVEL 1 The rooms generally contain nothing but big battles. There is a gate back to the Well at (6,9). There is a teleporter at (9,15) that takes you to stairs leading to the second level. All rooms are entered by waiting in the alcoves. There is a secret rotating door in each alcove. Once on the other side of the alcove, you cannot exit until you find the lever that reverses the rotating door. CASTLE LEVEL 2 For the most part, this level contains n+gothing but battles as well. You can rest in the secret room at (5,2). The storm giants at (6,1) will parlay and leave peacefully if you buy their map. The room at (2,2) contains loot, but you need the amulet in the room at (14,8) to get in. Around (9,4) you will run into a patrol. The loot from this battle includes the current password (STEELEYE). Also, no matter what you read, the password is always STEELEYE. If you explore the southeast section of this level, you will meet Sargatha,`] again. If you wait, you will be attacked. If you chase her, you will be captured and will have to fight your way out of the dungeons again. Chasing is not advised. The entrance to a maze that leads to the stairs to the third level is at (4,4). The stairs are at (0,15) and behind a hidden entrance. The corridor that starts at (9,15) does _not_ lead to the hidden entrance. CASTLE LEVEL 3 This is the level where the three keys you found in the dungeon are used. The Well will tell-ʦor you in which order the keys have to be used. Interesting locations are: (12,11) Gate back to the Well. (14,12) Gate to (12,15). Lots of loot and a big fight. (13,9) Bash your way through this door. (14,7) Go on in; it's not that hard a fight. (11,2) You do not want to go in this door. (8,9) The password is OSWULF. (7,1) Golden boy has a girdle of giant strength, plate mail +5, shield +5, and long sword +5. They should be the last items in the loot list, but double-check by r.Ǔeadying the items to see what they do to your characters' statistics. (3,4) Entrance to the Dreadlord's room. (1,3) Secret entrance to the Dreadlord's hiding place. This is the last battle. Have lots of lightning spells or wands of lightning ready for this battle. The room is filled with golems. There is also a gate back to the Well here. You might want to teleport to the Temple of Tyr and discover Derf Strongarm's fate before returning to town. There is a bug in the program that r/̀2eincarnates Derf after your visit. ENDGAME Once you end the Dreadlord menace, the town celebrates. Join the celebration at the bar. Leaving the town and returning ends the celebration, and everything returns to normal except that the magic shop is now out of business. There is not much to do, although you can continue playing if you want to. THE SECRET OF THE SILVER BLADES is published by Strategic Simulations, Inc. and distributed by Electronic Arts. __0͌D___ __ __ _________ _____ \___.\\ / / / // / __ __ .\\ /.___.\\ / // / / / // / / / / / // / \_/ // _ / // / / / // / / \/ / // / ____// /.\___/ // /. \_/ // /. \ / // /. // \______// \_____// \__/ \_// \_// ... Call Our Boards ... Harpoon ................ 1 404 739 6908 .......... WHQ U.S.A. 1 Invisible Crime ........ +49 621 705 485 .......... HQ Germany Another World .......... +46 480 881 00 .......... HQ Sweden Jolly Roger ............ +49 631 588 62 .......... HQ Germany l except that the magic shop is now out of business. There is not much to do, although you can continue playing if you want to. THE SECRET OF THE SILVER BLADES is published by Strategic Simulations, Inc. and distributed by Electronic Arts. __xR,@A4&B#CA*"tx}Nv"N,xNbJg N|"GNpNuVirus_Checker2KCaAJga"@aDaa>paX|a!a JmTk,UA;/-@/-D/-H"OEP&m0NO ,m mLp"@$m0N,UJmTf -Xg @NJg a"@N mTNJf&aaa`aLpaa,mrN:`"@&)4)Ng&faTfH|f@a!`8 mTNJg"@N` -Xg @NJg"@N`"mXaJ,m mLp"@R$@N mLN,U"m#tion building is the other. Exiting these sub-mazes into the main ruins maze is usually when the map coordinates become incorrect. The first item you need to complete the game is an Amulet of Eldamar. Journal entry 1 is the map to the amulet. You get the Journal entry from the Well. The Well will hint as to the location of another dragon hoard. It's not required that you find this hoard, but if you want the experience points and loot it offers, it's at location 11,0. Additionally,  there are two other optional fixed encounters with Bane clerics in the maze that will yield useful loot. They appear to be triggered if you step into any one of several different locations. The first square of the set you step into will trigger the encounter. Each encounter appears to have a different set of trigger locations. To trigger these encounters try leaving the Well by the northwest door and explore north. Try stepping into locations (56,29) and (59,22). Other than the amuRtlet, there is nothing vital in the maze. It's only necessary to explore it to locate certain places you will need to go to later: the old administration building and the mine shaft. There are two mine shafts in the ruins. Only the one shown on the map in the Journal works; the other is abandoned and there only to confuse you. OLD ADMINISTRATION BUILDING (BLACK CIRCLE HEADQUARTERS) The Black Circle Headquarters is in the old administration building. There is a 16x16 blank spot in 򡅅tive character. Not all these commands are available at all times. Items Menu - Ready - is used to change the status of a weapon, armor, or other item. Only readied items can be used in combat. A character cannot ready more than two hand-held items at once. Arrows and crossbow quarrels are assumed to be in a quiver and can be readied at all times. Some items may take one or two hands to ready. Some items can only be readies in either camp or combat. - USE - Activates an 2xItem. - Trade - is used to transfer an item from one character to another. Choose the character to trade to and then choose the item or items to trade. Remember that a conscious NPC will not give up an item once he has it. - Drop - Permanently removes an item from a character. Dropped items can NOT be recovered. - Halve - will divide a bundle of some items into two equal bundles. - Join - combines all similar items into one line. No more than 255 similar items can be joined on nline line. Some items, such as poitions, cannot be joined. - Sell - is described under the Armoury Menu - ID - is described under the Armoury Menu - Spells - is a listing of the spells a character has memorized and can cast. HEAL - is an ability of Paladins. Paladins may heal two HP (per level) of damage a day. Select the heal command and then select the character to be healed. This command is only displayed when a paladin has a heal available. CURE - is another ability of Paladins. A Paladin may perform one Cure Disease per week at levels 1-5, two cures a week at levels 6-10, and three cures a week at levels 11-15. This option is only displayed if the paladin has a cure available. Adventuring After setting up your party and reading the background information in the Adventurer's Journal, it is time to head for adventure, fame and glory. During your adventuring the party will engage in fierce battles, find treasures, and sometimes have 9 to stop, recuperate, and memorize spells for futre use. Adventure Menu. Move - is used to change the party's facing or to move forward. The party can turn right or left, turn around, or move forward. Normally each move forward takes one minute of game time. If the party has Search On, each move takes ten minutes. Area - Toggles between the Area and 3-D View. In many regions this command may not be available. Cast - displays the Cast menu if the active character is a Speln l-Caster. See the Magic section for more infomation. Some spells have no effects in combat. View - Displays the character screen and the View Menu. Encamp - displays the Encamp menu. Search - toggles searching on and off. A party moving with Search off is a moving at a normal rate of one minute per move. With Search On the party takes 10 minutes per move because they are checking for secret doors, traps, etc. When a Party has Search On, SEARCH will be displayed on the screen /to the right of the point of view windows. Because of the slow speed the chance of random encounters is also greatly increased. Look - is used to search an individual square. A LOOK command acts as if the party moved into the current square with Search on. Encamp Menu. The Encamp Menu includes options like saving the Game, Resting to heal, and memorize spells, and changing items such as game speed or party orders. REST - Allwos characters to memorize spells and to heal naturally. Characters catch their normal sleep without having to encamp. When spells are momorized, the intial rest time is established by the time necessary to memorize any spells selected from the MEMORIZE command in the Magic Menu. For every 24 hours of uninterrupted hours of rest in camp, each wounded character regains one HP. Rest can be interrupted by encounters. If possible find safe places to take LONG rests, such as the Mayor's Residence in New Verdigris or places that you are told are safe during the game. Rest Menu - includes commands Rest,Days,Hours,Minutes,Add,Subtract,and EXIT Alter Menu - included commands Order, Drop, Speed, Icon, pics, and Game Level and Exit. Fix Command in Encamp Menu - is used to heal many wounded characters with a single command. ALl characters with first level clerical spells will memorize as many cure light wounds as they can, cast them on the party, and then rememorize their previous spells automatically. FIX t/4akes game time and may be interrupted by an encounter. Fix will not return HP to diseased characters, a Cure Disease spell must first be cast upon them. Magic To get the Magic Menu options, the active character must be able to cast spells. Spell-Casters can get a list of their memorized spells from the Cast option of the Magic Menu or from the Spells option of the View Menu. They can get a list of their spells on scrolls from the SCRIBE option in the magic menu. Civil ҳ>ization In The Game.......... The Mining town of new Verdigris will provide many valuable services and supplies for the adventurer. In the town you will find an armour, hall, temple, bar, and the Mayor's and Mage's Residences. The Mayor's Residence - is a good place to rest and gather information. He will inform you of anything the people of New Verdigris have learned since your last visit. Whenever the party is in town, the mayor will provide a safe place to rest and memorize sp [!HP ) after the character has been generated. Name Character - provides a 15 letter space to type in the character's name. This name will be automatically saved to disk. Select Combat Icon - allows you to design the shape that will represent the character in combat. Customize this icon to represent the character's favorite weapon, armor, and colors. Different computers and graphic adapters have different capabilites, experiment to create the best icon for each character. A u'dd Character to Party Allows you to add characters to the party from the saved game disk. A party is a group of characters composed of up to six player characters (Called PCs) and up to two non-player characters (called NPCs). A party should have a balanced mix of characters with different classes. You will also need to indicate the last game the character adventured in. Party Creation/Hall Menu Drop Character - elimnated a character from the party and erases him fr  om the saved game disk. A dropped character may not be recovered. Modify Character - can change the characters ability scores and HP. Use Modify Character to change a character generated in Secret of the Silver Blades to match a favorite AD&D game character. A character cannot be modified once he has begun adventuring Train Character - (from Hall Menu only) increases a character's level when he has gained enough experience points (XP). Choose the character to train and if he ha2s sufficent XP he will be able to advance one level. If a character has gained enough XP to advance more than one level, he will advance one level and then lose all XP in excess of one point below that required for advancement to the next level. See the section on Experience Points in the Journal for an example. Advancing in levels takes no game time. When magic-users advance, they may add a spell to their grimoire (spell book). See the Maximum Level Limites by Race, Class, and Pri΀me Requisite chart in the journal for level limites. There is no charge for training characters. Human Change Class - allows human characters to become a dual class character. Dual class characters lose the advantages of their first class until they exceed that level in the new class. For more information about Dual Class characters look under character Classes in the Adventurer's Journal. View Character - displays a character. Remove Character from Party - tranfers a characteṟ from the party to the saved game disk. Save Current Game - stores the current game to the saved disk or directory. Begin Adventuring - Starts the Game!! Non - Player Characters (NPCs). During the game the party will encounter non-player characters (NPCs). They may talk to the party, attack or even offer to join the party. There are two kinds of NPCs : those who volunteer to join the party and those who will only give information or fight the party. NPCs that join the partLSy are treated like player characters with a few differences. The computer commands the NPCs in battle. They have morale. If things are going badly for the party, NPCs may run! Items can be traded to some NPCs, but they cannot be traded from conscious NPCs to other characters. If an NPC dies however you can use the TRADE command on the items Menu to take his items. Only TWO NPCs at a time may join the party and they may take a share of all treasures found. Viewing CharacbJters The View command displays the character summary screen. Characters have no money at the start of the adventure, although the Mayor of New Verdigris will give the party some to help outfit them. The party will accumulate wealth, in the form of gems, jewelry, and some coins as they go. The value of gems and jewelry varies, and can only be determined by having the items appraised. Coins always have the same values. Platinum coins are the most valuable while gold and copper are-1 more common. The relative value of each kind is : 1 Platinum piece (PP) = 5 Gold pieces (GP) = 10 Electrum pieces (PP) = 100 Silver pieces (SP) = 1000 Copper pieces (CP). Encumbrance is the total weight the character is carrying. Combat movement is how many squares a character can move during a combat segment. This is based on his readied armor, strength, and totaly encumbrance. Character Status OKAY - Status means that the characters has positve HP and can move I([and fight normally. UNCONSCIOUS - Status means that the characters has exactly 0 HP. He cannont move or fight, but is in no danger of dying. DEAD - Status means that the character has kicked the bucket. Non-elf characters have a chance of being resurrected with a Raise Dead spell. The character's chance of being resurrected is influenced by his constitution. See the constitution chart in the journal. Stoned - Status means that the character has been turned to stone. The characMter can be returned to normal with a Stone to Flesh Spell, which is availble at the temple in New Verdigris. Magic Users may also get a Stone to Flesh Spell if they are of high enough level. Fled - Status means that the character fled from the previous battle. After the battle he will rejoin the party. Gone - Status means that the character has been totally destroyed. Nothing can bring the character back to life. From the View Menu several options are available to inspect the ac_ No HUceDeE$z]ln mL- l Llm_,+QFrl+B8?B0y$+2WS=xЯx?WCIgWi_/ay,y9F_u>v)|i/?[יtN/]0@ PQ@%BRTMTNƯx݉;jj>NbvZ#Sz}zm_1;\^tuz^}O81'qq'I>G䃦G9@0@GN*8D~y<=Q'#~BMFM0VN=;!C̜``_G<``q|arurq`jFjFа;@DZDD y%E7NREF@S@ATFFJPVVTIW=x4h\l{_l٘ )*%l Ecb"hN_HXhc`AN{ڸZۺPx:Ԃ8zz:84PB5 6殦4v&6vB.t3Dww TlpҖhhgH~5V=ɌܱYd7F|<̺[:0xk)a1K (######## COLLOSIVM (HQ2) 201-432-2535 ##########/ \######### DIABOLIKA (IHQ) +39-5193-6577 #########/ \######## HOLE IN THE WALL 313-667-1791 ########/ \####### FORRVM 718-966-8637 #######/ \###### PRIME DIRECTIVE 701-594-8603 ######/ \##### GATOR'S PIT 615-865-4783 #####/ \###########################################/ Secret of the Silver Blades Rule Book  H/Introduction. Welcome to the Official Advanced Dungeons and Dragons computer product, Secret of the Silver Blades, a Forgotten Realms Fantasy role-playing epic. This game is based on the rules and background created by TSR, Inc. and a story line created especially for this game. The people of New Verdigris have uncoverd an ancient evil that threatens to close forever the mine that is their livelihood. In desperation the miners gathered up the whole of their treasury and sacrific a,ed it to the Well of Knowledge, beseeching the ancient artifact to send them heroes to combat the monsters -- Your Party of adventurers are those heroes. When you regain your senses after being brought to the Well of Knowledge, the Mayor of New Verdigris explains that the mining town is desperate for heroes to save it from the evil that has been unearthed. The mayor will give you several magical items and money to purchase equipment. You should distribute the items to the membe p+rs of your party and then go into the town to finish outfitting your adventurers. Transfering Characters from Curse of the Azure Bonds Secret of the Silver Blades will accept characters which were created and played in Curse of the Azure Bonds, to transfer charcters use the REMOVE CHARACTER FROM PARTY command in the Party Creation Menu to take characters from their adventuring parties, then use the ADD CHARACTER TO PARTY command to put them in a Secret of the Silver CBlades party. Using Menus All commands are menu based, and the concept of the active character is central to the game. Outside of combat the active character's name is highlighted on the display. During combat the active character is surrounded with a cursor at the start of his combat segment. During combat the active character is chosen automatically according to a character's initiative and random factors. Other times the active character may be selected by you` before choosing commands. If a command affects the whole party, just select the command. If the command effects one character make that character active and then choose the command. Beginning to Play To begin playing the game you must load a saved game or generate characters and band them together into a party. This first menu gives you the intial options : CREATE A NEW CHARACTER ADD CHARACTER TO PARTY LOAD SAVED GAME INITIALIZE MOUSE/JOYSTICK (Some compute 9v{r systems) EXIT TO DOS (Some Computer Systems) Create New Charcters - is used to build a character. Detailed information about character, races, classes and so on is available in the journal. (The Journal will be released soon! Be Patient - Lazarus). This command displays the following menus to define the character. - Pick Race - lists six races a player-character can be in the Forgotten Realms. - Pick Gender - lists the sex the character can be. Gender affects the characters   maximum strength. - Pick Class - lists the class or classes the character is qualified for based on race. - Pick Alignment - lists all the possible alignments for the character based on character class. The computer randomly generates the character's ability scores. If you are not happy with the character's scores you may roll them again. Remember that you can use the MODIFY CHARACTER command on the Party Creation/Hall Menu to change the character's ability scores and hitpoints (  q_______________________________________ /###########################################\(LW) /### CALL THESE AWESOME SPELLJAMMER BOARDS ###\ /###############################################\ /#################################################\ /######## SPECTRAL FORCES (WHQ)203-327-4104 ########\ /######### AGAINST ALL ODDS(CHQ)514-684-1599 #########\ /########## WILD SPACE (HQ1) 517-484-7286 ##########\ \##Td7eI]%)f`LQ x=P.QAA_z.agP\O!, Tr Sj鉿ǐ,!|#(bGKy`0-x>7}- I\[۹Y c_aʄa<^=hARx;8ݵp|?Wgh4W 6h 9("|㛌wDñ1ɩd[ጆzg݋|~S8O&f^΀Fmn^BTU /bi@cgD#s[-rQgE00\k 4yL:sP0jW &4m#hUh%b@$y d3`Q'pl>T8Ca}pdG< F_D0t'Np8 N&S")(Um AQ'+?8ҸTOCFhSzZJ9\䷑g!"AI Epo v`ax_XC >Ad |{'c>-휂c,,@;Np{XE1}#a#>UY<k਻^N lou?]PLD[* V vy󁌖zSEҖ3`rI jB%WX B3Bh2~6K[+9a8ag:T8[+bב̞LiiWƮi]6 žt)MUx0Cjh-M#?ӐRrmMyĸH,9-<\ǢDzRCoA^Yr-!7Rb Œ板YcKJ ?)Lmښ# TC7V FỲُ~C0&W8zL$f?l6' <ౣ?Cn2\$p"%@8j} DtF9D{ O`GckG/˟gT0HK T,8Ft3rpj)]ᑆ6!|`@X?DPFX@3351pȬ I% E!'P- V5bX/%Ws Z=K ɗg3@j>]{x HS \iA~#2riA m3bkAA- *$(T($eY> Р a*4F1`+ʰt#>")&.=6%v4.DX EAPȋ VÏ r"’ʿ ; Wm裃CV>?WsWɗd XD}@]CTswgi_.(L4* /K,c E9v .jgljk/Ϩ ??bO7u.I{>ux8@ =l S E>Dxx`䏒2S;/i>{KS4/E?nUyGr--J^X)~8MBtFx@@g ]]^k Tp.yI29=oNҖi#C-DBT651UJ|H@"U4utqaL'G:&k.d 0N)-BiE@3m g7$@".FKcC7DW 'Id=zO{'X@}?CLvp쇾tgncSuǏԹqK<~ÏTDEL<]L1>vT%+ZNE 50U4}"U418BHZkƯ{wC;c^S R@S?$8^:'?]Yݵ /r Y-ܺvD`w}g"DiD*>ow$H-""KKCIۿ|rzT9xY`={>q/vNkyxs%<%džG}y/V=A+w,0 Bx\#}]`8:%̔ N}0$+.Rד vϧi 9i8bwaP<*gKKOec{XbA@D܅צƕM\MxH?T;,ӏ~9}`~{/rgǿ}gqa>zsߙ.;}>ϼ?¯ 6K;6=g-f 9"%<'R~o@S.CXq .C45_l @Є`9-ؖ8 P@F@(PZX 4v.f1ac ~&M,TC;H,G#*pB a`w&΀Iǝ--LaCƯ_5-bD$̿#xKM3cO_8ҾūpCώ' ƴδy`E33A"9PСr \,sjd[&e'i E0vz?lps<@T "<*D+=BSOBv՝-av?Sʙ0J[;+ڹi?y.ښx{c㎄ f}x?ڹqexl,]L~nh|d<"W~G=w!m]!Rm ,miߩ$ & 6[JC_q(kkco~R? R|`|$lgl.?/^K2%\|P-=HFi\|EaR9AtKg>V4sT?HG- ۹?89 J=|̓pW~ivR0]>z@k/#)|-!ݠ]^|t >y,( A)-#S Em X`B$4 `U@蹥*n *ʍ%Tx8ȳꦞ  콛;@8'S%|qOOʎXCU׮U'@@ Y&E_0 س/‹SDww TlpҖhhgH~5V=ɌܱYd7F|<̺[:0xk)a1K]ެ`s ` ½Z+^/ AJ!ˎhGkH4#,8T;bсh8"Q1H HX–02 ! (`GהlɀrF5t .f BjckGDsi@:D 00Xэ \]zp " S9.X%stO:ؙГP^"` M0A%|1*eD%嗼jʺ4C`g#*fcâNv1)bB)ljk#q~KfWV_g\[Kx%}KxFyw%OZNX o>ж-;&`v7sķ}>_^[Gv7lķ3~"[^nm9]:|[t8a|o'vc|[,| 0uUGE|h0#s.ןΞ1E/s?IE%Z6!9 9Zr*>((ʔAj42BG1[<DDwNV +4*]nǸoA?]c5=CH>YȊ3((/ e2t;ϐ7 ~#WC1 Ň 2C(41S70s wB%g&H;,8? 'G~[r[UX@(1Y~8-@Ql.5tj^EXT{JF&IPW pG;¨gNx}=-Iv{Iݿ0LٯI i!@OZ/<G mL$Ԥv&ƀ{ BK`㌂Dߤ7U@O=iR?/ߔh~C7D(`GdF kJ @"}f|`?@'FaB^Bi ^>5n,jܠ9Dt$B[i Fos˚J?'ꏳ%LK.VJ8U=A hLM>Hr6"5 zRv s; ‹Va|˖͗.(;PC**䊠8'Ԟ9:IR P/Y 4yO` kK:8ZT: /K@*+,^#aF ")X,ekG1, kIxqW'u곘,|i+=0zt*HU,`_o͎h-O$G T gsasŝuغ PP߆|@8C^9Fz#,^A =iGaY|YH:`,Xz6Fю>|?D l[K w)!6(lAI&_A(A/0u wEkKv?T$*.`Y‰]J8 cFq<3UüP=EzάT~ {&$XJΊ2X-,$+Vr#8/zL!C ,c>t_? Yy7*ZEOƜBpe =^`9|eRZAYeg@cfb.WDc9. 2䵌b{F\$J"&9*l@D ID,Y\K3ǐV0S/J6w/@W \(`j4#nŲRV3֑_Đ}*9xXeVڻX\Ck3W( ?,r W.(3Ա2cHtka+)p$0\X\Y_rc ),!T>ʔ݊iFU+.?M*i65j an3A²ʃsAhbi'V79zWHt!'W"U0VzG(ȟx*0gpÈ8 Zy:M"U|A(gNN^?+' O`8dЗMOIȆ^XPpD&L84^B3o-az)cDSF@ dPXTWA]b$H>D^* I~NNTvjpZ  "V TeM,lF ZQEo%8n a40r03>P*<㲂O?F.r1' 0I?8}YGn-/JB]c:$A]d 1xH r+Mvx# PP) T ø15~A<` Zެh`D!(g*G.#>)I@ i` 5t@LiGᚠl c@wh]"KoHyx!meAG%t-jlR~ 9lj#_qÇiF?>4% )X/:ZD+RVPə\x.BVxmDaG2 KȚZeh6K,9;*}  6o U `SC&MmǢ(&_ZN!R'rKlPX 3T1~ۋ'?mW`gO)+pƶGK!?OZ%t?7zNf1{5Ix;qSI72ϐ\Al#.b)g"-YLHTg"21%bN:Ww!T /Ɇ QtsRL+ -JtI^[Jr`DJ66Dp'=4"ʐ<> >S_C0% OSZacj&hUba2Tb!o GƕH'YQT}=`R̲/׳cX{/9@UJ\h UZ|U@YG5E$4&1E)wRhyd$PLg/f秱SCuSr!Eq],4x L܄HɈMn>$ ǭR8ƒ: {ܞ|\0>d¤B z$v 7'Ԉ GyYUVKձބ#ys¡.!1"X.W#:/f>0a̶8цO_#{M+ho)lh^7ru.rfK/F  6S$dP4nw,ŗ(0E <[gzC]x<*8m.]Vt#Aߩy@B ~òa!RAĮ\xު MA|ˏ=>T6.<0n dK /G3&%GMb U2M` 8‘(C-X؜(IC>txI=4>)V]BC?#3Fr \llBM`PGU9b```.{Q5Q$)k<+6w Jr"^r⒂ ܰ wMy%'r*J"*rEM C8jn7NU"䴂;Xii }d,"=߮[FcSʘ<3)$C c)(!33_U0&6(o;%,F|,Sόm80Z3Cf F}I92S.ߺBOz]V!~%@] t4bWUGG m ;P&GR\!"hb U!tmBEt|`$={:t GNlp{r׀mL)g{x #`? IW<?*՟H,5عw?S( hA;M' -h_A4>/_lL ɧW,l W!>=M,hYA99 ć!F^PZVFtptI&#R΅$aJm<kPY !zQQp\. 00ҋ[ BLheciR`"O8>8yqc+VNX(<#U?I8L!4+}A{Ą@ɪϒvPXM4!{?p AG8vutR[dFÓ `A\i-;OG{^`H o_Z 0D юSA @sPSc> 6ܪ [zgpW B|0  CRXf%0t@ZY@+z;8 `X'xaցil{Ҁ=A,;ol)A,o <Nk,*"'*&:Y$:,C@zei"Lv3<aS)p+|W?Ockr{ ah0s 2P6,&38G[(6şE#X\:\7PQm W,"ښ? qEUL7XY!)rH<"+K("ʉh*(bHaw+chi*qiU]]SI(Dy-b>N! ,,)dcGЃ}&DžyfV"#:^ABxelo(@PN@O03̗B7hʨR0ū#Ht*ui:nfhܗ=qtˀXv 20pÚ]BZ B 0#s=#yCXd,`TEI122 JPa\| }娳B;Z& "*C,\!CЭUihƀxÑCVQT8h({zAMd/ܬ̀zJEP L)`=:z::3P~!@)z#/C.]Y{|^~اhhBSrD`_VR' D fpJ{f$ 2 ?5\¢Prsk4آNk] S Y, jP%e),xKjycy:Bjx)cC[|!? 6WHDcOE0_ xT.077b'!}! _ j6;5g\ZBn!}zb1ro*{{M @cWc)ҝ`R+ ,eIkeP=D$#8pkKK*+*mQ$>ZYb .6`#pIR@v|bC+Y@aY֦*zD`+~]yu/J֫(* D/AL!%Cl,Hz ' #`?e=>H: Ǫg邅dwIjBD`6B#-R%4h G}S%s` R0?jh+m34x =?5HQAt6~Bij(j=r 2Tp+%%Jb*rj2Pj PNM 0 $l┴!c 7[0-@P`hp8R"0 ]9[;|<*%M $en? P"`+*@aNꪼ ކVE0ղIL?z"U<d$7A cyЌSH>(@Dn 5?@\&$avx&߮B3UnOl&]TC*҃g l/,pFm3y!?E+As{"Q;-Nɑ1Q`vtvւA~ 99WLhn!g3qH@ NAE`EFP'y5Q%9YQ9GVU'8 [`$Nރ3u_,CPc)c@,%?:v I1_zaNNfothXAffhkK^煰JZ3Mp'J8a%qCQPSA^\@~uLer1q$`1=_2WiuuZ(Q\{ȭ- IȉN`,F1TA6]  9)ox)Y(b%EaiC$eEe~ {%R? WtV>ϓ'M떟YQ&1gwWXt^fRXOe_ t T5OJ68#|瞑G@G2(ibSZGR0pT[P[Ms{gNX@- !9euw 6 *Q:m\WOD;0 50jz'4/`6~7(y!`b6 ,y7S%A^.S Ϥ,64?ks4&1J  gM{D 8Cr3x u Hpӊh*#>;\9?i4א*+!+W^=HaX>t;B\] 8l}S՞6 z(4]x),Xؓ7QB)`*Ek훙@ p[Kc$MpHGhQU(W-.Gf U՛X BT58~p(3kkOӷ0:{ APȁDstv#SטP0p{ݳ ":P=8_LGQCDDUBǾoծQblyQp}c3A`ݦ 8:xul0֚b쥘OIK*3pH@Ja_G3z[;nv"BxְnaVwL;&S0GIa&OTl_27fks;ު#&OJ2BE_U=j`G4RCS` YivN@9rE)v,b9ǫ347k[\CD0 1K*2;e(, 0@m0=xv[ g_SSH.8@%6QT |4sn6K#F@[8puiGi\?/ՀI\12||Ip KS Y y׎R`EY3>2+EB/AB@Aw 3ӊs ]1z=2t?(?3[l!,eF:0xlA1PfO\=EU=YB RV)*±'3{NtϟJďz4[)s(UBÀ~hAp툷̍a@s` 9$0$&;ICg:^?EgA-C* ` !qRf-; ոh᠏pM-]Y0\! ;ihk`@cPP釃&xrŤ 4z-KxXYDE"iBHy?c 2!9^pLd~lzEJ=씎Ȉ ˓*2BJ@ ?VR=0$ Nf56Mk p'AD&>'Წ6 ^:(w-Xj2|+ Lw:Y(y'>A1sPüX=Qqaq] 0P[KI~p{EP#^x;ҹMĈ~,/gy(P}r6@G#$V0cAv:ߝ\o \&&`1=q _v6X9) WTђ{!TUSAR0F>*hKAe<eQXL'<a .A@/&?3&i,Y$E&mYwwr6 ÒDn5(sU tuqW9#D2ӾTKOnjzXj_3d"Cڣ,R`#:bgE=wU+ OP BFDŽ67 f^ng0p] VRT= G4F| WG!,?L&p ˱9/d"~ GQ5tQO3 Ókd>nj#6cu:BVTVQϦj= \l3;asyeFA=#AѪ^]Tg瞯y[OIs# sc(#1O22(ypj[tc)"XRU貑xPEH/`W^Y~wt\s "v$B_ |qOqѢ*f 0c>/ q"AqI3-ہD=}%f,%ljG 4x39RCN骒xc;,]\¬plYz-);t \/v+GX9@ŋ`FOĊDF@. 'hZWn^\g9BT@?baU1V^,0r `De&gb'$X~`*#)W,M!Ys B*!/B"(uqfYsT(;!#ae]DЩ=}2[Yy0X& WTABf9té@Iq `4#}m!0ϊׅ(C)ȕzxcHya '<>dc l8.}]ÀPNY;>v p-YB Y,09 1^!D)%|HaPA܏C(?釢X @?H'4ߌ&xoOL']> ~zMF8(h3aҜ f_b.C4@8&0|B)#*$BODP!'Gz9t4ЗZb< k?Ə%Je_.Jp5h_֘XF b]xH'O@}XnMÔjKphA: &NŒ3"CX G!#aP?6 ( * %),(#+݀(ǚ2 Ygkz^^(m"vnG0w9:1wo?@njZ_:c#MhWV[O#L‚c *PH<34EN?uS 2#a(ʂ| 222H gE_džp#1``m Pr6v4}>Fp7ڄEd,`pzc‰X{5a|o<. yuy5r|ȡx?%3"X;৺ih?wOY!A bj!!|]'C" 54)Mh&rB#>ʏe':;2>\ajCw.! {gkigV2^`3L{b t,#}o"ӻS|WXGj$֠=+74N}3 ذ axðMQ~E6y#ScGp;:0wr`iۄjgD`OSZ1Rx :am.qKؠ @Y) 4 `' +EFx; 2C22g'#ː>L6!+AI%0BzZ|eA kIC}#80t\],DY(?eA\/!Ib|tL{@~i|2gC@XXGB!:p4% Ex_zܚZr ˍFyT H_0'oW * c{[*2ɂ(ՖP`bvhJE=+DU$c+C=}3S~-𭌟aP6$%dDD~p(#imNJg H D-]( 5e XȌv8x;P>H"PJa^ϳTTU5'?4ٟ1ϿZ|z)PeOecɷ6PX%AgJXȡ_/W{xgMY˔+UHJ J(?sx ȶam"/g<%n75VUmDӠr$ǂ3`P{L)@&oj2ѱm&s5g*~GSs~FX%#O)`bۗhG*[c0 O()8 [~wOlV;F)=[Մgih<0RxOC-N*ü@?s2|bz (Ch> R_{ % li_(Rt_Ά-2QNd\/%gnI>YΔn_L& m蚠&bw~//"#zg "TUќDv $YkD`yVw׆/B)'I $L_glQER,I^I:9yKiK+*HS(,Knkkd"cwaPrg-h(˨yk4x+xSၰ¿o*A}vxgHtꅔ&khs;1ZPSƽUflz7  W{5T"9bi&qO#RR?~%d d챔UDXX<&=74WAA-M51Ux8$W,C21ȌḺ:`]PyF]UA>w1 ʇ yּZ*0WkD?ȅj0㨨HsL@ Ry+`;??HC+qSal:RVTNYR^N@^O~ۋ}H a,4urH7ڲaxM(\u=Uo#!-`G#(BBP>PŁ|Us+n#䅰z KU4i<ŞM(8/pw #LFB}Q̀֔%$!=ؼXsޒ_ؒ!G?SNb,0%i m\:-cy%|~d171_(5.V\0!?_RX ~_4P )a32u TgEF2B#S/~"tAa>Π׬;'% oi6meTN[A\x@4_ʟ`*|2B1Q K1C+D%'CRὄM$o#_:\<',Tx"05|~ s ں(KYq8gˠHXcy쉩^r0B!BzlQ ffK3v`;슀4 oq0lg{K@K|z |߸fO[ -` \Ary, wnY'烸vגͿ=ԧa&CCɊ A-D4`(W,8_(-Z @g7eP&$dgih<0y('("E2"7Gra RQoO4W )\q:-!U>궱8\O*neXnh\Ђf96~-&s?{ Aڎ0v}z%/ieX!t\'[-&殶S0%5P)Ѱŷroi}Dh@mO~@60bX) 5[7+NdlZWƾO԰,q0ra!2"JʽB:1*j맏g´8l4r_ `'@;-HjH /FOaQ>lS Lc!h0bAT 2sPu@2 T3Vl>[M M)rJS[(%.Ǻu`8=# u|4yҒl/b N)$eh(3c›s5է}x%'l'P'"mL/*5t;,ZsYw@dڌY8,PfC]`7$/XגU_MȦT5 \x U-056?@x_ :łF %>u2@34 -s;6@yZ AU r=f!?0Ʈl /3/ Zzo&C{gEIyO <0Gnxlh9he|kL 6JfP+:#N`_.OC(.r{9|$##%K'&gAtV콡]Vx`K_$PYg3O9@uu6q$bԇqa~H*a,'[?r9!w*0AÃΖFG'~+\c!C:wsYb-`1B5^\g@A4B; Lh =]l*!ET9j7GOr-A'J+EcB+煈434?D8$hard> :9C8OFY98l1t!0@J@y8c-U 7hrDj<1@ 1CsHbC]z/p0Mk4÷ə;9Xmp6@z X:1HaZAH>0gCEXAZ- yxpAae%VD|;?8f&CX5W;PݍBm"l85̸`FB.MI9qc.e'WQS\9~q z.\+ok/E 08B)͛{x6ϬT/w'ҦxaXSY3ͅR)8xX<8y- l𫾠(ܣQ) f G6.HGi.UvŒ&"F'jȪ$)*J(x3L [; O*4 W!+vhLLwbi 'iH;E𭀵*~a:c5]xƞ2 8BB8PV "0$ݓ *NK5ژfj)GyXB0*I? LrHx $`_EF$Vn T GTGPf$خHS-FCZƠQ8r f։RTQ FC7r"⢽E^ISV$LԵ({4%>߬HAHX;&L FHŨd"c5Ϙb@c ܲX(K4Qx5l0g\/F@)'QD9 ,%gz_q TU{Po hM}|T{3sGU jK7Յ(wSFtpHa ڀq+> Vq ~ڹe8>b7 ‰}C8i;b0<*)*oYe}!#F0%=+hP Im-JlOWudAjT22̺x9ﺸKSPLƃ`2"A~KpA6߈ Ō#aؚ X/(fCBQ}>72ڍ*>)sb_kqGc FƩWÑLG;0PCxg \ RY v2ZN  HX-58MJoק%C4JrϮl Jϑu# tYyJ  Wѕ(FW[BHh-%շpt߳Y~W8)F7)ಊW3p EM-sǷNz d "ʂ4 u^09(8ٳ=\&޶Qa#Cg_d\T\PFV*TNERATDW:>?XOh3TEخwP*e$T=Kq+~ ?AgkN>.iz&=@0jʠ>`>eZG8bP`'Yy!AXy0UѾR $. 54l+?ֈaG<2<04"ve4%:Y~xZz9<O.愂j:r ƿ^8<&r;72TRfPR#0֓[~tHte huvr2/"!'kn20Xs1Lmo gtP XJ%?k ,v/!`GL2=D9ޅKh !&T濈$ZPNʔBSI @ʇxY9χd(PTȓAN5_%QYi#,N|1WDC>6Ff˄S&9(J i#}ǶHܸ fm"ufv cyMb0 L8F|1B~_$y#SBMwͣ{[\ww--ͅ@<|")3OclEy3KiǶ^R_[ǰWg2DTM0 bPu 'Wc `[dTUIJ@3 CSYJl Ц.BlHrO6B8Ľppr DNBN(ai\%(W_Z39P pX+TC((cs-D((W-3Ì $hI5'XMZp'0n*deJC|x@3WF\jJ7`[=;J&1`jDxz w JcCi`(< +aiuOF@0Ϊ!Ca0"h5%J| i_(>dL d:@|n M.㊪XX 34S/ *ip5CI=PB2_-َĝ*d~>x1э~oP Spi_xύ ~;6j i0/(c{[#te7 2#/ ;_Q.0>'e7׷r Z).!#N*",H Peⳏ<&oJWAu  O,~Uݷ R pyᣢrQIagWKfF ED "6a~Џ;$?͹kFj6‚*JSW'a!j+gW&I'γU v@ṙTTQzXQOÐ"@ vF?ϣU)Rg?!Gց2"1ɴsINj2Ґ W ; qlΒ8T!ܐ5=/!1!Np8p:0 ro΄4vGu2P e$DE~?3Oc w7_8^@e )GjX'% AA 3ǝEsXp'x@ipa"Y>/oSì_GoiT{B YmZH伔=*u~bO-ypmxERVl*6&4P#^촺`5"Os)]bd$ML] Q}_;=@TP&I{/ 4/ ԉ`@ s6Aˆ1Z,YyLa+x(BH;󱦷~'vL&5tOr6sIP?sPi zB:x+ju 1]lМ O=ᓜ9S(!),[|WMk8G HPPBy91%yY^r%A9nRSF/>O4@ I()gv~+Ƥ?Uo Lh,ȨO+{0lg|M]8KHH(+%DTx}>N+)7V8~-:OSEӜ *2YlLKOy'@IIDI 9%xH2|#P]/{SknLpwKM\Toz #vR-Qge( hȢIc6/.BX_J"b"#ّ3 '߹BpC(AnxINB(-dG[b a{ qFZ!>{URq<ãigל߿DAqD*<`lqKQ9X5dQ~`j"װVѨ(A_>@]8ae`Zق_ 6*$# Q :p#Db>e=C>B8O * Reŏ1S0GNj&ErhwJ`\F0Fa\t^kNОaPџfACp%$$e$U4~A9IAs4A0 1($Q}c@iJ^acO! lǍ;r mP5%)`4%1>{/ .⊆U@`IURDV3FVs>qN ,wp C(2xmӇaD`3 ljGzq9F1*$VBdr):䧃iN{r?me%$k!TiAQ-[+Bpa˜~ $FGU%9%0WkfI?_V?gx*++q"|`DWdE5g ³<PZ!`w70+U{ ʻZ]ҀfL0J<4t@ێX0`(`m)>0.EH 'М$5ż +Ϙt5?sY8ƗGѧ"=MEއ4"%Reǥ>)P=/"p+ ^>bإqKAF[}gf!0k"B^t&SB tl| ?~Z&Wώ/)5f$@a[ؾ1NdaebN̴,XRH1% ߴ EUSʏG<#:pH -/彝ia}4]m=db 6/'$(.5=@jy>WE3Kaf9u)TPJ`w@7%@sg؝C d &BX(wB!L | /;&f T,kq*pV(gG XX~v e&SEHF"?#0H)(C7 9>),>҄4kY8i0;f.fp x֧* L9~^Pk Y|R0y)ߗҝ(:Eike0 3t}U@z<zPxpA$`^֏,gZT?&q  Chd+/2r#Ȩ#pr{wI=I'ݯϏNMRYRHRFRESOC}O.{T%i`bax82<=>7W휕i`.#~#$;C?L,;@47ߕP9n!Si9yai86ZJC`ї}QKa!74@]0U2kឧ\ ,+(Z2Kie$ƿ`)^}xJAxipPRЮcD9'>XBJb< P!1:edu=LpOpu8˿4u(}!Jg?-bP&*?w9XM.8A,/MLݎ~߆D'~¦AN `}g@Xv`j' 2*Qp2P*\ˊ h 5{&̷sA Ǧ ĐkUwYeFCQ5Z D Be BpE5ȍ3X*qw"\0iބ4CG/ĞL!%Wٌ OghX˸t= DRYATV>P\RX@=2?BOɔLƾ,-aڮ ̉S:b`aC'C@LfpMj",#,RITHPFFW2|QP}={a $mVFpث@i1~'*A.FZqkUyV pgcJԣߦ4pXfZ; #Ǧ)WP>|9Nµ8W`=#NB!5^!&BTH Q&T0q! D)99OW>$s *,9љ`]r) 0,2v}h ., (:8<_W.6 `y]h1$AD?2(>@JX18ji 3uj+OYKq#^q@&3 Q/o2^TH7BI,G qB G$R06CU ӆG^f6C/tEDe5$ Q@YU4bP ۬E$=0?/sN>GJV(V݊q>sp%G_cjfQ1@t~юs=kk€cÇ5Fӯ6B@P*%Gy AKK6"zi xAt/R(S64ŏ=^>^ʌ^Ϡl%a~| 4 H}hQb~^_s,зuoU~"X'i3, ?cܤ:_;elHl;kALȎ7gWD2'HJ; ׽249$ Q>D0T,6iL*GF5qgkv f";Z/8aF>Vԓ?%dDlšYE+4`($OŐÑ!&V@$t+!](pH3RBpr8y|-L`glhmsuc>gȞ|P:j}!WnUqd讌xH_JBhDOǻFgt(#JGL՚ÔBot@u*3Ta!s B<}O ҐTO3 Aʀ5?X܆ŵrs Z ?|`^^m6'◦@N3o9ss70Mǡ`t4 MFBĜfG#ˠtj#xERAY@N@:ATFFNd |6;xDU5ߜcA(Q`|K)&)VB^}0 E@^ )ugEN,/90yG};;GU N.Cőz{wcT@=Y=efҙ-HŸ䤴8I/#ԯ8 DZ}i̟o,H+ _ɷw dGLǥ:L{b B WDԲ2E E0bEx q倅F0& 1_k 3"`# E;"z #"2,Y0И}lkj_9`eBAk XSp"y@Vq#"&88N܄{0%.BkQ">MґцOwHݝL '&1 ^ /γF]PNIM2"kag& NH< ()]>a7``#I T<#SIV,8w "hfh.m1]&2A2{K+LJ9x\~ؘyI 2xFJ1P3Gq BN!ӏ}ŴH}KC }nbY?2o~0'~?{}8{wBL ;Xn!N"^FFH5JWҜ„ >,OYcH|5Ž;rO{`;z$$+F!wz]IdS8!6аz{ZV5WK'Z|O`1Y`.;[WeFoB݉J3#Ht0׬=)VWq<1ׯ)ne6VOʕe Io xo7ؐҪ> IDW2xlI@ngxQAyEN@p.[#taGfatyH@o=§F:|fUu9qT!"f7܉S33%nGh%@=8Pwcjh .:Y «*:P`9u[G*',!('"" L#'Lr2F~>C]s˘lD6"x-`8@ vio-A Lj 9:du)D+tyJ `, +.b:d//rIP'BCcO9PO@KXd?T!gph_9%,sH\3.{uܢI|*(ɈJ+Ȩ*(w ͐#ۆW $*h̰bœjypEv`D:0 7yv 0Иta>hh)WXH'D*ϏPJ܏5]~ꪐeGh WUX3r,Y^J0H20˾Po8@DE@2[OC2$B&@T'{ӈ59Yim\lq rfU,(,*$D*(,[&R*Y*Â8kQрv.\*3 9T+xS2#CT_s]ƨ]PX?F ;YI d^wQ Lɇc;X ڛ0),=Huc:W,:O,}qYaE?>|\,$@7I0x_> }٫?Nߥ}l}>Ǖ@QW_oi_+ B<)TDIcr1(i5B.*$D5kh;E~}ʻJHQ* ߭T,Ƶ&,bqF8@ۡGnV‡ ~L`5:vzj&$5bxzCn^ eTmvf$ lXrp $"*$DhuIVQ1v1H kJ#fk,O0ĶI +hʈpb ,tO#So^(N%>FTVFa,08]-P|c^8L:utg3bx00F`i{|#4?!SH,"J27I[K_DW 5*Pg4Y}4˹2äXi%Hv24],|Oz~ gC|P:BXJ (Tz ?6?HYJLGh%]=\> ǣ.'*a]/tP T|P5?PN S ,$8mByd *.*@|ŁV#0|W=9~?ʀS+-+1ZDPiҰ)pa!:~f@PG A>JE|*XGa&e:P ya\MFBH^ "|^ߣlj>(B~@։@+oTzPxm`\x\iiz7y@( wiZ=\SHNF1&</ #f BBZwQc\'Dy8a 6d)zpx}4Pi JXYhapGHxYbYZflJJg²Uj9 [^2Vdܓ`){W'3K04xP3җQ|@lxYǢsZ t(9De/rBZ^IPƟ:e}6P&T'(}J^'a8YH^4bM,,cF).T0t&aL%"dkI#'{ A (d#{L d@6| "NX3P#L&R5EV޶+,Qʣ b+L%Ox`#%h2^"P2h^Ҏ?.'#O l!؁Lipѣ[Yw]ϭUߋn(Xlw=poV& G&>o%A9qD|)K?ïi= Z @Ǹ%?O(Srd*C/wcAjpח$/`_32|}63{bX "=O_ӂ ~G*HIWӃz1y篗31XLbWa8}x_^,ӋF Mn1٨£´`<]X gR.v[쳅 `' [Ec<`S{kࡁ4w !D^LS cfW[ ،/5ķ AՏpAS5Aɓ 8@tU}n/Eô`:[`2`2*PBD{W'37c+OV6Xc#!YÁF]ɥRx_؏C?$Qǖ8?OR"E\ $W '1N0['p{*UX`sx~x1`G2s5~HGr`8 eh Ѭg?C̠G~>3.)DQrzaΘ.),+J$>NfO Y!0a{xƝtR̗ddB^eYjxr%"gl|@RA&@_IJP}f]nO~30/ii; tCb:@G1DC3wѪ'~1=^J3S&5 d IQ5Q9^ipaRl,VzRhKBHdyLd'L"y .FF0r \E7i)aa+i `1^8gkK!-K=`ցa~R|0\36Rǐ5!!Wc'{(|D!CZmPDf"(RiqQTLPi3'1:p&= ]cYzl,w~,*Gۙhl\a!*t8x@|a[y!z  L{4= mɶ%$yrPZbc)|_ -}S VcN|FnR50"22?ŀ`^ǠJBDP|-xlf<pyAcQCpcxW%بZxOMLy$D tcl{yk ed k9x`u.'X| KQu{``2/'lje 6f'uNҸ⾁]gqū M$0G'Ґ+s^VHH6si@cO(~^JVB fi.1^u*w2m*r<ՙhD$7r4=狜-#K@7t4#zWsC ?~kC<3(ٚ`y}BKhSa~ ]`t/2+\Z'Enh82sB?QNM~ý_Dx!Da%]lV$'  fjII "&+|ƈ* 'Gj-nB]#/#ϐ `x涝V/ 1ӿSl$F|f%oMڀug>(9kP5ޡyT8GI K\C^b ~NRy)'I(Qޠ 7 *Td?{5ӰY_T1 #~ᄀ;]gd:]iUIai(9pS4;YO`/jg+ ޾ÌZ3VI(nzzOC>t'ϭтk6B_fQ=• D05稞XfeL/H!F,B!/{ ~*QvP-d ) H&.ebicdZUP^bT JIQ)4IJH*( +(P z5a+)C7$<4ַ ͋x PM,.jTL`&6 UD`PT'c6޺Ai~dAXA$PCK1oļ_`lwnp<` `d( Ys# aT8 ømx쉣x+;C@8#jM-=@3'/ppժ1%o[ȴC;W ~Ph~<BM/:+`3.HQ!GcטF?];޼>(HUR&N! (mT8ۿYsi E<`AaZ&J^Fvj?>S;"8)>O= mBA@Əe IGMZ v|2T&.yqrg䏓[]JL Mߟ,_rvvgx*p+VEpN=3%#'%4ܶPÜnL{|AZ1ړ:ƬR vPDNwF-qxF핛 ʂjG*J;ua{?`c?ǘsgl[K1^ d) ƵUut*{GL 3 X1F3GȆ˚#$~oCAP0SG0]tiqcUdK@mh̦&e +G 0 ~w"D^([=Iʸ#N ?NY5>66V꽰p@ B-` 6f**3+}6 Iˊڑn"?B7I4apFwF~C8ƘJA(>x,}2+0?1#O@n/\66< !1X4xu!Γ0 $l"{dt,r FK+)a>yWlpUŊT2"To ЈZ! kvx-+E pH!c/ #jkgh%'B'˧(Q0 @džǂQqJەQTQ$QTQ+] KΔ.cE_8_Gw&Psa&w!GGFB yn]2t&P2tߥ˄8ogfP[߰Y^jc}i#cwTL޽;_ t і 웈#8&&?)K)sw&A*=!Aa<~h:Q@6^MTVTNE@ t0,9@f %"dNNH%hQZĐhd aƯP#57 G w!m M0VF}h=7)*ꂚ3kq#<ߖ I_c6Ҽdmגl@ ,SXG Nk)/O?TX0XEtp͛Og6‹xIioh𲄩1\L /(1#HAh2T licjzu0I|g89Zh - @1{cDcc3ȣB}O`<ī7)4"}MqPLS%HkN y N> y N,yNu,y y hVN y hVN,y "y "i20<,2<NA 0<N"y "i20<,2<NA 0<N,yNu"M;|N8J g a ,yF@Nu,y y C <$|G p"< $<T&<2NNuC# 9 g$afaa 9 # `aZNuA IRAKf 0<~"9 QaNu# Ia6a@ ,\Jg# aa$ ,|fH@|lg$|Lg ,Jg# aa` ,(Jgh# aal2aZg ,JgH# a`)| )|Sadd)|am)|)|)|aaaPNu f, ,f$EG $2<afR -f2<aNuJg<fQNu"M;| +|$N8,yNu"M;|+|$+|(+y ,N8J-NuA"H2<B#@Q#@Nu"M;|+|$+|(+y ,N8J-f;|N8J-NuAB*<4  ,y "< $<NJg"# "$<&<dN"9 N,yA H*Nu,y y p2NunL $    5SADDAM found & removed from memoryThanks  d 5df0: is write protected and infecteddf0: is being repairedSector in progress: 0000Schwarzkopf-killer by RAMmycon.writedos.libraryintuition.librarygraphics.librarytrackdisk.devicedf0:l/disk-validatorl&,o6@FPV`nt~ $,2>FNT`jt~(b@2hnt8lr*JPhv(<hr| H \ Jj:@L  $    5SADDAM found & removed from memoryThanks  d 5df0: is write protected and infecteddf0: is being repairedSector in progress: 0000Schwarzkopf-killer by RAMmycon.writedos.libraryintuition.librarygraphics.librarytrackdisk.devicedf0:l/disk-validatorl&,_>{#W>?Hն1- 墯:SE#~8͈'mJ=Vb0qy`DoZ7?1tT`\ -̉tlq(MhC z0j8kbNd*D:6 p 8Oy} ̈R1AO) nʧ,h`1oYR~pp`#BJ * )-O M['2v%=$D( ԥ4:GتZX9eJ?ZWp `;rI, ǔZr`_x9Ng >H{ಳ߮~N}4Z?hD֔@ .ִo F,riqg5[^`6*Q%rO==ør(&4Qi#,Q 6BfDwtjo*?hS"Eyf>Ԛ"AҕdkD#pOK#li[F- `^ J3P@e\h8F fpb%t<( ZenS F2b/:&[מ8PJ"`2YzziyjKA| z^@ 2 M}0~2r5q"!dT^B<6 @T=(˗2 nU*x^H`{>e*Ei21a285 .{0?{t>l`1: P"iIx6q,ĤR!a쯌K섲v2H2)`+M 8$(u02>xbr`W`sHb"1 :dl oR a@+s f\=t(fYo ^Gp lX8:d̀ %ASȚ؁L7AJj]sbbR]~p6Kd[₉EttS#$ 0mN t_Rڍ|1PBcyqИ/ WND\>@jREƘ}KpI녤VSpK/^[=Mwai%|%eڂ1,B9>i{J#ԆH^%c R=sq?th foAt!횉o܃V2|0Ƈ,H= RF]9o,Q"J5";G`~)[a_=>Tu:?O? a?Ȃm$<~=H 6_rxޠ+ [kjcB33$ n]ḣ.;׻zs12C Ixk*״2j2QZyN`B{p1x;LtE~%7ዎc+@ȸfrj`<}`;sA}tckFp U Z)Z0 )︸ GeTuG2b2r=GOj?IYxM:yаphi];3pSP ;Qw\&~hx & UYA9e8x [y8<Bps M>+dpfo ~ FplG! 1Zqg J\<3 ~8?,{ч-`հ8)^X ǧƇYqμ4A {B`^/ƁAZlec<'@P@VDf+_ ^1'6GV~< ^ *vᵦR6P˴DD+$LLkLwث+m-S`:Eūº=H&AC—F mœ A{)`\DcI;oConG0pQO#1չ`?3?gv,q makes the window active before it starts waiting for input, so if the window becomes inactive for any reason you cannot reactivate it. If this is a problem for your application, use GET instead; however, you will not be able to input into any other window, such as a CLI window, because GET continually reactivates the Superbase window. * The CLEAR statement must be placed last on a program line. * You may want to convert Superbase text files (`.sbthw>' files) to ASCII files. The technique for doing this is: 1. Rename the `.sbt' file, giving it a different extension. E.g., rename `Merge.sbt' as `Merge.asc'. 2. Load the file into the Text Editor. Its name will not appear in the list of files presented by the Project Open dialog and you will have to type it into the dialog box (remember to include the extension name). 3. Delete the lines containing information aboutiA+p ruler lengths. These will be blank lines except for two figures which give the start and end points for the ruler that is attached to the following paragraph. 4. Save the file using the same name with which it was loaded. * DANSE MACABRE * (713) 324-2139 * THE COMPANY WHQ * sed, for example to achieve compatibility with the ED editor, by setting RETURN=OFF in the Tool Types list of the Superbase icon, which may be modifiye you, Lt.Sharkey - Champion of Justice 'n' the American way. It was a cold day in the Windy City. Lt.Sharkey left his office downtown, to force a meet with Rubbers Malone, the local gangland boss. He knew it wouldn't be easy - Hell, life was never easy these days!! The city was going downhill - fast. Where else would arson be regarded as major urban renewal? Nope Chicago sure ain't for the faint of heart. So with a freshly oiled Gatling, and the wisecrack from some punk about zȻthe Untouchables not having washed for three years still ringing in his ears, the "G Man" set out ready for some action. Gamesplay Lt.Sharkey is controlled by a MOUSE connected to the relevant port on your 16-Bit machine. Moving the mouse allows the line of fire to be targeted at a particular gangster on the screen. Left Hand Mouse Button - Gatling Gun Right Hand Mouse Button - Molotov Cocktail The ammunition that Sharkey has at his disposal is shown at the bottom of th{Aye screen. The number of Molotovs he has remaining is shown on the right hand side of the playing area. The gangsters have had a tip off, and direct hits with their bullets, knifes and molotovs are registered above Sharkey's ammunition However, shooting snipers on the screen that appear in windows and behind boxes gives Sharkey the following: First Aid Box - patches up Sharkey's wounds and increases his fighting energy. Ammunition Clips - refills his Gatling Gun with extra rou|؞nds. Bottles - replenishes Lt.Sharkey's store of devastating Molotovs. The Shoot-Outs take place over the following locations 13TH MADISON and CLYNE RUBBER MALONE'S HOOCH FACTORY CHICAGO CITY HALL BUILDING SITE 1st AVENUE and MAIN THE DOCKS MALONE'S WAREHOUSE Lt.Sharkey is out to equal the score, and bring back his Moll!! Docs typed by The Jester Supplied by the Fabulous Five _______ ___ __ __ _______ /\______\ /\__\ /\_\ |\_\ /\______\ }` - C L A S S I C - \/_____ \ / \ | || | |\/_____ \ Global Hq /\V / / // /| || || | | V / / / |\ /|/ / // /|| || || | |\/|/ / / | | | / // /_|| || |\ | || | / / Sysop: BamBam | | |/ // /__\| || |/\| || |/ / Cosys: Diablo & Wico \|____/ \_______/ \__/\_/\|_|\ / V _______ ___ __ __ _______ ! /\______\ /\__\ /\_\ |\_\ /\______\ ~hu * - Fast Wares . \/_____ \ / \ | || | |\/_____ \ * - Cool Conferences : V / / // /| || || | | V / / / * - Awesome Message Base ! / / // /|| || || | |\/|/ / / * - E L I T E Users only! ./ / // /_|| || |\ | || | / / * - 160 Megs Online :\/ // /__\| || |/\| || |/ / * - Running on a DUAL STANDARD! \ / \_______/ \__/\_/\|_|\ / * - Free Downloads! V (-h$n!-) e4J V * - IBM AREA for THG! ! ! * - Check it out!!! . : : . -()- Online Since 09-Jan-1990 - Reach DownTown at: ---> ++31 5750-29313 <--- 24 Hrs Online! V _______ ___ __ __ _______ ! /\______\ /\__\ /\_\ |\_\ /\______\ jX @ myco n.wr ite"H#y 3|NNuH,y"n"Q*i :ZfJ*ga,y#"n"Q#]B*B.B2C"prYQFA=ARA^C ,yN"@#]. "] <N."G*yN#U"y <N.LNu,y y C $|G < "< $<@&<2NNu,y~I K -d;|"MN8J fp;| "MN8  gZ( afN# aC )@B@Jg#@= L8000 The solution is to enclose the filter statement in parentheses, as in: (Salary >= L8000) If you were running this example update under program control, you would place the entire WHERE statement within parentheses: (WHERE Salary >= L8000) This solution works by disabling the automatic optimization which causes the problem. * If you try to print a line longer than the line length set in Superbase's Printer opt_sGions, Superbase will output a Carriage Return followed by a Line Feed when it reaches the maximum line length. * Note that Amiga owners can set a printer initialization sequence from within Superbase's Set Options dialog. This allows you to set the features and modes you prefer. The sequence of control codes is sent to the printer each time you perform a printing operation from within Superbase. If a sequence is present Superbase does not send t`m%he `Skip over perforation OFF' and `Set page length' codes that are normally sent when the printer is accessed. * The output format parameters BF, UL, IT enable you to set different print styles within a report or in the output from a query. If you wish to set other printing features, you can do so by using the CHR$ function to insert the appropriate printer control codes. With a report which has been generated in the Forms Editor, you will need to insert the controlaZfz code sequences in the report program. In a query, you can simply enter them in the query fields line. For example, on some Epson printers, the sequence 27, 14 selects enlarged print, and the control code 20 turns it off. To output the data for one field in enlarged print, your query Fields line might look like this: Firstname, Lastname, CHR$(27);CHR$(14);City;CHR$(20), Street Note that some control codes may be inappropriately interpreted by the printer devibce, in which case you should set Print Raw on the Options requester to bypass the interpretation. * Path names. Superbase accepts path names up to 40 characters long (not including the file name). * File Names. Avoid using the characters : ? # / ; or the space character. When using a file name as an argument to a command such as OPEN FILE, it must always be inside quotation marks. However, a file name used to extend a field name, e.g. Namec1ig.Customers, need not be inside quotes, unless it includes non-alphanumeric characters, i.e. other than a-Z and 0-9. Superbase supplies quotes when necessary during dialog selections, but if you type a command line in directly be sure to observe this rule. * The Duplicate option on the Record menu re-initializes any constant formulas. This means you can duplicate a record which contains the constant formula SER without duplicating its serial nd@ YOumber. Similarly, if a file uses the constant formula TODAY, creating a new record by duplicating an existing record does not reproduce the original date. * Superbase and the Forms Editor require a large amount of chip memory when printing a form in graphics mode. If your Amiga only has 512K RAM, the graphics print option may not be usable. * The DML LABELS examples on page 5-78 are wrong. Example 1 should not suggest that the command can extende$ over more than one line; example 2 requires the keyword FILE after LABELS. * The normal New Line sequence on the Amiga is a CHR$(10) (line feed). On most other machines and in Superbase, the default New Line sequence is CHR$(13) CHR$(10) (carriage return, line feed). The CHR$(13) may be suppressed, for example to achieve compatibility with the ED editor, by setting RETURN=OFF in the Tool Types list of the Superbase icon, which may be modififu^ed using the Workbench Info option. * GET and WAIT (1). Control characters can be returned in GET and WAIT statements. If these are saved in a file which is subsequently LISTed, they will generate the "File contains non-text characters" error. Note also that CONTROL-C, the standard interrupt key, does not stop program execution if returned in GET or WAIT. It is up to the program to detect the value and act appropriately. * GET and WAIT (2). WAITQz{ from the contents of other calculations or fields and then to display it on the form. Another application would be to display a date by using the keyword TODAY in the formula. Examples are: Calculation name Calculation formula subtot1% Quantity * Price name$ Left$(Firstname, 1) + ". " + Lastname When$ TODAY If you want to create a self-referencing calculation (see SeR5&lf-referencing Formulas, Chapter 2, Volume 1), you need to add the calculation to the page and then edit it. 3. LET calculations. The formula for this type of calculation must start with an assignment statement with LET as the first word. It is used to assign a calculated value to a field or another calculation. The field may belong to the current file or another open file. An example would be: LET Amount.invoice = quantity * cost whereSS?4 this formula is attached to the calculation fred%. Quantity times Cost will be evaluated in the same circumstances as for type 2 calculations and the result will displayed on screen in the calculation box belonging to fred%. When a new record is retrieved, things happen slightly differently. The right-hand part of the formula is evaluated and displayed, but the value is not assigned to the field named to the left of the equals sign. As T=with the other types of calculation, the result determines whether the calculation should be defined as a string or numeric variable; i.e. for a string result, the calculation name must end with the `$' character; for a numeric result, the name must end with the `%' character. If you are using a LET calculation to send or `post' data to a record in another file, remember to save the record after completing a task. 4. Executable calculations. UX0These calculations contain program statements which are executed when the user passes through the calculation box or clicks on it. A calculation of this type must begin with a DML command as opposed to the name of a variable, field or calculation. But, to distinguish it from other types of calculations, the command word should not be LET, AFTER or POST. Apart from this, executable commands follow the same rules as for command line statements. Almost any single or multi-V~vate the image colour map: the image is displayed in its original colours. Otherwise, the image is displayed in the default colours of the form. These facilities for showing text and images in external field boxes only operate if the box is more than one character deep. For this reason, the first thing you should do after placing an external field on a form (in the Forms Editor) is resize it. Amiga Colour Palette On the Amiga, the Colour Palette option (in the Attributes wind?now) has been altered to reflect this computer's special colour features. The Palette now works in the same way as the Preferences colour changing option. It also offers several extra facilities not available in Preferences or in Gem versions of the Forms Editor. You may find it helpful to read the section on page 3-9 of the Forms Editor Guide as an introduction to the ideas underlying this feature, but for detailed instructions on how to use the palette you should consult the next @x7section. Changing the Colour Palette (Amiga only) When you click on the Colour Palette icon in the Attributes window, the Forms Editor will present you with the Colour Selection dialog (requester). At the top, there are three sliders for defining a colour in terms of its RGB (Red, Green and Blue) values and a box showing the currently selected colour. The set of colours available to you is shown below in the same format as in the Attributes window -- as two rows of eight colouAZׂrs. If you have previously set the resolution to 4 or 8 colours, only the first 4 or 8 colours will be available and the rest of them will be ghosted. To change one of the colours in the Palette, first select it by clicking on its box in the colour panel. The Forms Editor will then do two things: it will display the colour in the box at the top left-hand corner of the Colour Selection, and it will reset the sliders to reflect the RGB values for the colour you have selected. You Bcan now change the colour by moving the sliders in the same way as you would if you were using Preferences. When you have finished, click on OK to return to the current Forms Editor page. By using this technique, you could define all the colours in the Palette, setting the RGB values for each of them in turn. The Forms Editor also provides several other options which allow you to change a number of colours at a time. These options are indicated by the buttons below the colour panCø el. The Copy button enables you to copy a colour from one box to another. The procedure is as follows: first, click on the colour you wish to copy; second, click on the Copy button; third, click on the target colour to which the first colour is to be copied. With the Range button you specify the two colours at either end of the range and the Forms Editor then adjusts the colours in between. If you specified white and dark blue, for example, the colours in between would be chanDWged to shades of blue from light to dark. To set a colour range, click on the colour which is to form the starting point (or the end point) for the range, click on the Range button, then click on the colour at the other end of the range. The Read Prefs button at the right of the colour panel changes the first four colour boxes to the colours that have been set in Preferences. The Reset button reverses the effects of any changes you may have made and restores the colours that weEI*re set before you selected the Colour Palette. Report Functions Apart from COUNT the report functions -- SUM, MIN, MAX, MEAN, VAR and S.D. -- can only be used with numeric fields. These functions operate either on all the records in a group (if used in an AFTER GROUP section) or on all the records in the report (in an AFTER REPORT section). SUM Gives the field total for all the records in a group or report. MIN Returns the minimum value of the specified field among the recor0NFF] [field]/[strexpr] 19. ? QUERY. The syntax for this command has been extended to make it easier to select a device for output. It is no longer necessary to select an output device before executing ? QUERY. Instead you should specify the device using the TO parameter. The new syntax is: ? QUERY [TO device] where `device' can be the printer, an ASCII file or a new `.sbf' file. If this parameter is not included output is to the screen. The device options are: 1" TO PRINTER Outputs to the printer. TO FILE filename Creates an `.sbf' file on disk under the file name specified. TO filename Outputs to the ASCII file specified by `filename'. 19. IF THEN ELSE. The explanation of block IF THEN statements given in the manual needs to be supplemented by two further points: * Every block IF THEN statement must end with an END IF statement. (Example 4 on page 5-69, Volume 2, requires a second END IF after the las24t line.) * Within a block IF THEN statement, you can insert one or more ELSE IF statements. These are used to extend the number of alternatives provided by the original block IF THEN (so that it has the same effect as the CASE statement found in some versions of Basic); but they do not require additional END IF statements. The following examples should make these points clear: IF a% THEN ? atrue$ IF b% THEN ? btrue$ ELSE ? bfalse$ 3| END IF ELSE ? afalse$ END IF IF a% =1 THEN ? "one" ELSE IF a% = 2 THEN ? "two" ELSE IF a% = 3 THEN ? "three" ELSE ? "Not 1 to 3" END IF New DML Commands 1. SET PG Use this command to set the page size on your printer. It takes the syntax: [SET] PG rows [, columns [, ss]] where rows specifies the number of rows on the page and column specifies the number of columns (the page width). 42ss stands for single sheet and takes a value of 0 or 1. 0 specifies that single sheet paper is used, 0 specifies continuous stationery, also known as fan-fold paper. SET is optional. An example of the use of SET PG would be: SET PG 50, 65, 1 This line sets the format for a printed page to 50 lines of no more than 65 characters. It also tells Superbase that the printer takes continuous stationery. You can use this command in a program or from the command lin5Qle to customize a page for any kind of printed output -- whether you are printing a text file, record data or a report. However setting up the printer in Preferences on the Amiga will override the PG settings. 2. SET PRINTER ON [, 0/1] / OFF This is the program equivalent of selecting Print on the Set menu. The 0 parameter specifies draft mode printing, and the 1 parameter specifies graphics mode printing. Use this command in conjunction with FORM to obtain form printouts. Aft6Erser SET PRINTER ON has been executed, any output to the screen will also be sent to the printer, so remember to SET PRINTER OFF when the print operation is complete. 3. SAVE SET This command saves the Superbase parameter file. It is equivalent to clicking on OK in the Options dialog. All the parameters that have set in the dialog (and those that are set elsewhere) will be saved on disk in the file SB.par. 4. SET MIN This command sets the minimum size allowed for the Supe7g!rbase window. It takes two optional parameters, the minimum width and height of the window in pixels, so the full syntax is: SET MIN [width [, height]] Maximum width is 640, maximum depth is 183. SET MIN without parameters allows the programmer to lock the window to its current size while a program is running. You cannot use SET MIN to set the window larger than its size when the command is executed. SET MIN can also be executed from the command line or a function key.88z User-Defined Menus Other points to note in connection with the commands MENU and MENU ON are: * The first item defines the width of a menu in terms of the number of characters. When you define the text string parameter for item 1 you may need to allow for the width of other items in the menu by adding spaces to the end of the string. * If you wish to use checkmarks in your menus, remember to leave a space for the checkmark character when you define the MENU text string -- 9Cthe first character in the string should be a space. * MENU on its own clears all the menu settings (as do ERASE and CLEAR). * After the MENU ON command has been executed, any menus that have been defined remain active until an item has been selected. The program example on page 5-91 of the DML User Guide is slightly misleading on this point since it suggests that the MENU ON command needs to be executed repeatedly. A better way of checking whether an item has been selected wo:uld be: MENU ON a%, b% menuloop: ON a% GOSUB sub1, sub2, sub3 GOTO menuloop Note, however, that the MENU ON command should be executed again after an item has been selected in order to reset the menu variables to 0. FORMS AND FORM HANDLING Changing Text Fonts Contrary to what is stated in the Forms Editor User Guide, text fonts can be altered without deleting the text and typing it in again. In fact, the text font can be t%[cking on the camera button. The syntax for FORM is: FORM [SHOW] [page [, row, column]] Note that the `page' parameter is now optional. When it is omitted and the FORM command is used without any following parameters, Superbase only displays the field data in a form and omits any other objects. 6. The command SET BUFFERS only sets the size of the disk buffers for the current session. If you want to set the number of buffers to be saved with the parameters file (SB.PAR&Z&), use the new command SAVE SET. 7. SET TABLE/RECORD/FORM can be followed by the ON parameter. This switches to the specified view mode even if there is a form in memory. Normally SET TABLE, for example, acts as a toggle between Table view and the form. If Table view is the current view mode, this command would switch in the form. SET TABLE ON, however, would leave the current view mode as it is. The advantage of this option is that it enables the programmer to select a view 'JW#]mode without having to keep track of what the current mode is. 8. During the execution of a program, BREAK OFF disables the Stop button and CONTROL-C; also, you cannot use the space bar to pause during program execution. When the program has finished, BREAK is turned on again. 9. Apart from the Stop and Pause button, the remote control panel is disabled while a program is running. Stop is only disabled if the BREAK OFF command has been issued, Pause is available at all times(5s. 10. STORE takes another optional parameter, FORM. If FORM is used all the records in the current form are saved; otherwise STORE only saves the record which belongs to the current file. The new syntax for this command is: STORE [, 0/1/2] [FORM]/[FILE sbfname] Note that STORE , 2 secures not only the current file but also any other open files. It is therefore not necessary to follow it with the FORM or FILE parameters and, in fact, adding one of)Z these parameters to STORE , 2 will cause an error. 11. BLANK can also take FORM as an optional parameter. With a multi-file form, BLANK FORM creates blank records for each file represented in the form. When the FORM parameter is not included, BLANK only creates a blank record for the current file. The syntax for this command is: BLANK [FORM]/[FILE sbfname] 12. If SELECT DUPLICATE does not find a duplicate of the current index field, it leaves the current reco*nZrd unchanged. 13. A string function should not contain more than one intermediate string concatenation. For example, LEFT$("abcde", LEN("x" + "y")) contains only one intermediate concatenation and gives the correct result, but LEFT$("ab" + "cde", LEN("x" + "y")) gives the wrong result because it contains two concatenations -- "ab" + "cde" and LEN("x" + "y"). 14. Superbase already provides you with equivalents for the system commands (or disk utilities)+*D Delete, Rename and Copy. If you want to use some of the other disk utilities without switching screens or exiting from Superbase, you can do so with the CALL command. On the Amiga, you enter: CALL "NEWCLI" This opens a CLI window on the Workbench screen, and you can then type in and execute any of the AmigaDOS commands. Alternatively, you can execute a DOS command directly without first typing it in the CLI window. Thus to list the directory for drive DF1: you wou,N2ld enter: CALL "DIR DF1:" The directory will then be output in either the CLI window used to run Superbase or the small Superbase window opened on the Workbench screen. You may want to use CALL to run a program which requires input from the keyboard. In this case, you should follow the program file name with the `<*' parameter, as in: CALL "fcopy <*" The effect of this parameter is to redirect input from `stdin', allowing you to type in data from the - CLI window. 15. With commands that set a single file filter using WHERE (for example, IMPORT, EXPORT and SELECT WHERE) you can include ASK as the parameter to the WHERE statement. The effect of ASK is to display the standard filter dialog when the command is executed, thus allowing the user to set a filter while a program is running. If a filter is present when ASK is executed, the filter expressions will be presented as a default for the dialog. Examples are: SELE.YCT WHERE ASK In this example, ASK causes the filter dialog to be presented. Entering the following filter line (at run-time): Lastname LIKE "[r-z]*" would have the same effect as executing the command: SELECT WHERE Lastname LIKE "[r-z]*" However, a partial filter like this is not allowed: SELECT WHERE datefield > ASK 16. ENTER. The parameters for this command can only be used with a form. With other view modes, ENTER (on its own) places t/khe data entry cursor in the first open field that is not Read Only. 17. REQUEST. There is now an additional dialog type with the dialog number 19. This displays a list of the forms in the current directory. Note that the description in the DML User Guide for dialog type 5 is incorrect. This dialog provides a list of the fields in the current file. 18. SHOW. The command now takes an optional extension to allow or remove the menu bar from the EFMS screen: SHOW [MENU ON/O-{eld in the other file. For example, you would always want to check that a product was in stock before accepting an order for it. The LOOKUP function is attached to the link field in the file definition as a validation formula. However, if you are using links as described in the next paragraph, you must ensure that none of your LOOKUP functions tries to check for a record that you are still in the process of creating! 3. Including links in a mulJ’ti-file form. If you want to design forms which can retrieve data from more than one file, you must use the Set Link menu option in the Forms Editor to create the links between the files. In Set Link, you specify the link fields described above as the master (or primary) and secondary link fields. At the other end of the application, you will want to retrieve data from your relational system in the most convenient way. There are a number of ways of doin Eg this. 1. Browsing. Use a multi-file form with links set up as described above. The video buttons operate in the usual way, and you can switch files and indexes to vary the order of retrieval. The printer may be used to obtain draft or graphics hard copy. 2. Queries. The Process Query Edit menu option can be used to set up multi-file queries, which may be stored on disk. Output may include any fields from files between which a relation is speƼYcified in the Filter, and can be sorted as you wish. Report functions may be added, as well as limited formatting, but output is basically columnar and non-graphic. 3. Reports. Report programs may be generated automatically with the Forms Editor or written directly in the program editor (the Program Edit menu option). The forms editor allows for multi-line headings and footings, many levels of subtotalling and sorting, and full page field positioning, as well as offering many other features. Relations between files are derived from the links between files, so here again you must use the Set Link menu option before saving the report form. Output is non-graphic. Further Rules for Constructing Queries -------------------------------------- In multi-file queries, the user (especially the programmer) must exercise extra care to ensure that the query is efficient. The following rules should be observed: 1. Files are processed in the order in wbhich they are mentioned in the WHERE statement (Query Filter Line). In some cases you will want to process the smallest file first, in some cases you won't. You may have to experiment to find the optimum query for a particular application. 2. Every file reference in the WHERE statement must be part of a chain. WHERE A=B AND B=C is acceptable, but WHERE A=B AND C=D is not. A simple rule of thumb is that there should always be one less join than the number of files in the query.  MRSuperbase Start Options ----------------------- When you run SBpro from the CLI, you can use the following optional parameters: SBpro [-c] [-r] [-fformname] [-p] [-s] [-z] -c Selects custom screen -r Disables returns (chr$(13)) when writing to disk files -f Loads form at startup time -p Removes remote control panel -s Removes scroll bars from Superbase window -z removes sizing gadget and disable sizing NOTE: Remember to set the stack to at least 8000 before running Superbase fr!Z~om the CLI. The start options are also available from the Workbench by setting Tool Types in the Info for the SBpro icon as follows: SCREEN=WORKBENCH Use Workbench SCREEN=CUSTOM Use custom screen RETURN=ON Enable returns RETURN=OFF Disable returns SYSTEM=NOPANEL|NOSCROLL|NOSIZE Remove panel scroll bars and size gadget You also may use any combination of the three option"hvs in the SYSTEM item. You can load a form at startup by creating an icon for it with the default tool set to SBpro and then double clicking on it. DATABASE MANAGEMENT LANGUAGE (DML) Changes to DML -------------- Programmers should be aware of the following changes, extensions and undocumented features in Superbase's Database Management Language: 1. The LOOKUP function is case sensitive -- for example, LOOKUP("fred", Firstname.Address) will not find an occurrence#; of "Fred". 2. The record SELECT commands (SELECT NEXT, SELECT LAST, SELECT KEY etc) have been amended so that they now take another optional parameter, FORM. The effect of this parameter is to activate any multi-file links that have been set in a form. If it is not used, the SELECT commands only operate on the current file and ignore any links between files. FORM must be placed immediately after SELECT. For example, with SELECT NEXT command, you would enter: SELECT FORM $\_+[NEXT. 3. The KEY command now accepts a numeric key as well as a string key. 4. The commands EJECT, LOCATE, and FOOTING do not operate when the current output device is the screen and PAGING is OFF. You can, however, use LOCATE with paging off to set the column position -- but not the row position. 5. FORM. This command takes another optional parameter, SHOW, which is used to display external files. If the form contains external file fields, FORM SHOW is equivalent to cliΨlYword dialog as you typed them in. Now, when you type in a password in order to gain access to a file, the password is not displayed in the Password dialog. RAM disk support (Amiga) Normally if you wish to use the Amiga RAM disk within a program, you need to copy data files into the RAM disk before running the program. With Superbase Professional, this step is unnecessary. You can load data into the RAM disk simply by using the drive identifier RAM: when you open a Superbase fiJ le. If the file is not already in the RAM disk, Superbase will copy it to the disk from the current directory, and open it at the same time. Superbase also provides a similar service when you close the file. It asks if you want the file to be copied back to the current directory, i.e. to the floppy or hard disk it was originally copied from. If you click on OK it does the job for you. Should you click on CANCEL the file will not be copied back and you will be asked if you want tՌro erase the copy you have in the RAM disk. Selecting CANCEL will leave the RAM copy intact. (Note that if you open an existing file on RAM disk which has not been put there by Superbase then when you close that file Superbase will not ask you if you wish to copy it back.) As an example, suppose the Address file is stored on the disk in drive DF1: and the current directory is DF1:. To open this file from the RAM disk you would select the Open File option on the Project menu and thZ /en enter: RAM:Address You can now work on the file in the normal way -- retrieve data, edit data, remove records, and so on -- with the advantage that file operations using a RAM disk are much faster than they are on a physical disk. Remember to close the file at the end of a session so that any changes you have made can be saved permanently in the directory from which it was copied. This feature also works with other Ram disk facilities where the drive identifier is VD0: orҒ VDK:. Reserved Words -------------- It should be emphasised that the reserved word list includes all Superbase functions even though they are not listed in Appendix C. You should bear this in mind when you are defining a file or writing a program: many of the DML functions have names which you might tempted to use as field or variable names, for example HRS, DAY, MONTH, YEAR. Note also the following keywords which should be added to the list in Appendix C. AS BUFFERS Ӷ, CALL COPY DISK DISKSPACE FIELDS PAGING RECORD TABLE Graphics and Form Printing -------------------------- On the Amiga, Printer on the Set menu has been extended to provide a graphics printing option for forms. Selecting this option displays a sub-menu with two items, Draft and Graphics. Draft works in the same way as is described in the User Guide, Volume 1. When Draft is set, output that appears on screen is sent to the printer as well; so if you selec%i^t the next record in the current file, its field data will be output to the printer. If a form is in use all the text items will be printed as well as the field data. If you wish to print the field data only then you should set the Print Status of the text items to non-printing within the Forms Editor. The Graphics option can be used when you are displaying data with a form. It prints all the graphic elements in the form -- lines, boxes, areas, images, and so on -- together withխ6 all the data the form displays. Data items are printed in the system font, text items are printed in the fonts and point sizes which were set in the Forms Editor. However, Superbase will also take into account the Print Status of an item as set in the Forms Editor. On a 512K Amiga, you will only be able to print four colour forms in either draft or graphics modes. Using Superbase as a Relational System -------------------------------------- Although it is impossible to descri֩[be the principles of relational database design in this document, most users will benefit from an abbreviated account of some of the more important facts. When you are contemplating the basic design of a relational database application, there are three key considerations: 1. Establishing relationships between files. Every pair of files between which there is to be a relationship must have a field in each file that will be used as the link between them. These feX;ields should be designated as key fields, preferably with unique indexes. 2. Ensuring integrity of relational link data. At the data entry stage, what goes into the link fields described above must be carefully controlled. The aim is to ensure that, for example, an account code (usually a text field) is always entered in the same case in all files in which it is used. This is done by setting the text field attribute for each of the link fields!!> to perform automatic case conversion to either upper or lower case; obviously the conversion must be the same for both fields. Validation formulas may also be necessary to check the pattern of what is entered, its length, or the range of acceptable values. The second control on data integrity is via the LOOKUP function. This enables the system to check what is entered into the link field in one file against what already exists in the link fi 9made active. The current form in Superbase will also be selected for editing. To Return to Superbase you can use the depth arrangement gadget to push the Forms Editor screen to the back. Reorganize The primary application for Reorganize is as described in the User Guide. It allows you to reclaim disk space after deleting records from a file, and makes disk operations with the file more efficient. This option can also be used to recover records after their data has been corrupteӥbXd; i.e., when an attempt to open a file produces a disk error message. Reorganize steps over any errors it finds in a file and retrieves as many valid records as it can. The records which have been damaged will be lost when the new file is created so Superbase informs the user with the message: "New file has different record count". There may also be circumstances in which Reorganize can be used to recover data which could not be accessed before. For example, if you turned off the Ccomputer after storing new records in Batch mode, the details of these records would not be stored in the file header. Reorganize rewrites the file header so that the records are included in the new file. In this case, it issues another error message (as well as the one above): "Source file size incorrect in header". Note that the manual suggests that the best way to recover data from a disk error is to Export the remaining records and then import them to a new file. This method ܱĝhas now been superseded by Reorganize. Using the Lookup Function There are several points to note in connection with the LOOKUP function: * When you are creating a validation formula (in a file definition) that uses LOOKUP, you should always enter the function's arguments by typing them into the box at the bottom of the validation dialog. In other words, even if your LOOKUP formula contains a field which is shown in the field list above, you should type the field name into th;4e box instead of clicking on it. * It is important to include the file name as an extension to any field name used with LOOKUP. This applies to all fields irrespective of whether their names are unique to one file or not. For example: LOOKUP(Forename.Address, Firstname.Customers) is correct, while: LOOKUP(Forename, Firstname) may cause problems. * LOOKUP will not work correctly with date/time and numeric fields that have null values -- i.e., fields that ha Ddve been left blank. If you wish to use LOOKUP on fields of this type you must force the first argument to give a null value when empty. For example LTRIM$(DATE$(date field)) will give a null string when the `date field' is empty. Amiga Requester Default Keys Many of the dialogs in the Amiga version of Superbase accept Return and Escape as keyboard equivalents to clicking on the OK or Cancel buttons. Press the Return key to select OK, press the Escape key for Cancel. In cases wher Fe a casual OK might be destructive, Superbase does not allow the Return key equivalent. Keyboard Equivalents In addition to the keyboard equivalents described in the User Guide, Superbase also provides the following: Alt/Amiga B Toggles Bold (text style) on and off in the Text Editor Alt/Amiga U Toggles Underline on and off Alt/Amiga I Toggles Italic on and off Alt/Amiga P Toggles Plain on, bold, italic, and underline off Alt/Amiga B  cV| Toggles Batch mode on and off (this option is only available when the database window is active, otherwise Alt/Amiga B acts as a keyboard equivalent for the Bold text style) Alt/Amiga A Select the program command line window --equivalent to selecting Command from the Program menu. Note that `Amiga' indicates the right Amiga key. The keyboard equivalent for Set Paging, Alt/Amiga P, is no longer available. New Editing Controls Two new controls have now been provided k0 to allow the user to copy lines in the Program Editor and Text Editor. CTRL L is used to select the line you wish to copy; move the cursor to any point on the line and press CTRL L. CTRL R inserts a copy of the line that has previously been selected with CTRL L; move the cursor to the point in the program or document where the line is to be inserted and press CTRL L. A copy of the line will then be inserted below the cursor. Current Record Button By now you will have noticed that N> the current record button on the Control panel does not agree with the illustration in the User Guide on page 1-8. Whereas the guide shows a single triangle (as in Superbase Personal), the program now has two triangles pointing in opposite directions from each other. The reason for this is that, in Superbase Professional, the button has two functions. As well as acting as the current record button, it also allows you to change current page in a multi-page form. In the first caT78 pacity, it is used to redisplay the current record after the record data has been overwritten or removed from the screen by some other action -- for example, by Status File. As a page selector, the same button is used to select either the next page or the previous page. Clicking on the right-hand triangle displays the next page, clicking on the left-hand triangle displays the previous page. Passwords In earlier versions of Superbase, passwords were shown on screen in the Pass(m!of last search LOOKUP(value, fld) Return if value exists in file(indexed field) STRING FUNCTIONS LEN(x$) Length of string STR$(x[[, y] [, z] / [, numformat]]) String from number with optional format VAL(x$) Value of string ASC(x$) Ascii value of character CHR$(x$) String value of character LEFT$(x$, nexp) Left portion of string RIGHT$(x$, nexp) Right portion of string MID$(x$, nexp [, nexp]) Mid portion of string DAYS(x$) Numeric value of date DATE$(nexp [, dform]) Date szztring from numeric using optional format DAY(date) Numeric day value of date DAY$(date) Day of week from date MONTH(date) Numeric month value of date MONTH$(date) Month string from date YEAR(date) Numeric year value of date TIMEVAL(time) Numeric value of time TIME$(nexp [, tformat]) Time string from numeric using optional time format HRS(time) Number of hours from time MINS(time) Number of minutes from time SECS(time) Number of seconds from time THOUSECS(time) Number of thousandths of second from time LCASE$(x$) Convert string to lower case UCASE$(x$) Convert string to upper case FCASE$(x$) Capitalize first letter of string TRIM$(x$) Trim trailing spaces from x$ LTRIM$(x$) Trim leading spaces from x$ INSTR([n, ]x$, y$) Find position of substring y$ in x$ REPLICATE(x$, nexp) Replicate character expression n times SPACES$(n) Return string with n spaces ERR$(n) Returns error message for error number n VARIABLES TODAY Return system date NOW Re紛turn system time ERRNO Return current error number PI Return value of pi FIELDS BY NAME Fieldname; Field.file; Field. "file" MULTIPLE RESPONSE FIELDS Fieldname(nexp) STRING VARIABLES X$ NUMERIC VARIABLES X% ARRAYS X% or X$(nexp[[, nexp] [, nexp]]) SUPERBASE PROFESSIONAL Using Superbase Personal Files ------------------------------ Superbase Personal is upwardly compatible with Superbase Professional; so if you have upgraded from one to the other, you[} can use any of the files that you created in Superbase Personal. (It doesn't work the other way round: Professional files cannot be loaded into Superbase Personal.) However, there a number of differences in the way the two programs store file data. You should take these into account when you are loading Personal files into Professional. When you save the files, Superbase Professional will automatically convert them to its own format. But in some cases you may need to edit kyour Personal files before you can use them. Here is a checklist of the points to bear in mind when converting files from Personal to Professional: * Professional query files include the details of any database files associated with a query and these files are opened automatically when the query is loaded. If you use a Personal query in Professional, you will need to open the database files yourself before loading the query. Then save the query in order to H~(Iconvert it to the Superbase Professional query format. * Although Superbase Personal does not offer a Constant field type, it allows you to create a special type of calculation formula which acts like a constant formula. For example, if you define a single word formula such as "London" or TODAY it will have the same effect as the equivalent constant formula in Superbase Professional. When you load a Personal file into Professional, calculated fields w'Eۀill be defined as CLC RDO fields. If they were originally intended to act as constants, you should change the CLC attribute to CON by selecting Edit File and editing the file definition. You may also want to remove the Read Only attribute. * The list of words that are reserved for the use of the system is more extensive in Superbase Professional than in Superbase Personal (see the section on Reserved Words further on in this document). As a result, you P9 may find that some of the field names in your Personal files are treated as reserved words in Superbase Professional. For example, Professional offers a large of number of new functions such as YEAR and HRS. If you have used YEAR as a field name, it would now become invalid. Before loading a Personal file, check that the field names are valid; if they are not, change them by editing the file definition. Edit Form The Project menu option, Edit For/m, runs the Forms Editor as an additional task if it is not already in memory, provided there is sufficient RAM capacity. If you have opened a form in Superbase, you can use this option to edit it in the Forms Editor and then return to Superbase. For Edit Form to work, Superbase must be able to locate the Forms Editor program. First it looks for the program in the current directory and then in the root directory of the current device. If this fails, Superbase will look in the p؅arameters directory as specified in the Options dialog. If the Forms Editor still cannot be found, Superbase will assume that it resides on a disk with the volume name SBFORMED:. If this disk is not present in the system, and you have not used the CLI ASSIGN command to specify the location of SBFORMED:, then an AmigaDOS requester will prompt you to insert it. If the Forms Editor is already running when you select Edit Form, then the Forms Editor window is pulled to the front and +K`T Record selection commands SELECT FIRST [FILE sbfname] [INDEX index] Select the first record in key sequence SELECT LAST [FILE sbfname] [INDEX index] Select the last record in key sequence SELECT NEXT [FILE sbfname] [INDEX index] Select the next record in key sequence SELECT PREVIOUS [FILE sbfname] [INDEX index] Select the previous record in key sequence SELECT CURRENT [FILE sbfname] [INDEX index] Select the current record in key sequence SELECT DUPLICATE [FILE sbfname] [INDEXn!7 index] Select the next record with the same key SELECT REMOVE [FILE sbfname] Remove the current record in selected file SELECT KEY string [FILE sbfname] [INDEX index] Select the first record with index matching string SELECT WHERE [FILE sbfname] [conditions] Select the first record matching conditions or clear conditions SELECT field parms [WHERE parms] [REPORT parms] [ORDER parms] [SAY]/[TO PRINTER/filename/FILE sbfname] [END SELECT] Query language command PROCESS COMMANDS UPcWuDATE calc list [WHERE conditions] [END UPDATE] Perform relational update REMOVE FROM FILE sbfname WHERE conditions Remove records matching conditions IMPORT filename [[TO] FILE sbfname] [WHERE conditions] [USING parms] Import external text file to superbase EXPORT [FILE sbfname] [INDEX index] [TO] filename [WHERE conditions [USING parms] Export to external file LABELS [FILE sbfname] [WHERE conditions] [USING labelstring] Print labels as per label definition MERGE [TEXT filename @<[WHERE conditions] Load text file and mail merge INPUT OUTPUT FUNCTIONS SHOW field/strexpr Show external field OPEN filename FOR INPUT/OUTPUT/APPEND/COMM Open sequential file for input/output POSITION nexp Position in sequential file INPUT [&nexp/LINE] var/field Input characters or line from text file CLOSE INPUT/OUTPUT/COMM End input/output to/from text file or comms SET filename Read exec or variable file and execute GET var/field Get character from keyboard no wait WAIT FOR time/FOR nexp/var/field Wait till time, for no of secs or for single key entry ASK [string] [pos] [length] ;var/field Get input string from user BELL Ring bell HOME Move screen output position to home CLS Clear output screen EJECT [nexp] Do new pages on print device SCRDUMP Do screen dump to printer LOCATE coordinates Set position on output device NEWLINE [nexp] Send newline to output device MENU column, item, state [, text] Set up a user defined menu MENU CLEAR Clear usmer-defined menu MENU ON numvar Turn on user-defined menus, specify variable for return value REQUEST text[, ] text[, ] type [, numvar [, textvar [, len]]] Set up a user-defined dialog(requester) MEMORY List of variables in memory STATUS [FILE sbfname] Status of selected file or system SAY [[USING pitch, mode, rate, sex, phonemes] string [, /;string...]] Amiga only. Output string as speech FG nexp Set foreground colour BG nexp Set background colour UL [ON/OFF] Set or clear und|Cerline IT [ON/OFF] Set or clear italics BF [ON/OFF] Set or clear bold face ATTR OFF Clear bold face italics and underline ? /DISPLAY/PRINT/OUTPUT TO file Send information to selected output device ? SAY Use narrator device to speak output ? MEMORY List of variables in memory ? LIST Program listing in memory ? STATUS [FILE sbfname] Status of selected file or system ? DIRECTORY Current directory listing ? TEXT [MERGE] Text file in memory optionally mail merging ? QUERY CurreH7_nt query statement ? exprlist Any expression list REPORTING HEADING statements END HEADING Specify statements to execute on page heading FOOTING statements END FOOTING Specify statements to execute on page footing REPORT total list Set report totals, means and count BEFORE REPORT Specify before report activity AFTER REPORT Specify after report activity END REPORT End of report specifications GROUP field total list Specify subtotal break field and subtotals, means and counts եfor group BEFORE GROUP statements Specify before group activity AFTER GROUP statements Specify after group activity END GROUP End of group specifications FORM HANDLING CLOSE FORM Close current form OPEN FORM formname Load a form into memory FORM [, page [, row [, column]]]] Specify page for current and top left-hand corner ENTER [FORM view name] [field list Enter data into fields through view form OPERATORS ARITHMETIC OPERATORS ^ Exponentiation - Negation * Multiplicatiofn / Division MOD Modulo arithmetic + Addition - Subtraction RELATIONAL OPERATORS = Equality LIKE Pattern matching case insensitive equality <> Inequality < Less than > Greater than <= Less than or equal to >= Greater than or equal to LOGICAL OPERATORS NOT AND OR MATHEMATICAL FUNCTIONS SGN(x) Sign of variable INT(x) Integer portion of variable ABS(x) Absolute value of variable SQR(x) Square root RND(x) Random number LOG(x) Logarithm EXP(x) Exponent COS(x) Cosi8m|ne SIN(x) Sine TAN(x) Tangent ATN(x) Arctangent FIX(x, y) Fix decimal precision of value FREE(n) Return free memory size DISKSPACE("disk") Return free disk space RECCOUNT(sbfname) Return number of records in file SER(sbfname) Return serial number of specified file ROW(0) Return current screen row COL(0) Return current screen column PROW(n) Return current printer row PCOL(n) Return current printer column EOF(sbfname) Return if at end of file FOUND(sbfname) Return result 0'ENTS WHILE and WEND set up a loop, in which the statement in between are executed repeatedly for as long as the expression following WHILE is true. When the expression is not true, execution resumes with the first statement after WEND. EXAMPLES 1 OPEN FILE "Address" SELECT FIRST WHILE NOT EOF("Address") VIEW SELECT NEXT WEND 2 WHILE NOT EOF(*"):INPUT &1, a$:? a$:WEND YEAR PURPOSE Returns a numeric value for the year from a julian date number. SYNTAX YEAR(nexp) COMMENTS The fLunction is only valid for dates from 1 January 1 to the end of December 9999. Consequently nexpr is only valid in the range 1 to 3652048. If nexpr is 0 then the number returned is 0. If nexpr is negative the results are unpredictable. Associated date functions are DATE$ DAY DAYS DAY$ MONTH EXAMPLES 1 numfieldc=YEAR(datefielda) 2 numfieldc=YEAR(datefielda + 90) 3 numfieldc=YEAR(TODAY) 4 x%=YEAR(datefielda + VAL(textfielda)) 5 x%=YEAR(DAYS("11 Jan 85") 6 ? YEAR(datefielda + 30) 7 YEARX(datefielda)=1986 NOTES Example 3 provides a calculation to insert the month number of the system date into a numeric field. Example 7 provides a filter to pick out all the dates in datefields which fall in the year 1986. CHAPTER 6 - QUICK REFERENCE GUIDE APPLICATION FUNCTIONS RUN [filename] Execute program, optionally loading from disk CHAIN filename Execute program without clearing variables NEW [TEXT/QUERY/UPDATE] Clear program or text area EDIT [TEXT/KEY/QUERY/UPDATE]  xAllow user to edit program, text, query or update LOAD [TEXT/KEY/QUERY/UPDATE] filename [, APPEND] Load program, text, file, function key list, query or update SAVE [TEXT/KEY/QUERY/UPDATE] filename [, TEXT] Save program, text file, function key list, query or update PROTECT [filename] Save the current program in encrypted form CALL function Call a user supplied function SYSTEM COMMANDS DEBUG [ON/OFF] Set or clear debug flag BREAK [ON/OFF] Set or clear user stop enabled QUIT E *+xit Superbase system KEY keynum [, string] Set keynum to string or clear it LIST filename List any system file to screen DELETE filename Delete any system file RENAME old filename [, TO] new filename COPY from filename [, TO] to filename Copy any system file NUMBASE string Set default numeric format DATEBASE string Set default date format DIRECTORY path Change directory to path SET TABLE/RECORD/FORM Set view according to parameter SET PAGING [ON/OFF] Set paging SET BUFFER=xS nexp Set number of cache buffers to use BASIC STATEMENTS [LET] var/field=exp Assign value of expression to variable or field ERASE varlist Remove a variable from memory CLEAR Clear all system variables READ var/field [, var/field] Read data into variables or fields from data pointer DATA constant [, constant]... Specify data for READ statement RESTORE [label] Move data pointer to specified position or home REM text Non executable comment line EXECUTE string Execute text stgring as though command DIM array variable Set array dimensions CONTROL FLOW FOR var=nexp TO nexp [STEP nexp]statements NEXT [var] Repeat program lines a number of times GOSUB label Call a procedure or subroutine GOTO label Call a procedure or subroutine GOTO label Branch to the specified label ON ERROR [GOTO label] Specify procedure to be followed on error condition ON nexp GOTO label [, label]... Branch to statement or label in list ON nexp GOSUB label [, label]... Call protcedure or subroutine in list RETURN Return from procedure or subroutine execution RESUME [NEXT / label] Resuume execution after error at next or specified position END Terminate execution of application WHILE expr Perform following commands if expression true WEND Mark end of while command sequence CONDITIONALS IF exp THEN statement/label [ELSE statement/label] Conditional statement or expression execution varfield=exp ? expr:expr Conditional assignment of value to field or vK ariable FILE AND INDEX COMMANDS CREATE sbfname;passwords Create a new database file in memory CREATE INDEX ON exp [FILE sbfname] [TO index] [UNIQUE] Create a new index file optionally make unique ADD [FILE sbfname] field definition string [, formula string] Add a new field to a file MAKE sbfname Make the file exist on disk and store the file def MODIFY field [, ] field definition string [, formula string] Modify parameters for field changing name, type etc. SAVE FILE sbfname Sgave the current file definition PASSWORD sbfname;passwords Set new passwords for a specified file REORGANIZE [FILE sbfname] [TO] pathname Reorganize current or specified file to new pathname OPEN FILE sbfname;passwords Open file set as default CLOSE [ALL]/[FILE sbfname] Close all or specified files FILE sbfname Select the default file to be used INDEX index Select the default index to be used for a file REMOVE FILE sbfname Remove all data, file and all indices REMOVE INDEX in=`dex Remove the specified index for specified file OPEN FIELDS [FILE sbfname] fieldlist Open a set of fields for specified file CLOSE FIELDS [FILE sbfname] Close the open fields for specified file RECORD COMMANDS BLANK [FILE sbfname] Clear all data from current record STORE [0/1/2, ] [FILE sbfname] Store current record in the file, batch mode optional. ENTER [field/nexpr] [, nexpr2] Allow the user to enter a record in the current file VIEW View record in the current file SELECNīMPLES 1 textfieldc=UCASE$(textfielda) 2 x$=UCASE$(y$) 3 x$=UCASE$("ABCDEF") NOTES If you wish to set the first letter of a string to upper case, leaving the rest in lower case, you can so using the FCASE$ function. UPDATE PURPOSE Performs a relational update. SYNTAX UPDATE[calclist] [WHERE conditions] [END UPDATE] COMMENTS UPDATE on its own runs the update in memory. This may have been loaded from disk with the LOAD UPDATE command, or it may have been created in the same session kusing the Process menu option Update Edit. By specifying calclist and conditions, you can also use UPDATE to define an update and then run it. calclist corresponds to command line set in the Update Fields dialog; conditions corresponds to the filter which is set in the Update Filter dialog. The first specifies how the records are updated, the second specifies which records are to be updated. WHERE conditions and calclist should be entered as separate statements, either on the same li\ne as UPDATE separated by colons, or on separate lines. They form part of an Update program section, headed by the UPDATE command and ending with END UPDATE. The END UPDATE command must be included if the Update section is followed by other statements in a program. Otherwise Superbase will regard these as belonging to the Update section. As an alternative to using this command, you can terminate the section with a colon or a blank line. UPDATE is a multi-file command, so both conditi/ons and calclist can refer to more than one file. In this case, the first condition in the update filter must establish a join between two files. 5-155 EXAMPLES 1 LOAD UPDATE "Newrate":UPDATE Loads the Update file Newrate from disk, and then runs it. 2 UPDATE Price.Orders=Price.Stock WHERE Product_Code.Orders=Product_Code.Stock AND Order_date "15 July 1987" END UPDATE Updates prices in the Orders file on the basis of the price details in the Stock file. VAL PURPOSE Returns  the numeric value of a text string. SYNTAX VAL(strexpr) COMMENTS The function returns the numeric value of the number(if any)in the lefthand end of the string or substring specified in strexpr. In cases where strexpr does not contain a number or where the leftmost character of strexpr is not numeric, the function returns 0. The complementary function of VAL is STR$ EXAMPLES 1 numfieldc=VAL(textfielda) 2 numfieldc=VAL(RIGHT$(textfielda, 8)) 3 VAL(textfielda) > 1 AND VAL(RIGHT$(tex Ktfielda, 4) > 0 4 x%=VAL("12.45A456") 5 x%=VAL(x$) VIEW PURPOSE Displays the current record in the current file. SYNTAX VIEW COMMENTS Allows the user to see the current record in the current file in the view format specified by the SET view mode command. It can also be used to redisplay the current Form. WAIT PURPOSE Waits for a specified time or until a key is pressed. SYNTAX WAIT [FOR time]/[FOR nexp] [var/field] COMMENTS Wait waits for a given number of seconds(FOR nexp)or u 넣ntil a given time(FOR time). FOR nexp implies 'wait for nexp seconds'. FOR time implies 'eait until the system clock reached time', where the time is given in the current time format. FOR var/field implies 'wait until a key is pressed, and then place it in var or field'. If you follow WAIT with a numeric variable or numeric field, it will only accept a number. In other word, pressing any key except the keys with the digits 0 to 9, will have no effect. EXAMPLES 1 WAIT FOR 3 Waits for y 3 seconds. 2 WAIT FOR 10:20:30 Wait until 10:20 am. 3 WAIT x$ Waits for a single key stroke and puts it in x$. WHERE PURPOSE Set the filter conditions for a query or a report. SYNTAX WHERE conditions COMMENTS WHERE is the program equivalent of the Filter command line in a query definition, and can only be used within a section that is headed by the query SELECT command. You can use WHERE to set a filter on the fields selected for report output or for other query applications, suc {`h as sorting, merging files, or simply retrieving data with query that has been saved to disk. conditions takes the same form as the Filter command line in the query definition dialog(see Chapter 11, Volume 1). WHERE is a multi-file filter command - unlike the record selection command SELECT WHERE - and if it used for this purpose, the join between two files must be placed at the beginning of the statement, as in: WHERE Lastname.Clients=Lastname.Deposits Any subsidiary conditions caPln then be added to the line using the AND operator. EXAMPLES 1 SELECT Firstname.Clients, Lastname.Clients, Bank, Amount WHERE Lastname.Clients=Lastname.Deposits AND Lastname.Clients LIKE "[d-3]*" ORDER Lastname.Clients END SELECT 2 WHERE Price > = 50 AND Price < = 100 3 WHERE Lastname LIKE ["a-c"*] AND NOT (Country=USA) NOTES In the first exampe, WHERE is used to set up a multi-file filter. It selects only those clients whose details are also stored in the Deposits file and whoI}se last name initial falls in the range A to C. Note that file extension must be given for Lastname since the field occurs in both the Clients file and the Deposits file; the Bank and Amount fields do not require an extension name since they only occur in the Deposits file. The other two examples show WHERE in use as a single file filter command. WHILE WEND PURPOSE Executes a series of instructions as long as the specified conditions are true. SYNTAX WHILE exp statements WEND COMMEfxR$(SQR(VAL(x$))) 4 x%=SQR(y%) STORE PURPOSE Stores the current record in the current file or in the file specified. SYNTAX STORE[, 0/1/2] [FILE sbfname] COMMENTS This command stores the record in memory for the current file, or for the file specified with sbfname. It is equivalent to the Save option on the Record menu. The numeric parameters - 0, 1 or 2 - allow you to specify whether the record is stored in batch mode or in the normal way(see the section on Batch in Chapter 5, Vo/dlume 1). STORE, 1 stores the current record in batch mode. The time taken to save the record on disk will be reduced, but the data will not yet be secure:if you suffer a power loss, you will lose any record data which has been saved(in the current session)using this option. Note that STORE, 1 only turns on batch mode for the current record.STORE, 2 does not store a record but makes the file secure. Any records that have been saved previously with the STORE, 1 command will now be made܀A safe on disk. You should always execute a STORE, 2 command after storing records in batch mode. STORE, 0 is optional and is the same as STORE on its own:Superbase makes each record secure as it is stored. If you were to turn the computer off accidentally, the most you would lose would be the data in memory. EXAMPLES 1 BLANK Firstname="John" Lastname="Roberts" Street="15 Richmond Way" ...... ...... ...... STORE 2 FOR n%=1 to 10 BLANK Firstname=Recdata$(n%, 1) Lastname=RecarQdata$(n%, 2) Street=Recdata$(n%, 3) ...... ...... ...... STORE, 1 NEXT STORE, 2 NOTES The first example creates a new record and stores it in the normal way. Example 2 creates ten new records, reading data into the fields for each record from the array Recdata$ and storing them in batch mode. When all the records have been stored, it makes the file secure with the STORE, 2 command. STR$ PURPOSE Returns the text equivalent of a numeric expression. SYNTAX STR$(nexpr [[, nexprIi [, nexprd]]/[, numeric-format-string]]) COMMENTS STR$ converts data which is held in a numeric variable or numeric field into a text string. nexpri specifies the number of integers before the decimal point and should be set large enough to avoid overflow display. nexprd specifies the number of integers after the decimal point. The maximum numeric format in Superbase is a total of 13 integers, so nexpri plus nexprd must be less than 14. As an alternative to using nexpri and nexprd,Cy you can specify the numeric format as a string(see NUMBASE). If these parameters are not used, the default numeric format set by Numeric Format on the Set menu or by the most recent use of NUMBASE will be taken. The complementary function to STR$ is VAL. EXAMPLES 1 textfieldc=STR$(numfielda) 2 textfieldc-STR$(numfielda, 5, 0) 3 x$=STR$(165.4444, "z999999.00") TAN PURPOSE Returns the tangent of an angle measured in radians. SYNTAX TAN(nexpr) COMMENTS The function returns the tangVent of the angle in nexpr measured in radians. The complementary function of TAN is ATN. EXAMPLES 1 numfieldc=TAN(numfielda) 2 x%=TAN(y%) 3 x%=TAN(VAL(x$)) 4 ? TAN(x%) THOUSECS PURPOSE Takes a numeric value and returns the number of thousandths of a second left over after subtracting the number of seconds. SYNTAX THOUSECS(nexpr) COMMENTS nexpr will usually contain a time in milliseconds from a time field or the result of a TIMEVAL calculation. THOUSECS returns the same result as nexpr MOD 1000. 1 x%=THOUSECS(timefield) TIME$ PURPOSE Returns the time in string format from a numeric value which gives the time in thousandths of a second. SYNTAX TIME$(nexpr [, timeformat]) COMMENTS The second argument for this function, timeformat, allows you to specify the format the time string will have. It must conform to the rules for Superbase time formats given in the keyword entry for DATEBASE. EXAMPLES 1 x$=TIME$(timefield) 2 ? TIME$(NOW, "hh:mm:ssam") TIMEVAL PUR~'POSE Returns the value of a time string in thousandths of a second. SYNTAX TIMEVAL(strexpr) COMMENTS strexpr must contain the time in a valid time format. See the keyword entry for DATEBASE for a list of acceptable time formats. EXAMPLES 1 t%=TIMEVAL("10:22am") 2 t%=TIMEVAL("14:03:12.201") TODAY PURPOSE Gives the system date. SYNTAX TODAY COMMENTS TODAY shows the date in the date format as set with Date Format option in the Set menu, or as set by the DATEBASE command. If your cuvomputer has a real-time clock or you have set the systeme date, TODAY gives the current date. Otherwise, it gives the default system date. TODAY holds the date as a julian date number. Superbase automatically translates this into the current date format when you display the date using ? TODAY. EXAMPLES 1 ? TODAY 2 datefield=TODAY 3 ? MONTH(TODAY) TRIM$ PURPOSE Trims trailing spaces from a string or a text field. SYNTAX TRIM$(strexpr) COMMENTS This returns the string consisting of the original string specified by strexpr with any trailing spaces eliminated. EXAMPLES 1 stringfieldc=TRIM$(textfielda) 2 x$=TRIM$(textfieldc.filea) 3 ? LEN(x$);LEN(TRIM$(x$) UCASE$ PURPOSE Returns the upper case equivalent of a text string or a text field. SYNTAX UCASE$(strexpr) COMMENTS UCASE$ returns the upper case equivalent of the lowercase alphabet;no other characters, including those already in upper case, are affected. The complementary function of UCASE$ is UCASE$. EXAGy{e commands REPORT, WHERE, and ORDER. END SELECT is used to indicate the end of a query section. It is not always necessary to include END SELECT, but you must provide Superbase with some indication of where the query section finishes and where the rest of the program starts. Otherwise, the statements following the last line in the query section will be interpreted as part of a multi-line SELECT statement. As an alternative to END SELECT, you could use a blank line. SER PURPOSE ReturYD6ns the total number of records that have been created in a file. SYNTAX SER(filename) COMMENTS You can use the SER function to assign a serial number to each record in a file. To do this, you need to define a field which will hold the serial number. It should be defined as a constant field and should have SER("filename")as its constant formula. When you create the first record, it will be given the value 1. This value will then be incremented by one for each record you add to the file. The difference between SER and RECCOUNT is that SER gives the total number of records that have been created, irrespective of whether they have been deleted later. RECCOUNT returns the number of records currently in the file. 1 ? SER("Stock") 2 BLANK Recno.Stock=SER("STOCK") Price.Stock=14.95 Description.Stock="Widget" STORE SET PURPOSE Reads a text file and executes any commands in the file, or assigns variables from a text file. SYNTAX SET filename COMMENTS This comman\- d reads in a text file and executes it as if it were a sequence of command. The file, therefore, must contain valid DML commands. If the file holds a set of variables-which have previously been saved to disk by ? MEMORY-the variable assignments are executed. This provides a way of transferring variables between different programs when CHAIN is not appropriate. For example, Program 'a' can set up variables for Program 'c', but Program 'a' CHAINs to Program 'b'. Another application wouc'ld be to communicate variables between different programs which are run on different days. EXAMPLES 1 ...... process a ...... OPEN "aaa" FOR OUTPUT:? MEMORY:CLOSE OUTPUT:DISPLAY another program SET "aaa" ...... process b 2 SET "abc" 'abc' could be ASCII file which contains a set of function key assignments. SET BUFFERS PURPOSE Sets the number of buffers Superbase uses as a disk cache. SYNTAX SET BUFFERS nexp COMMENTS Operates in the same way as the Buffers option in Set Me FZnu Options, and allocates 512 bytes memory space for each buffer. nexp can have a value from 1 to 99. EXAMPLES 1 SET BUFFERS 24 SET PAGING PURPOSE Sets paging on or off. SYNTAX SET PAGING[ON/OFF] COMMENTS When used without ON/OFF, it acts as toggle and operates in the same way as the SET-PAGING menu options. With ON or OFF, it sets paging accordingly. EXAMPLES 1 SET PAGING OFF SET VIEW MODE PURPOSE Sets the view mode or switches between one of the view modes and a Form. SYNTAX!F= SET [TABLE]/[FORM]/[RECORD] COMMENTS Works in the same way as the equivalent Set Menu option, except that it does not automatically display a record(use VIEW). If a Form(as opposed to Form view)is displayed, the SET command switches the Form off and selects the specified view mode. The Form remains in memory and can be switched on again by repeating the SET command for the same view mode. In other words, when a Form has been opened, the SET command toggles the current view mode on "jand off. EXAMPLES 1 SET FORM 2 SET TABLE:VIEW SGN PURPOSE Finds the sign of a number. SYNTAX SGN(nexpr) COMMENTS This function returns the positive value of 1 if nexpr is positive and returns the negative value -1 if nexpr is negative. EXAMPLES 1 numfieldc=SGN(numfielda) 2 IF SGN(datefielda-datefieldb)THEN GOTO lab1 3 x%=SGN(y%) 4 x%=SGN(y% * numfielda * (datefielda-datefieldb)) 5 x%=SGN(VAL(RIGHT$(textfielda, 5))) 6 ? SGN(x%) NOTES Example 2 tests whether datefieldb is later t#}han datefielda SHOW PURPOSE Shows an external file. SYNTAX SHOW [field]/[strexpr] COMMENTS SHOW is the program equivalent of the camera button at the bottom of the screen. It displays a picture or text from an external file.field must be a field which holds the name of the external file, but it does not have to be a field in the current file:if you add a file name extension to the field name, you can display pictures using other open database files. As an alternative to specifyin$)g an external field, strexpr allows you to specify the name of an external file. When field or strexpr is not given, SHOW removes the picture from the screen. SIN PURPOSE Returns the sine of an angle measured in radians. SYNTAX SIN(nexpr) COMMENTS This function returns the sine of the angle in nexpr, where the angle is measured in radians. To convert degrees to radians, multiply by 180/PI. EXAMPLES 1 numfieldc=SIN(numfielda) 2 x%=SIN(y%) 3 x%=SIN(VAL(x$)) 4 ? SIN(x%) SPACE$ PURPXP9OSE Fills a string with a specified number of spaces. SYNTAX SPACE$(nexpr) COMMENTS nexpr must be in the range 0 to 255. EXAMPLES 1 textfieldc=SPACE$(10) 2 x$=SPACE$(4) SQR PURPOSE Returns the square root of a number SYNTAX SQR(nexpr) COMMENTS The function returns the square root of the number specified by nexpr. If nexpr is less than zero, the function returns the error message 'ivalid number'. EXAMPLES 1 numfieldc=SQR(numfielda) 2 numfieldc=SQR(2 * numfirlda) 3 textfieldc=ST&_H& previous SELECT WHERE command or by direct entry in the filter dialog. QUERY LANGUAGE COMMANDS DML's Query Language commans allow you to create a program which duplicates a Superbase query. These commands are used in report programs created by the Forms Editor; but they can also be used for any of the query applications described in Chapter 11, Volume 1 - sorting records, creating complex multi-file filters, merging files, and so on. In Superbase a query is defined by the four comm'K?and lines in the query definition dialog(Chapter 5, Volume 1, introduces this dialog;Chapter 11 explains it in more detail). These command lines can be reproduced in a program by using the query language commands. SELECT is used to define the Fields command line; REPORT defines the Report command line;WHERE corresponds to the FILTER line; and ORDER is used for the Order line. You will find a explanation of these commands under their respective keyword entries. Here, we will describe (2how they work together to form a query section. A query section must start with the SELECT command and it should end with END SELECT. Any other query language commands are optional;you will include them according to your requirements. Thus, if you wish to use a filter, you will include a WHERE command within the query section. Likewise, if you wish to use reporting functions such as SUM and COUNT, you will need to insert a REPORT command after the SELECT command and before END SELECT)Y. You can think of REPORT, WHERE and ORDER as modifying the query output which is specified with the SELECT command. When SELECT is used on its own - to form a single line query section - it outputs data from each record in a specified file(or files)in turn. For example: SELECT Lastname.Address, Country.Address: END SELECT This outputs a line showing the contents of the fields Lastname and Country for each of the records in the Address file. As such, SELECT works in the same way as*>j the ? command except that it acts on all the records in a file. If you inserted TO PRINTER after Country.Address in the example above, SELECT would output data to the printer. The TO device parameter provides an equivalent to the Output options in the query definition dialog. You can use to specify an output device other than the screen:the printer, an ASCII file, or a new '.sbf' file. A QUERY LANGUAGE EXAMPLE Any query created with the query definition dialog can be reproduced und+Ϗer program control. We can illustrate this by converting a query file(an '.sbq' file)into a program, taking the Deptran file supplied with the demonstration file disk as an example. Deptran can be displayed on screen using the LIST option from the System menu. It looks like this: SB CLIENTS DEPOSITS Deposit Transaction Report ON "Clients" Firstname.Clients, Lastname.Clients, ON "Deposits" @24 Bank, Amount, Deposits REPORT SUM Amount COUNT GROUP Lastname.Clients SUM Amount La,<~stname.Clients=Lastname.Deposits Lastname.Clients SB on the first line indicates that this is a Superbase Professional query file as opposed to one created in Superbase Personal. The next two lines contain the names of the database files which are associated with this query. 'Deposit Transaction Report' is the query title, and the remaining lines represent the four query command lines. Before we can load this file into the Program Editor, we need to change its name to Deptran.sbp. T-|;{o do this, select COPY from the System menu and, after selecting Deptran.sbq as the file to be copied, enter then name Deptran.sbp. You can now load the file into the Program Editor using the Program open option. Coverting it to a program is just a matter of deleting two lines and inserting keywords in the others. Once you have made these changes, the program should look like this: OPEN FILES "CLIENTS" OPEN FILE "DEPOSITS" SELECT ON "Clients" Firstname.Clients, Lastname.Clients, O.G|N "Deposits" @24 Bank, Amount, Deposits REPORT SUM Amount COUNT GROUP Lastname.Clients SUM Amount WHERE Lastname.Clients=Lastname.Deposits ORDER Lastname.Clients Note that the report line is the same as in the query file and does not need to be altered. If you now run this program, it will have the same effect as running Deptran from the query definition dialog(by clicking on OK). SELECT PURPOSE Specifies which are to be output from a query. SYNTAX SELECT [params]firlds[TO dev/ice]:[statements]:END SELECT COMMENTS SELECT is a Query Language command and can used on its own or with other Query Language commands to form a query section. fields can be one or more field names from one or multiple files.params can be any of the output format parameters as listed in the section which describes the ? commands. In addition, there are three format parameters which can only be used with the SELECT command:ON file, AS heading and FIELD. The syntax and function of thegse parameters in described in their respective sections in Chapter 11, Volume 1. TO device specifies the device to which the query output will be sent. If it is not included output is to the screen. The device options are: TO PRINTER Outputs to the printer. TO FILE file Creates a new '.sbf' file on disk under the file name specified, using the query output. TO file Outputs to the ASCII file on disk specified by file. statements can be other query language statements formed with th1Ak SELECT NEXT SELECT PREVIOUS SELECT REMOVE SELECT WHERE SELECT commands can only be used on an open database file, although this does not have to be the current file. These commands do not display records on screen. To do this, you need to use VIEW. Similarly, although they can be used with any open file, the SELECT commands do not automatically make an open file the current file. For example, SELECT LAST selects the last record in a file(on index)even if the file is not current2ζ. If the file is current, executing the VIEW command will be enough to display the last record. But with any other open file, you will also need to use the FILE command(as opposed to the FILE parameter)before you can display the record(FILE makes an open file the current file). SELECT CURRENT PURPOSE Selects the current record. SYNTAX SELECT CURRENT [FILE sbfname] [INDEX index] COMMENT This command has the same effect as the Current Record button on the Control Panel at the bottom3& of the screen. Use INDEX to select the current record using a different index. SELECT DUPLICATE PURPOSE Selects the next record with the same key. SYNTAX SELECT DUPLICATE [INDEX index] COMMENTS This command finds the next record with the same key as the current key. The key is the field on which the file is currently indexed. If SELECT DUPLICATE fails to find a record with the same key, the EOF function is set to true. 1 SELECT FIRST:VIEW:x%=1 lab1:SELECT DUPLICATE IF NOT EOF(4,"aaa")THEN VIEW:x%=x% + 1:GOTO lab1 ? "End of ";x%; "duplicates-strike key" lab2:SELECT PREVIOUS:SELECT NEXT:IF EOF("aaa")THEN END CLS:VIEW:GOTO lab1 Example 1 displays duplicate entries on an index. In Table view, it shows a set of records at a time. SELECT FIRST PURPOSE Selects the first record in the current or specified index sequence. SYNTAX SELECT[FILE sbfname] [INDEX index] COMMENTS This command has the same effect as the First Record button on the Control Panel. Use the5n% INDEX parameter to alter the current index. EXAMPLES 1 SELECT FIRST 2 SELECT FIRST "Stock" INDEX Prodcode NOTES Example 1 selects the first record in the current file according to the current index. Example 2 selects the first record in the Stock file according to the Procode index. SELECT KEY PURPOSE Selects the first record with matching string. SYNTAX SELECT KEY string [FILE sbfname] [INDEX index] COMMENTS This command has the same effect as the Key Lookup button on the Cont6&^rol Panel. It searches the file for the first record whose index field matches the string specified. Unlike the other SELECT commands, this command does not affect the EOF function, but instead sets the FOUND Function(see the example given for FOUND). EXAMPLES 1 SELECT KEY "Zollinger" VIEW 2 SELECT KEY "Johnson" FILE "Customer" INDEX Lastname IF FOUND("Customer")THEN FILE "Customer":VIEW NOTES Example 1 selects the record in the current file whose Lastname field contains the name7^ Zollinger. It assumes that the current file is indexed on Lastname. The program in example 2 selects the record in the Customer file whose Lastname field contains the name Johnson. The Customer file must have already been opened, but it does not have to be the current file. If the program finds a record with a matching key, it uses the FILE command to make the Customer file current and then displays the record. SELECT LAST PURPOSE Selects the last record in the current or specified8= index sequence. SYNTAX SELECT [FILE sbfname] [INDEX index] COMMENTS Has the same effect as the Last Record button on the Control Panel. SELECT NEXT PURPOSE Selects the next record in the current or specified index sequence. SYNTAX SELECT NEXT [FILE sbfname] [INDEX index] COMMENT Has the same effect as the Next Record button on the Control Panel. SELECT PREVIOUS PURPOSE Selects the previous record in the current or specified index sequence. SYNTAX [FILE sbfname] [INDEX index] 9T2 COMMENTS This command has the same effect as the Previous button on the Control Panel. SELECT REMOVE PURPOSE Removes the current record in the current file or another open file. SYNTAX SELECT [FILE sbfname] COMMENTS This command has the same effect as the Remove option on the Record menu. SELECT WHERE PURPOSE Selects first record that matches the filter conditions or removes the filter. SYNTAX SELECT WHERE[[FILE sbfname] [conditions]] COMMENTS This command has the same effect :K78as the Filter button on the Control Panel. conditions is set up in the same way as the string gadget in the Filter requestor. If not specified, the current filter conditions are cleared. SELECT WHERE can only be used to set a single file filter. If you enter the name of a field which also occurs in another open file, you should include the file the file name as an extension. Otherwise, Superbase may assume you are attempting to use this command in a multi-file operation, and will iss%Iue the error message: Can't do this This Where statement must be single file If you wish to set a multi-file filter - to select records whose field data matches the data in another file - use the LOOKUP function or the query language command WHERE. EXAMPLE 1 SELECT WHERE fielda LIKE "[a-c]" 2 SELECT WHERE "Stock" fieldb LIKE "[a-c]" 3 SELECT WHERE NOTES Once set, the Control Panel filters remains active until it is cleared. Example 3 clears the filter which may have been set by a2yn starts at the right of a string given in strexpr and extracts nexpr characters. EXAMPLES 1 textfieldc=RIGHT$(textfielda, 10) 2 textfieldc=LCASE$(RIGHT$(textfielda, 1)) 3 IF RIGHT$(textfielda, 1)="s" THEN.... 4 x$=RIGHT$("ABCD", 2) 5 x$=RIGHT$(x$, 4) RND PURPOSE Returns a random number. SYNTAX RND(nexpr) COMMENTS What the function returns depends on the value of nexpr. It nexpr is less than zero, the random number generator is reseeded. This means that a new series of random num?\bers will be generated, completely unrelated to the last series. It also allows you to generate the same series again for testing purposes, by entering the same seed. If nexpr is zero, the number returned is the same as the previous one. If nexpr is positive, a new random number is generated. The random number returned is in the range 0 to 1. Technically, it is never zero and never unity, but all values between 0 and one will be randomly generated and the distribution of numbers will@H be relatively flat. EXAMPLES 1 numfieldc=RND(numfielda) 2 numfieldc=RND(2) * 12 3 textfieldc=MID$(x$, RND(2) * 6 + 1, RND(2) * 12 + 1) 4 $x=RND($y) 5 ? RND($x) ROW PURPOSE Returns the row position of the cursor on the screen. SYNTAX ROW(0) COMMENTS This function shows how far down the screen the cursor is. For the column position, see COL. EXAMPLES 1 x%=ROW(0) 2 ? ROW(0) NOTES In practise, example 2 would be pointless, because it changes the position of the cursor in the coursA<(e of printing it. RUN PURPOSE Executes a program from memory, or loads it from disk and then runs it. SYNTAX RUN[filename] COMMENTS This will run the program currently in memory when used as a command or as a program statement without the filename option. If filename is used to specify a program, Superbase loads the program from disk and then runs it. If filename is specified, it must be a string variable or a string constant in quotation marks. SAVE PURPOSE Saves any of the follBowing types of file:program, text, function key, query, and update files. SYNTAX SAVE [TEXT/KEY/QUERY/UPDATE]filename[, TEXT] COMMENTS filename is required. Superbase detects files of different types as follows: aaa.sbk is a saved function key set aaa.sbp is a saved program aaa.sbq is a saved query aaa.sbt is a saved document(text) aaa.sbu is a saved update If none of the options TEXT, KEY, QUERY or UPDATE is used, Superbase assumes that filename refers to an '.sbp' file and aCttempt to save a program file. If you include TEXT as the last parameter, DML saves a program file as a text file. Only one of the options, TEXT, KEY, QUERY or UPDATE, can be used at a time. SAVE FILE PURPOSE Saves the current file definition. SYNTAX SAVE FILE sbfname COMMENTS When you create a new file, you can use MAKE to save the file definition. SAVE FILE, however, must be used after you have edited a file definition with MODIFY. SAY PURPOSE Converts a text string into speechDv, using the Amiga's speech synthesis facility. SYNTAX SAY [USING parameters]exprlist COMMENTS SAY is only available on the Amiga. The parameters for the USING option are in this order: Pitch, Inflection, Rate(wpm), Sex, Phonemic The following table gives the range of each parameter and its default value: PARAMETER RANGE DEFAULT NOTES Pitch 65-320 110 Inflection 0-1 0 0 is expressive, 1 is monotone Rate in wpm 40-400 150 Sex 0-10 0 0 is male, 1 is female Phonemic 0-E=1 0 0 translates to phonemes, 1 assumes phonemes SAY only works with string expressions. To hear an external sound field use the SHOW command. EXAMPLES 1 OPEN FILE "Address" SELECT FIRST WHILE NOT EOF("Address") SAY Forename;Lastname;"comes from";City;Country SELECT NEXT WEND 2 SAY USING 280, 1, 200, 1, 0"Hello there", USING 140, 1, 200, 0, 0 "Well, hello there" SCRDUMP PURPOSE Outputs a copy of the screen to the printer-carries out a screen dump. SYNTAX SCRDUMP0.>c COMMENTS Only available on the Amiga. SECS PURPOSE Returns the numbers of seconds from a time field. SYNTAX SECS(nexpr) COMMENTS nexpr will usually contain a time in milliseconds(thousandths of a second) from a time field or from the result of a TIMEVAL calculation. EXAMPLES 1 scnds%=SECS(timefield) 2 scnds%=SECS(TIMEVAL("10:22AM")) SELECT COMMANDS The following SELECT commands relate to Record selection: SELECT CURRENT SELECT DUPLICATE SELECT FIRST SELECT KEY SELECT LASTGgx$=REPLICATE (" ", 25) NOTES Example 4 fills x$ with 25 spaces, but see function SPACE$. REPORT PURPOSE Specifies the field or fields on which totals(and other report statistics) will be produced for the report as a whole. SYNTAX REPORT [SUMMARIZE] [params]fieldname[, fieldname][, ....] COMMENT Report has two uses. When you create a Report with the Forms Editor, Superbase generates a Report statement by noting the fields which have been specified in an AFTER REPORT section;i.e., Hyif the AFTER REPORT section in a Report program contains the statements: ? SUM amount ? COUNT deposits Superbase will generate the following line in the program: REPORT amount, deposits If you are writing a Report program yourself (as opposed to modifying a program generated by Superbase), you should remember to enter a Report statement including the names of any fields for which you wish totals and other report statistics to appear. The second application for REPORT is a query laIZnguage command. In this context, it allows you to create a program line which is equivalent to the REPORT command line in the query definition dialog. REPORT is used here to specify the fields for which totals and other statistical. When you use the SUMMARIZE option, Superbase suppresses the main detail of the report and prints just the summary information. REQUEST PURPOSE Displays a Superbase dialog. SYNTAX REQUEST text1, text2, type[, nvar[, strvar[, len]]] COMMENT REQUEST allowJ\s you to select one of Superbase's dialogs and display it on screen. To some extent you can also customise a dialog to your own requirements. Thus you can place a title in box, and you can specify the text string that initially appears in the dialog's command line or selection box. For certain dialogs, it also possible to specify the length of the box. text 1 and text2 are the first and second line of the dialog title. They must be included although they can be "". The maximum lengthKV for each line is 50 characters. type is the dialog type. It defines the type of dialog according to the table shown below. nvar is a numeric variable. It returns a value of 1 if OK is selected and there is an entry into the string dialog. If CANCEL is selected or there is no entry into the string dialog, it returns 0. strvar can be used with dialogs which have a string entry box and has two functions: It is used to place a default value into the string box, i.e., the text string in Lвstrvar is entered into the string box when the dialog is displayed. It returns the string which the user enters in the box. len specifies the length of the string box(where appropriate). This is particularly useful for the information dialogs. For dialog types 5-16 it is not need as Superbase sets the box to the maximum file name length of 50 characters. For dialog type 4 len must be specified. Types of Dialogs available: TYPE DIALOG BUTTONS 0 string OK 1 string OK CANCEL 2 sMtring OK 3 string OK CANCEL 4 string OK CLEAR CANCEL 5 Database Files OK CLEAR CANCEL 6 Open Fields List OK CLEAR CANCEL 7 Indexed fields OK CLEAR CANCEL 8 Non indexed fields OK CLEAR CANCEL 9 Field Info OK CLEAR CANCEL 10 Open Database Files OK CLEAR CANCEL 11 Database Files OK CLEAR CANCEL 12 Program Files OK CLEAR CANCEL 13 Text Files OK CLEAR CANCEL 14 Query Files OK CLEAR CANCEL 15 Update Files OK CLEAR CANCEL 16 Function Key Files OK CLEAR CANCEL 17 Directory lisNj#ting OK CLEAR CANCEL 18 Subdirectory List OK CLEAR CANCEL Note that a database file must be open before dialogs 5 to 9 can be selected. EXAMPLES 1 REQUEST "", "", 2, 2 a%=0:a$="":REM initialize nvar and strvar REQUEST "Select a program", "", 5, a%, a$, 32 IF a%=0 THEN ? "OK so you do not want to run a program":END CHAIN a$ 3 a%=0:a$=":OPEN FILE "aaa" REQUEST "Select an Index", "", 7, a%, a$ IF a%=0 THEN END INDEX a$ lablook:a$="":REQUEST "Enter a key", "", 1, a%, a$, 15 IFO|! a%=0 THEN END SELECT KEY a$ IF FOUND ("aaa") THEN GOTO lablook2 REQUEST "No Record with key" + a$, "See Nearest ?", 1a% IF a%=0 THEN GOTO lablook lablook2:VIEW:WAIT FOR 5:GOTO lablook NOTES Example 1 puts an "OK" dialog up for 2 seconds. Example 2 allows the user to select a program to run. Example 3 in essence duplicates the key lookup function from the ? button on the Superbase Control Panel. Note the concatenation of the first title line of the dialog on the third from lastP*0+ line. RESTORE PURPOSE Moves the data pointer back to the first DATA statement, or to a specified label. SYNTAX RESTORE[label] COMMENTS The data pointer is the internal pointer that Superbase uses to keep track of which DATA statements have been read. Initially it has a value of zero and points to the first DATA statement. As you READ data into variables or fields, the data pointer is increased by one for every data item read. This command resets the data pointer. If you do not sp;&ecify label, the data pointer is reset to the beginning of the first DATA statement. If you specify label, the data pointer is reset to the data statement following the label. EXAMPLES 1 RESTORE 2 RESTORE datalabel1 RESUME PURPOSE Resumes execution after an error. SYNTAX RESUME[NEXT/label] COMMENTS The RESUME command works in conjunction with the ON ERROR GOTO command which is used to trap program errors. RESUME, on its own, returns program control to the statement that caused thRuxits from Superbase. SYNTAX QUIT COMMENTS This has same effect as selecting the Quit option from the Project menu. It exits from Superbase and returns the user to the desktop interface. READ PURPOSE Reads the data given in a DATA statement and assigns it to a variable or field. SYNTAX READ var/field[, var/field] [, .....] COMMENT The types of variables or fields used with a READ command must match the types of data expected-numeric variables or numeric fields for numeric data anSvd string variables or string fields for string data. DML uses a pointer to keep track of where it is in the list of DATA items; that is, each time a data item is read, DML moves the pointer on to the next item in the list. If you wish to read the same data again, you can place a label in front of a DATA statement and use RESTORE. EXAMPLES 1 READ a%, b$, fielda.filea, fielda.fileb RECCOUNT PURPOSE Counts the number of records in a file. SYNTAX RECCOUNT(sbfname) COMMENTS This functTZ"Yion returns a number showing how many records there are in the file specified. You can use the empty string as an argument-RECCOUNT("")-to refer to the current file. EXAMPLES 1 ? RECCOUNT("Orders") 5-116 2 x%=RECCOUNT(x$) 3 OPEN FILE("address") SELECT FIRST FOR n%=1 to RECCOUNT("address") VIEW SELECT NEXT NEXT n% NOTES Example 3 displays all the records in the file "address" in turn. REM PURPOSE Inserts a non-executable comment(a remark)into a program. SYNTAX REM[text]U%X: COMMENTS REM has the effect of cancelling any statements after it. This makes it useful when you are testing a program-placing it at the start of a multi-statement line puts the following statements temporarily out of action. More generally, use REM to annotate a program in order to explain how it works or what it does. A single quotation mark after a command without an intervening colon also acts as a REM statement. EXAMPLES 1 REM this is a remark 2 ....:FILE "aaa" open aaa 3 ...V}.:FILE "aaa":REM open aaa 4 FILE "aaa":REM eliminate next commands:INDEX abc:SELECT FIRST NOTES Examples 2 and 3 have identical effects and demonstrate the two different ways of entering a comment. In example 4, the REM statement means that the INDEX and SELECT FIRST commands are not executed. REMOVE FILE PURPOSE Removes a database file from disk, along with its associated definition and index files. SYNTAX REMOVE sbfname COMMENT This command operates in the same way as the RemW=u!ove File menu option. Note that you are not asked for confirmation-the file is just removed. EXAMPLES 1 REMOVE FILE "aaa" 2 REMOVE FILE "DF1:aaa" 3 REMOVE FILE "GEM\SBASE\aaa" REMOVE FROM PURPOSE Removes records which match the conditions specified. SYNTAX REMOVE FROM FILE sbfname[WHERE conditions] COMMENTS This command works in the same way as the equivalent PROJECT-REMOVE-FILE menu option. It deletes records from a file on disk. FILE sbfname has to be open, and if the file requXQZires a password, you must have full access to it. WHERE conditions is optional and is set up in the same way as a filter. If it is not included, the command acts on all the records in a file. EXAMPLES 1 REMOVE FROM FILE "aaa" WHERE Lastname LIKE "[a-c]*" 2 REMOVE FROM FILE "aaa" This empties the file of all its data. REMOVE INDEX PURPOSE Removes an index on the current file from disk. SYNTAX REMOVE INDEX index COMMENT This command works in the same way as the Remove Index option Yson the Project menu. The file must be open, and, if it requires a password, you must have full access privileges. index is the name of an indexed field. It can be entered with a file extention. EXAMPLES 1 REMOVE fielda 2 REMOVE fieldb.aaa RENAME PURPOSE Renames a file on disk. SYNTAX RENAME old.filename[, /TO]new.filename COMMENT This command works in the same way as the RENAME command in MS DOS or Amiga DOS, but allows you to rename a file without exiting from Superbase. You havZ) Ie the option of using either a comma or the keyword TO as the separator between the two file names. EXAMPLES 1 RENAME "aaa", "bbb" 2 RENAME "aaa" TO "bbb" REORGANIZE PURPOSE Reorganizes the current file or a specified file. SYNTAX REORGANIZE [FILE sbfname] [TO]sbfnameb COMMENTS This command is the program equivalent of the Reorganize option on the System menu(see Chapter 8, Volume 1). It takes a file on disk, reorganizes it, and stores it as sbfnameb. IF the FILE option is not us[Ied, the current file is reorganized. sbfnameb can include the pathname for another directory or disk. If you enter a pathname without a file name following it, the file will be reorganized under the same name. Note that you cannot reorganize a file under the same name in the same directory;i.e. if a pathname is not supplied, sbfnameb must not be the same as sbfnamea. EXAMPLES 1 FILE "aaa":REORGANIZE TO "copy" 2 REORGANIZE "aaa" TO "a:mydir\" 3 REORGANIZE "aaa" TO "DF1:Mydir/" ExamplF6e 1 creates a reorganized file 'copy' in the current directory, Example 2 creates a reorganized file 'aaa' in directory mydir on the disk in drive a (or, in example 3, drive DF1 on the Amiga). REPLICATE PURPOSE Replicates a character a given number of times. SYNTAX REPLICATE(strexp, nexp) COMMENTS REPLICATE repeats the character in strexpr the number of times given in nexp. EXAMPLES 1 textfieldc=REPLICATE("*", 10) 2 x$=REPLICATE(textfieldc, 4) 3 x$=REPLICATE(MID$(x$, 4, 2), 6) 4 ]k. If no password is given, the existing password for the specified file is removed. EXAMPLES 1 OPEN FILE "aaa;John" PASSWORD "aaa" Removes passwords. 2 PASSWORD "aaa;Rosebud" Sets a password for the file 'aaa'. 3 OPEN FILE "aaa;John" PASSWORD "aaa;John;Paul;George" Adds passwords for read/write and read only access privileges. PCOL PURPOSE Return the column position of the print head on the current output printer or resets the print head's position. SYNTAX PCOL(nexpr) COMMENTS ^BIf nexpr is zero, the function returns the column position of the print head on the current printer. For the Row position, see PROW. See also LOCATE. You can also use this function to set the counter Superbase uses to keep track of the print head's position. Giving nexpr a positive value, sets the counter to that value. The print head itself is not moved. This feature is used to reset the internal count after issuing a series of printer commands which have not in fact moved the print_v head, for example, after switching to high density graphics mode. EXAMPLES 1 x%=PCOL(0) 2 ? PCOL(0) POSITION PURPOSE Sets the data pointer to a new position in an ASCII file. SYNTAX POSITION nexp COMMENTS When you read data from an ASCII file on disk, Superbase uses an internal pointer to keep track of it. The OPEN file FOR INPUT command sets the pointer to zero, the position of the first character in the file. Thereafter it is incremented by one for each character that is input`Ϯ using the INPUT command. POSITION sets the pointer to the character position specified by nexpr. Normally, the data in an ASCII file is read into the computer sequentially. With Position, you can input character data on a more selective basis. You will only be able to take advantage of this command if you know where the data is stored in a file. Superbase stores data in variable length fields(as opposed to fixed length fields):when you create an ASCII file from an '.sbf' file by expaEorting it, the amount of space occupied on disk by field data may vary from record to record. This means that there is no simple way of knowing the position of any particular field or record. One solution to this problem is to create an ASCII file from a database file using the query option Output to Disk. When you do this, Superbase stores the data in fixed length fields-each field takes the length set in the file definition. You can then work out the number of characters occupied bbmy a record in the ASCII and use this figure to retrieve specific records or fields. For example, if the record length was 49 characters, you would enter: POSITION 49 * 5 + 1:INPUT LINE a$ to retrieve the fifth record in the file(you need to add one because the first character position is zero). EXAMPLES 1 OPEN "Cust.asc" FOR INPUT FOR n%=0 to 76 * 12 STEP 77 POSITION n% INPUT & 15, a$ ? a$ NEXT CLOSE INPUT NOTES This example inputs the first field from the first twelve recorc\ads in the ASCII file Cust.asc. It assumes that the record length is 77 characters and that the length of the first field is 15 characters. PRINT PURPOSE Sends information to the printer. SYNTAX PRINT[expressionlist] COMMENT PRINT, followed by a semicolon and nothing else, selects the printer as the current output device. The ? command can then be used to send information to the printer. You can also use PRINT to output information directly to the printer, by following the command dݞwith one or more expressions. But note that any use of PRINT makes the printer the current output device. The items in the expression list following the Print command may be separated by a semicolon or a comma. If a semicolon is used, Superbase will print the expressions one after the another without any spaces in between; a comma has the effect of inserting a space between items. In some circumstances, you may also dispense with separators altogether. Thus, provided it can distinguie0;sh between different items, Superbase will accept a list of expressions which are entered on the line head to tail; for example: PRINT a$b$c%"Hello" EXAMPLES 1 PRINT; ? MEMORY DISPLAY; 2 PRINT BF "The items in the following list will be printed in bold face" PRINT "One", "Two", "Three";CHR$(12) DISPLAY; NOTES The first example prints the current program's variables and their contents. Example 2 prints a list of items, and then sends the form feed character - CHR$(12)-to the prf-inter. Both examples use the DISPLAY command to make the screen the current output device after the print operation is finished. PROTECT PURPOSE Saves the current program in an encrypted form. SYNTAX PROTECT filename COMMENTS Use this command to ensure that program files are not seen by anyone else. It stores a file on disk in an encrypted(scrambled)form so that it can be run but not edited. If the first line of a program is a REM statement, PROTECT displays that line, but hides tQhe rest of the program from any attempt to edit or LIST it. EXAMPLES 1 PROTECT "myprog" PROW PURPOSE Returns the row position of the print head on the current output printer. SYNTAX PROW(nexpr) COMMENTS If nexpr is zero, the function returns the row position of the print head on the current printer. For the Column position, see PCOL. See also LOCATE. Giving nexpr a positive value resets Superbase's internal row counter. See PCOL. EXAMPLES 1 x%=PROW(0) 2 ? PROW(0) QUIT PURPOSE EuhclePEN FILE "aaa" which opens a database file, and OPEN "aaa"(FOR INPUT)which opens a text file. sbfname is compulsory, and if a password is required to access the file, then it is also compulsory (use a semicolon to separate the filename from the password). INDEX followed by a field name may be added to the end of an OPEN FILE command, allowing you to select an index other than the default index. But it can only be used if the file has already been opened by a direct command or an earlviJb%ier program line. As explained in the entry for the INDEX command, DML parses the whole line before executing it;so if you refer to a field, it must be a field in a file that already been opened. Otherwise an error will result. EXAMPLES 1 OPEN FILE "aaa" 2 x$="bbb":OPEN FILE x$ 3 OPEN FILE "aaa";"John" NOTES In example 3, 'John' is the password for the file 'aaa'. ORDER PURPOSE Sets the order for Query output. SYNTAX ORDER [&nexpr]field[ASCENDING/DESCENDING] [, field] wjcad ASCENDING/DESCENDING] [, .....] COMMENTS ORDER is a Query Language command and can only be entered in a query section -i.e., it works in conjunction with the Query Language command Select. This command is the program equivalent of the Order command line in the query definition dialog: it takes the same syntax and serves the same purpose. The field specified with the ORDER command determines the order in which the field in the SELECT line are output. If you are familiar with thxkݝe concept of sorting, you can think of ORDER as setting the sort 'key' for query output. field must be a field in an open file, but it does not need to be an indexed field; nor does it have to be one of the fields in the SELECT line. ASCENDING and DESCENDING allow you to specify whether data is sorted in ascending or descending order. If you specify a text field with the ORDER command - i.e., if you specify it as the sort key-Supervase outputs record data according to the alphabeticayltl order of the sort field. DESCENDING reverses the order and sorts the field from Z to A. With numeric, date and time fields, ASCENDING sorts data in numeric, date or time order; and DESCENDING reverses the order. By default, fields are sorted in ascending order;so it not strickly necessary to include the ASCENDING parameter. You can also specify more than one field in the ORDER line, separating each with a comma. If enter two fields, the first field takes precedence as a sort key ovzmLUNer the second field; i.e., records are first sorted according to the first field, and then any duplicate data items are sorted according to the second key. The same applies if there are more than two fields:the second key has priority over the third, the third has over the fourth, and so on. EXAMPLES The examples illustrate how ORDER works by taking a limited set of records and showing some of the different ways in which they may be sorted. Each record contains data from three field{n s, Firstname, Lastname, and Country. 1 SELECT Firstname, Lastname, Country ORDER Lastname This examples takes Lastname as the sort key and produces the following output: FIRSTNAME LASTNAME COUNTRY Pierre Arnauld France William Carter USA Gerde Hemrich West Germany John Miles England Anne Richardson USA Peter Smith England Robert Brown England 2 SELECT Firstname, Lastname, Country ORDER Country The output from this query would be as follows: FIRSTNAME LA|oqҜSTNAME COUNTRY Robert Brown England John Miles England Peter Smith England Pierre Arnauld France William Carter USA Anne Richardson USA Gerde Hemrich West Germany 5-107 3 SELECT Firstname, Lastname ORDER Country DESCENDING, Lastname ASCENDING The output from this query is: FIRSTNAME LASTNAME Gerde Hemrich William Carter Anne Richardson Pierre Arnauld Robert Brown John Miles Peter Smith 4 SELECT Firstname, Lastname, Country ORDER Country, Fir}puRstname This example uses Country as the primary sort key and Firstname as the secondary key to produce the following output: FIRSTNAME LASTNAME COUNTRY John Miles England Peter Smith England Robert Brown England Pierre Arnauld France Anne Richardson USA William Carter USA Gerde Hemrich West Germany NOTES The default length for sorting is 15 characters per field. Superbase gives equal weighting to upper case, lower case and accented instances of characters. T~qqhe & character followed by a value up to the length of the field may precede any field, specifying the number of characters that will be used in sorting. OUTPUT TO PURPOSE Opens a text file on disk for output. SYNTAX OUTPUT TO filename COMMENTS This command makes the disk the current output device and sends any future output to filename. It has the same effect as OPEN filename FOR OUTPUT. If the text file already exists on disk, any output command issued after OUTPUT TO, will over\1write the file. If you want to add data to an existing text file, use OPEN filename FOR APPEND. EXAMPLES 1 OUTPUT TO "Names" ? Lastname CLOSE OUTPUT 2 OUTPUT TO a$ NOTES Example 1 stores the contents of the Lastname field(in the current record)on disk in the text file Names. PASSWORD PURPOSE Sets new password(or none)for a specified file. SYNTAX PASSWORD sbfname [;passwords] COMMENTS sbfname must be an open file and, as usual with filenames, must be included in quotation marksjsd9999." Integer only format. 2 NUMBASE "+*****.00" Numbers displayed with a sign and leading cheque-protect. ON ERROR PURPOSE Tells DML to branch to another part of the program when an error occurs. SYNTAX ON ERROR [[GOTO]label] COMMENTS Normally, DML halts program execution and displays an error message when it detects an error. ON ERROR enables error trapping, and prevents the program from halting. Once an error has been detected, it causes the program to jump to the error handlktling routine specified with label. You can use ERRNO in your error handling routine to check on which error has occurred, and take appropriate action. In many cases, you will want the program to resume execution after detecting an error. You can do this with the RESUME statement. To disable error trapping, use ON ERROR without a following label. EXAMPLES 1 ON ERROR GOTO check ...... ...... ...... check:IF ERRNO 11 THEN RESUME ELSE? "Are you sure you want to exit from this proglu}Hram?" ? "Press Y to exit, any another key to resume" WAIT a$ IF a$="Y" OR a$="y" THEN END ELSE RESUME ENDIF NOTES In this example, ON ERROR is used to check whether the Stop button has been clicked on or CTRL C has been pressed. Both these events generate error number 11, so the error handling routine(which starts at label 'check')first tests for this error number. If it finds that another error event has occurred, program execution is resumed at the line which caused the error.mvtan The error handling routine then asks if the user wishes to exit or not. Depending on the answer it receives, it either resumes execution at the line which caused the error (the line being executed when the user pressed STOP or CTRL C)or terminates the program. ON GOSUB PURPOSE Calls one of a number of subroutines from a list of subroutines. SYNTAX ON nexp GOSUB label1 [, label2, label3, ...] COMMENTS This statement transfers program control to one of the subroutines given in the nwU[Glist. The value of nexp determines which subroutine the program jumps to. If nexp has valued at 1 the program branches to the subroutine at the first label, if nexp has a value of 2, it branches to the subroutine at the second label, and so on. Once the program has branched to a subroutine, it executes each statement in turn until it meets a RETURN statement. Then it jumps back to the line following the ON GOSUB statement. Any label can be repeated. If nexp is 0 or greater than the nox'Ϣxumber of supplied labels, program control drops to the next statement after the ON GOSUB statement. EXAMPLES 1 ON x% GOSUB lab1, lab2, lab3 2 ON x% GOSUB lab1, lab2, lab1, lab2, lab1 ON GOTO PURPOSE Branches to one of a list of labels. SYNTAX ON nexp GOTO label [, label, ....] COMMENTS This command transfers program control to one of the program lines given in the list. The value of nexp determines which label the program jumps to. If nexp has valued at 1 the program branches to pythe first label, if nexp has a value of 2, it branches to the second label, and so on. For a general description of GOTO refer to GOTO itself. nexp should be a positive integer. If it is not an integer, the whole number part will be taken. Any label can be repeated. If nexp is 0 or greater than the number of supplied labels, program control drops to the next statement after ON GOTO. EXAMPLES 1 ON x% GOTO lab1, lab2, lab3 2 ON x% GOTO lab1, lab2, lab1, lab2, lab1 ? "Reached here onlqzW_y when x% is 0 or greater than 5 OPEN PURPOSE Opens a text file on disk or Comms channel for input/output. SYNTAX OPEN filename FOR[INPUT/OUTPUT/APPEND] COMMENTS When used for output to a file, OPEN has the same effect as OUTPUT TO file. There is only one channel for INPUT, and one for OUTPUT, so you cannot have two output channels, or two input channels. However, you can have one of each open at the same time. APPEND is an output channel and specifies that file is to be appended r{%` to. You must not try to specify OPEN "aaa" FOR OUTPUT APPEND. If using OPEN, file is overwritten without warning. If using APPEND, file need not exist. If using INPUT, file must exist. EXAMPLES 1 OPEN "aaa" FOR OUTPUT 2 OPEN "aaa" FOR APPEND 3 OPEN "bbb" FOR INPUT:OPEN "aaa" APPEND lab1:INPUT LINE a$:? a$ IF NOT EOF ("*")THEN GOTO lab1 CLOSE INPUT:CLOSE OUTPUT NOTES Example 3 appends the contents of file 'bbb' to file 'aaa'. Notice that the last line of the program CLOSEs the fis|S)les that OPEN has opened. This practise is strongly recommended:you should always close a file when you have finished writing to it. OPEN FORM PURPOSE Loads a form from disk and displays it in the database window. SYNTAX OPEN FORM form COMMENTS form must be a string expression giving the file name of a form. Superbase will also open any database files associated with the form. EXAMPLES 1 OPEN FORM "Invoice" OPEN FIELDS PURPOSE Specifies which fields are displayed. SYNTAX OPEN Ftg;/IELDS [FILE sbfname] fieldlist COMMENTS This command is the program equivalent of the Open Fields option on the Project Menu. fieldlist consists of the list of fields required to be open. To remove any restrictions on which fields are shown, use the CLOSE FIELDS command. EXAMPLES 1 OPEN FIELDS FILE "Address" Firstname, Lastname, Country, City OPEN FILE PURPOSE Opens a database file and its default index. SYNTAX OPEN FILE sbfname [;password] COMMENTS Note the distinction between O_~,l merge. SYNTAX MERGE [TEXT filename] [WHERE conditions] COMMENTS This command merges the data in an '.sbf' file with a form letter in the Text Editor and outputs the results to the printer. It takes data from the current open file and-if WHERE is not included-prints one letter for each record in the file. You can use WHERE to set up a filter restricting the merge operation to only those records which match the conditions specified. The TEXT option lets you specify a text file on d` isk; Superbase will then load the file into the Text Editor before starting the merge operation. Although Merge is the program equivalent of the Mail Merge option on the Process menu, it does not allow you to preview letters on screen before printing them. To do this, use ? TEXT with the MERGE parameter. EXAMPLES 1 OPEN FILE "Address" MERGE TEXT "Mailshot1" WHERE Country LIKE "USA" MID$ PURPOSE Returns one or more characters from within a text string or text field. SYNTAX MID$(sta&rexpr, nexpr1[, nexpr2]) COMMENTS MID$ is more flexible than LEFT$ and RIGHT$ as it can extract characters from any point in a string.strexpr holds the string, and nexpr1 gives the starting point in the string.nexpr2 specifies the length of the substring to be extracted; if nexpr2 is not given, MID$ takes all the characters from the starting point to the end. EXAMPLES 1 textfieldc=MID$(textfielda, 10, 10) 2 textfieldc=LCASE$(MID$(textfielda, 8)) 3 MID$(textfielda, 12, 1)LIKE[a-c] 4bUۺ x$-MID$(textfieldc, 19, 2) 5 x$=(x$, 4) 6 ? MID$(x$, 4, 2) 7 ASK;A$: I%=LEN(A$) FOR n%=I% TO 1 STEP -1 B$=B$ + MID$(A$, n%, 1) NEXT ? B$ NOTES Example 7 inputs a word into A$ and turns it back to front. MINS PURPOSE Extracts the number of minutes from a numeric value which holds the time in thousandths of a second. SYNTAX MINS(nexpr) COMMENTS Usually, nexpr will be a timefield or the result of a TIMEVAL calculation. EXAMPLES 1 mnts%=MINS(timefield) 2 ? MINS(NOW - start%);"c?minutes have elapsed" MOD PURPOSE Gives the remainder of a numeric expression after it has been divided. SYNTAX nexpr1 MOD nexpr2 COMMENTS nexpr1 is the number to be divided, nexpr2 is the number that divides into it (the divisor). MOD returns the remainder when nexpr1 has been divided by nexpr2. For example: 14 MOD 3 gives 2 as a result. It is equivalent to: 14-INT(14/3) * 3 EXAMPLES 1 ?(2.53 * 100) MOD 100 NOTES The example line strips off the integer part of a number and didsplays the first two figures after the decimal place. MODIFY PURPOSE Modifies a field definition. SYNTAX MODIFY field[, ] [field definition string] [, formula] [, formula] COMMENTS MODIFY is the program equivalent of the EDIT FILE option in PROJECT. It allows you to alter a field's parameters;for example, the field name or its length. The field definition and formula strings take the same form as they do with the ADD command. EXAMPLES 1 MODIFY Forename "Firstname;TXT REQ IXU;15 UeXTb;1, 12" MONTH$ PURPOSE Takes a julian date number and returns the month of the year as a text string. SYNTAX MONTH$(nexpr) COMMENTS The same limitations on which julian dates are acceptable apply to this function as they do to other date functions. The format of the text string is the full month name regardless of what current date format is - i.e., January, not Jan). Associated date functions are DAY DAYS DAY$ MONTH MONTH$ YEAR. EXAMPLES 1 textfieldc=MONTHS$(datefielda) 2 textfifeldc=MONTH$(datefielda + 90) 3 textfieldc=MONTH$(TODAY) 4 x$=MONTH$(datefielda + VAL(textfielda)) 5 x$=MONTH$(DAYS ("11 Jan 85") 6 ? MONTH$(datefielda + 30) NEW PURPOSE Clears the program area or text area. SYNTAX NEW [TEXT/QUERY/UPDATE] COMMENTS On its own, NEW erases any program that is currently in the computer's memory. When followed by TEXT, it clears the current text editor area of memory. Following it by or QUERY or UPDATE, clears their respective dialogs. Unlike the menu ogQ"!ptions Program New(and Text New)this command does not put you into the program(or text)editor. NEWLINE PURPOSE Sends a new line character(or characters)to an output device. SYNTAX NEWLINE[nexp] COMMENTS This command prints a new line at the current output device;i.e. with the screen display, it takes the cursor onto the start of the next line.nexp can be used to specify more than one new line. If nexp is not an integer, only the integer part will be taken. EXAMPLES 1 NEWLINE 2 2 hqS1*FOR i%=1 to 20 ? i%:if i% MOD 5=0 THEN NEWLINE i%/5 NEXT i% NOTES Example 2 outputs the numbers 1 to 5 with single line spacing, 6 to 10 with double spacing, and so on up to 20. NOW PURPOSE Gives the system time. SYNTAX NOW COMMENTS NOW shows the time of day in hours and minutes, using the current time format. If you have a real-time clock in your computer or you have set the system time, this will be the current time. Note that NOW actually holds the time in thousandths of a sir$econd. When you display the time, Superbase automatically translates it into hours and minutes. EXAMPLES 1 ? NOW 2 ? MINS(NOW) 3 timefield=NOW NUMBASE PURPOSE Sets the numeric format in which numbers are displayed. SYNTAX NUMBASE string COMMENTS NUMBASE is the program equivalent of the Number Format option in the SET menu. string must be one of Superbase's valid numeric formats, as listed Chapter 2, Volume 1. For example, "z99999.00" or "z(+$, 000000.00". EXAMPLES 1 NUMBASE "z9T˂P is successful-if it finds the expression you have specified-the record containing the expression becomes the current record, even though the file may not be the current file and is not displayed on screen. At the same time, the FOUND function is set to -1 to reflect the fact that the search has been successful. For a fuller explanation of LOOKUP, see Chapter 2, Volume 1. EXAMPLES 1 OPEN FILE "aaa":OPEN FILE "bbb" SELECT FIRST WHILE NOT EOF("bbb") IF LOOKUP(field1.bbb, field1.aaUka)THEN GOSUB Process_module WEND ? "Process completed":END Process_module: ...... ...... RETURN This example demonstrates a small program to process only those records in file 'bbb' that have a matching record in file 'aaa'. File 'bbb' could be an invoice file 'joined' to a customer file 'aaa' by a customer code(field1 in 'bbb' and 'aaa'). LTRIM$ PURPOSE Trims leading spaces from a text expression or a text field. SYNTAX LTRIM$(strexpr) COMMENTS LTRIM$ returns a string consV rVisting of the original string specified by strexpr with any leading spaces removed. EXAMPLES 1 textfieldc=LTRIM$(textfielda) 2 x$=LTRIM$(textfieldc.filea) 3 ? LEN(x$);LEN(LTRIM$(x$)) MAKE PURPOSE Stores the file definition for a file it has been defined by CREATE and ADD. SYNTAX MAKE sbfname COMMENTS This command is used as the last step in the process of creating a new file. After the file has been defined by CREATE and ADD, MAKE writes the new file definition to disk together wWQPith any indexes that have created. Note that a file definition is not regarded as valid until the MAKE command has been executed. Before then, any error will have the effect of removing the file definition. EXAMPLES 1 CREATE "Address" ADD "Firstname;TXT REQ;20;1, 2" ADD "Lastname;TXT REQ IXD;20;1, 33" ADD "Street";TXT;25;3, 2" (other field definitions) ........ ........ MAKE "Address" MENU PURPOSE Sets up a user-define menu SYNTAX MENU column, item, state[, strexpr] COMMENXVTS Superbase let you define up to 10 menu each of which can have a maximum of 12 items. With the Menu command you supply the text for a single item and specify whether it will appear on the menu an enabled, disabled(ghosted)or with a check mark against it. Having defined a menu with a series of MENU commands-one for each menu item and one for the menu title-you can then use the MENU ON command to turn the menu(or menus)on. You also use MENU to specify a numeric variable which will reYhʹ[turn a value showing which item, if any, has been selected. column must be a numeric expression with a value in the range 1 to 10 giving the column number for the menu. To set up a menu in the first column on the left at the same position as the Superbase Project menu, you would enter a value of one. item must be a numeric expression with a value in the range 0 to 12, giving the number of the menu item. Item 0 is the menu heading, the text that appears on the menu bar. state can takeZϭ a value of 0, 1 or 2.0 disables the item so that it appears on the menu as a ghosted option.1 enables it, 2 places a check mark against it. strexpr supplies the text for the item. For example, if you wished to define a menu in the first column which contained the option Deposits, you could enter: MENU 1, 3, 1, "Deposits" This would make Deposits the third item in the menu list. To disable the Deposits option, you would enter: MENU 1, 3, 0 Note that you do not need to specify the t[2 ext a second time. EXAMPLES 1 MENU 1, 0, 1, "Transactions" MENU 1, 1, 1, "Deposits" MENU 1, 2, 1, "Withdrawal" MENU 1, 3, 1, "Direct debit" MENU 1, 4, 1, "Standing orders" MENU 1, 5, 1, "Credit card" MENU ON a%, b% NOTES This example defines a menu in the first column with five options(items), all of them enabled.(The heading for the menu is Transactions.) MENU ON then turns the menu on. When the user selects an item, Superbase will place its column and item numbers in the va\أriables a% and b%. MENU CLEAR PURPOSE Turns off all user-defined menus and clears their definitions from memory. SYNTAX MEMORY CLEAR COMMENTS If you want to define a new set of menus, you can use this command to clear any menus which have been defined previously. You may also use it when your menus are no longer required, in order to make the memory space they occupy available for other purposes. MENU ON PURPOSE Turns user-defined menus on and specifies the variables which return] the result of a menu selection. SYNTAX MENU ON nvar1, nvar2 COMMENTS MENU ON turns on any menus which have been defined with the MENU command and sets nvar1 and nvar2 to zero. When the user selects an item, Superbase places the column number in nvar1 and places the item number in nvar2. It also turns all the user-defined menus off. For example, if the second item in the third user-defined menu has been selected, the first numeric variable specified with MENU ON, will contain the v^}e͕alue 3 and the second numeric variable will contain the value 2. You may sometimes want to turn the menus off without waiting for an item to be selected. You can do this with the command MENU OFF. EXAMPLES 1 menuloop: MENU ON a%, b% ON a% GOSUB sub1, sub2, sub3, sub4, sub5 GOTO menuloop NOTES This examples presumes that five menus have been defined and that sub1 to sub5 are subroutines which handle item selection for each menu. MERGE PURPOSE Loads a text file and performs a maiI-(x$) LET PURPOSE Assign a value to a variable. SYNTAX [LET] var/field=expr/[expr1 ? expra:exprb] COMMENTS The keyword LET is optional and is usually omitted. In other words, to assign a value to a variable or a field, you only need to use the equal sign. The LET option has been included in DML to maintain compatibility with earlier versions of Basic. DML also provides a more unusual facility when you use the syntax: var/field=expr1 ? expra:exprab This option provides a short wayJ= of assigning different values to a variable or field, depending on whether an expression is true or not;that is, it makes assignment conditional on the truth or falsity of a specified expression. If expr1 is true, expra is assigned to the variable or field;if it is false, exprb is assigned. It is equivalent to IF expr1 THEN var/field=expra ELSE var/field=exprab Used in this way, the question mark character is referred to as a 'ternary operator' to reflect the fact that three operKands are required at the right of the equal sign. In fact, you can chain ternary operators together to create a statement which contains multiple conditions and assigns one of multiple values. Within a program, however, you will generally find it easier to use the IF THEN ELSE statement. The main application for the ternary operator is in a Superbase file definition. Here it has an important advantage over the IF THEN ELSE statement: it can be entered as a calculation formula for a fLJield in a file definition. For a fuller discussion of the ternary operator and its applications, see Chapter 2, Volume 1. EXAMPLES 1 item$="Sprocket" 2 Textfielda="London" 3 b%=3.25 4 numfieldb=INT(277/62) The following examples assume that x$="ABC" and x%=4.5 5 y$=(x$="ABC") ? "yes":"no" This example assigns "yes" to y$. 6 y$=(x$="aaa") ? x$:"" Assigns "" to y$. 7 y$=(x% > 3.5) ? "yes": "no" Assigns "yes" to y$ 8 y$=EOF ("INPUT") ? "end of file": "more to read" LIST PURPOSE Lists Mda text file to the screen. SYNTAX LIST filename COMMENTS LIST is the program equivalent of the LIST option in the SYSTEM menu. It displays a text file on the screen. Do not confuse LIST with ? LIST, which displays a program listing. LIST only works with text files. Note also that unlike many other DML commands, LIST requires the file name itself plus its extension name. EXAMPLES 1 LIST "aaa.exp" 2 LIST "Address.sbd" LOAD PURPOSE Loads any of the following types of file into memorN Uy:programs, text files, function key files, Query and Update files. SYNTAX LOAD [TEXT]/[KEY]/[QUERY]/[UPDATE]filename[, APPEND] COMMENTS If none of the options TEXT, KEY, QUERY or UPDATE is used, Superbase assumes that filename refers to a '.sbp' file and attempts to load a PROGRAM file. The APPEND option can be used with program files and text files to append a file on disk to the file in memory. Note that LOAD cannot be used to load a Superbase data file(a file with an '.sbf' exO2tension). For this you need to use the OPEN FILE command. EXAMPLES 1 LOAD "Program1" 2 LOAD TEXT "Banklet" 3 LOAD QUERY "Deptran" 4 LOAD KEY "Funkey1" 5 LOAD TEXT "Document2", APPEND LOCATE PURPOSE Sets the position at which the next output appears on the current output device(generally, the screen or the printer). SYNTAX LOCATE column[, row] COMMENTS When you are displaying something on the screen, LOCATE allows you to specify where it appears. column and row must be numeric expP¼ressions.row is optional and if it is not included, LOCATE moves the cursor to the specified column position on the current line. You cannot use LOCATE to move the cursor backwards or up the screen:it will not move the cursor to a position on the same line which is to the left of the current position;and it will not move the cursor to a line above the current position. However, you can bypass this restriction if you place the HOME statement in front of LOCATE-see HOME. EXAMPLES 1 LOQ}CATE 12, 5:? "Hello" 2 c%=12:r%=1:LOCATE c%, r% 3 LOCATE 12:? "Hello" NOTES The first example displays the word 'hello' at the 12th column on the sixth row. Example 3 displays 'hello' at the 12th column of whatever line the cursor happens to be on. LOG PURPOSE Returns the natural logarithm(log to the base 'e')of a number. SYNTAX LOG(nexpr) COMMENTS The value of nexpr must be positive. Negative numbers or zero produce the error message 'Invalid numeric parameter'. EXAMPLES 1 numfR xieldc=LOG(numfielda) 2 numfieldc=LOG(datefielda-datefieldb) 3 numfieldc > LOG(numfielda * numfieldb) 4 x%=LOG(y%) 5 x%=LOG(y% * numfielda * (datefielda-datefieldb)) LOOKUP PURPOSE Detects whether an expression occurs in a file in a specified field. SYNTAX LOOKUP(expr, field.file) COMMENTS This function checks whether a given field in a file contains the expression in expr. That is, it answers the question:does expr exist in field.file? If it finds the expression, LOOKUP returns thSꓩe value -1(true);otherwise it returns the value 0 (false). expr and field.file must be of the same type(i.e. text or numeric). field.file must be the name of an indexed field in an open file. LOOKUP plays a major role in cross-file validation and calculation. The file specified with LOOKUP can be any open file;so you can use this function to perform a relational lookup, where it checks whether the contents of a field in one file match the contents of a field in another file. If LOOKU>al^ string, or returns 0 if the substring is not contained within the string. SYNTAX INSTR[nexpr, ]strexpr, substrexpr) COMMENTS This function returns the position in strexpr of the first occurrence of substrexpr. If nexpr is used, INSTR searches for the first occurrence of substrexpr from position nexpr onwards. If the substring is not found, the value returned is zero. nexpr must be positive and less than the length of strexpr. INSTR is case sensitive, i.e., "abc" and "ABC" are diff?0cerent. EXAMPLES 1 x%=INSTR(x$, y$) 2 x%=INSTR(textfield, "Mr") 3 x%=INSTR(x$, "Mr"):y%=INSTR(x% + 1, x$, "Mr") 4 ? LEFT$(textfield, INSTR(textfield, " ") -1) 5 x$=LCASE$(textfield):x%=INSTR(x$, "abc") IF x% > 0 THEN ? LEFT$(textfield, x% -1) NOTES The second example simply locates the title 'Mr.'. Example 3 locates any 'Mr and Mrs' or 'Mr & Mrs'. Example 4 displays the first word in textfield. Example 5 finds any occurrence of the sequence "abc" in textfield regardless of what cas@ Fe the letters are in. INT PURPOSE Removes the part of a number to the right of the decimal point, turning it into a whole number. SYNTAX INT(nexpr) COMMENTS INT does not round a decimal number up or down to the nearest whole number, but simply strips off the decimal part. Thus INT(123.00001) and INT(123.999999) give the same result -123.0. EXAMPLES 1 numfieldc=INT(numfielda) 2 numfieldc=INT(numfielda * (1 + numfield)/100 3 $x=INT(VAL(RIGHT$(textfield, 2))/3.33 4 $x=INT($y) 5 ? INAuT($x ^ Sy) KEY PURPOSE Displays the current set of function key definitions, or defines a new set. SYNTAX KEY keynum[, string] COMMENTS On the AMIGA and the Atari ST, 21 function keys are available:the keys F1 to F10, which can be used with SHIFT, and the HELP key(HELP and Shift HELP are the same). Their numbers are: F1 to F10 1-10 SHIFT(F1-F10) 11-20 HELP 0 string can be any set of Superbase commands which can be entered on one line(provided that they do not acceess a fieldB_ on the same line as an OPEN FILE). The command line in string is assigned to the key specified by keynum Using KEY without a following command string clears the key associated with keynum. If keynum and string and not used, KEY displays the current set of function key definitions. EXAMPLES 1 KEY 1 2 KEY 1, "OPEN FILE ~aaa~:BLANK:ENTER:STORE:? ~ Now ~;RECCOUNT(~aaa~);~Records~" 3 KEY 4 KEY 3, "Tel. (0428) 725400 [(04203) 5601 evenings]" Example 1 clears key F1. Example 2 sets F3 tC,o enter a record into a file and report how many records there now are. Note the use of the tilde character to insert quotation marks. Since the entire string must be enclosed in quotation marks, you cannot use quotation marks within the string. LABELS PURPOSE Prints records as labels. SYNTAX LABELS [FILE sbfname] [WHERE conditions] [USING labelparams] COMMENTS This command is the program equivalent of selecting the Labels option from the PROCESS menu. It allows you print out recoD㥚rds as labels and to define their format. WHERE conditions limits the records for which labels are printed and acts as a filter. USING allows you to specify the shape and content of the labels to be printed. labelparams is a series of parameters separated by commas, relating to the label definition dialog. Reading down the left column of the dialog and then down the right column, they are as follows: line 1 fields/line line 2 fields/line line 3 fields/line line 4 fields/line linEk%e 5 fields/line line 6 fields/line line 7 fields/line line 8 fields/line line 9 fields/line line 10 fields/line First label margin label text width Second label margin First line next label Copies per label Labels per line Note: All 16 parameters must be used. If USING is not specified, LABELS takes the default parameters as shown in the label definition dialog(see Volume 1, Chapter 5). EXAMPLES 1 LABELS WHERE CITY="London" USING 1, 0, 2, 1, 1, 1, 1, 1, 0, 0, 1, 35, 40, F212, 1, 2 2 LABELS "Address" WHERE Lastname LIKE "[a-c}*" LCASE$ PURPOSE Converts a text string to lowercase. SYNTAX LCASE$(strexpr) COMMENTS This function changes upper case letters to lower case;no other characters, including those already in lowercase, are affected. The complementary function of LCASE$ is UCASE$. EXAMPLES 1 textfieldc=LCASE$(textfielda) 2 x$=LCASE$(y$) 3 x$=LCASE$("ABCDEF") 4 ? LCASE$(x$) LEFT$ PURPOSE Extracts one or more characters from a string, starting aG:xRt the left of the string. SYNTAX LEFT$(strexpr, nexpr) 5-78 COMMENTS LEFT$ returns the leftmost nexpr characters of the string strexpr. Thus, if strexpr is DICTIONARY and expr is 7: LEFT$("DIRECTIONARY", 7) returns DICTION. EXAMPLES 1 textfieldc=LEFT$(textfielda, 10) 2 textfieldc=UCASE$(LEFT$(textfielda, 1)) + MID$(testfielda, 2) 3 LEFT$(textfielda, 1)LIKE [a-c] 4 x$=LEFT$("ABCD", 2) 5 x$=LEFT$(x$, n$) 6 ? LEFT$(x$, 10) 7 strip:IF LEFT$(x$, 1)=" " THEN x$=MID$(x$, 2):GOTO sHyBtrip NOTES Example 7 is a one line program to strip leading spaces from x$(see LTRIM$). LEN PURPOSE Returns the number of characters in a text string or text field. SYNTAX LEN(strexpr) COMMENTS LEN counts the number of characters in a string, including spaces and non- printing characters. EXAMPLES 1 numfieldc=LEN(textfielda) 2 textfieldc=RIGHT$(textfielda, LEN(testfieldb) 3 LEN(textfielda) > 25 AND LEN(textfielda) 50 4 x$=LEN("A") 5 x$=LEN(x$) 6 x$=LEN(MID$(extfield, 3)) 7 ? LEN3U reater than" ELSE ? "Less than or equal" END IF END IF marks the end of the IF THEN ELSE statement. It should always be used when ELSE is placed on a separate line. If it is not used, DML assumes that all the separate line statements in the rest of the program belong to ELSE. END IF is also used when the ELSE option has not been selected, but the statements following THEN are placed on separate lines. For example: IF b$="Yes" THEN n%=1:z%=2:GOSUB label can be written: IF b$="Yes4}" THEN n%=1 z%=2 GOSUB label END IF ..... ..... Here too, END IF is used to tell DML where the statements belonging to THEN finish. exp does not always need to contain an operator. Remember that DML assigns a value of 0 to false expressions and -1 to true expressions. With IF THEN commands, though, DML treats a numeric expression with any value other than zero as true. And it treats a numeric expression with any value other than -1 as false. IF EOF("") THEN ..... implies: IF 56EOF("") <> 0 THEN... Likewise, IF NOT EOF("") THEN... implies IF EOF("") <> -1 THEN EXAMPLES 1 IF exp THEN x%=x% + 1 IF exp THEN x$="TRUE" IF exp THEN x%=x% + 1:x$="TRUE" IF exp THEN labltrue IF exp THEN GOTO labltrue 2 IF exp THEN x$="TRUE" ELSE x$="FALSE" IF exp THEN x$="TRUE":x% + 1 ELSE x$="FALSE" IF exp THEN labltrue ELSE lablfalse IF exp THEN GOTO labltrue ELSE GOTO lablfalse 3 IF b$=MID$(a$, 3, 1)THEN x%=1 GOSUB label1 ELSE x%=2 GOSUB label2 END IF 4 IF a$="Y"69pa or a$="y" THEN ? "Yes" ELSE IF a$="N" or a$'"n" THEN ? "No" ELSE ? "Other" END IF NOTES Example 4 shows how IF THEN statements can be nested. In this case, the second IF THEN statement is only executed if the condition in the first statement gives a false result. IMPORT PURPOSE Imports an external text file into an open file. SYNTAX IMPORT filename [TO FILEsbname] [WHERE conditions] [USING parameters] COMMENTS This command imports the ASCII text file specified by filename7(L= into the current file or into the file specified by sbfname. It works in the same way the IMPORT option in the PROCESS menu. IFTOFILE sbfname is not specified, the text file is imported into the current open file. If it is specified, sbfname must be an open file. WHERE conditions allows you to add a filter to the command.conditions is set up in the same way as the command string in the Filter dialog. USING parameters can be used to change the default parameters specified by SET-OPTI8rjONS. For a description of USING and the parameters it takes, see EXPORT. EXAMPLES 1 IMPORT "aaa.exp" 2 IMPORT "aaa.exp" TO FILE "aaa" WHERE(datefield) > DAYS("29 Apr 87") INDEX PURPOSE Selects the index to be used with the current file. SYNTAX INDEX index COMMENTS Superbase automatically selects the first index as default when you open a file or when you make an open file the current file. With the INDEX command, you can select another of the file's indexes. index is the name of 9ca field in the current file. An index for this field must already exist. Because DML parses entire lines before executing them, you cannot place an Index statement-or any other statement that refers to a field-on the same line as the OPEN FILE statement. When the DML interpreter reaches the INDEX statement, the file will not yet be open, and the field name, therefore, will not be recognized. As a result, a line like OPEN FILE "aaa":INDEX anum will produce an error message such as "C:>ean't do this" or "Can't find this field". EXAMPLES 1 OPEN FILE "aaa" INDEX anum 2 OPEN FILE "aaa":OPEN FILE "bbb" ..... ..... FILE "aaa":INDEX anum ..... FILE "bbb":INDEX datea INPUT PURPOSE Reads characters or a line from a text file on disk into a variable or a field. SYNTAX INPUT[&nexp[, ]/LINE]var/field COMMENTS This statement inputs data from a text file on disk or from another computer using the COMMS link. It assumes that an input channel has been opened for example,;Ń by OPEN FOR INPUT. With the LINE option, INPUT reads data from the input channel until it finds a line feed character(ASCII 10)and inputs the data into var or field. If the line feed character has been used as the record separator, INPUT LINE reads a record at a time. var can be a string or numeric variable and field can be a text, numeric or date field. However, in each case the type of variable or field used should match the type of data expected. Thus if you attempt to input alph<ܓWabetic characters into a numeric variable they will be valued at zero, while inputting them into a date field will produce an invalid date error. &nexp specifies the number of characters that the command takes from the text file. The comma after nexp is entirely optional. When nexp is zero or when & nexp is not used, the command reads characters from the text file until it finds a comma (ASCII 44) or a line feed character (ASCII 10). This option allows INPUT to be used instead of IMP=ORT to read in data from an exported file. To detect the end of a text file, use EOF("*"). EXAMPLES 1 INPUT LINE a$ 2 INPUT &6a$(or INPUT &6, a$) 3 INPUT a% 4 FILE "aaa":EXPORT TO "aaa.exp" OPEN "aaa.exp" FOR INPUT FOR i%=1 TO RECCOUNT("aaa") BLANK INPUT field1 INPUT field2 ........ INPUT lastfield STORE NEXT i%:CLOSE INPUT Example 4 demonstrates how INPUT can be used as an alternative to IMPORT. INSTR PURPOSE Returns the starting character position of a substring within a(r7 GOTO, it remembers where it branched from. When the program meets a RETURN statement, it jumps back to the line following the GOSUB statement. GOSUB is used to call a subroutine;that is, one or more program lines which perform a specific task and can be called from different places within the main program. Subroutines are useful if the same task needs to be performed at several different stages in the program. Instead of repeating a group of lines, it saves space and is more conveni)ent to put them in a subroutine. In DML, a subroutine is defined by a label at the beginning and a RETURN statement at the end. EXAMPLES 1 GOSUB sub1 2 x$=Address(1):GOSUB label1 x$=Address(2):GOSUB label1 ..... ..... ..... label1: ? "This subroutine outputs x$ to the printer" PRINT x$ DISPLAY; RETURN GOTO PURPOSE Transfers control to another part of the program. SYNTAX GOTO label COMMENTS This statement makes the program jump to the label specified, instead of continuin*ng to the next line in the program. It alters the order in which DML executes a program. This kind of control transfer is called an uncoditional jump. For conditional jumps, see the ON GOTO and the IF THEN ELSE statement. EXAMPLES 1 GOTO fred .... .... fred:.... GROUP PURPOSE Specifies the field on which a report is grouped and the field(s) for which subtotal reporting is required. SYNTAX GROUP fieldname [, fieldname] [.....] COMMENTS Superbase insets a GROUP statement in a rep+Aѩort program when you specify fields with the GROUP option on the Forms Editor's Report menu. GROUP has two main functions. First, it defines the field on which Superbase groups data in a report. Second, it specifies any other fields for which subtotals-or other reporting features such as MAX and MEAN-are required. If you wish to specify several levels of grouping, you should enter a separate GROUP statement for each level. GROUP can also be used in an AFTER GROUP section as a referen,"ce for the field which defines the group. Since the group has already changed, entering the field name would output the data for the next group;GROUP allows you to retrieve the data for the previous group-i.e., the group for which the AFTER GROUP section provides reporting information such as subtotals and record counts. EXAMPLES 1 GROUP City, amount 'City' is field on which the report is grouped, 'amount' is a field for which subtotals are required-the AFTER GROUP section may inclu- 9de the statement: SUM amount 2 GROUP Country GROUP City, amount In this example, record data is grouped at two levels:City within Country. HEADING PURPOSE Sets the Report heading for each page. SYNTAX HEADING COMMENTS Superbase generates a HEADING statement when you specify a report heading using the Heading option on the Forms Editor's Report menu. This statement marks the start of a HEADING section and is followed by one or more statements which define the heading for a report.0 y% THEN ? "Greater than" ELSE ? "Less than or equal" can be written as: IF x% > y% THEN ? "GƳerbase would show this result as:0.33 + 0.33=0.67. This is not incorrect, especially if you are a scientist or engineer, but it is not very helpful if you are using a Query to produce an invoice. FIX(1/3, 2) stores the fraction 1/3 as 0.330000000000, so FIX(1/3, 2) + FIX(1/3, 2) gives result as 0.66. Note that numeric fields with two decimal places are automatically FIXed. EXAMPLES 1 numfieldc=FIX(numfielda, 3) 2 numfieldc=FIX(datefielda-datefieldb, 0) 3 numfieldc > FIX(numfielda * @1numfieldb, 4) 4 $x=FIX($y, 2) 5 $x=FIX($y * numfielda * (datefielda-datefieldb), 2) 6 $x=FIX(VAL (RIGHT$(textfielda, 5)), 2) 7 ? FIX($x) FOOTING PURPOSE Sets the Report footing for every page. SYNTAX FOOTING nexpr COMMENTS FOOTING is followed by a number of ? statements specifying the information that will appear at the bottom of every page in a report. These must be followed by an END FOOTING statement. nexpr specifies the number of lines required for the report footing. Make surL%e that the number of lines output by your ? statements is the same as the number specified by nexpr. EXAMPLES 1 FOOTING 1 ? "Page";PG END FOOTING NOTES This examples uses the system variable PG to print the page number. See the entry HEADING for more details. FOR TO NEXT PURPOSE Repeats a series of program statements a specified number of times. SYNTAX FOR var=nexp1 TO nexp2[STEP nexp3]statements NEXT[var][, var]... COMMENTS This command sets up a program loop in which the sta TXtements between FOR TO and NEXT are executed a given number of times, using var as a counter. nexp1 sets the initial value of the counter and nexp2 sets the final value. If STEP nexp3 is not included, the counter is increased by one every time the program executes the statements inside the loop;that is, every time it passes from FOR to NEXT. When the counter reaches the value set in nexp3, the program moves on to the next statement after NEXT. When STEP nexp3 is included, the program!1M increases the counter by the amount specified in nexp3. var must be a numeric variable;nexp1, nexp2, nexp3 can be any numeric expression, including other numeric variables. You can use FOR TO NEXT on the same line with multiple statements, or on multiple lines. But if there is more than one statement between FOR and NEXT, it is advisable to put each on a separate line. If a number of FOR NEXT loops end at the same point, you can use a single NEXT statement for all of them. NEXT n%,"sh y%, z% is the same as NEXT n% NEXT y% NEXT z% EXAMPLES 1 FOR i%=1 to 10:? i%, i% ^ 2:NEXT 2 weekcount%=1 FOR i%=DAYS("01/01/87")TO DAYS("31/03/87")STEP 7 FOR j%=0 to 6:k%=i% + j% ? DAY(k%);" ";MONTH$(k%), DAY$(k%) NEXT j% weekcount%=weekcount% + 1 NEXT i% Example 2 prints out the weekdays for the first quarter of 1987 in weeks. FORM PURPOSE Specifies which part of a Form is displayed in the database window. SYNTAX FORM page[, row, col] COMMENTS This command is used to #Ƣeselect a particular page within a multi-page form or to bring part of a page that is outside the database window into view. page must be a numeric expression specifying the page number.row and col must be numeric expressions which give a row and column position within the page. Form will then move the page so that the specified position is at the top left-hand corner of the database window. EXAMPLES 1 FORM 2 Selects page 2 in the Form currently displayed. 2 FORM 1, 24, 1 Makes row 2$+4, column 1 of page 1 appear at the top left-hand corner of the database window. FOUND PURPOSE Detects whether a key lookup has been successful or not. SYNTAX FOUND(strexpr) COMMENTS After you have issued a SELECT KEY command to search for a particular record, FOUND will tell you whether the record has been found. If the search is successful, FOUND returns a value of -1(true);if the search is unsuccessful, FOUND returns 0. strexpr should contain the file name of '.sbf' file whic%ȏ: Ph has already been opened. However, you can use the empty string-as in FOUND("")-to refer to the current file. FOUND is only set and cleared by the SELECT KEY and LOOKUP commands. EXAMPLES 1 SELECT KEY "London" ? FOUND("") 2 a$="Clients":SELECT KEY "Smith" FILE a$ IF FOUND(a$)THEN ? "Smith found" ELSE ? "No Smiths" FREE PURPOSE Returns the amount of free memory. SYNTAX FREE(nexpr) COMMENTS This function returns a number showing how much free memory there is. On the Amiga, nexpr&D determines whether the figure refers to chip, contiguous or fast memory. 0=total free memory 2=chip memory 4=fast memory Adding 2^17 to one of these parameters gives the largest block of memory in its respective memory area. So, 2^17 + 2 gives the maximum area of contiguous chip memory. EXAMPLES 1 ? FREE(0) 2 x%=FREE(i%) GET PURPOSE Gets a character from the keyboard. SYNTAX GET strvar/field COMMENTS This command reads a character from the keyboard into a string variable or a t'LVext field. It does not wait for a keystroke, and if no key is pressed it returns an empty string. If you want GET to wait until a key is pressed, you need to place it in a loop, as in: LABEL:GET A$:IF A$=: "" GOTO LABEL Alternatively, use the WAIT command. GOSUB PURPOSE Calls a procedure or subroutine. SYNTAX GOSUB label COMMENTS Like the GOTO statement, GOSUB transfers control to a different part of the program: it causes the program to branch to the label specified. But unlikez&N function in conjunction with the control flow commands ON ERROR and RESUME, and the system variable ERRNO. EXAMPLES 1 ? ERR$(ERRNO) CLS:NUMBASE "z9999" FOR i%=1 to 130 ? "Error number";i%, " ";ERR$(i%) NEXT i% 3 x$=ERR$(14) Example 2 displays a list of error numbers with their associated error messages. ERRNO PURPOSE Returns the number of the last error that occurred. SYNTAX ERRNO COMMENTS ERRNO is used in conjunction with the error handling commands ON ERROR and RESUME andؗ with the function ERR$ which gives the error messge associated with an error number. EXAMPLES 1 x%=ERRNO 2 ? ERR$(ERRNO) NOTES Example 2 displays the error message associated with the last error which occurred. EXECUTE PURPOSE Executes a text string as though it were a command. SYNTAX EXECUTE string COMMENTS Any set of commands, statements, and functions that can be carried out as a single program line can be placed in a string and then executed. EXAMPLES 1 EXECUTE "SELECT CUR}-RENT:VIEW:WAIT FOR 5" y$="REQUEST ~ OK/CANCEL Requestor ~, ~~, 1" EXECUTE y$ NOTES Example 2 suggests a way of using this function to set up a user-defined dialog which can be called from different points in a program. Note the use of the tilde character to embed quotation marks in a string. EXP PURPOSE Returns the value of the mathematical constant 'e' raised to a power. SYNTAX EXP(nexpr) COMMENTS EXP gives the value of 'e' to the power of expr. nexpr has a maximum absolute vaΘ"lue of 709.7827128934, and a range of -709.7827128934 to + 709.7827128934. This in turn gives the largest number that Superbase can hold - 1.797693134862 times 10 to the power 308. EXAMPLES 1 numfieldc=EXP(numfielda) 2 numfieldc=EXP(datefielda-datefield) 3 numfieldc > EXP(numfielda & numfield) 4 x%=EXP(y%) 5 x%=EXP(y% * numfielda * (datefielda-datefield)) 6 x%=EXP (VAL(RIGHT$(textfielda, 5))) 7 ? EXP(x%) EXPORT PURPOSE Exports data to an external text file from the current file. SGkdfYNTAX EXPORT[FILE sbfname[INDEXindex][TO]filename [WHEREconditions] [USINGparams] COMMENTS This command is the program equivalent of the EXPORT option in the PROCESS menu. It creats a text file on disk using the data from an sbf file. The only compulsory parameter is filename, which gives the name of the text file. If FILE sbfname is not specified, EXPORT takes data from the current open file. Similarly, unless INDEX indexname is given, the command exports records in the order of thv; e current index. WHERE conditions allows you to creates a filter to determine which records are copied to the text file.conditions is set up in the same way as the command string in the Filter requestor. USING parameters allows you to change the Export/Import parameters as specified by SET-OPTIONS. These determine what characters Superbase uses to separate fields and records in the text file. You can also specify whether text fields are exported with or without quotation marks around2&ƞ them. USING takes three parameters, each enclosed by quotation marks and separated by commas. For example: USING "&", "$$", "0" The first two parameters specify the field separation characters and the record separation characters. As in SET-OPTIONS, you can define a separator using one character or two characters. The third parameter must be eith 0 or 1;0 for no quotation marks, 1 to include quotation marks. If you want to use a non-printing character-the carriage return characterq~S or the line feed character, for example-as a separator, you need to enter its ASCII code with the CHR$ function. For example: USING "&", CHR$(13) + CHR$(10), "0" defines the record separator as the carriage return character followed by the line feed character. EXAMPLES 1 EXPORT "aaa.exp" 2 EXPORT FILE "aaa" INDEX fielda TO "aaa.exp" WHERE (datefield) < DAYS ("29 Apr 87") 3 EXPORT FILE "aaa" TO "aaa.exp" USING "&", "##", "1" FCASE$ PURPOSE Converts the first letter of a string toӘ"S upper case, leaving the rest of the string in lower case. SYNTAX FCASE$(strexpr) COMMENTS FCASE$ takes a word and makes the first letter a capital letter. Associated functions are LCASE$ and UCASE$. EXAMPLES 1 textfielda=FCASE$(textfielda) 2 x$=FCASE$(y$) 3 x$=FCASE$("ABCDEF") 4 ? FCASE$(x$) FILE PURPOSE Marks an open file the current file. SYNTAX FILE sbfnam COMMENTS When several files have been opened, you can use FILE to make one of them the current file. EXAMPLES 1 FILE "E~aaa" 2 x$="bbb":FILE x$ 3 a$="address":b$="bank" OPEN FILE a$:SELECT FIRST OPEN FILE b$:SELECT FIRST PAGING OFF f$=b$ lab1:VIEW:WAIT x$ IF EOF(a$) OR EOF(b$) THEN END IF f$=b$ THEN f$=a$ ELSE f$=b$ FILE f$:SELECT NEXT GOTO lab1 NOTES The third example shows how you can display records from two(or more)files at the same time. It displays one record after another, alternating between two files until it reaches the end of the shorter file. FIX PURPOSE Sets the accuracy with wjhich DML stores a number and performs calculations on it. SYNTAX FIX(nexpr1, nexpr2) COMMENTS FIX allows you to limit a numeric expression to a specified number of decimal places. nexpr2 is the number of decimal places that nexpr1 is evaluated at. Superbase stores numeric variables at 13 figure accuracy, so the fraction 1/3 is stored as 0.3333333333333. Adding two of these together gives 0.6666666666667. If you set the numeric format to two decimal places in a file definition, SupW=Mmust be placed at the end of the section. END REPORT PURPOSE Marks the end of an AFTER REPORT or BEFORE REPORT section. SYNTAX END REPORT COMMENTS END REPORT must be placed at the end of the set of statements that constitute an AFTER REPORT or BEFORE REPORT section in a Report program. Superbase automatically generates END REPORT statements at the end of these sections when you create a report using the Forms Editor's reporting facility. ENTER PURPOSE Allows the user to enter dat4 fa in the current file or to edit the data in a record. SYNTAX ENTER[field]/[nexpr][, nexpr2] COMMENTS ENTER works on the current file. Used on its own, it is equivalent to the Record menu option Edit. It displays the current record and allows you to edit it field by field, starting with the first field. In effect, ENTER temporarily hands over control from DML to Superbase itself. When you press Return after the last field in a record or when you move the cursor down to the bottom o ˜THf the record, control is transferred back to DML. If field or nexpr is used, Superbase restricts the editing to just one field. You can supply either a field name or a field number where the number corresponds to the field's position in the field list;i.e., if there are six fields in a record, the number for the first field is 1 and the number for the last field in 6. When you enter the record, Superbase makes the editing cursor active in the field specified and transfers control bac ˄PJk to DML when you press Return. With the second numeric parameter, nexpr2, you can specify that a range of fields is available for editing, field or nexpr1 gives the starting point, nexpr2 gives the number of fields that can be edited - from the first field after field on nexpr1 onwards. For example, if the command was: ENTER 3, 5 you would be able to edit fields 3 to 8. You may want to specify a starting point without restricting the yourself to a given number of fields. To do this M%, enter 0 as the second numeric parameter; e.g.: ENTER Lastname, 3 would make the cursor active in Lastname and would allow you to edit Lastname and the next three fields. ENTER works with the current view mode or Form. Note that if you have set the Field Order on the Form, Superbase will take the first record(in the order you have specified)as the starting point for data entry and editing. When used in conjunction with BLANK, ENTER is wquivalent to the Record menu option New, and a Fllows you to enter data into a new record. This command does not save a record;to save a new or edited record use the command STORE. EXAMPLES 1 OPEN FILE "aaa" ASK "Record to edit";x$ SELECT KEY x$ ENTER STORE 2 OPEN FILE "aaa" BLANK ENTER STORE 3 ENTER Lastname 4 ENTER 4, 2 Example 1 shows how to enter an existing record in order to edit it. Example 2 creates a new record. Example 3 restricts editing to the Lastname field. In the last example, fields 4 to 6 can be edited.  lEOF PURPOSE Detects the end of a database file when reading through it under program control. SYNTAX EOF(strexpr) COMMENTS strexpr should contain the name of a currently open file. If DML reaches the end of a file, EOF is set to -1 (true); otherwise it is set to 0(false). EOF is only used under program control. Supplying the empty string as an argument-EOF("")-allows you to refer to the current file without giving the file name. For example, to define a function key which was equiv/=alent to the Fast Forward button, you would enter: WHILE NOT EOF(""):SELECT NEXT:VIEW:WEND EOF can also be used to detect the end of a text file. For this purpose it takes the string "*" as an argument, and not the file name;that is, EOF("*") is set to 'true' when the end of a text file is found. EOF is only set and unset by the SELECT record selection commands exculding SELECT KEY(which only set the FOUND function). In other words it is possible to search through a file with a filtIb3er, and set EOF to 'true' by not finding a record, and then to use the 'key-lookup'(SELECT KEY)to look for a record outside the filter. If you do this, FOUND will reflect the success of the 'key-lookup' operation, while EOF will show that you are at the end of the file. EXAMPLES 1 ? EOF(x$) OPEN FILE "aaa";SELECT FIRST: IF EOF("aaa")THEN GOTO fempty loop1:SELECT NEXT:IF EOF("aaa")THEN GOTO fend .... GOTO loop1 fempty: ? "FILE 'aaa' has no records";END fend: ? "Process completߒmed";END ERASE PURPOSE Clears a variable assignment from memory. SYNTAX ERASE varlist COMMENTS This command clears a variable or a list of variables from memory. If several variables are to be cleared, varlist should contain a list of variable names separated by commas. If you specify the name of an array, ERASE clears all the elements in the array (it also clears any other variable with the same name as the array). EXAMPLES 1 ERASE x$ 2 ERASE a%, b%, c%, d%, a$, b$ 3 a$="Fred" a_%=2.35 MEMORY ERASE a$ MEMORY NOTES The most obvious use for this command is to tidy up the variables in memory before CHAINing another program or before OUTPUT TO "aaa" MEMORY. You could then use SET "aaa" to pass some values to variables in the new program. ERR$ PURPOSE Returns the text message associated with an error number. SYNTAX ERR$(nexpr) COMMENTS This function returns a text string containing the error message associated with the error number given in nexpr. Use this