`@ F#HyHyHyNNO a\Hzd?< NA\a Hz?<NN\E@aEaEa<<aAR0w1|/?<NN\NuaxaPaBa4HyNAXJ@fQNu J><'0D @o 0XQNu0<?`E@x`Ex` Exa*aa&Nu-* Fingerbobs Parallax Intro v2.0 *-><' Jpr024C@@0@ @4B2QNu <wAM2$̄G0&0V肵VQNu 8ffgNuEY," BOBS PD IS VIRUS FREE wp"3DU VO` @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@UpY[]_a c@e`gikmoq s@u`wy{} @` @ ` ` 0 @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   /A!!#%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!CBa!Ao!Aaǁɡ!Aaׁ١!Aa!Aa " B @$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%%_&a"&cB&o&g&i&&m&o'qO'ub'w'O` @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ S@UpY[]_a c@e`gikmoq s@u`wy{} @` @ ` ` 0 @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa   /A!!#%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!CBa!Ao!Aaǁɡ!Aaׁ١!Aa!Aa " B @$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%%_&a"&cB&o&g&i&&m&o'qO'ub'w'DEFAULT BRS t DEFAULT CFL t DEFAULT MFL t QRT $`VHYPERPNTTOS $n yDEFAULT PA1 t "DEFAULT PA2 t "PAINT DAT t PAINT OPT t PAINT PRG t PAINT PRT t ^PAINT0 RSC t z\PAINT1 RSC t T_PAINT2 RSC t ,gREADME DOC t DESKTOP INFBt SAFE4MAT t 0`  `0``UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU{{{?~~~~~~~~~~~~~~~~~~~~~~~~~?  'O??ϟ??@ 8p??    """"""""00nnsswwssnn0000nnsswwssnn0000nnsswwssnn0000nnsswwssnn00@@@@@@@@ϏǏσσǃ@p ppp(p|8>p|--------........////////__P@ ???0?@@@@@@ P PX'dsNAG@@@@@@@ P PX'dsNAG@@@@@@@ P PX'dsNAG@ qa~~~~p88pp88p????/wx/wx/wx8800886>>~vuccm~mXcok^d喧f~wc_==vm[ٛ޺~g}UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""""""""""""""""""""""""""""""""UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU @'@   @'@   @'@  ???|DDL@@OHHIII:I"I"I`oolmmmmmm|DDLWWWW/''''' ""UU""UUUUUUUUUUUU""UU""UUUUUUUUUUUUUUUUUU  ? /(((((((/ ?UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU""""""""UU""UUUU""UUUU""UUUU""UUUUUUUUUUUUUUUUUUwwݪwwݪwwݪwwݪAA"" @@AA"" @@ @@ @@PPPP@@ @@ `f3`f366ccǏ||66ccǏ||AA""AA""wwwwwwwwAA>> AA>>ぁBB$$BB$$>>>>>>>>""DDDD""""DDDD"" @@ @@ 00`` 00``BB$$$$BBBB$$$$BB @ @8p8p@  @@  @SE PACK-ICE v2.40! no other versions are supported. * *-----------------------------------------------------------------------* wppwU33ss77w-IceI *L ,Lja*oMGLA "grѓg f``GP$]t***Ԋ**EL ;H ;C&NN&&Sj&n".扑&&SjN%a*d"ra$dCv !a"H@@Vҩ%QnNuf%Nurf%AQNuCtaTxr1 Hka1 Ag"CvtaTr1 HaBq jD`rptadpt?aBC@!!Q`R   ICE! tj`fWRBg AiN[eXp.$^̄HRE6j:$_X*(.  Bl\O6HziP3NPAa?<ONATOJghf ACi&EibG0:j2A&oQg` "\fRJp B#"1TN?PCS?ҖJԃ.!i!`<(dpS xd8r`H0d^8djGwpwppwU33ssH.]޲@ xGG6"av3O 2ρN2gΔKc E:.R-,fSAj_>LQ1*f3cܝbڈf/if`Q#i*niȔL7rC!F,H`z@;k.J40aF90J+wg P˩aa([^+a$Q73 ن|(?x0 BE@d{iy0<?"h3# df8ĸ;1I`j2{"ΔZ:6&Hj: gDA ؼ[`.(gf\I`RScv`|%^xoXHW`pC  $`  Desk File Options About PaintPrt ---------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 New Open.. ---------------- Load options Save options---------------- Print Quit Picture type Print options 01No of copies : __99CancelOK Set print options Scaling: Best fit OFF X only Y only Initial Form Feed YES NO Final Form Feed YES NO Horizontal LeftCentreRightTopCentreBottomVerticalSelect picture typeNeochrome *.NEODegas Normal*.PI1*.PI2*.PI3Degas Compr.*.PC1*.PC2*.PC3Bit Image *.IMGGEM Metafile*.GEMCancelOKArt Director*.ART (c) 1988/90 Dimitri Koveos OK Written by Dimitri Koveos PAINT.PRT filename.ext FILE :WIDTH :HEIGHT: SIZE :640 400 32000 PROCESSING.... [3][I can't find |the printer driver][Abort][3][Picture file not found|or too large][Cancel][3][Not enough memory][Cancel][3][Some processing error|has occurred.|I can't proceed.][Cancel][3][Cannot find PRINTIMG.OPT][Cancel][3][Too wide for the page.|I'll rescale.][Continue][3][Too long for the page.|I'll rescale.][Continue][3][Printer not ready!][ Cont. | Cancel ][3][ Toner Empty! ][ Abort ][3][ Paper Empty! ][ Cont. | Cancel ][3][ Printer Error! ][ Abort ]?????>?~?~????????????????????3u-Jp@ehz   =FG H\]^kl s     !=>?NOP^_`hijrst}~  PP $ + 2 P < N e z #4<D T'}q  %         #  #: %V  %%+ /6 r'q m              6 1 $ R ""  n   @@         2 N  j  B With enough interest I could post them. GET01 screen must be set to low resolution mode. Once started, type '?' for help. Keys 'r' reads and 'w' writes the current screen using the current disk file, whose name is displayed in the upper left corner of the screen. Key 'e' exits. The average number of rays shot through each pixel is also displayed in the margin and updated as the computation develops. After unpacking PEARLE, the first logical thing to do is to start it up with configuration file PEARLE.IN supplied. After a few minutes, you'll see the resolution increasing. You might wait 1 to 4 hours to get complete development, but if you get bored, hit the 'r' key. This will read the one pre-computed picture PEARL001.PI1 which came in the "arc". Now put PEARLE aside until you are willing to dedicate about 6 hours of the ST for making a movie. The configuration file PEARLE.IN will also do that. When done, you will find the movie in a sequence of disk files named PEARLxxx.PI1 . Play these using BLASTRAM.`P0*o"m #.I+I/ BBBg/ / Bg?<JNA NT ?N?<LNANVPHNm"3ZN|r @g #i p?NNTO3" @b2H0@ PN`"Hy^`Hyi`HytHnNPOHnNRXO0fHyp?N~r\O`09Zgp3 Rp3 y l09RyHA Rp0`p3 fHy |HyHy RNB 09fB@`p=@09g?N$TO`BnBy y lV09HA09PH, 09HA b09HHЎ Ry`By y lj09HA p09HHЎ 09HA 09HЎL 09HA :BPRy`p?NATO@A@p:@B.HnHy"NPOBgHy$pG?NAPO09"@H@1Hy"/9N/|.N/yXONXO0@9H/9NXOR@0@Bp3 y l*/909HA/NPORy`p?BgNXO09"T@3 Rp3 y l09RyHA Rp0`p3 fHy N"XOBy ylLBn n l80.HE b09H @09HC 0Rn`Ry`HyHy"HyHyN3Hy |HyHy RN By\HnHy_MCHNPO0g .@ fp3\09 |R@3 l09 ~R@33 3 Hy |p??9NPO3  N2X3 l309@33 By09@3 H/69 Hp/pH?NA\O/NPOR3 @ op 3 yl609ZgBg?9NXO?9NTON N|`3f09 H-@/pH?NA\O-@@# x/.pH?NA\O-@@#/.pH?NA\O-@@# y"g /.pH?NA\O-@@#By09yljHG^/.pH?NA\O&09HE 09HA "P09HA^ @"$Ry` 9 ##BBy By 3 l 3 B HyHy NV/|.Hy HyBgN~=|HnHnHnHnp?BgN3 y"fp`pn33 y"fr0`r0.֐A3HnHnHnHy??9?9?9?.p?N09"fr0`rP0.ؐA=@09"fp `p0n3HyHyHyHy?.?.?.??.BgN?y?y?y?y?nNT 3 BgBg/9p??9 N:?y ?y?y?y?y TON 3093 =@0.3 =@0.3 =@0.3 =@p?NTOHnHyNV/y p. NVPO y Hy p?BgNPO0fHyp?N~r\ON Hy Bgp?N/| 6XOp?p?N/| tXOp?p?N/| XOp?p?N/| XOp?p?N/| XOp??N/| XOp?p?N/| XOp?p?N/| xXOp?p?N/|XOp ?p?N/|XOp ?p?N/|XOp ?p?N/|XOp ?p?N/|XOp ?p?N/|XOp?p?NPO0.fBgp?/9 NPOHnp?BgNPO y"g nhj`D nhjHnp ?BgNPO n0(@1@ n1@B n1@* n1@Hnp ?BgNPO nhjp?/9 N\ONkj#Np?NNTO# N09 H3 | y"fpP`0<3 23 l3 y"f 09P@`09P3 y"fp`B@3 09R3 y"f #b#x#z`#0b#x#N VNtN\N.N(Hy p?NN\O09 :g y gNyBy09ylHA^/pI?NA\ORy` y"g /.pI?NA\O/.pI?NA/nTOpI?NA/nTOpI?NA\ON LN^NuNVH8KIjG "+y x 9 N+@ )@'y 9'@ )@ 09 |7@$7@9@$9@;@$;@09 27@&7@9@&9@;@&;@p7@(7@9@(9@;@(;@p@ @ @ @ 09 7@9@;@p'@*)@*+@* y"gKI 4 9)@ +@)y x+y N p9@$;@09 |9@;@$pP9@&;@09 29@;@&Bl(Bmp9@;@(09 9@;@B*B*L8N^NuNVp/p ?NA\O fBp ?NA\O-@`B-x .g /p ?NA\O .g* n f . g"H @ p` nP fB@N^NuNVBg?9N}LXO=@p?p?N}LXOBp3i09"fp`p3iBn3 #&Z#N ~0.f^HyHy Hy Hy HyRHyNHy2HyBBBg?9 ?9 ?9 ?9 ?9Hyp?p7?N}p<3p?N~TO09@gNHyHnHyHyN0.@g N `:09@g yb g09@ g\ 9 gT09gL09FfD09rS@yNf09R@yRg$09hg09.f?9R?9NN1dXO09@g09@fNv09@g N=@09@g By0N( 09@gb09@fV09 f09gF09g> 9g6p09 //9/9Nl?yR ?yNPONXOBgN~TO0.gBBgN\Op?N2JTO3 @fp?Na`TOBn/9?9N\O`p??.N}LXON^NuNV09g,BgBgNXO 9 g,09FfN`N`/9?9N\O09fp`B@3N^NuNVBn09 y g>p=@HyHyHyHnp ??9 N0.y f Hy ?9R?9NNlPO0gp09 //9/9Nl 9g?9R?9NNl` 9g?9R?9NN` 9g?9R?9N?9"N:\O`~ 9g?9R?9NN`^09&g?9R?9NNʔ`@ 9g?9R?9NN>`" 9g?9R?9NN|` 9 g?9R?9NN2` 9g?9R?9NNN8XOBp#N9Zp3:?.Bg?9?9 ?9 ?9 Bgp?/9 N4?np??9?9 ?9 ?9 Bgp ?/9 N4p 3`609 y g(?9R?9NN?yR>NNXON^NuNV?. ?.p?Bg/9 N =@o09HA=P y"f nop` y"f 0.gp=@0.R@=@ngp?Bg?9v?9 n?9 ?9 Bg?./9 N4p?p??9v?9 n?9 ?9 Bg?./9 N40.S@HA3 yf"09.gNhN=09.gNhxN^NuNV?. ?.p?Bg/9 N =@o$ygxp?Bg?9?9 ?9 ?9 Bg?9/9 N4p???9?9 ?9 ?9 Bg?./9 N43N0.S@ @bH0@ PN`N2p# yfN;L#`XN2p# yfNB#Z`,N2p# yfN6#`N2p# yfNBy `09f yfp38 yfN6N2p#`8N2p# yfxN9`pN2p# yfN `ZNf`RN2p3& yfN9#R`( yfN6N2p##N^NuNVH K09 y g p?N~TOHy p?N l\O0.;@:0. ;@;@09rg$09 @y H>09 @y H<?9?9N:XOp??9NXOp??9N?y>NXOp???9Nt?| XON`TO/ p??9N4PO09rg/ ??N2POHyHnHnHnN0.@gH0-Uf 0-mg/ p??9N4PO09rg/ ??N2PO:;m`Hy BgN l?| XON`TON09 y g p?N~TOL N^NuNVH K n 0.P>0. h<0.h:0. h809Tg,: n :: n :K/ p??9N4PO09Vg* n :: n ::K/ p??9N4PO09Xg ::::K/ p??9N4POL N^NuNVBnBn=yN\0gp=@09@ @bH0@b PN` 09HA=P y"f nop` y"f 0.gp=@Bgp??9v?9 n?9 ?9 Bg0.R@?/9 N4?yv?y n?y ?y p ?Bg/9 NBgBg?9?9 ?9 ?9 Bg?9/9 N4?y?y ?y ?y p ?Bg/9 Np???9?9 ?9 ?9 Bg?9/9 N40.y f 9A b/p?NN?y?y>?9NPO`n?9?.N.XO=@`Tp`0.g&HnHyNV/|. pNVPO09 @bH0@B PN`Bg09ʐy?NXO3`09y`Bg?9?9p?NB\O209ʐA`?9?9p?NB\O`Bg09Ȑy?NXO3`$09y`Bg09@`y0.g4/9 pHyNV/|XOHnNVPO`0.g4HnHyNV/|. pNVPO y 3?<?909Ԑy?NB?@XONTO3``0.g4HnHyNV/|. pNVPO y 3?<?909֐y?NB\O30.g2/9 pHyNV/|XOHnNVPO3p?NTON0.N^NuNVp09 //9/9Nl/|/| . Hy BgN~N\0gV y 0(H/09 H/N/@XO y 0(HH/NPO-@/Bg y /Nl` NN^NuNV09.gNh?9 N8> NTO09ZgBg?9NXO?9NTON N|N^NuNVHn/. NPOHn?.?9NPON^NuNVp30=yHnHy NVPOHnHyNV/| . NV/|. NVPOHn/9 pNV?| \ON`TOHy BgN l\Op?p//9p?NN N\0g y p29h y 0(A=@l y ph y p1y y 0(yl6 y p1@3 3 y pBP09y ?NTO`6 y p29P y 0(A=@l y pP y p1yp?/9/9 Np?NN p%?NN> N8BW/9 N\Op09 //9 N/9Nl p?/9 N/9 Np?NN p%?NNTO/9?9N?| XON`TOHyHnHyHyN0.@fp?N~TOHyHy Hy Hy HyRHyNHy2HyBBBg?9 ?9 ?9 ?9 ?9p?Hyp'?N}p<=@Hy HnHyHyN09\g0.@g09 @gN\0g/9 p/9 NdjPO y p=P=hHyHy/9 /p?N~BgNTOp%?NNTONHyHnHyHyN0.@f0.@f0.@g yb g0.@gN0.@ gT 9 gL09FfD09rS@yNf09R@yRg$09hg09.f?9R?9NN1dXO0.@gNv0.@gN( 0.@g0.@f09 f 09g09g 9gp09 //9/9Nl?yR ?yNPONXO`p?N~> N`TOHy HnNV/|XOHnNV/y pXOHnNVPOp?/9/9 Np?NN p%?NNTON&Bp?NTOp?/9 N/9 Np?NN p%?NNTONp%?NNTO3?< N`TOHyHnHyHyN0.@fN^NuNV y"fp`p??9NJXOp??9NXO y"fp`p??9NXOBg?9NXOp??9NXOBnBn09S@=@09 S@=@Hn?9NV?y?y>?9?9 N p?/9 N\ON^NuNVHp09 //9/9Nl N\0g y :(8( y p><(??9NXO2G0A6lC??9 NXO2F0A6lCp?????9 N?@>?9N?@BWBg/9 HyNNLN^NuNV 9 gN-09 @f09 |r`XHXW PN``N',`VN`LNB`BNp`8p?N2JTO3 @fNX`N` p?N` y"gp`p`N4`N<`N8t`?9(N=jTO3(`p38`09gN9Zp3:`09gN9Zp3<`n09gdN9Zp3B`R09gHN9Zp3H`609g,N9Zp3D`09gN9Zp3F`09gN9Zp3J`09gN9Zp3L`09gN9Zp3>`09gN9Zp3@`?94N=jTO34`v y"glN_Z`d y"gZNVj`R 9 fJp?N*`< 9 f6Bg` y: o( yE l09 @@@;=@?NXTO090gNN^NuNV?< N`TOBn0.gB` 09S@H-@0.@fp%?NNTOp? .A /p/p?NN p%?NNTO .A b/p?NN\O0.gR`SHnHyHyHyN0.f .l09S@H-@0.g29H .mB0.@g ~m ~0.@g ~l ~B .~nR`p?/9 Np/p?NN p%?NNTO 9A b/p?NN\Op%?NNTON?< N`TON^NuNVH09 y S@609 y S@=@0.> n 0=@=@0. < n0=@=@p??9N:XOp??9NXOp??9NXOBgBg?9Nt\Op??9N. p?N l\OHnN.FXOHnHnHnHnHnHnHy HyBgBBp/??p?BgHyp&?N}p<=@@gx?< N`TON0.y l =y ` 0.Co=C0.y l =y `0.no=n n 0 n0?< N`TO`H0.@g(:.8.=G=FHnN.FXO=E=DHnN.FXO>.<.`Hy BgN l\OLN^NuNVH0*nI09@9@ 80-9@9@9@0-9@9@0-9@9@ ?< N`TOp%?NNTO/ p??9N4?| \ON`TOL0N^NuNVBgBgNXOBByBy0.W@ @bH0@ PN`0. @ @ bH0@Z`p?N2JTO3 @fNX 9f yfNm 9A-P nRf nS .f nRH nRH/.HnNPO nS \f nRH nRH nBHyt/.NPOHn/.NPOBgBg 9A/p??9 N: `p?N2JTO3 @fBgN\\`p?Na``Bg`p?N2JTO3 @fp?`Ndn`~Hy0NnXO0g~ 9A/HyN/|XONXOHH@@ Hy~HyN/|.0p???Np-@`/9p?N~r/|TOHy0NPO`Bp?N\ONkj/9?9N\O`Bp?N\ONlx`0. @ @ bpH0@`XNTn`ZN;L`RN6,`JN `BN6`:N6`2N9`*N9`"N:`N6` n f BgN2JTOp??./9 N/y?yTON\O0.N^NuNVN^NuNVHn?.BgNPOHnHnHnHn/.NfBg/.N<\O=@BgBg?.?.?.?.Bg?/.N4?n?n?n?n NPO0.N^NuNVBB# ###BB3&H###p3$N^NuNVBnHn?.BgNPOHnHnHnHn/.N~HnHnp?/9 N n1n0.S@=@ n1@?.?.?.?.p????BgN~=n=n=n=n?.?.?.?.p ?Bg/.Np=@p=@p?N~TOHyHyHyHnHnHnBgBgHy?.?.?.?.p??.?.?.?.Bg???p?N}p<=@@f0.@g?.?.p ?Bg/.N =@nf0.g ng*p?Bg?.?.?.?.Bg?./.N40. @0( @f@0.n m6p???.?.?.?.Bg?./.N4=nBn` p=@=@0.@g ng*p?Bg?.?.?.?.Bg?./.N4p=@p=@`xp?N~TO0.f60.n m,p?Bg?.?.?.?.Bg?./.N4`p=@?.?.?.?.p????p?N~N0.N^NuNVp?p?N34XO=@ @g6W@ @b.H0@ PN`NB`NY`NZn`NZN^NuNVp?p?N34XO=@ @g ?NTON^NuNVHnp?BgNPOp?p?N34XO=@ @g ?NTON^NuNVHnp ?BgNPO09gz n0(@gl0(Z@1@Z n1@ n1@ n1@* n1@B n1@ n1@ n1@ n1@ n1@ n1@ n1@p3:09fp38098f09:gFp=@ nn0. @h Rn`098gp`p @h p?p ?N34XO=@ @gP @nB @g`&N9Zp3@`N`NF`NZN^NuNVBy@B@3L3J3H3F3D3<3>3B3:38ByN^NuNVp?p?N34XO=@ @g ?N4~TON^NuNVp?p ?N34XO=@ @g ?NɖTON^NuNVHnp ?BgNPO09pg nh` nh09rg nh` nh09.g nh` nhp?p ?N34XO=@ @g ?N:TON^NuNV0.Y@ @ bH0@ PN`p?N2JTO @fvNX`n09pF@3p`^09rF@3r`NN_Z`FN> `>NVj`6N=`.p3NZ`p3N[D`N`NmN^NuNVBgBgNXO09R@@=@p??9N:XOp??9NXOp??9NXOp???9Nt\OHnp?BgNPO0. @h HnHnHnHnp?/.NHnHnHnHn/.NfBg?<NXOBn nlvHnHn0.R@?/.N0.HR@??9NXO0.@n=@=@0.@n=@=@Hnp??9N4PORn`Bg?<NXOBg/.N<\O=@p?Bg?.?.?.?.Bg?./.N4?n?n?n?n NPOp?p?/.NTPO=@ @h n g0.HS@3/9?9N\ON^NuNVBgBgNXOHnp?BgNPO0.^@=@ @h p?N2JTO=@p?p?/.NTPO=@ @h ng 0._@=@/9?9N\O0.N^NuNVHnp?BgNPOBgBgNXO09Tf"09Vf09Xfp3T nhp?N2JTO=@ @fN n0(@gp`B@3T n0(@gp`B@3V n0(@gp`B@3X09Tf"09Vf09Xfp3T nh/9?9N\ON^NuNVH809g?. ?.NKXO`09g~Bnp=@p=@p=@ y"gK 4:;y;y;yBmBmB- B@@ @ @ / ?<N`\O;y p;@BmB*p@ p@ p@ p@ / ?<N`\O;y B*p=@KIjG>.<. 69 =y 0y S@=@0.y S@=@-yBn?< N`TOp09 //./9 NNl ;y;y0.@ @ @ @ BkBk0.@ @ 0.@ @ p@ @ @ @ 09 y g p?N~TO=y=yHyHnHyHyN:9890Gf0Ff 0.@fBCl:` no:.0nS@no 0.ER@=@nl8.` no8.0nS@no 0.DR@=@p?/./.p?NN p%?NNTO;E;D:;n0.g27E7D67n nfp`B@7@/ ?<N`\O/ ?<N`\Op?/9 N/9 Np?NN p%?NNTO09@9@09@9@89n/ ?<N`\Op'@*)@*+@*09 7@9@;@0.@fN?< N`TO`><`H09 y g p?N~TOL8N^NuNVHnp?BgNPO09g=@ nh*`p =@ nh*09f nh` nhHnHnHnHnp?/.NHnHnHnHn/.Nf?| N`TOBn nlpHnHn0.R@?/.N0.RAp0Hyh0.R/0.n?0.n??< N`Rn`p?p??.?.?.?.p??./.N4BgBgN?| TON`BW/.N<\O=@p?Bg?.?.?.?.??./.N4?n?n?n?n NPOp ?p?/.NTPO=@ @h n g n gjBn nl<0.@HA&2.I\AH0.S@RЁC0Rn`3#&Z n fNEL`By#Z/9?9N\ON^NuNV/=yHy p?BgNPOHnHnHnHn/9 Nf/| /|  /| /| XOp?/9 N/|/|/| /|\Op ?/9 NNJDBnp?N~TO0.fHnHnHnHnHnHnBgBgHyBgBgBgBgBgBgBgBgBgBgp??p?p?N}p<3@g?.?.?.NPO.N^NuNVH09S@:~ Gl&0@HA&0HC0RG`#&Z~0HA0f GlRG`0RApG0~0HA0f0oSG`0RA0Q@0p=@v~ Gl^0HA80gF|f FlRFL`nd=F0HA8|f 0oSFL`Cc6RG`0RA0@00RApn0LN^NuNVH09S@>| F)l*0HA 2H0RЁC0RF`| Fl.0HA2I\AH0RЁC0RF`p?NJTOLN^NuNVH 09S@809@y>09@y<z El.2I\AH0RЁA0HC0RE`0R*@?< N`BWHyN$/|hTO/ ???< N`0.gHyHy N)PO?< N`TOL N^NuNVH 09 @y H=@09 @y H=@09S@R*@0-Jy >09 y mNS@<0-Ly :09 y mPS@809 yfv`v09HA;Pp=@09 y g p?N~TOHyHnHnHnN0.nf0.n f 0.@f0.g?< N`TOBn0g40.Fo=F` 0.Gl=G0.El=E` 0.Do=DHyh/ ?.?.?< N`09rg0.n=@0.n=@0g40.Fo=F` 0.Gl=G0.El=E` 0.Do=D09TgHyh/ ?.?.?< N`09VgHyh/ ?.?.?< N`09XgHyh/ ?.?.?< N`=n=n 0.@fx09 y g p?N~TON?< N`TOL N^NuNVH=y =y 0.y S@=@0.y S@=@HnHyHyHyN0.@gBn`p=@Hy p?N l\OHnHnHnHnN y =h=h0.3:>=@=@0. 38<=@=@p-@p=@69 0S@=@p??9N:XOp??9NXOp??9NXOp??9NXOBgBg?9Nt?| XON`TOHnp??9N4?| \ON`TOHyHyHyHyHnHnBgBgHyBgBgBgBgBgp???.?.?Bg??p?N}p<=@0.nl=n`0.no=n0.nl=n`0.no=n0.fp=@ .RA0 .RA0??.NXO:??.NXO8??.NXO>??.NXO<2.H .ְnN?< N`TOHnp??9N4?| \ON`TO0.@f=n=nSn`0GR@30FR@3 .-@Hy BgN l\OBg???9?9??/9 x/9 xN0p?NNTO-@?< N`TONp??9NJXOBg?9NXOp??9NXOp?p//9 xp?NN 2H .ְnHy0.`0HHm0Hy??9NPO0HU@H/0.ؐC`THy??9NPO0HU@H/??9NPO0HU@H/2I0.ؐAR@??9NPOp?p//.p?NN 0n30n3p????9?9?9?9/9 x/9N0p3 <#/?9N\O0.gp??9?9?9?9??/9/9 xN0N\0gNp??.?.?.?9 N?@>?9N?@BWBg/9 HyNNHnHyNVPO=G=Fp??9NXOp??9NXOHnNXOp??9?9?9?9??/9 x/9 xN0?| N`TOLN^NuNV/ Hnp ?BgNPO09 @h p?p ?N34XO=@ @g<09 @h 0. @h 3 yg 3 `N\0g y p3 B.09Y@ @bFH0@~ PN`6Hy`"Hy`pIHy` pC`HyHnNPOBn0.yl6HA*Pf MS .fRRBHn/ NPORn`BgBg 9A/p??9 N: p?NTON*_N^NuNVH009"fp1`p209gHy`v09g yfHy`\Hy`T09pgHy`D09Y@ @bDH0@ PN`4Hy`Hy`Hy`Hy`HyHy"NPO0.fB.`09pgHyrHnNPO`09g yfHy~`Hy`09gHy` 9A*Pf \gS`RB./ HnNPO yg yf$ ygKgR`09H@1HnHnHy"N` N.fBn.g^0.gX09pg HnHyr`<09g" yf HnHy~`HnHy`09gHnHyNPOK"f \gS`IR Mf0.L0N^NuNV/ K"f \gS`B*_N^NuNVBnBgNUTO0g>Bgp?N./. Hy"NX =@0fN\BBgBgNXONX*0.N^NuNVp?/.p=?NAPO3 m,/./. ?p??NA?y p>?NAXOp=@`Bn0.N^NuNV?.NUTO0g$Bgp?N. /.Hy"NYD NX*N^NuNV/.NmvXO0gHyp?N~r\O`/.Nm.XO l/9 6`p?/.p=?NAPO3 o?p>?NA.pA?NA\OBg/.p?NAXON^NuNVH 09S@)H*@p3pHyHyNXLPO0g.~ Gl&0@HA&0H\@H"@0RG`BypL N^NuNVp3pHyHyp?NY BypN^NuNVp3pHyHyBgNY BypN^NuNVp"/HnNXLPO0gV0.ްy"g/9 p?N~r\O`6p ?Hn 9A b/NN Hnp?NN\ONByN^NuNV=y"p ? 9A b/HnNN p"/HnBgNY ByN^NuNV yfHyHyX` HyHyvNXLPOByN^NuNV yfHyHyX` HyHyv?.NY ByN^NuNV/9 6p?N~r?y XOp>?NA."pA?NA\ON^NuNV/9 p?N~r\ON^NuNV?.NUTO0gBBgp?NXOp?Hy"p=?NAPO3 m09Y@ @bH0@ PN`HnHy?9 p??NA 0.y"g@/909 H/?9 p??NA Hn/9/9?.Ne*` /909 H/?9 p??NA HnN`XO=n00.@g0.@@3i0.@3i=n20.@gn nlp3i3i`Byi0<n3i`09"gX/909 H/?9 p??NA HnHy?9 p??NA Hn/9/9BgNe*`:/909 H/?9 p??NA HnHy?9 p??NA HnN`XO`4p3Hnp"/?9 p??NA 0.y"gt/909 H/?9 p??NA Hn/9/9?.Ne*-|" ngR`S n09"H@13` /909 H/?9 p??NA Hn"p /?9 p??NA f<0."@3i0.*@3i0.2gp`B@3i0.:@3iHn`p3Hnp"/?9 p??NA 0.@f$/9 p?N~r?y XOp>?NA`n?.?9 NfXO0.y"gp09 //9/9Nl Hn/9/9?.Ne*-|" ngR`S n09"H@13`Nw0g09fNaN`N\BBgBgNXONX*N^NuNV?9 p>?NAXOp ?/. 9A b/NN/n\Op?NN\ONaNN^NuNVHy" 9A/NPOBgBg 9A/p??9 N: N^NuNV yf09"gHy"p?N~r\O`?.NUTO0gHy"NmvXO0gHybp?N~r\O` ygHy"Nm.XO l/9 6`Bgp?NXOp?Hy"p=?NAPO3 m?p>?NA."pA?NA\OBgHy"p?NAXO0.fJNa`@HnN".09 H/?9 p@?NA HnHy`=y"HnN"XO=yi"=yi*09igp`B@=@2=yi:Hnp"/?9 p@?NA/yPO09 H/?9 p@?NA Hn"p `09"@=@HnN"XO=yi"=yi*09igp`B@=@2=yi:Hnp"/?9 p@?NA?y NiHTO`09gp=@?.NhTOBgBgNXONX*N^NuNVBgNUTO0gHy"NmvXO0gHyp?N~r\O`xp?Hy"p=?NAPO3 l/9 p?N~r\O`@/9 p?N~r\O @f?9 p>?NA."pA?NA`?9 p>?NAXONX*`TNX*N^NuNV09" @bH0@ PN`v0. @g @g`b/././. NrZ `Hp ? 9A b//.NN 09\g0<`0<w n0 n1|U n1|D n1|3 nBh/./. NqPO`0.J@g @g`/././. Ns`\09\g0<`0<w n0 n1|3 n1| nBh/./. Ns``0.J@g @g`4/.Nph./. No`/.Np./. NpPO09\g0<`0<w n0 nBhN^NuNVH p4. `=@BHU@60fp`p(=@ n f0<`0<=@ n fpP` <-@ 9-@-@HypH?NA\O-@-@*y/ 09 H/?.p??NA -@0.g*f6B@R@?/ /.NN B@R@?BgB@T@H@B@H@`4B@ @g*B@F@R@UB@R@?B@?/.NzPOB@ @g$B@R@?Bg n-HB@R@H@B@H@Ѯ .ȰmNB-nxnlP0HHЮ-@znl6 nR"nR nR"nRp0 n-HRE`RD`-n n-HSn`/.pI?NA\O .g mp ?/ HnNN `<0.?/ HnNN . @Hhp /?.p??NA 0.@3i0.@3i0.gp`B@3i0.@3iL N^NuNVH xzBBn09 |U@=@09@=@ 9-@-@HypH?NA\O-@-@*yBn0.y lBn0.y lXHHЮ-@~Bn0.nlBn nl nRBAB@AfP nfB-nB@@B@?/./ NN B@?BgB@R@H@B@H@ѮzRp`2 nfB@@F@B@Tx nRB@Rp=@B@Rn`N n-HRn`*gD-nB@@B@?/./ NN B@?BgB@H@B@H@RѮz`B@@F@B@TxBnRn`09 2H n-HRn`r/.pI?NA/yTO/.?.p@?NA lB@`pL N^NuNVBn y"gxHyvHyHyNX 09"fHnp"/Hy`Hnp"/HyNX =@0g$p ?Hn/9 bNN Hnp?NN\OHyXHyHyNX/|/|.NX 0gDp3Bn nl00.@HA&0.H\@HC0Rn`N^NuNV y"glp ?/9 bHnNN =y"HyvHyHyNYD 09"fHnp"/Hy`Hnp"/HyNYD HyXHyHyNYD/|/|.NYD N^NuNV nH@@=@?Hnp6?NA/nXOHn/.N/@XONPON^NuNV nH@A=@ @nDp?Bg???.BHnp?NNp?Bg???.BHnp ?NNJ@lp`B@N^NuNVH K U0(H/09 H/N/@XO U0(H/NPO-@BgBgNXOHnp?BgNPO09" @h yf 9g /9 `p?N2JTO=@p?p ?/.NTPO=@ @h nfNs>N` ngp3"=y nf3"09"@ @bTH0@ PN`D=|=|P`6=|=|`(=|P=|@`=|@=|P0.@@=@ y"g09"fl y"f^`X U=h=hHnHnNr~PO0.g0.g0.yo @@=@0.y l=y 0.H/09 H/N/@XO0.HH/NPO-@ y "g0.yf60.y f* U gNy U By By :`(09 H/09S@H/NPO&p/pH?NA\OЃ-@ U g .Ѯ o .m U gNyp/pH?NA\O-@/./NPO0fH/9 xp?N~r\O U =y=y =yBy By :p 3"`8/.pH?NA\O U op3 p3 :/.Bg U/Nl` 3 3 HyHy Hy Hy BgN~?y?nNXO3 U1n U1n U1n U1y UBh y pBh y pBP y p1y ?.?9 NXO y p1@Hy p?N l\Op?NTONHy BgN l`/9 xp?N~r\OL N^NuNVH0*n(n Hnp ?BgNPO n h<  n h?NAXO-y# xp?BgBg?9 ?9 BgBgHyHy N#ByBy3 3 p3N9Zp3:p` 9f09 gNy 9A /N{XO0g?9 p>?NAXOBy*By$ 9A p PBh 9A p PBP 9A p&P 9A P?(?9NXO7@ 9A p&P 9A P?(?9 NXO7@N{09 g y p3 `3 9A p P1y  9A p P1y  9A P1y 9A P1y  9A P09@@1@Hy p?N l\Op?NTONHy BgN l\O`"?9 p>?NA.`?9 p>?NA.p?N~r\OB@&_N^NuNV/ y /pI?NA\O09yfl309yflHG^09 H/pH?NA\O&09HE 09HA "P09HA^ @"$p09 /Bg09HA^/Nl` Ry`J3f 9A :BP y  p09 /Bg/9 Nl` &_N^NuNVN^NuNV 9A :0gp?BgBg 9A P?(?9 N?@TO 9A P?(?9N?@TO 9A p P?( 9A p P?Hy 9A /NN^NuNVH0Hy p/?9 p??NA gB@`3  3  3 X3 09X^@@309X@@H3 r3Xb3HnHyHyHyN0.@f8?9?9?9 ?9 ?9NB?@XONB\O309Xyn09y o p3 `By 09 g 9f09f09Xyl09 g09` 09X@@=@09 g09y l09 `09=@p0./p09 /N/@XO0.HH/NPO#p/pH?NA\O-@3 09 gPr29 9Ё-@//.NPO0g/9pH?NA\O# J n  J 9 Jg n1yX n1n n1n n1y 09 f n  n# J09f 9A :p0# t09H/pH?NA\O-@ of# y o09 rH#`B0.HH#^Hy^09 H/NPO# p/0.H/N/@XOBg/9 JNl` # By y o/909 Q@HH/?9 p??NA yRfd yRB@ @fN09 y f@p ?/9 9A b/NN 9A b/p?NN\O/909H/?9 p??NA 3By/9^09 H/N/@XOBg/9 tNl` 3 3# J-y t=yXp=@=np=@=y 69=yx~ylN<9 y o:(y tHy^0S@H/NPOй t*@:9 0oSE`SF`<9 y o8?9 /9 t/9^0S@H/NPOй t/NN SF`CymXylNRG n  J/.HnNm6PO y J p# Jn`/.pI?NA\O n 09f$HyHy HyHy BgN~ nBh pL0N^NuNVH09g Sy` yfHHnp?Nj\O yf"Hnp?Nj\OB@.@3` SSyxy d>/9^p0/NPOй t# lzyd yB@@g`Hnp?Nj\OB@@=@g0<`B@?.B@?/9 lNz?n\OBg y l# ln`Hnp?Nj\OB@.=@f^Hn?9 Nj\Ovnd4?9 Hn/9 lNN p09 y l# lRC`0. @` /9 l?.Nj?nXO`TRD`LN^NuNVH 0.yydF?./9/. NN 0.y?Bg y#?Bg n -H `09y>?/9/. NN p0 n -H p0 y#*y #R/909H/?9 p??NA R3nd@0.G3Ry?/9/. NN 09S@ y#`p3L N^NuNVH . o.p09 /r29 Ё/N$PO:09S@Em09 @H/09S@H/NPOѮ . l/9p?N~r\O @f/9?9N\O`Vp`TBgp?NXO|En09fFHA^/pI?NA\O09fFHA :BPSyRF`B@LN^NuNV/ K ;y  n+P n +P 09 |;@;@$ n 0(H ;@& n0(H ;@p;@(;@B*:;n;n;n;n;n0.@ @ @ @ / ?<N`\O*_N^NuNVHHy"Nm.XO#Bp=@/9 tp?N~r\O @fBnBgp?NXO=|p3 p3 0.gy 3  p3 09g09f09g6p?BgBg?9?9?9?9/9 x/9 xN009<3 09>3 3 3 -y x89 2`z 9A :0fF3 3 09<3 09 >3 9A -P` 9A P0(3 < 9A P0(3 > 9A P0(H 8 9A P fp09 /Bg/9Nl` 9A P p?BgBg 9A P?( 9A P?(BgBg 9A /HyN 9C Q-PHy p/?9 p@?NA 0.gHHnp/?9 p@?NA 9A b/p /?9 p@?NA "#LBz0^@H6: :0g???/.N @@ c,BgNBWN>NTOB@.?NTOBn0.y l??/.NPORn`p./p0/NPOѮB@.@ 9oV 9zgRz 9o0/9 6p?N~r?y XOp>?NA."pA?NA\O`@/9/9z?9 p@?NA?y p>?NAXO0.f09fNa09f` 9A P fDp09 //9 9A /Nl 9A P 09gF09f09g6p??9?9?9?9BgBg/9 x/9 xN0LN^NuNVH0~nd<*n0 H@B@H@Ѝ(@|ndHHAg Gc0<`RF`RG` Gb0L0N^NuNVH0 y f ?. /.`80.HHЮ(@0. @>K0g:p09 SG`?. HnNJ\OL0N^NuNVH ./0. Hї . .*,g Go6?<N>NTO| FlH?NTORF`G`?<NTO0HH?NTO0SG0g`L N^NuNVH>. nR nf"f Gop?NTOG`0H`jH @f.H @f$ Go?<NTOG`0HH@`4BgNTO0. HHH?NTOH?NTOH?NTOLN^NuNV }zf,/9Hy}?9 p@?NA #LBz yLRL0.RzRN^NuNV?< N`TOBnN\0gp=@=yHnNBXO=n=n =n =nHnHnHnHnp ??9 N0.g0.g=n=n=n=@HnHnNvPO0gHnHnNVPOHnHy NvPO0gr0.Ԑy y=@0.֐y y=@0.ؐy y=@0.ڐy y=@Hy HnHyHnp?N~HnHnHnHnp `0.gHnNXO3?< N`TOHy p?N l\ON^NuNVHn/. NPOHn/.N/n.Hn?.?9NN^NuNVH0*n(n 880mS@80-mS@8L0N^NuNVBn09 y fBn3 3 N\0gNp=@Hn/9 NPOHnHyNV/|. pNVPO3329y09ԐA=@ly29y09֐A=@ly0.g09԰yo8BgBgBgy??<?9NB?@XOp??9 N: 09ְyo8BgBgBgy??<?9NB?@XOp ??9 N: BgBgBg?9?<?9NB?@XOp??9 N: BgBgBg?9?<?9NB?@XOp??9 N: ?9NTO3Hy Hy NvPO3 3 0.g/9 pHyNV/|XOHnNVPO33 Hn/9 pNVPOHnHy NVPO0.ܰym =y` 0.=@=@2.n0.ܐA=@ln0.ްy m =y ` 0.=@=@2.n0.ސA=@lnHyHnHnHnp?N~p09 //9/9Nl N^NuNV/>.0@ gr`BA0@A.N^NuNVH>.<. :. p/p0/p0/p0/N/@XON$POR/NPOLN^NuNVHnHy NVPOHnHy Nv?| \ON`TON\0gHn/9 NPO y p0.ho=h y p0.ho=hHn/9 pHy Hnp?N~HnHy NVPOHn/9 pNVPO0.ym$ y p2yA=@ln=y`=n0.y m& y p2(y A=@ln=y `=nHyHnHnHn`HyHyHy Hnp?N~?| N`TON^NuNVHnHy NVPOHnHy Nv?| \ON`TON\0gHn/9 pNVPOHn/9 NPO0.nm=n`=n0.nm=n`=np%?NNTOHy HnHnHnp?N~09 y f09y =@o@?NTO`409`p%?NNTOHy HnHyHyp?N~?< N`TON^NuNV/.HyNV/|. pNVPO y 333#N^NuNVHy/.NV/n. pNVPO33 # N^NuNVp??9NJXOp??9NXOp??9NXOBg?9NXOp??9NXO09 y =@=y 0.nS@=@09 nS@=@Hn?9NV\ON^NuNV"n n "n n 1i"n n 1i"n n 1i"n n 1i "n n 1i N^NuNV098g?. ?.NXOBy8`09:g?94?. ?.N\O`09Dg?. ?.Nl`09Fg?. ?.N`09g?. ?.N`^09@g?. ?.Næ`F09Hg?. ?.N`.09Jg?. ?.N`09Lg?. ?.NXON^NuNVp09 //9 x/9Nl HnHnHnHnN y =h=hHnHyHyHyN0.@gBn`p=@Bgp?NXOHnHn?. ?.N,P p??9NXOp??9NXOp??9N:XOBgBg?9Nt\Op??9NXO0.non`0.nR@=@0.n on `0. nR@=@ no @o0.no0.`0.30. no0.`0. 309 y y=@09 y y=@0.no0.`0.30.no0.`0.3HnHyNVPO0.y0.y0.gp`p??9?9?9?9?9?9/9/9 xN0N\0gNp??.?.?.?9 N?@>?9N?@BWBg/9 HyNNHnNXOp3N9Zp3:`By/9?9N\ON^NuNVH09 y n009 y n 0N\0gP y >(<( y p6(=h"H n0"y p n0&n??9NXO2S0A:&n??9 NXO2S0A809 y f0l nP0l nP`0lV n2C0A=@??9NXO2n09 y A n0??9NXO20A n00lX n2.P0A=@??9 NXO2n09 y A n 0??9 NXO20A n0LN^NuNVHn/.NPOHnN.FXON^NuNVH809g4N09 y3 09 y3 pN\0g y 6(=h y p=h=h=P=h??9NXO2n0A:?.?9 NXO2n0.֐A809 y f0ly 0ly p`0l:2.n0A=@??9NXO2n09 y A3 0l>2.n0.֐A=@?.?9 NXO2n09 y A3 pp??9NXOp??9NXOp??9N:XOBgBg?9Nt\Op??9NXOBnp=@p=@0. S@ @b0H0@ PN` p=@ `p`p`p =@ =@p=@ y"gK 4:;y;y;yBmBmB- B@@ @ @ / ?<N`\O;y p;@BmB*p@ @ @ @ / ?<N`\O;y B* n g n gp=@KIG "=y =y 09 nS@=@09 nS@=@-y-y=n=n BnBn0. @ @ @ @ 0.@ @ 0.@ @ 'y?< N`TOp=@p09 //./9 NNl -y NBnp?N~TO0.fX=y=y;y;yBlBlHnHnHnHnHn HnBHyBgBBHy?.?.p?Hy?p'?N}p<=@@f0.g0.no=n0. no=n 0.nR@:nl=E0.n R@:nl=E0.nl(0.n>=n0.ްGnS@>nm9G0. nl(0.n <=n 0.ܰFnS@<nm9F0.fR'n 67n0.y 7@7n0.y p7@7n/ ?<N`\O7y B*+n 0.=@;@0. =@;@0.=@:0.=@;@0.g<)n 9n9n 89n nfp`B@9@/ ?<N`\O/ ?<N`\OHnNXOB*B*09 9@;@ .ʰ Nf-n-y N`-n-y Np?/./.p?NN p%?NNTO0.f 'n / ?<N`\O7y B*+n 0.g&)n nfp`B@9@/ ?<N`\O/ ?<N`\OHnNXOB*B*09 9@;@Bn=n=n=n=n 0.@g ng(0.@gHnNXOp=@`Np?N~TOp?/9 N/9 Np?NN p%?NNTON+y N )y N ?< N`TOL8N^NuNVH809@=@09 @=@ NHy p?N l\O=y =y 09 y =@09 y =@p=@p=@09"fp =@p-@`* y"f p@=@p`p=@=@p -@p=@p??9NXOBg?9NXOBg?9N.HyHyHy?94?9N@p??9Nb.Hyp?p??9Npy"=@=n=n p0.-@p0./p0. /NPO-@09@D@H-@09@D@H-@2.0.A=@=@=@2.0. A=@=@=@2.0.A=@=@09n=@=@?< N`TOp??9N.~Hn@NPOHn@?. ?.?9N\ p??9NXOp??9N:XOp??9NXOp??9NXOBgBg?9Nt\OHnp??9N4?| \ON`TOBnp?N~TOHyHnHyHyN0.@f0.f HnHnHnHnHnHnBgBgHyBgBgBgBgBgp???.?.????p?N}p<3@gV nfN?< N`TOHnp??9N4POHy BgN l\ON?< N`TOp=@`H09@g0.n?NTO//0. n?NTO//N-@P-AT//NvPO-@X-A\0.nlHyHnXNPO0.nf 0.ngN?< N`TOHnp??9N4/|.\/.XNz/A.Nd/A/@XONPO-@Hy/.\/.XNw~/A.Nd/A/@XONPO-@~Hn/NPO-@zHn/.NPO-@vHn/.~NPO-@rHn/.NPO-@n0.H/Hnn0.H/N/@XONPO-@jHnv0.H/NPO-@fHnr0.H/NPO-@b .jЮЮz=@=@2. .fDЮbЮ4=@=@ .zDЮjЮ=@ .bЮЮf=@ .zDjЮ=@ .fbЮ=@ .zjЮ=@ .fDbЮ=@Hnp??9N4POp??9N. /.\/.XN 0m .X".\`0HnXHyHy!hHyAINd/A/@XONL -@H-ALHyHy//Nd/A/@XON\/A/@XONPO=@>0fHyHn@NPO`?.>Hn@Nl\OB.CHyHn@N/|?n >?9N\ Hn@?. ?.?9N\ p??9N?| TON`TO=n=n09@g\p=@?< N`TONHn HnHnN 0g0.H-@0.H/0. H/NPO-@Hy BgN l\O09y=@09y=@Hy/.\/.XNw~/A.Nd/A/@XONPO-@Hy/.\/.XNz/A.Nd/A/@XONPO-@0.H/HnHn0.H/N/@XON/@XONPO-@:Hn/.NPOЮ:Ю-@HnHn0.H/N/@XONPO-@:Hn0.H/N/@XO .D/NPOЮ:Ю-@0.H/Hn0.H/N/@XONPO-@Hn0.H/NPO-@Hn0.H/NPO-@09 2@=@29A |09 2AHй x(@=y0.nl-n-n*L=y0.nl@=@HA$> .82. .46nmdnm\nlTnlL2A4.iHC4.hAHй N&@0@=@` y"f0T@nlX n`lP0.`HAb<zy l0H @0Gg0H @ˍP`0H @0F@PRE`RD0nl n`l0.`HAD<zy l20H @0Gg0H @ˍP`0H @0F@PRE`RD0nlD09 H0@HA$<zy l0H @0Gg0H @ˍP`0H @0F@PRE`0.`HA$<zy l20H @0Gg0H @ˍP`0H @0F@PRE`Ƹnl09 H0@HA$<0R@nl0@HAD<zy lF0H @0Gg0H @ˍP`0H @0F@PRE`RD0nlX n`lP0.`HAD<zy l0H @0Gg0H @ˍP`0H @0F@PRE`0.`HA$<zy l20H @0Gg0H @ˍP`0H @0F@PRE`Ƹnl\09 H0@HA$<zy l20H @0Gg0H @ˍP`0H @0F@PRE` nf 09 H .Ѯ .Rn`20.H .Ю-@ .Ю-@Rn`N?< N`TO`p?N~TOL8N^NuNVH >.<.:.8.K ;y +n+n 09 |;@$;@09 2;@&;@p;@(;@B*:;G;n;n;F;E0@ @ @ @ / ?<N`\OL N^NuNVHy HyJ?<N` N^NuNVH >.<. :. *yJ m0 m 0 m 1F?<N`TOL N^NuNVH >.<. *yJ m 0 m 1F?<N`TOL N^NuNV?. ?.p?N\ON^NuNV?. ?.BgN\ON^NuNVH K?< N`TO8969=y=y0.@=@0.@=@0. n=@=@=@0. n=@=@=@0.n S@=@=@0.n S@=@=@p?N~TOHy p?N l\Op??9NXOp??9N:XOBgBg?9Nt\Op??9N.HyHnN 0f"Hy BgN l\Op?N~> `Hy BgN l\Op?N~TO=n=n0.nR@=@0.nR@=@p@ @ @ @ HnHy NvPO0g>=n =n 0.g0.n>l0. y oG0.n>l0. y fG0n:0. ES@<;C;n p:;n>El;G0G;@/ ?<N`\O;y B*RG`0.nl0. y f 0.n@0.nl0. y o 0.n@0n:0. ES@<;D;n :p;@>El*;G0G;@/ ?<N`\O;y B*RG`N?< N`TOL N^NuNVp??. ?.N\ON^NuNVHnHyNVPO=n=n HnNXOHnHnp???. ?.N6HnHy NvPOSnSnN?< N`TO=y0. fb09 y n =@?9?9?.NB\O=@0.@nd$0.@=@?.?9?NB\O=@ no> no6?.?.?. ?.?.?9?9?9NarN?< N`TON^NuNVBg?. ?.N\ON^NuNVH09@3N=@09 @3R=@09@D@=@09@D@=@=y=y09Nn609Nn=@09Rn=@09Rn=@09 y S@>09 y S@<0=@=@=@0.=@=@=@0.=@=@09n=@=@Hy p?N l\Op??9NXOp??9NXOp??9N:XOBgBg?9Nt\Op??9N?| TON`TOHnp??9N4?| \ON`TOp?N~TOBnHyHnHyHyN0.@f0.fHnHy Hy HnHnHnBHyBgBBHy?.?.p?Hy?p?N}p<=@@g\ y fR?< N`TOHnp??9N4/| XOBgN l?| XON`TONp=@`B0.@g09Nn=@09Rn=@0.nf 0.ng?< N`TOp%?NNTOHnp??9N4PO0.g60.n=@=@0.n=@0.n=@0.n=@`00n=@=@0.n=@0.n=@0n=@Hnp??9N4POp%?NN> N`TO=n=n0.@g.p=@?< N`TOp%?NNTOHnp??9N4/|R.NHnN 0g0.gf09Rn=@09H/0.H/NPO-@09nS@=@0.y l09 nn=y 0.԰GoGn=n0.аnnHHyHn09NnH/N/@XONPOn=@=y89y l"09 nґn09 n@=y 0.nȰFo0.nҐFnHy??.NlPO0g<0.o6p??.?.?.p??0.Rn?/9 N/9 xN0Rn`09Nn=@09H/0.H/NPO-@09nS@=@0.y l09 nn=y 0.ҰFoFn=n0.ΰnnHyHn09RnH/N/@XONPOn=@=y:9y l"09 nԑn09 n@=y 0.nưGo0.nԐGnHy?.?NlPO0g<0.o6p??.?.p??.0.Rn??/9 N/9 xN0Rn`?< N`TONHy BgN l\O`p?N~TOLN^NuNVHz09@>09 @<HyHnHnHnN0.@fp??9NXOp%?NNTO/.p??9N4POBnHyHnHyHnHnHnBgp ?HyBgBgBgBgBgp???.?.????p?N}p<=@@g nfz`0.@gp%?NNTO/.p??9N4PO0.n80.n6DC nP"n I1Q nh nh nh nh"n I1i nh nh nhp%?NNTO/.p??9N4PO=n=n0.@gp%?NNTO/.p??9N4PO n 0 n00HLN^NuNVp?NTON^NuNVBgNTON^NuNV=yp3p3BgN\\TOBy3N^NuNVp?NlTON^NuNVBgNlTON^NuNV=yp3p3?.Na`TOBy3N^NuNV?. ?.p?N\ON^NuNV?. ?.BgN\ON^NuNVH8<9 9A b&P09fTHnHyNVPOHnHnHnHnN0.n0.nHnNXOp3`By?. ?. N4XO=@N?< N`TOp?/9p/p?NN p%?NNTO09yS@=@09yS@=@09R@=@09R@=@2.A | 2AHй-@2.A |0. 2AHй x-@0.@ @oB@`p=@KV8.nl *(n29 2H .ܐ+@29 2H .Ё+@ +@+@ 0.g0H m+H:.nl|0@HA$;P0R@@HA$;P0S@@HA$;P0-@g0H m +H 0-@g0H m+H/ NjXO0f0.g\/ / NiPO6g0-T`0-F@T~Fl|C0@g0H @0-P`0H @0-F@PRG`0-ng@0-ng0-ng0- ng 0-"nf09HA6`j0-@g40H U*0H0H m+H0H m+HRE`0@f?<p?NAXO f09 2HѮ09 2HѮRD`p?/9 Np/p?NN p%?NNTON\0g~HnHnHyHyN y =h=hp??.?.?.?9 N?@>?9N?@BWBg/9 HyN?< N`TONL8N^NuNVH~ Gl0HA0HGH 9C b0H @<HnHnHn?Nk0HA P0.HnH00HA P0.HnH1@0HA P0.HnH1@RG`BLN^NuNVp??9NXOp??9NXOp??9N:XOBgBg?9Nt\Op??9N?| TON`TOHy p?N l/nTON. BgN l?| XON`TON^NuNVHnp ?BgNPOBy.B@3,3*3( n0(@1@ n1@ n1@ n1@j0.Y@ @b^H0@" PN`Np3( nhj`:p3* nh`&p3, nh`p3. nhN^NuNV yf$ 9f09 :g y gp`B@N^NuNV-y09 y fp=@`$09 yȑn09 yʑn BnN\0gz y =h=h y p=P=h?.?9NXO2n0.ސA=@lnn?.?9 NXO2n0.ܐA=@ln nBn?< N`TO09.gp`09,gp`09*gp`p3Hy BgN l\O#p09 //9/9 NNl p?/9/9 Np?NN p%?NNTO0.f?9 N8BW/9 N\OBgBgBg?9 ?9BgBg/9 N/9 NN0/|p?BgNPOHnHnHnHn/9N~09n=@ y1n09"fp` 2.Ap|A=@ y1@3333=y =y y"f yfp`09HA0R@=@0.y ly n@33 y 1@09 Y@33 y 1@Bgp??9v?9 n?9 ?9 Bg?./9 N4?yv?y n?y ?y p ?Bg/9 Np??9NXOBg?9N.HyHyHy?94?9N@p??9Nb.HyBgBg?9NBg?9NXOp??9N:XOp??9NXOBgBg?9Nt\Op??9NXOp3 p3 ?<?9?<NB\O3 ?9?9?<?9?<NB?@XONB\O3 09 y @ 309 S@=@09 S@=@0.y R@=@0.y R@=@HnN.FXOp3?9?. ?.Nۨ\Op?/9 N/9 Np?NN p%?NNTOp09 //9/9Nl/| B?n ?nXONlPO0gBgBg`Bgp?N?| TON`TOBy0.f p?N~TO0.fHyHy Hy Hy HnHnBgp ?HyBgBgBgBgBg?9 H?9 F?9 D?9 B?9p??p?p'?N}p<=@HyHy HnHnN0.@gN0.@f 09 @g?.?.NXO=@`.0.@gf y  fp` ya f -y##?9 ?9 N?y>?9Nۨ\O`HyHyN/|?y> ?9N\/|/|TONPO`l0.f p?N~TO?< N`TOByBy0.3 y 1@3 0.3 y 1@3 ?9 ?9 NXO 9g2##p09 //9/9Nl p?/9 N/9p?NN 0.fFN&Bp??9 ?9 ?9?9?9?9/9/9N0` p09 //9/9Nl p?/9/9p?NN p%?NNTOp09 //9 N/9Nl p?/9 N/9 Np?NN p%?NNTON\0gNp??.?.?.?9 N?@>?9N?@BWBg/9 HyN/9?9N?| XON`TON^NuNV09gBgp?`BgBgNXO09fp`B@3N^NuNVBHy B?. ?.NlPO0g?. ?.N֬XO``09 @fR?. ?.N?n >p?Bg/9N =@oS@ @bH0@2 PN`09 R@@yl09 R@@yNՔ`09 lyHy o09 @y`09Hy o09 @y`09yHy op09 @y29 A09Aylp29 A09A3`V yo$Sy`B ylRy`.p-@0.N^NuNV?9 ?9 NXOp??9?9?9 ?9 ?9 ?9 /9/9 NN0?y?y?yNۨ\ON^NuNVH >.<. K09y yS@:09y yS@:0.GR@:0.FR@:p??9N?|>NXOp??9NXOHnN.FXOL N^NuNVH =|*yJ0.y BH=@0. y DH=@p??9NXO09 @g?.?.N `?9 ?9 NXOp??9?9?9 ?9 ?9 ?9 /9/9 NN0?y ?y NXO0.y B=@0.y D=@09S@8p??9NXO09y y>09y y<09HA:0@=@;@0@@=@;@0@@=@;@0@@=@;@Bm$ +@.Bm4Bm2Bm6?< N`TO0.D=@0.D=@0.=@;@&0.=@;@(;n*;n,?<N`TO0n m 00n m 1@ m0?<N`> N`TOHyHnHnHnN0.nf 0.ng$0.y BH=@0.y DH=@Hy B?.?.NlPO0g0.y B=@0.y D=@?< N`TO;n;n;n;n +@.Bm6B@;@4;@2;@$;n&;n(0.D;@*0.D;@,?<N`> N`>?.N XO0n m 00n m 1@ m0?<N`TO0.@fHyHyN/|?y> ?9N\/|/|TON?y ?y XONXOp??9?9?9 ?9 ?9 ?9 /9/9 NN0?y ?y NXOL N^NuNVH>.<. 09G:09F8?HyNl?D.Nl/|TOHyN/|.NPOB9Hy?9?9 ?9N\ LN^NuNVHN\0g6 y ?(?9NXO8 y ?(?9 NXO6` 8969 09@>?9?909@?NB\O<0H :0H H@Hn m0R@`0 >0H :0H H@Hn m0R@`0 <?< N`TO09"fpd??9p-?`?<?9?<NB\O3 Bp3 D3 F3 H29 A0.A30lBy09 yDo0y 329 A0. A30lBy09 yCo0y 309 FH 3 09 HH 3 09 R@@no09 R@@=@09 R@@n o09 R@@=@ 29 RAA0Anl29 RAA0A=@29 RAA0An l29 RAA0A=@ 29 RAA0.A329 RAA0. A33 3 p??9 ?9 ?9 ?9 ?9?9/9 N/9N0?y ?y NXOp??9NXO09 BS@=@09 DS@=@09@n@ =@?9?909@?NB\On@ =@Bg?9NXOHn?9NV\ONp??9NXO0.y FR@=@0.y HR@=@HnN.FXO33  y h R y hp1@Hy HyRN?n /|VTONl\OB9XHyVHyRN?y?y?y>p ?Bg/9N?| N`TOLN^NuNVH0=|=y D ylp49hS@=@29 I09@@=@=@p0./pH?NA\O*@p0./pH?NA\O(@=y09@@=@~ylF?.Bg/ NzPOp?BgBgp??90.Rn??9/ /9N0|y l=Fznlv=|0 FH @=Px Dlby0l20.ng0.H @2DA0.4hPC09 n0.ng0.H @0.hPRD`09 nRE`bRF`Lxyl8p?0.Rn??9 Bp??9 FBgBg/9 N/ N0RD`RG`/ pI?NA/MTOpI?NA\OL0N^NuNVH8*n>. (n&n/ / ?/ N0"@ n00"@ n0L8N^NuNVH8*n(n &n/././ / / N~ n? n???p????BgN~ n? n???p ?Bg/ NL8N^NuNVH>.<. :. 8.????p????p?N~LN^NuNVH(*n~ Gl0H&@p??p?NN\O6RG`L(N^NuNVHy p?BgN/|v. nHy Hy /9 N~ y"fr`r09yvA3 y 1y ?9v?9 n?9 ?9 p????BgN~3 3 3 n3vN^NuNV?9v?9 n?9 ?9 N?y?y ?y > NPON^NuNVHy p ?BgN/|. Hy Hy /9 N~09"fp` y"fp`p3 y 1y 093 y 1@?9?9 ?9 ?9 p????BgN~3 b3 d3 f3hN^NuNVH *n>. <.0g.0 @0(@g0 @0( @fSFRG`0HL N^NuNVHHnp?BgNPOx D n0 @h RD`09V@8 D n0 @h RD`p/ 9V/NPO @h 09 @h 09 @h BgBgNXOp?N2JTO>/9?9N\Op ?p?/.NTPO<W@:0 @h Ggrp?p?/.NTPO3p?p?/.NTPO3 Gf??9N|XO`& Gf??9N` Gf ?NXTO09 @h 09 @h LN^NuNV/>.09S@GmF29 0Ag8p09 //9/9Nl 0H# g09 y f09`N09`F yfB y g209 y f?(?9NXO` y p0(3 9A ##BgBg 9A/p??9 N:/| POp?N l\Op?NTOp%?NNTO 9A b/p?NN\ONHy BgN l\O.N^NuNVH>.<. p?N2JTO @f Gfzylh0HA #HyHy HyHy BgN~0fp09 :gh yf^ y gN0(H/09 H/N/@XO y 0(HH/NPO(/Bg y /Nl` RE`F Gf0HA #HyHy HyHy BgN~0fp09 :gh yf^ y gN0(H/09 H/N/@XO y 0(HH/NPO(/Bg y /Nl` 9A #NLN^NuNVH>.<. 0Hg0f>09 :g6 yf, y g Gg/9p?N~r\O` Gg GfHHnHyNPO0HA -PHnHy HyHy p?N~ Gg Gf@z El80HE b0H @ 9E b0H"@0RE`LN^NuNV nfN`NpN^NuNVBgBgNXOBn=yHnp?BgNPOp/0.H/NPO @h HnHnHnHn/.Nf0.f&Bg/.N<\O=@ @g @gp/0.H/NPO @h p/0.H/NPO @h p/0.H/NPO @h =n?.?.?.?.p ?p?/.N`Hp?Bg?.?.?.?.Bg?./.N4 nf 3`,0.yg p/0.H/NPO @h p=@`?.?.?.?.NPOBy /9?9N\ON^NuNVBgBgNXOp??9N:XOp??9NXOp??9NXOBgBg?9Nt\OHnp?BgNPOHnHnHnHnp ?/.N09^@ @h 096@ =@ y6f y fRn0. @h HnHnHnHn/.Nf?| N`TOBn nlHnHn0.@ ?/.N no6p??9NXO nf?9?9N`?9`0.R@??9NXO0.R@=@0.@n=@=@0.nU@=@Hnp??9N4PORn`NXOp`: y6f6p36p??9N?y>NXOp3 /9?9N\ON^NuNV/HyHnHyHyN0.@f?9?9N:XOp??9N?y6>NXOp???9Nt\OBg?9NXOBn yfD-yp??9N:XOp??9NXOp??9NXOBy09 fHBn ymNTOp??9N. p?N l/|TOp??9Nr/| XOBgN l?| XON`TO3N R3R `` y f09Ny Ng?< N`>NTO09Ny NH/09Ry TH/NPO# 2#&09ڰy No83 N3 TP#& 33T# 209yH#69TyPKHy 9 2й /NPO/0H # 9 й 2/ 9/NPO&Hy09TyPH/NPO# Hy/9 NPO# 6BnHy p?N l\O0.f ?.N TO=y0.ynHyyH/NPO#HyHyHy/9 NPOй /NPOй 6/NPOyP30.RnHA00.RnHA0Tn`B0.RnHA00.RnHA0T0.@=@?N TOp??9N. `3 RN3 `RBn`0.@gzHy p?N l\Op??9NXO09Y@ @bJH0@ PN`3N3R?9NNTON yfBy p=@` yf3N3R`p3 ` y f?9R?9NNXO`?9R?9N?9N\ON` y f?9R?9NN`?9R?9N?9N` y f0p?NNTORy p=@3N R3R `` y f?9R?9NN XO`p??9R?9N?9N POBy p=@N`3N3R09@ @bH0@ PN`N`?<Bg?9N`?<Bg?9N ,`N `p3 09fp3 yg yf#@ :# >`r09Ny?NT>NTO//?9?909Ry?NT>NB?@XONTO//N# :# >3N3RN`809ܐyR?NJTO3HyHyHy :09Ny?NTO//Nd/A/@?yTONTO//N/A /@PONv/A.Nd/A/@XON\/A/@XONPO=@09Nyln0.ln09f3p3`333N09@ @bH0@`?9?9`N J`?9?9`N `09g?< N`TOp??9NXO09 f09NyH/09RyH/NPO# #3N3RHyp??9N4POp??9N.p??9NrPOp??9NXORy ` y f~09N3 R33 33 N09R3 `3T333 Tp?p?Hy /.N /| POp?N l\OBn`p y fT3N3RHyp??9N4PO0.g:Bgp?Hy /.N Bgp?Hy/.N Bn`Bgp?Hy /.N p??9N?y>N:?y>N. p?N l?nXON TOp??9N:XOp??9NXO09 N33309 T3 3P3 9&# #Np3 ?< N`TOByHy BgN l\OHyHnHyHyN0.@f3N R3R ``p??9NXO&N^NuNV/>.0l?9?9D@?NB\OD@`?9?9?NB\O.N^NuNVH09"S@H>p??9NJXO<9 yf"p?0HX/?9NPO`&?9 0HHv/?9NPO|?9?9N?F>N?y2>NXOLN^NuNV?< N`>?9NXOp%?NNTOHyp??9N4?| \ON`TON^NuNVN3N3R3N3Rp?NNTORy 3N R3R `N^NuNV/ K09;@;@ :09;@;@;@0. ;@;@0. ;@;@ ?.?9N?| TON`TOp%?NNTO/ p??9N4?| \ON`TO*_N^NuNV/ K:;y;n;n N?< N`TO/ ?9NJ\O09g?. ?.p?N\O?< N`TO*_N^NuNVH0. y?NTTO>0. y<0m?9?9?NB\O`?9?9?NB\OD@:09=@=@=@09=@=@=@0. =@=@09E=@=@?.?9N?| TON`TOp%?NNTOHnp??9N4?| \ON`TOLN^NuNVH K0.y?NTTO>0. y<0m?9?9?NB\O`?9?9?NB\OD@::;y;n09E;@N?< N`TO/ ?9NJ\O09g?. ?.p?N\O?< N`TOL N^NuNVH09ڐy<09ܐy:?.?9N?ETONTO//?NTO//NyD/A /@PONPO>?< N`TOp%?NN> ?. ??9?9?9N?| N`TOLN^NuNVH09ڐy>09ܐy<NN?NTO//?NTO//NyD/A /@PONPO:?< N`>?9?9?9N?| \ON`TOLN^NuNVH09ڐy?NTTO>09ܐy?NTTO<?.?9N?| TON`TOp%?NN> ?. ???9?9?9N?| N`TOLN^NuNVH09ڐy?NTTO>09ܐy?NTTO<NN?< N`>??9?9?9N?| PON`TOLN^NuNVH09ڐy>09ܐy<NN?NTO//?NTO//NyD/A /@PONPO:?< N`>?9??9?9?9N?| N`TOLN^NuNVH09ڐy?NTTO>09ܐy?NTTO<NN?< N`>?9???9?9?9Nh?| N`TOLN^NuNV3 3 33?.?9N?| TON`TOp%?NNTO nf Hyp`Hyp??9N4?| \ON`TON^NuNV33 33NN?< N`TOHyp??9N?| \ON`TON^NuNVHHy p?N l\O nf BnBn` p=@=@09 y S@609 y S@=@ n 0[@>0([@<p 8:y l>9 `0GCo0E>y l<9 `0Fno0.D<0.gbp??.?.????/./9 NN0p??9N. p??9NrPOp??9NXO`(p??????.?./9 N/.N0Hy BgN l\OLN^NuNV0.yln Hy`09lHnlp`B@=@Hy?9l?9N4PO09lHU@H/0.g?9l`0.ylR@??9N4PO0.g609lHU@H/29lI0.AR@??9N4PON^NuNV0.f,3 R3 `Hyp??9N4PO3N3RHyp??9N4PON^NuNVBnBn=yN=yP=yRHnp?BgNPOHnHnHnHn/.N~WnWn\n\n?.?.?.?.p????BgN~HnHnHnHnp ?/.N0.H n1@HnHnHnHnp ?/.. $`V.. IRROR RAWt 512:SHOWPRG ]^OMIRRORS QRT0t HARDWOODQRT2t h"ROOM QRT5t LQRT_DOC TXT7t $RAW2SPECPRGKt vPIANO QRTNt >QRT_ST TTPRt {QRT_ST TXT`t ]&PLUS QRTft eWALL_SPHQRTit kHARDWOODTXTlt rRAW2SPECTXTnt saIANO RAWt yN?n?n?n?np ?Bg/.Np?N~TO0.fHyHnHyHyHnHnBgBgBBgBgBgBgBgBgBgBgBgBgp???p?N}p<=@@gFBnHn?.?.NlPO0g>Bgp ?p ?/.N =@?<p??.NB\O=@p=@`h?.?.p ?Bg/.N =@oDU@ @ b:H0@6 PN`(p???.?.?.?.Bgp?/.N4p?Bg?.?.?.?.Bgp?/.N4p?Bg?.?.?.?.Bgp?/.N4p=@=@`p???.?.?.?.Bgp?/.N4p?Bg?.?.?.?.Bgp?/.N4p?Bg?.?.?.?.Bgp?/.N4p=@p=@`p???.?.?.?.Bgp?/.N4p?Bg?.?.?.?.Bgp?/.N4p?Bg?.?.?.?.Bgp?/.N4p`0.gSn` nlpRn`p`` nBhB@ n1@ n1@j09RW@ @b2H0@" PN`" nhj` nh` nhp=@=@0.g~0.H n1@?.?.?.?.p ??/.NHnHnp ?/.NHyHnHyHyN0.@f0.@gP n fFp=@`N\0g y p?(NTO2 y p0(`?9NTO209ʐA=@?9 NTO209 A=@89p3" yfKXvp=@`Kvv@Ox=y B?<N\O|Cl 0HA0FH"@0RF`0.n<g40ozFl*HyN#XORE`:0lHyN$.XORE`By"p??9NJ?nTOHy?9N?D?yXON?y2>N. p?N l\Op??. ?. ?9NN/| XOBgN l\ONB?<N\OL N^NuNVH =y"09"S@H<Hy p?BgNPO yfKX y hjz`Kv y hjz@NHnHnHnHn/9 Nf/| /|  /| /| XOp?/9 NN%~El 0HA$0GH"@0RG`Bnp?N~TO0.f.HnHnHnHnHnHnBgBgHyBgBgBgBgBgBgBgBgBgBgp??p?p?N}p<3@g09"S@H<09fNHy ?.?.NlPO0gZHy p?N l\O0HЍ/Hy ?.?.N&X/| POBgN l\Op ?/9 N\O`&09f?.?.NXO?.?.p ?Bg/9 N =@o @ g,p???.?.?.?.Bg?./9 N40.U@ @btH0@ PN`bBg0HЍ/N"\Op ?/9 N\OBgHy N$\O`(0HЍ/N"bXON%` N+$`p?0HЍ/N"\O09f09`p=@p ?/9 N?n. `~El 0GH @0HC$0RG`3"p=@`0HЍ/N#t`X0HЍ/N#`D0HЍ/N$.`00HЍ/N$`Sy"09"fp$`Ry" y%"fp3"N% n g,p?Bg?.?.?.?.Bg?./9 N409@g n fp=@`p?N~>?.?.?.NPOL N^NuNVH |09"g 09f|@*n~Fl0H"@0H @0F@2RG`L N^NuNVH v*n0. g0<`B@>09"g09fx0. gZ09HA<zBn0.y lb04.`@:xCl0.HDH @0D@0RD`Rn`v@xCl&0RDH @0`xCl0RDH @0`L N^NuNVH *nz09"g 09fz@|El00H @>0H @g 0H@`0H0RF`L N^NuNVH *nx09"g 09fxzDl.>-|0oH @0S@H"@0SF`: RE`L N^NuNVH *nx09"g 09fxzDl2>| Fl0H @0R@H"@0RF`;G RE`L N^NuNVH *nz09"g 09fz@|El00H @>0H @g 0H@`0H0RF`L N^NuNVp??9NXOp??9NJXOBg?<NXO n=P=h0.hS@=@0.hS@=@?. ?9NXOHn?9NJ\OBg?<NXON^NuNVH 09"S@H> yf HX`0HHv*@p ?/9 N/MTOHy N)POL N^NuNVH z09"S@H>09fz@O0Hv` 0HX*@|El0HA$0H"@0RF`N%L N^NuNV n 0(@=@=@0(@=@=@Bg?<NXOHnHn?. ?.?9N 09"g yf0.fp`B@=@`=y?.?9NXOp??9NXOp??9NJXO n 0.PH=@0. hH=@0.P=@0.h=@0.nS@=@0.nS@=@Hn?9NJ\Ornp4h=@09"g09f?.?./.N-LPO`20.f0.H @0.F@P`0.H @0.ԁPBnp&=@Bg?<NXO0.fHnHnHnHnHnHnBgp ?HyBgBgBgBgBg?.?.?.?.p?Bg???.N}p<=@ n 0.PH=@0.hH=@0.@f$0.@gd/?.?.NlPO0gLBg?<NXO n 0.P=@0.h=@0.nS@=@0.nS@=@rnp4h=@Hn?9NJ\O09"g09f?.?./.N-LPO`20.f0.H @0.F@P`0.H @0.ԁPBg?<NXO0.@gp=@=n=n`XN^NuNVH n0(@>0(@=@Bg?<NXOp??9NXOp??9NJXO n=h0.nS@=@Bn nl0.H @ < n=P0.GS@=@8<z El09"g`09fXBy09 S@=@0.m*HnH @ 0DgySn`09HA?`0Dgp?`Bg?9NXOHn?9NJ\OnnLRE`T0.nnRn` Bg?<NXOLN^NuNVBg?<NXOp??9NXOp??9N:XOp??9NXO09"S@HH=@BnBnp=@=@=@=@p=@=y 0.Hv-@BnHyHyHnHnN0.@ =@=@=@0.@ =@=@=@0.P@=@=@0.P@=@=@p?/9/9p?NN p%?NNTOHy p?N l/|TOHyHnN 0g0.R@=@0.R@=@p=@p=@0.lBn`09n=@ln0.lBn`09 n=@lnHnHnHy Hnp?N~HnHn?9N Hy BgN l\Op?/9 N/9 Np?NN p%?NNBW?<NXON^NuNVH09HA:|y l@0Hn >0`@g0H @0.P`0H @0.F@PRF`LN^NuNV09 @ @ f>09 @H@B@H@ @JP09 @g" .g . g.@` 09 @Bg?<NXO09.gLB9ByhByFHyHyHyHyrNRyrSyN0nBy.09HgN0n . f09 @ @g yhfr09, |r`XHXW PN`609y`(09yr`09y` 09yrByhB9p3FN`F .fn09 @ @f`09hg&?9?9Nb. p?N l\ONSyh09h0@B?9(?9N`.gHyHyHnB@.??9N @gHy p?N l\ON09hRyh0@0yhB?9(?9N?y>Nb.?9?9r?9N\/| \OBgN l\OBg?<NXON^NuNVHy 090S@??9N$PO3??9N.Hy?9&?9$?9N?y* ?y N?y,>N.Hy"HyHy092@ HA4??9N@09y3|09y|3ByHN^NuNVBg?<N?y>Nb. p?N l\ON0.R@3r0. S@3?9(?9NXO09HgN0nHy?9?9r?9N\/| \OBgN l\OBg?<NXON^NuNV09.f*Bg?<NXONp3.Bg?<NXON^NuNVHnp?BgNPO09 S@3PHnHyHyHyN0.@f09ZfBy`Bg?9NXO309Py @ op yP309PyT@=@ n l,0. @p1@ 0. @BhRn`p=@09yPnm0Hy ?.?9N$PO3Bn n l0n2n Rn`B90.R@ @-h n-P nB(Hy/.N?y?yXONXOp=@0.m~HyHyHyHyHA4??9N@=@2.H0.S@ЁA 0.HC40.QgB@`p0Sn`~Rn`N^NuNV0.Y@ @b?.p ?p ?/.Np3H` nf^090 @h 0. @h 3230Bg/.N<\O092 @h ?.?.?.?.N/y?yTON\ON^NuNV=y*=y$BnHnp?BgNPOHnHnHnHn/.N~UnUnXnXn?.?.?.?.p????BgN~?n?n?n ?n p ?Bg/.NBgBgNXO0.fBg/.N<\O=@ @h p3H0.U@ @ bH0@ PN`By* nh:p=@ nl0.Rn @h ` y* nh: n hR` y* nh: n hj` y* nh: n h`n y* nh: n h`N y* nh: n h`.By$ nh nh nh`p3$ nh nh`p3$ nh nh nh`3$3*ByHp=@Bn nlN ng@09*4.`@g0. @h `0. @h RnRn`p=@ n l0.Rn @h `09$P@ @h p=@09*f nh:0.fp%?NN>?.?.?.p ?p?/.N``?.?.?.?.N/y?yTON\ON^NuNV090U@=@Bn n l2.H0.ЁA 0gb0.@  @p1@0. g,0.@  @p1@ Bn 0.@ 32`F0.@  @Bh `.0.@  @Bh0.@  @p1@ Rn`BN^NuNVBgBgNXO09,HX@=@Hnp?BgNPO0. @h p?N2JTO=@p??/.NTPO=@ @h ng0.Y@3,p3H/9?9N\ON^NuNVH y"fFp?Bgp?NN\OF@@3 9A b P0?9Bgp?NN\O`P09fF09\gp`p309\gp`p3HyN". Xp?BgN/|. Hy Hy /9 XN~3  *3  ,3  .3 0Hy \HyHy~HyTp?/9 XN/| /| /|p /|j\Op?/9 XN/| j/| P/| /| ^\Op ?/9 XN09~@@ 3|09p@@ 3 409 @@ 3 HyHy Hy nHy p?/9 XNRy 09U@y n09 \49` y X1@09 49` y X1@09 j49` y X1@ 9E b y"f yfp`09HC0H @3HyHy~Hy ?9NkNM?< N`>?9 ?9 ?9 p????BgN~?y?y ?y ?y p ?Bg/9 XNBgBgN?| TON`TOp?N~> n?9 HyHyHy ?9Nk?@ NN\OBnp30.f HnHnHnHnHnHnBgBgBBgBgBgBgBgBgBgBgBgBgp??p?p?N}p<=@@g ^Hy *?.?.NlPO0g?.?.p?Bg/9 XN =@o W@ @b H0@$ PN` 09 yl Ry NMT` 09~yl Ry~`09ذyl Ry`09 g Sy `09~g Sy~`09g Sy`p?p?p?/9 XN =@ @f By `b?<?9 \?.NB\O249iH \09ʐA3 `(p?p ?p?/9 XN =@ @f By~`?<?9 ?.NB\O249iH 09ʐA3~`p?p ?p ?/9 XN =@ @f By`?<?9 j?.NB\O249iH j09ʐA3`T?< N`TOp?/9/9p?NN p%?NNTO=y y"f yfp`09HA0R@=@Hy?<N?| XON`TOHnHnHnHnBgp??N|0.@gv?< N`>?.N4XOHA3 y"f yop=@p3`09HA0R@=@?< N`TOBgBgN?| TON`TOp?/9 N/9 Np?NN p%?NNTO09ngpp?Bg?9v?9 n?9 ?9 Bg?./9 N4p?p??9v?9 n?9 ?9 Bg?./9 N4NL?9 ?9 ?9 p????p?N~N`NL<`HnHnHyHyN0.@g.HyHnp???.?.N6 ng0.nS@=@09HA=P?.?.p?Bg/9 N =@l09"fp`p=@Sn0.ؐn=@ @o 9C b0.H @3HnHnHn?9Nk 9C b0.H @3HnHnHn?9Nk0.ҐnHHH>0.АnHHH<0.ΐnHHH:p=@0.ưnlj@@@n3 0.@@@n3~0.@@@n30.nHA3NLRn`0.HA3 9C b0.H @3HyHy~Hy ?9Nk` NL<0.@g< n f2p=@`(p?N~>?9 ?9 ?9 p????p?N~LN^NuNV 9E b y"f yfp`09HC0H @3HyHy~Hy ?9NkNNN^NuNV/29~I09 HAy309\g"09@H>09@@G3 9C b y"f yfp`09HA0H @0.N^NuNVNLNN 9A b/p?NN\Op%?NNTON^NuNV09ʐy  \49`y| y X1@09ʐy~ 49`y 4 y X1@09ʐy j49`y y X1@N^NuNVNM?9?9 ?9 ?9 p ?p?/9 XN?y?y ?y ?y POp ?p?/9 XN?y?y ?y ?y POp ??/9 XN?y n?y  /|/|. ?9Nk?@ NN\ON^NuNV/p??9NXOBg?9N.HyHyHy?94?9N@p??9Nb.HyBgBg?9NBg?9NXOp??9NXO~ GlHpG0@2I0.4`@H@0pG0@ 9opG0@^RG`B9Hy?. ?. ?9N\ .N^NuNVH0-yNfb 9E b y"f yfp`09HC0H @=P*n?< N`TOp?/./.p?NN 09"gBgp//p?NN p%?NNTOz ElBg?p?NN\ORE`p%?NN>Bg/ NzPO?<Bg/ NzPO?<Hy/ NN ?<Hy/ NN *nIz E?l?</ / NN RE`?< Bg/ NzPONg80< =@=@p<=@=@=|/=|0.nR@=@0.nR@=@p??9NXOp??9NJXOp??9NXOp??9N?n>p?NN\OHn?9NJ\Op2??<HyHyHy ?.Nk?@ NN/|TOp(??<?9N\ Ni8=n0<=@=@pd=@=@HnHyHyNit 0.fHyÂHyx?.?.?< N`HnHnHnNit 0.nf 0.ng>p%?NNTOHyÂ?< N`/|ÂTOHyx?.?.?< N`09\gb0.@gXp%?NNTO yi#i   @m # iHnHnHnNit 0.@f`0.@gHn?.?.NlPO0fz nl` nlV0.HH@0gD no:0.H!<0.HS@>HF8H @i=PHyHyHy ?.Nk09 H@009H@009H@09H @9o^99H @9o^99H @9o^9p%?NNTOHyÂ?< N`/|TOp2??<?9N\ p%?NN>?9p?NN/|ÂTOHyx?.?.?< N`=n=n`HyÂ?< N`\OHnHyHyNit 0.f 9C b09HA0H @0 y"f" yf 9A b P1nNifp%?NNTONgNp%?NNTO09"g?p//p?NN p%?NNTOp?/9 N/9 Np?NN p%?NNTO 9A b/p?NN\Op%?NN> N`TOL0N^NuNV=yi=yi=yi=yiHy Xp?BgN/|. Hy Hy /9 XN~/| \/| /|~/|TXOp?/9 XN=yT=y~=y=y \09"fp`p=@HnHnHnHnp?/9 XNHnHnHnHn?./9 XN/| \/|/|~ /|T\Op?/9 XN09@ y X1@T09"fr`rd09T@A3 pyi@y  y X1@P09ig y Xp1@ y XBhz` y XBh y Xp1@z?< N`>?9 ?9 ?9 p????BgN~?y?y ?y ?y p ?Bg/9 XN=n=n0.nS@=@0.nS@=@p??9NJXOBg?9NXOp??9NXOBn09"fp`pnoL0.HA??9NXOHn?9NJ\O0.R@n0.R@nRn`BgBgN?| TON`>i?.?.?.?.N_?yi?n?n?n>N_ p?N~TOBn0.fHyHnHnHnHnHnBgBgBBgBgBgBgBgBgBgBgBgBgp???p?N}p<=@@gHn?.?.NlPO0g=yi=yiHnHnp???.?.N60.nS@no$0.nS@no0.nذnoByi`2.RA0.nH3i2.n0.nAo0.W@`2.RA0.nnS@H3i0.W@yil 0.W@3i09i°yig?.?.?.?.?.N_?n?n?n?n>N_?yi?n?n?n>N_?yi?n?n?n>N_ `3i3i`?.?.p ?Bg/9 XN =@o@ @ bH0@x PN`Bgp?p?/9 XN =@0fp`(?<?9?.NB\O2IH0<A3iN_`> yil2Ryi`09ig Syi`p???9?9 ?9 ?9 Bgp?/9 XN4p?p??9?9 ?9 ?9 Bgp ?/9 XN4Byi`p???9?9 ?9 ?9 Bgp ?/9 XN4p?p??9?9 ?9 ?9 Bgp?/9 XN4p3i`.?< N`TOp?/9/9p?NN p%?NNTO09.fNhxHnHnHnHnBgp??N|09.f Nh 9A b/p?NN\Op?/9 N/9 Np?NN p%?NN> N`TO`x09.fpNhxHnHnHnHnBgp??N|Nh 9A b/p?NN\O`&3i3i3i3ip=@0.@g n fp=@`p?N~>?9 ?9 ?9 p????p?N~N^NuNVpyi@y  y X1@P?9?9 ?9 ?9 p ?p?/9 XNN^NuNV09.g(NhBy. 9A b/p?NN\O`p3.NhxN^NuNVH>.<. :. 8.6.0R@G=@0DT@=@0.ES@=@0.V@=@?< N`TOp??9NXOp??9NXOHn?9NJ?| XON`TOLN^NuNV/ N\0g& y *P=h=h0(H =@`*y=y=y =y 2Bgp?N?y |>?.?./ ?. ?.NnrBgBgNXO*_N^Nu0/A00Jg, g@ gJ g`H?>aL|NuNuH?>a" L| o o Nu oH?>,Ha`0/2/ o "oH?>$Ia` /H?>$@a` OH2(6(<(G7h <|>9 7Gk GfG7GBkBk>(hm7|>(h m7|>9 |O GfSG7GJkg>(H(H(H ` >( H7G*|~>(0+޹ x 2ކ'G"~>( 0+޹ N 2ށ'G&2(<(hh 8(:(0( 4(8|"k"$k&PPJ+g0H0'I @23*B@4+6+H>AgCQ7@LJ+g0H'J@23*>FG0+4+dZQ`ZQLJkg(BmRDDg"k PJBfX`:SERDDg"k Q~>(EmR@@g$kPJEfJkg>SCRA>9 2H߫&~>(CmRF>9 2H߫"~>+JCf`BSkRF>9 2H߫"~>( kmRA>9 2H߫&~>+JkftLxNu@ @  o"o#i3i3i#i0(ylp3i0(y lp3i0( 2A3i29 2IAiy i09 3i @f3iHB?< NA\O#ia#pe!e~p?<?<NMXOJ@g?<?<NMXO f!pea z:0H1zF/: ?< NA\OLxNuH z0:&0:H2: h#i0:@efӂ΂ɂ LNJ?<"NNTO @#iHz&Hz?<BgNNO Nu?<"NNTO @!zNu/p@3iHzlpzpo0:j3iHzflpzVo0:P3i NuHx3wiJy\g x3i024AĚ#i#iJy\faP0Q2Q4QL8Nua40SA Af2Q4ra0SAlrQ42QL8NuJy\g06KdCK:MdEEK:MdEENu6CACBNuHHz&?<&NN\OLxNuHHzx?<&NN\OLxNuBy@ iii# i#i#pi!g8 8!hR 88!h pNui ii!i !i!ipNuF%/9iNuHB8! 8!f z#iCTLHBx@1t^L/9iNuHAT"zzLH#iLNsHHz&?<&NN\OLxNuHHz,?<&NN\OLxNu3ii#pi!hpNu!ipNuSyi yifV3iiHC@09i@A09i@CJyig00200gTH`022!20fL/9iNuH3i3di3/i3ia~LxNuHaLxNu o02 o0, o 0&NuwĚ o"oHA0@210@410@610@810@:13jJy\g63j?a|2?at4?al6?ad8?a\O :AL><<z@0z:@0z2@0z*@0z"@0IJKLMQAa2LNu0/?2@w@AIA2Nu0/Jy\g?2@HAIA2Nu oH,HL>09 Mz<@rtvxzp>(ABCDE<ag@<bg@<cg@<(dg@<(eg@SVfƴAf AfAfAg pA$H|LxNu OH0("h$h &hrJy\g?aTO1@r4A64JA44JA20(LNu642ABCA&Cpz8<~<Ap`<Bp`<Cp`Dl80Q @Nup o0B(0/g$C)BJ@g H@0B@H@`fNu$/ B0/"/ ggSg dl Sf NutJ@0H@0$B SfJBgSBQ` o"o / S@""""""""""""""""QNu2/4/ oPm hm0h@l0(h@lpNupNu0)<) :) 6i03 nn"HUI3npr&BB8a2$ISynnfLNuEDlg˜FQ2BBvQ0rSynpfNu OH3o3o4( 3o3o"h3o89 UDJyogSyo0 I2<|*JDg&(AgFFHCAgFFAgFFHEAgFzf<:>FGa8`zf<:|>FGa S@g Ifl`h`fLNu*HENdA`GHENdA`G JDg**(HENdA`GHENdA`G!ENu o"oHx0aHBB2 QLNu"3DUfw OH$h&JGP hCH:<8< "v|~tABHAAB@BH@@B?BB01 41 @݆@݆B߇B߇0HAH@Q$&QJGQLNu oCH8<0a HBJ" QLNu@@ oCH8<0aHBJ" QLNu OH$h&JGP hCP:<8<' v|~t@BH@@BBB21 41 AFBGH@Q46QJGQLNuv2AC4;@2IC{&HC{dBNu  +6AL+'@VNkv  "( OH$h h"HCP3rXv8< "z|~tЀCЀCҁCҁCJGHGGHGFHFFHFQ$$QHCSyrXfLNu OH"h&h ha`6<8<|~tz r@AH@@AH@@AH@@AH@ GHGGHGFHFFHFQQ""QQLxNuHAlpr4363Bg(x~:E<FENHF莈FJKLQ60TA AmT@ @mAp7U@l/ ?<NN\OLNu OH$h h"HCP><v8<'02z|t@CACJFHFFHFQ$QHCQLNu OH"h$h h/ a"XOatI6<8<| "~ztABHAABHA@BH@@BH@BK 4BBUHBBGHGBGHGBGHGBGHGQ"QQQLxNuH6<I2CNz "tABHAABHA@BH@@BH@BRt QQ6<p8<\n 0,2 AQ2AIBtQx0ad8RD DmC(J4<0@2QC4<8QLNu&oHAp26<4BB0IQQLNuHAA642pz8<A&E`Cf<C`~<Cp`<Bp`<Ap`Dl80Q @LNuNVH|~Hy/. /.N 0l| .". -@-A Hy/. /.N 0o(~Hnp?NTO//N\ -@-A Hn/. /.Nd -@-AHnp?Hy*//.Nz/A /@\Op?Hy/./.Nz/A /@\ON/A /@PONd -@-A0g8HnHyHy!hHyAIN\/A/@XONT -@-A0g .". -@-A .".LN^NuNV/HnHyHyHyANd/A/@. /.N/A /@PON -@-A ~Hy//N 0o~HyHnNPOHy/. /.N 0o& GHnHyHy@NT -@-A Hy/. /.N 0o~Hy/. /.Nd/A/@.HyA@N-@-A Hnp?HybHn//.Nd/A/@XONz/A /@\ONd `BHyHnNPOp?HyšHn/. /.Nd/A/@XONz-@-A0g . ` ."..N^NuNVHy/. /.N 0f .".`hHn/./.N\ -@-AHnHyHn//.Nd/A/@XONL/A/@XON{/A.Nd -@-AHy//N 0l .". ` .".N^NuNVH>. n "(-@-A .". -@-ASG|GlF0HЮ//./.Nd/A/@XOHnN HnHnNPORF`0HЮ//./.Nd/A/@XOHnN .".LN^NuNVHyHy!hHyAIN\/A/@. /.N/A /@PONw~PON^NuNV/Hy/. /.N 0lp3pr`Hy/. /.N 0g~Hn/. /.N^ -@-A0.H?HyHy@N -@-AHyHnHn/. /.N\/A/@XONL/A/@XON\ -@-ASGf".N^NuNV3 ~0.@ H-@p=@ nl$0.HC ~ nRB@2Rn`/9NXO09 N^NuNV# ~#D# # #t##p ?N|TO3 n09nN^NuNVp?N|TOpN^NuNV3 3  3  p?N|TO n0 n0 n0 n0 09 N^NuNV3 3  p?N|TON^NuNV3 3  3  3 3 3 3 3 3 3 3 3 3  3" #$t3( 3* p?N|TO n,0 n00 n40 n80 n<0 n@0 09 N^NuNV3 3  p?N|TON^NuNV3 # tp4?N|TON^NuNV#tp6?N|TO n 0 n0 n0 n0 09 N^NuNV3 3  3  3 3 3 3 3 3 p3?N|TON^NuNV#t3  p2?N|TON^NuNV#t# xpZ?N|TO n0 09 N^NuNVpM?N|TO n0 n 0 n0 n0 09 N^NuNVpO?N|TO n0 n 0 n0 n0 N^NuNV3 # tpN?N|TON^NuNV3 3  3  3 pF?N|TO n0 n0 09 N^NuNV#t3  3 3 pL?N|TON^NuNV#t3  p?N|TON^NuNV#t3  3 p ?N|TON^NuNV#t3  3 p!?N|TON^NuNV#t3  3 3 3 3 3 3 3 p/?N|TON^NuNV#t3  3 3 3 3 3 p*?N|TON^NuNV#t3  3 3 3 p+?N|TON^NuNV#t3  p,?N|TO n0 n0 09 N^NuNVH0*n(n 8888L0N^NuNVH0*n(n 0m?0l?NXO:0-m?0,l?NXO8??NXO>?-?,NXO<89F0G9@0F9@GoFop`B@L0N^NuNVpo?N|TON^NuNV3 3  pp?N|TO n 09 N^NuNV#tpn?N|TON^NuNV#tp|?N|TON^NuNV3 3  3  #t#xpy?N|TON^NuNV3 3  3  3 3 3 pl?N|TO n0 n0 n0 n 0 09 N^NuNV3 pf?N|TON^NuNV3 3  3  3 3 pd?N|TON^NuNV3 pg?N|TON^NuNV3 3  ph?N|TO n 0 n0 n0 n0 09 N^NuNV3 3  3  3 3 pe?N|TON^NuNV3 3  3  3 3 3 pi?N|TON^NuNV3 pk?N|TON^NuNV0.n o0`0. N^NuNV0.n l0`0. N^Nu"/0<NBNuNV3 3 ByByByBy3By3R3Tp 3p3p3p33NN^NuNV# p 3p3Byp33N#N^NuNV3 3 ByBy3Byp 3p3Byp33NN^NuNVpe3ByBy3NN^NuNVp3ByBy3NN^NuNV3R3 3 pg3p3p33NN^Nu#"< <sNBNuNV3 3 333R3Tp 3p3p3p33NN^NuNV3 3 33p 3p3Byp33NN^NuNV3 3 333R3Tp 3p3p3p33NN^NuNV# p 33 By3N#N^NuNV3 3 pi3p3By3N n0^ n0`N^NuNVH *n3 3 ~0RGHARB@0fp3p3SG033NL N^NuNV## .Z#pd3Byp 3 n 3N n 0#R#^##N^NuNV## .Z#p3Byp 3N n 0#R#^##N^NuNV3 3 ByByByBy3By3R3Tp 3p3p3p33NN^NuNV# p33 By3N#N^NuNV# p33 By3N#N^NuNV#R##  . Z#3 Rpf3Byp33N#^#N^NuNV/ *n 3 R3Byp33NBn n l""M0.R@HA^0Rn`09^*_N^NuNV3 Rpu3Byp33N n 0 n0 n009^N^NuNV3 R/.N@.NJXO# pm3p3p33N#N^NuNV# pr3p3By3N#N^NuNV/. N@.NJXOpn3ByBy3NN^NuNV# 3 R3p3p33N#N^NuNV3 Rp3Byp33N09^N^NuNV3 Rp3Byp33N09^N^NuNV3 Rph3Byp33N09^N^NuNV3 Rp3Byp33N09^N^NuNV# pp3By0.H33N#RN^NuNV3 Rp3Byp33N09^N^NuNV3 R3 Tpl3Byp33NN^NuNV3 Rp3Byp33N09^N^NuNV3 Rpq3Byp33NN^NuNV3 Byp3p3By3N09N^NuNV3 Rp3Byp33N09^N^NuNVBy3 p3p3By3N09N^NuNV3 Rp3Byp33N09^N^NuNV3 R3 Tp'3Byp33N n0^ n0`N^NuNV3 Rp3Byp33N09^N^NuNV3 Rpj3Byp33N09^N^NuNV3 Rp3Byp33N09^N^NuNVpw3ByBy3N09^N^NuNV3 Rpk3Byp33N n 0 n0 n0 n009^N^NuNV3 Rp 3Byp33N09^N^NuNVpx3ByBy3NN^NuNV3 Rp 3Byp33N09^N^Nu#Nu#Nu0/lD@NuNVH *nz~H< @ g F fR` F-fz` F+fRH< @0m F9n2A00 A>`JEf0D@>0L N^Nu"o o JfSfNu"o o fNu o"Jf S@NuNVH0*n n "(-@-A0.lp=@Hyt/./.N 0l .". -@-Ap-HnHnHn?././.?.N(@ neg ngfv nn 0.D@nob ngfp?`BgBg?./ / NB*@0.m ?.Hy`0.D@?Hy/ NT / NXOHЍ`& ngfp?`Bg?.?./ / NBL0N^NuNVH0*n(n >.<.0lp0`gH`p00SF0f0g20.gg(p.0SG0o0.ggRFlp0`gH` L0N^NuNVH Hyt/./. N 0l np0 . ". -@ -A` nBPHyt/./. N 0f nBP <`Hn/./. N^ HnHy|Sn0.?NTO//N\ //N /./.NPO<?NTO//Hn N$ Hy/./. N 0mRFHyHn NPO n0 neg ngf Fn 0.D@Fo0.`0.FR@=@0.nB0.f,Hy/./. N 0o nRP <` nBP <` nop=@*n0nctHyt/./. N 0gX/./. NPO>0@0Hy?NTO///./. N//Nd -@ -A`BHy/./. N 0nS Mg 0fB` .`& MSgRH @9oB` nRP <L N^NuNVHn?</.N Hn HnNPOHnBg nN\ON^NuNVH0-n n(PXH> @%g0gP/.? n hN\O`p =@p=@p=@H> G-fp=@H>`Bn G0f p0=@H> G*f& nT=Plp=@0.D@=@H>`*Bn G0m G9n0. G@0=@H>` G.fJH> G*f nT=PH>`*Bn G0m G9n0. G@0=@H>` Glf&H> Gdg Gog Gug Gxf0@> `-@*@p=@0 |2<`XHXW PN`4 nT=P0.l0.D@=@p-p ??./ NPO*@`p ? nT?`p`p` n-PX .l .D-@p-p ?/./ N| `p ? n// N| *@X`p`p`/ ?./.?N *@P`fBn n-Pf-|X .-@*@g0.m noS`(Bn nT0` n//.NPO`n ./0.Hї =@lBn0.fL0.g0 n0f( n -f/. nRH? n hN\O0.Sn0g /.?.` nd /. nRH? n hN\O`0.g0.Sn0g/.?. n hN\O`L0N^NuNVH >. *NB%0<g"0H@H@B@H@ @>`?Bg _g nR` .L N^NuNVH0*n>.IB$p0//. N$PO-@g$p0//. NlPOA-n ` n g` L0N^NuNV/ *n .*+@+|B-0. D@;@ m l;| +|f`+|> *_N^NuNV/ *n Sm lBm p` UR0.*_N^NuNV/ *n UR0.*_N^NuNV/ *nRm oBm p` URB@*_N^NuNVN?.NTON^NuNVN^NuNV?.pL?NAXON^Nu |` |` |` |H$H"o oN""LNu |` |` |` |H$H"oAN""LNu |` |` |` |H$HC o NLNu H@"HA4B|?4<68@g AgDgDgC|@e|b?H@HA()|zx)K)>HC(K(4ނF)JH@ނE(JHAނEHG4BHBBEHCCHCCD$HBHABHBBD4BHBBDBC$HBHABHBBC6AHAAkOVUT|e$JCk(2HA2|0H@0H@C_H@NuTrpNur Nu |` |` |` |H$HCA NLNur0/H`rp0/fNur /fNuj2<D|SAdHAQQQQQQQQQHAIH@AH@BANur /fNu o /"<€@HAI|0"/NuA ` o /j"j$b f$ /bfB@Nunf /bgpJ@NupJ@Nu /fprNuH@2<AAf rp∀NuHo oڰ|lHFAoAH@"/NuNV/ *nHn/. /.N^ n8m .". *+A <"<`00.nPHy/. /.N 0l**+|Hy/. /.NL `BB`Hy/. /.N 0m?./ /. /.N`?./ .". //N-@-A Hy/. /.N 0g@Hy "- //NT *+AHnHyHy@NT`2 "- *+A .". *_N^NuH<"o4/ SB6(<zQ /"/$Ą"$ą"fJg"Q6<`SCgKHCBCL.0l*0D@?NTO//HyHy@N`j-|@-| G mG HyHnNPO GmGHyHnNPO0H/HnNPO ."..N^NuA`Z|dB@H@DAJjDNu0<NuA`8k2|opNuA`&k | opNuA`| epNupNur2/j| /<␒|oJNpNu o "o2/ gm H` QNu!QNuNVH >. <.*n0SF0g` .L N^Nu g @` f ")Nu(f"(Nu"(*)tvRSb fdDECH@HD,<>@D@D||H@HDNO|gVCgFDfRFgFG|8exz`Q~ۇه҅фJCjJf0Jf,prNug&~ӇчRf <r`SggNHFHBNu/246C|?IJ8<DDDg$Dg,B|o"|n &g((zQ?/~>BCHC|p0")4)zJPQ||@HBBBz?<,O`?,<HFh|(HDCHC҃Eg`B@HC(8"8` SF҃@fe򒄑E8.ƔE8.HBDHB8HDEj SFԮ6ӃBCHCHA0HB2BBSnf~2HA2 H@\<`SFo.d|btNQH@_H@`p"|_H@`Tpr,_Nuhhh>hhhjhh@NpPPPPPPPPPFPP8)X*()t)*2)() )<(T) (r!("(#($(%(&(,*D-*.(h/)0(^1)2(K*jM*Va(J*v/$0.0T0b0f02 1L1x2 02 111111111111/16b6j6r6z8p888888999 9089V9@9H9P::::;H; ;;;;*;H;:;BGNG|GGGHrHrGHHH&HrH6HNU:UJUZU^UBVtVVVV|\^t_`]bjcPcd>ceNef^o oo(o6AIڢ!hEAD4 2FԎԼ^ՌrՆtt@@@@VV^^^^EAIڢ!h>(>4H"<HHHv`    !*!X!!!!b!v!!!!... ..44449|999::6:V:~::;|AABBbKBKC6KCEEEB,B>BPEG0FFFf\h\|\ ^^\^,]x^~^^]@AAIڢ!h@??B@B@AA ATxKB ADdOUXcdefgo\r0suLx`D0123456789ABCDEF@@B CEzG@HPJt$LM Onk(QRC@ThԥV*W Yc_1uŭ+p[ɿ\*.PI1\*.PAL     PAINT2.RSCPAINT1.RSCPAINT0.RSC[3][Resource File|was not found.][Abort]\UNTITLED.PI[3] [Fatal error! |Bad Resource file.][Abort]@`px|~xp`@PAINT.PRTUNTITLED./PAINT.PRGPAINT.PRT0`  `0``DEFAULT.BRSDEFAULT.MFLDEFAULT.CFLDEFAULT.PA2DEFAULT.PA1DEFBLOCK.IMGNEOARTIMG\*.MFL\*.CFL\*.BRS\*.NEO\*.ART\*.PI?\*.PC?\*.IMG[3][Disk write protected!][Abort][3][You must change file type.|*.ART is Low res. only!][Cancel][3][Disk write protected!][Abort][3][Disk write protected!][Abort]DEFAULT.CFLDEFAULT.PA1DEFAULT.PA2DEFAULT.MFLDEFAULT.BRSDEFAULT.CFLDEFAULT.PA1DEFAULT.PA2DEFAULT.MFLDEFAULT.BRS @ @ `0 `0 p8p8 0 0 d@$ $ @ d ) a D9@YAIq@iD!ydQ@1$  $1@Qdy!Di@qIAY@9D a ) d @ $ $@dx= y= x= x= X $0  x?Cxl?gCCA 8  8@@ @@@A@@@    !       0@A@0 !  $ """"""""UU""UUUU""UUUU""UUUU""UUUUUUUUUUUUUUUUUUwwݪwwݪwwݪwwݪAA"" @@AA"" @@ @@ @@PPPP@@ @@ `f3`f366ccǏ||66ccǏ||AA""AA""wwwwwwwwAA>> AA>>ぁBB$$BB$$>>>>>>>>""DDDD""""DDDD"" @@ @@ 00`` 00``BB$$$$BBBB$$$$BB @ @8p8p@  @@  @?`p x0|8~<>????<|8x0p ` RGB [3][Swap and recolour?][Cancel|OK]E7p;!F=q1*F,fwED!]`ID@F͠,B5'>"E7p;!FV-s4_Fe$ E5DӉ+>.C5&@@ k+ȂN:!bI3 EL$|![*  Mi@M.=@Mj7pAh/ o,5̬ e+%02ue-%02u0101{NULL} 0ZP(            &          &   * "   &        (:   <J"                                 ,                , F&$                                   ,                                    ,&&"    8     &$ .*X "  F4          &("B<64DLT80  | 0&n     &"    4(4,",&.  &  " (4    N    <  (6&(  4 ,"F   ,(    4        * $2,  "      2D Z  "         *j,      $         ,      $   $     2& "0  *                 "(                                . F* < |$:T8" $pL$8       > x $R $    4"       *N &   $      ,4 (                                                      $   .   ,      *     T                    x4: J2    48  *  J            2. `       @          h      &    j       8,(          (. (."H   **z 86 L     ,   8 N       8*    "        2      $ $ (   " Z$ Z F D B V D @ BN (P "   l       F2J P   *0     4       *  (|*  2  " 2 2  " 2  *>0(          "HB j  "&" 0     >  &*                                           "         hD, $ b ,          b                    . "20 RX&"@P       n&*  2(       "     "   $, (( 6. .      4,: ," 0                                                                                                                 .                             $ $8      6"8, 4&( .**8**:**Nn 8    ".. , *80.. ,     ,4    &    >     .4     0        ",(     4       * &X  VTXP 6     8    lL..TZBP  `  2   0R  <    T $                F  ,   "@ *6,,, & ,",  & ,", & , & 6,< ** n< ,Nb .                N                        $ ""$  $  2   * d*    "      $  H&H      &&    0d         &  &     6     &@"<: ""              0 V     Dp6$t   J8 Zx ( >  ,nT .D .   BT&  F  " 4$  t *$                       J>            R      "       DJ *4    L(HFP( LD.$ | (  XT6& &   b,V "i;gBa01ǰXBơx\go$G҇o4UA<_Ʃ׵zq\/M%* sȫ}p-vo73~ Qgx)F1[˗Ma<%yG~oH\ѹJӕuGHys=ؕʬKs R/P)յbG{bη9$9!=+q9{90~õ4pBs /\N{vW4/|~\OpH?NA\O#`\ o 9`\@#l#mFp?/9kjN'^/|fTO/9k(N PO9lfNp?NATOAHlp:lB9lBgHylpG?NA/|X.lN)bPO`|GlKXf \gS`RfHyXNLXO0gN j0f&HyXHyXN)D/ylpXOp?N$\O`p?p?/9kjN&POB9XNBy`Z09`Zf0HykxN$~XO y kxf?9k?9k~NXO3`Z`Hyf/9k(NPO09Xg/9fRpI?NA\O/9`\pI?NA\O?9gN!TOHnHygHygHygN%|0.@fX9fgPHyYHyfp???N'b`2Hy`ZHygHygHygN%,09`Z@ @gZN#|L8N^NuNVr?HyYr=?NAPO=@0m(Hylvp/?.p??NA?n p>?NAXO`Bp3lxp3lzp3l|p3l~p3lp3lvHyYHylN'~PON NN^NuNV09lx @mhh 09lz @mhh 09l| @mhh 09l~ @mhh 09l @mhh N^NuNV09lv @lh N^NuNV/~ Gl00 @mh0(@g0 @mhh RG`.N^NuNV/~ Gl00 @l0(@g0 @lh RG`.N^NuNVHyXHykN&4POBn0.W@ @bH0@UH PN` n fNz`0. @ @bH0@U(`Bgp?/9kjN#ZPOBykB@3mH#mVHyYHyXN%/|Y.XN%PO`4N0f*HykHyXN%v/ylpXOp?N!\O`r?HyYr=?NAPO=@0m:Hylvp/?.p??NA?n p>?NAXONNHNN `/9l`r?HyY'r=?NAPO=@0m?.p>?NA.Y1pA?NA\OBgHyY;p?NAXO`6NB0f./9l`p=@`0. @g @g` N`NxHyYEHyXN$NPONp??./9kjN!PO0.N^NuNVp09k/p09^T/N3/@XO09m^@@H/N3PO#mVHyX/N/|Xv?ymTON\/|X|>kNJ?yg?yg>f?9fp?Bg/9k(N!N^NuNVHnp?BgN"POHnHnHnHn/.N"?n?n?n?n p????BgN@?n?n?n ?n p?Bg/.N!DBg/.Nd\O3gBgBg?.?.?.?.Bg?/.N ?n?n?n?n p????p?NN^NuNVHyf/9lN"POBg/9lN\O=@BgBg?9f?9f?9f?9fBg?/9lN * ngN Hyf/9lNPONN0N^NuNV/~ Gl40 @l0(@g0 @l0( @fRG`3lv.N^NuNV ymh0(Z@gp`p3lz ymh0(@gp`p3l| ymh0(@gp` ymh0(2@gp`p3l~ ymh0(z@gp` ymh0(@gp`p3l ymh0(@gp `* ymh0(@gp` ymh0(@gp `p 3lxN^NuNV/HylV/9mhNnPOp?/9mhN.\O>BgBg?9l\?9lZ?9lX?9lVBg?/9mhNv GgNHylV/9mhNdPONN.N^NuNV n ?(?(?(?p????BgNP n ?(?(?(?p?Bg/.NZN^NuNV n ?(?(?(?p????p?NN^NuNVp=@09lvY@ @bjH0@UT PN`ZHyYL`FHyYR`>HyYX`6HyY^`.HyYd`&HyYj`HyYp`HyYv`HyY|`HyYHymNdPOHymHylN$PON 0gPHyXN (XO0fB@`@09Xg/9fRpI?NA\OByXN&=@0gp?p?/9kjNPO0.N^NuNVp=@r?Hylr=?NAPO3f0mjBp?N/|YTOHyXNPONz#mFl09^R @b"H0@U PN`/9lHy}?9fp??NA/|dR/|?yfTOp??NA?yf p>?NAXOp /HykHydRN1 `HydRHy?9fp??NA/yl/|}?yfTOp??NA?yf p>?NAXOp /HykHydVN1: 3tmZ9dUH @blH0@U PN`\3@m3k3RmNByld`<3m3k3mNp`3m3k3tmNp3ldryldp4h3^T`HydRp"/?9fp??NA/yl/|}?yfTOp??NA?yf p>?NAXOp /HykHydT`HydRp"/?9fp??NA?yf N ">f`N 0g p3X` ByXBnBBgN\O`BnN0.N^NuNVp=@Bp?N~\Op3\Rp=@ n l0.HA\Rp0Rn`p3\fByl>Byl?9l3^\mJ3^^mL09l<@@H3kT09l>H/09kTH/N*PO#f09mBf:/9fpH?NA\O#`b n/9lp?N\OBn`#`bkBg/9f/9kN.F 09mBf&p?NATO f/9lp?NP\O @f`XN0fBn`HHyYHyXN?yg?yg?yf>fp?Bg/9k(N/|l NXO3X ylzf09mBf ?9mTNTO09mBg\09XS@??9mTN-XOp3kR09kRgHykRp?Hyk?9mTN 09kRg?NTO0g`nBn0.yXlHp?NATO f/9lp?N2\O @f`:HykRp?Hyk?9mTN` Rn` yl|f ?9mTNTO09mBf/9`bpI?NA\OB9X?9mTNtTOBBgN^\O0.N^NuNVp=@0.U@ @bfp?Bg/9k(N09m=@=@=yk ylxf?9m?<?9l?<??9mN\O:yl?9mN?9mZ?9mL?9mJ?N?@XON\O<?<??9kN\O8yl>oZ89l>?9k?<?Nn\O<?9mZ?9mN?9mJ?9mL?NL?@XONB\O>?<??9mN.\O:?9l>?9l<` y lxf 09mΰylo 3l>k yldg:9m89k`?9l>?9lf .g 0gSSG`0glR3tmZHyY/ NPO0f"p3^Rryldp4h3^Tp`4HyY/ NPO0f(p3^RByld3@m3k3RmN`HyY/ NLPO0fBy^R`HyY/ N2PO0fp`HyY/ NPO0f,p3^Rp3ld3m3k3mN`@HyY/ NPO0f,p3^Rp3ld3m3k3tmN`HyY/ NPO0fp`HyY/ NPO0fp`jHyY/ NpPO0fp`N@B@L N^NuNVH8B09^THU@=@09ldfp`p(=@=yk yldfpP` <-@ 9l-@&@HypH?NA\O*@(@Hy}pH?NA\O-@-@/.Hy}?.p??NA 0.g nRP.f8B@.R@@p.// /.N%& B@.?Bg n-H`@B@. @g4B@.F@T@@ nRPB@.?p.// N$ B@. @gB@.?Bgp.Ѯ .మm@B*LBn0.y^Tl,HHЮ&@Bn0.nlRn`Rn`*L n-HSn`/ pI?NA/nTOpI?NA\OL8N^NuNV#md#`fkN:0g?9fp>?NAXOp`?9fp>?NA.lp?N \OB@N^NuNVHylFp/?9fp??NA gB@`F09lJ3^T3m&3lLln3lRmD3lTk,09mD^@@3mp09mD@@H3k09mD3kN3kZ09k,3kP3k\09kZ@@3k^3^Tkbp09k\/p09^T/N*/@XO09k^HH/NPO#m`/pH?NA\O#fR o/9mdpH?NA\O-@ n/9fRpI?NA\O`3mDm3kPk3lNmN3lPmZ09^TS@ @b$H0@U PN`p3ld` p`ByldHyYHyXNPONv 9fR@#l`#kV#l`l#kr09k^HH#`V/p09^T/N PO-@Bg/9m`/9l`N! #krm\Bml09lHH ob/9m\09lHHQ/?9fp??NA ym\Rm\f. ym\Rm\B@ @fp /Hyk/9m\N!@ /9m\/9md?9fp??NA #mBy``Bgp09^T/p09k/N*/@.kN -yk=ykZp=@=yk^p=@=y^TBn0.ykPl.,. p0йmlmdp0#ml///9m\N Rml 9mlS ym\#m\`p#mlL N^NuNVH..,. :.8.6.p3k#k#kp3k3k3l@k3kTkp3k3kBk3k3k3k3k3k3k0.kkkkHyk?<N"\OLN^NuNVH>.<. :. p0/p0/p0/N/@XONPORLN^NuNVH(..*n fp0B`H| B.z 0SEH@B@H@&@p0//NPO@0@p0//NPO. fREPfL(N^NuNVH >.*n 0fp0B`B| B.z0SEH@B@H@ @0H@@@0@p0>0fREPfL N^NuNV3m3m n Jg3m.\R/. NBNX`Bym3mN( n0^VN^NuNV#Z#Z .мZ#Z3mJng Jng3m3g3g `Bym3 mN( ymf ymgJymf n `./<mNBNX n 0m#\RZ#^VZ#iZ#gZN^NuNVpe3mBymBym3mN(N^NuNVp3mBymBym3mN(N^Nu#mZ "<Z <sNBNuNVp3mBymBymp3m3mN(N^NuNV#Z#Z .Z#Zpd3mBymp 3m n 3mN( n 0m#\RZ#^VZ#iZ#gZN^NuNV/. N)$.N).XOpn3mBymBym3mN(N^Nu#mNu#m NuNV3l0.@ HU-@p=@ nl$0.HCl nRB@2Rn`/9Z6N-XO09l.N^NuNV#lZ#k.Z"#lZ&#l.Z*#lZ.#m Z2#ZZ6p ?N)8TO3l.l09lN^NuNVp?N)8TOpN^NuNV#lp?N)8TON^NuNV3l# lp4?N)8TON^NuNV#lp6?N)8TO n 0l0 n0l2 n0l4 n0l609l.N^NuNV3l3 l3 l3l3l3l3l3l3lp3?N)8TON^NuNV#l3 lp2?N)8TON^NuNV#l# lpZ?N)8TO n0l009l.N^NuNVpM?N)8TO n0l0 n 0l2 n0l4 n0l609l.N^NuNVpO?N)8TO n0l0 n 0l2 n0l4 n0l6N^NuNV3l# lpN?N)8TON^NuNV#l3 lp?N)8TON^NuNV#l3 l3lp ?N)8TON^NuNV#l3 l3lp!?N)8TON^NuNV#l3 l3l3l3l3l3l3l3lp/?N)8TON^NuNV#l3 l3l3l3l3l3lp*?N)8TON^NuNV3l3 lpp?N)8TO n m 09l.N^NuNV#lpn?N)8TON^NuNV#lp|?N)8TON^NuNV#l# lpx?N)8TON^NuNV3l3 l3 l#l#lpy?N)8TON^Nu"/0<NBNuNVH *nz~H< @ g F fR` F-fz` F+fRH< @0m F9n2A00 A>`JEf0D@>0L N^Nu"o o JfSfNu"o ofJfHHNu"o o fNu o"Jf S@NuNVH0*n n "(-@-A0.lp=@HyWL/./.N;H 0l .". -@-Ap-HnHnHn?././.?.N0v(@ neg ngfv nn 0.D@nob ngfp?`BgBg?./ / N/*@0.m ?.HyY`0.D@?HyY/ N3 / N.XOHЍ`& ngfp?`Bg?.?./ / N/L0N^NuNVH0*n(n >.<.0lp0`gH`p00SF0f0g20.gg(p.0SG0o0.ggRFlp0`gH` L0N^NuNVH HyWL/./. N;H 0l np0 . ". -@ -A` nBPHyWL/./. N;H 0f nBP <Y`Hn/./. N; HnHyWTSn0.?N:TO//N9 //N; /./.N?"PO<?N>zTO//Hn N8 HyW\/./. N;H 0mRFHyW\Hn N8PO n0 neg ngf Fn 0.D@Fo0.`0.FR@=@0.nB0.f,HyWd/./. N;H 0o nRP <Y` nBP <Y` nop=@*n0nctHyWL/./. N;H 0gX/./. N?"PO>0@0HyW\?N:TO///./. N:~//N9 -@ -A`BHyWd/./. N;H 0nS Mg 0fB` .`& MSgRH @9oB` nRP <YL N^NuNVHn?</.N7 Hn HnN3LPOHnBg nN\ON^NuNVH0-n n(PXH> @%g0gP/.? n hN\O`p =@p=@p=@H> G-fp=@H>`Bn G0f p0=@H> G*f& nT=Plp=@0.D@=@H>`*Bn G0m G9n0. G@0=@H>` G.fJH> G*f nT=PH>`*Bn G0m G9n0. G@0=@H>` Glf&H> Gdg Gog Gug Gxf0@> `-@*@p=@0 |Wl2<`XHXW PN`4 nT=P0.l0.D@=@p-p ??./ N6PO*@`p ? nT?`p`p` n-PX .l .D-@p-p ?/./ N78 `p ? n// N78 *@X`p`p`/ ?./.?N. *@P`fBn n-Pf-|YX .-@*@g0.m noS`(Bn nT0` n//.N3LPO`n ./0.Hї =@lBn0.fL0.g0 n0f( n -f/. nRH? n hN\O0.Sn0g /.?.` nd /. nRH? n hN\O`0.g0.Sn0g/.?. n hN\O`L0N^NuNVH >. *NB%0<g"0H@H@B@H@ @W>`?Bg _Wg nR` .L N^NuNVH0*n>.IB$p0//. N=PO-@g$p0//. N=POAW-n ` n Wg` L0N^NuNV/ *n .*+@+|8<B-0. D@;@ m l;| +|8"`+|7 *_N^NuNV/ *n Sm lBm p` UR0.*_N^NuNV/ *n UR0.*_N^NuNV/ *nRm oBm p` URB@*_N^NuNVN8|?.N8TON^NuNVN^NuNV?.pL?NAXON^Nu |?` |?` |@` |9HC(K(4ނF)JH@ނE(JHAނEHG4BHBBEHCCHCCD$HBHABHBBD4BHBBDBC$HBHABHBBC6AHAAkOVUT|e$JCk(2HA2|0H@0H@C_H@NuTrpNur Nu |?` |?` |@` |9.0l*0D@?N>zTO//HyHy@N:`j-|@-| G mG HyXfHnN8PO GmGHyXnHnN8PO0HW/HnN8PO ."..N^NuA`Z|dB@H@DAJjDNu0<NuA`8k2|opNuA`&k | opNuA`| epNupNur2/j| /<␒|oJNpNu g @` f ")Nu(f"(Nu"(*)tvRSb fdDECH@HD,<>@D@D||H@HDNO|gVCgFDfRFgFG|8exz`Q~ۇه҅фJCjJf0Jf,prNug&~ӇчRf <r`SggNHFHBNu/246C|?IJ8<DDDg$Dg,B|o"|n &g((zQ?/~>BCHC|p0")4)zJPQ||@HBBBz?<,O`?,<HFh|(HDCHC҃Eg`B@HC(8"8` SF҃@fe򒄑E8.ƔE8.HBDHB8HDEj SFԮ6ӃBCHCHA0HB2BBSnf~2HA2 H@\<`SFo.d|btNQH@_H@`p"|_H@`Tpr,_Nu o /o 2/ SfNu o"o / oe  S@f`S@fNu o"o"NuNV3mBymBym3m3m3 \RN(N^Nu0/A&0Jg" g6 g> gRH?>aL|NuNuH?>a" L| o o Nu oH?>,Ha`0/2/ o "oH?>$Ia` /H?>$@a`H02pgQvYBEQQ n"n-I$n>.G G=G0-2.4.Ae`=B-H4. "4.6.8.BE<-SFSndDN^NuNV$I-IBn m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0- 2SA=AH@B@hH@0<=@H@=@0-H@B@ hH@0<6@H@;@`KeЀҁQt "`BGAGHAAGHA@GH@@WH@Qt ">2pgQvYBEQQ n"n0.nd-HSndN^Nu-I$n>.G G=G4. "4.6.8.BE<-SF`JNV$I-IBn m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0-=@H@B@ hH@0<=@H@=@0- H@B@hH@0<6@H@;@0-`nBGAGHAAGHA@GH@@WH@Qt ">2pgQvYBEKdQ‹Q n"n-I$n>.G G=G0-2.4.Ae`=B-H4. "4.6.8.BE<- SFSndTN^NuNV$I-IBn m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0- 2SA=AH@B@hH@0<=@H@=@0- H@B@hH@0<6@H@;@`BGAGHAAGHA@GH@@WH@Qt ">2pgQvYBEKdQ‹Q n"n0.nd-HSndN^Nu-I$n>.G G=G4. "4.6.8.BE<- SF`Z8<0a!HBJE .r@@@@ Q~Qʒ Nu``````p` p` p@ p ````` `@v2IC4;:2IC{ HC{dBNu  +6AL+'@VNkv  "(*o oC[:aTB@2- m@2- mP {NJ>KLN&NV$I-IBn m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0-2SA=AH@B@ hH@0<=@H@=@0-H@B@ hH@0<6@H@;@0-`nKe ЀQt `BG@GH@@WH@Qt >2pgQvYBEQċQ n"n-I$n>.G G=G0-2.4.Ae`=B-H4. 4.6.8.BE<-SFSndZN^NuNV$I-IBn m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0- 2SA=AH@B@hH@0<=@H@=@0-H@B@ hH@0<6@H@;@`Ke ЀQt `BG@GH@@WH@Qt >2pgQvYBEQċQ n"n0.nd-HSndN^Nu-I$n>.G G=G4. 4.6.8.BE<-SF``NV$I-IBn m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0-=@H@B@ hH@0<=@H@=@0- H@B@hH@0<6@H@;@0-``BG@GH@@WH@Qt >2pgQvYBEKdQЋQ n"n-I$n>.G G=G0-2.4.Ae`=B-H4. 4.6.8.BE<- SFSndfN^NuNV$I-IBn m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0- 2SA=AH@B@hH@0<=@H@=@0- H@B@hH@0<6@H@;@`xBG@GH@@WH@Qt >2pgQvYBEKdQЋQ n"n0.nd-HSndN^Nu-I$n>.G G=G4. 4.6.8.BE<- SF`l8<0a!HBJE .r@@@@ Q~Qʒ Nu``````p` p` p@ p ````` `@v2IC4;:2IC{ HC{dBNu  +6AL+'@VNkv  "(*oB@2- m@2- mP {NPQRTNV m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0-2SA=AH@B@ hH@0<=@H@=@0-H@B@ hH@0<6@H@;@0-`NKe @Qt0`BG@GQt0gQvYBEQ΋Q n"n-I0-2.4.Ae`=B-H4.0h4.6.8.BE<-SFSndzN^NuNV m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0- 2SA=AH@B@hH@0<=@H@=@0-H@B@ hH@0<6@H@;@`dKe @Qt0`BG@GQt0gQvYBEQ΋Q n"n0.nd-HSndN^Nu-I4.0h4.6.8.BE<-SF`NV m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0-=@H@B@ hH@0<=@H@=@0- H@B@hH@0<6@H@;@0-`@BG@GQt0gQvYBEKdQڋQ n"n-I0-2.4.Ae`=B-H4.0h4.6.8.BE<- SFSndN^NuNV m0-0-2@H-HtB=AA=A"m2-2-0IA-IF@B=@0- 2SA=AH@B@hH@0<=@H@=@0- H@B@hH@0<6@H@;@`XBG@GQt0gQvYBEKdQڋQ n"n0.nd-HSndN^Nu-I4.0h4.6.8.BE<- SF`  D D D   (@@@@.@@@&:V(| ATxKB AD5 O5vU5VX5zc5d4e5~f5~g5~o5r5s5u5x5D3v0123456789ABCDEF@@B CEzG@HPJt$LM Onk(QRC@ThԥV*W Yc_1uŭ+p[ɿ000 NO FILE[3][GDOS not present!][Abort]PAINT.DAT[3][Can't find PAINT.DAT][Abort]\NO FILEPAINT.OPT01NO FILE PAINT.OPTPAINT.OPTPAINT.OPTPAINT.OPT *.NEO*.PI1*.PI2*.PI3*.PC1*.PC2*.PC3*.IMG*.ART*.GEM Loading ... Printing ...Processing...IMGARTNEOPI1PI2PI3PC1PC2PC3Decoding...e+%02ue-%02u0101{NULL} 0(UN( (  &                   &*  &,"4   : 0.    ` .   "       >   *       8              "R   0 r            " .  N 0 6    , 6                              DJ *4    L(HFP( LD.$ | (  X6& &   Z$$r݊ c1>XIIKRSp78Jyٮ4GZi$CHߨl*W=OJ]xUVBDGqR7`곽=kjW5v hnsExy+Jc<5|M,hֻl%Gs4Iءipxc*;0ːͦEqNJS}d:Y6VZ UH0-50=p{8|F?~?~??????????????????????Ã`1Ã`1`1`1`1c`1c`1c`1cP`1c0~?0~?0`6 c0`3 c0`1 c0`1 c0`1 c0`1 c01 c01 c` 7o;=|>?` ??7?o?????o?7? ?`|>=;o7 `>~0` ?>x`p3fL0<0~` 3c?       ?گ ݨ     68~lc~cc~ ('>X !BD(19G8gHg8@@@@<Hd h1|AQB33Jg/9?<INA\Q5Q6ByQ7By# ?<NATHAJyk1 AK:?</ ?<GNAPJfS -\g\*.RUNBB9AS0AS0N0000"<Y0<NBAW XAS060000"<Y0<NBAT03(3*3,3.AS00d020200(0*0,0.AS030 000"<Y0<NBAS000(0*0,0.AW XAS0*0000"<Y0<NBAS0AW XAS020000"<Y0<NBAT>AS00d020200(0*0,0.AS030 000"<Y0<NB| ebHAW  AS0Z0000"<Y0<NBAT20JAfNuJ@gKAH??<NAXTJfS %\fRB/<?<;NA\J@k?</<?<=NAPJ@k3/</<'?9?<?NAO Jk'g#?9?<>NAXJ@kp`AW AS060000"<Y0<NBAT03(3*3,3.AS00d020200(0*0,0.AS030 000"<Y0<NBAS000(0*0,0.AW AS0*0000"<Y0<NBAS0AW AS020000"<Y0<NBAS00d020200(0*0,0.AS030 000"<Y0<NB3AB@><2APAQF@30/<h?<NA\K@;090gR9;Hd30MCI;:\a *.*B<Ia0< AMWJ@kS\aQ`##Q3K.9➍SGktB@BA !fR@ *fRA #fRARQJ@V4g|W3#`##?<NNT#/<NAXJ@kJ97gN/909й#}#aV#JfFRySyf6`@# af `# J97g:09й#}//<}?9?<?NAO `/9/<}?9?<?NAO Jk}f/9/<J?9?<?NAO JkJfx?9?<>NAXJ@kdJ97gRySyfL`VBJyRgX?<?<NMXJ@g?<?<NMXa |#APp0 A Q/<>?< NA\B/ ?< NA\3/<6?<&NN\ 9g 3`<3?<?<NMXJ@f?<%NNTSyf`n?<?<NMXaH@<9fBy`<fBy`@<af 3`0<bf 3` ;e< bH< WJGjBNu*.SP?B?</<?<NNAPJ@ka?<ONATJ@ka`NuHC9;f Jf !\fRA \fc`LNuAC"y2<><E}GCꃠHk GQ`DFRFGQef`Te RCfBA "y><TB@<< 2I2Id2Q`2Q2Q "NuH?<NNT??<NNT @J_VH"<0< QLNuA@C><2QNuA@><BXQNu##XNu#NuJy>f @|I@K ACEM&yG ><BJgNNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqACE """"""""$$$$$$$$QNqACE """"""""$$$$$$$$ACEI뵠NqNqNq """"""""$$$$$$$$J97g"Syf3J99f09İymdJ9:k4SyBy 9}#``P9S@309y 9`8R@309y 9ѹ`09fQ9Sy`#J98g29if09` 9U909FNuJ94g~ I  SGrBB#<,g0e< b H Ԁb`&Br`Sc4< yf:3Jg0 9*2g 9#2g3`3` RC3NuJ95fRJ96f <W6NuHA96DHH@D<g S6` P5P6LNuH@A96DHH@0f D<g S6`Q5Q6`P6BLNuY8#OKShow pictures from drive(s):SPECTRUM Slide ShowCopyright 1987 TRIO inc.Published by ANTICKeyboard controls:HELP: return to startSPACE: hold pictureRETURN: advance pictureF1-F10: display timeUNDO: exit to desktopShow all picturesUse script fileQuitShow names c@ w$ D D( 84 8> 8H 8R 8\ L<l @%<| @7< `G<  PCxn( F A BU C D E# FU# G# H# I2 JU2 K2 L2 MA NUA OA  PA . 2  "B       ,      (  02 "   ,. "        ( "       42    22R .J( 2     .Z  H`e&*|N Z@ZIP!NV/HxHyN YN |" ae zb_ YfHxHyN |``BHyN B."N^NuNVH xGItCzJ1 f |``Cz 1\ ftCzE$$$$$$$$$$$$$$$$$$$$4B3 C/ N UHxPHS?<N J_f,fUHxPHSN J_lB.`RBCzJ1 ft|LN^NuE*Gzz EfaHx;HyN "m0")"m0ҩ+A "m0+i" x"c+|x"Y(m0","ҭ //-"/ Encrypted file not supported Error writing Error while extracting (disk full ?) CRC error Unsupported compression method Press Return. _/HO>N _///O.NHT _" "_x$HBJgSf)f&)f)f f( SSf.LTN _0g HT$_"_S@QLTNPNN NA=@ LN^ _TNNVH``/./. ?.?<@NA-@LN^ _O NNVH``/.?<ANA=@LN^ _PNNVH``/.?<HNA-@ LN^ _XNNVH``?./. ?<NNA=@LN^ _O NNVH``?.?. /. ?<WNALN^ _PNNUNV2J@gA??<LNA o"h ($I!Sf+H0 ( ШШ"h$) Ђ"҈.A//??<JNAO +@,#aBNAN vH~E#*yBG<9F(yQJ9f.raraJ@g. @gh @gp`a B@FL~ _>NJGgRBGt-JTv-KTFCCgp`SBNqSFfaQ`tAp2<Qp 2<oQp2<Qp2<QAp2<Q3 H aL0EG,y"y`Hra@<raR@:ra8VDpABQAClra2QHIG,KBGBCBD|BE4Pf"<2tQPQ<<żGg pFvk>CRE EfRF FfEIt042v@xlSDzm((EQfL MIEA0<BQApBQA43Ea*HaL L@E`G,y"y`C Nq-0@64 GcGR beNu fraT@(Q`" f ra|T@` rap@ BQeNuIG@,KBGBCBD|BE4Pf"<2tQPQ<<żGg pFvk>CREyeRF Ff$y(yg.t2&4&0&v@xlSDzm(>G5xEQfIG@,KBCBD|BE4Pf"<2tQPQ<<żGg pFvk>CRE E eRF Ff$y(yfNut2&4&0&v@xlSDzm((EQfNuNq-H@-06Ѐ01 Gb GcGR`GT @l SFfa` @g @b4B`4@4-0BC3 Cr0 GcGRB43 <@-HA-2 y0 y0A Gb GcGR`GT-H@-0BC3Cr0 Gc GT` GcGRA23v@Fea< LBSBQ`-H@-0AAr GcGRNuH&y, gZ K0S@*9MrAA"6Q#/ /?9?<@NAg LO?pX` 0< L(yQ<9FLO?Nu  #+3;CScs !1Aa  0@`?     NLApBr4Bf `f J Bf R@ @fNPKY| DEFAULT.BRScBg @1nĘxFL@Iq#@Jt#;P13!>% dl9 y0U!^_@uL- u̍0w2c G k"a.PK. DEFAULT.CFLՖ_lEg{9/KHŔ BBB`JD[TinK kjbjh(>aʋ &M ]T>6D29<lX)yψo8x*rRk[BKhBTܺo]Ww0 8 04p`~Ÿbrߗ2᤹#ǧq=9s”u7c?/{{n4[O\Ğ-O< nTVl enQO̦T#yg ~ Q {zl,g{{f̸玘cf==|!zpAC75?)U<dNIaج94`>XlPR4kn.Os-8pZgWt+J*fq7 ֜#)m-7Cf r*W*dp+m<jgMȆA/Gjvw5ھ[y?ϭR:=nZRZzϭPK DEFAULT.MFL``PRb`EZwt*)WW{w*\{&80@748:*)pp((88YXa_ V Ш&&t~C۱c7nHH46nd0F70@G㛙%'?/-q55@ Ot> 6F痗Ϙ;; A;;P<~oltrRQ`ccdɡ?@?98ddA/(G:ҰE33HH$$8؈·WBBE @π0`f`F5 0и | 2   07 q060:0)=̢609(ϡ2E|/*PK "" DEFAULT.PA1wppwU33ss77wPK 룉"" DEFAULT.PA2wpwppwU33ssPKqit]8 PAINT.DATX]lW3ݵ7ߛ6UU Qn.M֋j)Ƥ=2;Nq6 ZxhPE J"RyGL#U*("eΙdAR7~s3R*p9qQ_L\$qKa!ޔr.+oN Wrw͗yϗxj5[#RM"Z[jEa2'3WUN:}wpp υ")풿)W#"J,U[1y8zTL*Dž\P꣄X(˶r 4O77=M|NNy |*:or*rZersRLwκ}u|DqBńr|Oy{e]w+ 6rTUYPBB)%%iޟM͉IR0`­Tt001&cJC6{rFL'_<.eD ?'mI B~I9r:: o=[>QniglW|fZ>x6WH t9<;6:LWtZXfi_!ǖTtQO8r_UA(O.{--tzG JI(wYp=黮,,V0 k+*8J{tСRymbRirz#J@ <(<{{^F*Ո]rYzS5u{LERǘ|t% A,*Uo^ș/V5gkh)Z5M铸rcaW6jKɼI/f.lof^ڢguXF7hz؛4[$[=٬c`ܖo뛙L]"U{6{ւ݂&Mlc \"k UHxYa6!z^b}fw0Y?!:m\}+eQ|3`56}fϜ,ݝE9zc-ɾ| ߷Zm c ߇?aM=G}m}zT}2@=.o»3x]in١/d߳xV^^|9=cb7 E-6} 4_0ߏ_oK6 i$X!7 D[пo!bu| كA^μ]!-9|ErMb|=R' ~e{O9>wh+ ~Ɵx싈1]㱾X4-;!,`S]-ګ_o:}7~p]h7\uYǸ"~Ps]wk:p]Sn:K5S'n(#t~ =ԝ;XZI>W` P _;<}'#2&Ú&f`M2~{?#W`L;4-|ƿ ]Z>Iqo?|?#k6ӧ鷳~MW?CS45?AM3H 6tм΃w48:&ڼyZ =PCis?'FՋz:Õ9ߗ`O,tl?Qo)ZWƿZ?!߮Oʬ3|]ӿE{Oq|w#~]=x9?!{C>:m]Q?'@ $*'uĠ0~o@y߭ƾK=v7 :y}xwط1@'}kuI1bV }'8I~ wLcxu}Yu]Mpd¥\PB.ʲKU]]U=߿Nr{}c _O mB0U,F/G_o}[WS܇Dcкs ؂`/>@5[o,#]X&_E=OޢW>mݲ *C1ݾh,9oTA |󙖮$gm;6EE|^#۵o׶M𝉮$x1y?W؞7#@VQ_<5+itdΚvf _&š] Rݶ2)YkJ͞nEZqM .P}Zћ>df؈u4pg]:3L{Ys]b}7}>{}KQ&vZV|3hmkJղw{m $S$"0"-HF &Y;1бz) C Q67"<ǣ+[ˌXmZK(ý*5ՙ[]\'r/DĕgJYRý}VzgϿoxkA6gX"aEYIpKw&@z}QXJ y:+Qa+ J9eƨTE>U{8s茓PCHUxf9GX} _?(@V]Qû ;ZJ3%yΨp~ &?XC %TR%=kpJ dm-^Q٨vi-~SɃ0jF=?9Dy#eK,h|+sSx0BS)!m+{@i^TeT~U +ʋi.ƓzAS5~| .kRN`s:?mSBߊDCS|=߯ H/cc;~BuDM !Ӻ+RŸpoVe99abg^Y9< q}YSt / c^lWgK1_iBS|Z0yze͔ ByxXGIOsB{.C"&}?4g|9gН4϶k*0 G493\os`G{mE ox4 g,j~Œ%IqOkLV*ɴ}9dT{Tǟ'ߡxYV~1m;CHLVdk6Ʈ  ~ K)Oܨ '%ub\f:^ӕ~F) ~}Nc-5lƵ]繟ҹ q]CUgRz5.jRmVR53DK|sQYNv<9,50(h{$¸Ӕ{;)<4ts \%N>?;}cKX=4ڞ}j-d1ыy-Ύ&bcכ:J-ΊEO\V C-l.΄d 1uoʙeHIHs<ÿ o_L!\_V>WhI51O ΤϪE@Rj h ߉ui2}2) ⒗I% a=~^)zoz #Ƚ~{ſ1M[{d\񪱚+Wڝ}SdKfy5]#ltxYwATb9gC*kni5a=>$= o&8c 7*MfGδM_%1v#m3mm/V8.p`?^7/ )4UD!2u~7CF_l3~^`*FN.vֻ:m*G"ӭE~k<3!Nq}E:q`Xߍ z%1™X?eeO[xmX4?i+?%H;͐DT#3{5ٸeSM^( gSkkg,odoOuɓģҌD _-b{ ^ 9^DﳷZyZ3fq8Yt߁iècnz!0cG$o ?4Wl%,ϩ#sqtC&?_jaϯdfACr^$ዯB×K "- \="PkzQtF4jI st01t,X.ݙ@!i=rF%f5pf !tRhyon^:ŧb m%_)Դ=^ ?:(悹:1Ot'C%]R{=%yS؛ /ݷho-8JSl035ղޞsLu!6) $NLsATN9i:qw"g\)f pJpϜ!!N&К3ve:. G7SUWɛzQ61',fwx MZpJU?o~ԮLCVwl_m'uڹ [j].R+)~͍I)gkv([IfII#}>SB~jzEN}Jyiݒ.Va IΟ_&@AMx=cj OL:< v$(ï'K&4Oɯht5vZUlR肊F'n*:}Mf틿Դ7,lyA'J3 #96!vMSMξ=:Ecp/4T$dǷ_ yl9we}4gM\66G}2v`-nyT^*4}[oIXAch6Gڣv+NR/ ,`ɯ>`)נҾo[%Eo%oMI%Z{+(7;>Rˇu,Ng"3!71H+.!&5*= 9N,V= G5MH |AD+f\#q]f&ĵq-՚qKqWnƅq͸+urm@ܐwq̸SՈ;hpSW Ys:i1 3G[6:oАѠjXhO=;A?zߤ4\1Zoi1&ZPJuۇJsX'ĽLgۂz"|7Bt:~3eLip%h1fsy;6a?7Ԭ\')r&9Vhr"yZ0`7QA^@aaKkުrw7O2+o:#L!h=mte6it$aă&X,i 7\ yv׫y_dJGTgp?qڝUkq).WJ1 SY__@nGpychAqeԣ:^c,IU l3l57T$=K5\0BuݠZGD]rEbcc B,ҢvKۈZą[I&zZmߎ|+Ӕ9&O_{UA9s43R4)}>@7kF|%MJ;,`ɵ`(h? ;':/0S^6a]8*ȓDLСQ*(WҠ!K1[$L$7Pr%O$G *h&ٟ7!g^7:4Ya]PF+uAjOq7׫7Ȳȝ C\wnIW-ST ;㦠dbL)^UJ9[ Y$8'mIyJD'ۧxC8yw9qxҥw(R/˝{EٗkQ"K%4h䤰VW-y۫Mu uw& Ǻ >#{,g gRLӋ&~Ixv)˭*37nfn@M"[ށ3+c*>F1x^QϓYMY"zG3Ci*N&;RhNC.vvh%Bgָ)%|{V,ߗc sWՄy{ ]}V̌A8"ӒjC#@>CS/;W$~o 7Jn Bo pg@();?f홴E_Iu+).߻>^6|^q7i:WgOr6'XN&PډGXw8J4I#>GI=8-ҸFl%G‡׉ÙIK̋SD7^or8v{AfF4Š) ;0BEbWA4:Զk 9Jsh ekcɼ7;蓁 >rZ$}XgQ FUd*o&ihד' uiy2CJ/K~bgF72R$nK 9ܙ9Oa@v!<.̋vZI]gJHoqf6(uRY2ˏoSQ}X<5g*7 qOg-EY 9zL{Zk@zZŗ#om[ɧLPesF4M VRCaQ{h $\NU:CTGolr}j*a۴/{V\0?"O!%Ăil)E ?D1?g)QI+֞Cs}7Ma&AzP{@tCo~dydR#֫&c,^ `qEeuYܡF$жDȷ WtKSpRôFJEkVuPҏmzumY,c48[3w]8K4,BHooh8|{!KJ'2[úR$T䗫 9z^oshk  pҒ/w)~m?i+qkЉy!%t;q )=ţ!Z7ǠLle;xocY8#eTg}֓pi1||L> [O%@ۆ\9֛d?fyrd eYJhZ ;g)Z7dzgT/V1}8.|:0|CPn*׬;ιyGn&8QSPpN~e('C%sq$a-=DQ³P,eZ TN:lmǧuҏF{B`-߲<Ko %G$g#Unզħ8k1KmekU3m<r߲p"= )K>w6171jIk:ȭ3G ?| f/}[Qz[b} @qߜh5w$2n)ʕ~sMYϾGgmgl02.:k 1/u[ilZi*,RbY0c)T6`F#ŰGDYc5Ț>)+nɯij"W(jw%Ԩv4~8S5M(d3zn9oʓ>IJ!ꡠݢ{HҕfTS-anL ~_zr˦wvZ/5ckv2Frbt|⇊a/C 6.8ltZm+7Q7:oyAoMO]ˬ16T n;osͨEk.9& o'q1S5̘1AekvN? Xҷ9 NC<{}%Dn? yz6yP4س>6Lr!8o"J㷌(NwE}D?,G9Yqة} 4Jly =bm_g#|Ժ}ꁶ6N% 'JEk :Nyɥ'A`3Z_ ̰adMJ׏46(Ojudqݒ,WɼNC#PseNT'Igvf_H 320ܴVKxK Oƛ8BϔӪ4.7Whm|NÒ&ets*(ۂTߝG+&=_oW}sЇ$Ga'ba>T~6w6s"M҇v BL 1P-eyLǚ2OTl)/[ƭ,ˆ ((h \)ZM:;75+i}Yg3PZvk6:-C댥ҝQZoY ijC.m4˒inR*Y#5dl#uq);ewG~?*d)a =ݘQAd }TiŇd+/hvlMQFҶrHLSRQKnYߧU[͊Onu*HG)@[Gx.(>@w˥0M7GV0= v΅RVK/ y-lv %Ly{I=4L?n%R|0faS Vw|_G5m  !w&(`狼WoSH!+Tw&x&mhcS܎TS3";y>BU zC~]CrL ,7$_@7ϵ"{ц˴֓_=Oo8л%"]6LN4Φ[L]L7̂\mXw-: m2c*9&ϊdmFʚ\4Byn³Z `=~: <7VZ IED ED&0Nb ~@ ;/#ta {]Mlj'JVC'VPZuI =E=>Y[Zuh9 ʜҢ&JH)<.>Ԓ@?0AcO4kh"2lT;=@Dx P`C'F**\}d}T:{ v ƴwK(s~Z!}9&WRW1(y䝕߃gpT #SȨ^L*d#;Gy:(XݗQ%D'^ӾV϶8emzN=5JxOsnOVҠS;Ѷ^Z|FO=au_O(SW?â.$~ð 6ID|X3bʆI{@>Gqgw^LIlO9Gt^MMf<}=B'.k_Ye{C~g=!k\,k|I㥓pw&k3/r?}7)BuM !ĖS;9K7@kKO}YIN^+}1Y#b-i_wh|nJ&gy%ZX_ɛ.^J*'l?* E*TQEbNy(vTb m\} H mQ< DJb}yf#Q4mL  ®).yEh;Ef+>>+s~1Yr#f;}6Ŵ/cεy2Žs{~m+CCsA4h v8yph HoY_uIl8O,,y–5ó^d~10Nc&U-UyaFFXʐCwh~k|v~`le/ l6Z.y7T 55<[?k&/lW,Sȫ1P5xND_K@wB/}VJ(&R4WVCK]8O:[^XWq{>"]<֨ $Jb*gHsx Jz{Dw\N)iqD'[ϫIK&AtgQv, ?mTިV.HIEs+U`z}QONt ѩގ, [y8pe8?^|ogI{VI{(o<ts!/#hK&;GK}2i ]<σl/lʷY!9/d40 (a% l$"ogBEVY.m,+.Dd * 5l޲[p"dA萲{1zc+?.5J d³n#Fsz8Tz|)[]$ߦ6')il^~8"D cKtc7y3W}$%g!Ś RsV0nRN &`;NJ5}H&9=p(#}?NP#Ւ>AwPm,MҲ~Ax&lE+~KZڴ^fyl}ݼSbls$7x=;g%ȳ؂ ,-˼<;뤵YS䖙T*rk,KR.J(Rd>Nkz_tw\N9fpv.[LrIz1([pI'+RKY;{}yO{;Jdm ([$3X1uew.dK@<^sS+I!)%zӖscWL2r{et+| #}WHl_A6Pnv%?P.ӽ{Ou{ǝ䫀c]1/kzG1'`CHpL,b-lY iH-J~fX]ᣦU'N?a ݁;eVv`]K)9:7]ڦ8-jje+O,7\`',v`z6Z 96C^Z6YLB5YV\hIKdd9,*c^*J1VlQ-]VKIS)IeJYj["+ʌ-}I5N=X9UgsX9% >%;E9%Xw Z@)g8˹ȱ_^ m3Y d׵_la?|Wr8K#&P9n5Y.Sӈ[Jx+5.X=ؽ8s{q`U+K?ϸ,E^^. dD'gXYiayʫj Q=8iBDk9|i̼)C %uN4FMi}dtPeMt.a]䱖BRRqgT$瘤($;L9_RJۿ֕9'"pt Ⱦ#,-IaII\+H= )x6{!Vtc\hs%87(*JgCtupI}>7UO$7A6Ð?92S^2.__49wr寻?5*zJf$D:I{v!fg~M޻7xDkz(Wg)N!$9l$[F v I>kdd Q$*$PI[T|pA_sU_{ee'p+l)cZVv{n2/aoy+UO^Ff1aRCo$ OJYNS|^:*K(=Nqu}NXQ/Is%&wͺ"c=XXLìywcVr6vKswMǜvy<˖I ŅH{Z餜|ʫ]-(O^3 rz$NgMqH,=V{ͰRMߏCXN:CT۲5-:b^F%-N݃!Þ} wiW89m\s5kB*ϻO=`Qߟ֐g C3k.Z'-Qy# C'ȓ_ӞRT_jOum_XQ߰i#*evge/ڡ뺭qTeGlm>|xZv8z9%i5[3mt͏WJ!|}@慰Kb|t_ 0냙AݪbԴyIh?Ztou>HN(AZ4C=a<{l F׬SۍϞ4غ8 D--o}@T1A!,%wDziՈD}S߯a+o}&UE00Z9jY8g]/>}vg:zS{h_r==wks.g9iCN憤m0fyxnUDU?@,s| >f͞RRA>w RIkG:"ov\SCs_dJ/ :Ȁ;eѿAlrH]/>C|Kּ揀^3%β$yAt2 [.4#y*N Á7>YDXCO`v,3~ogq@u<H`eLRx@Z6o$w6§qrmT 'ڽBب'I=Ν~`$QmYVhnSn-gm Sqsp&tc-6on)ːT8@ˌ1dR=d,<34th?dQ^#+Y-:%eDń8f:ݿ3Q ^:!Qw,(W}YOiӐ WZ^FЎ1%w1=;)~|\30ܮj:ޥAir]vUUaժ;J6, Imsɏ{bJsmN2Ŵi%%ߒָX'fyZ 뒬L =WF!Gbꬍ3:”Eve=HQv[(dc-kk|W}yKtJ~)tNW$J}[]c3eN)6ii86AP.t_^Bղצ.yT/ejR4l9x-k)pZ-*9M(Kc9S3;V')["mankcȀLGL"u9rަTWvI2 qvξSᆒ8ާUz( 5uRqSʷ-F wO>IHWѹ׾b]Z0}rGvEOc]YR h1E@ \dfTʧJT_=Y|H/,;OsXb%?[,8cAd ۥ9(`yRir۶-,9z+.ǝҭKxww<0ъ|D]ií[ΏId4FC%Iw]G$V}]֓܇>lT=+~qΡmIk3pݴS)N([gM?]&C;Ug:F>krg7XOK,g*{yy~ Do! Kנ_Fף֓aXAE(o_ߜ+ ZP ϐU4^QW1e0DŽUz43氭P?umS ID[ ~Zz͝{F"@kPR.r6Lk|U/ U[)"[%X6Si*^z(<,g=&ݒ~$[݁qDH۠}l~ܞd4rV-ORlIIPɁ^%E;yRss7sOy{#xZIPz_yJK˾h;}ٽk 6_`Վ2#DMCE!q;˱mԫ*3c [jmj3K2X[lMN嗔l@o5e}_2KZ&=m]4d}p#|]%{Ԫ P=8nەYM=6_tQr~_ T݇-+scJٓri-SZn2Ц\m%eodicmCV>`t/%SV;@PrN!:J#1؛%5'm<:&GvL¹YYd`Cg~}rpNx(e2ww-KJeu'VE[4-IHmE2twa磰:8g8%:YgmP/םy;Τ3ܪ2;>vRvƢ]W/Q(OuBŦO8a !<7&xӪw "tE/}Ko3&ּwXYR֚ܳ :mye!?7B -aƊ8͌oV=xh"\y3]_NK_%|ba3r?jƻq^-]kdEΓa?W\򝋬mKHe( N*$a&w++<" Ь3HoJooI3ղIQ;%u ];@Q-r=u:ZssJ[;4n~qlܘpHn7|v-2.n`ի৊P؝6 vuY4^h(⤗~@NB)]Idžb1fGﳿ=٭ԧs1,QvMs .sq*d2[ӫJ0)\d#]Rr*˯5*na&1/Ui+\!GF:: e;hkޑ歃5|i yts˦4J(.65n٤;LɆR>l)zY6`909-ߌnP:JJBnuٵlV.ɪ/6,.Xʝ0lz)0tu:(y#1s5!$ƬK% O}Ӹȼ2X'IvRxNa$[$ߣG?f$-RWU[ZGSjH"B2AU0YS]22 HSem~⒰ fPJX:vIc7N:>ɘ1$$[Jj`9וRWCa)A8ca wlmVScxHr"+_*7(Z#ɶ;J+{L}q|7Qįu7޳cu^:𡸏s\AUz\ ܓ[ ?W)Uh9D{,qȶmvmJۻ| 3ƥq] u-C-9 Pڞ%zVС!'*P@ Ea~هO.&S@-7[Q{9wI܋ulTts B5]){e:{e|ΛWCGw-WJ_nGb6܆K[ߦ֝We&=2̃5saTC8$Se*+U9Jlf?m-?wm]w5kN0yVԴY޳&iqzh}k/QUʴîMXVۣAlj6HE-e<4Nb͌ltk 5Ac ]P,{.arw&G ya,Lc kMzV0ٓ<rF>C)OhD 9˺iCUCf0Xί.p1`$E?؏ y76lYi'1{]FPݣj̰cU{N|i帿YKgR<[ց}?ѼN#(\yV͈'oeiM(ԟ#xfăl]P٨uQ~N~(jiCVQnCՄߦum< &KdMaPcP&y7䣳2ӟ۾MJ!m::>#YB~Rɲ\IF޲F/(m 7o,~4myߠL%WxEE"׹NސX/O>lXk*iav UH~BQ qvc6"C}JSI= /r<, m";<<-%6)\(Μ{ %M׿`i=;ii 1yQm3 H/xAid`5./qa [a ^tr?1&]($[7^` A <8fFX=`+@F}Q7q]?@!:h'`mR!{XifKl71Z˲;P)Ե 3=c:cXz6؊bv*2UFsjh3Sy;wDm'E.Loiw M+]v ։0ܟ#9#^[{AZre8"'.l5y{/[ A m;s<k,F `OZxfHDD xѪl6&gu#_iPaw= S+~4۾:omߨD.yQ\O.(P2VƕО$0gꢤzvoMYIܽ |T7|f28L4 㘦ia) 4 IC1&Ѳ! 0KQ hK]>.Ej}Y"bdH./3Mg]&!on#6'RiBiYGe'uhszj1uJ) 7¾f+_`E>h[8b0{kw"'ѹgˇFa{8{ɘLo^~]饘Pv S^={{4{(J-zkK>Y}\vPZ }gJ;?o{f_%;Ok+* 25\('(Q\u?SNnJwޮ᫄L&Zm\쫛-Ẽ2{w4=y\cQ3lC@}Ym'66vuwƝ%ak鶠'NM%Rn MsImȤ| ܐv|v.h] q =[g,mÚV LAmDn$sFɜQN͇yǼ[=^ij6ob.wgL_4/1\CJä&ܯ'}VZǬ#V fxrh}梼rX`wcxQY*)x3Sp^Cs=ME+YE %_eA4\RVdq)JI'EP~o,+Ge8²%i/ÿ́ˮ,0afXmflm3͐YgP@CZh}-]f\ZjSbΎI۬M>k]+d>?vtz ^ͽF/,ܲ)J!I4ς0/xJ4B3S>Fޭy m}@:>ΏM!M FYP9hRJk ouXCjzh6ʟʫE5"5(}Z٢W)jIڀV 3ij=ξnndH'.EM{WѮU >HlӐ|&C4X~C<֙0b6iǡ>Ef:ٍ4-r2RigFǵθ¿<.X+O2ZlʎئfCަeq\{BRkpufB:^Ycl`LŀkWn0t&I5v <Ƌ$jxƀe~d e[/s7˜cy,3wMRkv ۻ5kV,@ &C koFm]q&CZ4/a)l334<6$6D|K$72U Dy!ww-Бx -ơs9b4ъv]]6 t=FZ\dŋN]́B%e:q ) RhОթ1! BE>AgP,:J#U"nYGCۏ<Đ0!WRv Zf5uÅ$5n+Oᔱ 8b}Wcd۴r6: ?@59o>hd ١?F_!!#NaR<#?od3%H_E})H3U!B*"]@2/H~VeJkUcʪފxtW0F:/lV+11151UCXOSlSL5SҶbhn2AHg𓋙V(em=nGsѳjX>.y>uz}M3)]L;Hչ7#hPF.IcĀe잙Msf\3B?kѽ&.KʍfKB1Dm^٥!#)Lq' ۠#:crLu ʋ~H~<[̬M=bļ=nZ 4N~pՂp 3 tNi*N Vhg}htȮQCg"c;3 L^\!ȄYd('s;iw\2ބ>9S۲c4Zʔ0t tAl` )"+\aO>>[l|.q0$H+C9K`z:)2B5ᑕc8+>g3dWq>VYVkv`3׶, ,ַvdZt݉vvi2ۄOjwJc7ZR#NMs=:Ťw&$jVp>a m+GyY Cnإ9Zϐm$G>[%ʭ833c=aW0βjñlvT cni=ŝޱGXhߖPΘP![{>J}#35.a3Q+sZUBhpKֆXߌ Kcot$]:ʙ$A,L;n ͭ'`#H`O2LZ&!Qnt[m8t:U@ kbJ [S:`QZ9;}l2>T afUFiСF< jcsM){b]L{E-jz kk#3EXpcb Nu&q4e`N{j㝘ldl;7;8 ͤ-7 <3N_Gai&ϢGFCêVŭ*K؞c/>CC޼nV^\o?&7`_GȂB;}Cs0$$ў8|ѤkpM[t"(i Mm mzo8\4U6yv>Rrި~>}_'=-9 }9TOsĸM1F[2]fF-6j!@U/XeWkt^U&! PXhAMh>m`//;IdGd,wssw+3ל{<g^=ZHZt,nRjzt׺٭Fd faWs W7kǵA!QcʧSb{";gI@2xŸzMni^6lZvy Hkyz6zpBnSe:va %Fr4m2lRX~QVի }.ݴ]+Qc5ஐwNC!BXAWZ-}W)Y@9..G\3Gux%.nT%t:3vM51wM}!X6GrORhW%eHsT3,Wv2l5^%rj] -N*1gڄ0'^3e&ڄޡ ;.meMXWB6xLD!tHwہV?0/wU]'wЧGB Tm׺Gg1JyI܇?C!ST(8Z ܣy(G!IWAS0'M gF/*ג,,p۠!Y(3@-g @Sa?V1W& zS( ()?힬PpV'8y[5;h08FKBƎ.(Ptnm@ne< `aM$Sa2$jϦY6mf>i^sWNpn8'Ү@@B2F6Hňeea!n1y?$0^|?bޱptfp>iac_<誈ױoeatX[J"%e iQvv\fΦ\S+ҨSQKGF; dhey%! xИWs{&iƑy8B kn`+DOdjM]βgRqb&,=m)45:h.;N|~d&瓔MWS~E썪l#N=}TS8evo,ů> zC:+v,9oRlcYb3M̨>r<3.)\Fge"fc#"9Ѝ2 WxZ<2y\n֤ ky S}[C K-lcJ܆$qxS18\QZ(~J~厞;[rSeg5<`>+[P9/gZ5LuSL.k_qk։|Vؔ$.)GƓ hTr;hY)גpdMC)dOBIs/!95'vJεpqŤ lZ[g0nZ0 : ϵrJE pyU}FąVk ӿEi#9uesqKk͗ LztTJ?Xm|>Ѓ1F|.R9Ƞ/'cωc3)D- ֖][.yc+bV)n;VgY^m@P K 2춥哦"˒l3/wEG;[yq.Xs:qA6˔˚OQ[)ifAhsPl1-SfCS;V9*L8M_9Q[=z6K9d MVνbǤUә k/Kl4 x&D@Nd>- dG;ivUtBn~+qA: u6Hq*]gҏA@TʌMPCG?`kk##)7:| nRn3$ƍint.;zçH!AW6 `s63+<΄e2ZxLE'=YcJpg9g駇d݂Fҵg}4WХG NCUmWXL>o sWҗ}Y' :ۢcn i^?ׂӤuY+R!ulc9 y ;z>g eNJnPd&'VrSbHI_nqD88 jp$]ݥ']Bv>ewyϠ*s,#%;Z3$XNg42Gu%q. pBzFեܮCz',W>+"ZZ9h'q/Su>S溆[Jb`}$i4nH&\En ^" <6쀕]i[ܨM2Қ^.~Ҡ u!P[,gGuA Zyʼn#2W]~&1_]uY E:u9}Zm3nFJlrf~K\jZ l#:KELՐm<7ژJ>H1i*@762$jMŧ!}s=Z鎙vtolD*fsZcc2 S-VtϰK-#&>N5Kl/oҊ+b|oDZAl덵 [TqĀ%HۭTWH Qϴn3yA]4F1nG=1#\+] hAAz yrH't0E9}vb_d8 {P>KcXGQ{Q(m;J9'4-m 9M6^UcKK.E|ݮ.dJѾBBҽB}ޤ̅O̠g \'+`<^ƥBlNFω [+ V@nX5(yUFJ\vdGQV(+G|&~g@ؤ֜mfV`tWRo6%1b}~w\Q{ds-+pctOXהXWU^W7zgl<Ɛ3%W;|Jnm/򶍵KAsn>b C~6GN0,q%?0b_!)\->݊Oɕ@WL;ʱGM:N0e1.y={(JUl+8\\q,%;毤%[x}avý0 VZvka[΁7#^jS_ YG3 {{2\F{t2G(E<S,a"8EuJ}sonr~d ǥfqy!IP?ggEGh 㴇& dghaj:E1M3nii8}ʅ=sXS/d[LKjih 2mz&/Xh(Y˚q>E)j,sN杢2^ :+E)QsB%YG4{ejAmNO4ψR2%VTU;$BF:wTJRa<'وg,ᬙ&{knp.ɋ X݄J`CEQ8] ;2s |_ Lpy.On~8}X*yjp~oΐ/C =%IT=9u|?x@v9pqEIP_jqit$R\_#v3{͉iof8;c)1_A:.2t/t{'0Xsw')j^%Ts/V#|QB9S.)X|Tk%oG(礐 s%'\yT W]+]+3zÙ`—}J5bJ_h4gaJ硘}"۷!`yjZ#-$uB9Qt~xYO(B|L͇\v_ĝqgqm)Sw6r?lkP}J8:r_K͏Z7ڥWw.X |F 4V{o % Q(9'Q.>y۸xGt;C;>AgZL͋θstu 9'݌M*õ7۶JI-QX49+NrgHZ|0,}F"M G \3(%wxG'.GӍoj w3 <WIKI1󁵮\׺`Ga WKnxB3\%C./3\.䒞n=77ɤ"x?\~16XQ4*yy>]+D搜馏;9[1{ MIPX_ Y~/~߭~SҚ+1LYp~\BJW[#e"d{!ڱ9?OV02Wn><;=nUhUk?PZBrX*OĩXE, I}_]D$p_%vڿ&}Tw-jJ&ڮn?uMkdrc ׯ5֥ :xӏ[&q{Cp#%-_ݜ<_no{q~=4džy!y[??SW*Hg9CWto?/y賁E nlw"k6rxr9"Z u.Bx̿CG# 7}k+Ow%K_ǵhW\W$~k*FY7RK{µҽ=:7ZCoWDh|hRʫ+٥"ʟõ|UXdcaiA P]7O! K _[akR%2xx\.u80% ^l1v4q.js=Us63D ˞F4,VW4ˉ*iVӤY.<UKr\̐@}͛ ,Y8V ká<+tYg.A}ǺWI{h-$0czSw욼Cwt87\D;;A-pn7·­]}]~Zm^(nR+уNs_r18hHVYugI嶛Z_%JoW[g/)dX_2V}8θ6&:檧jOc:ztUCg<`i;.pЁQ!鋑I :9vcy_}8@bBsXMֻ[7thXԩWPe_ ~q`;b3"z0|8v؄lͭO4 :UF偗byAH'>;Ý Nr4SW5ɑNZtXnAb\"vbp%0J_ZSm{=Cx6{}]-w$Rۀ_Y9G"õDfBR\6cK? Hmp}CWH8AZ聥k&PEWaRY>4VV+[ W8"jʽs ׮X Cxrgޭ 7B+F"c>)x"O'V>A70r;EEPjӨX $rVBHT7ý#a-dAro[|Gg^_+= 2peZ վ I!i VvS}Mjwee(^=[rFKkC~`}nF7J~ Ͻݞw/"4w:]uCʀ?' ՠҽ'0gIGGzgO7u$tDkWMb盔6`gP7R(oXʍF>h e/ ވ_:4GOHTz!`:UWiQõi@ pWF;dnGh%+zR:=woݑKxJ""΍LRNsvI_k6շឿV4$- KhS̓ѺfVͿG2zf$~UG ucmwpbj7(m4WoјE|R48?ڼZ@v;*f}AvΒ΁nKlѥW"kkuNl)& 86?A8BoZB^U_EjE/^%yqM݂6͗.4ћ_+01OG6F)MnѺS.;fK;hlGv6W/'o%a~;JZ9;2&os%J|u[V$viAYsa=kI"u z^җÈ>^XTB@^$E'wfz)@=~}9_Y":#mo\sd?2j}/B> kOL[!JJPWrj)8PuI,FafPXoʙ^=t?%PI ԔpǶN?` nA)]ruq,] Lx5^P4ʞӋorZ:4X'coRik=Z{ReBp 2ST#Hjfc%,U,U[ZQ Gz{ӪF]"տK||;Xa1: =+z21IqO4I *͘lf+u.[+d7j0V%F^Sw )tYۣMKK2uZTЩCg>)˘R7v qs:!Y S 0{٩VrpmWP7m'Oeb Sc6m,MKȤ8PO!A5ba;si40N䝰,F[BmiޣuC`/JauNAClϩ#b ({&ױnv:Ifc<祮e7t `zt>4;BS,g!uz=n~{oћo/x~ MzҦWmvkV$ ٽ2wmCƶ fTONk$կ77~۝^̔ILR0:s ^<Ӈx|g ږ[ Yj[-j~CGo{/[Ws ߴRV)u^O.$k:Vk8&~[ZD=^M/sƴ0Ukժnڛ>y cO'xCZZy2He7]F]:.I\vث/?Y^6`1vOӥ/iů-;{t$^ ,1BLK!oO'=yxy>Gv9dt8םnY|;O'{;mΰKTt컆r̙y6t6gjJCsxJ>cf<OG]43eqZ叩kx*δzx[jӗ&h%]C|͗SۻF_hÞ:Y4SOgX\<ٓvϚ -Q:̥v|¥v|ϼn$rjOgD gM^S{XpT/J}Rjߑ-?6bsYP4PfTd)R˫:ޞYqOV7S'aiR34 /o<< - +@on-xqN.$wr}r>ks RL}? nӐǹ!_gX5_Ŝ*vTl,I3_q3Yz[/mHßY tgog>u%:4zxl-|k|q7*IԌ u6H5S_\:f&e?_z>dgG_y9G.;cS>u-1'Ҙ{/qO,\}\ϏO\5ny>I|Ls BYΰg=U}r4Q#A ᆅ vZGܮmw|W.+tdBϲD*tt Bvea5tZHSH}{_J;xOXIf-ϕ6-mLVg#H&bIjW]ҿݹzVowv1N2 Doogo]{hnlw"2y(hnƗd)LJ7~}ɄX)@V@Lswlck غthGwquf@Sia?Q#4SʳhgO;Щx}7VkKEVjW!e,k/|ې+4'MfzF eH,<xgvPC_hka@Fzi l/[}eݘYHk`3'N7S h.>TP5tkZ0b+j$u%lZ"SzMea0qa7.;CnZK^ΖTz]|E3ݽ,L G ~N&HGef ׎67lCQA&:H򋁉['YJTN(Ð] YIyS|u!=|W#nR-]׵QJ MPSMyZ) XexD(mlבcI-O8$SJrv"Lhr*/Gp'cJ^OdGnAܕf 2#iGgnbс.$?'6h,=i| x>`(hC?¦ǂ leƫǫ 4=fѣhmȾUլOLsV;Aޡ2W.{+)]x9 Eo~A["^=_\]8óF}Q}g7NVsbo_oukjovtD#z6NtR4¡_=N9_GޭԙKݴ){Fk߭K;y[Or.)Jw2ϓ _r{7GÉ7۾J'mF/YOEcJ۽7gܕV%]k͋}np2ۑZ+x{}*I{?`>IFk>6` r(sArxY wlYk/vl]3VV dOOcj(8:F6v:*K6n$mۼs-c9oR\ۀ5E:Q}7n aa¬<O.%wIeyeL*{//!oCߖ.F[jCi. AR; ~r`ӳ𞘢pLZ<`Ai_ x[ތ]SJCҔ Njwp{D_M};6-T];ȽZ98*)t U?OnE~6zuræ醎†9n:xT:]n֘h5nh/8X$G R}t~ }5d8ʣT(=OccI$6BV9Ji~ r4tHroD3EPXpz,;RKtJkN>|8i1419#=|Ԃ*Pk'O>z H$#%WM1,w9E~c+Yto(JՎ NvSZ>0~mzt6|룑h ql~m*c'8#V>u8_WL|fJڰZoEꭅr_Q`yCO%Q}۾GRM>m2q=MK 9`ލ '{pOlQhLxb8iz}o  yrtInN7EkI/ 'o;2^nV7T}iڗFg7dB4KTw@{}skDs+[ڤO"M50/$Kk2SQ|2?9_ktc5FaAvH&r6&jHP!H qk)J.f4)rl|frdkGqRth*k)^[dug [{˼HK~c<\[i{#nj3&>!)<ăǃAG?(!ߺ+p瘟V^|ŋwՁ;ܱC +8o歼7j*+Wtއuwsq7.3Cdo볶-miJҕl  UMi8ajI !wy|b=' !ߥ=8X}I _)[/N7 wr}Gy[Ouslꮟ6j1lʙ;u> g9qʱ˱űQuz_'Eͨ83z841í~aY[g>Hg)8圄#M9{0kQ(ӳuQSyQޏz&H>勨XtjX}ibj`+7LrMzУ{~xe/y޷'/;1Y`԰ g:?; ,hNxᅋtHj#􆎰^r176~{w`,}my?'zDOS?zo3aٿN,;|kpɏw'/_^_<ӗK9 rܔs=3 Ah&cP͔L5~$9L~ɺ0u柚ra᎑:9FjM ;?8e;ӛCyBuV|%Gݣk7/W2Lq%w{dEWi SݔN(a(Q/[%)QݮNSte4E $Ĕ7cG,8ƿ6o`[z׽o~ c=K]/KdAR߉Dmm0@ v1޶/3;i>q:].PwLjw߿aw_nNhOi7~27o %wxgn:߽>-8s&{d Hq2|-˅3gv3gf~'&`7ff~ݪBXw fyHdwd2}<̿[F_H _Ƨ*L;'a Gp騰+ۛ G)p,o/5j,K|Sl!z/)b%}_`L`BzVa]Mð,i}Y]?Xnjpi'Qҭܱb;Wv!0ˤŻn*ƿr4_\Wexo6쿪/ՇoVl?sonֿ[UGٰX~8'򥡟MY_}efENݔ/GIx=7n=w͵?|Ʀ۫so[7<7{^; em7.5G|olC`دn|텏NԲ|9> +/\,zVʙVӻ_:~>Ty:~@M̛?CC:Ny6p\lcTݚKUYVT6nEwx 'ӛ/RV4 #VܪBqYcȚ˜".)n7dΊC(.wY[ΈYQ?'#b%^]Sr.@){~2Rdfyt!rїOU7UQj|T.M֊ yxn}(+WU{T*VeGP8nnJRQ)ܼj<(5jYjcv Et* ʍ| M.\eyGSl5Y)ET!E$G^ |Jr[.pʺOC ܜ1(Ň:SU=:KҸю\0bj>@@{R"zE⚢+>n#f>[L#f~J@0ur ʽz _Lܲe>(VTj inTl!:σRbx|bU`H1b@4`.lF>Rl/Wy9)/ %Ytc U' S H&hNR @R%J̠WȂ|ѨJ#K@Ev5UqRtY-@BjB 8z1i^@5TA;aL (+č*/鍕~M#ČUj@ΈFVFyQpQEK)* 5'BU ЪZ`.PrcaT~nU FbeUZasLU$GUTVvעv4!Wi>$"󗋹 RUjR鳺 Hͦx>W'dU{KN X5ʙ/rbU~o)bnmjOW#"V<>5Ҥ ̀`Q(ɝ^&=& ʂF(Ќ!@K}  KQॹ 4^U+1ҐA-d R ,U4ԠZ 8#CY10xf7CRsx+y 0 )Ԍ,D!e+u\ir f^ z!A)x)Xsˀhv<D(`htVk4I&"?ܝe ltWd9B dc'wg񸰾T] ~sNJ d 0+&VNU)5ɫR. eI}9&bZF[Rћwj*v@ᕨb,ip%UA-2UBkY"$ VLUF%G$|7]G6c%ɪmIЧ 8Hէhf)  /~!37|:M!WVt % ^8 XOhTS);O@3E Idd%1cH1̰S/t,p'#E73:J1cf$P8 ~~Li%O`uJ4PQVV]V6ɳКZ7*4fVQjYuӯO|Td߫cr"<<b] "ZѢL4*/Q jCXi%fJeK]YD~Y:iٯ?V.}/Вk 0 %y>7!*fK^ TLPj" Dy;Ѡymhi&*)"_Mc`Xk!S@!f^Em/e>x s1yhߋ M@VR5Ǡ Tk*уu4J;yHM.ViJR,ǐ7%cs|E~-ʊʀ`WoyB0WHU-`GLZzQcҐE|, 'hOǠ4sZ״&VRChi^;|F0gk < 8 #H\˅:‚r!{H.@|G/%mߏOXheg)2q]ؑN^ln=l,Cē - BUy{#\U^@ZE/F 1e9 Vj8}>1rXǛB\6(̯G8 ?<}˧hWPX%QvI/×ʦ!DžgqgmTGO_[ "ׄ]t:.@?ˀyw Ѻ+iܽ퍆P4Z)^1t ;)L(S4ŖPsiseq{~ڌq"tY[`k#Dk#zHXP<GnnY/qp6R/,ag]®=Ab9L\.FP<9x KZL hB nc%'sC *[:3ܦFfNNQ?6LS ?;և39>~ӽޒI ܟao08_N7C$t{4iwG.w"?pU@*zAדv#+QwP1J^8J>Ӷ/7޹ ^.Xb[XŀG$کnG10 [/;iaF-laTc6Ċ>UWg븖вR}C;%c3Sg8Sq4)~t3%VU<~GT$ޘ c֪Im WRB؄=fٓ8JaWj{ቍwX㜖jjXF"əL"MDu8uaۑ\]w]&}#6βH%q5\ Rkj^W ,.[ѣRw F5b(sClj8hm90ڌ},-  Sθ`hr2"LqGgxE(!E/@i=(X+&_>EJZ|DiQќlK]xb-uoiu$gثl܆cMUHuSMdLTW*Kz/nm4BIؐt{c2~&}ޔw5ط`$#‰'8daiw xx.O |覬xY&Z,L9XBw2~'Q-xtY8fLƑG~>r%0|>| ۾RB MAC؞pu U8cx{# Q'u2uimhڻ/rkx Kӭh/)W>/yd[wWU /6{CqpI:?Ӈ' !vf8bY1_kYʷ7&+(-˟ՏȧavFVG3UWU1e:Fx,L[3s1"Sŝ-e}eA0A I61[veUd#'(@^,vY..dN I8I%1ORߓd}R H6QY_hT'XeI&`%ŭT,wu$, <=}4#.!YP&>{vmnipE[4Oɂ;qPvC~3[8s~3:q.3}&Ku٣CgjWrXak) HoqngyVaľ{$hٹ=QuhcҮRUؓ^0rZX;jslb ,}*`>ad"혒;-b Y7^n?~#d9c5kQH;Rb{[.wĺ2&F +nI5YȒ[LI1-'{gL j\z,ɿ}R[A!c&sU1#="mPͰN9ϑ2xS] Uvct}G.puԙQ cP;̧42Y # Y#X43ֶ4u[N},x )++2M=ǶXY_ 8e[ڳk8fifO+}cJ vR;3B Crdn}qޓKf՜\`ٖjా*%vV7V`'ko\ aӶ #1:rn5;bonȴ:Ji ٲA=Ǻ?r\tXvR4xI ˥J,6rdOt=F1DW!}!i3郗zk <cl뙜{ݐ1d< I(̯פ9] 5:rj%PiHi' rGKΏWuԻk.r$J˙4gBl6S6 Ij*Ck,嫴}sG&=?$m XQ41/*. wь=fx6k 8&SY^`rs>dML}?~- x [>!+vzQ.^H>P\  >`և_S$^wS٫\r>\B3Jn3ˌ_S%y%k2KƝ@b8b–>`q,~Eu.o"[ 9m,gp=\8u}w!xk>5J5VD C smMy1th+S j$/A;ykO5QεϵJN^mY ?9A`(؀1iNB;Cos8|KS8^T9bw&Cѱ#s7u^SH>* nÂ(shHiÚ.«ݙ>yeSZ*r'b BA4}"2>/eI68NxgN8}zXs< 0VF8g; fxʙU7Ȓ@A4=kg.5QZ(rNr!خWG9fPxWҀ~I7w߅i7v =2ejH:4ꠘü a=yِ݂g'/$a'uIm~4`eOc5]K<W˱k6kZ rLO|9M&1d[J;>;9d;ٹf^7is2mǢtҕFWG7 lM4=BcM$dXCt03NJƫZQG܃N ;bsyl2}M413 ֙|j`g oJsڳ[ХG~JXab+qA-Sr&38ȧo229aw%?q<UjLze][[pjE(k"kDvh}EN޳"N[gr9!jƙ0ǮG1HS$m{(qg3O$4-/1X{yko<'|#5iMFp539Ll`C0g88b~ڱ$J)']ᨪX 6`@{h.C#QVC|V ӟm®)g %ֶ7O^|n*^a'[<0 ۋ{_d'Aʥ9z-Z69a TBy p 2uwQ8QAB:ه\b']yxy`#; OyZƬ V/qf)7uKb)i(ρߵ҇68'c g95y<6ZLjK%\ KTx->w>wѾ9Mu0?/U/Σ{~^;q#;+ Hff$0D3^h6QHǾ|WhSc45 8LC׊]zNLMrB3p3uqZ`j"'ܠ>rF尫 K.=t26>`g q[鍎pN?Ci:J!ӡ!h\c1jEZ lA]x4 8yÒҙg{Ny~PxgE r ^G=-,y,Ws~o o6໥p[x:B_6žF}8-ɎlK;8i6BXrM!l'Ň̋yΜ4&K&aode| -_w IXcAR.ޯoV #YF72 HD(#Aw!\X`J g 25Q^wywx^V߆Ї!Is!4bNVin$5(ͣ(MW)2-^$,h{6*}rU&~. 6QhhLCFӣfOF%M+u)VFgFzdتM# h$\M< T7p,#/ڱ&9ĉXH@xN>\x20Y !1Op4a4쓙qaMR~r\"ƟL*&J*;A3WI$ŌPd{[^U*,' 'jN撑t:Th>Q>?nS#xu!Q7Tߟ% ð "  67'W᧯W!Gup`zzuhOoJTUܝo_`Iso5BǓ)<J#O<.qTbz\#b |׈R9e@Wi܏7eooy{c}8gEbNUsޢb. (\wp[5opKɼybo"F+̟ׄ{Pu՝Ípˎ^ZUX_Y\s\m S5°[~Ⱥ5iw>91KjZQ<%N1{dj&jS[zo>c,\=mx=Ր|pQs*ԯS"W,َ6cF֡.a^/.ܵy+DZշř]u{bNơMfWF 6*d itK][=D}E$M]RB?|%oP=\nG^_W.}"&} 3gXZm'KSa۹.B<((#qܠdJ6K)aCg4fѐS y7L͡4Jn[e‹y=[J.v6cᾥOwJ)qy7kB5ow+.pUyn.pKP@zw\=" +X[Q=t$ca5Km8K؅( ߂ݢ o{b:N o߾~pᾎu , nnGTa)ۚT-\{w84{p3D,N9}Wft|.]fK?qXzϱX~aosX!iߘvgro#oGh6C|+_V֡P[=Xf9v fTdڄuꀀ  Dm!P( I o#*6GQ92H8t-TbҵO/+S~AXZ^N Gon޵u+x]ِ%iQ_/M6<YyPd^/{&m6q6=poToVjXM'hM} ץ R["imO%;edH=,=O-d;{{`، ٺU6.=63_[cn]yкp F0C)p(H> {2V!uNoo8'\н}t[|LMVXol{^ANlE8t~}{ákáSõ?Djyey[p5S 5wU7ςVY`+f溞R^)޵pHQ:heI Ӭ̾MzHK8.Tl/߯rxy293(UЗ9śzx`9]~% eTQ U͜|+U+ ٰӧ =PBPW)/ctSN۟35ǩ;G}&P[! |4P᝻D֕~J:i[xP|pn8@1b78k0CuXYK,I˻3I8 :ݡǟF8~? # >Xrw.8{ [. ? ם ,4΄7sV|ȶqj~Z% d}znZ=(02UH7M{@|d>drQ\|vEOGmPzGi`ĨiLQqtmU俺(';\y9/7w5w'3÷-c|{Aڂo(9 Bfϸ*z~Gz)Ze}G³З>}dش x?ͿN4Qz_#ӧ3:*74$àg'GC+==:m1ݚX.쮙w\AohHxov"mq\k~E!f/E:71ct˿d鳯>k>7aHuCʺSdgCX{>K)c\mGkgEӿvX߅2>9L99Fi  ?'_^|i%ҷlGg<z&21(eb #%/j}]{$juwEFDoV{tu$bt2R'/!q: z8ǒMŤ|맧_+$JtN|5Gd܉vNJA<">"ĥ^f66u4`"1%E\a9s)aH Cj+JUZmAxWs{׺z)ћ|{jZsǪIJQEFMQC 5BMPv=fy/׉Us- $"Ǧٜ<ŷL;2@γp4UU\T"t{ɟߩhNFӅTUGI MQTRϩ.Mq:|\[+|Rݪn7*UO|%*%e"lR08| qVS?\|O^h+z\^՝[95q\W<25\ Q+JR}9܊S(~P:T^dYSU]rA0/C[A)AqPQO^txRU*HИ/BsnT] _Uv:1c[g۪LPKV\]ۋ5z\ PAINT0.RSC| Wu歪~?-i4Sf=%c<IcI5c՞iIM==zEU8I 6&vl˒x/v< @f7߷IՆA9Vumz{Ϲ{Z¸Z5{_/\fX!e".rBۅ'?wSʄm\ !۰m[7P+VJurۯꥻ'5^9UL9p`>Axg+DͫU⩒jKdy6]-yVpxxcq=Cao0ƈGk_w珔$`@)BOAݷ ټSueǽj﬌W>D9XJ fXH`WJ=^SY#̂7 KbW{Q;;^Rx,E1tZc}^vy{]f"ЌaYPũZIaBFJ(wH Y-FK T0 %{K=^T{ӪaanDt3 >ϝ\ ]sRW},-,@YwhhB&o$T7Go|߰e޹[ \F%w(:;:N#'|Z -k•tRSP_V_~ui+DX깃~M*5.8t-@ yNk5{`؛ t\F+''Jc ѺF"X 𞁃ӟ"X+)՝.;pRoơxqH813b),2UE#C{G5H")ɼ3elvꉾ>a*csT m&)OB.ɻdPiL` YC Ɨ J.33&t'[[r+$Jq4V>)J>d4v X4C6MEMctWi2a4X=2h_N84EHUO@xVyDlD6i6j߶h߶mmI9T/4j&1[+GΉRYe_2{o_hͻmzV>ZV;^JU3)8֒G.]/_ O_ﻹ 3""mlrWWG<{aN8UԄˉU\ 3п[o=?>k/_jfb]Lyr#+b;]؆mKvaɟ{޳;wŘ1?R3/Jzk̑S&kVG%з%1 @l1`mCȿk{G3?wvm:HCV}y͊?GgofF :LG賈f۽۷z}^ڳH磋j>^}[3Lnw,6˹qeq7둿ot_>{/E#}r/&=Xv1C?YXGTJ .\1뽚iz-\{՗`+Oڿ<\?Żৡ3K?g Z_>Ϡ&UGA8po8%l۹C7uںzeeߺnlV&ւn{  [Z;tVeoQfJ+2c3q2TerZZ6Z Ԯ&~iП  K"迂p@Xb k~^ ճ'O婞H@Bc=QNwh#h{c=wt'.ϋ bhRoA?]0ʲe;㪞ԟMe@7ި6\Lݭe1@ %!kr9GփԤ Ggr{2Y &e@EЃMʐNvSMʐ3MH2{AkRoA H=SZYs7){2&eMʾך}AؤB\P,:uVV5)K ڭaN.tHa|OJ=.a=MmR:LMkelS zV2<ˠǚa >zJ++po~lzσ^&[ukH?6E5ei4-c;Ke?xӿO|?FˠqJ.Z4{˜7wtM^2VfpNә_/e~ @6A[3ʤI3@z= Xz}Lz_}t)4/j`f_y62u˲XcPozb7Ϯc'/5%2 G!v ,юQ r@cX$YrG 9rAArՂ9 GHF9:!G'H< 'W~hAIr<G"9~kAEr|xAErBK  r@%$ r@%$KH/ır,%9> XJr< XJr|rAȱ8Ae$dz9O85 /p*M|XUMUf-=ivOa_Kwf{bf]EIp$ijkYxᢟ}W8:4RfG -x\IՎUN˨~imZnk)V5Q᧭>- Oh;𤆟53 OiCnVi g,7ZsNs~jWx^At*\(|3ﰻ$zY(젼yl B+(b"FqKM[Bv?p'ߢp7ߩx<&y$lGy$nGy$m'xAxA4#y$ x{<hG HA/iGK3Aw7# HA6#qA$+u H|e<_ W7#5K:,uMVO~ޓ_/VAzyKDs~%;hץOO:,߯z Kױ|*ᦆ'*-<<ߚ? ,/)k LSa~G@xZoh88pdg5.c34Z] qvpQCtgߧ`"Mßqޮqޡqީqޥy\/"|Lk@wMzd|y5x^I3Q:>"Lo eZVh<_;y> _x> _w|Z$|$|Wx> _gy>Q8$s3u7&9b9jq%RK!~\.pq[ÿb,y g9u98[Prv(9Q95*5*u :֩ďwkC]2|U % }Wo_6_ 3h㍵[5"jȿoIOq4 /M_[3o!_H/$N,X&# S~,ᫀ5`oa7{,-~!7(ZKyB}:I|d>Ek7կyo.jY}bi7Gor?6__˹)X/`i;Gug__}:al٢'ϰ}Dyϖh<|%8٢3$Uϖ>[4Gxۧ7^Vˍ_Ӌ{8Z=M/I_ }U9Z*~ /DpMdp;R5-6< TKL=7m5g+]w5/3%5y̟>WZ'0ږϟCd2F_K_?C%o2Aמzif}z7,`{aJy/mQ>_FU: =u=^YEZ |Z|HdL퐘1p%xhH|s%gzQօe7(_YÌZی[ 8Y\&8OaTcvu΍J?9;H8kZ~) nx['luvN#pD^n8fm?QIdYmV̌CIg=KwڢoOrg?g+K ? qGßzx=yvE/uP$\O*<󧡹T?ua&ve{jgD`<ϋv+x^[__gyN Ay I$ު_9i5Tp~oBƥr+Ech %g(+Bk#faKBa&轢x~OP `pyݐV6㮆w~f| p|S^X=}Dg|ZG B[Z&ٔ)p5֐C[N\-j?+ kByT>6|~3mUڥ3Z!w 0G9wVusq#|s"ϒ{ȒZzhC@޷W$Bgy-xa U,#c^8"){bƝS#x\Tx2Y#x^ޢloSx.w(<^KnFizTZLgӵWČ{b|&GcF𞘐nGm߳Ue!~(OM=_V/,7촓UM=C'f 'fH<%Hix!yL˿~?\ly 9Wp~2CK\pF^gV~a=bį'{foٮky{Թޣμ*np.yx&3WF63CnN(dO@'硰.$vmƣy]0sC, ?T̍V_ sC0J?S) ?ΏC|j)fgbߌ_>o/o<=^xw *|+xnOoCA|܃_ކav?ޙ<!k;k?vF-PKV\cT_ PAINT1.RSC| tueL?&EG? H'8D  QpDHrlg:FȊvdo'B]w]6_& 0}{zf$XON{nzիW{(.|#+VV>WC1BKETdxplxpbeTr !:ntJ^Ls޹Zg_u^tTEbyw$wG9SuNNNS=^tKJ9RgHy>3]JSUqC8Yxqf\9wFpC3pc3pS3ffOtq Q _Œn:ٕDy%LEѬʅ gx0;YqexߛNVjHqTV9N7ӕGLrdy!XtYy̜{/͌''O93|`gi:8xUkosܞ2;*̐ ݾg>fF婲szFv Ů=:UOʌsR\ArleqlAd ^hIzC|Il`Qx28zV2y⽠_ʢ\k 1'r\8Md~4ZǞK.!DA{q$1Ym%G@@ǵ2u BipH"& N2XoAH*bD&aR'oe_RiG@/7z7=M .&0S}I=@O7qoiRvN)|}ܵ#g :W>\0 ^ei8H,8K@Z9Kg5 YJtف4<8֊E;18 -9G'[r@NO[qtA.|KEzYKEz܊-tAؓ.(h@n{Gdt䀌VC2n$8@F/d<ӊc)d,!hKIƳ8 c)G2>يcdؒ2OXHƧ[r@rVdNK'58a!# ^䣒U}jHkEyMD_pY8fN)vvȌqԎ0ޭ6ZnMEH+nE텍vS&M}!,%}0 ]W\1sxPv g9(55|Wp1_ ;DeSu!BWiHYɸ6B?g=ìvim&/Zn^3aWOD k)\(|)s>F tP.y "F㦎" c  m  6b<֠ H<Ѡē H<ՠ 4#l>5#}$ޠ;lG] HA4#}$A(Kx_>_֠ė7#}$4g|E>_٠įiG}$FŷN %vH #K9V^ܸoVNF1owHV+Z,L7n8 =-Ӎo.~@xH/otܯ엲+*O-+NEU  ?= <7PÌ4d5Dh8j1nkc.^Ssb_Q6wJ_j 5]s_wj'_wi_wk/{4{"W.% #|&r}~~__$j NؗZמYހq5] |v!3&C_$ $|$|?$|g{>lOj#l—+gR1gJ[(nLYn7h"yyk7wb<_n2ni)3 gEpkG+Rzf=ۃz׳A=<e}}Tǀ[G5ی4}tiCD`\X5rk+xy7鍯6^xX&rf[@[?f}r+Ooprx ?_ oη^H;<9z!qc)?q,ehjI-"7O1-x6>mO[s~֠$"<|~77"o&蟑ofKL?#QgW&-zem>拦uwVwZc}MgH`l vM{q#ꍋqiGqy{_n/kh{j1}Zqi@<'M/~M?SACK=;bf)+Coj%D(?{Em˞> LqM4)_IM$''.YZ')/>~c?Co3N8^_qJjM  :B?`:k?Exҡ*; R+U49ጎpCG~;9Jۮw9?]J._kc=rI19 HxyW8y=)fC?IOOh9zR]'SS _%Yo|cqޞkgehXA AdAW??gGd3%+,G7}種=^wמiߞ?({|g}[qc0]>}'r+OdC)RM{؟!$sj'n677oguq<~M}ݷR#?Mz+ȸ if| /-p0d?jܓH88FN<}q#y DEpxu9pZ %  &7R\h3Y΅n"]s-':^ } +vmu'fcrt|;Y MH2Uu!6  5qCy}aS^|B[w_JN+W$_ %u~!eE{}^ΰm%hS4W7Oo5qWx6^Hǫϟ~lke'nPj(3~g|Qbrc6ѺToJYHҊL\UC55+0ORH!q{bdϬj7pxަ';nHsT?D^gV~xc&s{YW0>H?Ŷa9E=L= kη!NIw{jYo<ě?bc殁'obXQ-##?*srqmplgrevFLC峅CÇ5\(;S-;sTDuRpNʸg?[,J~&=_j|GqV!49UBe4_,UśZ~M NLʕ Viwww1xpGf %\X+|qsΖ-[dWr[.T U/da*??]s𾷪12_,b-;*4BD2?wnf+ ì*ϲ͜ .GsiǎpFFYZg =ڷ;nO@+;ϑ qa)>T{<]}'hZ-TJڃ[a>a<)O38-e{2 R  jʣؾŨ^.( KQx[)Vila :1 @v j5=f%Xan"GBuDFn(Ys\)>űyVǸ s&-zbdϡGH|uW'986伆Q8\q&*{TAq]&Ǒʻ!_}lyQ>(_YAk@-xos$_ʟ.T{m~#w:sG Յ2zLP;ǜ:6Q`V(LF2`GQ16zl~AMd؁aA.%=xp0kk<<4{w:GFHJ2g|{P~RA!_Je(98a2?aF5 !6T:sM#8.^32ú> lIJ&HZ!Q t4Q)wB.)㑭l}衇Xi>o$̖ISnоmӾҾۦ۶mVoOYyC>0 GyHI9XO'xiPiB9C~9\<}* SUjq ԅr85lJ4NpOn(A4בUYf(\NR/M JSZs̕GGcbg9Jڣ8ghL BUqpx`WxT4PC Fr6ºaX"R?].ᦑSs,Փ8ygsv!Elwp0v|ΡO-Lb8a/ (0Fl|aGF|J!&>Y>kbz*͘O02((q sӨ>̆hfC| yK2c] [8;xI8׬yZEكyqLNGdZϏH %o$uVkbK5c5qzMMLYB|"r%#5a`!k W0~Yp:q?EPfـ b@ĖDlRd#bލI0j2L8!wy@v"\yPie~'!gII<9 <#ZH8)*CW?z׋~U·a`(+Q rE!6 9~>z}A !{O,hϣm?´ƌfQ/Nz2hIR\^KzCWsh#l9ILt90 LʈxR.c6h>>򦄌WtOR{گ&`r>$sj—\cIPZ&vR4d~K2蓜W$+sDO.Q{o/+D.N<}fwk@ 0.?q`h/W8K DKw<! A{AX53%Zqz } &λ0ߺ> v~7оie[-Z/ z,dki=\F'W'@he\v32;}&ͧTTKAY.A֗Pf}4o}o3=0 CAЃZN胠'녟aPV/C"H"H$\/ tCV^*5׳AAhX/tk^4~ѧA5~Ve .cEK_~B@6T[6ke).~1fZ55Is@(c8=FgZqxr|} ;E6㷃Z[>q/(̓ζ(;z7$+|0D0O( bIS-~ϵ(C=ߢ+zE^@iQ ?-7k^gRY Z] tVfs-]-a}0qn1,ey۵(=V2įĻ@ -9A8$~ )ƭ!Dq'j=dAKoic,#.nu%TB@K@z)/^L_R+AZ@Z tSzAN4t!u4SuZ c)~[ZYʺ1w#_4 >{C-"Cqb%8XA0]^pǷ8$G8o۵+{r*A6Vc5qG?8M$ǚhF*Ac)9޶*8־XYөc2/c8ev1M96ViˁokDZyXu!׉ͷ}l$}mq=q 86A7>. }l"}<ږLxW;I 8n>n"}\;IؚDy3t^& V'TɳE:Cu{!;ámD?x"FȊqgji$,/Y,7 +C$ @ (a6&eܯj~RS nDjnZ x#0v}G+<lߐx\%̊¡ N}/6fO۰! >6LO$c4YN P2'N ,L|]>$lR5蕭P#ۏ DbVx(Sx8ߡHSvW&yLcMH<$MH<$SMHI&y$iG&y$$Ļxw<{&y$$&y$I(㫛x<_$6#uMHi'&y$I_$76# *^8/Yeb2r=KNj&jeeTxR?Ջ˨I9.G ~VXB"/QɸӨe|/QU2HHysŴx}K;qʍ)!<7z'5z0) Ǯ ~Ok[m q?Wk|Sj`"[ß~ޣE ^ >M_~R+4\Z;co_7bCNAxFG ʲ/]}f^ m9V*~I b}~f}QÏ> ^d}~f}IˬO7kk#^ >SZBqcQ;Nu'( Ko7w7khCrByÄV s,Zrvnb9rZ]A9c,OoJ| x? f<;+]HΧY].]'Bn̲4{}ʳWH_zrk .ZCݞ}5{6ijcZo#wXlP;XO~ey>{_Y7ܯ^8˟Kaf}ğgf}_bf}I28m2uhx'pxRo.)Ƴ~`Sq AxY}w2AID?پn5[wZo:hپM3Mo:a!74t@m俧lj="{9⍻Ioi$2/_ 吝>!GEl3Wqct16!xViF d:\D#02D5}"EnN(n! #b1Œ[A>o+bOn  o o<<3Mg !̓Hy~,}d ࣵ?ѯ :_z Od d$iGt"[fk"f !BjM414kxxB?%O}4OIwh+h_i?K<{Ѿijv8NJhn ڗx-KfZh){vp<|. 9[y\,$bn{J3Co~N1g<'5ҤPV"Ews|Fa 8[3[cY^|Pvyf<8KS8{8J6ۥw;9Hxm9*$yşM#3H'wj+ʎwtҌxoL3+~nǼ,ˈ_*scJ(Gވ:A1٨?;~' ώggǟ$?d>켉3AynG󟝧[1ytżPGPjǸ}J1>tև'%6(q3~VΗe\/ca\/ޡp:$[1>Qi|"1@joDRsw8R~B#[M}ݗVXo/{۹ī4lg>wq^:!W󟕲):7Cf3AP|!Gdѡnݓ=f6=odCY>? =&B4֧í>4T ?l#ZJ^W8?$ lzg^øM| 'DLgu.k%5U|cɷ?Fu.o%B!Mg(kllf6ﳙmg3ۼ&o~M>l}6~ْUE0~$sÌI+KW;-z|P9Wj vaWːq>1N ~_7]~5J8 וrK.K.aT!;w};''1z._#uMDa [w;zBaklV?PÓ߆_F gxef5w qO뗄Ea]bd/A=%Wx?!B C>x@ GS)jePK-) README.DOC,H- H+QUJIM,NU03 ,V<҂Ē"4$iE % %E !@)@UbJjQBqF~iNBRB^BJfZP0/9(RR(?(1h /Wf^rNi ļ\`{tKKK --PKY| DEFAULT.BRSPK. DEFAULT.CFLPK sDEFAULT.MFLPK "" >DEFAULT.PA1PK 룉"" DEFAULT.PA2PKqit]8 PAINT.DATPK ϼ 3PAINT.OPTPKB{Z6 pPAINT.PRGPKZ2%+^ `PAINT.PRTPKV\]ۋ5z\ PAINT0.RSCPKV\cT_ !PAINT1.RSCPKR@\M,g oAPAINT2.RSCPK-) iaREADME.DOCPK 7b(~DT     ( & 4 $" .    :  "F ~  .R60 N2 $@8L  4 B盾旼嗻抰݆~{xvrm\dgYN{LyMxJr:aSzMr5Z8]AfBdGg$Bx5R4RPn/Pi?`g\{ 'H9MmUf*6S%@'-G +2=\zxa|qmUn[qdxHXy(I + $$%!    ĵijbUD\TDol[{{lqscmpcntfsxltymprippg~|tZY`54A   "  "!  ! !#!                Qf{************************************************** QRT source for mirrored surface demo. Demonstrates arbitrary reflection characteristics. - Steve Koren 11 Jun 88 **************************************************} FILE_NAME = Mirror.RAW { ********* Some pattern definitions ********** } PATTERN ( x_size = 60, { ** Checkered pattern ** } y_size = 60, name = CHECK, RECTANGLE ( start_x = 0, start_y = 0, end_x = 30, end_y = 30, diff = (.1,1.0,.1), ) RECTANGLE ( start_x = 30, start_y = 30, end_x = 60, end_y = 60, diff = (.1,1.0,.1), ) ) PATTERN ( x_size = 60, { ** Checkered pattern ** } y_size = 60, { ** mirrored surfaces ** } name = MIRROR_CHECK, { ** (red) ** } RECTANGLE ( start_x = 0, start_y = 0, end_x = 30, end_y = 30, diff = (.2,.1,.1), mirror = (.7,.2,.2) ) RECTANGLE ( start_x = 30, start_y = 30, end_x = 60, end_y = 60, diff = (.2,.1,.1), mirror = (.7,.2,.2) ) ) PATTERN ( name = MIRROR_STRIPE_V { ** blue striped mirror ** } x_size = 60 y_size = 60 RECTANGLE ( start_x = 0 start_y = 0 end_x = 30 end_y = 60 diff = (.1, .1, .2) mirror = (.2, .2, .9) ) ) PATTERN ( name = MIRROR_STRIPE_H { ** striped mirror ** } x_size = 60 y_size = 60 RECTANGLE ( start_x = 0 start_y = 0 end_x = 60 end_y = 30 diff = (.1, .1, .1) mirror = (.45, .45, .45) ) ) { ********************* OBJECTS ********************* } { ** ground (standard checkered type) ** } PARALLELOGRAM ( loc = ( -10000, 0, -10000), { ** big! ** } v1 = (20000, 0, 0), v2 = ( 0, 0, 20000), diff = ( .8, .8, 0), pattern = CHECK xmult = 2 ymult = 2 ) { ** 3 balls (red, green, blue) - all are shiny ** } BEGIN_BBOX SPHERE ( loc = (150, 25, 0) radius = 20 diff = (.9, .1, .1) { ** red ** } amb = (.4, .4, .4) reflect = .70 sreflect= 20 ) SPHERE ( loc = (150, 75, 0) radius = 20 diff = (.1, .9, .1) { ** green ** } amb = (.4, .4, .4) reflect = .70 sreflect= 20 ) SPHERE ( loc = (150, 125, 0) radius = 20 diff = (.3, .3, .9) { ** blue ** } amb = (.4, .4, .4) reflect = .60 sreflect= 20 ) END_BBOX { ** mirrored parallelograms ** } PARALLELOGRAM ( loc = (150, 0, 100) v1 = (100, 0, -100) v2 = (0, 180, 0) diff = (.1, .1, .1) mirror = (.7, .7, .7) pattern= MIRROR_CHECK ) PARALLELOGRAM ( loc = (250, 0, -40) v1 = (-100, 0, -100) v2 = (0, 180, 0) diff = (.1, .1, .1) mirror = (.8, .8, .8) pattern= MIRROR_STRIPE_H xmult = .5 ymult = .5 ) { ** An observer ** } OBSERVER ( loc = (-20, 85 -40) lookat = (200, 50, -15) ) { ** Lights (but not Bud lights) ** } LAMP ( loc = (20, 140, 20), radius = 5, dist = 140 ) LAMP ( loc = (240, 75, -5), radius = 5, dist = 70 ) SKY ( horiz = (.3, .3, .75), zenith = (.1, .1, .50), dither = 4 ) FOC_LENGTH = 65  6  Xxz n 3B( ygy Cia(lTcB>D f" 222v"` ::6 `r|\ Kn R@"j`XP`F4`"tf2`R@ljvƨ*y#Pߞ͞hFa>ߦۦ@Ŧ˦gߦڦĂܦ0˦ԦѦڦnڠL LfĸȤczؤT// ?<NNT"_ _"HP@<6<g6<@22lldHEmhga Nu$)HBJBkD|0n"IHAJAk !-cDA` |nDAHBv20HD:!HD|c :<IC6` RC|IcvH@ <c<$ UJl2AC#BNu|`<Vt<ahL L3RLJB{ ************************************************************************* ** Sphere Floating Above a Hardwood Floor R. Barnhardt ** ** ** ** The brick pattern was taken from the sample .QRT files in the ** ** QRT_ST archive. The wood pattern was taken from PIANO.QRT, ** ** the colours modified, and a bit of reflectivity added. ** ** ** ** For use with the QRT ray tracing system. ** ************************************************************************* } FILE_NAME = HardWood.raw DEFAULT ( x_res = 280 y_res = 160 aspect = 0.75 ) { **************************************************************** } { ** Pattern Definitions - Brick and WoodGrain patterns. ** } { **************************************************************** } PATTERN ( x_size = 80, y_size = 50, name = BRICK, RECTANGLE ( start_x = 0, start_y = 2, end_x = 15, end_y = 18, diff = (1.00, .20, .20); ) RECTANGLE ( start_x = 62, start_y = 2, end_x = 77, end_y = 18, diff = (1.00, .20, .20); ) RECTANGLE ( start_x = 22, start_y = 2, end_x = 55, end_y = 18, diff = (.80, .20, .20); ) RECTANGLE ( start_x = 2, start_y = 27, end_x = 35, end_y = 43, diff = (.85, .35, .10); ) RECTANGLE ( start_x = 42, start_y = 27, end_x = 75, end_y = 43, diff = (.70, .25, .20); ) ) PATTERN ( name = WOODGRAIN, x_size = 10, y_size = 11, POLYGON ( diff = (.23, .1, .1) reflect = .42 sreflect = 32 point = (1, 0) point = (1.2, 1) point = (1.4, 3) point = (1.4, 4) point = (.8, 5) point = (.5, 6) point = (.2, 7) point = (.2, 8.4) point = (.8, 10) point = (1, 11) point = (2, 11) point = (1, 9) point = (.6, 8) point = (.7, 7) point = (1.4, 6) point = (1.8, 5) point = (1.8, 3) point = (2.2, 2) point = (2.2, 1) point = (2, 0) point = (1, 0) ) POLYGON ( diff = (.29, .14, .14) reflect = .35 sreflect = 25 point = (1.8, 8) point = (2, 7) point = (2.5, 6) point = (2.8, 5.2) point = (3, 5) point = (3.4, 5.4) point = (3.4, 6) point = (3.3, 7) point = (3.8, 8) point = (3.8, 9) point = (3.4, 9.8) point = (3, 10) point = (2.4, 9.8) point = (2, 9) point = (1.8, 8) ) POLYGON ( diff = (.57, .29, .29) reflect = .10 sreflect = 7 point = (2.8, 7.2) point = (3.1, 8) point = (3.1, 9) point = (3, 9.1) point = (2.9, 9) point = (2.6, 8.6) point = (2.6, 8) point = (2.8, 7.2) ) POLYGON ( diff = (.44, .24, .24) reflect = .20 sreflect = 15 point = (4, 0) point = (3.6, .6) point = (3, 2) point = (3.6, 3) point = (3.8, 4.6) point = (4.2, 5) point = (4.8, 8) point = (3.6, 9) point = (4, 11) point = (5, 11) point = (5.2, 10) point = (5.2, 9) point = (5.6, 7.5) point = (5.4, 6) point = (4, 4) point = (4, 2) point = (5, 0) point = (4, 0) ) POLYGON ( diff = (.43, .29, .29) reflect = .25 sreflect = 20 point = (6, 0) point = (6, .8) point = (5.4, 2) point = (5.4, 3) point = (5.8, 5) point = (6, 6) point = (6.1, 8) point = (6, 11) point = (6.4, 11) point = (6.6, 9) point = (6.6, 8) point = (6.8, 7) point = (6.4, 5) point = (6.4, 4) point = (6, 3) point = (6.4, 1) point = (6.2, 0) point = (6, 0) ) POLYGON ( diff = (.36, .21, .21) reflect = .20 sreflect = 15 point = (7.2, 0) point = (7.2, 1) point = (6.8, 2.2) point = (7, 3.2) point = (7.4, 3) point = (7.8, 1) point = (7.8, 0) point = (7.2, 0) ) POLYGON ( diff = (.36, .29, .29) reflect = .18 sreflect = 13 point = (7.2, 11) point = (7.4, 9) point = (7.2, 8.6) point = (7.2, 7.6) point = (7.4, 7.6) point = (7.9, 10) point = (7.8, 11) point = (7.2, 11) ) POLYGON ( diff = (.29, .14, .14) reflect = .35 sreflect = 25 point = (8.4, 0) point = (8.6, 3) point = (8.6, 4) point = (8, 7) point = (8.2, 8) point = (8.2, 10) point = (8.4, 11) point = (9, 11) point = (8.9, 8) point = (9.4, 6) point = (9.4, 4.4) point = (9, 2.2) point = (9, 0) ) ) { **************************************************************** } { ** Room Description - four walls, a floor, and a ceiling. ** } { **************************************************************** } PARALLELOGRAM ( loc = ( 0, 0, -100), { Walls, brick pattern } v1 = (100, 0, 0), v2 = ( 0, 50, 0), diff = ( .4, .25, .25) pattern = BRICK, xmult = .2, ymult = .2 ) PARALLELOGRAM ( loc = ( 0, 0, 100), v1 = (100, 0, 0), v2 = ( 0, 50, 0), diff = (.4, .25, .25) pattern = BRICK, xmult = .3, ymult = .3 ) PARALLELOGRAM ( loc = (100, 0, -100), v1 = ( 0, 0, 200), v2 = ( 0, 50, 0), diff = (.4, .25, .25) pattern = BRICK xmult = .3, ymult = .3 ) PARALLELOGRAM ( loc = ( 0, 0, -100), v1 = ( 0, 0, 200), v2 = ( 0, 50, 0), diff = (.4, .25, .25) pattern = BRICK, xmult = .3, ymult = .3, ) PARALLELOGRAM ( loc = ( 0, 0, 100), { Floor, wood grain. } v1 = (100, 0, 0), v2 = ( 0, 0, -200), diff = (.57, .29, .29) reflect = .10 sreflect = 7 pattern = WOODGRAIN, xmult = .7, ymult = .7 ) PARALLELOGRAM ( loc = ( 0, 50, 100), { Ceiling, med. blue. } v1 = (100, 0, 0), v2 = ( 0, 0, -200) diff = (0.4, 0.4, 0.8) ) { **************************************************************** } { ** The room's sole occupant, a silver ball (arrgh). ** } { **************************************************************** } BEGIN_BBOX SPHERE ( loc = (50, 25, -25), radius = 15, diff = (.3, .3, .3), mirror = (.7, .7, .7), reflect = .4 sreflect = 20 ) END_BBOX { **************************************************************** } { ** Technicalities: Our Observer, and a couple of lamps. ** } { **************************************************************** } OBSERVER ( loc = (30, 25, 30), lookat = (50, 0, -80) ) LAMP ( loc = (50, 45, 0), diff = (1.0, 1.0, 0.9), radius = 5, dist = 40 ) LAMP ( loc = (30, 10, -10), diff = (1.0, 1.0, 0.9) radius = 5, dist = 20 ) A!54x?@_ ``@`%`oo??z4#>q9?j5Id w{].Nc@H„?{X@p!?{******************************* Room *******************************} FILE_NAME = ROOM.RAW { ********* Some pattern definitions ********** } PATTERN ( x_size = 16, { ** A checkered pattern ** } y_size = 16, name = CHECK, RECTANGLE ( start_x = 0, start_y = 0, end_x = 8, end_y = 8, diff = (1, .20, .20); ) RECTANGLE ( start_x = 8, start_y = 8, end_x = 16, end_y = 16, diff = (1.00, .20, .20); ) ) PATTERN ( x_size = 80, { ** brick pattern ** } y_size = 50, name = BRICK, RECTANGLE ( { 1st half brick 1 } start_x = 0, start_y = 2, end_x = 18, end_y = 23, diff = (1.00, .20, .20); ) RECTANGLE ( { 2nd hald brick 1 } start_x = 62, start_y = 2, end_x = 80, end_y = 23, diff = (1.00, .20, .20); ) RECTANGLE ( { brick 2 } start_x = 22, start_y = 2, end_x = 58, end_y = 23, diff = (.80, .20, .20); ) RECTANGLE ( { brick 3 } start_x = 2, start_y = 27, end_x = 38, end_y = 48, diff = (.85, .35, .10); ) RECTANGLE ( { brick 4 } start_x = 42, start_y = 27, end_x = 78, end_y = 48, diff = (.70, .25, .20); ) ) { *********** Now for the room itself ************ } { ** four walls ** } PARALLELOGRAM ( loc = ( 0, 0, -100), v1 = (100, 0, 0), v2 = ( 0, 50, 0), pattern = BRICK, xmult = .2, ymult = .2 ) PARALLELOGRAM ( loc = ( 0, 0, 100), v1 = (100, 0, 0), v2 = ( 0, 50, 0), pattern = BRICK, xmult = .2, ymult = .2 ) PARALLELOGRAM ( loc = (100, 0, -100), v1 = ( 0, 0, 200), v2 = ( 0, 50, 0), pattern = BRICK xmult = .2, ymult = .2 ) PARALLELOGRAM ( loc = ( 0, 0, -100), v1 = ( 0, 0, 200), v2 = ( 0, 50, 0), pattern = BRICK, xmult = .2, ymult = .2, ) { ** a floor ** } PARALLELOGRAM ( loc = ( 0, 0, 100), v1 = (100, 0, 0), v2 = ( 0, 0, -200), diff = ( 0, 1, 0), pattern = CHECK ) { ** several mirrored spheres ** } BEGIN_BBOX SPHERE ( loc = (50, 25, -40), radius = 15, diff = (0, 0, 0), mirror = (.9, .9, .9), dither = 0 ) END_BBOX BEGIN_BBOX QUADRATIC ( loc = (30, 0, -20), a = 1, b = 0, c = 1, d = 50, xmin = -10, xmax = 10, ymin = 0, ymax = 50, zmin = -10, zmax = 4, diff = (.7, 0, 0), dither = 4, reflect = .4, sreflect = 30 ) END_BBOX { ** An observer ** } OBSERVER ( loc = (40, 25, 30), lookat = (50, 0, -100) ) { ** Two lamps ** } LAMP ( loc = (65, 70, 20), radius = 5, dist = 45 ) LAMP ( loc = (30, 55, -10), radius = 5, dist = 25 ) SKY ( horiz = (0, 0, .55), zenith = (0, 0, .25), dither = 4 ) FOC_LENGTH = 50  $?D` Э@ l ?? ?,| 倁?5??߀ `o4,.|~?|4{ Introduction to the QRT Ray Tracer QRT is a ray tracing image rendering system that runs under a variety of operating systems. It has a free format input language with extensive error detection and reporting capabilities. This manual is divided into several sections as follows: QRT Language Reference: This is a quick reference guide to the QRT command language. It can suffice as a tutorial for those familiar with ray tracing programs, or function as a guide to QRT features not described in the User Manual. QRT User Manual: The User Manual is a more complete tutorial to the QRT system. It describes the basic commands and features of QRT, without listing every possible command or option. It would be a good starting place for beginners. QRT bugs and desired enhancements are listed at the end of this section. QRT Sample Programs These are actual QRT input files; they show suggested QRT indenting style and give examples of various features. Machine Specifics The QRT post processor is machine dependent. This section contains instructions on using it, as well as information on other machine dependent features. QRT Ray Tracer Page 1 Introduction References Howard Anton, Elementary Linear Algebra, Anton Textbooks, Inc., 1987 David F. Rogers, Procedural Elements for Computer Graphics, McGraw Hill, Inc., 1985 Eric Graham, Graphic Scene Simulations, Amiga World, CW Communications/Peterborough, Inc., May/June 1987 QRT Ray Tracer Page 2 Introduction Table of Contents Page I. QRT Language Reference Manual A. Introduction .......................... 1 B. Setup Commands ......................... 3 1. Sky ................................. 3 2. Ground .............................. 3 3. Focal Length ........................ 4 4. First Scan .......................... 4 5. Last Scan ........................... 5 6. File Name ........................... 5 7. Observer ............................ 6 8. Lamp ................................ 7 C. Primitive Types ........................ 8 1. Sphere .............................. 8 2. Parallelogram ....................... 9 3. Triangle ............................ 10 4. Ring ................................ 11 5. Quadratic ........................... 12 D. Patterned Surfaces ..................... 14 1. Pattern ............................. 14 2. Rectangle ........................... 16 3. Circle .............................. 17 E. Bounding Boxes ......................... 18 1. Begin Bbox .......................... 18 2. End Bbox ............................ 18 F. Instances .............................. 19 1. Begin Instances ..................... 19 2. End Instances ....................... 20 3. Instance Of ......................... 21 G. Setting Defaults ....................... 22 1. Default ............................. 22 QRT Ray Tracer Page 3 Introduction Table of Contents - Cont. Page II. QRT Users Manual A. Introduction .......................... 1 B. Comparison to Other Systems ............ 1 C. The World .............................. 2 D. Input Language ......................... 3 E. Illumination Model ..................... 4 F. Light Sources .......................... 6 G. Observer ............................... 7 H. Filenames .............................. 8 I. Sky and Ground ......................... 8 J. Bounding Boxes ......................... 9 K. Patterns ............................... 10 L. Instances .............................. 12 M. Defaults ............................... 13 N. Problems, Bugs ......................... 14 O. Possible Enhancements .................. 14 QRT Ray Tracer Page 4 Introduction QRT Language Reference INTRODUCTION This document is a reference guide to the QRT command language. One section is devoted to each QRT command. All parameters to commands are listed. More information on QRT can be found in the User's Manual and Technical Reference Manual. The following table lists syntax used in this document: TEXT MEANING EXAMPLE RANGE (x,y,z) floating pt vector (10, -20, 30.56) all (r,g,b) color value triple (0, .5, 1.00) 0 to 1 i an integer 12 0 to 127 n floating pt number -123.4 all p positive float 123.4 >0 string text string FOO_BAR ASCII Each section of this document contains one or more of the following sub-sections: QRT Ray Tracer Page 1 Language Reference Command Type : OPTIONAL or REQUIRED Parameters (required) : Lists required parameters Parameters (optional) : Lists optional parameters Optional Forms : Alternatives for parameter names. Ex: 'horiz' = 'horizon' means either can be used as a parameter name. Example : An example of the command (with all required parameters, but not necessarily all optional ones. Restrictions : Things not to do See also : Similar commands QRT has a free format input language, and parameters can be given in any order. QRT Ray Tracer Page 2 Language Reference QRT Misc. Setup Commands SKY: Command type: OPTIONAL The SKY command is used to specify the color of all rays that don't hit any other object. The sky is black by default. The sky color at the zenith (up), and horizon can be specified, and QRT will blend the colors in between as smoothly as possible. In addition, dithering can be specified. Parameters (optional): zenith = (r,g,b) : the color of the zenith horiz = (r,g,b) : the color at the horizon dither = i : dithering Optional forms: 'horiz' = 'horizon' Example: SKY ( horiz = (0, 0, .6), zenith = (0, 0, .4), dither = 5 ) See also : GROUND GROUND: Command type: OPTIONAL QRT does not have a specific ground command. Instead, use a large parallelogram with an optional pattern. PARALLELOGRAM ( loc = (-10000, 0, -10000), v1 = ( 20000, 0, 0), v2 = ( 0, 0, 20000), pattern = PATTERN_OF_CHOICE ) See also : PARALLELOGRAM QRT Ray Tracer Page 3 Language Reference FOC_LENGTH: Command type: OPTIONAL This sets the focal length of QRT's "camera". The default is 50, but it can be changed with this command. As with 35mm photography, larger numbers result in a 'telephoto' effect, and smaller numbers will result in wide angle (and distorted) views. Example: FOC_LENGTH = 70 Restrictions: 0 < FOC_LENGTH FIRST_SCAN: Command type: OPTIONAL By default, QRT generates an image with the same resolution as your screen. However, it can be instructed to create a partial image by using this command and LAST_SCAN. This feature may not be supported, depending on your QRT post processor. First scan should be less than the Y resolution of your screen. Example: FIRST_SCAN = 100 Restrictions: 0 < FIRST_SCAN < y-resolution See also : LAST_SCAN QRT Ray Tracer Page 4 Language Reference LAST_SCAN: Command type: OPTIONAL This command is similar to FIRST_SCAN. LAST_SCAN should be less than the Y resolution of your screen. Example: LAST_SCAN = 300 Restrictions: 0 < LAST_SCAN < y-resolution See also : FIRST_SCAN FILE_NAME: Command type: REQUIRED This is used to set the output file for QRT, which will be read by the post processor. The file name will be mapped to upper case. Some restrictions may arise from file naming conventions on specific computers. Example: FILE_NAME = QRT_IMAGE.RAW QRT Ray Tracer Page 5 Language Reference OBSERVER: Command type: REQUIRED OBSERVER tells QRT where the observer is located, and his direction of view. The view direction is specified by giving the coordinates he should look at. In addition, the observer UP vector may be given. This is, by default, (0,1,0). Parameters (required): loc = (x,y,z) : location of observer lookat = (x,y,z) : point of interest Parameters (optional): up = (x,y,z) : up vector Optional forms: 'loc' = 'pos' = 'location' = 'position' Example: OBSERVER ( loc = (0, 0, 0), lookat = (100, 0, 0) ) Restrictions: The observer cannot look in the direction of the up vector. 'lookat' cannot be equal to 'loc'. 'up' must have non-zero length. QRT Ray Tracer Page 6 Language Reference LAMP: Command type: OPTIONAL Lamps are sources of light in QRT. They can be placed anywhere, and emit any color and intensity of light. The ambient light value is the color of the lamp. The distance parameter is the minimum distance from the lamp that objects will be illuminated at full intensity. Most objects should be farther from the lamp than this value, or else they will be washed out. The radius parameter is ignored by this version of QRT, but may eventually be used to implement penumbral shadows. Parameters (required): loc = (x,y,z) : location of object dist = p : distance of max illumination Parameters (optional): amb = (r,g,b) : ambient light radius = p : radius Optional forms: 'loc' = 'pos' = 'location' = 'position' Example: LAMP ( loc = (12,34,56), radius = 123.4, ) QRT Ray Tracer Page 7 Language Reference QRT Primitive Types SPHERE: Command type: OPTIONAL SPHERE creates a sphere with a given location, radius, and surface characteristics. Parameters (required): loc = (x,y,z) : location of object radius = p : radius Parameters (optional): name = string : name for object pattern = string : pattern name to attach amb = (r,g,b) : ambient light diff = (r,g,b) : diffuse reflection trans = (r,g,b) : transmission mirror = (r,g,b) : mirror reflection fuzz = i : currently unused index = p : index of refraction dither = i : dithering sreflect= p : Phong specular refl. coeff. reflect = p : percent specular reflection Optional forms: 'loc' = 'pos' = 'location' = 'position' Example: SPHERE ( loc = (100, 100, 50.234), radius = 123.4, diff = (1.00, .20, .20) ) QRT Ray Tracer Page 8 Language Reference PARALLELOGRAM: Command type: OPTIONAL This command creates a parallelogram with a given location, shape, and surface characteristics. Two vectors define the shape of the parallelogram (they need not be orthogonal). Parameters (required): loc = (x,y,z) : location of object v1 = (x,y,z) : vector for side one v2 = (x,y,z) : vector for side two Parameters (optional): name = string : name for object pattern = string : pattern name to attach amb = (r,g,b) : ambient light diff = (r,g,b) : diffuse reflection trans = (r,g,b) : transmission mirror = (r,g,b) : mirror reflection fuzz = i : currently unused index = p : index of refraction dither = i : dithering sreflect= p : Phong specular refl. coeff. reflect = p : percent specular reflection Optional forms: 'loc' = 'pos' = 'location' = 'position' 'vect1' = 'v1' 'vect2' = 'v2' Example: PARALLELOGRAM ( loc = (10, 20, 50), vect1 = (20, 0, 0), vect2 = ( 0, 0, 50), diff = (0, .90, .20) ) QRT Ray Tracer Page 9 Language Reference TRIANGLE: Command type: OPTIONAL The TRIANGLE command (similar to PARALLELOGRAM) creates a triangle shape. Two vectors define the sides of the triangle. Parameters (required): loc = (x,y,z) : location of object v1 = (x,y,z) : vector for side one v2 = (x,y,z) : vector for side two Parameters (optional): name = string : name for object pattern = string : pattern name to attach amb = (r,g,b) : ambient light diff = (r,g,b) : diffuse reflection trans = (r,g,b) : transmission mirror = (r,g,b) : mirror reflection fuzz = i : currently unused index = p : index of refraction dither = i : dithering sreflect= p : Phong specular refl. coeff. reflect = p : percent specular reflection Optional forms: 'loc' = 'pos' = 'location' = 'position' 'vect1' = 'v1' 'vect2' = 'v2' Example: TRIANGLE ( loc = (52, 21, 50), vect1 = (10, 5, 0), vect2 = ( 0, 8, 20), diff = ( 0, 0, 0), mirror = ( 1, 1, 1) ); QRT Ray Tracer Page 10 Language Reference RING: Command type: OPTIONAL RING creates a ring (annulus), which is a circle with a smaller circle cut out of it. If the innder radius is zero, the ring will be a simple circle. Two vectors define the plane of the annulus, as with RING and PARALLELOGRAM. Parameters (required): loc = (x,y,z) : location of object v1 = (x,y,z) : vector one v2 = (x,y,z) : vector two rad_1 = p : inner radius rad_2 = p : outer radius Parameters (optional): name = string : name for object pattern = string : pattern name to attach amb = (r,g,b) : ambient light diff = (r,g,b) : diffuse reflection trans = (r,g,b) : transmission mirror = (r,g,b) : mirror reflection fuzz = i : currently unused index = p : index of refraction dither = i : dithering sreflect= p : Phong specular refl. coeff. reflect = p : percent specular reflection Optional forms: 'loc' = 'pos' = 'location' = 'position' 'vect1' = 'v1' 'vect2' = 'v2' Example: RING ( loc = (52, 21, 50), v1 = (10, 5, 0), v2 = ( 0, 8, 20), rad_1 = 10, rad_2 = 20, ) Restrictions: 0 < rad_1 < rad_2 QRT Ray Tracer Page 11 Language Reference QUADRATIC: Command type: OPTIONAL This command creates a quadratic surface given by the equation: 2 2 2 a x + b y + c z = d The coefficients a,b,c and d can be specified. This primitive can be used to create cylinders, cones, oblong spheroids, etc. Several min and max parameters specify the maximum extents of the surface. Parameters (required): loc = (x,y,z) : location of object a = n b = n c = n d = n xmax = n xmin = n ymax = n ymin = n zmax = n zmin = n Parameters (optional): name = string : name for object pattern = string : pattern name to attach amb = (r,g,b) : ambient light diff = (r,g,b) : diffuse reflection trans = (r,g,b) : transmission mirror = (r,g,b) : mirror reflection fuzz = i : currently unused index = p : index of refraction dither = i : dithering sreflect= p : Phong specular refl. coeff. reflect = p : percent specular reflection Optional forms: 'loc' = 'pos' = 'location' = 'position' QRT Ray Tracer Page 12 Language Reference Example: { ** vertical cylinder ** } QUADRATIC ( loc = (57, 21.2, 0), a = 1, b = 0, c = 1, d = 100 ); Restrictions: a != 0 or b != 0 or c != 0 QRT Ray Tracer Page 13 Language Reference Patterned Surfaces PATTERN: Command type: OPTIONAL This command creates a pattern definition which can be attached to any primitive object. A pattern is a two dimensional array than can be mapped to the surface of any primitive. Patterns must be defined before they are used. The PATTERN keyword serves two functions: to create a pattern definition, and to attach this definition to a primitive. The correct meaning is found by context: if the PATTERN keyword appears in a primitive definition followed by a name, it is assumed to refer to a predefined pattern. However, if PATTERN occurs outside any primitive definition, it is assumed to be a pattern definition. If all the pattern definitions are grouped at the top of the file, they will always be defined before they are used. A pattern is defined by giving it a size, a name, and one or more sub-pattern definitions. There are currently two types of sub-patterns: CIRCLE and RECTANGLE. The sub-pattern list can be of any length (although long lists will slow the ray tracer), and can use several of each type of sub-pattern primitive. The X and Y size parameters specify the size of the pattern; the pattern will be repeated over the surface of an object each X or Y units in the indicated direction. These size units are arbitrary, since the pattern can be given a new size when attached to an object. In each sub-pattern, any object surface characteristics can be specified. If a given ray hits this sub-pattern, the surface will be colored as indicated. If it does not hit any sub pattern in the list, the objects default surface characteristics will be used. The example below defines a red-checkered pattern. The background color of the object to which this pattern is attached will determine the color of the other checker box in the pattern. Parameters (required): name = string : name for pattern x_size = p : x size of pattern y_size = p : y size of pattern QRT Ray Tracer Page 14 Language Reference Parameters (optional): CIRCLE = circle_defn : CIRCLE sub-pattern - see reference for CIRCLE RECTANGLE = rect_defn : RECTANGLE sub-pattern - see reference for RECTANGLE Optional forms: 'loc' = 'pos' = 'location' = 'position' Example: PATTERN ( x_size = 16, y_size = 16, name = CHECK, RECTANGLE ( start_x = 0, start_y = 0, end_x = 8, end_y = 8, diff = (1.00, .20, .20); ) RECTANGLE ( start_x = 8, start_y = 8, end_x = 16, end_y = 16, diff = (1.00, .20, .20); ) ) This pattern can now be attached to an object as follows: SPHERE ( { ** sphere definition here ** } pattern = CHECK, xmult = .5, ymult = .5 ) Where the xmult and ymult parameters specify a new size for the pattern. Restrictions: At least one sub-pattern must appear. If two sub-patterns overlap in a region, the last one defined will be used in this region. See also : RECTANGLE, CIRCLE QRT Ray Tracer Page 15 Language Reference RECTANGLE: Command type: OPTIONAL RECTANGLE is a type of sub-pattern. Parameters (required): start_x = p : start position for rectangle start_y = p end_x = p : end position for rectangle end_y = p Parameters (optional): amb = (r,g,b) : ambient light diff = (r,g,b) : diffuse reflection trans = (r,g,b) : transmission mirror = (r,g,b) : mirror reflection fuzz = i : currently unused index = p : index of refraction dither = i : dithering sreflect= p : Phong specular refl. coeff. reflect = p : percent specular reflection Example: RECTANGLE ( start_x = 10, start_y = 12, end_x = 15, end_y = 15, diff = (1.00, .20, .20); ) Restrictions: RECTANGLE should be used only within a pattern definition. start_x < end_x start_y < end_y See also : PATTERN QRT Ray Tracer Page 16 Language Reference CIRCLE: Command type: OPTIONAL CIRCLE is a type of sub-pattern. Parameters (required): radius = p : radius Parameters (optional): amb = (r,g,b) : ambient light diff = (r,g,b) : diffuse reflection trans = (r,g,b) : transmission mirror = (r,g,b) : mirror reflection fuzz = i : currently unused index = p : index of refraction dither = i : dithering sreflect= p : Phong specular refl. coeff. reflect = p : percent specular reflection Example: CIRCLE ( radius = 5, diff = (1.00, .20, .20); ) Restrictions: CIRCLE should be used only within a pattern definition. See also : PATTERN QRT Ray Tracer Page 17 Language Reference Bounding Boxes BEGIN_BBOX: Command type: OPTIONAL The BEGIN_BBOX, END_BBOX commands form an enclosing bounding box around a group of objects (which may include other bounding boxes). An optional name must precede the bounding box begin statement. Bounding boxes cannot be given surface characteristics, since they are conceptual objects. Parameters (optional): name = string : name for box Example: name = SAMPLE_BBOX BEGIN_BBOX SPHERE (); { ** sphere here ** } TRIANGLE (); { ** triangle here ** } END_BBOX Restrictions: Must be paired with an END_BBOX statement. END_BBOX: Command type: OPTIONAL Companion command to BEGIN_BBOX. Example: name = SAMPLE_BBOX BEGIN_BBOX SPHERE (); { ** sphere here ** } TRIANGLE (); { ** triangle here ** } END_BBOX Restrictions: Must be paired with a BEGIN_BBOX statement. QRT Ray Tracer Page 18 Language Reference Instances BEGIN_INSTANCES: Command type: OPTIONAL Several primitives may be grouped into an 'instance', and this group can easily be placed in several locations. In addition, it can be resized. All instance definitions must be placed within the BEGIN_INSTANCES and END_INSTANCES statements; only one set of these statements is allowed. A group of objects must be placed in a BBOX, and this BBOX must be given a name. In the following example, three objects are defined: OBJECT_1, SUB_OBJECT_1, and OBJECT_2. Any inclusion of OBJECT_1 will implicitly include SUB_OBJECT_1, but not OBJECT_2. Any arbitrary object tree can be included. Referring to a node will include the sub-tree rooted at that node. Example: BEGIN_INSTANCES NAME = OBJECT_1 BEGIN_BBOX { ** some primitives here ** } NAME = SUB_OBJECT_1 BEGIN_BBOX { ** some more primitives here ** } END_BBOX END_BBOX NAME = OBJECT_2 BEGIN_BBOX { ** more primitives ** } END_BBOX END_INSTANCES Restrictions: There can be only one BEGIN_INSTANCES statement. See also: END_INSTANCES, INSTANCE_OF QRT Ray Tracer Page 19 Language Reference END_INSTANCES: Command type : OPTIONAL This command specifies the end of the instance tree. Any primitive after the END_INSTANCES statement are actually displayed as part of the image. Restrictions: There can be only one END_INSTANCES statement. See also: BEGIN_INSTANCES, INSTANCE_OF QRT Ray Tracer Page 20 Language Reference INSTANCE_OF: Command type: OPTIONAL After an instance tree is defined with the BEGIN_INSTANCES, END_INSTANCES command pair, parts of the tree can be referred to with the INSTANCE_OF statement. This actually puts the sub-tree in the image. You must specify the name of the root of the sub-tree. The original instance should be defined relative to (0,0,0), and the location parameter specifies where the new copy will go. Parameters (required): name = string : name of sub-tree loc = (x,y,z) : location for instance Parameters (optional): scale = (x,y,z) : scale factor Example: INSTANCE_OF ( name = OBJECT_1, loc = (100.23, 20.23, 45.678), scale = (.5, .5, .5) ) Optional forms: 'loc' = 'pos' = 'location' = 'position' Restrictions: All scale factor entries should be greater than zero. If the scale factor entries are unequal, some primitives in the instance will not be affected correctly. For example, a SPHERE will remain round if scaled by (1,2,3), not change to a QUADRATIC spheroid. See also : BEGIN_INSTANCES, END_INSTANCES QRT Ray Tracer Page 21 Language Reference Setting Defaults DEFAULT: Command type: OPTIONAL QRT sets certain defaults for the color attributes of a surrface. The standard default is for a white, non reflective, non shiny, non transparent surface with a medium amount of dithering. These defaults can be changed with the DEFAULT command. More than one DEFAULT command can be included, in which case each one affects all primitives after it and before the next DEFAULT or the end of the file. In addition to new surface characteristics, the NO_SHADOW keyword instructs QRT not to compute shadow information for the scene. This can decrease image generation time at the expense of image quality. Parameters (optional): no_shadow : QRT will not compute shadow information amb = (r,g,b) : ambient light diff = (r,g,b) : diffuse reflection trans = (r,g,b) : transmission mirror = (r,g,b) : mirror reflection fuzz = i : currently unused index = p : index of refraction dither = i : dithering sreflect = p : Phong specular refl. coeff. reflect = p : percent specular reflection Example: DEFAULT ( no_shadow, { ** no shadowing ** } diff = (1, 0, 0) { ** default = red objects ** } ) QRT Ray Tracer Page 22 Language Reference QRT Users Manual INTRODUCTION QRT (Quick Ray Tracer) is an easy to use image generation system that uses a ray tracing algorithm for image rendering. Versions exist for the Amiga personal computer and Data General MV10000. QRT overcomes many of the problems of other ray tracing packages, and is designed to operate nicely in a multi-tasking environment. COMPARISON TO OTHER SYSTEMS QRT was developed on the Amiga personal computer, so it will be compared to other Amiga ray tracers. There are, to my knowledge, five other Amiga ray tracers, each with its own strengths and weaknesses. I will describe each system briefly, and compare it to QRT. All the Amiga ray tracers can operate in HAM (4096 color) mode. RT: RT was the first ray tracer written for the Amiga, by Eric Graham. It will model a universe made of only spheres, a sky, and a checkered or solid ground. It is relatively fast, but not generally useful for realistic modeling because of the sphere limitation. The input language is cryptic, although some error checking is done. The system will only generate low resolution images. SILVER: I have never seen SILVER, so I cannot say much about this system. SCULPT-3D: This package incorporates an interactive editor for creating objects, and is capable of quickly generating a preliminary image of the scene by using hidden surface techniques. However, every primitive is made of polygons, and some primitives such as spheres require hundreds of polygons for a smooth texture, so the ray tracing is very slow. Also, the package takes a large amount of memory to run, and is prone to system crashes. Its chief feature is the ability to create arbitrary shaped objects using a series of triangles. Mirrored, dull, or shiny objects are supported. CLIGHT: This ray tracer also has an interactive editor, but produces very poor quality images. It is not capable of any patterning or reflection characteristics. QRT Ray Tracer Page 1 User Manual DBW: This is possibly the most complete ray tracer for the Amiga. It will support objects with arbitrary degrees of reflection and gloss, depth of field effects, some texturing, wavy surfaces, fractals, transparent surfaces, diffuse propagation of light from object to object, and 5 primitive types (sphere, triangle, parallelogram, fractal, and ring). The input language, however, is so cryptic as to be nearly incomprehensible, and if there is any error in the input file, it will crash the system. It is also painfully slow; some images take 16 to 24 hours to complete. QRT is meant to be a compromise between the fast, simple ray tracers and the slow powerful systems. It compares favorably in speed to RT, and in power to Sculpt-3d or DBW. It has a very friendly input language with extensive error checking. Here are some features of QRT: o Multiple primitive types, including user defined quadratic surfaces o Arbitrary levels of diffuse reflection, spectral reflection, transmission, ambient lighting, and gloss o User defined pattern information for objects o Bounding boxes for groups of objects o Shadows o Multiple light sources with different characteristics o Arbitrary Phong spectral reflection coefficients o Color dithering to increase the apparent number of colors o Easy to use, free format input language with error checking. Parameters are by keyword and may appear in any order. o Supports medium resolution (128k dots/screen) Each of these features of QRT will be discussed is greater detail in this document. THE QRT WORLD QRT constructs an image of the world by performing certain manipulations on an internal representation of a group of QRT Ray Tracer Page 2 User Manual objects. You must provide a description of these objects to QRT through the QRT input language. QRT writes a machine independent bitmap file which can be read by a computer specific post processor. The post processor either displays the image or converts it into the proper form for display by system programs. (See the Machine Dependent Information section of this manual for details). QRT is capable of dealing with 5 types of primitive objects: spheres, parallelograms, triangles, rings (annulus), and quadratic surfaces. The latter can be used to model cones, oblong spheroids, and other interesting surfaces. Each of these objects can have an arbitrary orientation in space, and arbitrary surface characteristics. QRT INPUT LANGUAGE The QRT input language is free format, in that commands may be placed anywhere on a line, and newlines may be placed at any point. This makes it easy to use indentation. Comments are also supported by surrounding text with curly braces '{' and '}'. Comments may span lines. Once a file with QRT commands is built (using any available text editor), qrt can be made to process these commands: QRT qrt.out SetTaskPriority 0 This set of commands is specific to the Commodore Amiga; see the Machine Dependent Information section of the manual for other operating systems. QRT will write a very large file, which may be anywhere from 400K to 4 megabytes depending on the specific computer display resolution. (See the Machine Dependent Information section of this manual for the exact file size). There should be at least enough room on your disk to accommodate this file. I recommend sending the output to a RAM disk, so that the physical disk does QRT Ray Tracer Page 3 User Manual not get used for 60 minutes while QRT computes the image. A typical QRT command to create a sphere using the default surface attributes would, be: SPHERE ( loc = (5,10,100) { this is a white sphere } radius = 12.5 ) For comparison, the sphere command for DBW looks like this: s 0 0 0 1 0 0 0 .2 .2 .2 .8 .8 .8 5 10 100 12.5 Or, in RT, the command would be: <1,1,1> 2 (5,10,100):1; The QRT input should be much easier to understand. If QRT sees an error in its input file, it will stop and print the line number of the offending line, along with a descriptive error message (ILLEGAL PARAMETER, etc). The QRT input language is not case sensitive. A full description of the language and a shorter, context free grammar can be found elsewhere in this manual. THE QRT ILLUMINATION MODEL Before meaningful images can be created, the QRT illumination model must be understood. The light that reaches the observer from each object is composed of several components: o Diffuse light - The "color" of the object o Ambient light - The color of the light that falls on the surface of the object if no lamps are shining on this spot. Note that this specifies the color of light, not the color of the object itself. o Reflected light - If the object acts as a mirror, some light is reflected. o Specular highlights - The "bright spots" of a shiny object viewed in a light. o Transmitted light - The object may transmit some of the light that strikes the back of the object (glass surfaces) QRT Ray Tracer Page 4 User Manual All of these light characteristics can be specified for any object. If none are specified, the current defaults are assumed. These defaults can be changed (see DEFAULT in Language Reference Guide). Most of these light characteristics deal with a percentage of light. For example, a light may reflect 80% of the red light that strikes it, 20% of the green, and 40% of the blue. This is the "color" of the object (diffuse light), and would be specified in QRT by the following syntax: diff = (.80, .20, .40) In QRT, 1.00 is 100%. The language is also free-format, so the above is equivalent to: diff = (.80, .20, .40 ) The commas between parameters are optional, but make the input easier to read. Semicolons can also be used. Ambient light is specified in a similar manner: amb = (.20, .20, .20) The ambient light values should be fairly small. Most of the light hitting the object comes from lamps, but some parts of the object may be in the shadow of another object. If no ambient light is specified, these shadows will appear totally black, which looks unrealistic. Ambient light will give the affect of a small amount of light hitting areas in a shadow, producing a more realistic looking image. Reflection is specified using the MIRROR attribute: mirror = (.90, .90, .90) If a true mirrored surface is desired, the mirror values should be fairly high. If one of the values has a higher value than the others, the mirror will appear red, green, or blue. Transmission is specified as follows: trans = (.80, .80, .80) index = 120 Note the addition of another parameter, the index of refraction. An explanation of the index of refraction for an object is beyond QRT Ray Tracer Page 5 User Manual the scope of this document - see a book on elementary optics for details. In addition, specular highlights are specified with two parameters: reflect = .50, sreflect = 45 "REFLECT" is the percentage of light reflected in the specular highlight, and sreflect is the Phong spectral reflection coefficient. Again, an explanation of the Phong coefficient is beyond the scope of this document; however, a higher value for the coefficient will result in smaller, tighter highlights for a more metallic looking object. Lower values of sreflect should be accompanied by lower values in reflect, and will produce duller looking surfaces, such as paper. QRT also accepts a dithering amount for each object: dither = 3 Dithering is a mechanism for simulating colors not available on the display by blending other colors. The default dithering coefficient is 3; it should be kept small. Values of 1 to 6 are good. Larger objects should employ more dithering, and mirrored or glass objects should have little or no dithering. QRT also accepts an attribute "FUZZ", but this is not used in the present implementation. In a future implementation of QRT, FUZZ will effect small, random perturbations of the normal vector at a given location on an object. This will simulate rough surfaces, matted glass, or imperfectly reflecting mirrors. All of the above light characteristics may be attached to any object. The default is for a white, non reflecting, non transmitting dull surface with an average amount of dithering. In addition, any of the above color information (which will be referred to from now on as COLORINFO) may also be attached to a pattern structure (see the PATTERN section of this document). LIGHT SOURCES Light sources in QRT are called "LAMPS". The lamp structure is simple: LAMP ( loc = (12, 34, 56), dist = 50, radius = 10 ) QRT Ray Tracer Page 6 User Manual The default is for a bright white lamp, but if you wish to change this, you can specify different values for the lamp's ambient light. The radius value is ignored by this implementation of QRT, but it must be supplied. In a future version, the radius may be used to implement penumbral shadows. I didn't include them in this version, since they take a very long time to compute, and don't add much to the image quality. The "dist" entry in the lamp structure specifies at what distance the light from the lamp is at full intensity. Beyond this value, the light will decrease in intensity. This value should be set so that the nearest object in the scene is slightly more than "dist" distance units from the lamp. This does not have to be exact. If objects are nearer than dist" units, they will be so bright that shading will not take place. Objects very far away will be dimly illuminated. By the way, QRT distance units are not tied to any real world unit. They can stand for feet, nautical miles, or furlongs, at your choice. THE OBSERVER After defining the world, you must tell QRT the position and orientation of the observer. This is done as follows: OBSERVER ( loc = (0, 10, 20), lookat = (5, 5, 120), up = (0, 1, 0) ) The x,y, and z are the location of the observer. The "lookat" variables give a location in space that the observer is looking at. Most ray tracers require you to give two angles for the observers view direction, but it is MUCH easier to know the location of an object or point in space you wish the observer to look at. This will be the center of your scene. The "up" variables define which direction is up. Usually, you will wish to use the values given above. QRT uses a right hand coordinate system: positive y is up, positive z is out of the screen, and positive x is to the right if you are looking in the negative z direction. The "up" parameter is optional, and if omitted, defaults to (0,1,0). QRT will generate an error message if no observer is defined. QRT Ray Tracer Page 7 User Manual OUTPUT FILENAME QRT places its output in a file, so you must give it the name of this file: FILE_NAME = outfile.tmp This file must observe any file naming restrictions of the operating system and computer you are using. See the Machine Dependent Information section of this manual for information on file naming restrictions. FOCAL LENGTH This is the focal length of the "lens" used by the observer. Think of it as a 35mm camera lens - higher numbers produce a telephoto effect, and smaller numbers are for wide angle lenses. Note that small numbers may produce some distortion of the image around the edges. FOC_LENGTH = 60 SCAN RANGE If you do not want QRT to produce a whole image, you can specify the first and last scan lines. The parameters should be less than the maximum Y resolution of your display. FIRST_SCAN = 100 LAST_SCAN = 300 This is useful for quickly generating part of an image. SKY AND GROUND QRT has facilities for generating the sky and ground. To define the sky, you must give it two colors - one for the sky overhead (zenith), and one for the horizon: SKY ( zenith = (.10, .2, .4), horiz = (.10, .2, .65), dither = 6 ) QRT Ray Tracer Page 8 User Manual This will produce a blue sky, with a brighter color near the horizon. (The sky need not be blue - it could be red or hot pink, or vary from red to green). QRT will smoothly blend the colors from the zenith to the horizon. Since the sky is so large, you may want to specify a greater amount of dithering to compensate for the displays color resolution limit. The SKY structure will also produce sky colors below the horizon; any ray that does not strike an object will strike the SKY. To fix this, define a ground. There is no dedicated GROUND command, since you can define a very large parallelogram with the same effect. You can make it brown with patches of green using a PATTERN, or checkered green and yellow in the classic ray-tracing ground pattern. BOUNDING BOXES QRT supports the use of bounding boxes to speed the ray tracing process. For images composed of only a few (1 to 3) objects, bounding boxes will not do much to increase speed. However, for images where there are groups of objects physically close to each other, they can greatly reduce execution times. A bounding box is a conceptual structure that encloses a group of objects. When the ray tracer is finding line/object intersections, if a line does not strike a bounding box, it cannot possibly strike any objects within that bounding box. This saves the ray tracer the trouble of checking intersections with all objects within the box. In the case where the ray DOES enter the box, some additional overhead is incurred; however, this cost is easily justified by reduced times for negative tests. Bounding boxes can occasionally be useful for complex objects, such as quadratic surfaces, when the object is fairly small. Since the time to find the intersection with a quadratic surface is large, but bounding box intersections are fast, the ray tracer can save time for all the negative tests. QRT Ray Tracer Page 9 User Manual Bounding boxes can contain other bounding boxes, in a recursive manner. This recursive structure defines an "object tree". There are two keywords that define the beginning and end of a bounding box: BEGIN_BBOX and END_BBOX. Here is an example: { ** QRT Code for a chessman ** } BEGIN_BBOX QUADRATIC ( { ** quadr defn ** } ) QUADRATIC ( { ** quadr defn 2 ** } ) SPHERE ( { ** sphere defn ** } ) BEGIN_BBOX SPHERE ( ) { ** two spheres ** } SPHERE ( ) END_BBOX END_BBOX This structure may be nested to an arbitrary level; if you had a closely spaced group of chessmen, you could enclose all of them with a bounding box. PATTERNS QRT permits user defined patterns which can be mapped to the surface of any object. A pattern is basically an organized method for changing an object's COLORINFO over the surface of that object. For example, a checkered surface can be created, or a surface given the appearance of brick or tile. The current patterning in QRT is limited, yet powerful enough to describe many common patterns. A pattern is composed of a series of sub-patterns. Each sub-pattern defines a region on the surface of an object which will contain a given COLORINFO. These regions are presently limited to rectangles, but this may be expanded in a future implementation of QRT. QRT Ray Tracer Page 10 User Manual A pattern can be defined once, and used for many objects. For example, a brick pattern might be defined: PATTERN ( name = BRICK, { ** other pattern info here ** } ) SPHERE ( { ** sphere definition ** } pattern = BRICK ) PARALLELOGRAM ( { ** parallelogram definition ** } pattern = BRICK ) This example ignores what is actually in the pattern definition to demonstrate how patterns are attached to objects. A pattern must be defined before it can be used. It is given a name, such as BRICK, and any object can specify this pattern with "PATTERN = BRICK". There are no practical restrictions on the length of pattern names (if your computer has 1 megabyte of ram, you cannot have a pattern name longer than 1 million characters). Multiple patterns may be defined at the top of an input file, and used for any object in the file. What exactly makes up a pattern, you ask? A pattern can be viewed as a rectangle that is repeated over the surface of an object. If the pattern size is 10 x 10, and you have an object (say a parallelogram) that is 50 x 50, the pattern will repeat 5 times in each direction. Within this repeating rectangle, sub patterns can be defined. A sub-pattern is a rectangle or circle within the pattern rectangle with a certain COLORINFO. Any number of these sub-patterns can be created within one pattern definition. To create a brick wall, you might define several sub-patterns, each with a slightly different color of red or brown. The sub patterns need not cover the entire pattern rectangle; if they do not, the COLORINFO you defined for the object is used instead of the pattern COLORINFO. If you defined sub-patterns for bricks, the area not covered would be mortar, and the objects COLORINFO would define the color of the mortar. An actual brick pattern is given in appendix C. The proper use of patterns can be very effective in producing realistic looking scenes. However, complicated patterns will slow image creation, so it is recommended that you first display test scenes with no patterns, and then add pattern information when the scene is right. QRT Ray Tracer Page 11 User Manual INSTANCES Often, several copies of a complex object must be created. Specifying their component primitives each time would be difficult. There is a solution to both these problems: INSTANCES. An INSTANCE is a method by which several primitives (actually, an arbitrary object tree) can be grouped and given a name. Copies of these objects may be easily created with one command. Here is an example of an instance definition. BEGIN_INSTANCES NAME = object1 BEGIN_BBOX { ** a bunch of primitives here ** } END_BBOX NAME = object2 BEGIN_BBOX { ** a bunch more primitives here ** } NAME = spheres BEGIN_BBOX SPHERE ( ) { ** two sphere definitions ** } SPHERE ( ) END_BBOX END_BBOX END_INSTANCES There can be only one of these instance definitions, and it must appear before any instances are used. However, any arbitrary object tree can appear within the begin/end instance statements. Several instances are now available for use. For example: INSTANCE_OF ( name = object1, loc = (100, 10, 20), ) INSTANCE_OF ( name = spheres, loc = (12.3, 24.5, 999) ) This example shows that any named portion of the object subtree can function as an instance (the "spheres" object is at a lower level than the "object1' object). The "offset" parameters are required. They specify a new position for the instance (offset from the origin). In the instance definition segment, all objects are defined relative to 0,0,0. They can then be moved in the INSTANCE_OF statement with the offset command. QRT Ray Tracer Page 12 User Manual In addition, the instance can be given a new size: INSTANCE_OF ( name = object2, loc = (200, 100, 50), scale = (1.5, 2.0, .25) ) The scale factors are optional, and are given the default of 1. The instance will be resized by the indicated amount in each of the directions. Note that there are some restrictions to this: if spheres are given a different scale factor in each direction, they will remain spheres (not change to QUADRATIC types). The new radius will be the old radius scaled by the smallest of the scale factors. DEFAULTS Each object in QRT is given certain default surface light characteristics (see the section on surface characteristics). If these defaults are not suitable, they can be changed with the DEFAULT command: DEFAULT ( diff = (1.00, .1, .1) no_shadow ) This will make all future objects red unless specified otherwise. More than one default command can be used in a file: each one affects all the objects created after it, but before the next default command. Any light characteristics can be changed (MIRROR, DITHER, etc). In addition, the keyword "no_shadow" can be included (as above). Ordinarily, QRT computes shadow information for all objects. This takes a lot of time, especially for scenes composed of many objects and many lamps. The "no_shadow" command causes QRT to bypass the shadow routines. This will result in a much faster image generation time, but the picture will not look as realistic. QRT Ray Tracer Page 13 User Manual PROBLEMS WITH QRT There are several limitations in this version of QRT: o Patterning does not work well with some quadratic surfaces. This is a problem with the 3d to 2d mapping function used for quadratics. o Patterns do not support circular or non-orthogonal rectangular sub-patterns. This would slow pattern processing but increase the utility of patterns. o User defined texturing is not implemented - all objects in QRT appear smooth. I have some ideas on how to add textures to objects, but these have not been tested and are not incorporated into this version of QRT. o Some rounded objects such as spheres appear distorted if they are near the edge of the image. This is a bug in the routine that creates a ray for a given pixel position. FUTURE ENHANCEMENTS TO QRT The following are some things I'd like to add to QRT: o Enhanced patterning capability. This could include arbitrary polygonal patterns, and non-orthogonal shapes. Also, the ability to use enumerated (bit-mapped) patterns as well as analytic patterns would be useful. o Anti-dithering routines. These routines are very computationally expensive (they can increase image generation times by a factor of 3 to 5), so they were not included in this version. o Penumbral shadows. This is also very computationally expensive for a minimal utility level, so I didn't bother to include this feature. o Fractal generation. Fractals are, again, computationally expensive, but some things, such as mountains, cannot be modeled with a ray tracer any other way. o Wavy surfaces. This is useful for modeling water, rippled mirrors, etc. I know how to do it, I just didn't have time to add it yet. It would be nice if the waves were user definable in amplitude and x and y wavelength. Wavy surfaces are very similar in implementation to textures. QRT Ray Tracer Page 14 User Manual o Snowy surfaces. This is an idea from DBW, which adds snow to a surface depending on its slope and altitude. o Interpolated normal surfaces. This is a mechanism to model arbitrary curved surfaces by using a polygonal approximation to the surface, and interpolating the normal vector between surfaces to avoid angular looking surfaces. o Image plane object lists. This is a technique for increasing the speed for positive line/object intersection test. (Bounding boxes increase speed for negative line/object intersection tests). o Heuristics for faster completion of images using area coherence. o An interactive editor. This is another large scale project in itself, and I can't forsee having time to do it for a long time, but it would be useful. The editor would display a preliminary image of the scene, and when the user had placed objects to his satisfaction, it would write a QRT input file and call QRT as a background task. There are certain problems here - for instance, how do you quickly generate the outline of a user defined quadratic that can take many forms (cone, spheroid, etc)? And how can the user easily specify the object tree structure (bounding boxes) with an interactive editor? QRT Ray Tracer Page 15 User Manual Addendum to QRT Version 1.2 The following are changes to QRT made since version 1.1 Additions and Enhancements Polygon Primitive Added to Pattern Command Patterns in version 1.1 could include only rectangles and circles; a new polygon command vastly increases the utility of the pattern command. Polygons may have any number of points (at least three), but a large number of points will increase the time taken for the containment test, and hence the time to complete the image. A fast containment algorithm is used, but it is still linear in the number of points in the polygon. A practical limit might be 30 to 40 points (split amoung all polygons in the pattern). In order for the polygon command to operate correctly, the first point must be the same as the last point. ex: PATTERN ( name = TRIANGLE_TEST x_size = 6 y_size = 6 POLYGON ( POINT = (0 , 0) POINT = (5 , 0) POINT = (2.5,5) POINT = (0 , 0) { same as 1st pt } { ** any number of additional points could be added here ** } ) { ** more polygons or other pattern primitives could come here ** } ) Polygon primitives may be mixed in a pattern with either circles or rectangles. If a rectangle is desired, the rectangle primitive is faster than a four point polygon. QRT Ray Tracer Page 1 Addendum to 1.2 Bug Report One bug found in version 1.1 has been fixed. The shadowing routine in version 1.1 did not operate quite correctly: a point was (incorrectly) computed as being in a shadow if a line drawn from the point to the lamp intersected an object even on the other side of the lamp. The test should have looked at objects only on the same side of the lamp as the point in question. This was giving extra shadows in strange places, and has been fixed in this version. Planned extentions for 1.3 Version 1.3 will probably include a better lexical analyser that can cope with nested comments and possibly #include files. The #include directive would enable one to amass a file of often used patterns, for example. The parser is plenty fast enough (between 2 and 3 hundred lines per second from RAM:) to make this practical. Hints, Tips, etc. Try using a general purpose macro processor to pre-process QRT input. #define BRICK_RED (.8, .2, .1), for example, or use parameter macros to #define CYLENDER (height, diameter) to elimiate the need for entering quadratic coeficcients. (I may add CYLENDER, CONE, and SPHEREOID commands to a future version of QRT. They would simply map into the current quadratic primitive, but make QRT easier to use). QRT Ray Tracer Page 2 Addendum to 1.2 Addendum to QRT Version 1.3 The following are changes to QRT made since version 1.2 Additions and Enhancements 'Remove' Command Added The 'REMOVE' command was added to allow sections of a planar primitive to be removed. This makes it much easier to create flat objects that are not shaped like QRT's planar primitives. For example, I had a QRT input file which created the image of a grand piano. The top of the piano, because of its complex shape, initially was created from 11 planar primitives. Now, it is only 1 PARALLELOGRAM primitive, and a section of the parallelogram is removed to create the shape of a piano top. Before the REMOVE command can be used, a pattern must be created using any of QRT's pattern primitives (the piano uses a polygon). This pattern need not be given any surface characteristics - it simply defines the region to be removed from the planar primitive. The pattern is attached to the primitive in exactly the same way as a normal pattern, except that the REMOVE command is used instead of the PATTERN command: PARALLELOGRAM ( loc = (0, 0, 0) v1 = (10, 0, 0) v2 = (0, 0, 10) diff = (1, 0, 0) remove = SECTION_TO_REMOVE pattern = ANY_PATTERN ) This example shows that the PATTERN command can be used on the same primive as the REMOVE command. Several things should be noted about the REMOVE command. First, the pattern defines the sections to remove, not the sections which will remain. In the piano example, the pattern mapped all of the parallelogram except the part that composed the actual piano top. Second, even though QRT Ray Tracer Page 1 Addendum to 1.3 the remove command can be used with the curved surface primitives (SPHERE, QUADRATIC), the results will not be quite right. To use the sphere as an example, the front surface of the sphere would have the correct pattern removed from it, but the back surface of the sphere would be completely gone. This is because the SPHERE intersect routine ignores completely the back surface of the sphere. I will probably fix this in a future version. Nested Comments Comments may now be nested. This makes it easier to comment out blocks of QRT code which themselves contain comments. Planned extentions for 1.4 I had planned to create an "#INCLUDE" command for version 1.3, but instead I worked on the REMOVE command (it seemed more important). #INCLUDE will probably be coming next time. QRT Ray Tracer Page 2 Addendum to 1.3 Addendum to QRT Version 1.4 The following are changes to QRT made since version 1.3 Additions and Enhancements Transmission Transmission of light through surfaces now works, allowing one to model glass surfaces. Some additions to and changes from the original grammar were necessary to provide the desired functionality. A new keyword, "DENSITY", has been added, and the function of the old "TRANS" keyword has been changed. Also, a "THRESHOLD" parameter has been added to the default structure. Since transmission is a complex operation, this entire Addendum will discuss aspects of modeling glass surfaces. The DENSITY keyword It was my previous intent that the TRANS keyword would specify the percent transmission of light though the surface. After thinking a little more about the nature of light transmission, it was clear that this wasn't adequate. The amount of light transmitted depends not only on a fixed coefficient of the surface, but on the thickness of the surface. For example, a hollow glass sphere will appear darker (transmit less light) near the edges, where the glass is thickest. To account for this effect, the "DENSITY" keyword was added. Density specifies what percentage of transmitted light will be removed per unit distance travelled though the object. For example, the following density attribute would remove 2 percent of all light per unit distance: DENSITY = (.02, .02, .02); If a sphere, at its widest point, was 10 units thick, 20 percent of the light would be removed. Near the edge of the sphere, less light would be removed. Since density is a function of distance, the same density factor will have different effects on objects of different sizes. To remove the same percentage of light from an object half as thick, double the density factor. QRT Ray Tracer Page 1 Addendum to 1.4 Shadows from Transparent Surfaces The old "TRANS" keyword still exists, but it performs a different function. It does not affect the appearance of the object, but rather, the attenuation of light passed through the surface. QRT knows how glass surfaces bend light, and so it can model the magnifying effects of looking through curved glass, etc. But for computing shadows, it cannot properly bend the light from lamps. This means that you can model lenses that the observer looks through, but not lenses used to focus light. In order to provide some attenuation effects, use "TRANS" to tell QRT how much light is passed through the surface. This information is ONLY used for computing shadows. For example, blue glass should cast a blue shadow. Use something similar to: TRANS = (0, 0, .7) to cast a blue shadow (this lets 70 percent of the blue light pass). Note that by using strange combinations of DENSITY and TRANS, you can model illogical objects which appear, for example, blue, but cast a red shadow. These shadows will be entirely of one intensity, and will not vary with the thickness of the glass. Using MIRROR with Transparent surfaces Glass surfaces not only refract light, but also reflect a percentage of it. This means that to realistically model glass, the glass should reflect a small percentage of the light. Try starting with 20 to 25 percent reflection. Note that all glass objects reflect light from both the outside and the inside surfaces of the glass. Index of Refraction The index of refraction for an object governs how much the light is bent upon entering or exiting the object. A higher index will bend the light more. The index of refraction of air is 1.00, and for glass is roughly 1.33. Some substances, such as diamond, have a higher index. Modeling Hollow Objects When designing the QRT transmission routines, I wanted to be able to model both solid glass and hollow glass objects. To understand how this is done, it is necessary to understand a little about how QRT's transmission model works. QRT Ray Tracer Page 2 Addendum to 1.4 A ray, after leaving the observer, has two states: either it is inside a glass object, or it is outside. The ray starts out outside. When it first encounters a glass surface, it is bent, and its state is toggled from OUTSIDE to INSIDE. It continues on until encountering another surface, whereupon it is bent again, and its state is once more toggled. This has several implications for modeling glass. The first is that ALL glass surfaces MUST have two sides - that is, once the ray enters the glass, there must be no way for it to exit without again passing through a surface. The second is that a ray must go from glass to air, or air to glass, but not from glass with index of refraction A to glass with index of refraction B; i.e, the two glass surfaces cannot touch each other, even though they may be placed very close together. As an example of how this works, consider a solid glass sphere. The ray encounters the sphere, and is bent (in this case, towards the normal vector). QRT now remembers that the ray is INSIDE a glass surface. The ray continues on until it hits the back side of the sphere, whereupon it is bent (away from the normal vector), and its state is toggled to OUTSIDE. In summary, the INSIDE/OUTSIDE flag tells QRT how to bend the ray. Consider now the case of a hollow glass sphere. This is modeled using two concentric spheres, one with a smaller radius. The ray will first hit the outside sphere, be bent, and have its state toggled to INSIDE. There are now two possible cases. First, the ray may miss the inside sphere, in which case the simulation proceeds as in the above paragraph. Second, it may hit the inside sphere. In this case, it is bent, and its state is toggled to OUTSIDE. The ray is now considered to be back in air, so that the inside sphere has modeled the hollow portion of the glass. In a similar manner, the ray reaches the other side of the inside sphere, enters the glass again, and finally leaves the outside sphere. Note that even though the inside sphere is thought of as the "air" in the center of the object, it MUST have the same index of refraction as the outside sphere. This is necessary so that QRT can correctly bend the light when it exits the glass. Chromatic Aberration In QRT, all rays, regardless of color, are refracted exactly the same. This is contrast to the real world, in which the amount the light is bent depends on its wavelength. This appears, so far as I can tell, to be a bug in the real world, and I saw no reason to include it in a ray tracer. QRT Ray Tracer Page 3 Addendum to 1.4 Threshold attribute A new keyword, THRESHOLD, has been added to the default structure. In previous versions of QRT, there was a mechanism for detecting infinite recursion provided that objects reflected less that 100 percent of the light reaching them. QRT stopped the recursion when the intensity of the light reached 1 percent of its original value. When transmission was added, I made this value adjustable. With glass objects, both surfaces reflect light, and if QRT waits until the 1 percent mark before stopping recursion, the time necessary to complete the image is greatly increased with little or no increase in image quality. The default is now 10 percent, and is changeable as follows: DEFAULT ( threshold = .05 ) This would stop recursion when the intensity reaches 5 percent of the original value. An added effect is that if the objects surface reflects (or transmits) less than the threshold amount of light, the reflection or transmission will be ignored completely. Affect of Glass on Speed Unfortunately, the presence of any glass objects will slow the ray tracer down. This effect may range from barely noticeable, for few, small objects to excruciatingly miserably slow, for many, large objects. Sorry, there is nothing I can do to speed it up - the 68000 simply won't go any faster. The reason for the slowdown is that for every ray/glass surface intersection, TWO additional rays must be sent out (as opposed to one, for reflection). And remember, each ray intersects a glass object twice: once on the way in, and once on the way out. Also, the two generated rays may intersect the glass, as well. You can see how this process could get very slow. Notes, etc. Watch for control characters in the QRT input file. I had accidentally imbedded an invisible control character in a file I was working on, and the QRT parser refused to parse the file. After closely checking the file, I began to look for a bug in the parser code. Finally, I discovered the control character, but only after spending 1 hour checking the parser code. The QRT parser will generate a SYNTAX ERROR, CODE 207 QRT Ray Tracer Page 4 Addendum to 1.4 upon encountering any special characters in the input file. Since transmission involves heavy recursion, don't forget to set the default stack size to something larger than the default 4000 bytes. A stack size of 40000 to 50000 bytes seems safe for most images. Notes on Multitasking The following discussion is not at all QRT specific, but it is here just to clear up some confusion many people have about multitasking. There has been some discussion to the effect that multitasking is either: a) not useful at all (just ask Apple/Mac type folks), or b) useful only as a mechanism for loading more than one interactive program at once and switching between them (said/believed by many Amiga folks). While for some people this may be true, for anyone who runs ray tracers, mandelbrot set program, or down/uploads programs from a BBS, multitasking holds great benefits. Try this: run QRT on the Amiga, in the background, with a low task priority. Now forget about it, and do whatever else you wanted to do (run a text editor/spreadsheet/terminal prog, etc). Now, run a ray tracer on an IBM or MAC II, and you'll very quickly tire of staring at the machine while it thinks. The key to getting the maximum benefit from multitasking, (and this is what many people don't realize), is being able to specify task priorities. Non interactive, number crunching tasks should be given a low priority (try -5). This will give any interactive tasks all the CPU time they want. By lowering the priority of the background tasks, the editor or spreadsheet or compiler will run just as fast as it would have without the background task. If the background task is run with the SAME priority as the foreground task (editor, etc), the foreground task will run noticeably slower. Don't ever run a task such as a ray tracer with a HIGHER priority as the CLI or interactive task. Doing so will cause the interactive task to stop dead until the ray tracer has finished. One more note on multitasking for programmers: do try to write nice, friendly programs that give up the CPU when they don't need it. Number crunching programs typically need all the CPU time they can get; however, interactive programs do not. If you wish to wait, use the timer device, not a for loop. This has two advantages: 1) it doesn't hog the CPU, and 2) the elapsed time will be relatively independent of how busy the CPU is. There is nothing more annoying than some little calculator or notepad program that wants ALL the CPU time, causing low priority tasks to stop. Even some commercial QRT Ray Tracer Page 5 Addendum to 1.4 software houses have committed this fault (witness some popular paint programs or terminal programs). OK, enough preaching about multitasking. I hope this has cleared up the issue for anyone who was confused. QRT Ray Tracer Page 6 Addendum to 1.4 ^=z}We4-'ShL0ץr+f o$#;8OaW'?5ӌmvHB9phdJf` $o * ЪЪм// Bg?<JNAO /<~?<HNA\.j p a BgNA޼B?<NNTAC AC "pәQC pәQC pәQ?<NNTJ@gA P0ACBBBBC a pa z?<NAT<AA&: \*.R AWA: \*.S PUABB(AC0<?r46<JAg($HBJg n $ R` $SBT8<1@ RQA RAQA~><<:0@@2AA01@~0EE1E~1@RFQA |C A C ACK6 M0 C aAB0(fpaZ/:BT?<INA\BgNAKMJgJf %\fR(MfBgHz?<=NAPA0jpap*.RAWBJ@krA C E G f `SSfA0<OBBBBBBQpaSfpaRA@@ paC v gC ^A >r$X4QA A Au2<TpBX0 QE Bj aACrfaJk: g`BB@fJf8` f Jf4rR`<0k @`pa?:?<>NAX`&0 @@m0<@ Am2<44I@ T"HBR5|Bj @@g|@D@H4HCH@ 5@ Ag|DAI5AC((0<BBBBQBgI,Aoz>SG<faJk0faJk"faJkJFgSFQ`pa g`8Ak"0<?BBBBQAoChEk<SF``@``BAAA82ARrQ`<4|JB@BAdAAd8d2ARrBQ`G<4BBBG B@BBBE4B3 BAdAAd8d2ARrREQ`*AnCg~EiG >Ip/ KSG6<8:+<+BBk6<B@@@@JDjBD`Co8JEjBE`Co:JFjBF`Co<0@@2 82 2@RrAt2It2ItDEFK25@45P65`kkk K05@[05P[05`[K05@k05Pk05`kK6@7uP7u`8:<QI*_AlCfV:,<SF0@00REQAlBE<SFFFa`r6Cgj000p0oXC`8$00Cg,p@oYD`!@0XCCgp0lXC`!0@YDCf!0DlH<YFaLxFl:XEaNuAl4Cq0Ee0,@0l</ I=`CSF/>T<F?<2`OGp/ zJFg0qg~Qz&W0JqkQ`3``&Wv8<>:MNG???::1P<>MNGWooGFDl84Q\:`RX> 5p,QJ(_C<Ed QA">pBCBDBEBF2,`r4 S T U VSGgQHxPQ` klmnHxRW0lmpAo0<%O2JAj2<46AABAp0Q?:T?<>NAX?<NNT l:Hz?<&NN\?<?<NMXHz?<&NN\pa M C aA;`0(gJgJf %\fR(MfBgHz?<NAXJGg`8pK2JUg U(f,HpM"//<(?:?<?NAO Jk:*NLNuAf@|I@K ACEMGmf><BJgNNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqNqACE """"""""$$$$$$$$QACE """"""""$$$$$$$$ACEI뵠NqNq """"""""$$$$$$$$FNu  $Imv|z|z^vz~z`vD0D:DzDDD Z4 'bF}6QF}[0][ Raw2Spec Version 1.0 | Robert Barnhardt|][Yeah, OK][0][Dithering? |][Yes|No][0][ Method of Dithering: |][Simple|4 x 4|Error][0][Use Register 15? |][Yes|No][0][ Save This Picture? |][Yes|Again|No][0][ Thanks for using | Raw2Spec.|][Yeah, right.][0][ Raw2Spec Version 1.0 | Robert Barnhardt|][Yeah, OK][0][Dithering? |][Yes|No][0][ Method Of Dithering: |][Simple|4 x 4|Error][0][Use Register 15? |][Yes|No][0][ Save This Picture? |][Yes|Again|No][0][ Thanks for using | Raw2Spec.|][Yeah, right.][1][Unable to open|input file.][Too bad][1][Error occured while|reading input file.][Too bad][1][Input file terminated|unexpectedly.][Go on|Give up][1][Unable to create|output file.][Too bad][1][Error occured while|writing output file.][Too bad][1][Not enough memory,|remove any ACCs or|ramdisks.][Too bad] [4s`ҥZD=wZVѼque+vl}#JzscK(QfAWs+޶u'Ǡ\0H% ZW8a?kà;5uz46 OZ,D{5ݳ{T|l֦xL]S ʔz9vE#KqKZLe<_l;T?, E`LŊ>7?7+'f>[sAHH$ r=X]>MWˏ"EK&J %jna6ڛϹgynM&:}/13ÊUuK^Y##q!z8Czu+yLn@p#Ƣln7ް<@W{ ** QRT image spec file for a baby grand piano with wood grain. This image requires QRT version 1.3 to run. { this tests nested comments { } - new to 1.3 } - Steve Koren 16 Jun 88 ** } FILE_NAME = piano.raw PATTERN ( name = PIANO_LEG_CUTOUT { ** trapezoid shape for leg ** } x_size = 10 y_size = 44 POLYGON ( point = (0, 0) point = (2, 0) point = (0, 44) point = (0, 0) ) POLYGON ( point = (8, 0) point = (10, 0) point = (10, 44) point = (8, 0) ) ) BEGIN_INSTANCES NAME = PIANO_LEG { ** define an instance for this so we ** } BEGIN_BBOX { ** don't have to keep repeating the ** } { ** parallelogram definitions ** } PARALLELOGRAM ( diff = (.5, .1, .1) loc = (2, 0, 0) v1 = (0, 0, 10) v2 = (-2, 44, 0) remove = PIANO_LEG_CUTOUT ) PARALLELOGRAM ( diff = (.5, .1, .1) loc = (0, 0, 2) v1 = (10, 0, 0) v2 = (0, 44, -2) remove = PIANO_LEG_CUTOUT ) END_BBOX END_INSTANCES PATTERN ( name = STRINGS, x_size = 6, y_size = 5, RECTANGLE ( diff = (.9, .9, .9) start_x = 0, end_x = 2.5 start_y = 0 end_y = 5 ) ) PATTERN ( name = WOOD_GRAIN, x_size = 10, y_size = 11, POLYGON ( diff = (.43, .1, .1) point = (1, 0) point = (1.2, 1) point = (1.4, 3) point = (1.4, 4) point = (.8, 5) point = (.5, 6) point = (.2, 7) point = (.2, 8.4) point = (.8, 10) point = (1, 11) point = (2, 11) point = (1, 9) point = (.6, 8) point = (.7, 7) point = (1.4, 6) point = (1.8, 5) point = (1.8, 3) point = (2.2, 2) point = (2.2, 1) point = (2, 0) point = (1, 0) ) POLYGON ( diff = (.44, .22, .1) point = (1.8, 8) point = (2, 7) point = (2.5, 6) point = (2.8, 5.2) point = (3, 5) point = (3.4, 5.4) point = (3.4, 6) point = (3.3, 7) point = (3.8, 8) point = (3.8, 9) point = (3.4, 9.8) point = (3, 10) point = (2.4, 9.8) point = (2, 9) point = (1.8, 8) ) POLYGON ( diff = (.55, .41, .1) point = (2.8, 7.2) point = (3.1, 8) point = (3.1, 9) point = (3, 9.1) point = (2.9, 9) point = (2.6, 8.6) point = (2.6, 8) point = (2.8, 7.2) ) POLYGON ( diff = (.44, .22, .1) point = (4, 0) point = (3.6, .6) point = (3, 2) point = (3.6, 3) point = (3.8, 4.6) point = (4.2, 5) point = (4.8, 8) point = (3.6, 9) point = (4, 11) point = (5, 11) point = (5.2, 10) point = (5.2, 9) point = (5.6, 7.5) point = (5.4, 6) point = (4, 4) point = (4, 2) point = (5, 0) point = (4, 0) ) POLYGON ( diff = (.44, .27, .1) point = (6, 0) point = (6, .8) point = (5.4, 2) point = (5.4, 3) point = (5.8, 5) point = (6, 6) point = (6.1, 8) point = (6, 11) point = (6.4, 11) point = (6.6, 9) point = (6.6, 8) point = (6.8, 7) point = (6.4, 5) point = (6.4, 4) point = (6, 3) point = (6.4, 1) point = (6.2, 0) point = (6, 0) ) POLYGON ( diff = (.45, .2, .1) point = (7.2, 0) point = (7.2, 1) point = (6.8, 2.2) point = (7, 3.2) point = (7.4, 3) point = (7.8, 1) point = (7.8, 0) point = (7.2, 0) ) POLYGON ( diff = (.45, .2, .1) point = (7.2, 11) point = (7.4, 9) point = (7.2, 8.6) point = (7.2, 7.6) point = (7.4, 7.6) point = (7.9, 10) point = (7.8, 11) point = (7.2, 11) ) POLYGON ( diff = (.40, .14, .1) point = (8.4, 0) point = (8.6, 3) point = (8.6, 4) point = (8, 7) point = (8.2, 8) point = (8.2, 10) point = (8.4, 11) point = (9, 11) point = (8.9, 8) point = (9.4, 6) point = (9.4, 4.4) point = (9, 2.2) point = (9, 0) ) ) PATTERN ( name = PIANO_TOP, x_size = 108, y_size = 85, POLYGON ( point = (0, 65) { ** This is the part of the } point = (3, 74) { piano top to remove from } point = (8, 78) { a parallelogram ** } point = (14, 81) point = (20, 83) point = (42, 83) point = (50, 80) point = (56, 76) point = (60, 70) point = (63, 60) point = (68, 48) point = (80, 37) point = (90, 30) point = (100, 25) point = (106, 20) point = (108, 15) point = (108, 85) point = (0, 85) point = (0, 65) ) ) PATTERN ( name = KEYBOARD, x_size = 14, y_size = 8, RECTANGLE ( { ** C natural ** } start_x = 0, start_y = 0 end_x = 1.9 end_y = 8 diff = (.9, .9, .9) amb = (.4, .4, .4) ) RECTANGLE ( { ** D natural ** } start_x = 2, start_y = 0 end_x = 3.9 end_y = 8 diff = (.9, .9, .9) amb = (.4, .4, .4) ) RECTANGLE ( { ** E natural ** } start_x = 4, start_y = 0 end_x = 5.9 end_y = 8 diff = (.9, .9, .9) amb = (.4, .4, .4) ) RECTANGLE ( { ** F natural ** } start_x = 6, start_y = 0 end_x = 7.9 end_y = 8 diff = (.9, .9, .9) amb = (.4, .4, .4) ) RECTANGLE ( { ** G natural ** } start_x = 8, start_y = 0 end_x = 9.9 end_y = 8 diff = (.9, .9, .9) amb = (.4, .4, .4) ) RECTANGLE ( { ** A natural ** } start_x = 10, start_y = 0 end_x = 11.9 end_y = 8 diff = (.9, .9, .9) amb = (.4, .4, .4) ) RECTANGLE ( { ** B natural ** } start_x = 12, start_y = 0 end_x = 13.9 end_y = 8 diff = (.9, .9, .9) amb = (.4, .4, .4) ) RECTANGLE ( { ** C sharp ** } start_x = 1, start_y = 3 end_x = 1.9, end_y = 8 diff = (0, 0, 0) ) RECTANGLE ( { ** D sharp ** } start_x = 3, start_y = 3 end_x = 3.9, end_y = 8 diff = (0, 0, 0) ) RECTANGLE ( { ** F sharp ** } start_x = 7, start_y = 3 end_x = 7.9, end_y = 8 diff = (0, 0, 0) ) RECTANGLE ( { ** G sharp ** } start_x = 9, start_y = 3 end_x = 9.9, end_y = 8 diff = (0, 0, 0) ) RECTANGLE ( { ** A sharp ** } start_x = 11, start_y = 3 end_x = 11.9, end_y = 8 diff = (0, 0, 0) ) ) PATTERN ( x_size = 30, { ** Striped pattern ** } y_size = 30, name = STRIPE, RECTANGLE ( start_x = 0, start_y = 0, end_x = 30, end_y = 5, diff = (.1,.1,.1), ) ) { ********************* OBJECTS ********************* } { ** ground ** } PARALLELOGRAM ( loc = ( -10000, 0, -10000), v1 = ( 0, 0, 20000), v2 = (20000, 0, 0), diff = ( 1, 1, 0), pattern = STRIPE xmult = 2 ymult = 2 ) PARALLELOGRAM ( loc = (150, 40, -50) v1 = (0, 0, 108) v2 = (85, 0, 0) remove = PIANO_TOP, diff = (.2, .2, .2) pattern = STRINGS xmult = .5 ) { ** piano top ** } PARALLELOGRAM ( loc = (150, 50, -50), v1 = (0, 50, 95.73), v2 = (85, 0, 0), remove = PIANO_TOP, diff = (.55, .41, .1), dither = 4, pattern = WOOD_GRAIN xmult = 1.5 ymult = 1.5 ) { ** Piano sides ** } BEGIN_BBOX BEGIN_BBOX PARALLELOGRAM ( loc = (150, 40, -50) v1 = (0, 10, 0) v2 = (65, 0, 0) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (215, 40, -50) v1 = (0, 10, 0) v2 = (9, 0, 3) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (224, 40, -47) v1 = (0, 10, 0) v2 = (4, 0, 5) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) END_BBOX BEGIN_BBOX PARALLELOGRAM ( loc = (228, 40, -42) v1 = (0, 10, 0) v2 = (3, 0, 6) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) BEGIN_BBOX PARALLELOGRAM ( loc = (231, 40, -36) v1 = (0, 10, 0) v2 = (2, 0, 6) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (233, 40, -30) v1 = (0, 10, 0) v2 = (0, 0, 22) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) END_BBOX PARALLELOGRAM ( loc = (233, 40, -8) v1 = (0, 10, 0) v2 = (-3, 0, 8) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) END_BBOX END_BBOX BEGIN_BBOX BEGIN_BBOX PARALLELOGRAM ( loc = (230, 40, 0) v1 = (0, 10, 0) v2 = (-4, 0, 6) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (226, 40, 6) v1 = (0, 10, 0) v2 = (-6, 0, 4) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (220, 40, 10) v1 = (0, 10, 0) v2 = (-10, 0, 3) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) END_BBOX BEGIN_BBOX PARALLELOGRAM ( loc = (210, 40, 13) v1 = (0, 10, 0) v2 = (-12, 0, 5) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) BEGIN_BBOX PARALLELOGRAM ( loc = (198, 40, 18) v1 = (0, 10, 0) v2 = (-11, 0, 12) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (187, 40, 30) v1 = (0, 10, 0) v2 = (-7, 0, 10) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) END_BBOX PARALLELOGRAM ( loc = (180, 40, 40) v1 = (0, 10, 0) v2 = (-5, 0, 10) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) END_BBOX BEGIN_BBOX PARALLELOGRAM ( loc = (175, 40, 50) v1 = (0, 10, 0) v2 = (-5, 0, 6) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (170, 40, 56) v1 = (0, 10, 0) v2 = (-5, 0, 2) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (165, 40, 58) v1 = (0, 10, 0) v2 = (-15, 0, 0) diff = (.55, .41, .1) pattern = WOOD_GRAIN ) END_BBOX END_BBOX BEGIN_BBOX BEGIN_BBOX { ** keyboard ** } PARALLELOGRAM ( loc = (140, 44, -45) v1 = (0, 0, 98) v2 = (8, 0, 0) pattern= KEYBOARD diff = (0, 0, 0) ) { ** boarder for keyboard ** } PARALLELOGRAM ( loc = (138, 43.95, -50) v1 = (0, 0, 108) v2 = (12, 0, 0) diff = (.55, .41, .2) ) END_BBOX PARALLELOGRAM ( loc = (150, 44, -50) v1 = (0, 0, 108) v2 = (0, 6, 0) diff = (.55, .41, .2) pattern = WOOD_GRAIN ) PARALLELOGRAM ( loc = (138, 40, -50) v1 = (0, 0, 108) v2 = (0, 4, 0) diff = (.55, .41, .1) ) PARALLELOGRAM ( loc = (138, 40, -50) v1 = (12, 0, 0) v2 = (0, 4, 0) diff = (.55, .41, .1) ) END_BBOX BEGIN_BBOX INSTANCE_OF ( name = PIANO_LEG { ** three piano legs ** } pos = (155, 0, -45) ) INSTANCE_OF ( name = PIANO_LEG pos = (155, 0, 45) ) END_BBOX INSTANCE_OF ( name = PIANO_LEG pos = (220, 0, -25) ) { ** prop for top of piano ** } PARALLELOGRAM ( loc = (155, 50, 55) v1 = (3, 0, 0) v2 = (0, 43, -20) diff = (.55, .41, .1) ) { ** An observer ** } OBSERVER ( loc = (75 , 85, -65), lookat = (190, 30, 0) ) { ** A lamp ** } LAMP ( loc = (50, 120, -80), radius = 5, dist = 145 ) LAMP ( loc = (270, 120, 60) radius = 5 dist = 60 ) SKY ( horiz = (.1, .1, .65), zenith = (.1, .1, .65), dither = 1 ) FOC_LENGTH = 70 RAPHICS/BLOCKLV1.BLK} xM2lY"_`԰A 4DPBci  ھRZĿX*XE("}տ`44AQL w݄ Dg99s?ܙ3=.dmQtDJ/#UWIIfQIO^L`t}Jq'WS "E\OfDRMؔ][w[OJVUwlWY̧v,Dqy5`8ѽNzo:#v̨OTֿjf5󡽕]}#b*P\2~b/H]`y\`,LArc's PFX 1.13P 1990 -soft, Markus Fritze g.h` /H*@"m mA$H -(H!!!!!!!!Sj JC pC QN , HD , p,m:<0r Q&N~Q~d RESn`, HED@|D@ArTApAQڀn&-A LA(HJkf&CH"grאg<fA``+D +E+F.ޅR؃+D؅+DC m Sj m -м`BSjL gpNޭ '-lz5-9yA t QRT_ST.TTP `KJ$f(ByO,/9 ?<HNA\OJk.@# `6 - ЭnHй*"ҍ¼.A// {Bg.JNA #.h .h/(,HhNoP(.J(-?),ގ֎T.NV n PW g.e.xX8/w.kPD N^Nugf (֭HNy 8"J|d pR?!@zo/X$' m Hn=irO (.! ܾ(.".#B:$V'P3l":#` ";\  "/($38"? 5""m.?@?R8O1kb? ?/82f9l ?<5!B8%B OCz4+O=OOE5\`N. O?8B`LoA OOS8'R _Sz49",_>_PV5 9$ ,/_ o?5 (?_PO1`V?oz?0oBo??oU?_h OoR5!rPOtO$6OVOVOY{oq#_wQ_z_*P<_R/d hv////_/?p?.???o?OhOrޟOO_r_<__گ_odo|8ooğo\ֿTx0fү4ϜX+ i,n0/`JJ/Pߺ߄4,@#/  jޏ   ?<'~ Jpm.p\X0`$(4> |gN W@J, c  e?m"0p:>ppbpxvpdpRp@p. ppͲouDp>p@>p^>,pp>>p?zp=hp>TGrBD$>2$8> S@Zc0<@ [T"|N{T}3.#-Jfq!^30--"n>l 3J  oB$`Ȅ46XBH fXT(T(T(tT(hT% l0( | g < ` jbF n:""6Xg=[: %%PJ@f#j$,$JM #J$?4"?44H$,  /R 2N2?2?;!!/.J B@񝱐RC r|x4 2 BFT,J JNTW:6D]T0VR\*Vr*Z*d~r#n?*r?r 79G?*mfr6:A:88]᧿#^Lﰬ%s#O-O_c#?#%4830RrX|4VX2ɢ`ZyB B~(0b^_8Q,Q6]!fj1&1>>"BN`jѲ(UvkUhfa-*kko*oTTlBBRrަT"~ƒv_pRopRʀ aaQk"X@0(t%4U!wbl$߂D_V_Rz__D_ _ZG*s&Y}+m"RV/)-^ !GYvXϲznϚϲ!ϏᏯ?FM$p߂6Jdx㞯OX_&_8_(:TfTZ$শTֻڢা $俔yڢ ঃqwRڢq㣡qwVڢq Bڢ. FڢJڢrڢvP!t%z`o , ,π& π:5&fa9KjѝEn.i,H,t.ܕFB*4HNP*-/KF*@V/JHR*F/HJ*)L/HV*R$*V6AXQ߿m͉?›?$*w߭Lx(?` ??7?o?????o?7? ?`|>=;o7 `(G_/l9^@  M\  \  \ '<=>Z[\rsp?:;I?J\]??%&12@?AUV?z " , -  J W X        . / 0 ? @ A P Q R a b c r s t                       # $  / F G H Q R  S Z [ \ e f  g t u  v          q    R i j      q  Z k l m y z  { | } ~          q    &'<|\<|\ < |\   < |\   < |\   < |\   < $$"  @@ & ` "       t '{ ~4  %prsvtwu  x  y  z { ~|}4q'B            ! "  # $ % & '7PP   P    , AVk    * ( 1 !< "C #L $U %] &g 'o (y   p1 p *>Rfz  p 01'p Lh^p        $ 6 HZl1~p 1p ':M`s              Wk  p&hp&p& p& p  & p  'p '4p'Vp 'x  , H1) A> E    JS _f          d   - + '$  A R A  G A B          A        q          5A  . 4 ; @ G  q            5    Y   e  h n  u {       A %A  '''( (" (D (f ( ((())2 )T )v ) ) )  7   B     7  A %    ! !(!D!`!| ! !!   ! " "$ "@ "\ "x " "  "  %  ,  " A%  !## #<#X #t #  #  #  #        $ A q$  ' Aq$8    ! 0 3   7            H' OA $T1q2q3q4q 5q  6q 7q 8q 9q 0q  k   v ~            '  #$p        $!A$               5 A& $     $   )  ! 2       ;   B   E  % O  $  $%%4%P %l % %  %  P ^ l z     %   %% &  &0 &L)*+,.156^7N89:?v@ACEvFH.JnKMVNOQTFW^XYV[6or a quick reply!) *-----------------------------------------------------------------------* > Doug Little > Neil Stewart > Andy Younger > Nick Hesketh > Black Scorpion will return in force. Until then... -"*b"!$"^ !H_TOK Version 2.0 1990 Atari Corp. (UK) Ltd 1990 Dimitri KoveosCANCELOK Do you want to save the picture before leaving the program? Yes QuitCANCELOK Desk File Options About HyperPaint---------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 New Open Save Save as ... Abandon Delete----------------- Load defaults Save defaults----------------- Output----------------- Quit Filetype Pen Brush Spray Fill Blocks Text Shapes Zoom Miscell. BRUSH OPTIONS ------------------ Select Brush B Load Brushes Save Brushes Save as... FILL OPTIONS ------------------- Mono fill F Colour fill G Load Patterns Save Patterns Save as... Fill Mode H -------------------TEXT OPTIONS TEXT OPTIONS ------------------ Orientation J Style K Font I Writing Mode L TEXT OPTIONS BLOCK OPTIONS ----------------- Cut Block M Paste Block N Rescale O Stretch P Rotate Q Flip Horiz. R Flip Vert. S Skew Horiz. T Skew Vert. U Outline V Smooth W Paste Mode X ----------------- Load Block Save Block Save as... TEXT OPTIONS ZOOM OPTIONS --------------- Zoom X 2 Zoom X 4 Zoom X 8 Zoom X 16 TEXT OPTIONS MISC OPTIONS ------------------ Clear screen D Smear Cycling Y Mirror ------------------ Set Cycling Z Set Mirror Set Palette Load Palette Save Palette ------------------ Work Manager E Set .IMG Size TEXT OPTIONS FILE OPTIONS ------------------- NEO format DEGAS normal DEGAS compressed IMG format ART format TEXT OPTIONS SHAPE OPTIONS -------------------- Set parameters C Select Shape A CANCEL OK Replace TransparentInvertReverse Transparent SELECT WRITING MODE Exit RGB = 000ReviewSelectRestoreOKCANCELMake BlueMake GreenMake RedMake B/WClearInvertCaptureFillCancelOKMake FillClearInvertFillCancelOK Make Brush Spray size:OKSmallMediumLargeSpray speed:CancelChoose ShapeCancelOK Have you saved your work before clearing the workspace? Continue Cancel Fontname1___ ____________ ____________ ____________ ____________ ____________ ____________ ____________ ____________ 9 point 10 point 12 point 16 point 18 point 20 point 24 point 36 point 48 point CancelOK Select Font and Size Normal Bold Italic Underlined Outlined Light Left Justified Centered Right JustifiedCancelOKSelect Text EffectSelect OrientationCancelOKShapes optionsBorder aroundfilled shapes?NOYESPick line style:CancelOKWorkstation ManagementCopy mode:PaletteImageBothClear mode:OneAllCopyClearCancelOKSelect Cycling RangeSelect Cycling SpeedSelect DirectionTestViewCancelOKSet MirrorCancelOKHorizontalVerticalDiagonalCANCELOKUse BlockEdit BrushSelect .IMG size832 x 296592 x 416416 x 296640 x 200Show picCancelOKDef. size Set .IMG size ----Width : ____9999----Height: ____9999 OK Cancelpixelslines[3][Wrong resolution!][Cancel][3][Disk full!][Cancel][3][Save palette with file ?][Yes|No][3][Cannot open this file.][Cancel][3][Not a compressed file!][Cancel][3][This file doesn't exist!][Cancel][3][Are you sure|you want to|DELETE this file?][Cancel|Yes][3][Only available for|.IMG files on|workstation 1.][Cancel][3][Not enough memory!][Cancel][3][.IMG block too large|or corrupted!][Cancel][3][Not enough memory.|Try workstation 1|for .IMG files.][Cancel][3][Some workstations|will have to be|deleted.][Cancel|OK][3][ PAINT.PRT not found! ][Resume][3][Use block CUT and PASTE|for non-screen IMGs.][Cancel][3][Restore the ST's|default palette?][Cancel|Yes]?????>?~?~??????????????????????Ã`1Ã`1`1`1`1c`1c`1c`1cP`1c0~?0~?0`6 c0`3 c0`1 c0`1 c0`1 c0`1 c01 c01 c` 7o;=|>?` ??7?o?????o?7? ?`|>=;o7 `>~0` ?>x`p3fL0<0~` 3c?       ?گ ݨ     68~lc~cc~ ('>X !BD(19G8gHg8@@@@?` ??7?o?????o?7? ?`|>=;o7 `"AY)f3X@  M  V !!v'=>?[\]stp?;<J?K]^??&'23A?BVW?{ # - .  K X Y       / 0 1 @ A B Q R S b c d s t u                       $ %  0 G H I R S  T [ \ ] f g  h u v  w         q   P g h        X i j k u v  w x y z          q    !6vV6vV  V    V    V    V    V    V    V    V    V  $$" " " @@"  ` "" "      u '| ".  %prs 4q 'R            ! "  # $ % & '7PP   P    - BWl    + ( 2 != "D #M $V %^ &h 'p (z   p"1 p "+?Sg{  p ##*1(p #F#b_q        % 7 I[m1p #~#1p ##(;Nat             #$ Xl  p*bp*p* p* p  * p  + p +.p+Pp +r $&$B1* A?F   KT `g          $^  -$z+ '$  A R A  G A B          A!       q$        5A" / 5 < A H  q$            5    Z   f  i o  v |       A %A"$   + +  + +  ,  ,>  ,`  ,  , , , - -, -N -p - - -  7   "<     7  A %   $%%"%>%Z%v % %%   % & & &: &V &r & &  &  &  -  & A$   &''6'R 'n ' '  '  '        ' A q(  ' Aq(2     . 1   5             F' MA (N1q2q3q4q 5q  6q 7q 8q 9q 0q  i   t |            '  #(j"       !(" A(               5 & (    $   '  ! 0       9   @   C % M (  ( )). )J )f) ) )  "J0"X0"f0 "t0    %   )) *  ** *F-./004898:(:<=? ?ABPCDxFHPIKMHMP0QRpThW Z8Z\0^ 1@ NqNqNqNqNqNqLH@H@!߂\A@ 1@ NqNqNqNqNqNqLH@H@!߂\A@ 1@ NqNqNqNqNqNqLH@H@!߂\A@ ;(07//Z$J0f!Eg,OK Version 2.0 1990 Atari Corp. (UK) Ltd 1990 Dimitri KoveosCANCELOK Do you want to save the picture before leaving the program? Yes QuitCANCELOK Desk File Options About HyperPaint---------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 New Open Save Save as ... Abandon Delete----------------- Load defaults Save defaults----------------- Output----------------- Quit Filetype Pen Brush Spray Fill Blocks Text Shapes Zoom Miscell. BRUSH OPTIONS ------------------ Select Brush B Load Brushes Save Brushes Save as... FILL OPTIONS ------------------- Mono fill F Colour fill G Load Patterns Save Patterns Save as... Fill Mode H -------------------TEXT OPTIONS TEXT OPTIONS ------------------ Orientation J Style K Font I Writing Mode L TEXT OPTIONS BLOCK OPTIONS ----------------- Cut Block M Paste Block N Rescale O Stretch P Rotate Q Flip Horiz. R Flip Vert. S Skew Horiz. T Skew Vert. U Outline V Smooth W Paste Mode X ----------------- Load Block Save Block Save as... TEXT OPTIONS ZOOM OPTIONS --------------- Zoom X 2 Zoom X 4 Zoom X 8 Zoom X 16 TEXT OPTIONS MISC OPTIONS ------------------ Clear screen D Smear Cycling Y Mirror ------------------ Set Cycling Z Set Mirror Set Palette Load Palette Save Palette ------------------ Work Manager E Set .IMG size TEXT OPTIONS FILE OPTIONS ------------------- NEO format DEGAS normal DEGAS compressed IMG format ART format PENBRUSHSPRAYFILLBLOCKTEXTSHAPEZOOMKNIFETEXT OPTIONS SHAPE OPTIONS -------------------- Set parameters C Select Shape A CANCEL OK Replace TransparentInvertReverse Transparent SELECT WRITING MODE Exit EMPTYClearInvertCaptureFillCancelOKMake FillClearInvertFillCancelOK Make Brush Spray size:OKSmallMediumLargeSpray speed:CancelChoose ShapeCancelOK Have you saved your work before clearing the workspace? Continue Cancel Fontname1___ ____________ ____________ ____________ ____________ ____________ ____________ ____________ ____________ 9 point 10 point 12 point 16 point 18 point 20 point 24 point 36 point 48 point CancelOK Select Font and Size Normal Bold Italic Underlined Outlined Light Left Justified Centered Right JustifiedCancelOKSelect Text EffectSelect OrientationCancelOKShapes optionsBorder aroundfilled shapes?NOYESPick line style:CancelOKWorkstation ManagementCopy mode:PaletteImageBothClear mode:OneAllCopyClearCancelOKEMPTYSet MirrorCancelOKHorizontalVerticalDiagonalCANCELOKUse BlockEdit BrushSelect .IMG size416 x 592 640 x 400 592 x 832 832 x 592Show picCancelOKDef. size Set .IMG size ----Width : ____9999----Height: ____9999 OK Cancelpixelslines[3][Wrong resolution!][Cancel][3][Disk full!][Cancel][3][Save palette with file? ][Yes|No][3][Cannot open this file.][Cancel][3][Not a compressed file!][Cancel][3][This file doesn't exist!][Cancel][3][Are you sure|you want to|DELETE this file?][Cancel|Yes][3][Only available for|.IMG files on|workstation 1.][Cancel][3][Not enough memory!][Cancel][3][.IMG block too large|or corrupted!][Cancel][3][Not enough memory.|Try workstation 1|for .IMG files.][Cancel][3][Some workstations|will have to be|deleted.][Cancel|OK][3][ PAINT.PRT not found! ][Resume][3][Use block CUT and PASTE|for non-screen IMGs.][Cancel][3][Restore the ST's|default palette?][Cancel|Yes]K?????>?~?~??????????????????????Ã`1Ã`1`1`1`1c`1c`1c`1cP`1c0~?0~?0`6 c0`3 c0`1 c0`1 c0`1 c0`1 c01 c01 c` 7o;=|>?` ??7?o?????o?7? ?`|>=;o7 ` p0` 3v|>@@@ @3 (pt0`>  81`"P`@ 4l X` UU@ @ p P UUP`@@@@      8 0f 0f ??0f0f 0f 0g0g8x @ p @x @    0 ?P !" P" 0 ,   (  ?887n l l l n 788 3a2܀3gf 0`qsv8888`0 p 0 `@`0 80`;4 0@@8 ` `0@@ 0 `@À~@xp'8?              ?@@@@@@@@@@@@@@ |???????????????? 00 `@@`0 0?p8`@@`8p? 0`@@`0 0?8`@@`8?????????????` 7o;=|>?` ??7?o?????o?7? ?`|>=;o7 ` 'Kq :|J@J  M, -Z - .Z . '<=>Z[\rsp?:;I?J\]??%&12@?AUV?%&   ' (  _ l m       ! " 1 2 3 B C D S T U d e f u v w                      ! "  # * + , 5 6  7 D E  F Q R  S [ \ ] n o p { |  }   q   6 7                   & '  ( ) * I Y Zq [ ` m r w             n j o J p  * q ! r !!z s ""Z t ##: u $$ v %j$ w &J% x '*& y ( ' z ((z { ))Z | **: } ++ ~ ,j+  %$ # / @@0 / ` #0" 0>      t '{ ~/  % 4q'R            ! "  # $ % & '7PP   P    , AVk    * ( 1 !< "C #L $U %] &g 'o (y   p0Z1 p 0v*>Rfz  p 001'p 00^p        $ 6 HZl5~p 111p 1:1V':M`s           1 1r1Wk   7  7 !7 ! 7   8 !   8< ! 8^ !8 ! 8 " 11'<1Q Af m    r{               1      -1+ '!A#    q2        5A"       q26           5    )   5  8 >  E K    X   A %A q2R 8 8 9  9*  9L  9n  9   9  9 9 :  :: :\ :~ : : : ;   7    /     7  A %   2n22222 3 323N   3j 3 3 3 3 3 4 4.  4J      4f A$   4444 4 5 5*  5F  5b        5~ A  q5  ' A q5                     ' A 51q2q3q4q 5q  6q 7q 8q 9q 0q  8   C K  Q  V   b  f j o  u' |! A& 5   $    !                %   6   6&6B6^6z 6 6 6  6  / / / /  +  5 <% ?  77" 7>     7Z 7v;(<===AEF8G(GIJL LNOPPQxQS(TUX X[\X]H_@abbdeHyperPaint - Release 2.0 This is an updated release of HyperPaint for the Atari ST and STE. There should be no differences between this program and the included manual. Atari, August 1990 #a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #E 1B 01 #W 00 00 0A 03 0A 09 08 A:\*.*@ #W 02 02 16 03 0A 09 08 A:\*.*@ #W 00 00 0E 09 15 0B 00 @ #W 00 00 0F 0A 15 0B 00 @ #M 00 00 00 FF A BUN PD@ @ #M 00 01 00 FF B ART DISK@ @ #T 00 03 02 FF TRASH@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #F 03 04 *.TOS@ @ #P 03 04 *.TTP@ @ cs8؆eGaÊ D3r ړ2xA01;.𮸠n:PlsA5 +\w' (֋R+@#U՘:fbe%`iCS:) q v`Y; HQGQ (  wr+ 7^ sF }܍ƫ" F˿ k]xA ^;%xc/G /( !xCt%x>/m߀u{~/%xO_=pXA"f4:a x;܇/ؗ U u5.l߀q{}ޮO%x/֗X_os>}^/%x=@.  t..  tSAFE4MATPRGt nSAFE4MATDOCt `m*O.|l*m - ЭЭ// ??<JNA N`?<NNO3 |?<NAO309 ||f?</M_X[>XQLS_JJ[L>3>6]7>Jv{>Mvzqi>/'&'o&WX /<?< NAO/<?< NAON fN H?<NAOH@|g*|g"|gt|g8|g|g|g|bg|#g`?9?<NAO`09A|/<|?<;NAOHy?<NAO?</<?<NNAOJ@k"/<?< NAO/<?< NAO?<o/<?<NNAOJ@Hy?<NAO?<o/<?<NNAOJ@gP/<?< NAO`N /<?< NAO/<|?< NAO?<?9/</<F?<NNO3N ?< ?<NAO?<0?<NAO?</ VIRUS FREE BOOTSECTOR (By The SHADOW) ON THIS DISK !!!3p3r3t3v3x3z&9lk Ryp`'k Ryr`'k Ryt`dk Ryv`d k Ryx`C y0xy0py0ry0ty0v3zy0z?9p?<NAO?9r?<NAO?9t?<NAO?9v?<NAO?9x?<NAO?9z?<NAONuA:\|g /<?< NAO?<NAO`>/<?< NAO?<NAO` THIS DISK IS WRITE PROTECTED !!! DISK ERROR !!! Disk Label = Writing Volume Label ! Normal files existant ! Input Disk Label ( Max 11 Chrs! ) -->>DDDD Track - BYTES AVALABLE ! Total bytes for format type of current disk --> P yg3A`3B` y g3 09`3 10` yRgy9`d3P0`P yg:3D3 y(f 3P8` 3S3`B?< NAO#PNu/9P?< NAONuFUCK OFF HACKERS !! - THE SHADOW# 3?9?<NAO6<Hy?< NAO?</<?<NNAON&?<ONAOJk`Nu** POSSIBLE VIRUS !! ** ** VIRUS FREE BOOT [The SHADOW] ** EDIRECTORY *.* ?< NAONuHy?< NAOHy?< NAO9Ry29|gNu 939<7g NuY# --- MORE ---E6<# Hy?< NAO?<NAOHy?< NAONu/<X?< NAO?<NAO`*.* is Write Protected !!! pDo you Still want to format ?q [3][There ARE Files on this disk !|Do You Still want to format ?][ NO | YES ]EHDS 80-Tracks 09-Sectors Drive A: Place a disk to be formatted in the drive And Hit RETURN (H) Help & Hello's FORMATTING (Go and make some Tea !!) ................ Format Finished !! Hit a Key Writing BOOT Sector *** OOH ! A nice new fresh disk !! *** pThis disk has ALREDY been formatted !q Do you still want to format it ?EChecking existant files !... Bytes avalible on selected format type EpHELP PAGEq (Esc) or (Q) Quit Program (1) Sides [ Double Sided / Single Sided ] (2) Tracks [ 80 / 81 / 82 ] (3) Sectors per Track [ 09 / 10 ] (4) Drive [ A: / B: ] Safe Formatter (C) 1989 THE SHADOW DISK LABEL - The Disk Label (Volume) must be used in the following format :- 8 chars (or less) - full stop (.) - 3 chars extender (or less) e.g. NEWDISK1.BIG AN ANTI-VIRUS PROGRAM WILL BE INSTALLED ON THE BOOTSECTOR AFTER FORMATTING !! Hello to ........ TWEEKSTER, The Mystery Man, The Beast, Big Rob, Bob, Davey (Ken), Simes, Stu, Andy (Greeny), Leigh & Jon Yet another excellent program in 100% Machine Code by The SHADOW Of the IMMORTALS (That's Me !).... The IMMORTALS are :- The SHADOW & TWEEKSTER P.S. There is another version of this program under development... It Won't be much different but it will be a lot FASTER !!!!!!Ep ***** VIRUS WARNING ***** q The Boot sector of the current disk is executable !!!! This could be a VIRUS !!!!! (Very very nasty !!) However it may be a gamedisk or a harmless boot program ! DO YOU WANT TO KILL IT ?? the choice is yours ! P.S. There will be no virus if you format this disk & you cannot format the disk unless you kill the virus !! The program on the boot sector is no-longer active !! p YEAH ! qHy?< NAO34b3b3b 3b 3bN`Nu?<NAONu3b3b3b 3hLbN`Nu"<a <NBNu"<h8psNBNu#b(#b,#b0#b43 b3b3b 3b 3bN`3d8a3Mb3b 3b 3bN`3d8hL3db3b3 b 3hLb3b83b:3b<3b>3b@3bB3bD3bF3bH3bJ3bLN`Nubbb8d8f8g8bb8c8d8e8.LB^  4 4   "(&0&&     :2* v0V         <2  B|_⯸ͅ0= ų3]Mc 2M]zZQaThBAm7O6 PTQo'8˂{ɯ7;O:i.:dWcoph5p'}0~t:IcHnC8"-gD]*%~ȋѪ75v?ZPsy*yi!|vapI#e (lz/o7!w@mxp7y䑳6*Z'j gjhvjFX-/~,'*@^HȢ%OSAFE FORMATTER (C) 1990 The SHADOW. ARE YOU TIRED OF RUNNING A FORMATTING PROGRAM AND FINDING OUT THAT YOU HAVE JUST FORMATTED THE DISK THAT IT CAME ON !!!!!!!!. YES ? THEN YOU NEED SAFE4MAT.PRG (C) 1990 The SHADOW !!. WHAT DOES IT DO ???. EXTENDED FORMAT TYPES DRIVE A or B VIRUS KILLER VERY SAFE !!! When you decide to format your disk, this little proggy will show you its old fomat size (Total Bytes). Then it will check the disk to see if it has anything on it ! It will then check for write protected files ! And Eventually it will format the disk. ______________________________________________________________ MY VIRUS FREE BOOTSECTOR WILL BE INSTALLED AFTER FORMATTING ! SAFE4MAT ....... SLOW BUT WORTH IT !!!!!!!! The SHADOW Part Human ..... All Machine Code !. u̙:3d\뿔x4}r\ ҕq]6;tNlնPR`3PlĐk"(TדVVVrhDp`o>hl갲pt`,BPTFhUVڨP-L.Ԣ8ܜ$6H}P".جV 6`ѧցPxV $WĐ6HVhA<7ĐHT舶Ր &Hh rVRdv/P8DޒdHꠄh@p%/(L/T/訶찲հ H"hV"????L/D1?OBnn}BjARosJ@ o2qJ@ȊH S Ȋ$ (hHMD0xJ}Ȭ8 bt,:o+m.20><[o[1|o2ooo8JNd"|x5꯰F 2,eӚ>PbtN6τ@?f9]C!ߓWۦfRΛA3Zb&AhPQi+n H~3vb4ȯگҿ@4(>j||j2b<rbtφϐϼ$T^2^p߂^<$JPRHZ2r ^| #8hb5z5g5vb67DHu3 : ?t4?= aE9d/bW?/Qt?@Bw6!&6N7,KA&WdO|#L BD>bKA+A?$ +AR _\2W0B zB$zZB0T\T_.Z.PD(}stzW\TJ"g yBn!D薳X%.ZH CoUonooi&6P"q)*qD(0, u Z"8/"i'7/ =8)=|r !_3/BH$@x{f`^4OE!H"<^4E!P RBn kP_`^4o^4~^4^4f^r(vЍusБ^TM@^4PoG?N$$.j&r^.^Dʟ(|r5Y :Na1$&Gn#OlO`2(&Eթ⯠OL XF\OO`2 0i2 K]o/'տ u__U`Td____Zho,o>ooboooo*6(z1#3f 0?m#[ Z` 8$O@ JM`?<ݨpŲqaH%bO.H` oOʁAިpOEBbX#BX]ǩbO WXR@Z#wXT QJfpKߨpu6Q/%T%Qpd dd֥B$6ZQ6UPJ@qp°qNq_TT\qrYe'Red@m!@hS,VlIbe`Rpr4R3ne02c1@钰fiR~dRpmJԤtIfJܤkbaJ~H/AV2x@HM*x@tDt ht-B NtUAj|~u}(hS Z&rqz-IbDVKvԜFiB?Zi˄.@ЀxRJH̞w/ٟc!8Jįnw}_;UClj}7M08`ʲ(eִ(bڪ Ktb3úxԀ~ҏP!^{vP 1Ġ݃dɔ߸ܯ0tbϬ.ίC "ϨߺHWu㦖i|0 PQfP"Awby𠶈Uя t@w(:b2GY߀Z/g. XIbk.0~hzIbgFOdO/G잺fX\tFbeeR`  :0H~KP4 0k/AZZV`׃׉ua.Nh!Rp q"  Ex0tVh(/"$$(4/e,g¦\j̦[l$ggU$ &/S\ .T N?3BP7Lb,L4E4Le4<L 84N$8.O(8bO26tLL$OLOLO*B4r(Ou2LOD_vOj_OO_OO>E$R*Q@"8.dg..d 421a"1a}29Xate~ir1&l ^b9n5J ftd\0P0<`m2JP~1i4@Dg&83!H!?L a`V1Bg>>5вH/ `/$ A pW N𠶹d+X.젶 |TpLnB֟=@xATlSnrRnIrxA\2.H ffXus!(xrv5QL-hT`vR?-/\2\.8 ?Vdqzrppr!@hl`-P"X?Jfoc(:jb f,Ɵؒޟ֔LT 2ؒӃO ֑iEbl$@fKf_"5j,D!)ّ!%Pn`"촉R04S0 d.804<lJd>, t^dQY|^woJ !,<–!$ |B ʼqϤha0N> ]Zvu\ޕ{Np|zRXٿꚤbu<"\점/j r-{ަ0gR!QpJ\f40s{p@J@feMe(TXāJlT(<8?xXabt`O0`$X_OF`jrT=,8SBP$>?6 Sa/+ _+T- fB@P*T /Jg&VDT^DـhDT-vOO)UO >8V(9fB-X#a`qʦJZ@`q,Nt4u |g$t)zr }`3rmTv yl$*vS6x$BPv j tzRy,>tzO="zRxhrt }or3Rޏx(DVRxh@y 膟XPzx}ˋQy&8>\Q r r#|³Fc`$n?oˏE*ױR@@rԐֱ?̭¿`D>8DƳ.R >@DDwx/Á`$(U^^^^j뀮,񢄡 Ϩpώ/2,2IH0"2(PTnr8ᘄn߲hֿDRxt☆0 X\N`r桨IJdΚ>hl$VUJ5pBba-Hktwqq^uBi.Ba883p83-d Բ #jT13{-UYRSz-ή֮UʮƮ®UҮ`fp 8,J""J::`Zfp ,`fp -`f8`f!TхJp8U JUp8$$ ( W-(H!{.HUԄ0X J"U ,XTP"m$H6*C!<*eX*v%H:P ?;T\1VH~nh@gRe,\"6 44"2W-F6"4g D!.v#4b4zzV-H3@X3`WlAe((gVlH:3.P"2P?E!"2!50E!S@?2T122P"3DrE!,HP"K.B(O"wCH5ZH̟""3k(82#tB^B#@H B"%4bЏPRZjP3#M.lJb`P-"1H倒 /0X"^B|_V\Rn1`moi(_X,WJ@bo 5RJbCb_\_:_LVV_h_zR*T\Zo\)FoftD^_nkS̬#xv^BTUno\Z¢o"\ozoLV ooJtz^BonUJ+f#"Zblh.7lfI`}^B}6.`DZ$H!X mh-`|>Y:B>jBABd"f"p̖򪜆Жf s !f.*5p*/y7B@LRi=Jf>j@yԓv.V^߹ Jhnޔn ޔ ow 8 v\"P>>H{#ToЁLO\UrۂZ2(\HnnnޑnMl # $,(0A0'p.^B4@RBh#2(A1W@,`4Ԯ{r'.oB(0NN(1@=Ϫ[ nvoBB.( ,0 L Lm?͐!R "PKƭvB@{Y?0ܿѯ#f{, 0.4ĒH"Х*\Hla$&|=x\Hˊꭼxr$x`bn_-h®ppg tΤHޑH/"/O$"Ѳ"ܒB! @Rp10l$=`S,^bZh*z22{gfI(#:{1[$` -g`..e˜r,:oHnꈇ .?Il;BxR—`> ޑ0(FB.C616Ff`Ԗ"h "$/MEYC%!z1#B L.*J$kgFB@f#FK#Jn:놰%k:BA!(i2iAr4i2ڕޑo1Io `4N`_=@bW@=@0#| 2.^//:Xu)NF"j?5(.""Ɛ@,n*nsn,zeYr.OKl@J_\R3d_v_R @_Zy__R@Pl6a`\S@Q/h@bbBRR’@\d@bjf}s|b"R \  ڌ"(&6$0FӾ&@""i4J<z[ |`*B&pBg?{ &q!O@ hDg 0p,gV ,d`iA0r,T-q0t1"p-5&`wB`Bg^&pq-!El"O{1@l@ "0" P@.:R!nP?nr"Ю "в[#(n;$T/^@0D!!f-"@ /a2//g,1`Qnhnur.2o0УPDoOG7oBcCFF9^2YEbFр tУ?Qg*SR3??96?O#OVpڄ2fa $`>OQbB&@ O" O4afrQuVbuH战zaڦ&#|4Y2Ζ "Y1o.\h6&AR`X $$(fp7dϋ$ޏ E,$0fUH~򀙰*<˓Oaщ,(|*$d쁨_P$҅ R[I/$ۘjtƕįYؤO$hƔO7ۘRpF g. Cgk1 )1a Qdj$]\Ēd\A~0NB BL,f\Ģ 7Pa.N…R Z\0^¦$6HW"\5fPPW^ 0$lW^(Q_'!Dpqܞ3m_SNCdSEDp<ɺժ@lғyU`rh>_h52p`PإlY2"`G1NNR XPBkr"w!@6}ff' .z&(4F@Xž~f nX, ס_0/ 0R {DID%8%P/XZ, |IRB H3AB"8&ƨq.h06lHT%$0?# 0.$>"6?$8^?p4 VþP10H/ </b$ A` pNӿJg*)"/(qr&6gy @$ET? B!O"C@*O"TʦBF"]nG&'\ґSINpwp"fΆX!V=BfΒԘԘԘ}ؔԕ$1$Iptx6 BhđhܑБp Nd BPBhZ)!E1EZ%2|N_X?12ʣ\ѣ2=-Θ2ʣ1йF0/ã%7&ʪ0(%r&0&U0"0"%0&RΦb&=⦉2&6ޥ $TűXʣ'IJ~TVs1,$p t%2E1?#^¶?â&f)z:Xŏ B%Lɮ>%&vԛ" 8H B~B<*[BG`4LIJ/  f ^-@<`RGXR@H gf0,/p Erd\=JF`$0RF> 1J!"SG0f0bB3,pQH|=@?'.20RA0pQB0` 0*@(@?PЩ0PH1'sФgfgBA` ?PRѰ|"f_@ n `.f$s=|01,R0,@A@!"?P $',2D{N`'`<8H$f*-H`9 `` .8g<`oRRGg*ggf n8 80nmrB0J@m?Bgp FHBgŠTf"1((1I ^G·g<2Pg2<`oA?0?  A81@@@B->`0Z 2H-!lvmظ b-L0!1.fX1f !J!_MY "uP`P @ J@BN"4AN`!%"$0f B?B`J"} JlV{DJlRvd`Bb⊯d.|DdDЪ@A LBGl~D l GD&gHC H@J@g@HCBCւJGgD-C$".J6IAִ q.N"R.l.n# К%@"[ H`-q'8omnfQ'bU'(M$HqPP[ߴ$/ -H" >R!-~P&$nc܋|?"lB.N2.5Я3; >2/ %?72p³2721101541BE<3/ ڤ$ފP~A$EQ& HЁ @#ЮbR8$ގB Ї ֎P֢OIH`*~D#FQN@.3HS0v1fNn2I.g:"^454C: yq Mggd_vS`@= `O)/X=|P-| al_> @3?l9p n3o?TV`B`(~f2<0=`"zd3fn>ˆs>XONuhXORpokhvV(l+s`"CVx+rqDv^b^ls`$Cay}wrqu.# "(fJgu"¼vPм@ L*'sB fB`※$ `л8 tg jDh <ro`V$^!fBH@ @bQB @}YB郀?}UBJ@kSB&<"F€JHBЂJ?j<)(Nq$HBJBnDB Bcp`*` c ܇ۄHAHB>g ڇلHDHEHF8:|h($؇x>r$~>kڅلSG FHD„v ȀۆنGk G xz`F`SGOHG؇ļ r͞xt8:LME鴀0bRD1DHBHC.h^ЇHG~` B@J|F>rAHF<J8hnEН߄jSGd6HC,h ,ІHF|_d*HEHE8BEF~BdHG>_HA0Ѿ2 @xDjdhrxx8pznG‡~𮌁݅߅D ~~|_eǼ m/qbOP-R@RE8(AjP} ,$125To"X$na-)f]osq`0l 2UV6Zl$40`8bn0`| Pn?#?@|! U$hT65`L3n{&// /B` J?"bTA@605`hv1/"P/af0` @AA0 DW?< B/.TC(O ƅ"2.vbL0 fz@ !f`(Ig `Q|N0A`2%EX/@"%CJ?B$J `W &B.A3uC f,a($`"qS@qsnr\cNqzwA LP Bnbf=| RHZrgnZwgZag`bjA,b(@.C(H`{0,T`Q ^mɇBbBl -H|+WBl l f0plqāfBZ<~t>JGm TU`.Bg^` G8a2ʄ9G͐0!()@9)h /L0|ց0U0cfA>i X/ce0 $Bg0Q>00W^d11JW!$Jlo3ʰ gPqH0P0QP 0B-@JOm 0b00QPJl3צQt f,Юp&jt `h0g 6 렰oT|J@f+]0`` >0M/0Q0@9 J]0g3Ԩq`pi ."0&QSo/"5/n"Z./Ò. {X`@ڡf&`(7M)GB Pk~QƚA)j<7f0:PD.pOށڂBf (@#1)j,f,j*T`e*f(` BGpo+#̞ P`( @)jf^"t(M*gU`Ɉ'Pln`sg ꘰vQ*@(3j` ﰔm2Ќn2Дl`(To "сЁf T +T*`* ",ԍf Ѭ>`(&0J0\"HPgX_HfH`ZL!)n5OfBGЀt>c72)z<Ȉ Ag%R,0=೴@ -g&K?0>ೀPg@-3fA0):L"nAf .#T(&p0ЊrjBM ,0UꊐP6`m|```RR? Sn^`4/0Lltk =@8렖@`v iHmT/! 'ֶ+',RF,.'Ұ? *L fR`b!f #H\R5f)-O ڠРԢ{0^l(ƛ2 u0(L@B@ggSBAgHJ@0A5 rW'@fNu opPR@S߀JWjF52/0NuSA2V?0PkYN g檒 @ޒ @֤E=1QxpX Qh0m9nC1|0fB2a@DafB"A@AAEx osB %䞀0JX|Q-fPaR5bF2v/eHl$ 6{0H Ѓ\]@jCQHRbS5J gP` 5PoPDC`nQ&DAz@UAA$SqmeIѳ`RWS UzwH7q(M\g/A&H. c UΡ`<b S=`@ Qk |a|l0fDeP2Hnx ؿk0!g 3rd|c`~J0fBJ/ /޹a52kҰpP(џLw8($ BB`&: Bvd d``bdlo-A;tyL&gHC H@0@HCBCւ-C~u.J#W'.N R-+ .N RPY@P|?lN,.NXEV) 2oPH @#ΐa(4>U7 P'>UU `(JTj(U4 |*$(8>[Hj Xbn֜ٲP Oֿlڇ|*0tLHmUa .uP(UQ& (< >]6BE ,:< ` ``Xg`dg`ogК`ug¾`xg  @d@ - D.`!z@)rA &@B#(/8H/nX(0 D m2<7E`n0_A rPxUn X.f/ / 1oP*E`8eRa>!P(U8 GQ ><]<~P]|}|0R@?Y0=P11*b0f.f*0f@y`01'"`flB0UF` $<`(P&\`m Pj0%\$@Jg2. g$/ ?j0MchpNGg R *XG>Z\`=|\`ۜ8b-fVRR($0f$ 08&*f R=ST``16HR2($.f>8/J,Z/HRr(lj0$!f$Bߤ $@!dD$SX/ :Po:.$!Ƞ_g PU,2A3*w n!g=0`R> Ta#뜃|"4힤U`PP3`fQh6v2P`N<`cg.`eg`fg`gg `sgN.Pgj!E>.?E`4S7``J@P URBa"`ap[x\R` `fHOZOlO~K$O6J` =PL<f (8f0aTf"m m ;)h||Q(hu,T(P Bg"Vom/^`Xdg NU,H*+@`.`?XTQf2Pcf2S -gFgBTfxQ0},g|,2X` ,Rg ,HNqXyX`g "> cQ`U`Qf4'f<_p e}pdg<)` Gam`|` `AKmbNja F@3p30psta :B*"2*v`hgu  E. 2"hc:0`" "w60HЃ(2"^vSGp??hbl"B0`Pnqx~ƶ0Xq``U0z 0,g~g0bgBIa0d8c\Ϗ`SObAg D` Nq`Hؗcn*t* rr2"7褂wं`-f2"he`a~+g 2"0n{0j ~QGa40`0gfRn~ogSE&f^Z⇑G?/}8PTD.ۂz`0`.f0$``Eg`eҒ0$``2"heSMf~hg `)*JEl~n.HPZ8ffgY+P\ln`z BG3k,@ :a|VPXPH e`cg2hbT: Eg \nZ F%gFf0`Z?0Fg& nUZvZj5=PaN"1#Ro`-gMf!l"*%RHhcf0^uBCҐ~ڥ PRG0hdghoguhxDhB)󹤜0@[_\ NVr>ǿ `(,F`00*he*fB40Jf!XZ^lxS!@0"v^xehsD½ ڥ(P`$g0+Nc0g ePBRnRGfL0TTJPn=1`,>!g3kJ`D` Xi Ug$g )/p ?G\Wp 0":,AqE?o>`qO60\40 0H{є0,`elGl JEf}Xge6 Emv= 2HHAA`U60`,DPJ@n G@&@3 1FJxE70 f|ЭaQqnPgP'lB E@ ,PX(9lΠRE @/irgzBf gXge`:&lPR g ." fZ` @ B08 o/ f pJWf`g fS `pNuLrWɪ Sqf# a䞢 a‘! nol++ n4WoVZ{Q+  n]ưg qD@=@qưg02HupQ @#О3JĐq]*nt|I00nK~pP` vhr*tth f /.T`n/8߷P-`vP`6Б q-L-U-@K1.(>OG|JGn|m`NB0T@P1m d@D@`j1D@So<@RTO\ O`&烚AH@$@JGg FGQ 0dR@pBA1Q/,>33Կ׆Gҵ`QB`@H( q`0R  Hkm@d6;A>pR(@ ˱}`Fp0fRZ$` R$9nXJ*A R*@NqfSEHIw @Bw0 Input line number %d Warning: obsolete option@programm@stupidity error (%s)@OC FatalS code@@illeg0Ppa@@ Ptoo fewKWs CVobject type@malloc failur~PsyntaxUHconfus@UfileVatRPn not founAUalready def@An=osPserv@WPSKZworldQtainsPn-homogenioussT@an i `x of refracA is 0@DUcolor_info valu~PLV shou%`be >=caaKPSmu?ltipli@ad gnOP lef5tKQePxpwPROrighoDUvwP~6PstructRhj tr` zmmandSOO:L^p$6HZl~BEGIN_INSTANCESEND|BBOXssyNAMEO_SHADOWqLAMPTHRESHOLDX_pYrASPECT)AMBDIFFMIRRORTRANSDENSITYFUZZINDEXTHESRE3FLr9?sJPOSLOCYITIONOCAfRADIUS~XATTERNAMOVpXMUL'TYs){t@bUgyDISrRȏLO7OKApUPJnV1vp1V2z2}rZEN1BORIZ̀>Pbtv_1ʟܟ`0BT@$ƯqݯGxdЇABCpMÌXMApY9Y?Z9Z?DIRSP3pPARALLELOGRAMIANGLpRINGQUADRoC)s_OFSK"OC_LENGFIRST_S{CÀDEFArFILE_rrOBSERV4LAӵ`гXpT@TsЇְ)˦?PbMB8iFsk}ϏϡƢ̀WH@#߾rUz:ݒPj=|[ \vΰ` VWhzbxbЊp@ĪzGc{ bƹ?sQuick Ray TY`e v1.4stC) 1988,I9 Steve Ko`.miga`rRbyTtari ST portoRo@t B@hardt. OutzQFQ : %iPRe@u\bu wi;Pp/PlSwPQSize,o Asa3;p02w.3f@Foc0PLength) |8@ scanB0> ( 0%%+qpte).T(b.J%!/ Hit a keyexit.-x p -Y a Aw-f ubr(R ߐ?R¨ Xcm2,Դ m, t6*$³e ۻ\X(  &9 G$('G orsK Ж(C+21_/.Н{{>(,<4V H4syD}": ñtC$ C1!lѤ"4FX@jcIclt!°l°Y* B #-!SñA*z.lIllE/W/i/{//$".2.&1#/A.!%A "6 s72m."150l6Q*#'%b35B8±?W?i?{%1A*QT@Q)mվQC2*òC3σ*d*c°Єք1Q9 >Da4#)P**fR" "lR’Q`7  ,2/5SJ42QPP(PTSQ .*pKc*T@65c {P*(.2(1Sw up#:2 6@ $ ,p"NrBTrQ)! F@BtSP맚p(b׫,04 pݛbI7%@b4Њ1BB:B(, 1>Icq$ò1"V[  B"o(q)3šš3k zσ0b\`B .Ppě(QAcop" Mpdăƒ1R >T }:*b$&ݑо@Ia"pacF"6F'|1X8P 8TG"PQ0BD҃Q?$$Ys &*,V ,wp$4>@s B&p#9@u ,$  &8XD|:<* , `RPc0{PpP P GprXFpQpV`*P@FpP*eqv  wP\ m@'1C!T sb <!~E."(l`d$&` R04: "$( (X&>&. 1 . 4&f.,* p."(?$P:  " –01, @Ff:,Ā8 QGpD㈱ P@@ "' Bc:asu,61$f@D$dHH8P)tBF&8  ^} 0_Hv*,2x.(*VPءyD$m`tz8,J f  2$z 6 R0b,n,,IZ/mx'Q9^<9-?4r(6>(i*дZ_',K'q.#xi_jJ]*~I~lx~@#FN hk{O{FzRw0W>'/\e¹-~<_w={Զw{ QRT/ST Machine Specific Reference Robert Barnhardt COPYRIGHT INFORMATION QRT source and executable is Copyright 1988 Steve Koren. It may be freely copied, modified, and distributed under the following conditions: 1) Notice of any changes is posted and distributed with subsequent versions. 2) Neither the source nor executable is sold for profit. 3) This message is distributed unmodified with the source and executable. Any images created with QRT are yours to do with as you wish. INTRODUCTION The QRT ray tracer was ported from Steve Koren's original Amiga sources, and thus it should be 100% compatible, the few exceptions being noted in the remainder of this document. The general usage of QRT is a simple, 3-step process: o Create a scene description file (.QRT), in accordance with the accompanying QRT documentation. o Render the scene with QRT, to produce a graphical output image file (.RAW). o Convert the image to a format displayable on your equipment (for the ST, Spectrum 512 format). QRT/ST USAGE The command line of QRT/ST differs slightly from that of the Amiga version. Because of the extremely short TTP line, the command line keywords -aspect, -foclen, -xres, and -yres have been shortened to -a, -f, -x, and -y, respectively. Usage: QRT [-x +i] [-y +i] [-a +f] [-f +f] filename.qrt -x specifies the x resolution of the output file. -y " " y " " " " " . -a " " aspect ratio of the output file. -f " " focal length of the observer. ( Where +i and +f are positive integer and floating point. ) Command line options will override information in the input file. If you do not specify an input file, QRT/ST will wait for you to enter a description by hand: to abort, press Control-C; to signal that your description is complete, press Control-Z. QRT Ray Tracer Page 1 ST Reference QRT/ST INPUT FILES All keywords supported in the current release (1.4) of QRT for the Amiga are supported, with the exception of DITHER; its inclusion or exclusion will be completely ignored, generating no errors. With an output resolution of 16 million colours, dithering (in the source) is redundant; the rendering of the output image is left wholly to the post-processor. In addition to the FIRST_SCAN and LAST_SCAN keywords, FIRST_X and LAST_X have been added, so that you can select any section of an image to ray trace. For example, you might wish to get the lighting correct on a certain object; with the above keywords, you can 'single out' that object, making for faster (preliminary) traces, until you get the lighting correct. Not noted in the accompanying (original) QRT documentation are the following DEFAULT parameters: x_res, y_res, and aspect, which work exactly as you'd expect them to. QRT/ST OUTPUT FILES QRT/ST outputs a non-format that I call 'RAW', for lack of a better name. It has an extremely simple format, as follows: " [lf]" The X and Y resolution of the file, as ASCII strings seperated by a space, and terminated with a linefeed (chr$(10)). One byte each of red, green, and blue for each pixel. The bytes are in the range of 0 to 255, proving a 24 bit colour resolution (16 million colours). The post-processor provided with QRT/ST, RAW2SPEC, uses advanced dithering methods to reduce the 16 million colour output to 512 colours. For more information, read RAW2SPEC's documentation. IMPORTANT NOTE As of 03/08/91, I've not found an address of any sort for Steve Koren, the author of QRT. If you know of any way to contact him, let me know, because I'd like to notify him of this conversion. As usual in this sort of thing, QRT/ST is yours to use at your own discretion, and in the event of any accidental damages, neither I nor Steve Koren may be held responsible. QRT Ray Tracer Page 2 ST Reference UNIMPORTANT NOTES I chose QRT to port (as opposed to MTV or DKB) because I felt it represented the best compromise of speed and features. You won't be creating photorealistic images with QRT/ST (and if you could, the ST certainly couldn't display them), but you can make some incredible pictures, with a bit of time and effort. I won't release the Laser C source for QRT/ST, so don't ask; not only is it not mine to give, it has become unnecessarily cryptic (partly Megamax, partly me). If you want the original Amiga source, look on a few Amiga bulletin boards; that's where I found it, at any rate. If you create any images with QRT/ST and plan to upload them, you might consider uploading the .QRT source as well, as there seems to be a dearth of .QRT source in the public domain (those that I included in the QRT/ST archive are all that I could find). BUGS... If you find any, please report them to me, rather than to Steve Koren; they'll most likely be my fault, and if they're not, I'll try to pass them on (if I ever find him). I can be reached at the following: Robert Barnhardt CompuServe: 73707,533 869 Garrison Road GEnie : R.BARNHARDT1 Fort Erie, Ontario CANADA L2A 1N6 POST-SCRIPT As of this writing, 04/08/91 02:00, I've just finished hardwiring my floppy drive directly to my 520. At about 22:00 yesterday, the drive ceased to respond to the constant cable-jiggling that had previously kept it alive (if just barely). If this setup goes on me, I'll have no way to call the on-line services mentioned above; if you leave mail to me and I haven't replied within a month, you can safely assume that I won't be responding. At any rate, you can always reach me at the above (real-world) address. QRT Ray Tracer Page 3 ST Reference 'eٖ{kxq]g;R"%#PymDrBN2١H4Kɠ7G>dU~]]6+bkW.kO<>. nvlF!ٝ~-"bv-IVxoKp`ux =:G;k:K\Oӏ 6حhH7,f9˳Ҙj)d =??,IDAzi U3sJO7E/1J"T«WP"5lOh".Y~vnGyfC)LӼPk BEZR|i fjh)'Pg$ Vƴ}H TN}7/3<]+JZa$UݞŠhZVI C"E)_$#*<~ojy/eH-]O2]TPnOP@h@S>PM.HX*Z 5QY5.2j% n7>`̦2\͒  ~8 ޢkJ㵝$+-I>YoXGԬ=24W⳧}b;GWaP_4X?R!ZϻP;~#*#ߡ5~9绹qKv$-tnH|~x[$a<gS^o<_2יt);$\,"b)9z<&SRB%V^o,&Jcr 5g. Ry;ҝHIޛށ i.*_evwA Ot[W;i\!W /XWd3s9̇BkaI92]R_Ͷ9hnMЎJ"kcV+>~E}HfN}ZXP6zXܔ+_lx[TtIGil=-[(ʮWWĶ;BkԟɫQ幩|[h|V]^6V!5DzG[Լ{RG޷_k yڔ5\{W0N3iOh`1HA޷^Tg< ^9r/?J?Q{H`Fԫ&gTC,vKZ44'XXU:-j́EB֮4h/yU4P=1,ң񧽦~ou؏`yi[00,#\HF)AzRe5?rW=\S4J&d[;]ix][~:+MѓfGB_7,9 [8v_ ;c/F~=:kP=`xXpSʂy`<}IMmIrRU 峀L4M({+;XpG5R6fŢ 7hߚjm ﻞ~z* ryHatuq 9/w&IF*!#>sHw m^ӟ% іRs?M`? #+υ} Xp*waa"r^7o5N=}I][ V[Z āXϷKb)d:|O 4}{GosZ|pW.sX?$ک-zA4 4p=]*:$@ M{׎w帢V+uR#ϻ^䴏X3؈z/q*;w}? ~w&V:oqG?t(>ZbHƮi\?jL3:FUPIСh A/0_p@:mcRӖhU7Ȗh"v0d^oF/73Mn p}3gnzKϞ^o0I=Kc`ޕߜ;Nq 7Ru(N/nH4<8D5&B^q~D@Y^A Few Words About the HardWood Picture & Scene Description """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" HardWood is an rudimentary example of what can be done with QRT/ST. The floor and wall patterns (wood, brick) were taken from the original QRT samples, both modified slightly (the gap between bricks was increased, the wood was hardened and given a coat of wax). I state this because I don't want anyone to get the wrong idea about QRT/ST - HardWood is certainly not the penultimate QRT scene! Someone more interesting than myself might have used cones, or cylinders, or any of the other QRT objects to make an interesting scene; I'm certainly not an artist. To add a bit of excitement (and nostalgia), a silver ball floats in the far corner of the room, reflecting the ceiling and walls, including the one 'behind' you (the observer). This scene took about 2.5 hours to render at the resolution you see it. R. Barnhardt ============================================================================== Raw2Spec Version 1.0 August 3rd, 1991 Robert Barnhardt (C) 1991 Brain~Waves Group ============================================================================== Raw2Spec is Copyright 1991 by Robert Barnhardt. You may use and distribute the program and its accompanying documentation, as long as they are retained intact, unmodified, and unmolested. General Information """""""""""""""""""" Raw2Spec is a post-processor for use with the QRT/ST ray tracing system. It converts the RAW output of QRT/ST into Spectrum 512 format, for display on any Atari ST system that can display Spectrum pictures (what a coincidence). Raw2Spec works in any resolution; however, the Spectrum preview is obviously not available in monochrome. Raw2Spec Usage """"""""""""""" 1. Render an image with QRT/ST. 2. Execute Raw2Spec from the Desktop. 3. Ignore the cheap alert box title screen. 4. Select a RAW file to convert (such as the one you just created). 5. Do you want dithering? Dithering involves using algorithms to render the RAW file with more accuracy than normal. I suggest you try using dithering, and if the results don't please you, try again with none. 6. If so, what sort? The selections, from least to most advanced, are 'Simple' (one pattern), '4 x 4' (a 4x4 ordered dither), and 'Error' (error dispersion, with Floyd/Steinberg filter). A good idea is to start with the most sophisticated, 'Error', and fall back to the lesser methods if you are not pleased with the results. 7. Use register 15? Spectrum 512 uses register 15 as its current drawing colour, and any images that you wish to load into Spectrum 512 can NOT use register 15. However, if you're only going to be viewing the pictures, there's no reason why you shouldn't use it (and gain a few extra colours in your image). 8. The picture will now be converted, at a fairly fast rate (~ 30 seconds for a full 320 x 200 image). If your image is greater than 320 x 200 in size, it will be cropped (not shrunk). 9. You will now get a preview of the picture (if you're not in monochrome). Hit any key to exit the preview. 10. If you're not in monochrome, you'll be asked if you you wish to save the picture. 'No' will take you back to the first file selector, and 'Again' will take you back to the first 'Dithering?' alert box (and will use the same input file). 11. If you selected 'Yes', you'll now specify where to save the Spectrum picture (as an uncompressed SPU file). Swapping disks is kosher. If you click on 'Cancel', you will be taken to the 'Save this picture?' alert, even if you're in monochrome. After the file is saved, you will be taken back to the initial file selector, where you may choose another file to convert, or exit the program by clicking 'Cancel'. Technical Notes """""""""""""""" o Raw2Spec was written in 100% assembly, with AssemPro from Abacus Software. o The input image is currently cropped (top left corner), if it is larger than 320 x 200. If another version is released, it will allow shrinking by pixel averaging as an option. o Dithering is used to reduce the input file, one scanline at a time, into the range of 512 colours. The colours are then sorted by popularity (frequency of occurance), and added to the palette in the order of most to least popular; if a colour cannot be added, the closest match is calculated by finding the least square to each available colour. Finally, the scanline is plotted (this could be done while setting the palettes, but using a strict left to right plot routine is faster in the long run). o The converter doesn't save in SPS format because SPS doesn't allow for the use of register 15. I'm not sure of SPC format yet. If ever I release another version of Raw2Spec, it will be able to save in all three (SPU, SPC, SPS) formats. An Explanation (not An Apology) """""""""""""""""""""""""""""""" To those who have written to me in the past: I have not forgotten you. I did, however, temporarily abandon you in favour of something that's slightly more important to me - education. I had been spending a totally ridiculous amount of time on this computer, and when the power supply went, I had a wonderful excuse to get back to the school work I'd been neglecting. I've just graduated grade 13, and will hopefully be attending a university (a cheap one) in a year or so. In the mean- time, I'll try to complete the projects that I said I'd do for you, barring any further technical difficulties; I'm not spending another dime on this antique. { The next week... For a good laugh, read the post-script to the QRT_ST documentation. Next time, I'll remember to knock on wood. } Bugs, Comments, Lawsuits """"""""""""""""""""""""" Get in touch. You can contact me on CompuServe at user # 73707,533 (I am not a number, I am a free man) or on GEnie as R.BARNHARDT1 (how original). If you're one of the few living people able to communicate by non-electronic means, write me at the following address: Robert Barnhardt 869 Garrison Road Fort Erie, Ontario CANADA L2A 1N6 'Xdi6Zz{ODl5^´g;ŵdz vPhno;g">5Ɗv7{:kza9 ` )`.#Mj\BxD[#}0oQ (b]j^sݧUw#%yzń 4}'*HFEvu][o:F<^)ڶNj\t}Ea]aեc\7a>_>)Hw8 1O42y\HBMMX_t׻,c] su]&e $x~аt:g]tO2@InGjSy1\iv7 >H%*) @!I%\:fC!Ə