From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- dviware/ln03/rmcs/00readme.txt | 206 + dviware/ln03/rmcs/changebar.sty | 667 ++ dviware/ln03/rmcs/cli.for | 495 ++ dviware/ln03/rmcs/descrip.mms | 117 + dviware/ln03/rmcs/dviln03.hlp | 351 ++ dviware/ln03/rmcs/dviln03.ln3_publish | 5770 ++++++++++++++++++ dviware/ln03/rmcs/dviln03.tex_publish | 2480 ++++++++ dviware/ln03/rmcs/dvitoln03.ch | 1143 ++++ dviware/ln03/rmcs/dvitoln03.cld | 198 + dviware/ln03/rmcs/dvitoln03.web | 10433 ++++++++++++++++++++++++++++++++ dviware/ln03/rmcs/ginotosix.cld | 31 + dviware/ln03/rmcs/ginotosix.for | 159 + dviware/ln03/rmcs/ginotosix.hlp | 173 + dviware/ln03/rmcs/graphics.sty | 27 + dviware/ln03/rmcs/local.mf | 187 + dviware/ln03/rmcs/local_guides.bib | 306 + dviware/ln03/rmcs/openclose.six | 103 + dviware/ln03/rmcs/openclose.small | 103 + dviware/ln03/rmcs/test.pic | 252 + dviware/ln03/rmcs/test.six | 129 + dviware/ln03/rmcs/test.tex | 12 + dviware/ln03/rmcs/texprint.com | 144 + 22 files changed, 23486 insertions(+) create mode 100644 dviware/ln03/rmcs/00readme.txt create mode 100644 dviware/ln03/rmcs/changebar.sty create mode 100644 dviware/ln03/rmcs/cli.for create mode 100644 dviware/ln03/rmcs/descrip.mms create mode 100644 dviware/ln03/rmcs/dviln03.hlp create mode 100644 dviware/ln03/rmcs/dviln03.ln3_publish create mode 100644 dviware/ln03/rmcs/dviln03.tex_publish create mode 100644 dviware/ln03/rmcs/dvitoln03.ch create mode 100644 dviware/ln03/rmcs/dvitoln03.cld create mode 100644 dviware/ln03/rmcs/dvitoln03.web create mode 100644 dviware/ln03/rmcs/ginotosix.cld create mode 100644 dviware/ln03/rmcs/ginotosix.for create mode 100644 dviware/ln03/rmcs/ginotosix.hlp create mode 100644 dviware/ln03/rmcs/graphics.sty create mode 100644 dviware/ln03/rmcs/local.mf create mode 100644 dviware/ln03/rmcs/local_guides.bib create mode 100644 dviware/ln03/rmcs/openclose.six create mode 100644 dviware/ln03/rmcs/openclose.small create mode 100644 dviware/ln03/rmcs/test.pic create mode 100644 dviware/ln03/rmcs/test.six create mode 100644 dviware/ln03/rmcs/test.tex create mode 100644 dviware/ln03/rmcs/texprint.com (limited to 'dviware/ln03/rmcs') diff --git a/dviware/ln03/rmcs/00readme.txt b/dviware/ln03/rmcs/00readme.txt new file mode 100644 index 0000000000..3f26ebec3e --- /dev/null +++ b/dviware/ln03/rmcs/00readme.txt @@ -0,0 +1,206 @@ +DVItoLN03 Version 4.1 1st October 1991 +========= =========== ================ + +Changes in the V4.1 release are the introduction of two new qualifiers: + /[NO]VERBOSE - the default for this may be set up at a site as either state; + with /NOVERBOSE, most terminal output is suppressed, apart + from the name of the input file, the total bytes of down- + loaded fonts, and progress indication as each page is output. + /PAPER_SIZE - the default for this should reflect the setting of the paper + size selection switch on the rear of the machine. The program + requires knowledge of the physical paper size to handle pages + which mix landscape and portrait orientation material. + +This distribution contains the following files: + +00README.TXT - the file you are reading + +Files for building the program: +DVITOLN03.CH - a change file for DVItoLN03, for revising V4.0 of the + Web to V4.1 +DVITOLN03.CLD - VMS command language definition for the DVILN03 command +DVITOLN03.EXE - a ``load-and-go'' executable, for VMS V5.4-2 +DVITOLN03.OBJ - object code, for linking uder different versions of VMS +DVITOLN03.WEB - the WEB source of DVItoLN03 (V4.0) + +Files for generating the documentation: +CHANGEBAR.STY - for those without this: style option for changes +DVILN03.HLP - on-line (DCL) help for DVItoLN03 +DVILN03.LN3_PUBLISH - file ready to be COPYed to your LN03 +DVILN03.TEX_PUBLISH - the ``local guide'' for DVItoLN03 (in LaTeX) +LOCAL_GUIDES.BIB - a BibTeX database used at RMCS --- needs BibTeX V0.99c +GRAPHICS.STY - a local LaTeX style file for graphics inserts +OPENCLOSE.SIX - a Sixel dump of the screen of a terminal, scaled 2:1 +OPENCLOSE.SMALL - the same dump, but scaled 1:1 +TEXPRINT.COM - command procedure implementing the TEXPrint command +(Note that LOCAL.MF is no longer included; better collections of mode_defs have +been published, and are available from good archives everywhere.) + +DVILN03.HLP is a standard (DCL) help file, for inclusion in SYS$HELP:HELPLIB.HLB +or your local specialized help library. + +******************************************************************************** +* This bit is IMPORTANT: many of the reports that the author receives that * +* ``DVItoLN03 doesn't work properly'' are because the sites have not set up * +* the LN03 device correctly. The only place this is specified is in the user * +* manual, and if your printer isn't already set up correctly, it won't PRINT * +* unless you send it with PRINT/PASSALL. And even then, it won't come out * +* correctly if the DIPswitch on the printer is set to AutoWrap! * +******************************************************************************** +You should produce a copy of our local guide. If your LN03 is not spooled, then +simply COPY the file DVILN03.LN3_PUBLISH directly to YOUR LN03. Please note +that this file includes LOTS of eight-bit characters, so you may need to fetch +it again in binary mode if your FTP connection has stripped off the 8th bit. If +your LN03 is set up as a printer queue (as the local guide recommends), the +safest bet is to PRINT it /PASSALL until you've found out how to set up the +queue compatibly; one important caveat is that the terminal line MUST be set up +/NOWRAP (see the local guide). + +Everything is explained, I hope, in the local guide. As supplied, +DVILN03.TEX_PUBLISH assumes that you have a working copy of the previous version +(V3.1-1 or later) of DVItoLN03, but it does not use any of the special +facilities provided by this new release. + +If you are currently using a different driver, you will have to modify the line +at the start of DVILN03.TEX_PUBLISH that reads +> \let\iffulldoc=\iftrue %%% Change to \iffalse if you don't have DVItoLN03 +to say instead +> \let\iffulldoc=\iffalse %%% Change to \iffalse if you don't have DVItoLN03 +and then LaTeX it and pass through your existing driver. + +The guide should be edited to suit YOUR site; I have attempted to flag all +site-specific details in DVILN03.TEX with the string SYSDEP, on, or near to, the +relevant line(s). Ensure that you define the macros \sitename and \contact; all +queries at any site should be channelled through the latter individual, and if +he/she cannot resolve them, then I shall be delighted to (attempt to) help. + + +However, the real meat is in DVITOLN03.WEB; this is a WEB version of a DVI-to... +driver for the DEC LN03/LN03-Plus laser printers. This program has been revised +to V4.0 and is now capable or reading EITHER packed or expanded raster files, +virtual fonts, missing fonts (!), landscape/portrait orientation (mixed on one +page, even!). It also supports the DEClaser~2100 and~2200 (otherwise known as +the LN05 and LN06). + +Packed (.nnnPK) files are used in preference to .PXL files (if both are +available), and are sought in directory given by the /PK_FONT_DIRECTORY +qualifier; the .CLD file provided specifies this as TEX_PK:. PXL files are +sought in the directory given by the /PXL_FONT_DIRECTORY qualifier, and, at +RMCS, are kept in separate subdirectories of TEX_PXL_ROOT:, which is a concealed +device specified as the value for this qualifier. Details are given in the user +guide, including rearranging the allocation of font files to different directory +structures. The program no longer looks in TEX$FONTS: for .TFM files, but +instead in whatever is defined as the default for the /TFM_DIRECTORY qualifier; +this allows TeX administrators to abandon use of logical names with dollars in +them, as recommended by Digital. + +This implementation of DVItoLN03 has the following advantages over certain other +DVItoLN03 programs (these are not in order of importance; the new features are +at the end of the list): + + i) It IS written in WEB, as opposed to C and other such kludgy languages. + ii) It downloads to the LN03's font memory the rasters for only those + characters actually used in the document. As such, it does not run out + of font memory just because you've used a few characters from each of a + large number of different fonts. + iii) It HAS a capacity for SIMPLE graphics inclusions. These have to be in a + format the LN03 understands (DEC sixels), and are copied verbatim into + the output file generated. + iv) It works in landscape and portrait orientations. + v) It makes use of the ``proper'' VAX/VMS DCL interface for commands. + vi) It CAN print glyphs whose rasters are too large to be downloaded to the + LN03 as a font file (by performing a sixel graphics dump of the bitmap); + obviously this slows things down considerably! + vii) It CAN handle the invisible fonts used by SliTeX; each such character is + actually downloaded as a null character locator, ans is imaged by the + appropriate amount of whitespace. +viii) Either packed or unpacked font files (or both) may be provided in either + flat or rooted directory structures; if logical names are used to specify + these locations (as in the .CLD file provided), the files may be spread + over a number of different directories or volumes. + ix) The error messages are improved over earlier versions of the program, and + are now all indexed in the woven (WEAVEd?) WEB. They are also all listed + in the users' manual. + x) The program can now handle fonts with more then 128 characters, up to + TeX's limit of 256. Therefore, it can now process documents which use + Silvio Levy's Greek fonts. + xi) Retention of the log (.TYP) file may now be forced, suppressed, or allowed + to be determined by the success of the processing. + xii) Minor revisions and corrections have been made, in particular, it now + correctly understands the physical limitations to the imaging area. +xiii) Correct some log reports; report files read (except font files); provide + the /OUTPUT qualifier, to permit utilization of a scratch directory or + direct spooling to the output device. + xiv) Support for Flavio Rose \special commands, for drawing changebars, was + added by Robin Fairbairns at Laser Scan of Cambridge, UK. + xv) TeX Font Metrics (TFM files) are no longer sought in the hard-wired + directory TEX$FONTS:, but are instead controlled through the + /TFM_DIRECTORY qualifier. + xvi) Support for Virtual Fonts; the .VF files are sought in whatever is + specified as the value of the /VIRTUAL_DIRECTORY qualifier; users can + speed processing fractionally by specifying /NOVIRTUAL_DIRECTORY if it is + known that no virtual fonts are used in the document. If virtual fonts + are never used at your site, make this the default. +xvii) Fonts for which the program cannot find any rasters no longer cause the + processing to be abandoned; solid rules of appropriate dimensions are + subsituted for each missing glyph. +xviii)Landscape and portrait mode material may be mixed within a document, and + even on a single page, through \special{landscape} and \special{portrait}. + However, some suitable style option still needs to be written to make this + feature useful. + xix) Qualifiers /LEFT_MARGIN and /TOP_MARGIN now take a dimension (eg 1in) + rather than being required to be entered in pixels; the additional + called PX (pixel) has been added to TeX's normal set. + xx) Support for the new DEClaser 2100 and 2200 printers has been provided by + Karsten Nyblad of the Danish Telecomms Research Lab. Users can select the + paper source tray, separately for the first and subsequent sheets, and + also the printing mode (simplex or duplex). There is even a duplex mode + for the ordinary LN03 (no, it doesn't really print two-sided) which, by + interspersing blank sheets at appropriate points, produces a single-sided + master suitable for photocopying directly to a double-sided document. + xxi) Last, but definitely not least, the program has been speeded up, in both + the font mapping and the imaging phases, so that overall it runs + approximately 25% faster than V3.1-4. + + +The program assumes that the LN03 has sufficient font memory --- for most +meaningful documents you will need at least one RAM cartidge (part number +LN03X-CR); the program WILL work with just the RAM in the basic printer, but you +will probably have to restrict yourself to printing documents 3--4 pages at a +time: very messy! Not having one personally, I don't know what memory +requirements apply to the new DEClaser printers. + +Known deficiencies: none (I hope). + +Possible future work: + Make the program accept binary files (DVI, TFM and fonts) that are not + in the default organization used by TeXware under VMS (512-byte fixed- + length records). This would make importing such files from other + operating systems, such as Unix or MS-DOS, easier, since at present such + files have to be padded out to some multiple of 512 bytes, and moreover + with some appropriate characters, which differs from file to file. + + Any other suggestions??? + + +Contact +======= +If anyone is experiencing difficulty in installing DVItoLN03, they are welcome +to contact the author --- + + B Hamilton Kelly + Royal Military College of Science + Shrivenham + SWINDON + UK SN6 8LA + +Swindon (++44 793) 785252 [Direct line] + +or via JANET: tex@uk.ac.cranfield.rmcs + INTERNET: tex%uk.ac.cranfield.rmcs@nsfnet-relay.ac.uk + Bitnet: tex@rmcs.cranfield.ac.uk + + + Good Luck! + + Brian HAMILTON KELLY diff --git a/dviware/ln03/rmcs/changebar.sty b/dviware/ln03/rmcs/changebar.sty new file mode 100644 index 0000000000..8a4b228b2a --- /dev/null +++ b/dviware/ln03/rmcs/changebar.sty @@ -0,0 +1,667 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% CHANGEBAR STYLE +% +% +% Written by: +% Michael Fine +% Distributed Systems Architecture. +% October, 1986. +% +% +% +% USAGE: +% +% \cbstart[dimension] +% \cbend +% All material between the two macros is barred. Nested +% changebars are allowed. The optional parameter specifies the +% width of the bar. If no width is specified, the current value +% of the parameter \changebarwidth is used. Note that \cbstart +% and \cbend can be used anywhere but must be correctly nested +% with floats and footnotes. That is, you cannot have one end of +% the bar inside a floating insertion and the other outside, but +% that would be a meaningless thing to do anyhow. +% +% \cbdelete[dimension] +% A square rule is put on the page at the position of the +% changebars. This is useful fo indicating deleted text. +% +% \setlength{\changebarwidth}{dimension} +% \setlength{\deletebarwidth}{dimention} +% Sets the default width of the bar and of the size of the +% delete rule. +% +% \reversechangebars +% Causes bars to appear on opposite side of page from which they +% have been appearing on. Cannot be used while a bar is in +% progress. +% +% \setlength{\changebarsep}{dimension} +% Sets the separation between the bar and the left margin of the +% text. Does not take effect until you call \reversechangebars +% except when used in the preamble. +% +% \nochangebars +% Disables the changebar commands. +% +% IMPORTANT NOTE: Just as with cross references and labels, you +% usually need to process the document twice (and sometimes three +% times) to ensure that the changebars come out correctly. However, a +% warning will be given if another pass is required. +% +% +% PARAMETERS: +% +% \changebarwidth +% A LaTeX length parameter that gives the bar width. It can be +% changed with the \setlength command. Changing its value affects +% all subsequent changebars subject to the scoping rules of +% \setlength. +% +% \deletebarwidth +% Ditto for the size of the square delete rule. +% +% \changebarsep +% A LaTeX length parameter that gives the separation of the bar +% from the left margin of the text. It can be set with the +% \setlength command. +% +% +% +% FEATURES: +% +% Changebars may be nested within each other. Each level of +% nesting can be given a different thickness bar. +% +% Changebars may be nested in other environments including floats +% and footnotes. +% +% Changebars are applied to all the material within the ``barred'' +% environment, including floating bodies regardless of where the +% floats float to. An exeception to this is margin floats. +% +% Changebars may cross page boundaries. +% +% +% DEFICIENCIES AND BUGS: +% +% The macros blindly use specials points \cb@minpoint through +% \cb@maxpoint. If this conflicts with another set of macros, the +% results will be unpredictable. (What is really needed is a +% \newspecialpoint, analogous to \newcount etc.) +% +% There is a limit of (\cb@maxpoint-\cb@minpoint+1)/4 bars per +% page (four special points per bar). Using more than this number +% yields unpredictable results (but that could be called a feature +% for a page with so many bars). This limitation could be +% increased if desired +% +% Internal macro names are all of the form \cb@xxxx. No checking +% for conflicts with other macros is done. +% +% This implementation has not been designed for two column +% printing. +% +% The algorithms may fail if a floating insertion is split over +% multiple pages. In LaTeX floats are not split but footnotes may +% be. The simplest fix to this is to prevent footnotes from being +% split but this may make TeX very unhappy. +% +% The \cbend normally gets "attached" to the token after it rather +% than the one before it. This may lead to a longer bar than +% intended. For example, consider the sequence `word1 \cbend +% word2'. If there is a line break between `word1' and `word2' +% the bar will incorrectly be extended an extra line. This +% particular case can be fixed with the incantation `word1\cbend{} +% word2'. +% +% +% BASIC ALGORITHM +% +% The changebars are implemented using the \specials of the DVI to +% LN3 translator. In essence, the start of changebar defines a +% \special point in the margin at the current vertical position on +% the page. The end of a changebar defines another point and then +% joins the two using the "connect" \special. +% +% This works fine as long as the two points being connected lie on +% the same page. However, if they don't, the bar must be +% artificially terminated at the page break and restarted at the +% top of the next page. The only way to do this (that I can think +% of) is to modify the output routine so that it checks if any bar +% is in progress when it ships out a page and, if so, adds the +% necessary artificial end and begin. +% +% The obvious way to indicate to the output routine that a bar is +% in progress is to set a flag when the bar is begun and to unset +% this flag when the bar is ended. This works most of the time +% but, because of the asynchronous behavior of the output routine, +% errors occur if the bar begins or ends near a page break. To +% illustrate, consider the following scenerio. +% +% blah blah blah % page n +% blah blah blah +% \cbstart % this does its thing and set the flag +% more blah +% <-------------- pagebreak occurs here +% more blah +% \cbend % does its thing and unsets flag +% blah blah +% +% Since TeX process ahead of the page break before invoking the +% output routine, it is possible that the \cbend is +% processed, and the flag unset, before the output routine is +% called. If this happens, the necessary artificial end and begin +% will not be added to page n and n+1, respectively. Thus, it is +% not possible to use a flag to signal the output routine that a +% bar crosses a page break, and some other mechanism is required. +% +% The method used with these macros is to create a list of the +% beginning and end points of each bar in the document together +% with the page number corresponding to each point. Then, as a +% page is completed, a modified output routine checks the list to +% determine if any bars begun on or before the current page are +% terminated on subsequent pages, and handles those bars +% appropriately. To build the list, information about each +% changebar is written to the .AUX file as bars are processed. +% This information is re-read when the document is next processed. +% Thus, to ensure that changebars are correct, the document must +% be processed twice, but this is required for LaTeX anyway. +% +% This apprach is sufficiently general to allow nested bars, bars +% in floating insertions, and bars around floating insertions. +% Bars inside floats and footnotes are handled in the same way as +% bars in regular text. Bars that encompass floats or footnotes +% are handled by creating an additional bar that floats with the +% floating material. Modifications to the appropriate LaTeX +% macros check for this condition and add the extra bar. +% +% +% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% User Level Commands And Parameters +% +% +% +% \cbstart \cbend +% +% Start and end a changebar and save state on \cb@currentlist. Width of +% new bar is determined by adding \changebarwidth to width of current +% bar. Does not invoke a LaTeX environment. +% +\def\cbstart{\@ifnextchar [{\cb@xstart}{\cb@start\changebarwidth}} + \def\cb@xstart[#1]{\cb@start{#1}} + +\def\cbend{\cb@end} + +% +% \cbdelete +% +% Start and end a square bar of the specified width. Use width +% \deletebarwidth if none specified. +% +\def\cbdelete{\@ifnextchar [{\cb@delete}{\cb@delete[\deletebarwidth]}} +\def\cb@delete[#1]{\vbox to 0pt{\vss\cb@start{#1}\vskip #1% + \cb@end}} + + +% +% \begin{changebar} \end{changebar} +% +% Identical to \cbstart and \cbend but invokes a LaTeX environment to +% enforce correct nesting. Cannot be used in tabular and tabbing +% environments. Not yet properly implemented. +% +%\newenvironment{changebar}{\@bsphack\cbstart\@esphack}{\@bsphack +% \cbend\@esphack} + + +% +% \nochangebars +% +% Disables the changebar commands. +% +\def\nochangebars{\let\cb@end\relax \def\cb@start##1{}} + +% +% \changebarwidth \deletebarwidth +% +% LaTeX length parameters that give the width of bars and delete +% squares, respectively. +% +\newlength{\changebarwidth} +\setlength{\changebarwidth}{2pt} + +\newlength{\deletebarwidth} +\setlength{\deletebarwidth}{4pt} + +% +% \reversechangebars +% +% Switches the side of the page on which the bars appear. It also +% computes the position of the bar and stores in dimension variables +% \cb@dimodd and \cb@dimeven. Called by modified \document at end of +% preable. +% +\newdimen\cb@dimodd % position of special point for odd side pages +\newdimen\cb@dimeven % ditto for even side pages +\newif\ifcb@side % switch for current side of page for bars + +\def\reversechangebars{\global\cb@dimodd=\hoffset + \global\cb@dimeven=\hoffset + \global\advance\cb@dimodd by \oddsidemargin + \global\advance\cb@dimeven by \evensidemargin + \global\ifcb@side + \global\advance\cb@dimodd by -\changebarsep + \global\advance\cb@dimeven by \textwidth + \global\advance\cb@dimeven by \changebarsep + \global\cb@sidefalse + \else + \global\advance\cb@dimeven by -\changebarsep + \global\advance\cb@dimodd by \textwidth + \global\advance\cb@dimodd by \changebarsep + \global\cb@sidetrue\fi} + + +% +% \changebarsep +% +% A LaTeX length parameter that gives the separation of the bar from the +% left margin of the text. +% +\newlength{\changebarsep} +\setlength{\changebarsep}{30pt} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Declarations And Initializations +% +% + +% +% A version message +% +\typeout{Changebar Style } + +\let\cb@ig=\ignorespaces %useful abreviation + +\def\cb@maxpoint{80} % max value of used special points +\def\cb@minpoint{1} % ditto for min; + % MUST BE ODD **** +\def\cb@nil{0} % a void value for points + +\newcount\cb@nextpoint % next value of special point to use +\newcount\cb@currentpoint % current value in use +\cb@nextpoint=\cb@minpoint % intially = \cb@minpoint + +\newcount\cb@page % count for page value from hist list +\newcount\cb@pagecount % our internal count of pages output +\cb@pagecount=0 % initially 0 due to timing of increment + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Macros for beginning and ending bars +% +% + +% +% \cb@start#1 #1 is the dimension of the bar +% +% This macro is used to start a change bar. It assigns a new value to +% the current point and advances the counter for the next point to be +% assigned. It pushes this info onto \cb@currentlist and then sets the +% point by calling \cb@setBeginPoint with the point number. Finally, it +% writes the aux file. +% +\def\cb@start#1{\cb@currentpoint=\cb@nextpoint + \@tempdima=#1\cb@ig % for \cb@push + \cb@push\cb@currentlist + \ifvmode \cb@setBeginPoint\cb@currentpoint + \else \vbox to 0pt{\vskip -\ht\strutbox %jump up a line to + \cb@setBeginPoint\cb@currentpoint %set point + \vskip \ht\strutbox}\fi + \cb@writeAux\cb@advancePoint} + +\def\cb@advancePoint{\global\advance\cb@nextpoint by 4\cb@ig + \ifnum\cb@nextpoint>\cb@maxpoint + \global\cb@nextpoint=\cb@minpoint\relax\fi} + +% +% \cb@end +% +% This macro is used to end a changebar. It pops the current point and +% nesting level off \cb@currentlist and sets the end point by calling +% \cb@setEndPoint with the parameter corresponding to the BEGINNING +% point number. It writes the aux file and joins the points. +% +\def\cb@end{\cb@pop\cb@currentlist + \ifnum\cb@currentpoint=\cb@nil + \typeout{Changebar Warning: Badly nested changebars; Expect erroneous results.}\else + \cb@setEndPoint\cb@currentpoint + \advance\cb@currentpoint by1\cb@writeAux\fi} + + +% +% \cb@setBeginPoint#1 +% +% Assigns position to points #1 and #1+2. First computes the position. +% +\def\cb@setBeginPoint#1{\special{ln03:defpoint \the#1(\the + \cb@dimodd,)}\@tempcnta#1\advance\@tempcnta by2\cb@ig + \special{ln03:defpoint \the\@tempcnta(\the\cb@dimeven,)}} + +% +% \cb@setEndPoint#1 +% +% Assigns position to point #1+1 and point #1+3. Then does a connect +% special to join #1 and #1+1 or to join #1+2 and #1+3. Assumes that +% width of bar is given in \@tempdima +% +\def\cb@setEndPoint#1{\@tempcnta=#1\advance\@tempcnta by1\cb@ig + \special{ln03:defpoint \the\@tempcnta\space + \space(\the\cb@dimodd,)}\if@twoside\@tempcntb=#1\advance + \@tempcntb by3\special{ln03:defpoint \the\@tempcntb\space + \space(\the\cb@dimeven,)}{\count9=#1\advance\count9 by2\cb@ig + \special{ln03:connect \the#1/\the\count9\space\space + \the\@tempcnta/\the\@tempcntb\space\space\the\@tempdima}}\else + \special{ln03:connect \the#1 \the\@tempcnta\space\space + \the\@tempdima}\fi} + +% +% \cb@writeAux +% +% Writes the string +% \cb@barpoint{\cb@currentpoint}{\thepage}{\cb@tempdima} to the aux +% file. Assumes that width of bar is in \@tempdima. +% +\def\cb@writeAux{\begingroup \edef\point{\the\cb@currentpoint}\cb@ig + \edef\level{\the\@tempdima}\cb@ig + \let\the=0\edef\cb@temp{\write\@auxout + {\string\cb@barpoint{\point}{\the\cb@pagecount}{\level}}}\cb@ig + \cb@temp\endgroup} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Macros for Making It Work Across Page Breaks +% + + +% +% \@makecol +% +% Modifies the LaTex macros to end the changebars spanning the current +% page (if any) and restart them on the next page. Does the +% following: It resets special points for this page. Adds begin bars +% to top of box255. The bars to be begun are saved in \cb@beginSaves. +% Increments the changebar-internal page counter so that the value +% corresponds to the number of this page in strictly sequential order +% (the LaTeX page number can be reset). Then it builds the list +% \cb@spanlist, then calls \cb@processActive to process the elements +% on the list, then it executes the original \@makecol. +% +\let\cb@makecol=\@makecol +\def\@makecol{\setbox255=\vbox{\special{ln03:resetpoints \cb@minpoint + \space\cb@maxpoint}\cb@beginSaves\unvbox255}\cb@ig + \gdef\cb@beginSaves{}\global\advance + \cb@pagecount by 1\cb@buildActive + \cb@processActive\cb@makecol} + +% +% \cb@processActive +% +% Processes each element on span list. Each element represents a bar +% that crosses the page break. There could be more than one if bars are +% nested. Works as folows: +% +% pop top element of span list +% if point null (i.e., list empty) then done +% else +% do an end bar on box255 +% save start for new bar at top of next page in \cb@startSaves +% push active point back onto history list (need to reprocess +% on next page). +% +\def\cb@processActive{\cb@pop\cb@spanlist + \ifnum\cb@currentpoint=\cb@nil \else + \setbox255=\vbox{\unvbox255\cb@setEndPoint\cb@currentpoint}\cb@ig + \cb@saveBeginPoint\cb@currentpoint \cb@push\cb@history + \cb@processActive\fi} + +% +% \cb@saveBeginPoint#1 +% +% Saves a \special to begin a point in expanded macro \cb@beginSaves. +% This is then used to start all spanning bars at the top of the next +% page. It is almost the same as \cb@setBeginPoint +% +\def\cb@saveBeginPoint#1{\xdef\cb@beginSaves{\special{ln03:defpoint + \the#1(\the\cb@dimodd,)}\cb@beginSaves}\@tempcnta#1\advance + \@tempcnta by2\xdef\cb@beginSaves{\special{ln03:defpoint + \the\@tempcnta(\the\cb@dimeven,)}\cb@beginSaves}} + +\def\cb@beginSaves{} % initially empty + + + + +% +% \cb@buildActive +% +% Initializes the spanlist to null. Pops top of history list. If point +% is on future page, push back onto history list. If point on current +% or previous page and odd, add point to span list; if even, pop span +% list since this bar has terminated on current page. +% +\def\cb@buildActive{\cb@initlist\cb@spanlist\cb@pushNextActive} + +\def\cb@pushNextActive{\cb@pop\cb@history + \ifnum\cb@currentpoint=\cb@nil \else + \ifnum\cb@page>\cb@pagecount \cb@push\cb@history \else + \ifodd\cb@currentpoint \cb@push\cb@spanlist + \else \cb@pop\cb@spanlist\fi + \cb@pushNextActive\fi\fi} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Macros For Managing The Lists of Bar points +% +% The macros make use of three lists corresponding to \special +% defpoints. Each list takes the form +% . . . +% +% Each element is of the form xxxnyyypzzzl where xxx is the number of +% the special point, yyy is the page on which this point is set, and zzz +% is the dimension used when connecting this point. +% +% The list \cb@history is built from the log information and initially +% lists all the points. As pages are processed, points are popped off +% the list and discarded. +% +% The list \cb@spanlist is a temporary list used by the output routine +% and contains the list of all bars crossing the current page (there may +% be more than one with nested bars). It is built by popping elements +% off the history list. +% +% The list \cb@currentlist contains all the current bars. A \cb@start +% pushes an element onto this list. A \cb@end pops the top element off +% the list and uses the info to terminate the bar. +% +% For performance and memory reasons, the history list, which can be +% very long, is special cased and a file is used to store this list +% rather than an internal macro. The ``external'' interface to this +% list is identical to what is described above. However, when the +% history list is popped, a line from the file is first read and +% appended to the macro \cb@history. +% + +% +% \cb@initlist % Initialize a list +% +\def\cb@initlist#1{\xdef#1{}} + +% +% Initializations, etc. +% +\cb@initlist\cb@history % the history list; initially empty +\cb@initlist\cb@spanlist % list of bars spanning current page +\cb@initlist\cb@currentlist % used to implement nesting without using + % TeX grouping +%\xdef\@empty{} % to test if list is empty. In LaTeX. + +\newwrite\cb@write % file for history list +\newread\cb@read +\immediate\openout\cb@write=\jobname.cb % open for building of history list + +% +% \cb@pop#1 #1 is name of list (e.g., \cb@history) +% +% This pops the top element off the named list and puts the point value +% into \cb@currentpoint, the page value into \cb@page and the bar width +% into \@tempdima. If the list is empty, returns a void value (\cb@nil) +% in \cb@currentpoint and sets \cb@page=0. +% +\def\cb@pop#1{\ifx #1\cb@history \ifeof\cb@read \else + {\endlinechar=-1\read\cb@read to\@temp + \xdef\cb@history{\cb@history\@temp}}\fi\fi + \ifx \@empty#1\cb@currentpoint=\cb@nil\cb@page=0\else + \expandafter\cb@carcdr#1e#1\fi} + +\def\cb@carcdr#1n#2p#3l#4e#5{\cb@currentpoint=#1\cb@page=#2\@tempdima=#3% + \xdef#5{#4}} + +% +% \cb@push#1 +% +% Pushes \cb@currentpoint, \cb@page and \@tempdima onto the top of the +% named list +% +\def\cb@push#1{\xdef#1{\the\cb@currentpoint n\the\cb@page p\the\@tempdima l#1}} + +% +% \cb@barpoint % For populating history file +% +% Writes one line to .cb file which is equivalent to one +% described above. +\def\cb@barpoint#1#2#3{\immediate\write\cb@write{#1n#2p#3l}} + + +% +% \document +% +% Modifies \document to manage history file. It closes the .cb file +% and opens it for reading. Also calls \reversechangebars to compute +% the dimensions of the bar positions (thus any changes to margins +% etc. in preamble will be recognised). +% +\let\cb@document=\document +\def\document{\reversechangebars + \cb@document\immediate\closeout\cb@write + \immediate\openin\cb@read=\jobname.cb} + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Macros For Checking That The .AUX File Is Stable +% + +% +% \enddocument +% +% Does a \clearpage to flush rest of document. Then closes .cb file +% and reopens for checking. Inits history list (to be read from +% file). Lets \cb@barpoint=\cb@checkhistory for checking. +% +\let\cb@enddocument\enddocument +\def\enddocument{\clearpage\cb@initlist\cb@history + \immediate\closein\cb@read\immediate\openin\cb@read=\jobname.cb% + \let\cb@barpoint=\cb@checkHistory\cb@enddocument} + +% +% \cb@checkHistory +% +% Pops the top of the history list (\jobname.cb) and +% check to see if the point and page numbers are the same as the +% arguements #1 and #2 respectively. Prints a warning message if +% different. +% +\def\cb@checkHistory#1#2#3{\cb@pop\cb@history + \ifnum #1=\cb@currentpoint + \ifnum #2=\cb@page % do nothing + \else \cb@error % page numbers mismatched + \fi + \else \cb@error % point numbers mismatched + \fi} + +\def\cb@error{\message{Changebar Warning: Changebar info has changed. % +Rerun to get right.}\gdef\cb@checkHistory##1##2##3{}\let\cb@barpoint=\cb@checkHistory} + + + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Macros For Making It Work With Nested Floats/Footnotes +% Works for LaTeX 2.09 +% + +% +% \end@float +% +% This is a replacement for the Latex macro of the same name. All it +% does is check to see if changebars are active and, if so, it puts +% changebars around the box containing the float. Then it calls the +% original LaTeX \end@float +% +\let\cb@endfloat=\end@float +\def\end@float{\cb@pop\cb@currentlist\ifnum\cb@currentpoint=\cb@nil + \else \cb@push\cb@currentlist\global\@tempdima=\@tempdima + \egroup \global\setbox\@currbox + \vbox\bgroup \cb@start\@tempdima\unvbox\@currbox\cb@end\fi + \cb@endfloat} + +\let\endfigure=\end@float % need to rebind these to new def +\let\endtable=\end@float + +% +% \@footnotetext#1 +% +% Replacement for the LaTeX macro of the same name. Simply checks to +% see if changebars are active and if so wraps the macro arguement +% (i.e., the footnote) in changebars. +% +\let\cb@footnote=\@footnotetext +\long\def\@footnotetext#1{\cb@pop\cb@currentlist\ifnum\cb@currentpoint=\cb@nil + \cb@footnote{#1}\else \cb@push\cb@currentlist + \edef\cb@temp{\the\@tempdima}\cb@ig + \cb@footnote{\cb@start{\cb@temp}#1\cb@end}\fi} + +% +% \@mpfootnotetext#1 +% +% Replacement for the LaTeX macro of the same name. Same thing as +% \@footnotetext. +% +\let\cb@mpfootnote=\@mpfootnotetext +\long\def\@mpfootnotetext#1{\cb@pop\cb@currentlist + \ifnum\cb@currentpoint=\cb@nil + \cb@mpfootnote{#1}\else \cb@push\cb@currentlist + \edef\cb@temp{\the\@tempdima}\cb@ig + \cb@mpfootnote{\cb@start{\cb@temp}#1\cb@end}\fi} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% end of changebar style +% diff --git a/dviware/ln03/rmcs/cli.for b/dviware/ln03/rmcs/cli.for new file mode 100644 index 0000000000..755c0df1cf --- /dev/null +++ b/dviware/ln03/rmcs/cli.for @@ -0,0 +1,495 @@ + SUBROUTINE CLI + +C +C FUNCTIONAL DESCRIPTION: +C +C Uses Niel Kempson's routines to extract the command line information +C +C DUMMY ARGUMENTS: +C +C none +C +C IMPLICIT INPUTS: +C +C none +C +C IMPLICIT OUTPUTS: +C +C All values in COMMON/GINOTOSIX/ initialized +C +C +C SIDE EFFECTS: +C +C none +C +C + IMPLICIT NONE + + INCLUDE '($SSDEF)' + INCLUDE '($NAMDEF)' + + INTEGER*4 SEGMENT !Segment number in saved drawing + REAL*4 WIDTH !Desired width + REAL*4 HEIGHT !Desired height + REAL*4 SCALE !Desired scale factor + CHARACTER*255 INPUT !Name of input file + CHARACTER*255 OUTPUT !Name of output file + LOGICAL FORMFEED !Do we want a formfeed at the end of the + !file? + + COMMON/GINOTOSIX/INPUT,OUTPUT,WIDTH,HEIGHT,SCALE,SEGMENT,FORMFEED + + INTEGER*4 CLI_STATUS + INTEGER*4 CLI_STRING_LENGTH + INTEGER*4 FILE_NAME_STATUS_BITS + INTEGER*4 INPUT_LENGTH + INTEGER*4 OUTPUT_LENGTH + INTEGER*4 OUTPUT__LENGTH + INTEGER*4 PARSE_STATUS + INTEGER*4 F_DOLLAR_PARSE + CHARACTER*255 CLI_STRING + CHARACTER*255 OUTPUT_ + CHARACTER*255 DEFAULT_FILESPEC + CHARACTER*255 DEFAULT_NAME + INTEGER*4 DEFAULT_NAME_LENGTH + INTEGER*4 DEFAULT_TYPE_LENGTH + INTEGER*4 DEFAULT_FILESPEC_LENGTH + + PARAMETER PARSE_CONCEAL = 0 + PARAMETER PARSE_NOCONCEAL = 1 + PARAMETER PARSE_SYNTAX_ONLY = 2 + PARAMETER PARSE_CHECK_EXISTS = 0 + + EXTERNAL CLI$PRESENT + EXTERNAL CLI$GET_VALUE + + INTEGER*4 CLI$PRESENT + INTEGER*4 CLI$GET_VALUE + + EXTERNAL CLI$_PRESENT + EXTERNAL CLI$_ABSENT + EXTERNAL CLI$_NEGATED + EXTERNAL CLI$_COMMA + + SEGMENT = 0 + CLI_STATUS = CLI$PRESENT ('SEGMENT') + IF (CLI_STATUS .EQ. %LOC (CLI$_PRESENT)) THEN + CLI_STATUS = CLI$GET_VALUE ('SEGMENT', + 1 CLI_STRING, + 1 CLI_STRING_LENGTH) + + IF (CLI_STATUS .EQ. SS$_NORMAL) THEN + READ (CLI_STRING(1:CLI_STRING_LENGTH), 110) SEGMENT + ELSE + TYPE *,'GINOTOSIX Error - Invalid segment' + STOP + END IF + IF (SEGMENT.LT.0) THEN + TYPE *,'GINOTOSIX Error - Invalid segment' + STOP + END IF + + END IF + + SCALE = 0 + CLI_STATUS = CLI$PRESENT ('SCALE') + IF (CLI_STATUS .EQ. %LOC (CLI$_PRESENT)) THEN + CLI_STATUS = CLI$GET_VALUE ('SCALE', + 1 CLI_STRING, + 1 CLI_STRING_LENGTH) + + IF (CLI_STATUS .EQ. SS$_NORMAL) THEN + READ (CLI_STRING(1:CLI_STRING_LENGTH), 100, ERR=200) SCALE + ELSE +200 TYPE *,'GINOTOSIX Error - Invalid scale' + STOP + END IF + + END IF + + WIDTH = 0 + HEIGHT = 0 + CLI_STATUS = CLI$PRESENT ('SIZE') + + IF (CLI_STATUS .EQ. %LOC (CLI$_PRESENT)) THEN + + CLI_STATUS = CLI$GET_VALUE ('SIZE.WIDTH', + 1 CLI_STRING, + 1 CLI_STRING_LENGTH) + + IF (CLI_STATUS .EQ. SS$_NORMAL) THEN + READ (CLI_STRING(1:CLI_STRING_LENGTH), 100) WIDTH + ELSE + TYPE *,'GINOTOSIX Error - Invalid width' + STOP + END IF + + CLI_STATUS = CLI$GET_VALUE ('SIZE.HEIGHT', + 1 CLI_STRING, + 1 CLI_STRING_LENGTH) + + IF (CLI_STATUS .EQ. SS$_NORMAL) THEN + READ (CLI_STRING(1:CLI_STRING_LENGTH), 100) HEIGHT + ELSE + TYPE *,'GINOTOSIX Error - Invalid height' + STOP + END IF + + END IF + + CLI_STATUS = CLI$PRESENT ('OUTPUT') + IF (CLI_STATUS .EQ. %LOC (CLI$_PRESENT)) THEN + CLI_STATUS = CLI$GET_VALUE ( + 1 'OUTPUT', + 1 OUTPUT_, + 1 OUTPUT__LENGTH) + + PARSE_STATUS = F_DOLLAR_PARSE( + 1 OUTPUT_(1:OUTPUT__LENGTH), + 1 '*.*;*', + 1 'FULL', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 OUTPUT, + 1 OUTPUT_LENGTH, + 1 FILE_NAME_STATUS_BITS) + + IF (IAND(FILE_NAME_STATUS_BITS, NAM$M_WILD_DIR) .NE. 0) THEN + TYPE *,'GINOTOSIX Error - Illegal output filespec' + STOP + END IF + + ELSE + + OUTPUT(1:7) = '[]*.*;*' + OUTPUT(8:) = ' ' + OUTPUT_LENGTH = 7 + + END IF + + CALL REMOVE_WILDCARDS (OUTPUT, OUTPUT_LENGTH) + + CLI_STATUS = CLI$GET_VALUE('INPUT_FILESPEC', + 1 INPUT, + 1 INPUT_LENGTH) + + IF (CLI_STATUS .NE. SS$_NORMAL) THEN + TYPE *,'GINOTOSIX Error - Illegal input filespec' + STOP + END IF + + PARSE_STATUS = F_DOLLAR_PARSE ( + 1 INPUT(1:INPUT_LENGTH), + 1 '.PIC', + 1 'FULL', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 INPUT, + 1 INPUT_LENGTH, + 1 FILE_NAME_STATUS_BITS) + + PARSE_STATUS = F_DOLLAR_PARSE (INPUT, + 1 ' ', + 1 'NAME', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 DEFAULT_NAME, + 1 DEFAULT_NAME_LENGTH, + 1 FILE_NAME_STATUS_BITS) + + DEFAULT_FILESPEC = DEFAULT_NAME(1:DEFAULT_NAME_LENGTH) // '.SIX' + DEFAULT_FILESPEC_LENGTH = DEFAULT_NAME_LENGTH + 4 + + PARSE_STATUS = F_DOLLAR_PARSE ( + 1 OUTPUT(1:OUTPUT_LENGTH), + 1 DEFAULT_FILESPEC(1:DEFAULT_FILESPEC_LENGTH), + 1 'FULL', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 OUTPUT, + 1 OUTPUT_LENGTH, + 1 FILE_NAME_STATUS_BITS) + + IF (IAND (FILE_NAME_STATUS_BITS, NAM$M_WILDCARD) .NE. 0) THEN + CALL REMOVE_WILDCARDS (OUTPUT, OUTPUT_LENGTH) + END IF + + FORMFEED=.FALSE. + CLI_STATUS = CLI$PRESENT ('FORMFEED') + IF (CLI_STATUS .EQ. %LOC (CLI$_PRESENT)) FORMFEED=.TRUE. + + RETURN + +100 FORMAT (F5.0) +110 FORMAT (I5) + + END + + SUBROUTINE REMOVE_WILDCARDS (FILE_SPEC, FILE_SPEC_LENGTH) + INCLUDE '($NAMDEF)' + PARAMETER PARSE_CONCEAL = 0, + 1 PARSE_NOCONCEAL = 1, + 1 PARSE_SYNTAX_ONLY = 2, + 1 PARSE_CHECK_EXISTS = 0 + CHARACTER*(*) file_spec + INTEGER*4 file_spec_length + CHARACTER*255 + 1 new_file_spec, + 1 node, + 1 device, + 1 directory + CHARACTER*255 + 1 default_name, + 1 default_type, + 1 name, + 1 type, + 1 version + INTEGER*4 new_file_spec_length, + 1 node_length, + 1 device_length, + 1 directory_length, + 1 name_length, + 1 type_length, + 1 version_length, + 1 f_dollar_parse, + 1 parse_status, + 1 file_name_status_bits, + 1 string_length + + + file_spec_length = string_length (file_spec) + + parse_status = f_dollar_parse ( + 1 file_spec(1:file_spec_length), + 1 ' ', + 1 'NODE', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 node, + 1 node_length, + 1 file_name_status_bits) + IF (node_length .GT. 0) THEN + new_file_spec(1:) = node(1:node_length) + END IF + new_file_spec_length = node_length + + parse_status = f_dollar_parse ( + 1 file_spec(1:file_spec_length), + 1 ' ', + 1 'DEVICE', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 device, + 1 device_length, + 1 file_name_status_bits ) + IF (device_length .GT. 0) THEN + new_file_spec(new_file_spec_length+1:) = device(1:device_length) + END IF + new_file_spec_length = new_file_spec_length + device_length + + parse_status = f_dollar_parse ( + 1 file_spec(1:file_spec_length), + 1 ' ', + 1 'DIRECTORY', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 directory, + 1 directory_length, + 1 file_name_status_bits) + + IF (IAND (file_name_status_bits, NAM$M_WILD_DIR) .EQ. 0) THEN + IF (directory_length .GT. 0) THEN + new_file_spec(new_file_spec_length+1:) = + 1 directory(1:directory_length) + END IF + new_file_spec_length = new_file_spec_length + directory_length + END IF + + parse_status = f_dollar_parse ( + 1 file_spec(1:file_spec_length), + 1 ' ', + 1 'NAME', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 name, + 1 name_length, + 1 file_name_status_bits ) + + IF (IAND (file_name_status_bits, NAM$M_WILD_NAME) .EQ. 0) THEN + IF (name_length .GT. 0) THEN + new_file_spec(new_file_spec_length+1:) = name(1:name_length) + END IF + new_file_spec_length = new_file_spec_length + name_length + END IF + + parse_status = f_dollar_parse ( + 1 file_spec(1:file_spec_length), + 1 ' ', + 1 'TYPE', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 type, + 1 type_length, + 1 file_name_status_bits ) + + IF (IAND (file_name_status_bits, NAM$M_WILD_TYPE) .EQ. 0) THEN + IF (type_length .GT. 0) THEN + new_file_spec(new_file_spec_length+1:) = type(1:type_length) + END IF + new_file_spec_length = new_file_spec_length + type_length + END IF + + parse_status = f_dollar_parse ( + 1 file_spec(1:file_spec_length), + 1 ' ', + 1 'VERSION', + 1 PARSE_CONCEAL+PARSE_SYNTAX_ONLY, + 1 version, + 1 version_length, + 1 file_name_status_bits) + + IF (IAND (file_name_status_bits, NAM$M_WILD_VER) .EQ. 0) THEN + IF (version_length .GT. 0) THEN + new_file_spec(new_file_spec_length+1:) = + 1 version(1:version_length) + END IF + new_file_spec_length = new_file_spec_length + version_length + END IF + + IF (new_file_spec_length .GT. 0) THEN + file_spec(1:) = new_file_spec(1:new_file_spec_length) + END IF + file_spec_length = new_file_spec_length + + RETURN + END + + INTEGER*4 FUNCTION f_dollar_parse (file_spec, + 1 default_file_spec, + 1 parse_type, + 1 parse_flags, + 1 return_buffer, + 1 return_string_length, + 1 file_name_status_bits) + INCLUDE '($FABDEF)' + INCLUDE '($NAMDEF)' + PARAMETER PARSE_CONCEAL = 0, + 1 PARSE_NOCONCEAL = 1, + 1 PARSE_SYNTAX_ONLY = 2, + 1 PARSE_CHECK_EXISTS = 0 + CHARACTER*(*) file_spec, + 1 default_file_spec, + 1 return_buffer, + 1 parse_type + INTEGER*4 return_string_length, + 1 parse_flags, + 1 file_name_status_bits + RECORD /FABDEF/ fab + RECORD /NAMDEF/ nam + CHARACTER*16 local_parse_type + CHARACTER*255 + 1 full_filespec + INTEGER*4 SYS$PARSE, + 1 start_char, + 1 stop_char, + 1 return_buffer_size, + 1 parsed_string_length + BYTE int_to_byte + + fab.FAB$B_BID = FAB$C_BID + fab.FAB$B_BLN = FAB$C_BLN + + fab.FAB$L_FNA = %LOC (file_spec) + fab.FAB$B_FNS = int_to_byte (LEN (file_spec)) + + fab.FAB$L_DNA = %LOC (default_file_spec) + fab.FAB$B_DNS = int_to_byte (LEN (default_file_spec)) + + fab.FAB$L_NAM = %LOC (nam) + + nam.NAM$B_BID = NAM$C_BID + nam.NAM$B_BLN = NAM$C_BLN + + nam.NAM$L_ESA = %LOC (full_filespec) + nam.NAM$B_ESS = int_to_byte (MIN (LEN (full_filespec), 255)) + + nam.NAM$B_NOP = 0 + + IF (IAND (parse_flags, PARSE_NOCONCEAL) .NE. 0) THEN + nam.NAM$B_NOP = NAM$M_NOCONCEAL + END IF + + IF (IAND (parse_flags, PARSE_SYNTAX_ONLY) .NE. 0) THEN + nam.NAM$B_NOP = nam.NAM$B_NOP + NAM$M_SYNCHK + END IF + + f_dollar_parse = SYS$PARSE (fab) + file_name_status_bits = nam.NAM$L_FNB + + CALL STR$UPCASE (local_parse_type, parse_type) + + IF (local_parse_type .EQ. 'NODE') THEN + start_char = nam.NAM$L_NODE - nam.NAM$L_ESA + 1 + stop_char = start_char + ZEXT (nam.NAM$B_NODE) - 1 + + ELSE IF (local_parse_type .EQ. 'DEVICE') THEN + start_char = nam.NAM$L_DEV - nam.NAM$L_ESA + 1 + stop_char = start_char + ZEXT (nam.NAM$B_DEV) - 1 + + ELSE IF (local_parse_type .EQ. 'DIRECTORY') THEN + start_char = nam.NAM$L_DIR - nam.NAM$L_ESA + 1 + stop_char = start_char + ZEXT (nam.NAM$B_DIR) - 1 + + ELSE IF (local_parse_type .EQ. 'NAME') THEN + start_char = nam.NAM$L_NAME - nam.NAM$L_ESA + 1 + stop_char = start_char + ZEXT (nam.NAM$B_NAME) - 1 + + ELSE IF (local_parse_type .EQ. 'TYPE') THEN + start_char = nam.NAM$L_TYPE - nam.NAM$L_ESA + 1 + stop_char = start_char + ZEXT (nam.NAM$B_TYPE) - 1 + + ELSE IF (local_parse_type .EQ. 'VERSION') THEN + start_char = nam.NAM$L_VER - nam.NAM$L_ESA + 1 + stop_char = start_char + ZEXT (nam.NAM$B_VER) - 1 + + ELSE IF (local_parse_type .EQ. 'FULL') THEN + start_char = 1 + stop_char = ZEXT (nam.NAM$B_ESL) + + ELSE + TYPE *, 'Invalid parse string: (',local_parse_type,').' + CALL LIB$SIGNAL (MODIFY$INVPARTYP, 1, local_parse_type) + CALL EXIT + END IF + + parsed_string_length = stop_char - start_char + 1 + return_buffer_size = LEN (return_buffer) + return_string_length = MIN (return_buffer_size, parsed_string_length) + + IF (return_string_length .GT. 0) THEN + return_buffer(1:) = full_filespec( + 1 start_char:start_char + return_string_length - 1) + END IF + + RETURN + END + + INTEGER*4 FUNCTION string_length (string) + IMPLICIT NONE + CHARACTER*(*) string + CHARACTER this_char + string_length = LEN (string) + + DO WHILE (string_length .GT. 0) + this_char = string(string_length:string_length) + IF ((this_char .NE. ' ') .AND. (this_char .NE. CHAR(9))) THEN + RETURN + END IF + string_length = string_length - 1 + END DO + RETURN + END + + BYTE FUNCTION int_to_byte (number) + IMPLICIT NONE + INTEGER*4 number + + IF ( IAND (number, '00000080'X) .NE. 0) THEN + int_to_byte = IOR (number, 'FFFFFF00'X) + ELSE + int_to_byte = IAND (number, '000000FF'X) + END IF + + RETURN + END diff --git a/dviware/ln03/rmcs/descrip.mms b/dviware/ln03/rmcs/descrip.mms new file mode 100644 index 0000000000..0fb1c47289 --- /dev/null +++ b/dviware/ln03/rmcs/descrip.mms @@ -0,0 +1,117 @@ +# +############################################################################ +############################################################################ +.SUFFIXES : ; +.SUFFIXES : .exe .obj .pas .ln3 .dvi .tex .web .ch + +.dvi.ln3 + - DVILN03 $(MMS$SOURCE) + @ $(WSO) "$(MMS$TARGET) built at ''F$TIME()'." + @ $(WSO) " " + +.tex.dvi + TEX /BATCH $(MMS$SOURCE) + +.pas.obj + PASCAL $(PFLAGS) $(MMS$SOURCE) + TYPE $(MMS$TARGET_NAME).lis + DELETE/LOG $(MMS$TARGET_NAME).lis; + +# +############################################################################ +############################################################################ +PFLAGS = /NODEBUG/OPTIM/LIST/SHOW=(NONE,STAT) +LINKFLAGS = /NODEBUG/NOTRACEBACK/SYSSHARE +DPFLAGS = /DEBUG/NOOPTIM/LIST/SHOW=(NONE,STAT)/CHECK=ALL +DLINKFLAGS = /DEBUG/TRACEBACK/SYSSHARE +WSO = WRITE SYS$OUTPUT +exe_dir = TEX_EXE: + +target_list_1 = dvitoln03 dvil_debug +target_list_2 = dvitoln03.ln3 + + +# +############################################################################ +############################################################################ +default : + @ $(WSO) "You must specify which target to make. Valid targets are:" + @ $(WSO) " " + @ $(WSO) "Programs:" + @ $(WSO) " $(target_list_1)" + @ $(WSO) " " + @ $(WSO) "Documentation: " + @ $(WSO) " $(target_list_2)" + @ $(WSO) " " + @ $(WSO) "EXES - make all executables" + @ $(WSO) "DOC - make all .LN3 files" + @ $(WSO) "INSTALL - move executables to $(exe_dir)" + @ $(WSO) "CLEAN - delete all rebuildable files" + +# +############################################################################ +############################################################################ +install : + COPY/LOG *.EXE; $(exe_dir)*.*;0 + +# +############################################################################ +############################################################################ +clean : + @ PURGE/LOG + @ IF F$SEARCH("*.TEX") .NES. "" THEN $ DELETE *.TEX;* + @ IF F$SEARCH("*.DVI") .NES. "" THEN $ DELETE *.DVI;* + @ IF F$SEARCH("*.LN3") .NES. "" THEN $ DELETE *.LN3;* + @ IF F$SEARCH("*.PAS") .NES. "" THEN $ DELETE *.PAS;* + @ IF F$SEARCH("*.OBJ") .NES. "" THEN $ DELETE *.OBJ;* + @ IF F$SEARCH("*.EXE") .NES. "" THEN $ DELETE *.EXE;* + @ IF F$SEARCH("*.POO*") .NES. "" THEN $ DELETE *.POO*;* + @ IF F$SEARCH("*.LIS") .NES. "" THEN $ DELETE *.LIS;* + @ IF F$SEARCH("*.TYP") .NES. "" THEN $ DELETE *.TYP;* + +# +############################################################################ +############################################################################ +exes DEPENDS_ON $(target_list_1) + @ $(WSO) "$(MMS$TARGET_NAME) built at ''F$TIME()'." + @ $(WSO) " " + +# +############################################################################ +############################################################################ +doc DEPENDS_ON $(target_list_2) + @ $(WSO) "$(MMS$TARGET_NAME) built at ''F$TIME()'." + @ $(WSO) " " + +dvitoln03 DEPENDS_ON dvitoln03.exe + @ $(WSO) "$(MMS$TARGET_NAME) built at ''F$TIME()'." + @ $(WSO) " " + +dvil_debug DEPENDS_ON dvil_debug.exe + @ $(WSO) "$(MMS$TARGET_NAME) built at ''F$TIME()'." + @ $(WSO) " " + + +dvitoln03.ln3 DEPENDS_ON dvitoln03.dvi + +# +############################################################################ +############################################################################ +dvitoln03.pas DEPENDS_ON dvitoln03.web dvitoln03.ch + TANGLE dvitoln03 + +dvil_debug.obj DEPENDS_ON dvil_debug.pas + PASCAL $(DPFLAGS) $(MMS$SOURCE) + TYPE $(MMS$TARGET_NAME).lis + DELETE/LOG $(MMS$TARGET_NAME).lis; + +dvil_debug.exe DEPENDS_ON dvil_debug.obj + LINK $(DLINKFLAGS) $(MMS$SOURCE) + +dvil_debug.pas DEPENDS_ON dvitoln03.pas + COPY/LOG dvitoln03.pas dvil_debug.pas +# +############################################################################ +############################################################################ +dvitoln03.tex DEPENDS_ON dvitoln03.web dvitoln03.ch + WEAVE dvitoln03 diff --git a/dviware/ln03/rmcs/dviln03.hlp b/dviware/ln03/rmcs/dviln03.hlp new file mode 100644 index 0000000000..93fa684dc7 --- /dev/null +++ b/dviware/ln03/rmcs/dviln03.hlp @@ -0,0 +1,351 @@ +1 DVILN03 + + DVILN03 is a program to convert TeX Device Independent (DVI) output + files into a form suitable for printing on a Digital LN03 laser + printer. The "Local Guide to DVILN03" contains full details of this + program. Please report any problems or suggestions to Brian Hamilton + Kelly, or by sending electronic mail to user TEX. + + Format: + + DVILN03 file-name + + If the program terminates successfully, it will produce two new files, + with the same name, but different types. + + file-name.LN3 - the output file, suitable for printing on a Digital + LN03 laser printer using the TEXPRINT command. + + file-name.TYP - the log file, recording messages sent by DVILN03 to + the terminal, plus additional information. + + +2 Parameter + + file-name + + Specifies the TeX DeVice Independent (DVI) file to be converted to + a form suitable for printing on a Digital LN03 laser printer. + + +2 Command_Qualifiers + +/STARTING_PAGE + + /STARTING_PAGE=starting_page_number (default = *) + + This qualifier specifies the first TeX page to be converted. A + wildcard qualifier may be used, in which case, the first page number + matching the specification is used. DVILN03 accepts TeX multiple page + specifiers e.g. 1.*.19.4; see the user guide for further details. + + If you omit this qualifier, DVILN03 will start at the first page of the + document. + + + +/NUMBER_OF_PAGES + + /NUMBER_OF_PAGES=number_of_pages_to_print (default=1000000) + + This qualifier specifies the number of TeX pages to be converted. + If you omit this qualifier, DVILN03 will print the entire document. + + + +/ORIENTATION + + /ORIENTATION=image_orientation (default=PORTRAIT) + + This qualifier specifies the orientation of the document as it will be + printed on the Digital LN03 printer. Two options are available: + + /ORIENTATION = PORTRAIT + The output is intended to be printed taller than it is wide. + + /ORIENTATION = LANDSCAPE + The output is intended to be printed wider than it is tall. + +/OUTPUT + + /OUTPUT=file_spec + + The output (ready for printing on an LN03 printer) will normally be + written in the current directory, with the same name as the DVI file + and file extension `.LN3'. The /OUTPUT qualifier, which requires a + partial file specification, can be used to override some or all of + these defaults. + + This qualifier can be particularly useful for users with limited disk + quota who can use it to divert output to a scratch disk, or even send + it directly to a spooled printer. + +/LOG + + /LOG[=file_spec] + /NOLOG + + This allows the user to control whether the log file will be kept after + processing the document and optionally to provide an alternative file + specification for the file. The default for this file is to write it + in the current directory, with the same name as the DVI file, but with + file type `.TYP'. Any value provided to the /LOG qualifier allows the + user to override some or all of these defaults. If /LOG is specified, + with or without a file specification, the log file will always be + retained, even if no error or warning messages have been issued. + + If /NOLOG is specified, the file will always be deleted at the end of + processing, even if an error or warning message has been issued. + + The default action, if neither qualifier is present, is to delete the + file if no error or warning messages were issued, but to retain it + otherwise. + +/VERBOSE + + /VERBOSE (deafult) + /NOVERBOSE + + Controls the amount of progress messages sent to the user's terminal. + All messages go to the log file (see /LOG) in the usual fashion, but + if /NOVERBOSE has been specified, the terminal only shows the total + number of bytes of fonts downloaded and the page numbers processed; + warning and error messages still appear, of course. + +/LEFT_MARGIN + + /LEFT_MARGIN=left_page_margin_offset (default=300px) + + This qualifier specifies the distance (in the given unit) between the + physical left-hand edge of the paper and TeX's logical left-hand edge + of the paper. Device Independent (DVI) files are produced by TeX under + the assumption that this distance is one inch. The resolution of the + Digital LN03 printer is 300 pixels/inch; the default value is therefore + set to 300px. `px' is used to specify pixels as the unit for this + dimension; any of TeX's standard physical units (e.g. pt, mm, in) may + be used instead. + Use this qualifier with care. + +/TOP_MARGIN + + /TOP_MARGIN=top_margin_offset (default=300px) + + This qualifier specifies the distance (in the given unit) between the + physical top edge of the paper and TeX's logical top edge of the paper. + Device Independent (DVI) files are produced by TeX under the assumption + that this distance is one inch. The resolution of the Digital LN03 + printer is 300 pixels/inch; the default value is therefore set to + 300px. `px' is used to specify pixels as the unit for this dimension; + any of TeX's standard physical units (e.g. pt, mm, in) may be used + instead. + Use this qualifier with care. + +/HFUZZ + + /HFUZZ=dimension (default=100sp) + + Ordinarily, TeX never generates lines that exceed the right margin; if + it does, it issues an `Overfull /hbox' message. However, some macro + packages cause TeX to exceed the margin by a few points or so, and + these pages, when processed by DVItoLN03, will give rise to warning + messages if the right margin is exceeded by more than the value + specified with /HFUZZ. The default value of this qualifier is 100sp, + which is invisibly small (it's approximately the wavelength of visible + light!); using larger values with this qualifier can suppress the + warning messages. + Use this qualifier with care. + +/VFUZZ + + /VFUZZ=dimension (default=100sp) + + TeX is even less likely to write output below the bottom margin of the + page, but this qualifier can be used analogously to /HFUZZ (q.v.) to + suppress the resultant warning messages if it does! + +/DUPLEX_BY_PAGE_NUMBERS + + /DUPLEX_BY_PAGE_NUMBERS (default) + /NODUPLEX_BY_PAGE_NUMBERS + + Specifies whether or not DVItoLN03 should use the page numbers stored + in the .DVI file for deciding which pages should be printed on left and + right pages. Each page may have more than one number, and DVItoLN03 + will use the number (from TeX's \count0). Pages will be printed on + alternating right and left pages when /NODUPLEX_BY_PAGE_NUMBERS is + specified. When /DUPLEX_BY_PAGE_NUMBERS is specified, DVItoLN03 will + print pages with odd and even numbers on right and left pages + respectively. However, if a page has number 0, it will be printed on a + right page. The /PRINT_MODE must be specified to enable duplex + printing. + +/PRINT_MODE + + /PRINT_MODE=(print_mode[,...]) + /PRINT_MODE=(SIMPLEX,NORMAL) (default) + + Permits use of extra facilities of newer printers such as the DEClaser + models 2100 and 2200 (LN05 and LN06). Some combination of options can + be used with the traditional LN03 as well. + + The options are as follows: + + SIMPLEX Print only on one side of the paper. This is the default. + + DUPLEX Print on both sides of the paper. + + MASTER Used together with DUPLEX for producing a master for copying. + This will make the printer print on one side of the paper, + but insert a blank sheet when the left page in the copies is + to be blank. The output is therefore correctly sequenced + to be photocopied into a double-sided document. This option + can even be used with an ordinary LN03. + + TUMBLED Used together with duplex mode. MASTER may not be specified. + Print left pages upside down. + + NORMAL The opposite of TUMBLED. This is the default. + +/FEED_TRAY + + /FEED_TRAY=(option=tray_type[,...]) + /FEED_TRAY=ALL=DEFAULT_TRAY (default) + + The LN05 printer is capable of selecting paper feed from its paper tray + or by manual insertion of a sheet or envelope: this could be used, for + example, to print the first page on a manually-fed sheet of letterhead + stationery. + + The LN06 has two individually selectable paper trays and manual feed as + standard; in addition, it may be fitted with an optional envelope + feeder and a large capacity (1000 sheet) external paper tray. + + Any of these paper sources may be selected through use of the + /FEED_TRAY qualifier; the options available are + + ALL=tray_type Feed all sheets from the specified tray + FIRST=tray_type Feed the first sheet from this tray + REST=tray_type Feed subsequent sheets from this tray + + Tray types are specified through use of the following keywords: + + DEFAULT_TRAY TOP_TRAY BOTTOM_TRAY ENVELOPE_TRAY MANUAL_FEED + +/DEVICE_TYPE + + /DEVICE_TYPE=printer_type (default: LN03) + + Selects the model of printer for which output is being prepared; the + default value of this qualifier will vary from site to site, but may + readily be overridden to generate output for a different model. + + Values accepted for printer_type are: + + LN03 The traditional LN03, or the LN03-plus. Not the LN03R + PostScript printer. + LN05 The DEClaser 2100. + LN06 The DEClaser 2200. + +/TFM_DIRECTORY + + /TFM_DIRECTORY=file_spec (default=TEX$FONTS:) + + Specifies where files containing TeX Font Metrics will be found. + Only use this qualifier if you are a system wizard! + +/VIRTUAL_DIRECTORY + + /VIRTUAL_DIRECTORY=file_spec (default=TEX$FONTS:) + + Specifies where files containing the description of virtual fonts will + be found. + Only use this qualifier if you are a system wizard! + +/PK_FONT_DIRECTORY + + /PK_FONT_DIRECTORY=file_spec (default=TEX$PK:) + + Specifies where files containing packed pixel rasters will be found. If + the specification (after logical name translation, if necessary) ends + with the characters ".]", a tree-structured directory will be assumed, + with fonts of different magnifications held in separate directories. + Otherwise, a flat structure is assumed, with the different + magnifications being distinguishable by different file type extensions. + Only use this qualifier if you are a system wizard! + +/PXL_FONT_DIRECTORY + + /PXL_FONT_DIRECTORY=file_spec (default=TEX$PXL_ROOT:) + + Specifies where files containing unpacked pixel rasters will be found. + If the specification (after logical name translation, if necessary) + ends with the characters ".]", a tree-structured directory will be + assumed, with fonts of different magnifications held in separate + directories. Otherwise, a flat structure is assumed, with the + different magnifications being distinguishable by different file type + extensions. + Only use this qualifier if you are a system wizard! + +/PAPER_SIZE + + /PAPER_SIZE=paper (Default = A4) + + Controls whether the program assumes the use of European A4 (210x297mm) + paper or US (8-1/2x11in). It is insufficient just to use this qualifier + to control the output: it is also necessary to power down the printer, + move the paper size switch on the back to the desired setting, and switch + on again. Therefore, it is extremely unlikely that this qualifier will + ever be specified by a user: rather it is present so that the system + manager can define the default paper size in use at any individual site. + +2 Examples + + + DVILN03 LATEX_OUTPUT_FILE + + This command converts LATEX_OUTPUT_FILE.DVI to a form suitable for + printing on a Digital LN03 laser printer. All pages are converted + for printing in portrait form, starting one inch (300 printer + pixels) from the top and left-hand edges of the paper. + + + + DVILN03/START_PAGE=5.3.2/NUMBER_OF_PAGES=13 LATEX_OUTPUT_FILE + + As above, but convert only thirteen TeX pages, starting at TeX + page [5.3.2]. + + + + DVILN03/NUMBER_OF_PAGES=20/ORIENTATION=LANDSCAPE LATEX_OUTPUT_FILE;-1 + + This command converts the immediately previous version of file + LATEX_OUTPUT_FILE.DVI to a form suitable for printing on a Digital LN03 + laser printer. The first 20 pages are converted for printing in + landscape form, starting one inch (300 printer pixels) from the top + and left-hand edges of the paper. + + $ DEFINE MY_FONTS 'F$ENVIRONMENT("DEFAULT"),TEX$FONTS: + $ DEFINE MY_PK 'F$ENVIRONMENT("DEFAULT"),TEX$PK: + $ TEX/TEXFONTS=MY_FONTS: TESTFONT + Name of the font to test = myfont + *\table\bye + $ DVILN03/TFM_DIRECTORY=MY_FONTS:/PK_FONT_DIRECTORY=MY_PK: TESTFONT + + This is one circumstance in which a user might want to use the extra + qualifiers, for use with a font that has just been built (by METAFONT) + and is residing in the current directory. TeX (and DVItoLN03) will + expect to find MYFONT.TFM in the current directory; failing that it + will look, as usual, in the directory indicated by TEX$FONTS. + DVItoLN03 will in addition look for MYFONT.300PK in one of those + places. + + + DVILN03 /PRINT_MODE=DUPLEX /NODUPLEX_BY_PAGE_NUMBERS - + /FEED_TRAY=(FIRST=MANUAL_FEED,REST=TOP_TRAY) LATEX_OUTPUT_FILE + + Converts LATEX_OUTPUT_FILE.DVI to a form suitable for printing on the + DEClaser 2200. Pages are printed on both sides of the paper, and + DVItoLN03 does not insert blank pages when page numbers indicate it. + The first sheet of paper must be manually fed, and the rest are taken + from the top tray. diff --git a/dviware/ln03/rmcs/dviln03.ln3_publish b/dviware/ln03/rmcs/dviln03.ln3_publish new file mode 100644 index 0000000000..4b681b41d8 --- /dev/null +++ b/dviware/ln03/rmcs/dviln03.ln3_publish @@ -0,0 +1,5770 @@ +[!pc›?22 J +›?27h›11h›7 I›?52h›3475t +0;1;0y +Ba_??CXNRdO@????Fo???@O???@TKB?oKB?oKB?qSskoKC\FKB?oKTTYUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????^aO??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????iPk??LOX??BwEo???????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??NOB??@_@???r?O??B_D??Ac@O??C?W??FoE??Bg@_??T?[??K?F???kA???e?_???OH??@oAO??v?c??C_I??AsA_??G?k??GoJ??BwAo??X?o??L?K???{BO?? +i?s??@OM??@gB_??t?w??A_N??ASBo??y?{??DOO??BIC???L`C??IWP???KC_??]@G??MOQ??@KCo??g@K??NOR??@eD???u@O??AoT??A?DO??x@S??B_U??AKD_?? +w@W??BOV??AeDo??}`[??EWW??AuE???G`c??GwX??ByEO??X`g??LGY??@AEo??j`k??@g[??A]F???A`s??Bw\??BAFO??y@s??C_]??AgF_??~@w??D?^??@sFo?? +c`{??@W_??@AG???\A???J?_???[GO??^AC??Lo`???AG_??HaG??GWa??BeG_??AaK??Gwb???QH???daO??Kgc???UHO??jaS??CGe??B]H_??[a[??B@AAThYUdhT +KB?oKB?oGA?_GA?_GA?_GA?_GA?_GDSoKB?oKB?oKBHRQr?oPs[??????G@??_??E????Fb|~~{?_O??F??T???M???^???^???Z???Z?G?z?G?z?G?z?G?p?K@p?K@p +?K@p?K@p?K@_?MB_?MB_?MB_?MB_?NB~?^B~?^B~?VB??VB??Ra??ra??~~pF~~pF~~pFo???G@??_??E????Fb|~~{?_O??F??S?N{~?N~~?N~~?Rb??ra??r_?@r_? +@r_?@r_?@ra?@ra??rb_?~b~?^b~?Nb~?rb??r_?@r_?Br_?Bb_?Bb_?Bb_?Bb_?Br_?@rb?@~~~?~~~?^|~?????G@??_??K????Fb|~~{?_O??F??R?G?~@}B~@~B~ +@~bp@vr?@rq?@py?@pw?@ow?@o{???{???[???[???[???[???[???[???{???{???w?@pw?@pw?@rq?@vr?@~bp?~B~?]B~?G?~?????G@??_??E????Fb|~~{?_O?? +F??S?N{^?N|~?N~~?Bbo?Rb??rb??ra?@r_?@r_?@r_?Br_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Br_?@r_?@ra?@ra??rb??rbo?^~~?N|~?N{^?????G@??_?? +E????Fb|~~{?_O??F??T?N~~B~~~B~~~Br_?Bb_?Bb_?Bb_?Bb_??B_??B`o?B`o?B`o?N`~?N`~?N`~?B`o?B`o?B`o?B_??B_??B_?FB_?FB_?FB_?FB_?FN~~F~~~ +F~~~Fo???G@??_??K????Fb|~~{?_O??F??R?N~~@~~~@~~~@r_?@r_?@r_?@r_?@r_??B_??B_w?B_w?B_w?N_~?N_~?N_~?B_w?B_w?B_w?B_??B_??B_??B_??B_? +?B_??B_??N{B?N{B?N{B?????G@??_??K????Fb|~~{?_O??F??S?KA^?}B~?~B~?~bw?vr_?rr??pz??py??oy??o{???{???[???[???[???[???^wBo^wBo~wBo}? +?oz??pz??pz??rr_?vro?~bw?~B~?}B~?{A^?o???G@??_??E????Fb|~~{?_O??F??T?N~pF~~pF~~pFra??ra??ra??ra??ra??ra??ra??ra??ra??~b~?~b~?~b~ +?ra??ra??ra??ra??ra??ra??ra??ra??ra??ra??~~pF~~pF~~pFo???G@??_??Q????Fb|~~{?_O??F??P?N~~?^~~?^~~?W?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B +?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?N~~?^~~?^~~?O???G@??_??Q????Fb|~~{?_O??F??Q?KB~?{B~?{B~?o@o??@o??@o??@o +??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??Xo??|o??|w?@|}?N{~?Nw^?N_F?????G@??_??E????Fb|~~{?_O??F??T?N~`F~~`F~~` +Frb??rb_?Rbo?Rbw?B`w?B_{?B_}?B_^?B_N?J_N?N_^?N_^?N_|?N_{?N`w?F`w?Bbo?Bbo?Bb_?Rb_?Rb??rb??~~`F~~`F~~`Fo???G@??_??E????Fb|~~{?_O?? +F??S?N{F?N{F?N{F?F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F??Bf??Bf??Bf??Bf??Bn~~B~~~B~~~Bo???G@??_?? +E????Fb|~~{?_O??F??T?B}?Fv~?Fv~?F|p_@|p_@|p_@|p_@|pp@|pp@xop@xop@xoz@xoz@xoz@poZ@poZ@po^@poM@poM@po?@po?@po?@po?@po?@po?@v~?Fv~? +Fv~?Fo???G@??_??E????Fb|~~{?_O??F??T?F~oF~~oF~~oFza@?za@?za@?zaB?raB?raB?raF?raF?raF?raE?raM?raM?raK?ra[?ra[?ra[?raW?raW?raw?rao +?rao?rao?~~`?~~`?~~@?o???G@??_??Q????Fb|~~{?_O??F??P?N?^?Np~?Nz~?@zo??z_??~_?O^??O^??O^??O^??O^??O^??O^??O^??O^??O^??O^??O^??O^? +?O^??O^??O^??O~_?Oz_?@zo?Nz~?Np~?N?^?????G@??_??E????Fb|~~{?_O??F??S?N|~?N~~?^~~?rb??ra?@r_?@r_?Bb_?Bb_?Bb_?Bb_?Bb_?@ra?@rb??~b~ +?~b~?^`~?B_??B_??B_??B_??B_??B_??B_??B_??N{@?N{@?N{@?????G@??_??E????Fb|~~{?_O??F??U?N{^?N|~?N~~?Bbo?Rb??Rb??ra??ra??ra??rb??rb? +?Rbo?^b~?N`~?Nb~?Bbw?Bb_?Rb_?Rb??Rb??Rb??Rb??Rb?MRb?MRb?N~~@N~}@F~{@Bo???G@??_??K????Fb|~~{?_O??F??R?MB^?^b~?^r~?Vzw?P~_?O~_?O^? +?O^??O{???{??Bw??Nw@?No^?NB~?GB~?OBw?oB??oA?@oA?@o??@o[?@o[?@o]?@o~?@r~o?~~~?^~~?N[~?????G@??_??E????Fb|~~{?_O??F??T?N~~F~~~F~~~ +Fo[MF?[MF?[MF?[MF??M???M???M???M???M???M???M???M???M???M???M???M???M???M???M???M???M???M?MB~?MB~?MB~?????G@??_???????Fb|~~{?_O?? +F??V?N~@^~~@^~~@^r_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bf_?Bv_?B~A?@~Bb@}B~?{B~?O@~?????G@??_?? +E????Fb|~~{?_O??F??T?N~_F~~_F~~_Fra??ra??ra??ra??vB??VB??VB??VB??^B_?]B_?MB_?MB_?MB_?K@p?K@p?K@p?K@p?G?p?G?z?G?z?G?z???Z???^???^ +???M?????G@??_??E????Fb|~~{?_O??F??T?F~?Fv~?Fv~?Fow?B_w?B_w?B`o?@po?@po?@po?@po?@po^@po^@xoz@xoz@x_z?x_z?x_z?x_p?zap?zap?zap?zap +?zAp?ZA_?^B_?^B_?VB??O???G@??_??E????Fb|~~{?_O??F??T?Nzx@~zx@~zx@vB_?NB_?M@o?M@p?K?x?K?z?G?^?G?^???N???N???M???N???^?G?^?G?z?K@x +?K@p?MBo?MB_?FB_?VB??Vb??~~pF~~pF~~pFo???G@??_??E????Fb|~~{?_O??F??T?N~_F~~_F~~_Fra??vb??vB??^B_?]B_?MB_?K@p?K@p?G?z?G?z?G?~???^ +???^???M???M???M???M???M???M???M???M???M?K@~?K@~?K@~?????G@??_??K????Fb|~~{?_O??F??R?Nz~@~z~@~z~@oz?@oz??oz_?Ozo?OBo??@w??@{???{ +???]???^???N?G?F?K?F?K?B?M?@?N?@?N???F_?@vo?@ro?@pw?@p{?@~~~@~~~@~~~@o???G@??_??Q????Bb}~~{?_O??D??S?NoN?Nw^?Nx~?@x{?@zw??Bo??B_ +?GB~?NB~?Nr~?Nz`?B~_??~_??^_??^_??~o?B~{?Nz~B~r~B~BNBo???G@??_???????Fb|~~{?_O??F??T?F{??F{??F{??F???F???F???F???F???FB}?NB~?~B~ +@~BF@~?@B~??B~??Ff??Ff??FF??FF??FF??FN??Fn??Fn?@B~A@B~BF@~B~?~B~?VB}?????G@??_??Q????Bb}~~{?_O??D??Q?KB~?NB~?^b~?^r_?Rz_?Pw???{? +??{???[???[???[???[???{???{??@y??rz??~r_?~b~?^B~?K@~?????G@??_??K????Fb|~~{?_O??F??T??B{?OB{?OB{?OB??OB??OB??OB??OB??]BN?^B~?^b~ +?Vr{?Rzo?Pz_?O~_?O~??O^??O^??O^??O^??O~_?O~_?Pzo?Pzw?Vr{?^r~F~b^F}BNFo???G@??_??Q????Bb}~~{?_O??D??Q?K?^?N@~?Nb~?Nrw?Rz_?Pz??O~? +?o~??o]??~~~?~~~?~~~?o{???{??@y??rz??~r_?~b~?^B~?K@~?????G@??_??E????Fb|~~{?_O??F??R??B{?oB}@oB~@wAN@wAF@w?B?G?B?G?B?N~~?~~~?~~~ +?w?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?G?B?Nz~?Nz~?Nz~?????G@??_??E????Bb}~~{?_O??Fo?T?KBNF~B~F~b~F~b{FBro?Bro?@r_ +?@r_?@r_?Bro?Bro?N`{?N`~?No~?NoN?Bo??Bo??Nb~?Nr~@~z~Brz?Bo{?F_{?F_[?F?[?F?{?F`{?F~z_B~r~@~b~?{@~??????A?O?G???????@w~^~~?GC??@o? +Do@~??@~??@~??@o??@o??@o??@o??@o??@o~_Bo~oNo~oNopo^o_O^o??^o??\o??\o??\o??\o??\o??\o??\o??\o??\o??\o??^~xv~~xv~~xv{???A?O?G??E?? +??@_~^~~?GC??@s?COB??OB_?oB_?oB_?oB??O????????????????B~?oB~?oB~?oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oB~~oF~ +~oF~~oC?????_C?A???o????WNv~~oA@???f??w??@o?N_?}?Bw?F???????????}B~wN~_~?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w +?BoNN_{^~o~~B~wB????_C?A???W????]Nv~~oA@???[?@S?^o??^o??^o??[???[???[???[???[???[NwN[NwN[NwN[N?@[N_?[Fo?[Bw?[@{?{@{?{@{?{B{?{Fs? +{F_?[N??[N?@[M?B[K?B~}K^~}K^~}K^????_C?A???o????]Nv~~oA@???[?@K?~o[?~o[?~o[???[???[???[???[???[???[???[???[???[???[???[???[???[? +??[???[???[???[???[???[???[???[???[?~~{F~~{F~~{F????_C?A??Bg~~~~MNz~~oA@???S?@c?nw{N?N~^FoB~~r{?}Ns|?NbwM?@w]B_?]F_w?B_wM??wMB_? +MB_w?B_wM??wMB_?MB_w?B_wM??wMB_?MB_w?B_wM?B~~^s@~~v|?^~|~OC???A?O?G????????w~n~~?GC??@O?Do@~~_B~~oN~~oNopo^o_O^o??^o??\o??\o??\o +??\o??\o??\o??\o??\o??\o??\o??^~xv~~xv~~xv{???A?O?G??B?????w~n~~?GC??@O?CoA?BoBo^oBw~o@{{?C[o?CM_?KM_?KF??[F??[F??[F??[F??[N_?[M +_?K]o?K{w?D{{?Fw~oBo^oA?Bo????A?O?G????????w~n~~?GC??@w?DO@~~_B~~oN~~o^opo^o?O~o??~o?@xo?@xo?@po?@po?@po?@ro?@zo?@zo?O~o_O~opo^o +~oNo~oDo~_@o??@o??@o??@o??@o??@o??@o??B~@oB~@oB~@o????A?O?G??B?????w~n~~?GC??@w?DOB?roFo~oFw~oF{~?C}{?C]w?CNw?CNw?CFo?CFo?CFo?CF +o?CNw?CNw?C]{?C}{?D{~?Fw~oFo~oF_roC?o?C?o?C?o?C?o?C?o?C?o?C?o?C?~@{?~@{?~@{???A?O?G??@_????w~n~~?GC??@O?DOB~{O~~~P~~~p~?Npz?Bpz? +@oB?@oB??oB??oB??OB??OB??OB??OB??OB??OB??OB??OB~~oB~~oB~~o????A?O?G??C_????w~n~~?GC??@O?COBo~oB{~oB}~o?~}??N{??Fw??Nw?@~??B}BoB{ +^oB_~o??~?CFw?CFo?CNo?C^w?C~}?F~~oB~^oBvFo????A?O?G??@_???B?~^~~?GC??@c?CoB??OB??OB??OB??OB??OB~~oN~~oN~~oN??OB??OB??OB??OB??OB? +?OB??OB??OB??OB??O^??O^??O^?_o^?po]?~oM?~oC?~_??????_C?A????????MNz~~oA@???S?@[?^~?F^~?F^~?F[??F[??F[??F[??F[??F[??F[??F[??F[??F +[??F[??F[G?F[G?F{M?F{N|~wN|~oF|~????_C?A???W????MNz~~oA@???S?@S?~~C^~~C^~~C^]K?B[K?@[K?@[K?@wM??wM??wM??oFC?oFC?oFC?oFC?_Bk?_Bk? +_Bk??@{??@{???w?????_C?A???W????MNz~~oA@???S?@S?~~C^~~C^~~C^F??FF??FF??FMG?BMG?BMGwBMH{BMH{BMHkBMHkBkJk@kJk@kJk@kJC@{NC@{NC@wM?? +????_C?A???W????MNz~~oA@???S?@S?~ncN~ncN~ncNwM??wFC?oFc?_Bk?_@{??@{???w???{??@{?_Bk?oFc?oFC?wM??{M?@~~C^~~C^~~C^????_C?A???W???? +MNz~~oA@???]?@S?~~C^~~C^~~C^[G?B[K?@[K?@wK?@wM??wM??oMC?oEC?oFC?_FK?_FK??BK??BK??Bk??@w??@w??@w???w???w???w???{???[?f_[?v_K?~_C? +~???]???????_C?A???W????MNz~~oA@???S?@O?~n{N~n{N~n{NBk?FBm?BBn?@?N_??Fo??Bw??@{?_?{?o?[?w?K?{?CM}??M^??MN_?M~~{N~~{N~~{N????_C?A +???o????]Nv~~oA@???[?@K?_?{?wB{?{F{?}N_?MM??FK?@Fk?BBg?BBg?B@o?F@o?F@o?F@o?F@o?F@o?F@o?F@o?F@o?FBw?FBg?BBg?BFk?BFK?@MM??}N_?{F{? +wB{?_?{?????_C?A??@w????]Nv~~oA@???[??{?o?F??]?@{?Fw?^w@~oF^?[[@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F~^~|~~v{???A?O?G??B?? +??@w~^~~?GC??@o?CoB_FoBw^oB{~oD}}?K^w?KN_?[N_?[N??[N??[???[?_?[?_?[?o?K?o?K?w?C?{?C?}???^???NoA?FoB?BoB_?oBo?OB{??\}??^~~o^~~o^~ +~o[???A?O?G??B????@w~^~~?GC??@o?CoBoNoB{~oB}~oC}{?K]o?K]_?K]_?K?_?K?o?K?w?K?}?F?~oB?~oB?~oC?{?K?o?K?_?[?_?[???[???[N??[N_?[N_?[N +o?L~{?N}~oF{~oB_No????A?O?G??@_???@w~^~~?GC??@o?DO??}???~???~_??z_??zoA?xoA?woB?woB_wOB_w?@ow?@ww??{w??[w??]w??Nw?B~~p~~~p~~~p{? +w???w???w???w???w???w???~p{?~p{?~p{???A?O?G??B????@w~^~~?GC??@o?CoB{~oF{~oF{~oC[???[???[???[???[???[???[???[??B{NoB{~oB{~oD{{?K[ +o?K?_?[?_?[???[E??[N??[N_?[No?[^w?L}}?F}~oFw^oB_Fo????A?O?G??B????@w~^~~?GC??@o?Co??~oB?~oF_~oNoooNwo?L{o?K{o?K]???]???N??BNNoBv +^oB~~oF~{?C~w?K^o?[N_?[N??[N??[N??[M??[]_?[]o?[{w?N{{?Fw~oBo^oB?No????A?O?G??B????@_~^~~?GC??@s?Co?F??B~~o^~~o^~~o[Fw?KFw?C?{??? +}???]???N???N???F_??F_??Bo??Bo??@oA?@oA?@oA??oA??oB??oB??oB??oB??OB??OB??OB??OB??OB??O??????_C?A???o????]Nv~~oA@???[?@K?o@{?{F{? +}N{?^N?@FK?@Bg?BBg?BBg?BBg?BFK?@NM?@}N{?wB{?{F{?}N_?NM?@Bg?BBw?F@o?F@o?F@o?F@o?FBg?BFk?B^N?@}N{?{F{?o@{?????_C?A???o????]Nv~~oA@ +???[?@K?w@{?{F{?~N{?^n_@Nm?@B{?BB{?B@w?B@w?F@w?FBw?FBw?FFm?F^n_F~N{F}F{Fw@{F?G?F?G?F?G?B?K?BFm?BFn?@Fn_?Nnw?~f{?~@{?{?[?????_C?A +??@G????ENv~~oA@???c?@C?_?K?_?K?_?K?_?K?w@{?}F{?~N{?~nk?f}K@b}K@`}K@`}K@`}K@boK?foK?~_K?~?{?}B{?wF{?_N{?_NK?_MK@b}K@b{K@b{K@b}K@ +b}K@f~K?nn{?~F{?}B{?{?{?_?K?_?K?_?K?_?K?????_C?A??@G????]Nv~~oA@???[?@C?}@{?~F{?~n{?F~_@B}?@B{?@B}?@?N_@?Nw??F{?_@{?o?{?o?[?o?K? +o?K?o?K?o?K?o?K?????????????????????o?C?w?K?w?K?w?K?o?C?????_C?A??BW????]Nv~~oA@???[??S?B`{^Fp{^Fp{^Fp{^Fp{^Fp{^???????MFp{^B_?? +?G@??_??K????@b|~~{?_O??H??R?@r_?Rz_?V~o?V~o?V^o?V^w?F^w?F^w?F\{?F|{?F|{?Bw}?@o}???}???^???^?G?^?G?N?G?N?K?F?K?F?K?F?M?B?M?B?MBB +?^B`?~Bp@~Bp@~`o@~`o@~`o@vpo@vro@vro@rr_?rr??O???G@??_??o????Fb|~~{?_O??B_?F?Bo}^fx{[F@w]Bo}Fo{F????_C?A??Ag????ENv~~oA@???c??o? +??y?B{?Nw?^o?^??]?@{?Bo?F_?]??w?B_?N??{?@o?F??[?@o?F??[?Bo?N??w?B_?]?@w?N?@{?F_?{?Bo?]?Fo?}?Bo?M????_C?A??@_????ENv~~oA@???c??o? +@o?^?B{?^_Bw?N??w?F_?{?B_?]?@o?F??[?Bo?N??w?B_?M??w?B_?M??{?Bo?F??]?@w?Fo?N_?}?@{?Bw?Fw?No?^??[?????_C?A??@G????uNv~~oA@???S?@C? +_?K?_?K?_?K?_?K?_wK@b}K@f~K@~n{?}B{?w?{?w?{?}B{?~n{?f~K@b}K@_wK@_?K?_?K?_?K?_?K?????_C?A???o????uNv~~oA@???S?@K???{???{???{???{? +??{???{???{???{?~~{F~~{F~~{F~~{F??{???{???{???{???{???{???{???{?????_C?A??B?????aN~~~oA@???K??_?NFz}~nz{{N@{^r{N????_C?A??BW???? +aN~~~oA@???E??W?Fb{~Nr{]????_C?A??@G????ENv~~oA@???c?@C??M?@?M?@?N?@?N?@?N_@?N_??N_??Fo??Fo??Fw??Bw??Bw??@{??@{?_@{?_?{?o?{?o?[? +o?[?w?K?w?K?{?K?{?C?{?C?}???}???~???^???^???N_??N_??No??Fo??Fo??Bo??Bo??????_C?A??BW????MNz~~oA@???S??W?Fb{~Nr{]???????????]Nr{~ +Npw???A?O?G??K?????w~n~~?GC??@g?@o?{^fx}^bo??????????Bp}^fx}^F`wNB{^Bo???G@??_??K????Bb}~~{?_O??B??R?Nz~?~~~@~~~@~~~@o?????????? +?????N~~@~~~@~~~@~z~?o???G@??_??K????Fb|~~{?_O??F??R??@~?KB~?MB~?^Bb?~b??vr{?rz~@pz~@wzn@w~F@{}B@{]B@{[@@{[@@{[@@{[@@{]B@{}B@w~F +?wzn?pz~?Rz~?Vp{?Na?@~Bb@}B~@{B~?oB~?????G@??_??u????@b|~~{?_O??H??L?N{^~p~~Fo[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[? +@o?F??[?@o?F??[?@o?F??[?@o?F?N{^~p~~Fo???G@??_??E????@b|~~{?_O??H??L?N{^~p~~Fo?[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[ +?@o?F??[?@o?F??[?@o?F??[?@o?FN{^~p~~Fo???G@??_??o????BB|~~{?_O??B_?F?F@w^Bw]Bo{F@p{~Nrw]????_C?A??@G????eNz~~oA@???C?@C?~~{@~~{@ +~~{@~~{@????_C?A??@G????iNv~~oA@???W?@C??M?@?N?@?No@?Nw@?N{?oB{?w@{?{?{?}?K?~_C?~o??^o??^o??~o??~_C?}?K?{?{?w@{?oB{??N{??Nw@?No@ +?N?@?M?@????_C?A??@G????iNv~~oA@???W?@C?Bo??Fo??^o??~o??~_C?}?[?{?{?w@{?_B{??N{??Nw@?No@?No@?Nw@?N{?_B{?w@{?{?{?}?[?~_C?~o??^o?? +Fo??Bo??????_C?A??@G????E?????A@???C?@C?~~{@~~{@~~{@~~{@????_C?A??@G????ENv~~oA@???c?@C?Bo??Bo??Fo??Fo??No??N_??N_??^???^???~??? +}???}???{?C?{?C?{?K?w?K?w?K?o?[?o?[?o?{?_?{?_@{??@{??@{??Bw??Bw??Fw??Fo??Fo??N_??N_??N_@?N?@?N?@?M?@?M?@????_C?A???o????ENv~~oA@ +???c?@K??N?F?NoF?NwF?B{???{???[???[???[???[???[???[???[???[???[???[?o?[?~o[?~oK?~oK?~o[?o?[???[???[???[???[???[???[???[???[???[? +??[???{??B{??NwF?NoF?N?F????_C?A???o????ENv~~oA@???c?@K?^o??~oC?~oK?w?[?_?[???[???[???[???[???[???[???[???[???[???[??@{??N{F?NwF +?NwF?N{F?@{???[???[???[???[???[???[???[???[???[???[?_?[?w?[?~oK?~oC?^o??????_C?A??@w????WNv~~oA@???M??s?@poNF_{]BpwFF?[[@poFF?[[ +@poFF?[[@poFF????G@??_??K????@B~~~{?_O??CO?R??K?@_K?@_K?@_K?@_K?@_K?@_K?@_K?@_K?@_K?@_K?@_K?@_K?@_K?@_K?@n~~@~~~@o????A?K?K??@_? +???W~^~~?GC??A??Fo??o?C??K?@??B??O??w?K??M?B??B_?o??k?[??J?F??Ao@o??E?{??@_N???WBo??B@w???o]???KF_??@bo???W{???EN???@v_???Lw??B~ +^oA?~~{?_?Fo?G?@{?B??^?@o?B_?[??w?F_?M?Bw?B??~?@o?N~@~p~~o^{^o???G???o??K????BB|~~{?_O??Fo?Y?N~~@oB~~p{?w?D{?M?@}?B_?^??w?Fo?]?@ +{?F_?^?@w?Fo?]?@{?F_?^??w?Fw?M?@^?B_?Rw?wN{^?MB~NoB_?V_?w?Fo?M?@{?F_?]?@w?F_?}?@w?N_?]?Bw?F_?}?@w?N_?]?@w?Fo?]?@}?B_?Vo?~~{~?N~~ +Bo????A?E?K??C_????W~^~~?GC??AC?E_??}?KB?N{N?w?^n?N_@~?B{?F_?~??w?Nw?K?B^?A??ro?_?K}?G?BN_???rw???K^???BFo???@{????^????Fo???@{? +???^????Fo???@{????}???BN_???rw???K{?G?B^?A??^_?_?Fo?K?@{?F_?M?F[?A?Fro??N{^??Bw@o????A?Q?K??B?????o~^~~?GC??@{?FOB~~o[?~~{~?M?@ +^?B_?^??w?F_?]?@o?N_?[?Fw?E?@}?@_?~_?O?Nw?C?B}?@?@~_?O?^w?C?F}?@?@~_?O?^w?C?F}?@?@~_?O?^w?C?F}?@??~_?O?Nw?E?B}?@_?^_?W?Fw?F??}?@ +w?F_?^??w?D{?N~~NoB~~o[?????_M_A???o????KNv~~oA@???^?@k?~~~~?N~~~oB_?^_?w?F_?M?@o?B_?[??w?F??]?@_?F_?W?@w?EB?]?@_oF_?OK?w?CB?MA@ +?oB_~oK?wN{B?MA@?oB_?OK?w?CB?M?@?oZ_?OKEw?C?@m?@??N_?O?Bw?C??}?@_?N_?W?Bw?F??}?@{?F~~~{@~~~~?Owg??@ERsxS???????????????????????? +, +yA_??CXNRdO@????Fo???@O???@TKB?oKB?oKB?qSskoKC\FKB?oKS|YUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????UAS??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????\@o??MwY??@vFO???????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??@oC??Aw@???R?S??IGD???Y@_??j_W??AOF??BW@o??Z?_???_H??A[AO??U?g??N?I??@kAo????o??H_K???oBO??A?w??HoM???oBo??`?{??NoN???{C??? +l@????_P??@_CO??t`C??CwQ??AcC_??B@K??GOR??B[Co??U@O??IoS????DO??[@S??M?T???_D_??W@W??J?U???CDo??U@[??K?V???SE???`@_??KOW???yEO?? +b`c????Y??@uE_??y@g??DwZ??BSEo??Q`o??K?[???uFO??t`s??Aw]??@gF_??D@{??Bg^??AmFo??Ga???Jg_??B_G???~a???F?`??A[GO??saC??@ga??@_G_?? +haG??Koa??BmG_??`aK??Nwb??@uH???JaS??EGd??A?HO??lAS??LGd??BuHO??PAW??G?e??A{H_??BA[??Eof??AyHo??|a[??BGg??@mI???ma_??B?{AThYUdhT +KB?oKB?oGA?_GA?_GA?_GA?_GA?_GDSoKB?oKB?oKBHRQr?oPs[??????GBO?_??K????BB|~~{?_O??Fo?X?N~~~oB~~~{?w?Fw?M?@w?B_?[??w?F??M?@o?F_?W?@ +w?E??]?@_oF_?WK@w?CB?M?@?oB__OK?wN{B?MB~?oB__OK?w?CB?M?@?oB_?OK?w?CB?M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??~v{??N|~??????A? +W?K??C_????W~^~~?GC??AC?F_??}?[E?Nw^@g?^N?^?@~?Fw?N_@~?@o?^w?G?F^???@vo???[}???FN_??@bw???W^???EFo???@{????^????Fo???@{????^???? +FoB}Np{?~b{}?G?FN_A?@rw?_?\{?G?F^?A?@~_?_?^o?W?Fw?N?@{?Fw?]?N~_F?Nw~@_BwBo????A?K?K??B?????o~^~~?GC??@{?FOB~F~{^~p~~F}?@{?B_?^?? +w?Fo?M?@{?B_?^??w?Fo?M?@{?B_?^??w?Fo?M?@{?B_?^??w?Fo?MB~~oB_~~{?w?Fo?M?@{?B_?^??w?Fo?M?@{?B_?^??w?Fo?M?@{?B_?^??w?Fo?M?@{?B_?^?? +w?Fo?N{^~p~~F~{^????_G?@???W????KNv~~oA@???^??w?~r~~N}?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?^{~ +~r{???A?I?G??B?????o~^~~?GC??A??C_Bo~oNo~oK?N???N???N???N???N???N???N???N???N???N???N???N???N???N???N???N???N???N???N???N???N??M +N??^N??^N??^N??^N_?FF_?]BoB{@oBo?o????A?Q?K??B?????o~^~~?GC??@{?F_B~N~_~~r~wN}?@w?^_?]?@w?Fo?M?@]?B_?R_?w?C[?M?@B_B_?O[?wGCB?MB@ +?OB_wOC?wNC@?MBx?oB_vOK?wL{F?MANBoB_`o{?w?K^?M?@F_B_?Rw?w?D{?M?@^?B_?^_?w?Fo?M?@{?F_?]?Bw?Fo@~{~~B~~N~o~????_I?A???o????KNv~~oA@ +???^?@[?~v{?~v{?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?C?w?D_w?D_w?D_w?D_w?Dow?Dow?Cow?Cww?C{w?C~~~{~ +~~{~?????GBo?o??K????BB|~~{?_O??Fo?d?N{@?N_^~oK?~@~_?oB{?M?B?No?W?[?|_@_@oBu?E?F?NW?W?w?{o@_B_Br?E?M?NK?W@q?{O@_FGBp?E?[_NC?WBb? +{?@_MKBo?E?woN??WF@_{?@_[EBo?E@oWN??WM?o{?@_wBBo?EB_KN??WK?X{?@_o@fo?EB?E^??WG?N{?@__?~o?EA?B~??{??F{?B~Bw^~F~{N`~{^?????G?o?o?? +K????BB|~~{?_O??Fo?\?N{@~`~~?~w^w?N_?]?Fo?B_B{??W?~??E?^o?@_Fk??WBz??E?{o?@_^K??WNb??EBoo?@_{KC?WMB@?EB_oo@_oKK?WKBF?EA?po@__K{? +W?B^?E??v_@_?Nw?W?B{?E??~?@_?N_?W?Bw?E??{?Bo?M??~o~_?N{No?????A?Q?K??C_????W~^~~?GC??AC?F???}?C??N{N?G?FF_B_?vo?{?Fw?N??{?@w?M?@ +N?B??ro?o?K}?K?FN_B?@pw?_?[^?G?NFoA?Bp{?_?{^?G?NFoA?Bp{?_?{^?G?NFoA?Bp{?_?{]?G?FN_B?@rw?o?[{?K?B^?B_?v_?w?Fo?N??{?Fw?M?B^?A?Bp{? +?N{N??Bw?O????A?y?G??B?????o~^~~?GC??@{?EOB~~o[?~~{^?M?@N_B_?V_?w?Fw?M?@{?B_?^?@w?Fo?]?@{?F_?^?@w?Fo?]?@{?B_?^_?w?Dw?M?@N_B_~p{? +wN{F?M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??N{~??B~No??????_C_B??@G????ENv~~oA@???h?@o??N_@??B~BoA?@pw? +w?L{?N?@}?Bo?N??]?B_?Vo?w?K{?K?BN_B?@rw?o?[]?G?FFoA?Bp{?_?{^?G?NFoA?Bp{?_?{^?G?NFoA?Bp{?_?{^?G?NF_A?@rw?o?[}?K?FN?B??vrow?Lw}MC@ +{@rr?N?L}_B_Bvw?_@{]??B~Bo_?}?sG???KA???F?o??BoM??B{Bo??}?[??N_F??Bw?o??{?C???A?K?K??B?????o~^~~?GC??A??F_B~~oC?~~{N?M?@FoB_?Ro? +w?D{?M?@]?B_?^_?w?Fw?M?@}?B_?^_?w?Dw?M?@^?B_?Ro?w?C^?MB~BoB_~oK?wGCF?M?@BoB_?O{?w?C]?M?@F_B_?Pw?w?C]?M?@N_B_?Rw?w?C}?M?@NbB_?Vwo +w?D{MN{~~Bb~N~_^??B_Bo???G@W?_??Q????@b|~~{?_O??GO?Q?MAF?^a^?Rr{?Pzo?Oz_?O^??O^??O]??O]??O]??O{??@{??Bw??Nw@?No^?Np~?NB~?KB~??B{ +?OBo?OB??oB??oA??oM??oM??oM??o]??o^??O~??P~_?V~o?NL~?KK^??????A?E?K??B?????o~^~~?GC??@{?F?B}~~{F~n~~@pzo_?[M{??F@n??@_Zo??WF{??M +?~??B?No??oB{??K?~??B?Bo????{????N????Bo????{????N????Bo????{????N????Bo????{????N????Bo????{????N????Bo????{????N???MB~^oB_~v{? +????_B?B???o????KNv~~oA@???_?@s?~r~}F~{~~`~_?]?@w?F??M?@o?B_?[??w?F??M?@o?B_?[??w?F??M?@o?B_?[??w?F??M?@o?B_?[??w?F??M?@o?B_?[?? +w?F??M?@o?B_?[??w?F??M?@o?B_?[??w?F_?K?BW?B??v??_?[o???NM???Fpw??NoN??Bo?o????A?K?K??@_????o~^~~?GC??A??FoB~B}@~~o~_^~?@_?~o???F +w?C??}?@??N_?w?Bo?M??[?B_?F?@{?@_?^??G?Fo???Bu????|_???NW???Fb???@wo???]K???N@_??BoW???{E???]?o??F_K??BwB_??{?W??N?E??Bo@o??w?K? +?M?B??B??O??o?C??K?@?????G@g@???E????BB|~~{?_O??G??k?N{N~`~{B~{N~`~{B~_?{?Fo?^??w?F??N??w?F??M?@{?L_?M?@{?L_?M?@{?L_?M?@e?\o?K?B +e?[o?K?Be?[o?K?Bf?[o?G?FB?{W?G?FB?{W?G?FB?{W???N@`wK???N@`wK???N@`wK???N@rwK???]?roE???]?roE???]?roE??A{?V_B??A{?V_B??A{?V_B??B{ +?N?B??Bw?N?@??Bw?N?@??Bw?N?@??@o?M????@o?M????@o?M???????G?o?o??E????BB|~~{?_O??Fo?^?Nw^~@~}F~o^w?^o?[?B{?A?@v??_?{o???NE???F`o? +?BwK???{B_??^?W??F_B??Bo?o??{?C??M?@??B_?o??w?[??J?F??AwBo??E@{??@o]???KN_??@bo???\w???B}?A??^??o?F_?]?@w?No?}?F~o^w^~{F}F{???A? +K?K??@_????o~^~~?GC??@{?G?B~B}B~~o~_~~?@_?~_?O?Fw?M??{?F_?E?@{?@_?~????Nw???Fu???Bwo???{K???^@_??F_[??BwB???{?{??M?F??B_?o??o?K? +?K?B??B??o??o?K??K?B??B??o??o?K??K?B??B??o??o?K??K?B??B}^o??~f{?????_A_A???o????MNz~~oA@???S?@O?~?[?~`{?Fbw?Ff_?Ff_??F???F???F?? +wF{?}F{?~F??Nf??Fv??Bv?KBv?KBv_KFv_KNnwM~N{F}MK@????_D_A???W????ENv~~oA@???_?@S?[???^o??^o??[???[???[???[???[???[???[???[???[??? +[No?[N{B{KKF{GCF{??N[??N[??][??][??][??][??][??][??][??][??N{??N{GCF{KKBKN{@KNw?????_M?@???o????MNz~~oA@???S?@??oB~o^v`wNF_]]@w? +Bo?N??{?Bo?N??{?Bo?^?@w?Nk@{wN`o{B~?Bo???G@W?_??K????@b|~~{?_O??G??T??B??OB{?OB{?OB??OB??OB??OB??OB??OB??OB??OB??OB??]BN?^B~?Vbw +?Rr_?Pz_?Pz??O~??O~??O~??O~??O~??O~??O~??O~??Pz??Pz_?Rro?Vrw?^b^F}BFFo???GB_?O??E????Bb}~~{?_O??D??P?K?N?N?~?F`w?Bro?@z_?@z_?O~_ +?O~??^~~?^~~?O{???{???{??@{??@w??By??Vr??^b`?N@~?K?^?????G@O?O???????@b|~~{?_O??G??O??@}?N}?|{BpwNF_?M??w?B_?M??w?B_?N{N~o~_?M?? +w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?NwN~_{???A?I?G??@_????_~n~~?GC??@{?D???_?^_zo~o~ox{^?w{]??]{??]{??]{??]{??]{??]{??{]?@{^?B{ +FoBkBo?K???K???[??B{^oBw~oN{~o[]o?[N??{F??wF??wF??wN??{]_?\{w?Nw~oF?No??????_D_A???W????ENv~~oA@???_?@W?[???^o??^o??[???[???[??? +[???[???[???[???[???[???[Nw?[N{@{MKB{KCB{G?B{G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B~}[~~}[~????_B_@????????KNv~~oA@ +???^??g?]?@{?Fo?^?@w?????????????????F??^_@}?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?N{B~oK???A?S?C??LB~~~{o~^~~?GC??A_?B???@w?N +_?}?Bo?F??????????????????z_B}?N??{?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?MBo{N@w{F~oN{?????G@??_??E????@b|~~{?_O?? +G??T?F???F{??F{??F???F???F???F???F???F???F???F???F???FBwBvBwBvBo?VBo?F@w?F?{?F?]?F?N?N?N?N?^?N?|?N?{?F@w?FBo?FBo?FB_?VB_?VB??~~r +F~~rFo???G?w?O???????@b|~~{?_O??G??J?F??^o@~?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?N{F~o[???A? +c?K??@_????w~n~~?GC??@O?Go@o~K?N?F~~{r{?~{KzN?Bo_P|w?N??Bv??{??N[?@o??\o?F??@v??[??F[?@o??\o?F??@v??[??F[?@o??\o?F??@v??[??F[?@o +??\o?F??@v??[??F[?B~xv~}@~~f^~wF????_D_A???W????MNz~~oA@???S?@W?[Nw?^~{@~}KB{KCB{G?B{G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B +[G?B[G?B~}[~~}[~????_A_A???W????MNz~~oA@???S?@O?_@{?wF{?]M?@NK?BFG?BB_?FB_?FBo?NBo?NBo?NBo?NBo?NBo?NB_?FFg?FFG?BNK?B]M?@wF{?_@{? +????_D_A???W????MNz~~oA@???\?@S?[No?^~{B~{KF{GCF{G?N[??N[??^[??][??][??][??][??][??][??^[??N{G?N{GCF{MKB[N{@[Nw?[???[???[???[??? +[???[???[???~o[?~o[??????G@??_??K????Bb}~~{?_O??FO?T?MAN?^A^?^bw?Rro?Rz_?Pz??P~??O~??O~??O~??O~??O~??O~??P~??Pz_?Rz_?Rro?Vrw?^b^ +?]BF?OB??OB??OB??OB??OB??OB??OB??OB{FoB{Fo????A?k?C??@_????w~n~~?GC??@O?Bo@oNn|~~vno]^@w{?@o?F??[?@o?F??[?@o?F??[?@o?F??[?B~@~{F +????_J?@???o????MNz~~oA@???S??s?}?v}BpwN@owFB?[KBo?~?NwB~?^oBo?^?pwBF?[[@poNF`{N~o^r?o???GAo?O??E????Fb|~~{?_O??F??L?E??W?@_?E?? +[?@o?F_?^?B~F~{^[?@o?F??[?@o?F??[?@o?F??[?@oEF?W[@`oEF?W{?r_B{?F????_D_A???W????MNz~~oA@???S?@W?[G?B^~_B^~_B[G?B[G?B[G?B[G?B[G?B +[G?B[G?B[G?B[G?B[G?B[G?B[G?B[K?B[M?B{N?BwJ{~oH{~????_C?A???W????MNz~~oA@???S?@S?~}C^~}C^]K?F[G?B[G?@[G?@wK??wK??wK??oEC?oEC?oFC? +_BK?_BK?_B{??@{??@{???w???w???w?????_@_B???W????MNz~~oA@???S?@w?~~fNN~~xrr{ww?KNMM?@@rb_?o\o{?KB[B?B?v?o@oN_KG[@w@aE?]?Wb_F?E[w? +o?vK?K?Lr?B?B^o?_?|{?G?F]?A?@v_???[w???BK?????A?O?G????????w~n~~?GC??@O?DoB}wr~}wr~oo?^_o?F?oOA?wo??\o??Lo??F_??F???N???N_??\oA? +woA?wOB?o?F__?Nw_?^~wV~~wV{???A?O?G??@_????w~n~~?GC??@s?DOB~wP~~wP|wo?\o_?Lo_?Do_?F_o?B_o?B_o?B?WOB?WOB?[OA?KoA?KoA?No??Fo??Fo?? +B_??B_??B_??@_??@_??@_???o?N?oAN?OBN?OB}???{????????_M?@???W????MNz~~oA@???S?@??~N~{~prwBF_MN?W]@`wEBw?Fo?N??}B@{K@woFb_NE?]W@|w +~v~~^o???G?g?_??K????Cb|~~{?_O??Fo?Q?K?N?N?~?F`w?B`o?@r_?@z_?Oz??Oz??Oz??O~??o~??o~??o~??o~??o~??o~??o~??o~??o~??o~??o~??o~??oz? +?Oz??Oz??Pz_?Pr_?B`o?F`w?N?~?K?N??????A?I?G??E????@G~^~~?GC??@w?BoA??[?@}?F~?[[@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@ +o?F??[?@o?F??^|~~v{???A?I?G??B????@G~^~~?GC??@w?C_B_BoBwNo?{^??M}??E{?CFw?C^w?K^w?K^o?K^o?KMw?K?w?K?w?K?{?C?{???}???^???N???F_?? +BoA?@oB??OB_??@o??Kw??K[??KM_?F~~oF~~oF~~oC???A?I?G??B????@G~^~~?GC??@{?C_B_BoBwNo?{~??[{??]{?C]{?C}w?C]{?C?{?C?{?C?}???]???^_B? +FoB?Bo??N???}???{?C?{?C?w?K?w?KMw?K^w?K^w?K^w?K^{?CF{?CM}??{^?BwNoB_Bo??????_A_A???W????QNv~~oA@???]?@O??F???F???F_??Fo??Fo??FW? +?F[??FK?_FC?oFC?oF??WF??[F??KF??EF??FF??BF??@f??@v??~~{N~~{N?F???F???F???F???F???F???F???N{F?N{F????_A_A???o????QNv~~oA@???^?@G? +FM??~N{?~F{?~B{?~?{?B???B???B???B???B???B???b@{?zB{?~F_?NN??FM?@FM?@?K?B?K?B?K?B?K?BBk?BB{?BB{?BB{?B@}?@@m?@Bn??NFo?}B{?w?{????? +?G?g?_??K????Cb|~~{?_O??Fo?Q??@~?KB~?MBb?^B_?Vb_?Rr_?Rr_?Pw??@w???w???{E?K{~?M|~?F~o?B~_?P~_?P~??O~??o~??o~??o~??o~??oz??oz??pz? +?pz_?Pr_?Rro?F`w?N?~?K?N??????A?I?G??C_???@G~^~~?GC??@{?C_?E??B}~oN}~oN}~oKEo?CBo??Bw??B[???K???M???F???B???B_??@o??@o???oA??oA? +?oB??oB??OB??OB??OB??OB_?OB_?OB_?OB_?OB_?OB_?OB_?OB_?O??????_A_A???o????QNv~~oA@???^?@G?o?{?{B{?]F_?NN??FM?@Bk?@Bk?@Bk?@Fk?@Nm?@ +^m??~FC?}B{?{@{?w@{?{F{?]N{?NNo@Fn_@Bm?BB{?B@{?B@w?B@w?B@w?BB{?BBk?@Fm??^N_?}B{?w?{??????G?g?_??K????Cb|~~{?_O??Fo?Q?K?N?N?~?F`w +?Bro?@z_?@z_?O~_?O~??O~??O~??o~??o~??o~??o~??oz_?pz_?pzo?rrw?~b^?~BN?wB@?oB??OB_?OB_?Pz_?@zo?@xw?@w{?@w]?NoN?N?B??????A?Q?K??B?? +????~^~~?GC??AG?F_??N_??_F{??K@r??B?wO??wK???MB???B_o???wK???MB_??B_w???wF???M@o??B_M???o@vwN{?N}B~?@}?Fo?N??[?Bo?F_@{??{?^_?B_N +[??[Br??F`ww??{{E??NN@o?Bv_K??~oB_?N{?[?F}?BE@z??p_}w?{K^F_^Bn_~~?^_B~?@????_N_@??@G????ENv~~oA@???_??w?{?N{Bpw]@roFN?{{BroNN??} +?@w?Fw?F_?N??{?@o?F??K??o?B??K??o???????????????w?Bo?^?@{?F_?????G?w?O??W?????B|~~{?_O??GO?D??w^Fp{^Fp{^Fp{MB_wMB_wMB_wMB_wM???? +???MFp{^B_????A?c?K??C_???Bg~N~~?GC??AS?FoBo?O?K~?K?BhoF??{MFw?FBfzo?o^}~oKFrL{@@or_??[K{??FBF??@oow??[KN??FB`o?B_WM??wFBoA[?o[? +~GKB?NB@?o??oGCF?MB?FoB_w@o?[F?w?F`oK??wMF??FB`_?@wwW??MME??@r`__?[wWG?BMEB??R`_w?Cw[M??[B@o?F?w]?B_FB_?o@{W?G?F????_B_@??@_???? +ENv~~oA@???M??W?B`{~NrwoKB?wE@oMBoW???A?k?C??C_???Bg~N~~?GC??Aw?Ao??@w?Bo?N??]??[?@o?B_?M??[?@o?B??M??w?B_?E??[?@o?F??[?@o?F??[? +@o?F??[?@o?F??[?@o?E??w?B_?M??o?F??[?B_?M?@o?F??w?B??[?B_?K?@o???GAo?O??Q????Mb{~~{?_O??J_?J??[?B_?]?@o?M?@o?F??w?B_?K?@o?E??W?B +_?M??o?B??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?B_?M??w?B_?F??[?@w?B_?F??[??w?@o?F_?M??[?????_C_B??@G????cNv~~oA@???_?@o??E????@_ +????W????E????@_????W????E????@_????W????E????@_????W????E????@_????W???~~~~B~~~~o{?W????E????@_????W????E????@_????W????E????@_ +????W????E????@_????W????E????@_??????A?M?C??E????A_~~~~?GC???w?@_?MFr{~Nb?oKB_WF?wN@_???G?w?O??W????IB~~~{?_O??@O?D??w^Fp{M???? +?G?g?_??Q????Mb{~~{?_O??JO?O??B??K??w?B_?E??[?@o?B??M??w?@_?F??[??o?B_?M??W?@o?F??M??w?B_?F??[?@o?B_?M??W?@o?F??K??w?B_?E??[?@o? +B??M??w?@_?F??[??o?B?????G?w?O??W????Bb}~~{?_O??D??D??w^Fp{M??????????????w^Fp{M????_B_@??@_????MNz~~oA@???\??S?B`{^Fow????????? +????B`{^FpwWE@_[B?oM@oG?????_C_B??@G????_Nz~~oA@???K?@o?~~~~B~~~~o{??????????????????????????????????????????N~~~o~~~~{N????_B_@ +??@_????yNr~~oA@???l??[?^v{B?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?v|~?????G?w?O??E????Mb{~~{?_O??JO?F?F|~WE@_WE@_ +WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@~^o????A?M?C??C_????W~^~~?GC???w?@_?WN@oM@_[B?oK^Nr{}F????G?g?_??W????BB|~~{?_O?? +@O?M?@w]F`w^N`w]F`w???A?a?G????????W~^~~?GC??A??FO??}KKN?NzvFw?N^pz??r{]w?C^Fm??B_B_??w?w??M?M??B_B_??w?w??M?M??B_B~~~{@~~~~?]?? +B_B_??w?w??M?M??B_B_??w?w??M?M??B_B_??w?w??M?M??B_B_??w?w??M?M??B_B_??w?w??M?M??B_B}p~{?~k^~?????G@W?_???????@b|~~{?_O??G??V??Bw +?OB~?wAN@{AB@}A@@}A?@}???M???M???M???M???M???N~~@~~~@}??@}??@}??@}??@}??@}??@}??@}??@}??@}??@}??@}??@}??@}??@}??@}??@~zB^~zB^o?? +?G@W?_???????@b|~~{?_O??G??V??Bw@oB~@wAN@{AB@}A@@}??@}??@}??@}??@}??@}??@}??@~~~@~~~@}??@}??@}??@}??@}??@}??@}??@}??@}??@}??@}?? +@}??@}??@}??@}??@}??@~zf^~zf^o???GAO?o???????@b|~~{?_O??G??c??Bw_r{??Nzf^oA?B~~o?K?BN~??w?C^{?B_??~o?M??B_??w??M??B_??w??M??B_?? +w??M??B_??w??N~~~~{?~~~~~oB_??z_?M??Bm??w??Mw?B_??z_?M??Bm??w??Mw?B_??z_?M??Bm??w??Mw?B_??z_?M??Bm??w??Mw?B_??z_?M??Bm??w??Mw?B_ +??z_?NzF^~oN~k\~~?{???A?I?G??B?????W~^~~?GC???w?Bo?MF@{}Nvw~^bx{KE?oWB@_MF?WK@owB`oNF_WK????_E_@???W????CN~~~oA@???B??g?~oN~?~{B +????_A_A??@w????ENv~~oA@???M??{?EB?{]@owB`oEB?[M?oWB@_KEFrw~^b|}Nfo[M????G?g?_???????MB}~~{?_O???_?U?N~~N~~~No???G@O@????????MB} +~~{?_O???_?k?N~~~~~~B~~~~~~~Bo???GBw?O??]????Eb}~~{?_O??C_?P?K?z?N?~?F_}?B_{?@o{?@w[??w[??w]??{]??[M??[M??^N?O^N?W^F?G^F?M|f?Nx~ +?Bo}?????GBG?O??]????Eb}~~{?_O??C_?M?G?Nw@~oNB_{FBw]F?w?B_?N??[?@o?F??[?@p_FF?wN~_^w?O???GBG?O??]????Eb}~~{?_O??C_?L?K?Nw@~wFBoW +F@_]E?w]~_~~?O[?@o?F??[?@p_FF?wN~?^w?O???G?w?O??Q????Fb|~~{?_O??F??J?G?B_?]?@w?B????????????????}?B{?Mw@p_Ff?]K?{?@o?F??]??w?B_F +N?[[?xoBv?F{?V_?????_B?B??@G????YNz~~oA@???Q?A??]Nb`@~r}}o~mbr{MxgKNBm]BBozb_O[MwG?BBnB??o~oo?KF[K?@@vB?_O\wwGFb]MA@wrb_oEKwwK@p +NNB?Mrro_@{[[G?N????_A_A??@G????YNz~~oA@???Q?@S?]No?~Nw@zk{@xkK@x{C@w{C@wK?@{M?@{M??[M??[N??]F?[]F?[MF_KMB_MNF_FNN?BFN?@????_N_@ +??@w????YNz~~oA@???Q??{?_?~_F~?{MB_[K@xoBf?M]?{w@r_FM?[{@poFB_[Nb_^}?~_?????_J?@??@G????YNz~~oA@???Q?@??]Fr{~mzfxmNf{]NpwNBo?N?? +[?@o?F_?]??w?B_?N??{?@o?????_H_@??@G????YNz~~oA@???Q??w?o?~_F~?{[BpwNf_[}?Bw@~?N{?{?FoO]BowNB_{N`o^}?~o@????_D?@??@G????iNv~~oA@ +???Y??o?_?M??w?Bo?N??{?@o?F_?^{F~o^_?N??{?@o?F??]?@w?B_?M??{BboMF?W[@xoB~?Fw?????G?w?O??u????EB|~~{?_O??BO?F?B`{^Fp{WF?oM@oM@oK? +yA_??CXNRdO????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +, +sAS??CXNRdO@????Fo???@O???@TKB?oKB?pKB?qSskoKC\FKB?oKTTYUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????OAG??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????N`c??NCW??@XE_???????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??MoB??@O@???l?O??@_D??@{@O??w?S??COE??Ag@_??{_W??DWF??Ay@o??F__??GGG??BeA???Q_c??K?H???cA_??a?g??MoI??@OAo??l?k??@_K??@{B??? +w?o??COL??AQBO??|_s??BGM??AUB_??s_w??BWN??AaBo??@`???DGO??AuC???E`C??E_P??AuCO??@@G??EwQ??A{C_??}@G??DWR??AcCo??{`K??C?S??AMD??? +}@O??DoT??AeDO??A`W??EwU??BQD_??L`[??HgV????E???X@_??K_W??@?EO??X`c??K?X???YE_??N`g??DoY??BSE_??~`g??AwZ??@gEo??r@k??AO[??@{F??? +f`o??NW[??@MFO??[@s??M_\???WF_??e@w??Nw]??@cFo??x@{??Cg_??AoG???~A???EG`??BaGO??WaG??MGa??@aGo??jaK??Awc??AmH???QAS??B@AAThYUdhT +KB?oKB?pGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBCoKBHRQr?oPs[??????G?O?_??E????KB|~~{?_O??EO?R???F?G?N?G?N?G?L?G?L?K?\?K?\?K?\?K?W?M?w?M?w +?M?w?M?w?M?w?F@o?F@o?N@~?N@~?Nb~?Bb_?Bb_?Bb_?N~w@~~w@~~w@o????A?C?G??@_???B?~^~~?GC??@c?C_B~FoB~^oB~~o?w{??ww?Cwo?Cwo?Cwo?Cww?Cw +w?Bw~oBw^oBw^o?w}??wo?Cwo?Kw_?Kw_?Kw_?Kw_?Kwo?Kww?F~~oF~~oB~No??????_@?A???o????oNv~~oA@???X?@C?oL{@{N{@}N{@~Nc@^N?@Nm?@Fk?@B{?@ +Bo??Bo??@o??@o??@o??@o??@o??Bo??Bo??B{?@Fk?@Nm?@^M?@~Nc?}N{?{F{?o@{??????G?O?_???????KB|~~{?_O??EO?R?N{^?N|~?N~~?Bbo?Bb_?Rb??ra? +?ra??ra?@r_?@r_?@r_?@r_?@r_?@r_?@r_?@r_?@ra??ra??rb??rb_?Rbo?^~~?N|~?N{^??????A?C?G??@_???B?~^~~?GC??@c?CoB~~oN~~oN~~oKw_?Kw_?Kw +_?Kw_?Kw???w???wM??wM?BwNoBwNoBwNo?wM??wM??w???w??[w??[w??[w??[w??^~~o^~~o^~~o[?????_@?A???W????oNv~~oA@???X?@K?~~{F~~{F~~{FM??F +M??FM??FM??FM???M???MB_?MB_?}B{?}B{?}B{?MB_?MB_?M???M???M???M???M???M???~oK?~oK?~oK??????G?O?_??K????KB|~~{?_O??EO?Q?MBn?NB~?Nb~ +?Nr{?Fro?Bzo?@z_??~_??{???{???[???[???[???^}?o^}?o~}?o~_??~_?@zo?Bzo?Brw?Nr{?Nb~?NB~?MBn??????A?C?G??@_???B?~^~~?GC??@c?CoB~~O^~ +~O^~~O[ww??ww??ww??ww??ww??ww??ww?Bw~oBw~oBw~o?ww??ww??ww??ww??ww??ww??ww??ww??ww?B~~O^~~O^~~O[?????_@?A??@G????oNv~~oA@???X??{? +~v~~^~|~o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F~^~|~~v{???A?C?G???????B?~^~~?GC??@c?D?B~{O~~{O~~{O{ww?Cw{??w}??w^??w +N_?wF_?wBoAwBoBwBoBwFoBwFoBwNOBwN?@w]??w]??w{??w{??ww?Cww?F~{O~~{O~~{O{?????_@?A???W????oNv~~oA@???X?@K?~oK?~oK?~oK?M???M???M??? +M???M???M???M???M???M???M???M???M???M???M???M??FM??FM??FM??FM??F~~{F~~{F~~{F?????G?O?_??E????KB|~~{?_O??EO?R?B~_@v~o@v~o@trO?\rW +?\rW?\rW?\rW?\r\?\r\?XrL?XrL?XrL?XrL?XrN?PrF?PrF?Pr??Pr??Pr??Pr??Pr??V~o@v~o@v~o@o????A?C?G??@_???B?~^~~?GC??@c?Co@~~?^~~?^~~?]w +w?AwwOAwwOAwwOAwwoAwwo?wwo?wwo?wxo?wxo?wxo?wx_?wx_?wz_?wz_?wz??wz??wz??wy?B~}OB~}OB~{O??????_@?A???o????oNv~~oA@???X?@C?}B{?~F{? +~n{?Fn??B}?@@{?@@{?@@{?@@{?@@{?@@{?@@{?@@{?@@{?@@{?@@{?@@{?@@{?@@{?@B}?@B}?@Fn??~n{?~F{?}B{??????G?O?_??E????KB|~~{?_O??EO?Q?N{^ +?N|~?N~~?Bbo?Rb??Rb??ra??ra??ra??rb??rb??Rbo?^b~?N`~?N_^?B_??B_??B_??B_??B_??B_??B_??N{@?N{@?N{@??????A?C?G??B????B?~^~~?GC??@{? +COBwNoB{^oB}~o?]{??Nw?CFo?CFo?CFo?CFo?CFo?CFo?CFo?CFo?CFo?CFo?CFo?CFo?CFo?CFpoEFpoCNzoC]~_B}~oB{^oBwNo??M???]???[???{???w???w??? +????_@?A???W????oNv~~oA@???X?@O?~o[?~p{?~r{?MF_?MN??MM??MM??MM??MM??MN??MF_?}B{?}@{?}B{?MFo?MF_?MF??MF??MF??MF?MMF?MMN?N~~CN~}CF +~{CB?????G?O?_??K????KB|~~{?_O??EO?P?NBn?Nr~?Nz~?B~{??~o??~_??^_??{???{??B{??NwB?No^?N@~?GB~??Bw??B_?OB_?OB??O^??O^_?O~o?R~w?N~~ +?N|~?N[^??????A?C?G??@_???B?~^~~?GC??@c?CoB~~o^~~o^~~o[F@o[F@o[F@o[F@o[?@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o?? +@oBo^oBo^oBo^o??????_@?A????????oNv~~oA@???X?@S?~~C^~~C^~~C^MG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?B]K?B]K?B +{M?@{NC@wN{?oF{?_B{??????G?O?_??E????KB|~~{?_O??EO?R?N~w@~~w@~~w@pr??Rb_?Bb_?Bb_?Bb_?F@o?F@o?F@o?F@o?E?o?M?w?M?w?M?w?M?w?K?W?K?\ +?K?\?K?\?G?L?G?N?G?N???F??????A?C?G??@_???B?~^~~?GC??@c?Co@~{?\~{?\~{?[M_?KM_?KM_?KK_?C[o?C[o?C[o?C[poE[roE[roE[rOEWrOAWrOAWrOAW +rOAWrOAWrOAWq?BWu?Bo]?Bo]?@o[???????_@?A???W????oNv~~oA@???X?@K?~no@~no@~no@[F_?[B_?wBo?w@o?o@s?o?{?_?{?_?[???[?_?[?_?{?o?{?o@s? +w@s?wB_?wB_?[F??[F??MM??~~_F~~_F~~_F?????G?O?_??E????KB|~~{?_O??EO?R?N~w@~~w@~~w@rb_?Bb_?F@o?F@o?M?w?M?w?M?w?K?\?K?\?G?N?G?N???F +???F???F???F???F???F???F???F?M?~?M?~?M?~??????A?C?G??B????B?~^~~?GC??@c?COB~~oF~~oF~~oCF{?CF{??F]??F^???N???F_??Fo??BoA?@oB?@oB? +?oB_?OBo?OBo??@wo?D{o?C{o?C]o?C^o?F~~oF~~oF~~oC?????_@?A???o????YNz~~oA@???Q?@K?~?{?~`{?~b{?Ffw?Ff_??F???Fw?{F{?~F{?~f[?Nv??Bv?? +@v??Bv_?Nvw?~n{F~n{F}M[F????_@?A????????oNv~~oA@???X?@O?^o??^o??^o??[???[???[???[???[Nw?{N{@{N{B{MKF{GCF{??N[??N[??M[??M[??M[??M +{??N{G?N{KCF{MKF{N{B{N{@[F{??????G?O?_??Q????Eb}~~{?_O??C_?O?M?~}F~{^vxwNf_^??{?@o?F??[?Bo?N?@~_NnB}}Np~}B~_Fo???G?O?_??E????KB| +~~{?_O??EO?S??B}??B}??B}??B_??B_??B_??B_?MBn?Nb~?Nr~?Fz{?Bzw?@~o??~_??^_??^_??^_??^_??~o??~o?@zw?Fz{?Nr~B~b~B~BfBo????A?C?G??C_? +??@g~n~~?GC??@G?C?B_B~_^~B|}^@zwB~?NwN~~~~~~~o[?Bo?Nw@zo^nb{^~_~w@{???A?C?G??@_???B?~^~~?GC??@c?CO??~?C?~oE?~oE?zoE?xoE??oA??oB~ +~oB~~oB~~oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oB}~oB}~oB}~o??????_@?A???W????YNz~~oA@???[?@K?wM{F{N{F}N{F^FoFNF_?FF?? +FF??FF??NF_?^Fo?~B{?~@{?~?{?F???N???~F{?~N{@~n{BN}?FBw?F@o?F@o?FBw?FF{?F^n?B~n{B}N{?wB{?????_@?A????????oNv~~oA@???X?@S?^o??^o?? +^o??[???[???[???[???[F{?{N{?{N{@{NK@{MC@{K?@[K?@[K?@[K?@[K?@[K?@[K?@[K?@[K?@[K?@~}[^~}[^~}[^?????G?O?_??Q????Ib|~~{?_O??E_?O?K?B +o?N??{?B??????????B}?~wB~_M??w?B_?M??w?B_?M??w?B_?M??w?B_?N~~~~~~~{???A?C?G???????B?~^~~?GC??@c?D?@~??@~??@~??@o??@o??@o??@o??@o +~_\o~_\o~_\o}?@o^?@oN_@oFoBoBoBoFoBoNoBoNOBo]?@o}?@o{?Dow?F~{o~~{o~~{o{?????_@?A???o????oNv~~oA@???X?@C?~oK?~oK?~oK?_?K?_?K?_?K? +_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?~~{@~~{@~~{@?????G?O?_???????Eb}~~{?_O??C_?T?N~v?~~~@~~~@vq~@ro] +@ro]@poM@poM@poM@poM@poM@poM@poM@poM@poM@v{}Fv{}Fv{}Fo???G?O?_???????Eb}~~{?_O??C_?T?F|~?N~~?N~~?^Br?^B`?^B??VB??VB??VB??VB??VB? +?VB??VB??VB??VB??^~fF~~fF~~fFo???G?O?_??K????Eb}~~{?_O??C_?P?K?F?N?^?N_~?Bpw?@zo??z_??^??O^??O^??O^??O^??O~_?Oz_?@zo?Bpw?N_~?N?^ +?K?F?????G?O?_???????Eb}~~{?_O??Eo?S?F~}?N~~?^~~?~Bb@~A@@~??Bv??Bv??Bf??Bf??Bf??Bn??B~A?B~B@@~Bb@~B~?~B~?V@~?F???F???F???F???F?? +?F???N{F?N{F?N{F??????A?C?G??@_???@g~n~~?GC??@G?CoB~}?N~~_^~~o^_fo^_`o^_?oB_?OB_?OB_??B_??B_??B_??B_??B_??B_??B~NoB~NoB~No????A? +C?G??C_???@g~n~~?GC??@G?BoBwN~w~~r{^N_{wBr_^?NwB~@~oNo@}@v_N[?|wNvr~^~{~|o{???A?C?G??@_???Bo~^~~?GC??@[?COB_??B_??B_??B_??B_??B~ +~oB~~oB~~oB_??B_??B_??B_??B_??B_??B_??B_o?F_o?F_o?F_wOF_{oF_~oB?^oA?No??????_@?A????????YNz~~oA@???Q?@S?^~o@^~o@^~o@[K?@[K?@[K?@ +[K?@[K?@[K?@[K?@[K?@[K?@[K?@[M?@{N_@{N{^{N{^wL{^????_@?A???W????YNz~~oA@???Q?@K?~~_F~~_F~~_FMM??]N??[F??[F??[F??wB_?wB_?wB_?wB_? +o@s?o@s?o@s?_?{?_?{???[?????_@?A???W????YNz~~oA@???Q?@K?~~sF~~sF~~sFFK?@FK?@FK?@FK?@FK[@eK{?eK{?eKs?mMs?mMs?mMs?mMs?{F_?{F_?{F_? +????_@?A???W????YNz~~oA@???Q?@K?~noB~noB~noB{B_?wBo?o@s?o?{?_?{???[?_?[?_?{?o@s?wBo?wB_?[F??~~oF~~oF~~oF????_@?A???W????YNz~~oA@ +???Z?@K?~~cF~~cF~~cFMM??[M??[F??[F??wF??wB_?wB_?oBc?oBc?o@c?_@s?_@s???{???{???{???[???[???[?_?K?f_K?v_K?~_C?~???N????????G?O?_?? +K????KB|~~{?_O??EO?P?K?F?N?^?N_~?F_{?@po?@zo??z_??z_??^??O^??O^??O^??O^??O^??O^??O^??O~_?Oz_??z_?@zo?Bpw?F_{?N_~?N?^?K?F??????A? +C?G??E????B?~^~~?GC??@c?B_B??[?@w?Fo?^_@~oF~?\{@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??^w~~b~}No???G?O?_??K????KB|~~{?_O??EO?P?N?N +?No~?Nx~?B~}??~o?O~_?O~_?O~??OB??OB_?OB_?OBo??Bw??@{???}???^?G?N?K?F?M?B?N_@?Nr??Rz??^~~?^~~?^~~?O????A?C?G??B????B?~^~~?GC??@c? +COBoBoB{NoB}^o?}~??]{??]w??Kw???{???}???^_B_^oB_FoB_^o??~???{???w?C?o?CEo?CNo?CNw?CN{?C~~?B}^oB{NoBoBo??????_@?A???W????oNv~~oA@ +???X?@K??Bw??B{??Bk?_Bk?oBc?oBc?wB_?{B_?[B_?]B_?NB_?FB_?Fb_?Br_?~~{F~~{F~~{F?B_??B_??B_??B_??B_?_N{B_N{B_N{B?????G?O?_??K????KB| +~~{?_O??EO?P?Np~?Np~?Np~?@o??@o??@o??@o??@o??@o??@o??No^?Np~?Nr~?Frw?@ro?OB_?OB??O~??O~??O~_?O~o?R~{?Nx~?No~?N?N??????A?C?G??B?? +??B?~^~~?GC??@c?COA?NoB_^oBo~oBw{O@{{??}{??]{??]???N@_B~NoB~^oB~~o?~}??^{?CNw?CNo?CNo?CNo?CMw?C]w?C}{?D{~?B{^oBwNoB_Bo??????_@?A +???o????iNv~~oA@???Y?@C?@o??~~{@~~{@~~{@@~_?@v_??Bo??Bw??@w???{???{?_?[?_?[?_?K?o?K?o?K?o?C?o?C?w?C?w?C?w???w???w???w???w???w??? +????_@?A???o????oNv~~oA@???X?@C?w?{?}B{?~F{?Nn_?B}?@@{?@@{?@@{?@Bm??Nn_?}B{?w?{?}B{?NF_?Bm??B}?@@{?@@{?@@{?@B}?@Bm??Nn_?~F{?}B{? +w?{??????G?O?_??K????KB|~~{?_O??EO?P?M?N?N_~?Np~?Fx{?@zw??~o??~_?O^_?O^_?O^_?O~_?P~o?Rzw?^z~?^r~?^b~?[B_?OB_?@zo?@zw?@x{?@w~?Nw^ +?NoN?N_B??????A?C?G??B????@_~^~~?GC??A??COA??oA??oA??oA??oBoFoB{^oB}~oB}}oE^woENwoEFwoENwoENwoE~?oB}?oB{FoBo^oA?~oA?}oA?{oENwoEN +ooENooENwoE^{oE}~oB}~oB{NoBoBoA??oA??oA??o????A?C?G??I_???B?~^~~?GC???s?@o?{^Fp{[F@o]Fo{Np{M?????G?O?_??c????EB|~~{?_O??GO?J?G?F +o?^_?~?@}?@w?Bo?N??]?@w?B_?N??{?@o?F??[?@o?F??[?@o?N??{?B_?]?@w?N??{?F_?}?Bo?]?Bo?]?@o???G?O?_??W????EB|~~{?_O??GO?J??{?Fo?}?Fo? +}?Bo?M?@w?F??{?B_?M?@w?F??[?@o?F??[?@o?F??]?@w?F_?N??{?Bw?F_?^??}?@{?Bw?Fo?N?????G?O?_??i????IB~~~{?_O??Ao?F?Bx}^fx}]F`{Np{N???? +?G?O?_??o????IB~~~{?_O??@O?D?@{^Fp{^?????G?O?_??K????EB|~~{?_O??G??P??B??OB??OB_?OB_?OBo??Bo??@w??@w???{???{???]???]???N???N?G?F +?G?F?K?B?K?B?M?@?M?@?N???N???F_??F_??Bo??Bo??@w??@w???{???{???[???[??????G?O?_??o????Eb}~~{?_O??C_?D?@{^Fp{^???????????^Fp{^Fo?? +?G?O?_??i????Eb}~~{?_O??E??E?Bw}Nbw}???????????]Nbw}Nb_{N`{N@o???G?O?_??K????Eb}~~{?_O??Ao?P?N~~?^~~?^~~?O???????????????????N~~ +?^~~?^~~?O????A?C?G??B????B?~^~~?GC??@c?C_A?NoB_^oBo~oBw{OD{~_C}~oE]~oM]xoNNooNNooNF_ONF_ONF_ONF_ONF_ONNooNNooM]xoE]~oC}~o@{^_Bw +wONo~oN_~oE?^o??????_@?A??B?????WNv~~oA@???_??o?~o~~B~{N@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F?N{N +~o~~Bo???G?O?_??E????EB|~~{?_O??G??K?N{N~o~~Bo?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??z~B~{N~o{???A? +C?G??B????BG~n~~?GC???K?COB~~oF~~oF~~oC?????_@?A???o????{Nv~~oA@???T?@C??K?@?N?@?N_@?Nw?_B{?o@{?{?[?}?C?~_??No??Fo??No??~_??}?C? +{?[?o@{?_B{??Nw??N_@?N?@?K?@?????G?O?_??K????NB|~~{?_O??DO?P??[??@{??B{??Nw??N_B?N?F?K?^???~??B}??Bw?OBo?OBw?OB}???~?K?^?N?F?N_B +?Nw??B{??@{???[???????A?C?G??B?????o?????GC???K?COB~~oF~~oF~~oC?????_@?A???o????WNv~~oA@???_?@C?@o??@o??Bo??Bo??F_??F_??N???N??? +]???]???{???{???w?C?w?C?o?K?o?K?_?[?_?[???{???{??@w??@w??Bo??Bo??F_??F_??N???N???M?@?M?@?K?@?K?@????_@?A??@_????iNv~~oA@???K??s? +@_oNF_{]BpwNF_{]BpwNF_{]BpwFF?[[????_J_A???W????iNv~~oA@???Y?@g??B????@w????]????F_???B{????~????No???Bm?O??x_C??MW@??BB?o??ooK? +?KKB?GA@@oA?_O[?_GCF?K??BoB?~o{?oN{N?E??F_@_?@w?W??]?F??N?@w?Bo?~wF~?~}@~oK???A?a?G??@_???Ag~^~~?GC??@g?DoB~~oF~~o^o??~o?@zo?Bro +?Bro?Bro?Bro?Bro?@zo??~o~o^o~o^o_?~o?@zo?Bro?Fbo?Fbo?Fbo?Fbo?Fbo?Bro?Bro?@~~~o~~~oK???A?g?G??B????Ag~^~~?GC??@g?Do??~eA?~u^_@v~o +?Vpw?F_{?F_{?F?]?F?]?E?N?E?N???N???N???N???N???N???N?E?]?E?]?E?{?F?{?B@w?Bbo?Pr_@o}?~o[?~_C???A?m?G??@_???Ag~^~~?GC??@g?EOB~~oC? +~~{F?N??BoBo?@o?{??w?N??[?Bo?F??{?Bo?N??w?Bo?M?@{?B_?^??w?Fo?M?@{?B_?^??w?Fo?M?@{?B_?^??w?Bo?M??{?Bo?N??[?Bo?B_?{??{?N??FoB~~o[? +~~{@?????G@o?_??E????Ib|~~{?_O??E_?V?N~~F~~~F~??Fn??FN??EN??MN??KNB?KNB?KNB??NB_?NB~?NB~?NB_?NB??NB??NB?WN??WN??KN??KN??KN??MN?? +MN??Fn~~F~~~Fo???G@W?_??E????Ib|~~{?_O??E_?T?N~~B~~~B~??B~??Bn??BN??FN??EN??EN@_EN@_?N@_?N@o?N@~?N@~?N@o?N@_?N@_?N@_?N???N???N?? +?N???N???N???N{^?N{^?????G@O?O??E????Ib|~~{?_O??E_?K?N{N~o~o?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N{N~o{???A? +O?G??@_???Ag~^~~?GC??@g?D?B~FoB~FoBo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??ro??ro??ro??zo??zo??Zo??^oo?^~~o^~ +~o[???A?Q?K??@_???Ag~^~~?GC??@g?G?B~?WB~~oN?~~?Bo?~o?{?Nk?\_Bz?FW?}o@u?NK?{oBr?NK?{oBr?NK@wWBr?]E?{oF`_NKBoKBr?{B?{oN?oNKF_EBr@w +@_{o]?WNKN?BBrBo?o{o{?KNKM?@Bvb_?O~~w~F~~{No~o???GAw?_??E????Ib|~~{?_O??E_?Y?N{?~oN~?^{B{?Lw?N?BK?Bo@r??k?{o?B?NK??oFr??KBwo?B?} +K??o^B??KN_o?BBwK??o{BC?KM?p?BB_Ko?ooB[?KG?v?BA?No?o?B{?K??~?B??N_?o?Bo?]??{?N{BM?B~?r??????_L?A???o????iNv~~oA@???Y?@c??Nw??GB~ +?oB__o{?{??]?F_?N??{?F_?F?@o?@w?{??M?M??BoB_?O{?w?CN?M?@BoB_?O{?w?CN?M?@BoB_?O{?w?C]?N??F_Bo?@o?[??{?F_?]??{?N??F_B__o{?_N{B??B} +??????A?g?G??@_???Ag~^~~?GC??@g?E_B~^o??~~{B?NA?@oBo??{?{??M?N??F_Bo?@w?{??]?N??F_Bo??w?{??N?NA?@oBo~oK?{N{B?NB?@oBo_?{?{??N?N?? +BoBo??{?{??N?N??BoBo??{?{??N?~??foN~B~wB~o~w?O???GBw?O??K????Ib|~~{?_O??E_?O?N@b~E{]^_xw@v?F[?\_@u?N?B{?~_F}B~o~{F}?^oB{?N??{?N_ +?}?Fw?^oBv?~NNk~wo{???A?g?G??@_???Ag~^~~?GC??@g?EOB}~~{?~n~~?@xw{??E]K??@fb???\wo?CB]G?@?va??OLw_?C?]????F_???@w????]????F_???@w +????]????F_???@w????]????F_???@w????]????F_???@w??B?~o{?oN{N?????GAw?_??E????Ib|~~{?_O??E_?Y?N{B~?N~?~oB}?@o?N??K?Bo?B??{?Cw?M?@ +E?B_?P_?o?KK?K?BB?B??oo?_?[E?G?F@_A?@oW???{B???N?o??foK??Hw@??A]?O??~????No???B{????]????F_???@w????K???????_I_B???W????iNv~~oA@ +???Y?AO?~}N~}?~~w~~wBv_?F{?B]??]o?Fo?@z??N??Fk??{??~o?B_?R|_?M?@Nu??wGDxW?B__Vdo?KAB]R??oKNoK?B?o~?o?GBF{@_?_M^oEOA?X}?X??@nw?s? +?E~_BO??N{?N???}o?[??Bz?@o??Fg?F???]_?[??@q??o??B??B?????GAw?_??E????Ib|~~{?_O??E_?Y?N}F~oB~`~{?{?C^?M?BB_B??o[?o?[B?GAF?O??roC? +?L{???B}????^_???Fo???@w????}????No???Bm?O??x_K??K[B??BB@oA?_O{?o?CN?K??FoB_?@w?}??}?N}B~oN~_~{BsAS??CXNRdO????????????????????? +, +lAW??CXNRdO@????Fo???@O???@TKB?oKB?pKB?qSskoKC\FKB?oKS|YUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????HAK??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????M`g??BSX???|Eo???????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??K?B???e@???V_O??KOC??B{@???Q?S??H?D??Bu@O??O_W??HoE???A@o??R_[??IWF??Bm@o??H__??GOG??BaA???E_c??DGH??AWAO??w?c??A_I??A?A_?? +q?g??AWJ??@mAo??l_k??NwJ??@EB???b_o??LWK???]BO??S?s??FOL??BWBO??N?w??E?M??@{B_??v_w???wN??@KBo??a_{??IwN???SC???]`???M?O??@_CO?? +b`C??IoP??BYCO??]`G??AGR??BACo??W`O???GT??BCDO??X@W??AWV??BmDo??[`_??@GX??BYEO??f@g??NOY??@uEo??r`k??AW[??ACF????@s??GG\??B]FO?? +N@w??Jw]???UFo??Z`{??MO^???eG???YA???Jw_???UGO??bAC???ga??@cG_??waG??Dwb??B[Go??jaO??Koc???qHO??XAS??Kgd???oH_??YaW??B?{AThYUdhT +KB?oKB?pGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBCoKBHRQr?oPs[??????GBG?O??K????Hb}~~{?_O??C??O?Nw@~o]NBo{N@_w?B~_N~?{]B_{M@owFr_^Nb{~}^~o{ +????_N_@???W????iNv~~oA@???Y?@G?No??No??M???M???M???M???M???M???M???M???MB{?}F{?}N??]M?@MK?@MG?BMG?BMG?BMG?BMG?BMG?BMK?@]M?@}N?? +uF{?e@{?????_H_@???W????eNz~~oA@???O??w?w@~wNro{FboME?[?@o?F??[?@o?N??w?Fb@{MN_^w?[???A?}?C??@_???Ag~^~~?GC??@g?C_??^_??^_??[??? +[???[???[???[???[???[???[?Bo\oBw^o?{^??]]??M[??F[??F[??F[??F[??F[??F[??M[??]]??{^?Bw~oNo{oK???A?e?C??@_???AW~n~~?GC??@??B_B_@~_N +N@wMM?ww~r~~No[?@o?F??{?B_?]KFow}@~_@o???G?_?O???????Ib|~~{?_O??E_?M???^oB~_N^?{[Bpo?F??[?@o?F??~oN~?v??[?@o?F??[?@o?F??[?@o?F?? +[?@o?NwF~_[???A?q?C??@_???AW~n~~?GC??@_?C?Bo}~b~FMwMF?w[B`oMF?w[F?z{@~wBB_?M?Nw^~B~}^o~w@~?Fw?^_B~?}^No~{?{???A?}?C??@_???Ag~^~~ +?GC??@g?C_?~???~???w???w???w???w???w???w???w???w???wFoBwNoBw]?@w[??w[??w[??w[??w[??w[??w[??w[??w[??w[??w[?B~}ON~}OK???A?A?C????? +??Ag~^~~?GC??@g?AO?{?Bo?N??{?????????????????B{?No?w?B_?M??w?B_?M??w?B_?M??w?B_?M?B~?^{@????_A?@??Aw~~~~iNv~~oA@???`??k?_?]?@w?F +_?[???????????????B_@}?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[E@w{FroN~?^w?????_M?@???W????iNv~~oA@???Y?@G?No??No??M???M??? +M???M???M???M???M???M???MNw@MNw@MBw?M?w?M?[?m?K?}?K?}?[?]?{?M?{?M@w?MBo?MBo?MF_?~~oB~~oB????_?_@????????iNv~~oA@???Y??c?No?~?B_? +M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?~oF~?O???G???o??E????Hb}~~{?_O??C??\?B{~~?B~^~{@}NBB?vb__OKwwG?BMMA??rb_ +_?KwwG?BMMA??rb__?KwwG?BMMA??rb__?KwwG?B~~ffF~~xxp{???A?}?C??@_???AW~n~~?GC??@??C_?~FoB~NoBw]?@w[??w[??w[??w[??w[??w[??w[??w[??w +[??w[??w[?B~}ON~}OK???A?q?C??@_???AW~n~~?GC??@??C?B_@~_^FB_M[?X_@}?Fw?^_@}?Fw?^_Bf?M[Bo{}@~_@o???GBw?O??E????Hb}~~{?_O??Do?Q?B{~ +?N|~?Nbo?Fb_?Rb??Rb??ra??ra??ra??ra??rb??rb??Vb_?^bw?N`~?J_^?B_??B_??B_??B_??B_??N{@?N{@??????A?w?C??@_???AW~n~~?GC??@[?C_B_WoBw +Zo@{^??]]??M[??N[??F[??F[??F[??F[??N[??M[??]]??{^_Bw^oBo[o??[???[???[???[???[???~_K?~_K?????_E_@???W????eNz~~oA@???O??o?no^~B~_M +]?xw?B_?M??w?B_?M??w?B_?M??w?N{B~oK???A?Y?C??@_???AW~n~~?GC??@??B?B{@~wFBo[F@_[EBoB~?^wB}?]?BoKN@owFB_{N~o^z?O???G@g?O??E????NB| +~~{?_O??Do?J?B??K??o?B??M??w?Bo?~oN~?r_?M??w?B_?M??w?B_?M?Ww@b_EM?Xw@~?Bw?C???A?}?C??@_???AW~n~~?GC??@??C_?~^_?~^_?w[??w[??w[??w +[??w[??w[??w[??w[??w[??w[??w]?@w^?Bo~oN_|oK???A?w?C??@_???AW~n~~?GC??@??COB~~?F~~?C{[??wK??wK?@oE?@oE?@oF?B_B?B_B?B_BoB?@oB?@oA? +?oA??oA??o????A?g?G??@_???AW~n~~?GC??@??EOB~~Nc@~~rx?Rpw[??w^B??MEoo?BbkK?@oz@_?[KWW?FBEEOB_p_s?wGKL?MABBoB__o{?o?CF?K?@@oB??O[? +????_M?@????????eNz~~oA@???O?@K?~n_B~n_B{F_?wB_?o@s?o?s?_?[???[???{?_?{?o@s?wB_?WB_?]F??~~_F~~_F????_M?@???W????eNz~~oA@???V?@C? +~~o@~~o@NF??MB??MB??[@_?[@_?[@o?w?o?w?o?w?{?o?[?o?[?_?K?_?K?_?K?_?C?_?C?`_C?ro??wo??^o??F_???????GBG?O??K????Lb|~~{?_O??E??M?M?@ +}?[[B_oKB`oEE?[w@r_FM?[w@r_FM?[w@r_FM?[w@r_FM?WWB`oMF@oM}?^_?O???GBG?O??Q????Lb|~~{?_O??E??K?K??w?B~?N{?w?B_?M??w?B_?M??w?B_?M?? +w?B_?M??w?B_?M??w?B_?M??~o~~Bo???GBG?O??K????Lb|~~{?_O??E??M?N_B~?}MFo{]Fro^N@{wBb_?N??{?@o?F_?N??]??{?@w?@oKB_oFB?MEN{^~p~~Fo?? +?GBG?O??K????Lb|~~{?_O??E??M??w[~`~}B~wF@_?E??W?@_?E?NWB~_{]Fow]?Bo?N??{BboNN?{{BroFF_wN~?^w?O???GBG?O??K????Lb|~~{?_O??E??M?K?N +{@|wFbo]F@wMF_w?@_AF?^[F~o{^F?{[Br_FM?[w@r_FM?wwBb_MFBoM}?^o?o???GBG?O??K????Lb|~~{?_O??E??M?N?B}?[{Bpw]B`oMF@w[F`x}BnoN~?NwB~o^ +f`{MNo{{@roFM?[wBr_MFBw]~?~o?o???GBG?O??K????Lb|~~{?_O??E??M?N?B}?[[B_w[BpoFE?[w@r_FM?[w@roMN?w}~B~wMu?w?B_?F@w[F_w]BxwF~?Nw???? +?G?G?O??Q????Ib|~~{?_O??E_?C??{NBo{NBo{NBo{E@_WE@_WE@_?????NBo{N????_?_@??@G????iNv~~oA@???J??S?Bp{^Fp_WF?oM@oK?????_E_@???o???? +]Nv~~oA@???e??g?_?N??]??w?@o?B_?M??[?@o?B_?M??w?@_?F??[?@o?F??[?@o?F??[?@o?F??[?@o?E??w?B_?M?@o?F??w?B_?[?B_?M??o?E??o???G@g?O?? +K????Fb|~~{?_O??H_?I??[?B_?[?@o?M?@o?F??w?B_?K?@o?F??W?@_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?F??[?@o?F_?M??[?@o?B_?F??[??w?@o????A? +A?C??C_???Aw~~~~?GC???k?@??FBo{NB?oKB_WF?o????A?A?C??C_???Aw~~~~?GC???O?@??NBo{N????_K_@???o????]Nv~~oA@???d??w??B??M??w?@_?F??[ +??o?B_?M??W?@o?F??M??w?B_?F??[?@o?B_?M??W?@o?F??K??w?B_?E??[?@o?B??M??w?@_?F??[??o????A?A?C??C_???AW~n~~?GC??@[?@??NBo{N???????? +???FBo{NB?oKB_WF?o????A?A?C??C_???@w~^~~?GC??AS?@o@~^oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?v|~?????G?G?O???????Fb|~~{?_O?? +HO?F?F|~WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_^v{?????_?_@???o????iNv~~oA@???J??S?E@oM@_[B?p{^Fpw?????_@?A????????iNv~~oA@ +???Y?@_??Fx}_N~~wNNrwNBp{NBo[M??[M??[M??[M??[M??~~{N~~{N[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??~n?N~n?N????_N_@???????? +iNv~~oA@???Y?@K??Fw?_F{?wNK?wN??{N??[N??[???[???[???[???~~{?~~{?[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??~n?F~n?F????_N_@ +????????iNv~~oA@???Y?@K??Nw?_N{?wNK?wN??{N??[M??[M??[M??[M??[M??~~{?~~{?[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??[M??~ncF~ncF +????_??B????????iNv~~oA@???Y?@w??Fzw?WB~~_N_ww{FwMAB@~B__o\owGCF[K?@?FB??O@oo?C?[K?@?N~~~o^~~~{F[K?@@vB??O\oo?CF[K?@@vB??O\oo?CF +[K?@@vB??O\oo?CF[K?@@vB??O\oo?CF~nFFN~zppr{???A?q?C??@_???Ag~^~~?GC???k?B?AN@x{Nfo}^Bp_KE?o[B_oEB_]F?wK@????_B_@????????ON~~~oA@ +???B??g?~oN~?~{B????_K_@??@w????iNv~~oA@???J??o?E?o[B_wF@_MF?wK@_oE^Bx{Nfo{]Bo???G@G?o??K????Mb{~~{?_O??G_?\?N~~FoB~~v{?w?Fo?]?@ +w?N_?[?Fw?E?@}?@_?~_?W?Nw?E?B}?@_?~_?W?Nw?E?@}?@o?^_?]?Bw?Fo?]B~~oB_~v{?w?Fw?]?@w?N_?[?Fw?E?B}?@??~_?O?^w?C?F}?@?@~_?O?^w?C?F}?@ +?@~_?W?Nw?F?B}?@o?^_?^?B~~~~?N~~No????A?Q?K??C_???BO~N~~?GC??AO?F???{?{K?Nw~B??~]?z?B}?Mw?N?B~?@_?~w?G?N}???Bvo???{{???MN_??Bbw? +??w}???KFo??B@{???o^????Fo???@{????^????Fo???@{????^????Fo??BBw???o}???KN_??BFo???x{???E}???@~_???No?W?Bw?N??[?Nw???Nv_??Nw~??Bo +Bo????A?E?K??B????Bg~N~~?GC??AG?FOB~~~{B~~~~?}?@{?N_?[?Bw?E??}?@??N_?O?Fw?C?@}?@??Z_?OWEw?CE@m?@@_Z_?OW?w?CF?MA@@oB_~o[?wN{F?MA@ +@oB_?O[?w?CE?M?@@_B_?OWWw?CEEM?@?@b_?O?Kw?C?BM?@??r_?O?Kw?C?Bm?@??~_?W?Nw?F_@~~~~o^~~~{F????_??B???o????yNr~~oA@???a?@k?~~~~?~~~ +~oN_?^?Bw?F??}?@_?N_?O?Bw?C?@}?@??^_?O?Ew?C?@m?@@_Z_?OWEw?CE?M?@@_B_?O[?wGCF?MB~@oB_~o[?wGCF?M?@@oB_?OW?w?CE?M?@@_B_?OW?w?C??M?@ +??B_?O??w?C??M?@??B_?O??w?C??M?@??B~^o??~v{??????G@w?o??K????Mb{~~{?_O??G_?_?N{~~N~~N~r~w?E?@}?@_?^_?W?Fw?E?@}?@_?^_?W?Fw?E?@}?@ +_?^_?W?Fw?E?@}?@_?^_?W?Fw?E?@}B~~o^_~~{Fw?E?@}?@_?^_?W?Fw?E?@}?@_?^_?W?Fw?E?@}?@_?^_?W?Fw?E?@}?@_?^_?W?Fw?E?@}?@_?^_?W?F~r~{~~{~ +~N{???A?c?K??B????Bg~N~~?GC??AG?GOB~N}B~?N{~wN{?w?F?FoB_?W?F?M?@o?K?w?F_?OB_?]???M?@[???w?Cw??B_?Po??M?@B_??w?CF??B__OK??MB@?o?? +wMCB??B_{O[??MAxBo??wJsN??B_Fp{??M?NF_??w?[}??B_?vo??M?@]???w?Fw??B_?^?@?M?@{?C?w?F_?oB_?[?F?M?@o?[?w?E?BoB_?W?N?M?@_B{?~r~_~oF~ +N}B~?O???GBO?_??K????Mb{~~{?_O??G_?X?N|~??B~^o??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O?? +w?C??M?@??B_?O??w?C??M?@_?F_?W?@w?E??]?@_?F_?[?@w?F??]?@o?B_?]??w?F_?M?@{?B_?^o?~~~~?N~~~o????A?M?O??B????Bg~N~~?GC??AG?I?B~?oB? +~~{F?MB~w?[?w?^_@oB_@u?N?J?FW?{?k?\_BoAo@u?]?H_FW@w?e?\_F_AW@u?{?GoFWBo?b?\_N?AK@u@w?GWFWF_?`_\_]?AE@uBo?GKFWN??_o\_wGE@@uB__WCF +WMA@_O\_oKM?@uB?ow?FWKBB_?\__E]?@uA?Xw?FWG@f_?\_?B}?@u??Nw?FW??~_?\_?@y?@~_@Fg?F~o{]~N~~Bor{~o???G@_?o??K????Mb{~~{?_O??Go?`?N~~ +@o??~~{^??B_?Vo??M?@{???w?F_?OB_?]?B?M?@o?[?w?F?@oB_?[?F?M?@o?[?w?F?@oB_?[?F?M?@w?K?w?F_?OB_?^???M?@^???wN{^??B_~o{??M?@Fo??w?C{ +??B_?V_??M?@]???w?Fo??B_?^???M?@{???w?Fo?OB_?^?@?M?@{?C?w?Fo?OB_?^A@?]?@{GK@w?F_ooF~N}Bf?N{~oN{?????^o??????_G_A??@G????sNr~~oA@ +???c?@O?w?{E{F{E]N_FFM?FBk?FBg?F@o?F@o?F@o?E@o?EBo?EBo??Fo??N_??~_??~?{?}F{?{N{@oN{B?NwB?M?F?G?F?G?N???N???N?o?M?o?M?o?M@o?M@o?N +Bo?FFw?FNw?B~}?@w~{?_r{?????_C_B???o????yNr~~oA@???a?@w?~n~~F~z~~p{}w?C^Bm?@F?Z_?P_Ew?CW@}?@M?N_?R?Bw?Co?}?@K?N_?R?Bw?Co?M?@??B_ +?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?OB?~~{?oN~~?????G@w?o??E????Mb{ +~~{?_O??Go?a?N{N?N{B~o{?~oNo?O@{?N?@?B_?w?C?E?B_?O?W?K?B??o?o?K?B?B??o?K?G?F??W?_?[?@_A?Bo?F???N??K???{??o??Fw?B???]_?C??@y??O?? +NK?????{o????Br?????]E????@wW????N`o????{B????BoK????N?x????w@c???B_EO???K?N????o?{???B?Bo???G?F????_?[???A?@o?????B????????_F_B +???W????yNr~~oA@???a?AG?~`~_~oB}F}B~?M?Fo?{?o?]?@oA?@w?B???No?C??@~?????Fe?????}[????Foo????]@_???BwF????N?L????w?[???B_@o???K?F +????_?[???B?Bo???K?^????w@w???@oN_???B@{????MF_????W}?????ro?O??Bm?@???Ew?K???N?@oA??w?F?K?@_?{?w?C?BoBo?w?~?N{FwN{B~o^_~oK???A? +O?G??B?????_~n~~?GC??@S?DOBwBoB{No?{^??{{??{{???w???w???{?B?~oBw~oB{w??}w??^w??^w??Nw@_Nw@_N{@_^}@_}~@v{ro~wooK?????_G_A???W???? +sNr~~oA@???b?@[?[???^o??^o??]???[???[???[???[???[???[???[???[???[???[???[NoB[N{F{G[N{?C]{??{[??{[?@w[?@w[?@w[?@w[?@w[?@w[?@w[?@w +[??{[??{{??}{?C^{G[NKN{FKNo@?????G?O?_??K????AB}~~{?_O??DO?Q?K@~?NB~?^b_?Vr_?Rr_?Pw??@w???{???{???{???{???{???{???{??@w??@w??rq? +?vq??^b`?^B~?K?~??????A?C?G??@_????_~n~~?GC??@S?CoA?NoB_~oBw{?D{o?K{_?K]_?[]_?^~~o^~~o[N???N???N???N???N???]???]??W{??\{_?NooON_ +~oA?No??????_E_@????????sNr~~oA@???b?@???Fo?~wBvoNN?{]??w?B_?M??w?B_?M??w?B_?N{^~p~_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M?? +~`~}Fo???G@??_??E?????b}~~{?_O??GO?T????B{B^F}B~F^BwFFbo?Br_?Rr_?Rr_?Rr_?Rr_?Rr_?Rr_?Vbo?N`w?N_~?L_^?@_??@_??B_??Nb~?NB~?~r~Bry? +Bow?F_{?F_[?F?[?F?[?F?{?F`w?B~r_@~b~?{@~??????A?a?G??@_???BO~N~~?GC??AK?E?@o??@~??@~??@w??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o +??@o~?Do~o^o`o^o?O~o??zo??xo??xo??xo??xo??xo??xo??xo??xo??xo??xo??xo??xo??xo??z~x~~~x~{?????_D?@???W????yNr~~oA@???a??g?]?@{?Fo? +^?@w??????????????????????@o?F{?^o@w?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?N{B~oK???A?S?C??@_???BO~N~~?GC??AK?Ao@o?F{?^o@w?F?? +[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?B~@~{F????_L_B???W????GNz~~oA@???T?A[?[NoB~o@~~{~~?~{F +z{CB}?D}_?^o?Bo?@~??N??F[??[??\o?@o?@v??F??F[??[??\o?@o?@v??F??F[??[??\o?@o?@v??F??F[??[??\o?@o?@v??F??F[??[??^~p~~p^~~F~~D~???? +?GAG?_??E????AB}~~{?_O??DO?W?FB{?V~~@~}F@~_@B~??Bn??Bf??Bf??Bf??Bf??Bf??Bf??Bf??Bf??Bf??Bf??Bf??Bf??Bf??Bn~f~~~f~o????A?O?G??@_? +???_~n~~?GC??@S?DOA?NoB_~oBow?Cw_?K[??[]??{M??wN?@wN?@wN?@wN?@wN?@wN?@wN?@wM??w]??{[??[w_?Now?F_~oA?No??????_G_A???W????GNz~~oA@ +???^?@[?[NoB^~{F~w[N{?C^{??}[??{[?@{[?@w[?@w[?@w[?@w[?@w[?@w[?@{[??{[??{{??}{?C^{G[N[N{F[No@[???[???[???[???[???[???[???[???~o[? +~o[??????GBG?O??E????AB}~~{?_O??DO?O?F@}^~~~|~bp{NBo?N??[?@o?F??[?@o?F??[?@o?F??[?@o?F??~o~~Bo???GBG?O??K????AB}~~{?_O??DO?M?N_Z +~@{]F_{[@p_FE?{WFoB}?^wF}?~?Fo?}?roBM?[w@r_NN@{]~o~r@o???GBG?O??E????BB|~~{?_O??Fo?M?E??W?@_?E??W?@o?F??[?@w?Fo?~p~~Fv??[?@o?F?? +[?@o?F??[?@o?F??[B@oKF?o[B@oKN?ww@r_F{?F????_F?A???W????GNz~~oA@???T?@[?~{L~~{L~]??^[??M[??Fw??Bw??Bw??BoGC@oGC@oKK@_KK?_KK??E[? +?E[??E[??Bw??Bw??Bw??@o??@o??????G@o?_??E????AB}~~{?_O??Fo?V?N~B^~~B^v_?Fv??Bf??@}???}???}???{A@?[A@?[BB?WBB?GBB??@f??@f??@f???} +???}???}???[???[???K???K???M???E???E??{B?G{B?K{@?Nw??Fo???????A?O?G??B??????~^~~?GC??AG?CoA?BoB_No@o[??ww??[o?C[o?C]o?KM_?KM_?KM +_?KN_?[N_?[N_?[N_?[N_?[N_?[N_?[N_?[N_?[N_?[N_?[N_?[N_?[N_?[M_?KM_?KM_?K]o?K[o?C[o?Cww?@o[?B_NoA?Bo????A?O?G??E??????~^~~?GC??AC? +BoA??[?@{?F~?[{@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??^|~~v{???A?O?G??B??????~^~~?GC??AG?CoB?FoBo +^o@w}??[{?CMw?K]w?K}w?K]w?K]w?K?w?K?w?K?w?C?{?C?}???^?B?NoB?Fo??]???{???w?C?w?K?o?[?o?[Mo?[^o?[^o?[^o?[^o?[Fw?KMw?K]{?D{}?Bo^oB? +Fo????A?O?G??@_?????~^~~?GC??AC?DO??[???[???]???]???^???^???\_??\o??[oA?[oA?[OB?[?B_[?@_[?@o[??o[??W[??W[??K[??M[??E[??F[?B~~p~~ +~p{?[???[???[???[???[???[???[?A?~o}?~o{?????_C?A???o?????Nv~~oA@???a?@K?o@{?{B{?}F_?NM??FM?@Fk?@Bk?BB{?BBw?BBw?BBw?FBw?FBw?FBw?F +Bw?FB{?FFk?FFk?FNM?F^N?F}J{FwH{F?GCF?G?B?K?B?K?B?K?@Fm?@Fm??Fn??Ff_?Fbw?~@{?{?[?????_H?B???o????mNr~~oA@???d?AC??Fo?????~o???GBf +????_KK@??A?_OC??KA@?O??oGC@??B?_OC??KA@?O??oKC@??B?oO???KB`????oFC???B?[o???G?z????_@~_~oE?B}B~?W?F?B{?_?[?B_B?Bo?E?M?N??[?[@w? +?o?wFg?B?@o{o?C?Fbr????M]M????~oW???B~@o???NwBc???~?Fo??Bw?No??^_?~??@w?F}??Nk?~W?B{{Now?N`~{B{?w@~?Bo??????_D?@??@_????gN~~~oA@ +???D??S?B`{^Fow?????_I?A??@G????iNv~~oA@???Y?@W?~r{?~~{?B~?@B{?BBw?FBo?NBo?MBo?]Bo?]Bo?{Bo?{Bo?{Bo?{Bo?{Bo?{Bo?{Bo?{Bo?[Bo?]Bo?] +Bo?NBw?FB{?BB~?@~~{?~r{?????_?_@??@G????iNv~~oA@???Y??O?Bo{NBo{NBo{NBo{NBo{NBo{NBo{NBo{NBo{???A?[?G??C_???Ag~^~~?GC??@g?Co?N??[N +??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[N??[]_?K]_?K{o?Dw{?Bo^oB?Fo????A?[?G??@_???Ag~^~~?GC??@g? +Do?N?F?N?F?]?B?]?B_]?B_{?@o{?@p{?@pw??xw??zo??^o??^o??^__ON__ON?_oF?ooF?ooE?poA?xo??Xo??Xo??Zo??N_??N_??F?????A?q?C??@_???A?~n~~ +?GC??@C?C?B_@~_^~B{{N?xoBf?Fw?^_@}?Fw?^_B~?M[Bx{~B~wF}?F????_D?@???W????GNz~~oA@???T??k?M??w?B_?M?B~?~{BM??w?B_?M??w?B_?M??w?B_? +M??w?F_B}?^o@~?BlAW??CXNRdO????????????????????????????????????????????????????????????????????????????????????????????????????? +, +[Ao??CXNRdO@????Fo???@O???@TKB?oKB?qKB?qSskoKC\FKB?oKTTYUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????wA_??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????}@{??Kc]??A{G????????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??@?C??@{@???@?S??GoD??Bw@O??X?W??MoE??@s@o??p?[??CoG??AwA???V?c??MOH??@OA_??u?g??COJ??BKAo??T?o??LoK???iBO??e_s??LWL??@EB_?? +__w??LOM???}Bo??j_{????O??@aC???s`???AOP??AUCO??x@C??BGQ??AWC_??~`G??BgR??@uCo??o`K??@?S??@]D???n`O???oT??@qDO??j`S??NoT??@ID_?? +e@W??MWU???sDo??_`[??J_V??B]Do??Q`_??JWW??B[E???}`_??AOX??@UEO??e@c??LgX??@IE_??Y@g??@oZ??AoEo??P@o??N_[??AKFO??G@w??LO]??AGFo?? +~`{??HG_??@cGO??EAG??Ioa??@?Go??}AK??Ioc???aHO??kaS??EWe???YHo??BA_??K?g???SIO??bAc??M?h??@WI_??jAg??AOj??AUIo??Bao??B@AAThYUdhT +KB?oKB?qGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBGoKBHRQr?oPs[??????GBg?_??E????Fb|~~{?_O??F??[??@_????{????N????Bo????}?C??N_@??Bw?O??~?K? +?KoB??BK?o??r_[??GWF??AE@o??`o{???KN???BBoA??p{?_?C]?GB~FoB?~r{?o??{?K??N?B_?Fo?W?@w?E??]?Bw?N_?~oN~B~{B~o{???A?m?G??B????@w~^~~ +?GC??@o?E?B~~oN~~o~o?@~o?Bro?Bbo?Fbo?Fbo?Fbo?Fbo?Bbo?Bro?@zo~o~o~o^o?@~o?Bro?Fbo?Fbo?NBo?NBo?NBo?NBo?NBo?Fbo?Fro?Bz~~p~~~oK???A? +s?G??B????@w~^~~?GC??@o?EO??~GK@_N}N?[?Nv_Fo?~_@}?Bo?V_?w?C{?K?@N_B??Pw?o?C]?G?@BoA??O{????N????Bo????{????N????Bo????{????]?G?@ +F_A??Rw?_?C{?K?@]?B??N_?w?Bo?v??o?{{?GB~Bo??~?K?????_??B???o????]Nv~~oA@???[?@k?~~{B?N~~BoBo?Bw?{?@w?N??{?Bo?M??{?B??^??o?No?K?B +{?A??~??_?^o?G?F{?A?@~??_?^o?G?F{?A?@~??_?^o?G?F{?A??~??_?No?K?B{?B??^??w?Fo?N??{?@w?N??N_B~~o{?~~{B?????GA_?_??K????Fb|~~{?_O?? +F??W?N~~N~~~N~??Nn??MN??KN??[N??WNB?WNB?WNB?WNB??NB_?NB~?NB~?NB_?NB??NB??NB?oNB?oN??oN??WN??WN??WN??[N??]N??Nn~~N~~~No???GAG?_?? +K????Fb|~~{?_O??F??U?N~~F~~~F~??Fn??FN??EN??MN??KN??KNB?KNB?KNB??NB??NB_?NB~?NB~?NB_?NB??NB??NB??NB??N???N???N???N???N???N???N{^ +?N{^?????G?W?o??K????Fb|~~{?_O??F??[??B{_oE?~w{@o?~]?^?B}?Fw?N?@]?B_?Ro?o?C}?K?@F_B??Pw?_?CN?G?@Bo????{????N????Bo????{????N?N{N +BoB~Bpw?w?C]?M?@N_B_?Ro?w?Dw?M?@}?B_?^?B{?F?B~o@_N~^?OB{`oC???A?y?G??B????@w~^~~?GC??@o?E_B~r~{B~{~~?~??N?Bo?Bo?{??{?N??N?Bo?Bo? +{??{?N??N?Bo?Bo?{??{?N??N?Bo~r{?{N{~?N??N?Bo?Bo?{??{?N??N?Bo?Bo?{??{?N??N?Bo?Bo?{??{?N??N?Bo?Bo?{??{?N~N~oN~r~{B????_E_@???W???? +]Nv~~oA@???[??o?~o~~B~??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N{N~o{???A???K??B????@w~^~~?GC??@o?F?B~B~wF +~o~}@~??^?Bo?Bo?{??]?N??B_Bo??[?{G?B?NB??OBow???{F???N@w??Bo~???{Nw@?NB~?OBoxoK?{KKB?NB@@oBo_?{?{??N?N??FoBo?Bw?{??}?N??^?Bo?F_? +{?Bw?N{N~_~~B~wN????_F?A???o????]Nv~~oA@???[?@S?~p{?~p{?{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{??W{??W{??W +{??W{??[{??K{??M{??N{G?N~~{N~~{N????_H?B???o????]Nv~~oA@???[?AC?~oC?~oF~?wB~?^?B_@{?{?M?FoAo@{?]?J?Fo@w?k?^?F_?oBu?]?B?NW@w?K?|_ +F_?oFb?]?B?]K@w?K@woF_?oN@_]?B?{E@w?KBoWF_?o]?o]?B@wB@w?KF_KF_?o{?W]?BBo@`w?KN?EF_?ow?K]?BB_?pw?KM?BF_@wo?C]?N~Bw^{@~{N`~oC???A? +y?G??B????@w~^~~?GC??@o?E_B~?N{B~oF~?~?B]?Bo?r??{?[o?J?FK?AoBr??K@{o?B?^K??oNb??KBoo?B@{K??o]B??KN_o?BBoKO?owBC?KM?r?BB?Ko?ooB[? +KG?~?B??No?o?B{?K??}?B??N_?o?Bo?]??w?N{BM?B~?r??????_I?A???o????]Nv~~oA@???[?@[?~~{@~~{F{??N{??[{??{{?@w{?@w{?@w{?@w{?@w{?@w{??{ +{??[{??N{N{F{N{@{???{???{???{???{???{???{???{???{???{???~o{?~o{?????_M_A???o????]Nv~~oA@???[?@o?~~{??N~~@oBo??{?{??[?N??N?Bo?F_? +{?@w?N??]?Bo?F_?{?@w?N??N?Bo?@o?{??N?NB~@oBo~oK?{K?N?N??BoBo?@{?{??]?N??F_Bo?@w?{??]?N??F_Bo?@w?{??}BN??^_z~B~oF~o~o?o???G?g?_?? +K????Fb|~~{?_O??F??Q?MAN?^a~?Rrw?Oz_?Oz??O^??O]??O]??O{??@{??F{??NwF?No~?N`~?NB~??B~?OBo?OB_?oB??oA??oM??oM??o]??o^??O~_?V~o?Nl~ +?MK^?????GBO?_??E????Fb|~~{?_O??F??Z?Nz~~oN}~~{BFnB??ozo_?KE{??B@~??@oNo??WB{??E?~??@_No??W?{????N????Bo????{????N????Bo????{??? +?N????Bo????{????N????Bo????{????N????Bo????{???oN{~?KB~No????A?y?G??B????@w~^~~?GC??@o?E_B~B~{B~o~~?~??]?Bo?B??{??o?N??K?Bo?B?? +{??o?N??K?Bo?B??{??o?N??K?Bo?B??{??o?N??K?Bo?B??{??o?N??K?Bo?B??{??o?N??K?Bo?B_?w?CW?M?@F?B??ow?_?{N??B~?o??~?C?????_M_A???W???? +]Nv~~oA@???[?@o?~_~~?~wN~oN_?vw?o?K[?K?FB?A?@ow?_?{E???N?o??f_K??Jw@??B{????}????N_???Bo????{?C??N_@??B[?o??r?[??GwF??AEBo???p{? +_?K]?G?@N_B??Bo?w?@w?N?@}?B~@~{N~o^~Bo???GBw?O??E????Eb}~~{?_O??C_?R?N_F?No^?Bo{?Bpw?@`o??@o??@w?M@~?Np~?Fxo?@|o?@|o??|o@_|o@`|w +@bx}@nz~?~bb?O???G?g?_??E????EB|~~{?_O??FO?S?B{??B{??B_??B_??B_??B_??B_??B_??B_??B_??B_??B`~?Nb~?^b`?vb?@ra?@r_?Br_?Br_?Br_?Br_? +Br_?Br_?Bra?@va?@vb??~b`?|b~?P`~??????A?k?C??@_???@g~n~~?GC??@G?BoB_F~?~^Bo{N@wWF_?N??{?Bo?N??{?Bo?]?@x_NFB{MN?^w?{???A?I?G??@_? +??@_~^~~?GC??@s?D???}?C?}?C?o?C?o?C?o?C?o?C?o?C?o?C?o?C?o?C?o?F_roFw~oD{}?C}w?C]o?C^o?CNo?CNo?CNo?CNo?CNo?CNo?CNo?C]w?C}{?D{}?Fw +vo~_po{?????_J?@???W????YNz~~oA@???Q??{?w?^wFvo}Fb_]]?|w~v~~^o{?Bo?N??{?F_?]WBpo~BboF}?N????_B_@????????WNv~~oA@???\??{??B~?^}@x +wFbo]F??[?@o?F??[?@o?N{F~o\o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??~_^}@o???GBw?O??E????Eb}~~{?_O??Eo?Q?MBf?~b~?rq{?pxw?@xw?@xw?@xw +?@xw?@xw?Bo{?No^?MoF??w???w??@w??No~?Nr~?Nz~?Pz_?o~??o]??o]??o~??p~_?rzo?^`~?M?^??????A?I?G??@_???@_~^~~?GC??@s?D??~???~???w???w +???w???w???w???w???w???w???w???w^oAw~oBw{OFww?Dwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?F~}O~~}O{?????_A?@???W????WNv~~oA@ +???\??c?N??}?Bw?N_?{?????????????????B{?No?w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?~oF~?O???G?w?O??mN~~~uB|~~{?_O??HO?J?G?Bo?^?@{?F +_?K???????????????Bo@~?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[N@w{FroN~?Vw?????_@?A???W????WNv~~oA@???\?@K?No??No?? +M???M???M???M???M???M???M???M???M???MNwBMNwBMFo?MBo?M@w?M?{?m?[?}?[?}?{?}?{?]@w?MBw?MBo?MF_?MF_?MN??~~cF~~cF?????G?_?O??E????EB| +~~{?_O??FO?H?B{?No?w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?N{@~oC???A?Q?K??@_???@g~n~~?GC??@G?GO?~~m?N +?J~~}P{?}MC^N_Bwo?{{?Fa?@r_?MG?BM??w_?Kw?Ba??r_?MG?BM??w_?Kw?Ba??r_?MG?BM??w_?Kw?Ba??r_?MG?BM??w_?Kw?N~pF~{@~~C^~oC???A?I?G??@_? +??@g~n~~?GC??@G?D??~^oA~~oBw{OFww?Dwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?Cwo?F~}O~~}O{???A?}?C??@_???@g~n~~?GC??@G?C_B?BoBo +No@w]??[w??]w?CMo?CNo?KNo?KNo?KNo?KNo?KNo?KMo?C]w?C[w?@w]?BoNoB?Bo????A?I?G??@_???@g~n~~?GC??@g?D??~^oB~~oFwwOLwo?[w_?[w_?{w??{w +??{w??{w??{w??{w??{w_?\w_?\wo?Nw{ONw~oCw^o?w???w???w???w???w???w??B~?OB~?O????A?C?G??@_???@g~n~~?GC??@g?D?B_boFwfoF{}?C{{?C]w?C] +o?CNo?CNo?CNo?CNo?CNo?CNo?C^o?C]w?C}{?D{}?FwvoF_poC?o?C?o?C?o?C?o?C?o?C?o?C?}?{?}?{???A?_?C??@_???@g~n~~?GC??@G?BOA~B~{^}@xwFf_K +M??w?B_?M??w?B_?M??w?B_?M??w?N{B~oK???A?_?C??@_???@g~n~~?GC??@G?BOBwB^wNBo{FB_[KBoo^?NwB~_^wBo?^?pwBF?[[Bpw^B~{N{oK???A?_?C??@_? +??Ag~^~~?GC??@g?B??o?B??K??o?B??M??w?Bo?~o^~@r_?M??w?B_?M??w?B_?M??wBB_KM?owBB_K]?zo@}?B????_A_A???W????YNz~~oA@???Q?@O?N~_@N~_@ +MK?@MK?@MK?@MK?@MK?@MK?@MK?@MK?@MK?@MK?@MK?@MM?@MN?@]N_@{N{NwK{N????_@?A???W????YNz~~oA@???Q?@K?~~?F~~?FMM?@MM??[E??[E??[E??wB?? +wB??wB_?o@c?o@c?o@{?_?{?_?{???[???[???[?????_L?A???W????YNz~~oA@???Q?@k?~~rr@~~{{o[{{M?@MNB??Bbwo?@ouE??[L``?FBWWO@obFC?wGor?MAK +KoB_@bK?o?[^?K?FFoB?@p{?_?KM?G?BB_A??ow?????_@?A????????YNz~~oA@???Q?@S?~nCN~nCN{N?@wN??oFC?_Bk?_@k???{???w??@w??@{?_Bk?oFC?oF?? +wM??}M?@~~C^~~C^????_@?A???W????YNz~~oA@???Y?@K?~~?F~~?FMM?@MM??[E??[E??[E??wB??wB??wB_?o@c?o@c?o@{?_?{?_?{???[???[???[???K???K? +??K?boC?boC?wo??^_??N???????_J?@???W????YNz~~oA@???Q??w?~b~}Npw{B`wEBwWF`_^E?}?@wBFoKF_o]B_{E@wWBpz~F~{^????_N_@???o????cNv~~oA@ +???Z?@??w?^oBr_[FB_]]?xoBf?N{?~oB~?N{?~oB~?N{?~oB~?N{?~oB~?N{?xoBf?]]@owM@roB}?F????_N_@??@_????cNv~~oA@???Z??s?o?B_?No?~oBb?M?? +w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B~F~{^????_N_@???o????cNv~~oA@???Z?@??{?^{Fpw~@foN]@~wF~?^{?zo?N??}?@w?Fo?N??] +??}?@w?Bo?F_?FB?MK?[o?x_~v~~^~|~????_N_@???o????cNv~~oA@???Z?@??{?^{Fpo}Ffo}]@xwFf_?]??{?Bo?F}?Nw?[?F_?{?F_?{?Bo?N?M{@~oF~?^]?|w +Fbz{F~?F????_N_@???o????cNv~~oA@???Z?@??BBb{N~o^~?[K??o?B??K??o?B?Bk@~o^NBo[]?pw?N??{?Bo?N?N{?~oB~?N]?x{Fbz{F~?F????_N_@???o???? +cNv~~oA@???Z?@??w?^wFro[Fb_]]?|oBv?N{?~oB~?N{?~oB~_]}@r{~N~w|wBo?F??]@xwFb_]N@w]F_~{@~_@????_A?@??@G????WNv~~oA@???\??S?B`{^Fp{^ +Fp{^B_wMB_wMB_wMB_w?????B`{^Fow?????_A?@??@G????WNv~~oA@???L??W?B`{~NrwoKB_WF?wN@_????A?_?C??C_????o~^~~?GC??Ag?A_A??{?@o?F_?F?? +K??w?@_?F??[??w?B_?M??w?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??w?B_?M??w?F??[?@_?M??o?F??w?B??[?@_?K???A?_?C??B?????o~^~~?GC??Ag? +A_?F??w?B_?[?B_?K?@o?E??w?B_?K?@o?F??[?@_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??{?@o?F??[?@w?B_?E??[??o?B_?F??M??w?@o????A?G?C??C_? +??A_~~~~?GC???s?@O?MFp{^F`_WE@oKB_[E?????G?_?O??Q????IB~~~{?_O??@O?D??w^Fp{M?????G?_?O??Q????Eb}~~{?_O??C_?D??w^Fp{M???????????M +Fp{^B_???G?_?O??Q????Eb}~~{?_O??E_?D??w^Fp{M???????????MFp{^F`_WE@oKB_[E????_A?@??@_????KNv~~oA@???h??[?^v{B?oKB?oKB?oKB?oKB?oKB +?oKB?oKB?oKB?oKB?oKB?oKB?oKB^v{?????_A?@????????KNv~~oA@???h??[?^v|_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_WE@_^v{?????_A_A +????????WNv~~oA@???\?@S??No?_N{@oKKBwKCB{K?B[K?B[???[???[???[???[???~~{B~~{B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B[G?B +[G?B~mC^~mC^?????G@O?O???????Ab~~~{?_O???o?J?N{F~o^~@o???GB??o??K????BB|~~{?_O??Fo?b????@o?????F????_?{???A?Bo???G?N????o@{???B? +Fo???M?~????wB{???Bo^o???B@~????KF{????W~_???@b}????BNw@???K~?C???z{?o??@n_B???E}?K???Nw@o???~?F?GB~~o{?_N~~BoA??]?N?K??o@{?o?B? +Fo@_?K?~?E??_B{?[?A?^oB~@~b~@~{F}N{F?????G@w?o??K????BB|~~{?_O??Fo?^?N~~^oB~~~{Bw?^_@}?Fo?~_@w?^w?]?N}?F_B~_@w?~w?]?N}?F_B~_@w?^ +w?^?F}?Fo?~_@~?FwN~~?]B~~o^_@{?Nw?]?F}?F_B~_@o?~w?[?^}?F?F~_@o@~w?[?^}?F?F~_@o?~w?]?N}?F_@~_@}?N~~~~@~~~~o????A?c?K??C_????o~^~~ +?GC??@{?Fo??{B|_?Nz~[W@~oFn?Fo@~{?[?^n_B?Frw?O@w~?C?[Nw??FB}??@o~_??WF{??E@~????^o???F{???@~????^o???F{???@~????^o???Nw??EB}??@_ +~_??WNo@?FBw?O?o}?K?MN?F?@r?Fo?N_N~?@oB}~oC?{B{?????_K?B???o????KNv~~oA@???^?AG?~~|~??B~~~{B?M?Nw?{?w?}?FoB_Bo?~?M?N?Fw?w?{?~?B_ +BoB{?M?N?N_@w?{?}?F_BoBw?]?N?N_Bw?{?}?N_BoBw?}?N?N_Bw?{?}?N_BoBw?}?N?N_Bw?{?}?N_BoBw?}?N?N_@w?{?}?F_BoBw?]?N?No?w?{?~?B_Bo@}?M?N +?B{?w?}?FoB_B}?N?N~~~oK?~~|~????????_B?B???o????KNv~~oA@???^?@w?~~~~@~~~~o^_B}?Fw?}?@}?N??^_Bo?Ew?{?Bm?N??r_Bo?Kw?{EBM?N@_r_BoW? +w?{E?MAN@oB_~o[?wN{F?MAN@oB_BoW?w?{E?M?N@bB_BoWow?{?KM?N?@b_Bo?Ww?{?EM?N?@r_Bo?]w?{?F}?No?~~~~{N~~~~Bo???G?W?o??K????BB|~~{?_O?? +Fo?[?N~~~o^~~~{Fw?~_@}?N_?^_Bo?Fw?{?@m?N??z_Bo?Kw?{?BM?N@_r_BoWKw?{E?M?N@_B_bo[?wN{F?MB~@oB_bo[?w?{E?M?N@_B_BoW?w?{E?M?N??B_Bo?? +w?{??M?N??B_Bo??w?{??M?N??B_Bo??~~{B?N~~?o????A?u?K??C_????o~^~~?GC??@{?Go??{B|_??B}~vC?_F~?]oB?Fo@~?N?F?Fw?}?K?^?Bw?O@w?No@?F?? +~_??[?B}??@o?Nw??E??^o??W?@~?????F{?????^o????@~?????F{?????^oB}~o\~?Nz~@v{??F{?~_??^oB}??@~?Nw??F{?~?C?^oBw?O@~?N_B?F{?{?[?^oB? +Fw@~?GB~wF{??Nz~^???{B|_??????A?u?K??B?????o~^~~?GC??@{?H?B~~~f~B~~~}^{Nw?{?^oB_Bo@~?M?N?F{?w?{?^oB_Bo@~?M?N?F{?w?{?^oB_Bo@~?M?N +?F{?w?{?^oB_Bo@~?M?N?F{?wN~~^oB_~~|~?M?N?F{?w?{?^oB_Bo@~?M?N?F{?w?{?^oB_Bo@~?M?N?F{?w?{?^oB_Bo@~?M?N?F{?w?{?^oB_Bo@~?M?N?F{?~~~x +~o~~~~f~Bo????A?w?C??@_????o~^~~?GC??@{?COB~~oF~~oF_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_ +BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB~~oF~~oC?????_M_A???o????KNv~~oA@???^?@g?~~{B?N~~?oB_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N +??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??N_Bo?Bw?{??}?N_?N_Bw?Bw?}??}?No?F_B{?@w?~_?]?N}?F~~~{@~~~~?O???GAo@???K????BB| +~~{?_O??Fo?l?N{N??B}F~{^??B~F}?^??B~?E?~?GB|?E?~?GB|?E?~?GB|?E@}?KB{?E@}?KB{?EB{?EB{?EB{?EB{?EBw?RB{?EBw?RB{?EBw?RB{?EBo?pb{?EBo +?pb{?EB_@or{?EB_@or{?EB?BoZ{?EB?BoZ{?EB?BoZ{?EA?FoN{?EA?FoN{?E??noF{?E??noF{?E??~_B{?E??~_B{?E??^?B{?E??^?B{?E??^?B{?N{NMMB~F~{N +MMB~Fo???GBW?o??K????BB|~~{?_O??Fo?c?N{^?N{N~r{?~o~_^o@_?M@~?E??wN{?W?@_~oD_?EB}?u??WNoFW?@_~?|_?EBwBu??WN?^W?@_wB|_?EB?^u??WGB~ +W?@__N|`?E??~uC?W?B}Wo@_?Npf?E??}E{?W?Bw^o@_?N@~?E??wF{?W?B?^o@_?G@~?E???F{?W???^o@_??@}?E???Fo?W???]?B~Bo@o?N{N?E???????GAg?o?? +Q????BB|~~{?_O??Fo?_??BwFo??~~{?_@~w?]?Fw?^o?{?N}?E?F~_??@~{???~~_??^vw??Fx}??@}^o??~f{??Nx~??B}^o??~f{??Nx~??B}^o??~f{??Nx~??B} +^_??^nw??F~}??@~~???N~o@_B~w?W?^{?N?B}?Fw?]?F~_@?N~~??BwFo????A?W?K??B?????o~^~~?GC??@{?F_B~~v{?~~~~?]?N{?^_B{?Nw?}?F}?N_@~_Bw?~ +w?}?N}?N_B~_Bw?~w?}?N}?N_@~_Bw?^w?~?B}?N{?^_~~{@wN|~?M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??N~~?OB~~oC? +????_I_B??@G????KNv~~oA@???g?A???N_^??B~~oA?F~_@w?^_@~?Bo?~w?W?^}?E?F~o??B~}??@~~_??^vw??Fx~??B}^o??~f{??Nx~??B}^o??~f{??Nx~??B} +^o??~f{??Nx}??@}^_??^nw??F~{???~~NEFN~bxbp~oM|wNw@~{@w?~}?C?~~{??N`~o???{M???NBp??Bo~o??{N{??MB~??B_^o??wF{??K?~??A?Fo???GAg?o?? +K????BB|~~{?_O??Fo?c?N~~Fo??~~~~??B_B~_B?M?Nw?[?w?~?BoB_B{?N?M?No@{?w?~?FoB_B{?^?M?No@{?w?~?BoB_B{?N?M?Nw?[?w?~w?oB_~~{??MB~~o?? +w?~}?OB_B~oB?M?N}?[?w?~o@oB_B~?F?M?N{?[?w?~o@oB_B~?F?M?N{?[?w?~o@or_B~?FBM?N{?{Mw?~_Fo~~~{F~@~~~?^{B?????GAw?_??Q????BB|~~{?_O?? +Fo?U?K?~ENB~F^r_Frw?Frw?F`{?F@{?F@{?EB{?EF{??N{??N{^?Nz~?^z~?~r~@~b~B~B~F{B~FoB{NoB?NoA?No??NoK?N_K?N_K?N_[?F_{?Fp{?B~~?B~^~?wN~ +??????A?W?K??B????@G~^~~?GC??@w?FoB}~~{~~n~~Nrzo@rwM{?[w@n?FK?Zo@r?F{?\o?~?FW?No@u?B{?\_?~?FW?Bo@o??{?[??N?F??Bo@o??{?[??N?F??Bo +@o??{?[??N?F??Bo@o??{?[??N?F??Bo@o??{?[??N?F??Bo@o??{?[?wN~~?}B~~oK???A?o?K??B?????o~^~~?GC??@{?GoB~~wF~@~~~_^{Fw?{?K?B_Bo?o?M?N +?B??w?{?K?B_Bo?o?M?N?B??w?{?K?B_Bo?o?M?N?B??w?{?K?B_Bo?o?M?N?B??w?{?K?B_Bo?o?M?N?B??w?{?K?B_Bo?o?M?N?B??w?{?K?B_Bo?o?M?N?B??w?{? +M?B_Fo?w?K?^?@o?_B{?F_A?^o?N??B}wO[??Nr~?o??wF{???????A?o?K??@_????o~^~~?GC??@{?HOB~~oB{F~~~?No^w?{?o?F_BoB??M?^?M??o@{?W?B?No@o +?G?~?B??_F{?K???^o?W??B~?@_??Nw?B???~_?K??B{?OW??No@@_??~?KF??Bw?oK??NaF?o??{G[@??BoboC??MBN????wL{???B?^o???K@~????oF{???A?No?? +?G?~?????@{?????Fo?????M??????w???????A?C?S??@_????o~^~~?GC??@{?KoB~~~b~?~{F~~~w~oN~@~?F_B{?[?B_Bw?~?B??w?}?^o?o?M?^?F{?K?B?Fo@~ +?@_?o@{?~o?W?K?~?N{?F?A?NwB~?Oo?_B}?~OCK??@~_Ns@@_??^{Bw?oW??N~?}?KF??B}oN_F?o??~eBo@oK??Np`{G[@??B{[^AN?O??~BN_boC??N_rwK{???Bw +E{B^????}@~?~o???N?^oF{???BoBw@~????w?}?No???M?F?B{???B_@o?~????o?[?Fo???K?B?@w???A??o?M????_?C?B????????GB??o??K????BB|~~{?_O?? +Fo?b?N~~{N{@~~~o~oF_Fo?N?K?^??[?oB}??oA?^w?@??B~o????N~_????~fC???B{Ko???NoZ????}@{???BoBo???M?N????w@{???B?No???K@~????oF{???@_ +~o???FB}?O??MNw@???W~?K???rw@o??Bn_F???F{?{???N_FoA??[?^?K?@oB{?w?E?^oB~F~b~@~{^}N{F?????G@W?_??E????Bb}~~{?_O??D??V?M?~?Nb~?^ro +?~r_?~r?@~r?@vb?@oB?@wB~@~B~@~rB@vz?@r~?@p~?@p~?@p~?@r~_@vzwB~q~^~?N^o???GAw?_??K????@b|~~{?_O??G??W?N{??N{??N_??N_??N_??N_??N_? +?N_??N_??N_??N_??N_??Nbw?~b~B~aFF~_@Nn_?^n_?^N_?~N_?~N_?~N_?~N_?~N_?~N_?~N_?~N_?^N_?^n_@N~aFFrb~Bpb{?o???G?g?_??K????Bb}~~{?_O?? +D??R?K@~?NB~?^bp?~ro?vzo?rzo?r~_?R{??B{??B{??B{??B{??B{??B{??Fw??Fw?@no?@~bB?~B~?[@~?????GAw?_??K????@b|~~{?_O??G??W??B_FoB_Fo?? +Fo??Fo??Fo??Fo??Fo??Fo??Fo??Fo??Fo??F{?~F~B~F~b`F~q?Fvw?Frw?Fr{?Fr{?Fr{?Fr{?Fr{?Fr{?Fr{?Fr{?Frw?Fvy?Fvr?F~b`F~@~~{?^~o???G@??_?? +E????Bb}~~{?_O??D??T?KB~?NB~?~bb@~r?Bvy?Bvw?Fr{?Fr{?F~~~F~~~Fr{??B{??B{??B{??Fw??Fw?ENo?FN_BF~B~BwB~?o???GA??O??E????@b|~~{?_O?? +G??R??B{?OB~?wB~@{Bf@}Bf@}Bb@}BB?}?B?M?B?M?B?M?B?M?B?N{~?N{~?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?M?B?No~ +?No~?????G@o?_??E????Bb}~~{?_O??F_?V?K@~NnB~^~bp]~b_]vr?@vr?@vr?@vr?@vr?@~b_?~bp?~b~?^`~?@_??B_??F_??Nb~?~b~B~B~F~r~Nrw?^p{?^?{? +]?{?]?{?]@{?^Bw?Nnq?F~b~B{B~?O???GAw?_??Q????@b|~~{?_O??G??W?N{??N{??N_??N_??N_??N_??N_??N_??N_??N_??N_??N_??Nbw?~b}B~aNB~_BF~_@ +F~_@F~_?F~_?F~_?F~_?F~_?F~_?F~_?F~_?F~_?F~_?F~_?F~_?F~~F~~~F~o???G@g?O??K?????B|~~{?_O??GO?J?Fo?~?B}?Nw?~_B{?Fo????????????????? +~oB~?N_?}?Bw?N_?}?Bw?N_?}?Bw?N_?}?Bw?N_?}?Bw?N_?~o^~@v?k??@ERsxS???????????????????????????????????????????????????????????????? +, +tao??CXNRdO@????Fo???@O???@TKB?oKB?qKB?qSskoKC\FKB?oKS|YUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????Pac??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????VQ???HW]??@XGO???????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K????C??@W@???t?O??A_D??@{@O??z?S??C?E??A?@_??s_W??AWF??AM@o??A__??FGG??B}A???Z_c??LwH??@MA_??n_g??AwJ??A_Ao??C?o??H_K???IBO?? +^?s??HoL??BaBO??I?w??M?M??@wBo??e?{??B?O??BCC???W@C??NOP??AGC_??F@K??J_R??@kD???w`O??FWT??@GD_??~@W??H_V???kE???y@_??G?X??B{EO?? +c@g??A_Z??B?Eo??e@o??Co\????F_??T@w??Ko]???KFo??`@{??L_^??@OG???pa???Bw`??ASGO??zAC??E_a??A{G_??CAK??G?b??BoGo??PAO??GOc??BSH??? +IAS??Fod??BcHO??MAW??KOe???yHo??ba[????g??@uI???yA_??Dwh??ACIO??gac??CGi??@mI_??oAg??B_j??@kIo??aak??Jwj??BuIo??Wao??B?{AThYUdhT +KB?oKB?qGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBGoKBHRQr?oPs[??????GA_?_??K????@b|~~{?_O??G??W?N{??N{??N_??N_??N_??N_??N_??N_??N_??N_??N_? +?N_??Na?^~a?^~_?B~a?@~b_?~bo?^`w?N_{?N_~?N`~?Nb~?Nbx?^bo?vbo?vb_@vb?Bva?Fva?N~~B~~~B~o???G@g?O??K????@b|~~{?_O??G??J?N{?~oBw?N_? +}?Bw?N_?}?Bw?N_?}?Bw?N_?}?Bw?N_?}?Bw?N_?}?Bw?N_?}?Bw?N_?}?Bw?N_?}?Bw?N{F~o[???A?G?O??C_????w~n~~?GC??@O?Ho@~}?^}?V~}f~{F]?~^oo^w +?~~?B~_@^g?N}?D}_?~w?By?B~_?Ng?N}??}_?~w?By?B~_?Ng?N}??}_?~w?By?B~_?Ng?N}??}_?~w?By?B~_?Ng?N}??}_?~~p~~p^~~F~~D~????_J_A??@G???? +MNz~~oA@???S?@_?^~_B^~wN]G{N}?K^}?C^}?C^}??^}??^}??^}??^}??^}??^}??^}??^}??^}??^}??^}??^~{^~~{^~????_F?A???W????MNz~~oA@???S?@[? +_N{?wN{B}KCN^??^^??^N_?}N_?}No@}No@}No@}No@}No@}No@}N_?}N_?}^??^^??^}KCNwN{B_N{?????_J_A???o????MNz~~oA@???\?@_?~~_B~~{N}G[^}?C~ +}?@}}?@}}?B{}?B{}?B{}?B{}?B{}?B{}?B{}?B}}?@}}?@}}?C~}K[^}N{N}NoB}???}???}???}???}???}???}???~o[?~o[??????G?O?_??K????Bb}~~{?_O?? +D??Q?F~{?F~~?Vbv?~br?~bp?~bp?~b_?^_??N_??N_??N_??N_??N_??N_??N_??N_??N_??N_??N{N?N{N?????GBw?O??K????Bb}~~{?_O??D??O?N@n~F{]]?\o +@u?NW@{?~oN}F~w~}F~?~oB{?~?Fw?^_B~?~]N{~{o{???A?w?C??@_???@_~^~~?GC??@s?BoA??W?@_?F??[?@o?F_?^?@~?F~N~{~{?Fo?^?@{?Fo?^?@{?Fo?^?@ +{?FoW^@`{EFoW^@`{BN_Nw?^????_J_A??@G????MNz~~oA@???S?@_?~}?^~}?^}??^}??^}??^}??^}??^}??^}??^}??^}??^}??^}??^}??^}??^}G?^}K?^}MC^ +{F~~oB~~????_I?A???W????MNz~~oA@???S?@c?~o^}?^{F~_Fw?B_?{?CW?N?@E?B_?oo?w?KK?K?F@_B?@oW?_?{B?G?N?oA?foK??H{@??B~?O??~_???Nw???@{ +????^????B_????w??????A?c?K??@_????w~n~~?GC??@O?GoB~xv~w@~~f^~_F}??Nw?Fw?@~??N?@Fu??{?C^W?B__rso?MABNR??wGL|K?B?pv_W?KBF]@_?_E~o +B?A?Z~?K?G@n{?s??B~_@o??N}?F???]o?K??@z??o??Fk?B???K_?C?????_I?A???W????MNz~~oA@???S?@c?~w^~?N}F~oBo?Pw?w?KF?M?F?oB?`oC?_K{@??B~ +????^_???Fo???B{????~_C??NW@??Bb?oA?oO[?oGCN?MA?FoBw?B{?~wF~?^}@~oC???A?g?G??@_????w~n~~?GC??@s?EOB~@~w@~o^}?^_?M?Bo?P_?{?CW?M?B +B?B_?oo?o?[E?K?F@_A?BoK?_?{B?GA^?o??foC??N{@??B}????~_???Fo???@{????M????B_????W????E???F_o??B{K???~@_???o[??G[B??B}?O??]??????? +?G@o?_??K????EB|~~{?_O??FO?T?G?~?MB~?Nb_?vb??vr?@ry?Bry?Bry?Br}?Fr}?Fr}?Fr}?Fr}?Fr}?Fr}?Fr}?Fr}?Fr}?Fr}?Fr}?Fr}?Fry?Bry?Bry?Bvr? +@vb??~bp?}B~?G?~??????A?[?G??E????@_~^~~?GC??@s?CO??B_??BoBoBoB~BoBNBoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB? +BoB?BoB?BoB?BoB?BoB?BoB?BoB?BoB~~oF~~oC?????_F?A??@G????WNv~~oA@???\?@K?w@{?~F{?Fnw@Nn_B^~_B^~?F^~?F^}?FNm?FFN?F?N?F?N?B?N_B?N_@ +?No??Fo??Bw??@{?_?{?o?KEo?CEw??E[??F}N{F~N{B~n{B~~{B~~{B~~{B?????G@o?_??K????EB|~~{?_O??FO?T?K?~?NB~?^bw?~bo@~r`@~r`@~r`@~rp@~rp +@~bo?oBw?OB{?G@~?G@~??Bw?OB_@oB_BoB?Brr?Fvz?F~~?F~~?F~~?F~~?F~~_Bvz_@vro@~b~?[@~??????A?[?G??@_???@_~^~~?GC??@s?Do??_?K?o?K?w?K? +w?K?{?K?}?K?~?K?z_K?x_K?woM?wON?wON_w?Low?Kow?KWw?K[w?KMw?KFw?N~~v~~~v{?{?K?{?K?{?K?{?K?{?K?{?M?~v}?~v{?????_F?A??@G????QNv~~oA@ +???]?@S?@_??~n{^~n{^~n{^~n{N~n{F~~{B@{?@?}???~???v_??Bo??@o??@w??@w??@{???{?_?{?_?{?_?{?_?{?o?{?o?{?o?{?o?{?o?{?o?{?o?{?o?{?_?[? +????_F?A???o????WNv~~oA@???\?@S?oB{?{N{?}N?B^K?FNk?FNg?NNw?NNw?NNw?^Nw?^Nw?^Nw?^N{?^Nk?^^m?^^N?^}N{^{H{^?GG^?G?NNG?N^k?N^k?F^k?F +^m?BNn?@NNo?}F{?w?{??????G@o?_??Q????Mb{~~{?_O??HO?R???E???E?K?~?NB~?Fru?RrE?pwE?ozE@o~e@o~e@p~e@p~e@r~E?~{F?N{^?Nx~?Nz~?Nr~?^b~ +?~B~?wB~@oB}@pze@r~E@r~E@r}E@r}E@p}E@o]E?ozE?pze?Vru?N`~?K?^???E???E???E??????A?w?C??C_???Bg~N~~?GC??As?BO??F??M??]??{?Bw?F_?N?? +]?@w?Bo?N??{?@w?F_?]?@w?Fo?N??{?Bo?N??{?Bo?N??{?Bo?^?@w?F_?]?@w?N??{?Bo?]?@w?N??w?B_?[?B_?K?@o?M?@o???A?w?C??C_???Bg~N~~?GC??As? +BO?F??w?F??w?F_?{?B_?M?@o?N??w?F_?]?@o?N??{?Bo?N?@{?F_?]?@w?F_?]?@w?F_?]?@w?Fo?N??{?Bo?N_?]?@w?Fo?N??}?@w?Bo?F_?M??[??w?@o????A? +Y?C??E????@o~~~~?GC???[?@o?}^v|~^v{}?????G@g?O??]????Mb{~~{?_O??JO?G?N~~~o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@~~~ +~o????A?Y?C??@_???Bg~N~~?GC??As?A?B~~~~_wMB_wMB_wMB_wMB_wMB_wMB_wMB_wMB_wMB_wMB_wMB_wMB_wMB~~~{?????_M_A????????ENv~~oA@???_?AG? +?N?N~_??~n~~?W?~~N[Bo?~}{ON_@~zp?}?B~n?Bw?N}w?F_?~o??M?B}???w?Nw??B_?~_??M?B}???~~~~FoB~~~{^?M?B}???w?Nw??B_?~_??M?B}???w?Nw??B_ +?~_??M?B}???w?Nw??B_?~_??M?B}???w?Nw??B_?~_??M?B}???w?Nw??B_?~_??M?B}???~@~~BoB{F~{N?????GAw?_???????@b|~~{?_O??G??Y??BoBo??~`{? +_B{{?K?NN_B_@rw?w?L~?M?BN_B_?rw?w?K??M?B??B_?o??wGL~?N~~^oB~~v{?w?L{?M?B^?B_?vo?w?L{?M?B^?B_?vo?w?L{?M?B^?B_?vo?w?L{?M?B^?B_?vo? +w?L{?M?B^?B_?vo?w?L{?Nq^~oN{f~{B????_F?A????????wNz~~oA@???A?@c?~~~~?^~~~oC???A?K?K??B?????W~^~~?GC??A??F_???@_????[????F????@w? +???}????No???B{??G?|??A?NO??oBo??K@{??@_]???WF_??B@w???o]???EF_??@bw???K{???BN????Zo??B}~o??~~{???No?G?@w?E??]?@o?B_?[??w?D_?M?@ +[?B_?^_?w?N~?~w~~oN}No???G???o??K????BB|~~{?_O??Fo?\?MB~~oB_~~{B?Bq?@o?{_?{?N_?^?@w?Fo?]?@{?F_?^?@w?Fo?]??{?Fw?N??~?@o?Nw?K?B~?@ +?N|~??B~~oE?B}?B_?^?@w?Fo?]?@w?F_?]?@w?F_?~?@w?Fo?N?@{?Bo?^??}?Bo?N_?{?B{?F_?~o?~n|~?N~~Bo????A?E?K??F_????W~^~~?GC??AC?FO??oB{O +?N`~E?B}w@o?N{?^_?}?F{?F?@~_?o?N{?C?Bn????zw???M^???Bfo???x{???EN_???Bw????}????N_???B{????^????Fo???@{????^???BF_A??pw?_?C}?G?@ +N_B??Ro?w?@{?E??}?@o?N?@N?B_@o{?oN{F??B}?O????A?Q?K??B?????o~^~~?GC??@{?G?B_~~{?wN~~@o?{_?{?N??^?Bw?N_?]?Bo?F_@w?@w?]??]?F_?F_Bw +?@{?}??N?N_?BoBw??{?}??N?N_?BoBw_?{?]G?F?Fq?@o@{_?[?^G?F?Bq?@o?}o?[?Fk?B??~??o?No?M?@{?Bo?N??~?@w?N{?Nz~NoB~~o[?????_M_A???o???? +KNv~~oA@???^?@s?wN~~F}B~~p{?N??^?Bo?F_?}?@o?F_?[?@w?F??]?@o?F_?[?@woB??^E?o?Bp_???{W???NF???~p{??N{^?G?NB_A?@oo?_?[K?G?FB@a?@ooK +_?[?BK?F??r??o?Eo?K?@k?B??^??w?Bo?N??}?B{?N}~~{@~~~~?O???GBO?_??K????BB|~~{?_O??Fo?\?MB~~p~_~~{^?Bo?Fo?{?@w?N_?[?@w?F??]?@o?F_?[ +?@w?F??]K?o?Fp_K??{W???NE???Bpo??N{^??B~FoA?Bow?_?[K?G?FB?A?@oo?_?[K?G?F??B?@o??o?K??K?B??B??o??o?K??K?B??B_?o??~f{??N|~??????A? +W?K??F_????W~^~~?GC??AC?F_??oB{_?NB~K?B{wBc?Nw?~_?{?N{?F?Bz_?o?]{?C?FN?@?@rw???[^???FFo??@p{???KN_???Bw????}????N_???B{????^???? +FoB}Np{?~b{^?G?FF_B?@rw?o?[}?K?BN_B??vo?o?L{?M?B}?B_?~?B}?N_Bzw@_N{N?OB}?o????A?K?K??B?????o~^~~?GC??@{?G_B_~}N~?}B~w~{B?Bo?F_?? +N??^???}?@{??@w?Bo??F_?N???]??{??@w?Bo??Fg?N???^_?{???}?@o??Bw?F???N_?[??N~~@o??~~{F?G?No?[?_?^??oA?@{?B?G?Fo?K?_?^??oA?@}?B?K?F +w?K?o?N_?OB??}?@?K?Bw?C?o?N_?OB??~?@?M?B{?C?~b~~FoB~F~{^??????A?_?C??@_????o~^~~?GC??@{?CoB_~o^_~o[?N???N???N_??F_??F_??F_??F_?? +F_??Fo??Bo??Bo??Bo??Bo??BoA?BoA?@oA?@oA?@oA?@oA?@oB?@oB??oB??oB??oB??oB??oB_?oB~NoB~No??????_I?A???o????KNv~~oA@???^?@c?wN{N?MB~ +Bo??N????Bo????}????F_???@w????]????F_???@w????^????Bo????{????N????Bo????{??G?N??A?@o??_?[??G?F_?E?@w?@_?^??K?Fo?B??{??o?N_?K?B +W?B??v??o?Lw?M?B^_B}~r{?~~{~?????GBo?o??K????BB|~~{?_O??Fo?i?M?~??B~?}?~?GB~?o@{?G?^??@{?K?^??@}?K?^??@u?E?N??@u?E?N??@u?B?N??Be +?B?N??Be?H_N??Bf?H_N??Bb?GoF??Bb?GoF??Bb?GWF??BB?WWF??BB?[KF?GBB?[KF?GB@_[CB?GB@_[CB?GA@o{?B?GA@o{?B?GA@W}?B?KA@W}?B?KA?K}?@?KA? +K}?@?K??F}?@?K??F}?@?M??B~?@?N?@B~?@?NwN@~{^?N{N`~{^?????G?o?o??K????BB|~~{?_O??Fo?a?M?~oN{BwF~?~oK?^??}??@{?@o??Nw?F???|_?K??Bu +?Oo??MW@B???x_CK??Be?ow??K[BB_??oo[E??AB@oW??GKF@_??_o{E???BBo[?_?K^@oA??PwB?G?@F_K?_?C}?oA??RoB?G?@~?K?o?Fw?oB??N_@?K??}?C?o?Bo +?OB??N?@?M??w?C?{?F_?OB}B}???N{No????????G@G?o??]????@b|~~{?_O??GO?\??B?Fo??}F{??Brw???Nw?E?@{?Bo?M?@}?@_?^o?O?N{???B~_???|w???^ +^???Fro??@{}???^N_??Frw??@{}???^FoA?Bp{?_?{^?G?NFoA?Bp{?o?[]?K?FF_B_?rw?w?K}?N?@N?Bo?Fo?]?@w?Bo?{??]?MABBoB?~oK??F{??????GBg?_?? +K????BB|~~{?_O??Fo?\?MB~~oB_~~{B?Br?@o?{_?{?N_?N?@w?Fo?]?@{?F_?^?@w?Fo?]?@{?Fw?N??}?Bo?N_?[?B{?B??~o?OB~^oA?~p{?_?[??G?F??A?@o?? +_?[??G?F??B?@o??o?K??K?B??B??o??o?K??K?B??B_?o??~b{??N{~??????A?Q?K??F_????W~^~~?GC??Ac?FO??o@{??N`~???{}???B}?@_?^??{?B_?^_?W?F +{?E?B~????~w???N]???Fvo??@{{???^N_??Frw??@{}???^N_??Fp{?_?{^?G?NFoA?Bp{?_?{^?K?FF_B?@pw?o?K]?M?BNfb_?Rr}{??{rfc?]G[|?N?FFoB_`o{? +oN{B?_@~?oG???KB??AB?o??poC??N{@??B~?O??~o???F{????}?????G?o?o??K????BB|~~{?_O??G??^?MB~NoB_~~{??Br_?o?{o?[?Ng?F?@y?Bo?]_?{?Fg?N +?@y?Bo?]_?[?F{?F??~??o?Nw?C?B~_??N{~??B~BoA?Bpw?_?[{?G?FN?A?@r_?_?\w?G?F]?B?@vo?o?L{?K?B^?B??vo?o?L{WK?B^FB_?~oo~b~wMN{~}@{??M?N +????_D_A??@G????ENv~~oA@???`?@W??Nop?N{r_G[~o?K}w?C{w??{{??[[??W[??W[??W[???{???{?C?{?{?wN{?wN{@oN{B?N{F?N?F?G?F???N???N???N@_?F +@_?F@_?FB_?FBg?BFk?BN}?@^~??|v{?op{??????G?W?o??]????BB|~~{?_O??Fo?\?Nb~~p~w~~{^]K?BFpr??po[w?K[BM?@F?z_?P_Ew?CW@m?@F?Z_?OoB{?CK +?N????Bo????{????N????Bo????}????F_???@w????]????F_???@w????^????Bo????{????N????Bo????{????N_??}N{N?Nr~Bo????A?K?K??I_????o~^~~ +?GC??A??FOB~N~w^~r~}F}?@{?F_?]??{?F_?N??W?Bo?E??{?@_?N??W?Bo?F??}?@o?F_?K?@w?B??]??o?F_?K?@w?B_?^??w?Bo?E??{?@_?N??W?Bo?E??{?@o? +N??K?@o?B??[??w?N??E?Bo?@o?{_?K?]K?@?NBo??B_^o??_@{??????G?o?o??c????BB|~~{?_O??G??^?N{NwF~~B}@~}?A?B~????^o???B{?A??]?@_?F_?[?? +w?F_?M?@W?B_?V??w?Ko?K?BM?B??p_?o?KK?K?BB?B??oW?_?[E?G?F?oA?@oK?_G[@?GAF?O??ro???K{???@n????Zo???B{????~????F_???@w????M????B_?? +????_E_C??AO????KNv~~oA@???_?Ao?~o~}F~oN~o~}F~oN}?Bo?^?@{?Bo?]??{?Bo?U??{?Bo?U??{?Bw?R??{?Bw?R??{?Bk?P_?{?Bk?P_?{?BE?oo?w?FE?oo? +w?FB?oW?w?FB?oW?wGF@?o[?wGF@?oK?wKF@?oK?wKF?`oC?wMM?`oC?oEM?po??oEM?po??oBM?Xo??oBM?Xo??o@m?Lo??o@m?Lo??o?}?Fo??_?{?Fo??_?[?Fo?? +_?[?Bo??_?K?Bo??_?K?@o??_?K?@o??????_B?B???W????KNv~~oA@???^?AG?oN}B~oN?~wN~?o@{?B{??F_?B_??]??E??Bo??K??NA??o??{KC@??B_oO???M@b +????oBK???B?No???G?^????_?{?????Bo?????^????_@{???B?No???K?{????WBo????o]????B`w????FN_????K{?????Zo?O???}?@?G?Bw?K?o?F??oBo?}?F +?N{N}F{?~o^w^o??????_B?B??@w????KNv~~oA@???^?AC?~`~?~oF~F{B~?M?B?@{?w?K?@oB??o?B?K?F_?K?_?^??OA?B{?????NW????@|o????Fr?????]E??? +?BwK????N?w???@{@_???F_B????}?C???Bo?O???N??????{?????Bo?????F??????]?????@w?????F_?????]?????@w?????B_?????N????KB~@o??wN{F???? +????_A_A??@G????MNz~~oA@???S?@O?w@{?}F{?]N_?]M??MM???M???M???M??oN{?{N{?~N??Nn??Fv??Bv?KBv?KBv_KBvoKFv{E~n[B~NC?????_D_A??@w???? +ENv~~oA@???_?@K?w???~???~_??{???w???{???[???[???[???[???[???]???MFw?mN{@}MC@]K?BMG?BNG?FFG?FFG?FFG?FFG?FFK?FFk?BBk?BBk?BBm?@Bn?@ +Fn_?Nvo?|r{?oo{?????_M?@??@_????MNz~~oA@???S?@??_F~_~~Bo]N?{[@w?F_?N??{?Bo?N??{?@o?N??{?Bv?]KBw{~@~o@o???G@W?_??Q????@b|~~{?_O?? +G??T????F?A?FoB?Fo??F_??F_??F_??B_??B_??B_??B_??Bo??Bw?~@{B~@~B`@~b?@va?@rq?@rq??py??py??py??pz??p~??o~??Oz??Oz??Pz_?Pzo?Rr{?^bn +B~BbBo???GB_?O??Q????Bb}~~{?_O??D??P?G?~?M@~?NBo?Fb_?Br_?Pz??Pz??O~??^~~?^~~?O{???{???[???{???{???~_?@x_?Fpw?N_^?N?F?????G@O?O?? +K????@b|~~{?_O??G??R??B_?oBw@oA}@oAN@oAF?w?F?G?B?G?B?G?B?G?B?G?B?K?B?Nw^?Nw^?K?@?K?@?K?@?M?@?M???M???M???M???M???N???F???F???F?? +?F???F_??F_??N{F?N{F?????G?g?_???????AB}~~{?_O??Fo?W????}?B}~?B~z{BFx}AB@}A@@~A@@~A?@~A?@~A?@~B??~B??}Bp?^B~?J?~?B_??B_??F_??Nb~ +?^B~@~b~Brq?Bpw?B_w?B_{?B_[?B_{?Bpy?@vz_?~b~?]?~??????A?U?G??B?????W~^~~?GC??A??DO??@oB_@oBo@oA?@o??@oA?@oA??oA??oA??oA??oA??oB? +?oB?{ON?~O^?bo^?@o^??o^_?O^_?O^_??^_??^_??^__?^o_?\o_?Lo_?Lo_?Lo_?Lwo?Lwo?N~{p~~{p{???A?M?C??@_????o~^~~?GC??@{?AoA?@{?Fo?^?@{?B +????????????????o?Fw?^_@w?F??]?@w?B_?M??w?B_?N??[?@o?F??[?@o?F_?~oF~?O???G?w?O??E????@b|~~{?_O??G??J???Fw?^o@w?F??]?@w?B_?M??w?B +_?N??{?@o?F??[?@o?F_?]??w?B_?M??w?Bo?F??[?@o?F??]?@w?N{B~oK???A?c?K??B?????w~n~~?GC??@O?G_B?{O\~?Nb|r~{?~?~n{?B_@vz_?K?BNm??w?C] +w?B_?Pz_?M??Bm??w??Mw?B_??z_?M??Bm??{??N{?@o??\o?F??@v??[??F[?@o??\o?FA?@v_?]G?F]?B~{r~~?~~rN~{B????_D_A???o????MNz~~oA@???S?@S? +oNCB}NsF~G{Fw?[Fo?KFw?CFw?CFw??Fw??Fw??FwG?F{G?F[G?B[G?B[G?B[G?B[K?B]K?B~~K^~~K^????_A_A??@G????MNz~~oA@???S?@O??B{?oN{?{K?@]G?B +N??FF??FB_?NBo?NBo?NBo?NBo?N@w?F@w?F@w?BB{?BB{?@Bm??NF_?}B{?w?[?????_D_A????????MNz~~oA@???\?@_??K[NwN[~{B{{??|w??\w_?^o_?No_?No +_?No_?No_?Nwo?Lwo?Dwo?D{o?C{o?C}o?K^wG[NwNwFwN_@w???w???{???{???[???[???[???~oK?~oK??????G@??_??Q????Bb}~~{?_O??FO?R???~@k@~@nBb +@~b?@va?@vq?@rq??ry??py??py??pz??p~??o~??Pz??Pz_?Pz_?Rzw?Vr{?^bn?NBb??B_??B_??Bo??@o??@o??@o??@o??B~?oB~?o????A?k?C??B?????w~n~~ +?GC??@O?COB?}OBw~oF{zoF_xoF?woB_?OB_?OB_??B_??B_??B_??Bo??@o??@o??@o??@o??@o??@w??B~@oB~@o????A?k?C??B?????w~n~~?GC??@O?BoB?^~@~ +}F_w[B`oNF?{?No?}?^oF}?~?BwEN?Ww@b_MN?w[Fpz~B~KB????_J?@??@_????]Nv~~oA@???[??s?_?F??K??o?B_?M??{?@{?N{^~p|o?F??[?@w?B_?M??w?B_? +M??{?@oEF?W[@`oEF?M[?~o@}?????A?U?G??E?????w~n~~?GC??@O?Co@o_?L}{?L~}?Lwo?Loo?Lwo?Kwo?Cwo?Cwo?Cwo?Cww?C{w?C[w??[w??[{??[{??[}??[ +~_B{~o^w{o[???A?O?G??E?????w~n~~?GC??@O?DOB~wP~~wP|wo?[w_?Dw_?Doo?@oo?@oW?@o[?@oK?B_M?B_E?B_B?B_B?B_@_B?@oB??oB??oB??OB??O????A? +E?K??E?????w~n~~?GC??@O?F_B~{[{~~~FNNrb_?O{ww?CFMJ?@?rao?OKwmGK@MHaB?VA[oo@obKK?[?pb?F?EWo@o@bK?[?Kv?F?BFoB_?P{?w?C^?M??BoB_??w? +W??E?????G@??_??E????Bb}~~{?_O??D??W?NaN~~aN~{?BFw?B@oAF?oAF?OBM??@m???{???{???{??@}??@v?GBb?GB`?KB??^B??^b??~~_N~~_No???G@??_?? +?????Bb}~~{?_O??FO?X?N?^~_FoF~w@_?\{?G?BE?A?@p_???[K???FB???@oW???[F???F?o??b_K??Gw@??BM????r_???Ew???@{????N????Bo????[????F??? +??o????K????@_????W???wB??AN?O??roC??N{????}????????_A_A??@_????QNv~~oA@???^?@K??Fw?_N{?oKK@wG?B[G?B[G?FM??FMG?FNG?FNG?FFg?FFg?F +Fg?FFg?FFg?FB{?BB{?BB{?BB{?BB{?BB{?@B}?@@}?@@}??@~??@v??Bf_?Bb_?F@w?~?{?{?K??????G?g?_??W????Cb|~~{?_O??F_?N???o?B_?N~?~{@o?F??[ +?@o?F??]??w?B_?M??w?B_?N??[?@o?F??[?@w?F_?M??w?B_?M??{?B~f~~^o???G?g?_??K????Cb|~~{?_O??F_?U??B{?OB~@wBBB{?@F}??Fv??Fn?@Nn?@Nn?@ +Nn??Ff??F_??Fo??FoA?BoB?@oB??oB_?OBo??@w???}???N?G?F?K?B?M?@@f??@b_??po??~z~?~~~?^~~?O???G?g?_??Q????Cb|~~{?_O??Fo?S??B}?GB~?{BB +@}A?B~A?B~?@B~A?B~A?BoA?@oB?@oB??oB_?oBw?O@~???~??Bo??B_?OB_?oB_?oB??oB_?oz_?p~_?p~_?p~_?o~o?O^o?O~w?@x}?No^?N?F??????A?I?G??C_? +??@G~^~~?GC??@w?D???_?K?o?K?o?K?w?C?{?C?u?C?v?C?r_C?p_C?woA?wOB?w?B_w?@ow??ow??W[??K[??E[??F[?B~~o~~~o{?]???M???M???M???M???N??? +N?B?~oN?~oK???A?I?G??C_???@G~^~~?GC??@{?D?B??Oz?~o~?~o^?~oF_^o@_??@_??@_??@_??@_??@o???o^_Ao~oBowOFoo?Lo_?Ko_?K?_?[?_?[?_?[?o?[M +o?[No?KNo?KNw?KBw?CF{??M]??]N_B{FoBo@o??????_B_@??B?????ENv~~oA@???M??[?NBx}^fxoKB?wF@oM@oK???A?M?C??E????A_~~~~?GC???S?@O?]F`{^ +B_????A?I?G??@_???Bg~N~~?GC??As?E????M???M???F???F???B_??B_??@o??@o???w???w???[???[?_?K?_?K?o?C?o?C?w???w???[???[???M???M???F??? +F???B_??B_??@o??@oA??oA??oB??OB??OB???B_??B_??@o??@o???w???w???[???[???M???M???F???F????????_B_@??@_????MNz~~oA@???S??_?[Nbw}F_? +????????????F`w^Fow???A?M?C??C_????w~n~~?GC??@s?AOB_?N?@{?Fo?^?????????????????????????????{?Bo?N_?}?Bo?K??o?B_?E??[??o?B_?F??K? +????_D_A???o????ENv~~oA@???_?@W??K?N?N_^?Fo{?@w{??{{_?[[_?K?_?K?_?K?_?K?_?K?o?K?~n{N~n{No?CNo?CMo?CNw?CNw??Fw??Fw??Fw??FwG?F{G?F +[G?B[G?B[G?B[G?B]K?B]K?B~~C^~~?^????_A_A??AO????ENv~~oA@???M?@??NF_}^Fz{^np}~FB_KE?oWB`oFB_[M?w[@owB@_???G@g?O??K????@B~~~{?_O?? +?o?J?NwF~_^~?o???G?g?_??u????@b|~~{?_O??B_?O?EB?]N?w[@owB`oEB?[M?oWB@`{}Frw^N`{}Fbo???A?}?C??B????@g~n~~?GC??@??C?B_@~_^~B~}^~x~ +~~~~~~~~~~~~~~~~~f~}^~o~}@~_@o???GA??O??W????BB|~~{?_O??I_?H?G?@o?F??[??w?B_?E??[?@o?B??M??w?@_?F??[??o?B_?M??W?@o?F??[?@o?E??w? +B_?K?@o?F??W?B_?M??o?F??[?@_?M??w?B??K?@o?E??O???GA??O??K????BB|~~{?_O??I_?H??K?@o?F??W?B_?M??o?F??[?@_?M??w?B??[?@o?E??w?B_?K?? +o?F??[?@o?F??M??w?@_?F??[??o?B_?M??W?@o?F??K??w?B_?E??[?@o?B?LWk??@ERsxS???????????????????????????????????????????????????????? +, +OAk??CXNRdO@????Fo???@O???@TKB?oKB?rKB?qSskoKC\FKB?oKTTYUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????kA[??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????q@w??F[\???\G????????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??MWB??@C@???a_O??M_C??@E@O??h?S???GE??@G@_??b_W??MoE??@I@o??i?[??MwF??@KA???i__??N?G??@MAO??j?c???gI??@gA_??p_g??AOJ??@kAo?? +q_k???GK???yB???_?o??MOK??@ABO??a_s??LGL???YB_??S_w??JGM??ByB_??K_{??FON??A{Bo???`???C_O??AMC???t@???BGP??@wCO??n`C???WQ??@KC_?? +c`G??MOQ???ACo??T@K??FoR??AoCo???`O??DOS??AeD???u`O??HoT??@]D_??G@[??K?V??@_E???G`c??I?X??@?E_??H@k??MWZ??AgF???Q@s??Bo]??B}F_?? +^@{??Bw_????GO??oaC??K_a???aGo??paK??A?c??BCH???FaS??I?d???{H_??wAW??C?f??A]Ho??Ma_??Igg???CIO??fAc??NWh??@OI_??qAg??B@AAThYUdhT +KB?oKB?rGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBKoKBHRQr?oPs[??????GB_?O??E????NB|~~{?_O??Do?P?G?B?K?F?K?F?K?E?K?E?M?M?M?M?M?M?M?M?E?K?F?[ +?F?[?F?[?F?[?F?[?N_~?N_~?N_~?B_w?Bpw?F~{?V~{?V~{?O????A?w?C???????Bo~^~~?GC??@[?COB~FoB~^oB~~o?w{??wo?Cwo?Cwo?Cwo?Cww??w~?Bw^oBw +^oBw~o?ww??wo?Cwo?Cwo?Cwo?Cww?Cw{?B~~oB~^oB~No??????_M?@???o????{Nv~~oA@???V??{?wF^w^~`~~Fo}]@xwFf?N[?{?@o?F??[?@o?F??{?Bv?][@xw +Nfb{NN_~}@~_@o???GB_?O??E????NB|~~{?_O??Do?P?N{F?N{^?N{~?@p{?@pw?@ro?@r_?@r_?@r??Pr??Pr??Pr??Pr??Pr??Pr??Pr_?Pr_?@ro?@pw?@p{?N{~ +?N{^?N{F??????A?w?C???????Bo~^~~?GC??@[?C_B~~oF~~oF~~oCwo?Cwo?Cwo?Cwo?Cw???wF??wF?BwFoBwFoBwFo?wF??wF??w???w_?Kw_?Kw_?Kw_?N~~oN~ +~oN~~oK?????_M?@???W????{Nv~~oA@???V?@C?~~{@~~{@~~{@MK?@MK?@MK?@MK?@M???M@o?M@o?}@{?}@{?}@{?M@o?M@o?M???M???M???M???M???~oC?~oC? +~oC??????GB_?O??E????NB|~~{?_O??Do?P?F~{?V~{?V~{?Ppo?@po?@po?@po?@po?@po?@po?Np~?Np~?Np~?@po?@po?@po?@po?@po?@po?@po?F~{?V~{?V~{ +?O????A?w?C??B????Bo~^~~?GC??@[?BoB~^~|~~v~??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@~v~~^~|~????_M?@???W????{Nv~~oA@???V?@?? +^~x~~f~}FBw[F`o^f?}[@|oF~?N{?~oF~?^{@roNN?{[F`o]FBo[NF~{^~p~~????GB_?O??E????NB|~~{?_O??Do?P?N{B?N{B?N{B?B_??B_??B_??B_??B_??B_? +?B_??B_??B_??B_??B_??B_??B_??Bb??Rb??Rb??Rb??^~~?^~~?^~~?O????A?w?C???????Bo~^~~?GC??@[?Co@~{?\~{?\~{?^[u?F[u?F[u?F[u?F[vOF[vOE[ +rOE[rOE[rOE[roC[poC[poC[o?C[o?C[o?C[o?C[o?D~{?\~{?\~{?[?????_M?@???W????{Nv~~oA@???V?@C?^~o@^~o@^~o@vF??vF??vF??vF??vFC?fFC?fFC? +fFK?fFK?fFK?FFK?FFK?FF[?FFW?FFW?FFW?FFW?^vo?^vo?^vo??????GB_?O??K????NB|~~{?_O??Do?N?N_N~b~}NowwBv_F[?\o@v?F[?\o@v?F[?\o@v?F[?\o +@v?F[?|wFbr}N~w~}?{???A?w?C???????Bo~^~~?GC??@[?COB~FoB~^oB~~o?w{??ww?Cwo?Cwo?Cwo?Cwo?Cww?Cw{?Bw~oBw^oBwFo?w???w???w???w???w???w +??B~?OB~?OB~?O??????_M?@???W????{Nv~~oA@???V?@G?~o[?~o{?~p{?FBo?FF_?FF??FF??FF??FF_?FBo?~@{?~@{?~@{?FBw?FBo?FB_?FB_?FB_?FJ_BFN_B +^~_B^~_B^~?@?????GB_?O??K????NB|~~{?_O??Do?N?N_~~B~}Np{~BroFM?[wBo?^?Nw?~_~wF{?~?Fo?]?@o@v?F[?|wNvr~N~{^|o{???A?w?C??@_???Bo~^~~ +?GC??@[?COB~~oF~~oF~~oEFooEFooEFooEFooE??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oBoFoBoFoBoFo??????_M?@??Bg~~~~{Nv~~oA@ +???V?@S?~~C^~~C^~~C^MG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?BMG?B]K?B}M?B{NC@{N{@wN{?_B{??????GB_?O??E????NB|~~{?_O?? +Do?P?F~{?V~{?V~{?Ppo?@po?B_w?B_w?B_w?B_w?B_w?F?[?F?[?F?[?F?[?E?K?M?M?M?M?M?M?K?E?K?E?K?F?K?F?G?B??????A?w?C???????Bo~^~~?GC??@[? +Co@~{?\~{?\~{?[[o?C[o?C[o?C[o?C[o?CWo??WpoAwzoAwzoAwzOAwzOAwzOAwzOAwzOAoZOAoZOAoY?Bo]?Bo]?Bo]???????_M?@???W????{Nv~~oA@???V?@C? +^~w?^~w?^~w?]@o?[@w?{?w?w?{?w?[?o?[?o?K?_?K?o?K?o?[?o?[?w?w?w?w?[@w?[@o?MBo?MB_?^~o@^~o@^~o@?????GB_?O??E????NB|~~{?_O??Do?P?F~{ +?V~{?V~{?Rpw?B_w?F_{?F?[?F?[?M?M?M?M?K?E?K?F?K?F?G?B?G?B?G?B?G?B?G?B?G?B?G?B?M?N?M?N?M?N??????A?w?C??B????AW~n~~?GC??@??COB{@oB} +FoB}Fo?]N_?]N?A?NoBwNoB}NoB~MO?^M??FM??NN??^NoB~~oF}~oF{}oC???A?w?C???????Bo~^~~?GC??@[?C_?~???~???~???w???w???w???w??Aw^oBw~oBw +~oFw{OFww?Lwo?Kwo?Kw_?Kw_?Lwo?Lwo?Nww?Nw}OFw~oFw~oAwNo??????_M?@???o????eNz~~oA@???O??{?w@~wN~o~^bo]N?{?Bo?F??[?Bo?N[Bxw~fr{N~_~ +w?{???A?w?C??B????AW~n~~?GC??@??BoBoB~_^~B|}N`|wBvb~^~|~~v{N??|oNfb}^No~}@~_Bo???GB_?O??E????NB|~~{?_O??Do?N??@}_F~?^{@~oFf??[?@ +~v~~^~|~o?F??[?@o?F??[?@o?F??[?@o?F}N~w~~b{???A?w?C??@_???AW~n~~?GC??@c?COBo~oFw~oF{~oC}~_C]N??MM??MM??]N??}N_B}FoB}BoB}@o?]??B} +NoB}~oB}~o?^}?CNw?CFo?CFo?CNw?C~}?F}~oB{^oBoFo??????_M?@????????{Nv~~oA@???V?@K?No??No??No??M???M???M???M???mB{?}F{?}N{?}NC?]M?? +]M??MM??MM??MM??MM??MM??MM??MM??~~cF~~cF~~cF?????GB_?O??Q????Lb|~~{?_O??E??N?M?@w?F_?]?@??????????B~?^{@~oF??[?@o?F??[?@o?F??[?@ +o?F??^|~~v~~^o???GB_?O???????Hb}~~{?_O??C??R?N~z?N~~?^~~?^r~?RrN?PrF?PrF?PrF?PrF?PrF?PrF?PrF?PrF?V~^@v~^@v~^@o???GB_?O???????Hb} +~~{?_O??C??R?J{~?N|~?N~~?Nbp?Fb_?Fb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?Bb_?N~x@~~x@~~x@o???GB_?O??K????Hb}~~{?_O??C??N?M?B}?~{Fpw{Bb_N]?\o +@v?F[?\oBv_MMBw}~@~wB}?B????_M?@????????eNz~~oA@???W?@G?nv{?~~{?~~{@}NC@}M?B]K?BMK?BMG?BMG?B]K?B]K?B}M?B}Nc@}N{@}N{?mB{?M???M??? +M???M???M???~oC?~oC?~oC?????_M?@????????eNz~~oA@???O?@G?~~oB~~{B~~{BwG{Bw?[?w?K?w?C?w???w???w???w???w???w???~r{?~r{?~r{?????_M?@ +???o????eNz~~oA@???O??{?}@~}F~{^FpwFF@{?~oN}F~?~?FwF]?|wFvr~^~{~~o{???A?w?C??@_????_~n~~?GC??@S?BoB_?M??w?B_?M??~r~~N~{~w?B_?M?? +w?B_?M??wFB_[M@xwFf_N{?~_?{???A?w?C??@_???AW~n~~?GC??@??COB~~_F~~_F~~_C[[??[[??[[?B[\oB[\oB[\oB[\_BWL_BWL_BWL_BwN_@wN?@wN?????A? +w?C??B????Bo~^~~?GC??@[?BoB_?~?F}?{{F`o[Bb_MM?\o@v?F[?\o@v?F[?\o@v?N]?wwBb_[FBo]}?~o@}?B????_M?@??@_????{Nv~~oA@???V??o?o?B_?N?? +}?B}?N{?~oBf?M??w?B_?M??w?B_?M??w?B_?M??w?B_?N{N~o~~Bo???GB_?O??K????NB|~~{?_O??Do?N?N_F~@~}Np{~BvoN]?|oBv??[?@w?Fo?N??]?@~?B}?F +{?Fw?FpoNfB~^~|~~v{???A?w?C??B????Bo~^~~?GC??@[?BoBw@~o^~`{]N`w{Fb_?N??{?B~_F}?Nw@{?N_@{?F_?[?|oBv_N^@{}~r~}F~_F????_M?@???W???? +{Nv~~oA@???V?@C??@{?_@{?_@s?o@s?w@o?w@o?{@o?[@o?M@o?N@o?F@o?F`o?Bpo?~~{@~~{@~~{@?@o??@o??@o??@o?oN{@oN{@oN{@?????GB_?O??K????NB| +~~{?_O??Do?N?Nw~~b~}Now?B_?M??w?B_?M?NwF~`~}Nrw}Bf_?]?@oBv?N]?|{Frz~N~w^}?[???A?w?C??B????Bo~^~~?GC??@[?BoB?F~?~}B~{NFo{Fbo]??{? +BoN~F~{~~r{^^?|wBv?N[?|oBf_]^Bw}~B~wF~?F????_M?@???o????uNv~~oA@???W??{?@oB~^~|~~v{F^?[}?@{?Bw?F_?^??{?Bw?F_?]??w?Bo?N??[?@o?F?? +[?@o?F??????_M?@???o????{Nv~~oA@???V??{?{?^wB~w~FboN]?\o@v?N]@w{~@~o@~_NFboMM?\o@v?F[?\oBv_]NNo^}?~_?o???GB_?O??K????NB|~~{?_O?? +Do?N?N?F~?~}Frw}FroNM?\w@v_F]?|wFvr}^~x~~F|_]?@w?Bo]N@w}f`~}B~wF~?C???A?w?C??B????Ag~^~~?GC??@s?BoB??[?@o?FoB~o^~b~~^{|xpvfF][|x +voF}?^wN}@~?N{@|rvfN[[|prvfN]^|~~b~{F~?Fo?F??[?@????_M?@??Ag????gN~~~oA@???D??S?Fp{^Fp{?????_M?@???o????iNv~~oA@???\??{??F??[?@w +?F_?N??{?@w?F_?N??}?@w?Fo?N??{?@w?F_?^??{?@w?F_?N??{?@w?F_?N??{?@o?F?????GB_?O??i????Hb}~~{?_O??C??D?@{^Fp{^????????Fp{^Fp{???A? +w?C??@_???AW~n~~?GC???c?COB~~oF~~oF~~oC???????????B~~oF~~oF~~oC?????_M?@??Ag????iNv~~oA@???\??k?~o^~@~{F@o?F??[?@o?F??[?@o?F??[? +@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F?N{F~o^~@o???GB_?O??E????Ib|~~{?_O??FO?J?N{F~o^~@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F +??[?@o?F??[?@o?F??^~@~{F~o[???A?w?C??B????Ag~^~~?GC??@s?Bo?F??[?Bo?N?@w?F_?{?Bo?]?@w?N??{?B_?]?@o?F??{?B_?]?@o?N??{?F_?]?Bo?N?@w +?F_?[?@o????_M?@???o????ON~~~oA@???M??{??u?BW?L_?u?BW?L_?u?BW?L_?u?BW?L_~v~~^o???GBo?o??K????Mb{~~{?_O??G_?d????B_?????M?????@{? +????Fo?????^????_B{???A?No???K@~????oF{???B?^o???EB~????WNw???@o~_C??BB{?O??KNo@???W~?K??@bw?o??FN_F???K{?[???ro@o??@n?N???Ew?{? +??^_Fo??~~{^??B~~p{?_?E?NoA??W?~?K?@_F{?o???^oB???@~?E???Nw?W???~_B~@~B~F~{F{N{^????_K?B??@G????yNr~~oA@???a?AC??M@~_?C?~N~B?OB~ +_M[@oB{?~_F_BoBw?^?F?N?@}?K?{?Fw?OB_?^o@?K?@~_??o?F}??B??^w??G?@^o??_?D~?????F{?????^o????@~?????F{?????^o????@~?????F{?????^o?? +??B}??A??^w??G?@~_??_?F{?OB??^_@?K??}?K?w?Bo@o@o?M?N?B_?oB{?F???~w?N??B{~oK??MB~??????A?A?O??B????Bg~N~~?GC??AG?HOB~~~{@?N~~~o{? +w?~?NoB_Bo@}?M?N?No?w?{?}?F_BoBo?}?N?M?Fw?{?w?^_BoB_B}?N?K?Nw?{?o?~_BoB?B}?N?K?^w?{?o@~_BoB?F}?N?K?^w?{?o@~_BoB?F}?N?K?^w?{?o@~_ +BoB?F}?N?K?Nw?{?o?~_BoB?B}?N?M?Fw?{?w?^_BoBo?}?N?N_@w?{?~?B_Bo@}?M?NoB{?~~~~BoB~~~{@?????G@w?o??K????Mb{~~{?_O??G_?_?N~~~r~~~~{~ +w?{?N}?N?Br_Bo?ww?{?KM?N?FB_Bo@ow?{?WM?NEEB_Bp`_w?{WWM?NE?B_Bpo?w?{]?MB~FoB_~p{?w?{]?M?NF?B_Bp_?w?{W?M?NEKB_Bpb?w?{?oM?N?EB_Bo@_ +w?{?WM?N?FB_Bo@ow?{?]M?N?Fr_Bw?~~~~~N~~~~r{???A?Q?K??B????Bg~N~~?GC??AG?F_B~~~{^~~~~F}?N_@~_Bo?]w?{?FM?N?@b_Bo?ww?{?MM?N?BB_Bo?o +w?{WKM?NEBB_Bp_?w?{W?M?NF?B_Bpw?wN{^?MB~FoB_Bpw?w?{[?M?NE?B_Bp_?w?{W?M?NE?B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??N~~@oB~~o[? +????_A?C??@G????yNr~~oA@???a?AW??KB~??K?~N}F?oB~?[{B_B{?~?N_BoBw?~?F?N?B}?K?w?Nw?OB??~o@?G?B~_??_?N}??A??~w????B^o????L~?????F{? +????^o????@~?????F{?????^o????@~?????F{?{N{~^oBo~r~}??Bw?~w??N_B~_??}?N{?OBw?~_@?N_B}?K?}?No@oBw?}?N?NoB_B{?~?K?~oF~?oB{~{[B?KB~ +??K???A?}?C??@_???Bg~N~~?GC??AG?CoB~~o^~~o^?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB? +FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB?FoB~~o^~~o[???A?K?K??B????Bg~N~~?GC??AG?FOB~~o[?~~{F?M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo?? +w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo?Ww?{?EM?N?@b_Bo?Ww?{?FM?N?@r_Bo?Mw?{?Bm?N??~_Bw?Nw?~_B~~~~o~~~~{N +????_N_C???o????yNr~~oA@???a?B??~o{??NB~~p{??Nb~w@{??N_FWB{??MoFWB{??MoFWB{??MoFWFw??MWFWFw??MWFWNo??MKFWNo??MKFWN_@_MCFWN_@_MCF +WN?BoM?FWN?BoM?FWN?BoM?FWM?FWM?FWM?FWM?FWK?NKM?FWK?NKM?FWG?^EM?FWG?^EM?FWG?^EM?FW??~BM?FW??~BM?FW?@}@m?FW?@}@m?FW?B{?}?FW?B{?}?F +W?Bw?]?FW?Bw?]?FW?Bw?]?FW?Bo?M?F~o~o?N~~~o|_?N~~????_A?C???o????yNr~~oA@???a?A[?~p{?}F~~NoBw^}@~???BwN{???L_~oC??uB}?O?BWNwB??L_ +~?[??uBwBo?BWN?^??L_w@{??uB?No?BWK@~??L__N{??u??~oCBW?B}?oL_?NoB?u??~?[BW?BwBoL_?N?^?u??wB{BW?B?NoL_?G@~?u??_N{BW???~oL_??B}?u?? +?NoBW???}?L_??Bw?u???N?BW???w?L_??B??~{N?G?B~o{???K???A?{?K??C_???Bg~N~~?GC??AG?Go??wB{???B{~oC??B~_@oB?Bw?^?M?F?B{?{?K?^_Bw?OB{ +?N_@?No?~???}?F{??Bw?^w??N_B^_??{?L}??Bo?v{??N?F^o??{?\~??Bo@v{??N?F^o??{?\~??Bo@v{??N?F^o??{?\~??Bo@vw??N?B~_??}?N}??Bw?~o??N_@ +~?C?~?Fw?OB{?N?B?Fw?w?[?NoB?Bw?^???~w?[??Nr~?O??wB{??????GAO?o??K????Mb{~~{?_O??G_?_?N~~~oB~~~{Fw?~_B}?N_B~_Bo?~w?{?^m?N?Fz_BoB} +w?{?~m?N?Nz_BoB}w?{?~m?N?Fz_Bo@}w?{?N}?N_B~_B}?NwN~~@}B~~oB_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo?? +~~{@?N~~?O????A?{?K??C_???Bg~N~~?GC??Ao?Go??wB{???B{~oC??B~_@oB?Bw?^?M?F?B{?{?K?^_Bw?OB{?N_@?No?~???}?F{??Bw?^w??N_B^_??{?L}??Bo +?v{??N?F^o??{?\~??Bo@v{??N?F^o??{?\~??Bo@v{??N?F^o??{?\~??Bo@vw??N?B~_??}?N}??Bw?~o??N_@~GCN~?FwoP~{?NBbMFw?wE\oNoB?Z}?^??B~w?[? +?Nr~?O??wN{@@???o?KC??A??oW??G?N@o??_N{F??A?~o[??GB~?o???N{B????~oC???B}?O???Fo?????_N?B???o????yNr~~oA@???a?A[?~~|~??B~~~{B?M?N +w?{?w?}?FoB_Bo?~?M?N?Fw?w?{?~_B_BoB}?M?N?Nw?w?{?~_B_BoB}?M?N?Nw?w?{?^_B_Bo?~?M?N_@{?w?~_BoB_~~{B?MB~~oK?w?~wBoB_B}?^?M?No@{?w?~? +NoB_Bw?~?M?N_B{?w?}?NoB_Bw?~?M?N_B{?w?}?NoB_Bw?~?M?N_B|_w?}?^vB_BoB~]N~~?^w~~~{@{@{???A?y?G??C_???Bg~N~~?GC??AG?E?B?^rBo~rfwoB|{ +?B{}?Bw]?Bo^?B_^?B_^?B?~?B@~??B~??B~BoB}~oB}~o^{~o~w~p~o~r~?~v{?~f{?oN{??N{??Nw??NoB?N_B?N_B?N_F?N_F?F_N?Fo~?Bz~?P~f~o{B~oK???A? +i?K??B????Bg~N~~?GC??AG?G_B}~~~~?^z~~~{@^k?^{?C]o@~_?Oz?F{?@@k?^_?CFo@}??o^?Fw?B?{?^??KBo@{??oN?Fo?B?{?^??K?o@{???B?Fo???K?^???? +o@{???B?Fo???K?^????o@{???B?Fo???K?^????o@{???B?Fo???K?^????o@{???B?Fo???K?^????o@{???B?Fo???K?^????o@{???B?Fo??oN~~FoB?~~{^???? +?G?G@???K????Mb{~~{?_O??G_?e?N~~?^o~~~{@~B~_BoA??]?N?G?@w?{?_?F_BoA??]?N?G?@w?{?_?F_BoA??]?N?G?@w?{?_?F_BoA??]?N?G?@w?{?_?F_BoA? +?]?N?G?@w?{?_?F_BoA??]?N?G?@w?{?_?F_BoA??]?N?G?@w?{?_?F_BoA??]?N?G?@w?{?_?F?BoB??[?^?K??_@{?w?A?No@o??@~?Bo??No@Fo??{N{N??A?~oC? +????_N?B???W????yNr~~oA@???a?A[?~~{@{F~~~oFo^}?N???Bw@{???N?FoA??[?^?G?@_B{?o?A?NoB??G@~?M???F{?W???~o@_??B}?B???Nw@K???~?CW??B{ +?P_??NoBF???}?KK??Bw@oo??N?F@_??{?{E??B_BoK??M?N?o??wH{B??B?foC??KA~?O??_N{???A?~o????@~?????F{?????^o?????}?????Bw?????F??????[ +??????A?[?S??@_???Bg~N~~?GC??AG?LoB~~~B~B~`~~~~o~o~w^~?N?N{???^_BoB}???Bw?{?~_???{?^?Nw@_?F?FoB{?W?@oB{?~?F??W?~?NoBo?A?NoB{?{?? +?F{?~_\_??@~?NWFW???~oBu@u???Nw?wo{o??B}?MKNK???~_FbFr_??Nq@oP{W??B{_[C^E???}KN@Noo??NbB_B{K??Bwpw?~B???{E[?^oW??N@f?F{E??BoZoB~ +@o??wB{?~_K??M?~?NwB??B?NoB}?O??o@{?~?C??K?^?No@??A?BoBw????_?{?}??????N?F_?????@o@o??????[?[???????_G_A???o????ANz~~oA@???U?@_? +wF{?}N{@~N?B~M?F~M?N~K?N]K?N?K?N?K?N_N{N{N{N~K[N~k?N^k?N^{?NN{?NN{?NN}?N^~?N~n_^~J~~{?~~????_M_A???o????sNr~~oA@???b?@g?~oC??N{@ +??Bw?O??}?C??N_@??Bw?O??}?C??N_@??Bw?O??}?C??N_@??Bw?O??}?C??Nbp@oBw~R{?}?|}?N_B~?Bw?^_@}?Fw?^_@{?Fw?^?B}?Fo?~_@{?Nw?^?B}?Fo?~_@ +{?Nw?^?B}?Fo?~_@{?Fw?^_@}?Fw?N_B~?BwBv{?]Nw^?Bbw@o????A?U?G??B?????G~n~~?GC??@W?D?A?~oF_~o^woo~{o?|{o?|}o?{}_?[~???~???~???~???~ +???~???~???~??@}??@}??B{??r{?Ozw`o^_~oM?~o????A?y?G??B????BO~N~~?GC??AK?E_??oF{??K@~????^_???Fw???@}????^_???Fw???@}????^_???Fw? +??@}????^_???Fw?_F|}?MB~^oBwov{?~?@~?Fo?^_@}?Fw?N_@}?B{?^_?~?Fw?No@}?B{?^_?~?Fw?No@}?B{?^_?~?Fw?N_@}?Fw?^_@{?F{?~G@~?Nb@^oBo~~wB +_B~}?o???G@o?_??K?????b}~~{?_O??D_?T?G@~?MB~?^b`@~r?@vq?Bvw?Brw?Fr{?Fr{?F~~~F~~~Fr{??B{??B{??B{??Fw??Fw??No?EN_@FN?FB}B~@oB~?O?? +?GAW?O??E????LB{~~{?_O??Go?R??B{?WB~?{Bn@}Bf@}Bf@~Bb@~BB?~?B?N?B?N?B?N?B?N?B?N?B?N{~?N{~?N?B?N?B?N?B?N?B?N?B?N?B?N?B?N?B?N?B?N?B +?N?B?N?B?N?B?N?B?N?B?N?B?N?B?N?B?Nw~?Nw~??????A?g?G??@_????G~n~~?GC??AC?EOA?^~_?wN~~?^B`zoFwoM[@^GBN?Fq?Bo@{_?{?^G?N?Fq?Bo@{_?{? +^G?N?Nb?@oBowOK?}N{@?J`~???W????M????F_???Bw~o[?}N{~?Nb~^oBo~~{?~N~~?Fw?~_C~?N_@FoBo?P{?{?C^?N?@NoBw?Vw?~?B{?V{?{N{^?GB~?o????A? +y?G??B????BO~N~~?GC??AK?E_B~?O??~oC??N_@??Bw?O??}?C??N_@??Bw?O??}?C??N_@??Bw?O??}?C??N_@??Bw?O??}MCN?NbxNoBwFr{?}?|}?N_F^_Bw?vw? +}?L}?N_@^_Bw?Vw?}?D}?N_@^_Bw?Vw?}?D}?N_@^_Bw?Vw?}?D}?N_@^_Bw?Vw?}?D}?N_@^_B~b~{B~w~~?o???GA??O??E????Jb{~~{?_O??H??K?N_?~?F{?^o@ +~?F{?^_???????????????????B~?^{@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@~o~~Bo???GA??O??E????LB{~~{?_O??Go?K?N{@~oFw?^_@ +}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^{N~o{???A?Y?O??B?????G~n~~?GC??@W?I_B~wP~oBoB~}R~{ +FoBwNVw]NoBwB~wF^oBw@~oB^_Bw?~o@^_Bw?~o@^_Bw?^o?^_Bw?^o?^_Bw?^o?^_Bw?^o?^_Bw?^o?^_Bw?^o?^_Bw?^o?^_Bw?^o?^_Bw?^o?^_Bw?^o?^_Bw?^o? +^_Bw?^o?^_Bw?^o?^_B~b~~F~oN~b~~F~oK???A?y?G??B?????G~n~~?GC??@W?E_B~wO{?~~c~?N_^NoBwBvw?}?\}?N_B^_Bw?vw?}?D}?N_@^_Bw?Vw?}?D}?N_@ +^_Bw?Vw?}?D}?N_@^_Bw?Vw?}?D}?N_@^_Bw?Vw?}?D}?N}N~oN~b~{B????_I?A???o????ANz~~oA@???U?@[??F{?wN{B{KCF]??N^??^N_?}N_?}N_?}No@}No@} +No@}No@}No@}No@}No@}N_?}N_?}^??^}G?N{KCFwN{B?F{?????_M_A???o????ANz~~oA@???_?@g?~~CF?N~|NoBwBv{?}?N{?N_@~?Fw?^_@}?Fw?^_@{?Nw?^?B +}?Fo?~_@{?Nw?^?B}?Fo?~_@{?Nw?^?B}?Fw?^_@}?Fw?^o?}?N}?N_N^oBw~p{?}NcF?N_@??Bw?O??}?C??N_@??Bw?O??}?C??N_@??Bw?O??~o{??N{N??????A? +I?G??B?????G~n~~?GC??@W?CoB~}?F~~_Nwz_^wxo^wwo^wwo^woONw?OBw?OBw?OBw?OBw?OBw?OBw?OBw?OBw?OBw?OBw?OBw?OBw?OB~FoB~Fo????A?C?G??B?? +???G~n~~?GC??@W?COBovoB{~o?}}??]w??No??No??^??B~??B~FoB}NoB}^oBw~oBo~oC?~_CB{?CB{?CFw?CNw?C^{??~}?B~^oBbFo????A?C?G??@_????W~^~~ +?GC??A??CO???o???o???o???oA??oA??oB??oB_?oBo?oBw?oB~~oB~~oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo_oFo_oFo_oFo_oFo_oFopoF_ +xoB?~o??No????A?y?G??B?????G~n~~?GC??@W?E_B~oV{?~{D~?N_@^_Bw?Vw?}?D}?N_@^_Bw?Vw?}?D}?N_@^_Bw?Vw?}?D}?N_@^_Bw?Vw?}?D}?N_@^_Bw?Vw? +}?D~?N_@^oBw_V{?{KL~?NB~~_N?N~wBOAk??CXNRdO????????????????????????????????????????????????????????????????????????????????????? +, +OB{??CXNRdO@????Fo???@O???@TKB?oKB?rKB?qSskoKC\FKB?oKS|YUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????kBk??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????prG??Ekr??@jLO???????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??N_B??@}@???z_O??GWD??B}@O??\_W??MwE??@e@o??v_[??DWG??A?A???g?_??COH??AOAO??k_c??NwH???KAo??E_o??A_L???uB_??F?{???GO???OCO?? +F`G??JGQ??AWCo??}@O???WU???SDo??}`[??D?X??@]E_??E`k??AG[???oFO??Y@w??NG^????GO??`AC??Ewa??BqG_??vAK??E?c???_HO??uAS??KGe???oHo?? +{A[??Dog???qIO??sac??DWi???qIo??fAk???Wk??AOJ???KAs??Mgl??BEJ_??]a{???_o??A{K???[BC??Dgq??ACK_??GBK??LOr??@kL???ABS??I?t??@wL_?? +mBW??B?v??BCLo??Eb_??HGw???MMO??\bc??MWx??@UM_??dbg??Mgy??@YMo??Dbo??IW{??BCN???ybo??FG|??BcNO??ZBw??Ho}??BKN_???b{??B?{AThYUdhT +KB?oKB?rGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBKoKBHRQr?oPs[??????GBO?_??E?????b}~~{?_O??D_?Z?N{N}?^~B~_F{?N_?N?BW?Bo@v??w?[o?M?NM?B?Bp_? +o@{W?G?^B?A?Foo??B{E???~@_??^_K??FwB??B}?o??~?C??No@??Bw????}????F????@o??????A?o?K??@_????G~n~~?GC??@W?HOB~p~~`F~~F~}C^}?C}??No +?ry??^?B^g?@{?\}_?F_@~z??M?F}{??w?~zw?B?B~l`?KAN{UC?_H~pKoA?v~Cr?GB~wBk??N~_Fo??^{?^??@}o?{??Fz?Bo??Ng?N???{_?[??@o?@o??E??B???? +?GBO?_??E?????b}~~{?_O??D_?Z?N{N~_N~B~wB{?Kw?M?FF?B_Bow?o@{F?G?^?o??noC??Nw???B}????~????N_@??B{?o??~?[??MWN??BFBoA?_p{?oGC~?M?? +^o@o?Fw?~wF~@~}@~o[???A?s?G??@_????G~n~~?GC??A??EoB~B~_F~o~w@~?Bw?Bo?u??{?\o?M?FK?B_Br_?o?{W?K?^E?A?Foo?_@{K???~@_??NoW??FwB??@} +?o??~_K??No@??B{?O??}????N_???@o????[????B?????o????E???F`_??B{[???~B???NoW??HWB??B}?O??}????????GA_?_??K????@b|~~{?_O??G??V??@~ +?MB~?~B@@~a?Bvo?Fvo?Frw?Nbw?Nbw?Nb{?Nb{?^b{?^b{?^b{?^b{?^b{?^b{?^b{?^b{?^b{?^b{?^b{?^b{?^bw?Nbw?Nbw?Nfo?Fvo?F~a?B~B@@}B~?o@~???? +?GA_?_??W????@b|~~{?_O??G??R???W???]?G?^?N{^?N{^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^?G?^ +?G?^?G?^?G?^?G?^?G?^?Nz~@~z~@o???GA_?_??Q????@b|~~{?_O??G??T?K?~?Nb~?Rrw?ozo@r~_Bv~?Bv~?Fv~?Fv}?Fry?Fpr?FoB?FoB?BoB_BoB_@oBo?oBo +?OBw??@{???}???^?G?NEG?BEK?@EM??EF??FNb~B~r~B~z~B~~~B~~~B~~~Bo???GA_?_??K????@b|~~{?_O??G??V?GB~?MB~?~b_@vb?B~r?F~q?F~q@F~q?F~r? +FvB?FoB?BoB_BoBo@oBw?WB~?GB~??B_@oB?FoA?No??No??^o??^rw?^v{?^v{?^v{?^v{?Nv}?Npz?Fvr_B~b~@{B~?????GA_?_??K????@b|~~{?_O??G??V???? +@oA?@oB?@oB?@oB_@oBo@oBw@oBw@oBk@oBm@oBf@wBb@wB`@{B_@}B_@vB_@rB_@pb_@pr_@oz_@o^_@~~~^~~~^oB_@oB_@oB_@oB_@oB_@oB_@oB_@oB~^oB~^o?? +?GA_?_??Q????@b|~~{?_O??G??T?@_?@fb?@~b~@~b~?~b~?^b~?N_~?L_F?@_??@_??@_??@_??H`~?Nb~?^bo?rb_@pb?BoB?BoB?FoB?FoB?Fpz?Fr~?Fr~?Fr~? +Fr~?Fr~?BoZ_Bpzo@rrw?~b~?M?~?????GA??O??W????LB{~~{?_O??CO?G?Bx~^~~~~~z?oM@_[F?wF?wE?????GA??O??W????FB~~~{?_O??@o?F?Bx~^v|~^rw? +????_M_A???W????sNr~~oA@???b?@k??N?^??B}NoA?Nv_?o?~w?M?F~?Bo@~o?{?N{?N?B~?Bo?r??{?K??N?B??Bo?o??{?K??N~~~oB~~~{?{?N{?N?B~?Bo?~o? +{?N{?N?B~?Bo?~o?{?N{?N?B~?Bo?~o?{?N{?N?B~?Bo?~o?{?N{?N?B~?Bo?~o?{?N{?N?B~?Bo?~o?~_~~@~wN~o[???A?m?G??B????BO~N~~?GC??@C?D??}w?L~ +{?\~{?^~{?~~{?~~{?~}w?~???r???r_??x_??Xo??\o??[w_?K[o?CMw??EW???????_K_@???W????qNz~~oA@???D??w?~r~~N~{~~r~~No???GAw?_??c????LB{ +~~{?_O??CO?S?E??@f??@ra??pr??Oz_??z_??X_??\o??Ko??Ko?F~o@~~oB~~oB~~oB~z_B~z_Bvr?@o????A?w?O??B????@?~N~~?GC??Ac?Jo???K?@?????M?B +?????M?B?????N?F?????N?F?????N?F?????N_N?????N_N?????No^?????No^?????No^?????Nw~?????Mw~?????M|~?????K\~?????K\~????_GN~????_GN~ +????oGN~?O??o?F~?O??w?F~?o??w?B}?o??w?B}?o??[?B}@o??[?B{@o??]?B{Bo??M?BwBo??}N~~Bo??~N~~Fo??~N~~Fo??F_BoNo??B_B_No??B_B_No??@oB_ +^o??@oB?^oA?@oB?~oA??oA?~oA??oA?~oB~^oB{~v~~^oB{~v~~^oB{~v{???A?e?O??C_???@?~N~~?GC??Ac?IOB~~~{~??B~~~~~?OB~~~~~@oB?NoBwBoB?NoB_ +FoB?NoB_NoB?NoB?NoB?NoB?NoB?NoB?^oB?NoA?^oB?NoA?^oB?NoA?^oB?NoB?^oB?NoB?NoB?NoB?NoB?NoB_FoB?NoBoBoB?NoBw@oB?NoB}?oB?~~~~??B?~~~~ +@oB?NoB_BoB?NoB?NoB?NoA?^oB?NoA?^oB?No??~oB?No??~oB?No??~oF?No??~oF?No??~oF?No??~oF?No??~oF?No??~oF?No??~oB?NoA?~oB?NoB?^oB?NoB_ +^oB?NoBoNoB~~~~~BoB~~~~~?oB~~~|~??????A?k?O??E????@?~N~~?GC??Ac?IO???Nw^o?C?wN~~w?C?}N~~{oC?~`~o~oE?~oN?~oF?~o??~oF_^o??~_FoFo?? +~?FwBo??}?FwBo??{?F{@o??w?F{@o??w?F}?o??w?F}?o??o?F}?o??o?F~?O????B~?O????B~?O????B~?O????B~?O????B~?O????B~?O????B~?O????B~?O?? +??B~?O????B~?O????B}?o????B}?o??o?F}?o??o?F{@o??o?F{@o??w?FwBo??w?FwBo??{?BoFo??}?B_^o??^?B?~o??^_A?~oM?No??~`~oBo??}N~~@o??wN~~ +?O???Nw~??????A?}?O??C_???@?~N~~?GC??Ac?JOB~~~{^??B~~~~~?OB~~~~~@oB?^oBwFoB?^oB_NoB?^oA?^oB?^o??~oB?^o??~_F?^o??~?N?^o??}?N?^o?? +}?^?^o??}?^?^o??{?~?^o??{?~?^o??{?~?^o??{?~?^o??{@~?^o??{@~?^o??{@~?^o??{@~?^o??{@~?^o??{@~?^o??{@~?^o??{@~?^o??{@~?^o??{@~?^o?? +{?~?^o??{?~?^o??{?~?^o??}?^?^o??}?^?^o??}?N?^o??~?N?^o??~_F?^o??~_B?^oA?^oB?^oB?NoB?^oBwFoB~~~~~@oB~~~~~?OB~~~{~??????A?M?O??C_? +??@?~N~~?GC??Ac?HoB~~~~~@~~~~~{F~~~~~o^?^oBw@{@~?M?NoF{?_?~?^o??B{@~???NoF{???z?^o??Bk@~???MoF}??pz?^w?BFK@~_?K[oF}??pr?^{?B?K@~ +o?K?oF~o?oB?~~{B?KB~~oK?oN~~?oB?^~?B?K@~o?K?oF~??oB?^w?B[K@~_?LooF}??vB?^w?BMK@~???woF{??Bb?^o??MK@~???{oF{??@r?^o??Fk@~???^oF{? +_@~?^oB?F{@~?N_^~~~~~o~~~~~~B~~~~~{N?????G?G@???Q????CB{~~{?_O??IO?c?N~~~~{B~~~~~oN~~~~~?{@~?NoBoF{?{?^?^oB?@{@~?G?FoF{?_?^?^o?? +@{@~???FoF{???^?^o??B{@~o?CMoF~??Oz?^{?@Bk@~o?C?oF~??OB?^}?@?K@~{?C?oN~~?OB?~~{@?KB~~oC?oF~o?OB?^}?@?K@~o?C?oF~??OB?^{?@?K@~o?C? +oF~??OB?^o???K@~????oF{???B?^o???K@~????oF{???B?^o???K@~????oF{???B~~v{??N~~^o??~~|~????????_@?D??@_????ONr~~oA@???h?As???B~B}?? +?MB~^~???Nr~~~c??Nw^}N{?_N{BoN{?oN{?_N{?wB{??Nw?{@{??No?}?{??No?}?{??N_?~?[??N??~?[??N??~_K??N??~_K??M??~_K??M??~oC?????~oC????? +~oC?????~oC?????~oC?????~oC?????~oC?????~oC?????~oC?????~oF?~~{^~oF?~~{^~_N?~~{^~_K?_N{?~_K?_N{?~?[?_N{?~?[?_N{?}?{?_N{?}?{?_N{? +{@{?_N{?wB{?_N{?oN{?oN{?_N{BwN{??Nw^}N{??Nr~~~w??MB~^~_???B~B}??????_@?D??@G????ONr~~oA@???h?A{?~~{^~N|~~~{^~N|~~~{^~N|~oF{??N{@ +oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oN~~~~{@oN~~~~{@ +oN~~~~{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@oF{??N{@ +oF{??N{@oF{??N{@~~{^~N|~~~{^~N|~~~{^~N|~????_F?A???W????ONr~~oA@???h?@[?~~|~~~|~~~|~_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{? +_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?_N{?~~|~~~|~~~|~?????GBW?o??Q????CB{ +~~{?_O??IO?a?N~~^o??~~|~??B~~v{??K@~????oF{???B?^o???K@~????oF{???B?^o???K@~????oF{???B?^o???K@~????oF{???B?^o???K@~????oF{???B? +^o???K@~????oF{???B?^o???K@~????oF{???B?^o???K@~?G?BoF{?_?N?^oA??{@~?G?BoF{?o?N?^oB??[@~?K?@oF{?w?F?^oB_?[@~?N?@oF{?{?F?^oBw?[@~ +?Nw@oF}?~oB~~~~~?N~~~~{?~~~~~o??????_@_E??@G????ONr~~oA@???h?Bg?~~{???B{~oN~~o???Nr~?~~~?O??~n{BoN{@??B}BoB?~oC??NwN?KB|?o??|o{? +oNsB??BvBoB?}O[?_NKN?KBx@oA?{o{?oNCN?KBpBoB?{O{?oNCN?KBpBoB?{O{?oMC^?MBoBoB?wP{?wN?N?KB@No@o{?{?oKC~?FBoBoB?_V{?MN?N?KA@^o?w{?{? +oGD~?BboBoB??^{?FN?N?K?@~o?[{?{?o?F}?OzoBoB??^w@Bn?N?K?@~?KF{?{?o?F{?o^oBoB??^oB@~?N?K?@}G[B{?{?o?Fw`oNoBoB??^BN?^?N?K?@{K{@{?{? +o?F_~oBoBoB??]B~?N?N?K?@wN{?{?{?o?F?^oBoBoB??[@~?N?N?K?@_B{?{?{?o?E?NoBoBoB??O?^?N?N?N|~?@~?~~{B~v{?F{B~~oN~^o?MoN~~?o???G?O@O?? +Q????CB{~~{?_O??IO?n?N~~??B~^~~~?OB~^~~~?oB~^{B~@oB??[B~@oB??[B~BoB??[B|FoB??[BxNoB??[Bx^oB??[Bp~oB??[B`~oB??[B@~oF??[A@~oN??[A@ +~o^??[?@~o~??[?@~_~??[?@~@~??[?@}B~??[?@{F~??[?@{N~??[?@wN~@?[?@oN~@?[?@_N~B?[?@?N~F?[?@?N~N?[?@?Nz^?[?@?Nr~?[?@?Nb~?[?@?NB~?[?@ +?MB~?[?@?MB~?[?@?KB~?[?@?GB~?[?@??B~?[?@??B}?[?@??B}?[?@??B{?[?@??Bw?^|~??Bo?^|~??B_?^|~??B??O???GB_@???W????CB{~~{?_O??IO?j???? +~o[???B_~r{???B{?~w@??B}?N_B?G?~?M?N?K?^?K?^?M?N?G?~?N?N?G@~?N_F??B~?N_F??B~?NoB??B}?^oB??B}?^wB??B}?~w@??B{?~w@??B{?~w@??B{?~{@ +??B{@~{@??B{@~{@??B{@~{@??B{@~{@??B{@~{@??B{@~{@??B{@~{@??B{@~{@??B{@~{@??B{@~w@??B{?~wB??B}?~wB??B}?~oB??B}?^oB??B}?^_F??B~?N_F +??B~?N?N?G@~?M?N?G?~?K?^?K?^?G?~?M?N??B~?N_F??B{?~w@??Bo~v{?????~o[??????G@g@???Q????CB{~~{?_O??IO?f?N~~~p{?~~~~~oB~~~~~?{@~?NoF +oF{?{?~?^oB_F{@~?M?~oF{?oB~?^oB?^{@~?K@~oF{?oF~?^oB?^{@~?K@~oF{?oF~?^oB?^{@~?K?~oF{?wB~?^oB_F{@~?N?NoF{?~?^?~~~~?[B~~v{?oF{???B? +^o???K@~????oF{???B?^o???K@~????oF{???B?^o???K@~????oF{???B?^o???K@~????oF{???B?^o???K@~????oF{???B~~p{??N~~Fo??~~{^????????_M?C +??@_????ONr~~oA@???t?Ak???B~@o???MB~No???NoB~_C??Nw?}?K?_B{?w?{?o@{?o@{?w?{?_B{?{?{?_F{?}?[??N{?}?[??N{?~?K??Nw@~?K??Nw@~_K??NwB +~_K??NwB~_C??NoB~_C??NoB~oC??NoF~oC??NoF~oC??NoF~oC??NoF~oC??NoF~oC??NoF~oC??NoF~oC??NoF~oC??NoF~oC??NoF~_C??NoB~_C??NoB~_K??NwB +~?K??Nw@~?K??Nw@}?[??N{?}?^{?^{?{?~}_v{?w?}N`r{?o@{Frp{?_B{B~_{??N{F~?[??NoN~_C??NB~^o????B~^o?E????}??E????}?CF????}KKF????{N{F +????{N{F????{N{B????{N{B????wN{B????wN{@????oN{@????oN{??????B{?????_M?C??@G????ONr~~oA@???h?B??~~~~@o??~~~~^o??~~~~~oC?oF{?~_[? +oF{?{?{?oF{?w@{?oF{?wB{?oF{?oB{?oF{?oF{?oF{?oF{?oF{?oF{?oF{?oF{?oF{?oF{?oF{?oF{?oF{?oB{?oF{?w@{?oF{?w@{?oF{?}?[?oF{?~_K?oN~~^o?? +oN~~^o??oF}?~oC?oF{?~oK?oF{?~_[?oF{?~?{?oF{?~?{?oF{?}?{?oF{?}?{?oF{?}?{?oF{?}?{?oF{?}?{?oF{?}?{?oF{?}?{?oF{?}?{?oF{?}?~_oF{?}@~_ +oF{?}@~ooF{?{B~o~~{^wF|{~~{^oN{~~~{^?Nw^????_H?B??@_????ONr~~oA@???h?@s??N{B@}B~fo^o~~{F}?N~@~o?~?\}?N?F^_B_@r{?o?[~?G?FNoA?@v{? +_?\~???F~o??@~{B??B~No??~~{B?Nz~NoB}~~{?~N~~?^r~~oNw~~{FwN~~@{B~~o{?~n{N?KB~Fo??~@{??N?^??B_Fo[?o@{F?K?^@oA?Fo{?_@{N?G?^FoB?Br{? +o?|~?M?N~oFo@~{N~?N~~~{@b~~~??^{Fo????A?_?O??B????@W~N~~?GC??A_?IoB}~~~~~oN}~~~~~oN}~~~~~oN}?^wB~?K}?NwBw?K]?NwBo?K]?NwBo?KM?NwB +_?KN?NwB_?[N?NwB_?[F?NwB??[F?NwB??[F?NwB??[F?NwB??[F?NwB??[??NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB +?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB?????NwB????~~~~@o??~~~~@o??~~~~ +@o????A?}?O??C_???@?~N~~?GC??Ac?J_B~~p}?~r~~~p}?~r~~~p}?~r~?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o?? +w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o??w?B?^o?? +w?B?^o??w?B?^o??w?B?^o??{?B?^o??{?A?~o??]?A?~o??]???~oC?N???~_K?N_??~?]?Fo??}B~oBo??{N~~@o??oN~~?O???No~??????A?w?O??@_???@?~N~~ +?GC??Ac?KOB~~p{?~N{@~~{^?Nr~?^~~FoB{~oF?~o??_?[?_N{??G?B?GB~?OB??o??~oC?o?C??N{B?K?@??B}?oB_????~_K?w????NwF?N????B{@o@o????~?{? +]????N_N?B_???BwFo?w????{@{?F????N?~?@o???B_No?M????wB{?B_???M@~??{???B?^o?F????oN}?@o???GB~_?K???A?~wCB?????N~@?O????B~ooC????? +~}K@?????Nzb??????B}|o??????~F[??????Np~??????BwNo??????}B{??????N?^??????BoFo??????{@{??????M?N??????B_Bo??????o?[??????K?F???? +??A??o????????A?i?W??@_???@?~N~~?GC??Ac?P?B~~p~}~p~_~o~~~p~}~p~_~o~~~p~}~p~_~o~?^oA?~o??M?B?^oA?~o??M?A?~oA?~oC?F?A?~o??~oC?F?A? +~oC?~oC?F_??~oC?~oK?B_??~oC?~oK?B_??~oK?~o[?Bo??~_M?~o[?@o??~_]?~o[?@o??~?^?~o}??o??~?^?}O}??o??~?~?}O~??o??}?~_{@~??O??}?~_{@~? +?O??}@~o{B~_?O??{@|owB~_????{B|owB~_????wB|wwF|o????wB{woF|o????wF{woF|w????oF{[_N{w????oF{[_N{w????_N{]_N{\????_N{M?N{\????_N{N +?N{\?????N{N?N{N?????N{F?NwN?????N{F?NwN?????NwB?NoF?????NwB?NoF?????NoB?NoB?????No@?N_B?????No@?N_B?????N_@?N_@?????N_??N?@???? +?N_??N?@?????F???M??????????_M?C???o????ONr~~oA@???h?A{?~n{~}N{N~n{~}N{N~n{~}N{N_N{@??w??N{B??{??NwF_?[??NwFo?K??NoNo?C??N_^w?C? +?N_^{????N?~[????M@~]????MB~N????KB~F_???GB~Bo???GB~Bo????B~@o????B}@o????B{Bo????B{Bo????BwFo????BwNo????BwNo????B{^o????B]~o?? +??BM~o????AN~oC??G?F~oK??K?B~o[??K?@~_[??M?@~?{??N??}@{??F_?}@{??B_?{B{??Bo?wF{??@w?wF{???{?oN{???[?_N{@~~{@~N|~~~{@~N|~~~{@~N|~ +????_@_B???o????cNv~~oA@???Z?@w?oN{B?Nb~FoB{oR{?~?L~?NoB~_B{?~w@~?N{?^oB~?Fw?^o@??B{?O??~?C?}N{@_N~~?^@~~?FwB~o@~?N{?^w@~?F~?No@ +~oB{?V{?~?D~?No@^oB}?^{?~oF}_^{B~mNzN~b~}R~?^}?~????_H?B???o????INr~~oA@???i?AC?~o[???B~@o???N{F????{?[???Bo@o???N?F????{?[???Bo +@o???N?F????{?[???Bo@o???N?F????{?[???Bo@o???N?F????{K^~??Bo|~{B?NB~{?{?{B~?FoBoFw?~?N?N?F{?{?[?~oBo@oB~?N?F?Nw?{?[?~_Fo@oB}?^?F +?Nw@{?[?~_Fo@oB}?^?F?Nw@{?[?~_Fo@oB}?^?F?Nw@{?[?~_Bo@oB~?N?F?N{?{?}?^oBoFw?~?N?~w@{?{NvoBoBo{N{B?FB?^o??????_M_A???o????cNv~~oA@ +???Z?@g??No^?GB~~oB_F~o@{?~}?^_B~_F{?~w@~_F}?^w@~_F}?^o?~o???N{???B~????~o???N{???B~????~o???N{???B~????~_C??Nw@??B}?W?B~?N??~_F +w?NoB~?@w@~{?GB~^o??~?{?????_H?B???o????INr~~oA@???i?AC???B{Fo???No^????~@{???B?Fo???K?^????o@{???B?Fo???K?^????o@{???B?Fo???K?^ +????o@{???B?Fo???K?^????o@{??NrNFoA?~~{^?M?^~`{?{?~wFoBw?~?^?NoBw@{?~_F?FoB}?[?^?Nw?o@{?~oB?FoB~?K?^?N{?o@{?~oB?FoB~?K?^?N{?o@{? +~oB?FoB~?K?^?N{?o@{?~_B?FoB}?[?^?Nw@o@{?~?F_FoBw?~?^?N?F}@{?w@~}~oE?~|~~?OB}p~{@????_??B???o????cNv~~oA@???Z?@k??NwN?KB~NoB_F~{? +{?^{?^_B}?F{?^_B~_Fo?~w@{?N}?N?F~oB_@~{?w?^~?M?F~~~~@~~~~o^~????~o???N{???B~????~_???Nw@??B}?O?F~?M?@~_Bo?^oB}?BwB~{?WB~~o??~@{? +????_N_@???o????INr~~oA@???i?@c??N?~??B}~o??~~o?_B~}?[?^~_F_F~w@w?~}?]?N~_F_B~o?w?{??M?N??B_Bo??w?{??M?N??B_Bo??~~{B?N~~?oB~~oK? +w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??w?{??M?N??B_Bo??~n{@?Nz~?OB}~oC? +????_B?B???o????cNv~~oA@???g?@w?_N~BF}B~~r~wp~{~}GK~N~o@^rz}?Nw}~_B}?Nw?~_B}?Nw?~_B}?Nw?~_B}?Nw?~_B}?No@^oBw_r{?}K[~?Nb~BoA{~oK? +F????Bo????{????~????Nr~NoB{~~{@}N~~?~b~~o^o~~{N~N~~B~w?{@{~?K?^NoA?Fp{??@{^???^NoA?Fr{?_@|}?K?N~?Fo@~_F~?N_~~{??N{^?????GAO?o?? +Q????Ab{~~{?_O??I_?`?N{F????~o[???B~@o???N?F????{?[???Bo@o???N?F????{?[???Bo@o???N?F????{?[???Bo@o???N?F????{?[???Bo@o???N?F~oC? +{K^~@oBo|~KN?NB~w?{?{B~?FoBoF{?^?N?^o@{?{?~?FoBoB{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo +@{?^?N?Fo@{?{?^?FoBo@{?^?N|~~N{@~v~{~oF~^~r~?O???GBG?O??Q????@B{~~{?_O??Io?N?N?@}?^{@~oF~?^{@~oF}?^o?O??????????????????~o^~@~{F +{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F~v~~^~|~????_E?B???o????INr~~oA@???i?@{?~o[??N{F??B~@o??{?[??N?F??Bo@o?? +{?[??N?F??Bo@o??{?[??N?F??Bo@o??{?[??N?F??Bo@o??{?^wN~?F}B~o@~_~{?^o?~?F}?Fo@~o?{?\}?N?FNoBo`o{?{M[F?NBv@oBo~o[?{N{N?NB~FoBo~p{? +{K{~?NBF^oBo_~{?{?N~?N?B~_Fo?~wB{?N{?~?B}?^o?~?N~r~{^~{~~F~~N~p~????_K_@??@G????INr~~oA@???i??{?~o^~@~{F{?^o@~?F{?^o@~?F{?^o@~?F +{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F{?^o@~?F~v~~^~|~????_D_D??@G????cNv~~oA@???Z?BS?~oN~?~_^?N~B~o~} +^oB~w}K^F~{?{NN?fo^}?N@zoN{B~_FoNwB~?^o@{@}?~oB{?^?N_F{?~?FoBw@~?No@{?]?NoB{?^?F_B{?~?Fo@w?~?No@{?]?NoB{?^?F_B{?~?Fo@w?~?No@{?]? +NoB{?^?F_B{?~?Fo@w?~?No@{?]?NoB{?^?F_B{?~?Fo@w?~?No@{?]?NoB{?^?F_B{?~?Fo@w?~?No@~v~w~{N~F~|~}N~B~p~~^~b~o~{^?????GAO?o??Q????HB| +~~{?_O??Eo?`?N{B~oC?~{N~@oB~{~KN?NBzw?{?{Bn?FoBoF{?^?N?^o@{?{?~?FoBoB{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo +@{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo@{?^?N|~~N{@~v~{~oF~^~r~?O????A?K?K??B????AO~^~~?GC??@k?FO??~?[?_N{~?K?N^_Bo?~_@}?Fo?~o@ +{?^{?M?F~_B_B~w?w?~}?M?N~oB_F~{?w@~~?M?^~oB_F~{?w@~~?M?^~oB_F~{?w@~}?M?N~_B_B~o@{?^{?^?F}?Fo?~?B}?F_B~w?_N{~??B{@o????A?c?K??B?? +??AO~^~~?GC??A[?GOB~p~{??N~v~oK?~~~oBoBoN}?^?N?^oB{?{?}?^oBo@oB~?N?F?N{?{?[?~oBo@oB}?^?F?Nw@{?[?~_Fo@oB}?^?F?Nw@{?[?~_Fo@oB}?^?F +?Nw@{?[?~oFo@oB~?N?F?N{?{?]?~oBoBw@~?N?^oB{?{B~_FoBo~~_N?NBv~oK?{K\~??Bo@o???N?F????{?[???Bo@o???N?F????{?[???Bo@o???N?F????{?[? +??B~^o???N|~????~v{?????????_I?A???o????cNv~~oA@???Z?@_?~}K^~~L~~vl}{B~~{@~~{?~~{?~~{?~~{?\}{?[?{?[?{?[?{?[?{?[?{?[?{?[?{?[?{?[? +{?[?{?[?{?[?{?[?{?[?{?[?~~{?~~{?~~{??????GAG?_??K????HB|~~{?_O??Eo?U?MB~Bnb~B~r_Bry?Bp{?Bo{?B`{?Bb{?Bf{??N{N?N~~?Nz~?~z~B~r~F~B~ +FwB~NoB_NoA?No[?N_{?N_{?N@{?N@{?Ff{?F~~@B~~~@{^~?O????A?a?G??@_???AG~N~~?GC??AW?DO??B_??B_??B_??B_??Bo??Bo??BoA?BoB?BoB?BoB_BoBw +~o~~~o~~~o~_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_BoB_Bpr_Bpr_Bpr_Bpr_Bpr_Bpr_Fpz?Fpz?No}?~o[?~?K???A?c?K??C_???AO~^~~ +?GC??@k?GOB~@~o^?N{F~@{?~o^{FoBo@{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^?FoBo@{?^?N?Fo@{?{?^? +FoBo@{?^?N?Fo@{?{?^_FoBo@}?^?N?F{@{?w?~wFoB_F~z~?[B~v~{@?NzF~oC?????_J?C???W????cNv~~oA@???Z?A{?~v~}N~@~~v~}N~@~~v~}N~@~{?^_@o?F +w?~?Bw?Bw?~?Bw?Bw@~_F{?Bo@~_F{?@o@~_F{?@_B|oN}??_B|oN}??_F|wN~???F{w^f???F{w^f???N{[~F_??Nw[~B_??Nw]~Bo??NoN}@s??NoN}@s??NoN}@{? +?N_F{?{??N_F{?{??N?Bw?[??N?Bw?[??N?Bw?[??M?@o?K??M?@o?K?????_E?B???W????cNv~~oA@???f?AC?~v~?~oF~^{B~?^|~oN{@w?{?B_B_Bo?M?M?^??{? +o@{?@oB?Nw?F?G?~_?K?_B}??o??^{?@??@~o?C??Nz_????~m????B}{O???Npp????~Fk???BwMo???N_z????{@{???BoFo???N?^????w?{???B_Bo???K?F???? +o?[???A??o???G?B????o?C???B??O??FM?@???}w????F~o????^v????@~]????F{{????N`w???B{@o???N?B?????????G?o?o??Q????FB{~~{?_O??Ho?Z??B{ +?OA?~o{?w?[~?N?B^_Bw?^o?}?F{?No?}?F{?N_@~_Bw?~w?}?N}?N_B~_Bw?~{?}?^~?N_F~oBw@~{?}?^~?N_F~oBw@~{?}?^~?N_F~oBw@~{?}?^~?N_F~oBw@~{? +}?^~?N_F~oBw@~w?}?N}?N_B~_Bw?~w?}?N{?N_@~?Bw?^_@~?Bw?^o?{?L}?M?FNoA?~o{??No@?????G?o?o??]????FB{~~{?_O??Ho?V??B_??Bo??B}?MB~?N~~ +?N~~?@~~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~??B~?Nz~ +^~z~^~z~^o????A?K?K??C_???@o~N~~?GC??A[?EoA?~oK?{N{^?Nb~^oB{w^{?^gB~?^{?~oN~?^wB~oF{@~{@~?^~?^oF~oFw@~w?~?\{?NoF??B{@o??~?[??NwB +??B}?o??~oC??N{??G@~??B?No??o@{??M?N??Bo@o??}?C??No?@o@}??[?Fo?F_?}??{?F_?N_?w?B{N~~?~b~~oN{~~{B~n~~?~~~~oF~~~{@~~~~?^~~~oC???A? +K?K??C_???@o~N~~?GC??A[?Eo??~oK?oN{^?NB~^oBwo~{?}GN~?NoF~oF{@~{@~?^}?^oF~_F{@~w@~?^~?^_B~oFo?^{??GB~??A?^o??oB{??N?^??B~@o??~p{? +?K@~????~o???Nw@??B}?o??~_K??NoF~?B{@~w@~?^~?~oF~oN{@~{B~?^~?~oF~oN}@~{B~_N~?^wB~_B~?^r@~oBw~v{?wN{^?GB~?o????A?c?K??@_????g~N~~ +?GC??Ag?G_??oN{@??B{~o[??N}BFoA?^w?^?K?~oB{?w@~?NoB_F{?~?M?NoB{?w?~?NoB_B{?~?M?N_@{?w?{???B_Bo???M?N????w?{???B~~~{~?N~~~r{?~~~~ +NoB_Bw?~?M?N_B{?w?}?NoB_Bw?~?M?N_B{?w?}?NoB_Bw?~?M?N_B{?w?}?NoB_Bw?~?M?N_B{?w?}?NoB_Bw?~?M?N_B{?w?}?NoB_Bw?~?M?N_B{?w?}?NoB_Bw?~ +?M?N_B{?w?}?NoB}~~b~?~z~}N{B~n~w~oK???A?I?G??@_???A?~n~~?GC???W?COB~~oF~~oF~~oF~~oF~~oF~~oC???A?E?K??B?????W~^~~?GC??AC?Fo???F|_ +?MB~[OBwork?^_?~?@{?Ng?N?Bz?@o?[w?K?FN?@?@ro?O?[}???BN_???p{???K^????Fw????}????N_???Bw????~????Fo???@{????^?G?BFoA??P{?_?C]?K?@ +F_B??Bw?w??{?F??^??w?N_?F_Bo_o{?oN{B??B~??????A?]?K??B?????o~^~~?GC??@{?H???~oF}BoB~?^wN?N?@{?C?{?L_??Bo?v???N_B[???u?[o??AW@r?? +?H_FM???f?{w???KBp_???oNE???B@{[???MF`o???W]B???@bwK???EN?w???[{B_???roE???B^?W???Lw@oA??v_F?G?@}?K?_?Fo?oA??^?B?K?@{?K?o?B_?OB_ +?M?@?N?@w?C?~_~??OB~B{????????A?Q?K??B?????o~^~~?GC??A??Fo??~~{@?N~~@oBo_?{?{??]?N??N_Bw?Bw?]??}?F_?N_@w?Bw?^??^?Bo?Fo?{_?{?NK?F +?Bzo?OB}~o??~b{??@w{???^]???Bv????|o???N]?A?Bv_?_?\w?G?F]?A?@vo?o?\{?K?B^EB??~p_w?N{[Nw~}Bb~N~?^??B_Bo???GA_?_??Q????@b|~~{?_O?? +GO?X??B_`oC?}L{@?Bz{???N}???@~??_?No?K?BW?B??U??o?D_?K?@W?B_?O??w?K??K?F??B?Fo??oN{@?GB~@o??~o[??NoN??B?Bo????{????N????B_????w? +B??M??o?B_?M??{?B_?F??y?@o?]_?K?N{?@?N~o??Bv^o??op{??????GAG?_??K????BB|~~{?_O??G??_?N{^wN~~F}B~{?E?F~????^o???B{?E??]?@_?F_?[?? +w?D_?M?@W?B_?R??w?Co?M?@E?B_?Oo?w?CK?M?B@_B??oW?o?KB?KAB?OB?_oC?oKK??KBB??B?Wo??oBK??K?v??A?Fo??_@{??G?N??A?@o??_?[??G?B??A??o?? +????_?_C???o????KNv~~oA@???_?As?~o~}F~o^~o~}F~o^}?F_?}?B{?B_?[??{?Bo?]??{?Bo?U??{?Bw?R??{?Bw?R??{?Bk?P_?{?Bm?P_?{?Be?Oo?{?Bb?Ow? +{?Bb?OW?{GB`?OK?{GB`?OK?{KB__oC?{KB?_oC?{EF?oo??wEF?oo??wBF?Wo??wBf?Wo??w@f?Ko??w?v?Mo??w?v?Eo??w?^?Bo??w?^?Bo??w?N?@o??w?N?@o?? +w?F??o??w?F??o??w?B??O??w?B??O??????_M?@???o????MNz~~oA@???S?@???B~?^}Bb{N@w{BroNA?]?@w?F_?^??{?Bo?N??{?B{?]{Bx{~B~o@o???G@??_?? +K????@b|~~{?_O??G??T????F_B?FoB?Fo??B_??B_??Bo??Bo??@o??@oA?@oA?@oA??oA^?{B~?}Bp?~Bo?Vb_?Rr_?Rr_?Pz_?@z_?@zo?@~o??|o??|o??|wF?|w +B?{{B?w}B`x~@nrr@~b_?o???G?O?_??K????@b|~~{?_O??IO?V????NoA?^oB?]oB?]OB_]OB_??B_??B_??B_??Bo??@o??@o??B~BwB~Bo@w???w???w???w???w +???{???[???[???[???[???[???]???M???M???M???M???N???F???F???F?G?F?G?B?GwB?Lw@?L{@?Nw??Fw???????A?_?C??@_????o~^~~?GC??@{?BO??B_?N +??{?Bo??????????????????{?Fw?xoBb_ME?wWBpoN??]?@w?B_?N??[?@wFB_KM?owBb_F}?No?O???G@??_??K????@b|~~{?_O??G??S?G?F?N?F?N?F?G?B?G?B +?K?B?K?B?K?@?K?@?M?@?M?@?M???MB?@~B_B~@oBf?WBv?KBv_EBv_B@~_@?N_@?NoN?Jo^?@o]?@o{?@w{B`w[@_w[@_w[@o}{?o~w?O^o?????GB??o??E????Bb} +~~{?_O??D??e?Nb_B~w?~NC^~oFKN|rB?Ww^~KCB`_~w_?NE@vr??{[BNK?@o?K{o?F??Pr??]?@Fm?@w?C]w?B_??z_?M??Bn??{??N[Bbo??|oEF??@v_W[??FM@pw +_?\wBfa?@~?FMG?Bw?K???A?a?G??@_????w~n~~?GC??@O?EOBww?[?~NcN?Ko~B_AMBpw?`_[[?KWFF_BF?ow?o?KM?K?@B_B_?O{?w?CF?M??@oB__?[?{GBB?^A? +oo@ooKK?[KB`?Fb?[o@w_B{?M??^?????G?g?_??yN~~~rb}~~{?_O??FO?V?MABB~BfFr@~NB_}M@_]]@_N]@oN]??F]??F]G?F^G?F^G?BNG?BNK?BFk?BFk?BB{AF +@}BF?}B~?]@{?M???N???N???F???F???F_??F_??N{B?N{B??????A?w?C??B?????w~n~~?GC??@s?C_??FoN?noN_{ONo{?Dww?C{w?C{w?C]w??]w??]w??^{??N +[??N[??N]??N]??NN??MN_?]NoB{NoBwF???F???F???F_??B_??B_??B_??BoBo^oBo^o??????_N_@???o????MNz~~oA@???S?@???B}?^{BbwNF_{MBo{?Bo?]?^ +wF~?^oB{?N?M{?|oBv?N]?{}~`~w@o???G@o?_??K????Bb}~~{?_O??D??S?MBB?~b~@rp}B_o}Bow[BoW]Bo[M@o?M???M???N???N???F???F?GwFBg{F@g{B@{{F +?}^F?~z~?Rp{?????G?O?_??E????Bb}~~{?_O??FO?T?N?@FN_BFhoFB_wFBgWFBgWBBw[B@{?B@{?@@{A@@}A@?}A??}A??}B??}B??]B_?]B_?]Bx?[B~?GBn??B_ +??Bo?@@o?Bpw?Bo{?Bo]?@oN?NoF?N_@??????A?[?G????????W~^~~?GC??Ac?EO???F{??KB~??B_wOC?[K?@?Bb??O?[o?C?Bk?@??Z??O?Fo?C??}?@_?N_?G?@ +[?A?wV{?oMC~?KB_NoB??F_?o?@o?M??{?@_?N??W?Bo?E??{?@o?N_?K?@w?B??]??o?F_?M??{?F_?N?@w?@w?}??N?Nq@@oBK~oK?BN{@??oO???M????@_????W? +???E????@o????K????B?????o???????GAG?_??E????Bb}~~{?_O??F_?X?G?BM?B??ro?o?K{?K?@F?B??Po?w?C]?M?@F_B_??w?w??M?N??BoBo??{?[??F?F?? +@o@w_K[@]GBF?Fb?oo@wwMK?~N@f?No~^oB[Brw?F????@w????]????B_????w????N????Bo????[????F????@o???????G?w?O??W????IB~~~{?_O??@O?D??w^ +Fp{M?????G?w?O??W????IB~~~{?_O??B_?E??w^Nr{}KB?oM@_[B_{E????_C_B??@_????oNv~~oA@???[?@g??????o??o?K??N?B??B{????No??o?{??N?B??Bw +????N_??_@{??M?F??Bw?O??^_???@{????^????^_???N_@??B_@o??_@{????}????}????N?B??B?Bo???B{???B{????{?K??K?B?????o???G?g?_??Q????Mb{ +~~{?_O??JO?O??B??K??w?B_?E??[?@o?B??M??w?@_?F??[??o?B_?M??W?@o?F??M??w?B_?F??[?@o?B_?M??W?@o?F??K??w?B_?E??[?@o?B??M??w?@_?F??[? +?o?B?????G@G?o??W????KB|~~{?_O??F??Y??K????N????No???No???Bo?o??o?{????~????^????N?@??B_@o??_@{???@}????}?C??M?B??B_?o??}?C??Fw? +?G?^??B_@o??{?C??Fo????~??B?Bo??{?K??No????~????Bo????K???????A?{?K??B????AG~~~~?GC???o?Bo??W?@w?Fz?^~`~~v~~^~`~oF{?^_@w?E????A? +{?K??D_A??AG~~~~?GC???o?Bo?B??{?NoB~?^{N~v~~^~{N~oC~??{??o????A?{?K??FB~~~|W~N~~?GC???{?B?@_?E??W?Bo?N??{?Bw?^_@}?F{?~oB~_^}@~{N +~o{???A?{?K??FB~~~}?~n~~?GC???{?B?B~B~{N~_^}@~oB~?Nw?^_@}?Fo?N??{?@_?E??W?@?No??Pc|MT??????????????????????????????????????????? +, +Nao??CXNRdO@????Fo???@O???@TKB?oKB?sKB?qSskoKC\FKB?oKTTYUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????ja_??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????s@{??E[\??@vG????????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??LoB???s@???a?O????D??@S@O??y?S??D_E??BO@_??H_[??HwF??Bu@o??[__??KWG???YAO??a_c??NgH??@MA_??b_g??LwI???qAo??`_k??MwJ??@AB??? +k_o???WL??BABO??U_w??NWM??AIBo??F`???JGO??@MCO??w`C??JOQ??@gCo??~@K??HOS???oDO??p@S??DoU??BsD_??Y`[??M?V???EE???J@_??CgW??@qE??? +c@_??A_X??A_EO??E@g??HWY???MEo??P`k??JwZ???uF???j`o??AW\??A]FO??F@w??JO]???oFo??q@{??E?_??A_G???wA???D_`??AkGO??FaG??DWa??AUG_?? +yaG??Dgb??AYGo??uaK??AWc??@eH???maO??Agd??AaHO??EaW??Boe??@YH_??{aW??GWf???YI???ja_??AWh??AyIO??cag???Wj??@yIo??uAk??B@AAThYUdhT +KB?oKB?sGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBOoKBHRQr?oPs[??????G?g?_??W????Bb}~~{?_O??D??S??A^?{B~?}Bp?~Bo?Vb_?Rr_?Rr_?Pz_?@z_?@zo?@~o +??|o??|o??|wB?|wB_{{@_w}@`x~@~rr?~b_?O???GBw?O??]????@b|~~{?_O??G??O?M?@~?F{?]??w?Bo?N??[?@o?F_?]??w?B_^~B~{]FpoNN?]{@zoBn?M{?zw +B~_F]?\w@roFN?[]B_}M@~oB}?????A?}?C??E?????w~n~~?GC??@O?CO??^_B?~oB_ooFow?Dww?C{w?C{O??]???]???]???^???N???N???N???N???Mo??]w??{ +^?B{NoBo@o????A?I?G??E?????W~^~~?GC??A??DO???@w?o@{?o@{???w???w???{???{???[???[?_?[?_?[?_?K?foN?~oN_{ONo{?Dww?C{w?C{w?C]w??]w??] +{??^{??N[??N[??N]?oN]?wNN?WMN_W]^o^{{oNww?C???A?}?C??E?????w~n~~?GC??@O?CO??^oB?~oB_woFoo?Dw_?C{o?C}w??]}?B}NoB}Bo?^???N???N???N +???M???Mo??]w??{^?BwNoBo@o????A?S?C??LB~~~{W~^~~?GC??Ac?D_???@{?_B{?oBs?wBo?wBo?w???w???[???[???[???[???[?A?~o]?~o[?M???M???M??? +N???F???F???F???F???F_??B_??B_??B_??B_??Bo??@o??@o??@o??@oA?@oA??oA??oA??oBM?OB]?OB~??B}???}????????_N_@???o????MNz~~oA@???\?@O? +?FoM?N{N_K[NoKKFwGCF{G?F{G?F]G?B]G?B]K?B^K?BNK?@NK?@NM?@NM?@NN??MN_?]No?{N{?wFK??F???F_??F_??B_?Bbo?F`w?Fo{?~_[?~?C??????G?g?_?? +Q????@b|~~{?_O??G??T?G?F?N?F?N?F?G?B?G?B?K?B?K?B?K?@?K?@?M?@?M?@?M???MB{?NB~?^BF?^B@?~A??~b??vb??Vb??Rb??Rr_?Rr_?@r_?@ro?@xoF@xo +B?xwB?wwB_|w@o~o?o^_?O???G@O?O??Q????BB|~~{?_O??Fo?K???N??{?Bo?F??????????????????Bo?N_@v?MM?{WBp_FF?]?@w?Bo?N??[?@w?B_MM?W{@`oF +n?Nw?^??????_N_@??@G????ENv~~oA@???_?@K?_?[?{?[?{?[?_?K?_?K?o?K?o?K?o?C?o?C?w?C?w?C?w???wK?B{N?F{B_E[HoF[GwF]G[F}GKB}?C?}?C?~?[? +n?{?F?{?F@w?F`wFF_wBB_wBBgwBB|w@B~o@@~_?????_A?@??@_????ENv~~oA@???_??g?o?Nw?~_Bo?F??]?@w?F_?M??{?Bo?F??[?@w?F_?M??w?Bo?N??[?@o? +F_?]??w?B_AN?[{@poBF?M{?^_?{?????G@w?o??Q????Bb}~~{?_O??D??b?Fbo@r{?~NbN^oBmF}xp?KWN^n??p_[{w?Bf?rzo?MK@Ff??w?C][?B_??xo?N??Bv_? +{??NM?@o??[w?F??@ro?]G?FF?\w_?[[?ra??pwBMG?Bb_K{o?N]?Rr??~o?FK?@]?????A?[?G??C_????w~n~~?GC??@O?E?@w{?^{}?~mFozEBpzE@prf?pzb?Oz_ +?Oz_??zo??~o??\o??\o_?\w_MLw_EKwoEKwoFC{oBk{_@{[??{???A?I?G??E?????w~n~~?GC??@O?Co??^_B?~oF_woFoo?Lw_?K{_?[{_?[]_?[]_?[]o?[^o?[N +o?KNo?KNw?CNw?CM{??]]??{N_B{FoBo?o????A?I?G????????w~n~~?GC??@s?DoB?_o~_xp|o^rooNb_oFf_wBv_WBv_?@v_?@va?@vq?@vq??rq??rr??pz??pz? +?o~?`o^_poN_~oF_^?B_??Bo??Bo??@o??@o??@w??@w??B~?oB~?o??????_N_@??@_????MNz~~oA@???\?@G??@{BoJ{BwNCB{N?@]M?@NM?@NM?@Fm??Fm??Fm?? +F~??Bv??Bv??Bv_?Bv_?Bro?Bbw?Fb{?~B{?}@o??@o??@o??@w???w???w???w???{?{F{?{F{??????GBG?O??Q????Bb}~~{?_O??D??Q?Fbw?Nr{?]yN?{ZF?{ZB +?}^@?}N@?]???M???N???N???F???F???F_??F_??B_??B_??Bo??Bo??@o??????GBG?O??Q????Bb}~~{?_O??D??O?G?~oF~_w^Bo[N@o{F_?{?FoF~?~oB{?^_@w +Bf_NM?{wBroNFnwN}?K???A?Y?C??E????@w~^~~?GC??@o?B?A??{?Bo?N??[?@w?F_?]??~o~~B~??[?@o?F_?]??w?B_?N??{?@o?F??]B`wEB_[M?xwB~?Fw???? +?G@??_??Q????Bb}~~{?_O??D??U?N??Bn_@B|oBBwwB@{WB@{Y@@{]@@}A@?}A??}B??~B??vB??VB??VB_KVB_MVBoEFBoENB{F]B^B{AF@o???GBw?O??Q????Bb} +~~{?_O??D??R?NA??~b@@|rB@wzB@{YB@{W@@{[@?}?@?}???}A??~A??VA??VA??VB??FB??FB_?F@o?N?w?M?^?K?N?????GBO?_??Q????Bb}~~{?_O??D??[?N?? +B_^w?W{Nv?MFBwwB`o~E?o[NpgCFBk]@?oZ__OKEwG?B@mB??o^oo?KB[K?@?vB??OLooGCB[MA@?VB_oODo{KC?{Nbr?MA~^oA?Bp{?????_N_@??@G????MNz~~oA@ +???S?@K?wMK@}N{BNB{FBhwFBgwF@g{F@w[B??[???[?_?[?_?[?_?K?_?K?r_KFroKBrwCBzwK@|}K@~~{?Nbw?????_@?A??@G????MNz~~oA@???\?@O?{??M}?CN +v?KFb_KFp_KFpgCFpwCBwGCBwG?BwK?B{K?@[K?@[K?@[M?@[M??[N??[N??{No?wF{?oF[??F???F_?AB_?Fbo?F`o?F_w?b_[?~_K?}????????GBG?O??K????Bb} +~~{?_O??D??R?G?N@k?^@}B~?vBw?RB???B_??@o???w???[???N?G?F?K?@?M???FA??ra??Rb??^r`?Nz~?G\~??K^?????G@o?_??sN~~~pb|~~{?_O??IO?\???? +~?[??N{^?G?FF?B??Pw?o?C]?M??B_B_????w????N????@o????[????F????B~~o[?~~{F?Ba??o?w_?K?MG?B?Bb??o?wo?C?NK?@?@r??O?[w?C?FM???@r_???] +w???Bn?W??xoF??M[?o?Bf?K??~oB_?Fw?[?@{?B??[??G?F??A??o??_?K??GwB??B]?O??~oC??Nw???@}????????_B?B???o????ENv~~oA@???_?@s???B_???? +w????N????Bo????}????No???B{????|_???NW???Br????{o??_NC??KBp??B?{???WN???EBo???o{?C?KM?@?@b_?O?Ww?C?~N{@?Nz~?O?Ew?C??}?@??N_?W?@ +w?E??]?@o?B_?]??w?Fw?]?B~_N}F~{B~`{???A?E?K??H?????W~^~~?GC??AC?Fo??_F|_?MB~[OBwoRK?^_?~?@{?Ng?N?Bz??o?[w?K?FN?@?@ro???[]???BF_? +??o{???KN????Bw????]????F_???@w????^????Bo????{????N?G?BBoA??O{?_?CM?K?@F_B??@w?w??{?F??^??w?N_?F_Bo_o{?wN{B??@~??????A?K?K??C_? +???o~^~~?GC??@{?FoA?~~{@_N~~@o@w??{?]??]?F_?N?@{?B_?N?@w?Bo?[??{?F??N_@o?@w?[??]?F??F_@o?@{?]??N?F_?Bo@w??{?]G?N?Bq?@o?{_?[?NG?F +?@z?@o?Mo?K?B{?B??^??w?Bw?N??}?@w?F_?V_?{?C}?N~~BoB~~oK?????_M_A??@G????KNv~~oA@???^?@{?_N~~^wB~~v{?]??}?F_?M?@w?B_?^??w?Bo?K??{ +?B_?N??W?BwoE??]K@_?Fb???@ww???^F???~p{??N{^???NF_A?Boo?_?[K?G?FB?q?@ooMo?[?@k?B??^??o?Bo?M??}?B_?F_?[?@w?Fo?^?@~?B~~~{?~~|~???? +?GBO?_??Q????BB|~~{?_O??Fo?]?GB~~r}?~~{~?F_?Fo@w?@o?]??[?Fo?E??{?@_?N??[?Bo?B??}K?o?Fb?K?@wo???]M???Fpo??N{^??B~Fo??Bpw?_?{K?G?F +B?A?@oo?_?[K?K?F??B??o??o?K??K?B??B_?o??w?C??M?@??Bo?O??~r{??N{~??????A?Q?K??H?????W~^~~?GC??AC?F_??_B{o?NB~M?BwwPc?Ng?^?@{?Fw?F +?@~??o?Mw?C?Bn?@??zo???M]???@f_???W{???EN????Bw????]????F_???@w????^????BoB~Bo{?~o{N?N?@BoBo?O{?{??M?N??F_Bw?@w?}??{?F_?^?@{?N_? +^_Bo_r[?wN{b?G@~??????A?m?G??C_????o~^~~?GC??@{?EOA?~p{?_N{^??Bw????]????F_???@{????N????Bo????{????N_???@w????]????F_???@{????N +????Bo????{??G?N??A?@o??_?]??W?Fo?F?@{??o?N??K?Bw?B??u??w?Lo?M?@]?B_?Ro?{?C~?N~~NoB~~p{?????_L_B??@G????KNv~~oA@???^?Ag?_N{??N{B +_N{??N{B?N_?_B{??N_?_@{??N_?o@{??No?o@{??Mo?W?{??Mo?K?{??Mo?k?{??Mw?e?{??KW@e?[??KW@b?[??KW@r?[??K[@p_[??KK@ooK??KK@ooK??KM@wOK? +_KM@wOK?_KF@w?C?_KF@w?C?_KD`{?C?oKCp{?C?oK?p{???oK?X{???oG?Z}???wG?N}???WG?N]???[G?F]???}G?B^???~w^B~o[?~w^@~o[?????_B?B??@G???? +KNv~~oA@???^?AK?_N{?~o]?~oB~@oBw?N_??N_@K???}?Cw??B{?R_??MoBE???r?KW??BK?po??KwFF???`_[K??AE@oo??GWNB_??@o{M???BBoW???K^@_???pwF +?G?BF_[?_?C]?oA??RwB?G?@n?K?o?E{?oB??No@?K??}?C?o?Bw?OB_?N_@?E??{???[?Bo??Bw?N???N{Fw???~o\_????????_M_A??@G????KNv~~oA@???^?@w? +_N~~?WB~~o[?]??N?F_?F_@{?@o?^??{?Bo?N??{?Bo?N_?{?Bw?F_?]?@w?F_?M?@{?@o?^_?[?B}?@?N~~?GB~FoA?Bo??_?[??G?F??B?@o??o?[??K?B??B??o?? +w?K??M?B??B_?O??w?C??N?@??B~Fo??~p{??????G?W?o??Q????BB|~~{?_O??G??\?GB~~oA?~~{B?Fa?@o@w??{?]??]?Fo?F_?{?@w?N??]?Bo?F_?}??{?F_?N +?@y?@o?]o?K?F~???N|~??B~No??Bvo?_?|w?G?F}?A?@~??_?^w?K?F]?B??v_?o?Lw?K?B^?B_?vo?w?C{EM?@N@bo?Ro[~p|wBn{^}?[??M?B????_F?A??@G???? +ENv~~oA@???`?@g??M?N?oBwnoK?Nno@??~o?O?Fw?E??}?@o?N??K?@o?B??[??o?F??K?@??B??o??o?[??K?~??B?~oC?_N{F??B~Bo??}@{??K?^????Fo???@w? +???[????F??K?@o?B??[??w?F_?M??w?B_?N?@y?@o?~o?K?~}?@?NN~??BBNo??????_@_B??B?????KNv~~oA@???^?@o?}N~~B~b~~o~wwGCFNM?@@pr_?OWK{?CE +Bn??@_Zo??[E{??B@~_??oLw??K?]????F_???@{????N????Bo????{????N_???@w????]????F_???@{????N????Bo????{??G?N??A?@o??_?[??K?F??B~~o?? +~~{??????G?o?o??u????BB|~~{?_O??G??\?Nw~~@~}N~o^w?N_?}?@o?Bo?]??{?D_?N??W?Bo?E??}?@o?N_?K?@w?B??]??o?Fo?M?@{?@_?N??W?Bo?E??}?@o? +N_?K?@w?B??]??o?F_?M?@{?@_?N??W?Bo?F??{??o?N_?K?B{?@??z_???]{???NBo??N_^??B_@o??????_B?B??BW????KNv~~oA@???_?@w?~o~oN~{N{B~w?[?F +{?A??^??o?Fo?K??{?@_?N??[?Bo?B??{??W?N?@E?B_?Oo?w?CK?M?@@_B_?OK?w?CB?MA@?OB__OC?wKC??MB`??B_WO??wBC??M?p??B_Eo??o@k??K?N??B?Bo?? +o?[??K?B??B??o??o?C??K?@??????A?I?G??E????@G~^~~?GC??@{?DO??{?C?~?[?Bo}??oz??Oz??Pr_?@zo?@zo?@xo?@xw?@xw??w{??{{??{{??{{??{]_?[] +_?[]_?[]_?KMo?KNo?KNo?CNw?CNw??M{??M[??MM??[F_BwBoBo?o??????_A_A??@_????QNv~~oA@???^?@S??N_@?NwF_?{No?KMo?C[w?W[W?w[W?w]W?WMw?[M +w?KN???F?G?B?M?@?N{??F{??N???M?@?M?@?M?@?M?@BM?@Fm?@Fn?@B~??@~??@v_?@bo?B`{?~?{?}?C??????G@O?O??u????@b|~~{?_O??B_?G?Fbw~NrwwE@_ +[B_[F_{B????_D?@??@G????gN~~~oA@???M??W?MBo{NBooM@_[B?wF?oK???A?S?C??F_???A_~~~~?GC???S?@O?MFp{NBo????A?I?G??A?@???W~^~~?GC???_? +AoB??M??{?Fw?XoBBo[F@oGA????_G?@??@G????CN~~~oA@???B??o?~o~~B~{F????_L?A???W????ENv~~oA@???_?@k??N_???Bw????~?C??Lo@??B[?O??v_K? +?KwB??AM?o??bo[??G[F???F@oA?@o{?_?[N?G?BBoB??pw?o?K]?K?@F_B_?Ro?w?C{?M??N?Bo~v{?{N|~?NB~^o@w?N??]?Bo?Bo?{?C{?M?@N?B_?Pw?w?K]?K?B +F_B??o{?o?[???A?E?K??F_????W~^~~?GC??A??E?B~NoB~~oF~~oKNw?[N_?{N?@{N?@wN?BoN?BoN?F_N?F_N?F?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N?N +?F_N?F_N?F_N?BoN?BwN?@{N_?{Nw?^~~oN~~oF~No????A?[?G??F_????W~^~~?GC??A??C_B~~oN~~oN~~oKN???N???N???N???N???N???N???N???N???N???N +??B~~oB~~oB~~o?N???N???N???N???N???N???N???N???N???N???N???N???N???N???N??????A?s?G??C_?????~^~~?GC??AG?Do??~?[?~r~?~v~_Bvzo?vBw +?UBw??@{???{???}???]???]???^???N???N???N???N???N???N???NoF{NoF{^oF{]?F_]?F_}?F_{?F`{?Fbw?Fbw?Vbo?vb_Bvr?~v{?~r{?~?[???A???K??F_? +???W~^~~?GC??A??DO?N?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@z~~p~~~p~~~p{N?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN?@wN +?@wN?@wN?@wN?@wN?@w???A?M?C??E?????W~^~~?GC??A??@??NBo{NBo{NBo{NBo{NBo{NBo{NBo{NBo{NBo{NBo{NBo???G???o??]????@b|~~{?_O??G??W??{? +^?{?N_{?Fo}?Bo~?@o~_?o~_?O~o??~w??|{??{}??{^?G{N?K{^?K{^?M{~?N{|?N|w?F~w?B~o?@~_?O~_?O~??o~?@o}?@o{?Bo{?Fo{?F_{?N?{?N?{?]?{?}??? +?G@W?_??]????@b|~~{?_O??G??P??{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{???{? +??{???{???{???{??N~~?^~~?^~~?O???G???o??]????@b|~~{?_O??G??T?B{?Ff{?Ff{?Fe{?Fm{?Fm{?Fk{@Fk{@Fk{@Fk{BFg{BFg{FFg{FF_{FF_{NF_{MF_{M +F_{]F_{[F_{{F_{{F_{wF_|wF_|oF_|oF_|oF_~_F_~_F_~?F_~?Fo~?Fo}?Fo???GAw?_??]????@b|~~{?_O??G??S?N{^?N~~?N~~?O~o?o~?@o}?@o{?Bo{?Bo{? +Bo{?Bo{?Bo{?Bo{?Bo}?@o~?@o~o?~~~?^~~?N{^??{???{???{???{???{???{???{???{???{???{???{???{???{??????GAw?_??]????@b|~~{?_O??G??U?N{^ +?N~~?N~~?O~_?o~?@o}?@o{?Bo{?Bo{?Bo{?Bo{?Bo}?@o~?@o~_?~~~?^~~?N{^??{{??|w??|w??~o??~o??~_?O~_?O~??o}??o}?@o{?Bo{?Bo{?F_{?F_{?N??? +?G@W?_??K?????B|~~{?_O??G_?R?G@~?MB~?^b~?~b_?vq??ro??rw??@w??@w??@w??@w??Bw??Fo??No??N_F?N_~?NB~?KB~?OB{?OBo?oB_?oB?@oA?@oA?@oA? +@oA?@oA?@oN?@o^??o~_?v~o?^z~?N`~?M?^?????GBg?_??K????@b|~~{?_O??G??Y?N~~~oN~~~{B~~~~?o@w????]????F_???@w????]????F_???@w????]??? +?F_???@w????]????F_???@w????]????F_???@w????]????F_???@w????]????F_???@w????]????F_???@w????]????F_???@w????]???????_M_A??@w???? +ENv~~oA@???`?@O?Bo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NBo?NFg?FFg?FNK?B +NK?B}N?@{N{?wF{?_@{??????GBO?_??E????@b|~~{?_O??G??Z??{?_?[N?G?FF_B??pw?o?K]?K?BN?B_?Ro?w?C{?M?@]?Bo?F_?{?Bw?N??{?@w?N??]?B_?R_? +w?C{?M?@N?B??po?o?K]?K?BF_A?@ow?_?[N?G?FBo??Bo[??G{F??AN@o??b_K??LwB??B[?O??v?C??No@??Bw????}???????_L?A???W????ENv~~oA@???_?@k? +F_B_?Rw?{?@{?N_?]?@w?N??N?Bo?Rw?w?C]?K?BBoB?`o{?_G{F??BN?o??~_K??Nw@??B{????}????F_???B{????~_C??NwB??BN?oA?bo[?_?[N?K?BFoB_?pw? +w?C{?N??^?Bw?F_?]?Bo?Bo?{?C}?M?BF_B??o{?o?[???A?C?G??B?????w~n~~?GC??@O?C?BoB~o~~f{]^?Zw?N??{?Bo?Nzo~~r~^n?^{?~oB~?^}B~{~n~}~~rp +????_M?@???o????MNz~~oA@???S?@??o@~oN~`~^F_}W@w?Fo?N??{?Bo?N??{?Bo?^?@w?Nk@{{Nb~{F~?Fo???G@??_??K????@b|~~{?_O??G??P??B_?OB_?OB_ +?OB_?OB_?OB_?OB_?OB_?OB_?OB_?OB_?OB_?]Bf?^b~?^r~?^rw?Rzo?Pz_?P~_?O~_?O~_?O~_?O~_?O~_?O~_?P~_?Pzo?Rzo?Vr{?^r~?^bn?]Bb?O???GB_?O?? +E????Bb}~~{?_O??D??P?K?N?N?~?N`~?Frw?Br_?@z_??z??^~~?^~~?^~~?O{???{???{???w??@w??Br??Fro?Nb~?M@~?G?^?????G?g?_??E????Bb}~~{?_O?? +F_?S?MANB~B~B~b~Bvp{?Bzw?@zo?@zo?@zo?@zo?@zo?Bzw?Fp{?No~?No^?MoN??o??@o??Np~?Nr~?~r~@~z~@p~?Bo}?Bo{?Bo{?Bp}?Bvz_@~r~?~b~?[?~???? +?G?G?O??Q????@b|~~{?_O??G??C??{NBo{???????????{NBo{NBo{NBo{NBo{NBo{NBo{N????_C?A??@G????MNz~~oA@???S?@??bp~n^~|~^~o~}@~oB~?N{?~o +B~?N{?~oB~?N{?~oB~?N{?~oB~?N{????G?g?_??E????Bb}~~{?_O??D??S?G?^?M@~?Nb~?^ro?rr??py?@py?@o{?Bo{?Bo{?Bo{?Bo{?Bo{?Bpy?@py?@rr??~ro +?~b~?]@~?G?^?????G@??_??Q????Bb}~~{?_O??FO?P?G{^?M{~?N|~?F~{?@~w??~o??~o?O~_?O~_?O~_?O~_?O~_?O~_?O~o?O~o?@~w?B|}?N|~?M{~?K{N??{? +??{???{???{???{???{???{???{???{???????A?_?C??C_????w~n~~?GC??@O?AoAN@{{Fzo^~?V{?No?^?@{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?????_H_@ +???W????MNz~~oA@???S??w?{?~{N~o~Nb_]?@w?N_@}?NoF~?~wF{?~?Bw?N??{?ro^Nn{^~_~w@o???GA??O??E????Ib|~~{?_O??E_?K?F_?]?@w?F_?]?@w?N{N +~o~~Bv_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?}?ZwB~?N{?K???A?O?G??C_????w~n~~?GC??@O?C??N{?~oB~?N{?~oB~?N{?~oB~?N{?~oB~?N{?~oB~?N}@~} +~~~}|~rp????_N_@???W????MNz~~oA@???S?@G?B{?BB{?BFk?@Fm?@Fm?@NN??NN??NN??]F??]F_?]F_?{B_?{Bo?{Bo?w@o?w@o?w@s?o?{?o?{?_?[?????_N_@ +???W????MNz~~oA@???\?@G?B{?BB{?BFm?@Fm?@Nm?@NN??NN??]N??]F_?[F_?{B_?{B_?wBo?w@o?o@s?o@s?o?s?_?{?_?{???[???[?_?K?_?K?_?K?o?C?w?C? +~_??^_??N_???????G?g?_??K????BB|~~{?_O??G??Q?K?N?M?^?N`~?F`w?Bro?@r_?@z_?Pz_?Oz??O~??o~??o~??o~??o~??o~??o~??o~??o~??o~??o~??o~? +?o~??o~??pz_?Pz_?Pz_?Pr_?Bro?F`w?N`~?N?~?K?N?????G?g?_??K????BB|~~{?_O??G??Q?M?N?N_~?Np~?Fzw?@zo?Oz_?OR_?OB_?OB_?OB_?OBo??Bw??@{ +?K?~?K?^?K?~??Bw??Bo?OB_?OB_?oB??oB??oB??oB??oF??oN_?o^_?O~o?Rzw?Np~?N_~?M?N?????G?w?O??Q????Jb~~~{?_O??A_?D?@w]F`w[B?oM@_[???A? +Y?C??@_???Bw~n~~?GC???K?A_B~?~{B~oK???A?]?K??C_????W~^~~?GC??A??Fo??o?C??K?@??B??O??w?K??M?B??Bo@o??k?[??J?F??AwBo??E?{??@_N???K +F_??B@w???o]???EN???@bo???W{???B]????v_???Lw?GB~~oA?~~{?o?Fo?[??w?F??M?@W?B??u??o?L_?K?B[?A?@~_?o?^~?~`~~oNw^o???G@G?o??Q????BB| +~~{?_O??Fo?[?N~~FoB~~v{?w?Fw?M?@w?F_?]?Bw?F?@}?@o?^_?[?Fw?F?@}?@o?^_?[?Bw?F_?}?@{?F_?^o?wN{~?MB~~oB_?^?@w?F_?}?@o?^_?W?Fw?E?B}?@ +_?~_?W?Nw?E?B}?@_?~_?[?Fw?F?@}?@w?N_?^_@~~~~?N~~No????A???K??C_????o~^~~?GC??@{?E_B~~~{@~~~~?]?@{?F_?[?@w?E??]?@_?F_?W?Bw?C??}?@ +??N_?OKBw?CB?}?@?oB_?OK?wGCB?MB~?oB_~oK?wGCB?M?@?oB_?OK?w?CB?M?@?oB_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??N|~??B~^o??????_F_B +??@G????KNv~~oA@???^?@{?~r~}^~{~~f~_?[?Bw?F??}?@o?N_?[?Bw?F??}?@o?N_?[?Bw?F??}?@o?N_?[?Bw?F??}?@o?N_~~{BwN~~?}?@o?N_?[?Bw?F??}?@ +o?N_?[?Bw?F??}?@o?N_?[?Bw?F??}?@o?N_?[?Bw?F??}?@o?N~N~x~~r~}^o???G@o?_??Q????BB|~~{?_O??G??S?KB~B{B~BoBo??Bo??Bo??Bo??Bo??Bo??Bo +??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??zo?@~o?@~o?@~o?@|w??x{?@w}?No^?N?F?????GAO?o??Q????BB|~~{?_O??Fo?_?N{~ +wN~~N}B~w?F?F}?@_?^_?[?@w?F_?M?@[?B_?R_?w?C[?M?@B_B_?O[?wGCB?MB@?OB_wOK?wNCF?MAx@oB_fO{?w?{^?M?FF_B_?rw?w?D{?M?@]?B_?^_?w?Fo?]?@ +w?F_?]?Bw?F?@}?@o?^_?[?N~r~o~~{~{N{???A?k?O??B?????o~^~~?GC??A??J_B~B~o~{B~~B~o~{B~w?M?Bo?^o?K?B_?No?K?B??N_?]?F_?F_?]?F_?F_?]?F +_?F??r?No?B??r?No?B??r?No?A?@p_]W?A?@p_]W?A?@p_]W?A?Bpo}[???Boo{K???Boo{K???Box{M???F_XwE???F_XwE???F_XwE???N?NoB???N?NoB???N?No +B???}?F_@o??}?F_@o??}?F_@o??{?B??o??{?B??o??{?B??o??{?B??o??W?A??O????A?w?C??E????Bg~N~~?GC??Aw?B???B_?F_?N??[?@w?@o?F??M??w?@o? +F??M??w?B_?M??W?@o?F??[?@o?F??[?@o?F??[?@o?F??[?@_?M??w?B_?M?@o?F??w?B_?[?@o?M??o?F??W?B??[?B_???GB_?O??W????Mb{~~{?_O??J_?K??[? +B_?[?B_?M?@o?M??w?B??[?@_?M??o?F??[?@o?F??W?B_?M??w?B_?M??w?B_?M??w?B_?M??w?@_?F??[?@o?F_?M??{?@o?F_?M??[??w?B_?F??M??[?????_I?A +???W????{Nv~~oA@???V?@_??@_??Bo??Bo??Bo??FW??FW??FW??MK??MK??MK?_KC@_KC@oGCBoG?BoN{BwN{FW??FW??FK??MK??M]??]~wB~~wB~?????G@o?_?? +Q????NB|~~{?_O??Do?R?N{~?N~~?Bb_?Rb??Rb??rb??rb??rb??rb_?Rbo?^`~?Nb~?Bb_?Rb??ra?@ra?@ra?@ra?@ra?@rb??rb_?~~~?^|~???}J???Pc|MT??? +, +[as??CXNRdO@????Fo???@O???@TKB?oKB?sKB?qSskoKC\FKB?oKS|YUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????wac??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????~A???HO^??BgGO???????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??MWB??@C@???g_O??M_C???m@O??g_S????E??@]@_??n?W???GF??@_@o??t?[??@GH??@[A_??A?k??@WK??@SBO??e?w??LoN??@oC???S@C??MOP??AQC_?? +h@K??@oS??AoD???H`S??HoT???wD_??z@W??KOV??A[E???F@c??HoX???[E_??_`g???GZ??AAEo???`o??Bg[??@qF???s`o??@w\??@iFO??o`s???g]??@gF_?? +g@w??MW]???mFo??\`{??J?^??B{Fo??Ia???EO_??AMG???nA???Mg_???QGO??QaC??GG`??AyGO??{aC??Aga??@aG_??eaG??LOa???KGo??PAK??E?b??BQGo?? +PAO??JWc???gHO??eaS???oe??@}H_??{AW??EGf??BSHo??Pa_??J_g???OIO??^Ac??Mwh??@_I_??^ag??Ngi??@]Io??oak??AWk??AIJ???@as??B?{AThYUdhT +KB?oKB?sGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBOoKBHRQr?oPs[??????GAG?_??K????NB|~~{?_O??Do?T??@~EKB~F^ABF~_?Fvo?Fbo?F@w?F@w?E?{?E?{???{? +??{???{???{???{?E@w?E@w?EBo?FFo?Bn_?B~AB@{B~?O@~??????A?U?G??C_???Bo~^~~?GC??@[?CoB~~oF~~oCww?Cw_?Cw_?Cw_?KwB?KwB?KwB?KwB_BwBoBw +Bo?wB_?wB?WwB?WwB?Ww??Ww??[w??Kw_?Kwo?N~~oN~~oK?????_J_A???o????{Nv~~oA@???V?@_??F{WoN{\{GK^}??^^??]N??[F_?[F_?WBo?WBo??Bo??Bo?? +Bo??B}B~B}B~F_?[F_?[N??[^??[}??[{?K^oN{^?N{X?????G@O?O??K????NB|~~{?_O??Do?H?N{@~oCw?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_? +M??w?N{@~oC???A?I?G??C_???Bo~^~~?GC??@[?C?B~?~{BM??w?B_?M??w?B_?M??w?B_?M??w?Bb?MK?woBb?MM?wWB`oMFb~^~|~????_B?B??@G????{Nv~~oA@ +???V?@g?NoBw?r{?}?Lw?Fo?]?@{?F_?^?BW?FW?u?@u?L_?\_AW?VK?e?Dr?H_@[o?W_vC?EGLp?@aB[O?Wpf??EKXo?@bE[??WZF??EEpo?@`k[??{MF??~rb}?~{w +~_K???A?g?G??C_???Bo~^~~?GC??@[?D??~{?|~{?|wo?Nw_?Fw_?Fw_OFW_OEW_oEW_oCW`oCWboCWb_CWf_CWf?CWn?CWm?CW}?CW{?CWw?CWw?C{o?F~o?F~_?C? +????_J_A???o????{Nv~~oA@???V?@[??F{?oN{@{KCF]??NN??]F??[F_?{B_?wBo@wBo@wBo@wBo@wBo@wBo@wBo@wF_?{F_?{F??[N??]]??N{KCFoN{@?F{????? +?GAG?_??Q????NB|~~{?_O??Do?U?N{N?N{~?B`o?Bb_?Bb_?Rb_?Rb_?Rb_?Rb_?B`o?N_~?N_^?B_{?B_w?B`o?B`o?B`o?Bbo?Bbo?BboKRboM^~`N~~@Fo????A? +}?C??B????Bo~^~~?GC??@[?BoBoK~o~FbwNN?[w@r?FK?{?FoB}?NoN}@~?No@{?F_?[?Lo?v?F[?{wFrr~F~KF????_G_A???W????{Nv~~oA@???V?@[?~n{~~n{~ +F`o{@`oo@`oo@ppo?pp_?pp_?pp_?@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o?wN{BwN{B?????GA_?_??E????NB|~~{?_O??Do?X?N{@~_F~?^w@ +]??}?F??F_B_??w?w?CE?K?@?oA?_oK?_G[@??BN?O??z_???Fw???@{????M????B_????w????M????B_????w????M????B_???B~?O??~oC?????_K_C??@_???? +_Nn~~oA@???p?Ak?~~~~@o??~~~~No??w?[?~_??o?[?{?C?o?[?w?K?o?[?_?[?o?[???{?o?[??@w?o?[??Bw?o?[??Fo?o?[??Fo?o?[??N_?o?[??N_?o?[??N?@ +o?[??N?@o?[??N?Bo?[??N?Bo?[??M?Bo?[??M?Bo?[??M?Fo?[??M?Fo?[??M?Fo?[??M?Fo?[??M?Fo?[??M?Fo?[??M?Fo?[??M?Fo?[??M?Fo?[??M?Fo?[??M?F +o?[??M?Bo?[??M?Bo?[??M?Bo?[??N?Bo?[??N?@o?[??N?@o?[??N?@o?[??N_?o?[??N_?o?[??Fo?o?[??Bw?o?[??@w?o?[??@{?o?[?_?{?o?[?w?[?o?[?{?C? +w?[?~_??~~~~No??~~~~@o??????_M?C??@_????YNn~~oA@???r?Aw???B{Bw?@?GB~Nw?@?M?^}K?@?N_BoKC@?No?_M[@?Bw??M[@_@{??Nw@_?{??No@o?[??N_@ +w?K??N?@{?K??N?@{?C??M?@}?C??M?@}????K?@~????K?@^????K?@^_???K?@^_???G?@^_???G?@N_???G?@No??????No??????No??????No??????No?????? +No??????No??????No??????No??????No??????No??{N{~^_??{N{~^_???N_B^_???N?@^_???N?@^????N?@~????N?@}????N?@}?C??N?@{?C??N?@{?K??N?@ +w?[??N?@o?[??N?@_?{??N_@_@{??N_@?Fw??No@?No??Mw@?N_B_K[@?M?^{GK@?GB~~o?@??B{Fo??????_A_A??@G????_Nn~~oA@???p?@C?~~{@~~{@w?{?o?[? +o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[? +o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?o?[?w?{?~~{@~~{@?????GBW?o??W????GBz~~{?_O??KO?a?N~~?o??~~{B??B_Bo???K?F????o?[???B?@o???K?F +????o?[???B?@o???K?F????o?[???B?@o???K?F????o?[???B?@o???K?F????o?[???B?@o???K?F????o?[???B?@o???K?F????o?[???B?@o???K?F????o?[? +??B?@o???K?F????o?[???B?@o???K?F????o?[???N?@o???{?F???Bo?[???N?@oA??[?F?G?@o?[?_?F?@oA??[?F?K?@o?[?o?F?@oB??[?F?M?@o?[?{?F?@oBw +?K?F?No?w?]?~oB~~~~~?N~~~~{??????GAo@???W????GBz~~{?_O??KO?i?N{N?NB~?~{N?NB~?{?^???~?K?^???]?K?~???K?K?}???K?K@}???K?KB{???K?KB{ +???K?KBw?O?K?KBo?O?K?KBo?o?K?KB_@o?K?KB_@o?K?KB?Bo?K?KB?Bo?K?KA?Fo?K?K??Fo?K?K??No?K?K??^_?K?K??^_?K?K??~??K?K??}??K?K??}?CK?K?? +{?KK?K??{?KK?K??w?[K?K??w?[K?K??o?{K?K??_?{K?K??_@{K?K???B{K?K???B{K?K???FwK?K???FoK?K???NoK?K???N_L?K???N_L?K???N?N?K???N?N?K?? +?M?N?K???K?N?K???K?N?K???G?N?K???G?N?M?@???N?N?B???M?N{~???M?N{~???K?????GAo@???W????GBz~~{?_O??K_?i?N~~?^B~?~~~?^B~?}?N???~?K?F +???]?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F +???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F???K?K?F +???K?K?F???K?G?F???M?G?N???E?G?N???E???N???F???^???B???]?G?B???}?K?@??@{?M????Bw?N????Bo?V_???B_@pw???A?~o{?????~?K??????GAo@??? +E????GBz~~{?_O??K_?o?N|~??Bo~~|~??Bo~~?N??B?F}?F??A?@{?F??A??{?N??A??w?N??A??W?N??A??W?^??B??O?^??B????^??B????}??@_???}??@_??@} +??@_??@{???o??@{???o??B{???w??Bw???W??Bw???W??Bo?O?K??Bo?O?K??Bo?o?K??B_?o?E??B_?o?E??B_@o?F??B?@o?B??B?@o?B??A?Bw?@??A?Bw?@??A? +Bw?@????F{??????F{??????N}??????Ne??????Ne??????^B??????^B??????^B??????}@_?????}@_?????}@s?????{?s?????{?s?????w?[?????w?[????? +w?[?????o?K?????o?K?????o?K?????_?C??????G?W?o??Q????BB|~~{?_O??Fo?]?KB~??Bo~oK?]K?N?Fo?Fo@{?Bw?^??{?Fo?^??w?F_???@w????]????F_? +??@w??B?^o??~f{?oN|w?M?N]?Bw?v_?~?@w?Fw?]??}?F_?No@w?@{?]B?^?F_oFo@wK@{?^B?~?FwoN_@}KFy?~rb{w^K\}N~_B{?~o?K???A?]?K??C_???@g}~~~ +?GC??BG?G????G?F??B{@o??~?[??K?F??A?@o??_?[??G?F??A?@o??_?[??G?F??A?@o??_?[??G?F??A?@o??_?[??G?F??A?@o??_?[??G?F?Nq@@wB~bo^?BxwF +w?Nw@~?@{?^w?M?F^?B?@ro?_?[}?G?FN_A?@pw?_?[^?G?FFoA?@p{?_?[^?G?FFoA?@p{?_?[^?G?FFoA?@p{?_?[]?G?FN_A?@rw?_?[{?K?F^?B?@v_?w?^w?N?F +{?M{@}?Ffo}?~w^~?Ny@~o???GAw?_??K????BB|~~{?_O??Fo?X??B{?OA?~o{?oG[^?M?@N_Bo?Fo?]?@w?Fo?}??{?N??N_Bo?Rw?{?C]?N?@FoB_?^~~~oF~~~{@ +Fo???@{????^????Fo???@{????^????N_???Bw????}????^?A??Vo?o?Fw?K??{?F_?M?F[?B?Fro??N{^??B{?o????A?w?C??@_???@g}~~~?GC??BG?D_??w?{? +}@{?Nbo?Frw?Bry?@ry?@pr?@oB??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB~~oN~~oN??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB? +?oB??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB??oB_@oB}~oB}~o????A?]?K??B????@g}~~~?GC??BG?GOB_?O???N{@????~oC???Bo?O???M?@ +????w?C???B_?O???M?@????w?C???B_?O???M?@????w?C???B_?O???M?@????w?C???B_?O???M?@????w?C???B_?O???MA@^o??wMF~?OB_]^?B?M?\o?[?w?}? +@oB_@w?N?M?F??{?w?K?BoB_?o?N?M?@??{?w?C?BoB_?O?N?M?@??{?w?C?BoB_?O?N?M?@??{?w?C?BoB_?O?N?M?@??{?w?C?BoB_?O?N?M?@??{?w?C?BoB_?O?N +?M?@??{?w?C?BoB_?O?N?M?@??{?{?M?FoB~N~b~?^{~}N{@????_J?@???o????eNn~~oA@???o??s?{?Bw?^_@}?Fw?^???????????????????????????????M?@ +~oF~?^?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@w?F_?]?@{?N~F~{^????_@_B???o????KNv~~oA@???^?@s??N_B??B~FoA?@ro? +w?Fo?N??w?Dw?K?B]?B??ro?_?[{?G?FF_??Bpw???{]???NFo??Fp{??@{^???^Fo??Fp{??@{^???^Fo??Fp{??@{]???NN_A?Bro?_?[{?G?F]?B??v_?o?No?M?@ +w?Nw?G?NN_??~p{??N_B?????G@W?_??K????BB|~~{?_O??Fo?U?MB`B~~pF~{|Nn?\Nm?NNm?FNm?F?M?B?M?B?M?B?M?@?M?@?M?@?M?@?M?@?M?@?M?@?M?@?M?@ +?M?@?M?@?M?@?M?@?M?@?M?@?M?@?M?@?M?@?N?B?N|~?N|~??????A?[?G??B?????o~^~~?GC??@{?D_B?^oro~o|{w?{]_?{M??{F??wF??wF??oF??oN??o^??B} +??B}BoB{~oBo~oN?~o[?~?{?o@{??@{B?BwB?BoF?B_F?B_F?B_N?B_^?@o^?@o~??~vo?~b~oMB~o??????_D_A???W????}Nn~~oA@???k?@O???K???K???K???K? +??K?_?K?_?K?_?K?o?K?o?K?w?K?{?K?}?K?~~{F~~{Fo?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?K?o?KKo?KKo?KKo?KKo?KK +o?KKo?KKo?KM_?[E_?[F?H{B?N{B?No?????_F_B???o????KNv~~oA@???^?AC?w?C?BoB~?^_N?N{@}?{?{?E?BoB_?O?N?M?@??{?w?C?BoB_?O?N?M?@??{?w?C? +BoB_?O?N?M?@??{?w?C?BoB_?O?N?M?@??{?w?C?BoB_?O?N?M?@??{?w?C?BoB_?O?N?M?@??{?w?C?BoB_?W?N?M?@_?{?w?E?BoB_?[?N?K?Bw?{?o?LoBoA?Bro^ +??B~F~{@?NoB~oC?????_@_B??@G????kNn~~oA@???o?@k??No@??B~@oB?@p{?w?C{?N??]?@o?F??]?Bo?B_?w??{?M?@N?B_?Ro?w?C]?K?BF_B??pw?o?K]?K?B +FoB?@p{?o?[^?K?FFoB?@p{?o?[^?K?FFoB?@p{?o?[^?K?FFoB?@p{?o?[^?K?FFoB?@p{?o?[^?K?FFoB?@p{?o?[^?K?FF_B??pw?o?K]?K?BN_B_?ro?w?C{?M?@ +N?B_?V_?{?@w?N??{?@w?N??]?B_?Ro?o?[^??B~@o??~?C?????_@_B??@G????kNn~~oA@???o?@k??NwB?GB~BoB__r{?{?@}?F_?~??w?N_?F?Bw?Vo?}?D{?N_@ +~?Bo?Vo?}?D{?N_@C?Bw?O??}????N_???B{????^????Bw????~??A?Fo??w?[??N{@??B~?o??_?{????}????^????N_???Bw?O??{?K??N?B??B_?o??w?[??M?F +F_B_@r{?w?[~?M?FNoB_@r{?w?[^?M?F@oBo?oW?{?KM?N?@F?Bw?R_?~?Bo?Fw?wGK~?KB~Bo??~_C?????_J_A???W????iNv~~oA@???Y?@g????B????@o??_?[? +?G?F??B?@o??w?[??M?N??@oBo??K?{??B_N???WBo??F?{???o^???MF_??@`w???[]???BF_A?~p{?_N{~?K?@N?B??Bo?w??{?E??N?Bo?Fo?~gF~?~}@~oK???A? +g?G??E????Ag~^~~?GC??@g?EO??}G[@?Ny^?W?^~?F_@~_@{?Fo?^_?w?Dw?M??N?B??Bw?o??]?K??F_???@{????N????Bo????{????N????Bo@o??{?K??N?B?? +F_?w?@w?E??{?@o?^??N?Nb@@oB_~oC?_F{??????GAw?_??E????Ib|~~{?_O??E_?Z?NB~FoBo~v{???~o???Nw?C?B{?B_?}??w?F_?]?@o?F_?[?@w?F??]?@o?F +o?]?@{?B_?^??w?Fo?M?@{?B_?^??w?Bw?N??}?@o?F_?]?@w?F_?M?@[?Bo?Ro?{?C^?N~~@oB~~oC?????_C?A???W????iNv~~oA@???Y?@S?{N{@{N{@??{???{? +??{?_?{?_?[?_?[?_?[?_?[?_?[?o?[?o?K?o?K?o?K?o?K?o?KWw?KWw?CWw?C[w?CKw?CM{?CN{GCN~~{F~~{F????_J_A???W????iNv~~oA@???Y?@w?{@~oN~?^ +{B{?Nw?F?B{??o@~_?M?^w?B_Fe??WBx_?E?{W?@_NE@?WB`oOF?w[K@oKBB?KB?poB?_K[?oGBN?K??zoB_?N{?W?@}?E??^_@_?Fw?W?@{?F??^?@o?F_?~oKw?N{B +K?????A?m?G??F_???Ag~^~~?GC??@g?EoB~@~oF~o^{?~_?]?Bw?B??{??w?N??E?Bo??o?{??K?N?@@_B_?OW?w?CB?M?@?oB__OC?wGK@?KBB??B?oo??oEK??K@r +??B?Lo??_B{??G?^??A?Bo??_?{??G?F????@o????K??????GAw?_??E????Ib|~~{?_O??E_?\?MB~}@~_^~_^?@~o?O?]W???Nb???Bow??@{F???]?o??N_E??Bo +?o??{?K??M?@??B_?O??w?K??N?B??Bw@o??f?[??GoN???EBo???p{?_?K]?K?@N_B_?Bo?{?@{?N}B~oN~_~{B????_K_@??@G????eNz~~oA@???O?@??}?^}Bpw] +F`oKF??]{@~{FrwMBowFB_^M@{~NZ~|~^`w???A?e?C??B????AW~n~~?GC??@??BoB?B~?~]B_{[@xo~f~}^o{?@o?F??[?Bo?MMBw[~?~o@o???GBG?O???????Hb} +~~{?_O??E??R??A^@{B~@}Bp@~B_?FB_?FB_?FBo?F@o?N@w?N?~?N_N?@_??B_??N_~?Nb~?Nr~?@zo?Oz_?Oz_?O~_??zo?Bx{?No~?N?N?????G?G?O???????Ib| +~~{?_O??E_?I?G?Bo?N??{?@????????????????}?Fw?]??w?B_?M??w?Bo?F??[?@o?F??[?@w?N{@~oC???A?A?C???????Ag~^~~?GC??@g?A_Bo?~?B_?M??w?B +o?N??[?@o?F??[?@w?F_?M??w?B_?M??{?@o?F??[?@o?F_?]?B~?^{@????_??B???W????eNz~~oA@???O?@s?}Nvp@~b~~o~_pp{NwGCFBmA??oz__?KMwG?BBnB? +?o|oo?CF[K?@@vB??O\oo?CF[K?@@vb__O^~}][^~~ffFo???GBw?O??E????Hb}~~{?_O??C??Q?Nb|?Nb~?]Bf?]B@?]B??]B??]B_?^B_?VB_?FB_?FB_?FB_?FBo +?Fbo?N~x?~~x?o???GBw?O???????Hb}~~{?_O??Do?S?NBz?^B~@{ANB{?BB{?@Bk?@Bk?@Bm?@Bm??Bm??Bm??B}A?@}B?@~B`?~B~?V@}?F???F???F_??F_??B_? +?N{@?N{@??????A?Y?C??@_???AW~n~~?GC??@??B_BwN~_~wBn_K]?@w?B_?N??[?@o?F??[?@o?F_?~oN~?o???G@g?O??Q????NB|~~{?_O??Do?J?K??o?@_?E?? +[?@o?Fo?~_^~?r_?M??w?B_?M??{?@o?F?K[?poBf?M[?^o@]?????A?q?C??E????BW~^~~?GC??@_?B_A?@}?^[@oWM@ooBB?MK?woBb?FM?[w@r_FM?[w@r_BF?K[ +?poBB?KM@o]M?~w@]?????A?q?C??C_???BW~^~~?GC??@_?BoB?F}?~{Fbw[N`o}F`o]?@w?Bo?F}?Nw?[?F_?{?Bo?N??{Fro^N@{]Bp}NB~wF~?C???A?w?C????? +??A?~n~~?GC??@C?C?B~F~{~MF?wwBb_MM?wwB`o}B~wFr_?M??w?B_?M?B~?^{@????_@?A????????_Nz~~oA@???P?@O?~o{?~r{?MF??MM??MM??MM??MF??}B{? +}B{?MF_?MF??MF??MF??MF??MN?K~~CN~{CF?????G@O?O??E????@B~~~{?_O??Ao?I?N_?~_EM?~{B~oKB??K?@oMM?~o@}?????A?{?????????A?~n~~?GC??@C? +A_B_?~?Bm?KW?P_?E?@~?F{?E??W?@_?E??W?@_?E?@}?Fw?????_L_?????????YNz~~oA@???Q??W?B_wM??????{NB?oKB?oKBB{~????_H_@???W????CN~~~oA@ +???J??s?~oN~@poFB?WK@_oEB?WK@_oENp{~Fo???G@g?O??E????@B~~~{?_O??Ao?J?N_?~?CE?oKE?oWB@_KE?oWE?~o@}?????A?G?C??@_???Ao~n~~?GC???{? +@o?KB?oM^v{KB?oKZEpk^B_?????_E_@???W????eNz~~oA@???O??k?}?B{?OWB?_GB@_KE?oWB@_KE?oWB@_KE@_KE?~o@}?????A?Y?C??B????AW~n~~?GC??@?? +AO?W?@w?Fo?X?@_?E??W?@_?E??W?@_?E??W?@_?~oF~?O???G@g?O??E????Hb}~~{?_O??C??J?No?~oNN@o{FBo[?@o?F_?]??}?@{??w?@oEB_Z~?~{B????_E_@ +???W????eNz~~oA@???O??k?}?B}?WwBf_MM?{?B{?Fo?W?B??[E@o{FBo]N?~wB~?????A?Y?C??@_???AW~n~~?GC??@??AoB_?M??{?Bw?L_?v?BK?KW?poB~@~{F +o?B??K??}?^w@o???G@g?O??E????Hb}~~{?_O??C??J?GW@~_F}?Bw?@_?E?NW@~_M]@owF??[F@o[F`oN~?~o?????_E_@???W????eNz~~oA@???O??k?{?Fw?xoB +b_KE?CK?~oN~?o[F?oWB@_KE@_]M?~oB}?????A?Y?C??B????A?~n~~?GC??@C?Ao?E?NwF~_[B@wKBo?F_?E??[?@o?B??M??w?B_?M??w?B_?????_E_@???W???? +eNz~~oA@???O??k?}?B{?WwB@_KM?zwB~?F{?^wBpo[B@oKE?oYN@~wB}?????A?Y?C??@_???AW~n~~?GC??@??AoBw?Nw@b_KF?oKE?oWB@_[F~_^}@p?E??MM?{w@ +~_D{?????GBW????K????LB~~~{?_O???o?B??[F@o????A?[?G??@_???@G~^~~?GC??@w?D_B~^oB~~oB~~oCww?Kw_?[w??{w??ww?@ww?@ow?@ow?Bow?B_w?B_w +?B_w?B_w?B_w?B_w?B_w?B_w?Bow?@ow?@ow?@ww??ww??{w_?[ww?N~~oN~~oB~^o????A?[?G??B????@G~^~~?GC??@w?DOA?No^_~o^o~o^w{O\wo?[{o?[}_?[] +??[M??[N??[N???F???F???F???F???F???F{@{F{@{F{@{N??[N??[M_?[]_?[}_?[{o?\ww?^w{O^o~o^_^o]?No[???A?[?G??E????@G~^~~?GC??@w?COB~~oF~ +~oF~~oE??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oA??oB~~oF~~oF~~oC???A?[?G??@_? +??@G~^~~?GC??@w?D_B~BoB~BoB~Bo@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o??@o?B`o?B`o?B`o?B`o?Bb~ +~r~~~r~~~r{???A?[?G??@_???@G~^~~?GC??@w?Do@~oF~~oF~~oF}w?Oyw?Oyw?oww?oww?oww@oww@oww@_wwB_wwB_wwB?wwF?wwF?wwE?wwM?wwM?wwK?ww[?ww +[?wwW?wwW?www?wwo?wwo?z~_O~~_O~~?O{???A?[?G??C_???@G~^~~?GC??@w?CoBo^oB{~oF}~oK}w?KM_?KN_?[F??[F??[F??[F??[F??[F??[F??[F??[F??[F +??[F??[F??[F??[F??[F??[F??[F??[N_?[N_?[M_?K}w?N}~oN{~oFo^o????A?[?G??B????@G~^~~?GC??@w?DOB~^oB~~oF~~oKwo?[w??{w??ww?@ww?@ow?@ow +?@ow?@ow?@ww??ww??{wo?^w~oNw~oFw^o?w???w???w???w???w???w???w???w???w??B~?OB~?OB~?O????A?[?G??C_???@G~^~~?GC??@w?CoB_foNw~oN{~oL} +}?K^w?KNo?KFo?KF_?KF_?KN???N???}??B}?OB{FoBo^oA?~oC?}?K?w?K?_?[?_?[???[F??[F??[F_?[N_?[^o?L~{?N~~oF~~oBfNo????A?[?G??@_???@G~^~~ +?GC??@w?DoB~~v~~~v~~~v{FFF?FFF?FFF?FFF??F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F?B?~oF?~oF? +~oC???A?[?G??@_???@G~^~~?GC??@w?DoB~_F~~_F~~_F{w??ww??ww??xw??|o??\o??\o??^__?N__?N__?N__?N?oOF?oOF?oOF?oOE?woA?woA?woA?wo??Wo?? +\o??\o??\o??L_??N_??N_??F?????A?[?G??@_???@G~^~~?GC??@w?DoB}wP~}wP~}wP~o_?N_o?F_oOF?wOB?woA?[oA?\o??No??No??F_??F_??F_??N_??N_?? +^o??\oA?{oA?woB?wOF?oOF_o?N__?Lo??\o??^~oV~~oV~~oV{???A?[?G??@_???@G~^~~?GC??@w?DoB~_F~~_F~~_F{w??xo??\o??^__?N__?N_oON?oOF?woE? +woA?wo??\o??\o??N_??N_??F???F???F???F???F???F???F???F???F???F?A?~oA?~oA?~o????A?[?G??C_????_~n~~?GC??@S?CoA?BoB_NoBw~o@{{?C{w?C] +o?KM_?KF??[F??[F??[F??[F??[F??[N_?[M_?K]o?K{w?D{{?Fw~oB_NoA?Bo??????_F?A???W????]Nv~~oA@???[?@O?_?K?_?K?_?K?_?K?_?K?_?K?_?K?~~{F +~~{F~~{F_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?K?_?KM_?KM_?KM_?[N_G{N?N{F?N{B?No@????_F?A??@G????QNv~~oA@???]?@K?_?{?wB{?{F{?}N_? +MM??FK?@FK?@Bg?BBg?BBg?B@o?F@o?F@o?F@o?F@o?F@o?F@o?F@o?F@o?FBw?FBg?BBg?BFk?BFK?@NM?@MM??}N_?{F{?wB{?_?{?????_F?A???o????QNv~~oA@ +???]?@S?oF{?{N{@}N{B~M?BNG?FNG?FN??FE??F?G?F?G?F?K?B?N?B_N{@_N{@_N{B?M?F?G?N???^???]???[???[Bo?[Bo?[Bo?]Bo?^Fw?N~m?F~N{B}N{@oF{? +????_F?A??Bo????aN~~~oA@???E??W?Fb{~Nr{]????_@_B??@G????oNv~~oA@???X?@k?@o??@o{?_?[N?G?FFoB?@p{?o?[~?M?F^oBo@v{?{?^v?F_F|o@w@}[@ +N?^f?rwFpoK]@w[FBo]F@o{F@w{F@o^^@o[Fv_KF@~o@@o^{?O[F}??F@~_?@o\o??[F???F@o??@o???G@o?_??Q????KB|~~{?_O??EO?S?N~~B~~~B~~~Bo[???[? +??[???[???[???[???[???[???[??N~~?~~~?~~~?o[???[???[???[???[???[???[??N~~B~~~B~~~Bo????A?O?G???????B?~^~~?GC??@c?DoB~~v~~~v~~~v{? +F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???F???????_I?A??@G????oNv~~oA@???X?@W?oN{?}N{F +~N{NN_?^F_?]B_?[Bo?{Bo?{@o?w@o?w@o?w@o?w~~{~~~{~~~{~@o?w@o?w@o?w@o?w@o?w@o?w@o?w@o?w@o?w@o?w?????G@o?_??Q????KB|~~{?_O??EO?S?N~~ +B~~~B~~~Bo[???[???[???[???[???[???[???[???[??N~~?~~~?~~~?o[???[???[???[???[???[???[???[???[???[???????A?g?G??@_???B?~^~~?GC??@c? +E_A?~o[?wN{^?Nb~^oB{?No?N_Bo?Pw?w?CM?K?@BoB??o{?o?KF?G?B@oA??o[?_?KF?G?B@oA??o[?_?KF?G?B@oA??o[?_?KN?K?BBoB??pw?w?D}?N_@~N~~?NB~ +NoA?~o[?????_I?A??@G????oNv~~oA@???X?@W?@o?wBo?wFo?wNo?w^o?w~o?w|oCwxoKwpo[w`o{w@o{w@pww@rww@vow@~_w@~?x@}?z@{?~@w?~@o?~@o?}@o?{ +@o?w@o?w@o?w?FGl??@ERsxS???????????????????????????????????????????????????????????????????????????????????????????????????????? +, +iAW??CXNRdO@????Fo???@O???@TKB?oKB?tKB?qSskoKC\FKB?oKTTYUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??@w?O??w?C????????????????????????o????U?K?????????????EAK??G_B???`????^_?????????????????????????????? +G????I_????O????V_????????@]?????????Dw?????????IPg??CcX???wEo???????????????????_????[???@W?o??@o???D{B???O????X_K??@????@u?o?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +a?K??I_B??@?@???i?O??MwC???K@O??Z?S??I_D???[@_??c?W???OF??@w@o??w_[??CwG??BUA???V_c??MWH??@QA_??g?g??@?J??@]Ao??j?k??M_J???sB??? +k?o??NGK???sBO??n?s??A_M??AoB_??A?{??E?N??AaBo??}_{??EWO??A}C???D`C??EwP??BECO??A@G??CgQ??AKC_??r`G??@?R??@QCo??d@K??L_R???YD??? +V@O??KGS??@[DO??j`S????U??@QD_??c@W??MGU???_Do??[`[??MGV???WE???Y`_??LgW??@eEO??l@c??NoX??@IE_??e@g??@_Z??AWEo??~`k??Cg[??AUF??? +v`o??D?\??AMFO??r@s????]???sF_??Y@w??Jg]????Fo??K@{??G?^??AsFo??WA???M__??ASGO??OAG??Moa??@sGo??~AK??H?c???EHO??jaS??B@AAThYUdhT +KB?oKB?tGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBSoKBHRQr?oPs[??????G@G?o??W????Nb}~~{?_O???_?Y?N~~~oN~~~{B????_C_B??@G????KNv~~oA@???_?@o? +?E????@_????W????E????@_????W????E????@_????W????E????@_????W????E????@_????W???~~~~B~~~~o{?W????E????@_????W????E????@_????W??? +?E????@_????W????E????@_????W???~~~~B~~~~o{???A?Q?K??C_????_~n~~?GC??@O?F?B~~~{N~~~~Bo????????????????????????????????????B~~~{N +~~~~Bo????????????????????????????????????B~~~{N~~~~Bo???G?w?O??]????Mb{~~{?_O??JO?A??KB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB?oKB +?oKB?oKB?oKB?oKB?o????A?M?C??E????BG~n~~?GC???S?@O?MFp{^B_????A?Q?K??H????Bo~^~~?GC??@_?D_?B?B?F?B_N?Bo]?@w{??|w_?^oo?N_wOF?{oA? +^o??No??F_??F_??NoA?^oB?{oB_wOFoo?Lw_?[{??{]?@wN?BoF?B_B?B????A?I?G??C_????w~n~~?GC??@G?C?B_@~_^~B~}^~x~~~~~~~~~~~~~~~~~~~~~~~x~ +~f~{N~_^w?[???A?w?C??K????Bg~N~~?GC??Aw?Ao?B??K??o?B??K??o?B??K??o?B??K??o?B??K??o?B??K??o?B??K??o?B??K??o?B??K??o?B??K??o?B??K? +?o?B??K??o?B??K??o?B??K??o?B??K?~o^~@o???GB_?O???????Mb{~~{?_O??J_?J???E??W?@_?E??W?@_?E??W?@_?E??W?@_?E??W?@_?E??W?@_?E??W?@_?E +??W?@_?E??W?@_?E??W?@_?E??W?@_?E??W?@_?E??W?@_?E??W?@_?E??Z~@~{F????_J?@??@_????yNr~~oA@???m??g???M??w?B_?F??[?@o?B_?M??W?@o?F?? +M??w?@_?F??[??o?B_?M??W?@o?F??[?@o?E??w?B_?K?@o?F??W?B_?M?@o?F??W?B_?M??o?B??[?@_?E??w?B??K???A?k?C??C_???Bg~N~~?GC??Aw?A_?B??[? +@o?E??w?B_?K?@o?F??W?B_?M?@o?F??W?B_?M??o?B??[?@_?E??w?B_?M??w?@o?F??[??w?B_?E??[?@o?B_?M??W?@o?F??K??w?B_?E??[?@o?B?????GB_?O?? +Q????@b|~~{?_O??IO?L?N?@~?K]@owMBowFB_[M@o?F??{?B_?]?Bo?}?B{?xwFB_{NB_[]@poFF?[[BpoMF`wMN?~w@}?B_?[?Bo?M?@w?F??[B`oMF?w]B_w[B~_F +{?C???A?w?C??C_????W~^~~?GC??Ag?BOB_?M??w?B_?M??w?B_?M??w?B_?M??~p~~F~{^w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M?? +w?B_?M??w?B_?M??w?????A?W?K??B????@w~^~~?GC??@o?Fo??o?C??K?@??B_?o??w?K??M?B??Bo@o??{?[??N_N??BWBo??u?{??Go^??AKFo??`b{???W~???F +^o???vw???L}?G?@~?A?~~{?oN~~?[??}?F??N_@W?Bo?u??{?Lo?N?FK?B_@~{B~f~~?~x~????_B?B??@G????]Nv~~oA@???[?@k??N_N@_B~No^?N~_F{?^_@~_B +o?^w?W?F~???@~w???^}???F^_??@f{???X~????^o???F{???@~????^o???F{???@~????^_??@nw???Z}???E~???@~_@??Nw?w?B{?^_?[?~}???~r{??N_N???? +?G@w?o??K????Fb|~~{?_O??F??^?N~~FoB~~~{?{?Nw?~?Bw?^o?{?N{?M?F~?B_@~o?o?~{?K?N~?B?B~o?o@~{?K?^~?B?F~o?o@~{?K?^~?B?F~o?o@~{?K?^~?B +?B~o?o?~{?K?N~?B_@~o?w?^{?N?B~?Bw?^o?~_B~~~~?N~~Fo????A?m?G??B????@w~^~~?GC??@o?E?B~~oB~~oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo +?oBo?oBo?oBo?oBo?oBo?oBo?{Bo?{Bo?{Bo?}Bo?}Bo?uBo?vBo?vbo?vz~~v~~~v{???A?I?G??@_???@g~n~~?GC??@G?DOBoNoB{~o@{}?D{{?L{w?Kww?K?w?N? +~oNw~oN}wON}w?L~w?K~w?K~w?L~{?L}~?^{vp~o`p{???A?a?G??@_???@_~^~~?GC??@s?DoB~??B~??Bw??Bw??Bw??Bw??Bw??Bw??Bw??Bw??Bw??Bw~?Nw~o~w +`p~w?R~w?Bzw?Fzw?Fzw?Fzw?Fzw?Fzw?Fzw?Fzw?Fzw?B~w?R~w`p{w~o{W~?K?????_N_@???o????YNz~~oA@???Q?@C?oB{?}N{?~N_?^n_?^n_?Nv??No??No?? +No??No??No??No??No??^g?@~k?@~MC?}F{?o@{?????_M?@???W????YNz~~oA@???Q?@C?^vo?^~{@]N[@}NK@}NC@}MC?}???}???}???}???}???}???}???}??? +}???}???~o{?~o{?????_K_@???o????YNz~~oA@???Q??w?}@~}Fow]@p_FE?{?~oF~B~w^~@~oNo?}?roFM?[wFpz~F~KF????_K_@???W????iNv~~oA@???Y??w? +o?B??K??w?B_?N??{?B{?N{~~r~w?N_?}?Bw?N_?}?Bw?N_?}?BwKN_o}BBwKN_x{@~?Bo???G@??_??Q????BB|~~{?_O??GO?P???B???B?M?N?N_~?Bpz??zb??zB +?O^b?O^r?O^r?O~r?P~b?F{B?N{N?Nw~?Np~?Np~?NB~?KB~??B~?ORr?P~b?P~B?P~B?P~B?O^B?OZb??zr?Bpz?N_~?M?N???B???B??????A?M?C??E?????o~^~~ +?GC??Ac?@o@~^v{F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@v|~^o????A?M?C??@_????o~^~~?GC??Ac?@o@~^v|o[F@o[F@o[F@o[F@o[F@o[F@o +[F@o[F@o[F@o[F@o[F@o[F|~^o????A?K?K??C_???@w~^~~?GC??@o?F?B~B~{N~o~~B~??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo~~{? +{N~~?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N{N~o~~B~{N????_C?A??@G????]Nv~~oA@???[?@C?{N{@{N{@?Bo??Bo? +?Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo??Bo?Fro?Fro?Fro?Frw?Bp{?~_{?}?K?????_C_B??@G????]Nv~~oA@???[?@w? +~o~{F~{N~@~o?N?@{?@o?N??M?Bo?@o?{??M?N??@oBo_?K?{K?@?NB_??Bo{???{N_@?NB{?oBoz_K?{K[F?NABBoBo_O{?{??^?N??N_Bo?Bo?{?@{?N??}?Bo?N?@ +{?Bo?^??{?N~B~o~~o~{No???G@W?_??E????AB}~~{?_O??DO?T???M???M???M???^???^???^?G?x?G?x?G?x?K@o?K@o?K@o?EB_?MB~?MB~?BB??RB??Rb??Rq? +?~~oF~~oFo????A?I?G??@_????_~n~~?GC??@S?CoB~~oF~~oCww?Cw_?Cw_?KwE?KwE?KwE?KwF?BwFoBwFo?wF??wE?WwE?WwE?Ww??[w??Kw_?Kwo?N~~oN~~oK? +????_B_@???W????GNz~~oA@???T??c?~oF~?R_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M?B~?^{@????_N_@???W????GNz~~oA@???T?@C?~oK?~oK? +M???M???M???M???M???M???M???M???M???M???MG?@MG?@MG?@MK?@MK?@MM??MN??~~{?~~{??????GBg?_??E????AB}~~{?_O??DO?Z?F{?{?^~?N_F}?Bw?N_? +}?BW?]o?u?Fk?L_@z?AW?}W?e?Ne?@_Fwo?W@}K?E?^b?@aMwO?WbmC?ELr_?@b[w??WvM??EFb_?Bpww?B~]NoF~rB{@o???G@W?_??E????AB}~~{?_O??DO?T?B~_ +Fv~_F~a?@~_??~_@?|_B?x_B?x_F?p_F?p_M?p_]?p_[?p_{?p`w?p`o?pbo?pb_?pb??rr??~}??~{??o????A?[?G??B?????_~n~~?GC??@S?D?A?FoB_^oBo{??w +o?C[_?K]_?[M??[N??{N??{N??{N??{N??{N??{N??{]_?[]_?[{o?Kwo?Fw{?F_^oA?Fo??????_D_A???W????GNz~~oA@???T?@S?~n{N~n{NB_wM@_wK@ow[?owW +?owW?owW??w???w???w???w???w???w???w???w???w???w???w?wN{?wN{??????G@W?_???????AB}~~{?_O??DO?V?N}@^~}@^~??B~??@}???{A@?[BB?WBB??@f +??@v???}???}???[???[???[???[???[???[???[?GB~?GB~??????A?k?C??@_????_~n~~?GC??@S?BoB_?~_NF@oMM?Wo@b?F[?\o@v?F[?\o@v?F[?\o@v?EK?ww +Bb_[FN_Nw?K???A?k?C??B?????_~n~~?GC??@S?B?B??N??~oBn?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?NwN~_{???A?k?C??B?????_~n~~?GC??@S? +BOBw?^oFb_{FFo[]@pwFF??]?@w?Bo?N_?^??}?@[??wE@oWB`r~B~{N~o{???A?k?C??@_????_~n~~?GC??@S?BoBw@~o^B`wMN?w{?Bo?N??]?@~_B}?F?@w?N?@w +?F_F]?\w@voMNnw^}?[???A?k?C??@_????_~n~~?GC??@S?Bo??B_?N??}?B{?Nw?x_Bf?MM?wWB_oMB_wFBn|~~v{?B_?M??w?Bk@~oF{???A?k?C??B?????_~n~~ +?GC??@S?BO?MBNwN~_^}?oW?@_?E??W?|_N}@pwN@_w?F??[?@oFF?[[@owNB~wF}?C???A?k?C??@_????_~n~~?GC??@S?BoB?B~?^]B_{M@wwB_?M??[@|o~~Fp{w +Bv_F[?\o@v?E[?xoBb_{NN_^{?[???A?k?C??B?????G~n~~?GC??@W?Bo?E?Nx~~f~}^o[w?poBB_?E??]??w?@o?F??M??w?@_?F??[?@o?F??[?@o?????GAo?O?? +E????AB}~~{?_O??DO?N?N?F~@{{N`w{Bb_MM@w{^@z{B~?F}?}{Npw}Bv_F]?\o@v?N]Bw{~@~o@o???GAo?O??E????AB}~~{?_O??DO?N?N?F}?{]F_ww@r_F[?\o +@v?F[?|wBfr{^~`vOF??M??wBboMF?wN~?^w?O???GA_?_??Q????Ib|~~{?_O??E_?U?N~~?N~~?~A?B~??Fn??FN??NN??NN??NN??NN??NN??FN??FnA?B~B~?~B~ +?N???N???N???N???N???N???N???N???N???N{N?N{N?????GBW?o??K????Ib|~~{?_O??E_?d?N~B~~C^~{N~{P|w?By?@v_?Ng?B{??}_?Fo?By??^??]w?@w?Dz +o?B_?Vn??MA@{[??wGNpw?B?_~D_?KBBwEC?oKN_WOA?p}?p?GBfwBK?_E^?Ko??Z{?Z??@no@k??B}?Fo??Ng?N???}_?{??@w?Bo??F_?N???[??[???o?@_????A? +I?G??@_???@O~n~~?GC??@K?D???@_??Bo??Bo??BoA?FOA?FOA?FOB?M?B?M?B_]?@_[?@_[?Bo~oBo~o?ow??wo?C{o?D~{?|~{?{?????_@?A???o????SNz~~oA@ +???R?@C?oG{@{J{@}N?@NM?@Fk?@Bk?@Bw?@@w?@@o??@o??@o??@w?@Bw?@Bg?@Fk?@NM??}F??{B{?o@{??????GBw?O???????DB}~~{?_O??Co?R?N~~?^~~?Rb? +?Ra??Ra??r_o?r_o?r_w?N_~?N_~?B_w?B_o@b_o@b_?@b_?@r_??rb??~~~?~~~?o????A?A?C??@_???@O~n~~?GC??@K?AOB~?^{@M??w?B_?M??w?B_?M??w?B_? +M??w?B_?M??w?B_?~oF~?O???GBG?O???????DB}~~{?_O??Co?P?N{@?N{@?B_??B_??B_??B_??B_??B_??B_??B_??B_??Ba??Ra??Ra??Rb??Rb_?Bbo?N~~?N~~ +??????A?e?C??B????@O~n~~?GC??@K?B?BwB^wNB_{FB_[K@o?N?F{?~_N{@~?F??{?B_?M?owBB_{F~o^z?O???G?g?_??E????DB}~~{?_O??Co?S?F~?Bv~?Brq? +?ra??Ra??VB??FB??NB_?M@_?M@_?K?p?K?p?K?x?G?Z?G?Z???N???N???N???E??????A?s?G??E????@_~^~~?GC??@s?DoB~NoB~~oB~~oCN{?[No?{N??{N?@wN +?@wN?BoN?BoN?B_N?F_N?F_N?F_N?F_N?F_N?F_N?F_N?F_N?BoN?BoN?BwN?@wN??{N_?{Nw?^~~oN~~oB~No??????_A?@??@_????WNv~~oA@???\??O?Bo{NBo{N +Bo{NBo{NBo{NBo{NBo{NBo{NBo{NBo{?????_@?A??@_????WNv~~oA@???\??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{?Bo?N??{? +Bo?N?N|~~v~~^o???GAw?_??W????EB|~~{?_O??FO?S?B{?Bb{?Bf{?Bf[?Bn[?Bm[?Bm[?Bm[@Bk[@Bk[BBk[BBg[FBg[FB_[FB_[NB_[MB_[]B_[]B_[{B_[{B_[w +B_\wB_\oB_\oB_^oB_^_B_^_Bo^?Bo^?Bo????A?g?G??@_???@_~^~~?GC??@s?EO?N?K?@BoB??Pw?w??]?M??F_B_?Bo?[??{?F??^?@o?F_?M?@w?B_?{??[?N?? +F?Bo?@o?w?CM?M?@B_B??oW?o?KF?K?B@oA?@oK?_G[B?GAF?o??boC??K{@??BM????r_???Lw???@{????^????B_??????GBw?O??E????Eb}~~{?_O??C_?Q?K?N +?N?~?N`~?Bro?@z_?Oz??O]??o]??o]??o]??o]??o~??oz??Pz_?Rro?N`~?N?~?K?N?????G@g?O??E????Lb|~~{?_O??E??K?B_?M??w?B_?M??w?N{F~o^~@r_? +M??w?B_?M??w?B_?M??w?B_?M?@w@n_N{?~o?o???GBw?O??K????HB|~~{?_O??Eo?O?M?F{?~wFro{Ff_M[?xo@}?Fw?^_@}?Fw?^_@}?Fw?^_@}?Fw?^_B~?M[?xo +Ff_{NN_^{?~_@o???GBw?O??K????HB|~~{?_O??Eo?O?N?F~@~}Nr{}Bv_F]?Hw?F_?]??{?Bz_F}?Nw@{?N_@w?N_?{?Bo?N?@{?Nw@v_^^nw~~@~o@o???G???o?? +K????Ib|~~{?_O??E_?Z??B{BoY?~r{Fw@~w@~?Fw?^w?[?F~?A?@vo???\}???F^_??@b{???W~????No???B{????~????No???B{????~???E^_??@fw???X{???F +~?A??~_@_?No@}?@w@~w?GB~No??~?{?????_B?B???o????iNv~~oA@???Y?@s?~~{N?N~~NoBo?~o?{?No?^?Bw?No?{?F{?N?@~?B_?~o?w?N{?M?F~?B_@~o?w?^ +{?M?F~?B_@~o?w?^{?M?F~?B_@~o?w?N{?M?B~?Bo?~o?{?F{?N_?~?B{?Fo?~o?~~|~?N~~Bo????A?a?G??B????Ag~^~~?GC??@g?D_B~^oB~^oBo?oBo?oBo?oBo +?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?oBo?rBo?rBo?rBo?rbo?rbo?pro?pzo?p~~~p~~~p{???A?U?G??@_???A?~n~~?GC??@C?D_B~~?F~~_Nwxo^w +oo^woO^wo?^wo?^wo?^wo?^wo?^wo?^wo?^wo?^wo?^wo?^~xr~~xr{?????_@?A???W????_Nz~~oA@???P?@K?o@{?{F{?^N?@NM?@Fk?BFk?BF{?FF{?FF{?FF{?F +F{?FF{?FFk?BNm?B^N?@{F{?o@{??????GAW?O??E????Lb|~~{?_O??E??L?K??o?B??M??w?Bo?No?~o~~B~_?}?Bw?N_?}?Bw?N_?}?BwEN_W}@bwEN_\{?~_@o?? +?G?O?_??K????Fb|~~{?_O??F_?P???B???B?M?^?N`~?Brz??zb??^b?O^r?O^r?O~r?R~r?^{B?N{^?Nw~?Np~?Nb~?NB~??B~?Ozz?P~b?P~B?P~B?P~B?O^b??zb +?Bxz?N_~?M?N???B???B?????G?_?O??W????Fb|~~{?_O??HO?F?F|~^o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o\~^v{?????_A?@????????]Nv~~oA@ +???d??[?^v|~[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F@o[F|~^o????A?q?C??@_???BG~n~~?GC???w?C?B_M~_~NBw]N?w{@poFF?[]@pwBr_^Nr}~}^vo{ +????_E_@???W????qNz~~oA@???M??s?o?~oFvo[F`oM??[?@o?F??[?@o?FE?{]~_~w?o???GA??O??E????Kb}~~{?_O??B_?L?M?N}@{{F@w[Boz~B~{B@o?F??[? +@p_MFnwN}?K???A?e?C??B????Bo~^~~?GC??@s?C???}?B{?No?z_?M??w?Bo?F??^o^~@~??]?@w?B_?M??w?Bo?N??[?@o?F??[?@w?B_?M[?\o@~?@w?????_A?@ +????????{Nv~~oA@???V??g?_?M??w?@????????????????]?B{?Mw?x_Bf?N??[?@w?B_?M?M{?xoB~?Fw?????G?G?O??E????NB|~~{?_O??Do?G?Nr{[F@w]B_w +NBo[F@w]B_wNBu\f\r{]?????GBg?_???????Kb}~~{?_O??B_?\?Fr{}?F}~~sB|k]N?~^@`oNroWKB{KAB?vB?_OLwwKCB]MB@?Rb_o@cwwM?\NNB_FBrow?{[[K?F +????_G?@???o????qNz~~oA@???M??o?w?^oBv_MM?w{@no@}?^w@w?F@o[F@w[B~oN}?????GBg?_??E????IB{~~{?_O??HO?Z?Nz~?OB~~o[?~~{^?Nz~NoBo?F{? +{?@{?N??}?Bo?N?@{?Bo?^??w?Fo?M?B{?B??~??o?No?K?F{?A?@~??_?^o?G?F{?A?@~??_?^o?G?F{?A?@~??_?^o?G?F{?B?@~??o?No?K?B{?B??~??w?No?N?@ +{?Bo?^??}?Bo?Fo?{?@~?Nz~NoB~~p{?~~{N?Nz~?O????A?y?G??E????A_~N~~?GC??AS?D_B}~p~~~r~~~r~}~p{?F_??F_??F_??F_??F_??F_??F_??F_??F_?? +F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_??F_B}~p~~~r~~~r~}~p{?????_M_A???o????gNr~~oA@???d?@g? +~b{??N|~??B~^o??~b{??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O??w?C??M?@??B_?O?? +w?C??M?@??B_?W?@w?F??}?@o?N_?[?Bw?F??}?@o?N_?[?B~n~~?~~~~oN~~~{B~n~~?o???GBg?_??E????IB{~~{?_O??HO?[?NwB~_^~?~{N~o^~B~wF~_^o@n?? +{?zo?N?M{?BoBn??{@ro?N?[{?BoFN??{Bro?N?w{?BoMN??{Fbo?N@w{?Bo[N??{NBo?NBo{?Bo{N??{MBo?NB_{OBowNC?{KBp?NB?{OBooNK?{GBr?NA?{oBo_NK? +{?Bv?N??|oBo?N[?{?Bu?NwF~_B~B~w?~o~{?NwF~?????A?y?G??@_???A_~N~~?GC??AS?F?B}?~oF~o^}B~{F~_~}?~oF{?Bo?N??{?Bo?N??{?Bo?M?@]?B_?V_? +w?Dw?M?@]?B??ro?o?K{?K?BN?B??ro?o?[}?G?FF_A?@pw?_?[]?G?FF_??Bo{???{N???NBo??Bo{???wF??A]@o??f_[??HwF??A[?o??f?K??HoB??A[?o??}?C? +?N_@??Bw?O??{???????_M_A??@G????gNr~~oA@???d?@_??Fw?_N{@oN{BwN{F{KKN}??^]??]^??}N??{N_@{F_@wF_@wF_@wBoBoBoBoBoBoBoBoBoBoBoBoBoBo +BoBoBoBoBoBoFoBwF_@wF_@wF_@wN_@{N??{^??}}??^}GC^{KKNwN{FoN{B_N{@?Fw??????GBg?_??Q????IB{~~{?_O??HO?W?KB~?^B~@~b~B~r~F~y?Nvw?^fw? +^Fw?]Fw?]Bo?]???^???^???N_A?NoB_FwB~BwB~@wB~@wB~BoB?No??No??^???}???}???{???{@w?{B{?{B{?}B{?}B{?^B{?^~z@N~z~F~r~B~B~@wB~??????A? +]?K??I_????o~^~~?GC??@{?Fo??w?[??Na^@o?}v?[?F~_F_?~o@{?F{?N_?}?B{?N_?~?@{?Nw?^?@}?Bo?^o?{?F{?N_@~_Bw?Fw?}?@}?N_?^_B{?F{?^??~?Fo? +No@{?B{?^f?~?BwoNo?}K@{?Nb?}?B{wNg?~EBz?Npp{wBwK}F_{Bn?~~?^?B~?B????_@_B??B?????KNv~~oA@???^?@_??M?^?No~?Fxw_@~oo?^_w?N_{?F_}?F_ +~?Bo~?@w^_@{^_?~^n_N~~{B~o{?No??No??No??Fo??Fo??Fo??Fo??FoB?FoB_F_@oN_?wN??[^??N}M?F{N{@oB{??????G?O?_??c????Hbz~~{?_O??K??P??B_ +?OBo?OBw?OBw?OBw?OBo?????????????????????????????????????????????K?F?N?^?F_}?@_{?@o}??o}??w}??W}??W~??[^??K^?G?^?G?N?K?N?K?F?K?F +?M?F?M?B?M?B?N?B?NB@?^b@?Nb??Nb??Nb_?F`_?F`o?F_w?N_[?N?N?M?F?????GAG@O??c????BB|~~{?_O??Fo?u?M?F{?~?FoBoB~o^}F{?M@{^Nfr{?@q}@vo] +}??K~_L{@~??BNw@}?No?OZ}?N_@{?CE^_Bw?^?@@b{?~?Bw?O[~?No?}??BFo@{?N_??@{?^?Bw?G?^?Fw?~?A?Fo@}?Fo?_?{?N_@{?G?N?Bw?^?B?Bo?~?Fw?o?{? +No?}?K?F?@{?N_B?@o?^?B{?w?]?Fo?^MM?F_@}?Fpb_?w?N_?{Ww?M?Bw?NFN?Bo?}?Boro?{?N_?[M{?F?@w?F@n?@o?]?@o^o?[?F_K{B{?B??oB~?^??o?K?^_?? +iAW??CXNRdO????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? +, +v@[??CXNRdO@????Fo???@O???@TKB?oKB?tKB?qSskoKC\FKB?oKS|YUdhYKBHEKB?o?????????????????????????????????????????????????JSFAO?J??w? +?????E_???B{????^????EO@??Aw????w?C????????????????????????o????e?G?????????????B@S??K_A???`????R_?????????????????????????????? +G????I_????O????JO????C????m?????????As?????????qP???JoO??@oCO???????????????????_????[???AW?_??@o???H{A???O????h_G??@????Au?_?? +??????????????????????g???Bs?O?????W?@?????O?????O?@??C??O????C?????????????????????????????????F_???@O???BC~~~~D????Ej~~~{S???? +???@????F_Ae~~~~?????A_?????????N????N?????{????X????N????@w????I????F_???@_~~~~aN~~~zj~~~~o????RN~~~ro???A_????]????@O????S???? +q?G??FoB??Bq?o??b_O??@GD??@{@O????W??EgE??BS@_??U?[??KGF??@IA???z__??DgH??BaAO??Y_g??NwI???uAo??Z_k??KWJ??B}Ao??P?o??GoK???AB_?? +]?{??M_O??@{CO??K@G??EwQ??AkC_??y`G??A_R??@eCo??p@K???gS??AsD???V`S???gU???gD_??W@W??JgU????????M`[??DWV??@sDo??h`[??B?{AThYUdhT +KB?oKB?tGA?_GA?_GA?_GA?_GA?_GDSoKB?oKBSoKBHRQr?oPs[??????GB??o??c????BB|~~{?_O??Fo?b?M?F}?K?{?~}Bo?wFw{^?@q}?p{?BNw@F_?K~_?}??X} +?Bw?@fw?N_?ENo?~??[~?@{??p{?Fo??Fo?^?G?^_@{?_@}?BoA?Bw?N?G?N_?{?o?~?BoB?B{?F?K?Fo?[?o?^_@oB_@}?B@}?F{?KBw?No?ON_?~A@?~?B{GC@{?No +o?Fo?^B??N?@{M??{?Fo]OBo?M?~?N??o?{??????GAw?_??c????BB|~~{?_O??Fo?U??Bo@oB{Fo?}N??NMG?FMG?FNk?BNk?BNk?BFm?B?M?F?M?~?MB~?[B~@{B~ +@wB~BoB~BoBoFoB?FoA?Fpo?Frw?Br{?Br{?Br}?@p}?@o^??o~_?Rzw?Np~?N?N??????A?O?G??H????Bw}~~~?GC??Ao?D???{???{???}???}???}???~???~??? +^???^???^_??^_??N_??N_B~~o~~~o{?Fo??FoA?FoA?FoA?BoA?BoB?BoB?BoB?@oB?@oB_@oB_@oB_?oB_?oBo?oBo?oBo?OBo?OBw?O^w?ONw??Nw_?Nw_?Fwo?Fw +w?Bw[?Bo]?BoNoB?Bo????A?W?K??E????AO~^~~?GC??@k?F??F???MBo??Bo{???{^?G?NFoA?Br{?o?|~?M?N^oB_B~[?{?zv?N?MxoDwBm[B^?zF?roM`o[]Bg[F +F_wFBo{M@x{NB_]]@owF~?KM@~oBB_^w?OwF}?CM@~??B_^o??wF???M@o??B_[???w???A?g?G??E????AO~^~~?GC??@k?D?B~~o~~~o~~~o{F???F???F???F???F +???F???F???F???F???F??B~~oF~~oF~~oCF???F???F???F???F???F???F???F??B~~o~~~o~~~o{?????_F?A????????cNv~~oA@???Z?@k?~~~~@~~~~o^~~~{F +?F????@o????[????F????@o????[????F????@o????[????F????@o????[????F????@o????[????F????@o????[????F????@o????[????F????@o????[??? +????_L?A??@_????cNv~~oA@???Z?@W?oN{?}N{F~N{N^g?^F_?]B_?[Bo?{Bo?{@o?w@o?w@o?w@o?w@o?w~~{~~~{~~~{~@o?w@o?w@o?w@o?w@o?w@o?w@o?w@o?w +@o?w@o?w@o?w?????GA_?_??W????HB|~~{?_O??Eo?S?N~~B~~~B~~~Bo[???[???[???[???[???[???[???[???[???[??N~~?^~~?^~~?O[???[???[???[???[? +??[???[???[???[???[???[???????A?s?G??B????AO~^~~?GC??@k?E_A?~o[?wN{^?Nb~^oB{?No?N_Bo?Pw?w?CM?K?@BoB??o{?o?KF?G?B@oA??o[?_?KF?G?B +@oA??o[?_?KF?G?B@oA??o[?_?KF?G?B@oA??o{?o?KN?K?BF_B_?Vw?}?F{~~{?}N|~?KB~Bo????A?s?G??E????AO~^~~?GC??@k?D_?F?B_N?B_^?B_~?B`~?Bb~ +?Bbv?Bbf?Rbf?rbF@raFBr_FFr_FNb_F^B_F}B_F{BcFwBcFoBkFoB{F_B{F?B{F?BwF?BoF?B_F?B_F?B_F?B_?????_M_A???W????]Nv~~oA@???[?@o????M???? +B_????{????N??A?Bo??_@{??K?]??B?F_??W@w??E?]???oF_??KBo??@_{???WN???BBo???o{???EN???@f_??N|~??B~^oA??V_?_?Dw?K??}?B??N??w?Bo?N?? +{?B}?~{N~oN~Bo???GAO?o??K????Fb|~~{?_O??F??e?N?~?N?~{B{?{B{?NoBw?O?~?N_@?B{?z?C?]oBk?O@z?NW@_Fk?|_E?]OBr?G@x?NK?_Fe?{OA?{WBp?GBp +oN_?oNF?}?B?{E@w?KBoWF_?oM?p]?B?wBDw?KB_EVo?wM?X^?@_w?s{?EB_BRo?WK?FN?@_o?[{?EB??rw?]K?BN_B~p}F~?~~Bw^{@????_A_A???o????]Nv~~oA@ +???[?@W??Nwo_N{zoGK^w?C]{??[[??[[??[]??[]???}???}?C?{@{?{N{?wN{B_N{F?NoF?K?F?G?F???F???F@_?F@_?F@g?FBg?BFk?@^~?@~v{?op{?????_M_A +??@w????]Nv~~oA@???[?@s?~o~wF~{N}@~o?M?B{?B??N??w?B_?U??w?Co?M?@K?B_?P_?w?CW?K?BB?B??oo?o?KE?K?B@_B??oK?o?[B?GAF?OA?poC?_K[??GBf +??A?Zo???F{????~????Fo???@{????N????B_????W??????GBg?_??E????Fb|~~{?_O??F??^?MB~{V~_~~D~?Bz?@o?{o?C?^K???F`_??@w[???}B_??N?W??Bo +BO??w?[??M?F??B??o??o?[??K?F??B_Bo??[?{??B?N???WFo??B@w???w}???FN????vo?_?Dw?K?@}?Bo?^_?~o^}B~{F~o{???A?}?C????????o~^~~?GC??Ac? +Do???E???F???F???B_??B_??@o??@o???w???w???[?_?[?_?K?o?C?o?C?w???w???[???[???M???M???F???F???B_??B_??@o??@oA??oA??oB??OB_?OB_??@o +??@o???w???w???[???[???M???M???F???F????????_J?@??@_????eNz~~oA@???O??s?o?~oFv_[N@o]F?w?Bo?F??[?@o?F??[W@poMB~wF}?C???A?k?C??E?? +??AW~n~~?GC??@??BOB?B~?^]@o[E@w[B`z~B~{B@o?F??[?@p_FF?wN~?^w?O???GBg?_??Q????Hb}~~{?_O??C??[?Bp}}?@}~~w@|}NN?~N@`oNroGKB]}B@?vb_ +oOCwwK?@MMB??Rrow?C{{M?KFFB_B@po{?w]]F?EFfb_@owww?K???A?_?C??C_???AW~n~~?GC??@??B?B?@~?N]?wwBb_M]?Bw?~_F{?]?@oGF@o]F@{[B~oF{???? +?G?w?O??W????NB|~~{?_O??Do?I?E??[?@o?F??[?@w?B_?~oN~?ro?F??[?@o?F_?M??w?B_AN?W[@poFf?F{?N_????A?}?C??C_???AW~n~~?GC??@??C_@{o?D} +w?Few?Fvw?@rw?@r{?@w{??w[??w[??w]??{]?K[M?K{N?Kwn_Nw~oFo{o????A?C?S??B????@g}~~~?GC??BG?KO???????o??????_?K??????K?B??????B?@o?? +????w?[??????M?F??????Bo@o??????{?[??????N_F??????BwBo??????z?{??????MoN??????BeBo??????x_{??????MK^??????BBFo????A?oP{?????_KC^ +?????KB?Fo????B?o@{?????WK?~?????EA?No?????o_B{?????KG?~?????@a?No?????W_F{?????B?@~??????o?^o?????E?F{?????@_@~??????K?~o???G?B +?N{???A?~~~~????oN~~~o???K???Nw???B_??B}????W???~_C??B???No@???o??B{?O??E???~?C??@_??No@???K??B{?o??B???}?K???w??N_B???F??Bw?oA? +Bo??}?[?o?{??NoF?N?^??B}BoB}~oBo~~{@~~{?{N~~?O???G?O@O??u????GBz~~{?_O??K_?r?Nz~FoBo~o^~~o{?{N{BwN{??K@~?K@~??A?FoB?No????{?_B{? +???F?G?~?????oA?^o??_?K?_F{??G?@??@~??B?????^o??o????F{??E????B~??@_????~_??K????Nw??B????B}???W????~_??E????Nw@??o???B{?O?M???? +~?C?@_???No@??K???B{?o?B????~?M??O???N_B_?C???Bw?{??????}?N??????N_FW?????Bo@u??????{?[o?????N?FM?????Bo@p_?????{?{K?????M?NB??? +??B_BoW?????w?{E?????M?N?o????B_FoK?????oH{@?????KA^?O????B?vo??????oN{??????K@~??????A?No??????_B{??????G?^??????A?Fo????????{? +???????N????????@o????????[?????????_@?D???o????_Nn~~oA@???p?BW??Nz~F}B~NoB}~p~_~r{?wN{B_N{B?GB~?O@~??A?~o??N_???N{??@w???B}?O?N +????~_C??o???No@_?C???B{?{?@????}?N_?????N_FW?????Bo@r??????{?{W?????N?NF?????B_Fow?????w@{F?????K?~?o????B?noC?????_N{??????GB~ +????????~o???????N{???????B}?O??????~_C??????Nw@??????B~?o????A?}oK?????_NcF?????KBo@o????@_{?{?????[N?N?????Bb_Fo?????[w@{????? +BK?~??????Z?No?????B_F{???A??w@~????o?C?~o???K???N{???@_??B}????K???~_C??B_??No@???{??B{?o??No??~?[?_B{??NwF?N@~??B~FoB~~oF_~~{@ +~~{@wN~~?O????A???K??E?????o~^~~?GC??@{?F???wB{??Nr~??B}}?M?N}?Bo?~?@}?Fo?~o?w?N}?M?B~_@_?~{?W?N~?A?B~w?_?|}?G?N~n~~B~z~~o|~???? +^o???B{????~????No???B{????}????^_???vw?_?L{?G?B~?B??^_@w?Fo?~_?w?|~?KB~Fo??~_K?????_K?B???o????KNv~~oA@???^?AO??Fr_NoBo^~b~?N@~ +Fno@?F{F{?C?~_No?oB}?]?B?Nw?w?K?^_B_?o@}?M?B?B{?{?K?NoBo?o?^?N?@?@{?{?C?FoBo?O?^?N?@_@{?}?E?FoBw?W?N?N_?_?{?}?A?BoBw?G?N?N_?o?{? +~?B?BoB{?K?F?Fo?o?[?^?B?@o@{?K?F?Fo?w?[?^_Bo@o@~?N~~{N{N~~~o~o{?????_H_@???W????SNz~~oA@???R??w?{?Nw@poMB`oEE?[w@r_FM?[w@r_FM?[w +@r_FM?WWB`o[Bn_F{?K???A?e?C??C_???@O~n~~?GC??@K?Ao@_?F_?^o@v?F??[?@o?F??[?@o?F??[?@o?F??[?@o?F??~o^~@o???GAW?O??K????DB}~~{?_O?? +Co?K?N_@~_MF@o[N@owFB_?M??w?@w?Fo?N_?^??]?o{B@wM~o^~@~{F????_H_@???W????SNz~~oA@???R??w?}?N}Bow]B`oMF??[?@w?B~?F{?[?F_?{?B_FM?[w +@roNFnwN}?K???A?e?C??@_???@O~n~~?GC??@K?B_Bo?~oNF_wNF?[[@r_FM?[w@roMNnw~~Bk_M??[?@oMB_wN~_N{?O???G?g?_??K????NB|~~{?_O??Do?Q??B~ +?MB~?~B@?~a??vo??rw??@w??@w???{???{???{???{???{???{???{??@w??@w??Bw??Fo??n_??~B@?}B~?O@~??????A?}?C??C_???Bo~^~~?GC??@[?C?B~^~|~ +Bo?N??{?Bo?N??{?Bo?N?N{~~r{N??{?Bo?N??{?Bo?N??{?BoB~~~~~????_I?A??Ag????ANn~~oA@??@H?@???M??w?Bo?N??[?@w?F_?N??{?@o?F_?]??w?Bo?N +_?]?@w?Bo?N??{?@w?F_?^??{?@o?F_?]??w?Bo?N??]?@w?B_?N??{?@o?N??{?B_?]?@w?N??{?B_?]?@w?F??{?Bo?M?@w?F??[?Bo?M??w?F_?[?Bo?N??w?F_?] +?@o?N??{?F_?]?@o?N??{?B_?M????A?g?G??E?????G}~~~?GC??Cc?C??F??[?Bo?N??w?F_?]?Bo?N??w?F_?]?@o?N??{?B_?]?@o?F??{?B_?M?@w?F??{?Bo?M +?@w?F_?[?Bo?N?@w?F_?[?Bo?N??w?Bo?N??[?@w?F_?N??{?@o?F_?]??w?Bo?N_?]?@w?Bo?N??{?@w?F_?^??{?@o?F_?]??w?Bo?N??]?@w?B_?N??{?@o?F???? +?G?g?_??yN~~~uB|~~{?_O??HO?X????No??wF{??NBp???ww?C?FK?@??z??O?Fw?C??}?@_?N_?G?@{?B??V_?oNC~?KBoFoB?{B{?w?@w?E??]?@_?F??W?@o?F?? +]??o?F_?K?@w?B??]??w?Fo?M??{?F_?F_Bw?@{?~GCN?Kr~?oAK~oC?B@_???w????E????@_????W????F?????o????K???????A?G?C??C_???A_~~~~?GC???S? +@O?MFp{^B_????A?q?C??B????A?~n~~?GC??@??B_Bo?~oN~`~}F~{~~r~~N~{~~r~~N~{~~r~}F~w^~?~o?o???GAW?O??K????Ib|~~{?_O??GO?L?M??w?B_?M?? +w?B_?M??w?B_?N{^~p~~F}??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?M??w?B_?????GBg?_??E????Ib|~~{?_O??E_?Z??@o????[????F????Bw +????}????No@??Bk?O??z?C??KWB??BE?o??p_K??GKF??AB@o??_o[?_?CN?G?@BoB??P{?oN{^?KB~Fo@_?Bo?W??{?F??N?@o?F_?]?@{?N{@~o^~?^{F????_?_@ +??@G????mN~~~oA@???C??O?Bo{NBo???GAG?_??Q????CB~~~{?_O???_?S?N~~B~~~Bo???GAW?O??K????Kb}~~{?_O??BO?J?A??W?@_?EKEzo^{?^_?~?Fn@uKE +W?@_?A??????_G?@??@G????}Nz~~oA@???J??g?K??o?BCAloN}?V_?~_Ev?rCAK??o?LoV??@ERsxS???????????????????????????????????????????????? +;DVItoLN03 font loadœ +›75;2475s›75;3475r1;10}U000000002SK00GGœ +1;11}U000001002SK00GGœ +1;12}U000002002SK00GGœ +1;13}U000003002SK00GGœ +1;14}U000004002SK00GGœ +1;15}U000005002SK00GGœ +›10m +›789d›14m›1091`³¯°±¿À›22a²¼¶»›21a®¾¹µ¶ +›789d›1042`­ +›881d›916`·º»›21a½¸¶›15m›68a·¹º»›14m›21a´½›15m›22aâ}£|¡{~|›5aÄ +›881d›1128`¸ +›1032d›11m›1123`Óíçàê›16a×àéçèïëê›15aØãèèñ +›1090d›950`æë›1aëè›16aëä›17aÕèãâïíçâàè›14aÕêåçêããíçêå›16a÷›16aÜâçãêâã +›1090d›902`Üâ + +›1511d›1197`›30a›371k9;0;1q +!119?wo`@BF^!3~^FB@`ow!120?- +!119?!4~]]!5~]]!4~!120?- +!119?NB`_ow}!3~}wo_`BN!120?- +!80?!3_!3?!4_!30?_o{eab~^~bae{o_!30?!4_!3?!3_!81?- +!69?_oOo_]QQ]?Flw\VWGNKKN!3G^PP^o_wkCkw?_oOo_??!3_!3?__b~BB~^!3R^~BB~b__!3?!3_??_oOo_?wkCkw_o^PP^!3GNKKNGWV\wlF?] +QQ]_oOo_!70?- +!67?wGJ}CEB_wKEB@@!11?!7_?!4@BB!3EFCFLGLNGNLGL~??~]!3Q]~??~LGLNGNLGLFCF!3EBB!4@?!7_!11?@@BEKw_BEC}JGw!68?- +!66?[vau^??}B!13?wMB@@??_~{x`@BAEKGWo__!11?~??~]!3Q]~??~!11?__oWGKEAB@`x{~_??@@BMw!13?B}??^uav[!67?- +!67?^Pp~__f{_!4?_oOW!4G^[o_!3?!6~}w_!5?@BAE!3CKGKCC^OG~{}y}{~WO^CCKGK!3CEAB@!5?_w}!6~!3?_o[^!4GWOo_!4?_ +{f__~pP^!68?- +!69?F!3C~CF}k}r`_!9?@!3_b!8~!6woo_!5?{{woo_@n!3~n@_oow{{!5?_oo!6w!8~b!3_@!9?_`r}k}FC~!3CF!70?- +!73?@@Ppv|~}~|~}A!3?w}!14~^F!4BFN]!4?~!3^NNFN!3~NFNN!3^~!4?]NF!4BF^!14~}w!3?A}~|~}~|vpP@@!74?- +!77?@F^!4~@!4?BFF@!5?@B!5~o!17?o{!5~{o!17?o!5~B@!5?@FFB!4?@!4~^F@!78?- +!80?@F~~w_!11?_o{!7~}{ww!6o!3w{}!11~}{!3w!6oww{}!7~{o_!11?_w~~F@!81?- +!83?^!3~}}!5{}}!5~!5^!8N!27F!8N!5^!5~}}!5{}}!3~^!84?- +!84?~^^NNFF!3B!3@!7?!5_o!6OW!21GW!6Oo!5_!7?!3@!3BFFNN^^~!85?- +!81?{f@!3_oOWGGK!3CE!3AB!4@!45?!4@B!3AE!3CKGGWOo!3_@f{!82?- +!82?!3@!85?!3@!83?- +!256?- +!14?!3{!85[{!5[{!37[{!5[{!85[!3{!15?- +!14?!3~!85?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!10?wGG{!11G{!7G!3gw!4Wwgg!3G{!14G{GWo!3_!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!10?NGGN!6GWwggGN!3Gw[ErX|cEa}aAes\XrE^w!9GWWwgnGKF!3B!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!23?!5@~`?~lK}!7~}KKl~?`~!5AECKWo_?@BEKWo_!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!29?BMWrenHXR^RPXJkerWMF!11?@FKWo_??@BEKWo_!10?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!34?@@B!4AB@@!21?@@B!6A!3B!3A!5?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!10?wGG{!11G{!7G!3gw!4Wwgg!3G{!14G{GWo!3_!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!10?NGGN!6GWwggGN!3Gw[ErX|cEa}aAes\XrE^w!9GWWwgnGKF!3B!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!23?!5@~`?~lK}!7~}KKl~?`~!5AECKWo_?@BEKWo_!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!29?BMWrenHXR^RPXJkerWMF!11?@FKWo_??@BEKWo_!10?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!34?@@B!4AB@@!21?@@B!6A!3B!3A!5?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!10?wGG{!11G{!7G!3gw!4Wwgg!3G{!14G{GWo!3_!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!10?NGGN!6GWwggGN!3Gw[ErX|cEa}aAes\XrE^w!9GWWwgnGKF!3B!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?!3~!23?!5@~`?~lK}!7~}KKl~?`~!5AECKWo_?@BEKWo_!16?~!5?~!37?~!5?~!85?!3~!15?- +!14?B!3~!28?BMWrenHXR^RPXJkerWMF!11?@FKWo_??@BEKWo_!10?~!5?~!37?~!5?~!84?!3~B!15?- +!15?!3~_!32?@@B!4AB@@!21?@@B!6A!3B!3A!5?~!5?~!37?~!5?~!83?_!3~!16?- +!15?@!3~!83AB!5?~!37?~!5?B!83A!3~@!16?- +!16?F~~}!79AaaAyY!3QqboOOW!3Gk!7cCKGwGKC!7ck!3GWOOobq!3QYyAaa!79A}~~F!17?- +!17?F~~}!76?~@@~?~!3?ccCcqQQZHHl!3cCcclH??~??Hlcc_!3ckHHJOAuCC?c!3?~?~@@~!5?wwo_!67?}~~F!18?- +!18?B!3~_!70?}}ww~??~?~!3?cC?cuQQZHHl!6clH??~??Hl!6clHHZQQuCCcc!3?~?~??~ww{}!4~^!65?_!3~B!19?- +!19?@!3~o!69?BB??~??~?~!3?ccC?qOQZGHl!6clH??~??Hl!6clHHZOOu!4c!3?~?~??~@!3Bb||wo!64?o!3~@!20?- +!21?N~~{_!67?~~[[~??~?~!3_CC??e__rPOW!6GHXOO~OOXH!6GXPPra_a!4C!3_~?~??~]}}~~^^NF!63?{~~N!22?- +!22?@^~~w!66?@@??~wN@!4?!6@!13?_o[F[o_!13?!6@!4?@Nw~!70?w~~^B!23?- +!24?B!3~o!68O!4PR!6Qq!9AE!4CF@!5?@F!4CE!9Aq!6QR!4P!68Oo!3~B!25?- +!26?F^~}w!71Oo!5?~!37?~!5?o!71Ow}~^F!27?- +!28?B^~~w_!68?~!5?~!37?~!5?~!69?w~~^B!29?- +!30?@N~~{o!66?~!5?~!37?~!5?~!66?o{~~NB!31?- +!33?F^~}w_!63?~!5?~!37?~!5?~!63?_w}~^F!34?- +!35?@F^~}w!61?~!5?~!37?~!5?~!61?w}~^F@!36?- +!38?BN^~{w_!57?~!5?~!37?~!5?~!57?_w{~^NB!39?- +!41?@F^~}w_!54?~!5?~!37?~!5?~!54?_w}~^F@!42?- +!44?@FN~}{o!51?~!5?~!37?~!5?~!51?o{}~NF@!45?- +!48?BF^~}wo!47?~!5?~!37?~!5?~!47?ow}~^FB!49?- +!52?BN^~{wo!43?~!5?~!37?~!5?~!43?ow{~^NB!53?- +!56?BF^~}wo_!38?~!5?~!37?~!5?~!38?_ow}~^FB!57?- +!60?@FN^}{w_!34?~!5?~!37?~!5?~!34?_w{}^NF@!61?- +!64?@BFN~}{o_!29?~!5?~!37?~!5?~!29?_o{}~NFB@!65?- +!69?@BFN^}{w_!24?~!5?~!37?~!5?~!24?_w{}^NFB@!70?- +!74?@BFN^}{wo_!18?~!5?~!37?~!5?~!18?_ow{}^NFB@!75?- +!80?@BFN^}{wo_!12?~!5?~!37?~!5?~!12?_ow{}^NFB@!81?- +!86?@BFN^}{woo_!5?~!5?~!37?~!5?~!5?_oow{}^NFB@!87?- +!5?_!87?@BFN^}{wo~_!4?~!37?~!4?_~ow{}^NFB@!87?_!6?- +!6?@E{o!90?@BFNN]{{~o__!31?__o~{{]NNFB@!90?o{E@!7?- +!9?~~{!95?@@BFNN]{{woo_!15?_oow{{]NNFB@@!95?{~~!10?- +!7?_{~~^!104?@BBFNN][{wwoww{[]NNFBB@!104?^~~{_!8?- +!4?ow}~~nB!114?!5@!114?Bn~~}wo!5?- +_w}~~NB@@~}o!231?o}~@@BN~~}w_?- +!5~w_?w!3~!231?!3~w?_w!5~?- +!5~!6N!233M!6N!5~?- +!5~!6?~~BBf~]!3?~~!6B??~~BBf~]!3?~~!5?~~!3?o~~{_w]~w!10?o{MF!3BFFE??o{MF!3BFN}{?o{MFBBFFE??~~]{wo?~~??o{MF!3B +FN}{?{~rbffmM?o{MF!3BFFA?~~!6B?~~BBf~]!3?~~!6B!10?o{MF!3BFFA??o}^~w_??~~!5?~~??{~rbffmM??o{N^}w??{~rbffmM!6?!5~ +?- +!5~_!5?^^FFN^[W??^^!5ZW??^^FFN^[W??N^[!3W[NB!3?^^@FFB?^^!10?N^{w!3owWW??FN][!3W[MF@?N^{w!3o~^??^^??BFN^^??FN][!3W +[MF@?G\|xpr~N?N^{w!3owWG?^^!5ZW?^^FFN^[W??^^!4ZXW!10?N^{w!3owWGW^!4BN^[?N^[!3W[NB??[\xxpr~NW]F!4BN^[[\xxpr~N!5? +_!5~?- +@FN^^~}{{!237w{{}~^^NF@?- +œ +›1575d›1000`Ûë›24aàè›16aÚçèçïàíñ›15aÔëèèãåã›15aëä›17aÜâçãêâã +›1575d›1059`ñ +›1634d›1340`ãêæàé +›1634d›1228`Üæíçð +›1735d›1398`á›1aãí›15aóööó +›1735d›1129`ôòïæ›18aÜãìïãé +›1792d›1123`ëí›14m›16açðéêëõö›11m›47aãíîçëê›16aõøó +›1792d›1095`Ö›251aÞ +›1960d›15m›1263`.3675247 +›2035d›12m›1035`G›11a78F6E<5›1a8F›12aG;8›11aBC›1a8E4G +›2235d›12m›783`)G›10a +›2284d›12m›721`?B›1a64?›11a+›4a1›373a4@›15aý›10m›17aúùýôõýùôøö›12m›4aþ›636aL›14aC›1aBFF<5?8 +›2434d›721`@8A›10m›131aõ›12m›227aY›20a(8›15aF;BH?7›15a4?FB›14a5›1a8›15aB@A›192aF›12m›182aL›18a5›1a8›20a6BA›153aL +›2583d›15m›1247`EDC›22a=?AA›12m›22aX›22aJ;B›19a@4›162aG46G87›20a5 +›2633d›721`%_@4›108aC?E›12m›14aA8G›28aBE>WY +›2633d›11m›906`i3>7eLC`:<`5BLYYT›12a|ÃÁð +›1904d›1361`ȹ¸›14a¶ +›1960d›780`ÁµÂ¸›13m›46aö›22aö›22aö›23aö›22aö›22aö›23aö›22aö›23aö›22aö›22aö›23aö›22aö›22aö›23aö›22aö›22aö›23aö›22aö›22aö›23aö›22aö›22aö›23aö›22aö›23aö›22aö›22aö›23aö›22aö›22aö›10m›69a× +›2104d›13m›688`ÐÓÔ›328aØ× +›2104d›607`±É›104aÚÑËÊÍËÒËÓ +›2199d›12m›1222`L?8›11m›14alJH> +›2647d›607`B9›14a;4A7?AB›172aL›16a:E84G›18aFeK?›12m›108aWX›12a4A7 +›607d›11m›1123`D`=Cj +›682d›12m›520`ü›22a/B5›9a06›21aH@4AA›9aV›11m›263aJMER`›86a`F:J:›12m›108aWX›8aB9›9aG;8›10a%HEBC›1a84A›10a0C468 +›682d›687`;›11m›149aiJI›108a=F>K›108a`@GMj +›732d›12m›693`X›14a4G›13a&›263aY +›732d›563`!:8A6L›97aE4F64G<›14aLM?HGM›73aÃÉÀ¸›10aƹÇÉÀÈ +›2877d›721`ºÃ›191a¼µÆµ·È¹ÆÇ›10aË›621aßá›10aË +›2933d›721`½Â›15aµÂ›15a½ÀÀ¹»µÀ›14aºÃ›78aËÂÀõ¸â›20a¯¼¹›15aÄÆûƵÁ›15aÂÛ263a¼›16a¹ÆÆùÃÉÇ +›2933d›1030`È›14a¸Ã›497aË›15a¸¹È¹·ÈÇ›15aÇÉ· +›2990d›782`ÈÇá›15a˼½·›355aÍ›15a¯›18a³Ë›193aÈ›31aµÆ¹›14a¸Ã›1a¹Ç›16a޵ĵÆÈ›15aºÆÃÁ +›2990d›721`ºÃ›153a¼›16a½Ç›15aÁÃƹ›16aȼµÂ›16aµÂ›155aµÆ¹›15aÃÆ›16aºÃ›16aË +›3000d›1356`~ +›3046d›721`'&MH07,ßÛ +›1;479;665;2392;8!| + + +›462d›12m›656`Õ›15aËÄ›15aÁÆ¿ÊÅÃÏ›10m›908aÊ +›462d›12m›449`ÏÑÉÉ¿Î +›607d›14m›552`_VlhXYpq›10m›14a±ÓâÏ›14aË›919a¹ÆǽÃÂÇ +›607d›14m›520`R›10m›337aµÇ›14aȼ¹›15aìÆÇÈ›15aÄɶÀ½·›15aƹÀ¹µÇ¹›14aǽ·¹›15a±ÒâÐðÓå›14aÃȼ¹Æ›15aÊ +›664d›496`Ê›282aȹƵÀÀÍ›14aµÈ›14aȼ¹›15aµÉȼÃÆÝÇ›15aǽȹá›14aµÂ¸›15aÇÃÁ¹›15aú›15aȼ¹Ç¹›15a¼µ›22a¹›15a¶›1a¹¹Â +›664d›449`¼µ›22a¹›15a¶›1a¹¹Â›16aÉǹ¸›16a½Â›991aÊ +›720d›449`·½Æ·ÉÀµÈ¹¸›16aÈÛ16aµ›16a¸¹¸½·µÈ¹¸›16a¶µÂ¸›17aú›13m›16aô›10m›2aðǽȹ›16aȹÇȹÆÇó¤ÝÁ›15aÊ›339aÃÉÆ +›720d›1538`¹ÆÍ›16a»ÆµÈ¹ºÉÀ›15aºÃÆ›15aÍ +›777d›628`ÈÀ¹Á¹ÂÛ +›777d›449`¼¹ÀÄá›16a»¹Â +›833d›14m›552`_VlhXYpq›10m›162aÈÆÛ1a¸É·¹Ç›18aȼ¹›17aºÃÀÀÛ298aÈÇ›17aµÂ¸›18a¹˛17aº¹µÈÉÆ¹Ç +›833d›14m›520`R›10m›200a±ÓâÏ›16a½Â›350a˽»›15aƹì¹Á¹Â +›890d›449`·ÃÁĵƹ¸›16a˽ȼ›14a±ÒâÐä +›986d›15m›518`'›10m›805aÈ›15aìÀ¹Çå›16aºÃÆ›16a¹Ê›138aÈá›16aȼ¹›16aÄÆÃð +›986d›563`®ÉÄÄ›1aÃÆÈ›17a¼µÇ›16a¶›1a¹¹Â›17aµ¸¸¹¸›17aºÃÆ›16aʽÆÈɵÀ›15aºÃ›251a¹ÆÍ›16aºÃ +›1042d›563`»ÆµÁ›18a˽ÀÀ›17aµÈȹÁÄÈ›18aÈÛ19aÃÄ›1a¹Â›19aµ›19aìÀ¹›18a˽ȼ›19aµÁ¹›15m›18a*›14m&.-3-!,%›15m›3a+›10mh5&á›18aÀÛ1aÿ½Â» +›1099d›563`½Â›13aȼ¹›13a¸½Æ¹·ÈÃÆÍ›12aƹº¹Æ¹Â·¹¸›14aȼÆÃÉ»¼›13aȼ¹›13aÅɵÀ½ì¹Æ›12ai5)134!,t$)1%#3/18 +›1155d›901`Í›16aƹÅɽƹÁ¹Â›315aÈÇ›16a·µÂ›16aÇÄ›1a¹¹¸›18aÄÆÛ1a·¹Çǽ» +›1155d›563`ÞǽȹǛ16a˽ȼÃÉÈ›15aµÂ›259aÈ›17aºÃÆ›16aʽÆÈɵÀ›15aºÃ +›1212d›829`Í›18aÁµ¿½Â»›16aȼ¹›18a¸¹ºµÉÀÈ›424a/18ßâ›24a¢ÀÍÄ¼Ç +›1212d›563`ºÆµ·È½ÃµÀÀÍ›15a¶›439ai./5)134!,t$)1%#3 +›1268d›563`ºÆÃÁ›16aÇÉ·›143aÈ›16a˽ÀÀ›16a¶›1a¹›17a½Áµ»¹¸›17aºÆÃÁ›16aȼ¹›17aµÄÄÆÃÄƽµÈ¹›17aļ›187aÈÇá +›1268d›734`¼›18aµ›17aºÃ›829aÍǽ·µÀ›16aºÃ +›1324d›563`ö›1a¹Í½Â»›15aµÀÀ›15m›14a*›14m$5)›16a"83%›15m›4a+›10m›15aǹÅɹ·¹Ç›16a½Â›15aȼ¹›15ah5&›15aìÀ¹â +›1420d›15m›518`'›10m›22a®ÉÄÄ›1aÃÆÈ›21aºÃÆ›20a¯›17a³ÝÇ›20auLI>›80aÍ›20aȹÌÈá›22aÆÉÀ¹Çá›21aÃÆ›20a»ÆµÄ¼½·Ç›21a½ÂǹÆȽÃÂá›21aÉÄ›21aÈÛ20aȼ¹›21a¹Â¸›21aú +›1951d›801`z +›2007d›872`È›21aĵ»¹á›21aÃÆ›20aȼ¹›21a¹ÌÈ›21auLI>›23aPB=>K›23aMA:G +›1259d›844`¼µÂ½ÇÁ›13a¼µÇ›12a¶›1a¹¹Â›14aÄÆÛ142aÍ›12a˼½· +›1315d›721`3>7›23aK>IHKM>=Ý›16aÁ¹Çǵ»¹Ç›16aÁµ›356aÍ›17aȼ¹›17aÉǹÆä›23aǹ¹›17aȼ¹›17a¸¹ð +›1315d›1291`Í›16a¶›1a¹›17aÇÉÄÄƹÇǹ¸›18a¶ +›1372d›721`ǷƽÄÈÛ11aú›11aȼ¹›11ai(&499›229aÃÆ›11a·ÃÁÄÀ¹È¹Â¹ÇÇ›11aú›11aÃÆȼûõÀ½È›14aá›10aȼ¹ +›1372d›1169`ÅɵÀ½ì¹Æâ›18a¡›608aÍ +›1428d›942`ȵÆÍ›19ai5&499›410aʽ¸¹¸á›20a¶ÉÈ›20a½ÈÝÇ›19a¹ÌÈƹÁ¹ÀÍ +›1428d›721`·ÃÁÄÀ¹Á¹Â›264aÅɵÀ½ì¹Æ›19a½Ç›19aµÀÇÛ19aÄÆà +›1484d›820`¹ÀÍ›14aȼµÈ›15aȼ½Ç›14aË›143a¹Æ›15a¶›1a¹›16aƹÅɽƹ¸â +›1484d›721`ÉÂÀ½¿›289aÃÉÀ¸›15a¹Ê +›1584d›15m›675`'›10m›568aÊ›206aʽ¸¹¸›14aÈÛ14aÇÉÄÄ›1aÃÆÈ›12m›15aÂÞÜÞçÖßóæ›10m›14aÂ¹Ë +›1584d›721`|ÃÁÁµÂ¸ðÀ½Â¹›14aÅɵÀ½ì¹ÆÇ›14a¼µ›22a¹›15a¶›1a¹¹Â›16aÄÆà +›1629d›15m›1017`- +›1645d›10m›721`}~|ÀµÇ¹Æ›13aÑÐÏÏ›35aµÂ¸›15aÑÑÏÏ›13aÄƽ›376aË›14aµÇ›14aȼ¹›14a§©ÏÔ›14aµÂ¸ +›1645d›1325`ȹÆÇ›13aÞÃȼ¹Æ˽ǹ›13a¿Âà +›1702d›721`§©ÏÕßâ›29a¯¼¹›19aÉǹƛ18a·µÂ›19a·Ã›345aȽ»›18a˽ÀÀ›17a¶›1a¹›19a½Â›18aǽÁÄÀ¹Ì›18aÃÆ +›1702d›1239`ÈÆÃÀ›17a˼¹È¼¹Æ›18aÄƽ +›1758d›721`¸ÉÄÀ¹Ì›19aÁÛ1a¸¹›19aÞÄƽ›980a¼ +›1758d›1096`Ƚ»›18aÛ19a¶›1aÃȼ›19aǽ¸¹Ç›18aú›19aȼ¹›19aĵě1a¹Æßá›19aµÂ¸›20aºÆÃÁ›18a˼½· +›1815d›779`ÍÞÇß›13aȼ¹›15aĵě1a¹Æ›16a˽ÀÀ›14a¶›1a¹›16aº¹¸â +›1815d›721`ÈƵ +›1915d›15m›675`'›10m›1137aÊ›101aÈÇ›16a¼µ›22a¹ +›1915d›721`§µÇÈá›17a¶ÉÈ›18a¸¹ì½ȹÀÍ›18aÂÃÈ›17aÀ¹µÇÈá›17a·ÃÂǽ¸¹Æµ¶À¹›18aÇÄ›1a¹¹¸›19a½ÁÄÆÛ22a¹Á¹Â›98aÊ +›1971d›721`¶›1a¹¹Â›18aÁµ¸¹›16a¶›1065a¹À½ð +›1971d›976`Í›17aƹÃÆ»µÂ½Î½Â»›15aÇÃÁ¹›16a¸µÈµ›16aÇÈÆÉ·ÈÉƹǛ17aÈÛ16aƹ¸É·¹›17aȼ¹›17aÀ½¿ +›2028d›721`¼Ã›1aÛ1a¸›15aú›15aȼ¹›16a±›125aʽ»›14aÈÛ15aĵ»¹›15aºµÉÀÈâ +›2028d›994`z³›15a¼µ +›2158d›13m›607`k¨¬¦›19a[tmxsq| +›2247d›14m›639`_VlhXYpq›10m›152aÈÆÛ1a¸É·¹¸›11aȼ¹›12aºÃÀÀÛ293aÈÇ›12aµÂ¸›11a¹˛12aº¹µÈÉƹǛ12a·ÃÁð +›2247d›14m›607`R›10m›195a±ÒâЛ11a½Â›345a˽»›10aƹì¹Á¹Â +›2303d›607`ĵƹ¸›16a˽ȼ›14a±ÒâÏä +›2403d›15m›675`'›10m›23a®ÉÄÄ›1aÃÆÈ›15aºÃÆ›15a¯›18a³ÝÇ›14auLI>y›15m*›14m›57a-!,%›15m›2a+›10mw +›2714d›821`uLI>Ey›15m*›14m:›57a!,%›15m›2a+›10mw +›2790d›821`uLI>?IH›14m›134a.)- +›891d›10m›918`Èá›10a½Â›10aȹÆÁÇ›10aú›13m›10aò›10m›10aµÂ¸›13m›10aó›10m›12a·Ã›1aÃƸ½ÂµÈ¹Ç›10aÛ10aȼ¹›10aĵ»¹â›18a~½È¼¹Æ +›891d›663`}¹ì¹›11aµ›10aÄ›1aý +›948d›663`·Ã›1aÃƸ½ÂµÈ¹›14aÁµ›741a¹Ç›14aÄÀµ·¹›14a˽ȼ +›948d›946`Í›14a¶›1a¹›15aÃÁ½Èȹ¸á›14a˼¹Â›15aȼ¹›15a¸¹ì½ȽÛ14aȵ¿ +›1004d›663`ȼ¹›16aµÄÄÆÃÄƽµÈ¹›15a·ÉÆƹ›759aÈ›13m›16aï +›1004d›10m›1113`È›16aÄ›1aÃǽȽÃÂâ›22a¯¼½Ç›15aȼ¹Æ¹ºÃƹ›16a¸¹ì¹Ǜ17aÄ›1aý +›1011d›15m›1930`p +›1060d›10m›663`ÈÛ15a¶›1a¹›16aµÈ›14aÞ›13mò›14a÷›8aó›10m›13aßâ +›1067d›15m›880`p›45ap +›1144d›12m›614`¾›10m›478a›14m›89a/›60a3›15a/›140a.)-3›16a/ +›1200d›10m›663`˼¹Æ¹ +›1272d›15m›930`*›14m/›113a!)1›15m›5a+›12a#›13a*›14m›21a.)-3›16a-.›15m›3a+›10mçi›15m*›14m›21a.)-3›15a-.›15m›3a+›10mè +›1272d›14m›969`.)-3›16a/›155a/›217a/ +›1374d›10m›663`|ù·È›19aĵ½ÆÇ›18aú›19aÄ›1aý›805aÈß +›1374d›1103`ÈÇ›18aÈû¹È¼¹Æá›19a˽ȼ›18aµ›19aÆÉÀ¹›19aú›18a˽¸È¼›19aÞ¼¹½»¼ +›1430d›15m›663`*›14m$),%-›15m›3a+›10m›586a¹ÆÈÇ›23aÈÛ23aȼ¹›24aÉÇɵÀ›24aÑ›23aĽ̹ÀÇ +›1430d›823`â›46a¤º›24aÃÁ½Èȹ¸á›24aȼ¹›24aÀµÈȹƛ23aÆ¹Ê +›1487d›1009`ÈÇ›13aÁ›699aÍ›13aµ›13aÆÉÀ¹ +›1487d›663`ÞÏâÓÄÈßâ›18a¯¼¹›13aÄ›1aý›85aÉÇÈ›12a¶›1a¹›14a·µÄµ¶À¹›13aú›13a¶›1a¹½Â»›14a·Ã¹·È¹¸›14a¶ +›1543d›663`ȼµÈ›11a½Ç›10a¹½È¼¹Æ›11aÇÈƽ·ÈÀÍ›10aÊ›484aȵÀâ›16a¯¼¹›12aÊ›98aÈ›10aú +›1543d›1099`¹ÆȽ·µÀ›10aÃÆ›11aÇÈƽ·ÈÀÍ›10a¼ÃƽÎÛ193aµÆ½µÂ +›1600d›15m›663`*›14m/›113a!)1›15m›5a+›10m›15a˽ȼ›15aȼ¹›16a½Â›78a¹Â½Â»›14aéiÝ›15a½Ç›15aÉǹ¸›16a˽ȼ›15aMPHLB=>›94aÈð +›1600d›14m›702`.)-3›16a/›10m›312aȹÆÊ›620aÄƽ +›1656d›663`½Â»›19aÈÛ19aÇÄ›1a¹·½ºÍ›14m›20a36.›10m›281aÈÇá›20aù›20aÈÛ19a¶›1a¹›20aÉǹ¸›20aÛ20aÀ¹ºÈð¼µÂ¸ +›1656d›1049`ĵ½ÆÇ›19aú›19aÄ›1aý +›1713d›1113`Èð¼µÂ¸â +›1713d›663`ĵ»¹Çá›15aµÂ¸›15aù›15aÛ16aƽ»¼ +›1796d›12m›614`¾›10m›478aIHBGMLy›14m›17a:123›15m›2a+›10my›15m*›14m+!23›15m›3a+›10mw›326aËÀð +›1796d›663`uLI>L>M›15m›167a*›10m›278a|µÂ·¹À›24aµÀÀ›24a¿Âà +›1852d›1276`ÈÇ›13m›15aï›30aö›8aö›8aö›5aï›10m›13aâ +›1852d›663`¹¸»¹›16aú›14aȼ¹›16a·Ã›1aÃƸ½ÂµÈ¹Ç›14aú›15aÄ›1aý +›1859d›15m›1350`o›96aq +›1967d›10m›563`z»µ½Âá›19aȼ¹›18aÉǹƛ19a¹¹¸›20aÂÃÈ›18aË›473a¼›19auLI>;:K›80aʽ¸¹Ç›15aȼ¹›17aµÄÄÆÃÄƽµÈ¹ +›2023d›563`ÁµÂ¸Ç›16a¸½Æ¹·ÈÀÍä›22aȼ¹›16aÇÈ›445aÄÆà +›2080d›809`¼›17aµÆ¹›17a½Â›22aÿ›84aÍ›17aÁ¹µÂÇ›17aú›17aȼ¹›17a·ÃÁÁµÂ¸Ç›17au<;LM:KM›16aµÂ¸ +›2080d›563`Áµ·ÆÃÇ›16a˼½·›156aÊ›45a¹¸›16a¶ +›2130d›14m›943`} +›2136d›10m›563`u<;>G=›107aÍ›15aȼ¹›15a§›5a¯›18a³›15a¹Â›184aÈ›14a;:Kâ +›2136d›707`á›14aÃÆ›15a¶›293aʽÆÃÂÁ¹Â +›2150d›989`~ +›2251d›15m›518`'›10m›256aË›13aÇÉÄÄ›1aÃÆÈÇ›14aµÂ›14aÃÄȽõÀ›13aìÀ¹›14aÇÄ›1a¹·½ì·µÈ½Ã›14aÛ14aȼ¹›14ai,/'›13aÅɵÀð +›2251d›563`«ÆûƵÁ›13aÂà +›2307d›563`½ì¹Æâ +›2422d›15m›518`'›10m›22a«ÆûƵÁ›12aÂÛ110aʽ¸¹Ç›13aȼ¹›13ai/43043›12aÅɵÀ½ì¹Æ›13a˼½·›97aÍ›13a¶›1a¹›14aÉǹ¸›14aÈÛ13a¸½ð +›2422d›796`Ë›13aÄÆÛ632a¼›13aÁµ +›2478d›1035`È›12aìÀ¹›13aÇÄ›1a¹·½ì·µÈ½Ã›13aÞºÃÆ›12a¹ÌµÁÄÀ¹á›13aÛ204a¼ +›2478d›563`ƹ·È›13aÃÉÈÄÉÈ›13aÈÛ12aµ›13a¸½ë¹Æ¹Â›678aÈÛ13aµ›12aǷƵȷ +›2535d›563`¸½Ç¿ßá›16aÃÆ›16a¹Ê›569aȹÆá›16aÄ›1aÃÇǽ¶ÀÍ›16aµÇ›16aµ›16aÇÄ›1aÛ1aÃÀ¹¸›17a¸¹ð +›2535d›790`¹Â›17a¸½Æ¹·ÈÀÍ›16aÈÛ16aȼ¹›17a§©ÏÒ›16aÄƽ +›2591d›563`ʽ·¹â +›2706d›15m›518`'›10m›340aË›12a¹ÂÇÉƹǛ13aȼµÈ›12aµÀÀ›12aÃÉÈÄÉÈ›13aìÀ¹Ç›12aµÆ¹›13a·Æ¹µÈ¹¸›13a½Â›12aȼ¹›13aÉǹÆÝÇ +›2706d›563`¯¼¹›13aÄÆûƵÁ›12aÂà +›2762d›563`·ÉÆƹ›416aÊ›207aÍ›21ai/43043›214aá›21aȼ¹›20aÉǹ +›2762d›688`È›21a¸½Æ¹·ÈÃÆÍ›20aÞÉÂÀ¹ÇÇ›20aÛ22a¹Æƽ¸¸¹Â›20a¶›212aßä›19aºÃÆÁ¹ÆÀÍ +›2819d›563`ú›19aµ›20aÀû½·µÀ›18aµÁ¹›20a·ÃÉÀ¸›20a·µÉǹ›20aÇÉ·›678aÈ +›2819d›1248`¼›20aìÀ¹Ç›20aÈÛ19a¶›1a¹›21a·Æ¹µÈ¹¸›19a½Â›20aµ›20a¸½ë¹Æ¹Â +›2875d›738`â +›2875d›563`¸½Æ¹·ÈÃÆÍ +›2990d›15m›518`'›10m›22a|ÃÆƹ·ÈÀÍ›20aƹě1aÃÆÈÇ›20aȼ¹›21aƹÀµÈ½Ê›445aÈÇ›20aÀõ¸¹¸›20aµÈ›20aÂÃÂð +›2990d›1143`¹›19aÁµ»Â½ì·µÈ½Ã›20aú›20aºÃ +›3046d›563`Çȵ¸µÆ¸›15aǽιÇâ +›1;783;1598;2;14!| +›1;1583;1270;2;14!| +›1;1343;1270;2;14!| +›1;1050;1270;2;14!| +›1;1565;1142;2;14!| +›1;1309;1142;2;14!| +›1;1333;833;2;14!| + + +›462d›607`ʽ½½›12m›1076aÕ›14aËÄ›16aÁÆ¿ÊÅÃÏ +›462d›1539`ÏÑÉÉ¿Î +›607d›13m›607`k¨¬¥›19a[tmxsq| +›693d›10m›607`¯¼¹›16aºÃÀÀÛ44a»›14a¹Â¼µÂ·¹Á¹Â›82a¹Æ¹›15aÁµ¸¹›16aÈÛ14m›46a_VlhXYpq›10m›14aµÈ›15a±ÒâÏä +›693d›786`˽›301aÈÇ›15aË›14m›249aR +›787d›15m›675`'›10m›23a{Ãȼ›12aĵ·›22a¹¸›12aµÂ¸›12aÉÂĵ·›22a¹¸›12aºÃ›177aÍ›11aÂÛ106a¼›12a¶›1a¹›12a¼¹À¸›13a½Â›11añÆÛ1aÃȹ¸ï +›787d›898`¿›258a¿›117aÈ›12aìÀ¹Ç›12aÁµ›81aË›12a¹µ· +›843d›721`ÃÆ›14añíµÈï›15a¸½Æ¹·ÈÃÆÍ›14aÇÈÆÉ·ÈÉƹÇâ +›937d›15m›675`'›10m›504aÈÇ›15a˽ȼ›16aȼ¹›16a¯›18a³›16aÁµÌ½Á›233a¼µÆµ·È¹ÆÇá +›937d›721`«ÆûƵÁ›14a·µÂ›17a¼µÂ¸À¹›16aºÃ›470aÉÁ›15aú›15aÑÔÕ›16a· +›947d›1462`~ +›994d›721`˼½·›856aÈÇ +›994d›811`¼›15aÄ›1a¹ÆÁ½ÈÇ›15aµ··¹ÇÇ›15aÈÛ15a®½ÀʽÛ14a§¹ÊÍÝÇ›15a¢Æ¹¹¿›15aºÃ +›1087d›15m›675`'›10m›23a¯¼¹›17ai,/'›17aµÂ¸›17ai./,/'›16aÅɵÀ½ì¹ÆÇ›16aÄ›1a¹ÆÁ½È›17aÉǹƛ17aǹÀ¹·È½Ã›17aú›16a˼¹È¼¹Æ›17aȼ¹ +›1144d›721`ÄÆûƵÁÝÇ›13aÀû›15aìÀ¹›15aÞh380ß›14a½Ç›15aƹȵ½Â¹¸›14aµºÈ¹Æ›15aÄÆÛ1a·¹Çǽ»â +›1238d›15m›675`'›10m›23a«ÆûƵÁ›16a·ÃÆƹ·ÈÀÍ›17a·ÃÁÄÉȹǛ18aȼ¹›18a½Áµ»½Â»›16aµÆ¹µ›17aú›18aÇȵ¸µÆ¸›17a~ÉÆÃÄ›1a¹µÂ +›1294d›721`zÓ›15aĵě1a¹Æâ + + +›462d›1921`Ð +›607d›13m›615`ØÖÔ›2aÊÙÉØÏÔÓ +›607d›449`Ý›70a¹Ó +›704d›15m›746`É +›710d›13m›449`¦¬¦›56altm}›11m›19aÙ›6aÝ›19aß›13m›301ay~{›19ahy~{oq›18a^uvq +›710d›879`py›2aq|›18a¢u}t›19a¤ +›725d›11m›797`Õ +›780d›15m›842`H +›790d›14m›1542`} +›796d›10m›632`Í›18aÄÆûƵÁ›37aú›18aȼ¹›19a¯›17a³›19aºµÁ½ÀÍ›17a½Ç›18aÆÉ›19aÞ¯›17a³á›18a§›5a¯›14m›151a¥›10m›9a¯›19a³ßá›18a½È +›796d›449`²¼¹Â›19aµÂ›981a³›18aÃÆ›18a®›14m›18a¤ +›806d›10m›1041`~›368a~ +›810d›1588`~›185a~ +›853d›449`ÄÆÛ1a¸É·¹Ç›16aÈ›31aÛ14aÃÉÈÄÉÈ›15aìÀ¹Çâ›20aªÂ¹›16aú›15aȼ¹Ç¹›15a½Ç›14aȼ¹›12m›16aßâÜ›14aøßÚ›10m›118a¼›15aƹ·ÃƸǛ15aµÀÀ›14aȼ¹ +›853d›657`Ë›813aá›15a˼½· +›903d›14m›703`} +›909d›10m›449`ÃÉÈÄÉÈ›13aȼµÈ›11a§›5a¯›126aÈ›13aÈÛ11aȼ¹›13aȹÆÁ½ÂµÀ›11a޵¸›12aµ›12aÀÃÈ›12aÁÃƹ›12a¶›1a¹Ç½¸¹ÇÛßâ›19aªÂ›13aµ›12m›41a¿Ô +›909d›10m›775`³›12aǹ›12m›963aÒ +›923d›10m›749`~ +›959d›14m›833`} +›965d›10m›640`ȵȽÛ12aú›12a§›5a¯›477aÍÄ›1a¹›13aéh,)2›100aË›42a¹Æá›12a½È›12a½Ç›13aȼ¹ +›965d›449`½ÁÄÀ¹Á¹Â›264a³á›12aȼ½Ç›13aìÀ¹›13a¼µÇ›12aȼ¹›13aìÀ¹›13aÈ›191aÝâ›18a£Ã›31a¹Ê +›979d›879`~ +›1022d›730`¼›14a½Ç›14aú›14aÁÃÇÈ›14a½Â›447aȵ½ÂÇ›13aµÀÀ›13aȼ¹›15a½ÂÇÈÆɷȽÃÂÇ +›1022d›449`Ãȼ¹Æ›14aìÀ¹›15a˼½·›282aȹƹÇÈ›13a¶›1a¹·µÉǹ›16aȼ½Ç›14a·Ã +›1078d›519`ÍÄ›1a¹Ç¹È›13aÍ›253aÈå›13aȼ½Ç›12aìÀ¹›13a½Ç›12a½Â›13aµ›12m›444aâåàÖç›10m›102a¼ +›1078d›449`ÈÛ12aÈ›161aÃÉÆ›12a¸Ã›1a·ÉÁ¹Â›12m›329aÂÚéÞØÚúÇáÙÚã›1aÚáÙÚáç›14aÄ›10m›128a˼½· +›1129d›14m›880`} +›1135d›10m›449`½Ç›18a·ÃÁÁÛ18aÈÛ14m›18a%5%18›10m›22a§›5a¯›18a³›18aǽȹ›18a½Â›18aȼ¹›19aË›405aÍÄ›1a¹›19aú›18aéh$5)Ýâ +›1135d›1261`ÃÆÀ¸›17aµÂ¸›18a¼µÇ›19aµ›18aìÀ¹›18aÈ +›1149d›926`~ +›1191d›764`ȹƵÀ›12aºÃÆÁµÈ›12aú›13ah$5)›12aìÀ¹Ç›13aµÆ¹›13a¹ÌÄÀµ½Â¹¸›13a˽ȼ½Â›13aȼ¹›13aÄÆûƵÁ +›1191d›449`}¹Èµ½ÀÇ›12aú›13aȼ¹›13a½Â +›1248d›14m›449`R›57aoi›1ad›10má›13a˼½·›465a¹›13aÁ¹È¼Ã›1a¸›12aºÃÆ›12aÄÆÛ1a·¹Çǽ»›13ah$5)›12aìÀ¹Çá›13a¶ÉÈ +›1248d›14m›481`_Vl›10m›181a¼›12a¸¹Ç·Æ½¶›1a¹Ç›13aȼ¹›13a¸¹ìÂ½È½Ê +›1304d›449`¹¹¸›15aÃÂÀÍ›14a·Ã·¹Æ›14aȼÃǹ›14a˼Û14aµÆ¹›13aËƽȽ»›13ah$5)›13aÄÆÛ1a·¹Çǽ»›14aÄÆûƵÁÇâ›18a}¹Èµ½ÀÇ +›1361d›449`ú›11aÁÃÇÈ›11a¯›46aË›205aÊ›491aµÆ½ÃÉÇ›11a½ÇÇɹǛ11aú›12m›11aÐÑÅ×›1aâÖç›10má +›1361d›655`³›27aµÆ¹›11aìÀ¹Ç›11a¼µ›22a¹›11aµÀÇÛ10a¶›1a¹¹Â›13aÄɶÀ½Ç¼¹¸›11a½Â›11aÊ +›1371d›630`~ +›1417d›449`ȼ¹›16a¹ËÇÀ¹Èȹƛ14aú›15aȼ¹›15a¯›380aá›15aÓá›14aÔá›15aÕá›14aÖèâ +›1417d›926`³›15a°Ç¹ÆÇÝ›15a¢ÆÃÉÄ›15açÒ +›1427d›900`~ +›1532d›15m›880`É +›1538d›13m›449`¦¬§›56ae{q¡uq¢uxs›11m›17aÙ›6aÝ›20aß›13m›18ad~}z~} +›1553d›11m›931`Õ +›1618d›14m›1128`} +›1624d›10m›449`{¹ºÃƹ›14aÍ›359aø¹ÆÇ›14a§›5a¯›17a³›14a¼µÇ›14aËÆÃÉ»¼›121aÃÉá›13a½È›13a½Ç›14a¹·¹ÇǵÆÍ +›1624d›613`ÃÉ›14a·µÂ›14aǹ¹›14a˼µÈ›13aË›499aÈ›13aºÃÆ›13aÍ +›1638d›1174`~ +›1681d›449`ÈÛ21aÄÆÛ1a·¹ÇÇ›22aȼ½Ç›20ah$5)›507aÃÉ›21aǼÃÉÀ¸›21aÉǹ›14m›22aR›78a_R^›10m›21aÈà +›1681d›887`ìÀ¹â›38azÇ›22aµ›20aìÆÇÈ›21aÇȵ»¹á›22aÍ›14m›335a_Vlh +›1737d›10m›828`ȵȽÛ17aú›17aÍ›258aÈ›18aÛ17aµ›18a»ÆµÄ¼½·Ç›17aȹÆÁ½ÂµÀá›16aƵȼ¹Æ +›1737d›449`ÄÆÛ1a¸É·¹›19aµ›17aƹÄƹǹ›213aÃÉÆ›17a¸Ã›1a·ÉÁ¹Â +›1794d›593`µÇȹ›21aĵě1a¹Æ›21aɹ·¹ÇǵƽÀÍå›24aȼ¹›14m›21aR›78a_R^›10m›22a°Ç¹ÆÝÇ›20a¢É½¸¹›21aç×è›20aµÂ¸›22aȼ¹ +›1794d›449`ȼµÂ›21aË›14m›647a_Vlh +›1844d›569`} +›1850d›10m›449`ÀÛ1a·µÀ›15a§›5a¯›17a³›16a°Ç¹ÆÝÇ›14a¢É½¸¹›16açЛ250aË›14aÈÛ15aÉǹ›15aȼ½Ç›15aÄÆûƵÁâ +›1850d›995`è›15a¸¹Ç·Æ½¶›1a¹›16a¼Ã +›1864d›615`~ +›1965d›15m›904`É +›1971d›13m›449`¦¬¨›56a[ywwu}}uxs›11m›18aÙ›6aÝ›19aß›13m›320amz›2aq{ +›1971d›1037`d~}z~}›19a}y›18ae +›1986d›11m›955`Õ +›2057d›10m›505`Ë›42a¹Æá›23aȼ¹›22aȽÁ¹›22a˽ÀÀ›21a·ÃÁ¹›22aÞÇÛ1aÃÂá›23aÍ›384aÃÉ›22aµÆ¹›22aƹµ¸Í›22aÈà +›2057d›449`£Ã›31a¹Ê›652aÃÉ›22a¼ÃÄ›1a¹Ûß›42a˼¹Â›22aÍ +›2113d›634`ÃÉÆ›13a¸Ã›1a·ÉÁ¹Â›270aË›12a½È›13a½Ç›12a¹·¹ÇǵÆÍ›13aÈÛ13aÄÆÛ1a·¹ÇÇ›13aȼ¹›13ah$5)›13aìÀ¹ +›2113d›449`·ÃÁÁ½È›12aÍ›254aÈ›13aÈÛ13aĵě1a¹Æå›14aÂà +›2154d›15m›1823`I +›2170d›10m›449`˽ȼ›16aȼ¹›16a·ÃÁÁµÂ¸›16a$5),.TW›15a˼½·›135aµÈ¹Ç›15aȼ¹›14m›48a_VlhXYpq›10m›15aÄÆûƵÁ›80aÃÆ +›2170d›1114`¼›16aµ·È½Ê›14m›170aR›10m›386aâ›22a¡ +›2220d›14m›1499`} +›2226d›10m›449`¹ÌµÁÄÀ¹á›14aÈÛ14aÄÆÛ1a·¹ÇÇ›14aȼ¹›14aìÀ¹›15aQQQh$5)á›12aƹÇÉÀȽ»›14aºÆÃÁ›13a§›5a¯›18a³½Â»›13aQQQh3%7›49aÃÉ +›2226d›1847`á›13aÍ +›2240d›1545`~ +›2283d›449`Ë›117aÍÄ›1a¹ä +›2283d›481`ÃÉÀ¸›15aÈ +›2358d›15m›614`J›288aK +›2374d›12m›449`ºcbi»¶›10m›42a$5),.TWyQQQ +›2465d›14m›481`_VlhXYpq›10m›19aƹµ¸Ç›20aȼ¹›20ah$5)›19aìÀ¹á›21a¸¹È¹ÆÁ½Â¹Ç›19a˼½·›281a¼µÆµ·È¹ÆÇ›19aú +›2465d›14m›449`R›10m›941a¼›20a½Â¸½Ê½¸ÉµÀ›19a· +›2521d›511`¼›13aºÃ›919aȵ½Â½Â»›12aȼ¹›13a¹·¹ÇǵÆÍ +›2521d›449`¹µ·›98aÈ›12aµÆ¹›13aÉǹ¸›13aȼ¹Æ¹½Â›13aµÂ¸›13aËƽȹǛ12aµÂ›13aÃÉÈÄÉÈ›12aìÀ¹›13a·Ã +›2578d›793`ËÂÀõ¸›10aȼ¹›12aƵÇȹƛ11aĵÈȹÆÂÇ›11a·ÃÆƹÇÄ›1aø½Â»›11aÈÛ11a¹µ·›55a¼µÆµ·È¹Æ +›2578d›449`½ÂÇÈÆɷȽÃÂÇ›11aÈÛ11a¸Ã›930a¼›12a· +›2634d›486`ÈÛ12aȼ¹›13a§©ÏÒ›13aÄƽ›1001aÍÄ›1a¹Ç¹È +›2634d›449`½Â›329aȹÆâ›18a¤È›13aȼ¹Â›13aµÄÄ›1a¹Â¸Ç›14aȼ¹›13a¹·¹ÇǵÆÍ›13a½ÂÇÈÆɷȽÃÂÇ›12aÈÛ12aÈ +›2691d›449`Í›256aÈ›16aÉǽ»›15aȼ¹›15a¸Ã›220a¼µÆµ·È¹ÆÇâ +›2691d›472`ÃÉÆ›15a¸Ã›1a·ÉÁ¹Â›277aËÂÀõ¸¹¸›15a· +›2756d›14m›501`Ý +›2767d›15m›1059`S +›2772d›11m›752`´›12a²¥¦¥²³›11a­¯³´¬¹›11a´¯›11au›3a{›15a~Å›10a³©®£¥›11a´¨¡´›11a©³›11a´¨¥›11a°²¯§²¡­›11a­¯³´›11a£¯­­¯®¬¹›12aµ³¥¤ +›2772d›519`{¨©³›10a¤¯›1a£µ­¥® +›2783d›1098`r +›2818d›449`¡´›16a´¨¥›15a¡µ´¨¯²Â³›16a³©´¥È›16a¨¯›26a¥¶›148a¹›16a¢›1a¥›15a¡³³µ­¥¤›16a´¨¡´›16a´¨©³›15a©®£¬µ¤¥³›16a{›15m›154aW›11m›8a{›15a~›14a¡³ +›2818d›843`·›35a¥²Å›15a©´›15a­¡›600a~›15a¡®¤›16az›15m›16aV +›2826d›11m›1636`r +›2829d›1845`r +›2863d›476`¥¬¬ +›2863d›449`· +›2893d›14m›501`Þ +›2909d›11m›519`{¨¥›16a£¯­­¡®¤›17a©³›15m›15afgh›13m›177aJ›11m›14a¢›1a¥£¡µ³¥Å›17a©¦›16a©´›15a·›170an~Ç|vz›15a£¯­­¡®¤›17a¬©®¥ +›2909d›13m›902`$3(1-*,G›11m›296a¥²¥Å›16a´¨¥›17a| +›2955d›449`©®›290a¯µ¬¤›10a¢›1a¥›11aµ®¡¢¬¥›11a´¯›11a¤©³´©®§µ©³¨›11a¢›1a¥´›26a¥¥®›10a´¨©³›11a¡®¤›11a´¨¥›13m›130a$2›11m›8a£¯­­¡®¤ +›2955d›480`´¥²°²¥´¥²›11aÃputÄ›10a·›542a·›13m›273a$3(1-3 +›2984d›14m›501`ß +›3000d›11m›789`´Å›14a´¨¥›13a°²¯­°´›14a¦²¯­›13a|›263a·®›13a¡³›15m›13ajdceki +›3000d›11m›519`t®›13a´¨©³›12a¤¯›1a£µ­¥®›358an~Ç|vz›12a©³›13a³¨¯ +›3030d›14m›501`à +›3046d›11m›663`¢›1a¯¬›14aË›13mY›11m›160a´³›14a­¡®¤¡´¯²¹›14a·¨©´¥³°¡£¥›13aﮥ›14a¯²›13a­¯²¥›13a³°¡£¥³›13a¯²›13a´¡¢³Ä +›3046d›519`{¨¥›12a³¹­›96a›12a²¥°²¥³¥® +›1;449;2727;2;598!| + + +›462d›10m›607`Ñ›12m›1245aÒÇÐËÈÊíð +›462d›1300`ï›45aÂËÇÊÅ›16aÉËÎÛ14aÓÇÐÆ›15a +›607d›10m›929`È›13aÃÉÈÄÉÈ›14aìÀ¹›14a¼µÇ›14aȼ¹›14aìÀ¹›14a¹ÌȹÂǽÛ14ah,.Wá›13aµÂ¸›14a·µÂ›15a¶›1a¹›14aÅɹɹ¸ +›607d›678`¯¼¹›14aƹÇÉÀȵ +›664d›607`ºÃÆ›19aÄƽ›204aÍ›19a§©ÏÒ›19aÀµÇ¹Æ›19aÄƽ›232aÍ›20aÂÃÆÁµÀ›12m›47a¿ÔõÒÉÏ›10m›23a·ÃÁð +›664d›761`Ƚ»›19aÈÛ19aµÂ›360aȹƛ19aÅɹɹ›20a¶›12m›201aÒ +›720d›10m›839`Ë›42a¹Æá›19a¶›1a¹·µÉǹ›21a½È›19a·Ã›200aÍ›19aÞÀûߛ18a¹Ç·µÄ›1a¹›21aǹÅɹ·¹Çá›21aµÂ¸ +›720d›607`ÁµÂ¸Çâ›34a£Ã›31a¹Ê›359aȵ½ÂÇ›19aÁµÂ +›777d›607`µÀÇÛ16aȵ¿›347aȹƛ16aºÃÆÁµÈȽ»á›14a½È›16aÁ›219aȹ¸›16a˽ȼ›16aµ›16a›61a¶›1a¹Æ +›777d›764`¹Ç›15a·µÆ¹›17aú›16aµÀÀ›15aÄƽ›395aÉÇÈ›16a¶›1a¹›17aÄƽ›246aÉÁ +›833d›1233`È›15a·ÃÁÁµÂ¸â›22a¯¼¹›16aºÉÀÀ›16a¸¹Èµ½ÀÇ›15aÞºÃÆ›15aȼÃǹ›16a˼à +›833d›607`ú›16aÇÄ›1a¹·½µÀ›16aÅɵÀ½ì¹ÆÇ›15aºÃÆ›15aȼ¹›17aÄƽ +›889d›1428`¹Â›17a½Â›18azÄÄ›1a¹Â¸½Ì›20azâ›28a¯¼¹›19ah,.W›17aìÀ¹ +›889d›607`˽Ǽ›18aÈÛ18aǹț17aÉÄ›19a¹˛19aÀµÇ¹Æ›17aÅɹɹÇß›19aµÆ¹›18a»½Ê +›946d›1238`¼›18aµÆ¹›18aÄ›1a¹·ÉÀ½µÆ›18aÈÛ18aȼ¹›18a§©ÏÒá›18aµÂ¸›18a˽ÀÀ›17a·µÉǹ +›946d›607`½Ç›18aºÉÀÀ›17aú›18a¹Ç·µÄ›1a¹›19aǹÅɹ·¹Ç›19a˼½· +›1002d›836`Ê›358aÍ›17aÃȼ¹Æ›18aºÃÆÁ›17aú›17aÄƽ›357a¹›18a·µÆ¹ +›1002d›607`µ¶ÇÃÀÉȹ›17a¼µ›22aÛ1a·›18a½º›17aĵÇǹ¸›18aÈÛ18aµÂ›406aȹÆå›19aȼ¹Æ¹ºÃƹá›17aȵ¿ +›1059d›1062`Ƚ»›13aÈÛ13aµÂ›14aÃƸ½ÂµÆÍ›13aÀ½Â¹›13aÄƽ›171a¹Â›14a380%½Â»›13a½È›13aÈà +›1059d›607`ÂÃÈ›14aÈÛ13aÅɹɹ›15a½È›13aºÃÆ›13aÄƽ›553aȹƛ14aó›13a¹Ê +›1115d›607`µ›15a±}°›15a½Ç›14m›15a-.3›10m›19aƹ·ÃÁÁ¹Â¸¹¸Û +›1245d›12m›868`©~¤|›16a©}z›10m›17ah,.W›12m›17ae~¢z +›1245d›607`°¹²¹°›52am§~¤ +›1334d›10m›636`Û16aǽÁÄÀ½ºÍ›15aȼ¹›16aȵǿ›15aú›16aÅɹɹ½Â»›16aȼ¹›16ah,.W›240aȽ»á›15m›15a*›14m2)3%-!,%›15m›2a+›10m›16aÄÆÃð +›1334d›607`¯›819aìÀ¹›16aºÃÆ›16aÄƽ +›1374d›15m›1849`L +›1390d›10m›607`ʽ¸¹Ç›18aȼ¹›18a3%701).3›17a·ÃÁÁµÂ¸å›18aȼ½Ç›17a½Ç›18aµ·ÈɵÀÀÍ›16aµ›12m›18aÂÁÈ›10m›97a¶›1aÃÀ›37a˼½·›101aÍ +›1390d›1708`ÇÍÁ›188a¼›17aÁµ +›1447d›607`¶›1a¹›14aµ¶¶Æ¹Ê½µÈ¹¸›13aÈÛ12a½ÈÇ›12aìÆÇÈ›13aºÃÉÆ›13aÀ¹ÈȹÆÇá›12a3%70â›19a²¼¹Â›13a¹Ì¹·Éȹ¸›14aµÇ›13aµ›12m›13aÂÁÈ›10m›13a·ÃÁð +›1503d›607`ÁµÂ¸á›17a½È›15a½Â›22aÿ›602a¼›16aÅɹɹǛ18aÍ›306aȽ» +›1503d›831`Ê›45a¹Ç›15aµ›17a·ÃÁÁµÂ¸›16aÄÆÛ1a·¹¸Éƹ›17a˼½·›213aÃÉÆ›15aìÀ¹›17aºÃÆ›16aÄƽ +›1560d›1197`ȹÆâ +›1560d›607`Û15aȼ¹›16aµÄÄÆÃÄƽµÈ¹›14a§©ÏÒ›15aÄƽ +›1652d›12m›1299`k¥©z +›1731d›10m›721`¨ÃÇÈ›24aú›24aȼ¹›25aÂÃÆÁµÀ›23a01).3›24a·ÃÁÁµÂ¸›25aÅɵÀ½ì¹ÆÇ›24aÞ›14m›19a'›10m›28ai$%,%3%á +›1731d›14m›1740`% +›1787d›10m›721`i#/0)%2l›14m-›10má›14m›13a%3#›10m›95aÍ›15a¶›1a¹›16aÉǹ¸›16a˽ȼ›14aȼ¹›15a3%701).3›14a·ÃÁÁµÂ¸â +›1787d›1025`ß›14aÁµ +›1866d›721`¡›392aÈ›20aQQQh,.W›561aȽ» +›1866d›747`ÃÆ›19a¹ÌµÁÄÀ¹á›20aÈÛ19aÄƽ›205aá›19a¸¹À¹È½Â»›19aȼ¹›20aìÀ¹›20aµºÈ¹Æ›19aÄƽ +›1922d›721`ȼƹ¹›14a·ÃĽ¹Çá›14aµÂ¸›15aǹ¸½Â»›15aÍ›647aÍÄ›1a¹ä +›1922d›1257`ÃÉ›14aµ›14aÁ¹Çǵ»¹›14aÉÄ›1aÛ15a·ÃÁÄÀ¹È½ÃÂá›13aÈ +›2023d›12m›721`ºcbi»¶›10m›811alW +›2023d›908`3%701).3i./3)&8›22aQQQi$%,%3%i#/0)%2 +›2176d›13m›1294`ĹØÔº¼Üß +›2176d›607`Þ›69a´ÔÏÓÍ›24aÒÔÖË›23aÚÏØΛ23a´ +›2281d›10m›607`¯¼¹›18a$5),.TW›17a·ÃÁÁµÂ¸›18aÂÃÆÁµÀÀÍ›17aÄÆÛ1a·¹ÇǹǛ18aȼ¹›18a˼ÃÀ¹›18aú›17aȼ¹›18ah$5)›17aìÀ¹›18aµÂ¸ +›2337d›1140`ȹÀÀ½»½›550a¹Ç›11aȼ¹›12aÇȵ¸µÆ¸ +›2337d›607`ÈƵÂÇÀµÈ¹Ç›10a½È›11aµÀÀ›11aÈÛ11aµ›11aºÃÆÁ›11a½Â›111a¶À¹›10aÈÛ11aȼ¹›12a§©ÏÒâ›18a¤È›12aµÀÇÛ10aÁµ¿ +›2387d›14m›619`} +›2393d›10m›607`§›5a¯›18a³›13aµÇÇÉÁÄȽÃÂÇá›12aȼµÈ›12a½Çá›13aȼµÈ›12aȼ¹›13aȹÌÈÝÇ›12m›287aç›10m›13a½Ç›13aÀÛ1a·µÈ¹¸›12a¹Ìµ·ÈÀÍ +›2393d›12m›1455`åÚÛÚåÚáØÚ›14aã›1aâÞá +›2407d›10m›665`~ +›2450d›753`¼›22a¸Ã›318a¼›21aµ·ÆÃÇÇ›20aºÆÃÁ›21aȼ¹›21aÈÃÄ›21aÀ¹ºÈð¼µÂ¸›21a·Ãƹƛ21aú›20aȼ¹ +›2450d›607`ù›21a½Â·›93aË›20aµÂ¸›22aù›21a½Â· +›2506d›808`Ë›42a¹Æá›13aÅɵÀ½ì¹ÆÇ›13aÈÛ14aȼ¹›14a$5),.TW›592aÈÆÃÀ +›2506d›607`ĵě1a¹Æâ›20a£Ã›31a¹Ê›568a·ÃÁÁµÂ¸›14aÄ›1a¹ÆÁ½È›14a¹ÌÄÀ½·½È›13a·Ã +›2563d›629`Ê›141a¼›14aĵ»¹›14aǼµÀÀ›14a¶›1a¹›15aÄƽ›316aË›14aÁµÂ›122a˽»›12aĵ»¹Ç›14aµÆ¹›14aÈà +›2563d›607`Û22a¹Æ›14a˼½·›390aȹ¸›14aìÆÇÈá›14aµÂ¸›14a¼Ã›131aÍ›14aºÃÀÀà +›2619d›751`ȹ¸â›26a¤È›17aµÀÇÛ16aµÀÀÛ493aÈ›16aƹº¹Æ¹Â·¹›18aÄ›1aý›180a¹Â +›2619d›607`¶›1a¹›18aÄƽ›316aËÇ›15aǹÀ¹·È½Ã›17aú›17aµ›17a¸½ë¹Æ¹Â›312aÈá›17aµÂ¸›17a¹Ê +›2676d›607`Ä›1a¹ÆÁ½ÈÇ›13aȼ¹›13aĵě1a¹Æ›14aÈÛ12a¶›1a¹›14añÈÉƹ¸›13aÛ13a½ÈÇ›12aǽ¸¹ïá›13a½Â›433aȵȽÃÂâ +›2676d›1537`ÈÛ12aȼ¹›13aÀµÂ¸Ç·µÄ›1a¹›14aÃƽ¹Â +›2734d›859`˽»›17aǹ·È½ÃÂÇ›17aµÂ¸›19azÄÄ›1a¹Â¸½Ì›20a{›18a»½Ê›384a¼›18aú›18aȼ¹ +›2734d›678`¯¼¹›18aºÃÀÀÛ695a¹›18aºÉÀÀ›18a¸¹Èµ½ÀÇ›17aú›18a¹µ· +›2790d›607`ÅɵÀ½ì¹ÆÇ›14a˼½·›324aÍ›15aȼ¹›14a$5),.TW›14a·ÃÁÁµÂ¸å›14aȼ¹Ç¹›15aÅɵÀ½ì¹ÆÇ›14aµÆ¹ +›2790d›890`¼›15aµÆ¹›14aµ··¹Äȹ¸›15a¶ +›2847d›748`ËÇä +›2847d›607`µÇ›15aºÃÀÀà +›2961d›15m›675`'›10m›23ai23!13).'t0!'% +›3030d›14m›659`á +›3046d›11m›698`¯²›13a¦µ²´¨¥²›13a©®¦¯²­¡´©¯®›13a²¥§¡²¤©®§›14m›14aÃÂÄ›11m›79a¢›1a¯¬³Å›13a³¥¥›14aÉÀ›39a¨¡°´¥²›14a½Ê +›3046d›676`s›646a³¹­›182aÅ›13a£ +›1;607;3001;2;598!| + + +›462d›12m›633`çåâßßÞáÜ›13aêÝÞØ›69aÖÜÚæ›14a›299açæ›10m›501aÒ +›462d›12m›449`ïôî›45aÁâá›248aÝ›15aÌ›131aÒÇçâÈÊíð›15aÌåÞá +›607d›15m›518`'›10m›22ai.4-"%1t/&t0!'%2 +›702d›15m›518`'›10m›22ai3/0t-!1'). +›796d›15m›518`'›10m›22ai,%&3t-!1'). +›891d›15m›518`'›10m›22ai/1)%.3!3)/. +›986d›15m›518`'›10m›22aic./d,/' +›1080d›15m›518`'›10m›22aic./d5%1"/2% +›1175d›15m›518`'›10m›22ai/43043 +›1270d›15m›518`'›10m›22ai(&499 +›1364d›15m›518`'›10m›22ai5&499 +›1459d›15m›518`'›10m›22ai$%5)#%t380% +›1554d›15m›518`'›10m›22ai01).3t-/$% +›1648d›15m›518`'›10m›477at.4-"%12 +›1648d›563`ic./d$40,%7t"8t0!'% +›1743d›15m›518`'›10m›22ai&%%$t31!8 +›1838d›15m›518`'›10m›22ai0!0%1t2)9% +›1932d›15m›518`'›10m›477a/18 +›1932d›563`ic./d0+t&/.3t$)1%#3 +›2027d›15m›518`'›10m›477a3/18 +›2027d›563`ic./d07,t&/.3t$)1%# +›2122d›15m›518`'›10m›22ai3&-t$)1%#3/18 +›2216d›15m›518`'›10m›477a/18 +›2216d›563`ic./d5)134!,t$)1%#3 +›2324d›520`Þ¯¼¹›15aÀµÇÈ›14aºÃÉÆ›15aÅɵÀ½ì¹ÆÇ›15aµÆ¹›14m›14a$%:-)3%+8›10m›19aºÃÆ›14aÇÍÇȹÁ›15a˽εƸǛ14aÃÂÀÍÛß +›2447d›13m›674`}{yvvuxs›18a¢tuo›85amsq|›19a\›370a}| +›2447d›449`§¬¦›56a[yx›306at›20ae›161ak`}yac¥¨›19ae{ux +›2533d›10m›652`á›14m›49a_VlhXYpq›10m›16aÈƵÂÇÀµÈ¹Ç›15aµÀÀ›16aȼ¹›17aĵ»¹Ç›17a½Â›17aȼ¹›17ah$5)›129aÈÛ16aµ›17aºÃÆÁ +›2533d›449`ªÆ¸½ÂµÆ½ÀÍ›14m›26aR›10m›928aìÀ¹›17a½Â +›2589d›539`¼›18a·µÂ›17a¶›1a¹›18aÄƽ›103aÍ›18aȼ¹›17a§©ÏÒ›17aÄƽ›133aË›42a¹Æá›16a½º›17aÍ›189aʽ»›17a¸½ºð +›2589d›449`˼½·›271aȹ¸›17a¶›326aȹÆå›18a¼Ã›31a¹Ê›133aÃÉ›17aµÆ¹›17a¼µ +›2630d›15m›1071`M +›2646d›10m›449`ì·ÉÀÈ›333aÈ›18aµ›18aì»Éƹ›743aÈá›19a½È›18a½Ç +›2646d›549`Í›19a½Â›18a»¹ÈȽ»›17aƽ»¼›225aÛ19aĵ»¹›18aÑÒ›18aú›18aµ›18aÑÏÏðĵ»¹›18a¸Ã›1a·ÉÁ¹Â +›2702d›449`Ƶȼ¹Æ›17aË›408a¹¹Ä›17aÛ17aÄƽ›608aȽà+›2702d›620`µÇȹºÉÀ›15aú›17aĵě1a¹Æ›17aÈÛ16a¿›226aȽ»›16aµÀÀ›16aÑÏÏ›16aĵ»¹Ç›16aÞÂÃÈ›16aÈÛ16aÁ¹Â +›2759d›449`ȼ¹›12aȽÁ¹›11aȵ¿›88aµ½È½Â»›10aºÃÆ›11aȼ¹›11aÃÉÈÄÉÈÛß›19a¯¼¹Æ¹ºÃƹ›14m›43a_VlhXYpq›10m›82aËÇ›10aȼ¹›12aÉÇ¹Æ +›2759d›688`¹Â›12aË›14m›650aR›10m›195aµÀÀà +›2815d›743`¼›14aĵ»¹›14aǼµÀÀ›13a¶›1a¹›14aÉǹ¸›15aµÇ›13aȼ¹›15aÇȵÆȽ»›12aÄ›1aý›179aȹ¸›13aÃÉÈÄÉÈå +›2815d›449`ÈÛ14aÇÄ›1a¹·½ºÍ›14a˼½·›797aÈ›13aºÃÆ›14aÄƽ +›2872d›1049`ÈÆÃÀ›14a¼Ã›132aÍ›14aĵ»¹Ç›15aµÆ¹›15aÈÛ15a¶›1a¹›16aÄÆÛ1a·¹Çǹ¸â +›2872d›449`½È›15aµÀÇÛ14aÄ›1a¹ÆÁ½ÈÇ›15aȼ¹›15aÉǹƛ15aÈÛ15a·Ã›132aË›15aÁµÂ +›2939d›14m›501`â +›2955d›11m›519`n¬´¨¯µ§¨›12aù›67aüùû›746a¯µ²›12a¯µ´°µ´Å›13a©´›11a³¯­¥Ñ +›2955d›714`üúþý›88a©³›11a´¨¥›12a²¥£¯­­¥®¤¥¤›13a­¥´¨¯›1a¤›13a¯¦›11a°²¥¶©¥·©®§›12a¹ +›3000d›449`´©­¥³›13a¨¡°°›1a¥®³›14a´¨¡´›13a©´›12a£¡®®¯´›14a°²¯›214a´›13a¤¥´¡©¬›12a·¨¥®›13a°›1a¥²¦¯²­©®§›14a´¨©³›12a³¯²´›13a¯¦›12a°²¯›1a¯¦Ñ +›3000d›1003`¶©¤¥›13a³µÏ£©¥® +›3046d›449`²¥¡¤©®§›14a¯°›1a¥²¡´©¯® +›1;449;2910;2;598!| +›1;2064;1766;72;8!| +›1;2064;1009;71;8!| + + +›462d›10m›607`Ó›12m›1245aÒÇÐËÈÊíð +›462d›1300`ï›45aÂËÇÊÅ›16aÉËÎÛ14aÓÇÐÆ›15a +›607d›10m›790`µÀɹ›14aÛ13aȼ¹›14ai23!13).'t0!'%l›11aÅɵÀ½ì¹Æ›13a½Ç›13aÉǹ¸›14aÈÛ12aÇÄ›1a¹·½ºÍ›14aȼ¹›14aÇȵÆÈð +›607d›678`¯¼¹›13aÊ +›664d›819`ÉÁ›294a¹Â›17aµÇ›18aµ›14m›17a231)-'›10m›22aµÂ¸›18aȵ¿›312aµÀɹ›18aéeÝâ +›664d›607`½Â»›18aĵ»¹›18a›61a¶›1a¹Æå›19aȼ½Ç›17a½Ç›18a»½Ê›451a¹Ç›17aȼ¹›18a¸¹ºµÉÀÈ›18aÊ +›714d›14m›1303`} +›720d›10m›885`µÀɹ›15a˽ÀÀ›14aÁµÈ·›86aÍ›15a§›5a¯›18a³›15aĵ»¹›15a›61a¶›1a¹Æ›16aµÂ¸›15aÇÛ15a˽ÀÀ›14aÂÃÆÁµÀÀÍ +›720d›607`¯¼½Ç›15a¸¹ºµÉÀÈ›15aÊ›277a¼›15aµÂ›301aÉÁ +›734d›1349`~ +›777d›607`ÇȵÆÈ›14a˽ȼ›15aȼ¹›16aìÆÇÈ›15aĵ»¹›15a½Â›15aÍ›256aÈá›16a˼µÈ¹Ê›139aÉÁ›153aË›42a¹Æá +›777d›1175`ÃÉÆ›15a¸Ã›1a·ÉÁ¹Â›188a¹Æ›14a½ÈÇ›15a›61a¶›1a¹Æâ›21a£Ã›31a¹Ê +›833d›607`½º›20aÍ›131aʽ¸¹›20aµ›20aǽ»À¹›19a›61a¶›1a¹Æá›14m›53a_VlhXYpq›10m›208a¼›19aȼ½Ç›20a˽ȼ›19aȼ¹›14m›20a:123 +›833d›10m›677`ÃÉ›19aÄÆÛ299aÉÁ›14m›97aR›10m›203a˽ÀÀ›19aÁµÈ· +›889d›607`Û1a··ÉÆƹ·¹›21aú›19aµ›19aĵ»¹›20a˽ȼ›18aȼµÈ›19a›61a¶›1a¹Æâ›34a¯¼½Ç›19aÁ¹µÂÇ›19aȼµÈ›19a½º›19aȼ¹›20aĵ»¹Ç›19aú +›889d›1281`ÉÁ +›946d›783`È›19a-8t&),%›18aµÆ¹›18a›61a¶›1a¹Æ¹¸›19aÞÏßá›18aÞ½ßá›18aÞ½½ßá›18aÞ½½½ßá›17aÞÐßá›18aÞÑßá›18aÞÒßá›13m›18aö›8aö›8aö›10m›5aá›19aǵ›19aá +›946d›607`¸Ã›1a·ÉÁ¹Â›325aÉÁ›897aÍ +›1002d›607`ȼ¹Â›12aǹÀ¹·È½Â»›10ai23!13).'t0!'%lV›689a¼µÂ½ÇÁ +›1002d›1280`˽ÀÀ›10aǹÀ¹·È›11aĵ»¹›11aÞ½½ßå›11aȼ¹Æ¹›11a½Ç›11aÂÛ11aÁ¹· +›1059d›607`ÈÛ16aǹÀ¹·È›16aĵ»¹›17aÞÑß›16a½ÂÇȹµ¸â›23aÞ©Ãȹ›16aȼµÈ›14m›33a!6›10m›22a¯›17a³›17aË›148aÊ›225aµÀÉ¹Ç +›1059d›14m›1379`1›10m›206aÃÉÀ¸›16a¼µ›22a¹›16a¼µ¸›17aȼ¹›16aÊ +›1069d›1496`~ +›1115d›607`Ïá›15aðÐá›16aðÑá›15aðÒá›16aÐá›15aÑ›15aµÂ¸›16aÒ›16aºÃÆ›15aȼ¹›16aµ¶›1aÛ22a¹›15aĵ»¹›16a›61a¶›1a¹ÆÇá›15aµÂ¸›16aȼ¹Æ¹ºÃƹ›16aĵ»¹›15aÞÑß +›1115d›1295`Ê›165aÉÁ +›1172d›14m›626`.4+$›10m›25a¶›1a¹›20aǹÀ¹·È¹¸›20a¸½Æ¹·ÈÀÍå›21aÈÛ19aµ··ÃÁÁÛ1a¸µÈ¹›19aÇÉ·›68aÉÁ›181a¼¹Á¹Çá›20aȼ¹ +›1172d›14m›607`#›10m›943a¼›20a›61a¶›1a¹Æ½Â»›20aÇ· +›1228d›607`i23!13).'t0!'%›493a¹›15a›61a¶›1a¹ÆÇâß +›1228d›956`ÅɵÀ½ì¹Æ›15aµ··¹ÄÈÇ›15a¹»µÈ½Ê›58aÉÁ +›1286d›678`Þ¤º›17aÍ›83a¹›17a¶›1a¹¹Â›18a·À¹Ê›291aË›16a¯›18a³ÝÇ›17auF:K@BG›13aµÆ¹›14aÁ¹µÇÉƹ¸ +›2591d›765`³ÝÇ›14aĵ»¹›15aÀµ›22aÃÉÈ›13a¸½Á¹ÂǽÃÂÇá›14aÇÉ· +›2605d›739`~ +›2641d›14m›1676`} +›2647d›10m›607`ºÆÃÁ›16aµ›15aÇȵ¸µÆ¸›12m›294aç›10m›1aå›16aì»Éƹ›16aЛ16aǼÛ112aË›16a§›5a¯›103aÍÇ›15aÃÉÈ›16aµ›16aĵ»¹ +›2647d›12m›945`åÚÛÚåÚáØÚ›17aã›1aâÞá›10m›278aËÇ›15a¼Ã›132a³›16aÀµ +›2661d›1722`~ +›2704d›607`ºÃÆ›15aȼ¹›15a:KMB›49aÍÀ¹›15aÉǽ»›14aÐÏðÄ›1aý›49aÍÄ›1a¹â +›2704d›937`ÇÈ›336aÈ›15aÈ +›2762d›704`ÃÆ›21aÇÄ›1a¹·½µÀ›22a¹ë¹·ÈÇá›23aÍ›129aÍ›21a츛23a½È›22aÉǹºÉÀ›22aÈÛ21a¶›1a¹›23aµ¶À¹›22aÈÛ21aƹ¸¹ì¹›23aȼ¹ +›2762d›678`¡›395aÃÉ›22aÁµ +›2818d›607`Ä›1aÃǽȽÛ15aú›16aȼ½Ç›16aƹº¹Æ¹Â·¹›16aÄ›1aý›232aȽ»å›16aȼ¹›16aÅɵÀ½ì¹ÆÇ›15ai,%&3t-!1'). +›2818d›1201`È›16a˼¹Â›16aÄƽ +›2875d›607`µÂ¸›16ai3/0t-!1').›13a½ÁÄÀ¹Á¹Â›139a¼µÂ»¹â +›2875d›1164`È›15aȼ½Ç›14a· +›2933d›984`ÈÇ›24a¹¹¸›25aÇÃð·µÀÀ¹¸›12m›24aßÖáÙæØÖã›1aÚ›25aâåÞÚá›93aá›10m›23aºÃÆ›23aȼ¹›24aĵě1a¹Æá +›2933d›678`®ÃÁ¹›24a¸Ã›1a·ÉÁ¹Â›12m›684açÖçÞâ +›2990d›10m›607`˼¹Æ¹›13aȼ¹›13aÄƽ›1170aÍð +›2990d›892`ȹ¸›13aĵ»¹›13a½Ç›12a˽¸¹Æ›13aȼµÂ›13a½È›12a½Ç›13a¼½»¼â›19azÇÇÉÁ½Â»›12aȼµÈ›12aȼ¹›14aĵ»¹›12aÀµ +›3046d›607`ÃÉÈ›12aĵƵÁ¹È¹ÆÇ›12a¼µ›22a¹›12a¶›1a¹¹Â›14aÇɽȵ¶ÀÍ›12aƹ¸¹ì¹¸á›14aȼ¹›396a$2#!0% +›3046d›965`Ê›588ai/1)%.3!3)/.l,!. + + +›462d›12m›633`çåâßßÞáÜ›13açÝÚ›15a¿ãã›1aÚÖåÖáØÚ›16aâÛ›15açÝÚ›15aÌåÞá›107aÖÜÚ›10m›411aÔ +›462d›12m›449`ïôï›45aÁâá›702açÚÙ›15aÌ +›824d›13m›892`ý +›857d›902`H›19a>@ +›919d›14m›569`ÕÖ×æ›9aÔ›39aÛ +›919d›652`ÚØÙ +›932d›13m›892`þ +›940d›15m›699`Ç +›969d›13m›1151`I +›973d›1130`ý›301aJ +›988d›1130`þ›280aþ +›1042d›1203`K +›1054d›1182`ý›228aý +›1065d›1182`þ +›1104d›570`H›19a>@ +›1106d›975`ý +›1125d›560`û›65aü +›1166d›985`L +›1229d›1589`N +›1249d›1514`ü›23aû +›1270d›767`H +›1291d›710`û›46aü +›1374d›1608`O +›1394d›1580`û›102aü +›1997d›1197`M +›2017d›841`û›631aü +›2161d›975`þ›186aþ +›2204d›1182`P +›2264d›1203`ý +›2496d›10m›594`U›24auH==LB=>F:K@BG›22al›24aZWIM›82aZ›24auM>QMPB=MA›22al›24aWXYIM +›2552d›594`V›24auMHIF:K@BG›23al›23aV[IM›178a[›24auF:K@BGI:KL>I›22al›24aUUIM +›2609d›594`W›24auA>:=A>B@AM›22al›24aUVIM›154a\›24auF:K@BGI:KPB=MA›22al›23a]TIM +›2665d›594`X›24auA>:=L>I›23al›24aVYIM›225a]›24au?HHMLDBI›23al›23aWTIM +›2721d›594`Y›24auM>QMA>B@AM›22al›24aXWu;:L>EBG>LDBI›22af›24auMHILDBI›22acYV\IMd +›2810d›14m›1212`} +›2816d›10m›812`¡½»Éƹ›14aÐä›20a~̵ÁÄÀ¹›15a§›5a¯›97aµ»¹›14a§µ›22aÃÉÈ +›2816d›1283`³›16a«›129aÍ +›2830d›1258`~ +›1;1202;2222;42;2!| +›1;1202;2119;42;2!| +›1;1579;1393;2;11!| +›1;1579;1393;2;187!| +›1;1579;1248;2;42!| +›1;1514;1248;2;42!| +›1;840;2016;2;11!| +›1;840;2016;2;717!| +›1;974;2150;11;2!| +›1;974;1065;1096;2!| +›1;1181;1054;11;2!| +›1;1181;1013;52;2!| +›1;1451;1012;42;2!| +›1;1451;946;42;2!| +›1;1129;977;11;2!| +›1;1129;931;57;2!| +›1;891;782;11;2!| +›1;891;782;150;2!| +›1;709;1290;2;11!| +›1;709;1290;2;131!| +›1;559;1124;2;11!| +›1;559;1124;2;150!| +›1;1765;1065;1096;2!| +›1;1578;1065;1096;2!| +›1;1555;1065;1096;2!| +›1;839;1065;1096;2!| +›1;709;2222;2;1125!| +›1;709;2159;2;1125!| +›1;709;1063;2;1125!| +›1;709;1012;2;1125!| +›1;709;987;2;1125!| +›1;708;781;1651;2!| +›1;559;931;2;1275!| +›1;558;2432;2;1278!| +›1;1834;781;1651;2!| +›1;558;781;1651;2!| +›1;558;780;2;1278!| + + +›462d›607`Õ›12m›1245aÒÇÐËÈÊíð +›462d›1300`ï›45aÂËÇÊÅ›16aÉËÎÛ14aÓÇÐÆ›15a +›607d›10m›607`ÅɵÀ½ì¹Æ›18a·µÂ›18a¶›1a¹›19aÉǹ¸›19aÈÛ17aȹÀÀ›14m›50a_VlhXYpq›10m›17aÈÛ17aÄƽ›292aÈ›19a½Â›18aȼ½Ç›17aÃƽð +›607d›14m›1184`R›10m›339aÈ›18aȼ¹›18a¸Ã›1a·ÉÁ¹Â +›664d›651`ȵȽÃÂâ›20aÞ©Ãȹ›15aȼµÈ›14aǽ»À¹›15aĵ»¹Çá›15aÃÆ›15a¹Ê›591aȹ¸›16a½Â +›664d›607`¹Â›741a¹Â›16aĵÆÈÇ›15aú›15aĵ»¹Çá›15a·µÂ›15a¶›1a¹›16aÄƽ +›720d›607`ȼ¹›15aÃÄÄ›1aÃǽȹ›14aÃƽ¹Â›93aÂá›13aȼÆÃÉ»¼›14aÉǹ›14aú›14aÇɽȵ¶À¹›14auLI>QMPB=MAá›14m›19a%3#›10m›115a¼ +›1952d›705`È›19a˽Ǽ›19aÈÛ19aÉǹ›20a¸½ë¹Æ¹Â›823aßá›19aÇÉ· +›1966d›1535`~ +›2008d›607`ȼµÈ›15aȼ¹›16aĵě1a¹Æ›16a½Ç›16aµÇÇÉÁ¹¸›16aÈÛ15a¶›1a¹›16a½Â›12m›16aßÖáÙæØÖã›1aÚ›10m›19aÁÛ1a¸¹å›16a½È›15a½Ç›15aȼ¹Â›16a¹·¹ÇǵÆÍ›16aÈà +›2065d›607`ȹÀÀ›14m›49a_VlhXYpq›10m›572aȵȽÛ16a·ÃÁÁµÂ¸Ç›18aÈÛ18aȼ¹›18a§©ÏÒâ +›2065d›14m›688`R›10m›201aȼµÈ›18a½È›17aǼÃÉÀ¸›18aǹ¸›19aƹðÃƽ¹Â +›2121d›970`Í›17aÁ¹µÂÇ›17aú›17aȼ¹›17ai/1)%.3!3)/.l›16aÅɵÀ½ì¹Æá›17aÞ˼½·›100aÍ›17a¶›1a¹ +›2121d›607`¯¼½Ç›17a½Ç›17aÇÄ›1a¹·½ì¹¸›18a¶›942a¼›16aÁµ +›2178d›607`µ¶¶Æ¹Ê½µÈ¹¸›15aÈÛ14ai/1lßá›14aµÂ¸›15aȵ¿›173aµÀɹÇï›14a0/131!)3›14aÃÆ›14a,!.$2#!0%›14aÞ0›14aÃÆ +›2178d›1204`¹Ç›14aȼ¹›15añÊ +›2234d›607`,ßå›14aȼ¹›16a¸¹ºµÉÀÈ›15a½Ç›14a0/131!)3â +›2367d›13m›607`§¬¨›56a`xov~puxs›18a_{mztuo|›19a`wmsq|›18aux›18a¤›330a} +›2367d›1503`y~{›19a\y›2ao~wqx +›2451d›14m›1049`} +›2457d›10m›607`z›20aÀÛ1a·µÀ›18a¹ÌȹÂǽÛ20aÈÛ18a§›5a¯›18a³›19aµÈ›19a­¨|®›19aÄ›1a¹ÆÁ½ÈÇ›19aȼ¹›14m›52a_VlhXYpq›10m›18aÄÆûƵÁ›18aÈà +›2457d›14m›1640`R +›2471d›10m›1095`~ +›2513d›1314`ȹ¸›11a¸Ã›1a·ÉÁ¹Â›383aÍĽ·µÀÀÍ +›2513d›607`½Â·Àɸ¹›12a»ÆµÄ¼½·›11a½Áµ»¹Ç›10a˽ȼ½Â›10aµ›11aÄƽ›249aÈâ›19a¯¼¹›12a½Áµ»¹Ç›10a˽ÀÀ›10aÈ +›2570d›607`¼µ›22a¹›12a¶›1a¹¹Â›14a·µÄÈÉƹ¸›12aºÆÃÁ›12aµ›12a»ÆµÄ¼½·µÀ›11a¸½ÇÄÀµ›59aÍ›12aÇúț31aµÆ¹›11a˼½·›242a¿ï +›2570d›654`Ê›772aÍ›12a¶›107aË›161a¼›12añƹµ¸Ç›12a¶µ· +›2626d›607`ÇÉ·›1414aÈ +›2626d›669`¼›15aµÂ›14a½Áµ»¹›14aÈÛ14aȼ¹›14a¼ÃÇÈ›14a·ÃÁÄÉȹÆâ›20a¯¼¹›15aÃÂÀÍ›14aºÃÆÁµÈ›13aÇÉÄÄ›1aÃÆȹ¸›15aµÈ›14aÄƹǹ +›2682d›743`¼›21aµÂ›19a½Áµ»¹›19a¸ÉÁÄ›21aƹÅɽƹǛ20aȼµÈ›19a½È›19a¶›1a¹›21a½Â›19a}~|ÝÇ›19aéǽ̹ÀÝ›19aºÃÆÁµÈå›20aȼ½Ç +›2682d›607`ºÃÆ›19aÇÉ· +›2739d›831`ȹ¸›18a½Â›17aȼ¹›17aÄÆûƵÁÁ¹ÆÇÝ›16aÁµÂ›451aȹƛ17aµÂ¸›17aȼ¹ +›2739d›607`½Ç›17a¸Ã›1a·ÉÁ¹Â›591aɵÀÇ›16aºÃÆ›17aȼ¹›17a§©ÏÒ›17aÄƽ +›2795d›607`±¯ÑÓÏãЛ11aȹÆÁ½ÂµÀÇâ›18a®É·›494aÍ›12aȼ¹›14m›89ah\›10m›13aÄÆûƵÁ›11aºÆÃÁ +›2795d›1086`¼›13aìÀ¹Ç›12a·µÂ›13a¶›1a¹›13a»¹Â¹ÆµÈ¹¸›13a¶›14m›111a[d] +›2852d›10m›607`ÇÃÉÆ·¹Ç›15aËƽÈȹ›14a½Â›15a­¹¢¤®å›14aÄÆÛ603aÍÄ›1a¹›15a½Ç›14aÇÄ›1a¹·½ì¹¸ +›2852d›1199`ʽ¸¹¸›15aȼµÈ›14aȼ¹›15a·ÃÆƹ·È›15a¸¹Ê½·¹›15aÈ +›2908d›607`Þ,.TW›17aÃÆ›18a,.TWt0,42á›16aµÇ›18aµÄÄÆÃÄƽµÈ¹ßá›17aȼ¹›14m›94ah\›10m›230aÍ›17a¶›1a¹›19a½ÁÄ›1aÃÆȹ¸ +›2908d›14m›1461`[d]›10m›62aÃÉÈÄÉÈ›18aÁµ +›2965d›14m›687`!3),›10mâ +›2965d›14m›607`5%1" +›3030d›659`ã +›3046d›11m›676`³¥¥›13a§¬¯³³¡²¹ +›1;607;3001;2;598!| + + +›462d›12m›449`ïôð›45aÇáØßèÙÞáÜ›16aÅåÖãÝÞØæ›14aÇàÖÜÚæ›15aÞá›15aì›266aç›10m›461aÖ +›462d›12m›1175`âèå›15aÂâ›1aØèàÚá +›601d›14m›762`} +›607d›10m›549`Û14aÄƹĵƹ›15a§›5a¯›339a¼›15aµÂ›15a½Áµ»¹á›13a½Â·Àɸ¹›15a@K:IABGMLMRE>›583a¹›15a¹˛14a·ÃÁÁµÂ¸Çá +›664d›1023`·ÃÁÁµÂ¸å›14aȼ½Ç›14a˽ÀÀ›13a¸¹ì¹›16aìÊ +›720d›449`ȼ¹›16aìÆÇÈ›15aºÃÉÆ›14aú›15a˼½·›256aËÇä +›720d›858`¼›15aµÆ¹›15aµÇ›15aºÃÀÀà +›812d›15m›1922`I +›830d›10m›449`uLF:EE53VXT›895a¼¹Ç›21a¼½»¼›21aµÂ¸›22aÑ +›830d›735`¤Â·Àɸ¹Ç›22aµÂ›22a½Áµ»¹›20a¸ÉÁÄ›22a½Â›21aµ›21aÇĵ·¹›22aÐâս· +›845d›15m›1922`J +›887d›10m›620`¼¹Ç›15a˽¸¹á›15aÇɽȵ¶À¹›14aºÃÆ›14aµ›15aºÉÀÀðǷƹ¹Â›14a¸ÉÁÄ›16aºÆÃÁ›14aµ›15a±¯ÑÓÏãЛ13aȹÆÁ½ÂµÀ +›887d›563`½Â· +›943d›563`Á¹µÇÉƽ»›15aÓ×Ï›15m›9a&›10m›10a×ÏÏ›15aǷƹ¹Â›15aĽ̹ÀÇá›15aµÈ›14aÐäЛ15aÇ·µÀ½Â» +›1035d›15m›1820`H +›1053d›10m›449`uE:K@>53VXT›48aÃÆ›14aÄƽ›663aͽ»›15aÒâѽ›15m&›10mÔ›27a½Â +›1053d›735`¡›131aȽ»›14aµ›15a¸ÉÁÄ›16aµÈ›15aÑäЛ14aÇ·µÀ½Â»á›14aÛ1a··ÉÄ +›1068d›15m›1820`J +›1163d›10m›449`uLF:EE5BLYYT›48aÃÆ›13aÐäЛ13aÇ·µÀ¹¸›14a¸ÉÁÄ›15aºÆÃÁ›13aµ›14a±½ÇɵÀ›13aÔÔÏ›13aȹÆÁ½ÂµÀá›13a˽ȼ›13aÔ×Ô›15m›7a& +›1163d›10m›759`¡ +›1220d›563`ÖÕ×›14aǷƹ¹Â›16aĽ̹ÀÇá›15a½Â›15aµ›14aÇĵ·¹›16aÁ¹µÇÉƽ»›14aÐâØԽ›15m&›10mÑâÔս +›1330d›449`uE:K@>5BLYYT›48aÃÆ›14aÄƽ›663aͽ»›15aÒâؽ›15m&›10mÔâÐѽ +›1330d›759`¡›131aȽ»›14aµ›15a¸ÉÁÄ›16aµÈ›14aÑäЛ15aÇ·µÀ½Â»á›14aÛ1a··ÉÄ +›1440d›449`Þ¯¼¹›16aìºÈ¼›15a·ÃÁÁµÂ¸á›14au@BGHá›15a½Ç›14a¸¹Ç·Æ½¶›1a¹¸›16a½Â›15m›15a,›10m›205aËâß +›1440d›1360`ÑâÒâЛ13a¶›1a¹Àà +›1500d›520`¤Â›13a¹µ·›491a¹›11aù›12aĵƵÁ¹È¹Æá›12a˼½·›73aÉÇÈ›12a¶›1a¹›13aȼ¹›12aµÁ¹ +›1500d›636`¼›12a·µÇ¹›12aȼ¹›13a·ÃÁÁµÂ¸Ç›12aȵ¿›428a¼›12aÁ +›1557d›1173`Í›19a¹·¹ÇǵÆÍ›20aìÀ¹›20a¹ÌȹÂǽÃÂßâ›33a¯¼¹›20a·ÃÁð +›1557d›449`ú›20aȼ¹›20aǽ̹À›19a¸ÉÁÄ›20aìÀ¹›20a޽·Àɸ½Â»›19aµÂ +›1613d›449`ÁµÂ¸Ç›21a¹ÂÇÉƹ›20aȼµÈ›20aµ›20aÇĵ·¹›20aú›20aȼ¹›20aµÄÄÆÃÄƽµÈ¹›19aǽι›20a½Ç›20aÀ¹ºÈ›20a˽ȼ½Â›19aȼ¹›20aȹÌÈ +›1670d›490`ÃÉ›12a˽ÀÀ›10aÁÃÇÈ›12aÄÆöµ¶ÀÍ›11aÉǹ›12aȼ¹›13a·ÃÁÁµÂ¸Ç›11a˽ȼ½Â›12aµ›11a?B@NK>›11aµÂ¸ãÃÆ›12aIB +›1670d›449`ÞÍ +›1726d›449`¹Â›184aÈßâ›14m›51a_VlhXYpq›10m›12a½Ç›13aĵÇǹ¸›14aȼ¹›14aìÀ¹ÂµÁ¹›14aµÂ¸›14a½ÂÇÈÆɷȹ¸›13aÈÛ13aÈƹµÈ›13aȼ¹ +›1726d›493`ʽÆÃÂÁ¹Â›14m›67aR +›1783d›10m›901`Í›18aÁ¹µÂÇ›17aú›17a¯›18a³ÝÇ›17auLI>5BLYYT›12a|ÃÁÁµÂ¸ +›1834d›1383`ȹ¸›13a¶ +›1962d›15m›1250`O +›1971d›1033` +›1978d›10m›607`˽ÀÀ›15a·ÃÁÁ¹Â·¹›17a˽ȼ›16aé›36a0]kTkUJÝ›185aȽ»›16a˽ȼ›15aȼ¹›17añÇÁµÀÀï›14a·ÃÁÁµÂ¸Çá +›1978d›1285`ºÃÆ›15aÄƽ +›1985d›15m›1046`Á +›2027d›706` +›2034d›10m›607`µÂ¸›13aé›36a0]kTkVJÝ›11aºÃÆ›12aÉǹ›12a˽ȼ›12aȼ¹›12añÀµÆ»¹ï›11aÊ›288aè›12aºÃÆ›12aºÉÆȼ¹Æ›12a¸¹Èµ½ÀÇâ +›2034d›1429`¹ÆǽÃÂÇå›12aǹ¹›13açÐÏ +›2041d›15m›719`Á +›2182d›12m›607`±¹²¹°›52afhkl›17af§v¦}~x¨ +›2277d›10m›607`¯¼µÂ¿Ç›11aÈÛ10aȼ¹›10a»Ã›1aÛ1a¸›11aÃǛ10aú›10a®ÅÂâ›11a§¸Æâ›11a¥Ã¼Â›14m›73a££¨««›10m›187aÈ›11aÛ10aѨ~®~ +›2277d›14m›1473`u}›10m›140aá›11aµ›10aÇÈɸ¹Â +›2334d›607`·ÃÉÆǹ›12aµÈ›12a­¨|®á›10aµ›12aÄÆûƵÁ›11aÞ')./MH2)7ß›10a½Ç›12aÂÛ65aÊ›228a¼›12a˽ÀÀ›10a·Ã›22a¹ÆÈ +›2334d›1519`Ë›11aµ›20aµ½Àµ¶À¹›11a˼½·›185aÊ +›2390d›607`ȼ¹›18aÁ¹ÈµìÀ¹›17aÞ2!5$1!ß›15aÃÉÈÄÉÈ›18aú›17a¢¤©ª›17aÈÛ17aµ›17aÇɽȵ¶À¹›17aǽ̹À›17a¸ÉÁÄá›18aƹµ¸Í›17aºÃÆ +›2431d›15m›1438`P +›2447d›10m›607`½Â·ÀÉǽÛ10a½Â›11aÍ›251aÈ›11a˽ȼ›10aȼ¹›11au@BGH›30a·ÃÁÁµÂ¸â›18a¯¼¹›11au@BGH›10a·ÃÁÁµÂ¸ +›2447d›864`ÃÉÆ›10a¸Ã›1a·ÉÁ¹Â +›2503d›607`ȵ¿›458aÉÇä +›2503d›671`¹Ç›15aȼƹ¹›15aĵƵÁ¹È¹ÆÇá›14aȼ +›2616d›630`u@BGHc›15m*›14m6)$3(›15m›3a+›10mg›15m*›14m(%)'(3›15m›4a+›10mdv›15m*›14m:+%-!,%›15m›1a+›10mw +›2729d›607`˼¹Æ¹›18aȼ¹›15m›19a*›14m6)$3(›15m›3a+›10m›18aµÂ¸›15m›18a*›14m(%)'(3›15m›5a+›10m›17aµÆ¹›18a¹ÌÄƹÇǹ¸›19a½Â›17aȹÆÁÇ›18aú›17aȼ¹›14m›18aifblmjd›10m›62aʽð +›2729d›2006`¹Â +›2786d›607`ÆÃÂÁ¹Â›188aÈ›15auNGBME>G@MA›232a¹›16aµÂ›15aµÄÄÆÃÄƽµÈ¹ÀÍ›14aǽι¸›16aµÆ¹µ›15aú +›2786d›755`ÈÝÇ›15a·ÉÆƹ›296aá›14aµÂ¸›15aƹǹÆÊ +›2842d›607`ȼ¹›14aĵ»¹›14aºÃÆ›13aȼ¹›14a½Â·Àɸ¹¸›15a½Áµ»¹â›19a¯¼¹›14a')./MH2)7›414aȹ¸›15a½Â +›2842d›1585`ÄÆûƵÁ›12a½Ç›14a¸Ã›1a·ÉÁ¹Â +›2899d›607`µÄÄ›1a¹Â¸½Ì›16a}â +›2984d›14m›659`ä +›2993d›15m›676` +›3000d›11m›726`²¥°²¥³¥®›267a¨¡²¡£´¥² +›3000d›863`´³›14a´¨¥›13aË¥³£¡°›1a¥Â›13a£ +›3007d›15m›690`Á +›3030d›14m›659`å +›3046d›11m›676`n¬³¯›13a¤¥Í®¥¤›14a©®›13a´¨¥›13m›152aD›11m›40a¹¬¥›13a¯°´©¯® +›3046d›13m›1006`9›11m›30a³´ +›1;607;2956;2;598!| + + +›462d›10m›1921`Ø +›607d›13m›449`ß›70a¶ÏÑË×›23aÃ×ËÊ›22aÇÓÊ›24a·ËÓËÖÇØËÊ›22aÈ›109aĹØÔº¼Üß +›607d›1393`Û›24a´ +›712d›449`¨¬¦›56aitq›14m›18a÷çðé›13m›18a^uvq +›794d›14m›1388`} +›800d›10m›1338`Í›14a§›5a¯›219aȵ½ÂÇ›13aȼ¹›14a·ÃÁð +›800d›449`¯¼½Ç›14aìÀ¹á›13aµÇ›14aµÀƹµ¸Í›13a¹ÌÄÀµ½Â¹¸á›13a½Ç›14a»¹Â¹ÆµÈ¹¸›13a¶›121a³›13aµÂ¸›14a·Ã +›814d›1434`~ +›856d›678`ÍÄ›1a¹Ç¹È›20aȼ¹›21a¹Â›265aÈå›23a½ÈÇ›20a¸¹Ê½·¹ð½Â¸¹Ä›1a¹Â¸›1a¹Â›228aè +›856d›449`ÁµÂ¸Ç›21aÈÛ21aÈ›273aȽƹ›21a¸Ã›1a·ÉÁ¹Â›483aÈ›22aºÃÆÁµÈ›20açÒ +›913d›449`Á¹µÂÇ›19aȼµÈ›19a½È›18a·µÂ›19a¶›1a¹›20aÄÆÛ1a·¹Çǹ¸›20a¶›188aÈ›14m›51a_Vlh›13mö›8aö›8aö›10m›24aÄÆûƵÁÇ›18aÈÛ18aÄ›1a¹ÆÁ½È +›913d›1129`Í›18a¸½ë¹Æ¹Â›14m›36aR +›969d›10m›689`Í›14a¸½ë¹Æ¹Â›983aȹÆÇá +›969d›449`¸Æ½Ê½Â»›14aÁµÂ›184aÈ›13aÃÉÈÄÉÈ›14a¸¹Ê½·¹Çá›15aºÆÃÁ›14a±}°Ç›14aµÂ¸›14a¸ÃÈðÁµÈƽ̛13aÄƽ +›1025d›449`˽ȼ›20aÀÛ724aȹÆÇá›21a˽ȼ›20aƹÇÃÀÉȽÃÂÇ›19aÞÉÇɵÀÀÍß +›1025d›593`˽Ǽ›20aƹÇÃÀÉȽÃÂÇá›20aȼÆÃÉ»¼›20aÀµÇ¹Æ›20aÄƽ +›1082d›449`ú›22aÒÏÏ›21a¸ÃÈÇ›21aÄ›1a¹Æ›22a½Â·›138aÈ›20aÉÄ›23aÈÛ21aļÃÈÃðÈ›503a¼›21a¼µ›22a¹ +›1082d›846`¼á›23aƽ»¼›318aÍÄ›1a¹Ç¹ÈȹÆÇá›22aÇÃÁ¹›21aú›22a˼½·›92aÊ +›1120d›15m›839`H +›1138d›10m›449`ƹÇÃÀÉȽÃÂÇ›14aú›15aÔáÒÒÒ›277a¼Û +›1138d›875`¸ÃÈÇ›15aÄ›1a¹Æ›16a½Â· +›1153d›15m›839`J +›1265d›13m›449`¨¬§›56aitq›14m›18a÷êëö›13m›18a^uvq +›1353d›10m›893`Í›13aȼ¹›13a$5),.TW›11a·ÃÁÁµÂ¸å›13aȼ¹›13aìÀ¹›14m›13a-!,%›10m›16a½Ç›12aȼ¹›13aǵÁ¹›12aµÇ +›1353d›449`¯¼½Ç›13aìÀ¹›12a½Ç›13a»¹Â¹ÆµÈ¹¸›12a¶ +›1409d›449`ȼµÈ›15aÇÄ›1a¹·½ì¹¸›16aºÃÆ›15aȼ¹›15ah$5)›14aìÀ¹â›20a¯¼¹Ç¹›16ah,.W›479aɸƹ¸Ç +›1409d›1322`ìÀ¹Ç›15aȹ¸›16aÈÛ14a¶›1a¹›16aÀµÆ»¹›14aÞ¼ +›1466d›449`ú›15a¶ÀÛ1a·›504a¹Æ›15aµÂ›124aÈ›15a½Â›15a¿›444aȽ» +›1466d›582`¿Ç›15aÀûßá›14aµÂ¸›16aȼ¹Æ¹›15a½Ç›15a¹ʛ99aÍ›15aÄ›1aý›108a¹¹Ä½Â»›15aȼ¹Á›15aµºÈ¹Æ›15aÄƽ +›1506d›15m›1509`HG +›1522d›10m›449`ÞÉÂÀ¹ÇÇ›17aÍ›95aµÂ›170aÈ›16aºÉÆȼ¹Æ›17a·ÃĽ¹Ç›16a½ÁÁ¹¸½µÈ¹ÀÍ›36aßâ›24a¤È›17a½Ç›16aµ›17a»Ã›1aÛ1a¸›16a½¸¹µá +›1522d›626`ÃÉ›16aË›46aÈ›16aÈÛ16aÄƽ +›1579d›449`ȼ¹Æ¹ºÃƹá›13aÈÛ13a¸¹À¹È¹›13aÇÉ·›890a¿ÀÍ›13a·ÃÂð +›1579d›896`¼›13aìÀ¹Ç›13aµÇ›13aÇÛ1aÛ13aµÇ›13aÄ›1aÃÇǽ¶À¹á›12aǽ·¹›14aȼ¹Í›13a·µÂ›13aÅɽ· +›1635d›449`ÇÉÁ¹›14aÍ›563aµ›104aÍ›14aÇÄ›1a¹·½ºÍ½Â»›14aȼ¹›14ai$%,%3%›12aÅɵÀ½ì¹Æ +›1635d›587`ÃÉÆ›14a¸½Ç¿›13aÅÉÃȵå›13aȼ¹›14a¹µÇ½¹ÇÈ›13aË›21aÍ›13a½Ç›13a¶ +›1692d›449`Û16aȼ¹›15a¹Â¸›16aú›14aȼ¹›16a3%701).3›14a·ÃÁÁµÂ¸›15aÀ½Â¹â +›1749d›520`¯¼¹›19ai/43043›258aÍ›18a¶›1a¹›20aÉǹ¸›20aÈÛ18a»½Ê›549aÈ +›1749d›803`ÅɵÀ½ì¹Æ›19aÁµ›333a¹›18aȼ½Ç›19aÃÉÈÄÉÈ›19aìÀ¹›19aµ›19a¸½ë¹Æ¹Â +›1805d›449`ìÀ¹›18aÇÄ›1a¹·½ì·µÈ½ÃÂå›18aȼ½Ç›16aÁµ›290aÊ›606a¼›17a½Ç +›1805d›950`Í›17a¶›1a¹›18aÉǹ¸›18aÈÛ17aÛ22a¹Æƽ¸¹›16aȼ¹›18a¸¹ºµÉÀÈ›16aµ·È½ÃÂá›17a˼½· +›1862d›449`ÈÛ15a·Æ¹µÈ¹›14aȼ¹›15aìÀ¹›15a½Â›15aȼ¹›15a·ÉÆƹ›207aá›14a˽ȼ›14aìÀ¹›15a¹ÌȹÂǽÛ15aéh,.WÝ›14aµÂ¸›15aȼ¹ +›1862d›1045`È›15a¸½Æ¹·ÈÃÆÍ +›1918d›449`ǵÁ¹›15aµÁ¹›14aµÇ›14aȼ¹›15aµ·ÈɵÀ›13ah$5)›317aÉÇ›14aȼ¹›15aÅɵÀ½ì¹Æ›14a·ÃÉÀ¸›14a¶›1a¹›15aÉǹ¸ +›1918d›1061`ìÀ¹›15aÃÄ›1a¹Â¹¸â›21a¯¼ +›1975d›566`¹ÆÈ›14aȼ¹›16aÃÉÈÄÉÈ›15aÈÛ14aµ›15aǷƵȷ›208a¼›16aµÇ›15aÞ$)2+›16a2#1!3#(jßâ +›1975d›449`ÈÛ15a¸½Ê›506a¼›15a¸½Ç¿á›14aÇÉ· +›2032d›1201`Ƚù¸›15a½Â›15aǹ·È½Ã›15aÐâÒá›15a¶›85aËÂÀõ¸½Â» +›2032d›520`¯¼½Ç›15aìÀ¹›16aÇȵÆÈÇ›14aÃëá›14aµÇ›15aµÀƹµ¸Í›15aÁ¹Â›454aÍ›15a¸Ã +›2073d›15m›659`HH +›2089d›10m›449`ȼ¹›12m›19aÜßìãÝæ›10m›415a¼µÆµ·È¹ÆÇ›17aÈÛ18aȼ¹›18a§©ÏÒÝÇ›18aºÃ›191aâ›29a¯¼¹ +›2089d›714`ú›18aȼ¹›18a¹·¹ÇǵÆÍ›19a·›557aÈ›17aÁ¹ÁÃÆÍ +›2145d›449`ºÃÆÁµÈ›14aú›15aȼ½Ç›15aĵÆÈ›14aú›15aȼ¹›15aìÀ¹›16a·ÃºÃÆÁÇ›14aÈÛ15a}~|›14aÇȵ¸µÆ¸›15aÐ×Ï›14açÐÐèâ +›2272d›13m›449`¨¬¨›56aitq›14m›18a÷ïòí›13m›18a^uvq +›2354d›14m›1774`} +›2360d›10m›449`¯¼½Ç›21aìÀ¹›21a½Ç›14m›53a_VlhXYpq›10m›154aµÀ¹Â›575aÍ›21a§›5a¯›18a³å›21a½È +›2360d›14m›690`R›10m›184aÝÇ›20a¹Åɽʛ77aÈ›20aú›21aȼ¹›21aÀû›21aìÀ¹›21a»¹Â¹ÆµÈ¹¸›21a¶ +›2374d›1820`~ +›2416d›516`ȵ½ÂÇ›18aµÀÀ›18aȼ¹›19aÃÉÈÄÉÈ›19aÞ˽ȼ›18aÇÃÁ¹›19a¸½ë¹Æ¹Â·¹Ç›19aú›18aºÃÆÁµÈß›18aȼµÈ›14m›50a_VlhXYpq +›2416d›10m›449`·Ã›14m›1211aR +›2473d›10m›511`È›11aÈÛ9aÍ›517aÈ›10aÀõ¸Çá›14m›10a%3#›10m›3aß›10aµÂ¸›10aÇÃÁ¹›10aºÉÆȼ¹Æ›11a½ÂºÃÆÁµÈ½Ã +›2473d›449`ǹ›101aÃÉÆ›10aȹÆÁ½ÂµÀ›9aÞ¸¹Èµ½ÀÇ›9aú›10aºÃ +›2529d›1576`¼›18aĵ»¹â›27azÇÇÉÁ½Â» +›2529d›449`ƹ»µÆ¸½Â»›17aȼ¹›18a˼¹Æ¹µ¶›1aÃÉÈÇ›18a½Â›17aȼ¹›18aìÀ¹›18aú›17aȼ¹›18aÇȵÆÈ›16aú›17a¹µ· +›2585d›816`È›22aÄƽ›308aá›21aȼ¹Æ¹›22a½Ç›22aÂÛ21aÄ›1aý›122a¹¹Ä½Â»›22aȼ¹ +›2585d›449`ȼµÈ›22aȼ¹›22a¸Ã›1a·ÉÁ¹Â›119aÈÇ›21aǵȽǺµ·ÈÃƽÀÍ›361aÈ›22a½Â›22a¿ +›2642d›449`h380›18aìÀ¹á›19aµÂ¸›18aÇÛ18a½È›18aǼÃÉÀ¸›18a¶›1a¹›19a¸¹À¹È¹¸›18aµÇ›18aÇÛ1aÛ18aµÇ›18aÄ›1aÃÇǽ¶À¹å›20a¼Ã›31a¹Ê›135aÃÉ +›2642d›1685`Ë›42a¹Æá›17a½º›18aÍ +›2698d›564`¹›22aȼµÈ›14m›53a_VlhXYpq›10m›165aʽ»›22aµÂÃÁµÀÃÉÇÀÍ›194a¹¹Ä›22aȼ½Ç›21aìÀ¹›21aÈà +›2698d›449`¶›1a¹À½¹Ê›14m›146aR›10m›204a½Ç›21a¶›1a¹¼µ›350aá›21aÄÀ¹µÇ¹›22a¿ +›2755d›514`Ë›15m›15a*›14m›19a.-3!#3-!,%›15m›3a+›10mâ +›2755d›449`ǼÛ14m›65a# +›2812d›10m›866`ʽÃÉÆ›19aú›14m›50a_VlhXYpq›10m›495aʽ¸½Â»›18aÂà +›2812d›520`¯¼¹›19a¸¹ºµÉÀÈ›18a¶›1a¹¼µ›14m›176aR›10m›202a½Ç›18aÈÛ18a¸¹À¹È¹›19aȼ½Ç›18aìÀ¹›19aÄÆà +›2869d›449`Á¹Çǵ»¹Ç›16aË›269aË›42a¹Æá›16a½º›16aµÂ›71aµÆ½»›15aÃÆ›16a¹ÆÆÃÆ›15aÁ¹Çǵ»¹Ç›14m›84a%›10m›20aÄÆÃð +›2869d›675`¹Æ¹›16a½ÇÇɹ¸å›17a¼Ã›31a¹Ê›156aÍ›16aË›14m›504a6%1 +›2939d›486`ÝÜ +›2955d›11m›564`¥®›13a´¨©³›12a©³›12a´¯›13a¢›1a¥›13a¤¥°²¥£¡´¥¤È›13a°¨¯´¯›1a£¯°›255a¨¥¡°›1a¥²Å›13a¡®¤›13a¤¯›1a¥³®Â´›13a´©¥›12aµ°›13a´¨¥ +›2955d›519`r¶›617a¹©®§›15a©³›12a¦¡³´¥²Å›12a£ +›3000d›516`´¥²›14a±µ¥µ¥Æ +›3000d›449`°²©® +›3030d›14m›486`ÝÝ +›3046d›11m›519`³¥¥›13a§¬¯³³¡²¹ +›1;449;2910;2;598!| +›1;1496;1973;2;15!| +›1;839;1125;2;18!| + + +›462d›10m›607`ÐÏ›12m›326að›45aÄÇÈÃÏ›16aÑÏÛ15a¿Ê›15aÅÃÊÃο›224aÒÇÐËÈÊíð +›462d›1647`ÐÛ14aÀÕ›15a +›607d›10m›1518`â›30a¯¼¹›19ai,/'›258aÍ›19a¶›1a¹ +›607d›607`¸É·¹¸á›21aȼ¹›19aìÀ¹›20a˽ÀÀ›17a¶›1a¹›20aƹȵ½Â¹¸›19aµÉÈÃÁµÈ½·µÀÀÍ›247aÅɵÀ½ì¹Æ›18aÁµ +›664d›1022`ȽÛ19aú›19aȼ¹›20ah380›179aÊ›104aá›20aȼ¹›20ai./,/'›19aÅɵÀ½ì¹Æ +›664d›607`Éǹ¸›21aÈÛ19a¹ÂÇÉƹ›20aƹȹ›351aìÀ¹å›22a·Ã›22a¹ÆǹÀÍ +›720d›607`˽ÀÀ›14m›14a-%5%1›10m›43a¹¹Ä›15aȼ¹›15aìÀ¹â +›720d›821`¿ +›777d›678`¯¼¹›20ai,/'›20aÅɵÀ½ì¹Æ›19aÁµ›325a¹›20aµ›20aìÀ¹›20aÇÄ›1a¹·½ì·µÈ½Ã›20aÈÛ19aÛ22a¹Æƽ¸¹ +›777d›1132`Í›20aÃÄȽõÀÀÍ›18aȵ¿›506aÊ +›834d›607`ĵÆÈ›15aÃÆ›14aµÀÀ›14aú›15aȼ¹›15a¸¹ºµÉÀÈ›15aÇÄ›1a¹·½ì·µÈ½Ã›15aºÃÆ›15aȼ¹›15aÀû›14aìÀ¹å›15a½º›15aȼ½Ç›14a½Ç›15aÉǹ¸á›15aȼ¹›15aìÀ¹ +›890d›607`˽ÀÀ›14aµÀË›21aÍÇ›13a¶›1a¹›16aƹȵ½Â¹¸â +›890d›761`µ +›1015d›12m›607`²¹²¹°›52aq}z›10m›18ai5%1"/2%›12m›16anªv¢~½z§ +›1103d›10m›607`}Éƽ»›13aÃÄ›1a¹ÆµÈ½ÃÂá›13aȼ¹›13aÄÆûƵÁ›13aƹě1aÃÆÈÇ›13aÛ13aȼ¹›14aȹÆÁ½ÂµÀ›12aȼ¹›14aºÉÀÀ›13aÇÄ›1a¹·½ì·µÈ½Ã +›1159d›607`ú›18aµÀÀ›17aìÀ¹Ç›18aƹµ¸›18aÞȼ¹›18a½ÂÄÉÈ›18ah$5)›233aÍ›18aǽ̹À›17aìÀ¹Ç›18a½Â·Àɸ¹¸›19aȼÆÃÉ»¼›18aµ +›1159d›1263`ìÀ¹›18aµÂ¸›19aµÂ +›1216d›607`uLI>?:NEM›22aºÃÆ›22aȼ½Ç›22aÅɵÀ½ì¹Æ›22a½Â›23aȼ¹›22a·ÃÁÁµÂ¸ðÀµÂ»Éµ»¹›22a¸¹ì½ȽÛ23ah#,$›22aìÀ¹á +›1951d›835`Í›14aú›16aȼ½Ç›16aÃÉÈÄÉÈ›16a·µÂ›16a¶›1a¹›17aÇÉÄÄƹÇǹ¸ä›23aÃÂÀÍ›16aȼ¹›16aµÁ¹›16aú›16aȼ¹›17a½ÂÄÉÈ +›1951d›607`ȼ¹›17aÁµ›3a¾ÃÆ½È +›2008d›919`ËÂÀõ¸›12aµÂ¸›13a½Â¸½Ê½¸ÉµÀ›11aĵ»¹›13a›61a¶›1a¹Æ›12aÁ¹Çǵ»¹Ç›12a˽ÀÀ›12a¶›1a¹›13aÃÉÈÄÉÈ +›2008d›607`ìÀ¹á›13aȼ¹›12aÈÃȵÀ›11a¸Ã›577aÉÁ +›2064d›1157`ȹƹ¸ßâ +›2064d›607`ÞÉÂÀ¹ÇÇ›15aµ›15aÄÆöÀ¹Á›15a½Ç›15a¹Â·ÃÉ +›2191d›13m›607`¨¬©›56a^›52a}›19a^uvq|›18agqmp›19an›87ak`}yac¥¨ +›2191d›765`yx›346a¤›18a\ +›2278d›10m›607`¡›98a¹ÆÍ›18a½Â¸½Ê½¸ÉµÀ›12m›79aç›10m›535aÈ›18aǽιï›18a½È›17a½Ç›18aÉǹ¸á›14m›52a_Vs +›2278d›10m›633`ÃÆ›18a¹Ê›12m›296aÛâá›10m›17aá›18aÂÛ19aÁµÈȹƛ17aµÈ›18a˼µÈ›18añÄ›1aý›14m›365aR +›2335d›607`lhXYpq›10m›16a¹¹¸Ç›17aÈÛ15aƹµ¸›16aȼ¹›16aƹÀ¹Ê›44aÈ›16ah3&-›16aìÀ¹á›16a˼½·›107aȵ½ÂÇ›15aȼ¹›16añ¯›17a³›16a¡›43aÈ +›2335d›1219`µÂ›322a¼›16a·Ã›339aà+›2345d›1936`~ +›2385d›14m›1534`} +›2391d›10m›1202`Ê›260aÍ›12a§›5a¯›257aµÇ›12aÄÆÛ1a·¹Çǽ» +›2391d›607`¨¹Èƽ·Çïâ›18a¯¼½Ç›13aìÀ¹›13a˽ÀÀ›11aµÀÇÛ12a¼µ›22a¹›13a¶›1a¹¹Â›14aƹµ¸›13a¶›119a³›13a˼¹Â›13a½È›13aË +›2405d›1580`~ +›2448d›630`ÃÉÆ›15ah3%7›965aÈÇ›15a¼µ›22a¹›15aÂÃÈ›15a¶›1a¹¹Â +›2448d›607`Í›192aÇÃÉÆ·¹á›15aµÂ¸›16a½Ç›16aƹµ¸›15aµ»µ½Â›15aÈÛ15a¹ÂÇÉƹ›17aȼµÈ›15aȼ¹›16aºÃ›97aÊ +›2504d›607`ƹʽǹ¸á›15a˼½·›137aÈ›14aÃȼ¹Æ˽ǹ›14aÀ¹µ¸›15aÈÛ15a¹ÆÆùÃÉÇ›15aÃÉÈÄÉÈâ +›2504d›863`¼›15aÁ½»¼ +›2562d›704`ÉÆȼ¹ÆÁÃƹá›22a¹Ê›229aÈ›14m›21a2)9%›10m›23aú›21a¹µ·›293aÈ›20aƹÅɽƹǛ21aµ›21aìÀ¹ +›2562d›678`¡›297a¹ÆÍ›21a¸½ë¹Æ¹Â›254a¼›22aǹĵƵȹ›21aºÃ +›2618d›1064`¼µÆµ·È¹Æ›17añƵÇȹÆÇïá›16aºÃÆ›17a¹µ·›61a¼µÆµ·È¹ÆÝÇ›17a»ÀÍļâ›27a¯¼½Ç +›2618d›607`¸¹Ç·Æ½¶½Â»›18aȼ¹›18aµ·ÈɵÀ›17a·›523a¼›18a· +›2675d›806`›21aÞ›15m*›14m2)3%-!,%›15m›2a+›10mß›22aÉǹǛ22aĵ·›22a¹¸›23aÞh0+ß›21aºÃÆÁµÈ›21aºÃ›241a¼›22aǵ›22a¹ +›2675d›607`½ÂÇȵÀÀµÈ½Ã›487a¿›412aÈ›21aìÀ¹Çá›24a˼½·›86aÊ +›2731d›692`Í›15aú›15aȼ¹›15aÐÏÏáÏÏÏ›14a¸½Ç¿›15a¶ÀÛ1a·›450aÍ›16a¯›17a³ÝÇ›15aÀ½¶ÆµÆ½¹Ç›14a˼¹Â +›2731d›607`ÁµÂ›509a¿Ç›15aºÃÆÁ¹ÆÀÍ›14aÛ1a··ÉĽ¹¸›16a¶ +›2741d›1718`~ +›2787d›12m›607`ÚëãÖáÙÚÙ›18aãÞëÚß›16aåÖæçÚåæ›10m›17a½Â›16ah07,›16aìÀ¹Ç›16aË›333aË›42a¹Æá›14m›48a_VlhXYpq›10m›15a½Ç +›2787d›1363`¹Æ¹›17aȼ¹›16aÂÃÆÁå›16a¼Ã›31a¹Ê›14m›66aR +›2844d›10m›1507`È›15aìÀ¹â +›2844d›607`·µÄµ¶À¹›15aú›15aÉǽ»›15a¹½È¼¹Æ›15aÞÃÆ›14a¶›1aÃȼߛ15aºÃÆÁÇ›15aú›14aºÃ +›2885d›15m›1616`HI +›2901d›10m›751`ÃÉÆ›20a¸Ã›1a·ÉÁ¹Â›306aÍ›12m›234açæ›10m›38aá›21aȼ¹Â›14m›53a_VlhXYpq›10m›19a˽ÀÀ +›2901d›678`¤º›20aÍ›261aÈ›21aƹº¹Æ¹Â·¹¸›21aµÂ›12m›43aéÞåçèÖß›19aÛâá›14m›216aR +›2958d›10m›607`¹¹¸›21aÈÛ20aƹµ¸›21aȼ¹›20aµÇÇÛ1a·½µÈ¹¸›20ah5&›209aèå›23aȼ¹›20aÀµÈȹƛ19aÇÄ›1a¹·½ì¹Ç›22a¼Ã›113a¼ +›2958d›1283`ìÀ¹ÞÇß›19açÐÑ›489aË›19a¹µ· +›3030d›14m›644`ÝÞ +›3046d›11m›676`³¥¥›13a§¬¯³³¡²¹ +›1;607;3001;2;598!| +›1;479;1054;1010;8!| + + +›462d›12m›449`ðôñ›45aÄ›43aç›14aÄÞßÚæ›15aÎÚÖÙ›14a×›73aÒÇçâÈÊíð›10m›718aÐÐ +›462d›12m›579`âá›280aì›16a +›607d›10m›449`·›370aÈ›14a½Ç›15aÈÛ14a¶›1a¹›15a½Áµ»¹¸á›14a˼½·›137aÈ›14a½Â›15aÈÉÆ›14aƹÅɽƹ›15aƹº¹Æ¹Â·¹ +›607d›468`¼µÆµ·È¹Æ›15a½Â›14aȼ¹›15aºÃ›452a¼›15aÁ½»¼ +›664d›449`ÈÛ17aÃȼ¹Æ›17aƹµÀ›17aÃÆ›17aʽÆÈɵÀ›16aºÃ›170a¹Â›18aȼ¹›14m›18a2!,%›10m›81aÈå›18aʽÆÈɵÀ›16aºÃ›111aÍ›17a¶›1a¹ +›664d›988`ÈÇ›17aÞÃÆ›16a¹Ê›263aºÃ›259aÈÇ›16aÁµ +›720d›604`¹Ûß +›720d›449`ƹ·ÉÆÇ½Ê +›838d›12m›449`²¹³¹°›52ac~§zx©¥§®›16a{¥§›18aq›19au›17ae›50a©›17ajz©§~x¨›16ae~¢z¨ +›838d›1068`¥¤ +›848d›954`d +›923d›10m›449`¯¼¹›17a¯›18a³›17a¡›43aÈ›16a¨¹Èƽ·Ç›16aìÀ¹Ç›16aÞh3&-›69aè›17aµÆ¹›16aƹµ¸›17a¶›199a¶›1a¹ÆÇ›17aú›16aȼ¹›17a¯›18a³ +›923d›672`Û404aß›16açÓ›233aÍ›16aµÀÀ›16aÁ¹Á +›933d›569`~›1284a~ +›980d›449`ºµÁ½ÀÍ›239aÍ›19aÁµÂ›76a±¤›19aÄÆÛ1a·¹Çǽ»›19aÄÆûƵÁÇá›18a½Â·Àɸ½Â»›14m›51a_VlhXYpq +›980d›10m›570`á›19aµÂ¸›19aµÀÇÛ18a¶›127aÍ›19a}›14m›709aR +›1036d›10m›449`µÂ¸›14m›22aR›78a_R^›10m›208a¹›21aȼ¹Ç¹›22aÃȼ¹Æ›21aÄÆûƵÁÇá›14m›54a_VlhXYpq›10m›21a¹¹¸Ç›22aÈÛ21a¶›1a¹ +›1036d›14m›576`_Vlh›10m›91aâ›40a¥ÉÇÈ›22aÀ½¿›14m›509aR +›1093d›10m›449`µ¶À¹›23aÈÛ22aƹµ¸›23aȼ¹Ç¹›23aìÀ¹Çå›26aȼ¹›22aÄÆûƵÁ›22a½Ç›22aÈÃÀ¸›22a˼¹Æ¹›23aÈÛ22aÀÛ1aÿ›22aȼÆÃÉ»¼›23aȼ¹ +›1149d›449`i3&-t$)1%#3/18›476aÊ›635aÍ +›1149d›804`ÅɵÀ½ì¹Æâ›35a¯¼½Ç›21a˽ÀÀ›19a¼µ›22a¹›20a¶›1a¹¹Â›22aǹț20aÉÄ›21aµÇ›20aµÄÄÆÃÄƽµÈ¹›20a¶ +›1206d›472`ÃÉÆ›14a¯›882aÊ›130aµÀɹ›14a3%7t&/.32â +›1206d›449`Í›129a³›14aµ¸Á½Â½ÇÈƵÈÃÆá›12aµÂ¸›14a˽ÀÀ›13aÁÃÇÈ›13aÄÆöµ¶ÀÍ›14a¼µ›22a¹›13aȼ¹›14aÊ +›1216d›577`~ +›1262d›520`ªÆ¸½ÂµÆÍ›15aÉǹÆÇ›16aǼÃÉÀ¸›12m›95az§›10m›14a¼µ›22a¹›15aµÂ›259aÈ›15aÈÛ15aÉǹ›15aȼ½Ç›15aÅɵÀ½ì¹Æ +›1262d›12m›975`¤z«›10m›106aÊ›81aÍ›16aƹÅɽƹÁ¹Â +›1319d›449`Û14a·ÃÁÁµÂ¸›14aÀ½Â¹Çá›14a¶ÉÈ›14aǼÃÉÀ¸›14aÍ›108aÊ›538aÈ›13a˼¹Æ¹›15a½È +›1319d›1081`ÃÉ›14a¼µ›22a¹›14aÇÃÁ¹›14aÄ›1a¹·ÉÀ½µÆ›14aƹÅɽƹÁ¹Â +›1375d›449`½Ç›15a¹·¹ÇǵÆÍ›16aÈÛ14aƹµ¸›15aÂÃÂðÇȵ¸µÆ¸›15ah3&-›15aìÀ¹Çá›15aƹº¹Æ›15aÈÛ14aµÄÄ›1a¹Â¸½Ì›16a|â +›1493d›12m›449`²¹³¹±›52ac~§zx©¥§~z¨›16a{¥§›10m›17ah0+›12m›17ae~¢z¨ +›1578d›10m›627`ÈÇ›15a½Â›16aÉǹ›17aµÈ›15m›16a*›14m2)3%-!,%›15m›2a+›10m›16aµÆ¹›16a½Â›16aȼ¹›17aĵ·›22a¹¸›16aºÃ›395a¼ +›1578d›449`¨ÃÇÈ›16aºÃ›749a¿›121aÈ›16aìÀ¹›16aºÃÆÁµÈå›15aµÀÀ›15aÇÉ· +›1635d›449`ìÀ¹Ç›13aµÆ¹›11aÇÈÃƹ¸›12a¼¹Æ¹›13a½Â›12aȼ¹›12a¸½Æ¹·ÈÃÆÍ›11a3%7›17a1//3jn&/.32h0+oå›10aȼ¹›12m›12aÒÉÏ›10m›15aÀû½·µÀ +›1691d›449`µÁ¹›13a3%7›17a0+›850aâ›19azÀÀ›11aÁµ»Â½ì·µÈ½ÃÂÇ +›1691d›717`¼µÇ›12a¶›1a¹¹Â›14a¸¹ì¹¸›13aÈÛ12aƹº¹Æ¹Â·¹›13aȼ½Ç›12a¸½Æ¹·ÈÃÆÍ +›1748d›449`ú›14aȼ¹›14aǵÁ¹›13aºÃ›971aȽµÈ¹¸›13aºÆÃÁ +›1748d›750`È›13aµÄÄ›1a¹µÆ›14a½Â›14aȼ½Ç›13aǽ»À¹›13a¸½Æ¹·ÈÃÆÍå›14aȼ¹Í›13aµÆ¹›14a¸½ë¹Æ¹Â +›1804d›449`¹µ·›187aÍ›18aȼ¹›18aìÀ¹›17aÈ›394a¼›17a·ÃÂǽÇÈÇ›17aú›17aµ›18a›61a¶›1a¹Æ›17aºÃÀÀÛ31a¹¸ +›1804d›511`¼›18aÃȼ¹Æ›17a¶›214aÍÄ›1a¹›18a¹ÌȹÂǽÃÂá›18a˼½·›330aÉÁ›165aË +›1861d›473`Í›18aȼ¹›18aÀ¹ÈȹÆÇ›18aé0+Ýóȼ¹›16a›61a¶›1a¹Æ›13m›18aã›10m›23aºÃÆ›17aµÂ›100a¹Â›17aÁµ»Â½ì·µÈ½Ã›13m›17aí›10m›125a¹Â +›1861d›449`¶›488aÉÁ›260aÍ›18a»½Ê›405a½Ç›17a»½Ê +›1917d›473`Í +›1917d›449`¶ +›1955d›15m›1159`r +›1974d›13m›960`ã›10m›17aæ›15m›13a(›10mÞЛ13mö›10mÑ›15m›42a&›13m›11aä›10mß›10aà›10aÏ›13mö›10mÔ›15m) +›2049d›10m›449`˼¹Æ¹›13m›13aä›10m›930a¼›12aµÂ¸›15m›13a(›13mò›15m)›10m›176aÈÇ +›2049d›625`½Ç›12aȼ¹›13aÃÉÈÄÉÈ›12a¸¹Ê½·¹ÝÇ›13aƹÇÃÀÉȽÛ11a½Â›12a¸ÃÈÇ›12aÄ›1a¹Æ›13a½Â·›201aƹÄƹǹ +›2106d›1289`ȹ»¹Æ›13m›15aø›15aò›10mâ›23a®½Â·¹›17aȼ¹›17a§©ÏÒ›16a¼µÇ›16aµ +›2106d›449`ȼ¹›17aíÛ1aÃÆ›16aÃÄ›1a¹ÆµÈ½ÃÂá›15aͽ¹À¸½Â»›16aȼ¹›17aÀµÆ»¹ÇÈ›15a½Â +›2162d›1030`¼á›15aȼ½Ç›14a¹ÅɵȽÛ15a¶›1a¹·ÃÁ¹Ç +›2162d›449`ƹÇÃÀÉȽÛ14aú›15aÒÏÏ›15a¸ÃÈÇ›14aÄ›1a¹Æ›16a½Â· +›2229d›15m›1266`r +›2248d›13m›943`ã›10m›17aæ›15m›13a(›10mÞÒÏÏ›15m›10a&›10m›10aЛ13mö›10mÑ›32aß›10aà›11aÏ›13mö›10mÔ›15m) +›2335d›10m›449`¯¼¹Æ¹ºÃƹá›20aµÂ›19aÉÂÁµ»Â½ì¹¸›20a|ÃÁÄÉȹƛ19a¨Ã›1a¸¹Æ›19a­ÃÁµÂ›18aÐÏÄÈ›19aºÃ›67aÃÉÀ¸›19a¶›1a¹ +›2335d›1724`È›18aË +›2391d›449`ºÃɸ›19a½Â›18a3%7›16a0+j#-1UThWTT0+á›16a˼½ÀÇÈ›17a½ÈÇ›17auF:@LM>I›23aY›18aÊ›165aÃÉÀ¸›17a¶›1a¹›19a½Â +›2391d›1572`¹ÆǽÛ17aË +›2447d›449`3%7›17a0+j#-1UTh[XZ0+â +›2504d›520`¯¼¹›23ai0+t&/.3t$)1%#3/18›21aÅɵÀ½ì¹Æ›22a½ÂÇÈÆÉ·ÈÇ›22aȼ¹›14m›55a_VlhXYpq›10m›22aÄÆûƵÁ +›2504d›14m›1538`R +›2560d›10m›449`¼Ã›1173aµÀɹ›20a3%7›17a0+jâ +›2560d›496`Ë›20aÈÛ19a츛20aȼ¹Ç¹›20aìÀ¹Çá›20aµÂ¸›20a¼µÇ›20a¶›1a¹¹Â›21aµÇǽ»Â¹¸›19aȼ¹›20a¸¹ºµÉÀÈ›19aÊ +›2617d›518`ÃÉ›15a˽Ǽ›15aÈÛ14aµ··¹ÇÇ›15aÍ›102aË›15aÄƽʛ134aÈ›14aìÀ¹Çá›15aƹº¹Æ›15aÈÛ15azÄÄ›1a¹Â¸½Ì›16a|â +›2617d›449`¤º›16aÍ›378aÃÉÆ›15aÛ149aµÈ¹›15aºÃ +›2673d›520`zÀȹƵȽʛ52aá›14aĵ·›22a¹¸›16aĽ̹À›15aºÃ›184aÍ›15a¶›1a¹›17a¼¹À¸›16a½Â›15aµ›16a¸½Æ¹·ÈÃÆÍ›15aÈƹ¹á›15aµÇ +›2673d›725`¹ÀÍ›90a¿›231aÈ›15aìÀ¹Ç›16aÁµ +›2730d›449`½Ç›17a¸Ã¹›17aµÈ›15m›16a*›14m2)3%-!,%›15m›2a+›10m›239a¿›624aʽ¸¹Ç›16aȼ¹ +›2730d›895`˽ȼ›16aÉÂĵ·›22a¹¸›17aƵÇȹƛ16aìÀ¹Çå›17azÄÄ›1a¹Â¸½Ì›18az›17aÄÆà +›2786d›449`¸¹Èµ½ÀÇâ +›2904d›12m›449`²¹³¹²›52ac~§zx©¥§~z¨›16a{¥§›10m›17ah07,›12m›17ae~¢z¨ +›2990d›10m›507`Í›13a¹Ìĵ¸¹¸›13aƵÇȹƛ11aĽ̹À›12aìÀ¹Ç›12aµÆ¹›12aÇÈÃƹ¸›11a½Â›12aµ›12a¸½Æ¹·ÈÃÆÍ›11aÈƹ¹›12a˽ȼ›12aµ›11añÄǹɸÃð +›2990d›449`z +›3046d›449`¸¹Ê½·¹ï›14a3%7›16a07,›17a1//3j›13aµÇ›12a½ÈÇ›13aÆÛ1aÃÈä›18a3%7›16a$)2+jn3%7h&/.32h07,ho›11a½Ç›12aȼ¹›13a¸¹ºð +›1;1222;3044;2;15!| +›1;771;3044;2;15!| +›1;683;3044;2;15!| +›1;1846;2558;2;15!| +›1;524;2445;2;15!| +›1;711;2389;2;15!| +›1;643;1689;2;15!| +›1;1230;1633;2;15!| + + +›462d›607`ÐÑ›12m›326að›45aÄÇÈÃÏ›16aÑÏÛ15a¿Ê›15aÅÃÊÃο›224aÒÇÐËÈÊíð +›462d›1647`ÐÛ14aÀÕ›15a +›607d›10m›607`½Â½È½Ã›15aÉǹ¸›17aµÈ›15m›16a*›14m2)3%-!,%›15m›2a+›10m›549aË›15aȼ½Ç›16aÆÛ1aÃÈ›15aµÆ¹›16a¸½Æ¹·ð +›607d›1144`ºÃÆ›16aȼ½Ç›16aÀû½·µÀ›14aµÁ¹â›24a{¹Àà +›664d›607`ÈÃƽ¹Ç›15a˽ȼ›15a›482aµÀɹ›16aú›15aȼ¹›16aµÁ¹›13m›16aã›10m›137aÍ›16aĵÆȽ·ÉÀµÆ +›664d›860`ÉÁ¹Æ½·µÀ›15añµÁ¹Çïå›15aȼ¹›16aÊ›404aºÃÆ›15aµÂ +›720d›668`È›15aÁµ»Â½ì·µÈ½Ã›13m›13aí›10m›76aÍ›14a¶›1a¹›16a¸¹Æ½Ê›200aËÇä +›720d›607`ºÃ›370aÁµ›198a¹¸›15aµÇ›15aºÃÀÀà +›803d›15m›1278`r +›822d›13m›1079`ã›10m›17aæ›15m›13a(›10mÞЛ13mö›10mÑ›15m›42a&›10m›10aÔ›15m›10a&›13m›11aä›10mß›9aà›11aÏ›13mö›10mÔ›15m) +›908d›1411`HJ +›924d›10m›607`˼¹Æ¹›13m›13aä›10m›13a½Ç›12aȼ¹›13aÃÉÈÄÉÈ›13a¸¹Ê½·¹ÝÇ›12aƹÇÃÀÉȽÛ37aâ›19a®½Â·¹›13aȼ¹›13a§©ÏÒ›13a¼µÇ›12aµ›13aƹÇÃÀÉȽà+›981d›978`¼á›15aȼ½Ç›14a¹ÅɵȽÛ15aǽÁÄÀ½ì¹Ç›14aÈà +›981d›607`ú›15aÒÏÏ›14a¸ÃÈÇ›15aÄ›1a¹Æ›16a½Â· +›1064d›15m›1435`r +›1083d›13m›1090`ã›10m›17aæ›15m›13a(›10mÞÐÔÏÏ›15m›9a&›10m›10aЛ13mö›10mÑ›33aß›9aà›11aÏ›13mö›10mÔ›15m) +›1185d›10m›1151`ÈÇ›21aµÆ¹›21a½Â›22a¸½Æ¹·ÈÃÆÍ›21a3%7›17a07,›17a1//3jnUYTToå›23aȼ½Ç +›1185d›607`¼¹Â·¹›23aȼ¹›22aÉÂÁµ»Â½ì¹¸›23aºÃ +›1241d›607`ÈƵÂÇÀµÈ¹Ç›20aÈÛ540a,hUYTTo›19aµÈ›15m›20a*›14m2)3%-!,%›15m›2a+›10m›227aá +›1241d›882`3%7›17a$)2+jn3%7h&/.32h07›461aâ›38a®½Á½ÀµÆÀÍ +›1298d›607`ȼÃǹ›15aµÈ›15auF:@LM>I›22aW›15aµÆ¹›15a½Â›15a¸½Æ¹·ÈÃÆÍ›15a3%7›17a07,›16a1//3jnVY]Voâ +›1354d›678`¯¼¹›450a8›17aÅɵÀ½ì¹Æ›19a½ÂÇÈÆÉ·ÈÇ›18aȼ¹›14m›51a_VlhXYpq›10m›18aÄÆûƵÁ +›1354d›775`i07,t&/.3t$)1%#3/1›14m›493aR +›1411d›10m›654`Ë›20aÈÛ19a츛21aȼ¹Ç¹›20aìÀ¹Çå›23aµÈ›15m›19a*›14m2)3%-!,%›15m›3a+›10má›20aȼ½Ç›20a¼µÇ›20a¶›1a¹¹Â›21aµÇǽ»Â¹¸›20aȼ¹›20a¸¹ºµÉÀÈ +›1411d›607`¼Ã +›1467d›628`µÀɹ›16a3%7›16a07,›17a1//3jâ +›1467d›607`Ê +›1524d›678`zÀȹƵȽʛ52aá›11aÉÂĵ·›22a¹¸›14aĽ̹À›13aºÃ›178aÍ›13a¶›1a¹›14a¼¹À¸›13a½Â›13aµ›13aǽ»À¹›13aíµÈ›12a¸½Æ¹·ð +›1524d›883`¹ÀÍ›137a¿›227aÈ›12aìÀ¹Ç›13aÁµ +›1580d›682`á›15aµÇ›16a½Ç›15a¸Ã¹›16aµÈ›15m›15a*›14m2)3%-!,%›15m›3a+›10m›186a¿›599aʽ¸¹Ç +›1580d›607`ÈÃÆÍ›518a˽ȼ›15aĵ·›22a¹¸›16aĽ̹À›16aìÀ¹Çå›15azÄÄ›1a¹Â¸½Ì›17az›16aÄÆà +›1637d›607`ȼ¹›15a¸¹Èµ½ÀÇâ +›1757d›12m›607`²¹³¹³›52ac~§zx©¥§®›16a{¥§›17as~§©ªv¢›17ae›50a©›17ae~¢z¨ +›1757d›1296`¥¤ +›1843d›10m›607`¯¼¹›15aÄÆûƵÁ›13a¹¹¸Ç›16aÈÛ14a¶›1a¹›15aµ¶À¹›14aÈÛ14aƹµ¸›15ah5&›14aìÀ¹Ç›14aºÃÆ›14aµÂ›246aÈÇ›14aÉǹ¸›15a½Â +›1843d›1664`Í›15aʽÆÈɵÀ›13aºÃ +›1899d›862`Èå›16a½Â›16aºµ·Èá›15aºÃÆ›14m›15a%5%18›10m›81aÈ›15aƹº¹Æ¹Â·¹¸á›17aȼ¹›16aÄÆûƵÁ›14a·›63a¿Ç›16aìÆÇÈÀÍ +›1899d›607`ȼ¹›16a¸Ã›1a·ÉÁ¹Â›397aºÃ›542a¼¹· +›1955d›931`È›19a½Ç›20aʽÆÈɵÀ›18a¶›344a¼›20aµ›20ah5&›333a¼›21aµ +›1955d›607`˼¹È¼¹Æ›20aȼ¹›21aºÃ›263aÍ›20aÀÛ1aÿ½Â»›19aºÃÆ›20aÇÉ·›179aìÀ¹ä›29aÃÂÀÍ›20a½º›19aÇÉ· +›2012d›1870`ȵ½Â»›15aƵÇÈ¹Æ +›2012d›607`ìÀ¹›16a·µÂÂÃÈ›16a¶›1a¹›17aºÃɸ›16a¸Ã›1a¹Ç›17aȼ¹›16aÄÆûƵÁ›15aµÈȹÁÄÈ›15aÈÛ16a츛16aìÀ¹Ç›16a·Ã +›2068d›607`½ÂºÃÆÁµÈ½Ã›14a½ÂÇȹµ¸â +›2125d›678`¯¼¹›21aÄÆûƵÁ›21aÀÛ1aÿǛ20aºÃÆ›21aȼ¹Ç¹›21aìÀ¹Ç›22a½Â›21aȼ¹›21aÀÛ1a·µÈ½Ã›20aµÇÇÛ1a·½µÈ¹¸›21a˽ȼ›20aȼ¹ +›2181d›607`i5)134!,t$)1%#3/18›19aÅɵÀ½ì¹Æå›23a½È›21aÁµ›311aÊ›101aÈ›21aÈÛ21a¿›147a¼ +›2181d›1367`Í›20a¶›1a¹›22aºÃɸ›21a·Ã›22a¹Â½¹Â›123a¹¹Ä›21aÇÉ· +›2238d›607`ìÀ¹Ç›20a½Â›19aȼ¹›20aǵÁ¹›19a¸½Æ¹·ÈÃÆÍ›19aµÇ›19aȼ¹›20a¯›97aÛ263aÈ›15m›20a*›14m2)3%-!,%›15m›2a+›10má›20aȼ½Ç +›2238d›1353`³›19a¡›43aÈ›19a¨¹Èƽ·Çâ›32az +›2248d›1327`~ +›2294d›607`ÅɵÀ½ì¹Æ›21a½Ç›20a»½Ê›170aµÀɹ›21a3%7›17a&/.32j›76aÉÇ›21a½Â¸¹¹¸›22aÄÀµ·½Â»›21aȼ¹Á›21a½Â›20aȼ¹ +›2294d›899`¹Â›21aȼ¹›21aÊ›332aá›21aȼ +›2351d›896`â +›2351d›607`ǵÁ¹›15a¸½Æ¹·ÈÃÆÍ +›2407d›898`ÈÇ›14aµÈ›15m›13a*›14m2)3%-!,%›15m›2a+›10m›81a¹Æ›14aÁµ¿›367aÈÇá›12aȼ¹Â›14aȼ¹›14a¸¹ð +›2407d›678`¤º›14a¸Ã›1a·ÉÁ¹Â›330a¹ʛ135a¹›13aÉǹ›14aú›13aʽÆÈɵÀ›13aºÃ +›2464d›607`ºµÉÀÈ›14aǼÃÉÀ¸›15a¶›1a¹›15aÁµ¸¹›398a3/18›12aÈÛ14a»µ½Â›14aµ›15aÇÀ½»¼›146aÊ›101aÈ +›2464d›1040`i./5)134!,t$)1%#›389aÈ›13a½ÁÄÆÛ22a¹Á¹Â +›2520d›607`½Â›15aÇÄ›1a¹¹¸›16aú›15aÄÆÛ1a·¹Çǽ»â +›2939d›14m›644`Ýß +›2955d›11m›676`{¨¥›16a¦¡£´¯²›15a½›16a¡²©³¥³›15a¦²¯­›15a´¨¥›16a²¥¬¡´©¯®³¨©°›16a¢›1a¥´›26a¥¥®›16a{›14a~³›15a¤¥¦¡µ¬´›13m›135a;>9›58aA@›11m›13a¯¦ +›2955d›1439`·›13m›314aX?7<@>›58a7E> +›2963d›11m›1559`r +›3000d›13m›607`HGGG›11m›763a¨Å›12a·¨©£›59a¡³›12a´¨¥›12a¡³³µ­¥¤›13a²¥³¯¬µ´©¯®›13a¯¦ +›3000d›697`¡®¤›13a´¨¥›12a¤¥¦¡µ¬´›13a²¥³¯¬µ´©¯®›12a¯¦›12a¼ºº›12a¤¯´³›13a°›1a¥²›12a©®£›119a¨›12a· +›3046d›807`´›12aͬ¥³ +›3046d›607`¡¬¬›13a¥¡²¬¹›13a¦¯® +›1;607;2910;2;598!| +›1;1247;2292;2;15!| +›1;888;1465;2;15!| +›1;800;1465;2;15!| +›1;1522;1296;2;15!| +›1;1433;1296;2;15!| +›1;957;1239;2;15!| +›1;1714;1183;2;15!| +›1;1625;1183;2;15!| + + +›462d›12m›662`Õ›16aËÄ›16aÐÃÎÉÏ›10m›940aÐÒ +›462d›12m›449`ÅÈËÏÏ¿Î +›607d›13m›852`ËÖÒ× +›607d›449`·ÑÔ××ÇÖÛ›25aÔÌ›23a +›711d›12m›449``¨¦›1azx©›18aov©~¥¹›10m›550aÈ›18aú›19aµ›18aĽ̹À›18aÈÛ18a½ÈÇ›18a˽¸È¼â›30a¨ÃÇÈ +›711d›788`ÞÐß›18a¯¼¹›18aƵȽÛ18aú›18aȼ¹›18a¼¹½»¼ +›767d›563`ÀµÇ¹Æ›15aÄƽ›135aÊ›925aÈ›16aú›15aµ +›767d›750`ȹÆÇ›15a¼µ›22a¹›16aµ›16aÐäЛ15aµÇÄ›1a¹·È›16aƵȽÃå›14aÞÑß›15a¯¼¹›16aƵȽÛ15aú›15aȼ¹›16a¼¹½»¼ +›824d›582`¼µÆµ·È¹Æ›15aÈÛ14a½ÈÇ›15a˽¸È¼â +›824d›563`· +›923d›12m›732`©~¤|¹›10m›337a¼›16a¹˛238aȹÆÇ›15aµÇ›15aȼ¹›15a}~|ÀµÇ¹Æ +›923d›12m›449`cª¦¢z­›17am§~¤›10m›125az›15aº¹µÈÉƹ›15aú›15aÇÉ·›117a¹Æ›15aÀµÇ¹Æ›14aÄƽ +›979d›563`ÁÛ1a¸¹À›20aÑÑÏÏ›19aÞ§©ÏÕßá›21a½Â›20a˼½·›208aȹƛ19a·Ã›235a¼µÂ½ÇÁ›20aºÃÆ +›979d›1140`¼›20aȼ¹›21aÄƽ›141aȵ½ÂÇ›20aµ›19aÁ¹· +›1036d›563`Á¹·›389aÊ›652aȽ»›21aÛ22aù +›1036d›640`¼µÂ½·µÀÀÍ›21aÈÉƽ»›21aÛ22a¹Æ›21aȼ¹›22aǼ¹¹È›22aú›21aĵě1a¹Æ›22aµºÈ¹Æ›21aÄƽ +›1092d›1313`ÈÛ16a½ÈÇ›17aƹʛ147aÉÇ›17aÄÆÛ1a¸É·½Â»›18aµ +›1092d›563`ǽ¸¹›17a¶›1a¹ºÃƹ›18a½Áµ»½Â»›16aµ›17aǹ·Ã¸›18aĵ»¹›17aÛ183a¹Æǹá›17aȼ +›1148d›1002`Èâ›20aÞ®¹¹›16aµÀÇÛ12m›43aèà›183açÞáÜ›10mâß +›1148d›563`¸ÃɶÀ¹ðǽ¸¹¸›16a¸Ã›1a·ÉÁ¹Â›12m›240aЛ58a×ßÚÙ›15aÌåÞá +›1247d›449`e›50a©›10m›17aÃÆ›12m›17ae›79a©¹›10m›22az›17a·›548aÍÄ›1a¹›17aºµ·¹›17aµÂ¸›17aǽιâ›25a°ÇɵÀÀÍ +›1247d›12m›478`¥¤›123a¥ª¤›10m›126a¼µÆµ·È¹Æ›16aǹț17aú›16aµ›17aÇÄ›1a¹·½ì¹¸›18aÈ +›1304d›563`½Â·Àɸ¹Ç›13aÉÄÄ›1a¹Æð›14aµÂ¸›13aÀÛ31a¹Æð·µÇ¹›12aÀ¹ÈȹÆÇá›12aì»ÉƹÇá›13aÄÉ·ÈɵȽÛ13aÁµÆ¿Çá›12aÀ½»ð +›1304d›999`Ë +›1360d›895`ÈÇâ +›1360d›563`µÈÉƹǛ15aµÂ¸›15aµ··¹Â +›1459d›12m›449`f¢®¦}¹›10m›22a¯¼¹›18aļ›291aȵȽÛ17aú›18aµ›18añ·›431aȹ¸›18aĵ»¹ +›1459d›773`Íǽ·µÀ›18aƹÄƹǹ›274a¼µÆµ·È¹Æï›17aÛ18aȼ¹›18aÄƽ +›1515d›563`½Ç›18a¿ÂÛ255a¼µÆµ·È¹ÆÝÇ›12m›17aÜßìãÝ›10m›74aÉÇ›19aȼ¹›18a»ÀÍļ›18aºÃÆ›18a½ÈµÀ½·›17aézÝ›18aÞ›14m;›10mß +›1515d›683`Ë›18aµÇ›18aȼµÈ›18a·›322aå›19aȼ +›1572d›1185`¼µÆµ·È¹Æ›15a½Â›15a¶›1aÃÀ¸›15aºµ·¹›15aÞ›12m`›10mßâ +›1572d›563`¸½ë¹ÆÇ›15aºÆÃÁ›14aȼµÈ›14aºÃÆ›15aȼ¹›15aǵÁ¹›15a· +›1670d›12m›834`©v©~¥¤¹›10m›21a«Æ½Â›449aÍÄ›1a¹›16aÆɽ»›16aĵƵÀÀ¹À +›1670d›12m›449`iv¤y¨xv¦›1az›20al§~z¤›10m›256aȽ»›15a˽ȼ›15aȼ¹›16aÀ½Â¹Ç›15aú›15aÈ +›1727d›563`˽ȼ›14aȼ¹›15aÀû›14a¹¸»¹›15aú›14aȼ¹›15aĵě1a¹Æá›14aÇÛ15aȼµÈ›14aȼ¹›14aĵě1a¹Æ›15a˼¹Â›15aƹµ¸›15a½Ç›14a˽¸¹Æ +›1783d›563`ȼµÂ›15a½È›15a½Ç›14a¼½»¼â +›1882d›12m›484`vx›26azy›16am~­z¢›16ae~¢z¨¹›10m›227aÃÁµÇ›15a­Ã¿½·›577a¼ +›1882d›12m›449`m›46a¡›10m›346a¤Â›17aÐØ×Ôá›14a¯›226a¿½›15a¸¹Ç½»Â¹¸›16aȼ½Ç›15aºÃÆÁµÈá›15a˼½· +›1938d›654`Ë›13a·µÄµ¶À¹›14aú›13a¶›1a¹½Â»›14aÉǹ¸›14a¶›261aÍ›12aú›13a¯›17a³›27aµÆ¹â›20a{Í›13aÉȽÀ½Î½Â» +›1938d›563`½Ç›13aÂÛ505aÍ›13aȼ¹›14aÁµ›3a¾Ãƽț163aË +›1948d›1533`~ +›1995d›639`¹Æ›21a¸µÈµ›21a·ÃÁÄƹÇǽÛ20aȹ·›651aÈ›20aìÀ¹Ç›21a½Ç +›1995d›563`·À¹Ê›486a¼Â½ÅɹÇá›23a¸½Ç¿›21aÛ1a··Éĵ·͛22aºÃÆ›21aºÃ +›2051d›756`Í›16aÔÏò×ÏÜâ +›2051d›563`ƹ¸É·¹¸›16a¶ +›2150d›12m›449`m›220a©v©~¥¤¹›10m›22a²½È¼›16aÇȵ¸µÆ¸›16aĵě1a¹Æ›17aÞ¹½È¼¹Æ›16azÓ›17açÑØÖÁÁ›15m&›10mÑÐÏÁÁè›14aÃÆ +›2150d›12m›484`v|z›18al§~z¤ +›2188d›15m›800`H +›2206d›10m›563`°®›18açÐн›15m&›10m×›206aȽ»›17a·µÂ›18aÆÉ›18aĵƵÀÀ¹À›16aÈÛ17a¹½È¼¹Æ›17aȼ¹›18aǼÃÆÈ›17aÃÆ›18aȼ¹ +›2206d›822`½Âèßá›17aÄƽ +›2221d›15m›800`I +›2263d›10m›563`Àû›15a¹¸»¹Çå›16aȼ¹Ç¹›16aÃƽ¹Â›298aË›16aµÇ›15aÄ›1aÃÆÈƵ½È›14aÃÆ›16aÀµÂ¸Ç·µÄ›1a¹á›16aƹð +›2263d›1012`ȵȽÃÂÇ›14aµÆ¹›15a¿Âà +›2319d›563`ÇÄ›1a¹·È½Ê›48aâ +›2319d›701`¹ÀÍ +›2418d›12m›449`m~­z¢¹›14m›53a_VlhXYpq›10m›701a¼›20aµ›19aĵ»¹›19a˽ÀÀ›19aµÄÄ›1a¹µÆ +›2418d›14m›603`R›10m›202aÈƹµÈÇ›19aȼ¹›20aǼ¹¹È›19aú›20aĵě1a¹Æ›20aÛ19a˼½· +›2475d›687`Ë›373aÍ›21aú›21aȽ›221aË›21aµÇ›21aĽ̹ÀÇ›22aÞǼÃÆÈ›20aºÃÆ +›2475d›563`µÇ›21aµ›22aÈ›31aÃð¸½Á¹ÂǽõÀ›19aµÆƵ›157aÍ›21a¸ÃÈÇ›22a¿Âà +›2531d›874`ÈÇïßå›13aĽ̹ÀÇ›13aÁµ›305a¿›13aÃÆ›13a˼½È¹â›19a¯¼¹›14a›61a¶›1a¹Æ +›2531d›563`ñĽ·ÈÉƹ›14a¹À¹Á¹Â›288aÍ›13a¶›1a¹›15a¹½È¼¹Æ›14a¶Àµ·›347aÉÁ +›2587d›673`¼›11aĽ̹ÀÇ›10aÄ›1a¹Æ›12a½Â·›194aȵÀÀÍ›14m›9a!-$›10m›34a¹ÆȽ·µÀÀÍ›318aÍ›11aȼ¹ +›2587d›563`ú›11aÇÉ·›291a¼á›11a¼ÃƽÎÛ182aÊ›157aá›10a½Ç›11a¸¹È¹ÆÁ½Â¹¸›11a¶ +›2644d›12m›563`åÚæâßèçÞâá›10m›13aµÂ¸›12m›15aÖæã›1aÚØç›14aåÖçÞâ›10m›16aú›14aȼ¹›14aÄƽ›527aȵ¶À¹ +›2644d›1318`Ƚ»›13a¸¹Ê½·¹â›20a¯¼¹›15aÈÃȵÀ›13aÄƽ +›2700d›563`µÆ¹µ›15aú›14aȼ¹›16a§©ÏÒ›15aÞÛ15azÓ›15aĵě1a¹Æß›15a½Ç›15aÑÓÏÏ›15m›9a&›10m›10aÒÓÏÏ›14aĽ̹ÀÇâ +›2778d›15m›563`*›14m2)3%-!,%›15m›3a+›10m›169aÉÁ›712aȹÆÇ›18a˽ȼ›18aµ +›2778d›796`¼µÇ›19aµ›19a›61a¶›1a¹Æ›19aú›19a}½»½ÈµÀ›16a§©ÏÒð«ÀÉÇ›19aÀµÇ¹Æ›19aÄƽ +›2834d›1144`¼›15aµÂ¸›15aµÂ›15aµÇÄ›1a¹·È›16aƵȽÛ13aú›15aÐäÐâ +›2834d›563`ƹÇÃÀÉȽÛ14aú›15aÒÏÏ›14a¸ÃÈÇ›15aÄ›1a¹Æ›16a½Â· +›2933d›12m›449`m›294a©v©~¥¤¹›10m›22a«Æ½Â›488aÍÄ›1a¹›24aÆɽ»›23aĵƵÀÀ¹À +›2933d›12m›484`¥§©§v~©›17al§~z¤›10m›257aȽ»›22a˽ȼ›23aȼ¹›24aÀ½Â¹Ç›23aú›23aÈ +›2990d›563`˽ȼ›20aȼ¹›21aǼÃÆÈ›20a¹¸»¹›21aú›20aȼ¹›21aĵě1a¹Æá›22aȼ¹›20aÂÃÆÁµÀ›20aºÃÆÁ›20aºÃÆ›20a¶›1aÛ1aÿÇá›21a˽ȼ +›3046d›563`ȼ¹›15aĵ»¹›15a¼½»¼¹Æ›15aȼµÂ›15a½È›15a½Ç›15a˽¸¹â +›1;800;2193;2;18!| + + +›462d›607`ÐÓ›12m›1154aÕ›16aËÄ›15aÐÃÎÉÏ +›462d›1594`ÅÈËÏÏ¿Î +›607d›607`ov¨©z§¹›10m›22a¤Â›17aȼ¹›16aǵÁ¹›16aË›21aÍ›15aȼµÈ›15aµ›16aȹÀ¹Ê½Ç½Ã›15aǷƹ¹Â›16a½Ç›16aÇ·µÂ¹¸›16aµÇ›16aµ›12m›16aåÖæçÚå›10m›18aú +›607d›1079`µ +›664d›721`¼ÃƽÎÛ392a¼›12a·›685aËÇ›12aú +›664d›867`ȵÀ›11aÇ·µÂ›12aÀ½Â¹Çá›12aÇÛ13a¹µ·›55a¼µÆµ·È¹ÆÝÇ›12a»ÀÍļ›12a½Ç›12a¶É½ÀÈ›12aÉÄ›13aºÆÃÁ›11aÆà +›720d›721`Ľ̹ÀÇâ›18a¯¼¹›13aƹÄƹǹ›227aÍ›12a·›674aÍ +›720d›1119`ȵȽÛ12aú›12aµÂ›54a¼µÆµ·È¹Æ›12a·µÂ›13aȼ¹Â›13a¶›1a¹›13aǵ½¸›12aÈÛ12aÛ1a··ÉÄ +›777d›721`µ›15a·¹Æȵ½Â›14a›61a¶›1a¹Æ›16aú›12m›55aêæ›10m›16aµÂ¸›12m›15aØâßèàáæ›10m›2aâ +›777d›934`ÉÁ›12m›131aåâ +›872d›792`v|z¨¹›10m›22a¯¼¹›16aƽ»¼›533a¹›14aȼ¹›16aù›15aÃÄÄ›1aÃǽȹâ +›872d›12m›607`ozx©¥›18am›10m›304aÈð¼µÂ¸›14aĵ»¹Ç›15a½Â›15aµ›15a¶›1aÛ1aÿá›15aÀ½¿ +›968d›12m›607`oz¨¥¢ª©~¥¤¹›10m›139aÉÁ›419aÈÇ›14aÞñĽ̹ÀÇïß›14aµÄÄ›1a¹µÆ½Â»›15aÄ›1a¹Æ›15aÀ½Âð +›968d›888`¯¼¹›15a›61a¶›1a¹Æ›15aú›15aĽ·ÈÉƹ›15a¹À¹Á¹Â +›1024d›1052`¼›16aÞÃÆ›14aÇɽȵ¶À¹›14aÁ¹Èƽ·›15aÁ¹µÇÉƹßâ +›1024d›721`¹µÆ›15aÃÆ›14aÇÅɵƹ›15a½Â· +›1120d›12m›908`©~¤|¹›10m›20a¯¼½Ç›11a½Ç›11aȼ¹›11aÂÃÆÁµÀ›10aÁÛ1a¸¹›11aú›11aÄƽ›370aȹÆÇá +›1120d›12m›607`p~£¦¢z­›16am§~¤›10m›736aȽ»›10a˽ȼ›10aÀµÇ¹Æ›11aÄƽ +›1176d›721`¹Ì·¹ÄÈ›15aºÃÆ›15aȼÃǹ›15aȼµÈ›14a·µÂ›15aÇÉÄÄ›1aÃÆÈ›12m›259açÞáÜ›10m›4aå›13aȹÌÈ›15aµÂ¸›15a»ÆµÄ¼½·Ç +›1176d›12m›1402`ÂèãßÚë›15aÌåÞá +›1233d›10m›1564`â›12m›32ak¹a¹›10m›18a{¹ºÃƹ›20aµÈȹÁÄȽ» +›1233d›721`µÆ¹›19a½Áµ»¹¸›19aÛ19aù›20aǽ¸¹›19aú›19aȼ¹›20aĵě1a¹Æ›20aÃÂÀÍ +›1289d›951`¼›23aǼ¹¹ÈÇ›22aȼÆÃÉ»¼›22aȼ¹›23aÄƽ›528aÈ›22aà+›1289d›721`ÈÛ21aĵÇÇ›22aÇÉ·›533aȹƛ21aµ›22aǹ·Ã¸›23aȽÁ¹›21aÈÛ22aÄƽ +›1346d›862`¹Æǹ›17aú›16a¹µ·›663a¼¹·›206aɺµ·ð +›1346d›721`ȼ¹›17aƹʛ207a¼›17aǼ¹¹È›18aÞñÄ›1aÛ1aÃÆ›16aÁµÂÝÇ›16a¸ÉÄÀ¹Ìïßá›17a·›63a¿›18aȼ¹›17aÁµÂ +›1402d›1046`ȵȽÛ19aÈÛ19a¹ÂÇÉƹ›21aȼµÈ›19aȼ½Ç›19a˽ÀÀ›18aÂÃÈ›20a·µÉǹ›20a¸µÁµ»¹›19aÈà +›1402d›721`ÈÉƹÆÝÇ›19a¸Ã›1a·ÉÁ¹Â +›1459d›721`Í›159aȹÆâ +›1459d›744`ÃÉÆ›14aÄƽ +›1554d›12m›639`ª£›213a©~¤|¹›10m›237aȽ»›17a½Â›12m›19aÂèãßÚë›10m›21aÁÛ1a¸¹›19aÞǹ¹›19aµ¶›1aÛ22a¹ßá›18aȼ¹›18aƹð +›1554d›12m›607`q›68aw¢zy›16am§~¤›10m›125a²¼¹Â›19aÄƽ›607aÊ +›1611d›744`¹Æǹ›19aú›18a¹µ·›460aÊ›302aȹ¸›19aȼ¹›19aǵÁ¹›19aË›21aÍ +›1611d›721`Ê›211a¼›20aǼ¹¹È›19a˽ÀÀ›18aÉÇɵÀÀÍ›18a¼µ›22a¹›19a½ÈÇ›18aȹÌÈ›19aÃƽ¹Â›313aµ +›1667d›1084`È›20aǽ¸¹á›23a½º›21aȼ¹›21aĵě1a¹Æ›22a½Ç›21aÈÉƹ¸›22aÛ22a¹Æ›21a½Â›21aȼ¹›21aÁµÂÂ¹Æ +›1667d›721`ÆÃɸ›21aµÇ›22aȼ¹›21aºÆÛ642aÊ +›1723d›1454`¶½Â¹¸›20a˽ȼ›12m›48aâåçåÖÞç›10m›116aȵȽÃÂß +›1723d›721`ú›19aƹµ¸½Â»›18aµ›19a¶›1aÛ1aÿâ›32a¯¼½Ç›19aÞ˼¹Â›19a·ÃÁ›12m›234aÌ›10m›148aÃƽ¹Â +›1780d›721`Á¹µÂÇ›16aȼµÈ›15aȼ¹›16aĵ»¹Ç›16a·µÂ›16a¶›1a¹›17a¶›1aÃɸ›17aµÀû›15aȼ¹›16aÀû›16a¹¸»¹›16aú›16aȼ¹›16aĵě1a¹Æ +›1836d›721`ÈÛ14aºÃÆÁ›15aµ›15a¶›1aÛ1aÿâ +›1912d›1656`È›17aµÀû›17aȼ¹›17aǼÃÆÈ›16a¹¸»¹ +›1912d›721`®ÃÁ¹È½Á¹Ç›16a½È›17a½Ç›16a¸¹Ç½Æµ¶À¹›17aÈÛ16a¶½Â¸›18aȼ¹›17a¸Ã›1a·ÉÁ¹Â +›1969d›721`ÞÀ½¿›174a¼µÆÈßá›19aÃÆ›18aÁÃƹ›18aúȹÂá›19aµÀû›17aȼ¹›19aÀû›18a¹¸»¹›18aºÃÆ›12m›18aÈÖáÙæØÖã›1aÚ +›1969d›10m›788`¹›17aµ›18aí½Äð· +›2025d›819`ȹ¸›13a¶›1aÛ1aÿÇå›15a½Â›14aȼ½Ç›13a·µÇ¹á›12m›43aèà›282açÞáÜ›10m›49aÃÉÀ¸›13a¶›1a¹›15aǹÀ¹·È¹¸ +›2025d›721`Ãƽ¹Â›12m›465aЛ58a×ßÚ›14aÉâ›1aÙÚ›14aÌåÞá›10m›95aË +›2082d›721`ÇÛ19aȼµÈ›19aȼ¹›14m›20a5%12.›10m›23aĵ»¹Ç›19aµÆ¹›20aÄƽ›282aËÂÝóȼ¹›19a¸ÃɶÀ¹ðĵ»¹ +›2082d›1382`ȹ¸›19aéÉÄǽ¸¹ð¸Ã +›2138d›721`ÇÄƹµ¸›11aË›243aÊ›923aÈ +›2138d›893`ÃÉÀ¸›11aȼ¹Â›12a¼µ›22a¹›11a¶›1aÃȼ›11aĵ»¹Çá›12a˼¹Â›12a¶›1aÃɸá›12a½Â›11aȼ¹›12aǵÁ¹›11aµÄĵƹ +›2195d›819`ȵȽÃÂâ +›2195d›721`Ãƽ¹Â +›2290d›12m›607`r¤¦vx›26azy›17am~­z¢›16ae~¢z¨¹›10m›21a¯¼¹›14aÃƽ»½ÂµÀ›12aÁ¹µÂÇ›14aú›13aƹÄƹǹ›230aÈÇ›13aÉǹ¸ +›2290d›12m›752`¡›10m›953aȽ»›14aȼ¹›14aºÃ +›2347d›745`Í›12a¯›97aµÇ›11a½Â›13aȼ¹›13aºÃÆÁ›11aú›13aÉÂĵ·›22a¹¸›13aƵÇȹÆÇâ›18a~µ·›76aË›12aú›12aĽ̹ÀÇ›12a˽ȼ½Â +›2347d›721`¶›86a³›13aË›449a¿›294a¼›12aÆà +›2357d›806`~ +›2403d›817`¼µÆµ·È¹ÆÝÇ›14aƵÇȹƛ13a½Ç›14aƹÄƹǹ›101aÍ›14aȼ¹›15aµÄÄÆÃÄƽµÈ¹›13a›61a¶›1a¹Æ›15aú›14aÒÑð +›2403d›721`ȼ¹›14a·›545aȹ¸›15a¶›383aÉÁ +›2460d›721`¶½È›17aË›587aͽ»›18aÕÔ›17aÆÛ395aÃÉÀ¸ +›2460d›826`ÃƸÇå›17aȼ¹Æ¹ºÃƹ›18aµ›17a»ÀÍļ›17aÛ1a··ÉÄ›205aËÇ›17aú›17aÒÕ›17a·ÃÀÉÁÂÇ›17aË +›2516d›721`ƹÅɽƹ›14m›20a36.›10m›24aË›228aË›19aÞË›418a¼›21aÆÛ219aÉÇ +›2516d›1003`ÃƸǛ20aÄ›1a¹Æ›21aÆÛ101aµÇȽ»›19aÑ×›20a¶½ÈÇ›20a½Â›20a¹µ·›85aËßá›20aµÂ¸›21aȼ +›2573d›721`ƹÅɽƹ›20aµ›20aÈÃȵÀ›18aú›20aÐÒÏ›19aË›276aÍȹÇâ›35a¤Â›20aµ¸¸½È½ÃÂá›21aȼ¹Æ¹›20aµÆ¹›20aµ +›2573d›1212`ÃƸǛ20aÃÆ›20aÔÑÏ›19a¶ +›2629d›721`›61a¶›1a¹Æ›21aú›20aÃȼ¹Æ›21aĵƵÁ¹È¹ÆÇ›20aƹÅɽƹ¸›21aºÃÆ›20a¹µ·›64a¼µÆµ·È¹ÆÝÇ›19a»ÀÍļá›22aÇà +›2629d›745`ÉÁ›828a¼›21a· +›2685d›721`ȼ½Ç›14a·›211aÃÉÀ¸›15aÛ1a··ÉÄ›307aÍȹǛ15aú›15a¸½Ç¿›15aÇĵ·¹â +›2685d›828`¼µÆµ·È¹Æ›15aË›213aÍ›15aµÈ›15aÀ¹µÇÈ›14aÔÓÏ›14a¶ +›2781d›12m›607`s›140av|z¨¹›10m›697a¹›15aȼ½Ç›14aùâ +›2781d›12m›643`z§¨¥›16am›10m›132a¯¼¹›15aÀ¹ºÈð¼µÂ¸›15aĵ»¹Ç›15a½Â›15aµ›15a¶›1aÛ1aÿá›15aÀ½¿ +›2877d›12m›607`s~§©ªv¢›16ae›50a©¨¹›10m›22aªÂ¹›20aú›18aȼ¹›20a¹ÌȹÂǽÃÂÇ›18aÈÛ19a¯›17a³á›19a½Â›217aÍ›19a¦Â›145aè +›2877d›12m›818`¥¤›10m›750aÈÆÛ1a¸É·¹¸›19a¶›101aÉȼ›20açÐÒ +›2887d›1495`~ +›2933d›1243`È›25aú›23aÐØØÏ›23aÞ±Òßá›25a½Ç›23aȼ¹›24a·Ã·¹ÄÈ›24aú›24aʽÆÈɵÀ +›2933d›721`½Â›23a¼½Ç›24aÁµ›3a¾ÃÆ›22a¹Â¼µÂ·¹Á¹Â +›2990d›721`ºÃ›110aèâ›28a²¼½ÀÇÈ›17ah3&-›513aµ›324aÈÇá +›2990d›782`ÈÇ›17açÐÑ›317aìÀ¹Ç›18a¹Ì½ÇÈ›18a½Â›18aȼ¹›18aÉÇɵÀ›18aË›21aÍ›17aºÃÆ›17aʽÆÈɵÀ›17aºÃ +›3046d›1018`Í›16a¯›18a³›17a½Â›16a¹Ìµ·ÈÀÍ›16aȼ¹›17aǵÁ¹›17aÁµÂ¹ƛ17aµÇ›16aȼÃǹ›17aºÃÆ›16añƹµÀï +›3046d›721`µÂ¸›17aµÆ¹›16aÉǹ¸›18a¶ +›3056d›1083`~ + + +›462d›12m›662`Õ›16aËÄ›16aÐÃÎÉÏ›10m›940aÐÔ +›462d›12m›449`ÅÈËÏÏ¿Î +›607d›10m›624`ÈÇá›14aȼ¹Æ¹›14aµÆ¹›14aÂÛ15aµÇÇÛ1a·½µÈ¹¸›14aĽ̹À›14aìÀ¹Çâ›19a¤ÂÇȹµ¸á›15aµ›14ah5&›152aʽ¸¹Ç›14aµ +›607d›563`ºÃ›1045aìÀ¹›14aÄÆà +›664d›563`ÁµÄĽ»›10aºÃÆ›10a¹µ·›54a¼µÆµ·È¹Æ›10a½Â›11aȼ¹›10aʽÆÈɵÀ›10aºÃ›409aÍ›10aǽÂð +›664d›872`¼›11a·›501aÈå›11aȼ¹›10aÁµÄĽ»›11aºÃÆ›10aµÂ +›720d›652`¼µÆµ·È¹Æ›14aÁ½»¼›524a¼µÆµ·È¹ÆÇ›14aºÆÃÁ›13aÇÃÁ¹›14aƹµÀ +›720d›563`»À¹›14a·›276aÈ›13aƹº¹Æ¹Â·¹›15aù›14aÞÃÆ›14aÁÃƹߛ13a· +›777d›624`ÈÞÇßá›18aÃÆ›18aÄ›1a¹Æ¼µÄÇ›19a·ÃÂÇÈÆÉ·È›19aµ›18a»ÀÍļ›18aºÆÃÁ›18aÇÃÁ¹›19aĵÈȹÆ›18aú›18a¼ÃƽÎÃÂð +›777d›563`ºÃ +›833d›744`¹ÆȽ·µÀ›15aÆÉÀ¹Çóh5&›174aȵ½Â›15aǹÅɹ·¹Ç›17aú›15m›15a*›14m›93a.,,!-$›15m›5a+›10mÇ +›833d›563`ȵÀ›15aµÂ¸›16aÊ›366aìÀ¹Ç›16a·Ã›14m›370a$5)›16a# +›889d›10m›563`ºÃÆ›15a¹µ·›268a¼›16aµÆ¹›15a½Â›221aÍ›15aȼ¹›16aÃÉÈÄÉÈ›16a¸Æ½Ê›128aÉÇ›15aʽÆð +›889d›695`¼›16a»ÀÍļá›15a˼½·›153aȹÆÄƹȹ¸›16a¶›346a¹Æâ›21a¯¼ +›946d›722`ÈÇ›20a·µÂ›20a·Ã›489aȹ¸›21aÀ¹ÈȹÆÇ›19aºÃÆÁ¹¸›20aºÆÃÁ›19aµ +›946d›563`ÈɵÀ›19aºÃ›210aȵ½Âá›20aºÃÆ›19a¹ÌµÁÄÀ¹á›21aµ··¹Â +›1002d›643`¶½ÂµÈ½Ã›15aú›16aÈ›31aÛ16aÃÆ›16aÁÃƹ›16a·›478aÍ›16a¯›18a³›16aµÇ›16aǽ»À¹ +›1002d›563`·ÃÁ›249aË›229a¼µÆµ·È¹ÆÇá›16a¶ÉÈ›17aÈƹµÈ¹¸›16a¶ +›1012d›1699`~ +›1059d›1532`Í›14a¯›120aÍļ¹ÂµÈ½Ã +›1059d›563`éÀ¹ÈȹÆÇÝá›12aµÂ¸›14a¼¹Â·¹›16a·µÄµ¶À¹›14aú›13a¶›1a¹½Â»›14a·ÃÂǽ¸¹Æ¹¸›15a¶›87a³ÝÇ›14a¼ +›1069d›1595`~ +›1115d›788`ÉÆȼ¹ÆÁÃƹá›17aǽ·¹›18a¹µ·›60a¼µÆµ·È¹Æ›17a·µÂ›17a¶›1a¹›19aéÈɹ¸Ý›17a½Â¸½Ê½¸Éð +›1115d›563`ÆÃÉȽ¹Çâ›26a¡›425a¼›17a· +›1172d›628`á›14a¶›1a¹Èȹƛ16aÄ›1aÃǽȽý»›14aú›15aµ··¹Â›175a¼›16aȼ½Â»Ç›14aµÇ›15aÉÄÄ›1a¹Æð·µÇ¹›17aÀ¹ÈȹÆÇ +›1172d›563`µÀÀÍ›548aÈÇ›15aÛ15aÇÉ· +›1228d›563`·µÂ›15a¶›1a¹›16aµ·›80a¹¸â +›1228d›750`¼½¹Ê + + +›462d›607`ÐÕ +›1851d›12m›1031`1; +›1851d›1371`G8A + + +›462d›10m›1898`ÐÖ +›607d›13m›656`Ú›22aØÔ›21aÉÔÓàÍÙÖË›22aØÎË›21a´ÏÖËÉØÔÖÏË×›21aÇÓÊ›23a×ËØ›21aÙÕ›21aÇ +›607d›449`±›69a¸Ô +›682d›700`ØËÖ›23a¿ÙËÙË›22aÌÔÖ›24aÇÓ›23aº¼Üß +›682d›570`¾ÖÏÓ +›785d›10m›824`ʽ¸¹Ç›20a¸¹Èµ½ÀÇ›18aºÃÆ›19aÇÍÇȹÁ›20aÁµÂµ»¹ÆÇ›19a·ÃÂì»Éƽ»›19aµÂ›20a§©ÏÒ +›785d›449`¯¼½Ç›20aµÄÄ›1a¹Â¸½Ì›20aÄÆà +›841d›486`ÈÛ15aȼ¹½Æ›14aÇÍÇȹÁ›15aÈÛ15aÇÉÄÄ›1aÃÆÈ›15a¯›17a³›27aµÆ¹â +›841d›449`½Â›617aË +›851d›1050`~ +›966d›13m›449`Z¬¦›56a[{qm}uxs›19a}tq›18aZzz{yz{um}q›18a\u{qo}y{uq| +›1053d›14m›481`_VlhXYpq›10m›139aÃÆ¿›18a˽ȼ›18aĵ·›22a¹¸›18aÃÆ›18aÉÂĵ·›22a¹¸›20aĽ̹À›18aìÀ¹Çá›19aÃÆ›18aµ›18aÁ½ÌÈÉƹ›18aú +›1053d›14m›449`R›10m›202a˽ÀÀ›17aË›256a¿›238a¿ +›1110d›449`¶›1aÃȼâ›19a¤È›11a¸Ã›1a¹Ç›11aÂÃÈ›11aÇÉÄÄ›1aÃÆÈ›11aȼ¹›10aÉǹ›12aú›10a»¹Â¹Æ½·›11aºÃ›352a¹ÀÍ›10aÈÃá›11aǽ·¹ +›1110d›1363`È›10aìÀ¹Çá›11aµÂ¸›11a½Ç›11aÉÂÀ½¿ +›1166d›578`ÃÉÀ¸›13aƹÅɽƹ›13a½È›12aÈÛ13aƹµ¸›13aȼ¹›13a¹Â›245aÈÛ12aÁ¹ÁÃÆÍ›13aÈÛ12a¸¹È¹ÆÁ½Â¹›14aȼ¹ +›1166d›449`ȼµÈ›13aË›565aȽƹ›13aƵÇȹƛ12a½Â +›1223d›696`Ì›13aǽιá›12a˼½ÀÇÈ›12aȼ¹›13aÃȼ¹Æ›12aºÃÆÁµÈÇ›12a¶›1aÃȼ›13a½Â·Àɸ¹›13aȼ½Ç›12a½ÂºÃÆÁµÈ½Ã›11a½Â +›1223d›449`¶›1aÃɸ½Â»›14a¶›1aà +›1279d›449`ȼ¹›12aìÀ¹á›12aÇÛ11aȼ¹›11a»ÀÍļÝÇ›11aƵÇȹƛ11a·µÂ›11a¶›1a¹›12a·ÃĽ¹¸›12aĽ¹·¹Á¹µÀâ›18a¤Â›12a·ÃÁÁÛ11a˽ȼ›11aÃȼ¹Æ +›1336d›819`Í›18a¯›47aË›403a¼›18aìÀ¹Ç›14m›18a,423›10m›22a¶›1a¹›19aÃÆ»µÂ½Î¹¸›17aµÇ +›1336d›449`¶½ÂµÆÍ›18aìÀ¹Ç›18aÉǹ¸›18a¶›92a³›27aµÆ¹›17aɸ¹Æ›19a±¨®á›18aÇÉ· +›1346d›886`~ +›1392d›449`ÔÐÑð¶›564aÃÉÝÊ›711a¼ +›1392d›557`Íȹ›15aì̹¸ðÀ¹Â»È¼›16aƹ·ÃƸÇä›20a½º›14aÍ›83a¹›15a»ÃÈ›14aȼ¹Á›15a½Â›15aÇÃÁ¹›15aÃȼ¹Æ›15aÁÛ1a¸¹á›15aÇÉ· +›1448d›449`µÇ›23a®ÈƹµÁ𧡛22aÃÆ›22aÊ›596aÈÆÃÀá›22aȼ¹Â›23a¹½È¼¹Æ›22aƹ·Æ¹µÈ¹ +›1448d›834`µÆ½µ¶À¹ðÀ¹Â»È¼›22aÂÃð·µÆƽµ»¹ð·Ã +›1505d›1015`ȵȽÛ14aú›14m›15aTSlhZWr›15aTSlhZ`›10m›156a¼›15aȼ¹Á›16aºÆÃÁ +›1505d›449`ȼ¹Á›16a˽ȼ›15aµ›15a±¨®›15a½ÁÄÀ¹Á¹Â›523aá›16aÃÆ›15aº¹È· +›1561d›449`ÇÃÁ¹Ë¼¹Æ¹›16a¹Àǹ›15aȼµÈ›14m›58a%2›10m›66aÊ›359aÈ›14aºÃÆÁµÈâ +›1561d›14m›864`$.›10m›57a¼µ›22a¹›15aȼ¹Á›15a½Â›15aȼ¹›15aƽ»¼ +›1685d›12m›987`vx›26azy›16am~­z¢›16a·›10mh0+›12m¸›18ae~¢z¨ +›1685d›449``¹°¹°›52at}z§z›16a©¥›18a¦ª©›18am›46a¡ +›1772d›10m›482`È›12a­¨|®›10aȼ¹›12ah0+›342aÈÇ›11aÇÉÄÄ›1aÃÆȹ¸›12aµÆ¹›12aÄÀµ·¹¸›12a½Â›12m›11a¥¤z›10m›12a¸½Æ¹·ÈÃÆÍå +›1772d›449`z›331aìÀ¹Ç›12aú›11aµÀÀ›11aȼ¹›11aºÃ +›1828d›449`ȼ½Ç›12a½Ç›12aƹº¹Æ¹Â·¹¸›14m›14a5)!›10m›16aȼ¹›13aÀû½·µÀ›10aµÁ¹›13a3%7›17a0+›372aʽ¸¹¸›13aµÇ›12aȼ¹ +›1828d›1336`á›12aµÂ¸›12aȼ¹›13aÀµÈȹƛ11aÄÆà +›1869d›15m›1459`HK +›1885d›10m›620`µÀɹ›13aºÃÆ›12aȼ¹›12ai0+t&/.3t$)1%#3/18›10aÅɵÀ½ì¹Æ›49a½Â›12aȼ¹›13a$5)3/,.TWh#,$ +›1885d›449`¸¹ºµÉÀÈ›12aÊ +›1941d›449`·ÃÁÁµÂ¸›13a¸¹ì½ȽÛ13aìÀ¹â›19a~µ·›98aÈ›12aìÀ¹›13aǼÃÉÀ¸›13a½Â·Àɸ¹›14aȼ¹›13aÁµ»Â½ì·µÈ½Ã›12aµÂ¸ +›1941d›1017`¼›13aºÃ +›1998d›1100`ÍÄ›1a¹›19a¹ÌȹÂǽÃÂâ›33aªÂ›20aȼ¹›19aÇÍÇȹÁ›19aµÈ›19a­¨|®á +›1998d›449`ƹÇÃÀÉȽÛ19a½Â¸½·µÈ½Ã›18a½Â›19a½ÈÇ›19aìÀ¹›20aÈ +›2054d›449`3%7›17a0+›101aÈÇ›15aÈÛ14a3%7›17a1//3jn&/.32h0+o›280a¹›14aȼ½Çä +›2054d›601`Ä›1aý›554aá›13aµÂ¸›15aÀÛ1aÿǛ15aÀ½¿ +›2105d›11m›1104`/*g +›2105d›520`$BI>J` +›1957d›10m›1417`Ê›129aÍÄ›1a¹›17ah07,å›17aȼµÈ›17aºÃÆ›16aȼ¹›18aÉÂð +›1957d›607`¯¼¹›18aìÀ¹Ç›17a½Â›18aȼ¹›17a½Â¸½Ê½¸ÉµÀ›17a¸½Æ¹·ÈÃƽ¹Ç›16a¼µ›22a¹›17aìÀ¹›18aÈ +›2014d›875`ÈÇ›15aÁ½»¼›365a¹›14aȼ½Çä +›2014d›607`Áµ»Â½ì¹¸›15aºÃ›148aÈ›14aÀÛ1aÿ›14a޽›15aĵÆÈß›14aÀ½¿ +›2066d›11m›678`$BI>I›22aW›15aìÀ¹Ç›16aÁ½»¼›178a¹›14aȼ½Çä +›2662d›984`¼›15a·Ã›632aÈ›14aÀÛ1aÿ›14aÀ½¿ +›2714d›11m›678`$BI>›22ax3%7›17a%7%j$5)3/,.TWx›86aÍ›15a¹¹¸ +›1863d›520`¡›1178aÝ›13aÁµ +›1919d›589`¼µÂ»¹¸›17aÈÛ17aÆ¹í¹·È›17aȼ¹›17aÀÛ1a·µÈ½Ã›16aú›16aȼ¹›17aÄÆûƵÁÝÇ›15a¹Ì¹·Éȵ¶À¹›17a½Áµ»¹›16aµÈ +›1919d›449`ÈÛ17a¶›1a¹›17a· +›1976d›472`ÃÉÆ›15aǽȹâ +›1976d›449`Í +›2035d›520`¯¼¹›17ai$%5)#%t380%›14aÅɵÀ½ì¹Æ›16a¼µÇ›16a½ÈÇ›15aÄ›1aÃÇǽ¶À¹›16aÊ›295aÍ›16aȼµÈ›15aǹ·ð +›2035d›1433`µÀɹǛ17a¸¹ì¹¸›18a¶ +›2091d›449`ȽÛ16aú›17aȼ¹›17a$5)3/,.TWh#,$›14aìÀ¹›17a¼¹µ¸¹¸›18aé=>?BG>›22aMRI>›24a01).3%12Ýâ›23a¥ÉÇÈ›17aù +›2148d›449`ú›11aȼ¹Ç¹›12aÊ›408a¹¸›11aµÇ›12aé=>?:NEMÝå›10aȼ¹›12a¸½ÇÈƽ¶Éȹ¸›11aÊ›210a¹Ç +›2148d›631`µÀɹǛ12aǼÃÉÀ¸›11a¶›1a¹›12aÁµÆ¿›652a¹ÆǽÛ10aÁµ¿ +›2204d›449`,.TW›13aȼ¹›14a¸¹ºµÉÀÈ›13aÄƽ›85aÍÄ›1a¹â›196aá›12aȼ¹›13ai0!0%1t2)9%›324aÍ +›2204d›866`ȹƛ13aÈ›102a®½Á½ÀµÆÀÍ›373aÅɵÀ½ì¹Æ›13a½Ç›13aǹț14a¶ +›2260d›449`ÁµÆ¿½Â»›18aȼ¹›19a¸¹ºµÉÀÈ›19a¸¹ì½ȽÛ19a½Â›18aȼ¹›19aé=>?BG>›23aMRI>›23a0!0%1t380%2Ý›17aǹ·È½Ã +›2317d›449`µÇ›15a¹½È¼¹Æ›15a!X›15aÃÆ›15a42â +›2376d›872`Ê›304a¹›21a¼µ›22a¹›22aÃÉÆ›21aÉÂĵ·›22a¹¸›22aĽ̹À›22aìÀ¹Ç›22a½Â›21aµ +›2376d›520`zÇ›22a¸¹Ç·Æ½¶›1a¹¸›22aµ¶›1aÛ22a¹á›23aµÈ›21a­¨|®›21aË›87aÊ›245a¿ +›2432d›1061`¿›734aá›23a˽ȼ +›2432d›449`Èƹ¹›23aÇÈÆÉ·ÈÉƹá›24a˼½ÀÇÈ›21aÃÉÆ›22aĵ·›22a¹¸›23aìÀ¹Ç›23aµÆ¹›22aµÀÀ›21a½Â›23aµ›22aǽ»À¹›22a¸½Æ¹·ÈÃÆÍ +›2489d›1157`â›25a¯¼¹Æ¹ºÃƹá›17aȼ¹›17aƹÀ¹Ê›44aÈ›17aǹ·È½Ã›17aú›17aÃÉÆ +›2489d›449`Àû½·µÀ›16aµÁ¹Ç›17a¸¹ì¹¸›19aµÄÄÆÃÄƽµÈ¹ÀÍ›427aµÂ +›2545d›449`$5)3/,.TWh#,$›252a¹›15aȼ½Çä +›2545d›775`ìÀ¹›15aÀÛ1aÿǛ14aÀ½¿ +›2651d›1143`18g +›2651d›545`JN:EB?B>K›23a0+t&/.3t$)1%#3/ +›2707d›640`G>@:M:;E>g +›2764d›640`=>?:NEMg +›2820d›640`O:EN>c=>?:NEMlx3%7t0+›190a^?BE>d +›2820d›1143`jxgMRI>l +›2877d›1143`/18g +›2877d›545`JN:EB?B>K›23a07,t&/.3t$)1%#3 +›2933d›640`G>@:M:;E>g +›2990d›640`=>?:NEMg +›3046d›1143`,t1//3jx›166a?BE>d +›3046d›640`O:EN>c=>?:NEMlx3%7t07›190agMRI>l^ +›1;2064;2164;153;8!| +›1;1378;1861;2;15!| +›1;2064;1172;174;8!| + + +›462d›607`ÑÏ›12m›430a¿›45aÇÊÄ›140aÐÇËÊ›16aÄ›431aÅÃÎÏ +›462d›1241`ËÎÉ¿›159aËΛ14aÏÕÏÐÃÉ›16aÉ¿Ê¿ +›607d›10m›607`Þ²¼¹Æ¹›20aȼ¹›21aÀû½·µÀ›18aµÁ¹›20a3%7›17a0+›20a½Ç›20a¸¹ì¹¸›22aµÇ›19a3%7›17a1//3jn&/.32h0+o›18aµÂ¸ +›648d›15m›1543`HL +›664d›10m›607`3%7›17a07,›17a1//3›14aµÇ›535a,ho›35aß +›664d›951`3%7›17a$)2+jn3%7h&/.32h07 +›720d›1082`ÃÉ›15aÁµ›374a¹›15aµÆ¹ä +›720d›678`¨Ã›1a¸½ì·µÈ½ÃÂÇ›14aȼµÈ›14aÍ›122aÍ›15a˽Ǽ›14aÈÛ15aɸ¹Æȵ¿ +›814d›15m›675`'›10m›23a|¼µÂ»¹›14a¹½È¼¹Æ›13aÃÆ›14a¶›1aÃȼ›14a=>?:NEMl›12aÇÈƽ»Ǜ13aÈÛ13aÆ¹í¹·È›14aȼ¹›14aµ·ÈɵÀ›13a¸½Æ¹·ÈÃÆÍ +›870d›721`ÇÄ›1a¹·½ì·µÈ½Ã›15a½ÂÇȹµ¸›15aú›14aÉǽ»›15aµ›15aÀû½·µÀ›14aµÁ¹â +›964d›15m›675`'›10m›92aÃÉÆ›15aǽȹ›15a¸Ã›1a¹ÇÂÝÈ›15aÉǹ›16aù›16aú›15aȼ¹Ç¹›16aìÀ¹›16a·ÀµÇǹǛ15aµÈ›15aµÀÀá›14aƹÁÛ22a¹›15aȼ¹›16aÀ½Â¹ +›964d›721`¤º›16aÍ›1103aÊ +›1020d›721`é=>?:NEMgÝ›13aºÆÃÁ›15aȼ¹›15aƹÀ¹Ê›44aÈ›15aÅɵÀ½ì¹ÆÝÇ›14a¸¹ì½ȽÃÂâ +›1020d›1230`µÂ +›1114d›711`È›21aÀ¹µÇÈ›21aù›22aú›21aȼ¹Ç¹›22aÅɵÀ½ì¹ÆÇ›14m›21a,423›10m›73aÊ›494aµÀɹ +›1114d›678`z›743a¼µ›22a¹›22aµ›21a¸¹ºµÉÀÈ›21aÃÆ›21a¹ÌÄÀ½·½È›21aÊ +›1170d›672`ʽ¸¹¸á›20aȼÆÃÉ»¼›18aȼ¹›19ah#,$›19aìÀ¹›19aÃÆ›18aµ›19a·ÃÁÁµÂ¸ðÀ½Â¹›19aÅɵÀ½ì¹Æå›20aȼ¹›19aÄÆûƵÁ +›1170d›607`ÄÆà +›1227d›607`·µÂÂÃÈ›16aÆÉ›16a˽ȼÃÉÈ›15aÇÃÁ¹›16aÇÃÉÆ·¹›16aú›16aĽ̹À›16aìÀ¹Çâ›22a¤º›16a¶›1aÃȼ›17aºÃÆÁµÈÇ›14aú›16aĽ̹À›16aìÀ¹Ç +›1283d›1218`¿›666aÍ›10aµÈȹÁÄÈ +›1283d›607`µÆ¹›11a½Â›10aÉǹ›11aµÈ›10aµ›11aǽȹá›10aȼ¹Â›11aȼ¹›11aĵ·›22a¹¸›11aùǛ11a˽ÀÀ›9a¶›1a¹›12a½ÂÇÄ›1a¹·È¹¸›11a¶›1a¹ºÃƹ›11aµÂ +›1340d›607`ÈÛ15aÃÄ›1a¹Â›16aÉÂĵ·›22a¹¸›15aìÀ¹Çâ +›1340d›890`¿ +›1396d›678`¯›120a¹›18aÉǹ›18aú›17aȼ¹›18a$5),.TW›17a·ÃÁÁµÂ¸á›18a¹µ·›178aÉÇÈ›18a½ÇÇɹ›18aȼ¹›18a}|§ +›1396d›707`Û17aÁµ¿›723a¼›18aÉǹƛ18aÁ +›1436d›15m›799`HM +›1452d›10m›607`·ÃÁÁµÂ¸ +›1546d›12m›607`ºcbi»¶›10m›22a2%3›24a#/--!.$›23a$5)3/,.TW +›1639d›607`ÈÛ18aƹµ¸›18aȼ¹›19aÞÄ›1aÃÇǽ¶ÀÍ›17aƹʽǹ¸ß›18a·ÃÁÁµÂ¸›19a¸¹ì½ȽÛ18aìÀ¹å›20a¯›17a³Â½·½µÂÇ›18a·µÂ›19a¸Ã +›1649d›1753`~ +›1696d›607`ȼ½Ç›15aºÃÆ›15aȼ¹½Æ›16aÉǹÆÇ›16aµÉÈÃÁµÈ½·µÀ›74aÍ›15a½Â·Àɸ½Â»›16aȼ¹›16aµ¶›1aÛ22a¹›15a2%3›24a#/--!.$›14a½Â›16aµ +›1696d›1227`ÀÍ›14a¶›386aÊ +›1752d›607`·ÃÁÁµÂ¸›15aÄÆÛ1a·¹¸Éƹ›16aȼµÈ›15aµÀÀ›14aÉǹÆÇ›15aú›15a¯›18a³›15a¹Ì¹·Éȹâ +›1762d›1378`~ +›1809d›678`~Ê›1155aÍ›19a½ÇÂÝÈ›20aȼ¹ +›1809d›732`¹Â›21a¶›1a¹Èȹƛ21aÞ¶›1a¹·µÉǹ›22aȼ¹›21a±¨®›21a|ÃÁÁµÂ¸›21a}¹ì½ȽÛ20a°È½À½È +›1865d›607`ºµÇȹÇÈ›14aú›15a¶›1a¹µÇÈÇÛß›20a½Ç›15aºÃÆ›14aȼ¹›16aÇÍÇȹÁ›14aÁµÂµ»¹Æ›15aÈÛ15aµ¸¸›15aȼ¹›15a$5),.TW›15a·ÃÁÁµÂ¸ +›1922d›607`ÈÛ423a%2h%7%›14aÇÛ16aȼµÈ›15aȼ¹›16a·ÃÁÁµÂ¸›17a½Ç›15aµÀË›21aÍÇ›15aµ›20aµ½Àµ¶À¹›15aà+›1922d›664`282^2(!1%j$#,3!",›715aµ›78aÊ +›1978d›1202`Í›15a½ÇÇɽ»›15aȼ¹›15a·ÃÁÁµÂ¸ä +›1978d›607`µ›15aÇÍÇȹÁð˽¸¹›15a¶µÇ½Çå›14a¸Ã›15aȼ½Ç›15a¶ +›2072d›12m›607`ºcbi»¶›10m›22a2%3›24a#/--!.$›23a$5)3/,.TW›22aq +›2128d›12m›631`¶›10m›478a282,)"o$›166a2h%7%›22aq +›2128d›680`i3!",%l282^#/--/.jn›190a#,3!",% +›2185d›12m›631`¶›10m›478a2,)"o$#,›166a%7% +›2185d›680`i/43l282^#/--/.jn28›190a3!",%2h +›2278d›1392`ÃÉ›11a¼µ›22a¹›12aËƽȹ›10aµ··¹ÇÇ›12aÈÛ11aȼ¹›12a¸½Æ¹·ÈÃÆÍ +›2278d›607`¯¼½Ç›12a·ÃÁÁµÂ¸›11a·µÂ›12aÃÂÀÍ›11a¶›1a¹›13a¹Ì¹·Éȹ¸›13a½º›11aÍ›105aÊ +›2319d›15m›823`HN +›2335d›10m›607`282^2(!1% +›2456d›13m›1056`y{w|›19aaun{m{¤›18ary{›19a~|q›18a¢u}t›19a}tq›18af~q~q +›2456d›607`Z¬¨›56a[{qm}uxs›18am›19a^ +›2542d›10m›1116`Í›11aȼ¹›11a±›153aȹƛ11aÇÍÁ›84aÈ›9a½Ç›11a·Ã›162aÍ›12m›11aÛâåàæ›10m›2aå +›2542d›607`¯¼¹›11aºÃÆÁµÈȽ»›9a½ÁÄ›1aÃǹ¸›11a¶›137az³›10aÄƽ›145a¶½Ã›135aÈÆÃÀÀ¹¸›9a¶ +›2598d›607`ȼ¹›16a01).3›285a¹Ç›15aµ›15ai&/1-l›14aÅɵÀ½ì¹Æ›15a˼½·›99aÍ›15a¶›1a¹›16aÉǹ¸›16aÈÛ14aÇÄ›1a¹·½ºÍ +›2598d›820`·ÃÁÁµÂ¸›15aȵ¿›514a¼›15aÁµ +›2665d›14m›644`Ýá +›2681d›11m›676`{¨¥›17a¬¡´´¥²›16a£¡®®¯´›17a¢›1a¥›17a·²©´´¥®›16a¡³›13m›17a1%5›13a/--1TV&›58a0R›58aRW›11m›273a¯µ¬¤›17a£¡µ³¥ +›2681d›13m›1453`-,1›38a.5*›11m›53a¢›1a¥£¡µ³¥›17a´¨¡´›17a· +›2726d›632`n~›15ay¥£¯²¤›17av¡®¡§¥­¥®›591a´¥²°²¥´›17a´¨¥›16a¥¸°¡®¤¥¤›17a³´²©®§ +›2726d›607`|›402a´›17az¥²¶©£¥³›16aÃyvzÄ›17a´¯›16a¡´´¥­°´›16a´¯›15a©® +›2772d›13m›819`%5R›58a-,›58a.5›58aVH›58aW›15mË›4aË›6aË›11m›6aÁ +›2772d›13m›607`1%5›13a$(0)TV1›58aWV&›38a10R›38a*RW›38aLGG +›2802d›14m›644`Ýâ +›2818d›11m›676`z¯­¥›9a³¯²´›9a¯¦›9a¬¯§©£¡¬›8a®¡­¥›9a¯²›9a¯´¨¥²›9a­¥¡®³›10a¯¦›8a¥¸°²¥³³©®§›10a´¨¥›9a³°›1a¥£©Í£¡´©¯®›10a¯¦›8a´¨¥›9a¤©²¥£´¯²¹ +›2863d›731`¨›13m›135a,GJ›38a*$›11m›13a²¥³©¤¥³›16a·©¬¬›15a­¯³´›16a°²¯¢¡¢¬¹›17a¢›1a¥›16a²¥±µ©²¥¤È›18a¡´›15ayvpzÅ›16a·›51a¥¥°›16a¡¬¬ +›2863d›607`©®›16a·¨©£›13m›36a$3(1-*›58aR#›11m›952a¥›16a« +›2909d›607`³µ£›854a¨›13a´¨¥›13a¬¯§©£¡¬›12a®¡­¥›13m›14a1%5›12a%5%T›11m›12a²¥¦¥²³ +›2909d›659`¨›14a£¯­­¡®¤›14a¤¥Í®©´©¯®›13aͬ¥³›13a©®›13a´¨¥›13a¤©²¥£´¯²¹›14a´¯›13a·¨©£ +›2939d›14m›644`Ýã +›2955d›11m›1097`·›14a²¥£¯­­¥®¤³›15a°¬¡£©®§›14a´¨¥›13a²¥¶©³¥¤›15a´¡¢¬¥³›13a©®›13m›14a060Q#-+›38a,›11mÅ›11a³¯ +›2955d›676`w¯´¥›14a´¨¡´›14a´¨©³›13a³¥£´©¯®›14a®¯›13m›888a+- +›3000d›11m›607`´¨¡´›13a³¥°¡²¡´¥›13a®¯›1a¤¥³›13a©®›12a¡›12a£¬µ³´¥²›12a¤¯®Â´›13a¥®¤›12aµ°›13a²µ®®©®§›13a¤©Ì¥²¥®›46a¥²³©¯®³›13a¯¦›12a´¨¥›12a´¡¢¬¥³È›13a´¨©³ +›3000d›1637`´›13a¶ +›3046d›607`·›241aÅ›13a¯¦›13a£¯µ²³¥Å›14a©¦›12a{›336a¥²¥›13a®¯´›13a©®³´¡¬¬¥¤›13a£¬µ³´¥²Ñ·©¤¥Æ +›3046d›634`¯µ¬¤›13a®¯´›13a¡°°¬¹›271a~›13a¡®¤›14a©´³›12a¦²©¥®¤³›13a· +›3054d›1130`r +›1;1898;2907;2;12!| +›1;669;2770;2;12!| +›1;1303;2679;2;12!| +›1;607;2636;2;598!| +›1;610;2181;4;21!| +›1;610;2124;4;21!| +›1;1026;662;2;15!| +›1;771;662;2;15!| +›1;682;662;2;15!| +›1;1636;605;2;15!| +›1;1206;605;2;15!| + + +›462d›12m›772`âåàæ›14aÛâå›14aèæÚ›16aêÞçÝ›15aÈÊíð›15aÍèÚèÚ›10m›515aÑÐ +›462d›12m›449`¿ôñ›45aÂÚøáÞáÜ›16aÄ +›607d›10m›1078`Ƚ»›18aµÂ›432a¼›18aºÃÆÁ›19a¸¹ìÂ¹Ç +›607d›449`ȼ¹›20aºÃÆÁ›18aÈÛ18a¶›1a¹›20aÉǹ¸›20a˼¹Â›19aÄƽ›143aÍ›19aĵÆȽ·ÉÀµÆ›18aìÀ¹â›32a~µ· +›664d›609`ȵ¶À¹›15aǽι›17aú›16a¹µ·›310aÍ›15aÇÄ›1a¹·½ºÍ›17aȼµÈ›16a·¹Æȵ½Â›12m›15aæÚçèã›17aøßÚæ›10m›18a¶›1a¹ +›664d›449`ȼ¹›17aÄƽ›316a¼›16aĵ»¹á›16aµÂ¸›17aÁµ +›720d›449`ÃÉÈÄÉÈ›12aÈÛ10aȼ¹›12aÄƽ›407a¼›12a¾Ã¶›11aµÂ¸ãÃÆ›11aĵ»¹â›19az›11aǹĵƵȹ›11aÀ½¶ÆµÆÍ +›720d›801`ȹƛ11aµÈ›11aȼ¹›11aÇȵÆÈ›10aú›11a¹µ· +›777d›563`¼›16aǹÈÉÄ›15aìÀ¹Ç›15aÁµ›415a¼›15aÅɹɹâ +›777d›449`ú›15aÇÉ·›312aÍ›15a¶›1a¹›16aÇÄ›1a¹·½ì¹¸›16aºÃÆ›15a¹µ· +›833d›817`¼›12aǹÈÉÄ›13aìÀ¹Ç›13a˽ÀÀ›11a¶›1a¹›13aƹÅɽƹ¸›13aºÃÆ›12aÉǹ›13a˽ȼ›12aµÂ›12a§©ÏÒá›13aµÂ¸›12aµÈ +›833d›520`z›13a·ÃÉÄÀ¹›12aú›13aÇÉ· +›889d›715`Û14aȼ¹Í›17aµÆ¹›15a¼¹À¸›17a½Â›16aȼ¹›16aìÀ¹›471ah3,"›104a¼ +›889d›449`ȼ½Ç›16a½ÂÇȵÀÀµÈ½›548a282^,)"1!18j,.TW#3,›109a˼½· +›930d›15m›769`HO +›946d›10m›449`½Ç›18aµ›17aȹÌÈ›17aÀ½¶ÆµÆÍ›36aâ›28a¤È›18a½Ç›17a¹·¹ÇǵÆÍ›491a¼›18aµ›17aÀ½¶ÆµÆÍå›17aȼ½Ç +›946d›1128`á›18aȼ¹Æ¹ºÃƹá›18aÈÛ17a·Æ¹µÈ¹›18aÇÉ· +›1002d›449`¹¹¸›17a¶›1a¹›15a¸Ã¹›16aÃÂÀÍ›15a÷¹ä +›1084d›12m›449`ºcbi»¶›10m›23a,)"1!18i#1%!3%i3›524a, +›1084d›1020`%73›22a282^,)"1!18j,.TW#3 +›1166d›449`¡›130aȽ»›12ah,.W›432a˽»›11aÈ›31aÛ12aǹÈÉÄ›13aìÀ¹Ç›13a˽ÀÀ›11a¶›1a¹›14aƹÅɽƹ¸ä +›1166d›475`ÃÆ›13aÄƽ›198aìÀ¹Çá›13aµÈ›12aÀ¹µÇÈ›12aȼ¹›13aºÃÀÀÛ121aË +›1248d›505`Ðâ›22a1%2%3h373›293aȵ½Â›17aȼ¹›18a¹Ç·µÄ›1a¹›19aǹÅɹ·¹›18aÈÛ18aƹǹț17aȼ¹›18a§©ÏÒ +›1248d›796`ó›17aǼÃÉÀ¸›17a·Ã +›1305d›1049`ÉÇ›13a·À¹µÆ½Â»›12aµÂ›541aÍ›12a¶›1a¹ +›1305d›563`ÈÛ12a½ÈÇ›12aºµ·ÈÃÆÍ›12aǹÈȽ»Çá›12aȼ›269aÍ›13a¹ÆÆÃÆ›12a·Ã¸½È½ÃÂÇâ›18a¯¼½Ç›13aÁµ +›1354d›15m›1344` +›1361d›10m›743`Ë›52a¼µÆµ·È¹Æ›12a¹Ç·µÄ›1a¹›13aǹÅɹ·¹›14aé›36a<Ýá›12aµÀȼÃÉ»¼›12aÄÆÃÄ›1a¹Æ›13aƹǹÈȽ» +›1361d›563`¾ÉÇÈ›12aȼ¹›13aÈ›31aÛ11a· +›1368d›15m›1358`Á +›1410d›1088`›88a +›1417d›10m›563`ú›15aµÂ›16a§©ÏÒð«ÀÉÇ›15aƹÅɽƹǛ15aé›37an`I›36a<›354a¹¿ÈÆý̛14aÁÛ1a¸¹›16a½Ç +›1417d›1257`Ý›15aÈÛ15a¹ÂÇÉƹ›16aȼµÈ›15a¯ +›1424d›15m›1102`Á›85aÁ +›1474d›10m›563`·ÃÆƹ·ÈÀÍ›14a·µÂ·¹ÀÀ¹¸â +›1563d›505`Ñâ›22a0/131!)3h373›300aȵ½Â›20a¹Ç·µÄ›1a¹›20aǹÅɹ·¹Ç›22aÈÛ19aÉǹ›21aȼ¹›20a§©ÏÒ +›1563d›870`ó›19aǼÃÉÀ¸›20a·Ã +›1619d›896`ȵȽÃÂá›20aÉǽ»›21aȼ¹›21aµÄÄÆÃÄƽµÈ¹›20aĵě1a¹Æ›21aǽιå›23aµÈ›21a­¨|® +›1619d›563`½Â›21aÄ›1aÃÆÈƵ½È›19aÃƽ¹Â +›1676d›595`¹›15aÉǹ›16a~ÉÆÃÄ›1a¹µÂ›16azÓ›16aĵě1a¹Æ›16a½Â›15a¹Ìȹ¸¹¸›17aÄ›1aÃÆÈƵ½È›14aºÃÆÁµÈå›14aµÂ›15aµÄÄÆÃÄƽð +›1676d›563`Ë +›1725d›15m›1043`›159a›111a›63a›63a›64a +›1732d›10m›854`ÃÉÀ¸›12a¶›1a¹ä›19aé›36an_VVy*›36anUZF›36ac"›36adT›37aer›36afsÝâ›18a¯¼½Ç›13aǹÈÉÄ +›1732d›563`µÈ¹›12aǹÅɹ·¹›14aË +›1739d›15m›1057`Á›156aÁ›110aÁ›61aÁ›61aÁ›62aÁ +›1789d›10m›563`ǹÅɹ·¹›13aµ·ÈɵÀÀÍ›11a½Ç›11aƹÅɽƹ¸›12aÃÂÀÍ›11aºÃÆ›11aÂÃÂð¯›342aȹÆå›12a½È›11a¸¹ð +›1789d›1436`³›12aÉǹ›12aú›11aȼ¹›12aÄƽ +›1799d›1410`~ +›1845d›563`ì¹Ǜ14aȼ¹›13aĵě1a¹Æ›14aµÆ¹µ›13aÈÛ13a¶›1a¹›14aÉǹ¸á›14aǹÀ¹·ÈÇ›13aµ›13aÇȵ¸µÆ¸›13aÞ}~|›12aÁÃÂÃÇĵ·¹¸ß +›1902d›624`Èá›25aµÂ¸›24a¸¹Ç½»ÂµÈ¹Ç›23aȼ¹›24a¢Ï›13mö›8aö›7aö›10m›107a¼µÆµ·È¹Æ›23aǹÈÇâ›45a©Ã¹›24aú›23aȼ½Ç›23a½Ç +›1902d›563`ºÃ›584a¢Ò›23a· +›1958d›1075`Í›11a¯›18a³á›11aǽ·¹›14m›43a_VlhXYpq›10m›10aÄÉÈÇ›11aµÄÄÆÃÄƽµÈ¹›10a¹Çð +›1958d›563`ÇÈƽ·ÈÀÍ›10a¹·¹ÇǵÆÍ›11aºÃÆ›10aÉǹ›11a¶›14m›250aR +›1968d›10m›1135`~ +›2015d›906`ÈÛ11aȼ¹›13ah,.W›12aìÀ¹›13aÈÛ12a·Ã›485aË›42a¹Æá +›2015d›563`·µÄ›1a¹›13aǹÅɹ·¹Ç›14a½Â›426aÈÆÃÀ›11aµÀÀ›11aȼ¹Ç¹›13aº¹µÈÉƹÇå›13a¼Ã›31a¹Ê +›2065d›14m›1820`} +›2071d›10m›563`ÇÉ·›304aÃÉÀ¸›15a¶›1a¹›16aÉǹºÉÀ›15aºÃÆ›15aºÃÆÁµÈȽ»›13aÃƸ½ÂµÆÍ›14aÞÂÃÂð§›5a¯›18a³ß +›2071d›625`¼›16aµ›15aǹÈÉÄ›15aìÀ¹›15aË +›2085d›1866`~ +›2127d›738`Ƚ»›14aÛ15aȼ¹›15a§©ÏÒâ +›2127d›563`ȹÌÈ›15aÄƽ +›2209d›564`Í›20a¶›1a¹›22a·Ã›22a¹Â½¹Â›645a¼›21aµÇ›20a,!.$2#!0%h373á +›2209d›449`¤È›21aÁµ›178aÊ›101aÈ›20aÈÛ20a¸¹ì¹›22aÃȼ¹Æ›20aǹÈÉÄ›21aìÀ¹Ç›21aÇÉ· +›2266d›449`%,)3%h373á›14m›14a%3#›10m›3aâ +›2385d›13m›846`y{w|›19ary{›18a~|q›19a¢u}t›18aac¥¨›19af~q~q +›2385d›449`Z¬©›56a\q­xuxs›19a^ +›2471d›10m›1328`Ƚ»›10ah,.W›408aÍ +›2471d›449`ªÂÀÍ›12aù›11aºÃÆÁ›10a½Ç›11aƹÅɽƹ¸›11aÇÄ›1a¹·½ì·µÀÀÍ›11aºÃÆ›11aÄƽ›194aìÀ¹Çå›12aÃȼ¹Æ›11aºÃÆÁÇ›11aÁµ +›2528d›449`¶›1a¹›13a¸¹ì¹¸›13aºÃÆ›11a·Ã›22a¹Â½¹Â·¹›13a˼¹Â›12aÄƽ›600aÈ›11a­¨|®á +›2528d›794`Ê›350aȽ»›11aÃȼ¹Æ›11aìÀ¹Ç›12aÛ12aȼ¹›12a§©ÏÒâ›19az +›2584d›449`ȼ½Ç›16aºÃÆÁ›16a½Ç›15a·µÀÀ¹¸›16a0,/3›17a&/1-›833aȽ» +›2584d›1033`á›15aǽ·¹›17a½È›15a½Ç›16aµÀÇÛ15aÉǹ¸›17aÈÛ16añºÃÆÁµÈï›14aºÃÆ›16aÄƽ +›2641d›449`ìÀ¹Ç›18a˼½·›611a¹Â›17aºÆÃÁ›17a»ÆµÄ¼½·Ç›18aȹÆÁ½ÂµÀÇâ›27a¤È›18a¼µÇ +›2641d›633`¼›18a·ÃÂÇȽÈÉȹ›17aǷƹ¹Â›19a¸ÉÁÄÇ›19aȵ¿ +›2697d›449`¶›1a¹¹Â›20aµÆ¶½ÈƵƽÀ›415aÉÁ›592aË›18aÉÇ¹Ç +›2697d›741`Í›16aµÇǽ»Â¹¸›18aµÇ›17aºÃÆÁ›18a›61a¶›1a¹Æ›18a×Òá›18aµÂ¸›18aȼ¹›18a¹ÌµÁÄÀ¹›18a¶›1a¹Àà +›2753d›773`ÉÁ›376a¼›16aÂÃÁ¹Â·ÀµÈÉƹ›16a¹¹¸Ç›16aÈÛ15a¶›1a¹›16aµÇǽ»Â¹¸ +›2753d›449`ȼ½Ç›15aµÁ¹›16aµÂ¸›16a›61a¶›1a¹Æâ›21aªº›16a·ÃÉÆǹá›15aÇÉ· +›2810d›449`Çɽȵ¶ÀÍ›15aµÈ›14a¹µ·›147aÍ›15aȼ¹›16aÇÍÇȹÁ›14aÁµÂµ»¹Æâ +›2810d›740`¼›16aǽȹ›14a¶ +›2866d›520`¯¼¹›17aºÃÀÀÛ349aÃÉÀ¸›16a»¹Â¹ÆµÈ¹›17aµÂ›17aµÄÄÆÃÄƽµÈ¹›16aºÃÆÁå›16aȼ¹›17aºÃ›1aÃÈð +›2866d›700`˽»›15a·ÃÁÁµÂ¸›17aË +›2923d›449`ÂÃȹǛ15a¸¹Èµ½À›15a½È¹ÁÇ›14aÈÛ15a˼½·›352aȽÛ13aǼÃÉÀ¸›15a¶›1a¹›16aĵ½¸ä +›2923d›962`¼›15aĵÆȽ·ÉÀµÆ›14aµÈȹ +›2984d›14m›486`Ýä +›3000d›11m›519`t´›21a©³›21a¡›22a²¥±µ©²¥­¥®›230a´¥²›22a³¹­›70a´›22a´¨¡´›22a¦¯²­³›22a¬©¢²¡²©¥³›21a¢›1a¥›22a©®›21a¤©²¥£´¯²¹ +›3000d›842`´›22a¯¦›21a´¨¥›22a°²©®›134a¢©¯® +›3046d›13m›449`060Q*("/›58aT +›3046d›608`!/6 +›1;449;2956;2;598!| +›1;923;2582;2;15!| + + +›462d›10m›607`ÑÑ›12m›430a¿›45aÇÊÄ›140aÐÇËÊ›16aÄ›431aÅÃÎÏ +›462d›1241`ËÎÉ¿›159aËΛ14aÏÕÏÐÃÉ›16aÉ¿Ê¿ +›607d›15m›607`90/1:8›11m›23a$%&)-%a&.1,h +›657d›15m›629`8›11m›264a-dm/G›108aK›20aWWOYQ›21aNBKAGLK›20a61!/›21a?GI›21aD:J>I›21aHIBFK>IJmh +›657d›676`a$%2#1)/3).›108aIKI:B +›707d›15m›629`8›11m›23aa+%-'3(dWWh +›742d›15m›1549`½À +›757d›629`8›11m›23aa,!1')-d]".›108aQ_+%&›108a)'(3d›86a/dQ^h +›757d›917`33.,d›108a3dQ_1›108aQ_3. +›791d›15m›912`¼ +›791d›896`¾ +›806d›629`8›11m›23aa23.#*d!Uh +›841d›15m›939`¾½ +›856d›629`8›11m›264ah +›856d›676`a-.314-#!3% +›906d›15m›629`8›11m›23aa-.61!/h +›941d›15m›912`¾ +›941d›896`¾ +›956d›629`8›11m›23aa6)$3(dYQh +›991d›15m›1217`¿ +›991d›1201`¾ +›1006d›629`8›11m›264a%3_/.›108a3^h +›1006d›676`a2%34/d]1%2›108a131!) +›1056d›15m›629`8›11m›88a/+.3›15a&.1,›21aYT +›1176d›13m›607`Z¬ª›56ahq}}uxs›18a}tq›18a°i›332a¤|uomv›19a[tm{mo}q{u|}uo| +›1176d›1103`q{wuxmv«|®›17aet +›1261d›10m›1750`ȹƛ18a¼µÇ›18a¶›1a¹¹Â›19a·ÃÂð +›1261d›607`¯¼¹›19aìÆÇÈ›18aÇȹÄá›18aµÇÇÉÁ½Â»›18aȼµÈ›18aµ›18a§©ÏÒ›18aÃÆ›18a§©ÏÒð«ÀÉÇ›18aÄƽ +›1318d›607`¹·È¹¸›13aÈÛ12aµ›12aĵÆȽ·ÉÀµÆ›12aȹÆÁ½ÂµÀ›11aÄ›1aÃÆÈ›12aú›12aȼ¹›12m›42a¿Ô›10má›12a½Ç›12aÈÛ12a·ÃÂì»Éƹ›13aȼµÈ›11aÄ›1aÃÆÈå›13aµÈ +›1318d›12m›1445`Ò +›1374d›10m›607`­¨|®›16aȼ¹›17aȹÆÁ½ÂµÀ›15a¼µÇ›16a¶›1a¹¹Â›18a·Ã¹·È¹¸›17aÈÛ16at37!Xj›338aʽÃÉÇÀÍ +›1374d›1625`á›16a¶ÉÈ›17aȼ½Ç›16a˽ÀÀ›15aö +›1431d›1092`Èâ›19a¯¼¹Æ¹ºÃƹ›13aȼ¹›14a¹ÌµÁÄÀ¹Ç›13aƹº¹Æ›13aÈÛ13aȼ¹›14aȹÆÁ½ÂµÀ›12aÀ½Â¹ +›1431d›607`¶›1a¹›14a½ÂÇȵÀÀµÈ½ÃÂð¸¹Ä›1a¹Â¸¹Â +›1487d›1038`¶›1aÃÀ›11a,!2%1t3%1-á›11aȼ½Ç›11a·µÂ›12a¶›1a¹›13a¹Åɵȹ¸›12aÈÛ12aȼ¹›12aƹµÀ›11a¸¹Ê½·¹ +›1487d›607`ȼÆÃÉ»¼›12aȼ¹›12a}|§›12aÇÍÁ +›1544d›607`¶›709aÈ›14aÇÉ·›259a˽»ä +›1544d›631`Í›15aÁ¹µÂÇ›15aú›15aµ›15a}|§›15aÇÈƽ»›14aµÇǽ»ÂÁ¹Â›93a¼›16aµÇ›15aȼ¹›15aºÃÀÀà +›1629d›12m›607`ºcbi»¶›10m›22a,!2%1t3%1-›23al›24axt37!Xjx +›1715d›607`¯¼¹Æ¹ºÃƹá›14aË›885a¹›13aȼ½Ç›13aÞƹº¹Æ›13aÈÛ13aȼ¹ +›1715d›857`¹›13a˽ÀÀ›13a¹¹¸›14aÈÛ13a½ÇÇɹ›14aµ›13a·ÃÁÁµÂ¸›14aÇÃÁ¹Ë¼µÈ›13aÀ½¿ +›1771d›607`ºÃ›1aÃÈÂÃȹǛ14aºÃÆ›15aȼ¹›14m›15a1›155aO›31a%›10m›18a¶›1a¹¼½Â¸›17aÇÃÁ¹›15aú›14aȼ¹Ç¹›16aǹÈȽ»Çßä +›1771d›14m›969`!)2.-›16a$L%31 +›1857d›12m›607`ºcbi»¶›10m›22a2%3›24a3%1-).!,q +›1897d›15m›944`IK +›1913d›12m›631`¶›10m›23ai0%1-!.%.3q +›1954d›15m›1129`L +›1954d›1112`I +›1970d›12m›631`¶›10m›23ai$%5)#%t380%l,.TWq +›2026d›12m›631`¶›10m›23ai&/1-q +›2083d›12m›631`¶›10m›23ai3!"q +›2123d›15m›992`IM +›2139d›12m›631`¶›10m›23ai20%%$lU]VTTq +›2180d›15m›944`IN +›2196d›12m›631`¶›10m›23ai6)$3(lVYYq +›2254d›14m›644`Ýå +›2270d›11m›676`w¯›12a­¡²§©®³›12a¡²¯µ®¤›13a´¨¥›12a´¥¸´È›12a´¨¥³¥›12a£¯µ¬¤›12a©®›492a¨›11a­©§¨›62a¥® +›2270d›1393`´²¯›1a¤µ£¥›12a³°µ²©¯µ³›13a³°¡£¥³Å›13a·¨©£›113a´›12a¥¶ +›2315d›607`¢›1a¥›13a©®›13a´¨¥›13a­©¤¤¬¥›13a¯¦›13a¡®›13a¥³£¡°›1a¥›14a³¥±µ¥®£¥ +›2345d›14m›644`ÞÜ +›2361d›11m›952`´›11aª¯¢³›11a·©¬¬›10a¯®¬¹›11a¢›1a¥›12a²¥¬¥¡³¥¤›11a´¯›11a´¨¥›12a°²©®›248a´¡©®³›12a´¨¥›11a£¯²²¥£´ +›2361d›676`r®³µ²¥›12a´¨¡´›12a°²©®›627a´¥²›11a·¨¥®›12a©´›10a£¯® +›2407d›729`¹°›1a¥Æ +›2407d›607`°¡°›1a¥²›14a´ +›2436d›14m›644`ÞÝ +›2452d›13m›676`S,-1/2,#›38a%S,›58a!.›11m›423a¨¡²¡£´¥²›13a²¥£¯²¤³›13a¯¦›12a´¨¥›13m›13aR*,J›11m›11aͬ¥³›12a¤¯®Â´ +›2452d›13m›835`!1›58a-4/›11m›49a´¯›12a¥®³µ²¥›13a´¨¡´›13a´¨¥›13a¬¯®§›13a£ +›2498d›607`§¥´›13a¢²¯«›127a¹›13a´¨¥›13a³¹­›70a´ +›2498d›745`¥®›14aµ°›14a¢›164a¢©¯® +›2528d›14m›644`ÞÞ +›2544d›11m›676`{¨¥›12a·©¤´¨›11a©³›11a³´©¬¬›10a³°›1a¥£©Í¥¤›12a¡³›12a´¨¥›11a­¡¸©­›131a´¡¢¬¥›11a·©´¨›11a´¨¥›12a°²©®›269a´³Å +›2544d›1347`µ­›12a°²©®›311a´¥²Â³›11a©®Ñ¢µ©¬´›11a¦¯® +›2589d›607`©®›13a¯²¤¥²›13a´¨¡´›14a¡®›276a´¥¤›14a¡²¥›13a¯¦›13a´¨¥›13a£¯²²¥£´›13a·©¤´¨ +›2589d›875`¹›13aΡ§›14a°¡§¥³›13a°²©® +›2619d›14m›644`Þß +›2635d›11m›710`¶›37a¥›14a´¨¥›13a¡°°²¯°²©¡´¥›14a³¥´µ°›14aͬ¥³›13a·¨¥®›13a´¨¥›13a¦¯²­›13a©³›13aµ³¥¤ +›2635d›676`t®›18a¯« +›2665d›14m›644`Þà +›2681d›11m›676`w¯´¥›13a´¨¡´›13a´¨©³›13a¨¡³›14a´¯›13a¢›1a¥›13a¤¯®¥›14a´¯›13a´¨¥›14m›176aÑ›11m›31a¨¡²¡£´¥²©³´©£³ +›2681d›14m›1300`Ï›1aÉÐÍÈÎÉΛ11m›29a£ +›2710d›14m›644`Þá +›2726d›11m›676`}›432a¹°›1a¥Å›13aµ³©®§›13m›12aS$%3(#%›12a16.%›11m›286a¥›12a£¡²¥›12a¯¦›12a´¨©®§³ +›2726d›712`¥›12a³¥´›12a´¨¥›12a´¥²­©®¡¬›12a¤¥¶©£¥›12a´›413aÆ›14a{¨©³›12a³¨¯µ¬¤›13a´¡« +›2772d›648`¥›13m›13aS&-/+›11mÅ›13m›10aS1!"›11mÅ›15m›11a²µ±›11mÅ›12a¡¬´¨¯µ§¨›14a·›216a¹›14a¨¡²­›13a¢›102a´©¯®©®§›13a´¨¥³¥›13a¥¸°¬©£©´¬¹Á +›2772d›607`¬©«›511a¥›12a£¡®Â´›13a¤¯›13a¡®›153a¹›14a­¥® +›2802d›14m›644`Þâ +›2818d›11m›701`¯›14a©­°²¯›18a¥›14a´¨¥›15a³°›1a¥¥¤›15a¡´›14a·¨©£›182a´³›16a¡²¥›14a°²©®›411a´¥²›15a©³›13a³¥´ +›2818d›676`{›127a¶›329a¨›14a¤¯›1a£µ­¥®›177a´¥¤Å›14a©´›14a©³›14a¢›1a¥³´›14a©¦›14a´¨¥›14a°²©® +›2863d›607`µ°›14a´¯›13a©´³›12a¦¡³´¥³´›13a³°›1a¥¥¤Å›14a»Àżººo¤ +›2893d›14m›644`Þã +›2909d›11m›676`{›126aÅ›13m›11aR*,J›11m›9aͬ¥³›10a£¯®›497a¨¡²¡£´¥²³›12a¬¯®§›10a鮣¬µ¤©®§›12a¥³£¡°›1a¥ +›2909d›703`¹°©£¡¬¬¹›238a´¡©®›12a²¥£¯²¤³›11aµ°›11a´¯›11a¡¢›1a¯µ´›12a»¿º›11a£ +›2955d›1008`¥›17a¤¯®Â´›19a·›38a´›17a´¨¥›19a´¥²­©®¡¬›17a¤²©¶›132a´¥²²µ°´›19a´¨¥³¥Å›19a¡®¤›18a©®³¥²´ +›2955d›607`³¥±µ¥®£¥³ÄÈ›22a´¨¥²¥¦¯²¥›18a·›166a¡®›327a¥²›18a´¯›18a©® +›3000d›1094`¥›18a³¥´›19a¡®›19a¡²´©Í£©¡¬¬¹›19a¨©§¨›13m›19aS4($1'›11m›16a¡®¤›20a¡¬³¯›19a¥®³µ²¥›19a´¨¡´›19a´¨¥ +›3000d›607`³°µ²©¯µ³›20apyÑus›19a°¡©²³Å›20a³¯›19a· +›3046d›607`Ò´¥²­©®¡¬Ð›13a©³›13a³¥´›13m›13aS,-4/!. +›1;1470;2724;2;12!| +›1;607;2225;2;598!| +›1;610;2192;4;21!| +›1;610;2135;4;21!| +›1;610;2079;4;21!| +›1;610;2022;4;21!| +›1;610;1966;4;21!| +›1;610;1909;4;21!| +›1;832;1054;2;14!| +›1;610;1052;4;20!| +›1;610;1002;4;20!| +›1;610;952;4;20!| +›1;610;902;4;20!| +›1;610;852;4;20!| +›1;610;802;4;20!| +›1;610;753;4;20!| +›1;610;703;4;20!| +›1;610;653;4;20!| + + +›462d›12m›449`¿ôò›45aÏÚççÞáÜ›15açÝÚ›15aûЛ269aìæÞØÖß›14aÁÝÖåÖØçÚåÞæçÞØæ›10m›351aÑÒ +›462d›12m›851`ÚåàÞáÖßóæù›14aÌÝ +›607d›473`¶›10m›23ai./61!0q +›648d›15m›738`IO +›664d›12m›473`¶›10m›23ai0!'%lZZq +›704d›15m›834`IP +›720d›12m›473`¶›10m›23ai./"1/!$#!23q +›777d›12m›473`¶›10m›23ai./-/$%-q +›833d›12m›473`¶›10m›23ai./(!.'40q +›873d›15m›714`JG +›889d›12m›473`¶›10m›23ai./%#(/q +›946d›12m›473`¶›10m›23ai$-!q +›1002d›12m›473`¶›10m›95ab,!2%1t3%1-b +›1096d›520`¨ÃÇÈ›17aÄÆöµ¶ÀÍ›17aË›69aÃÉÀ¸›17aµÆƵ»¹›17aºÃÆ›18aȼ¹Ç¹›18aÃÄ›1a¹ÆµÈ½ÃÂÇ›17aÈÛ17a¶›1a¹›19aÄ›1a¹ÆºÃÆÁ¹¸ +›1096d›863`¹›18aË +›1153d›595`¹Æ›19aȼ¹›12m›47a¿Ô›10m›263aÍ›17a½Â·Àɸ½Â»›18aȼ¹›18a·ÃÁÁµÂ¸Ç›18a½Â›18açµ›17a·ÃÁÁµÂ¸ +›1153d›449`˼¹Â¹Ê›12m›137aÒ›10m›85a½Ç›18a¶›1aÛ1aÃȹ¸á›19a¶ +›1209d›449`ÄÆÛ1a·¹¸Éƹ›17a˼½·›121aÊ›45a¹¸›15aºÆÃÁ›14a˽ȼ½Âè›493a0t5Yh#/- +›1209d›751`¼›15a½Ç›14a½Â›22aÿ›320a282^-!.!'%1j2823!134 +›1266d›520`©Ã›177a¹ÝÊ›203a¼µÆµ·È¹Æ½ÇȽ·Ç›13aú›15aȼ¹›16aȹÆÁ½ÂµÀ›14aÀ½Â¹›15a·Ã¹·È¹¸›16aÈà +›1266d›576`Ë›15aȼµÈ›14aË›55a¹›15aǹț15aȼ¹›16a· +›1322d›673`¹›10a¹¹¸›11aÈÛ10aµÇÇÛ1a·½µÈ¹›9a½È›9a˽ȼ›10aµ›10aÄƽ›446aÈ›9aÇÄ›1aÛ1aÃÀ½Â»á +›1322d›449`ȼ¹›11a§©ÏÒ›10aË›619aÈ›9aÅɹɹ›11aÞºÃÆ›10aÈƵÂÇĵƹ +›1378d›14m›449`%N'N›10m›258aÍÄ›1a¹Ç›14aȼ¹›15a·ÃÁÁµÂ¸›14a#/08›23a?BE>G:F>›23at37!Xjßå›13a½Â›13aȼ½Ç›14a¹ÌµÁð +›1378d›539`½º›13aÇÃÁ¹Ã¹›14aÈ +›1435d›567`¹Ýƹ›14a·ÃÂì»Éƽ»›15aȼ¹›15aÅɹɹ›15a2%%2›17a,!2%1á›14aÉǽ»›14a¸¹Ê½·¹›16a282^282$%5)#%j +›1435d›449`ÄÀ¹á›15aË +›1491d›449`ºÃÆ›15aÇÄ›1aÛ1aÃÀ½Â»äò +›1591d›15m›449`90/1:8›11m›23a2%3›22a$%5)#%a2/.›108a]2%%2›13a+!2%1_282[282›108a%^›20a\+!2%1›14a3%1,\ +›1591d›929`.+%$d›407a$%5)# +›1697d›10m›520`¡½ÂµÀÀÍ›61a¹›21aµÆ¹›20aƹµ¸Í›21aÈÛ20a·Æ¹µÈ¹›21aµÂ¸›21aÇȵÆÈ›19aȼ¹›21aÄƽ›258a¹›20aµÇÇÃð +›1697d›657`á›20aË›825aȹƛ20aÅɹɹå›24aË +›1754d›449`·½µÈ¹›13aȼ¹›14aµÄÄÆÃÄƽµÈ¹›13aÞ0,/3›16a&/1-ß›13a¸¹ºµÉÀÈ›13aºÃÆÁ›13a˽ȼ›13aȼ¹›13aÅɹɹá›15aºÃÆ›13aÉǹ›13a˽ȼ +›1810d›449`ÈƵÂÇĵƹ›292aȽ»á›14aµÂ¸›16aµÆƵ»¹›15aºÃÆ›15aȼ¹›15aµÄÄÆÃÄƽµÈ¹›15aǹÈÉÄ›16aìÀ¹›15aÈà +›1810d›661`È›15aÇÄ›1aÛ1aÃÀ½Â»›15aÄƽ +›1867d›1051`Ë›141a¼›15a¾Ã¶äò +›1867d›449`¶›1a¹›16aÉǹ¸›16aÈÛ15a·À¹µÆ›14aȼ¹›16aÅɹɹ›16a¶›1a¹È›31a¹¹Â›15a¹µ· +›1954d›15m›449`90/1:8›11m›330a4%h +›1954d›622`)-)3)!+)9%a04% +›2004d›15m›471`8›11m›23aa-.%-!"+%k'%-›86ah +›2004d›803`%1)# +›2053d›15m›471`8›11m›23aa-."!3#(h +›2103d›15m›471`8›11m›23aa&.1,d/+.3›14a&.1,h +›2153d›15m›471`8›11m›23aa-.1%3!)-h +›2203d›15m›471`8›11m›308a#3+h +›2203d›518`a+)"1!18d+-QT +›2253d›15m›471`8›11m›308a)9%h +›2253d›518`a2#(%$4+%d-.2 +›2287d›15m›1740`¿½ +›2302d›471`8›11m›308a"412›108a'd.-%›108a!)+%1›108a3d]/›108a)3^^h +›2302d›518`a2%/!1!3%d]-.›86a3_&+!›108a_-.31›108a_1%2%›86a.131! +›2352d›15m›471`8›11m›23aa23!13h +›2402d›15m›471`8›11m›308a%%$_›108a'_&.1›108a3›14a&.1,^h +›2402d›518`a$%&!4+3d]-.&›86a-.&+!›108a,d/+. +›2452d›15m›471`8›11m›308a1,\h +›2452d›518`a.-d\+!2%1k3% +›2502d›15m›471`8›11m›308a)-'h +›2502d›518`a1%#.1$k"+.#* +›2552d›15m›471`8›11m›88a2%%2›15a+!2%1 +›2756d›14m›486`Þä +›2772d›11m›519`x´¨¥²›13aћ13mR*,J›11m›170a´¥¤›14a¯®›13a´¨¥›13a¤¥¶©£¥›14a®¥¥¤›13a´¯›13aµ³¥›13a¯®¬¹›14a¾¾›13a¬©®¥³›13a°›1a¥²›13a°¡§¥ +›2772d›799`Ä›11aͬ¥³›13a°²©® +›2802d›14m›486`Þå +›2818d›11m›519`}›173a¡®›938a´¥²Å›25a³¯›23a³¥´›22a©´ +›2818d›555`¥›22a¤¯®Â´›23a·›38a´›23a¯°›1a¥²¡´¯²›23a­¥³³¡§¥³›24a´¯›22a´¥²­©®¡¬³›23a´¯›22a§¥´›23a´¯›22a´¨¥›23a°²©® +›2863d›13m›449`S,-"/-!$›58a1 +›2863d›608`#!0 +›2893d›14m›486`ßÜ +›2909d›11m›519`n®›355a´¥²›12að›1a¯³³©¢¬¥›13a¥²²¯²›12a³´¡´µ³›13a²¥°›1a¯²´³Ä›13a³¨¯µ¬¤›15m›13afgh›11m›11a¢›1a¥›13a¥£›147a« +›2909d›568`¹›12a©®°µ´›13a¦²¯­›11a´¨¥›13a°²©®›850a¨¯›1a¥¤›13a¢¡£ +›2955d›449`´¯›13a©´Å›12a³¯›14a³¥´›13a´¨¥›13a´¥²­©®¡¬›13m›12aS,-%#'- +›2984d›14m›486`ßÝ +›3000d›11m›519`w¯´¥›10a´¨¡´›11a´¨¥›13m›12a/%0%1›11m›8a­¯›1a¤µ¬¥›12a©³›10a®¯´›12a³°›1a¥£©Í¥¤›11a¨¥²¥È›12a©¦›10a©´›10a·›200a¢©¯®›53a¯µ¬¤›11a©®³¥²´ +›3000d›1441`¥²¥Å›11a´¨¥›11a³¹­›70a´›12a· +›3046d›971`¨›14aª¯¢ +›3046d›449`¡›13a³°µ²©¯µ³›14a¢¬¡®«›14a°¡§¥›14a¡¦´¥²›12a¥¡£ +›1;449;2727;2;598!| +›1;674;2550;2;14!| +›1;452;2548;4;20!| +›1;452;2498;4;20!| +›1;452;2448;4;20!| +›1;1242;2400;2;14!| +›1;452;2398;4;20!| +›1;452;2348;4;20!| +›1;452;2298;4;20!| +›1;452;2249;4;20!| +›1;452;2199;4;20!| +›1;452;2149;4;20!| +›1;741;2101;2;14!| +›1;452;2099;4;20!| +›1;452;2049;4;20!| +›1;452;2000;4;20!| +›1;994;1752;2;15!| +›1;1754;1589;2;14!| +›1;1150;1589;2;14!| +›1;1193;1433;2;15!| +›1;452;998;4;21!| +›1;452;942;4;21!| +›1;452;885;4;21!| +›1;452;829;4;21!| +›1;452;773;4;21!| +›1;452;716;4;21!| +›1;452;660;4;21!| +›1;452;603;4;21!| + + +›462d›10m›607`ÑÓ›12m›635aÀ›10m›46a$5),.TW›12m›14aÁËÉÉ¿Ê›14aÍÑ¿ÈÇÄÇÃÎÏ +›607d›13m›607`²›15m›69atxuvwyz›13m›25a³ÔÒÒÇÓÊ›25a¿ÙÇÑÏàËÖ× +›714d›10m›607`zÇ›14aµÀƹµ¸Í›13a¸¹Ç·Æ½¶›1a¹¸á›14aȼ¹›14a$5),.TW›283a¹Ç›12a½¹ȹ¹Â›15aÅɵÀ½ì¹ÆÇå›13aȼ¹½Æ +›714d›1302`·ÃÁÁµÂ¸›14aȵ¿ +›771d›1020`ËÇä +›771d›607`ºÉ·ȽÃÂÇ›15aµÆ¹›15aµÇ›15aºÃÀÀà +›876d›607`i23!13).'›16a0!'%l›15m*›14m›21a!'%›16a231)-'›15m›3a+›10m›22a¯›42a¹Ç›22aµ›21aÇÈƽ»ðÊ›325a¼›22aÇÄ›1a¹·½ì¹Ç +›876d›14m›977`/›10m›265aµ¿›254aµÀɹ¸›22a½È¹Á›21a˼½· +›932d›721`ȼ¹›13a›61a¶›1a¹Æ›13aú›13aȼ¹›13aìÆÇÈ›12aĵ»¹›13aÈÛ12a¶›1a¹›14aÄÆÛ1a·¹Çǹ¸â›20a¯¼¹›13aºÃÆÁµÈ›12aú›12aȼ½Ç›13aÇÈƽ» +›932d›821`ÉÁ +›989d›721`Áµ›834aËÇä +›989d›781`Í›14a¶›1a¹›16a¸¹ì¹¸á›16aÉǽ»›15a{©¡›15aÂÃȵȽÃÂá›14aµÇ›15aºÃÀÀà +›1094d›15m›821`*›14m›21a!'%›16a231)-'›15m›3a+›10m›15aääæ›15m›15a*›14m231)-'›16a)3%,›15m›3a+›15a$›15a*›14m›21a!'%›16a231)-'›15m›4a+›10mh›15m*›14m231)-'›15a)3%,›15m›3a+ +›1094d›14m›839`/›622a/ +›1173d›15m›821`*›14m231)-'›15a)3%,›15m›4a+›10m›15aääæ›15ae›15m›15a$›14a*›14m›74a'%1›15m›4a+ +›1173d›14m›1252`)-3% +›1278d›10m›721`¯¼¹›20a¸¹ºµÉÀÈ›19a½Ç›19aée›135a¼›20aÁµÈ·›128aÍ›19aĵ»¹›20a›61a¶›1a¹Æá›20aµÂ¸›20a¼¹Â·¹›21a˽ÀÀ +›1278d›1063`Ýá›19a˼½·›142a¼¹Ç›19aµÂ›177aÉÁ +›1334d›970`Í›21aÄÆÛ1a·¹Çǽ»›21aȼ¹›21aìÆÇÈ›21aĵ»¹›21a½Â›21aȼ¹›21aìÀ¹â›38a~µ·›219a¹ +›1334d›721`·ÃÁÁ¹Â·¹›21a¶›890a¼›20aÇÉ··¹ÇÇ½Ê +›1391d›15m›721`*›14m231)-'›15a)3%,›15m›4a+›10m›15a½Ç›15aÉǹ¸›17aÈÛ15aµÈȹÁÄÈ›14aÁµÈ·›243a¼›16aÇÉ··¹¹¸½Â»›16aù›16aú +›1391d›1471`¼¹Ç›15a˽ȼ›15a¹µ· +›1447d›721`¯›186aȹÆÇ›12auQMA>B@AMßá›15aÉǹ +›2771d›721`ǽι›16aÞ¶›59a¼µÂ»½Â»›16aÇÉ·›184aÍ +›2828d›721`ú›398a$2#!0%›367aÊ›84a˽»›13aȼ¹›16aĵ»¹â +›2828d›773`i/1)%.3!3)/.l,!.›156a˽ÀÀ›14aÀ¹µ¸›15aÈÛ14aȹÌÈ›15aÛ22a¹Æíà +›2933d›607`iç./è,/'›224aá›14m›49a_VlhXYpq›10m›16a˽ÀÀ›16a¸¹À¹È¹›17aȼ¹›18aÀû›16aìÀ¹›17aÞh380›100aʽ¸¹¸›17aÂà +›2933d›798`ªÆ¸½ÂµÆ½ÀÍ›14m›26aR›10m›766aß›17aÄÆà +›2990d›1042`Í›21aºÃÆÁ›21aË›353aË›42a¹Æá›22a½º›21aȼ¹›21aÄÆûƵÁ›21a½Çð +›2990d›721`µÂÃÁµÀ½¹Ç›20aú›21aµÂ›190a¹Æ¹›21a¸¹È¹·È¹¸â›40a£Ã›31a¹Ê +›3046d›721`Çɹ¸›14m›16a!-8›10m›219aµÆ½»›15aÁ¹Çǵ»¹Çá›15aȼ¹›15aìÀ¹›16a˽ÀÀ›14a¶›1a¹›16aƹȵ½Â¹¸›16aºÃÆ›15aÀµÈ¹Æ +›3046d›915`¹ÆÆÃÆ›15aÃÆ›15aË +›1;730;2325;2;15!| +›1;706;1994;2;15!| +›1;1169;1720;2;14!| +›1;842;1720;2;15!| +›1;778;1720;2;15!| +›1;856;1389;2;14!| +›1;956;1171;2;14!| +›1;1881;1092;2;14!| +›1;1573;1092;2;14!| +›1;1302;1092;2;14!| +›1;928;1092;2;14!| +›1;1066;874;2;14!| +›1;826;874;2;15!| +›1;479;675;39;8!| + + +›462d›1898`ÑÔ +›607d›563`Ä›1a¹ÆÉǵÀâ›26a{Í›17aÇÄ›1a¹·½ºÍ½Â»›17ai,/'›61a¹›17a·µÂ›17aºÃÆ·¹›17aȼ¹›17aÄÆûƵÁ›16aµÀË›21aÍÇ›15aÈÛ17aƹð +›607d›1127`á›16aË›565aµ +›664d›563`ȵ½Â›21aȼ¹›22aìÀ¹á›22a˼½ÀÇÈ›21ai./,/'›181aµ›446a¹Â›22a½º›21a¹Æð +›664d›1147`˽ÀÀ›20aµÀË›21aÍÇ›20a¸½Ç·µÆ¸›21aȼ¹›22aìÀ¹á›23a¹Ê +›720d›563`ÆÃÆÇãË›189a¹Æ¹›15a½ÇÇɹ¸â +›720d›695`µÆ½»Ǜ13aË +›796d›771`á›10aȼ¹›10ai,/'›323a¹›9aµ›10aÊ›192a¼›10a·µÂ›10a¶›1a¹›11aµ›10a·ÃÁÄÀ¹È¹ +›796d›563`ªÄȽõÀÀÍ›198aÅɵÀ½ì¹Æ›9a·µÂ›11aȵ¿›82aµÀɹá›11a˼½· +›852d›1210`Ê›487a¼›22aÂÃÆÁµÀÀÍ +›852d›563`ÃÆ›22aĵÆȽµÀ›20aìÀ¹›22aÇÄ›1a¹·½ì·µÈ½Ã›23aÈÛ21aÛ22a¹Æƽ¸¹›21aȼ¹›23a¸¹ºµÉÀÈÇ›21a˼½· +›909d›949`ÃÆ›15a¹ÌµÁÄÀ¹á +›909d›563`µÄÄÀÍ›15aÈÛ15aȼ½Ç›14aìÀ¹â›20a¡ +›1004d›12m›563`ºcbi»¶›10m›22a$5),i,/'lh$5)t,/'›22aQQ +›1100d›595`ÃÉÀ¸›17a·Æ¹µÈ¹›17aȼ¹›18aÀû›16aìÀ¹›18aµÇ›17a77h$5)t,/'á›16a½Â›17aȼ¹›18a·ÉÆƹ›205aá›18a½Âð +›1100d›563`Ë›1058aÈ›17a¸½Æ¹·ÈÃÆÍ +›1156d›563`Çȹµ¸›15aú›14aµÇ›15a77h380›81a¹Â›15a½º›14aȼ¹Æ¹›15aË›533aÃÉÀ¸›14a¶›1a¹ +›1156d›933`â›14a~Ê›248a¹Æ¹›15aÂÛ15a¹ÆÆÃÆÇá›14aȼ¹›15aÀû›14aìÀ¹›15aË +›1212d›563`ƹȵ½Â¹¸›15aµºÈ¹Æ›14m›46a_VlhXYpq›10m›14a¼µ¸›16aì½Ǽ¹¸›16a½ÈÇ›14aÄÆÛ1a·¹Çǽ»â +›1212d›14m›847`R +›1308d›10m›449`iç./è5%1"/2%›21a¤º›16ai./5%1"/2%›14a½Ç›14aÇÄ›1a¹·½ì¹¸á›17aÁ¹Çǵ»¹Ç›14a½Â¸½·µÈ½Â»›15aÄÆûƹÇÇ›14a¸ÉÆð +›1364d›1896`Ëð +›1364d›563`½Â»›13aȼ¹›13a½Â½È½µÀ›11aÇ·µÂÇ›13aú›12aȼ¹›13a½ÂÄÉÈ›13aìÀ¹›13aµÆ¹›13aÇÉÄÄƹÇǹ¸á›14aµÇ›13aµÆ¹›12aȼÃǹ›13aǼà +›1421d›1161`ÈÇ›17a¸Ã›355aÍ›18aǽ̹À›17aìÀ¹Ç›18aƹµ¸ +›1421d›563`½Â»›18aȼ¹›18aǽιǛ17aú›18a½Â¸½Ê½¸ÉµÀ›17aºÃ›99aËÂÀõ¸¹¸á›18aµÂ¸›18aµÂ +›1477d›587`Í›15aµ›15auLI>›23aPB=>K›23aMA:G›23a3>7›24aK>IHKM>=›22a;R›13m›24aò›10mIMÝâ +›1;730;1680;2;15!| +›1;1028;840;2;15!| +›1;915;840;2;15!| +›1;852;840;2;15!| + + +›462d›1898`ÑÖ +›607d›563`²¼¹Â›19a¯›18a³›18a»¹Â¹ÆµÈ¹Ç›18aµ›19ah$5)›18aìÀ¹á›19a½È›18a½Â·Àɸ¹Ç›19a½Â›18aȼµÈ›18aìÀ¹›19a½ÂºÃÆÁµÈ½Ã +›617d›724`~ +›664d›980`ÉÁ›15a˽¸È¼›15aµÂ¸›16a¸¹Äȼ›17aú›15aȼ¹›16aĵ»¹Ç›16a·Æ¹µÈ¹¸ä›21a˼¹Â +›664d›563`ƹ»µÆ¸½Â»›15aȼ¹›16aÁµÌ½Á +›720d›14m›595`_VlhXYpq›10m›15aÄÆÛ1a·¹ÇǹǛ17aȼ¹›16ah$5)›16aìÀ¹á›16a½È›15a˽ÀÀ›15aÄÆÛ1a¸É·¹›17a޵¸›16a½È›15aµÀË›21aÍÇ›15a¼µÇ +›720d›14m›563`R›10m›1203aµ +›777d›809`µÆ½»›12aÁ¹Çǵ»¹Ç›12a½º›12aµÂ›55a¼µÆµ·È¹ÆÇ›12a¹Ì·¹¹¸›14aȼ¹Ç¹›13aÀ½Á½ÈÇâ›18aªÆð +›777d›563`ÄÆÛ1a¸É·¹¸ß›14aË›414aÍ›13a· +›833d›709`á›11aÇÉ·›344aø›12aȼ¹›12aÁµÆ»½ÂÇï›10a˽ÀÀ›11aÂÃÈ›11aÛ1a··ÉÆ›12a޵ț11aÀ¹µÇÈá +›833d›563`¸½ÂµÆ½ÀÍ›78a¼›12a¹Ì·ÉÆǽÃÂÇ›12añ¶›1a¹Í +›889d›563`ÂÃÈ›16a˽ȼÃÉÈ›15a¯›115aʽ»›15a½ÇÇɹ¸›16aµÂ›16aéHO>K?NEE›23auh;HQ›60aµÆ½»›15a½ÈǹÀº›7aßá +›889d›865`³›17a¼µ›646aÝ›15aË +›899d›840`~ +›930d›15m›1891`JI +›946d›10m›563`¶ÉÈ›15aÇÃÁ¹›15aÁµ·ÆÛ15aĵ·›20aµ»¹Ç›14m›15a$.›10m›18aÄ›1a¹ÆÁ½È›15a¯›18a³›15aÈÛ15a¹Ì·¹¹¸›16aȼ¹›15a¶›1aÃɸµÆ½¹Ç›38aâ +›946d›964`¿ +›956d›1321`~ +›1028d›1722`¼›19aÁ¹Çǵ»¹Ç +›1028d›563`{Í›19aÉǽ»›18aȼ½Ç›18aÅɵÀ½ì¹Æ›18a˽ȼ›18aÇÃÁ¹›19aÇɽȵ¶À¹›18a¸½Á¹ÂǽÃÂá›18aÇÉ· +›1085d›999`Ë›42a¹Æá›15aÍ›542aÃÉ›16aÈÆÉÀÍ›15aµÆ¹ +›1085d›563`·µÂ›16a¶›1a¹›17aÇÉÄÄƹÇǹ¸å›17a¼Ã›31a¹Ê›88aÃÉ›15aǼÃÉÀ¸›16aÃÂÀÍ›16aÉǹ›16aȼ½Ç›16a½º›15aÍ +›1141d›712`Ê›209aÍ›20aÇÉ·›698aȹ¸¹¸›20aÈà +›1141d›563`¶›1a¹½Â»›20aÛ22a¹ÆÀõ¸¹¸›19a¶›105a¼›20aÁ¹Çǵ»¹Çá›20aǽ·¹›20aȼ¹›20a¸¹ºµÉÀÈ›19a½Ç›19a½Â +›1198d›735`ÃÉ›18aȼµÈ›18a¯›18a³›19a¸½¸ÂÝÈ›18a¸Ã›19aµ›18a»Ã›1aÛ1a¸›19a¾Ã¶›18aú›19aȼ¹›18aǹÈȽ»á›19aµÂ¸›19aȼ¹Æ¹ +›1198d›563`½ÂºÃÆÁ›18aÍ +›1208d›928`~ +›1254d›563`ƹµÀÀÍ›14m›14a6)+›2a+›10m›20a¶›1a¹›16aÇÃÁ¹È¼½Â»›14aÇȽ·›216aÈÛ14aȼ¹›15aÁµÆ»½Ââ +›1254d›1125`¿½Â»›14aÃÉÈ›15a½Â +›1337d›836`µÀɹ›18aÞUTTLIß›16a·ÃÆƹÇÄ›1aøǛ18aÈÛ18aȼµÈ›17aºÃÆÁ¹ÆÀÍ›17a鼵Ƹð˽ƹ¸Ý +›1337d›563`¯¼¹›18a¸¹ºµÉÀÈ›18aÊ +›1393d›600`ÈÛ18aȼ¹›19aÄÆûƵÁä›27aȼ½Ç›18a½Ç›19aµÂ›19a½Â›577a̽ÁµÈ¹ÀÍ +›1393d›563`½Â›594aʽǽ¶ÀÍ›17aÇÁµÀÀ›18a¸½Çȵ·¹á›20aµÄÄÆà +›1449d›563`¹Åɽʛ77aÈ›16aÈÛ15aȼ¹›16aË›21aÊ›424aÈÞÛß›20a¶ÉÈ›16a½Ç›15aÀµÆ»¹›15a¹ÂÃÉ»¼›16aÈà +›1449d›666`µÀ¹Â›200aµ›22a¹À¹Â»È¼›14aú›16aʽǽ¶À¹›15aÀ½»¼ +›1506d›563`µ¶ÇÃƶ›15aµÂ›518aÍ›14a¼µ›22a¹›15aÛ1a··ÉÆƹ¸â +›1506d›757`Í›15aÆÃɸ½Â»›15a¹ÆÆÃÆÇ›14aȼµÈ›15aÁµ›84aÊ +›1614d›449`i5&499l›15m*›14m$),%-2).-›15m›2a+›10m›22a¯¼½Ç›18a½Ç›18aµÂµÀûÃÉÇ›17aÈÛ18aȼ¹›19ai(&499›17aÅɵÀ½ì¹Æ›18aµ¶›1aÛ22a¹á›19a¶ÉÈ +›1614d›1801`Ê +›1671d›563`ȵ¿›704a¼›20a¯›417aË›21aȼ¹ +›1671d›627`¹Ç›20a·µÆ¹›21aú›20aȼÃǹ›21aÛ1a··µÇ½ÃÂÇ›20aÛ21a˼½·›95a³›21a¼µÇ›20aǹț21aȹÌÈ›20a¶›1a¹Àà +›1681d›1402`~ +›1727d›1751`ÉÁ›16a¸¹Äȼ +›1727d›563`¶›1aÃÈÈÃÁ›16aú›17aȼ¹›17aµÆ¹µ›16aȼµÈ›16a½È›16a¼µÇ›17aÂÃȽ칸›17aµÇ›16a¶›1a¹½Â»›17aȼ¹›17aÁµÌ½Á +›1784d›1106`µÆ½»›20aÁ¹Çǵ»¹›21aºÆÃÁ›14m›52a_VlhXYpq›10m›20a½Ç›21aé0:@> +›1784d›563`ú›21aȼ¹›21aĵ»¹å›23aȼ¹›22aƹÀµÈ¹¸›20aË›14m›440aR +›1840d›10m›563`=>>I>K›23aMA:G›23a3>7›24aK>IHKM>=›23a;R›13m›23aó›10m›2aIM›469a¹Æ›21aºÃɸ +›1840d›1303`Ýâ›37a¯¼¹›21aµÉȼÃÆ›20a¼µÇ›21aÂ¹Ê +›1896d›563`µÂ›569a¼›23a¯›17a³›23a¸Ã›1a¹Ç›22aȼ½Çá›23a¶ÉÈ›23aȼ¹›22aÅɵÀ½ì¹Æ›22a½Ç +›1896d›610`Í›22a·½Æ·ÉÁÇȵ·¹Ç›22aɸ¹Æ›23a˼½· +›1906d›1253`~ +›1953d›585`Ê›262aÍ›646aµÆ½»ۛ26aªÂ·¹›18aµ»µ½Âá +›1953d›563`µ›20aµ½Àµ¶À¹›16aºÃÆ›17aµÂ›22aù›17a˼Û18a¸Ã›1a¹Ç›18aÇÉë¹Æ›17aºÆÃÁ›17aȼ½Ç›17aË +›2009d›815`µÀɹ›16aºÃÆ›14aȼ¹›15aÅɵÀ½ì¹Æ›15a½Ç›15aUTTLIâ +›2009d›563`ȼ¹›15a¸¹ºµÉÀÈ›15aÊ +›2118d›12m›654`êÞáÜ›17aäèÖßÞøÚåæ›18aæÝâèßÙ›19aáÚé›423aì›19aâåÙÞáÖåì›18aèæÚåæ÷ +›2118d›472`ÐÝÚ›19aÛâßßâ›523aÚå›20aáÚÚÙ›19açâ›19a×›1aÚ›19aèæÚÙ›20a× +›2174d›563`çÝÚ›15aÞáÛâåàÖçÞâá›14a×›1aÚßâ›279açÚáÙÚÙ›16açâ›15aÝÚßã›15aæìæçÚà›15aàÖáÖÜÚåæö +›2174d›969`ê›14aÞæ›15aàÖÞáßì›14aÞá +›2282d›10m›449`i0+›17a&/.3›17a$)1%#3/18›168aÉÇÈ›20aÇÄ›1a¹·½ºÍ›21aµ›20a¸½Æ¹·ÈÃÆÍ›20aÞÃÆ›20a¸½Æ¹·ÈÃÆÍ›20aÈƹ¹ß›20a½Â +›2282d›888`¯¼½Ç›21aÁ +›2339d›653`¼›15aȼ¹›16aĵ·›22a¹¸›16aĽ̹À›15aìÀ¹Ç›16aÞ½º›14aÉǹ¸ß›16aµÆ¹›15aÈÛ15a¶›1a¹›16aºÃɸâ›22a}½Æ¹·ÈÃÆÍ›14aÈƹ¹Ç +›2339d›563`˼½·›185a¿ +›2395d›563`µÆ¹›16a½Â¸½·µÈ¹¸›17a¶›86aʽ»›16aého›277aË›56a¼µÆµ·È¹ÆÇ›16aú›16aȼ¹›17añ¸½Æ¹·ð +›2395d›863`Í›16a¼µ›161aÝ›23aµÇ›16aȼ¹›17aÀµÇÈ›15aÈ›31aÛ15a· +›2452d›563`ÈÃÆÍï›19aÇÄ›1a¹·½ì·µÈ½ÃÂâ›35az›21aÀû½·µÀ›18aµÁ¹›21aÁµ›168a¹Â›20aºÃÆ›20aȼ½Ç›20aÅɵÀ½ì¹Æá +›2452d›1368`Í›19a¶›1a¹›21a»½Ê +›2508d›563`ÄÆÛ289a¹Ç›18aÈÛ18aµÂ›19aµÄÄÆÃÄƽµÈ¹›18a¸½Æ¹·ÈÃÆÍ›18aÇÄ›1a¹·½ì·µÈ½ÃÂå›21a¸Ã›19aƹð +›2508d›628`ʽ¸¹¸›19a½È›18aƹÇÃÀÊ +›2565d›658`¶›1a¹Æ›22aÈÛ21a½Â·Àɸ¹›23aµ›21aȹÆÁ½ÂµÈ½Â»›21aéjÝá›22a¶›1a¹·µÉǹ›23aȼ¹›22aÅɵÀ½ì¹Æ›21a½ÈǹÀº›21a½Ç +›2565d›563`Á¹Á +›2621d›691`¹Æ¶µÈ½Á›14aµÇ›16aµ›16aÄƹìÌ›16aÈÛ15aȼ¹›16aìÀ¹›16aÇÄ›1a¹·½ì·µÈ½Ã›16aºÃÆ›15a¹µ·›101aÈ›15aìÀ¹â›23a¤º +›2621d›563`Éǹ¸›17aÊ›993a¼›16aºÃ +›2678d›563`µ›18aÁ›104aµÀɹ¸›17aÀû½·µÀ›16aµÁ¹›18a½Ç›18aÉǹ¸á›19aȼ¹›18a¹Åɽʛ324aÉÇÈ›14m›17a!+›2a+ +›2678d›10m›641`ÉÀȽðÊ›741aµÀ¹Â·¹›19aÇÈƽ»Ǜ17aÁ +›2734d›1207`ÉÇÈ›14m›15a!+›2a+›10m›20aƹº¹Æ¹Â·¹›16a¸½Æ¹·ÈÃÆÍ›15aÈƹ¹Çå›15aÃÂÀÍ +›2734d›563`ƹº¹Æ¹Â·¹›16aǽ»À¹›15a¸½Æ¹·ÈÃƽ¹Çá›14aÃÆ›15aÁ +›2791d›836`µÀ¹Â·¹›15aÇÈƽ»›13a½Ç›14a¹ÌµÁ½Â¹¸›14aÈÛ14a¸¹È¹ÆÁ½Â¹›14a˼¹È¼¹Æ›15aµ›13aíµÈ›14aÃÆ +›2791d›563`ȼ¹›14aìÆÇÈ›14a¹ÅÉ½Ê +›2847d›563`Èƹ¹›14aÇÈÆÉ·ÈÉƹ›14a½Ç›14a¶›1a¹½Â»›14aÉǹ¸â›20a¯¼¹›15a$5)3/,.TWh#,$›12a·ÃÁÁµÂ¸›14a¸¹ì½Ƚà+›2903d›563`ìÀ¹›15aÄÆÛ454aµÀɹ›16a3%7›17a0+j›14aºÃÆ›15aȼ½Ç›15aÅɵÀ½ì¹Æâ +›2903d›701`ʽ¸¹¸›15a¼µÇ›15aȼ¹›16a¸¹ºµÉÀÈ›14aÊ +›2984d›14m›486`ßÞ +›3000d›11m›541`¯²›14a¥¸¡­°¬¥Å›14a´¨¥›14a¯µ´°µ´›15a¯¦›15m›96aYU›11m›325a¹›14a´¨¥›13m›15aF:8?79›11m›11a­¡£²¯³Å›15a°›1a¥²­©´³ +›3000d›519`s›15m›446aRUS›11m›41aÅ›13a·¨¥®›15a¦¯²­¡´´¥¤›14a¢ +›3046d›449`¬©®¥³›13a¯¦›13a¦¯²­¡´´¥¤›15m›38aSXTSW›11m›13a£¯›1a¤¥›13a´¯›13a¥¸£¥¥¤›14a´¨¥›13a²©§¨›273a¹›13aµ°›14a´¯›13a»º°´Æ +›3046d›15m›759`Q›11m›503a´Ñ¨¡®¤›14a­¡²§©®›13a¢ +›1;449;2956;2;598!| +›1;1328;2901;2;15!| +›1;637;2280;2;15!| +›1;524;2280;2;15!| + + +›462d›10m›607`Ñ×›12m›635aÀ›10m›46a$5),.TW›12m›14aÁËÉÉ¿Ê›14aÍÑ¿ÈÇÄÇÃÎÏ +›607d›10m›607`i07,›17a&/.3›16a$)1%#3/18›22a¯¼½Ç›24aÇÄ›1a¹·½ì¹Ç›26aȼ¹›25a¸½Æ¹·ÈÃÆÍ›24aÞÃÆ›23a¸½Æ¹·ÈÃÆÍ›24aÈƹ¹ß›25a½Â +›664d›721`˼½·›152a¿›434aÍ›10a¶›1a¹›12aºÃɸá›12a½º›10aÉǹ¸â›20a¯¼¹›11aǵÁ¹›11aÆÉÀ¹Ç +›664d›811`¼›11aÉÂĵ·›22a¹¸›12aĽ̹À›10aƵÇȹƛ11aìÀ¹Ç›11aÁµ +›720d›721`ƹ»µÆ¸½Â»›14aÉǹ›16aú›14aÀû½·µÀ›14aµÁ¹Ç›15aµÄÄÀÍ›15a¼¹Æ¹›16aµÇ›15aÈÛ14aȼ¹›16aÄƹʽÃÉÇ›14aÅɵÀ½ì¹Æâ +›777d›721`¯¼¹›15ah#,$›153aʽ¸¹¸›15a»½Ê›352aµÀɹ›15aú›15a3%7›17a07,›16a1//3jâ +›777d›925`ìÀ¹›15aÄÆÛ180a¹Ç›14aȼ½Ç›15aµ›15a¸¹ºµÉÀÈ›15aÊ +›870d›607`i3&-›17a$)1%#3/18›1058a¼›19aȼ¹ +›870d›957`¯¼½Ç›20aÇÄ›1a¹·½ì¹Ç›20aȼ¹›20a¸½Æ¹·ÈÃÆÍ›18aÞÃÆ›19a¸½Æ¹·ÈÃƽ¹Çß›19a½Â›19a˼½· +›927d›721`¯›17a³›18a¡›43aÈ›18a¨¹Èƽ·Ç›17aÞh3&-›391aÍ›18aȼ¹›18aÄÆûƵÁâ›27a¯¼¹›19a¸½Çð +›927d›849`Û315aß›17aµÆ¹›17aÈÛ18a¶›1a¹›19aºÃɸ›18a¶ +›937d›746`~ +›983d›921`¹ÆǽÛ14aú›14aȼ¹›15a$5)3/,.TWh#,$›14aìÀ¹›15a¼µÇ›14a3%7›17a&/.32j›14aµÇ›15aȼ¹›15a¸¹ð +›983d›721`Èƽ¶Éȹ¸›15aÊ +›1040d›849`µÀɹ›16aºÃÆ›14aȼ½Ç›15aÅɵÀ½ì¹Æâ +›1040d›721`ºµÉÀÈ›14aÊ +›1134d›607`i5)134!,›16a$)1%#3/18›1046a¼ +›1134d›1053`¯¼½Ç›17aÇÄ›1a¹·½ì¹Ç›19aȼ¹›18a¸½Æ¹·ÈÃÆÍ›17aÞÃÆ›17a¸½Æ¹·ÈÃƽ¹Çß›16a½Â›18a˼½· +›1190d›721`±½ÆÈɵÀ›19a¡›43aÈ›20aÞh5&›502aÍ›20aȼ¹›21aÄÆûƵÁâ›36a¯¼¹›21a¸½Çð +›1190d›910`Û127aß›20aìÀ¹Ç›21aµÆ¹›20aÈÛ20a¶›1a¹›22aºÃɸ›21a¶ +›1246d›921`¹ÆǽÛ14aú›14aȼ¹›15a$5)3/,.TWh#,$›14aìÀ¹›15a¼µÇ›14a3%7›17a&/.32j›14aµÇ›15aȼ¹›15a¸¹ð +›1246d›721`Èƽ¶Éȹ¸›15aÊ +›1303d›721`ºµÉÀÈ›16aÊ›488aÉÇ›17aÄÀµ·½Â»›16ah5&›16aìÀ¹Ç›17a½Â›16aȼ¹›17aǵÁ¹›16a¸½Æ¹·ð +›1303d›851`µÀɹ›17aºÃÆ›16aȼ½Ç›16aÅɵÀ½ì¹Æá›16aȼ +›1359d›721`ÈÃÆÍ›15aµÇ›16aȼ¹›17ah3&-›385aÈÇ›16aµÆ¹›16aÂÃÈ›16a½Â›16aÉǹá›17aƹÁÛ22a¹›15aȼ¹›17aÀ½Â¹ +›1359d›1068`ìÀ¹Çâ›23a¤º›17aʽÆÈɵÀ›15aºÃ›455aÊ +›1416d›721`é=>?:NEMgÝ›13aºÆÃÁ›15aȼ¹›15a¸¹ì½ȽÛ15aú›15aȼ½Ç›14aÅɵÀ½ì¹Æâ +›1510d›607`i0!0%1›17a2)9%›22a¯¼½Ç›22aÅɵÀ½ì¹Æ›23aÁ›130aÊ›300aµÀɹǛ23aÞ¸¹ì¹¸›24a½Â›23aȼ¹ +›1510d›1218`ÉÇÈ›23a¼µ›22a¹›23aù›23aú›23aȼ¹›23aÊ +›1566d›721`0!0%1t380%2›15aǹ·È½Ã›16aú›16aȼ¹›16ah#,$›639aµÀɹ +›1566d›1397`ìÀ¹ß›16aÇÄ›1a¹·½ì¹¸›18aµÇ›16a¸¹ºµÉÀÈâ›23a¯¼¹›16aÊ +›1623d›721`Þ!X›18aÃÆ›19a42›1022a¼›19aµÈ›18aȼ¹ +›1623d›913`ß›19aǼÃÉÀ¸›19aÆ¹í¹·È›20aȼ¹›19aǹÈȽ»›18aú›19aȼ¹›19aĵě1a¹Æ›20aǽι›19aÇ˽ȷ +›1679d›1022`ȹÆâ›19azÇ›14aÁ½»¼›391aµÀɹǛ15aÄƹĵƹ›14aȼ¹›15aÄÆÃð +›1679d›721`ƹµÆ›14aú›14aȼ¹›14aÄƽ›251aÈ›13a¶›1a¹›15a¹ÌÄ›1a¹·È¹¸á›16aȼ¹›14aÊ +›1717d›15m›1791`H +›1735d›10m›721`»ÆµÁ›13aÈÛ13aÉǹ›14a~ÉÆÃÄ›1a¹µÂ›14aÞÑÐÏ›15m›7a&›10m›7aÑØÖÁÁß›11aÃÆ›13a°®›14a§¹Èȹƛ14aÞ×›15m›34a&›10m›7aÐнÂß›12aĵě1a¹Æá +›1750d›15m›1791`I +›1792d›10m›721`ƹÇÄ›1a¹·È½Ê›48aâ +›1792d›897`¹ÀÍ +›1;479;1444;348;8!| +›1;1791;1722;2;18!| +›1;754;1508;2;15!| +›1;1735;1244;2;15!| +›1;802;1132;2;15!| +›1;1735;981;2;15!| +›1;706;868;2;15!| +›1;1909;775;2;15!| +›1;1820;775;2;15!| +›1;819;605;2;15!| +›1;706;605;2;15!| + + +›462d›1898`ÑØ +›607d›13m›654`Ú›16aØÔ›16aÙ×Ë›16aÛ›147aÚÓ›16a¶›64aØ×›18aÚÏØΛ15a›270aĹá +›607d›449`³›69a¸Ô›288aÔÙÖ›17aÔ›139aÔÓ›292aÆ›16aÇÓÊ›17a´ +›620d›1562`µ +›682d›568`ØÔº¼Üß +›783d›10m›449`ªÆ¸½ÂµÆÍ›12aÉǹÆÇ›13aǼÃÉÀ¸›12m›92az§›10m›11a¼µ›22a¹›12aµÂ›255aÈ›11aÈÛ12aÉǹ›13aȼ¹›12aÅɵÀ½ì¹ÆÇ›12aȼµÈ +›783d›12m›895`¤z«›10m›103aÊ›78aÍ›12aƹÅɽƹÁ¹Â +›840d›449`ǹÀ¹·È›14aȼ¹›14aÀÛ1a·µÈ½Ã›12aú›13aȼ¹›14ah3&-›13aÃÆ›13aĽ̹À›13aƵÇȹƛ13aìÀ¹Çå›14a¹Ì·¹ÄȽõÀÀÍ›69aË›42a¹Æá›12a½º +›840d›1706`á›13a¼Ã›31a¹Ê +›896d›449`Í›557aÈ›16aȼµÈ›15a¸Ã›1a¹ÇÂÝÈ›17aÃȼ¹Æ˽ǹ›15a¹Ì½ÇÈ›16a½Â›17aȼ¹›16aÇȵ¸µÆ¸ +›896d›472`ÃÉ›17a¹¹¸›17aÈÛ16aÉǹ›17aµ›16aÇÄ›1a¹·½µÀ›16aºÃ +›953d›449`¸½Æ¹·ÈÃƽ¹Çá›15aȼ¹Ç¹›15aÅɵÀ½ì¹ÆÇ›15a·µÂ›16a¶›1a¹›16aÉǹ¸á›15a½Â›16a·Ã¾É·ȽÛ15a˽ȼ›15aÄÆÛ1a·¹ÇÇ›16aÀû½·µÀ +›1009d›1247`Ë›18aºÃ›180a¹ÀÀ›17aµÇ›18aȼ¹›19aÇȵ¸µÆ¸ +›1009d›449`µÁ¹Çá›20aÈÛ18aÄ›1a¹ÆÁ½È›18aµ··¹ÇÇ›19aÈÛ18aȼ¹›19aÉǹÆÝÇ›18aÛ136aÈÞÇß›17aµÇ›19aË +›1066d›449`ùÇâ +›1122d›520`¡½ÆÇÈ›19aú›19aµÀÀá›19a¶›1aÃȼ›20a¯›18a³›20a½ÈǹÀº›19aµÂ¸›14m›52a_VlhXYpq›10m›18a˽ÀÀ›19aƹÅɽƹ›20aµ··¹ÇÇ›20aÈÛ19aȼ¹ +›1122d›14m›1198`R +›1132d›10m›910`~ +›1179d›449`¯›18a³›13a¡›43aÈ›12a¨¹Èƽ·Çå›13aµÇ›13aµÀƹµ¸Í›12a¸¹Ç·Æ½¶›1a¹¸á›14aȼ¹Ç¹›13aÂÃÆÁµÀÀÍ›12aƹǽ¸¹›13a½Â›13aµ›13a¸½Æ¹·ÈÃÆÍ +›1179d›573`à+›1189d›474`~ +›1235d›600`¼›20aȼ¹›20aÀû½·µÀ›18aµÁ¹›20a3%7›17a&/.32›19aƹº¹ÆÇå›22aù›20a·ÃÉÀ¸á›21aú›20a·ÃÉÆǹá›21aǽÁÄÀÍ +›1235d›449`ÈÛ20a˼½· +›1291d›449`ƹ¸¹ì¹›18aȼ½Ç›17aÀû½·µÀ›15aµÁ¹›17aÈÛ16aÄ›1aý›327aÈÇá›16a¶ÉÈ›17aȼ¹Â›17a¹½È¼¹Æ›17a¯›18a³ +›1291d›1120`È›17aÈÛ16aȼ¹›17a¹˛17aºÃ +›1301d›1884`~ +›1348d›449`ÂÃÆ›14m›51a_VlhXYpq›10m›49aÃÉÀ¸›18a¶›1a¹›19aµ¶À¹›18aÈÛ18aÀÛ1a·µÈ¹›18aȼ¹›14m›165a$›10m›23aºÃ›328aÈ +›1348d›14m›534`R›10m›201aË›14m›544a23!-$!1›10m›105aÈÇâ›29a®Ã›18aù›19aÁ½»¼ +›1404d›449`¸¹ì¹›16a˼µÈ›12m›14aÂÞÜÞçÖß›10m›14a·µÀÀ›14aµ›14aǹµÆ·›797aÉÀȽð +›1404d›1063`¼ðÀ½ÇÈ›13aÞ¶ÉÈ›14aȼ¹›15aµÉȼÃÆ›14aÄƹº¹ÆÇ›14aÈÛ14a·µÀÀ›14aµ›14aÁ +›1461d›449`Ê›461a¹›14aȼ½Çä +›1461d›470`µÀɹ¸›16aÀû½·µÀ›14aµÁ¹ßá›14aÀ½¿ +›1545d›12m›449`ºcbi»¶›10m›23a$%&).%›23a-8›17a&/.32›23an-8›17a$)1h3&-og3%7›15a&/.32 +›1623d›14m›719`} +›1629d›10m›449`¯¼¹Â›16aÈÛ15aÆÉ›15a§›5a¯›18a³á›15aù›15aË›147aÊ›129aÍä +›1629d›968`ÃÉÀ¸›15a¼µ›22a¹›14aÈÛ15aǵ +›1643d›765`~ +›1696d›15m›1544`JJ +›1712d›12m›449`ºcbi»¶›10m›23a,!3%7i&/.3t$)1%#›166at&/.32j›21a-8t&),% +›1712d›1020`3/18l-8 +›1790d›14m›764`} +›1796d›10m›707`Ë›12a§›5a¯›734aÃÉÆ›13aÛ132aÈÇå›13aǽ·¹ +›1796d›449`¯¼½Ç›14a˽ÀÀ›12aµÀÀÛ128a³›14aÈÛ13aµ··¹ÇÇ›14a¶›1aÃȼ›14aȼ¹›14aÇȵ¸µÆ¸›13aµÂ¸›14aÍ›100aË›14aºÃ +›1810d›810`~ +›1853d›472`ÃÉÆ›19aºÃ›841a¼›19aÀ½ÇÈá›18ah3&-›19aìÀ¹Ç›19a˽ÀÀ›18a¶›1a¹ +›1853d›449`Í›145aÈÇ›19aÄƹ·¹¸¹›20aȼ¹›19aÇȵ¸µÆ¸›19aùǛ19a½Â›19aȼ¹›20aǹµÆ· +›1909d›449`ȵ¿›186aÃÉÆ›13a¸½Æ¹·ÈÃÆÍ›13a½Â›13aÄƹº¹Æ¹Â·¹›14aÈÛ13aµÂ›589aÈ +›1909d›513`¹Â›13aºÆÃÁ›13aÍ›636aÍ›13aú›13aȼ¹›14aǵÁ¹›13aµÁ¹›13aȼµÈ›13aÁ½»¼ +›1966d›449`µÀƹµ¸Í›15a¶›1a¹›16a½Â›15aȼ¹›15aÇȵ¸µÆ¸›15aÀÛ1a·µÈ½ÃÂâ +›2022d›549`Û18aÆÉ›14m›50a_VlhXYpq›10m›115aÉÇÈ›17a¼µ›22a¹›17aµ··¹ÇÇ›18aÂÃÈ›18aÃÂÀÍ›17aÈÛ17aȼ¹›18ah3&-›18aìÀ¹Çá›18a¶ÉÈ +›2022d›520`¯›14m›123aR›10m›184aá›17a½È›17aÁ›124aÊ +›2079d›449`µÀÇÛ20aÈÛ20aȼ¹›20aĽ̹À›20aƵÇȹƛ20aìÀ¹Ç›20aÞ¹½È¼¹Æ›20aĵ·›22a¹¸›20aÃÆ›20aÉÂĵ·›22a¹¸ßâ›36a²¼½·›67a¹Æ›20aìÀ¹ +›2079d›1255`¿›242a¿›215a¼¹Ê +›2135d›1107`¼Ãǹ›14aºÃÆ›14aȼ¹Ç¹›14a޵¸›14aĵ·›22a¹¸›15aµÂ¸›14aÉÂĵ·›22a¹¸ +›2135d›449`¸½Æ¹·ÈÃÆÍ›14aÃÆ»µÂ½ÎµÈ½Ã›12a¼µÇ›14a¶›1a¹¹Â›16a·›480a¿›263a¿ +›2191d›978`È›19aÃÆ»µÂ½ÎµÈ½ÃÂÇßá›18aȼ¹›21aĽ̹À›19aìÀ¹Ç›20aºÃÆ›20aÍ›161aµÈ¹ +›2191d›449`ƵÇȹÆÇ›19a·µÂ›21aÉȽÀ½Î¹›19a¸½ë¹Æ¹Â›742aÃÉÆ›19aÄÆ½Ê +›2248d›510`ÈÇ›14m›15a,423›10m›68aÊ›792aÃÉ›15a¼µ›22a¹›15aÃÂÀÍ›16aĵ·›22a¹¸ +›2248d›449`ºÃ›166a¼µ›22a¹›15aȼ¹›16aǵÁ¹›15aÃÆ»µÂ½ÎµÈ½ÃÂâ›20a¯¼¹Æ¹ºÃƹá›15a½º›16aÍ›109aÊ›202a¿ +›2304d›449`Ľ̹À›13aìÀ¹Çá›13aµÂ¸›13aȼ¹›13aÇȵ¸µÆ¸›12aºÃ›647aá›13aƹº¹Æ¹Â·¹¸ +›2304d›1069`ÈÇ›12aµÆ¹›13aµÆƵ»¹¸›12a½Â›13aµ›12aíµÈ›12a¸½Æ¹·ÈÃÆÍ +›2361d›473`Í›16aȼ¹›15aÀû½·µÀ›13a3%7›17a0+á›15aÍ›159aÈ›14aÁµ¿›197a˽»›13a¸¹ì½ȽÃÂä +›2361d›449`¶›446aÃÉ›14aÁ½»¼›115a¹›15aȼ¹›15aºÃÀÀà +›2445d›12m›449`ºcbi»¶›10m›23a$%&).%›23a-8›17a0+›16a&),%2›24an-8›16a$)1h&/.32h0+og3%7›15a0+ +›2528d›520`zÀȹƵȽʛ52aá›20aÃÆ›20aµ¸¸½È½ÃµÀÀÍ›99aÃÉ›21a¼µ›22a¹›20aÉÂĵ·›22a¹¸›21aĽ̹À›21aƵÇȹÆÇ›20a½Â›20aµ +›2528d›725`¹ÀÍ›324aá›20a½º›20aÍ›115aÊ›156a¿ +›2585d›449`ÆÛ1aÃȹ¸›17a¸½Æ¹·ÈÃÆÍ›17aÇÈÆÉ·ÈÉƹá›17aȼ¹›17aºÃÀÀÛ410aÈ›16aÇÉî·¹á›18aµÇÇÉÁ½Â» +›2585d›1165`˽»›15a¸¹ì½ȽÛ17aÁ½»¼ +›2641d›877`ÈÇ›14aµÆ¹›15aµ··¹Çǽ¶À¹›15aȼÆÃÉ»¼›15a3%7›17a07,›17a1//3ä +›2641d›449`ȼµÈ›15aȼ¹›15aÇȵ¸µÆ¸›15aºÃ +›2725d›12m›449`ºcbi»¶›10m›23a$%&).%›23a-8›17a07,›16a&),%2›24an-8›16a$)1h&/.32h07,hog3%7›15a07,›17a1//3 +›2809d›520`¯¼¹Â›16aÈÛ16aÆÉ›14m›48a_VlhXYpq›10m›93aʽ¸½Â»›15a½È›15a˽ȼ›15aµ··¹ÇÇ›16aÈÛ16aȼ¹›16ah3&-›15aµÂ¸›16aĽ̹À +›2809d›14m›780`R›10m›184aá›15aÄÆà +›2866d›710`ÃÉÆ›11aÛ473aÈÇá›10a½È›11aË›439aÊ›45a¹ +›2866d›449`ìÀ¹Ç›12aú›10a¶›1aÃȼ›11aÍ›98aË›11aµÂ¸›11aȼ¹›11aÇȵ¸µÆ¸›11aºÃ›132aÃÉÀ¸›10a¶›1a¹›12a¹·¹ÇǵÆÍ›11aÈÛ11a½Â›22aÿ +›2922d›759`¹›14aȼ½Çä +›2922d›449`ȼ¹›16aÄÆûƵÁ›14aÀ½¿ +›2984d›14m›486`ßß +›3000d›11m›519`w¯´¥›21a´¨¥›22aË›13mT›11m›591a¥²›22a©³›21a°²¯›260a¡¬µ¥›22a¦¯²›21a´¨¥ +›3000d›726`›33a¡¦´¥²›21a´¨¥›22a¬¯§©£¡¬›21a®¡­¥È›26a·¨¡´¥¶›154a¶©¤¥¤›23a¡³›22a´¨¥›21a¶ +›3046d›13m›681`-/6›11m›189aµ³´›13a¬¥§¡¬¬¹›12a¢›1a¥›13a£¡°¡¢¬¥›14a¯¦›12a¢›1a¥©®§›14a°²¥Í¸¥¤›14a´¯›12a¡›13aͬ¥›13a³°›1a¥£©Í£¡´©¯® +›3046d›13m›449`S&-,1›13a$(/%#1›11m›69a±µ¡¬©Í¥²›13a­ +›1;551;3044;2;12!| +›1;449;2956;2;598!| +›1;1735;2723;2;15!| +›1;1648;2723;2;15!| +›1;1176;2723;2;15!| +›1;944;2723;2;15!| +›1;855;2723;2;15!| +›1;1544;2639;2;15!| +›1;1455;2639;2;15!| +›1;1576;2443;2;15!| +›1;1152;2443;2;15!| +›1;920;2443;2;15!| +›1;855;2443;2;15!| +›1;807;2359;2;15!| +›1;1392;1543;2;15!| +›1;1087;1543;2;15!| +›1;855;1543;2;15!| +›1;1075;1233;2;15!| + + +›462d›10m›607`ÒÏ›12m›146aÓ›12aÐË›13aÑÏÛ13aÕËÑΛ12aË›121aËÊÐÏ›13aÓÇÐÆ›12aЛ213aÒÇÐËÈÊíð +›462d›653`Á›45aÆË›425aÓÊ›12aÄ›332aÔ›12a¿Ê›12a +›472d›1654`à +›591d›15m›1560`JK +›607d›12m›607`ºcbi»¶›10m›716a32j›51að +›607d›794`$5),.TW›23ai3&-t$)1%#3/18l-8t&/. +›648d›15m›1296`L +›648d›1279`J +›664d›12m›631`¶›10m›478a-8t0+j›50a-8t&),% +›664d›680`i0+t&/.3t$)1%#3/18l +›757d›860`¼›20aµ›19aÄƽʛ138aÈ›19a¼µÇ›19a¶›1a¹¹Â›20aÄÆÛ22a¹Â›20aÀÛ1a·µÀÀÍ›18a½Â›19aÍ›259aá›19a½È +›757d›678`ªÂ·¹›20aÇÉ·›163aµÈ¹›19aºÃ›297aÊ›292aÃÉÆ›19a¸½Æ¹·ÈÃÆÍ +›814d›639`ÃÉÀ¸›18a¶›1a¹›19a¶›1a¹Èȹƛ18a½º›18aÍ›170aÃÉÆ›18aÀÛ1a·µÀ›17a¯›530aÈÇ›18aµÀû +›814d›607`Ë›374aÃÉ›18a»ÃÈ›18aÍ›244a³Â½·½µÂ›18aÈÛ18a½ÂÇȵÀÀ›16aȼ¹›19aºÃ +›824d›1404`~ +›870d›607`˽ȼ›15aȼ¹›15aÇȵ¸µÆ¸›15aùǛ16aÞÉÂÀ¹ÇÇ›15aȼ¹Æ¹›16aµÆ¹›15aÀ½·¹Âǽ»›15aƹÇÈƽ·È½ÃÂÇ›13aµÄÄÀ½·µ¶À¹›15aÈà +›927d›1243`ÈÇßá›16aǽ·¹›17a½È›16a˽ÀÀ›16aǵ›22a¹›16aȼ¹›17aÉǵ»¹›17aú›17aµÀÀ›16aȼÃǹ +›927d›607`ȼ¹›17aÉǹ›18aú›16aȼ¹›18aÂÃÂðÇȵ¸µÆ¸›17aºÃ›370aÊ +›983d›607`µ›88aµÆ¸›14a·ÃÁÁµÂ¸ðÀ½Â¹›15aÅɵÀ½ì¹ÆÇÛ +›983d›629`Ë¿Ë +›2939d›14m›644`ßà +›2955d›11m›676`n§¡©®Å›13a®¯´¥›14a´¨¡´›14a´¨¥›13aË›13mT›11m›1015a¹ +›2955d›1066`›17a©³›13a®¥£¥³³¡²¹›15a¯®›14a´¨¥›13aµ³¥²Ñ¤¥Í®¥¤›15a¬¯§©£¡¬›13a®¡­¥›14a³¯›14a´¨¡´›13a©´›13a­¡ +›3000d›607`¢›1a¥›13a°²¥°›1a¥®¤¥¤›15a´¯›13a¡›13aͬ¥›13a³°›1a¥£©Í£¡´©¯® +›3030d›14m›644`ßá +›3046d›11m›676`n®¤Ç¯²›13m›14aS.5*›13a&-,1›12a$(/%#1-›58a+6›12a.5*›13a&(*%0T +›3046d›1138`/6U +›1;1311;3044;2;12!| +›1;1238;3044;2;12!| +›1;989;3044;2;12!| +›1;896;3044;2;12!| +›1;607;2910;2;598!| +›1;610;660;4;21!| + + +›462d›10m›1898`ÒÐ +›607d›13m›449`´›69aÂÎË›22a·¹¼½ØÔÁ¹Æ›23a¾ÖÔÍÖÇÒ +›711d›10m›449`¯¼½Ç›19aÄÆûƵÁ›17aË›245aÍ›18a®Åɵ¸ÆÛ19a§¹µ¸¹Æ›19a¥Ã¼Â›14m›81a££¨««›10m›164aµÇ +›711d›774`µÇ›18aËƽÈȹ›18a¶›14m›516au}›10m›140aá›19a˼Û19aË +›768d›776`È›19aµÈ›18a­¨|®›17a½Â›18aÐØ×Öâ›29a¤È›18a½Ç›18aËƽÈȹ›17a½Â›14m›19av›52a«©}§›10m›18aµÂ¸›19a¼µÇ›18aµ +›768d›449`µÂ›19a¨â®·â›17aÇÈɸ¹Â›14m›787a¨© +›824d›10m›970`ȹƺµ·¹â›20az›303aȹƹÇȹ¸›15a½Â›15aµ·Åɽƽ»›14aµ +›824d›449`ºÉÀÀ›15a}|§›15a·ÃÁÁµÂ¸ðÀ½Â¹›15a½Â›223aÍ›15aǽȹ›14aȼµÈ›15a½Ç›15a½Â +›880d›516`Í›16aú›15aȼ¹›16aÄÆûƵÁ›14a½Ç›15aË›432aÍ›15aǹ¸½Â»›16aµÂ›16a¹ðÁµ½À›14aÁ¹Çǵ»¹ +›880d›449`·ÃÄ›430a¹À·ÃÁ¹›15aÈÛ15aƹÅɹÇÈ›15a½È›15a¶ +›937d›449`ÈÛ15aȼ¹›15aµÉȼÃÆ›15aú›14m›47a_VlhXYpq›10má›516aKF7mNDh:E=h +›1066d›13m›449`\¬¦›56ae{qzm{uxs›18a}y›19a~|q›14m›225añ +›1066d›1019`èéëìôóîé +›1154d›10m›1369`Ê›45a¹›15a½ÈÇ›15a·ÃÁÁµÂ¸›15a¸¹ì½ȽÃÂá +›1154d›449`{¹ºÃƹ›16aìÆÇÈ›16aµÈȹÁÄȽ»›14aÈÛ15aÉǹ›16aȼ¹›16aÄÆûƵÁá›15a½Â›22aÿ +›1211d›449`¶›405a˽»›13a·ÃÁÁµÂ¸ä +›1211d›473`Í›16a¹Ì¹·ÉȽ»›15aȼ¹›15aºÃÀÀà +›1310d›12m›449`ºcbi»¶›10m›23a2%3›23a#/--!.$›23a3%7›17a%7%j')./3/2)7 +›1408d›493`ƹÅɹ›369aÍ›12aÁµ›596aÈÛ13aȼ¹½Æ›13aÀû½Â +›1408d›449`Þ¡›127aÈ›14aÉǹÆÇ›13aú›14aȼ¹›13aÉȽÀ½È›95aÍ›13a·µÆ¹›14aÈÛ13aÄÉÈ›13aȼ½Ç›14a·ÃÁÁµÂ¸›13a½Â +›1465d›449`·ÃÁÁµÂ¸›16aÄÆÛ1a·¹¸Éƹâß +›1594d›13m›449`\¬§›56aj|uxs›19a}tq›14m›199aéñ›13m›16ae{ys{mw +›1594d›14m›848`èéëìôóî +›1682d›10m›449`²¼µÈ¹Ê›667aÊ›456aÉÇÈ›15aìÆÇÈÀÍ +›1682d›605`¹Æ›14a»ÆµÄ¼½·Ç›15aµÆ¹›14aƹÅɽƹ¸›15aÈÛ14a¶›1a¹›15a·Ã›22a¹Æȹ¸›15aÈÛ14aǽ̹À›14aºÃÆÁµÈ›13aÁ +›1739d›449`¶›1a¹›15aÃÉÈÄÉÈ›13a¶›208aÈÛ13aµ›13aÄǹɸÃð·Ã›1a¸¹›14aìÀ¹›14aÞÉǽ»›13aȼ¹›13a2!5$1!›92a¹Æßâ›18a¯¼¹Â +›1739d›681`Í›13a¢¤©ª›14a½Â›783a¸Æ½Ê +›1795d›486`Ê›45a¹›15a')./MH2)7›154aËÇä +›1795d›449`½Â›22aÿ›264aµÇ›14aºÃÀÀà +›1894d›12m›449`ºcbi»¶›10m›23a')./3/2)7›15m›22a*›14m:+%›16a-!,%›15m›3a+ +›2021d›12m›449`c¹±¹°›52anªv¢~½z§¨›16av¦¦¢~xvw¢z›18a©¥›10m›17a')./MH2)7 +›2109d›449`¯¼¹›16aÉȽÀ½È›184a¹›14aµ›15a›61a¶›1a¹Æ›15aú›15aÃÄȽõÀ›14aÅɵÀ½ì¹ÆÇá›14aµÇ›15aɸ¹Æä +›2109d›642`Í›13a·µÂ›16aȵ¿›95aÉÁ +›2222d›449`i2)9%lc›15m*›14m./3).-M›13mö›8aö›8aö›15m›5a+›10md›22a®Ä›1a¹·½ì¹Ç›18aȼ¹›17aµÆ¹µá›16a½Â›16aÁ½ÀÀ½Á¹ÈƹÇá›14aú›17aȼ¹›16aǽ̹À›16a½Áµ»¹â +›2279d›563`¤º›17aȼ½Ç›17aÅɵÀ½ì¹Æ›16a½Ç›17aÂÃÈ›17aÉǹ¸á›17aȼ¹›18a¸¹ºµÉÀÈ›16aµ·È½Ã›16a½Ç›17aÈÛ16a·ÃÄ›239aË +›2279d›1672`Í›17aȼ¹›18a˽¸à +›2335d›1154`˽»›11a½Ç›11aÂÃÈ›11a½Â›12a¹ë¹·Èß›11aú›12aȼ¹›11aǵ›22a¹¸›12aĽ·ÈÉƹ +›2335d›563`ǽι›12aÞÃÆ›11aȼ¹›12aĵě1a¹Æ›12aǽι›12a½º›11a˽¸Û570aÊ +›2391d›706`Èâ +›2391d›563`ǹ»Á¹Â +›2469d›952`ËÇä +›2469d›563`ªÄȽÃÂÇ›15aµÆ¹›15aµÇ›15aºÃÀÀà +›2568d›563`6)$3(j›15m*›14m›106a%1›15m›4a+›10m›22a®Ä›1a¹·½ì¹Ç›12aȼ¹›11a˽¸È¼›10a½Â›11aÁÁ›11aú›10aȼ¹›11aǽ̹À›10a½Áµ»¹å›11a¸¹ºµÉÀÈÇ +›2568d›14m›725`-4," +›2624d›10m›663`ÈÛ15aȼ¹›15aǵ›22a¹¸›15a˽¸È¼â +›2624d›837`Ê +›2700d›563`(%)'(3j›15m*›14m›106a%1›15m›3a+›10m›395aÈ›17a½Â›18aÁÁ›17aú›17aȼ¹›18aǽ̹À›17a½Áµ»¹å›18a¸¹ð +›2700d›14m›749`-4,"›10m›82a®Ä›1a¹·½ì¹Ç›19aȼ¹›18a¼¹½»¼ +›2757d›962`Ê›164aÈâ +›2757d›663`ºµÉÀÈÇ›14aÈÛ15aȼ¹›15aǵ›22a¹¸›15a¼¹½»¼ +›2855d›563`¤º›16aÃÂÀÍ›14aù›16aÃÄȽÛ14a½Ç›15aÇÄ›1a¹·½ì¹¸á›16aȼ¹›15aĵƹ›193aÍ›15a¶›1a¹›16aÃÁ½Èȹ¸â +›2855d›1363`ȼ¹Ç¹Ç›15aÁµ +›2933d›12m›563`k¹a¹›10m›13a¤º›14aȼ½Ç›14aÅɵÀ½ì¹Æ›13a½Ç›14aÉǹ¸›14a½Â›14a·Ã¾É·ȽÛ14a˽ȼ›14aȼ¹›14ai2#!,%›13aÅɵÀ½ì¹Æá +›2990d›1378`Ë›18aȼ¹›18a½Áµ»¹â›30a¤º›19aȼ¹›19ai2#!,% +›2990d›563`ȼ¹›19aµ·È½Ã›18a½Ç›18aìÆÇÈÀÍ›18aÈÛ18aÇ·µÀ¹á›19aȼ¹Â›19a˽¸à +›3046d›563`ÅɵÀ½ì¹Æ›15a½Ç›14aÂÃÈ›15aÉǹ¸á›16aȼ¹›15a½Áµ»¹›14a½Ç›15aÇ·µÀ¹¸›15aÈÛ15aìÈ›15aȼ¹›15aǽι›15aÇÄ›1a¹·½ì¹¸â +›1;955;1892;2;14!| +›1;998;1308;2;15!| + + +›462d›607`ÒÑ›12m›1269aËÅÎ¿É +›462d›1384`›46aÐÆÛ15aÅÇÊËÐËÏÇÔ›16aÌÎ +›607d›10m›607`iç./è&/1-&%%$›21a¤ÂÇÈÆÉ·ÈÇ›14a')./MH2)7›482a¼µÆµ·È¹Æ›13aÈÛ13aȼ¹ +›607d›1337`ÈÛ13aµÄÄ›1a¹Â¸›15aµ›14aºÃÆÁ›13aº¹¹¸›15a· +›664d›1319`ËÇ›15aȼ¹›17aÃÉÈÄÉÈ›17aÈÛ16a¶›1a¹›18aÅɹɹ¸›18a¸½Æ¹·ÈÀÍ›16aÈà +›664d›721`¹Â¸›17aú›17aȼ¹›17aǽ̹À›16aìÀ¹â›25a¯¼½Ç›17aµÀÀà +›720d›721`ȼ¹›17a§©ÏÒ›17aÄƽ›671aÉÇÈ›12m›16a¤¥©›10m›17a¶›1a¹›18aµÄÄ›1a¹Â¸¹¸ +›720d›1006`ȹƛ16aºÃÆ›16aÄƹʽ¹Ë½Â»â›25az›17aºÃÆÁº¹¹¸›17aÁ +›771d›14m›1634`} +›777d›10m›1522`ÈÛ18aµ›18a§›5a¯›18a³›19a¸Ã›1a·ÉÁ¹Â›60aÍ›18aȼ¹ +›777d›721`ÈÛ18aǽ̹À›18aìÀ¹Ç›18aȼµÈ›18aµÆ¹›19aÈÛ18a¶›1a¹›19a½ÁÄ›1aÃÆȹ¸›18a½Â›412aÈ›19a¶ +›791d›1680`~ +›833d›721`u@BGH›14a·ÃÁÁµÂ¸›15aÞºÆÃÁ›14aȼ¹›16a@K:IABQ<>>=>=jÝâ›18aªÂ¹›16aÄ›1aÃÇð +›1840d›449`ǽ¶À¹›14aÇÃÀÉȽÛ13a½Ç›14aÈÛ14aƹ·ÃÁĽÀ¹›14m›45a_VlhXYpq›10m›330aµÀɹ›15aºÃÆ›14aȼ¹›14aµÄÄÆÃð +›1840d›14m›1026`R›10m›184aá›13aÉǽ»›14aµ›14aÀµÆ»¹Æ›13aÊ +›1896d›1000`Ëâ›19a¤º›13aÍ›652aÃÉÆ›13aǽȹá +›1896d›449`ÄƽµÈ¹›13aĵƵÁ¹È¹Æ›12aÂÃȹ¸›14a¶›1a¹ÀÛ130aÃÉ›13a츛14aȼµÈ›13aȼ½Ç›12a½Ç›13a¹·¹ÇǵÆÍ›13aµÈ›13aÍ +›1953d›449`ÄÀ¹µÇ¹›14a½ÂºÃÆÁ›12aȼ¹›14aµÉȼÃÆ›12aú›14m›45a_VlhXYpq›10m›179aÍ›13a¶›1a¹›14a·Ã›160aÍ›13a¹À¹·ÈÆý· +›1953d›14m›996`R›10m›184aá›12a˼Û13aÁµ›163aȵ·È¹¸›13a¶ +›2009d›449`Áµ½À›15aµÇ›471a=hKF7mNDh:E›332aßâ›22a£Ã›31a¹Ê +›2066d›876`Í›17aÉǽ»›18aȼ¹›17ai23!13).'t0!'%›16aµÂ¸›18ai.4-"%1t/&t0!'%2 +›2066d›449`Ä›1aÃÇǽ¶À¹›18aÈÛ17aÄÆÛ1a·¹¹¸›19a¶ +›2122d›449`ÅɵÀ½ì¹ÆÇ›19aÈÛ19aÄÆÛ1a·¹ÇÇ›20aȼ¹›20ah$5)›171aË›666a¼ +›2122d›1068`ìÀ¹›19a½Â›20aÈ›31aÛ18aÃÆ›19aÁÃƹ›19aÇÁµÀÀ¹Æ›18aÄ›1aÃÆȽÃÂÇá›20a˼½· +›2178d›14m›516`L3›10m›20a¹Ì·¹¹¸›17aȼ¹›15aÄÆûƵÁÝÇ›13aÀ½Á½ÈÇâ +›2178d›14m›449`$.- +›2296d›10m›449`?HGM›24a?BE>›23aG:F>›23aMHH›24aEHG@›23acF:Q›23aE>G@MAl›13mò›10md›22aó›15a´›80a¹›15a¼µ¸›16a½ÈÛ›20a¯¼¹›16aÀ½Á½Èá +›2296d›1472`ÃÉÝÊ +›2353d›13m›563`ò›10m›288aÍ›22aȼ¹›14m›21az¢~›10m›174aÈ›14m›20a-!,%›17a+%-'3(›10m›3aá›22a½Ç›21aµÀƹµ¸Í›21aµÈ›21aȼ¹ +›2353d›589`á›23aǹț21aµÈ›21aÑÔÔ›20a¶›253a·ÃÂÇȵ +›2409d›698`ÉÁ›14aÄ›1a¹ÆÁ½Èȹ¸›15a¶›67az³ã­¨®â +›2409d›563`ÁµÌ½Á›311aÍ›15a± +›2512d›449`LM:l›13mò›10m›22aó›15ah$5)›257aȵ½Â›14m›15a/42(›10m›19aµÂ¸›14m›37a./›10m›19a·ÃÁÁµÂ¸Çå›15a¯›18a³›16aƹð +›2512d›933`ìÀ¹Ç›15a·µÂ›16a·Ã›14m›290a/ +›2522d›10m›1815`~ +›2569d›1101`ÉÁ›14a›61a¶›1a¹Æ›16aú›14m›15a/42(›10m›3a¹Ç›17aȼµÈ›15a½È›14aÉǹÇá›16a¶ÉÈ›16aȼ¹ +›2569d›563`Ä›1aÃÆÈÇ›15a½Â›16aȼ¹›15aìÀ¹›16aȼ¹›16aÁµÌ½Á›100aÉÁ +›2625d›563`ÄÆûƵÁ›17a¼µÇ›17aµÂ›18aÛ22a¹ÆµÀÀ›16aÀ½Á½È›16aú›13m›18aò›10má›18aǹț17aÈÛ17aÐÏÏ›17aȼÆÃÉ»¼›18aȼ¹›14m›18az¢~›10m›19a·ÃÂð +›2625d›919`Ê +›2682d›646`È›14m›18a23!#*›17a2)9%›10m›195aµÀɹ›19a½Ç›19a¹Ì·¹¹¸¹¸á›21a½ÈÝÇ›18aÁÃÇÈ›18aÄÆöµ¶ÀÍ›19a¸É¹›19aÈà +›2682d›563`Çȵ›227aå›20a½º›18aȼ½Ç›19aÊ +›2738d›563`ÇÃÁ¹›15m›19a*›14m$5)›16a"83%›15m›3a+›10m›821aÈá›19aǽ·¹›19a¯›18a³ +›2738d›892`ǹÅɹ·¹›20aÆɽ»›19aµÁÿ›18a½Â›19aµ›19aʽÆÈɵÀ›17aºÃ +›2748d›1884`~ +›2795d›595`ÃÉÀ¸›15a¶›1a¹›16aÊ›689aÍ›14m›15a/42(›10m›3a¹Çâ +›2795d›563`Ë›185a¹ÆÍ›14a¼µÆ¸ðÄƹÇǹ¸›16aÈÛ15a½ÇÇɹ›15aȼµÈ›14aÁµÂ +›2898d›449`MHH›24aF:GR›23a;E:GD›23aO>KLH›24aI:@>L›290aȽ»›11a½Â›13a¸ÉÄÀ¹Ì›13aÁÛ1a¸¹á›13a˽ȼ›12aȼ¹ +›2898d›1093`ó›12a²¼¹Â›13aÄƽ +›2954d›643`ȹƛ17añÄƽ›526a¹Æ›19aÈ›31aÛ16aÇÉ··¹Çǽʛ231a¹Â +›2954d›563`Äƽ›175aȽ»ï›17aµ›17a¶ÀµÂ¿›18aǽ¸¹›18a˼¹Â¹Ê›73aË›213a¹›19aÛ1a¸¸›18aÃÆ›17a¹Ê +›3030d›14m›486`ßâ +›3046d›11m›519`z©­°¬¥Å›12a©³®Â´›13a©´Á +›1;449;3001;2;598!| +›1;784;2680;2;14!| +›1;1430;2351;2;14!| + + +›462d›10m›607`ÒÓ›12m›756aËΛ13a¿Ê›15aÓ›354aÅÃÏ +›462d›1234`Û46aÃÎΛ241a¿ÎÊÇÊÅ›15aÉÃÏÏ¿ +›607d›10m›721`ĵ»¹Ç›18aÛ1a··ÉÆá›19aȼ¹›14m›51a_VlhXYpq›10m›17aÄÆûƵÁ›17a¼µÇ›19aÈÛ18a½¸¹Â›214a¼›18aÈƵÂǽð +›607d›14m›1069`R›10m›612aȽºÍ›17aµÀÀ›18aÇÉ· +›664d›721`ȽÃÂÇ›14a¶›1a¹ºÃƹ›15aÄƽ›566aÈ›14aÁµÌ½Á›217aÍ›14aȼ¹ +›664d›1048`Ƚ»›14a·ÃÁÁ¹Â·¹Çâ›20a¯¼¹›16a·ÉÆƹ›166aÉÁ›14a½Ç›15aǹț15a¶ +›720d›14m›721`z¢~›10m›16aÁµ·ÆÛ14m›253a!'%2›10m›4aá›14a˼½·›180aµÀɹ›15aú›15aÐÏÏâ›20aªÂ¹›16aÇÃÀÉȽà+›720d›14m›975`,!7›17a"+!-*›16a/›10m›203a¼›15a¼µÇ›16aµ›15aÊ +›777d›811`¼›22a¸Ã›1a¹ÇÂÝÈ›22a¹·¹Çǽȵȹ›22aƹ·ÃÁĽÀ½Â»›21aȼ¹›22aÄÆûƵÁ›21a½Ç›22aÈÛ21aƹÃÆ»µÂ½Î¹ +›777d›721`˼½· +›833d›744`ÃÉÆ›15a¸Ã›1a·ÉÁ¹Â›445a¹Æ›15a·›251a¼›15aƹÅɽƹ›15aµÂ›15aÛ1a¸¸ +›833d›721`Í›256aÈ›15aÇÛ15aȼµÈ›15aȼ¹Æ¹›15aµÆ¹›15aº¹Ë›71a¼µÄȹÆÇ›15a˼½· +›889d›721`›61a¶›1a¹Æ›15aú›15aĵ»¹ÇÛ +›889d›745`ÉÁ +›985d›607`MHH›24aF:GR›23a@ERIAL›13m›23aî›10m›24as›13m›24aò›10m›319a¼µÆµ·È¹ÆÇá›13m›20aî›10m›303aÈÇ›20aƹºð +›985d›1137`ó›19a¯¼¹›20aÈÃȵÀ›19a·›242aá›21a½Â›19aµÀÀ›19aȼ¹›20aºÃ +›1042d›721`¹Æ¹Â·¹¸›18a˽ȼ½Â›17aÍ›258aÈ›18a¹Ì·¹¹¸Ç›19aȼ¹›18aÇÈÃƵ»¹›16aµ›20aµ½Àµ¶À¹á›13m›16aò›10mâ›27a¯¼¹ +›1042d›1054`ÃÉÆ›17a¸Ã›1a·ÉÁ¹Â›463aÊ +›1098d›721`ÀµÈȹƛ19aÅɵ›47aÍ›20a½Ç›20aǹț20a¶›279aÈ›14m›20a,!7›17a'+8/(2›10m›24a½Â›21aȼ¹›14m›21az¢~›10má›22aµÂ¸ +›1098d›946`Ƚț194aÍ›21aȼ¹›21a·ÃÂÇȵ +›1155d›846`ÈÀÍ›19a¼µÇ›20aȼ¹›21aÊ›463a¹ÀÍ›19aȼµÈ›20aÇÉ·›263aÈ +›1155d›721`·ÉÆƹ›264aµÀɹ›20aÐÏÏÏÏâ›33a¤È›20a½Ç›20aÉÂÀ½¿›241a¼›20aµ›20a¸Ã›1a·ÉÁ¹Â +›1211d›985`ȹ¸á›15aÉÂÀ¹ÇÇ›16aÃÂÀÍ›15aµ›15aÇÁµÀÀ›15aÄ›1a¹Æ·¹Â›446a¹Æ¹ +›1211d›721`·ÃÉÀ¸›16a¶›1a¹›16aÄƽ›611aȵ»¹›16aú›15aȼÃǹ›15a»ÀÍļǛ16aË +›1268d›721`µ·ÈɵÀÀÍ›14m›79a$›10m›22a½Â›18aȼ¹›18a¸Ã›1a·ÉÁ¹Â›348aËÂÀõ¸¹¸›17aºÃ›84aÃÉÀ¸ +›1268d›14m›897`42%›10m›356aÈá›19a¶›1a¹·µÉǹ›18aȼ¹›19a¸Ã›264aÈÇ›17aË +›1324d›1444`Ê›362aȹÆâ +›1324d›721`ÁÃÇÈ›14aÄÆöµ¶ÀÍ›15a¹Ì·¹¹¸›16aȼ¹›15aÁ¹ÁÃÆÍ›15aµ›20aµ½Àµ¶À¹›14aÛ15aȼ¹›15aÄƽ +›1420d›607`MHH›24aF:GR›23a?HGML›23acF:Q›23a?HGMLl›13mò›10md›22aó›11a´›250aÈ›12aÀõ¸Ç›11aÁÃƹ›11aȼµÂ›13m›12aò›10m›12a¸½ºð +›1420d›1387`ÃÉÆ›12a¸Ã›1a·ÉÁ¹Â +›1476d›721`º¹Æ¹Â›95aÈÇâ›13m›26aò›10m›162aÍ›17aȼ¹›14m›18az¢~›10m›169aÈ›14m›17a,!7›17a&.-32›10m›249aÈÀÍ +›1476d›817`È›17aºÃ›117a½Ç›17aǹț17a¶›240a·ÃÂÇȵ›233aá›16aµÂ¸›18a·ÉÆƹ +›1533d›721`½Ç›15aǹț14aÈÛ15aÐÏÏâ +›1629d›607`MHH›24aF:GR›23a,.TW›23a?HGML›115aÃÉÝÊ›611aÍǽ·µÀÀÍ›16aÉÂð +›1629d›1083`ó›17a´›80a¹›17a¼µ¸›18a½ÈÛ›26a¯¼¹›17a§©ÏÒðÄÀÉÇ›18a½Ç›17aļ +›1685d›721`µ¶À¹›20aÈÛ20a½Áµ»¹›20a»ÀÍļǛ20aºÆÃÁ›20aÁÃƹ›20aȼµÂ›14m›20a,!7›18a+-&.-32›10m›4aàÐÞæ›20aÐÓßá›20aÇÛ20aȼ¹ +›1741d›1227`ÃÉÆ›16a¸Ã›1a·ÉÁ¹Â›335a¼›17aȼµÈ›16aÂÛ17aǹ·ð +›1741d›721`ñÇÃÀÉȽÃÂï›15a½Ç›16aÈÛ16aÄÆÛ1a·¹ÇÇ›17aÍ›257aÈ›17a½Â›17aǹ·È½ÃÂÇá›16aÇÉ· +›1798d›721`ȽÛ12a½Â›22aÿ›186aÍ›12a»ÀÍļǛ12aȼµÈ›12aȼ½Ç›12aÀ½Á½È›11a½Ç›12a¹Ì·¹¹¸¹¸â›21a£Ã›31a¹Ê›104a¹Â +›1798d›849`Ê›45a¹Ç›11aÇÛ12aÁµÂ›770aË›42a¹Æá›11a¹Ê +›1854d›721`ȼ¹›18a¯›17a³¶›1aÛ1aÿ›18aµÂ¸›15m›18a¤¥¦›55a©ª¦›10m¶›2aÛ1aÿ›19a¸ÃÂÝÈ›17aƹÅɽƹ›18aȼ½Ç›17aÁµÂ›101aÈÇá›17aÇà +›1854d›15m›1181`§¨›10m›654aÍ›17aºÃ +›1864d›827`~ +›1911d›744`ÃÉÝÊ›172a¹ÆÍ›15a·Ã›22aÃÀÉȹ¸›15a¸Ã›1a·ÉÁ¹Â›217aÃÉ›15aÄ›1a¹Æ¼µÄÇ›16aÇÄ›1a¹µ¿›15aÈà +›1911d›721`Í›83a¹›14a»ÃÈ›14aµ›15aÊ›143aÊ›314aÈä›20aǼÃÉÀ¸›15aÍ +›1967d›776`ÍÄ›1aûƵļ½·›14a¸¹Ç½»Â¹ÆÚ +›1967d›721`µ›15aÈ +›2063d›607`MHH›24aF:GR›23aG:F>L›23acG:F>›23aLBS>l›13mò›10md›22aó›10a¯¼¹›11aµÁ¹Ç›10aú›11aµÀÀ›9aȼ¹›11aºÃ›215aÃÉÆ +›2063d›1820`ÈÇ›10aÉǹ¸›11a½Â›10aÍ +›2119d›897`È›16a¹Ì·¹¹¸›13m›17aò›10m›35a¼µÆµ·È¹ÆÇ›15a½Â›16aÈÃȵÀå›13m›14aò›10m›159aÍ›15aȼ¹›14m›17az¢~›10m›167aÈ +›2119d›721`¸Ã›1a·ÉÁ¹Â›221a·›415a½Ç›16aǹț16a¶›235a·ÃÂÇȵ +›2176d›14m›721`,!7›17a-!,%2›10m›290aÈÀÍ›15aǹț15aÈÛ14aÐÏÏÏâ +›2176d›949`á›14aµÂ¸›15a½Ç›15a·ÉÆƹ +›2272d›607`MHH›24aF:GR›23aOBKMN:E›23aKL›21aó›22a|¼µÆµ·È¹ÆÇ›21aȵ¿›440aÈ +›2272d›1643`¹Â›21aºÆÃÁ›22aµ›22aʽÆÈɵÀ›20aºÃ +›2328d›1720`¼µÆµ·È¹Æ›13aºÆÃÁ›12aÇÃÁ¹ +›2328d›721`ȼµÈ›12aƹÅɽƹ›13aÁÃƹ›12aȼµÂ›13aǽÁÄÀ¹›13a½Áµ»½Â»›11aú›13aµ›12aǽ»À¹›12a· +›2385d›721`ƹµÀ›15aºÃ›569a¼µÆµ·È¹ÆÝÇ›14aǹÅɹ·¹›17aú›15m›15a*›14m$5)›16a"83%›15m›3a+›10mÇ +›2385d›871`È›14aƹÇÉÀÈ›15a½Â›15aȼ¹›16a˼ÃÀ¹›15aú›15aȼ¹›16a· +›2441d›1184`â›19a¤º›14aÍ›254aÈ›13aÁµ¿›73a¹ÆÍ›13a½Â›116a¹›12aÉǹ›14aú +›2441d›721`¶›1a¹½Â»›13aÇÈÃƹ¸›13a½Â›13aÁ¹ÁÃÆÍ›95aÃÉÆ›13a¸Ã›1a·ÉÁ¹Â›114a¹Ç›13aÊ›111aȹÂÇ½Ê +›2498d›721`ʽÆÈɵÀ›15aºÃ›171aÍ›16a¶›1a¹›18a¹·¹ÇǵÆÍ›17aÈÛ16a½Â·Æ¹µÇ¹›14m›17a5&›16a2)9%›10m›319aÈ +›2498d›931`ÈÇá›16a½È›16aÁµ›680aºÆÃÁ›17a½ÈÇ›16aÄƹǹ +›2554d›742`µÀɹ›15aú›15aÐÏÏÏÏ +›2554d›721`Ê +›2677d›12m›607`d¹°¹±›52aavy›10m›18ah$5)›12m›17ae~¢z›16ad§§¥§¨ +›2764d›10m›607`¤º›14m›45a_VlhXYpq›10m›148aȹÆÇ›12aµ›12aÁµÀºÃÆÁ¹¸›11ah$5)›11aìÀ¹›12aȼµÈ›12aÄƹʛ43aÈÇ›12a½È›11aºÆÃÁ›11aÁµ¿½Â» +›2764d›14m›650`R›10m›195a¹Â·ÃÉ›702a¹Â +›2820d›654`Í›11aÇÃÆÈ›10aú›10aÊ›93aÈ›10aµÈȹÁÄÈ›10aµÈ›10aÄÆÛ1a·¹Çǽ»›11a½Èá›11aȼ¹›11aÄÆûƵÁ›10aµ¶›1aÃÆÈÇ›10a˽ȼ›10aµÂ›11a¹ÆÆÃÆ +›2820d›607`µÂ›189aµÀ½µÂ +›2877d›607`Á¹Çǵ»¹›11aȼµÈ›11aÇȵÆÈÇ›10aé&:M:E›23a>KKHKj›47a":=›23a$5)›23a?BE>Ýå›12aȼ¹›11aƹÁµ½Â¸¹Æ›11aú›11aȼ¹Ç¹ +›2933d›607`Á¹Çǵ»¹Ç›16aµÆ¹›17aÀ½Çȹ¸›16a¶›1a¹ÀÛ395a¹›16aú›16aµ›16aǹƽÃÉÇ›17a¹ÆÆÃÆ›16a½Â›16aȼ¹›17ah$5) +›2933d›1083`Ëâ›24a¯¼½Ç›17a½Ç›16a½Â¸½·µÈ½Ê +›2990d›607`ìÀ¹å›16a½º›16aÍ›450aÃÉÆǹÀºá›15aÉǽ»›16a¯›330aµÇ›15a·ÃÆÆÉÄȹ¸ +›2990d›760`ÃÉ›16a¸½¸ÂÝÈ›16a»¹Â¹ÆµÈ¹›15a½È›16aÍ›328a³á›16aÄ›1a¹Æ¼µÄÇ›17a½È›15aË +›3000d›1515`~ +›3046d›1045`¼½Â»›19aÍ›163a¼½Â¹â›32a²¼½ÀÇÈ›14m›50a_VlhXYpq›10m›19a˽ÀÀ›17aµÈȹÁÄÈ +›3046d›607`½Â›19aȼ¹›20aÄÆÛ1a·¹ÇÇ›19aú›19aƹµ·›127aÃÉÆ›18aÁµ·›14m›279aR +›1;1679;2496;2;14!| +›1;805;2174;2;14!| +›1;1595;1683;2;14!| +›1;1687;1474;2;14!| +›1;1591;1096;2;14!| +›1;1179;718;2;14!| +›1;1059;718;2;14!| + + +›462d›12m›587`ÖçÖß›14aÃååâåæ›10m›1094aÒÔ +›462d›12m›449`Ãôî›45aÄ +›607d›10m›1877`È›18a½Ç +›607d›449`ÈÛ18a¹ÌÄÀµ½Â›18a˼µÈÝÇ›17aËÆû›18a˽ȼ›18aȼ¹›18aìÀ¹á›19aȼ¹›18aÈÛ1aÃÀ›17aÈÛ18a¶›1a¹›19aÉǹ¸›19aµÈ›18aȼ½Ç›17aÄ›1aý +›664d›14m›449`R›57aoi›1ad›10m›50aÍÄ›1a¹›15aȼ¹›15a·ÃÁÁµÂ¸ +›664d›14m›481`_Vl›10m›65aä›20aÈ +›753d›12m›449`ºcbi»¶›10m›23a$5)380% +›842d›449`µÂ¸›14aºÃÀÀÛ649aȵ¶À¹›13aµÂµÀÍǽǛ12aú›13aȼ¹›14aÃë¹Â¸½Â»›13aìÀ¹â +›842d›621`Ë›12aȼ¹›14aÄÆÃÁÄÈÇ›13aÈÛ13a»¹Â¹ÆµÈ¹›13aµ›13aÄƽ +›941d›449`:EE›24aVVWL›22aó›20az›21ah$5)›882a¼µÆµ·È¹ÆÇ +›941d›899`ìÀ¹›21a½Ç›20aÇÉÄÄ›1aÃǹ¸›21aÈÛ20aì½Ǽ›21a˽ȼ›20aµÈ›20aÀ¹µÇÈ›19aÓ›21a· +›998d›610`ʽ»›14aȼ¹›14aÊ›211aÃÉÆ›14aìÀ¹›14aµÄÄ›1a¹µÆ¹¸›15aÈÛ14a·ÃÂǽÇÈ›13aú›14aÂÃȼ½Â»›14a¶ÉÈ›14aȼ½Ç +›998d›563`¼µ›196aµÀɹ›15aÑÑÒå›13aÍ +›1054d›582`¼µÆµ·È¹ÆÛ +›1054d›563`· +›1146d›449`;RM>›13m›24aí›10m›24aBL›23aGHM›24a;HI›22aó›14m›43a_VlhXYpq›10m›10a¹ÌÄ›1a¹·È¹¸›12aÈÛ11a츛12aµ›14m›30a./›10m›14a·ÃÁÁµÂ¸›12aµÈ›10aȼ½Ç +›1146d›14m›951`R›552a" +›1203d›10m›649`È›15a½Â›15aȼ¹›16ah$5)›289aµÇ›15aµÀÀ›14aƹµ¸Í›15aÈÛ15aÇȵÆÈ›14aÄÆÛ1a·¹Çǽ»›16aµ›15aÂ¹Ë +›1203d›563`Ä›1aý›274aìÀ¹á›15aǽ·¹›16a½È›14aË +›1259d›563`ĵ»¹â›13m›20aí›10m›307aÍȹ›15a›61a¶›1a¹Æ›15a˽ȼ½Â›15aȼ¹›15aìÀ¹â +›1259d›742`½Â¸½·µÈ¹Ç›15aȼ¹›15a¶›100aÉÁ +›1351d›449`;RM>›13m›24aí›10m›24aBL›23aGHM›24aIHLM›22aó›14m›44a_VlhXYpq›10m›12a¹ÌÄ›1a¹·È¹¸›15aÈÛ12a츛14aȼ¹›13aÇȵÆÈ›12aú›13aȼ¹›13aÄ›1aÃÇÈð +›1351d›14m›976`R +›1407d›10m›623`¶À¹›15aµÈ›14aȼ¹›15a½Â¸½·µÈ¹¸›15aÀÛ1a·µÈ½Ã›14a½Â›15aȼ¹›16aìÀ¹â +›1407d›563`µÁ +›1499d›449`=>GHFBG:MHK›23aBL›13m›23aé›10m›23aó›18a¯›18a³›19aƹě1aÃÆÈÇ›19a½Â›19aȼ¹›19ah$5)›18aìÀ¹›20aȼ¹›19aµ·ÈɵÀ›18aǽι›19aú›19aȼ¹ +›1509d›943`~ +›1556d›610`±¤›15aɽÈÇÝ›15aÉǹ¸›17aȼ¹Æ¹½Âå›15a½Â›16aºµ·Èá›15aȼ¹Í›16aµÆ¹›15aµÀË›21aÍÇ›14aULI›15a½Â›16a¯›18a³›15aÃÉÈÄÉÈá +›1556d›563`é}›867aµ +›1566d›1722`~ +›1612d›835`ÃÉÀ¸›17a¶›1a¹›19aº¹µÇ½¶À¹›17aºÃÆ›18aÃȼ¹Æ›17aÄÆûƵÁÇ›17aȼµÈ›17a»¹Â¹ÆµÈ¹›17ah$5) +›1612d›563`µÀȼÃÉ»¼›17a½È›17aË +›1669d›1026`È›16aɽÈâ›25a¯›567aÍ›17aÁ¹µÂÇ +›1669d›563`ìÀ¹Ç›17aÈÛ16aǹÀ¹·È›17aµ›17a¸½ë¹Æ¹Â›203a³›17aƹě1aÃÆÈÇ›17aȼ¹›17aµ·ÈɵÀ›16aɽț17a¶ +›1679d›1204`~ +›1725d›563`ú›14aµ›15aĵ½Æ›13aú›15a½Â›232a¼á›14aÈƹµÈ¹¸›14aµÇ›15aµ›14aƵȽõÀ›13a›61a¶›1a¹Æá›14a˽ÀÀ›14a·Ã›22a¹ÆÈ +›1725d›833`ȹ»¹ÆÇá›13a˼½·›493aÉÁ›243aÊ +›1766d›15m›1376`ÌN +›1782d›10m›610`±¤›18aɽÈÇÝ›18aÈÛ17a¸¹·½Á½·ÆÃÂÇ›18aÞÏ›12aЛ13mõ›10mÁ›18aæ›19aÐÏ›201aÉÇ›18aȼ¹›19aÊ›155a¹Â +›1782d›563`é}›15m›547a%›10m›251aÁßâ›29a¯¼›163aµÀɹ›18a»½Ê +›1822d›15m›1462`HM +›1838d›10m›983`Í›14a¯›18a³›14a½Ç›14aÉÇɵÀÀÍ›13aÖÑÑÖ›15m›7a%›10m›8aÑ›49aæ›13aÓÖÒÕÑ×ÕÖÑá›12a¶›1a¹·µÉǹ +›1838d›563`ÈÛ14aȼ¹›14a¸¹ÂÃÁ½ÂµÈÃÆ›13a¶ +›1848d›1046`~ +›1879d›15m›775`HM +›1895d›10m›563`ȼ¹Æ¹›14aµÆ¹›13aÑ›269aÈÇ›12a½Â›14aµ›13aÄ›1aý›508aÈÇ›13a½Â›14aÐÏÏ +›1895d›825`Ç·µÀ¹¸›14aÄ›1aý›221aÈá›13aµÂ¸›13aȼ¹Æ¹›14aµÆ¹›13aÖÑÑÖ›12aÄ›1aý +›1951d›563`½Â·›212aÉÁ¹ÆµÈÃÆ›13a½Ç›14aȼ¹Â›15aÑÔÓÏÏÏÏÏ›15m›10a#›10m›13aÑÔÓ›23aBLGbM›23aLM:KM›23aH?›24aIK>:F;E>›22aó›22a¯¼¹›23ah$5)›23aìÀ¹›23a½Ç›22a¹ÌÄ›1a¹·È¹¸›24aÈà +›2156d›563`ÇȵÆÈ›14a˽ȼ›15aȼ¹›14m›55a%›10m›891a¶À¹â +›2156d›14m›854`/1›10m›37a·ÃÁÁµÂ¸á›15a½Â¸½·µÈ½Â»›14aȼ¹›16aÇȵÆÈ›13aú›15aȼ¹›16aÄƹµÁ +›2248d›449`)$›24a;RM>›23aBL›13m›24aì›10m›351aÍȹ›16aú›16aȼ¹›16ah$5)›16aìÀ¹›16a½Â¸½·µÈ¹Ç›16a˼½·›63a¹Æǽà+›2248d›760`ó›15a¯¼¹›17aǹ·Ã¸›16a¶›676a¼›16aÊ +›2304d›563`ú›15a}›834a¹ÆǽÛ14aÑâ +›2304d›649`±¤›15a½Ç›15a½Â›15aÉǹå›15aȼ½Ç›14aÄÆûƵÁ›15aÇÉÄÄ›1aÃÆÈÇ›15aÃÂÀÍ›15aÊ +›2396d›449`F:@GB?B<:MBHG›23aBL›13m›23aí›10m›23aó›15a¯¼¹›16ah$5)›388a¹Æ›15auF:@GB?B<:MBHG +›2396d›1184`ìÀ¹›16aƹě1aÃÆÈÇ›16a˼µÈ¹Ê +›2453d›623`Í›15a¼µ›22a¹›14a¶›1a¹¹Â›17aÇÄ›1a¹·½ì¹¸›16aÈÛ15a¯›216a¹Â›15aÊ›284a¹Û +›2453d›563`Áµ›85aÊ›430a³å›15aȼ¹›15a»½Ê›80aµÀɹ›15a½Ç›15a¹»µÈ½Ê +›2463d›1138`~ +›2544d›449`GH›24aVVWL›226aȽù¸›12aµ¶›1aÛ22a¹›11aÞǹ¹›12aé:EE›23aVVWL›276a¶À¹›11a½Ç›11aºÃÀÀÛ31a¹¸ +›2544d›639`ó›12azÇ›12aÁ¹Â›206aÊ›322aÝßá›11aȼ¹›13aÄ›1aÃÇȵÁ›195aË +›2601d›563`¶›576aÍȹǛ12a¼µ›191aµÀɹ›13aÑÑÒå›11a¶ÉÈ›13aȼ½Ç›11ah$5) +›2601d›587`Í›12aµ›12aǹÅɹ·¹›13aú›12aµÈ›12aÀ¹µÇÈ›11aºÃÉÆ›12a¶›138aʽ»›11aȼ¹›12aÊ +›2657d›563`ìÀ¹›15a¸½¸ÂÝÈÛ +›2749d›449`GNF>K:MHK›23aBL›13m›24aî›10m›23aó›14a®¹¹›16aé=>GHFBG:MHK›22aBL›13m›24aé›10mÝ›14aµ¶›1aÛ22a¹â +›2749d›1444`Ê +›2841d›449`HGER›13m›24aî›10m›24a;RM>L›23aEHG@›22aó›12a¯¼¹›13ah$5)›12aìÀ¹›12aË›457aÊ›98aȵ½Â¹¸ +›2841d›1240`µÇÂÝÈ›12aÀû›11a¹ÂÃÉ»¼›13aÈÛ12a¼µ›22a¹›12a·Ã +›2898d›563`µ›15aÊ›209a¶À¹›15aµÂ¸›15aÄ›1aÃÇȵÁ›315aÍ›15aÉǹºÉÀ›16a½ÂºÃÆÁµÈ½ÃÂÛ +›2898d›622`µÀ½¸›15aÄƹµÁ›305a¶À¹á›14aÀ¹È›15aµÀù›14aµÂ +›2990d›449`I:@>›24a>G=>=›23aNG>QI>=ER›21aó›14az›15aĵ»¹›14a¶›1a¹½Â»›15aÄÆÛ1a·¹Çǹ¸›16aì½Ǽ¹¸›15a˽ȼÃÉÈ›14aµÂ +›3046d›563`¹ÌÄÀ½·½È›14m›33a./›10m›19a·ÃÁÁµÂ¸á›14aµÂ¸›16a½Ç›14a·ÃÆÆÉÄÈâ +›3046d›14m›723`% + + +›462d›10m›607`ÒÕ›12m›756aËΛ13a¿Ê›15aÓ›354aÅÃÏ +›462d›1234`Û46aÃÎΛ241a¿ÎÊÇÊÅ›15aÉÃÏÏ¿ +›607d›10m›607`I:@>›23aEBGD›13m›24aï›10m›24a:?M>K›23a;RM>›13m›23að›10m›513aµÇ›13a½Â¸½·µÈ¹¸›15aµÇ›14a¶›1a¹½Â» +›607d›1200`ó›14a¯¼¹›15aÇȵÆÈ›13aú›15aµ›14aĵ»¹›15aË +›664d›721`ÇÛ14a·ÀÃǹ›14aµºÈ¹Æ›14aȼ¹›15aÇȵÆÈ›14aú›14aȼ¹›15aÄƹʽÃÉÇ›14aù›15aȼµÈ›14aȼ¹Æ¹›15aË›267aÈ +›664d›1816`¹Æ¹›14a½ÂÇÉî·½¹Â +›720d›721`¶›224aȵ½Â›19aȼ¹›19a¹·¹ÇǵÆÍ›20a¶›607aË›17aȼ¹ +›720d›745`ÍȹǛ19aÈÛ18a·Ã›409aÍȹǛ19aȼµÈ›18aµÆ¹›19aƹÅɽƹ¸›19aÈÛ19aºÃÀÀà +›777d›14m›740`./›10m›18a·Ã›1a¸¹â +›777d›14m›721`" +›871d›10m›607`IHLM›23aIHBGM>K›13m›23að›10m›26a:M›24a;RM>›13m›23aí›10m›497a¶À¹›10aȼ¹›11aµ¸¸Æ¹ÇÇ›11aú›10aȼ¹ +›871d›1217`ó›10a¥ÉÇÈ›11aµºÈ¹Æ›11aȼ¹›11aÄ›1aÃÇȵÁ +›928d›721`Ä›1aÃÇȵÁ›900a¹Â›16ah$5)›16aìÀ¹á›17aȼ½Ç +›928d›866`¶À¹›16a½ÈǹÀº›15a½Ç›16aÇÉÄÄ›1aÃǹ¸›18aÈÛ16a¶›1a¹›18aÇÈÃƹ¸ä›22a½Â›16aȼ¹›17a»½Ê +›984d›807`ȹ¸›14m›15a.432)$%›10m›19aȼ¹›15aìÀ¹Û +›984d›721`Ä›1aý +›1079d›607`LB@G:MNK>›23aBG›23a;RM>›13m›24aî›10m›24aLAHNE=›23a;>›24aVVW›22aó›14a¯¼¹›14m›15a6(.+%›17a:+%›10m›17aÞµºÈ¹Æ›14aȼ¹›15a¹Â¸›16aú +›1136d›945`¶À¹ß›14a½Ç›16aÇÉÄÄ›1aÃǹ¸›17aÈÛ15a¶›1a¹›16aìÀÀ¹¸›16a˽ȼ›15aȼ¹›16aÑÑÒ›15a¶›177aȽù¸ +›1136d›721`ȼ¹›16aÄ›1aÃÇȵÁ›854aÍȹǛ16aÁ¹Â +›1192d›721`µ¶›1aÛ22a¹å›17aȼ½Ç›16aìÀ¹›17aÇȵÆȹ¸›17aÃë›16a·ÃÆƹ·ÈÀÍ›504aÈÛ16aÇÃÁ¹ð +›1192d›792`Ê›603aá›17a¶ÉÈ›17aȼ¹Â›17a¸¹»¹Â¹ÆµÈ¹¸›18a½Â +›1249d›721`ȼ½Â»›15a¹ÀÇ¹Û +›1344d›607`MA>›24a?BE>›23a>G=>=›23aIK>F:MNK>ER›21aó›11a²¼½ÀÇÈ›9aÄÆÛ1a·¹Çǽ»›11aµ›11aĵ»¹á›14m›43a_VlhXYpq›10m›10a¸¹ð +›1344d›14m›1814`R +›1400d›10m›721`ȹ·È¹¸›15aȼ¹›15a¹Â¸›16aú›15aȼ¹›15ah$5)›15aìÀ¹â +›1522d›12m›823`©z§¤v¢›17ad§§¥§¨ +›1522d›607`d¹°¹²›52ah¤ +›1608d›10m›1253`ÈÛ10aȼ¹›12a·µÈ¹»ÃÆÍ›10aú›11añȼ½Ç›11a·µÂÝÈ›11a¼µÄÄ›1a¹Âïâ›19a¯¼¹ +›1608d›607`¯¼¹Ç¹›12aµÆ¹›11aȼÃǹ›11a¹ÆÆÃÆÇ›11aȼµÈ›11aºµÀÀ›10a½Â +›1664d›607`¹ÆÆÃÆ›10aÁ¹Çǵ»¹›11a·ÃÁÁ¹Â·¹Ç›12a˽ȼ›10aé&:M:E›23a%KKHKj›47a)GM>KG:E›22a>KKHK›113a¼›11a¹Æð +›1664d›1899`Ýâ›18a®É· +›1721d›755`¹µÀ›9aÇÃÁ¹›10aÇÃÆÈ›10aú›10a·Ã›1a¸½Â»›10a¹ÆÆÃÆä›17a½º›10aÍ›100a¹Æ›10aǹ¹›11aù›10aú›10aȼ¹Ç¹›10a¹ÆÆÃÆÇá›11aÄÀ¹µÇ¹ +›1721d›607`ÆÃÆÇ›10aƹʛ634aÃÉ›10a¹Ê +›1777d›674`ȵ·È›17aȼ¹›18aµÉȼÃÆá›18a{ƽµÂ›14m›18aw}¦¤¥›206a¬›10m›98aʽ¸½Â»›17aµÇ›17aÁ›43a¼›19a½ÂºÃÆÁµð +›1777d›607`·Ã›14m›601a«¨§›19ay¢¥¥›10m›25aá›20aÄÆÛ234aÉ· +›1834d›607`ȽÛ12aµÇ›13a½Ç›12a¹·¹ÇǵÆÍ›13aºÃÆ›12a¼½Á›13aÈÛ12aƹÄÆÛ1a¸É·¹›13aȼ¹›13aºµÉÀÈå›13aȼ½Ç›12aǼÃÉÀ¸›13a½Â·Àɸ¹›13a¹½È¼¹Æ +›1890d›607`ȼ¹›20a¯›18a³›19aÇÃÉÆ·¹á›21aÈû¹È¼¹Æ›19a˽ȼ›19aµÂ›360aÍÀ¹›19aìÀ¹Çá›20aÃÆ›20aȼ¹›19aµ·ÈɵÀ +›1890d›1291`Í›19aÂÃÂðÇȵ¸µÆ¸›20aÇÈ +›1900d›715`~ +›1947d›607`h$5)›16aìÀ¹›17a¶›1a¹½Â»›18aÄÆÛ1a·¹Çǹ¸›17aó›17aȼ¹›16aÀµÈȹƛ16a·µÂ›17a¶›1a¹›18a¹Â·Ã›1a¸¹¸›18a˽ȼ›14m›75adgbh›1acd›10m›75aè +›1947d›14m›1823`__›10m›148açÐÓ +›2003d›964`Í›15a¹ðÁµ½Àâ +›2003d›607`ºÃÆ›15aÈƵÂÇÁ½ÇǽÛ13a¶ +›2060d›1117`È›15aÈÛ15ar3>7mNDh:E=hKFG@MAd›22aó›17a«ÆûƵÁ›15a·ÃÉÀ¸ÂÝÈ›17a¸¹È¹ÆÁ½Â¹›17aȼ¹›17aµ·ÈɵÀ›16aÀ¹Â»È¼›17aú›16aȼ¹ +›2224d›721`h$5)›14aìÀ¹â +›2319d›607`cPHK=›23a:M›24aH==›23a;RM>›13m›24aî›10md›23aó›19a²›301aÈÛ18aȼ¹›21a¸Ã›266aÈ›19aéìÀ¹Ý +›2319d›1219`ÃƸǛ20aËƽÈȹ›19a½Â›189aËÂÀõ¸¹¸›19aºÃ +›2375d›758`ÉÇÈ›14aÇȵÆÈ›14aµÈ›15aµÂ›15a¹Ê›84aÍȹ›15a½Â›15aȼ¹›15aìÀ¹â +›2375d›721`Á›345a¹Â›16a¶ +›2470d›607`cEHG@PHK=›23a:M›23aH==›24a;RM>›13m›23aî›10md›223aÃƸǛ23aËƽÈȹ›23a½Â›196aËÂÀõ¸¹¸ +›2470d›1206`ó›23a§Ã»˛311aÈÛ22aȼ¹›24a¸Ã +›2527d›721`ºÃ›167aÉÇÈ›14aÇȵÆÈ›14aµÈ›15aµÂ›15a¹Ê›84aÍȹ›15a½Â›15aȼ¹›15aìÀ¹â +›2527d›782`È›14aéìÀ¹Ý›15aÁ›345a¹Â›16a¶ +›2622d›607`c>FIMR›23a?HGMd›195aȹƵÀ›15aÄÆÛ1a·¹¸Éƹ›16a¼µÇ›15a¶›1a¹¹Â›17aµÇ¿›327aÉǹ¸ +›2622d›916`ó›15az›16a½Â›595a¹¸›15aÈÛ15aÀõ¸›15aµÂ›16aÉ +›2678d›721`ºÃ›245aȹÆâ +›2678d›782`È›14aÈÛ15aȼ¹›15aÄƽ +›2773d›607`cqO>›23a=>EM:›24aQd›220aµÆ¸›14a¸½ÇÄÀµ·¹Á¹Â›611aË +›2773d›940`ó›15az›16aºÃÆË›318aÈ›15a½Â›15aµÂ›16aÃÉÈÄÉÈ›15aÀ½Â¹›15a¼µÇ›15aÇÃÁ¹¼Ã +›2829d›1226`¿Ë›677aÈÛ12aÂÃÂð +›2829d›721`ÁµÂµ»¹¸›12aÈÛ13a¶›1a¹·ÃÁ¹›13aµ›12a¶µ·›55aµÆ¸Ç›12aùá›13a¸¹ÇĽȹ›13aÇÃÆȽ»›12aȼ¹›13aÀ½ÇÈ›11a½Â +›2886d›743`Ê›341aÈÇÛ +›2886d›721`Û22a¹ÆÀµÄĽ»›14aǹ»Á¹Â +›2981d›607`c2MKBG@›23aIHHE›23aHO>K?EHPd›22aó›21a¨Ãƹ›21auLI>Kk›22a=H>LGbM›23a>G=›24aPBMA›23a:›24apob›22aó›25a¯¼¹ +›920d›563`Ê›161aʽ¸¹¸›17aºÃÆ›17aȼ¹›18ai0+t&/.3t$)1%#3/18›15aÅɵÀ½ì¹Æá›17aµºÈ¹Æ›17aµÄÄÀͽ» +›920d›584`µÀɹ›18aÄÆà +›976d›1117`ÉÇÈ›19a¹Â¸›19a˽ȼ›18aµ›19aéo›50a¼µÆµ·È¹Æå›19a·›63a¿›19a˼µÈ +›976d›563`Àû½·µÀ›17aµÁ¹›19aÈƵÂÇÀµÈ½ÃÂá›17aÁ›354aÝ›18a·›215a¼¹· +›1033d›584`µÀɹ›16a½Ç›14a¶›1a¹½Â»›16aÉǹ¸›15a˽ȼ›15aȼ½Ç›15aÅɵÀ½ì¹Æâ +›1033d›563`Ê +›1131d›449`":=›24ai07,›17a&/.3›16a$)1%#3/18›23aJN:EB?B>Kk›22a=H>LGbM›23a>G=›24aPBMA›23a:›24apob›101aó +›1187d›563`¯¼¹›16aÊ›160aʽ¸¹¸›16aºÃÆ›15aȼ¹›16ai07,t&/.3t$)1%#3/18›14aÅɵÀ½ì¹Æá›15aµºÈ¹Æ›16aµÄð +›1187d›678`µÀɹ›17aÄÆà +›1244d›563`ÄÀͽ»›16aÀû½·µÀ›15aµÁ¹›17aÈƵÂÇÀµÈ½Ã›89aÉÇÈ›16a¹Â¸›17a˽ȼ›16aµ›17aéo›47a¼µÆµ·È¹Æå›17a·›63a¿ +›1244d›1159`Âá›15aÁ›345aÝ›15a·›213a¼¹· +›1300d›698`µÀɹ›15a½Ç›15a¶›1a¹½Â»›15aÉǹ¸›16a˽ȼ›15aȼ½Ç›14aÅɵÀ½ì¹Æâ +›1300d›563`˼µÈ›15aÊ +›1399d›449`":=›24ai›15m*›14m04!+):%1›15m›4a+›10m›24aO:EN>›22aó›16a¯¼¹›17aÊ›160aʽ¸¹¸›17a˽ȼ›16aȼ¹›17a½Â¸½·µÈ¹¸›16aÅɵÀ½ì¹Æ +›1399d›1113`µÀɹ›17aÄÆà +›1455d›563`¸Ã›1a¹Ç›16aÂÃÈ›14aºÃÆÁ›15aµ›15aÊ›123aȹ»¹Æâ +›1455d›913`µÀ½¸›15a½Â +›1553d›449`":=›24aID›23a?BE>qqqFHK>›23a;BML›23aMA:G›23aK>JNBK>=›22aó›19a¯¼¹›20aĵ·›22a¹¸›20aĽ̹À›20aìÀ¹›19a·ÉÆð +›1553d›1585`¿ +›1610d›625`ÈÀÍ›13a¶›1a¹½Â»›14aƹµ¸›14a޵Ǜ13aǼÛ94aÍ›14aȼ¹›13aÄƹ·¹¸½Â»›15aé&HGM›15m›22a*›14m&.-3-!,%›15m›3a+›10mÝß›13aÄÆÃð +›1610d›563`ƹ›425aË›13a¶ +›1666d›563`ʽ¸¹Ç›12aÁÃƹ›12a¶½ÈÇ›11aºÃÆ›12aµ›12a·›242a¿›490a¼µÆµ·È¹ÆÝÇ +›1666d›992`¼µÆµ·È¹Æ›11aĵ·›22a¹È›12aȼµÂ›12a½Â¸½·µÈ¹¸›12a½Â›12aȼ¹›12a· +›1723d›563`ÄƹµÁ›591aÈå›13aÉǹ›14m›91aoi›1ad›10m›14aÈÛ13aµÂµÀÍι›14aȼ¹›14aĽ̹À +›1723d›686`¶À¹â›19a­¹ÄÀµ·¹›14aȼ¹›14aÃë¹Â¸½Â»›14aºÃ›14m›121aZWl +›1779d›10m›563`ìÀ¹â +›1877d›449`":=›24aID›23a?BE>`›48a":=›23aI:M›23aE>G@MA›257a¿›332aȵ½ÂÇ›21aµ +›1877d›1212`ó›22a¯¼¹›22aĵ·›22a¹¸›23aĽ̹À›22aìÀ¹›23a·Ã +›1934d›563`·›246a¿›959aÈâ +›1934d›582`¼µÆµ·È¹Æ›15aĵ·›22a¹È›14aú›15aµÂ›15a½ÀÀ¹»µÀ›13aÀ¹Â»È¼â›20a­¹ÄÀµ·¹›15aȼ¹›15aÃë¹Â¸½Â»›15aºÃ +›2032d›449`":=›24aID›23a?BE>g›24aIK>›23ak›24aNG>QI>=›22a;RM>j›13m›47aï›10m›23aó›9a²¼½ÀÇÈ›9aƹµ¸½Â»›10aµ›10aĵ·›22a¹¸›10aĽ̹À›10aìÀ¹á +›2243d›1690`¿ +›2300d›563`ȼ¹›21a¶›104aµÀɹ›13m›21aï›10m›21aË›308aµÇ›21a½Â›20aµÀ½¸›20a½Â›21aȼ¹›22a·ÉÆƹ›105aȹÌÈâ +›2300d›671`Íȹ›22aÊ›175aµÇ›21aÁ¹Èä›31aȼ½Ç›21aË›98aÊ›360aÈ›21a·Ã +›2356d›1068`Èâ +›2356d›563`­¹ÄÀµ·¹›15aȼ¹›15aÃë¹Â¸½Â»›15aºÃ +›2454d›449`":=›24aID›23a?BE>g›24aPKHG@›23aO>KLBHG›237a¿›432aË›94a¹Æð +›2454d›1093`ó›11a¯¼¹›13aĵ·›22a¹¸›12aĽ̹À›12aìÀ¹›13a½Ç›11aú›12aµ›12aÇúț31aµÆ¹›11aÊ +›2511d›563`ǽÛ11a½Â·ÃÁĵȽ¶À¹›11a˽ȼ›12aȼ¹›14m›43a_VlhXYpq›10m›11aÄÆûƵÁâ›18a­¹ÄÀµ·¹›11aȼ¹›12aÃë¹Â¸½Â» +›2511d›14m›1095`R +›2567d›10m›624`Èâ +›2567d›563`ºÃ +›2665d›449`#HNE=GbM›23a:M>›15m›23a*›14m:+%-!,%›15m›2a+›10m›23aó›14m›51a_VlhXYpq›10m›51aµÇ›20aɵ¶À¹›20aÈÛ20a·Æ¹µÈ¹›20aȼ¹›20aìÀ¹ +›2665d›14m›1123`R›10m›203aË +›2722d›563`½Â¸½·µÈ¹¸ä›33a·›63a¿›22aȼµÈ›22aÍ›115aÊ›577aÈ›22a¸¹ºµÉÀÈ +›2722d›810`¼¹·›174aÃÉ›21a¼µ›22a¹›22aËƽȹ›21aµ··¹ÇÇ›22aÈÛ21aȼ¹›22a·ÉÆƹ +›2778d›563`¸½Æ¹·ÈÃÆÍ›427aÍ›15aȼ¹›15ai/43043›14aÅɵÀ½ì¹Æâ +›2778d›738`á›14aÃÆ›15aȼµÈ›15a¸¹Ç½»ÂµÈ¹¸›15a¶ +›2877d›449`#HNE=GbM›23aHI>G›15m›24a*›14m:+%-!,%›15m›2a+›10mh›47a2M:MNLl›15m*›14m›182a.1›15m›6a+›10m›22aó›24a²¼¹Â›14m›58a_VlhXYpq +›2877d›1245`IBF›14a>11›299aR +›2933d›10m›563`µÈȹÁÄȹ¸›14aÈÛ13aÃÄ›1a¹Â›15aȼ¹›14a½Â¸½·µÈ¹¸›14aìÀ¹›14aÞºÃÆ›13aƹµ¸½Â»ßá›13a½È›13aºµ½À¹¸ä›19aȼ¹›14a±¨®ð +›2990d›563`ÇÈ›223aµÇ›19aƹě1aÃÆȹ¸›20a¶›529a¹Æ¼µÄÇ›19aȼ¹›20aìÀ¹ÝÇ +›2990d›598`ÍÀ¹›19a¹ÆÆÃÆ›19aË›271aÍ›19aȼ¹›20aÆÉÂðȽÁ¹›20aÇÍÇȹÁâ›33a« +›3046d›563`ÃÆ»µÂ½ÎµÈ½Ã›14a½Ç›16a½Â·ÃÁĵȽ¶À¹›16a˽ȼ›15aȼ¹›17aÈ›300aÍ›16aȼ¹›16aÄÆûƵÁá +›3046d›1344`ÍÄ›1a¹›16a¹ÌÄ›1a¹·È¹¸›18a¶ +›1;1348;2875;2;14!| +›1;757;1129;2;15!| +›1;644;1129;2;15!| +›1;733;861;2;15!| +›1;620;861;2;15!| + + +›462d›607`Ò×›12m›756aËΛ13a¿Ê›15aÓ›354aÅÃÏ +›462d›1234`Û46aÃÎΛ241a¿ÎÊÇÊÅ›15aÉÃÏÏ¿ +›607d›10m›721`˼½·›714aµÆ½µ¶À¹ðÀ¹Â»È¼á›14a˽ȼ›14a·µÆƽµ»¹ð +›607d›811`¼›14a»¹Â¹ÆµÀÀÍ›14a¹ÌÄ›1a¹·ÈÇ›15aȹÌÈ›14aìÀ¹Ç›15aÈÛ14a¶›1a¹›15aÊ +›664d›721`ƹÈÉÆ›18a·µÆƽµ»¹›17a·Ã›806aÍȹ›18aì̹¸ð +›664d›1105`ÈÆÃÀá›17aµÂ¸›19a¶½ÂµÆÍ›17aìÀ¹Ç›19aÈÛ17a·ÃÂǽÇÈ›18aú›17aÔÐÑð¶ +›720d›941`¿Çâ +›720d›721`À¹Â»È¼›15a¶ÀÛ1a· +›819d›607`&HGM›23aGHM›24aEH:=>=g›23a3&-›23a?BE>›15m›24a*›14m:+%-!,%›15m›2a+›10m›23a<:GbM›23a;>›24aHI>G>=›22aó›14m›32a_VlhXYpq +›819d›1882`R +›875d›10m›753`µÇ›11aɵ¶À¹›12aÈÛ12aÀÛ1a·µÈ¹›11aȼ¹›12a½Â¸½·µÈ¹¸›12ah3&-›11aìÀ¹ä›18a½È›12aÁ›213aÃÉÆ›11aÇÍÇȹÁ +›875d›721`Ë›921aÉÇÈ›11a¶›1a¹›13aÛ12aÍ +›932d›721`ÇÃÁ¹Ë¼¹Æ¹á›15aÃȼ¹Æ˽ǹ›14a¯›99aÃÉÀ¸›14a¼µ›22a¹›15aºµ½À¹¸›15aÈÛ1aÃÛ +›932d›1217`³›15aË›146aÊ +›942d›1191`~ +›1030d›607`GH›24aFHK>›23aOBKMN:E›23a?HGM›23a;RM>L›682a¹Â›15aºÆÃÁ›16aµ +›1030d›1250`ó›16a²¼½ÀÇÈ›15aÄÆÛ1a·¹Çǽ»›16aµ›16a»ÀÍļ›16aȵ¿ +›1087d›721`ʽÆÈɵÀ›12aºÃ›761a¼µÆµ·È¹ÆÇä›18aƹµÀÀÍ›13aȼ½Ç +›1087d›928`Èá›13aȼ¹›14aÄÆûƵÁ›13aÉǹ¸›14aÉÄ›15aµÀÀ›13aȼ¹›13aÇÈÃƹ¸›14a· +›1143d›1235`ȹƵÀ›14a¹ÆÆÃÆá›14aµÂ¸›15aƹě1aÃÆȹ¸›16aÈÛ14aȼ¹›16aµÉȼÃÆâ +›1143d›721`ǼÃÉÀ¸›15a¶›1a¹›16a·ÀµÇǹ¸›15aµÇ›15aµÂ›15a½Â +›1242d›607`&HGM›23aGHM›24aEH:=>=g›23a;:=›23aL<:E>›23ac›13mñ›10md›23aó›10a¯¼¹›11ah3&-›500aÈ +›1242d›1594`ìÀ¹›11a½Â¸½·µÈ¹¸›11aȼµÈ›10aȼ¹›10aºÃ +›1298d›721`Ë›657aµÀɹá›16aÃÆ›15a¹»µÈ½Ê›52aâ›20a°Ç¹›14m›16a]SlhZX›10m›15aÈà +›1298d›753`µÇ›15aÇ·µÀ¹¸›15aÈÛ15aµÂ›16a½ÁÄ›1aÃÇǽ¶ÀÍ›15a¼½»¼›15aÊ›308a¹ÀÍ +›1354d›721`µÂµÀÍι›15aȼ¹›15ah3&-›15aìÀ¹â +›1453d›607`&HGM›23aGHM›24aEH:=>=g›23a;:=›23a=>LB@G›23aLBS>›24ac›13mé›10md›22aó›13a¯¼¹›15ah3&-›13aìÀ¹›14a½Â¸½·µÈ¹¸›14aȼµÈ +›1509d›721`ȼ¹›17aºÃ›325aµÇ›16a¹»µÈ½Ê›519aµÀɹâ›25a°Ç¹ +›1509d›862`ÈÝÇ›16a¸¹Ç½»Â›17aǽι›17aË›201a¹›16aÃÆ›17aµÂ›17a½ÁÄ›1aÃÇǽ¶ÀÍ›16aÀµÆ»¹›16aÊ +›1566d›14m›721`]SlhZX›10m›15aÈÛ14aµÂµÀÍι›15aȼ¹›15ah3&-›15aìÀ¹â +›1664d›607`.H›24a=>OB<>›23aMRI>›23aLI>=›318aµÀɹ›13aË›116aʽ¸¹¸›11aºÃÆ›12aȼ¹›12aÅɵÀð +›1664d›1203`ó›11a©Ã›12a¸¹ºµÉÀÈ›11aÊ›123aµÇ›11aÄÆà +›1721d›721`½ì¹Æ›14ai$%5)#%t380%â›12a®Ä›1a¹·½ºÍ›15aµÂ›15a¹ÌÄÀ½·½È›13aÊ›291aÃÉÆ›14a¯›18a³Â½·½µÂ +›1721d›1524`µÀɹá›15aµÂ¸›14a»¹È›14aÍ +›1731d›1923`~ +›1777d›721`ÈÛ14aÁÛ1a¸½ºÍ›15aȼ¹›15a$5)3/,.TWh#,$›14aìÀ¹›15aÈÛ15aÆ¹í¹·È›15aȼ¹›15aÀÛ1a·µÀ›15a¹Â›184aÈâ +›1777d›1828`ʽÆÃÂÁ¹Â +›1876d›607`.H›24a?BE>›23aG:F>›23aIKHOB=>=›113aÃÉݸ›16a¼µ›22a¹›15a¶›1a¹¹Â›16a¹ÌÈƹÁ¹ÀÍ›16aǹµ¿Í›15aÈÛ15a»¹È›15aȼ½Ç +›1876d›1131`ó›15a´›145aÊ +›1932d›867`ÃÉÝÊ›299aÍĵÇÇ›13a}|§ÝÇ›12a·›63a¿›14aȼµÈ›12aµ›13aìÀ¹ÂµÁ¹›14a¶›1a¹›14aÇÄ›1a¹·ð +›1932d›721`¹ÆÆÃÆå›13aÍ›83a¹›12aÁµÂµ»¹¸›13aÈÛ13a¶›278a¼¹· +›1989d›1165`Í›15aȼ¹›15aÄÆûƵÁÛ›19a{¹›15aÁÃƹ›15aǹÂǽ¶À¹Û +›1989d›721`½ì¹¸›15aÈÛ15a¶›1a¹›16aÄÆÛ1a·¹Çǹ¸›16a¶ +›2087d›607`qqqGHM›23aEH:=>=g›23a;:=›24a3&-›23a?BE>›22aó›25a¯¼¹›26ah3&-›483aµÀ½¸ +›2087d›1570`ìÀ¹›26a¸½¸ÂÝÈ›25aÇÄ›1a¹·½ºÍ›26aµ›25aÊ +›2144d›916`¼µÆµ·È¹ÆÇ›15aµÇ›15a¶›1a¹½Â»›15aƹǽ¸¹Â›225aÈâ›20a°Ç¹›14m›16a]SlhZX›10m›15aÈÛ15aµÂµð +›2144d›721`Ƶ»¹›15aú›15a·›513aÈ›16a½Â›15aȼ¹›15aºÃ +›2200d›721`ÀÍι›15aȼ¹›15ah3&-›15aìÀ¹â +›2299d›607`07,›24a?BE>›23aA:L›23a;:=›24a?HKF:M›286a¿›556aȵ½Â +›2299d›1179`ó›11a¯¼¹›12aÉÂĵ·›22a¹¸›13aĽ̹À›11aƵÇȹƛ11aìÀ¹›12a¸½¸ÂÝÈ›11a·Ã +›2355d›774`¼µÆµ·È¹Æ›11a¸½Æ¹·ÈÃÆÍ›11a½Â›11aȼ¹›12aÀµÇÈ›10aÔÐÖ›11aË›416aÈá›11aÃÆ›11a¶›1a¹ÈȹÆá +›2355d›721`µ›11a·›683aÃƸÇâ›18a­¹ÄÀµ·¹›11aȼ¹›12aºÃ +›2412d›740`¼µÂ»¹›15aÈÛ15aÉǽ»›15aȼ¹›15ah0+›15a¹Åɽʛ77aÈâ +›2412d›721`·›573aµÀ¹Â +›2510d›607`LM:KMBG@›23aI:@>›23aGNF;>K›23a›24a?HNG=›22aó›13a¯¼¹›13aÇȵÆȽ»›12aĵ»¹›14aÞÇÄ›1a¹·ð +›2567d›721`½ì¹¸›16a˽ȼ›15aȼ¹›16ai23!13).'t0!'%›14aÅɵÀ½ì¹Æß›15a¸Ã›1a¹Ç›16aÂÃÈ›16aÁµÈ·›86aÍ›16aĵ»¹›16a½Â +›2567d›1830`¼›15aµÂ +›2623d›721`ȼ¹›15ah$5)›15aìÀ¹â +›2722d›607`c5&›24a?BE>d›23a#A:K:K›15m›22a*›14m#(!1›17a-4,›15m›4a+›10m›24a=H>L›23aGHM›23a>QBLM›107aó›15a¯¼¹›15aÇÄ›1a¹·½ì¹¸ +›2778d›740`¼µÆµ·È¹Æ›13a¼µÇ›14a¶›1a¹¹Â›15aÉǹ¸›15a½Â›14aȼ¹›14a¸Ã›1a·ÉÁ¹Â›243a¼µÆµ·È¹Æ›13a¸Ã›1a¹Ç›15aÂÃÈ +›2778d›721`·›771aÈá›15a¶ÉÈ›14aȼµÈ›13a· +›2835d›1257`Èâ›19a°Ç¹›14m›15a_Slh_Z›10m›16aÈÛ15aµÂµÀÍι›15aȼ¹›15aìÀ¹â +›2835d›721`¹Ì½ÇÈ›14a˽ȼ½Â›15aȼ¹›15aʽÆÈɵÀ›14aºÃ +›2933d›607`c5&›24a?BE>d›23a@:E›22aK›23aI:M›66aó›14a¯¼¹ +›2990d›927`È›11aìÀ¹›12a·Ã›691a¼µÆµ·È¹Æ›11aĵ·›22a¹Èâ +›2990d›721`ʽÆÈɵÀ›11aºÃ›165aȵ½ÂÇ›11aµÂ›12a½ÀÀ¹»µÀ›10a·ÃÁÁµÂ¸›12a˽ȼ½Â›11aµ›12a·›242a¿ +›3046d›721`°Ç¹›14m›15a_Slh_Z›10m›374aÈ›14aìÀ¹â +›3046d›978`ÈÛ15aµÂµÀÍι›14aȼ¹›16aºÃ +›1;1191;2720;2;14!| + + +›462d›12m›449`Ãôï›45aÊâáúÛÖçÖß›14aÃååâå›14aÉÚææÖÜÚæ›10m›831aÒØ +›607d›449`c5&›24a?BE>d›23a&BKLM›23a;RM>›24aBLGbM›23apIK>b›301aÈ›14aìÀ¹Ç›15aµÆ¹›15a¹ÌÄ›1a¹·È¹¸›16aÈà +›607d›1236`ó›14a±½ÆÈɵÀ›14aºÃ +›664d›563`·ÃÁÁ¹Â·¹›23a˽ȼ›21aµ›14m›62a%›10m›25a·ÃÁÁµÂ¸å›25aȼ½Ç›21aìÀ¹›22a¸Ã›1a¹ÇÂÝÈâ›41a°Ç¹›14m›22a_Slh_Z›10m›22aÈà +›664d›14m›945`/1 +›720d›10m›563`µÂµÀÍι›15aȼ¹›15aìÀ¹â +›821d›449`c5&›24a?BE>d›23a)EE>@:E›23a;RM>›13m›23aò›10m›24a:M›24aLM:KM›23aH?›23aK›23aI:M›88aó›15a¯¼¹ +›877d›768`È›10aìÀ¹›11a·Ã›608aÈ›10aÁµÄĽ»›11a·ÃÁÁµÂ¸ +›877d›563`ʽÆÈɵÀ›10aºÃ›163aȵ½ÂÇ›10aµÂ›11a½ÀÀ¹»µÀ›9a·ÃÁÁµÂ¸›11aÃÆ›11aºÃ +›934d›1131`¼µÆµ·È¹Æ›14aĵ·›22a¹ÈÇâ›18a°Ç¹›14m›14a_Slh_Z›10m›15aÈÛ13aµÂµÀÍι +›934d›563`˽ȼ½Â›13aÃÆ›13aµºÈ¹Æ›14aù›14aÃÆ›13aÁÃƹ›13a·›245a¿ +›990d›702`È›15aìÀ¹â +›990d›563`ȼ¹›15aºÃ +›1091d›449`c5&›24a?BE>d›23aBGOHD>L›23aNGF:II>=›23a?HGM›13m›23aê›10m›402aÈ›18aìÀ¹›19aƹº¹Æ¹Â·¹Ç +›1091d›1263`ó›18a¯¼¹›19aʽÆÈɵÀ›18aºÃ +›1148d›563`µ›15aºÃ›121a¼›15a½È›15a¼µÇÂÝÈ›15aÁµÄÄ›1a¹¸å›15aÉǹ›14m›16a_Slh_Z›10mâ +›1148d›662`È›14a˼½· +›1248d›449`c5&›24a?BE>d›23a1>?>K>G<>L›23aMHH›23aF:GR›23a?HGML›381aÈ›14aìÀ¹›14aµÈȹÁÄÈð +›1248d›1307`ó›14a¯¼¹›14aʽÆÈɵÀ›12aºÃ +›1305d›1081`ÈÇ›12aȼµÂ›14m›45a_VlhXYpq›10m›44aµÇ›13a·µÄµ¶À¹›13aú›12a¼µÂ¸À½Â»å +›1305d›563`¹¸›14aÈÛ12aÁµÄ›13aÁÃƹ›13aµ·ÈɵÀ›12aºÃ›14m›151aR›10m›196aË +›1361d›563`ȼ¹›18aºÃ›626a¹â›28a°Ç¹›14m›19a_Slh_Z›10m›18aÈÛ18aµÂµÀÍι›18aȼ¹ +›1361d›705`È›18a½Ç›17aÄÆöµ¶ÀÍ›18a½Âì½ȹÀÍ›18aƹ·ÉÆÇ½Ê +›1418d›563`ìÀ¹â +›1519d›449`c5&›24a?BE>d›23a-:II>=›23a?HGM›23aLBS>›24aBL›23aMHH›24a;B@›385aÈ›14aƹº¹Æ¹Â·¹Ç +›1519d›1355`ó›15a¯¼¹›15aʽÆÈɵÀ›14aºÃ +›1575d›563`µÂ›17aµ·ÈɵÀ›17aºÃ›995a¼›17a½È›16a½Ç +›1575d›828`È›16aµÂ¸›18aȼ¹›17aǽι›17aú›17aȼ¹›17aÀµÈȹÆá›16aµÂ¸›18aȼ¹›17aÇ·µÀ¹›17aµÈ›17a˼½· +›1631d›563`½Â›22aÿ›902aÈâ›33a°Ç¹›14m›21a_Slh_Z›10m›20aÈà +›1631d›600`Ê›45a¹¸á›20a¹Ì·¹¹¸Ç›21aȼ¹›20aÀ¹»µÀ›19aÀ½Á½ÈÇ›19aºÃÆ›19aµ›20aʽÆÈɵÀ›19aºÃ +›1688d›563`µÂµÀÍι›15aȼ¹›15aìÀ¹â +›1789d›449`c5&›24a?BE>d›23a.>@:MBO>›23aI:M›23aE>G@MA›370aÈ›9aìÀ¹›10a½Ç›10aÁµÀºÃÆÁ¹¸â +›1789d›1236`ó›9a¯¼¹›11aʽÆÈɵÀ›9aºÃ +›1845d›563`°Ç¹›14m›15a_Slh_Z›10m›16aÈÛ15aµÂµÀÍι›15aȼ¹›15aìÀ¹â +›1946d›449`c5&›24a?BE>d›23a6KHG@›23aO>KLBHG›23aGNF;>K›23aBG›24aL>›403aÈ +›1946d›1546`ó›21a¯¼¹›21aʽÆÈɵÀ›20aºÃ +›2002d›563`ìÀ¹›11a½Ç›10aú›11aµ›10aÊ›436aÍ›14m›43a_VlhXYpq›10mâ›17a°Ç¹›14m›11a_Slh_Z›10m›12aÈÛ10aµÂµÀÍι +›2002d›777`¹ÆǽÛ10aÂÃÈ›11aÇÉÄÄ›1aÃÆȹ¸›11a¶›14m›34aR +›2059d›10m›563`ȼ¹›15aìÀ¹â +›2160d›449`5&›24aI:M›23a?:BE>=›23an›15m*›14m›200a%1›15m›5a+›10mg›15m*›14m#(!1›16a-4,›15m›4a+›10mo›22aó›51a²¼½ÀÇÈ›50aÄÆÛ1a·¹Çǽ» +›2160d›14m›897`&.-3›16a-4," +›2216d›10m›1131`¼µÆµ·È¹Æ›11aȵ¿›401aÈá›14m›43a_Vlhs +›2216d›10m›563`ÇÈÃƹ¸›12a»ÀÍļǛ11aºÃÆ›12aµ›11a·ÃÁÄÀ¹Ì›12a·›239a¹Â›12aºÆÃÁ›11aµ›12aʽÆÈɵÀ›11aºÃ›14m›41aR +›2273d›563`XYpq›10m›12aºµ½À¹¸›12aÈÛ11aÄ›1aÃǽȽÛ12aȼ¹›12a¹À¹Á¹Â›492aÈ›11aƹÅɽƹ›12aÈà +›2273d›1231`ÈÇ›13aú›12aȼ¹›12a»ÀÍļå›13aȼ½Ç›12aÁ½»¼ +›2329d›1029`ȹƵÀ›13a¹ÆÆÃÆá›14a¶ÉÈ›14aìÆÇÈÀÍ›14aÉǹ›14m›15a_Slh_Z›10m›14aÈÛ14aµÂµÀÍι +›2329d›563`¶›1a¹›15aƹě1aÃÆȹ¸›14aµÇ›14aºÃÆ›14aµÂ›14a½Â +›2386d›563`ȼ¹›15aìÀ¹â +›2486d›449`6A>K>›24a:K>›23aMA>›24a?HGM›23a=BK>L_›46aci0+›17a&/.3›16a$)1%#3/18g›23a>MMB<›23aHO>K?EHP`›46aI:K:F>M>K›23a=›23a?KHF›13m›23aò›10m›24aMH›13m›23aó›10m›100aó›14a²¼¹Â +›1014d›721`ÄÆÛ1a·¹Çǽ»›15m›12a*›14m$5)›16a"83%›15m›4a+›10mÇá›12aµ›12a·ÃÁÁµÂ¸›12aË›189aȹƹ¸›13aȼµÈ›12aµÈȹÁÄȹ¸›12aÈà +›1014d›1444`µÇ›12a¹Â·ÃÉ +›1070d›781`Ê›247aȵÀ›9aÃÆ›10aÊ›750aÃƸ½ÂµÈ¹ +›1070d›721`ÁÛ22a¹›9aȼ¹›10a¼ÃƽÎÛ136a¹ÆȽ·µÀ›8aÄ›1aÃǽȽÛ9aÈÛ10aÇÃÁ¹Ë¼¹Æ¹›10a˽ȼ›10aµ›9a·Ãê +›1111d›15m›1001`JH +›1127d›10m›721`¹Ì·¹¹¸½Â»›15m›14a"›10mÞÑ›15m›44a!›10m›7aÐßLI›268aÃÉÀ¸›13a½ÁÄÀÍ›13a¶›1a¹½Â»›14aµ¶›1aÃÉÈ›14aÒ׺ț12aºÆÃÁ +›1127d›1176`â›19a®½Â·¹›14aȼ½Ç›13aË +›1183d›1126`ÃÉݸ›11a¶›1a¹›13a¶›1a¹Èȹƛ12aÃë›12aÉǽ»›14m›43a_VlhQcndjlfkfgeUha›73ae›10mÛ +›1183d›721`ȼ¹›12aÃƽ»½Âá›11aÄ›1a¹Æ¼µÄÇ›13aÍ›14m›464aR›370ajcfg +›1289d›10m›607`;:K›23aBG›23a;RM>›13m›23aí›10m›24aLAHNE=›23a;>›13m›24aï›10m›22aó›19a¯¼¹›20aÄÆûƵÁ›19a¼µÇ›19a¸¹È¹·È¹¸›21aµÂ +›1345d›1062`Ë›529aÈ›17aĵ»¹›16aµÂ¸›17aȼ¹›17aÄƹʽÃÉÇ +›1345d›721`½Â·ÃÂǽÇȹ·͛16a¶›1a¹È›31a¹¹Â›17aȼ¹›17aÇȵÆÈ›15aú›17aȼ¹›16a·ÉÆƹ +›1402d›721`ùâ +›1508d›607`;:=›24aIHLM:F;E>›22aIHBGM>K›23aBG›24a;RM>›13m›23aí›10m›23aó›19aȼ¹›19aË›169a˽»›18aȼ¹›14m›19a/›93a.23 +›1508d›10m›1565`ÃƸ›19aºÃÀÀÛ14m›214a.23›17a/ +›1564d›10m›1335`È›20a¶µ·›591a¶À¹ä +›1564d›721`·ÃÁÁµÂ¸›21a½Ç›20aÇÉÄÄ›1aÃǹ¸›22aÈÛ21aÄ›1aý›104a¿›21aÈÛ20aȼ¹›21aÇȵÆÈ›20aú›21aȼ¹›21aÄ›1aÃÇȵÁ +›1621d›721`ȼ½Ç›14aù›16a¸½¸ÂÝÈÛ +›1726d›607`;HI›24aH<=›22a;>?HK>›23a>HI›23aó›18a²¼½ÀÇÈ›17aÄÆÛ1a·¹Çǽ»›19aµ›18aĵ»¹á›20aµ›14m›37a./›10m›22a·ÃÁÁµÂ¸ +›1726d›14m›1823`" +›1783d›10m›753`µÇ›16a¸¹È¹·È¹¸›18a¶›1a¹ºÃƹ›17a츽»›18aȼ¹›14m›36a./›10m›20aȼµÈ›16aǼÃÉÀ¸›17a¼µ›22a¹›17aȹÆÁ½ÂµÈ¹¸›16aȼ¹ +›1783d›721`Ë›14m›612a%›10m›357aÊ +›1839d›846`È›15aĵ»¹â +›1839d›721`·ÉÆƹ +›1945d›607`;RM>›13m›23aí›10m›24aBL›24aGHM›23aIHLMIHLM›197aÍȹ›13aºÃÀÀÛ537a¶À¹ +›1945d›1171`ó›13a¯¼¹›14a¶›159a˽»›12aȼ¹›13a¹Â¸›14aú›14aȼ¹›13aÄ›1aÃÇȵÁ +›2002d›973`Ƚ·½ÄµÈ¹¸›14m›14a/›92a.23›10m›20a·ÃÁÁµÂ¸â +›2002d›721`½Ç›15aÂÃÈ›14aȼ¹›16aµÂ›14m›209a.23›16a/ +›2107d›10m›607`K›13m›23aè›10m›23aBGO:EB=›23aBG›24a?HGM›15m›23a*›14m-!,%›15m›3a+›10m›23aó›25a¯¼¹›26ah$5)›26aìÀ¹›26a¼µÇ›26aƹÅɹÇȹ¸ +›2164d›834`¼µÆµ·È¹Æ›13m›10aè›10m›522aÈÀÍ›10aǹÀ¹·È¹¸›11aºÃ›147a¹È›10aȼ¹ +›2164d›721`ȼµÈ›10a·›204a¶›1a¹›12a½Áµ»¹¸›10aºÆÃÁ›10aȼ¹›11a·ÉÆƹ›290aÈá›10aµÂ¸›11aÍ +›2220d›782`È›15a¸Ã›1a¹ÇÂÝÈ›15a·Ã›140aÍ›15aÇÉ·›60a¼µÆµ·È¹Æå›14aÇÃÁ¹È¼½Â»›15aÁ½»¼›174aȹ¸á +›2220d›721`ºÃ›257aȵ½Â›15aµÂ›100a¼›17a·›507aÈ›15a¶›1a¹›16aÄƽ +›2277d›927`Ͷ›1aÛ1a¸ÍÝÇ›15a»É¹ÇÇ›16aµÇ›14aÈÛ15a˼µÈÛ +›2277d›721`¶ÉÈ›15a½ÈÝÇ›14aµÂ +›2383d›607`#HNE=GbM›23aHI>G›23auLI>E›15m›22a*›14m:+%›15m›2a+›10mw›620aµÇ›16aÉÂð +›2439d›761`uLI>›23aBG›24auLI>;:K›14aÇÈ›417aÍ›15aȼ¹›16aÉǹÆâ +›2827d›721`¶›666aÍÀ¹›14aÃÄȽÃÂá›14aµÂ¸›15aÂÃÈ›15a¶ +›2933d›607`B=>GMB?B<:MBHG›22aBG›24a;RM>›13m›23aí›10m›24aLAHNE=›23a;>›13m›23aë›10m›23aó›12a¯¼¹›13ah$5)›12aìÀ¹›12a½Ç›13aÇÉÄÄ›1aÃǹ¸›13aÈà +›2990d›788`ȵ½Â›12aȼ¹›13aÊ›152aÉÁ›219aÈÀÍ›12aÑß›13aµÈ›12aȼ¹›13a¶›1a¹»½Â½»›13aµÂ¸›13aȼ¹›13a¹Â¸ +›2990d›721`·Ã›189a¹ÆǽÛ12a›61a¶›1a¹Æ›13aÞ·ÉÆƹ +›3046d›1039`Íȹ𵸸ƹÇÇ›13m›15aí›10m›295a¼›15aù›15aºµ½À¹¸â +›3046d›721`ú›15aȼ¹›15aìÀ¹å›15aȼ¹›15a¶›293a½Â¸½·µÈ¹Ç›15a˼½· +›1;1378;2656;2;14!| +›1;1243;2000;2;14!| +›1;2010;1506;2;14!| + + +›462d›12m›449`Ãôï›45aÊâáúÛÖçÖß›14aÃååâå›14aÉÚææÖÜÚæ›10m›831aÓÐ +›607d›449`)GO:EB=›23aIHBGM›24aGNF;>K›23aBG›23auLI>?IHBGM›19aÃÆ›20aK>L>MIHBGML›18aÃÄ›1a¹ÆµÈ½ÃÂÇá›20aÇÄ›1a¹·½ì¹¸›21aµÂ +›720d›600`Ê›178aÈ›21a›61a¶›1a¹Æ›22aÞ›13mú›14m›149a.)-32›10m›129a¼›21a½Ç›21aµ›22a·ÃÁĽÀ¹ðȽÁ¹›21a·ÃÂð +›720d›563`½Â›20aµÀ½¸›21aÄ›1aý›62aÉÁ›14m›162a,!7›23a/›10m›98aá›23a˼½· +›777d›646`È›18a½Â›19aȼ¹›14m›19az¢~›10mßá›21aÃÆ›18aȼ¹›19aK›23aBG›23auLI>=g›23a3&-›24a?BE>›23aBL›24a;:=›22aó›16a²¼¹Â›16aƹµ¸½Â»›16aµ›16ah3&-›15aìÀ¹á›17aȼ¹›16aÄÆÃð +›1186d›563`»ÆµÁ›14a¸¹È¹·È¹¸›15aÇÃÁ¹›14a¸½Ç·Æ¹ÄµÂ·Í›110a¼›15a¼µÇ›14aÄÆöµ¶ÀÍ›14aµÀƹµ¸Í›14a¶›1a¹¹Â›16aƹð +›1186d›1196`á›15a˼½· +›1243d›563`Ä›1aÃÆȹ¸â›20a°Ç¹›14m›15a]SlhZX›10m›15aÈÛ15aµÂµÀÍι›15aȼ¹›15aìÀ¹â +›1335d›449`.NEE›24auLI>GM›21aó›20az›21auLI>K›23aFBLLBG@›21aBG›24auLI>?IHBGM +›1632d›449`IHI›24aBEE>@:E›23a:M›23aE>O>E›24aS>KH›22aó›16a®ÃÁ¹È¼½Â»ÝÇ›16aËÆû›17a˽ȼ›16aȼ¹›17ah$5)›17aìÀ¹å›18a½È +›1688d›563`µÈȹÁÄȹ¸›15aÈÛ14m›35a./›10m›19aµÂ›15a¹Â›184aÈ›14a˼¹Â›16aÂù›16a¼µ¸›15a¶›1a¹¹Â›16aÇȵ·›22a¹¸â +›1688d›14m›838`/›10m›170aʽÆÃÂÁ¹Â›532a¿ +›1781d›449`IHLM:F;E>›23a›22aó›18a²¼½ÀÇÈ›18aÄÆÛ1a·¹Çǽ»›18aµ›19aĵ»¹á›14m›51a_Vlhs +›1781d›1815`R +›1837d›563`XYpq›10m›15a¸½Ç·Ã›22a¹Æ¹¸›14aµ›14m›36a.23›10m›455aÍ›15aÄƽÃÆ›14m›34a./›10m›3aâ +›1837d›779`Ê›14m›134a/›10m›74a·ÃÁÁµÂ¸á›15a˽ȼÃÉÈ›14aµÂ›14m›150a% +›1929d›10m›449`IK>:F;E>›23a›22aó›19a¯¼½Ç›20ah$5)›19aìÀ¹›20a½Ç›14m›20a1›17a!+›2a+8›10m›40a˽Çȹ¸ä›28aµ +›1929d›14m›1623`%›10m›92aÈ +›1986d›14m›603`%›10m›258aµÇ›14aºÃɸ›16a¸Éƽ»›15aµ›15aĵ»¹â +›1986d›14m›563`/1›10m›38a·ÃÁÁµÂ¸›15aË +›2078d›449`INLA›24a=>>I>K›23aMA:G›23a=›23aBG›24aIHLM:F;E>›320aÈ›25a¹Â›184aÈ +›2078d›1355`ó›25a¯¼¹›25a·ÉÆƹ›86aʽÆÃÂÁ¹Â +›2134d›595`µÇ›14m›14a/42(›10m›3a¹¸›17aÁÃƹ›15aúȹ›15aȼµÂ›15a¯›17a³›15a¼µ¸›16a·Àµ½Á¹¸â +›2134d›563`Ë +›2144d›1164`~ +›2226d›449`K>?>K>G<>›23aMH›24a:G›23aNGEH:=>=›23a?HGM›22aó›16az›17aµÈȹÁÄÈ›16a¼µÇ›16a¶›1a¹¹Â›18aÁµ¸¹›17aÈÛ16aǹț16aµ +›2283d›582`¼µÆµ·È¹Æ›15aºÆÃÁ›14aµ›15aºÃ›121a¼›15a¼µ¸ÂÝÈ›15a¶›1a¹¹Â›17a¸¹ì¹¸›16a˽ȼ½Â›15aȼ¹›15ah$5)›15aìÀ¹â +›2283d›563`·›385aÈ›14a˼½· +›2375d›449`uLI>@:MBO>›23aE>G@MA›22aó›14a¯¼¹›14m›16a777›10m›318a¼›15a¯›18a³ +›2375d›1522`·ÃÁÁµÂ¸›15a˼½· +›2385d›1884`~ +›2431d›563`ÉǹǛ15aÈÛ15aĵÇÇ›15aµ›14auLI>FIMR›23a:M›24a>G=›23aH?›24aI:@>›23acE>O>E›13m›23añ›10md›23aó›18a²¼¹Â›18a¯›18a³›18a»¹ÈÇ›17aÈÛ18aȼ¹ +›2738d›1648`~ +›2785d›563`¹Â¸›17aú›16aµ›17aĵ»¹á›16a½ÈÝÇ›15aÇÉÄÄ›1aÃǹ¸›18aÈÛ16a¹ÂÇÉƹ›17aȼµÈ›16aµÀÀ›15a¹Â›184aÈÇ›16aȼµÈ›16a½ÈÝÇ +›2785d›1546`ʽÆÃÂÁ¹Â +›2841d›563`½ÂÇÈÆɷȹ¸›16aÈÛ15a¼µ›22a¹›15a¶›1a¹¹Â›17aǵ›22a¹¸›16aǼµÀÀ›14a¶›1a¹›17aƹÇÈÃƹ¸å›15aȼ½Ç›15ah$5)›157aÈƵð +›2841d›882`Ê›182aÊ›618aìÀ¹›16a·Ã +›2897d›563`Ê›416aÈâ +›2897d›586`¹Â¹Ç›16aȼµÈ›14aƹÅɽƹÁ¹Â +›2990d›449`NG=>?BG>=›23a=›23aHK›23aF:E?HKF>=›23auLI>=›23auLI>>=`›46a3&-j›13m›23aâ›10m›43a5&j›13m›24aâ›10m›42aó›18a¯¼¹›19aÇÉÁ›19a·›63a¿›19aºÃɸ›19a½Â +›972d›1826`¼¹· +›979d›15m›1332`H›154aI +›1029d›10m›721`µ›16ah5&›626aÈ›16a¸½Çµ»Æ¹¹¸›17a˽ȼ›16aȼµÈ›16aÄƹʽÃÉÇÀÍ +›1029d›849`ìÀ¹›17a˼¹Â›17aƹµ¸½Â»›17aµ›16aʽÆÈɵÀ›16aºÃ +›1085d›1098`ÈÝÇ›14ah3&-›14aìÀ¹â +›1085d›721`ƹ·ÃƸ¹¸›15a½Â›15aȼ¹›16aºÃ +›1183d›607`5&›24a=>LB@G›23aLBS>›23a=BL:@K>>=`›46a3&-j›13m›24aå›10m›43a5&j›13m›24aå›10m›42aó›15a¯¼¹›16a¸¹Ç½»Â›16aǽι›15aºÃɸ +›1190d›15m›1399`H›149aI +›1240d›10m›721`½Â›12aµ›12ah5&›598aÈ›12a¸½Çµ»Æ¹¹¸›12a˽ȼ›12aȼµÈ›11aÄƹʽÃÉÇÀÍ +›1240d›890`ìÀ¹›12a˼¹Â›13aƹµ¸½Â»›12aµ›12aʽÆÈɵÀ›11aºÃ +›1296d›1098`ÈÝÇ›14ah3&-›14aìÀ¹â +›1296d›721`ƹ·ÃƸ¹¸›15a½Â›15aȼ¹›16aºÃ +›1424d›13m›797`m{xuxs›18abq||msq| +›1424d›607`]¬¨›56al +›1512d›10m›607`¯¼¹Ç¹›19aÁ¹Çǵ»¹Ç›18a»¹Â¹ÆµÀÀÍ›18a½Â¸½·µÈ¹›18aÇÃÁ¹›18aÄÆöÀ¹Á›18aȼµÈ›18a¸½¸ÂÝÈ›18aÄƹʛ43aÈ›14m›50a_Vs +›1512d›10m›1932`¹Â›14m›35aR +›1568d›607`lhXYpq›10m›15aºÆÃÁ›15a»¹Â¹ÆµÈ½Â»›14aµ›16aÊ›368aË›42a¹Æá›15a½È›15aÁ½»¼›192aÈ›15aÃÉÈ +›1568d›1154`µÀ½¸›15aÃÉÈÄÉÈ›15aìÀ¹å›15a¼Ã›31a¹Ê›209aÈ›14aÂÃÈ›15aÄƽ +›1625d›691`ÃÉ›20a¼µ¸›21aµÂ›292aʽ¸¹¸›20aÂÛ20a¹ÆÆÃÆÇ›19aÛ1a··ÉÆá›22aȼ¹›20a¹Ì½È›20aÇȵÈÉÇ›20aú›19aȼ¹ +›1625d›607`µÇ›20aÍ›208aȽ·½ÄµÈ¹¸Û›34a«Æà +›1681d›607`ÄÆûƵÁ›13a˽ÀÀ›12a¼µ›22a¹›14aµ›13a^2%5%1)38›154aÉÇ›14aÄ›1a¹ÆÁ½ÈȽ»›13aµ›13a·ÃÁÁµÂ¸›14aÄÆÛ1a·¹¸Éƹ +›1681d›919`Ê›298aú›13aÏá›13aȼ +›1737d›607`ÈÛ15a¸¹È¹·È›15aȼµÈ›15aË›364a¹Æ¹›15a½ÇÇɹ¸â +›1737d›930`µÆ½»›14aÁ¹Çǵ»¹Ç›14aË +›1849d›607`<:GGHM›23a?BG=›24a?BE>›15m›23a*›14m:+%›15a2/›17a#›15m›2a+›10m›22aó›14m›52a_VlhXYpq›10m›20aºµ½À¹¸›19aÈÛ20aÀÛ1a·µÈ¹›20aȼ¹›21aìÀ¹›20a·ÃÂð +›1849d›14m›1145`%›127aR +›1905d›10m›1036`¿›230a¿›666aÍ›14aÇɶð +›1905d›721`ȵ½Â½Â»›13aȼ¹›14aÞĵ·›22a¹¸›14aÃÆ›14aÉÂĵ·›22a¹¸ß›15aĽ̹À›14aƵÇȹÆÇå›13a½È›14a˽ÀÀ›13aÄÆÛ1a·¹¹¸›15a¶ +›1962d›721`ÇȽÈÉȽ»›13aÇÃÀ½¸›13aÆÉÀ¹Ç›14aºÃÆ›14a¹µ·›834aÈ +›1962d›1249`¼›14a»ÀÍļâ›19a­¹Á¹¸Íä›20a¤ÂÇȵÀÀ›13aȼ¹›15aƹÅɽǽȹ›13aºÃ +›2018d›880`ÃÉÆ›15aÇÍÇȹÁâ +›2018d›721`ìÀ¹›15aÛ15aÍ +›2116d›607`#A:K:KL›23ap›15m*›14m3%73›15m›4a+›10mb›23aL>M›24aH??›23aI:I>K›23ac›24aQ›24al›13m›23aò›10m›19ahh›13mò›10m›18ag›24aR›23al›13m›24aó›10m›26ad›53aó›15a®ÃÁ¹ +›2123d›15m›1556`s›77an +›2173d›10m›1995`¼›13a·µÂ +›2173d›721`Ä›1aÃÆȽÛ13aú›14aȼ¹›14aȹÌÈ›13a½Ç›13a½Áµ»¹¸›14aÃÉÈǽ¸¹›13aȼµÈ›13aµÆ¹µ›14aú›13aȼ¹›14aĵě1a¹Æ›15a˼½· +›2229d›721`¶›1a¹›18aËƽÈȹ›17a¶›202aȹÆâ›27a¯¼¹›13m›18aò›10m›18aÊ›636aÈð +›2229d›971`Í›18aȼ¹›18aÄƽ›256aµÀɹǛ18a½Â¸½·µÈ¹›17aȼ¹›18aÀ¹ºÈð›18aµÂ¸›18aƽ»¼ +›2286d›721`¼µÂ¸›13aÀ½Á½ÈÇ›12aú›13aȼ¹›13aȹÌÈá›12a˼½ÀÇÈ›13aȼ¹›13m›13aó›10m›15aÊ›150a¹Ç›12aȼ¹›14aÊ›178aÃƸ½ÂµÈ¹ +›2286d›1455`µÀɹ›13a»½Ê›149a¹ÆȽ·µÀ›11a·Ãê +›2342d›721`ú›10aȼ¹›11a¶µÇ¹À½Â¹å›12aµÀÀ›10aÇÉ·›394a¹Â›11a½Â›11aµ¶ÇÃÀÉȹ›10aĽ̹À›11aÄ›1aÃǽȽÃÂÇ +›2342d›1145`¼›11a¸½Á¹ÂǽÃÂÇ›11aµÆ¹›10a»½Ê +›2398d›721`Û14aȼ¹›15aļ›277a¹Æ¼µÄÇ›14aÍ›192aȽ»›13aÇÃÁ¹È¼½Â»›14a½Â›14aÀµÂ¸Ç·µÄ›1a¹ +›2398d›910`Íǽ·µÀ›13aĵ»¹â›20a«›165aÃÉÝƹ›14aÄƽ +›2455d›974`µÇ›14aºÃÆÁµÈȹ¸›14aÈÛ15a¶›1a¹›16aÄƽ›484a¹ÆÇµÚ +›2455d›721`ÁÛ1a¸¹›15aȼµÈ›15aË›463aȹ¸›15a½Â›15aÄ›1aÃÆÈƵ½Èá›13aÃÆ›15aʽ·¹›15aÊ +›2553d›607`LGbM›23aF:MLGbM›23aF:M›243aÈÝÇ›17aÇÉÁ›18a·›63a¿›19aµÇ›18aƹ·ÃÆð +›2990d›1417`ó›18a¯¼¹›18aºÃ›183a¼¹· +›3046d›721`¸¹¸›22a½Â›21aȼ¹›22aĵ·›22a¹¸›21aĽ̹À›21aìÀ¹›22a¸½Çµ»Æ¹¹Ç›21a˽ȼ›20aȼµÈ›21a½Â›21aȼ¹›22ah3&-â›38a¯¼½Ç +›3046d›1024`¿ +›1;1093;1847;2;14!| +›1;1258;760;2;14!| +›1;1569;605;2;14!| + + +›462d›12m›604`ÖåáÞáÜ›15aÉÚææÖÜÚæ›10m›970aÓÒ +›462d›12m›449`Ãôð›45aÓ +›607d›10m›563`Ë›502aÈ›16aǼÃÉÀ¸›16a¶›1a¹›17aƹ¶É½ÀÈá›16aÉǽ»›15m›16a¤¥¦›55a©ª¦›10m›19aµÂ¸ +›607d›595`ÃÉÀ¸›16aÇÉ»»¹ÇÈ›16aȼµÈ›15aȼ¹›17aºÃ›15m›611a§¨ +›664d›14m›563`TSlhZW›10mâ +›761d›449`LGbM›23aF:M›236aÈÝÇ›13aÇÉÁ›14a·›63a¿›14aµÇ›14aƹ·ÃÆð +›761d›1284`ó›13a¯¼¹›15aºÃ›175a¼¹· +›817d›563`¸¹¸›19a½Â›17aȼ¹›18aÉÂĵ·›22a¹¸›19aĽ̹À›17aìÀ¹›18a¸½Çµ»Æ¹¹Ç›17a˽ȼ›17aȼµÈ›17a½Â›18aȼ¹›18ah3&-â›27a¯¼½Ç +›817d›905`¿ +›874d›563`Ë›502aÈ›16aǼÃÉÀ¸›16a¶›1a¹›17aƹ¶É½ÀÈá›16aÉǽ»›15m›16a¤¥¦›55a©ª¦›10m›19aµÂ¸ +›874d›595`ÃÉÀ¸›16aÇÉ»»¹ÇÈ›16aȼµÈ›15aȼ¹›17aºÃ›15m›611a§¨ +›930d›14m›563`TSlhZ`›10mâ +›1027d›449`qqqLGbM›23aF:MOBHNL›23a=>?BGBMBHG›21aó›17a~µ·›102aÈ›17a¸¹ì½ð +›1027d›1682`¼›17aºÃ +›1084d›854`˽·¹›21a½Â›21aȼ¹›21ah$5)›21aìÀ¹å›24aȼ¹›21aÇÉÁ›21a·›63a¿›22aƹ·ÃƸ¹¸›22a½Â›21aȼ¹ +›1084d›563`ȽÛ21aµÄÄ›1a¹µÆÇ›21aÈ›666a¼¹· +›1140d›563`ǹ·Ã¸›16a¸¹ì½ȽÛ15a¸½Çµ»Æ¹¹Ç›14a˽ȼ›15aȼ¹›15aìÆÇÈ›15aó›15aÉǹ›14m›15aR›57aoi›1ad›10mâ +›1140d›14m›1551`_Vl +›1237d›10m›449`=>GHFBG:MHK›23a=H>LGbM›23aF:M›23aIK>:F;E>›22aó›22a¯¼¹›23a¸¹ÂÃÁ½ÂµÈÃÆ›22aú›23aȼ¹ +›1294d›563`ƵȽõÀ›20a›61a¶›1a¹Æ›23a˼½·›105a¹Ç›21aȼ¹›22aǽι›22aú›22a¹µ·›80a±¤›22aɽț22a޽›22a¸¹·½Á½ð +›1294d›763`ÉÁ›176a¼›22a»½Ê›357a¼›22a} +›1350d›563`·ÆÃÂÇß›14a˼½·›653a¶À¹›13a¸½Çµ»Æ¹¹Ç›14a˽ȼ›13aȼµÈ›14a½Â +›1350d›789`¼›14a¼µÇ›14a¶›1a¹¹Â›15aƹµ¸›14aºÆÃÁ›14aȼ¹›14aÄ›1aÃÇȵÁ +›1407d›764`¶À¹›15aó›15aÉǹ›14m›15aR›57aoi›1ad›10mâ +›1407d›563`ȼ¹›15aÄƹµÁ›14m›243a_Vl +›1504d›10m›449`qqq=>LB@G›23aLBS>›23a=H>LGbM›23aF:MOBHNL›23a=>?BGBMBHG›228aÈÝÇ›10a¸¹ð +›1504d›1618`ó›10a¯¼¹›11aºÃ +›1560d›1404`È›13a¸½Çµ»Æ¹¹Ç›13a˽ȼ›14aȼ¹›14aìÆÇÈ›13aó +›1560d›563`ǽ»Â›14aǽι›13a½Â›14aȼ¹›14aǹ·Ã¸›15a¸¹ì½ȽÛ13aú›14aȼ¹›14aºÃ +›1617d›563`Éǹ›14m›16aR›57aoi›1ad›10mâ +›1617d›14m›674`_Vl +›1714d›10m›449`$BL<:K=BG@›23a>:KEB>K›23aI:M›23a?HK›23aK›13m›23aè›10m›22aó›31a²¼½ÀÇÈ›29aÄÆÛ1a·¹Çǽ»›31aµ +›1770d›777`È›20aìÀ¹á›21aµ›20aǹ·Ã¸›21a¸¹ì½ȽÛ20aºÃÆ›19aµ›20a·›377aµÇ›19a¹Âð +›1770d›563`ʽÆÈɵÀ›19aºÃ›667a¼µÆµ·È¹ÆÝÇ›20a»ÀÍļ›20aË +›1827d›563`·ÃÉ›1183aÍ›18aȼ¹ +›1827d›655`ȹƹ¸ä›24aȼ¹›18aìÆÇÈ›17a¸¹ì½ȽÛ17a˽ÀÀ›16a¶›1a¹›18a¸½Ç·µÆ¸¹¸á›17aµÂ¸›18aƹÄÀµ·¹¸›17a¶ +›1883d›563`ÀµÇÈ›14aù›16aó›14aÉǹ›14m›16a_Slh_Z›10mâ +›1980d›449`>QMK:›24aCNGD›23a:M›24a>G=›23aH?›24aMA>›23a5&›24a?BE>›22aó›13a®ÃÁ¹›13aɹÌÄ›1a¹·È¹¸›15a¶›125a¹Æ¹›13a¸½Çð +›1980d›1676`ÍȹǛ14aË +›2037d›605`Ê›669aÈ›15aÞh5&ß›14aìÀ¹å›15aÈÛ15aÄƹʛ43aÈ›16aȼ½Ç›14a¹ÆÆÃÆ +›2037d›563`·Ã›22a¹Æ¹¸›15aµºÈ¹Æ›15aȼ¹›16a¹Â¸›16aú›15aµ›15aʽÆÈɵÀ›14aºÃ›382a¹Â +›2093d›563`ƹ·ÉÆƽ»á›13aÉǹ›14m›14a_Slh_Z›10m›927aÈ +›2093d›1014`ÈÛ13a·ÃÆƹ·È›13aȼ¹›13a¹ÆÆÃÆ›13aµÂ¸›13aƹËƽȹ›13aȼ¹›13aʽÆÈɵÀ›13aºÃ +›2150d›563`˽ȼ›14m›15a_Zlh_S›10mâ +›2247d›449`&HGM›15m›24a*›14m-!,%›15m›3a+›10m›23a=H>LGbM›23aK›13m›23aè›10m›525aµÇ +›2247d›1537`ó›15a©Ã›15a¸¹ì½ȽÛ15aË +›2303d›563`¹Â·ÃÉ›479a¼µÆµ·È¹Æ›13m›18aè›10m›285aÈ›18aìÀ¹ÝÇ›19aƵÇȹÆÇ +›2303d›700`ȹƹ¸›20aºÃÆ›18aȼ¹›19a»ÀÍļ›19aú›19a·›221a˼¹Â›20aȼ¹›19aºÃ +›2360d›563`Ë›285a¼µÆµ·È¹Æ›13a˽ÀÀ›13a¶›1a¹›15a½Áµ»¹¸›13a¶›491aÈ›13aú +›2360d›595`¹Æ¹›14aƹµ¸ä›19aȼ¹›14a·›502aÍ›14aȼ¹›14aµÄÄÆÃÄƽµÈ¹›13aµÁÃÉ +›2416d›563`˼½È¹Çĵ·¹â +›2513d›449`qqq?HGM›23aG:F>›24a=H>LGbM›23aF:MOBHNL›23a=>?BGBMBHG›21aó›10a¯¼¹›12aµÁ¹›11aú›11aȼ¹ +›2570d›563`ºÃ›91a¹Â›15a½Â›15aȼ¹›16aǹ·Ã¸›16a¸¹ì½ȽÛ15a˽ȼ½Â›15aȼ¹›16ah$5)›15aìÀ¹›16a¸½Çµ»Æ¹¹Ç›14a˽ȼ +›2570d›624`È›15a»½Ê +›2626d›563`ȼ¹›15aÃƽ»½ÂµÀ›14a¸¹ì½»›15aÛ1a··ÉÆƹ·¹›17aó›14aÉǹ›14m›16aR›57aoi›1ad›10mâ +›2626d›14m›1375`_Vl +›2723d›10m›449`F:@GB?B<:MBHG›23a=H>LGbM›22aF:M›23aIK>:F;E>›22aó›23a¯¼¹›25aÁµ»Â½ì·µÈ½Ã›23aƹð +›2780d›563`Ä›1aÃÆȹ¸›18a½Â›19aȼ¹›18aÄ›1aÃÇȵÁ›746a¶À¹›18aó›17aÉǹ +›2780d›994`¶À¹›17a¸½Çµ»Æ¹¹¸›18a˽ȼ›18aȼµÈ›17a½Â›19aȼ¹›18aÄƹµÁ +›2836d›14m›563`R›57aoi›1ad›10mâ +›2836d›14m›595`_Vl +›2933d›10m›449`-BLLBG@›23aHK›24aNGDGHPG›23aNGBM›23aH?›24aF>:LNK>j›15m›46a*›14m3%73›15m›5a+›10m›22aó›29az›29aɽț30aú›29aÁ¹µÇÉƹ +›2990d›595`µÇ›14a¹ÌÄ›1a¹·È¹¸á›16a¹½È¼¹Æ›14a˽ȼ½Â›14aµ›15auLI>›23aMA:G›13m›24aí›10m›24aKNE>L›23aHG›23aI:@>k›24a>Q<>LL›23aB@GHK>=›298aȵ½Â¹¸›12aÈÛ1aà +›766d›1624`ó›13az›13aĵ»¹›13a·Ã +›823d›721`ÁµÂ›1019aÍ›11aȼ¹›11a·ÃÁĽÀ¹ð +›823d›806`Í›10aǹĵƵȹ›11aÆÉÀ¹Çå›12aȼ¹›11aÄÆûƵÁ›9a½Ç›11aƹÇÈƽ·È¹¸›10aÈÛ10aÐÕÒ×Ó›10a¶ +›873d›14m›1996`} +›879d›10m›978`È›14m›17a,!7›17a14+%2›10m›74a¹Æ¼µÄÇ›17aÇÃÁ¹È¼½Â»ÝÇ›17aÆÉ›18aµÁÿ›17a½Â›17aµ›18a§›5a¯›17a³ +›879d›721`ȽÁ¹›17a·ÃÂÇȵ›231aâ›27a« +›893d›2042`~ +›936d›721`IB›14a¹Â›184aÈÚ +›936d›947`ʽÆÃÂÁ¹Â +›1038d›607`GHM›24a>GHN@A›23aLB@G:MNK>›22a;RM>L›23a:M›24a>G=›24aH?›23a?BE>›23ac›13mí›10md›81aó›15ah$5)›15aìÀ¹Ç›15aµÆ¹ +›1095d›1714`ÍȹǛ10aó›10aÉǹ›14m›10aR›57aoi›1ad›10mâ +›1095d›721`ÇÉÄÄ›1aÃǹ¸›11aÈÛ10a¹Â¸›11a˽ȼ›9aµÈ›10aÀ¹µÇÈ›9aºÃÉÆ›10aǽ»ÂµÈÉƹ›9aÞÑÑÒß›9a¶›14m›250a_Vl +›1198d›10m›607`GNF>K:MHK›23a=H>LGbM›23aF:M›23aIK>:F;E>›199aÉÁ¹ÆµÈÃÆ›14aú›15aȼ¹›15aƵȽÃð +›1198d›1489`ó›14a¯¼¹›15a +›1254d›721`µÀ›12aºÆµ·È½Ã›11a»½Ê›326a¶À¹›12a¸½Çµ»Æ¹¹Ç›12a˽ȼ›11aȼµÈ›12aÄƹʽÃÉÇÀÍ›12aƹµ¸ +›1254d›1018`¹Â›12a½Â›12aȼ¹›12aÄ›1aÃÇȵÁ +›1311d›1030`¶À¹›14aó›15aÉǹ›14m›16aR›57aoi›1ad›10mâ +›1311d›721`ºÆÃÁ›14aȼ¹›16aÄƹµÁ›14m›243a_Vl +›1413d›10m›607`i/1)%.3!3)/.›22aFNLM›24a;>›23a0/131!)3›23aHK›24a,!.$2#!0%k›21a:LLNFBG@›23a0/131!)3›16aò +›1470d›721`¯¼¹›22ai/1)%.3!3)/.›234aµÇ›21a»½Ê›294aµÀɹå›24aȼ½Ç›22aǼÃÉÀ¸ +›1470d›1129`ÅɵÀ½ì¹Æ›21aË›120a¹Â›21aµÂ›22a½ÀÀ¹»µÀ›20aÊ +›1526d›789`¹Æ›15a¼µÄÄ›1a¹Âá›16aÉÂÀ¹ÇÇ›15aȼ¹›15a·ÃÁÁµÂ¸›15a¸¹ì½ȽÛ15aìÀ¹›15a¼µÇ›15a¶›1a¹¹Â›16a·ÃÆÆÉÄȹ¸â +›1526d›721`Â¹Ê +›1629d›607`0:@>›23a=>>I>K›24aMA:G›23a3>7›23aK>IHKM>=›23a;R›13m›24aó›10m›2aIM›354a¹Æ¹›19aÄ›1aÃǽȽù¸ +›1629d›1489`ó›19a|¼µÆµ·È¹ÆÇ›19aË +›1685d›922`Ë›16aȼ¹›16aĵ»¹›17aÀÛ31a¹Æ›14aȼµÂ›17a¯›17a³›16a¼µ¸›17aƹ·ÃƸ¹¸›17a½Â›16aȼ¹›16ah$5)›16aìÀ¹â +›1685d›721`ºÉÆȼ¹Æ›16a¸Ã›295aË +›1695d›1435`~ +›1742d›721`¯¼½Ç›15a½ÇÂÝÈ›15aµÂ›15a¹ÆÆÃÆá›15aÉÂÀ¹ÇÇ›16aµ··ÃÁĵ½¹¸›15a¶›433a¼µÆµ·ð +›1742d›1544`Í›16aµÂ›15a½Â¸½·µÈ½Ã›15aȼµÈ›15a· +›1798d›842`¹Æ¹›15aǹț14aÃë›15aȼ¹›15aĵě1a¹Æâ›20a®¹¹›16a¸¹Ç·Æ½ÄȽÛ15aú›15aȼ¹›15ai5&499›14aÅɵÀ½ì¹Æâ +›1798d›721`ȹÆÇ›15aË +›1901d›607`0:@>›23aPB=>K›24aMA:G›23a3>7›23aK>IHKM>=›23a;R›13m›24aò›10mIM›355a¹Æ¹›20a½Áµ»¹¸›20a¶›1a¹ð +›1901d›1467`ó›20a|¼µÆµ·È¹ÆÇ›19aË +›1958d›721`Í›243aÈð¼µÂ¸›15aÁµÆ»½Â›14aȼµÈ›14a¯›18a³›15a¼µ¸›15aƹ·ÃƸ¹¸›16a½Â›15aȼ¹›15ah$5)â›14a¯¼½Ç +›1958d›744`ø›15aȼ¹›15aƽ»¼ +›1968d›1411`~ +›2014d›721`½ÇÂÝÈ›19aµÂ›21a¹ÆÆÃÆá›21aÉÂÀ¹ÇÇ›20aµ··ÃÁĵ½¹¸›21a¶›452a¼µÆµ·È¹ÆÇ +›2014d›1466`Í›20aµÂ›21a½Â¸½·µÈ½Ã›19aȼµÈ›20a· +›2070d›753`¹Æ¹›15aǹț15aÃë›14aȼ¹›15aĵě1a¹Æâ›21a®¹¹›16a¸¹Ç·Æ½ÄȽÛ14aú›15aȼ¹›15ai(&499›15aÅɵÀ½ì¹Æâ +›2070d›721`Ë +›2173d›607`0BQ>E›23aPB=MA›24a=BLI:G=›22aPB=MAj +›2230d›13m›721`ç›10m›17ak›24a:EL›23aGHGqLJN:K>›21aó›16a¯¼¹›12m›16aÖæã›1aÚØç›17aåÖçÞâ›10m›167a¼µÆµ·È¹ÆÇ›16a½Â›15aȼ¹ +›2502d›1635`ú›16aȼ¹›16a· +›2558d›788`¿›264aµÇ›11aÂÃÈ›11aÐäЛ11aó›12a˽ÀÀ›10aÄÆöµ¶ÀÍ›12aÄÆÛ1a¸É·¹›12a¸½ÇÈÃÆȹ¸›11a»ÀÍļÇá +›2558d›721`ĵ·›22a¹¸›12aĽ̹À›11aìÀ¹›12aË +›2615d›721`ǽ·¹›15aȼ¹›15a§©ÏÒ›16aÄƽ›252aÈ›14a˽ȼ›15aÇÅɵƹ›15aĽ̹ÀÇâ +›2615d›1114`ȹƛ14a¸Ã›1a¹Ç›16aÄƽ +›2717d›607`qqqL<:E>=›23aLBS>›23a=H>LGbM›23aF:MOBHNL›23a=>?BGBMBHG›21aó›35a¯¼¹›36aǹ·Ã¸ +›2774d›1116`È›15aÄÆÛ308aÈ›15aÇ·µÀ¹¸›15aǽι›16aºÆÃÁ›15aȼµÈ›16a½Â›15aȼ¹ +›2774d›721`¸¹ì½ȽÛ16aú›15aȼ¹›16aºÃ›97aʽ¸¹¸›16aµ›16a¸½ë¹Æ¹Â +›2830d›721`ìÆÇÈ›15a¸¹ì½ȽÛ15aó›14aÉǹ›14m›16aR›57aoi›1ad›10mâ +›2830d›14m›1188`_Vl +›2933d›10m›607`MA>K>›23a:K>›24aK>:EER›13m›23aí›10m›24aI:@>Lg›23aGHM›13m›23aî›10m›511a¶À¹›15a·Àµ½Á¹¸ +›2933d›1389`ó›16azÀȼÃÉ»¼›15aȼ¹›17aÄ›1aÃÇȵÁ +›2990d›970`¹Æ¹›13m›16aî›10m›17aĵ»¹Ç›16a½Â›16aȼ¹›17a¸Ã›1a·ÉÁ¹Â›196a¹Æ¹›16aƹµÀÀÍ›13m›15aí›10m›16aó›16aÉǹ +›2990d›721`ȼµÈ›15aȼ¹Æ¹›17aË›552aÈá›16aȼ¹Æ¹›17aË +›3046d›14m›721`R›57aoi›1ad›10mâ +›3046d›14m›753`_Vl +›1;479;1918;152;8!| +›1;1097;877;2;14!| + + +›462d›12m›449`Ãôñ›45aÇáÛâåàÖçÞâáÖß›14aÉÚææÖÜÚæ›10m›869aÓÔ +›607d›449`qqqMABL›23a?HGM›24aP:L›23a:EK>:=R›23a=>?BG>=›576aÈ›12a¸¹ì½ð +›607d›1236`ó›12az›12aÇÄÉƽÃÉÇ›12aµ¸¸½È½ÃµÀ›11aºÃ +›664d›563`ȽÛ15aË›191aȹƹ¸›16a½Â›15aȼ¹›15ah$5)›15aìÀ¹›15aó›15aÉǹ›14m›15aR›57aoi›1ad›10mâ +›664d›689`µÇ›14a¹Â·ÃÉ›14m›602a_Vl +›770d›10m›449`qqqMABL›23a?HGM›24aP:LGbM›23aEH:=>=›23a;>?HK>›598a¶À¹á›14aµ +›770d›1260`ó›14a²¼¹Â›15aƹµ¸½Â»›14aȼ¹›15aÄ›1aÃÇȵÁ +›827d›563`¸¹ì½ȽÛ13aË›190aȹƹ¸›14aºÃÆ›13aµ›13aºÃ›159aµÇÂÝÈ›12aÄƹʽÃÉÇÀÍ›13a¸¹ì¹¸›15a½Â +›827d›795`µÇ›13a¹Â·ÃÉ›279aÈ›13aȼµÈ›13aË +›883d›563`ȼ¹›15a¶›1aÛ1a¸Í›16aú›15aȼ¹›15ah$5)›15aìÀ¹›15aó›15aÉǹ›14m›15aR›57aoi›1ad›10mâ +›883d›14m›1241`_Vl +›990d›10m›449`5&›24a=:M:›23aGHM›24a:›24aFNEMBIE>›22aH?›24aX›24a;RM>L›301aÈ›14aìÀ¹Ç›15aÞh5&ß›14aµÆ¹›15aÇÉÄð +›990d›1260`ó›14a±½ÆÈɵÀ›14aºÃ +›1046d›563`Ä›1aÃǹ¸›16aÈÛ14a¶›1a¹›16aÇÃÁ¹›15aÁ›254aÍȹǛ15aÀû›14aó›15aÉǹ›14m›15a_Slh_Z›10mâ +›1046d›959`ÉÀȽÄÀ¹›14aú›15aÓ›15a¶ +›1152d›449`5&›24a?BE>›23a>G=>=›24aPBMAHNM›22aIHLM:F;E>›22aó›22a²¼½ÀÇÈ›22aƹµ¸½Â»›23a»ÀÍļ›23a¸¹ì½ȽÃÂÇ +›1209d›924`È›17aìÀ¹á›17aȼ¹›14m›39a.23›10m›263aµÇ›16aÁ¹È›18aɹÌÄ›1a¹·È¹¸ÀÍ›18aó +›1209d›563`ºÆÃÁ›17aµ›17aʽÆÈɵÀ›16aºÃ›14m›203a/›10m›76a·ÃÁÁµÂ¸›18aË +›1265d›563`Éǹ›14m›16a_Slh_Z›10mâ +›1405d›13m›449`]¬©›56a`xry{wm}uyxmv›18abq||msq| +›1497d›10m›911`ʽ¸¹›10aȼ¹›12aÉǹƛ11a˽ȼ›11aµÂ›11a½Â¸½·µÈ½Ã›10aú›11aȼ¹›11aÄÆûƹÇÇ›11aú›11aȼ¹ +›1497d›449`¯¼¹Ç¹›12aµÆ¹›11aÃÉÈÄÉÈ›11aÈÛ11aÄÆà +›1554d›449`ÄÆÛ1a·¹ÇÇ›18aú›17aÈƵÂÇÀµÈ½Â»›15aȼ¹›17ah$5)›129aÈÛ16aµÂ›17ah,.W›17aìÀ¹â›26a¤º›17aÂÛ17aÃȼ¹Æ›17aÁ¹Çǵ»¹Ç +›1554d›1089`ìÀ¹›17a½Â +›1610d›720`ÃÉ›20a·µÂ›20a¶›1a¹›20aµÇÇÉƹ¸›20aȼµÈ›19aȼ¹›20aÄƽ›104a¹ÆǽÛ19a˽ÀÀ›19aµ··ÃƸ›19a˽ȼ +›1610d›449`µÆ¹›20aÃÉÈÄÉÈá›20aÍ›654aȹ¸›19aÊ +›1667d›449`˼µÈ›17a¯›17a³›17a½Â›962aÈ›16aÂÃÈ›16a¶›1a¹›17a˼µÈ +›1667d›703`ȹ¸¹¸›17aÈÛ16aÄÉÈ›17aÛ17aȼ¹›17aĵě1a¹Æ›17aÞµÀȼÃÉ»¼›16aȼ½Ç›16aÁ½»¼ +›1677d›590`~ +›1723d›14m›449`8.4›10m›57aȹ¸¹¸Ûß +›1723d›538`½Â +›1783d›591`ʽ¸¹¸›16aȼµÈ›15aÂÛ16aË›535a¹Æ¹›16a½ÇÇɹ¸á›16aȼ¹›16aÄÆûƵÁÝÇ +›1783d›520`«ÆÛ317aµÆ½»›15aÃÆ›15a¹ÆÆÃÆ›16aÁ¹Çǵ»¹Ç›15aË +›1839d›449`¹Ì½È›19aÇȵÈÉÇ›19a˽ÀÀ›18a¼µ›22a¹›19aµ›19a^2%5%1)38›18aú›19a22^t24##%22›151aÉÇ›20aÄ›1a¹ÆÁ½ÈȽ»›18aµ +›1839d›819`Ê›652aÞÐßá›19aȼ +›1896d›449`·ÃÁÁµÂ¸›16aÄÆÛ1a·¹¸Éƹ›16aÈÛ14a¶›1a¹›16a·ÃÂ츹›226aµÆ½»›14aÃÆ›15a¹ÆÆÃÆÇ›15aÛ1a··ÉÆƹ¸â +›1896d›1147`È›16aȼµÈ›14aÂÛ15aË +›2018d›449`c›15m*›14m:+%›16a2/›17a#›15m›1a+›13mö›8aö›8aö›10m›6ad›244a¹Æ›17aȼ¹›16ah$5)›16aìÀ¹á›17aÃÆ›16aµ›16aìÀ¹›16aÇÄ›1a¹·½ì¹¸›18aµÇ›16aµ›16a»ÆµÄ¼½·Ç +›2018d›14m›606`%›10m›145aó›16a²¼¹Â¹Ê +›2074d›563`½Â·ÀÉǽÃÂá›23a½Ç›21aÃÄ›1a¹Â¹¸á›25aµ›21aÀ¹ºÈ›22aĵƹ›428az³ã­¨®›21aìÀ¹ +›2074d›1244`ȼ¹Ç½Ç›21aµÂ¸›22aȼ¹›22aºÉÀÀ›22a± +›2131d›563`ÇÄ›1a¹·½ì·µÈ½Ã›21a½Ç›21aƹě1aÃÆȹ¸›21aÛ22aȼ¹›21aȹÆÁ½ÂµÀå›23a˼¹Â›21aȼ¹›22aìÀ¹›21a½Ç›21a·ÀÃǹ¸á›22aµ +›2187d›661`¼½Â»›14aƽ»¼›141aȼ¹Ç½Ç›15a½Ç›15a¸½ÇÄÀµ›22a¹¸â +›2187d›563`ÁµÈ·›177aÈ›14aĵƹ›288aÍ +›2268d›563`¤Â›18aȼ¹›17aÀû›17aÞh380›931aÍ›17aǹÀºð +›2268d›892`ß›16aìÀ¹á›17aȼ¹›17aìÀ¹›18aÇÄ›1a¹·½ì·µÈ½ÃÂÇ›17aµÆ¹›17aµ··ÃÁĵ½¹¸›17a¶ +›2325d›563`¹ÌÄÀµÂµÈÃÆÍ›14aȹÌÈâ +›2431d›449`n›15m*›14m›21a!'%›17a-.›15m›2a+›10mo›23aó›17azÇ›14m›49a_VlhXYpq›10m›17aÇȵÆÈÇ›16aÈÛ17aÄÆÛ1a·¹ÇÇ›18aµ›17aĵ»¹á›18aµ›17aÀ¹ºÈ›17a¶Æµ·›22a¹È›17aµÂ¸ +›2431d›14m›491`/›328aR›10m›918a¿ +›2488d›772`ÉÁ›186a¼›15aÁµ›488aȹ»¹ÆÇá›14aǹĵƵȹ¸ +›2488d›563`ȼ¹›15aĵ»¹›16a›61a¶›1a¹Æ›15aÞ˼½·›99aÍ›15a·ÃÂǽÇÈ›14aú›15aµ›15aǹƽ¹Ç›15aú›15a½Â +›2544d›563`¶›374aÍ›766aȹƹ¸á›15aȼ¹ +›2544d›587`Í›14aÄ›1a¹Æ½Ã›1a¸Çß›14a½Ç›14a¸½ÇÄÀµ›22a¹¸å›14a˼¹Â›15aȼ¹›14a¹Â¸›15aú›14aȼ¹›14aĵ»¹›14a½Ç›14a¹Â·ÃÉ +›2601d›563`ÁµÈ·›177aÈ›14a¶Æµ·›22a¹È›15a½Ç›14a¸½ÇÄÀµ›22a¹¸â +›2601d›661`¼½Â»›14aƽ»¼›116a¿›213aÍ +›2691d›15m›1164`JN +›2707d›10m›449`&BG=BG@›23aLM:KMBG@›23aI:@>hhh?HNG=›72aó›13azºÈ¹Æ›13aȼ¹›14aȽÈÀ¹›13a¼µÇ›13a¶›1a¹¹Â›15a¸½ÇÄÀµ›22a¹¸á +›2707d›1864`Í +›2764d›14m›595`_VlhXYpq›10m›825aȹ¸å›21aµÈ›19aȼ¹›20aǵÁ¹ +›2764d›14m›563`R›10m›203aÇȵÆÈÇ›18aÀÛ1a·µÈ½Â»›18aȼ¹›20aìÆÇÈ›19aĵ»¹›20aÈÛ19a¶›1a¹›20aÄƽ +›2820d›772`ÃÆ¿Ç›21aÃÉÈ›22a½º›22aµÂ›682aȹÆÇÄ›1a¹Æǹ¸ +›2820d›563`ȽÁ¹á›23a½È›21aË›287aÍ›22a¶ÀµÂ¿›22aĵ»¹Ç›22a˽ÀÀ›20a¹¹¸›23aÈÛ22a¶›1a¹›23a½Â +›2877d›563`¸Éƽ»›15aÄƽ›666a¹›15aµ›14aǽ»Â½ì·µÂ›164aÈ›14aú +›2877d›787`Ƚ»â›19a®½Â·¹›15aȼ½Ç›14aÃÄ›1a¹ÆµÈ½Ã›14a·µÂ›15aȵ¿›255aÈ›14aµÁÃÉ +›2933d›1064`Èá›18aȼ¹›18aìÆÇÈ›17aĵÆÈ›17aú›17aȼ½Ç›16aÁ¹Çǵ»¹›18a½Ç›17a¸½ÇÄÀµ›22a¹¸ +›2933d›563`ȽÁ¹›17aÛ17aµ›17aÀµÆ»¹›17a¸Ã›1a·ÉÁ¹Â›812aÍ +›2990d›920`ÃÂÝÈ›13aȼ½Â¿›14aȼµÈ›13aȼ¹›15aÄÆûƵÁ›13a¼µÇ›14a¸½¹¸å›14aȼ¹›15aé?HNG=Ý›12a½Ç +›2990d›563`ÇÛ14aȼµÈ›13aȼ¹›15aÉǹƛ14aË +›3046d›563`¸½ÇÄÀµ›22a¹¸›15a˼¹Â›15aȼ½Ç›15aÄÆÛ1a·¹Çǽ»›15a½Ç›15a·ÃÁÄÀ¹È¹¸â +›3046d›679`Í +›1;2064;2635;72;8!| +›1;580;2429;2;14!| +›1;553;2016;2;14!| + + +›462d›607`ÓÕ›12m›756aËΛ13a¿Ê›15aÓ›354aÅÃÏ +›462d›1234`Û46aÃÎΛ241a¿ÎÊÇÊÅ›15aÉÃÏÏ¿ +›607d›10m›607`&HGM›15m›23a*›14m-!,%›15m›3a+›10m›23açc:M›13m›23aí›10madè›11aEH:=>=›23aPBMA›13m›12aî›10m›12a;RM>L›23aH?›24aK:LM>KL›23ac›13mí›10m›12aKLd›49aó›12a¯¼¹›13aÇÄ›1a¹·½ì¹¸›13aºÃ›520aËÂá›13a½º›12aÂÃÈ›12aÐÏÏÜß +›664d›1256`È›12a޵ț12aȼ¹›12aÁµ»Â½ì·µÈ½Ã›11aǼà +›720d›721`¼µÇ›17a¶›1a¹¹Â›19a½Â·Àɸ¹¸›18a½Â›18aȼ¹›18a¸Ã›264aÈÇå›18a½º›13m›17aî›10m›172a¹ÆÍ›18aÇÁµÀÀá›16a½È +›720d›1282`ËÂÀõ¸¹¸›17aºÃ›155aǹ¹ÁÇ›17aÊ +›777d›721`Áµ›659aÈ›11aË›412aËÂÀõ¸¹¸ +›777d›781`Í›11a¶›1a¹›13a¶›1a¹·µÉǹ›13aȼ¹›13a»ÀÍļǛ11aú›12aȼ¹›13aºÃ›60a¹Æ¹›12aÈÛ1aÛ11aÀµÆ»¹›12aÈÛ11a¶›1a¹›13a¸Ã +›833d›1629`¹Æ›15aȼ¹Í›15aµÄÄ›1a¹µÆâ +›833d›721`µÂ¸›15a¼¹Â·¹›16a˽ÀÀ›14a¶›1a¹›16a½Áµ»¹¸›15a½Â¸½Ê½¸ÉµÀÀÍ›14a˼¹Æ¹Ê +›912d›15m›2021`JP +›928d›10m›607`&HGM›15m›23a*›14m-!,%›15m›3a+›10m›23açc:M›13m›23aí›10madè›9aNG:O:BE:;E>k›23aIKBGMBG@›22aKNE>L›23a?HK›24a@ERIAL›47aó +›984d›721`¯¼¹›23aÇÄ›1a¹·½ì¹¸›24aºÃ›72aµÇÂÝÈ›21aµ›20aµ½Àµ¶À¹›22aµÈ›23aȼ¹›23aƹÅɹÇȹ¸›23aÁµ»Â½ì·µÈ½ÃÂå +›984d›1074`È›23aË›139aÊ +›1040d›721`·›452aÈ›15a˽ÀÀ›13a¶›1a¹›16a½Áµ»¹¸›14a¶›118aȽ»›13aÇÃÀ½¸›15aÆÉÀ¹Ç›14aú›15aǽι +›1040d›740`¼µÆµ·È¹ÆÇ›14aºÆÃÁ›14aȼ½Ç›14aºÃ›359aÍ›15aÄƽ +›1097d›721`¸¹È¹ÆÁ½Â¹¸›20aºÆÃÁ›19aȼ¹›19a¯›18a³›20aºÃ›427aá›20aµ›19aé<:GGHM›23a?BG= +›1097d›1323`È›19aÁ¹Èƽ·Çâ›32a«Æ¹Ê½ÃÉÇÀÍ +›1107d›1182`~ +›1153d›721`?BE>Ý›14aË›273aÊ›495aÈâ +›1153d›876`µÆ½»›14a˽ÀÀ›14a¼µ›22a¹›15a¶›1a¹¹Â›16a½ÇÇɹ¸›15aºÃÆ›15aȼ½Ç›15aºÃ +›1232d›15m›1358`KG +›1248d›10m›607`&HGM›15m›23a*›14m-!,%›15m›3a+›10m›23açc:M›13m›23aí›10madè›15aBL›23aOBKMN:E›52aó›15a¯¼¹›16aÇÄ›1a¹·½ì¹¸›17aºÃ›64aµÇ›15aµ›15aʽÆÈɵÀ +›1248d›1810`È›15aË +›1304d›721`ùå›14aȼ½Ç›13aÁµ›648aÈÇ›13aÃȼ¹Æ›14aȼµÂ›14aȼÃǹ›14aÇÄ›1a¹·ð +›1304d›963`Í›14aƹÇÉÀÈ›13a½Â›14aȼ¹›14aÀõ¸½Â»›13aú›14aƹµÀ›13aºÃ +›1361d›843`Í›15a¯›18a³›15a˼¹Â›16aȼ¹›15ah$5)›120aµÇ›14a»¹Â¹ÆµÈ¹¸â +›1361d›721`½ì¹¸›15a¶›446aìÀ¹›15aË +›1371d›907`~ +›1439d›15m›1537`KH +›1455d›10m›607`':MA>KBG@›23a?HGM›23aNL:@>›23aLM:MBLMB›73aó›14aªÂ·¹›15aȼ¹›15aÇȵÆȽ»›13aĵ»¹ +›1512d›721`¼µÇ›19a¶›1a¹¹Â›20aºÃɸá›14m›51a_VlhXYpq›10m›102a¹Ç›18aù›19aƵĽ¸›19aĵÇÇ›19aȼÆÃÉ»¼›18aȼ¹›19ah$5) +›1512d›14m›1061`R›10m›202aÁµ¿ +›1568d›721`ìÀ¹á›13aÂÃȽ»›13a˼½·›522a¼›13aºÃ›338aËÇ›11aÉÇ +›1568d›1035`¼›13a»ÀÍļǛ13aµÆ¹›13aÉǹ¸›14aºÆÃÁ›13a¹µ·›98aÈâ›19a}ý»›12aȼ½Ç›13aµÀÀà +›1625d›721`ÈÛ10aǵ›22a¹›11aȽÁ¹›11aµÂ¸›11aÇĵ·¹›12aȼµÈ›10aË›384aµÇȹ¸›11a¶›81aËÂÀõ¸½Â» +›1625d›812`Ê›458aÃÉÀ¸›11aÃȼ¹Æ˽ǹ›10a¶›1a¹›12aË›138aÍ›11a¸Ã +›1681d›721`ȼ¹›11a˼ÃÀ¹›11aú›10aµ›11aºÃ›236a¹›10aµ›11aǽ»Â½ì·µÂ›160aÈ›11aú›10aȽÁ¹á›11aÇÛ11aȼ¹›11aìÆÇÈ +›1681d›1062`Èâ›18a¤È›11a·µÂ›11aȵ¿›247aÈ›10aµÁÃÉ +›1738d›721`ĵÆÈ›15aú›16aȼ½Ç›15aÁ¹Çǵ»¹›16a½Ç›16aËƽÈȹ›15aÈÛ15aȼ¹›16a¸½ÇÄÀµ›19aá›15aµÂ¸›17aȼ¹Â›16aµÂ›16aµ¸¸½È½ÃµÀ +›1738d›1596`Í +›1794d›721`Ä›1a¹Æ½Ã›1a¸›16a˽ÀÀ›15a¶›1a¹›17a¸½ÇÄÀµ›22a¹¸›16aµºÈ¹Æ›16aÄÆÛ1a·¹Çǽ»›16a¹Ê›336aÉÇ›17a»½Ê½Â» +›1794d›1129`Í›432a¹ÆÍ›16aȹ›16aĵ»¹Çá›16aȼ +›1851d›721`ȼ¹›15aÉǹƛ15aµÂ›16aµÇÇÉƵ·¹›15aȼµÈ›14aȼ¹›16aÄÆûƵÁ›14a¼µÇÂÝÈ›14a·ÃÀÀµÄǹ¸â +›1945d›607`1>:=BG@›23a?KHF›23a?BE>›15m›24a*›14m:+%›15a2/›17a#›15m›2a+›10m›22aó›11a¯¼½Ç›11aÁ¹Çǵ»¹›10a½Ç›11aËƽÈȹ›11aÈÛ10aȼ¹›11aÀû›11aÞh380ß +›1945d›14m›1169`% +›2002d›10m›878`á›19aµÂ¸›19aƹ·ÃƸǛ19aȼ¹›18aºÉÀÀ›18aìÀ¹›19aÇÄ›1a¹·½ì·µÈ½Ã›19aú›18aȼ¹›19ah$5)›18aìÀ¹›18a¶›1a¹½Â» +›2002d›721`ìÀ¹›18aÃÂÀÍ +›2058d›721`ÄÆÛ1a·¹Çǹ¸â +›2153d›607`2BQ>E›23a@K:IAB=›23a?KHFj›15m›47a*›14m:+%›15a2/›17a#›15m›2a+›10m›22aó›21a¯¼½Ç›21a½Ç›20aƹ·ÃƸ¹¸›22a½Â›20aȼ¹ +›2153d›14m›1479`% +›2209d›10m›721`Àû›19aÞh380ß›20aìÀ¹›20a˼¹Â¹Ê›361aÍ›20aµ›20auLI>Ew +›2209d›1175`¹Æ›21aµ›20aìÀ¹›20a½Ç›20aƹµ¸›21a¶ +›2266d›721`·ÃÁÁµÂ¸â +›2360d›607`3ABL›23aBL›24a$5)MH,.TWg›23a5:Qi5-2›22a5>KLBHG›13m›23aæ›10m›614aÈ +›2360d›1502`ó›13a¯¼½Ç›14a¶µÂ¹ƛ15aµÂÂÃÉ·¹Á¹Â +›2417d›721`½¸¹Â›216a¹ÆǽÛ18aú›18aȼ¹›19aÄÆûƵÁá›18a¶›1aÃȼ›19aÛ18aȼ¹›19aǷƹ¹Â›19aµÂ¸›19a½Â›18aȼ¹ +›2417d›803`Ƚì¹Ç›18aȼ¹›19aÊ +›2473d›721`Àû›14aÞh380ß›14aìÀ¹â +›2568d›607`3HM:E›23aH?›13m›24aî›10m›24a;RM>L›23aH?›24aK:LM>KL›23a=HPGEH:=>=›331aÈÇ›16a¼µ›22a¹›17a¶›1a¹¹Â +›2568d›1540`ó›17azºÈ¹Æ›17aµÀÀ›16aºÃ›98aÊ +›2624d›721`¸Ã›545a¹Ç›17aµÂ›18a½Â¸½·µÈ½Ã›17aú›17aȼ¹›18aÈÃȵÀ›17a›61a¶›1a¹Æ›18aú +›2624d›768`ËÂÀõ¸¹¸á›18aȼ½Ç›17aÁ¹Çǵ»¹›18a»½Ê›606aÉÁ +›2681d›745`ÍȹǛ17aȼµÈ›17a˽ÀÀ›17a¶›1a¹›18aÛ1a··ÉĽ¹¸›19a¶›169aËÂÀõ¸¹¸›17aºÃ›269aȹÆÝÇ +›2681d›721`¶›565aÍ›18aȼ¹›18a¸Ã›264aÈÇ›17a½Â›18aȼ¹›18aÄƽ +›2737d›721`Á¹ÁÃÆÍ›829aÊ›298aá›15aµÇ +›2737d›878`â›21a¤È›15a·µÂ›16aȼ¹Æ¹ºÃƹ›15a¶›1a¹›16a·ÃÁĵƹ¸›16a˽ȼ›15aȼ¹›16aµ›20aµ½Àµ¶À¹›14aÁ¹ÁÃÆÍ +›2794d›721`ƹě1aÃÆȹ¸›19aÛ19aµ›18aÄƽ›439aèß›18aÈÛ18a¸¹È¹ÆÁ½Â¹›19a˼¹È¼¹Æ›19aȼ¹ +›2794d›1096`ȹƛ19aȹÇÈ›18aǼ¹¹È›19aÞǹ¹›19açÐÏ +›2850d›721`ƹÇÉÀȵ›316aȹ¸›11a·ÃÆƹ·ÈÀÍ›11aó›11a½º›12aȼ¹Æ¹›12a½Ç›11a½ÂÇÉî·½¹Â›185aá +›2850d›880`È›10aìÀ¹›12a·µÂ›12a¶›1a¹›13aÄƽ›705aÈ›11aÁ¹ÁÃÆÍ +›2906d›721`ȼ¹Â›16aÄÆÛ1a·¹ÇÇ›16aÍ›256aÈ›17a½Â›15aÇÁµÀÀ¹Æ›15aǹ·È½ÃÂÇâ›12m›21ak¹a¹›10m›276aÈ +›2906d›1007`ÃÉÆ›15a¸Ã›1a·ÉÁ¹Â›557a¤º›17aµ›15a¸Ã›1a·ÉÁ¹Â +›2963d›721`·Ã›154aÍ›11aĵ»¹Ç›12aȼµÈ›11aµÆ¹›11aÄƽ›568aËÂÀõ¸¹¸ +›2963d›788`ȵ½ÂÇ›11aµÂ›402aȹ¸›12a½Â›12aÀµÂ¸Ç·µÄ›1a¹›12aÁÛ1a¸¹á›12aµÀÀ›11a¸Ã +›3030d›14m›644`àÝ +›3046d›11m›676`n¬¬›12a´¨¥³¥›14a­¥³³¡§¥³›13a¡²¥›13a³µ°°²¥³³¥¤›15a©¦›12a´¨¥›13m›14aS,-3%/›38a0%›11m›10a±µ¡¬©Í¥²›14a©³›12aµ³¥¤Æ +›3046d›13m›1478`"- +›1;479;3014;32;8!| +›1;607;3001;2;598!| +›1;1427;2151;2;14!| +›1;1117;1943;2;14!| +›1;479;1390;65;8!| +›1;479;1208;40;8!| +›1;479;888;40;8!| +›1;479;624;40;8!| + + +›462d›12m›449`Ãôñ›45aÇáÛâåàÖçÞâáÖß›14aÉÚææÖÜÚæ›10m›869aÓÖ +›607d›624`ÈÇ›11a˽ÀÀ›10a¶›1a¹›12aƹÃƽ¹Â›588aÍ›10a¶›189aȹÆä›17aȼ½Ç +›607d›563`ºÃ›322aȹ¸›11aÈÛ11aȼµÈ›11aÁÛ1a¸¹›12aµÉÈÃÁµÈ½·µÀÀ›57aÍ›11aȼ¹›12aÄƽ +›664d›563`·µÂ›15aƹÇÉÀÈ›15a½Â›15aÛ22a¹ÆíÛ207aÊ›298aâ +›664d›848`Ê›84a˽»›14aȼ¹›15aµ›20aµ½Àµ¶À¹›14aÁ¹ÁÃÆÍ + + +›462d›607`Ó× +›1851d›12m›1031`1; +›1851d›1371`G8A + + +›462d›449`ÎÃÄÃÎÃÊÁÃÏ›10m›1135aÓØ +›607d›13m›449`ÀËÌËÖËÓÉË× +›703d›14m›1435`} +›709d›10m›472`çÐè›22a©½¹À›19a¦¹ÁÄÇÛ20aµÂ¸›19a{ƽµÂ›19a£µÁ½ÀÈÛ18a¦¹ÀÀÍâ›32a§›5a¯›17a³›19a°Ç¹Æ›20a¢É½¸¹›19aºÃÆ›19aȼ¹ +›723d›1481`~ +›765d›12m›572`¿ÔÚá›10m›283a¹·›335a¼Ã›1aÃÀ›19aú›18a~À¹·Èƽ·µÀ›17a~»½Â¹¹Æ½Â» +›765d›12m›543`Ò›10m›127aµÈ›18a­¨|®â›29a¯›35a¼Â½·µÀ›19aƹě1aÃÆÈá›18a®· +›822d›543`Ù›21a®·½¹Â·¹á›22a­Ã›22aµÀ›19a¨½À½Èµ›564a¹Â¼µÁá›21a®Ë½Â¸ÃÂá +›822d›833`Í›175aÆÍ›19a|ÃÀÀ¹»¹›19aú›20a®·½¹Â·¹á›23a®¼Æ½Ê +›878d›543`®©Õ›15aקzá›15a¥ÉÀÍ›15aÐØ××â›19aÞ®¹·Ã¸›16a~¸½È½ÃÂßâ +›972d›472`çÑè›22a}Û15a£Ãǹ¿â›19a­¹Ä›1aÃÆÈ›15aºÆÃÁ›14aȼ¹›15a$5)›104a¹Æ›14a®ÈµÂ¸µÆ¸Ç›15a|ÃÁÁ½Èȹ¹â›14m›18aGH@P +›972d›10m›1218`}Æ½Ê +›1028d›14m›543`"›19a!3›10m›296aÊ›56a¶›1a¹Æ›14aÐØØÏâ +›1028d›14m›562`.›10m›36aá›14aÐÐÞÓßäÔÖÏá›13a©Ã›22a¹Á +›1122d›600`ʽ¸›17a¡›40a¼Çâ›30a¯¼¹›19a¡ÃÆÁµÈ›17aú›18a¯›17a³ÝÇ›18a$5)›18a¡½À¹Çâ›14m›29aGH@"›19a!3›10m›217aØá +›1122d›472`çÒè›22a}µ›104aÉ·›14m›884a.›10m›36aá›18aÒÞÑßäÐÓòÐ +›1132d›1179`~ +›1179d›543`ª·Èö›1a¹Æ›16aÐØ×Ñâ +›1272d›600`ʽ¸›16a¡›40a¼Çâ›25a¯›145aÈ›16a¨¹Èƽ·›16a¡½À¹Çâ›14m›24aGH@"›19a!3›10má›16aÑÞÐßäÐÑòЛ76a¹¶ÆɵÆÍ +›1272d›472`çÓè›22a}µ›103aÉ·›130a³›17a¡Ã›14m›432a.›10m›251aÕá›15a¡ +›1282d›854`~ +›1329d›543`ÐØ×Ðâ +›1423d›600`ʽ¸›12a¡›40a¼Çâ›17a¯¼¹›14a¡ÃÆÁµÈ›11aú›13a07,›13a¡½À¹Çâ›14m›16aGH@"›19a!3›10má›13aÑÞÒßä×ò›125aÊ›56a¶›1a¹Æ +›1423d›472`çÔè›22a}µ›99aÉ·›14m›704a.›10m›202aÐÑá›11a©Ã›22a¹Á +›1479d›543`ÐØ×Ðâ +›1573d›572`ÃÁµÇ›11a­Ã¿½·›91aµ·›22a¹¸›12aÞ0+›105aÈ›11a¡½À¹›11a¡ÃÆÁµÈâ›14m›12aGH@"›19a!3›10má›12aÕÞÒßäÐÐÔ›67aÏá +›1573d›472`çÕè›22a¯›222a¿½â›12a«›41a¿›122aß›10a¡Ã›14m›411a.›10m›224aòÐÑ +›1629d›599`Ê›56a¶›1a¹Æ›15aÐØ×Ôâ +›1629d›543`©Ã›22a¹Á +›1723d›472`çÖè›22aÞ›14m›33a-.-N›10m›293aÈ›14a¡½À¹›14a¡ÃÆÁµÈâ›14m›19aGH@"›19a!3›10má›14aÕÞÐßä×òЛ150a¼›14aÐØ×Ôâ +›1723d›14m›561`;›10m›88aßâ›18a¢¹Â¹Æ½·›15a¡Ã›14m›424a.›10m›226aÐá›13a¨µÆ· +›1817d›910`±¤ÈÛ422a¹·›339a¼Ã›1aÃÀ›20aú +›1817d›472`ç×è›22a©½¹À›20a¦¹ÁÄÇÃÂâ›36a}›83a±}°›19a°Ç¹Æ›21a¢É½¸¹â›35a¯›35a¼Â½·µÀ›20aƹě1aÃÆÈá›21a®· +›1873d›543`~À¹·Èƽ·µÀ›20a~»½Â¹¹Æ½Â»›21aÙ›22a®·½¹Â·¹á›24a­Ã›22aµÀ›19a¨½À½ÈµÆÍ›20a|ÃÀÀ¹»¹›20aú›21a®·½¹Â·¹á +›1873d›1302`Í +›1930d›647`¹Â¼µÁá›18a®Ë½Â¸ÃÂá›18a®©Õ›17aקzá›18a¥ÉÀÍ›17aÐØ××â›26aÞ¡›88a±¤ÈÛ143a¹Æǽà+›1930d›543`®¼Æ½Ê›853aÃÆ›17a}›83a±}°›17a± +›1986d›543`ÑâÏßâ +›2080d›472`çØè›22a}½»½ÈµÀ›11a~ÅɽÄÁ¹Â›361a͵Ƹá›12a¨zâ›12m›45a¿ÔõÒÉÏ›14m›17a= 0. +% +% This means that \setcounter{page}{0} may be used to ensure that +% such things as title pages, etc, don't bear a page number, and +% also so that ``non-standard'' footnotes may be interpolated into +% the text by means of \footnotetext[0]{$^\dag$ Some text}, say. +% +\def\@arabic#1{\ifnum #1>0 + \number #1% + \fi} +% Define this to squash up lists being used as simulated lines of DCL +\def\squash{\itemsep=\z@ \relax \parsep=\z@ \parskip=\z@} +\makeatother + + +\pagestyle{headings} +\textheight=21cm +\newfont{\tinyss}{cmss8} +\newfont{\logo}{logo10 scaled\magstephalf} +\ifatrmcs + \newfont{\shieldfont}{shield} + \newcommand{\shield}{{\shieldfont\char`\@}} +\else + \let\shield=\relax +\fi +\newenvironment{note}{\quote\centerline{\bf Note}}{\endquote} +\newcommand{\chapend}{\clearpage \ifodd \count0\else + \markboth{}{}\vspace*{\fill}% + \centerline{\small This page is left intentionally blank}% + \vspace*{\fill}\cleardoublepage + \fi} + +% Uncomment the next line if you don't mind pages with nothing but numbers +% \let\chapend=\cleardoublepage + +\newcommand{\meta}[1]{$\langle\mbox{\it #1\/}\rangle$} + +\newcommand{\ESC}{{\tinyss\raisebox{0.5ex}{E}\kern-.2em% + \raisebox{-0.5ex}{C}}} + +\newcommand{\TYP}{{\tt.TYP}} +\newcommand{\DVI}{{\tt.DVI}} +\newcommand{\TFM}{{\tt.TFM}} +\newcommand{\LN}{{\tt.LN3}} +\newcommand{\DVItoLN}{{\sf DVI\-to\-LN03}} +\ifdollars\newcommand{\logsep}{\$}\else\newcommand{\logsep}{\_}\fi + +\newcommand{\BibTeX}{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +\newcommand{\SliTeX}{{\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em T\kern + -.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +\newcommand{\SLiTeX}{{\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em T\kern + -.1667em\lower.7ex\hbox{E}\kern-.125emX}} + +\newcommand{\MF}{{\logo META}\-{\logo FONT}} + +\newcommand{\TeXware}{\TeX\kern-.1em ware} + +\newcommand{\Web}{{\sc Web}} + +\newcommand\DVItoVDU{{\sf DVIto\kern-.06em VDU}} + +\newcommand\bs{\char '134 } % A backslash character for \tt font +\newcommand\verbsp{\char '40 } % The \verb* space character in \tt font +\newcommand{\prompt}{{[DCL]\$}} +\newcommand{\cont}{{\leavevmode\kern.06em\vbox{\hrule width.4em height .8pt}\$}} + +\title{DVILN03 User Guide\\for the {\sl VAXen\/} at \sitename} +\author{Brian Hamilton Kelly\\School of Electrical Engineering \& Science\\ +\shield\\ +Royal Military College of Science\\Shrivenham} +\date{30th September 1991\\For {\tt DVILN03} Version 4.1} +\begin{document} +\setcounter{page}{0} +{\def\thefootnote{\fnsymbol{footnote}} +\maketitle +\begin{abstract} + This document describes the operation of the {\tt DVILN03} command on the + {\sl VAX\/} computer. This command activates the {\sf DVItoLN03} + program, which allows a \TeX{} output file in device-independent \DVI{} + form to be converted to a file which may be printed on a DEC + LN03\footnote{{\sl VAX\/} and {\sl LN03\/} are registered trademarks of + the Digital Equipment Corporation} laser printer. + + It is assumed that the reader is familiar with \LaTeX{} and has read + the local \LaTeX{} User Guide~\cite{RMCS:latexguide}. + Familiarity with the {\sl VAX/VMS\/} operating system is also assumed. + + If you have a question that you can't answer by reading this document, ask + \contact. He should also be informed of any possible \DVItoLN{} bugs or + undocumented anomalies. \ifrmcs\else + + Bugs that cannot be resolved locally at \sitename{} can be reported to the + author, Brian {\sc Hamilton Kelly}, who may be contacted by E-mail as + {\tt} (on the {\sc Janet} network).\fi +\end{abstract}} + + +\newpage +\pagenumbering{roman} +\tableofcontents + +\listoffigures + +\section*{Acknowledgements}{\small +The code for handling the Rose-style \verb+\special+s for changebar marking +was added by Robin Fairbairns of LaserScan, Cambridge, UK, at version 3.1-1. + +The algorithms for handling the newer DEClaser printers were provided by +Karsten Nyblad of TFL, the Danish Telecommunications Research Laboratories; +they arrived just as all the other enhancements had been completed at +version 3.9, and were integrated into this new release. + +My colleague Niel Kempson has provided much-needed support and encouragement, +and has made many useful suggestions for enhancements +over the years (his latest idea, just as I'm about to release this, is to +make the program capable of handling binary files that {\em aren't\/} +organized as 512-byte fixed-length records, but that will have to await a +future release). + +Finally, I must acknowledge my great indebtedness to the dedicated band of +helpers who have acted as $\beta$-site testers (and provided useful +suggestions for enhancements): +\begin{itemize} +\item Phil Taylor (\verb++), of Royal Holloway and +Bedford New College, +\item Robin Fairbairns (\verb++), +\item Karsten Nyblad (\verb++), and +\item Rob Schumann (\verb++), of the European +Space Agency, at Frascati in Italy. +\end{itemize} +(and of course, the dozens of unsuspecting guinea-pigs at the Royal Military +College of Science!) +} +\newpage +\section*{New and Changed Features} +\markboth{SUMMARY OF CHANGES}{SUMMARY OF CHANGES} +\addcontentsline{toc}{section}{New and Changed Features}\cbstart +\DVItoLN{} V4.1 is a maintenance update which incorporates some minor bug +fixes (mostly to handle obscure font problems). It is provided as a change +file to be applied to the {\tt DVITOLN03.WEB} V4.0 file; a new version of +the {\tt.WEB} file is also included, because both files have now been +``detabbed''. + +The following new features are added in this version:\begin{itemize} + \item The \verb|/PAPER_SIZE| qualifier is introduced to allow system + managers to specify the default paper size (European \verb|A4| vs.\ + \verb|US|); this is necessary since the mixing of landscape and portrait + orientation output on the same page requires an intimate knowledge of + the size of the paper. The qualifier cannot be specified explicitly to + produce output as if sent to the non-default paper size, since the + switch on the back of the printer also needs to be changed, and the + power cycled. + \item The \verb|/VERBOSE| qualifier is introduced; in the distributed + {\tt.CLD} file, this is on by default, and produces the same terminal + output as earlier versions of the program. By making the default + \verb|/NOVERBOSE|, or specifying this explicitly on the command line, + messages to the terminal are reduced to:\begin{itemize} + \item the name of the {\tt.DVI} file being processed; + \item the report of the total numbers of bytes of fonts downloaded; + \item the numbers of the pages processed. + \end{itemize} +\end{itemize} + +The following bugs are fixed in this version:\begin{itemize} + \item Optimization of font downloading had made the program incapable of + handling fonts containing more than 188 glyphs. + \item All rules were output in the orientation specified in the command + line, even if some of them should have appeared in the opposite + orientation. + \item Mixed portrait/landscape material requires knowledge of the + physical paper size, because the ``origin'' in landscape mode is related + to the {\em bottom\/} edge of the paper. + \item Changing the orientation within a page resets the margins to the + hardware defaults, which necessitates that the program change them again. + \item A font that contains duplicated characters (can only happen with + {\tt PK} fonts), if all characters were imaged (e.g., with {\tt + testfont}), would result in an illegal font download. The program now + detects such erroneous fonts, which is more than any \TeX ware or + fontware does (apart from {\tt GFtoPXL})! +\end{itemize} + +\DVItoLN{} V4.0 was \cbend the first public release since V3.1-4; other +versions have been used internally at the author's site, and some of these +have been circulated to a dedicated band of $\beta$-site testers---I'm very +grateful for your help, gentlemen! + +\DVItoLN{} V4.0 introduces the following refinements and new features +compared with V3.1:\begin{itemize} + \item Support has been added for virtual font files; for every font, the + program will attempt to open a file with name \meta{fontname}{\tt.VF}, + looking in the directory referenced through the qualifier + \verb|/VIRTUAL_DIRECTORY| (sites without any requirement for virtual + fonts can speed processing fractionally by making the default + \verb|/NOVIRTUAL_DIRECTORY|)\@. Glyphs from such a font will be imaged + from the appropriate physical fonts, obeying all \meta{dvi byte} + sequences in the {\tt.VF} file. + + \item Support for \TeX's \verb|\special| command has been expanded and + improved; it is only necessary to provide sufficient + characters of a keyword to identify it uniquely: since all keywords (at + present) are unique in their first two letters, then only that many need + be provided, although any \verb|\special| sequences will ordinarily be + defined within a macro package or style option; authors of these are + encouraged to write all keyword parameters in full. + + \item Support for two new \verb|\special| commands: + \begin{description} + \item[\tt landscape] Any text, rules, or graphics insertion, up to the + end of the current page, or the next \verb|\special{portrait}| command, + whichever occurs first, + will be output in landscape orientation, regardless of whether the + document is being processed in landscape or portrait mode. + \item[\tt portrait] The opposite of the previous command + \end{description} + Note that these keywords may be used with or without the `\verb|ln03:|' + prefix, since the concept of printing orientation transcends any concept + of device dependence. + + \item The qualifiers \verb|/LEFT_MARGIN| and \verb|/TOP_MARGIN| now + require that their associated values be specified using the syntax of a + \TeX{} \meta{dimension}, that is, by a number (real or integer) followed + by a two-letter code for a \TeX{} \meta{physical unit}; the standard + units of \TeX{} ({\tt pt sp pc in cm mm dd cc}) are supplemented by {\tt + mi} (for micron, i.e.~1$\mu$m) and {\tt px} (for pixel). + + \item The program no longer assumes that \TFM{} files will be found in + the directory indicated by the logical name \verb|TEX$FONTS|; instead, + this information is conveyed to the program through the + command-definition file, using the \verb|/TFM_DIRECTORY| qualifier. + System managers are now free to use logical names of the form + \verb|TEX_INPUTS| instead, and thus conform to {\sl Digital's\/} + recommendations regarding customer-assigned logical names. + + \item Previous versions of the program would abort upon discovering a + reference to a font for which character bitmaps could not be found (in + either packed or unpacked pixel files). This was somewhat user-hostile, + and at variance with the proposed Level~0 DVI-Driver + Standard~\cite{Hosek}, so the + program now substitutes solid rules of appropriate dimensions for glyphs + from such a font. A warning message will be displayed. + + \item A mechanism has been provided by which spurious `{\tt Page wider + than TeX reported}' messages may be suppressed by the user: see the + descripton of the \verb+/HFUZZ+ qualifier. For completeness of + orthogonality, the complementary \verb+/VFUZZ+ qualifier is also + provided, but it's extremely unlikely that this would ever be required. + + \item Command-line qualifiers have been provided to support {\sl + Digital's\/} new DEClaser~$2100^{\dag}$\footnotetext[0]{$^{\dag}$ + DEClaser and LN05/LN06 are registered trademarks of {\sl Digital}} + and~2200 printers (otherwise known as the + LN05 and LN06). The user can control whether printing will be in + simplex or duplex mode (printing on both sides of the paper), and from + which tray(s) the paper will be fed. + + \item Last, but definitely not least, considerable speed improvements + have been made by reorganizing some data structures to reduce the + likelihood of the VAX having to page fault. + \end{itemize} + +\subsection*{V3.1 Changes} +\DVItoLN{} V3.1 introduced the following refinements and new features +compared with V3.0:\begin{itemize} + \item Support for \TeX's \verb|\special| command was expanded and + improved. + + Sixel (or other LN03) files may now be included using the + following syntaxes within the parameter of the \verb|\special| command: + \begin{itemize} + \item \verb*|\special{SX |\meta{filename}\verb|}| + \item \verb*|\special{ln03:plotfile |\meta{filename}\verb|}| + \item \verb*|\special{ln03:sixel |\meta{filename}\verb|}| + \end{itemize} + These commands will not normally be inserted directly by users, but + through the use of a document style option, such as \verb|graphics|, + see~\S\ref{subsec:graphics}. + \item The Flavio Rose \verb|\special|s are supported to draw vertical + bars beside changed material. The parameters + recognized are as follows, with [\,] bracketing material that may be + omitted: + \begin{itemize} + \item \verb*|\special{ln03:defpoint |\meta{point\_no}% + \verb|(|[\meta{dimen}]\verb|,|[\meta{dimen}]\verb|)}|.\\ + Define a point, in terms of $x$ and $y$ coordinates on the + page. Either coordinate may be omitted, when the definition + takes place with the appropriate current position. This + therefore defines point $p_i$ to be at $(x_i,y_i)$. + \item \verb*|\special{ln03:connect |\meta{point\_pair}\verb*| |% + \meta{point\_pair}[\verb*| |\meta{dimen}]\verb|}|,\\ + where $$\mbox{\meta{point\_pair}}\equiv + \mbox{\meta{point\_no}[\verb|/|\meta{point\_no}]}$$ + Connect pairs of points together, with a rule of width (height) + \meta{dimen}. If omitted, the latter reverts to the usual 2 + pixels (0.4pt). The points must be capable of being connected + by a rule that is either strictly vertical or strictly + horizontal. The variant of \meta{point\_pair} with the + intervening `{\tt/}' is used with {\tt twoside} printing to + specify {\em two\/} pairs of points, one to be used on + left-hand pages, and one on right-hand. + \item \verb*|\special{ln03:resetpoints |\meta{first}% + \verb*| |\meta{last}\verb|}| Cancel all knowledge of the + coordinates of points $p_f\ldots p_l$. + \end{itemize} + + Again, the user need not worry about creating such \verb|\special| + commands directly: the style option \verb|changebar| provides the + appropriate macros which are invoked by means of the commands + \verb|\cbstart| and \verb|\cbend|, or by the \LaTeX{} environment {\tt + changebar}. + \item Program now supports an optional file specification on the + \verb|/LOG| qualifier. + \item Program now provides the \verb|/OUTPUT| qualifier which may be + used to direct output to a different file specification (for example, + onto a scratch disk), or even directly to the LN03 printer, possibly as + a spooled device. + \item The program now ensures that all output files are created in the + user's current directory (unless overridden by + {\tt/OUTPUT}): formerly, the use of a logical name could cause such + files to be created in a different directory. + \item Correctly reports the relative magnification of fonts loaded at + non-standard sizes. +\end{itemize} +\subsection*{V3.0 Changes} +The following enhancements were made to \DVItoLN{} at V3.0: +\begin{itemize} + \item Both packed and unpacked font files may now each be held in + ``rooted'' or ``flat'' directory structures. + \item Program can handle fonts with the \TeX{} maximum of 256 characters, + which permits access to Silvio Levy's Greek fonts + \item The \verb|/LOG| and \verb|/NOLOG| qualifiers permit user selection + of whether the program's log file (\verb|.TYP|) is retained after + processing. + \item Program correctly computes the imaging area of standard European + A4 paper. +\end{itemize} +\newpage +\setcounter{page}{1}\setcounter{footnote}{0} +\pagenumbering{arabic} + + +\section{Introduction} +\subsection{What \LaTeX{} does with your Source File} + +When any program\footnote{This document refers mostly to \LaTeX, since that +is the program most commonly used at the author's site; however, it may be +assumed that this includes \TeX{} and \SliTeX{} as well} of the \TeX{} +family is run (\TeX, \LaTeX{} or \SliTeX), it produces two output files. +One of these is the {\sl log file}, which records all the output that +\LaTeX{} sent to the terminal (and a lot more besides!). On a {\sl VAX\/} +implementation of \LaTeX, this file has the file type `{\tt .LIS}'\@. +However, it is the other file which is of most interest because this +contains all the instructions to typeset your document; this file is in a +{\sl Device-Independent Format\/} which is common to {\it every\/} \LaTeX{} +site in the world and has a file type of `\DVI'\@. Details of the internal +format of \DVI{} files are explained within the program {\sf DVItype}, which +describes the definitive method for processing \DVI{} files, but need only +concern those who are writing \DVI{} processing programs. Details of most +\TeXware{} files have also been published in various issues of {\sl +TUGboat}, the newsletter of the \TeX\ Users' +Group~\cite{TUGboat-DVI,TUGboat-TFM,TUGboat-PXL,TUGboat-PK,TUGboat-GF}. + +\subsection{Previewing \LaTeX{} Output} +Before you can see what wonders \LaTeX{} has wrought for you, it is necessary to +process this \DVI{} file. As a first stage, you should use \DVItoVDU{} to +produce a representation of your document on a graphics terminal, rather than +waste paper unnecessarily; the \DVItoVDU{} User's +Guide~\cite{RMCS:dvitguide} +and the local \LaTeX{} User's Guide~\cite{RMCS:latexguide} +describe how to use this program. + +\subsection{Committing \LaTeX{} Output to Paper}\label{sec:font-load} +However, the time will come (soon, you hope!) when you are ready to commit your +document to paper; now it is necessary to process the \DVI{} file with the +command {\tt DVILN03} which activates the {\sf DVItoLN03} program\footnote{The +command is {\bf not \tt DVITOLN03} because, if it were, the VAX/VMS command +line interpreter (CLI) would be unable to distinguish between this and the +{\tt DVITOVDU} command}. For example, to process the file {\tt +xxx.DVI}, resulting from \LaTeX ing {\tt xxx.TEX}, you would +type: +\begin{description} + \item[\prompt\footnotemark] + \footnotetext{In this document, the prompt from VAX/VMS is shown as + {\bf\prompt}} + \verb*+DVILN03 xxx+\footnote{The symbol `{\tt\verbsp}' represents + mandatory whitespace (one or more spaces or tabs)} +\end{description} +\DVItoLN{} reads the \DVI{} file, +determines which individual characters of each font are used therein and +writes an output file containing the necessary instructions to download the +raster patterns corresponding to each character into the LN03 printer. It +then appends the necessary instructions to typeset your document using the +downloaded characters. + +The resultant output file has the file extension {\tt .LN3}, and can be queued +for printing to any LN03 laser printer queue by normal {\sl VAX/VMS\/} +commands. However, because it contains many (long) escape sequences, and also +takes care of all printer formatting, it must be printed with a number of +special qualifiers for the print command. The full details (for those who +wish to set up new laser queues) are given in Appendix~\ref{sec:queues}. +The \LN{} file is full of escape sequences which are peculiar to the LN03, +and will cause absolute havoc if passed to any other form of printer; +therefore, take care not to queue it for printing to an ordinary line +printer --- even {\tt TYPE}ing it to a VDU is {\em not\/} recommended! + +\subsubsection{Printing the \LN{} File}%%% SYSDEP +To simplify the task of queueing the \LN{} file for printing, \sitename{} +provides the {\tt TEXPRINT} command; this is actually a {\sl DCL\/} +symbol\footnote{For further information regarding {\sl DCL\/} symbols, +see~\cite[chapter 5]{DEC:dcl-concepts}} which may be +abbreviated to its first four letters, {\tt TEXP}\@. When executed as a +{\sl DCL\/} command, it invokes a command procedure which queues your file +for printing on the appropriate LN03 printer. + +\begin{note} + + Most of the normal {\tt PRINT} command qualifiers ({\it eg\/ \tt /DELETE}, + {\tt /COPIES=\it n}, {\it etc\/}) may be used with the {\tt TEXPRINT} + command. + + For example, to print {\tt xxx.LN3}, deleting the file after printing + three copies, and sending you a message upon completion, type: + \begin{description} + \item[\prompt] + \verb|TEXPRINT/NOTIFY xxx/DELETE/COPIES=3| + \end{description} +\end{note} + +\section{Doing more with DVItoLN03} +The {\tt DVILN03} command normally processes the whole of the \DVI{} file +and translates it all to a form intelligible to the LN03. It also makes the +standard \LaTeX{} assumptions, that is, that the text's {\sl reference point\/} +is located exactly one inch down and one inch across from the top left-hand +corner of the paper. However, qualifiers to the {\tt DVILN03} command permit +explicit control over which page shall be printed first, and how many +following pages are to be printed. It also allows selection of a different +reference point, and even permits the paper to be ``turned on its side'', into +the landscape orientation. + +The following sections and Appendix~\ref{sec:qualifiers} give full details of +each of the qualifiers which are accepted by the {\tt DVILN03} command; these +qualifiers are as follows: + +\begin{itemize} + \item \verb|/STARTING_PAGE| + \item \verb|/NUMBER_OF_PAGES| + \item \verb|/TOP_MARGIN| + \item \verb|/LEFT_MARGIN| + \item \verb|/ORIENTATION| + \item \verb|/(NO)LOG| + \item \cbstart\verb|/(NO)VERBOSE|\cbend + \item \verb|/OUTPUT| + \item \verb|/HFUZZ| + \item \verb|/VFUZZ| + \item \verb|/DEVICE_TYPE| + \item \verb|/PRINT_MODE| + \item \verb|/(NO)DUPLEX_BY_PAGE_NUMBERS| + \item \verb|/FEED_TRAY| + \item \cbstart\verb|/PAPER_SIZE|\cbend + \item \verb|/(NO)PK_FONT_DIRECTORY| + \item \verb|/(NO)PXL_FONT_DIRECTORY| + \item \verb|/TFM_DIRECTORY| + \item \verb|/(NO)VIRTUAL_DIRECTORY| +\end{itemize} + +(The last four qualifiers are {\em definitely\/} for system wizards only!) + +\subsection{Controlling which Pages DVItoLN03 Prints} +Ordinarily, \DVItoLN{} translates all the pages in the \DVI{} file into a +form which can be printed by the LN03 printer; however, if you are having +difficulty in getting right a figure\footnote{Although \DVItoVDU{} is the +recommended method of previewing your output, it sometimes happens that it +cannot provide sufficient detail when performing this sort of proof-reading +operation} on page 23 of a 200-page document, it is rather wasteful +of paper to keep on printing all 200 pages (not to mention the time taken +waiting for the output!) Therefore \DVItoLN{} allows the user to +specify which page shall be used as the starting point for printed output; +it also permits the user to control how many pages are to be processed. + +The value on the \verb|/STARTING_PAGE=| qualifier is used to specify the +starting page number; this is given as a {\em string\/} and takes the default +value `{\tt*}'. This default value will match any \LaTeX{} page number and so +will normally start with the first page in your document, whatever its number. +However, if you provide a single number, \DVItoLN{} will match this +with the {\it first\/} occurrence of a page with that number. This means +that if the pages of document \verb|MY_FILE| are numbered (0), (i), (ii), +(iii), (1), (2), (3), \dots, say, then selecting \verb|/STARTING_PAGE=2| +will select page (ii); there is no mechanism to select page (2) instead. +(Note that {\em raw\/} \TeX{} would have had the values 0, -1, -2, -3, 1, 2 +and 3 for the above page numbers, and therefore page (2) {\em could\/} be +selected directly; to accommodate such numbering schemes, the +\verb+/STARTING_PAGE+ qualifier accepts negative numbers.) + +(If you've been clever and used raw \TeX's \verb|\count1|\dots{\tt 9} to get +``fancy'' page numbers, then you can specify these extra numbers, separated by +periods (`.') to the \verb|/STARTING_PAGE=| qualifier; it is for this reason +that the qualifier's value must be specified as a string of characters, and +not as a simple numerical value. +Thus +\verb|/STARTING_PAGE=3.*.19| would select the first page where \TeX's +\verb|\count0| is 3 and \verb|\count2| is 19, no matter what value was in +\verb|\count1|.) + +The number of pages to be printed is specified as the value to the +\verb|/NUMBER_OF_PAGES=| qualifier; this {\em is\/} a numerical value, and +takes the default value {\tt 10000000} --- hopefully this will ensure that +your whole document is printed! Therefore to ensure that the page (2) of +the earlier example is printed, you would need to issue the {\tt DVILN03} +command as \begin{description} +\item[\prompt] \verb+DVILN03 MY_FILE /STARTING_PAGE=2 /NUMBER_OF_PAGES=4+ +\end{description} thus getting pages (ii), (iii), (1) and (2). +As with all {\sl DCL\/} commands and qualifiers, these may be +abbreviated to the minimum to make them unambiguous; therefore the above +command could also have been entered as +\begin{description} +\item[\prompt] \verb+DVIL MY_FILE/S=2/N=4+ +\end{description} + +\begin{figure}[htbp] +\centering +\setlength{\unitlength}{0.5pt} +\begin{picture}(614,795) +\footnotesize \tt +% +% Main boxes +% +\put(0,0){\framebox(614,795){\mbox{}}} +\put(0,723){\line(1,0){614}} +\put(72,0){\line(0,1){795}} +\put(72,723){\makebox(0,0){$\bullet$}} +\put(70,729){\makebox(0,0)[br]{\tiny Ref.~Point}} +\put(72,696){\line(1,0){542}} +\put(72,684){\line(1,0){542}} +\put(72,659){\line(1,0){542}} +\put(72,131){\line(1,0){542}} +\put(72,101){\line(1,0){542}} +\put(135,131){\line(0,1){528}} +\put(480,131){\line(0,1){528}} +\put(491,131){\line(0,1){528}} +\put(581,131){\line(0,1){528}} +% +% Vectors and markers +% +\put(0,630){\vector(1,0){72}} % left margin +\put(5,630){\vector(-1,0){5}} +\put(5,640){1 in} +\put(72,550){\vector(1,0){63}} % \oddsidemargin +\put(77,550){\vector(-1,0){5}} +\put(100,560){1} +\put(160,795){\vector(0,-1){72}} % top margin +\put(160,790){\vector(0,1){5}} +\put(165,759){1 in} +\put(275,696){\vector(0,1){27}} % \topmargin +\put(275,701){\vector(0,-1){5}} +\put(285,705){2} +\put(430,716){\vector(0,-1){20}} % \headheight +\put(430,664){\vector(0,1){20}} +\put(440,703){3} +\put(300,659){\vector(0,1){25}} % \headsep +\put(300,664){\vector(0,-1){5}} +\put(310,670){4} +\put(200,131){\vector(0,1){528}} % \textheight +\put(200,136){\vector(0,-1){5}} +\put(205,610){5} +\put(135,200){\vector(1,0){345}} % \textwidth +\put(140,200){\vector(-1,0){5}} +\put(307,210){6} +\put(460,570){\vector(1,0){20}} % \marginparsep +\put(511,570){\vector(-1,0){20}} +\put(496,580){7} +\put(491,500){\vector(1,0){90}} % \marginparwidth +\put(496,500){\vector(-1,0){5}} +\put(505,510){8} +\put(310,151){\vector(0,-1){20}} % \footskip +\put(310,81){\vector(0,1){20}} +\put(300,110){9} +\end{picture} + +\vspace{1ex} + +{\tt +\begin{tabular}{l@{\hspace{20pt}}l} +1 \bs oddsidemargin = 63pt & 6 \bs textwidth = 345pt \\ +2 \bs topmargin = 27pt & 7 \bs marginparsep = 11pt \\ +3 \bs headheight = 12pt & 8 \bs marginparwidth = 90pt \\ +4 \bs headsep = 25pt & 9 \bs footskip = 30pt\\ +\multicolumn{2}{l}{5 \bs textheight = 43\bs baselineskip + \bs topskip (528pt)} +\end{tabular}} + +\caption{Example \LaTeX{} Page Layout\label{fig:layout}} +\end{figure} + +\subsection{Controlling the Appearance of the Printed Page} +All \LaTeX's page layout dimensions, such as {\tt\bs oddsidemargin} +are measured from a standard {\sl reference point\/}; figure~\ref{fig:layout} +shows how \LaTeX{} lays out a page for the {\tt article} style using 10-point +type. + + +For special effects, you may find it useful to be able to redefine the +position of this reference point when printing; the qualifiers +\verb|/LEFT_MARGIN| and \verb|/TOP_MARGIN| implement this change. + +Some documents need so-called {\sl landscape orientation\/} for the paper, +where the printed page is wider than it is high. Assuming that the page +layout parameters have been suitably redefined, the +\verb+/ORIENTATION=LANDSCAPE+ qualifier can be used to tell \DVItoLN{} +to print the document in this orientation. (Note that single pages, +or even parts of pages, can be printed in the opposite orientation, through +use of suitable \verb|\special| sequences in the \TeX{} source file.) + +\subsubsection{Specifying a new Reference Point} +The \verb|/LEFT_MARGIN=| and \verb|/TOP_MARGIN=| qualifiers (which may be +abbreviated to just {\tt/LE=} and {\tt/TO=}) each require a single numeric +value, followed by a two-letter abbreviation for what \TeX{} calls a +\meta{physical unit}; this expresses the displacement of the reference point +from the left-hand and top edges of the paper, respectively. +The value may be given in any of \TeX's standard \meta{physical unit}s, with +the addition of {\tt mi}, representing 1$\mu$m (micron), and {\tt px}, which +represents +units of {\sl pixels}\footnote{see glossary}, the basic unit of measure on the +LN03; there are 300 pixels to one inch (the LN03 can therefore print at a +density of 90,000 $\mbox{dots}/\mbox{in}^2$) and so, as you might expect, the +default values for these qualifiers are both {\tt 300px} for \TeX's default +reference point; the same effect could be achieved by specifying this value +as {\tt 1in} or {\tt25.4mm} or even as {\tt72.27pt}. + +\subsubsection{Specifying a Different Paper Orientation} +Ordinarily, \DVItoLN{} produces its output assuming {\sl portrait\/} +orientation for the paper (with the paper being higher than it is wide). +However, you might wish to use different parameters to \LaTeX\ +(\verb|\textwidth|, {\it etc\/}), such that the paper is assumed to be in {\sl +landscape\/} mode; it is then necessary to tell \DVItoLN{} that it +should send re-orientation commands to the LN03. This is specified by means +of the \verb|/ORIENTATION=| qualifier, (which may be abbreviated to +{\tt/OR=}), and takes the ``values'' {\tt PORTRAIT} or {\tt +LANDSCAPE} ({\tt P} or {\tt L}); the default is {\tt PORTRAIT}. + +\subsection{Including Graphics Images in your +Document}\label{subsec:graphics} + +A local extension to \LaTeX{} at RMCS permits the \DVItoLN{} program to +include graphic images within a printed document. The images will typically +have been captured from a graphical display by software which ``reads back'' +such an image to the host computer. The only format supported at present +for such an image dump requires that it be in DEC's `sixel' format; this is +documented in the programmers' manuals for the LN03 printer and the VT240/1 +terminals. Such files can be generated by the {\sf ReToS} program from +sources written in ReGIS; provided that the correct device type is specified +(\verb+LN03+ or \verb+LN03_PLUS+, as appropriate), the {\sf ReToS} output +may be imported {\it verbatim}. + +To prepare \LaTeX{} to include such an image, include {\tt graphics} as an +option to the {\tt\bs documentstyle} command; this will define five new +commands, the first four of which are as follows: +\begin{description} + \item[{\tt\bs smallVT240}] Includes an image dump in a space 1.6inches + high and $2\frac23$ inches wide, suitable for a full-screen dump from a + VT240/1 terminal measuring $480\times800$ screen pixels, at 1:1 scaling + \item[{\tt\bs largeVT240}] For printing a dump at 2:1 scaling, occupying + 3.2in$\times5\frac13$in + \item[{\tt\bs smallVis550}] For 1:1 scaled dump from a Visual 550 + terminal, with $585\times768$ screen pixels, in a space measuring + 1.95in$\times$2.56in + \item[{\tt\bs largeVis550}] For printing a dump at 2:1 scaling, + occupying 3.9in$\times$5.12in +\end{description} +(The fifth command, \verb|\gino|, is described in \S~\ref{subsub:gino} +below.) + +In each case the commands take one parameter, which must be the name of the +sixel dump file (including any necessary file extension). The commands ensure +that a space of the appropriate size is left within the text (you will most +probably use the commands within a {\tt figure} and/or {\tt picture} +environment). {\sf DVItoLN03} is passed the filename and instructed to +treat the file as a sixel dump (by means of \TeX's {\tt\bs special} command) +through the above macros. + +\begin{figure}[hbtp] +\iffulldoc\centerline{\smallVis550{\ifrmcs TEX$BIB:\fi openclose.small}}\fi +\caption{Visual 550 Screen Dump printed by the {\tt\bs smallVis550} +Command}\label{fig:small-six} +\end{figure} + +Figures~\ref{fig:small-six} and~\ref{fig:large-six} illustrate the utility of +these commands; the dumps were taken from a Visual 550 terminal. +\ifrmcs It is understood by the author that the Selenar SG640 +terminals in the Computer +Centre are also capable of performing screen dumps to the VAX; if anyone would +care to implement a program to effect such a dump, appropriate commands can be +added to the definitions in {\tt graphics.sty}\fi + +The sixel dump will be included {\it verbatim\/} within the resulting +{\tt.LN3} file by \DVItoLN; it {\bf must} include the necessary {\tt DCS} +(Device Control String) sequence to introduce the dump, and finish with the +{\tt ST} (String Terminator) escape sequence. Dumps for printing with the +commands must specify the scaling through the third parameter of the {\tt +DCS} sequence, therefore the files will commence with `{\tt\ESC +P9;0;1q}'\footnote{\ESC\ represents the `escape' character} for printing +with the ``small'' commands, and `{\tt\ESC P9;0;2q}' for use with the +``large'' versions; see~\cite{DEC:LN03} for further details. + +\subsubsection{GINO Graphics}\label{subsub:gino} +Thanks to the good offices of Sqn.~Ldr.~John {\sc Baggott}, a student on +2MESE course at RMCS, a program (\verb+GINOtoSIX+) is now available which +will convert the metafile ({\tt SAVDRA}) output of GINO to a suitable sixel +dump, ready for inclusion in your document with the +\verb+\gino+\footnote{Also defined in the {\tt graphics} style option} +command. The \verb+\gino+ command takes three parameters, thus: +\begin{description} + \item[] {\tt\bs + gino(\meta{width},\meta{height})\char`\{\meta{filename}\char`\}} +\end{description} where the \meta{width} and \meta{height} are expressed in +terms of the {\sf picture} environment's current \verb+\unitlength+, and +reserve an appropriately sized area of the page for the included image. +The \verb+GINOtoSIX+ program is documented in +appendix~\ref{appx:GINOtoSIX}. + +\begin{figure}[btp] +\iffulldoc\centerline{\largeVis550{\ifrmcs TEX$BIB:\fi openclose.six}}\fi +\caption{Visual 550 Screen Dump printed by the {\tt\bs largeVis550} +Command}\label{fig:large-six} +\end{figure} + +\section{Files Used and Generated by DVItoLN03} +\subsection{The \DVI{} File}\label{sec:no-extension} +This file, as already explained, is generated by \LaTeX{} and contains the +commands to typeset the entire document; its device-independent +format~\cite{TUGboat-DVI} means +that it can be processed by different {\sf DVIto}\dots{} programs to permit +driving many different output devices, from VDUs and dot-matrix printers, with +lowish resolutions, through laser printers, with resolutions (usually) of 300 +dots per inch, right up to photo-typesetters, some of which have resolutions +of 5,333$\frac{1}{3}$ dots per inch! + +\subsection{The {\tt .LN3} File} +This file is generated by the {\tt DVILN03} command; the file {\it name\/} is +the same as that specified for the \DVI{} file. These \LN{} files +tend to be large (hundreds of blocks long), and there is never any point in +keeping them after printing (unless you want to print further copies +immediately\footnote{Even this is to be deprecated; photocopying is +faster, cheaper, and doesn't tie up the printer queue.}). It is a good idea, therefore, +to delete such files as soon as possible, since they can quickly consume your +disk quota; the easiest way is by specifying the {\tt /DELETE} qualifier on +the end of the {\tt TEXPRINT} command line. + +The {\tt /OUTPUT} qualifier may be used to give this output file a different +file specification; this may be used to override the default action, which +is to create the file in the current directory, with file extension `\LN{}' +and the same name as the actual \DVI{} file opened. Thus the qualifier +could be used to divert the output to a scratch disk, such as ({\tt +DISK\logsep SCRATCH:}). %%% SYSDEP + +This file starts off, as already mentioned in section~\ref{sec:font-load}, by +downloading the {\sl glyphs}\footnote{see glossary} of the necessary +characters to the LN03's font memory. The format of this part of the file +conforms to DEC standard~180~\cite{DEC:FontFileFormat}. + +\subsection{The {\tt .TYP} File} +This file is \DVItoLN's equivalent of the log file generated by \LaTeX; it +contains all the output (with some differences of format) that \DVItoLN{} +sent to your terminal (details of font loads, {\it etc\/}) and some further +information regarding the whereabouts in the file of the start of each page. +Assuming that the document prints satisfactorily, there is no point in +keeping the {\tt .TYP} file, and so it should be deleted as soon as +possible; however, if you believe that \DVItoLN{} is behaving anomalously, +please keep this file to show \contact. + +The default behaviour of \DVItoLN{} is to delete this file providing no +messages were issued; however, if any warning or error messages {\em were\/} +produced, the file will be retained automatically. The \verb+/LOG+ +qualifier may be used to ensure retention of the {\tt.TYP} file; +conversely, the {\tt/NOLOG} qualifier will {\em never\/} keep the file. + +The {\tt/LOG} qualifier may optionally take a file specification to override +part or all of the default specification for the log file; if this is used, +the file will always be retained. + +\subsubsection{The {\tt /VERBOSE} Qualifier}\cbstart +During operation, the program reports on the terminal the full specification +of all files read (the input {\tt.DVI} file and any sixel files included +through a \verb|\special| command). In addition, for each font specified, +it reports the name of the font, the magnification, and how many bytes were +downloaded to the printer for that font. Furthermore, it reports the total +number of bytes downloaded for all the fonts printed. To reassure users +that the program hasn't died if it's processing a very large input file, it +also indicates what stage of processing it's reached whilst finding the +initial starting page and determining which glyphs are imaged from each +font. + +As each page of \TeX{} output is processed, the contents of \TeX's +\verb|\count0| to \verb|\count9| registers are output between square +brackets, entirely analogously to \TeX's own behaviour. + +Some users/sites find this too much for them; by specifying +\verb|/NOVERBOSE|, either explicitly on the command line, or by removing the +line reading {\tt default} for this qualifier in the command-language +definition {\tt.CLD} file, the majority of this output can be suppressed: +only the name of the input file, the total download and individual page +number messages will be output (unless a problem is encountered). +\cbend + +\subsection{Font Files Read by DVItoLN03} +For every individual {\sl font}, no matter at what ``point size'' it is used, +\DVItoLN{} needs to read the relevant {\tt .TFM} file, which contains the +``\TeX{} Font Metrics''. This file will also have been read by \LaTeX{} when it +was processing your {\tt .TEX} source, and is read again to ensure that the +fonts have not been revised, which might otherwise lead to erroneous output. + +Furthermore, every different {\it size\/} of each separate font requires a +file describing the actual character ``rasters'', for each character's +glyph. This installation (\sitename) %%% SYSDEP +uses packed ({\tt .PK}) format font +files, which save many of the 100,000 disk blocks formerly occupied by +\TeX's libraries when {\sl expanded pixel rasters\/} in {\tt .PXL} files +were the norm; however, \DVItoLN{} is capable of using either (or both) +forms of font file. + +If your document referenced any {\sl virtual fonts\/}\footnote{see +glossary}, then \DVItoLN{} will need to read the associated {\tt.VF} +file(s)~\cite{TUGboat-VF}; the latter specifies how each character in the +font is to be imaged, which might in turn require reference to other real or +virtual fonts (or even the {\em same\/} font; virtual fonts may be +recursive!) + +\subsubsection{Directory for \TeX{} Font Metrics Files} The \TeX{} Font +Metrics files ({\tt .TFM})~\cite{TUGboat-TFM} are read by all members of the +\TeX{} family, and also by many DVI processing programs, including +\DVItoLN{} and \DVItoVDU\@. Just like these other programs, \DVItoLN{} +needs to be able to read these files; the program is told +where to look through the \verb|/TFM_DIRECTORY| qualifier. This will have +been set up as appropriate by your \TeX{} administrator, and will most +probably have the value \ifdollars \verb|TEX$FONTS|\footnote{This form goes +against {\sl Digital's\/} recommendations regarding customer-assigned +logical names, which should not contain dollar signs}\else +\verb|TEX_FONTS|\fi. %%% SYSDEP + +Ordinary users should {\bf never} have any requirement to use this qualifier +on command lines, but should you have some peculiar requirement where it is +necessary to read non-standard {\tt .TFM} files, refer to +appendix~\ref{appx:private-fonts}. + +\subsubsection{Directories for {\tt .PK} Files} Most fonts in use at +\sitename{} %%% SYSDEP +are in the packed font file format; all such files are stored here in the +directory {\tt TEX\logsep ROOT:[FONTS.PK]}; the {\sl VMS\/} logical name +{\tt TEX\logsep PK} %%% SYSDEP +has been defined to reference this directory. All magnifications of the same +font appear in this single directory; they are differentiated from each +other by the file type extension, which consists of a number followed by the +letters `{\tt PK}'---the number $N$ for any given magnification $m$ is given +by \[N=\lfloor(1.2^m\times R)+0.5\rfloor\] where $R$ is the output device's +resolution in dots per inch and $\lfloor x\rfloor$ represents the floor +operation, yielding the largest integer $|'. + This setup sequence actually is required only for + non-\TeX{} use of the printer; it defines the paper area to be used, + selects a standard (DEC monospaced) font, and designates the G0\dots G3 + character sets. None of this is strictly necessary for use by \TeX, + since \DVItoLN{} puts appropriate escape sequences into the {\tt .LN3} + file to control all these features; however, such a setup file would be + useful for formatting ordinary (non-\LaTeX) text printing on the LN03. +\end{enumerate} +It may be convenient to define other setup files such as {\tt LANDSCAPE.TXT}, +{\tt ELITE.TXT}, {\it etc\/}. + +\subsection{Defining Forms for use with LN03 Queue} +Only one form is required specifically for printing \LN{} files; other +forms may be defined for convenience when printing other files on the LN03. +At RMCS, this form is called {\tt PLOT\logsep FORM}, since it is also used to +``format'' for printing files which constitute screen dumps taken from +graphics terminals. It has been arbitrarily assigned as form number 83, and +the example below uses this name and number. Of course, such nomenclature +needs to be assigned suitably at each site by the system manager.%%% SYSDEP + +The following command would generate an appropriate form; the footnotes +detail items to which particular attention should be paid: + +{\small\begin{description}\squash + \item[\prompt] \verb|DEFINE/FORM-| + \item[\cont] + \verb|/DESCRIPTION="Portrait 66x80 without WRAP for laser printers"-| + \item[\cont] \verb|/LENGTH=66-| + \item[\cont] \verb|/MARGIN=(BOTTOM=0,LEFT=0,RIGHT=0,TOP=0)-|\footnote{No + margins around the text; these could + introduce spurious spaces, which might + even be in the middle of an escape + sequence} + \item[\cont] \verb|/STOCK=A4-|\footnote{Ensure that print jobs will + only be released to the printer when it + contains the correct paper type.} + \item[\cont] \verb|/NOTRUNCATE-|\footnote{{\tt /NOTRUNCATE/NOWRAP} to + ensure that the long character records + of the \LN{} files don't get broken up + by the symbiont} + \item[\cont] \verb|/NOWRAP-| + \item[\cont] \verb|/WIDTH=80-|\footnote{The width is still specified as + the maximum printable with the printer's + in-built fonts, in order that any flag + pages printed are of the correct width} + \item[\cont] \verb|/SETUP=(RESET,PORTRAIT)-|\footnote{Invoke the + appropriate setup files + when the form is used} + \item[\cont] {\tt\ \ \ PLOT\logsep FORM 83} +\end{description}} + +\subsection{Setting the ``Terminal's'' Physical Characteristics} +The first step, assuming that a LN03 or LN03-Plus printer has been connected +to a particular terminal port of the {\sl VAX}, is to configure that port; +at RMCS the terminal has been connected to +\verb|_TXA4:|, %%% SYSDEP +but this will obviously be installation-dependent. Therefore the examples +refer to the terminal line through the DCL symbol \verb|LASER_TERM|, this +can be equated to the real device by means of a DCL string assignment such +as the following:\begin{description} %%% SYSDEP + \item[\prompt] \verb|LASER_TERM = "_TXA4:"| +\end{description} +Therefore, we will need to issue a command somewhat like this (refer to the +footnotes for the {\it raison d'\^etre\/} behind some of these settings): +\begin{description}\squash + \item[\prompt]\verb|SET TERMINAL-| + \item[\cont] \verb|/PERMANENT-|\footnote{Note that this has to be + done to the {\sl permanent\/} characteristics} + \item[\cont] \verb|/DEVICE_TYPE=LN03-|\footnote{We set the terminal + device type, using {\tt /DEVICE\_TYPE}\@. This + should take care of things like {\tt /FORM}, + {\tt /TAB}, {\it etc}, although we can't do any + harm by mentioning these explicitly!} + \item[\cont] \verb|/FORM-| + \item[\cont] \verb|/TAB-| + \item[\cont] \verb|/SPEED=19200-|\footnote{To improve the speed at + which documents are printed, it is best if the + printer is set up to its fastest speed, + 19,200Bd} + \item[\cont] \verb|/WIDTH=255-|\footnote{Typically, {\tt .LN3} files + contain records up to about 180 characters long + (including escape sequences); therefore we don't + want the terminal driver to interrupt these, + and insert spurious CR-LF pairs, + so we set an artificially high {\tt /WIDTH} and + also ensure that the ``terminal'' is set {\tt + /NOWRAP}} + \item[\cont] \verb|/NOWRAP-| + \item[\cont] \verb|/PAGE=66-|\footnote{Other (non-{\tt.LN3}) files + printed on the device need to use only 66 lines + per page} + \item[\cont] \verb|/NOBROADCAST-|\footnote{We don't want operator + messages to terminals to get to the printer, so + set it {\tt /NOBROADCAST}} + \item[\cont] \verb|/NOMODEM-| + \item[\cont] \verb|/NOHANGUP-| + \item[\cont] \verb|/NOECHO-|\footnote{Any input from the printer + (possible error status reports) should {\bf + not} be echoed back to it, so set the terminal + {\tt /NOECHO}} + \item[\cont] \verb|/DMA-| + \item[\cont] \verb| 'LASER_TERM'| +\end{description} + +Most probably we would arrange for these operations to be performed whenever +the {\sl VAX\/} is booted, by including the commands in [a command procedure +which is invoked from within] \verb|SYS$MANAGER:SYSTARTUP_V5.COM| + +Now that we've set the characteristics of the terminal line connected to the +LN03 we need to associate it with a print queue (for transparent spooling, +{\it e.g.\/} if someone types the command \verb|COPY filename _TXA4:|); in +this example, we're configuring the queue {\tt SEES\logsep LASER}, using device +\verb|SYS$SYSDEVICE:| for spooling:-- + +\begin{description}\small +\item[\prompt] +{\tt SET DEVICE/SPOOLED=(SEES\logsep LASER,SYS\$SYSDEVICE) 'LASER\_TERM'} +\end{description} + +Finally, we are ready to create and start the printer queue; we associate the +appropriate ({\tt PLOT\logsep FORM}) default form with the queue, for use with +transparent spooling printing, and arrange for the appropriate setup file to +be used to clear the queue between each job:-- +\begin{description}\small\squash +\item[\prompt]\verb|INITIALIZE/QUEUE-| + \item[\cont] \verb|/NOENABLE_GENERIC-| + \item[\cont] \verb|/NOBATCH-| + \item[\cont] {\tt /FORM=PLOT\logsep FORM-} + \item[\cont] \verb|/NORETAIN-| + \item[\cont] \verb|/LIBRARY=LN03CTL-| + \item[\cont] \verb|/SCHEDULE=NOSIZE-| + \item[\cont] + \verb|/SEPARATE=(NOBURST,FLAG=ONE,NOTRAILER,RESET=(PORTRAIT))-|% + \footnote{Note that the {\tt RESET} module is not specified here; if + it were, the symbiont would insert a spurious blank page after each + job} + \item[\cont] \verb|/START-| + \item[\cont] {\tt /DEFAULT=(NOFEED,NOFLAG,FORM=PLOT\logsep FORM)-} + \item[\cont] \verb|/ON='LASER_TERM'-| + \item[\cont] \verb|/RECORD_BLOCKING-| + \item[\cont] {\tt\ \ \ SEES\logsep LASER} +\end{description} + +\newpage +\section{{\tt DVILN03} Command Qualifiers}\label{sec:qualifiers} +As already described, the {\tt DVILN03} command takes \cbstart nineteen +\cbend +qualifiers; their functions are as follows:\begin{description} + \item[\tt /STARTING\_PAGE=\meta{page\_string}] Takes a string-valued + item which specifies the number of the first page to be processed. + The format of this string may be defined, using BNF notation, as + follows: + \begin{itemize} + \item[] \meta{page\_string} ::= \meta{string\_item} $|$ + \meta{page\_string}{\tt.}\meta{string\_item} + \item[] \meta{string\_item} ::= {\tt*} $|$ \meta{integer} + \end{itemize} + The default is `{\tt *}', which matches any page number, and hence + will commence by processing the first page in the file. Each + successive \meta{string\_item} is used to attempt matches with each + succeeding one of \TeX's counters \verb|\count0| \dots + \verb|\count9|; the first of these is by convention used for the + page number. Successive counters may be used for special effects, + for example, to start printing at the first page whose + \verb+\count0+ is 3 and \verb+\count3+ is 6, one could use + \verb+/STARTING_PAGE=3.*.*.6+. + \item[\tt /NUMBER\_OF\_PAGES=\meta{positive\_integer}] Takes a value + which indicates the total number of pages to be printed, including + the \verb|STARTING_PAGE|\@. The default value (of {\tt 10000000}) + is normally large enough to print the whole of a document! + \item[\tt /TOP\_MARGIN=\meta{dimension}] Specifies how far down + from the top edge of the paper the reference point is to be placed. + The value may be given in any of \TeX's \meta{physical unit}s ({\tt + pt sp pc in cm mm dd cc}), with the addition of {\tt mi} and {\tt + px}, and the default value (of {\tt 300px}) places the reference + point at the conventional one inch from the top edge. + \item[\tt /LEFT\_MARGIN=\meta{dimension}] Specifies how far across from + the left edge of the paper the reference point is to be placed. + The value may again be given in any \meta{physical unit}, and the + default value (of {\tt 300px}) places the reference point at the + conventional one inch from the left edge. + \item[\tt /ORIENTATION] Takes the values {\tt PORTRAIT} or {\tt + LANDSCAPE} and specifies in which orientation the {\tt .LN3} file is + to initialize the LN03. Unless you have taken measures to change + \LaTeX's assumptions about the paper size (by changing such page + layout parameters as \verb+\textheight+), use of + \verb|/ORIENTATION=LANDSCAPE| will lead to text overflowing the page. + \item[{\tt/\rm[\tt NO\rm]\tt LOG}] Ordinarily, \DVItoLN{} will delete + the log file ({\tt .TYP}) provided no anomalies of any form were + detected. However, if the program issued {\em any\/} error or + warning messages, the file will be retained for later perusal. By + specifying {\tt/LOG}, we can force the program always to retain the + file, whilst {\tt/NOLOG} will always discard the file, even if + errors/warnings were issued. + + Optionally, the {\tt/LOG} qualifier can take a value, which can be a + complete or partial file specification to override the defaults + which normally apply to this file. For example, + \begin{description} + \item[\prompt] \verb|DVIL/LOG=.DVI_LOG xx| + \end{description} + would + create the log file as \verb+XX.DVI_LOG+, in the current directory, + instead of as \verb+XX.TYP+. Even if there were no errors, the log + file would be retained after \DVItoLN{} had finished its + processing. + \item[{\tt/\rm[\tt NO\rm]\tt VERBOSE}] \cbstart If \verb|/NOVERBOSE| is + specified, messages indicating progress during the initial scans of + the input file are suppressed, as are those showing the sizes of + individual fonts downloaded, and any sixel files read by a + \verb|\special| command.\cbend + \item[\tt /OUTPUT] This qualifier, if used, must specify a partial or + complete file specification to override the defaults for the \LN{} + file; for example\begin{description} + \item[\prompt] \verb|DVIL/OUTPUT=WORK$DIR:SILK_PURSE SOWS_EAR| + \end{description} + would direct the output to \verb+SILK_PURSE.LN3+ in + directory \verb+WORK$DIR:+ (whatever that might be) instead of to + \verb+SOWS_EAR.LN3+ in the current directory. + \item[\tt /DEVICE\_TYPE=\meta{device name}] Specifies the type of + printer on which the output file is intended to be printed; at + \sitename, the default value for this qualifier is + \verb|LN03|. %%% SYSDEP + Other possible values are \verb|LN05| and \verb|LN06|; certain other + combinations of the next three qualifiers may only be specified in + association with suitable values for this qualifier. + \item[\tt/PRINT\_MODE=(\meta{modelist})] Specifies whether the printer + shall print \verb|SIMPLEX| (one side of paper only) or + \verb|DUPLEX| (on both sides of the paper: with the LN03 + and LN05 printers, \verb|DUPLEX| may only be specified in + conjunction with the \verb|MASTER| mode.) For duplex printing, the + user may in addition specify whether the reverse side of each sheet + shall be printed ``right way up'' (\verb|NORMAL|) or ``upside-down'' + (\verb|TUMBLED|); tumbled output can be useful for generating a + document that's intended to be bound along its short edge (in + portrait orientation). + + The \verb|MASTER| mode is only of use in conjunction with + \verb|DUPLEX|; it causes blank pages to be generated when necessary, + but all output appears printed on one side of the paper only---since + blank pages are interspersed as necessary, the resultant output may + be readily photocopied into a double-sided document. + + To specify more than one mode with this qualifier, enclose a list of + modes, separated by commas, within parentheses; for example: + \begin{itemize} + \item[]\verb|/PRINT_MODE=(DUPLEX,NORMAL,MASTER)| + \end{itemize} + + \item[{\tt /\rm[\tt NO\rm]\tt DUPLEX\_BY\_PAGE\_NUMBERS}] This qualifier + is present by default, but only has any effect when \verb|DUPLEX| is + specified within the \verb|PRINT_MODE| qualifier list; it causes a + blank page to be + ejected whenever two even-numbered pages follow each other, and also + when two odd-numbered pages follow each other; thus odd-numbered + pages always appear on the front of a printed sheet, and even-% + numbered ones on the reverse. Printers (the people, not the + machines!) refer to such pages as {\it recto\/} and {\it verso}, + respectively, since the odd pages appear on the right, and the even + ones on their reverse (the left). Note that page~0 is treated, + exceptionally, as an odd-numbered page, so that it will appear on + the right, since such pages often form the title or cover page of a + document. + + Note that specifying \verb|/NODUPLEX_BY_PAGE_NUMBERS| causes both + sides of every sheet (except, possibly, the last) to be printed; no + blank pages will be interspersed. + + \item[\tt/FEED\_TRAY=(\meta{traylist})] With the LN06, it is possible + to specify from which of its feed trays paper shall be fed; such + specifications may apply to all the sheets printed, or the first + sheet may be specified to be taken from a different source compared + with that used for the subsequent sheets. The syntax requires + either one entry, {\tt ALL=\meta{traytype}}, or either + {\tt FIRST=\meta{traytype}} and/or {\tt REST=\meta{traytype}}: the + \meta{traytype}s can be any one of: + \begin{itemize} + \item \verb|DEFAULT_TRAY|, + \item \verb|TOP_TRAY|, + \item \verb|BOTTOM_TRAY|, + \item \verb|ENVELOPE_TRAY|, + \item \verb|MANUAL_FEED| + \end{itemize} + + \noindent{\sl Example:\/} + \verb|/FEED_TRAY=(FIRST=TOP_TRAY,REST=BOTTOM_TRAY)| + + The values \verb|TOP_TRAY| and \verb|MANUAL_FEED| may be specified + when using the LN05 (DEClaser~2100) printer; the program doesn't yet + support the optional 1000-sheet capacity tray that may be fitted to + the LN05 and LN06 (mainly because the author hasn't discovered how + to address it!) + + Tray selection is not supported, of course, on the original LN03 + printer. + + \item[\tt/HFUZZ=\meta{dimension}] Control the distance by which text + must exceed the right margin (as defined by \TeX{} in the \DVI{} + file) before \DVItoLN{} complains that `{\tt Page wider than TeX + reported by $x$pt}'. + + When \TeX{} generates a \DVI{} file, it + includes in that file information regarding the maximum width and + depth of the pages created: when \DVItoLN{} processes the \DVI{} + file, it will produce (and it always has produced) warning messages + if any characters exceed these limits. Ordinarily, such excursions + ``beyond the margins'' will not occur (at least, not without \TeX{} + having issued an `{\tt overfull \bs.box}' warning itself), but some + macro packages {\em do\/} permit \TeX{} to exceed the + boundaries\footnote{For example, the output of {\sc Weave}, when + formatted by the {\tt webmac} macros, permits lines of formatted + {\sc Pascal} code to exceed the right-hand margin by up to 10pt.}. + + By using this qualifier with some suitable dimension, such messages + can be suppressed; however, you should only use this if you truly + are being overloaded by such messages, since the default is intended + to inform you that \TeX{} didn't do a good job of the setting, and + there really {\em will\/} be something sticking out into the margin. + + The default value ({\tt100sp}) corresponds to that formerly + `hard-wired' into the program: this is an invisibly small distance, + approximately equivalent to the wavelength of visible light(!) but + is large enough to absorb any rounding errors that may have + occurred. + + \item[\tt/VFUZZ=\meta{dimension}] This is analogous to the \verb+/HFUZZ+ + qualifier above, but takes care of those occasions on which \TeX{} + has set text below the bottom of the area that it has notified as + being the maximum depth of the page; the related warning message + from \DVItoLN{} is `{\tt Page deeper than TeX reported by + $y$pt}'. The author has never found any circumstances under which + \TeX{} does this, but the qualifier is available for anyone who does + suffer from this warning! Once again, the default value for the + qualifier is {\tt100sp}. + + \item[]{\sl The following qualifiers should never need to be used by + ordinary users; the information below is mainly intended to help system + managers:} + + \item[\tt /PK\_FONT\_DIRECTORY] This must specify a directory (or + directory tree) in which the packed pixel files (if used) are to be + found. Directory trees are indicated by having `{\tt.]}' as the + last two characters of the ``directory'' specification. A logical + name may be given for this qualifier, provided it resolves to an + appropriate directory specification; do remember to include a + terminating `{\tt:}', because the qualifier itself is used verbatim + as a prefix to the file specification for each font file. If a + multi-valued logical name is used, the equivalence strings must {\em + all\/} reference single directories, or must {\em all\/} reference + directory trees; only the first equivalence string is examined to + determine whether a flat or tree structure is being used. The {\tt + DVITOLN03.CLD} command definition file provided has the default + value {\tt TEX\logsep PK:} for this qualifier. + \item[\tt /PXL\_FONT\_DIRECTORY] This specifies the directory (or + directory tree) in which unpacked pixel raster files may be found, + if used. The same rules regarding use of logical names apply here + as to the previous qualifier. The {\tt.CLD} file provided gives + this a default value of {\tt TEX\logsep PXL\_ROOT:}. + \item[\tt /TFM\_DIRECTORY] + This specifies the directory (or directories) + in which the \TeX{} Font Metrics (\TFM) are to be found by the + program. The distributed version of the {\tt DVITOLN03.CLD} file + has {\tt TEX\logsep FONTS:} as the default value for this qualifier. + \item[\tt /VIRTUAL\_DIRECTORY] This specifies the directory (or + directories) in which Virtual Font ({\tt.VF}) files are to be found + by the program. The distributed version of the {\tt DVITOLN03.CLD} + file has {\tt TEX\logsep FONTS:} as the default value for this + qualifier, thus placing {\tt.VF} files in the same directory as the + \TFM{} files. If virtual fonts are not in use, remove the line + `\verb|default,|' from the definition of this qualifier. + \item[\tt/PAPER\_SIZE] \cbstart This qualifier must have one of the + values (defined in the \verb|PAPER_TYPES| section of the {\tt.CLD} + file) specified as default. The value ({\tt A4} or {\tt US}) should + reflect the setting of the paper size switch at the rear of the + printer. As might be expected, the values prepare the program to + use European ($210\times297$mm) or US Letter ($8\frac12\times11$in) + paper, respectively.\cbend +\end{description} + +\chapend +\section{How to use your own Fonts with \TeX\ and +DVItoLN03}\label{appx:private-fonts} +Ordinary users should {\bf never} have any requirement to use the qualifiers +that select the location of the \TFM\ or pixel raster files; exceptionally, +however, if you need to use a special font that doesn't otherwise exist in +the standard directories, these qualifiers can be used, in conjunction with +process logical names, to permit access to the user's own font(s) as well as +the standard ones. + +First of all, both \TeX{} itself and \DVItoLN{} will require access to the +\TeX{} Font Metrics; as already described, these normally reside in a +directory to which the logical name {\tt TEX\logsep FONTS} +refers; one could, of course, simply redefine this +logical name to point to the new fonts, but then neither \TeX{} nor +\DVItoLN{} would be able to locate the {\em standard\/} fonts. So one might +define what {\sl Digital\/} call a search-list (but the author prefers to +call a multi-valued logical name), like this: +\begin{description} + \item[\prompt] {\tt DEFINE MY\_FONTS [MY\_DIR.TFM],TEX\logsep FONTS} +\end{description} +Then to run \LaTeX, one would have to say: +\begin{description} + \item[\prompt] \verb|LATEX/FONT_DIRECTORY=MY_FONTS: MY_FILE|\footnote{Note + the `{\tt:}' after the logical name; whatever is + provided as the value for the + {\tt/FONT\_DIRECTORY} qualifier must legally be + capable of being prefixed to a file + specification} +\end{description} +This will allow \LaTeX{} to access both the standard and your own fonts; +since your fonts precede the standard ones in the search list, \TFM{} files +will be taken from your directory in preference to any of the same name that +might already be in the standard location. + +To run \DVItoLN, it must have access not only to the \TFM{} files, but also +to the pixel raster files (either packed or unpacked). Whichever file +directory organization has been chosen for these (and packed and unpacked +rasters can utilize different organizations), the pixel files for your +private fonts {\em must\/} have the same organization. Therefore, if you +have only packed pixel files, and the standard fonts are arranged in a flat +directory, referenced by the logical {\tt TEX\logsep PK}, +you might make the following definition: +\begin{description} + \item[\prompt] {\tt DEFINE MY\_PK\_FILES [MY\_DIR.FONTS.PK],TEX\logsep PK} +\end{description} + +Alternatively, or additionally, if you have unpacked pixel rasters in a +rooted directory structure, the following definition might suffice, assuming +that the standard fonts are accessible through +{\tt TEX\logsep PXL\_ROOT}: +\begin{description} + \item[\prompt] + {\tt DEFINE MY\_PXL\_FILES [MY\_DIR.FONTS.PXL.],TEX\logsep PXL\_ROOT} +\end{description} + +Then to run \DVItoLN, providing it with access to the \TFM{} and pixel files +of both your own and the standard fonts, it would be necessary to invoke the +program like this: +\begin{description}\squash + \item[\prompt] \verb|DVILN03 /TFM_DIRECTORY=MY_FONTS:|\footnote{Again, + note that the `{\tt:}' is necessary on the user-defined + logical name so that it may be prepended to a file + specification} - + \item[\cont] \verb|/PK_FONT_DIRECTORY=MY_PK:|\footnote{And/or {\tt + /PXL\_FONT\_DIRECTORY=MY\_PXL\_FILES:}} \verb|MY_FILE| +\end{description} + +Once such a private font has been proven locally in your directory, it would +be better if you got your local \TeX nician to install the fonts along with +the standard ones (unless there are licensing restrictions applicable to the +use of the non-standard fonts), since it will save the usage of all those +awkward command-line qualifiers! + +\chapend +\section{The GINOtoSIX Program}\label{appx:GINOtoSIX} +This program was written by Squadron Leader John {\sc Baggott}, who was an +M.Sc.\ student at RMCS in 1987. It is written in {\sc Fortran} and has a +full DCL command-line interface. \ifrmcs\else Any site that is interested +in acquiring a copy of the program is welcome to request it by sending an +e-mail message to the author of \DVItoLN{}, +\verb++ ({\sc Janet}).\fi + +\subsection{Preparing to use {\tt GINOtoSIX}} Before first attempting to use +the program, invoke its command definition, by executing the following +command: +\begin{description} +\item[\prompt] \tt SET COMMAND TEX\logsep EXE:GINOTOSIX %%% SYSDEP +\end{description} +(Frequent users of the utility may care to put this command into their login +command procedure.) + +\subsection{Using the {\tt GINOtoSIX} Program} +Whatever graphics are required to be converted to sixel format must firstly +be output by GINO into a pseudo-code file (using the {\tt SAVDRA} driver). +Then invoke {\tt GINOtoSIX} as follows: +\begin{description} +\item[\prompt] \tt GINOTOSIX \meta{file\_name} +\end{description} + +\subsubsection{Qualifiers applicable to {\tt GINOtoSIX}} +The utility can take a number of optional qualifiers, as under: + +\begin{description} +\item[\tt/SIZE=(\meta{option,\dots})] Specifies the area, in millimetres, of +the sixel image. If this qualifier is not used, the default action is to +copy the window size (or the paper size if windowing is not in effect) of +the saved picture segment. + +Options are as follows: + \begin{description} + \item[\tt WIDTH:\meta{number}] Specifies the width in mm of the sixel + image; defaults to the saved width. + \item[\tt HEIGHT:\meta{number}] Specifies the height in mm of the sixel + image; defaults to the saved height. + \end{description} + +If only one option is specified, the parentheses may be omitted. + +{\bf N.B.} If this qualifier is used in conjunction with the {\tt/SCALE} +qualifier, the action is firstly to scale, then window the image. If the +{\tt/SCALE} qualifier is not used, the image is scaled to fit the size +specified. + +\item[{\tt/\rm[\tt NO\rm]\tt FORMFEED}] Instructs {\tt GINOtoSIX} to append +a form feed character to the end of the sixel file. This allows the output +to be queued directly to the LN03 printer for previewing. A formfeed must +{\bf not} be appended to sixel files that are to be imported into a \LaTeX{} +document by the \verb+\gino+ command (from the {\tt graphics} style option). + +The default is {\tt/NOFORMFEED}. +\item[\tt/SCALE=\meta{factor}] Scale the stored image by a factor; the +default factor is $1{\cdot}0$. +\item[\tt/SEGMENT=\meta{integer}] Specifies which picture segment in the +{\tt SAVDRA} file is to be used for producing the image, the default is +$0$. If this qualifier is not used, the maximum record length for the input +file is used. +\item[\tt/OUTPUT=\meta{file\_spec}] Controls where the output file will be +written; \meta{file\_spec} may be a full or partial specification; if not +specified, the file name will be that of the input file, and its extension +will be {\tt.SIX}. +\end{description} + +\subsection{Examples of the use of {\tt GINOtoSIX}} +\begin{enumerate} +\item \begin{description}\squash + \item[\prompt] \verb+GINOTOSIX FRED+ + \end{description} + The program will read the file {\tt FRED.PIC}, and produce a file {\tt + FRED.SIX} from segment 0. The size of the sixel image will be the + same as the saved picture. +\item \begin{description}\squash + \item[\prompt] \verb+GINOTOSIX/SCALE=0.5-+ + \item[\cont] \verb+ /OUTPUT=DISK$SCRATCH:[FRED]GRAPH.INC FRED.GNO+ + \end{description} + Read a {\tt SAVDRA} from file {\tt FRED.GNO}, and produce a half-sized + image in the file specified. +\item \begin{description}\squash + \item[\prompt] \verb+GINOTOSIX/SIZE=(WIDTH:150,HEIGHT:100) FRED-+ + \item[\cont] \verb+ /SEGMENT=1/FORMFEED+ + \end{description} + Reads segment 1 of {\tt FRED.PIC}, and scale the image uniformly to + fit in a box 150mm wide and 100mm high. A formfeed will be appended + to permit the image to be previewed by printing the output file, {\tt + FRED.SIX}. +\end{enumerate} + + +\chapend\begingroup +\catcode`\|=\active{\catcode`\_=\active +\gdef|{\bgroup\catcode`\_=\active + \let_=\_\def\\##1|{{\it##1\/}\egroup}\\}} +\section{Error and Warning Messages} +This chapter describes all the various informational, warning, error and +fatal error messages that \DVItoLN{} can issue. Most messages attempt to be +self-explanatory, but this section gives full details of the conditions +under which the error can be issued, and may therefore help the user in +discovering why \DVItoLN{} is unable to process his/her \DVI{} file. + +\subsection{Fatal Errors} +The following errors indicate that \DVItoLN{} is unable to proceed further +with processing your \DVI{} file; where possible, methods are suggested to +allow you to circumvent the problem. All such error messages commence with +the text `{\tt Fatal Error:}'\footnote{Simple, isn't it!} which precedes +the texts listed below. +If such an error occurs, \DVItoLN{} +will exit immediately, and the program's exit status will set the DCL symbol +\verb+$SEVERITY+ to $4$, thus indicating a \verb+SEVERE_ERROR+. + +\subsubsection{Capacity Exceeded Errors} +When \DVItoLN{} is presented with input that results in it using up all of +some particular internal data structure, it is unable to go on! All these +errors commence with the text `{\tt Fatal Error: capacity exceeded:}'. +One possible solution is to recompile \DVItoLN, using a larger value for +the appropriate parameter noted below. If you find that this is necessary +at your site, please inform the author of \DVItoLN, who may be contacted by +electronic mail as \ifrmcs{\tt N::TEX}\else\verb|| +({\sc Janet})\fi. However, sometimes it is possible to proceed by using the +\verb|/STARTING_PAGE| and \verb|/NUMBER_OF_PAGES| qualifiers to +process the \DVI{} file in two or more smaller portions, which {\em don't\/} +exceed the program's limits. + +\begin{description} + \item[\tt font file name too long (max length=$x$)] --- You've had it! The + limit, $x$, set at $255$ by the \Web\ constant |name_length|, + is already at the maximum permitted by VAX/RMS. + \item[\tt stack size=$x$] --- \DVI{} files can contain |push| and |pop| + commands; \TeX{} reports in the file the maximum number of |push|es + that it uses, but the program has an overall limit of $x$, set to $100$ + through the \Web\ constant |stack_size|; if this value is exceeded, it's + most probably due to some \meta{dvi byte} sequence running amok in a + virtual font, since \TeX{} would be very hard-pressed to issue that many + |push|es. + \item[\tt too many blank verso pages] --- When printing in duplex mode, with + the printer ``printing'' a blank side whenever two successive odd or + even pages occur, the \DVItoLN{} program has to identify all such + transitions before printing commences. The current maximum is set by + the \Web\ macro |max_blank_pages|, which has a value of $100$. One + solution which doesn't necessitate recompiling the program is to + reorganize your document so that there are fewer chapters which + require an odd number of pages! + \item[\tt too many glyphs $n$ > $x$] --- The total characters, $n$, in all + the fonts referenced within your document exceeds the storage available, + $x$. The latter quantity is set by the constant |max_glyphs| + in the \Web, and currently has the value $10000$. It is unlikely + that such a document could be printed, unless only a small percentage of + those glyphs were actually {\em used\/} in the document, because the + downloaded fonts would most probably exceed the memory available on the + printer. + \item[\tt too many fonts (max fonts=$x$)] --- Your document loads more than + $x$ different fonts. $x$ is set by the \Web{} constant + |max_fonts|, and currently is set to $100$. + \item[\tt too many LN03 fonts] --- You've had it! The LN03-plus is + physically unable to image glyphs from more than |max_lnfonts|$+1 (= 14)$, + so the ``solution'' is to process your document in sections, such that + no section invokes so many glyphs that this limit is exceeded. However, + even the \TeX book and \MF book don't require this many fonts, so you've + got a very convoluted document: should you perhaps speak to a + typographic designer? + \item[\tt too many names (name size=$x$)] --- The names of all the fonts + used in your document exceed $x$ characters in total; $x$ is set by the + \Web\ constant |max_names|, and is currently set to $1000$. + \item[\tt too many virtual characters] --- Characters taken from a virtual + font that require more than simple imaging of a single character from some + real font result in the whole of the character's sequence of \meta{dvi + byte}s being stored in memory. If your document makes very intensive + use of virtual fonts, it may be necessary to increase |vf_size| from its + present value of $10000$ +\end{description} + +\subsubsection{Bad \DVI{} File Errors} +If \DVItoLN{} encounters a malformed \DVI\ file that prevents it from making +any sort of valiant attempt at processing it, the program aborts with an +error message that starts `{\tt Fatal error: Bad DVI file}'; the remainder +of these messages are listed below. This is indicative of a serious error +in the \DVI{} file; if you didn't generate it yourself, using \TeX, perhaps +it was corrupted in the process of reaching your machine. Whilst \DVItoLN{} +will attempt to explain what's wrong with the file, the tool to be used at +this point is {\sf DVItype}: type the command +\begin{description} +\item[\prompt] \verb|DVITYPE| +\end{description} +and follow the prompts to generate a printable analysis of the offending +file. + +\pagebreak[3] +\begin{description} + \item[\tt all 223s] --- A \DVI{} file is supposed to finish with at least 4 + characters having the value $223$; your file appeared to consist of + nothing but this character! + \item[\tt byte $m$ is not bop] --- \DVItoLN{} expected to find a |bop| + command at this point in the \DVI{} file, since it was all ready to + start processing a new page. $m$ indicates the byte number within the + file. + \item[\tt byte $m$ is not post] --- \DVItoLN{} expected to find the start of + the postamble at the indicated location in the file. + \item[\tt denominator is $d$] --- \TeX{} reports in the \DVI{} file the + actual size of the `DVI units' used therein; in fact, they are always + {\tt1sp} in \TeX{} output, although it would be feasible for other + programs that generate \DVI{} files to select a different unit. \TeX{} + reports the actual unit by means of a pair of integers, which, treated + as a rational number, will convert `DVI units' to decimicrons + ($0{\cdot}1\mu\hbox{m}=10^{-7}\hbox{m}$). Thus the value given to the + denominator by \TeX{} is usually $7227\cdot2^{16} = 473628672$, because + there are $2^{16}$ scaled points in a point, and there are $7227$ points + in 100 inches. The numerator is then $25400000 \equiv 254\hbox{\tt cm} = + 100\hbox{\tt in}$. This error message will be issued if the denominator + is negative. + \item[\tt first byte isn't start of preamble] --- The \DVI{} file is + expected to start with the |pre| command, indicating the start of the + preamble. + \item[\tt ID byte is $k$] --- The second byte of the \DVI{} file indicates + which version of DVI is in use; this program supports only version $2$. + \item[\tt magnification is $m$] --- The \DVI{} file reports whatever + \verb+\magnification+ may have been specified to \TeX; the given value + is negative! + \item[\tt no 223s] --- As mentioned above (see `{\tt all 223s}'), the + postamble is followed by a sequence of at least four bytes having the + value $223$; but this \DVI{} file didn't! + \item[\tt numerator is $n$] --- See `{\tt denominator is $d$}' above. + \item[\tt only $n$ bytes long] --- The \DVI{} file wasn't long enough to + have contained a valid preamble and postamble, let alone any useful + information! + \item[\tt page ended unexpectedly] --- A page being processed finished + without an explicit |eop| command, and is corrupt. + \item[\tt page link $p$ after byte $q$] --- The start of a page was + indicated as being so close after the start of the previous one that + there were insufficient bytes to contain the necessary bytes that are + required to follow the |bop| code. + \item[\tt post pointer $q$ at byte $m$] --- Just after the postamble the + address of the postamble itself is supposed to be stored: in the given + \DVI{} file, this pointed {\em outside\/} the file! + \item[\tt signature in byte $n$ should be 223] --- The {\em whole file\/} + (after the end of the postamble) is supposed to be filled with the $223$ + bytes mentioned above; this file started off correctly, but then + degenerated into something else! + \item[\tt the file ended prematurely] --- Whilst processing a page, + \DVItoLN{} detected the end of the \DVI{} file. +\end{description} + +\subsubsection{Internal Errors} +These are those errors that fall into the category of ``this can't happen''. +The error message commences with `{\tt Fatal Error: Internal error}'. Such +errors reveal some sort of coding error: if you ever see one of these +errors, please contact the author, Brian {\sc Hamilton Kelly}, providing as +much information as is necessary for him to reproduce the fault; this should +include either the \TeX\ source, together with any non-standard style files, +or the actual \DVI{} file being processed --- the latter can be encoded with +{\sf VVencode}~\cite{RMCS:VVcode} for transmission by e-mail. + +Reports should be sent to \ifrmcs{\tt N::TEX}\else + {\tt \sc(Janet)}\fi. + +\begin{description} + \item[\tt (no dvi\_length)] --- Program couldn't determine the + actual length of the \DVI{} file. + \item[\tt (word at odd byte $n$)] --- Words written into the + downloaded font `file' must start at an even byte in the file. + \item[\tt (longword at odd byte $n$)] --- Longwords written + into the downloaded font `file' must start at an even byte in the file. + \item[\tt (empty font)] --- An internal procedure has been + asked to load an unused font to the printer. + \item[\tt (-ve delta x)] --- A forward displacement in an + output line has somehow managed to become a backwards one, despite + sorting the list into non-overlapping segments! + \item[\tt (String pool overflow)] --- More \verb+\special+ + strings are defined at program initialization than the program has room + for. +\end{description} + +\subsubsection{Other Fatal Errors} +Certain other conditions can cause \DVItoLN{} to abandon hope; these just +commence with `{\tt Fatal Error:}' + +\begin{description} + {\sloppy\item[{\tt Bad /PK\_FONT\_DIRECTORY qualifier; doesn't end with + a `]'}] --- The \linebreak[4] value provided for the + \verb+/PK_FONT_DIRECTORY+ qualifier, after applying logical name + translation, must end with a `{\tt]}' character; check what value is + being used with this qualifier.} + \item[{\tt Bad /PXL\_FONT\_DIRECTORY qualifier; doesn't end with + a `]'}] \hfil --- \linebreak[4] The value provided for the + \verb+/PXL_FONT_DIRECTORY+ qualifier, after applying logical name + translation, must end with a `{\tt]}' character; check what value is + being used with this qualifier. + {\sloppy\item[\tt Bad /\meta{qualifier} value] --- The value provided + with the indicated qualifier does not form a valid integer.} + {\sloppy\item[\tt Bad pk file---more bits than required] --- The packed + pixel file currently being read (as shown by the preceding `{\tt Font + \meta{fontname}}') provides more bits for a character packet than + indicated in the character's preamble.} + Replace the offending font; use {\sf PKtype} to analyze the pixel file. + \item[\tt Bad pk file! Bad packet length] --- The packed pixel file + contains a character packet of an illegal length. + Replace the offending font. + \item[\tt Bad pk file, pre command missing] --- The packed + pixel file doesn't \linebreak[4] commence with the requisite |pre| command. + Replace the offending font. + \item[\tt Bad pk file; unexpected byte: $p$] --- Whilst reading a packed + pixel file, the byte value $p$ was met: this was invalid in the current + context. + Replace the offending font. + \item[\tt Bad pk file, wrong version] --- The packed pixel file is of a + software version incompatible with the \DVItoLN{} program. + Replace the offending font. + \item[\tt Couldn't create \meta{filename}] --- \DVItoLN{} was + unable to create the file indicated: check that you have write access to + the current default directory, or that designated by the \verb+/OUTPUT+ + qualifier. + {\sloppy\item[\tt Couldn't open \meta{filename}. Status=\meta{VMS\_Error}] + --- When \DVItoLN{} attempted to open the indicated file (for + reading), it failed: the VMS-style error was reported by the run-time + system. Perhaps the file's organization is incompatible with the type + expected by the program, which generally expects text files to be + variable-length, with carriage-return carriage control, and binary files + to consist of 512-byte fixed-length blocks.} + {\sloppy\item[\tt Font not loaded, TFM file \meta{filename} can't be opened] + ---\DVItoLN{} \linebreak[4] was unable to locate the indicated \TFM{} file: + it must be on your system somewhere, otherwise \TeX{} would have failed + too!} + \item[\tt no more virtual font bytes] --- Whilst processing a glyph taken + from a virtual font, the program used up all the stored characters: + really this should be classed as an internal error, and reported to the + author. + \item[\tt Font not loaded, bad scale ($s$)] --- The \TFM{} file indicated + that the font was scaled to an impossibly high value, or negatively. + Use {\sf TFtoPL} to analyze the \TFM{} file. + \item[\tt Font not loaded, bad design size ($d$)] --- The \TFM{} file + indicated that the font's design size was negative or an impossibly + large value. + Use {\sf TFtoPL} to analyze the \TFM{} file. + \item[\tt No device type specified] --- No default value was provided for + the qualifier \verb+/DEVICE_TYPE+. Specify an explicit value, and get your + \TeX nician to modify the {\tt DVITOLN03.CLD} file to reflect the local + environment. + \item[\tt No file name provided] --- You'd have been extremely sneaky to get + this error; you've managed to bypass DCL's check that a filename be + specified to be processed by the program! Be more sensible! + {\sloppy\item[\tt ---not loaded, bad TFM file] --- The \TFM{} file + didn't specify a valid \linebreak[4] range of characters as being + resident in the font. Use {\sf TFtoPL} to analyze the \TFM{} file.} + \item[\tt PXL file has bad format] --- The unpacked pixel raster file didn't + contain a character directory in the last 517 words. + Replace the font, or better, change to using the {\tt.PK} equivalent. + \item[\tt starting page number could not be found] --- The starting page + (specified with the \verb+/STARTING_PAGE+ qualifier) does not match any + page in the \DVI{} file. + {\sloppy\item[\tt (VF file) Character \meta{char\_num} does not exist] + \hfil --- The specified character has been used in the document, but + that character does not exist within the virtual font. Use {\sf VFtoVP} + to analyze the file.} + {\sloppy\item[\tt (VF file) contains illegal command in character packet] + \hfil --- The \linebreak[4] virtual font file contains an illegal command + within a character packet. Use {\sf VFtoVP} to analyze the font file.} + \item[\tt (VF file) First byte isn't `pre'] --- Virtual font files are + expected to commence with a |pre| command; this file doesn't. + Use {\sf VFtoVP} to analyze the file. + {\sloppy\item[\tt (VF file) Illegal byte $x$ at start of character packet] + \hfil --- The \linebreak[4] virtual font file contains an illegal + command or font mapping command within or after one or more character + packets. Use {\sf VFtoVP} to analyze the font file.} + \item[\tt (VF file) invokes unmapped font $f$] --- The virtual font file + references a font which it hasn't mapped; use {\sf VFtoVP}. + \item[\tt (VF file) References too many fonts] --- The virtual font file + at\-tempt\-ed to map more actual fonts than \DVItoLN{} was capable of + handling; the font is probably infinitely recursive. + Use {\sf VFtoVP} to analyze the file. + \item[\tt (VF file) Mapped font size is too big] --- The virtual font + references an actual font and the size of the latter, and the scale at + which it is invoked, exceeds the legal limits for a virtual font. + Use {\sf VFtoVP} to analyze the file. + \item[\tt (VF file) Negative packet length] --- The virtual font file is + malformed. + Use {\sf VFtoVP} to analyze the file. + {\sloppy\item[\tt (VF file) Wrong version number in second byte] --- + The virtual font file is of a version not supported by \DVItoLN. Use + {\sf VFtoVP} to analyze the file.} + \item[\tt {VF packet failed [\meta{font\_number},\meta{char\_num}]}] + --- Whilst processing \linebreak[4] stored glyphs for a complex character + taken from a virtual font, \DVItoLN{} failed to position the elements of + the glyph; this might require to be reported as for an internal error, + but firstly use {\sf VFtoVP} to analyze the file. + \item[\tt Where are the font directories? (/PK\_FONT\_DIRECTORY, + etc)] \hfil ---\linebreak[4] The command line specified neither the + \verb+/PK_FONT_DIRECTORY+ qualifier, nor \verb+/PXL_FONT_DIRECTORY+. + At least one of these qualifiers ought to be supplied with a default + value, through the command definition ({\tt DVITOLN03.CLD}) file. Speak + to your local \TeX nician. +\end{description} + +\subsection{Non-fatal Error Messages} +Should one of the following errors be detected, \DVItoLN{} will attempt to +continue with processing your \DVI{} file; however, the resultant output +file will probably not produce the expected results. When the program +finishes, the DCL symbol \verb+$SEVERITY+ will have the value $2$, thus +permitting a command procedure to detect that an error occurred. + +Suggested error recovery techniques are given, when appropriate. Once again, +the program {\sf DVItype} can provide a more detailed analysis of the +errors. + +\begin{description} + {\sloppy\item[\tt arithmetic overflow! parameter changed from $x$ to + $y$] \hfil--- When \linebreak[4] processing \meta{dvi byte}s, a command + was encountered that attempted to move the horizontal or vertical + position to somewhere with a co\"ordinate exceeding $\pm(2^{31}-1)${\tt + sp}. Since this would imply being about 38ft from the origin, perhaps + you'd be better off using {\sf DVItoAd\-vert\-ising\-Hoard\-ing}!} + \item[\tt backpointer in byte $m$ should be $p$] --- The program has + detected an inconsistency between the start of the current page and the + previous one. + \item[\tt bad postamble pointer in byte $m$] --- the word following the + |post_post| command is supposed to point back to the start of the + postamble: this one didn't! + \item[\tt bop occurred before eop] --- Whilst processing a page, a |bop| + command was detected before finding the |eop| that should have + terminated the current page. + \item[\tt byte $m$ is not postpost] --- The byte following the end of + the postamble is not the anticipated |post_post| command. + {\sloppy\item[\tt character $c$ invalid in font \meta{name}] --- The + \DVI{} file has requested that character $c$ be imaged from the + currently selected font, and yet the font doesn't contain any such + character; something might be printed, but it's anybody's guess as to + what!} + {\sloppy\item[\tt Couldn't open \bs special inclusion: \meta{file}] --- + The \DVI{} file contained a \verb+\special{ln03:sixel +% + \meta{file}\verb+}+ command, but the program was unable to open the + specified file. The VMS-style error report associated with this message + might indicate why the file couldn't be opened.} + \item[\tt Diagonal rule in \bs special \meta{special\_pars}] --- A + \verb+\special+ command requested the \verb+connect+ operation, + but the points specified were not in the same vertical or horizontal + line: this \verb+\special+ should only be issued by the macros of the + {\tt changebar} style option, and not by the user. + \item[\tt identification in byte $m$ should be $i$] --- The \DVI{} file + is supposed to contain the version number (currently $2$) at the + beginning and the end of the file; the byte-address $m$ indicates which + one failed. + {\sloppy\item[\tt Invalid point number in \bs special + \meta{special\_pars}] --- A \verb+\special+ command, using the {\tt + defpoint} or {\tt resetpoints} operations, specified an invalid point + number ($>|max_points|$, which is a compile-time constant in the \Web), + or the {\tt connect} operation specified a point that hadn't previously + been defined.} + \item[\tt non-ASCII character in \bs special command] --- The character + string parameter of a \verb+\special+ command includes a character not + in the {\sc Ascii} character set. + \item[\tt ---not loaded, TFM file is bad] --- When reading a \TFM{} + file, the program detected some discrepancy, which has probably already + been reported. Use {\sf TFtoPL} to analyze the file. + \item[\tt Null \bs special argument] --- A \verb+\special+ command has + an empty argument. + {\sloppy\item[\tt Point number missing] {\tt in \bs special} + \meta{special\_pars} --- A point number was expected in a + \verb+\special{ln03:defpoint}+ command.} + \item[\tt pop illegal at level zero] --- Something's wrong with the + \DVI{} file; it attempted to |pop| an environment when none had been + stacked. + {\sloppy\item[\tt postamble command within a page] --- Whilst processing + a page, \DVItoLN{} discovered a |post| command, without any prior + |eop|.} + \item[\tt preamble command within a page] --- This \DVI{} file is + {\em really\/} twisted: a |pre| command was found during a page. + \item[\tt push deeper than claimed in postamble] --- The current + environment \linebreak[4] was |push|ed more often than \TeX{} had claimed. + \item[\tt reference to an unloaded font] --- An attempt has been made to + set a character from a font which hadn't been defined within the \DVI{} + file. + \item[\tt \bs special string of negative length] --- The |xxx| command + which \TeX{} uses to pass a \verb+\special+ command in the \DVI{} file + invalidly indicated that the string was of negative length! + \item[\tt \bs special string too long] --- Just as the previous error, + but it was too large positively in this instance. + \item[\tt stack not empty at end of page (level $s$)] --- When \TeX{} + gets to the end of a page, it's supposed to ensure that all environments + that it's instructed to have been saved shall be restored; this \DVI{} + file contravenes that requirement. + \item[\tt undefined command \meta{dvi\_byte}] --- The \DVI{} file + contains a command that is undefined; are you sure it was produced by + TeX? + {\sloppy\item[\tt Unsupported or malformed \bs special + \meta{special\_pars}] --- Couldn't find a \linebreak[4] properly formed + operation code string in a \verb+\special+ command.} + \item[\tt Unsupported \bs special \meta{special\_pars}] --- A + \verb+\special+ command included an operation code, which whilst + recognized, was inappropriate in the current context. + \item[\tt VF checksum disagreed! TFM: $C_1$ VF: $C_2$] --- The sum check + found in a {\tt.VF} file when reading a virtual font disagreed with that + previously recorded in the font's \TFM{} file. + \item[\tt VF design size disagreed! TFM: $S_1$ VF: $S_2$] --- The design + size found in a {\tt.VF} file when reading a virtual font disagreed with + that previously recorded in the font's \TFM{} file. +\end{description} + +\subsection{Warning Messages} +These messages generally indicate some problem that didn't prevent +\DVItoLN{} from generating a valid output file; however, it might not print +out as you had anticipated! Provided no errors occur, the exit status of +the program will have a \verb+$SEVERITY+ of $0$, thus permitting a command +procedure to detect that warning messages were issued. + +\begin{description} + \item[\tt cannot find file \meta{file\_spec}] --- \DVItoLN{} failed to + locate the file containing the (packed or unpacked) pixel rasters; it + will proceed by substituting solid rules for each glyph. Remedy: + Install the requisite font file on your system. + {\sloppy\item[\tt Characters `\meta{text}' set off paper ( x = + $x_s$..$x_e$, y = $y$ )] \hfil --- Some \linebreak[4] portion of the + text is imaged outside that area of the paper which can be written by + the printer. The $x$ values indicate the left- and right-hand limits of + the text, whilst the $y$ value gives the vertical co\"ordinate of the + baseline; all such dimensions are given in absolute pixel positions on + the physical page. Perhaps you're printing something in landscape mode + that was formatted to be printed in portrait, or vice versa?} + \item[\tt checksum doesn't match; DVI=$C_1$ vs. TFM=$C_2$] --- When the + font definition command was found in the \DVI{} file, its sum check was + recorded; this should agree with that of the \TFM{} file itself, because + it was written using the latter value when \TeX{} processed the source. + Therefore this error indicates that you're trying to use different fonts + from those read by \TeX\@. Remedy: Replace the font, or reprocess the + source with \TeX. + \item[\tt checksum doesn't match in PK file] --- The font's sum check as + recorded in the packed pixel file disagrees with that in the \TFM{}\@. + This would suggest that the font should be rebuilt, using \MF{} and {\sf + GFtoPK}. + \item[\tt checksum doesn't match in PXL file] --- The font's sum check as + recorded in the unpacked pixel file disagrees with that in the \TFM{}\@. + This would suggest that the font should be rebuilt, using \MF{} and {\sf + GFtoPX}. + \item[\tt ---checksum doesn't match previous definition] --- Each font + definition appears twice in the \DVI{} file; the sum check recorded in + the second definition disagrees with the first --- use {\sf DVItype}. + \item[\tt denominator doesn't match the preamble] --- The denominator of + the rational number which gives the size of each DVI unit (in + decimicrons) which has been read from the postamble disagrees with that + in the preamble --- use {\sf DVItype}. + \item[\tt ---design size doesn't match previous definition] --- The + font's design size in the second definition of the font disagrees with + the first --- use {\sf DVItype}. + {\sloppy\item[\tt Discarding earlier packet for character $c$] --- Whilst + processing a \linebreak[4] virtual font file, a second definition for a + character's glyph was encountered: the first definition will be + discarded, and replaced by the last one --- use {\sf VFtoVP}.} + \item[\tt extra junk at end of the VF file] --- Some unexpected bytes + were discovered after the end of a virtual font ({\tt.VF}) file; to + prevent this error recurring, use {\sf VFtoVP} to correct the error and + rewrite the virtual font with {\sf VPtoVF}. + {\sloppy\item[\tt Font \meta{name} doesn't contain character $c$] \hfil + --- No definition was encountered for the glyph of character $c$ when + the font file's rasters were read: the character will be imaged by the + appropriate amount of whitespace.} + \item[\tt ---font name doesn't match previous definition] --- The name + of the font given in the second definition within the \DVI{} file + disagrees with the original defining occurrence --- use {\sf DVItype}. + \item[\tt magnification doesn't match the preamble] --- The + magnification reported in the postamble disagreed with that in the + preamble --- use {\sf DVItype}. + {\sloppy\item[\tt Missing or unknown unit of measure: \meta{text}] --- + A unit of measure \linebreak[4] was expected, either within a + \verb+\special+ command, or associated with one of the qualifiers + \verb+/TOP_MARGIN+, \verb+/LEFT_MARGIN+, \verb+/HFUZZ+ or \verb+/VFUZZ+. + A supplementary message will indicate what \meta{physical unit} was + assumed ({\tt pt} or {\tt sp}).} + \item[\tt more than $m$ rules on page; excess ignored] --- A page + contained too many separate rules; the program is restricted to $16384$ + by the compile-time constant |max_rules|. Perhaps something's run amok + in a \LaTeX{} {\tt picture} environment? + {\sloppy\item[\tt not enough signature bytes at end of file ($m$)] \hfil--- + \DVI{} files are \linebreak[4] supposed to end with at least four + signature ($223$) bytes --- use {\sf DVItype}.} + \item[\tt numerator doesn't match the preamble] --- The numerator of the + rational fraction given in the postamble disagrees with that previously + read from the preamble --- use {\sf DVItype}. + \item[\tt /ORIENTATION must be PORTRAIT or LANDSCAPE;] {\tt assuming + PORTRAIT} \hfil-- \linebreak[4] The \verb+/ORIENTATION+ qualifier was given + an illegal value; this should never happen, unless the command definition + file has been corrupted. + \item[\tt Page deeper than TeX reported by $y$pt] --- Characters were + positioned further down the page lower than \TeX{} had recorded in the + \DVI{} file. This isn't an error, unless accompanied by an indication + that characters were set off the paper. See description of the + \verb+/VFUZZ+ qualifier. + \item[\tt Page wider than TeX reported by $x$pt] --- Characters were + imaged beyond the right-hand margin that \TeX{} had recorded in the + \DVI{}. \cbstart This isn't an error, unless accompanied by an + indication that characters were set off the paper\cbend. See + description of the \verb+/HFUZZ+ qualifier. + {\sloppy\item[\tt Pixel width discrepancy; font ]\meta{name} {\tt char} + $c$ {\tt ---computed width: $W_c$; actual width: $W_a$} --- The width of + the indicated character, in pixels, differed from that computed from + the \TeX{} font metrics (by at least two pixels). The actual width is + always used when imaging glyphs.} + \item[\tt PK font pixels non-square] --- The {\sl aspect ratio\/} of the + characters in the packed pixel file was not 1:1 --- will probably + produce distorted glyphs, since the LN03 printer does print with square + pixels. + {\sloppy\item[\tt ---scaled size doesn't match previous definition] --- + The second \linebreak[4] definition of the font provided a different + scaled size from that in the first definition --- use {\sf DVItype}.} + \item[\tt there are really $m$ pages, not $n$] --- Although the + postamble claimed that there were $n$ pages in the document, there were + really $m$ --- use {\sf DVItype}. + \item[\tt ---this font was already defined] --- A spurious additional + font definition was encountered in the \DVI{} file --- use {\sf DVItype}. + \item[\tt ---this font wasn't loaded before] --- When reading the + postamble, a definition was encountered for a font that wasn't + previously defined in the body of the \DVI{} file --- use {\sf DVItype}. + \item[\tt VF data not a multiple of 4 bytes] --- Virtual font files + ({\tt.VF}) are supposed to be some multiple of 4 bytes long --- use {\sf + VFtoVP}. + \item[\tt VF file ended without postamble] --- Whilst reading glyph + definitions from a virtual font file, the |post| command was met + unexpectedly --- use {\sf VFtoVP}. +\end{description} + +\subsection{Informational Messages} +These are output to provide the user with an indication of the progress of +the process of translating the \DVI{} file into an {\tt.LN3} file. If no +other messages are output, you can be assured that the printed version will +accord with what \TeX{} intended to put on the paper (although this might +not be what {\em you\/} intended!) + +Provided that no warning or error messages were issued, the program's exit +status will have a \verb+$SEVERITY+ of \verb+SS$_SUCCESS+ ($1$), thus +permitting a command procedure to be confident that no warning or errors +occurred. + +\begin{description} + \item[\tt (\meta{file\_spec}\dots)] --- Whenever the \DVI{} file, or a + file specified as a graphics inclusion, is opened, a left parenthesis + and the full VAX/RMS file specification is reported on the terminal; + when the file is closed, a matching right parenthesis is displayed. + + In the log (\TYP) file, the file specifications are accompanied by + self-explanatory text. + \item[{\tt [\meta{page\_no}]}] --- As \DVItoLN{} starts to process a + page, a left bracket and the page number (which may consist of a series + of integers, separated by periods) is displayed; when the end of the + page is encountered, the matching right bracket is displayed. + \item[\tt Finding starting page...found]\cbstart\footnotemark\cbend{} + --- After the title has been displayed, \DVItoLN{} starts locating the + first page to be printed; at the same time, it works out if any blank + pages will need to be interspersed during printing. Since this + operation can take a significant amount of time on a large document, the + first part of this message is displayed so that the user won't think + that the program has died; the `{\tt found}' is displayed when this + processing is completed. + \item[\tt Font \meta{name}] [{\tt (at $m$\%)}] {\tt loaded with} + $n$ {\tt bytes of rasters (}$m$ {\tt\hyphenchar\the\font=`\- + char\-act\-ers)}\cbstart\footnotemark\cbend{} --- The specified font + (at the magnification shown, if not 100\%) has been included in the + downloaded fonts; if $n$ seems very small, it may be because the glyphs + of the font were too large to be downloaded and hence will be imaged + individually wherever they appear. + {\sloppy\item[\tt Font \meta{name}] [{\tt (at $m$\%)}] {\tt unavailable; + printing rules for glyphs}\cbstart\footnotemark\cbend{} --- The + specified font wasn't available at the requested magnification; + characters from this font will be imaged by printing solid rules of size + determined from the \TeX{} font metrics. Previously, a `{\tt cannot find + file}' warning will have been issued for this font.} + \item[\tt Font \meta{name}] [{\tt (at $m$\%)}] {\tt is + virtual}\cbstart\footnotemark\cbend{} --- The specified font was a + virtual one; this may result in the loading of real fonts other than + those specified by \TeX{} when the \DVI{} file was generated. + {\sloppy\item[\tt Gathering font usage + statistics...done]\cbstart\footnote{All these messages are suppressed if + the {\tt/NOVERBOSE} qualifier is used.}\cbend{} \hfil--- Once the + starting page \linebreak[4] has been found, \DVItoLN{} makes one rapid + pass through the \DVI{} file, noting which glyphs are used from each + font. Doing this allows us to save time and space that would otherwise + be wasted by downloading the whole of a font. It can take a significant + amount of time, so the first part of this message is written to the + display, and then an additional period will be displayed after + processing every ten pages, thus giving the user an assurance that the + program hasn't collapsed.} + \item[\tt Reading from file \meta{file\_spec}] --- This message is + written to the log (\TYP) file only, and records the full file + specification of the \DVI{} file being processed. + \item[\tt Sixel graphics included from: \meta{file\_spec}] --- This is + recorded in the log (\TYP) file whenever a file is read by a + \verb+\special{ln03:sixel}+ command. + \item[\tt This is DVItoLN03, Vax/VMS Version $V$] --- This banner + announcement identifies the version of the program, both on the screen + and in the log (\TYP) file. + \item[\tt Total of $n$ bytes of rasters downloaded] --- After all fonts + have been downloaded, this message gives an indication of the total + number of bytes that will be occupied by the downloaded fonts in the + printer's memory. It can therefore be compared with the available + memory, as reported on a printer test sheet (see~\cite{DEC:LN03}) to + determine whether the resultant file can be printed correctly --- if + there is insufficient memory, then process your document in smaller + sections. {\bf N.B.} If a document contains any pages that are printed + in landscape mode, all downloaded fonts will be reoriented to that mode + automatically by the printer: this can result in overflowing the + available memory. +\end{description} + +\endgroup +\chapend +\bibliographystyle{unsrt} +\addcontentsline{toc}{section}{References} +\bibliography{local_guides} + +\end{document} diff --git a/dviware/ln03/rmcs/dvitoln03.ch b/dviware/ln03/rmcs/dvitoln03.ch new file mode 100644 index 0000000000..7b6af0801c --- /dev/null +++ b/dviware/ln03/rmcs/dvitoln03.ch @@ -0,0 +1,1143 @@ +*** UNDER DEVELOPMENT *** +DVItype change file for LN03 output +This change file has been produced by adding stuff to the Vax/VMS +change file, originally due to David R. Fuchs. +It was originally used to produce a special version of DVItype, the +outputs of which were further processed by LN03toPP.PLI, Author: Flavio Rose +of DEC Marlboro +Modified for DVItype version 2.6 by John Sauter, August 3, 1984. +Version 0.8, quick fix to correct bug in rule merging. +Version 0.9, another quick fix to match a Topp bug fix +(c) 1986 Royal Military College of Science +The current version, still only experimental, was produced to combine +both these phases into one. +Modified for DVItype version 2.7 by B. Hamilton Kelly, March 1986. +(At Royal Military College of Science, Shrivenham, SWINDON, England.) +Minor cosmetic changes (eg 2048 rules, etc.) July 1987 +Support for \special added September 1987 +Extensive modifications July 88 and March 89. +Support for additional qualifiers August 89. +Support for \specials for changebars added by Robin Fairbairns. +Avoid problems with non-existent glyphs present in some fonts. (April 1990) +Tidy up processing of \special command arguments (December 1990) +Permit use of in margin offsets +Avoid hard-wiring of TEX$... logical names +Support virtual fonts +Support \specials for landscape/portrait, mixed on one page +Draw solid rules for glyphs from missing fonts +Optimize access to doubly-indexed arrays, to speed processing +Support DEClaser 2100/2200 (duplex, tray selection, etc) +DVItoLN03 is now at version 4.1 + + +Further work: +(suggestions possibly welcomed!) + +@x Limbo +% Version 4.0 Cosmetic changes to error messages - new release!!! +@y +% Version 4.0 Cosmetic changes to error messages - new release!!! +% Version 4.0-1 Minor (?!) bug-fixes +% Version 4.0-2 Further corrections to indexing of messages +% Version 4.0-3 Correct bug that rejected fonts > 188 glyphs +% Version 4.0-4 Reorient rules as well as glyphs! +% Version 4.0-5 Need much closed attention to imaging area with mixed +% orientations! +% Version 4.0-6 PFS commands reset OPM & margins, so need correction +% Version 4.0-7 Trouble caused by fonts which have duplicate characters +% Version 4.0-8 Ensure glyph position checking is against correct limits! +% Version 4.0-9 Add /PAPER_SIZE qualifier; correct duplexing last page +% Version 4.1 (Released 1 Oct 1991) Added /[NO]VERBOSE qualifier +@z + +@x Limbo +\def\title{DVI$\,$\lowercase{to}$\,$LN03 V4.0} +@y +\def\title{DVI$\,$\lowercase{to}$\,$LN03 V4.1} +@z + +@x Limbo + \centerline{(Version 4.0, 27th February 1991)} +@y + \centerline{(Version 4.1, 30th September 1991)} +@z + +@x Limbo +\let\maybe=\iftrue +%\let\maybe=\iffalse +@y Uncomment-out second next line if documentation required of changes only +\let\maybe=\iftrue +\let\maybe=\iffalse +@z + +Provide support for /VERBOSE qualifier +@x S1. +\yskip\hang\&{V4.0} Supports the new DEClaser~2100 and~2200 printers (the +LN05 and LN06) in addition to the traditional LN03. With the LN06, paper +feed trays may be selected from the command line, and the duplexing +facilities controlled also. Support for these printers was provided by +Karsten Nyblad +@^Nyblad, Karsten@> +of TFL, the Danish Telecommunication Research Laboratory, and integrated +into this new release with the other features mentioned above. +@y +\yskip\hang\&{V4.0} Supports the new DEClaser~2100 and~2200 printers (the +LN05 and LN06) in addition to the traditional LN03. With the LN06, paper +feed trays may be selected from the command line, and the duplexing +facilities controlled also. Support for these printers was provided by +Karsten Nyblad +@^Nyblad, Karsten@> +of TFL, the Danish Telecommunication Research Laboratory, and integrated +into this new release with the other features mentioned above. +\yskip\hang\&{V4.1} Minor bug fixes; to support mixed orientation printing, +the program requires knowledge of the actual paper size upon which the +output is produced, so the \.{/PAPER\_SIZE} qualifier is introduced. A +\.{/VERBOSE} qualifier is also introduced, such that sites requiring less +screen output can make the default \.{/NOVERBOSE}. +@z + +@x S1. +@d banner=='This is DVItoLN03, Vax/VMS Version 4.0' +@y +@d banner=='This is DVItoLN03, Vax/VMS Version 4.1' +@z + +Since OPM and margins must be reset after PFS sequences, need to define here +@x S5. +Whenever bitmaps are sent to the printer (in sixel format), it is necessary +to establish the ``printing'' position 29 pixels above the current +reference point. Despite repeated enquiry of DEC, it has not been +established why this is necessary. Naturally, we call this 29 pixels +|bitmap_offset|. This same offset also has to be applied to sixel graphics +included through a \.{\\special} command. + +When the paper orientation is selected, we may define the |page_len| and +|page_wid| in terms of the physical limits of the paper; these sizes are +as follows (for European A4 paper). +@^European A4 paper@> +(These might later become variables, and be alterable by qualifiers in the +command line.) There is, however, a further complication. In either printing +orientation, the printable area is of these dimensions; however, this printing +area starts 0.25~inches from the top left corner of the paper \\{in the +orientation it enters the printer}. Therefore in portrait mode, we can +actually print from (75,75) to (2475,3475), with (300,300) being the +``normal'' \TeX\ origin, but in landscape mode we can print (35,75) to +(3435,2475), and \TeX's origin should still be at (300,300). +@y +Whenever bitmaps are sent to the printer (in sixel format), it is necessary +to establish the ``printing'' position 29 pixels below the current +reference point. This is because the printer, apparently arbitrarily, elects +to put the top of the first row of sixels at a height of 70~decipoints above +the current baseline: since DEC's `point' is what \TeX\ calls \.{1bp}, this +offset is $70\over720$in, or $29{1\over6}$ pixels. Naturally, we call this +|bitmap_offset|. This same offset also has to be applied to sixel +graphics included through a \.{\\special} command. + +When the paper orientation is selected, we may define the |page_len| and +|page_wid| in terms of the physical limits of the paper; these sizes are +as follows (for ISO [European] A4 and US letter-size paper). +@^European A4 paper@> +@^A4 (ISO, European) paper@> +@^ISO paper sizes@> +@^Paper sizes@> +@^US letter-size paper@> +Variables are set up with the appropriate set of values, depending upon the +value provided with the \.{/PAPER\_SIZE} qualifier. +@.PAPER\_SIZE@> +@:Qualifiers PAPER SIZE}{\quad\.{PAPER\_SIZE}@> +There is, however, a further complication. In either printing +orientation, the printable area is of these dimensions; however, this printing +area starts 0.25~inches from the top left corner of the paper \\{in the +orientation it enters the printer}. Therefore in portrait mode, we can +actually print from (75,75) to (2475,3475), with (300,300) being the +``normal'' \TeX\ origin, but in landscape mode we can print (33,75) to +(3433,2475), and \TeX's origin should still be at (300,300). (The strange +figure 33 arises from DEC's handling of European A4~paper; with U.S. paper, +\\{without} OPM set, the printable area measures $2400\times3300$ +[$8\times11$in], and has an even $1\over4$in margin all round: with A4 +paper, the printable area, regardless of orientation, starts the same +$1\over4$in from the leading short edge of the paper, but the printable area +is extended to 3400 pixels $11{1\over3}$in, thus making the left-edge of the +printable area, in landscape orientation, lie $11{7\over12}$in from the +leading edge. Since A4~paper is 297mm long, this position is therefore +$0{\cdot}10958$in, approximately 33~pixels, from the left-edge.) + +This is also a convenient time to introduce certain non-printing control +characters, which will later be used to form control sequences and device +control strings (see ISO Std~2022) +@^ISO Standard 2022@> +for controlling device-specific functions of the printer. The control +sequence defined by |DECOPM_on| sets DEC's Origin Positioning Mode, such +that dimensions are measured from the edge of the paper rather than the +origin of the printable area (defined by |image_wid@t$\times$@>image_ht|). +The |DECSLRM| macro produces code to set the left- and right-margins of the +printable area, whilst |DECSTBM| sets the top- and bottom-margins; +unfortunately, redefining the page format (through a \\{PFS}\dots sequence) +cancels the effect of all of these, so they must be re-issued anew whenever +the printing orientation is changed. +@z + +Closer attention to detail of imaging area +@x S5. +@d paper_ht=3400 {in pixels} +@d paper_wid=2400 +@d y_port_min=75 +@d y_land_min=35 +@d page_x_min=75 +@d y_top=75 {Minimum addressable $y$ pixel} +@d y_bot=paper_ht+y_port_min {Maximum addressable $y$ pixel} +@y +@d A4_image_ht=3400 {in pixels (for European A4 paper)} +@d US_image_ht=3225 {in pixels (for American $8{1\over2}\times11$ paper)} +@d image_wid=2400 {(same value, 2400, for U.S. paper)} +@d y_port_min=75 {Lowest addressable $y$ in portrait mode (75)} +@d A4_y_land_min=33 {Lowest addressable $y$ in landscape mode} +@d US_y_land_min=0 +@d page_x_min=75 {Lowest addressable $x$ in portrait mode} +@d A4_right_marg=5 {Distance from highest $x$ to right-edge in portrait mode} +@d US_right_marg=75 +@d y_top=75 {Minimum addressable $y$ pixel} +@d y_bot==(image_ht+y_port_min) {Maximum addressable $y$ pixel in either mode} +@d paper_ht==(y_top+image_ht+y_land_min) {Physical size of paper} +@d paper_wd==(page_x_min+image_wid+right_marg) +@d min_seg_y=0 {Lowest and highest addressable rows, either orientation\dots} +@d max_seg_y=3510 {and whatever the paper type; esed to declare |seg_list|} +@z + +Since OPM and margins must be reset after PFS sequences, need to define here +@x S5. +@d PFS_landscape=='?23 J' {Extended A4 paper in landscape orientation} +@d PFS_portrait=='?22 J' {ditto in portrait; each preceded by |csi|} +@# +@y +@d esc==chr(@"1B) {The ASCII ESCape character} +@d csi==chr(@"9B) {Control Sequence Introducer} +@# +@d A4_PFS_landscape==csi+'?23 J' {Extended A4 paper in landscape orientation} +@d A4_PFS_portrait==csi+'?22 J' {and portrait} +@# +@d US_PFS_landscape==csi+'?21 J' {Extended US letter paper in landscape orientation} +@d US_PFS_portrait==csi+'?20 J' {and portrait} +@# +@d DECOPM_on==csi+'?52h' {\&{Set} Origin Placement Mode} +@d DECSLRM(#)==csi,#:1,';',decslrm_end {Set Left/Right Margins} +@d decslrm_end(#)==#:1,'s' +@d DECSTBM(#)==csi,#:1,';',decstbm_end {Set Top/Bottom Margins} +@d decstbm_end(#)==#:1,'r' +@# +@z + +Correct indexing of warning and error messages +@x S28. +@:fatal error Font not loaded TFM file}{\qquad\.{TFM file can't be opened}@> +@y +@:fatal error Font not loaded ...}{\quad\.{Font not loaded...}@> +@:fatal error Font not loaded TFM file}{\qquad\.{TFM file can't be opened}@> +@z + +Correct indexing of warning and error messages +@x S41. +9997: error('---not loaded, TFM file is bad'); +@.TFM file is bad@> +@y +9997: error('---not loaded, TFM file is bad'); +@:Error: TFM file is bad}{\quad\.{TFM file is bad}@> +@z + +Introduce additional variables to support two differing paper sizes +@x S54. +@!orientation,@!new_orient,@!cur_orient : page_orientation; +@y +@!orientation,@!new_orient,@!cur_orient : page_orientation; +@!paper_size : page_sizes; +@!image_ht, @!y_land_min, @!right_marg : integer; +@z + +Introduce additional enumeration type +@x S55. +@ This type allows us to keep track of whether characters are currently +being imaged in landscape or portrait orientation. + +@= +@!page_orientation = (@!portrait,@!landscape); +@y +@ These types allow us to note for what paper size the printer has been +configured, and to keep track of whether characters are currently being +imaged in landscape or portrait orientation. + +@= +@!page_sizes = (@!A4,@!US); +@!page_orientation = (@!portrait,@!landscape); +@z + +Cosmetic change of module name +@x S65. +@; +@y +@; +@z + +Correct usage to explicit |term_out| +@x S70. + write_ln(' --- assuming pixel units',crlf); +@y + write_ln(term_out,' --- assuming pixel units',crlf); +@z + +Correct usage to explicit |term_out| +@x S70. + write_ln(' --- assuming pixel units',crlf); +@y + write_ln(term_out,' --- assuming pixel units',crlf); +@z + +Closer attention to detail of imaging area; use macros for application +elsewhere. Support /PAPER_SIZE qualifier +@x S72. +@= +if odd(VAX_cli_present('ORIENTATION')) then +begin + if odd(VAX_cli_present('PORTRAIT')) then orientation:=portrait else + if odd(VAX_cli_present('LANDSCAPE')) then orientation:=landscape else + warning('/ORIENTATION must be "PORTRAIT" or "LANDSCAPE"; assuming "PORTRAIT"') +@:Warning: orientation must be}{\quad \.{/ORIENTATION must be ...}@> +end; +if orientation=landscape then +begin page_len:=paper_wid+page_x_min; page_wid:=paper_ht+y_land_min; + y_min:=page_x_min; x_min:=y_land_min end else +begin page_len:=paper_ht+y_port_min; page_wid:=paper_wid+page_x_min; + y_min:=y_port_min; x_min:=page_x_min end; +@y +@d set_landscape_limits==begin page_len:=image_wid+page_x_min; + page_wid:=image_ht+y_land_min; + y_min:=page_x_min; + x_min:=y_land_min + end +@d set_portrait_limits==begin page_len:=image_ht+y_port_min; + page_wid:=image_wid+page_x_min; + y_min:=y_port_min; + x_min:=page_x_min + end + +@= +if odd(VAX_cli_present('PAPER_SIZE.US')) then +begin {Using US letter-size paper $11\times8{1\over2}$in} + image_ht := US_image_ht; y_land_min := US_y_land_min; + right_marg := US_right_marg; paper_size := US; +end else +begin {Assume ISO A4 paper size $297\times210$mm} + image_ht := A4_image_ht; y_land_min := A4_y_land_min; + right_marg := A4_right_marg; paper_size := A4; +end; +if odd(VAX_cli_present('ORIENTATION')) then +begin + if odd(VAX_cli_present('PORTRAIT')) then orientation:=portrait else + if odd(VAX_cli_present('LANDSCAPE')) then orientation:=landscape else + warning('/ORIENTATION must be "PORTRAIT" or "LANDSCAPE"; assuming "PORTRAIT"') +@:Warning: orientation must be}{\quad \.{/ORIENTATION must be ...}@> +end; +if orientation=landscape then set_landscape_limits else set_portrait_limits; +@z + +Correct usage to explicit |term_out| +@x S73. + write_ln(' --- assuming scaled points',crlf); +@y + write_ln(term_out,' --- assuming scaled points',crlf); +@z + +Correct usage to explicit |term_out| +@x S73. + write_ln(' --- assuming scaled points',crlf); +@y + write_ln(term_out,' --- assuming scaled points',crlf); +@z + +Correct indexing of warning message +@x S87. +@:Warning: checksum doesn't match}{\quad\.{checksum doesn't match}@> +@y +@:Warning: checksum doesn\'t match ...}{\quad\.{checksum doesn't match...}@> +@:Warning: checksum doesn\'t match previous def}{\qquad\.{previous definition}@> +@z + +Correct indexing of warning message +@x S91. +@:Warning: checksum doesn\'t match}{\quad\.{checksum doesn't match}@> +@y +@:Warning: checksum doesn\'t match in TFM file}{\qquad\.{in TFM file}@> +@z + +Closer attention to detail of imaging area +@x S94. + @!seg_list : array [y_land_min..paper_ht+y_port_min] of ^segment; +@y + @!seg_list : array [min_seg_y..max_seg_y] of ^segment; +@z + +Closer attention to detail of imaging area +@x S95. + for k:=y_land_min to paper_ht+y_port_min do seg_list[k]:=nil; +@y + for k:=y_land_min to image_ht+y_port_min do seg_list[k]:=nil; +@z + +Some of these characters are now defined much earlier +@x S101. +@d esc==chr(@"1B) {The ASCII ESCape character} +@d csi==chr(@"9B) {Control Sequence Introducer} +@y +@z + +Note whether the character packet was used \\{this time} +@x S129. +ch_loc[char_num]:=end_of_packet-packet_length; +with glyph_map(TeX_font)(char_num) do + if loaded=wanted then + begin + base:=ras_beg+ras_len;@/ + @; + @; + @; + @; + @; + @ +@y +packet_used:=false; +with glyph_map(TeX_font)(char_num) do + if loaded=wanted then + begin + base:=ras_beg+ras_len;@/ + @; + @; + @; + @; + @; + @; + packet_used:=true +@z + +Ensure first record of an included sixels file can be 256 chars long +Provide support for /VERBOSE qualifier +@x S179. + monitor(' ('+def_file_name); + print_ln('Sixel graphics included from: ',def_file_name); +@.Sixel graphics included...@> + reset(sixel_file); + write(ln3_file,csi,y_position:1,'d',csi,cur_seg^.xs:1,'`'); +@y + if verbose then monitor(' ('+def_file_name); + print_ln('Sixel graphics included from: ',def_file_name); +@.Sixel graphics included...@> + reset(sixel_file); + write_ln(ln3_file,csi,y_position:1,'d',csi,cur_seg^.xs:1,'`'); +@z + +Provide support for /VERBOSE qualifier +@x S179. + monitor(') '); +@y + if verbose then monitor(') '); +@z + +Closer attention to detail of imaging area +PFS commands reset OPM and margin, so must override. Track paper size +@x S183. + write_ln(ln3_file,csi,PFS_landscape); + page_len:=paper_wid+page_x_min; page_wid:=paper_ht+y_land_min; + y_min:=page_x_min; x_min:=y_land_min + end else + begin + write_ln(ln3_file,csi,PFS_portrait); + page_len:=paper_ht+y_port_min; page_wid:=paper_wid+page_x_min; + y_min:=y_port_min; x_min:=page_x_min +@y + if paper_size = US then + write(ln3_file,US_PFS_landscape,DECOPM_on) + else + write(ln3_file,A4_PFS_landscape,DECOPM_on); + set_landscape_limits; + write_ln(ln3_file,DECSLRM(x_min)(page_wid),DECSTBM(y_min)(page_len)) + {Set page limits} + end else + begin + if paper_size = US then + write(ln3_file,US_PFS_portrait,DECOPM_on) + else + write(ln3_file,A4_PFS_portrait,DECOPM_on); + set_portrait_limits; + write_ln(ln3_file,DECSLRM(x_min)(page_wid),DECSTBM(y_min)(page_len)) + {Set page limits} +@z + +Correct handling of last recto page when duplexing +@x S196. + if ptr_blanks>0 then + if blank_follows[ptr_blanks]=cur_loc_after_bop then + begin + decr(ptr_blanks); {and remain in simplex mode} + if print_mode>=duplex_master_normal then + write(ln3_file,' ',FF) {eject blank page for \\{verso} master} + end else + begin + write(ln3_file,csi,print_mode:1,' x'); + duplex_to_be_reset:=false + end +@y + begin + duplex_to_be_reset:=false; + if ptr_blanks>0 then + if blank_follows[ptr_blanks]=cur_loc_after_bop then + begin + decr(ptr_blanks); {and remain in simplex mode} + duplex_to_be_reset:=true; + if print_mode>=duplex_master_normal then + write(ln3_file,' ',FF) {eject blank page for \\{verso} master} + end else + write(ln3_file,csi,print_mode:1,' x') + else + write(ln3_file,csi,print_mode:1,' x') + end +@z + +Correct indexing of warning and error messages +@x S209. +warning('more than ',max_rules:1,' rules on page; excess ignored!'); +@.more than ... rules@> +@y +warning('more than ',max_rules:1,' rules on page; excess ignored!'); +@:Warning: more than ... rules}{\quad\.{more than ... rules}@> +@z + +Correct orientation of rules written when orientation=landscape +@x S209. +with page_rules[rules_on_page] do begin + horiz := hhh; vert := vvv; height := hheight; + width := wwidth; covered := false; + end; +@y +with page_rules[rules_on_page] do + if new_orient=orientation then + begin + horiz := hhh; vert := vvv; height := hheight; + width := wwidth; covered := false; + end else + if new_orient=landscape then + begin {landscape rule will be output in portrait orientation} + vert := paper_ht-hhh-left_marg-top_marg; + horiz := vvv-hheight+top_marg-left_marg; + width := hheight; height := wwidth; covered := false; + end else {portrait rule output in landscape} + begin + vert := hhh-wwidth+left_marg-top_marg; + horiz := paper_ht-vvv-left_marg-top_marg; + width := hheight; height := wwidth; covered := false; + end; +@z + +Correct indexing of warning and error messages +@x S233. +pre: begin error('preamble command within a page!'); goto 9998; + end; +@.preamble command within a page@> +post,post_post: begin error('postamble command within a page!'); goto 9998; +@.postamble command within a page@> + end; +othercases begin error('undefined command ',o:1,'!'); + goto done; +@.undefined command@> +@y +pre: begin error('preamble command within a page!'); goto 9998; + end; +@:Error: preamble command within a page}{\quad\.{preamble command within a page}@> +post,post_post: begin error('postamble command within a page!'); goto 9998; +@:Error: postamble command within a page}{\quad\.{postamble command within a page}@> + end; +othercases begin error('undefined command ',o:1,'!'); + goto done; +@:Error: undefined command}{\quad\.{undefined command}@> +@z + +Correct indexing of warning and error messages +@x S234. +@= +nop: goto done; +bop: begin error('bop occurred before eop!'); goto 9998; +@.bop occurred before eop@> +@y +@= +nop: goto done; +bop: begin error('bop occurred before eop!'); goto 9998; +@:Error: bop occurred before eop}{\quad\\{bop }\.{occurred before }\\{eop}@> +@z + +Correct orientation of rules written when orientation=landscape +@x S234. + @@; + do_page:=true;@/ + @;@/ + write(ln3_file,LF); {LF after page} + new_orient:=orientation; + @; {reset, if necessary} +@y + do_page:=true;@/ + @;@/ + new_orient:=orientation; + @; {reset, if necessary} + @@; {Rules always output in default orientation} + write(ln3_file,LF); {LF after page} +@z + +Change imaging area limits whenever the orientation is changed +@x S244. +@= +case spec_cmd of + spec_land: new_orient:=landscape; {|'landscape'| or |'ln03:landscape'|} + spec_port: new_orient:=portrait; {|'portrait'| or |'ln03:portrait'|} +@y +@= +case spec_cmd of + spec_land: begin new_orient:=landscape; {|'landscape'| or |'ln03:landscape'|} + set_landscape_limits + end; + spec_port: begin new_orient:=portrait; {|'portrait'| or |'ln03:portrait'|} + set_portrait_limits + end; +@z + +Correct indexing of warning and error messages +@x S246. +@ @= +if p<0 then p:=255-((-1-p) mod 256) +else if p>=256 then p:=p mod 256; {width computation for oriental fonts} +@^oriental characters@>@^Chinese characters@>@^Japanese characters@> +if (pfont_ec[cur_font]) then q:=invalid_width +else q:=cur_font_glyph(p).width; +if q=invalid_width then + begin error('character ',p:1,' invalid in font '); +@.character $c$ invalid...@> +@y +@ @= +if p<0 then p:=255-((-1-p) mod 256) +else if p>=256 then p:=p mod 256; {width computation for oriental fonts} +@^oriental characters@>@^Chinese characters@>@^Japanese characters@> +if (pfont_ec[cur_font]) then q:=invalid_width +else q:=cur_font_glyph(p).width; +if q=invalid_width then + begin error('character ',p:1,' invalid in font '); +@:Error: character $c$ invalid...}{\quad\.{character $c$ invalid...}@> +@z + +Correct indexing of warning and error messages +@x S248. +@= +if (h>0)and(q>0) then if h>infinity-q then + begin error('arithmetic overflow! parameter changed from ',@| +@.arithmetic overflow...@> +@y +@= +if (h>0)and(q>0) then if h>infinity-q then + begin error('arithmetic overflow! parameter changed from ',@| +@:Error: arithmetic overflow...}{\quad\.{arithmetic overflow...}@> +@z + +Correct indexing of warning and error messages +@x S251. +@ @= +if (v>0)and(p>0) then if v>infinity-p then + begin error('arithmetic overflow! parameter changed from ', +@.arithmetic overflow...@> +@y +@ @= +if (v>0)and(p>0) then if v>infinity-p then + begin error('arithmetic overflow! parameter changed from ', +@:Error: arithmetic overflow...}{\quad\.{arithmetic overflow...}@> +@z + +Provide support for /VERBOSE qualifier +@x S255. + monitor('Gathering font usage statistics...'); +@y + if verbose then monitor('Gathering font usage statistics...'); +@z + +Certain control sequences now defined in \S5 +@x S266. +character; whilst the end of the font download is marked by the |ST| (String +Terminator) character --- this is preceded by a textual comment. +@y +character; whilst the end of the font download is marked by the |ST| (String +Terminator) character --- this is preceded by a textual comment. + +Finally, we define the printable area, and designate up to ten downloaded +fonts to be accessible through |SGR| control sequences. +@z + +Certain control sequences now defined in \S5 +@x S266. +{Set page limits} +write(ln3_file,csi,x_min:1,';',page_wid:1,'s',csi,y_min:1,';',page_len:1,'r'); +@@; +@y +write(ln3_file,DECSLRM(x_min)(page_wid),DECSTBM(y_min)(page_len)); +{Set page limits} +@@; +@z + +Certain control sequences now defined in \S5 +@x S267. +@ We start by writing the LN03 directives to the front of the file. Since the +introduction of the LN03-Plus, this has been made more complicated, because +the sequence |esc, 'c'| is meaningful (and \&{not} as |RIS|!) when the +LN03-Plus is in the Tektronix emulation mode. Therefore, we start off by +outputting the sequence |esc, '[!p'| which is DEC's private ``soft terminal +reset'' (|DSCSTR|). (Note that this sequence uses the ``long-winded'' way of +specifying |csi|; this is because the LN03-plus ignores the eigth bit when it +is emulating a Tektronix terminal.) However, this won't necessarily reset an +`ordinary' LN03, so we output the ISO-standard |RIS| (Reset Initial State +$\equiv$ |esc,'c'|) sequence as well. + +There then follow a number of control sequences which set up further +characteristics of the LN03: (1) |'?27h'| is a DEC private control sequence, +|DECPSP|, which selects proportional spacing mode, whereby the printer moves +forward by the recorded width of the character glyph rather than by some fixed +amount after printing; (2) |'11h'| \&{set}s the |PUM| (Positioning Unit Mode), +when set, this mode indicates that ``cursor movement'' sequences work in units +of either decipoints or pixels, which of these is determined by (3) |'7 I'| +which sets the |SSU| (Select Size Unit) to be in units of a single pixel; (4) +|'?52h'| is another DEC private sequence, \&{set}ting the |DECOPM| (Origin +Placement Mode) which places the origin for all measurement to the upper-left +corner of the physical page (the alternative is 0.25 inches from that point). +Finally, the sequence ending in |'t'| contains the |page_len| as a parameter, +and is another DEC private control sequence which sets the |DECLPP| (Lines per +Physical Page) to be the height of the printable area, in pixels. + +@d DECSTR==esc+'[!p' +@d RIS==esc+'c' +@d DECPSP_on==csi+'?27h' +@d PUM_on==csi+'11h' +@d SSU_pixel==csi+'7 I' +@d DECOPM_on==csi+'?52h' + +@= +if orientation=landscape then + write_ln(ln3_file,DECSTR,RIS,csi,PFS_landscape) +else + write_ln(ln3_file,DECSTR,RIS,csi,PFS_portrait); +@y +@ We start by writing the LN03 directives to the front of the file. Since the +introduction of the LN03-Plus, this has been made more complicated, because +the sequence |esc, 'c'| is meaningful (and \&{not} as |RIS|!) when the +LN03-Plus is in the Tektronix emulation mode. Therefore, we start off by +outputting the sequence |esc, '[!p'| which is DEC's private ``soft terminal +reset'' (|DSCSTR|). (Note that this sequence uses the ``long-winded'' way of +specifying |csi|; this is because the LN03-Plus ignores the eighth bit when it +is emulating a Tektronix terminal.) However, this won't necessarily reset an +`ordinary' LN03, so we output the ISO-standard |RIS| (Reset Initial State +$\equiv$ |esc,'c'|) sequence as well. + +After setting the correct printing orientation, there then follow a number +of control sequences which set up further characteristics of the LN03: (1) +|'?27h'| is a DEC private control sequence, |DECPSP|, which selects +proportional spacing mode, whereby the printer moves forward by the recorded +width of the character glyph rather than by some fixed amount after +printing; (2) |'11h'| \&{set}s the |PUM| (Positioning Unit Mode), when set, +this mode indicates that ``cursor movement'' sequences work in units of +either decipoints or pixels, which of these is determined by (3) |'7 I'| +which sets the |SSU| (Select Size Unit) to be in units of a single pixel; +(4) the |DECOPM| (Origin Placement Mode) is \&{set}, which places the origin +for all measurement to the upper-left corner of the physical page (the +alternative is 0.25 inches from that point). Finally, the sequence ending in +|'t'| contains the |page_len| as a parameter, and is another DEC private +control sequence which sets the |DECLPP| (Lines per Physical Page) to be the +height of the printable area, in pixels. + +@d DECSTR==esc+'[!p' +@d RIS==esc+'c' +@d DECPSP_on==csi+'?27h' +@d PUM_on==csi+'11h' +@d SSU_pixel==csi+'7 I' + +@= +if orientation=landscape then + if paper_size = US then + write_ln(ln3_file,DECSTR,RIS,US_PFS_landscape) + else + write_ln(ln3_file,DECSTR,RIS,A4_PFS_landscape) +else + if paper_size = US then + write_ln(ln3_file,DECSTR,RIS,US_PFS_portrait) + else + write_ln(ln3_file,DECSTR,RIS,A4_PFS_portrait); +@z + +Provide support for /VERBOSE qualifier +@x S283. + write_ln(term_out,' is virtual',crlf);@/ +@y + if verbose then write_ln(term_out,' is virtual',crlf);@/ +@z + +Provide support for /VERBOSE qualifier +@x S316. + @ ; + if file_type=unavailable then + write(' unavailable; printing rules for glyphs;'); + print(' with '); write_ln(term_out,' loaded with '); +@y + @ ; + if file_type=unavailable then + begin + if not verbose then + begin + write(term_out,'Font ',name); + if percent <> 100 then write(term_out,' (at ',percent:1,'%)') + end; + write(term_out,' unavailable; printing rules for glyphs;'); + if not verbose then write_ln(term_out,crlf); + end; + print(' with '); if verbose then write_ln(term_out,' loaded with '); +@z + +Suppress checksum warning if either file has zero +@x S320. + if font_check_sum[TeX_font]<>checksum then + warning('checksum doesn''t match in PK file') +@.checksum doesn't match in PK file@> +@y + if (font_check_sum[TeX_font]<>0) and (checksum<>0) and + (font_check_sum[TeX_font]<>checksum) then + warning('checksum doesn''t match in PK file') +@:Warning: checksum doesn\'t match in PK file}{\qquad\.{in PK file}@> +@z + +Provide support for /VERBOSE qualifier +@x S321. +write(term_out,'Font ',name); +if percent<> 100 then write(' (at ',percent:1,'%)'); +@y +if verbose then +begin + write(term_out,'Font ',name); + if percent<> 100 then write(term_out,' (at ',percent:1,'%)'); +end; +@z + +Must increment character counter if we're making dummy directory entry +@x S325. +@= +begin + @; + loaded:=yes +end +@y +@= +begin + @; + incr(first_txfc); loaded:=yes +end +@z + +Scream if raster file contains character outside font +Check if glyph has been previously processed +@x S328. +@= +begin + repeat + @; + skip_specials + until (glyph_map(TeX_font)(char_num).loaded<>unused) or + (flag_byte=pk_post); + with glyph_map(TeX_font)(char_num) do + if loaded<>unused then + begin + char_code:=first_txfc; + font_code:=ln_font; + incr(first_txfc) {This might later be corrected} + end; +@y +@= +begin + repeat + @; + skip_specials; + if (flag_byte<>pk_post) then + begin + if (char_numfont_ec[TeX_font]) then + abort('bad pk file, illegal character (',char_num:1,')'); +@:fatal error Bad pk file illegal character}{\qquad\.{illegal character}@> + if not packet_used then {Packet wasn't copied...} + if (glyph_map(TeX_font)(char_num).loaded<>unused) then + warning('glyph ',char_num:1, + ' has multiple definitions; later one(s) ignored') +@:warning glyph has multiple}{\quad\.{glyph $c$ has multiple definitions}@> + end + until packet_used or (flag_byte=pk_post); + with glyph_map(TeX_font)(char_num) do + if loaded<>unused then + begin + char_code:=first_txfc; + font_code:=ln_font; + incr(first_txfc) {Count character added to directory, etc} + end; +@z + +Suppress checksum warning if either file has zero +@x S333. +@= + +move_to_pxl(pxl_size-16); +if font_check_sum[TeX_font]<>long_pxl(pxl_ptr) then + warning('checksum doesn''t match in PXL file'); +@.checksum doesn't match in PXL file@> +@y +@= +move_to_pxl(pxl_size-16); i:=long_pxl(pxl_ptr); {Read checksum from file} +if (font_check_sum[TeX_font]<>0) and (i<>0) and + (font_check_sum[TeX_font]<>i) then + warning('checksum doesn''t match in PXL file'); +@:Warning: checksum doesn\'t match in PXL file}{\qquad\.{in PXL file}@> +@z + +Correct bug with fonts that require an overflow beyond 188 glyphs +@x S334. +The character numbers will be those of the LN03 font file, having already been +mapped to these during the mapping phase; therefore, if the lowest character +number used is |= left_first| then we must be starting a new font, so must +initialize the empty font file and indicate that this is a |GL| font +(left-hand half of eight-bit character table). + +@= +first_txfc:=-1; last_txfc:=-1; {For |ln_font|} +@y +The character numbers will be those of the LN03 font file, having already been +mapped to these during the mapping phase; therefore, if the lowest character +number used is |= left_first| then we must be starting a new font, so must +initialize the empty font file and indicate that this is a |GL| font +(left-hand half of eight-bit character table). + +If the \TeX\ font contained more than 188 glyphs that were used, it will +have been mapped to \&{two} LN03 fonts: |overflow_font| will be set true +when determining which characters were used in the overflow portion (the +first font using all of |left_first..right_first| and +|left_last..right_last|, since such a large font will never be ``fitted in'' +along with other fonts mapped to an LN03 font. + +@= +first_txfc:=-1; last_txfc:=-1; overflow_font:=false; {For |ln_font|} +@z + +Correct bug with fonts that require an overflow beyond 188 glyphs +@x S335. +@ As we cycle through all the allocated characters, we note each code in turn, +thus determining the highest code used. We also note the lowest one when we +meet the first code used. If the |TeX_font| extends into a second |ln_font|, +the corresponding information will be recorded in |final_txfc| and |txfc_next|, +respectively. + +@= +if loaded = wanted then +begin if txf_to_lnf[font_code]=ln_font then + begin if first_txfc=-1 then first_txfc:=char_code; + last_txfc:=char_code; font_code:=ln_font + end +@y +@ As we cycle through all the allocated characters, we note each code in turn, +thus determining the highest code used (if this is |right_last| then any +subsequent character \\{in this font} will belong to the overflow portion, +in font |ln_font+1|). We also note the lowest one when we +meet the first code used. If the |TeX_font| extends into a second |ln_font|, +the corresponding information will be recorded in |final_txfc| and |txfc_next|, +respectively. + +@= +if loaded = wanted then +begin if not overflow_font then + begin if first_txfc=-1 then first_txfc:=char_code; + last_txfc:=char_code; font_code:=ln_font; + overflow_font:= char_code=right_last + end +@z + +Correct bug with fonts that require an overflow beyond 188 glyphs +@x S337. +\yskip\hang|end_txf| This is |true| if the last character of the present +|TeX_font| is the last character mapped to |ln_font|. + +@== +@!first_txfc, @!last_txfc : integer; +@!txfc_next, @!final_txfc : integer; +@!begin_txf, @!end_txf : boolean; +@y +\yskip\hang|end_txf| This is |true| if the last character of the present +|TeX_font| is the last character mapped to |ln_font|. + +\yskip\hang|overflow_font| Set |true| when we're determining the first and +last characters used in the second LN03 font (|ln_font+1|) into which a font +of more than 188 glyphs has overflowed. + +\yskip\hang|packet_used| Set |true| iff a character packet, taken from a +packed pixel file, corresponds to a |wanted| character, and is downloaded. +If a second packet with the same |char_num| is encountered, the |loaded| +field will already have been set to |yes| or |no|, and the packet will be +skipped. This permits us to detect duplicate characters (and ensure that +we still process \\{all} characters actually used). + +@== +@!first_txfc, @!last_txfc : integer; +@!txfc_next, @!final_txfc : integer; +@!begin_txf, @!end_txf : boolean; +@!overflow_font : boolean; +@!packet_used : boolean; +@z + +Provide support for /VERBOSE qualifier +@x S338. +write_ln(term_out,rasters:0,' bytes of rasters (',font_occupancy[TeX_font]:1, + ' characters)' ,crlf); +@y +if verbose then write_ln(term_out,rasters:0,' bytes of rasters (', + font_occupancy[TeX_font]:1,' characters)' ,crlf); +@z + +Character counter wasn't increment for missing characters! +@x S343. + warning('Font ',name,' doesn''t contain character ',char_num:1,crlf); +@:Warning: Font doesn't contain character}{\quad\.{Font doesn't contain...}@> + @; + @; + tfm_width := width; + num_cols := pixel_width; + base := ras_beg + ras_len; + @; + char_code:=first_txfc; font_code:=ln_font +@y + warning('Font ',name,' doesn''t contain character ',char_num:1,crlf); +@:Warning: Font doesn't contain character}{\quad\.{Font doesn't contain...}@> + @; + @; + tfm_width := width; + num_cols := pixel_width; + base := ras_beg + ras_len; + @; + char_code:=first_txfc; font_code:=ln_font; + incr(first_txfc) +@z + +Must count character's addition to directory entry, etc +@x S344. + move_to_pxl(addr*4); + char_code:=to_where;@/ + @; + @; + @; + @; + @; + @ + end {|with|} +@y + move_to_pxl(addr*4); + char_code:=to_where;@/ + @; + @; + @; + @; + @; + @; + incr(first_txfc) + end {|with|} +@z + +Provide support for /VERBOSE qualifier +@x S365. + if (pages_counted mod 10)=0 then monitor('.'); {show progress} +@y + if ((pages_counted mod 10)=0) and verbose then + monitor('.'); {show progress} +@z + +Suppress spurious `done' message after N pages processed. +@x S365. + monitor('done.'+crlf); term_offset:=0 +@y +@z + +Provide support for /VERBOSE qualifier +@x S365. + monitor('done.'+crlf); term_offset:=0; +@y + if verbose then monitor('done.'+crlf); term_offset:=0; +@z + +Provide support for /VERBOSE qualifier +@x S373. +@= +monitor('Finding starting page...'); +@y +@= +if verbose then monitor('Finding starting page...'); +@z + +Provide support for /VERBOSE qualifier +@x S373. +monitor('found.'+crlf); term_offset:=0 +@y +if verbose then monitor('found.'+crlf); term_offset:=0 +@z + +Correct the indexing of some warning messages +@x S377. +if signed_quad<>numerator then + warning('numerator doesn''t match the preamble!'); +@:warning numerator doesn't match}{\quad\.{numerator doesn't match...}@> +if signed_quad<>denominator then + warning('denominator doesn''t match the preamble!'); +@:warning denominator doesn't match}{\quad\.{denominator doesn't match...}@> +if signed_quad<>mag then if new_mag=0 then + warning('magnification doesn''t match the preamble!'); +@:warning magnification doesn't match}{\quad\.{magnification doesn't match...}@> +@y +if signed_quad<>numerator then + warning('numerator doesn''t match the preamble!'); +@:Warning: numerator doesn't match}{\quad\.{numerator doesn't match...}@> +if signed_quad<>denominator then + warning('denominator doesn''t match the preamble!'); +@:Warning: denominator doesn't match}{\quad\.{denominator doesn't match...}@> +if signed_quad<>mag then if new_mag=0 then + warning('magnification doesn''t match the preamble!'); +@:Warning: magnification doesn't match}{\quad\.{magnification doesn't match...}@> +@z + +Provide support for /VERBOSE qualifier +@x S387. +@!file_name,@!actual_file_spec,@!log_file_name, + @!output_file_name:file_spec; +@!file_message:file_spec; +@!cmd_j,@!cmd_k:integer; +@!ask : boolean; +@y +@!file_name,@!actual_file_spec,@!log_file_name, + @!output_file_name:file_spec; +@!file_message:file_spec; +@!cmd_j,@!cmd_k:integer; +@!ask,@!verbose : boolean; +@z + +Correct indexing of warning and error messages +@x S395. +if not ask then bomb_out('No file name provided'); +@.No file name provided@> +@y +if not ask then bomb_out('No file name provided'); +@z + +Provide support for /VERBOSE qualifier +@x S396. +if odd(VAX_cli_present('LOG')) then + VAX_cli_get_value('LOG',log_file_name); +@y +if odd(VAX_cli_present('LOG')) then + VAX_cli_get_value('LOG',log_file_name); +verbose := odd(VAX_cli_present('VERBOSE')); +@z + diff --git a/dviware/ln03/rmcs/dvitoln03.cld b/dviware/ln03/rmcs/dvitoln03.cld new file mode 100644 index 0000000000..83f3ecd129 --- /dev/null +++ b/dviware/ln03/rmcs/dvitoln03.cld @@ -0,0 +1,198 @@ +!************************************************************************* +! CLD file to set up DCL interface for DVItoLN03 command. +! +! For DVItoLN03 V4.0... BHK 11-FEB-1991 +! V4.1... BHK 20-SEP-1991 +! (Not all qualifiers are yet supported by the code...) +!************************************************************************* +! +! Types used for certain qualifiers +! +define type ORIENTS + keyword PORTRAIT, + default + keyword LANDSCAPE +! +! Mark one of these as default, as appropriate to your site +! +define type PRINTERS + keyword LN03, ! Traditional LN03 or LN03-plus + default + keyword LN05 ! DEClaser~2100 + keyword LN06 ! DEClaser~2200 +! +define type PRINT_MODE + keyword DUPLEX, + keyword SIMPLEX, + keyword NORMAL, + keyword TUMBLED, + keyword MASTER +! +define type FEED_TRAY_LIST + keyword ALL,value(required,type=TRAY_TYPES) + keyword FIRST,value(required,type=TRAY_TYPES) + keyword REST,value(required,type=TRAY_TYPES) +! +define type TRAY_TYPES + keyword DEFAULT_TRAY + keyword TOP_TRAY + keyword BOTTOM_TRAY + keyword ENVELOPE_TRAY + keyword MANUAL_FEED +! +! Mark one of these as default, as appropriate to your site +! +define type PAPER_TYPES + keyword A4, ! ISO A4 paper, 297mm x 210mm + default + keyword US ! US Letter size, 11in x 8-1/2in +! +define verb DVILN03 + image "TEX_EXE:DVITOLN03" + parameter P1, + label=FILESPEC, + prompt="DVI file", + value(required,type=$file) + qualifier STARTING_PAGE, + default, + nonnegatable, + value(default="*") + qualifier NUMBER_OF_PAGES, + default, + nonnegatable, + value(default=10000000,type=$number) + qualifier LEFT_MARGIN, + default, + nonnegatable, + value(default=300px) + qualifier TOP_MARGIN, + default, + nonnegatable, + value(default=300px) + qualifier HFUZZ, ! Program default is 100sp + nonnegatable, + value(required) + qualifier VFUZZ, + nonnegatable, + value(required) + qualifier ORIENTATION, + default, + nonnegatable, + value(type=orients) + qualifier TFM_DIRECTORY, + nonnegatable, + default, + value(default="TEX_FONTS:",type=$file) + qualifier VIRTUAL_DIRECTORY, + negatable, + default, + value(default="TEX_FONTS:",type=$file) + qualifier PK_FONT_DIRECTORY, + negatable, + default, + value(default="TEX_PK:",type=$file) + qualifier PXL_FONT_DIRECTORY, + negatable, + default, + value(default="TEX_PXL_ROOT:",type=$file) + qualifier LOG, + negatable, + value(type=$file) + qualifier OUTPUT, + nonnegatable, + value(required,type=$file) + qualifier VERBOSE, + negatable, + default + qualifier PRINT_MODE + value(list,type=PRINT_MODE) + qualifier DUPLEX_BY_PAGE_NUMBERS + default, + negatable + qualifier FEED_TRAY + value(required,list,type=feed_tray_list) + qualifier PAPER_SIZE + default, + nonnegatable, + value(type=paper_types) + qualifier DEVICE_TYPE ! Never used by program + default, + value(type=printers) +! +! That last qualifier is present just to control these disallow clauses +! + disallow DEVICE_TYPE.LN05 and (PRINT_MODE.TUMBLED or + (PRINT_MODE.MASTER and PRINT_MODE.SIMPLEX)) ! DEClaser 2100 + disallow DEVICE_TYPE.LN03 and (PRINT_MODE.TUMBLED or FEED_TRAY)! Plain LN03 + disallow DUPLEX_BY_PAGE_NUMBERS and PRINT_MODE.SIMPLEX + disallow PRINT_MODE.MASTER and not PRINT_MODE.DUPLEX + disallow PRINT_MODE.SIMPLEX and (PRINT_MODE.DUPLEX or PRINT_MODE.MASTER) + disallow FEED_TRAY.ALL and (FEED_TRAY.FIRST or FEED_TRAY.REST) +! +! The value that DVItoLN03 will use if a qualifier is not specified (and +! no default is given) can be seen in DVITOLN03.WEB/.CH +! +! +!----------------------------------------------------------------------- +! +! DVItoLN03 can handle any font scheme that obeys the following rules: +! +! 1. If the PK_FONT_DIRECTORY value ends in ".]" then all PK font +! files reside in various subdirectories of PK_FONT_DIRECTORY. +! Each subdirectory name is a different font size. +! e.g. +! /PK_FONT_DIRECTORY=TEX_DISK:[TEX.PK.] +! Font names: TEX_DISK:[TEX.PK.][300]cmr10.pxl +! TEX_DISK:[TEX.PK.][622]cmr10.pxl +! +! 2. If the PK_FONT_DIRECTORY value does NOT end in ".]" then all PK +! font files reside in PK_FONT_DIRECTORY. Each file type begins +! with a font size, followed by "PK". +! e.g. +! /PK_FONT_DIRECTORY=TEX_DISK:[TEX.PK] +! Font names: TEX_DISK:[TEX.PK]cmr10.300pk +! TEX_DISK:[TEX.PK]cmr10.622pk +! +! 3. If the PXL_FONT_DIRECTORY value ends in ".]" then all PXL font +! files reside in various subdirectories of PXL_FONT_DIRECTORY. +! Each subdirectory name is a different font size. +! e.g. +! /PXL_FONT_DIRECTORY=TEX_DISK:[TEX.PXL.] +! Font names: TEX_DISK:[TEX.PXL.][1500]cmr10.pxl +! TEX_DISK:[TEX.PXL.][3732]cmr10.pxl +! +! 4. If the PXL_FONT_DIRECTORY value does NOT end in ".]" then all PXL +! font files reside in PXL_FONT_DIRECTORY. Each file type begins +! with a font size, followed by "PXL". +! e.g. +! e.g. +! /PXL_FONT_DIRECTORY=TEX_DISK:[TEX.PXL] +! Font names: TEX_DISK:[TEX.PXL]cmr10.1500pxl +! TEX_DISK:[TEX.PXL]cmr10.3732pxl +! +! The above hackery is an attempt to cope with the various font schemes +! used by VAX/VMS TeX sites. Note that GF files are not handled; I +! figured any sites using GF files would convert them to PK files sooner +! or later. +! +! NB In the examples above, the values given for the font qualifiers +! give a directory explicitly, but they may be passed logical names +! instead: for example, one could have performed the following: +! +! $ DEFINE/TRANSLATION_ATTRIBUTES=CONCEALED TEX_PXL_ROOT TEX_DISK:[TEX.PXL.] +! $ DEFINE TEX_PK TEX_DISK:[TEX.PK] +! +! and then the default specifications used in THIS file will access +! a pixel file for cmr10 as TEX_DISK:[TEX.PXL.1500]CMR10.PXL, whilst +! a packed file would be sought as TEX_DISK:[TEX.PK]CMR10.300PK +! +! Note that /TFM_DIRECTORY must be present by default, and must possess a +! default value, which indicates, either directly or via a logical name, +! the directory/ies in which the .TFM files are to be found. +! +! If virtual fonts are in use, /VIRTUAL_DIRECTORY should be present by +! default, and its default value should indicate where the .VF files are +! to be found; if no .VF files exist, processing can be speeded up by +! removing DEFAULT from this qualifier, or by specifying /NOVIRTUAL on +! the command line. +!----------------------------------------------------------------------- diff --git a/dviware/ln03/rmcs/dvitoln03.web b/dviware/ln03/rmcs/dvitoln03.web new file mode 100644 index 0000000000..0690fcd579 --- /dev/null +++ b/dviware/ln03/rmcs/dvitoln03.web @@ -0,0 +1,10433 @@ +% This program by D. E. Knuth is not copyrighted and can be used freely. +% Version 1 was completed in September, 1982. +% Slight changes were made in October, 1982, for version 0.7 of TeX. +% Version 1.1 corrected minor bugs (May, 1983). +% Version 2 was released with version 0.999 of TeX (July, 1983). +% Version 2.1 corrected a bug when no fonts are present (September, 1983). +% Version 2.2 corrected bugs in max_*_so_far and put1 (October, 1983). +% Version 2.3 corrected spacing of accents (March, 1984). +% Version 2.4 fixed rounding, changed oriental font conventions (April, 1984). +% Version 2.5 improved the case of zero pages (May, 1984). +% Version 2.6 introduced max_drift (June, 1984). +% Version 2.7 had minor editorial changes (August, 1984). + +% Version 1.0 of DVItoLN03 was created (as a change file to DVItype) March 1986 +% by Brian HAMILTON KELLY, Royal Military College of Science, +% Shrivenham, SWINDON, SN6 8LA, United Kingdom +% Tel: Swindon (0793) 785252 (Int'l +44-793-785252) +% e-mail: (Janet) tex@@uk.ac.cranfield.rmcs +% +% This drew heavily upon Flavio Rose's DVI2LNG program, but also +% included the work formerly performed as a separate pass by his +% LN03TOPP program (which had bugs, and was written in PL/I, for +% which we did not have a compiler!) +% Version 1.1 corrected minor bugs in the port from PL/I and displayed page +% numbers as each was processed April 1986 +% Version 1.2 used .PXL files in separate directories for each magnification, +% in the manner of Andrew Trevorrow's DVItoVDU July 1986 +% Version 1.3 introduced minor cosmetic changes and increased |max_rules| to +% 2048 July 1987 +% Version 1.4 added support for including sixel graphics +% through \special Sep 87 +% Version 1.5 merged the original DVItype.WEB and the (now hopelessly huge) +% change file, and `WEBified' the whole system. Also added proper +% support for default filenames, so that one CAN reference an +% older DVI file than the latest version. +% Version 1.6 supports oversized glyphs (by making them into invisible +% characters) and also outputs invisible characters as a single +% pixel high row of white pixels of an appropriate width +% Version 1.7 prints the glyphs of oversized characters as bitmap sixel dumps. +% Version 2.0 reads PK files instead of .PXL (if available) +% Version 2.1 corrects error reading invisible fonts from packed files and +% with invisible characters of zero TFM width. +% Version 3.0 includes wholesale rearrangement of some sections of code, to +% improve its WEB-like quality. It also adds the following +% functionality: +% The packed and unpacked font files may be provided in +% either a flat or a rooted directory structure; if logical +% names are used to specify these locations (as in the .CLD +% file provided), the files may be spread over a number of +% different directories or volumes. +% The error messages are improved over earlier versions of +% the program, and are now all indexed in the woven +% (WEAVEd?) WEB. +% The program can now handle fonts with more then 128 +% characters, up to TeX's limit of 256. Therefore, it can +% now process documents which use Silvio Levy's Greek fonts. +% Retention of the log (.TYP) file may now be forced, +% suppressed, or allowed to be determined by the success of +% the processing. +% Minor revisions and corrections have been made, in +% particular, it now correctly understands the physical +% limitations to the imaging area. +% Version 3.1 correctly computes the magnification of each font for the font +% loading reports, and also ensures that all output files are +% opened in the current default directory, even when logical +% names are used for the input file. It also extracts and +% reports the full file specification of the source (.DVI) file. +% Also introduced the /OUTPUT qualifier and file spec on /LOG. +% Version 3.1-1 adds the `special' commands that were in the original Rose +% program; this code was developed independently of (and +% simultaneously with) version 3.1 (see above), and it therefore +% seemed appropriate to give it a DEC-style version number +% extension... +% Version 3.1-2 increases |max_rules| to 16384 to cope with the output of +% BIGTeX. +% Version 3.1-3 reports an error status if the opening of a \special sixel +% file fails. The LN03 is also reset to pixel spacing units +% after the sixel file has been included. +% Version 3.1-4 avoids attempting to print non-existent glyphs; some font +% designers use non-existent characters in ligature sequences +% (for example, Georgia Tobin ligatures * with characters such +% as i, j, r, s, to select a variant form of the letter). +% With earlier versions of this program, having failed to +% download a glyph for the non-existent character, an attempt +% would be made to print it is a bitmap when processing the +% pages. +% Version 3.2 This version, and all others prior to V4.0, were never +% released: they were purely internal to RMCS whilst +% additional functionality was being incorporated. +% This version tidied up Robin Fairbairns' code, particularly +% for recognizing units. +% Version 3.2-1 Correct code so that the arguments of \special are treated +% as |ASCII_code| (they are not *necessarily* |char|s). +% Version 3.3 Provide qualifiers to define all logicals used, so that +% sites may chose to use TEX$FONTS or TEX_FONTS, etc. +% Permit use of units other than pixel for specification +% of /LEFT_MARGIN and /TOP_MARGIN. +% Version 3.3-1 Permit /LEFT_MARGIN and /TOP_MARGIN to take dimensionless +% quantity, with the assumption that it's in pixels. +% Version 3.4 Look out for virtual fonts, and reject them +% Version 3.4-1 Read VF file, and parse it +% Version 3.4-2 Map virtual font characters to real fonts, and load them +% Version 3.4-3 Now able to print simple characters from a VF +% Version 3.5 Made do_page capable of recursion to support complex +% sequences in VF files +% Version 3.5-1 Revised DVI reading code for input from |vf| +% Version 3.5-2 Scaled |dvi| movements taken from VF file +% Version 3.5-3 Corrected computation of scaling of -ve movements +% Version 3.5-4 Removed confusion caused by empty segments on |seg_list| +% Version 3.5-5 Use font_scaled_size[vfno] for scaling physical fonts! +% Version 3.5-6 Corrected storage of -ve parameters in |vf| array +% Version 3.5-7 Terminate normal text segment preceding composite character +% Version 3.6 Read TFM files only once; fold upper/lower case names +% Version 3.6-1 Guard against infinite recursion with font recurse +% Version 3.6-2 Reference to another virtual font can't map to LN03 font +% Version 3.6-3 Correct spurious checksum error +% Version 3.7 Supports landscape and portrait \specials +% Version 3.7-1 Defers bitmap output of glyphs until |eop|, like rest +% Version 3.7-2 Correct handling of bitmap glyphs in |out_list| +% Version 3.8 Support mixture of orientations on same page +% Version 3.8-1 Moved all |max...| definitions to near front of WEB +% Version 3.8-2 Changed |varying [name_size] of char| into |file_spec| +% Version 3.8-3 Included narrative describing TFM files +% Version 3.8-4 Aggregate all |glyph_info| into one vector |glyphs| +% Version 3.8-5 Cosmetic changes; errors/warnings not just to TYP file +% Version 3.8-6 Preliminary moves to set rules for missing fonts +% Version 3.9 Image glyph from missing font by a solid rule +% Version 3.9-1 Integrate |pixel_width|, etc into |glyph_map| +% Version 3.9-2 Integrate |width|, etc into |glyph_map| +% Version 3.9-3 Further speed-up, by greater use of |with glyph_map| +% Version 3.9-4 Speed up setting loop, by removing double indexing +% Version 3.9-5 Defer text too wide message until eop; report phases +% Version 3.9-6 Couple more little speed-ups, missed before +% Version 3.9-7 Cosmetic amendments; improved indexing +% Version 3.9-8 Move before Copy_sixel_file +% Version 3.91 Start unravelling |print_mode| and trays at top of form +% Version 3.91-1 Acknowledge efforts of Robin and Karsten +% Version 3.91-2 Ensure |last_page_recto| set even first time through +% Version 3.91-3 Use Karsten's |blank_follows| mechanism +% Version 3.91-4 Trim trailing spaces from |cur_name| in error message +% Version 3.91-5 Determine |ln03_master| from /DEVICE_TYPE setting +% Version 3.91-6 Provide |rd_scaled_pt|, for decoding /hfuzz, /vfuzz +% Version 3.91-7 In duplex, don't change tray until 3rd page +% Version 3.91-8 Insert sixel dumps into |seg_list| +% Version 4.0 Cosmetic changes to error messages - new release!!! + +\outer\def\N#1.#2.{\MN#1.\vfil\eject % beginning of starred section + \def\rhead{\uppercase{\ignorespaces#2}} % define running headline + \message{*\modno} % progress report + {\def\.{\string\.}\def\BS{\string\BS\space}% Prevent expansion during contents write + \edef\next{\write\cont{\Z{#2}{\modno}{\the\pageno}}}\next % to contents file + }% + \ifon\startsection{\bf\ignorespaces#2.\quad}\ignorespaces} + + +% Here is TeX material that gets inserted after \input webmac +\def\hang{\hangindent 3em\indent\ignorespaces} +\font\ninerm=cmr9 +\let\mc=\ninerm % medium caps for names like PASCAL +\font\logo=logo10 % font used for the METAFONT logo +\def\MF{{\logo META}\-{\logo FONT}} +\def\PASCAL{P{\mc ASCAL}} + +\def\(#1){} % this is used to make section names sort themselves better +\def\9#1{} % this is used for sort keys in the index + +\def\title{DVI$\,$\lowercase{to}$\,$LN03 V4.0} +\def\contentspagenumber{0} +\def\topofcontents{\null + \def\titlepage{F} % include headline on the contents page + \def\rheader{\mainfont\hfil \contentspagenumber} + \vfill + \centerline{\titlefont The {\ttitlefont DVItoLN03} processor} + \vskip 15pt + \centerline{(Version 4.0, 27th February 1991)} + \centerline{(Vax/VMS Version)} + \vfill} +\def\botofcontents{\vfill + \centerline{\mc Acknowledgements} + \centerline{\hsize 5in\baselineskip9pt + \vbox{\ninerm\noindent + This program was originally based upon Flavio Rose's change file + which, applied to David Fuch's original \.{DVItype} program, generated + his \.{DVI2LNG} program. (The output produced by \.{DVI2LNG} was then + further processed by \.{LN03TOPP} to yield a \.{LN3} file to drive a + Digital LN03 laser printer.) Further extensions and enhancements were + added, and when the \.{WEB} change file grew to twice the size of the + original \.{DVITYPE.WEB} source, a manual \.{WEB}merge operation was + performed!\endgraf + Support for \.{\\changebar} specials was provided by Robin Fairbairns. + The code for the newer DEClaser printers is due to Karsten Nyblad.}}} +\pageno=\contentspagenumber \advance\pageno by 1 +\let\maybe=\iftrue +%\let\maybe=\iffalse +\def\meta#1{{$\langle$\rm #1$\rangle$}} +\def\9#1{}% Used with @@:sort entry}{printed entry@@> + +@* Introduction. +The \.{DVItoLN03} utility program reads binary device-independent (``\.{DVI}'') +files that are produced by document compilers such as \TeX, and converts them +into a form suited to driving a Digital LN03 or LN03-Plus laser printer. The +@^LN03 laser printer@> +output file (with extension \.{LN3}) contains both the instructions to typeset +@^LN3 file@> +the required characters \&{and} the commands necessary to download the +characters required (until DEC get around to providing the Computer Modern +fonts in a ROM cartridge!). The LN03-Plus will accept, without complaint, +any number of downloaded fonts: however, only the first 14 fonts (each +consisting of up to 188 characters, in the \\{GL} and \\{GR} sets) are +actually usable for imaging glyphs: attempts to image a glyph from fonts +|15..| result in the display of a character taken from one of the first 14 +fonts loaded. In view of these limitations, \.{DVItoLN03} only downloads +the characters which are actually used within the document being processed; +the maximum possible number of characters, even if taken from different +\TeX\ fonts, are combined into each single `LN03 font'. + +The program was developed by Brian Hamilton Kelly at the Royal Military +@^Hamilton Kelly, Brian@> +College of Science. +@^RMCS@> +@^Royal Military College of Science@> +The \.{DVI2LNG} program of Flavio Rose +@^Rose, Flavio@> +@:DVI2LNG program}{\.{DVI2LNG} program@> +was used as a starting point; this had been distributed as a change file to +be applied to the original \.{DVItype} program, +@:DVItype Program}{\.{DVItype} program@> +and ``translated'' the \.{DVI} file into two output files which were then +further processed by his \.{LN03toPP} +@:LN03toPP Program}{\.{LN03toPP} program@> +program (written in PL/I), which required device-specific versions of +unpacked pixel files. The initial step was to perform the two separate +passes within a single program (therefore the present program still needs to +make two passes through the \.{DVI} file). Later work added further +functionality including use of ``ordinary'' pixel files and support for +\TeX's \.{\BS special} command to read sixel graphics dump files and include +them verbatim within the output file. More recent revisions have produced +major versions 2, 3 and 4: + +\yskip\hang\&{V2.0} Provided capability to read pixel rasters from packed +(\.{PK}) files as well as from the traditional \.{PXL} files. It also manages +to handle the glyphs of characters which are too large to load into the +LN03's memory. + +\yskip\hang\&{V3.0} Changed method of accessing font files, to allow users +flexibility in the storage philosophy they adopt. Can now handle large +(256-character) fonts, such as Levy's Greek. +@^Levy, Silvio@> +@^256-character fonts@> +@:two hundred and fifty six character fonts}{256-character fonts@> + + +\yskip\hang\&{V3.1} Robin Fairbairns of Laser Scan (Cambridge, UK) added +@^Fairbairns, Robin@> +support for Rose's \.{\BS special}s for changebar marking at V3.1-1, June +1989. + +\yskip\hang\&{V3.2} Tidied up recognition of \TeX\ \meta{physical unit}s. +Removed final vestige of `hard-wired' logical names, \\{viz:} \.{TEX\$FONTS} +@.TEX\$FONTS@> + +\yskip\hang\&{V3.3} Permitted \.{/LEFT\UL MARGIN} and \.{TOP\UL MARGIN} +qualifiers to take dimensioned lengths, instead of being restricted to +pixels. + +\yskip\hang\&{V3.4} Processed virtual font files, provided each character +was only mapped to a single character from some other font; did not support +virtual characters which mapped to a sequence of one or more characters from +other physical fonts, nor could it handle font \.{recurse}. + +\yskip\hang\&{V3.5} Handled sequences in virtual font files; still couldn't +handle font \.{recurse}. + +\yskip\hang\&{V3.6} Supports font \.{recurse}; folds multiple references to +same font (name and scale) onto single invocation. + +\yskip\hang\&{V3.7} Supports landscape and portrait specials; whole page only. + +\yskip\hang\&{V3.8} Supports mixture of landscape and portrait on same page. + +\yskip\hang\&{V3.9} Prints glyphs from missing fonts as solid rules; added +\.{/HFUZZ} and \.{/VFUZZ} qualifiers. + +\yskip\hang\&{V4.0} Supports the new DEClaser~2100 and~2200 printers (the +LN05 and LN06) in addition to the traditional LN03. With the LN06, paper +feed trays may be selected from the command line, and the duplexing +facilities controlled also. Support for these printers was provided by +Karsten Nyblad +@^Nyblad, Karsten@> +of TFL, the Danish Telecommunication Research Laboratory, and integrated +into this new release with the other features mentioned above. + +One of the stated {\it raisons d'\^^Detre\/} for \.{DVItype} is ``to serve as an +example of a program that reads \.{DVI} files correctly, for system +programmers who are developing \.{DVI}-related software.'' The paradigms for +calculation provided by this example have been followed closely in the present +program (by importing them {\it verbatim\/} from \.{DVItype}!) To quote again +from \.{DVItype}:\vskip 5pt + + \centerline{\hsize 5in\baselineskip9pt + \vbox{\ninerm\noindent + ``Programs for typesetting need to be especially careful about how they do + arithmetic; if rounding errors accumulate, margins won't be straight, + vertical rules won't line up, and so on. But if rounding is done + everywhere, even in the midst of words, there will be uneven spacing + between the letters, and that looks bad. Human eyes notice differences + of a thousandth of an inch in the positioning of lines that are close + together; on low resolution devices, where rounding produces effects + four times as great as this, the problem is especially critical. + Experience has shown that unusual care is needed even on high-resolution + equipment; for example, a mistake in the sixth significant hexadecimal + place of a constant once led to a difficult-to-find bug in some software + for the Alphatype CRS, which has a resolution of 5333 pixels per inch + (make that 5333.33333333 pixels per inch). The document compilers that + generate \.{DVI} files make certain assumptions about the arithmetic + that will be used by \.{DVI}-reading software, and if these assumptions + are violated the results will be of inferior quality.'' + }} + +The first \.{DVItype} program was designed by David Fuchs in 1979, and it +@^Fuchs, David Raymond@> +went through several versions on different computers as the format of +\.{DVI} files was evolving to its present form. + +The \.{LN3} output file produced by DVItoLN03 always commences by including +commands to down-load one or more font-files (each of a maximum of 188 +characters) to define just those characters used in the document. The rest of +the file consists of commands to set those characters where required. Because +the mapping of source characters to those in the down-loaded fonts is +arbitrary, the output file is unintelligible to human readers! + +Whilst many of the earlier changes tried to preserve the +``machine-independence'' of the program, no attempt has been made in this +version, since it is assumed that the LN03 printer will be used on a VAX +computer. In particular, |random_reading| is used on some of the input files, +and is necessary. + +The |banner| string defined here should be changed whenever \.{DVItoLN03} +gets modified. + +@d banner=='This is DVItoLN03, Vax/VMS Version 4.0' + +@ This program is written mostly in standard \PASCAL, except where it is +necessary to use extensions; for example, \.{DVItoLN03} must read files whose +names are dynamically specified, and that would be impossible in pure \PASCAL. +Many features of VAX-\PASCAL\ have been incorporated, and no attempt has been +made to ensure that all places where such nonstandard constructions are used +have been listed in the index under ``system dependencies.'' +@!@^system dependencies@> + +One of the extensions to standard \PASCAL\ that we shall deal with is the +ability to move to a random place in a binary file; another is to +determine the length of a binary file. Such extensions are not necessary +for reading \.{DVI} files, and they are not important for efficiency +reasons either. However, when creating the `font files' for +downloading the necessary characters to the LN03, \.{DVItoLN03} \&{has} to be +able to perform |random_reading|, to locate the glyph of each character within +the pixel file. Therefore, if \.{DVItoLN03} is being used with +\PASCAL s for which random file positioning is not efficiently available, +and the following definition is changed from |true| to |false|, further work +will still be required to re-code the processing of the pixel files. + +Another extension is to use a default |case| as in \.{TANGLE}, \.{WEAVE}, +etc. + + +@d random_reading==true {should we skip around in the file?} +@d othercases == otherwise {Vax/VMS default for cases not listed explicitly} +@d endcases == @+end {follows the default case in an extended |case| statement} +@f othercases == else +@f endcases == end + +@ The binary input comes from |dvi_file|, and the \.{LN3} file is written to +|ln3_file|. \.{DVItoLN03} also produces a `log' file using |type_file|. +Errors and some informational messages are written to this, and are also +written to \PASCAL's standard |output| file. The term |print| is used instead +of |write| when this program writes on |type_file|, so that all such output +could easily be redirected if desired. + +Under Vax/VMS we use double-precision for all real values. Furthermore, since +extensive reference is made to Vax/VMS system services and other library +routines, we arrange for the \PASCAL\ program to `inherit' all their +definitions (from \.{STARLET}). + +@d print(#)==write(type_file,#) +@d print_ln(#)==write_ln(type_file,#) +@d real==double + +@p @=[INHERIT ('SYS$LIBRARY:STARLET')]@> program DVI_to_LN03(@!dvi_file, + @!tfm_file,@!type_file,@!output,@!ln3_file); +label @@/ +const @@/ +type @@/ +var @@/ +procedure jump_out; forward;@# +@t\2@>@@;@# +procedure initialize; {this procedure gets things started properly} + var @!i:integer; {loop index for initializations} + begin + @@/ + print_ln(banner);@/ + @@/ + end;@# +@@; + +@ If the program has to stop prematurely, it goes to the +`|final_end|'. Another label, |done|, is used when stopping normally. + +@d final_end=9999 {label for the end of it all} +@d done=30 {go here when finished with a subtask} + +@=final_end,done; + +@ The following parameters can be changed at compile time to extend or +reduce \.{DVItoLN03}'s capacity. + +As previously mentioned, the LN03-plus is quite happy to accept any number +of downloaded fonts, but is incapable of imaging glyphs from more than +fourteen of them! (The basic LN03 won't accept more than 21 half-fonts.) +Each such font has to be selected by mapping it to one of 10 different +Select Graphic Renditions; this is reflected by the constant |max_SGR|. + +Whenever bitmaps are sent to the printer (in sixel format), it is necessary +to establish the ``printing'' position 29 pixels above the current +reference point. Despite repeated enquiry of DEC, it has not been +established why this is necessary. Naturally, we call this 29 pixels +|bitmap_offset|. This same offset also has to be applied to sixel graphics +included through a \.{\\special} command. + +When the paper orientation is selected, we may define the |page_len| and +|page_wid| in terms of the physical limits of the paper; these sizes are +as follows (for European A4 paper). +@^European A4 paper@> +(These might later become variables, and be alterable by qualifiers in the +command line.) There is, however, a further complication. In either printing +orientation, the printable area is of these dimensions; however, this printing +area starts 0.25~inches from the top left corner of the paper \\{in the +orientation it enters the printer}. Therefore in portrait mode, we can +actually print from (75,75) to (2475,3475), with (300,300) being the +``normal'' \TeX\ origin, but in landscape mode we can print (35,75) to +(3435,2475), and \TeX's origin should still be at (300,300). + +The LN03 has a physical (apparently arbitrary) restriction on the maximum size +of a downloadable glyph. For a glyph to be acceptable, it must satisfy the +inequality $$ + 2\times\lceil|num_cols|/2\rceil\times\lceil|num_rows|/8\rceil\le5700$$ + +The type |file_spec| is used for declaring data objects containing VAX/RMS +file specifications, and for declaring procedures which handle them. + +@d max_line=200 {Maximum length of any line output to the LN03} +@d max_print=175 {Maximum number of characters imaged on line} +@# +@d max_lnfonts=13 {Limitations of the LN03's hardware} +@d max_SGR=9 +@# +@d max_special=300 {maximum size of a \.{\\special} command that we can deal +with} +@d max_points=256 {number of points for the \.{\\special} rule commands} +@d max_strings=30 {Distinct string parameters of \.{\\special}s} +@d pool_size=100 {Total characters in those strings} +@# +@d bitmap_offset=29 +@# +@d paper_ht=3400 {in pixels} +@d paper_wid=2400 +@d y_port_min=75 +@d y_land_min=35 +@d page_x_min=75 +@d y_top=75 {Minimum addressable $y$ pixel} +@d y_bot=paper_ht+y_port_min {Maximum addressable $y$ pixel} +@# +@d PFS_landscape=='?23 J' {Extended A4 paper in landscape orientation} +@d PFS_portrait=='?22 J' {ditto in portrait; each preceded by |csi|} +@# +@d lnf_bufsize=2000 {Maximum block size of an LN03 ``font file'' in memory ($\approx1$MB)} +@# +@d largest_glyph=5700 +@# +@d max_fonts=100 {maximum number of distinct fonts per \.{DVI} file} +@d max_glyphs=10000 {maximum number of different characters among all fonts} +@# +@d line_length=79 {bracketed lines of output will be at most this long} +@d terminal_line_length=150 {maximum number of characters input in a single + line of input from the command line interpreter} +@# +@d stack_size=100 {\.{DVI} files shouldn't |push| beyond this depth} +@d name_size=1000 {total length of all font file names} +@# +@d name_length=255 {a file name shouldn't be longer than this} +@# +@d max_rules=16384 {maximum number of rules per page} +@d max_lap_rules=3 {maximum under/over lap of rules} +@# +@d vf_size=10000 {maximum |dvi| commands stored from virtual font files} +@# +@d max_blank_pages=100 {blank \\{verso} pages between successive \\{recto}s} + +@= +@!file_spec = varying [name_length] of char; + +@ Here are some macros for common programming idioms. + +@d incr(#) == #:=#+1 {increase a variable by unity} +@d decr(#) == #:=#-1 {decrease a variable by unity} +@d do_nothing == {empty statement} + +@ If the \.{DVI} file is badly malformed, the whole process must be aborted; +\.{DVItoLN03} will give up, after issuing an error message about the symptoms +that were noticed. + +Such errors might be discovered inside of subroutines inside of subroutines, +so a procedure called |jump_out| has been introduced. This procedure, which +simply transfers control to the label |final_end| at the end of the program, +contains the only non-local |goto| statement in \.{DVItoLN03}. +@^system dependencies@> + +@d crlf==chr(13)+chr(10) +@d abort(#)==begin + history := fatal_error; print_ln(' '); + print_ln(' Fatal error: ',#); +@!@.Fatal error ...@> + write_ln(output,crlf,'Fatal error: ',#,crlf); + jump_out; + end +@d bad_dvi(#)==abort('Bad DVI file: ',#,'!') +@!@.Bad DVI file@> +@!@:fatal error Bad DVI file}{\quad\.{Bad DVI file} \\{(q.v.)}@> +@d capacity_exceeded(#)==abort('capacity exceeded [',#,']') +@!@.capacity exceeded@> +@!@:fatal error capacity exceeded}{\quad\.{capacity exceeded} \\{(q.v.)}@> + +@p procedure jump_out; +begin goto final_end; +end; + +@* The character set. +Like all programs written with the \.{WEB} system, \.{DVItoLN03} can be +used with any character set. But it uses ASCII code internally, because +the programming for portable input-output is easier when a fixed internal +code is used, and because \.{DVI} files use ASCII code for file names +and certain other strings. + +The next few sections of \.{DVItoLN03} have therefore been copied from the +analogous ones in the \.{WEB} system routines. They have been considerably +simplified, since \.{DVItoLN03} need not deal with the controversial +ASCII codes less than @'40. If such codes appear in the \.{DVI} file, +they will be printed as question marks. + +All characters still occupy 8 bits of storage, to avoid overhead with |packed +array|s. + +@= +@!ASCII_code= @=[byte]@> " ".."~"; {a subrange of the integers} + +@ The original \PASCAL\ compiler was designed in the late 60s, when six-bit +character sets were common, so it did not make provision for lower case +letters. Nowadays, of course, we need to deal with both upper and lower case +alphabets in a convenient way, especially in a program like \.{DVItoLN03}. +So we shall assume that the \PASCAL\ system being used for \.{DVItoLN03} +has a character set containing at least the standard visible characters +of ASCII code (|"!"| through |"~"|). + +Some \PASCAL\ compilers use the original name |char| for the data type +associated with the characters in text files, while other \PASCAL s +consider |char| to be a 64-element subrange of a larger data type that has +some other name. In order to accommodate this difference, we shall use +the name |text_char| to stand for the data type of the characters in the +output file. We shall also assume that |text_char| consists of +the elements |chr(first_text_char)| through |chr(last_text_char)|, +inclusive. The following definitions should be adjusted if necessary. +@^system dependencies@> + +@d text_char == char {the data type of characters in text files} +@d first_text_char=0 {ordinal number of the smallest element of |text_char|} +@d last_text_char=255 {ordinal number of the largest element of |text_char|} + +@= +@!text_file=packed file of text_char; + +@ The \.{DVItoLN03} processor converts between ASCII code and +the user's external character set by means of arrays |xord| and |xchr| +that are analogous to \PASCAL's |ord| and |chr| functions. + +@= +@!xord: array [text_char] of ASCII_code; + {specifies conversion of input characters} +@!xchr: array [first_text_char..last_text_char] of text_char; + {specifies conversion of output characters} + +@ Under our assumption that the visible characters of standard ASCII are +all present, the following assignment statements initialize the +|xchr| array properly, without needing any system-dependent changes. + +@= +for i:=0 to @'37 do xchr[i]:='?'; +xchr[@'40]:=' '; +xchr[@'41]:='!'; +xchr[@'42]:='"'; +xchr[@'43]:='#'; +xchr[@'44]:='$'; +xchr[@'45]:='%'; +xchr[@'46]:='&'; +xchr[@'47]:='''';@/ +xchr[@'50]:='('; +xchr[@'51]:=')'; +xchr[@'52]:='*'; +xchr[@'53]:='+'; +xchr[@'54]:=','; +xchr[@'55]:='-'; +xchr[@'56]:='.'; +xchr[@'57]:='/';@/ +xchr[@'60]:='0'; +xchr[@'61]:='1'; +xchr[@'62]:='2'; +xchr[@'63]:='3'; +xchr[@'64]:='4'; +xchr[@'65]:='5'; +xchr[@'66]:='6'; +xchr[@'67]:='7';@/ +xchr[@'70]:='8'; +xchr[@'71]:='9'; +xchr[@'72]:=':'; +xchr[@'73]:=';'; +xchr[@'74]:='<'; +xchr[@'75]:='='; +xchr[@'76]:='>'; +xchr[@'77]:='?';@/ +xchr[@'100]:='@@'; +xchr[@'101]:='A'; +xchr[@'102]:='B'; +xchr[@'103]:='C'; +xchr[@'104]:='D'; +xchr[@'105]:='E'; +xchr[@'106]:='F'; +xchr[@'107]:='G';@/ +xchr[@'110]:='H'; +xchr[@'111]:='I'; +xchr[@'112]:='J'; +xchr[@'113]:='K'; +xchr[@'114]:='L'; +xchr[@'115]:='M'; +xchr[@'116]:='N'; +xchr[@'117]:='O';@/ +xchr[@'120]:='P'; +xchr[@'121]:='Q'; +xchr[@'122]:='R'; +xchr[@'123]:='S'; +xchr[@'124]:='T'; +xchr[@'125]:='U'; +xchr[@'126]:='V'; +xchr[@'127]:='W';@/ +xchr[@'130]:='X'; +xchr[@'131]:='Y'; +xchr[@'132]:='Z'; +xchr[@'133]:='['; +xchr[@'134]:='\'; +xchr[@'135]:=']'; +xchr[@'136]:='^'; +xchr[@'137]:='_';@/ +xchr[@'140]:='`'; +xchr[@'141]:='a'; +xchr[@'142]:='b'; +xchr[@'143]:='c'; +xchr[@'144]:='d'; +xchr[@'145]:='e'; +xchr[@'146]:='f'; +xchr[@'147]:='g';@/ +xchr[@'150]:='h'; +xchr[@'151]:='i'; +xchr[@'152]:='j'; +xchr[@'153]:='k'; +xchr[@'154]:='l'; +xchr[@'155]:='m'; +xchr[@'156]:='n'; +xchr[@'157]:='o';@/ +xchr[@'160]:='p'; +xchr[@'161]:='q'; +xchr[@'162]:='r'; +xchr[@'163]:='s'; +xchr[@'164]:='t'; +xchr[@'165]:='u'; +xchr[@'166]:='v'; +xchr[@'167]:='w';@/ +xchr[@'170]:='x'; +xchr[@'171]:='y'; +xchr[@'172]:='z'; +xchr[@'173]:='{'; +xchr[@'174]:='|'; +xchr[@'175]:='}'; +xchr[@'176]:='~'; +for i:=@'177 to 255 do xchr[i]:='?'; + +@ The following system-independent code makes the |xord| array contain a +suitable inverse to the information in |xchr|. + +@= +for i:=first_text_char to last_text_char do xord[chr(i)]:=@'40; +for i:=" " to "~" do xord[xchr[i]]:=i; + +@* Device-independent file format. +Before we get into the details of \.{DVItoLN03}, we need to know exactly +what \.{DVI} files are. The form of such files was designed by David R. +@^Fuchs, David Raymond@> +Fuchs in 1979. Almost any reasonable typesetting device can be driven by +a program that takes \.{DVI} files as input, and dozens of such +\.{DVI}-to-whatever programs have been written. Thus, it is possible to +print the output of document compilers like \TeX\ on many different kinds +of equipment. + +A \.{DVI} file is a stream of 8-bit bytes, which may be regarded as a +series of commands in a machine-like language. The first byte of each command +is the operation code, and this code is followed by zero or more bytes +that provide parameters to the command. The parameters themselves may consist +of several consecutive bytes; for example, the `|set_rule|' command has two +parameters, each of which is four bytes long. Parameters are usually +regarded as nonnegative integers; but four-byte-long parameters, +and shorter parameters that denote distances, can be +either positive or negative. Such parameters are given in two's complement +notation. For example, a two-byte-long distance parameter has a value between +$-2^{15}$ and $2^{15}-1$. +@.DVI {\rm files}@> + +A \.{DVI} file consists of a ``preamble,'' followed by a sequence of one +or more ``pages,'' followed by a ``postamble.'' The preamble is simply a +|pre| command, with its parameters that define the dimensions used in the +file; this must come first. Each ``page'' consists of a |bop| command, +followed by any number of other commands that tell where characters are to +be placed on a physical page, followed by an |eop| command. The pages +appear in the order that they were generated, not in any particular +numerical order. If we ignore |nop| commands and \\{fnt\_def} commands +(which are allowed between any two commands in the file), each |eop| +command is immediately followed by a |bop| command, or by a |post| +command; in the latter case, there are no more pages in the file, and the +remaining bytes form the postamble. Further details about the postamble +will be explained later. + +Some parameters in \.{DVI} commands are ``pointers.'' These are four-byte +quantities that give the location number of some other byte in the file; +the first byte is number~0, then comes number~1, and so on. For example, +one of the parameters of a |bop| command points to the previous |bop|; +this makes it feasible to read the pages in backwards order, in case the +results are being directed to a device that stacks its output face up. +Suppose the preamble of a \.{DVI} file occupies bytes 0 to 99. Now if the +first page occupies bytes 100 to 999, say, and if the second +page occupies bytes 1000 to 1999, then the |bop| that starts in byte 1000 +points to 100 and the |bop| that starts in byte 2000 points to 1000. (The +very first |bop|, i.e., the one that starts in byte 100, has a pointer of $-1$.) + +@= +@!dvi_file:byte_file; {the stuff we are \.{DVItoLN03}ing} + +@ The \.{DVI} format is intended to be both compact and easily interpreted +by a machine. Compactness is achieved by making most of the information +implicit instead of explicit. When a \.{DVI}-reading program reads the +commands for a page, it keeps track of several quantities: (a)~The current +font |f| is an integer; this value is changed only +by \\{fnt} and \\{fnt\_num} commands. (b)~The current position on the page +is given by two numbers called the horizontal and vertical coordinates, +|h| and |v|. Both coordinates are zero at the upper left corner of the page; +moving to the right corresponds to increasing the horizontal coordinate, and +moving down corresponds to increasing the vertical coordinate. Thus, the +coordinates are essentially Cartesian, except that vertical directions are +flipped; the Cartesian version of |(h,v)| would be |(h,-v)|. (c)~The +current spacing amounts are given by four numbers |w|, |x|, |y|, and |z|, +where |w| and~|x| are used for horizontal spacing and where |y| and~|z| +are used for vertical spacing. (d)~There is a stack containing +|(h,v,w,x,y,z)| values; the \.{DVI} commands |push| and |pop| are used to +change the current level of operation. Note that the current font~|f| is +not pushed and popped; the stack contains only information about +positioning. + +The values of |h|, |v|, |w|, |x|, |y|, and |z| are signed integers having up +to 32 bits, including the sign. Since they represent physical distances, +there is a small unit of measurement such that increasing |h| by~1 means +moving a certain tiny distance to the right. The actual unit of +measurement is variable, as explained below. + +@ Here is a list of all the commands that may appear in a \.{DVI} file. Each +command is specified by its symbolic name (e.g., |bop|), its opcode byte +(e.g., 139), and its parameters (if any). The parameters are followed +by a bracketed number telling how many bytes they occupy; for example, +`|p[4]|' means that parameter |p| is four bytes long. + +\yskip\hang|set_char_0| 0. Typeset character number~0 from font~|f| +such that the reference point of the character is at |(h,v)|. Then +increase |h| by the width of that character. Note that a character may +have zero or negative width, so one cannot be sure that |h| will advance +after this command; but |h| usually does increase. + +\yskip\hang|set_char_1| through |set_char_127| (opcodes 1 to 127). +Do the operations of |set_char_0|; but use the character whose number +matches the opcode, instead of character~0. + +\yskip\hang|set1| 128 |c[1]|. Same as |set_char_0|, except that character +number~|c| is typeset. \TeX82 uses this command for characters in the +range |128<=c<256|. + +\yskip\hang|set2| 129 |c[2]|. Same as |set1|, except that |c|~is two +bytes long, so it is in the range |0<=c<65536|. \TeX82 never uses this +command, which is intended for processors that deal with oriental languages; +but \.{DVItoLN03} will allow character codes greater than 255, assuming that +they all have the same width as the character whose code is $c \bmod 256$. +@^oriental characters@>@^Chinese characters@>@^Japanese characters@> + +\yskip\hang|set3| 130 |c[3]|. Same as |set1|, except that |c|~is three +bytes long, so it can be as large as $2^{24}-1$. + +\yskip\hang|set4| 131 |c[4]|. Same as |set1|, except that |c|~is four +bytes long, possibly even negative. Imagine that. + +\yskip\hang|set_rule| 132 |a[4]| |b[4]|. Typeset a solid black rectangle +of height |a| and width |b|, with its bottom left corner at |(h,v)|. Then +set |h:=h+b|. If either |a<=0| or |b<=0|, nothing should be typeset. Note +that if |b<0|, the value of |h| will decrease even though nothing else happens. +Programs that typeset from \.{DVI} files should be careful to make the rules +line up carefully with digitized characters, as explained in connection with +the |rule_pixels| subroutine below. + +\yskip\hang|put1| 133 |c[1]|. Typeset character number~|c| from font~|f| +such that the reference point of the character is at |(h,v)|. (The `put' +commands are exactly like the `set' commands, except that they simply put out a +character or a rule without moving the reference point afterwards.) + +\yskip\hang|put2| 134 |c[2]|. Same as |set2|, except that |h| is not changed. + +\yskip\hang|put3| 135 |c[3]|. Same as |set3|, except that |h| is not changed. + +\yskip\hang|put4| 136 |c[4]|. Same as |set4|, except that |h| is not changed. + +\yskip\hang|put_rule| 137 |a[4]| |b[4]|. Same as |set_rule|, except that +|h| is not changed. + +\yskip\hang|nop| 138. No operation, do nothing. Any number of |nop|'s +may occur between \.{DVI} commands, but a |nop| cannot be inserted between +a command and its parameters or between two parameters. + +\yskip\hang|bop| 139 $c_0[4]$ $c_1[4]$ $\ldots$ $c_9[4]$ $p[4]$. Beginning +of a page: Set |(h,v,w,x,y,z):=(0,0,0,0,0,0)| and set the stack empty. Set +the current font |f| to an undefined value. The ten $c_i$ parameters can +be used to identify pages, if a user wants to print only part of a \.{DVI} +file; \TeX82 gives them the values of \.{\\count0} $\ldots$ \.{\\count9} +at the time \.{\\shipout} was invoked for this page. The parameter |p| +points to the previous |bop| command in the file, where the first |bop| +has $p=-1$. + +\yskip\hang|eop| 140. End of page: Print what you have read since the +previous |bop|. At this point the stack should be empty. (The \.{DVI}-reading +programs that drive most output devices will have kept a buffer of the +material that appears on the page that has just ended. This material is +largely, but not entirely, in order by |v| coordinate and (for fixed |v|) by +|h|~coordinate; so it usually needs to be sorted into some order that is +appropriate for the device in question. \.{DVItoLN03} does do such sorting.) + +\yskip\hang|push| 141. Push the current values of |(h,v,w,x,y,z)| onto the +top of the stack; do not change any of these values. Note that |f| is +not pushed. + +\yskip\hang|pop| 142. Pop the top six values off of the stack and assign +them to |(h,v,w,x,y,z)|. The number of pops should never exceed the number +of pushes, since it would be highly embarrassing if the stack were empty +at the time of a |pop| command. + +\yskip\hang|right1| 143 |b[1]|. Set |h:=h+b|, i.e., move right |b| units. +The parameter is a signed number in two's complement notation, |-128<=b<128|; +if |b<0|, the reference point actually moves left. + +\yskip\hang|right2| 144 |b[2]|. Same as |right1|, except that |b| is a +two-byte quantity in the range |-32768<=b<32768|. + +\yskip\hang|right3| 145 |b[3]|. Same as |right1|, except that |b| is a +three-byte quantity in the range |@t$-2^{23}$@><=b<@t$2^{23}$@>|. + +\yskip\hang|right4| 146 |b[4]|. Same as |right1|, except that |b| is a +four-byte quantity in the range |@t$-2^{31}$@><=b<@t$2^{31}$@>|. + +\yskip\hang|w0| 147. Set |h:=h+w|; i.e., move right |w| units. With luck, +this parameterless command will usually suffice, because the same kind of motion +will occur several times in succession; the following commands explain how +|w| gets particular values. + +\yskip\hang|w1| 148 |b[1]|. Set |w:=b| and |h:=h+b|. The value of |b| is a +signed quantity in two's complement notation, |-128<=b<128|. This command +changes the current |w|~spacing and moves right by |b|. + +\yskip\hang|w2| 149 |b[2]|. Same as |w1|, but |b| is a two-byte-long +parameter, |-32768<=b<32768|. + +\yskip\hang|w3| 150 |b[3]|. Same as |w1|, but |b| is a three-byte-long +parameter, |@t$-2^{23}$@><=b<@t$2^{23}$@>|. + +\yskip\hang|w4| 151 |b[4]|. Same as |w1|, but |b| is a four-byte-long +parameter, |@t$-2^{31}$@><=b<@t$2^{31}$@>|. + +\yskip\hang|x0| 152. Set |h:=h+x|; i.e., move right |x| units. The `|x|' +commands are like the `|w|' commands except that they involve |x| instead +of |w|. + +\yskip\hang|x1| 153 |b[1]|. Set |x:=b| and |h:=h+b|. The value of |b| is a +signed quantity in two's complement notation, |-128<=b<128|. This command +changes the current |x|~spacing and moves right by |b|. + +\yskip\hang|x2| 154 |b[2]|. Same as |x1|, but |b| is a two-byte-long +parameter, |-32768<=b<32768|. + +\yskip\hang|x3| 155 |b[3]|. Same as |x1|, but |b| is a three-byte-long +parameter, |@t$-2^{23}$@><=b<@t$2^{23}$@>|. + +\yskip\hang|x4| 156 |b[4]|. Same as |x1|, but |b| is a four-byte-long +parameter, |@t$-2^{31}$@><=b<@t$2^{31}$@>|. + +\yskip\hang|down1| 157 |a[1]|. Set |v:=v+a|, i.e., move down |a| units. +The parameter is a signed number in two's complement notation, |-128<=a<128|; +if |a<0|, the reference point actually moves up. + +\yskip\hang|down2| 158 |a[2]|. Same as |down1|, except that |a| is a +two-byte quantity in the range |-32768<=a<32768|. + +\yskip\hang|down3| 159 |a[3]|. Same as |down1|, except that |a| is a +three-byte quantity in the range |@t$-2^{23}$@><=a<@t$2^{23}$@>|. + +\yskip\hang|down4| 160 |a[4]|. Same as |down1|, except that |a| is a +four-byte quantity in the range |@t$-2^{31}$@><=a<@t$2^{31}$@>|. + +\yskip\hang|y0| 161. Set |v:=v+y|; i.e., move down |y| units. With luck, +this parameterless command will usually suffice, because the same kind of motion +will occur several times in succession; the following commands explain how +|y| gets particular values. + +\yskip\hang|y1| 162 |a[1]|. Set |y:=a| and |v:=v+a|. The value of |a| is a +signed quantity in two's complement notation, |-128<=a<128|. This command +changes the current |y|~spacing and moves down by |a|. + +\yskip\hang|y2| 163 |a[2]|. Same as |y1|, but |a| is a two-byte-long +parameter, |-32768<=a<32768|. + +\yskip\hang|y3| 164 |a[3]|. Same as |y1|, but |a| is a three-byte-long +parameter, |@t$-2^{23}$@><=a<@t$2^{23}$@>|. + +\yskip\hang|y4| 165 |a[4]|. Same as |y1|, but |a| is a four-byte-long +parameter, |@t$-2^{31}$@><=a<@t$2^{31}$@>|. + +\yskip\hang|z0| 166. Set |v:=v+z|; i.e., move down |z| units. The `|z|' commands +are like the `|y|' commands except that they involve |z| instead of |y|. + +\yskip\hang|z1| 167 |a[1]|. Set |z:=a| and |v:=v+a|. The value of |a| is a +signed quantity in two's complement notation, |-128<=a<128|. This command +changes the current |z|~spacing and moves down by |a|. + +\yskip\hang|z2| 168 |a[2]|. Same as |z1|, but |a| is a two-byte-long +parameter, |-32768<=a<32768|. + +\yskip\hang|z3| 169 |a[3]|. Same as |z1|, but |a| is a three-byte-long +parameter, |@t$-2^{23}$@><=a<@t$2^{23}$@>|. + +\yskip\hang|z4| 170 |a[4]|. Same as |z1|, but |a| is a four-byte-long +parameter, |@t$-2^{31}$@><=a<@t$2^{31}$@>|. + +\yskip\hang|fnt_num_0| 171. Set |f:=0|. Font 0 must previously have been +defined by a \\{fnt\_def} instruction, as explained below. + +\yskip\hang|fnt_num_1| through |fnt_num_63| (opcodes 172 to 234). Set +|f:=1|, \dots, |f:=63|, respectively. + +\yskip\hang|fnt1| 235 |k[1]|. Set |f:=k|. \TeX82 uses this command for font +numbers in the range |64<=k<256|. + +\yskip\hang|fnt2| 236 |k[2]|. Same as |fnt1|, except that |k|~is two +bytes long, so it is in the range |0<=k<65536|. \TeX82 never generates this +command, but large font numbers may prove useful for specifications of +color or texture, or they may be used for special fonts that have fixed +numbers in some external coding scheme. + +\yskip\hang|fnt3| 237 |k[3]|. Same as |fnt1|, except that |k|~is three +bytes long, so it can be as large as $2^{24}-1$. + +\yskip\hang|fnt4| 238 |k[4]|. Same as |fnt1|, except that |k|~is four +bytes long; this is for the really big font numbers (and for the negative ones). + +\yskip\hang|xxx1| 239 |k[1]| |x[k]|. This command is undefined in +general; it functions as a $(k+2)$-byte |nop| unless special \.{DVI}-reading +programs are being used. \TeX82 generates |xxx1| when a short enough +\.{\\special} appears, setting |k| to the number of bytes being sent. It +is recommended that |x| be a string having the form of a keyword followed +by possible parameters relevant to that keyword. + +\yskip\hang|xxx2| 240 |k[2]| |x[k]|. Like |xxx1|, but |0<=k<65536|. + +\yskip\hang|xxx3| 241 |k[3]| |x[k]|. Like |xxx1|, but |0<=k<@t$2^{24}$@>|. + +\yskip\hang|xxx4| 242 |k[4]| |x[k]|. Like |xxx1|, but |k| can be ridiculously +large. \TeX82 uses |xxx4| when |xxx1| would be incorrect. + +\yskip\hang|fnt_def1| 243 |k[1]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<256|; font definitions will be explained shortly. + +\yskip\hang|fnt_def2| 244 |k[2]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<65536|. + +\yskip\hang|fnt_def3| 245 |k[3]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<@t$2^{24}$@>|. + +\yskip\hang|fnt_def4| 246 |k[4]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |@t$-2^{31}$@><=k<@t$2^{31}$@>|. + +\yskip\hang|pre| 247 |i[1]| |num[4]| |den[4]| |mag[4]| |k[1]| |x[k]|. +Beginning of the preamble; this must come at the very beginning of the +file. Parameters |i|, |num|, |den|, |mag|, |k|, and |x| are explained below. + +\yskip\hang|post| 248. Beginning of the postamble, see below. + +\yskip\hang|post_post| 249. Ending of the postamble, see below. + +\yskip\noindent Commands 250--255 are undefined at the present time. + +@ @d set_char_0=0 {typeset character 0 and move right} +@d set1=128 {typeset a character and move right} +@d set_rule=132 {typeset a rule and move right} +@d put1=133 {typeset a character} +@d put_rule=137 {typeset a rule} +@d nop=138 {no operation} +@d bop=139 {beginning of page} +@d eop=140 {ending of page} +@d push=141 {save the current positions} +@d pop=142 {restore previous positions} +@d right1=143 {move right} +@d w0=147 {move right by |w|} +@d w1=148 {move right and set |w|} +@d x0=152 {move right by |x|} +@d x1=153 {move right and set |x|} +@d down1=157 {move down} +@d y0=161 {move down by |y|} +@d y1=162 {move down and set |y|} +@d z0=166 {move down by |z|} +@d z1=167 {move down and set |z|} +@d fnt_num_0=171 {set current font to 0} +@d fnt1=235 {set current font} +@d xxx1=239 {extension to \.{DVI} primitives} +@d xxx4=242 {potentially long extension to \.{DVI} primitives} +@d fnt_def1=243 {define the meaning of a font number} +@d pre=247 {preamble} +@d post=248 {postamble beginning} +@d post_post=249 {postamble ending} +@d undefined_commands==250,251,252,253,254,255 + +@ The preamble contains basic information about the file as a whole. As +stated above, there are six parameters: +$$\hbox{|@!i[1]| |@!num[4]| |@!den[4]| |@!mag[4]| |@!k[1]| |@!x[k]|.}$$ +The |i| byte identifies \.{DVI} format; currently this byte is always set +to~2. (Some day we will set |i=3|, when \.{DVI} format makes another +incompatible change---perhaps in 1992.) + +The next two parameters, |num| and |den|, are positive integers that define +the units of measurement; they are the numerator and denominator of a +fraction by which all dimensions in the \.{DVI} file could be multiplied +in order to get lengths in units of $10^{-7}$ meters. (For example, there are +exactly 7227 \TeX\ points in 254 centimeters, and \TeX82 works with scaled +points where there are $2^{16}$ sp in a point, so \TeX82 sets |num=25400000| +and $|den|=7227\cdot2^{16}=473628672$.) +@^sp@> + +The |mag| parameter is what \TeX82 calls \.{\\mag}, i.e., 1000 times the +desired magnification. The actual fraction by which dimensions are +multiplied is therefore $mn/1000d$. Note that if a \TeX\ source document +does not call for any `\.{true}' dimensions, and if you change it only by +specifying a different \.{\\mag} setting, the \.{DVI} file that \TeX\ +creates will be completely unchanged except for the value of |mag| in the +preamble and postamble. (Fancy \.{DVI}-reading programs allow users to +override the |mag|~setting when a \.{DVI} file is being printed; this facility +has not been implemented in \.{DVItoLN03}.) + +Finally, |k| and |x| allow the \.{DVI} writer to include a comment, which is not +interpreted further. The length of comment |x| is |k|, where |0<=k<256|. + +@d id_byte=2 {identifies the kind of \.{DVI} files described here} + +@ Font definitions for a given font number |k| contain further parameters +$$\hbox{|c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|.}$$ +The four-byte value |c| is the check sum that \TeX\ (or whatever program +generated the \.{DVI} file) found in the \.{TFM} file for this font; +|c| should match the check sum of the font found by programs that read +this \.{DVI} file. +@^check sum@> + +Parameter |s| contains a fixed-point scale factor that is applied to the +character widths in font |k|; font dimensions in \.{TFM} files and other +font files are relative to this quantity, which is always positive and +less than $2^{27}$. It is given in the same units as the other dimensions +of the \.{DVI} file. Parameter |d| is similar to |s|; it is the ``design +size,'' and it is given in \.{DVI} units that have not been corrected for +the magnification~|mag| found in the preamble. Thus, font |k| is to be +used at $|mag|\cdot s/1000d$ times its normal size. + +The remaining part of a font definition gives the external name of the font, +which is an ASCII string of length |a+l|. The number |a| is the length +of the ``area'' or directory, and |l| is the length of the font name itself; +the standard local system font area is supposed to be used when |a=0|. +The |n| field contains the area in its first |a| bytes. + +Font definitions must appear before the first use of a particular font number. +Once font |k| is defined, it must not be defined again; however, we +shall see below that font definitions appear in the postamble as well as +in the pages, so in this sense each font number is defined exactly twice, +if at all. Like |nop| commands and \\{xxx} commands, font definitions can +appear before the first |bop|, or between an |eop| and a |bop|. + +@ The last page in a \.{DVI} file is followed by `|post|'; this command +introduces the postamble, which summarizes important facts that \TeX\ has +accumulated about the file, making it possible to print subsets of the data +with reasonable efficiency. The postamble has the form +$$\vbox{\halign{\hbox{#\hfil}\cr + |post| |p[4]| |num[4]| |den[4]| |mag[4]| |l[4]| |u[4]| |s[2]| |t[2]|\cr + $\langle\,$font definitions$\,\rangle$\cr + |post_post| |q[4]| |i[1]| 223's$[{\G}4]$\cr}}$$ +Here |p| is a pointer to the final |bop| in the file. The next three +parameters, |num|, |den|, and |mag|, are duplicates of the quantities that +appeared in the preamble. + +Parameters |l| and |u| give respectively the height-plus-depth of the tallest +page and the width of the widest page, in the same units as other dimensions +of the file. These numbers might be used by a \.{DVI}-reading program to +position individual ``pages'' on large sheets of film or paper; however, +the standard convention for output on normal size paper is to position each +page so that the upper left-hand corner is exactly one inch from the left +and the top. Experience has shown that it is unwise to design \.{DVI}-to-printer +software that attempts cleverly to center the output; a fixed position of +the upper left corner is easiest for users to understand and to work with. +Therefore |l| and~|u| are often ignored. + +Parameter |s| is the maximum stack depth (i.e., the largest excess of +|push| commands over |pop| commands) needed to process this file. Then +comes |t|, the total number of pages (|bop| commands) present. + +The postamble continues with font definitions, which are any number of +\\{fnt\_def} commands as described above, possibly interspersed with |nop| +commands. Each font number that is used in the \.{DVI} file must be defined +exactly twice: Once before it is first selected by a \\{fnt} command, and once +in the postamble. + +@ The last part of the postamble, following the |post_post| byte that +signifies the end of the font definitions, contains |q|, a pointer to the +|post| command that started the postamble. An identification byte, |i|, +comes next; this currently equals~2, as in the preamble. + +The |i| byte is followed by four or more bytes that are all equal to +the decimal number 223 (i.e., @'337 in octal). \TeX\ puts out four to seven of +these trailing bytes, until the total length of the file is a multiple of +four bytes, since this works out best on machines that pack four bytes per +word; but any number of 223's is allowed, as long as there are at least four +of them. In effect, 223 is a sort of signature that is added at the very end. +@^Fuchs, David Raymond@> + +This curious way to finish off a \.{DVI} file makes it feasible for +\.{DVI}-reading programs to find the postamble first, on most computers, +even though \TeX\ wants to write the postamble last. Most operating +systems permit random access to individual words or bytes of a file, so +the \.{DVI} reader can start at the end and skip backwards over the 223's +until finding the identification byte. Then it can back up four bytes, read +|q|, and move to byte |q| of the file. This byte should, of course, +contain the value 248 (|post|); now the postamble can be read, so the +\.{DVI} reader discovers all the information needed for typesetting the +pages. Note that it is also possible to skip through the \.{DVI} file at +reasonably high speed to locate a particular page, if that proves +desirable. This saves a lot of time, since \.{DVI} files used in production +jobs tend to be large. + +Unfortunately, however, standard \PASCAL\ does not include the ability to +@^system dependencies@> +access a random position in a file, or even to determine the length of a file. +Almost all systems nowadays provide the necessary capabilities, so \.{DVI} +format has been designed to work most efficiently with modern operating systems. +As noted above, \.{DVItoLN03} would need to be modified to limit itself to the +restrictions of standard \PASCAL\ if |random_reading| is defined to be |false|. + +@* Font metric data. +The idea behind \.{TFM} files is that typesetting routines like \TeX\ +need a compact way to store the relevant information about several +dozen fonts, and computer centers need a compact way to store the +relevant information about several hundred fonts. \.{TFM} files are +compact, and most of the information they contain is highly relevant, +so they provide a solution to the problem. + +The information in a \.{TFM} file appears in a sequence of 8-bit bytes. +Since the number of bytes is always a multiple of 4, we could +also regard the file as a sequence of 32-bit words; but \TeX\ uses the +byte interpretation. Note that the bytes are considered to be unsigned +numbers. + +@= +@!tfm_file:byte_file; {a font metric file} + +@ The first 24 bytes (6 words) of a \.{TFM} file contain twelve 16-bit +integers that give the lengths of the various subsequent portions +of the file. These twelve integers are, in order: +$$\vbox{\halign{\hfil#&$\null=\null$#\hfil\cr +|@!lf|&length of the entire file, in words;\cr +|@!lh|&length of the header data, in words;\cr +|@!bc|&smallest character code in the font;\cr +|@!ec|&largest character code in the font;\cr +|@!nw|&number of words in the width table;\cr +|@!nh|&number of words in the height table;\cr +|@!nd|&number of words in the depth table;\cr +|@!ni|&number of words in the italic correction table;\cr +|@!nl|&number of words in the lig/kern table;\cr +|@!nk|&number of words in the kern table;\cr +|@!ne|&number of words in the extensible character table;\cr +|@!np|&number of font parameter words.\cr}}$$ +They are all nonnegative and less than $2^{15}$. We must have |bc-1<=ec<=255|, +|ne<=256|, and +$$\hbox{|lf=6+lh+(ec-bc+1)+nw+nh+nd+ni+nl+nk+ne+np|.}$$ +Note that a font may contain as many as 256 characters (if |bc=0| and |ec=255|), +and as few as 0 characters (if |bc=ec+1|). + +Incidentally, when two or more 8-bit bytes are combined to form an integer of +16 or more bits, the most significant bytes appear first in the file. +This is called BigEndian order. + +@ The rest of the \.{TFM} file may be regarded as a sequence of ten data +arrays having the informal specification +$$\def\arr$[#1]#2${\&{array} $[#1]$ \&{of} #2} +\vbox{\halign{\hfil\\{#}&$\,:\,$\arr#\hfil\cr +header&|[0..lh-1]stuff|\cr +char\_info&|[bc..ec]char_info_word|\cr +width&|[0..nw-1]fix_word|\cr +height&|[0..nh-1]fix_word|\cr +depth&|[0..nd-1]fix_word|\cr +italic&|[0..ni-1]fix_word|\cr +lig\_kern&|[0..nl-1]lig_kern_command|\cr +kern&|[0..nk-1]fix_word|\cr +exten&|[0..ne-1]extensible_recipe|\cr +param&|[1..np]fix_word|\cr}}$$ +The most important data type used here is a |@!fix_word|, which is +a 32-bit representation of a binary fraction. A |fix_word| is a signed +quantity, with the two's complement of the entire word used to represent +negation. Of the 32 bits in a |fix_word|, exactly 12 are to the left of the +binary point; thus, the largest |fix_word| value is $2048-2^{-20}$, and +the smallest is $-2048$. We will see below, however, that all but one of +the |fix_word| values will lie between $-16$ and $+16$. + +@ The first data array is a block of header information, which contains +general facts about the font. The header must contain at least two words, +and for \.{TFM} files to be used with Xerox printing software it must +contain at least 18 words, allocated as described below. When different +kinds of devices need to be interfaced, it may be necessary to add further +words to the header block. + +\yskip\hang|header[0]| is a 32-bit check sum that \TeX\ will copy into the +\.{DVI} output file whenever it uses the font. Later on when the \.{DVI} +file is printed, possibly on another computer, the actual font that gets +used is supposed to have a check sum that agrees with the one in the +\.{TFM} file used by \TeX. In this way, users will be warned about +potential incompatibilities. (However, if the check sum is zero in either +the font file or the \.{TFM} file, no check is made.) The actual relation +between this check sum and the rest of the \.{TFM} file is not important; +the check sum is simply an identification number with the property that +incompatible fonts almost always have distinct check sums. +@^check sum@> + +\yskip\hang|header[1]| is a |fix_word| containing the design size of the +font, in units of \TeX\ points (7227 \TeX\ points = 254 cm). This number +must be at least 1.0; it is fairly arbitrary, but usually the design size +is 10.0 for a ``10 point'' font, i.e., a font that was designed to look +best at a 10-point size, whatever that really means. When a \TeX\ user +asks for a font `\.{at} $\delta$ \.{pt}', the effect is to override the +design size and replace it by $\delta$, and to multiply the $x$ and~$y$ +coordinates of the points in the font image by a factor of $\delta$ +divided by the design size. {\sl All other dimensions in the\/\ \.{TFM} +file are |fix_word|\kern-1pt\ numbers in design-size units.} Thus, for example, +the value of |param[6]|, one \.{em} or \.{\\quad}, is often the |fix_word| +value $2^{20}=1.0$, since many fonts have a design size equal to one em. +The other dimensions must be less than 16 design-size units in absolute +value; thus, |header[1]| and |param[1]| are the only |fix_word| entries in +the whole \.{TFM} file whose first byte might be something besides 0 or +255. @^design size@> + +\yskip\hang|header[2..11]|, if present, contains 40 bytes that identify +the character coding scheme. The first byte, which must be between 0 and +39, is the number of subsequent ASCII bytes actually relevant in this +string, which is intended to specify what character-code-to-symbol +convention is present in the font. Examples are \.{ASCII} for standard +ASCII, \.{TeX text} for fonts like \.{cmr10} and \.{cmti9}, \.{TeX math +extension} for \.{cmex10}, \.{XEROX text} for Xerox fonts, \.{GRAPHIC} for +special-purpose non-alphabetic fonts, \.{UNSPECIFIED} for the default case +when there is no information. Parentheses should not appear in this name. +(Such a string is said to be in {\mc BCPL} format.) +@^coding scheme@> + +\yskip\hang|header[12..16]|, if present, contains 20 bytes that name the +font family (e.g., \.{CMR} or \.{HELVETICA}), in {\mc BCPL} format. +This field is also known as the ``font identifier.'' +@^family name@> +@^font identifier@> + +\yskip\hang|header[17]|, if present, contains a first byte called the +|seven_bit_safe_flag|, then two bytes that are ignored, and a fourth byte +called the |face|. If the value of the fourth byte is less than 18, it has +the following interpretation as a ``weight, slope, and expansion'': Add 0 +or 2 or 4 (for medium or bold or light) to 0 or 1 (for roman or italic) to +0 or 6 or 12 (for regular or condensed or extended). For example, 13 is +0+1+12, so it represents medium italic extended. A three-letter code +(e.g., \.{MIE}) can be used for such |face| data. + +\yskip\hang|header[18..@twhatever@>]| might also be present; the individual +words are simply called |header[18]|, |header[19]|, etc., at the moment. + +@ Next comes the |char_info| array, which contains one |char_info_word| +per character. Each |char_info_word| contains six fields packed into +four bytes as follows. + +\yskip\hang first byte: |width_index| (8 bits)\par +\hang second byte: |height_index| (4 bits) times 16, plus |depth_index| + (4~bits)\par +\hang third byte: |italic_index| (6 bits) times 4, plus |tag| + (2~bits)\par +\hang fourth byte: |remainder| (8 bits)\par +\yskip\noindent +The actual width of a character is |width[width_index]|, in design-size +units; this is a device for compressing information, since many characters +have the same width. Since it is quite common for many characters +to have the same height, depth, or italic correction, the \.{TFM} format +imposes a limit of 16 different heights, 16 different depths, and +64 different italic corrections. + +Incidentally, the relation |width[0]=height[0]=depth[0]=italic[0]=0| +should always hold, so that an index of zero implies a value of zero. +The |width_index| should never be zero unless the character does +not exist in the font, since a character is valid if and only if it lies +between |bc| and |ec| and has a nonzero |width_index|. + +@ The remaining details of the format of \.{TFM} files need not concern us +further; the interested reader is referred to Knuth's standard \.{TFtoPL} +@^Knuth, D.~E.@> +@.TFtoPL@> +program for the whole picture. + +@* Input from binary files. +We have seen that a \.{DVI} file is a sequence of 8-bit bytes. The bytes +appear physically in what is called a `|packed file of 0..255|' +in \PASCAL\ lingo. + +Packing is system dependent, and many \PASCAL\ systems fail to implement +such files in a sensible way (at least, from the viewpoint of producing +good production software). For example, some systems treat all +byte-oriented files as text, looking for end-of-line marks and such +things. Therefore some system-dependent code is often needed to deal with +binary files, even though most of the program in this section of +\.{DVItoLN03} is written in standard \PASCAL. +@^system dependencies@> + +One common way to solve the problem is to consider files of |integer| +numbers, and to convert an integer in the range $-2^{31}\L x<2^{31}$ to +a sequence of four bytes $(a,b,c,d)$ using the following code, which +avoids the controversial integer division of negative numbers: +$$\vbox{\halign{#\hfil\cr +|if x>=0 then a:=x div @'100000000|\cr +|else begin x:=(x+@'10000000000)+@'10000000000; a:=x div @'100000000+128;|\cr +\quad|end|\cr +|x:=x mod @'100000000;|\cr +|b:=x div @'200000; x:=x mod @'200000;|\cr +|c:=x div @'400; d:=x mod @'400;|\cr}}$$ +The four bytes are then kept in a buffer and output one by one. (On 36-bit +computers, an additional division by 16 is necessary at the beginning. +Another way to separate an integer into four bytes is to use/abuse +\PASCAL's variant records, storing an integer and retrieving bytes that are +packed in the same place; {\sl caveat implementor!\/}) It is also desirable +in some cases to read a hundred or so integers at a time, maintaining a +larger buffer. + +Although plain \.{DVItype} sticks to simple \PASCAL, for reasons of clarity, +(even if such simplicity is sometimes unrealistic), we do things rather +differently under Vax/VMS, reading each file one disk block at a time. + +@d VAX_block_length=512 + +@= +@!eight_bits=[byte] 0..255; {unsigned one-byte quantity} +@!sixteen_bits=[word] 0..65535; {unsigned two-byte quantity} +@!byte_block=packed array [0..VAX_block_length-1] of eight_bits; +@!byte_file=packed file of byte_block; + + +@ To prepare these files for input, we |reset| them. An extension of +\PASCAL\ is needed in the case of |tfm_file|, since we want to associate +it with external files whose names are specified dynamically (i.e., not +known at compile time). The following code uses the VAX-\PASCAL\ |open| +statement; where |open(f,s)| opens the file associated with file variable |f| +using the name provided by string variable |s|; once the file variable has +been associated with the correctly named file, the |reset| statement positions +the file for reading in the usual manner. +In the case of opening the |tfm_file|, we firstly close any earlier +one which may already have been opened. If |eof(f)| is true immediately after +the file has been opened, we assume that no file named |s| is accessible. +@^system dependencies@> + +To improve the visual appearance of various VAX-\PASCAL\ file manipulation +statements, the following definition is used to represent the use of the +`named parameter' passing mechanism which instructs that any errors detected +shall be ignored, rather than causing a run-time error. + +@d VAX_continue==@=error@>:=@=continue@> + +@p procedure open_dvi_file; {prepares to read packed bytes in |dvi_file|} +begin reset(dvi_file); +dvi_count:=0; cur_block:=0; +cur_loc:=0; +end; +@# +procedure open_tfm_file; {prepares to read packed bytes in |tfm_file|} + var @!trimmed_name:file_spec; {Holds trimmed version of |cur_name|} + @!i,@!j:0..name_length; {Indices into |cur_name|} +begin close(tfm_file,VAX_continue); +trimmed_name:=''; {Initialize to empty string} +i:=name_length; +while cur_name[i]=' ' do decr(i); {we know that the name isn't all spaces!} +for j:=1 to i do trimmed_name:=trimmed_name+cur_name[j]; +open(tfm_file,cur_name,@=readonly@>,VAX_continue); +if status(tfm_file)<>0 then + abort('Font not loaded, TFM file ',trimmed_name,' can''t be opened'); +@:fatal error Font not loaded TFM file}{\qquad\.{TFM file can't be opened}@> +reset(tfm_file,VAX_continue); +tfm_count:=0; +end; + +@ If you looked carefully at the preceding code, you probably asked, +``What are |cur_loc| and |cur_name|?'' Good question. They're global +variables: |cur_loc| is the number of the byte about to be read next from +|dvi_file|, and |cur_name| is a string variable that will be set to the +current font metric file name before |open_tfm_file| is called. When the +\.{DVI} file is first |open|ed, we'll make use of the |@=user_action@>| facility +of the VAX |open| procedure to note that actual file length in |dvi_size|. +This can then be used as the value of the |dvi_length| function. + +Since we read a VAX/RMS blockfull of bytes from the \.{DVI} file, variable +|dvi_count| allows us to keep track of which byte of the current block is +the next to be ``read''. Similarly, |tfm_count| tracks the current byte of +the block read from |tfm_file|. |cur_block| tracks which particular block +of the whole file is currently in the buffer associated with |dvi_file|; +this is used when |random_reading| is used to skip around in the file. No +analogous variable is required for the |tfm_file|. + +@= +@!cur_loc:integer; {where we are about to look, in |dvi_file|} +@!cur_name:packed array[1..name_length] of char; {external name, + with no lower case letters} +@!dvi_size:integer; {Actual length of \.{DVI} file, in bytes} +@!dvi_count:integer; {number of bytes read from current block of |dvi_file|} +@!cur_block:integer; {relative position of current block of |dvi_file|} +@!tfm_count:integer; {number of bytes read from current block of |tfm_file|} + +@ It turns out to be convenient to read four bytes at a time, when we are +inputting from \.{TFM} files. The input goes into global variables +|b0|, |b1|, |b2|, and |b3|, with |b0| getting the first byte and |b3| +the fourth. + +@= +@!b0,@!b1,@!b2,@!b3: eight_bits; {four bytes input at once} + +@ The |read_tfm_word| procedure sets |b0| through |b3| to the next +four bytes in the current \.{TFM} file. +@^system dependencies@> + +@d read_tfm_file(#)==begin + if tfm_count=VAX_block_length then begin + get(tfm_file,VAX_continue); tfm_count:=0; + end; + #:=tfm_file^[tfm_count]; + incr(tfm_count); + end + +@p procedure read_tfm_word; +begin read_tfm_file(b0); read_tfm_file(b1); +read_tfm_file(b2); read_tfm_file(b3); +end; + +@ We shall use another set of simple functions to read the next byte or +bytes from |dvi_file|. There are seven possibilities, each of which is +treated as a separate function in order to minimize the overhead for +subroutine calls. +@^system dependencies@> + +Things aren't quite as simple as that, because when processing |dvi| +commands to set characters on the page, it may prove necessary to take +further |dvi| commands from a sequence read from a virtual font (\\{q.v.}). +Therefore, these routines have the option of reading |dvi| bytes from +|vf[vf_take]|. When reading |dvi| bytes from the \.{DVI} file, |vftake<0|. + +(\\{N.B.} |vf_take| and |vf_ptr| will be dealt with \&{much} later.) + +@d read_dvi_file(#)==if vf_take<0 then + begin + while dvi_count>=VAX_block_length do begin + get(dvi_file,VAX_continue); + dvi_count:=dvi_count-VAX_block_length; incr(cur_block); + end; + #:=dvi_file^[dvi_count]; + incr(dvi_count); incr(cur_loc) + end + else + begin {take ``input'' from stored sequence} + if vf_take=vf_ptr then abort('no more virtual font bytes'); +@:fatal error no more virtual font bytes}{\quad\.{no more virtual font bytes}@> + #:=vf[vf_take]; incr(vf_take) + end + +@p function get_byte:integer; {returns the next byte, unsigned} +var b:eight_bits; +begin if eof(dvi_file) then get_byte:=0 +else begin read_dvi_file(b); get_byte:=b; + end; +end; +@# +function signed_byte:integer; {returns the next byte, signed} +var b:eight_bits; +begin read_dvi_file(b); +if b<128 then signed_byte:=b @+ else signed_byte:=b-256; +end; +@# +function get_two_bytes:integer; {returns the next two bytes, unsigned} +var a,@!b:eight_bits; +begin read_dvi_file(a); read_dvi_file(b); +get_two_bytes:=a*256+b; +end; +@# +function signed_pair:integer; {returns the next two bytes, signed} +var a,@!b:eight_bits; +begin read_dvi_file(a); read_dvi_file(b); +if a<128 then signed_pair:=a*256+b +else signed_pair:=(a-256)*256+b; +end; +@# +function get_three_bytes:integer; {returns the next three bytes, unsigned} +var a,@!b,@!c:eight_bits; +begin read_dvi_file(a); read_dvi_file(b); read_dvi_file(c); +get_three_bytes:=(a*256+b)*256+c; +end; +@# +function signed_trio:integer; {returns the next three bytes, signed} +var a,@!b,@!c:eight_bits; +begin read_dvi_file(a); read_dvi_file(b); read_dvi_file(c); +if a<128 then signed_trio:=(a*256+b)*256+c +else signed_trio:=((a-256)*256+b)*256+c; +end; +@# +function signed_quad:integer; {returns the next four bytes, signed} +var a,@!b,@!c,@!d:eight_bits; +begin read_dvi_file(a); read_dvi_file(b); read_dvi_file(c); read_dvi_file(d); +if a<128 then signed_quad:=((a*256+b)*256+c)*256+d +else signed_quad:=(((a-256)*256+b)*256+c)*256+d; +end; + +@ Finally we come to the routines that are used only if |random_reading| is +|true|. The driver program below needs two such routines: |dvi_length| should +compute the total number of bytes in |dvi_file|, possibly also +causing |eof(dvi_file)| to be true; and |move_to_byte(n)| +should position |dvi_file| so that the next |get_byte| will read byte |n|, +starting with |n=0| for the first byte in the file. +@^system dependencies@> + +Such routines are, of course, highly system dependent. They are implemented +in this program by + +\yskip\hang(1) utilizing the optional |user_action| parameter of the |open| +procedure, this allows us to determine the length of the file when it is +first opened; and + +\yskip\hang(2), using the VAX-\PASCAL\ |find| procedure to read a specific +block of the file, and positioning to the correct byte by resetting the +|byte_block| pointer appropriately. + +\noindent We also make extensive use of VAX-\PASCAL's |varying array| +extension, which +facilitates the handling of variable length character strings; without them, it +would be necessary to keep track of the length of each such string, in the +fashion used by \.{DVItype} to store font names. + +The VAX-\PASCAL\ |find(f,block)| procedure reads (into file variable +|f|) the specified record of the file; these are numbered from 1 upwards, +and, since we are working with block-oriented files, each record consists of +an entire disk block. + +@f varying==array +@d VAX_find_block==@= find@> + +@p function dvi_length:integer; +begin dvi_length:=dvi_size; if dvi_size<0 then + abort('Internal error (no dvi_length)'); +@:fatal error internal error no dvi}{\qquad\.{(no dvi_length)}@> +end; +@# +procedure move_to_byte(n:integer); +begin if n div VAX_block_length <> cur_block then + begin cur_block:=n div VAX_block_length; + VAX_find_block(dvi_file,cur_block+1,VAX_continue) + end; + dvi_count:=n mod VAX_block_length; cur_loc:=n; +end; + +@* Reading the font information. +\.{DVI} file format does not include information about character widths, since +that would tend to make the files a lot longer. But a program that reads +a \.{DVI} file is supposed to know the widths of the characters that appear +in \\{set\_char} commands. Therefore \.{DVItoLN03} looks at the font metric +(\.{TFM}) files for the fonts that are involved. +@.TFM {\rm files}@> + +The character-width data appears also in other files (e.g., in \.{GF} files +that specify bit patterns for digitized characters); +thus, it is usually possible for \.{DVI} reading programs to get by with +accessing only one file per font. \.{DVItype} has a comparatively easy +task in this regard, since it needs only a few words of information from +each font; the \.{DVItoLN03} program has to go to some pains to +deal with complications that arise when a large number of large font files +all need to be accessed simultaneously. + +@ \.{DVItype} needed to know only two things about a +given character |c| in a given font |f|: (1)~Is |c| a legal character +in~|f|? (2)~If so, what is the width of |c|? It also needed to know the +symbolic name of each font, so it could be printed out, and to know +the approximate size of inter-word spaces in each font. + +For \.{DVItoLN03}, some further information is required, such as which +character in a downloaded font is to be used to image character |c| in font +|f|, and whether this imaging can be performed by the LN03 itself (from +stored downloaded fonts) or whether the glyph needs to be imaged by +downloading a bitmapped representation each time it occurs, or even replacing +it by a solid rule if no suitable file of bitmaps is available. + +The answers to these questions appear implicitly in the following data +structures. The current number of known fonts is |nf|. Each known font has +an internal number |f|, where |0<=finvalid_width|. +To cut down on page faulting with small working sets, the dimensions of each +character are held within the |glyph_map| structure (see following section), +so that all information relating to a particular glyph is held in one +contiguous section of memory: the original \.{DVItype}, and earlier versions +of \.{DVItoLN03}, used to have separate arrays |width[0..max_glyphs]|, etc., +which could require references to locations separated by |max_glyphs| +integers, making inefficient use of virtual memory. + +To obviate reloading of fonts with identical names and scaling, a further +array |font_map[f]| ordinarily holds the value |f|, but can point to a +different set of metrics if such multiple loading has been avoided. + +Virtual fonts will almost certainly introduce different physical fonts; such +fonts are given a relative reference number internally, but we will want to +supply a value for the |font_num| array that's unique to each such font. +Therefore we keep track of the highest font number allocated by \TeX\ and +then use this as a base value when reading virtual fonts. + +@d invalid_width==@'17777777777 + +@= +@!nf:0..max_fonts; {the number of known fonts} +@!font_num:array [0..max_fonts] of integer; {external font numbers} +@!font_name:array [0..max_fonts] of 0..name_size; {starting positions + of external font names} +@!names:array [0..name_size] of ASCII_code; {characters of names} +@!font_check_sum:array [0..max_fonts] of integer; {check sums} +@!font_scaled_size:array [0..max_fonts] of integer; {scale factors} +@!font_design_size:array [0..max_fonts] of integer; {design sizes} +@!font_space:array [0..max_fonts] of integer; {boundary between ``small'' + and ``large'' spaces} +@!font_bc:array [0..max_fonts] of integer; {beginning characters in fonts} +@!font_ec:array [0..max_fonts] of integer; {ending characters in fonts} +@!font_map:array [0..max_fonts] of 0..max_fonts; {internal cross-reference} +@!highest_font:0..max_fonts; + +@ An array |glyphs| has one element for each of the potential characters in +each font. Each element is a record of type |glyph_info| (defined below). +When a font definition is first read, during the gathering of font usage +statistics in the first pass, the row of this array corresponding to the +font being defined is set to indicate that every character is |unused|. As +any character in this font is found in a wanted page during that first pass, +the usage is noted. Later revisions take place when mapping characters from +\TeX's fonts to those dowloaded to the printer. + +During the second pass through the wanted pages, the character codes in +|glyphs| are used to generate the \.{LN3} file. + +|glyph_map(f)(c)=glyphs[glyph_base[f]+c]| permits us access to information +relating to an individual glyph; fields of this record, named |width|, |height| +and |depth| are accessible through macro +|char_width(f)(c)=glyphs[glyph_base[f]+c].width| and its analogues; this works +because |glyph_base[f]| contains the index into |glyphs| at which character~0 +appears (or would appear, if |font_bc[f]>0|). |glyph_ptr| is the first unused +position of the |glyphs| array. + +@d char_glyph_end(#)==#] +@d glyph_map(#)==glyphs[glyph_base[#]+char_glyph_end +@d char_width_end(#)==#].width +@d char_height_end(#)==#].height +@d char_depth_end(#)==#].depth +@d char_width(#)==glyphs[glyph_base[#]+char_width_end +@d char_height(#)==glyphs[glyph_base[#]+char_height_end +@d char_depth(#)==glyphs[glyph_base[#]+char_depth_end + +@= +@!glyphs: array [0..max_glyphs] of glyph_info; +@!glyph_base : array [0..max_fonts] of integer; {index into |glyphs|} +@!glyph_ptr : 0..max_glyphs; {index into |glyphs|, |width|, |height| and +|depth|} + +@ The array |glyphs| contains elements whose fields are used as follows: + +\yskip\centerline{\vbox{\offinterlineskip\hrule + \halign{\vrule#&\strut\quad#\hfil\quad&\vrule#&\quad#\hfil\quad&\vrule#\cr + height2pt&\omit&&\omit&\cr + &\hfil Field Name\quad&&Used for&\cr + height2pt&\omit&&\omit&\cr + \noalign{\hrule} + height2pt&\omit&&\omit&\cr + &|width|&&Character width in \.{DVI} units&\cr + &|height|&&Character height in \.{DVI} units&\cr + &|depth|&&Character depth in \.{DVI} units&\cr + &|font_code|&&Number of downloaded LN03 font containing glyph&\cr + &|char_code|&&LN03 character code to access glyph&\cr + &|loaded|&&Indicates status of glyph, as below&\cr + height2pt&\omit&&\omit&\cr + }\hrule + } +} + +The values that may be assumed by the |loaded| field are as follows: + +\item{$\bullet$} when a font is first met, all characters are set with +the value |unused|; +\item{$\bullet$} as the document is scanned, whenever a particular glyph +is used this field is set to |wanted|; +\item{$\bullet$} other values are set once the wanted pages have been +scanned, and the character font downloads created. + +\noindent Further values for the |loaded| field, and other fields, will be +defined for accessing virtual fonts. + +@== +@!download_status = (@!unused,@!wanted@|@@+);@/ +@!glyph_info = + packed record + @!width:integer; {character width, in \.{DVI} units} + @!height:integer; {character height, in \.{DVI} units} + @!depth:integer; {character depth, in \.{DVI} units} + @!char_code : eight_bits; + @!loaded : download_status; + @!font_code : 0..max_fonts; + @@; + end; + + +@ @= +nf:=0; glyph_ptr:=0; font_name[0]:=0; font_space[0]:=0; font_map[0]:=0; +highest_font:=0; + +@ It is, of course, a simple matter to print the name of a given font. + +@p procedure print_font(@!f:integer); {|f| is an internal font number} +var k:0..name_size; {index into |names|} +begin if f=nf then print('UNDEFINED!') +@.UNDEFINED@> +else begin for k:=font_name[f] to font_name[f+1]-1 do + print(xchr[names[k]]); + end; +end; + +@ Auxiliary arrays |in_width|, |in_height| and |in_depth| are used to hold +the relevant sections of the |tfm_file| as they are +input. The global variable |tfm_check_sum| is set to the check sum that +appears in the current \.{TFM} file. + +@= +@!in_width:array[0..255] of integer; {\.{TFM} width data in \.{DVI} units} +@!in_height:array[0..15] of integer; {\.{TFM} height data in \.{DVI} units} +@!in_depth:array[0..15] of integer; {\.{TFM} depth data in \.{DVI} units} +@!tfm_check_sum:integer; {check sum found in |tfm_file|} + +@ Here is a procedure that absorbs the necessary information from a +\.{TFM} file, assuming that the file has just been successfully reset +so that we are ready to read its first byte. (A complete description of +\.{TFM} file format appears in the documentation of \.{TFtoPL} and will +not be repeated here.) The procedure does not check the \.{TFM} file +for validity, nor does it give explicit information about what is +wrong with a \.{TFM} file that proves to be invalid; \.{DVI}-reading +programs need not do this, since \.{TFM} files are almost always valid, +and since the \.{TFtoPL} utility program has been specifically designed +to diagnose \.{TFM} errors. The procedure simply returns |false| if it +detects anything amiss in the \.{TFM} data. + +There is a parameter, |z|, which represents the scaling factor being +used to compute the font dimensions; it must be in the range $0; +@; +@; +@; +glyph_ptr:=gp; in_TFM:=true; goto 9999; +9997: error('---not loaded, TFM file is bad'); +@.TFM file is bad@> +9998: in_TFM:=false; +9999: end; + +@ @= +read_tfm_word; lh:=b2*256+b3; +read_tfm_word; font_bc[nf]:=b0*256+b1; font_ec[nf]:=b2*256+b3; +if font_ec[nf]; +{now |gp=glyph_ptr+font_ec[nf]-font_bc[nf]+1|} +read_tfm_word; nw:=b0*256+b1; +if (nw=0)or(nw>256) then goto 9997; +nh:=b2*256+b3; +if (nh=0)or(nh>16) then goto 9997; +read_tfm_word; nd:=b0*256+b1; +if (nd=0)or(nd>16) then goto 9997; +for k:=2 to 3+lh do + begin if eof(tfm_file) then goto 9997; + read_tfm_word; + if k=4 then + if b0<128 then tfm_check_sum:=((b0*256+b1)*256+b2)*256+b3 + else tfm_check_sum:=(((b0-256)*256+b1)*256+b2)*256+b3; + end; + +@ Whenever the program reads a \.{TFM} file, either during the main +processing loop, or when such files are read in whilst mapping virtual fonts +to physical ones, the |glyph_map| row corresponding to the physical file is +preset to indicate that none of the glyphs are used, and also to signify +that, in the absence of further information, the characters are taken from +the current font. This little segment of code used to appear in-line within +procedure |in_TFM|. + +We also indicate here that no glyphs from the font as a whole are currently +used. Once a glyph is referenced (either directly, or from within a +character packet in a virtual font), we'll mark the font as |wanted|, thus +indicating (so far as we currently know) the font \\{is} physical; this may +be changed later, if the font is found to be virtual. This information is +stored in yet another array, |font_type|. + +@= +font_type[nf]:=unused; +if glyph_ptr+font_ec[nf]-font_bc[nf]+1 > max_glyphs then + capacity_exceeded('too many glyphs: ',glyph_ptr+font_ec[nf]-font_bc[nf]+1:1, + ' > ',max_glyphs:1); +@:capacity exceeded too many glyphs}{\quad\.{too many glyphs}@> +glyph_base[nf]:=glyph_ptr-font_bc[nf]; +gp:=glyph_ptr+font_ec[nf]-font_bc[nf]+1; +for m:= glyph_ptr to gp-1 do + with glyphs[m] do + begin + loaded := unused; + font_code := nf + end + +@ At this point, we've arrived at the start of the |char_info| section of +the |tfm_file|; from each 32-bit word, we extract the indices into the +|width|, |height| and |depth| sections of the file. +@= +if gp>0 then for k:=glyph_ptr to gp-1 do +with glyphs[k] do + begin read_tfm_word; + if b0>nw then goto 9997; + width:=b0; + if (b1 div 16)>nh then goto 9997; + height:=b1 div 16; + if (b1 mod 16)>nd then goto 9997; + depth:=b1 mod 16; + end; + +@ The most important part of |in_TFM| is the width computation, which +involves multiplying the relative widths in the \.{TFM} file by the +scaling factor in the \.{DVI} file. This fixed-point multiplication +must be done with precisely the same accuracy by all \.{DVI}-reading programs, +in order to validate the assumptions made by \.{DVI}-writing programs +like \TeX82. + +Let us therefore summarize what needs to be done. Each width in a \.{TFM} +file appears as a four-byte quantity called a |fix_word|. A |fix_word| +whose respective bytes are $(a,b,c,d)$ represents the number +$$x=\left\{\vcenter{\halign{$#$,\hfil\qquad&if $#$\hfil\cr +b\cdot2^{-4}+c\cdot2^{-12}+d\cdot2^{-20}&a=0;\cr +-16+b\cdot2^{-4}+c\cdot2^{-12}+d\cdot2^{-20}&a=255.\cr}}\right.$$ +(No other choices of $a$ are allowed, since the magnitude of a \.{TFM} +dimension must be less than 16.) We want to multiply this quantity by the +integer~|z|, which is known to be less than $2^{27}$. Let $\alpha=16z$. +If $|z|<2^{23}$, the individual multiplications $b\cdot z$, $c\cdot z$, +$d\cdot z$ cannot overflow; otherwise we will divide |z| by 2, 4, 8, or +16, to obtain a multiplier less than $2^{23}$, and we can compensate for +this later. If |z| has thereby been replaced by $|z|^\prime=|z|/2^e$, let +$\beta=2^{4-e}$; we shall compute +$$\lfloor(b+c\cdot2^{-8}+d\cdot2^{-16})\,z^\prime/\beta\rfloor$$ if $a=0$, +or the same quantity minus $\alpha$ if $a=255$. This calculation must be +done exactly, for the reasons stated above; the following program does the +job in a system-independent way, assuming that arithmetic is exact on +numbers less than $2^{31}$ in magnitude. + +@= +@; +for k:=0 to nw-1 do + begin read_tfm_word; + in_width[k]:=(((((b3*z)div@'400)+(b2*z))div@'400)+(b1*z))div beta; + if b0>0 then if b0<255 then goto 9997 + else in_width[k]:=in_width[k]-alpha; + end; +@ + +@ Similarly, we store away the sets of distinct character heights and +depths; we don't need to convert |z| again. + +@= +for k:=0 to nh-1 do + begin read_tfm_word; + in_height[k]:=(((((b3*z)div@'400)+(b2*z))div@'400)+(b1*z))div beta; + if b0>0 then if b0<255 then goto 9997 + else in_height[k]:=in_height[k]-alpha; + end; +for k:=0 to nd-1 do + begin read_tfm_word; + in_depth[k]:=(((((b3*z)div@'400)+(b2*z))div@'400)+(b1*z))div beta; + if b0>0 then if b0<255 then goto 9997 + else in_depth[k]:=in_depth[k]-alpha; + end + +@ @= +begin alpha:=16*z; beta:=16; +while z>=@'40000000 do + begin z:=z div 2; beta:=beta div 2; + end; +end + +@ A \.{DVI}-reading program usually works with font files instead of +\.{TFM} files, so \.{DVItype} is atypical in that respect. \.{DVItoLN03} +actually checks information in the \.{TFM} file, \&{and} also reads an +appropriate \.{PXL} file. Font files +should, however, contain exactly the same character width data that is +found in the corresponding \.{TFM}s; check sums are used to help +ensure this. In addition, font files usually also contain the widths of +characters in pixels, since the device-independent character widths of +\.{TFM} files are generally not perfect multiples of pixels. + +The |pixel_width| field of the |glyph_map| contains this information; when +|glyphs[k].width| is the device-independent width of some character in +\.{DVI} units, |glyphs[k].pixel_width| is the corresponding width of that +character in an actual font. The macro |char_pixel_width| is set up to be +analogous to |char_width|. + +Similarly, |pixel_height| and |pixel_depth| are available; these are used +for replacing the glyph for a character for which the required bitmaps are +unavailable by the appropriately-sized rule. + +@d pixel_width_end(#)==#].pixel_width +@d pixel_height_end(#)==#].pixel_height +@d pixel_depth_end(#)==#].pixel_depth +@d char_pixel_width(#)==glyphs[glyph_base[#]+pixel_width_end +@d char_pixel_height(#)==glyphs[glyph_base[#]+pixel_height_end +@d char_pixel_depth(#)==glyphs[glyph_base[#]+pixel_depth_end + +@= +@!pixel_width, @!pixel_height, @!pixel_depth : integer; + +@ The following variables are used to hold the conversion factors for +translating device-independent units into device pixels. + +@= +@!conv:real; {converts \.{DVI} units to pixels} +@!true_conv:real; {converts unmagnified \.{DVI} units to pixels} +@!numerator,@!denominator:integer; {stated conversion ratio} +@!mag:integer; {magnification factor times 1000} + +@ The following code computes pixel widths by simply rounding the \.{TFM} +widths to the nearest integer number of pixels, based on the conversion factor +|conv| that converts \.{DVI} units to pixels. However, such a simple +formula will not be valid for all fonts, and it will often give results that +are off by $\pm1$ when a low-resolution font has been carefully +hand-fitted. For example, a font designer often wants to make the letter `m' +a pixel wider or narrower in order to make the font appear more consistent. +\.{DVI}-to-printer programs should therefore input the correct pixel width +information from font files whenever there is a chance that it may differ. +A warning message may also be desirable in the case that at least one character +is found whose pixel width differs from |conv*width| by more than a full pixel. +@^system dependencies@> +(And similarly for the height and depth values.) + +@d pixel_round(#)==round(conv*(#)) + +@= +if in_width[0]<>0 then goto 9997; {the first width should be zero} +if gp>0 then for k:=glyph_ptr to gp-1 do +with glyphs[k] do +begin + if width=0 then + begin width:=invalid_width; pixel_width:=0; + end + else begin width:=in_width[width]; + pixel_width:=pixel_round(width); + end; + height:=in_height[height]; + pixel_height:=pixel_round(height); + depth:=in_depth[depth]; + pixel_depth:=pixel_round(depth) +end + +@* Output to the terminal. Whilst DVItoLN03 is processing \.{DVI} files, it +reports its progress by outputting various messages to the terminal: in +particular, when processing each page, it reports the page number, enclosed in +`\.{[]}' brackets. Under Vax/VMS, output to the terminal is not normally +visible until |writeln| is called, since the operating system buffers output +until a line is complete. However, this would mean, for example, that output +would only appear as each line was filled. + +We therefore arrange to |open| the |output| file (synonymous with |term_out|) +specifying null carriage control; output may then be made to appear by calling +|write_ln|, but this will not give the usual accompanying newline. To start +printing on a newline, the character sequence |crlf| must be output +explicitly. + +The |term_out| file is used for terminal output. +@^system dependencies@> +The number of characters already output to a terminal line is counted +in |term_offset| so that a suitable line break may be chosen when the line +becomes ``full'. + +Messages giving page number strings being processed are contained in a +variable of type |file_spec|, because some messages may contain VAX/VMS file +names. + +@d term_out==output {the terminal, considered as an output file} + +@= + @!term_offset : 0..line_length; + +@ When each page is processed, the page number (as generated by \TeX) is written +out to the user's terminal, enclosed in `\.{[]}' brackets. The procedure +|monitor| ensures that such output does not overlap the right-margin. It +does this by counting the characters already output to the line; up to +|line_length| characters will be output. We use here the VAX-\PASCAL-specific +function |length| which returns the number of characters in a |varying of char| +which are actually occupied. + +@d VAX_length==@= length@> + +@p procedure monitor(s : file_spec); + begin if VAX_length(s)+2>line_length-term_offset then {Line is fullish!} + begin write_ln(term_out,crlf); term_offset:=0; end; + if (term_offset>0) and (s[1]='[') then {Space before a |'['|} + begin write(term_out,' '); incr(term_offset); end; + write_ln(term_out,s); + term_offset:=term_offset+VAX_length(s) + end; + +@*Displaying error messages. Later we shall make extensive use of the +following definitions, particularly when scanning the \.{DVI} file. However, +they are defined up here so that warnings may be issued by the code that +follows. Normally (when invoked from within |do_page|) the variable |a| will +contain the byte number within the \.{DVI} file at which a problem was +encountered; however, to give |show| something to work with when these macros +are used elsewhere, we also define a constant of that name, which will thus +always be within scope. + +@d show(#)==begin + if a<0 then print_ln(#) else print_ln('[',a:1,'] ',#); + if term_offset>0 then write_ln(crlf); + write_ln(term_out,#,crlf); term_offset:=0 + end +@d error(#)==begin + history := error_given; + show('Error: ',#) +@.Error:@> +end +@d warning(#)==begin + if history = spotless then history := warning_given; + show('Warning: ',#) +@.Warning:@> +end + +@== + a = -1; + +@* Optional modes of output. +\.{DVItoLN03} will print different quantities of information based on some +options that the user must specify: the typeout can be confined to a +restricted subset of the pages by specifying the desired starting page and +the maximum number of pages. Further options permit +the selection of a different position for the origin on the page, which +by default is set to the ``standard'' of one inch from the top and left +edges of the paper, and selection of ``portrait'' or ``landscape'' orientation +for the output on the printed page. All options are selected through the +use of VAX/VMS command qualifiers, but procedure |dialog| could be adapted +to carry out an interactive dialogue with a user on systems without VMS' +excellent facilities for defining commands. + +The starting page is specified by giving a sequence of 1 to 10 numbers or +asterisks separated by dots. For example, the specification `\.{1.*.-5}' +can be used to refer to a page output by \TeX\ when $\.{\\count0}=1$ +and $\.{\\count2}=-5$. (Recall that |bop| commands in a \.{DVI} file +are followed by ten `count' values.) An asterisk matches any number, +so the `\.*' in `\.{1.*.-5}' means that \.{\\count1} is ignored when +specifying the first page. If several pages match the given specification, +\.{DVItoLN03} will begin with the earliest such page in the file. The +default specification `\.*' (which matches all pages) therefore denotes +the page at the beginning of the file. + +This version of \.{DVItoLN03} uses the VMS Command Language Interpreter utility +routines to determine whether command line qualifiers are present, and to +fetch their values, which are then stored in the following variables. +@^Command Language Interpreter@> +@^system dependencies@> +The default options that hold unless over-ridden by command line qualifiers +are: + +\yskip\hang$\bullet$ \.{/starting\_page}=\.{*} +\yskip\hang$\bullet$ \.{/number\_of\_pages}=\.{1000000} +\yskip\hang$\bullet$ \.{/top\_margin} = \.{300px} +\yskip\hang$\bullet$ \.{/left\_margin}=\.{300px} +\yskip\hang$\bullet$ \.{/orientation}=\.{portrait} + +@= +@!left_marg,@!top_marg : integer; +@!orientation,@!new_orient,@!cur_orient : page_orientation; +@!h_fuzz,@!v_fuzz:integer; {controls how pedantic program is} +@!page_len,@!page_wid,@!y_min,@!x_min : integer; +@!max_pages:integer; {at most this many |bop..eop| pages will be printed} +@!resolution:real; {pixels per inch} +@!new_mag:integer; {if positive, overrides the postamble's magnification} + +@ This type allows us to keep track of whether characters are currently +being imaged in landscape or portrait orientation. + +@= +@!page_orientation = (@!portrait,@!landscape); + +@ The starting page specification is recorded in two global arrays called +|start_count| and |start_there|. For example, `\.{1.*.-5}' is represented +by |start_there[0]=true|, |start_count[0]=1|, |start_there[1]=false|, +|start_there[2]=true|, |start_count[2]=-5|. +We also set |start_vals=2|, to indicate that count 2 was the last one +mentioned. The other values of |start_count| and |start_there| are not +important, in this example. + +@= +@!start_count:array[0..9] of integer; {count values to select starting page} +@!start_there:array[0..9] of boolean; {is the |start_count| value relevant?} +@!start_vals:0..9; {the last count considered significant} +@!count:array[0..9] of integer; {the count values on the current page} + +@ @= +max_pages:=1000000; start_vals:=0; start_there[0]:=false; +top_marg:=300; left_marg:=300; orientation:=portrait; + +@ Here is a simple subroutine that tests if the current page might be the +starting page. + +@p function start_match:boolean; {does |count| match the starting spec?} +var k:0..9; {loop index} +@!match:boolean; {does everything match so far?} +begin match:=true; +for k:=0 to start_vals do + if start_there[k]and(start_count[k]<>count[k]) then match:=false; +start_match:=match; +end; + +@ The global variable |buf_ptr| is used while scanning each line of input; +it points to the first unread character in |buffer|, into which the command +line interpreter places strings by interaction with the CLI interface +procedures. + +@= +@!buffer: varying[terminal_line_length] of char; +@!buf_ptr:0..terminal_line_length; {the number of characters read} + +@ The compiler needs to know about the ``foreign'' routines used for access to +the Command Line Interpreter. VAX-\PASCAL\ permits the ``declaration'' of +external procedures, where the declaration consists of the procedure heading +alone, followed by the reserved word |extern|, in a manner analogous to +standard \PASCAL's |forward| directive. +@^system dependencies@> + +We also require the following special definitions, types, variables and +procedures to be able to get information from the command line interpreter. +The macro |VAX_string_or_empty| is used so as not to confuse W{\mc EAVE}'s +formatting of these foreign procedure interfaces. + + +@d VAX_volatile==@=[volatile]@> +@d VAX_immed==@=%immed @> +@d VAX_external==@=[external]@> +@d VAX_descr==@=%descr @> +@d VAX_ref==@=%ref @> +@d VAX_cli_present==@= cli$present@> +@d VAX_cli_get_value==@= cli$get_value@> +@d VAX_cli_negated==@"000381F8 +@d VAX_lib_find_file==@= lib$find_file@> +@# +@f VAX_volatile==do_nothing +@f VAX_descr==var +@f VAX_ref==var +@f VAX_immed==integer +@f VAX_external==var +@# +@d VAX_string_or_empty(#)==VAX_volatile varying[@!#] of char := VAX_immed 0 + +@f extern==forward + +@= +VAX_external @+function VAX_cli_present( + VAX_descr @!entity:VAX_string_or_empty(s1_len)) : integer; extern;@#@t\2@> + +VAX_external @+function VAX_cli_get_value( + VAX_descr @!entity:VAX_string_or_empty(s1_len); + VAX_descr @!returns:VAX_string_or_empty(s2_len); + VAX_ref @!retlen:VAX_volatile sixteen_bits := VAX_immed 0):integer; + extern;@#@t\2@> + +VAX_external @+function VAX_lib_find_file( + VAX_descr @!part_spec:VAX_volatile file_spec; + VAX_descr @!result_spec:VAX_volatile file_spec; + VAX_ref @!context:VAX_volatile integer; + VAX_descr @!def_spec:VAX_volatile file_spec := VAX_immed 0; + VAX_descr @!related_spec:VAX_volatile file_spec := VAX_immed 0; + VAX_ref @!stv_addr:VAX_volatile integer := VAX_immed 0; + VAX_ref @!user_flags:VAX_volatile integer := VAX_immed 0): integer; + extern;@#@t\2@> + +@ The following function |get_value| inputs the string corresponding to a +command-line qualifier and converts it to its numerical value. Calls of the +|VAX_cli_get_value(s,a)| return to the buffer parameter |a| the value placed +by the user on the command qualifier whose name is given by the string |s|; +being a system service type function, it also reports its success (or failure) +as its result. The other system service used is |VAX_cli_present(s)| which +returns an odd (success) status indication if the qualifier whose name is +given by the string |s| \&{is} present in the command line. + +One VAX-\PASCAL\ extension permits string variables to be used in place of +files for reading and writing values. The |VAX_string_read(b,i,...)| +procedure reads values into variables |i,...| from the characters stored in +the string variable |b|. The |VAX_string_status| function returns a value in +a manner entirely analogous to VAX-\PASCAL's external I/O |status| function, +but relating to the success of the previous string read. + +@d VAX_string_read==@= readv@> +@d VAX_string_status==@= statusv@> + +@p function get_value(qualifier: varying [$u1] of char):integer; + var @!i,@!stat,@!len : integer; {local workspace} + buffer: varying [terminal_line_length] of char; {buffer for qualifier + string} +begin + if odd(VAX_cli_present(qualifier)) then + begin stat:=VAX_cli_get_value(qualifier,buffer); buffer:=buffer+' '; + {append a space to ensure end can be found} + VAX_string_read(buffer,i,VAX_continue); + if VAX_string_status > 0 then + abort('Bad /',qualifier,' value! (=',buffer,')') +@:fatal error Bad qualifier}{\quad \.{Bad /}\meta{qualifier} \.{value}@> + else + get_value:=i + end else get_value:=-1 +end; + +@ Here is a routine that scans a (possibly signed) integer and computes +the decimal value. If no decimal integer starts at |buf_ptr|, the +value 0 is returned. The integer should be less than $2^{31}$ in +absolute value. + +@p function get_integer:integer; +var x:integer; {accumulates the value} +@!negative:boolean; {should the value be negated?} +begin if buffer[buf_ptr]='-' then + begin negative:=true; incr(buf_ptr); + end +else negative:=false; +x:=0; +while (buffer[buf_ptr]>='0')and(buffer[buf_ptr]<='9') do + begin x:=10*x+xord[buffer[buf_ptr]]-"0"; incr(buf_ptr); + end; +if negative then get_integer:=-x @+ else get_integer:=x; +end; + +@ One feature of the new DEClaser~2200 (otherwise known as the LN06) is a +capability of selecting from which paper tray a sheet shall be fed; the +printer has two separate trays, which can be loaded with different sizes or +colours of paper: a popular use is to have letterhead paper loaded in one +tray, and plain paper for continuation sheets in the other. Both on this +printer, and on the DEClaser~2100 (LN05), any of five different types of +paper tray can be inserted into (respectively, either, or the only) tray +slot. Paper cassettes are available to hold three different American sizes +of paper (letter, legal or executive), the ISO standard A4 size used in +Europe, or a stack of up to 15 envelopes. + +The DEClaser~2200 can be fitted with a separate envelope feeder (in addition +to the two paper trays), which can hold up to 40~envelopes. This envelope +feeder is supported by the program, but we don't (yet!) support one +further option of the LN06 which is a large capacity input tray that can +hold 1000 sheets. + +In addition, both the 2100 and 2200 models can await manual feeding of +sheets. Selection of paper source is not supported on the LN03, of course. + +\noindent Here are the values that may be listed with the \.{/feed\_tray} +qualifier: +\yskip\hang\.{ALL=}\meta{tray type} All sheets will be fed from the +specified tray. +\yskip\hang\.{FIRST=}\meta{tray type} Feed the first sheet from the +specified tray; subsequent sheets will be fed from the \.{DEFAULT\_TRAY}, +unless the next qualifier is used: +\yskip\hang\.{REST=}\meta{tray type} Feed the second and subsequent sheets +from the specified tray; the first sheet will be fed from the +\.{DEFAULT\_TRAY}, unless the \.{FIRST} tray has also been specified. + +\noindent\meta{Tray types} can take the following values: +\yskip\hang\.{DEFAULT\_TRAY} Use whichever tray is set as the default by the +printer's initialization sequence. +\yskip\hang\.{TOP\_TRAY} (This is the only tray on the DEClaser~2100.) +\yskip\hang\.{BOTTOM\_TRAY} +\yskip\hang\.{ENVELOPE\_TRAY} Feed envelopes, from the large-capacity +envelope tray option on the DEClaser~2200. +\yskip\hang\.{MANUAL\_FEED} Wait for the operator to insert each sheet +manually. + +\noindent The following values look as though they could be defined as a + \PASCAL\ enumeration type, but we need to ensure a particular + mapping to ordinal values, so we engage in a Knuthian trick here. +@^Knuth, D.~E.@> +@:TeX the Program}{{\sl\TeX\ the Program}@> +The values correspond to the $P_s$ parameter of the |DECASTC| (Automatic +Sheet-feeder Tray Control) control sequence. + +@d default_tray=0 +@d top_tray=1 +@d bottom_tray=2 +@d envelope_feeder=3 +@d manual_feed=99 + +@= +@!tray_type=default_tray..manual_feed; + +@ Here is a procedure which converts the \.{/feed\_tray} qualifier to the +appropriate numeric value. + +@p procedure @!read_tray(option:file_spec; var result:tray_type); +begin + result:=default_tray; + if odd(VAX_cli_present(option+'.TOP_TRAY')) then + result:=top_tray + else if odd(VAX_cli_present(option+'.BOTTOM_TRAY')) then + result:=bottom_tray + else if odd(VAX_cli_present(option+'.ENVELOPE_TRAY')) then + result:=envelope_feeder + else if odd(VAX_cli_present(option+'.MANUAL_FEED')) then + result:=manual_feed; + if device_type=ln03 then result:=default_tray +end; +@ The selected options are put into global variables by the |dialog| +procedure, which is called just as \.{DVItoLN03} begins. As already +explained, the |term_out| file is opened during the initialization phase, with +\.{carriage\_control}=\.{none}. Having announced the program's name, the +command line interpreter library procedures are invoked to retrieve the +qualifiers and file name from the command line. + +@p procedure dialog; +var k:integer; {loop variable} +begin rewrite(term_out); {prepare the terminal for output} +write_ln(term_out,banner,crlf);@/ +@; +@; +@; +@; +@; +@; +@; +@; +@; +@; +@; +end; + + +@ @= +start_vals:=0; start_there[0]:=false; +if odd(VAX_cli_present('STARTING_PAGE')) then + begin k:=VAX_cli_get_value('STARTING_PAGE',buffer); buffer:=buffer+' '; + if (buffer[1]<>' ') then begin + buf_ptr:= 1; k:=0; + if buffer[1]<>' ' then + repeat if buffer[buf_ptr]='*' then + begin start_there[k]:=false; incr(buf_ptr); + end + else begin start_there[k]:=true; start_count[k]:=get_integer; + end; + if (k<9)and(buffer[buf_ptr]='.') then + begin incr(k); incr(buf_ptr); + end + else start_vals:=k { anything ill-formed we just stop } + until start_vals=k + end +end + +@ @= +max_pages:=1000000; +max_pages:=get_value('NUMBER_OF_PAGES'); +if max_pages<=0 then max_pages:=1000000; + +@ @= +resolution:=300.0; { this is the LN03's resolution } + +@ @= +new_mag:=0; { no provision for magnified LN03 output yet } + +@ The value associated with the \.{/left\UL margin} and \.{/top\UL margin} +qualifiers consists of a number and a specifier for a \TeX\ \meta{physical +unit}. The values provided are translated into pixels; this uses the same +mechanism as is used for interpreting similar dimensions in \.{\BS special} +commands, so the qualifier is copied into the |spec_par| buffer used for +that interpretation. The characters have to be converted from external +representation into |ASCII_code| for this. + +@= +if odd(VAX_cli_present('LEFT_MARGIN')) then +begin + k:=VAX_cli_get_value('LEFT_MARGIN',buffer); buffer:=buffer+' '; + @; + if rd_dimension(left_marg) then + begin + print_ln(' --- assuming pixel units'); + write_ln(' --- assuming pixel units',crlf); + term_offset:=0 + end +@.assuming pixel units@> +end else left_marg := -1; +if left_marg<0 then left_marg:=300; + +if odd(VAX_cli_present('TOP_MARGIN')) then +begin + k:=VAX_cli_get_value('TOP_MARGIN',buffer); buffer:=buffer+' '; + @; + if rd_dimension(top_marg) then + begin + print_ln(' --- assuming pixel units'); + write_ln(' --- assuming pixel units',crlf); + term_offset:=0 + end +@.assuming pixel units@> +end else top_marg := -1; +if top_marg<0 then top_marg:=300; + +@ Here's how we copy the |char| values from the |buffer| (whence they have +been read from the command-line qualifier) into the |spec_par| buffer, +converting to |ASCII_code| in the process. + +@= + buf_ptr:=1; spec_len:=1; + while buf_ptr<=buffer.length do + begin + spec_par[spec_len]:=xord[buffer[buf_ptr]]; + incr(spec_len); incr(buf_ptr) + end; + spec_ptr:=1 + +@ When the paper orientation is selected, we may define the |page_len| and +|page_wid| in terms of the physical limits of the paper; these sizes have +been defined at the start of this \.{web}. + +@= +if odd(VAX_cli_present('ORIENTATION')) then +begin + if odd(VAX_cli_present('PORTRAIT')) then orientation:=portrait else + if odd(VAX_cli_present('LANDSCAPE')) then orientation:=landscape else + warning('/ORIENTATION must be "PORTRAIT" or "LANDSCAPE"; assuming "PORTRAIT"') +@:Warning: orientation must be}{\quad \.{/ORIENTATION must be ...}@> +end; +if orientation=landscape then +begin page_len:=paper_wid+page_x_min; page_wid:=paper_ht+y_land_min; + y_min:=page_x_min; x_min:=y_land_min end else +begin page_len:=paper_ht+y_port_min; page_wid:=paper_wid+page_x_min; + y_min:=y_port_min; x_min:=page_x_min end; + +@ The value associated with the \.{/hfuzz} and \.{/vfuzz} +qualifiers consists of a number and a specifier for a \TeX\ \meta{physical +unit}. The values provided are translated into scaled points, entirely +analogously with the translation of the value on the \.{/top\_margin} +qualifier into pixels. + +These ``fuzz'' values are used to control how pedantic the program is when +it discovers characters which extend beyond the right-hand margin as +reported (in the \.{DVI} file) by \TeX. The default values for these +qualifiers is \.{100sp}, which implies that ``errors'' smaller than this +(it's a very small quantity, approximately equal to the wavelength of +visible light) will be ignored. Normally \TeX\ wouldn't dream of exceeding +the margin (well, not without issuing an \.{overfull \\hbox} warning), but +with some macro packages it isn't so fussy. For example, the output of W{\sc +EAVE}, when formatting the \PASCAL\ part of a program, can extend beyond the +margin by up to \.{10pt}. By selecting a larger value of ``fuzz'', +spurious warning messages from DVItoLN03 can be suppressed. + +@= +if odd(VAX_cli_present('HFUZZ')) then +begin + k:=VAX_cli_get_value('HFUZZ',buffer); buffer:=buffer+' '; + @; + if rd_scaled_pt(h_fuzz) then + begin + print_ln(' --- assuming scaled points'); +@.assuming scaled points@> + write_ln(' --- assuming scaled points',crlf); + term_offset:=0 + end +end else h_fuzz := 0; +decr(h_fuzz); {when used, we watch for |h-max_h| exceeding this value} +if h_fuzz<0 then h_fuzz:=99; {corresponds to default of \.{100sp}} + +if odd(VAX_cli_present('VFUZZ')) then +begin + k:=VAX_cli_get_value('VFUZZ',buffer); buffer:=buffer+' '; + @; + if rd_scaled_pt(v_fuzz) then + begin + print_ln(' --- assuming scaled points'); +@.assuming scaled points@> + write_ln(' --- assuming scaled points',crlf); + term_offset:=0 + end +end else v_fuzz := 0; +decr(v_fuzz); +if v_fuzz<0 then v_fuzz:=99 + +@ The program can support the traditional LN03 (and LN03-plus) printers (but +not the LN03R ScriptPrinter, for which a DVI to PostScript program +@^PostScript@> +is required), the LN05 (DEClaser~2100) and the LN06 (DEClaser~2200). + +This variable reminds of which mode is in use: + +@= +@!device_type:(@!ln03,@!ln05,@!ln06); + +@ This section determines which value was used with the \.{/DEVICE\_TYPE} +qualifier. It is an error (something's gone wrong with the command +definition file) if this qualifier doesn't have a value. + +@= +device_type:=ln03; +if not odd(VAX_cli_present('DEVICE_TYPE')) then + abort('No device type specified') +@:fatal error No device type specified}{\quad\.{No device type specified}@> +else + if odd(VAX_cli_present('DEVICE_TYPE.LN03')) then + device_type:=ln03 + else + if odd(VAX_cli_present('DEVICE_TYPE.LN05')) then + device_type:=ln05 + else + if odd(VAX_cli_present('DEVICE_TYPE.LN06')) then + device_type:=ln06 + +@ The new DEClaser printers (models 2100 and 2200, otherwise known as the +LN05 and LN06) are capable of a number of extra ``tricks'', compared with +the original LN03; in particular, the DEClaser~2200 can print on both sides +of the paper (``duplex'' printing). The \.{/print\_mode} qualifier of the +command line interface allows us to select a number of different modes of +operation. + +\noindent The possible modes are as follows: +\yskip\hang\.{SIMPLEX} Print on one side of paper only; this is the default, +and the only method compatible with the DEClaser~2100 (LN05) and the +original LN03 (but see below). +\yskip\hang\.{DUPLEX} Print on both sides of the paper; which page gets +printed on the reverse of such a sheet is further controlled by the +\.{/duplex\_by\_page\_numbers} qualifier. +\yskip\hang\.{MASTER} Can be used in conjunction with the \.{DUPLEX} value +to produce a master set of sheets for photocopying or other production +process. The program behaves as if the printer were operating in duplex +mode, but actually prints on only one side of the paper, and ``prints'' a +blank page if it would have left the \\{verso} page blank. This option can +be used with the DEClaser~2100 (LN05), and with the traditional LN03, even +though those printers don't support genuine duplexing. +\yskip\hang\.{TUMBLED} Can be used in conjunction with genuine duplex +printing only (and thus is restricted to the DEClaser~2200). Causes +\\{verso} (left-hand) pages to be printed upside-down, therefore making the +final document suitable for binding along the short edge (long edge in +landscape mode) to make a flip-chart style document. +\yskip\hang\.{NORMAL} The opposite of \.{TUMBLED}. This is the default. + +\noindent Once again, we define an `enumeration' type with known values: + +@d default_print_mode=0 +@d true_simplex_normal=1 +@d true_simplex_tumbled=2 +@d true_duplex_normal=3 +@d true_duplex_tumbled=4 +@d duplex_master_normal=5 +@d duplex_master_tumbled=6 +@d ln03_master=7 {we have to handle this by software, since no printer support} + +@= +@!print_mode:default_print_mode..ln03_master; + +@ Here's where we analyse the \.{/print\_mode} qualifier, and set +|print_mode| accordingly: + +@= +@; +print_mode:=default_print_mode; +if odd(VAX_cli_present('PRINT_MODE')) then + if odd(VAX_cli_present('PRINT_MODE.DUPLEX')) then + if odd(VAX_cli_present('PRINT_MODE.MASTER')) then + if odd(VAX_cli_present('PRINT_MODE.TUMBLED')) then + print_mode:=duplex_master_tumbled + else print_mode:=duplex_master_normal + else + if odd(VAX_cli_present('PRINT_MODE.TUMBLED')) then + print_mode:=true_duplex_tumbled + else print_mode:=true_duplex_normal + else + if odd(VAX_cli_present('PRINT_MODE.TUMBLED')) then + print_mode:=true_simplex_tumbled + else print_mode:=true_simplex_normal; +if device_type=ln03 then + if print_mode>=duplex_master_normal then + print_mode:=ln03_master + else + print_mode:=default_print_mode + +@ Now we decide which tray shall be used for the first and subsequent sheets + +@= +if odd(VAX_cli_present('FEED_TRAY')) then + if odd(VAX_cli_present('FEED_TRAY.ALL')) then + begin + read_tray('FEED_TRAY.ALL',first_tray); + following_tray:=first_tray + end + else + begin + read_tray('FEED_TRAY.FIRST',first_tray); + read_tray('FEED_TRAY.REST',following_tray) + end + +@ Here are the variables needed to save the print tray(s) selection; also +one which determines in which manner duplexing shall take place + +@= +@!first_tray,@!following_tray:tray_type; +@!duplex_by_page_numbers:boolean; + +@ When we are printing on both sides of the paper, or simulating that +operation with the \.{MASTER} option on the \.{/PRINT\_MODE} qualifier, we +will usually elect to print \\{verso} pages when the page number (held in +|count[0]|) is even, and \\{recto} pages when it is odd (or zero). If two +odd or two even pages appear in succession, the other side of the sheet will +be left blank (or a blank page ejected in \.{MASTER} mode). + +This is the default mode of operation, when the \.{/DUPLEX\_BY\_PAGE\_NUMBERS} +qualifier is present; if this qualifier is negated, then the \\{verso} side +of the sheet will be covered with whatever page follows that printed on the +\\{recto} side, regardless of the page number; no blank pages appear, unless +explicitly generated by \TeX. + +@= +duplex_by_page_numbers:=odd(VAX_cli_present('DUPLEX_BY_PAGE_NUMBERS')) + +@ After the dialogue is over, we print the options so that the user +can see what \.{DVItoLN03} thought was specified. + +These macros allow us to show which |print_mode| and feed tray have been +selected: + +@d show_print_mode==begin +print('Print mode is '); +case print_mode of + true_simplex_normal,true_duplex_normal,duplex_master_normal: + print('normal '); + true_simplex_tumbled,true_duplex_tumbled,duplex_master_tumbled: + print('tumbled ') +endcases; +if print_mode=ln03_master then print('ln03 '); +if print_mode>=duplex_master_normal then print('master '); +if print_mode>=true_duplex_normal then + print_ln('duplex') +else + print_ln('simplex') +end +@# +@d show_tray(#)==case # of + default_tray: print_ln('fed from the default tray'); + top_tray: print_ln('fed from the top tray'); + bottom_tray: print_ln('fed from the bottom tray'); + envelope_feeder: print_ln('taken from the envelope feeder'); + manual_feed: print_ln('manually fed') +endcases + +@= +print_ln('Options selected:'); +@.Options selected@> +print(' Starting page = '); +for k:=0 to start_vals do + begin if start_there[k] then print(start_count[k]:1) + else print('*'); + if k0 then print_ln(' New magnification factor = ',new_mag/1000:8:3); +if h_fuzz>99 then print_ln(' Horizontal overruns less than ', + (h_fuzz+1)/65536.0:1:2,'pt will be ignored'); +if v_fuzz>99 then print_ln(' Depth overruns less than ', + (v_fuzz+1)/65536.0:1:2,'pt will be ignored'); +if (first_tray<>default_tray) or (following_tray<>default_tray) then + if first_tray<>following_tray then + begin + print('First sheet is '); show_tray(first_tray); + print('Following sheets are '); show_tray(following_tray) + end + else + begin + print('Paper is '); show_tray(first_tray) + end; +if print_mode<>default_print_mode then + show_print_mode; +if print_mode>=true_duplex_normal then +begin + print('Duplexing is '); + if not duplex_by_page_numbers then print('not '); + print_ln('controlled by page numbers') +end + +@* Defining fonts. +\.{DVItoLN03} reads the postamble first and loads +all of the fonts defined there; then it processes the pages. Therefore +a \\{fnt\_def} command should match a previous definition if and only +if the \\{fnt\_def} being processed is not in the postamble. + + +Since the ``wanted'' pages are read twice, {\it viz.} whilst gathering the +font usage statistics and to perform the actual type setting, font +definitions in the \.{DVI} file will actually be met {\bf three} times. The +original logic of \.{DVItype} using the global variable |in_postamble| +covers the first two occasions during the initial scan and the reading of +the postamble. The variable |substitution_pass| prevents us from getting a +``font already defined'' message when each definition is met for the third +time. + +@= +@!substitution_pass:boolean; {are we performing the actual type setting?} +@!in_postamble:boolean; {are we reading the postamble?} + +@ @= +substitution_pass:=false; +in_postamble:=false; + +@ Under the VAX/VMS operating system, no distinction is made between fonts +names \.{cmr10} and \.{CMR10}, for example. However, if \TeX\ encounters +a font name not written in the same case as those of the preloaded +format in use, it will think it is a distinct font (and under some other +operating systems, of course, the case of the name could be significant). +The following function allows us to fold upper-case letters in a font name +to lower-case, and thus avoid such infelicitous duplication. + +@p function lower(@!ch:ASCII_code): ASCII_code; +begin + if (ch>="A") and (ch<="Z") then + lower:=ch+"a"-"A" + else + lower:=ch +end; + +@ The following subroutine does the necessary things when a \\{fnt\_def} +command is being processed. + +@p procedure define_font(@!e:integer); {|e| is an external font number} +var @!f:0..max_fonts; {local index into font data structures} +@!p:integer; {length of the area/directory spec} +@!newly_defined: boolean; {first time font has been defined} +@!n:integer; {length of the font name proper} +@!c,@!q,@!d:integer; {check sum, scaled size, and design size} +@!r:0..name_length; {index into |cur_name|} +@!j,@!k:0..name_size; {indices into |names|} +@!mismatch:boolean; {do names disagree?} +begin if nf=max_fonts then capacity_exceeded('too many fonts (max fonts=', + max_fonts:1,')'); +@:capacity exceeded too many fonts}{\quad \.{too many fonts}@> +if e > highest_font then highest_font := e; +font_num[nf]:=e; f:=0; font_map[nf]:=nf; +while font_num[f]<>e do incr(f); +@; +if in_postamble then + begin if (f + end +else begin if f=nf then warning('---this font wasn''t loaded before!'); +@:Warning: this font wasn't loaded before}{\quad \.{this font wasn't loaded before}@> + end; +newly_defined:=f=nf;@/ +@; +if f=nf then @ +else +begin + @; + if newly_defined and (font_map[nf] + incr(nf) {the ``new'' font is officially present, but remapped} + end +end; +end; + +@ When we reach the point at which it might be found necessary to read the +\TeX\ font metrics from the \.{TFM} file, we can save a little effort if +we've already loaded a font with identical name and at the same scaled size. +In fact, this is essential with such virtual fonts as \.{recurse}, because +otherwise we might go on loading the same \.{TFM} file \\{ad infinitum}! +Variable |mismatch| is misused in the |while| loop such that the loop will +exit if the name of font |f| is identical to that of font |nf|. If the +names differ, the loop continues until |f=nf|. + +@= +f:=font_map[f]; {it might already map elsewhere!} +if f=nf then {it's got to \&{be} a new font, of course!} +begin + f:=0; mismatch:=true; + while (f; + if mismatch then incr(f) + end; {|while f|} + if f= +begin if font_check_sum[f]<>c then + warning('---checksum doesn''t match previous definition!'); +@:Warning: checksum doesn't match}{\quad\.{checksum doesn't match}@> +if font_scaled_size[f]<>q then + warning('---scaled size doesn''t match previous definition!'); +@:Warning: scaled size doesn't match}{\quad\.{scaled size doesn't match}@> +if font_design_size[f]<>d then + warning('---design size doesn''t match previous definition!'); +@:Warning: design size doesn't match}{\quad\.{design size doesn't match}@> +@; +if mismatch then warning('---font name doesn''t match previous definition!'); +@:Warning: font name doesn't match}{\quad\.{font name doesn't match}@> +end + +@ This little chunk of code compares the font names stored in +|names[font_name[f]..font_name[f+1]-1]| and +|names[font_name[nf]..font_name[nf+1]-1]|; if any character differs, or the +lengths of the names differ, then |mismatch| will be set. + +@= +begin + j:=font_name[f]; k:=font_name[nf]; mismatch:=false; + while jnames[k] then mismatch:=true; + incr(j); incr(k); + end; {|while j|} + if k<>font_name[nf+1] then mismatch:=true +end +@ @= +c:=signed_quad; font_check_sum[nf]:=c;@/ +q:=signed_quad; font_scaled_size[nf]:=q;@/ +d:=signed_quad; font_design_size[nf]:=d;@/ +p:=get_byte; n:=get_byte; +if font_name[nf]+n+p>name_size then + capacity_exceeded('too many names (name size=',name_size:1,')'); +@:capacity exceeded too many names}{\quad\.{too many names}@> +font_name[nf+1]:=font_name[nf]+n+p; +if not substitution_pass then + print('Font ',e:1,': '); +if n+p=0 then print('null font name!') +@.null font name@> +else for k:=font_name[nf] to font_name[nf+1]-1 do names[k]:=lower(get_byte); +incr(nf); if not substitution_pass then print_font(nf-1); decr(nf) + +@ @= +begin @; +open_tfm_file; +if (q<=0)or(q>=@'1000000000) then + abort('Font not loaded, bad scale (',q:1,')!') +@:fatal error Font not loaded bad scale}{\qquad\.{bad scale}@> + else if (d<=0)or(d>=@'1000000000) then + abort('Font not loaded, bad design size (',d:1,')!') +@:fatal error Font not loaded bad design size}{\qquad\.{bad design size}@> + else if in_TFM(q) then @; +end + +@ Strictly speaking, we should derive the width of a `thin space' from +|param[6]| in the |tfm_file|, but this program (in common with such paragons +of virtue as \.{DVItype}!) doesn't bother to read that far in the file; so +we assume that \.{1em} in the font is equivalent to the design size, and +knowing that an \.{em} in the Computer Modern fonts is \.{18u\#} wide, take +one-sixth of this to represent the `thin space'. + +@= +begin font_space[nf]:=q div 6; {this is a 3-unit ``thin space''} +if (c<>0)and(tfm_check_sum<>0)and(c<>tfm_check_sum) then + warning('checksum doesn''t match; DVI=',c:1,' vs. TFM=',tfm_check_sum:1); +@:Warning: checksum doesn\'t match}{\quad\.{checksum doesn't match}@> +print('---loaded at size ',q:1,' DVI units'); +d:=round((100.0*conv*q)/(true_conv*d)); +if d<>100 then + print(' (this font is magnified ',d:1,'%)'); +@.this font is magnified@> +incr(nf); {now the new font is officially present} +font_space[nf]:=0; {for |out_space| and |out_vmove|} +end + +@ The string |cur_name| is supposed to be set to the external name of the +\.{TFM} file for the current font. This usually means that we need to +prepend the name of the default directory, and +to append the suffix `\.{.TFM}'. Furthermore, we change lower case letters +to upper case, since |cur_name| is a \PASCAL\ string. +If |p=0|, i.e., if no font directory has been specified, \.{DVItoLN03} +is supposed to use the default font directory, which is a +system-dependent place where the standard fonts are kept; in the current +implementation, this will have been read into |tfm_directory| from the +command-line qualifier \.{/font\UL directory}. +@^system dependencies@> + +@= +for k:=1 to name_length do cur_name[k]:=' '; +if p=0 then + begin for k:=1 to tfm_directory.length do + cur_name[k]:=tfm_directory.body[k]; + r:=tfm_directory.length; + end +else r:=0; +for k:=font_name[nf] to font_name[nf+1]-1 do + begin incr(r); + if r+4>name_length then + capacity_exceeded('font file name too long (max length=',name_length:1,')'); +@:capacity exceeded font file name}{\quad\.{font file name too long}@> + if (names[k]>="a")and(names[k]<="z") then + cur_name[r]:=xchr[names[k]-@'40] + else cur_name[r]:=xchr[names[k]]; + end; +cur_name[r+1]:='.'; cur_name[r+2]:='T'; cur_name[r+3]:='F'; cur_name[r+4]:='M' + +@* Accumulation of page. We save a page before outputting it, to minimize the +complexity of the page for the LN03. + +The page is stored as a series of linked lists of ``segments'', with +(potentially) one such list being stored for each pixel position in the +vertical direction. + +The individual segments are a structure, containing the $x$-coordinates of the +start and finish of the text. We also record the current font in which the +text is to be set, and a pointer to the next segment in the list. + +We therefore declare here the structure to hold the segment, and an array of +pointers, one for each vertical pixel position. We also provide a further two +segment pointers, one for the ``current'' segment, and another pointing to a +list of allocated, but otherwise unused, segments. Thus it is only necessary +to call for storage allocation when the free list is exhausted. + +If a glyph proved to have too large a bitmap for it to have been downloaded +as a character into the LN03, a segment was appended which references that +glyph alone; this is necessary to ensure that the bitmaps are only output +once the |eop| has been met, to accommodate changes of orientation brought +about by \.{\\special} commands. + +@d max_text=max_print {Largest text segment held in a record} + +@= + @!string = varying [10] of char; + {to hold character representations of integers} + @!segment = packed record + @!next : ^segment; {pointer to next segment, or |nil|} + @!xs,@!xe : integer; {$x$-coords of start and finish of text} + @!font : integer; {LN03 downloaded font \#; external font for bitmaps} + @!ch : eight_bits; {character from LN03 internal font} + @!seg_type : (@!glyph_string,@!bitmap,@!sixel_dump); + @!direction : page_orientation; {|landscape| or |portrait|} + @!text : varying [max_text] of char; {sequence for output to printer} + end; + +@ There is one |seg_list| pointer for each possible horizontal row of pixels +on the paper; |cur_seg| points to the current segment, whilst |free_list_seg| +maintains a list of free segments. Any characters which would appear outside +the bounds of the paper are accumulated in segments of the |lost_seg| list. + +@= + @!seg_list : array [y_land_min..paper_ht+y_port_min] of ^segment; + @!cur_seg, @!free_seg_list : ^segment; + @!lost_seg : ^segment; {For segments set off the paper} + @!seg_max : integer; {could be used for statistics} + +@ @= + free_seg_list:=nil; cur_seg:=nil; lost_seg:=nil; + for k:=y_land_min to paper_ht+y_port_min do seg_list[k]:=nil; + seg_max:=0; + top_of_page:=true; + +@ The procedure |new_segment| allocates storage for a new segment. The +program maintains a |free_seg_list| to which processed segments are returned; +however, if no free segments remain on this list (as will obtain on first use +of the program), the \PASCAL\ |new| function is used to allocate an +appropriate area. + +After the segment has been allocated, as many fields as possible are +completed: (1) the |next| field points to the existing |seg_list| to which +this new segment now belongs; (2) the |font| field records the font currently +selected; (3) the |seg_list| is made to point to this new segment. If the +text is known to be invalid (for the case in which it has been discovered that +the text will not fit on the physical paper), then the new segment is added +instead to the |lost_seg| list, and the |font| field is used to record the +$y$-position at which \TeX\ had tried to locate the text. + +@p procedure new_segment(@!valid,@!offset:boolean; + @!font_code,@!ch_code:integer); + begin + @ ; + @ + end; {|new_segment|} + +@ If the |free_seg_list| is empty, either we've never allocated any segments +before, or we've used them all. We therefore use the standard \PASCAL\ +allocator function, |new|. + +Alternatively, we just detach the first segment from the |free_seg_list|. + +@= +if free_seg_list = nil then +begin new(cur_seg); + incr(seg_max) +end else +begin + cur_seg:=free_seg_list; + free_seg_list:=cur_seg^.next +end + +@ If the character being set is correctly within the imaging area of the +paper, we add the new segment to the segment list associated with its vertical +position on the page, and record the |ln_font| in which the character shall be +output. + +Alternatively, we add the segment to the list of |lost_seg|s, and use the +|font| field to record the vertical |y_pos| at which \TeX\ \\{thought} it +was imaging the text. + +References to actual paper positions are always offset by the setting of +|left_marg| and |top_marg|. + +@d x_pos==hh+left_marg {Actual paper coordinates} +@d y_pos==vv+top_marg + +@= +with cur_seg^ do + if valid then + begin + ch:=ch_code; + direction:=new_orient; + if offset then {oversized glyphs and sixel graphics inclusions} + begin + next:=seg_list[y_pos+bitmap_offset]; {Goes on `lower' list} + seg_type:=bitmap; {this is corrected externally if necessary} + font:=cur_font; {record index into fonts for later file opening} + seg_list[y_pos+bitmap_offset]:=cur_seg {Put at front of the list} + end + else + begin + next:=seg_list[y_pos]; + seg_type:=glyph_string; + font:=font_code; {record number of a \\{downloaded} font} + seg_list[y_pos]:=cur_seg {Put at front of the list} + end + end else + begin next:=lost_seg; {Don't put it on paper} + font:=y_pos; {Remember where \TeX\ wanted to put it} + lost_seg:=cur_seg + end + + +@ Procedure |finish_seg| is used to discard segments which record text which +was set off the paper, after making appropriate error indications in the log +(\.{TYP}) file. Discarded segments are returned to the |free_seg_list|. + +The procedure is also called when a glyph is met that cannot become a member +of that held in |cur_seg|; this just results in |cur_seg:=nil|. The segment +is already attached to some part of |seg_list| array, so nothing further is +required, and nothing gets lost! + +@p procedure finish_seg; + begin + while (cur_seg<>nil) and (cur_seg=lost_seg) do + begin {We've got something set off the paper} + with cur_seg^ do + begin + warning('Characters ''',text,''' set off paper '); +@:Warning: Characters set off paper}{\quad\.{Characters ... set off paper}@> + write_ln(term_out,'(see log file)',crlf); + print_ln('( x = ',xs:1,'..',xe:1,', y = ',font:1,' ) - ignored'); + lost_seg:=next; next:=free_seg_list; free_seg_list:=cur_seg; + cur_seg:=lost_seg + end; + end; + cur_seg:=nil {Forget that we've got a current segment} + end; + +@ The function |str_int| yields a minimum length ASCII representation for its +integer parameter |num|. It does this by invoking the VAX-\PASCAL\ specific +function |dec(n,f,d)|, which yields an |f| character-long string containing +the decimal representation of the integer |n| occupying |d| digits at the +right-hand end of the string; if necessary leading `\.0' characters are +inserted to ensure that |d| digits are printed. (The leading |f-d| characters +of the string would be filled with the space character `\.\SP', but we +ensure that |f| and |d| are both just wide enough to avoid such a problem!) + +@d VAX_decimal==@=dec@> + +@p function str_int(num : integer) : string; + var field,digits : integer; + begin if num = 0 then digits:=1 else + digits:=trunc(ln(abs(num))/ln(10))+1; + {$\bigl\lceil\log_{10}\vert\hbox{\\{num}}\vert\bigr\rceil$ is number of digits + required} + field:=digits; + if num < 0 then incr(field); + str_int:=VAX_decimal(num,field,digits) + end; + +@ We define here some non-printing control characters, which will later be +required for control and escape sequences. + +@d LF==chr(@"0A) +@d FF==chr(@"0C) +@d esc==chr(@"1B) {The ASCII ESCape character} +@d csi==chr(@"9B) {Control Sequence Introducer} +@d dcs==chr(@"90) {Device Control String} +@d st==chr(@"9C) {String Terminator} + +@ The following |move_forward| procedure includes within the text of a segment +the appropriate LN03 |HPR| (Horizontal Position Relative) control sequence to +instruct the printer to move the printing position to the right. This +sequence consists of the control sequence introducer, |csi|, followed by the +motion expressed in pixels, followed by the sequence terminator `\.a'. + +@p procedure move_forward(dist:integer); + begin + cur_seg^.text:=cur_seg^.text + csi+str_int(dist)+'a'; + end; + +@ Because of the restrictions of \PASCAL, we have to make a |forward| +declaration of procedure |do_page|. The procedure is called (recursively) +to interpret the |dvi| bytes stored from a character packet in a virtual +font. It also implements the normal operations for interpreting the +contents of a page read from the \.{DVI} file. + +@p function do_page(@!vf_start:integer):boolean; forward; + +@ Procedure |ord_text| adds a single character, |ch|, taken from the +|cur_font|, to a segment preparatory to its being ``set'' on the paper. The +procedure cannot be declared at this point in the \.{WEB} source because it +references a number of procedures that haven't yet been declared. However, +we'll arrange for it to appear in the correct part of the \PASCAL\ later on. + +If the character is taken from a virtual font, and requires more than the +simple operation of setting a single character from a single font, then this +procedure calls |do_page| recursively to interpret the sequence of |dvi| +bytes that have been stored into |vf| from the \.{VF} file. + +This macro is equivalent to |glyph_map(cur_font)(#)|, assuming that +|cur_base=glyph_base[cur_font]|. + +@d cur_font_glyph(#)==glyphs[cur_base+#] + +@= +procedure ord_text(ch:integer); + var @!good : boolean; +begin + with cur_font_glyph(ch) do + begin + @; + @; + if loaded=virtual then + begin + finish_seg; {Whatever precedes this character to be treated +separately} + if not do_page(seq_off) then + abort('VF packet failed [',cur_font:1,',',ch:1,']!'); +@:fatal error VF packet failed}{\quad\.{VF packet failed}@> + finish_seg; {Don't run into next character or record this one's +width twice} + end + else begin + @; + @ + end + end +end {|procedure ord_text|} + +@ If the character would be set off the physical paper addressable by the LN03 +printer, the segment belongs to the |lost_seg| list. + +@= +if (x_pospage_wid) or (y_pospage_len) then +begin + good := false; + if (cur_seg<>nil) then + begin + if (cur_seg<>lost_seg) then + finish_seg {earlier glyphs OK, even though this is off paper} + else + if cur_seg^.font<>y_pos then finish_seg {these were off paper, but on + a different row} + end; +end else@/ +begin {The character fits on the paper} + good := true; + if cur_seg<>nil then + begin + if cur_seg=lost_seg then finish_seg {report earlier off-paper chars} + else + if cur_seg^.seg_type=bitmap then finish_seg; {previous segment contains + single oversized glyph} + if loaded=no then finish_seg {this segment will be ditto} + end +end + +@ If there is no |cur_seg| to hold the text, one is allocated, and the start and +finish coordinates of the text therein recorded. The |text| field is set to be +the null string. + +@= +if cur_seg = nil then +begin new_segment(good,loaded=no,font_code,ch); + cur_seg^.xs:=x_pos; + cur_seg^.xe:=x_pos; + cur_seg^.text:='' +end + +@ Checks are made that this segment (1) would not produce too large a +contiguous sequence of characters (which might therefore lead to an overlong +output record); (2) that the character does not need to be positioned to the +\&{left} of those already in the segment; (3) that the LN03 font used for this +character is the same as that for the other characters of the segment. If any +of these checks fail, we commence a new segment; these tests are bypassed if +we're setting a single oversized glyph. + +If any additional rightward movement is needed, the appropriate escape sequence +is added to the |text| in the |cur_seg|. + +@= +if cur_seg^.seg_type=glyph_string then +begin + if (VAX_length(cur_seg^.text)>=max_text-8) or + (x_poscur_seg^.font) then + begin finish_seg; + @ {tests enumerated above failed} + end + else + if x_pos>cur_seg^.xe then {We need to move rightward} + move_forward(x_pos-cur_seg^.xe) {Add character to segment} +end + +@ Characters whose glyphs proved too large to download in an LN03 font are +saved up to be printed as a pixel dump; other glyphs are recorded in the +current segment for imaging through the downloaded fonts. + +If the character being stored is only being recorded to support generation +of an error message, it is translated back from ASCII to the external +representation for printing of the message in the |type_file|. + +@= +if good then + with cur_seg^ do + case loaded of + yes: + text:=text+chr(char_code); + no, missing: + finish_seg; {needn't consider further} + othercases + do_nothing; + endcases +else + cur_seg^.text:=cur_seg^.text+xchr[ch] + + +@* Packed file format. +This format was designed by Tomas Rokicki in August, 1985. +@^Rokicki, Tomas@> + +It constitutes a compact representation of the data contained in a +\.{GF} file. The information content is the same, but packed (\.{PK}) files +are almost always less than half the size of their \.{GF} counterparts. They +are also easier to convert into a raster representation because they do not +have a profusion of \\{paint}, \\{skip}, and \\{new\_row} commands to be +separately interpreted. In addition, the \.{PK} format expressedly forbids +\&{special} commands within a character. The minimum bounding box for each +character is explicit in the format, and does not need to be scanned for as in +the \.{GF} format. Finally, the width and escapement values are combined with +the raster information into character ``packets'', making it simpler in many +cases to process a character. + +A \.{PK} file is organized as a stream of 8-bit bytes. At times, these bytes +might be split into 4-bit nybbles or single bits, or combined into multiple +byte parameters. When bytes are split into smaller pieces, the `first' piece +is always the most significant of the byte. For instance, the first bit of +a byte is the bit with value 128; the first nybble can be found by dividing +a byte by 16. Similarly, when bytes are combined into multiple byte +parameters, the first byte is the most significant of the parameter. If the +parameter is signed, it is represented by two's-complement notation. + +The set of possible eight-bit values are separated into two sets, those that +introduce a character definition, and those that do not. The values that +introduce a character definition comprise the range from 0 to 239; byte values +above 239 are interpreted commands. Bytes which introduce character +definitions are called flag bytes, and various fields within the byte indicate +various things about how the character definition is encoded. Command bytes +have zero or more parameters, and can never appear within a character +definition or between parameters of another command, where they would be +interpeted as data. + +A \.{PK} file consists of a preamble, followed by a sequence of one or more +character definitions, followed by a postamble. The preamble command must +be the first byte in the file, followed immediately by its parameters. +Any number of character definitions may follow, and any command but the +preamble command and the postamble command may occur between character +definitions. The very last command in the file must be the postamble. + +@ The packed file format is intended to be easy to read and interpret by +device drivers. The small size of the file reduces the input/output overhead +each time a font is defined. For those drivers that load and save each font +file into memory, the small size also helps reduce the memory requirements. +The length of each character packet is specified, allowing the character raster +data to be loaded into memory by simply counting bytes, rather than +interpreting each command; then, each character can be interpreted on a demand +basis. This also makes it possible for a driver to skip a particular +character quickly if it knows that the character is unused. + +@ First, the command bytes shall be presented; then the format of the +Character definitions will be defined. Eight of the possible sixteen +commands (values 240 through 255) are currently defined; the others are +reserved for future extensions. The commands are listed below. Each command +is specified by its symbolic name (e.g., \\{pk\_no\_op}), its opcode byte, +and any parameters. The parameters are followed by a bracketed number +telling how many bytes they occupy, with the number preceded by a plus sign if +it is a signed quantity. (Four byte quantities are always signed, however.) + +\yskip\hang|pk_xxx1| 240 |k[1]| |x[k]|. This command is undefined in general; +it functions as a $(k+2)$-byte \\{no\_op} unless special \.{PK}-reading +programs are being used. \MF\ generates \\{xxx} commands when encountering +a \&{special} string. It is recommended that |x| be a string having the form +of a keyword followed by possible parameters relevant to that keyword. + +\yskip\hang\\{pk\_xxx2} 241 |k[2]| |x[k]|. Like |pk_xxx1|, but |0<=k<65536|. + +\yskip\hang\\{pk\_xxx3} 242 |k[3]| |x[k]|. Like |pk_xxx1|, but +|0<=k<@t$2^{24}$@>|. \MF\ uses this when sending a \&{special} string whose +length exceeds~255. + +\yskip\hang\\{pk\_xxx4} 243 |k[4]| |x[k]|. Like |pk_xxx1|, but |k| can be +ridiculously large; |k| musn't be negative. + +\yskip\hang|pk_yyy| 244 |y[4]|. This command is undefined in general; it +functions as a five-byte \\{no\_op} unless special \.{PK} reading programs +are being used. \MF\ puts |scaled| numbers into |yyy|'s, as a result of +\&{numspecial} commands; the intent is to provide numeric parameters to +\\{xxx} commands that immediately precede. + +\yskip\hang|pk_post| 245. Beginning of the postamble. This command is +followed by enough |pk_no_op| commands to make the file a multiple +of four bytes long. Zero through three bytes are usual, but any number +is allowed. +This should make the file easy to read on machines which pack four bytes to +a word. + +\yskip\hang|pk_no_op| 246. No operation, do nothing. Any number of +|pk_no_op|'s may appear between \.{PK} commands, but a |pk_no_op| cannot be +inserted between a command and its parameters, between two parameters, or +inside a character definition. + +\yskip\hang|pk_pre| 247 |i[1]| |k[1]| |x[k]| |ds[4]| |cs[4]| |hppp[4]| +|vppp[4]|. Preamble command. Here, |i| is the identification byte of the +file, currently equal to 89. The string |x| is merely a comment, usually +indicating the source of the \.{PK} file. The parameters |ds| and |cs| are +the design size of the file in $1/2^{20}$ points, and the checksum of the +file, respectively. The checksum should match the \.{TFM} file and the +\.{GF} files for this font. Parameters |hppp| and |vppp| are the ratios +of pixels per point, horizontally and vertically, multiplied by $2^{16}$; they +can be used to correlate the font with specific device resolutions, +magnifications, and ``at sizes''. Usually, the name of the \.{PK} file is +formed by concatenating the font name (e.g., amr10) with the resolution at +which the font is prepared in pixels per inch multiplied by the magnification +factor, and the letters \.{PK}. For instance, amr10 at 300 dots per inch +should be named AMR10.300PK; at one thousand dots per inch and magstephalf, +it should be named AMR10.1095PK. + +@ We put a few of the above opcodes into definitions for symbolic use by +this program. + +@d pk_id = 89 {the version of \.{PK} file described} +@d pk_xxx1 = 240 {\&{special} commands} +@d pk_yyy = 244 {\&{numspecial} commands} +@d pk_post = 245 {postamble} +@d pk_no_op = 246 {no operation} +@d pk_pre = 247 {preamble} + +@ The \.{PK} format has two conflicting goals; to pack character raster and +size information as compactly as possible, while retaining ease of translation +into raster and other forms. A suitable compromise was found in the use of +run-encoding of the raster information. Instead of packing the individual +bits of the character, we instead count the number of consecutive `black' or +`white' pixels in a horizontal raster row, and then encode this number. Run +counts are found for each row, from the top of the character to the bottom. +This is essentially the way the \.{GF} format works. +Instead of presenting each row individually, however, let us concatenate all +of the horizontal raster rows into one long string of pixels, and encode this +row. With knowledge of the width of the bit-map, the original character glyph +can be easily reconstructed. In addition, we do not need special commands to +mark the end of one row and the beginning of the next. + +Next, let us put the burden of finding the minimum bounding box on the part +of the font generator, since the characters will usually be used much more +often than they are generated. The minimum bounding box is the smallest +rectangle which encloses all `black' pixels of a character. Let us also +eliminate the need for a special end of character marker, by supplying +exactly as many bits as are required to fill the minimum bounding box, from +which the end of the character is implicit. + +Let us next consider the distribution of the run counts. Analysis of several +dozen pixel files at 300 dots per inch yields a distribution peaking at four, +falling off slowly until ten, then a bit more steeply until twenty, and then +asymptotically approaching the horizontal. Thus, the great majority of our +run counts will fit in a four-bit nybble. The eight-bit byte is attractive for +our run-counts, as it is the standard on many systems; however, the wasted four +bits in the majority of cases seems a high price to pay. Another possibility +is to use a Huffman-type encoding scheme with a variable number of bits for +each run-count; this was rejected because of the overhead in fetching and +examining individual bits in the file. Thus, the character raster definitions +in the \.{PK} file format are based on the four-bit nybble. + +@ The analysis of the pixel files yielded another interesting statistic: fully +37\char`\%\ +of the raster rows were duplicates of the previous row. Thus, the \.{PK} +format allows the specification of repeat counts, which indicate how many times +a horizontal raster row is to be repeated. These repeated rows are taken out +of the character glyph before individual rows are concatenated into the long +string of pixels. + +For elegance, we disallow a run count of zero. The case of a null raster +description should be gleaned from the character width and height being equal +to zero, and no raster data should be read. No other zero counts are ever +necessary. Also, in the absence of repeat counts, the repeat value is set to +be zero (only the original row is sent.) If a repeat count is seen, it takes +effect on the current row. The current row is defined as the row on which the +first pixel of the next run count will lie. The repeat count is set back to +zero when the last pixel in the current row is seen, and the row is sent out. + +This poses a problem for entirely black and entirely white rows, however. Let +us say that the current row ends with four white pixels, and then we have five +entirely empty rows, followed by a black pixel at the beginning of the next +row, and the character width is ten pixels. We would like to use a repeat +count, but there is no legal place to put it. If we put it before the white +run count, it will apply to the current row. If we put it after, it applies +to the row with the black pixel at the beginning. Thus, entirely white or +entirely black repeated rows are always packed as large run counts (in this +case, a white run count of 54) rather than repeat counts. + +@ Now let us turn our attention to the actual packing of the run counts and +repeat counts into nybbles. There are only sixteen possible nybble values. +We need to indicate run counts and repeat counts. Since the run counts are +much more common, we will devote the majority of the nybble values to them. +We therefore indicate a repeat count by a nybble of 14 followed by a packed +number, where a packed number will be explained later. Since the repeat +count value of one is so common, we indicate a repeat one command by a single +nybble of 15. A 14 followed by the packed number 1 is still legal for a +repeat one count, however. The run counts are coded directly as packed +numbers. + +For packed numbers, therefore, we have the nybble values 0 through 13. We +need to represent the positive integers up to, say, $2^{31}-1$. We would +like the more common smaller numbers to take only one or two nybbles, and +the infrequent large numbers to take three or more. We could therefore +allocate one nybble value to indicate a large run count taking three or more +nybbles. We do this with the value 0. + +@ We are left with the values 1 through 13. We can allocate some of these, say +|dyn_f|, to be one-nybble run counts. +These will work for the run counts |1..dyn_f|. For subsequent run +counts, we will use a nybble greater than |dyn_f|, followed by a second nybble, +whose value can run from 0 through 15. Thus, the two-byte nybble values will +run from |dyn_f+1..(13-dyn_f)*16+dyn_f|. We have our definition of large run +count values now, being all counts greater than |(13-dyn_f)*16+dyn_f|. + +We can analyze our several dozen pixel files and determine an optimal value of +|dyn_f|, and use this value for all of the characters. Unfortunately, values +of |dyn_f| that pack small characters well tend to pack the large characters +poorly, and values that pack large characters well are not efficient for the +smaller characters. Thus, we choose the optimal |dyn_f| on a character basis, +picking the value which will pack each individual character in the smallest +number of nybbles. Legal values of |dyn_f| run from 0 (with no one-byte run +counts) to 13 (with no two-byte run counts). + +@ Our only remaining task in the coding of packed numbers is the large run +counts. We use a scheme suggested by D.~E.~Knuth +@^Knuth, D.~E.@> +which will simply and elegantly represent arbitrarily large values. The +general scheme to represent an integer |i| is to write its hexadecimal +representation, with leading zeros removed. Then we count the number of +digits, and prepend one less than that many zeros before the hexadecimal +representation. Thus, the values from one to fifteen occupy one nybble; +the values sixteen through 255 occupy three, the values 256 through 4095 +require five, etc. + +For our purposes, however, we have already represented the numbers one +through |(13-dyn_f)*16+dyn_f|. In addition, the one-nybble values have +already been taken by our other commands, which means that only the values +from sixteen up are available to us for long run counts. Thus, we simply +normalize our long run counts, by subtracting |(13-dyn_f)*16+dyn_f+1| and +adding 16, and then representing the result according to the scheme above. + +@ The final algorithm for decoding the run counts based on the above scheme +might look like this, assuming a procedure called \\{pk\_nyb} is available +to get the next nybble from the file, and assuming that the global +|repeat_count| indicates whether a row needs to be repeated. Note that this +routine is recursive, but since a repeat count can never directly follow +another repeat count, it can only be recursive to one level. + +@= +function pk_packed_num : integer ; +var i, j, k : integer ; +begin + i := get_nyb ; + if i = 0 then begin + repeat j := get_nyb ; incr(i) ; until j <> 0 ; + while i > 0 do begin j := j * 16 + get_nyb ; decr(i) ; end ; + pk_packed_num := j - 15 + (13-dyn_f)*16 + dyn_f ; + end else if i <= dyn_f then + pk_packed_num := i + else if i < 14 then + pk_packed_num := (i-dyn_f-1)*16+get_nyb+dyn_f+1 + else begin + if i = 14 then + repeat_count := pk_packed_num + else + repeat_count := 1 ; + pk_packed_num := pk_packed_num ; + end ; +end ; + +@ For low resolution fonts, or characters with `gray' areas, run encoding can +often make the character many times larger. Therefore, for those characters +that cannot be encoded efficiently with run counts, the \.{PK} format allows +bit-mapping of the characters. This is indicated by a |dyn_f| value of +14. The bits are packed tightly, by concatenating all of the horizontal raster +rows into one long string, and then packing this string eight bits to a byte. +The number of bytes required can be calculated by |(width*height+7) div 8|. +This format should only be used when packing the character by run counts takes +more bytes than this, although, of course, it is legal for any character. +Any extra bits in the last byte should be set to zero. + +@ At this point, we are ready to introduce the format for a character +descripter. It consists of three parts: a flag byte, a character preamble, +and the raster data. The most significant four nybbles of the flag byte +yield the |dyn_f| value for that character. (Notice that only values of +0 through 14 are legal for |dyn_f|, with 14 indicating a bit mapped character; +thus, the flag bytes do not conflict with the command bytes, whose upper nybble +is always 15.) The next bit (with weight 16) indicates whether the first run +count is a black count or a white count, with a one indicating a black count. +For bit-mapped characters, this bit should be set to a zero. The next bit +(with weight 8) indicates whether certain later parameters (referred to as size +parameters) are given in one-byte or two-byte quantities, with a one indicating +that they are in two-byte quantities. The last two bits are concatenated on to +the beginning of the length parameter in the character preamble, which will be +explained below. + +However, if the last three bits of the flag byte are all set (normally +indicating that the size parameters are two-byte values and that a 3 should be +prepended to the length parameter), then a long format of the character +preamble should be used instead of one of the short forms. + +Therefore, there are three formats for the character preamble, and which one +is used depends on the least significant three bits of the flag byte. If the +least significant three bits are in the range zero through three, the short +format is used. If they are in the range four through six, the extended short +format is used. Otherwise, if the least significant bits are all set, then +the long form of the character preamble is used. The preamble formats are +explained below. + +\yskip\hang Short form: |flag[1]| |pl[1]| |cc[1]| |tfm[3]| |dm[1]| |w[1]| +|h[1]| |hoff[+1]| |voff[+1]|. +If this format of the character preamble is used, the above +parameters must all fit in the indicated number of bytes, signed or unsigned +as indicated. Almost all of the standard \TeX\ font characters fit; the few +exceptions are fonts such as \.{aminch}. + +\yskip\hang Extended short form: |flag[1]| |pl[2]| |cc[1]| |tfm[3]| |dm[2]| +|w[2]| |h[2]| |hoff[+2]| |voff[+2]|. Larger characters use this extended +format. + +\yskip\hang Long form: |flag[1]| |pl[4]| |cc[4]| |tfm[4]| |dx[4]| |dy[4]| +|w[4]| |h[4]| |hoff[4]| |voff[4]|. This is the general format which +allows all of the +parameters of the \.{GF} file format, including vertical escapement. +\vskip\baselineskip +The |flag| parameter is the flag byte. The parameter |pl| (packet length) +contains the offset +of the byte following this character descripter, with respect to the beginning +of the |tfm| width parameter. This is given so a \.{PK} reading program can, +once it has read the flag byte, packet length, and character code (|cc|), skip +over the character by simply reading this many more bytes. For the two short +forms of the character preamble, the last two bits of the flag byte should be +considered the two most-significant bits of the packet length. For the short +format, the true packet length might be calculated as |(flag mod 4)*256+pl|; +for the extended format, it might be calculated as |(flag mod 4)*65536+pl|. + +The |w| parameter is the width and the |h| parameter is the height in pixels +of the minimum bounding box. The |dx| and |dy| parameters are the horizontal +and vertical escapements, respectively. In the short formats, |dy| is assumed +to be zero and |dm| is |dy| but in pixels; +in the long format, |dx| and |dy| are both +in pixels multiplied by $2^{16}$. The |hoff| is the horizontal offset from the +upper left pixel to the reference pixel; the |voff| is the vertical offset. +They are both given in pixels, with right and down being positive. The +reference pixel is the pixel which occupies the unit square in \MF; the +\MF\ reference point is the lower left hand corner of this pixel. (See the +example below.) + +@ \TeX\ requires that all characters which have the same character codes +modulo 256 also have the same |tfm| widths, and escapement values. The \.{PK} +format does not itself make this a requirement, but in order for the font to +work correctly with the \TeX\ software, this constraint should be observed. +The current version of \TeX\ (1.5) cannot output character codes greater +than 255 anyway. + +Following the character preamble is the raster information for the +character, packed by run counts or by bits, as indicated by the flag byte. +If the character is packed by run counts and the required number of nybbles +is odd, then the last byte of the raster description should have a zero +for its least significant nybble. + +@ As an illustration of the \.{PK} format, the character \char4\ from the font +amr10 at 300 dots per inch will be encoded. This character was chosen +because it illustrates some +of the borderline cases. The raster for the character looks like this (the +row numbers are chosen for convenience, and are not \MF's row numbers.) + +\vskip\baselineskip +\centerline{\vbox{\baselineskip=10pt +\halign{\hfil#\quad&&\hfil#\hfil\cr +0& & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M\cr +1& & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M\cr +2& & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M\cr +3& & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M\cr +4& & &M&M& & & & & & & & & & & & & & & & &M&M\cr +5& & &M&M& & & & & & & & & & & & & & & & &M&M\cr +6& & &M&M& & & & & & & & & & & & & & & & &M&M\cr +7\cr +8\cr +9& & & & &M&M& & & & & & & & & & & & &M&M& & \cr +10& & & & &M&M& & & & & & & & & & & & &M&M& & \cr +11& & & & &M&M& & & & & & & & & & & & &M&M& & \cr +12& & & & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M& & \cr +13& & & & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M& & \cr +14& & & & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M& & \cr +15& & & & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M& & \cr +16& & & & &M&M& & & & & & & & & & & & &M&M& & \cr +17& & & & &M&M& & & & & & & & & & & & &M&M& & \cr +18& & & & &M&M& & & & & & & & & & & & &M&M& & \cr +19\cr +20\cr +21\cr +22& & &M&M& & & & & & & & & & & & & & & & &M&M\cr +23& & &M&M& & & & & & & & & & & & & & & & &M&M\cr +24& & &M&M& & & & & & & & & & & & & & & & &M&M\cr +25& & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M\cr +26& & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M\cr +27& & &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M\cr +28&*& &M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M&M\cr +&\hphantom{M}&\hphantom{M}\cr +}}} +The width of the minimum bounding box for this character is 20; its height +is 29. The `*' represents the reference pixel; notice how it lies outside the +minimum bounding box. The |hoff| value is $-2$, and the |voff| is~28. + +The first task is to calculate the run counts and repeat counts. The repeat +counts are placed at the first transition (black to white or white to black) +in a row, and are enclosed in brackets. White counts are enclosed in +parentheses. It is relatively easy to generate the counts list: +\vskip\baselineskip +\centerline{82 [2] (16) 2 (42) [2] 2 (12) 2 (4) [3]} +\centerline{16 (4) [2] 2 (12) 2 (62) [2] 2 (16) 82} +\vskip\baselineskip +Note that any duplicated rows that are not all white or all black are removed +before the repeat counts are calculated. The rows thus removed are rows 5, 6, +10, 11, 13, 14, 15, 17, 18, 23, and 24. + +@ The next step in the encoding of this character is to calculate the optimal +value of |dyn_f|. The details of how this calculation is done are not +important here; suffice it to say that there is a simple algorithm which in one +pass over the count list can determine the best value of |dyn_f|. For this +character, the optimal value turns out to be 8 (atypically low). Thus, all +count values less than or equal to 8 are packed in one nybble; those from +nine to $(13-8)*16+8$ or 88 are packed in two nybbles. The run encoded values +now become (in hex, separated according to the above list): +\vskip\baselineskip +\centerline{\tt D9 E2 97 2 B1 E2 2 93 2 4 E3} +\centerline{\tt 97 4 E2 2 93 2 C5 E2 2 97 D9} +\vskip\baselineskip\noindent +which comes to 36 nybbles, or 18 bytes. This is shorter than the 73 bytes +required for the bit map, so we use the run count packing. + +@ The short form of the character preamble is used because all of the +parameters fit in their respective lengths. The packet length is therefore +18 bytes for the raster, plus +eight bytes for the character preamble parameters following the character +code, or 26. The |tfm| width for this character is 640796, or {\tt 9C71C} in +hexadecimal. The horizontal escapement is 25 pixels. The flag byte is +88 hex, indicating the short preamble, the black first count, and the +|dyn_f| value of 8. The final total character packet, in hexadecimal, is: +\vskip\baselineskip +$$\vbox{\halign{\hfil #\quad&&{\tt #\ }\cr +Flag byte&88\cr +Packet length&1A\cr +Character code&04\cr +|tfm| width&09&C7&1C\cr +Horizontal escapement (pixels)&19\cr +Width of bit map&14\cr +Height of bit map&1D\cr +Horizontal offset (signed)&FE\cr +Vertical offset&1C\cr +Raster data&D9&E2&97\cr +&2B&1E&22\cr +&93&24&E3\cr +&97&4E&22\cr +&93&2C&5E\cr +&22&97&D9\cr}}$$ + +@* Routines to access the packed pixel files. We shall require routines to +access the packed file; sometimes this may even require access to individual +\&{bits}, but mostly we shall be accessing bytes or nybbles. + +We also need a function that will get a single byte from the \.{PK} file. +Again, buffering may be done in this procedure. + +@p function pk_byte : eight_bits ; +var temp : eight_bits ; +begin + temp := pxl_file^[pk_loc mod VAX_block_length] ; + pk_loc := pk_loc + 1 ; + if (pk_loc mod VAX_block_length)=0 then + get(pxl_file) ; + pk_byte := temp ; +end ; + +@ As we are reading the packed file, we often need to fetch (signed or +unsigned) 16 and 32 bit quantities. Here we have three procedures to do this. + +@p function get_16 : integer ; +var a : integer ; +begin a := pk_byte ; get_16 := a * 256 + pk_byte ; end ; +@# +function get_16_signed : integer ; +var a : integer ; +begin a := get_16; if a>32767 then a := a-65536; + get_16_signed := a ; end ; +@# +function get_32 : integer ; +var a : integer ; +begin a := get_16 ; if a > 32767 then a := a - 65536 ; +get_32 := a * 65536 + get_16 ; end ; + +@ Now we read and check the preamble of the pk file. In the preamble, we +find the |hppp|, |dsize|, |checksum|. After we've read the preamble, no +character locators will be available. + +@d two_to_the_20th==@"100000 + +@= +pk_loc:=0; char_num:=-1; {Ensure that |char_num| is ``undefined''} +if pk_byte <> pk_pre then abort('Bad pk file, pre command missing') ; +@:fatal error Bad pk file ...}{\quad\.{Bad pk file}@> +@:fatal error Bad pk file pre command missing}{\qquad\\{pre }\.{command missing}@> +if pk_byte <> pk_id then abort('Bad pk file, wrong version') ; +@:fatal error Bad pk file wrong version}{\qquad\.{wrong version}@> +pk_j := pk_byte ; +for pk_i := 1 to pk_j do dummy:=pk_byte ; { Skip over PK file comment } +dsize := get_32 ; +checksum := get_32 ; +hppp := get_32 ; vppp := get_32 ; +magnification := round(hppp * 72.27 / 65536) ; {|* 5| in PKtoPX} +if hppp <> vppp then warning('PK font pixels non-square'); +@:Warning: PK font pixels non-square}{\quad\.{PK font pixels non-square}@> +dsize:=(dsize/two_to_the_20th)*(magnification/resolution); +for pk_i:=0 to 255 do ch_loc[pk_i]:=0; + +@ Of course, we need to define the above variables. + +@= +@!checksum : integer ; {checksum of pixel file} +@!hppp, @!vppp : integer ; {horizontal and vertical points per inch} +@!pk_loc : integer ; { byte currently being accessed in |pk_file| } +@!dummy : integer ; { used to ``absorb'' unwanted bytes from |pk_file| } + +@* Character unpacking. +This is the procedure where we read the character packet and decode it into +standard pixel raster format; if a glyph is encountered that is not used in the +present document, its packet is skipped. We create one row at a time, checking +for repeat +commands, and then repeat the row as many times as is necessary. The information +gleaned from the beginning of the character packet is to be placed in various +local variables. We also check that the length of the character packet is +correct. + +If the character's raster is null (as is the case with the invisible fonts used +by Sli\TeX), the |num_cols| and |num_rows| are set to suitable dummy values (see +the section $\langle$Complete remainder of Character Definition +parameters$\rangle$ for further information). + +@= +dyn_f := flag_byte div 16 ; +flag_byte := flag_byte mod 16 ; +turn_on := flag_byte >= 8 ; +if turn_on then flag_byte := flag_byte - 8 ; +if flag_byte = 7 then + @ +else if flag_byte > 3 then + @ +else + @ ;@/ +byte_width:=(num_cols+7) div 8; {Bytes required per row in |lnf_file|} +ch_loc[char_num]:=end_of_packet-packet_length; +with glyph_map(TeX_font)(char_num) do + if loaded=wanted then + begin + base:=ras_beg+ras_len;@/ + @; + @; + @; + @; + @; + @ + end + else + @ ; +if end_of_packet <> pk_loc then abort('Bad pk file! Bad packet length.') +@.Bad pk file@> + +@ A simplified version of this code is also used when printing the bitmap of +an oversized glyph in sixels. + +@= +dyn_f := flag_byte div 16 ; +flag_byte := flag_byte mod 16 ; +turn_on := flag_byte >= 8 ; +if turn_on then flag_byte := flag_byte - 8 ; +if flag_byte = 7 then + @ +else if flag_byte > 3 then + @ +else + @ ;@/ +byte_width:=(num_cols+7) div 8; {Bytes required per row in |lnf_file|} +ch_loc[char_num]:=end_of_packet-packet_length; +if char_num=ch then +begin + base:=ras_beg+ras_len;@/ + @; +end +else + @ ; +if end_of_packet <> pk_loc then abort('Bad pk file! Bad packet length.') +@.Bad pk file@> + +@ We need a whole lot of globals used but not defined up there. Some of these +have the same names as certain fields of |pxl_dir_type|, or of local variables +of procedures |add_txf_to_lnf| and |copy_char|. This is in order that the +segments of \.{WEB} code invoked above reference these globals therein, but the +appropriate local variables when within those procedures (when being used for +\.{PXL} files). + +@= +@!pk_i, @!pk_j : integer ; {index pointers} +@!flag_byte : integer ; {the byte that introduces the character definition} +@!end_of_packet : integer ; {where we expect the end of the packet to be}@/ +{Following are also names of fields in a record of type |pxl_dir_type|}@/ +@!num_cols, @!num_rows : sixteen_bits; {width and height of character} +@!x_off, @!y_off : signed_word ; {$x$ and $y$ offsets of character} +@!tfm_width : integer ; {character tfm width} +@# +@!tfms : array [0..255] of integer ; {character tfm widths} +@!dx, @!dy : integer ; {escapement values} +@!dxs, @!dys : array [0..255] of integer ; {escapement values} +@!ch_loc : array[0..255] of integer; {has the character been seen (and where)?} +@!dyn_f : integer ; {dynamic packing variable} +@!char_num : integer ; {the character we are reading} +@!packet_length : integer ; {the length of the character packet} +@!base : integer ; {index into |lnf_bytes|} +@!to_where : integer ; {\&{cf.} |to_where| in |copy_char|} +@!len : integer ; {\&{cf.} |len| in |copy_char|} +@!byte_width : integer ; {Bytes per row in the |lnf_file| bitmap} + +@ To skip over the raster of an unwanted character, we can simply jump forward +in the PK file to |end_of_packet|. + +@= +while pk_loc= +begin + packet_length := get_32 ; char_num := get_32 ; + end_of_packet := packet_length + pk_loc ; + packet_length := packet_length + 9 ; + tfm_width := get_32 ; + dx := get_32 ; dy := get_32 ; + num_cols := get_32 ; + num_rows := get_32 ; + x_off := get_32 ; y_off := get_32 ; +end + +@ This module reads the character preamble with double byte parameters. + +@= +begin + packet_length := (flag_byte - 4) * 65536 + get_16 ; + char_num := pk_byte ; + end_of_packet := packet_length + pk_loc ; + packet_length := packet_length + 4 ; + pk_i := pk_byte ; + tfm_width := pk_i * 65536 + get_16 ; + dx := get_16 * 65536 ; + dy := 0 ; + num_cols := get_16 ; + num_rows := get_16 ; + x_off := get_16_signed ; y_off := get_16_signed ; +end + +@ Here we read the most common character preamble, that with single byte +parameters. + +@= +begin + packet_length := flag_byte * 256 + pk_byte ; + char_num := pk_byte ; + end_of_packet := packet_length + pk_loc ; + packet_length := packet_length + 3 ; + pk_i := pk_byte ; + tfm_width := pk_i * 65536 + get_16 ; + dx := pk_byte * 65536 ; + dy := 0 ; + num_cols := pk_byte ; + num_rows := pk_byte ; + x_off := pk_byte ; y_off := pk_byte ; + if x_off > 127 then x_off := x_off - 256 ; + if y_off > 127 then y_off := y_off - 256 ; +end + +@ Now we have the most important part of unravelling packed pixel files, where +we actually interpret the commands in the raster description. First of all, +we need a procedure to get a single nybble from the file, as well as one to +get a single bit. + +We also are now able to ``declare'' |pk_packed_num|. + +@p function get_nyb : integer ; +var temp : eight_bits ; +begin + if bit_weight = 0 then begin + input_byte := pk_byte ; + bit_weight := 16 ; + end ; + temp := input_byte div bit_weight ; + input_byte := input_byte - temp * bit_weight ; + bit_weight := bit_weight div 16 ; + get_nyb := temp ; +end ; +@# +function get_bit : boolean ; +var temp : boolean ; +begin + bit_weight := bit_weight div 2 ; + if bit_weight = 0 then begin + input_byte := pk_byte ; + bit_weight := 128 ; + end ; + temp := input_byte >= bit_weight ; + if temp then + input_byte := input_byte - bit_weight ; + get_bit := temp ; +end ; +@# +@t\4@>@ + +@ Now, the globals to help communication between these procedures. + +@= +@!input_byte : eight_bits ; {the byte we are currently decimating} +@!bit_weight : eight_bits ; {weight of the current bit} +@!nybble : eight_bits ; {the current nybble} +@!row_addr : integer ; {whereabouts in |lnf_file| of start of each pixel row} +@!bitmap_start : integer ; {and of start of \&{first} pixel row} + +@ And the main procedure. + +@= +bit_weight := 0 ; row_addr:=base; {Note where row of pixels starts} +bitmap_start:=base; +if dyn_f = 14 then + @ +else @ + +@ If |dyn_f=14|, then we need to get the raster representation +one bit at a time. + +@= +begin +for pk_i := 1 to num_rows do begin + bite:=0; bite_weight:=7; + for pk_j := 1 to num_cols do begin + if get_bit then bite:=bite+power[bite_weight]; + decr(bite_weight); + if bite_weight<0 then begin + bite_weight:=7; + put_lnf(bite); + bite:=0 + end + end; + if bite_weight<7 then put_lnf(bite) +end; +end + +@ We need the |power| array, which contains powers of two, as well as the |bite| +variable (which accumulates eight pixels) and |bite_weight|, which directs which +pixel is to be ``blackened''. The array |gpower| contains 0..8 black pixels, +staring at the left-hand end. + +@= +@!bite : integer; {accumulates 8 pixels to go to |lnf_file|} +@!bite_weight : integer; {next bit of |bite| to be filled (leftmost=0)} +@!power:array [0..7] of integer; {|power[i]| contains $2^{7-i}$} +@!gpower:array [0..8] of integer; {|gpower[i]| contains ones in leftmost |i| bits} + +@ @= +power[0]:=128; +for i:=1 to 7 do power[i]:=power[i-1] div 2; +gpower[0]:=0; +for i:=1 to 8 do gpower[i]:=gpower[i-1]+power[i-1]; + +@ Otherwise, we translate the bit counts into the raster rows. |run_ct| +contains the number of bits of the current color, and |turn_on| indicates +whether or not they should be black. |rows_left| contains the number of +rows to be sent. + +@= +begin +rows_left := num_rows ; +h_bit := num_cols ; +repeat_count := 0 ; +bite:=0; bite_weight:=8; +while rows_left > 0 do begin + run_ct := pk_packed_num ; + while run_ct>0 do begin + if (run_ct=h_bit) and (h_bit<=bite_weight) then begin + if turn_on then + bite:=bite+gpower[bite_weight]-gpower[bite_weight-h_bit]; + put_lnf(bite); bite:=0; + for pk_i:=1 to repeat_count do + for pk_j:=1 to byte_width do repeat_row; + row_addr:=base; + rows_left := rows_left - repeat_count - 1 ; + repeat_count := 0 ; + bite:=0; bite_weight:=8; + run_ct := run_ct - h_bit ; + h_bit := num_cols ; + end + else begin + if turn_on then bite:=bite+gpower[bite_weight]; + put_lnf(bite); + run_ct:=run_ct-bite_weight; + h_bit:=h_bit-bite_weight; + bite:=0; bite_weight:=8 + end + end; + turn_on := not turn_on ; +end ; +if (rows_left <> 0) or (h_bit <> num_cols) then + abort('Bad pk file---more bits than required!'); +@.Bad pk file@> +end + +@ We need to declare the repeat flag, bit counter, and color flag here. + +@= +@!repeat_count : integer ; {how many times to repeat the next row?} +@!rows_left : integer ; {how many rows left?} +@!turn_on : boolean ; {are we black here?} +@!h_bit : integer ; {what is our horizontal position?} +@!run_ct : integer ; {how many bits of current color left?} + +@ Another necessary section of code skips over any \MF\ \.{special}s between +characters and before or after the postamble. + +It is convenient to use the following definitions in creating readable |case| +statements; they will also be necessary for interpreting the \.{DVI} file. + +@d four_cases(#)==#,#+1,#+2,#+3 +@d eight_cases(#)==four_cases(#),four_cases(#+4) +@d sixteen_cases(#)==eight_cases(#),eight_cases(#+8) +@d thirty_two_cases(#)==sixteen_cases(#),sixteen_cases(#+16) +@d sixty_four_cases(#)==thirty_two_cases(#),thirty_two_cases(#+32) + +@p procedure skip_specials ; +var i, j, k : integer ; +begin + repeat + flag_byte := pk_byte ; + if flag_byte >= pk_xxx1 then + case flag_byte of + four_cases(pk_xxx1): +begin + i := 0 ; + for j := pk_xxx1 to flag_byte do i := 256 * i + pk_byte ; + for j := 1 to i do dummy:=pk_byte ; +end ; + pk_yyy: dummy:=get_32 ; + pk_post: do_nothing; + pk_no_op: do_nothing; + pk_pre, eight_cases(pk_pre+1): + abort('Bad pk file; unexpected byte: ', flag_byte:1,'!') ; +@.Bad pk file@> + endcases ; + until (flag_byte < pk_xxx1) or (flag_byte = pk_post) ; +end ; + +@* Pixel file format. +A \.{PXL} file is an expanded raster description of a single font at a +particular resolution and contains essentially the same information as +that contained in a \.{GF} file. \.{PXL} files are used by many existing +device-driver programs for dot matrix devices. By convention, \.{PXL} files +are for 200 pixels per inch. However, the LN03 requires pixel files generated +at 300 pixels per inch; the font naming conventions for access to these files +are specified elsewhere. + +All words in a \.{PXL} files are in 32-bit format, with the four lower +bits zero on 36-bit machines. The raster information is contained in a +sequence of binary words which record white pixels as zeros and black +pixels as ones. + +The first word of the \.{PXL} file and the last word contain the |pxl_id| +which is currently equal to 1001. + +This first word is followed by a sequence of raster information words where +each line of pixels in the glyphs is represented by one or more words of +binary information. The number of words used to represent each row of pixels +for any particular glyph is fixed and it is set by the value of +|max_m-min_m+1| for that particular glyph. Each white pixel is represented by +a zero and each black pixel is represented by a one in the corresponding bit +positions (the first 32 only of each word on 36-bit machines). The unused bit +positions toward the end of each set of words for each row of pixels are +filled with zeros. It should be noted that this representation is more +wasteful of space than it needs to be, but it may possibly simplify the +subsequent use of the information by a device-driver program. + +The font directory follows, occupying a fixed position with respect to the +end of the file (in words 517 through 6 from this end), and assigns 4 +words for each of the potential 128 different glyphs that could be +contained in this particular font in the order of their ascending ascii +values (not in the order that the glyphs appear in the raster section, +which may be entirely arbitrary). This means that the first four words are +for the ascii zero glyph. All four words reserved for any missing glyphs +are set to zero. A detailed description of these directory entries is given in +the next section. + +The final five words in the \.{PXL} file contain information relative to +the entire file. + +The first of these five words is a checksum which should +match the checksum contained in the \.{TFM} file that \TeX\ used in +reference to this font, although, if this checksum is zero, no validity +checking will be done. + +The second of these five words is an integer that is 1000 times the +magnification factor at which this font was produced. + +The third word contains the design size of the font measured in \.{FIXes} +($2^{-20}$ unmagnified points). + +The fourth word contains a pointer to the first word of the font directory. + +The fifth (and last word of the entire file) contains a duplicate of the +|pxl_id| as contained in the first word of the file. + +@d pxl_id=1001 {current version of \.{PXL} format} + +@ As mentioned above, the pixel file's glyph directory consists of four +longwords for each possible glyph. The use of each of these longwords is as +follows: + +\yskip\hang\&{Word 0.} This is treated as being split into two unsigned +sixteen-bit quantities, containing the Pixel Width in the left half-word (the +leftmost 16 bits) and the Pixel Height in the right half-word (the next 16 +bits). These dimensions are those of the smallest bounding-box, measured in +pixels, and they have nothing necessarily to do with the width and height +figures that appear in the \.{TFM} file. + +\yskip\hang\&{Word 1.} Again is split into two sixteen-bit half-words, but +this time they are each treated as \\{signed} quantities. Together, these give +the offset of the glyph's reference point \&{from} its upper-left-hand corner +of the bounding box, measured in pixels, with the $x$-offset ($\delta x$) in the left +half-word and the $y$-offset ($\delta y$) in the right half-word. Two's complement +representation is used. Remember that although the positive $x$ direction means +`rightward' and positive $y$ is `downward' on the page, these offsets specify +the distance \&{to} the reference point \&{from} the upper left-hand corner of +the raster with +ve $x$ implying that the left-most column of the raster is to +the \&{left} of the reference point, and +ve $y$ implying that the top-most +row of the raster is \&{above} the baseline. + +\yskip\hang\&{Word 2.} This contains the number of the word in this \.{PXL} +file where the Raster Description for this particular glyph begins, measured +from the first word of the file, which is numbered zero. + +\yskip\hang\&{Word 3.} Contains the \.{TFM} width, measured in \.{FIXes}, +where 1 \.{FIX} is $1/(2^{20})$ times the design size. + +We now define an appropriate structure to hold such directory entries: + +@= + @!signed_word= [word] -32768..32767;@/ + @!pxl_dir_type=packed record@/ + num_cols,num_rows : sixteen_bits; + x_off,y_off : signed_word; + addr : [byte(4)] integer; + tfm_width : [byte(4)] integer + end; + +@ We need a |file| object to reference the pixel file, and also an array to hold +its directory. Furthermore, when a pixel file directory is read in, we need +variables |magnification| and |dsize| to hold quantities taken from the last +five longwords of the file. + +@= + @!pxl_file: byte_file; + @!pxl_dir : packed array [0..127] of pxl_dir_type; + @!pxl_block,@!pxl_ptr : integer; + @!pxl_size:integer; + @!magnification,@!dsize:real; + +@*Procedures to access the pixel file. The following definitions and +declarations provide a means of accessing bytes, words (signed \AM\ unsigned) +and longwords in the |pxl_file|. + +@d pxl_byte(#)==pxl_file^[#] + +@d pxl_word(#)==(pxl_byte(#+1)+256*pxl_byte(#)) + +@d pxl_long(#)==(pxl_byte(#+3)+256*(pxl_byte(#+2)+@|256*(pxl_byte(#+1)+@| +256*pxl_byte(#)))) + +@d must_get(#)== + if # = VAX_block_length then + begin get(pxl_file,VAX_continue); + incr(pxl_block); #:=0 + end + +@p procedure move_to_pxl(n:integer); + begin + if n div VAX_block_length <> pxl_block then + begin pxl_block:=n div VAX_block_length; + VAX_find_block(pxl_file,pxl_block+1,VAX_continue) + end; + pxl_ptr:=n mod VAX_block_length + end; + +@ The |long_pxl| function reads a longword (in Bigendian order) from the +|pxl_file| and converts it to correct (signed) VAX longword notation. + +@p function long_pxl(var index:integer) : integer; + begin + if pxl_byte(index)<=@"80 then + long_pxl:=pxl_long(index) + else + long_pxl:=pxl_byte(index+3)+256*(pxl_byte(index+2)+256*( + pxl_byte(index+1)+256*(pxl_byte(index)-256))); + index:=index+4; + must_get(index) + end; + +@ The |sign_pxl_word| function reads a signed shortword (two bytes). + +@p function sign_pxl_word(var index:integer) : integer; + begin + if pxl_byte(index)>=@"80 then + sign_pxl_word:=pxl_word(index)-@"10000 + else + sign_pxl_word:=pxl_word(index); + index:=index+2; + must_get(index) + end; + +@ The |word_pxl| function reads an unsigned two-byte word. + +@p function word_pxl(var index:integer) : integer; + begin word_pxl:=pxl_word(index); + index:=index+2; must_get(index) + end; + +@*Handle rasters of oversized glyphs. Because of a physical limitation of the +LN03, it is not legal to download the glyph of a character which would occupy +more than 5,700 bytes. (Details appear under ``\&{Copy one character's +rasters}''.) + +Any such glyph which has not been downloaded will have its |loaded| flag set to +|no| in its |glyph_map| entry. When we attempt to add such a character to +the output lists, we add instead a separate segment which indicates that it +holds a single oversized glyph. When this segment is eventually processed, +we output the glyph itself as a bitmap dump, using sixel graphics. + +To save us having to keep on opening and closing the pixel file containing +the glyph, we maintain the ``name'' of the currently open file in a global +string, and only open a new file if the glyph required comes from a +different \TeX\ font. The global variable |open_file_name| is a textual +representation of the full file specification of the currently open pixel +file. (Note that this same variable name also appears as a \&{formal +parameter} of the |add_txf_to_lnf| function; it is referenced in the +$\langle$Open the file containing the glyph bitmaps$\rangle$ W{\mc EB} +section, used in the following code, and the aforementioned function.) + +@= +@!open_file_name : file_spec; + +@ Of course, when we start (and even after we've created the font file(s) for +down-loading) there is no pixel file open. Let's indicate that: + +@= +open_file_name:=''; + +@ Procedure |print_glyph| has to refer to |change_pixel_file|, which is more +convenient to declare along with the font downloading procedures. So we'll +cheat and put a |forward| declaration here! + +@p procedure change_pixel_file( TeX_font : integer); forward; + +@ The procedure |print_glyph| opens the associated pixel file (if necessary) +by calling |change_pixel_file|. It firstly outputs absolute positioning +commands to establish the correct ``printing'' position (the strange +|bitmap_offset| was incorporated when the reference to the glyph was stored +in the |segment|), and then outputs suitable escape sequences to locate the +printing position at the correct offset relative to that position, as +determined by the glyph's first pixel relative to its reference point. + +If the pixels come from a |pixel_file|, then we can locate the required +character glyph through the character directory. In the case of a +|packed_file|, it may happen than this character has already been output, and +so its position within the file is known; in this case either it was the last +character read (has already been dumped as a bitmap), when its glyph will be in +the |lnf_file|: otherwise we position |pk_loc| to the correct position in the +file. If the character has never been read (|ch_loc=0|) then we read and +process characters into the \&{same} part of the |lnf_file| until the desired +character has been read. When reading |packed_file|s, we utilize an entry in +the |pxl_dir| in preference to the globals |x_off|, etc, so save repetition of +many lines of \.{WEB} code. + +The lines of pixel rasters are then output, six at a time, in sixel graphics +format. + +@p procedure print_glyph(@!glyph_seg : segment; @!y_loc : integer); + var @!sixel_line : array [1..6,1..300] of eight_bits; + @!i,@!j,@!k,@!l,@!m,@!n,@!len : integer; + @!last_sixel,@!matching: integer; + @!ch : integer; + @ ; +begin + write_ln(ln3_file); + change_pixel_file(glyph_seg.font);@/ + write(ln3_file,csi,y_loc:1,'d',csi,glyph_seg.xs:1,'`'); + ch:=glyph_seg.ch; + with pxl_dir[ch] do + begin + @ ; + @ ; + write_ln(ln3_file,dcs,'9;0;1q'); {Prepare to meet a sixel dump!} + @; + write_ln(ln3_file,st); {Finish sixel dump} + end; {with} +end; + +@ We are making use of a record of |pxl_dir| to hold the various quantities +regarding the dimensions of the glyph which have been (or are about to be) read +from the font file. In the case of an unpacked raster, we need only position +the file to the correct longword, but for a packed file, it's now time to +start reading the bytes and reconstituting the raster in a free part of the +|lnf_file|. + +@= +if pxl_ident=pixel_file then move_to_pxl(addr*4) +else begin + ras_beg:=2*VAX_block_length; + if ch_loc[ch]=0 then + @ ; + if char_num<>ch then + @ ; + base:=ras_beg +end; + +@ If the character has not yet been read from the packed font file, we need to +read forwards until the character is met. We then are able to access its +raster, which will have been created in memory as the character was read. +The character cannot be missing or the font download would not have resulted +in the |loaded| field having the value |no|. + +@= +repeat ras_len:=0;@/ + @; + skip_specials +until (ch_loc[ch]<>0) or (flag_byte=pk_post); + +@ If we've previously read the wanted character's glyph, but it has since been +superseded by another's, we need to backtrack the packed font file to the +correct position and read the raster all over again. + +@= +begin {character not already in |lnf_file|} + pk_loc:=ch_loc[ch]; + VAX_find_block(pxl_file,(pk_loc div VAX_block_length)+1,VAX_continue); + ras_len:=0; flag_byte:=pk_byte; {We know there's no \.{special}s}@/ + @; + skip_specials +end + +@ Having read the glyph into memory, we now need to position the LN03 to start +writing its first sixel at the appropriate position relative to the reference +point. We do this by sending Horizontal and Vertical Positioning control +sequences, either Relative for forward movement, or Backward when negative +movement is necessary. The signs are reversed because the offsets are those +of the top left-most pixel of the glyph relative to the reference point. + +@= +if x_off<0 then + write(ln3_file,csi,abs(x_off):1,'a') {Horizontal Position Relative} +else + if x_off>0 then write(ln3_file,csi,x_off:1,'j');{Horizontal Position Backward} +if y_off<0 then + write(ln3_file,csi,abs(y_off):1,'e') {Vertical Position Relative} +else + if y_off>0 then write(ln3_file,csi,y_off:1,'k') {Vertical Position Backward} + +@ This routine outputs the sixel character, |x|, in the optimum sixel encoding +making use of repeat counts if the same sixel is repeated more than twice. +The current output record is terminated if it's getting too long, and a new +one commenced. + +@= +procedure @!put_sixel(x:integer); +begin + if x = last_sixel then incr(matching) else + @ ; + if len >=128 then + begin + write_ln(ln3_file); + len:=0 + end +end + +@ If we have a new sixel (|x|) which differs from the previous one +(|last_sixel|) we have to output the latter the correct number of times. The +number of successive calls of |put_sixel| will have been counted in +|matching|. After performing the output, we record that |x| has now been +``output'' once. + +@= +begin + if matching < 3 then + @ + else + @ ; + matching:=1; + last_sixel:=x +end + +@ If |last_sixel| has only been output once or twice, we send the explicit +copies of it + +@= +begin + len:=len+matching; + while matching > 0 do + begin + write(ln3_file,chr(last_sixel)); + decr(matching) + end +end + +@ On the other hand, it's more efficient to use a sixel repeat count if there +are three or more copies of |last_sixel| required. The introducer for such a +repeat count is the `\.!' character, which is followed by the ASCII character +representation of the count. The actual sixel to be output then follows this +count. + +@= +begin + write(ln3_file,'!',matching:1,chr(last_sixel)); + len:=len+5 +end + +@ To produce the bitmap sixel dump of the glyph, we read the pixels into the +array |sixel_line|; this contains 6 rows, each capable of holding 300 +|eight_bits|, containing 8 pixels of the character's raster. We index this with +|k|, which thus runs |1..6| + +Variable |i| is used to run through the |num_rows| lines of rasters, whilst |j| +indexes the bytes from the pixel file, and into |sixel_line|. + +@= +i:=0; k:=1; +while i < num_rows do +begin + @; + incr(k); incr(i); + if k > 6 then + begin + @; + k:=1 + end +end; +if k>1 then +begin + while k <= 6 do + begin {Fill in bottom incomplete rows of sixels} + for j:=1 to (num_cols+7) div 8 do + sixel_line[k,j]:=0; + incr(k) + end; + @ +end + +@ The following section outputs the six rows of pixels in +|sixel_line| as $8\times{|num_cols|}$ columns of sixel graphics. + +The variable |m| runs through the values 128,64,32,..,1, and is used to divide +an |eight_bit| to extract the most-significant bit of eight pixels in rows 6..1 +(indexed by |n|) of |sixel_line|. Each bit is transferred into the least +significant bit of |l|, initially zeroed for each sixel. + +As each sixel is completed, it is output to the \.{LN3} file. To prevent the +output of too many characters to the |ln3_file|, which is of type |text|, the +output is broken every 128 bytes. A ``graphics'' end-of-record is inserted +after every line of sixels. + +@= +len:=0; last_sixel:=0; matching:=0; +for j:=1 to (num_cols+7) div 8 do +begin + m:=128; + while m>0 do + begin + l:=0; + for n:=6 downto 1 do + if odd(sixel_line[n,j] div m) then + l:=2*l + 1 + else + l:=2*l; + put_sixel(l+63); + m:=m div 2 + end; +end; +put_sixel(0); {Flushes the |last_sixel| from the ``buffer''} +write_ln(ln3_file,'-') {Sixel `CR-LF'} + + +@ We are now in a position to be able to include the declaration of |ord_text| +into the \PASCAL\ generated from the \.{WEB} + +@p @; +@*Output the individual segments forming a page. At the end of each page, we +have a number of linked lists containing each of the segments set on any +individual ``line'' of the paper. We have to re-order these, such that they +are output in the most efficient manner, with appropriate changes of (lnf) +font as necessary. + +When pages are actually being ``set'', |font_in_use[lnf]| will contain either +-1, which indicates that the LN03 font required is not currently mapped to a +|SGR| (Select Graphic Rendition) code, or a number in the range |0..9|, from +which the |SGR| font number to be used to invoke that font as the current one is +derived (by adding 10). + +The array |who_uses| maps these |SGR| indices back to the number of an LN03 +font. Finally, the current |SGR| in use is held in |cur_out|, to minimise +the number of |SGR| commands that need to be included in the output stream. + +@= +@!font_in_use:array [0..max_lnfonts] of -1..max_SGR; +@!who_uses:array [0..max_SGR] of -1..max_lnfonts; +@!cur_out:0..max_SGR; + +@ First of all, we shall require a procedure to output an arbitrary string +(most commonly an escape sequence) to the LN03 printer. This will typically +be used to activate the |HPA| (Horizontal Position Absolute) control sequence. + +@p procedure esc_out(str:varying[str_len] of char); {Escape sequence to LN3} + begin + ln3_cnt:=ln3_cnt+VAX_length(str); + write(ln3_file,str) + end; + +@ Then we require a procedure to output as much of a segment as +possible to the current line, and delete that section from the segment as +stored before returning. + +One useful extension of VAX-\PASCAL\ that we utilize are the functions |min| +and |max|. These each take an arbitrary number of parameters, and return a +result, of the same type, that is equal to the smallest or largest +(numerically) of the parameters provided. + +@d VAX_min==@= min@> +@d VAX_max==@= max@> + +@p procedure print_seg; + var @!text_len,@!uselen,@!i,@!j,@!ln_font,@!delta_x:integer; + @!csi_present:integer; + begin + with cur_seg^ do + begin + text_len:=VAX_length(text); + uselen:=VAX_min(text_len,max_line-ln3_cnt,max_print-ln3_print); + if (uselen>0) or (text_len=0) then {`Use' empty segment} + begin {Otherwise, throw segment back if none of it will fit!} + if uselen <> text_len then {Text won't all fit!} + @; + @= +if font_in_use[font]<0 then {not currently designated} +@= +begin + font_in_use[who_uses[max_SGR]]:=-1; + font_in_use[font]:=max_SGR; + who_uses[max_SGR]:=font; + esc_out(dcs+'1;'+str_int(10+max_SGR)+'}U0000'+@=dec@>(font,2,2)+ + '002SK00GG'+st) +end + + +@ We need to output appropriate ISO-standard control sequences to position the +segment at the correct position on the current line; if the segment is the +first to be output on the current line, this positioning should use the |HPA| +(Horizontal Position Absolute) sequence, otherwise the |HPR| (Horizontal +Position Relative) sequence is preferred. + +@= +if cur_seg=out_list then {Leftmost segment of line} + esc_out(csi+str_int(xs)+'`') { HPA to |xs|} +else@/ +begin + delta_x:=xs-prev_seg^.xe; {Distance from end of next leftward segment} + if delta_x>0 then esc_out(csi+str_int(delta_x)+'a') {HPR} + else if delta_x<0 then abort('Internal error (-ve delta x)') +@:fatal error Internal error ...}{\quad\.{Internal error}@> +@:fatal error Internal error negative delta x}{\qquad\.{(-ve delta x)}@> +end + +@ After we have output the first |uselen| characters to the \.{LN3} file, we +then check whether that's finished off this segment. If it has, we can +discard the segment, but otherwise we perform the split at the predetermined +point. + +@= +ln3_cnt:=ln3_cnt+uselen; ln3_print:=ln3_print+uselen; +if uselen=text_len then + cur_seg:=nil {All of segment used} +else + @ + +@ Having previously determined the split point for the segment (including none +at all), we now reduce the segment to the part following that point. + +This is complicated by the fact that we must determine whereabouts we have +actually got to on the current line. To do this, we increment the ``current +position'' by each character's width, whilst any |HPR| sequences have to be +``read'' in as numbers and added to the count. + +@= +begin i:=1; + while i<=uselen do + begin + if (text[i]<>esc) and (text[i]<>csi) then + xs:=xs+ch_widths[font,ord(text[i])] + else + @ ; + incr(i); + end; + text:=substr(text,uselen+1,text_len-uselen) +end + +@ Whenever we meet a \.{ESC} or \.{CSI} character, we assume that it starts a +Horizontal Position Relative command, locate the first digit of its parameter +(which will follow a `\.[' after the \.{ESC} or come immediately after the +\.{CSI}), and the `\.a' which finishes the control sequence. The characters in +between represent a decimal number, which we can ``read'' using a Vax-\PASCAL\ +extension. The current placing position is then incremented by this amount. + +@= +begin + if text[i]=esc then j:=i+2 else j:=i+1; + while text[j]<>'a' do incr(j); + if text[i]=esc then + VAX_string_read(substr(text,i+2,j-i-2)+' ',delta_x) + else + VAX_string_read(substr(text,i+1,j-i-1)+' ',delta_x); + xs:=xs+delta_x; i:=j; +end + + + +@ As we shall see later, if the string of characters in a \TeX\ +\.{\\special} command commences with the character string |'SX '| (i.e., +`old style'), or |'ln03:plotfi[le] '| or |'ln03:sixel '| (`new style'), a +segment will be inserted into the page list referencing the appropriate +file; when the time comes to process that segment, the following procedure +will be invoked. The |text| field of |cur_seg| will be the name of a +VAX/VMS file which is assumed to contain an image encoded into DEC's +standard ``sixel'' format. + +This file is then opened, and the records therein copied to the \.{.LN3} +file; the |y_position| parameter, and the starting position recorded in +field |xs| are used in appropriate escape sequences to position this +graphics dump at the desired position on the page before this operation. + +The name of the file included is reported on the terminal and in the log file. +@p procedure Copy_sixel_file(@!y_position:integer); +var + @!open_stat : integer; {records whether |open| was successful} + @!sixel_record, {holds records being copied from included file} + @!stat_msg : varying [256] of char; {just holds an error indication} + @!sixel_file : text; {The file of graphics details to be copied} +begin + open(sixel_file,cur_seg^.text,@=readonly@>,@=256@>, + @=user_action@>:=file_open,VAX_continue); + open_stat := status(sixel_file); + if open_stat<>0 then + begin + case open_stat of + 2: stat_msg := 'PAS-E-ERRDUROPE'; + 3: stat_msg := 'PAS-E-FILNOTFOU'; + 5: stat_msg := 'PAS-E-ACCMETINC'; + 6: stat_msg := 'PAS-E-RECLENINC'; + 7: stat_msg := 'PAS-E-RECTYPINC'; + 8: stat_msg := 'PAS-E-ORDSPEINC'; + othercases + stat_msg := str_int(open_stat); + endcases; + error('Couldn''t open \special inclusion: ',cur_seg^.text, + ' - ignored (status=',stat_msg,')'); +@:Error: Couldn't open special inclusion}{\quad\.{Couldn't open \\special inclusion}@> + end else + begin + monitor(' ('+def_file_name); + print_ln('Sixel graphics included from: ',def_file_name); +@.Sixel graphics included...@> + reset(sixel_file); + write(ln3_file,csi,y_position:1,'d',csi,cur_seg^.xs:1,'`'); + while not eof(sixel_file) do + begin + read_ln(sixel_file,sixel_record); + write_ln(ln3_file,sixel_record) + end; + close(sixel_file,@=disposition:=save@>,VAX_continue); + monitor(') '); + write_ln(ln3_file,SSU_pixel); {Make sure that we still have pixel SSUs} + end; +end; + +@ Whilst traversing the lists, we require some additional variables: +During this output phase, we split the lines +of output such that no line contains more than |max_line| characters +altogether, of which no more than |max_print| may be printable ones. The +counters |ln3_cnt| and |ln3_print| permit us to exercise this control. The +|boolean| variable |top_of_page| controls the inclusion of a |FF| character in +the output file to split the pages. + +If the page contains glyphs in both of the possible orientations, this is +recorded in |two_orientations|. Segments corresponding to the orientation +not currently being output are shuffled off onto the |deferred_list| whilst +this processing takes place. + +@= + @!out_list,@!prev_seg,@!right_seg,@!left_seg:^segment; + @!x_left,@!x_max:integer; + @!ln3_cnt,@!ln3_print:integer; + @!still_fits,top_of_page:boolean; + @!two_orientations:boolean; + @!deferred_list:^segment; + + +@ The actual traversing of the lists takes place here; since we now support +the concept of mixing orientations on the one page, it's sometimes necessary +to traverse the lists twice! + +@= +repeat + two_orientations := false; {assume that we \&{don't} need two passes!} + for k:=y_top to y_bot do {Cycle through each possible list} + if seg_list[k] <> nil then + begin + out_list:=nil; deferred_list:=nil; + repeat {until we've emptied current line} + @ ; + @; + @ ; + @ ; + until seg_list[k]=nil; + if deferred_list<>nil then two_orientations:=true; + seg_list[k]:=deferred_list + end; + if two_orientations then {prepare for second (and last) pass} + begin + if cur_orient=landscape then new_orient:=portrait + else new_orient:=landscape; + @ + end; +until not two_orientations; +if lost_seg <> nil then +begin cur_seg:=lost_seg; + finish_seg {Output remaining errors} +end; + +@ If, when outputting stored information in |cur_orient|, we encounter some +segment(s) in the opposite orientation, we save them in a subsidiary list, +and stuff them back into |seg_list[k]| after processing the current row. + +@= +prev_seg:=nil; cur_seg:=seg_list[k]; +repeat + right_seg:=cur_seg^.next; {we know that |cur_seg<>nil|} + if cur_seg^.direction<>cur_orient then + begin + if prev_seg<>nil then + prev_seg^.next:=right_seg {in middle of list} + else + seg_list[k]:=right_seg; {at beginning of list} + cur_seg^.next:=deferred_list; {add segment to front of deferred list} + deferred_list:=cur_seg + end else + prev_seg:=cur_seg; {latest non-empty node} + cur_seg:=right_seg {next node on |seg_list|} +until cur_seg=nil + + +@ Now that the program can support landscape and portrait orientation within +the same document, we need a method of telling the LN03 to switch between +the modes. This code is called before output of the first object to the +page, if |new_orient<>orientation|, and again at the end of the page, to +reset to the default |orientation| for the next page. + +@= +if new_orient<>cur_orient then +begin + if new_orient=landscape then + begin + write_ln(ln3_file,csi,PFS_landscape); + page_len:=paper_wid+page_x_min; page_wid:=paper_ht+y_land_min; + y_min:=page_x_min; x_min:=y_land_min + end else + begin + write_ln(ln3_file,csi,PFS_portrait); + page_len:=paper_ht+y_port_min; page_wid:=paper_wid+page_x_min; + y_min:=y_port_min; x_min:=page_x_min + end; + cur_orient:=new_orient +end + +@ When handling characters from a virtual font, the situation can arise in +which a totally empty segment (one that contains no text) has been added to +the list. Such segments can be discarded! Other segments can appear to +contain no text, but actually reference a single oversized glyph, which must +therefore be output as a bitmap. + +@= +prev_seg:=nil; cur_seg:=seg_list[k]; +if cur_seg<>nil then +repeat + right_seg:=cur_seg^.next; {we know that |cur_seg<>nil|} + if (VAX_length(cur_seg^.text)=0) or (cur_seg^.seg_type<>glyph_string) then + begin + @; + if prev_seg<>nil then + prev_seg^.next:=right_seg {in middle of list} + else + seg_list[k]:=right_seg; {at beginning of list} + cur_seg^.next:=free_seg_list; {add segment to front of free list} + free_seg_list:=cur_seg + end else + prev_seg:=cur_seg; {latest non-empty node} + cur_seg:=right_seg {next node on |seg_list|} +until cur_seg=nil + +@ Character glyphs which were too large to be downloaded into the LN03's +internal fonts have the |seg_type| field of the segment set to |bitmap|; +when we meet such a segment, we output the bitmap immediately. Similarly, +sixel dumps referenced in \.{\\special} commands have the value |sixel_dump| +for this field, and |Copy_sixel_file| is called to copy the referenced file. + +@= +case cur_seg^.seg_type of + bitmap: print_glyph(cur_seg^,k); + sixel_dump: Copy_sixel_file(k); + othercases do_nothing; +endcases + +@ For as many as possible of all the segments which belong at the current +absolute vertical position, we construct a list in which none of the segments +overlap each other. We are then able to output these in one sequence which +will contain only characters and \&{forward} horizontal movement commands. + +@= +x_left:=1000000000; {A very high value; ensure |right_seg| \AM\ |left_seg| get set} +repeat + prev_seg:=nil; right_seg:=nil; + x_max:=-1; + cur_seg:=seg_list[k]; + @ ; + @ +until right_seg = nil; + +@ We start by locating the segment (of those available) which extends furthest +to the right, and also the one which precedes it. These are then pointed to +by |right_seg| and |prev_seg|, respectively. + +@= +while cur_seg<>nil do +begin + if (cur_seg^.xe > x_max) and (cur_seg^.xe <= x_left) then + begin x_max:=cur_seg^.xe; + right_seg:=cur_seg; {Points to rightmost segment} + left_seg:=prev_seg {Points to first of at least 2, or is |nil|} + end; + prev_seg:=cur_seg; + cur_seg:=cur_seg^.next; +end + +@ At this point, we have |right_seg| pointing to the segment which extends +furthest to the right, whilst |left_seg| will point to the segment immediately +before this (which may, or may not, overlap |right_seg|). + +We then put it at the front of the |out_list|; further non-overlapping +segments will later be placed in front of it. We ensure that the next +|right_seg| that we select will not overlap by noting the left-most extent of +the segment we've just put on the |out_list|. + +@= +if right_seg <> nil then +begin + @ ; + right_seg^.next:=out_list; {Put rightmost at start of |out_list|} + out_list:=right_seg; + x_left:=right_seg^.xs {Don't consider anything right of its LHS} +end + +@ If |left_seg| is |nil| then |right_seg| is the first segment associated +with the line, and so we remove it from the front of the list. Otherwise, we +detach it from the middle of the list. + +@= +if left_seg = nil then + seg_list[k]:=seg_list[k]^.next +else + left_seg^.next:=left_seg^.next^.next + +@ Once we've constructed the list out of as many segments as possible for the +current ``line'', we can output them all and go back for some more. + +@= +while out_list <> nil do +begin + ln3_cnt:=0; ln3_print:=0; {Nothing as yet on line} + esc_out(csi+str_int(k)+'d'); {Move to correct line on paper} + cur_seg:=out_list; prev_seg:=nil; + still_fits:=true; + @ ; + @; + write_ln(ln3_file) +end + +@ Once we have a single segment ready for output, we call |print_seg| to +output as much of it as will fit in the space remaining in the output buffer. +If this is the whole segment, we can then repeat the process with the next +segment in the |out_list|, noting the address of this segment so that it may +be returned to the |free_seg_list|. On the other hand, if |print_seg| decided +to split the segment, we break out of the loop. + +@= +while (cur_seg <> nil) and still_fits do +begin right_seg:=cur_seg; + print_seg; {Will leave |cur_seg=nil| if all text output} + if cur_seg = nil then + begin + cur_seg:=right_seg^.next; {Next segment for output} + prev_seg:=right_seg + end else + still_fits:=false; +end; + +@ Once a segment (or group of segments) have been output, it is safe to +discard them. We do this by returning them to the |free_seg_list|, so that +new nodes will be allocated therefrom in preference to using |new|. The first +such freed segment is that at the begining of the |out_list|, whilst the last +is that most recently output, noted in |prev_seg|. + +@= +if prev_seg <> nil then +begin prev_seg^.next:=free_seg_list; + free_seg_list:=out_list; + out_list:=cur_seg +end + +@ When \.{DVItoLN03} first starts, any output produced will be printed on the +first page. Subsequently, it is necessary to insert a form-feed character to +terminate the preceding page before any output for another page may commence. +The |boolean| |top_of_page| is used to keep track of whether the form-feed is +required. + +This code is called whenever something is about to be output to the page: if +the orientation is incorrect at that time, the appropriate change is made. +It's also the appropriate time to change paper trays, and select the +printing mode. + +@= +if top_of_page then +begin + top_of_page:=false; + if pages_printed>0 then write_ln(ln3_file,FF); + @; + @ +end; +@ + +@ With the DEClaser~2200, it is possible (through the \.{FIRST} and \.{REST} +selectors of the \.{/FEED\_TRAY} qualifier) to arrange for the second and +subsequent sheets to be printed on paper from a different input tray than +that used for the first sheet. The code in this module effects this tray +change, when the second sheet to be printed is first met: it firstly +determines whether we're printing a \\{recto} page, when duplexing (this +information is later used for selecting the printing mode for the current +page). The ``cascade'' of |if| clauses is to reduce the processing overhead +except for the first three pages printed. + +The macro here is used to change trays; the control sequence ending in +|'!v'| is the |DECASTC| (Automatic Sheet-feeder Tray Control) command, to +select the desired tray. + +@d select_tray(#)==case # of + default_tray: do_nothing; + othercases + write(ln3_file,csi,#:1,'!v') +endcases + +@d odd_page==(odd(count[0])or(count[0]=0)) + +@d recto_page==(duplex_by_page_numbers and odd_page) or + (not duplex_by_page_numbers and not odd(pages_printed)) + +@d starting_second_sheet== + (((print_modetrue_duplex_tumbled)) and + (pages_printed=1)) {non-duplex; change at second page} + or + (((print_mode=true_duplex_normal)or(print_mode=true_duplex_tumbled)) and + this_page_recto) {duplex; change at second sheet} + +@= +this_page_recto:=recto_page; +if pages_printed<=2 then + if pages_printed>0 then + if starting_second_sheet then + if following_tray<>first_tray then + select_tray(following_tray) + +@ When we are printing in duplex mode (even simulated duplex, in response to +the \.{MASTER} option of the \.{/PRINT\_MODE} qualifier), we have to arrange +to leave a page blank if two \\{recto} or two \\{verso} pages follow each +other. This information will already have been put into |this_page_recto|, +when the paper tray was selected. + +For efficiency reasons, when printing in a duplex mode on the DEClaser~2200 +(LN06), we switch into simplex mode for a \\{recto} page which is followed +by another such: this information was recorded in the array |blank_follows| +when the starting page was being located. This speeds up processing, +because the printer doesn't need to perform the mechanical reversal of the +page only to find that is has nothing to be printed upon it. + +@= +@; +if print_mode>=true_duplex_normal then +begin + if last_page_recto=this_page_recto then + begin + if (print_mode=ln03_master) or not this_page_recto then + write(ln3_file,' ',FF) {Eject an extra page on LN03, or make + \\{recto} page blank} + end else + if (print_mode0) and + duplex_by_page_numbers and this_page_recto then + if blank_follows[ptr_blanks]=cur_loc_after_bop then + begin {This page has blank \\{verso} side} + write(ln3_file,csi,true_simplex_normal:1,' x'); + duplex_to_be_reset:=true; + decr(ptr_blanks) + end +end; +last_page_recto:=this_page_recto; + +@ If the previous page was printed in simplex mode, because it was a +\\{recto} page to be followed by another one then when we meet that next +\\{recto} page we have a look to see if the following page is yet another +\\{recto} one. If not, we have to reset the required duplexing mode. + +@= +if duplex_to_be_reset then {previous page was temporary excursion into + simplex mode} + if ptr_blanks>0 then + if blank_follows[ptr_blanks]=cur_loc_after_bop then + begin + decr(ptr_blanks); {and remain in simplex mode} + if print_mode>=duplex_master_normal then + write(ln3_file,' ',FF) {eject blank page for \\{verso} master} + end else + begin + write(ln3_file,csi,print_mode:1,' x'); + duplex_to_be_reset:=false + end + +@ When we come to the end of the document when printing in any duplexing +mode, we may just have printed a \\{recto} page; we must either eject the +second side as blank (in true duplex modes) or print an extra blank page (in +any of the master modes). This is accomplished by printing a form-feed, and +following it with a space; the form-feed on its own would just result in the +printer symbiont suppressing that which it would have inserted, but the +space fools it into sending a second form-feed itself. + +@= +if (print_mode>=true_duplex_normal) and last_page_recto then + if (print_mode>=duplex_master_normal) or not duplex_to_be_reset then + write(ln3_file,FF,' ') + +@ Here are the variables required to control \\{recto}/\\{verso} printing + +@= +@!last_page_recto:boolean; {|true| if previous page was \\{recto}} +@!this_page_recto:boolean; {used to save multiple evaluation of |recto_page|} +@!pages_printed:integer; {counts each page generated for + \.{/noduplex\_by\_page\_numbers}} +@!duplex_to_be_reset:boolean; {Used to reset any duplex mode after one sheet + has been printed in simplex} +@!cur_loc_after_bop:integer; {Records |cur_loc| after the current page's + |bop| command was processed} + +@ These variables have to be initialized, of course + +@== +pages_printed:=0; last_page_recto:=false; duplex_to_be_reset:=false; + +@ When we first start writing the output file, we have to add commands to +tell the DEClaser printers from which tray to take the first sheet of paper, +and which printing mode to use. The control sequence ending in |' x'| is +the |DECSPDM| (Set Duplex Print Mode) command. + +@ + +@ If we are starting the download of any except the first \TeX\ font, it may +be that the previous \TeX\ font was the last loaded into the current LN03 +font, which means we will be starting a new LN03 font here. Therefore we need +to separate the two LN03 fonts from each other: the comma (`\.,') character is +used by the LN03 for this purpose. + +@= +if (txf_to_lnf[k]<>txf_to_lnf[txf_ord[m-1]]) then + write_ln(ln3_file,',') + +@ The function |add_txf_to_lnf| performs all the work of creating an LN03 font +from the rasters in the font file. The result returned by this function +gives the total number of bytes created in the LN03 font for the given \TeX\ +file. + +@= +total_rasters:=total_rasters+ + add_txf_to_lnf(txf_to_lnf[k],k,file_name,pxl_ident) + +@ We may have both packed and unpacked files available from which to take +pixel bitmaps, so we require some indication of what type of file is +actually available. + +@= +@!pixel_types = (@!unavailable,@!packed_file,@!pixel_file); + +@ The user has the option of using either pixel files (\.{.PXL}) and/or packed +pixel files (\.{.PK}) as the source of font raster information. There is the +further option of the directories in which these files are held being either +``flat'' (with all font files of one class in the same directory) or +``nested'' (where separate sub-directories are provided for each different +magnification). + +File naming conventions used are illustrated by the following examples, which +show the names under which \.{cmr10} will be found at magsteps 0--2: + +\yskip\centerline{\vbox{\offinterlineskip + \hrule + \halign{&\vrule#&\strut\hfil#\hfil&\quad\tt#\quad&\quad\tt#\quad& + \quad\tt#\quad&\quad\tt#\quad&\vrule#\cr + height2pt&\multispan5 &height2pt\cr + &\omit\strut Magnif-\hfil&\multispan2\hfil Packed Pixels\hfil& + \multispan2\hfil Unpacked Pixels\hfil&\cr + &\omit\strut\hfil ication&\hfil\rm Flat\hfil&\hfil\rm Nested\hfil& + \hfil\rm Flat\hfil&\hfil\rm Nested\hfil&\cr + height2pt&\multispan5 &height2pt\cr + \noalign{\hrule} + height2pt&\multispan5 &height2pt\cr + &0&CMR10.300PK&[300]CMR10.PK&CMR10.1500PXL&[1500]CMR10.PXL&\cr + &$1\over2$&CMR10.329PK&[329]CMR10.PK&CMR10.1643PXL&[1643]CMR10.PXL&\cr + &1&CMR10.360PK&[360]CMR10.PK&CMR10.1800PXL&[1800]CMR10.PXL&\cr + &2&CMR10.432PK&[432]CMR10.PK&CMR10.2160PXL&[2160]CMR10.PXL&\cr + height2pt&\multispan5 &height2pt\cr} + \hrule +}} + +The program determines which class(es) of files are available from the +qualifiers \.{/PXL\_FONT\_DIRECTORY} (for the unpacked files) and +\.{/PK\_FONT\_DIRECTORY} (for the packed files). At least one of these +qualifiers must be present; if the qualifier provided is a VMS logical name, +it has been translated repeatedly until a VMS directory specification resulted. +Examination of (the first translation of) this specification then determines +whether the flat or nested structure is being used: if the directory +specification ends with the characters `\.{.]}' it indicates that the raster +files will be found in sub-directories, whilst absence of the `\..' indicates +a flat structure. The variables |pk_rooted| and |pxl_rooted| will already +have been set to reflect this. + +Whether packed or unpacked pixel files are used, it is necessary to +compute a number which relates the magnification to either the sub-directory +name or the file extension. Since actual file names may well have been +computed using low-accuracy (possibly integer) arithmetic by operating system +commands, the possibility exists that the numbers may have been truncated to +the ``wrong'' integer compared with those that \.{DVItoLN03} computes; +therefore, we always arrange to look for the files using both the computed +number and those $\pm1$ from it. + +The variable |dir_off| is used to compute the offset from the central figure, +which is held in |p|. The variables |file_stat| and |find_ctxt| are used in +conjunction with Vax/VMS system calls to determine whether the requested file +exists; |found_file| takes the values $-1$, indicating that the file wasn't +found, or $+1$ if it is found. It also can take the value $0$ whilst the +search is proceding, so a simple boolean cannot be used instead. + +The following procedure converts the \TeX\ font referenced by |TeX_font| into +the correct strings for the directory and file name under which \.{DVItoLN03} +expects to find the pixel file. + +@p procedure name_pxl_file ( @!TeX_font : integer;@/ + var @!open_file_name: file_spec; + var @!what_it_was: pixel_types); + var @!p,@!dir_off,@!file_stat,@!find_ctxt,@!found_file : integer;@/ + @!found_name,@!expected_file_spec : file_spec; +begin + found_file := -1; + expected_file_spec:='';@/ + @;@/ + if found_file<0 then + @; + if found_file<0 then + begin + warning('cannot find file ',expected_file_spec); +@:Warning: cannot find file}{\quad\.{cannot find file}@> + what_it_was:=unavailable + end +end; + + +@ We only look for packed pixel files if the \.{/PK\_FONT\_DIRECTORY} +qualifier was present, in which case its value will have been placed into the +string |tex_pk_font|. If the final characters of (the first logical name +translation of) this string were `\.{.]}', then a nested directory structure +is assumed (as indicated in |pk_rooted|), and the file is sought in the form +\hbox{\meta{disk}\meta{directory}\.[\meta{size}\.]\meta{name}\.{.PK}}. +Alternatively, if the directory is flat, the filename sought will be +\hbox{\meta{disk}\meta{directory}\meta{name}\..\meta{size}\.{PK}}. + +Unfortunately, it is necessary to reconstruct the desired string for each +offset tried. The \meta{size} is effectively computed from 1.5 +times the font design size compared with the \TeX ware default of 200 +pixels/inch, yielding 300 for unmagnified fonts. + +@d append_name==for n:=font_name[TeX_font] to font_name[TeX_font+1]-1 do + open_file_name:=open_file_name+xchr[names[n]] + +@d flat_file_spec(#)==begin open_file_name := # ; + append_name; + open_file_name:=open_file_name+'.'+str_int(p+dir_off) + end + +@d rooted_file_spec(#)==begin open_file_name:= # + '[' + + str_int(p+dir_off) + ']'; + append_name; + open_file_name:=open_file_name+'.' + end + +@== +if tex_pk_font.length > 0 then +begin + dir_off:=0; + p:=round(((resolution/1000)*mag*font_scaled_size[TeX_font])/font_design_size[TeX_font]); + repeat + if not pk_rooted then + flat_file_spec(tex_pk_font) + else + rooted_file_spec(tex_pk_font); + open_file_name:=open_file_name+'PK'; + @ + until found_file<>0; + if found_file>0 then + begin + open_file_name:=found_name; + what_it_was:=packed_file + end +end; + +@ To determine the correct file of pixels to be read, the quantity |p| is +computed; since it is a \TeX ware convention that all pixel files are assumed +(at magnification=1000) to be at a |resolution| of 200 dots/inch, and the +LN03's |resolution| is \&{300} dots/inch, then an ordinary unmagnified font +will be sought with a +$\langle$\\{size}$\rangle$ of \.{1500}, whilst one magnified \.{\BS magstep 1} +will have a $\langle$\\{size}$\rangle$ of \.{1800}, \\{etc.} Computation of +|p| yields the appropriate value for the Vax/VMS directory or file type to be +used, and |VAX_lib_find_file| is used to verify that the file exists; to allow +for rounding errors, the directories |p|$\pm1$ are also sought. + +@== +if tex_pxl_font.length > 0 then +begin + dir_off:=0; + p:=round(((resolution/200)*mag*font_scaled_size[TeX_font])/font_design_size[TeX_font]); + repeat + if not pxl_rooted then + flat_file_spec(tex_pxl_font) + else + rooted_file_spec(tex_pxl_font); + open_file_name:=open_file_name+'PXL'; + @ + until found_file<>0; + if found_file>0 then + begin + open_file_name:=found_name; + what_it_was:=pixel_file + end +end + +@ Now that we've got a full file specification (barring the version number) in +|open_file_name|, we call upon the Vax/VMS system services to try to locate +the file. Before doing this, we make a note of the file specification if it's +that for the default file name (with |dir_off = 0|), and we haven't +previously noted a file name. + +The find\_file system service requires a context variable (because it is +capable of finding a number of files matching a `wild-carded' file +specification), but we're not interested in that; therefore we always set +|find_ctxt| to zero before searching. \&{N.B.} This may not be written as the +constant |0| in the procedure call, because the system service writes a value +back to this variable. + +The system service returns an odd status if the search is successful; +otherwise we change |dir_off| to a suitable new value, unless we've already +tried |p| and $p\pm1$, in which case we indicate the absence of the file by +setting |found_file = -1|. + +@= +if (dir_off=0) and (expected_file_spec='') then + expected_file_spec:=open_file_name; +find_ctxt:=0; +file_stat:=VAX_lib_find_file(open_file_name,found_name,find_ctxt); +found_file:=0; +if odd(file_stat) then found_file:=1 +else +begin + if dir_off=1 then found_file:=-1; + if dir_off=-1 then dir_off:=1 else dir_off:=-1 +end + +@ Although up to |max_lnfonts| may be downloaded by this program, the LN03 is +only capable of accessing any ten of these at any one time; it accomplishes +this by allocating the |SGR| (Select Graphic Rendition) designators |10..19| +to the first ten fonts downloaded. Fonts are designated by means of their +16-character internal font identifiers, allocated during the generation of +each font. + +@= +for m:=0 to VAX_min(max_SGR,next_lnf-1) do {Match first 10 fonts to |SGR| designators} +begin font_in_use[m]:=m; who_uses[m]:=m; + write_ln(ln3_file,dcs,'1;1',m:1,'}U00000',m:1,'002SK00GG',st) +end; +write_ln(ln3_file,csi,'10m'); {|SGR| 10 --- select most used font} +cur_out:=0 {We won't need to |SGR| if first output uses |SGR| 10} + +@*Format of Virtual Fonts. The following description is cribbed almost +verbatim from Knuth's description of \.{VFtoVP}. +@^Knuth, D.~E.@> +@:VFtoVP program}{\.{VFtoVP} program@> + +The idea behind \.{VF} files is that a general +interface mechanism is needed to switch between the myriad font +layouts provided by different suppliers of typesetting equipment. +Without such a mechanism, people must go to great lengths writing +inscrutable macros whenever they want to use typesetting conventions +based on one font layout in connection with actual fonts that have +another layout. This puts an extra burden on the typesetting system, +interfering with the other things it needs to do (like kerning, +hyphenation, and ligature formation). + +These difficulties go away when we have a ``virtual font,'' +i.e., a font that exists in a logical sense but not a physical sense. +A typesetting system like \TeX\ can do its job without knowing where the +actual characters come from; a device driver can then do its job by +letting a \.{VF} file tell what actual characters correspond to the +characters \TeX\ imagined were present. The actual characters +can be shifted and/or magnified and/or combined with other characters +from many different fonts. A virtual font can even make use of characters +from virtual fonts, including itself. + +Virtual fonts also allow convenient character substitutions for proofreading +purposes, when fonts designed for one output device are unavailable on another. + +@ A \.{VF} file is organized as a stream of 8-bit bytes, using conventions +borrowed from \.{DVI} and \.{PK} files. Thus, a device driver that knows +about \.{DVI} and \.{PK} format will already contain most of the mechanisms +necessary to process \.{VF} files. + + +A preamble appears at the beginning, followed by a sequence of character +definitions, followed by a postamble. More precisely, the first byte of +every \.{VF} file must be the first byte of the following ``preamble +command'': + +\yskip\hang|pre| 247 |i[1]| |k[1]| |x[k]| |cs[4]| |ds[4]|. +Here |i| is the identification byte of \.{VF}, currently 202. The string +|x| is merely a comment, usually indicating the source of the \.{VF} file. +Parameters |cs| and |ds| are respectively the check sum and the design size +of the virtual font; they should match the first two words in the header of +the \.{TFM} file for the virtual font. + +\yskip +After the |pre| command, the preamble continues with font definitions; +every font needed to specify ``actual'' characters in later +\\{set\_char} commands is defined here. The font definitions are +exactly the same in \.{VF} files as they are in \.{DVI} files, except +that the scaled size |s| is relative and the design size |d| is absolute: + +\yskip\hang|fnt_def1| 243 |k[1]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<256|. + +\yskip\hang|@!fnt_def2| 244 |k[2]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<65536|. + +\yskip\hang|@!fnt_def3| 245 |k[3]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |0<=k<@t$2^{24}$@>|. + +\yskip\hang|@!fnt_def4| 246 |k[4]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. +Define font |k|, where |@t$-2^{31}$@><=k<@t$2^{31}$@>|. + +\yskip\noindent +These font numbers |k| are ``local''; they have no relation to font numbers +defined in the \.{DVI} file that uses this virtual font. The dimension~|s|, +which represents the scaled size of the local font being defined, +is a |fix_word| relative to the design size of the virtual font. +Thus if the local font is to be used at the same size +as the design size of the virtual font itself, |s| will be the +integer value $2^{20}$. The value of |s| must be positive and less than +$2^{24}$ (thus less than 16 when considered as a |fix_word|). +The dimension~|d| is a |fix_word| in units of printer's points; hence it +is identical to the design size found in the corresponding \.{TFM} file. + +@d vf_id_byte=202 + +@= +@!vf_file:byte_file; + +@ The preamble is followed by zero or more character packets, where each +character packet begins with a byte that is $<243$. Character packets have +two formats, one long and one short: + +\yskip\hang|long_char| 242 |pl[4]| |cc[4]| |tfm[4]| |dvi[pl]|. This long form +specifies a virtual character in the general case. + +\yskip\hang|short_char0..short_char241| +|pl[1]| |cc[1]| |tfm[3]| |dvi[pl]|. This short form specifies a +virtual character in the common case +when |0<=pl<242| and |0<=cc<256| and $0\le|tfm|<2^{24}$. + +\yskip\noindent +Here |pl| denotes the packet length following the |tfm| value; |cc| is +the character code; and |tfm| is the character width copied from the +\.{TFM} file for this virtual font. There should be at most one character +packet having any given |cc| code. + +The |dvi| bytes are a sequence of complete \.{DVI} commands, properly +nested with respect to |push| and |pop|. All \.{DVI} operations are +permitted except |bop|, |eop|, and commands with opcodes |>=243|. +Font selection commands (|fnt_num0| through |fnt4|) must refer to fonts +defined in the preamble. + +Dimensions that appear in the \.{DVI} instructions are analogous to +|fix_word| quantities; i.e., they are integer multiples of $2^{-20}$ times +the design size of the virtual font. For example, if the virtual font +has design size $10\,$pt, the \.{DVI} command to move down $5\,$pt +would be a \\{down} instruction with parameter $2^{19}$. The virtual font +itself might be used at a different size, say $12\,$pt; then that +\\{down} instruction would move down $6\,$pt instead. Each dimension +must be less than $2^{24}$ in absolute value. + +Device drivers processing \.{VF} files treat the sequences of |dvi| bytes +as subroutines or macros, implicitly enclosing them with |push| and |pop|. +Each subroutine begins with |w=x=y=z=0|, and with current font~|f| the +number of the first-defined in the preamble (undefined if there's no +such font). After the |dvi| commands have been +performed, the |h| and~|v| position registers of \.{DVI} format and the +current font~|f| are restored to their former values; +then, if the subroutine has been invoked by a \\{set\_char} or \\{set} +command, |h|~is increased by the \.{TFM} width +(properly scaled)---just as if a simple character had been typeset. + +(The following commands, already defined as macros with respect to the +\.{DVI} file, have the same interpretation when they appear in a virtual +font file: \hang |set_char_0|, |set1|, |set_rule|, |put1|, |put_rule|, |nop|, +|push|, |pop|, |right1|, |w0|, |w1|, |x0|, |x1|, |down1|, |y0|, |y1|, |z0|, +|z1|, |fnt_num_0|, |fnt1|, |xxx1|, |xxx4|, |fnt_def1|, |pre|, |post|.) + +@d long_char=242 {\.{VF} command for general character packet} +@d improper_DVI_for_VF==139,140,243,244,245,246,247,248,249,250,251,252, + 253,254,255 + +@ The character packets are followed by a trivial postamble, consisting of +one or more bytes all equal to |post| (248). The total number of bytes +in the file should be a multiple of~4. + +@ Here are some functions, analogous to those for the |dvi_file|, for +reading one or more bytes from the |vf_file|. + +Note that variable |flushing| is used to suppress the warning (when |eof| is +met on the |vf_file|) if bytes are merely being read to discard the +postamble. + +@p procedure read_vf_file(var x:eight_bits); + label 9999; + begin while vf_count >= VAX_block_length do + begin get(vf_file,VAX_continue); vf_count:=vf_count-VAX_block_length; + incr(vf_block); + if eof(vf_file) then + begin if not flushing then + warning('VF file ended without postamble!'); +@:Warning: VF file ended without postamble}{\quad\.{VF file ended without postamble}@> + x := post; goto 9999 + end + end; + x := vf_file^[vf_count]; + incr(vf_count); incr(vf_loc); +9999: + end; +@# +function @!vf_one: integer; {returns the next byte, unsigned} + var @!b: eight_bits; +begin + read_vf_file(b); vf_one:=b +end; +@# +function vf_byte:integer; {returns the next byte, signed} +var b:eight_bits; +begin read_vf_file(b); +if b<128 then vf_byte:=b @+ else vf_byte:=b-256; +end; +@# +function vf_two:integer; {returns the next two bytes, unsigned} +var a,@!b:eight_bits; +begin read_vf_file(a); read_vf_file(b); +vf_two:=a*256+b; +end; +@# +function vf_pair:integer; {returns the next two bytes, signed} +var a,@!b:eight_bits; +begin read_vf_file(a); read_vf_file(b); +if a<128 then vf_pair:=a*256+b +else vf_pair:=(a-256)*256+b; +end; +@# +function vf_three:integer; {returns the next three bytes, unsigned} +var a,@!b,@!c:eight_bits; +begin read_vf_file(a); read_vf_file(b); read_vf_file(c); +vf_three:=(a*256+b)*256+c; +end; +@# +function vf_trio:integer; {returns the next three bytes, signed} +var a,@!b,@!c:eight_bits; +begin read_vf_file(a); read_vf_file(b); read_vf_file(c); +if a<128 then vf_trio:=(a*256+b)*256+c +else vf_trio:=((a-256)*256+b)*256+c; +end; +@# +function vf_quad:integer; {returns the next four bytes, signed} +var a,@!b,@!c,@!d:eight_bits; +begin read_vf_file(a); read_vf_file(b); read_vf_file(c); read_vf_file(d); +if a<128 then vf_quad:=((a*256+b)*256+c)*256+d +else vf_quad:=(((a-256)*256+b)*256+c)*256+d; +end; + +@ Here are the globals required to manipulate the VF file. + +@= +@!vf_count, @!vf_block, @!vf_loc : integer; +@!flushing : boolean; + +@*Handling Virtual Fonts. Before we look around the fonts, we'd better see +if any of the fonts so far loaded are virtual ones; this can be determined +by whether a \.{VF} file exists for the given font. + +We use a |while| loop, because the analysis of a virtual font most probably +will result in the addition of one or more new fonts, some of which may +themselves be virtual; to prevent infinite recursion with a self-referential +font, such additional fonts are only loaded if glyphs within the font are +activated. + +@= +TeX_font:=0; vf_ptr:=0; +while TeX_font < nf do {Currently defined fonts, and any this defines anew} +begin +if font_type[TeX_font]=wanted then + @; +incr(TeX_font) +end; + +@ This module determines the name of the \.{VF} file, if it exists, +corresponding to the current \TeX\ font. + +@= +if not no_virt_support then +begin + file_name:=''; + for n:=font_name[TeX_font] to font_name[TeX_font+1]-1 do + if (names[n]>="a") and (names[n]<="z") then + file_name:=file_name+xchr[names[n]+"A"-"a"] + else + file_name:=file_name+xchr[names[n]]; + open(vf_file,file_name,@=readonly@>,@=access_method@>:=@=direct@>, + @=user_action@>:=file_open,@=default@>:=tex_virtual+'.VF;0', + VAX_continue); + file_stat:=status(vf_file); + if (file_stat<>0) and (file_stat<>3) then + begin + case file_stat of + 2: file_message := 'PAS-E-ERRDUROPE'; + 5: file_message := 'PAS-E-ACCMETINC'; + 6: file_message := 'PAS-E-RECLENINC'; + 7: file_message := 'PAS-E-RECTYPINC'; + 8: file_message := 'PAS-E-ORDSPEINC'; + othercases + file_message := str_int(file_stat); + endcases; + abort('Couldn''t open virtual font ',file_name,'. Status=',file_message); +@:fatal error Couldn't open virtual font}{\quad\.{Couldn't open virtual font}@> + end + else if file_stat=0 then + begin + reset(vf_file); + vf_block:=0; vf_count:=0; vf_loc:=0; + font_type[TeX_font]:=virtual; + open_file_name:=def_file_name;@/ + @;@/ + @;@/ + print_ln(' [virtual]'); + write_ln(term_out,' is virtual',crlf);@/ + read_VF;@/ + close(vf_file,@=disposition@>:=@=save@>,VAX_continue); + end; +end + +@ Globals for storing virtual font files: unlike \.{VFtoVP}, +@.VFtoVP@> +we don't read the \\{entire} file into memory. We do, however, store those +|dvi| bytes that belong to some wanted character packets, but only for +glyphs which are more complex than simply imaging a character from some +other font; this is efficient, and also feasible, since VF files are never +very large (unlike physical font files!) Much of this code is, once again, +lifted from \.{VFtoVP}. + +The array |vf| is global, along with the pointer into it, |vf_ptr|, because +we accumulate therein all setting sequences read from all virtual font files +processed. Most of the other variables are only required when actually +reading a particular virtual font, so are local to |read_VF|. + +\yskip\hang |vf_take| When |dvi| bytes are to be ``read'' from array |vf|, the +variable |vf_take| will be non-negative and hence index an element of the +array; during normal input from the \.{DVI} file, a negative value ensures +that input is taken from the file itself. + +\yskip\hang |TeX_font| will always point to the current virtual font being +processed, amongst all the fonts (both virtual and physical) that are in +the usual data structures. This global variable has the same name as +parameters of the procedures |name_pxl_file| and |add_txf_to_lnf|, in order +that common sections of code may be shared from the W{\mc EB}. + +\yskip\hang |font_type| records whether a font is |virtual| or physical (in which +case the value |wanted| will have been set when the font's \.{TFM} file was +first read. + +@= +@!vf:packed array[0..vf_size] of eight_bits; {the \.{VF} input data goes here} +@!vf_ptr:0..vf_size; {first unused location in |vf|} +@!vf_take:-1..vf_size; {next byte to be ``read'' from |vf|} +@!TeX_font:0..max_fonts; {index into font metrics database for current virtual} +@!font_type: array [0..max_fonts] of download_status; + +@ To ensure that we start by reading genuine |dvi| bytes from the \.{DVI} +file, we must make |vf_take| negative. + +@== +vf_take:=-1; + +@ Here's the main procedure for reading virtual font files. It exists as a +procedure purely in order that local variable declarations can be made to +cater for those code sections which are also invoked within |define_font|. + +When we encounter a font definition in the \.{VF} file, we read its +associated \.{TFM} file in the usual fashion; we associate a ``\TeX\ font +number'' with this font, determined from the highest font previously used +within the previous actual or virtual fonts, via the variable |font_base|. + +@p procedure read_VF; +var @!f: 0..max_fonts; {Local index} + @!p: integer; {length of the area/directory spec} + @!n: integer; {length of the font name proper} + @!c,@!q,@!d: integer; {check sum, scaled size, design size} + @!r: 0..name_length; {index into |cur_name|} + @!j,@!k: 0..name_size; {indices into |names|} + @!mismatch: boolean; {names differ} + @!font_base: 0..max_fonts; {offset for local font numbers} + @!z,@!alpha,@!beta: integer; {to facilitate |fix_word| multiplications} + @!font_ref:array[0..max_fonts] of integer; {local font numbers} + @!font_ext:array[0..max_fonts] of integer; {``external'' font numbers} + @!font_ptr:0..max_fonts; {number of local fonts} + @!packet_start:array[0..255] of 0..vf_size; {character packet boundaries} + @!packet_found:boolean; {at least one packet has appeared} + @!temp_byte:eight_bits;@+@!temp_int:integer; {registers for simple calculations} + @!pl:integer; {packet length} + @@; +begin + font_base:=highest_font+1; flushing:=false;@/ + @; +end; + +@ Again we cautiously verify that we've been given decent data. + +@d vf_abort(#)== + abort('(VF file) ',#,crlf) +@!@:fatal error VF file ...}{\quad\.{(VF file)}@> + +@= +temp_byte:=vf_one; +if temp_byte<>pre then vf_abort('First byte isn''t `pre'''); +@:fatal error VF file First byte}{\qquad\.{First byte isn't \it pre}@> +@; +@; +@ + +@ Here's where we read the preamble of the virtual font file. Note that we +make the assumption throughout that a `DVI unit' is \.{1sp} (as it always is +in output generated by \TeX), so that $\hbox{`DVI unit'}=16\hbox{\.{fix}}$. + +@= +temp_byte:=vf_one; +if temp_byte<>vf_id_byte then vf_abort('Wrong version number in second byte!'); +@:fatal error VF file Wrong VF version}{\qquad\.{Wrong VF version...}@> +temp_byte:=vf_one; {read the length of introductory comment} +for k:=1 to temp_byte do temp_int:=vf_one; {and discard it} +temp_int:=vf_quad; +if (temp_int<>0) and (font_check_sum[TeX_font]<>0) and + (temp_int<>font_check_sum[TeX_font]) then + error('VF checksum disagreed! TFM:',font_check_sum[TeX_font]:1, + ' VF:',temp_int:1); +@:Error: VF checksum disagreed}{\quad\.{VF checksum disagreed}@> +z:=vf_quad div 16; {convert to |dvi| units} +if z<>font_design_size[TeX_font] then + error('VF design size disagreed! TFM:',font_design_size[TeX_font]:1, + ' VF:',z:1); +@:Error: VF design size disagreed}{\quad\.{VF design size disagreed}@> +z:=font_scaled_size[TeX_font]; {but we're using it at this size} +@; + +@ The remainder of the file will consist of font definitions and character +packets; once any of the latter has been met, it is not legal for the former +to appear again. + +@= +for k:=0 to 255 do packet_start[k]:=vf_size; +font_ptr:=0; packet_found:=false; +repeat temp_byte:=vf_one; + if temp_byte<>post then + if temp_byte>long_char then @ + else @; +until temp_byte=post + +@ The postamble of the virtual font file should consist purely of |post| +bytes; furthermore, the file should be a multiple of four bytes long. + +@= +flushing:=true; +while (temp_byte=post)and not eof(vf_file) do temp_byte:=vf_one; +if not eof(vf_file) then + warning('extra junk at end of the VF file.'); +@:Warning: extra junk at end of VF file}{\quad\.{extra junk...VF file}@> +if vf_loc mod 4 <> 0 then + warning('VF data not a multiple of 4 bytes') +@:Warning: VF data not a multiple of 4 bytes}{\quad\.{VF data not a multiple of 4 bytes}@> + +@ The font definition reads as follows: + +\yskip\hang|fnt_defN| 243..6 |k[1..4]| |c[4]| |s[4]| |d[4]| |a[1]| |l[1]| |n[a+l]|. + +\noindent where |k| is a local font number; this is used as an offset from +|font_base| when reading the associated \.{TFM} file. + +@= +begin if packet_found or(temp_byte>=pre) then + vf_abort('Illegal byte ',temp_byte:1,' at start of character packet!'); +@:fatal error VF file Illegal byte}{\qquad\.{Illegal byte...at start...}@> +case temp_byte of + fnt_def1: font_ref[font_ptr]:=vf_one; + fnt_def1+1: font_ref[font_ptr]:=vf_two; + fnt_def1+2: font_ref[font_ptr]:=vf_three; + fnt_def1+3: font_ref[font_ptr]:=vf_quad {there are no other cases} +endcases;@/ +font_ext[font_ptr]:=font_base+font_ptr; {invent ``external'' font number} +if font_ptr=max_fonts then vf_abort('References too many fonts!'); +@:fatal error VF file References}{\qquad\.{References too many fonts}@> +@; +print(' (local font ',font_ref[font_ptr]:1,' of font ',font_num[TeX_font]:1,')'); +if highest_font; +if f; +incr(font_ptr); +end + +@ We need to position some of this information in a similar fashion to when +\.{TFM} files are read during normal font definitions from the \.{DVI} file: + +@= +if nf = max_fonts then + capacity_exceeded('too many fonts (max fonts=',max_fonts:1,')'); +@:capacity exceeded too many fonts}{\quad\.{too many fonts}@> +font_num[nf]:=font_ext[font_ptr]; {record invented ``external'' font number} +font_map[nf]:=nf; {until we know better, this font is new} +c:=vf_quad; font_check_sum[nf]:=c; {|c[4]|} +q:=vf_quad; font_scaled_size[nf]:=q; {|s[4]|} +if (q<0) or (q>@'77777777) then {|s| is negative or exceeds $2^{24}-1$} + vf_abort('Mapped font size is too big!'); +@:fatal error VF file Mapped font size too big}{\qquad\.{Mapped font size too big}@> +d:=vf_quad div 16; font_design_size[nf]:=d; {|d[4]| in sp} +@; +font_scaled_size[nf]:=q; {store revised scaling} +p:=vf_one; {|a[1]|} +n:=vf_one; {|l[1]|} +if font_name[nf]+n+p>name_size then + capacity_exceeded('too many names (name size=',name_size:1,')'); +@:capacity exceeded too many names}{\quad\.{too many names}@> +font_name[nf+1]:=font_name[nf]+n+p; +print('Font ',font_num[nf]:1,': '); +if n+p=0 then print('null font name!') +@.null font name@> +else + for k:=font_name[nf] to font_name[nf+1]-1 do names[k]:=lower(vf_one); +incr(nf); print_font(nf-1); decr(nf); f:=nf; + +@ When a |fnt_defN| is read from a virtual font file, the parameter |s| (in +variable |q|) represents the scaled size relative to the design size of the +virtual font. The latter was stored (in |font_design_size[TeX_font]|; scaled +by $2^{-4}$) when the original definition of the virtual font was read from +the \.{DVI} file, and has been checked during the reading of the virtual +font's preamble. Therefore, we will later call |in_TFM| to read the \.{TFM} +file for the physical font and adjust all dimensions by the appropriate +amount. To do this, we have to compute a new |q| by performing ``correct'' +arithmetic on the expression $\hbox{|font_design_size[TeX_font]|}\times q$. + +We utilize the same algorithm as is used for converting the width information +in a \.{TFM} file; local variable |z| has already been set to the virtual +font's design size, and converted to $|z|^\prime$, so we just need to split up +the value |s| into its constituent bytes and perform the multiplications. + +By applying a cast to treat |q| as |unsigned|, we ensure that |b0<>0| for +negative values of |q|. + +@d VAX_unsigned_type == unsigned + +@= +b0:=(q::VAX_unsigned_type div @'100000000)::eight_bits; +b1:=(q mod @'100000000) div @'200000; +b2:=(q mod @'200000) div @'400; b3:=q mod @'400; +q:=(((((b3*z) div @'400)+(b2*z)) div @'400)+(b1*z))div beta; +if b0>0 then q:=q-alpha; {assume $|q|<2^{25}$} + + +@ @= +begin + @; + open_tfm_file; + font_bc[nf]:=0; font_ec[nf]:=256; {will cause error if not modified soon} + if in_TFM(q) then @; + if font_bc[nf]<=font_ec[nf] then + if font_ec[nf]>255 then abort('---not loaded, bad TFM file!'); +@:fatal error Font not loaded Bad TFM file}{\qquad\.{Bad TFM file}@> + print_ln('') +end + +@ Here is a procedure for ``outputting'' a |dvi| sequence by storing it in +|vf|; each command is output in the minimum number of bytes. + +We cheat and abuse VAX-\PASCAL's variant records to provide a simple +conversion between integers (signed or unsigned) and bytes in bigendian +order. Variable |byte_ct| determines how many bytes are actually required. + +Parameter |code| is the command code being output; this will be incremented +(by |1..3|) if |2..4| parameter bytes are necessary. |param| is obviously +the parameter for |code|; |signed| is negative if |param| is to be +interpreted in twos-complement notation. Otherwise, |signed=0|, except for +|set_rule| and |put_rule| (which require that all four bytes are output for +the parameter) when |signed=1|. For output of the second parameter of these +latter two commands, |code=0|, which suppresses output of the |code| byte. + +The following definition is used for any bytes which must be copied to array +|vf|. + +@d vf_store(#)==begin vf[vf_ptr]:=#; incr(vf_ptr) end + +@= +procedure vf_to_dvi(@!code:eight_bits;@!param:integer;@!signed:integer); + var @!byte_ct:0..3; {offset to be added to |code|} + @!cheat:packed record + case boolean of + false: (b0,b1,b2,b3:eight_bits); + true: (fullword:integer) + end; +begin + cheat.fullword:=param; byte_ct:=3; {assume needs 4-byte parameter} + if signed<=0 then + with cheat do + if ((b3=0) and ((signed=0) or (b2<128))) + or ((b3=255) and (signed<0) and (b2>=128)) then + begin + byte_ct:=2; {if |b3| superfluous, store 3-byte parameter} + if ((b2=0) and ((signed=0) or (b1<128))) + or ((b2=255) and (signed<0) and (b1>=128)) then + begin + byte_ct:=1; {if |b3| and |b2| superfluous, store two bytes} + if ((b1=0) and ((signed=0) or (b0<128))) + or ((b1=255) and (signed<0) and (b0>=128)) then + byte_ct:=0; {|b3|, |b2| and |b1| all superfluous; one byte parameter} + end + end; + if code<>0 then + vf_store(code+byte_ct); {store the appropriate command byte} + if byte_ct>2 then vf_store(cheat.b3); + if byte_ct>1 then vf_store(cheat.b2); + if byte_ct>0 then vf_store(cheat.b1); + vf_store(cheat.b0); +end; + +@ This function computes how many bytes form the parameters of a command +taken from a character packet in the \.{VF} file; in the case of any special +sequences amongst these bytes (|xxx1..xxx4|), we read and discard all the +bytes here, since we don't support such sequences in virtual fonts. The +number of bytes thus discarded is returned, negated. + +Any occurrence of a command which is illegal in a character packet causes +the font to be rejected. + +@= +function vf_skip( @!o:eight_bits) : integer; + var @!temp : integer; +begin + case o of + sixty_four_cases(set_char_0),sixty_four_cases(set_char_0+64), + w0,x0,y0,push,pop,sixty_four_cases(fnt_num_0): + vf_skip:=0; + set1,put1,fnt1,right1,w1,x1,down1,y1,z1: + vf_skip:=1; + set1+1,put1+1,fnt1+1,right1+1,w1+1,x1+1,down1+1,y1+1,z1+1: + vf_skip:=2; + set1+2,put1+2,fnt1+2,right1+2,w1+2,x1+2,down1+2,y1+2,z1+2: + vf_skip:=3; + set1+3,set_rule,put1+3,put_rule,right1+3,w1+3,x1+3,down1+3, + y1+3,z1+3,fnt1+3: + vf_skip:=4; + xxx1: begin temp:=vf_one; vf_skip:=-1-temp @+end; + xxx1+1: begin temp:=vf_two; vf_skip:=-2-temp @+end; + xxx1+2: begin temp:=vf_three; vf_skip:=-3-temp @+end; + xxx1+3: begin temp:=vf_quad; vf_skip:=-4-temp @+end; + improper_DVI_for_VF: + vf_abort('contains illegal command in character packet'); +@:fatal error VF file contains illegal command}{\qquad\.{contains illegal command...}@> + endcases; + if (o>=xxx1) and (o-xxx1<4) then + begin + decr(vf_ptr); {``unstore'' the |xxx| command byte} + while temp>0 do + begin o:=vf_one; decr(temp) end {discard |xxx| sequence bytes} + end +end; + +@ This procedure adds to the saved packet a command to select a font; this +will be an pseudo external font number, converted from the local font number +used when a physical font is mapped into the virtual one. The procedure has +the side-effect of setting its second parameter to index the stored metrics +of the newly-selected font. + +@= +procedure store_fnt(@!num:integer; var @!f:integer); +var@!k:0..max_fonts; +begin + f:=-1; {this value allows us to detect lack of the font} + for k:=0 to font_ptr-1 do {scan the local font reference numbers} + if font_ref[k]=num then f:=k; {find its entry} + if f<0 then + vf_abort('packet ',c:1,'invokes unmapped font ',num:1); +@:fatal error VF file packet invokes}{\qquad\.{packet invokes unmapped font}@> + num:=font_ext[f]; {convert to pseudo external number} + f:=0; while font_num[f]<>num do incr(f); + if num < 64 then vf_store(fnt_num_0+num) else + vf_to_dvi(fnt1,num,0); {|fntN k[N]|} +end; + +@ This procedure adds to the saved packet a command to set a character; it +is required because we have to read all the bytes of such a command (in +order to determine to what character a packet is being mapped). + +@= +procedure store_char(@!cc:integer); +begin + if cc < 128 then vf_store(set_char_0+cc) else + vf_to_dvi(set1,cc,0); {|setN c[N]|} +end; + +@ When a character packet is being read from the virtual font file, we utilize +this procedure to store the bytes, translating any font selection commands to +reference the pseudo external fonts that have been created corresponding to +each local font of the virtual font file. + +The packet taken from the \.{VF} file is surrounded by a |push|/|pop| pair +to maintain the program's conception of the current position. We start by +assuming local font $0$, which is that loaded as pseudo external font +|font_base|. + +After the packet has been copied, an |eop| is inserted into the stored +packet to permit detection of the end when the packet is later ``played +back''. + +@= +procedure vf_copy(@!pl,@!cc : integer); + var @!f:-1..max_fonts; {index into physical font data structures} + @!param_len:integer; {count of parameter bytes} + @!local_font:integer; {index into local font data structures} + @!mapped_char:integer; {index into a locally referenced font} + @!command:eight_bits; {next |dvi| command in \.{VF} file} + @!simple_packet, {packet contains only one |setN|, with maybe one |fntN|} + @!one_set,@!one_fnt:boolean; {|false| if more than one of each} + @!start_ptr,seq_ptr:0..vf_size; {pointers into bytes stored in |vf|} + @!scaling_required:boolean; {dimension needs revision before storing} +begin + if vf_ptr+pl>=vf_size then capacity_exceeded('too many virtual characters'); +@:capacity exceeded too many virt}{\quad\.{too many virtual characters}@> + start_ptr:=vf_ptr; vf_store(push); + store_fnt(0,f); + glyph_map(TeX_font)(cc).font_code:=f; + one_set:=false; one_fnt:=false; simple_packet:=true; seq_ptr:=vf_ptr; + while pl>0 do + begin + command:=vf_one; + vf_store(command); + decr(pl); + param_len:=vf_skip(command); + @; + @; + @@; + case command of + sixty_four_cases(set_char_0),sixty_four_cases(set_char_0+64), + four_cases(set1): one_set:=true; + sixty_four_cases(fnt_num_0),four_cases(fnt1): one_fnt:=true; + set_rule, put_rule: {these have \\{two} 4-byte parameters} + begin param_len:=param_len-4; simple_packet:=false + end; + othercases + simple_packet:=false; + endcases; + if param_len<0 then {|abs(param_len)| bytes already copied} + pl:=pl+param_len + else + while param_len>0 do {copy remaining bytes of |command|} + begin command:=vf_one; vf_store(command); + decr(pl); decr(param_len) + end + end; + vf_store(pop); + vf_store(eop); + if simple_packet then vf_ptr:=start_ptr {discard the packet} + else with glyph_map(TeX_font)(cc) do + begin loaded:=virtual; {indicate where \AM\ how to find it} + seq_off:=start_ptr + end +end; + +@ If a character packet contains any command to select a font, the command +must be expanded, and the local font number converted into a reference to +the appropriate pseudo external font. Since this may have the effect of +reading some bytes from the packet, we reduce our goal by the appropriate +quantity. + +If this is the first font changing command in the packet, the internal font +it defines is placed into the current character's |glyph_map| entry, to +permit later overwriting with the entry for the physical character. If, +moreover, it is the first command \\{stored} in the packet, apart from the +initial |push| and the invocation of local font $0$, we can over-write the +latter. + +@= +case command of + sixty_four_cases(fnt_num_0): local_font:=command-fnt_num_0; + fnt1: local_font:=vf_one; + fnt1+1: local_font:=vf_two; + fnt1+2: local_font:=vf_three; + fnt1+3: local_font:=vf_quad; +othercases + do_nothing +endcases; +if (command>=fnt_num_0) and (command<=fnt1+3) then +begin decr(vf_ptr); {``unstore'' the command byte} + store_fnt(local_font,f); + param_len := -param_len; {indicate bytes already copied} + if vf_ptr=seq_ptr then {we can overwrite the `|fnt_num_0|'} + vf_ptr:=start_ptr+1; {by writing immediately after the |push|} + if not one_fnt then glyph_map(TeX_font)(cc).font_code:=f + else simple_packet:=false +end; + +@ Character packets usually contain one or more commands to set a character; +this code reads all necessary bytes to determine the code for the character +being set. Note that this code is \&{not} activated for commands to \\{put} +characters, since these usually appear only in more complex character +packets. If no previous character setting command has been met, then the +character code is written into the |glyph_map|. + +@= +case command of + sixty_four_cases(set_char_0),sixty_four_cases(set_char_0+64): + mapped_char:=command-set_char_0; + set1: mapped_char:=vf_one; + set1+1: mapped_char:=vf_two; + set1+2: mapped_char:=vf_three; + set1+3: mapped_char:=vf_quad; +othercases + do_nothing +endcases; +if (command>=set_char_0) and (command<=set1+3) then +begin decr(vf_ptr); {``unstore'' the command byte previously copied} + store_char(mapped_char); {store a new character setting sequence} + param_len:=-param_len; {indicate this many bytes already consumed} + with glyph_map(f)(mapped_char) do + if loaded=unused then loaded:=wanted; + if not one_set then glyph_map(TeX_font)(cc).char_code:=mapped_char + else simple_packet:=false; + if font_type[f]=unused then font_type[f]:=wanted; +end; + +@ Many other |dvi| commands within a character packet require that the +parameters be read, because they must be scaled by the size at which the +virtual font is used. We start by assuming that the |dvi| bytes \&{will} be +read from the \.{VF} file, and thus negate |param_len| so that the main loop +will know that those bytes have been read. If we \&{don't} read the +command's parameters, |param_len| will be negated back again, and thus lead +to that number of bytes being copied verbatim from the \.{VF} file to |vf|. + +@== +param_len:=-param_len; +scaling_required:=false; +case command of +set_rule,put_rule: + begin q:=vf_quad; {read height of rule} + decr(vf_ptr); {``unstore'' command byte} + @; + vf_to_dvi(command-3,q,1); {store command and first parameter} + q:=vf_quad; {read width of rule} + param_len:=-8; {we've consumed 8 bytes from |pl|} + @; + vf_to_dvi(0,q,1) {store second parameter} + end; +right1,w1,x1,down1,y1,z1: + begin q:=vf_byte; scaling_required:=true end; +right1+1,w1+1,x1+1,down1+1,y1+1,z1+1: + begin q:=vf_pair; scaling_required:=true end; +right1+2,w1+2,x1+2,down1+2,y1+2,z1+2: + begin q:=vf_trio; scaling_required:=true end; +right1+3,w1+3,x1+3,down1+3,y1+3,z1+3: + begin q:=vf_quad; scaling_required:=true end; +othercases + param_len:=-param_len +endcases; +if scaling_required then +begin + decr(vf_ptr); {``unstore'' the command byte} + @; + vf_to_dvi(command+param_len+1,q,-1) {store command again, with revised dimension} +end; + +@ When a character packet is found, we only bother with it if it defines a +character that's used in the document being processed; other character +packets are merely skipped. + +If the packet consists merely of commands to set a single character from one +of the physical fonts to which the virtual font is mapped, then we can +simply alter the information in the |glyph_map| to redirect requests to the +appropriate character of the physical font; the |glyph_map| of that font is +in turn marked to indicate that the character is used in the current +document. + +On the other hand, if the character packet requires more complex positioning +commands, the whole packet is stored in array |vf|; the starting position of +the sequence is recorded in field |seq_off| of the |glyph_map| entry, whilst +the |loaded| field is given the value |virtual|. Field |font_code| will +contain the internal font number assigned to local font zero of the virtual +font, whereas the font selection commands stored in |vf| use the pseudo +external font numbers, since these bytes will require interpretation by the +normal dvi-reading routines. + +@==,@!virtual + +@ @==@!seq_off : integer; + +@ The \.{VF} format supports arbitrary 4-byte character codes, but \.{VPL} +format presently does not. + +Since the |tfm| widths in the character packets are unscaled, it would be +difficult to ensure that they correspond with those determined when the +virtual font's metrics were read, so they will be ignored at this time. + +@d nonexistent(#)==((#font_ec[TeX_font])or + (char_width(TeX_font)(#)=invalid_width)) + +@= +begin if temp_byte=long_char then + begin pl:=vf_quad; c:=vf_quad; temp_int:=vf_quad; + {|pl[4]| |cc[4]| |tfm[4]|} + end +else begin pl:=temp_byte; c:=vf_one; temp_int:=vf_trio; + {|pl[1]| |cc[1]| |tfm[3]|} + end; +if nonexistent(c) then vf_abort('Character ',c:1,' does not exist!'); +@:fatal error VF file Character c does not exist}{\qquad\.{Character does not exist}@> +if packet_start[c] +if pl<0 then vf_abort('Negative packet length!'); +@:fatal error VF file Negative packet length}{\qquad\.{Negative packet length}@> +packet_start[c]:=vf_ptr; +if glyph_map(TeX_font)(c).loaded <> unused then + vf_copy(pl,c) +else + while pl>0 do {discard unwanted character packet} + begin temp_byte:=vf_one; + decr(pl) + end; +packet_found:=true; +end + +@ Once all characters from physical fonts have been downloaded (and hence +may be assumed to have been mapped to character positions in the LN03's +downloaded fonts), we can complete the |glyph_map| entries for any virtual +fonts that may be present; for simple characters, this just involves copying +the entry for the appropriate character in the physical font. + +We start with the most recently loaded font, so that chains through a number +of virtual fonts will be completed correctly. + +@= +for TeX_font:=nf-1 downto 0 do + if font_type[TeX_font]=virtual then {only process virtual fonts} + begin + for m:=first_glyph_index(TeX_font) to last_glyph_index(TeX_font) do + {cover all possible characters} + with glyphs[m] do + if loaded=wanted then + glyphs[m]:=glyph_map(font_code)(char_code) + else if loaded=virtual then {first char in sequence from this \TeX\ font} + if font_type[font_code]=wanted then {provided it's a physical font} + font_code:=txf_to_lnf[font_code] {maps to this LN03 font} + end; + + +@*Description of LN03 Font Files. The font files downloaded conform to DEC +standard 180; the definitions given below have been derived by the author from +the description of this standard included in the ``Font File Format Manual'', +Version 1, Variant 0, available on request from DEC. + +Although we refer herein to font `files' they actually are always considered +to reside in memory, either that available in the basic printer, or extra +memory provided by plug-in RAM cartridges; presumably the same format is also +used to encode the built-in fonts, and those available in plug-in ROM +cartridges. + +A font file is divided into ten regions; all data items may be referenced +\\{via} their offsets within one of these regions, which are predeterminable +for any particular combination of characters included in the file. All +multi-byte quantities in a font file are stored in Vax/VMS standard form, with +the least-significant byte being at the \&{lower} address; this is the +opposite to the normal `Bigendian' order of most \TeX ware. + +Since it is necessary to build the entire font file in memory before it can be +included in the \.{LN3} file for downloading to +the printer, we allocate a large array of memory sufficiently large to store +the rasters for the largest imaginable font file; the definition of +|lnf_bufsize| probably exceeds the maximum amount of memory available on the +printer by a comfortable margin! This program refers to this `file' in memory +as the \.{LNF} file, although it is never written to a file as such; if this +program is adapted for use on a computer without virtual memory, it might +@^system dependencies@> +be necessary to utilize a random-access file to build the |lnf_file|. + +Since the partially-built LN03 font file must be retained between successive +calls of |add_txf_to_lnf|, its data structures need to be declared globally. +Information in this ``file'' can consist of single bytes, unsigned (two-byte) +words, and signed (four-byte) longwords, as well as four-character strings, so +we define an |lnf_block| as a \PASCAL\ variant record so that this may be +(ab)used to permit the different methods of access. + +We also declare here the |pxl_dir_type| which describes the 16-byte directory +record in a \.{PXL} file for any character's glyph. + +@= +type @!lnf_block=packed record + case integer of + 0: (@!bytes:packed array[0..511] of eight_bits); + 1: (@!words:packed array[0..255] of sixteen_bits); + 2: (@!longs:packed array [0..127] of integer); + 3: (@!str:packed array [0..127] of packed array [1..4] of char) + end; + +@ Many variables used by |add_txf_to_lnf| are declared globally, so that the +information contained therein is preserved between successive calls of the +function. |lnf| is the large memory-held `file' referred to above. + +The variables |psize|, |lsize| and |msize| accumulate counts of raster bytes +generated in portrait, landscape and mixed modes (this program only creates +portrait mode rasters). |ras_beg| and |ras_len| are used to form the +descriptor pointing to the Character Definition Region, whilst +|lnf_pool_offset| points to the string pool. |lnf_len| keeps track of the +total size of the `file', whilst |using_GR| is set true when the |GR| +(right-hand half) of the font is being generated. (The LN03 supports use of +the |GL| and |GR| characters sets, corresponding to characters in the +(hexadecimal) range |@"21..@"7E| and |@"A1..@"FE|, respectively.) + +The variable |file_stat| receives the exit status from VAX-Pascal's file +handling routines. + +@= + @!lnf: array[0..lnf_bufsize] of lnf_block; + @!psize,@!lsize,@!msize: integer; + @!ras_beg,@!ras_len: integer; + @!lnf_pool_offset,@!lnf_len: integer; + @!using_GR: boolean; + @!file_stat:integer; + +@ The first region of an |lnf_file| is the file header. This contains, as its +first longword (32-bit) quantity, a count of the total size of the file, in +bytes. This is followed by the string |'FONT'|, to confirm that this is a DEC +Std 180 font. This is followed immediately by a ``string descriptor'' +pointing to the font-file identifier. Font files contain many such descriptors; +each consists of two longwords, the first contains the string's length (in its +lower half), whilst the latter is the offset (relative to the start of the +file) of the first character of the string. + +The font-file identifier descriptor is followed immediately (which is unusual) +by the characters of the identifier itself; for details of the content of this +string, read DEC Std 180. The date and time of creation of the font follows; +this program arbitrarily sets these to 14:00:00 on 11-SEP-1973. + +There then follow a number of descriptors pointing to the remaining regions of +the font file; these are, in order: |fnt_attr| font attributes region; +|fnt_params| font parameters region; |fnt_char_directory| font character +directory region; |fnt_seg_list| font segment list region; |fnt_future| font +future information region; |fnt_strings| font string pool region; |fnt_kerns| +font kerning information region; |fnt_chars| font character defintions region. + +The header finishes with the character count information field, which contains +five longwords and three character locators (|fnt_first|$\to$|fnt_space|), the +organization flags, a count of the number of parameters used in each raster +definition and the raster expansion information field, which records the +number of characters defined in this file, and the number of bytes of rasters +required to define them; this field occupies a further 12 longwords +(|font_in_file_count|$\to$|fnt_mix_comp|). + +@d fnt_total_size=0 +@d fnt_identifier=fnt_total_size+4 +@d fnt_version=fnt_identifier+4 +@d fnt_file_id=@"14 {Where font identification appears} +@d fnt_date=@"58 {Where creation date starts} +@d fnt_attr=fnt_date+12 {Font attributes descriptor} +@d fnt_params=fnt_attr+8 {Font parameters descriptor} +@d fnt_char_directory=fnt_params+8 {Character directory descriptor} +@d fnt_seg_list=fnt_char_directory+8 {Font segment list descriptor} +@d fnt_future=fnt_seg_list+8 {Future info descriptor} +@d fnt_strings=fnt_future+8 {String pool descriptor} +@d fnt_kerns=fnt_strings+8 {Font kerning infor descriptor} +@d fnt_chars=fnt_kerns+8 {Character definitions descriptor} +@d fnt_first=fnt_chars+8 {First character in font} +@d fnt_last=fnt_first+4 {Last character in font} +@d fnt_less_than=fnt_last+4 {Locator for characters less then first} +@d fnt_greater_than=fnt_less_than+4 {Locator for characters greater than last} +@d fnt_error=fnt_greater_than+4 {Locator for the error character} +@d fnt_extension=fnt_error+4 {Extension count and use} +@d fnt_space=fnt_extension+8 {Space character code} +@d fnt_organisation=fnt_space+4 {Organisation flags} +@d fnt_no_of_params=fnt_organisation+4 {Number of character parameters} +@d fnt_in_file_count=fnt_no_of_params+4 {Number of locators in this file} +@d fnt_null_count=fnt_in_file_count+4 {Null locator count} +@d fnt_char_count=fnt_null_count+4 {Number of character definitions} +@d fnt_alt_blocks=fnt_char_count+4 {Number of alternate character blocks} +@d fnt_rasters=fnt_alt_blocks+4 {Number of rasters} +@d fnt_compressed=fnt_rasters+4 {Number of compressed rasters} +@d fnt_portrait=fnt_compressed+4 {Portrait mode byte count} +@d fnt_landscape=fnt_portrait+4 {Landscape byte count} +@d fnt_mixed=fnt_landscape+4 {``Mixed'' byte count} +@d fnt_port_comp=fnt_mixed+4 {Portrait compressed byte count} +@d fnt_land_comp=fnt_port_comp+4 {Landscape compressed byte count} +@d fnt_mix_comp=fnt_land_comp+4 {``Mixed'' compressed byte count} + +@ The font attributes region always follows the header; items within this +region are referenced through their local offsets from the start of the +region. + +The |fnt_attr_flags| carries 32 bits of font attribute information; these are +set arbitrarily by this program --- see the coding for details. + +The character set designator (within the string pool) uniquely identifies the +character set contained within this font, and is accessed by the descriptor +|fnt_char_set|. Similarly the |fnt_type_ID|, |fnt_type_family|, |fnt_font_ID|, +|fnt_type_cat| and |fnt_descr| descriptors access further strings in the +string pool. + +Further fields in the font attributes region define numerical attributes of +the font (|fnt_type_size| thru |fnt_dev_char|). The attributes region +concludes with a further two descriptors, pointing to strings giving the names +of the foundry and designer responsible for the font. + +Numerical quantities referring to the dimensions of characters in DEC LN03 +font files are commonly in ``points'' or ``centipoints'' (the latter obviously +being $1\over{100}$th of the former). However, these are not true printer's +points (of which there are 72.27 to an inch); rather they are that horrible +compromise which imagines that there are exactly 72 points to an inch (and +which \TeX\ refers to as a \.{bp}). Centipoints are also referred to as +`Gutenbergs', in tribute to the inventor of movable type. It is quite +convenient for the LN03 (with 300 dots per inch) to work internally in +Gutenbergs, of which there are 7200 to an inch, since 24 Gutenbergs therefore +translate into a single pixel. + +@d fnt_attributes=fnt_mix_comp+4 {Start of attributes region}@# + +{Following define offsets within the Font Attributes Region of the ``file''} +@d fnt_attr_flags=0 {Flags e.g. roman} +@d fnt_char_set=fnt_attr_flags+4 {DESCR for character set designator} +@d fnt_designator_len=7 {Number of characters in set desginator string} +@d fnt_type_ID=fnt_char_set+8 {DESCR for Font Type Family ID} +@d fnt_type_ID_len=7 {Number of chars in Font Family ID string} +@d fnt_type_family=fnt_type_ID+8 {DESCR for Type Family Name} +@d fnt_type_family_len=16 {Number of chars in Type Family String} +@d fnt_font_ID=fnt_type_family+8 {DESCR for Font ID string} +@d fnt_font_ID_len=16 {Number of chars in Font ID string} +@d fnt_string_pool_len=fnt_designator_len+fnt_type_ID_len+fnt_type_family_len+fnt_font_ID_len +@d fnt_type_cat=fnt_font_ID+8 {DESCR for Type Category} +@d fnt_descr=fnt_type_cat+8 {DESCR for Font Description} +@d fnt_type_size=fnt_descr+8 {Font type size, in LN03 points} +@d fnt_average_width=fnt_type_size+4 {in centipoints} +@d fnt_resolution=fnt_average_width+4 {in $2^{-16}$ centipoints per pixel} +@d fnt_weight=fnt_resolution+4 {Coded 0..35. Normal is 16} +@d fnt_horiz_prop=fnt_weight+4 {0..35. Unexpanded/uncompressed is 16} +@d fnt_horiz_ratio=fnt_horiz_prop+4 {Ratio to a "normal" font} +@d fnt_pixel_aspect=fnt_horiz_ratio+4 {Ratio of X:Y of device's pixels} +@d fnt_rotation=fnt_pixel_aspect+4 {Ratio giving tangent of rotation} +@d fnt_dev_char=fnt_rotation+4 {Device specific characteristics} +@d fnt_foundry=fnt_dev_char+4 {DESCR of name of foundry} +@d fnt_designer=fnt_foundry+8 {DESCR of name of font designer}@# + +@d fnt_attr_len=fnt_designer+8 {Length of Font Attributes Region of file} + +@ The next region of the font file is the font parameters region. All fields +of this region are referenced by means of their offsets within the region. +The first field is a 32-bit flags field, of which only two bits have defined +meanings. + +The next field contains 8 items +(|fnt_underline_offset|$\to$|fnt_shadow_offset|) which define the position for +electronic over-, through- and under-lining, and the slant of the characters +and the delta offsets for emboldening. None of these features are utilized by +DVItoLN03. + +The next field (|fnt_superscript|$\to$|fnt_subscript|) describe the horizontal +and vertical offsets within the characters for the placement of super- and +sub-scripts. The following field (|fnt_centreline|$\to$|fnt_digit_width|) +define various horizontal spacing parameters, whilst the final field of the +font parameters region (|fnt_topline_offset| thru |fnt_white_below|) define +vertical spacing parameters. + +@d fnt_parameters=fnt_attributes+fnt_attr_len {Start of Parameters Region}@# + +{Following define offsets within the Font Parameters Region of the ``file''} +@d fnt_param_flags=0 +@d fnt_underline_offset=fnt_param_flags+4 {All following in LN03 centipoints} +@d fnt_underline_thickness=fnt_underline_offset+4 +@d fnt_thru_offset=fnt_underline_thickness+4 {Where strike-through line goes} +@d fnt_thru_thickness=fnt_thru_offset+4 +@d fnt_overline_offset=fnt_thru_thickness+4 +@d fnt_overline_thickness=fnt_overline_offset+4 +@d fnt_slant=fnt_overline_thickness+4 {Ratio giving tan of slope from vertical} +@d fnt_shadow_offset=fnt_slant+4 {$\delta x$ and $\delta y$} +@d fnt_superscript=fnt_shadow_offset+4 {|y| and |x| offsets} +@d fnt_subscript=fnt_superscript+8 +@d fnt_centreline=fnt_subscript+8 {Distance from left to centre widest char} +@d fnt_min_space=fnt_centreline+4 {Minimum acceptable width of interword space} +@d fnt_max_space=fnt_min_space+4 +@d fnt_mean_space=fnt_max_space+4 {Width of space for monospace fonts} +@d fnt_em_width=fnt_mean_space+4 {Width of an |em| space} +@d fnt_en_width=fnt_em_width+4 {Width of an |en| space} +@d fnt_thin_space=fnt_en_width+4 +@d fnt_digit_width=fnt_thin_space+4 {All digits usually same width} +@d fnt_topline_offset=fnt_digit_width+4 {From baseline to top of type size} +@d fnt_accent=fnt_topline_offset+4 {Where floating accents go} +@d fnt_halfline_offset=fnt_accent+4 {Where centre bar of an \.H appears} +@d fnt_overall_height=fnt_halfline_offset+4 {Sum of |height+depth|} +@d fnt_height=fnt_overall_height+4 {Includes ``leading'' above} +@d fnt_depth=fnt_height+4 +@d fnt_H_height=fnt_depth+4 +@d fnt_ex_height=fnt_H_height+4 +@d fnt_white_above=fnt_ex_height+4 +@d fnt_white_below=fnt_white_above+4@# + +@d fnt_params_len=fnt_white_below+4 {Length of Font Parameters Region} + +@ The next major region contains the character directory. + +@d fnt_char_dir=fnt_parameters+fnt_params_len {Where directory goes} + +@ The next regions are: Table of Font Segments, Future Information, String +Pool and Kerning Information. These are followed by the Character Definition +Region, which contains details of the rasters for each character's glyph. + +Each character definition commences with |fnt_char_pars| of parameter +information; these are accessed through the offsets defined below. + +In this version of the standard, each character is allocated 16 bytes of +parameter information. + +@d fnt_char_pars=16 {Size of character parameters --- fixed}@# + +@d fnt_kern_index=0 {Zero, or index into kerning table} +@d fnt_char_flags=fnt_kern_index+1 {Only 24 bits of flags} +@d fnt_char_width=fnt_char_flags+3 {In LN03 centipoints (or ``Gutenbergs'')} +@d fnt_left_bearing=fnt_char_width+4 {White space to left of raster} +@d fnt_raster_baseline=fnt_left_bearing+4 {Baseline relative to top of raster} + +@ The character's parameters are followed by the encoded character raster: +this itself contains a number of counts preceding the rasters themselves; the +following definitions facilitate access to these fields. + +@d fnt_char_orient=0 {0=Portrait, etc.} +@d fnt_char_type1=fnt_char_orient+1 {81H=Aligned expanded bit string} +@d fnt_char_type2=fnt_char_type1+1 {Unused if |fnt_char_type1| = 81H} +@d fnt_char_rows=fnt_char_orient+4 {Number of rows in raster} +@d fnt_char_cols=fnt_char_rows+2 {Number of columns in raster} +@d fnt_char_raster=fnt_char_cols+2 {Where rasters actually start} + + + +@* Locating files containing character definitions. This procedure +determines the ``name'' of the required pixel file, and compares it with that +which is currently open, if any. If these names differ, we close the currently +open file, if any, and open the new one. Although the file will have already +been opened and checked for validity during font file generation, we still +perform the checks, because that also sets certain pointers correctly. + +This procedure is used by |print_glyph| to output a bitmap image of any +oversized rasters. Note that it \&{has} parameter list |( TeX_font : integer)|; +this is omitted here because it has already been declared |forward|. + +Note also that the variable |open_file_name| referenced is the \&{global} +variable of the same name, used by |print_glyph|, and not the identically +named formal parameter of |add_txf_to_lnf|. The same name has to be used +because these \.{WEB} code sections incorporated are used in that function +also. + +@p procedure change_pixel_file; {|change_pixel_file(TeX_font : integer);|} + var @!new_file : file_spec; + i: integer; {Used when reading the directory} +begin + name_pxl_file(TeX_font,new_file,pxl_ident); + if new_file<>open_file_name then + begin + if (open_file_name<>'') then + close(pxl_file,@=disposition@>:=@=save@>,VAX_continue); + open_file_name:=new_file;@/ + @; + if pxl_ident=pixel_file then begin + @; + @ + end else begin + @; + skip_specials + end + end +end; + +@* Creating the font file. The following function allocates the used +characters of the |TeX_font| to the predetermined locations in the |ln_font|; +the character rasters are taken from the LN03 font file |open_file_name|, which +has been set up to include the appropriate directory and file-name. After each +font file has been constructed in memory, it is converted to sixel format (See +below) and added to the records in the \.{LN3} file |ln3_file|. + +The use of each of the parameters and local variables is as follows: + +\yskip\hang|ln_font| The serial number of the LN03 font being generated. +Should a font have to cross the boundaries between internal fonts, this will +be updated (it's not a |var| parameter, so won't upset anything in the +caller). It is used in the procedure as a cross-check that the character +glyph currently being considered actually belongs to the font being created. + + +\yskip\hang|TeX_font| The identifying number of the \TeX\ font; +|font_num[TeX_font]| is that given by the \.{DVI} file. + +\yskip\hang|open_file_name| Full file specification from which the rasters +should be read. + +\yskip\hang|file_type| Indicates whether the |open_file_name| contains a +|packed_file| or a |pixel_file|. + +\yskip\hang|rasters| Counts the number of bytes created in the current +|font_file|. The variable is initialized to four times the number of +characters added since each character requires a four-byte character locator +in the font file directory region. + +\yskip\hang|i| and |j| General loop counters. + +Further local variables will be declared for the function as necessary. + +@p function add_txf_to_lnf(ln_font,TeX_font:integer; + open_file_name:file_spec; + file_type:pixel_types):integer; +var @@; {will be declared later} + @!rasters:integer; {bytes added to font} + @!i,@!j:integer; {general purpose pointers} + @t\4@>@@; +begin + if file_type<>unavailable then + @; + @ ; + case file_type of + pixel_file: + @; + packed_file: + @ ; + unavailable: + begin + font_type[TeX_font]:=missing; + open_file_name := '[unavailable]' + end; + endcases; + max_ctr := font_ec[TeX_font]; + @ ; + if file_type=unavailable then + write(' unavailable; printing rules for glyphs;'); + print(' with '); write_ln(term_out,' loaded with '); + @; + rasters:=4*font_occupancy[TeX_font]; + @ ; + @; +end; {|add_txf_to_lnf|} + +@ These variables used to be local to |add_txf_to_lnf|; however, some W{\mc +EB} modules invoked therein are now also used externally, but reference the +variables. Therefore they are now global. + +\yskip\hang|percent| Gives the magnification of the current font, for use in +font loading reports. (An unmagnified font is at 100\%.) + +\yskip\hang|name| Holds the ``\TeX-oriented'' font name, for inclusion in +reports on the terminal, whilst the full file specification (from +|open_file_name|) is reported in the log file. + +@= +@!percent:integer; +@!name: file_spec; +@!name_ptr: 0..name_size; {pointer for indexing |name|} + +@ As each font is downloaded, we want to report its name and its magnification +(if not \.{\BS magstep 0}) on the terminal, whilst the logfile will receive +the full file specification. So we can commence by saving the name of the +font file, and the percentage magnification. + +@= +name := ''; +for name_ptr:=font_name[TeX_font] to font_name[TeX_font+1]-1 do + name := name + xchr[names[name_ptr]]; {ASCII representation of font name} +percent:=round((mag*0.1*font_scaled_size[TeX_font])/font_design_size[TeX_font]); + +@ With rasters held in an unpacked pixel file, we need to check the file's +validity, and then transfer the directory information into |pxl_dir|. + +@= +begin + @; + @ +end + +@ On the other hand, with packed pixel files, we need to read through the +preamble and skip over any specials which precede the first character raster +in the file. + +@= +begin + @; skip_specials; + if font_check_sum[TeX_font]<>checksum then + warning('checksum doesn''t match in PK file') +@.checksum doesn't match in PK file@> +end + +@ Once we've successfully opened the font file, we can report its name (and any +non-standard magnification). + +@= +print('Font ',name,' (at ',percent:1,'%) loaded from ',open_file_name); +write(term_out,'Font ',name); +if percent<> 100 then write(' (at ',percent:1,'%)'); + +@ We now set about creating (a portion of) an LN03 font file from the required +characters of |TeX_font|. We assume at first that it will be possible to pack +the entire |TeX_font| into a single LN03 font, but may need to revise this +opinion if the font turns out to be longer than 188 characters. + +A |while| control construct is used instead of the obvious |for| loop, because +there may be a necessity for premature termination of the loop. + +@= +char_ctr:=font_bc[TeX_font]; +while (char_ctr<=max_ctr) do +begin + @; + incr(char_ctr); +end; +@; + +@ For each character in the |TeX_font|, we need to see whether it has been +marked as being used, and, if so, whether it belongs to the |ln_font| +currently being created. + +@= +with glyph_map(TeX_font)(char_ctr) do +if loaded<>unused then +begin + @ ; + @ ; + case file_type of + packed_file: + @; + pixel_file: + copy_char(char_ctr,to_where); + unavailable: + @; + endcases; +end + +@ We need to decide whereabouts to put this character glyph in the LN03 font +file being created. In the case of unpacked pixel files, we can simply use +the mapping determined at an earlier stage. However, the glyphs in packed +pixel files appear in the same order as the original \MF\ source, so it is +necessary to download them to the LN03 in the order of arrival, otherwise we +may find ourselves jumping between the ``left-hand'' and ``right-hand'' parts +of the code table. + +It is at this point that we update |first_txfc| to the next available slot in +the |ln_font|, if necessary, to skip over the non-existent characters between +|left_last| and |right_first|, or from |right_last| to the beginning of an +overflow font (if we're using packed files; unpacked ones, being restricted +to 128 characters, can never require an overflow). + +@= +if first_txfc=left_last+1 then + first_txfc:=right_first +else if (first_txfc=right_last+1) and (file_type=packed_file) then + @; +to_where:=first_txfc + +@ If a font is completely unavailable (perhaps the user has requested it at +a magnification not provided on the current system), we still have to go +ahead and `complete' the font for the LN03, because the font file's headers +already reflect the previously determined mapping. However, we shall +\\{never} image characters from the font, so we just make the character +locator entries in the font's ``directory'' zero. + +@= +begin + @; + loaded:=yes +end + +@ Sometimes we find that we cannot complete the bitmap information relating +to a particular character, because the glyph is too large, or missing (or +the font itself is missing). Since we will already have completed the LN03 +font's description relating to number of characters, etc., we must still +provide an entry in the font directory; the LN03 will not attempt to image a +character for which the directory entry is zero, so that's what we put +there! + +@== +begin + lnf_long(fnt_char_dir+4*(to_where-dir_base),0); + decr(num_chars); incr(null_chars) +end + + +@ Whenever we first meet a character taken from the ``right-hand'' half of the +LN03 font (the set designated as GR, in ISO2022/ANSI X3.64 parlance), we need +to finish off the half font which has been created in the left-hand table. +Similarly, if we meet a character from the ``left-hand'' half (GL) when we had +previously been adding characters to the GR set, it implies that we are +commencing output, to GL, of characters taken from a \TeX\ font which was too +large to be loaded into the 188 characters of the previous |ln_font|. + +The font file to date is written out and a new one initialized to hold the GR +character set. Such successive font files are separated from each other by a +simple `\.,' character in the \.{LN3} file. + +@= +if ((not using_GR) and (to_where>=right_first)) or + (using_GR and (to_where<=left_last)) then +begin output_LNF; + write_ln(ln3_file,',');@/ + using_GR:=not using_GR; + init_LNF +end + +@ If glyphs are being taken from a file of packed pixel rasters, we need to +copy the glyph to the LN03 file as the raster is built up from the file. +Having thus disposed of this glyph, we then scan through the file until +finding the \&{next} wanted glyph. + +@= +begin + repeat + @; + skip_specials + until (glyph_map(TeX_font)(char_num).loaded<>unused) or + (flag_byte=pk_post); + with glyph_map(TeX_font)(char_num) do + if loaded<>unused then + begin + char_code:=first_txfc; + font_code:=ln_font; + incr(first_txfc) {This might later be corrected} + end; + if flag_byte=pk_post then char_ctr := 255 {Break out} +end + +@ Here are some local variables of |add_txf_to_lnf|, used in the above code: + +\yskip\hang|char_ctr| Used to cycle through all possible character codes in +the |TeX_font|. + +\yskip\hang|max_ctr| Unpacked pixel files (by their very architecture) can +contain a maximum of 128 glyphs; packed files (in this implementation) may +contain up to 256. This variable permits more efficient operation by limiting +the values assumed by |char_ctr|. + +@== +@!char_ctr:integer; +@!max_ctr:integer; + + +@ After having downloaded the last character of |TeX_font| which belongs in +|ln_font|, we arrange things so that any further characters will be loaded into +|ln_font+1|. We accordingly want to start at |left_first| (which ought to +be the value held in |txfc_next|), and ensure that the font is written out to +the GR part of |ln_font|, before incrementing to the next font. + +This code can only be invoked when working with packed pixel files, because +fonts which run over more than one LN03 font must exceed 188 characters in +length, and unpacked pixel files are limited to 128 characters! + +@= +begin + incr(ln_font); + last_txfc := final_txfc; {|first_txfc>right_last|, therefore\dots} + @; {|begin_txf:=false|} + first_txfc := txfc_next {This will be our next character} +end + + +@ The first job |add_txf_to_lnf| has to do is to open the (packed or +unpacked) pixel file; the file directory and font name are passed in to the +function (as parameter |open_file_name|). + +Note that this \.{WEB} section is expanded by \.{TANGLE} in the context of +procedure |change_pixel_file| \&{and} of function |add_txf_to_lnf|. In the +first context, the string variable |open_file_name| referenced herein is the +\&{global} variable of that name, whilst within |add_txf_to_lnf| it is the +formal parameter of that function. + +Assuming the file is opened succesfully, the size of the file is taken from +variable |file_len|, which is set up by the \.{user\_action} procedure with +which the file is opened. + +The first block of the file is then read (into the associated file variable +|pxl_file|). + +@= +begin open(pxl_file,open_file_name,@=readonly@>,@=access_method@>:=@=direct@>, + @=user_action@>:=file_open,VAX_continue); +file_stat:=status(pxl_file); ask:=file_stat<>0; +if ask then +begin + case file_stat of + 2: file_message := 'PAS-E-ERRDUROPE'; + 3: file_message := 'PAS-E-FILNOTFOU'; + 5: file_message := 'PAS-E-ACCMETINC'; + 6: file_message := 'PAS-E-RECLENINC'; + 7: file_message := 'PAS-E-RECTYPINC'; + 8: file_message := 'PAS-E-ORDSPEINC'; + othercases + file_message := str_int(file_stat); + endcases; + abort('Couldn''t open ',open_file_name,'. Status=',file_message); +@:fatal error Couldn't open file}{\quad\.{Couldn't open file} (pxl/pk)@> +end; +reset(pxl_file) +end + +@ We apply some simple checks to determine whether the \.{PXL} file passed in +has a valid format. At the same time, we set up the local variable |pxl_size| +which gives the total length of the \.{PXL} file, in bytes, excluding the +identification longword of 1001 at its end. + +@= +pxl_size:=file_len; +pxl_block:=0; +move_to_pxl(pxl_size-4); +i:=pxl_ptr+4; {Point {\bf after} the last block} +repeat + i:=i-4 +until (i<0) or (pxl_long(i)=pxl_id); +pxl_size:=i+VAX_block_length*pxl_block; +if i<0 then abort('PXL file has bad format'); +@:fatal error PXL file has bad format}{\quad\.{PXL file has bad format}@> + +@ Having found the end of the \.{PXL} file, we are able to extract the +last four longwords. These give us, starting with the last, the longword +address of the start of the character directory within the file, the ``design +size'' (in scaled points), the ``magnification'' of the font (will be 1500 +for fonts designed for 300 pixels/inch devices) and the font checksum. +This latter quantity should match that read from the \.{TFM} file by \TeX. + +After using these longwords, we then go to the first byte of the character +directory, and copy it into |pxl_dir|. Each character's entry consists +of the following fields: +\yskip\hang|num_cols| the number of pixels printed for each row of the +character; +\yskip\hang|num_rows| number of rows of pixels printed; +\yskip\hang|x_off| offset (in pixels) of the left-hand edge of the raster, +relative to the reference point; +\yskip\hang|y_off| similarly for top of raster relative to the baseline; +\yskip\hang|addr| the longword address within the \.{PXL} file of the start +of the rasters; +\yskip\hang|tfm_width| the character's width, in the same format as for +|tfm_file|. + +@= + +move_to_pxl(pxl_size-16); +if font_check_sum[TeX_font]<>long_pxl(pxl_ptr) then + warning('checksum doesn''t match in PXL file'); +@.checksum doesn't match in PXL file@> +magnification:=long_pxl(pxl_ptr); +dsize:=long_pxl(pxl_ptr); +dsize:=(dsize/two_to_the_20th)*(magnification/1500.0);@/ +move_to_pxl(long_pxl(pxl_ptr)*4); {Go to start of directory} +for i:=0 to 127 do + with pxl_dir[i] do + begin num_cols:=word_pxl(pxl_ptr); + num_rows:=word_pxl(pxl_ptr); + x_off:=sign_pxl_word(pxl_ptr); + y_off:=sign_pxl_word(pxl_ptr); + addr:=long_pxl(pxl_ptr); + tfm_width:=long_pxl(pxl_ptr) + end + +@ We need to determine the lowest and highest ordinal character positions of +those characters used in the \TeX\ font being encoded into the LN03 font file; +the variables |first_txfc| and |last_txfc| are used for this purpose. If there +are no characters used at all in the \TeX\ font some malfunction must have +occurred, because |add_txf_to_lnf| should not have been invoked under those +circumstances. + +The character numbers will be those of the LN03 font file, having already been +mapped to these during the mapping phase; therefore, if the lowest character +number used is |= left_first| then we must be starting a new font, so must +initialize the empty font file and indicate that this is a |GL| font +(left-hand half of eight-bit character table). + +@= +first_txfc:=-1; last_txfc:=-1; {For |ln_font|} +txfc_next:=-1; final_txfc:=-1; {and for |ln_font+1|} +for i:=first_glyph_index(TeX_font) to last_glyph_index(TeX_font) do + with glyphs[i] do + @ ; +@ + +@ As we cycle through all the allocated characters, we note each code in turn, +thus determining the highest code used. We also note the lowest one when we +meet the first code used. If the |TeX_font| extends into a second |ln_font|, +the corresponding information will be recorded in |final_txfc| and |txfc_next|, +respectively. + +@= +if loaded = wanted then +begin if txf_to_lnf[font_code]=ln_font then + begin if first_txfc=-1 then first_txfc:=char_code; + last_txfc:=char_code; font_code:=ln_font + end + else {This must be overflow of |TeX_font| into |ln_font+1|} + begin if txfc_next=-1 then txfc_next:=char_code; + final_txfc:=char_code; font_code:=ln_font+1 + end +end + +@ If the lowest character code used is |left_first|, then we shall have to +initialize a new LN03 font file. Similarly, if the last character used is the +last character allocated to this LN03 font, we shall later have to finish off +the latter. We therefore note these two conditions in |begin_txf| and +|end_txf|, and initialize the font ``file'' if the former condition pertains. + +@= +if last_txfc<0 then + abort('Internal error (empty font)'); +@:fatal error Internal error empty font}{\qquad\.{(empty font)}@> +begin_txf:=first_txfc=left_first; +end_txf:=last_txfc=last_lnf[ln_font]; +if begin_txf then +begin using_GR:=false; + init_LNF +end + +@ Here are some more local variables of |add_txf_to_lnf|, used in the above +code: + +\yskip\hang|first_txfc| The lowest character code allocated to a character of +|TeX_font| when the mapping took place. + +\yskip\hang|last_txfc| Similarly, the highest code used. + +\yskip\hang|txfc_next| The lowest character code for a character of |TeX_font| +allocated to |ln_font+1| when the mapping took place. + +\yskip\hang|final_txfc| Similarly, the highest code used by |TeX_font| in +|ln_font+1| + +\yskip\hang|begin_txf| A boolean, which is |true| if this |TeX_font| commences +a new font file in the LN03. + +\yskip\hang|end_txf| This is |true| if the last character of the present +|TeX_font| is the last character mapped to |ln_font|. + +@== +@!first_txfc, @!last_txfc : integer; +@!txfc_next, @!final_txfc : integer; +@!begin_txf, @!end_txf : boolean; +@ After all the required character glyphs have been copied from the \.{PXL} +file, we can close it. + +If, and only if, the very last character code was that of the highest mapped +into this font, we can output the LN03 font to the \.{LN3} file. + +Finally, we report the number of bytes of rasters created in the font file. + +@= +close(pxl_file,@=disposition@>:=@=save@>,VAX_continue); + +if end_txf then output_LNF; + +print_ln(rasters:0,' bytes of rasters (',font_occupancy[TeX_font]:1, + ' characters)'); +write_ln(term_out,rasters:0,' bytes of rasters (',font_occupancy[TeX_font]:1, + ' characters)' ,crlf); +add_txf_to_lnf:=rasters {Total bytes of rasters added to file} + +@* Procedures to access the font file. The definitions which follow facilitate +access to the individual bytes, words, longwords and strings of the +``|lnf_file|'' by accessing the appropriate entity in the variant record +representation of the file's blocks. The procedures allow us to write bytes, +words and longwords into the memory representation of the |lnf_file|. + +@d lnf_bytes(#)==lnf[(#) div VAX_block_length].bytes[(#) mod VAX_block_length] +@d lnf_words(#)==lnf[(#) div VAX_block_length].words[((#) mod VAX_block_length) +div 2] +@d lnf_longs(#)==lnf[(#) div VAX_block_length].longs[((#) mod VAX_block_length) +div 4] +@d lnf_str(#)==lnf[(#) div VAX_block_length].str[((#) mod VAX_block_length) div +4] + +@= + +procedure lnf_byte(byte_address:integer; byte_val:eight_bits); +begin + lnf_bytes(byte_address):=byte_val +end; + +procedure lnf_word(byte_address:integer; word_val:sixteen_bits); +begin if odd(byte_address) then + abort('Internal error (word at odd byte ',byte_address:1,')'); +@:fatal error Internal error word at odd byte}{\qquad\.{(word at odd byte)}@> + lnf_words(byte_address):=word_val +end; + +procedure lnf_long(byte_address,long_val:integer); +begin if odd(byte_address) then + abort('Internal error (longword at odd byte ',byte_address:1,')'); +@:fatal error Internal error longword at odd byte}{\qquad\.{(longword at odd byte)}@> + if byte_address mod 4 = 0 then + lnf_longs(byte_address):=long_val + else + begin if long_val<0 then + begin long_val:=long_val+@'17777777777; {$2^{31}-1$} + long_val:=long_val+1; + lnf_words(byte_address+2):=(long_val div 65536)+32768 + end else + lnf_words(byte_address+2):=(long_val div 65536); + lnf_words(byte_address):=long_val mod 65536 + end +end; + +@ When we are ``outputting'' to the |lnf_file| from \.{PK} files, it's more +convenient to call the following procedure; in fact, it might prove handy for +use in |copy_char| too! + +@= + +procedure put_lnf(@!item : integer); +begin lnf_bytes(base):=item; + incr(base) +end; +@# +procedure repeat_row; +begin put_lnf(lnf_bytes(row_addr)); + incr(row_addr) +end; + +@ For downloading the bitmap of an oversized glyph, we need to ``read'' six +rows of pixels from either the |pxl_file| itself, or from the character's +bitmap which has been formed in |lnf_file| from the |packed_file|. + +@= +if pxl_ident=packed_file then + for j:=1 to ((num_cols+7) div 8) do + begin + sixel_line[k,j]:=reverse[lnf_bytes(base)]; + incr(base) + end else + begin + for j:=1 to (num_cols+7) div 8 do + begin + sixel_line[k,j]:=pxl_byte(pxl_ptr); + incr(pxl_ptr); must_get(pxl_ptr) + end; + while (pxl_ptr mod 4) <> 0 do + begin + incr(pxl_ptr); must_get(pxl_ptr) + end + end + + +@ It could happen that a glyph is imaged that doesn't exist in the font; we +then mark this in the |loaded| field of the |glyph_map| as |missing|; such +glyphs will result in appropriate $(x,y)$ positioning commands being output +to the LN03, by derivation from the font metrics data. + +@= ,@!missing + +@ After we've read through the (packed or unpacked) pixel file, we should have +managed to download glyphs for all the characters used in the current document. +If the following check finds a character without an associated glyph, it +downloads a dummy, invisible glyph of the appropriate width. + +@= +for char_num := font_bc[TeX_font] to font_ec[TeX_font] do + with glyph_map(TeX_font)(char_num) do + if loaded=wanted then + begin + loaded := missing; {Ensure we don't try to image the glyph} + term_offset := 20; {Ensure we get a newline before warning} + warning('Font ',name,' doesn''t contain character ',char_num:1,crlf); +@:Warning: Font doesn't contain character}{\quad\.{Font doesn't contain...}@> + @; + @; + tfm_width := width; + num_cols := pixel_width; + base := ras_beg + ras_len; + @; + char_code:=first_txfc; font_code:=ln_font + end + +@*Copy one character's rasters. For each character taken from an unpacked +(\.{PXL}) file, the function |add_txf_to_lnf| calls this procedure |copy_char|, +which +provides the main action of the function, by converting the \.{PXL} file +rasters to the format required by the \.{LN03}, and storing them away in the +appropriate part of the ``|lnf_file|'' in memory. + +The global variable |base| is used as a pointer into the appropriate byte of the +Character Definitions Region of the LN03 font file, and commences at the +location determined from the ``size so far'' as recorded by |ras_beg| and +|ras_len|. + +Having verified that the \.{PXL} file contains the character glyph required +(if the character is absent, the address field of the directory entry will not +point to an address within the file), the |move_to_pxl| procedure is called to +make the appropriate bytes of the characters rasters accessible to the +program. + +The character parameters section of the character definition is then completed +in the font file; the first four bytes contain the kerning information (null, +because \TeX\ does all the kerning for us, and we don't want the LN03 to upset +it) and 24 bits of flags --- the only bit that we set in this flag field is +the `flag flag' bit. + +LN03 pixels (of which there are 300 to an inch) can be converted to DEC +centipoints (or Gutenbergs) by multiplying by 7200/300 = 24. + +@d Pxl_to_Gut=24 + +@= + +procedure copy_char(char_num,to_where:integer); + var @!i,@!j,@!k,@!n,@!len:integer; +begin + base:=ras_beg+ras_len; {Where to start saving the parameters/rasters} + with pxl_dir[char_num] do + if (addr>0) and (addr<=(pxl_size div 4)-8) then + {Only process characters which lie within the file!} + with glyph_map(TeX_font)(char_num) do + begin + move_to_pxl(addr*4); + char_code:=to_where;@/ + @; + @; + @; + @; + @; + @ + end {|with|} +end; + + +@ The true character width (in scaled points) is taken from the |tfm_width| field of +the pixel file directory; this value is converted to pixels and stored in the +|ch_widths| array, where it is used by the procedures which set characters on +the page. The value is also converted to Gutenbergs and stored in the +|fnt_char_width| field for the character raster in the font file. If the +width differs from that computed from the \.{TFM} file by more than one pixel, +this is reported, and the value derived from the \.{PXL} file substituted in +preference. + + +@= +ch_wid:=round((dsize*resolution*tfm_width)/(two_to_the_20th*72.27)); +lnf_word(base,@"0000); {No kerning, lowest byte of flags=0} +lnf_word(base+2,@"8000); {Highest bit of flags (flag flag) = 1} +lnf_long(base+fnt_char_width,trunc(ch_wid*(7200.0/resolution))); +ch_widths[ln_font,to_where]:=ch_wid; +tfm_wid:=pixel_width; +if abs(ch_wid-tfm_wid) > 1 then +begin warning('Pixel width discrepancy; font ',open_file_name,' char ',char_num:1); +@:Warning: Pixel width discrepancy}{\quad\.{Pixel width discrepancy}@> + show('---computed width: ',tfm_wid:1,'; actual width: ',ch_wid:1); +end; +pixel_width:=ch_wid + +@ The above section of code needs some workspace in which to perform those width +computations. They may as well be local to |add_txf_to_lnf|. + +\yskip\hang|ch_wid| Holds the actual width of the character, in pixels, +derived from the |tfm_width| field of the pixel file's directory. + +\yskip\hang|tfm_wid| Holds the character width as calculated from the +|ch_widths| entry which came from the TFM file for this font. + +@== +@!ch_wid,@!tfm_wid:integer; + +@ The \.{PXL} file directory entry contains |x_off| and |y_off| fields, which +define the starting point of the raster relative to the character's reference +point. These are passed to the font file as the |fnt_left_bearing| and +|fnt_raster_baseline| fields of the raster entry, in Gutenbergs. + +The flags longword of the raster is then created, and indicates that the +raster is in portrait orientation (relative to memory, not to the output +device) and is an aligned expanded bit string. (Unfortunately, although +DEC Std 180 permits run-length encoding of rasters, the LN03 itself does not +support this facility, so rasters have to be downloaded in fully expanded form.) + +Invisible fonts (used by Sli\TeX) will have the bounding box info (|num_cols| +and |num_rows|) both equal to zero. Since the LN03 isn't very happy with such +characters (!), we will later insert a null character locator in the font's +directory; we still go through the motions of generating character +parameters and the (empty) bitmap in the font file, but bytes occupied by +these will be overwritten with the next real bitmap. Although instructions +to image such a null character are accepted by the printer, unfortunately +the printer seems to image some other character at random! Therefore we +mark the glyph as |missing|, so that no attempt is made to image it later. +Oversized glyphs are also not inserted into the font file; so it is only for +genuine printable glyphs that the value of |base| will be advanced to +reserve the space occupied by the character's parameters. + +This module is always called in the context |with +glyph_map(TeX_font)(char_num) do|. + +@= +lnf_long(base+fnt_left_bearing,int(-Pxl_to_Gut*x_off)); +lnf_long(base+fnt_raster_baseline,int(-Pxl_to_Gut*y_off)); +lnf_long(base+fnt_char_pars+fnt_char_orient,@"00008100); {Aligned,bit-expanded} +if num_rows=0 then loaded := missing; {``Invisible'' glyph} +lnf_word(base+fnt_char_pars+fnt_char_cols,num_cols); +lnf_word(base+fnt_char_pars+fnt_char_rows,num_rows); +if loaded=yes then + base:=base+fnt_char_pars+fnt_char_raster + +@ Here are some further values than can be allocated to the |loaded| field +of |glyph_map|: values could be:\par +\item{$\bullet$} |yes| if character's glyph was included in a downloaded LN03 +font; +\item{$\bullet$} |no| if the glyph exceeded the LN03's capability for the +area of a downloaded glyph. In this case a null character locator will have +been inserted in the directory of the downloaded font, and the actual +glyph's bitmap will be sent to the printer each and every time it occurs in +the document. + +@= ,@!yes ,@!no + +@ The LN03 has a physical (apparently arbitrary) restriction on the maximum size +of a downloadable glyph. For a glyph to be acceptable, it must satisfy the +inequality $$ + 2\times\lceil|num_cols|/2\rceil\times\lceil|num_rows|/8\rceil\le5700$$ + +The following section prevents such an oversized glyph from being included in +the downloaded font; it is always called in the context |with +glyph_map(TeX_font)(char_num) do|. + +@= +if ((num_rows+7) div 8) * 2 * ((num_cols+1) div 2) > largest_glyph then + loaded:=no {Indicate oversized glyph unavailable} +else + loaded:=yes {Indicate glyph successfully downloaded} + + +@ After further setting up of values in the font file, we copy the bits of the +rasters from the \.{PXL} file to the LN03 font file; this requires that we +reverse each byte. + +As each byte is copied, we get another; the |must_get| procedure will read in +a new block from the \.{PXL} file if necessary. At the end of each row, the +next is started from the next complete longword of the \.{PXL} file. + +Only character glyphs which are capable of being downloaded are entered into +the file; invisible and oversized glyphs don't need to have the bitmap +copied, and they'll eventually end up with a null character locator in the +font file's directory. + +This module is always called in the context |with +glyph_map(TeX_font)(char_num) do|. + +@= +if loaded=yes then +for i:=1 to num_rows do +begin + for j:=1 to (num_cols+7) div 8 do {Whole bytes required} + begin lnf_bytes(base):=reverse[pxl_byte(pxl_ptr)];@/ + incr(pxl_ptr); must_get(pxl_ptr); incr(base) + end; {Copied bytes for one row of pixels} + while (pxl_ptr mod 4)<>0 do + begin incr(pxl_ptr); {Row held in 32-bit words in \.{PXL} file} + must_get(pxl_ptr) + end +end + +@ The |copy_char| procedure requires an array to be set up to ``reverse'' +individual bytes' bits, since the \.{PXL} file stores the first pixel of +a row at the most significant bit of the long-word, whilst DEC Std 180 +requires the first pixel to be the least significant bit of the first byte. + +We therefore create a global array |reverse|, which we initialize with +appropriate patterns to reverse any byte proferred as an index. + +@= +@!reverse: packed array [0..255] of eight_bits; + +@ @= +procedure Generate_Reversal; + var @!index,@!patt,@!cnt,@!rev: eight_bits; +begin + for index:=0 to 255 do + begin rev:=0; patt:=index; + for cnt:=1 to 8 do + begin rev:=2*rev; + if odd(patt) then rev:=rev+1; + patt:=patt div 2 + end; + reverse[index]:=rev + end; +end; + +@ @= + Generate_Reversal; + +@ The number of bytes required for the character glyph in landscape and +portrait modes is computed, and added to the accumulated sum of these for all +characters; the ``mixed'' mode count is increased by the larger of these +quantities. + +The value |len| is also computed to be added to the Character Definitions +descriptor held in |ras_beg,ras_len|. None of these quantities are updated +unless the character glyph has actually been copied into the font file, +i.e., |loaded=yes|. + +@= +if loaded=yes then +begin +i:=((num_rows+7) div 8)*num_cols; {Bytes required for raster in landscape mode} +lsize:=lsize+i; +j:=((num_cols+7) div 8); {Bytes/column} +psize:=psize+j*num_rows; {bytes added to portrait rasters} +msize:=msize+VAX_max(i,j*num_rows); {bytes added to mixed mode rasters} +len:=j*num_rows+fnt_char_pars+fnt_char_raster {Allow for the parameters} +end else len:=0 + +@ After transferring the rasters for one character's glyph, we finally +complete the entry in the font file's character directory. We record the +address of the character's rasters in the appropriate character locator, +update the count of rasters stored, and round up to the next \\{word} +boundary in the font file (note that it is not a requirement of DEC Std 180 +that rasters start on a \\{longword} boundary.) + +If the glyph was not copied into the font file, because it exceeded the +LN03's maximum size of glyph, or because it was invisible, then a null entry +is made for the character locator, and the next raster, if any, will +overwrite that just stored. + +@= +if loaded<>yes then +begin + lnf_long(fnt_char_dir+4*(to_where-dir_base),0); + incr(null_chars); decr(num_chars) +end +else begin + lnf_long(fnt_char_dir+4*(to_where-dir_base),ras_beg+ras_len); + ras_len:=ras_len+len; rasters:=rasters+len; + if odd(ras_len) then + begin + lnf_byte(base,0); {Null byte to round raster to word boundary} + incr(ras_len); + incr(rasters) + end +end + +@ The following procedure initialises the ``fixed'' area of the \.{LN03} font +file as held in memory. We start by clearing the whole of the first block of +the file; this is sufficient to ensure that the whole of the file header, +attributes and parameters regions are zeroed, which reduces the number of +individual assigments necessary. + +The counts of space occupied by the rasters, and the raster sizes in portrait, +landscape and mixed modes are also initialized. + +@= +procedure init_LNF; +var @!i,@!j:integer; +begin + for i:=0 to 127 do lnf_longs(4*i):=0; {Clear the lnf header} + ras_len:=0; psize:=0; lsize:=0; msize:=0;@/ + @@; + @@; + @@; + @@; +end; + +@ The font file's header contains some identification material, and a number +of descriptors which point to other regions of the font file. + +@= +lnf_str(fnt_identifier):='FONT'; +lnf_long(fnt_version,1); {Font File Format is V1.0} +file_ID:='U0000'+@=dec@>(ln_font,2,2)+'002SK00GG0001UZZZZ02F000'; +if using_GR then file_ID[21]:='O'; +lnf_long(12,VAX_length(file_ID)); lnf_long(16,fnt_file_id); +for j:=1 to VAX_length(file_ID) do lnf_byte(j+fnt_file_id-1,xord[file_ID[j]]); +{For the moment, we set creation date to 11-SEP-1973 14:00:00} +lnf_word(fnt_date,1973); lnf_word(fnt_date+2,9); lnf_word(fnt_date+4,11); +lnf_word(fnt_date+6,14); lnf_word(fnt_date+8,0); lnf_word(fnt_date+10,0); +lnf_long(fnt_attr,fnt_attr_len); lnf_long(fnt_attr+4,fnt_attributes); +lnf_long(fnt_params,fnt_params_len); lnf_long(fnt_params+4,fnt_parameters); +if using_GR then + num_chars:=last_lnf[ln_font]-right_first+1 +else + if last_lnf[ln_font]= +@!file_ID:packed array [1..31] of char; +@!num_chars,@!null_chars:integer; +@!dir_base:integer; +@ The font file's attributes region contains mostly descriptors (of strings in +the string pool region) which identify the font, font family, \\{etc.} + +@= +lnf_long(fnt_attributes+fnt_attr_flags,2); {Roman} +lnf_long(fnt_attributes+fnt_char_set,fnt_designator_len); +lnf_long(fnt_attributes+fnt_char_set+4,lnf_pool_offset); +lnf_long(fnt_attributes+fnt_type_ID,fnt_type_ID_len); +lnf_long(fnt_attributes+fnt_type_ID+4,lnf_pool_offset+fnt_designator_len); +lnf_long(fnt_attributes+fnt_type_family,fnt_type_family_len); +lnf_long(fnt_attributes+fnt_type_family+4, + lnf_pool_offset+fnt_designator_len+fnt_type_ID_len); +lnf_long(fnt_attributes+fnt_font_ID,fnt_font_ID_len); +lnf_long(fnt_attributes+fnt_font_ID+4, + lnf_pool_offset+fnt_designator_len+fnt_type_ID_len+fnt_type_family_len); +{Type category, Font description descriptors empty} +{Following values are purely arbitrary at present; try harder later} +lnf_long(fnt_attributes+fnt_type_size,10); {``10pt''} +lnf_long(fnt_attributes+fnt_average_width,500); {5.00pt} +lnf_word(fnt_attributes+fnt_resolution+2,24); {24.0000 centipoints/pixel} +lnf_long(fnt_attributes+fnt_weight,16); {``Normal'' weight} +lnf_long(fnt_attributes+fnt_horiz_prop,16); {Neither expanded nor compressed} +lnf_word(fnt_attributes+fnt_horiz_ratio,1); {1:1 relative to a ``normal'' font} +lnf_word(fnt_attributes+fnt_horiz_ratio+2,1); +lnf_word(fnt_attributes+fnt_pixel_aspect,1); {``Square'' pixels} +lnf_word(fnt_attributes+fnt_pixel_aspect+2,1); +lnf_word(fnt_attributes+fnt_rotation+2,1); {tan = 0/1 = $0^\circ$} +{Device characteristics = 0} +{Foundry and Designer have empty descriptors} + +@ The font file's parameters region contain information relating to all the +characters as a whole. Since they relate to such features as electronic +underlining, which are not utilized by the \.{LN3} file generated by +DVItoLN03, the values used are purely arbitrary. (The values are those used +by Flavio Rose's original \.{LN03toPP} (PL/I) program.) + +@= +{Params flags = 0} +lnf_long(fnt_parameters+fnt_underline_offset,30); +lnf_long(fnt_parameters+fnt_underline_thickness,20); +lnf_long(fnt_parameters+fnt_thru_offset,-60); +lnf_long(fnt_parameters+fnt_thru_thickness,20); +lnf_long(fnt_parameters+fnt_overline_offset,-150); +lnf_long(fnt_parameters+fnt_overline_thickness,20); +lnf_word(fnt_parameters+fnt_slant+2,1); {tan = 0/1 = $0^\circ$} +lnf_word(fnt_parameters+fnt_shadow_offset+2,30); {$\delta x$ only} +lnf_long(fnt_parameters+fnt_superscript,-90); {$\delta y$ only} +lnf_long(fnt_parameters+fnt_subscript,40); {$\delta y$ only} +lnf_long(fnt_parameters+fnt_centreline,60); +lnf_long(fnt_parameters+fnt_min_space,240); {Note |min>max|!} +lnf_long(fnt_parameters+fnt_max_space,60); +lnf_long(fnt_parameters+fnt_mean_space,100); +lnf_long(fnt_parameters+fnt_em_width,240); +lnf_long(fnt_parameters+fnt_en_width,120); +lnf_long(fnt_parameters+fnt_thin_space,40); +lnf_long(fnt_parameters+fnt_digit_width,120); +lnf_long(fnt_parameters+fnt_topline_offset,-160); +lnf_long(fnt_parameters+fnt_accent,-120); +lnf_long(fnt_parameters+fnt_halfline_offset,-70); +lnf_long(fnt_parameters+fnt_overall_height,240); +lnf_long(fnt_parameters+fnt_height,-180); +lnf_long(fnt_parameters+fnt_depth,60); +lnf_long(fnt_parameters+fnt_H_height,160); +lnf_long(fnt_parameters+fnt_ex_height,120); +lnf_long(fnt_parameters+fnt_white_above,20); +lnf_long(fnt_parameters+fnt_white_below,20); + +@ The string pool region of the font file contains the majority of the +character strings which are required to identify the font. + +@= +lnf_byte(lnf_pool_offset,"0"); {Char set designator} +if using_GR then + lnf_byte(lnf_pool_offset+1,"<") +else + lnf_byte(lnf_pool_offset+1,"B"); +lnf_byte(lnf_pool_offset+2,9); {HT character} +for i:=4 to fnt_designator_len do + lnf_byte(lnf_pool_offset+i-1,"Z"); {|'ZZZZ'|---full char set} +for i:=1 to fnt_type_ID_len do + lnf_bytes(lnf_pool_offset+i-1+fnt_designator_len):= + lnf_bytes(i-1+fnt_file_id); {Copy first 7 of |file_ID|} +for i:=1 to fnt_type_family_len do + lnf_bytes(lnf_pool_offset+i-1+fnt_designator_len@|+fnt_type_ID_len) := + " "; {Type family is all spaces} +for i:=1 to fnt_font_ID_len do + lnf_bytes(lnf_pool_offset+i-1+fnt_designator_len@|+fnt_type_ID_len@| + +fnt_type_family_len) := lnf_bytes(i-1+fnt_file_id); {Copy first 16 of |file_ID|} + +@ The following procedure is invoked whenever an \.{LN03} font file in memory +is ready to be written to the output |ln3_file|. Firstly we complete those +fields of the font file header region which we were unable to complete before, +storing away the total length (at front \&{and} back) and repeating the +`\.{FONT}' indication at the end of the file. We also complete the character +definitions region descriptor, and fill in the counts of bytes loaded as +portrait, landscape and mixed mode rasters. + +Obviously it is not possible to include the file \\{verbatim} in the output as +a binary image, since the terminal output driver and/or the printer symbiont +would probably eliminate most of those characters which are unprintable. +Therefore the LN03 requires that the binary file be encoded into ``sixel'' +format; this is more usually used to transfer graphics information to DEC +printers, one sixel being a printable character (in the range `\.?'$\to$`\.\~') +which encodes the numbers |0..63| representing a column of six pixels. + +@= +procedure output_LNF; + var @!i,@!j,@!k,@!records,@!sixel_ct:integer; + @!line_out:varying [128] of char; + @!transform : six_pack; +begin + lnf_len:=ras_beg+ras_len+8; {Make room for Trailing identifier} + lnf_long(fnt_total_size,lnf_len); {Total size noted into first longword} + lnf_long(lnf_len-8,lnf_len); {and into penultimate longword} + lnf_long(lnf_len-4,lnf_longs(fnt_identifier)); {Copy |'FONT'| from 2nd longword to last} + lnf_long(fnt_chars,ras_len); {Length of character definitions} + lnf_long(fnt_in_file_count,num_chars); {We might have excluded some} + lnf_long(fnt_null_count,null_chars); {which will be reflected here} + lnf_long(fnt_rasters,num_chars); {and so we only made this many rasters} + lnf_long(fnt_portrait,psize); + lnf_long(fnt_landscape,lsize); + lnf_long(fnt_mixed,msize); + @ +end; + +@ To convert eight-bit bytes to sixels, which the \.{LN03} requires, we use +(abuse?) \PASCAL's variant record mechanism, to map three bytes into 4 six-bit +characters. + +@== + @!six_pack = packed record + case boolean of + false: (@!bytes : packed array [0..2] of eight_bits); + true: (@!sixels: packed array [1..4] of [bit(6)] 0..63) + end; + +@ The three bytes have to be placed in the record such that the earlier bytes +(least significant in the file) are at the left-ward end of the record. The +resultant six-bit integers are converted to ``printable'' characters by adding +the |ASCII| character `\.{?}', thus giving characters in the range +`\.{?}'$\to$`\.{\~}'. It is these characters that DEC calls ``sixels'', being +a representation of six pixels in one character. + +It is most convenient to process 96 bytes at a time, thus yielding 128 +characters records (of sixel characters). Accordingly, we firstly ensure that +the file is some multiple of 96 bytes long. + +@= + while (lnf_len mod 96) <> 0 do + begin lnf_word(lnf_len,0); { Clear out remainder of ``last record'' } + lnf_len:=lnf_len+2 + end; { Can't work in longwords, in case on odd word boundary } + records:=lnf_len div 96; + i:=0; j:=0; {Block/byte in |lnf| array} + while records > 0 do + begin + line_out:=''; {Null string} + sixel_ct:=0; {We write 128 sixels (=96 bytes) per record} + repeat + k:=2; + repeat + transform.bytes[k]:=lnf[i].bytes[j]; {Store bytes from left} + incr(j); decr(k); + while j>=512 do + begin incr(i); j:=j-512 end + until k<0; {3 bytes at a time} + for k:=4 downto 1 do + begin + line_out:=line_out+chr(transform.sixels[k]+"?"); + incr(sixel_ct) + end; + until sixel_ct=128; + write_ln(ln3_file,line_out); + decr(records) + end + +@* Skipping pages. +A routine that's much simpler than |do_page| is used to pass over +pages that are not being translated. The |skip_pages| subroutine +is assumed to begin just after the preamble has been read, or just +after a |bop| has been processed. It continues until either finding a +|bop| that matches the desired starting page specifications, or until +running into the postamble. + +In this version of \.{DVItoLN03}, it is necessary to ``read'' through all +the pages twice; on the first pass, we gather statistics about the usage +of each character in every font, to minimize the number of rasters +which have to be loaded into the LN03. This procedure |skip_pages| has +therefore been modified to permit its use during this scan. + +In such use, it is first called in the normal fashion, truly to skip pages +until |start_match| indicates that the first page to be output has been +found (or the beginning of the postamble, in the event that the specified +first page does not exist). This results in |started| becoming |true|. +A further call of |skip_pages|, with |started| asserted, records the use of +each character. Whilst this ``scanning'' phase is +taking place, the Boolean |scanning| inhibits writing to the \.{TYP} file. + +@p procedure skip_pages; +label 9999; {end of this subroutine} +var p:integer; {a parameter} +@!k:0..255; {command code} +@!down_the_drain:integer; {garbage} +@!pages_counted:integer; {counts ``wanted'' pages whilst usage is calculated } +begin +pages_counted:=1; {We've already met the first page requested} +while true do + begin if eof(dvi_file) then bad_dvi('the file ended prematurely'); +@:Bad DVI file the file ended prematurely}{\quad\.{the file ended prematurely}@> + k:=get_byte; + p:=first_par(k); + case k of + bop: begin @; + if not started and start_match then + begin started:=true; goto 9999; + end; + if started then + begin incr(pages_counted); {We've got another page that's wanted} + if (pages_counted mod 10)=0 then monitor('.'); {show progress} + if pages_counted>max_pages then {We can skip to the postamble} + begin old_backpointer:=first_backpointer; + move_to_byte(post_loc); + monitor('done.'+crlf); term_offset:=0 + end; + end; + end; + set_rule,put_rule: down_the_drain:=signed_quad; + fnt_def1,fnt_def1+1,fnt_def1+2,fnt_def1+3: begin define_font(p); + print_ln(' '); + end; + xxx1,xxx1+1,xxx1+2,xxx1+3: while p>0 do + begin down_the_drain:=get_byte; decr(p); + end; + post: begin in_postamble:=true; + monitor('done.'+crlf); term_offset:=0; + goto 9999; + end; + @; + @; + othercases do_nothing + endcases; + end; +9999:end; + +@ If (!) we meet a command that would require a character to be set on the +paper, we note that the relevant character has been used, provided the page +being ``skipped'' is one that is to be printed (\\{i.e.} |started| has been +set). The |pages_counted| variable is used to inhibit the gathering of such +statistics after the specified number of pages have been ``read''. + +We mark both the individual glyph and the font itself as being |wanted|. + +@= +sixty_four_cases(set_char_0),sixty_four_cases(set_char_0+64), @/ +four_cases(set1),four_cases(put1): @/ + if started and (pages_counted<=max_pages) then + begin + cur_font_glyph(p).loaded:=wanted; + font_type[cur_font]:=wanted + end + +@ Whenever a font change would have occurred, we determine the |cur_font| so +that the above section, which notes the use of a character, can relate this to +the correct font. + +@= +sixty_four_cases(fnt_num_0),four_cases(fnt1): @/ + begin font_num[nf]:=p; cur_font:=0; + while font_num[cur_font]<>p do incr(cur_font); + cur_font:=font_map[cur_font]; + cur_base:=glyph_base[cur_font] + end + +@ Global variables called |old_backpointer| and |new_backpointer| +are used to check whether the back pointers are properly set up. +Another one tells whether we have already found the starting page. + +@= +@!old_backpointer:integer; {the previous |bop| command location} +@!new_backpointer:integer; {the current |bop| command location} +@!started:boolean; {has the starting page been found?} + +@ @= +old_backpointer:=-1; started:=false; + +@ @= +new_backpointer:=cur_loc-1; incr(page_count); +for k:=0 to 9 do count[k]:=signed_quad; +if signed_quad<>old_backpointer + then error('backpointer in byte ',cur_loc-4:1, + ' should be ',old_backpointer:1,'!'); +@:Error: backpointer in byte should be}{\quad\.{backpointer...should be...}@> +old_backpointer:=new_backpointer + +@* Using the backpointers. +The routines in this section of the program are brought into play only +if |random_reading| is |true|. +First comes a routine that illustrates how to find the postamble quickly. + +@= +n:=dvi_length; +if n<53 then bad_dvi('only ',n:1,' bytes long'); +@:Bad DVI file only n bytes long}{\quad\.{only $n$ bytes long}@> +m:=n-1; +repeat if m=0 then bad_dvi('no 223s'); {ignore trailing zeroes} +@:Bad DVI file no 223s}{\quad\.{no 223s}@> + move_to_byte(m); k:=get_byte; decr(m); +until k<>0; +repeat if m=0 then bad_dvi('all 223s'); +@:Bad DVI file all 223s}{\quad\.{all 223s}@> +move_to_byte(m); k:=get_byte; decr(m); +until k<>223; +if k<>id_byte then bad_dvi('ID byte is ',k:1); +@:Bad DVI file ID byte is wrong}{\quad\.{ID byte is wrong}@> +move_to_byte(m-3); q:=signed_quad; +if (q<0)or(q>m-33) then bad_dvi('post pointer ',q:1,' at byte ',m-3:1); +@:Bad DVI file post pointer is wrong}{\quad\.{post pointer is wrong}@> +move_to_byte(q); k:=get_byte; +if k<>post then bad_dvi('byte ',q:1,' is not post'); +@:Bad DVI file byte n is not post}{\quad\.{byte $n$ is not }\\{post}@> +post_loc:=q; first_backpointer:=signed_quad + +@ Note that the last steps of the above code save the locations of the +the |post| byte and the final |bop|. We had better declare these global +variables, together with another one that we will need shortly. + +@= +@!post_loc:integer; {byte location where the postamble begins} +@!first_backpointer:integer; {the pointer following |post|} +@!start_loc:integer; {byte location of the first page to process} + +@ The next little routine shows how the backpointers can be followed +to move through a \.{DVI} file in reverse order. Ordinarily a \.{DVI}-reading +program would do this only if it wants to print the pages backwards or +if it wants to find a specified starting page that is not necessarily the +first page in the file; otherwise it would of course be simpler and faster +just to read the whole file from the beginning. + +@= +monitor('Finding starting page...'); +@.Finding starting page@> +q:=post_loc; p:=first_backpointer; start_loc:=-1; +if p<0 then in_postamble:=true +else begin repeat + {now |q| points to a |post| or |bop| command; |p>=0| is prev pointer} + if p>q-46 then + bad_dvi('page link ',p:1,' after byte ',q:1); +@:Bad DVI file page link wrong}{\quad\.{page link wrong...}@> + q:=p; move_to_byte(q); k:=get_byte; + if k=bop then incr(page_count) + else bad_dvi('byte ',q:1,' is not bop'); +@:Bad DVI file byte n is not bop}{\quad\.{byte $n$ is not }\\{bop}@> + for k:=0 to 9 do count[k]:=signed_quad; + if start_match then start_loc:=q; + p:=signed_quad; + @; + until p<0; + if start_loc<0 then abort('starting page number could not be found!'); +@:fatal error starting page number}{\quad\.{starting page number...}@> + move_to_byte(start_loc+1); old_backpointer:=start_loc; + for k:=0 to 9 do count[k]:=signed_quad; + p:=signed_quad; started:=true; + end; +if page_count<>total_pages then + warning('there are really ',page_count:1,' pages, not ',total_pages:1,'!'); +@:Warning: there are really n pages}{\quad\.{there are really $n$ pages}@> +monitor('found.'+crlf); term_offset:=0 + +@ One of the reasons for using the above routine (which seems rather +wasteful if the user wants to print pages starting from the beginning of the +\.{DVI} file) is so that we can determine whether any particular \\{recto} +page is followed by another, without an intervening \\{verso} page. This +information can then be used at printing time to change the printing mode of +the DEClaser~2200 (LN06), which supports duplex printing, such that the +first of these pages be printed in simplex mode. Doing this speeds up the +printing cycle compared with merely outputting a blank \\{verso} page, +since the mechanical operation of turning over the paper is thereby avoided. + +Therefore we construct an array of pointers into the \.{DVI} file where an +entry indicates that the page is followed by a blank \\{verso} sheet. Here +are the necessary data structures: + +@= +@!blank_follows:array[1..max_blank_pages] of integer; +@!ptr_blanks:0..max_blank_pages; +@!next_is_recto:boolean; + +@ Naturally we initialize this such that a final \\{recto} page will have +its blank \\{verso} side treated by the same mechanism. + +@= +next_is_recto:=true; ptr_blanks:=0; + +@ As we work our way backwards through the file, we have the opportunity to +recognize that a \\{recto} page is followed directly by another of the same, +without an intervening \\{verso} page. This code relies upon \TeX\ having +used its \.{\\count0} for the page number, which is the usual convention, +even when other counters are used to provide additional information in page +numbering (such as the chapter number). When we later process the +information in the |blank_follows| array, we do so in reverse order, which +therefore corresponds with the processing of the file in the forward +direction. + +@= +if odd_page and next_is_recto then + if ptr_blanks=max_blank_pages then + capacity_exceeded('too many blank verso pages') +@:capacity exceeded too many blank verso}{\quad\.{too many blank }\\{verso}\.{ pages}@> + else + begin + incr(ptr_blanks); blank_follows[ptr_blanks]:=cur_loc + end; +next_is_recto:=odd_page + +@* Reading the postamble. +Now imagine that we are reading the \.{DVI} file and positioned just +four bytes after the |post| command. That, in fact, is the situation, +when the following part of \.{DVItoLN03} is called upon to read, translate, +and check the rest of the postamble. + +@p procedure read_postamble; +var k:integer; {loop index} +@!p,@!q,@!m:integer; {general purpose registers} +begin post_loc:=cur_loc-5; +print_ln('Postamble starts at byte ',post_loc:1,'.'); +@.Postamble starts at byte n@> +if signed_quad<>numerator then + warning('numerator doesn''t match the preamble!'); +@:warning numerator doesn't match}{\quad\.{numerator doesn't match...}@> +if signed_quad<>denominator then + warning('denominator doesn''t match the preamble!'); +@:warning denominator doesn't match}{\quad\.{denominator doesn't match...}@> +if signed_quad<>mag then if new_mag=0 then + warning('magnification doesn''t match the preamble!'); +@:warning magnification doesn't match}{\quad\.{magnification doesn't match...}@> +max_v:=signed_quad; max_h:=signed_quad;@/ +max_v_saved:=max_v; max_h_saved:=max_h;@/ +print('maxv=',max_v:1,', maxh=',max_h:1);@/ +max_s:=get_two_bytes; total_pages:=get_two_bytes;@/ +print_ln(', maxstackdepth=',max_s:1,', totalpages=',total_pages:1); +@; +@; +end; + +@ When we get to the present code, the |post_post| command has +just been read. + +@= +q:=signed_quad; +if q<>post_loc then + error('bad postamble pointer in byte ',cur_loc-4:1,'!'); +@:Error: bad postamble pointer}{\quad\.{bad postamble pointer}@> +m:=get_byte; +if m<>id_byte then error('identification in byte ',cur_loc-1:1, +@:Error: identification in byte p should be n}{\quad\.{identification...should be $n$}@> + ' should be ',id_byte:1,'!'); +k:=cur_loc; m:=223; +while (m=223)and not eof(dvi_file) do m:=get_byte; +if not eof(dvi_file) and (m<>0) then bad_dvi('signature in byte ',cur_loc-1:1, +@:Bad DVI file signature...should be}{\quad\.{signature...should be...}@> + ' should be 223') +else if cur_loc + cur_loc-k:1,')'); + +@ @= +repeat k:=get_byte; +if (k>=fnt_def1)and(knop; +if k<>post_post then + error('byte ',cur_loc-1:1,' is not postpost!') +@:Error: byte n is not postpost}{\quad\.{byte $n$ is not }\\{postpost}@> + +@* The main program. +Now we are ready to put it all together. This is where \.{DVItoLN03} starts, +and where it ends. These macros define various possible exit values for the +program, through the VAX/VMS system service \.{\$exit}. +@^system dependencies@> + +@d VAX_exit==@=$exit@> +@d VAX_ss_normal==@= sts$k_success @> +@d VAX_ss_warning==@= sts$k_warning + sts$m_inhib_msg @> +@d VAX_ss_error==@= sts$k_error + sts$m_inhib_msg @> +@d VAX_ss_fatal==@= sts$k_severe + sts$m_inhib_msg @> + +@p begin initialize; {get all variables initialized} + dialog; {set up all the options} + write_ln(term_out,'(',actual_file_spec,crlf); + print_ln('Reading from file ',actual_file_spec); + @; + @; + in_postamble:=true; read_postamble; in_postamble:=false; + @; + if not in_postamble then @; + if not in_postamble then @; + close(ln3_file,@=disposition:=save@>,VAX_continue); + monitor(')'); +final_end: + ask := (history > spotless) or odd(VAX_cli_present('LOG')); + if VAX_cli_present('LOG') = VAX_cli_negated then ask := false; + if ask then + close(type_file,@=disposition:=save@>,VAX_continue) + else + close(type_file,@=disposition:=delete@>,VAX_continue); + case history of { Issue an appropriate VAX exit status } + spotless: VAX_exit(VAX_ss_normal); { Everything OK! } + warning_given: VAX_exit(VAX_ss_warning); + error_given: VAX_exit(VAX_ss_error); + fatal_error: VAX_exit(VAX_ss_fatal) + end; +end. + +@ The main program needs a few global variables in order to do its work. + +@= +@!k,@!m,@!n,@!p,@!q:integer; {general purpose registers} + +@ A \.{DVI}-reading program that reads the postamble first need not look at the +preamble; but \.{DVItoLN03} looks at the preamble in order to do error +checking, and to display the introductory comment. + +@= +open_dvi_file; +p:=get_byte; {fetch the first byte} +if p<>pre then bad_dvi('First byte isn''t start of preamble!'); +@:Bad DVI file First byte isn\'t}{\quad\.{First byte isn't...}@> +p:=get_byte; {fetch the identification byte} +if p<>id_byte then + error('identification in byte 1 should be ',id_byte:1,'!'); +@:Error: identification in byte p should be n}{\quad\.{identification...should be $n$}@> +@; +p:=get_byte; {fetch the length of the introductory comment} +print(''''); +while p>0 do + begin decr(p); print(xchr[get_byte]); + end; +print_ln('''') + +@ The conversion factor |conv| is figured as follows: There are exactly +|n/d| \.{DVI} units per decimicron, and 254000 decimicrons per inch, +and |resolution| pixels per inch. Then we have to adjust this +by the stated amount of magnification. + +@= +numerator:=signed_quad; denominator:=signed_quad; +if numerator<=0 then bad_dvi('numerator is ',numerator:1); +@:Bad DVI file numerator is wrong}{\quad\.{numerator is wrong}@> +if denominator<=0 then bad_dvi('denominator is ',denominator:1); +@:Bad DVI file denominator is wrong}{\quad\.{denominator is wrong}@> +print_ln('numerator/denominator=',numerator:1,'/',denominator:1); +conv:=(numerator/254000.0)*(resolution/denominator); +mag:=signed_quad; +if new_mag>0 then mag:=new_mag +else if mag<=0 then bad_dvi('magnification is ',mag:1); +@:Bad DVI file magnification is wrong}{\quad\.{magnification is wrong}@> +true_conv:=conv; conv:=true_conv*(mag/1000.0); +print_ln('magnification=',mag:1,'; ',conv:16:8,' pixels per DVI unit') + +@ The code shown here uses a convention that has proved to be useful: If the +starting page was specified as, e.g., `\.{1.*.-5}', then all page numbers in +the file are displayed by showing the values of counts 0, 1, and~2, separated +by dots. These numbers are displayed on the terminal when DVItoLN03 is working +on that page. + +The parameter |-1| in the call of |do_page| indicates to the latter that +this is \&{not} a recursive call of the function, and hence that it should +initialize its data structures for a fresh page. + +@= +begin while max_pages>0 do + begin decr(max_pages); + print_ln(' '); print(cur_loc-45:1,': beginning of page '); + text_out:='['; + last_counter:=0; + for k:=0 to 9 do if count[k]<>0 then last_counter:=k; + for k:=0 to last_counter do + begin + if (k=0) or (count[k]<>0) then + begin + print(count[k]:1); text_out:=text_out+str_int(count[k]) + end; + if k + incr(pages_printed); + repeat k:=get_byte; + if (k>=fnt_def1)and(knop; + write_ln(term_out,']'); incr(term_offset); {Let user know page has finished} + if k=post then + begin in_postamble:=true; goto done; + end; + if k<>bop then bad_dvi('byte ',cur_loc-1:1,' is not bop'); +@:Bad DVI file byte n is not bop}{\quad\.{byte $n$ is not }\\{bop}@> + @; + end; +done: @ +end + +@ A string variable |text_out| is provided to hold the +characters of a page number. We also use |last_counter| to indicate the +last significant item in the |count| array when displaying the page number. + +@= + @!text_out : file_spec; + @!last_counter : 0..9; + +@ No output for the terminal occurs before the pages are processed except +for error and font load messages, all of which end with a newline. Therefore, +we are quite safe in resetting |term_offset| during the initialisation phase. + +@= + term_offset:=0; + +@* System-dependent changes. +Here are the remaining changes to the program +that are necessary to make \.{DVItoLN03} work on Vax/VMS. +@^system dependencies@> + +We define here various variables required by the VAX. + +\yskip\hang |history| is used to record whether any warning or error +messages (including fatal errors) have been reported. + +\yskip\hang |type_file| and |ln3_file| are |file| variables used for writing +the log and +output files, respectively. Advantage is taken of VAX-\PASCAL's |varying| +arrays to hold variable length strings: |file_name| is used generally for +names of files, whilst |def_file_name| initially holds the specification of +the \.{.dvi} file being processed, from which the name is later extracted for +use in forming the names of generated files. + +The remaining variables are used during the parsing of the file +specification. + +@== +@!history: exit_status; +@!type_file: text; +@!ln3_file: text; +@!file_name,@!actual_file_spec,@!log_file_name, + @!output_file_name:file_spec; +@!file_message:file_spec; +@!cmd_j,@!cmd_k:integer; +@!ask : boolean; + +@ Here is the enumeration type used for |history|. + +@== +@!exit_status = (@!spotless,@!warning_given,@!error_given,@!fatal_error); +@ We now do all the VMS specific things to open the files required, etc. The +\.{DVIfile} is opened with a fixed block length, and with \.{direct} access +method, to permit |random_reading|. A |user_action| procedure is called, to +perform the actual opening of the file; this gives us access to the various +VAX data structures (|FAB|,|RAB| and |XAB|) and thus we are able to determine +the actual length of the file. + +The |output| file (directed to the terminal) is opened without +|carriage_control|, in order that |write_ln| may be used to ensure that +each partial line of output is displayed on the screen. + +@= +open(output,'SYS$OUTPUT',@=carriage_control:=none@>,VAX_continue); +history := spotless; { We haven't had any errors (yet!) } +@@; +@@; +@@; +@@; +@; +@@; +@@; +@@; +@@; + +@ When we parse the qualifiers pertaining to the physical font directories, +we use the variable length strings |tex_pxl_font| and |tex_pk_font| to hold +the directory specifications derived from the command line qualifiers +\.{/PXL\_FONT\_DIRECTORY} and \.{/PK\_FONT\_DIRECTORY}, respectively. Iff, +after applying logical name translation (if necessary), a file directory +specification is found to end in the sequence `\.{.]}', then a rooted file +directory structure will be assumed; this is recorded in the variables +|pk_rooted| and |pxl_rooted|. + +There is no such complication for the \.{/TFM\_DIRECTORY} qualifier; its +value is merely copied to |tfm_directory|. + +@= +@!tex_pxl_font,@!tex_pk_font,@!tfm_directory:file_spec; +@!pxl_rooted,@!pk_rooted:boolean; + +@ Originally, this program had the location of the \TeX\ Font Metrics files +(\.{.TFM}) `hard-wired' into it, just as the VMS implementation of \TeX\ +itself did, through the logical name \.{TEX\$FONTS}. \TeX\ has since been +modified so that such information is communicated to the program through a +command-line qualifier, and this program too now makes use of the same +mechanism. + +This permits two things: + +\yskip\hang$\bullet$ The site manager can chose whether to use logical names +of the form \.{TEX\UL FONTS} or \.{TEX\$FONTS} ({\sl Digital\/} recommends that +customers should \&{not} define logical names containg the `\.\$' character, +since the logicals which they themselves define \&{always} contain this +character, and may at some future date conflict with customer-defined +logicals). + +\yskip\hang$\bullet$ Individual users may define their own logical names +that provide a search-list for a number of directories; this can prove +useful whilst testing a new font that should not be installed for general +access. + +@= +if odd(VAX_cli_present('TFM_DIRECTORY')) then + k:=VAX_cli_get_value('TFM_DIRECTORY',tfm_directory) +else + tfm_directory:='' + +@ At this point we ``read'' the font directory specifications passed as the +values of the qualifiers \.{/PXL\_FONT\_DIRECTORY} and +\.{/PK\_FONT\_DIRECTORY}. At least one of these must be provided with a +value. The specifications are transferred to the variables |tex_pxl_font| and +|tex_pk_font| respectively, and logical name translation is applied. If the +resultant string doesn't end with a `\.]', an error is signalled. If the +character \&{preceding} this bracket is `\..', the final `\.]' is discarded. + +@== +tex_pk_font:=''; tex_pxl_font:=''; +ask:=odd(VAX_cli_present('PK_FONT_DIRECTORY')); +if ask then +begin + VAX_cli_get_value('PK_FONT_DIRECTORY',tex_pk_font); + Translate(tex_pk_font,file_name); + if file_name[file_name.length] <> ']' then + abort('Bad /PK_FONT_DIRECTORY qualifier; doesn''t end with a `]'''); +@:fatal error Bad pk_font_directory}{\quad\.{Bad /PK_FONT_DIRECTORY qualifier}@> + pk_rooted := file_name[file_name.length-1] = '.'; +end; +if odd(VAX_cli_present('PXL_FONT_DIRECTORY')) then +begin + VAX_cli_get_value('PXL_FONT_DIRECTORY',tex_pxl_font); + Translate(tex_pxl_font,file_name); + if file_name[file_name.length] <> ']' then + abort('Bad /PXL_FONT_DIRECTORY qualifier; doesn''t end with a `]'''); +@:fatal error Bad pxl_font_directory}{\quad\.{Bad /PXL_FONT_DIRECTORY qualifier}@> + pxl_rooted := file_name[file_name.length-1] = '.'; + ask:=true; +end; +if not ask then abort('Where are the font directories? (/PK_FONT_DIRECTORY, etc)'); +@:fatal error Where are the font directories}{\quad\.{Where are the font directories?}@> + +@ Similarly, we determine the directory in which virtual font metrics are to +be found; if the qualifier \.{/VIRTUAL\UL DIRECTORY} is negated, then +virtual font support is explicitly suppressed. + +@== +tex_virtual:=''; +i := VAX_cli_present('VIRTUAL_DIRECTORY'); +no_virt_support := i = VAX_cli_negated; +if odd(i) then + VAX_cli_get_value('VIRTUAL_DIRECTORY',tex_virtual); + +@ The variable length string |tex_virtual| receives this definition. If +\.{/NOVIRTUAL\UL DIRECTORY} has been specified, this is recorded in +|no_virt_support|. + +@= +@!tex_virtual:file_spec; +@!no_virt_support:boolean; + +@ We now ask the Vax/VMS command-line interpreter to give us the file +specification furnished by the user to the command which invokes DVItoLN03. +The file is opened \.{readonly} to preclude any possibility of corrupting or +deleting it, and the \.{user\_action} paramter of the VAX-\PASCAL\ |open| +procedure is used, so that we can determine the full file specification and +length of the file, which is also opened for random (\.{direct}) access. + +We can't use |abort| for the fatal error reports, because the log file +hasn't yet been opened, so we define this instead: + +@d bomb_out(#)==begin write_ln(output,crlf,'Fatal error: ',#,crlf); jump_out end + +@= +def_file_name:=''; +ask:=odd(VAX_cli_get_value('FILESPEC',def_file_name)); +if not ask then bomb_out('No file name provided'); +@.No file name provided@> +@:fatal error no file name provided}{\quad\.{No file name provided}@> +open(dvi_file,def_file_name,@=readonly@>,@=access_method:=direct@>, + @=user_action@>:=file_open,@=default@>:='.DVI;0',VAX_continue); +ask:=status(dvi_file)<>0; dvi_size:=file_len; +if ask then bomb_out('Couldn''t open ',def_file_name); +@:fatal error couldn\'t open DVI}{\quad\.{Couldn't open .DVI file}@> +actual_file_spec:=def_file_name; + +@ The user has the option to specify an explicit file name on the \.{/LOG} +qualifier. If none is specified, or the qualifier is absent, the log file +will be created in the current directory, with the same name as the input +file and a file extension of `\.{.TYP}'. These are also the defaults used +if the relevant portion of the file specification is not given with the +\.{/LOG} qualifier. + +@= +log_file_name:=''; {Null name specified in case defaults required} +if odd(VAX_cli_present('LOG')) then + VAX_cli_get_value('LOG',log_file_name); + +@ After we've successfully opened the \.{DVI} file (and are thus assured that +it exists), we strip off any node, device or directory specification from the +front of the string, and also remove any trailing file type or version number +specification. This makes use of the VAX-\PASCAL\ |substr| function, but +could readily be recoded into standard \PASCAL. + +@= +cmd_j:=1; {Strip off any leading node, device or directory name} +for cmd_k:=1 to def_file_name.length do + if (def_file_name[cmd_k]=']') + or (def_file_name[cmd_k]=':') + or (def_file_name[cmd_k]='>') + then cmd_j:=cmd_k+1; +if cmd_j<=def_file_name.length then + def_file_name:=substr(def_file_name,cmd_j,def_file_name.length-cmd_j+1);@/ +cmd_j:=0; {and then strip off any trailing file type or version indication} +for cmd_k:=1 to def_file_name.length do + if (cmd_j=0) and @/ + ((def_file_name[cmd_k]='.') or (def_file_name[cmd_k]=';')) then + cmd_j:=cmd_k; +if cmd_j=0 then cmd_j:=def_file_name.length+1; +def_file_name:=substr(def_file_name,1,cmd_j-1); + +@ We now |open| the \.{TYP} file in the current directory, to act as a log +file for this run of DVItoLN03. The file is opened with |disposition:=save| +so that it will still `exist' even in the event of a crash; this means that the +user can interrupt the program (with Ctrl-Y) and be assured that the only +file that will be retained is the log. + +@= +file_name:=def_file_name+'.TYP'; +open(type_file,log_file_name,@=new@>,@=32767@>,@=disposition:=save@>, + @=default@>:=file_name,VAX_continue); +ask:=status(type_file)>0; +if ask then bomb_out('Couldn''t create ',file_name); +@:fatal error couldn\'t create TYP}{\quad\.{Couldn't create .TYP file}@> +rewrite(type_file); + +@ A particularly useful qualifier for those with limited disk quota is +\.{/OUTPUT}, which permits a user to specify a different output file +specification from the default, which is to open the output file in the +current directory with a name taken from the input (\.{.DVI}) file, and file +extension `\.{.LN3}'. Using this qualifier permits a user to divert the +output to a scratch disk. + +@= +output_file_name := ''; {Prepare to use the default name} +if odd(VAX_cli_present('OUTPUT')) then + VAX_cli_get_value('OUTPUT',output_file_name); + +@ Finally, we create and |open| the \.{LN3} file. Again this is opened with +|disposition:=delete|. + +@= +file_name := def_file_name+'.LN3'; +open(ln3_file,output_file_name,@=new@>,@=256@>,@=disposition@>:=@=delete@>, + @=carriage_control@>:=@=none@>, + @=default@>:=file_name,VAX_continue); +ask:=status(ln3_file)>0; +if ask then begin + abort('Couldn''t create ',file_name); +@:fatal error couldn\'t create LN3 file}{\quad\.{Couldn't create .LN3 file}@> + goto final_end +end; +rewrite(ln3_file); + +@ Whenever a binary file is opened, the optional |user_action| parameter is +provided to the call of the VAX-\PASCAL\ |open| procedure; this therefore +invokes the procedure |file_open| (in the next section) which is therefore +able to determine the full specification of the file opened, and also its +exact length; the former is placed into |def_file_name|, and the latter in +|file_len|. + +The following definitions permit more \PASCAL-like references to the VAX/RMS +data structures within |file_open| + +@d VAX_FAB_type == @=fab$type@> +@d VAX_RAB_type == @=rab$type@> +@d VAX_NAM_type == @=nam$type@> +@d VAX_XAB_type == @=xab$type@> +@d VAX_RMS_open == @=$OPEN@> +@d VAX_RMS_connect == @=$CONNECT@> +@d VAX_fab_to_nam == @=fab$l_nam@> {Pointer in FAB to NAM block} +@d VAX_nam_length == @=nam$b_rsl@> {Length of resultant file name} +@d VAX_nam_address == @=nam$l_rsa@> {and its whereabouts} +@d VAX_fab_to_xab == @=fab$l_xab@> {Pointer in FAB to first XAB} +@d VAX_xab_code == @=xab$b_cod@> {Byte in XAB which identifies its type} +@d VAX_xab_fhc == @=xab$c_fhc@> {XAB contains file header characteristics} +@d VAX_xab_next == @=xab$l_nxt@> {Pointer to another XAB} +@d VAX_end_block == @=xab$l_ebk@> {Number of file block containing EOF} +@d VAX_first_free == @=xab$w_ffb@> {First free byte in last block} + +@= +@!def_file_name : file_spec; +@!file_len : integer; + +@ Here is the procedure |file_open|, which determines the actual length of +the file being opened. It also extracts the full file specification of the +\.{DVI} which it opens, and reports this back in |def_file_name|. + +Vax/VMS uses RMS (Record Management Services) to handle file operations, and +this utilizes various structures, in particular, the FAB (File Access Block) +and the RAB (Record Access Block). There are also a number of different +XABs (eXtension Access Block), one of which contains the required +information relating to the size of the file. + +A |user_action| procedure such as this is invoked by the VAX-\PASCAL\ |open| +procedure after it has set up the FAB and RAB structures. The user is +therefore able at that time to change these structures to alter the processing +algorithms used by RMS. The file has \&{not}, however, been opened at that +time; it is necessary to call the RMS \.{\$OPEN} service. Once the RAB has +been completed to the user's satisfaction, the \.{\$CONNECT} service is called +to associate the file variable with the records of the file. + +Due to the nonsensical manner in which the |FAB|, etc., are declared in +\.{SYS\$LIBRARY:STARLET.PAS}, wherein the pointers to |XAB|s are declared +to be of type |unsigned|, it is necessary for us to use type casts +for assignments and usage as a pointer! + +@= +function file_open(var @!fab:VAX_FAB_type; var @!rab:VAX_RAB_type; + var @!f_spec:byte_file): integer; +type @!xab_ptr = ^VAX_XAB_type; + @!nam_ptr = ^VAX_NAM_type; + @!char_ptr = ^char; +var @!status:integer;@/ + @!nam : nam_ptr; + @!xab : xab_ptr; + @!actual_length : integer; + @!next : char_ptr; + @!i : integer; +begin file_len:=-1; {In case we can't determine actual file size} + status:=VAX_RMS_open(fab); {Fill in the FAB and RAB} + if odd(status) then + begin status:=VAX_RMS_connect(rab); {Link the RAB to RMS} + if odd(status) then + begin + nam:=fab.VAX_fab_to_nam::nam_ptr; + if nam<>nil then + begin + actual_length := nam^.VAX_nam_length; + def_file_name := ''; {Reset to empty} + next:=nam^.VAX_nam_address::char_ptr; + for i:=1 to actual_length do + begin + def_file_name := def_file_name + next^; + next:=(next::integer + 1)::char_ptr; + end; + end; + xab:=fab.VAX_fab_to_xab::xab_ptr; + {Find the File Header Characteristics} + while (xab<>nil) and (xab^.VAX_xab_code<>VAX_xab_fhc) do + xab:=xab^.VAX_xab_next::xab_ptr; + if xab<>nil then + with xab^ do + file_len:=int((VAX_end_block-1)*VAX_block_length+VAX_first_free); + end; + end; + file_open:=status; {Return success or failure} +end; {|file_open|} + +@ This function provides us with logical name translation. It utilizes the +\.{SYS\$TRNLNM} system service in preference to the obsolete \.{SYS\$TRNLOG}. + +On entry, any terminal `\.:' on the string |log_name| is discarded before +attempting logical name translation. If the latter succeeds, the translation +is written back to |equivalence_string| and the function returns |true|; if +translation fails, the original |log_name| is returned in |equivalence_string| and +|false| returned. + +It is necessary to provide the local variable |copy_name| during the +translation process, because VAX-\PASCAL\ does not permit the address of a +|var| parameter to be taken, so we cannot use |equivalence_string| to receive +the successive translations, and yet the address of the string must be passed +to the system service as the buffer to receive the translated logical name. +Similarly, we cannot use |log_name|, since that will be a local copy, so that +|string_size| will be that of the original logical name. + +The next macro is used to hide the VAX-\PASCAL\ conformant schema from W{\mc +EAVE}, and thus permit more meaningful formatting. + +@d VAX_conformant_schema(#)==VAX_volatile varying [#] of char +@# +@d VAX_trnlnm == @=$TRNLNM@> +@d VAX_lnm_case_blind==@= lnm$m_case_blind@> + +@== +function Translate(log_name : VAX_conformant_schema(string_size); + var equivalence_string : VAX_conformant_schema(buf_size) ) : boolean; + var @!i, @!status : integer; + @!copy_name : VAX_volatile file_spec; + @!return_length : VAX_volatile integer; + @!attributes : unsigned; + @!item_list : VAX_volatile array [0..1] of VMS_item_list; +begin + equivalence_string := log_name; {In case translation fails} + copy_name := log_name; + if copy_name[copy_name.length] = ':' then + decr(copy_name.length); + attributes := VAX_lnm_case_blind; + return_length := 0; + with item_list[0] do + begin + buffer_length := buf_size; + item_code := @=LNM$_STRING@>; + buffer_addr := @=iaddress@>(copy_name.body); + ret_len_addr := @=iaddress@>(return_length); + end; + item_list[1].next_item := 0; + status := VAX_trnlnm(attributes,'LNM$DCL_LOGICAL',copy_name,,item_list); + if not odd(status) then + Translate := false + else + begin + copy_name.length := return_length; + return_length := 0; + while odd(VAX_trnlnm(attributes,'LNM$DCL_LOGICAL',copy_name,,item_list)) do + begin + copy_name.length := return_length; + return_length := 0; + end; + Translate := true; + equivalence_string := copy_name; + end; +end; + +@ Here are the new types introduced within that function. Many Vax/VMS system +services make use of an |item_list| to pass information in and out. An +|item_list| consists of a number of |item_list| elements, with each element +containing the following fields: + +\centerline{\vtop{\offinterlineskip\hrule + \halign{\vrule#&\ \strut#\hfil\ &\ #\hfil\ &\ #\hfil\ &\vrule#\cr + height2pt&\omit&\omit&\omit&\cr + &\hfil Name & \hfil Type & \hfil Usage&\cr + height2pt&\omit&\omit&\omit&\cr + \noalign{\hrule} + height2pt&\omit&\omit&\omit&\cr + &|buffer_length| & 16-bit word & Size of buffer&\cr + &|item_code| & unsigned 16-bit word & Code for desired operation&\cr + &|buffer_address| & Pointer to char & Address of buffer&\cr + &|ret_len_addr| & Pointer to integer & To receive length of + translation&\cr + height2pt&\omit&\omit&\omit&\cr} + \hrule +}}\yskip + +\noindent This structure is overlaid with a single 32-bit integer whose use is +solely to hold the value zero indicating the end of the list. + +@== + @!VMS_item_list = + packed record + case boolean of + true: ( + @!buffer_length : sixteen_bits;@/ + @!item_code : sixteen_bits;@/ + @!buffer_addr : integer;@/ + @!ret_len_addr : integer); + false: ( + @!next_item : integer) + end; + +@* Index. +Pointers to error messages appear here together with the section numbers +where each ident\-i\-fier is used. diff --git a/dviware/ln03/rmcs/ginotosix.cld b/dviware/ln03/rmcs/ginotosix.cld new file mode 100644 index 0000000000..a68e935531 --- /dev/null +++ b/dviware/ln03/rmcs/ginotosix.cld @@ -0,0 +1,31 @@ + + define type SIZE + keyword WIDTH, + value(type=$number, default=0), + nonnegatable , + default + keyword HEIGHT, + value(type=$number, default=0), + nonnegatable, + default + + define verb GINOTOSIX + image TEX$EXE:GINOTOSIX.EXE + parameter P1, + label=INPUT_FILESPEC, + prompt="File", + value(type=$file, required) + qualifier SIZE, + value(list, type=SIZE), + nonnegatable, + default + qualifier SCALE, + value(default=0) + qualifier SEGMENT, + value(type=$number, default=0) + nonnegatable + qualifier OUTPUT, + value(type=$file), + nonnegatable + qualifier FORMFEED + negatable diff --git a/dviware/ln03/rmcs/ginotosix.for b/dviware/ln03/rmcs/ginotosix.for new file mode 100644 index 0000000000..a232e5e4e0 --- /dev/null +++ b/dviware/ln03/rmcs/ginotosix.for @@ -0,0 +1,159 @@ + IMPLICIT NONE +C +C PROGRAM DESCRIPTION: +C +C Converts a GINO SAVDRA file into a sixel file suitable for importing +C into TeX via the /special{SX filename} command +C +C AUTHORS: +C +C Sqn Ldr J P Baggott MBE MA CEng MIEE RAF +C +C CREATION DATE: 1 Dec 88 +C +C +C C H A N G E L O G +C +C Date | Name | Description +C ----------------+-------+----------------------------------------------------- +C +C +C + CHARACTER*4096 LINE !Line buffer + INTEGER*4 COUNT !Number of chars in line + INTEGER*4 START !Start of outpur line in buffer + INTEGER*4 ILLEGAL !Position of illegal sequence in buffer + INTEGER*4 STATE !Window state retuned by WINENQ + INTEGER*4 SEGMENT !Segment number in saved drawing + REAL*4 SAVEDWINDOW(4) !Window bounds of saved drawing + REAL*4 WIDTH !Desired width + REAL*4 HEIGHT !Desired height + REAL*4 SCALE !Desired scale factor + CHARACTER*255 INPUT !Name of input file + CHARACTER*255 OUTPUT !Name of output file + LOGICAL FORMFEED !Do we want a formfeed at the end of the + !file? + + COMMON/GINOTOSIX/INPUT,OUTPUT,WIDTH,HEIGHT,SCALE,SEGMENT,FORMFEED + +C Get the parameters from the command line + + CALL CLI + + CALL GINO + +C First use the dummy driver to find the window size of the saved drawing + + CALL DUMMY + + OPEN (UNIT=3, + 1 FILE = INPUT, + 1 STATUS = 'OLD', + 1 READONLY) + + CALL WINDOW(2) + + CALL GETDRA(3,SEGMENT,3,1) + CALL WINENQ(STATE,1,4,SAVEDWINDOW) + + CALL DEVEND + +C Now open the LN03 driver and set up the transformations to rotate the +C picture through 90 degrees and scale it to the user's desired size + + IF (HEIGHT.EQ.0.0) HEIGHT = SAVEDWINDOW(4)-SAVEDWINDOW(3) + IF (WIDTH.EQ.0.0) WIDTH = SAVEDWINDOW(2)-SAVEDWINDOW(1) + IF (SCALE.EQ.0.0) THEN + SCALE = WIDTH/(SAVEDWINDOW(2)-SAVEDWINDOW(1)) + SCALE = MIN(SCALE,HEIGHT/(SAVEDWINDOW(4)-SAVEDWINDOW(3))) + END IF + + OPEN (UNIT=1, + 1 FILE = 'GINOTOSIX.TMP', + 1 RECL = 4096, + 1 STATUS = 'NEW') + + OPEN (UNIT=3, + 1 FILE = INPUT, + 1 STATUS = 'OLD', + 1 READONLY) + + CALL LN03 + + CALL LINWID(0.2) + CALL WINDO2(0.0,HEIGHT,0.0,WIDTH) + CALL CHASWI(1) + CALL SCALE2(SCALE,SCALE) + CALL ROTAT2(90.0) + CALL SHIFT2(-SAVEDWINDOW(1),-SAVEDWINDOW(4)) + CALL GETPIC(3,SEGMENT) + CALL DEVEND + + CLOSE(3) + +C Next, open the sixel file produced by GINO, and prepare to filter it to +C remove c (printer reset), split lines longer than 256 bytes, and +C remove the FORTRAN carriage controls + + OPEN (UNIT=1, + 1 FILE = 'GINOTOSIX.TMP', + 1 STATUS = 'OLD', + 1 DISPOSE = 'DELETE') + + OPEN (UNIT=2, + 1 FILE = OUTPUT, + 1 ACCESS = 'SEQUENTIAL', + 1 CARRIAGECONTROL = 'NONE', + 1 FORM = 'FORMATTED', + 1 RECORDTYPE = 'VARIABLE', + 1 RECL = 256, + 1 STATUS = 'NEW') + +C Repeat until end-of-file + + DO WHILE (.TRUE.) + + READ (1,999,END=500) COUNT,LINE(1:COUNT) + +C Remove all occurences of c + + ILLEGAL = INDEX(LINE(1:COUNT),CHAR(27)//'c') + + DO WHILE (ILLEGAL.GT.0) + IF (ILLEGAL.EQ.COUNT-1) THEN + IF (COUNT.GT.2) LINE(1:COUNT-2) = LINE(1:ILLEGAL-1) + ELSE + LINE(1:COUNT-2) = LINE(1:ILLEGAL-1)//LINE(ILLEGAL+2:COUNT) + END IF + COUNT = COUNT-2 + IF (COUNT.GT.2) THEN + ILLEGAL = INDEX(CHAR(27)//'c',LINE(1:COUNT)) + ELSE + ILLEGAL = 0 + END IF + END DO + +C Split lines longer than 256 bytes + + START=1 + + DO WHILE (START.LE.COUNT.AND.COUNT.GT.0) + WRITE(2,998)LINE(START:MIN(START+255,COUNT)) + START = START+256 + END DO + + END DO + +500 IF (FORMFEED) WRITE(2,997) '0C'X + +C Close the files and exit + + CLOSE(1) + CLOSE(2) + + CALL GINEND + +997 FORMAT(A1) +998 FORMAT(A) +999 FORMAT(X,Q,A) + END diff --git a/dviware/ln03/rmcs/ginotosix.hlp b/dviware/ln03/rmcs/ginotosix.hlp new file mode 100644 index 0000000000..b43cca9140 --- /dev/null +++ b/dviware/ln03/rmcs/ginotosix.hlp @@ -0,0 +1,173 @@ +1 GINOTOSIX + +Take a GINO psuedo-code file (produced using the SAVDRA driver) and create +a sixel file in a format suitable for import into a LaTeX .LN3 file. The +default action is to produce an image the same size and scale as the saved +picture, using segment 0. The output filename is made from the supplied +file-spec, with a type of .SIX. See the GINO documentation for more +information on SAVDRA and picture segments, and the LaTeX user guides for +more information on LaTeX. + +Format: + + GINOTOSIX file-spec + +To import the image into a LaTeX document, the \documentstyle option +"graphics" should be used, and the command + + \gino(width,height){file-spec} + +inserted at the point where the image is wanted. `width' and `height' +MUST be specified explicitly as lengths, e.g. + + \gino(150mm,100mm){FRED.SIX} + +This program was written by Sqn Ldr Jon Baggott (2 MESE). As he has left +the college, any problems should be directed towards Brian Hamilton Kelly +(SEES). + +N.B. This command is NOT available by default; see Limitations below. + +2 Parameters + + +file-spec + + Specifies the name of the SAVDRA file. The default file type is .PIC + Wildcard characters are not allowed in the file specification. + + +2 Command_Qualifiers + + +/SIZE + + /SIZE=(option[,...]) + + Specifies the size (in millimetres) of the sixel image. If the qualifier + is not used, the default action is to copy the window size (or the paper + size if windowing is not in effect) of the saved picture segment. + + WIDTH:n specifies the width in mm of the sixel image. + Defaults to the saved width. + + HEIGHT:n specifies the height in mm of the sixel image. + Defaults to the saved height. + + If only one option is specified, the parentheses may be omitted. + + NOTE: if this qualifier is used in conjunction with the /SCALE + qualifier, the action is first to scale, then window the + image. If the /SCALE qualifier is not given, the image is + scaled to fit the size specified. + + +/FORMFEED + + /FORMFEED + /NOFORMFEED (default) + + Instructs GINOTOSIX to append a formfeed to the end of the sixel file. + This allows the output file to be queued direct to a LN03 laser printer + for previewing. A formfeed must NOT be included if the file is to be + included in a LaTeX document. + + +/SCALE + + /SCALE=x + + Scale the stored image by a factor of x. The default scale factor is 1.0. + + NOTE: if this qualifier is used in conjunction with the /SIZE + qualifier, the action is to first scale, then window the + image. If the /SIZE qualifier is not given, the stored size is + scaled to produce the image size. + + +/SEGMENT + + /SEGMENT=n + + Specifies the picture segment number in the SAVDRA file to use for + producing the image. The default value is 0. is not specified, the + maximum record length specified for the input file is used. + + +/OUTPUT + + /OUTPUT=output-file-spec + + Controls where the sixel file is written. The specification of + an output file is determined as follows: + + NODE - if the node is not specified, the current node is + used. + + DEVICE - if the device is not specified, the current default + device is used. + + DIRECTORY - if the directory is not specified, the current + default directory is used. + + NAME - if the file name is not specified or is an asterisk + wildcard, the name of the current input file is + used. + + TYPE - if the file type is not specified, or is an asterisk + wildcard, the type of the file is set to .SIX + + VERSION - if the file version is not specified or is an + asterisk wildcard, a version number of 0 is used. If + a file with the same name and version number exists, + GINOTOSIX will issue a (FORTRAN!) error message. + + + NOTE: Wildcard characters are not permitted in the directory + specification. + + +2 Limitations + +GINOTOSIX only becomes available by defining it as a DCL command. +To do this, you MUST execute the DCL command + + SET COMMAND TEX$EXE:GINOTOSIX + +(just once) some time before issuing the GINOtosix command. If you use +this facility regularly, you may care to put the SET COMMAND in your +LOGIN.COM file (somewhere after invoking @SYS$COM:LATEX). + + +GINOTOSIX was written in VAX FORTRAN and uses GINO routines. Some errors +are therefore trapped by FORTRAN or by GINO, rather than being handled +correctly. + +A scratch file is written and deleted in the default directory using the +name "GINOTOSIX.TMP". Write access to the current default directory is +therefore required. + + +2 Examples + + +1. $ GINOTOSIX FRED + +GINOTOSIX will read the file FRED.PIC, and produce a file FRED.SIX from +segment 0. The size of the sixel image will be the same as the saved +picture. + + +2. $ GINOTOSIX/SCALE=0.5/OUTPUT=DISK$SCRATCH:[FRED]GRAPH.INC FRED.GNO + +GINOTOSIX will read FRED.GNO, and produce a half-size image in +DISK$SCRATCH:[FRED]GRAPH.INC. + + +3. $ GINOTOSIX/SIZE=(WIDTH:150,HEIGHT:100) FRED/SEGMENT=1/FORMFEED + +GINOTOSIX will read segment 1 of FRED.PIC, and uniformly scale the image +to fit in a box 150mm wide and 100mm high. A formfeed will be appended to +the end of the output file (FRED.SIX). + + diff --git a/dviware/ln03/rmcs/graphics.sty b/dviware/ln03/rmcs/graphics.sty new file mode 100644 index 0000000000..8fe9618e5c --- /dev/null +++ b/dviware/ln03/rmcs/graphics.sty @@ -0,0 +1,27 @@ +%----------------------------------------------------------------------------- +% GRAPHICS.STY +% ~~~~~~~~~~~~ +% The actual macros defined by this are called \largeVT, etc; the `240' +% is actually part of the ``parameter template''. Dirty, but it works!! +% +% \gr@phins{sixel_file}{height}{width} +%----------------------------------------------------------------------------- +\def\gr@phins#1#2#3{{\hbox to#3{\vbox to#2{\special{ln03:sixel #1}\vfil}\hfil}}} + +\def\largeVT240#1{\gr@phins{#1}{3.2in}{5.33333in}} +\def\smallVT240#1{\gr@phins{#1}{1.6in}{2.66667in}} +\def\largeVis550#1{\gr@phins{#1}{3.90in}{5.12in}} +\def\smallVis550#1{\gr@phins{#1}{1.95in}{2.56in}} +\def\gino(#1,#2)#3{\gr@phins{#3}{#2\unitlength}{#1\unitlength}} + +% +%----------------------------------------------------------------------------- +% \MatlabPlot{sixel_file} +%----------------------------------------------------------------------------- +\def\MatlabPlot#1{\gr@phins{#1}{3.00in}{5.00in}} + +% +%----------------------------------------------------------------------------- +% \SixelPlot{sixel_file}{height}{width} +%----------------------------------------------------------------------------- +\def\SixelPlot#1#2#3{\gr@phins{#1}{#2}{#3}} diff --git a/dviware/ln03/rmcs/local.mf b/dviware/ln03/rmcs/local.mf new file mode 100644 index 0000000000..13d3452d17 --- /dev/null +++ b/dviware/ln03/rmcs/local.mf @@ -0,0 +1,187 @@ +% +%-------------------------------------------------------------------------- +% This file can be loaded after PLAIN.MF. +% It introduces conventions that are commonly used at RMCS. +%-------------------------------------------------------------------------- +base_version:=base_version&"/RMCS 08-AUGUST-1989"; + +% +%-------------------------------------------------------------------------- +% Define these for on-line graphics; necessary to set the VMS logical name +% MF$TERM to be one of the strings "go140", "tek" or "gp" to support +% the GraphOn, Tektronix or GraphicsPlus terminals, respectively. +% The following values are appropriate for Tektronix 4010 etc, +% since METAFONT doubles them before output as coordinates. +%-------------------------------------------------------------------------- +screen_rows:=336; screen_cols:=512; + + + +% +%-------------------------------------------------------------------------- +% Some new internal commands from TEXHAX26.88 +% +% Submitted by Charles R. LaBrec +% crl@maxwell.physics.purdue.edu +%-------------------------------------------------------------------------- +newinternal blacker_min; +def define_whole_blacker_pixels(text t) = + forsuffixes $=t: $:=hround($.#*hppp+blacker); + if $<=blacker_min-1: $:=blacker_min; fi endfor enddef; +def define_whole_vertical_blacker_pixels(text t) = + forsuffixes $=t: $:=vround($.#*hppp+blacker); + if $<=blacker_min-1: $:=blacker_min _o_; fi endfor enddef; +% +%-------------------------------------------------------------------------- +% +%-------------------------------------------------------------------------- +mode_def declnIII = % DEC LN03 (Ricoh, write white) + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=300; % rather obvious really + blacker:=0.2; % make pens a bit blacker +%blacker:=0.3; % From John Sauter TeXHAX V88 #07 +%blacker:=0.65; % he also gives this value, but bad for small fonts +%blacker:=0.4; % This value by BHK --- how's it look? + blacker_min:=2; % minimum width of 2 pixels +%fillin:=-0.2; % darken diagonals a bit +%fillin:=-0.4; % From Stan (?) UCB - TeXHAX V87.32 + fillin:=-0.6; % BHK is trying this huge value! + o_correction:=0.5; % don't overshoot as much +enddef; + +% +%-------------------------------------------------------------------------- +% +%-------------------------------------------------------------------------- +mode_def hpljII = % Hewlett Packard (Canon SX write white) + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=300; % rather obvious really + blacker:=0.2; % make pens a bit blacker + blacker_min:=2; % minimum width of 2 pixels + fillin:=-0.2; % darken diagonals a bit + o_correction:=0.5; % don't overshoot as much +enddef; + +% +%-------------------------------------------------------------------------- +% Epson FX-1000 dot matrix printer (240 x 216 dpi) +% From TUGboat 1987, vol 8, no 1, pp 29--33 +%-------------------------------------------------------------------------- +mode_def epson = % + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles at all + pixels_per_inch:=240; % Epson high resolution + blacker:=0; % Epson is black enough + blacker_min:=2; % minimum width of 2 pixels + fillin:=0; % Epson fills OK + o_correction:=.2; % Epson overshoots too much + aspect_ratio:=9/10; % Epson is actually 240 x 216 dpi +enddef; + +% +%-------------------------------------------------------------------------- +% +%-------------------------------------------------------------------------- +mode_def ibmnom = % ibm mode: for the IBM3812 nominal + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=240; + blacker:=.2; % (this value is conjectural) + blacker_min:=1; % minimum width of 1 pixel + fillin:=-0.1; % (ditto) + o_correction:=0.6; % (ditto) +enddef; + +% +%-------------------------------------------------------------------------- +% +%-------------------------------------------------------------------------- +mode_def ibmulf = % ibm mode: for the IBM3812 Ulf Holleberg + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=240; + blacker:=.4; % (this value is conjectural) + fillin:=-0.2; % (ditto) + o_correction:=0.4; % (ditto) +enddef; + +% +%-------------------------------------------------------------------------- +% +%-------------------------------------------------------------------------- +mode_def ibm = % ibm mode: for the IBM3820 + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=240; + blacker:=.78; % (this value is conjectural) + fillin:=0.25; % (ditto) + o_correction:=.5; % (ditto) +enddef; + + +% +%-------------------------------------------------------------------------- +% +%-------------------------------------------------------------------------- +mode_def ibmsch = % ibm PC screen for Arbortext's PREVIEW + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=118; % + blacker:=0; % let it be + blacker_min:=1; % minimum width of 1 pixel + fillin:=0; % and do not compensate for diagonal fillin + o_correction:=.2; % but don't overshoot much +enddef; + +% +%-------------------------------------------------------------------------- +% +%-------------------------------------------------------------------------- +mode_def ibmvga = % ibm PC screen fonts for DVIVGA + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=110; % + blacker:=0.3; % blacker pens + blacker_min:=1; % minimum width of 1 pixel + fillin:=0; % and do not compensate for diagonal fillin + o_correction:=0.0; % +enddef; + +% +%-------------------------------------------------------------------------- +% LAseventyfive mode: for DEC LA75 printer +%-------------------------------------------------------------------------- +% +mode_def declalxxv = + proofing:=0; % no, we're not making proofs + fontmaking:=1; % yes, we are making a font + tracingtitles:=0; % no, don't show titles in the log + pixels_per_inch:=144; % pixels per inch + blacker:=0.3; % blacker pens + blacker_min:=1; % minimum width of 1 pixel + fillin:=-0.1; % compensate for light diagonals + o_correction:=0.0 % overshoot +enddef; + + +% +%-------------------------------------------------------------------------- +% +%-------------------------------------------------------------------------- +mode_def laser = % A convenient synonym for DEC LN03 + declnIII_; +enddef; + +mode_def localfont = + declnIII_; +enddef; diff --git a/dviware/ln03/rmcs/local_guides.bib b/dviware/ln03/rmcs/local_guides.bib new file mode 100644 index 0000000000..5de407fd06 --- /dev/null +++ b/dviware/ln03/rmcs/local_guides.bib @@ -0,0 +1,306 @@ +% +% BibTeX Preamble Entries +% ~~~~~~~~~~~~~~~~~~~~~~~ +% +% Define the various special names such as TeX, LaTeX etc +% +% Use \defs, so we don't need to worry about whether to use +% \newcommand or \renewcommand. +% +@PREAMBLE{ "\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08emT\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} " + # "\def\SLiTeX{{\rm S\kern-.06em{\sc l\kern-.035emi}\kern-.06em T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} " + # "\def\DVItoVDU{DVIto\kern-.15em VDU} " + # "\newfont{\mf}{logo10}\def\MF{{\mf META}\-{\mf FONT}}" + # "\let\METAFONT=\MF" + # "\def\TB{TUGboat}" + } +% +% Some useful abbreviations +% +@STRING{TB = "TUGboat"} + +% +% +% BibTeX Reference Entries +% ~~~~~~~~~~~~~~~~~~~~~~~~ +% +% +@TECHREPORT{RMCS:dvilguide, + TITLE = "{DVILN03} {U}ser {G}uide", + AUTHOR = "Hamilton Kelly, Brian", + INSTITUTION = "School of Electrical Engineering \& Science", + ADDRESS = "Royal Military College of Science, Shrivenham, Swindon, + SN6~8LA", + YEAR = "1991", + MONTH = "February", + NOTE="(For DVILN03 Version 4.0)" + } + +@TECHREPORT{RMCS:dvitguide, + TITLE = "{\DVItoVDU} {U}ser {G}uide", + AUTHOR = "Kempson, Niel", + INSTITUTION = "School of Electrical Engineering \& Science", + ADDRESS = "Royal Military College of Science, Shrivenham, + Swindon, SN6~8LA", + YEAR = "1988", + MONTH = "July", + NOTE="(For {\DVItoVDU} Version 2.0)" + } + +@TECHREPORT{RMCS:VVcode, + AUTHOR = "Kempson, Niel", + TITLE = "{VVcode}: A new {E}ncoding {S}cheme for {D}ata {T}ransfer", + INSTITUTION = "School of Electrical Engineering \& Science", + ADDRESS = "Royal Military College of Science, Shrivenham, + Swindon, SN6~8LA", + YEAR = 1991} +% <>... + +@TECHREPORT{RMCS:latexguide, + TITLE = "{\LaTeX} {U}ser {G}uide for the {{\sl VAXen\/}} at {RMCS}", + AUTHOR = "Kempson, Niel and {Hamilton Kelly}, Brian", + INSTITUTION = "School of Electrical Engineering \& Science", + ADDRESS = "Royal Military College of Science, Shrivenham, Swindon, + SN6~8LA", + YEAR = "1988", + MONTH = "July", + NOTE="(Second Edition)" + } + +@TECHREPORT{RMCS:lseguide, + TITLE = "Using {{\sc LSEdit}} with {\LaTeX} and {\BibTeX} at {RMCS}", + AUTHOR = "Kempson, Niel", + INSTITUTION ="School of Electrical Engineering \& Science", + ADDRESS = "Royal Military College of Science, Shrivenham, Swindon, + SN6~8LA", + NOTE = "(Adapted from a guide produced by Lear Siegler, Inc., Grand + Rapids, Michigan)", + YEAR = "1988", + MONTH = "May" + } + +@MANUAL {DEC:dcl, + TITLE = "Guide to Using {DCL} and Command Procedures on + {\sl {VAX/VMS}}", + ORGANIZATION = "Digital Equipment Corporation", + NOTE = "AA-Y501A-TE", + ADDRESS = "Maynard, MA", + YEAR = "1984", + MONTH = "September" + } + +@MANUAL {DEC:dcl-concepts, + TITLE = "{\sl {VAX/VMS\/}} {DCL} Concepts Manual", + ORGANIZATION = "Digital Equipment Corporation", + NOTE = "AA-LA10A-TE", + ADDRESS = "Maynard, MA", + YEAR = "1988", + MONTH = "April" + } + +@MANUAL{DEC:FontFileFormat, + TITLE = "Font File Format User Manual", + ORGANIZATION = "Digital Equipment Corporation", + EDITION = "{Revision 0.10}", + MONTH = "September", + YEAR = "1985", + NOTE = "(Version 1, Variant 0)" + } + +@MANUAL{DEC:LN03, + TITLE = "LN03 Programmers' Reference Manual", + ORGANIZATION = "Digital Equipment Corporation", + EDITION = "second", + MONTH = Nov, + YEAR = 1985, + NOTE = "EK-OLN03-RM-002" + } + +@MANUAL {DEC:LSE, + TITLE = "Guide to {\sl {VAX}\/} Language-Sensitive Editor and + {\sl {VAX\/}} Source Code Analyzer", + ORGANIZATION = "Digital Equipment Corporation", + NOTE = "AI-FY24B-TK", + ADDRESS = "Maynard, MA", + YEAR = "1987", + MONTH = "August" + } + +@BOOK {knuth:texbook, + AUTHOR = "Knuth, Donald Erwin", + TITLE = "The {\TeX}book", + PUBLISHER = "Addison-Wesley", + YEAR = 1984, + MONTH = "October", + NOTE = "ISBN 0-201-13448-9" + } + +@BOOK {lamport:latexbook, + TITLE = "{\LaTeX}{\rm :} A Document Preparation System", + AUTHOR = "Lamport, Leslie", + PUBLISHER = "Addison-Wesley", + NOTE = "ISBN 0-201-15790-X", + YEAR = "1986" + } + +@BOOK {knuth:ACP1, + AUTHOR = "Donald Erwin Knuth", + TITLE = "The Art of Computer Programming", + PUBLISHER = "Addison-Wesley Publishing Company", + YEAR = "1982", + VOLUME = "1 / Fundamental Algorithms", + EDITION = "2nd", + NOTE = "ISBN 0-201-03809-9" + } + +@BOOK {knuth:ACP2, + AUTHOR = "Donald Erwin Knuth", + TITLE = "The Art of Computer Programming", + PUBLISHER = "Addison-Wesley Publishing Company", + YEAR = "1982", + VOLUME = "2 / Seminumerical Algorithms", + EDITION = "2nd", + NOTE = "ISBN 0-201-03822-6" + } + +@BOOK {knuth:ACP3, + AUTHOR = "Donald Erwin Knuth", + TITLE = "The Art of Computer Programming", + PUBLISHER = "Addison-Wesley Publishing Company", + YEAR = "1982", + VOLUME = "3 / Sorting and Searching", + EDITION = "2nd", + NOTE = "ISBN 0-201-03803-X" + } +@BOOK{knuth:CAT-A, + AUTHOR = "Donald Erwin Knuth", + TITLE = "Computers \& Typesetting", + PUBLISHER = "Addison-Wesley Publishing Company", + YEAR = 1986, + VOLUME = "A --- The {\TeX}book", + NOTE = "ISBN 0-201-13447-0 (A uniform edition of \cite{knuth:texbook})" + } +@BOOK{knuth:CAT-B, + AUTHOR = "Donald Erwin Knuth", + TITLE = "Computers \& Typesetting", + PUBLISHER = "Addison-Wesley Publishing Company", + YEAR = 1986, + VOLUME = "B --- {\TeX}: The Program", + NOTE = "ISBN 0-201-13437-3" + } +@BOOK{knuth:CAT-C, + AUTHOR = "Donald Erwin Knuth", + TITLE = "Computers \& Typesetting", + PUBLISHER = "Addison-Wesley Publishing Company", + YEAR = 1986, + VOLUME = "C --- The {\MF}book", + NOTE = "ISBN 0-201-13445-4" + } +@BOOK{knuth:CAT-D, + AUTHOR = "Donald Erwin Knuth", + TITLE = "Computers \& Typesetting", + PUBLISHER = "Addison-Wesley Publishing Company", + YEAR = 1986, + VOLUME = "D --- {\MF}: The Program", + NOTE = "ISBN 0-201-13438-1" + } +@BOOK{knuth:CAT-E, + AUTHOR = "Donald Erwin Knuth", + TITLE = "Computers \& Typesetting", + PUBLISHER = "Addison-Wesley Publishing Company", + YEAR = 1986, + VOLUME = "E --- Computer Modern Typefaces", + NOTE = "ISBN 0-201-13446-2" + } +@ARTICLE{TUGboat-LN03, + AUTHOR = "Barbara Beeton", + TITLE = "Update: {\MF} {\tt mode\_def} Settings for Various {\TeX} + Output Devices", + JOURNAL = "TUGboat, the \TeX\ Users Group Newsletter", + YEAR = 1987, + VOLUME = 8, + NUMBER = 2, + PAGES = "132--3", + MONTH = nov, + NOTE = "(Values provided by Stan Osborne)" + } +@ARTICLE{TUGboat-DVI, + AUTHOR = "Fuchs, David", + TITLE = "The {F}ormat of {\TeX's} {{\tt DVI}} {F}iles", + JOURNAL = "\TB", + YEAR = 1982, + VOLUME = 3, + NUMBER = 2, + PAGES = "14--19", + MONTH = oct + } +@ARTICLE{TUGboat-GF, + AUTHOR = "{({\it Anon.})}", + TITLE = "Generic {F}ont {F}ile {F}ormat", + JOURNAL = "\TB", + YEAR = 1985, + VOLUME = 6, + NUMBER = 1, + PAGES = "8--11", + MONTH = mar + } +@ARTICLE{TUGboat-PK, + AUTHOR = "Rokicki, Tomas", + TITLE = "Packed {({\tt PK})} {F}ont {F}ile {F}ormat", + JOURNAL = TB, + YEAR = 1985, + VOLUME = 6, + NUMBER = 3, + PAGES = "115--120", + MONTH = Nov + } +@ARTICLE{TUGboat-PXL, + AUTHOR = "Fuchs, David", + TITLE = "The {F}ormat of {{\tt PXL}} {F}iles", + JOURNAL = TB, + YEAR = 1981, + VOLUME = 2, + NUMBER = 3, + PAGES = "8--12", + MONTH = nov + } +@ARTICLE{TUGboat-TFM, + AUTHOR = "Fuchs, David", + TITLE = "{\TeX} {F}ont {M}etric {F}iles", + JOURNAL = TB, + YEAR = 1981, + VOLUME = 2, + NUMBER = 1, + PAGES = "12--16", + MONTH = feb + } +@ARTICLE{TUGboat-VF, + AUTHOR = "Knuth, Donald Erwin", + TITLE = "Virtual {F}onts: {M}ore {F}un for {G}rand {W}izards", + JOURNAL = TB, + YEAR = 1990, + VOLUME = 11, + NUMBER = 1, + PAGES = "13--23", + MONTH = Apr + } +@ARTICLE{TeX3, + AUTHOR = "Knuth, Donald Erwin", + TITLE = "The new versions of {\TeX} and {\MF}", + JOURNAL = TB, + YEAR = 1989, + VOLUME = 10, + NUMBER = 3, + PAGES = "325--328", + MONTH = Nov + } +@ARTICLE{Hosek, + AUTHOR = "Hosek, Don", + TITLE = "Report from the {{\tt DVI}} {D}river {S}tandards {C}ommittee", + JOURNAL = TB, + YEAR = 1990, + VOLUME = 11, + NUMBER = 4, + PAGES = 570, + MONTH = Nov + } diff --git a/dviware/ln03/rmcs/openclose.six b/dviware/ln03/rmcs/openclose.six new file mode 100644 index 0000000000..445a805f4c --- /dev/null +++ b/dviware/ln03/rmcs/openclose.six @@ -0,0 +1,103 @@ +[7 IP9;0;2q +-~!766@~ +-~!766?~ +-~!368?K!4AcW!188?o!4GO_!19?w!13?o!5Go!19?w!33?o!5GO!25?w!70?~ +-~!368?ogca`__!14?w!112?w!61?_OGCA@!3?}C!4A{!3?{!4AC~!13?~!5?~!4?}C!3AC!3?{!4AC~!3?{!5Q[!4?}C!3AC!13?B!5Cw!3?}!3?_}!4?K!5Q_!3?AA~AA!5?{!5Q[!3?{ACWCA{!46?~ +-~!389?~!112?~!60?B!6A!3?B!5?B!3?@!4A@B!13?@!5A@!4?B!8?@!4A@B!3?@!5A!5?B!18?@!5A@!3?G!3PON!5?!5A@!5?@AA@!4?@!5A!4?B!5?B!46?~ +-~!38?}!5@}!3?o_!4O_!3?_!5O_!3?o_!4O_!13?~!9?_!5O_!3?_!5O_!3?o_!4O_!13?~!4`@@!4?o_!3O_!3?_!5O_!3?_!4O_o!3?o!4?o!4?_!5O_!3?o_!4O_!4?_!4O_!3?o!4?o!14?~!5`]!3?_!5O_!3?_!5O!4?o_!4O_!3?_!5O_!3?o_!4O_!3?_!5O!4?_!5O_!74?~!45?{A!4@E!5?@~!6?_!5O_!3?_!5O!4?_!5O_!3? +_!4O_~!10?~??~!9?_!5O_!3?_!5O_!3?o_!4O_!13?~!4`@@!4?o_!3O_!3?_!5O_!3?_!4O_o!3?o!4?o!4?_!5O_!3?o_!4O_!4?_!4O_!3?o!4?o!14?~!5`]!3?_!5O_!3?_!5O!4?o_!4O_!3?_!5O_!3?o_!4O_!3?_!5O!4?_!5O_!34?~ +-~!38?N!5ON!3?~N!4ON!3?N!5QB!3?^!5?^!13?^!6O!3?N!5ON!3?N!5ON!3?~N!4ON!13?^!10?^!8?N!5QB!3?N!4ON~!3?N!4ONO!3?N!5QB!3?^!5?^!3?FG!4OG!3?F!3GC~!14?^?@ACGO!3?N!5QB!3?@!5QK!3?~N!4ON!3?N!5ON!3?^!5?^!3?@!5QK!3?N!5QB!74?~!45?FG!4OK!5?O^O!5?N!5ON!3?@!5QK!3?N!5QB!3? +N!4OG^!10?~??^!6O!3?N!5ON!3?N!5ON!3?~N!4ON!13?^!10?^!8?N!5QB!3?N!4ON~!3?N!4ONO!3?N!5QB!3?^!5?^!3?FG!4OG!3?F!3GC~!14?^?@ACGO!3?N!5QB!3?@!5QK!3?~N!4ON!3?N!5ON!3?^!5?^!3?@!5QK!3?N!5QB!34?~ +-~!48?B!69?B!55?B!12?o!30?@!4A@!38?{!5?B!120?~!112?~!32?B!55?B!43?@!4A@!44?B!80?~ +-~!187?~!74?~!126?~!87?__OOGCC!9AC!3GO_!3?~!263?~ +-~!37?~!36_~!37_~!36_~!37_~!36_~!37_~!15_!111?~!80?__OGCA@!22?@AC~O_!261?~ +-~!37?^!36?^!37?^!36?^!37?~!36?^!19?_OO!3GKcuyj\NJD~ZF~!126?~!74?oGCCA@!32?~?@ACGO_!256?~ +-~!187?~!45?__OGGKEA!3@?_OwGKFB@!3?_WE~??~!30?}CGoGC}!4?!5_!5?!4_?o!3?_?!4_!6?_e!6?__}__!5?_!4?_!5?!4_?}!4?!5_!10?~!67?_WCCAA@!38?~!6?@AKO_!252?~ +-~!187?Fw!37?_OGKCA@@??__OGGCA`\E@@!6?oKB??~?~~!30?~!5?~!3?W!5c~!3?N!4O~!4?~@!4?~!4?__~__!6?^__O!4?^!4_^_!3?^!4_P~!3?^!5cF!9?~!59?__OGCAA@@!44?~!10?@EGo!249?~ +-~!188?@Fw!28?_WGCE@@??_OOGCCA@!5?{B@!7?oKB!5?~?~~!50?A!4CB!70?~!50?__OGCCAA@!53?~!14?@EGo!245?~ +-~!190?@Ew!20?oGCCB@?_OGGCAA@!10?wM@!7?_[B!8?~?~~!107?_o!17?~!38?__O!4GCAA@@!62?~!18?@EGO_!240?~ +-~!193?BKO_!10?_OGCaPOGCCA@@!16?oKB!6?_WE@!10?~?~~!106?@?~!17?~!16?!5_!4O!5GCCAA!4@!74?~!22?@AKO_!236?~ +-~!196?@EGo??_oWKJCAA@!24?}@!6?wE@!10?!3@~~@~!5@!101?CCFCC!15?~BBFFJRb!33B!9D!11H!3P!4`!45@~!27@BLP``!193@!38?~ +-~!197?_WCBBLO_!28?_[B!4?oKB!16?~~?~!126?~!7?@AKO_!55?!5@AACC!5GOO__!27?~!32?@ACGo!226?~ +-~!192?_OGCA@!6?@BKGW_!22?wF!3?oKB!19?~~?~!126?~!12?@AKo!69?!4@AAC!4GOO__!12?~!37?@EGO_!221?~ +-~!188?_OKA@!17?@ACGGO_!14?_^?_WF!22?~~?~!126?~!16?BCW_!80?!3@AC!5GO_~!42?@@ACGO_!214?~ +-~!184?_OKA@!28?@@AEGGW__!5?~WE@!24?~B?~!126?~!20?@ACGO_!86?~@!3ACCGGOO!3_!36?@ACCGOO_!206?~ +-~!181?_WE@!41?!3@B}D!4GOO__!19?~??~!126?~!25?@ACGO_!81?~!13?@@AACC!3GOO__!31?@AACCGOO_!197?~ +-~!178?_WE@!47?}@!9?!7@!4A!8C~CC~!9C!3A!114?~!31?@AACGO__!73?~!26?!4@AAC!4G!3O__!24?@!3ACCGGOO_!186?~ +-~!175?_WE@!50?~!29?~??~!126?~!39?@@ACGGOO__!63?~!42?!4@!3ACC!4G!3O!4_!15?!4@AAC!4GOO__!171?~ +-~!171?_OKB!54?~!29?~??~!126?~!49?!3@AC!5GOO__!49?~!62?!5@AA!4C!7GOO!5_!5?!5@AACC!7GOO__!151?~ +-~!168?_WE@!56?}@!29?~??~!126?~!63?!4@AA!3C!6G!5O!4_!25?~!87?!7@!4A!5C!9G!4P!3`!4aA!4C!7G!4O!7_!117?~ +-~!166?wE@!58?_^!30?~??~!126?~!87?!9@!5A!7C!4G~!8G!7O!10_!98?!11@!7A!5CDD!7H!6I!5KSS!7W!9g!9O!9_!61?~ +-~!163?oKB!61?~!31?~??~!126?~!112?~!25?!22@!14A!18C!42G!29O!34_!4`!21@!13B@@!39?~ +-~!160?_WF!64?~!28?!3G~GG~!5G!121?N!112G~!188G!36HG!38?~ +-~!158?_[B!65?oN!31?~??~!239?~!263?~ +-~!156?oM@!67?~!32?~??~!239?~!4?CA~!105?E!3@`QK!43?~??_??~!6?_OGF!3?~??_??~!3?o_!4O_!26?A@@!3`]!31?~ +-~!154?WE@!69?N!32?F??~!239?~!4?OO^OO!103?WSQP!3O!43?FWE@EWF!3?[A@!7?FWE@EWF!3?^!5?^!26?G!5ON!31?~ +-~!262?~!239?~!263?~ +-~!262?~!105?_OGCGO_!127?~!263?~ +-~!256?!6_~!5_!100?NO_?_ON!14?!113_~!225_!38?~ +-~!262?~!108?@!17?~FXbDHIQQacCC!4G!5O__!89?~!263?~ +-~!262?~!126?~??@EW_!4?!4@ACGGOO__?!4@!3ACC!7GOO__!69?~!263?~ +-~!262?~!126?~!5?@EW_!13?@AACCGGO_!12?@@!3ACC!4GO__!55?~!263?~ +-~!262?~!126?~!8?@EW_!19?@@AACCGOO_!16?@@AACCGGOO_!44?~!263?~ +-~!262?~!126?~!12?BCW_!25?!3@AACGGO_!17?@AACCGO_!36?~!263?~ +-~!262?~!126?~!16?BCW_!31?@@AACGGO_!16?@@ACGGO_!28?~!263?~ +-~!256?!6@~!5@!121?~!20?@@ACGO_!33?@@AACGGOO_!14?@EGO_!23?~!263?~ +-~!262?~!126?~!27?@ACCGOO_!35?@@AACGOO_!10?@@ACGo!17?~!263?~ +-~!262?~!126?~!35?!3@AACGGOO!3_!31?@@AACGOO_!7?@EGOO_!11?~!263?~ +-~!262?~!126?~!48?!4@AA!3C!4G!4O__!21?@@AAC!3GO__??BCW_!7?~!263?~ +-~!262?~!84?!7_!3?]!4`Q{!3?wCA@ACw!15?~!67?!7@!4A!5C!7G!6O!3_``ACGGPQcgO_?~!263?~ +-~!262?~!94?G!4OGF!3?BCGOGCB!15?~!112@~NzJJTTd!3D!15H!6P!7`!187@!38?~ +-~!256?!6CF!5C!121?~!112?~??@ACGO`@@ACC!4GO_!19?!16@!7A!9C!18G!9O!9_!157?~ +-~!389?~!112?~!8?@ACGO_!5?!5@AC!5GOO__!71?!20@!8A!11C!23G!11O!11_!73?~ +-~!323?{!5Cw!3?{!55?~!112?~!14?@AACGO__!13?!5@AACC!5GOO__!137?!23@!11A!39?~ +-~!323?~!5A@!3?~A!4@}!3?o!5H}!3?E!5Ho!3?}!5HM!19?~!112?~!22?@@ACGGO__!22?!5@AA!4C!5G!4O!3_!187?~ +-~!323?@??_!6?@!5?@!4?!6@!4?!5@!5?!5@!20?~!112?~!31?@@AACGGOO!3_!33?!6@!5A!4C!7G!5O!4_!156?~ +-~!326?~!10?!5Go!3?o!4GoK!36?~!112?~!43?!4@AC!5GOO__!49?!9@!7A!4C!12G!6O!8_!110?~ +-~!326?N!6G!3?E!5HN!3?b!4C~!37?~!112?~!58?!7@AA!5C!7GOO!4_!68?!13@!9A!9C!18G!9O!11_!41?~ +-~!347?!4@!38?~!112?~!85?!12@!4A!7C!11G!9O!9_!126?~ +-~!351?_!7?!5_!7?_!17?~!112?~!137?!20@!11A!13C!34G!9O!39?~ +-~!338?!7O!4?A@~!6?n!5On!3?{A@?@A{!14?~!112?~!263?~ +-~!349?GGNGG!4?F!5GF!3?@ACGCA@!14?F!112?F!263?~ +-~!38?W!4CGo!721?~ +-~!38?_OGCA@!30?!601_!91?~ +-~!38?!7@!721?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!182?__!3O!4G!3C!15A!5C!6GO!3_!542?~ +-~!173?_O!3GE!3@!42?!3@AA!3C!3GO__!528?~ +-~!166?oGGCA@@!65?!3@ACC!3Go!518?~ +-~!160?oGGE@@!82?!3@AAC!3GOO_!506?~ +-~!39?CA~!75?!9_!28?_OGE@@!100?!3@AAC!3GOO_!183?!8_!303?~ +-~!39?OO^OO!30?w!33GwGGKI!4H!9G!8H!5I!6K!4GggWKIH!9G!11g!16W!81G!3HIIK!3GWW!3g!109G!3g!5W!10G!6K!8I!28H!8G!37H!11I!12K!31G!75W!46G!91?~ +-~!74?~!28?_WCA@!25?!3_!3O!6GcSKB!3A!12@!122?!3@!3AC!6GOO!4_!56?!4_!5O!9G!3C!4A!9@!371?~ +-~!74?~!25?_WE@!16?__O!3GCCAAB@@!8?_WE@!160?!8@!6A!24C!7A!11@!405?~ +-~!74?~!23?wE@!12?oGGCAA@!17?oGE@!625?~ +-~!74?~!20?_WF!9?oGGE@@!20?oGCB!629?~ +-~!74?~!19?wF!5?_OGE@@!23?wE@!633?~ +-~!74?~!17?{B!3?_WCA@!24?_OKB!636?~ +-~!74?~!15?_]@_OKA@!24?_OKB!640?~ +-~!74?~!14?{bWE@!25?oKA@!643?~ +-~!74?~!12?_}F@!24?_WE@!647?~ +-~!74?~!10?_{B!23?oGE@!651?~ +-~!74?~!8?ok^@!20?oGCB!655?~ +-~!74?~!6?oM|B!17?_OKA@!659?~ +-~!74?~!4?oNoN!13?__WCCB!664?~ +-~!74?~??oKrN!9?__WGKB!670?~ +-~!74?~okZE@?__O!3GCCB!676?~ +-~!37?!638@!91?~ +-~!600?!3Gw!3G!6?W!56?GO_!93?~ +-~!603?~!8?A}!6?{ACWCA{!3?{!5Q[!13?!7C!3?!7C!5?_PIC!90?~ +-~!75?!3C{!3C!46?K!28?{!17?{!5Cw!421?B!7?AABAA!4?B!5?B!3?@!5A!34?A@!94?~ +-~!78?~!7?~A!3@A!3?o!5H}!3?~A!4@}!3?E!5Ho!5?@~!6?}!5HM!3?~A!4@}!3?@@~@@_!14?~AEIQa@!3?}!5HM!3?E!5Ho!3?~}!4@}!3?}!5@}!3?~A!4@}!3?E!5Ho!3?}!5HM!514?~ +-~!78?@!7?@!9?!6@!3?@!5?@!4?!5@!5?!5@!5?!5@!4?@!5?@!6?@@!15?@!5?@!4?!5@!5?!5@!4?N?!4@!5?!5@!4?@!5?@!4?!5@!5?!5@!515?~ +-F!766CF +\ + diff --git a/dviware/ln03/rmcs/openclose.small b/dviware/ln03/rmcs/openclose.small new file mode 100644 index 0000000000..93daa15afe --- /dev/null +++ b/dviware/ln03/rmcs/openclose.small @@ -0,0 +1,103 @@ +[7 IP9;0;1q +~!766@~ +-~!766?~ +-~!368?K!4AcW!188?o!4GO_!19?w!13?o!5Go!19?w!33?o!5GO!25?w!70?~ +-~!368?ogca`__!14?w!112?w!61?_OGCA@!3?}C!4A{!3?{!4AC~!13?~!5?~!4?}C!3AC!3?{!4AC~!3?{!5Q[!4?}C!3AC!13?B!5Cw!3?}!3?_}!4?K!5Q_!3?AA~AA!5?{!5Q[!3?{ACWCA{!46?~ +-~!389?~!112?~!60?B!6A!3?B!5?B!3?@!4A@B!13?@!5A@!4?B!8?@!4A@B!3?@!5A!5?B!18?@!5A@!3?G!3PON!5?!5A@!5?@AA@!4?@!5A!4?B!5?B!46?~ +-~!38?}!5@}!3?o_!4O_!3?_!5O_!3?o_!4O_!13?~!9?_!5O_!3?_!5O_!3?o_!4O_!13?~!4`@@!4?o_!3O_!3?_!5O_!3?_!4O_o!3?o!4?o!4?_!5O_!3?o_!4O_!4?_!4O_!3?o!4?o!14?~!5`]!3?_!5O_!3?_!5O!4?o_!4O_!3?_!5O_!3?o_!4O_!3?_!5O!4?_!5O_!74?~!45?{A!4@E!5?@~!6?_!5O_!3?_!5O!4?_!5O_!3? +_!4O_~!10?~??~!9?_!5O_!3?_!5O_!3?o_!4O_!13?~!4`@@!4?o_!3O_!3?_!5O_!3?_!4O_o!3?o!4?o!4?_!5O_!3?o_!4O_!4?_!4O_!3?o!4?o!14?~!5`]!3?_!5O_!3?_!5O!4?o_!4O_!3?_!5O_!3?o_!4O_!3?_!5O!4?_!5O_!34?~ +-~!38?N!5ON!3?~N!4ON!3?N!5QB!3?^!5?^!13?^!6O!3?N!5ON!3?N!5ON!3?~N!4ON!13?^!10?^!8?N!5QB!3?N!4ON~!3?N!4ONO!3?N!5QB!3?^!5?^!3?FG!4OG!3?F!3GC~!14?^?@ACGO!3?N!5QB!3?@!5QK!3?~N!4ON!3?N!5ON!3?^!5?^!3?@!5QK!3?N!5QB!74?~!45?FG!4OK!5?O^O!5?N!5ON!3?@!5QK!3?N!5QB!3? +N!4OG^!10?~??^!6O!3?N!5ON!3?N!5ON!3?~N!4ON!13?^!10?^!8?N!5QB!3?N!4ON~!3?N!4ONO!3?N!5QB!3?^!5?^!3?FG!4OG!3?F!3GC~!14?^?@ACGO!3?N!5QB!3?@!5QK!3?~N!4ON!3?N!5ON!3?^!5?^!3?@!5QK!3?N!5QB!34?~ +-~!48?B!69?B!55?B!12?o!30?@!4A@!38?{!5?B!120?~!112?~!32?B!55?B!43?@!4A@!44?B!80?~ +-~!187?~!74?~!126?~!87?__OOGCC!9AC!3GO_!3?~!263?~ +-~!37?~!36_~!37_~!36_~!37_~!36_~!37_~!15_!111?~!80?__OGCA@!22?@AC~O_!261?~ +-~!37?^!36?^!37?^!36?^!37?~!36?^!19?_OO!3GKcuyj\NJD~ZF~!126?~!74?oGCCA@!32?~?@ACGO_!256?~ +-~!187?~!45?__OGGKEA!3@?_OwGKFB@!3?_WE~??~!30?}CGoGC}!4?!5_!5?!4_?o!3?_?!4_!6?_e!6?__}__!5?_!4?_!5?!4_?}!4?!5_!10?~!67?_WCCAA@!38?~!6?@AKO_!252?~ +-~!187?Fw!37?_OGKCA@@??__OGGCA`\E@@!6?oKB??~?~~!30?~!5?~!3?W!5c~!3?N!4O~!4?~@!4?~!4?__~__!6?^__O!4?^!4_^_!3?^!4_P~!3?^!5cF!9?~!59?__OGCAA@@!44?~!10?@EGo!249?~ +-~!188?@Fw!28?_WGCE@@??_OOGCCA@!5?{B@!7?oKB!5?~?~~!50?A!4CB!70?~!50?__OGCCAA@!53?~!14?@EGo!245?~ +-~!190?@Ew!20?oGCCB@?_OGGCAA@!10?wM@!7?_[B!8?~?~~!107?_o!17?~!38?__O!4GCAA@@!62?~!18?@EGO_!240?~ +-~!193?BKO_!10?_OGCaPOGCCA@@!16?oKB!6?_WE@!10?~?~~!106?@?~!17?~!16?!5_!4O!5GCCAA!4@!74?~!22?@AKO_!236?~ +-~!196?@EGo??_oWKJCAA@!24?}@!6?wE@!10?!3@~~@~!5@!101?CCFCC!15?~BBFFJRb!33B!9D!11H!3P!4`!45@~!27@BLP``!193@!38?~ +-~!197?_WCBBLO_!28?_[B!4?oKB!16?~~?~!126?~!7?@AKO_!55?!5@AACC!5GOO__!27?~!32?@ACGo!226?~ +-~!192?_OGCA@!6?@BKGW_!22?wF!3?oKB!19?~~?~!126?~!12?@AKo!69?!4@AAC!4GOO__!12?~!37?@EGO_!221?~ +-~!188?_OKA@!17?@ACGGO_!14?_^?_WF!22?~~?~!126?~!16?BCW_!80?!3@AC!5GO_~!42?@@ACGO_!214?~ +-~!184?_OKA@!28?@@AEGGW__!5?~WE@!24?~B?~!126?~!20?@ACGO_!86?~@!3ACCGGOO!3_!36?@ACCGOO_!206?~ +-~!181?_WE@!41?!3@B}D!4GOO__!19?~??~!126?~!25?@ACGO_!81?~!13?@@AACC!3GOO__!31?@AACCGOO_!197?~ +-~!178?_WE@!47?}@!9?!7@!4A!8C~CC~!9C!3A!114?~!31?@AACGO__!73?~!26?!4@AAC!4G!3O__!24?@!3ACCGGOO_!186?~ +-~!175?_WE@!50?~!29?~??~!126?~!39?@@ACGGOO__!63?~!42?!4@!3ACC!4G!3O!4_!15?!4@AAC!4GOO__!171?~ +-~!171?_OKB!54?~!29?~??~!126?~!49?!3@AC!5GOO__!49?~!62?!5@AA!4C!7GOO!5_!5?!5@AACC!7GOO__!151?~ +-~!168?_WE@!56?}@!29?~??~!126?~!63?!4@AA!3C!6G!5O!4_!25?~!87?!7@!4A!5C!9G!4P!3`!4aA!4C!7G!4O!7_!117?~ +-~!166?wE@!58?_^!30?~??~!126?~!87?!9@!5A!7C!4G~!8G!7O!10_!98?!11@!7A!5CDD!7H!6I!5KSS!7W!9g!9O!9_!61?~ +-~!163?oKB!61?~!31?~??~!126?~!112?~!25?!22@!14A!18C!42G!29O!34_!4`!21@!13B@@!39?~ +-~!160?_WF!64?~!28?!3G~GG~!5G!121?N!112G~!188G!36HG!38?~ +-~!158?_[B!65?oN!31?~??~!239?~!263?~ +-~!156?oM@!67?~!32?~??~!239?~!4?CA~!105?E!3@`QK!43?~??_??~!6?_OGF!3?~??_??~!3?o_!4O_!26?A@@!3`]!31?~ +-~!154?WE@!69?N!32?F??~!239?~!4?OO^OO!103?WSQP!3O!43?FWE@EWF!3?[A@!7?FWE@EWF!3?^!5?^!26?G!5ON!31?~ +-~!262?~!239?~!263?~ +-~!262?~!105?_OGCGO_!127?~!263?~ +-~!256?!6_~!5_!100?NO_?_ON!14?!113_~!225_!38?~ +-~!262?~!108?@!17?~FXbDHIQQacCC!4G!5O__!89?~!263?~ +-~!262?~!126?~??@EW_!4?!4@ACGGOO__?!4@!3ACC!7GOO__!69?~!263?~ +-~!262?~!126?~!5?@EW_!13?@AACCGGO_!12?@@!3ACC!4GO__!55?~!263?~ +-~!262?~!126?~!8?@EW_!19?@@AACCGOO_!16?@@AACCGGOO_!44?~!263?~ +-~!262?~!126?~!12?BCW_!25?!3@AACGGO_!17?@AACCGO_!36?~!263?~ +-~!262?~!126?~!16?BCW_!31?@@AACGGO_!16?@@ACGGO_!28?~!263?~ +-~!256?!6@~!5@!121?~!20?@@ACGO_!33?@@AACGGOO_!14?@EGO_!23?~!263?~ +-~!262?~!126?~!27?@ACCGOO_!35?@@AACGOO_!10?@@ACGo!17?~!263?~ +-~!262?~!126?~!35?!3@AACGGOO!3_!31?@@AACGOO_!7?@EGOO_!11?~!263?~ +-~!262?~!126?~!48?!4@AA!3C!4G!4O__!21?@@AAC!3GO__??BCW_!7?~!263?~ +-~!262?~!84?!7_!3?]!4`Q{!3?wCA@ACw!15?~!67?!7@!4A!5C!7G!6O!3_``ACGGPQcgO_?~!263?~ +-~!262?~!94?G!4OGF!3?BCGOGCB!15?~!112@~NzJJTTd!3D!15H!6P!7`!187@!38?~ +-~!256?!6CF!5C!121?~!112?~??@ACGO`@@ACC!4GO_!19?!16@!7A!9C!18G!9O!9_!157?~ +-~!389?~!112?~!8?@ACGO_!5?!5@AC!5GOO__!71?!20@!8A!11C!23G!11O!11_!73?~ +-~!323?{!5Cw!3?{!55?~!112?~!14?@AACGO__!13?!5@AACC!5GOO__!137?!23@!11A!39?~ +-~!323?~!5A@!3?~A!4@}!3?o!5H}!3?E!5Ho!3?}!5HM!19?~!112?~!22?@@ACGGO__!22?!5@AA!4C!5G!4O!3_!187?~ +-~!323?@??_!6?@!5?@!4?!6@!4?!5@!5?!5@!20?~!112?~!31?@@AACGGOO!3_!33?!6@!5A!4C!7G!5O!4_!156?~ +-~!326?~!10?!5Go!3?o!4GoK!36?~!112?~!43?!4@AC!5GOO__!49?!9@!7A!4C!12G!6O!8_!110?~ +-~!326?N!6G!3?E!5HN!3?b!4C~!37?~!112?~!58?!7@AA!5C!7GOO!4_!68?!13@!9A!9C!18G!9O!11_!41?~ +-~!347?!4@!38?~!112?~!85?!12@!4A!7C!11G!9O!9_!126?~ +-~!351?_!7?!5_!7?_!17?~!112?~!137?!20@!11A!13C!34G!9O!39?~ +-~!338?!7O!4?A@~!6?n!5On!3?{A@?@A{!14?~!112?~!263?~ +-~!349?GGNGG!4?F!5GF!3?@ACGCA@!14?F!112?F!263?~ +-~!38?W!4CGo!721?~ +-~!38?_OGCA@!30?!601_!91?~ +-~!38?!7@!721?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!766?~ +-~!182?__!3O!4G!3C!15A!5C!6GO!3_!542?~ +-~!173?_O!3GE!3@!42?!3@AA!3C!3GO__!528?~ +-~!166?oGGCA@@!65?!3@ACC!3Go!518?~ +-~!160?oGGE@@!82?!3@AAC!3GOO_!506?~ +-~!39?CA~!75?!9_!28?_OGE@@!100?!3@AAC!3GOO_!183?!8_!303?~ +-~!39?OO^OO!30?w!33GwGGKI!4H!9G!8H!5I!6K!4GggWKIH!9G!11g!16W!81G!3HIIK!3GWW!3g!109G!3g!5W!10G!6K!8I!28H!8G!37H!11I!12K!31G!75W!46G!91?~ +-~!74?~!28?_WCA@!25?!3_!3O!6GcSKB!3A!12@!122?!3@!3AC!6GOO!4_!56?!4_!5O!9G!3C!4A!9@!371?~ +-~!74?~!25?_WE@!16?__O!3GCCAAB@@!8?_WE@!160?!8@!6A!24C!7A!11@!405?~ +-~!74?~!23?wE@!12?oGGCAA@!17?oGE@!625?~ +-~!74?~!20?_WF!9?oGGE@@!20?oGCB!629?~ +-~!74?~!19?wF!5?_OGE@@!23?wE@!633?~ +-~!74?~!17?{B!3?_WCA@!24?_OKB!636?~ +-~!74?~!15?_]@_OKA@!24?_OKB!640?~ +-~!74?~!14?{bWE@!25?oKA@!643?~ +-~!74?~!12?_}F@!24?_WE@!647?~ +-~!74?~!10?_{B!23?oGE@!651?~ +-~!74?~!8?ok^@!20?oGCB!655?~ +-~!74?~!6?oM|B!17?_OKA@!659?~ +-~!74?~!4?oNoN!13?__WCCB!664?~ +-~!74?~??oKrN!9?__WGKB!670?~ +-~!74?~okZE@?__O!3GCCB!676?~ +-~!37?!638@!91?~ +-~!600?!3Gw!3G!6?W!56?GO_!93?~ +-~!603?~!8?A}!6?{ACWCA{!3?{!5Q[!13?!7C!3?!7C!5?_PIC!90?~ +-~!75?!3C{!3C!46?K!28?{!17?{!5Cw!421?B!7?AABAA!4?B!5?B!3?@!5A!34?A@!94?~ +-~!78?~!7?~A!3@A!3?o!5H}!3?~A!4@}!3?E!5Ho!5?@~!6?}!5HM!3?~A!4@}!3?@@~@@_!14?~AEIQa@!3?}!5HM!3?E!5Ho!3?~}!4@}!3?}!5@}!3?~A!4@}!3?E!5Ho!3?}!5HM!514?~ +-~!78?@!7?@!9?!6@!3?@!5?@!4?!5@!5?!5@!5?!5@!4?@!5?@!6?@@!15?@!5?@!4?!5@!5?!5@!4?N?!4@!5?!5@!4?@!5?@!4?!5@!5?!5@!515?~ +-F!766CF +\ + diff --git a/dviware/ln03/rmcs/test.pic b/dviware/ln03/rmcs/test.pic new file mode 100644 index 0000000000..b32713caaa --- /dev/null +++ b/dviware/ln03/rmcs/test.pic @@ -0,0 +1,252 @@ +62A31Y6Z72+ GINO-F 2.7B + BAGGOTT 19-DEC-1988 16 40 +*.B1 +03* +72B4PB5368Q28RPX110000000G11G2PG4O407608PG5PG61G7PG9PD8O407608QYO407608Q +72YPYPB7E2Y13315PE5TRACKING PERFORMANCE FOR TX/RX S*.E5PACING=4.25E+05*L +72M *UWAVELENGTH=1.51*.E51*LM *UTX EIRP=1.0E+05W R*LX *UNOISE TEM*.E5P=5 +7200.0K *.E2Y139945E5R*LX *UA*LE *USPACING=0.50 *LLAMBDA *UR*LX *UA*LE * +72.E5GAIN= 2.0 TARGET VEL=200.0*LM/S *UTA*.E5RGET RCS= 50.0*LM*.E694E52 +72WINDOW= 32.0*LS *.E5DOA/FD WEIGHTING=0.0050*.E238043Y309783E48E5 R*LX +72*.E2445652E48E5 T*LX *.E266134Y241965E17156P24739PE177845Y251792E26809 +724Y25112PE43E266965Y254713E43E271626Y2472QE43E238261Y309612E44E236888Y3 +7211356E47E235514Y3131QE47E23414P314843E47E232767Y316586E47E231393Y31833 +72PE47E23002P320075E47E228646Y321817E47E227273Y323562E47E225899Y325306E4 +077B611 +03* +72B31B5368Q28RPX110000000G11G2PG4O407608PG5PG61G7PG9PD8O407608QYO407608Q +72YPYPB7E2296196Y139945E5POSITION ERRORS (*LKM)*.E2463315Y235053E112228E +72262349E1Y233015E211247PE1Y235053E216259PE1Y233015E221271PE1Y235053E226 +72283PE1Y233015E2312952E1Y235053E2363073E1Y233015E2413193E1Y235053E24583 +7203E1Y233832E245329PE1Y235053E2448278E1Y233832E2443267E1Y235053E2438254 +72E1Y233832E2433242E1Y235053E242823PE1Y233832E242322PE1Y235053E2418206E1 +72Y233832E2408182Y235053E1Y233832E240317PE1Y235053E2398158E1Y233832E2393 +72145E1Y235053E2388134E1Y233832E238312PE1Y235053E237811PE1Y233832E237309 +727E1Y235053E2368086E1Y233832E2358062Y235053E1Y233832E235305PE1Y235053E2 +72348037E1Y233832E2343024E1Y235053E2338013E1Y233832E2333RE1Y235053E23279 +729PE1Y233832E2322976E1Y235053E2317965E1Y233832E230794P235053E1Y233832E2 +72302928E1Y235053E2297917E1Y233832E2292904E1Y235053E2287893E1Y233832E228 +72288PE1Y235053E2277868E1Y233832E2272855E1Y235053E2267844E1Y233832E22578 +722P235053E1Y233832E2252807E1Y235053E2247796E1Y233832E2242783E1Y235053E2 +72237772E1Y233832E223276PE1Y235053E2227747E1Y233832E2222736E1Y235053E221 +727722E1Y233832E2207698Y235053E1Y233832E2202687E1Y235053E2197674E1Y23383 +722E2192663E1Y235053E218765PE1Y233832E218264PE1Y235053E2177627E1Y233832E +722172615E1Y235053E2167603E1Y233832E215758P235053E1Y233832E2152566E1Y235 +72053E2147554E1Y233832E2142542E1Y235053E213753PE1Y233832E2132518E1Y23505 +723E2127506E1Y233832E2122493E1Y235053E211748PE1Y233832E2107457Y235053E1Y +72233832E2102445E1Y235053E297434E1Y233832E292421E1Y235053E287409E1Y23383 +722E282397E1Y235053E277385E1Y233832E272373E1Y235053E267361E1Y233832E2573 +7237Y235053E1Y233832E252325E1Y235053E247313E1Y233832E242301E1Y235053E237 +72289E1Y233832E232276E1Y235053E227264E1Y233832E222252E1Y235053E21724PE1Y +72233832E2464945Y24049PE50 *.E2414825E55 *.E2364703E510 *.E2314582E515 +72 *.E2264462E520 *.E221434PE525 *.E216422PE530 *.E21141QE535 *.E263979E +72540 *.E213859E545 *.E212228Y235053E1Y153533E2Y161685E114266E2Y169836E1 +7212228E2Y177988E114266E2Y18614PE112228E2Y194293E114266E2Y202446E112228E +722Y210597E114266E2Y21875PE112228E2Y226902E114266E212228Y233423E113451E2 +72Y231792E112228E2Y230163E113451E2Y228533E112228E2Y225272E113451E2Y22364 +72PE112228E2Y22201PE113451E2Y22038PE112228E2Y21712PE113451E2Y21549PE1122 +7228E2Y21386PE113451E2Y212227E112228E2Y208966E113451E2Y207336E112228E2Y2 +7205707E113451E2Y204076E112228E2Y200815E113451E2Y199184E112228E2Y197554E +72113451E2Y195923E112228E2Y192663E113451E2Y191033E112228E2Y1894QE113451E +722Y18777PE112228E2Y18451PE113451E2Y18288PE112228E2Y18125PE113451E2Y1796 +722PE112228E2Y17636PE113451E2Y174728E112228E2Y173098E113451E2Y171466E112 +72228E2Y168207E113451E2Y166576E112228E2Y164945E113451E2Y163315E112228E2Y +72160054E113451E2Y158423E112228E2Y156792E113451E2Y155163E112228E2463315Y +72235053E1Y153533E2Y161685E1461277E2Y169836E1463315E2Y177988E1461277E2Y1 +728614PE1463315E2Y194293E1461277E2Y202446E1463315E2Y210597E1461277E2Y218 +7275PE1463315E2Y226902E1461277E2463315Y233423E1462092E2Y231792E1463315E2 +72Y230163E1462092E2Y228533E1463315E2Y225272E1462092E2Y22364PE1463315E2Y2 +722201PE1462092E2Y22038PE1463315E2Y21712PE1462092E2Y21549PE1463315E2Y213 +7286PE1462092E2Y212227E1463315E2Y208966E1462092E2Y207336E1463315E2Y20570 +727E1462092E2Y204076E1463315E2Y200815E1462092E2Y199184E1463315E2Y197554E +721462092E2Y195923E1463315E2Y192663E1462092E2Y191033E1463315E2Y1894QE146 +722092E2Y18777PE1463315E2Y18451PE1462092E2Y18288PE1463315E2Y18125PE14620 +7292E2Y17962PE1463315E2Y17636PE1462092E2Y174728E1463315E2Y173098E1462092 +72E2Y171466E1463315E2Y168207E1462092E2Y166576E1463315E2Y164945E1462092E2 +72Y163315E1463315E2Y160054E1462092E2Y158423E1463315E2Y156792E1462092E2Y1 +7255163E1463315E2475543Y235053E5 0*.E2Y226902E5 1*.E2Y21875PE5 2*.E2Y +72210597E5 3*.E2Y202446E5 4*.E2Y194293E5 5*.E2Y18614PE5 6*.E2Y177988 +72E5 7*.E2Y169836E5 8*.E2Y161685E5 9*.E2Y153533E5 10*.E2473505Y147417 +72E5X10*.E2461277Y14538PE51 *.E2463315Y153533E112228E262349E1Y15557PE2 +7211247PE1Y153533E216259PE1Y15557PE221271PE1Y153533E226283PE1Y15557PE231 +722952E1Y153533E2363073E1Y15557PE2413193E1Y153533E2458303E1Y154754E24532 +729PE1Y153533E2448278E1Y154754E2443267E1Y153533E2438254E1Y154754E2433242 +72E1Y153533E242823PE1Y154754E242322PE1Y153533E2418206E1Y154754E2408182Y1 +7253533E1Y154754E240317PE1Y153533E2398158E1Y154754E2393145E1Y153533E2388 +72134E1Y154754E238312PE1Y153533E237811PE1Y154754E2373097E1Y153533E236808 +726E1Y154754E2358062Y153533E1Y154754E235305PE1Y153533E2348037E1Y154754E2 +72343024E1Y153533E2338013E1Y154754E2333RE1Y153533E232799PE1Y154754E23229 +7276E1Y153533E2317965E1Y154754E230794P153533E1Y154754E2302928E1Y153533E2 +72297917E1Y154754E2292904E1Y153533E2287893E1Y154754E228288PE1Y153533E227 +727868E1Y154754E2272855E1Y153533E2267844E1Y154754E225782P153533E1Y154754 +72E2252807E1Y153533E2247796E1Y154754E2242783E1Y153533E2237772E1Y154754E2 +7223276PE1Y153533E2227747E1Y154754E2222736E1Y153533E2217722E1Y154754E220 +727698Y153533E1Y154754E2202687E1Y153533E2197674E1Y154754E2192663E1Y15353 +723E218765PE1Y154754E218264PE1Y153533E2177627E1Y154754E2172615E1Y153533E +722167603E1Y154754E215758P153533E1Y154754E2152566E1Y153533E2147554E1Y154 +72754E2142542E1Y153533E213753PE1Y154754E2132518E1Y153533E2127506E1Y15475 +724E2122493E1Y153533E211748PE1Y154754E2107457Y153533E1Y154754E2102445E1Y +72153533E297434E1Y154754E292421E1Y153533E287409E1Y154754E282397E1Y153533 +72E277385E1Y154754E272373E1Y153533E267361E1Y154754E257337Y153533E1Y15475 +724E252325E1Y153533E247313E1Y154754E242301E1Y153533E237289E1Y154754E2322 +7276E1Y153533E227264E1Y154754E222252E1Y153533E21724PE1Y154754E2463315Y23 +72024PE142322P22731PE138312P234456E1343024Y175067E1302928Y173392E126283P +72171702E1222736Y17SE118264P168285E1142542Y16656PE1102445Y164822E162349Y +72163076E122252Y160418E2343024Y175067E44E2302928Y173392E47E226283P171702 +72E47E2222736Y17SE47E218264P168285E47E2142542Y16656PE47E2102445Y164822E4 +727E262349Y163076E47E222252Y160418E47E2296196Y262227E5VELOCITY ERRORS (* +72LM/S) *.E2463315Y357336E112228E262349E1Y355298E211247PE1Y357336E2162 +7259PE1Y355298E221271PE1Y357336E226283PE1Y355298E2312952E1Y357336E236307 +723E1Y355298E2413193E1Y357336E2458303E1Y356114E245329PE1Y357336E2448278E +721Y356114E2443267E1Y357336E2438254E1Y356114E2433242E1Y357336E242823PE1Y +72356114E242322PE1Y357336E2418206E1Y356114E2408182Y357336E1Y356114E24031 +727PE1Y357336E2398158E1Y356114E2393145E1Y357336E2388134E1Y356114E238312P +72E1Y357336E237811PE1Y356114E2373097E1Y357336E2368086E1Y356114E2358062Y3 +7257336E1Y356114E235305PE1Y357336E2348037E1Y356114E2343024E1Y357336E2338 +72013E1Y356114E2333RE1Y357336E232799PE1Y356114E2322976E1Y357336E2317965E +721Y356114E230794P357336E1Y356114E2302928E1Y357336E2297917E1Y356114E2292 +72904E1Y357336E2287893E1Y356114E228288PE1Y357336E2277868E1Y356114E227285 +725E1Y357336E2267844E1Y356114E225782P357336E1Y356114E2252807E1Y357336E22 +7247796E1Y356114E2242783E1Y357336E2237772E1Y356114E223276PE1Y357336E2227 +72747E1Y356114E2222736E1Y357336E2217722E1Y356114E2207698Y357336E1Y356114 +72E2202687E1Y357336E2197674E1Y356114E2192663E1Y357336E218765PE1Y356114E2 +7218264PE1Y357336E2177627E1Y356114E2172615E1Y357336E2167603E1Y356114E215 +72758P357336E1Y356114E2152566E1Y357336E2147554E1Y356114E2142542E1Y357336 +72E213753PE1Y356114E2132518E1Y357336E2127506E1Y356114E2122493E1Y357336E2 +7211748PE1Y356114E2107457Y357336E1Y356114E2102445E1Y357336E297434E1Y3561 +7214E292421E1Y357336E287409E1Y356114E282397E1Y357336E277385E1Y356114E272 +72373E1Y357336E267361E1Y356114E257337Y357336E1Y356114E252325E1Y357336E24 +727313E1Y356114E242301E1Y357336E237289E1Y356114E232276E1Y357336E227264E1 +72Y356114E222252E1Y357336E21724PE1Y356114E2464945Y362772E50 *.E2414825E +7255 *.E2364703E510 *.E2314582E515 *.E2264462E520 *.E221434PE525 *.E216 +72422PE530 *.E21141QE535 *.E263979E540 *.E213859E545 *.E212228Y357336E1Y +72275815E2Y284873E114266E2Y29393PE112228E2Y30299PE114266E2Y312047E112228 +72E2Y321105E114266E2Y330163E112228E2Y33922PE114266E2Y348278E112228E2Y355 +72524E113451E2Y353713E112228E2Y351902E113451E2Y35009PE112228E2Y346466E11 +723451E2Y344655E112228E2Y342844E113451E2Y341033E112228E2Y337408E113451E2 +72Y335597E112228E2Y333786E113451E2Y331975E112228E2Y32835PE113451E2Y32654 +72PE112228E2Y324727E113451E2Y322917E112228E2Y319293E113451E2Y31748PE1122 +7228E2Y31567PE113451E2Y31386PE112228E2Y310236E113451E2Y308423E112228E2Y3 +720661PE113451E2Y3048QE112228E2Y301178E113451E2Y299365E112228E2Y297553E1 +7213451E2Y295742E112228E2Y29212PE113451E2Y290307E112228E2Y288495E113451E +722Y286684E112228E2Y283062E113451E2Y28125PE112228E2Y279437E113451E2Y2776 +7226E112228E2463315Y357336E1Y275815E2Y284873E1461277E2Y29393PE1463315E2Y +7230299PE1461277E2Y312047E1463315E2Y321105E1461277E2Y330163E1463315E2Y33 +72922PE1461277E2Y348278E1463315E2Y355524E1462092E2Y353713E1463315E2Y3519 +7202E1462092E2Y35009PE1463315E2Y346466E1462092E2Y344655E1463315E2Y342844 +72E1462092E2Y341033E1463315E2Y337408E1462092E2Y335597E1463315E2Y333786E1 +72462092E2Y331975E1463315E2Y32835PE1462092E2Y32654PE1463315E2Y324727E146 +722092E2Y322917E1463315E2Y319293E1462092E2Y31748PE1463315E2Y31567PE14620 +7292E2Y31386PE1463315E2Y310236E1462092E2Y308423E1463315E2Y30661PE1462092 +72E2Y3048QE1463315E2Y301178E1462092E2Y299365E1463315E2Y297553E1462092E2Y +72295742E1463315E2Y29212PE1462092E2Y290307E1463315E2Y288495E1462092E2Y28 +726684E1463315E2Y283062E1462092E2Y28125PE1463315E2Y279437E1462092E2Y2776 +7226E1463315E2475543Y357336E5-40*.E2Y348278E5-35*.E2Y33922PE5-30*.E2Y330 +72163E5-25*.E2Y321105E5-20*.E2Y312047E5-15*.E2Y30299PE5-10*.E2Y29393PE5 +72-5*.E2Y284873E5 0*.E2Y275815E5 5*.E2473505Y2697QE5X10*.E2461277Y2676 +7263E51 *.E2463315Y275815E112228E262349E1Y277852E211247PE1Y275815E2162 +7259PE1Y277852E221271PE1Y275815E226283PE1Y277852E2312952E1Y275815E236307 +723E1Y277852E2413193E1Y275815E2458303E1Y277038E245329PE1Y275815E2448278E +721Y277038E2443267E1Y275815E2438254E1Y277038E2433242E1Y275815E242823PE1Y +72277038E242322PE1Y275815E2418206E1Y277038E2408182Y275815E1Y277038E24031 +727PE1Y275815E2398158E1Y277038E2393145E1Y275815E2388134E1Y277038E238312P +72E1Y275815E237811PE1Y277038E2373097E1Y275815E2368086E1Y277038E2358062Y2 +7275815E1Y277038E235305PE1Y275815E2348037E1Y277038E2343024E1Y275815E2338 +72013E1Y277038E2333RE1Y275815E232799PE1Y277038E2322976E1Y275815E2317965E +721Y277038E230794P275815E1Y277038E2302928E1Y275815E2297917E1Y277038E2292 +72904E1Y275815E2287893E1Y277038E228288PE1Y275815E2277868E1Y277038E227285 +725E1Y275815E2267844E1Y277038E225782P275815E1Y277038E2252807E1Y275815E22 +7247796E1Y277038E2242783E1Y275815E2237772E1Y277038E223276PE1Y275815E2227 +72747E1Y277038E2222736E1Y275815E2217722E1Y277038E2207698Y275815E1Y277038 +72E2202687E1Y275815E2197674E1Y277038E2192663E1Y275815E218765PE1Y277038E2 +7218264PE1Y275815E2177627E1Y277038E2172615E1Y275815E2167603E1Y277038E215 +72758P275815E1Y277038E2152566E1Y275815E2147554E1Y277038E2142542E1Y275815 +72E213753PE1Y277038E2132518E1Y275815E2127506E1Y277038E2122493E1Y275815E2 +7211748PE1Y277038E2107457Y275815E1Y277038E2102445E1Y275815E297434E1Y2770 +7238E292421E1Y275815E287409E1Y277038E282397E1Y275815E277385E1Y277038E272 +72373E1Y275815E267361E1Y277038E257337Y275815E1Y277038E252325E1Y275815E24 +727313E1Y277038E242301E1Y275815E237289E1Y277038E232276E1Y275815E227264E1 +72Y277038E222252E1Y275815E21724PE1Y277038E2463315Y284873E112228E2463315Y +72284493E142322P28431PE138312P284964E1343024Y353457E1302928E126283PE1222 +72736E118264PE1142542E1102445E162349E122252E2343024E44E2302928E47E226283 +72PE47E2222736E47E218264PE47E2142542E47E2102445E47E262349E47E222252E47E2 +72296196Y38451PE5HEADING ERRORS (DEG)*.E2463315Y47962PE112228E262349E1Y4 +727758PE211247PE1Y47962PE216259PE1Y47758PE221271PE1Y47962PE226283PE1Y477 +7258PE2312952E1Y47962PE2363073E1Y47758PE2413193E1Y47962PE2458303E1Y47839 +726E245329PE1Y47962PE2448278E1Y478396E2443267E1Y47962PE2438254E1Y478396E +722433242E1Y47962PE242823PE1Y478396E242322PE1Y47962PE2418206E1Y478396E24 +7208182Y47962PE1Y478396E240317PE1Y47962PE2398158E1Y478396E2393145E1Y4796 +722PE2388134E1Y478396E238312PE1Y47962PE237811PE1Y478396E2373097E1Y47962P +72E2368086E1Y478396E2358062Y47962PE1Y478396E235305PE1Y47962PE2348037E1Y4 +7278396E2343024E1Y47962PE2338013E1Y478396E2333RE1Y47962PE232799PE1Y47839 +726E2322976E1Y47962PE2317965E1Y478396E230794P47962PE1Y478396E2302928E1Y4 +727962PE2297917E1Y478396E2292904E1Y47962PE2287893E1Y478396E228288PE1Y479 +7262PE2277868E1Y478396E2272855E1Y47962PE2267844E1Y478396E225782P47962PE1 +72Y478396E2252807E1Y47962PE2247796E1Y478396E2242783E1Y47962PE2237772E1Y4 +7278396E223276PE1Y47962PE2227747E1Y478396E2222736E1Y47962PE2217722E1Y478 +72396E2207698Y47962PE1Y478396E2202687E1Y47962PE2197674E1Y478396E2192663E +721Y47962PE218765PE1Y478396E218264PE1Y47962PE2177627E1Y478396E2172615E1Y +7247962PE2167603E1Y478396E215758P47962PE1Y478396E2152566E1Y47962PE214755 +724E1Y478396E2142542E1Y47962PE213753PE1Y478396E2132518E1Y47962PE2127506E +721Y478396E2122493E1Y47962PE211748PE1Y478396E2107457Y47962PE1Y478396E210 +722445E1Y47962PE297434E1Y478396E292421E1Y47962PE287409E1Y478396E282397E1 +72Y47962PE277385E1Y478396E272373E1Y47962PE267361E1Y478396E257337Y47962PE +721Y478396E252325E1Y47962PE247313E1Y478396E242301E1Y47962PE237289E1Y4783 +7296E232276E1Y47962PE227264E1Y478396E222252E1Y47962PE21724PE1Y478396E246 +724945Y485054E50 *.E2414825E55 *.E2364703E510 *.E2314582E515 *.E226446 +722E520 *.E221434PE525 *.E216422PE530 *.E21141QE535 *.E263979E540 *.E213 +72859E545 *.E212228Y47962PE1Y398097E2Y40625PE114266E2Y414402E112228E2Y42 +722554E114266E2Y430706E112228E2Y438858E114266E2Y44701PE112228E2Y455163E1 +7214266E2Y463315E112228E2Y471467E114266E212228Y47799PE113451E2Y476358E11 +722228E2Y474728E113451E2Y473097E112228E2Y469836E113451E2Y468206E112228E2 +72Y466576E113451E2Y464945E112228E2Y461684E113451E2Y460054E112228E2Y45842 +723E113451E2Y456793E112228E2Y453532E113451E2Y451902E112228E2Y45027PE1134 +7251E2Y44864PE112228E2Y44538PE113451E2Y44375PE112228E2Y44212PE113451E2Y4 +724049PE112228E2Y437228E113451E2Y435597E112228E2Y433967E113451E2Y432336E +72112228E2Y429076E113451E2Y427445E112228E2Y425815E113451E2Y424184E112228 +72E2Y420923E113451E2Y419293E112228E2Y417663E113451E2Y416032E112228E2Y412 +7277PE113451E2Y41114PE112228E2Y40951PE113451E2Y40788PE112228E2Y40462PE11 +723451E2Y40299PE112228E2Y401358E113451E2Y399727E112228E2463315Y47962PE1Y +72398097E2Y40625PE1461277E2Y414402E1463315E2Y422554E1461277E2Y430706E146 +723315E2Y438858E1461277E2Y44701PE1463315E2Y455163E1461277E2Y463315E14633 +7215E2Y471467E1461277E2463315Y47799PE1462092E2Y476358E1463315E2Y474728E1 +72462092E2Y473097E1463315E2Y469836E1462092E2Y468206E1463315E2Y466576E146 +722092E2Y464945E1463315E2Y461684E1462092E2Y460054E1463315E2Y458423E14620 +7292E2Y456793E1463315E2Y453532E1462092E2Y451902E1463315E2Y45027PE1462092 +72E2Y44864PE1463315E2Y44538PE1462092E2Y44375PE1463315E2Y44212PE1462092E2 +72Y44049PE1463315E2Y437228E1462092E2Y435597E1463315E2Y433967E1462092E2Y4 +7232336E1463315E2Y429076E1462092E2Y427445E1463315E2Y425815E1462092E2Y424 +72184E1463315E2Y420923E1462092E2Y419293E1463315E2Y417663E1462092E2Y41603 +722E1463315E2Y41277PE1462092E2Y41114PE1463315E2Y40951PE1462092E2Y40788PE +721463315E2Y40462PE1462092E2Y40299PE1463315E2Y401358E1462092E2Y399727E14 +7263315E2475543Y47962PE5-10*.E2Y471467E5 -9*.E2Y463315E5 -8*.E2Y455163E5 +72 -7*.E2Y44701PE5 -6*.E2Y438858E5 -5*.E2Y430706E5 -4*.E2Y422554E5 -3*.E +722Y414402E5 -2*.E2Y40625PE5 -1*.E2Y398097E5 0*.E2473505Y391984E5X10*.E +722461277Y389946E51 *.E2463315Y398097E112228E262349E1Y400135E211247PE1 +72Y398097E216259PE1Y400135E221271PE1Y398097E226283PE1Y400135E2312952E1Y3 +7298097E2363073E1Y400135E2413193E1Y398097E2458303E1Y39932PE245329PE1Y398 +72097E2448278E1Y39932PE2443267E1Y398097E2438254E1Y39932PE2433242E1Y39809 +727E242823PE1Y39932PE242322PE1Y398097E2418206E1Y39932PE2408182Y398097E1Y +7239932PE240317PE1Y398097E2398158E1Y39932PE2393145E1Y398097E2388134E1Y39 +72932PE238312PE1Y398097E237811PE1Y39932PE2373097E1Y398097E2368086E1Y3993 +722PE2358062Y398097E1Y39932PE235305PE1Y398097E2348037E1Y39932PE2343024E1 +72Y398097E2338013E1Y39932PE2333RE1Y398097E232799PE1Y39932PE2322976E1Y398 +72097E2317965E1Y39932PE230794P398097E1Y39932PE2302928E1Y398097E2297917E1 +72Y39932PE2292904E1Y398097E2287893E1Y39932PE228288PE1Y398097E2277868E1Y3 +729932PE2272855E1Y398097E2267844E1Y39932PE225782P398097E1Y39932PE2252807 +72E1Y398097E2247796E1Y39932PE2242783E1Y398097E2237772E1Y39932PE223276PE1 +72Y398097E2227747E1Y39932PE2222736E1Y398097E2217722E1Y39932PE2207698Y398 +72097E1Y39932PE2202687E1Y398097E2197674E1Y39932PE2192663E1Y398097E218765 +72PE1Y39932PE218264PE1Y398097E2177627E1Y39932PE2172615E1Y398097E2167603E +721Y39932PE215758P398097E1Y39932PE2152566E1Y398097E2147554E1Y39932PE2142 +72542E1Y398097E213753PE1Y39932PE2132518E1Y398097E2127506E1Y39932PE212249 +723E1Y398097E211748PE1Y39932PE2107457Y398097E1Y39932PE2102445E1Y398097E2 +7297434E1Y39932PE292421E1Y398097E287409E1Y39932PE282397E1Y398097E277385E +721Y39932PE272373E1Y398097E267361E1Y39932PE257337Y398097E1Y39932PE252325 +72E1Y398097E247313E1Y39932PE242301E1Y398097E237289E1Y39932PE232276E1Y398 +72097E227264E1Y39932PE222252E1Y398097E21724PE1Y39932PE2463315Y40286PE142 +72322P405285E138312P398962E1343024Y465947E1302928E126283PE1222736E118264 +72PE1142542E1102445E162349E122252Y4741QE2343024Y465947E44E2302928E47E226 +72283PE47E2222736E47E218264PE47E2142542E47E2102445E47E262349E47E222252Y4 +14741QE47B6235 +03* +04B2 + diff --git a/dviware/ln03/rmcs/test.six b/dviware/ln03/rmcs/test.six new file mode 100644 index 0000000000..4c467d52b2 --- /dev/null +++ b/dviware/ln03/rmcs/test.six @@ -0,0 +1,129 @@ +[7 IP0;0;1q"1;1 +- +- +- +- +!9_!4?!8_!8?_!9?!8_!11?__!5?!5_!6?__!12?!7_!17?!9_!4?!9_???!9_!4?!9_!5?!7_!4?!9_!4?__!5?_!9?_!7?__!12?!7_!4?!9_!17?!9_!5?!7_!4?!9_!16?!9_!4?__!6?_!16?!9_!4?__!6?_!18?!7_!4?!9_!8?_!9?!7_!6?!5_!6?__!12?!7_!22?__!19?!7_!4?!9_!4?!9_!18?!7_!4?!9_!46?_!16?_???!9 +_!16?!9_!4?__!12?!7_!4?!9_!33?_!21?!9_!7?_!11?_!34?!9_!4?__!6?_!16?!9_!6?!5_!5?!9_!4?!8_!21?_!22?!7_!4?!9_!18?!7_!4?!9_!29?!9_!29?__!12?!7_!6?!5_!7?!8_!4?!9_!16?!9_!4?!9_???__!6?_!4?!8_!17?!9_!5?!7_!6?!7_!18?!7_!12?__- +!4B~~BBB???@~~!4br~~!5?w~nn~w!4?}~~!6BFB??~~~ow{]NFB!5?B~~~B!5?~~~}{o_?~~~??}~~BBbbbfb!15?~~!6b~~r??~~!8b??~~!6br~~??~~!8b???}~F!5B~~??~~!6br~~??~~~N][]N~~~!5?w~n~w!4?~~~}{o_??~~~?}~~!5BFB??~~~!7b!16?~~~!7b??{}~F!5B~~{?~~~!5b~~~!15?!4B~~~BB???@FN}{ow}NF@!6 +?_ow{]M??~~~!5br~~[?@FN}{ow}NF@!14?[]~v!4bBFB??~~~!5b~~~!5?w~n~w!4?{}~F!5BFB!5?B~~~B!5?~~~}{o_?~~~?{}~FB!4bfB???!9w???_ow{}n~~~_!15?AFFBBBbr~~[?^~~!6zr_??~~~!7b!4?___{{{___??{}~FBbrz~~~{?^~~!6zr_??oowwoowwo_!15?@~~?ooo?~~@!5?w~n~w!4?@N~w!4?w~N@?~~~!7b???~~ +~!9?~~~!7b???~~~}{o_?~~~??}~~BBbbbfb???!4B~~~BB???~~~!5_~~~???!9w!5?A~~B!19?^~!6zrb!5?A~~B!8?AF~~!7?oowwoowwo_!16?BBB~~!4B???@FN}{ow}NF@!14?~~!8b!6?B~~BB!4?~~!6br~~??~~!5br~~???!9w!6?A~~B!18?{}FFBbrz~~~??~~!8b!4?___{{!4_??{}FFBbrz~~~??^~!7zr_??@~~?ooo?~~@! +14?~~!6b~~r??Owo_??_owo!15?~~N}{o_?~~???}~F!5B~~!5?B~~BB!5?]~v!5bBFB??~~!8b!16?BBB~~!4B???~~!8b??~~FN][[]N~~??~~!5br~~!4?!9w??^~!7zr_??}~FBbrz~~~??{}FFBbrz~~~!15?}~FBbrz~~~??~~?_ow{]NFB- +!4?~~!7?~~FN^~zp_???w~N!4BN~w??~~~!5_owo??~~~FN]{wo_!5?_~~~_!5?~~~?@FN}~~~??~~~__bbr~~!15?~~!6B@@???~~!8b??~~BBFN^~xp_??~~!8B???~~o!4_o~~??~~BBFN^~xp_??~~~!5?~~~???w~NBBBN~w??~~~?@FN}{~~~?~~~!4_owo??~~~!7b!16?~~~!7B??^~~o!4_o~~^?~~~FN^~zp`!20?~~~!6?ow}NFN} +{o_??G[]NFB@!5?~~~BFN^~xp_???ow}NFN}{o_!15?_or!4bv~}[?~~~!5B@@!4?w~NBBBN~w??^~~o!4_owo!5?_~~~_!5?~~~?@FN}~~~?^~~o_bbbr~~^??!9M!4?!5B~~~B!6?owwwoo???_ow{}nfb`_???_oo!4_o~~^?~~~!7b!4?BBB^^^BBB??^~~}nfb`o~~^?_oo!5_o~~^?~~~?~~~?~~~!15?@~~~F~~~@!4?w~NBBBN~w!4?@ +N~ww~N@???~~~!7b???~~~!7_??~~~!7b???~~~?@FN}~~~??~~~__bbr~~^!6?~~~!5?~~~!5B~~~???!9M!6?~~!11?owww!5?_oo!4_o~~!6?~~!11?~~!7?~~@?~~@?~~!19?~~!8?ow}NFN}{o_!14?~~!8b!6?_~~__!4?~~BBFN^~xp_??~~!6B@!4?!9M!7?~~!11?owww!4?^~{}nfb`o~~??~~!8b!4?BBB^^!4B??^~{}nfb`o~~? +?_oo!5_~~p???@~~~F~~~@!15?~~BFN^~zp`???_ox~^N^zp_!15?~~??@FN}~~_??~~o!4_o~~!5?_~~__!5?_op!5b~~u??~~!8b!19?~~!7?~~!8b??~~!7?~~??~~!6B@!5?!9M??_oo!5_o~~??~~}nfb`o~~??^~{}nfb`o~~!6?owww!5?~~}nfb`o~~??~~FFFN]{wo_- +!4?@@!7?@@!4?@B@??@@@!6?@@@??@!6B@@???@@@!4?@B@!5?!5B!5?@@@!5?@@@???@!6B@!16?@@!11?@!9B??@@!6?@B@??@@!12?@!6B@???@@!6?@B@??@@@!5?@@@??@@@!5?@@@?@@@!5?!4@??@!6B@???@!9B!16?@@@!11?@!6B@???@@@!4?@B@!20?@@@!5?@@@!5?@@@!14?@@@!5?@B@??@@@!5?@@@!16?@!5B@@???@@@!1 +0?@@@!5?@@@???@!5B@@!6?!5B!5?@@@!5?@@@???@!5B@@!22?@@@!7?@BBB@@!4?!9B!4?@!6B@???@!9B!17?@!6B@!4?@!6B@@???@@@?@@@?@@@!16?@@@?@@@!4?@@@!5?@@@!5?!4@!5?@!9B???@!9B??@!9B???@@@!5?@@@???@!6B@!8?@@@!5?@@@!5?@@@!18?@@!11?@BBB!6?@!6B@!7?@@!11?@@!7?@@??@@??@@!19?@@! +7?@@@!5?@@@!14?@!9B!6?!5B!4?@@!6?@B@??@@!27?@@!11?@BBB!6?@!6B@???@!9B!17?@!5B@@!4?@!6B@@!5?@@@?@@@!16?@@!5?@B@!4?@@!5?@@!15?@@!6?@@@???@!6B@!6?!5B!6?@!6B@@???@!9B!19?@@!7?@!9B??@@!7?@@??@@!24?@!6B@@!4?@!6B@!5?@!6B@!7?@BBB!6?@!6B@???@@!6?@B@- +{{!5[{{w!31?www!31?ow{!6[{w??w{{!5[{w!6?!4w!5?ow{!6[{w!5?[{{[[!4?wwwo!5?ww??ow{!5[{w!15?ow{!4[{{{w!14?w{{!7[???ow{!4[{{{w_!16?www!32?www!18?www!27?w{{!5[{{w!31?www!31?ow{!6[{w!6?www!8?[{{{[!5?wwwo!4?www!27?Ow{!5[{w_!14?ow{!4[{{{w_!14?!4[{{{[[!7?www!6?w{{!5 +[{w_?_ow{!5[{w??w{{!7[!4?[[[{{{[[[!15?Gww!5?wwG??w{{!7[??www!23?Ow{!5[{w_?_ow{!4[{{w_?ow{!4[{{{w!14?_ow{!4[{{w_!21?_o_!29?[[[{{!4[!6?!4w!5?w{!6[{{w??ow{!5[{w??w{!8[!4?[[[{{!4[!15?w{!7[{w??ow{!5[{w??_ow{!5[{w!27?w{!8[???ow{!4[{{{w!14?_ow{!4[{{w!16?_ow{{{wo_ +???Ow{!5[{w!15?Gww!5?wwG!4?[[{{[!5?wwwo!4?ww???w{!6[{w??_ow{!5[{w??Gww!5?wwG!27?Ow{!5[{{w??Ow{!5[{w!15?ow{!4[{{{w!27?w{!6[{w???ow{!5[{w!6?www!13?_o_??w{!8[???w{!7[{w!14?Gww!6?wwG?w{!8[!6?[{{[[!4?_ow{!5[{w??ww!6?ww!4?[[[{{!4[!5?[[{{[!5?wwwo!4?ww???ow{!5[{w! +15?ow{!4[{{{w!14?_ow{!4[{{w??ow{!4[{{{w??w{!8[??_ow{!4[{{w- +~~!4{[NNF??CM]{wow[ME!17?w~^\^~w!4?{}~!4v~}{w!14?FN^!5[wwo??~~~!4[]NF!4?w~^\\^~w???~~!15?~~!6?~~@FN}wo?~~??~~???[[[{{!4?!9v??~~ow{]NFB~~!14?B!7FM}{w?~~~w{]NFB~~~!16?~~~!7?{}~FFF~~}!4?}}~M}}~M}{w?~~~!5FM}{w?{}~!5F~~~??{}~FFF~~}!16?~~~!4{[NNF??CM]{wow[ME!17? +w~^\^~w!4?{}~!4v~}{w!14?~~~??[[[{{w!4?w~^\^~w!7?~~~!6?~~~FN}wo~~~???!9v!19?_ow[NFB!14?~~~w{]NFB~~~!18?~~~!7?w~^\^~w!4?~~~!4{]NFB?~~~???[[[{{w?~~~!7[!7?~~~!19?@N~w?w~N@???~~~!7[??~~~!11?!9v!7?_ow[NFB?~~~ow{]NF~~~?~~~w{]NF~~~!14?~~~ow{]NF~~~?}}~M}}~E}}{???_o +w{]NFB@???S}~!4vff!20?~~!8?w~^\\^~w???~~[!4{[NNE??~~???[[[{{??~~!8[!7?~~!19?~~[[!4{MNF??~~!10?BFM]!4[{wo???!9v!15?B!7FM}{??~~ow{]NFB~~!14?~~_ow{]NF~~??}}NM}{MNM}{??@BB@~~?@BB!7?_ow[NF!16?N~w}}}w~N!7?~~!6?~~@FN}wo~~???~~!6?~~??~~!7?~~???N~w}}}w~N!4?!9v!20?[ +[[~~u!6?_ow[NF!15?~~ow{]NF~~???S}~!5vfF!15?~~!6?~~???~~!6?~~!4?w~^\^~w!5?_ow{]NFB@??~~!8[???~~!7?~~!15?N~w_}}}w~N??~~!8[!7?~~!6?~~!4?[[[{{??~~!6[~~!7?~~!11?~~!6?~~@FN}wo~~???~~???[[[{{???!9v???~~ow{]NF~~!15?~~_ow{]NF~~??~~ow{]NF~~???B!6FN}{??~~_ow{]NF~~- +NN?@BFN]K???G[MFBBFN]K!15?GNN@???@NNG??FN^!5\@@!15?CM]!5[^NF??NNN!9?GNN@!4?@NNG?FN]!6[ME!5?[^^[[!4?NN!4?@FNNN??FN]!5[NF!4?!9@??FN^\!5[NF!6?M^^^M!4?CM]!5[NFB?FN^\!5[NFB!16?FN^[[[!4?FN^[[[^NN]K??NNN?NNN?NNN?N^^!6[NFB?FN^!5[^^N??FN^[[[NN^K!15?NNN?@BFN]K???G[M +FBBFN]K!15?GNN@???@NNG??FN^!5\@@!15?FN^!5[^NF??GNN@???@NNG!4?[^^^[!5?NNN???@FNNN???!9@!15?G[]^^\!4[!7?M^^^M???FN^\!5[NFB!18?NNN!5?GNN@???@NNG??NNN?@BFN]K??BFN]!5[NFB?N^^!7[!7?NNN!21?@NNN@!5?N^^!7[??N^^!7[!4?!9@???G[]^^\!4[??BFN^\!4[NFB?FN^\!4[^NF!6?M^^^M?? +?BFN^\!4[NFB?NNN?NNN?NNN??@BB@!9?[[!5\^NF!19?NN!6?GNN@!4?@NNG?NN??@BFN]K???FN]!5[NF??N^!8[!7?NN!19?NN???@BFN]K??FN]!5[ME???CM]!5[NF???!9@!16?CM]!5[NF??FN^\!5[NF!6?M^^^!4?BFN^\!4[NF??NN??NN???NN!6?NN!7?[[]^^\[[[!18?NNN?NNN!6?[[^^[!5?NN!4?@FNNG??N^!6[NF??BFM +]!5[NF!4?NNN?NNN!5?!9@!15?CM]!5[^NE??G[]^^\!4[!6?M^^^M!4?FN^\!4[^NE???[!5\^NF!15?N^!6[NF???FN]!5[NF??GNN@???@NNG??@BB@!8?NN!11?N^!7[NF!16?!4N?NNN???N^!8[!6?[^^[[!4?BFM]!5[NF??NN!6?NN!7?NN!9?[[^^[!5?NN!4?@FNNG??FN]!5[NF???!9@???FN^\!4[^NE!6?M^^^!4?BFN^\!4[N +F??FN^\!4[^NE??CM]!5[NF??BFN^\!4[NF- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +!1342?_ow{]K- +!1336?_ow{]NFB@- +!1326?___{{ow{}NFB@- +!1322?__ow~!4^!4B- +!1314?_oww{]MFFB@@!11?___{{!4_- +!1310?CMNFBB@!20?BBB~~!4B- +!1340?___}}!4_- +!1340?BBB^^!4B- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +!181?!4M}}MMM!1256?{}!5M]{w- +!164?_oo_oo?_oo!11?~~!6?AFN}{w{}NF!1226?_oo_oo?_oo!7?~~M]}}}mFB???AFN}{w{}NF- +!165?|!7~|!11?NN!6?CMNFB@BFNM!1227?|!7~|[{wo???NN???@BFNM???CMNFB@BFNM- +!164?@BB@BB?@BB!1255?@BB@^~wprz{{~~[[wo- +!1435?@B^~zrx{}}~^MM[{w- +!1439?@@N^|xww{~~~^FM}{- +!1445?FFM{w{}~^^NFn}{__- +!1450?FN][{}^^NFbb~~e__- +!1454?BFN]}~^^NNFbr~}oo_- +!1458?BFNM}}nnFFbpr~~ooo_- +!1463?@BFN~~nNFB@`~~- +!1467?@B!6FB@- +\ diff --git a/dviware/ln03/rmcs/test.tex b/dviware/ln03/rmcs/test.tex new file mode 100644 index 0000000000..cf9bd62bf4 --- /dev/null +++ b/dviware/ln03/rmcs/test.tex @@ -0,0 +1,12 @@ +\documentstyle[graphics,a4wide]{report} +\nofiles +\begin{document} + +text before graph + +\setlength{\unitlength}{1mm}\rule{1in}{0.4pt} +\gino(150,100){TEST.SIX} + +text after graph + +\end{document} diff --git a/dviware/ln03/rmcs/texprint.com b/dviware/ln03/rmcs/texprint.com new file mode 100644 index 0000000000..d010e77947 --- /dev/null +++ b/dviware/ln03/rmcs/texprint.com @@ -0,0 +1,144 @@ +$!- TEXPRINT.COM --------------------------------------------------------------- +$! ~~~~~~~~~~~~ +$! Command file to print a file to the laser printer queue designated by +$! P1. +$! +$! This command procedure is invoked by the user typing TEXPRINT followed +$! by the name(s) of the file(s) to be printed. The login procedures +$! executed by users of TeX/LaTeX should arrange to define the DCL symbol +$! TEXPRINT thus: +$! $ TEXP*rint :== @TEX_COM:TEXPRINT devname +$! where devname is the name of the output device's queue; as published, +$! this procedure assumes that the full name of the queue is given by +$! devname+"$LASER" +$! +$! Parameters: +$! +$! P1 (required) The name of the queue to be used for printing +$! P2 (required) Name of file(s) to be printed and/or optional +$! qualifiers. If this consists of qualifiers, +$! they are placed globally, and the filename must +$! follow in P3... Multiple file names should be +$! separated by commas +$! P3-P8 (optional) Further optional qualifiers, which will be +$! appended to the last filename used. +$!------------------------------------------------------------------------------ +$! +$! Ensure printer queue specified +$! +$ SAY := WRITE SYS$OUTPUT +$ IF P1 .EQS. "" +$ THEN +$ SAY "%TEXPRINT-F-NOQUEUE, No laser printer queue specified" +$ EXIT %X10000004 +$ ENDIF +$ queue_name = P1 + "$LASER" +$ xxx = F$GETQUI("DISPLAY_QUEUE","QUEUE_STATUS",queue_name) +$ IF xxx .EQS. "" +$ THEN +$ SAY "%TEXPRINT-F-BADQUEUE, No such queue ''queue_name'" +$ EXIT %X10000004 +$ ENDIF +$! +$! Ensure file name specified +$! +$Get_Name: +$ IF P2 .EQS. "" +$ THEN +$ INQUIRE P2 "_File name" +$ GOTO Get_Name +$ ENDIF +$! +$! Extract leading qualifier or single filename from P2... +$! +$ param_ctr = 2 +$ had_name = "FALSE" +$ global_qual = "" +$ file_list = "" +$ related_spec = ".LN3" +$ had_warning = "FALSE" +$Next_Param: +$ next_par = F$EDIT(P'param_ctr,"TRIM,UPCASE") +$ first_part = F$ELEMENT(0,",",next_par) +$ following = F$ELEMENT(1,",",next_par) .NES. "," +$! +$! If Pn starts with a "/", it must be a global qualifier, if we haven't +$! yet had any file names, or a trailing qualifier after the last file. +$! +$ IF F$EXTRACT(0,1,first_part) .EQS. "/" +$ THEN +$ IF had_name +$ THEN +$ file_list = file_list + next_par +$ param_ctr = param_ctr + 1 +$ IF param_ctr .GT. 8 THEN $ GOTO Print_It +$ GOTO Next_Param +$ ENDIF +$ global_qual = global_qual + next_par +$ param_ctr = param_ctr + 1 +$ IF param_ctr .GT. 8 +$ THEN +$ SAY "%TEXPRINT-E-NOFILES, No files selected for printing" +$ EXIT %X10000002 +$ ENDIF +$ GOTO Next_Param +$ ENDIF +$! +$! Otherwise, what's in first_part is a filename, with an optional trailing +$! qualifier (local to that file). +$! +$ IF had_name +$ THEN +$ SAY "%TEXPRINT-W-PARAMS, Too many parameters \''next_par'\" +$ had_warning = "TRUE" +$ param_ctr = param_ctr + 1 +$ IF param_ctr .GT. 8 THEN $ GOTO Print_It +$ GOTO Next_Param +$ ENDIF +$! +$! Extract file name preceding any local qualifiers, and default to .LN3 +$! +$ elem_ctr = 1 +$Next_Element: +$ file_name = F$ELEMENT(0,"/",first_part) +$ first_part = first_part - file_name +$ next_file = F$PARSE(file_name,,related_spec,,"SYNTAX_ONLY") +$ IF F$SEARCH(next_file) .EQS. "" +$ THEN +$ SAY "%TEXPRINT-W-NOSUCHFILE, Couldn't find file ''next_file'" +$ had_warning = "TRUE" +$ ELSE +$ had_name = "TRUE" +$ IF file_list .NES. "" THEN $ file_list = file_list + "," +$ file_list = file_list + next_file + first_part +$ related_spec = next_file +$ ENDIF +$! +$! Now go back for next element of next_par, if applicable +$! +$ IF .NOT. following then $ GOTO Print_It +$ first_part = F$ELEMENT(elem_ctr,",",next_par) +$ elem_ctr = elem_ctr + 1 +$ following = F$ELEMENT(elem_ctr,",",next_par) .NES. "," +$ GOTO Next_Element +$! +$! We've got everything required to execute the print command +$! +$Print_It: +$ IF .NOT. had_name +$ THEN +$ SAY "%TEXPRINT-F-CREJOB, error creating job" +$ SAY "-JBC-E-EMPTYJOB, no files specified in job request" +$ EXIT %X10000004 +$ ENDIF +$! +$! The queue itself decides whether we print a flag page or not +$! +$ PRINT/QUEUE='P1'$LASER/FORM=PLOT$FORM/NOHEADER/NOFEED - + 'global_qual' 'file_list' +$ print_stat = $STATUS +$ IF .NOT. print_stat THEN $ EXIT print_stat +$ IF had_warning THEN $ EXIT %X10000000 +$ EXIT %X10000001 +$! +$!- END OF TEXPRINT.COM -------------------------------------------------------- -- cgit v1.2.3