Ap `p1 Hugo!ConfigureApi !Draw Api!Edit A" = "" then Error 0 System resources cannot be found RMEnsure SharedCLibrary 0 RMLoad System:modules.CLib RMEnsure SharedCLibrary 0 error Shared C Library not found Set Configure$Dir IconSprites .!Sprites WimpSlot -min 80K -max 80K Run .!RunImage %*0  /LSK @0Se6i*ϣed3"HD&^cDgd:l$H/&KD3[lgawd(3i+N&EX5khod2#G&DۣEgd:V t<3hoe2e'H%XܣEgRcr3H%a1egRe:#I%[[ɴM1egSRo t_#\%Klccl[=%%]Q)WI [TDC=DD>;ƖRm3g #Q%K[Ki:dnLR:|c]%pluwuptM{ԑap uۑbp uۄksR:Klb$KʿƼ˨qmH W7lRtS:KeCK$KĿTPDelm-~nPi\fƟfffff89~˄qin;L&x-t-p-L7muˈqin䊜-|8-x8-&t-&p8' &E7m偐ˌqinm|ːqinm [Oq,nY˲L5],˜V.mpOqn=вۅ5emi˘qinvtrL,n鞰mۆc gsc^ˆ ƣskncвQlm >ۆc ]scFk^ˆƣskncв1lm>L:[@L:[@L@@lL˰@3q0n [.5]0V=@?L.i@ARe:| 0j_VɄRle2KQl#|dju$9\iRb;l:Rld*36"0(scR:o-MF#\l\k\k1[h Re*sP3pR)#K =[˛XJϐiRjͪmv#Q #K=[Sxo5: YF5cL࿺3np{3n #C o$2Lk"hR:Q󻺨 ( 4Rf =V$ e?F"Z"[8[7ƪp:w 2e:r~:av21o]m,:",Y "[S:ˤeƪ/hh=a3Wr';:al uy3ko2t- ""dR"[S7ˈ_lƪqp0 a3lrk0s" i*ndz3-o "3"pRlƪqt #bY !"3$"`Rlƪyh#oo&e3n*'""4[/""%"^&"Yj*"("/[)"Yǟj-"S6_l8ƪhd:cer>:=nVW:lN.2U "8ƪѪorJ#,cRlu+,5^on~n:sd#to3,2tdO#[™ڪ:`Kqzت21xu+,59s^tkE:l -r3 2 92a[ԟi̪:Kz`qج2x+15us,^9tkr+J7d "uSƩftrej3aQ 3n3Sɚmtqd*opR#is#Smƪҋ-t!3c0 13wdpg:stfh2f*)*Ss䪁Ҫgim3 H:tSh #vy+Se#^mƪҋnh3哪j9: 3 l%3ea?u3R-+I5uSa"ek*)-"}C3rͣktle:e+o3o>n3nr3s>r9: n)3i6:hf*o`S!䪐e i:c.:}M5I)[w:pB:Wfe:ni"eb#Ѫe%* eTUT\A[ dMܭ3<',:ƒnK:% %#Rteg#"n"`K[nlDflllfllllf?EDfc wIߐkcl:lV#ٽPƵDz,oA])lޒѶ?lW+k@+BE){lnv $s*"ǽi/nt˒ 7l횕h.nˏ 7lngIqdǻpll2斔l:7nll[4nlllll0llVlnˋ?n?n@1P5U?n(5Ŝ?n#5Ř?n5Ŕ?n5Ő?ň?n?ȧF?n?!?n5?xg_Ǚ ?n?GŶT?n?VG'|l<o$5?띚Ķ?nBw?nAs?nc us q??æixR:aɣ GYKTD{c`ͷlm6֕жg 樇0  28 "i:h6Pw4T뒜e/m0϶ufsɕKm@f$s2n:eu36ժo&w#mkUKUbUVzƙfU7V~ζVEXݣqݶlcͼPKO  V="eLk|KfoᶨvfƦšƒšn4 7)f!q3>4r2i o#ƒ)DDafc I8(Dn6V4G@EDHlssngG(EODH˭lssng[?vwH˓ؑkccvwHˇؑkcn.kݾckQѽIK!]hӃgO޼aeF8b]L8c] 8d]-\ K]MDˬܶK`fhDM󻺬-1ec;(_CɞĻ1eSccjjR)QccjjP)c? WKciJ"Wcci+JciiR)Rcci‘=nIbYDFܥgISK˹Bαˢ kVgH>EHFͺlg훫駶UC(mx2cjo)3Xm Kf MBt)ܓ\epӔcj勩l^ĻcziS)RccwitiQ)c>oRKi۲lQccci߹^nT {c~om]ѤV"cWնc͘qzc@wٛӝ>n Ր)3&`5DU qԀM*ɲ޳ շ0M3fkkوczmc4s/0~d4̔0j UӻkciƨRclCe,qfDe"k\@z[ܐck[ӕki֋ܛ8mc˘3]c͘qzc͝wɛ7ӝ3nkmN8Ɛ33fkLĈlPckhGxd]ckb,ʝ˕gGdװd]cgGҦ:cVᵪDZ@.ߪrW:i-"DTػMKED֒|HJ̒ԕkh[qK@Ok%@Nfoѽ>sOzֽ96Dk.g R]_eH8lRTNT;cLch]g\@ck^&Zս<=;;͝/k\K? Uн1ͽ1u±]۩OddſZE|ؽZ)ALݴ՟IkCN,mMKM>)h퉫TVƶfKTdƁ'};*J+}KEˁ);Ԧ\SO]cn?ϡfВVԠNݿC~Rƽb;];\k:^#?fKیOT;R;bO]:MMͷIMSݏCP۝ϜmػP_K0 vՂc/ݕGc,dP)ˀYM_vcRGc]ckRi޻mc[ɣ=nZ.1L*Z.2L*W۹!ݹ5VTb&ިm ݿJԪ}Hݏ⋽!qzԩ9B}j % 0R 橽ȏF]iRIc橽.]ƞ<AE^LVfq}+̘C TV UmTmSmԸ]]z9ܳػfKĺW[Pq^?K"0 `M ɠUۺL}-م `t4}j} d} 3$Z8橽Aԫ h[d1UZ ]F8j۴|km",5ˇ y%!ə|{%!0]tz%!ɚ͛.&%"y{%%zx%Ήۉۛs.&%"tt, %^%q| M#sMam(# >(^0~xcy!prz~yYpܜyΏtܞqΏ hNK {|h^e󻺞Ŀö fcͿ)|r橽K͕ ĆS rpe N䈏rܛ.6rɘs.Ւɿ}fptr)ΐ湗͒mW<KTgוm1ec^GbRYjZ.3L*W}t]DYcrM잕MϨި.>=nRKEIiTKjt#ϛsq풛Jr iG ^iCUKt͓kܞ 0\ ]UjSKt˓j6F]6/]. eiXK ݏ* nG ͅ Jq)!9ͅ(jkHVA뫴gIJAǵkgJ?KAg K6AɸgGC*Xf`~)ݹgLC5d;Մ:UFDpwfc˜vmqjEFznfr0gj^|Dl],*l_[t_[j^řػGcK1H\gUWKx\  ŗ ŗŗ e]jػP;KR[EXݧF'lM['lM\i: `UػHK:u`V`U`[㵈`թ iUa[ nUѶQKkTt ZlĽ/ӏkioǪV*4u?i=ɢt 3mi@3l i.#VMIӞk8z՞8D֞8@֞8<֞88֞84K e =n"xbR؈M󻺤s bUҏˏjhQKcjXݕ&u\ZĠ֝ciLj*o4V?+% Mm3mCt`3%fiK4O(Qk GA%%o^)M\.o*mt2 nv.|vt@pvƶv(]]| v[DmolU\ rXENnIu(\p[c͡GnK8D >k{r$pEN\:"@+lt8`"\hUh`[thU`[Rc.ƸmjY]ioLv|mrV|mNc iYhHKc] g񝶷K[KN@UUNUn͓~z{yx%+wn" ֬Fvcvdtf tёkc㳯vcrcn. yi"kӻc'i+RFcmRջcl^( ,c @c[ _KBKd{ńͽxvS@\sۅs A ] Bg$BzYuA ejF*Jl^5ln3ś4ſlLlkލ|HKlFDmgZaKKLMLNfLOLPf,*m2zhiP."n<o jqřc 2ՐDYWPQQhSRh4AnSTh[SXh[ST[l˘XUͿTQlVWG|oϒl;ו81\DݜE͝GHImJKݺLNmM͏:ŕ ޟncJ5r:"5^ \[ d,d (\ ]6cL1+ӻc$-+cͺ| }Ϝllzf\[|,]lf{QBl.Ydrp:veD#dl/%3LElqU(]q(e(UYU ]І]@ѵ9(_{<@T"g9eoKûQV꼆A,nc-F׽M)n\[Oнc=1+K׽E|@^oc͔eQdm.Cc9K|ec(nQ4]U]mmլ0Kf3f~ƕ@x)ʽls.VQccWɝ{PaT#g> 2ob:voyI:e$e kӻscckPPsΝʽc`If(f$ema *tC2a6(--:tA 3ml F#m\,"$e)xgOŞtQ_P!{?Du.pYhrllfgKɻ[ΝfW Uǻ_ee͔e W"4mdUkXBŻp$DۍwMwD]J+-UJ]@a|qc ]8ƣLD|rj$_֒_r:`M!KWW権WkWk%& ' ( ) * +hH;ۋY݌Zݎ[ݏ]݆^ݣKk|gI;DۣY]|gM;P $ % & ' (h)HYZ[\]JQ4[-|gO;YDݾh$M~F1|$hHo;DR4[|gHc;DI1[gHVDN1|gGI;J1|gGC"i6w/{uɎx&{Y|鉐(ܐ{艽v퉏(܏q艽/Kd;~.dcͶ͏{y"N zxakmTM mծͷ5] fخֶ;nZg,kVVZZ|!x!"р!L;`œ͆qܬˏZ;Why[ Ǧ\XTsDm=\󻿰DͻKԁգE w K?:{NUNKPMN/֞k b󻿆ʻa[Ͷt?}FyߐrW ;KwxrBCrW:KwxrBClfO;P[h/cdirjKjݴ|߲L.lחܐftkIfud V|kD ŏKƮ|k5J\cedElAmkdAxdpAOdqL:xtcQ>L{c ],,tSNψmܲޛ=tka=]m Nijl kc˕psٝ/͐!m.mPJkc%"3ˑ#iUIkc$ 3{!jg| |  w  0eIp`;=\t{mGG"VA"wx"Mkfgffiki^l,[b,[b2K(3D^_^^ki^^keDȧD39uKpfDNVmKneyddnkyK*4D Tu(̑K@lBAECGFIHNJ(OD)OP@BAECGFIHNJ(OD)OPn5v#G3333``3TS8 "~50H!5H6I62I77G2)|t"5"' * && (* & )  *  "ONNfN ;)DH"   \\\\    +%8 D^aae@^ haw^2&]X*b`agH}d\컿X]lTkr\f~^*J\]^h       $"'3   ^ |Lݟ l| {H{l|q^*J\]j    ! \\U\d,   \ } a, A3d_b]]] bIT eE`$JmRES RA?  ^BFm|G~=lI` pOL hFYbRh^ ]b`h*IAS 2\S E A ^N3 հA  ]Dc aްH! ^a_񨰻DI^c _  ֜lef^^W_`A\O Y *R]EZ\m?^k   aΓzJk       y%*\\R]D,\]:1      'p^k`q kl _` \\}]il{l|ll ^~jz1]j]j]iO   `+_c   _K_Jc  k k kkkkl { k b]`h k| l^\*&\`f.\^\a]bP b]^;\\\` &kj_]{ %hlBk|kBkJk &*k\kT*gݮ\g-B%k  k m  #F\ 'J8#* ` h    / 5  h^  k kaa_b` akfalf a| \ j!|:|lk yЖ``g"{kl{k{*kܮ^ ik] l&\kkkkkkkkk{O]i`gk|kk`gklkl&kk\kP]j^6_g\P]$jl\`g{kkk|o]jX*2kPZkt*Կ| k.Bl o lߌ{P*J\]^_  # ; \q \ ]  *J\]^h       7wR\ty&1V:\A  Configure progInfo m dboxfile_db X =08/TcF V=`Slow tled> =` low tled> =` low tled> =` low tled> :=`Fast tled> dTcSVd=`Off tled> d=`Slow tled> d=` low tled> d=` low tled> d*=` low tled> .dB=` low tled> Fd=`Fast tled> 0T`chV0`=`Off tled> 0`=`Quiet led> 0 `=` low tled> 0"`=` low tled> &0:`=` low tled> >0R`=` low tled> V0j`=` low tled> n0`=`Loud tled> T,cvV,=a Tc V=`Quiet led> =`Loud tled> TcV=`TcV`b=(\a$a n$a  n$a" a4K=]Jp~abnvJ~a|rFavFaa9aB9`*Command > ~a(=69Configuration Mouse speed: Keyboard autorepeat: Sound volume: Sound voice: WaveSynth-Beep Beep volume: Desktop screen mode: 255 a0-9 Econet File Server: Undefined Printer port: None sradiooff,radioon Parallel sradiooff,radioon Serial sradiooff,radioon Econet Printer Server: sradiooff,radioon None Loudspeaker soptoff,opton Keyboard Caps Lock soptoff,opton Auto boot soptoff,opton Directory soptoff,opton Instant effect window drags soptoff,opton Archimedes/Arthur 1.60 Printer ignore character: sopton,optoff 10 a0-9 xl`R  =0x 4Td=0OK titled> V=a(V=a(dV=a(0V`=a>9Name: led> 9Purpose: > h9Author: d> 8`9Version: > About this program Configure Convenient CMOS RAM setting Acorn Computers Ltd, 1988 ***** XL\R =0File eh|=OK titled> F1D=2File name: | > !Draw.!Boot | | Boot file for Draw | IconSprites .!Sprites Set Alias$@RunType_AFF /.!Run %%*0 Set Alias$@PrintType_AFF /.!Run -Print %%*0 Set File$Type_AFF DrawFile | > !Draw.!Run | | Draw V0.44 (14-Dec-88) | IconSprites .!Sprites Set Alias$@RunType_AFF /.!Run %%*0 Set Alias$@PrintType_AFF /.!Run -Print %%*0 Set File$Type_AFF DrawFile | if "" = "" then Error 0 System resources cannot be found | RMEnsure Draw 1.01 Error You need Draw 1.01 or later | RMEnsure FPEmulator 2.70 RMLoad System:Modules.FPEmulator RMEnsure FPEmulator 2.70 Error You need FPEmulator 2.70 or later | RMEnsure SharedCLibrary 1.02 RMLoad System:Modules.CLib RMEnsure SharedCLibrary 1.02 Error You need SharedCLibrary 1.02 or later | RMEnsure ColourTrans 0.51 RMLoad System:Modules.Colours RMEnsure ColourTrans 0.51 Error You need ColourTrans 0.51 or later | Set Draw$Dir Set Draw$Printfile printer: WimpSlot -min 256K -max 256K Run ".!RunImage" %*0 T $0SK @0SxT}ֱ߾0,Lq({|))')$-el,(]_lď:ٺhlh $.[:ٺ.a cuq` v]QQhhlp^#ǫ6H"ƫ6H ץ۾3ݐ23T#] 6"\6#616"56i AjrH z I qA А־uK LgKSuq4,/2|18)0'iahssorcrؾfuK&Qa,!Qı-~PUu_ˆ lU" m`*qҐw!WkhJo,~:)YkhUo!EtYkWho!ErYkWhUo!E!E!En!En!E̥섗վtKѨ3412X\|5'6-]tvJC5 - !$"&&O { {X}ͭ(8{ as9ft  { q { C݀o 89oכ8+!]tqb\o唐6XG 噐0ouݽuݵ4 {Zk w뷎z |wЎ lLj $ ln׾qK5 /f64|KaqrTi)(R!s!WUSQOMK)IGE'3v埂Xa˛Ļ7˻8'_(r:ms&(ȯ(&(z& Tb-埒 d fX@Qs$ڀxAL%]&Asբ؁']s(sբF)s*['[l?3x6˻7˛Ļ_8:'L(rVm(.&B&5&j(H!h(@.gpdv drm,u᩼4~y4|m4|mo4G(GpC0pA9pX0It p3qn?2m9i;oN3Dm0 _x3d9tupC<<1rwa3:ev  pA<1rwa3:ev,}VW$h.{Z\ZU.eRlۅWP4, FElwbE[bۖ(X1X(@XW4ˎazd[X!&Z[,C1$\'C~R\ahx;&W4WR~Y嶐|'{4wRG1E6оRFE{4CU4{Cw3ĵo3*alc -s misil tduQ,o>SGi o3*iub -bnocl_uneax"d!`""n irp-!g'喐w4ERПF6ERb4,lnVY# R\O뾻b]ba4f9)HK 3Q8ٽu$D*{:mީ;Τ>ݪM=ݧPݩﭹe=ݧPdelti% s%d% %%%"~Sƞɤ9mpKRb@,^q]4 321ݬNZ-O2-P3-Q4-D52EF3ϸG4ϸ'5&#tZmab'ss#]pbka|t]h1 O4,Q}`D`k8V8`|H`|L`P` +`+ `n%'d|l63 `j% 'ڿ$dE" 4wN#="84w|4,`DmD CL}lL}l+LX$LZe|#(zE(z_!j@zX@zUQju6c"pL3H }J:g$ "DG1"$hpb٩<1]I|J}K~LM7t8"22Ȇ'4}%EŒ&h } Gڽ% N`xLP]ob 8hd4 [hr4C| ["BྰoK]  a4D8a҈4 D|D~!]o4hd_"DW")4)WS P2 Snl닷0 '܄^ooSW_" ҕS !qˌ!a!!]! &~ۄ냠LoK]q8q!^D:ٺlE¤m*aM7.m}%')oKl]ChQW㠼 4K⋶QjQ ~Z[Y^Y c;C 67; &(X0!"ST†ŵ00 | 12$m(!m,V]^]\[faY4Z"!3 2"Ɇ2f]n csݤfAPtdU/PF4M O"}|36ٰ  aSq(cńlnK|] m Pݜ% fZ P6K 5230)/#ދ+ $}5f%41 $},f(r$1W,~-,,$cņs6m` /} ئr_id3r_"3u9 gat nwo ]nci 24PrMN3Ev {pԉqԊԋ| a%z]mcirJNET+ {pڭqڭܭs^}ҭ$G݋ޝ~݆cj%WݯڄmKi]cjIpp4ɇ 4)krMN5E { ^krE״ 5WŴTξ2E {|ooݵ||Jxd{h夽!Ԥ։֊ Kф, mKb]|ܱҲޯA`ͭ,,w,-{rE˴ 3pݗqݗʋs^$z̹"lK_b l*~F*Wbl_˩ 򗈨**wF̄^l9;8 VkO암@'(*l')fྐlK lfĒ? m=jq>ދ΋ݵ匭X4fa B°q!^ҷA0q܋ἆݲr|4]Ŷ^ ˹ѰA q~ۇ0V0qӋzfr"l,拇ݵrtҋ뒐盰 rM "~  w fPrD%( &('(]kb۝(pQjφ 4뎀2G|,Ȍmr hċmrM ({"+!+w#(Ku("$!fmr h,d0!ݵr,0ҋ됷 }U]K0Kq̈́þ྆kK]sP̼f$Wܭ|qݛ TjkK]}qeqMd~ Ep̼rrݲ0岰;erqďTɏ-XksZIhku[v jvq= m >rݔ+ !~ " ruWt r1 ur t rRKusnWyusGsrzC0u sG nxB`Q!ҭ8 1SʠYT ʠYU _ʠY_npwфRJ]t;kEMoU"mGEٕ)' Q5 aQa3p4ٚ Z!+4'mocnI1 i<3tam(c^ 4mw ~ xk!U k"`44XZ8( &_ Yλ} λ!>hK^aD {qݻ [H\4q ֌ "q},""63 `j!|}d hg0SͫHW2']4V !(Ov4!p3}LфھgK'-V4 ѻ {q 4rL9rޛ%޹s'~94L%r훛2'.~q%}̄ѥgT㠌@/NV4 ѻ 9%r훛ǹK 4pQ94, dilavnItO:4|@`#M@|2@ȶYU/[U6W5w LY OOfCNDNNa(ʄ w)w\(ʄw)(>\$%hQ4ar%r%}̄gK^a_w''،44#ŹCI]g|\̰H m.{`^6Pa `oESQk⧭hJ |[D/\41&p,;24T*[ponUI[~8_ pJi~A!{&!ƶLs^2%{s}]fbT5: >l /lU2δ#tܾtfK-|^ͫO J2r^m'V4 ѻ !}^Wf\SͫH'24V!!4C,!! :p>'# C}!̄۾.fKSͫ2Z'V4 ѻ !}pf`cSƫH23']4V""!doޙ noD@ x[Ms5;4QI|dL}hepK\[ 5]`31]mF~W4^%̷FQ4oQ9 Lsj wƺ"˓F:4]QFd4 gR"lF:4QY^_%XF"غwF:4FQ4QL8VF"j]ebE5 :PĞUJ#2ǺtQJ[ceKiaDL\nBe!.BX$V4 a!] B x{QLșM]6#u"948Qˇ"94QNjCE(͵o`U4C o6\kpݙ٨ r]^CCopӇ9\Y4ٽ"%3$m!{ΔNj#O0Q{*Pˁ|41%dKP{a}4Wi }fONV qX'QJ[dKbhU L"i|4H"5BۃX$͈VM]wa aтV'l`3vWlpJuoݻή 4p!4 Q9!4$Q9ǚ(X^XE4a8UXfalmpJoo[{=X4aVp|JXλ!,O0uQ{*Pq|41%4dK/b`DkVU4p, Nѩ]tC6l5pݟoݮ|ڥV^uKݹ`6p|J4F,ʜ Nѩ!tCdU4sO9!84O9ǚ  C^4alppJoݮ|ګVo^^C4aVp|JCλ!QOQ0Po*1k%4BcK^hc wk!gSTp[SΦY"`4$C`aYC`7\GJYD_8E`KE`9F_dF_:Zwgm45}t'\N]N$[S`_ H^H]H݄Q7cL!Lw@eS, I7eFt1 K0A#@:'B@a}Ee3Te1D~~ׄ cH5Kݼ8[ʻׄbH]5Kݼ8[ʻ؄bP1݇J84ȋݵwфbKc]<= :n&|V餙ʽKY%P4Mhה{KͽΑ{Ԏ;Ͻ. 2w̽̓{Ԁ{Kν}z;2. {ur{Kͽo{l;Ͻ.i 2dw̽a{^{Kν[X;$pT5H%F1&9mAF{KͽC{@;Ͻp=S FHT%519Fy&-wkuemc݅ͽ΂jϽYg2. {wkuemc݅ͽ΂jϽYg2. {4˟&@Q4$8~$"U ".W$1CQ 0.B-( -&8| U .C u -CuC.W'6 -w T-B u,BtB -G ,]aaHĮ fԐ$KXsUmL`rT.k\!4~ @70'893:~\4avɦr!448 ~ 8;]<͞=>'8v ?@~(U̻4=!))񐄰aK< akĽlvQ94ΣDhEYޜ50jWRfJ (4, C4]IC4]v4@ Z@Z[] : C * |ap؜4! 4]˟(mSZϹ=,_-]K4V5J%{4]˟ ]>a1QImX8[‹H]`ci∋∁Hź|\包ole,58VUSz.鳠S .DkUSSY@nsQ4̨vL5# ¼أ̭_oo )aqN o F$ofjN$o,Yޒ\Ժޒ@ ZG#݄d`teеyqf$_[xmxmnm݌4VՋX݊W݉VU"ۼxֻxֺnVm]XWVUݙPG-5H-6I-7J-8C-1D-2E-3F-\4}ւυ|G\m; ]k1 an- [j) _%(_K]v d aY14C2XLCC!d]_ vhcd$u[24:1!G$t!<Ӎd꾶_KkbdRbuC1W4btsamr#d^_k3hf,@U14C5v$ؤBJP66BTQݤAKݤ@'53ϰf,ߺX_Kb]ԭyh{D2s434565aEZbHZ4CH\ 6[5C4hӰh_c^z(ӼP^jJ@h5K86X4C΀{]IJm zoBpB,z T^ ^^ ^1"$6C0̰4,^K^akq1%յ!I$g:)kB<Ikg"4E$4G$2G$2E$՜ؾ^KVHR3qYm8qǵ*‹^d`K~],22wD4(4wADLqPqf\pXmf HU,U= Z6V9u:6<,!2N~mN}m"|# rտܾ$2H2=>3 y_j%{Na4H$3=23>ݠo弰4,޾&^K̼]pkZLj7T'x9:,x(xft<R50qXkU̻g.'h]q^d d6,z"^:\a|YYSkbNc,fCס_褨km ֋ݠ QWK4rkfK^ ֽQWf‰ A^Ai MY ^Jf_Y^f֠ QWK$]Kbhƒ毒AO$@U}/5 լi$-k>KB0AEF:WRE)фN]Kc/<pv BS:Y}@=UER~لK%]T5uA 7 7j]kgfgf03|C&.ф]K!b맿:`_SNE aNRmBZBՖBZQNPN1-^G$4]"D[ApXRD E1E^RE re'} CXD1R.E!\A #TKTAavC՗@ZPE4$$"2E:X͝[̵섶!K\ e$@OKe͏KTCď@Z8E2ꁸV"$4[E:X͝[̵|c\/l0o pHvkBZSc}=XR@E(Rބ[5u7e7j]k 環9现Qad(3|C&.o[j^d[|̓x 3F&6v*S|m6:UӺ-ױrH% E0wT2*~ݲr2E~2E2E~2E*~2E~~cS~чg^r"RBSчZK-Uͤ[@V]UoOKՙvOtAՙ@Zxvq!o!m!k! Lt …4%{3H |H {B {3B {3H {3I|3 { {I {3I {6I|6H|YKbhH_{ pڻ ί2Ewp ފ,4~YKi]8cgV|CM@ Z M@ZM= M-~@"XYKbh_ pڻ ί2Ep ފ놠b5Yb_~Tp~MtD|d̄~Å௄=*-{௧=䏐-௧=-{௄=-Å௄=-{)"XKbhh_k pڻ ί2E0p ފD baX_^!/ӦŤߢ^ Ěh֐ׁqցÈr_|}d毕\毕A毕>-CXKbh(_k pڻ ί2Ep ފф󾅆}_i<5֟U `aIՀxMW16Jַ%{%WѾJW4pƉ}($Vhh6m21ݾ`54H`N`N`$ ejHFp螵Ϗ`5:ٺCM35sHX"* J2߳"#ej$fu;#c ;̥-(3Nd=ONꯘ-{ …$|FI(]@|Fn$|wFG1(;I(1-cE3cD2E=iDYi=P|G#4"* JI`$N: |'뾞hK^laEqhaF}叆ȏ}΁$}w# }o o$F}e F}\ˋ}V$}L}B#}6[ v[vxXlYZx@qXwZwՄ {OE(@G=t!{߆xH/w`)${O(gh@lF3-!E hۆT e~p} ~ҫ^WdjŜ[R"ݵMm⌭O݌Pڈm⌭Q݇Rvq\64|5X(V7X8eSY'@:jSDU6\:-.~0"$Uģ(ӵݲr @(vq4EY(n"$ak" @.{fXWRbF4̦G84^DG$*UK^k۝~rcŊ$Éo!jϏ@՟f@҉o᠑>h4,YޟRMjVfZ48G4D^ tG412'34,DaeUfŋwHG12@3ݟ4@56| '8UK_b~S~rhZ|x6:V"4+S[hT^t[4>S".hS^t[4>S".hS^t[4>S".hS^t[4>S".CJ[SKDz(sV\*QokOOf{5!Ctr!xeJP4, h,922|#߲}tsyS*oDF me!:sFB/թ-7r##]gS P`sX4E Pr gQv1ؽB/թ-7r#hCS^ɼtzKL>"4ASK(SKb[<gh "F1RM.!"/. 噄2 SKbo}_:wPyp|*5FT# }.!wH! %Rׄ2RT5`^L.˰-5RKP][Vay!E/ !ht 4 噄2RKbo}_;wPyp|*5FT#}.!' %Rׄ2RT_<dL.5 ^]Rea !E- !e2 oCR_bw}9PpF#5ATn!}.~%R0׾RK]75|6ZXU8V9hLb.5 r@Qb@U`f$` `V52^11^-^)^%V$`hV(`hU``h4[h`dh3[l``h`hf*2`lf&1(`f"V,`mhUd`ih4[p`Hh3[t`Dhdpf2dtf 1,dfV0`Qh4`h~W8`Yo}W<`_h 2  $ ( , 0 4 8 <˨Ӝ'>,ht 4 >r,ruo1ll3nrettaP,nioJ,1c)cE"W6|r>3F,eman tsN9eh t,eT>,iuolox'gkcaB>,rrlytSnret nB01tap2tap3tapp J0ratSpt#eH,h@i@C@HUh2Eh "@c@ieH,h1C@ h@*h HU#W6r>SN2 h HU#Qd Q<f½l3 E[dE4@C4{ !$m h(Ն6(hՆ5,lՆ,f(hp6k,ht5k$h0Ն 34¶E E448iu4ՆdevaS,1EK,ely1?eS,rG,mooZ>,looTrGbF>S0iv weN,orepaP,we,stimil n irP>!M,S>,e>rt:rJpS>|1 txeT>,saevaSgC3ro#gC3C,enodehV3dA,evom ,tnidtD=3O,tnemgepҢp esolC,tnE>,htadrooc retaniEf=N[ LDhDDιuqݣ?Dxx]oDuq`4qD@uD[uqVBqD9uͱE|DHCnR|JۢRIR ||Dע4p͸zRE|4GE|4GE|DRhD[[ȆYqJ$^U4Daj-I[on^\\w LDguq?J; ( /D ӣ|a{DaӷDӟ|a{ D~a{D~a{D[a#ԷDaPԷDaշ؏;ˊJz`Ɍw wjw56X7X8]>yvw8dEaRowqD\x(mKXc !." 2eDUWD.P-ex.(eDDK$eʅDG eʅDCeʅD?eD;eʅD7eʅ3Z'{4C[E~a˱'qY? Q<# z: ;: qY'] X5l6x7C8,Y5q OS,0v~Ї.,ܶ\ŋ0 G "v /ܶ\ŋ@X+s=vn |~/\U} 朡vt$| ~0 m#|x"AC:>pj4,K '96mEwMwЌw軼~BE~||11'˜ U4Ei⶞|| 711'ˊ U4Eiж|z| lliF7Dƶ|q'Djw,rD|>{TUU ]4¼Yj~BE0|N|4¼Kj5ξB E"|@|xD񏶷>TT4U,4 ϼ1j„^B󀸷E|&|$j4,μ5EB륷DžDh|'D2b|P w]軼Eξ E^ⶨ|EE ٶǼ'軼~B E^̶||1D1' U4Ei0|ڎ| C71H1' U4Ei|Ȏ|FkcaBD#uqݛ\!]\0YζKz %,'DΨYxD΢̢YxDYD睱̘YxD~a{D~a{40aDGYD焎|YxDέ~YxDȰ\xYx@tJz80ICgew|ywÌwwD;簷̩YD]簷̣Y¾D~Ta{oP wY]XFjq^|a˷=ϰݸΝ̱||a/ϰݸΞ̣||a!ϰݸΞ̕||aϰݸΞ̇}|a wa{|D5pDr6o b[D~9Jz }܍w~؍wԍw|Ѝw|̍w|ȍw4ΤidL{ c}}! } }oǨ|5?F4ΤilL{ e} }}}}o:ǀ|5 4ΤqilL{ e} }}}}o R|5 4ΤCiL \} {}: -'5 $i4,L|Wc i} }}}}oݿ~} '5 鐦1H2GtGG34u$Y{˺|xC  6Us()&'w4)$"C~!N$#C~" 4ǖC!$"4ǖ4pCn|TQXSƠSV4̖kU"z[O{t$Cn0‡Uq[x$.vZ{JCևDɀDZC 񾫼DɀD VZ . /!!""54lGC񪇇<z_{CD[!/4h!–C# x[$.4 ϖC xC$pSfCxCޗ)C4sR"CsC[4L8q'Y]d$rC<w4o,Yyֿ|zf ͓[{'վMK [1Z4wC~CC'vIpX3ྸMK][1Ck4ʩwCB 2{UC~2Crp?n?t #C IC~g'{쾎MKi]c{ooݧ: f3F Ȗ:v;SɦX}ͭ#84dȮy9)FƸ#38ȷd#94y)x "J? !/(65,@%D%mH%L%mP%X%mT%`%md%\%mp2l pFh lSh t%x%my4L 礄mi]{\P$a \f&' (\chw4W5d*&q璱Qhp,mmTصa T⋀瘑瘁AUY( /q_Si:W*%+0% % TVT@d@@%&>$Tv'>(Tv,T\ 842v$82f(<2f@2fvD2֋H.Z΍Z\02sD2֋H.^4303fm^a~ZYcXS̋$@jU@ @ pG42ajq8cՉh_Kgw4aw!!!0w| |f||f?0?0ĵ fi{% Lr}d]L" G}% Lr}d ]K"0@ 0 |Kt 0'Cq:f<qm} !RqD: 2%\̅2 m \ͽ:G- 2'D: 2 \̅2 m\w 6Im 1ݘ:2G {FT 5C͈*m%m'm%s JKp]dj\uݠݨQ RGS 4muU4S@B 4w˞p'$]sJ4u7v [8ȅ4a˛r w9 7}r !]MJmmmm|mmҭ_8ǥٛ!͘\ GS 4V"3F ~ׇ;z`, TL! JJKph_ܙXXWΙUU:cOٙW#啔@" l#啔@ l_["4򭏣암@}~4E"{!aIj._`Uߡc^^WT^:rdVX???! x[7X(B B pp^!34[^<εڭ,]ʒ)D^)צܻ!)u)DuD^)כܻ㼏쓒?)+f ]UImmmvZ64{5g78SP3Fd 4vݘ6GS 4|*DŽ`'I5bi ƏuƊq ؐo:iªߍ}р}vШ Щ ݙ2 }; ݙ2ځB  وΫ 쐄zHK5`뜭buߏߎq:oߌ–:oߊ«}} ځB! Ω H`rԢ::nYξ2E"t\ t^2G t^ t^2G\ :nE"2QGTrѝP:34֕ߖ341[2E Dh^ ]^HHj[N\ HFjFKp]dj;:T7ↀ w fgwfwfmy xN[wNvvvd w D[ze Gw vzg dzXl$  f| D({фREK6`QCrmPb4ㄌ۾>EKiI,ܾRq᩼S, ݋ф߾EKeVy Uq+r|KY!T){K*- ; i1a~4rpMqp!|]D|p >4LU 2ܗ134 mpu. Hٽ4[H۽0[MZnMZ~!~!ZHٽ[H۽[p |J 8dф󾃄~DK]{7nJ=  6S.G~ 9GS ~f~SSG~ ܳw;SG~$q oSײG~ QgGS ~C~P̓{+0ZZ,0!Qa 1̈ߏqՆ͈&Q,!uhĂُ0o C|feYxUVWW_hXi}\ҭ~ďQшrDŽ㼦?}~ѐìĬߏߏQqqvχa̐ň1rQуĈrσň˹S фھ͎h4ް~Na fKܐA$Qtׄ,ÃPZ "!j߇ ф(CK]횁켡횱埁ECAEDAQ D4p 6124m3p &Juۻ ۮZH{ZH~!Y!kZHgZH p8|;c ,ф󾃄BK]{7nJ=  6S.G~ 9GS ~~SSG~ w;SG~$q oSײG~ QKnrpޗ4pޖ5 :͟qݜ݆'bo nr$Vm f0Bp$KUFT!.CN!HeS!5fR{]ao ڄ( >dpݛݬq᩼4LBd|,o3*?-Farra noilluf yhg>^ksp ޞ P: |p ވ4r p eaO{ ܉ H{"1!f,>Kc] iKA嗐J<*42)&1$%k-4# ~˻ Iq440}oYi 4# ~˻ q>om4Z # I{ D| 7^ͰAqVA0NAAM]=bkżpݕ4O 2ܗ134p!J{毻IThI(TX"2"RIThITp|J 8[]o=ci56X:[=^3F F 3&VF$3 ڈʺs3F RQ?(XZ~  ?YX %?Y$!KY  !o !k뛋0E뛋 E&('(q@E넋<K|ktSՕHIKaJp?Ju琁orM_SH[SHo(\15{|roGb4߫l QH6SH½o2Sp|Jo8o[]48h-k4J- ?yHriiXUB]TrCmH4+G@ͪ4\+{Dhj_LrAmPrVGDͪ4@+H4+Dh12 v'{4ak]yTak"rP$w<>eliftniwOl,!QǚM1$a`4m#{a4vf{P9maert' 3p>RD^LM*ua4 ߵaV>4,(^EۼN1{a44DN/, f<RWah`!'RYwh>a }#]7 bg_Z!S^r a!mr a ^!wKd7Ka˦е吁mg!Xh4,1!4L!^ؙWJ4u}qJ4ݙWH2u!4+MEڭ**wF[~Ѫ:k\Ѫ:5HKt!4 Gt!}qH42!Mi]:ٺj^:ٺ!!^" K6Ka向吁m!94Q96!Qd^ `Q` 0! T0 !Q ?Y-~n ?u-Ǹfټ{ֻ{f6<t t%%#܄^IG U?栞Q"ބ2`Y UՈ \aHl bͪI0kJHkZ0k\E@lE8kZk\EXl l]PlZ(l\ \^XkPkF(kZ k\̹^l^@kZ8k\`k\̈́m2| f($f$,v}~ .Ȉ} T5H%So,ŽA@!HT%5SѾ~o,bŽ x&%Cւ..] 2H dL ٽ|'nΎ`}_ȹ핑ΏꙄ]15&pK'HI\BCŽVf]kI k ]HqUq^ξξڅ|I u\ EI M~|1}{40tȾ (W |81{xFB<#2 dW3rooc 1:ڙgw3dA,&hy1bzK| vH4,Qy5QF0 Uv {1#.xL!B.etcarahc r3i=,&hC1dqALHL_%Z +$M1{y.#Z )$?1{y.Q!Z )$11{y.8 ii2llamo,&8 ii2egral oo,&8 ii2lum oeTlpit14 ,&400ȾRaBĨ1\ {1|}Fyl ac/#egral sis nar\deificep ۓ,&0KLakCPe4]+Z 3"R1{x,m]44*U {1"C,x`}l_#A`W41ϴqI~;Te\rom 1nOo na1ܩ,&fT2l $3a sraeppHfjt%3)s(,&ae0}d!L4"F4@^iDUj {1|gLxl4]ʇXحBV'yts Ddrow el,&40K|ak€ !oI6]Z ";1{x},VALJj7hS,Ut 3w]9evom a ,W&XX | _|G01\ {1",yniatnoc vni sgat dila,&SAoZ )"t1{x,4W}Z ("`1{y,eod ts3niatn1nyd3rr#stnemele,&;Td artxe 9aƢt tae(e ehfĢtce i,&ྎ/K6X$)Z0Ⱦ1H0 |"1{yFTʢnifet.is noitisi ez1etsicnѓ өezi8,&`/K}X$V'.Cڳ̾l)qJ/Ki$O\4N:>miIT UP {1!gLyl!MkramenIi re1mulox'n,&CֆhE]/y`|_U6p"4,8w4CTY5x8TC(hb1%!6{x-Tn lautcArTebmu1snmu aI9r)c/ : seohm-3ifice!)nmulf,&}"ۡS4q]i1%!Cױ`6{xTorezNevreser  sdrdHa niera t1cejb,&뾢.K^a|ƑUA[8+| \ T#a94aQɯ]4,(kŇ`Qrev  ~s3ib2hgih ooaw.^DnsʹiR TY$ /44)"'s,]$I.ܽIIfIFf.'[Σ'[ΐrچ4E.dfhn.md哱h kdhݲ,VuۄG.]f94|6Y`:<t rkq_op_4۰ۄ}-$VZ:.'{Ct۾-Ko][oX>ma-^@cs4,҆4"'$rs,ބڕ-!d(]1hQ;'[vu1 !\&0 2eM.ytini 21 muidroC 1 F\Mb.sup10\ 21 mu21L\/DA\١ 1 QɍZZ΋dl09^ 06i09^0{ !c06Uę/фD-K^a=jDHλgzIyVaEvY#hB]eHIDQ<DμgHIՉAU>GΟ-|a,kpѨˢDDYl!aDDDΨTD4@R2}6H2kRE)2,++!E&D&YE.CR%|Ǹ44CCiW`~C@G| -W`~4,KZY'JA  8ȟW1F~GnraWH:gnif aera t')n dluoc eb to1dedaׄc,O3I4܋8[{ݾR,K_O3I4N8[\W 4(D [ yvE kFy猌w}B صzv!BzvN,B"k0A$þݾ ,Kb\UEMNVOp >ΟRڼȸCZş-[RCĸUΟRڼȸCZΟRڼ~`C D[a+X~ Ե"muPM΁e}>.hE,kBΩ>,HS4mo,D4Ҁ @@4 &mud"94}Q8%.]=+uDc|1Vu D4эQy׶=Ww" ̵˷{>woǧT>" ̵1}=WiD,DΠii=," ̵뛍~DW[PWw" ˸Ή{F^hA>~E~;vYQZhB%XhL,JD%UW~hhM,hN,@O,VWP(iw;\WY"@GZ>VW""-̵맷" GC@yG}@=1}Uo}971}LD^YM_RTY|}~ϧ@GLE1ξ ][ \ [ٗ4F|\4d0%2QF xyJ4E|X3QExyJ4D|X2QDxyJ4CDYEFVdD] FVdG؆׆|ţЌY1}څCNÌ|飻Y]ojY"  30 `yTZ/^.ƹ" N1F|MF̱Y""띷" G΃@yY 6;u: [DC2D1wEDxp1D4< 14Cb:QCxyJ"ȵ D["C" %Jc]Q㠒f)||wv|g`4 h1T'{&Έ4G4g`hc'1&C4̟G>Nh4,B O嘴+۰Q~b] [ _ TY‰a-ް QXe ް QBOCD-Tt~pQ)`tcgh1'{&Έ4GvpDCD|m|~/$|A`_cgh1'{&Έ4D(#냿0AaC Z烿aC ՃMaC Zr3ͪ4+ˋo=sj^,d{,حZz4~)-p8{DzwD^ӪӣӢڻF}DV ,|~k |ZBY#j%l_0l v="{ ~v>o_~voW|~Ͱ4,!ф*K!`0n fō7SZS5P%65bu.H_[|,S Z^2VoԷ#߄4*T4{̈́!SL w|l||4LT v]}*dj.Tbur |Z\\e0r^u^TfW(Hg{HF:1:!I[C*K wk׽~rM̂$h[GmGmrZa"qd]1ZZqU2͜3_4rrfrf4+eͪ4/+T AwR ˶qcEq|UT>G$ɹ_a4hRrGGZ4y)Ve L˟"4h!? {(4,{\o> Δ,$uaU+4~{I<3}J;2]6tvL^reMuqU$fqD{]_Y!)Hro9}QyG4iV.~!V4m536,K/hroO^~Ew{!4̆ν2H{զDP^PP(kDmu\^̧Y8dAuv-w^w}>yHiV{V4{>`Di24,!}Ȅ׾fJ!)T.LoȎu48'Ȗ(-||8Cs% :a1e0 3mJh)YpeM\"~,G$}G}lP١a! , ۷rroCdIetpu1r)t(3w]9"!\" !ѤY2θ3ˇ 4Db5 , m۷CaL:un nr rebm!gw3sWsim 1`a>,ZM"CXa> , Q۷Ca:w dne tsa@9hc ewtAcara!|>$Y1hF%AZ~$hl>iE;%B_L{D2hRcrWiU%M~NiO(irziV%P,{{>̷yQ4?y@& DCRLc A\( c% eb m C ,R ,L D roGΝAyY23ξER!6Y3ξRDE6Y3ξRDE4\` $ Щ)%6$c%\Ci|]o1% eromno naht  }D\ e1m5YHξR3!4%bއ1 Щ)%6$c D\#Cʤ: D1"h~rD%ɼ1 f9b ~#F\ ni1nammZmD,XDΤ_D1% xenuc depcarah1\&9#YR3 Ebȶ6YD3ERXh4,1% {igox3nPhtdiw1c| 25a<%j1 ox9nPig3sN9\&9# FDFx r,C aʿ|Y23ξER!4\b@$ Щ)%6$ c%\aPy1"\u45VR . )?-C\a:h tstsaeak Bnmua8k_;Yp3I!e!4DV5}4|ڑh[=%B~0  ⃰a zfzfzfzj\X>8mR`&\ _V()oooe@  `A!C|B0!,A||q rzDuYߙ_G. `|A|q|r{ K{瓱{Q{ Z͝#˝*C}V[Gd![R"S1em k  ]\f ,(X(a_ ]&m\X(m;#˝"|̄](kcƣKȥԼB V4||? "Cp ~\] U"Vva$|Y0G2 4#h|٩Ĥ!D Uh[JC }ф߾Z(KUB(ȅV4 ѻ طB4, { >lon35twrEy3aaer E4F Ϸ'vD~DxPU vBE1{4 . Ϸon>:twl3y5:arE3 aer o\綷 vS,/ v'8/D4]2[.-s 7] η^^k mm3f 3; c  3fŒ0Ł0a Ł0 Œ0 %W0mb?4B+ bB+ b+ | b 'TD{pʅ;fp؅;opʅ ;fpͅ :o?8aY?Qξ$C)ie'`c.|'CFR3넪R'KW|]orMo Gcroo'֨}SL}lqS?||Ą̓+0$ fMmKMFᐑ!Q%QtІp тΐȈÈ фھ&K]z+"Y}\i {]&|7:'1CA|a4sȤY"4~zi \!f G фվ켑0횁+&' &'(_ռlݻkݺjziK0qtq G Հ Հŀŀ  0 0 ф߾\&K]z+"^0PB}aosllфھ8&K]z4"B} '1C{˱&KbhE_"2&fx>`"2Efm>,&Ki]c'1C{o4F 3#e~݄ %TTYx{_E_Es{!b%D/mh1 %Kϱlq ]S,c` { yamYpxe ylnoo tro!Desed - a ^?:/sre|KS , EַN>D!a4EO9!842EO9{#]VOorMoC]bEFECO0OQ*Pˏ|41%MY 0 yS&7Pc btftfGzG z}Nr&  Wmג~O9B #0_J.%tǁMU9\jg94Qλg3Zg4ZFƠ|&Z^oƢ|ZFkƣ|}/ \]~Zaơ|Z~Vhk,Z1{9LJz ?.H& Dm ~57rZP3FZE1Zb3EZF'Z棼xǼZsơ|Y@0W uT44Z_ %fl%&orrEnU' rulav 'tiZr kRv@{%.gniL2.羖$Kh8gɽl{4!޼4C-, { h'on>:twl3y5:ar3FcXD g1J0 l$2[aDE4 , շliaFot de1f FXD da P4i! 4- P:N9$_ u̫4 - Է>i nepo o stupn1b94}NɄ־<$K[B2-'8M|| FXD s%r/r@a3il ra!"$$Kc0]ly4 !k$F֢T`$ f^ 0 2 aB00 %O5,:~N@PPtad :1 snuvf foeme :4 ytp`P { O4,:~ NPaMk}a<':r19morf 1 tup#KciH|qHj4}b80f40(05[%{'/<)a@Jѥ,"ěnrki2{4rP M$f84<_i>(M6Y${<o,J<@Pvdk( ݰe#U≛ɲkU4M|l( (Pflgz42'4CQ9'u(MXn2'47Q9=X8}|#{x'3/X"\J' +||')/X5t 'I*|"4|#G^*|E/LGo|=}R#{X J<, v Mrm XNXmX(M#K^hc]4346^N^4,ք."#u4Eh"c^<af$[ #B4<}5P߾}}#-.r*:rWr#7Fةpp#a"4^}rr)|7tF3oӢᾦ"K^a8Y ,}r|W7IK9FgԢpp#냠"K^ahh r }u2" u,|/:'t tc seodm-n2h٢7C9od# aY"z`^( +‡ r"}7 fo trospF:cr2td3pf2:f9g%*dc34t;fב՟ |ʘ(+ф "Kz;dLƕhphBfѠ`V".TAPlERОR1EA8&rzZ?|Ooޏ5l%+ P%;!89\ :r.D[ZQGW_IW<_ |e{Tt edy[r!Q9YZhpWڲw5";/Ұ4,|B<^Z(Ȳ,aIJOwJ[!Km]P'MjV'jujlPuL4{^!DW@4Q<⌌ALYBY;( (("(}${W4f uT4af4ͬѫi4DZy 4h T4f'].|4噀B %2'O9Suf44cY;ALYB!Z}G'{V444Z4jf,o`R,儀,胱XZ4ZfgVW4( ǭ ],rwP9RkT8{RѾ1a94PYP:h]4">&^ &.-(#*.$rdSM>cE}, oΝΜ'?Ν'꿚?@KA!t t Ʃ\roP9#84P9: P=\ȅ]4,% -.#*.iDr# S=_E}2FΝΜ k?ΝΜ r? ?!@0 KDh |fD@U[Lr|QD$l8{GD4yQQ9' ' V'['(REP¥K=׍^4$|#-.r*:ilos/ecav=GR@}ŽΠΟl>{ D'K'K>׍ KΠ>?"? ^@󾄅H_.iSP\FFEDHJB\||0lN4lVO+QQ[ɋroˠhD)1 2ܼY{Ou>R4̎hD)9啑hDFȜD4oJ9now-E;INATSDRAD)()"()"< a-nW & <D= -RW $ <ȓ>* >ȓΏ> >ȓΏ!>< A-"WϏ <8]W/<׍e4(| -#*.x eT r!1׽S<ȝ>0_ΓϜ׍|8.> B,> \?Dz-}GHlKV\\h`UaDrQYHA|  t Bhѝ<DuTD4SQ`5.'|x 4)@)"le:3anY3citroLeұ;Pȅ]4$|#-.r*:$le͸;\|Ў} )rW4@ rh#\_h`UaDrQ8уX uT@uWD4oQɾPq;d4ڂ |XETREVT)h)"-L)#*.rr73lFEXhDDCCB͠=_ΝΜ = =aGm4,Tp;ȅ]4$|#-.r7*:r<=#=_>f`$|eD': :nu`3$lebfcZ4ȟL&|DNSQES - rof DNEyloPkĻ,}P`KU\TUoꄸ:rSTh@/QH埱@82K4́:9Bh-Η9풁:}I.菭}*A*㏨5oY U~}DHwmXP`Q4r:iY!ہ p))"8&") )P% #-.rA r*ْ:FRP}ՃŽnae<u[l\t~`7- ( f#I[QKak!L]4r &2eyaLelbat rKxt4T$ -#*.yr#V3F4\|H1& KRE94QYFڷO׭4& )*"#-.r*:n?y2uCKc4l[%Z4V4`4V u_4r &2iwollof reyaL gnl $#ˀ4,IVp KV4€ȟ~' REYAL! - Ωf(:yԢ־K4!'4bzO"D- ( ytS f!ք4'O4,DGz - ΩiV f(a[E%R[ фS-S"/,JР4Q:=~4S=|4mizO"4Q&!!eD': :eH nu`redaL REYAL!LYTSWEIV,Ot(Yq4~ra)|H&*)n-*pF:r "3bf3p+_'/ Qh4,6~r]躒)|T d:3FbˢLp6[wF~Xr\Ժ)|%:fbg3 ۓXYmZ%V KY$|}'nk3bˢ4QD4a~reɤ)|n-*pF:lCbaT !}$|t-*ti elbaT meQ4~|m¤2h4,x.{ KZ{%{4%{ V4 8&^"s}-!#*.stnoF r3׽J581׽9iAX9 ҆OJ''FM~G4ov_D) n-*pF:r "3n+:mo2hi=!mKj ]4g׷4}4g_Oɭ o}Kɭ4o"m*ķbhf$(f[h Ֆ="%nַh4"!{fgP4h''фKjp=dP*nb`fbbfb( ^47$^ ={-#*.lYrc3edae7 3Lz#94JQC2]^ub4, uC. (|hq4 /~w]'R8ՄG21 LĒ|QDCQ}|Մ/21 L˰Ē|QDCQ}|]̤ӵuuf L˖"{4CD4uuf Lˊ"{4CDfD !DC 4:鄌׾K_͇K*q݄Q`[QVFR]LS] T]p,1a m8m:}8Eȷۅ^gͶwCYyqۄ]0u4 +oci;`u<44rr;):44rr9)4$ 澈K^a4rQ"44qQ"4qq;);44q"~ׄiI13|܅8E׾ZKYCK5P[7ƻnCքE2 3͐L{C.CƐ쓷/~]%4WR,H@  U0,/|!˖qST@m4,t掕|o ci`4}q<);44zqwq:)4 rK^alǎ|:44fq a~a^4[Xq:)4 QS.CƑC.C|.C񲷁.CR}.˄鲷Kdj Խ\4F#14x3#E4we #14͈f#EƲ~ct`42Ea儷羆K^a1j!4EĴɕ儥tK^a1j!4EĴɝCO.[DŽᔷ۾\K]4 Ԕ~ՄO L“|DվBK˓8D-ք5O|.BOѾBOKa!^[4 :4 .~վ K~81Aµ{վK}81Aµ{־KKLIJ81ŵyՄ1|ܕ8ͻCkվKѫ81͕\{Cք81͕N{վK|81µ@{Cք81µ2{׾K18IBµ${>K D3M D{4iZ2|ܔ8ͻ '͓{־hKU[ FL[4ǙC^@LFuۄ]K 241- L|QC)NV"װ~]1lEjo{4hO:1HD"{4XX7hbTL]g4T "W;O:TXf4Tv!JxE,eeYTTf d*V[i^LTkTF⧭|dXT̤weTф#"ۄ]4XT" "KaEؽ1{Rؽ1Et4,}!&ɷٲ~BI[K̰~{E4,R[MUhҷDP4,Jp:){Dk\weD匃QkkHwCQ*kV@IHu4o8WY4 {!14TSOfA"XLof,P4,"p:)p$ JE)]|tPT0e s3.dnutݐgE:p8aid l2ob el0xC :i3d3:gE:p8aid l2ob el.xC"xw"{%CӾ͝}P{Tq Q|_z4 =   C=}~@A [ 6s4=]eVf Hr4̈fmE},!ķ0s%' t'30u|]1̨j0bkj4|@q140!k[@q.[6]DlV44@:|:)SQɾ\6V7\:<,!j4ጷc#w݌ڬ+rh!!42:_Ό\~r'{PMPa{qINPnp MP~P5Pac x0zVUJ=rmklw(jCA]O!DN2\4D'j!׻3G4!5d!\6yt'{w4!| xrDDyh2D'G!34'e!׻3G4\dR!'6MwDJVhr,'G!342'G!|3d4!\650'{7a]i{z|k 5A]-*{ZEn(J3˼q!sok}#4$k  Q]S 3[!%pA|ZE4|J`徻Jh܄4!,!gE:p8t.c3 eugolai#bF@&xV:xw]@|]x\\wuX4!ѻ"!(QnDQ0Qfml;mp8hf?f@Uɽ}w߿e44炲||]G\4 CNijp۞8{QgK~Ry..ۄ'4@D)ن4 оB~UJ[K]PQM㠊Q(Uow$$uVI 5d4LEEfd C΅ .$ATh d$ADžhku@TWr;5=ך$լ8CIwK$RVn5,!BR,J "h;hD""PH P;"XT<4#$Uʹwo$!÷ 4 m^c1gCEᄞ-CC2]`e' Մq'{EDpՄa&849 0PK_odˣյ*C1P4CH롄CE띄5C3C4SCE݄5d?bd_'`ȫ"KDa{4| O";4fOɢT4"q.2F1h燝afO9Qg,鄘ajp=!k"h4!cy1! Q4,4tQ9*!.}DŽپKQξvپKQξCÈ]8ǾܶAN] ![._lUat1ȹb.[QL:€rLՄ.÷Yh4,$%ݔ[T4} Z4[[f݉ %}!q6]`\]]me Fݠ*S WmWm305u!·޻=4hB~÷g4!8i{$[0i{t Pa\k!m {44O;6 D! uK^ab@4͛+hr=oͧ''Rm¶wEo.<÷k4ݔRT4} Z4L}l݉}#<ʿw13!{7ڄ뢠K4s9) 8'Մ뢠K4|sD)r߰"8n}'վK4hǔDվKC| ~uA{*B@}|B/թ%-2-lf riϼۄ]Ѥ˾2r1@ ' wYC^ ]u@@w%x"aJ[dш"|/."\Ȳ־VK8֫4wD4}KɄDK^ad h4߈Ji"` غk$O#m}]# bk ;|u)zKRK]@l o `Z"UvoN$3W-ۄ|A@*>C5|]FTbT_A`|')#YddwOhd,)dLo!cw4UQDx#5$~N4{N-̷|"_xd@w󇸥^OMK̥z|#hfD4{N -}|߄c l]ʇأ1'4 9P' CEݩ5m hgry3tiw t1otksed* .dlrpph=_b|81€µ4Ǽ[\"]фھ$K>n2RJnYݒ8ˬ{[ބ־K1ۂ8[{ܾK^[18[ɻ]^_`BaBb B$B܄^1ۄ8[v{\]^_ބ۾K]23456݅8[X{]^_`ބپK2RJ8Y“AфվK>I1XQ8m޵.{㾔K`c28Jˆµ\]c`J2݉8[ {\]ބ־nK1ۊ8[{۾bK]8[ɻ[\]^ۄ]M8Œµ[ۻ\]^ۄ]9ۿ2384µ]^_`ބ`I18Q޵\]^_a^8[{\]ބ׾ K28Jµa ^˫¼` u3m8[p{4]3 d cE`ل I1XQݒ8[R{> 2RJnY8[ɻ?ք 82”µ3ք 82•µ'݄] ۿ23L48T–µ]^_`܄^q 28[ɻ\]^_oсK]U 4,P4MCgB K^a€Tzz P4, ;4YD)N m40"ɡBr/*1Br/*2 K^a ݀M!* M!}pJ 2~TȋN^\!.ca0 K^a !1 |qń Kb]4Ϳ |hဿh!2 j2ә@D@q}Ts +}Ք є+0A6m,Ք6"L] ciK?R9) m W!|e ]ok^&X­C]jsLֈ \$[  Qv #r]Zh od|]^'m)dFa3{r[фܙͽ#,\(̚!Ś ~Ś>ʼn.i(=w!^mm~%>^mm],|Ἑ|.i(=wSΚWT,|^.Ĺ6]!l۾ K ][/ /~D>>mra>4~![Y,\Y \|~ |܍ } ~ܵ ܄^ ňE K]i'p'7hiɿ٠4 h|DW a+|!{n'uh h~<)6DDS`+GN _aF!Uz|FU|&F^!V|]児r#7hi`cSD||!{b#Ph)Ha@ ^'L8L!'1‹X]qȷP4, EDDf'1 YBr/*3 KS]˾`41'y2SɾB)H] Lb[ 82f''1#c S`˅M0;Vf..ڄ]d̊Uc 6`NSp.]]]#l'_ MS0aC||Q IlFݴgF}l)H] Lc[ '8⼠ E]kF4ED` " 2~TDp '1o־Z KPPξC{׾N KQQξ؄C ~پ: KXξUфվ. K>PHlW݋8{|фھ KfPH]Wny֋8{|؄ PCPP(7C,фھ K][)QQ 9KQф߾ K^a*!X[!1Uф K9> 8n$PHlW݋ II"D9okh"f,d  d4$ f,(f40fH(P yJmqmm I"Doolk,h "f,dؾp KOKˉ9?Ƃׄ] I1݃8..珷䏄|..᏷ޏ uքE 81Զ|: K^1Q[a85¶#ub4,PPɧ~pP,׾ KO(0+|}>riD$s%<.Bܾ K^8'1Z焦NJ tJM\+8[4Ոȁu'GiV|44Xjih%ע4L[ {38M}W4}L[t {T,.tC*> mialc oecaps1rJr3e s#'so>:tirps da' elec`'s%QoVWlehsILCl.P@.uׄOK3'־K3H'S ˝!l܄^L.'爸4Ɉ]^_`քi.LЈ'ܾ\K^.Lˆ'\܄^ML .[\m'ܾ>K^.L …'\li/d_L .[b4's4qI cK_bL.s}h']]i`cL.bi'a4eIJi`c<=:.Lgabw^mufm.'b=_:< .L8]s5 fw'u4\J)i`c9;L.b^auvf_'i`c<=:.L`abw^m'f4߇JS?=R⑳#1S3\Y ݋< '^_`aބc6`Y.CJ)…^a"'4"`Nanc6`Y.C0*…^a67'c6`Y.C+…^a'c4,\ф侖K`c6CY,.[aW^'6ׅ#8# #8 =iws_soxUq Urxiws_sox,Q Q%=wUKZ]G۹'&ۨW;G}'B,1{4ݦ~ۄ]7x«[81µ[È܄^'ȫ[UH]-MI83µ\o܄^2۔8n[ބܾK^82µ[ք2E8[ɻkׄI14' \p‹־K28[d‹־KE[82•W܄^28[J‹[ބܾK^82µ[;܄^28[,‹[ބ׾K8I޵‹־K28[‹پvK18KQI'X 6µ݄_e1'I(<]µ8^eURcwaaۄ]M'8]ݵLه0SaS־8K28[Ƈ‹.µ.µ־$K28[ɻ؄J28Rµ؄ J28RµׄOQ4q8IµքH|28[ɻZ.[n{ք82µYՄ8[X‹.޵R{.[f{Մ8[D‹־K1MYUUW-Q82µ3ք81µ'ք82µք82µքu81޵‹۾hK]8[µ.<|2C8$!,( B!rքK82µنք?81µ͆Մ38[†‹Dل'1ݕ2ݖ3ݗ4T58q޵‹Q.CaZUQϬ.C޵Ȭ{لCQ.[̻Ɓ؄J28Rµ؄KQ.|?·\‹>1QImX6|8[\‹׾K18JµO.[JCOޝ\̻Oow^ddwdWahi;0`!{Sa4|T]wf;|a/`\,X,"r1{Ujwf;a0Տ^̼DNYwaˋalotՓu9a3ar2iKt2 rp3 )s%oma2mi tixe letamb]i4b{nȼA(WE P{biK-2 rp3 oot :roniw ynam.swod!oWoSr{L *n 咴A},aAq7f4Lomr, .B|F$Sj}eFsꕰS,\mR1het[1eK^a.|M47l~./^ͳYU ^ɩ?|݄ܾK^L4 #ք 4,D]N\xN|KtUJB4 +()&'$% !#r45Y7YOWYN"Žץ4b4b4#b#t\k ٶ4˞kiFr,B;;4Pi ۊ! e ,[  @eIddB˽lU x VEroJMiYoԚr $i]'vA[K qk'aJ ˶㚸Ǵ{.[̻λC. ք1v8iXJ]L{LLwLLNYwaCahA,:;]C:/D/"0/4"hB,1C,FKlKY_v a[.!!LUDsLA4CgBQDdCPEgDQF|Xh|E F]aTnQndhdMnaJnHhh1S$}7#rαBh1824|5}6789;:LK [r'{843uU.3u:/ˁԖ U,g QZL"1 嗰 /?KE#}_}*6H:ShNUYu[ !'qh4,|'嗫a4 LlLInL|lJEՇ4 Vi3ua }4|Hh'ۇ80QVgwS3aݳ A4',2c (.f܄ P}1$4MwD'ۇ4'd[4Fa3(.m) }|Gެ7Hα| ,yWX'['ǻ#b~}d B2n: 3iecer ,rd1v2ed%%  B*|ƑT]iFi>v >@f]rF@QeH"ho^{uaRΎf d3Åަ`$w4L zd5˵A%Q@T2@|vh42%@_h:6]9<=f:\(Lsh:4OQi S冐aRLsEtִ|ބqwpԽ\x6?_KRL۟U1pL F4:0a4 ,"T? a2ci eg\ot no!rotceridreweiv y$Q i'̶ Ͷ4gtV4""ܻs1m4,ss$(V!煸,/.x<Մa^pL[yep'{8e4.WʹEúͺ!{G])T\||Tټ[]TٷVmSƞH0/(|8V~0] 8V,mL0.ڄh qc4 !B|H]NJmer%U<{o2rp(#۾Z;]\||Tٵ[QMQ㣝9f<F[3Ƌ݇0]],m^P(.V̈́#۾.;]\||Tٺ[TʷYdְ]ݟ 8Ƃ88f 8f$8f, 8f((8f$8(6,f΄;Aaf<f mAf1EafCDf;]kTƾTAB½úٷ; f((w!4X `WaqP1T1"UlG~ UDUCH֦i54,[`13a85޵E94!.C41'naC%fsnart tif re!eS* esu(S$pmiW tif< parc)>emanel,P u$`lt5U n!p(<{3r!-U D 3rn:3 i3!"ogciTv%f1qQga ccf߈thw61%kh6 Q裷B;^aj`1ֻ̀D1I!I7I^7yJG@ub4]JT8 u9}830%_xxxx_۾;]8[Ë[^!U0A{0>{A[A>0\0]^_`abBBքI}J~KMN8vA8[ͻgׄI1B8[ͻYۄ]8ɯ޵LË\]^_`aބ־;|}I~JK݀LtM87Qǵ)݄_18I͑Ë[ބ۾~;]F8[ͻ[ քo81Rǵ~քc81Iµ~Ë־V;1N8[ͻ~ՄIJ8[ͻ~фվ<;>I1XQ8mɭ޵~Ë5)V1RJS8[~Ë[]ބ;_b2M8[ͻ[~]ք81ZU~脚aq^=kɼo1ݥ 5Cm5 15CCm@pi;m3'H6mHmE (Xm[^n! | |! || ׭Ņp5<ń`5͵HxmHtmo "Cqprw'Zp&㾀;еS4ri$J2➳#R3Si㠿J㠿Ii]JqSmNmHg.r,Q}84aˣLZj8[y!네.վF;}L1j8[yޱ۾8;LK][vP9p1L~K k'݄݅ \~h1۾;]dx)հ…wχшQڄp AA AllǪ8?dd=,??d)l1+t1p1"ڄS|ܚsmpvEεV~ 넯;^ah] dqVY1՘lȆ!넕뾰;^aDKeAp~8 h;p3$6~أ\d`d8iь\L,磮3{s2;pa`j9>UoWrGR!4ۢ~ 0!4biH4i$DiXJДJi$4մiX]OPPih:,4|5@iaFi;,\<,KKWrL_B^\*x!7h hohUb}o d }DoX}o $ }oȥ}4ƄhRdW~zhlFdFphFq:o{Jr:p{Jr΃~@C^h|C^Rh~!1OW~hTUhrQ"͵GVTNqmoۄrkp|!1W#deNdrQ"GOMNqmoۄrkp|!1W\EF\rQ "yGG]Nqmoۄrkp|!1\wGh"|4}B4XghE}Q^K, lK8n| Ҷ$nX|3n Dh\ALEg!\,D~_dhMFͺg!\Olުhhf|dhd hn n}'G|4F)}nh!}|.[aZ4 jع.|ȄLaڱi[0ưY׀h$#Wro} (]Tlhh4,Un%-3|LTf۴5{8xEkh^mBn{xtud39ns&q|x5!5L1[GvNj=X'QWV@A$ rP]XiG0S.'ɼE |4}.XMx\ A.[4q.WMx\4A|^à|ŀѵ@S5UBz/!Lm{'G^ѡ$] $_m!& { 1h mS4u,lVu} 1߾^a4 "!q=!aj^4, "!GqȚ =0ǭQAq aAaQ0q Q{.+iŻѵGPS,` wtV'`EI|xDD'L6;fuL;fuѠPѠ@'@7t'K6'K6GTL\/u"4[L{_E˴۰BqqqBGѠᎰ @E" " " " " ,8 ! 11" "5) " " " " ,8 ! 11" "oN,5$_10P@ 0` PT@`8][C0fQ0 )1L"2L"32"'.3"' "PL"XT""", X!  CgaiD weiV G*DcrA war /0͙4)40/5! 6!0/56 2#,  @"H ` )| ) )  @    4"tT" @" x x  " "CCfeTf0/0//0/0 ID4)II t)I I$ ) I() 0  ",D @X .ytiTmuMb&/' "G/H 3))B/  * ) 3 BG* ),+"-H)I l/ t|   )         i  )  ()4@ HP) Xd)p|)    l X/ `h  p888   CCCC    deng o7]|S]fcİ2a\cl`@`v.8>J{O r|l`*J\]^h        lkk  kp`^*J\]^h        $ 4!߱@``d]_ O\*^°LK):h 5  zI!޶ EnK- R:]SO  ***G`dOEG*PARTLLb4DiSQE_Ab٫)T ] C⑜leLD*`ߋ \p^]^h h   _   \ ^h  h k|l llߌЮ{́ \\j\a]lk{|w]j \j|_llllk l ]j]ll]{\zkz]\}lS    \]]Jg   \]?^I _c  _Gg  \_AGgk k k  `?g k { ^?\k3 c`h k Яoo.\f\_@n9+A\t]]a\\t^;\\l\1_ klkg\ll fllb k{k 6kЛko! 0*j \\k \g`a\g-C \km lk|     \g       FEC ]e]^\\  k f` gi\_kk-k-kk{]] i]jkek{kkk| o\h{|kk{Яk|&kܮ^iܜ\Ȯ4\̮@|\kkkkkklkk{O_g]jPkkp{"k]^Tgk|kk]j@Ќkp\kTk{||\&]`ik^\]di\P\.k<_h_\_8gp\_8gkkk{lkkk|o|B\x\jkk"\l||"k" +k|l&{ܮ|l*kll = \`ː*J\]^  \`   ; \q \ ] *J\]^h      A<)\X\Z2>#3  lol pklll l kl k kl@  k k k$Sp`kllllllll|k llll||ll k kll|lllߏ* .!$\mS"\D5 \f1     `_gr>x^9`n)_b]\^\J] ^]\&h^OZ_]H\^@g\b^]y \]Bg  Jʑu:Z]^d^OJ*p]]^]```]]]]_Q  \g + - h_] q0vO^\ b]\^]]\Q]^]DbLM]]]\]]]^I] f_]OjAu_]ͮ #ъޮ^_A_|"p!'dj]Y^\dI]\\S]*]}i&8n.d`S\`E_` `iA_^^ \\K]!]]Y\S]Y_ m\׮E`] hS|A]b\Y\bS\ }`8vMb]*^^]  c`]b xM` ]]N ]_- a?o_X_^]]]T\^G]_OalmF ]dP^^\ a_a`^c iZ]a\a]^\U}`OaT_ee SS~& gfPEZ AĮllЯ0fb0]dl           ߅dƮi| ^lL\**\:\]\\\]]pb`m ]bt)JZ+*:*\p]Y:k?,O? @ J` q P@ 0[( QQ  00K00Q\Q00Q00\Q00T  @POo@U H Z7`z0 SzASzzD S@ zzzzL&2 SzQ0(SzzT0(SP0( zzzz\0(] `I ]ʻ|Hrcc 0.23 file_aff,, wwwwwwwwwwwwwwwwwwwwwwww pwwww wwwww DfFwwww @fDwwww dffwwww`fwwww`fwwww`f`wwww`DfDdFwwww`f`wwww`fwwww`fwwww``wwwwwwwwwwwwwwwwwwwwwwwww!draw, wwwwwwwwwwwwwwwwwwwGDDGDpztwwG@DtwDDpztwwGDDww@DpztwwGDDffDpztwwG@ffFDpzzwwGdfffpzwwwG`ffpzwwww`ffpztwww`f`fpztwwweUUUUUUUpztwww`f`fp~twww`fftwwGgffp~twwGg`gtwwGpwtwwwwwwwwwwwwwwwwwwwwsmall_aff ,, wwwwwwwwwwppw@FFpw4wpt@wwvfv7wpp@wG@'wwwwwwwwwsm!draw, wwwpwwwwwwPuU{zwEtD{zwPWpzw@Gpzwwwwwpzwppwwwwpwy~wwwwwwwwwwcrosshairs,, """ ""ptb_text ,,|||||||||tb_select ,,?tb_line_o ,, XD`htb_curv_c ,,~(4 ( (40 ( (4((tb_curv_o <<T:!T@n@@T : TnT:TnxT:tb_elli,,0@@ @@0tb_rect ,,@@@@@@tb_move ,,? 0 0 0 0?tb_line_c ,, XD`hdraw, wwwwwwwwwwwwwwwwwwwGDDGDpztwwG@DtwDDpztwwGDDww@DpztwwGDDffDpztwwG@ffFDpzzwwGdfffpzwwwG`ffpzwwww`ffpztwww`f`fpztwwweUUUUUUUpztwww`f`fp~twww`fftwwGgffp~twwGg`gtwwGpwtwwwwwwwwwwwwwwwwwwwwpat1 ,, `  >|Ç>`  `pat2 ,, w ? w pat3 ,,pww*]*pww*pat4 ,,?  @Ç  @ none ,,optoff ,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww4radiooff , wwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwww4radioon , wwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwopton ,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwxpane |dboxtcol 6progInfo  8paper H xfer_send , DXFloader = NumPoint query Vmagnifier 3printerInfo pX2 =0l ntitled> e L>0tb_line_o L>0tb_line_c DL>0tb_curv_o LH>0tb_curv_c L >0tb_move d> LH>0tb_text d> LL>0tb_rect d> L>0tb_elli d> L>0tb_select LPld=d"$Dlt=OK $=  ntitled> *J=  ntitled> J` R ntitled> $=  ntitled> *J=  ntitled> J` G ntitled> |$=  ntitled> *}J=  ntitled> Jv` zB ntitled> @0t ><<00 ntitled> <r<<01 ntitled> p<<0'2 ntitled> <<073 ntitled> <<0G4 ntitled> B<<0W5 ntitled> @v<<0g6 ntitled> t<<0w6 ntitled> ><08 ntitled> <r<09 ntitled> p<010 titled> <011 titled> <012 titled> B<013 titled> @v<014 titled> t<015 titled> P@t=0None tled> Colour 999 a0-9 999 a0-9 999 a0-9 ``R =0x 4Td=0OK titled> f=a(f=a(df=a(0f`=a>9Name: led> 9Purpose: > h9Author: d> 8`9Version: > About this Program Draw Object based drawing program Acorn Computers Ltd, 1988 0.44 (14-Dec-88) X\ = B=`'skeletoncol B=`endpointcol Bt=`beziercol D@p=`highlightco F <=`gridcol F=`bboxcol F=`papermargin XR =0Save as: e`=OK titled> 5a`=^a icn D|TR=0 =OK titled> 8=Cancel d> H|R1 HDRt1" v|2= 9& =d~vUnit: led> a LLInsert DXF file Millimetres sradiooff,radioon Inches sradiooff,radioon 1.0 a0-9.eE+\- Measurement: Standard font name: :V40P0=0x v,=OK titled> 6= 6= 1! 1 |,,=Cancel ed>  8 *@`Units: ed>  8 New coordinates: 1.0 a0-9.\-eE+ 1.0 a0-9.\-eE+ Inches sradiooff,radioon Centimetres sradiooff,radioon y x L  =0Draw it > e&=YES itled> 0*&=NO titled> ? l40 4DpTH =8H(BF(KO:D=  ntitled> :=  ntitled> D=  ntitled> =  ntitled> x(T Magnifier 999 a0-9 999 a0-9 : 4rD =0r=a2 9`Copies: d> 5dd=Print led> Print 1 a0-9 | Boot file for Edit. | | Note the use of %% that ensures that the substitution happens | when the file is run, rather than when this file is obeyed. | The Obey$Dir, on the other hand, is substituted when this file is obeyed. | IconSprites .!Sprites Set Alias$@RunType_FFF Run .!Run %%*0 | Edit, version "1.00 (20-Dec-88)" | if "" = "" then Error 0 System resources cannot be found WimpSlot -min 160K -max 160K IconSprites .!Sprites RMEnsure SharedCLibrary 0 RMLoad System:modules.CLib Set Alias$@RunType_FFF Run .!Run %%*0 Set Edit$Dir WimpSlot -min 160k Run .!RunImage %*0 O4Bf S K @0S24$:C) x4, Hv:_o`[Ў˕Q,Pˌ gQQrq_H[kQ,PˌgQQrq_0[9ˁl},| f44},| f4enS. 4kOe_[57us"D67Q\75ks?"6Ny89`DC;4̿ |ol44; o|%;4̿ |ol f4X;4qnEMRe sCkL0k3i_ 3iCS0_lgChk_Lu`Oh;``9k7`'_ "`l o!P2> 9erC,o1 iuQ,' T+Ie:tww3aC3, :ew3Cz9\et!_=W&C@A<+6wps"+51)޳0V"`Z._=ej%_49qB 4F $T4'ݩnloci 1kb:Lqtt9 5 /Dn0tC 9E"=E^Rwb4@ȋEX 4TȜE@%_>bl _k[_f>f覽WW '>54,%ˬ Ҭ dxY 'N'HMh_U_4P͋; aƋ]S苩V}Vp?I J1H3-7-3(M_գl׺];ba_[/[ UR USJxqQgˮg_k ukF,b4,@U,[b_[9Q4 @1U,PˋbQ/>_sJ[9˴~GgHsD4(? Xbxm4XbTbTv4 Xh?yTbTGw 鮸X4=eU,Ti"v `TTW0 KוY<TKThw X$Zsb3HiTITfw B_[XE9{T4, a_='%'~%0oU4)'-ߩ _NBn[lU4ȃE à4DD@ r\3Qk%wwH3vH*~vPIgHG4 - 4?pTvXj 4H,@̱۔rH pX9j;zՕXt骜bhleuE+ !l, |Cx&e#d{ ~3i+ !l, |Cx&e#1@ d8#.ʼi D@ t4 Z ~PD  Ӣ mF4 _侇[̠9k_@H+Fi 4_%%dr ' 4u!*0%h$LBq@Q0 <(B3wq0!Ph\B(uP9 iDqh侴hkhs_9 qΌ]_hp[ghjSNgLgf g o gGigGi;,qtrK_h N[EH? Ln@s Prv"Wxv@N ķe y;s+O顮dRvTy祈 \%0q_[ PC47Jc5 C%0!A )0C8 (¬', _=:4\  7 '',/q+C S k2ο' \kR,hY-sYC\&$(0snWi9s@00QNY,R, <Ǜlh4<)Ǒ*h40:@)Yi̡4Z| a0\d@)4DV@VFy4A:R67L:Fpզ4r Vͦ^E>k [$OYm\&k48t\4&DODxQjD{LzLzPzPzdLgP]}^x!࢈x\]^ە[ڔ\z\4~Z\8lEw<pEw@|E_6$Ov74}(ϜN_NK\9{>4*C*p#"VQWCBrQ_@K@E2w4DҒ49 _BJU9l㠊XQ(O$#(x $U)4$Tym,  {@Yj]$mӭr5@ ~@-A*E()&)4%*# !675*./2 ,*HD"$ P}T {T E4ӣEQgͣ |4, _>K?:g%P΋`9 _&Kԡn*_hKy]_ 4, G(_H@;l_kP*4(@%4%1 xobdbd_qdG_=Dg[)4T"4[?D_4 H/ q[&h[[=[_`?Ʉ,4G _ęG@R,`ROV"1xէէ,ʷ#v,#v鲪('UʧʧɨUU W kk,#VC1qVqzߪӧ+U Uڶ>kV 113 >5)113 >59 _ .KI=MFc cbS4 ^N4%XB"4Aif倐 @ r_/_#/_K89{@^PAz L/ᦻ11v{:poj65U4YtHLI4D%MV4LJaӽIbAVd q $`(k1 Հ]Ϋr 0^t =\[4[4"ˑV Ӿ00⦻vnca  44?76," _=U@:kGi4ܡ'=,E^n}B4Z7m4D%U4rJaӽ7bUh { T} xt_ͣ4U _*4Ej,ιrܿ_*4_#ʟJ9hh_eFK:=FwĻg' #V Vy֒'֧*4ȒDΧ `Xr_Q : _7"1Fr#M8*lf ri%-2-!f_hK9QPݝj_~K@9{z@w\^ I_e9q a[rաu&oox_9mHǿy@VlZ9 ssO(_KA@>2#0ө_uK;>TQA`C'J]# d9Z]]OtC)=!CHk_L*4CA~ z[șO՝C뫴3~C;jCCLCp띺뻺3hZ]l Ts^sOrq_hlKй0 /' @4,)Cg+:ye4tr3 t3potks1rD_ӱFK>D;Pq܌]4=3"_-dQoj]"_P~]_: Prߕ]&ޟnޠnޡn ޢn$ޣn_K:P~|]"#$%_9QRSTU~^]#$%&_dQojݎG]_Pic݆nޕk4]_?._KPicn~X\_KdQojەE\_KQ۔~k9\_KQە~k-\_K9QRSkfݖ~k\#$%&_zK:Qڕ\"#$%DrZ_h^K94͗)P=4)_=K:˼'r\4@)*4>Lv)ݦ4 `L*ߩ1)*ߩ2)_=*:''qe23)4<W4޻*y uDs䪛clh0_= : y m_9>4y {m ¿ Nn$@ @Di lk` g }}0,~fm02_hKE9?F:?C |"m Hw l=+ݦnn n; 9v䦫 nd D<߱Uhy 2H jֱ &j } h,h5!kn}m' ~kn}m >knp $m }|!k&~kn||>k&XΡ|}ˡh}$m }GR,knD|k& hɶ_9| wB>egjQK4L!e,eP%~eLitq$ rs _K:+_9ƿDRt7,o4«'Py =mDܿKb ֒C6D =En loEn͎Fp { DʿP7CoP m Dÿl_IK:=L z49+@ݏb⶟ *ߩ3)_9#PR4}P֫4rK9_뉇K>9 _KٹZp]} p޸},a _KR;˸=NC}=̡|m{qU r1_K?9} 2 诧멡S uT Duͽ]h n!V0P l6 -A.3  HmFw_㾇 PKE9? LkHLm4,@d _^_  W_|>*;e]TORy3fP:Ib'3P&_ KǼ l)H{l&|4 `N.~trl"S(~tr4_$%l4_drDyV4-1Kp2o,3ucp3musennle3ky,3p@s3r]I3d(E,lt! l0%_D44dr10%ll\x%hr4l$%hxx%l4T$%ll0l%0l_KE9M? :iVT 1Ԛ'ȅ $P}Tx&z}'`Ԛ Z]%lɡ_9]q0kSok}XW$ Iw,Z}#<pHR\<&RqɤhkRlb R~`4|V@G|V|Rh|o 7R0b.9y4tVg.yz"Ȟ)9W.$1{︎.V <Ԕ_=: W axIc_LJEdl6ZJߡyX=5\Jnyh&# &JdV4\bc_Li5V%˯ytbJ4Rpb}KM4K|jxR; K4 Cz844dbI44`b(@`NQcPٕIڕ%LV&HV(vNjҵKJt4,&|kE4&@4X)~A' .MO J iX3dl3o[24=$ɔ { @~f0!4'$ɂ { f1@~3~K;Q؎#&VQ#,k$_K>9V " _NKDAUM_4LL@Bx:)%UnUҝ4HC@4x:)l\w Ɲprpv;@4,:|'xrprt;hx9(|ıU3|س$ahUQ" dK}4hA`Va`Cx+ !!+ + !| _9db4ǻ>KĆ\bGqF4&V nxbJ.Ѹ_.#.w_/O/_K O_^v6_bmhtw)qfT_twbmh't}t_)qNT_K\`#..^#.,O_9]̵ {/// O+_=:[z^w6v _~$ wbmht)#)c*ɚb_ɘ]_ `Kw ~($w0,w4hbd|ކ 't)#)g*Ӟ)ecb_ɘݒ],_`1\+-wб_KPcSx.}y..z ~k_.KPvS_:rPyiTt#~k4Srj"P_=:4Ə` ~%!i,_:=F{4Ə` ' i,~%#AaQhq QAq a0Zhhؼhؼ|%Cހh+_-(k$r;,~tx]_' K?E<,~y{ݾ744_ K?E<냅,{uy݂._ K;> ~,xytT݀745_ K?E<땂,~y{$u}_ K?E<냅,~k{uy݂ݬ74UKR,&i⑳#WRVDS^mhh׶_;u7#4"#$%_\K7#_NK;#7447_<K7#~_.K;#7~ktq_K;#7~kta_K;#7xxQ_?봀<7#e"~"t}z<_ K_Kt4 04Oȇ)>@9 ah? c4)d_9L*}4P!z,d 8+Iii+ihu-!,-|-k-.x..///0/@M0_aܽb_a;b8131R1F11S111_1K;}ba_K;}ba_K"?!XqcaDohHʶ 1DH*jh_oa;bKha4hˤ2_hVK9mԋ4=g , %,f*((%r-ͧ_D*K>9NJpr9ԋ*4 >)#ޘ%Ӫ.J4e 4%~jd ^ŷe ^С) 꼭fhD2/"mݧ_h K>9ün ^P.Q&P  4?Q RtP DF`A qQS kQ=_\ DkJW^Zw=b\ċӵ Qxtc,eZe鵪7>jǡ\ W*cj&i 'f_PX 隡 H閪CĖ'~ 랒 qӊ-ں %뭘]ӊ馫QNrHc'P cj ٹ>Z *SXo$_\_K>9* NJ0r[RSdY ,ʪkk[U< vZwR ! NR"h*M4hk_hK0O9{0KHU0oQOGo a۽b aڽb% a?cEnؕM")a 40lh/I9ׯ7}_%2_h,2=E87Wr _㾇zK>9FO S*?R aŔ|9Z/r6_XKF9 @HO& *4P6_BKC@&܌4 _=/紎:y KQ#㋮  Ufc (w 4ό.]ޭ2hMzD_h K:D?Qˋ7: ʫSJb3O BGe*_L)G 4 _D;>Q]&V)Q 4ȋOU㪋ê/c^/NR͍גh^/}*h^ʹ ,[ %Zꭩ|0J|0J/\8ͽ ,U⏭ %U0I0I_>c%;4RʰMhUꪧݠhv_h>K:= a 6 bu _9+洎> mnmu_LP^*Q䌮~ꋚPwa4,L6" @骝=ઌ PQ4}4 J ᭿ ߺ I׭茫i(P %_] 4MV骢ݭ鲪_[(W= 4P*R PE 띒uJ (Q &_] 4M Vસ݌ ê[ ៿ U茫_ ~ (4 "R aY_Mk{,x_@K:=q %- Y_91崍> D H TRZ: JZx;i HS׺ (·d ( 4͢HS]^~_* b 4,_KE9@ɵb_ޭ4I4LX W 4$6= F >gn_A $6#QRQ=g\-1 ) g $ܙܙ ޡ{ƆbPz bY_TR܋关 o~Z ^ 4 : R+; zE QV ŵP=_\4!+ ! 4͢DRq \Uշ^] E4}ꚡ(6_v)$  w 'Q  Z4-^/Nێ_hK2_9㴎>QZ`(YHk(ĺ iU ~b*@ 4,_K>9F0Gq|!RR H -O L䑯Q|Tc@6~ F*] 4c; (o' c?٩lU ] 4_pK>9EY [RQݒK4ÍR흒QڏzP틊A_o%)V ̄_2 -3S 82 -3T 4青Q2u -3S R׭7T n M=]< )  l̜ e:U 40OF(nng Em U_[A Ő{R OQr7qX uaea_9 >"S N ?bq0!ũ_N|K>9 ƼUo ͡ HM #4\4=_\ $F >ތҭlꌪq. |_ ( 4J餏 ފ  evEm V0_=ⴎ:K(r 4c?j3΋v>?Z6;ZUȝvúvv6LN_9ᴎ> HHYZk*w 41Aj΋v>Ay*`L۴Z>Όvv暴vpk޴Zj 4 U&vZv & Hr`vt_NK,4=0C0>=H5ۼPvۆp%ܼ&4»/ }_hjK>9 "0 c_9[ ӽ J_ LK:q O&t_99;> 4(Fi  ( 2_ KE=;J4 '4 r_ K>D;J4 4} r_K>9 ;l F4(3n 3 (3_K:D?> o N莓*h|IzIu _hK̆QRܪ^݌SݫTY؏i40]Cɟܬ۬VR炫 lݳ(Ʋ۩ٿ֩.݌9݌S%ݠ9ݟ%ݼS4sZ_95F>' 4?$I M4VB^$JHJ ,I} 4,E?yVBH,r_ 9ߴ ~84=+@wx0y ff-/*rL:-C4R *@99W> 9y9y9y</y>֭9 T.GR.$RhTʶT0~Y/8mY8T#/#偰.$|R,@=wJ咰 @=wvJ_N|K 9 da4<'4_bK 9 da4<'4T*&&4s_9=ߴ>=4=o'r_n(K;>BU>4>룭QDYD_r 9ߴF>~d qLiP 4B|[ut*4, dQ['P vdP NLdZ t4,[dÐZd [[걡Zd ZdTݱdR2S U XUea4&ΐ࠮'j\[R휠 衏Pe4,d>[g4{δRޡ&Y 2o/q l4΍d \NL[>{c42걟2Y@ ,4{γRޙ&Y 2ϡޠ(N/4{Tiޠ2Y 2/q  N_ KE9?d &R[Q#P[Bm4|&J}O d4eȩTqS&#&i QE6q&N階2)t Z {^^СM6qd}2 4|&uJ|)| #}&ǻ Ȭ& { JNR[ RqRT2S#i Z֌& ޢ'2) ޠ22M/rN_PKI=3OO h9 _Hܴ?E\̴L% QZ0  XuС_9ܴ9 H︬ތ D c|ľ' vƊ 4=ˆDR D4H骎7QXDޭ䚍?n ap;b_9ܴ9᪊ n|᪸ nQR? nH?~[QXlRQݔ P]*IXb"1 )-* C14c錣@ ފޝN쌿 UDn ޽ިO nN_9ܴ޽ިO K_aތ0=&Ήܾԭ U HJ4ŷ̹_ 0ܺr骭_K9oJhH bayB슍ByΒꠉ& !ӭyyحꂉ &_tK0:{;o!hXaڽb_9a۴>=n  k_9O۴F>n?&? 4)4M4 = DRݐQPݾ 43L& 3&&3  ' Ȋ _KE9?n <=b\P' 18պ  鋮v" (̢ bM9lP -Dn0* ZDW쬿X _ 2K>9${QڗTRP}2 -  4ޠQ 2a - 4즉( $留QP2; -ԭ  HH4С 缜Wl( 2ޝs_KI=19ԭ{uԘ1Qږ10P -1^h {ܘ1Qږ1T`P}0 - a04# 1ޒ0Q -0 JȌ4:51Ì1Q흊9  1 ]D9n _93ٴRqܙQڗTPP}1 -ԭ 4靊Q1m -ԭ 4H O H4ŷ缟 _ KI9Ļ̎anXIXb"@5 J4 " 4"JLnPnP  P44P 144%Pn2 gQ(~ TnXn1տ8 »I0 _ZKI=0V{OncT-1~1ް隰1ޛ1ުZ1ާ 41 6" 4hW9~ 1"PUݛ1,TSQ Q(k" 01տS8k Ȍ1޳41࡮1鏰y隌OR41I4 RS %Sޯ01տS8k 4F 0,Ta(P 0S18պ11 141H1 »0 1n菰隮1鏮X*)1ޠ1T9XX)1~࠮1F1Z]鏮N71L1갰A a4e1H鏰 @>>NX)1~࠮11X/1X]{/N1X;9~1갰A a4e1H鏰 eN L \>OxP/1~13 1 641Z119,2S111 ֌ 11$hY141F餏 9D 1(_9״4ZRݏQP0-~ S-k S{k 4_9ִ > D2긊 CZ҄D䎭 =tX}ETp| _CK>9 Dk鸊E;n\hf ` _ K9<\F> XP"踽 hJ̡缏!!54ܱ} !h|~׷GRf b ^ rYl\Aw&_NK`.|\0}A`!< Y`0gr_9Դ ba 4_K>9n\-lFw*O ݽ: { !baSO  骶/YY'gٷt}YvYh8ghn_hbK>9hb*=XM "  Dn+Ų̡ _=l_95Դ Y'!̲h_ |%Ԅ_%6K|6_|hu_}hvahKh24h_9Ӵ{N8\9x{{݆=ˏԨ{߆~=kԨ_9Ӵ _}P(;zjT[CjCT{\ke4Wۯ:[璨{膺:SF{ōu=Я_K\9[P y{ ӭ駪 ԭ젪rCq, K Xv WGhE4X_bK|9[ ]p}_`{mx _<K\2}4q<|fx,_9+Ӵ4*r|1 E &_ K%\2g5/Aq|Pܧ @,4 @uҴ䚉" aAt ro11m) ߊݠh\//G0R~hG_9ҴQR.aPFzX_]2LT UD0_h /Hno;ѽomo~ uM41; r u44dǚRdq|GCk|~׷GRPr Zh_FK \7w',9wa'aRS}a0r t_,K>9m4ͩPnQܐޤS]{tT14\Sj_,\!#w4,"txL׭򨰘zR~_Ru9tحފBy(?~ަz T'4ح=Zv ;ꡉz' 7_wN K$HkXs4ͷLiE00044"  HT Z ;]]TރqEtzzt Tr T,~]uEqEEt藕R!walT4 E@tq ,Ӵ݊ݠ+Q4@1Uh.ҿ <8WGٮ[Y<0n<傰a@[\r_9'ʹ <44DF<̡HH|DJ {ca}_ K>9$O4LqN,d ĺN#@8|ĭ8DOv<v<0}<[\r_̴?B4,>@iJ/P݋o:4l5Q6\7l=:t<,o>t@,A,dh*4b4<)2~j"ĝ)*4rȬYrxF G- *j닝Oϋ*c PPy*ayدunѻ]O6͋!axOϋ\߯jnѻXoO5͋ axUߴ6^ ^СOLߴu 缻O/*ز5r|2^/z;jrY2^/O0xtjtGjnѻ #Oj5*C}!4P*NjH4L*|;\/a5q@#/MZ5_=W˴D:{1ɽżno^4r}8]/Wr]9W{&r]NDT;vRLOg,wG4T(f4q<@fsЌTo]<sȌ^f]^4% ׺Kxd ]?Ftd0;f~a֪w dK\  F_9ʴ¿ސ)%ԕ)<U]Z))^]:RPCO)<)C < ⁰0 ggg?<4e:y4,)Dbn(r5o)er ]nn8Hg4Wح)<铪 SO )XԐ]gA&靲ߘ_gʴb,m&oq_Mʴ,˱B~q}߈_=?ʴ1:L۫8*5i%߭e*rD Fe"t#c%qRmgqRhncWKLmmSvpqnGUTE͍Rp ЯvL@4L4E~p ) _KK9ލnlDqxpTTխHp ЯvE=pp_ʍDe5S鎮& k)F΍D8S &qލ0\0&*.NXDkE!Qwx[h_9{ɴ fx䶔v+tpf|slxf|c2 WVH]?.r3'i"itpO$APbeh#gYnMeBeljFebiHe\iLe;tb9LqH>tRe&WeMIjhMfehhe;L,N)reliwe-tb=4 .* A-eg3) gxx"0x |o+m &t po!oֻ.4,_K4=kP4uAiH#v4\~Ai vh4^ vt+O |pЋNIm7huG8gwl@guʷ@u`|`x{`uF0 r4 H {<@|L 7vP |T Av'Õ|^lJ4 ^;l u u1\fǪl9($f f`ǨgdǤghǠglǜgpǘgtǔgxǐg|njgLjgDŽgǀg|gxgtgpglghgg 4s U1\"RZHWi4g",  " " $ "ySqJ:wg 4 sI} _9/ȴv ޷)SRQPݧ)55̨kŷ 4 f%`b4ͤ Үnҭn <5~Ҥm m ?}ݹޭ (  f?\*Nx\.h{uS6_닇K^nأk6lPsw\Gp_A?K=˚Dt4B? rA8gF6f쾷 %^h:w($f Ӷ P_=Ǵ$2%&Y& L䚈$WgL"뱭$*Ey뱭$Yy $ȶ%_ad2H]p+]$M ٹ_NK4<5#-[tl13ub ddtiav3 dY3 uoy Aue3uQ ot tn"i`kEt5N%? i4b*t3sn(3 d3r8tsCus uo1w%y+CQ$I_B4ϙm=V͡D٥WT3yͷlbn=4[nkV&lyTnF4W4_9ƴ3Ԣv$^F_4s عoR$Dh_K94_Ep+5bG-L&s&)2d * %;#&-#'s%0Hb&s#%;?&&s؆%/_3`=k/:_Lf=_-l"*ָML_-l""ָM֞[_G`fhZ_Z`fh[bblw Ȝbhw֢Mh֟f&"kMЯ,xM3evo3D,titai#' oe>3v.MevaS>1 <9 4C<4CjcB3 9)tr3 lC,l93ltc( ra>,)Z-1Se)2>c2(6d3t,3)5f( 1 Ud3d)3RC,) VF3S|4ݹ~ 4@م ̡|* _DŴ>ˑXPBrF4&vv-ϵ,˻ 4S&R B?,&PRBe&n&TC>HrF(B(cB{L4::BB>B,4BB%_PKJDr̍ghV֫YRCVgL"lZn iZ l R !8C$GNkgLBNSNh4Bd&99G:4,5EB(,c6EB_B"XB!`B"Povr6EBHBb(ES*8B=(BSbr B暬gBBo߸B%HIgB(BBrBP4BB9"BWb0B"B"߸BBB{(B (B;r_9ĴD۸?4 H=߸_C4_,.mW ٨_stqurl_z9fĴjl4>_iصh4|A8a`nǟ4r3_izh4 Ai`Qأ`P`|S杶3ȶ`.Ȟa`nǝ1`Ǟ&`Srv4,T˛x4K5;,f1?fn`ά<`|S8h`Ȟ`έ,Lj8 lqǝqHVȸqLRȸ4xvagU]Vqgh`quqP_gGkو(0tC3.2G薮TV۰)v4e.4S3k\j_&k6qu[gx)pȞt\ǟW,Z2K9%c0  q΂qS架qǤqHǣL;v4,֟!a9eTReg.3j\Uܐgjޟ0؞jْޡ9ڡt41̴xtUrO4Ru›v}ʸ-: h*V++g+b2eȠk&amƠ`TRۓe.3\Ue.3\UjXiamƠ+5ءh.ͨƠ+bɆ)d֠6aR޸eT.3[U=*3͢ ]Ȱ١l֠1ew.3[Uܺj֠0Fe  ݡ١֠.2Mj@i.BƠ'ءfh/2Ơ R&+8ab rdȣk#am ƠTRۓe.3U[U3̓\ܡq2qR4S j΀i.Š'oءh/Šo L'*Hl 3? QVqܜbdWatnŠ[iN3n$U ot!v@eP!v4Pٜ*4-d8e|4hڜ|֠/ 3Ÿ? odnUNb Rk."ŠodeR i/Š N'?r otibe$)YcRqSq4Sq4H`*NȴELȸE_ HKdhQPČ4HNA4i_4NAe1ȸ6tN4aNŝ4Rci5,Nni#,7An =uܸq 5& W]4ȅ2"ܙܙܙܙNe,N_K94P>"8\"ܸ΋h 42ŸK\4Fpbotog_b9´qańSg̯Ԍ4GOJVN n,_ K>9J42"4[7?WՌU4SeF'ݠ'caFm _xK9q_,kԷdȸ rI3iW_=a´FI΍Jp7F8}F:oQP%ּ[ WS4Ob7F:]mh%[\۟i r%&c  dc3ޙ_K:="l N_: ´5W5HZC5ce Zck4A٪r\ʢ)^&( ^& ?^$&Y ^$h( T+D0 E' O:_K9IHڸ@O^@M^*1c,k w&04!(k |_䱇K9E7VB-B-BV 4̦%%c  dc3ޙ_fK:LDڸHD5Z Zcce4'kAً\r _99ӻ ABAAr Pw0 @&{Hڸ} z` k0k S1n*_> nDōkЊ3H2L1 v2 % /ڸA&hO % bg+Jf#o 3ia $ 7 ,ri_KF=H&Lڸ PX@f4)TMi)& n]&r`Ȅo4)ǔTi)%Vb  s toaa9 d&o! &Ds% ٜ 2% ٸX[ `h4b G٠ |`& +o g4if#3 J aٸS l ͠f\hjD˜ &G ٸ& Q` hS)W {ٸx٨&*&o蜱 kٸ&xr3`_4K4q;r_=)Dal) 0^@I2_4XAy4,-A:&)Ap+)eg, 0@K0^%kp 0@J+  kx, ȷ&I :)d *SEYON%1an &"ŸJgF-,k exe/]cr[j,,n@L0^œ&蓳 O%2O T_=l&Aa9`_&'&4/`:a~fc%&_@K="aI'&`&~4ca&f%@_9oyԈ =_\ =H_j_9]O[ $kb:Lqs%tlc3%@%zW+h+ddHj"eΌd#dj1)ޒ ++g+ \bҺ+0LָRyָ*X4Lqָ)ἡ+҈jgָ)἗+҈+#Y,`@f5hɜGX +Y+ȁ+~+{+w+Ws+o+2ֈ3p+$툍%5\P_jn|*h_}eCeɛ@g`.7bhǡqR H"YH1+Zr JreC4G숍gKKkY|Q4l#%go-D9D"a'e"Ie(g56N%o-D9D"a'yIt 3 ϟ%K[hpո1)*Ȳթ*D˟% ;Ϣ0RS͝%ˎ˟ጲ̐՝**Y*JX**ȒԌeώ*D˃%*D%ἡ*zՈvq&*DžDlg&*cDY*OոTbKFTBt*ID˟H襊%^@D<;ጎ3%[L#ոD,ARSGTጎLeyC4LoNTIԸTEAl=TDTo&"]UilR^(DbjlbEY4b$ƍ4ጕp_9 >"Ը K_9s !]x%s1b__HaŽcD4QrS7kOk0 0(쾠0˱y$Zh4`ȩ5Fy `/cUM9gs^pUԸy࡮y࠮sKNsnPԸ'skԈ&s<5KuUUvOs͟ 4Q%ɠ\  + ! 4y 3)sn00댎4R%Ȋ\  m;T!C$FF`sn Z!%sse, 2&sOc4sLFHeO4' *s2L9s/5'sӠZsEeHҷ-R/N)_9 4==*`&k $1{{p4,9  _nK;! Vt,P>~lk_=OFr \pqӸb[vEPQ4&ȷF[  50Mi % [ ' 4uE:pitb,% JӜK R OPF=e\5e4H:~5! 3% =Ӹ4ȪPepp) S S$X' Ӝ4 % Ӹ Ӹ(S4Ufh PQRt4ȷRx[ S4% ҟ0Ύܱ Ҝ_ K=븂ΗcL%  R (S,Uf #Ө7Z3८,xDwqyQxRSTÔUHl͸4$)0c,  Ҹ Ҹ_Dm>˨d4 % [' *Jw9ͶPkƸ0akRyy`]jmFL\D0{q_.K>DHid4 % Z' *Jw9aPjAK\^{a\=4\\AerkZel}KDd < heAqd d >d d d ݾ~d־aL _:ͺ?R=7L*v KٌvvIW4g4vd{D_ K?:R7@]-ڌL,d(dKٌuڮ]bgbvd{D_hK:7?4Qȥ__:M7􋮌?c4,ꥹ_jRD0/E\GuFeSjA/ 1UJufeSja/ 1Uu_hKPj9 Dtj,Х_ D ;>Slu4A-- OzcIr~tXe&G#jsy*eZtC,/e&Ce*hDetbHr/)GjRDyRjqŷ4RA6) Lk~A/ƍi*iȾjq|4A/R64)A Lb/kAmS~3 %j,/ll>~3 % F4cI y4zN4QA6) $LQ64)A L kkA/P~3 %/jA-*A鷒M_ EE¹ _=߸ :D ϸ: > ع_ʸK4+_K 9=θ +_9ü G=¬Z[5 )!PSӜ=ܝ9U,Jً _=:^^ $GRθ17 Gθ^mʌK>5^g^p R^Cϩ jFBD>4q_hDK=( hh L( pθaΨ3)\ L` 4ٹZ > L& BO|B Eg( G% _3K9Q_ǻ\) Lp!θ* PHθ Μa >꯹0ܙ= T ΜzUEp* 4 ͟ ͜_ 9F>MH_  ʻͨ?%UDAee_zFJ?JDH*f`JRE4 ˰͜ ͨ.u O> !3M WUGcL Rͨ ͸ PSX 1 ʢЦJ ͸ 4 Eo_== ' a͸Lb͸ȥ [i,  ͸ :cܜlU, kqbpk":܌% <qS jD>Br_hK:=) ?, > v͸? 94T. _ڶK>9 >:C { DR& >  ̸3a |4, L H@#U / 4~Z 4ש ̨~ 4}D ̸̜  è4 L>Z  ̸̸ ƋS%UhINh] ,UPK~ SD#[ _8K>9 DE4 D -' _NK>9  E0' qN"_汇K=ȸ]4X Z4  R̸$ DhJX! @̸? % _ܵKE=RǸt4,.Hm*X Ub L ̨ YL˸ ; b*ˈd̖,P]ػ4 $ST+ !O4 *`NETFte,N[VuXUƄEJRA^]Ub sL˸ BdL3 !+ !(  OXJb x˸% 6Ǹ ?dL>DInNlN_=IFI~|q L2i˸ in˛e  L`˨c % q[2Fi % H _K&34,qh"`Pm/} "tj,3] <]3v'~@4,)']&N޿S)Bo)ed#(*r:hZ-b&_9մ`2lҿm#Z43)鈠v\֋4NYl뾿2m>ZYȵpE\wu*.2u*.2󣿸>qV/_C1_ru󾎴K!ȫ뼰x *Ǟl p޸ * _oI`f!f"MOV`ƿh!]`f "d`f "ebf~0byh|O\`h\_\bfp~0bih|OLMhOΌhxO"kOΏ"kO,(:F,eztgieho'ihh3,gniifM3tn DoF,pa1dvr3c psiD8Il,21N,=3r03caOC( =,=8I301N3aOr3cieh (g' L3c-\hram L g#t _t,'x0aܾleT¶錮."r{о0*.0rǾ>nVa%˳%ax['|[$  Y &U0lh9lZrB00h_;k}k. "!$# y{}~x_NpKU94V Vx_bK:D4@fĻÚgt4, á55΁"5vxvx!g[xV6v툊pwp_pO7v팊tw_7*8-en7i` C>`9Hi6|;΀yP4/!:Όc'R4M 4)> @mAC _̲K9 _82twD b& 4׺= Sơ Sơơơh#@7g]mH*ݱ ۸ 1 H*RͣKh_9m?E7Zz 7_Aٙ H(wZ  nશ N*̫ Oȡb4 b_N*K:=R0U0.U 2]\] =4\-vZvj Rq"ᒉv_hK 82 F SV{A_ A隆_a4,KLr J@0 UZfս  h$_\  GM͖h_hfK=ƺ8_{o 4AiLisZKYie&MAOETX| J4Z T9 mǸDRP 4 LT_ G D0*X S4) Y1~\Uજ& 2 D/ 4=L G4  D DF_9!& 4|fLKiieHi&+HM>O 49 54 4ȋ <ދ& 4 4+_9?EQ ~/HI4  ٹ_K9˽8O{SFEA,U p9} UOkDH 9FG֋S OF;hA= kH= fh8=_;QKJqmaۧ |ѤX;Ra",Q4v~);_93x~kP"_:#ȁkUbm-M fcR"_: Qۑ˗Ů"_K:Q~"_ﯴQϕkx_᯴cPSےiŮ_үKQۓ]Ů_ƯK[QP_:Q~kCŮ"_K:Q~4"_:Q~k%Ů"_Kc͕Ů_~KQ~k Ů_rKPicnU~_;aPc[ͮ~ĸ"w\G_9I@QWmAf,Ҧ~GR_4KQ~kĮ~>~_> KQ˕k_dQj~_dQj~_giSc~|_宴bQʕkl~kg>_ѮQ~\_Ů~kQĮɕK>~k<_~k=Į_󾦮KPMUf - fQ~,_P~ _Q~_}Q~_qPǕî_dK9r~ø<q2C8$,BQ߷_e_GQ~_;P~_/~kî_#PQRSkTpŕî/#af/ <#ƕ<_#/ƕk_dQj~z_\㭴+/롈~l8_ѭPic݆nUq~kUî_KPd~H~kC#-Õl2_:ddw\d\W\00 wG4qw_qG""w_G0֌Y ܷD\hGhlt֐>U +Ua%Cru3ta{3o5 :)i%=t  Cit44im3_lάK9{rcEUs<@Ut<T(>T %?ua4a{r3t %o53m(aCtixe 1letam _9e4>{GüAo(g+ @r, t!o3m; .$G㚈CjNj\ n0 咴QAu倰 Qv;4\v꽈|j, "q1$qu8`R,\|bhѶ,hvthkhѶ,v_hK:=*T}=4f/YIAWEY&_ /ȫK:<4 _ཫ 4,* _9NlN>K?fU=-A*I,-*+*)&%$DAB?@=>"#:8 6j3545I7IɠG5 Sk4L!L4L4 L yLc tav4c˨cjyFj<"4@ ca ,hk}h ,@v_h d>de|sJxfVj͞X՚j $yMrAPkwcGJ[eߦ_KT9{DWVͦDkkm88RŸ(3"_ުKh?4,q͙HKmer% _9ǪDWVͦQZE4lFa7<0Я  " ַP֔K_9(DWVͦSda ֧m֨m֩m ֪m(֫m$(-g"( _AoOQww!<m ׁLj }f+ _9UTÐf@DAu}; sw(wcaH4 }xW*(tR*J mJsVHe&s ~4sǕʹP_wyRTtk4'ɴ W4OparcS$tC3Cea3(9iW t parcS$pml}if< 1m8),@Ri$ n(Zf& JtD ? ir{3  _ԩKEH?Tx w  66 i" *vux| +[0r̠'}t6E:_K@u4*qw2~k4wDGx8͑9q:͒/ fZ,~caF4 Z $r+r42qܬZ6~ca0v~GR4 ADaD ր Z r34\2bڬ<6caT4~wϾG4t( d rqϏ37)q,5rP*LrB?dr ,r v"iece1dl%3q %5tmDٺtB9wt9g9yf ٺm}@ްt,@[9_侇K:Du0hxW v3rx z[4H"bZ v@dx4@s|6@sǑD_ C9䧴f_l(h4@A8yFGxHHǶ%H0yHl|xKOnes_H,3,  C4\4 %Gs oT2 a?3ci eg a ot nocdCe iv yA$ifaZ4c\F4H찶|4,zH((fg 4/@_h=l:t,kZOvvR4.l hڹ%wO ~EDDeZKm]D`nMDTp`oD^8^9k^_<) m)*Pl"l(X)`\"zo" s foO* tCr 3ks 67 uof ton dn)8   ,/d_s[ L^2]l\lu6mk{`` k|:ԯg`o`<*J\]^h       R.qsy   k{``pl{,yjlp`^*J\]^h      % TH_b]^.fõIL   :XA1C"T@ꨎb4L)*gh   Cj#.SGc ֜le a0M _kͪB    @_l T/(_h  k    o_h    \a\`^q  k kkl klll߬k \j\a\{kl\{|l  \x]i!_`llj\Oj_yO      \k@   \JJj  k  \k=k kkk  k {k \l a]`h 6kll ߌМ'k\ ]/\">g}^\a]]\b@l "b\^\\` j\&Bk { \c`"k \ {klk k>\k_hp\Tkk\"g_P\\ l|g^ <k /k N    \ *) \h\`_  < #(& Cg]Y]\  N*h^k%Qg_k\bkkkk\{8  `\ ealm(kkPa] ^gk|.kl؏{kk{|]4j]D]4zkܮ`\d\h]ik| lko] p6\kkkkkkkk"k{O\X\j\""^g]j2] z\\lk\Tl&{kN\jk|`gkk\p{`Z\BjJ\Bj]@j]@jlkPZ\X\\j]\tjh}hn\&kP\kklklkk|ot2]LjL]`jL]jH"k&\k ]D ^|lkl/P*J\]^   # ; \y \ ] *J\]^h           -,\,2vC.  )Q1,Rb\w_as^_\>\V1\_;!'9!61                        %A 8?\$ H\U  Fb mCJe\\_J]_\&*:pd@`_ Z\]^ ]^OJivZ]]]\\p\p\Z\J:\J] ]\\`_\^`\\\]\_^\^ VH]B    S#  _*y]`@v_0x`J\:cp^@{Jp\`)pa\\]a^Z:_]^_]_^0bfQ R ! U9! Me^j@ul\ ]`]^^\\ \]ʜNbE\R_b-uȮӧ|sn]EjGс fʽ_\\pa:%Dj DxNߎIyB{հ1m$4'5}]k\mF\_Da]]]]^nNƙ$$ix)_)d"e`\l7\N]a,\\^]\X\]  ]a%`d] ^SN*]hP\]C^I`^H`^_``OaggWc0a8a]bo`XaK\\Q] \__^2+c] nf<_]cH`]O`V`_ab]C_^N ``]^ eah{>*od^ijq\pdKGSf Be J:Z _w A]0f*::@\_P_ a_0]^ iQAa]_:*\` ^'`ԯrt*:p6*+_p]_0^`:_]ep!?      G]] /*:: _]F\Tg` ba i?:*: _]}z`@\\\j:Ph^l9$T\ a]$*\ Na|m |*\ Z\]\:\:\Z\\`\\p***\  \`*\p\p\r\(] \]H\J*\^\^p\®\]]]]]]]\^`}]f \^]Pl   (: | \ap]e] \_]  J*\]]]Z\J\\`\\\\\p]] _\ad`\:\]\pb`m   9\]]\\\)\N\( )Q\z))\W\j\:\Z*J]P\dqO \]]^]\]__n_^ba] ]y *:{ ]fpL )*btl`   )   z`)\&J\\\:*I\p9*\p(**\p:)\pI\V]\   Z]`] **9*\:J]\p:*:Y**\o *\o)**Z Z '\o J\*:**\}=& *^P**ll:*_\_]J]J_+*_]] \\]\]``@Z]\;\\`]]\]_\`!\]\\::]\]]\*\\Z\`\a*\` \:\\]*\*]\] J@ } G \3do "<      8     l^`^83u?,O? @ J` q P@ 0[( QQ  00K00Q\Q00Q00\Q00T  @POo@U H Z7`z0 SzASzzD S@ zzzzL&2 SzQ0(SzzT0(SP0( zzzz\0(] `I ]ʻ|Hrcc 1.01 `L!edit,< wwwwwwwwwwwp鎈~wwsm!edit , qwwwwሏq~This is Edit, version 1.00 (20-Dec-88) Documentation on how to use Edit can be found in Edition 2 of the Archimedes User Guide. The following remarks should be noted about this version of Edit and its documentation. The TAB key can be used to move the caret along the line to the column position that matches the start of the next word boundary on the line above, provided that the 'line above' is not wrapped. When forming a selection using the SELECT and ADJUST mouse keys, if CTRL is held down, the caret will not be moved. This makes it easier to copy a block of text to where the caret already is: hold down CTRL, make the selection, type C, release CTRL. ADJUST on the close box of an Edit window will close the window (if the window is not modified) and open the parent directory viewer. This should be thought of as similar to ADJUST on the close box of a directory viewer. The vertical scroll bar indicates the fraction of the file currently visible as a fraction of the total number of characters, rather than as a fraction of the number of lines. This means that the length of the vertical scroll bar will vary dependent upon the number of characters in the window. If a desktop closedown sequence (e.g. Exit from the Task manager menu) occurs when Edit has some modified buffers, Edit sometimes erroneously terminates the desktop closedown sequence. It is of course normal practice to save your work before trying to exit the desktop. < +LTaskWindowTaskWindow 0.03 (21 Nov 1988)ShellCLI_Taskp*ShellCLI_Task runs an application in a window Syntax: *ShellCLI_TaskPA ShellCLI task is still activeS1 W1 11IOR0HP-0 < < 0 Wimp is currently active@- gO@Multiple instantiation not permitted%-+0 `Ŝ P@2@<`` 1 1 @00S:9S00Cޓ 0AS:FS70CޓBad task or text handle(0(K@1V U%(p ` @ P?"@}>00CSet㔅` @7pYp Rތ`-Ojj >>O 2!y @2 uP:qj mj Rgj cj Ry]j0`q包%Sj$D@A `8\< U @NO >@K$x(0! %d%`%l%h%p|$( $Bad parametersTASK Rތ(00- $O @O >@d@O PU@PU  $!$1  2*Z 0 jZN:~ Escape m$ 0`}吅%(0K@t0tQ@ NVOO1 @0+ d0d%^ `0`%~ l0l% h0h%4 p0p%< b001 0@0Ŝ@-@<# x0 | P#|1>-@P5P R>@t0Qt4>@-<@?Ӝ? Rތ_- X:7_Р??@@-b<@*,#,5>&?Ӝ? Rތ_- ,00,*X_Р?,0?->@@?@Task dying0~0@-<~0O @ *,#,5>/> 7?~Ӝ? Rތ_-B,00:0X_Р?h,0? C J ->@@O? @-,8 1h 31P-<@P5`tQ@0x0Ӝ? Rތ_-&W-_Р10x4R< }1 Q Р}! Q,3}#,|#/ 0 ,}P@- 1@-$1$ 0@oO R>@t0Qt@-- -$8C=8@-1 1 08:3jP1:P0.0 #1#0? : 0 #10- 0@ $0 ,33 S0S0 000$0$0 #000m.<@L:%mA-0 ,402:S 00`Ls0:%A-10( 2} ,  , 2A/!C?1 B1?  R G/!3E?1C/1@- - $$1 :@-@>N@@D:P@@@-@p0@0##2 1@ 1 1XB@@l @ T10#0' " @D"0@@:,0@# j2 @ 0 R@@0@Key$ -A/!C?1R G?13E/!A?!!-EA/C/<0@-80 @-80@-00@-00 @-@ @T*@-@ @T*4progInfo query Hxfer_send Xtext j :remark zfound Mgoto dboxfile_db indent , fileInfo  file find Z4 `R  =0x 4Td=0 K titled> v=`Edit (v=`Text editor dv=a(0v`=a>Name: led> Purpose: > hAuthor: d> 8`Version: > About this program Acorn Computers Ltd, 1988 p  =0Edit it > e&=YES itled> 0*&=NO titled> ? l40 .$,lR =0Save as: e`=OK titled> a8 `=CN9aDJ8=` D,=` n <=` File name: icn X =` `XR  =0 emark n > eR=OK titled> T( pPH2  =0Text found: =Stop tled> ^=Continue > d=Replace d> =X =e,\y`=Undo tled> d`=reDo tled> Last Replace End of file Replace :<\R =0Xl=OK titled> =`cancel ed> g h l=ijx"lGo to line: Goto text line current line: current char: ~8tR =0File eZ=OK titled> V=2File name: HhR =086=OK titled> =`Cancel ed> =Cindent by: |aDXa\4\axIndent by: number -> insert spaces -number -> strip characters other -> insert at each line BTR  =0 r"4=`OK titled> 44d=ab4=a `h4=ad40=ad4=aJla``Modified? h^`Type: led> ^0a`aAbout this file icn Size: Date: DPR  =0File eh|=OK titled> D=2File name: PhDR =0Find text eJ=Go titled> T=Previous > h=2`h=2^hFind: led> `^=Count ed> 0(\3)8n03FXhaf%ha$ra'ta& Replace with: Case sensitive soptoff,opton Magic characters: soptoff,opton \a=any letter or digit \d=any digit \.=any char \n=newline \cX=ctl-X \&=found string \\=\ \xXX=hex char \*=any string | Boot file for !Fonts. If ""="" Then Set Font$Prefix Iconsprites .!Sprites | !Run file for !Fonts, version 0.43 (20-Dec-88) Set Font$Prefix Iconsprites .!Sprites | Echo Fonts now available: Echo FontCat !fonts, pwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwOsm!fonts , 33333333swww333swwwwwwwwxwwwwwwwwwwwwwCorpus.Medium   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Yop=dcccim_ihihukwrh|O:3$002=`30& +.:.:J-= .$c[>0J0JV88fr+T ?:33cG5+ &3N JLO$ D`=DfD/Yn  ::835^^Q^'+......====$:8>>AAAA5JJJJfhfh0B:::::c:55533&3.B[EDDUDUujDDD??DDDGDGSh6D3P3 0CBP^&E2DDDxsu[xzzH)'"1 1@T>)()E*3TT.6mW\'61)3'O3"'3$")9R'9Jx6Jx$x|HJHJMMI7   0>))))))33336%''))))4=6"""""$)))'9.9H?RnCGmAATfpodWab}WeWfdffR;766D666E6666666H6H6D6666666nonNtnn|nnnfinii)A6nDW?CR67t6c3>kkj6=6q6ottiWttWttWnittiWttWtnWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Z- 11( Z-fY|ZZI,}@8 Z-(H`x 4H\p 0@Xp  4H\p  4Pl0D\p0DXp $ < P ` l |    ( 0 8 @ H P X ` h p x $ 0 D X l x  0 D X l  ( H h ,Hd <Lh 8Ph(@Th| 8H`xQPU8VqY;  JiEcKGJRWGRg&Q avf2K0kQu!Qq@*@*@,0"bS%$Cx$5PMCD$!F J J2af![yjd*"Cw$ff{#U8QHqvc*"su"Ztt!"b'u+FAtT'wv(#!"afjf'SIqv2Z!""rf'h)"9 Urv!B:C|C: DaHPMQw1'Qy8b(CD$CD$c1(@lHbZDJ "T5a93d@Yu QX!X0QX@:B<@:aZ0xwai!rGg`Q+`0+HQXT *" [WQZTQX *" [WQZT0XddqY!ar``IAFITj4aV'CbHQ'@*@+bJ&AhT'I8IAj Q8F y(bFQPP%;R(AWv@,0o,"     @@@@@   Hppq-ߢ--ߢ-abD -O`.0_ `0>oq-0^0^P .Op@? o" po@ IpJ2qO-`A &M_ _`41>?! !n\>-@-.)!lc& 9QAHq!FP__P"@ $oOO0 ~-0o" _oPnQ  >p@ >_2>`,` _@O@_0ү-P¿_Pa) .@-`_  0op >ҏ ooP>)N [_aIr)S     - "B$"    " ҟ>P0>c& -!""""" f>_@  o@_P> p- o,0_P! !"}>O Pρ. O O s--p-rJ -!"""pppppAp0lq1&q%"2,q!,qo0   )_(  e6{`m-0PQ-P@[">0N&!_O """_?ߪ)0OO>OPOO,OO OOO0OOq e5Am'Pq@1o`@(@@@@@fff60dfff6  "_0P1-- ݢ-oPNd+q*"0_N!or RP- - p-P.0qgff.$fffff !"@al+00,`O .><qڿ@@!PA><ql !"qa @0I!qo`A0-pGO@2__MïJ f>_@aoo,",oP, ob6ľ  < ,ԯa^@*o@*0*>  !"""""-"""""b  ¿a@* Mnaԯo M@)0Q d!pm@)s, PO D,6S_ ^Bff1f~gُ¯1p-"Saaq>_ 0-O@ --A@-`0O-@0Q9A,@+dV)aa-!&b$P._jff o"">p`-% cfcff&0,!_""s,0O`-OQϪOoOpO0uhfOneffff!"09aqLį@-a_`pP. @-8-q jaM1%"c_O>O0oOpOO>O¯0Ǐff0ffff&-!_"""-O-O-O-O AOpOfOOfOOpOAO -O-O-bǏfff--bffffff)?!_"OOOO OpOfOOfO OpO-O -O-O-bǏfff--bffffff!" aq:b@@OP r """`--1Za@J`o!;ppppp|ff;""ppppQ| &pQff ff&j1!"2%"OOOOOOefǏffefffff!"@qP<a>`pOpOOOOOQfvhF@-QffffFd?o!_"0'O>_@ O,,O,,O, vhb}r$fffbffJ!R#""@p@p@p@p@`o@@@@@@@cgFcfffFo-1$R#-h@-.@- z>@-o"A-p>ڲ_GMp_lOcf fV@@ -N"--`--0-->o--B-=->se~cfeffcVA)zM>P0OQ@r-@b-> -ҟQ(0!2%"OO%"}OOPOoeǏffeffff% M>A6A)zM>P0OQ@r-@b-> -ҟQ(!_" 9OO_O O_S,fv^OaOOOOPQǏffQffff&"][n>op102>Lzҏ _Oq@;O@ jB)a)"_"OOO O r-O r-O@rgvhf-"fffffff! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFE_0oPP_.`0O_p .sj6QvH@-cff6QffF$D_p Pmo-0O2qO`a__@ _- OOsh fH-cff ffF ao-1%r%00`,>NoͯP0:>P_¯O8Q}@ef6Qff!B$"    `>]0-_` `AGbOAffFbff'"",--q.,- q,` ,  ` hfv, odffff0fF!-~F!- - - - - - - - - $`o>P_0o, - `>P_AfF!?AvOOOOOOOOO"O A4`,,q(n$ a!  ^Q%_O OcOAhO0JbPM !@2}2oo@OO -Q߯OQOO`!""\n_Qc -!P0\0hQyR(  -ppP_,q < \0!"""<A-_ca߂-`0 m 0?!2%""OOOOeǏffeǏffo0@efVcf%01o O jOZ` O@-O@O  OAhacf)"? _2%OOOOOOO09B_M&OO ?""Jo "2%"dv dfVS Aff&cfv_ - - - - - - "fff-"ffff5@ i)@ja!OONNN4)On07O-0ffFOO`?""ja!"2%"OOOOOOOaO""?--1%!$ $O--  O--  O--  _>- 00;5o0fZ!Z)"? _2%OOOOOOO0t9B_MdV&""rK{o`, >A-p!>Ÿ!bIAfff6Ag6@@@!@q9@@_@@ @@@@@0@=A8c,Af6 fffF- fFp }r0 ;a_Ppp. 07cjxAbf)`!";""@@@=@,N QÏc@Qf6Q} [9:-oc>QHP:p`- *b-- Z!"% A@@@@@@@@cgffOcgff@@`p0@Pl *;.¯@@@@@@@Qb@pQfbf6a0ߏ`,>0_0oPpOske[OcffefVA PO`.0_noy- `-@ҟ. `gd\-cffdfF)? įa' 1 ٯ " , YpO ffbfVbfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff`6""@pjffpbfffffb& p&_OOOOOO>>OOOOOOO0oJ!?OOOOOOOOOOd) AF A-OOO_ OOOOR Q`L\'@@@@@      "o_Q   \n_Qc -!P0\0h J`!R#""@@PJ@@-`9q00llo*q_`o p_`o@|N,`!a"N" ef~fVOeffV0i=>o-P >`0Gb-p4ffFbff!?OOO=SOOOOd)  ׮0pR -Q_*r-ğAM0*ROo0 , ' A%R>>A%R"ZmZ1Ͽ"l`,* zq>ӣ Lz”`,@=$!-0eS Zsk bffVqObffVb&!q>q 캯 f"Q @@oaq .qa@o@@JppppnPB"Zmgfe'K6l`,@Np,ӣ@n Lz”@N-@=0hf Zsk    .>M@Q !"""""-=OcfǏfF-cfǏfFOa) ߪN@NN>A A3q f ! }؟-2tPo 3 fA ,oA`-@olL@-aϣD $@@@@@@@@@5Q@J@Jpppppppp`pPpjj1fffff!aooa!eaH OA6 """-Avh T 0fff-0fff1f0M,Po }@o*-Qr' !0¯  +¿0,0, +¿¯ 0! Q  Afff&o """@Y@a cfV¯V N01GeAfff&o """@Y@a Q  Afff&o """ZP G-%0Lbjկh,0*@ a-f f0? ")aa-!&b$P._jff o"">p`-% cfcff&0'q )aa-!&b$P._jff o"">p`-% cfcff&@'M)aa-!&b$P._jff o"">p`-% cfcff&Q   )aa-!&b$P._jff o"">p`-% cfcff&2(`()aa-!&b$P._jff o"">p`-% cfcff&0yq9?0q!!)aa-!&b$P._jff o"">p`-% cfcf؏ί`>`>P-aMj!a-!"(BPp-.jf 4fzp`z,p40q> cf-cfffff" `N J@@n ,qO@0-@ _P< O`PqJrOAzB))O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffe`q)O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffr@+- )O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffff!QN L)O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffq9?-!j1!"2%"OOOOOOefǏffefffffA@ j1!"2%"OOOOOOefǏffefffff@'Mj1!"2%"OOOOOOefǏffefffffQ   j1!"2%"OOOOOOefǏffefffff o@ `~!("Spo-pp-@bߊ--`"op ff ffff6@@ -N"--`--0-->o--B-=->se~cfeff1I0-I#cVA)zM>P0OQ@r-@b-> -ҟQ(A@ cVA)zM>P0OQ@r-@b-> -ҟQ(@[¯cVA)zM>P0OQ@r-@b-> -ҟQ(Q   cVA)zM>P0OQ@r-@b-> -ҟQ(1I0-I$cVA)zM>P0OQ@r-@b-> -ҟQ( o@  rVaO `o¯ҟӏq-UP=1fg_O - pqo-,@r- `2qoo,o,f  @:0>! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFQq!! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFa;o! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFM ! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfF- !B$"    `>]0-_` `AGbOAffFbff 7@@0!2%"O&^>O O@O0eǏfF-efffF'-*!-!2ƿ----O-O--- -Q4-)-A----oPa;!"!  ^Q%_O OcOAhO0JbPM R>NN"!  ^Q%_O OcOAhO0JbPM Q0@@ !  ^Q%_O OcOAhO0JbPM B$!!  ^Q%_O OcOAhO0JbPM Te o@'a!  ^Q%_O OcOAhO0JbPM T E>0A%R!  ^Q%_O OcOAhO0JbPM e -QV)0D&",oq pO0>,r})eaH,JMP0OOO!o0qAQb&"<A-_ca߂-`0 m Q_""<A-_ca߂-`0 m C!"<A-_ca߂-`0 m A,"<A-_ca߂-`0 m  &Q`obUJo "2%"dv dfVC ,`Jo "2%"dv dfV4 !Jo "2%"dv dfVA`,Jo "2%"dv dfV &Uaa &UQyR(  -ppP_,q < \J1(0!"")"? _2%OOOOOOO0t9B_MdV&cGϟ 9A""rK{o`, >A-p!>Ÿ!bI%@q  ""rK{o`, >A-p!>Ÿ!bI M-"""rK{o`, >A-p!>Ÿ!bIA4`,,q(""rK{o`, >A-p!>Ÿ!bIQ`L\'""rK{o`, >A-p!>Ÿ!bIbUo` &Q "@` Afffff- """""0p0$;"  h _=qo_0P->pAO`10^q:,a+ q@Pl *;.¯@@@@@@@Qb@pQfbf64 @@Pl *;.¯@@@@@@@Qb@pQfbf6RPqq!@Pl *;.¯@@@@@@@Qb@pQfbf63 A@Pl *;.¯@@@@@@@Qb@pQfbf6bUo` &Qbfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff%n?"cfffc~f - !- *Q P_ -@ -O`  , JSNMM - -bfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff &Q`obUPortrhouse.Standard   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~@`@`@`@`@`@@@@@@@@@`@@@@@@@@@`@`@@@@@0@00@@ppp  0p` 00`00@   @@`` `  ``  `` ````` ``` ````````````````` ````@       @           @             `         `             @`        ` @  ````0 ` p`ppp pp @   @      00  p                            p                             Z-@8 Z- HTh(H`lx @` <\$Dd8h ,Ll 8 X t  4 L h  4 L l  , D d x T x <$Dd,T8X|P\|$\x<Pd|,XHt T|(@X|@l Lxt$Ll4Px,Ld|4T                                                                This is Fonts, version 0.43 (20-Dec-88) Documentation on how to use Fonts can be found in Edition 2 of the Archimedes User Guide. The following remarks should be noted about this version of Fonts and its documentation. The "Portrhouse" font is intended primarily for screen use. At a nominal height of 10 points, it uses no grey pixels when rendered on a mode 12 screen. Trinity.Medium j  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiklmnopqrstuvwxyz{|}~y0;##**%!=!,t2D*H0.B2OBQJ/* #$%'%"'%''%%&#&'$ 5# 3%*!#1!&#, !By1#%0.V'/*%%#'1(&J..0.5 (###!''%!&&))) !!!%%(*(!*',,, 1%..1..##MM&\^ZUZZZNPZZOZZZVSZP# CD#Q;U,OZO^QiX}vgS2pBMH0p{oL9 %^`axa;_\O 9CilSX...,J# Jx}}}!}{~TWxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx'{x{x'xx{X}Zxxxu}@@@@D=@@@D@@@Dx@@@@@D@@@D@xxxxx{xxx{xxx{xxxxx{xxx{x{H xHQ{H7?Qt%gO = e`.0*0H#b v;;,!m m{HHHH????,p Z- 18 Z-zOiZZ飮s5/0@8 Z- (@\|$<Ld|0DXl $<` @X|<\x$@Th ( D ` p  0 < P \ d l t |    $ , 4 < D L T \ d l |   , 8 L X ` |  ( < T p Dl @`t,T|,X4Ld|(8HXl (<Tp@!02sSRA1 w$ & w("1! xw"QlECSV 3 V Rd&)tfWecAeD iuBA'hu"R5@9S0'#r0<{ la205bB0tHSQCDDDHAf`+B; U9ppQXR0) %0rh :1a  0EbD,A qh7!*qjd&QgifJq9REaC29Qf6QV"kQ$90fAf1W1*0fRBZ0(!AAX v 0DD0DDb vQ*AXB7$qAx vDd% Zwf#j2*dpMR4q-A1fEE hU*a[b1U4 YTxp-oq-1fEe% ZDv3pM2$Sq-R1fET ZpM2$Sq-A3fET% bhev* .;&!T5" ZZpM"-$"q-q-0f0fZp-q-0fx# e5 Zzp-rpp7q-QHcFe$ ZDp- p-p-q-cVs6 APnP#cP,fqac&d SHt  s gr rS e rgv'qM-0A{1U Zp="%q-!1fEV ! i wz@} >qKS5 cjY(@~5@N10eEV@xv'4R+l"+AK!U3 cj@N@N@N%@N STVT Qhe&`= (Pp-5acFAU 0 ڄcVAF6qPZV~Fq^@cFAf06 cIzMq80Q(RfAV  &@N 4A 71f&R5 XDa+ #~!"""5R5@@@@@c+@,@,@,@,@,SI" ADDDQ)!@8$L 5v ahVzaK!5Aa QWiayaWRz2[av9(9`US%pjE3{%"; w((yR9pp00ppp00')7WRIp D htgQifQfx"kvP,@qKj0p, K :aM!""pq=-0~Q 1yi +R?!& | _>-----.O0@] (T_0 -?oO-0`oq+ @5r+^oߪߙ+^o4a)@a * * *뫪j""BK"" * *a0y@A,aaJ!"""""01 vP= `- m0MP=% 'MA`oo`O@. - - >0O@pP_ z>        zgfv@y kP,-o1үq@+ G- & " }3 Gp_0 _ c@@<-"1)0qlSoq0Z   0fff6g}ff6  z0\ P,) 6 \w@kk`@o,,Iw0+>dff |+1>0> >pq-q>>@;Ϲ~,"P_,<1(  - 0~@nP_@(`N0Affff {@qMN0,@~!MKqҟ`N- ,P 4,QY 1L^N- `eF  -O@$OO@#-o  #01 QAa0y@A,aaa % x,qMPn@ @}`M,QJ!"""""J!""""" q @}`^N,qM@m T ! O!r XP+, 1-_pb9QZAz%Qzl~|QI,"! `m+> ؟  }0-`>.-oOOpOp0> [-c" P*0zI@>0i@Po#""r ffv>pg 0oQI>`, mqH15]OOP-O oOO oOP>O_"mϪO OOOpOOOb5dffff"0K%"c @#_O_00+@&!bʽI!j#~@O@O _@O@@-O@p-O@O-@P_Oa`nb'@fffff%52A\@@q@4@5@ߪO@("2G@@@ `Aff0ffffff6N@@@5@ߪO@("2G@ @bpqbfff@fffffff!"J' ~*@@0-@@@@@=QP0> <QaJRAazZ==@@@@@@@("""Rߪ@@@@@@PPB&B&@fffAfff ZM@@@@@@@PB&@fff !@Sn!Q'               0fff6z ALqqM *+q,,A&!7cffVQfffJ8"2үqү үүүүүүүүүүүүA;cfff @ q=.@@ @@R,@j@0-@@p@ L@2>AĒCIPm>bndfV0ffYq_@0@@@@d@@_`@`@ `@`@`@q>`@`@I_`@`@`B1df&bff&"AKK!q-0opppp0>qmBZ 1N`@-@-p1RdffffRH'* ,AKK!*q-0opppp0>qmBIPoүүүү0,үүo=ҿ#;үү`ү ?ү Oү@?үB9dffff !" %׽)=@,0ESP' o@q @n )1q .AoEQ1 I-------&--pcfffffff!"'P:BaM ,Ppp`p`p`p`p`p`p`p`p`p`p`!m1Qfffcff6r`>O #[Po|pp _`,0.pNAMcfff0ffF&0--p, L< -1,  ;70,0p_@=@op@N L1MbffFdff6efFq(Q(^ 0\-q+ ,P,Po0LqN  r90fff6dff@+@@@@@@] o0< -P,o! QfffAff&9"""s0> +60>0>0>0>  ) }0> ffveffffffA-@-@-@-@-@-@-@-@-@-@-@+bfV `- P= ], m`-@Jdf6 BAxq0~q>ϟdJ!""""""!FqqaV )`}@2pQzAxA@p00:"a[  O@n O pOO OO` 0ү9A> t^O0( O O !M  @) Gҿ2o>--> @~>>ql2b8\(E|-@`-.@-@`-?@-  -D-@-Ps-s !; =a1offf6("R%>`Mq|ů J QIOOOOOOOOOOQF!_"OO`o 5N  b)$LP+`-qo `-j@x  pop  @3 7"z_@-@-@-@-,@I!'N 9 ~qIQ!Sjq(o< Q`,poppppppt c@) oqQ^O_ O ү ҏ; DLO0J  ZO6 ""O O bOR ----------------s-1,zZA)Q @ @ @ @ @ @ @ @ ,oAv>D,qbrJZ!)@@@@@@@@@qYoߓ,c"\5  ҏO>-O-O-?O@ atb(QQO O!" ǽ   OP >O O _` +0[c_DA( I@Z >p"p0 xpppPp6R 0+ ];o "RL< BoqrQKz2 "Ϙ@1-@-@-@-@-gAN"0P,q! &:_0!"""!Pҏp+O) `.G@@. )a!""""0h0O`l@^gqo *uP- qOtp)q M0'!""""!"qJZQ~_qҏ2w >Ÿq _X0'!""""ZM`x0}] f0_`f0>(b!"""" qJ#2- 'P1ҏ>00qŸ@gf_!"""" Aq `o,_p ms"L$L$L$L$L$L$L$L$L$L$L$LQ Rao@      q(<      00 z3) VQ( A!o?`,@  I0}@ KAz8I %OI0-I!0Iqq=$a|JN ֫(Ia",'Q&q+@<P^-p-p-p-@^M@Aٮq+@=@@@ 23S83#0m o0L -P<o! QfffAff&-ڢ-ڢ-ڢ-ڢ-"@ڢ-ڢ-ڢ-ڢ-ڢ-T A'qMQ<0`>PN  @>aqN@<*Z'\oP0<aK f QIq(0`YaHsL+++P<Q&z:A)- j`@pvqOP!< S@~qP+0Y l (axLdV "ϊMp-@Jq-Q-A-a<rY!!,>o,>  o ,>   l@,@,!"""""b+!""-!""YaHsL+++P0-Z !"J--r2x mr` d&Q(  >ƞ0܅ߖҏT O- O- O- O- O-" (  L@, L@, L@, L@, L@, L@, L@, L@,QO@,O@,O@,O@,O@,O@,O@,O@,O@-qǿQffff6APba >% ""@@@@@@@@Rg ;ezP-P= m0~`_P-,3A&!! {`0 `1`0 @@0]aڪm@*@aP-DK> l-, | -0]--`-@)Q0@ l I0M` KP,0M" ]!P,%q`-  *0*i \ "PZhp-P,@pO?!Q \AaiŞ0 rHD 1>OC_ 0@+q bL0L(QQ :pq >x"""0}ffvo9P`>g J,P>r. "(QQ :pq >x"""0}ffvo9P`>g J,P>rVQ , Z, , f&(QQ :pq >x"""0}ffvo9P`>g J,P>rVQ , Z, , f&(a < >"""P}ffo <`>yPK, > |#Ie (a < >"""P}ffo <`>yPK, >-  % %(QQ :pq >x"""0}ffvo9P`>g J,P>0(0l+ygdZ _K"B.q ;-c`-#"fv- 0+$"2-  l1P,--`00K1~ff fffffff&!ҿ -nA9J"RiTTq - O -_`N^%11͋C$2؟oa+paOp%OpO'pϪ-p%"2O(pAOpO@zbff@ffffff&waf$2؟oa+paOp%OpO'pϪ-p%"2O(pAOpO@zbff@ffffff&w@~ f$2؟oa+paOp%OpO'pϪ-p%"2O(pAOpO@zbff@ffffff& 7sq~ q߆qAf$2؟oa+paOp%OpO'pϪ-p%"2O(pAOpO@zbff@ffffff& x@Yo>QR Q-------.1;!fff&_@f 1;bfffwp f  IQ---------------. fff6VQKA Z, f& 1;bfffq(>-ARq&m3mr;pp`,ppppppppp!$""p pq>pM!\Qfffff$H1qOpPf@O` fJ`ϓfI`fI`fI`fq,I`w=NIpo@ lb1nQfV0ffV@ j2* V1!"۞ )1  OA - o.P`Oq%!]@f!"۞ )1  OA - o.P`Oq%!]@cV!"۞ )1  OA - o.P`O¯a%!]h@,@z,@,0f&!"۞ )1  OA - o.P`Oq%!] |#Ie !"۞ )1  OA - o.P`Oq%!]_ E %QQ!, , , , , ,L, , , , ' "" |a9@~@o`~Om]@qNqNOoqM,o,,,@J>o,0KbQH"!"(R_,01L2nbfffdff&@O@Qf!"(R_,01L2nbfffdff&` Qf!"(R_,01L2nbfffdff&@9'ߗQf!"(R_,01L2nbfffdff&q(0 RAQpppppp,0N`+0_0 l?11bfffQff` QfQ-"--`-P>-ao9=d6.1; fff6@Z>_@1Q`@-@@Op@-@@@s0@-pon1Q )`}@2ҏ a{AxA@p00:  _ -@f )`}@2ҏ a{AxA@p00:0 ),Af )`}@2ҏ a{AxA@p00:Sb l`, Q6 )`}@2ҏ a{AxA@p00:zm2 6 )`}@2ҏ a{AxA@p00:A$--A$ )`}@2ҏ a{AxA@p00: 9Q@ * )0a]0q|Q=n"Ne0@0- |fff HP#".@P-~8N Iq( rb@=LPu> Opo _'QZ   ) np'"_?-~fff&_"".@n0k֏  _ -@f   ) np'"_?-~fff&_"".@n0k֏wp f  0) np'"_?-~fff&_"".@n0k֏Sb l`, Q6  0) np'"_>-~fff&_"".@n0l֯R %R %   O O O O O !c;O@f (QO O O O O bO2@cF   O O O O O !c;Sb!{`,oe QZ >pppppA"`">!X ! N`0O-->._OOO@,?d- P 709oa(1'0IrMqz pO pO pO pO> 9>q:dzzm2bA K$@0~_-----q_Pl&#@@e6 K$@0~_-----q_Pl&@e& K$@0~_-----q_Pl&aQ`, so,0V K$@0~_-----q_Pl&zm2 6 K$@0~_-----q_Pl&A$--A$ `0!J!"""""`PT D)q3`PM,> 0}. [߄,![ߗ9p@O`O O O O @bO""""  (   d6![ߗ9p@O`O O O O @bO""""!e }e![ߗ9p@O`O O O O @bO""""&5`,<, o0V![ߗ9p@O`O O O O @bO""""DA_PP_ADJN,J` Mk_PIP-I P !""""@@Qfp!p\ap`>p@p-@p-¯p8p,QppeJN,J` Mk_PIP-I P !""""0ow| version 0.31 - 16-Dec-88 Iconsprites .!Sprites Set Help$Dir WimpSlot -min 32k -max 32k Run .!RunImage ihgjdfenjS΃UG @q*' P˼= F}r ̧'$4F؝HN𼈇Qvea*: K>ޤϺav:eL*7 B%D&C9Dھ= z"DD CN yk'$F4%S&3𽹒>r$έ ~ُyq{Bڼ> c@>?Eֻځ멟ܿN ĮlR:ʙ߁멟NMqBަ5_iξ_e!ίNw†q'M2ӫu5TQݎ'A}Ki.ݽJݓXhZ+pӭꅣ+OW,Xڑ~xD[fî'ROt'Ϊ.^2GBoェίrKykaꅣ+O('xD[YXڞIBrcۤ׭h[f¼D;x̎\DcXmv-p5ͺP,zs%nmk'7D;V\ ':͆m($$oʕA޽t5ͺPMv]Alezޑ'ί'TίNwp]a ί'7k@'UCΡQTJiN.˿_AڍΣi8YEpK_¨Z^"c X/kڡܮ5ͺP,zbmbjPLԿib/]ݓXh¼[WlP5vMʤl]zAmwxD["& r'J_v3-Lsw]f\5Ep/I􃭚9$J9lϘΪDΥ8߿c^WvlQx꺙=>*g%ٞߒͮխg# ʣ̋s̏Jݑ#:ߴVdƭR#퐋 ܔڬlޑV%UU;ʿXכƪp<ۼ=>ްov$eH݇x"!)c !|T>m&b-ʔxV2 '=2]CũބoVR0 HʝVv-۾R V/6î<DV24u$-V(-`0KdKIH*E-IM@oB?;B#ABA"fz),l1*)FU>]Ҟrܚۚ#;EsȬCߛ:ʈYztʼOd<ʥ7ɉɒ˻zPy3@B7_6/ nU7N/䰮>S T,wC"ܻw1^lZOQ8NPJul+D݇ެl1؝5GQV+ҚV?WT[Y⛆s!z('tN\ZtYz5_nU9a a2;Qf:V0ҋX.S Һ%&SiĬ[ɶu>Z`@ߝ"~sEEAk7LFu롫23cVa_DB5 ٛnEn6(<`cPX;  DΥd<;o{6#bf#$S@徹_iSG-ݼs,[7k`9Z@N||gq#{R鸘ˌɚ%Kejݵ=c}dlڻ 5nb H̜?cUgNlߺޙ]1ݼs`Y ފ hʈ{O»whYF&.qmߞ{pǚB "΂k阭ܺUo&>ߗfܯcM;0uF 0ʿm3|1ةxGt .>ĸy6 ĸG#ʳ9)p.3MS{ 9194)4&Ghx7`26ߗf!P+t+4AHw8f̮~ -͔R*IʰNx>lv7ρvݱWi.ɉ*Τq?iYZ)y6*Sx3%+J4yX)H* )$Rٵyi~kɰə%y̵kj~r_~G3|,>_:y^| `) 9GQ0\h2!̗PLӕ9 9^51ޛ[ʜʣec۹ Qk*͚;?gOghTЛ;, ~qjk|Z/fΗ2a ^W^]Uc h9wn)B? iU^Fgɮ[SW\_d(fa0 aaAcjmq!$$iHgîӛ4xT#]_l͍^esp"c!phfp HfZAT^g\ _(j:X qr_o*0]fC^ Í ]K]^_&\`@\]9bر1]\\|gcg ]~mn]]f f\a><&"ٯm ¾ 1>ZvVJ 4V\vH"('v L_᷺# o~\y Z rk ^ӄ[Tz &$i \r\\,]Vca]"^^R]|],ae^E{jf[] lb(bc_˰ȁi(db$j_9Rޮ"ggl᧱yl^g C B R`2d^]]ab ]k  Ee\RR _^`f_ɫ! X]q .J\V0fgi#e7a /CXct]6KdCd_c \_] ߲F]g d gdмX <9 g^E^-qϯ׳M(tc?CN \c0Ju_._jc:` lϮ%J _muFܨ)y;&gmAͰbXr]\{Jb 6%^\_{_ lVc׮;`_] ϮD`msP(%t_H Е\ht|} ^^aW]îN^d_O\_am`ec\Vf$lL d\`_]N]^^b^S]^] ^bS_5< r;BQh 9e M `\^_^ rfFf]^;NfC_mj Ba=Gѳb`\h_ީ"V Z;㋰h`wxB 1=˾lZ$ k$JV\ tBk<b Y Lh` J uusg(Hde"î k h_\ g@d\ j^_\]]%^)`\^V\H]߰-^K NQ\PpC'oJ( "/KРGc3<h[\R߮۴1i0Nx1H6xSCV3Es"Ɯ)c kECڶ[?Le>: #  A(  #.ʧڼ4]sgIAHC] b _eϺϰ?`vb?yCpIǫx:fvU^I]&Tirj 0̾Zm$<&5oq?j]шK]Zѷ!֣ hf ^ÿ|^`e#*_H q2u ؎(L:\uL( ν23`hYx~Pkh< Xg/Ym2  (,m+ i3)[:n `0^\R_ant\n4]  !DNRCb G : \ 0fZdnNocE`ݳ] (sp1\,u" նaz,Favc]id#J0s<Ѝll`8l ~`]\i]eG_i Ԝc߄N[<5 J fg]c2`\P$(o} #% G?,O? @ J` q P@ 0[( QQ  00K00Q\Q00Q00\Q00T  @POo@U H Z7`z0 SzASzzD S@ zzzzL&2 SzQ0(SzzT0(SP0( zzzz\0(] `I ]ʻrcc 0.23 !help,, @DDThis is the BACK icon.|MClick SELECT to move the window to the bottom of the pile of windows. This is the CLOSE icon.|MClick SELECT to close the window. This is the title bar.|MClick SELECT to move the window to the top.|MDrag SELECT to move the window around the desktop.|MDrag ADJUST to move the window without affecting the order of windows. This is the TOGGLE SIZE icon.|MClick SELECT to toggle the window size between full size and the last size displayed. Click SELECT to scroll the window up. This is the vertical scroll bar. Click SELECT to scroll the window down. This is the ADJUST SIZE icon.|MDrag SELECT to alter the size and shape of the window. Click SELECT to scroll the window left. This is the horizontal scroll bar. Click SELECT to scroll the window right. This window displays help messages from helpful applications. This is the Help icon.|MMove the pointer to receive help from other applications. Dinfo dow",,qinteractive hT  =0x v=`Help (v=adv=a0v`=a4Td=0 K titled> >Name: led> Purpose: > hAuthor: d> 8`Version: > About this program Interactive application help Acorn Computers Ltd, 1988 0.00 (xx-xxx-xx) ,P? \ =0x׉PInteractive help 1234567890123456789012345678901234567890123456789012345678901234567890123456789 Set Alias$@RunType_FF9 run Set Alias$@PrintType_FF9 run -print IconSprites .!Sprites | > !Paint.!Run : Paint Version 1.09 19-Dec-88 set Paint$Dir if "" = "" then Error 0 System resources cannot be found wimpslot -min 256K -max 256K wimpslot -min 224K -max 224K rmensure ColourTrans 0.00 rmload System:Modules.Colours rmensure FPEmulator 0.00 rmload System:Modules.FPEmulator rmensure sharedclibrary 0.00 rmload System:Modules.CLib Set Alias$@RunType_FF9 run Set Alias$@PrintType_FF9 run -print IconSprites .!Sprites run .!RunImage %*0 `3 `hSK @0SC3[=2KDG ,ʷ$Cxح, m ($LF![%6G,,fӼXIi'a; ' ,G0  ~xB,V:$~o,VW g]T} G 6 gTvSa6[Cz(֎'」jB®Bc뗤RڰBLT\nN w䙬痤RTBvBL7^b ~{[GBjCCPHxaP͛?q aH`h~BJxgwPwBp37rj|l?CΝpDl X "1- Ww'wVInuof )izCr otce! ) UPl c1;';wIw0Xeb|)#xcBέBݻB ۯB,XN R3B,XNBcci <vNBPXX NBXVcv!̻5Den3>5l: otnt wo a=oDiNh39oW JcmM3tE#3e$taer1|.etg$M3iI% td93o&8[[|KHCP!f %6B͝1{;x'-Ga=tDe ([[RKG\'8V8VB,:)K{vh*xB:5Vr *Kv5W04W3Wl꠪҈؉\0V@f1V{h4y5w5u5s4Vqh5Voh6m6kDiT nqt3t s'aFa5eC#sMtCtnL4 *)* # t:( (ft#e *"x(m9 it:1s9ciwW#9sMtCtnL4 *4[DJP> BȬ"1ڌFx>[Ӹd0f|\񨅌BT:ҧXQ꨸B ҸIT}lf00S|8/Tzx4/i( ll׾ ݽ ݼ X8}88ft t3j¨ذp/B ѿ'I"XJB ̿XIﬖ" YE큨Wwx|D?{'B򋨸 ^ ?Id*?HttwZQ  /X}8/wٞBI^ (͸LII~偀L~ w wI[%( KCSBP  [J1KGN<ҸUB\q" !0;C͸ZB q0,X:I*0!vBI"apu{oocxmaBcOgdS882B9a }*Pڋ1+(wl(V kVXBAVkwPzQ'˦BwkѸѱB,BcδrK{fz{̱"A 9ut#:M|.no1Ehcu3 T4a9w'e:DM|.nP0 porte4 t4at3iNrtpg~dd𚭱 "x" k[B," Bc{RԑVW[}yD|䁘tb[EXX=W]lL%P%ɝ"` BΈKo~1?";9W$ BMw.4Q7P'Q̨@b۬`9ac[ۙ]ڸ輱wQ[WES4d'P# SN?Se2eWP [I<KDGQT}yBB ٹ[H@KHC,aLa~ߌ"88̐#m707ӊ`hIѨ ׬ wȉω挦q^EV>WfsǶaXMh.`BT5i=ₐ $B`H1Vqғ$T$`BBb b Ѹڂ|"WzB@1#/0(##!1#ok:cs te1era n1QD#CܸAno3 a7-TϸgB#3=BoZLNBLıWՉ4O#[:洠_'3BZ| }B!!W"諟r謟ΙnWB,苭c0cCOt:f7[7"K2PNoBXnƋXn‹AξAκ9C%(#9C" nroAs@retuA95dS#t: otid91( 90.1-A-3[(KC }a ([CW_ [O,K CSJ{\B5B ˖_ 5 Ҹ %bO2[GDˠ#aD| KXÑ B,U<Fx-[Dp崈ּ'BdY0y; 'xE%t?3a:a3t4e8$[>OKDG~jN>d$5 Ӥ C$W I <[C2hR׼ݞ BKȮBȍ,_B Y; `cxH [(@GU;1 }'Q"BW1bEQR3 삩їQ"B? 傩ŗQ" ྴh$L]h I?!=ꥸ %BIO t# ]<[CHTʷ7Λ ` paŕD^P]g& \wJ!쪫 l al gC gC gCOL(%H/)[CpP zzmRTx\'Ug~CaDHB[QRIDxݬBJDXVGmU% sBJI$[/4|ս먹f[C@%KHˍ VaTF)NB : X7I>YP˵M kB,UxVW8P1";BX:s 1Ϋ:BX1P;":BuXs1%[I$KV[C)K|D[q0x}lD([C `wѤ; ,,w ` vz lD/ 4!$[єB}"C)[F< A|Vg@mkS80߼& Ƿz$p$R/x! / DX[>_KPGF뇏a\PqڳphBΏwe '%f\ Gjj:ޮ"}\ȟî XBJ)Pj Qa\EwBw檫J@@hw馪[w_WVvZwP vݮΪ#vl#wNʬmʬB$|y $3jӬ$|vݪيvZ#lw#NlmӬ3lѬ#Id?giehl(thwJp\*q 3ʜ```y"`]B J e7^x4\x]ada IX "HBBܶSү\SSBaٹ[&+kKZ@tb]սxb^{ }\E0+[1>QKa@X4[g׺`qt<~PAlfݽdZ裱nΡmBzɒhod< miXlw PےX خȶ擓"h<`vmoppv\ \P} ش qf"z̗B +a,'I2[M ]Uݬ`Z{Az\`X{`a輱wQP^Ŕ`hń`^lZXXwlnJNXpZ\XwpnJ \`\ t[ǟ #ϧ[F2Kƽ L׬`QA67Q퇢P,D\nh+DXnhpb-tpnlnodb-`. |bhbx`opd砢|b.{ FA[DLᴣ_0}XS.@$]@}J.~zdbxlo-3 Pۓ- 浒"ohbXY\oprw\oG{ql1 A#[tRSd[N8KC{eqhdfFtxι$mbdCF^]b5Ax|G(T%'[ dB`XwYD`;[ഡC'틴_LmBbrnSrnžRڑrnUؕ^^VV6'H/['({K C ]0^hVc Bͣ 82[񷱃@gKCMB ֲG{m]U !h \BYh!]XB] #ȧ xZ$W B,\rrR*^aG `B6'Lxa,]L_z 8˸#ar?*.ah"V ZBVZ ڎGBW ?NW` 'IB=X )*f;0+IǗS] ǸZɈM]e[M { e{N IiP [I1uKdC[6l]0܈Ӹ &W7} k790Ӏ Wk & 7,$F/%%6[KK0CkdVBSl u;"Ψxά*x{&BKno } 0߈K}0߈K}ʅ%=0(t$:tnep4 e^f\eZgifyePzgLY""Pξւ0g҂iZig&!0Qe eMH٘"쾅 oNcZc˜߂ۂBׂDӂ }CςEQD0Mބzr{P_Bh/jklt/RF~;X^If}ƎN"BB<]{ I:retp$u nit30sBVeH)BWeH)BXeH)BY eH) C0eUx0)~VX*x*04WYc * B{NcB &ܜc oAD_Gf{x"{NcB hœh٭ct 1 X 7"c@$kE"NBcZ@wc,]@𲄕^op\ ptx Q"hNWaz N.OHerF4 rƓ([tX>ބC]SE,!ѪudmlB!V h[D@KO,,wCּEvDbCD(:0F$G‘1BχXW$VBPxB "Wʀ!tEtA}WB,⺀!9I%(?d*7 IDBχX!3BP͕*X/dn2n.aΕ 1˕1˕σ"ZoBo|&WQQP N͛΢lwhw:޾yT2Q08 sBw:޲y7E0> BT=;#߾SB"]YjyÀr (B,3 _ 2^h#B?kwP͗Q\B'Z WbcS͠\S&#B!jusIeB`XGtIBeN}d00`ơݸ輱w`QP;WغS` ' ? `!I`BXB#;XVX.$BpȈ輱w`QPWD` W=`4'{f&]y`0B, {U,]w^E\``yB`Pݵ$Κ͚W``z8 T{TŇ^B`PDŽHI\P>7x"4")B`XIB`XI<`IfCD]E^PPl} _iB]R ۷U_BޱUW,W KyVxcb"0ʷ0\ B} 82b5 ܹI{'ɠ8bB^Ϳ^ǠBa[&#+KC X ".;>CCH i>%3is3 G HDevas 1:tnin{uoy erus An?uCi7uQ o!)[dCD]E`WBSFd\|x ?B\BSB^ɼB%?[#3KEHN{⯫ڽZ :1\F d(xwlv[F?KiG8πv l|Bwȋ'؃ %4|$W/BVMa^BM[4}B??gUL  \kL_\L*Wk$&W9hW95?B900zB:K;zx;:{z:;9vzI$)?[ JdP FwBwȋ#tU (EkuX1Xq'zc\kXO,\I+BXX\BL %.QQ;7z=Q .; 0zxAR;(zX J)z;mk8ogzBKr\JzQ `BBoǜ}tr [L>$$";0y:I9$">[hWfy9 $qxVoWfTyzVwWfQyyY Pն!ͼy23"mW1zh|ypVoYQk !ͼy23" 4!z`WzhhylV!.{gWzh`y9pWNm\ytV. zVpWf.Uy!z VWfOMyؠVWfQIyY xƶ! "y3{y yV.!)ovaH>3i,~+4iD,''1#a D9,ypoC,etm`R3,:$fa1X99U5Z3CU@55Z1X39URDO5Ia)i/3,JnCnJl3 1 C k&4sruolEpsiD!o|:aFvrCZ>,t, oI3 > ,d1>+I>iH3  e4>3 EG3)e4 uVD4w h9st3s; :l SC4 =: #rev F,yllt~p Cnr4Rl!3jdA>tezisu8resn,l&t I9r treAD> |A&e D9r ets aM |16 = R9A[9dirG-\$#[Tڄϴ,G[C#KS򧭙G[C:QڴEOJ ˨҇Ȑ[S\ebN,,b_j ˪ Ya& a[H7KDGټ7L`LPjݢQ!֢#0 NߦS ݬGS"aG]]正 Za ߼Q ]T|^[^ W'z[瑱?AKC{Ϡw^|r養*# qr 1k/QB͡][B٫]B٫Z.di+M.15ZbXb& [GEBKUGPzlW:B,X:N $v#"O}8"t 9vK DvU<:V@Fkڏd="w|I 0a^䐰䑰KK%R xɪWa[&BKD[HцN˨˫aܯ`ƆؑfI{(˥@E,I{(a"t jC˥̦kh琁s&ݼA$/zl$nfqע\AV"mFV{lF zy@ w*΄1 hB΄3B8_iάh%I/lDžW|]B,X4vKZ 8BlP,&I/l gOx qd NJPR܄ 6'T4Մb|bhh)|I([CشSa{˪SK%[SSS F>[8t\x\ K{ hklz msuK{ ُ͇ghT;׿0ˬ (tQe{ fk@hkmj FPU#ӀQᅰ ðZ6bP%I/&&"%%"1[C|شQ }PSSPPҸ輱wQ?'x,4f(0fZ(j,斗"!ݘ,Xz4Xz(j,斘"![F?=KCkl%Y #U XabQ WKG%儀 a $ a[IAKRCIˈ W- TB0ks @kM\\P(;%XjI`B l\iJa-[I@KOGdfQ WQ B6kB7 ;0(HId`B ΄l"K`QVhcB6BM)P ;#0.c,(H[I,KCPw _a!M a Μ[E#mK'qC[5aKHNESz݉\S{݉ T|]mPQ|P 4R}UVW݌'BB[G-1KHC PcPظ輱wQ1'[ {%m[[E>Q״IOFH^ ) bz}*\$b{}]̮݉^ݖ}̀^؀]͎j_24Y"Pۢ QRPخSTFU8Vܢ'WӋIߣaκ([Cִf f@*[Eִ<j{설@]T@[,@KHC p˷W`T (Cx| eB7 (kx! I%B TB1 , !ψ h&I/,[C`ִfàmBΕT7u 7^a aEo([A[@K`Ckl/pSS.7Ѡ D5[&ĠĵVBpu ӆЈgklzVaչB_b ڨvb5 a&G'[TtB͕S7Hoa_ kB, aD[.<EHմӼհPmhDVuBX·ĹY$7BPYJCcS ]M"q"h,cab1<'ƒp -H% dnts'[AKC[ PݹNPEOe TAs ̨oЈP}RxQո輱w)oءܜ)}˽Ԫdۊil+wA,~\A5kJB"w\wPQͨqEĕ~P_#`ikӘT -kka0}mN0ΪLVZp0}mT$<eB%i|#B8Z~#4(%W=k |#lPQRSw܌'Vwk&ͻ >اBVz-n،')n 2I[&Kk<m}Zvn-w} .y}0dz۲Uߴqsr݁]'tz[݌ C‰@[CԴHpP]S͂\SΧ so0r 7V BYJO6S]B6꾮%ݹVB66_}L}.rLwJ7 {~ٽ BlB6 2 Iw 7~ޣV޴gyhlV;HͺBV ~wȂI V^پڬV Q~ " 7B}x[I7!KDGwQSN 2-= #B~OP]BLPa@[lqlQla_KZ|Ck B ۈퟑ&Ԉh&ԈeoR RB WR󀬌TQ^ST}n~o}n~o}n~otP 돖u(!"eƭX ՜XAǼ`B,Lիefw]ۂ \Q۰(~Ǩjbۯ(~Ǩdaxt ^ E} PbzT{B00#Ȼӭ0E0w#?[mZ ?z}輱w[U[d0c0fTD-1f0T" î"U TSRQۦPΘV^UΗV^^T`ڸ_w_)wQP̻ê *~򪮈bwA@^@^ "q~ȘBJΕĿPЫ^ЕPxBA@@A@ex~ B"̢BGL [d"p knd͘îS®#Rͼ~휘Jahnb[BΜaîW®#Vͪ)oģ|  }]bb5$LP֧`ֈIgg[DZ6KC`׃y'ؕ׎[)(sKoCا|StOelap1P?m~xBcȀ'r WBG˝< '-i jt#Ieʓ Km `oPfy\܋ T ~B ]yy}kPx\n}XN<\nY)BP͔s ~DE'k|@@{P@Qfkfb\Y@PhP[I1OKCSJ6cZc"޳BB, L?[C,д@@v\eBGXF_$zbN?X &I4HvTzuTB 'h5x \5g}hd4?W|tΈj͈l|)2x5B* ( I )<0 $ 4?B  LI.@}2އ13d g<{gU4Ek\,5(5wc|mt&rޙx' f ! Ix<ߠ0[dӼ87{!DtEޯ;D!0t*F([C~ϴ',֩tpRt$D[+eK~xjPqRTژtUuaVS֚^ U9\y$/ :wM&'f~pt[E#7K%xDy -0-v(-,-w7[tM\]Ut[C>Kbr埂埒f»}*C̿'k \HB!` 8;[JP@}l LVie#|]Hk|]`ƦسB W n`D n\%P|YHkWbODd|xYqk[6M:K{D x͇|Af!|;qhVu*&Ai;fq|hk pяL[(+KTaִC|f^]a E0[td ȷ!WBNb`Utg!k fܾ̮fۼf #Mhf)I҈ȲRha:). @[GFʹs|LX#wCT,UV,0WY]dZ,[,0L|DwoY1MDB9|ș]ӕE$/rP_eMOY&'0|{%~qPͼ{"qaBM,J q{B0Pi&x0ԕ|sWgyv7{Dq:n,i'|voH7{Dp:npi'|va|s\yȦv7{Dp:nN:'B\nxwҞшn|xD(&p{E 0(hB\~ ^\F\n@U{ GDOxIH*E)C9#w lot'Cs5e7rruc1i/dO4.9 *6[GN̴,,wӼBfŸy ÷o;*O'* (fBbUxepo{6HX۝VڕXG9Y۞WږYSIHGF(/\},/7pzHΈGxf|n*a+[:"˴x0NɴEH~ͷS͈w]{[< p)]eArq.־Z;8  $rBrA<%2vrr"^CgDE,` ^ ^ ż ^S (^([I@UKUQYCN]CtL$7 `~c絏P]bQھꚿXPޤn\ RwS¾T þQ$*jkhQEuP2KاmB͕PBE;k:A#A4kq $B%ȇePGA4羗 #rȺVW Ph[I2KHClU ƽ7<56 !bO^ j_" >j?[CȴbΛXPlwfȽklpwnڲʣmnmwklwBηb2rz ׮P۔yٮ"δXrx p致Ph辴r"d2D,X[ ׮P۔XSٮ"q裴X HZP}@q"9 ׮P۔1ٮ"qwVlB,5+nb,[I-Kݠms+aC)^ CmDB{A޺I ڴ c>ھ' [EAKDXSˣݷ͊qz!ف Pە сr"bɁ Pە"^q"dDb PەbJq"1! P"/"!=q "[!+(KCSB w [GSK$|v \Zx\Lӧ| %Ck{@|{PWe~GY |{HWe~GY7{{@W c~GYyiaBcC@_l-CU Ic $r?ICStxe1ny}#rb sty$3u>([DĨycf[D37KOGEUf匸EEe !af<ϥ 2ёpBLxlDz,`@[Q@HGVw΀iCcDE,1F'H,M,N,-1h`j1 Nu&  [^ؠ]4sB,4h@!_w<<(v!g^4"<4r<-{deo`jOѠA\B,[wRQĶRͮwʖRQڙ/ΜǮPۻJw0^JJBw]w´sP ͮDSB<&aiՈrSB _[ L[ w}TP=B"Pҧjϖ Ϫ ej^IwE\_k  0exGBlkт kE_hL|%R/ZdkYʊJ )D Z)Be0g#Nu/bHj2eE)E:[/~T _=k  "zeȥ"ZHA_i$B,0@PkY_i TB6Nr<%lB͗giOrhPa^iZ "Nt꾮*Y%f0t lW{^*Gտ Z*V0 Z*^SwaǪ^ͪ²S*RSՋVUڝT^iRhw wہ_^ΗhRޕ#W\t#ZtS]VڶUTڣi*x^ RO!P[IH*E)e9w ru)'Cs>cDuoloh r4 no taicossa>e,[e(KCwD8A[GD иe v kVr3tXJ kV#rsب Z^LUF gBj\άWI([CкB͚S[h]Px{ \i]]lh[D<KHC8Z{SAT}|g S|T}D,qvd8,bsاL4絖B,"}Wiӧ~² Sͷ)PѰH{°L \_ϼ{`8Wn(.sh HZΠ8#Qm4; WB*Yh']b^{ɋ]haۦ_ڞaڗbۧ`ڟb"XO48? T)|P4L4wg8?HX]"C  .sxB, 'r## $)[>G PR Ӽh_UcBUCa1lc o1e sCr'e=:U's1ol>D>a,l?:`%3ba'Nԯa,[CBB,P{BTuqh[E2/KDGgqVB,e<)B`G)UZqhB> VO@-1@-[22KDG޻^}V#q-%^% gq ![rFz lc f0 [a-ɷKDG x[E-KHCB xw ! Ŀ!!O@@Nn e } 0Qm,z0_JaA[CxIOP?[:) ~" Q{D$Oڤ[\ hfywJ .!hl hFk`j\ xQѸbmE}Gdz1Np" !м{ aI,}lad!dٿyX~dٿyP>dٿy!dn߃܃~d&>dnكփ\,{a{OS^[,d|dnع}m[a(ͶK zCkO q \grh>\Bv!\bi,\ciVcQ~\zLUw xPMyܵ D)[DޯH[D@KCENdRٰBXQ xG+Ѹ uSN c,=)DDZq蓮 ¾GѸi \wm\jxk ]wmlr ENdgɶZPQ u N[I2G-D'LѸ  C^oVB,]H)f F@-[32KSCgkBP"N!"[/>-C뵴H '!Ѹ E/[IصSF˽TV{]byMma\xE[E0IFUS{Wym,y fF.[ETS{VGƬwvl l3h(x[E3C{I {#'' nSn wJ !r[˖e Fa['KAGKHC4(u VAi&H)y{|,]/o"3:ynamt2d<%J.젭^oZO j IɄf咴R iQ^hYQ倰gLtkB ht[o w .{tEi1$Q|!{iSȃ"\fhaka>tfaka>-[GдDB nȸTimEK-`^\B^=)[DB Si[D#KBG [C;KCkK2NfU/N1fN60B^[\]Z[V[qW*0Uno&0mTlS jhf o\0`B`C^EHPm BURUB NUB Jhico _]Bqho:[[ KddqxvdflpolJUADm bxoo$6dy A@ QThGVJRHoq{ߘJIH$[e&տ]R^][C*K:F܂݃F-Lv1 fW-xx'YQa0{D[I6KC˗ZQHNl;B3V Xo7B,Xo?4_  z^D> fFB >[,K̦CkJb5H&]i B,b:0xE /' /Ddnut 0-hU@B@Q0|>)F#UBwU0(V!gm\UW;g'U|>)nWwaa[aH)[CV Oɤ][a#GK_hvje_c_^ _Qo _^i_^iRIwMzCxCC[a=%KOQI "TݿiWpv gIktx.Ҹ!w.kxtxN@!3%k1Ud`h 꿮vSp+&kîRtTUH` W0;U_[H9ٱKFIpԕrJa\ȱTQY\k iV2j G$[7kCj8[NH[ռ !PB҈ZBEah 70;T_ Z,Ҹ;7_QT3j;!7 i%G7[GvD˒ܼ ҲE _7TKn+p E k={Ҹ2 S"kSmq-o^Z`W#U30oo]u9o1@C000#JO^,S,G $^0UT$0;S^N_"Z[I@KCjpHB0I@%qiά4g| ]0h`@%}BDb@b]y;BX:SDEcH]Jc`# 0ď=^׋0Sjo, !lB,\;)0S^PazGvHLw\yi~G*^jbxac&zX_Kr0BQROP{m0j0k0yo m A0"Q꿮]B2 "B$ }y U_S^ 0#|yo,0Q ƻ"2B6y2 "B URg^Y08SoV ƻ"2B"Q ƻ"2B|ȿ USJ^<0a\Fz\m!tj ݬ]-A\FZ\m*T"( "Qi rBĹrR"S\dy "ѸAdMoZdejB"Kz^LI1[֤ćJψBN: F A 6itCbDg-#xo?};mix)@\)kB\Ƚ_  F 0(w@Dw8<w7 P2{ A 0B7b12}  $F2[CRHkpլBxܟQΈZͱbE\>} @^ Z0Y\#k B́Q8uB]TRho'MR]Öcڛdd^fgxR7RA]vfg۠[ڟѣ\]Z^lX_pX`\b\OR/4}N]ȎFϨO[O1ӮK\C{UB 7p"'i\@YoF[ /(K@X}BDB9 [BK@UClQU\$5Qx $H$4BȞk% f ǾϸT$ !$fQ\@Mo$lmPO B, [I.KID0PΕ!-Ҹ`ҕC [E"K+Q5\iGC[a"K'LQV B,C/G2[Dܭddwd`o\00 uTB wqbwTF--"e  xbFT0^,D `~aTalt֘JaH"[7:YzC0[Ԏ zv o X{kX|kXk pGaF+[wrĐԼqRQW{WtW|Wuյ[Eoa =#[b\PO=Чvܧaka==vak9=`a =vak9 R{;(,[8.Ӽdάk=44riD<<[.@)KD' De.YFxWG@lf r-i%-2-![a(kKCQPݥo[[D6SK@C{@wjW^ Cj_hZ  w(/G/,/bO#[84dݜBBRGCx7[G"D\a B -Go ѿg?Bx&[G7KHC fVuجuǿM?[C櫴sQlҸP3VrZ9 "+d.N#[I(ëKA@>2D/6[OAKEHTFA`7'Ja#MZJaaO7) !Ҷ7Q뮶TGB7Xﳿ$˺ #1dNm+7^꫷꫖d7#0﮿˺77Tѝ7<+}d0]\ #GqdN)x wI[a+AK' ֩& VB,u:)CEgA:ye*Dtr4 t4ow potksrL[E/KZBo$sQY#[Ng`DJSbsIMoҝ݌s݇w,Hw.o,Y['BGˇ7jz'k"VE [."Kx7Pjz'kCVE8$[ЪtR[C#êKRqSC"a˧la )[D7ҸBD#[7Ҁ[C)KD7݂D)[Dv7 zkߔ[D)gKD7ҁD4[OXJE7˕SBO t[F.AKEH7ːE4[O0FI7˕BOQ[F>OFI7ݜݚݷ[I>HE됒 78҅TޛBPQ[I:O⩴FI7zkߍݙ6׮[H>OʩFI7zݜBfQ)SIBD⑳#Sb`Dakm[a*KE/A(zkBD$[/A߿C*[EtA/ҊQBDO$[b/AzkտC*[ETA/zD*[EDA/zDa*[E4A/xҋ/DQ[0#KFI/A"zkߓ4נ[F:IF~A/N4z6}4H[5KFI~A/65zUw4} [G$ݨKA/"ҍ[C/ϨKFIA/ݘ[E0IFA/2z4F&[d3kQ݃tC$[/AzkѸC$[/AzkC*[E|A/zD*[ElA/ zD*[E\A/-zDy*[ELA/ьDi$[[D0IFA/J)z"B~>[F0IFA/*zU6V7[F0I֧FA/+zݐtB,FP[0KFI/A,zk6UF[퉱#KUJSC3[GPD BPᬩz0k13[GPD BPᬩz0k0z7x7([CvpXB [k7#iKwY.8.868˻Q/C|/0x/0zk[0-IKDGBX;BB? :7"[8Pwܛ'˲:X[C")K'P+XC"[Pwܚ'˲X[C9 KOQFIX=BB<);BB 6*#[TRaeN[C(KzCkBW 6$[Z֦/A69Y5zR&$/C{/uw[s-KDGWz;BB 6[:KOQFIznBWȚ=)P/Cv#[`ustPrݤ'_V[C"OKw7P'˕PC@[D#?K99P/[C$3K::CP%[( P[C&K@C["Kqݞݔq"V'Cw['Kwq݌9:wqU'Dw%[\褴Z9/99&/C,P['ӤKC[ µ:: 6:DP[+KDGUw@[ E[5K w$qݞݔq@Ghcɠbaɞ[G>tw$ w,(w40wq} :s}ݔq@zGnljhcɠb,aɞ[I%UKZ\86W}C$[BrP~'CFUB4?4<494#[*'P/U|[C.KDPہz'TU#zsB,P{E,[C]Tɇ[ͬ[ZVͱ[X2@S2Ψ0/K/(ū|ͮݯ,4/E/E'[hأdBU"wHnmer%J3!o.rbp3[(KC[ͬ[Z]GE<Fж7a0 ݿ DDoPm[3(KC[ͬ[ZT͹dְm ݩͲݳִֵַ ֶ($(mD[D:iKA^_w}eml,3`\?$|niR$ t~P)p!:rb Wz$QJDr :iH H A[Q΢IOTqӼ w wԼxmD xDI rӌaa[艱(KCPxz֘'˫S)KDq}MU~f-aRrݘ'˕S)KD'QSD)[DtQz'kwS#eK['QϙgS[C$WKPr SͲzCXS#[H'QCLS#[GʝD[޼VP Cz CzmD$H0im3 )&%(i_mbkemm XάW { RάM {ŅpCLń`CD3þl "%oTI[7B(WKLC[PX] 7pΝ ݽ ݼ D[T0(9KCa){€τO'[&pAA]A[k g} [FbDBvvK,\Biv)X0a+`0\0"'[dܪp¦0ϼζ [O2KDGhӆ7^X8^JI^a.%]i+= [O7ϜKDGؕk]'_x]"؜ǮC(,眩U"&ݼ![G/KRGFPU^o2; #L 0 #8X# mZ5+h8{ZZ#m5hH{A[CnP6OH,BuC@NaFI,\J,K1Xo7fεdʈ Er) lSu͈L  a͸DEGh\ͫB  W͸=R}B΄KbӴد4^߱JJ`쪡Jo~QQ@^w˕^@y ~ϴAήήoJ쒠Tߩ_y^쪡u練 #ǮȷMǮoJ쒠Tߡ_y^쪡u練 ɿꟿoJ 쒠͘Tj^.^_y^쪡u練 ܨdǺ [̈BxB;IB[IgPW,H9X^P, 'gR̈ {av"\ ~aͿbΞfk (,~hΟg] (fiR̈UxMx4 FI1Ix[BF9x%I4x 8xb8I֬[GиaB H&ج8w[IAGO[0ƜYRXcB ^ox J2FH8بB,]N ˈLTwS$8èx0]]c]տ0kˈtxobd1̿]pg&q0ˈiFw!iF7z kȵFff eVAB rиPPodzi0d.w޼i+tB_g]T[B^6]BŬe]LSL9V.zg%!i]7m˶nPBW^\X^YY^]B[!& \˸' ]NZBr,]r&VIx p0I/[X#)K2P'˦zCR=[[KCLLwLLw7 ~T`MBdH:I,0y/!t0"N0\i11Pή G A7ʸ D3 xb|˞cڣdڢT)zefwgwNǁ{GKǸhGGǸD|i  x HYo8zkYPwQxSYTZUVVWWXZY] 7ԀRJ'Btz.fhz\:fh۹El>Yk ₰, dk u,| 6ˈ'x-H}SD,\HdKnuBwq)zk Bu8T~0͛1w2͜3& fg~_]]B" gˆ lxHB)wܰg)~_]0' }|TS"B  AAfD ц gGˈ Hx JB\)qڰ g)~_]kBzu TB"zmˇ xwHϙH$E?!w,+Wx-B&H?dr ,r v3iece1dl%3w @!Hapm[ٿpUHwpHgHya m%}@'ߵpIH@g"|[@KDNuּ;x_W" "<xzVBBsq$ ʇ@x!B@!D@Ǚ;I[>cKC됒אƱVB(X;0}w gp>V>0P>"x>90Ԇ"x(`!)7>>T O7.\a;B`0B:c b,s oTg 3t noedo$3iv y2reweL$ t{_]]BB,,O >BY>ă#(rAx3$I <0ba-[KDG7p֩tQJ'BtZ.e 0EP+[GD{B"\ |;!n,[E0DGP{BЭ"\ 2 n,|F;+0AaQaq ӌQAq a&0Paaa/[_3KDGP ĻȖ  VtVu֜2}PWB(Ȝ[uP WXx'F_V:x_RXz@0XPaiD[oD`r`qDUTsdCb8U sj3Z#8"3#3$1$1%)%/(,PH"#""""### 44 t:t? 2 "     !xl_XG)8G)82@Q `R` o@@wp38&/%&"&|&"<&&"|& ,*"*+"*+"**"D+*"0++"++"+0)++"l+X+"A[1923 : :"Uu  * "!"`8"L)lx\"d)t")")")?=,!E$8"8D!"G!"L"X\ )S h"X| )^!](!4""!) "hpi,""   3 T354%$"W(\76'&1,_*^3?>/. FXFFF 999z"  0  ( c]Ge`] h~p\]y]pu`6^2\6^\a|\d^]2hl<3kk 0}r\{|*J\]^h   q  kkl\aedl*J\]^h    $q2  yhe_b\] ^jO\*AV S ka ) RSFN0dgd`a!2)T*&.#m`бL^% TUL cGb0 ؞alj+0M /rSYbװh hΓzJ_h 0 kw}~h  k_ k   \ an\\`b]p k kl klllߌl N  \w\\}j\a \w\\^xkkllkl \x]\i!|_m~z~l\{i ^M   @`  FY*J]\`]@]b  \J_?_Jc  k  `4gk kkkk{k lϸ Ea]`h 6beFll dF^\&fn\^\a]]l0 \a]^\&\d_ "kk 2{lk{ ^d6>\dkd"{k\ka\kld{aIį\kc"k|a|ap"".g}`ZkT"Fi]:FJg-_? +k  l  6F\\߮* fg     D8c`-\"^(\   \^\g_  "*i] )aa_I\beh_kkk| (\b\j]z|lT"k H`Zk&{kk{\k`&|\xk`FV]di{\\p\T\lk\pkTkkkkkkk{Oa@f6"afkkklklk|k\tktk\T{_`gkkl{{F6kP\kT\`fkl{|o&*JkPF>\dj^ 6V]p_\fFZLl:V^^f\^iD^D\`6]li\kT`\tk|k lkk|O\jk\ko|k&kо k\k== \߯!Ϯ|*J]^   # ; \q \ ] *J\]^h      $\2\a\\4v#_z^\S$J1  %8 &              Al @ ` \. 1  6 \ = C   Vcec-bc9r]G]]]_cF]_ \J^[\\\b::vm*]*\]_\Z_`\*\p\p^_^cN08y ^$qڌ   }   a^^f]Jpa*Zl]~ x]]^ZeĂ***\p3f a]]^b*::_*_]]] ]_^0,`u<@l / u  cG^^9 ivg_6\]`]^^] ^]^L ^]]]i#{1c] \˻Jk] fj8_m/e`QlLU2ZK[JlhsIy4_ kS]\^]Da]\^$' ] ]\Ю~i|njL__Vd\E_VdkK]]H\_^\\S^](  \?#\] `NDh SD w ^&]b# 0_^'*\O\^O' _e*]c1ta^`\ C~g o]_^=._K \]]H`X`]IkJ_]I _F_b \`V  _V^^c^uL_`]a_}Oc_UioXjOjѹÑI)lЮʪVJ*@K%q\_c^*0]^k*"a]cp^ t`ԯ 5a_]J\f+_\\\](?        H*ZP@gZk*cŒ?Z\`]x  Q\\]\Y`E\^^S\o0y:*\*:\]^P\]\\p^\^m*M\\pf0pO **Z **: W*\\(\,^ \`[**\]P^9\ \]]]]^]]^_\}BJ\f\^]Pl      )/`{ ZJ`P]0]_`U] ]J*\\^^ \\p\Z\\^ ^^`]d*Z\^]^ \\s     .Z* ] \$\ \\J\\d \*\` \x*\Z\]  *:]ZksM \]]]]]\\]^_q`]_a] ] y *+{ \]epL*Z\jb]] `        t`**\p\\*\:\ H**\p : *\p:)\pI)\p ***])\   *:]`] **:*:\:  \:\p:*%\  \p   \ *:Z   .&\p  H*\p*:J\& **::^ *m`_g\Z*^\\`\:\J]\J^;_\]\\]\*\*Z]^Z]0^];\\\]b]^0\\_]]]\^\o_\`\^*_` \:*]\] ^ dc|J@ ymI \3       h ,JJ_e]^:_^`\*Jj::\aP]d:]{\b^=?,O? @ J` q P@ 0[( QQ  00K00Q\Q00Q00\Q00T  @POo@U H Z7`z0 SzASzzD S@ zzzzL&2 SzQ0(SzzT0(SP0( zzzz\0(] `I ]ʻ|Hrcc 1.01 !paint, pwwpwwpwww pw'wwwrw w'wwpww@DD@Dp  p  p w{pww~wwwwwsm!paint , @ww@wwuwq s7wG P  P16grabptr,,UUijPjTUPU@UUUPPjUPZPjU@UUUbrush <l~q }????opton ,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwoptoff ,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr1,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr2,, wwwwwwwwwwwwwwwwwwwwwwpww3ww013ww333wwDDDDDDwwwwwwwwwwwwwwwwwwwwwwwwwwgr3,, wwwwwwwwwwwwwwwwwwpwwppwwwswwwp7swww313swwp7333s www31333wwww333swww33wwwws www wwwwwwwwwwwwwwwwwwgr4,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr5,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr7,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr10,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr11,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr12,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr13,, wwwwwwwwwwwwwwwwwwwwwwpwwwww'rwwwpwwwwwwwwwwwwp}w"rwwwwpw" "rwwwp}'"""wwwwpw" "rwwwp}w"rwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr14,, wwwwwwwwwwwwwwwwwwwwwwPUUwwUPPUUUwwPUUUPUUUwwUUwwPUUUPUUUwwUPPUUUwwPUUwwwwwwwwwwwwwwwwwwwwwwgr15,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgrx,, wwwwwwwwwwwwwwwwwwpwwwpwwwwwwwwwwwwwwwwwwwwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww|wwpwwwwwwwwwwwwwwwwwgr17,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr18,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr19,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr20,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr6,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr8,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgr9,, wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwgrb,, wwwwwwwwwwwwwwwwwwpwwwwpwwwwpwrwwww'wwwwrwwwpwwww033ww031wwpwwwwpwwwwwwwwwwwwwwwwwwggr1,, wwwwwwwwwwwwwwww"""""""""""""ww""""""w""""""ww""""""w""""""ww"""""."""""ww""""""""""ww"""".""""ww"""".""""ww"""".""""ww"""".""""ww"""".""""ww"""".""""ww"""".""""ww"""".""""wwwwwwwwwwwwwwwwggr2,, wwwwwwwwwwwwwwww"""""""""""ww""""""""""ww"""""""""ww"""r'""""ww"""3""""ww""213#""""ww""333"""""ww"DDDDDD"""""ww"(""""""ww"(""""""ww"(""""""ww"(""""""ww"(""""""wwwwwwwwwwwwwwwwggr3,, wwwwwwwwwwwwwwww"""""""""""""ww"""""r'""""""ww"""r'r'""""""ww"""wsw'""""""ww""r7s'""""""ww""w313s""""ww"r7333s+"""ww"w31333w"""ww""w333s'"""ww"""w33w""""ww""""ws'"+""ww"""""w"+"ww"""""""""""""wwwwwwwwwwwwwwwwggr4,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww"""""""""(""ww""""""""("""ww"""""""(""""ww""""""("""""ww"""""(""""""ww""""("""""""ww"""(""""""""ww""("""""""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr5,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww""""(""""ww"""""""""ww""("""""""ww"("""""""("ww"("""""""("ww""("""""""ww"""""""""ww""""(""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr6,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww""""(""""ww""""""ww""""ww"("ww"("ww""""ww""""""ww""""(""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr7,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww""""(""""ww"""""""""ww""("""""(""ww"""""""""""ww"""""""""""ww"""""""""""ww""("""""(""ww"""""""""ww""""(""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr8,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww""""(""""ww""""""ww""(""ww""""ww""""ww""""ww""(""ww""""""ww""""(""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr9,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww""""""""""""ww""""""""""ww"""""""""ww"""""""ww""""(""ww"""(""""ww"""(""""""ww""(""""""""ww"""""""""""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr10,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww"""""""""ww"""""("""""ww"""""""(""""ww""""""""""""ww""""""""("""ww""""""""""""ww"""""""""(""ww"""""""""(""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr11,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww""("""""""ww"""("""""ww""""(""""ww"""""("""ww"""""""""ww"""""""(""ww""""""""(""ww"""""""""(""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr12,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww""("""""""ww""("""""ww""(""""ww""("""ww""("""ww""(""ww""(""ww""(""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr13,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww"""""rww"""""ww"""""w'r'"w""ww"rwwwwwwwwww"ww"r}w"rww"ww"rw" "rw"ww"r}'"""ww"ww"rw" "rw"ww"r}w"rww"ww"rwwwwwwwwww"ww"""""""""""""wwwwwwwwwwwwwwwwggr14,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww"RUU"""""""""ww"U"R%"""RUUU"ww"RUUURUUU%"""ww""""UU%""""""ww"RUUURUUU%"""ww"U"R%"""RUUU"ww"RUU"""""""""ww"""""""""""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr15,, wwwwwwwwwwwwwwww"""""""""""""ww""""ww""("("""ww""""(""""ww"""""("""""ww"""""("""""ww"""""("""""ww"""""("""""ww"""""("""""ww"""""("""""ww"""""("""""ww""""(""""ww"""""""""""""wwwwwwwwwwwwwwwwggrx,, wwwwwwwwwwwwwwww"""""""""""""ww"""""rw'"""""ww"""rwwww'"""ww"""wwww"""ww"""wwww"""ww"""wwwww'"ww"rwwwwww"ww"wwwwww"ww"wwwwww"ww"www"ww"www"ww"w|'"ww"rw""wwwwwwwwwwwwwwwwggr17,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww"("ww"("ww"("ww"("ww"("ww"("ww"("ww"""""""""""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr18,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww"("ww"("""""""("ww"("""""""("ww"("""""""("ww"("""""""("ww"("""""""("ww"("ww"""""""""""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr19,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww"""""ww"""("ww"""""ww""(""ww"""""ww"("""ww"""""ww"""""""""""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwggr20,, wwwwwwwwwwwwwwww"""""""""""""ww"""""""""""""ww"""""""""""""ww"""""ww"""("""""("ww"""""""""""ww""("""""(""ww"""""""""""ww"("""""("""ww"""""ww"""""""""""""ww"""""""""""""ww"""""""""""""wwwwwwwwwwwwwwwwgbrush,, wwwwwwwwwwwwwwww"""""""""""""ww""""""rww'"""ww"""""rww'""""ww""""rwrw"""""ww""""w'w'"""""ww""""wrw'"""""ww""""rww""""""ww""""BDD""""""ww""""BDA""""""ww""""r""""""ww""""""""""ww""""r""""""ww""""""""""wwwwwwwwwwwwwwww!paint, pwwpwwpwww pw'wwwrw w'wwpww@DD@Dp  p  p w{pww~wwwww4radioon , 33333w333333333ww3333333ww33333ww333ww3ww3ww333ww33333ww3333333ww333333333w333334radiooff , 33333w333333333ww3333333ww33333ww333ww33ww3ww333ww33333ww3333333ww333333333w33333D|query <> "c:progInfo LINVmagnifier d XSprite ] wfileInfo rPrinting c" XSpriteFile S spritesize vv xfer_send ^create [ "number WI ~dboxtcol [ "8^spriteInfo rselectECF 'toolwind MEd  =0Paint t > e&=YES itled> 0*&=NO titled> ? l40 l`8xR  =0x 4Td=0 K titled> v=av=adv=a(0v`=a>Name: led> Purpose: > hAuthor: d> 8`Version: > About this program 8HDTt =8H(BF(KO:D=  ntitled> :=  ntitled> D=  ntitled> =  ntitled> x(T Magnifier 999 a0-9 999 a0-9 : Pdp =` > \><l  =0 ` =a2?a(`?a((X=a(``Modified: ja0XaBa`d`Bytes free: `X`Modified: ^`Name: led> About This File Number of sprites: Size (bytes): Size (bytes): DhD =0xP=Print led> = L|1 L2|1! z :<`X scale: > D50H`: ntitled> ,nD5:`Y scale: >  50`: ntitled> ,n 56D|`Portrait > 4Td=0OK titled> Lx`Landscape (`Corner X: = (|`Corner Y: t= <0l1" <l1 68l`Inches ed> 8l`Centimetres Print Sprite A0-9 Sradiooff,radioon Sradiooff,radioon A~ Copies: 1 A0-9 1 A0-9 1 A0-9 1 A0-9 A0-9.\- A0-9.\- Sradiooff,radioon Sradiooff,radioon P2Th =P   T` =x H0000x0000 Pl=  ntitled> =  ntitled> Pl=  ntitled> =  ntitled>  &, ntitled> x ^$=OK titled> Sprite size 10000 A0-9 10000 A0-9 >,J\R =0Save as: e`=OK titled> 5a`=^9a A~ icn X =0X(\=OK titled> z=fg z=kl v=qr z`=wx td}~t4`xHeight: d> hxMask: sk: 8zdPalette: > Width: : > dxvName: led> Width: : > vName: led> 4Td=0OK titled> Create Sprite A~ A0-9 A0-9 A0-9 soptoff,opton soptoff,opton Mode: T lJ=0How Many? e =xz 1 A0-9 P=d"$Dlt=OK $=  ntitled> *J=  ntitled> J` R ntitled> $=  ntitled> *J=  ntitled> J` G ntitled> |$=  ntitled> *}J=  ntitled> Jv` zB ntitled> @0t ><<00 ntitled> <r<<01 ntitled> p<<0'2 ntitled> <<073 ntitled> <<0G4 ntitled> B<<0W5 ntitled> @v<<0g6 ntitled> t<<0w6 ntitled> ><08 ntitled> <r<09 ntitled> p<010 titled> <011 titled> <012 titled> B<013 titled> @v<014 titled> t<015 titled> P@t=0None tled> Colour 999 a0-9 999 a0-9 999 a0-9 L  =084Td=0OK titled> z=aJ(z=aK(zd=aL(z0`=aM,\=aN `=aO =aP 0X`Width: : > `v`Mask: sk: 0\9`Height: d> xaQ`9`Palette: > "9aWv`Name: led> About This Sprite Mode: Bytes: ,H =0 l=OK titled> lSprite: d> h= ,\Pattern no: ,\=!$,f\=t,\=,\=((Select colour pattern 123456789012 1 A0-3 2 A0-3 3 A0-3 4 A0-3 left pixels of a sprite Make a pattern from the bottom pD =0H\` Untitled> D J (Bd tD (d $ p(d&' R$12 t<= (8dGH $TU V$ab no "b{| f(d f $tb Ht ft t  =\` Untitled> (hn=Set itled> ~h=OR itled> h=AND itled> *hp=EOR itled> Paint Tools Sgr1,ggr1 Sgr2,ggr2 Sgr3,ggr3 Sgr4,ggr4 Sgr5,ggr5 Sgr6,ggr6 Sgr7,ggr7 Sgr8,ggr8 Sgr9,ggr9 Sgr10,ggr10 Sgr11,ggr11 Sgr12,ggr12 Sgr13,ggr13 Sgr14,ggr14 Sgr15,ggr15 Sgrx,ggrx Sgr17,ggr17 Sgr18,ggr18 Sgr19,ggr19 Sgr20,ggr20 Sgrb,gbrush | >!Run V 0.82 (14-Dec-88) Wimpslot -min 56K -max 56K if "<$Printing>"<>"" then error 42 Printer in use Set PDriver$Dir if "" = "" OR "" RIGHT 6 = "!Scrap" then set Printer$Scrap .DM!Scrap if "" = "" OR "" RIGHT 5 = "!Temp" then set Printer$Temp .DM!Temp | set the printer rmload .PDriverDM | don't RMEnsure as we are probably replacing some other printer iconsprites .!Sprites set File$Type_FF4 "DM data" Run .!RunImage  >!RunImage Version 0.82 > Purpose: printer independent part of printer application ' Authors: DTee, AThompson, NReeves (ț ".Library" 2 init < error(,$) F P/ ș "Wimp_Poll",poll_mask%,event% action% Z despatch_poll d n x: despatch_poll 2 Printer_process_event(action%, event%)  Ȏ action%  0: copy  1: redraw(!event%) / !event%=confirm% endconfirm - 2: !event%<>confirm% endconfirm a open(!event%,event%!4,event%!8,event%!12,event%!16,event%!20,event%!24,event%!28)  3: endconfirm  close(!event%) K 6: mouse(!event%,event%!4,event%!8,event%!12,event%!16,event%!20)  endconfirm , 9: decodemenu(menuhandle%, event%) 1 getpointer: buttons%1 remenu  17,18:receive(event%)  19:bounced(event%) " , 6 @: J p_field(size%) T printer_field% += size% ^ = printer_field% - size% h: r init | in_file%=0 out_file%=0 B define printer class independent fields in printer data area printer_field% = 0 ' list_pointer_field% = p_field(4) ' pxres_field% = p_field(4) ' pyres_field% = p_field(4) ' features_field% = p_field(4) ' description_field% = p_field(4) 'pxres_halftone_field% = p_field(4) 'pyres_halftone_field% = p_field(4) 'printer_number_field% = p_field(4) ' page_width_field% = p_field(4) ' page_height_field% = p_field(4) ' page_bottom_field% = p_field(4) ' page_top_field% = p_field(4) &' page_left_field% = p_field(4) 0' page_right_field% = p_field(4) :3 define class independent icons in main window Dmain_description% = 1 N/ mark configure options as unset initially X printer_ptr% = -1 bprinter_config% = 0 l printer_new% = 0 v location_ptr% = -1  baud_ptr% = -1  data_ptr% = -1  XON_ptr% = -1  server_ptr% = -1  feed_ptr% = -1  message values "Message_PrintFile% =&80140 "Message_WillPrint% =&80141 "Message_PrintSave% =&80142 "Message_PrintInit% =&80143 "Message_PrintBusy% =&80144 "Message_PrintTypeOdd% =&80145 "Message_PrintTypeKnown%=&80146 "Message_SetPrinter% =&80147   dimension system arrays  q% &800   event% &800 *maxbuf%=&800 40 curbuf% maxbuf%: endbuf% = curbuf%+maxbuf% >/ menufree% &800: menuend% = menufree%+&800 H icon_buf% 40 R' text_buffer% 12, valid_buffer% 12 \ block% 20 f error_blk% 256 p msg% 256 zbufsz%=256  buf% bufsz%  set up colours !`wbcol=&0:`wfcol=&7:`tfcol=&7  initial mask state /poll_mask% = (%111 << 17): only messages :confirm_answer% = 0 : not inside FNconfirm currently Printer_initialise Printer$=PrinterClass$ save_name$="" print_ref%=0  Initialise WIMP  taskid% 5: $taskid%="TASK" >ș "Wimp_Initialise",200,!taskid%,Printer$ ,task_handle% " error(, $):terminate  msg%!0=20  msg%!12=0 $msg%!16=Message_PrintInit% .&ș "Wimp_SendMessage", 18, msg%, 0 8 B: L init2 V S$ ` j load the template file t5ș "Wimp_OpenTemplate",,".Templates" ~main% = window("main") !confirm% = window("confirm") info% = window("info") Printer_load_templates ș "Wimp_CloseTemplate" printer_type$ = "" icprint%=iconbar  create the menu tree  server_new% 8 $server_new% = ""  file_name% 201 =ș "XOS_ReadVarVal","PrinterType$5",file_name%,200 ,,L%  L%  file_name%?L% = 13   , $file_name%=".^.PrintData"  (bbaudm% = crmenu("#Baud;75;150;300;1200;2400;4800;9600;19200;50;110;134.5;600;1800;3600;7200") 2%bitsm% = crmenu("#Bits;5;6;7;8") <>paritym% = crmenu("#Parity;off;odd;even;1 on TX;0 on TX") FSstopm% = crmenu("#Stop bits;1;2 (1.5 if 5 bits parity,1 if 8 bits no parity)") PQdatam% = crmenu("#Data format;Bits>bitsm%;Parity>paritym%;Stop bits>stopm%") ZPserialm% = crmenu("#Serial;Baud rate>baudm%;Data format>datam%;XON / XOFF") d6netprintm% = crmenu("#Net print;$server_new%(8)") n6filemenu% = crmenu("#File name;$file_name%(200)") xprintmenu% = crmenu("#"+Printer$+";Info>info%#;Parallel;Serial>serialm%;Network>netprintm%;File>filemenu%#;Save choices;Stop printing;Quit") set_print_state()  defaults Printer_set_initial_state  error(, $): change_icon  :  SaveConfig %out_file%=".PrData"  printer_ptr% <> -1 ( printer_config% <> printer_new%  #out_file% = printer_ptr% ( #out_file%,"0"+printer_new%,2); $ printer_config% = printer_new%   "= location_new%=5 lowercase($file_name%,5))="null:" ,* location_config% <> location_new% 6 location_ptr% <> -1 @" #out_file% = location_ptr% J #out_file%,"0"; T ^$ location_config%=location_new% h r# ș"OS_CLI","Configure Print 0" | * location_config% <> location_new%  location_ptr% <> -1 " #out_file% = location_ptr% " #out_file%,location_new%;  $ location_config%=location_new%  2 ș"XOS_CLI","Configure Print "+location_new%  ! baud_config% <> baud_new%  baud_ptr% <> -1  #out_file%=baud_ptr%  #out_file%,baud_new%;   baud_config% = baud_new%  &R location_new%=2 baud_new%<=7 ș"OS_CLI","Configure Baud "+(baud_new%+1) 0! data_config% <> data_new% : data_ptr% <> -1 D #out_file%=data_ptr% N( A$=~(data_new%): A$=1 A$="0"+A$ X #out_file%,"&"+A$; b l data_config% = data_new% v  XON_config% <> XON_new%  XON_ptr% <> -1  #out_file%=XON_ptr%  #out_file%,XON_new%;   XON_config% = XON_new%  & server_config$ <> $server_new%  server_ptr% <> -1  #out_file%=server_ptr% 5 #out_file%,$server_new%+8-$server_new%,";");  " server_config$ = $server_new%    location_new%=4 - ș"XOS_CLI","Configure PS "+$server_new%  # ș"XOS_CLI","PS "+$server_new% * 4Printer_AmendConfig >#out_file%:out_file%=0 H R: \terminate f*unset $Printing p ș"Wimp_CloseDown": zPrinter_terminate 4 in_file%<>0 ș"XOS_Find",0,in_file%:in_file%=0 F out_file%<>0 EscOn:ș"XOS_Find",0,out_file%:out_file%=0:EscOff ș"Wimp_CloseDown"  :  defaults  ramval%, temp% data_new%=data_config% )set_tick(bitsm%,3-(data_new% 3),1)  data_new% (1<<3) 3 set_tick(paritym%,((data_new% >> 4) 3)+1,1)   set_tick(paritym%,0,1)  *set_tick(stopm%,(data_new%>>2) 1,1) $set_tick(serialm%, 2, XON_new%) $#ș "OS_Byte", 161, 15 ,,temp% .> baud_ptr% = -1 baud_config% = (temp% %00011100) >> 2 8baud_new% = baud_config% BD location_ptr%=-1 location_config% = (temp% %11100000) >> 5 L location_config% = 2 V ș"OS_Byte",8,baud_new%+1 ` ș"OS_Byte",7,baud_new%+1 j ș"OS_SerialOp",1,data_new% t" ș"OS_SerialOp",0,XON_new%,1 ~ Printer_Ignore  Printer_XonXoff(XON_new%)  E location_config% = 0 $file_name% = "null:":location_config%=5 #set_tick(baudm%, baud_new%, 1) Ȏ location_config% ' 1: set_tick(printmenu%, 1, 1) ' 2: set_tick(printmenu%, 2, 1) ' 4: set_tick(printmenu%, 3, 1) ' 5: set_tick(printmenu%, 4, 1)  $location_new% = location_config%  location_new%=5 stamp  server_ptr% = -1 # ș "OS_Byte", 161, 3 ,,temp%  temp% = 0 $ ș "OS_Byte", 161, 4 ,,temp% ( server_config$ = (temp%) 2 ramval% = &99 < F+ ș "OS_Byte", 161, ramval% ,,temp% P= temp% >32 server_config$ = server_config$ + (temp%) Z ramval% += 1 d# temp% <= 32 ramval% = &9E n x# server_config$ = "."+(temp%) $ ș "OS_Byte", 161, 4 ,,temp% 0 server_config$ = (temp%) + server_config$   !$server_new% = server_config$  :  redraw(handle%)  :  receive(message%) ) my_ref%, type$, option$, I%, pflag% my_ref% = message%!8 Ȏ message%!16  0,Message_PrintBusy%  endconfirm " terminate , 1,Message_PrintSave% 64 save onto our icon; reply with Print message @( I%=02524:msg%!I%=message%!I%: J endconfirm T? print_ref% moan("Can only print one file at a time") ^# save_name$=rtoz(message%+44) h print_on% r message%!16=1 |! moan("Already printing")   msg%!0 = 20  msg%!12 = my_ref% $ msg%!16 = Message_PrintBusy% / ș "Wimp_SendMessage", 17, msg%, msg%!4    msg%!12 = my_ref% # msg%!16 = Message_PrintFile%  message%!16=1  msg%!0 = 60 & $(msg%+44) = ""  msg%?59 = 0  . ș "Wimp_SendMessage", 18, msg%, msg%!4  msg%!4 = message%!4 & print_ref%=msg%!8 0 : 3 D endconfirm NY print_ref% print_ref%<>message%!12 moan("Can only print one file at a time") X print_ref%=0 b print_on% l moan("Already printing") v ) I%=02524:msg%!I%=message%!I%: " filenam$=rtoz(message%+44)  message%!12 = my_ref% 3 ș "Wimp_SendMessage",19,message%,message%!4 6 just ack the message in case FNconfirm called  Ftype%=message%!40  type_state%=0  Ftype%<>OutputType%  msg%!12=0 % msg%!16=Message_PrintTypeOdd% ) ș"Wimp_SendMessage", 18, msg%, 0  print_ref%=msg%!8 3 ș "Wimp_Poll",poll_mask%,event% action%  despatch_poll  type_state%  * pflag%= 4 type_state%=2 >> filenam$ = "" ("remove "+filenam$) H" in_file%="" R in_file%<>0 \$ filenam$ = "" f #in_file%:in_file%=0 p pflag%= z   check_type  Alias$ <> "" 1 ș "Wimp_StartTask",Alias$+" "+filenam$ $ in_file%=""  in_file%<>0 & filenam$ = "" A filenam$ = "" ("remove "+filenam$) #in_file%:in_file%=0  pflag%=  pflag%=    $ pflag% . location_new% = 4 8/ type$ = "netprint#"+printer_type$+":$" B LB location_new% = 5 ("set PrinterType$5 "+$file_name%) V type$="printer:$" `$ ș"OS_Byte",5,location_new% j t+ filenam$ is also used in PROCcopy ~ in_file% = (filenam$)  in_file% = 0 8 moan("Can't open '"+filenam$+"' for printing")  & out_file% = (type$+".output")  out_file% = 0  #in_file%:in_file%=0 < moan("Can't open '"+type$+".output' for printing")   set_print_state() ! change_icon:update_icon  pbuf%=(-4)  sent%=  Printer_Header   ) indicate we received the file OK  msg%!0 = 20 ( msg%!12 = my_ref% 2 msg%!16 = 4 < msg%!36 = -1 F- ș"Wimp_SendMessage", 17, msg%, msg%!4 P Z &502: help request d message%!32=-2 message%!36=icprint% helpreply("This is the "+FullPrinterClass$+" printer icon.|MDrop text files on to it to print them.|MClick MENU or SELECT to set the printer options.",my_ref%,message%!4) n Message_WillPrint% x print_ref%=0  Message_PrintInit% # poll_mask%<>(%111 << 17)  print_on%  msg%!0=20  msg%!12=my_ref% " msg%!16=Message_PrintBusy% 3 ș "Wimp_SendMessage", 17, msg%, message%!4   terminate    Message_PrintTypeKnown%  Ftype%=message%!40  type_state%=2  print_ref%=0  " ,: 6!helpreply(help$, ref%, to%) @msg%!0 = 256 Jmsg%!12 = ref% Tmsg%!16 = &503 ^$(msg%+20) = help$ hzero_terminate(msg%+20) r(ș "Wimp_SendMessage", 17, msg%, to% | : bounced(message%) Ȏ message%!16  Message_PrintFile%  print_ref%=0 G must be an app that can't do its own printing; reply to message  still in msg%  endconfirm  print_on% E can't ask for confirmation of stupid types as an affirmative A click will probably shut down the transfer at the source  msg%!16 = 2 + msg%!36 = -1 : file is not safe . ș "Wimp_SendMessage", 17, msg%, msg%!4   moan("Already printing") & 0 Message_PrintInit% : init2 D poll_mask%=1 N Message_PrintTypeOdd% X type_state%=1 b print_ref%=0 l v : ݤcheck_type  L%,psr%, type$  Alias$="" @ if an Alias$@PrintType_ exists then print via that type$ = ~Ftype% / type$ < 3 type$ = 3-type$,"0")+type$ ;ș"XOS_ReadVarVal","Alias$@PrintType_"+type$,,-1 ,,L% . L% < 0 Alias$="@PrintType_"+type$: = M Ftype% = &FFF Ftype% = &FFE Ftype% = &FEB Ftype%=OutputType% = 5 text, exec and obey files are all straight text 8 Ftype% = &1000 moan("Cannot print directories") 9 Ftype% = &2000 moan("Cannot print applications")  Ftype% = &3000   $error_blk% = "an untyped"   E ș"XOS_ReadVarVal","File$Type_"+type$,error_blk%,100 ,,L%;psr% *D psr% 1 $error_blk%="type &"+~Ftype% error_blk%?L% = 13 4 >P=confirm("This is a "+$error_blk%+" file; do you really want to print it?") H: Rݤconfirm(message$) \ S%, action% fS%=iconaddr(confirm%,0) p$S%=message$ zgetpointer :ș "Wimp_CreateMenu",,confirm%,mousex%-200,mousey%+200 confirm_answer% = 2  / ș "Wimp_Poll",poll_mask%,event% action%  despatch_poll  confirm_answer% <> 2 close(confirm%) =confirm_answer% : endconfirm - confirm_answer% = 2 confirm_answer%= . FNconfirm closes the window if necessary  :  rtoz(s%)  n$ $ȕ?s%:n$+=?s%:s%+=1: .=n$ 8: B copy L L% V `, :error(, $):stop_printing: j sent% t (-4)>=pbuf% ~ Printer_Footer  #in_file%:in_file%=0 , EscOn:#out_file%:out_file%=0:EscOff  stop_printing   * location_new%=1 location_new%=2  L%=(-4)  L%>bufsz% L%=bufsz%   L%=128   sent%=Printer_Send(L%)    : stop_printing (set_print_state() 2change_icon:update_icon <1 in_file% ș"XOS_Find",0,in_file%:in_file%=0 FC out_file% EscOn:ș"XOS_Find",0,out_file%:out_file%=0:EscOff P: filenam$ = "" ("remove "+filenam$) Z9 filenam$ = "" ("remove "+filenam$) d. delete the scrap file: now finished with nupdate_icon x : @ mouse(mousex%,mousey%,buttons%,handle%,icon%,oldbuttons%) Ȏ buttons%  4: left hand click  Ȏ handle%  -2:  front(main%)  confirm%: % icon%=1 confirm_answer%= % icon%=2 confirm_answer%=   2: menu button  Ȏ handle%  -2: menu(printmenu%)   " ,: 6% decodemenu(menuhandle%,menus%) @Ȏ menuhandle% J printmenu% T# print_on% (!menus%<5) ^ Ȏ !menus% h 1 r! tickit(printmenu%, 1, 4) | location_new% = 1  *FX 5,1  2  Printer_Ignore ' decodemenu(serialm%, menus%+4) ! tickit(printmenu%, 2, 4)  location_new% = 2 $ ș "OS_Byte", 8, baud_new%+1 $ ș "OS_Byte", 7, baud_new%+1 $ ș "OS_SerialOp",1,data_new% ' ș "OS_SerialOp",0,XON_new%, 1 " Printer_XonXoff(XON_new%)  *FX 5,2  3 ) decodemenu(netprintm%, menus%+4) ! tickit(printmenu%, 3, 4)  location_new% = 4 &' ș "XOS_CLI","PS "+$server_new% 0 *FX 5,4 : 4 D location_new%=5 N! tickit(printmenu%, 4, 4) XB $file_name%=0 $file_name%=".^.PrintData" b5 ș "XOS_CLI","Set PrinterType$5 "+$file_name% l stamp v *FX 5,5  5  SaveConfig  6  print_on%  *FX 21,3  stop_printing   7  print_on%  *FX 21,3  stop_printing   terminate    change_icon  serialm%   Ȏ !menus% * 0 4% decodemenu(baudm%, menus%+4) > 1 H% decodemenu(datam%, menus%+4) R 2 \ XON_new% = XON_new% 1 f& set_tick(serialm%,2,XON_new%) p z baudm%  !menus% <> -1 # tickit(baudm%, !menus%, 14)  baud_new%=!menus%   datam%  Ȏ !menus%  0 % decodemenu(bitsm%, menus%+4)  1 ' decodemenu(paritym%, menus%+4)  2 % decodemenu(stopm%, menus%+4)   bitsm%  !menus% <> -1 0 data_new%=(data_new% %111100)+3-!menus% $" tickit(bitsm%, !menus%, 3) . 8 paritym% B !menus% <> -1 L !menus% V9 data_new% = (data_new% %111)+8+((!menus%-1)<<4) ` j' data_new% = data_new% (1<<3) t ~$ tickit(paritym%, !menus%, 4)   stopm%  !menus% <> -1 5 data_new%=(data_new% %111011) (!menus%<<2) " tickit(stopm%, !menus%, 1)   update_icon  :  update_icon block%!0 = -2 block%!4 = icprint%  block%!8 = 0 block%!12 = 0 "ș "Wimp_SetIconState",,block% ( 2: <$ tickit(menu%, item%, nitems%) F I% P I%=0 nitems% Z set_tick(menu%, I%, 0) d nset_tick(menu%, item%, 1) x :  front(h%)  !q%=h% +ș "Wimp_GetWindowState",,q% : q%!28=-1 ș "Wimp_OpenWindow",,q%  : 7 open(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%) !q%=handle% )q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1% q%!20=scx%:q%!24=scy% q%!28=bhandle% ș "Wimp_OpenWindow",,q%  :  close(handle%) ")!q%=handle%:ș "Wimp_CloseWindow",,q% , 6: @ window(a$) J c% THș "Wimp_LoadTemplate",,q%,curbuf%,endbuf%,-1,a$,0 ,,curbuf%,,,,c% ^1 c%=0 moan("Template '"+a$+"' not found") h#ș "Wimp_CreateWindow",,q% c% r=c% |:  iconaddr(h%,i%) -!q%=h%:q%!4=i%:ș "Wimp_GetIconState",,q% 8 (q%!24 &100)=0 moan("Icon is not indirected")  =q%!28 :  menu(m%)  Y% Y% = mousey%  Y%<496 Y%=496 menuhandle%=m% 3ș "Wimp_CreateMenu",,menuhandle%,mousex%-66,Y%  :  remenu  Y% Y% = mousey% & Y% < 300 Y% = 316 0Eș "Wimp_CreateMenu",,menuhandle%,mousex%-66,Y% : default coords : D: N crmenu(menu$) X7 menufree%+28 > menuend% moan("Menu area full") b m%,i% lmenuptr%=menufree% vi%=0 ? menu$,1)="#" i%=1:menutitle$=par(";") menutitle$="" $menuptr%=menutitle$ Jmenuptr%?12=`tfcol:menuptr%?13=2:menuptr%?14=`wfcol:menuptr%?15=`wbcol 3menuptr%!16=196-24:menuptr%!20=44:menuptr%!24=0 $menuptr%+=28:maxx%=menutitle$-3 1 item$=par(";"):menuitem(item$): item$="" $m%=menufree%:m%!16=(maxx%*8+6)*2 menufree%=menuptr% =m% :  menuitem(text$) 2 text$="" menuptr%!-24=(menuptr%!-24)&80: 6 menuptr%+24 > menuend% moan("Menu area full") i%,flg%,V%  flg%=&00 i%=text$,">")  6 text$,1)="#" text$=text$,text$-1):flg%+=&02 *=i%>0subptr%=text$,i%+1):text$=text$,i%-1)subptr%=-1 4menuptr%!0=flg% >menuptr%!4=subptr% Hmenuptr%!8=&07000021 Rtext$,1)="$" \ !menuptr%+=&04 f menuptr%!8+=&108 p i%=text$,"(") z4 i%>0L%=text$,i%+1):text$=text$,i%-1)L%=12  V% = -1  menuptr%!12=text$,2)  menuptr%!16=-1  menuptr%!20=L%  text$=L%," ")  maxx%<20 maxx%=20   text$<=12  $(menuptr%+12)=text$ ( I%=workspace(text$+1):$I%=text$ 8 menuptr%!12=I%:menuptr%!16=-1:menuptr%!20=text$+1 " menuptr%!8=menuptr%!8 &100  text$>maxx% maxx%=text$  menuptr%+=24 $ .: 8 workspace(L%) B L% L% L= L% V: ` par(sep$) j%i1%=i%+1:i%=menu$+sep$,sep$,i1%) t=menu$,i1%,i%-i1%) ~:  shade(menuhandle%, item%) Emenuhandle%!(28+8+24*item%)=menuhandle%!(28+8+24*item%)&400000: : [ shade_status(menuhandle%,item%) = -((menuhandle%!(28+8+24*item%) &400000)=&400000) : , set_shade(menuhandle%, item%, value%)  st% +st% = shade_status(menuhandle%, item%) 0 value% <> st% shade(menuhandle%, item%)  :  tick(menuhandle%,item%) ;menuhandle%!(28+24*item%)=menuhandle%!(28+24*item%)&01   : D tick_status(menuhandle%, item%) = menuhandle%!(28+24*item%)1 (: 2+ set_tick(menuhandle%, item%, value%) value% tick(menuhandle%, item%) F P: Z set_print_state(flag%) d#set_shade(printmenu%,1,-flag%) n#set_shade(printmenu%,2,-flag%) x#set_shade(printmenu%,3,-flag%) #set_shade(printmenu%,4,-flag%) #set_shade(printmenu%,5,-flag%) &set_shade(printmenu%,6,(1+flag%)) #set_shade(printmenu%,7,-flag%) print_on%=flag% ,poll_mask%=(poll_mask% 1) (1+flag%)  flag%  *set $Printing "T"   *unset $Printing   : % read_icon_data(handle%, icon%) !icon_buf% = handle% icon_buf%!4 = icon% "'ș "Wimp_GetIconState", , icon_buf% ,C icon_buf%!28 < curbuf% =$(icon_buf%!28) = $(icon_buf%+28) 6: @2 set_icon_state(handle%, icon%, eor%, mask%) J!icon_buf% = handle% Ticon_buf%!4 = icon% ^icon_buf%!8 = eor% hicon_buf%!12 = mask% r%ș "Wimp_SetIconState",,icon_buf% | :  iconbar  I% icon_buf%!0 =-2 icon_buf%!4 =0 icon_buf%!8 =-16 icon_buf%!12=144 icon_buf%!16= 86 Gicon_buf%!20= &1700312B: 0001 0111 0000 0000 0011 0001 0010 1011 #$text_buffer% = printer_type$ #$valid_buffer% = "S!"+Printer$ icon_buf%!24= text_buffer%  icon_buf%!28 = valid_buffer% %icon_buf%!32 = ($text_buffer%)+1 (ș "Wimp_CreateIcon",,icon_buf% I% =I% &: 0 change_icon :set_ptype D!$text_buffer% = printer_type$ N X: bset_ptype l print_on% v printer_type$ = "Printing"  ș"OS_Byte",5,location_new% Ȏ location_new% $ 1: printer_type$ = "Parallel" " 2: printer_type$ = "Serial" & 4: printer_type$ = $server_new% 5: - lowercase($file_name%,5))="null:" ! printer_type$ = "To null:"  printer_type$ = "To file"  0 ("set PrinterType$5 """+$file_name%+"""") ! !  ! ! : !* getpointer !4 ș "Wimp_GetPointerInfo",,q% !>*mousex%=!q%:mousey%=q%!4:buttons%=q%!8 !Hhandle%=q%!12:icon%=q%!16 !R !\: !f moan(report$) !p &20000,report$ !z: ! error(err%, report$) ! stop% ! EscOff !'stop%=(report$<>"Already printing") !V (err%<&10100 err%>&20000) err%<>17 report$=report$+" internal error "+() !!error_blk% = err% !$(error_blk%+4)=report$ !!zero_terminate(error_blk%+4) !" stop% print_on% *FX 21,3 !2ș "Wimp_ReportError", error_blk%, 1, Printer$ !endconfirm ! stop% ! print_on% stop_printing "2 in_file% ș"XOS_Find",0,in_file%:in_file%=0 "D out_file% EscOn:ș"XOS_Find",0,out_file%:out_file%=0:EscOff " "$ ".: "8zero_terminate(S%) "BS%?$S% = 0 "L "V: "`ݤlowercase(S$) "j R$, C% "t R$="" "~ ȕ S$>0 " C% = S$,1) " S$ = S$,S$-1) "2 C%>="A" C%<="Z" C% = C% - "A" + "a" " R$ += C% " "=R$ ": " stamp " load% " " "'ș "OS_File",5,file_name% ,,load% #S (load%>>>8) <> &FFF000 + OutputType% ș "OS_File",11,file_name%,OutputType% #  #: # EscOn #( *FX 229 #2 #<: #F EscOff #P *FX 229,1 #Z (!printerdm, UUPUUPUPUUPUUUPUUUUUUPPUUUUUP33UPUU53SP3353SUUUUUUUUUUUUUUUUUUUUUUPU̻˪ʈ\UUUUUU\UUUUUUUPUUUUUUUUUUUUUUUUUUUUUUOsm!printerdm , UUPPUUUPUPUP3D@P3UUUUUUUUU\Żʈ\US\UUUUUUUUUfile_ff4,, wwwwwwwwwwwwwwwwwwwwpwwwPPUPUwwPPUPUwwPPwwPPUUPwwUUPUww5SPPUUP3wwPUUUUUUUUUUUUwwP\wwPż˪UUU\UwwPUUU\UwwP\wwPUUUUUUUUUUUUwwwwwwwwwwwwwwwwwwwwsmall_ff4 ,, wwwwwwwwwPPUPETE@UP@0UUUUUUU\˪US\wwwwwwwww C L *'$J 3 >Library V.0.80 for dot matrix printer driver @ Purpose: printer-specific parts of the printer application " Authors: A.Thompson, NReeves (= ******************************************************* 2= initialise the dot matrix printer driver specific parts <= ******************************************************* F: PPrinter_initialise Z P% dPrinterClass$="PrinterDM" n"FullPrinterClass$="dot matrix" xOutputType%=&FF4 @ define printer class dependent fields in printer data area ' dump_depth_field% = p_field(1) ' interlace_field% = p_field(3) ( line_prologue_field% = p_field(20) ( line_epilogue_field% = p_field(20) (line_interlace_field% = p_field(20) ( job_epilogue_field% = p_field(20) ( job_prologue_field% = p_field(20) ' printer_data_size% = p_field(0) 1 define class dependent icons in main window main_line%=2 printer_data_list% = 0:P%=0 Printer_read_config_file " now convert to circular list -P%!list_pointer_field%=printer_data_list%  ": , ***************** 6 set initial state @ ***************** JPrinter_set_initial_state T D% ^ set default state hD%=printer_data_list% r]ȕ D%!list_pointer_field%<>printer_data_list% D%!printer_number_field%<>printer_config% | D%=D%!list_pointer_field%  F D%!printer_number_field%=printer_config% printer_data_list%=D% Printer_set_description Printer_set_module_data  :  ********  shutdown  ******** Printer_terminate M*if "" = ".DM!Scrap" then unset Printer$Scrap J*if "" = ".DM!Temp" then unset Printer$Temp  : , ************************************** + the printer-specific template loading &, ************************************** 0Printer_load_templates :>set_icon_state(main%, main_line%, line_new% << 21, 1<<21) D N: X) *********************************** b( the printer-specific event handler l) *********************************** v(ݤPrinter_process_event(action%, E%)  res%  res%= Ȏ action%  17,18:  Ȏ E%!16  &502:  E%!32 = main% E%!36 >= -1 helpreply("Printer setup.|MClick SELECT or ADJUST to alter the settings.",E%!8,E%!4):res% =   6 # E%!12=main% print_on%  Ȏ  (E%!8 %101)<>0:  Ȏ E%!16  main_description%:   E%!8 1 % res% = printer_data_list%  I printer_data_list% = printer_data_list%!list_pointer_field% *; printer_data_list%!list_pointer_field% = res% 4 >G printer_data_list% = printer_data_list%!list_pointer_field% H R# Printer_set_description \# Printer_set_module_data fB printer_new% = printer_data_list%!printer_number_field% p res%= z main_line%  !q%=main%  q%!4=main_line% % ș "Wimp_GetIconState",,q% ( line_new% = (q%!24 >> 21) 1      =res% : G ***************************************************************** F read the configuration file with all the individual printer info G ***************************************************************** Printer_read_config_file  H%,ptr% " defaults% printer_data_size% $6 H%=0 printer_data_size%-4 4:defaults%!H%=0: .printer_data% = defaults% 8H%=".PrData" B/ H%=0 100,"Can't read printer data file" L V ptr% = #H% ` Printer_process_line(H%) j #H% t#H% ~ : 3 ********************************************* 2 process one line from the configuration file 3 ********************************************* Printer_process_line(H%)  I%,J%,tag$ $buf%=#H% I%=0 #ȕ tagchar(buf%?I%): I% += 1:  buf%?I% = ":"  got a tag  tag$=lowercase($buf%,I%))  I% += 1   ȕ buf%?I%=" ": I% += 1:  Ȏ tag$  "printer_name" ( build a name 2# description% $buf% -I% +1 <( $description% = $buf%,$buf%-I%) F; now add a block to our list of printer data blocks P) printer_data% printer_data_size% Z( I%=0 printer_data_size%-4 4 d( printer_data%!I% = defaults%!I% n x6 printer_data%!description_field% = description%  P%=0 * printer_data_list% = printer_data%  . P%!list_pointer_field% = printer_data%   P% = printer_data%  "pxres","pyres","features","pxres_halftone","pyres_halftone","printer_number","page_width","page_height","page_bottom","page_top","page_left","page_right" H note that all tags are the same as their respective field names T printer_data%!(tag$+"_field%") = read_integer_expression($buf%,$buf%-I%))  "dump_depth","interlace" T printer_data%?(tag$+"_field%") = read_integer_expression($buf%,$buf%-I%)) V "line_prologue","line_epilogue","line_interlace","job_prologue","job_epilogue"  ȕ buf%?I%=" ":I%+=1:  J% = (tag$+"_field%") ; ș "OS_GSTrans",buf%+I%,printer_data%+1+J%,20 ,,I%  printer_data%?J% = I% " "server" , J% = I% 6' ȕ buf%?J%>=" " buf%?J%<>";" @ J% += 1 J T$ from I% to J% is the string ^ server_ptr% = ptr% + I% h, server_config$ = $buf%, I%+1, J%-I%) r "printer" | printer_config% = read % printer_new% = printer_config%  printer_ptr% = ptr% + I%  "location"  location_config% = read  location_ptr% = ptr% + I%  "baud"  baud_config% = read  baud_ptr% = ptr% + I%  "data"  data_config% = read  data_ptr% = ptr% + I%  "xon"  XON_config% = read  XON_new% = XON_config%  XON_ptr% = ptr% + I%  "line" & line_config% = read 0 line_new% = line_config% : line_ptr% = ptr% + I% D N X b: l6ݤread=read_integer_expression($buf%,$buf%-I%)) v: - *************************************** $ convert a string to an integer - *************************************** !ݤread_integer_expression(S$)  R%, T%, E$, P%  E$=""  get rid of any comment ȕ S$,1) <> ";" S$ <> 0  E$ += S$,1)  S$ = S$,S$-1)  6ș"XOS_EvaluateExpression",E$,buf%,256 ,T%,R%;P% @ T% <> 0 (P% 1) 100, "Integer value needed for "+tag$ =R%  : - ***************************************  , allow only alphanumerics in tag fields *- *************************************** 4ݤtagchar(C%) >$ (C% >= "A" C% <= "Z") = H$ (C% >= "a" C% <= "z") = R,= (C% >= "0" C% <= "9") C% = "_" \: fK ********************************************************************* pK set the printer driver module's state to reflect the current settings zK ********************************************************************* Printer_set_module_data  A%,B%,C%,D%,E%,F% A%=defaults%!pxres_field% B%=defaults%!pyres_field%  C%=defaults%!features_field% &D%=defaults%!pxres_halftone_field% &E%=defaults%!pyres_halftone_field% &F%=defaults%!printer_number_field% ,ș "PDriver_SetInfo",,A%,B%,C%,,D%,E%,F%  msg%!0=20  msg%!12=0 msg%!16=Message_SetPrinter% &ș "Wimp_SendMessage", 18, msg%, 0 "A%=defaults%!page_width_field% #B%=defaults%!page_height_field% !C%=defaults%!page_left_field% $#D%=defaults%!page_bottom_field% ."E%=defaults%!page_right_field% 8 F%=defaults%!page_top_field% B/ș "PDriver_SetPageSize",,A%,B%,C%,D%,E%,F% L7ș "PDriver_SetPrinter",defaults%+dump_depth_field% V `: j- *************************************** t- set the description field in our window ~- *************************************** Printer_set_description S%, S$ ' S% = 0 printer_data_size%-4 4 (defaults%!S% = printer_data_list%!S%  HPrinter_set_icon(main_description%,$(defaults%!description_field%)) Jș "XOS_CLI","SET Printer$"+" """+$(defaults%!description_field%)+""""  : .Printer_set_numeric_icon(I%,F%,S%, S$) S$ = (defaults%!F%/S%) Printer_set_icon(I%,S$)  : Printer_set_icon(I%,S$)  S% (S%=iconaddr(main%,I%) 2 $S% = S$ <zero_terminate(S%) F1set_icon_state(main%,I%,0,0): force redraw P Z: d Printer_AmendConfig n! line_config% <> line_new% x #out_file%=line_ptr%  #out_file%,line_new%;  line_config% = line_new%   :  Printer_Ignore  :  Printer_XonXoff(flag%) flag% *fx 2,2  *fx 2,0   : " Printer_Header ,`ext%=#in_file% 6 `last%=-1 @ J: T Printer_Footer ^ h: r Printer_Send(len%) | EscOn  L%,I%,C% L%=`ext% - #in_file%  len%>=L% len%=L%  line_new% I%=len% ȕ I%>0  C%=#in_file% " C%=10 #out_file%,13:I%-=1  #out_file%,C% " C%=13 #out_file%,10:I%-=1 I%-=1  `last%=C%   * ș "OS_GBPB", 4, in_file%, buf%, len% + ș "OS_GBPB", 2, out_file%, buf%, len% & 0 EscOff :=(len%>=L%) H08@tPDriverPrinter driver 1.05 (29 Nov 1988) - for dot matrix printers[ 0==Uw  SWI not knownPDriverInfoSetInfoCheckFeaturesPageSizeSetPageSizeSelectJobCurrentJobFontSWIEndJobAbortJobResetGiveRectangleDrawPageGetRectangleCancelJobScreenDumpEnumerateJobsSetPrinter@- RM?h  `< 0#R(0 0@$G { qsDrPDriver$Dir%.PDriverDir@-  _@-><>@- - : 2< p-h.@-WQ FQ 'Q-O [ - - : 0 @- R s ud 0@1 L@dot matrixi@-W (@u@$p@s@$p rxH-2( T  R18d~@-8~_~L- P~-Z @ Az; /jA  0@ ~L~8~d~ <2]{jK{/Q:{{(1u{j {z-0t-: e {  _  p |dL-Pb{{j^_ j~d {M{j P bBkdL-7,bjX <j P QdRequested print job doesn't existPage currently being printedL-[ 5 0z /dO- Z_/{"jPUO_j -40qd jPP P>P@pGH `,`kNo current print jobO- Z0O_{Cj@TUO_;jP_ {Invalid number of copies requestedNot printing a pageO- ZO_{"jPDO_{) {j0s0@P`xJ{su\ {susuuuj{suukL-Obj _dPrint cancelled L-_vu;Ob This printer driver cannot do screen dumps @- 2!!8 @ /! @-@-,1rxqurxqud  @- @-0 1A[0 @-Ms s s 0srx@su{d?@-`a 0 0@P @P?_?0  00@-{s u tA/KrB- Y  zЍ@-? L- 0L- 0p3> : >%%%%%&%&+P*P*P4*Phh$$&&&t##0O%J1(B(C8@|@0 0  B 0C@D PE`F pG^ Kqqj_〃뀃horizontal line fillsflood fillsblock copy/movesundefined plotsfont and sprite VDU sequencesNo sprite selected in this print job~@- |0@`QR&S5TF&5F~A(A| @-@P@-AQ$"4#%"5# _L- ?jCjX*!{ < k̽9 kx̽Munknown ColourV reason codesrA-` 5"_#"j0RUc6`1`plv U ` %/ pWdBad MODE(h 000@P` p00@P `00p@@PP` `p0p@- @a-@q@-l@- @a-㴐@ mqk@-U   @-} h~- -0pph- 0  {(1us {~@-8 8L 8G^ - ] j 2 Draw_ProcessPath plotting calls- L +jP G {&j#!j >@<  1 6 9 >  @-Y the requested fill style7 kν1@-0# -  /j  {*j'%j 4 @<     ?    kνB- Y2?Y3#82 7 ½(BGKty|]2  L- j unknown OS_SpriteOp reason codesL- j z the requested OS_SpriteOp reason code P*L- jg kH-0@-`p O-  j z { jP|0 @0C @D F k O- i jm d { jP|0 @0C @D q 2 k H-0@@-`@O- K jO F {j- |rx0p @prx0Cp @Dp{M  kH-P0 *@^P^ dȽ- duunrp!parurdȽ@-@_說@-X X X= X - j {{ k>@-KO>r% A~  @u {@0uq {q ~  jr ~(~ >hs(1>- -j {(j @PKo^aP@@0 AppgB $% $%  $% S  BpW e k@- )^ࠑ^YI ^*-[) z-o js j{-0sd{j - 0q@q j `- Pq`qq qpqq q qqqj-0Cp@DpPEp`FppGpHpIpJpjP-"2 @RjtP4P) TPG`HPE`F/?P%`&^ࠑ^pUPE p^*^ࠑ^V`F ^*p7P%P@8`&`@|u/{u.{j3j 0@t` V* ^Y* > > >$ >* >1 >B >D >G  xthe requested Font_Paint control sequence >N 0^  0 0zO 0t t0t(q$q,q{0t(1u{z< ^*FP ^P"W!*1P-"s2s@sdjP@`PP@D`F @D`Fj`t jXdP`q6s?0Je & kd/@-TP@`P/P@$a&|xP^ࠑ^ P@  ^*^ࠑ^0QA 0^*@`/@-8 @8D`hPPU C L *'$J-!  2: This printer driver lacks the requested featuresThis printer driver only drives monochrome printersHO@-hQ@- 0dC-{T 00 R\ht=LXy P@X0P\r P9Y S5Z2嗏ZPQ 0> Y@BX@C PPG`0XS: YR:X2YᣀHVHȷZQ3{d_*halftone pattern too big@-,@@-P<C03d@-hP-{@-d@-usq o@@- ud@- dB-@DHL Y. (PQ PQ $PQ,0+, pj0 j! $PQ_Transformation matrix is singular@lP@HPHtPH@P@DpPDLPLxPLDPDLcDLQPLxAPj@2lCL PHPڒ~T00A-wj0#1R ^< B< B^ࠑ^`R B `^*^`V`-<0z`V_R\#h#000 000[2^ T100<0jt#000 000-Ѝ^ @-tt_ ,0ATR`@@jD\/ ,0TBQ`4j@PlCpS ,sst#u{r{d_Nothing to print_Print area coordinates too large_This printer driver cannot do arbitrary transformations@buffer@>@-30S0@0cB3EH,j! RJ&zC-hs\#W h#-lpplYtj01唓Y Yy-Or{xЍbj\#$ 3003#R ` jVops倃 唓 x$ x  0`eS 0cV `f!3c#3 B\3$000B-PZPW D2P0@"HB,` B@D0`0CPE- ` @`@0`0P`Pq 0b Pd@-LPs!qPLp7sd!R @S0PTUS^J~RYSU- @0P<- -\thlp#pl#L P 3-P L c x x, 4   x 倃@?@- ?@-S@A0@C4S @B$@@DDQ!0!!R " " "STlpSQRQR S0@T@E/q{q{q{q{d?@-_s{d@-"p!qs { r{q{s{{{d@-@- F @- (  M.`Z"d0B@-p!q{ r{q{s{{{d@-I@-A@-@t@p@pxp 0$000 B0C@DiPP8PPGLPpPPGTP\PhPPF@- 2@ @>tdTD4$R  BS00CR@@DSPPE@-d@-@@ d@- dt@dÀC- B@D0CPEs'u'Q 0 -p -0 R0o1 -TJUCJTURJSCJRSP# P h0 0P0h  0TU&hiT X@HTTDDMUTTXDDAHDRJT USJTUU Tʌ-B$C4DDETt)) CS @ Y& aBZpp`B@P0! D+!@ #!@!PC0 @P RSuЍ`pdtP  0 @-@0@ @A  B@(d?@-2@$@ @@d?@-@0@ @d<@- B0C@P<@-0r{~@-0LPe~(## ## $# $#/@- d eA-6A-/ A-(0A-!8A- A-0A- 8A-@@-Rp @@@@ /PC-4_؃ P -\V`<3뼃 .~%oW - 0@L@djp|T@@4L@@D dكXPC-5C-dۃhp2@-_0j!js{j@@ @@$ B$q{q{t{d0 @- 0s{d0 @-&@-6^q @- ?@-VF 0d?@- ` !@-L@-pvpsppn@-{`j P "-@P"Qj KjcsP  -d0^FAG$Bu{q{q{FAG$Bu {q {q {*j -FAG$Bq{q{jPU0-0@l|F4CGDD d9@-@@-0< P  d PjQ@-Q@-&H,  ,%d@-&@@-@-@-!! @-!! @-`B0S0S P@  0S*^bBQ@-h 3<rxs{dH-.@-p2- $p.{ 菀hh!$,$p+p!&p*ph p- (p 菀hh!$,$p+p!&p*p 叀@-@^@H^HD^DL^L@-WpgB'hXqpg@- R@-  RѤj@- @q@-/ q-{d@-/dA-P`B'x  k'kW、Xq   @- RZ0s @-P`B (80 @P`cUT@PpSp:0S Pd@pTp*Q`B@-h 1IjE6{d@-\ /j1CD@^@ ,_#b bjPdS-[@-Y%@ jX.Z ^ N[cd@ 0-j[XZ^N[-PxЍbj0SB-ETPL qJ{^jQ ^ࠑ^P@  ^*Q8Lja001, `&"@dC \\ U PE  \*TRϋZBX幃[rs PP`^N ` P*`` Y#QjpWpG `Vsp^XpGs PUdN- 'q ![ _- P + !! !P\ @-  001b@@A@dPe` ppppW`VZ@->,K0>0SAK> S3" B"(2 K2>K_... (print cancelled)@-^AK_@-@@- uss sud@-@@- su s~sjQ_dEscape@-t $K  AK_Printer drivers cannot handle R0S0 R/!> PrData *** dot matrix printer configuration *** Defaults ======== Default resolutions pxres: 180 ; dots per inch pyres: 180 pxres_halftone: 180/8 pyres_halftone: 180/8 features: 16_00000000 ; doesn`t support arbitrary transformation Define page size page_width: 594960 page_height: 841920 Define visible area page_bottom: 72000/2 ; half an inch at the bottom page_top: 841920-36000 ; half an inch at the top page_left: 17280 page_right: 577680 ; printer class specific options dump_depth: 24 interlace: 0 line_prologue: "" line_epilogue: "" line_interlace: "" job_epilogue: "" job_prologue: "" Real printer definitions ======================== printer_name: EPSON LQ compatible (180 by 180 dpi) printer_number: 0 pxres: 180 ; dots per inch pyres: 180 pxres_halftone: 180/8 pyres_halftone: 180/8 dump_depth: 24 ; 24 pin printer line_prologue: "<27>*<39>" ; select appropriate mode line_epilogue: "<27>$<0><0><27>J<24>" ; move down 24/180 inch ............................................................. printer_name: EPSON LQ compatible (360 by 180 dpi) printer_number: 1 pxres: 360 ; dots per inch pyres: 180 pxres_halftone: 360/8 pyres_halftone: 180/8 dump_depth: 24 ; 24 pin printer line_prologue: "<27>*<40>" ; select appropriate mode line_epilogue: "<27>$<0><0><27>J<24>" ; move down 24/180 inch ............................................................. printer_name: EPSON LQ compatible (90 by 180 dpi) printer_number: 2 pxres: 90 ; dots per inch pyres: 180 pxres_halftone: 90/4 pyres_halftone: 180/8 dump_depth: 24 ; 24 pin printer line_prologue: "<27>*<38>" ; select appropriate mode line_epilogue: "<27>$<0><0><27>J<24>" ; move down 24/180 inch ............................................................. printer_name: EPSON LQ compatible (120 by 180 dpi) printer_number: 3 pxres: 120 ; dots per inch pyres: 180 pxres_halftone: 120/8 pyres_halftone: 180/8 dump_depth: 24 ; 24 pin printer line_prologue: "<27>*<33>" ; select appropriate mode line_epilogue: "<27>$<0><0><27>J<24>" ; move down 24/180 inch ............................................................. printer_name: EPSON LQ compatible (60 by 60 dpi) printer_number: 4 pxres: 60 ; dots per inch pyres: 60 pxres_halftone: 60/4 pyres_halftone: 60/4 dump_depth: 8 ; 8 pin mode line_prologue: "<27>K" ; select appropriate mode line_epilogue: "<27>$<0><0><27>J<24>" ; move down 24/180 inch ............................................................. printer_name: EPSON LQ compatible (120 by 60 dpi) printer_number: 5 pxres: 120 ; dots per inch pyres: 60 pxres_halftone: 120/8 pyres_halftone: 60/4 dump_depth: 8 ; 8 pin mode line_prologue: "<27>L" ; select appropriate mode line_epilogue: "<27>$<0><0><27>J<24>" ; move down 24/180 inch ............................................................. printer_name: EPSON FX compatible (60 by 72 dpi) printer_number: 6 pxres: 60 ; dots per inch pyres: 72 pxres_halftone: 60/4 pyres_halftone: 72/4 dump_depth: 8 ; 8 pin printer line_prologue: "<27>K" ; select appropriate mode line_epilogue: "<27>A<0><13><27>2<27>J<24>" ; move down 8*3/216 inch job_epilogue: "<27>@" ............................................................. printer_name: EPSON FX compatible (90 by 72 dpi) printer_number: 7 pxres: 90 ; dots per inch pyres: 72 pxres_halftone: 90/8 pyres_halftone: 72/4 dump_depth: 8 ; 8 pin printer line_prologue: "<27>*<6>" ; select appropriate mode line_epilogue: "<27>A<0><13><27>2<27>J<24>" ; move down 8*3/216 inch job_epilogue: "<27>@" ............................................................. printer_name: EPSON FX compatible (120 by 144 dpi) printer_number: 8 pxres: 120 ; dots per inch pyres: 144 ; not regularly spaced pxres_halftone: 120/8 pyres_halftone: 144/8 dump_depth: 16 ; 8 pin printer, interlaced line_prologue: "<27>Y" ; select appropriate mode line_epilogue: "<27>A<0><13><27>2<27>J<22>" ; move down (8*3-2)/216 inch interlace: 1 line_interlace: "<27>A<0><13><27>2<27>J<2>" ; move down 2/216 inch: note accuracy not guaranteed on this. job_epilogue: "<27>@" ............................................................. printer_name: EPSON FX compatible (240 by 144 dpi) printer_number: 9 pxres: 240 ; dots per inch pyres: 144 ; not regularly spaced pxres_halftone: 240/8 pyres_halftone: 144/8 dump_depth: 16 ; 8 pin printer, interlaced line_prologue: "<27>Z" ; select appropriate mode line_epilogue: "<27>A<0><13><27>2<27>J<22>" ; move down (8*3-2)/216 inch interlace: 1 line_interlace: "<27>A<0><13><27>2<27>J<2>" ; move down 2/216 inch: note accuracy not guaranteed on this. job_epilogue: "<27>@" ............................................................. printer_name: EPSON FX compatible (240 by 216 dpi) printer_number: 10 pxres: 240 ; dots per inch pyres: 216 pxres_halftone: 240/8 pyres_halftone: 216/8 dump_depth: 24 ; 8 pin printer, doubly interlaced line_prologue: "<27>Z" ; select appropriate mode line_epilogue: "<27>A<0><13><27>2<27>J<22>" ; move down (8*3-2)/216 inch interlace: 2 line_interlace: "<27>A<0><13><27>2<27>J<1>" ; move down 1/216 inch: note accuracy not guaranteed on this. job_epilogue: "<27>@" ............................................................. printer_name: EPSON LQ-850 compatible (360 by 360 dpi) printer_number: 11 pxres: 360 ; dots per inch pyres: 360 pxres_halftone: 360/8 pyres_halftone: 360/8 dump_depth: 48 ; 24 pin printer, interlaced line_prologue: "<27>*<40>" ; select appropriate mode line_epilogue: "<27>+<47><10><27>2<27>$<0><0>" ; move down 47/360 inch interlace: 1 line_interlace: "<27>+<1><10><27>2<27>$<0><0>" ; move down 1/360 inch job_epilogue: "<27>@" ............................................................. printer_name: NEC PinWriter P6 plus (360 by 360 dpi) printer_number: 12 pxres: 360 ; dots per inch pyres: 360 pxres_halftone: 360/8 pyres_halftone: 360/8 dump_depth: 48 ; 24 pin printer, interlaced line_prologue: "<27>*<40>" ; select appropriate mode line_epilogue: "<28>3<47><10><27>2<27>$<0><0>" ; move down 47/360 inch interlace: 1 line_interlace: "<28>3<1><10><27>2<27>$<0><0>" ; move down 1/360 inch job_epilogue: "<27>@" ............................................................. Configured options ================== printer: 00 ;printer number - pad to two chars with 0 location: 1 ;1 - parallel, 2 - serial, 4 - net baud: 3 ; 0 - 75, 1 - 150, 2 - 300 , 3 - 1200 ; 4 - 2400, 5 - 4800, 6 - 9600 , 7 - 19200 ; 8 - 50, 9 - 110, 10 - 134.5, 11 - 600 ;12 - 1800, 13 - 3600, 14 - 7200 data: &24 ;serial data format - pad to two chars with 0 ;b0-b1 0,1,2,3 => 8,7,6,5 bits ;b2 0=>1 stop bit, 1=>2 stop bits OR 1.5 stop bits if 5 bits ;without parity, OR 1 stop bit if 8 bits with parity ;b3 0/1 => parity off/on ;b4-b5 0,1,2,3 => parity odd, even, 1 on Tx, 0 on Tx xon: 0 ;XON/XOFF 0 off 1 on server: 0.235;;; either [.] eg `235;;;;;` or `123.235;` ;or up to 6 char name eg `blue;;;;` or `yellow;;` ;must be padded to 8 chars with ; in either case line: 0 ;0/1 1=>convert CR or LF to CR,LF This is PrinterDM, version 0.82 (14-Dec-88) Documentation on how to use PrinterDM can be found in Edition 2 of the Archimedes User Guide. The following remarks should be noted about this version of PrinterDM and its documentation. Text printing is applied to files of types Text, Command, and Obey. For anything else, the application checks if other applications know how to print the file. If this fails it checks with the user whether to print the file. You can override the application's treatment of a particular type file by setting system variables of the form Alias$@PrinterType_xxx, where xxx is the appropriate type. If the variable exists, then the application performs *@PrinterType_xxx before doing anything else. It then checks for the existence of . If this exists then it is printed. You can therefore print via a print utility program by setting Alias$@PrintType_FFF to the macro *PrintUtil <%0> -to . Clicking SELECT on the icon produces a window with data about the current printer driver settings. Clicking on the name field steps through the printers and page sizes enumerated in the file PrData. It also allows control of the end-of-line control character sequence used in text printing, which can vary between printers. The printer driver module allocates buffer workspace in the module area for the duration of the print job. The speed of graphics printing is partially proportional to the amount of buffer memory available, so a way of speeding up a print job is to use the Task display to move more free memory to the module area before the print job starts. Note that some free memory should be left, since otherwise under some circumstances a "No room in RMA" message may arise. Which dump types work on which printers: ---------------------------------------- All LQ dumps work on the EPSON LQ-850. Note that some LQ-compatibles and early versions of the LQ-850 may not support 360 dpi dumps. All FX dumps work on the EPSON FX-80 and FX-850. All LQ dumps except 360 by 360 dpi work on an EPSON LQ-800. The NEC PinWriter P6plus is as the LQ-850, except that the 360 by 360 dump is slightly different; a P6plus-specific alternative is provided. The FX dumps also work on a Brother M-1409. \#main `info 0confirm =az@\ 8=0Printer: > @=1)tDot Matrix Printer Driver 0123456789012345678901234567890123456789 Convert CR or LF to CR,LF Soptoff,opton 8X =0X0Name: led> P0=kPurpose: > P=u Author: d> P=dVersion: > dP=About this program PrinterDM Dot matrix printer manager Acorn Computers 0.82 (14-Dec-88) htTR  89=0Confirm > e ,aJDp=YES itled> Dp=NO titled> ? L40 | >!Run V 0.83 (04-Jan-89) Wimpslot -min 64K -max 64K if "<$Printing>"<>"" then ERROR 42 Printer in use Set PDriver$Dir if "" = "" OR "" RIGHT 6 = "!Scrap" then set Printer$Scrap .PS!Scrap if "" = "" OR "" RIGHT 5 = "!Temp" then set Printer$Temp .PS!Temp | set the printer rmload .PDriverPS | don't RMEnsure as we are probably replacing some other printer iconsprites .!Sprites Run .!RunImage  >!RunImage Version 0.83 > Purpose: printer independent part of printer application ' Authors: DTee, AThompson, NReeves (ț ".Library" 2 init < error(,$) F P/ ș "Wimp_Poll",poll_mask%,event% action% Z despatch_poll d n x: despatch_poll 2 Printer_process_event(action%, event%)  Ȏ action%  0: copy  1: redraw(!event%) / !event%=confirm% endconfirm - 2: !event%<>confirm% endconfirm a open(!event%,event%!4,event%!8,event%!12,event%!16,event%!20,event%!24,event%!28)  3: endconfirm  close(!event%) K 6: mouse(!event%,event%!4,event%!8,event%!12,event%!16,event%!20)  endconfirm , 9: decodemenu(menuhandle%, event%) 1 getpointer: buttons%1 remenu  17,18:receive(event%)  19:bounced(event%) " , 6 @: J p_field(size%) T printer_field% += size% ^ = printer_field% - size% h: r init | in_file%=0 out_file%=0 B define printer class independent fields in printer data area printer_field% = 0 ' list_pointer_field% = p_field(4) ' pxres_field% = p_field(4) ' pyres_field% = p_field(4) ' features_field% = p_field(4) ' description_field% = p_field(4) 'pxres_halftone_field% = p_field(4) 'pyres_halftone_field% = p_field(4) 'printer_number_field% = p_field(4) ' page_width_field% = p_field(4) ' page_height_field% = p_field(4) ' page_bottom_field% = p_field(4) ' page_top_field% = p_field(4) &' page_left_field% = p_field(4) 0' page_right_field% = p_field(4) :3 define class independent icons in main window Dmain_description% = 1 N/ mark configure options as unset initially X printer_ptr% = -1 bprinter_config% = 0 l printer_new% = 0 v location_ptr% = -1  baud_ptr% = -1  data_ptr% = -1  XON_ptr% = -1  server_ptr% = -1  feed_ptr% = -1  message values "Message_PrintFile% =&80140 "Message_WillPrint% =&80141 "Message_PrintSave% =&80142 "Message_PrintInit% =&80143 "Message_PrintBusy% =&80144 "Message_PrintTypeOdd% =&80145 "Message_PrintTypeKnown%=&80146 "Message_SetPrinter% =&80147   dimension system arrays  q% &800   event% &800 *maxbuf%=&800 40 curbuf% maxbuf%: endbuf% = curbuf%+maxbuf% >/ menufree% &800: menuend% = menufree%+&800 H icon_buf% 40 R' text_buffer% 12, valid_buffer% 12 \ block% 20 f error_blk% 256 p msg% 256 zbufsz%=256  buf% bufsz%  set up colours !`wbcol=&0:`wfcol=&7:`tfcol=&7  initial mask state /poll_mask% = (%111 << 17): only messages :confirm_answer% = 0 : not inside FNconfirm currently Printer_initialise Printer$=PrinterClass$ save_name$="" print_ref%=0  Initialise WIMP  taskid% 5: $taskid%="TASK" >ș "Wimp_Initialise",200,!taskid%,Printer$ ,task_handle% " error(, $):terminate  msg%!0=20  msg%!12=0 $msg%!16=Message_PrintInit% .&ș "Wimp_SendMessage", 18, msg%, 0 8 B: L init2 V S$ ` j load the template file t5ș "Wimp_OpenTemplate",,".Templates" ~main% = window("main") !confirm% = window("confirm") info% = window("info") Printer_load_templates ș "Wimp_CloseTemplate" printer_type$ = "" icprint%=iconbar  create the menu tree  server_new% 8 $server_new% = ""  file_name% 201 =ș "XOS_ReadVarVal","PrinterType$5",file_name%,200 ,,L%  L%  file_name%?L% = 13   , $file_name%=".^.PrintData"  (bbaudm% = crmenu("#Baud;75;150;300;1200;2400;4800;9600;19200;50;110;134.5;600;1800;3600;7200") 2%bitsm% = crmenu("#Bits;5;6;7;8") <>paritym% = crmenu("#Parity;off;odd;even;1 on TX;0 on TX") FSstopm% = crmenu("#Stop bits;1;2 (1.5 if 5 bits parity,1 if 8 bits no parity)") PQdatam% = crmenu("#Data format;Bits>bitsm%;Parity>paritym%;Stop bits>stopm%") ZPserialm% = crmenu("#Serial;Baud rate>baudm%;Data format>datam%;XON / XOFF") d6netprintm% = crmenu("#Net print;$server_new%(8)") n6filemenu% = crmenu("#File name;$file_name%(200)") xprintmenu% = crmenu("#"+Printer$+";Info>info%#;Parallel;Serial>serialm%;Network>netprintm%;File>filemenu%#;Save choices;Stop printing;Quit") set_print_state()  defaults Printer_set_initial_state  error(, $): change_icon  :  SaveConfig %out_file%=".PrData"  printer_ptr% <> -1 ( printer_config% <> printer_new%  #out_file% = printer_ptr% ( #out_file%,"0"+printer_new%,2); $ printer_config% = printer_new%   "= location_new%=5 lowercase($file_name%,5))="null:" ,* location_config% <> location_new% 6 location_ptr% <> -1 @" #out_file% = location_ptr% J #out_file%,"0"; T ^$ location_config%=location_new% h r# ș"OS_CLI","Configure Print 0" | * location_config% <> location_new%  location_ptr% <> -1 " #out_file% = location_ptr% " #out_file%,location_new%;  $ location_config%=location_new%  2 ș"XOS_CLI","Configure Print "+location_new%  ! baud_config% <> baud_new%  baud_ptr% <> -1  #out_file%=baud_ptr%  #out_file%,baud_new%;   baud_config% = baud_new%  &R location_new%=2 baud_new%<=7 ș"OS_CLI","Configure Baud "+(baud_new%+1) 0! data_config% <> data_new% : data_ptr% <> -1 D #out_file%=data_ptr% N( A$=~(data_new%): A$=1 A$="0"+A$ X #out_file%,"&"+A$; b l data_config% = data_new% v  XON_config% <> XON_new%  XON_ptr% <> -1  #out_file%=XON_ptr%  #out_file%,XON_new%;   XON_config% = XON_new%  & server_config$ <> $server_new%  server_ptr% <> -1  #out_file%=server_ptr% 5 #out_file%,$server_new%+8-$server_new%,";");  " server_config$ = $server_new%    location_new%=4 - ș"XOS_CLI","Configure PS "+$server_new%  # ș"XOS_CLI","PS "+$server_new% * 4Printer_AmendConfig >#out_file%:out_file%=0 H R: \terminate f*unset $Printing p ș"Wimp_CloseDown": zPrinter_terminate 4 in_file%<>0 ș"XOS_Find",0,in_file%:in_file%=0 F out_file%<>0 EscOn:ș"XOS_Find",0,out_file%:out_file%=0:EscOff ș"Wimp_CloseDown"  :  defaults  ramval%, temp% data_new%=data_config% )set_tick(bitsm%,3-(data_new% 3),1)  data_new% (1<<3) 3 set_tick(paritym%,((data_new% >> 4) 3)+1,1)   set_tick(paritym%,0,1)  *set_tick(stopm%,(data_new%>>2) 1,1) $set_tick(serialm%, 2, XON_new%) $#ș "OS_Byte", 161, 15 ,,temp% .> baud_ptr% = -1 baud_config% = (temp% %00011100) >> 2 8baud_new% = baud_config% BD location_ptr%=-1 location_config% = (temp% %11100000) >> 5 L location_config% = 2 V ș"OS_Byte",8,baud_new%+1 ` ș"OS_Byte",7,baud_new%+1 j ș"OS_SerialOp",1,data_new% t" ș"OS_SerialOp",0,XON_new%,1 ~ Printer_Ignore  Printer_XonXoff(XON_new%)  E location_config% = 0 $file_name% = "null:":location_config%=5 #set_tick(baudm%, baud_new%, 1) Ȏ location_config% ' 1: set_tick(printmenu%, 1, 1) ' 2: set_tick(printmenu%, 2, 1) ' 4: set_tick(printmenu%, 3, 1) ' 5: set_tick(printmenu%, 4, 1)  $location_new% = location_config%  location_new%=5 stamp  server_ptr% = -1 # ș "OS_Byte", 161, 3 ,,temp%  temp% = 0 $ ș "OS_Byte", 161, 4 ,,temp% ( server_config$ = (temp%) 2 ramval% = &99 < F+ ș "OS_Byte", 161, ramval% ,,temp% P= temp% >32 server_config$ = server_config$ + (temp%) Z ramval% += 1 d# temp% <= 32 ramval% = &9E n x# server_config$ = "."+(temp%) $ ș "OS_Byte", 161, 4 ,,temp% 0 server_config$ = (temp%) + server_config$   !$server_new% = server_config$  :  redraw(handle%)  :  receive(message%) ) my_ref%, type$, option$, I%, pflag% my_ref% = message%!8 Ȏ message%!16  0,Message_PrintBusy%  endconfirm " terminate , 1,Message_PrintSave% 64 save onto our icon; reply with Print message @( I%=02524:msg%!I%=message%!I%: J endconfirm T? print_ref% moan("Can only print one file at a time") ^# save_name$=rtoz(message%+44) h print_on% r message%!16=1 |! moan("Already printing")   msg%!0 = 20  msg%!12 = my_ref% $ msg%!16 = Message_PrintBusy% / ș "Wimp_SendMessage", 17, msg%, msg%!4    msg%!12 = my_ref% # msg%!16 = Message_PrintFile%  message%!16=1  msg%!0 = 60 & $(msg%+44) = ""  msg%?59 = 0  . ș "Wimp_SendMessage", 18, msg%, msg%!4  msg%!4 = message%!4 & print_ref%=msg%!8 0 : 3 D endconfirm NY print_ref% print_ref%<>message%!12 moan("Can only print one file at a time") X print_ref%=0 b print_on% l moan("Already printing") v ) I%=02524:msg%!I%=message%!I%: " filenam$=rtoz(message%+44)  message%!12 = my_ref% 3 ș "Wimp_SendMessage",19,message%,message%!4 6 just ack the message in case FNconfirm called  Ftype%=message%!40  type_state%=0  Ftype%<>OutputType%  msg%!12=0 % msg%!16=Message_PrintTypeOdd% ) ș"Wimp_SendMessage", 18, msg%, 0  print_ref%=msg%!8 3 ș "Wimp_Poll",poll_mask%,event% action%  despatch_poll  type_state%  * pflag%= 4 type_state%=2 >> filenam$ = "" ("remove "+filenam$) H" in_file%="" R in_file%<>0 \$ filenam$ = "" f #in_file%:in_file%=0 p pflag%= z   check_type  Alias$ <> "" 1 ș "Wimp_StartTask",Alias$+" "+filenam$ $ in_file%=""  in_file%<>0 & filenam$ = "" A filenam$ = "" ("remove "+filenam$) #in_file%:in_file%=0  pflag%=  pflag%=    $ pflag% . location_new% = 4 8/ type$ = "netprint#"+printer_type$+":$" B LB location_new% = 5 ("set PrinterType$5 "+$file_name%) V type$="printer:$" `$ ș"OS_Byte",5,location_new% j t+ filenam$ is also used in PROCcopy ~ in_file% = (filenam$)  in_file% = 0 8 moan("Can't open '"+filenam$+"' for printing")  & out_file% = (type$+".output")  out_file% = 0  #in_file%:in_file%=0 < moan("Can't open '"+type$+".output' for printing")   set_print_state() ! change_icon:update_icon  pbuf%=(-4)  sent%=  Printer_Header   ) indicate we received the file OK  msg%!0 = 20 ( msg%!12 = my_ref% 2 msg%!16 = 4 < msg%!36 = -1 F- ș"Wimp_SendMessage", 17, msg%, msg%!4 P Z &502: help request d message%!32=-2 message%!36=icprint% helpreply("This is the "+FullPrinterClass$+" printer icon.|MDrop text files on to it to print them.|MClick MENU or SELECT to set the printer options.",my_ref%,message%!4) n Message_WillPrint% x print_ref%=0  Message_PrintInit% # poll_mask%<>(%111 << 17)  print_on%  msg%!0=20  msg%!12=my_ref% " msg%!16=Message_PrintBusy% 3 ș "Wimp_SendMessage", 17, msg%, message%!4   terminate    Message_PrintTypeKnown%  Ftype%=message%!40  type_state%=2  print_ref%=0  " ,: 6!helpreply(help$, ref%, to%) @msg%!0 = 256 Jmsg%!12 = ref% Tmsg%!16 = &503 ^$(msg%+20) = help$ hzero_terminate(msg%+20) r(ș "Wimp_SendMessage", 17, msg%, to% | : bounced(message%) Ȏ message%!16  Message_PrintFile%  print_ref%=0 G must be an app that can't do its own printing; reply to message  still in msg%  endconfirm  print_on% E can't ask for confirmation of stupid types as an affirmative A click will probably shut down the transfer at the source  msg%!16 = 2 + msg%!36 = -1 : file is not safe . ș "Wimp_SendMessage", 17, msg%, msg%!4   moan("Already printing") & 0 Message_PrintInit% : init2 D poll_mask%=1 N Message_PrintTypeOdd% X type_state%=1 b print_ref%=0 l v : ݤcheck_type  L%,psr%, type$  Alias$="" @ if an Alias$@PrintType_ exists then print via that type$ = ~Ftype% / type$ < 3 type$ = 3-type$,"0")+type$ ;ș"XOS_ReadVarVal","Alias$@PrintType_"+type$,,-1 ,,L% . L% < 0 Alias$="@PrintType_"+type$: = M Ftype% = &FFF Ftype% = &FFE Ftype% = &FEB Ftype%=OutputType% = 5 text, exec and obey files are all straight text 8 Ftype% = &1000 moan("Cannot print directories") 9 Ftype% = &2000 moan("Cannot print applications")  Ftype% = &3000   $error_blk% = "an untyped"   E ș"XOS_ReadVarVal","File$Type_"+type$,error_blk%,100 ,,L%;psr% *D psr% 1 $error_blk%="type &"+~Ftype% error_blk%?L% = 13 4 >P=confirm("This is a "+$error_blk%+" file; do you really want to print it?") H: Rݤconfirm(message$) \ S%, action% fS%=iconaddr(confirm%,0) p$S%=message$ zgetpointer :ș "Wimp_CreateMenu",,confirm%,mousex%-200,mousey%+200 confirm_answer% = 2  / ș "Wimp_Poll",poll_mask%,event% action%  despatch_poll  confirm_answer% <> 2 close(confirm%) =confirm_answer% : endconfirm - confirm_answer% = 2 confirm_answer%= . FNconfirm closes the window if necessary  :  rtoz(s%)  n$ $ȕ?s%:n$+=?s%:s%+=1: .=n$ 8: B copy L L% V `, :error(, $):stop_printing: j sent% t (-4)>=pbuf% ~ Printer_Footer  #in_file%:in_file%=0 , EscOn:#out_file%:out_file%=0:EscOff  stop_printing   * location_new%=1 location_new%=2  L%=(-4)  L%>bufsz% L%=bufsz%   L%=128   sent%=Printer_Send(L%)    : stop_printing (set_print_state() 2change_icon:update_icon <1 in_file% ș"XOS_Find",0,in_file%:in_file%=0 FC out_file% EscOn:ș"XOS_Find",0,out_file%:out_file%=0:EscOff P: filenam$ = "" ("remove "+filenam$) Z9 filenam$ = "" ("remove "+filenam$) d. delete the scrap file: now finished with nupdate_icon x : @ mouse(mousex%,mousey%,buttons%,handle%,icon%,oldbuttons%) Ȏ buttons%  4: left hand click  Ȏ handle%  -2:  front(main%)  confirm%: % icon%=1 confirm_answer%= % icon%=2 confirm_answer%=   2: menu button  Ȏ handle%  -2: menu(printmenu%)   " ,: 6% decodemenu(menuhandle%,menus%) @Ȏ menuhandle% J printmenu% T# print_on% (!menus%<5) ^ Ȏ !menus% h 1 r! tickit(printmenu%, 1, 4) | location_new% = 1  *FX 5,1  2  Printer_Ignore ' decodemenu(serialm%, menus%+4) ! tickit(printmenu%, 2, 4)  location_new% = 2 $ ș "OS_Byte", 8, baud_new%+1 $ ș "OS_Byte", 7, baud_new%+1 $ ș "OS_SerialOp",1,data_new% ' ș "OS_SerialOp",0,XON_new%, 1 " Printer_XonXoff(XON_new%)  *FX 5,2  3 ) decodemenu(netprintm%, menus%+4) ! tickit(printmenu%, 3, 4)  location_new% = 4 &' ș "XOS_CLI","PS "+$server_new% 0 *FX 5,4 : 4 D location_new%=5 N! tickit(printmenu%, 4, 4) XB $file_name%=0 $file_name%=".^.PrintData" b5 ș "XOS_CLI","Set PrinterType$5 "+$file_name% l stamp v *FX 5,5  5  SaveConfig  6  print_on%  *FX 21,3  stop_printing   7  print_on%  *FX 21,3  stop_printing   terminate    change_icon  serialm%   Ȏ !menus% * 0 4% decodemenu(baudm%, menus%+4) > 1 H% decodemenu(datam%, menus%+4) R 2 \ XON_new% = XON_new% 1 f& set_tick(serialm%,2,XON_new%) p z baudm%  !menus% <> -1 # tickit(baudm%, !menus%, 14)  baud_new%=!menus%   datam%  Ȏ !menus%  0 % decodemenu(bitsm%, menus%+4)  1 ' decodemenu(paritym%, menus%+4)  2 % decodemenu(stopm%, menus%+4)   bitsm%  !menus% <> -1 0 data_new%=(data_new% %111100)+3-!menus% $" tickit(bitsm%, !menus%, 3) . 8 paritym% B !menus% <> -1 L !menus% V9 data_new% = (data_new% %111)+8+((!menus%-1)<<4) ` j' data_new% = data_new% (1<<3) t ~$ tickit(paritym%, !menus%, 4)   stopm%  !menus% <> -1 5 data_new%=(data_new% %111011) (!menus%<<2) " tickit(stopm%, !menus%, 1)   update_icon  :  update_icon block%!0 = -2 block%!4 = icprint%  block%!8 = 0 block%!12 = 0 "ș "Wimp_SetIconState",,block% ( 2: <$ tickit(menu%, item%, nitems%) F I% P I%=0 nitems% Z set_tick(menu%, I%, 0) d nset_tick(menu%, item%, 1) x :  front(h%)  !q%=h% +ș "Wimp_GetWindowState",,q% : q%!28=-1 ș "Wimp_OpenWindow",,q%  : 7 open(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%) !q%=handle% )q%!4=x0%:q%!8=y0%:q%!12=x1%:q%!16=y1% q%!20=scx%:q%!24=scy% q%!28=bhandle% ș "Wimp_OpenWindow",,q%  :  close(handle%) ")!q%=handle%:ș "Wimp_CloseWindow",,q% , 6: @ window(a$) J c% THș "Wimp_LoadTemplate",,q%,curbuf%,endbuf%,-1,a$,0 ,,curbuf%,,,,c% ^1 c%=0 moan("Template '"+a$+"' not found") h#ș "Wimp_CreateWindow",,q% c% r=c% |:  iconaddr(h%,i%) -!q%=h%:q%!4=i%:ș "Wimp_GetIconState",,q% 8 (q%!24 &100)=0 moan("Icon is not indirected")  =q%!28 :  menu(m%)  Y% Y% = mousey%  Y%<496 Y%=496 menuhandle%=m% 3ș "Wimp_CreateMenu",,menuhandle%,mousex%-66,Y%  :  remenu  Y% Y% = mousey% & Y% < 300 Y% = 316 0Eș "Wimp_CreateMenu",,menuhandle%,mousex%-66,Y% : default coords : D: N crmenu(menu$) X7 menufree%+28 > menuend% moan("Menu area full") b m%,i% lmenuptr%=menufree% vi%=0 ? menu$,1)="#" i%=1:menutitle$=par(";") menutitle$="" $menuptr%=menutitle$ Jmenuptr%?12=`tfcol:menuptr%?13=2:menuptr%?14=`wfcol:menuptr%?15=`wbcol 3menuptr%!16=196-24:menuptr%!20=44:menuptr%!24=0 $menuptr%+=28:maxx%=menutitle$-3 1 item$=par(";"):menuitem(item$): item$="" $m%=menufree%:m%!16=(maxx%*8+6)*2 menufree%=menuptr% =m% :  menuitem(text$) 2 text$="" menuptr%!-24=(menuptr%!-24)&80: 6 menuptr%+24 > menuend% moan("Menu area full") i%,flg%,V%  flg%=&00 i%=text$,">")  6 text$,1)="#" text$=text$,text$-1):flg%+=&02 *=i%>0subptr%=text$,i%+1):text$=text$,i%-1)subptr%=-1 4menuptr%!0=flg% >menuptr%!4=subptr% Hmenuptr%!8=&07000021 Rtext$,1)="$" \ !menuptr%+=&04 f menuptr%!8+=&108 p i%=text$,"(") z4 i%>0L%=text$,i%+1):text$=text$,i%-1)L%=12  V% = -1  menuptr%!12=text$,2)  menuptr%!16=-1  menuptr%!20=L%  text$=L%," ")  maxx%<20 maxx%=20   text$<=12  $(menuptr%+12)=text$ ( I%=workspace(text$+1):$I%=text$ 8 menuptr%!12=I%:menuptr%!16=-1:menuptr%!20=text$+1 " menuptr%!8=menuptr%!8 &100  text$>maxx% maxx%=text$  menuptr%+=24 $ .: 8 workspace(L%) B L% L% L= L% V: ` par(sep$) j%i1%=i%+1:i%=menu$+sep$,sep$,i1%) t=menu$,i1%,i%-i1%) ~:  shade(menuhandle%, item%) Emenuhandle%!(28+8+24*item%)=menuhandle%!(28+8+24*item%)&400000: : [ shade_status(menuhandle%,item%) = -((menuhandle%!(28+8+24*item%) &400000)=&400000) : , set_shade(menuhandle%, item%, value%)  st% +st% = shade_status(menuhandle%, item%) 0 value% <> st% shade(menuhandle%, item%)  :  tick(menuhandle%,item%) ;menuhandle%!(28+24*item%)=menuhandle%!(28+24*item%)&01   : D tick_status(menuhandle%, item%) = menuhandle%!(28+24*item%)1 (: 2+ set_tick(menuhandle%, item%, value%) value% tick(menuhandle%, item%) F P: Z set_print_state(flag%) d#set_shade(printmenu%,1,-flag%) n#set_shade(printmenu%,2,-flag%) x#set_shade(printmenu%,3,-flag%) #set_shade(printmenu%,4,-flag%) #set_shade(printmenu%,5,-flag%) &set_shade(printmenu%,6,(1+flag%)) #set_shade(printmenu%,7,-flag%) print_on%=flag% ,poll_mask%=(poll_mask% 1) (1+flag%)  flag%  *set $Printing "T"   *unset $Printing   : % read_icon_data(handle%, icon%) !icon_buf% = handle% icon_buf%!4 = icon% "'ș "Wimp_GetIconState", , icon_buf% ,C icon_buf%!28 < curbuf% =$(icon_buf%!28) = $(icon_buf%+28) 6: @2 set_icon_state(handle%, icon%, eor%, mask%) J!icon_buf% = handle% Ticon_buf%!4 = icon% ^icon_buf%!8 = eor% hicon_buf%!12 = mask% r%ș "Wimp_SetIconState",,icon_buf% | :  iconbar  I% icon_buf%!0 =-2 icon_buf%!4 =0 icon_buf%!8 =-16 icon_buf%!12=144 icon_buf%!16= 86 Gicon_buf%!20= &1700312B: 0001 0111 0000 0000 0011 0001 0010 1011 #$text_buffer% = printer_type$ #$valid_buffer% = "S!"+Printer$ icon_buf%!24= text_buffer%  icon_buf%!28 = valid_buffer% %icon_buf%!32 = ($text_buffer%)+1 (ș "Wimp_CreateIcon",,icon_buf% I% =I% &: 0 change_icon :set_ptype D!$text_buffer% = printer_type$ N X: bset_ptype l print_on% v printer_type$ = "Printing"  ș"OS_Byte",5,location_new% Ȏ location_new% $ 1: printer_type$ = "Parallel" " 2: printer_type$ = "Serial" & 4: printer_type$ = $server_new% 5: - lowercase($file_name%,5))="null:" ! printer_type$ = "To null:"  printer_type$ = "To file"  0 ("set PrinterType$5 """+$file_name%+"""") ! !  ! ! : !* getpointer !4 ș "Wimp_GetPointerInfo",,q% !>*mousex%=!q%:mousey%=q%!4:buttons%=q%!8 !Hhandle%=q%!12:icon%=q%!16 !R !\: !f moan(report$) !p &20000,report$ !z: ! error(err%, report$) ! stop% ! EscOff !'stop%=(report$<>"Already printing") !V (err%<&10100 err%>&20000) err%<>17 report$=report$+" internal error "+() !!error_blk% = err% !$(error_blk%+4)=report$ !!zero_terminate(error_blk%+4) !" stop% print_on% *FX 21,3 !2ș "Wimp_ReportError", error_blk%, 1, Printer$ !endconfirm ! stop% ! print_on% stop_printing "2 in_file% ș"XOS_Find",0,in_file%:in_file%=0 "D out_file% EscOn:ș"XOS_Find",0,out_file%:out_file%=0:EscOff " "$ ".: "8zero_terminate(S%) "BS%?$S% = 0 "L "V: "`ݤlowercase(S$) "j R$, C% "t R$="" "~ ȕ S$>0 " C% = S$,1) " S$ = S$,S$-1) "2 C%>="A" C%<="Z" C% = C% - "A" + "a" " R$ += C% " "=R$ ": " stamp " load% " " "'ș "OS_File",5,file_name% ,,load% #S (load%>>>8) <> &FFF000 + OutputType% ș "OS_File",11,file_name%,OutputType% #  #: # EscOn #( *FX 229 #2 #<: #F EscOff #P *FX 229,1 #Z T!printerps, UUUUUUUUUUUUUUUUUUUUUUUUUDDDDDDDDDDDDDDDDDDUUDDDUUDD|zDUUDLD|zDUUDLDDUUDDD\uUUDDDDDDDDDDDDDDDUUwpUUpUDDDDDDDDDDDDDUpUUpUDDDDDDDDDDDDDUpUUwpUUUUUUUUUUUUUUUUUwwPUfile_ff5<<?q1?1?1?111?1y0small_ff5 ,, wwwwwwwww@pwwwwwGpppwwDpppw@@wtppwwwwtppwtptw@DpwwwwDDpwwwwwwwww+`SerialRXIgnoreSerialRXIgnore 0.02 (06 Dec 1988)*SerialRXOn allows serial input to be entered into the serial input buffer, provided the receive process is enabled. Syntax: *SerialRXOn*SerialRXOff prevents serial input from entering the serial input buffer, even if the receive process is enabled. Syntax: *SerialRXOffSerialRXOnMSerialRXOffH@-0 h @-0 D s t@-@-_@-'11 3 >Library V.0.83 for PostScript printer driver @ Purpose: printer-specific parts of the printer application " Authors: A.Thompson, NReeves (: 2Printer_initialise < P% FPrinterClass$="PrinterPS" P"FullPrinterClass$="PostScript" ZOutputType%=&FF5 d@ define printer class dependent fields in printer data area n' prologue2_field% = p_field(4) x' manual_feed_field% = p_field(4) ' auto_feed_field% = p_field(4) ' printer_data_size% = p_field(0) 1 define class dependent icons in main window main_feed% = 2 main_auto% = 3 main_manual% = 4 main_portrait% = 6 main_landscape% = 7 main_title% = 8 printer_data_list% = 0:P%=0 Printer_read_config_file " now convert to circular list -P%!list_pointer_field%=printer_data_list%  : Printer_set_initial_state " D% , set default state 6D%=printer_data_list% @]ȕ D%!list_pointer_field%<>printer_data_list% D%!printer_number_field%<>printer_config% J D%=D%!list_pointer_field% T ^F D%!printer_number_field%=printer_config% printer_data_list%=D% hPrinter_set_description rPrinter_set_module_data | : Printer_terminate M*if "" = ".PS!Scrap" then unset Printer$Scrap J*if "" = ".PS!Temp" then unset Printer$Temp  : no tidying up necessary : Printer_load_templates Printer_set_feed Hset_icon_state(main%, main_portrait%, (1-format_new%) << 21, 1<<21) Eset_icon_state(main%, main_landscape%, format_new% << 21, 1<<21) @set_icon_state(main%, main_title%, title_new% << 21, 1<<21)  : (ݤPrinter_process_event(action%, E%)  res%  res%= &Ȏ action% 0 17,18: : Ȏ E%!16 D &502: N E%!32 = main% E%!36 >= -1 helpreply("Printer setup.|MClick SELECT or ADJUST to alter the settings.",E%!8,E%!4):res% = X b 6 l# E%!12=main% print_on% v Ȏ  (E%!8 %101)<>0:  Ȏ E%!16  main_description%:  E%!8 1 % res% = printer_data_list% I printer_data_list% = printer_data_list%!list_pointer_field% ; printer_data_list%!list_pointer_field% = res%  G printer_data_list% = printer_data_list%!list_pointer_field%  # Printer_set_description # Printer_set_module_data B printer_new% = printer_data_list%!printer_number_field%  res%=   main_auto%  feed_new%=0   Printer_set_feed * main_manual% 4 feed_new%=1 > Printer_set_feed H main_portrait% R? set_icon_state(main%, main_portrait%, 1<<21, 1<<21) \ format_new%=0 f main_landscape% p@ set_icon_state(main%, main_landscape%, 1<<21, 1<<21) z format_new%=1  main_title%  !q%=main%  q%!4=main_title% % ș "Wimp_GetIconState",,q% ) title_new% = (q%!24 >> 21) 1      =res% : Printer_read_config_file  H%,ptr% " defaults% printer_data_size% printer_data% = defaults% H%=".PrData" $/ H%=0 100,"Can't read printer data file" . 8 ptr% = #H% B Printer_process_line(H%) L #H% V#H% ` j: tPrinter_process_line(H%) ~ I%,J%,tag$ $buf%=#H% I%=0 #ȕ tagchar(buf%?I%): I% += 1:  buf%?I% = ":"  got a tag  tag$=lowercase($buf%,I%))  I% += 1  ȕ buf%?I%=" ": I% += 1:  Ȏ tag$  "printer_name"  build a name  tag$=$(buf%+I%),40)  description% tag$ +1   $description% = tag$ ; now add a block to our list of printer data blocks ) printer_data% printer_data_size% (( I%=0 printer_data_size%-4 4 2' printer_data%!I% = defaults%!I% < F6 printer_data%!description_field% = description% P P%=0 Z* printer_data_list% = printer_data% d n. P%!list_pointer_field% = printer_data% x  P% = printer_data%  "pxres","pyres","features","pxres_halftone","pyres_halftone","printer_number","page_width","page_height","page_bottom","page_top","page_left","page_right" H note that all tags are the same as their respective field names 0 printer_data%!(tag$+"_field%") = read G "prologue2","manual_feed","auto_feed","server" : read a string  J% = I% ' ȕ buf%?J%>=" " buf%?J%<>";"  J% += 1  $ from I% to J% is the string  tag$="server"  server_ptr% = ptr% + I% - server_config$ = $buf%, I%+1, J%-I%)   description% J%-I%+1 , $description% = $buf%, I%+1, J%-I%) "6 printer_data%!(tag$+"_field%") = description% , 6 "printer" @ printer_config% = read J% printer_new% = printer_config% T printer_ptr% = ptr% + I% ^ "location" h location_config% = read r location_ptr% = ptr% + I% | "baud"  baud_config% = read  baud_ptr% = ptr% + I%  "data"  data_config% = read  data_ptr% = ptr% + I%  "xon"  XON_config% = read  XON_new% = XON_config%  XON_ptr% = ptr% + I%  "feed"  feed_config% = read  feed_new% = feed_config%  feed_ptr% = ptr% + I%  "format"  format_config% = read # format_new% = format_config% & format_ptr% = ptr% + I% 0 "title" : title_config% = read D! title_new% = title_config% N title_ptr% = ptr% + I% X b l v: 6ݤread=read_integer_expression($buf%,$buf%-I%)) : !ݤread_integer_expression(S$)  R%, T%, E$, P%  E$=""  get rid of any comment ȕ S$,1) <> ";" S$ <> 0  E$ += S$,1)  S$ = S$,S$-1)  6ș"XOS_EvaluateExpression",E$,buf%,256 ,T%,R%;P% @ T% <> 0 (P% 1) 100, "Integer value needed for "+tag$ =R% :  ݤtagchar(C%) $ (C% >= "A" C% <= "Z") =  $ (C% >= "a" C% <= "z") = *,= (C% >= "0" C% <= "9") C% = "_" 4: >Printer_set_module_data H A%,B%,C%,D%,E%,F% RA%=defaults%!pxres_field% \B%=defaults%!pyres_field% f C%=defaults%!features_field% p&D%=defaults%!pxres_halftone_field% z&E%=defaults%!pyres_halftone_field% &F%=defaults%!printer_number_field% ,ș "PDriver_SetInfo",,A%,B%,C%,,D%,E%,F%  msg%!0=20  msg%!12=0 msg%!16=Message_SetPrinter% &ș "Wimp_SendMessage", 18, msg%, 0 "A%=defaults%!page_width_field% #B%=defaults%!page_height_field% !C%=defaults%!page_left_field% #D%=defaults%!page_bottom_field% "E%=defaults%!page_right_field%  F%=defaults%!page_top_field% /ș "PDriver_SetPageSize",,A%,B%,C%,D%,E%,F% (("Set PDriver$PSprologue PSprolog") ?("Set PDriver$PSprologue2 "+$(defaults%!prologue2_field%)) Printer_set_feed $ .: 8 Printer_set_feed BBset_icon_state(main%, main_auto%, (1-feed_new%) << 21, 1<<21) L@set_icon_state(main%, main_manual%, feed_new% << 21, 1<<21) V feed_new%=1 `E ("Set PDriver$PSextra """+$(defaults%!manual_feed_field%)+"""") j tC ("Set PDriver$PSextra """+$(defaults%!auto_feed_field%)+"""") ~  : Printer_set_description S%, S$ ' S% = 0 printer_data_size%-4 4 (defaults%!S% = printer_data_list%!S%  HPrinter_set_icon(main_description%,$(defaults%!description_field%)) S% = 1<<23 1<<7 e ($(printer_data_list%!manual_feed_field%)) = 0 ($(printer_data_list%!auto_feed_field%))=0 , set_icon_state(main%,main_feed%,S%,S%) , set_icon_state(main%,main_auto%,S%,S%) . set_icon_state(main%,main_manual%,S%,S%)  + set_icon_state(main%,main_feed%,0,S%) + set_icon_state(main%,main_auto%,0,S%) (- set_icon_state(main%,main_manual%,0,S%) 2 feed_new%  #out_file%=feed_ptr%  #out_file%,feed_new%;  feed_config% = feed_new%  % format_config% <> format_new% " #out_file%=format_ptr% , #out_file%,format_new%; 6! format_config% = format_new% @ J# title_config% <> title_new% T #out_file%=title_ptr% ^ #out_file%,title_new%; h title_config% = title_new% r | :  Printer_Ignore +*RMEnsure 0 RMLOAD .Ignore  :  Printer_XonXoff(flag%) flag%  *SerialRXOff *fx 2,2  *fx 2,0  *SerialRXOn   :  Printer_Header &4 D%,A$,edge%,pl%,pr%,pb%,pt%,ph%,width%,height% 0`ext%=#in_file% : Ftype%=OutputType% D +0 N EscOn X b A$ l A$<>"" #out_file%,A$ v A$="" edge%=50 D%=printer_data_list% -pl%=D%!page_left_field% 100 + 1 + edge% *pr%=D%!page_right_field% 100 - edge% /pb%=D%!page_bottom_field% 100 + 1 + edge% (pt%=D%!page_top_field% 100 - edge%  format_new%=0 . #out_file%,"0 100 /Courier 2 SetUpFonts"  width%=60  height%=110  title_new% pt%-=150  ph%=pt%-pb% `xc%=(pr%-pl%) width% - 1 > #out_file%,"/Format{"+(pl%)+" "+(pt%)+" translate}def"  - #out_file%,"0 70 /Courier 2 SetUpFonts"  width%=42 * height%=80 4 title_new% pl%+=150 > ph%=pr%-pl% H$ `xc%=(pt%-pb%) width% 2 - 2 RI #out_file%,"/Format{90 rotate "+(pb%)+" "+(-pl%)+" translate}def" \ fF#out_file%,"/L{"+width%+" mul exch -"+height%+" mul moveto}def" p feed_new%=1 z0 #out_file%,$(defaults%!manual_feed_field%)  . #out_file%,$(defaults%!auto_feed_field%)  `yc%=ph% height% `page%=0 `column%=3 `y%=1 ,?error_blk%=3:ș "OS_Word",14,error_blk% Bș "OS_ConvertStandardDateAndTime",error_blk%,error_blk%+5,250 `time$=rtoz(error_blk%+5) #out_file%,"%%EndProlog" D%=`xc%*2+17 # bufsz%OutputType% V ` A$ j A$<>"" #out_file%,A$ t A$="" ~$ #out_file%,"%%Pages: "+`page%  #out_file%,4  EscOff  :  Printer_Send(len%)  EscOn  L%,flag%  flag%=  Ftype%=OutputType%  L%=`ext% - #in_file%  flag%=(len%>=L%)  flag%  ) ș "OS_GBPB", 4, in_file%, buf%, L% * ș "OS_GBPB", 2, out_file%, buf%, L%  (+ ș "OS_GBPB", 4, in_file%, buf%, len% 2, ș "OS_GBPB", 2, out_file%, buf%, len% < F P L%=$(`text%) Z4 L%=0 flag%=Line:L%=$(`text%): flag% len%=0 d len%32 `x%=`xc% #in_file%  #in_file%=#in_file%-1  "6 $`text%=`y%+" "+(`x%+`column%*(`xc%+2))+" L (" , `text%+=$`text% 6 #in_file% @ J C%=#in_file% T6 C%=40 C%=41 C%=92 ?`text%=92:`text%+=1 ^8 C%>=32 C%<>127 ?`text%=C%:`text%+=1:`x%+=1 h. C%=10 C%=12 `x%=`xc% #in_file% r | `x%=`xc%  P%=#in_file%  C%=0 ; ȕ #in_file% (C%<32 C%=127) C%<>10 C%<>12  C%=#in_file%  1 C%>=32 C%<>127 $`text%="|":`text%+=1  #in_file%=P%   $`text%=")T"+10  `text%=buf%  `y%+=1 " `y%>`yc% `y%=1:`column%+=1 L #in_file% (format_new%=0 `column%=1) C%=12 `y%=1:`column%=2  `column%=2:  $`text%="EndPage"+10  `column%=3 & #in_file% `column%=4 0 `column%=3: : `page%+=1 DX $`text%="%%Page: "+`page%+" "+`page%+10+"StartPage Format"+10+title+"0 F"+10 N `column%=0 X `column%=4: b flag%= l v = flag% :  title  name$ ^ filenam$="" filenam$="Printer$Temp" name$=save_name$ name$=filenam$  title_new% L = "1 F -.5 0 L (Page "+`page%+" File "+name$+" Date "+`time$+")T "   = ""  :  "%!PS-Adobe-1.0" . "%%DocumentFonts: Courier, Courier-Bold"  "%%Pages: (atend)"  "%%EndComments"   "save/PrintJob exch def"  "/$print 20 dict def"  , "/StartPrintDoc{$print begin}bind def" * "StartPrintDoc" 4! "/EndPrintDoc{end}bind def" >( "/F{$fd exch get setfont}bind def" H. "/L{42 mul exch -80 mul moveto}bind def" R "/T/show load def" \7 "/StartPage{/svpg save def .1 dup scale}bind def" f/ "/EndPage{showpage svpg restore}bind def" p "/SetUpFonts" z " {dup/$fd exch array def" B " {findfont exch scalefont $fd 3 1 roll put}repeat}bind def"  "/#copies 1 def"  "1 100 /Courier-Bold"  "" :  "%%Trailer"  "EndPrintDoc"  "PrintJob restore"  "" L08@tPDriverPrinter driver 1.06 (20 Dec 1988) - for PostScript printers[ 0<<Su SWI not knownPDriverInfoSetInfoCheckFeaturesPageSizeSetPageSizeSelectJobCurrentJobFontSWIEndJobAbortJobResetGiveRectangleDrawPageGetRectangleCancelJobScreenDumpEnumerateJobsSetPrinter@- Rh0h  a@ 0#R,4 0@$H { qsHr$PDriver$Dir%.PDriverDir@- _@-><>@- - : 2< p-h.@-WQ FQ 'Q-O [ - - : 0 @- R s ud 0@1 Lj@PostScript@-* (@u@$p@s@$p rxH-2( T  R 18d~@-8~_~L- P~-Za ? @z/ .jA  0@ ~L~8~d~ <3^{jK{/Q:{{(1u{suu? {z-0v-: g %  _   ~dL-Rb{j^_ {P{j P ekdL-:,bj ?j P TdRequested print job doesn't existPage currently being printedL-[ 0z 2dO- Z_o{"jPUO_j -40qd jPP P>P@pGH `,`$kNo current print jobO- Z0O_={Fj@TUO_>jP _9 {Invalid number of copies requestedNot printing a pageO- ZO_{$jPDO_{ {(j0s0@P`xJ{su {susuuuj{suukL-*Obj _dPrint cancelled L-_vu;Ob This printer driver cannot do screen dumps @- 2!!8 @ /! @-@-,1rxqurxqud  @- @-0 1A[0 @-hs s s 0srx@su{d?@-`a 0 0@P @P?_?0  00@-{s u tA/KrB- Y  zЍ@-? L- 0L- 0p3> : >\\\\\\\\tPPPPhh(@tXp0O%J1(B(C8@|@0 0  B 0C@D PE`F pG^ Kqqj_〃뀃horizontal line fillsflood fillsblock copy/movesundefined plotsfont and sprite VDU sequencesNo sprite selected in this print job~@- |0@`QR&S5TF&5F|~A(A| @-@P@-AQ$"4#%"5# _L- |jjX*!{ x:k̽u7kx̽unknown ColourV reason codesrA-` 5"_#"j0RUc6`1`plv U ` %/ TpWdBad MODE(h 000@P` p00@P `00p@@PP` `p0p@- @a-@q@- @- @a-㴐@ mqk@-   @- h~- -0pph- 0 {(1u {~@-8 8L 8G^ - j o Draw_ProcessPath plotting calls- +j b {&j#!j >@<  bjfr@- the requested fill styles 5 kν1@-0P- Q /jU * {*j'W%j 4 @< JB><?  b7 kνB- Y2?Y3#82 7 ½(BGKty|]2  L- j unknown OS_SpriteOp reason codesL- j the requested OS_SpriteOp reason code P*L- j kH-0@-`p O- j { jP|0 @0C @Dn k O- j  { jP|0 @0C @DZ o k H-0@@-`@O- j a {j- |rx0p @prx0Cp @Dpi{ K kH-P0 *@^P^ dȽ- duunrp!parurdȽ@-@_說@-X X X= X - 4 j8 {{E  k>@-KO>r% A~  + @u# {@0uq  {q ~  jr ~(~  >hs(1 >- -j {(j @PKo^aP@@0 AppgB $% $%  $% S  BpW k@- )^ࠑ^YI ^*-[ z- j {-0sd{j - 0q@q j `- Pq`qq qpqq q qqqj-0Cp@DpPEp`FppGpHpIpJpjP-"2 @RjtP4P) TPG`HPE`F/?P%`&^ࠑ^pUPE p^*^ࠑ^V`F ^*p7P%P@8`&`@|uF {ug {jv j 0@t` V* ^Y* > > >$ >* >1 >B >D >G ; xthe requested Font_Paint control sequence >N 0^  0 0zO 0 t t0t(q$q,q {0t(1u {z< ^*FP ^P"W!*1P-"s2s@sdjP@`PP@D`F @D`F0 j`tjXdP`q6s?0J c kd/@-TP@`P/P@$a&|xP^ࠑ^ P@  ^*^ࠑ^0QA 0^*@`/?@-? ??8? 0#R 0@$j 0#R 0@$j 0#R 0@$u s0s@syrxd?<,,(( C@V PDriver$PSprologuePSprologPDriver$PSprologue2PSprolog2PDriver$PSextra-!O @8Printer driver not configured for colour outputThis printer driver lacks the requested features@-(@?;{d@ !"4!!!"8!"!".@-~%!PS-Adobe-1.0 wj%%Creator: PostScript printer driver 1.06 jj %%CreationDate: [j Xj1 %%Title: Qj - ^0d Ij FjWO 0@#2  j,00 00bO B b0@#2  QQ00%%For: %j - ^0d j j%%Pages: (atend) jO{Or{jj j%%EndProlog d@-O 'Gj2E 00L ?j,5* 3j7* 0 %0 `,j *j.*%0 Y%j 0  j$* 0 %0!0P%jIj j*Dj 0  j* 0:j j* 0 _ d@-+%%Trailer j&%%Pages: jnj j-djdB-  %%Page: #j -! ]0 j?j j Dj? j jPDdict begin jjPS dx@- 9 Jj98 pDj,4-d8jMP 5j-d/jMP T +jx$x-d j-djUM j xx0@ jCopies jshowpage {jend s@-jMC d@-$jCP fill @- jjjoCp d @-0!(!4!M0.a. @-T!Q -d jKG !Q j@C @-T 1P QR-  $ 0@a&x pWpgB&|pWpgB(&t pWpgB`ᖇ(T@P0S@-NjLi @-[jPt d@-IjTr @-9jRc @-=jPr @-EjCS @-?jCF @-CjAc @-=jCd @-7jSc @-?jES @-9jEF @-CP fill @-j d@-jjd@-jBCd@-jBCjDEd@-DjBCjd@-W{ju0 LW St f{@-M}{j ieojffill X{@-{@-QՕ!Q -p0qs us0Cr xpqtq u#{{7{ q2s{-{N{ j-dj0LW St "{d@-{{j%0 LW St {@-&j2 -jdjQ|@@A B-dd jT DM j3<-OdjDF C-0 R)-%S!: z"S:%x#{x{zS j0S z S0 zC_S C-0 R)-%S!: z"S:x{x{zS j0S z S0 z(_S  Bad path element Path elements out of order@O0O_C-@C-@ pW 220A2R2AP  A120AP2 P``AppG"ij63`UKz6Pzdxb{xX{z@6@-[ j1  0-QdjQ] j-Edjsetdash @- !$ -=dj-.djCJ @-Cl ,_#@-Cl fill ,_#@-jM ,_#@- jL ,_#@-jB ,_#@- dC-'j-d jT rqs(s.j34 5Cr{jUP-@Yhj @T0SndC-X#j-djfT qs(s.j34 C{jUP-@Yhj @T0S?d@-Yx0@P` 5Rqq u2q uBq s5j-dj-d j$SS j"-qdjSM d\5Y?@-@y.8u, r0s@q@Ps.$u.Fs r.!ud?tmp C-0C @D8-0c@d-52qs5Bqd(j-y!0.rxdj"P.j8 -y!0.ds1s.-.d@_8q s52qRq s5`qau{{jwjT tj @L;$ S* $~~fn(∆-I@A- 0( |(|qYpZpYķpZķr&s6Z Y # T?  S R%-?p("Y.,.$b! ^pPS0j E_ 5PE0 jPE 5PEUKj1dC-0C @D8 8-0c@d-52qs5Bqdj-y!0.rxds1s.-.d@_8q s52qRq s5`qau{j\jT j$~fn 0@p-I@-p T @ S 0 R Q ~Z YS[ -)dSjT Pj@ D C9- dBj7= S1 =j-A4NA_㉐+ j4FQډ:j ,_#!j @ R 52qRq s5`qaur{jjT j5^- djwSF j{d=B-W{j#,#Dp#8-dj`T j0G0D9- djPSF C{B-3{JjPE%Q#,#Dp#8-d<j:T 9j@A0G0D9- d*j(S1 'j -1q3>7~1q( (^+ j 367vRډ: j ,_# j @ A0Sd@-i- 5d)qsB-5N- Hd'jSN $j !@1(Wʳn@T ,_#j @-d j 36R ,_#j @ AYd@-EW!!TR@- 13 AK0 1 3 @-(\177) j-djj0 0 V @- 1Sw@-AK OPQ*a'zAKP*j  jjjiV s udw@-   R0@-jNDC js j  j R@ j d@-|P{j-dj$TS @-88d urx8@-l@@@-"@A-dR T@R T@TXڏj-Dd j-=djBx fill j_C-X 0^SY @xU0 r-j/j P:*0 j j- djFn r3jY{G{/j HI- d$j-dj -djj1 @ j|Uj wJjtTx d@-@- "@-@-"$2@-!@-!~~_@-@ 0`( $j PU!DR:\  s  s,_#j0~S  \ #p 0sp 80sp\3(3)3\  q r z)s  s d@-S @-GS uttu@- R @-GR uNru@-  - #P z13@- @P@U zd3g@- P R`@V zdg@-Qd@-,'j B"0}@d@-  0  rw d0123456789ABCDEF@-,(z@-,(j  @-q{d@- q q{! q{d@->,K0>0SAK> S3" B"(2 K2>K_... (print cancelled)@-^AK_@- uss sux@- su s~sjQ_dEscape@-l $K  AK_Printer drivers cannot handle R0S0 R>PrData *** Postscript printer configuration *** Defaults ======== Default resolutions pxres: 300 ; dots per inch pyres: 300 pxres_halftone: 40 pyres_halftone: 40 features: 16_02000000 ; supports arbitrary transformation Define page size page_width: 594960 page_height: 841920 Define visible area page_bottom: 22080 page_top: 819840 page_left: 17280 page_right: 577680 ;printer class specific options prologue2: PSprolog2 manual_feed: ; default no manual feed option auto_feed: Real printer definitions ======================== printer_name: Apple LaserWriter, A4 paper printer_number: 0 auto_feed: statusdict /manualfeed false put manual_feed: statusdict /manualfeed true put printer_name: Apple LaserWriter, B5 paper printer_number: 1 page_width: 498960 page_height: 708480 page_bottom: 3120 page_top: 705600 page_left: 2640 page_right: 497760 auto_feed: statusdict /manualfeed false put manual_feed: statusdict /manualfeed true put Configured options ================== printer: 00 ;printer number - pad to two chars with 0 location: 4 ;1 - parallel, 2 - serial, 4 - net baud: 6 ; 0 - 75, 1 - 150, 2 - 300 , 3 - 1200 ; 4 - 2400, 5 - 4800, 6 - 9600 , 7 - 19200 ; 8 - 50, 9 - 110, 10 - 134.5, 11 - 600 ;12 - 1800, 13 - 3600, 14 - 7200 data: &20 ;serial data format - pad to two chars with 0 ;b0-b1 0,1,2,3 => 8,7,6,5 bits ;b2 0=>1 stop bit, 1=>2 stop bits OR 1.5 stop bits if 5 bits ;without parity, OR 1 stop bit if 8 bits with parity ;b3 0/1 => parity off/on ;b4-b5 0,1,2,3 => parity odd, even, 1 on Tx, 0 on Tx xon: 1 ;XON/XOFF 0 off 1 on server: 0.235;;; either [.] eg `235;;;;;` or `123.235;` ;or up to 6 char name eg `blue;;;;` or `yellow;;` ;must be padded to 8 chars with ; in either case feed: 0 ;0 - automatic, 1 - manual format: 0 ;0 - portrait, 1 - landscape title: 0 ;0 - no title, 1 - title % > . % User-editable prologue definitions for the PostScript printer driver % module. % Version 1.03, first used with version 1.05 of the module. %%DocumentFonts: Courier Courier-Oblique Courier-Bold %%+ Courier-BoldOblique Helvetica Helvetica-Oblique Helvetica-Bold %%+ Helvetica-BoldOblique Times-Roman Times-Italic Times-Bold %%+ Times-BoldItalic %%EndComments % If you add further fonts to the '%%DocumentFonts' and '%%+" comments % above, make certain that you keep strictly to the format above - in % particular, all names are case-sensitive, exactly one space should % appear between the start of the comment and the first font name on % the line, exactly one space should appear between font names, and % there should no surplus spaces at the ends of lines. % Note also that all PostScript font names quoted in the font % translation data at the bottom of this file should appear in these % comments. % Note for advanced users: the printer driver module will remove % PostScript comments from this file when copying it into the PostScript % output (to avoid excessive amounts of output) according to the % following simple algorithm: % (a) If a line starts with "%%" or "%!", it is copied without any % changes. % (b) If a line starts with a "%" and does not start with "%%" or % "%!", the whole line is removed, including the new line at the % end of it. % (c) If a "%" appears anywhere else in a line that does not start % with "%%" or "%!", it and all characters up to but not including % the following new line are removed. % In the unlikely event that you wish to add some PostScript containing % e.g. a string with a "%" in it, use the "\045" escape sequence % instead. % The printer driver will also compress multiple new lines down to % one when copying this file. % The following chunk of PostScript defines the ISO 8859-1 Latin 1 % mapping of character codes to PostScript character names. It can be % edited if necessary to produce other encodings or to add characters % in the range 128-159. Note that PostScript character names are case- % sensitive. /Latin1Enc [ /.notdef /.notdef /.notdef /.notdef % Codes 0-31 (not used) /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign % Codes 32-63 /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C % Codes 64-95 /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /circumflex /underscore /grave /a /b /c % Codes 96-127 /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /tilde /.notdef % NB code 127 is unused /.notdef /.notdef /.notdef /.notdef % Codes 128-159 (redefinable) /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclamdown /cent /sterling % Codes 160-191 /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /ring /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde % Codes 192-223 /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde % Codes 224-255 /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def % Unless you really know what you are doing, do not edit the following % PostScript, except for the indicated possible change. /fonts 200 dict def /PopCh {pop} bind def /RemCh {Encoding exch /.notdef put} bind def /ChkCh { dup Encoding exch get CharStrings exch known /PopCh load /RemCh load ifelse } bind def /FF { findfont begin currentdict dup maxlength dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding Latin1Enc 256 array copy def % Possible change: Delete or comment out the following line if you don't % want undefined PostScript characters to be ignored. 0 1 255 /ChkCh load for dup currentdict end end definefont fonts 3 1 roll put } bind def % The font translation data follows. You can install further % translations by adding lines of the form: % / / FF % Note that all names are case-sensitive. Also note that you should % add any additional PostScript font names that appear here to the % '%%DocumentFonts' comment at the head of this file. % This line will take a copy of the PostScript font specified, copy % the Latin 1 encoding into it to get the right mapping of character % codes to characters and install the result as a new font whose name % is the RISC OS font name. In addition, it checks that all of the % characters named in the encoding vector exist in the font: any that % don't are removed (i.e. replaced by '/.notdef') from the new font's % encoding. /Corpus.Medium /Courier FF /Corpus.Medium.Oblique /Courier-Oblique FF /Corpus.Bold /Courier-Bold FF /Corpus.Bold.Oblique /Courier-BoldOblique FF /Homerton.Medium /Helvetica FF /Homerton.Medium.Oblique /Helvetica-Oblique FF /Homerton.Bold /Helvetica-Bold FF /Homerton.Bold.Oblique /Helvetica-BoldOblique FF /Trinity.Medium /Times-Roman FF /Trinity.Medium.Italic /Times-Italic FF /Trinity.Bold /Times-Bold FF /Trinity.Bold.Italic /Times-BoldItalic FF % > . % Main prologue file for the PostScript printer driver module. % Version 1.02, first used with version 1.02 of the module. % (compressed version) /PDdict 200 dict def PDdict begin/LW/setlinewidth load def/St/stroke load def/T/translate load def/S/save load def/R/restore load def/GS/gsave load def/GR/grestore load def/CP/clippath load def/Cl/closepath load def/M/moveto load def/L/lineto load def/B/curveto load def/PS{72 180 div dup scale newpath[]0 setdash}bind def/Copies{/#copies exch def}bind def/MP{400 div}bind def/Fb{16#10000 div}bind def/WM1 matrix def/WM2 matrix def/UM{Fb 4 1 roll Fb 4 1 roll Fb 4 1 roll Fb 4 1 roll 0 0 WM1 astore concat}bind def/Bx{4 copy 5 1 roll 4 2 roll 5 -1 roll M L L L Cl}bind def/Cp{Bx clip newpath}bind def/MC{initclip 0 0 Cp}bind def/G{255 div setgray}bind def/C{255 div 3 1 roll 255 div 3 1 roll 255 div 3 1 roll setrgbcolor}bind def/Eps 0.1 MP def/VSt{2 setlinecap 0 setlinejoin 2.000001 setmiterlimit 2 LW 0 Eps rlineto St}bind def/VFl{Cl GS fill GR VSt}bind def/Li{M L VSt}bind def/Pt{M VSt}bind def/Tr{M L L VFl}bind def/Rc{Bx VFl}bind def/Pr{6 copy M L L 5 -1 roll 4 -1 roll sub add 4 1 roll exch sub add exch L VFl}bind def/Ln{dup mul exch dup mul add sqrt}bind def/Cir{0 360 arc}bind def/VC{Ln Cir}bind def/CS{VC VSt}bind def/CF{VC VFl}bind def/VA{2 copy Ln 5 1 roll exch atan 3 1 roll exch atan arc}bind def/Ac{VA VSt}bind def/Cd{VA VFl}bind def/Sc{5 index 5 index M VA VFl}bind def/VE{0 5 1 roll WM1 astore WM2 currentmatrix exch concat 0 0 1 Cir setmatrix}bind def/ES{VE VSt}bind def/EF{VE VFl}bind def/Exch{exch}bind def/Max{2 copy lt/Exch load if pop}bind def/ExchPop{exch pop}bind def/Div{div}bind def/DF{WM1 currentmatrix aload pop pop pop 4 copy 4 -1 roll mul 3 1 roll mul sub abs 5 1 roll abs exch abs add 3 1 roll abs exch abs add Max dup 0 eq/ExchPop load/Div load ifelse 2 sqrt div mul 1 Max setflat}bind def/DM{256 div 6 1 roll 256 div 6 1 roll Fb 256 div 6 1 roll Fb 256 div 6 1 roll Fb 256 div 6 1 roll Fb 256 div 6 1 roll WM1 astore concat}bind def/CJ{Fb setmiterlimit setlinecap setlinejoin}bind def/WS 16#1000 string def/FFs 16#800 string def FFs 0putinterval FFs 16#8 FFs 0 16#8 getinterval putinterval FFs 16#10 FFs 0 16#10 getinterval putinterval FFs 16#20 FFs 0 16#20 getinterval putinterval FFs 16#40 FFs 0 16#40 getinterval putinterval FFs 16#80 FFs 0 16#80 getinterval putinterval FFs 16#100 FFs 0 16#100 getinterval putinterval FFs 16#200 FFs 0 16#200 getinterval putinterval FFs 16#400 FFs 0 16#400 getinterval putinterval/SMat matrix def/SS{div 3 1 roll div exch scale}bind def/SM{1 exch div 0 0 1 0 0 SMat astore pop}bind def/RetWS2{WS2}bind def/S1{currentfile WS 0 4 index 7 add 8 idiv 4 index mul getinterval readhexstring pop/WS2 exch def true SMat/RetWS2 load imagemask}bind def/SF{true SMat FFs 0 5 index 7 add 8 idiv 5 index mul getinterval imagemask}bind def/SN{currentfile WS 0 4 index 4 index mul getinterval readhexstring pop/WS2 exch def 8 SMat/RetWS2 load image}bind def/TS{1 exch div exch 1 exch div exch scale}bind def/Fn{16 div 1000 mul exch 16 div 1000 mul exch dup/fheight exch def 0 0 3 -1 roll 0 0 WM1 astore fonts 3 -1 roll get exch makefont setfont}bind def/Ul{GS 2 copy Ln ulpos ulthick 2 div sub 256 div fheight mul exch div dup 2 index neg mul exch 3 index mul rmoveto 2 copy rlineto ulthick 256 div fheight mul LW 0 setlinecap St GR}bind def/AC{3 -1 roll exch sub 3 index length div 4 1 roll sub 1 index length div 3 1 roll}bind def/Tx{M 2 index stringwidth AC ashow}bind def/JTx{/spaces exch def/Ydef exch def/Xdef exch def M 2 index stringwidth Ydef add exch Xdef add exch AC Xdef spaces div Ydef spaces div 32 6 3 roll awidthshow}bind def/UTx{/ulthick exch def/ulpos exch def M Ul 2 index stringwidth AC ashow}bind def/UJTx{/ulthick exch def/ulpos exch def/spaces exch def/Ydef exch def/Xdef exch def M Ul 2 index stringwidth Ydef add exch Xdef add exch AC Xdef spaces div Ydef spaces div 32 6 3 roll awidthshow}bind def/cdefs 224 8 mul string def cdefs 127 32 sub 8 mul FFs 0 8 getinterval putinterval/DC{32 sub 8 mul cdefs exch 8 getinterval currentfile exch readhexstring pop pop}bind def/ArcFont dup 6 dict dup begin/FontMatrix[1 0 0 1 0 -1]def/FontType 3 def/FontBBox[0 0 1 1]def/Encoding 256 array def 0 1 255{Encoding exch/.notdef put}for/BuildChar{xgap ygap setcharwidth 8 8 true 8 0 0 8 0 0 WM2 astore 5 -1 roll 32 sub 8 mul cdefs exch 8 getinterval imagemask pop}bind def end definefont fonts 3 1 roll put/V{GS 2 index div/ygap exch def 2 index div/xgap exch def 0 0 3 -1 roll 0 0 WM1 astore fonts/ArcFont get exch makefont setfont moveto show GR}bind def end This is PrinterPS, version 0.83 (04-Jan-89) Documentation on how to use PrinterPS can be found in Edition 2 of the Archimedes User Guide. The following remarks should be noted about this version of PrinterPS and its documentation. Text printing is applied to files of types Text, Command, Obey, and PoScript. For anything else, the application checks if other applications know how to print the file. If this fails it checks with the user whether to print the file. You can override the application's treatment of a particular type file by setting system variables of the form Alias$@PrinterType_xxx, where xxx is the appropriate type. If the variable exists, then the application performs *@PrinterType_xxx before doing anything else. It then checks for the existence of . If this exists then it is printed. You can therefore print via a print utility program by setting Alias$@PrintType_FFF to the macro *PrintUtil <%0> -to . If the result of this operation is textual PostScript then you should set the type of to PoScript in the macro or application. Clicking SELECT on the PrinterPS icon produces a window with data about the current printer driver settings. Clicking on the name field steps through the printers and page sizes enumerated in the file PrData. Manual feed can also be selected, and simple options set that apply to text printing. If the output is to the serial line and XON/XOFF protocols are being used then a small module, SerialRxIgnore, is loaded and used to discard incoming characters (except XON/XOFF control characters). The following remarks should be noted about this version of the printer driver module and its documentation. For each RISC OS font used, the printer driver needs to be told which PostScript font to use in its place. Near the end of the file !PrinterPS.PSprolog is a list of the font translations used. This can be added to or modified by the user as desired - usually, you should add a suitable translation for each new font you acquire. It is a good idea to ensure that the PostScript font you use has similar metrics to the RISC OS font: the PostScript code used for text printing will compensate automatically for differences between the metrics of the two fonts, but the results are likely to be ugly if these differences are too large. The file !PrinterPS.PSprolog also contains a PostScript encoding vector (which says what actual character corresponds to each character code). This has been chosen to conform with the ISO 8859-1 Latin 1 alphabet as far as possible, though there are some ambiguities (e.g. character code &2D is defined in the ISO standard to be hyphen or minus, which are usually two different characters in PostScript fonts). This encoding vector can be edited if necessary - but make sure you know what you are doing. Not all PostScript fonts contain all the characters in the Latin 1 encoding vector. The PostScript code in !PrinterPS.PSprolog is set up to ignore any character that you try to print if it doesn't appear in the PostScript font being used. If you would prefer a PostScript error to be generated instead, there is a documented single line change you can make to !PrinterPS.PSprolog to achieve this effect. Printing RISC OS sprites to PostScript is a rather complicated business and always generates quite a lot of PostScript output. It may also take quite a long time to print. Under some circumstances (particularly if there are a lot of colours in the sprite and/or if the sprite is to occupy a large amount of space on the printed page), the time taken by the printer and/or the application to print the sprite may become quite large (of the order of several minutes or even more). Do not worry unduly about this. %! > SetupLaser - Set up a LaserWriter for use as a printer for Archimedes serverdict begin 0 exitserver statusdict begin 25 9600 3 setsccbatch % Change to no parity on rs423 (LaserWriter Plus "Test") setprintername \confirm s thNmain he relehinfo to play2HPR  89=0Confirm > e ,aJDp=YES itled> Dp=NO titled> ? L40 $\ X =0x `Printer: > X=a)`Paper feed: ! ,| Hxa Hx"  *Ht' <9@ PostScript Printer Driver 0123456789012345678901234567890123456789 auto feed Sradiooff,radioon manual feed Sradiooff,radioon Text format: portrait Sradiooff,radioon landscape Sradiooff,radioon Title: Soptoff,opton DF 8\ =0X0Name: led> P0=kPurpose: > P=u Author: d> P=dVersion: > dP=About this program PrinterPS Postscript printer manager Acorn Computers 0.83 (04-Jan-89) | !Boot file for !System IconSprites .!Sprites if "" = "" then Set System$Path . if "" = "" then Set Wimp$Scrap .ScrapFile | !Run file for !System, version 0.43 (13-Dec-88) IconSprites .!Sprites Set System$Path . Set Wimp$Scrap .ScrapFile !system, pwwwwwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwOsm!system , 33333333swww333swwwwwww xw w w wwwwwwwwwP$3TSharedCLibraryC Library 1.02 (07 Dec 1988)O- 7뀏@-?UC^NIP U@A`S`VAPU`@PUPQ, ^-@T@R AA! PBQ0C BUUPS aT0SP@@Not enough memory for C libraryUnknown library chunkLibrary stub corruptStatic data size in library and stub disagreeStatic data offset not the same for all library chunks\]Ti0p\ԇ؇؆܆ԆĆ,@\l܇D@T p0 <=H@AAAH3,4d5566T77d89d98::99:<;; 4< $ h D0`1hx211Pȫ 222D38\0/t!.D#T"H|LXDx&,'hH'h$(h*t+\/d,/+/pl h   4L@0XP$@ddܻ$Hlܼ,C202 p@,2"@PൟP@, ! @pP@, ! @PPP PP\%P R!#PP@,,!P@" "!G@,@ടP!  H5P!444 P#P1  PP1 PP1 PP1 P P1  PP1@,u0P@0 L qbabQbAb"W" 33`0C0ڍxw@Z0P A Qaq$@@PP P0D0P qa Q Af2h2l2|,@, k2p@e2U2k2n2 ,@, m2@i2o2v2@20 0 .,,쀁,쀁,0 쀁p0  PZpT8刁刁H`, JP, J`,J@,0 쀁0 ,쀁,0 쀁0 ,0 쀁0 ,0  `0 0 H`q_alloc_die bad_size Over-large or -ve size requestGetStorageInfoNextHeapElement@, GetEventDataGetLastEventSetBlockFreeinit_bitmaps A"+Tiregister_gc_proc ,K0  <00t0SY Z px PQZbheap_checking_on_all_deallocates$dheap_checking_on_all_allocates hinternal_coalesce@,@@$a` [%#.8x %#.8x %#.8x %#.8x] PP  .Function name %s P  Pu unknown procedure %x `%0P P b %s procedure %s DP U S%P-Zanonymous %s procedure xisalnum8peisalphaiscntrl<>isdigith isgraph:islowerisprint>ispunctisspaceisupper@isxdigit htolower toupper @_set_ctype_88590〰 P 0PP PP00P P00 P  0 P_sysdie ,K \iL  Z*** fatal error in run time system: %.80s_assert_fail ,K \J0,(  P0  f TL`*** assertion failed: %s, file %s, line %d strerror ,K \'PZ PZ PZ P$Z @@-k ZNo error (errno = 0)EDOM - function argument out of rangeERANGE - function result not representableESIGNUM - illegal signal number to signal() or raise()iError code (errno) %d has no associated messageperror ,K \ A@R PP  ( PT %s: H`%s fp_round @, 0S5S5S 00S S00{9S00000SQ0 0AQfp_digits ,K \@, p0`P L 0,,Q [#  +1`Q0  *  6  !  b`0G0 0 Q,0C0 0  QL0C0 0 Q  Zfp_addexp ,K \$`@P@UPe-@+@U %0 @ 瀲` QEdU d%0 @ 瀰QE%0 @ 0A@pZfp_display ,,K \@P`p EPK ePI fP,C  - +㨏ȀXRhP `0`.`9 @`VF`PH`X.#XP  @P`0.P  @P`0.<HP]>`X`VA`P`FPPP.@P6 >`1FQFQ<FH.`P >`cP`PP.P`F,x  - +㨏ȀPP`+Xx.' fX PP.hP @P`P0P..P `FF0P F.P`F P@>`fPF 0@ ``>,  - +㨏ȀP@`P` .P>`0  `Zfprintf ,,K \>L0 QZDprintf ,,K \(L$(P0 8ZL`sprintf ,0,K \@,L(   0 PAQ @0Zvfprintf D1vprintf (l1 vsprintf ,K \p`P@(L (  p1  P AQ @ MZSunMonTueWedThuFriSatSundayMondayTuesdayWednesdayThursdayFridaySaturdayJanFebMarAprMayJunJulAugSepOctNovDecJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberAMPMindex_of  bQsetlocale ,K \M@P@8 0pp``TTZpftffU PT Z*PPT a@PT `PU*Q PU:ZC  P T  d @AZZfindweek ,K \BQ@QéZstrftime ,K \`Pp@LUZ P %P  Z Y:Z ZP MP BPM %P AP: )HPd IPi $WP SP UP XP YP mPl cP7 aP bP$ dP@ jPW pPk wP xP yP % Y#Z)pG f f f f0,0,0,0  %d.%d.%d %d:%d %.2d %.2d   v%.2d n%.3d f%.2d |_%.2d P R,g iL%.2d  ^A%.2d W:%.1d  L/%.2d0,0 B$%d.%d.%d0 8%d:%dd .%.2d/+%%d% Y:Z  Y!Z)P frexp,L A  @ldexp,L @ P !P  atan2 ,KalQlAl \Y, ,Ѽ ,AZ QZ aZZH`,4,0E,* ꡜ;#B !?-DT!-DTD, ݀ÀA$΄! @-DT! @-DTfabs,𰡀sinh ,KAl \,h@@- ! T  AZZ4g?`.?B.@9,)  A T _B ?t)>ځ!!1!1!1!!!!C|=DoAxdJc•y4SV[qɁW@^#@gcosh ,K \,( 4Z?`.?B.@9,AZ_B ?t)>,AZ??tanh ,KAl \=,@@#,@ T  AZZ;@?;? z@?@?ڀ!!1!1!A!CT |=(~uX\5ɩ/\@s@M<@NWfmod ,KQlAl \,Ѽ ,L  AZ QZZ 0,E,%  ʄڄ floor,L  B  @P 4PP  @0"0   &"R  0 0# 06#6 &"&  P  !?ceil,L  B  @P ?4PP  @0"0   &"R  0 0# 06#6 &"&  P ?modf,L  A  @P4P P @0Q!::!  printf_display ,,K \ 0@p(LP`$  gPP dP: EPJ GPH XPTePC fPO@pP iP( oPGuP# xPBP?  $ ` !Q1P. 0 ` Q P 0!A ` P 0$  ,0 (  `  p$P$@ P @@Pp @2/@P%PAQ  w @P  B R 0 b P  P@PPAQ  ? @P R W <P >P6$@$P@PAQ @ $@$P* @ P%PAQ @ @ P  B R 0  PpW3@PPAQ @ @PP`@P pAQ 0  `@P @@@PPAQ @ @PZ__vfprintf ,K \@P%Y AQ0  0 l  L` Y #Y +Y -Y````*Y ,  P``& 0Y`  pe00I 0 0Ppp.Y*Y,   h  00I 0 0P`lY LY `hY@`gYd cY! Ys EY\ GYZ XY dY; eYS fYQ pY iY1 nYa oY sYd uY xY ,pGL 0pGWAQ0 0 pGWAQ0  0   0`pGWAQ ` pGW PE , L, QpGL 0pGWAQ0 0\ pGWQAQ 0 ? Q  0`pGWAQ ` pGW,@ +n0123456789ABCDEF0X,@ +Z0123456789abcdef0x,  `  F0123456789abcdef@,  @ +30,  @ +',  @ @P`- + l, 0 (, 0 , 0 d Y Zno_fp_display_fprintf ,,K \L0 ZX_printf ,,K \L$(P0 ZL`_sprintf ,0,K \@,L(   0 PAQ @# 0Z_vfprintf H1_vsprintf ,K \kp`P@(L ( a p1  tP AQ @  Zch_val 00  0@ pe a@ 00A@ Prd_int ,,K \P@`LppAQ O xZ LY  +X -XLpAQ , IY30X1LIpAQ  YxX XXV VLIpAQ  `V`V `LIpAQ  YLPo Z &   `    @@  !AZcarefully_narrow 3,KAl \P,PP@L 0,,~P@ P @ 4, AZ0ZH`@gp A p[P[#:G@Gp@p ;Wp" !pG!R   Zmhypot ,KalQlAl \,Ѽ ,L,AZ QZ aZZ,0,,5 0,,0Q0, ,HQEAD,k?lrandL6<  01ఐ 1  B RAph  B Rslrand8  6T  81 k `` f7Q,FHdILtP@PPQQQQR$R0RDRPRpRRRRRRRT@TxVVWWdW`W8Y`ZpZZ[[xI#ށtYPp Sl  ‰B& 2좉02'1 MP`p＀0$$X JO\bMO__M1^\SO_YJOM_mS#_OW_M|_܀P!_OLP\?VOP\;YOP\7NP\3VY/> 0䀉bOP \&eOpP \"3@`U pWP P@PTN_!Q+_?`E`FFadd`aO'|< Y @  @Ȗ `UpW@TP"Rtl2S00SMXD$ABEXReturn code too largeNo main program ***Fatal Error: -MON-ON-SON -VON ^ Ѝ!|Q @M@Ѝ @-|< 00 "!R$ "!弰; T܂X ,;,@4М PI PF rNo stack for trap handlerk |&? 0vAD0A 90A<-0A v!: error , pc = : registers at 0` R0 7  0Sᤳ"&@,(`0p<4\Lp W QSpP R \P UU"\Xr P$`Uncaught trapTrap while in trap handlerTYO>ZP#^-Q | =X-_Oj' K PW @(T(Q @όp&['P&j'^ Ѝ@-O@ &['P&P Ѝ|? aO |'P& ἰ; T܂X,;,? & A?P~@Z?|?4М P) $P& 4А8?<,],]]W QSpP @XHp C,d P᠃C,鈐 0PRC㠃C,鼐 ,PC C,0S3 # @$+,;, P `p@5`FV Bt{@^ $E@@@5(5,50!$`(b#n\謑 ` P C,0 0C#144 , zksc sqsqs#cc #c c@,p| |#cc cp@,`<<cp ca[scC,8 e 0@A_b Y004OeO E_4,A_@|_EVY/>0  R 0,KP !1S0@#ksw0ZB,鈔 !1S, [ 0@$ksNot available, \[jKjPJHBUD  E? B0z1/ 0R*R @[ [  BR @ T TR T TR @ @ T T T "PUx T @R @@0ZNo env fileCan't allocate store to hold env file$Variable not found%Variable value too long&.Environ".Զ" P 3 1CS ! CB@P ඿ 0CS00 Lx xJ.#~x@Z@sj#ޅ蜐@ Th hJ. pJ#~h@Z,_j#ޅ[ ,[ @#G4( pJaL,4,PhP JT,q, @,R(#ލLU `[ ,@PqZ H,X0bU,#^MPU `WQ PX Pಕ[ R!, P@   `#MPQP HLC|<|K\ 0 Q1 R8* R0* R(* R * R* R* R* R 0:0Q0"A 0Q0"A 0Q0"A 0Q0"A 0Q0"A 0Q0"A 0Q0"A 0Q0"A R*@,   !A Q Ad `B+1⫰a 0R8* R0* R(* R * R* R* R* R 0:0Q0"A 0Q0"A 0Q0"A 0Q0"A 0Q0"A 0Q0"A 0Q0"A 0Q0"A R*`a@,aB   !A Q A[`BaBᄼ"|?_OP@8N<|Kl@ OP4  [$ 1@@@[\TiE,F,]H`<H`k(E@0p\@ BCISO8859-1pfpfpfpfpf<@DHLPTX`hp|  ,8<,;@f gi4=PȄOa@$zQW.z*cw|.W_i.knPrUű ro\"УQa퉟YYc0\PZ0/B^9{uX@>'٢i0݃A`V/2YJL{[@ASQ=l m̳+=%6VHtTPؕh@ r(w@wDw{`ipqVxX  $(,0NNNQR$R@RtSKlK>,@@|;"$&'--00346 @ ` "$"("h  840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  ($  ($  V`(4@WColourTransColour Selector 0.51 (22 Nov 1988)ColourTransSelectTableSelectGCOLTableReturnGCOLSetGCOLReturnColourNumberReturnGCOLForModeReturnColourNumberForModeReturnOppGCOLSetOppGCOLReturnOppColourNumberReturnOppGCOLForModeReturnOppColourNumberForModeGCOLToColourNumberColourNumberToGCOLReturnFontColoursSetFontColoursInvalidateCacheThe colour module needs RISC OS@-" @-;h "shOb-ikh 5 @PPZ@-"` 'Q FQ@- 5 @@-?C- "4Cc@XW5fx}-SWI not knownBad MODE@- `@- [@-WC-  Hbjj-НP-P-0-j R  q 0rsp qrFd@c@-C- jQP >@-2-  jQH  *@-9{@cC-  Hbj-WНC- ?P`q0{РadChc- C SН@-d@hc 5R QZp@- 5R@      !01"#23$%45&'67()89*+:;,-<=./>?   !$%(),-014589<="#&'*+./2367:;>? @-" " " p`& ^nBP& ^nB^%&d `V`fBV% U1 G2W B"! @-" " " p`& NP& N^%&d `FV% U! G"W B"!  5@O" @"_# a[谏!{ R   @  @P M { -IϏԥ ! .^Z---"PH[!wzStack overflow(h 000@P` p00@P `00p@@PP` `p0p@@@@!! Z墤ᢩ*ࢮ* ⊡" @-d@c[0@-@P  --sd?@cC-  -    -  Su Ssʮ H.a^࠱^0 * + ^$nB * +^DnB)* + ^nBរ)-q P`V`VUPE `V*PPeBpWpWUPE pW*RlPPeBpWpW UPE  pW*P bPPeBpWpWUPE pW*T`  ( %X @$pq pW p*@TР0c B %X @pQq pp@T0c0SXb%XȌL+h,l`X+l,d`\P-%h' `V`fB %l'lV`fB,%d't`V`fBp, \ X @- P[-YZ- @-/ ""p0pl(4WFPEmulatorFPEmulator 2.70 (02 Nov 1988)FPEmulatorVersionARM Floating Point Emulator 2 (V2.70, 02-Nov-88) Ѝ FPEmulator unable to claim workspaceO- Rb?j ,/Q! @  P*"* ! B"!$ !P !@'QO-O- PA @DP@@ @MϜ<?J pz(t  u|  7>s :7wvsr)(%$@?<;VURQmldc~c`!     + ? > j i f e   x 0 E [ a ^ ol ,)   F'}.7 R 䉀    X<Ϝ: 33UU00UU_P0ZJH @S-J Pt:$% %08E*/10@0@O /a/8E/#0"@PT @D Pd8$E:D*/10@@d 0PP  Pt:$% %08E*/10@ `S=JQ RO 9:@ PvET:&%B0%R 8Z/@ 0CZ/10@8ETA A@@PV `F PfuT:FED0ET 8&Z/p@ 0CZ/10@`f 0PP @ PvET:&%B0%R 8Z/0 @p @ @ T 0%+9C B,!H P"h p ( *    0 3#  #88"((! 0    @  BJ @ 0CZ/10@p!9 @ @ 0C90C PR@# *P@0CP@ pU`૰1P!@!P@ pU`૰1P!@!P@ pU`૰1P!@!P@ pU`૰1P!@!:  P@ pU`૰1P!@! P@ pU`૰1P!@! P@ pU`૰1P!@! P@ pU`૰1P!@! :P@*T U 10H7 90C0PAA2AA"r3r#P@`!T1@D ! pZ  P@`"U1 P!@! " ! pP@1 P!@! ""q#pP@*TUW 0#p@dB(H(L(N(OOሀKp@K?LT PtJ1@PtA:@@p@K?LT PtJ1E@1h@Pt@A:1ሯh@C?LT2 PtJ 1`@၏11a0`T  M0Z@Pt @D2%`@ ႏ/%1 /a0`TX M0 B `@ 0@`T M0Z!9`@@@p@@ @ 0 +Tx 'J'㉗`p<䉀    X<4`Ϝ  +Tx 'J'㉗`p<䉀    X<4`Ϝ u +Tx ''㉗`p<䉀 b   X<4`Ϝ W +Tx ''㉗`p<䉀 C   X<4`Ϝb 8 +Čx 7'J㉷䉀 (   X<ϜG  +Tx 'J'㉗`p<䉀     X<4`Ϝ)  +Čx 7'J㉷䉀    X<Ϝ  +Tx 'J'㉗`p<䉀    X<4`Ϝ  +Čx 7'㉷䉀    X<Ϝ  +Tx ''㉗`p<䉀    X<4`Ϝ  +Čx 7'㉷䉀 z   X<Ϝ q +Tx ''㉗`p<䉀 [   X<4`Ϝz PZ %T@)G@4#Mp_x 'J'<䉀 7   X<4`ϜV ,Z %T@)G@4#Mp_x 'J' <䉀    X<4`Ϝ2 Z %T@)G@4#Mp_x ''<䉀    X<4`Ϝ Z %T@)G@4#Mp^_x '' <䉀    X<4`Ϝ Z %T@)G@4#MpPx 7'J䉀    X< Z %T@)G@4#MplPx 'J'<䉀    X<4`Ϝ };tu}Z %T@)G@4#MpK_Ox 7'J 䉀 %   X<F Z %T@)G@4#Mpj_Ox 'J' <䉀    X<4`Ϝ" Z %T@)G@4#Mp_Ox 7'䉀    X< Z %T@)G@4#Mp_Ox ''<䉀    X<4`Ϝ Z %T@)G@4#Mp_Ox 7' 䉀    X< Z %T@)G@4#Mp]Ox '' <䉀 }   X<4`Ϝ r1XX 2,  10=SS 11231L2! 2@PPP%T@s!0c122@1XX KK@ 0 ;S@ T 1!11"1231 J2 2@4s ڢ&)0c @S1! @c21112122@ 2 0#<3=3=0CRQZ12&22&!@RQZ! 0#<3= 2 @RQZ0:@ 4%;2 @;0CR@OQ@Q QQZ0:@ 4 B!L@0=SIS 112315&!L22?0:@ 4%; 2 @ @R@OQ@Q QQZ1ᄚ ?,p@XX YPES:PS Q@3P3O,9!:O, @@@dKx@OI@D@C @d1QR ,@@0[KYPESQ:PS Q@*I@@T Pd52$%1!Np0 "# pWB!NP` pR&^b!n "!pWR&^b!n:`` Q`F#! 2O0@d@Q@d0,y 0@d@DQ@d0,y x 0 R3 "B"0:"dSd0C S 0CS P2] 0CZX &2]?PZTU O,p`JP@P@P >09J 0CZ`pBP ~( pO %OPڥW@Y㄀ Ѐ @,  0@Y ,0  ;: ,  , 0p@?@@@@ @P@$@@ @(k@ @@C#@&@*焑*@ -@1_0@4@.7@:k @v:@#NJ>@xbA@p`'ap$~`BPU28&)@h@T T 0c@S Ps PCB1%A2#Q%Q10@U >@{@ T q!9T 2@ldMo,@,@,File level = 2 (util) @?@@,@,---r0--- ---r1--- ---r2--- ---r3--- ---r4--- ---r5--- ---r6--- ---r7--- @?@@, V@@, R@@, N@@, J@@, F@@, B@@, >@@, :@@,@, @?@@, +@@, '@@, #@@, @@, @@, @@, @@, @ @,@, @?@odЍ@,2 P027"QZ @ P R#MpHH[ yZ>THJH``&!2$ @d12a 1J*<䉀    X<4`Ϝ `Y@d1a*<䉀    X<4`Ϝ }0Z`& @d1a 1cJ*<䉀    X<4`Ϝ *<䉀    X<4`Ϝ 9 p@Qp)  ` `Y }0Za*<䉀    X<4`Ϝ xZQR*>TQP R^ ` `YZ }0XZRUp@ Q*<䉀 _   X<4`Ϝ~ T  Q` Y*<䉀 G   X<4`Ϝf < [z ' +phB(ȰJ(̰J(ΰJ(ϰJϰሀJ̰䉀    X<Ϝ:  ` #䉀    X<Ϝ" `9 ' ⬋#䉀    X<Ϝ | z ' +phB(J(J(J(JሀJ䉀    X<Ϝ z '〠䉀    X<Ϝ @pO@Lz †'<䉀    X<4`Ϝ nJ(#Mpx  'ƌ#MpHXX0J*P0J S Q Rvw3x'<<䉀 b   X<4`Ϝ W @@@ <<䉀 H   X<4`Ϝg = <<䉀 4   X<4`ϜS ) X:PX: P <ϜpO@x V t`O(l(?@@@@?@x V nO(l( J(#Mpfx  'ƌ#Mp\HXX0*P0{J S Q Rvw3x'<<䉀    X<4`Ϝ X:PX: P <<䉀    X<4`Ϝ ` Y r *(p|EW O'|*䉀    X<Ϝ 굏O'|*q䉀 u   X<Ϝ l O( @VO( @X O( X O( }O&lXB O( O&lO'* WO'O'wO'*OH'W WW (OH' :䉀    X< ~ 5J'|*   @ XA!%:䉀    X< ~ J'|*  @ XA! :䉀    X< (C#MDpOTk 14XX `P \  #0 ]SU1`U,]0Z#0 ]S U1  0<@u Pe10 @XX" `PKK@ 0#%%[S@ T1 `UJ]0Z+#0%%[S @ T1  4u Pe @U1$!2%1!%0:@ 4# ;`PB@@#0 ]SU1A`U]0Z#0 ]SU12&%~  ~ IJ'|*#MpYHH @,@p})N 䉀    X<  HpO@e XpO[P  ~ hJ'*#Mp+HHn d90C0PAA2AA"r3r#P@`!T1@D ! pZ )& p P@`"U1 P!@! " ! pP@1 P!@! ""q#@@ DpSڀ `` pP@*TUW 0#P 䉀 U   X<v N PP PP`V 0J  03pO@S@ J 0CZ@  J(#M $pT 0#<3= Ah &f4J#M $pT 0#<3= hXX0l* @SQJ Pt:$% %08ሠ* pg @T @D Pd8$ሠ0!! !/!a! 0pO `pႏ/0#XF P  )䉀    X< PP V`W 0J @d 0PP  Pt:$% %08ሠ* pO AXPX 0 P FO@)03 MO@"#M $pT 0#<3=r  h J(#M $pT 0#<3=\ Ah &f4J#M $pT 0#<3=E  hXX0v* @SQ R W:p PteW:$%B0%R 8Z)p p ap P)  R Z`@T @D PduW:deF0eV 8$Jp` 0CZSWp 0p} `Ppo/0#0MJP<  )䉀    X< p`U 0J @d 0PP p PteW:$%B0%R 8Zp pO@ tXP9 S P5 X 0 P ,0 0 MO@P0c @s PCB1%A2#Q$Q105 4J(#M $pT 0#<3= h &f#M $pT 0#<3=|  hS[ XX0*T 0%+9C@@o B,!H P"h p ( *    0 3#  #88"((! 0     B Z  Syxp  0CZSk  8p `P'Ⴏ /0#@&ڤGPN  )䉀    X< @ 0CS?ppOg `U 0J 0c@S1 @s PCB1%A2#Q$Q10SP [a P_X03 33:PCAX: P2 0Wh &f#M $pT3 0#<3=  nMJ&l#M5 $pT 0#<3= (- 2J(#M $pT 0#<3= h &f#M $pT 0#<3=t  HXHX 0C90C PR@# *P@0CP@ pU`૰1P!@!P@ pU`૰1P!@!P@ pU`૰1P!@!P@ pU`૰1P!@!: )& %  P@ pU`૰1P!@! P@ pU`૰1P!@! P@ pU`૰1P!@! P@ pU`૰1P!@! :@ SWHp `pP@*T U 0#@ڤGpP8  )䉀    X< P`W 0J HP X `03I X `  0A 0CZX ` H`5 03pO@\ KZhhEh`#h `1 `  04h &f#Mp n>J&l#Mp -J(#Mph &f#Mp pHHXXN B,5Z?LK@DT*T/ d8,yW ,;: ,@  T , 08B@_ڤGB@T* PTe! d , , qB /~Q3B 03TS ``X ` 90CX `  0} 0CZXX[   0 `n0| ` KZB, J(#Mp\h &f#MpQ pHHXX @, , l @MHP X ` X `  0- 0CZX ` H`!3!9 0) KZhhh` 3h  `  `  0 ~@`3@_l@ F?Q e@?(Ҭ@ry?[ޕq(7?h ~J'#MpEHH @, @L Og@7P 0MnOrO SQ R] SQ RR:B,p Kr@d@ ,C ,>, @F  @,  (,p ( } $ y u , np  i p  , _pZ Z B@0@ 90C 0@03@ry @? @?);\?むbCe??g>"(?bx9F?B??W!Z4?_:,P??? ~J'#MpHH @,@ pO|G@2~O SQ RlcZB,"p m@ , ,, @)  @,  ?L@S7u,p u  q m i ,b p ] p X p U p  IJ[ @ B@Lp@ 0C Z2!9@!9@B@[iF`F`KQ SQ R5 !5XQKR@D@n*DN?\zw,??Hdz?${. BJ? <҄ ??i??uՕ9?1tPV?*Gh? ~J'#MpHH @,@0C8,2p*@0@@@T0 !9 ~J'#MpHk HRrJB,YPES E ,I!@DSI,,E E$,@; 0CL,V 0@Y 1 ) ! ,| p w p r p m p h  c 0 \F_$Y  @;P$Y  @3P J0C ZYP H@!9wC0@|@w\@],$0?'pW9a@Me 6@9QV@AS@5h!?5h!@5h!?h &f#Mp n2J&l#Mp pHHXXB,ENHP X ` X `  0 0CZX `H`@P@P 0}!9 KZhhh`h ` `  0 ~J'#Mp|HH` B,I@@ SQ R@, , ,' I!@DS,,{,I y u q ,j p e p ` p [  V ܐ  0B 0 @, }O @ &S$ @0j?B׳ݞSe? Ob8V@QPm@ P;$m[@CK$@k4=?)Sk@ V@2۴0@ #,k?5h!? #,k?@Ϝ儰³r  IYЍЍ@-@-<-+Floating Point Exception : Inexact Operation +Floating Point Exception : Underflow +Floating Point Exception : Divide By Zero +Floating Point Exception : Overflow +Floating Point Exception : Invalid Operation  ЍDrawArcDraw Z l(B ^X(^@V  N *He tjh+ZkQ.wCUYtx{A* @ X".4U"L &"cX^-dTJOV[*$$&" &%ISDO?/ ->Fa)qjcEs.z Щ Z  Z \! 1 \F 0 Trinity.Medium 12 \F 1 Corpus.Medium 12 \0\AD\L14 \1Draw\0 is the most powerful of the applications supplied with \1RISC OS\0. It is a structured graphics program that can work with a variety of basic object types. \U -25 15/Paths\0\U./ are sequences of straight and curved lines of arbitrary thickness and colour, optionally filled with another colour. Dash patterns, arrow-heads and various join styles are all supported. All basic graphic shapes are constructed from paths. Extensive editing facilities are provided for the entering, construction and manipulation of paths. Text can be supplied either as a single-line \U -25 15/text object\0\U./, or as a multi-column \U -25 15/text area\0\U./ like the one you are reading now. \C 256 0 0 Text can be \C 0 0 256 in any colour\C 0 0 0/, and is rendered using anti-aliasing where possible. Images can be included in a \1Draw\0 document as bitmaps. Such bitmaps (which can be coloured and partially transparent) are known as \U -25 15/sprites\0\U./. Extensive facilities for editing sprites are provided by \1Paint\0. <<~*;<DrawD6X6X,sprite?,, sc`PURGr31000000000000111223345@cQdOpxc``c~bUtREBCEVE31100000000001112233457 r_v;9]dbacfrw*,fsRFCB@AAF`E111100000001111234656ASotgp s yVrpB@@7@^6321111111111111237A UAT(il.i\/ wTeC776666432111111111111224RHR{Z<zbrHB@7665543322111111111222346Ga9-.MD@76655443322221111122222345Tj_K^]DA@76655443332222222222223347klkvCA@7665444333222222222223334@R ѡECBA77654443333222222222333346@r^~PPTSC76544443333222222233334457Qg9>rwMvRu7544444333322223333344556@v,8LIUS75544444333333333344445567Adq\u*J + DA76554444444333334444445667@ACWoJ D@76655555455444444444455667@ABEFMuwYp8qhq@76665555556`6555555556667@@ABCEGe_uy\> g^UbTTVa>;VSRQQPGGGPLLj,*ZwX<bW`wUSRRQPPPPQSWf Y ;|?, eeex.Õ?)Zlgqu׮\?x/,{> mOkx9>,Ւ=nOylo=9zz us zgqo(f?JI<\Mq: .>aK^J? ):SRRS/hrHSQPQx[*,N344456F>㖲^Zyi(<333456@vLN feY?„ 233445bGI+Wlo~ft223345VgZ_9 bRQS bdegu-LhP,archimedesa?,, <=<??=?<CBAF3=```CBBM22``a``BAE'04331''`ama`CCB@DutSRRQ'&`mao`BA@#SRQP'%$ammCBA@#SRQP'%C````CB@#"v|SRQQ'&$$CCCCBB@#"!qSRQQP'%JmBABA@""!pRQPP'&$$JJA@@#" -RQPP'&$$+HH##"!-,][[Z9/.%*""'& - ۃ * !$%- ߓ ۯ ߿     Ȩ ) :2< ̨  <3;= £ ,==/.,/?fa`CCAA#!+/?;ooCCA@#"+.??onBBA#"  +*/.><e`CBAA@"  +)//-<GCBB@@#! SSSRx[+)).-,;BBB@@#! StttSRy[+*)(/.- FAA@#"!tuuutRRQ[M++))(-,..-, Ψ tu|}SRQP'L&+)((,.--,.,-  tut|RRP'%%$)(( ۈ tt|SRQ'&%%! tttSSRQQ'&%, ]SSSRRQ''%M |^RRPP'&%% :Z\QP'&%$$ 8P3'&%((8&%$$+)(߼ $$$+) *)( /+*(( *)ӽ +*(Ҽ  ++*(((ҳ ===<;:/. ==/.. ><.-/>56a```BA@"ja`CCA##ja``CA@" }}tWSQP'PtupSRP&~utWRQP&% *H*+*././.,5??=??=??=?aaioCBA#"nio`BA#"oioCBA@" t||tRQP&~u|SQP&vutSRP&% +**+*./.-???????`anKB@#"noCB@#!ooCAA#!t}}|QQ3&~~tRQP&~SQQ'&$ۭ ۬ ۬ +*+)+) /././.,,>4%d`hdBA@#"idKBA@#!ehKBA@#!' utxRQP'&ut|SQP'%vt|RQP'%- +)*)H*)//-/-/-$GCCBB@#"!dCBAA@" `CBAA#"!!SSRRQP'%tSRQQP&$tSRQQD&% +*(H)(+*(./.-.,.-FGBA@@"!`BA@#"!CAAA#"!D!u~RQPD&% SRQQD&%WRRQ''%$,,    +*)+*)+(/...-/.--@FF@#"" #BA@@"! CC@##! 'D SSRQSSSSPD'%$$WP3'%$$QP''%$,-   H*)+H*)(+++)++((/..,/.-,//-,,:?5###"! #E"GBB@#!"!@@"! ''ttWRQtQQPP&%$& $PS&&%-%PS&%$-,     *)(* +*)(+++*))(+).-,,.-,/.-,?4'!! ###of``CA@A###!  u~uSRQPQ'&&&%%%%&%%$%$   *+*( ))( ()((+H))) ...-,--..--.-,=?;?6=?$ fbmoCBA#"! tvu|RQP''%$$   +)  (  (+-,,<>`aoCB@#"D |u}|RQP&%%ۭ +))+)/..,%e``hBA##!D tvt|RQQ'&$ +)+)/.,$GCBBAA#" 'SSRRQD&%  +*(+ +*(. .,%BBBA@#"!'QpRRQ3'&, *) ( *)L.//.,,,$@AA@#"! ' QRPP&&$'& ++* H+*) //..,CCCBA#"!!&pRRQ'&%$ *+)) *+**./.,546?Caa`CCB@" u}utRRPR& H+(H/,55>?%`eeCBA@"Etwu}RQP&'$ H* ).,??`anCA@#"" tv}|RQP&%ۭ +*+)L .,3%d```BA##!'!tuppSRP'%$  *)*( /-%CCCBA@@" DSSSQQ3&%' +)(++*(.//-/,4%BGBA@@"! &RSRRQ3'% '% +*( +))//-,/$@@A@#"! ' QRPP'%$D'3|tSP'&StSSQ'% +*)(+ ++*)  /.-,/--/.=65> BdBA@#""!&'E&&$'PPuuRQQPPv~uRuQ&  +*)+*)).//.-/,-.-7?>?Cm``CBB@G $%$D3vttSQP'Qv|WSQP&$ + + -,,,/,-..=?>?=?>`em`BA@"E~v}|RQP&w}|RQD&.Ϯ  +)( +)-./.,>?>????_$``oCB@#!#t~~xRQ3&~~[RQ'&$۬ ߽ +)*(**)/./-,,5%`CCCBA@"! pwWpSRQ'&}WtRRP&%,   /*)+ H*)//-/-&CCCBAA#"!(StSRRP'&%tRRQP''$- /+*(++)() .,.,,BFAA@@" "RSRQPP'%$$RQQD'%'$P  /*) (*)/-,.-,$%#AE@#"!' QSPP&%$D%QP3'%$3'~|SRQ'%  ++)(+(+*))/.-,/.-/,,.>????ooon`CA" ''SQ%$&&%'SP%$'P}uSRQY&$ /)()-/.,//.,/,-/.7`eol`BA@F $$$$ $ $$$&'wvvtSRQP/.   +H-,-,,,,-./-.554?>`emhBA#""u~~xRQ''-ۭ *(H)),.>?_%``nCA@#!Duu~SQPP&-,۬ H**+*(/-,,%```CBA@"!ttSSSQP'%,, *)* H+().-,%CCBBA@#! (SSSRQQ'&$,- *)+*  /.,,BGBA@@"!DQWRQP3&%  +*((H*(..-,.52#AA@#"!&DRSP3'%$,,$  H*) + +*)///.-,,?>5ogof`BA! w~tSQ%$)(,4>;`aaa`BA@E t~tpRRPL. H+ .,=66?%`mm`BA#"" |~~|RQP&-$ۮ ) H* /.>6??$`inCBA#"Dtt~SRP3&-,۬ +)++)/.$``CCBA##! WWtSRQP'%,, *(++)) /-%COCBB@#" '!WvSRQQ3&$,, +)(+ +) /.,,AA#`oAA@#"! # A#QQ3QQ'QQ'tRQP'&%-   +*)+ +*)//.,,5CCCBCCACC@#"!@!!n`AA#!tSSpR3&WpSSR3&SSuWpSQSRP3&%   +*)+()++£+*( ///.-,?==51a`eCBACAooon`BA@ eiCBAA"ttutSQQDQt~SSQQQP}pRQtQ'P3%$  ***)( +))*H*))(.-.--,?<8`a`iCBA#Aga``CA@"gbiCBA@@ Su~}pRQP'Q~ttRRPQQuttSQPR&%%   (( +())( --,,,=2??&denlBA#"jmdB@@!kn`BA#"&'tv}}SQP'Q}|RQP'}uRRP&&$ۭ ۭ ۭ (H)+*))../.,>5?>%$fnmoCB@#"nmoCA@#!oooCA@#!D'w~}WRQ'&Q~[RQP&~}SRPD%$ی ۣ ی +*+)+)-/./.,%$mm`CBA@"!a`CBA@#!aCCB@@# ''vuSpSQP'&'WWRQP'%tpSSQP'&$ *)*)*(//-/-/-,$GBCBA@#" `CBAA#! `CBB@#" "&SpSSRQ'&%'SRQQ3&$tSRRQ'&%   +)(+)(+* )/.-/.,/.,BBAA@#"! BAA@#" CBA@#!!QQQQP3&% 'RQQD'% $QQP3'$$$   *)+*)H*) //-,/.-,/.,,@@##"!  @@#"!  A@#"!PPP'&%$$Q3''&$$QPD&% $   ++*)+*) (+*)(//.-/.-/.-,!##"!  #"!! "#"! &'%% '&&%$ $&'&%    *+*)) **)( +*)(...--,,,/..-,,,..--,    $$$$$ (   ,,,,,,,,This is version 1.00 of the Applications Suite for RISC OS. Applications disc 1 contains the following applications and files (in addition to this one): !Configure 0.21 !Draw 0.44 !Edit 1.00 !Fonts 0.43 !Help 0.31 !Paint 1.09 !PrinterDM 0.82 !PrinterPS 0.83 !System 0.43 DrawDemo WR DrawFile 13:12:38 10-Nov-1988 6 Kbytes PaintDemo WR Sprite 13:31:57 22-Nov-1988 20 Kbytes Applications disc 2 contains the following applications and files: !65Host 0.97 !Alarm 0.97 !Calc 0.40 !Clock 0.14 !Lander 0.41 !Madness 0.41 !Maestro 1.65 !Magnifier 0.40 !MailMan 0.20 !Patience 0.40 !Puzzle 0.40 !TinyDirs 0.06 !Usage 0.40 modules.65Tube WR Module 15:50:48 17-Nov-1988 29 Kbytes modules.BasicEdit WR Module 11:43:42 08-Apr-1988 37 Kbytes modules.HardCopy WR Module 21:37:03 04-Sep-1987 2176 bytes tunes.BachFXVI WR Music 12:57:04 16-Nov-1988 2235 bytes tunes.Fanfare WR Music 16:34:13 17-Jun-1987 1297 bytes tunes.Gigue WR Music 11:52:45 16-Nov-1988 771 bytes tunes.HandlMes1a WR Music 19:19:06 04-Jul-1988 1661 bytes tunes.HandlMes1b WR Music 20:40:57 29-Apr-1988 3257 bytes tunes.ShostF1 WR Music 12:36:22 16-Nov-1988 2510 bytes These applications are all documented in Edition 2 of the Archimedes User Guide. Some of them contain ReadMe files, which contain detailed remarks about the specific versions of software and documentation. If you wish to read these files, double-click on the application in question while holding down the SHIFT key. The resource files for the application will appear in a directory viewer. The ReadMe file, if present, will be a Text file (like this one). All this software is provided "as is"; Acorn makes no warranty, express or implied, of the merchantability of this software or its fitness for any particular purpose. In no circumstances shall Acorn be liable for any damage, loss of profits, or any indirect or consequential loss arising out of the use of this software or inability to use this software, even if Acorn has been advised of the possibility of such loss. ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ