mda/0000755000176200001440000000000014445214302011012 5ustar liggesusersmda/NAMESPACE0000644000176200001440000000163113653663715012252 0ustar liggesusersuseDynLib("mda") importFrom(class,lvqinit, olvq1, lvq3, lvqtest) importFrom(utils,head,tail,packageDescription) importFrom("graphics", "par", "plot", "points") importFrom("stats", "contr.helmert", "delete.response", "fitted", "kmeans", "model.extract", "model.frame", "model.matrix", "predict", "terms", "update", "var") export("bruto", "coef.fda", "confusion", "fda", "gen.ridge", "laplacian","mspline", "mars", "mda", "mda.start", "polyreg", "softmax") S3method("coef", "fda") S3method("confusion", "default") S3method("confusion", "fda") S3method("confusion", "list") S3method("model.matrix", "mars") S3method("plot", "fda") S3method("predict", "bruto") S3method("predict", "fda") S3method("predict", "gen.ridge") S3method("predict", "mars") S3method("predict", "mda") S3method("predict", "polyreg") S3method("print", "fda") S3method("print", "mda") mda/README0000644000176200001440000000051313653663715011711 0ustar liggesusersThis is a first shot at porting the Hastie & Tibshirani mda package to R. mda and fda with MARS seem to work fine, but bruto is still broken and segfaults. Hopefully, this can be fixed soon. Kurt Hornik Friedrich Leisch Actually, mda was not fine: it was doing the pruning incorrectly. bruto now works. Brian Ripley 99/08/17 mda/README.md0000644000176200001440000000001013653663715012300 0ustar liggesusers# mda mda/data/0000755000176200001440000000000013653663715011743 5ustar liggesusersmda/data/glass.rda0000644000176200001440000001252513653663715013551 0ustar liggesusers\TEa0$1tO@*Kҍ3#bEꮘ] k+Uau,@8%?%gEWߧuﭪsGH+d˭.S5VmY&Nr[EE;hWJW n[u?Nems\ݟ_Un=mӞ(Jݯ̕ȝsEj^O {UՑgm[|93oQܯO\uz>e >?M~vzd3Xyרmets;/)}"C>ZZ={me{]3C_x߲%A?~tkzSxǬR=7n'5Yyyb}=}.R+o[ju/]`v1uJ>N:.9Yۍb5Q5nNgQ$ME ;Fnkv[VOJy~'UN=S_ުr-oy?:]_κI OOzuv{Vt?g_:w?FNϱiy0|猿=P͛vrٖ~AV~C.3K)=}jοuܠ Wqu ?jEbN'{ռJ>KO}ӀZ 4SEm9 Wv@۽Wvt{^ mU܏lvv'ttm72^yd)1P>hʕ5f>y(xwwsո#&^+T^P~E q}_n\cZ;~GvsI4c`@Y =W bҿoܭ5BUÛT5xݴkL;ul 8zrX-50cɷ.i~'Ɵj7/j7ȵ;817}zk6@魪LxoנQy{KWϷn~cʟ Guz#[/{.y?_ݬ穱f{O;U^Tx_%Wnzv֤Xi 0y5؏xJNwmڝ'?3gjC5ԅ׽3h=OhhIDڡ Й?'T'8q|*Ϩ*ϫuQ`_N@|v\̯`Ocdܤ]Gb˸!]Ђ۬ 9!!o cĉg__ /#O .Tǭ#.C0ߑB[xA\F.(Go{WN^Xy| 9z2r̃e ?Cqe]èko'aW?;1q<|':E 3/0x& ) T@ _3aĥq0 cƅ1>ʭO+- /a'^:j?ЯTW!'x?yWQ|+ O!x"oO}_yW_l >(D̓ȁ Q8EQNп A|=@3OOiO[?C*!qɃ6O"8Mmw|#zOޢo~BNSaR"Ƌ|`\9Z}=Óx{GC7Oe_N]mrB7Gީoºi Nڕwj'`q7m75-x.͚VkߌM.5/uڟF'{湽 1z16B&'{+mABf i ^n_)o-8`&'oB+BUk1zTOЗEO|yڱN?^P7[1Ov'\= .ȃmgnvCڻ ro=Ý;13K9>k=`=k3m3%|! za\`~H^y̖|Əyzz|aހ~s e/ȟ]Пqzl?6{dެxx|uw{9lD9!8y' C~89_pw'/{/G=`_}A'텾`.ĉy~{Eü:٠Vj9Y[olonvd{kd8eYG۝Azuq27PER'GY >;Y˲=0^d{2OFb1п/I9uXF'vwvgp@y]?{f~̬A8M;/ ԛqWݨgAF|2[gf9I ̂8sb>s<)9 ?A5 9CI>6Vh>}3QDބzCd؏slrf >OץodZa\. @s>S\^xWvbODOz'9kR2 '=D73]v1q>[߅ |b\Kb_K'OǠ3^nHiQgț{9[כ n#=yzc)5yJ?zˇUX_/B;خ%k9?ٓ7y7 쬆__IeTKO1ԓqb˼:x.@ɖr_5p>y5p>z8hůk0%?(?mx/fwo?7^~xؗN?~q;zR}ZD~I\Տs?QzЏK_ K0qKy/ϱof r{#{8_`UlXW^OYD|.~= ,o}J v~^ nG)PO W yROoG^~*pbWZw -w"h?܁gg8%ؗ`?o[2IcJ`W'ħE`;!^ ߙ7q?X#_3*ƹG;]яf?$s?C1y"uL70C<#;BNa^t~A\| _ Rԯܗ^@ޑ;#nh7 q`D7;|?%7MƋZBS#yցϨN}W~OkL~̟@郎}C |J}<3S> ޲Zه{{0wp^qSw;z|k<#鯣^JӯuyN?=7RwI^9_{td?yo-sue?;{"N/z~.vx`y#8yO8NgSDc˃-Ywqh_C}k=ĶO=_#m=Z?q~yc&fLC?ϫUtsps, =\? c<4pŕbeFxa"ʋ/H"ɋ/#E"reUTbr\%*%Wa %`Xa %`Xa %Q FT0`D#*Q FL0b`#&1 FL0b`#.q F\0`$#! HFB0`$#!IH FR0`$#)IH FJ0R`#%)H FJ0R`#-iH FZ0҂41r#]ˈe\e\&e\̥AAAAAA e,f4ˠY2hA eТ-jТ-jТ-jТ-jТ-jb-fb-fb-fb-fb-f-n-n-n-n-n-a-a-a-a-aВ-iВ-iВ-iВ-iВ-iR-eR-eR-eR-eR-e-m-m-m-mKBkWj8|FEUg^V?nOV Mmda/data/ESL.mixture.rda0000644000176200001440000047773613653663715014602 0ustar liggesusers{s9iv'QJ;v~{-A$I;cmtN%J:)R ;&043Ƙ1IJﺾ{]u|f 6f̘1kƬ 1{f3fl_6 q!~ֽ>uQqp= ǜ_mN7_6m6wm0:/Gg~-?+GX_Y͚~Я}zx[~2|mpG{~(ۯ_{OM{N %[^Y|G?sν>ooo:/;o'\|gX[sS߯ؽ=Ͼ'K6{[w{ԡ8vk_Cg(Ku :l8ßipGǬ7?1gU+oq6Wљ+{/xj_ҿ;Zt~o~spŏY֟|䉇}W {^_۫_> ێ;Xp+oeϾloWկ^O7OtrIm;h/n8mvⱟhtF;s<3NOlu/v//#qtW~ۃѯmw?hY>noe]|ޛ|? g^odt/C/ދ\1{K\{G??=o^ g/tq)ϻ_z^͛FN{~ycv%7ЪS6_kvɣ~y,z9];s/cys}_Yǟׯ.>nٗEO㣎?鉣k~گ+ve-ÿo޳_/{~:-jU_(ߙME%}Ļ7|mśnukogG=;ѥ~6ݣ_ŝug+]{=0Z_lٯxcK?s>|rw߶xkcF.;?oG=i?:t?w2o8[O-?;e={珖I'Qg #^K^߯rS_vM;ͣ 7g97̗>뱏??Gp͎Xso;5[z~O]ړfoo7+ODgϿ3_ulxVwyW,Wo~gw=;_;c~O.Co.zG7lß<,~/?#}㘍~诟xɚ}Gӏ}{uϾIM{_q3YqksI-~_`ɉ_G}׫?~^7x3?mKl羼_{oNzǾ;޷y8럾%߯>3?|G/==_pF~w\4_KyQn9Ovhmg/-ass牝OZG?s#w[ѭ긧sc䭿}wf_޲ t3_KqբǾGϲ}}>uşh׬;[򤹣hS_ Otٿ{h Wo}wǏ.z׮}c7_}ϼ|o7:y;<};~G5ZvF o^>xnzak[ˁg=i?KYӿ;MiE˗K`}y{xn.ҫtͱ~́^y.96}蜷+=˯l&ͪ:ξ%[>]<-Ù[,-3޹W 6;y8Կ߽`EG8g9Xn{޸E9]{ß~GXWүS}c}ǝ_|7e8׿pq_<:~׭'< gx߶no\1ۿ__uo{~ͱgSkvZ/֎\}6?s?uX;wU^n-#?#X]y;;svϗ{cǖC՗>Qܭx{83v-۶{eݱvֺ ֞rAξ{yg m]͙͹~#oiպ[ۏ^/֋__/{7/W}wg|~͋yӍ_~'l'lG?[|?w~~wNvw9ͯWN\8c_=Zз{5uj7񌖌}׍/͇v㿾~ߏ>׏ߏ=O?|p;zǿ?9o1~#`y=ro5~ߣhƟwRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wRIz'N;wԝ:e:6Ss?Yy_Ωsɸ+u9m{TgS:66~Nis9:͛)u9m>yYsJuN7Ssڼ~:]i{sڼb<[g:6/iqWs<{|/u9m~:sF^s<:/y: RgoΩqWsu9u^7Sg+Yy9:ͱΩ/:6WuNǿ侀isYy9:?/:%:6<::Ssw:?::λ}OY95Y9~NisΩs)Y9]YԹjRgS9::6?Y紹Yy߃)s?Yy9:͵:6?Y9|1e:>s|y:Ι~:>}OuN)u9uSs?Y9{RgS9:)u9u>_uN:6猟Ss?Y9wRgS9:sJuN돟Ssʜ1c?3ghus[{CO]Cz}fu{w}ޱ,x?>|?} E5vj0yeW>yW*WU;y5a6a6a6a6a6>>>>>11111١MvhCd&;4١MvɎ2Q&;dG(eLvɎ2Lv4dG3Lv4dG3Lv4dG;NvdG;NvdG;MvtdG7MvtdG7Mvt=v|9ȗ/=_FT,ɗmm6m6m6m6m6m,Ynfr6m,yns6m0\3 5ٙ]0Re8 _HiS- ]oЗD5:##yٽQڲ ^e<[8ʚV[v چr c QZ+OJnFkxc qM_~)\W8}㓓d2 פ/O\2}$H/IW]TwHɑXM=N nIs,#Lvde=NwȎmmV}C[Dd  c~ Ǯ1b4y{j^p "3!J"]!I+  #9 z%;nRaC6 S0,^ ^Br7# YO57XϹ=wȏf֗DVXg2!ew|*jU6"3X ?dY29m-FņNߴHKFIOsrlSY")]5Qj% ^O ɑY=ۜ9xZp9Cf* 隗LC.?9)M8*rM >y'8k/ÄR$IeR*[RGο4$~|zy%|tf\tKV(ܟٶl> Y"HpxdpЗiI&%-#3nמX>Iwt io.2V-[ٕS[C>$= =/x̧juOߐyb??<юZ!y..M 6a>E(\n e83P%Ca+5wd;lEFzL|#1ӡgN7[f{p'BYp ^iDʣ({|#^]w}8r[b&'<ۧ/2v`y jۘJ}s&̴VAa'xëRI]pw3B L#>&j.7 YG jqUL6=t@X\!͐$w&9i努MH-\:IZ{_5DLJ-CKĽ~;yȻy7:W߾ W|WlߩdK"Ҏg,Xgt<rsEΧO̒2D.^z5e2͑eAqW! kwqn#w0yFF&k>*#mcrɷ)OeS"c|]qB\w6j^]ʵ N)L n|re-kۏ P#s0a=qP;,MI5*QB3l X$cVwU@+ⓟwC,t '-/lV/E]6{{O`w5{Նuެ'3Y1KȨ^䕏$l+yhsF9"B.d1(7JaEȉugר+5LQ$T\{u;I3sk<=bSld{*]y$u[[Ar6̸!8U#kR v|1"M/+"k, SaSRQ\i-WBQjj{]+A}Skp{[s u#hdbnSd+kbB%aVRW%9KNNb_E?"Rxb<-NԾ><=EXl ZâViV!#-o7< u,{T=!h5"7MQ5jw<ѨT.Pnn4zF_үŘƗGdNL!aWkS-0j]@дuUBkh>,<6}1GBϩ 2w˫'sѩ\5r䊞Dݚa4OΚ>>KFyސ"_LDHDI$TYaƾ$N$ҍrC@sNOɱH~ o_bNjKq"f}wGnfG*Sc/85sQ꼳R"]qdP\LS#wWFzW;zcZ?rYPF:v*k,,с|]P7CO6 ;ʃWiFFMOGbd/핻CB=WEr*`62)#fF2c.oH~]dS ?{qӉ\s(jg(Ԑ9Jܾ+N8>lCPG 1'2*>CwݪM,p3ѭcиO\3yɨ#*C&rkQaSڮ]("zZgW"2<#dn63=%2iu `^zĵ,kE܃6Tǔ>ڿ>)"= Rpl)) WW WsJ [IͰؤi }3On$?9fuE#e'6͉|jXljԥermTR)%%YW8nlFߛPJNW h6"%z8 Ϲx{'t @=]̏jiTIS]Dq䒧nysݪٔv@Ǫ>tFWq!h}۶wMzs wpw&h UW%b,/f$׳#nj+ՅlD՜-QŸ̟# dܽ{օؾ0UsB<m<+ȣz+bnّwu'vST._-r5I ɉHRn]?Ij:/c~Crg~IJ7$e&5'V]''=t%\V'?;Ifp"E<\퇏29ῐsfaZ'vC /wQ$4@Xr3~j菲9q:o_+Qo~)rn=ۧrL_~!wq+qڻ{woH\ w^@L띢 ㉵׹#1|Zdfb\Zgw^7rfZk- ?1O'(oй~)p|K|Vnoʮoƍ5o»Tиl0w"nݪ_S<\1 hQ*wֆ\Bkp/Yum[^ܹ=FzzpmژSX㎟BvCh>dnHZH*\ej?'&>O}L2r+#ah9:]#XWʞ][?BTm(xki:9\qLoÅ@Ex2!0RE|$= z=.2A(2hWFjzJ0A]k%Eτn>M_.rT%oN&3%pv& r:aX1='1|ugjE&몜~KGY-XX\3=&lW݈Fr45*Ѱ?z8hA:-!2Iab԰{"U]ᱲ(Ʊ3v(V]եOE3QT($3QB Ŏ=}kkCːѪK~X\^HYϯDޝ]_8b(ܟJG+P?pp$wIe+ơQϥohjwݖ#h9mGm8'<Kk(}Zgn%S"7tvԨP9.FZ2ԧ".]L]pU(Kog!`7J+?Y f\B9Y'ɚ(D։-Yſfՠh(tuȯ"c}kiag\l9ʕk>w\{K NǗkANCPy;[g(j9˘%OCK2$k=9~3V|WY؃{.O=.'W4>C7*ztOuܱ=ۃM3k2y(#==ʠ۔Pet>Yګmu [J؟Iuc^=1(d'-~gR-Iw~]!C,C f2r5dP y7sκދ[:ȵ)٢Dȥ /yp\&pJHHt~Kp X ׷5'lOl"S3Ld'폤-dLup|\^IXQ;֧̞Q{5Y (,r| Z}: ͖|̫2QʏаK. IGfіA`0y#Bu82\B^nFꏩ3_Tr}qj}@,IJ˒?fQ<-Es8z eQྂ`2MyG3V\{QcŹoc2I) _Qn)rE]))SEhќ2-K\E /甙 ?a]/7F N_&cFl2r) z]Kx}U֛*sF[-}`îo֚Y jI:ܸ= LXvY)is.3bHeeCaw)I\=}SB&.IP(,4*I&rXm#Cs9y{~H+%W>,u(HGKp'wϰ"O+-!oVr]UI&bX6C~nzqYݿ_\Pt^8i'qmL6AgFy@cokMqːh3ZZ :on@}]e&\;Ŝ_| ;Ne^͉3j!B" ~nGx}?J{Jrߊ%YD9aS=_(㻔O{8+_O?qj LBeP2hTxչz jN(Ȟ}cBa5hؒcCWy; ;JfLK.P\6g 옛X^D"ޛ%6rbLyr ڿr4̗v579cP=Iw LAtgp%}vKV^=KvLMʳ_;웃K/8K7)( KP R/tQEO6g"JEp%о/8ĝ8wkeSJh–uM8]-3o@sYh\FLɳ9Nik@MntZߣXސu[lŘQND+ޠdype?HBx%- ͨHhphz4m0g{6oUKǗ uzƎ &.ޅFD8[6e .ϋP~P .pޏAEn`b4w /T{[l089Docن/>=EAj§X`9nap84uenP0D[ףxN7}6khd[R?wdxTIl'XFՐWjmOpw-D4y᜜f2ZD>/b)~@~|٤Y닱Nj\B XQauR TB{fgt6ۣ`{3gqKLПdtI܌{. WDO&j_U@^fTъL\FMϥ!1~%^DQJ>hG13~17^vJAֽ\&TLi<{b ګ\G[>gQCLvFFTۘ-9G_1š]ʹ,Jn+ScR1dS0M}qPM[VD3W!ae@O*wtQhO!yX j,K"D]`4&vhU4S%脎'] tKy<*cOcȠka|,VT1[GVcl{Yyq?+U]{1W'\[g./Ԝ0*kv^ 9JG ) 4GW긶e?֞M3 &@i4yT⭬E#Ɓ-/o,Bvcp]aT xtϏ}TT-cqތP}tg fGpKٕŞ ,;w7ۋ֫^WնUlshV:#d&7I#O8~桟hvFuJԛ|~j:/\#߂aWg2;f5!{(ư=FGV<`˾LjO05`2vߝ:pe!WLfnSyY ②_WJ 1} ǣ+5!RPr:)aRN >1W}Lg-xOcdDl zumza ':Wڌ *CVch4X܏ZjcŨm>PVxIH!wOg<-?d:o;TlC2s2_*$,_\-߻DVɘ vTbXU{%kx2}vkN;DIİ-袡uU(H򎶘"-S3_Lod7m50^5NO<̿TMΥz+Î}çmol8)B7ϪrpHٽ/\.3}vyT%_}ZfԂKxM?bX^d 2ĸBƂZ˼U_1Uq9fLq0wpƬF[`g#} 1;OXYg.c:O?taG4>@m^3۪]P9;G9mj(|͹ W'Ve2!Ȗ}R:PeR\+&d)zPJ-LֺΎ7ܻr h,~;R+V aBo/_:?/} g81Ȧ/@yo0r}LL;q|}'0Z3G?F~*9[a6Ga𶣿g$0ÈúH=ۜƻP( ^\bENx |ZP/Ogl>;V=֞Wn|PD3ǃbq[ǸLF8sl-\$1=9.pwf}zO*67c0C!2IKsN cϬZxcŻ Syf{0b-j̱Kb+GMv`W}YN?!` ?yFvFlՃ1Ce.}L:̆w}} ѱ\nq姎|y2_9sfӸu҆лH:mG~_2ҁ_oաpȓ[j;[!?*gQ\*4T:ks~qPU DcJQ5f<ٓ\&z j/9Qs+g\0 ke8†e+L^&>o0]Ff Xπ,uX) d0oYl/ƎVsC: 窧Dmhq,{ HS2:c }8}>:]~́&k9lNk߁+$R/}j!=ht3ng;Wz-IG:DzNXn*>G0wcD[U>F<8U ;jKpČG 8`i̳ޙǓtBWsrd;7#xRGjqX!hD`~E}jK2f U0v^<#圹6;h8o=A,w5JxXqYmh➿ؾe=2uQnQCQ^_<#} GA\Өzf0u%3htnb.>B??ա0˭NkD 7bnTVZ_>~1ukJ\Ẁgͣ5ĝ{{K`Mz̕Zi~ Lcôws1urm٧>.3 w.>g&KB7>YW>/]Ш9tN**tmZ|>g GU~uh'pfgڔT_vpbxyRzwJ@stU>*|e݌}VMc~S,jrJuo _37=߬лK^saiS#/XtlKFJ"OxB`1pycc0 GpJЬG0/y3qѿAZߓ< hd}] LF]jͅ!SPᩮ" * G ܮ!Y8>{˟|DL4o9OGmC#sKv&r`Rk$tci XWu[ {%^ëCٽ 7`ub N30@M#o/Ѳ O.<7)Xz[(Ni,ߒѯڂA1<Ò_8c#Kr;`yaSsXhyP+,:K,x 9ݏ]#;:4ZbgBmE>c >6o!b@&uk>ǜCczT{m96wx5,7\>gzy`f7V毕P\gC-MLZ]97mMw]Sx4V.SI]ye& $ bHw)dC`dZk1L}llWRy4&Ġޕヸ^%vt/wx[C0*qMG/D^J#b'1ĈSeumkɷJWTcb'"'iI}f'|wX|5{;&%)+16iw!3YdaDs^{ezeeolSz}aXWx^}feKXS r9JXT\ᘐ/*$_cAo1kR;ur0D{B{'p~t1: kѶ+Tg@6fFӣMץE‘ UahltXyW}9\tȂ5/}ޫ>/ |^ ;h7QWckhn^/Nog|gKIc5[4)WϪ7Շ )voZm]}$6a槯#m>м8.+߄JDhwBR"RQVI%3#%U{fum׸{~}u9<}?}=i* p+Żp6`x\"5}`hsDzSV=ΥϰѤU\Nn!){hgO%Y FzER /Rd5 "Y-=ʍ6tOF[n~>~n6]\ n4px©K$pRT?k+[ a[:p[U,yP'7%5u5hKۃK;">N- QVfȰgь]oErtv1o&H ^rP ﻉʠ2sZNU\|91grw |᳐EU24P4}xU\25(;"lmvYKd7{7WCjiUH9TQ| _s9&oEٳ䝈:,9Z[!4*YsV#/O|߶/^˟d6vkjyeܝ;uhL8﹔[Xu>Y $DzNpT=g Rh 8wnw'a~b>=@!-I)i c ǑIwV۳qS_[ء)(4"%WO.梸Q_+ ETuw&31|kO#H-YF{g "n!l͑al:>xI9/JMN!'O`[Z\.v).;bB*npID#/.F>o>ʷNwV/: f.1 cE7 ]Xƈή_ 1_kImЛox"+FH|GPljd/ ރ}F ǑA=M+H4ݷ/ &i]C:q↵0"W b~ʖ3ZŅ5Y`9b.cL}#2aWWφǷp"=\rƂeK"kxosNʱՏ!+>!GhBy^$SշARhgPe{\!+|(T;jp%Sv$?Qv-J%L<oYc<:a@i{L^i!6.;#2i</":,KF')yC?#ݥO S9|8G=h~s xޔII[;#1ҏ[ƜޥMW:w#Sߓ>hDZg=+U1}._]߁hj^q*;%R0olQ|0=ɢ)CU@yr*_3ܸPvRr0?#3mdJ8-L!Aj֥sH_O gƣJN6wQUZs8额7JBhi0j h;cumf 5atR &u4ٱ+'$h0~:C}#*{ظ#bׅҏn)zF" ɪ{:9\7G!Y& n+DDmB'=b Lƿo*#"en_j C(QXoT@ Eك'/V 鷩J/kb-N<~?".K eqof;RIG|AFM fZإn:/ \3pm}j'pDm[\9lӍ0JόHSݴS!Je^(UR;ykĸ|Mv|Zٙ&JQ"$/wgLӘ"7X { u{Qxphu do"o[7 B8V ϶gtN^VkGeњV\{* ^跹~ڮ=IB|H*ĈTmaoZ9DwznVFY0t#T]$ANVSKϟFcﶏGѤ%<Mkja^p$[zHU&SLCDT.3V͠WKbI\9*;5(~ ijVZK|H^/y>{w(_M8BP#M!3q:'%-QXn5$s1ef Z;%:{1,VJj o:&GE5160K+ff2<*d`nRcn6:B1\3|ѓ4[yTqUwtR와hx\jɟٌ[R|'J?۔bWNFNi}!.i^o+ŒͅHn@l ODGmg_'TO6مyaxb 8S|u|d7z|wC:>Vpl@EӸb%5ֆ.hH(bTwx'ZR\9ĐazK:Z2 w[ eI5+wCs /nwok_gԌcWsD|}Q*ב0>⾪ҽ1eԇT9ˆ3pW7;DiLɍ9^^h#Y`L;6tU"KVH䩎Mx@]~kP+> )ZWGN:^p?~}=*% ՛䑍;% Dcί@osڋY]9gdPXF0Z}dw2nIaL0sF_ j>%*e.t4wўwZ/ՈX3c͉XWV`Fuu/>-eM&]+(lF~BsId u q〈mH-|G6FEHuvl:,p12FdhDn㊒Tr-ƴhi%ݲ%rO~(,˔#9YYY2J׮3!?G&TX%e.~t}榕38hf"iˠ6eshs~PV.ڹ=vmt$B}Khչ#c&Hߑ=5;jZž|RVE\/tDFMEm,?1L9qjAfL|ct>9H2u|H ]Vn oԮSGꞁSUrmYiAm5w>_؎3Ok0h5FdsبFtcS di/"vl`S|jvi _wjf^aZd߆X|#3>b澺' =qu ht:`ԈD;ˏLNhDBS)]o|,c YVO柊6=J)ٵHy~k$ٮ_FlO8)0"ʖbܣ?,A%dsFMoKAڥE0CܰVp(ڙw.A\\'Np3O-H~u iDw+mtEY?eAw"{nvECߢlߥ6<[GndBA֣;Z?y=9?_\b-v5]ǗwG ,#c6d~!Rɧ8Q= u~;ڊN%w:=FM>b]X#w8Zu02HW6RA/{w.|\csbh0ytb˫RɳK2Fۋ&oabd˭EY;= lͥ1'_@L֢*~:*M/ާ2>7hL.ZTRF8 ֩1K(rMHPD^ղ1d0V5A٠Qm5d0?񨹍!̣׈q@rH w3*|2*ʟkA~+ AeVч)١;(f@R\,_>1ӂ)cLLw]:^^H?g7}m.c-)qv^Ny;IWlCe|rJ1oICƔweSt+g|^Q?My߅v"\]''x <nic֍ |yO6l":G#[o)JaamC@4yx$gj.22AaSl/Dzo)E~fcXRc>*o>Icdm]$$ۦR#2b0UՌ ۳ߢ'66)]܆ ==HP(tZ[pŊ{q=JȌHe@5 #wOA|$wH(pj-_.m?oE|{䂃 nZ<|9&vY&UuLHh^ujEkEyu+;1x0Wy <5 b@G죨,:͘㫱)kt{TC51QnL >h/FY Y{|yi#jϛgHY r|3TÑL=2}e%ip:7MAh|jQs혛aۤ5] _ĢBL*rlW`l9ч=xVAkԓS7(r>Cy> U%]z6/73K11z(.2Wt'\yѡ7$1bum?H mS7٩vJE}!u64 'ɓ߈T|\E-&w&:U~Ay*bL׽(s^@!d(c ZZ}|}Y]_"܌;"-+U<1uQ6(z*HFjh~ځ0ዕx:rT=g,AojQ 83!8?&C#A]Q#?KW +xT^`eIeċ^utխ7XA{Ѳh1-oy_h3TTpr|A&Zdl~JemkO(ҖKg6VifR.MdTD|#js:~$nbH5ѭK5KK jhYBC̘9O*tr|@6SNiDSTI Pi&:VEpX^e .*L|ݢUSk[/^?I!GLc*J.;3FoU U]sB1̿seXJOU>󃊮!vfo_x"<Ѵ׿# u'hPuՐ%Gwe;3QtP:r\~Ui 6L\^`73ݬ q9,#S>ϥUyAgɩF8K5q}=y~WQј/="$ϊ yQ8J<7gL2 j_m Ɣ߀|zV(#yN*iZ.qo[X``b| FvbRN+LT9XSru#Y?-07Zo5{oh(Kހ:R}-Gezki;-%yc:̹ޕWO6\ݘvҼY^LaƗ]M9^1zHf9{L18\C)M:/قG\йtMSh;,ڃfᙽוߡ^ZDXfU(HMzER;7nl*Dƀ5djZʄ O k!kzOW>S۪RR PyT+:&טіjsu| -s\ϡĈm=zFk_hD6c;O`.U1HU=Ӿf1PRLE,^uu m?wlTR͒Pz7r$N &"czHR>fl1gf2r{)8 Me{- b SSKV|-Y+YJ CNЃmcx2$vbވg%#f_oڂ-v@q ӎJtXMt aJsD=tŸ4 HC ߫1l yFmzSկVbg5ChkPW$r@;=ѳvނ˳ ^vVPd*-|+ET5z[Y0tG4ebL`% 0Y)[b˯1~'"/ [ad~! mKS)G@j?tty>A+nM`GMގģeFV@⫁g?Ur5(y.zgFj5:tN&ďa$,FN=dUL&L wwgZ(~~q@rJ4f0RQϒYy"kV9}.~U*543NԾPP}.*M]@ 3Eg3M0,{F~k1Vu e/0Cg:9^l`Z$WKL@>*iœ5JAk)]AbB8 gNGGי&ބc9^u)INAab_޻9TBqHki=QucFpFSu> ~Im˼-ˌ3GkY"bC VV!W=vc]kc0qu+v&o8=zIQvTLxns8ng:D}aé5=ӿ0l&TۃnlihdaT6{O>ENN6')< J3[z~tWvFFOƮ"*)yKu8~~p/8cE1O=&LW?J0ۘa-Mls0nm-lk: J8!P7/[wHz%iP[$@mrR4'A}O%gv(k0o嗸lf=GĹEI-f|1cxgz?ȶQőw1}b r7&I]JB1~j=1#а5ϫ0}uiyS<oq)mGk 3@S}Bȅ>.@ΆsL;7kr'RfVfTW$sUu%OKFpgcy-[򣞘~] yENEa=lj]%v C!Gdne@UC7fWPjD6qI0x?W=P'x9ὼ-5>DVg  M̻7&~Kak̩|'<:ԺU 3<-M-mLgd>!QGL.}/. m)m;s McB/?5W;g-nsǾhΊ%_T@!芀m9lw4RQxm_%4-<~mcm\;u$v&F6:1 lDOX% QhKG&j\7az҇@S_k`L U)q2r>B=_у%h:/kITԕBѶ^& bjyQ_s5暏Cs|@9 6U VBrG|⇱6&Kl7A>8ɼYKaͩQ)"qw[2@=-t ;Z->Qqu nu>@U=1+ƠŊʝ0^kE/(b,PhΟLm1Bڌm2޵٪+% 1J«c}>مֿ廴3g1knp‹k~W0oSyi#i>!Tu7x?Q$ ,E޴q>HiA}GaHÄ&V)yO>jqv/g1a}WeF8vcbOƽ1䧉x]tك@*䤵rWVcȖ[m;~xӓC kމdW.opou4T9 +kŢH\5r%({g(Q]hw߽tVswE@A$l&ā5a0&}>uS1"1*o9cQP\~+*Ҳ׀yKybC䣰G>8.MC݈o_Cߎ/^9ZfEh* QQDn}J11Pu.D?j祖łRtH.Hʻfۍy)aB+/fkgY> 2Y1ߪ\bOƆe9&x4r E]ᲃ F[HYA{ӪZ.wyKCSFqe4.Y|24FUsmK}@yl-#TA6L0,Ż01z)Z۹6=k' `FFؔȿbhfL%icFq"' @ߟ1G{*-7,v$*] r 4Ɠ1(U=c峆?ԣֲLaZ4?%]@g`Qoh#;}?+-b\VlقqϕU>Fsi/tb>ΝEA1nz 5.ɰTՉ'nG^Rr Dl, Ӫ#C+?]ɪ*~b#4oz5R{ij<ℷ1t eiPJi܈fW PǕ0/p"Fsbq71[`\ڊjr.|M } w0ixm tF#/9r{ƞt3kK7= {~JoWmZiG{ ݺC%b[r&wlq4JO:MmR/nČ6s8fly3l%S 5T&+2ܘT6`ɔe! SHъ<=\hس-rJcch^CʅTcePYKwhV޾A:hw{ݖa^ӔN%ZjM2TEO|7r o`6&ht9cyt*"(!#_ -</^H$>38#F|%N"K6_9 p42>MVP{sޟjkze}sOT-]Pwdo4JY^b4̓]ng^kX/N(j2.1 `n1tqsgٚZax8{*ޙI&c \޸ia",fo2ecqS\Ȥk,tL6 :OBPڬhx=Mە"D0X7M >ʇ1.3ZyF/i=iB_`9ssب/c棈XfN<l*SyՇalWM ?8a\lDf^ovFarv!4jcr4y T1?O^HrIczr]5MNmrDEӖG8݋1q2a==QmWn.c#mFPȜzHT@}W=&ޢĮT1{IdR\n}?i4{*21@@N᠖]^ թvwG*Hݴ S"( ꠘxTEP՟u\t7~+KgLI㺞̲8z!pBj ma2cu}1A1aԒf^8_p? t~TW@{ƖhW~e'pZt]y2za:O^fxVxk0'&Bt /+/)#c"f"ޙ»dt0ΐFpGAW09x4hɣG/)mmכg+F} Ӧ_kseFyºe!w5N0ΰWTdp }:Ad|^h+b]]3YO5k,a=O>noX6rq MP΃za_b:8.c~{?Y, y׵l"'[>9YS |vw>G eXuZm:C~vRd!;8*zz92zfv^]/MP:}eۏA3WD0$阴̸}n9i CzIbY`c޷{#aD@|/{ܥ^l3yo˯; :<Q\+79c&%?س 3FI80!sWL 'PKuÜi^ML=|dqZ ߵ;IcB!SGj!8)ӾJCjɠgVg;Zg|dQ:'%*+|\L(Իvths-J,RQ{ OÈ\$S5ƟdŔag+cI,sFu|j|Mo_@y9+̦ -VPVA>ΥGK䂔01Kdo鉜dr-׋ڙW@Kt#7Mkƾ keI_=?jΠ%?'fn@c޿j++Lbۋ 1%M[`Z%[,2c0}? LiT^x3)CF 3UM":`q ݧ{n.3 ⏷ˎQnS؝ka;1Q1c ƭ<_^|ȝ~`l*ɏ +Һ{Ȕݗ1{ɝ;&YcX,d>F/cwnܽPFt0Z>E3E~д,*AI(jǐhh{?̧E"E2Ar P~cWNJ &ä|S_6e`F\=3gFb~Q2L7<$闠r՞rVAs"R8o+lFvw jݻ)zja"'>UkVϻ+>eɪuI!Š&l/M'zZ׃+pg J޷TP̞c2z^[V̋+'`\jиY,8E:|Jo `患t]=˺{gSi0zXuLc1rf"Q iUE=R q-G@ki9e[a n˜haZZG?0ȑz{qqh+ؗwEI86rbZ96W>#g0uj.tne2DKk88x>+$*V2RB)GTDI))(I{KOJhQd-{˞G"y._^q|}B&wA!C +8֏b8TL/xu>>pOGƊȗ[_!߿WWgBM|k8o\>Vr mMq\r}ՉVu7cJ<ɟo{;NOxEfa]'2pYձU0ލz1XF-KKσfk18#͙)STneͣ.fb&ۂ㴫;y fyJ,ȓ<h4y>B9KhRWSS5k(Po¥rfdR}(ј❨+>}C&2utj$<w䈲h%יa=Ü ut!HrȺv-}iwD/.YzɷCu?/oNJelCI=H?Z- ѐ8 *nzΩe܍'dq)Yň"D'+%!`h% "@`kƩM*F;fF|UI\J5ո(+:r /FčU5ףB6 _B|#Mr}dKS|CtJH͚&GtqԤeڱnFz?3̘m;_#f)rnf)Ixn9jHւ3+b̹`)XiN koe{.: -!1CeѠStZEKG Uv(tMy½ =T?ZQIo}4p.G1OУd'Я5ެvuiQzU^P9/ʍېcr~g9FɠRQ%}1z;U W.XO?"\Ɔdt"K |gO"$}ϼx3a+4WX*,bKtuaLlƫ!lt#^@Gd0smgdcdJRapGqJ:٣k]lyE "' ne2Sj+)KK1h ֫'`6b;{FJ`8yIND 8+$9Er d|ie@4ӯ///Ee\Qы֗[DXYL+4SS;SM-UEe; ⏦ A8E6w,4ߧ2::;A)s]Ll7s&`Jsvզ6`,0wAFA1ЫQ{#Z= {:[oo^Ɲԍ  ƲG ,~Z nlk!8bw ]a9y2?k:p2+v4y"|'h3+Cϲ7 ɂ h+urMNCU?}_4?j-3(5bB cwhRT)])R+CMtjVM/*u}Z^peB,sMJэ[tΒrs>v7*Wߨ[Lxp kK.<&卭wdʟ|ޝ ;ĵA mc\Cj1?< 0y4%7@iCx K6CDn7l`{rH^/jL҇W~ 8P?/7w咼\> ~J vRu*-I8k3.-`..LɧӣgǓ|[ {|azϖ|ڒݳA?y 0t(p{pε?IrnyRg? εwjtHUF$M4m X7=@thm( _[EUPp8Y&4zʶ$B\P[ux dl_%@̅A36Txۗtw/x:=$zk^$ϯB81ɟ{,?g3x>8G*31ޱ"ƫ$q U)QCf!.Mp:=/՚)c>LZGtue"[T峙G)J8@'T ~?'?&}P"< fwjoHv}zT(\d^nN8sEN2ضX+>sܘV04ύ,3 4_Zݗ^rSvG8\0iUMƤEݰwjǿ4]r)?6wCbgћ^HuCś7oo4z=KTmGH:_}5ߺqӳbd=Dǁ43ssTnEPڽ*eb:48n<)t Xr7 'Cs,{]o gAз&`+D$>ZU[J㱹ԳO|6 ,U=vhCyblv?H滙ktU='|a9M8;+Sw&NFf\}ſwR͕ H}~LP ?'nZLs ze),:M7 <)ɩ;O'3OWhS-"R&ക86[FB٫`9WZGRc՗ pL#`-4tJ2N*KlY 1~yBXElgZD2}׃Vx&ש\=O]W\0G.H. q1Y.0.BYm74M>hķ(r5=N!(p/Q6.@,6$gWwTdyKhՠeTsZtיIA]8oqOwA"3p- "FH'BŬ>)~xL&мK|_n;uiP?P9$6>z3M5ȱ?^Փ႓N[6FɵNu;KAQɭ\_Ps6ws/%9B{npCwvguUF^_Qxz?эow <{p|ϰJqLpb?_kǾzb&ٙf6Ys(sZS#&e-; wb\ J`oi`\7Z=+Br7ܳ'a8 mSm9JW! _Z,G_67Ʊ|Pwkb߲{^G@Mhq?~[ u3MF̺;(5&gG$ݖeT#f2ԛt2C_C~|Vĝ`HݺvT lw[^eAoa[xXfʗA)zyy~P[N-4p5n%>WNI\|Y9ut8 *{grK<5_BC|Zm}ݼ }/3)uܱmp?85F)p,/- 1J.8J}kڭ'hmV X6S}|zb$ҎN4KQ0 8I5~-ɻSfbX j^>i׋kBum>=-f1xm֋AoiǦ?pV=;9٨ F⦽g *#\]rRagƉhpڴgK݀2NOBs=mk!G>Z}[m딯kVb{KDJ<4a}]ج{AI0i^4%x[o(%=r<hW! Q.YwoAw_ݝMxx`hA~>P]K.>ogI|5xQˉMzy϶o^M8~N89nzpmQ ѡ2 ϦluVw #ꡤXX զ ३^>0i;8U'yC&0\PP(`_U)Þ1F` V(X ˇ _Hs(X-s`v(^;p`66+;5/w;=μ^b&8+eI{SZޡ՚=so2HSf<^e V6\|N39G;Z{}^'/C-Ht>%Y 3 [QwD|PH%ӔUc{V̭ 9ǟjB(TXEm3!:qlq. oW)':y8'v^.S/pr}̲Fugz P߬=ʽ[.3uPy-̼A[}XC7>?=q߸{$2L8/1d'D'?꭭W*]r#%2pg6YC ޛD6w.$ ]Xm:7ZKs{7m6+NlOrYGz?zHXcsE泖K0Mh3qCio`>2fC`wT seS>.{*+w79[dY{o\9|SHo"4 _5 v;XjQpӌmL>?G$^oVI%;<.P1+wJt9NzWdcP,< N؞6׎w}&:d:%~/_nO8?HzԟA\͖6[|%euKjF*;Cdˍsv`{$^;w_C9#G-j+W>FJC7?M0O۰LNyqz:;,; 1I[,%&Gv0w;)_Gä_JysZA {vF`[|AB:^.TB$s-Wy  l"=Y-d#eGĐWO Nԡ#z `DR6=u3D goYv_eǑ7Aqs(8[ iNuY#"ܐ̻{6ޓMF =8T~hF|bW#PT,iҽY^%N_>n:Zm. £9U@ط͹;$G?l]ꡢ({+ƭ &"}3k푗lP#jgȮFwc&U$Zf7P~KH89ʄ_Rw;EI>s|! g:AXr6O$r,o+t$X7d9 LvIa` DȄ#hNȏ3T7Vw+HgV-7]~7TTgY0?( WV"b-;`:^gJ|C.?H ՂWռH:t|w<3[~ͭiWeQN#I[pBdXge2Ht:j5\gZ7Ǒ ޾n@wM0BfondKڿF"VУ dںji\h:;UFG),\[$gU/r ׷*{:N 8d/;wN@ݎ+07m[:P3 H|>"3*SO?} PukۆXl%o!ToԠ6`[D͉$r_ㄓ] 'o^F8q>B|g`/w{.;[fP\kA<_B#q/Ѷ!E#$rvg-h$z]=/43ÿ& 30M Qaт\:@_/GUq>^ 梅K/wΙF3h97|4;rZ]U2b?'wl`,sFOqV.N_a=# d[/ʁ?Cv K"g@Ԭ 8Eϓ7.QݰW/QS6hӫB4xnf蠪b&]/4SoGB,n uEv '#ELCSC蒦#Q9*Mh{K*In߱Ƅ\;APno_n|*q@|jp&ͫQsIɫ]}&fWwJ% NU;Mog2o-^&A8>+Itf,3?#99$D9NF+s x7 BA}DYRjlp'T'US`~n~[.r髹u_y0>3p m O,󴾀&[#r! <[zVq`0:v.X+ {$טqp)Qvb+fq 3_{^#ê7x=ï#/ 4uo䡁߶m6:mA p(XWx7.g;أN-KQE㝠Vw. y$zywľզckCr/O%J~t.+]Tf Zu;/hb{dmY\GZ ?szH.;JzVk06(#VL[ɮ%`%v?$uKLpn6^șTiuܓ-^kS +pcrO? 9o$#NB02ŹgЭYZKx P/9x3P>ywhk 8U}H.\Qzw㝪1k.#< ̙n"2P5E!Z}~ڥ$eLNisPuS FLbi-v`տ(QS^=, w;/Lxl.[Eר" g٠7~u3h>?Mhs)>M]_/7Lb0 w]6/rN/}?8!Y;0˷gi[s7+}ckLIww|Ok,^Ao!˵S!p e#-ryyl?f})4t'}8q}]E!. iCY˹v(8|uPIY1}Z U^[1$2-iVs#mNm߼l5GjswC#ҡ~k8pj=V$R%I'Bw2HeKߚIOMs9@t|kt=k j<X垝䵓}(WzN/4N0%9''~{_R7c]܇'Z-%L W .C<σ^ o\.NX) eޘn\|S!+IiNx" څEjs$4뛵ϻZR<%σOg:k, +$ TlU]Vԝ:;?!W[EƆ3h$5sq.:'ol'dzl[rCDL/ Aw5jXYV !;{i'P 0!?x\Sl9]Z@o=wOo'U[>ǜۢėU^؇9;2hbRө9e26NL8&N8,pN//n8SJPҷ_Kx>h>0|Y)\7`#XA/`-V sߡͷiЫzysFzW8,q{^ )ЛmrOh+ʼnmn]GRu>(.*?Y=~sE!Dpcvs闙OE% ^]CozD;/[QbFDn}s9M=]Ao]nv.}#@Yn|P_j{5E]w݆ N#)S VAʎEePȑ+\2W 2[WTk/C+X#OzGa`I<;x!8ÂͅFS"} {rXʿ̧j-v1%nE1^O8*,*$rQ}(AjY}|8#E?lk'M}TC)8yP? !wKF|~"Pc @'-$p:}%??&`F%S'/?[mIO H鞘˗( o[ 4:>‰˹a3[ʊ4/ S]8=C5 1m&"ܞv ɽx>Ax ==9lm~0,;ǹ蝴JDM~cCt9h:3`yc`dsX ݯs NZpt7wO7= Ҵ!xgO6 GyǩԌ_` 7m+4> &y} s'\9ˑo2ڵ U;3wC/29zZEPz9NCn)I'SQR %6m:G.LscU4+l<<х ,"krs[\"?gj-ɳC.gMp4>-S&#q%ч7NRiN |,=ʜL^_ӛk~ *eRbU,]CNZڨ>'(R1/ު<1$z. S'݀=%C}CXש}$[ Ɏ렱Vd1올Wk$0\9|L$w^בFɱ}onme3,< ;>~TpR;{r'ᅞxU.BWTn8ysY`>tuX 3ltrUϞ& {Q@qيw_D 3)6=A¤5]]WyH|ڳt㵥Ȥ y.GVعv%;]ͻ>n1Frouvh̒ zr",n(9J_iR1=~qn%[u\6y#=&3K&|WcPÚWu' M ?8YMtasW8S=#S7~EiOF8k^~ʳI~D#PG)0u'X.. y[}Fyq}`Hu/CogU艳^s%z/I2Hy Rdݾ{i>[aFi ̰ "&EoCdc7P:UoV5mMqv=d']p@}qK^dB`ŧ?A6ptY R5nazNÖoY!LT7x(n ‘vƫv:b2vCBAChP|zQ~/?";MF,z:s6.|V:9K|ag7GD0M>*=CJMO_>Aeq N\枛g/p%Tрp7L 2b7qxر()gJKN\].+JC|#}.~ԛ LrU·Rs, `_ e_bV\BoG4fR=fzkӘr'hbҙR'@+fg4p{0N}^?Ge>OYr|,X,Q`}Xy~O%8oBTH;ns四=?췃UC̔ ZJRY\JZ۳|lw%WK #w(n-8{q6uB&xԸ,TJE֎g3?{s5&GGNn)9kNRYoI^u;A5Hy>R$/8ѹ< kE!M$}8GrW $Z0ݥŻ>ơU4/=:+;+d_NƾyFcauVoVc=ja,0EzbeOHZgPNn$ђ%[60%x3 ;'ڵ k^Cкz"ˬCDll‰^ .Ve۔ELD Xg\ ZVVѵR}h2_d~|sRK ep0*OH/u\nYğZI+>q [tXo=XM?G`eI8aY#.'z_h`v-jT/'f0a.)H\d5VVA4gu?{Dژv!tVf띆Z=hhkߜ(Ywt:b V'AdT^N8_ndcPݏb&?FM%3R섮p>1blw?'w\<]N4Aírݓ%=J\޼$tjAk^/I`7Ӈ-vџ)FZ>9/R}>.@XAK&6qn!5MyI^Mk%?[ ` qS/ j:er}wpn[7[MP/A[~-$5 4X*ȇGY ø=O)yk5wFb̘cj>/y%"]Múq{è VMQbRCcRmHz>b[֭{ї6*68#~sod3鲾у;{<K#EZusHȈ 0̢^N>K6L6婝3 գm|/n ;F,IrOS#i{}OݥjIn)7+w';[OLN_i&܍;!}_7HSSA ^$iJʟl'yݭ֨ro)a %v,yܦkw>!?'3״Mv.`<+<0[=ƺB3k'ǘms\0TS*T;'̾y1}TI^m9oۻ1t/SnRQ"ϤO47,^Or!\n/b3|u“O#9iv_[r'Qk=cユ](\l݀E#hbrTPŰjw QH$mG.EmBԗiTEjT=]mP0imf;57(-FW?ݪ,U~wA {rnbN+\N7%'ԟlG5{VZo}(.!kg/m2 $_wp1xޫ[o qS3+52'p|daB^ 9I{V KvZ-8{t?AہKL'кq ,:ØgU imH5S,%*C_^$ XHwۨZt[9"|tG@.B #DCvsIzxx@V1ͳx5ፈ^ً׏ک í[?|iZDT%ۡ+Dg7%??^#nTx>ڇRM=+>v%(G֑!:_B{Fk=~zz'φLq[DFl63>~/ {t'BSR~ܻ.q.[%A{!{7zoKsMΚɝp"xTK8o^̾ P|Ӥz'O$SmWYo?H4A9﹊`A HE HG){A)!4kB T %:^#G~εO]{?g\b;PZuեFʮ˽1ҕ;wНtϷOu͟]pqWvCID{Uo:}e~B~2+O9beuɄ'|{\=7(S&.s5M=[/h1ۯ[Wq`6ߪ+;|Z;O~C힓2c7.ereoW&LlRw`2x;22>a^=OxUǽ9 o\k_0~:pewfou蓷m|IG?>o*S._u_xgO3CKZǼ>wK ʭc[lP&\{䔱^.׮\07zr~ ˄Y=(-tGyg7lYym 5Oa-GtC=2oKK^S=G1ϯ}. N8;'>>㚮7^'+}&_֘f 6gns#~s+Ͻe:''uݘu3sީ.ͽ l{7_m2y'~a][ R^ѻܶqya嘵_-OxnW.兯:~9yz.Y)|w+WLpy%9l_._7rW)]:kv3Y^kM.y2+w2}7M9W?W6 wtⰽm#3 sts웻s2eҟW߷{?wk׻dzffw;Gn\t#] #^iSG\}~:v3Gy:{l<]Mw.?_^|߯<=/y ۞^BuŇRWUnsł;^^glec~\7zOo^>a ۿ/_;fۗ}ޑƕs/]LQN}w{ǂ7ٝު'aw>y].W~tSn+Xܡ O_9ecN/%[᾿L>{EN?,CO{z ]\>нv.ys08Wgu_}W\/VsF~eݱH?f1n畆W#ˋ4s 3nIWyʗũp};''?,nw32sКzyy5u_GC./=3w'λGKϳSZOh7/SG6W?R՛{Y|Ui/{^z͘{ˌ%qˌkس~ah>=ݓ(WͻčseO1qĭο -q;=nدw1sɣg|חO8˗O;2k'|ԽFq|24v½\yL}/-s_9uVy˳'u)S9ٿ;gх/k'떡?jŻﻥYi/N< o2~9yȮ{=jEYp ߭a׮zrYިtw-w<>t`׃9M6Wʲ8oK,w>eyov*ޏ-0\oe32'/ζ/m]|\eA~,[m } }~կ;;ͣZ9-3f.Gu|AwxLO~g9'C?}>3g.sjs<2r:߿=!9s<*#?7/p<.9Ogf#sD9w5]g)eUS̸>~2gټL;A}/˴L5;L?2;zMˌo_}~f-y 8i .orxmϑ?oޭ/>Ϛcsr҇S~?P{t;FNyԳtuGҹ'ݾו|s>_n'_2/emwC| ]2x蒟:v2Ň7w}OY?{?;ŬߖW{.=hve=c.Xbneg]v}? 8)GoصuYaE]}ehs-/_9wq9{>_bl\w>Vr,ÿgQGͱTwsڜ?«U&7_qWyz65{kg'_rw\r{˸wU)yrG,l[niߞsrof{S˓7qy:t9[|\=k;'>pF^<ԝyy~yi8ӈC┟<нh?x53s[kuO+Wߝ}~>[MKw_7n1=%p lrr{sV_COf}n)3.>}åRf(O5,_-2ͻO>`uWl;|ϡn9VoޮGǟ.VϹ9\ϿR;&rw-g0pxz.WNw G~}WS9y]oK-o$ݒvK-o$ݒvK-o$ݒvK-o$ݒvK-o$ݒv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv oہv o}b2y>Na-8K]!3vp5O/t |[qtreq%ľ 9K8 s{T}Z?lZ[uvM柷-uۧEv\<}qEMӮ^R7UAܨsk8~kƕc1nsxٖ^D˜yey">3^<8]?03Tkgj6y{1cXר9w>%_{xi9Ge|ܮX6-0a$V ,ϙ&/U_ ke;qh)3-~;لa#i>0QUovLNOLZr^'h}?\ڴjL.Ѫ /PW{%?U lXzյqX-!m)غl;;5&Z;.XGyo5ފos7/đCJx#[ltE&tFd*x y16l듊ML8_9lb'Z6b|yq ӵgq>F \:PɕKc^ O\ֺiX9`ًe݄1 y;\}"0:ܺ{F~ƍE_Gf/9OrwsSƖI~w'KXǹ(tqE_;Kr?wݫOZj6sn /o}<nt(?PXɴ QM]hax;μRkt.l~\1{d-t|ӳӪf!n,kj4w+-ݼ}Wľ!~ك=ȭq-;bu.ߡuI" 6ȺXYx}./7 Ƈ;[`3E_lԮ0XMlϳkmMoW6cHr|nwMƻ2΍SLPCg-6.qݩyL4*!=Ohi~M8dnhL4˄Xmotіx&/nn`+ ]M}/Q?9a VOt7s4j1/jL礋xzH9-)](9{{&M+8uwm,~mmxSRMzq4C[)5ngk׳g:.:~_r?꾒: \H};;>> q_PHwU#[#nz-GX+:Λ^+LOl7<1XRγ 8V_VWa7%[#pj9ܮks1Ѽ'B[/OU?mW5ë-/''ҧubW[E[>y{~|uގXpo:]t z)9װ׾;Rq}[06 -|#[v]ܯvIZ;K8`Y/phEjO bТ ܾl=1l>3 ?6o6eg7ߜn&=uK>sނ*n wj [gxLN\kV*aHלY?6۳OKgD[O-%#Gg_coij-cȲF0׸C5ή)-?{ɗ{n9 Fb8GyeKwqY3הq~ 9\{+lmK1\6H7{;P||L|&@X8lLGaL‰b3TkQHl0;Sp/M;l^/&P <w/oCk[kصɔ|:sS>:M?Cp*>r}fۖ^yb{0hJgpݖF"' r'ݞI["0Tչs\v~{ݥzcGlY }8V<+f5< KB.,BofN(_yo,@mk" p˺_Sq 7g>O}#٧bx^095c{(;%xL 5^Yh2mChzbԑ,#Cv1XdYx.I[s)]=P ?Yf:c˷˟ǯ :byu4+UW _`wۿ_4 ؝ڨ_ {껓7>>Ͽ#E-{~9L]w lB86IXhH`A]G mL.3 ء7ɉ ܹ(hXa/wuV1c35 8"yOlhCb!J:n_ Mm\ uW5Y/8cS KIþO{/;[Іj<7X$Cۭʕ[nv/ӍxuҒ[9AV#Y=:g6w(aׅ\ʮק[s͹js9SOr_K̍ qj˅߬I?,P3n1ZZF?i%dkXG:Y>0^DmGWvo儗^d,,wī3Z7٫4= ÷‡>k`UͩTbUr\l֍ ]Ï2—`;{7ŽnCϼ-甅| ޤ33c_W47HSqSsimy&R۵׫B86NnPjPl>lϔd '=ǔ#Ҏ)`)gSv%x3I{]>9=aggF}b=JcLToDـ~Z_?(t-m'd6^5KF fȼnkLʟ%K-]*;p}JTQqgxShܫ(o>G͜hW Wmw6_S#r tnO^`8((6~^w4?7gcO*|\'$Vι}>u]TDJe 3][VMZgu% ˶f_*sK0=5'sNLU{ƛ"KRIXZ'(u_h!xu|}r!l6?8[n}…]?zsǞLK따/o uF{8 B%M; Gvl?ƳhIf946edj&qLHLbLQLyl oL5gݘLMȬ mw SkhZ8)v0+gr5r"TiyolEI+wb<wع~jCH8k=5N@XNwx3\2}߯wO%m># # wn[qӌQ[-Hȩ=5-ے4q\Ϧis}c NFs/˙kН lMo;߈.̏qկjF: :x!:h7G\rUwcM1hXu F}ܫ| =࿜?:gbmДO7a^̖}y 1M=^|:[ꗎFZ-؇U -r"]Rٙ6j E(S1B\#E<8p@=|qdӮeOъ3U8qB@خgs43*1c7%ژJ]NW˒$70Ti}sSi:0iKY4VZy^MSZYSs#PU9.IePoDtr0R8[rvVV[ڤlK%gv<9Y3O?gf,J~u%}"Ljϡg?vsJX´Gu慄.5v>ݿi:wΜ#};'y|wDio~.c8;2];,wn4~7'ZCw܎͸+C0bf?߹_34 8Γ2^ͪϖw6Mco=IvTWK ηl{ϏYVhg 9UM")b݄{qFyz#z9~xT/s_;`%$l¡ҽp4XWx \n`|Us&cj~ɪ3}I@E2LHWJ&rgE&vROw% P* Kf\~8=[4z< 0瘖ƖsLES\+88wW2dRfEg~5v $txvr;'_=֏?˾ب&[of5+w=)74>^9AjeLB_]Aj{i}:-8]pD{|ty]_eyߢPKFE[Tr8J@kY"bDJV{aBg[コ1tYcxxҩ߂<%oN f85<-;GَU%8Ӄtb|qOqRKy^?|7[oIkw9]3qOFI{R߅}!Όoc37{&š] L]EL$؀ "ٵ?|%L$]>,`2Vb?8$߽i }_Ň& 2<1g&2= S2C2Lӡ>Džܘ܂) MsZ*Zcތ Q{B} qqܦQ߿'q)liVƬҺ8Mz6Xߍ꽴0.mm%4O]%QHn{.ktRE*a7Iŧ1(.u GB+ºGzaգώ:'?lGw<"q;=xؙS11(r76LNՌH݉Zغ, hb]a$| %>SçoUc<.3$!CC][6^fǼvLKǚT&: &ݻ\n&TDHMj˜٤cd,Nɼm;Oܝ>t*5 [d9=a\Xh;w;.˗?J!ʵ]x݀>|Z Xn\/s`(֋R}? T%UO b~IrycfFG ^vqXhy^}V%|-iDno=swz_N˩=ekؤVWژ W<0g$vNg3C?I} ?d Gg\\f1M.mνL;GrL4K;]V~rNtޙi`ç/U4Ovc{&˷1Ə!]AL]N60D7n<`1~z08]8p G\{,^%]7zle='s*n8rpt}HU!q>$.1Λv}d4a[ZyK\3.(dr.A ýxČ2l׮V˦IKn㶫mA;j[iAljǛxZ><ރm]WczuEKxs۰7Y&&jOa{݇9UZK?~99ۢ5<|I8c_ Oѓ 8)o|LJikZ{r,q&&7 Bc{kؤ<TXّ<&=yv;&#~^$LzJLoKˎ2ٰʃ2ݘM˔~Yz7liܨb:Ccz;Uk1.Zf`., Wg;6,e.sϐg0NT}&,B_&&NO޿1c1~;;V܅CWNk. Nݼ] ._/:foUMw-xX/!f`LUHm齵Fͺg_?ѻ ⚌xeXz~_n6R|ooz~yKv+|;X~MـmSXF )MΘ?_)H*>|%-HJ4asd>, -#] ܻ3fr=LcnEL}zL!+_|LjYS[N3:j0A {cxۃ6yX5^ٿ<{z;7f4[Y۾ϯۏlzm .8~nq4zF/p^#4<\rr-D֩˻|Xr7{Y)}kc1,-i_mnc%l;p&o*^ ~όx7lf}ke2}3ݣS20 {S{ݳ;L]M\ som$I;DNYx(.N,Okb'&=u>Q |d2ݷmI96%$=h0P‹{R_/VmMcq&*g6}nE{dPNػdRbu{m`at8itO[8ٳBzZ""PO),WVFw;RX4[k4|Nх ROVaˮc.mD&viwkX-6 ;e>8سUO_)ʝsdH[_eWlNFofgݨ&8,Y($%ݑL@ +LqXYAw*S]CkuYn&Ɓ]L}Ƹ9|2.?/ *e#,bc#q 1>fJ,ijiOPg1Oao 1d2X%{8f8۟O`>?ߋid1w=gS0i5A/clBkQq2kwDM>ƻmY-*j2񭾢-\|PR'ܻ8OrrM{.=xx.M@ :l?|8|x^gաcUW382׽5Qf3_۽/q,Z[qK=;)ܲCCoZoj;MNj^qo~UԎҬK4Vp{ne6~B5®KrbeqT{w~ELÿn"Ԇ&3i9 \p*ߞDŽ,fɶf0X/[0I+iz`rOggJejڙ~0.i4keǣgfI!QW^1`4ݹ}`&weۏijm.w)rs9혱H TV /˙l~~3{=3 }"3:UӒN5o{e0jWRfwVV,)V(}sI˝8;MgȜ\q=]۶,-u[3OF?u]+I&g=c50Z˅B1>Wۄ;}c\kmAGG!W|YI[-kз\\UЉ=8qߨUuչtL[˴>*xCVXމcjkq'L2t*yLqx+6Wȇ`듊/E ķnztcSPaFU~´W*v&EػpcT-mxşmm7'V*.cBF9{6~#ql"ʧqN[ 'LOL BWSajEr+/Q̴.(MᲙv'۵Ko3mA Vzd ewҹ|T PƴӭsgkF3} 8`Uk0iK}EUg3:Qh5[0CϰtGoL{ G9Lz'왢w'-L`+6aQe{1,[ X&3Tsol3V?햄O:9 s^^W>cW=--PÊ^]?FכBq>)n /7>MܽJ+ʲ63a&qĈ[,}RDX\!H"nQ7}fW` *Y6wSL2똎yO#CCQl9XYǴ{51C8ipٚ;pJk^}&8㓶=2 j^?>&n6Z+$z|abFMĎ$r&-(jU&%똒!w2h~ yvr&yike:};gzS\{70t1bLoDMfLΑVsuAaO&1F;ח2%3=!P5Jf(3\9̷=bFg_vȌdO̝]\|I_? 1seg&2~6~*'ŵaR+_z;Dc;(W2 oqvֽu?e@v4pR҃^6 bNN+2A$ãTM&UunƋz3cVEP72 tjXsM QZڛ!qr~ol --3oSZsk:Z2>ў9LjF6ٟE&lb686)F@*/ ~ϟ~e~:g&w'UԳ)IH椦22|lFOLۉыce_^nu|k Ôy[%3Ý5Wweه/b?ߗڏɉ`z]/3NI˜E2+|f =*9/|^2#f WhaQnˣLk~tn׌L-?BP"%3n\)9óO@GKq`Oqy\-i_w`INhl{cL"꼝Lf9:&wR*),W[yc攞6e]|:ԔLxSRry_'Q-K_ױ)^>3S }XfʳM2S^37Tx_NIMYo8 7k?g ?dڶSw}PU&PׯGU83_9ӭ3ooy5^4|U4S>'ȳۑn{;BM*lۺ?&\ޞLb}&) )D|^f>11|y0ػp4bͪRI׋hY=U1(^x>%Ty|S~W"&s[{kAlW?ߎgŠWM^v+z=x{sri6^yV=zMF ͯTX& |>]Ya3[e=>ϫJzg $o:oDg5+#fM!v{3k.h_.kُ)w"1~)fͻWq >*eEnk5ߏ4lx܃;Yrx^y@j:")6Z&y[yÿ{ uYHoS_jqSU[zsdӨʴX`:K^`zڒ;܄A]pofi2g6=1f{뿹(u)3)=k ~Q=eKWd+afv&Aʘ+3-hx tb&f qg2# wK AоLX}#LJBCL{L&>2evD&d8 ]Ey2d^#|yG|Tt~z=n'߿c'% X4r7S)̊\2^ޛqZgVBn}-\\vqq6eL ^O['pCxico0 w}͘VoeL4Dr?zOKP/jM;1Q˷RAy]9[+Y,~'7?-F}.|mSO=拿?|opHT6LW@&sDD%1ST]=aS]anydlMqHi?2iΖ>O=zȱ_.F7 Clrmz>f.Pو0 u2Suf0Ke<:֛lBfީeAϋkdyO`Kfy?Fo"3m l"Φ4L)~ČW? D+2,}LHsns2K<%%͗g8Δ\I`L;;D! 0Sձ6/:F zѬOE(bk; X{L<=/gIl8pÿqtƵv[`à̒]VXw zy _3 6rz.ȍn^}eK'2z<-ukq{I~`߄ǽy'F@yA&V*YkcNE-_~{hZSIϭ%Qk"YԜI uAnxy-͑kI;\Gkzr^ZM&<”@JgGL#Wk9A"ڠ57DC2ő$ˊNHаidJ/th;#Bwn"?"~B(ʱXhFb?ۜyIP&[lhZndlq |vB: QN@%]z Pf>{mwf{0ٿ&~ [1ml%oL tui?  yhWO_P0G7(|iOX]?K<@yx̾?zAvl %j=~Ps$*&)%tN(1?m-@VH~0} SV^/~.$vD(?^g 3?Y.Lu_a'͸91GOwMIJ4=L׃zZ"mv=4QuL-TXY^IkZڢ!k(D J&Vs*Ĕ&Z{a1Bd0Kd=Y4M߫ƈ㠋V:Rjrv+oB6ȡM }3LbPהj7ѳS}NQ݁+#!Բh >ηkG3_9ZMSu}gHg'wFbe5uc+?úg8~]wXr[&@T3WHp?|;@f5pȍ%ĂߟaL0Mt,(i3tV>Fs"a}d>A&{sBlJis`t/"7xMRc>>br<.pCWshӜ+Z:h4HPRވE(ju`à3 0TT~j/c^k@I|(5  y$neS=/5|NkD)/fYG)N l@{2>Den54"utыq)%TkVVt=4rb=n,Cfc ϡC5>K oQ zI{:f? {nfp/ 2߮Ȋ^@DWf>goYl$Lȧ¬֔ePF&a_S?WWzA5YouPK>u'w>yh)75;w~ jz@ՆgO (o P':U?l-y_zҡMD-zko=p|eBܵkDCe94V/{FB"sm[0^3c*rs@KDRmІ2cϰhq4:h4lwʄEHTyzTǗJcfGoMHbo6PLo`HisL`ŧa_1#;du{-MWNN2CNTfQHC>,T!U]ǹ+(։zo%-5xR$x /sYgr"h!w&u_n;#V~{@>zRt)ek!ϧy fCYRڂt9k ]w9C@beuP}-tZzA*ۿU[vM-k˚tAk?h)z|Iu͸4e$ƞA8 hܸw)Qo@ͲvDkTFfx^=AѸU1qwҽvқL]A”^E9"Za /S9p[V`Mm$ \L^$ѧD !Oeq+=uQ|8ZOz->d:s&ͥ,k0jJ }54I=Ê>tG_'5ʡ'Q*{(2ON;xA]#C vyp %{+E"tAHճha 5wB4*(HPkj/u8^`Jn9&>@ ]b{.*S#Mǘ(م$U ~OXx,P72fS`PAലc9 ן:O'H8gLi9 ?y"NeZkA ]"Iw:T-7Z$|[+ηqU# W2e.h^6~U4'VNZ\8o$+hi6?x*"'Aյy4gU:T;w7Sb7(b6f __*Հ|'8U87]x, NR9?G5`n{p0p״p 7EDkk(ФE }J WLhܵ^#̚Ӻ -1ӍO&c8ъ ,~NC)m2*ICLTW]Q"@t= O2xUr/8"9sM&1[dGݧ ]دȢQjru |W\ɞPA:N=S[Tq حy⭈& :w9CD'h'eդUHrHr) 7D RN)A#[Ƹ'7@Y؍w'PL5ocdU_ И5?4ipSܠ4V Ze/"m!bW>w,kρ\8hY9m/KYz$z^ K7T/:>7,@AMofdzʌ@"+< DK@i U{XXk>ƦlFM@|w"(D/wk{IU`mU-s?aAStodW cG5Pиy/{,ת^}>su}o|z ua~ia~Os"RT7xkhe@ȹ/w?YhvL@a:dL%AA6(F OPPGC*@ah.}|`ZY|qGy)s#җq1Ʃ3 }ރӀw A@{*&5yG y 46 J%4-JL\?G}Y,m">{2"<o%pN)SkӛkbpPqihI&uZICh7B,PG/D9~Bl(cB? Ya~띚9ݛxhm QEAq[$9Rr;Bipg=On=-zR̃@8N4]]UcI/Ee$JCwQcwDOP# q ''ת끬oI6KթoI w\ka@6/,#oE+;mcػr&C7h>[Z͆U@dXiQ `W3Ւ&HiQ$fDG+ n6VPz HS cY^XR KkMkka׷Av{IPm Ӡ|kY= &LlAݯAbj1D┒%A`ĕ) >H ` &;7iD&{  ߼$f&vTMN&@о:z MʇqΌh:M$Isn{Kzk1wִ;⯠K_v'*$~ ny[S%%dgJa?-UA!\QҫK :o<4Fl:ڨY( ɌYC36I诒=xt@g/~d 'N{xΑS)' ՔV$4&ö*R46Ùd6_|~|,O_^ 1fgFD5c̨fPہ̗-1*Fdju?}^sF!)bm*]ݿ*-}"m/x\[jk5 ܧat|年DH^ C ^efv] .i2RSHjiڰ*˦K/2=e ?D{E=A8 1Zb,Gs/It'4v I$%GrԼ܌~~u/=n/HDE=݃V VJj7DϧkEz~[g7ҒRLEURx3OPh( n.CϬ ](7AniUgpZ)sZq'D7׉EѺ&8:K}(HK4/t#;e[Rp4eRwU@0<_H\&R(t;2=OYqVh}?Zq9 kyB!t]_yuoA=eЉ)ތmUA+L6<3:¾<HfkH#O <wOYm&iM{~'1oP}t}]>7diQk)9.A~I}xߐ858ڱj 03=}f W^'?g> ԇڃĝA@:Rt? CA/ZLnf{hU4ΰ%>[]jE>D_^LrG[K /.p#7ݑ_|-R$jR]Gxrm{tS(LVyz2ۖy ~jmKr6f;Vh\- +<AGg[EZ8;Omj ߬p~smZe}&A=ч?XUtM1|\,`iEN/*n't$#x@u\"Hi?ȞEP(M*&AG%<.k7b ؙ^7)Bp 93=(I./r҃`R.z 2et*h E,`3jxt4c,[axq CU;l+G6Mg`Sy/ȹ{ke4TXKR vݹ O\〹vS̓A; *U'AIgFY| r.)[\!zK4kn jɟٚR(w^t8;be@W,Òة]OU'RaRQ_ H@']( GKzS@uꔜ8khX!`1ڱ1%~%33 @7dK´;87T^7z[T]pyvWrc%?+ƾx@gC4|T*g½B@duQMVMdMAL )ےhV曠\rMeŅF£F^kOP볡ITLEzuFG۫7i23ArmmG#])oOȇ B!g ~onj`P-TĪh5̑;y3w 4y;Ű4MaLb9ݞpm w-N P{_/lHŁ?w Dd}VI%mrd(I3|+ߩνM^xrܾ3t~oh JZtecAioź,p:zɕG e{9I Ӆ{ ‡e'tA0cAO2_ZY)jѹu\8*?T[JKG~Q`R^whs"IҢK- H3Qcѿzц`Z++/viIVh%M:-y0@j.&)nD&#_6)G-JPG[E{WtybJpPJr&55P:NЬ֕ĔxXK]OJT}@]GalnZ4jS2:.Oz:]Nyn!=MݨHߠׇ`ؘGv}\*s[xؑ7AjrP6^{  @Y + Ay"659ы xesX ՅOy+}7LzIX>]Fs@SYP'|LһdU  lV? a}FZ}[Kv M^]MVH@ >QQ2MR1YEa\ApT*Wz"'Yzۄl\ x!-eEk=zB y 9>" 8J|g!M7Z+ / :EAG4e; 0:oڕ{cm PGvr{u!(<@C@kw|~Ĭr>ewf% Tux+ _qT@ڰzu0|2qmM41g~ 0'vX k@@ H\خdWÀ\)hDŽW%N;ِ!Rw;8~ҒbG v{L:M}R ׊/[[ꐢ} fh]%[-A s됌z8l }1yY:D$HYKZ")s@hBaN?KxฐLƞ;O'bAD+AD6Hm$B|S;4h|S0!#_^o]s|z(x*1JS>ɼ+G:ip9l˚v\`scS t\{Xؒv(E@')h[SPu{}qvA e;Y&栔Q$hQp$*,  @yJd= "8opPEVNс;U:g{x\s]c.=0j K{xpu ^k3E/AODz=zzcј]++_iGN×'Mڀ)h=(DcV(COzN$=mGz~>R>1.vo{hI9g;8?T^M.ڷ46C1['nP{=1O+UB Xv O.,Q,\魂DP"O5Bm-AYqO$|sja&Qδ 4"7H_[gu߁-5L|^ uq;=E5f @?Gl ']8`Rp 1@4AzQ훧?MBCp^V A_29FH"ݣ\C6gt4&!Z<{zi'1vj J^H&J4R VC1j]D&+at?SGVߠ;unձhT/@/Ûe?铀QԗH-up翃 "۞ b7##J.m=HܶSaV}$AVEsy1{:j?V%H-{IdpgH*-Aisc-J=FŌ{໊:u rE2~Y?{-kwE(stӌ+[Ӊ1вp"Zah6ޘ&Zʨڽ_؀|m2cߞ E+eKD!qW|:ѓZ{Q?JNeBoe:mⒶŅӨOCZ~*0+=q /Ќٿ!;E$u [E@Jv^JDqـ5Jr2)z/ֶ-SMAy..wԿ% C%.* ƝCx~-LG?yTy`)Э..\UOзI <8:۠'}0^|=Yj*mc<}z- ڟrcp؞G q}A'B 妣QYE[ j!=.ёX(J=yvupH_Yi9nO=6G L7AW ~U8Qe3a ng%Ǭ+uěs}5Z<0Kg@+=8 J^H;8_>AGoM<7]ׂ̚z`)F= =f!OVC1l'_Ǝ&jөZuOM4nHct>KVC.6-T4VMϥs0GN.G(g 86b1 =%}(yR 8vދ.O3 f')ArῃPm)нȨ>{0{Vgc?V9qqҴ|&K1<E7knГhckz}47TĄTDi%HEziXK5^)&lܝ}5l_LXjq7C@L#A+Z؃@Z$^ U'd?PlHjd߅e^9'-@fU vUdCn]-܂ U}S8Hiq_ aJ:mݽs/A0>@ ?MIO\sHIXxX?c+߁upV@VmuFꛅGҜm[7P؉;4~u(NZ4 4?{ԭjBNsHtK90tXh >jߖ?Hܘ/P,:` ^ADN}Dqz>(̕|dFF(vw8r:;Nv-3E_tA?^]AzhUsNI IwyiIӅ3~cݗm\m9M t)! Ŀ~~ *xZ;*Qɀz0=xHZwб-kذr\BTC 8ח64a|\E/gט@SBp#61-~,C;p=T "eԱ؁ A8r!`o+wz;P\qe뜕4AMJzwQP" M o}DrR3rV^#͔x2Y3c#$.򴾿 W|\#@2V >Mw/|m$BF#*Be[?;(_Zu U7Z hHT w"k|xX"6 "v/"6Ct$n*'l$15Hn姽P ٩1{ T+(@㱇eY hnwTxj~t\ @Ӂ{{!Kp q kIH$,6Sg6S7jzj.&kGB@/ RGQ̈́ٮq$pos( x{_L @tL|V<o_SB PɆ\UPI Bgu@!‰97(U,ȏۻ 7(ޠ38=-CKҶ&Q ^qnJω^* c 3Gf6mZOp}f[l^_m 3cofow%J9Vb :Z뵒P=TPoJVUTQp}^5gۺ4h QJ]4'/č_^v6c D5ԓG8.yW}@đE@p'IieFP谊"}nʫi{-@m> hf69Ơ&n8 q~=*5Bxel@wS-l ƾVg0W|IEc%䊅.o~&|1$pAD)sZܿ2;a;lOAgcPftyr|x}/*լ5G(k Lyh_()/7ʹ[(~{JFt yN)tuZT[f(?@7~ t,͝x wfԃ\Ӑ i/$$vO8)PJUǷ Peb79=Z=*z#FDa>yŘ0+;kyFI$!◀mpe?Ah:S#CEV8Ro+LH2g,"aܙS=x{ \t;kO@p:0$wF@骐^3hSFVOt=`L%Emzx.3%zN6k[&G-t;^F!6KLt/%b^VHAȗtтb 3F @zDp =7ӯ1B {=#2 *77jnL2SGj?(@ h*/3pr |Pm4j9U[R91UNP{53<(ۅʃ"ku+5Px|!Z(pdMsyG iM 2rҫ9@ x-gk G19V6L8ET'2"Y9=` n^;ӳ= I ReQu<6py5swlNp^ J}UvwU/ih"۫QgA>܍io;Afaѯ )t# o#Q@[ӊ@PuB=K5:Śq  Qo2,wd" Jz9A>aUssoSۨ5h5uԥ7PeF4g8aY~ۼJokCݝ_萇E0: t.\.M b" bF9 xM(OZd.Cbi>НL b9m ~P@gMhÞ>M:5|eݯ8r[B^{^} }dۇtK2? NE3^/ x~ ^o?' KiSP@tCM2ON>9ށeQm `xA.Y0OMSΠlLb4j@ԪZY9:@ɠ&/Pl*~ٕ 7]Z'~%rn"Hl&bz#@8$Z &&)Ny⟈W kg 6Դ|)w%hh4Xg3/ÃY}C8Qw_ZwEmyj*~!)_6=c.>W͢&Q1WH4XD4~r.ĉdƉhEτhVAF@0:s€ c]:\({$oȀx?֧ gLFzgmyAʙYH#g-b-3]RY\ʛ$+IwS:f%@y>3q|_AuF]:Fl8]v[IR^ϊhb+577YPO.2]#-yoDvسJ_E:W7@~Q`^( {VPzLJ⢜HPĥ mӗYE@A9#򩏜XAn?*.6$loL+0JQDk@l#OhDtZU:̀qNYv>.4;|GJ)}~A JިM[G4Q%~֑?`&O?Bb߾t5ѺTsX !٪5>{IB`?dǮ|D'sOɻ4 bT@DdFցIleS2g5h/ORztEj$v~§&{8M9P 7HUJHCpErp5G+d@ ABTc\̓gD_O"nOQC'\J^ ǀ{iAvts^[/歘.D&9WvX@WeP]lJ#\GP::+ JOAq6m;o*|Ag vz.#TJHNAW*2H% JBHޕ|Dp '=sҁ%Z^=QmE ~>i%~'˼Gr.q#MNë۪b#\??i-q{ߊaڿhA]UBO,}Ă6x !fXwқw n@qIKǡˣK=2ɵڼ6\zT> 3R/7#ȈB2`f^Mt2ږ8L, ΂*tK9]0=я'KaRF˱6yTG ,9{`QyO =$l\eŐ{>,lr}d>bSŮ30pZ F|et?q후powj( w퀢O%[هJe N*CR:gJ+|,'UBCz;rw 7zoCp+ar>Vj~kBmH2r^nPsC䊕7EQlJ ^շKCF5v~4 QU%1KIn`JҞ:htMMXX/p h.f$bKNe1%:w~6'1ŐXn-% X z9!(u! /QT)'9_uꛔOQJ';D}\wꗿ_ W {Y}1>s<=!4|/3s0˙ٍE䞨X)o{󒣗X@ ĦXKX~%rejXط|>F=YNI0s>]}|~ ;`3̗%eMa_[;% s}úv0K 43*Od/F׷I5ð#[|o38WXXC'cB*ԉ͒h2іvAl]?vcw8iy]k֣;\x߿V 6 ]'E|D v%F3lkKL(( 򙇓}! Ϟ3&V,Gue;1"6 QbB2n4feρ};>88+ƚ4jB`ɿc'$N6 뼁Vط>ڦJ\Y@q8\ &}$*UУYU_q!Gv[zٗ;`~a3=ks; n-#R@GQx$(O0N)&-@$9y) ӷe`vܢ:lf {a1ƯTJ*kEV㏪cd.HpJL60_22NЏsᬉgu:&ŗ@vu^hz I.A/Lg=zl{:xj׸ &IC'r7=3Լպ,.1Ay|vP!T^8\($0,Ͼ9FG6H,xw3IJWvOujQϴ]H5$/Yݖ_MLێ I_oxXvڔX~|\̇XNl[c`eS:-uK!΂%z<ZǵGLjL|M1[u}fяr-0nN)KIgmS0m D[u q%tuz4 V3kaW\ef?ˆiAqu,&i"GXa|ׁܭƪ6iYK0q1|ccNysi j_.PmftۮC<0ٮ0lI,3b,̘E~7LT`vȒG̯[kIv0*I܀h9)eeַCM:x<0| CF,1yФ8V!*G{Ǩ½{:-J }NUTF$jO Rp*%BP`gbq2PU) j}|R1~{t~\ѳ"]d;1jGf>d: ʓܶ|^476;tk4j2qL>;v4ˣZ̒YrPPh; ;?5$#^-}[h%bŖŠ*3, ha.2va^i[d[zS`BâbFza$WcW'mXSBW (v) ?;VUmzM0ʨ3i~ znJfc,m_W[l` EvA/f`t&wB!%4kMS)ӝ uA>P=_a>Pa;@^/?lsiP3TZո3T<'f׾C$((vܻu2SORz' Cٰ;DVhǷ[اi^&nvmc&FW=)$f&l_Y!ltzߋyllg=A\! hQViW?c~P|17ɀuYcpt,4A+ t/+9P3U}cs;ar>̿I-JX_8W J7wL__ ?u= gP5sh 7Npq2`,;pLڮŀH} k( f.PHa*rHK>kF.je ક)?|=yF!W#a69gznC"V3mO[|:SWA+J#4Ems]L1:+ ج7׎(.bsH0(}:J.ބyfD(zzB?ҁ!!K:ՙ>"d2 lbqc6m, mdovwi+P嚶1#K.5'IiQ׶oTg_ȒA0F&S>ҍm}cl>{[~ݔ2Cb!eW s(z2ΐy[ z grڄ$73KW{O~"skʞUM E`!o93aHwq Do0}~r.rcY&a걵.E:wƬgɹ7Qy} n/2&ıym&Lt=:M FbWa0Ϯ iLUhwtr;z謝xږn.AsLM/4ζ|c,d}t(V+C!Ճ.@unCy6%F ;ۡ. * ˊR/(ݹ2aLVmy4P:vZq~0iE_ C`$̽g߱B8k!?xV A{e?b4[*1w>mebu,yT (t{tAoBUwӊI:<ǃJ\.c~xmέZMp٨$Ľ?w1 zT,y| 4^޿F c,G`hb7z n%Z!k,~b}QQ!XXnJ6DL3 yI4˗'9F0H7+|q<K;B4@'޸Y BK0KJJsF_þ}L_QO^*v15Xѡ[|-_͟F*0K!C>nU_ ]C͖vKlybPwK>Tfܤ,"ZTjęr7i /IuA B'z,@a뛭;vcr>+| ܵC}yT}2Zҝta[ΩG/XP(WS>.Zb]ߊ b- f,hloLFW\=FxR<mϳI|y}3X 0WT- 'zG_a,E~7~V}]U7 =Ǥ-Շޣx2έ7O}C`#yb ,a`D=*r췖EahzzDz$_"qu?{Z +GHem}Z!t?(͢Pq1Vn!ce g5ᗩbP;pK !K+yd&}-x2r_( s'HSdwI!_{ z3Sg>~O]zvfr%o=!sh;] $؟ee:lFO Y7-ۙ7`m"fnwȗX}$Shχ@.` y޷\/sCO EPP o?b(9{N _>!jB$GCln.R~M!"`v\U]0s;n/yRm NIXt}o_(,68WX %n?dM:V&K&C;yEUYt5g@?=iWy8 giKaC&XRRjBKα6OonHutm bW#))\1,n`4 e:SQ u JaP}9^ِWr^ d4=.&ųz qHv-dڟ}e:moz ܭ,My8_!qKܥK5KăߑÝxp~2ktrC/F^UЪ~E!ʳ! W?XaE7Z1¤t0|^ؗ}0&73z=[`N]DAc)!OgrA7apsz*x0)^t8Ԡ{!.Cs-yJ=:Br4ABhUHUx-1oBUˋ4BG޷M~@efS(f>W;yEՂs6*NԵ(}޼q(@CaY:oh wp1?8#erR9vUK CS<'&6j'Ho K9>nbv.(z'g57سzyvZQJp6D-B}.A5~ŔNbZ͊Fdl6#> џ,HΚߏ:JgS*9>elijO6-z2NKaIat$Lg~97;".K.X4O)9r5:߷+AmR+8Z;hmͬQSGINFUDIj*Kd+T%OSf@)C$^ 6~BVfwj>wH=2T蟀Djݵ] qS{(y!פH)CɣQ!9!bCR}CG Z;iqf;r5y ߷МmQ 5#b5'vP3>މqhE@ms,]_AL\9iYJ0"?{v ՠ3gĺ7)!&..r> ep[a+NMj9uЊ8}?R,0vf':Gց3ACp7xkO,xKc 0y󵯱ğN,~'{gE Uv :CW\5Qzy1?u00hr>1x shk_6+d"=.nfY4gIh@#q l*鞀5öPQtKx_'Vr߭JJ3A}\E. kwu!z[6O?aQA>9xh.< Ë&R [g*ҿ[ ] q1K#1tԼ! ce05 * )'`ѪRL ͋a"yE fQԥеwL*;`AQAywv4r Df{ya57;4"CUw?3L,;}wZ4c_ϺuhC-P /ڴ_ğYP\c[Ų_=ܢPȚWم;LGC:l EBD$"wõK(%'AمEh3EuL!2'EGŇ8!mD*m6^>P@qFv=m}9(V̱@`#G^Xc 6&I@c;`pX gݘ 4,GyHvWI iF2H+) 1_W:SR~\=w} 棐&"k!)p{8JwA ɰEz 50՛H=}:fw븯$d' _NBonBqY3|8<]HjECC|hZUlCaX||aO?qL?-,r*9V-띓o{AM(id&'>BP/6z6R9}%yr rd]|Jmrhw\=YEln3Mu^Lg4s_Kێ痠|(} {c0ՙtf7_|w9`#gE3 kєf0f)N_+/[@FMh&%Kz1O~>Xo(m? ?6(6Km 'C!%uq^ r я*^BfMw#M!dOB:3j0ߤ\;N${l;YV 3k@V@ 9vCscO;xSҹ"BY8Kɞ5u *|}']z0*9f_/%cĄxV'R\ .q`9"Og$!p7$+k4G ud#tey"YASlG7THWxAzޑ@$g7!qWwzq"m׳H@!!+ާ\Ц5oJ>~BƦ03lEfdza{B%1XAmDhcj%8u? t:b$\.\L!O,qsߞ!hqz2yZXM3mի)P|wplc׬'`tda { A{ɥ!fjzĪ79q{Vhv^Hֻ)r`UspBkBAݾ-/*/nV@-WXĝBHAUPN9l7Bg!uO=:/?( ROjmT,<E9]ȻtOD4'"P y.0Dl^x=O۟R1,&l0}Vzf$7(`f0LOvշ' %wBMh˭γ G{{AՖ m9ӵ_UŷrzHIIۏ2 ++$doݮT2$=\ĥW! Kx-TR߸ ub6+Yto_"2Dž ՠ6 l;8q~Vw\g) v q]>eW:ƽ)sy6Vy`t ܤ᜝ R_7Iղq'ʋ#6_?(ǩm=>^f  S늕*Ơiq*<{ l (z=M4#NZ>̀ġ"cHWrod|ӫҡ(ol|;ޙ?ΐhdi"û Z%LɾwMSbdkCRu4i,ď|Fν0!)`8sy f$+ ֣0~Xq}H(w͑_sJ VMSyӰ&l-$Ji[rD!S)j|;c|3ʛ!_5THUV~ 5}*F1q9bt} 6eO!tBEyD4 : <6 Ԛ&tp5x ~6Pˉ͘jiY-2֋KA- wՂ(IJ=c2ys%MĄ}KQ^by]J۩ [mm+us""I{!d PF>kZPYl (ŽcSE٨ې?x?|5T Uս@d H|q=3pAj},=>6eгƤGa-}ڭD`(Ȁ%v!}qJ;2dt>I{֙@BٗP|1(v^SNMH[\$; Tl? ёU3:)z>/[a _'Sdt=a eK`s?Z:_眷6v\7o[@˓ӓIJKڗrǕe/U@ I1bדiG]Ćdd6buS$7kۛtCќw,#1K4<&-ub\@7:lge,˯@[id# wj+5NEcvlU(Qs*4VoҵPxkaȋp*U~P3HIHuH4O8rxUKepD }.3E0Q&by50\ 2;@?ZmTAnh@AІV=:aFIPZ>HlKX'::$%9zSb~“Tb|m;1`;RsBLٻaLv,15gBQ$"b&=F^yFufW ƙg1Rή+bDЩ#$#_(b 5ED%ZBw{O4]f5 :+L;Ic#@`BTC6В $wO!۲4Y{rA'Ƈ!Gq|EQ27<]' "76u;HUy *}V-P <`i )CL-IUHv.+=sPIf3KۯO;^s7%.j"eaHܫ/y۹oc]jui2 u7hB<ľ6Zn T#h6?mVp;л%AKnk`9}U̓NT@w=\Z󫠳+M0 c* &ۉ͟ѫk㣽Ċe |"i l_bnُFbTt׹7?ƋΚ B"(}<1bĢao>J71J }evt:9kK0L<&_*`X%Zj#~x5:oejƠ_I7>o>;橣MzsHqW@uAScZ2A-G-di#Z VH*9zlކ͊Grq|qz>  M4N7z %:NWBeڈWֹ1mGt@Wl7' zҵbg?Ga 7ya5gBP(>=Ob΂?W?&lL< rU^'u(,W.uF2Fd /lAPJP2A:xXۭ04> bEDNbفObiD`G =v1Wg~F)1?ĿMĐ뵑~xC.9];)Z.Dw^S{3ז>σ>*wonxѵ"G'[@ 8L0VsV/`UH|aQ?]uGrGdƃ1%[ w%zO HP[Ԍd`0 C:HVǽW^9ŒS ]{f qt4 (ێU1@jMSf(hhVȮ@ukT4B)jbi{.нc4ȜUf0m>9 bƺrn @[.( ^ҰHl< ͧE, &l#"mаļ{Ŵܓe&bVMZ+ҙ#Id"0O1{Rr9#R:+ |ȩDىDᲷ:J{܄śuJm,d8K9mjn;i'e|"~hs}G=Q^'czM4.hޟw"$^tB7$6Y(:@elvU9^IA+=ޑ=H3v ِܙl7{uIOC[ HR`'Hhbb,_%[%>?p:;N&_@/'$uWӏIPKhHTgfuA>tF AW( ֛C.b@b1Z1ST0R3"UC6ňCd$ek?| QUJ,S-܇dX7QڷX^pBP}Bլ Ѵ鮯 kďw<+uď! nr]жvjW\^=7ʏg+~ɣNʏvmS߿~]y?urݵys?2ѾyۗE/j+c2涹;GUٳwF^S{e\vuyeSF^ްi ֔93饦̾*ݔWg(/?VcOKi>9{aȧ3}I'l{A 6f; x֯֝x5'7>f獳¯ߕmS;Ú,~ҽͅp? .Ӿ<|ɪ~>yg~B{ WuS n?s {SaѺpۛaQ÷okzXآ#z5|r녿]s07ѧO㖇7n;v慰N>r^]5ٷ$мU>~/F4ۑWoъy-k_:6hH^ž ]*w[s.;#ΪhO^k㯮#1~kqv^rg>y5wXrz^i>t^|x`;®Qq~d3ey2}:̧F,oz2_[Vuo?6|آ'^^} z8/kpy=Iټ%C^10o]7h4ɺ,X氝yۻnعc^̛5/)?p`(vs袚/mksڋ.&8̏_~/yS _85nݾkw~bśOoi(k~qg_P-|ϼcְ\v>siY엷^p=AYɩ;Fsۯ1g;!/^Z;ڢg_Trc^{Bywͻmlq'GnMuvŰc¯?4'Zի>mN;So8s1]_{eȋG~jۣa)=,|-|5;_ӟl{+pM s6u] ~_f5¬;l޹e׽]'{7 QMg?93'=e'uZkQWSnsi?o/:,k٤ ~0ozCF}_F^]}oC=ffF6;M7[L;1 o} =3^{6/ Y=B-?;oh8oj~7]aOΏ}ޭqi^o]y#[GU6o}y.Hy#=$l=cLc:{U˟_as;mN߾$,vGegaٹOAYrLUۗo'W mk` e3!3jUVUǯ^m##oC^xy%]OSWҰ eNϫit}Ml++e/;eL<IN!7k}߅S*<|[+O3~{ ITۮk#'=1j;!|됷sRXvˆ4r KWRy1dX^Όڮ;\ԩ+|p|twO7X>>srg&}g_|dqSxJt0k\^);{MV\?Qaw)^y678agw{Ҧ&xputU7ˎ~r61# GXi}l_?#-aG W.oϽ//nh~Ra'|j9Ky?\[^e^ɿ%?"'fy> wxaO8{; =OmWe9pE?,/3nyɸċϾ1/u/keJR'ߞ͏ZI|A~}+.sި 7JS;͏/gMX1_'3nO[>ze7u>ݝ7]KUsֶTޠ=V]^n&TOz]}͏:-}i$l{s7[{CXsG<<ʍτ/ο=N]$H~ɥcKv s>‡}{?l,LiԮ%z=ı߾HSÄo 8K\绦W\ͣg|;vƴGø燏(1Q.}'/? _?-a]g8/;=}ο2/}ίQKL:c[js ;LyuG^q5Ѽb1T~{qς[ ^ڼ̈ Wm.);ma'?pgv73ڏ~w dy'_1 5vKo ﷻO,wR:txǯI6^{ozwxe\ZIa°vhtǴ?D;}7< ^dxG#ׄǵW-x]9VZuãʷD7e;\_Ӂ|o,iXZ0KI FWJ:Ճ=۾W7/QjC;7K9e舊4:sѰ#]W.ju]^\[?C^e]?Zλ\^ݼd .4Mn ?vS®xަ^?ƯO>¼ܐkYgr[C8⓼|dP?4cgC&}~kA͝yKx3 G6{1oK/Oٱ6?{l8y!f/=oXio׽?ܺo}Qis?WK|so|ٕoNbӎ/6;&8ÂN\a3Owxo`χ/:_1Տ4j6>YazsܻtcC~zt[x}ŕy`Yxeguex?arFxf=[ -.7}9yҡMKoj0z+}2>t%g1F̼_cLh;aȫlӽaTUo~՜0|kG) uUU?ԙ-#מ1SσG]21lYPhNaǖퟻ* {'z8hi۽a^#*䥧SKSJhВyRz1a_a{FUo+?W_>Sc˥_Uϼy'Y~G\z硆-;|ԡw~O8uP^wԙ{Hü+SdOQK+w%oOl7Yt5-o;+=I~11_Cg~.=W_[/rUI/?\{]jQqիf#/^wٽK ;;Yvk*l{hM3[Mv]>0^8nP +wDG/딷v_Fߝ0Q|.c 9G^f[ou7y#Tf9:W^CSc[:~s²IoLjo[WY_v'6m޿daڂo[xqځo;l/n'L*i'L w;t* O{o.>O\eVxFz^TKªpUO|ݿ;x7rw(ܕW-?^WN]60{lEJysffo%zч^sQioU g9.孉~6\={60/,V.V9 ߠƣޟ)u_&tuW80w #Ku#:o1y9A<yלy K,ȏjz3'yh嵻VQyG6?UiMCpC[%һaWv–/ juR!uO*V:~z˾ _{/7?YbY2gm_ .ٍ? U+ Q>eڻ_[c'-ݿ?q_wtU->Nq˗n hyeI:Lk?< Ѝ|zb|}I=BǚCF[歾i_■;z;zl|Q/bƹN 7t}ߵ-'|Y6tU/;\QW=t:3G~⋯ ~taɷ5ޜ6|ۦ/ [iön*M/64l7j w+kjc? igv~#_j٭Ꮣ.oa~E$l־/>KK x2peT_{^wNy&W4yּVG?Q>ަڬ4_ןsF캳nש̭G5 WժιՎ)u/ꟹOζ'!j6>F#8- 3voyo|X §OiP՗805j|z~hW;])ix^ӱN3^/x;FܫLJv_C7W0bK/z0viS]7o ӏj; Vs6 [JC׬c{dSB#?YjR+h38luEKJfn+6hzƽn/W;{ 9+WK(SDJ(QDo~CwG#ߑQкx/-^Vxū! )nHqCRܐ7! )nhqCZ7 -nhqCVܰ7a +nXqÊVܰFT܈Qq#*nDō7FT܈qq#.nō7F\܈qq#.n$ō7FRHIq#)n$ō7FZHiq#-nō7FVȊYq#+ndō7FVQк?OLL|k_+Z V𵂯|M|M|M|M|M|M|M|M|M|M|M}M}M}M}M}M}M}M}M}M}||||||||||-"_|-"_|-b_}-b_}-b_}-_K|-_K|-R_K}-R_K}-R_K}-2_|-2_|-5oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖈷D%-oxK["񖨷D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QozK[D%-QoyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[b󖘷ļ%-1oyK[bDޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$Dޒ[yK"oI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$ޒ[{KboI-%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$$ޒ[xKoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$ޒ[zKRoI-I%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yK2oI-ɼ%$dޒ[yKbKZcwV܆;Np[n[n[n]`W+ v]bWU*v]ŮbWk5v ]îaװk5F؍a7nv#F؍c7n1vc؍c7n v&M`7n)vSMb7n)vSfͰa7n v3fE U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*W^ЫzU@ U*WJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+AJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ERJ+ER+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2+C 2*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*B"*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*Fb*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*A*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*ER*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C2*C]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] 5iw}ϙc( Td)]JAN$:)`)T>֦-mxFi4!&Wss99ׂ^>k~|o?~|o?~|o?~|o?~|o?~|o?~|o?~|o?~|o?~|o?~|o?~|o?÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{÷o=|{ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}ۇo}w|3>woo}7>=qߺO=}O~gN3w_N'\w;돝w33o<ٽry|||~}/_s99W^}u9W\8ss?z>r>|>|{=}t}g{ܻz{{Ǚ{y-gݭ:so<߳|yu̟g|Y_u|r|Y׏^=9grY7/xu↓3w圯s=ۯ{__O۞}?}yO9o?ˇ~_E?|[wy_e'է'r?xſ#^W]zm/~͗ɫo[^˟^^Ϲ~/kn~]x{/7;wɭq[cpE3wݸyC쑗nɺ3x+ܹE/{%=ޗo?_G;O_H$mda/man/0000755000176200001440000000000013675517170011602 5ustar liggesusersmda/man/polyreg.Rd0000644000176200001440000000135113653663715013555 0ustar liggesusers\name{polyreg} \alias{polyreg} \alias{predict.polyreg} \title{Polynomial Regression} \description{ Simple minded polynomial regression. } \usage{ polyreg(x, y, w, degree = 1, monomial = FALSE, \dots) } \arguments{ \item{x}{predictor matrix.} \item{y}{response matrix.} \item{w}{optional (positive) weights.} \item{degree}{total degree of polynomial basis (default is 1).} \item{monomial}{If \code{TRUE} a monomial basis is used (no cross terms). Default is \code{FALSE}.} \item{\dots}{currently not used.} } \value{ A polynomial regression fit, containing the essential ingredients for its \code{predict} method. } %%\seealso{ %% \code{\link{predict.polyreg}} %%} % Converted by Sd2Rd version 0.3-3. \keyword{regression} mda/man/predict.mda.Rd0000644000176200001440000000423513653663715014272 0ustar liggesusers\name{predict.mda} \alias{predict.mda} \title{Classify by Mixture Discriminant Analysis} \description{ Classify observations in conjunction with \code{mda}. } \usage{ \method{predict}{mda}(object, newdata, type, prior, dimension, g, \dots) } \arguments{ \item{object}{a fitted mda object.} \item{newdata}{new data at which to make predictions. If missing, the training data is used.} \item{type}{kind of predictions: \code{type = "class"} (default) produces a fitted factor, \code{type = "variates"} produces a matrix of discriminant variables (note that the maximal dimension is determined by the number of subclasses), \code{type = "posterior"} produces a matrix of posterior probabilities (based on a gaussian assumption), \code{type = "hierarchical"} produces the predicted class in sequence for models of dimensions specified by \code{dimension} argument.} \item{prior}{the prior probability vector for each class; the default is the training sample proportions.} \item{dimension}{the dimension of the space to be used, no larger than the dimension component of \code{object}, and in general less than the number of subclasses. \code{dimension} can be a vector for use with \code{type = "hierarchical"}.} \item{g}{???} \item{\dots}{further arguments to be passed to or from methods.} } \value{ An appropriate object depending on \code{type}. \code{object} has a component \code{fit} which is regression fit produced by the \code{method} argument to \code{mda}. There should be a \code{predict} method for this object which is invoked. This method should itself take as input \code{object} and optionally \code{newdata}. } \seealso{ \code{\link{mda}}, \code{\link{fda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{softmax}}, \code{\link{confusion}} } \examples{ data(glass) samp <- sample(1:nrow(glass), 100) glass.train <- glass[samp,] glass.test <- glass[-samp,] glass.mda <- mda(Type ~ ., data = glass.train) predict(glass.mda, glass.test, type = "post") # abbreviations are allowed confusion(glass.mda, glass.test) } \keyword{classif} % Converted by Sd2Rd version 0.3-3. mda/man/coef.fda.Rd0000644000176200001440000000233513653663715013544 0ustar liggesusers\name{coef.fda} \alias{coef.fda} \alias{coef.mda} \title{ Produce coefficients for an fda or mda object } \description{ a method for coef for extracting the canonical coefficients from an fda or mda object } \usage{ \method{coef}{fda}(object, \dots) } \arguments{ \item{object}{an \code{fda} or \code{mda} object. } \item{\dots}{ not relevant } } \details{ See the references for details. } \value{ A coefficient matrix} \author{ Trevor Hastie and Robert Tibshirani } \seealso{ \code{\link{predict.fda}}, \code{\link{plot.fda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{softmax}}, \code{\link{confusion}}, %% \code{\link{coefficients.fda}} } \references{ ``Flexible Disriminant Analysis by Optimal Scoring'' by Hastie, Tibshirani and Buja, 1994, JASA, 1255-1270. ``Penalized Discriminant Analysis'' by Hastie, Buja and Tibshirani, 1995, Annals of Statistics, 73-102. ``Elements of Statisical Learning - Data Mining, Inference and Prediction'' (2nd edition, Chapter 12) by Hastie, Tibshirani and Friedman, 2009, Springer } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) coef(irisfit) mfit=mda(Species~.,data=iris,subclass=2) coef(mfit) }\keyword{classif} mda/man/bruto.Rd0000644000176200001440000000711114234050470013207 0ustar liggesusers\name{bruto} \alias{bruto} \title{ Fit an Additive Spline Model by Adaptive Backfitting } \description{ Fit an additive spline model by adaptive backfitting. } \usage{ bruto(x, y, w, wp, dfmax, cost, maxit.select, maxit.backfit, thresh = 0.0001, trace.bruto = FALSE, start.linear = TRUE, fit.object, \dots) } \arguments{ \item{x}{a matrix of numeric predictors (does not include the column of 1s).} \item{y}{a vector or matrix of responses.} \item{w}{optional observation weight vector.} \item{wp}{optional weight vector for each column of \code{y}; the RSS and GCV criteria use a weighted sum of squared residuals.} \item{dfmax}{a vector of maximum df (degrees of freedom) for each term.} \item{cost}{cost per degree of freedom; default is 2.} \item{maxit.select}{maximum number of iterations during the selection stage.} \item{maxit.backfit}{maximum number of iterations for the final backfit stage (with fixed lambda).} \item{thresh}{convergence threshold (default is 0.0001); iterations cease when the relative change in GCV is below this threshold.} \item{trace.bruto}{logical flag. If \code{TRUE} (default) a progress report is printed during the fitting.} \item{start.linear}{logical flag. If \code{TRUE} (default), the model starts with the linear fit.} \item{fit.object}{This the object returned by \code{bruto()}; if supplied, the same model is fit to the presumably new \code{y}.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ A multiresponse additive model fit object of class \code{"bruto"} is returned. The model is fit by adaptive backfitting using smoothing splines. If there are \code{np} columns in \code{y}, then \code{np} additive models are fit, but the same amount of smoothing (df) is used for each term. The procedure chooses between \code{df = 0} (term omitted), \code{df = 1} (term linear) or \code{df > 0} (term fitted by smoothing spline). The model selection is based on an approximation to the GCV criterion, which is used at each step of the backfitting procedure. Once the selection process stops, the model is backfit using the chosen amount of smoothing. A bruto object has the following components of interest: \item{lambda}{a vector of chosen smoothing parameters, one for each column of \code{x}.} \item{df}{the df chosen for each column of \code{x}.} \item{type}{a factor with levels \code{"excluded"}, \code{"linear"} or \code{"smooth"}, indicating the status of each column of \code{x}.} \item{gcv.select gcv.backfit df.select}{The sequence of gcv values and df selected during the execution of the function.} \item{nit}{the number of iterations used.} \item{fitted.values}{a matrix of fitted values.} \item{residuals}{a matrix of residuals.} \item{call}{the call that produced this object.} } \references{ Trevor Hastie and Rob Tibshirani, \emph{Generalized Additive Models}, Chapman and Hall, 1990 (page 262). Trevor Hastie, Rob Tibshirani and Andreas Buja ``Flexible Discriminant Analysis by Optimal Scoring'' JASA 1994, 89, 1255-1270. } \seealso{ \code{predict.bruto} } \examples{ data(trees) fit1 <- bruto(trees[,-3], trees[3]) fit1$type fit1$df ## examine the fitted functions par(mfrow=c(1,2), pty="s") Xp <- matrix(sapply(trees[1:2], mean), nrow(trees), 2, byrow=TRUE) for(i in 1:2) { xr <- sapply(trees, range) Xp1 <- Xp; Xp1[,i] <- seq(xr[1,i], xr[2,i], len=nrow(trees)) Xf <- predict(fit1, Xp1) plot(Xp1[ ,i], Xf, xlab=names(trees)[i], ylab="", type="l") } } % Converted by Sd2Rd version 0.3-3. \keyword{smooth} mda/man/ESL.mixture.Rd0000644000176200001440000000212314234051662014175 0ustar liggesusers\name{ESL.mixture} \alias{ESL.mixture} \title{Mixture example from "Elements of Statistical Learning"} \description{ A list with training data and other details for the mixture example } \usage{data(ESL.mixture)} \format{ This list contains the following elements: \describe{ \item{x}{a 200x2 matrix of predictors.} \item{y}{a 200 vector of y values taking values 0 or 1.} \item{xnew}{a 6831x2 matrix of prediction points, on a 69x99 grid.} \item{prob}{a vector of 6831 probabilities - the true probabilities of a 1 at each point in \code{xnew}.} \item{marginal}{the marginal distribution of the predictors t each point in \code{xnew}.} \item{px1}{grid values for first coordinate in \code{xnew}.} \item{px2}{grid values for second coordinate in \code{xnew}.} \item{means}{a 20 x 2 matrix of means used in the generation of these data.} } } \source{ "Elements of Statistical Learning (second edition)", Hastie, T., Tibshirani, R. and Friedman, J. (2009), Springer, New York. \url{https://hastie.su.domains/ElemStatLearn/} } \keyword{datasets} mda/man/predict.mars.Rd0000644000176200001440000000121413653663715014465 0ustar liggesusers\name{predict.mars} \alias{predict.mars} \title{Predict method for MARS Objects} \description{ Predicted values based on `mars' multivariate adaptive regression spline models. } \usage{ \method{predict}{mars}(object, newdata, \dots) } \arguments{ \item{object}{an object of class \code{"mars"}.} \item{newdata}{values at which predictions are to be made.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ the fitted values. } \seealso{ \code{\link{mars}}, \code{\link{predict}}, \code{\link{model.matrix.mars}} } %%\examples{ %%## see help for mars() %%} % Converted by Sd2Rd version 0.3-3. \keyword{smooth} mda/man/confusion.Rd0000644000176200001440000000221413653663715014076 0ustar liggesusers\name{confusion} \alias{confusion} \alias{confusion.default} \alias{confusion.list} \alias{confusion.fda} \title{Confusion Matrices} \description{ Compute the confusion matrix between two factors, or for an fda or mda object. } \usage{ \method{confusion}{default}(object, true, \dots) \method{confusion}{fda}(object, data, \dots) } \arguments{ \item{object}{the predicted factor, or an fda or mda model object.} \item{true}{the true factor.} \item{data}{a data frame (list) containing the test data.} \item{\dots}{further arguments to be passed to or from methods.} } \details{ This is a generic function. } \value{ For the default method essentially \code{table(object, true)}, but with some useful attribute(s). } \seealso{ \code{\link{fda}}, \code{\link{predict.fda}} } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) confusion(predict(irisfit, iris), iris$Species) ## Setosa Versicolor Virginica ## Setosa 50 0 0 ## Versicolor 0 48 1 ## Virginica 0 2 49 ## attr(, "error"): ## [1] 0.02 } % Converted by Sd2Rd version 0.3-3. \keyword{category} mda/man/model.matrix.mars.Rd0000644000176200001440000000160713653663715015444 0ustar liggesusers\name{model.matrix.mars} \alias{model.matrix.mars} \title{Produce a Design Matrix from a `mars' Object} \description{Produce a design matrix from a `mars' object.} \usage{ \method{model.matrix}{mars}(object, x, which, full = FALSE, \dots) } \arguments{ \item{object}{a mars object.} \item{x}{optional argument; if supplied, the mars basis functions are evaluated at these new observations.} \item{which}{which columns should be used. The default is to use the columns described by the component \code{selected.terms} on \code{object}.} \item{full}{if \code{TRUE} the entire set of columns are selected, even redundant ones. This is used for updating a mars fit.} \item{\dots}{further arguments to be passed from or to methods.} } \value{ A model matrix corresponding to the selected columns. } \seealso{ \code{\link{mars}}, \code{\link{predict.mars}} } \keyword{models} mda/man/mars.Rd0000644000176200001440000001041713653663715013041 0ustar liggesusers\name{mars} \alias{mars} \title{Multivariate Adaptive Regression Splines} \description{ Multivariate adaptive regression splines. } \usage{ mars(x, y, w, wp, degree, nk, penalty, thresh, prune, trace.mars, forward.step, prevfit, \dots) } \arguments{ \item{x}{a matrix containing the independent variables.} \item{y}{a vector containing the response variable, or in the case of multiple responses, a matrix whose columns are the response values for each variable.} \item{w}{an optional vector of observation weights (currently ignored).} \item{wp}{an optional vector of response weights.} \item{degree}{an optional integer specifying maximum interaction degree (default is 1).} \item{nk}{an optional integer specifying the maximum number of model terms.} \item{penalty}{an optional value specifying the cost per degree of freedom charge (default is 2).} \item{thresh}{an optional value specifying forward stepwise stopping threshold (default is 0.001).} \item{prune}{an optional logical value specifying whether the model should be pruned in a backward stepwise fashion (default is \code{TRUE}).} \item{trace.mars}{an optional logical value specifying whether info should be printed along the way (default is \code{FALSE}).} \item{forward.step}{an optional logical value specifying whether forward stepwise process should be carried out (default is \code{TRUE}).} \item{prevfit}{optional data structure from previous fit. To see the effect of changing the penalty parameter, one can use prevfit with \code{forward.step = FALSE}.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ An object of class \code{"mars"}, which is a list with the following components: \item{call}{call used to \code{mars}.} \item{all.terms}{term numbers in full model. \code{1} is the constant term. Remaining terms are in pairs (\code{2 3}, \code{4 5}, and so on). \code{all.terms} indicates nonsingular set of terms.} \item{selected.terms}{term numbers in selected model.} \item{penalty}{the input penalty value.} \item{degree}{the input degree value.} \item{thresh}{the input threshold value.} \item{gcv}{gcv of chosen model.} \item{factor}{matrix with \eqn{ij}-th element equal to 1 if term \eqn{i} has a factor of the form \eqn{x_j > c}, equal to \eqn{-1} if term \eqn{i} has a factor of the form \eqn{x_j \le c}, and to 0 if \eqn{xj} is not in term \eqn{i}.} \item{cuts}{matrix with \eqn{ij}-th element equal to the cut point \eqn{c} for variable \eqn{j} in term \eqn{i}.} \item{residuals}{residuals from fit.} \item{fitted}{fitted values from fit.} \item{lenb}{length of full model.} \item{coefficients}{least squares coefficients for final model.} \item{x}{a matrix of basis functions obtained from the input x matrix.} } \note{ This function was coded from scratch, and did not use any of Friedman's mars code. It gives quite similar results to Friedman's program in our tests, but not exactly the same results. We have not implemented Friedman's anova decomposition nor are categorical predictors handled properly yet. Our version does handle multiple response variables, however. } \author{ Trevor Hastie and Robert Tibshirani } \references{ J. Friedman, ``Multivariate Adaptive Regression Splines'' (with discussion) (1991). \emph{Annals of Statistics}, \bold{19}/1, 1--141. } \seealso{ \code{\link{predict.mars}}, \code{\link{model.matrix.mars}}. Package \pkg{earth} also provides multivariate adaptive regression spline models based on the Hastie/Tibshirani mars code in package \pkg{mda}, adding some extra features. It can be used in the \code{method} argument of \code{fda} or \code{mda}. } \examples{ data(trees) fit1 <- mars(trees[,-3], trees[3]) showcuts <- function(obj) { tmp <- obj$cuts[obj$sel, ] dimnames(tmp) <- list(NULL, names(trees)[-3]) tmp } showcuts(fit1) ## examine the fitted functions par(mfrow=c(1,2), pty="s") Xp <- matrix(sapply(trees[1:2], mean), nrow(trees), 2, byrow=TRUE) for(i in 1:2) { xr <- sapply(trees, range) Xp1 <- Xp; Xp1[,i] <- seq(xr[1,i], xr[2,i], len=nrow(trees)) Xf <- predict(fit1, Xp1) plot(Xp1[ ,i], Xf, xlab=names(trees)[i], ylab="", type="l") } } % Converted by Sd2Rd version 0.3-3. \keyword{smooth} mda/man/predict.bruto.Rd0000644000176200001440000000207413653663715014663 0ustar liggesusers\name{predict.bruto} \alias{predict.bruto} \title{Predict method for BRUTO Objects} \description{ Predicted values based on `bruto' additive spline models which are fit by adaptive backfitting. } \usage{ \method{predict}{bruto}(object, newdata, type=c("fitted", "terms"), \dots) } \arguments{ \item{object}{a fitted bruto object} \item{newdata}{values at which predictions are to be made.} \item{type}{if type is \code{"fitted"}, the fitted values are returned. If type is \code{"terms"}, a list of fitted terms is returned, each with an \code{x} and \code{y} component. These can be used to show the fitted functions.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ Either a fit matrix or a list of fitted terms. } \seealso{ \code{\link{bruto}}, \code{\link{predict}} } \examples{ data(trees) fit1 <- bruto(trees[,-3], trees[3]) fitted.terms <- predict(fit1, as.matrix(trees[,-3]), type = "terms") par(mfrow=c(1,2), pty="s") for(tt in fitted.terms) plot(tt, type="l") } % Converted by Sd2Rd version 0.3-3. \keyword{smooth} mda/man/mspline.Rd0000644000176200001440000000233413653663715013545 0ustar liggesusers\name{mspline} \alias{mspline} \title{ Vector Smoothing Spline } \description{ Fit a smoothing spline to a matrix of responses, single x. } \usage{ mspline(x, y, w, df = 5, lambda, thresh = 1e-04, \dots) } \arguments{ \item{x}{ x variable (numeric vector). } \item{y}{ response matrix. } \item{w}{ optional weight vector, defaults to a vector of ones. } \item{df}{ requested degrees of freedom, as in \code{smooth.spline}. } \item{lambda}{ can provide penalty instead of df. } \item{thresh}{ convergence threshold for df inversion (to lambda). } \item{\dots}{ holdall for other arguments. } } \details{ This function is based on the ingredients of \code{smooth.spline}, and allows for simultaneous smoothing of multiple responses } \value{ A list is returned, with a number of components, only some of which are of interest. These are \item{lambda}{The value of lambda used (in case df was supplied)} \item{df}{The df used (in case lambda was supplied)} \item{s}{A matrix like \code{y} of smoothed responses} \item{lev}{Self influences (diagonal of smoother matrix)} } \author{ Trevor Hastie } \seealso{ \code{\link{smooth.spline}} } \examples{ x=rnorm(100) y=matrix(rnorm(100*10),100,10) fit=mspline(x,y,df=5) } mda/man/mda.start.Rd0000644000176200001440000000216613653663715013776 0ustar liggesusers\name{mda.start} \alias{mda.start} \title{Initialization for Mixture Discriminant Analysis} \description{Provide starting weights for the \code{mda} function which performs discriminant analysis by gaussian mixtures.} \usage{ mda.start(x, g, subclasses = 3, trace.mda.start = FALSE, start.method = c("kmeans", "lvq"), tries = 5, criterion = c("misclassification", "deviance"), \dots) } \arguments{ \item{x}{The x data, or an mda object.} \item{g}{The response vector g.} \item{subclasses}{number of subclasses per class, as in \code{mda}.} \item{trace.mda.start}{Show results of each iteration.} \item{start.method}{Either \code{"kmeans"} or \code{"lvq"}. The latter requires package \bold{class} (from the \bold{VR} package bundle.} \item{tries}{Number of random starts.} \item{criterion}{By default, classification errors on the training data. Posterior deviance is also an option.} \item{\dots}{arguments to be passed to the mda fitter when using posterior deviance.} } \value{ A list of weight matrices, one for each class. } % Converted by Sd2Rd version 0.3-3. \keyword{classif} mda/man/gen.ridge.Rd0000644000176200001440000000210113653663715013730 0ustar liggesusers\name{gen.ridge} \alias{gen.ridge} \alias{predict.gen.ridge} \title{Penalized Regression} \description{ Perform a penalized regression, as used in penalized discriminant analysis. } \usage{ gen.ridge(x, y, weights, lambda=1, omega, df, \dots) } \arguments{ \item{x, y, weights}{the x and y matrix and possibly a weight vector.} \item{lambda}{the shrinkage penalty coefficient.} \item{omega}{a penalty object; omega is the eigendecomposition of the penalty matrix, and need not have full rank. By default, standard ridge is used.} \item{df}{an alternative way to prescribe lambda, using the notion of equivalent degrees of freedom.} \item{\dots}{currently not used.} } \value{ A generalized ridge regression, where the coefficients are penalized according to omega. See the function definition for further details. No functions are provided for producing one dimensional penalty objects (omega). \code{\link{laplacian}()} creates a two-dimensional penalty object, suitable for (small) images. } \seealso{\code{\link{laplacian}}} \keyword{regression} mda/man/softmax.Rd0000644000176200001440000000163213653663715013557 0ustar liggesusers\name{softmax} \alias{softmax} \title{Find the Maximum in Each Row of a Matrix} \description{Find the maximum in each row of a matrix.} \usage{ softmax(x, gap = FALSE) } \arguments{ \item{x}{a numeric matrix.} \item{gap}{if \code{TRUE}, the difference between the largest and next largest column is returned.} } \value{ A factor with levels the column labels of \code{x} and values the columns corresponding to the maximum column. If \code{gap = TRUE} a list is returned, the second component of which is the difference between the largest and next largest column of \code{x}. } \seealso{ \code{\link{predict.fda}}, \code{\link{confusion}}, \code{\link{fda}} \code{\link{mda}} } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) posteriors <- predict(irisfit, type = "post") confusion(softmax(posteriors), iris[, "Species"]) } % Converted by Sd2Rd version 0.3-3. \keyword{utilities} mda/man/fda.Rd0000644000176200001440000001304413653663715012630 0ustar liggesusers\name{fda} \alias{fda} \alias{print.fda} \title{Flexible Discriminant Analysis} \description{ Flexible discriminant analysis.} \usage{ fda(formula, data, weights, theta, dimension, eps, method, keep.fitted, \dots) } \arguments{ \item{formula}{of the form \code{y~x} it describes the response and the predictors. The formula can be more complicated, such as \code{y~log(x)+z} etc (see \code{\link{formula}} for more details). The response should be a factor representing the response variable, or any vector that can be coerced to such (such as a logical variable).} \item{data}{data frame containing the variables in the formula (optional).} \item{weights}{an optional vector of observation weights.} \item{theta}{an optional matrix of class scores, typically with less than \code{J-1} columns.} \item{dimension}{The dimension of the solution, no greater than \code{J-1}, where \code{J} is the number classes. Default is \code{J-1}.} \item{eps}{a threshold for small singular values for excluding discriminant variables; default is \code{.Machine$double.eps}.} \item{method}{regression method used in optimal scaling. Default is linear regression via the function \code{polyreg}, resulting in linear discriminant analysis. Other possibilities are \code{mars} and \code{bruto}. For Penalized Discriminant analysis \code{gen.ridge} is appropriate.} \item{keep.fitted}{a logical variable, which determines whether the (sometimes large) component \code{"fitted.values"} of the \code{fit} component of the returned fda object should be kept. The default is \code{TRUE} if \code{n * dimension < 5000}.} \item{\dots}{additional arguments to \code{method}.} } \value{ an object of class \code{"fda"}. Use \code{predict} to extract discriminant variables, posterior probabilities or predicted class memberships. Other extractor functions are \code{coef}, \code{confusion} and \code{plot}. The object has the following components: \item{percent.explained}{the percent between-group variance explained by each dimension (relative to the total explained.)} \item{values}{optimal scaling regression sum-of-squares for each dimension (see reference). The usual discriminant analysis eigenvalues are given by \code{values / (1-values)}, which are used to define \code{percent.explained}.} \item{means}{class means in the discriminant space. These are also scaled versions of the final theta's or class scores, and can be used in a subsequent call to \code{fda} (this only makes sense if some columns of theta are omitted---see the references).} \item{theta.mod}{(internal) a class scoring matrix which allows \code{predict} to work properly.} \item{dimension}{dimension of discriminant space.} \item{prior}{class proportions for the training data.} \item{fit}{fit object returned by \code{method}.} \item{call}{the call that created this object (allowing it to be \code{update}-able)} \item{confusion}{confusion matrix when classifying the training data.} The \code{method} functions are required to take arguments \code{x} and \code{y} where both can be matrices, and should produce a matrix of \code{fitted.values} the same size as \code{y}. They can take additional arguments \code{weights} and should all have a \code{\dots} for safety sake. Any arguments to \code{method} can be passed on via the \code{\dots} argument of \code{fda}. The default method \code{\link{polyreg}} has a \code{degree} argument which allows polynomial regression of the required total degree. See the documentation for \code{\link{predict.fda}} for further requirements of \code{method}. The package \code{earth} is suggested for this package as well; \code{earth} is a more detailed implementation of the mars model, and works as a \code{method} argument. } \author{ Trevor Hastie and Robert Tibshirani } \seealso{ \code{\link{predict.fda}}, \code{\link{plot.fda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{softmax}}, \code{\link{confusion}}, %% \code{\link{coefficients.fda}} } \references{ ``Flexible Disriminant Analysis by Optimal Scoring'' by Hastie, Tibshirani and Buja, 1994, JASA, 1255-1270. ``Penalized Discriminant Analysis'' by Hastie, Buja and Tibshirani, 1995, Annals of Statistics, 73-102. ``Elements of Statisical Learning - Data Mining, Inference and Prediction'' (2nd edition, Chapter 12) by Hastie, Tibshirani and Friedman, 2009, Springer } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) irisfit ## fda(formula = Species ~ ., data = iris) ## ## Dimension: 2 ## ## Percent Between-Group Variance Explained: ## v1 v2 ## 99.12 100.00 ## ## Degrees of Freedom (per dimension): 5 ## ## Training Misclassification Error: 0.02 ( N = 150 ) confusion(irisfit, iris) ## Setosa Versicolor Virginica ## Setosa 50 0 0 ## Versicolor 0 48 1 ## Virginica 0 2 49 ## attr(, "error"): ## [1] 0.02 plot(irisfit) coef(irisfit) ## [,1] [,2] ## [1,] -2.126479 -6.72910343 ## [2,] -0.837798 0.02434685 ## [3,] -1.550052 2.18649663 ## [4,] 2.223560 -0.94138258 ## [5,] 2.838994 2.86801283 marsfit <- fda(Species ~ ., data = iris, method = mars) marsfit2 <- update(marsfit, degree = 2) marsfit3 <- update(marsfit, theta = marsfit$means[, 1:2]) ## this refits the model, using the fitted means (scaled theta's) ## from marsfit to start the iterations } \keyword{classif} % Converted by Sd2Rd version 0.3-3. mda/man/predict.fda.Rd0000644000176200001440000000412013653663715014254 0ustar liggesusers\name{predict.fda} \alias{predict.fda} \title{Classify by Flexible Discriminant Analysis} \description{ Classify observations in conjunction with \code{fda}. } \usage{ \method{predict}{fda}(object, newdata, type, prior, dimension, \dots) } \arguments{ \item{object}{an object of class \code{"fda"}.} \item{newdata}{new data at which to make predictions. If missing, the training data is used.} \item{type}{kind of predictions: \code{type = "class"} (default) produces a fitted factor, \code{type = "variates"} produces a matrix of discriminant (canonical) variables, \code{type = "posterior"} produces a matrix of posterior probabilities (based on a gaussian assumption), and \code{type = "hierarchical"} produces the predicted class in sequence for models of all dimensions.} \item{prior}{the prior probability vector for each class; the default is the training sample proportions.} \item{dimension}{the dimension of the space to be used, no larger than the dimension component of \code{object}.} \item{\dots}{further arguments to be passed to or from methods.} } \value{ An appropriate object depending on \code{type}. \code{object} has a component \code{fit} which is regression fit produced by the \code{method} argument to \code{fda}. There should be a \code{predict} method for this object which is invoked. This method should itself take as input \code{object} and optionally \code{newdata}. } \seealso{ \code{\link{fda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{softmax}}, \code{\link{confusion}} } \examples{ data(iris) irisfit <- fda(Species ~ ., data = iris) irisfit ## Call: ## fda(x = iris$x, g = iris$g) ## ## Dimension: 2 ## ## Percent Between-Group Variance Explained: ## v1 v2 ## 99.12 100 confusion(predict(irisfit, iris), iris$Species) ## Setosa Versicolor Virginica ## Setosa 50 0 0 ## Versicolor 0 48 1 ## Virginica 0 2 49 ## attr(, "error"): ## [1] 0.02 } % Converted by Sd2Rd version 0.3-3. \keyword{classif} mda/man/glass.Rd0000644000176200001440000000235314445163503013176 0ustar liggesusers\name{glass} \alias{glass} \title{Glass Identification Database} \description{ The \code{glass} data frame has 214 observations and 10 variables, representing glass fragments. } \usage{data(glass)} \format{ This data frame contains the following columns: \describe{ \item{RI}{refractive index} \item{Na}{weight percent in corresponding oxide} \item{Mg}{weight percent in corresponding oxide} \item{Al}{weight percent in corresponding oxide} \item{Si}{weight percent in corresponding oxide} \item{K}{weight percent in corresponding oxide} \item{Ca}{weight percent in corresponding oxide} \item{Ba}{weight percent in corresponding oxide} \item{Fe}{weight percent in corresponding oxide} \item{Type}{Type of glass: \describe{ \item{1}{building_windows_float_processed,} \item{2}{building_windows_non_float_processed,} \item{3}{vehicle_windows_float_processed,} \item{4}{vehicle_windows_non_float_processed (none in this database),} \item{5}{containers,} \item{6}{tableware,} \item{7}{headlamps} } } } } \source{ P. M. Murphy and D. W. Aha (1999), UCI Repository of Machine Learning Databases, \url{http://archive.ics.uci.edu/ml/datasets/glass+identification} } \keyword{datasets} mda/man/mda.Rd0000644000176200001440000002014613653663715012640 0ustar liggesusers\name{mda} \alias{mda} \alias{print.mda} \title{Mixture Discriminant Analysis} \description{ Mixture discriminant analysis. } \usage{ mda(formula, data, subclasses, sub.df, tot.df, dimension, eps, iter, weights, method, keep.fitted, trace, \dots) } \arguments{ \item{formula}{of the form \code{y~x} it describes the response and the predictors. The formula can be more complicated, such as \code{y~log(x)+z} etc (see \code{\link{formula}} for more details). The response should be a factor representing the response variable, or any vector that can be coerced to such (such as a logical variable).} \item{data}{data frame containing the variables in the formula (optional).} \item{subclasses}{Number of subclasses per class, default is 3. Can be a vector with a number for each class.} \item{sub.df}{If subclass centroid shrinking is performed, what is the effective degrees of freedom of the centroids per class. Can be a scalar, in which case the same number is used for each class, else a vector.} \item{tot.df}{The total df for all the centroids can be specified rather than separately per class.} \item{dimension}{The dimension of the reduced model. If we know our final model will be confined to a discriminant subspace (of the subclass centroids), we can specify this in advance and have the EM algorithm operate in this subspace.} \item{eps}{A numerical threshold for automatically truncating the dimension.} \item{iter}{A limit on the total number of iterations, default is 5.} \item{weights}{\emph{NOT} observation weights! This is a special weight structure, which for each class assigns a weight (prior probability) to each of the observations in that class of belonging to one of the subclasses. The default is provided by a call to \code{mda.start(x, g, subclasses, trace, \dots)} (by this time \code{x} and \code{g} are known). See the help for \code{\link{mda.start}}. Arguments for \code{mda.start} can be provided via the \code{\dots} argument to mda, and the \code{weights} argument need never be accessed. A previously fit mda object can be supplied, in which case the final subclass \code{responsibility} weights are used for \code{weights}. This allows the iterations from a previous fit to be continued.} \item{method}{regression method used in optimal scaling. Default is linear regression via the function \code{polyreg}, resulting in the usual mixture model. Other possibilities are \code{mars} and \code{bruto}. For penalized mixture discriminant models \code{gen.ridge} is appropriate.} \item{keep.fitted}{a logical variable, which determines whether the (sometimes large) component \code{"fitted.values"} of the \code{fit} component of the returned \code{mda} object should be kept. The default is \code{TRUE} if \code{n * dimension < 5000}.} \item{trace}{if \code{TRUE}, iteration information is printed. Note that the deviance reported is for the posterior class likelihood, and not the full likelihood, which is used to drive the EM algorithm under \code{mda}. In general the latter is not available.} \item{\dots}{additional arguments to \code{mda.start} and to \code{method}.} } \value{ An object of class \code{c("mda", "fda")}. The most useful extractor is \code{predict}, which can make many types of predictions from this object. It can also be plotted, and any functions useful for fda objects will work here too, such as \code{confusion} and \code{coef}. The object has the following components: \item{percent.explained}{the percent between-group variance explained by each dimension (relative to the total explained.)} \item{values}{optimal scaling regression sum-of-squares for each dimension (see reference).} \item{means}{subclass means in the discriminant space. These are also scaled versions of the final theta's or class scores, and can be used in a subsequent call to \code{mda} (this only makes sense if some columns of theta are omitted---see the references)} \item{theta.mod}{(internal) a class scoring matrix which allows \code{predict} to work properly.} \item{dimension}{dimension of discriminant space.} \item{sub.prior}{subclass membership priors, computed in the fit. No effort is currently spent in trying to keep these above a threshold.} \item{prior}{class proportions for the training data.} \item{fit}{fit object returned by \code{method}.} \item{call}{the call that created this object (allowing it to be \code{update}-able).} \item{confusion}{confusion matrix when classifying the training data.} \item{weights}{These are the subclass membership probabilities for each member of the training set; see the weights argument.} \item{assign.theta}{a pointer list which identifies which elements of certain lists belong to individual classes.} \item{deviance}{The multinomial log-likelihood of the fit. Even though the full log-likelihood drives the iterations, we cannot in general compute it because of the flexibility of the \code{method} used. The deviance can increase with the iterations, but generally does not.} The \code{method} functions are required to take arguments \code{x} and \code{y} where both can be matrices, and should produce a matrix of \code{fitted.values} the same size as \code{y}. They can take additional arguments \code{weights} and should all have a \code{\dots} for safety sake. Any arguments to method() can be passed on via the \code{\dots} argument of \code{mda}. The default method \code{polyreg} has a \code{degree} argument which allows polynomial regression of the required total degree. See the documentation for \code{\link{predict.fda}} for further requirements of \code{method}. The package \code{earth} is suggested for this package as well; \code{earth} is a more detailed implementation of the mars model, and works as a \code{method} argument. The function \code{mda.start} creates the starting weights; it takes additional arguments which can be passed in via the \code{\dots} argument to \code{mda}. See the documentation for \code{mda.start}. } \author{ Trevor Hastie and Robert Tibshirani } \seealso{ \code{\link{predict.mda}}, \code{\link{mars}}, \code{\link{bruto}}, \code{\link{polyreg}}, \code{\link{gen.ridge}}, \code{\link{softmax}}, \code{\link{confusion}} %%\code{\link{coef.fda}}, %%\code{\link{plot.fda}} } \references{ ``Flexible Disriminant Analysis by Optimal Scoring'' by Hastie, Tibshirani and Buja, 1994, JASA, 1255-1270. ``Penalized Discriminant Analysis'' by Hastie, Buja and Tibshirani, 1995, Annals of Statistics, 73-102 ``Discriminant Analysis by Gaussian Mixtures'' by Hastie and Tibshirani, 1996, JRSS-B, 155-176. ``Elements of Statisical Learning - Data Mining, Inference and Prediction'' (2nd edition, Chapter 12) by Hastie, Tibshirani and Friedman, 2009, Springer } \examples{ data(iris) irisfit <- mda(Species ~ ., data = iris) irisfit ## Call: ## mda(formula = Species ~ ., data = iris) ## ## Dimension: 4 ## ## Percent Between-Group Variance Explained: ## v1 v2 v3 v4 ## 96.02 98.55 99.90 100.00 ## ## Degrees of Freedom (per dimension): 5 ## ## Training Misclassification Error: 0.02 ( N = 150 ) ## ## Deviance: 15.102 data(glass) # random sample of size 100 samp <- c(1, 3, 4, 11, 12, 13, 14, 16, 17, 18, 19, 20, 27, 28, 31, 38, 42, 46, 47, 48, 49, 52, 53, 54, 55, 57, 62, 63, 64, 65, 67, 68, 69, 70, 72, 73, 78, 79, 83, 84, 85, 87, 91, 92, 94, 99, 100, 106, 107, 108, 111, 112, 113, 115, 118, 121, 123, 124, 125, 126, 129, 131, 133, 136, 139, 142, 143, 145, 147, 152, 153, 156, 159, 160, 161, 164, 165, 166, 168, 169, 171, 172, 173, 174, 175, 177, 178, 181, 182, 185, 188, 189, 192, 195, 197, 203, 205, 211, 212, 214) glass.train <- glass[samp,] glass.test <- glass[-samp,] glass.mda <- mda(Type ~ ., data = glass.train) predict(glass.mda, glass.test, type="post") # abbreviations are allowed confusion(glass.mda,glass.test) } \keyword{classif} % Converted by Sd2Rd version 0.3-3. mda/man/laplacian.Rd0000644000176200001440000000231713653663715014023 0ustar liggesusers\name{laplacian} \Rdversion{1.1} \alias{laplacian} \title{create penalty object for two-dimensional smoothing. } \description{ Creates a penalty matrix for use by \code{gen.ridge} for two-dimensional smoothing. } \usage{ laplacian(size, compose) laplacian(size = 16, compose = FALSE) } \arguments{ \item{size}{dimension of the image is \code{size x size}; default is 16.} \item{compose}{default is \code{compose=FALSE}, which means the penalty is returned as an eigen-decomposition. If \code{compose=TRUE}, a penalty matrix is returned.} } \details{ Formulas are used to construct a laplacian for smoothing a square image. } \value{ If \code{compose=FALSE}, an eigen-decomposition object is returned. The \code{vectors} component is a \code{size^2 x size^2} orthogonal matrix, and the \code{$values} component is a \code{size^2} vector of non-negative eigen-values. If \code{compose=TRUE}, these are multiplied together to form a single matrix. } \references{ Here we follow very closely the material on page 635 in JASA 1991 of O'Sullivan's article on discretized Laplacian Smoothing } \author{ Trevor Hastie Description: Mixture and flexible discriminant analysis, multivariate adaptive regression splines (MARS), BRUTO, and vector-response smoothing splines. Hastie, Tibshirani and Friedman (2009) "Elements of Statistical Learning (second edition, chap 12)" Springer, New York. Title: Mixture and Flexible Discriminant Analysis Depends: R (>= 3.5.0), stats, class Suggests: earth, testthat License: GPL-2 Packaged: 2023-06-23 00:29:08 UTC; hastie Repository: CRAN Date/Publication: 2023-06-23 04:00:02 UTC NeedsCompilation: yes mda/tests/0000755000176200001440000000000013653663715012174 5ustar liggesusersmda/tests/testthat/0000755000176200001440000000000014445214302014014 5ustar liggesusersmda/tests/testthat/test_example.R0000644000176200001440000000211214234073765016641 0ustar liggesusersset.seed(20101) data(ESL.mixture) mixture.train=data.frame(x=I(ESL.mixture$x),y=ESL.mixture$y) fda.fit=fda(y~x,data=mixture.train) print(coef(fda.fit)) mda.fit=mda(y~x,data=mixture.train) print(coef(mda.fit)) mda.predict = predict(mda.fit,mixture.train$x) print(mda.predict) fitb=fda(y~x,data=mixture.train,method=bruto,cost=1) fitm=fda(y~x,data=mixture.train,method=mars,cost=1) fitb.confusion = confusion(fitb) print(fitb.confusion) fitm.confusion = confusion(fitm) print(fitm.confusion) mda.ppred=predict(mda.fit,newdata=ESL.mixture$xnew) ##print(mda.ppred) objects <- list( fda.fit = fda.fit, mda.fit = mda.fit, fitb = fitb, fitm = fitm, fitb.confusion = fitb.confusion, fitm.confusion = fitm.confusion, mda.ppred = mda.ppred) ##saveRDS(objects, "test_results/mda-0.4-results.RDS") expected <- readRDS("test_results/mda-0.4-results.RDS") for (x in names(objects)) { cat(sprintf("Testing %s\n", x)) if (x == "fitb") { expect_equal(objects[[x]], expected[[x]], tol = 1e-7) } else { expect_equal(objects[[x]], expected[[x]]) } } mda/tests/testthat/test_results/0000755000176200001440000000000013653663715016574 5ustar liggesusersmda/tests/testthat/test_results/mda-0.4-results.RDS0000644000176200001440000007712413653663715021720 0ustar liggesusers}XUM DDD@@DE"""(ҡb(H (Pͦ_umZa86nkM莶T1* y&/N+a2 wm=ՑnWPnjAHkxK4*؆ o?ؼSi&У P[CupQay 8QؓieP*z^yT>Ci^u/"סMËP nB_^ ]}LEVOdjȏfy,oC 8jm\~܄J DjvA|b, ]wGv#Б}ߦIKtSGy_Z Lҡ]1=&|<O\A^Z .hL3OEmA\U(;gJLad. UtsT@U I"y m~TmCH[dF J_,r}|K.phxtIPFE8Bx*عC Bס,/.0%)x}X߃-jU .fÅO.CW2$i065⏪~ 3j'C~ hV]~r5)U{>MCMU2뒊`q 2:_-0A)^,ӕG/RBQTua!_xpU⎴@QQdaawGt⇂#I]wxm*.Z^ 9 bZv'@_+7~9 wHE7Uç>é vwBIȭK; m! IH!o:A PN3~)Mya$.bv;~vX>%j}cfEӐ(9:6Ck(p9uurwy'ܳ~syZyL!8"ʾbRazSM O __4 kL Z8s{ZccYQ!j/W|эzD'u@7?,u܄ճ{0u(>= mŦz0zPtGYV0gc::ib2RPa'a YL[X W+`PIa!h'ڮ5 QS;%a$Ș} tgF&ތ=zIHj&E}Q| %>Pj EU.CMo_}" KqDk tLK )ˬvBѳ3XpK(P!)GDz$f=:O?ٺ7?;p_V7!w\6J1G[' #zj64thiXs>bqM{ԟrţvisC(v:ϾDPeoym1]uL{{"t=tRX*Ɵ6 s}JVٷuzmJ<)1:#JAgY~ۣ;v)5({qu4jIhrtA] I 'P)g(r4/e1^:J}c PBdHsߩ֎,ưw6LFmg!╻欹OTYl6Y9{/'B8K| WS,ȸ艺نwvNn%TA*J:tv'x(?ʻN:_Rg&ykK+Ƨ| scGPbZ[|8Ito>$Mx:T!pm@=sBC#PSmW 4 h> R| uюЙ*Q JUS ~t w- %ۀ_,꞉/_"{gPeRe2-(}~nɽ uFlnx]vgQwV#xc#PZ݊*#&|ķ"Ƕ "Rw466|n*ay t@Mρdb$?veWM{ iLJU[hF- @̭noTuPDE*PYFVWT?e{'j̲;Cwىe*:Cp(:rHZxG"P%h](]>s24^5'RM| du ig؊U> eYT݉rNwWe_S톊l-)z `.;x[ϡ|d+*α'hkwbFPR =c=&jc:iZP XF͐cjn}h}o!hɄ.B|i)PcL1G >a(a&8\lb!,:sQ%@e v_Q FŦćQ)5xMi][Tw].{A`M(:(QґåDI%/@RC"ځ%ޝzmǝ >y^62YJAhdXwΨmBtx)OGAto<[n. w$'JlΗ O9If'젣ILt om4t.-G|up?y`w}!_HNF)YEhꏯKC«␓aVK;f*CPQŵgIx)λ[s %Bz~jAÕ4YBޫ6Lƽ7(wlIT,|ҧ T/<[,Qm;0niUGO.ti:* Ōqѯϧ|1_"v jPOч}uwf -{At**-(zv}r|95}XhOlt`|Û:4RpqMmCA)!ld2p%7tي@JT191 ƼD*3.){h m4B*I1.η *B;MPFXsK|`7̱}&[Q7]ზ[܃Hg0JW2 cZӵsI56 Ju_ysXeѨW:Q\q g}($q]G͎ϡ4]J(y%&{w#Ӯ{E 8R4N6=TTG^ъf}-OQ0rmsp(+87Qp0 6_Y/| =5>C^ (49}oU_N4 y;?fghrP} )ۘ mq H0ic%(;bIfrv8TZFzjH,PYG BFU9X 2NGCK)r0x_ȡT{]TG F^8EbxPCX(Ԯ @(߭A򭌢J@ϭT|6kȍ VvnY$F;ΫWc*c0a?عsJLfy;bL35B/aB#hj,2BCPqyid['~4JxnK/o+%m^ =w2hC-Ǡ>Kn=j|tBs Ex@9^PUTJkȵڰz7 ߅2[w vкY,< Z^澂z4ۨmq^z޷rsUDEC~!q9Q~&&صb #ĕMݭet@C"[pNyGs(. fpO7n 97B~ 4_-6HD:og";;]=Q57?1`1R][*C7vٜf)_4:u _J^wC=*h\0dE+7jhH*`qEY_!X UNCOcJP?mI-Pq'" mTL<ڄxKo.Ӳi,(2KF#NK($KT+ed5i-gKzT}%{|woxz n+$SdXT@l+˃Ao32D#u1 kƬ/aT2)yFcPGN`5ؼP$G6C'8#pPkݻ*^Pl-hVw34ܬNjmq븠\CE})l=Gjf0?%5Jf16èWy&G),qbkɲ7|Q!j+[ Jn\21LsU-cgzDS W ]ոY<9,XB]V\;T.vkYbŧ> &O FSDC~\7Vd̰VKQA{x4VVj!:iSN u)=~Ҡk UPu@d.W.1z :54踣8,A!;r e]%-) :C,bdZZ*x= ,imOۉܪO< E>v2~P^cjʧz7tu1(S 1LFa0돝gBn \vE~"\J|2تCbMH|vdzJ;S-tT#nP`n}0-d; "(dg($go >{.t:[$D3m>ӡ 7i%,ڱAS@ܵ&gĦͽ|-1(2M ͞rZ;,'w@)^uPv5."c^sWjCP/BgMN~U8rsN*+pnA9"LQC_7P tam`}+(GPB 58 쨩Ϣ70by.eOʤR:Tw{ Bׅǒ3Ps$p1QI Yʆ!+ʜXMF16 "9 }S];lE&ЋrN//`TI֕08Sx:aC:Pr癝_*WW;9FtE T5CT*7z&gah %#hlP`.U?yv-fr}ˀa Z+*z6CC /m3x\ eG3ay NԶOO)J>&B5d{Qֱ& P}E> 񪈹ІLUrϊCe`%"7j45UM|kV(F$z ?+۵jܴNdIdUG-Dvm}~3ySwj,eɨÕ IhbPy>Y7%qMeWE ϯ芣ъa{Q];Ԕ-SP/U?;;#rP&)2A$-25b/Q{|P]5w;԰5tp\투b^16TPySAwH*M\ɿsB^բr= w=rr:-y> g ~["J)(g &48wD~z"5fU9:h|<ųNInKL{SsNhQ d~z* e{KP#yfxݿU$ʩϑb.ۺnzwn .mMoA^VVBUөo6ԠHy ;22TZū<s{TȠK뚭$*ژrn,dv_;Uߚ P-í{^q;p.܊:z7+ǭ zPAtn^H$7z U5c*x3/ >pt`: 6ey^ 2TGi;"II)bH wǎLCv1~E_7E!TIэ b\*QwVm!X,Zpw%v*|qyiGZ 8 eҒ\x}[nF lWR #W)QYxtVUs/-⽺>i(wUeFZkz1xbܸx58ik n$N\8W&iJc5VGJeؒƏKBvb0u7`lf(z'_}l'*ؔG!$GU xe,;ޞKVu${511xs]]<tه2,g@3yQ{ OsSW(Yɢ~jogs<*{le,{tu1F# ^|vY֡rrV5n}1KI1| Xt.@}YRWыicمj+OC\mUyo2_dPaM\ |>(08auaqD5l^^AeٌM Q#v .NW OeF;% aH$־zFOҮ&Y&i(|Ac ~QTU--1$B_jn(V^W̮w+xPA<@vu8tj`KYJ+ )#(ˬ'Y^#,%ŋdz[ OV>Ge{Φ]1IPb^*+Q΀t0MjRVczB5?V@9} [ȡFw`>=ӛ5mkڒ#!U_l/^b$?Ꮧ)Vwqh~ǿ~H2&Re 7B Jk6|SȤ ];N|{Evd0y(xiWw:pS\a,s7@LER/Q0y[pNdԱAIճqGvp#IY]8?Z .' 'C4l0 3*-Үw~ad)Ձ:[SV~1 ߳RlZNђg`N&'r_H.6gQMU{΂ImS͐pA2Ƣ 8t/ˆFo&6ցaj!4Tc025\.NI:F 4{_r&g /6ub(fpc0"[ ;$Uà O_/ɉqA1$y~no.(Lg#tKIV,x~=ġyȯ_^)ô[Io)yHB2Q%>XO|Zǜc+=YUgi81iw2W>L1YVx;I#x ^.,1VAݺ2u.ˮF٩#-u=o.l8*l37|Brf9%uzF;m CJ"-%҄^~~%{: Ϲ/bvv(л">NB?#_Y!-0ːKo:X-|>܂ էQdKTCy8Oay`d.'+*cJ⯙#Sxu6y|fČ? p.,ned}<++Ut·[Ɗ!3-ǦٞZ9H<ƞ%}bD¶v ]q)@>N|5_eBO^B|+\uOh̫ g`N+HwjaٿѺ< =qNQ>D =sSۅ@~PL'{Ldru&^BMH GT[ g?Qv)ϭt8^eqˡ~F:\]T)Cׂřx]_D;H a^œ 2޶yB2_a:Jsx(WOHFy_XU"v%; vlR!;] lK \* `W[Z_5tQڳ7Νem<_!;sS'Mw}9Z)8r+yxkY8&ԏ8< |YI )z0Rp]R@|)v,pr`StuBx=?sRky/> JԓDadzو5 vj:7n(-EܶOZ?.{߼3oOV+}X3M xl1Գa{K8|S!yxt Cg =h1)Pd2/KvC(2Q7?Uxqw/5" fŠƹ2al$Sݻ+toc ɤ/ZeRtnmu)]' :ݕ cn$ +)O f!żb,)!t(ԡ5쒞VP[v*X˫ pđMPzoHuD[bJ0xzv%//uwoy@CɻS0Ȯ=^ [`!%먪:s au".GaOFIMelqF2N1ޕ 0xRͧ6BÅ\ ;H{Ug5H % 0M-.-γМ T'<*J2 O|'+ _4oE<^+[t[o++ Ĝ"`̐%<%68qEuEf)ȋ"<ݛ~’o&^:eelaW=ݛ]#۶syKdwx 1D\>e!#vju[[@pA`cAys`]V`ůyVyuR< .+oaGJdf6ᠶfsIo|%0? $t+Ѷ:nk>p˒ec脞0ix@ I5|ţ/2`hVɋOSJ똉Lk\p;<|g/lL!AFMV8-AEcB.!^ xSƒA+m]"hFNIuڋZvm bs ~4NG6s?WvLF{w^gM`諙ٖgntиt#x=NH5TC0Ƙq vCPmvo~8'y}W;%3j$cO15&5 :G(I=e$/X98<^p'<[adŤXpyz~<:szGO-  lky)u⩓ 2F2-9@LO 5}}p [I} 9HiDX\kL&$YXzv 9YCGkMyq$)yY!!z;74Εr쏄w׳sknܗ,,a'y[[}7ye%[q{Ky#q<\;0tpk?yNL[G5+е@#J lZ!#Xp3f·sa'd侵>y/UjBIYō?V/0?Dz ^Q7xpj. ,WP-T}oxC"{`eYȚZ`O lC~k摶KI2,L.M%L Z*-i]c )mNTf98ku1o_ϏLi{Y'aڬWca[\jKSYhk)nk>}ͲeZ R؏ZڷՍ4<ղ4Ο/O"t9"UV~C>A@H?Ed_>8@݉WIwmO4$<~aUߛa݅r9IU^? ` 7'';.7v?GRrXȟySESvo9(ѵ]寏Lv^wi7@fS =,T4/l*wC+z=P))].#T'z-nٶ,P#3* 5 ZS_CM= 4(E1l׫8N\v#Oo$91~̯4 #Vn'/^6'kӷPRB ?;:hp͸  tg>ui$и2:4°o4#˪ r,ivhLiIfEs̥nh`8 ZFEAKHb0Z0+PѭhRˍ<znHN歀{o^(9騡mvA5h:Umbun@>vS)2>m=mlg6oYY&Z@~܄?oA{mWdh4 :I4c+Ft(z|4N +;@GBy3|fD:5Tk.Ag]kRatI~JG|>PUm Z%{!=m+)ȦW'{Bv[uX%6&~G?n8.ۤ }!MUQ I2;͈h~1٩M0Xi7^ˆPr1,R:%|%3;J!,- l 4à[?IT6ѵ2E9-tFܽKPc~:T^}¬vw`[ UWKG5 m:ԎCFrfu$݁w?5 ]?޿ i'hD@CLƝĻ-x"SZrhLP &TX/Yxx;ըAg嵸֓7%BZG\oKhFHh-}o16K€ guIW\!k=F}^u ?[|NGJ5ͨڦ-(_vfIf~%#f.vBWh/?##ONXA-C't_OvA#WcNU[P҇G@X~9R|M ;hds gkj4ytcKx: mgl2#ӆΎu>9@H&PTKuC]Kcy tT1K@^uM"}z0鼄t?q_x}"{ł?u!"[{tz:+ewB/keeǩ?[4fX7߈ }N!El?2j۱M47`@qpZ@2 ;x`\8- mϰq0XM ŕS\Oq} :=RW絿Љ&r1߆x\c/xS ăx|C xX T {L0P5.|{ |/ui}/k NC=}ގ%ȸv8_|^!_w :EUNڜ !Ȱ>dwbw lVPo#nlAo:FKڟ# ;N y%ؒy'A :NIdoA)|; -d K$ ^AO Lgo Y#cl#t`:Cf v}%ld`' IGl+AN L=[@c!(l*&`c6{F]L}'A rJm%jNl-A Ii!7`KFQ%'M'DcVnl_=Ϗ0EBDֱrW& ?v>`|>b۲\5ͰT J{$M鋠'Z(Z'Cz+[MZ5tjt%z84코{* CEG />},Dx OPy{gSPљ Tv}N:*R!p n]:(gkM3>}#IV#Mv !KEzGgցʓ(d~Th%;\#k*h2?drggC!_kO('za/zB CP()3 5͚OC#.r$"Qdjr_q=bP't#?h)zGsiۃE.fN P`4jt&z%3Cj0SPj^N"p{BBt9ĝ¯@!~%>|ZvNWA5f>L'wR}4㟨9jE2c k+}ᜰ"+j'c@8_԰J:[PM֑rɃf=(z;zv}GUQgh3ZF)_'E#w>B#uCv{hGH0Gчh.c 'FCIt: sS \CK1cQ?$+ 22ߑzz)D>nc GQWĶۼCM~pe*iGuԡfǶN쟏Go1vvy3ϣjckTtx-Jy;Qyڑa,I? ߉x?b< K @9bvAuC(dji&B3W^H/,_Ϗ˨QcC xy !q:,/o?q@m<;pe۶usf vXݼ1]Iy6RSot y+pdB=m}&'&~r8W3 ~|FW5˷P[,\(:Q[(S`C%UllP:XR{ TͅB/PA"='*E6PE(fnpz7=3L!o=Վl ;ԁzϽP?a:4H4m. +&6[oм]blo44>z_mյϺ pR¡\ez]fuچw@5=hOg-@!9Rrw~lqjItýc<za&듣[= z5.ױv{{'ɯ'ݣ.r[?ԍRRB|or3Cccs^%IN(:Y܏%9>׏V +jxtbqwc~q }okz71Fs ?L B7û6g >]-&=xWCUV$r^\ϯXʟ\nsΡ?K&\]7>3mmMCh45oV~.|S8C}!~4)kr za4 Cw_H E<Mts>HlBOcU2QZ4~^8Tp5z b PŬvT*Y]JeJ+p"=*y~QeFCL'YsPGrs44{t^fWɰH9*)j1:Ek,>sFȻ&P>+{u4f8͙>P5ݗ> /$.l7ՖfQskd ÖeTmr}p(vL '6G$Ov9y8jc*YO6&]SŢּ{5x:f-sPW~ iB2Pٽ;рAjƝېv9 *p u=TD 1HTp٥$h CMy)Vqv1*3u [u:oB-O=5y)N=͚enr$tctߑi~5iNiZ ڠrFZ>4bܑuTY1f.AQgHkA5:gԙ/>fG*lAc~<̕EHP+.hB`$ yEY^/Coܞ8HOG$iug0h"O_hDUC Pd4zKs^iPFsHBׂѨtU7Eu{7oC U,c Z[BG=l$ jښ CnddqV(l/ح|E[1L]goC{a1F9HP~oj{lڇkPnV,(#7y#<{'UZ'AbyEth_&h8M]cy] RJ}=P$sb0fqh{44);0؅9}>ǿC9zGQ܅m>@HGgyBy[󠪣ҟ~>ɬ !CD~&dGi+n>t<( y@[åE(T&ʧ_x8wmQ|:q3?ei<Ⱦg>AqCogRռ]w$HciawE}[֠w";'V{H gBSF27䢞]1O8CUp 2"RlQ cs?C]\nq!Z_In[1Avkj^;V($9آ~(S쭻!:lAjz$,t<=?"χUy `ësI$Q ԃϜXN*h͍֮l'BJm^żJ2XH_6S\V"-i¯`,0TgރP{ETub2^~W,YUz0eڿXҚg?̚g۱i~]ΌHKp<24\Tw]?}S3 Jrp(9#M2L9@y>~:4ʠwK!Vyn6uk { ת. e4%V@ʆ)MuP-f upO'/$Z$IN?=%4[mj91sh9>>B]))"/h\%@cD;-sPo~}eT6zz.i3:kѩ첂W\; =2>xA|5Ο{5]fRp \h$Ɂot( lwAI+ l9< 뜒};*&ژBV,Cﰑ_(Jaɼ %QӌOT8EW JK_ngEwk:" al1 ;4C9Dha-;KMt蛪 XC2Dju|%b_y[:BE%HTyw?!4_OE/¸ak5NϿ+YnsW̏߯7@#763v7%,ƢZ?beob}U~߯Z# #kȌn[~? 6##mZ:?+%j."lg51-MՍtQj{ !SATZ:CYUuGemen#o+b%/$Z|߿qO2eşV7m: o 9Qq G+?}^yв^!S7eqU/᛻ed%FAz'von7-+UxjƌӒE|"jq(;qb,lq4ԉIM{cc#_4M-翪]?(:̟2FF߿nmRrnGt?i߳?\,$ÅQ.?ܿC3&cX `_rrtwÅNI [ߥ1<$uQHf}|V,Si'ۢ!>7S5DdڈFiyiPifDv @Px|g2ip6dҟ8QÝ#QgB_$H5Y̓A}*ChQJO${G7YY&7%LPFWŇ󌨛IJͿ (GzjRj6%tBdPBYzQ ;!ujpf)(Zf>}7PD\ZT=;.O(uI'(8jxglfCSodG +,Ҩ*nݐ#jgIg-m%?AѾ:М{Ġ/7Z TCfbUҭC;fQIan1:ia3u3 Mg:Z_P'fBs1Πnw9ʴ]ƎU Bb|_B ܎R(74TC=(X2*ͥiLB/`, tQY$4Ћտg}~:/vՄ-{/P;'e5O"Q}S0xaTɄKR_Ga,o18< E] OIh--I_ۘuе^ ʫ@UJP;hĕHz4nY`TM:,*/:B|[0CiN71)~dnSd7 ۃM K\ЯEeTj⏿ILJ!z~+t15wBE#Phe~Zkhs܁>ZsVzg^귷[?Ҭ(Y\a15G>t\%0uJN lB TԙCT8'~X\1p?LU=tz?Y Bkų̃>cSf1^C"CEňô3-}dRT^[@tzX +{7XrjEPZ(Z]./&'[C*~fJe?9͑YkMfC{k>E.3)ZZ)`̣i;{tnرb9mD,ӼOP. Yu/ZVEHʧ3Z}x(8/"{"6''o W)Qȯ1V6ǡ^'QtkH'"Wy+y{T\);ՒT,Ml 살gV Q{q0@+heoj\oc2ѶRۧP (S5ve"GaR\PS)w': E ᤛQYu < iIQ/9fah:.mՏ#r0epsW>BϺ(:+PٙD zC `Rlj[DӠJRO0 ~) ύ<7ܹAM؅IG eV}; r(v﭂CuL" )auVE`t^ ,-]XtUmW:ym*iwdˎO{gcZ C9PFr:.w7s+Bh*}i/%*ӧے EߋCunKf ~=MTwa6%b*졆c`jcN{ǰ@dN.aȘi5{{N7/Bk¼/(lAQ]&aȂ ےPL\vΤc^~mǿb逺v\c^NZwc$L k\TOcG,JBs`8vIfZZ^b>$+ָACu"XS9A[bͰ-.xT] Oy+ˠv~״|elYTKZӛKv묎^ċJ汤5#jŠTئ1,ّaXa4H؅Ͱ|m|oi> y$ u2M2c/)R{_b1Rc,aVM\/؋%yQXJiXK-a1lmaTL:h lًn 0]W0s 6$$Xʄ,N%Y,SXs~, OK4!XY:)2,CXxSvl;3\87#CV/bi]L4];3$\$u2=bD)φ >򺻡0QbyK{c,Xg8`qWI,I LIeZeRvt:rU32<4 [7܅%@vd 7OEIK|֞U5MK:3cJay;sƝE~X"#eaJi껬cXRUY0ۛ^:kB~$VH?1Y '1H~ҭ*'٘ԟ<(=vyKNW(ǝ%%;DɅZ#X̫6XνԸXSm~uc󸒨9>}") Kyԫ%DbjK~9͆N<.vP) DL smy?kNa|6,颂"=a[t^Fz;Si3|-!U'ЍD04tĖ,Ҹ*e>M9ڣۗdueUP<"UJ2Ii퐺%Sզ_ ۻb}#n݃gT+a4]6ԫE`k(:,يѐY *nW: =Vo bo;/%=Z'a ƈ4`=Büb  ͻ]WJaA,E6=߷*;F^_);nt<եհd鉱*oEn 9tXp(tu=qK_忚o-7o)!|l{44Npschӆ6 gcED'So^?Woc}֜ٮ2Wӹe6zոq|Oq7_˅0 wWc5Jaҿ-of:sr NZHMRbz?zi~~ƟhH[=0;te쳡̪%(jf9S\Lj[b1+$~9Pu|\*f.'_OJF{iYkPItCt݋Ae8> (I$,&go+hgִ j/,{g=tyZgզ zv }~$恚2nrѮdzVw]/k a䷪X Ma-/}ۉY~x p[AmZdǼG}>Ԃ@_q~&=7W1Siobb'0S~xhAPem?w''T$Z?6\__?(CvG4ڗz),|rj]c\M_v@M.`aNRE9uUO<_ͧP*0RSb%6i9J@-[/,CKu.0~^"aMs=mx!>Y|@ Z8d**z4;KBz zyݜ_οuZ-߽ meQka\}糁oar㻪] XPpfiD>zIU^ܗumqFOշZְHV'v&6*\M$j%$7eGNm︡3X<]x5݄| XIYM[B-|<0}v0hdh zs C[qsύ/7g!&XlXzs͜-pƐ%(M'ZyN KLOͳ$f&hRcI=u:؏/y@&|Oy0.i7L%j c]IWϧ*$1bߵh:&/S~9Fw]-4~NPi_9tu|by`2_RC:a"J0JjqzDAmEpL>eU8~f>4 y D#V^B0,9NCcdUKw??b*Ü X6OӍWSVOԎTmCھzPFV뎏ܣc]wee޷>ZW{.=MyBv/ӏMv=5;IYK\I ^!]=?~$u:ʖR a|Oo¼ u0902^scŸN(HgSE[Twda+{UYal}DZUfJ9e!r'J=~ ۾jOy#hwږ$Cz?MўOEu3-  7}z,܆O(S*\!*\aˎeG?{̠4?"'>ܰkoR*t}Mr^Io. ['^wNk0gWqUWXJ3z+ @k>:>,2L}! Kޡ4X8>/obf SF$_Ӎ40pS&K~)w͛&b yb(Eo MUh?„a}S*}Y<8bM/Xl<짱<4ǒ?y^KǙ7%9ČbidgtDA<Yaډu 9*CmtKBF+^)`iwk/^+Ò(ܻfw Ȭ`ɫ̫YaхفKXfT ia6s(,;g,^(6 p؏%VƝ|d%N1Ʒ/ټ,&QQ 0+-&ȸ˨XRRcz V!{.7D"' K[@6 jwUwŠukX<׋X"TLj0Tx?.sV,&F'|X_K>ݲI-*(i0|}Ho̾ K;O}jʇ' r۽c)M665bI^*_k=astǡX{ PpKJ4,yElyMfGae0tX"ٰ҇2r!,r 0*ֻ]7@,UzF&?냥HK CoS{h a)rK%Ľ`2JR_'MxO0|I;PB!Z 06R70I~nBngm''G,rϑ?ݙ@H㻟]j.?b{RCuS3$\ۗgV_/ITIWy"H:(̪Xְ5a kXְ5a k'b5NQNxYd5N39Ye5NyNxYd5^8Y:/kq2/kq*/kqT^+o俫H9j^:_'zN{'q's8?'8e\>՜W?IO)m$N3#'g?NeOۿ5' q'kq?5N8Yd5N8c5N8Yd5N;Xd5N8Yd5N|q'kq'Z>8Yd5N8/V￧c ?F<-uJ0!)ޫ+o6…~~>gBY>E._)>mda/tests/testthat.R0000644000176200001440000000006213653663715014155 0ustar liggesuserslibrary(testthat) library(mda) test_check("mda") mda/src/0000755000176200001440000000000014445161305011605 5ustar liggesusersmda/src/mda_init.c0000644000176200001440000000632113675517170013550 0ustar liggesusers// Automatically generated, editing not advised. #ifndef R_MDA_H #define R_MDA_H #include #include #include #ifdef ENABLE_NLS #include #define _(String) dgettext ("mda", String) #else #define _(String) (String) #endif #define FDEF(name) {#name, (DL_FUNC) &F77_SUB(name), sizeof(name ## _t)/sizeof(name ## _t[0]), name ##_t} void F77_SUB(bruto)( double *x, int *n, int *q, double *y, int *p, double *w, double *knot, int *nkmax, int *nk, double *wp, int *match, int *nef, double *dfmax, double *cost, double *lambda, double *df, double *coef, int *type, double *xrange, double *gcvsel, double *gcvbak, double *dfit, int *maxit, int *nit, double *eta, double *resid, double *thresh, double *work, int *iwork, int *trace ); static R_NativePrimitiveArgType bruto_t[] = { REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, REALSXP, REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP }; void F77_SUB(marss)( int *nx, int *n, int *p, int *nclass, double *y, double *x, double *w, int *tagx, int *maxorder, int *mmax, double *penalty, double *thresh, int *forwstep, int *interms, int *prune, double *bx, int *fullin, int *lenb, double *bestgcv, int *bestin, int *flag, double *cut, double *dir, double *res, double *beta, double *scrat, int *iscrat, int *trace ); static R_NativePrimitiveArgType marss_t[] = { INTSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP }; void F77_SUB(sspl0)( double *x, double *y, double *w, int *n, int *p, double *knot, int *nk, int *method, double *tol, double *wp, int *match, int *nef, int *icen, double *dfoff, double *dfmax, double *cost, double *lambda, double *df, double *cv, double *gcv, double *coef, double *s, double *lev, double *xrange, double *work, int *iwork, int *ier ); static R_NativePrimitiveArgType sspl0_t[] = { REALSXP, REALSXP, REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, REALSXP, INTSXP, INTSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP }; void F77_SUB(pbruto)( double *x, int *n, int *q, double *ybar, int *p, double *knot, int *nkmax, int *nk, double *coef, int *type, double *xrange, double *eta, double *work ); static R_NativePrimitiveArgType pbruto_t[] = { REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, REALSXP, REALSXP, REALSXP }; void F77_SUB(psspl2)( double *x, int *n, int *p, double *knot, int *nk, double *xrange, double *coef, double *coefl, double *s, int *order, int *type ); static R_NativePrimitiveArgType psspl2_t[] = { REALSXP, INTSXP, INTSXP, REALSXP, INTSXP, REALSXP, REALSXP, REALSXP, REALSXP, INTSXP, INTSXP }; static R_FortranMethodDef fMethods[] = { FDEF(bruto) , FDEF(marss) , FDEF(sspl0) , FDEF(pbruto) , FDEF(psspl2) , {NULL, NULL, 0} }; void R_init_mda(DllInfo *dll){ R_registerRoutines(dll, NULL, NULL, fMethods, NULL); R_useDynamicSymbols(dll, FALSE); } #endif mda/src/dqrreg.f0000644000176200001440000000222213653663715013252 0ustar liggesusers subroutine qrreg(nx,n,px,p,nclass,x,xsc,in,y,qpivot,qrank,beta, & res,rss,cvar,var,varsc,scr1,work) implicit double precision (a-h,o-z) integer nx,n,p,px, qpivot(p),qrank,nclass,in(p) double precision x(nx,p), xsc(n,p), y(n,nclass),res(nx,nclass), & beta(px,nclass),work(*),scr1(p),var(px,p),varsc(px,p) logical cvar ii=0 do 23000 j=1,p if(.not.(in(j).eq.1))goto 23002 ii=ii+1 do 23004 i=1,n xsc(i,ii)=x(i,j) 23004 continue 23002 continue 23000 continue nt=ii ijob=101 info=1 temp3=1d-2 do 23006 i=1,p qpivot(i)=i 23006 continue call dqrdc2(xsc,n,n,nt,temp3,qrank,scr1,qpivot,work) rss=0.0 do 23008 k=1,nclass call dqrsl(xsc,n,n,qrank,scr1,y(1,k),work(1),work(1),beta(1,k), & work(1),res(1,k),ijob,info) do 23010 i=1,n res(i,k)=y(i,k)-res(i,k) rss=rss+res(i,k)*res(i,k) 23010 continue 23008 continue if(.not.(cvar))goto 23012 c$$$ Naras fix c$$$ call calcvar(nx,n,px,xsc,qrank,qpivot,var,varsc,work) call calcvar(nx,px,xsc,qrank,var,varsc) 23012 continue return end mda/src/sknotl.f0000644000176200001440000000256113653663715013306 0ustar liggesusers subroutine sknotl(x,n,knot,k) implicit double precision(a-h,o-z) integer n,k,ndk,j double precision x(n),knot(n+6),a1,a2,a3,a4 a1 = log(50e0)/log(2e0) a2 = log(100e0)/log(2e0) a3 = log(140e0)/log(2e0) a4 = log(200e0)/log(2e0) if(.not.(n.lt.50))goto 23000 ndk = n goto 23001 23000 continue if(.not.(n.ge.50 .and. n.lt.200))goto 23002 c$$$ Naras fix c$$$ ndk = 2.**(a1+(a2-a1)*(n-50.)/150.) ndk = int(2.**(a1+(a2-a1)*(n-50.)/150.)) goto 23003 23002 continue if(.not.(n.ge.200 .and. n.lt.800))goto 23004 c$$$ Naras fix c$$$ ndk = 2.**(a2+(a3-a2)*(n-200.)/600.) ndk = int(2.**(a2+(a3-a2)*(n-200.)/600.)) goto 23005 23004 continue if(.not.(n.ge.800 .and. n.lt.3200))goto 23006 c$$$ Naras fix c$$$ ndk = 2.**(a3+(a4-a3)*(n-800.)/2400.) ndk = int(2.**(a3+(a4-a3)*(n-800.)/2400.)) goto 23007 23006 continue if(.not.(n.ge.3200))goto 23008 c$$$ Naras fix c$$$ ndk = 200. + (n-3200)**.2 ndk = int(200. + (n-3200)**.2) 23008 continue 23007 continue 23005 continue 23003 continue 23001 continue k = ndk + 6 do 23010 j=1,3 knot(j) = x(1) 23010 continue do 23012 j=1,ndk knot(j+3) = x( 1 + (j-1)*(n-1)/(ndk-1) ) 23012 continue do 23014 j=1,3 knot(ndk+3+j) = x(n) 23014 continue return end mda/src/dcalcvar.f0000644000176200001440000000225313653663715013551 0ustar liggesusersc$$$ Naras fix c$$$ subroutine calcvar(nx,n,px,qr,qrank,qpivot,cov,tmpcov,work) subroutine calcvar(nx,px,qr,qrank,cov,tmpcov) implicit double precision (a-h,o-z) c$$$ Naras fix c$$$ integer n,px,qrank,qpivot(px) c$$$ double precision qr(nx,px),cov(px,px), tmpcov(px,px),work(1) integer px,qrank double precision qr(nx,px),cov(px,px), tmpcov(px,px) double precision dsum integer i,j,km do 23000 i=1,qrank do 23002 j=1,qrank tmpcov(i,j)=0d0 cov(i,j)=qr(i,j) 23002 continue tmpcov(i,i)=1e0 23000 continue info=0 c R version has different args c call dbksl(cov,px,qrank,tmpcov,px,info) do 20 j = 1, qrank call dtrsl(cov, px, qrank, tmpcov(1,j), 01, info) 20 continue do 23004 i=1,qrank do 23006 j=i,qrank dsum=0e0 km=max(i,j) k=km 23008 if(.not.(k.le.qrank))goto 23010 dsum=dsum+tmpcov(i,k)*tmpcov(j,k) k=k+1 goto 23008 23010 continue tmpcov(i,j)=dsum tmpcov(j,i)=dsum 23006 continue 23004 continue do 23011 i=1,qrank do 23013 j=1,qrank cov(i,j)=tmpcov(i,j) 23013 continue 23011 continue return end mda/src/mspline.f0000644000176200001440000010045713675517170013443 0ustar liggesusers subroutine sspl(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy,dfoff, 1 dfmax,cost,lambda,df,cv,gcv,coef,s,lev,xwy,hs,sg,abd,p1ip, 2 ier) implicit double precision(a-h,o-z) C A Cubic B-spline Smoothing routine. C C The algorithm minimises: C C (1/n) * sum w(i)* (y(i)-s(i))**2 + lambda* int ( s"(x) )**2 dx C C for each of p response variables in y C C Input: C C x(n) vector containing the ordinates of the observations C y(ldy,p) matrix (n x p) of responses (ldy can be greater than n) C w(n) vector containing the weights given to each data point C n number of data points C ldy leading dimension of y C p number of columns in y C knot(nk+4) vector of knot points defining the cubic b-spline basis. C nk number of b-spline coefficients to be estimated C nk <= n+2 C method method for selecting amount of smoothing, lambda C 1 = fixed lambda C 2 = fixed df C 3 = gcv C 4 = cv C tol used in Golden Search routine C wp(p) weights, length p, used to combine cv or gcv in 3 or 4 above C ssy(p) offsets for weighted sum of squares for y; can be all zero, C else should be the variability lost due to collapsing C onto unique values C dfoff offset df used in gcv calculations (0 is good default) C dfmax maximum value for df allowed when gcv or cv are used C routine simply returns the value at dfmax if it was exceeded C cost cost per df (1 is good default) C C Input/Output: C C lambda penalised likelihood smoothing parameter C df trace(S) C C Output: C C cv omnibus cv criterion C gcv omnibus gcv criterion (including penalty and offset) C coef(nk,p) vector of spline coefficients C s(ldy,p) matrix of smoothed y-values C lev(n) vector of leverages C C Working arrays/matrix: C C xwy(nk,p) X'Wy C hs(nk,4) the diagonals of the X'WX matrix C sg(nk,4) the diagonals of the Gram matrix C abd(4,nk) [ X'WX+lambda*SIGMA] in diagonal form C p1ip(4,nk) inner products between columns of L inverse C ier error indicator C ier = 0 ___ everything fine C ier = 1 ___ spar too small or too big C problem in cholesky decomposition C integer n,p,ldy,nk,method,ier double precision x(n),y(ldy,p),w(n),knot(nk+4),tol,wp(p),ssy(p), * dfoff,dfmax,cost,lambda,df,cv,gcv,coef(nk,p),s(ldy,p), * lev(n),xwy(nk,p),hs(nk,4),sg(nk,4),abd(4,nk),p1ip(4,nk) C Compute SIGMA, X'WX, X'WY, trace, ratio, s0, s1. C SIGMA-> sg[] C X'WX -> hs[] C X'WY -> xwy[] call sgram(sg(1,1),sg(1,2),sg(1,3),sg(1,4),knot,nk) call stxwx2(x,y,w,n,ldy,p,knot,nk,xwy,hs(1,1),hs(1,2), * hs(1,3),hs(1,4)) C Compute estimate if(method.eq.1)then C Value of lambda supplied c$$$Naras fix c$$$ call sslvr2(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy,dfoff,cost, call sslvr2(x,y,w,n,ldy,p,knot,nk,method,wp,ssy,dfoff,cost, 1 lambda,df,cv,gcv,coef,s,lev,xwy, 2 hs(1,1),hs(1,2),hs(1,3),hs(1,4), 3 sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) else C Use Forsythe, Malcom and Moler routine to minimise criterion call fmm(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy,dfoff,cost, * lambda,df,cv,gcv,coef,s,lev,xwy,hs,sg,abd,p1ip,ier) if(method.gt.2.and.df.gt.dfmax)then df=dfmax call fmm(x,y,w,n,ldy,p,knot,nk,2,tol,wp,ssy,dfoff,cost, * lambda,df,cv,gcv,coef,s,lev,xwy,hs,sg,abd,p1ip,ier) endif endif return end subroutine fmm(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy, 1 dfoff,cost,lambda,df,cv,gcv,coef,s,lev,xwy,hs,sg,abd,p1ip, 2 ier) integer n,ldy,nvar,nk,method,ier double precision xs(n),ys(ldy,nvar),ws(n),knot(nk+4),tol,wp(nvar), * ssy(nvar),dfoff,cost,lambda,df,cv,gcv,coef(nk,nvar), * s(ldy,nvar),lev(n),xwy(nk,nvar),hs(nk,4),sg(nk,4),abd(4,nk), * p1ip(4,nk) double precision t1,t2,ratio, a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u, * v,w, fu,fv,fw,fx,x,targdf,ax,bx integer i C used to be lspar ax=1d-10 C used to be uspar bx=1.5 t1=0. t2=0. targdf=df do 23004 i=3,nk-3 t1 = t1 + hs(i,1) 23004 continue do 23006 i=3,nk-3 t2 = t2 + sg(i,1) 23006 continue ratio = t1/t2 C C an approximation x to the point where f attains a minimum on C the interval (ax,bx) is determined. C C C input.. C C ax left endpoint of initial interval C bx right endpoint of initial interval C f function subprogram which evaluates f(x) for any x C in the interval (ax,bx) C tol desired length of the interval of uncertainty of the final C result ( .ge. 0.0) C C C output.. C C fmin abcissa approximating the point where f attains a minimum C C C the method used is a combination of golden section search and C successive parabolic interpolation. convergence is never much slower C than that for a fibonacci search. if f has a continuous second C derivative which is positive at the minimum (which is not at ax or C bx), then convergence is superlinear, and usually of the order of C about 1.324.... C the function f is never evaluated at two points closer together C than eps*dabs(fmin) + (tol/3), where eps is approximately the square C root of the relative machine precision. if f is a unimodal C function and the computed values of f are always unimodal when C separated by at least eps*dabs(x) + (tol/3), then fmin approximates C the abcissa of the global minimum of f on the interval ax,bx with C an error less than 3*eps*dabs(fmin) + tol. if f is not unimodal, C then fmin may approximate a local, but perhaps non-global, minimum to C the same accuracy. C this function subprogram is a slightly modified version of the C algol 60 procedure localmin given in richard brent, algorithms for C minimization without derivatives, prentice - hall, inc. (1973). C C C double precision a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u,v,w C double precision fu,fv,fw,fx,x C C c is the squared inverse of the golden ratio C c = 0.5*(3. - dsqrt(5d0)) C C eps is approximately the square root of the relative machine C precision. C eps = 1d0 10 eps = eps/2d0 tol1 = 1d0 + eps if(tol1 .gt. 1d0)then go to 10 endif eps = dsqrt(eps) C C initialization C a = ax b = bx v = a + c*(b - a) w = v x = v e = 0.0 c$$$ Naras fix: This also seems to be copied from Numerical Recipes c$$$ So same fix, i.e. setting d=0 seems reasonable afaik. Same for fx,fu! d = 0.0 fx = 0.0 fu = 0.0 lambda = ratio*16.**(-2. + x*(6.)) c$$$Naras fix c$$$ call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy,dfoff, call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,wp,ssy,dfoff, 1 cost,lambda,df,cv,gcv,coef,s,lev,xwy, 2 hs(1,1),hs(1,2),hs(1,3),hs(1,4), 3 sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) I23010 = (method) if(.not.(I23010.eq.( 2)))goto 23011 fx=3d0+(targdf-df)**2 goto 23010 23011 continue if(.not.(I23010.eq.( 3)))goto 23012 fx=gcv goto 23010 23012 continue if(.not.(I23010.eq.( 4)))goto 23013 fx=cv 23013 continue 23010 continue fv = fx fw = fx C C main loop starts here C 20 xm = 0.5*(a + b) tol1 = eps*dabs(x) + tol/3d0 tol2 = 2d0*tol1 C C check stopping criterion C if(dabs(x - xm) .le. (tol2 - 0.5*(b - a)))then go to 90 C C is golden-section necessary C endif if(dabs(e) .le. tol1)then go to 40 C C fit parabola C endif r = (x - w)*(fx - fv) q = (x - v)*(fx - fw) p = (x - v)*q - (x - w)*r q = 2.00*(q - r) if(q .gt. 0.0)then p = -p endif q = dabs(q) r = e e = d C C is parabola acceptable C if(dabs(p) .ge. dabs(0.5*q*r))then go to 40 endif if(p .le. q*(a - x))then go to 40 endif if(p .ge. q*(b - x))then go to 40 endif C C a parabolic interpolation step C d = p/q u = x + d C C f must not be evaluated too close to ax or bx C if((u - a) .lt. tol2)then d = dsign(tol1, xm - x) endif if((b - u) .lt. tol2)then d = dsign(tol1, xm - x) endif go to 50 C C a golden-section step C 40 if(x .ge. xm)then e = a - x endif if(x .lt. xm)then e = b - x endif d = c*e C C f must not be evaluated too close to x C 50 if(dabs(d) .ge. tol1)then u = x + d endif if(dabs(d) .lt. tol1)then u = x + dsign(tol1, d) endif lambda = ratio*16.**(-2. + u*(6.)) c$$$Naras fix c$$$ call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy,dfoff, call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,wp,ssy,dfoff, *cost,lambda,df,cv,gcv,coef,s,lev,xwy,hs(1,1),hs(1,2),hs(1,3),hs(1, *4),sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) I23038 = (method) if(.not.(I23038.eq.( 2)))goto 23039 fu=3d0+(targdf-df)**2 goto 23038 23039 continue if(.not.(I23038.eq.( 3)))goto 23040 fu=gcv goto 23038 23040 continue if(.not.(I23038.eq.( 4)))goto 23041 fu=cv 23041 continue 23038 continue C C update a, b, v, w, and x C if(fu .gt. fx)then go to 60 endif if(u .ge. x)then a = x endif if(u .lt. x) then b = x endif v = w fv = fw w = x fw = fx x = u fx = fu go to 20 60 if(u .lt. x)then a = u endif if(u .ge. x)then b = u endif if(fu .le. fw)then go to 70 endif if(w .eq. x)then go to 70 endif if(fu .le. fv)then go to 80 endif if(v .eq. x)then go to 80 endif if(v .eq. w)then go to 80 endif go to 20 70 v = w fv = fw w = u fw = fu go to 20 80 v = u fv = fu go to 20 C C end of main loop C 90 continue if(method.eq.2)then c$$$Naras fix c$$$ call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,1,tol,wp,ssy,dfoff,cost, call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,1,wp,ssy,dfoff,cost, 1 lambda,df,cv,gcv,coef,s,lev,xwy, 2 hs(1,1),hs(1,2),hs(1,3),hs(1,4), 3 sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) endif return end subroutine stxwx2(x,z,w,k,ldy,pz,xknot,n,y,hs0,hs1,hs2,hs3) implicit double precision(a-h,o-z) integer k,n,pz,ldy,j,i,pp,ileft,mflag double precision z(ldy,pz),w(k),x(k),xknot(n+4),y(n,pz),hs0(n), * hs1(n),hs2(n),hs3(n),eps,vnikx(4,1),work(16) C Initialise the output vectors do 23064 i=1,n hs0(i)=0d0 hs1(i)=0d0 hs2(i)=0d0 hs3(i)=0d0 do 23066 j=1,pz y(i,j)=0d0 23066 continue 23064 continue C Compute X'WX -> hs0,hs1,hs2,hs3 and X'WZ -> y ileft = 1 eps = .1d-9 do 23068 i=1,k ileft = interv(xknot(1),(n+1),x(i), 0,0, ileft,mflag) if(mflag.eq. 1)then if(x(i).le.(xknot(ileft)+eps))then ileft=ileft-1 else return endif endif call bsplvd (xknot,n+8,4,x(i),ileft,work,vnikx,1) j= ileft-4+1 do 23074 pp=1,pz y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(1,1) 23074 continue hs0(j)=hs0(j)+w(i)*vnikx(1,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(1,1)*vnikx(2,1) hs2(j)=hs2(j)+w(i)*vnikx(1,1)*vnikx(3,1) hs3(j)=hs3(j)+w(i)*vnikx(1,1)*vnikx(4,1) j= ileft-4+2 do 23076 pp=1,pz y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(2,1) 23076 continue hs0(j)=hs0(j)+w(i)*vnikx(2,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(2,1)*vnikx(3,1) hs2(j)=hs2(j)+w(i)*vnikx(2,1)*vnikx(4,1) j= ileft-4+3 do 23078 pp=1,pz y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(3,1) 23078 continue hs0(j)=hs0(j)+w(i)*vnikx(3,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(3,1)*vnikx(4,1) j= ileft-4+4 do 23080 pp=1,pz y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(4,1) 23080 continue hs0(j)=hs0(j)+w(i)*vnikx(4,1)**2 23068 continue return end c$$$ Naras fix c$$$ subroutine sslvr2(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy,dfoff, subroutine sslvr2(x,y,w,n,ldy,p,knot,nk,method,wp,ssy,dfoff, * cost,lambda,df,cv,gcv,coef,sz,lev,xwy,hs0,hs1,hs2,hs3, * sg0,sg1,sg2,sg3,abd,p1ip,info) implicit double precision(a-h,o-z) integer n,p,ldy,nk,method,info c$$$Naras fix c$$$ double precision x(n),y(ldy,p),w(n),knot(nk+4),tol,wp(p),ssy(p), double precision x(n),y(ldy,p),w(n),knot(nk+4),wp(p),ssy(p), * dfoff,cost,lambda,df,cv,gcv,coef(nk,p),sz(ldy,p),lev(n), $ xwy(nk,p), hs0(nk),hs1(nk),hs2(nk),hs3(nk), $ sg0(nk),sg1(nk),sg2(nk),sg3(nk), abd(4,nk),p1ip(4,nk) C local storage c$$$ Naras fix, external routine not declared, added line below EXTERNAL bvalue double precision b0,b1,b2,b3,eps,vnikx(4,1),work(16),xv,bvalue, * rss,tssy integer ld4,i,icoef,ileft,j,mflag logical fittoo fittoo= (method.ne.2) ileft = 1 eps = .1d-10 ld4=4 C Purpose : Solves the smoothing problem and computes the C criterion functions (CV and GCV). C The coeficients of estimated smooth if(fittoo)then do 23084 i=1,nk do 23086 j=1,p coef(i,j) = xwy(i,j) 23086 continue 23084 continue endif do 23088 i=1,nk abd(4,i) = hs0(i)+lambda*sg0(i) 23088 continue do 23090 i=1,(nk-1) abd(3,i+1) = hs1(i)+lambda*sg1(i) 23090 continue do 23092 i=1,(nk-2) abd(2,i+2) = hs2(i)+lambda*sg2(i) 23092 continue do 23094 i=1,(nk-3) abd(1,i+3) = hs3(i)+lambda*sg3(i) 23094 continue call dpbfa(abd,ld4,nk,3,info) if(info.ne.0)then return endif if(fittoo)then do 23100 j=1,p call dpbsl(abd,ld4,nk,3,coef(1,j)) 23100 continue C Value of smooths at the data points icoef = 1 do 23102 i=1,n xv = x(i) do 23104 j=1,p c$$$ Naras Fix c$$$ sz(i,j) = bvalue(knot,nk+8,coef(1,j),nk,4,xv,0) sz(i,j) = bvalue(knot,coef(1,j),nk,4,xv,0) 23104 continue 23102 continue continue endif C Compute the criterion functions C Get Leverages First call sinrp2(abd,ld4,nk,p1ip) do 23106 i=1,n xv = x(i) ileft = interv(knot(1),(nk+1),xv, 0,0, ileft,mflag) if(mflag.eq.-1)then ileft = 4 xv = knot(4)+eps endif if(mflag.eq.1)then ileft = nk xv = knot(nk+1)-eps endif j=ileft-3 call bsplvd(knot,nk+8,4,xv,ileft,work,vnikx,1) b0=vnikx(1,1) b1=vnikx(2,1) b2=vnikx(3,1) b3=vnikx(4,1) lev(i) = (p1ip(4,j)*b0**2 + 2.*p1ip(3,j)*b0*b1 + 1 2.*p1ip(2,j)*b0*b2 + 2.*p1ip(1,j)*b0*b3 + 2 p1ip(4,j+1)*b1**2 + 2.*p1ip(3,j+1)*b1*b2 + 3 2.*p1ip(2,j+1)*b1*b3 + p1ip(4,j+2)*b2**2 + 4 2.*p1ip(3,j+2)*b2*b3 + p1ip(4,j+3)*b3**2 )*w(i) 23106 continue C Evaluate Criteria rss = 0d0 df = 0d0 sumw=0d0 gcv=0d0 cv=0d0 do 23112 i=1,n df = df + lev(i) 23112 continue if(fittoo)then do 23116 i=1,n sumw = sumw + w(i) do 23118 j=1,p rss = rss + w(i)*wp(j)*(y(i,j)-sz(i,j))**2 cv = cv +w(i)*wp(j)*((y(i,j)-sz(i,j))/(1-lev(i)))**2 23118 continue 23116 continue tssy=0d0 do 23120 j=1,p tssy=tssy+wp(j)*ssy(j) 23120 continue gcv=((rss+tssy)/sumw)/((1d0-((dfoff+df-1)*cost+1)/sumw)**2) C note: the weights should sum to n (the number of original observations) cv=(cv+tssy)/sumw C lev includes the weights C Note that this version of cv omits ALL observations at C tied x values, since the data are already collapsed here endif return end subroutine sinrp2(abd,ld4,nk,p1ip) C Purpose : Computes Inner Products between columns of L(-1) C where L = abd is a Banded Matrix with 3 subdiagonals C A refinement of Elden's trick is used. C Coded by Finbarr O'Sullivan implicit double precision(a-h,o-z) integer ld4,nk,i,j double precision abd(ld4,nk),p1ip(ld4,nk), * wjm3(3),wjm2(2),wjm1(1),c0,c1,c2,c3 wjm3(1)=0d0 wjm3(2)=0d0 C wjm3(1)=0d0 spotted by Brian Ripley 10/8/2015 (earlier actually) wjm3(3)=0d0 wjm2(1)=0d0 wjm2(2)=0d0 wjm1(1)=0d0 do 100 i=1,nk j=nk-i+1 c0 = 1d0/abd(4,j) if(j.le.nk-3)then c1 = abd(1,j+3)*c0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 else if(j.eq.nk-2)then c1 = 0d0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 else if(j.eq.nk-1)then c1 = 0d0 c2 = 0d0 c3 = abd(3,j+1)*c0 c$$$ Naras fix: the condition (j.eq.nk) is superfluous even if nk = 1 c$$$ else if(j.eq.nk)then c$$$ c1 = 0d0 c$$$ c2 = 0d0 c$$$ c3 = 0d0 else c1 = 0d0 c2 = 0d0 c3 = 0d0 endif p1ip(1,j) = 0d0- (c1*wjm3(1)+c2*wjm3(2)+c3*wjm3(3)) p1ip(2,j) = 0d0- (c1*wjm3(2)+c2*wjm2(1)+c3*wjm2(2)) p1ip(3,j) = 0d0- (c1*wjm3(3)+c2*wjm2(2)+c3*wjm1(1)) p1ip(4,j) = c0**2 +c1**2*wjm3(1)+2.*c1*c2*wjm3(2)+ * 2.*c1*c3*wjm3(3)+ c2**2*wjm2(1)+2.*c2*c3*wjm2(2) + 2 c3**2*wjm1(1) wjm3(1)=wjm2(1) wjm3(2)=wjm2(2) wjm3(3)=p1ip(2,j) wjm2(1)=wjm1(1) wjm2(2)=p1ip(3,j) wjm1(1)=p1ip(4,j) 100 continue return end subroutine suff2(n,p,ny,match,y,w,ybar,wbar,ssy,work) integer match(n),n,ny,p,i,j double precision y(n,ny),ybar(p+1,ny),w(n),wbar(p+1),ssy(ny), * work(n) double precision tsum call tpack(n,p,match,w,wbar) do 100 j=1,ny do 34 i=1,n work(i)=y(i,j)*w(i) 34 continue call tpack(n,p,match,work,ybar(1,j)) do 36 i=1,p if(wbar(i).gt.0d0)then ybar(i,j)=ybar(i,j)/wbar(i) else ybar(i,j)=0d0 endif 36 continue call untpack(n,p,match,ybar(1,j),work) tsum=0d0 do 40 i=1,n tsum=tsum+ w(i)*(y(i,j)-work(i))**2 40 continue ssy(j)=tsum 100 continue return end subroutine sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef, * icenter,dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, $ xrange,work,iwork, ier) integer n,p,nk,method,ier,nef, nefp1, n2,match(*),iwork(n) double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p),dfoff, * dfmax,cost,lambda,df,cv,gcv,coef(*),s(n,p),lev(nef), * xrange(2), work(*) C workspace must be (2*p+2)*nefp1 + (p+16)*nk + n +p integer icenter logical center double precision xmiss,sigtol,xdiff,temp if(icenter.eq.0)then center=.false. else center=.true. endif if(nef.eq.0)then C match has not been initialized xmiss=1d20 sigtol=1d-5 call namat(x,match,n,nef,work,iwork,xmiss,sigtol) xrange(1)=work(1) xrange(2)=work(nef) else do 44 i=1,n work(match(i))=x(i) 44 continue endif xdiff=xrange(2)-xrange(1) do 46 i=1,nef work(i)=(work(i)-xrange(1))/xdiff 46 continue if(nk.eq.0)then call sknotl(work,nef,knot,nk) nk=nk-4 endif if(dfmax .gt. dble(nk))then dfmax=dble(nk) endif if(cost.gt.0)then c$$$ Naras fix c$$$ if(center) then c$$$ icenter = 1 c$$$ else c$$$ icenter = 0 c$$$ endif temp=dble(n-icenter)/cost - dfoff if(dfmax.gt.temp)then dfmax=temp endif endif nefp1=nef+1 n2=nefp1*(2*p+2)+1 c$$$ Naras fix c$$$ call sspl1(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1,center, call sspl1(y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1,center, * dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, * work(1),work(nefp1+1), c xin, yin $ work(nefp1*(p+1)+1),work(nefp1*(p+2)+1), c win, sout * work(n2),work(n2+p*nk),work(n2+(p+4)*nk), c xwy, hs, sg $ work(n2+(p+8)*nk),work(n2+(p+12)*nk),work(n2+(p+16)*nk), $ work(n2+(p+16)*nk+p), ier) return end C Memory management subroutine c$$$ Naras fix c$$$ subroutine sspl1(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1, c$$$ *center,dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev,xin,yin,win, c$$$ *sout,xwy,hs,sg,abd,p1ip,ssy,work,ier) c$$$ integer n,p,nefp1,nk,method,ier,match(n),nef c$$$ double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p),dfoff, subroutine sspl1(y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1, *center,dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev,xin,yin,win, *sout,xwy,hs,sg,abd,p1ip,ssy,work,ier) integer n,p,nefp1,nk,method,ier,match(n),nef double precision y(n,p),w(n),knot(nk+4),tol,wp(p),dfoff, *dfmax,cost,lambda,df,cv,gcv,coef(nk,p),s(n,p),lev(nef),xin(nefp1), *yin(nefp1,p),win(nefp1),sout(nefp1,p),xwy(nk,p),hs(nk,4),sg(nk,4), *abd(4,nk),p1ip(4,nk),ssy(p),work(n) logical center double precision sbar, wmean,tdfoff call suff2(n,nef,p,match,y,w,yin,win,ssy,work) if(center)then tdfoff=dfoff if(cost.gt.0)then tdfoff=dfoff-1/cost endif endif call sspl(xin,yin,win,nef,nefp1,p,knot,nk,method,tol,wp,ssy, * tdfoff,dfmax,cost,lambda,df,cv,gcv,coef,sout,lev,xwy, $ hs,sg,abd, p1ip,ier) C now unpack the results do 60 j=1,p call untpack(n,nef,match,sout(1,j),s(1,j)) if(center) then sbar=wmean(nef,sout(1,j),win) do 64 i=1,n s(i,j)=s(i,j)-sbar 64 continue endif 60 continue if(center) df=df-1 return end subroutine namat(x,match,n,nef,work,iwork,xmiss,tol) C returns match (order) and work(1:nef) is the sorted unique x implicit double precision(a-h,o-z) integer match(*),n,nef,iwork(n),index double precision x(*),xmiss,work(*),tol,xend,xstart do 68 i=1,n work(i)=x(i) iwork(i)=i 68 continue call sortdi(work,n,iwork,1,n) xstart=x(iwork(1)) index=n xend=x(iwork(n)) c while( . ) 70 if(xend .ge. xmiss .and. index .gt. 1)then index=index-1 xend=x(iwork(index)) goto 70 endif tol=tol*(xend-xstart) index=1 work(1)=xstart c for(i = 1:n) -- not allowed to increment i inside do-loop! i=1 100 if(i .le. n) then c while() : 75 if((x(iwork(i))-xstart).lt.tol) then match(iwork(i))=index i=i+1 if(i.gt.n) goto 10 c this next line was missing; added by TH in Nov/2017! goto 75 endif xstart= x(iwork(i)) index=index+1 match(iwork(i))=index work(index)=xstart i=i+1 goto 100 endif 10 if(xstart .ge. xmiss)then nef=index-1 else nef=index endif return end subroutine simfit(x,y,w,n,p,dfoff,cost,wp,gcv,coef,s,type,center, * work) C C computes constant and linear fits, and selects the best using gcv C implicit double precision (a-h,o-z) integer n,p,type double precision x(n),y(n,p),w(n),cost,dfoff,wp(p),gcv,coef(2,p), * s(n,p),work(p) logical center double precision sx,sy,sumw, dcent,sxx,syy,sxy C center is F for no centering, else T C Note: if type enters 1 or 2, no selection is made c$$$Naras fix: xbar is uninitialized; zero seems reasonable xbar = 0d0 if(center) then icenter = 1 else icenter = 0 endif dcent=1-dble(icenter) sumw=0d0 gcvc=0d0 do 81 i=1,n sumw=sumw+w(i) 81 continue if(type.ne.1)then C either 0 or 2 in which case the linear is needed as well sx=0.0 sxx=0.0 gcvl=0d0 do 85 i=1,n sx=sx+w(i)*x(i) 85 continue xbar=sx/sumw do 87 i=1,n sxx=sxx+w(i)*(x(i)-xbar)*x(i) 87 continue endif do 100 j=1,p sy=0d0 syy=0d0 do 91 i=1,n sy=sy+w(i)*y(i,j) 91 continue work(j)=sy/sumw do 93 i=1,n syy=syy+w(i)*(y(i,j)-work(j))*y(i,j) 93 continue gcvc=gcvc+wp(j)*syy if(type.ne.1) then C once again, do for linear as well sxy=0.0 do 97 i=1,n sxy=sxy+w(i)*(x(i)-xbar)*y(i,j) 97 continue coef(2,j)=sxy/sxx gcvl=gcvl+wp(j)*(syy -sxy*coef(2,j)) endif 100 continue if(type.eq.0) then gcvc =gcvc/ (sumw* (1 - (dfoff*cost + dcent)/sumw)**2 ) gcvl=gcvl/(sumw* (1 - (dcent + (dfoff +1)* cost)/sumw)**2) if(gcvc.le.gcvl) then type=1 gcv=gcvc else type=2 gcv=gcvl endif else if(type.eq.1) then gcv=gcvc/(sumw* (1 - (dfoff*cost + dcent)/sumw)**2 ) else gcv=gcvl/(sumw* (1 - (dcent + (dfoff + 1)*cost)/sumw)**2) endif if(type.eq.1) then do 107 j=1,p coef(1,j)=work(j)*dcent coef(2,j)=0d0 do 109 i=1,n s(i,j)=coef(1,j) 109 continue 107 continue else do 111 j=1,p coef(1,j)=work(j)*dcent-xbar*coef(2,j) do 113 i=1,n s(i,j)=coef(1,j)+coef(2,j)*x(i) 113 continue 111 continue endif return end subroutine sspl2(x,y,w,n,p,knot,nk,wp,match,nef,dfoff,dfmax,cost, * lambda,df,gcv,coef,s,type,center,xrange,work,iwork,tol,ier) C this routine selects from the linear and constant model as well C see documentation for sspl C workspace must be (2*p+2)*nefp1 + (p+16)*nk + 2*n C if type>0 then no selection is performed; the fit is simply computed. integer n,p,nk,nef,type,match(n),ier,method,iwork(n) double precision x(n),y(n,p),w(n),knot(nk+4),wp(p),dfoff,dfmax, * cost,lambda,df,gcv,coef(*),s(n,p),xrange(2),work(*),tol double precision coef1,coef2,cv c$$$ Naras fix: gcv1 was not declared to be double precision! double precision gcv1 logical center c$$$ Naras fix: added icenter integer icenter C center is F for no centering, else T c$$$ Naras fix: added icenter logic below if(center) then icenter = 1 else icenter = 0 endif if(type.eq.3)then method=1 call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,icenter, $ dfoff, dfmax,cost,lambda,df,cv,gcv,coef,s,work(1), $ xrange,work(n+1),iwork, ier) return endif if(type.gt.0)then call simfit(x,y,w,n,p,dfoff,cost,wp,gcv,coef,s,type,center, $ work) c$$$ Naras fix: commented out c$$$ if(center) then c$$$ icenter = 1 c$$$ else c$$$ icenter = 0 c$$$ endif df=dble(type) - dble(icenter) return endif method=3 call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,icenter, * dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,work(1),xrange, $ work(n+1),iwork, ier) gcv1=gcv call simfit(x,y,w,n,p,dfoff,cost,wp,gcv,work,work(2*p+1),type, * center,work((n+2)*p+1)) if(gcv.le.gcv1) then C the coef swapping is so as not to destroy the spline coefs if needed if(center) then icenter = 1 else icenter = 0 endif df=dble(type) - dble(icenter) do 30 j=1,p coef1=work(1+(j-1)*2) coef2=work(2+(j-1)*2) if(type.eq.1)then do 25 i=1,n s(i,j)=coef1 25 continue else do 27 i=1,n s(i,j) =coef1+coef2*x(i) 27 continue endif coef(1+(j-1)*2)=coef1 coef(2+(j-1)*2)=coef2 30 continue else type=3 gcv=gcv1 endif return end subroutine psspl2(x,n,p,knot,nk,xrange,coef,coefl,s,order,type) implicit double precision(a-h,o-z) integer n,p,nk, order, type double precision x(n),knot(nk+4),xrange(2),coef(nk,p),coefl(2,1), * s(n,p) c Var double precision ytemp C switch(type){ case 1, 2, 3 } : if(type .eq. 1) then do 30 j=1,p if(order.ge.1)then ytemp=0d0 else ytemp=coefl(1,j) endif do 35 i=1,n s(i,j)=ytemp 35 continue 30 continue else if(type .eq. 2) then if(order.ge.1)then do 40 j=1,p if(order.eq.1)then ytemp=coefl(2,j) else ytemp=0d0 endif do 44 i =1,n s(i,j)=ytemp 44 continue 40 continue else do 46 j=1,p do 48 i=1,n s(i,j)=coefl(1,j)+coefl(2,j)*x(i) 48 continue 46 continue endif else if(type .eq. 3) then call psspl(x,n,p,knot,nk,xrange,coef,s,order) endif return end subroutine psspl(x,n,p,knot,nk,xrange,coef,s,order) C make predictions from a fitted smoothing spline, linear or constant implicit double precision(a-h,o-z) integer n,p,nk,order double precision x(n),knot(nk+4),xrange(2),coef(nk,p),s(n,p) double precision xcs,xmin,xdif, endv(2),ends(2),xends(2),stemp c$$$ Naras fix, external routine not declared, added line below EXTERNAL bvalue double precision bvalue integer where c$$$ Naras fix: In what follows, it appears that stemp is always set c$$$ becasue order is one of 0,1,2. So initializing to zero should be ok stemp = 0d0 if(order.gt.2.or.order.lt.0) return xdif=xrange(2)-xrange(1) xmin=xrange(1) xends(1)=0d0 xends(2)=1d0 do 23253 j=1,p if(order.eq.0)then c$$$ Naras fix c$$$ endv(1)=bvalue(knot,nk+8,coef(1,j),nk,4,0d0,0) c$$$ endv(2)=bvalue(knot,nk+8,coef(1,j),nk,4,1d0,0) endv(1)=bvalue(knot,coef(1,j),nk,4,0d0,0) endv(2)=bvalue(knot,coef(1,j),nk,4,1d0,0) endif if(order.le.1)then c$$$ Naras fix c$$$ ends(1)=bvalue(knot,nk+8,coef(1,j),nk,4,0d0,1) c$$$ ends(2)=bvalue(knot,nk+8,coef(1,j),nk,4,1d0,1) ends(1)=bvalue(knot,coef(1,j),nk,4,0d0,1) ends(2)=bvalue(knot,coef(1,j),nk,4,1d0,1) endif do 23259 i=1,n xcs=(x(i)-xmin)/xdif if(xcs.lt.0d0)then where=1 else if(xcs.gt.1d0)then where=2 else where=0 endif if(where.gt.0)then C beyond extreme knots c switch(order){ case 0: / 1 / 2 } : if(order .eq. 0) then stemp=endv(where)+(xcs-xends(where))*ends(where) else if(order .eq. 1) then stemp=ends(where) else if(order .eq. 2) then stemp=0d0 endif else c$$$ Naras fix c$$$ stemp=bvalue(knot,nk+8,coef(1,j),nk,4,xcs,order) stemp=bvalue(knot,coef(1,j),nk,4,xcs,order) endif if(order.gt.0)then s(i,j)=stemp/(xdif**dble(order)) else s(i,j)=stemp endif 23259 continue 23253 continue return end mda/src/dmarss.f0000644000176200001440000005327214445161305013256 0ustar liggesusersc$$$Naras fixes c$$$ subroutine marss(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,penalty, c$$$ & thresh,forwstep,interms,prune,bx,fullin,lenb, bestgcv, bestin, c$$$ & flag,cut,dir,res,alpha,beta,scrat,iscrat,trace) subroutine marss(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,penalty, & thresh,iforwstep,interms,iprune,bx,fullin,lenb,bestgcv,bestin, & flag,cut,dir,res,beta,scrat,iscrat,itrace) implicit double precision (a-h,o-z) integer nx, n,p,nclass,tagx(nx,p),maxorder,mmax,bestin(mmax), & flag(mmax,p),fullin(mmax) c$$$Naras fixes c$$$ double precision y(n,nclass),x(nx,p),w(n),bx(nx,mmax),bestgcv, c$$$ & cut(mmax,p),dir(mmax,p),res(nx,nclass),alpha(nclass), c$$$ & beta(mmax,nclass) double precision y(n,nclass),x(nx,p),w(n),bx(nx,mmax),bestgcv, & cut(mmax,p),dir(mmax,p),res(nx,nclass), & beta(mmax,nclass) double precision scrat(*) integer iscrat(*),itrace,iforwstep,iprune logical forwstep, prune, trace, tracec common tracec if(iforwstep.eq.0)then forwstep=.false. else forwstep=.true. endif if(iprune.eq.0)then prune=.false. else prune=.true. endif if(itrace.eq.0)then trace=.false. else trace=.true. endif tracec=trace len1=n*mmax len2=mmax len3=mmax*mmax len4=mmax*nclass len5=nclass len6=mmax len7=mmax len8=nclass len9=n len10=n*mmax len11=mmax*mmax len12=mmax*nclass len13=mmax*mmax len14=mmax*mmax n1=1 n2=n1+len1 n3=n2+len2 n4=n3+len3 n5=n4+len4 n6=n5+len5 n7=n6+len6 n8=n7+len7 n9=n8+len8 n10=n9+len9 n11=n10+len10 n12=n11+len11 n13=n12+len12 n14=n13+len13 n15=n14+len14 c$$$Naras fix c$$$ call marsnew1(nx, n, p, nclass, y, x, w, tagx, maxorder, mmax, c$$$ & bx, bestgcv, bestin, fullin, lenb, flag, cut, dir, res, c$$$ & alpha, beta, penalty, thresh, forwstep, interms, prune, c$$$ & scrat, scrat(n2), scrat(n3), scrat(n4), scrat(n5), scrat(n6), c$$$ & scrat(n7), scrat(n8), scrat(n9), scrat(n10), scrat(n11), c$$$ & scrat(n12), scrat(n13), scrat(n14), scrat(n15), iscrat, c$$$ & iscrat(1+mmax), iscrat(1+2*mmax), iscrat(1+3*mmax)) call marsnew1(nx, n, p, nclass, y, & x, w, tagx, maxorder, mmax, & bx, bestgcv, bestin, fullin, lenb, & flag, cut, dir, res, beta, & penalty, thresh, forwstep, interms, prune, & scrat, scrat(n2), scrat(n3), scrat(n4), scrat(n5), & scrat(n6), scrat(n8), scrat(n9), scrat(n10), & scrat(n13), scrat(n14), scrat(n15), & iscrat, iscrat(1+mmax), iscrat(1+2*mmax)) return end c$$$Naras fix c$$$ subroutine marsnew1(nx, n, p, nclass, y, x, w, tagx, maxorder, c$$$ & mmax, bx, bestgcv, bestin, fullin, lenb, flag, cut, dir, c$$$ & res, alpha, beta, penalty, thresh, forwstep, interms, c$$$ & prune, bxorth, bxorthm, cov, covsy, ybar, scr1, scr5, scr6, c$$$ & temp, bxsc, r, betasc, varsc, var, work, termlen, in, c$$$ & tempin, qpivot) c$$$ implicit double precision (a-h,o-z) c$$$ integer n,nterms2,p,mmax,flag(mmax,p),tagx(nx,p),termlen(mmax), c$$$ & nclass,fullin(mmax) c$$$ double precision cov(mmax,mmax),covsy(mmax,nclass),critmax, c$$$ & x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax), c$$$ & y(n,nclass),ybar(nclass),scr1(mmax),scr5(mmax),scr6(nclass) c$$$ double precision temp(n),w(n), cut(mmax,p),dir(mmax,p), c$$$ & alpha(nclass),beta(mmax,nclass), bxsc(n,mmax), r(mmax,mmax), c$$$ & dofit, res(nx,nclass),betasc(mmax,nclass), varsc(mmax,mmax), c$$$ & var(mmax,mmax), stopfac, work(*) subroutine marsnew1(nx, n, p, nclass, y, & x, w, tagx, maxorder, mmax, & bx, bestgcv, bestin, fullin, lenb, & flag, cut, dir, res, beta, & penalty, thresh, forwstep, interms, prune, & bxorth, bxorthm, cov, covsy, ybar, & scr1, scr6, temp, bxsc, & varsc, var, work, & termlen, tempin, qpivot) implicit double precision (a-h,o-z) integer n,nterms2,p,mmax,flag(mmax,p),tagx(nx,p),termlen(mmax), & nclass,fullin(mmax) c$$$Naras fix c$$$ double precision cov(mmax,mmax),covsy(mmax,nclass),critmax, c$$$ & x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax), c$$$ & y(n,nclass),ybar(nclass),scr1(mmax),scr5(mmax),scr6(nclass) c$$$ double precision temp(n),w(n), cut(mmax,p),dir(mmax,p), c$$$ & beta(mmax,nclass), bxsc(n,mmax), r(mmax,mmax), c$$$ & dofit, res(nx,nclass),betasc(mmax,nclass), varsc(mmax,mmax), c$$$ & var(mmax,mmax), stopfac, work(*) double precision cov(mmax,mmax),covsy(mmax,nclass),critmax, & x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax), & y(n,nclass),ybar(nclass),scr1(mmax),scr6(nclass) double precision temp(n),w(n), cut(mmax,p),dir(mmax,p), & beta(mmax,nclass), bxsc(n,mmax), & dofit, res(nx,nclass), varsc(mmax,mmax), & var(mmax,mmax), stopfac, work(*) integer tempin(mmax), bestin(mmax),qrank, qpivot(mmax) logical forwstep,go, prune, newform, cvar, trace common trace double precision rtemp(4) integer itemp(4) tolbx=.01 stopfac=10.0 prevcrit=10d9 if(.not.(interms.eq.1))goto 23000 dofit=0 goto 23001 23000 continue dofit=0 do 23002 j=2,lenb dofit=dofit+fullin(j) 23002 continue nterms=interms 23001 continue if(.not.(forwstep))goto 23004 fullin(1)=1 do 23006 i=2,mmax fullin(i)=0 23006 continue do 23008 i=1,n w(i)=1 23008 continue do 23010 i=1, mmax termlen(i)=0 do 23012 j=1, p flag(i,j)=0 cut(i,j)=0 23012 continue 23010 continue nterms=1 nterms2=2 do 23014 i=1,n bx(i,1)=1 bxorth(i,1)=1.0/dsqrt(dble(n)) 23014 continue bxorthm(1)=1/dsqrt(dble(n)) do 23016 i=1,n do 23018 j=1, mmax bx(i,j)=0.0 23018 continue 23016 continue do 23020 i=1,n bx(i,1)=1 23020 continue do 23022 k=1, nclass ybar(k)=0.0 do 23024 i=1,n ybar(k)=ybar(k)+y(i,k)/n 23024 continue 23022 continue if(.not.(interms.eq.1))goto 23026 rssnull=0.0 do 23028 k=1, nclass do 23030 i=1,n rssnull=rssnull+(y(i,k)-ybar(k))**2 23030 continue 23028 continue goto 23027 23026 continue rssnull=0.0 do 23032 k=1, nclass do 23034 i=1,n rssnull=rssnull+res(i,k)**2 23034 continue 23032 continue 23027 continue rss=rssnull cmm= (1+dofit) + penalty*(.5*dofit) gcvnull=(rssnull/n)/(1.0-cmm/n)**2 if(.not.(trace))goto 23036 c$$$ call dblepr("initial rss=",11,rssnull,1) 23036 continue if(.not.(trace))goto 23038 c$$$ call dblepr("initial gcv=",11,gcvnull,1) 23038 continue lenb=1 ii=interms-1 go=.true. 23040 if(.not.( (ii.lt.(mmax-1)).and.((rss/rssnull).gt.thresh).and.go)) & goto 23041 ii=ii+2 do 23042 i1=1, nterms do 23044 i2=1, nterms cov(i1,i2)=0 23044 continue 23042 continue do 23046 j=1, nterms cov(j,j)=0.0 do 23048 i=1,n cov(j,j) = cov(j,j) + % (bxorth(i,j)-bxorthm(j)) * (bxorth(i,j)-bxorthm(j)) 23048 continue 23046 continue do 23050 k=1,nclass do 23052 j=1, nterms covsy(j,k)=0.0 do 23054 i=1,n covsy(j,k)=covsy(j,k)+(y(i,k)-ybar(k))*bxorth(i,j) 23054 continue 23052 continue 23050 continue do 23056 ik=1,mmax tempin(ik)=fullin(ik) 23056 continue c$$$Naras fixes c$$$ call addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass,rss,prevcrit, c$$$ & cov,covsy,y,ybar,x,tagx,w,termlen,mmax,tolbx, nterms,flag, c$$$ & maxorder,scr1,scr5,scr6,imax,jmax,kmax,critmax, newform, c$$$ & bxsc, r, betasc, temp) call addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass,rss,prevcrit, & cov,covsy,y,ybar,x,tagx,termlen,mmax,tolbx, nterms,flag, & maxorder,scr1,scr6,imax,jmax,kmax,critmax, newform, & temp) doftemp=dofit doftemp=doftemp+1 if(.not.((imax.gt.1).and.(newform)))goto 23058 doftemp=doftemp+1 23058 continue temprss=rss-critmax cmm= (1+doftemp) + penalty*(.5*doftemp) gcv=(temprss/n)/(1.0-cmm/n)**2 go=.false. if (.not.(((critmax/rss).gt.thresh).and. & ((gcv/gcvnull).lt.stopfac))) goto 23060 go=.true. dofit=doftemp rss=rss-critmax kk=tagx(imax,jmax) c$$$256 format(" ","adding term"," jmax=",i3, " imax=",i3 ," kmax=",i3, c$$$ & " critmax= ",f8.2," cutp=", f9.5," rss=",f8.2, " gcv=",f8.2, c$$$ & " dofit=",f9.3) itemp(1)=jmax itemp(2)=imax itemp(3)=kmax rtemp(1)=critmax rtemp(2)=x(kk,jmax) rtemp(3)=rss rtemp(4)=gcv if(.not.(trace))goto 23062 c$$$Naras fixes c$$$ call intpr("adding term ",12,ii,1) 23062 continue if(.not.(trace))goto 23064 c$$$ call intpr("var, sp index, parent",21,itemp,3) 23064 continue if(.not.(trace))goto 23066 c$$$ call dblepr("critmax cut rss gcv",19,rtemp,4) 23066 continue prevcrit=critmax do 23068 j=1,p flag(ii,j)=flag(kmax,j) flag(ii+1,j)=flag(kmax,j) cut(ii,j)=cut(kmax,j) cut(ii+1,j)=cut(kmax,j) dir(ii,j)=dir(kmax,j) dir(ii+1,j)=dir(kmax,j) 23068 continue termlen(ii)=termlen(kmax)+1 termlen(ii+1)=termlen(kmax)+1 do 23070 i=1,n temp(i)=x(tagx(i,jmax),jmax) 23070 continue temp1=temp(imax) fullin(ii)=1 if(.not.((imax.gt.1).and.(newform)))goto 23072 fullin(ii+1)=1 23072 continue flag(ii,jmax)=1 flag(ii+1,jmax)=1 cut(ii,jmax)=temp1 cut(ii+1,jmax)=temp1 dir(ii,jmax)=1 dir(ii+1,jmax)=-1 if(.not.(fullin(ii+1).eq.0))goto 23074 termlen(ii+1)=maxorder+1 23074 continue do 23076 i=1,n if(.not.( (x(i,jmax)-temp1).gt.0))goto 23078 bx(i,ii)=bx(i,kmax)*(x(i,jmax)-temp1) 23078 continue if(.not.((temp1-x(i,jmax)).ge.0))goto 23080 bx(i,ii+1)=bx(i,kmax)*(temp1-x(i,jmax)) 23080 continue 23076 continue if(.not.(nterms.eq.1))goto 23082 temp1=0.0 do 23084 i=1,n temp1=temp1+bx(i,2)/n 23084 continue do 23086 i=1,n bxorth(i,2)=bx(i,2)-temp1 23086 continue goto 23083 23082 continue call orthreg(n,n,nterms,bxorth,fullin, bx(1,ii),bxorth(1,nterms2)) 23083 continue if(.not.(fullin(ii+1).eq.1))goto 23088 call orthreg(n,n,nterms+1,bxorth,fullin, bx(1,ii+1), & bxorth(1,nterms2+1)) goto 23089 23088 continue do 23090 i=1,n bxorth(i,nterms2+1)=0 23090 continue 23089 continue bxorthm(nterms2)=0.0 bxorthm(nterms2+1)=0.0 do 23092 i=1,n bxorthm(nterms2)=bxorthm(nterms2)+bxorth(i,nterms2)/n bxorthm(nterms2+1)=bxorthm(nterms2+1)+bxorth(i,nterms2+1)/n 23092 continue temp1=0.0 temp2=0.0 do 23094 i=1,n temp1=temp1+bxorth(i,nterms2)**2 temp2=temp2+bxorth(i,nterms2+1)**2 23094 continue if(.not.(temp1.gt.0.0))goto 23096 do 23098 i=1,n bxorth(i,nterms2) =bxorth(i,nterms2)/dsqrt(temp1) 23098 continue 23096 continue if(.not.(temp2.gt.0.0))goto 23100 do 23102 i=1,n bxorth(i,nterms2+1)=bxorth(i,nterms2+1)/dsqrt(temp2) 23102 continue 23100 continue lenb=lenb+2 nterms=nterms+2 nterms2=nterms2+2 23060 continue goto 23040 23041 continue rtemp(1)=rss/rssnull rtemp(2)=critmax/rss rtemp(3)=gcv/gcvnull if(.not.(trace))goto 23104 c$$$ call dblepr("stopping forw step; rss crit and gcv ratios",43, c$$$ & rtemp,3) 23104 continue if(.not.(trace))goto 23106 if(.not.((rss/rssnull).le.thresh))goto 23108 c$$$ call dblepr("rss ratio=",10,rss/rssnull,1) 23108 continue if(.not.((critmax/rss).le.thresh))goto 23110 c$$$ call dblepr ("crit ratio=",11,critmax/rss,1) 23110 continue c$$$ call dblepr("critmax",7,critmax,1) c$$$ call dblepr("rss",3,rss,1) if(.not.((gcv/gcvnull).gt.stopfac))goto 23112 c$$$ call dblepr("gcv ratio=",10,gcv/gcvnull,1) 23112 continue 23106 continue 23004 continue dofit= -1 do 23114 i=1,nterms bestin(i)=fullin(i) dofit=dofit+fullin(i) 23114 continue if(.not.(trace))goto 23116 c$$$ call intpr("aft forw step",13,nterms,1) 23116 continue cvar=.false. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,bestin,y,qpivot,qrank, & beta,res,rss,cvar,var,varsc,scr1, work) c$$$Naras fix c$$$ nt=dofit+1 nt=int(dofit+1) if(.not.(qrank.lt. nt))goto 23118 do 23120 i=qrank+1,nt bestin(qpivot(i))=0 fullin(qpivot(i))=0 dofit=dofit-1 23120 continue 23118 continue cvar=.true. rssfull=rss cmm= (1+dofit) + penalty*(.5*dofit) bestgcv=(rss/n)/(1.0-cmm/n)**2 rtemp(1)=bestgcv rtemp(2)=rssfull rtemp(3)=dofit if(.not.(trace))goto 23122 c$$$ call dblepr("full model: gcv rss dofit",25,rtemp,3) 23122 continue if(.not.(trace))goto 23124 c$$$ call intpr("terms",5,fullin,lenb) 23124 continue if(.not.(prune))goto 23126 c Need var calculated to do drop-one calculations from t values. cvar=.true. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,tempin,y,qpivot,qrank, & beta,res,rss,cvar,var,varsc,scr1,work) do 23128 i=1,mmax tempin(i)=bestin(i) 23128 continue 23130 if(.not.(dofit.gt.0 ))goto 23131 jo=1 rsstemp=10d99 minterm=0 do 23132 ii=2, lenb if(.not.(tempin(ii).eq.1))goto 23134 jo=jo+1 temp7=0.0 do 23136 kc=1,nclass temp7=temp7+beta(jo,kc)**2/var(jo,jo) 23136 continue if(.not.(temp7 .lt. rsstemp))goto 23138 minterm=ii rsstemp=temp7 23138 continue 23134 continue 23132 continue rss=rss+rsstemp dofit=dofit-1 cmm= (1.0+dofit) + penalty*(.5*dofit) gcv=(rss/n)/(1.0-cmm/n)**2 tempin(minterm)=0 c$$$100 format(" ","pruning, minterm= ",i4, " gcv=",f9.3,2x, " rss=",f9.3, c$$$ & 2x," dof=",f9.3," model= ",60(i1,1x)) if(.not.(gcv.lt. bestgcv))goto 23140 bestgcv=gcv do 23142 i=1,mmax bestin(i)=tempin(i) 23142 continue 23140 continue if(.not.(dofit .gt. 0))goto 23144 cvar=.true. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,tempin,y,qpivot,qrank, & beta,res,rss,cvar,var,varsc,scr1,work) 23144 continue goto 23130 23131 continue call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,bestin,y,qpivot,qrank, & beta,res,rss,cvar,var,varsc,scr1, work) c$$$101 format(" ","best model gcv=",f9.3," rss=",f9.3,2x,"model= ", c$$$ & 60(i1,1x)) if(.not.(trace))goto 23146 c$$$ call intpr("best model",10,bestin,lenb) 23146 continue if(.not.(trace))goto 23148 c$$$ call dblepr(" gcv=",4,bestgcv,1) 23148 continue 23126 continue return end c$$$Naras fixes c$$$ subroutine addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass,rss, c$$$ & prevcrit,cov,covsy,y,ybar,x,tagx,w,termlen,mmax,tolbx, c$$$ & nterms,flag, maxorder,scr1,scr5,scr6,imax,jmax,kmax, c$$$ & critmax, newform,bxsc,r, betasc, scrat) c$$$ implicit double precision (a-h,o-z) c$$$ integer n,nterms,nterms2,p,mmax,flag(mmax,p),v,tagx(nx,p), c$$$ & termlen(mmax), nclass, tempin(mmax), minspan, iendspan c$$$ double precision cov(mmax,mmax),covsy(mmax,nclass),critmax, c$$$ & x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax), c$$$ & y(n,nclass),ybar(nclass),scr1(mmax),scr5(mmax),scr6(nclass), c$$$ & bxsc(n,mmax), r(mmax,mmax),betasc(mmax,nclass), scrat(n), c$$$ & w(n) c$$$ subroutine addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass,rss, & prevcrit,cov,covsy,y,ybar,x,tagx,termlen,mmax,tolbx, & nterms,flag, maxorder,scr1,scr6,imax,jmax,kmax, & critmax, newform, scrat) implicit double precision (a-h,o-z) integer n,nterms,nterms2,p,mmax,flag(mmax,p),v,tagx(nx,p), & termlen(mmax), nclass, tempin(mmax), minspan, iendspan double precision cov(mmax,mmax),covsy(mmax,nclass),critmax, & x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax), & y(n,nclass),ybar(nclass),scr1(mmax),scr6(nclass), & scrat(n) double precision temp1, temp2, scr2,sumb, sumbx, su, st, tem logical newform, tnewform, trace common trace critmax=0 jmax=0 imax=0 kmax=0 c$$$ Naras fixes kk1 = 0 k0 = 0 kk = 0 do 23150 m=1,nterms nm=0 do 23152 jjj=1,n if(.not.(bx(jjj,m).gt.0))goto 23154 nm=nm+1 23154 continue 23152 continue tem=-(1d0/(p*nm))*dlog(1d0 - 5d-2) c$$$Naras fix c$$$ minspan= -1d0*(dlog(tem)/dlog(2d0))/2.5 minspan= int(-1d0*(dlog(tem)/dlog(2d0))/2.5) tem=(5d-2)/p c$$$Naras fix c$$$ iendspan=3d0-dlog(tem)/dlog(2d0) iendspan=int(3d0-dlog(tem)/dlog(2d0)) if(.not.(termlen(m).lt. maxorder))goto 23156 do 23158 v=1,p if(.not.(flag(m,v).eq.0))goto 23160 tnewform=.true. mm=1 23162 if(.not.((mm.le.nterms).and.tnewform))goto 23163 mm=mm+1 if(.not.(tempin(mm).eq.1))goto 23164 tnewform=.false. if(.not.(flag(mm,v).ne.1))goto 23166 tnewform=.true. go to 9911 23166 continue do 23168 j=1,p if(.not.(j.ne.v))goto 23170 if(.not.(flag(mm,j).ne.flag(m,j)))goto 23172 tnewform=.true. go to 9911 23172 continue 23170 continue 23168 continue 23164 continue 9911 continue goto 23162 23163 continue if(.not.(tnewform))goto 23174 nterms2=nterms+1 do 23176 i=1,n scrat(i)=x(i,v)*bx(i,m) 23176 continue if(.not.(nterms.gt.1))goto 23178 call orthreg(n,n,nterms,bxorth,tempin, scrat,bxorth(1,nterms2)) goto 23179 23178 continue tem=0 do 23180 i=1,n tem=tem+scrat(i)/n 23180 continue do 23182 i=1,n bxorth(i,2)=scrat(i)-tem 23182 continue 23179 continue bxorthm(nterms2)=0.0 do 23184 i=1,n bxorthm(nterms2)=bxorthm(nterms2)+bxorth(i,nterms2)/n 23184 continue temp1=0.0 do 23186 i=1,n temp1=temp1+bxorth(i,nterms2)**2 23186 continue if(.not.(temp1.gt.tolbx))goto 23188 do 23190 i=1,n bxorth(i,nterms2)=bxorth(i,nterms2)/dsqrt(temp1) 23190 continue goto 23189 23188 continue do 23192 i=1,n bxorth(i,nterms2)=0 23192 continue tnewform=.false. 23189 continue do 23194 i1=1, nterms2 cov(i1,nterms2)=0.0 cov(nterms2, i1)=0.0 23194 continue cov(nterms2,nterms2)=1 do 23196 kc=1,nclass covsy(nterms2,kc)=0.0 do 23198 i=1,n covsy(nterms2,kc) = covsy(nterms2,kc)+(y(i,kc)-ybar(kc)) * & bxorth(i,nterms2) 23198 continue 23196 continue critnew=0.0 do 23200 kc=1,nclass temp1=0 do 23202 i=1,n temp1=temp1+y(i,kc)*bxorth(i,nterms2) 23202 continue critnew=critnew+temp1**2 23200 continue if(.not.(critnew.gt.critmax))goto 23204 jmax=v critmax=critnew imax=1 kmax=m 23204 continue 23174 continue if(.not.(tnewform))goto 23206 nterms2=nterms+1 nterms21=nterms+2 goto 23207 23206 continue nterms2=nterms nterms21=nterms+1 critnew=0.0 23207 continue do 23208 kc=1, nclass covsy(nterms21,kc)=0 23208 continue do 23210 ii=1,nterms21 cov(ii,nterms21)=0 cov(nterms21,ii)=0 23210 continue do 23212 kc=1,nclass scr6(kc)=0 23212 continue do 23214 ii=1,nterms21 scr1(ii)=0 23214 continue scr2=0 su=0 st=0 sumbx2=0 sumb=0.0 sumbx=0.0 k=n-1 23216 if(.not.(k.gt.0))goto 23218 do 23219 i=1,nterms2 kk=tagx(k,v) kk1=tagx(k+1,v) scr1(i)=scr1(i)+(bxorth(kk1,i)-bxorthm(i))*bx(kk1,m) cov(i,nterms21)=cov(i,nterms21)+ (x(kk1,v)-x(kk,v))*scr1(i) cov(nterms21,i)=cov(i,nterms21) 23219 continue scr2=scr2+(bx(kk1,m)**2)*x(kk1,v) sumbx2=sumbx2+bx(kk1,m)**2 sumb=sumb+bx(kk1,m) sumbx=sumbx+bx(kk1,m)*x(kk1,v) su=st st=sumbx-sumb*x(kk,v) cov(nterms21,nterms21)= cov(nterms21,nterms21)+ (x(kk1,v)-x(kk,v)) & *(2*scr2-sumbx2*(x(kk,v)+x(kk1,v)))+ ( (su*su)-(st*st) )/n crittemp=critnew do 23221 kc=1, nclass scr6(kc)=scr6(kc)+(y(kk1,kc)-ybar(kc))*bx(kk1,m) covsy(nterms21,kc)=covsy(nterms21,kc )+(x(kk1,v)-x(kk,v))*scr6(kc) temp1=covsy(nterms21,kc) temp2=cov(nterms21,nterms21) do 23223 jk=1,nterms2 temp1=temp1-covsy(jk,kc)*cov(jk,nterms21) temp2=temp2-cov(jk,nterms21)*cov(jk,nterms21) 23223 continue if(.not.(cov(nterms21,nterms21).gt.0))goto 23225 if(.not.((temp2/cov(nterms21,nterms21)) .gt. tolbx))goto 23227 critadd=(temp1*temp1)/temp2 goto 23228 23227 continue critadd=0.0 23228 continue goto 23226 23225 continue critadd=0 23226 continue crittemp=crittemp+critadd if(.not.(crittemp.gt.(1.01*rss)))goto 23229 crittemp=0.0 23229 continue if(.not.(crittemp.gt.(2*prevcrit)))goto 23231 crittemp=0.0 23231 continue 23221 continue if(.not.(k.gt.1))goto 23233 k0=tagx(k-1,v) 23233 continue if(.not.((crittemp.gt.critmax) .and. & (mod(k,minspan).eq.0) .and. & (k.ge.iendspan) .and. & (k.le.(n-iendspan)) .and. & (bx(kk1,m).gt.0) .and. & (.not.( (k.gt.1) .and. (x(kk,v).eq.x(k0,v))) ))) goto 23235 jmax=v critmax=crittemp imax=k kmax=m newform=tnewform 23235 continue k=k-1 goto 23216 23218 continue 23160 continue continue 23158 continue 23156 continue 23150 continue return end mda/src/bsplvd.f0000644000176200001440000002144713653663715013272 0ustar liggesusers subroutine bsplvd ( t, lent, k, x, left, a, dbiatx, nderiv ) c -------- ------ implicit none C calculates value and deriv.s of all b-splines which do not vanish at x C calls bsplvb c c****** i n p u t ****** c t the knot array, of length left+k (at least) c k the order of the b-splines to be evaluated c x the point at which these values are sought c left an integer indicating the left endpoint of the interval of c interest. the k b-splines whose support contains the interval c (t(left), t(left+1)) c are to be considered. c a s s u m p t i o n - - - it is assumed that c t(left) .lt. t(left+1) c division by zero will result otherwise (in b s p l v b ). c also, the output is as advertised only if c t(left) .le. x .le. t(left+1) . c nderiv an integer indicating that values of b-splines and their c derivatives up to but not including the nderiv-th are asked c for. ( nderiv is replaced internally by the integer in (1,k) c closest to it.) c c****** w o r k a r e a ****** c a an array of order (k,k), to contain b-coeff.s of the derivat- c ives of a certain order of the k b-splines of interest. c c****** o u t p u t ****** c dbiatx an array of order (k,nderiv). its entry (i,m) contains c value of (m-1)st derivative of (left-k+i)-th b-spline of c order k for knot sequence t , i=m,...,k; m=1,...,nderiv. c c****** m e t h o d ****** c values at x of all the relevant b-splines of order k,k-1,..., c k+1-nderiv are generated via bsplvb and stored temporarily c in dbiatx . then, the b-coeffs of the required derivatives of the c b-splines of interest are generated by differencing, each from the c preceding one of lower order, and combined with the values of b- c splines of corresponding order in dbiatx to produce the desired c values. C Args integer lent,k,left,nderiv double precision t(lent),x, dbiatx(k,nderiv), a(k,k) C Locals double precision factor,fkp1mm,sum integer i,ideriv,il,j,jlow,jp1mid, kp1,kp1mm,ldummy,m,mhigh mhigh = max0(min0(nderiv,k),1) c mhigh is usually equal to nderiv. kp1 = k+1 call bsplvb(t,lent,kp1-mhigh,1,x,left,dbiatx) if (mhigh .eq. 1) go to 99 c the first column of dbiatx always contains the b-spline values c for the current order. these are stored in column k+1-current c order before bsplvb is called to put values for the next c higher order on top of it. ideriv = mhigh do 15 m=2,mhigh jp1mid = 1 do 11 j=ideriv,k dbiatx(j,ideriv) = dbiatx(jp1mid,1) jp1mid = jp1mid + 1 11 continue ideriv = ideriv - 1 call bsplvb(t,lent,kp1-ideriv,2,x,left,dbiatx) 15 continue c c at this point, b(left-k+i, k+1-j)(x) is in dbiatx(i,j) for c i=j,...,k and j=1,...,mhigh ('=' nderiv). in particular, the c first column of dbiatx is already in final form. to obtain cor- c responding derivatives of b-splines in subsequent columns, gene- c rate their b-repr. by differencing, then evaluate at x. c jlow = 1 do 20 i=1,k do 19 j=jlow,k a(j,i) = 0e0 19 continue jlow = i a(i,i) = 1e0 20 continue c at this point, a(.,j) contains the b-coeffs for the j-th of the c k b-splines of interest here. c do 41 m=2,mhigh kp1mm = kp1 - m fkp1mm = dble(kp1mm) il = left i = k c c for j=1,...,k, construct b-coeffs of (m-1)st derivative of c b-splines from those for preceding derivative by differencing c and store again in a(.,j) . the fact that a(i,j) = 0 for c i .lt. j is used.sed. do 25 ldummy=1,kp1mm factor = fkp1mm/(t(il+kp1mm) - t(il)) c the assumption that t(left).lt.t(left+1) makes denominator c in factor nonzero. do 24 j=1,i a(i,j) = (a(i,j) - a(i-1,j))*factor 24 continue il = il - 1 i = i - 1 25 continue c c for i=1,...,k, combine b-coeffs a(.,i) with b-spline values c stored in dbiatx(.,m) to get value of (m-1)st derivative of c i-th b-spline (of interest here) at x , and store in c dbiatx(i,m). storage of this value over the value of a b-spline c of order m there is safe since the remaining b-spline derivat- c ive of the same order do not use this value due to the fact c that a(j,i) = 0 for j .lt. i . do 40 i=1,k sum = 0. jlow = max0(i,m) do 35 j=jlow,k sum = a(j,i)*dbiatx(j,m) + sum 35 continue dbiatx(i,m) = sum 40 continue 41 continue 99 return end subroutine bsplvb ( t, lent,jhigh, index, x, left, biatx ) implicit none c ------------- calculates the value of all possibly nonzero b-splines at x of order c c jout = dmax( jhigh , (j+1)*(index-1) ) c c with knot sequence t . c c****** i n p u t ****** c t.....knot sequence, of length left + jout , assumed to be nonde- c creasing. a s s u m p t i o n . . . . c t(left) .lt. t(left + 1) . c d i v i s i o n b y z e r o will result if t(left) = t(left+1) c jhigh, c index.....integers which determine the order jout = max(jhigh, c (j+1)*(index-1)) of the b-splines whose values at x are to c be returned. index is used to avoid recalculations when seve- c ral columns of the triangular array of b-spline values are nee- c ded (e.g., in bvalue or in bsplvd ). precisely, c if index = 1 , c the calculation starts from scratch and the entire triangular c array of b-spline values of orders 1,2,...,jhigh is generated c order by order , i.e., column by column . c if index = 2 , c only the b-spline values of order j+1, j+2, ..., jout are ge- c nerated, the assumption being that biatx , j , deltal , deltar c are, on entry, as they were on exit at the previous call. c in particular, if jhigh = 0, then jout = j+1, i.e., just c the next column of b-spline values is generated. c c w a r n i n g . . . the restriction jout .le. jmax (= 20) is im- c posed arbitrarily by the dimension statement for deltal and c deltar below, but is n o w h e r e c h e c k e d for . c c x.....the point at which the b-splines are to be evaluated. c left.....an integer chosen (usually) so that c t(left) .le. x .le. t(left+1) . c c****** o u t p u t ****** c biatx.....array of length jout , with biatx(i) containing the val- c ue at x of the polynomial of order jout which agrees with c the b-spline b(left-jout+i,jout,t) on the interval (t(left), c t(left+1)) . c c****** m e t h o d ****** c the recurrence relation c c x - t(i) t(i+j+1) - x c b(i,j+1)(x) = -----------b(i,j)(x) + ---------------b(i+1,j)(x) c t(i+j)-t(i) t(i+j+1)-t(i+1) c c is used (repeatedly) to generate the (j+1)-vector b(left-j,j+1)(x), c ...,b(left,j+1)(x) from the j-vector b(left-j+1,j)(x),..., c b(left,j)(x), storing the new values in biatx over the old. the c facts that c b(i,1) = 1 if t(i) .le. x .lt. t(i+1) c and that c b(i,j)(x) = 0 unless t(i) .le. x .lt. t(i+j) c are used. the particular organization of the calculations follows al- c gorithm (8) in chapter x of the text. c C Arguments integer lent, jhigh, index, left double precision t(lent),x, biatx(*) c double precision t(lent),x, biatx(jhigh) c dimension t(left+jout), biatx(jout) c ----------------------------------- c current fortran standard makes it impossible to specify the length of c t and of biatx precisely without the introduction of otherwise c superfluous additional arguments. C Local Variables integer jmax parameter(jmax = 20) integer i,j,jp1 double precision deltal(jmax), deltar(jmax),saved,term data j/1/ save j,deltal,deltar !(valid in fortran 77) c go to (10,20), index 10 j = 1 biatx(1) = 1e0 if (j .ge. jhigh) go to 99 c 20 jp1 = j + 1 deltar(j) = t(left+j) - x deltal(j) = x - t(left+1-j) saved = 0e0 do 26 i=1,j term = biatx(i)/(deltar(i) + deltal(jp1-i)) biatx(i) = saved + deltar(i)*term saved = deltal(jp1-i)*term 26 continue biatx(jp1) = saved j = jp1 if (j .lt. jhigh) go to 20 c 99 return end mda/src/sortdi.f0000644000176200001440000000333313653663715013276 0ustar liggesusers subroutine sortdi (v,lenv,a,ii,jj) c c puts into a the permutation vector which sorts v into c increasing order. only elements from ii to jj are considered. c arrays iu(k) and il(k) permit sorting up to 2**(k+1)-1 elements c v is returned sorted c this is a modification of cacm algorithm #347 by r. c. singleton, c which is a modified hoare quicksort. c integer lenv integer t,tt,ii,jj,iu(20),il(20) integer a(jj) double precision v(lenv), vt, vtt m=1 i=ii j=jj 10 if (i.ge.j) go to 80 20 k=i ij=(j+i)/2 t=a(ij) vt=v(ij) if (v(i).le.vt) go to 30 a(ij)=a(i) a(i)=t t=a(ij) v(ij)=v(i) v(i)=vt vt=v(ij) 30 l=j if (v(j).ge.vt) go to 50 a(ij)=a(j) a(j)=t t=a(ij) v(ij)=v(j) v(j)=vt vt=v(ij) if (v(i).le.vt) go to 50 a(ij)=a(i) a(i)=t t=a(ij) v(ij)=v(i) v(i)=vt vt=v(ij) go to 50 40 a(l)=a(k) a(k)=tt v(l)=v(k) v(k)=vtt 50 l=l-1 if (v(l).gt.vt) go to 50 tt=a(l) vtt=v(l) 60 k=k+1 if (v(k).lt.vt) go to 60 if (k.le.l) go to 40 if (l-i.le.j-k) go to 70 il(m)=i iu(m)=l i=k m=m+1 go to 90 70 il(m)=k iu(m)=j j=l m=m+1 go to 90 80 m=m-1 if (m.eq.0) return i=il(m) j=iu(m) 90 if (j-i.gt.10) go to 20 if (i.eq.ii) go to 10 i=i-1 100 i=i+1 if (i.eq.j) go to 80 t=a(i+1) vt=v(i+1) if (v(i).le.vt) go to 100 k=i 110 a(k+1)=a(k) v(k+1)=v(k) k=k-1 if (vt.lt.v(k)) go to 110 a(k+1)=t v(k+1)=vt go to 100 end mda/src/tmatch.f0000644000176200001440000000205613653663715013253 0ustar liggesusers subroutine tpack(n,p,match,x,xbar) integer n,p,match(n) double precision x(n),xbar(n) do 23000 i=1,p xbar(i)=0e0 23000 continue do 23002 i=1,n xbar(match(i))=xbar(match(i))+x(i) 23002 continue return end subroutine suff(n,p,match,x,y,w,xbar,ybar,wbar,work) integer n,p,match(n) double precision x(n),xbar(n),y(n),ybar(n),w(n),wbar(n),work(n) call tpack(n,p,match,w,wbar) do 23004 i=1,n xbar(match(i))=x(i) 23004 continue do 23006 i=1,n work(i)=y(i)*w(i) 23006 continue call tpack(n,p,match,work,ybar) do 23008 i=1,p if(.not.(wbar(i).gt.0e0))goto 23010 ybar(i)=ybar(i)/wbar(i) goto 23011 23010 continue ybar(i)=0e0 23011 continue 23008 continue return end subroutine untpack(n,p,match,xbar,x) integer n,p, match(n) double precision x(n),xbar(p+1) if(.not.(p.lt.n))goto 23012 xbar(p+1)=0e0 23012 continue do 23014 i = 1,n x(i)=xbar(match(i)) 23014 continue return end mda/src/bvalue.f0000644000176200001440000001357013653663715013254 0ustar liggesusersc$$$ Naras fix c$$$ double precision function bvalue(t,lent,bcoef,n,k,x,jderiv) double precision function bvalue(t,bcoef,n,k,x,jderiv) c Calculates value at x of jderiv-th derivative of spline from B-repr. c The spline is taken to be continuous from the right. c C calls interv c c****** i n p u t ****** c t, bcoef, n, k......forms the b-representation of the spline f to c be evaluated. specifically, c t.....knot sequence, of length n+k, assumed nondecreasing. c bcoef.....b-coefficient sequence, of length n . c n.....length of bcoef and dimension of s(k,t), c a s s u m e d positive . c k.....order of the spline . c c w a r n i n g . . . the restriction k <= kmax (=20) is imposed c arbitrarily by the dimension statement for aj, dm, dm below, c but is n o w h e r e c h e c k e d for. c however in R, this is only called from bvalus() with k=4 anyway! c c x.....the point at which to evaluate . c jderiv.....integer giving the order of the derivative to be evaluated c a s s u m e d to be zero or positive. c c****** o u t p u t ****** c bvalue.....the value of the (jderiv)-th derivative of f at x . c c****** m e t h o d ****** c the nontrivial knot interval (t(i),t(i+1)) containing x is lo- c cated with the aid of interv(). the k b-coeffs of f relevant for c this interval are then obtained from bcoef (or taken to be zero if c not explicitly available) and are then differenced jderiv times to c obtain the b-coeffs of (d^jderiv)f relevant for that interval. c precisely, with j = jderiv, we have from x.(12) of the text that c c (d^j)f = sum ( bcoef(.,j)*b(.,k-j,t) ) c c where c / bcoef(.), , j .eq. 0 c / c bcoef(.,j) = / bcoef(.,j-1) - bcoef(.-1,j-1) c / ----------------------------- , j > 0 c / (t(.+k-j) - t(.))/(k-j) c c then, we use repeatedly the fact that c c sum ( a(.)*b(.,m,t)(x) ) = sum ( a(.,x)*b(.,m-1,t)(x) ) c with c (x - t(.))*a(.) + (t(.+m-1) - x)*a(.-1) c a(.,x) = --------------------------------------- c (x - t(.)) + (t(.+m-1) - x) c c to write (d^j)f(x) eventually as a linear combination of b-splines c of order 1 , and the coefficient for b(i,1,t)(x) must then c be the desired number (d^j)f(x). (see x.(17)-(19) of text). c C Arguments c$$$ Naras fix c$$$ integer lent, n,k, jderiv integer n,k, jderiv DOUBLE precision t(*),bcoef(n),x c dimension t(n+k) c current fortran standard makes it impossible to specify the length of c t precisely without the introduction of otherwise superfluous c additional arguments. C Local Variables integer kmax parameter(kmax = 20) DOUBLE precision aj(kmax),dm(kmax),dp(kmax),fkmj integer i,ilo,imk,j,jc,jcmin,jcmax,jj,km1,kmj,mflag,nmi, jdrvp1 c integer interv external interv c initialize data i/1/ bvalue = 0. if (jderiv .ge. k) go to 99 c c *** find i s.t. 1 <= i < n+k and t(i) < t(i+1) and c t(i) <= x < t(i+1) . if no such i can be found, x lies c outside the support of the spline f and bvalue = 0. c {this case is handled in the calling R code} c (the asymmetry in this choice of i makes f rightcontinuous) if( (x.ne.t(n+1)) .or. (t(n+1).ne.t(n+k)) ) then i = interv ( t, n+k, x, 0, 0, i, mflag) if (mflag .ne. 0) then call rwarn("bvalue() mflag != 0: should never happen!") go to 99 endif else i = n endif c *** if k = 1 (and jderiv = 0), bvalue = bcoef(i). km1 = k - 1 if (km1 .le. 0) then bvalue = bcoef(i) go to 99 endif c c *** store the k b-spline coefficients relevant for the knot interval c (t(i),t(i+1)) in aj(1),...,aj(k) and compute dm(j) = x - t(i+1-j), c dp(j) = t(i+j) - x, j=1,...,k-1 . set any of the aj not obtainable c from input to zero. set any t.s not obtainable equal to t(1) or c to t(n+k) appropriately. jcmin = 1 imk = i - k if (imk .ge. 0) then do 9 j=1,km1 dm(j) = x - t(i+1-j) 9 continue else jcmin = 1 - imk do 5 j=1,i dm(j) = x - t(i+1-j) 5 continue do 6 j=i,km1 aj(k-j) = 0. dm(j) = dm(i) 6 continue endif c jcmax = k nmi = n - i if (nmi .ge. 0) then do 19 j=1,km1 C the following if() happens; e.g. in pp <- predict(cars.spl, xx) c - if( (i+j) .gt. lent) write(6,9911) i+j,lent c - 9911 format(' i+j, lent ',2(i6,1x)) dp(j) = t(i+j) - x 19 continue else jcmax = k + nmi do 15 j=1,jcmax dp(j) = t(i+j) - x 15 continue do 16 j=jcmax,km1 aj(j+1) = 0. dp(j) = dp(jcmax) 16 continue endif c do 21 jc=jcmin,jcmax aj(jc) = bcoef(imk + jc) 21 continue c c *** difference the coefficients jderiv times. if (jderiv .ge. 1) then do 23 j=1,jderiv kmj = k-j fkmj = dble(kmj) ilo = kmj do 24 jj=1,kmj aj(jj) = ((aj(jj+1) - aj(jj))/(dm(ilo) + dp(jj)))*fkmj ilo = ilo - 1 24 continue 23 continue endif c c *** compute value at x in (t(i),t(i+1)) of jderiv-th derivative, c given its relevant b-spline coeffs in aj(1),...,aj(k-jderiv). if (jderiv .ne. km1) then jdrvp1 = jderiv + 1 do 33 j=jdrvp1,km1 kmj = k-j ilo = kmj do 34 jj=1,kmj aj(jj) = (aj(jj+1)*dm(ilo) + aj(jj)*dp(jj)) / * (dm(ilo)+dp(jj)) ilo = ilo - 1 34 continue 33 continue endif bvalue = aj(1) c 99 return end mda/src/dorthreg.f0000644000176200001440000000104313653663715013604 0ustar liggesusers subroutine orthreg(nx,n,p,x,in, y,res) implicit double precision (a-h,o-z) integer n,nx,p, in(p) double precision x(nx,p),y(n),res(n) do 23000 i=1,n res(i)=y(i) 23000 continue do 23002 j=1,p if(.not.(in(j).eq.1))goto 23004 temp1=0 temp2=0 do 23006 i=1,n temp1=temp1+res(i)*x(i,j) temp2=temp2+x(i,j)*x(i,j) 23006 continue beta=temp1/temp2 do 23008 i=1,n res(i)=res(i)-beta*x(i,j) 23008 continue 23004 continue 23002 continue return end mda/src/bruto.f0000644000176200001440000001301213675517170013115 0ustar liggesusers subroutine bruto(x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef,dfmax, * cost,lambda,df,coef,type,xrange,gcvsel,gcvbak,dfit,maxit,nit, * eta,resid,thresh,work,iwork,itrace) implicit double precision(a-h,o-z) integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit(2), * nit(2),iwork(n),itrace double precision x(n,q),y(n,p),w(n),knot(nkmax+4,q),wp(p), * dfmax(q),cost,lambda(q),df(q),coef(nkmax*p,q),xrange(2,q), * gcvsel(q,*),gcvbak(q,*),dfit(q,*),eta(n,p),resid(n,p), * thresh,work(*) logical trace, select if(itrace.eq.0)then trace=.false. else trace=.true. endif do 01 j=1,p do 02 i=1,n resid(i,j)=y(i,j)-eta(i,j) 02 continue 01 continue select=.true. c$$$ Naras fix c$$$ call bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef,dfmax, c$$$ *cost,lambda,df,coef,type,xrange,gcvsel,dfit,maxit(1),nit(1),eta, c$$$ *resid,thresh*10d0,work,iwork,trace) c$$$ select=.false. c$$$ call bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef,dfmax, c$$$ *cost,lambda,df,coef,type,xrange,gcvbak,dfit,maxit(2),nit(2),eta, c$$$ *resid,thresh,work,iwork,trace) call bakssp(select,x,n,q,p,w,knot,nkmax,nk,wp,match,nef,dfmax, *cost,lambda,df,coef,type,xrange,gcvsel,dfit,maxit(1),nit(1),eta, *resid,thresh*10d0,work,iwork,trace) select=.false. call bakssp(select,x,n,q,p,w,knot,nkmax,nk,wp,match,nef,dfmax, *cost,lambda,df,coef,type,xrange,gcvbak,dfit,maxit(2),nit(2),eta, *resid,thresh,work,iwork,trace) do 04 j=1,p do 06 i=1,n eta(i,j)=y(i,j)-resid(i,j) 06 continue 04 continue return end c$$$ Naras fix c$$$ subroutine bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, c$$$ * dfmax,cost,lambda,df,coef,type,xrange,gcv,dfit,maxit,nit,s, c$$$ * resid,thresh,work,iwork,trace) c$$$ implicit double precision(a-h,o-z) c$$$ integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit,nit,ier, c$$$ * ntype,iwork(n) c$$$ double precision x(n,q),y(n,p),w(n),knot(nkmax+4,q),wp(p),dfmax(q) c$$$ * ,cost,lambda(q),df(q),coef(nkmax*p,q),xrange(2,q), c$$$ * gcv(q,maxit),dfit(q,maxit),s(n,p),resid(n,p),thresh,work(*) c$$$ subroutine bakssp(select,x,n,q,p,w,knot,nkmax,nk,wp,match,nef, * dfmax,cost,lambda,df,coef,type,xrange,gcv,dfit,maxit,nit,s, * resid,thresh,work,iwork,trace) implicit double precision(a-h,o-z) integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit,nit,ier, * ntype,iwork(n) double precision x(n,q),w(n),knot(nkmax+4,q),wp(p),dfmax(q) * ,cost,lambda(q),df(q),coef(nkmax*p,q),xrange(2,q), * gcv(q,maxit),dfit(q,maxit),s(n,p),resid(n,p),thresh,work(*) double precision dfoff, gcv0, ndf,gcv1,gcvrat,ndfoff,wmean,sbar, * rss,tol logical center, select, trace center=.true. tol=1d-3 rss=0d0 do 08 j=1,p sbar=wmean(n,resid(1,j),w) do 10 i=1,n resid(i,j)=resid(i,j) - sbar work(i)=resid(i,j)**2 10 continue rss=rss+wp(j)*wmean(n,work,w) 08 continue dfoff=0 do 12 k=1,q dfoff=dfoff+df(k) 12 continue gcv1=rss/((1-(1+dfoff*cost)/n)**2) gcvrat=1d0 nit=0 14 if(.not.(nit.lt.maxit.and.gcvrat .gt.thresh ))goto 15 gcv0=gcv1 nit=nit+1 do 16 k=1,q gcv(k,nit)=gcv1 if(.not.select.and.type(k).eq.1)goto 16 if(type(k) .gt. 1) then call psspl2(x(1,k),n,p,knot(1,k),nk(k),xrange(1,k), * coef(1,k),coef(1,k),s,0,type(k)) do 22 j=1,p sbar=wmean(n,s(1,j),w) do 24 i=1,n resid(i,j)=resid(i,j) + s(i,j)-sbar 24 continue 22 continue endif ndfoff=dfoff-df(k) if(select) then ntype=0 else ntype=type(k) endif call sspl2(x(1,k),resid,w,n,p,knot(1,k),nk(k),wp,match(1,k), * nef(k),ndfoff,dfmax(k),cost,lambda(k),ndf,gcv1,coef(1,k), * s,ntype,center,xrange(1,k),work,iwork,tol,ier) gcv(k,nit)=gcv1 if(select) then dfit(k,nit)=ndf df(k)=ndf dfoff=ndfoff+ndf type(k)=ntype endif if(type(k) .gt. 1) then do 32 j=1,p do 34 i=1,n resid(i,j)=resid(i,j) - s(i,j) 34 continue 32 continue endif 16 continue gcvrat=dabs(gcv1-gcv0)/gcv0 if(trace) then call intpr("outer iteration",15,nit,1) call dblepr("gcv ",5,gcv1,1) call dblepr("ratio",5,gcvrat,1) endif continue goto 14 15 continue return end subroutine pbruto(x,n,q,ybar,p,knot,nkmax,nk,coef,type,xrange,eta, * work) implicit double precision(a-h,o-z) integer n,q,p,nkmax,nk(q),type(q) double precision x(n,q),ybar(p),knot(nkmax+4,q),coef(nkmax*p,q), * xrange(2,q),eta(n,p),work(n,p) do 38 j=1,p do 40 i =1,n eta(i,j)=ybar(j) 40 continue 38 continue do 42 k=1,q if(type(k) .eq .1) goto 42 call psspl2(x(1,k),n,p,knot(1,k),nk(k),xrange(1,k),coef(1,k), * coef(1,k),work,0,type(k)) do 46 j=1,p do 48 i=1,n eta(i,j)=eta(i,j) + work(i,j) 48 continue 46 continue 42 continue return end mda/src/wmean.f0000644000176200001440000000055613654116411013070 0ustar liggesusers double precision function wmean(n,y,w) integer n double precision y(n),w(n),wtot,wsum wtot=0e0 wsum=0e0 do 23028 i=1,n wsum=wsum+y(i)*w(i) wtot=wtot+w(i) 23028 continue if(.not.(wtot .gt. 0e0))goto 23030 wmean=wsum/wtot goto 23031 23030 continue wmean=0e0 23031 continue return end mda/src/sgram.f0000644000176200001440000001156513653663715013111 0ustar liggesusersC Output from Public domain Ratfor, version 1.0 C PURPOSE C Calculation of the cubic B-spline smoothness prior C for "usual" interior knot setup. C Uses BSPVD and INTRV in the CMLIB C sgm[0-3](nb) Symmetric matrix C whose (i,j)'th element contains the integral of C B''(i,.) B''(j,.) , i=1,2 ... nb and j=i,...nb. C Only the upper four diagonals are computed. subroutine sgram(sg0,sg1,sg2,sg3,tb,nb) c implicit none C indices integer nb DOUBLE precision sg0(nb),sg1(nb),sg2(nb),sg3(nb), tb(nb+4) c ------------- integer ileft,mflag, i,ii,jj, lentb DOUBLE precision vnikx(4,3),work(16),yw1(4),yw2(4), wpt c integer interv external interv lentb=nb+4 C Initialise the sigma vectors do 1 i=1,nb sg0(i)=0. sg1(i)=0. sg2(i)=0. sg3(i)=0. 1 continue ileft = 1 do 2 i=1,nb C Calculate a linear approximation to the C second derivative of the non-zero B-splines C over the interval [tb(i),tb(i+1)]. C call intrv(tb(1),(nb+1),tb(i),ilo,ileft,mflag) ileft = interv(tb(1), nb+1,tb(i), 0,0, ileft, mflag) C Left end second derivatives C call bspvd (tb,4,3,tb(i),ileft,4,vnikx,work) call bsplvd (tb,lentb,4,tb(i),ileft,work,vnikx,3) C Put values into yw1 do 4 ii=1,4 yw1(ii) = vnikx(ii,3) 4 continue C Right end second derivatives C call bspvd (tb,4,3,tb(i+1),ileft,4,vnikx,work) call bsplvd (tb,lentb,4,tb(i+1),ileft,work,vnikx,3) C Slope*(length of interval) in Linear Approximation to B'' do 6 ii=1,4 yw2(ii) = vnikx(ii,3) - yw1(ii) 6 continue wpt = tb(i+1) - tb(i) C Calculate Contributions to the sigma vectors if(ileft.ge.4) then do 10 ii=1,4 jj=ii sg0(ileft-4+ii) = sg0(ileft-4+ii) + & wpt*(yw1(ii)*yw1(jj)+ & (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & + yw2(ii)*yw2(jj)*.3330) jj=ii+1 if(jj.le.4)then sg1(ileft+ii-4) = sg1(ileft+ii-4) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif jj=ii+2 if(jj.le.4)then sg2(ileft+ii-4) = sg2(ileft+ii-4) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif jj=ii+3 if(jj.le.4)then sg3(ileft+ii-4) = sg3(ileft+ii-4) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif 10 continue else if(ileft.eq.3)then do 20 ii=1,3 jj=ii sg0(ileft-3+ii) = sg0(ileft-3+ii) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) jj=ii+1 if(jj.le.3)then sg1(ileft+ii-3) = sg1(ileft+ii-3) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif jj=ii+2 if(jj.le.3)then sg2(ileft+ii-3) = sg2(ileft+ii-3) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif 20 continue else if(ileft.eq.2)then do 28 ii=1,2 jj=ii sg0(ileft-2+ii) = sg0(ileft-2+ii) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) jj=ii+1 if(jj.le.2)then sg1(ileft+ii-2) = sg1(ileft+ii-2) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) endif 28 continue else if(ileft.eq.1)then do 34 ii=1,1 jj=ii sg0(ileft-1+ii) = sg0(ileft-1+ii) + & wpt* (yw1(ii)*yw1(jj) + * (yw2(ii)*yw1(jj) + yw2(jj)*yw1(ii))*.50 & +yw2(ii)*yw2(jj)*.3330 ) 34 continue endif 2 continue return end mda/R/0000755000176200001440000000000014234332603011214 5ustar liggesusersmda/R/transformPenalty.R0000644000176200001440000000312213653663715014724 0ustar liggesuserstransformPenalty <- function (Q, prior, cl, df = NULL, tot.df = NULL) { if (missing(Q)) Q <- meanPenalty(prior, cl) if (missing(prior)) prior <- attr(Q, "prior") if (missing(cl)) cl <- attr(Q, "cl") transform.pen <- function(Q, prior, df) { df.inv <- function(d, df, lambda = NULL, iterations = 10) { if (is.null(lambda)) { lambda <- 0.1 while (sum(1/(1 + d * lambda)) >= df) lambda <- lambda * 2 } df.diriv <- function(d, lambda) -sum((d * lambda)/(1 + d * lambda)^2) current.df <- sum(1/(1 + d * lambda)) if (abs((df - current.df)/df) < 1e-04 | iterations == 1) return(list(lambda = lambda, df = current.df)) else { lambda <- exp(log(lambda) - (current.df - df)/df.diriv(d, lambda)) Recall(d, df, lambda, iterations - 1) } } pQp <- Q/outer(sqrt(prior), sqrt(prior)) d <- svd(pQp)$d lambda <- df.inv(d, df)$lambda lambda * Q } if (!is.null(tot.df)) { if (tot.df >= length(prior)) return(Q * 0) else return(transform.pen(Q, prior, tot.df)) } else { ncl <- unique(cl) df <- rep(df, length = length(ncl)) for (i in seq(along = ncl)) { which <- cl == ncl[i] Q[which, which] <- Recall(Q[which, which, drop = FALSE], prior[which], tot.df = df[i]) } return(Q) } } mda/R/softmax.R0000644000176200001440000000113713653663715013041 0ustar liggesuserssoftmax <- function (x, gap = FALSE) { d <- dim(x) maxdist <- x[, 1] pclass <- rep(1, d[1]) for (i in seq(2, d[2])) { l <- x[, i] > maxdist pclass[l] <- i maxdist[l] <- x[l, i] } dd <- dimnames(x)[[2]] if (gap) { x <- abs(maxdist - x) x[cbind(seq(d[1]), pclass)] <- drop(x %*% rep(1, d[2])) gaps <- do.call("pmin", data.frame(x)) } pclass <- if (is.null(dd) || !length(dd)) pclass else factor(pclass, levels = seq(d[2]), labels = dd) if (gap) list(class = pclass, gaps = gaps) else pclass } mda/R/plot.fda.R0000644000176200001440000000510113653667342013062 0ustar liggesusersplot.fda <- function (x, data, coords = c(1, 2), group = c("true", "predicted"), colors, pch, mcolors = colors, mpch, pcex = 0.5, mcex = 2.5, ...) { object <- x # generic/method group <- match.arg(group) if (missing(data)) { vars <- predict(object, type = "var") g <- predict(object) group <- "predict" } else { if(group=="predicted"){ vars <- predict(object, data, type = "var") g <- predict(object, data) } else{ ff <- terms(object) attr(ff, "intercept") <- 0 m <- model.frame(ff, data) x <- model.matrix(ff, m) vars <- predict(object, x, type = "var") g <- model.extract(m, "response") } } means <- object$means if(ncol(means)==1)stop("Only one canonical variate; plot requires at least two") g <- as.factor(g) cc <- as.numeric(g) np <- seq(levels(g)) mit.colors=c(Orange = "#FF9233", Cyan = "#29D0D0", Lt.Green = "#81C57A", Dk.Gray = "#575757", Red = "#AD2323", Blue = "#2A4BD7", Green = "#1D6914", Brown = "#814A19", Purple = "#8126C0", Lt.Gray = "#A0A0A0", Yellow = "#FFEE33", Pink = "#FFCDF3") if (missing(colors)) colors <- mit.colors colors <- rep(colors, length = length(np)) if (missing(pch)) pch <- paste(np) else pch <- rep(paste(pch), length = length(np)) mcolors <- rep(mcolors, length = length(np)) if (missing(mpch)) mpch <- pch else mpch <- rep(paste(mpch), length = length(np)) assign <- object$assign if (is.null(assign)) assign <- split(seq(np), seq(np)) if (!is.matrix(coords)) { coords <- matrix(coords, length(coords), length(coords)) tt <- lower.tri(coords) coords <- cbind(t(coords)[tt], coords[tt]) } for (ii in seq(nrow(coords))) { coord.pair <- coords[ii, ] plot(rbind(vars[, coord.pair], means[, coord.pair]), ..., type = "n", xlab = paste("Canonical Var", coord.pair[1]), ylab = paste("Canonical Var", coord.pair[2]), main = paste("Discriminant Plot for", group, "classes")) for (i in np) { which <- cc == i if (any(which)) points(vars[which, coord.pair, drop = FALSE], col = colors[i], pch = pch[i], cex = pcex) points(means[assign[[i]], coord.pair, drop = FALSE], col = mcolors[i], pch = 1, cex = mcex) points(means[assign[[i]], coord.pair, drop = FALSE], col = mcolors[i], pch = mpch[i], cex = mcex/2) } } invisible() } mda/R/confusion.fda.R0000644000176200001440000000050413653663715014111 0ustar liggesusersconfusion.fda <- function (object, data, ...) { if (missing(data)) return(object$confusion) Terms <- terms(object) attr(Terms, "intercept") <- 0 m <- model.frame(Terms, data) x <- model.matrix(Terms, m) g <- model.extract(m, "response") confusion.default(predict(object, x, ...), g) } mda/R/confusion.default.R0000644000176200001440000000121713653663715015005 0ustar liggesusersconfusion.default <- function (object, true, ...) { if (inherits(object, "data.frame")) confusion.list(object, true) else { jt <- table(predicted=object, true) jd <- dimnames(jt) jn <- unlist(jd) ju <- jn[duplicated(jn)] j1 <- jd[[1]][!match(jd[[1]], ju, 0)] j2 <- jd[[2]][!match(jd[[2]], ju, 0)] jt <- jt[c(ju, j1), c(ju, j2), drop = FALSE] realjt <- unclass(jt[ju, ju, drop = FALSE]) ntot <- sum(jt) mismatch <- (ntot - sum(realjt))/ntot structure(jt, error = (1 - sum(diag(realjt))/sum(realjt)), mismatch = if (mismatch > 0) mismatch else NULL) } } mda/R/mspline.R0000644000176200001440000000466613653663715013041 0ustar liggesusersmspline <- function(x, y, w = rep(1, n), df=5, lambda, thresh = 1e-04, ...) { this.call <- match.call() y <- as.matrix(y) np <- ncol(y) n <- length(x) wp=rep(1/np,np) storage.mode(x) <- "double" storage.mode(y) <- "double" storage.mode(w) <- "double" storage.mode(wp) <- "double" nknotl <- function(n) { a1 <- log(50)/log(2) a2 <- log(100)/log(2) a3 <- log(140)/log(2) a4 <- log(200)/log(2) cx <- as.numeric(cut(n, c(0, 50, 200, 800, 3200))) if (is.na(cx)) cx <- 5 floor(switch(cx, n, 2^(a1 + ((a2 - a1) * (n - 50))/150), 2^(a2 + ((a3 - a2) * (n - 200))/600), 2^(a3 + ((a4 - a3) * (n - 800))/2400), 200 + (n - 3200)^0.2) + 6) } nkmax <- nknotl(n) - 4 coef <- double(nkmax * np) smat <- matrix(0,n,np) storage.mode(smat) <- "double" nk <- as.integer(0) knot <- double(nkmax + 4) Match <- integer(n) nef <- as.integer(0) if(df==0){ method=1 if(missing(lambda))stop("need a lambda") } else { method =2 lambda=0 } storage.mode(method) <- "integer" storage.mode(df) <- "double" storage.mode(lambda) <- "double" xrange <- double(2) fit <- .Fortran("sspl0", x, y, w, as.integer(n), as.integer(np), knot = knot, nk=nk, method, tol=as.double(thresh), wp, Match = Match, nef = nef, center=as.integer(0), dfoff=as.double(0), dfmax = as.double(df+2), cost = as.double(0), lambda = lambda, df = df, cv=double(1), gcv=double(1), coef = coef, s=smat, lev=double(n), xrange = xrange, work=double((2 * np + 2) * ((n + 1) + 1) + (2 * np + 16) *(n + 1) + 2 * (n + 1) + np), iwork=integer(n), integer(1), PACKAGE = "mda")[c("knot", "nk", "Match", "nef", "lambda", "df", "coef","s", "xrange","lev")] fit$call <- this.call structure(fit, class = "mspline") } mda/R/fda.R0000644000176200001440000000530313653663715012111 0ustar liggesusersfda <- function (formula = formula(data), data = sys.frame(sys.parent()), weights, theta, dimension = J - 1, eps = .Machine$double.eps, method = polyreg, keep.fitted = (n * dimension < 5000), ...) { this.call <- match.call() m <- match.call(expand.dots = FALSE) m[[1]] <- as.name("model.frame") m <- m[match(names(m), c("", "formula", "data", "weights"), 0)] m <- eval(m, parent.frame()) Terms <- attr(m, "terms") g <- model.extract(m, "response") # attr(Terms, "intercept") <- 0 This fails if a factor is in the model formula x <- model.matrix(Terms, m) if(attr(Terms, "intercept"))x=x[,-1,drop=FALSE] dd <- dim(x) n <- dd[1] weights <- model.extract(m, weights) if (!length(weights)) weights <- rep(1, n) else if (any(weights < 0)) stop("negative weights not allowed") if (length(g) != n) stop("g should have length nrow(x)") fg <- factor(g) prior <- table(fg) prior <- prior/sum(prior) cnames <- levels(fg) g <- as.numeric(fg) J <- length(cnames) iswt <- FALSE if (missing(weights)) dp <- table(g)/n else { weights <- (n * weights)/sum(weights) dp <- tapply(weights, g, sum)/n iswt <- TRUE } if (missing(theta)) theta <- contr.helmert(J) theta <- contr.fda(dp, theta) Theta <- theta[g, , drop = FALSE] fit <- method(x, Theta, weights, ...) if (iswt) Theta <- Theta * weights ssm <- t(Theta) %*% fitted(fit)/n ed <- svd(ssm, nu = 0) thetan <- ed$v lambda <- ed$d lambda[lambda > 1 - eps] <- 1 - eps discr.eigen <- lambda/(1 - lambda) pe <- (100 * cumsum(discr.eigen))/sum(discr.eigen) dimension <- min(dimension, sum(lambda > eps)) if (dimension == 0) { warning("degenerate problem; no discrimination") return(structure(list(dimension = 0, fit = fit, call = this.call), class = "fda")) } thetan <- thetan[, seq(dimension), drop = FALSE] pe <- pe[seq(dimension)] alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) vnames <- paste("v", seq(dimension), sep = "") means <- scale(theta %*% thetan, FALSE, sqima/alpha) dimnames(means) <- list(cnames, vnames) names(lambda) <- c(vnames, rep("", length(lambda) - dimension)) names(pe) <- vnames obj <- structure(list(percent.explained = pe, values = lambda, means = means, theta.mod = thetan, dimension = dimension, prior = prior, fit = fit, call = this.call, terms = Terms), class = "fda") obj$confusion <- confusion(predict(obj), fg) if (!keep.fitted) obj$fit$fitted.values <- NULL obj } mda/R/pplot.R0000644000176200001440000000077013653663715012520 0ustar liggesuserspplot <- function (x, g, colors, pch, add = FALSE, type = "p", ...) { g <- as.factor(g) cc <- as.numeric(g) np <- seq(levels(g)) if (missing(colors)) colors <- np + 1 else colors <- rep(colors, length = length(np)) if (missing(pch)) pch <- paste(np) else pch <- rep(pch, length = length(np)) if (!add) plot(x, type = "n", ...) for (i in unique(cc)) points(x[cc == i, , drop = FALSE], col = colors[i], pch = pch[i], type = type) } mda/R/kmeans.start.R0000644000176200001440000000177513653663715014002 0ustar liggesuserskmeans.start <- function (x, g, subclasses) { cnames <- levels(g <- factor(g)) J <- length(cnames) g <- as.numeric(g) weights <- as.list(cnames) names(weights) <- cnames subclasses <- rep(subclasses, length = length(cnames)) R <- sum(subclasses) cl <- rep(seq(J), subclasses) cx <- x[seq(R), , drop = FALSE] for (j in seq(J)) { nc <- subclasses[j] which <- cl == j xx <- x[g == j, , drop = FALSE] if ((nc <= 1) || (nrow(xx) <= nc)) { cx[which, ] <- apply(xx, 2, mean) wmj <- matrix(1, sum(g == j), 1) } else { ### start <- xx[sample(1:nrow(xx), size = nc), ] start=nc TT <- kmeans(xx, start) cx[which, ] <- TT$centers wmj <- diag(nc)[TT$cluster, ] } dimnames(wmj) <- list(NULL, paste("s", seq(dim(wmj)[2]), sep = "")) weights[[j]] <- wmj } list(x = cx, cl = factor(cl, labels = cnames), weights = weights) } mda/R/pplot4.R0000644000176200001440000000031113653663715012573 0ustar liggesuserspplot4 <- function (x, ...) { par(mfrow = c(3, 2)) for (i in 1:3) { for (j in (i + 1):4) pplot(x[, c(i, j)], xlab = paste("var", i), ylab = paste("var", j), ...) } } mda/R/predict.gen.ridge.R0000644000176200001440000000025313653663715014651 0ustar liggesuserspredict.gen.ridge <- function (object, newdata, ...) { if (missing(newdata)) fitted(object) else scale(newdata, object$xmeans, FALSE) %*% object$coef } mda/R/predict.mda.R0000644000176200001440000000575413653663715013563 0ustar liggesuserspredict.mda <- function (object, newdata, type = c("class", "variates", "posterior", "hierarchical", "weights"), prior = NULL, dimension = R - 1, g, ...) { type <- match.arg(type) Rk <- dim(object$means) R <- Rk[1] k <- Rk[2] if (type == "hierarchical") { if (missing(dimension)) dimension.set <- seq(k) else { dimension.set <- dimension[dimension <= k] if (!length(dimension.set)) dimension.set <- k dimension <- max(dimension.set) } Pclass <- vector("list", length(dimension.set)) names(Pclass) <- paste("D", dimension.set, sep = "") for (ad in seq(along = dimension.set)) { d <- dimension.set[ad] Pclass[[ad]] <- if (missing(newdata)) Recall(object, prior = prior, dimension = d, ...) else Recall(object, newdata, prior = prior, dimension = d, ...) } rownames <- names(Pclass[[1]]) if (is.null(rownames)) rownames <- paste(seq(along = Pclass[[1]])) return(structure(Pclass, class = "data.frame", row.names = rownames, dimensions = dimension.set)) } else dimension <- min(max(dimension), k) if (is.null(prior)) prior <- object$prior else { if (any(prior < 0) | round(sum(prior), 5) != 1) stop("innappropriate prior") } if (type == "variates") return(NextMethod("predict")) rowmin <- function(mat) { ncc <- ncol(mat) if (ncc == 1) return(drop(mat)) rowm <- pmin(mat[, 1], mat[, 2]) if (ncc == 2) return(rowm) else { for (j in seq(from = 3, to = ncc)) rowm <- pmin(rowm, mat[, j]) } rowm } dmat <- if (missing(newdata)) predict.fda(object, type = "distances", dimension = dimension, ...) else predict.fda(object, newdata, type = "distances", dimension = dimension, ...) Assign <- object$assign sub.prior <- object$sub.prior J <- length(Assign) if (type == "weights") { if (missing(newdata)) return(object$weights) g <- as.numeric(g) weights <- Assign for (j in seq(J)) { TT <- dmat[g == j, Assign[[j]], drop = FALSE] TT <- exp(-0.5 * (TT - rowmin(TT))) TT <- TT * outer(rep(1, nrow(TT)), sub.prior[[j]]) weights[[j]] <- TT/drop(TT %*% rep(1, ncol(TT))) } return(weights) } pclass <- matrix(1, nrow(dmat), J) dmat <- exp(-0.5 * (dmat - rowmin(dmat))) for (j in seq(J)) { TT <- dmat[, Assign[[j]], drop = FALSE] TT <- TT * outer(rep(1, nrow(TT)), sub.prior[[j]]) pclass[, j] <- prior[j] * drop(TT %*% rep(1, ncol(TT))) } dimnames(pclass) <- list(NULL, names(Assign)) switch(type, class = softmax(pclass), posterior = pclass/drop(pclass %*% rep(1, J))) } mda/R/predict.bruto.R0000644000176200001440000000311013653663715014135 0ustar liggesuserspredict.bruto <- function (object, newdata, type = c("fitted", "terms"), ...) { if (missing(newdata)) { z <- fitted(object) if (is.null(z)) stop("need to supply newdata") else return(z) } d <- as.integer(dim(newdata)) type <- match.arg(type) nq <- d[2] n <- d[1] if (nq != length(object$df)) stop(paste("newdata should have the same number of columns", "as the df component of object")) ybar <- object$ybar np <- as.integer(length(ybar)) eta <- matrix(double(n * np), n, np) Type <- as.numeric(object$type) storage.mode(Type) <- "integer" storage.mode(newdata) <- "double" if (type == "fitted") { .Fortran("pbruto", newdata, n, nq, ybar, np, object$knot, object$nkmax, object$nk, object$coef, Type, object$xrange, eta = eta, eta, PACKAGE = "mda")$eta } else { ob <- as.list(seq(nq)) names(ob) <- dimnames(newdata)[[2]] knot <- object$knot nk <- object$nk xrange <- object$xrange coef <- object$coef fitm <- matrix(double(n * np), n, np) dimnames(fitm) <- list(dimnames(newdata)[[1]], names(ybar)) for (i in seq(nq)) { if (Type[i] > 1) fit <- .Fortran("psspl2", newdata[, i], n, np, knot[, i], nk[i], xrange[, i], coef[, i], coef[, i], fit = fitm, as.integer(0), Type[i], PACKAGE = "mda")$fit else fit <- fitm ob[[i]] <- list(x = newdata[, i], y = fit) } ob } } mda/R/meanPenalty.R0000644000176200001440000000057013653663715013635 0ustar liggesusersmeanPenalty <- function (prior, cl) { n <- length(prior) Q <- matrix(0, n, n) ll <- unique(cl) for (lll in ll) { which <- cl == lll pp <- prior[which] npp <- length(pp) pp <- diag(npp) - outer(rep(1, npp), pp/sum(pp)) Q[which, which] <- t(pp) %*% pp } attr(Q, "cl") <- cl attr(Q, "prior") <- prior Q } mda/R/gen.ridge.R0000644000176200001440000000171213653663715013221 0ustar liggesusersgen.ridge <- function (x, y, weights, lambda = 1, omega, df, ...) { if (missing(df) && lambda <= .Machine$double.eps) return(polyreg(x, y)) d <- dim(x) mm <- apply(x, 2, mean) x <- scale(x, mm, FALSE) simple <- if (missing(omega)) TRUE else FALSE if (!simple) { if (!all(match(c("values", "vectors"), names(omega), FALSE))) stop("You must supply an eigen-decomposed version of omega") vals <- pmax(sqrt(.Machine$double.eps), sqrt(omega$values)) basis <- scale(omega$vectors, FALSE, vals) x <- x %*% basis } svd.x <- svd(x) dd <- svd.x$d if (!missing(df))lambda=df.gold(dd,df) df=sum(dd^2/(dd^2 + lambda)) y <- ( t(t(y) %*% svd.x$u) * dd)/(dd^2 + lambda) coef <- svd.x$v %*% y fitted <- x %*% coef if (!simple) coef <- basis %*% coef structure(list(fitted.values = fitted, coefficients = coef, df = df, lambda = lambda, xmeans = mm), class = "gen.ridge") } mda/R/predict.polyreg.R0000644000176200001440000000050713653663715014472 0ustar liggesuserspredict.polyreg <- function (object, newdata, ...) { if (missing(newdata)) { z <- fitted(object) if (is.null(z)) stop("need to supply newdata") else return(z) } degree <- object$degree monomial <- object$monomial polybasis(newdata, degree, monomial) %*% object$coef } mda/R/mda.means.R0000644000176200001440000000066113653663715013224 0ustar liggesusersmda.means <- function (object, x, y) { weights <- means <- object$weights nn <- names(object$weights) for (i in nn) { xx <- x[y == i, ] ww <- weights[[i]] nc <- ncol(ww) xm <- matrix(0, ncol(x), nc) for (j in seq(nc)) { www <- ww[, j] www <- www/sum(www) xm[, j] <- apply(xx * www, 2, sum) } means[[i]] <- xm } means } mda/R/print.fda.R0000644000176200001440000000126313653663715013245 0ustar liggesusersprint.fda <- function (x, ...) { if (!is.null(cl <- x$call)) { cat("Call:\n") dput(cl) } cat("\nDimension:", format(x$dimension), "\n") cat("\nPercent Between-Group Variance Explained:\n") print(round(x$percent, 2)) error <- x$confusion df <- x$fit if (!is.null(df)) df <- df$df if (!is.null(df)) { cat("\nDegrees of Freedom (per dimension):", format(sum(df)), "\n") } if (!is.null(error)) { n <- as.integer(sum(error)) error <- format(round(attr(error, "error"), 5)) cat("\nTraining Misclassification Error:", error, "( N =", n, ")\n") } invisible(x) } mda/R/laplacian.R0000644000176200001440000000075313653663715013307 0ustar liggesuserslaplacian <- function (size = 16, compose = FALSE) { gmat <- matrix(0, size, size) xx <- seq(size) for (v in xx) gmat[, v] <- sqrt(2/size) * cos(((xx - 0.5) * pi * (v - 1))/size) gmat[, 1] <- gmat[, 1]/sqrt(2) lvec <- -(2 * size^2) * (1 - cos(((xx - 1) * pi)/size)) gmat <- kronecker(gmat, gmat) lvec <- rep(lvec, rep(size, size)) + rep(lvec, size) if (compose) gmat %*% (lvec^2 * t(gmat)) else list(vectors = gmat, values = lvec^2) } mda/R/coef.fda.R0000644000176200001440000000074313653663715013027 0ustar liggesuserscoef.fda <- function (object, ...) { fit <- object$fit Coefs <- fit$coef if (is.null(Coefs)) stop("No explicit coefficients in this formulation") dimension <- object$dimension Coefs <- Coefs %*% object$theta[, seq(dimension), drop = FALSE] lambda <- object$values alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) Coefs <- scale(Coefs, FALSE, sqima * alpha) attr(Coefs,"scaled:scale")=NULL Coefs } mda/R/confusion.R0000644000176200001440000000007513653663715013363 0ustar liggesusersconfusion <- function (object, ...) UseMethod("confusion") mda/R/mars.R0000644000176200001440000001033713653663715012324 0ustar liggesusersmars <- function (x, y, w = rep(1, nrow(x)), wp, degree = 1, nk = max(21, 2 * ncol(x) + 1), penalty = 2, thresh = 0.001, prune = TRUE, trace.mars = FALSE, forward.step = TRUE, prevfit = NULL, ...) { this.call <- match.call() if ((nk%%2) != 1) nk <- nk - 1 x <- as.matrix(x) np <- dim(x) n <- np[1] p <- np[2] y <- as.matrix(y) nclass <- ncol(y) if (is.null(np)) { np <- c(length(x), 1) x <- as.matrix(x) } if (forward.step) { interms <- 1 lenb <- nk bx <- matrix(rep(0, nrow(x) * nk), nrow = n) res <- matrix(rep(0, nrow(x) * ncol(y)), nrow = n) fullin <- rep(0, nk) cuts <- NULL factor <- NULL } else { bx <- model.matrix.mars(prevfit, x, full = TRUE) interms <- ncol(bx) lenb <- prevfit$lenb o <- prevfit$all.terms fullin <- rep(0, ncol(bx)) fullin[o] <- 1 res <- prevfit$res factor <- prevfit$factor cuts <- prevfit$cuts if (missing(penalty)) penalty <- prevfit$penalty degree <- prevfit$degree nk <- lenb thresh <- prevfit$thresh } if (missing(penalty) & (degree > 1)) penalty <- 3 if (!missing(wp)) { if (any(wp <= 0)) stop("wp should all be positive") wp <- sqrt(wp/sum(wp)) y <- y * outer(rep(1, n), wp) } else wp <- NULL tagx <- x storage.mode(tagx) <- "integer" for (j in 1:p) { tagx[, j] <- order(x[, j]) } bestin <- rep(0, nk) flag <- matrix(rep(0, nk * p), nrow = nk, ncol = p) if (is.null(cuts)) cuts <- matrix(rep(0, nk * p), nrow = nk, ncol = p) if (is.null(factor)) { dir <- matrix(rep(0, nk * p), nrow = nk, ncol = p) } else { dir <- factor } alpha <- rep(0, nclass) beta <- matrix(rep(0, nk * nclass), nrow = nk) bestgcv <- 0 storage.mode(y) <- "double" storage.mode(x) <- "double" storage.mode(bx) <- "double" storage.mode(flag) <- "integer" storage.mode(cuts) <- "double" storage.mode(dir) <- "double" storage.mode(res) <- "double" storage.mode(beta) <- "double" lenscrat <- 1 + n + 2 * n * nk + 4 * nk * nk + 3 * nk + 3 * nk * nclass + 3 * nclass + 28 * n + 51 junk <- .Fortran("marss", as.integer(n), as.integer(n), as.integer(p), as.integer(nclass), as.matrix(y), as.matrix(x), as.double(w), as.matrix(tagx), as.integer(degree), as.integer(nk), # as.double(penalty), as.double(thresh), as.logical(forward.step), as.double(penalty), as.double(thresh), as.integer(forward.step), # as.integer(interms), as.logical(prune), bx = as.matrix(bx), as.integer(interms), as.integer(prune), bx = as.matrix(bx), fullin = as.integer(fullin), lenb = as.integer(lenb), bestgcv = as.double(bestgcv), bestin = as.integer(bestin), flag = as.matrix(flag), cuts = as.matrix(cuts), dir = as.matrix(dir), ## Naras fixes ## res = as.matrix(res), alpha = as.double(alpha), beta = as.matrix(beta), res = as.matrix(res), beta = as.matrix(beta), double(lenscrat), integer(4 * nk), as.integer(trace.mars), PACKAGE = "mda") lenb <- junk$lenb all.terms <- seq(lenb)[junk$fullin[1:lenb] == 1] selected.terms <- seq(lenb)[junk$bestin[1:lenb] == 1] coefficients <- junk$beta[seq(selected.terms), , drop = FALSE] residuals <- junk$res fitted.values <- y - residuals if (!is.null(wp)) { TT <- outer(rep(1, n), wp) residuals <- residuals/TT fitted.values <- fitted.values/TT coefficients <- coefficients/outer(rep(1, length(selected.terms)), wp) } dir <- junk$dir[seq(lenb), , drop = FALSE] dimnames(dir) <- list(NULL, dimnames(x)[[2]]) cutss <- junk$cuts[seq(lenb), , drop = FALSE] x <- junk$bx[, selected.terms, drop = FALSE] structure(list(call = this.call, all.terms = all.terms, selected.terms = selected.terms, penalty = penalty, degree = degree, nk = nk, thresh = thresh, gcv = junk$bestgcv, factor = dir, cuts = cutss, residuals = residuals, fitted.values = fitted.values, lenb = junk$lenb, coefficients = coefficients, x = x), class = "mars") } mda/R/onAttach.R0000644000176200001440000000021213653663715013112 0ustar liggesusers.onAttach=function(libname,pkgname){ packageStartupMessage("Loaded mda ", as.character(packageDescription("mda")[["Version"]]),"\n") } mda/R/llmult.R0000644000176200001440000000022213653663715012663 0ustar liggesusersllmult <- function (p, g) { index <- cbind(seq(along = g), as.numeric(g)) p <- p[index] -2 * sum(log(p[p > .Machine$double.eps])) } mda/R/df.gold.R0000644000176200001440000000171413653663715012676 0ustar liggesusersdf.gold <- function(x,df.target,tol=0.001,trace.it=FALSE){ dof=function(x,lambda)sum(x^2/(x^2+lambda)) goldnew =function(x1,x3){ phi=(1+sqrt(5))/2#golden ratio (x3+phi*x1)/(1+phi) } if(df.target<1)stop("Cannot have less than 1 as L1 df.target") lambda1=0 ###find a lambda3 that undercuts lambda3=0.001 df3=dof(x,lambda3) df1=dof(x,0) while(df3>df.target){ lambda3=10*lambda3 df3=dof(x,lambda3) } lambda2=goldnew(0,lambda3) df2=dof(x,lambda2) crit = abs(df2-df.target) while( crit>tol){ if(trace.it) cat("df2",df2,"lambda",lambda2,"\n") lambda0=goldnew(lambda2,lambda3) df0=dof(x,lambda0) crit0=abs(df0-df.target) if(crit0 0) } } if (full) bx[, j] <- temp1 else bx[, i + 1] <- temp1 } bx } mda/R/fix.theta.R0000644000176200001440000000024613653663715013252 0ustar liggesusersfix.theta <- function (theta, Q) { M <- t(theta) %*% Q %*% theta eM <- eigen(M, symmetric = TRUE) scale(theta %*% eM$vectors, FALSE, sqrt(eM$values)) } mda/R/print.mda.R0000644000176200001440000000025413653663715013253 0ustar liggesusersprint.mda <- function (x, ...) { NextMethod("print") if (!is.null(x$deviance)) cat("\nDeviance:", format(round(x$deviance, 3)), "\n") invisible(x) } mda/R/lvq.start.R0000644000176200001440000000264113653663715013317 0ustar liggesuserslvq.start <- function (x, g, subclasses) { cnames <- levels(fg <- factor(g)) J <- length(cnames) g <- as.numeric(g) weights <- as.list(cnames) names(weights) <- cnames subclasses <- rep(subclasses, length = length(cnames)) size <- sum(subclasses) cb <- lvqinit(x, g, size = size) TT <- olvq1(x, g, codebk = cb) TT <- lvq3(x, g, codebk = TT) cl <- as.numeric(TT$cl) R <- length(cl) cx <- TT$x p <- ncol(cx) for (j in seq(J)) { which <- cl == j number <- sum(which) if (number == 0) { cx <- rbind(cx, apply(x[g == j, ], 2, mean)) cl <- c(cl, j) wmj <- matrix(1, sum(g == j), 1) number <- 1 } else if (number == 1) wmj <- matrix(1, sum(g == j), 1) else { jcx <- cx[which, ] jcl <- seq(number) jcluster <- lvqtest(list(x = jcx, cl = jcl), x[g == j, ]) needed <- unique(jcluster) rcl <- rep(0, number) rcl[needed] <- j cl[which] <- rcl wmj <- diag(number)[jcluster, needed, drop = FALSE] number <- length(needed) } dimnames(wmj) <- list(NULL, paste("s", seq(number), sep = "")) weights[[j]] <- wmj } TT <- cl > 0 list(x = cx[TT, , drop = FALSE], cl = factor(cl[TT], labels = cnames), weights = weights) } mda/R/shrink.R0000644000176200001440000000006713653663715012657 0ustar liggesusersshrink <- function (object, ...) UseMethod("shrink") mda/R/bruto.R0000644000176200001440000001342113653663715012512 0ustar liggesusersbruto <- function (x, y, w = rep(1, n), wp = rep(1/np, np), dfmax, cost = 2, maxit.select = 20, maxit.backfit = 20, thresh = 1e-04, trace.bruto = FALSE, start.linear = TRUE, fit.object, ...) { this.call <- match.call() y <- as.matrix(y) x <- as.matrix(x) np <- ncol(y) d <- dim(x) nq <- d[2] n <- d[1] xnames <- dimnames(x)[[2]] if (!length(xnames)) xnames <- NULL ynames <- dimnames(y)[[2]] if (!length(ynames)) ynames <- NULL storage.mode(x) <- "double" storage.mode(y) <- "double" storage.mode(w) <- "double" storage.mode(wp) <- "double" storage.mode(cost) <- "double" if (missing(fit.object)) { nknotl <- function(n) { a1 <- log(50)/log(2) a2 <- log(100)/log(2) a3 <- log(140)/log(2) a4 <- log(200)/log(2) cx <- as.numeric(cut(n, c(0, 50, 200, 800, 3200))) if (is.na(cx)) cx <- 5 floor(switch(cx, n, 2^(a1 + ((a2 - a1) * (n - 50))/150), 2^(a2 + ((a3 - a2) * (n - 200))/600), 2^(a3 + ((a4 - a3) * (n - 800))/2400), 200 + (n - 3200)^0.2) + 6) } check.range <- apply(x, 2, var) if (any(check.range < .Machine$double.eps)) stop(paste("A column of x is constant;", "do not include an intercept column")) nkmax <- nknotl(n) - 4 coef <- matrix(double(nkmax * np * nq), ncol = nq) ybar <- apply(y * w, 2, sum)/sum(w) if (start.linear && (nq * cost > n)) start.linear <- FALSE if (start.linear) { start.fit <- polyreg(x, y, w) eta <- fitted(start.fit) coef[seq(from = 2, by = 2, length = np), ] <- t(start.fit$coef)[, -1] type <- as.integer(rep(2, nq)) df <- as.double(rep(1, nq)) } else { eta <- outer(rep(1, n), ybar) type <- integer(nq) df <- double(nq) } nk <- integer(nq) knot <- matrix(double((nkmax + 4) * nq), ncol = nq) Match <- matrix(integer(n * nq), ncol = nq) nef <- integer(nq) lambda <- double(nq) xrange <- matrix(double(2 * nq), 2, nq) df <- double(nq) if (missing(dfmax)) dfmax <- (2 * nkmax)/3 if (length(dfmax) != nq) dfmax <- rep(dfmax, length = nq) if (cost > 0) { TD <- (n - sum(df))/cost TT <- dfmax > TD if (any(TT)) dfmax[TT] <- TD } storage.mode(dfmax) <- "double" } else { this.call <- fit.object$call ybar <- fit.object$ybar nkmax <- fit.object$nkmax dfmax <- fit.object$dfmax eta <- fit.object$fitted.values if (is.null(eta)) eta <- predict(fit.object, x) nk <- fit.object$nk knot <- fit.object$knot Match <- fit.object$Match nef <- fit.object$nef lambda <- fit.object$lambda coef <- fit.object$coef type <- unclass(fit.object$type) xrange <- fit.object$xrange maxit.select <- 0 maxit.backfit <- fit.object$nit[2] df <- fit.object$df } maxit <- as.integer(c(maxit.select, maxit.backfit)) names(df) <- xnames names(maxit) <- c("selection", "backfitting") gcv.select <- if (maxit.select) matrix(double(maxit.select * nq), nq, maxit.select) else double(1) gcv.backfit <- if (maxit.backfit) matrix(double(maxit.backfit * nq), nq, maxit.backfit) else double(1) df.select <- if (maxit.select) matrix(double(maxit.select * nq), nq, maxit.select) else double(1) names(lambda) <- xnames fit <- .Fortran("bruto", x, as.integer(n), as.integer(nq), y, as.integer(np), w, knot = knot, nkmax = as.integer(nkmax), nk = nk, wp, Match = Match, nef = nef, dfmax = dfmax, cost = cost, lambda = lambda, df = df, coef = coef, type = type, xrange = xrange, gcv.select = gcv.select, gcv.backfit = gcv.backfit, df.select = df.select, maxit = maxit, nit = maxit, fitted.values = eta, residuals = y - eta, as.double(thresh), double((2 * np + 2) * ((n + 1) + 1) + (2 * np + 16) * (n + 1) + 2 * (n + 1) + np), integer(n), as.integer(trace.bruto), PACKAGE = "mda")[c("knot", "nkmax", "nk", "Match", "nef", "dfmax", "cost", "lambda", "df", "coef", "type", "xrange", "gcv.select", "gcv.backfit", "df.select", "maxit", "nit", "fitted.values", "residuals")] if (TN <- fit$nit[1]) { TT <- fit$gcv.select[, seq(TN), drop = FALSE] dimnames(TT) <- list(xnames, NULL) } else TT <- NULL fit$gcv.select <- TT if (TN) { TT <- fit$df.select[, seq(TN), drop = FALSE] dimnames(TT) <- list(xnames, NULL) } else TT <- NULL fit$df.select <- TT if (TN <- fit$nit[2]) { TT <- fit$gcv.backfit[, seq(TN), drop = FALSE] dimnames(TT) <- list(xnames, NULL) } else TT <- NULL fit$gcv.backfit <- TT TT <- factor(fit$type, levels = 1:3, labels = c("excluded", "linear", "smooth")) names(TT) <- xnames fit$type <- TT fit$ybar <- ybar fit$call <- this.call structure(fit, class = "bruto") } mda/R/confusion.list.R0000644000176200001440000000045113653663715014333 0ustar liggesusersconfusion.list <- function (object, truth, ...) { dd <- names(object) y <- seq(dd) x <- attr(object, "dimension") if (!length(x)) x <- seq(dd) for (i in y) { confi <- confusion(object[, i], truth) y[i] <- attr(confi, "error") } return(x, y) } mda/R/shrink.mda.R0000644000176200001440000000430713653663715013420 0ustar liggesusersshrink.mda <- function (object, sub.df = NULL, tot.df = NULL, ...) { if (is.null(sub.df) & is.null(tot.df)) { warning("No shrinkage parameters (sub.df or tot.df) given") return(object) } dimension <- object$dimension lambda <- object$values[seq(dimension)] theta.mod <- object$theta.mod theta <- object$means alpha <- sqrt(lambda) sqima <- sqrt(1 - lambda) theta <- scale(theta, FALSE, alpha/sqima) sub.prior <- unlist(object$sub.prior) prior <- object$prior Rj <- sapply(object$assign.theta, length) dp <- sub.prior * rep(prior, Rj) cl <- rep(seq(Rj), Rj) P <- diag(dp) + transformPenalty(prior = dp, cl = cl, df = sub.df, tot.df = tot.df) K <- t(theta) %*% P %*% theta TT <- chol((K + t(K))/2) Tinv <- backsolve(TT, diag(length(lambda))) M <- t(Tinv) %*% (lambda * Tinv) ed <- svd(M) thetan <- ed$v lambda <- ed$d discr.eigen <- lambda/(1 - lambda) pe <- (100 * cumsum(discr.eigen))/sum(discr.eigen) dimension <- min(dimension, sum(lambda > .Machine$double.eps)) if (dimension == 0) { warning("degenerate problem; no discrimination") return(structure(list(dimension = 0, fit = object$fit, call = object$call), class = "fda")) } thetan <- thetan[, seq(dimension), drop = FALSE] pe <- pe[seq(dimension)] alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) dm <- dimnames(theta) vnames <- dm[[2]][seq(dimension)] means <- scale(theta %*% Tinv %*% thetan, FALSE, sqima/alpha) dimnames(means) <- list(dm[[1]], vnames) names(lambda) <- c(vnames, rep("", length(lambda) - dimension)) names(pe) <- vnames theta.mod <- theta.mod %*% Tinv %*% thetan object$confusion <- object$deviance <- NULL incl.names <- c("percent.explained", "values", "means", "theta.mod", "dimension") rl <- list(pe, lambda, means, theta.mod, dimension) names(rl) <- incl.names object$sub.df <- sub.df object$tot.df <- tot.df object[incl.names] <- rl object$weights <- NULL update(object, sub.df = sub.df, tot.df = tot.df, weights = object, ...) } mda/R/mda.start.R0000644000176200001440000000446513653663715013264 0ustar liggesusersmda.start <- function (x, g, subclasses = 3, trace.mda.start = FALSE, start.method = c("kmeans", "lvq"), tries = 5, criterion = c("misclassification", "deviance"), ...) { start.method <- match.arg(start.method) criterion <- match.arg(criterion) name.criterion <- switch(criterion, misclassification = "Misclassification Error", deviance = "Deviance(multinomial)") starter <- get(paste(start.method, "start", sep = "."), mode = "function") fg <- factor(g) cnames <- levels(fg) prior <- table(fg) J <- length(cnames) n <- length(g) g <- as.numeric(fg) best.ll <- 1/.Machine$double.eps for (try in seq(tries)) { start <- starter(x, fg, subclasses) weights <- start$weights if (criterion == "misclassification") { pg <- lvqtest(start, x) ll <- attr(confusion(pg, fg), "error") } else { subclasses <- sapply(weights, ncol) Assign <- split(seq(sum(subclasses)), rep(seq(J), subclasses)) names(Assign) <- cnames fit <- mda.fit(x, g, weights, assign.theta = Assign, Rj = subclasses, eps = .Machine$double.eps, method = polyreg, ...) dmat <- exp(-0.5 * predict.fda(fit, type = "distance")) sub.prior <- fit$sub.prior pclass <- matrix(1, n, J) for (j in seq(J)) { priorj <- sub.prior[[j]] ass <- Assign[[j]] TT <- dmat[, ass, drop = FALSE] TT <- TT * outer(rep(1, n), priorj) TTot <- drop(TT %*% rep(1, length(ass))) wmj <- TT[g == j, , drop = FALSE]/TTot[g == j] pclass[, j] <- prior[j] * TTot dimnames(wmj) <- list(NULL, paste("s", seq(along = ass), sep = "")) weights[[j]] <- wmj } pclass <- pclass/drop(pclass %*% rep(1, J)) ll <- llmult(pclass, g) } if (trace.mda.start) cat(start.method, "start \t", name.criterion, format(round(ll, 5)), "\n") if (ll < best.ll) { keep.weights <- weights best.ll <- ll } } structure(keep.weights, criterion = best.ll, name.criterion = name.criterion) } mda/R/polybasis.R0000644000176200001440000000426213653663715013367 0ustar liggesuserspolybasis <- function (x, degree = 1, monomial = FALSE) { if (degree >= 3) warning("This is not a smart polynomial routine. You may get numerical problems with a degree of 3 or more") x <- as.matrix(x) dn <- dimnames(x) dd <- dim(x) np <- dd[2] if (np == 1) monomial <- TRUE if (degree > 1) { if (monomial) { px <- x cc <- sapply(split(paste(diag(np)), rep(seq(np), rep(np, np))), paste, collapse = "") tx <- x for (i in 2:degree) { px <- px * tx x <- cbind(x, px) cc <- c(cc, sapply(split(paste(diag(np) * i), rep(seq(np), rep(np, np))), paste, collapse = "")) } } else { matarray <- array(x, c(dd, degree)) for (i in 2:degree) matarray[, , i] <- x^i matarray <- aperm(matarray, c(1, 3, 2)) x <- matarray[, , np] ad0 <- seq(degree) ad <- ad0 ncol.mat0 <- degree ncol.x <- degree d0 <- paste(ad0) cc <- d0 for (ii in seq(np - 1, 1)) { index0 <- rep(seq(ncol.mat0), ncol.x) index <- rep(seq(ncol.x), rep(ncol.mat0, ncol.x)) newad <- ad0[index0] + ad[index] retain <- newad <= degree mat0 <- matarray[, , ii] if (any(retain)) newmat <- mat0[, index0[retain], drop = FALSE] * x[, index[retain], drop = FALSE] else newmat <- NULL ddn <- paste(d0[index0[retain]], cc[index[retain]], sep = "") zeros <- paste(rep(0, nchar(cc[1])), collapse = "") cc <- paste(0, cc, sep = "") d00 <- paste(d0, zeros, sep = "") x <- cbind(mat0, x, newmat) cc <- c(d00, cc, ddn) ad <- c(ad0, ad, newad[retain]) ncol.x <- length(ad) } } if (!is.null(dn)) dn[[2]] <- cc else dn <- list(NULL, cc) dimnames(x) <- dn } cbind(Intercept = 1, x) } mda/R/mda.fit.R0000644000176200001440000000421514234332603012663 0ustar liggesusersmda.fit <- function (x, g, weights, theta, assign.theta, Rj, sub.df=NULL, tot.df=NULL, dimension = R - 1, eps = 100 * .Machine$double.eps, method = polyreg, ...) { this.call <- match.call() n <- nrow(x) cnames <- names(weights) J <- length(cnames) R <- sum(Rj) wtots <- lapply(weights, function(x) apply(x, 2, sum)) sub.prior <- lapply(wtots, function(x) x/sum(x)) dp <- unlist(wtots) subclass.names <- names(dp) dp <- dp/sum(dp) if (missing(theta)) theta <- contr.helmert(R) theta <- contr.fda(dp, theta) if (!(is.null(sub.df) & is.null(tot.df))) { Q <- diag(dp) + transformPenalty(prior = dp, cl = rep(seq(J), Rj), df = sub.df, tot.df = tot.df) theta <- fix.theta(theta, Q) } Theta <- matrix(0, n, R - 1) obs.weights <- double(n) for (j in seq(J)) { Theta[g == j, ] <- weights[[j]] %*% theta[assign.theta[[j]], , drop = FALSE] obs.weights[g == j] <- weights[[j]] %*% rep(1, Rj[j]) } fit <- method(x, Theta, obs.weights, ...) Theta <- Theta * obs.weights ssm <- t(Theta) %*% fitted(fit)/n ed <- svd(ssm, nu = 0) thetan <- ed$v lambda <- ed$d lambda[lambda > 1 - eps] <- 1 - eps discr.eigen <- lambda/(1 - lambda) pe <- (100 * cumsum(discr.eigen))/sum(discr.eigen) dimension <- min(dimension, sum(lambda > eps)) if (dimension == 0) { warning("degenerate problem; no discrimination") return(structure(list(dimension = 0, fit = fit, call = this.call), class = "fda")) } thetan <- thetan[, seq(dimension), drop = FALSE] pe <- pe[seq(dimension)] alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) vnames <- paste("v", seq(dimension), sep = "") means <- scale(theta %*% thetan, FALSE, sqima/alpha) dimnames(means) <- list(subclass.names, vnames) names(lambda) <- c(vnames, rep("", length(lambda) - dimension)) names(pe) <- vnames list(percent.explained = pe, values = lambda, means = means, theta.mod = thetan, dimension = dimension, sub.prior = sub.prior, fit = fit, call = this.call) } mda/R/polyreg.R0000644000176200001440000000124713653663715013043 0ustar liggesuserspolyreg <- function (x, y, w, degree = 1, monomial = FALSE, ...) { x <- polybasis(x, degree, monomial) y <- as.matrix(y) # just making sure ... if (iswt <- !missing(w)) { if (any(w <= 0)) stop("only positive weights") w <- sqrt(w) y <- y * w x <- x * w } qrx <- qr(x) coef <- as.matrix(qr.coef(qrx, y)) fitted <- qr.fitted(qrx, y) if ((df <- qrx$rank) < ncol(x)) coef[qrx$pivot, ] <- coef if (iswt) fitted <- fitted/w structure(list(fitted.values = fitted, coefficients = coef, degree = degree, monomial = monomial, df = df), class = "polyreg") } mda/R/mda.R0000644000176200001440000000703514234332603012105 0ustar liggesusersmda <- function(formula = formula(data), data = sys.frame(sys.parent()), subclasses = 3, sub.df = NULL, tot.df = NULL, dimension = sum(subclasses) - 1, eps = 100 * .Machine$double.eps, iter = 5, weights = mda.start(x, g, subclasses, trace, ...), method = polyreg, keep.fitted = (n * dimension < 5000), trace = FALSE, ...) { this.call <- match.call() m <- match.call(expand.dots = FALSE) m[[1]] <- as.name("model.frame") m <- m[match(names(m), c("", "formula", "data"), 0)] m <- eval(m, sys.frame(sys.parent())) Terms <- attr(m, "terms") g <- model.extract(m, "response") x <- model.matrix(Terms, m) if(attr(Terms, "intercept"))x=x[,-1,drop=FALSE] dd <- dim(x) n <- dd[1] m <- dd[2] rowmin <- function(mat) { ncc <- ncol(mat) if (ncc == 1) return(drop(mat)) rowm <- pmin(mat[, 1], mat[, 2]) if (ncc == 2) return(rowm) else { for (j in seq(from = 3, to = ncc)) rowm <- pmin(rowm, mat[, j]) } rowm } if (length(g) != n) stop("g should have length nrow(x)") fg <- factor(g) if (inherits(weights, "mda")) { if (is.null(weights$weights)) weights <- predict(weights, x, type = "weights", g = fg) else weights <- weights$weights } subclasses <- sapply(weights, ncol) prior <- table(fg) dim(prior) <- NULL prior <- prior/sum(prior) cnames <- levels(fg) g <- as.numeric(fg) J <- length(cnames) Assign <- split(seq(sum(subclasses)), rep(seq(J), subclasses)) names(Assign) <- cnames if (!is.null(tot.df)) { if (tot.df >= sum(subclasses)) tot.df <- NULL } if (!is.null(sub.df)) { sub.df <- rep(sub.df, length = length(prior)) sub.df <- pmin(sub.df, subclasses) if (all(sub.df == subclasses)) sub.df <- NULL } for (counter in seq(iter)) { fit <- mda.fit(x, g, weights, assign.theta = Assign, Rj = subclasses, sub.df = sub.df, tot.df = tot.df, dimension = dimension, eps = eps, method = method, trace = trace, ...) dmat <- predict.fda(fit, type = "distance") sub.prior <- fit$sub.prior for (j in seq(J)) { TT <- dmat[g == j, Assign[[j]], drop = FALSE] TT <- exp(-0.5 * (TT - rowmin(TT))) TT <- TT * outer(rep(1, nrow(TT)), sub.prior[[j]]) weights[[j]][] <- TT/drop(TT %*% rep(1, ncol(TT))) } pclass <- matrix(1, n, J) dmat <- exp(-0.5 * (dmat - rowmin(dmat))) for (j in seq(J)) { priorj <- sub.prior[[j]] ass <- Assign[[j]] TT <- dmat[, ass, drop = FALSE] * outer(rep(1, n), priorj) TTot <- drop(TT %*% rep(1, length(ass))) pclass[, j] <- prior[j] * TTot } pclass <- pclass/drop(pclass %*% rep(1, J)) if (trace) cat("Iteration", counter, "\tDeviance(multinomial)", format(round(ll <- llmult(pclass, g), 5)), "\n") } if (!trace) ll <- llmult(pclass, g) if (!keep.fitted) fit$fit$fitted.values <- NULL dimnames(pclass) <- list(NULL, names(Assign)) conf <- confusion(softmax(pclass), fg) fit <- c(fit, list(weights = weights, prior = prior, assign.theta = Assign, deviance = ll, confusion = conf, terms = Terms)) fit$call <- this.call fit$sub.df <- sub.df fit$tot.df <- tot.df class(fit) <- c("mda", "fda") fit } mda/R/contr.fda.R0000644000176200001440000000051413653663715013234 0ustar liggesuserscontr.fda <- function (p = rep(1, d[1]), contrast.default = contr.helmert(length(p))) { d <- dim(contrast.default) sqp <- sqrt(p/sum(p)) x <- cbind(1, contrast.default) * outer(sqp, rep(1, d[2] + 1)) qx <- qr(x) J <- qx$rank qr.qy(qx, diag(d[1])[, seq(2, J)])/outer(sqp, rep(1, J - 1)) } mda/R/predict.fda.R0000644000176200001440000000763413653663715013553 0ustar liggesuserspredict.fda <- function (object, newdata, type = c("class", "variates", "posterior", "hierarchical", "distances"), prior, dimension = J - 1, ...) { dist <- function(x, mean, m = ncol(mean)) (scale(x, mean, FALSE)^2) %*% rep(1, m) type <- match.arg(type) means <- object$means Jk <- dim(means) J <- Jk[1] k <- Jk[2] if (type == "hierarchical") { if (missing(dimension)) dimension.set <- seq(k) else { dimension.set <- dimension[dimension <= k] if (!length(dimension.set)) dimension.set <- k dimension <- max(dimension.set) } } else dimension <- min(max(dimension), k) if (missing(newdata)) y <- predict(object$fit) else { if (inherits(newdata, "data.frame") || is.list(newdata)) { Terms <- delete.response(terms(object)) # attr(Terms, "intercept") <- 0 newdata <- model.matrix(Terms, newdata) if(attr(Terms,"intercept"))newdata=newdata[,-1,drop=FALSE] } y <- predict(object$fit, newdata) } y <- y %*% object$theta[, seq(dimension), drop = FALSE] lambda <- object$values alpha <- sqrt(lambda[seq(dimension)]) sqima <- sqrt(1 - lambda[seq(dimension)]) newdata <- scale(y, FALSE, sqima * alpha) if (missing(prior)) prior <- object$prior else { if (any(prior < 0) | round(sum(prior), 5) != 1) stop("innappropriate prior") } means <- means[, seq(dimension), drop = FALSE] switch(type, variates = return(newdata), class = { n <- nrow(newdata) prior <- 2 * log(prior) mindist <- dist(newdata, means[1, ], dimension) - prior[1] pclass <- rep(1, n) for (i in seq(2, J)) { ndist <- dist(newdata, means[i, ], dimension) - prior[i] l <- ndist < mindist pclass[l] <- i mindist[l] <- ndist[l] } ## 2001-10-27: Need to provide levels or else if we get an error ## if the predicted classes do no contain all possible classes. ## Reported by Greg Jefferis , fix by ## Bj/orn-Helge Mevik . return(factor(pclass, levels = seq(J), labels = dimnames(means)[[1]])) }, posterior = { pclass <- matrix(0, nrow(newdata), J) for (i in seq(J)) pclass[, i] <- exp(-0.5 * dist(newdata, means[i, ], dimension)) * prior[i] dimnames(pclass) <- list(dimnames(newdata)[[1]], dimnames(means)[[1]]) return(pclass/drop(pclass %*% rep(1, J))) }, hierarchical = { prior <- 2 * log(prior) Pclass <- vector("list", length(dimension.set)) names(Pclass) <- paste("D", dimension.set, sep = "") for (ad in seq(along = dimension.set)) { d <- dimension.set[ad] dd <- seq(d) mindist <- dist(newdata[, dd, drop = FALSE], means[1, dd, drop = FALSE], d) - prior[1] pclass <- rep(1, nrow(newdata)) for (i in seq(2, J)) { ndist <- dist(newdata[, dd, drop = FALSE], means[i, dd, drop = FALSE], d) - prior[i] l <- ndist < mindist pclass[l] <- i mindist[l] <- ndist[l] } levels(pclass) <- dimnames(means)[[1]] Pclass[[ad]] <- pclass } rownames <- dimnames(newdata)[[1]] if (is.null(rownames)) rownames <- paste(seq(nrow(newdata))) return(structure(Pclass, class = "data.frame", row.names = rownames, dimensions = dimension.set)) }, distances = { dclass <- matrix(0, nrow(newdata), J) for (i in seq(J)) dclass[, i] <- dist(newdata, means[i, ], dimension) dimnames(dclass) <- list(dimnames(newdata)[[1]], dimnames(means)[[1]]) return(dclass) }) } mda/MD50000644000176200001440000001143614445214302011327 0ustar liggesusersd39647c86c1a981eed06d160c057b8bb *DESCRIPTION 4ee5c8bbb3fc6c56d92a541a88a17514 *NAMESPACE dbda29d4a4fc085f54d9bbc87ca32948 *PORTING 4893cbb3d6281aa19e2c9ecfb6cd1dec *R/bruto.R df9f5ffd1b3f05c90de51c4d3650b5ef *R/coef.fda.R c013510f47418f5a2321a4647cf08d22 *R/confusion.R b6ed1082eee5a7007b8ade9e960a2706 *R/confusion.default.R 7eac0cd2b179bd55995e20c80c60b655 *R/confusion.fda.R d9588148d4e90340320ba4d79cdacce1 *R/confusion.list.R 38fac132d0ccb9366555012b5846cffd *R/contr.fda.R f10594f4fc02a5d313997236a8f00bff *R/df.gold.R 071c047ee15e7fba05b0194f1f5c3b0a *R/fda.R eea377f9b91972cdf511cf9a849c5715 *R/fix.theta.R e362fbd33da836142c5cb5d83cbf241f *R/gen.ridge.R 0e91a958b86f2c64fd1b24ba67ed1144 *R/kmeans.start.R 81c98507d4e440b0a042b3dc2997b021 *R/laplacian.R 066dc9c4d8297360899c75f3e2f0d103 *R/llmult.R 3c6d47cb90deb7d649383e97302189d5 *R/lvq.start.R c86a84efaa4d9ade84745653d76f37ba *R/mars.R 5815739d978b138fc6868421bbe4980b *R/mda.R 3fff9a1f59f3a394c117cf275cb8fc0a *R/mda.fit.R a449cdc559c403675acc853c13c4ea26 *R/mda.means.R 2b3b9a1a3321ae08e6980c6c0881ce27 *R/mda.start.R 379870b2aa1f5e6384bdb33f4c150285 *R/meanPenalty.R 984915c3b88457fa6b678f5fd8868607 *R/model.matrix.mars.R 7877db54e9a6d15683ab029de8273bbf *R/mspline.R abc01219b9f154f43ff90af9238ade31 *R/onAttach.R 02f8d62da40f37f0353f3a8b74f8a4d1 *R/plot.fda.R f529a5159c4f4689ceaf15c24be5a8ff *R/polybasis.R bd65297ec7d49edd130c1bcb4f632f36 *R/polyreg.R dd9b3e7ab6c1b45dbfef554f0d40956f *R/pplot.R d77ea875335c2cbba7d283cdaa73fe0c *R/pplot4.R 1f3e5799dea687b86b1500049faa2195 *R/predict.bruto.R 976c4c72edbcf14dce25f9db11450ab6 *R/predict.fda.R 60b36ef1f52d35944a4be11c113a5aca *R/predict.gen.ridge.R 871bffe94856308e83d389984750fb0e *R/predict.mars.R 27d9c23df22366d5abe62df4956c6c73 *R/predict.mda.R 806f305aa93f3e9cfc258187f641d33b *R/predict.polyreg.R a25b2cdbc0ed0a241ff3027f4da1402f *R/print.fda.R 5467f48506ac353c9abb4215a0af8a3f *R/print.mda.R 81213b69f946fb0c6117546366fc1d1e *R/shrink.R 88604ec639733d6d48095263d7554e87 *R/shrink.mda.R edd4caac8a56625c57d1a3ce614bae58 *R/softmax.R b3237a9365f1a11398b6ea798a5953ac *R/transformPenalty.R 78a0c8ccea18c92729c6cdf44bf023e5 *README 25c33b4406db3f6b607b67d0fd08ec88 *README.md e47fcc9b9d35ea4673424369f0db27b4 *TODO c637b4768a3b0f29a6b5e71e4203c1a3 *data/ESL.mixture.rda 62dadfb8e34061e475fe9445750e6094 *data/glass.rda e8fda982249539f0947306e47bfbf541 *inst/FortranFixup2023/Readme.txt b67284cf4bf02a656b4848ec331c513b *inst/FortranFixup2023/dmarss.f 31c517da33e55efdefdf6526db143102 *inst/mda-source.zip f52bf4488781837d7c255f16280149a9 *inst/ratfor/README 9d426796ce32cc0ce5f33f975ae7aa7a *inst/ratfor/bruto.r d47f2a92367dcb5d9717670ebe3b771e *inst/ratfor/dcalcvar.r d97875af5137bacc8c48607f92d38985 *inst/ratfor/dmarss.r 5468af4a41b4e3653bb8732e00eeeb1a *inst/ratfor/dorthreg.r 87e00acb8f53e360d0e7b19403cc0360 *inst/ratfor/dqrreg.r 03a701e8cf11c5ac116cb33ae77c16fc *inst/ratfor/mspline.r ec0f1cafcca3df67b1d4383893ce43e2 *inst/ratfor/sknotl.r d154fc7c93c425affd4bd6b796134139 *inst/ratfor/tmatch.r 3cf54c1ccddac638b177fa399c716747 *man/ESL.mixture.Rd f4835ebeb119a00af4bfca787c3e501c *man/bruto.Rd facea9384d4b7b1b6d44475a2426f4f2 *man/coef.fda.Rd 12a307bd41d7002ad3953f430a12cccc *man/confusion.Rd 18e6a2ac85e97cff55d0c63712f28322 *man/fda.Rd 99db2a448546ca2645da88ce6c22c560 *man/gen.ridge.Rd 55fadfc574263384551c59f3c3e86d78 *man/glass.Rd 3c7ef2c4bce68f5c0d08b6b9f0bf19d2 *man/laplacian.Rd 89f4b34c766cecb927fc84e9509141e6 *man/mars.Rd bc8e8ba9f9954f5aef14b40740bb9328 *man/mda.Rd bb8929ec7d2e2f28ceabbff0badc21d9 *man/mda.start.Rd d78bfa708f22d6f3a65bff7b7a7c9331 *man/model.matrix.mars.Rd 980b8172f151e41ba7662f3ec7229b6e *man/mspline.Rd 4d4382bf4772f0d1ba1e2c40db61589d *man/plot.fda.Rd d666df1df4b23ae705c7f3a1a17c5d08 *man/polyreg.Rd 035e45c1004a059a6c8331a5589ee924 *man/predict.bruto.Rd 9b25b73baaa2bfb9ed3d91cdd70e5a7d *man/predict.fda.Rd 0dae87b8d68b27c55e4a50852ee9b9ed *man/predict.mars.Rd 7579ef056ae46b8ffe701f776e12b01e *man/predict.mda.Rd 85cc9d91e20e7b3ae007506c911c62e0 *man/softmax.Rd 92b8527157eb7f1ed47af8c577bb6863 *src/bruto.f c63f7b9defc80adc2c34b51d6a0dce9e *src/bsplvd.f 729cf1c2836a66160513d98f850ebaaf *src/bvalue.f a3547453dc05ec5e5efab2cf7b8e4129 *src/dcalcvar.f 28a943dbd950dc56669093e54c90536b *src/dmarss.f 32fe427e7dbab87d36aa2715712d0a1c *src/dorthreg.f d3e9beaa7f1a2265267afe1ffa3d2964 *src/dqrreg.f 66f499752dc8f9fd6219a82b85c5515a *src/mda_init.c e7e6be50369ec31aec611a8885e859b7 *src/mspline.f 82da999d24034505301e31c78d1e58cc *src/sgram.f 8e36ab887a6d293447b4b1e17a2131e3 *src/sknotl.f 26225b56823662b310db30460205567b *src/sortdi.f e9e3c986f45da4125c3105d14b8de76e *src/tmatch.f 2d2793da2f36958e6316eba634c3e799 *src/wmean.f 59036b9b9e8bd387e05993fa8f563684 *tests/testthat.R c0aeb153e6b9221069b593c4fef9c849 *tests/testthat/test_example.R f9eaffff7f5312ea507159e04270209e *tests/testthat/test_results/mda-0.4-results.RDS mda/inst/0000755000176200001440000000000014445163524012000 5ustar liggesusersmda/inst/mda-source.zip0000644000176200001440000226630113653663715014604 0ustar liggesusersPK /Pmda/UT Y^m^ux PK *Pmda/man/UT O^m^ux PK*PS3b2~mda/man/plot.fda.Rd~UT O^P^ux Uϯ6  =u9 =.=(U? Isf{Iɓ ɏ?R `|:J,0Zڐt28$>'}6( u$lDiEFp^̩/tN`鰣,c8Nūw(ԁIt%O!q񁎃t`o'ĉ{R>=aRw'2 ߃4"ƕbCܝ2 fB< ?Ϟ `EM #6KǑŋ3Fj%\_E/MVJeJ4,y5>]Za/F*%ufÓ t ű4%*scu\#-, VXF-`՞Q F:);SGl h(8m ʔ֬C  9Ԃ%*۴ @s!Vx<(U|wSu9Ը?) {S];NpvZf g QԬrx gq??yqosHg;jZvQyխYNF/y5P[uA'aZ?󎧺Aj_Z<+ ӀReő֮VOi ߽xho~<@X-[Z1]smHuoqĮ#=?T/'S.m/x}?PK*Pumda/man/softmax.RdUT O^P^ux uRM0W B^S,KҞk #xMۋg{4SkRR柉 4ȶZU48P"hUɻ+^ihaّVj}vrث>z%kaZt $FwCI5Pu՚"0TCYy͏v45tƲ ӢbMkPZ&2-&GOP} Q4j*~ i(4;Mn߄8 2+MA%*+]199H^]*\͕IDT&ziȽM@MVÐ5[FY[#v*4m VhjI*Kߚ>>З+CCI^e{| {%s]$b\{zQg˸ůwG vgyu IEV[&C,!PK*PC8mda/man/confusion.RdUT O^P^ux }SM0WvAJl Vƅn2i:veOڭۙqҴTQ?{Ҫ٦ !)*RبЕõrS+&ӱ y]aC'Ov@Z ihU!᯲{2XƊZc-gtD@QȮ-;3VfxEKAGЋZW=JeGѭ39d4-?!C h< I Ii:v0PD-Y&7*/hZ"&:`9_h:[I12 + cI+cPV܈?dCdi.`PG0 Y/ *\"ҕFۗ_hiU[Kj9bm4;,]nY/0N4ߛ KnoY"}Е3ܭgb0_ AQ\L0#i $ Rp;}_(ܹ|vx{,{b)µ! PK*PyXSqmda/man/mspline.RdUT O^P^ux uTn0+hjч\ -,"r)YRaܙYTs'5oQYd;hy.~r}w\PBx7M$Er/[x(zv*3o( KE*4=$AkEtCzȪUECGVQ(ebPh!-^҉V7[\By7r8y[M Dls,> K)k3:9=T#*csjW' '%@'&A_D9M/r٬ҹ}ْQفgFbR8ƦآaCNӫ}lTAť5uӸ0$cwpWP>C;]Êc^IxT|eјxxg\+7PK*P$Amda/man/gen.ridge.RdUT O^P^ux }S0+Jg>=5Iv;c-AzwgƳ s/Zv%Uۛ"-w飤J2Q/yG" q ˳?>DcBMjԳ`ԧyԳkhj&ڟsjpcCa]C 98~TĵeX|zQ%@MxJW19ZWt_!u}V:5 Ll 'MT@(ފ dhB UmSz>d:UHu"+.7!esZ,d#v =gލ'ʁ]o0 !t$FAK*6 e6c w= F)B0D#PU6VD:6'(cVeLJ0臬Mv_]GQ(gVT} ;I WVp), ºDP@[̭Cca!3,dʷ Q3T%4s\$.}27PK*PBRmda/man/mars.Rd~UT O^P^ux Wm_1P.WP4h'-bd4+r)ܥ˓̒%ۉm:Jg^ٕU>d |%POM̳ 3UᛦYz]jVȴOkg3Mk'M56^mq® J(cy}JV6n,ޅZz _Ꝫb)*s؝7Mm te.T6{J Xc7pLw`Uu\} ^z AXy*p`.9[Uq xv[Mi=Z_.']U`ӒrrkgſN6xM]#@fc]T9[H)\ؠ7F/N[lJy²i\!Yd<-ǘmS@.] qqpr/gݣ쪚9s%[t91jWUx Wdg^gY#sp~n[6$ NxYx2fEk>˕rG*㛇_ٞ`8_}*\W:%sc:P.ݍ &|ij:kL'ul12G^ Qi8EpT9?Yiv&lGY;imySK<{d_.r 31#=Z+nbkuS]Q]<+AI,Z@L-8 :ym9>3˖DF>(b̃.aR "ʢb;;\Bo+7iI%y] :\T.OaU}O/^ w<إ&}n#61&bx~nr;{497" Nj$3[D[*hLR(42}χz~U֮{3QuAQiÖ9u,dZ F|xGYhTRmX>%XhnsH茍u3>,p=bhrÌyibZy8o[ Sw&zP!7ۑFnc3I5`=] /<12m6{6yS>cCt 3709W5,k gz&Fx}o~S,;b 4eݳYJFBr(Dq5IIx6+`ذ!A=sFt/7l0Xn.93 |yb;HV+9|uaB\Sa!"=8a7f-Vpkk,ŘbHMB7/h3._Ħ_̯vs K=O5|~Lh9/[ N.42Vt6xOEQd3p!U9"sa[>\b~v#~O[OD{@ br2ޡo"ZomYTi]䲤|1߾;#?߾M0lvL,֟)لsʊ_X0!z'+ e5c1^B?.x#1)M&|\h9pٴ2FwWj6y[~S8tQ.AVn{&2CcFfck F!$ocbމ0׏K|Mx#`kQYkJI@vUU0e$osX*,^]J]W|o'8 f:y^oՓ>\}zPK*P"n:mda/man/plot.fda.RdUT O^P^ux UM6 ϯ <3h!@[@QȱFwÐ䬧CJY9X,r1 |||tXv'a!dp@} NlQm.{'5H >$]TJR=H"sN+9-P| ;p2vqbx/:P"<?|4>qdq8'SsF.yp <-p+=H#b\)6Yݙi,s`&ðjm>&'XQ3cˆq+pGQ6 :]2~WE2ƈF׉ms  %r!E;ϔ]+L8xu j:'L!~: moj"=U&.W `ɫY%J {1TQ.Fo{j7Cd($M(QUˬmnaI5R2j 0!e7ґPOAݙ"e?*eKGCmaoKPfP|-hȡm/Q)U<ݦmE r/T{V\On؛Bp4S-8k^Xfo`w[so΋(>}{HF8 UӲDϫnr2};jcE8 ;w<խV+i@ eu#7]Ϗp{ MT-clit͵v##^Oq/8/W~>OM~PnGZ;PK*P mda/man/glass.RdUT O^Q^ux TQk0~n~=&:Km$o]F2FױC-&[B'' B,1 FFӧe J10ʙ̜t 4Rrn9V0˜%&FȹGR1Jef;L0{f%+u$h,RRl+yCe('q}睉4.i/},*1xKR.f._9ۋnzkݥ0tSM4ɨݻ@K]2YhscIbۮ${v` OѴCy-4HXBwс7BG4*=j3WEƫbHC( <(@dp$!HF^!"J4mpO6?–11knU>-0 Y@)ϝS ԍ=r"qi*aP@EW݈_MRAJJĄ7yrmj <[ʪ:)Zbe.,B:!4_tbDK'T9_EF!aHZ \KR:B~V,ka+]Qmo(N }1} ~} dzp[tJGL&]~ ujL!9`CwPϧr5UO W =&j `H A%ܭx)Bt܉PTf#eb 7;"\c`̕ǽtsMy MeҒ:fx*sdBk1rh(Fk{]$5].W;&8I]_APIUjƃ6qÇe-oSmG*+%4'Rs(M-2K8L/ֹ|Ez5.%ڰ7֟G۩ip.Y` /ǡPSDx?v8厣(WL$17 S;.G13(4j"v -G8@%`̼)t7dں2(5]p&4`BY0C ^ҭG|X>/D*cHҾH3Ǒl8NG&ĊlzeWE/AG?rY"dQY;U{EL`IgZڹs:2aGٵdF`n&A#S<vTWPْ(\<wQGc+mƄov ZRcGERJf7u_4'UzMQ90W{3Y ]5^*\kZ<@_`غ}Rƫ$jt/bx߳=W`TfB[nUe2o96T۷{rj<1{7n~8ҩm\T~t<W7W-|ǷoLw}AG_q#-|>Nf᰷HQ˻F5b!w?#0?W%MgZt!1LCvCFBS2Nj>f_ji=!8r ?``{^G,_+}G%c p?OG>G6Kܧr9t2O&Q+vwHՖ1a[ 6d6Ύ@+z[dP=c}_x3]Lؠk b1lda3qRqZYt7vvT-^4S=h'be[Cv"˓ WnG%z<Y{{!WgfHt2?N%Og :xlٙ=*fل,O­.]]LyGMwL[D za`7i^#tׁÂLh!pL|#!~Ձ@d8N/1fHJ;D*{Lu5Y 3t!|4PK*Ph<`+mda/man/coef.fda.Rd~UT O^P^ux uKoFA$,F`:(IhQ򑇌ȡ>ݥ#`~{gi[E|),jKG &D5٭wUSMJE6_FߨUJQ9fUBc{μnsLEMv?ur=PT.Xo PL۫v-;)JWQ^2IJ:s&ܵD\]hU%`"TTc4lJFy<#z[*y،Ya2\wBh%/joؘlt%"4Zaphs"E s* 0ʢ]~'[%0N?et~S9$س4]Y٧GqKӐFTbCSO5WҖ^xDЭWGtyzd?0Dm븠6GP1eZheڽJIvot~q":<_M_{vll$8RrFAɨVᩝkx^Gpy'rQKU|׿zlp9ϒ[b*qYd#?wtWzm&țD-J~2~-.53*f#Jء:}߹dq,bv"_7^Qe-9lRF^9 :kiEQLWV~ɚl= 9WOR>>ifdeFԏy.(Z3Lxwyŋ,PK*P^emda/man/model.matrix.mars.RdUT O^P^ux mSAn0 +xk@C-Ce^DC NE Pΐ;xpsN`^8e_t @NK'1) H#OѐuAB{&VGøgա>^:8-fZ:]=v0h|u(19`"󦠐 Burea3uuqq?K? >+TD *nFx-jb& /!1ES㬒 JpWՂEx|cNVbIˆq\Vr͛o nsF#&j)t$C@V2= b f V-#2˕}f&txJMAZWrP%v;%c ,zLN}R_QYzC5Ԏ1wUWqkk??PK*P[Rvmda/man/mda.start.RdUT O^P^ux eSMo0J!BT9(Erؓ4g?{?HaOyoXsUA~Q&8hfq  `q":lX.jMOo&(# PudnrYdqb6gZ'ƞj_A_OM1%Ϸ_*!>Am)^˹Z?YB y}QL|'F YJdel: (4G^5~"'kŦ~Q{-E*sg61V_5aNn-w`bA wxeH&H‰l5J] dBՓl֏:gꂷtχX@^1ِC:-eX^4^;ԡvBAlpe8~;9 Ns @#\Ǵ9]CKIV̓#љbn I7 mD9h0YyED;*o,+ݖBzy탖7oUDn^PK*Pxmda/man/softmax.Rd~UT O^P^ux uRM0W ta)YXh/I{{Pq2>4N;RMv^,<ޛ8F߲UTʐ7Llp|"w@@AcluL]iJD ʹJx}T[PVu"Y ޢ851qFN֥+H-ԍ8~_XNem1k6DF&`dPNÁ_7u@rj$=B;0Gi&U0A('h3wؿ t *7FO؈JaGߥ"埙\JDDeϔ!2v55\ZMS)>xH8(Њ՜E-1|A6$hNGE!&L v`Ejh~Y+Qfɟ%fҊ5lW |~=LXSPK*P˅irmda/man/bruto.Rd~UT O^P^ux Wmo6_qpbˀ[- 4P )PZlTlsGY[Ȼ{U>|]7WQaMaBDRnD鶩g*X]O!GΎԨG5fuR`=mPk\]Fm2*ZEB&.t>|Ue7^ ]2Uo_ܼ% F<.K+[}a_1& 7;r%Y{Sua|Yt "WmN×Xe/Au>h'é٠;8ȭ?V&j%*Ui V_IH{ڠItAY8|jMѪj [R:T֐,JLFCO n=Rǥj$>~Wj+$!Hp\Mi\iJ@GJ },ξ&C);K|^.i NwcUP)4JΞ/~W #b. n^WJ3( J`+<ΠZ;TnmrXYc%qu9 ׍AFA?r)63Q&tt̞$|3҉2%/:+-YL6Gט2h.28`%>kuԪړۡF8Cz4kXA @ٻj7=0G>9uBŐzPy=6|BrK jPJ RnAt=cH$tj}CfªڵV 49Æ=PX&9:5;9p0z¸a 3"Wa]F]lix:N8SgHZT1|<+&&3'̓Ƽ,OȊ*&C :KxfDk¨R-Հ BiD47*5^*p] `^eC$<3S\Qb(;4]w6ź*:C TJ\} Ŵ;4 zyAֿN~=cs8 b+qo@ďD0O(5>  D!>my+Ց*J[|!ɵyN0HmHdXAίi3~`4ʺhsfVTR.QrKTF˚ƭhiVac{]7ï½-vjj^7/hRp\^1DŽg_TzgV 5t }` kv9z;r#.Y3xT+_|ce5^ۢ3zѵYYo ;U7GPQ"o zI?>Nl^eŞKwJOE9yX8} ~VcJnevnzۆͥB0i^pV-{]aY/̂Ĝgcmy޲8|ۈoxwrY%>fJi/zG c=|T.X'*Wq'{~;"n5=Gtؒ[b1r|QFoPK*PD;^mda/man/laplacian.RdUT O^P^ux }S]k1|_4RCh !-B>o\Ig=wWg_ݤ}vfvf5wXSkqedt]11k k'|eH,e L+rh*,|'krb}ZƅteURsR)d&ĮIz:sT!-}רw@MNy@=nQ״ B'' xe9\:-j8ji5{hA\Iѕ䰵~#J+DvG6 ,+].`rv6QߏfFwa'.P $sW7C[ZW|\秘fLӑmmoܲ{<`hU®(~PK*P1Pmda/man/predict.fda.RdUT O^P^ux eUMo6W [v&ٶm,r{cTIʱ!3؎p͛O-5.rh `z{~7tCEZ[>[4Ǡ(y `u@~"-~om)c)r8muuMrj'|2`Eaⱡ/@l`Ű<1TwB>B)2W_ௗ 0K  -Ԛ`w̱"eI@ĉw*sw?WUsE[lM\$;Ֆac$[,z^c$811z}H@\y^uVh %jB$)l)QIT6FGz r*;a-K1uEpsїp;ǰ&@dK-aƼO8)Jjˈ̏'Ip"^H~ >GJ-S֍<8/N,UX 46.'ܝ[nH)fqֳin_ ػ w=d>s -u8`Jg>Et52gSHXw%{*>e?68PhZ$FLǵ3J+v=3Qvy_: :2\8(M/BvϹ pJ Dh&vks /.5Vmtoō3Gۋන 6ug:R+ns5/]r LqP)C,>;x Ax-Z>_ƾ[+R*+"{wmOd;4T!?nys 7l o>4|XdbG. <t[I9j*|\ZWypqO&aN.597͝hb~^yKz?Zn?{1ѣK~iV3_W]PK*Pd2<mda/man/predict.bruto.RdUT O^P^ux mSMo@+FHUm &֗V=*MO%Rv0[.X;n 3o{p-JPYۉ̒UW½o Rg$§OPƆ7JtU#) M'tP /Fï;8u@XVgcEs*)/3999" eW&+@I y]=ʼ._PICnAOjr^F9-8 a-Y$YPR5.(ٚ '̪ ,A9vd]~ y"MV,y^@i/( wQ |Rg eg^ 4ffxS:_5ΜnI&ܨ/s;Ynp5?y4 8r5C[8WdՋ(zg‘SxHYʗh"G?,"G7MF,,6g[x>fQF߹7,Ǖ:v׬f8q{'1WD4nZ'|66 # rٖYuX9PK*PTgXmda/man/gen.ridge.Rd~UT O^P^ux uT0+eV GH@ \^Ա;cgDx$^N\d4l TNAQ^$Lw[4K$F6D)a5m$>tkEij&cƱK`hbisճ}h";X~|/WۊSbט$<#85s fY<툛,t|+B C0˵HKe@:SD_'p-Dh E2L| *GU>:gvcMq$--6U!&sX1d%Q'  |A+#q1R]$q vpX [\GQ('6$O$| = _Vyr@Xi[T2͗?}.o(ej,B,+nfRA8Ot/`!(&JQ=[##TQmS^ ̥YBU#=F u}4G/y PK*PquIUmda/man/ESL.mixture.Rd~UT O^P^ux SMo@WzJ%iHo*H/HLdYlbe{k֏e}jg7_dizzK K5oa0qL\GP7fJt΀O{ `(![@P_Agr%"E5&zs$QOxqK}L)0]_Jq X7A(:áo)5Eu7Q4q2(SiPeEYD38 PK*Pz{W $mda/man/fda.RdUT O^P^ux Xms6_It'bٖI2k&v%L`PS U @Q3s v/>M!7j\Kwp]Z]TcUvosos%.KBx]|öTҦh2Cvrv=όԹTV}PzPTkEިAP7ZtSSgT:7ܠGnU ʑ-7R]8ٙ 7Inc#t%\i `ugҪT'n,uP"UbcٔN$d-c ܬU% K7.ZSU`z湵"d`Xr/ȋb+KUkYE?lRQ@?3`<|YAT7@Fc) eU"eE !$fz44N{I#v: Cэ~$$ ĄmI[񠫵.$>AFBQn[ Q1 #VV R 𯕍hxTz,l"]Ly# P,pnmBA "yLЊzL:k<6e?pLֺPߥƖ11k n;$j|i,|STIu^KH8ޔ[B qxڬ( \W1m6ҺՀ ³[[W[*'|NV[V5 [QBK(FP8 4~|9 N +5`J2!h"P*{nUUQx;t*b@?gʏb1La>GTmy)$ b}v8[Vyt[,z.%ڰџGۉ|O0q8s$$( q7J(8Nq%`b!FSUp!x2ȸFSW|_AN@#; ҙ7pO@'k͆Ie4Qj<]`riaOo/1i*K f'D6OrIjrDm%?PIEJElfhkOȖ+[t*P} <f/΂՗zu KT3I>@=m̎ s`iYH[?(VJcm&[ +dS " d1پ?W',4z0 ,_K[>#Sk&~3VPR:$(aJfknPْFT)':]׫nUtEQUm!? 7hqJĪ:z ."߷%F`˕/p&a~䫔%LV[nA3X#.Ja \իrT$(f'R.ET4d!4akrH':!)!;gkaֿd>ַ,4 $wYlx O1gj#.Ʉ^:ZUYM摃{'~~Dx X0\Ѡ! 4INK[o9G'u8ډG%UeCB//nGcU=pB3"F3l)Fr:yuFl ēW:/ r~z<='Xųl8t~>[¯|uz>M$1r3U?<v}~.;?Q.f_@n.d~ o }Hf$}XeD;*;EKwMxxz>o|4PK*PPmda/man/bruto.RdUT O^P^ux W66km=v(D*$k7CYB7o3oVmtAUFS4 +IY) ͣۦ2V\+ZYVK roF`BO0>, j"kMFEY+]EЕ·O=TF?qu5]-Erh}u|\0;z-w1PPM[k`@"z'Wź795^&N.y4|ڊ5[08gͻ$"?*D;m6Ì7ğV'r\onoWµG T m͇ÇV!LƴJ~r5N%b7^#lx]p|'`qjt)~Wj+\B8q;( T*HV 6O}N (;ň}Z.lg{ıRPLDgms' tq1km^WJ3* M`+<.K;Vncr$XY͂S&qu9wnXs*~ҊsLt{>8JgKg=w)H/yұ\!nb9ƔF@ulq@⻆*TՁ 7!ZcAa w5:n]zTU+RC5BaNzrĊ)![ =6@|B#B!?!@o!]>Kmr8O!@\Czº簫ڵV( 59HLB(*Cȕ4;=j0"Wa] Fˮ_MI6kiy" (:L_D{P")QXTΐ붳h[?qVT!-c;[5<^>Uڡ]/yƏ+5<Zͥ>.e7m~{UYW3<ט;Py7>%@!5m?~a_d˧W2B'CR@n*UE\ڒ4zzy=}v~~.Mz*ɓ'p4v&Ygl!nzۆͥ4du.Yl~=njVh$Fq|H81'v}tjŷxyy'/1/IkPK*P#^mda/man/laplacian.Rd~UT O^P^ux }jA )tQH)56P6%P;Pv䵚wf֎Wnj4:;X2ߘ5޵X2ƿN$N2&9i  >@S59UA >-UB 2*icR)#d&oa^zCmEnTiLr_.D-_GE'Pz#? 'CT.׳*jHխftPҒk) w gGȇ߁66ix<uWӟ3.tN`r 5$JMpd+ש^,|Wgf-![apCX-H 2ps1F6a-LHhRƔ=ZmH>kl?cqܡQ"Z>Į7ԉ{:swL!-}רGMfʽB}eݩ i7D,0!xe9HBAI ZQ QK^3@ J 6$)lRnHFeVAҝy t6Xv4k5#5;q)%`J2|e6Z`\aLL~bB'cFOG"ѷ=eppٻ ]nD+PK*Pk]Xmda/man/ESL.mixture.RdUT O^P^ux Sn0 +sv0 k/za,&&*K$. G*lú||64ݖ  4-2b 4`Z} \Xjȥ~w Z% B *pػqTC  j `(!{@М/xQ.O.%#E &9*̶^ei-玴RiDZ+62\%b9`g,<& Oh;Y|TIoΊGֿ{v71k+!9i)ϋe -'7y )tt<]852:8ϒjf_3swD& ,Ow3E2Z}QGGʛi'P{)V&ˋ>R>Ś:.[IX?&Ӡ+s ewm> |XwuJj}:)tuVZI5MT~R?PK*PJmmda/man/coef.fda.RdUT O^P^ux uSKo0 W24 VC؆ +}l [=Io)gp׬[=HJUa3ij IWL:5vٍwu[!H,0xeWc3*OHvqmdWLT)B;JԊ=}裸QCQN%WUk h>i1}QTTI3aD2"xIEGE& z:ąxTeՂQV̶\YHȍ+G2+KB.ՖCXۗˠvDmtqzquFmMj7o^DRݵ-ኂ'C .Pr?Myc'' }Eu_^pvy.׳b:ɒ 2;Z$#M]dH/,cQEbDrx;>b4:$ bp$CwD nsh>x/>&NLq k1N/sXneUfe5'~cm( f-/AZ2t2?]NVAQZ``eL Mh2sßbS A+y%B  ;̺[iNJFlGE RYgV,`,A]A;Jb%! lNG5tZB鈡{I$YtفPP} nK^?Rюsbp0v0&ma/ έ- @ȩ# D.2 ,{w [h傢Xľ g;t#D;->= j="!%s L]i@M]5ǰUه$&1sV{ 5CɃSΟ)J#Ο1ۑp֜ސTIуɝɜd]hʫ:zâ:4 hq+a\091Jhtc!9ݩ};}feUy|FCz!`Myp‚5;iVos7 3lQ\LWy1pIbJe&BW "6*`-O%'a22C6^"HZWnlT@6H!.  >giMBb>>>3Ry^lӤ #r᪍-r@W{'1URrAs|9! I(['<ڦ5AF[SwYZJ W(h_IRMtUV5  A (S5X/49a|qLV mՈK*6Xr|9jeϚn j!)YjuԽ**{[pn?=\̾tLX7J 9'S)_{*F0$x $puj,hS=%3LU1GkI"r=vR\ We-PF ),M׼\D) ܐUja]`{drEP5V'4 쵳W߄61Xh4$UY͉ CA|-M]'ߌZȎ e:UK6n"m[hjlgc/\U 4G=9N!?_PrYz6 s*-1Z#ӮYgNYEr Iɾ6B֐ #+No+G>Ќfϰ9/?BlGa7$(*!*)N`G˶ aCRPev|#u/ߗqسջv S,ys]9u:CT -xRWP$*ZF#ކ/h3zeaǺÑƱBb@RWHy>BL섐yqay B\ .\i ePtSD5㧽{ *w)4_,mt B]: bU!YVU߉mYG pL؛) ;3 ߧnI6Pr)ȸXZ./xSFM5Yh1:~퓴kt\!иM-Ho?(rUSowe&O R1"z-1L=_@yc#V^*aR-| {^XQ0ijP"(Y異m+Gm⢤`ÎjZ.C 8Nnuw)11N5u5n3% r'I;]8!7w`f$lm[o"i{˷벆t%Ucgid zt-ei WJ\4ɓInpgmlʚM',DJ8/HQIH液!|`Kg8(+W|- :YFY?ֿD̮77o{\g){ݗ/*=L0e= wߐk`vϦsFg>S茟7{>܌IuyAiyfHR<#}7?'+Wx|UM_ *Etzj$G/29U$C]j;'YߏrjxCwĽ?W-5º}V ukq~ҏYf}z4ZsL1~}5Y.u=t:N{=Ðnc=z-~m>u\eG{ޗ)_)6 l9QJ_ 脜i{K4FXte[ʢs@CdpE"=8g8WddydFα;α✞c%-Am?.0v ],T.h;/g])K]v]^kAw\c%JLIcgK9˽G胨̉-h4FRYaw3RlI;X RcvA$d];#=HKqI;.I,RH]Lj TӥrMd>8'I%H m&\ޓkQ9evjܛfطB"Cy4n%Mgtv6Xu)W:*ԡꈞ7=j߈&?(ݤA/&PK*PDWmda/man/polyreg.RdUT O^P^ux mRn0 +x)0$բhHtCпv@؀(>G>aɎ\4\ٰ[bO( ;hKVclYT-3^V>Bʆ:LŢ90p*AO0gx,R ?^~J5qN*tCq K|m8s|)'GMOѰ9Nh^NL,ХYj׃h"l4j r~ܮC![uB!č'h(mzVN8eG3`£NO.!x;kh)k+28iuDT6R3,q&#޾VO_DAzPK*Plu^ f mda/man/mda.RdUT O^P^ux uYYsF~篘+rdIINz<$D VHb>|*^ld.+]S7R:Wn*%h^ūBG-VeZ4",/rN1ܘjr,2Y6u.UOXԦLUaqXҎqVX<(زWdcqT9Vx+Vc)36 U[HOd6)Adt9IRTʖ e 6 qɀXBemeגyz'e l U*>庸DݑT-unGSsgw3:\$0>-Ŷ/AVZrt8]NAQZe``L Mۨh2s˟bS AE%B  ;S˴~*#v lZh+a,A]CQ8Jb%! lOtG5tZA鈡{I$YtفPP} n+^?2DȹpjPD@c;MJ6[Ұ6F닄Xm THB=KEa2ϟp]Öj7Z$ªRYD1BtcB!#rhP04nU ;_}Hl h[mIӎ_X<'k5X3<8})ߚ ;BZñ쀳 *,DLL%eM3P^]5 $d$9ĭqlX(EB ~2!=}Rrw]+ʪ;B((k c}?zX-h0D"2ΰeeVrs]GdH"acĊMF(BDxN:۬$(5XlyoZ1\ya 9{r\έr޴SyIJ,h[,2k ͠J'AK>%fG4c0x[ܡ[[qK$ zȈ+Jm E6f* єH̅tn†YyEa{Цjl&gc/\U 4G=N!?_PrYz6 s,1Z#ӮYg$w"T4d_5rȺ䊠NJ+o4cĭ3lN&ˏ7LE5dT%EJ?p669, U/wn :e\8,FR4KN5jh릂5ȥKL^uرnO88VHLv8q_ꊓ#dN7 t~pPNb'<;~vvVtHd"%- v,DVPgYU'weK ᘲ7S%Rvfd=@Owݒl4!4rRqV]^ R.22jb$~퓴kt\!ФKHo=(rUlwe&O R1"z-1\=_@yc<ꮜbA :딧̬:ʌ:*ILQ*\ RSW Dި7|2.^đӮFW cӔZ7]mwbQwˆ#C+_*aR| {^XQ0ijP"(Yek+Gk⢤`KaG5n  KwL_㠒XwGJ̬Ͱ&SCZtT3x!hw7{ n~qcV7 a)$Py]d%;Y0ҡދL͗k ҠJG"0m]A"[v5l<]Hn zU=_VTߡƪsT|4ZA% MTYE;~2Q>.lpMYD6Ii|ӟSgs9+Hϟ1:VK*~%+ȾfNXon.⟯n_bW3 >-^|=P>c1L}9& {8o5c $:g N'|O3~BH5EShLOPoo'?≤.{v>_h.'& x7?؁+Wcz'K*(QA]Uvq,XRUY]=J؜J 't6V_b^Do H~$/ݰ{_oBR\|w~?{4>*} 0~s=].u3l6݋wȐ^Ď`R,ڻPR޳*S3:m(>@r&ty)9h``˶K瀆|,3SszͯMHF?x>w gXbl jKP[.K]bc˔%b%v^ᬫ1vkƮkP{5 VB@ g$$`X>pX)q>ʂӺs{Nc4FR/Xa§TH9)`KqI]K1mY}Nϯzʝ椈W$)f~Mi e~cDI ovNx\Jb$6SG5(9TԤ7G>EfBy4nEG}WO?ѝH@Km\lSB#/IvAMqP|h|r>PK*P7= mda/man/predict.mda.RdUT O^P^ux mVM6 WSHO0۽v1Xl/=遶X;Jr2g>N#DbM]I"kFc9: A/~'MZ[Z4G(&jg @r@[(Bc)$~8m#uCMrj*O["f`0bPgtM60p ŰHǖ-1HaC(ua8ט #+]TF0'~/ܷ"@hUi޴U5ާq/TO=lؚKw-(JE:O5FUHz) 7춵.sSk4 TBPs4W9ym꧰qxOmGCyI9訥N"2h j$ǻ&9Y!J dQm[A f@HAPKzOC٣I'ݐ H2R1g]*EI,uc5\.夤9 r,N90\9AZ,\8} x2@5w$ˌ`1kG?`. W$ qEOx^__$l=WF R!9aXKB)/d|e5xc" 5d̄iZ GB;,Tvoxʞ 0vk tpTڱ߹StZsl.bũdžR=7bƟ;Ì:2,(Y(MoZet=јhmzູ-5g7}?}q̅ 7WFx~63iӽ7FZE˻\Fywј&}gL6 q1=_b~lxi yg2XЇtZO; 0=p#+μc'.gUW ᛳ'q_?_fqPK*Pc Dmda/man/predict.fda.Rd~UT O^P^ux eUKo6W [v&ٶm,r{ckTIʱ!3$?"65曧+jkOJqVMh4+YPd0>:!Cu--cЁMv0ںU GJg7wxq )j|8M eEqK SNe,ҫˆcM^;_,a&x7 cVKj3Jע|RdnM7F_'`׭.T#Js?PiN0-1@-K2RgN$icOK$7L1qkTSRK=z̤!su^dH $P #å8%QYJ5MWwjC" 'VG_rќ,9c\MmH%YT f0CcN- کk3%#IcHy~y6jÑEv: K=wڊR80sgm9wjgS=s ?sƄglaW͡q2E"<Gk!\ZBK5 ϩl1w͉r4_!lzx )6d7gLCgݺ(GaA-hw;]׬0= Nvī]snc9,ڑhKAtŕBJWvȹ|{:Vxx{{ݤLUCjeާvE+R_n)Nk*ey'P{Ok?Λ\؏p/}%_JJdoE oJ>'<3mj֪0_ n<ڨU*|8KoX im l;#:Tf}Qs9nV3v=?$tLhUBSBxvuc.*KMrWU-}K܄֙ ~TmJmgktVQBm:nJ $m F#>4R8+g2Uxr\rw+zR]4It7%'R6^ϊ6]4OFőֺZgKFPR,幢Aou^ЩɏRLٔ eA -<ӹBxZM1٧4Yۦh\L).bl_ZMz@W5sJJwsS챡O]7H&bμ,onβ$GQ&N#:mL4e͊6*}:G+㎚u Sۇ_ڝ`<߈}*\_:%7(m8f9%] `KU]`sMֵ#L'ul12%[G^ Qi8EpT9?Yi&&Y{iڼB#RpR=2/ ;9K_!Z+nbguS]Q}<+AI,:@L-8Kᅮ?=ox吙Uh"#X #@Al`S)hX|gePŝ]Nx@7dB$Լ.R})}g0Ī cH>C'ɞ/; xRv>w~1W>#,4) ho,,tn$kr&:ЙI iV8MI4aƼ41]fʵ FہxCcal"Kd=:4>lVk{L/f>{S{bƕ e/w, n(: e`1^Jk\` x͎ n1}Ԓ3/"RM3jOvn8_]n{UUűr-,P$t ~85;!W  5ZKj]%|W^~\k[yO\z}Kï…9$Q~R6g7G 5Zn|\r= "|j6el,=Y:iޗLeCHy ijDbҟ$'u_P@Ւ:DF(r&lp*)Qq:f7Ƭ9:&c!{X,X.H"BBUyO"R<:y"mROV*0a~ ?m!h_v&YHIԏb;ՎÃc伍^ay7}Ul+PK*PJ!mda/tests/testthat/test_example.RUT O^P^ux Sn țJ n)pkzJzK*[WUyx^)*\af2|^9!]}/c灓(Wt^6^`2z.vr Яę"̒6A2YhNpUx.f9{LD oA`a >Zn|\r= "|j6el,=Y:iޗLeCHy ijDbҟ$'u_P@Ւ:DF(r&lp*)Qq:f7Ƭ9:&c!{X,X.H"BBUydqqjK->asoY?O'%=~؉d!%-R;Q>#T;z6[BVYN^!PK *P mda/tests/testthat/test_results/UT O^m^ux PK*Pm2~T~3mda/tests/testthat/test_results/mda-0.4-results.RDSUT O^O^ux Mcp&NmolXwl۶mN8ضdc~sSuz.h_|!4T::Q #$Gh$ s0%Ĩ "% *@"d =]ӭwރcmR]:gmI .*J9c82;}=jy #Yż_2b#B#BB*j~8gR0Id^*R{zm\ ;2xbѮXě"}ڍ#co.%[c'+-}>]+\q '_Dэ\/na Vk1 7Ȟu@Rl7OǮu.X)a%6Z s0A͘m|{x'Al t08WfūۜR!y>] Q\mVɖ u}^F̟Li1ehۇź ݝٖvh ?>D7I;9g}@ hMaQ99W!wԶiLZGskS:evbM\8Ŷs"\w(NuHph/#tK+~ <[{'J@¦TY-'?>m bH%mV6_ 7YHXS1Y7Q8oєT ? 3oxǔINqN&N=OѾ|Yy 78d^:D1iMm\F#{ (H_t "kNENV\/9G̪YA4 !  9g}m/.;u9i\J23GoO "\F6CX0Xw[~DB`uh[0ٗǕ y>MSZ캽Z8˂r=e(Eq\1 @[Ե١#EѰKqp-91@37kS[`KtђHϵ1d #3;_nk0:c'3q9Wu {R{,[%6uPҕnd4mv96Ia& u0wmQԷf;=sw+D&kM'ĈnTl )Ab-p|t.w Y [ݥBF"SS v~GvpjHgZA TXOkOvZAZXP<\Zvۄ᪫FySe\hW!Ujg2xq!at>O%V4\iP{D!V:g|W?4[ωL<ÆGz*A֦#O|RmKʃe]2|_l j ]kE9cIo'{5S ߪ<;%&֕^Ds25T[ /Pc7 8Kl0TAtCew+w?/nՊ2H 7/6"ZM72u{ _ۻ*\P._TN")`j2x% eO'b԰~s&=]~cbHM/EWңb }r "\p&!$lCMeS NȮ !)]wxY| ]-$8n#-7J!ڪPΠ%*wI&a rѝ 8MR^M*4#XsIbaTi0@q7Q-X^{ $_ڼ# so8g- rjQJj^*.Qj7bJz>ߠqJ7lbH[drVDwM)3 SVʀţ|I7{NOAh wڟ<"Da7U|d{aTiuqޮ%d+w,v_fW@_3Lu菘ʴ3=#|y+j~ kA3c#mfm>JuN'OQQcn@t>! iك?%`P%r'kEF-sX&j{S] ̏l݇q'B_K0hP[7ݪ"HSy5;o3Cmo›]<72bXX nsbژ傗K"*,ٮCD9m645 {?]G65a-=!qB(هF9bi%# Crv)nBoͷ&A6kYX\|-.goPgcS*9̎p>eax7&(l2"SħOg@qsp% "nfR%?3dzCg'kLj9𤪶Nv5 Vn7M+QyO=bɺPcШ)kO8&.ЦzSb UcE"\_U;V,ײ2gz#h^9 $Nn!^D[*a\d0Cwv]vSH1?em!67ëcNhbJ/Zs:Z w}cZ_Pr"⌁KJTґo{}ɵ *G`w++ /g+%#>J@PܘπbDf< 682 80vNS6_[@=c-w`Ґb0d2;EQy<ݐl,#%>\7`'HJ݊kqB {wJg >\`bNL5Aa[nd/}~N?, kƓkXٸW{xjꅃ|7ȖFllVh.H[*@|!&&b$2`Y( zG/.:`xҶZ'b1{%43 ~mDjѵ6eq)4R#YQ{)iyE4g| ~svYpPw΅%QIq$3WZ iuk6A:d:TZ\mo8wĭ8}`JbEX^ @tf쨠rbcD2Ea{≗]6F6LH:VčkK;Zt?,r#WFKEqt|/Dŕ CNU2/ƄH:lmh)t68_$>vkiqI@^ ]{T?Sƫl,L vmJu%*!Dhz4<J;w80I/8&hmG]ѼNS l(ΰppz"`- ƙDu 2U󆳔EVӶĠGHx8ZIWt -<kdF{SFYE@Mu_4m໮3OPa5Tud}B, -[GeAdAHzDAO,w_uHM}I-NUM"o:ШʁÃbC}^QpTЃg J }q!aG<Ѱ3P{loLYe[YǢ*af@ĶϴЌ.k8plM5d'S|i)cpnKӴ %͙X^`/͇YW@)B/P3UgG8s_*k]dG]z}ti*Or ow3e1r%Z:ҷ05ܒQ~ (3_zE줣M06'[*Zd*Nu YhM K Aa',[Lw[}|0['o`Y&1:e3#aa}ձu`iQ+119,YӖ xWy0> yH)O#"z8ǽ:%/~.*30K]?V ][;Y'i6OemWG5?. $&n][dA𢹻WǔXtu+$՜jy%*3wyڢ{V `!?)SuC?otDIwO|l=*V>.XZ' M1jkXjS)BGu]K`I!xz\bF?ĆR-n7ڤ0ps&@CnF%ć:g,v M-N߂[R2oEL^ח13K`OZ92_sk#rr^,e-G;^ǧ]2]Ƥ&wKR]F 'zs=fcZapy.JSh=E,Bw%?PN\oܰ{h]g66/5̹p-b%KNWj@Yk+Wۯ3f/KX:IӶ~:SbaNH^oCp< tF&KZZA417HD0t %H͛[ |pwbAn,K~`V=F$r$/ΘA~2fc0bw}q&\8t N8]7?i_,PkFr !>nҼŐw)s .*5%vOsu;_3&v'zQ^|$?axT&UTdE3޿\y ,r[ m4+ %m5)n۰͇F}X270>!x )݅\#kn-$I/zVL<2s99|?|պM.$PgyZ;a$gDxv_. ͆SžTP8`.W/%<}hkȓTar$^GY5t4Ev|)VY88FL >| (ʉwAF 0s]pGm(W,M OϏ^|,~]D蜋v/ad4Pi_I-fJP( 1D"zwu;YD Z-"[=GTs?棂 Ha^3 G%81@] b-yEW9Վ]%NTjL=#-=xrC!0.=زzJ&~^{/((P7J ,Pĉ<x4).4\Q|f !UF΅5n8-mF#eD\7. pZ׫b[WQy іm6_tg6Yn5Mȇ:4QyfP9꩜f5r}Ek:$ ZL0}(y;x jpܑ;V6?!֭FGfzc).*crTyyI,do,(oH:Esn{i/g>8:A#*H/,Ce0ٿ| $I#^>;,\tT@ԑ3D)Ppm H":BM f}v9^ssW6 *[/vaUnTnN>]y(%4o,`| EXxH0Z&XiY `3lcElb6qӈ!6+cÎ/BUd=BwcJ&MKwzIl{ #Egc'Ny 𺳐Eg/ m`YԽ- Kt+ HOC!B%MC W>xzd7)Eb¥T;tnzr*|HS`dn1vH ()Y'[9Ca7+n;Yht$%TޡzktehE#\-|2!׍]s^4z:rƺzcq7-@XqNJ$ |+5R9KD{I#(ѾOJm*ҹ@i3{8>IF_:nmcguZ#}6y(ƃ1M{Ddՠ;fYo'r~tva/ttk&<[iऐ65{IX|}\Pt<<84=qU\ߊ6ϙ XsrT x?@A0LN]LE"].uU\.Vq,Hzf󲰨,i W#;{w㩌\dՐ ld8әg] >߂?րy~m8u-cߊ|E7Z?;sӓ$x$}VeyF/82Xi.H`f !bs _qcYSYztĢ#az[@rX( REk'>_&+ w/?)FV/U? kCs~fK|At(>>8v'UtC8i .qEX \@g{sm"oWxENҢvؔH_!`yO՟>ukK]̋(}&юL^g S Rvexl]M"FiZRH̾Q[v+g홍%4_tGȾ|>WYaGyທbj]Wp' k ߠhtvJIzyRuExBO>]w+_ G|-= ut<.N.}/{By3+UGf#Fm#8; $ ,5b1n0OBU +25ךhű,!gyHSeG Z1*\i]oRNکk@ٝw&{?s'ͪnߛx>"p:OVϓTEoxgeuPE#~P8V=έ%|4E 6it=.⤣]/zɛ>n=A1H+NNjh2;_h&t)f" 'O"%.+:(cͲ0Tisl+FfHU%}zN O\( vK g %В<5"ccg1*@MJ5Y=MBx}7 E\H\%y~5 & aQ|z]4Sv!5:ۦb,\D)1Y*N{a\ U q hb?.fZcl$V߄ٴ1}ŧcSWC;Zm܌HbP2)?(Q+YO skZ0aBYIaYYvs4PXeN\)$&ĨT%c-6'^8+Bz)%xr=(a, oNyܺAzZw?"CyMw_[ʫj~ ذ8haoJC6AZXIN (y {r(!3AXR w ,#Ec\"s)z1S.9bsV "FUN7>Ysu廤nxaټg(sa9@]²N"$Wd'p !㑎d@O?;pJVU>_[䈠惪TI_7+lp:y+]yµEOT}p`S9>4_\ I+MFGП zv Q+$,9E1X30 ϮiFVKuUz+KbO8ʙs [F9$"TXVT"1%̝A۵$5s y /x׎KBmd~qu[r}B^&Dd ":9Ίߥ 8isE4'Rhy.%AEIXaA J&jmY6L]k <+ 8z,mSӰϗ k,{U[A rEO0PQODCON':JUW4ƨu ]1g >fC1 ( tv}s&u1|.f㈴GYG$Fk "0}3~1 !膭:eQG ㄿ뛊t(Bad@5B*XTOU-t_J^䃻M[~w@9O* I|?%ԃ  5utE'R$wBrfWBE\pZ |:{ƅ {BĴ5/"oCGGW:_t5h8[Wo\ ´p2BmLANKK!O?NXG :dZxsjI(d[9/l~rJ۵6qo.̠  AzV~/J bJF#gSLn->1oq3HR706/m[k<ˉ6_3⩣a)G3{W:-)ڋI)!HY[ȇ:܍ `XUăSpɹSix$Qo^RrC(_in3V!@eAO%ѿ惰9"B랻bշ&y,2n ͢= DTy!/,]UB=P;sŌ9$kgfw#=,m76dK۝%ӈ.GƿK7L;\0lR7Rǽoo;'o?#>G Fu.l"V@0 '*,8ݞ]49^{@#vICi)¾X*dD ^&kVhGhLV!\;%`&Ww~yK>twrMm% ֝uuA\Fzn!$?ީ4V?xhNLPyp7t}&a@ 0{'hQq+%wej("?| ֖@@h;{ _p&It`8FiۿeP<.X_ݟNR\^j>5_#MnдxDfZ'Ft9` <sW79$o&HzO2GJi-.JZ8(6\1>=۠<m{ZZiRrO̍.[1Үם3걱ֈ~IzxM33.p.4 ҭW3 LVqMW:?`n 645K|+h2{rj!gD{ v\o!ۼpH. L1ō.5> cUn9Qۗ$}/^p3\x5ǂf`6ݺ,x/;7jPK3qse}çwsRl˪!}Y'nuN&k߁{UtK.TmsMN}$Y 5 ȑian ٵB__DED^wClbXhwj.bb*51찕*_gj&nS[!D;847[/crKJwT%.Sw.l49'gO fI@iVg3AȰ_~S`K++ RոmJݶ̡&,E*goKr^T GmAq D"Bd_\2Tß{*$ 6֓[d|!_x*o.w݈.ۆJrZ}Ń4Lryk["D`˔'>,8 +{,g|"sdpZfn2׶B/!y"t:;& ~fI9wY}7ucrʪXyk6G*,>!Vi+Fc/kyG/O؟Wzeh9\5vYwqχ_U$@?*\CP{jAW,7P,B%D -cM'RA#2Az%-!oht"ZNoQkimxEpCkba`JX?L}%|mzv;B}Pwyhxr^=Τ:]Ƈ<6:["MnuPzjkc͜#k- ;|,_ V YQ9 5R! QTfWXXn3SڄBoz+__r: Uvu6]Cv]wJ(m\)/zuv/ӯ]ٗP|5?' _v3䗾I e{"nFezh6_N[-uR#ʫ}qsmo[2N_ڏ?mX^{kNSalT}@jX}eȬ)gjZ@Y'PY_\N5 zRZBh}\e+x]{6ߺŨ@0E%-*-t7B]MD99FC({i;2mL]SanhP5-p7;p; JJUOp 32MPBIc,?SB(`[ n͞jwd_.^6M =+hՒSh#L9=vNe?]t֋MM@rCy쵗 |MoB OBi+ݎKlVuʚ Mv(q3Mա?Bu4Q2?}qP.Y/.DyKx,ۊ ԥ >Z̵ ۳FNVw>=.:AZϏZ ZJ!9OYpJk,1bjbڡ@O׀8Ui > ԃܠ];vǹ [ln!/ e@4ι)S tG~?٘r4kvhRo@i|ElĊ nDщt8c?s;'m{kbA˓.V`\NK*B[ J0q6,?9KN [%$*?:Yc]e˚N|cS+RE}'b^ZT0߭q` EYMoKDH}=V^H~z#2=qJA-%h5ڽɰY[B&ZxX +;aq^$Ǥj9E2ϩ7 8u'bk\UŃ3FCwO&~f᭑-b=%,3"JTp*-S 49ASMvC_liêH-ʼn8Jڡ\;_ȶ;Owpٷ^t^xoKJ?B#Cs$ZN¥9}F3|++e`v$K]rQsJ2g!yHQ}Vĝ}ŏx/=3&x[tMx@::u0o`+!v+ԆD^Bh4{4tJ?L*1l/4 oe!-\6C݂QIA~MJ gu@ \_MxT8K^kX)Q"43եt6#7kU` cn}evyc.3Cak~jÂBZ6"-.I@PtmM};Z1܄wPaNAzY[v#b: rtEx . Ϋq-v-5pa\41=jD f3{+{(܍h'*9]EjKx:FydlCez7Xt$vi~Zθzb0BkY ./sdzԐ;!?NU ۫MSv}Dx9>ɸW:Q?i p8` 4f$돁Q Ɗ8h@WwČs'ӹ ?Bv{;|HhaOw{0oIOo0,0v-4X["̡15Y[ר1/RAAb۳٬%_^m )jJ)vx?) ?2rRam?)HI _kD8!h B޻6MHv|; G}mT蘪dc i<14F,no|ib6Z]DA8 < {xF@#y {ɇiܵEz6rs%D'FEA~9@Qjz5`ħ{~`HQ.ÞWQ7[( r{l='ixBzW` dvq @3NXWK_ƗBn8ߓǩ8p7\./^< y䍜cD}IL ܍v7G{`>QmAv66D٧U*~rϢ b)siqVDphv]] j^B.SpiDł$~3|×e>d+Q EGXOЮȱrOs}yzz,|,ժQۡ٥dLrpLE%kE!5~a')(EtU^<=N߳mD9qzKz:TBQS1&Q$j1J^ &N \c=)UEG_^Ǚ|J̢%\>(BT(;xx)ڋR3U|WC%-<4J/ѰSt]5QWZʱBMNcHʹB`{5H̝N$ScVĵ[7c⽾dZ@otYad nt8F[+lCR) ~ cզ3zE"J7Y;:D@J H_Nd$K&)V# NFdJkRMmph gohC3`Q;^IH`|<. jօ0".ȋU huw>q?ғ'q qNʭ"[ ArCٕW/~f7ȐZrWMe 8r[Emaa]|'hW|{93$VIƑB\K i&T\J">xp?WKMºQ)~ؠ(V,>;@kN[w^|E[tX1,譔8B϶rH΢(XyyL|7sKq86-9?xK/?v_0؊C-6_;)%SItKMװBïx$Gf7`'ky-renlqgUs諱Ӟ}Sg(oFbaa!0NJo4 n䜇`3!Q&_=̛ |w(ՅIe=zdcG5~~KaZl$Pq[ر.^Q9l4e[tvT٭'YgIv䁒}XJ%\Oڑ&M핈a"+(wg ~N\ ÿW?|'[Y=t:T;i&^ utC>7\"2Qphۇuس x=b^|,7vL8(y̙ 4#nչwVu?[(o-<!CFc bw=q+}:#ٜ;<܂bZIuv=z=S\$kzo36l|=վzzSRm38]i d}-*m*-\t$Ǐ;;wf^>JeORLLbkƔT\mœEq ~Xy 99NwY{q~a3_?Ǽ=$;#ցuŠpb vr S${5uN:iDN<>9 A˔P뾜|4]|'B]p~ڂ=#Z-#}3%|*!suxdK U=34u%@hs8R=p|AQ hFrb3 ;%XܱT78oZtL3UuztHٽr-Ǡ Sx(pۇNW{rCYd j*pP*tyU;=x_靓[{~`-EFYwݼV# n 4X{A*sba%{URKb,D=AFR'h6Y][oj+]yߊ@gE!=CAOOKѧQ Mɠg]] 1w-Z0NZXlWF[P*fE `)ku'Ȝ//-:yB^C} F{WEѽF%Bl!GVF0%$Pb'K=E*&<3 *CN!gpǫa/_D{QHl[ ĹaQg#$z io% QP`oNOrUɸ)saD$0]1Go|{(jo~ڪJם,_(<2 b_̷%[2{{n7 2U[&\]9Sx?;9>(Oz0jNa]H"d_?צOr: #YyATW绳1αx`C+/Um^P{jy]J}6N{ΏJ14uF*偏_"x6\ճ s{j{k{L*Ln)#x6GP>b"jc:fRdsRnڶVosGdECZ?wXK峽r\ Hv|DoY4PWm@tPrwIb<KRhEC}01Q\}bˋt7#^z!|Apf%Ī_LLdӘ ؼ+ ʄ?]Aܝ=aeVXr'*nB8LY !#6m[Y#vIBԒ 0k-oʠ`z+)ySDdJ5P0L?h BN@INV?L&%/[ONĦ fch).OD::vn靄m"Bx2`Fzgi+~ðWWbY< %kOS|ߠ8u޿pO,O=c>x3]aӺfsJph#:[dO|!S&TIM˅ÝHzbxԂ셙 'FFƫ )Yr㾽͏z*Fw$yh쫕:,Œ])hma28:WP+ {~FŰCQG^+D):F3F=vuM| A]]ϳZXPJ]<%jǍ EcB<(cL&_FÀIĐмT<{y{Σb89/'&NT؃}{t w_9cYD |Tm;ȲO6;[-/^%}]̱8iZjJz+/n^@^T=.vѬFb*w|H.~6ߺ{y ;l6ٖ"侽_Hg ~o~nOz+ uy{Yħv{^mCޕ$>\C-wuڰɾC+;66&z[&DY)4` Ff˲ѝ6]?܏>4>CKswKGQc~]%|fpS3v}C,)#7>*9czzQL6"B7-=-+fܪPap/|;Y,8M >[>;s{HEZ[p%5}iD-߿ dAޣ`)/w!ϻÿ8ɯd#01ؿR|f Hң]0+Ȯu>^de̗mX :ng=|OՖ5&Lber햰 A/]+߮uWqi@~``g#@ڸt/;nU6׻uIRq+? jlr>K @-}mdT3xKw|ZHIWj_b22q>, %:*Sˬh] ۗ30upBGK7`LUz* ʣ h~gl&no"OKYN 22xD%oY>i*`U[Z{73R-X M2;Vz5܆cF4dt_,g}3li)ҚүY\Q |93#ͼmsO4a#q(YScp="F>"G┨pQs8vTD75ZXiK-oeE1!" U*"c+;_5 -sT oyAlY}!ޘDL+˔U( ޟYXF~E:sLMDH[ˌy,/e,t[٣gୡ,]>6f_T A* ٹNVPfN3lr21r-/mHgu/[޹UW5*EhA?@/SZ?׌2?Q9:>)?*hJ-Jޛl @Ç b|G5PɧC;jai~d=z?ܟcS Nda@y?Aj f]-ܪCm'ґ{#yКRp@w/L8W-Qi3wnH Med @aa|fw . 3W'֑lhߋ&W0Nu\L|0/%v_K:7}jm$C[[T8oƌ j9{}p[[[&4t GSn$qBzc\tș\k'@ᡓmGDZbT:2DU(4.9#8uT?K^o|#FP?t] #/XXWƳ[L-K1c(\-_7G.Fo2PĄܠA9MRDuwűkf5BظָDJŔ.Go!S$)?r~Hp<+ hc =Tt yTpm`/ړːFÂh-L#toⶌYH-J|GY؅y%5h\ںz O6l5 tW8?HKzC~vjDaUq/#]sAo,,RlĶٵsiw 1:S9@o,"vNRϖ&'4*uo"qN&ڋws@U(=+l,F1};?H&'7!פ:\?Q_VK߈_=3 a>t B+p˶6؅ #Q$4 hTxga-Jb@O̮HVy#_߯V&¾\krjG:~s:'7 m}6IŏL"Huy6KQ $,3 ё ms6yspڻb=뼺35zQ-:k)UvlV&(lR/&K"#KAo\)i~};򪼄3??WD]ڻHi VްʨmJŴ(+Ƽr0t=(=G3~.'djϠ)v sBO\JOLWb6Eu^PqCI8;U@Z3](zbaC[a&ۗZtOAZ$Rm݄e!Kq#Q@Y[ңqF؏ = &]3 i&A1E3Z1{#]Ya䥏'!_ 27ٹ6[ӆS*UXȮ+u\g>X@t4Sφ,dR7zĕi6Ҙ0z0pWY+k*HK-7-6UrKrAwS]dgL/\5%6jqn aFWs}*HlCɴlGmIz:䆈Mi|BJ[wVk(j>g%u2mf7U\Y#,P d.Dd\[iO\X;ݤ_q|j9-WȧBkͅ$'-3{D1U3AQ4ӍԦQ|5b:gЖn$\"ci#ǝ=&ǰv# Q^j)Xg-oxAvVD`X2׎߇.ūlYsDL J9{zw(4.qe0T`B){x|32PGR*"ny@ޢ܍\OiAjhN[fVؓTE4&fn=IuC5PYGS`ߥįv;a0jTeAߪCk3Ȗ?d/li2M i"jK?ݹ>^?$~{tɛF;&;*"bs5Rs}e|F49lӘK6g|݌Y{v~ mǛ59^Y z}; tz(Z3J}9g;_d웶3o; "]9{zSy{ub{82a(oh%6zt0 (_IJZl` Q~Rf>[c{;rRNUFCHK^Tb~GKT۱̯FZ4jtMtplqR%} 7M qW!+ :̚AḪ?OL uC)dkHB-qԽy))]1ԑw?ch34Wr}?Q Uӟ.>0}()5LrXbpIo ek ?&2} ɸN1l1|鑜av|:oۦz `h-Dwiur֛|zʈU.{Ι}ןvM{}0SZ֤@ONL!4nڏ:tVh^, txmIwc<}_ cl՗9+/jKQQ\orˑY?qvl?K4Tߴ>djOTz5Z׾;Q()/2KWv{pdcbQ @$>W<˸iNyZpIa3|y9<1C0@M%J%##0ݘKnFaѤf,} ɳ_P[Ƙ)D01jYw){{ ]@n̸nQ^ W} >(dgb`gb@[ul@71;+O `T~ sqZ3B!0` {}XS1$~d"qD"!l+ +mzZug#v TMO)[^d]U@pDp̈)x0DZa1I]YERǏJ!h|kFWngD[".~84];jU@kT=;_Kdmq1^ˍ?Wj@ߟP]'OWX]YOwhȫKeҰq J$A\Kt)^;GkG?>O m˾Z%u[uEA-fOrC3&|I}s ,J2وj'=^{X.{`[h}M/qBK[_ChDL~? v$WwCEoG Ph)axܫ+)Z-.1-pV a-xڂ= /ب4Q+ +orG.XLww!=++N+GD!vǜ Ձ7( JÌvOif)+<`Gl8c^Xp qGǢ!J9ρup@꥞ -giz?BjᾑA IRM((s>O!\l<lom׋.&d+ WjGᣐf J fksWg*p24_B)taM.-u|R`&oRV=z״\T ٞ6[RDuSRDC9n߀zӢ-P/Lg:&/p }TB6 v4b{`<3m~ 5 ~Yq;CDٙDFAFTbur59!i4|1\Frg 6| xy|lOIU}oz2{iC1F&[敕.4/ KC6"]ࣹoiߓ1E7m]eDf i' ,ݯsNWP+s"i:pܓ1Ǫ ƫ4v·ha^Y 90Zǿzy̏@9^FQ JGr}L#/GZ׻N N)k/0h:q(LA4k ׼~èd_zn3p!.OYǥ-ݤ D[kTwFhT Z1x28=QQh=Cl+ۦF|9e:DżǏꁑ˫k5>sO 40ٝbL(^e$Op7`}?lx2Z p YZblð̗7X64eq y\_gqW68ELꔃ4xUM\ڮ[y!D L$x\B*)'m :cgH$C>m!tpE)p/u !|&)ePdikOkxϕ5m頌=!>qM Yڔk O$8,^GZ+]9MLSuGۻoρ:'pe#B1OS PK*P`++2mda/tests/testthat.RUT O^P^ux L*J,(I-.)H,ʁ$jrq3R5"J\PK *Pmda/R/UT O^m^ux PK*Pd.6=mda/R/confusion.RUT O^P^ux KK+-SJ+K.5RKt4BS}SK2S4a4PK*P+5 mda/R/mars.RUT O^P^ux n6_: 0Հ`H-ѶbYRI*Qwo"e%.6mt<D]IH61"edB *K`'oDVRoLlzv} o+Tu[@rJǛn|&$k,3u!.!,|:e,^`̶ bE-$׋[h,6 _BvSH^tp'D!X?(1BPd%Bqm`{ՂU[oRE%6r G'~wJ}ZJ2WvXiO8Ԫ3D.-0X7 bppU}eתp1'>dB !jjOA96'<[*<d63qCUzfuү!0h:BM4ml/+FZxbӞ*U|T]vrden!"cUwyutҷ8@d#ma|xIKGeBUN<S4۰bBẤw:9mpriU:Ƀ/ZG{啒feAcs %}Y;o'> QG9Uɦ }uc;IjYg8 ;e!2NꆰfTO-jN7boJnT5804k\a>B}.zs\A!bxTV80F“6:m =WzS.?2Pt13iCԪ(ߩw{Q:\~@i` 1-Ṻ 47[oDGj0QMGc݁_/gʩ 뢃Ym >?VabZo(% ݅E;9Ė2HX Un-hsjXm[j":\Kd{=zadd:d#Y"+XGtBp*{EҲklC(DV}Grٳۍ^ vpuІs]WA3* W#3{{3SxUtτIe!dKxKBxfL@HfPhz5r768dMtˏ{^nf.L"8\x93 믮0b;'8O&PK*P;=67mda/R/shrink.RUT O^P^ux +(VJ+K.SOJM.QT -NM-OP*+VPK*PV,mda/R/predict.mars.RUT O^P^ux ]] 9L^bP ZӻK;;_vRFKupC0L1;n!vܵV ȁ 7(7k,pČvݛTtcMƬ1C@ʐ}_8 BFre=-}mÙK Sh":G0pPK*Pl'Mmda/R/print.fda.RUT O^P^ux uRN0G H,,@a1 .&>WKd; 9'iRZqKw{I-htTE,%d?pYʆ:D RI ##U(3.G[# +}DeiyC_!EHgt-|(oU۾u69L#qk9O2]ڌ2mpjYHl1@c_tS`1IaMHZ9\(S:R=aĚ9sяT"3[nN&W÷*Br+R4<xqCۢ/CePK*PX4Wmda/R/polyreg.RUT O^P^ux eRR0 0؜ LlI ؉4qw{`}-: bT0)lM十 <*hu ꚣ׷gyK~25l ):$I'gyF$_SFV@71,UD8R $Ox&8eN_HA|OA\bƆP; <,edjMfզrȲ_PK*Pn1BRmda/R/transformPenalty.RUT O^P^ux }Tn0+A+Vc\dUP$&@Q2I-{'i93jYUFEOf'IJ@UЭ^O1D/a5)đ1a89b`!Sxh|gk0 tc-7KW oW5RWfX(PK*P͆7_mda/R/softmax.RUT O^P^ux UQMo Wx*EJKn;H !Y>h ?v=dtN'B>U @<1 e]@=ˡl":u[YNAI 8Q XCJ!чW2ie5MR-g:-^>HMV%]o-Y!%ݳk$E3or8S 6W+M׳L*~zuL0#[.̮Yֻqy|W&tHUѥtdhW{5N:y( `\o pͬyWG+ y^lEX65 ~myڨ 5~5(5/׬AUEWj$].;̦Q9mЙ>},HޞY//\/ cOXs5㑗wc6ԹV>|{R oaoϖow=[)0Y>u3  zO#$^TݧH'ԕhk8͝8Mu}x |qY`0<8i iw5#ؿ FODp}uwl?w37;ć-5x'nkMSζt%հaEmd_PK*P`mda/R/model.matrix.mars.RUT O^P^ux mR;o0+!"Uԡu2ǦP{@XQ|ᄏs'kӮ4x) ˨90)mK+@yϪ=lrh:@sߟ?_ D'MYcZ3#}{5'%By;G,ԁ ֺuWpzgSA]{U8fƩؙ=q(#TmH8P#}a ֱ W %8R%4)o¦f8?#fO}K㝐/0`4#%b[ʊj,9'8MVwyh#dFZXȏsxa `c K$8bY]U܅ň>:Ò5<)nhPK*P^@)Gmda/R/predict.polyreg.RUT O^P^ux M] 9 zl@`Mw1 !uv!ѵLށ [\WV >VQr,k^#f4GXRnVkY}C4_ڄ֎^`}m766x=ohDI^oUP3z"PK*P[9 mda/R/mspline.RUT O^P^ux VM0WPv%@êj{*^u%L6$ZD ތÛ\ Ȏ2is%ə 8Ԣ"!I2(5v_fP<By'qQ`x(6ٛ;B zָ3XY&,PklMVbUu~R6]ގM;%>#XĨ}Ge.]-rl <6a8l'mPp,W.7'*\v[\Ъ]Mr=A!r}t`m|"R-T2A}JKe=M;a:Z!D4unBл;3ܜhqe,N]u݅ Ї m8jlY+>"~E#;;sЇMЃ~7܊Wa'!x'չ82M^^Wc^CkѿCSe4|&uè>&9B.1/5PK*PYAfhmda/R/shrink.mda.RUT O^P^ux }VM6W¦v7f ^v7Zd@̈́$4(;RcA 9o>f$t|ɇ~2}P!t}}`ON#3#a 뺖]xԞP;3iMVK~!IRl[ƝQ@O#?Hb y͐e-94M[l8&gr1$o"4v,>q=IdEl8a-J:Hnw#~%fL)loJRu3WaEk+*]5M[Ϙjix]hAv[ݑW̵Yqq-lsK'(6ոp"86Ii*Sw%hE]ׇ@8!3Ei3%M3O]H6D}9ʗ͕d>d4s"O3~S#^w=mt4X͡wߤOM\a9⢄TdlJV).;g~ؒQUicb.,X1\Ubm^׊`D0.0~6=[(~VPK*PAmda/R/mda.fit.RUT O^P^ux }UMs6W4eڲ3=I&W4$,O&=]O}݇|]nM,魐B fqQB`v_C!X6{DqXkL6$XqWp?t74BBt}Z׷/vHYJ,9M(kݶt%imZ? j;$Mb$o^2$C'Uj_b|`y~%Aʻ[L:RkբK4Vr QcJ{Fgme lAO:DtqVO i1r:J8aiVb18X/՜/S)+Q6PV P0'Mȩt:DXPV"X]1(vr*8>22YPĵԁ]E2 ica]b:cn&Ʃ to|$| 6prgY t;@.-r/\9.~~<3[|_,~PK*P@ mda/R/laplacian.RUT O^P^ux Un0 y _*9CiUB(LQSBM{ vWnls[$;h @ϠG^oG GK숻 hjq#\qɵ>`;R0>2>x B3[Cug\) a5NJ\z%V-KNvLs69ILd +qܶEp݀Op+5 DSABȞGAW9Nz+jJ)X"BA i^;dΛ%ͻD`-KwV- S0cqyun,1 NԴuZ ߨ'!/PK*Psfmda/R/coef.fda.RUT O^P^ux }Pj0I@kiRd)BE,پs({eɱ[tItk/{G'x_ʲ́0 &L} zld"j4p呑 w<;yPߝ52N::8 h?S,ڴpͱ`iRmO|A4̬,JdYU'ePK*Po{mda/R/onAttach.RUT O^P^ux -0 D~)#LH,m6*MĝN@L{w}GU#kH<=&.7L,W{H<'aj bbI*vhoRj8MvPK*PY mda/R/bruto.RUT O^P^ux ]o6=j_-m.l>- KEdN,Q)ɞjx_<\WGY_/6@5g5CqX\-*ڊp_$Bu&1y|]iLkڧu[oj[?湉_4E|VloZ żXX32^Ti9x ` [|Qo1ǧڂoxBD/L=jPgW o F‘iFLsduLJћ7$sv5fȷ@yV8p0XЛ~߻x'P-ˬT6 CTh(oEQrI~eTK[yqb9#aCnhGY1,S*+ne5ضȞGH{*Hx740]-|S{Uغ7eH /X&{(ɿ صMS ͸[Qq0XV&hBWmm5zoY-K.RϢ+3ԪU^gsǞ]-'\#aONR%$:S lMg\IYGu<ՑJb { WV.:PFd=ߔ>1 dVVjjw2-W+GeQ<>"f|fO%A @797NNAH{^;E:C6,@@_2>bٍR^-8=Ql /logA.QZ+@]X U2uk)hFK?Ӟ'7 Z(;?A<1ihM#qR];긴vlNڃAwP'v} Sc%P瀩CPK*P|5 mda/R/mda.start.RUT O^P^ux uVn8WLO0-9Hrh89dND١*RjI`jy,)A>\-Z_rVUk>s*l#O~ k_Vrce1퐌De*S(f~2-4%?RJvipTA8#U 6=rv'};3~qsc sZf]c8e:^ AY'8Gwt%[U5zT:T ӣ'm=F)sPVO}uJT=AMy ԫ\!\sr%bPlK^T!8^tm5xp#>eq:6z7{S"9k.?AuTno DeCgig/f=KyRD-,0e"SpAV9)B8sξ:]oá000L AV9LמSi4ĺ3r/pb2,C9 m~錔ukّ'}֎Lww3`݆,u%gq /Y7Ca& 8Q3.߱t, sslw5cV]yk8uG7PiTm Ө}v-b.Z*Tdk*b [Z|Wn֬z2%lgXawЖڍ~a`/{9mv[zSPi>$yY;KؽvPK*P-E mda/R/pplot.RUT O^P^ux }QN0 TJt`PiR%):wEBdH=y ԸM dهh@? 듁N mۀT kc;6֮0-gn8qƣٽ9 ^8>cHM4"H.[/ )wLpgGS:IfcrGcd˿7ڞUnj_y0 ⴵ{(&vC[&G] Q_J}PK*PyB/9 mda/R/mda.RUT O^P^ux Wo6~߿‡r.IImFiio|`v6:C6׮`<3iK>^m+l;^rGVfͳɪA㨗,OAaό_F =++Ã`V[ؚ1Dg]To8ԝ(Q V[5N_U?X\і23Vۋ>0f,2pU؎^7σ5+gUm9 S_>=sd ³7dl;k-SYueWf&O+n7jKuեj\rmKx ô'`O01 HݼP=Ɇ⭔-23ހ=@vFǒʠL;3yԡ>qB8y]qBImW7tS|e#~r Cxu֤*LIٷĮ(P!Q9I2@Teǡh~î( v̍nwgoϣ#Ԭ"yf=ՠ[WVtiV1pg3Oэ){D Hؔ sʬȗ? ' A 5ܗ8(q8 ߤ1B y LWa?3aK:sə[W9`WDZ%;55$Tǧx(Eӥ6 >`3uZ$-QO`j@Odl!EwN2S͘-ӵjRՓ>;/דCM9t*ŞK~׌ʱ׋zGTM=Qw`9b{FW Bpm`oW]?ls҈ x1/oޝK./y$3kQ̤F.% ?5-ݼl6PK*Pxmda/R/meanPenalty.RUT O^P^ux ]jC! }P(l_azBrrSRK ؂'%zM]egb+-5CDjfnȓKh5'GNܓ>C<,2ZsqDD"6l;"e?k/ɲR5%<?"3nt.M}r`nU;yD8]>VV4af7PK*P|J tmda/R/pplot4.RUT O^P^ux mA 0E9ŧ ڮD\b 6!VHnBW{?8ydJ) D l!-숺kW@;ԵP.t GF5W~L7Yt[GrȳPK*P'b mda/R/plot.fda.RUT O^P^ux Un0+X U@nr@^ hYp+I'{-qPY޼Y82BznPSs7#4jm;yuw& *owjxS:N=: m] 6H2'=X\7!ܶmf`7?_d L1d~;pKy$n[bE5xq5PF-)va}UG,+JR c±r9.C)%\! %JϬt-U\2:_g˪;&ɢ(4hշ|-dQ_otr %!ehX;2KFTDOo,-Yv2LO>~and }<4ialbʯ=O[r[^'}aYq}l En/ڕlùk irUbo1ڄmk8apޠu XpČ> {tl 8UҊS"b!C= @юK$AΟaPs\ 5. &zia,gqFqT1ѰQ][T+%q|۹[Q>{ZgF"]: 8t^ON Q-w|#g7PK*PYk}jmda/R/kmeans.start.RUT O^P^ux }S=o0+v`8cQ !02$$x`hZBQ(j{_J-lZ-9vNrz=++מC7kZ?vEW6x`EYb]9" ~> ߕPv__,"2賀? .T5u}'αj`*i${Ub?aQ'BB14M1G`,tHak3{BN-i2j*`OoP7 ,mcz¨ 7 }z,4˼,k(˚?H/J>N]vPL‰7nwku`d+Y#R<="XsQ| %`+Lf&W+>+ܞ1H.31G&T=/qfJO>PK*P"=mda/R/confusion.default.RUT O^P^ux u=o wk&\TNQN@G|LQ{p&Udd!M `TL;-y!(khBuBB @=H_`5c\Q_*M>4^):vFB ހHP:062ZbLG8ÌD[-6E߷m0d>hBv%?dnB$0o; 7a obpb™SC}^:aʴ|RIJ)i8FA:79O _]S5ka9(cߛM\PK*P6.~mda/R/gen.ridge.RUT O^P^ux mS;o0 +XH⢙sCtj>.tkʮ zz! S'~H &x`U_41+AKGa/N@۶t!2gpss<*x0,8PA:#ilv/Y9O6-r.rC8>{ %-fs>1ȸ^q+Ƿ-amXO%\IkQb,hfT1p^:- .Nvʞ(0WM\!H(F58RnL /o$"K\#{KkUʝWA[DiR$5ȽuE,ډY׎i'U_ñ]"f`% k~Ad9&))$ ؝Y71>._>=PzJqT_dPdVڢDwF1_g]rkG=CKTVR6iPK*P}b=mda/R/lvq.start.RUT O^P^ux Tˮ0+F [2W-l) X\U, .MG73;m 4sufls<>z6: uSIZ,OuZ)d0ꪌeN웎?3MS=Td~Q86F~E,cy{Tj9١9yLfkOr8<)A.Pd'd6 !Yoط&GgDH֝j&GO85t V]3GGJ<{(o&T7A4~ X v^Q:"mk~1)(w*֜/u (KU:JNl', -w7 TZ>W61!հLMQ|  w.+R:5ݤ .PLRD\.PˠؔgI|ql<vtr5?3A|ib<@y״ߗOjޅ?pFT%6ńlc7b>wpy7J&I#uѢ{"Q%mL88j&L.(Uͤs/uzĦ.zPK*P+Z>mda/R/df.gold.RUT O^P^ux uO +^ no=yjLפY61߅BY -}*h :֭F}^݇mNvvG:VI_#>+olMAi&Et8k|ubgk!5t© ozN~eXkbc֭Hc 3ςQ@뵪u" h+ٕgk&"bQwѤD 4I(F:.!(FWJno<2aa<ȒzY(]mx7m0AtC"tIC),\s˳`cUpGFG͌Գ+<,aAqkjí(б#N]ޞb1sG'~,CfPK*P*_ mda/R/fda.RUT O^P^ux }Vr6 +jvQSם=dɓ#A[RHqf'^$&qE <jj%^oT^Ff)q%kU^@{qecU2FexF`x/nŵF/jz;(QMۡFq^, X6{biėWvEeYblVR]^7wR8e=_5*\iBY?qځɠdp*eb2$0魸F VPPWv0ӃWϳqF?]QaS9ub噍z$).FfB~}+|M}b(A+"-,Ura-3xV1何p0uhbea V*0lb"潘7n%x"Nr8}j߲.c\ه-*ix)b=7fMK%>(68RB`@A o^Z)ZC`-[0-^ Mr/^Yd=>261u>y.Xv!KH9(^f.>,J|,駫ND}It:S#M !,v걣SkUD|@&YF^G~b8ԇ'Gs&B*֗F.\!|g2B)5Y i@?p4zRavf+%-鼝*\#-":WuʅA!߲bq7D>NR'},;EFtj}ZϨǹz>bufe _U3ZpL! -XhQ9K1H7[Za&8\S#y>Moc8#SAD_>T7A(3;J3vO9)ӒK2ǞR܊g ks(ȸ(1c {%k{+-+3J.`4LQ*.Bp Bsa-0+h")JbY`q;sݯ}ׯ@`}nG~Ϛb3!Y7 }^,v3&bl喻K7%O]Vk/jC:_ ȍp1NGFD>MSaJl:/J6͖$.) s>NNRCHb8 [ky浇z@˵ {%"C:|^`>iEK{ .Jш\ SWXAH"FWkM%F U Q7L!+K!rqU$ ς<_Ɍr]s7?10+j/wG7A 7n-ƱSkzʃzDN7k.S+ KQy=OG}s9b>Dٻ%1u$3Aqb ^aBT5*VXA>8CGko$ң/ -㣊Aܱӎ*]=3bvޟr\4em-틌dmƫaR g@Q< O <X]@a/k2oqN. 1D pr;:A..B=qᾺppǮuulۮRN4xmͰodØK^oJm<0Qʕ\ʒ8ooo<> 8sĆK Mm2kWP+݄lkgA֍Zpy<543E쎝pɄWWCY֬[9mL}6ܦчDaߋu{.ƜOQ/ńUc}8@IA6zPK*P)@Dmda/R/confusion.fda.RUT O^P^ux E] =E({Pd1v8BaڮyJ_JI{g~~Ik 2?_hyg،V >j2RBFU%!/=ƫ&T_NpG+YvAu8[PU'!ytΕᨔ>J SK7PK*P+|mda/R/llmult.RUT O^P^ux 10{ 3J\P?Q9;[vgSΣW{ c%F_[BO\8KKX=kZ.}OpRrm(tr]i5PK*P7kmda/R/polybasis.RUT O^P^ux Vn0 +-6,v[{ P%%`˚Ί(r&ED|#ֻgjOjK.iUHZw9d+ KE;%՚\!g} ׄK?q9ѡD O̦R ^.&EL#(2U$*fQFOﺜc˯X$rOv$@0Ӈ[`k}*ԬiuL Vr<7q }x?$;rZvzfG!ӆ'PC`83 > _,+*b<bΒH(1$pz+^+pSD% g<4o-mc+Wj[ׄOU_a16ki\P6M9a. ~˲PK*Psv~mda/R/predict.gen.ridge.RUT O^P^ux =1 1E9.$s ŨVB m)@:gL!6C߷q=6"tQGp_³R9ܡ 'uB]FSG4Sh=Vfn -'`v "uH0`{= GCPCAz nNYƯH jzP9*YuC˦Ȍ>ꔐJ/05zش)xk+N!W"Nuhd=20â fTSK}x7!-gQkŸTXMgX*kL!5x3V/x IXT)Z^/yPMs\xʴxx|9<= PK*Pp mda/TODOUT O^P^ux A! E/51sҢ5@ ^fv{Kt*Wb߂)OHw٫pGC+"CсhY7C O?օ5ZE"#h:k"۲FBxX_YV9x̌o'kk2EznPK *PE mda/README.mdUT O^P^ux # mda PK*P:-qmda/DESCRIPTIONUT O^P^ux Umo@ _>HIdcVv- t^I,]tgBIb 3ؕZAɚ hwq8Qk2XuT rgBx]cX䴡9Vlw/~wby)Ƒ60 C ˇRۤYueew G- ;}M/nJ:z4b`5L{-]j GpX9GLF0O0y9Xuxxk2Yw TGipu {XfY!4gx,(cn!IWlx _qoܟL/L^M3|FQ, p`EWˮг8I],eyqYͨ@,Lrqq$aB5,Iyu ~T$ ~'?,u#N 1٧/?PK *P mda/inst/UT O^m^ux PK *Pmda/inst/ratfor/UT O^m^ux PK*P%!.mda/inst/ratfor/dorthreg.rUT O^P^ux ePn V{ +޻wJ %3ɴUBc8\1 <6ތdFj 1 &p lC/Pjm(.Nql;xBoPBk h &,ӓ B&R*J2p|"Ɍݷ?6|PxIƼT $si>$3rgxRK!aqMN9y6ge,n5~ 27 [?dɮׅ{53I=*`+Z)P_PK*P@Vmda/inst/ratfor/mspline.rUT O^P^ux [ȕL)"$d`Kj(CG7W ʼ,VUUA^g:Л,u۸#]zdY*_tUSD>p x+;uHnR$.Q-$LjMƪ(0<Χw.]$ty^_'Zf :V~ˤުm%ۤY{9jfv⌕}״‡3{jJZ٪O(Z奊Z+U2q  EyY}P nj 9l*Vg~i䚠:+S_0ɸN-.0?a*A, "pp=UviÞT@y~)ф#+8(Aq/svFzÃ<ܰÕ.ơ庢(9XB)f]Z&S,{tO`>R}TXdT>/?@P g`,!e5!-} l|bDZX\KEIC@ K5WQlee]_9CnM<~|x#m0oD"ÌOYLS*}7BȄA}b![bT0VӪ5B d(k_A~߁զF%BF.ZWjURҪϝϝ_eunA4CRH% .j|/VjD1'uo|/-wm-X.]G__9JQpd U+㙢g٠i/ >FǼL/Hla3$F`O@^k\C68:8:FXԝ#/_,ʔ(u2H.3FG Ld4 u1b!AXPΠ*73X xY{= EF݁jwU E Sk*K@E7(KHB]bvqK%3ᢺE\IVC:%M 0ř+ JB (퀋GLjE 0W~v()?Kπ*)>TX|c$94(^4:[gx泹 %炷 B \Cvq1X7t4Oz*7D=B.Q$5fqU=SuK 3C@e:HF՛6RQR"y(6015#do׾К&Gr!(Bn$ŊRa jifbWf!e` .!@tT N׼/*Tʝ-l63Gf'#&w!LPPjT*Á[۰K'{kA)-//!*s)S!XBgJ@zAs#c-G$ +2/ְQ{t<àieɜ.8Gٳz8SdgjCP0F=4XkUARR_x(} 2KeD 4Z YƴZ!(ZqH.DR*h ϦB( 4ŏ:WR dR֢Xz=(!c)Jx_BM%zboFv 1qx'!dI{iɴp);hgvz̆<Z~$iB! mZ;㑈 9tjl/f"n~Gp/=y812 v!il]hS raN9]v[n͎Ft8w=ap#˴ZK}=7~=\O߻7` 6] .a[ʻix3aa&Ў<2OG#}`;bL^{KHo֊IisjE#Шiq8`(<l P08[GR?6# !b6Nk53N۲$ 9%Z4Z:Boc4b[g@^W-|;oX 7=S=uOOs#l*+lvwz7o{„&Jsoig++;yrGoh6>N$LHXTYG)_2@c3#X<{z\3b9>^; >_| _H9hȻៃWLð;;-N.<-hZU|Qd/8{9n8oLߘP1~cjGͷg)_2]p 'Ձ~"D;~.JUO@]!$aI ã4_'D:c#B_+DʍQ |3;-X^Q&K9;!OwXOFq?v;fw2O~-B>I'P?uzj_*͠HTMꞭ!U{I$!85K%=-Ct/\͔,t0 {0`E A(&$ۄg9fc~0WM+z}ލy7pۇ 莤݀S`1x;zs<>MwƔ)lӨwbr]#Ѫ힊7HbmN- 5"iGx%3L"1.lK8w*ɲUԇs/mw*up"%'nJ: }L%G#m :0n46hS)U Gg`w''qފ_L4؟dMONQ4f&˙UF9pK*վk;oP' ,.`ޛj 9aKzmeAx9q鼟TcD*`1eN{37ۅߞK.աEw2HB+t/,a.,ِig50ZEKHע݉XZܲ~@Xq:$&:'1H^Md__}h4وw~Ȉ3Y##.>9(b#'Ԝsyw)ȍdpH"$ţpN=Г% @.iO $-^E?asf.? NjP]gSe(czcIu y @ǀ=P.!R$Kapщj̓fAg`ʔBˏ ꍶ2Oβ y؊;!#6g$Ymbox5rE"eGn+9x4=TȹɺSBN %?Xy8AZnQrτ8m̎ u1M:CQdޒo$ȼ*R3фo w<:H'?;%ke\rF}F_1)R%ٖȻJ0,6s"Ԧ` s̮ UOD+aoUf,lYc9+~&cA)b:Z?y„rol9YNhf]PzBK素f۸G)#9X_]`swsbIȷo$7k"$azê0[b+UK؈&华iq9~nGH3Wx .}wAH`/r;{-i,B'W_ 6gÃ00}ޘ*4$Vu,3N^aHd?wx AYW]F\w B!HMtNԝdwY7<:i&L<ަCw=}Mp6R_`wB/s|O! uT;}|9@{jgCbƒ8XR'k H|p#M~ZA bsU]3 Sq~F q~gq«~7?QE>bi)h Q 4C2.t%*@JGr|w>(ggɢ KIm=`TZcڣ~0;&t 5>7>'?fc9۠]Ϧ<ܙ]q7"@0P  dC,՛z{z]=T,L1>"a["]|>$xh/)k4^W R,1X #MDw^>!Â,qUİ}n},6 g@'u4ڥ D3peebo\iʧgVɇ="#ufhMLпE1҈  dk>>-Oɵo3_9>{ue!P {L͟=?8K-/8"l;9mH]m6 ڦ_^vym[?x e-cr>#I‡ϳ?Y3o,RvƄ:}ʈwD3$ $EUc¿rHv>6.[)nw=TgO(ymZx]lE78_eQ d,0 DOzXnngp1>3375Xlc/gpě\"-dz`G\| ;%?g27&ď,0\7_vLr8 TONk)Hsq 9(Ms߶<ٶmq{B3So{~¦JO!Ne6at\]֖68O~R-~(bqidެk\39N3[VE"8XI|*"'?@@M^}z"ENe>Me,ǀ18y&IIPK*P[Vmda/inst/ratfor/sknotl.rUT O^P^ux }n0?8R& IS?)Lb]WӲM{]aRl+真o ޒA"[qVNdb?sgj[GBg岟%oCTԜ1,HFt%..^$Iڶ zu=?ԃw]}1i+g'xjG{~ ]`27]3t9JE~Tu1N-FK]UYo:/awJopl9 k9N.RLr*([39/ŒaJU.#L[#kUL[dup̈́J%tV2a2Axձ-jw}-x5/V?5EIUK ]GBE+΄; KBDep0Lf4E*qw1 ,zr2Gb4bd5f~m$GһJA&b5H?0Zl뢟R c{>XNvʥLpR*:$$}§éo{Ro/*B z%P+*.R>/̤wbZދc3uZ'^8l~-Zx}%OW߬B(Rw -E"rrOAv2Kڌo =~rR4)R{]f7X PK*P#Omda/inst/ratfor/dmarss.rUT O^P^ux gZAP;iuul2n|39r˚Ƽ7j쳷^C2۵}li)6927ofs臼iW/܀^eFYdSf63YYk jljzܵKVYxSoQf?.ߦ<Ymt]6\kܚ?^=4yEU6ޘ?xQOvx;M}Ur=*6mg i7!n\NxJX5/Z@1 Ȃuẩj` h~;{MFBrh_ϺFUKAu|ȚћcIr.WY)"t^vsIj[:]V-!!h$|):;@ҹ{Q 6TZoy˅Zͧ@d"^|-@nE[k~Io:4Ll5+Am. !"yy*AOö_IW/yB7(sw#vbk17CE+2ث4ÑlPXiuN4mV*˃qW`hR#~4Ab#WOUՠ0O>duρ١QjF wbg/Y@2S"L4I(<)GPH)7J5S}lxժQ.6 (cЂ~@^L Lzpz /3!F{A x?8|ļ?Hٝ] b}Z50(CO 9%@՞VǺFulaȑ``!@ #2V֠ɤB-}Í|kn\?~nY$VNҀT@C?Q+N*F@ tb$/IkɍV`"F p<-/jՌ9)%tVgjK?]Ĝa>@˅&ϼ=4d\>}XFg?X=-E"P5({^WB@b`#b,a^ b^ݎD #p|T$ j*с:. #c Am{{W@; nT/AdDƢ|v/-iKKт4QpiOB"i"QnP;}'jQn=7ԮC3sxTq]usv v5e'SM w`1;uw嫎(BNƂ#l4O'nT@J3 aXpՏ @ʹ|Ԫ1'Z},An sswj8iISܫ 5L?d!b`RNQr#f-X%߬ <$w`wzl-Y&.mf6Ko'q_ܬ{,/5Jp$Hng' 0. Srb3UnybV6 Z~~W~7Ec^!L =CO.`=K'vBoFelb$~ %L`Dy HZLcۺq[׺exT~q_]kwM-t+%R U)(=rUu.S.U^j¬ֿN~#fROTL&wŐ4iѵ~? jQ i0CRˎy$xhh<ņON6"K9z@g#4L&'EٵBNp~ geԪ.ZX E:HA߮%)IKذ8uo9v$`:ϘO=:-[HeWQgʬ x\D!"c 0P6LI8&5T$KU1;jZQ;t0%Vz1Pm{x[扒ej= Sk(u4~f}1WaΆ3# =x%B;C~OF&{5l_ Κ12vv3AD,cdj9?)8.4}\+Lɘ19}a,'E=6Mb jP(ʞx9y21W[$m MӚ|<;RCy:!ft.•1+PBWK (ϳnfW+PY!p K-ed8Ui 3THGE1۵3$gYEa౵%zXH[L1 ٶރ*J >*`o:Ew^$HY=Q;Gg^'%ۘDNWgK/Z1'Nǰ<|gѴPg< eN)S) [;$M-  (BicL cݚq۳.H]yL"3Ŕbg<?l~L8V>#߿$y0 {EDAV+3D}CC M # s53,͌"/Q%Icu$9٢{vIGپKG_kf햧M4t`LI\' PMO^mNZͷYjԈ<9Nzs?lN-`Si|?gG{U?A*x-Tm Fڎ }0pZr (k?0;LRo c)^n.2ALFΛ7`tCb!`{Cu]Iع/(>&I[(y5Iνak'^!`k^)."жqXbvuA|.Őuޠ219n`=9~MidM1jcyH/n =p?a+ /J ݗGdB/Iv\, vlp{j%~GxqSt`D>6&AJKbC9Niqy)rЇg.nD`8b =|Cs Sz ;&} lvn*Xk0Y LJաT:k菡9l2NT%V F{2=4OZ6Q).6=@U吒|g3c6)C wS c1I] qM.`P`1&.Cf⒙.cpea (·߰NĀV7J` ] ¢wu:O& ?jrgXޢ3թ,/ ;a~c7.JKH:FFoc 3xe\IPM&Ȱ.1gGAo]Y*z a`LPD3N2-EX!y'L7Hj+di-0>WD.laoWav:N*?WfBƪ/<=WXWfvWE ]~/'H'2*&;*!`[Ė?Zyך$s8Hh% Y!`JƂeq%'g7&}l|}V#V[eD]fpiBs `}qZ8q:~x_pE PT 'w_()/RF2=gِ`$`wwyv("m{ yԓwjB*( Z9O+Ɩ&Ytm-S]%o^c%#%|姄4 oh(.]kx1ւg*k_tx1^ÿ>bjRNBVx.wxT%_\RZdtd̟a(o5l`~e$ 1{k4J먼*q|>aSm[`q& ɷCqBlbPu|y*g%{:ej=y\1WI$),ğ0Woo =;|?TƲSx]DcԹ ξ?jS*&?K|g|a]עy+`9]RIC :T0,:&A/VŴ_I7NPU'~\ԢL 9n`P.\_ڰ toOPqP{ix(΀Fc=rSjeJRw Vjt*8 WG_|Oh;b,f3Jbd2&я*(ŕ%:!h\ *]@͓+\%uq8r8.YxG[EUBCSYҍHcJ6DiVq /h52G簫V{w0knYK&*;F4ȒRp>5.i~h|rB˷pi{l Ksx݌"9v;a)[u>IQ<["8%5" : @hh:9k :]II_$Ӟ>I^6-ny?djB'vgHt[ĎAG9Өi6xajI T'趁W@&(KrAtyyޞ L|]oz?En`L.NRӅ.vx F|/&a{;*>?8ߵp+>4$^a<H ӕ?1 K!yPbQjKa8u8(*?h}01]Fo5tAWأwA7g~y7q4UW[3ڡ8 cx0Ꚓ#*Wi*a.hZ7 .(˫Qx|"rYe֐4RvC.KMu"xY0!G$>pP#"tĂ?C| B7}/8uYEkH|2cUӍ2Yis;EےGW]e ~rgК:&#%<,'@A!8]/PK*PFg{mda/inst/ratfor/READMEUT O^P^ux M;@ {NN Mڈ:u+٦c:ڙyIaC4[ 4#a$i Os"Pɱ0$;,ʪ(Mf{+'0 uWs&x|^ PK*P֢ɰNmda/inst/ratfor/dmarss.r~UT O^P^ux 7Ы7ձ56`lwxCfF5:kM_mXXx"ko-ñlǼT4k[ë&_s0UvaGz]u*XNG ۺx ٻ#9z{AY50\7U L|> oq VHN x^zjq?5U YS4zs, ]n 0k7PDknn4I-u:+ؾZ;+` %"/_gC]H:w:j~W]UմT- wPkZSkVr vk/ |TI %m<3!D"/y"/Xe;`uk>%7@Es`zNLq>f#hB{`f8r + VVeyx#x@j23x:41oz*b@l`vgAXajgͥ% Sz&Ea #(ux6uձQ]A%[XKP-%7(_ jK@R GDmlHNɯZTĠhͥFl2\<0UfW\+]] DTӿ0X_];c|a7ʷ곓`'1?فhƹI @-*C3r/8^&Jbwuk!iZGδI)_mS)>+L7Ӹ졐' jZODdŘ`8 m2SA740¨8ghPc0#"9(Z4VwO'-jn;~ĝKĚxfV.ny DC ;̤L 8e!x"ܠ %d%|Fȓc7; 6)zLq^Z{Bv` s- 3.$E:2@Y!*Ą`DysɋH7$ֺ7Xׅd;`j$WKh/xRx/xN"B mœ$x;I\,fiOX _'K'Y Ya *#F>)eKhHKl&7nJћ.`b hkmN2\pVgzn+,'sdۇwrXޱx\*{>xzw ӑהKts j0bh}rdA,}ydK&Z Bto7`]L\zdIG9IfN$c I!iͽ$6?t^>!9,}XzfH 0-74>aHcf禲ӡȞ„ZLP֏*}`.DUb`g+# MEju⢮ylT^)Gpi:3v`ӟ=p8<Ktr H , sAkh. T{ 3 8ğ] 7Au1YGyu?|t3$ق^*s耈HKd.7Xͧo2Iqt7 ! 0gc627FfOyL&! π5Ehh$ôfiMɼy#źi2d(.;JIX | ;D hu$CGMn Vt"JgZ)ΙKQXBQj\ :9S98֎|C%=~ɪ1a,-0Og]Vը4a l@sGh|_Up Sn>( = *{X I$ IXԷ螐 ʪFcP #$,=-4`&1dS7d&@O^&Ko8^tPR Hh䬅8{<i[meUi5rN.t/ G3""+,P 0#]sN8Bg7$9Ό8(39@9?qu+{8pL4xrwzc$кca5)U\c)^|5cx *Kd2uu:瑠쑛c:_̝u'Lu,a:\I@,/`_z],]1->܉i->WDq.alaoWa9N?WfBj.<=WUWfvWE ]y'H'2&;*!`[Ė?Zyו$se$g*e0%Hb=~c`Ru6vP>-2H".%~w3S4_8-X8!PXk<t߯|"_ W(ZQ*Ǔ'Jʋ:A}Y6$; ]a;9fm^5♿ ] @ X"/slӅ|jp@.99h$ac/͘#ecʛ{wq %"7~vF0 z&?``c<0f9:*}_Oءn=ZA4X\mk졁 6|K{{zU>yhFZzѼRyD,V7 x~' ]s462Ei+MEJ!]l_wqel~xi8.yIӸ" FcnJeJ.h D]lA[H6,sCiX6kgя` ~v(Ap^y9Upy#h L[[~g? 7G1wh^biXu2n{Ք+ }Jȏj.0>_pqװ(r^BN,jץT/3'U; I'5%0y15~qҟ sU+BqUw0T>×6,ۓ-@c3F9ʱ3;OA܀Z+P+ǝD}aø_ սZ<] Õ.&接X k yٌfm'<:̼⚰[;yOiyL'IItJrL[⁏I|!;<5Ghq{* C-;r,!_n9/m^'ۂc$^7HݥMnvfAzdz=Oxt=:>%N)"|eWAkz9 7ŴOo-Mˣ[:+٢ЅE),V"y1#n6AQsj4jګ5^D ZR~10b m>"3:\2<;!42]dgG4w7S%Cז$O(tQ~]a)%߷9CzJwm#$d,krű5>Icװ?1q}RBo| ?`>RHXڒgKjK:~va4/ F曱m:F  RC+VKS֙"-_ODobdyXX.]C[b8t<pyk{-8yڔS97>]bsЍ7^^CXe.3ꤽbdC>&SkN\g =Hb!+@A3,{yW,*K>nF6+>}É~ inPK*P=Y"Xmda/inst/ratfor/sspl00.r~UT O^P^ux Qn =@ji| !&E!4LөMas^b=;wXCɇ~5 P5¬G}pL03 tA#m [ߒ#dCXz<&6& ֊]>a˷EBۑAKhC % rT{=ƦG*paϛ,0b?>?hwBhr|[faםNF/t]RYj!y 1aYgƾPK*P'mda/inst/ratfor/dqrreg.rUT O^P^ux eRA0 ahԭx~,1K&ttЮ훔jr@>!6O67:ڤ#&atj|)Z[ Ѷ;/l/6.UA|rjM"b+WOJt֭hk/R+na.qC/6=J,#kmt' +wU;2p8b\HHW)ae]6Gæ}m {[n2L5hc7Įm*;/SXg&Fz ~aa6\>:0Zݴî;g;2RtIKۧ!2ńeIPK*P@znmda/inst/ratfor/splsm.rUT O^P^ux X[o~)E٢l'z@t6OA(q$ DҒb;guMyas;󝙑mu6(iׅ-m7ˬ-c]guWhUlzޛ^Ņ2H >.myUVftUfA"hn1(dV/Rj%nyN 0L[]YRF-T-68[MR(9uF⠁L<6_QzGD|'b`}GMg%ay:ihs史̢Jn?45smcg1 !XUT.~8LEӖSȫP.}-3 wrRF&23aRxE`)8ȫ#Y\晢 M M%i/gʪO2(Lը2Y^ADU6h`=$3ZYVHhԭyek, 3FH2 ̪r6d4j! ">d<\EW!j ﯨa=çN˃ڪ-I(&뇌{s^f5C [jK lDx1|ۻ˼6KfKdt'\'1'aΤwQJ֪ikN^?<{d$!H3I ߔWHO-0 zV5;n]2CvĀ ThӇ3OO{Bl1Z[չ+/*"RC)s ^r&\HqD4nu={s YhɃגw#%tVD`t0)İʋVnEaeHдhd6deMUCu3kesD%~J0<6凿JA* H)\5AjZ=is3yAl8jq5%ݎQqڨY.lizG =yimĞ"jIU R靔f6mb"ȕ.uApK`ҡ RPwC3&EFanlⷾw˽=mg8G W2XXPtd CqײXBN=( s~ū <3#ӤCÆ9:7C "NImz+ӄQGꅓ-`8LHU Dz% PeK$f_V/rvMy[|h 8`g℃]9d<{u~z£ Ҟprp}:twu7ߞDpi0SSujۛ%7֯TwA lcp1Ƒd1 - !kb BBioxJTVTΈ/B{rDCo>x]90/۽4Rj"ֱZ~7U ۖNG5h;`φVc5z˔:ыXt,ǎFHH|auӉ|*p'1O0QG+^yq"g94θ|D(ֵqͅhV wwDj a΍rSR*n{R}?A!taPx萍V)N1 *PlnW C. 1#~EE8k9 >0Hxs0%]Rvv T/5=:tKw789WHeAN-deROn˫膓0«NG9:=uC5l:!p,_ηykf~颶? ڐ|QbRVr\~ʒ)5+gԥ8.=nܳPK*PKHmda/inst/ratfor/tmatch.rUT O^P^ux In Ep &}x j@P+wO6VQ6@ÓkvL+F|5s)mc9U0i^v+;5) , R& %${Wy}.J*tz9a(ELh{"fY>vk{^ͽJDy)kWʳ>*P}GEy )&IxxJlh3$_P ʼߍ|{ڄlF*QPK *Pmda/inst/FortranFixup2019/UT O^m^ux PK *P#mda/inst/FortranFixup2019/Original/UT O^m^ux PK*P W1_,mda/inst/FortranFixup2019/Original/backfit.fUT O^P^ux Wr8}Wl 䁧? 6$ɱ߾ݪKjIݧ&?Ϧ9QvIu~NS;7eIYtp%_~QoTƻJf'E^>CM}]Sn`R%|,M]IvU,ʲyoV\Tg tN{^!`XjWBpYRb&r g@/e` OTb% | ,dE<>`-4>a"? $@ q0؉xhvqʂ2"a^ć;g;S˖~ 39-G[h;p[qk`,m<e6#S onfDre ц3su6P Nu?>oRrmh4AEa4+,GN!z(=v~I,$w-. ½sBҷ!#p aptj.\j!\$,Pi;\"0׌)y+C,l8;Jݡ+BRg2f\wXs":}w9 D6y䃥*W4ؕH<'':ikx*kS \mf(q_H3~y EoܢK2r<As )"$D<.qr/x>qx`T?ƾhŕ2ycQFXmyAkh98<:;{uzX3J7[u0юP@`oxŧL.W`=D.Kg)(}S'EP>aR#<6o{/Zm&BjY4~ڪG|P?hfmSo].4V96{up㒚-ȇMm"Jsa׊78/893n=2}gX28cyw,b= M+,t[cO :`~f^s`)&ج%fC i ԡfMcM+BGE ,U8M]d|wVLଛX\?#e>":3ѐ>%r PK*P-X+mda/inst/FortranFixup2019/Original/bvalue.fUT O^P^ux Xr}_ H F<(*Ur%yLUhMb r*so76Fι DWtRӱչiչI\R%ћN95x*TN[љmK#QΜ4?Ԛ6mSяVcɩ5֔73ut֟qٚ+,-nOXo t(!\H]5a%1nkX`f~bB1lK"DnYk\',"(TRv.nBV[SD| !L-"c BT]Pa*]E_U :6^"iEHlxFpȷyu}YѡRgV11Ҧ.]L,iƵ5 _Dh005'TThģuX>,j`~\ns"Bk ~I-0B=I lY|q8KcBr6?& ~p'u0$ :93|t5nئQG(j*Ig0>Q"'u` ejR6Ks<,PB8U M!lokKѳHRUVIgz{C2Ecx%0I e@@8~j)?\.m?,U*Z,"b+N9͡/.ԘĔMbCO9+Sou ?ڔjԕa1r8nBKr^7)2U([!6 ӓ:K }Qf"yOG`>9_?\R%Y*ʳ9{-!1`XӺQ:.5qCE(12b3! ]cPXZu=c`30Fp= X=6gv*^!FWo^KXua7hux/l/'=c6 )Y`>M4 }ءF%3+ʆLU)#-Sqpxv-D Tɥ6(4(3ߠuU^g1lf"js Ru/1/ pVO<+1_=<5%^@ȡ!_I۔yw/Knm^\6EZ1uIhBtE짦sHx*O`%SC{'!2+XILz/=rMF ۧ'v2-~PK*PL d+mda/inst/FortranFixup2019/Original/sslvrg.fUT O^P^ux WێF }؇VǶ."Zw[l۠@Qʒ|}gFdVQ$sxHz8t͡!-UFyOTEIWԭl+ OҶ>tuyl^#D^uQg"NB든JSUwzY- a=&(QP֪N(s2٧y""h!G|a ކ8"$EF4NeƁ5UUtڦ֒N7Mǖ7펄M&{Eˤ)s5 ꂺ]+%V%ߓHޛM^>ݍDA{YurӤ햅S^jʒaNnKPZ.v~zԴ2S&kW*_'N5QLy|#+5)EF AŒ6' qklI+lCwժrR=΄yoϠ? 4o9ƽPYl:&H 4kJ=={k}[*; aR$Ela" E4`QZ(i]k{tB丗:]sTi)_!Hn'M )T.ug:{]$8 ~LX١NZW-fL V }YEEx.jZ8\vpAv0:.ÛC oFBxCl$feڟkt5h/_x}Zp;o-s;czb9hǵ04w^ g+vJ;;+³(t,(>"^? `6 SqiH~NQ(h@G^b%'oտ[qd5vkeClNȈɨ2>E~C[}ݍ&}̹y`xFl±PsytRO';R B/-W+GxvȏfRuاhhuQ w%M'i{G.T|W:y<EZ nNsGᅋ\4m GtŒ+W³ߠp`Igy[8Pv9>ֻʼUPFX}<Ǥ14hd.n?ޫ7;Hd|MKsaF VXM-3o"~㮧(INa`ca߷0jAm/PK*P ܵ#+mda/inst/FortranFixup2019/Original/qsbart.fUT O^P^ux S˒ }Yvnx!P] 2rL+2yY<@=*#3nfda}J ?!_p\pr89ߑ{L =zr*rrf+Lanҟ2^EK*<PK*PK+mda/inst/FortranFixup2019/Original/backlo.fUT O^P^ux Wv8+@ NI pުsRV2ASsyAg7M/ŵϪ"^o/o}s.[~.MVXsM-?!E90%#߰aEkˢ9J]v6,0HuWnM؄|قjKR}yPhc? |/{e+;ܡi./q XlkXlX[a  Kp/#fmf7(os/LM=48Rp;G0@4oDsU鳲8MyaL8zUwT/9 H1}a zXv{taT\wa W33AG_@Mt#xylCKѤ\` `s]f^ Х#\ }fƜ`d6$?\(H~K[c ̛cV4z>l籭'6{bQtn,R#಑n8_ݘ/Y$2.hTUV̦*kR sNbfCVXxn/+ŨnĐ'SN*lU,X#q `UBau=(XѪ̲6 AӸ"UXG3 n fa9QEH>U[ћ3l _ Fp$4x$Փ9G\ʡM>/?=ACOF`ι=\ӂ -,bZ2FXW<G?j"8ӂ'ur:)$%Iz?rmϱ~WD \ 3E= JqxW&*bh?1Ւ,{(;2q@H }Tԇ,]@W?PK*P}3+mda/inst/FortranFixup2019/Original/linear.fUT O^P^ux }zJOAHB zU߀6 0 yΈ!"3{WwU݃5sFfWùn>wsEk;>OIku֟Vu*5;"n1+K@r1S'$PPSsM^P~tQ%|0Ƞ~noy?[nT$]w T Yp(2DcN tq^Oo=a`x,p{L~/oϧ{LS<€hdߊx8O6sgC2 YH;GHhr10곩X+'xiT-eS8,i<^@E5T2 W6:>e اu/&c7euBEZװf#!yB5 @kK1,4mm&dBžaivc=T$8GF #MQ@M#F$q;XHXVP\qi|;6?4?Ҁt64##otWMCѝ R uZmRϫs lLJ"ESV&m, >z8=;O;nmi=j\^XÛW<)'kIPtU7~SFwHʤ<njw?n~TRe.e(-& j{($NbI0c SX+ò+[eziY6uZ\$PjP lP:_l^jwe͗1Ҳ-VXՖJMY\TZ^Ͱ̃ x~󪆉v~{J&7~yX@l6WHPϣW5{A.e_C`hLڇ_^OMuSūIZ6@ye;4>ě3r1jYZ$TiKs>^x5't(ԣ[fB ^:y][W#U ETfr6@t/.ij rk Aa51k.xV0 5r{P+ k (*|C)VA43})^-|p`:UqX.3Yg: Gc{ΎC9+6Yk}\sr(E0ۛ:BdaKzX&ʦN[gk%)MwJ6?JR ņ$:ŰHgcLҶ!-TMGN8˸2DxEl ʈqUۇ&3lAwAXzk묭c >E*t  u\`R`:VGC op*L-aCm8%o˛ߚcd4(iZ$v[3r*ı"E) 80?%C+:=` v=CqG5d"nfFxu2@^FXU8/mT5ЍC:vfG0k[% 71x A ''Wd-|YlT[~ ɍM0ULu1p۠/}dL%y7ɣz \ϖr6A"B,IF\Dwb]'3L|QX!w=ȴzAWɓ^t 0Mк9"w(~ f꾺Yp"p/ΦM @ d1;D &A.H!xڍNPr 78فOv/jXs߾4d,X 9n`A,B= Ї d&} *Hy*ffQUK;1flٻ5:$Rbzv`: wx'Uܭa՗Na) z'C a~ 6(tWgۭz9t7tIg 齽%d:%J;䚬M[N0j+ʰVj$66ԭZ* g;R-?GLR& 9F_]|"l9;AE򖼣G<.faBOE/3*(nш8زH:)) c%v|:Yn*?MX4q sͥTD=wr̯u(0EJGG.О#;qn6s ]ybL; aҌ>?,ά|&6qb["z6΀ w鎞bg#9M _ JdmS=U7i"]dDEwӧQ+a6pPTȑ ﳶY{4cqcBG=Է?喛8xzz#v)2F d\r!_3<07ȣ I.?Q!T>Ɓ ժZx~93p ,Zr;ɻja,O5MY(fA3ɼ3Ąka8b7Kb)&&;m22 6D1(RH/A/AS"FVc켼JvDT>h[zT}:K5LBo:'*; E fz.4\)@&m&E F윅1z|j*I9L\)0fUS>5aDd&̸h5j],N#wZભ^P\΅{n) '1 ayYFHcϿkz@FMD0})ƆԝOfyz;]/0Իʵ [;,~0A-Qda]o*,Go룍.z(⚊Føe\0iK&aQ;nuB'Rq@ QEfU= i6h8!Zvj3Ra|]!$cv蒱aK ۅտNЉȸ[J72`=-OYe( 9-i.F@a?xT– EEJ U5+o y.'_qljҿ^-؝[u^T^ YHM;PkeEAcZ[^*7yze&Z @[)R֌̒6";[s{Y72883L\os{?̈́y2T$@h?0`M gm0W< lm㴭{Gavoɹr'qF3q]KJMw{p5DA藪kN*ު!iCW19JA A1SRyqɦDa]Ңoabyř[V`;>3%p.]-LiBzVR{|.|ؑ`*™-?@{U&&vbww1fmoOOICЖrN08's%1=bz2RZqWҫi)c0=RN|֥P!60D=fjf5e5rq .7кk;^iT <Է 5wd \Yj$X1sS#O yj;?͒j|=ϳ<63! sEKy&MB>>ìMs|?G~0.R!N Jlǒm!g[ǦYq N0<8()7yS߉EX /D[o DEM>DVQw+a*iq20qXT'򭙪w&|It[s5\%0WUsu\}` \AɿSPBF0NA 1È1<SW O[p㫳8T 7A@?ZL#qoNul}Ës8 +r PJJX cבJ8AWʾGE7=k}mՌܸ7.SOV>k}X [k&=7 #=FTG $WՇ* 2H>$B쇃Bry>x ,ꃠRO<TlD`xbQyk Q/-ni/b5؆Eò%NrkGlㅋHTb4\x&ꈩ'Uq0<*2>۩\bF3 S5`irqX%jBNYkFY7 չR\D `wsC?Zk-SɎ}cAm=vvK -@|l :mY%(Xr739\'=tFnL!O]rqJK jO +} Ey(ʺ^ڨJt) /dE&V|K9z[ċZ" ;T3u"#BtuRk u_PN#%Cv4 ׎~eqAmh:fخăX.}}>;/mstC鬫$X,KDOɡ D7^r} x:$xIO㉊pLo&8enXxZ8VlJ3/ ^sh8uSݘue >!FF(e%L iU`"6cw!68z]Wuۋdx':ٺV([š-7ޢvT0\ O?4 3LW*."'O _mRFdro*3cMuF&I`@<5\j6>h-d䙯O/A{2PK7t5u1i:3;D _,#o\ͷ@OԌ,\Q2HN湌!|CpJK38 ŹQ' +̺E*#LӑŽ"NՖ;@r<Hj̻ I\'zHlVE*5ZksF[>GcvW|;8LB!aK@!=y 8 @BLgsV" {$ZgK[vTDfd"k"MW/0}t 9eƇmk%o[x˸j ({Ygo,Q>8pbB @ 3jg 6b\/<3U307I6wZ%n"ӀcZtL['II{:iMI~ #4N v@Xf\3B h"n}Uǿ=mV @s!P/*ԟMAЧs-د_,2 abYS3\׽NNԡ ?OT6 W/2߱KF˽I w1t76sͼso}s"G5(>2\1fji&' 8tz3̠d[n0uFv܄ߊQhs`@=Q cK1mǼEj$ 5pD#x9Cǩ&y [N8p!'ۋ2b7?\8UǏRUT $*#gXz2dY!Ozd;ݍ30qR3BFb~_j*ļX~D/N:1_2hAȿRgF,0=~fAw*MHLioe1-]EKn4?o>"؀в]۲ye޴lWgFr!t;?/l2: ,h؆,Hf Ѡd>\cAУ=BGl(M=f_m$w{^]- r"Fn"NjҼ'Vv'bʈyvakwV Mj>x>Z"ތ&8J&֊(^> nM[G=&U?rZ`^>La0 #Z泫Sa0qk'2(HΨM]NW>鷃C0Bp<}M|'v@k_[.?k*BD_۩!CLT0ut^h]\%wlׁG.xؗ鹯cD&ȤVmA%֥|jk*aQG 8M=p  ״hhOR(ivC5oTm$~̼cYQ~ڭ6O.ⳤR,Zpհ%--? xҟ?!ԈC2g(-8cW2d?cpEC W&xQ#Ў2>Յv,+~Z-|R}FS8TMwLAuU8#'vmq4In&wFD49aҚr,@cic)XiMKҖʏd{pf7m[swFZJZJZ: RQvVm1` T"0Y!nP|~H'@FJ𹗴B_n#lD]!5TSyC2,0`'#Hbx7ɞè_"r85WLiAbχPTeAu"$~T"Т6/5Xᆼ2ޟv`nPMM4/u c]:λ䲛]|0feP: _&Y-i2a1tGVj(,c;YS컜P- 86"=fU=Ua*[x$=|I$ԃ"!wN6c:0/ˢƆ mGJV0 $(5[ *z<%{V8 xL=R=lSg\ӻyrhl'`/9gi3 I!ynG u|$ O5뱯Bp9y;l7 cqh2u@Ga pzXDٍ"*%{3*+eb40En>QQ&6Qy }/Pl/{?WMj=ӕ p3 p`y2L7?N>EI?˃tcv pdv8dXrPH)$v@7kw2b›a]Oy@7Ew$G'yD?oաTO9Z#EBȶ2"|8z R m:7wdSL/AJ{@ ;kTSwӀ.&;s]? o,J֖Jᘕ-nC ><NE4:g뢃A<< DbI3yF'3X8Y$m=ݎՐi$b_7y|~Nm] Brk[SUZvO3l;der'ϹRroqwkv|"@Z=o?Z̺G&7d| /' %"jt deXP\fUK:PCW `# ̽hD8P@&DsK'&k|2 j(6E~\ ߭0$g!fP"lIh9pIQ[,tx}fw<հn}w"CS O97\ &\m1/x:ϐoSSӔmD\ܒ۸E4C#MnXk= 4Pn\5ih2G1S5p#CΓH1)--TF?gdŇc:q<4^ Ҹ=@qHd~ @䉢(B.'V5ȶ.R> 7F8@؊tu)X_jiچV;;9`!{Cxg]?X~S̪1#viŀ\GgH֢J*MtS[dCB]Tދ;f£v ?SNssW#Cx#<:^4a!!#Quj)*%ry iw1EB7+~F/.<ң)b+ jUYћU*F/[3d)h^t񪯮zz+lņ |s9LGK$xYeu>9}mPhH>=#Bun&& hY 4yu6Mo6)= "@jZ̭v'po&w6E@f dY@ p 9ps!>KWfj|[6C Ⱥ,;Y=$;xH;c6.?yxmhOHpkkC!-5^1rtڃse7fl͈;QMD'pm}aҤ);tL3To:1<W~P5/]6LWkvV.)*wPsRKRAh)S07."\FqNҏS.R%=~_#k9Pe< 4K'_dI@OR*3!͐9CYN֑5,׷ uIEhVM42YA)N"+t-/2^s~42K_͌DCtK,P#<0[q osqp@X8T陙@lUILD#уB9 ia/YXWxY)Y)QX OTXUnȹ:–Y%Kgmdѽ{jbMF>~c49G"n3-LO@lFA B XQdRx>i/M'\}2Y?JMJ xam[">~l:mh2?DBeJ '1AldH;\VB|4aYu v3E?lLwbƏJ&AxtWTu\ۤqp$:!,K ?N.@Diѱ- 6HlOpJ {xN_qZ^^[I9pQ^Ϻ7sT1Yɟ:|n%`-xc?vVRd zh>Y2F)R>/t ?8Lެ@ FX!=͝LV}9/e^q0c¢7}^=i`s>i4il6*(ߥZqUuۢՃO}b]txY+L,#caCa 226QZPK*P>!*mda/inst/FortranFixup2019/Original/splsm.fUT O^P^ux Xr8}W葋H灧? 68Xm$,f6Uֵto9q U_[Soɮ= Cv(naqBߺvjQ ڡ.TP9_`jIN]%WDﴍ1}r`>--8-RZdZ bwz`$'M^]ÀmYlg3ו'f_x/^KK~_= rA, <&blcliTp6_'o\S@Ϣ"E xEBR5m!Q|ctH zL&,!9cpEmXݦ6G ) SF>"`< h!p4: psNt'OM̿3dTOEGw- -mк~I}|zY68Dq/* @&׶EӨCNIP.vBs ։rY׌j*Bs5rRRkȀ^kAϵ.r ܴ\ 6xzoC0^/h&Gԥ+ľt"evѕ3@ɼ:0T Kmٴ>9*פULK=G_i扮x^"si"]q,щC#@)$DLz͗`p^qM[%·Y@ y,YBbdJ'@'k_CddI-J;p ~~)%>{X/v=qhץgU7~C:B(|aS&73["/EUf3WF~)~\L-yUO 8Lݏtq qD>E:`im%R+EAT̒HѬt R#*a)s;_Tyͥce 5= t<9^Û@X`v- 8(*w`kқftMCq\QwݸW\5?'ӕ,#fygQ-}rW q~T#Cě\=Z0jq*E#GA5i@W(yN}^|2Zqf7U~EcG,lns8IݝfI T LZ+&&_!4&R~[ͦH BUV%?Gr 6< `@(YPt)*QX<C|xZəB CG:Mo)>4jK (?O>tī {3=[AVq2Gt'`NuZJ~_~[oĽW!r|jz.Fƭbod$ }Q~$b^٦({c),+ۚntքb* ØLTIx SKR*?ݏ3<à_$DYď8RSq3`Nr TD>W/0ka"O&JjK^QbJq0Le KUhӍTя ;PQJ{ zӦv0[\ͯsm[<2 :HѝdZIhW'Sr`3y̒lܯ 8-uv[a hyFWĚ~ @Y㇗@qD:ءcC? ,y A12gDy*g5G)[?x'i9=#H4'%.azW@yIu leNvMp.t ܂Uvj7hiW4/N`6ҏ5Dwյq>/~f>5miL?Hn_ne>x<+$'L`{78C^h ~H"E8DCQ+-'g:Ǣ~DҴ빝wxO>tF!v}s!BL;smYKkg}bZE=c!{h0+ott/:P;5ےDLdsk,0ȣ-yCoAaj3eGsth( FmL= - ;=bXGQm޹jX\NX8S,tCBA!Z5Gfts7=E+gf\DQ\ ҴQ P#z fkߴ!1Nq6gSMHw+X7#S.l ) AZتg4tIa x3nTą:~`t"gw٦ I>/a{[L [c/ cxW2L>-A 9֊<xd&9n2SxOIyrhDr>9>Rz !Hx 4u=j.%N?'k4S0O4B_ho KnU%V|?ˑڋ12K_c?C(9!D]A1(*KEXT[]VVj[J'X~OMz,k&;巻kXLjd;^SP|5(J}ac+d?Xe237Sb<\c]j; {p=kX%OX?>H5KFaBnrZӦB蜪u ONEyTl6GWzcjY7cj%V7-(ae2\ϞGSHOڷ:sPuUE /ڙ=kZOT_qNfJ=4s"3K@9.ʒk@xu|,SNFL`>a V1>B\dRE!-2ø^I׀"#u̇M kU͠Btm&"*|*H*"C>L0(S/fL,JV- 2BZfWZ`6VefUJgr8KU*!b2[0hțG-k*䛎J)1@2f U*)su݂MA r> o4"?F̧e0ixYrU+jlE2Ux1f'Ɣu&xEڸ~T|Co5ޏ[UEXl r x0," G)AWc ~4ʛWdhچ)3! V/=‡,{,@<\AԠpڣ*:N`@bINx<d* i'C^.'&!. }*I][.wb٦, uyBv>uɎy<{]&+3Ts'a`^B{)@QDj ZQlGxaXWxU@}qnjt^{xU|V9AuL1f r_ v*k1 PkKee=I[YNTTV M,JK]5mV^З5>ğChl)Wd/ ~}o{UO|Cg{Se5Sv<`Չ4WL;ټ]f;#Ld$)ޙfySd;+lzE@ye Rj[{kӝzFԸo1*s%BQygQneXhC&di}J ޼K RarZs[طZywoÈ(=|8V. [q 2D JD&lU@F!7l]&#onyE(BLtyU⠻Sph -k u5jYuDcUa9&׽_/ΊT/"TEﴗ'.;pk^]=^{oM,dalQBr m4u(lkBv#>h,6y& 5>׮Ofӷ,poRUiḢt2Ѷńpx2k Yд DLBd,Lےd Ӑ^LLY rbf glL $/lsAč9觋13Mgc@N";xbE&žZcjDdͦcӅiʹg - 6:[\s5Jhɹm Dj I2U+Y&!QdZ%@IKXSj-a#:^iX k7?X Z|At|Jq `heea3͔l|N 6rcL -{Ytp%,_p^Ĕ8705HCc+jO zzR+9&=u1Oc Q|'ciD!a׺Yp:g.}wDOǠ=|>S[_hCs5- XsB]'ħ cg{Ud{ZVoC*ֻ߭<'Cqx]Jo0-$ҡ>(nsWKGq]^"G ;— _Bف?úD^<yO;CˇU $P+eSw:J[xɎW+Q]튚ERi6,EU1l2ZoA pU;{Mp5sF P/(mQnYނ8,JF;55;kBq4ڐKؙud;I>{00%QebaLa{6PdD:zO݌;3z*̌ * ҇fN[Vme&k+c-wsj+Ƕrl kk8D[ʉ* l4lPm-[8m 0')5bC.6$zqD6FȓG1GDk#imL6&)̐qgDkc.6&Fm1 ;rOS$ԟ#?oś R,HN3ܞ rDE91iA(S2R4R6xq²Բ2S!1e0~a\<8GA۟ d?~e+&Kp~z7 G>pNSْ{B9r8sO?bJ %FB'X_I!GO>OA-Nt7 #`,H`?Oh0]:͈Y?bHvg*"C9{9| n0 >.)\p@ Ժ5K ;P*>q!: nPXr]VXC'٪kGW0`:玁7`2["߱"WBשEPFyn) #-m 9e}kg3笖 OֱX l1ıڮv[T_%zDO?S@ !Z덟11X㰁 =q l-{E${7bm 6U,wvJL9*=JnaabBb]Rx%K OguxyqqTo#kX(lzvmD.Zɾ][?C Ffʎ T u7 4OfO%;8c8%@cgo wL^?U*҃6ЉQJUeUF8VljZ(OO!$a.1p!޼j?7Z4(4X쀝-E@,KGF~z sdes3#$hT؜Eݝke4kCNؗI1㰪"*Q:lxQMQB[ND J1@Сå]ye#x0b.Z@vnR@ qgg;A.씐#$ tv 5Gĉd@\J @ndO1;0c$qUOEb  d@;sT Q)Mh"ShuVhQ_HO)cWa/ 2 \ׂͰ 1)\ 7` B8| AdDqOƤ-Hi %v4a^f!gk7|cTVBpHn:qp#-Fo,zY֊od2b7|#ସogvE[Q7 ߓo7N &Nmdl,S> e$Ѵ>Fz3@6&@Ƹ5ۘ81ds#ۘ`Sn2*|m bqȮo72+y6ruocF׳ fkl#l#نj6~YmҴV99-HsABEc6nf6d3ƴ5`VJpG(6Αs|,\29Kvע9GvsdA\Jf% \ tl8p"6h7l8_a\_z;G >,m7V05>u\EH:r#K݁R˴Q?]/}Rmf95 HŅE*[CimyV`(p϶ˤ!Ӟ; dO*ӚNi43@@JN{:} L&T Z] 5a`&\pQ3-=x|הz: y!4 4l^F| /&R,;i~"0iYBʉGէN-6qj1o9-Ϙ{l2*o<4{kTw9KF'V=2zo*9N"Zmtݩ~'l "̩U/ lo^oPsS2t08f&G#p>v9[y[ND'ʃ܂ ҒbtiWය&k:[ދ)_UE8me@SMoߊ7fON s)Q ;@DaCD7G4p,nQ0PaoǨ`pR'G< "2yKk_al|qU`OS4ńslSΰ6\TPso̕-ZT0RH轐 *}>@ǟ82)ɴ,#r]ϵm[߀_+r%,Aed{uR$ʁ0f;>`CQL AFnOpX2@FX0iЭK#j3`:˧{Ўnڑ*E U@ެ(Э0# ,=ftmNsIrG }觌4ʎXLD6vpQ\En@,[ZJtGh, (Bi^DYruO"R94R?.*WO·~]Ӑ"N;1fUUt5)xipW H.<"áфlH5t< qSX<"k誄w z(ze6({~\*|BL [k蛆-]$"ejZDT7$5y/~c{΁.7Kj,Ә"COvxi !a k|w^z8Ć/dl U8 ­uz< Gx:$GL7ǏK,alɰd 'WdKe+mğ|+f1,zfC 5؄.E)3s'0NP>mPqޘ:`6 n6'cmúm#̒an m5gQ-1\ ^Mދ}è'"Kh7"qb%-wxWChdh,1vzq\pcW[W!^ĝ}}]ٶD6ʬ>ؐ3?@h:@_ Vut-ޟ3G,T VI*3jAlEEQ >`ŚN`ғ?a~[uRNCbs:orκyv|a CJ0ZR8z\.z<%ňte FY4?5n}w|4/nxVtt-z(xBL*%ruW8.kALY\LU)X0T@6KeBFXO7VS#N.@XK/kq"*1ƃJ9ݑECbJ+(ȶ:4) Oc;x֔ˡl͞5S?]J,2|'"xqw9#>KȊ|U?H mAR129d$e Qi)J^ؔOgQfӆ/ڮ4OY! p rZȨ #c!O ͕3x]׌80Afm&^wms?"x'v H= f.S8*$;f9,jxeJި屳+̍֐-!RO gem5Ҕ׋(ukaYqglwLr'ǯazs&ˢ -;5'g4-J')[g48 lrB\OCMbSq&zv-gʁQgi♌l*0.~қ?׺b} fedXv0C{@vƈ}G ᅷG8 Z+KBꃯ a.x;h!<\:Z7bCr ϼj1=CTZ+/]ZT5Jױ+Z_ t[hVɌJzA Ϸ4#Nl(+1o [sW)}ޭ3MӴaz:~͓3z>e&Sa CqПh qVo+64_>mStD?3H<;Y4u2J[2ބ@="9v|?t7oHYh0rzE "h+ pjgYT pr|U rW8}\72;*j(ڍ?Au}0Ss$)jUzϡ݁/eMy7f]he?Ջ*ҨPKOpCu@pP!'RbfAwwtJXLBQDR T~WBeQŝ@xG넙ŕDa:>?u򒼀Dyx^Ol^7Z/jXv~b;F 鞸-ϧiB,&s|k&ctNSo|L(i/z he{lhӯs{Y|~ EإyL2LzF$ Xt{к$aVA{!9tJ9:mVz⴨#tsg +XƫL1&4zU,$PPets R|oi,Vs_& hi"d›tm s& e /W{VGOsar-Uq>Qz(ƌ/<ǒxnkN$Hջ"CS >|d#jy{Cf̶޿@SH#E -չ>hs(JJ:7_Y 25iis3rD ؆jTYfq"Ժ7 V4vʝαZo5/ /U; '<%h`,{$ɺ&8\,*Z﫯"1M8D: PL %V7.%7fUl+~ :E)6UׁQ+Yz(B:I*ʥ%!ݧ?~?urM鏬 R3x/:QY`IPюiU2nm8BزBĞgO| `Wu̇Kak gGLR>vJ(p ٬EVd㿱s9c #1'x)?ue#Yl^׫P6䦁mMyx4yNH<-\ RʠS瞢j wOA[U_p`ꇎai)}.`hU @9a^spu#zq_ ;GD+*D_/hi':5c<}:CA2. DI<]'l=?l>}qp<خ0׳#AZ2 i\ ǂ2$bR(5̎3F=ѩY.!eI?7r `WXyvPK *P&mda/inst/FortranFixup2019/EditedNaras/UT O^m^ux PK*P .mda/inst/FortranFixup2019/EditedNaras/bvalue.fUT O^P^ux Xr}^~E_ H vݔUu\*T !9$.4f QNs{%/t3};/_eۯ+KλMom6![dMvNپ{H+'N& n[ɍ \ciӵ5!鷝8OlCmkz&`g綻cTD {Jq#V#HWBF 5r6mW{kFbk.Se1z6^2&p؜LtC6X"EP=ddk[R6-:kkSD|  L#"c BLSRjOYH/Fj'aQ vr[qb]hk J2Om#Q $ܓIJ>>=M> $g;f@ &lgnz8< ${4!Fҽv-D`h%34?& Y?I Ib?Oi & -tʃT$IOĥ~ݮR q k p% *8  4cTP )fll *$UA,q֬w>&SN˓Dm$=!3 @`\eP^SIQl6q`8cyQ$M,OD.|VsL+E-ў2XڙXOy { "NMVQqHlެܣPK9 Sm9~^WŤw*q,Yv% IH[8 q4ƌq0k2S+fS#Q5#䄀NB)>gq^39 ݰ`UkIVtQG|S?_T5CbOPP{n舨f\L̯׮{zmKlbN;u!`T>6Rl,u܁zFrJINsns/ w(20J1~׏?s2k&*iCzv! }E6JQPQxCuQDR;m/a㻶!-GT<S7I-:%kePǥLmQ Jnfs 5.sU}5`lgz}Vo*͚1Bq{M8 3eDUR1!=^5/ ^Db^HOGc&#:S_[ Ul͙hGW}9)Ls ib4X'4ͷ W_Hcb1WZXXYVx9ėf.~ΡzabpFK&T H=?Z~R~(E$r{+/&NͪK̿1ApB fD; _bcK͛ދ=_\ AN7wi5#ë:/b[0 9o"|xK#7s ηq۟_W?㈄^ IPK*PY\ B.mda/inst/FortranFixup2019/EditedNaras/sslvrg.fUT O^P^ux WYoF~~)idB8@y mEXJS$å$;.CN>xα;\C:*zOReDUtE :Vp,\S$cY%e'򺨋B}Q&[IVp4i$XF#܏Z@bOln :5I0+^n' ʔN>GԝB |& I݆Qp1DžFu#G691* l*ZVa8QB+6F3FVi4Q Ǒ-3e!VY.Ki(2z(\BS(lL)(O+bbLxkb  1Qqf}Ϙ3L/Vr.Z70 9p*+[.V"_ķC7`pν4@YR6ؑӐx0\=WsMÞ$ܛZPφ'f*n烍h<،A!~)__}Y+1g1NM״L0 N9 &DM9wJIISytTO'; cr@HLH'"^HCĞ v { ae CjFEx!"떃 ,Uu=_ii,p!Eas#žmҷKlE*NÛ4wsCճD{] CyZnacCU30lbj1ϲPK*PjG !.mda/inst/FortranFixup2019/EditedNaras/bsplvd.fUT O^P^ux Y˖8W`R,+̤sf;m-Qr~.\8',  Lğiޏloh?][CZKA|}uUPÍ1QRKlwmmmCo^^Cus[93ѭjgCUߐ+'T-PL~tч j'UxR+Dw2taI8VGw6 5ĮK\4А_/vn!v|5Upk2j M|<9^Û@X`+(wGkқfr4_zW~ZZO27ˮ;=ˌ[ F-|kw ;3-J-p4]gU͌Njo4 Yu0+ 0.:vLdIXv*~vn8[XRME~X"b0t4׶aDGٗ2exnɱ֕yo(R(]5hM@3Jw6AMVQ8U^᎛1RuO꾼2эw-b"-j*a9evkI0>f{\^6!Zs6}m o]Qequo;T5WvnRs9a,OѴ3ʓ bՍ7mhz32 "J$О0rSPR(/< "Fmy}< Fwc"%?uKl: ]eY}4n{ G`lj+g;wqfվWi]ScRk@e~ZsFF 4Ṵ7fDn3k&lٛ &pqV,DHoǫ$/S!\̗D_7$3Kؓi 䶥nypOu&_-0&[,%"pݍsVe )/XRKH Pudxrx1ҙTW!Bo(0UBձqF xa}ruRdY' Ҙ~@mܒ}܏O|) ]94vu3[yME<@YLJ]}`=bF12d4Gk>KuXr j:}smIYk[_GZ:M\NKaңXH*n{ٍ9O6ٝ.N5kf9tX  ʁP^X)-; PPr|%DRV Vof-> }lk̶|$S.-`]:zIfZk̠߸d]}x" NAH38[&#S(ץ{NJ1?m22jL㖧._soE bO8qY*F>ۣt`Ē4z؄NxEˠOMg<>cA:+KEŞn]R-Tj2#:<ߔMh=2xdѧ7g&G/*=l:-,ĈI+~KKJہj[0llgҙO;\AW4Y\e4}]OSȝZ.k X7Hi#C~1 ɜf)󳒜xjM3,!CZeJ0&lR>i9˯+N^a.khE,9ٜ+HӞzHğ:wF C2@v{RCO 8noF8!dX GǵZ!+{{>mIInGw2!S(x|z&B"ܷf>8dWZc_Z%}NЂwتSG?r!T]o.CYg3S2;dWeҀKY77, jlYW|-9]Av3Ac$4(3#dD\W3ڙ+e4_"+|Pf*(rRbsbIi~W"%P.7p΅)|W8:lZ@) ~{Eϱ4Lg*Th= _`'ɐ[dOZbʦJsج~x^NokR< Γoio~ eՠJTQt{Ex^PK*P׍5[.mda/inst/FortranFixup2019/EditedNaras/loessf.fUT O^P^ux HѝdZIhW'Sr`3y̒lܯ 8-uv[a hyFWĚ~ @Y㇗@qD:ءcC? ,y A12gDy*g5G)[?x'i9=#H4'%.azW@yIu leNvMp.t ܂Uvj7hiW4/N`6ҏ5Dwյq>/~f>5miL?Hn_ne>x<+$'L`{78C^h ~H"E8DCQ+-'g:Ǣ~DҴ빝wxO>tF!v}s!BL;smYKkg}bZE=c!{h0+ott/:P;5ےDLdsk,0ȣ-yCoAaj3eGsth( FmL= - ;=bXGQm޹jX\NX8S,tCBA!Z5Gfts7=E+gf\DQ\ ҴQ P#z fkߴ!1Nq6gSMHw+X7#S.l ) AZتg4tIa x3nTą:~`t"gw٦ I>/a{[L [c/ cxW2L>-A 9֊<xd&9n2SxOIyrhDr>9>Rz !Hx 4u=j.%N?'k4S0O4B_ho KnU%V|?ˑڋ12K_c?C(9!D]A1(*KEXT[]VVj[J'X~OMz,k&;巻kXLjd;^SP|5(J}ac+d?Xe237Sb<\c]j; {p=kX%OX?>H5KFaBnrZӦB蜪u ONEyTl6GWzcjY7cj%V7-(ae2\ϞGSHOڷ:sPuUE /ڙ=kZOT_qNfJ=4s"3K@9.ʒk@xu|,SNFL`>a V1>B\dRE!-2ø^I׀"#u̇M kU͠Btm&"*|*H*"C>L0(S/fL,JV- 2BZfWZ`6VefUJgr8KU*!b2[0hțG-k*䛎J)1@2f U*)su݂MA r> o4"?F̧e0ixYrU+jlE2Ux1f'Ɣu&xEڸ~T|Co5ޏ[UEXl r x0," G)AWc ~4ʛWdhچ)3! V/=‡,{,@<\AԠpڣ*:N`@bINx<d* i'C^.'&!. }*I][.wb٦, uyBv>uɎy<{]&+3Ts'a`^B{)@QDj ZQlGxaXWxU@}qnjt^{xU|V9AuL1f r_ v*k1 PkKee=I[YNTTV M,JK]5mV^З5>ğChl)Wd/ ~}o{UO|Cg{Se5Sv<`Չ4WL;ټ]f;#Ld$)ޙfySd;+lzE@ye Rj[{kӝzFԸo1*s%BQygQneXhC&di}J ޼K RarZs[طZywoÈ(=|8V. [q 2D JD&lU@F!7l]&#onyE(BLtyU⠻Sph -k u5jYuDcUa9&׽_/ΊT/"TEﴗ'.;pk^]=^{oM,dalQBr m4u(lkBv#>h,6y& 5>׮Ofӷ,poRUiḢt2Ѷńpx2k Yд DLBd,Lےd Ӑ^LLY rbf glL $/lsAč9觋13Mgc@N";xbE&žZcjDdͦcӅiʹg - 6:[\s5Jhɹm Dj I2U+Y&!QdZ%@IKXSj-a#:^iX k7?X Z|At|Jq `heea3͔l|N 6rcL -{Ytp%,_p^Ĕ8705HCc+jO zzR+9&=u1Oc Q|'ciD!a׺Yp:g.}wDOǠ=|>S[_hCs5- XsB]'ħ cg{Ud{ZVoC*ֻ߭<'Cqx]Jo0-$ҡ>(nsWKGq]^"G ;— _Bف?úD^<yO;CˇU $P+eSw:J[xɎW+Q]튚ERi6,EU1l2ZoA pU;{Mp5sF P/(mQnYނ8,JF;55;kBq4ڐKؙud;IWFTTYtXSswoNvI͈3#)VU[E<""#Zea^i+ʰ ۂeRa:&!@[p7wʩrl+Ƕ8rmTh+'ޫ*ۂdJaACnURmVma]Ћ҃ D/F[y(|D6"Nkc16ְ@0Ci=ژIr$ȩ?%OPJ$[oJH"%F8hBp{iWAȧ GoO]HHeI ~2.ee~%1e0~a\<8GA;qv7pJ2=(o_?-nIR'}'Ω}Pб6[c@9G.|I#~^LC(-)x@?/9|2>fZ鶜 #`,H`?Oh0m:͈Y?$os0Ї? !CϽ>Av;S`Os|f>AM҂.CO~:΂[u3y:gyզ?VŐgh*ݶ/f>ǪZ>YdoF YPGjST ٬9UE }'V7z8az} ^{PfT!;4-XqhP7Qخo=qy)-۰T(yfPu1mP|Zj3reEMh&4di?[ٲm`1YծgZXEhVV# 4,p7 W1l$(?H*ȃbWxZ}8P޹3|a+1`Q\$@򴺓K&.LG1+8fr"JRVY!?/YMmK^8 e$Ѷ>FbmL^6ǯclcR:pDY; Ƥۘ?v#Ql#_ȇF.Fv}Q7^3]l#\gyelCq܈z}lcymdmd4 R "Ư7Xvy*' r.Hh(~ƋF.MF:L|c:174Ƒ*Jk'{G9G> G. œh%qI7akќ#9 .h% .k6]8GFf [6E/sc!^)bet+HĮ0lτPY̌mW=fZ*X\ 5d<](/1?94'xzȌqnU2Z1{?-W*>E3 HE2;Kۍq:g!OD|$WQ?ҁ~lw`1mOdԛ9y FBRqaѦ `~(#@V"PsZ~[^8 2i:ٓ񴦓=p2gIĪgQƗ }hVGƅqy϶*>n!=L?@sw5d$nDz7g(OM ՎeOAT3LL$z\$p~?v9[yPD&+ʟܐ bt霮W&'k߻"/G~~b\u3Dsʖ@"^ͷ8z;F}:=)J.ѱVŔM1ۣ3l?U"Tsvjz3JbOhGBf'N/ 7J2K cla7 pl Ks)a^czr *YFw·R)rt"ӂj>jR#*0C9L1PLC}=tkȠ:f 2؇N|,emID)' Voks &36|C)#Ʌ> RFeG,yv&s "RNtI}8(VRc\{S hVB\4%#4Q~^DYruO"2;TV?0O҇]Ӑ^?1UtD)x izixTDhB 6ZGJK8),uӄePtU»}]E2[P?݅Or.5O>!&#$ DCmJ뒈Vf1/o&@[gaXpq:!E;&A@B֠:s _ɮAqJ;4[5YgFr6]?&ɓԇ%þ-L]u},Il}t֏v>Bg~z 1 Z5ԦdD][L?;?OC}vg4IMyk&$L)&jb0+ t^Vr֜GB~pUyzPx?S(w=H8+S{jSeK $,%L_r7a<wZy'rL0|>ދ}|APED",s[?P`׮, HPg=XbTnZúbqBO4鶮Cr{軦>׳miɉl4cY !1g(3/Ot:?.XďlTf"%5Ԃ؊5|vPYG/,D8^):(v495 M-jNa@rh_Pn̆E0'%FԸWS}YAN&C42ͪ↥5}TjLć=3gR{: 3U|bnR, iBs>?i{NXMho;5ice.ENʼnt{*pTvG_-[$!ƀuϕd[j~ʸE1T˶Ȋ|y 1n0xZw2Rㅔ4Fr*A XE+B\̑Lyw`bdrHPc]S&Uٱ)6E ~MhӜ?e($c1jm#*<54WFNu@\312ÒIw.cso@!@<9'ع&& dKH7YP:,ۉ8X=*=z>07Z%17ZBM&k) 5WQW0n~C |Q &JD>% _xy]I@j>XVzѴ(ض\oL'/ a> 5MR7+"T+kD g2rغtv])<חݒc3 Agv*j f#_ L.sRş,h,a ֪&L\)E.OIBgͶf1;K[n>EGt~AGX`(6N4A&a kT6h[$ӎq뱑ﶚf ) G]Z(A c5:C߂=zqa1_OܳՂS R@ FvGVUY=e{A3Z>wGq $S-㾊flXtAt;06*Ǭ`mzy9HⰅJ4:ԒP%*cȉkYPDt:]ӶrT!t8LUpt7PBVxa):afq%oثq<' QWͦ..j߇ѯs'.x .ip+ˡDz=`)A[,kS7J#~p9^F5*BD?vi0do'ޮ? 0b,^b݃C@MXztY0b̿)uזmƈ7hG웹K1 $\BDhl!Fe#22*)s(xȮoeiyYfIw֤D;2XwʤYх.#j\k .{@z5OV`mUK*fNp]VX׾ m@n]<$\B3C#pq㦍[YpRTXwwoۂkV*Aץ\Tć^%7GtMuU]`n;bpL8S %x)Fq҄F o)(c*v\/-2jd!20XYxs.5⎣Bd2@~N@D%JCxq.LBBr*'3 [eӘ6C"g7P/m yn.n| o*=^;Qnj$&2HaL~Z;J2"8dD*q{Du9ecMZthlqaG;?ruƹch1w8nMF 䭽jgsכn qF@7K`Ֆ-b$Y?G%k`bq5bW1L+\lFדC@!R7 =}g>PQ.(I)T.?H(;lN`%kV7Z/"a#t}q֋EH*vLq`D0XV0&? :\nb>\][|<{bEWAY[hBӴnEe3w-gCD9E[av8̮*[rf^u 7l<hKkgEpBGr>o9,& JrQV\I$}8 ńW Jb<U 6Fq5esѓ]ZO9"<\Qv9m\|DcOK@@`I%a֑rv,PqY%vWP T,Mծ&w:3U{BWA1Ⱦw`þF (_;iE %q5 "lJxVFIc|3;8F>*VhY?gnlSy&T ߸A0]aa5?PK *P"mda/inst/FortranFixup2019/sandbox/UT O^m^ux PK*P W1_+mda/inst/FortranFixup2019/sandbox/backfit.fUT O^P^ux Wr8}Wl 䁧? 6$ɱ߾ݪKjIݧ&?Ϧ9QvIu~NS;7eIYtp%_~QoTƻJf'E^>CM}]Sn`R%|,M]IvU,ʲyoV\Tg tN{^!`XjWBpYRb&r g@/e` OTb% | ,dE<>`-4>a"? $@ q0؉xhvqʂ2"a^ć;g;S˖~ 39-G[h;p[qk`,m<e6#S onfDre ц3su6P Nu?>oRrmh4AEa4+,GN!z(=v~I,$w-. ½sBҷ!#p aptj.\j!\$,Pi;\"0׌)y+C,l8;Jݡ+BRg2f\wXs":}w9 D6y䃥*W4ؕH<'':ikx*kS \mf(q_H3~y EoܢK2r<As )"$D<.qr/x>qx`T?ƾhŕ2ycQFXmyAkh98<:;{uzX3J7[u0юP@`oxŧL.W`=D.Kg)(}S'EP>aR#<6o{/Zm&BjY4~ڪG|P?hfmSo].4V96{up㒚-ȇMm"Jsa׊78/893n=2}gX28cyw,b= M+,t[cO :`~f^s`)&ج%fC i ԡfMcM+BGE ,U8M]d|wVLଛX\?#e>":3ѐ>%r PK*P *mda/inst/FortranFixup2019/sandbox/bvalue.fUT O^P^ux Xr}^~E_ H vݔUu\*T !9$.4f QNs{%/t3};/_eۯ+KλMom6![dMvNپ{H+'N& n[ɍ \ciӵ5!鷝8OlCmkz&`g綻cTD {Jq#V#HWBF 5r6mW{kFbk.Se1z6^2&p؜LtC6X"EP=ddk[R6-:kkSD|  L#"c BLSRjOYH/Fj'aQ vr[qb]hk J2Om#Q $ܓIJ>>=M> $g;f@ &lgnz8< ${4!Fҽv-D`h%34?& Y?I Ib?Oi & -tʃT$IOĥ~ݮR q k p% *8  4cTP )fll *$UA,q֬w>&SN˓Dm$=!3 @`\eP^SIQl6q`8cyQ$M,OD.|VsL+E-ў2XڙXOy { "NMVQqHlެܣPK9 Sm9~^WŤw*q,Yv% IH[8 q4ƌq0k2S+fS#Q5#䄀NB)>gq^39 ݰ`UkIVtQG|S?_T5CbOPP{n舨f\L̯׮{zmKlbN;u!`T>6Rl,u܁zFrJINsns/ w(20J1~׏?s2k&*iCzv! }E6JQPQxCuQDR;m/a㻶!-GT<S7I-:%kePǥLmQ Jnfs 5.sU}5`lgz}Vo*͚1Bq{M8 3eDUR1!=^5/ ^Db^HOGc&#:S_[ Ul͙hGW}9)Ls ib4X'4ͷ W_Hcb1WZXXYVx9ėf.~ΡzabpFK&T H=?Z~R~(E$r{+/&NͪK̿1ApB fD; _bcK͛ދ=_\ AN7wi5#ë:/b[0 9o"|xK#7s ηq۟_W?㈄^ IPK*PY\ B*mda/inst/FortranFixup2019/sandbox/sslvrg.fUT O^P^ux WYoF~~)idB8@y mEXJS$å$;.CN>xα;\C:*zOReDUtE :Vp,\S$cY%e'򺨋B}Q&[IVp4i$XF#܏Z@bOln :5I0+^n' ʔN>GԝB |& I݆Qp1DžFu#G691* l*ZVa8QB+6F3FVi4Q Ǒ-3e!VY.Ki(2z(\BS(lL)(O+bbLxkb  1Qqf}Ϙ3L/Vr.Z70 9p*+[.V"_ķC7`pν4@YR6ؑӐx0\=WsMÞ$ܛZPφ'f*n烍h<،A!~)__}Y+1g1NM״L0 N9 &DM9wJIISytTO'; cr@HLH'"^HCĞ v { ae CjFEx!"떃 ,Uu=_ii,p!Eas#žmҷKlE*NÛ4wsCճD{] CyZnacCU30lbj1ϲPK*PK*mda/inst/FortranFixup2019/sandbox/backlo.fUT O^P^ux Wv8+@ NI pުsRV2ASsyAg7M/ŵϪ"^o/o}s.[~.MVXsM-?!E90%#߰aEkˢ9J]v6,0HuWnM؄|قjKR}yPhc? |/{e+;ܡi./q XlkXlX[a  Kp/#fmf7(os/LM=48Rp;G0@4oDsU鳲8MyaL8zUwT/9 H1}a zXv{taT\wa W33AG_@Mt#xylCKѤ\` `s]f^ Х#\ }fƜ`d6$?\(H~K[c ̛cV4z>l籭'6{bQtn,R#಑n8_ݘ/Y$2.hTUV̦*kR sNbfCVXxn/+ŨnĐ'SN*lU,X#q `UBau=(XѪ̲6 AӸ"UXG3 n fa9QEH>U[ћ3l _ Fp$4x$Փ9G\ʡM>/?=ACOF`ι=\ӂ -,bZ2FXW<G?j"8ӂ'ur:)$%Iz?rmϱ~WD \ 3E= JqxW&*bh?1Ւ,{(;2q@H }Tԇ,]@W?PK*P}3*mda/inst/FortranFixup2019/sandbox/linear.fUT O^P^ux }zJOAHB zU߀6 0 yΈ!"3{WwU݃5sFfWùn>wsEk;>OIku֟Vu*5;"n1+K@r1S'$PPSsM^P~tQ%|0Ƞ~noy?[nT$]w T Yp(2DcN tq^Oo=a`x,p{L~/oϧ{LS<€hdߊx8O6sgC2 YH;GHhr10곩X+'xiT-eS8,i<^@E5T2 W6:>e اu/&c7euBEZװf#!yB5 @kK1,4mm&dBžaivc=T$8GF #MQ@M#F$q;XHXVP\qi|;6?4?Ҁt64##otWMCѝ R uZmRϫs lLJ"ESV&m, >z8=;O;nmi=j\^XÛW<)'kIPtU7~SFwHʤ<njw?n~TRe.e(-& j{($NbI0c SX+ò+[eziY6uZ\$PjP lP:_l^jwe͗1Ҳ-VXՖJMY\TZ^Ͱ̃ x~󪆉v~{J&7~yX@l6WHPϣW5{A.e_C`hLڇ_^OMuSūIZ6@ye;4>ě3r1jYZ$TiKs>^x5't(ԣ[fB ^:y][W#U ETfr6@t/.ij rk Aa51k.xV0 5r{P+ k (*|C)VA43})^-|p`:UqX.3Yg: Gc{ΎC9+6Yk}\sr(E0ۛ:BdaKzX&ʦN[gk%)MwJ6?JR ņ$:ŰHgcLҶ!-TMGN8˸2DxEl ʈqUۇ&3lAwAXzk묭c >E*t  u\`R`:VGC op*L-aCm8%o˛ߚcd4(iZ$v[3r*ı"E) 80?%C+:=` v=CqG5d"nfFxu2@^FXU8/mT5ЍC:vfG0k[% 71x A ''Wd-|YlT[~ ɍM0ULu1p۠/}dL%y7ɣz \ϖr6A"B,IF\Dwb]'3L|QX!w=ȴzAWɓ^t 0Mк9"w(~ f꾺Yp"p/ΦM @ d1;D &A.H!xڍNPr 78فOv/jXs߾4d,X 9n`A,B= Ї d&} *Hy*ffQUK;1flٻ5:$Rbzv`: wx'Uܭa՗Na) z'C a~ 6(tWgۭz9t7tIg 齽%d:%J;䚬M[N0j+ʰVj$66ԭZ* g;R-?GLR& 9F_]|"l9;AE򖼣G<.faBOE/3*(nш8زH:)) c%v|:Yn*?MX4q sͥTD=wr̯u(0EJGG.О#;qn6s ]ybL; aҌ>?,ά|&6qb["z6΀ w鎞bg#9M _ JdmS=U7i"]dDEwӧQ+a6pPTȑ ﳶY{4cqcBG=Է?喛8xzz#v)2F d\r!_3<07ȣ I.?Q!T>Ɓ ժZx~93p ,Zr;ɻja,O5MY(fA3ɼ3Ąka8b7Kb)&&;m22 6D1(RH/A/AS"FVc켼JvDT>h[zT}:K5LBo:'*; E fz.4\)@&m&E F윅1z|j*I9L\)0fUS>5aDd&̸h5j],N#wZભ^P\΅{n) '1 ayYFHcϿkz@FMD0})ƆԝOfyz;]/0Իʵ [;,~0A-Qda]o*,Go룍.z(⚊Føe\0iK&aQ;nuB'Rq@ QEfU= i6h8!Zvj3Ra|]!$cv蒱aK ۅտNЉȸ[J72`=-OYe( 9-i.F@a?xT– EEJ U5+o y.'_qljҿ^-؝[u^T^ YHM;PkeEAcZ[^*7yze&Z @[)R֌̒6";[s{Y72883L\os{?̈́y2T$@h?0`M gm0W< lm㴭{Gavoɹr'qF3q]KJMw{p5DA藪kN*ު!iCW19JA A1SRyqɦDa]Ңoabyř[V`;>3%p.]-LiBzVR{|.|ؑ`*™-?@{U&&vbww1fmoOOICЖrN08's%1=bz2RZqWҫi)c0=RN|֥P!60D=fjf5e5rq .7кk;^iT <Է 5wd \Yj$X1sS#O yj;?͒j|=ϳ<63! sEKy&MB>>ìMs|?G~0.R!N Jlǒm!g[ǦYq N0<8()7yS߉EX /D[o DEM>DVQw+a*iq20qXT'򭙪w&|It[s5\%0WUsu\}` \AɿSPBF0NA 1È1<SW O[p㫳8T 7A@?ZL#qoNul}Ës8 +r PJJX cבJ8AWʾGE7=k}mՌܸ7.SOV>k}X [k&=7 #=FTG $WՇ* 2H>$B쇃Bry>x ,ꃠRO<TlD`xbQyk Q/-ni/b5؆Eò%NrkGlㅋHTb4\x&ꈩ'Uq0<*2>۩\bF3 S5`irqX%jBNYkFY7 չR\D `wsC?Zk-SɎ}cAm=vvK -@|l :mY%(Xr739\'=tFnL!O]rqJK jO +} Ey(ʺ^ڨJt) /dE&V|K9z[ċZ" ;T3u"#BtuRk u_PN#%Cv4 ׎~eqAmh:fخăX.}}>;/mstC鬫$X,KDOɡ D7^r} x:$xIO㉊pLo&8enXxZ8VlJ3/ ^sh8uSݘue >!FF(e%L iU`"6cw!68z]Wuۋdx':ٺV([š-7ޢvT0\ O?4 3LW*."'O _mRFdro*3cMuF&I`@<5\j6>h-d䙯O/A{2PK7t5u1i:3;D _,#o\ͷ@OԌ,\Q2HN湌!|CpJK38 ŹQ' +̺E*#LӑŽ"NՖ;@r<Hj̻ I\'zHlVE*5ZksF[>GcvW|;8LB!aK@!=y 8 @BLgsV" {$ZgK[vTDfd"k"MW/0}t 9eƇmk%o[x˸j ({Ygo,Q>8pbB @ 3jg 6b\/<3U307I6wZ%n"ӀcZtL['II{:iMI~ #4N v@Xf\3B h"n}Uǿ=mV @s!P/*ԟMAЧs-د_,2 abYS3\׽NNԡ ?OT6 W/2߱KF˽I w1t76sͼso}s"G5(>2\1fji&' 8tz3̠d[n0uFv܄ߊQhs`@=Q cK1mǼEj$ 5pD#x9Cǩ&y [N8p!'ۋ2b7?\8UǏRUT $*#gXz2dY!Ozd;ݍ30qR3BFb~_j*ļX~D/N:1_2hAȿRgF,0=~fAw*MHLioe1-]EKn4?o>"؀в]۲ye޴lWgFr!t;?/l2: ,h؆,Hf Ѡd>\cAУ=BGl(M=f_m$w{^]- r"Fn"NjҼ'Vv'bʈyvakwV Mj>x>Z"ތ&8J&֊(^> nM[G=&U?rZ`^>La0 #Z泫Sa0qk'2(HΨM]NW>鷃C0Bp<}M|'v@k_[.?k*BD_۩!CLT0ut^h]\%wlׁG.xؗ鹯cD&ȤVmA%֥|jk*aQG 8M=p  ״hhOR(ivC5oTm$~̼cYQ~ڭ6O.ⳤR,Zpհ%--? xҟ?!ԈC2g(-8cW2d?cpEC W&xQ#Ў2>Յv,+~Z-|R}FS8TMwLAuU8#'vmq4In&wFD49aҚr,@cic)XiMKҖʏd{pf7m[swFZJZJZ: RQvVm1` T"0Y!nP|~H'@FJ𹗴B_n#lD]!5TSyC2,0`'#Hbx7ɞè_"r85WLiAbχPTeAu"$~T"Т6/5Xᆼ2ޟv`nPMM4/u c]:λ䲛]|0feP: _&Y-i2a1tGVj(,c;YS컜P- 86"=fU=Ua*[x$=|I$ԃ"!wN6c:0/ˢƆ mGJV0 $(5[ *z<%{V8 xL=R=lSg\ӻyrhl'`/9gi3 I!ynG u|$ O5뱯Bp9y;l7 cqh2u@Ga pzXDٍ"*%{3*+eb40En>QQ&6Qy }/Pl/{?WMj=ӕ p3 p`y2L7?N>EI?˃tcv pdv8dXrPH)$v@7kw2b›a]Oy@7Ew$G'yD?oաTO9Z#EBȶ2"|8z R m:7wdSL/AJ{@ ;kTSwӀ.&;s]? o,J֖Jᘕ-nC ><NE4:g뢃A<< DbI3yF'3X8Y$m=ݎՐi$b_7y|~Nm] Brk[SUZvO3l;der'ϹRroqwkv|"@Z=o?Z̺G&7d| /' %"jt deXP\fUK:PCW `# ̽hD8P@&DsK'&k|2 j(6E~\ ߭0$g!fP"lIh9pIQ[,tx}fw<հn}w"CS O97\ &\m1/x:ϐoSSӔmD\ܒ۸E4C#MnXk= 4Pn\5ih2G1S5p#CΓH1)--TF?gdŇc:q<4^ Ҹ=@qHd~ @䉢(B.'V5ȶ.R> 7F8@؊tu)X_jiچV;;9`!{Cxg]?X~S̪1#viŀ\GgH֢J*MtS[dCB]Tދ;f£v ?SNssW#Cx#<:^4a!!#Quj)*%ry iw1EB7+~F/.<ң)b+ jUYћU*F/[3d)h^t񪯮zz+lņ |s9LGK$xYeu>9}mPhH>=#Bun&& hY 4yu6Mo6)= "@jZ̭v'po&w6E@f dY@ p 9ps!>KWfj|[6C Ⱥ,;Y=$;xH;c6.?yxmhOHpkkC!-5^1rtڃse7fl͈;QMD#dBi<FX}-N9My$`nYSui4ƀ^†ZP6}n>c9ɗQ◍p6rjd-*QP>2P P 75 :jȻ0U,2RF#GSUBgv@Gq SX.6y҅vըff]ܰcĦ}ẍR ~B={{S=0а12LObs`BC"[%ۇG"c֥cW,@lI`M+A:dc XxK1M8!<uIQإ 0XG GK:q؎lnH6:`ՆûN9;n3=뢆X賟IBBB!Hڈ**s< ;U8MKS? PPK*P2 ;)&mda/inst/FortranFixup2019/sandbox/lo.fUT O^P^ux XI8)[d3^_6`wDH SU-#G(_ᆱeME~bIvK˪kڴyU2=0./SVTsw>'pm}aҤ);tL3To:1<W~P5/]6LWkvV.)*wPsRKRAh)S07."\FqNҏS.R%=~_#k9Pe< 4K'_dI@OR*3!͐9CYN֑5,׷ uIEhVM42YA)N"+t-/2^s~42K_͌DCtK,P#<0[q osqp@X8T陙@lUILD#уB9 ia/YXWxY)Y)QX OTXUnȹ:–Y%Kgmdѽ{jbMF>~c49G"n3-LO@lFA B XQdRx>i/M'\}2Y?JMJ xam[">~l:mh2?DBeJ '1AldH;\VB|4aYu v3E?lLwbƏJ&AxtWTu\ۤqp$:!,K ?N.@Diѱ- 6HlOpJ {xN_qZ^^[I9pQ^Ϻ7sT1Yɟ:|n%`-xc?vVRd zh>Y2F)R>/t ?8Lެ@ FX!=͝LV}9/e^q0c¢7}^=i`s>i4il6*(ߥZqUuۢՃO}b]txY+L,#caCa 226QZPK *P*mda/inst/FortranFixup2019/sandbox/Scratch/UT O^m^ux PK*PjG !0mda/inst/FortranFixup2019/sandbox/Scratch/temp.fUT O^P^ux Y˖8W`R,+̤sf;m-Qr~.\8',  Lğiޏloh?][CZKA|}uUPÍ1QRKlwmmmCo^^Cus[93ѭjgCUߐ+'T-PL~tч j'UxR+Dw2taI8VGw6 5ĮK\4А_/vn!v|5Upk2j M|<9^Û@X`+(wGkқfr4_zW~ZZO27ˮ;=ˌ[ F-|kw ;3-J-p4]gU͌Njo4 Yu0+ 0.:vLdIXv*~vn8[XRME~X"b0t4׶aDGٗ2exnɱ֕yo(R(]5hM@3Jw6AMVQ8U^᎛1RuO꾼2эw-b"-j*a9evkI0>f{\^6!Zs6}m o]Qequo;T5WvnRs9a,OѴ3ʓ bՍ7mhz32 "J$О0rSPR(/< "Fmy}< Fwc"%?uKl: ]eY}4n{ G`lj+g;wqfվWi]ScRk@e~ZsFF 4Ṵ7fDn3k&lٛ &pqV,DHoǫ$/S!\̗D_7$3Kؓi 䶥nypOu&_-0&[,%"pݍsVe )/XRKH Pudxrx1ҙTW!Bo(0UBձqF xa}ruRdY' Ҙ~@mܒ}܏O|) ]94vu3[yME<@YLJ]}`=bF12d4Gk>KuXr j:}smIYk[_GZ:M\NKaңXH*n{ٍ9O6ٝ.N5kf9tX  ʁP^X)-; PPr|%DRV Vof-> }lk̶|$S.-`]:zIfZk̠߸d]}x" NAH38[&#S(ץ{NJ1?m22jL㖧._soE bO8qY*F>ۣt`Ē4z؄NxEˠOMg<>cA:+KEŞn]R-Tj2#:<ߔMh=2xdѧ7g&G/*=l:-,ĈI+~KKJہj[0llgҙO;\AW4Y\e4}]OSȝZ.k X7Hi#C~1 ɜf)󳒜xjM3,!CZeJ0&lR>i9˯+N^a.khE,9ٜ+HӞzHğ:wF C2@v{RCO 8noF8!dX GǵZ!+{{>mIInGw2!S(x|z&B"ܷf>8dWZc_Z%}NЂwتSG?r!T]o.CYg3S2;dWeҀKY77, jlYW|-9]Av3Ac$4(3#dD\W3ڙ+e4_"+|Pf*(rRbsbIi~W"%P.7p΅)|W8:lZ@) ~{Eϱ4Lg*Th= _`'ɐ[dOZbʦJsج~x^NokR< Γoio~ eՠJTQt{Ex^PK*Pq n5D3mda/inst/FortranFixup2019/sandbox/Scratch/loessfL.fUT O^P^ux HѝdZIhW'Sr`3y̒lܯ 8-uv[a hyFWĚ~ @Y㇗@qD:ءcC? ,y A12gDy*g5G)[?x'i9=#H4'%.azW@yIu leNvMp.t ܂Uvj7hiW4/N`6ҏ5Dwյq>/~f>5miL?Hn_ne>x<+$'L`{78C^h ~H"E8DCQ+-'g:Ǣ~DҴ빝wxO>tF!v}s!BL;smYKkg}bZE=c!{h0+ott/:P;5ےDLdsk,0ȣ-yCoAaj3eGsth( FmL= - ;=bXGQm޹jX\NX8S,tCBA!Z5Gfts7=E+gf\DQ\ ҴQ P#z fkߴ!1Nq6gSMHw+X7#S.l ) AZتg4tIa x3nTą:~`t"gw٦ I>/a{[L [c/ cxW2L>-A 9֊<xd&9n2SxOIyrhDr>9>Rz !Hx 4u=j.%N?'k4S0O4B_ho KnU%V|?ˑڋ12K_c?C(9!D]A1(*KEXT[]VVj[J'X~OMz,k&;巻kXLjd;^SP|5(J}ac+d?Xe237Sb<\c]j; {p=kX%OX?>H5KFaBnrZӦB蜪u ONEyTl6GWzcjY7cj%V7-(ae2\ϞGSHOڷ:sPuUE /ڙ=kZOT_qNfJ=4s"3K@9.ʒk@xu|,SNFL`>a V1>B\dRE!-2ø^I׀"#u̇M kU͠Btm&"*|*H*"C>L0(S/fL,JV- 2BZfWZ`6VefUJgr8KU*!b2[0hțG-k*䛎J)1@2f U*)su݂MA r> o4"?F̧e0ixYrU+jlE2Ux1f'Ɣu&xEڸ~T|Co5ޏ[UEXl r x0," G)AWc ~4ʛWdhچ)3! V/=‡,{,@<\AԠpڣ*:N`@bINx<d* i'C^.'&!. }*I][.wb٦, uyBv>uɎy<{]&+3Ts'a`^B{)@QDj ZQlGxaXWxU@}qnjt^{xU|V9AuL1f r_ v*k1 PkKee=I[YNTTV M,JK]5mV^З5>ğChl)Wd/ ~}o{UO|Cg{Se5Sv<`Չ4WL;ټ]f;#Ld$)ޙfySd;+lzE@ye Rj[{kӝzFԸo1*s%BQygQneXhC&di}J ޼K RarZs[طZywoÈ(=|8V. [q 2D JD&lU@F!7l]&#onyE(BLtyU⠻Sph -k u5jYuDcUa9&׽_/ΊT/"TEﴗ'.;pk^]=^{oM,dalQBr m4u(lkBv#>h,6y& 5>׮Ofӷ,poRUiḢt2Ѷńpx2k Yд DLBd,Lےd Ӑ^LLY rbf glL $/lsAč9觋13Mgc@N";xbE&žZcjDdͦcӅiʹg - 6:[\s5Jhɹm Dj I2U+Y&!QdZ%@IKXSj-a#:^iX k7?X Z|At|Jq `heea3͔l|N 6rcL -{Ytp%,_p^Ĕ8705HCc+jO zzR+9&=u1Oc Q|'ciD!a׺Yp:g.}wDOǠ=|>S[_hCs5- XsB]'ħ cg{Ud{ZVoC*ֻ߭<'Cqx]Jo0-$ҡ>(nsWKGq]^"G ;— _Bف?úD^<yO;CˇU $P+eSw:J[xɎW+Q]튚ERi6,EU1l2ZoA pU;{Mp5sF P/(mQnYނ8,JF;55;kBq4ڐKؙud;IWFTTYtXSswoNvI͈3#)VU[E<""#Zea^i+ʰ ۂeRa:&!@[p7wʩrl+Ƕ8rmTh+'ޫ*ۂdJaACnURmVma]Ћ҃ D/F[y(|D6"Nkc16ְ@0Ci=ژIr$ȩ?%OPJ$[oJH"%F8hBp{iWAȧ GoO]HHeI ~2.ee~%1e0~a\<8GA;qv7pJ2=(o_?-nIR'}'Ω}Pб6[c@9G.|I#~^LC(-)x@?/9|2>fZ鶜 #`,H`?Oh0m:͈Y?$os0Ї? !CϽ>Av;S`Os|f>AM҂.CO~:΂[u3y:gyզ?VŐgh*ݶ/f>ǪZ>YdoF YPGjST ٬9UE }'V7z8az} ^{PfT!;4-XqhP7Qخo=qy)-۰T(yfPu1mP|Zj3reEMh&4di?[ٲm`1YծgZXEhVV# 4,p7 W1l$(?H*ȃbWxZ}8P޹3|a+1`Q\$@򴺓K&.LG1+8fr"JRVY!?/YMmK^8 e$Ѷ>FbmL^6ǯclcR:pDY; Ƥۘ?v#Ql#_ȇF.Fv}Q7^3]l#\gyelCq܈z}lcymdmd4 R "Ư7Xvy*' r.Hh(~ƋF.MF:L|c:174Ƒ*Jk'{G9G> G. œh%qI7akќ#9 .h% .k6]8GFf [6E/sc!^)bet+HĮ0lτPY̌mW=fZ*X\ 5d<](/1?94'xzȌqnU2Z1{?-W*>E3 HE2;Kۍq:g!OD|$WQ?ҁ~lw`1mOdԛ9y FBRqaѦ `~(#@V"PsZ~[^8 2i:ٓ񴦓=p2@@JN{:} L&T Z] a`&\p=Q3-=x|הzZH XɼԒvI 6/Ug#UyuԗO)zt_?O bpDţSk' H8uH'd?_ Q}` ~\7kT9KF'V=2U7sDE:2.{鼽U%WOw DS!_q 8z9CyJMmʤvz☙`:;ʗfIa?r %2= Wt_N%b85Y;qz=-ӱ{yM./÷.ؚ掸yH/o_l!S$ڇM}}C}'G/n y/N<~]VᴕMy65c}+ޚ#>?91̭)SAfv~eKD/h&XD@qH4 %De׀)P~h ئaKmޘ+v[`P{!TJ |rG=/3?qel~/4SiYG亞k #!WJXMɢ4ץHl}JTQT (eJ`M[F1gh>tOdhG"pNIOx@-@~ˌ`LK/? ѵ;M%iI.a2(;bc3KٔڅvB`K Grڛ9cJh) $ ͂,{9JDewPR}u>L#뚆pډ1KҧvHēmUHK]%ԧ"'r FkA"]nf8zY$aNa񈬛",^C7σ*w٢N.~ sx y03}Vv!7]$"ejWZDT$5y/~y78,= ŲOc։ y>mIT 7AUyEܓ] 9v,jֻa8' A%i?f?~L'cK}=&[<=,( X*Xhܭ!<[|4)g''3zfM&t.Zm1jT{5L4)'?ű;){)NqVդa9J,ӗHIYK,!nnZ߽rY7)0YᯟNy F%waXٸLe} `d/_?FY.h౿]Y@ Ξ{Ĩݴqi6^im],zwM}gӒh*@7cCbP7gs_Nt})X67x~+\S7#[%5DtkE-kk;;%J^YnI: q"StyХisͳ3k@VJryq4fv8<.)F|x6#ݘ /<`8jB>$qkyƳh)C3mhdU-IkZǩv՘{fZtfJB٤Y*6B$|Dwjt\~YV1T7`,.( 5&{+ RS,Ҥ0<}YS"ϯJ"7NLw8;,Pa N\<+5?,f^zEVM-c|.g@7qwsvל l 4+պsY//1SR *ZWcdʻ+#CFRfޘ2̎Mao,TlE7)+D!AnWkU}d,䩡22t4+b}MPiIl :\].X9]#L m]<M֥TzSZ׬O츾얬fy=|oNUQ`7o_`ru#0(gAke [V}5a"L9o-:$發ڙKZCF }PA87bX Fgu=y[rE]B~KK> YU:v%4\kV;n-2Z)Z/R8:HfQsĉ%makj{L=lyS4m_(,əNN=2-!8OqyJ`48k5Y-u): 3H<;Y4u2J[2ل@="9v[|?t7oHYh8rzE "h+ pjgYԋ pr|U rW8}\h62;*)ڍ?A}8Ss$)jU7fϡ݁/eMWy?f]hA-TbQ_ס,P858/ umUCN(O]Ê"Zo')az ‹;hO 3+^u|~9y>ؼo6vt T>@wn=q[p Oӄ^YM$dN>%K (bXQ._ {.ߎ4Tq"Kd. {;AvDo7I@#`;u7BjZ$j L͂y#eMl5F$Ag}=bElX_Ip'2 Bm` 1.[5x☐QI Ehv Cv}M-Nb5K&%&u?ݑWf1 'tpU梻_K0ҫy:o-\R5 ĺ`MhU$u?!d_jɀ7m ʄʦo׭h}XR.'>*9zեkVf⴨#tsg +XƫL1&4nxXLIFPK R|li,oWs_& hi"d›t s& e /W{VGsar-Uq>Qz(ƌ/ B6i䟦U+*l\="Ȉh̉#^avGH3*4dd i`C[^;0}~:,ya1-W2ԹhZ->')棥{jUrG1gu|q˩`A:X@&1oP)F.\]/bbs} i#Z"kM*s06cߥ{e*~t?@bive4+O abϗڧ ?џG5F 8pezذ3)nxFU ;1PK *P(mda/inst/FortranFixup2019/sandbox/Fixed/UT O^m^ux PK*PB_1mda/inst/FortranFixup2019/sandbox/Fixed/backfit.fUT O^P^ux Wr8}Wll'3<1`qc_}cgjjiZݧtFdMyډYZh\|"? $:@qꅎ8ĠTVv =SeqѦ^/sXkziyOX4^=Չo_E=bC@VF(7B`]䎩ՙEո˳X -X!~:֨S̄5D"awåf z[6'b]Vؤ+ط⟱etH|~? 0l"G5rT[Ѻ([qK`,2Szԙ7d3`IMԴlbʯe цcy9'iab]6L:M/T:g(H:EPsYQc;CpgP`3'qxvqE f/$DiBX+K. >8xyƣA7 wHyVAhڛ~OCϦ=VlƆ@?^CxRΆfE\51I+&v56I6i%<#|ྻ<*٠ngv ck<G]r` r}߻{y;Aڱ_ʎww?PK*P 0mda/inst/FortranFixup2019/sandbox/Fixed/bvalue.fUT O^P^ux Xr}^~E_ H vݔUu\*T !9$.4f QNs{%/t3};/_eۯ+KλMom6![dMvNپ{H+'N& n[ɍ \ciӵ5!鷝8OlCmkz&`g綻cTD {Jq#V#HWBF 5r6mW{kFbk.Se1z6^2&p؜LtC6X"EP=ddk[R6-:kkSD|  L#"c BLSRjOYH/Fj'aQ vr[qb]hk J2Om#Q $ܓIJ>>=M> $g;f@ &lgnz8< ${4!Fҽv-D`h%34?& Y?I Ib?Oi & -tʃT$IOĥ~ݮR q k p% *8  4cTP )fll *$UA,q֬w>&SN˓Dm$=!3 @`\eP^SIQl6q`8cyQ$M,OD.|VsL+E-ў2XڙXOy { "NMVQqHlެܣPK9 Sm9~^WŤw*q,Yv% IH[8 q4ƌq0k2S+fS#Q5#䄀NB)>gq^39 ݰ`UkIVtQG|S?_T5CbOPP{n舨f\L̯׮{zmKlbN;u!`T>6Rl,u܁zFrJINsns/ w(20J1~׏?s2k&*iCzv! }E6JQPQxCuQDR;m/a㻶!-GT<S7I-:%kePǥLmQ Jnfs 5.sU}5`lgz}Vo*͚1Bq{M8 3eDUR1!=^5/ ^Db^HOGc&#:S_[ Ul͙hGW}9)Ls ib4X'4ͷ W_Hcb1WZXXYVx9ėf.~ΡzabpFK&T H=?Z~R~(E$r{+/&NͪK̿1ApB fD; _bcK͛ދ=_\ AN7wi5#ë:/b[0 9o"|xK#7s ηq۟_W?㈄^ IPK*PY\ B0mda/inst/FortranFixup2019/sandbox/Fixed/sslvrg.fUT O^P^ux WYoF~~)idB8@y mEXJS$å$;.CN>xα;\C:*zOReDUtE :Vp,\S$cY%e'򺨋B}Q&[IVp4i$XF#܏Z@bOln :5I0+^n' ʔN>GԝB |& I݆Qp1DžFu#G691* l*ZVa8QB+6F3FVi4Q Ǒ-3e!VY.Ki(2z(\BS(lL)(O+bbLxkb  1Qqf}Ϙ3L/Vr.Z70 9p*+[.V"_ķC7`pν4@YR6ؑӐx0\=WsMÞ$ܛZPφ'f*n烍h<،A!~)__}Y+1g1NM״L0 N9 &DM9wJIISytTO'; cr@HLH'"^HCĞ v { ae CjFEx!"떃 ,Uu=_ii,p!Eas#žmҷKlE*NÛ4wsCճD{] CyZnacCU30lbj1ϲPK*P Ӱ0mda/inst/FortranFixup2019/sandbox/Fixed/backlo.fUT O^P^ux Wv8+ v@ Nm|} s,RTnU܋c[/:zOjm*-pם_+TVއueXʮNix"S IX2R4l!Z]^c~襺ȋTC՞$_נAS8uozr_VhYFjՃ>0]A'}V'ԅF&FR L8 8/pF x_DC+Arɟ)"bKh ak C|t\C[!-K.Š7_\xM+A.0VNyIb;sn81]m݅^eilm*MF%krZu= sa"~2M6ϭ6\g5Dy`v5rh}:cl~#?PhGrB ﰷk>Ccx6ϊX1z-W{6( Ɖ՝olު=IaP&,ذ\ peO)nN91O,jx~, ;0-Y꺦iS \;cRv?_PK*P5oR10mda/inst/FortranFixup2019/sandbox/Fixed/linear.fUT O^P^ux }v8_Ӝ4٦DI9e} "3j+e.X#G^Ruފc]Yl?߫:_L?OyuyӮ=YٽFk_Ut.VkmZEŮUT}fQ)GTNjߓ j+:Du L@n"LW(>c}ß36) Qz <:GStȣC>eӫ*VWQޝ_TyYe fY ̜"lB(bx@➪y82ח[>Wϣ^;"D2(|l|?80 {N=@! @& HbQ=Ϋ װj<t6'L|;m7y]Kq2/Xfq\D3 F-whx\ 2@g]ܱ=GBΗyqDu}}^s-(᥾Zܪڰ'p<ڎu5>zEbEV͔kv +s);E]_Gba8vUñX-~J=BYG4^%8N$v4gBEfqrg?T$8i{tZ7ٝ.~kBUtۖȲgĵf4E5OFOߧ4 ߢtB'GF:3ٟi9ui*J48yBuwc.02)L늰2qmSh4w3xiev}ܻG;m-{fBf+kxUѯςh.|f$A]r^OݸME{_eQvɣͥM׵=$oDkŀBKQQ1B["Ahߋ4f, [/pչʹ,**Htk6ы947Fŝ,s:Azf. h b1(X6(h[K/^ƻKeL{TKhF\~oLRVu#eW5,z%H5߿a"l;{=j%3V~k@W!/KSh0` { !A0YT? < 4N_6h)^Z29`;هx{F.U5+K"M{$lj?chW3@0_Bui2m`X $CP< uuͿe*PHq_KU1nWK ^T^w*46t;WU_"5 zbUb {t ,Ot^ oCӼU1F5qՠG(}L6뱕Ww1EYK{GETiR"X^=KCBnɯV $*EAaz 1/aUG¹ ;yu 9n/c [qϜ e=S~ѯThݢ+ĿtW~X[HKLV%6/E~Sgq4ZŤ hb)`tc3zN54N+*al@~ *#lUb2Ɠp7(o] C(^f'YEϬ."!} Ȭ 4#, g>8)=+k!g!@{qY%R7b Vc\9C26֍I=]i=*J•OI+Fpc֛`~ yCŖX2^?75#.S+J9T*7eվLZl|KufXjύHGx1Wn mnls-6&Kl' vK d'\Ku皵, |5ȏn%>* *);R-jF?d#U] ~#Qﮛ&3ΎWnET4T)HF-:GyI0 9%a,]-gzʏ#MLx4[j 8n:q@{: āH!,tE䉊So@=b f^aPRp:3TMDžoΟbil6 Uȟ)v6{$|vgvLZMH$ %*Np4 c`jAQ!C|w>_>_>{[]1=/aGD.oKUTjR^J9el0pG^Y6ϠjZx.3FlJWJrtrՄOv kIV)bVZW4?zRcѓ$1j ޕ8*==ʧ7)t/TӞz~*}}m19'Q E,b=uS>zx5f8oܝb:rQX[F+D<2Xz%0UJ13UG tA1wcxO dc$HTO.u1!-KC@¸0y qL4kOF@as8z.㋊5 F;Tb.i (Zd z|I陚w⡨;,%k%Fb.wnup~M/VA@bE(,VJVt4vӔU#Ӥ x|X"+X,L\3a|DǵFeV s4o(0&^O++:0t8 Qf-ݸfkr6$BBp9K|8jq5P %O&߼{>@}ݸsR^-updH%t Gs DZr:{AP!-'| 0$?- p{|jJ] Pф\? ռ~.:Cji gH@~}mb&V7;o&bMOLD"yp27&shKG)#u!wE R`“zCx$w]b+z?Nơ95Cs7c?]7ǧdXgXa~!Q>*P⁉~a aPg}|Vq@r6*HW l9/gշ[Q%g0B;0 c jhY\}Akr%'U@(hJ\sC򉡽a)o@CPY5kU,D5h{ZI%tҠaΪ^/8E+ ;T3U8c-1P /B0p:jLR+hW:oGzkҔ`^-j&ۺ kmH-tV\g yWg4x54W 1cRKbvܬ:wJ(z/| JaS*p\ Wд.XijԩU{ʛUS yQ2ؑW\dC'u,WFsXsWj^LZW&G?ac}4sv,Vޡ OT]8hL{9Ӛ窸 W*L#$ٴv:)å^P(ӧm>۰1 H?[X*ENMmARh[` /-Ea/UX Zf]跨R`%֦KM z_@3 7 @4{]_|\C,_HWxr3٩Zsa~2ֹ>zU&f@o^ֹ\v\l7'w,VUڳqlsmk'M,s4^&5[R#׺ G\{ d=ysK VjX#$CE UErnaĄL3Yci&]n&n0wIpl^%m7浊D%9,jͽ1]$S'TꤔLR`:5shQ@q'cgNu;fz'\ 3S\KgjWBTicb9.pM;=^8?P>Iwhf|cBveuvײ݌e=[m!6ye2,6mQ ɴ}z6j"tرm: -lf-q[DhlN\/`q8,׸R$w6ZSF ϴ:3&?n0AM}/|tx3F4,^:X*FZxx2-Fx{Hwe@>Yc jm沫;Y|Y2tmɝtDG\Lo|}SoG?f}IUӷZ# ZCcgB_2k,Dp;6dYM UPBx}8=sþ|;'vLPbHHEpy' ` }'G&Ki]38=~@#Q_=ſVUoDm$Lc^Q~:eƉ'W3R,-04pdqIh}U[;$?d['*er6_e@a~~nꛨZ3ЎauK;N)m\]Fb&;sϠL{sFcWc3kQN.kq,@zαw4>xc߰e.=mZEE]9J h :W#}cxvhыw17݃X;< ^ l~ow2R?7ߨb]"S:xw7<-s0GA; V *NB &R_?#3=I>|%W/]$1EX"cBc''~$|\8Hf*.pe9CH捲7dOܼ1jDnGDn>3{":))HD?Xϧz>g?|Th]N ejwtݎ&@$4Jb(3a {B}'*ݎy-E5o-ƴ Ɓܾı}mSP_bԾd'!N|Ce}9E1eϩ աϠσi=P $sϫ{cwL** ʢq?wZ>h $'z cU&!Eh9'!vpAuş> 2< xMl}± >Ojc x=Sc-s>Tw 9c.8 @4#o/9#gI3Z@/GO~C,؏P%q^\ZlQhTcO-s v l/(MFN(H<̃vT^W ԻqPvZ%]d#?NJ*FU~~}>CLTZ}zo^t~>W-ש</ p3/pՓ`&yv~ưV8/*0/jYSOu#۝7DH,bHXFfl(f$T;]̘|#< ZH i$6o!9Z%EBvȡU2"|8Rm9r7wdSD.AJ{@=;kT&UD0GpJU8ͽX!rsǢQo.?(gLZ wb3cg'4gP8D}nZn#DZGiC~5d X ="~%:drGW$߃O!ss~`.̀U&H%L`Tk|P0Akk? ܨ&i0RMfOe DtB%*t<Ïhm[?1} nНlm1Ϸtu.L\.,uT躎k>A EFEz G!L/ѡ,_DF'7BD60OUMUq~sK*&!mr_[p7L#fBߊqT9|OVں4RߩN,PW xQz%Dq0ubNs Mew2!IT^rGTٰHK~➚,A\45m?6m7ތ{?$掉=:9=Ÿv+j(%TbNB֘* &|]?ڱZk3_ۍds1 EqwW849­\PY\|uq=,]>ZaU$2ʎqAwqyVAu{ l*WTT#{ ƍ@Y}I+r̢'+[}?؁s_:U~Lm"JY0@xI( S3{w}gv=5*."믻ַRA5|uuG·Id]kdb(3Y-G*Gdb۹ 1;ԍYiG0Cʭ#PUnd! ͗Y-Os+?oE9a V2?a2]9uB(9nBl3* VfO4\BE$䇙nJ$y[ꬰ:q̇Bu3ˁģw8sl9bMV5kmHĚ;;c{B %'RTs1{#)`\:ؕ9ЦYS?CL":a}Szߨ=NF /PQrZ3-yt26ETZϊ+vQi]vIfTafT VG㽨 hz;z.;(l緯t#惚&]N)˷v:KԔxf(8UTl@ٞ.:,ei4̲ݥmhƙY5} %aC! 3#(9(v`*O]{xƐV.acd`A&|vx&\%j3t>Vœ9ȜcoY}Na__>@u3Jai\ZyAty!(KCŨSbIOd](% QYhE:X?b vǀQ۹7tC697Y 5"hR $m{&*dmʨJO?Uy`0@*Mh0uc.,$w'Pܟ*3~VgR/30ʐPg׳Qu $)*k՘AwTYf1_cًs*ov ^RC}3xG4d-I$U͎7e52|֑!Oa@ cWCq5a_K?c^3L5ZbɪAg r6=DŪ/ l^ބ GɁg8l"$,NW;U$`W8kU8>^*̟8ELS'u~^\@Z"!nꢩY\&G$c8/9Des΂ѧjeI4w+x3gW[Ec_,yǼ=S^'m^sV[T2]Zڤ\H.BI-aE(cB\-PhlE+]JzF*Vs>M2a 4K'Wp,͐9CY W{ XoꒊL[6SXQݔ$pG%EWkչ&z.el"5WXx) =<-0 oqp@XXT陙@w6Iڪl3QchOto#_|m쯰[q<^:T?+%+2JA7ظSO , ?#DN$s<>:a&h\Uۭ벉򑰶sçdlh(38iZDpcEAz턎S`ػ:gyV*M*+YI. Q*FCȋD>{ @\D ֺ;ZHw~wW+iG%Izhj:¶:g8Q`8l(-L11Eh*[YfsnƇlk=1%ͽt[uzĄF(f~qdQf87a]ʗCdR&n\ [\ D`ʞӞN;i]O MR=.%r_<|o6-#&}c%*eCU+ǮTM+'^Z̼}/j@FbXK/M$>/oH^9x1ȂMeuIYJNZQNO#aQؓIq#bX:C&1iXnj<@L2,ܷ07ٱƛ- 81 \5U!x|ō3rBG-'Tj E]5^V{LG|e#,deD[:لPK*P9T/mda/inst/FortranFixup2019/sandbox/Fixed/splsm.fUT O^P^ux Xv6SE`$H^phO߀(‡ݧ,K9:h6AГmmeۉF'/Du{ %kL%F%z@Ԓr#+DX>9{W` |Z0ZpZ,]IvO?zHNf&_ÀmnY2ٷ۩ngfd'㺏_(YKZJ~W= %;+X<*x2zMbŰ} `.>64*6KS@Ϣ"Ukγ'w#RDAHnEQ %$ocd4a M>='$FB:  ELTH;+H'F솶Y \[C+vǺ;@_ P*ˊvǢv 4?=5OO/؜qũA􋪡TEv)Z}De>5NxBntR3K, ʐ%=_|Eͺ< Ћ$L '@থ`!t꤀B[dt:ܕH*]h^V*-WjnNGMoD`)+H#}ʨ'V\B`z} ɯcbtߎCm!8Tyhc7`: hΖMRޫZ3@ӭ%o˥diocC0،%#4YYC5d # #5vӅ8RJ]B6v^o鑉#=rhnץ#nJ(|ek˦Mng`yE`P ӧ!w\k,&`شн$:J|&x_xoOT{mq)U4-65j;Rr3hR;?2. 6E9]`agA s~*I+Y&G PK*PjG !0mda/inst/FortranFixup2019/sandbox/Fixed/bsplvd.fUT O^P^ux Y˖8W`R,+̤sf;m-Qr~.\8',  Lğiޏloh?][CZKA|}uUPÍ1QRKlwmmmCo^^Cus[93ѭjgCUߐ+'T-PL~tч j'UxR+Dw2taI8VGw6 5ĮK\4А_/vn!v|5Upk2j M|<9^Û@X`+(wGkқfr4_zW~ZZO27ˮ;=ˌ[ F-|kw ;3-J-p4]gU͌Njo4 Yu0+ 0.:vLdIXv*~vn8[XRME~X"b0t4׶aDGٗ2exnɱ֕yo(R(]5hM@3Jw6AMVQ8U^᎛1RuO꾼2эw-b"-j*a9evkI0>f{\^6!Zs6}m o]Qequo;T5WvnRs9a,OѴ3ʓ bՍ7mhz32 "J$О0rSPR(/< "Fmy}< Fwc"%?uKl: ]eY}4n{ G`lj+g;wqfվWi]ScRk@e~ZsFF 4Ṵ7fDn3k&lٛ &pqV,DHoǫ$/S!\̗D_7$3Kؓi 䶥nypOu&_-0&[,%"pݍsVe )/XRKH Pudxrx1ҙTW!Bo(0UBձqF xa}ruRdY' Ҙ~@mܒ}܏O|) ]94vu3[yME<@YLJ]}`=bF12d4Gk>KuXr j:}smIYk[_GZ:M\NKaңXH*n{ٍ9O6ٝ.N5kf9tX  ʁP^X)-; PPr|%DRV Vof-> }lk̶|$S.-`]:zIfZk̠߸d]}x" NAH38[&#S(ץ{NJ1?m22jL㖧._soE bO8qY*F>ۣt`Ē4z؄NxEˠOMg<>cA:+KEŞn]R-Tj2#:<ߔMh=2xdѧ7g&G/*=l:-,ĈI+~KKJہj[0llgҙO;\AW4Y\e4}]OSȝZ.k X7Hi#C~1 ɜf)󳒜xjM3,!CZeJ0&lR>i9˯+N^a.khE,9ٜ+HӞzHğ:wF C2@v{RCO 8noF8!dX GǵZ!+{{>mIInGw2!S(x|z&B"ܷf>8dWZc_Z%}NЂwتSG?r!T]o.CYg3S2;dWeҀKY77, jlYW|-9]Av3Ac$4(3#dD\W3ڙ+e4_"+|Pf*(rRbsbIi~W"%P.7p΅)|W8:lZ@) ~{Eϱ4Lg*Th= _`'ɐ[dOZbʦJsج~x^NokR< Γoio~ eՠJTQt{Ex^PK*P׍5[0mda/inst/FortranFixup2019/sandbox/Fixed/loessf.fUT O^P^ux HѝdZIhW'Sr`3y̒lܯ 8-uv[a hyFWĚ~ @Y㇗@qD:ءcC? ,y A12gDy*g5G)[?x'i9=#H4'%.azW@yIu leNvMp.t ܂Uvj7hiW4/N`6ҏ5Dwյq>/~f>5miL?Hn_ne>x<+$'L`{78C^h ~H"E8DCQ+-'g:Ǣ~DҴ빝wxO>tF!v}s!BL;smYKkg}bZE=c!{h0+ott/:P;5ےDLdsk,0ȣ-yCoAaj3eGsth( FmL= - ;=bXGQm޹jX\NX8S,tCBA!Z5Gfts7=E+gf\DQ\ ҴQ P#z fkߴ!1Nq6gSMHw+X7#S.l ) AZتg4tIa x3nTą:~`t"gw٦ I>/a{[L [c/ cxW2L>-A 9֊<xd&9n2SxOIyrhDr>9>Rz !Hx 4u=j.%N?'k4S0O4B_ho KnU%V|?ˑڋ12K_c?C(9!D]A1(*KEXT[]VVj[J'X~OMz,k&;巻kXLjd;^SP|5(J}ac+d?Xe237Sb<\c]j; {p=kX%OX?>H5KFaBnrZӦB蜪u ONEyTl6GWzcjY7cj%V7-(ae2\ϞGSHOڷ:sPuUE /ڙ=kZOT_qNfJ=4s"3K@9.ʒk@xu|,SNFL`>a V1>B\dRE!-2ø^I׀"#u̇M kU͠Btm&"*|*H*"C>L0(S/fL,JV- 2BZfWZ`6VefUJgr8KU*!b2[0hțG-k*䛎J)1@2f U*)su݂MA r> o4"?F̧e0ixYrU+jlE2Ux1f'Ɣu&xEڸ~T|Co5ޏ[UEXl r x0," G)AWc ~4ʛWdhچ)3! V/=‡,{,@<\AԠpڣ*:N`@bINx<d* i'C^.'&!. }*I][.wb٦, uyBv>uɎy<{]&+3Ts'a`^B{)@QDj ZQlGxaXWxU@}qnjt^{xU|V9AuL1f r_ v*k1 PkKee=I[YNTTV M,JK]5mV^З5>ğChl)Wd/ ~}o{UO|Cg{Se5Sv<`Չ4WL;ټ]f;#Ld$)ޙfySd;+lzE@ye Rj[{kӝzFԸo1*s%BQygQneXhC&di}J ޼K RarZs[طZywoÈ(=|8V. [q 2D JD&lU@F!7l]&#onyE(BLtyU⠻Sph -k u5jYuDcUa9&׽_/ΊT/"TEﴗ'.;pk^]=^{oM,dalQBr m4u(lkBv#>h,6y& 5>׮Ofӷ,poRUiḢt2Ѷńpx2k Yд DLBd,Lےd Ӑ^LLY rbf glL $/lsAč9觋13Mgc@N";xbE&žZcjDdͦcӅiʹg - 6:[\s5Jhɹm Dj I2U+Y&!QdZ%@IKXSj-a#:^iX k7?X Z|At|Jq `heea3͔l|N 6rcL -{Ytp%,_p^Ĕ8705HCc+jO zzR+9&=u1Oc Q|'ciD!a׺Yp:g.}wDOǠ=|>S[_hCs5- XsB]'ħ cg{Ud{ZVoC*ֻ߭<'Cqx]Jo0-$ҡ>(nsWKGq]^"G ;— _Bف?úD^<yO;CˇU $P+eSw:J[xɎW+Q]튚ERi6,EU1l2ZoA pU;{Mp5sF P/(mQnYނ8,JF;55;kBq4ڐKؙud;IWFTTYtXSswoNvI͈3#)VU[E<""#Zea^i+ʰ ۂeRa:&!@[p7wʩrl+Ƕ8rmTh+'ޫ*ۂdJaACnURmVma]Ћ҃ D/F[y(|D6"Nkc16ְ@0Ci=ژIr$ȩ?%OPJ$[oJH"%F8hBp{iWAȧ GoO]HHeI ~2.ee~%1e0~a\<8GA;qv7pJ2=(o_?-nIR'}'Ω}Pб6[c@9G.|I#~^LC(-)x@?/9|2>fZ鶜 #`,H`?Oh0m:͈Y?$os0Ї? !CϽ>Av;S`Os|f>AM҂.CO~:΂[u3y:gyզ?VŐgh*ݶ/f>ǪZ>YdoF YPGjST ٬9UE }'V7z8az} ^{PfT!;4-XqhP7Qخo=qy)-۰T(yfPu1mP|Zj3reEMh&4di?[ٲm`1YծgZXEhVV# 4,p7 W1l$(?H*ȃbWxZ}8P޹3|a+1`Q\$@򴺓K&.LG1+8fr"JRVY!?/YMmK^8 e$Ѷ>FbmL^6ǯclcR:pDY; Ƥۘ?v#Ql#_ȇF.Fv}Q7^3]l#\gyelCq܈z}lcymdmd4 R "Ư7Xvy*' r.Hh(~ƋF.MF:L|c:174Ƒ*Jk'{G9G> G. œh%qI7akќ#9 .h% .k6]8GFf [6E/sc!^)bet+HĮ0lτPY̌mW=fZ*X\ 5d<](/1?94'xzȌqnU2Z1{?-W*>E3 HE2;Kۍq:g!OD|$WQ?ҁ~lw`1mOdԛ9y FBRqaѦ `~(#@V"PsZ~[^8 2i:ٓ񴦓=p2gIĪgQƗ }hVGƅqy϶*>n!=L?@sw5d$nDz7g(OM ՎeOAT3LL$z\$p~?v9[yPD&+ʟܐ bt霮W&'k߻"/G~~b\u3Dsʖ@"^ͷ8z;F}:=)J.ѱVŔM1ۣ3l?U"Tsvjz3JbOhGBf'N/ 7J2K cla7 pl Ks)a^czr *YFw·R)rt"ӂj>jR#*0C9L1PLC}=tkȠ:f 2؇N|,emID)' Voks &36|C)#Ʌ> RFeG,yv&s "RNtI}8(VRc\{S hVB\4%#4Q~^DYruO"2;TV?0O҇]Ӑ^?1UtD)x izixTDhB 6ZGJK8),uӄePtU»}]E2[P?݅Or.5O>!&#$ DCmJ뒈Vf1/o&@[gaXpq:!E;&A@B֠:s _ɮAqJ;4[5YgFr6]?&ɓԇ%þ-L]u},Il}t֏v>Bg~z 1 Z5ԦdD][L?;?OC}vg4IMyk&$L)&jb0+ t^Vr֜GB~pUyzPx?S(w=H8+S{jSeK $,%L_r7a<wZy'rL0|>ދ}|APED",s[?P`׮, HPg=XbTnZúbqBO4鶮Cr{軦>׳miɉl4cY !1g(3/Ot:?.XďlTf"%5Ԃ؊5|vPYG/,D8^):(v495 M-jNa@rh_Pn̆E0'%FԸWS}YAN&C42ͪ↥5}TjLć=3gR{: 3U|bnR, iBs>?i{NXMho;5ice.ENʼnt{*pTvG_-[$!ƀuϕd[j~ʸE1T˶Ȋ|y 1n0xZw2Rㅔ4Fr*A XE+B\̑Lyw`bdrHPc]S&Uٱ)6E ~MhӜ?e($c1jm#*<54WFNu@\312ÒIw.cso@!@<9'ع&& dKH7YP:,ۉ8X=*=z>07Z%17ZBM&k) 5WQW0n~C |Q &JD>% _xy]I@j>XVzѴ(ض\oL'/ a> 5MR7+"T+kD g2rغtv])<חݒc3 Agv*j f#_ L.sRş,h,a ֪&L\)E.OIBgͶf1;K[n>EGt~AGX`(6N4A&a kT6h[$ӎq뱑ﶚf ) G]Z(A c5:C߂=zqa1_OܳՂS R@ FvGVUY=e{A3Z>wGq $S-㾊flXtAt;06*Ǭ`mzy9HⰅJ4:ԒP%*cȉkYPDt:]ӶrT!t8LUpt7PBVxa):afq%oثq<' QWͦ..j߇ѯs'.x .ip+ˡDz=`)A[,kS7J#~p9^F5*BD?vi0do'ޮ? 0b,^b݃C@MXztY0b̿)uזmƈ7hG웹K1 $\BDhl!Fe#22*)s(xȮoeiyYfIw֤D;2XwʤYх.#j\k .{@z5OV`mUK*fNp]VX׾ m@n]<$\B3C#pq㦍[YpRTXwwoۂkV*Aץ\Tć^%7GtMuU]`n;bpL8S %x)Fq҄F o)(c*v\/-2jd!20XYxs.5⎣Bd2@~N@D%JCxq.LBBr*'3 [eӘ6C"g7P/m yn.n| o*=^;Qnj$&2HaL~Z;J2"8dD*q{Du9ecMZthlqaG;?ruƹch1w8nMF 䭽jgsכn qF@7K`Ֆ-b$Y?G%k`bq5bW1L+\lFדC@!R7 =}g>PQ.(I)T.?H(;lN`%kV7Z/"a#t}q֋EH*vLq`D0XV0&? :\nb>\][|<{bEWAY[hBӴnEe3w-gCD9E[av8̮*[rf^u 7l<hKkgEpBGr>o9,& JrQV\I$}8 ńW Jb<U 6Fq5esѓ]ZO9"<\Qv9m\|DcOK@@`I%a֑rv,PqY%vWP T,Mծ&w:3U{BWA1Ⱦw`þF (_;iE %q5 "lJxVFIc|3;8F>*VhY?gnlSy&T ߸A0]aa5?PK*P>!)mda/inst/FortranFixup2019/sandbox/splsm.fUT O^P^ux Xr8}W葋H灧? 68Xm$,f6Uֵto9q U_[Soɮ= Cv(naqBߺvjQ ڡ.TP9_`jIN]%WDﴍ1}r`>--8-RZdZ bwz`$'M^]ÀmYlg3ו'f_x/^KK~_= rA, <&blcliTp6_'o\S@Ϣ"E xEBR5m!Q|ctH zL&,!9cpEmXݦ6G ) SF>"`< h!p4: psNt'OM̿3dTOEGw- -mк~I}|zY68Dq/* @&׶EӨCNIP.vBs ։rY׌j*Bs5rRRkȀ^kAϵ.r ܴ\ 6xzoC0^/h&Gԥ+ľt"evѕ3@ɼ:0T Kmٴ>9*פULK=G_i扮x^"si"]q,щC#@)$DLz͗`p^qM[%·Y@ y,YBbdJ'@'k_CddI-J;p ~~)%>{X/v=qhץgU7~C:B(|aS&73["/EUf3WF~)~\L-yUO 8Lݏtq qD>E:`im%R+EAT̒HѬt R#*a)s;_7ˮ;=ˌ[ F-|kw ;3-J-p4]gU͌Njo4 Yu0+ 0.:vLdIXv*~vn8[XRME~X"b0t4׶aDGٗ2exnɱ֕yo(R(]5hM@3Jw6AMVQ8U^᎛1RuO꾼2эw-b"-j*a9evkI0>f{\^6!Zs6}m o]Qequo;T5WvnRs9a,OѴ3ʓ bՍ7mhz32 "J$О0rSPR(/< "Fmy}< Fwc"%?uKl: ]eY}4n{ G`lj+g;wqfվWi]ScRk@e~ZsFF 4Ṵ7fDn3k&lٛ &pqV,DHoǫ$/S!\̗D_7$3Kؓi 䶥nypOu&_-0&[,%"pݍsVe )/XRKH Pudxrx1ҙTW!Bo(0UBձqF xa}ruRdY' Ҙ~@mܒ}܏O|) ]94vu3[yME<@YLJ]}`=bF12d4Gk>KuXr j:}smIYk[_GZ:M\NKaңXH*n{ٍ9O6ٝ.N5kf9tX  ʁP^X)-; PPr|%DRV Vof-> }lk̶|$S.-`]:zIfZk̠߸d]}x" NAH38[&#S(ץ{NJ1?m22jL㖧._soE bO8qY*F>ۣt`Ē4z؄NxEˠOMg<>cA:+KEŞn]R-Tj2#:<ߔMh=2xdѧ7g&G/*=l:-,ĈI+~KKJہj[0llgҙO;\AW4Y\e4}]OSȝZ.k X7Hi#C~1 ɜf)󳒜xjM3,!CZeJ0&lR>i9˯+N^a.khE,9ٜ+HӞzHğ:wF C2@v{RCO 8noF8!dX GǵZ!+{{>mIInGw2!S(x|z&B"ܷf>8dWZc_Z%}NЂwتSG?r!T]o.CYg3S2;dWeҀKY77, jlYW|-9]Av3Ac$4(3#dD\W3ڙ+e4_"+|Pf*(rRbsbIi~W"%P.7p΅)|W8:lZ@) ~{Eϱ4Lg*Th= _`'ɐ[dOZbʦJsج~x^NokR< Γoio~ eՠJTQt{Ex^PK*P5b1'mda/inst/FortranFixup2019/sandbox/run.RUT O^P^ux }ϱ0 >c1 a0X!N>YT+רVΉ (k?*ꠔHѝdZIhW'Sr`3y̒lܯ 8-uv[a hyFWĚ~ @Y㇗@qD:ءcC? ,y A12gDy*g5G)[?x'i9=#H4'%.azW@yIu leNvMp.t ܂Uvj7hiW4/N`6ҏ5Dwյq>/~f>5miL?Hn_ne>x<+$'L`{78C^h ~H"E8DCQ+-'g:Ǣ~DҴ빝wxO>tF!v}s!BL;smYKkg}bZE=c!{h0+ott/:P;5ےDLdsk,0ȣ-yCoAaj3eGsth( FmL= - ;=bXGQm޹jX\NX8S,tCBA!Z5Gfts7=E+gf\DQ\ ҴQ P#z fkߴ!1Nq6gSMHw+X7#S.l ) AZتg4tIa x3nTą:~`t"gw٦ I>/a{[L [c/ cxW2L>-A 9֊<xd&9n2SxOIyrhDr>9>Rz !Hx 4u=j.%N?'k4S0O4B_ho KnU%V|?ˑڋ12K_c?C(9!D]A1(*KEXT[]VVj[J'X~OMz,k&;巻kXLjd;^SP|5(J}ac+d?Xe237Sb<\c]j; {p=kX%OX?>H5KFaBnrZӦB蜪u ONEyTl6GWzcjY7cj%V7-(ae2\ϞGSHOڷ:sPuUE /ڙ=kZOT_qNfJ=4s"3K@9.ʒk@xu|,SNFL`>a V1>B\dRE!-2ø^I׀"#u̇M kU͠Btm&"*|*H*"C>L0(S/fL,JV- 2BZfWZ`6VefUJgr8KU*!b2[0hțG-k*䛎J)1@2f U*)su݂MA r> o4"?F̧e0ixYrU+jlE2Ux1f'Ɣu&xEڸ~T|Co5ޏ[UEXl r x0," G)AWc ~4ʛWdhچ)3! V/=‡,{,@<\AԠpڣ*:N`@bINx<d* i'C^.'&!. }*I][.wb٦, uyBv>uɎy<{]&+3Ts'a`^B{)@QDj ZQlGxaXWxU@}qnjt^{xU|V9AuL1f r_ v*k1 PkKee=I[YNTTV M,JK]5mV^З5>ğChl)Wd/ ~}o{UO|Cg{Se5Sv<`Չ4WL;ټ]f;#Ld$)ޙfySd;+lzE@ye Rj[{kӝzFԸo1*s%BQygQneXhC&di}J ޼K RarZs[طZywoÈ(=|8V. [q 2D JD&lU@F!7l]&#onyE(BLtyU⠻Sph -k u5jYuDcUa9&׽_/ΊT/"TEﴗ'.;pk^]=^{oM,dalQBr m4u(lkBv#>h,6y& 5>׮Ofӷ,poRUiḢt2Ѷńpx2k Yд DLBd,Lےd Ӑ^LLY rbf glL $/lsAč9觋13Mgc@N";xbE&žZcjDdͦcӅiʹg - 6:[\s5Jhɹm Dj I2U+Y&!QdZ%@IKXSj-a#:^iX k7?X Z|At|Jq `heea3͔l|N 6rcL -{Ytp%,_p^Ĕ8705HCc+jO zzR+9&=u1Oc Q|'ciD!a׺Yp:g.}wDOǠ=|>S[_hCs5- XsB]'ħ cg{Ud{ZVoC*ֻ߭<'Cqx]Jo0-$ҡ>(nsWKGq]^"G ;— _Bف?úD^<yO;CˇU $P+eSw:J[xɎW+Q]튚ERi6,EU1l2ZoA pU;{Mp5sF P/(mQnYނ8,JF;55;kBq4ڐKؙud;IWFTTYtXSswoNvI͈3#)VU[E<""#Zea^i+ʰ ۂeRa:&!@[p7wʩrl+Ƕ8rmTh+'ޫ*ۂdJaACnURmVma]Ћ҃ D/F[y(|D6"Nkc16ְ@0Ci=ژIr$ȩ?%OPJ$[oJH"%F8hBp{iWAȧ GoO]HHeI ~2.ee~%1e0~a\<8GA;qv7pJ2=(o_?-nIR'}'Ω}Pб6[c@9G.|I#~^LC(-)x@?/9|2>fZ鶜 #`,H`?Oh0m:͈Y?$os0Ї? !CϽ>Av;S`Os|f>AM҂.CO~:΂[u3y:gyզ?VŐgh*ݶ/f>ǪZ>YdoF YPGjST ٬9UE }'V7z8az} ^{PfT!;4-XqhP7Qخo=qy)-۰T(yfPu1mP|Zj3reEMh&4di?[ٲm`1YծgZXEhVV# 4,p7 W1l$(?H*ȃbWxZ}8P޹3|a+1`Q\$@򴺓K&.LG1+8fr"JRVY!?/YMmK^8 e$Ѷ>FbmL^6ǯclcR:pDY; Ƥۘ?v#Ql#_ȇF.Fv}Q7^3]l#\gyelCq܈z}lcymdmd4 R "Ư7Xvy*' r.Hh(~ƋF.MF:L|c:174Ƒ*Jk'{G9G> G. œh%qI7akќ#9 .h% .k6]8GFf [6E/sc!^)bet+HĮ0lτPY̌mW=fZ*X\ 5d<](/1?94'xzȌqnU2Z1{?-W*>E3 HE2;Kۍq:g!OD|$WQ?ҁ~lw`1mOdԛ9y FBRqaѦ `~(#@V"PsZ~[^8 2i:ٓ񴦓=p2gIĪgQƗ }hVGƅqy϶*>n!=L?@sw5d$nDz7g(OM ՎeOAT3LL$z\$p~?v9[yPD&+ʟܐ bt霮W&'k߻"/G~~b\u3Dsʖ@"^ͷ8z;F}:=)J.ѱVŔM1ۣ3l?U"Tsvjz3JbOhGBf'N/ 7J2K cla7 pl Ks)a^czr *YFw·R)rt"ӂj>jR#*0C9L1PLC}=tkȠ:f 2؇N|,emID)' Voks &36|C)#Ʌ> RFeG,yv&s "RNtI}8(VRc\{S hVB\4%#4Q~^DYruO"2;TV?0O҇]Ӑ^?1UtD)x izixTDhB 6ZGJK8),uӄePtU»}]E2[P?݅Or.5O>!&#$ DCmJ뒈Vf1/o&@[gaXpq:!E;&A@B֠:s _ɮAqJ;4[5YgFr6]?&ɓԇ%þ-L]u},Il}t֏v>Bg~z 1 Z5ԦdD][L?;?OC}vg4IMyk&$L)&jb0+ t^Vr֜GB~pUyzPx?S(w=H8+S{jSeK $,%L_r7a<wZy'rL0|>ދ}|APED",s[?P`׮, HPg=XbTnZúbqBO4鶮Cr{軦>׳miɉl4cY !1g(3/Ot:?.XďlTf"%5Ԃ؊5|vPYG/,D8^):(v495 M-jNa@rh_Pn̆E0'%FԸWS}YAN&C42ͪ↥5}TjLć=3gR{: 3U|bnR, iBs>?i{NXMho;5ice.ENʼnt{*pTvG_-[$!ƀuϕd[j~ʸE1T˶Ȋ|y 1n0xZw2Rㅔ4Fr*A XE+B\̑Lyw`bdrHPc]S&Uٱ)6E ~MhӜ?e($c1jm#*<54WFNu@\312ÒIw.cso@!@<9'ع&& dKH7YP:,ۉ8X=*=z>07Z%17ZBM&k) 5WQW0n~C |Q &JD>% _xy]I@j>XVzѴ(ض\oL'/ a> 5MR7+"T+kD g2rغtv])<חݒc3 Agv*j f#_ L.sRş,h,a ֪&L\)E.OIBgͶf1;K[n>EGt~AGX`(6N4A&a kT6h[$ӎq뱑ﶚf ) G]Z(A c5:C߂=zqa1_OܳՂS R@ FvGVUY=e{A3Z>wGq $S-㾊flXtAt;06*Ǭ`mzy9HⰅJ4:ԒP%*cȉkYPDt:]ӶrT!t8LUpt7PBVxa):afq%oثq<' QWͦ..j߇ѯs'.x .ip+ˡDz=`)A[,kS7J#~p9^F5*BD?vi0do'ޮ? 0b,^b݃C@MXztY0b̿)uזmƈ7hG웹K1 $\BDhl!Fe#22*)s(xȮoeiyYfIw֤D;2XwʤYх.#j\k .{@z5OV`mUK*fNp]VX׾ m@n]<$\B3C#pq㦍[YpRTXwwoۂkV*Aץ\Tć^%7GtMuU]`n;bpL8S %x)Fq҄F o)(c*v\/-2jd!20XYxs.5⎣Bd2@~N@D%JCxq.LBBr*'3 [eӘ6C"g7P/m yn.n| o*=^;Qnj$&2HaL~Z;J2"8dD*q{Du9ecMZthlqaG;?ruƹch1w8nMF 䭽jgsכn qF@7K`Ֆ-b$Y?G%k`bq5bW1L+\lFדC@!R7 =}g>PQ.(I)T.?H(;lN`%kV7Z/"a#t}q֋EH*vLq`D0XV0&? :\nb>\][|<{bEWAY[hBӴnEe3w-gCD9E[av8̮*[rf^u 7l<hKkgEpBGr>o9,& JrQV\I$}8 ńW Jb<U 6Fq5esѓ]ZO9"<\Qv9m\|DcOK@@`I%a֑rv,PqY%vWP T,Mծ&w:3U{BWA1Ⱦw`þF (_;iE %q5 "lJxVFIc|3;8F>*VhY?gnlSy&T ߸A0]aa5?PK *P,mda/inst/FortranFixup2019/sandbox/naras_gam/UT O^m^ux PK *P0mda/inst/FortranFixup2019/sandbox/naras_gam/man/UT O^m^ux PK*P>mda/inst/FortranFixup2019/sandbox/naras_gam/man/predict.gam.RdUT O^P^ux Xo6.rpnu{H"8_.ϒ%)ۛo!cwA˔83|nsT2׺{]Oւ 5~kZ[ޫ TKgv*hz`+Vk]{E>FҮRu^ux:2vQԆZruU`I5Z# pZrSU(W;r.s婀;FpՅ`- ~1nn5o&PsC6F|_":qж3+L%gGpݕ[\ڷyKգtq Um9SRik(I:"^Rn a*G@OV]`Hn; EPͮ $9Ts f܈8M% t=[VbV{|/"^L?Pz2gZSEmڇ^-8ֺ2^;ϧ]o.zFwGFK]>LJKK;>֔>_!4;`sp u׊g$9 bj*OɆ8B!Ձ[ ?M*&96fHq svTl䟪8+߭<:*ˬ@˂Sﭝ{r}%дz)sQ$xx7mBa>Q?cmNolDƒNYk*b|zaC`00W:3@tEfj噮̎g t1<cW0etFsu[ x>657xGq$Ȗ40 YKk8zW_W3ذkUG|nzRᵺq 'Wz萜F7?,3H?RX__<_/է\Ɛ7ӆĜŴq2 ?w'&{Nf? 3*=W"?iU'iCckPK*PC} ;mda/inst/FortranFixup2019/sandbox/naras_gam/man/step.gam.RdUT O^P^ux XQo~ׯ \YZܡyȦ]qI/y$b#:5t}" 9|G=tUgU(1{n9oGhMQ ;c[L+6==uBң@wIV/N3o0dYW]eBZY%4wXl*h `V'>(cBEnJWx+:Ri{w=*_PcgZù oDȜe. `1}}jA"6{uRPצ*= W!|T*>GN)1Tsp^Z4CS6eVuޝU{svw[H(,wGat% m,b`R;)Dz+ZYuB=+ 4=3씴e) .uv +I W! ?.Hɋub;bgMːˢm]3,A@Ӽ ,>b>e<Zde5,+kD$4 ̼B8|t୸'* xbvr߭jwj3<1Љ Ooшp]"|'],i*.?V]fffP? H.Q8"ӖLZa$J-^d-ˆH̹__+TgUeH=:jpw/U_!t47-Gv*^Z5=g`xRg3;Ђ-@X:N\,(mF?P:=˩lw,OdI VWAR{mR?ڤrT(=(m5 aV@S&T@hfRKRdGFlJ9-6#yHժI|)G&U /Z_j<%W΢c>MdYMQ69bO)q}56;tg˓2J-/nW.G)UGě  Ylkt]GF13x e6j`O]/pJ3jynh[b]agDFI3d7[w 4X gl\Sunub,`tk{NS/XVN{:REA n/P9HbJQɦ-4ܱ>Hhܢ2)`QSSwK#Qz^V2#qCaKȠ=D{t$|S-'膶@pbU'X-.߾}+ |.鲖M$'vtA)ZC$XmN&Y>WeN&>&H EpWĕ-~п[VuHt@z (0  7] :b<_bnN$6衫Yaa/R9O yFh"rw Uv WB}UGEDx> YGtgFu|ň#]1l ),&,i>84/DuP3zpT8F "sAG󿩬 ~n-x"0NT״$yMUA/}rv)W 2.^-Ǘ&i8ˠl!.G%7\2]bFVHU.\$@.556,*3AdQ q?>DN~0>wŅm+[fB^U߃4ɱ ;Myea ڀu0XWo@ճ[u4\>nYVn<#,~M_߉ ,#Z`w‰]0pߥE5)g4͠24„To6j:l 2vj^M&zIs: i?q~q|hߴ$,/*k˗ cDvyX6 lN;:нUP9Gwq Z?4ĕX(KATB[@2VvNF/݆VԒXXs𣀓Vg͝ߊlD Dgܼ.t{Yw4[qgYhO17:{,ԅŏ_wE5Meu[a&bF*F_6r/Oo_󸬦$wWbzZ]M?w|Q~g~rvtgGxntX1z5m{ cL(C^Z} ?& 33c|%كίGy\?5.>JX>յB܌;^zi]8#˳IPK*Px ?mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam-internal.RdUT O^P^ux ]MR0 g ;h )m3Rg2$ϐ)Jy8rs0*Y@݄K֡xq֣S@L"Qok* 1+A.ϐv~= |'EQT}#rkd=wtˁGA".su[(lY_vT2^WGH֡e/~Ov`:T≩:%_|lYFPe k8PK*PߋH.6mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.RdUT O^P^ux Zm䶑_A \E؛37f3" ZEi^<{Űi,S/MifCc`ۭzoZdj`զXڇ}jc^vmum{zΞ@-{ԛmo6nk0ۊGgv(=JaM-)!TLȐڳxYۍū#liD+_ƮUvr5DMm׃nAϬ6}5j7U,8D0nMn W6ӛvP~ܰ vعWj=yT~:ިƭu&I3Wx^oSFjt/VRz{c<JJI%?~=^AcFz0}~-n ~Yl 21E\vWeڐ&&qNoeV/᧿|(Fj6H}i҉zK!x^岠PO)(US.MiOO$3}fnÇOXչɝRWڭ|inI""sD ]m3aD1`gO-b ܉3&, !,DrD` UF"ZUU+Suo4 E-dpfPrz(=ii&u7y Moqb=M!>孷fp#Cա(۱u +ݲDi VF@[1 l#w\([&%B)-O)1@\n}w Q/G?aP=( \tUbp׶qx&;׉[e} wLfi6]KzI;KyMx/(SW8N{1W׈ٜ$d%]?(8}4p^JJ яD;scS";~g6t0qPݧµhG(xbCXN<{r>)X ehlp[K>&n֤Wt2H=J=$|B)!59pqF?c#joB|f{D!/E{z@AAOs'|pD@yANGbC)nHW34d@ N(5η(ŬopD)6NY cRיBI`0/$ceAĚl/x"L)wIKM@,z>1I D:Vg^/.<hKܑC\*6G2:*wBRQ./ ٱTb!~{#Y" ʔqDN|j˵Xz4Z&2 a͂E~b8cjSpx>9#䍰?#ZΤ>QXk(uUmUɧ3NUܲ ػ-B yG?j)~7&ln#PQ is&[;Tʀk겧lҵE5;y-B4ia@7FÃb-..]nӘd7N!aʊ)x}օL>jggpC&4;a|*ah=(2 <:GYEUA )Ut_NՕ잂&d D**IJ;`?Ѷ7qcL$*N|PfXK5LMA Y0 kŠF\t 鑞0+-eNb\è*$ZfxH8`[B^Y./KIaIgK5]&%}\ǂM&>wkKF4bBJ0)njX=YGⰤS1trq_7ΰ=VYo_@3U恆P z;$/Edz ,vfVN#4)'Kj"fOP=S2u1Q;ӎ0Y saz!'%dys ˂;{Be>wIGaOS_yvj3;_Pz,Bvnq$sd.嚳?a)*S5=Eiᰊ$J Ӓ&) (>ɩL>TD<1-̑/mgeb4UJ^SuZ3q{A[ fX*5s qL]a3?fClv2Xrb_fO\\H-j"ŦsXc^47܆9)7Yx!tS:~ hCQS/E&6<;.(L&5=T4'E\+(H$X[ƲYRQrcJ5W V$QHX QFBͭhJ{T?0Ǻ&+6 OѧOjKSEO24xx4>f+(D;΢Ss혍#,pח1mY9;:#ZA jzc1g%;F%yr_NC1)LTTݟ^qan CèEQtcR}zI86td$!>imV:<J>sޚ%s(w)D?9EI s [1pfԧId}*Φb獥[v`2Z־ʏ!U%]c"XxB֊nÍѤ㟊;ap0,}ȭi94WxN\#T*KJ^/i*RzdTkDHE3{c2-TNy|@W\X|7yY/R)R""x(U'ڠkє|qS)N3X_n84& >܇=DN ݛ8ȋ3]-^ g< AhL3{Uъ@CR!Et̹SZ>GkO_}I.{sA#iYW54mKa ^Pt/Hvi TpZ)^$Eڮ΢z%]0_/Y%vU8L%jtg;hhӧxS3ٳ9g Ȫ},]jﻦqJ^HhԷ2ɬ1o#awE@"s>" ͫ_I; Y!*I:&݀隆-8Qh/,UP)  ?Hpi|Tוc̞>||.xo4&1)BOi89E Ly޹[w;ٹpf3şk߰{-MP'մy'9 m~^4"ܷ@JjsG~2o0o g,KO[Sz~>qJξn\8H,2B^%WcG9?Z-ʵ3__l W@{"@^ο<9as#}#DVw*V@6$bﺻ Dov$P!YϏo6SZ^+cTqڧl+'~ٶʭC#מNN+S2ͭ#El+:*ӹwžt ښV˒=)CG5CAS+>'Ie=T6HjlrmzZK c;ːӴA0_Vw2-uSe%@zG ]R4cZz 6aawqo߽P/PS\Ъ ЪP֒R5*e$b F S&ߒ'ElIl̠ԳJPin"{CR#jtίjyp \Gac4̙*mX:R<-ZrٖFyO7hШ.{iЧME|R;-Q8ǒ P2w_ 7du͠؆͌G(4̥J#1_Ĕ(QA,Ht3AWm̱I*^8s;9}->3᰿;ρ[^E:M΁>۷sZ,$PK*P⥠2>mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.control.RdUT O^P^ux Tn@+FBL BUr(!*!\6qz+ΛT(8yϝ[(KdQX2rw>ӰqKʤ94x'9+%D*R9qCJpG<ڃtmLNH~٭di_#9>i.|TjdT17Xfg|J"4!VfoOi~O_o?NVO&Ҩlkv)vI\w⮛uaUV*t"iAIOfGeYr=),ۚ\[/q_g?C;Dl!p4'elSd2Gcف;2q?}TE:Aim%Ʊ-,Ț:pjc=F Ue6Хcag5~6<Ŷi^~M c]2f=1k> vvҚ mMR %wB Ce,#.rAza0ؘBcxJw}) sUw'xo1ElJ5PA>6aRҭf㦐Rf뤰ctnRjc <&>;{wr{bMuz1h gy ɺ;3 ^b#: :S>v_PK*Pͣw;mda/inst/FortranFixup2019/sandbox/naras_gam/man/kyphosis.RdUT O^P^ux }Rn@ +@ =-Mzh}Z}˵\w/wc.PT7; 4aY-ZF. lNod)Xad J[(.Dx\T$<%>7C "&أ0QV{2)Ӫ@v[H1!F9&+ʠ4|P 2rDpsr m{Sn"7FaҝK vQ#A\e]6f%#N/3c&%R K3Y ey>-ڤR+W=(F75+n9ؙ*GwP'iU{o?E,k h?oɵJz'u1?Wn?Uz('19V+z'O#N}e|ҋW:C~PK*P ݓAmda/inst/FortranFixup2019/sandbox/naras_gam/man/na.gam.replace.RdUT O^P^ux uUM6W Pب !!7A(@K#]TI^Gp{ߐڢ7i8o<Vu'o8/gFCϕVFG&wa__Tmu5+RΥJ7kՁEh*b!f 4DԝH'0u04 [BB*R:L.SvAʫBzNNL䨾PdKsLbS\m)pxW-_Ui7Bn{QilR?>x>8bӶb,@+z(h]ߎٲQi>mNFC6)1;Ow#ތu;}r oP#;^}tbO P=_<- !w?_]?lVAǒ~o=r6܇[af"0^Vn"=C׀3V t|iFJ<"'hcf 3#[z@o3{ PK*P.P9"y@mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.smoothers.RdUT O^P^ux TM6W ԠkRCM=l^|K#XH^W7.ŀ1ÃQ:ާAB|*l = $+ u>БΤd\Vb̔w/dP7F#Q$tܬwyW]aj#N!3NVFvOZbky<@k 99?_AmRPC+c/OjOWߪPB?+d\2R4nN$ jH仭$-6N>I`z˞LBhc"yDkbEg7QJ)^_٤*L:4A /+s\?:) D-yZ}^jcmҚ>5-*$aC Ed6^#Ay i;ZO0pw010dд,BW{W($V1+ƤRD4Cxq4IgՋX- GI<}= Jk$I(_-ryw!N=t ? ^bW2"ò,fKEL*%& qhtQX5GYs.X,O _5}i?U8>8 ˜$sBV.:ǁ'z>qRAJrF{1'fx|7_>[IǛz^]kNg]JyLqN׾LS,+A`R2XA.P. =!& L4S/PK*P>n.8];mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.data.RdUT O^P^ux mRr0 +t)e襷EIԱ3OӔǐSJsPcPq0;28:MX˯8j)~rYT B Y@Rnf Mk)+$eAI|Pwr1ɮS4YouyKFzhP؎Uib8m_#X=caIbRVjyk(p G*5M msR# K-X?!P[<[+Jjĺ;ȵ"J* jDcY\B9 7đrxAkIKgn][>ZHڡy OZ u]AZ{m)T~.}~KܵsNbEX;snP6pz\Re)\_Z,^_\1>5P9,g̘>5`X/U~$x;-){4i3D+Sπ:}; M [6;])?P>)DT=hHvQ!˦EE% /;hڱJ; ?YgyZں|w_afNO2 wx1$I}1ɵi|~ w2Oy/(wMItvv̖[Gv`r_,X$aѧ$^I4OmgZ$Ie <_zZ} mtg6~RMX ?cLdj#9ёQizGv+v.PK*PC6'9mda/inst/FortranFixup2019/sandbox/naras_gam/man/random.RdUT O^Q^ux uW[D~-$"TRjAab'kϸ3ͦ|g.-Rܿs|eK{+ueڡZ+R;!śBbq]Z L[~c,{DC-(᭥;\d֦.)d:: "yZU* L3Lم-+>z2׳dV,ǐj2Ox/=^j~j6say.$!\y02 FZoSX呑Is㽬aszfLccZB:B_|_!8"+?hzb1<4./.B~5}nTq>aa?+̪[g_vjg򔸆1ĝ'iv-ubDg%< Kmv,{]?g[n1[Ŀ,Thvs49Ci0OMav[?PK*P&15mda/inst/FortranFixup2019/sandbox/naras_gam/man/lo.RdUT O^P^ux Xێ}W6@Ѝ(5@ ]`<~`KT73ʷ/dJl.N؉V^Gpǃh򩗕j$H5ʓGjm-trvodEKKP*%$/meEAVv8K6ӎjyRnheGh|Bo v4iqQy^ʲ/?J:VԎDhWmōp&'P>? y*f,ɗE'i`TT(dIbL±LU5ų%r,iwFr& w> L A:K|^/  g"D!3FN``N+`W^v1zEg6[Jh>wUxn8 wT B>D@W#9 YM{_K3NEE0pdv܃d̦ƚ6IdG rO;[qY@^˔UVVR!#ꤰX4RAbC"`xZ|}h{A' =RKYob5**? re/fxfZ &do=T-0X g rS?؎9l͇%q*S(T%w07Q83EW{;AM'*"u^!BBQ"S"MqE`"+"(ͩFb'*->s'0hg B(4Wr5^A4KR593(ѡ%3 2B+뵆$`ƥ=lD5 R 8BuEoQeQpb͞ɮfqtR\ [Cd> L~dWbh᎞=]xv ҄Frl]. tyCȤ́uVG-gJ&+0;W76DϙH$ŗoob̛bFa F4dexgxC6E,fO}$VisݫA=wH[ɕXH?2U6AUՄF(Gc iPOƧ2SgdϜK$7Y^B.V| \YbY, zkL\U?zَ7n`C狥QZxw_tSXyyl(<\;4,foƩ_e̟t UgLVLwOGp_)׸V3:|m9iH}/Jpi^;ͬ <$b1I#EuŦp-J"b.H;)jG$ōcfҽZatb)|<oV>20fcxUڀc`kTK#_!!r:/,oowGT &N;VvR? \ʴoh폗 9`Ɵ9'0A$g{ĻeXredҜ"jE?>dL*AuA:8*aغӾ hK^MKX)x Ԫ1$D1d;: >>gO1lrfǜU}w9? ;}>+![59dR oF*Y"8.݁7-i:~9.ѸLė)BZ+-dXW*.IjZb*j[qMj[g"ls!0fa8WR!f⒇Z1viiTͱȲ37u6u͜ Z%$yʂ=43DJ&=đu#:*Q7m,LJF22^ikJ:刓 }d/PNG[̣`\B6I/n)A X{|8 n[,emu ͯx46)1| 贜 GZ1ƬF!.urjXᚈ%:p8r`dg0FG(፣c6l2 y (CѽWV2EЃ.x"! 0x6 (HGіZAI =zɊ 0mLϥQ2T(YW[uv Xc'w){T5g1%4y#E="QA_vuֲvqcg4p=n&dxmV-H@߾7|Vf7t|O y_dny4鱠tno4XKa|#ۙԁ!nS1Z[kw<WA8>*`CB?xv\A`YA{~z?:[9OIE`@U Wj MR/ 'ㆾ_s6ӡk1{c4u6:x<4JsɲPK*Ped 4mda/inst/FortranFixup2019/sandbox/naras_gam/man/s.RdUT O^P^ux V]s4}f1Ih!-0fC-ؒl=sd{Itq9Gբ[Q)f6/|%U#sUHЪ6oЪJyR;+cWH[xetwMPMr[4Ғ7T\x.%/mc#*%nqRQ>k}~LBɼ|Hiϛq+{2ކpKnuwwJj J .K;6R[c8$A,I!(8GR{HQq/X? S:Yp@8APq]ZZVf$bĵ6VO3oeac%Xmd&VgzNzr[V\@Ȣ6_!{J35Z +PdZ)Qܡ.*ԹWY'ø+0Zq^nr?L.[i'. \!CCJ ߢ߻.\PP}CJ9]3,Q 󜩮g;p3< 6"hO~i=z-ҩ߉}j^_}Sh00,(BƎryMI_[)t2O?x?|?]fFWt!H-^7[#PK*PB5mda/inst/FortranFixup2019/sandbox/naras_gam/ChangeLogUT O^Q^ux S˒0<'_1$NX[ (L]Id{FrvO5֡(CQߞFC%Dt {U>H>hv/o`AZ]KP V-DY+5F&;m=¦vyEBQ=_mu4)8 -hKPz ִK`QA,/,H A.1U*k<9Y4-K-l]!8b"#U\\ h=:V.h;utid[SG_pP:S6hIR2: 0DR; ?c X;HUvE vn/߲& i2iu.~-t获 FxufJuF\͞T R恰6%p%*oɭ,%N*l YXxݫRTٸ&hFOdDM%,Awdy3gFۋ{ ,SO"A!Kk(#L)cjV8RWpr9gJ†\JxM[?VkU4l_Hڂ?S 1_\= +ltLy79j:׼>s A5Ə)5+iΏ]?D%:o/>G2=cc PK*PX7>mda/inst/FortranFixup2019/sandbox/naras_gam/R/na.gam.replace.RUT O^P^ux SN0+"$gpST0M'QbGqT䐸~ͼy ηX%w S4&PÊoޣL{ pyD# |mHЅ~nT!H u%2rinyceIw(W0v].#:kU01U1g6f&UO/Agk_hU5@7U,3ڵ'G,J2۰ϞJ<ߡÜ;֒:{|hme!bq.yZ<ǫ08݊ 0uO<E7#īasl ryt"5:a*\6y\γsҎ;8H_ߌd"4wm5}IpPK*P6xE@mda/inst/FortranFixup2019/sandbox/naras_gam/R/plot.preplot.gam.RUT O^P^ux RN0bK&0@:EB4I ߹s҄,޽wdiջ3މb{vޖbsL:bAa"(V BI$~SbM|l̸Z beb<S-4*7JDI@h[wHSrID)d+ !hl"] 6%drd=G݊E\S,~]KmM0V@`//ciM ETL΢!g `[$A5D1F|%o6qZ0J9skW<$x#xlXRƗZ`]|+&d)zs?PK*P9@9mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.exact.RUT O^P^ux Xo6UJiNB0pvٰCތ|%"Hoz9i7`V^ǏFkY$j/SoƣU]Nd5=|mm3mdr(.4&b[;eq]CuT[YiYjUzud td*g\Su-.S΍Ʃs*fV,7C XԹ[*c٩հt&K*s}!~^Ɋ}!ٓ'O[ξۅz2fuΛ>= geyA4.YXym+Wˡ] 3Ս<]JjݽRXL c~ W:eoԺRBAls ѽruv17KUZ֙WP4y+2\h/LKj2\foJ7/-pl P+TKϴN: )-4 wU8LNR`BwW&c+ơRrt#H`k},ʱuf#^B`P1.'ed+͘%'HUj,ZPaQ'`[8N/1׼G?1ŏ;ш9Pv5>#d0ǹ*nyUOroq͔fP254͑(n8C[v~Xм.SBȜQ>uu BM׺=vRFؤn`!U9Ht*)PW >~-~X拞 ZqH.yX]Ӳ4F?#$%9 ?$N2"躝v:SWCT)WW%DAlWiت2x$dclhK>B7ª4Ў  [X9IGa#b[Sͷd r#A[LDK TzhyYu2D6E (JQuVN"n GXFRFsse1}ZQ%]Zwxrd$>ڀirX?2îðq!<cE=W okԉLfxd8.MbBF19"хkr^&H< |xYhavܔ2y q8I>zjmYLZz X<+m5ޠ&7lqǃ@m٧/܌DGwR6KwpB 8FL8|`#58-ƆE4T kYU@" w݇P2dcooPiy'U {ѕNHAIs,x 2Ń69YVǫt==n~jRwt޽.ON?;v ۈ"LU,H |Kn*>#gdcG[ %G22,]L_@JU~. YuI!p%qo㙖k,W 2YEֳ3C\vB^<;&9@I("RR|) lepH#Jɤ@pGN1\DKM~zc+_)i^<;P>isPK*P9^ 3mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.RUT O^P^ux WK6 >g~ֳHl1k-,6@.Dc3,ib"$G6vY)VRe˙ݤwfT KIQ.E+,p_-\)$AC/77'YP 5Ec7*|UUgw(˟ nm:[ zb{q 7Y=FP(uE_yyof-Gܿ(tT[ [%;d1Tx7m?l#GЮF /N.8i~u꒞E/J6c;ސufg_Ɖwh3:#XV=PrJa?hdg"nHVq6Byg'+诇bh/34]G šnГ^=4kĹ*,NMAimpFFuo,1Hg S6377W5iTk0Xro %ξy7xTwvcӇ2ƭayqdwBF#]$[@gb;햌wμ}\'lQ.IqQAѐR΍rr.G$[,ht |mC)v~azµg?OE!4j(}>SXrg^cV|_YX 3h LGΣCWH^6P\941e `m7.?-c#[8Ƭ 0sǷc B>b['U_qfyRK%+$k3 o)ѥd"G{3Vm;O$G~ _MZo_"w塾/=x4רZ႕k?4u\"U!Ok֡Xsl0 l/VE|G ˉRcɀ}K~#TMHs.zH, ,^)C{M!Q@P#|qy/S lj/y1q +ll?0;+q.#@V,ʓ(! s_'wc$"G;=hh]^5dg.}69.S[6M3aOݭAsI*7\IFH .,>͓|irr5z`O`RI;2i[E0TYF(ُ_PK*PʻݟD%?mda/inst/FortranFixup2019/sandbox/naras_gam/R/print.stepanova.RUT O^P^ux eRn0 =7_EJR\91vک!",img;L!~~~~v"}BtR*`1:H+3ga˝v'ABW[eKBcr!&yz~~?TEAQ]2*@P@ Rֶ4J^ gSCu) > 98K`LFd$"Z2Q&hir(y:z%֊#? j.(cӤ ɼkMIw2PF{&\R5ҮUFZRG@쁘sYl9Vd4!3۳c*{xlZ5|`&8q{8D_p'62sGdHdj 弡Y-FńGOh 0D?3jΆ&uRC B SOxP7g=mUP q*O 蜿y4ǭї~C FdG}.tJht=1w":5zBi #IyI"Gy.}[%j|تoJچV&clRu"LEk6Iƒ(v[&dv3f:QJvÏfN-|[8X5VtdUy÷Y|ybBM_N)- [K+ HU 3[ SnҭBVjY$nm^f8F!P8Y{%RVp'VB*!{8I9}vL;ղKd%wo~/b܈n$:(+}~Rn!c9ҟ]  Rr%Wb,&CX:Uܚsg%`A30STE:Z@ "4&)uz7w糛Q7uZd6xgvxHRn̕}=Z i +a"wrƹo HZɜnlz#;3rGutk,~VVa+z#b|)f>6Q=hE'$/K80fõ}wtv&b%*G, 2%`'хm)ËH:π86雟2zt. vI9L:(7pbn :}ҏp;M~M)?*ZXGꊍ,r*`Baw9BDދ3oTz?&Y2Ԁ!`J'nuFZi T8ot<={m|Eik c2e5#)ZԶ"JКX$dJ%Kˀ-W|2.5/]9f2:@|w_#w[։)Kl=jZXZUĮ}1@_C{5#XCTG1ipwS]oYN> Ҟ&9r'{} dJ9!;$.RQ7C}+KQ!En@#q{?v.]F_`jgD),ܦo(PYS5mƓߑ!| @պt4h(VU kf.(69: b{%@j@bV[@0P9G*Y׉9DdF|@R!GH}Mæ xm\PjOn@B giq͆^Ή@=fq@$)p2999y:-X붓AP-%$#ТjׂC]܅?0^v>޽p^>){@ng>!8:/ ,OyhKlf/TEGg&1hL{FDhOV">*C(70=FJwI_DK^ 4a/:)ػvvXIb@GNUn 2he=,}?)=== x e*H~bvZ1!tKX.(Ӓ -Z- fe '}9GCrJ7e OV5`rG5oćo(8P!RDuL dP'q{PK*P!=mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.smoothers.RUT O^P^ux A 0E9E:t@ h3)J5kળ>πѮ }(ZK=q ƧxVHI_7V(v^=wXYդF%hfccquӮjOԯLI{aIL12PK*P``3AP:mda/inst/FortranFixup2019/sandbox/naras_gam/R/labels.gam.RUT O^P^ux ILJ)sO̵M+K.OJM.ӬRĒ"JIjQn VWPK*P(2SN 8mda/inst/FortranFixup2019/sandbox/naras_gam/R/plot.gam.RUT O^P^ux WO00B**I;libpnpیԉl:{~vMt~ϥe^We%R"&HNJ۫je`s}9!OW?wrHSO|ܨy'3; ƼeG6#"u;VCèNZ}}x5MWF >YS[X" lsY8d ̓qI WGyTPZfbY"ܱi 4'y!V椕 1W ]\Rt5Ajs3*U#ND@Bq`jVdJDRYT1r AҘL JF ~2K#Zk9%TmQ, Фd?#.s0i; fn .2K w/ > rvsFmͱ%6U5{a֜ۻ+*$XLǗ>Ɩi<929һ; ]kzwʑm]Y~[vnRis4bOM %Wl#,j[vPK*P6mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.lo.RUT O^P^ux U[@~N~1vafBāLȤ79'ɶMQ0й|~Өĸ߆n:8pakhU#UC7E2PUސnxlb8]n/ ߹6TRBD[p5fBTQDwOϡm*".#lCB膔'bE: 1EW(U/9ElmL[9A{A}}u-<)^{m+Cl S('#qH@d%6, Oo9+W^q f} TdJyeM|:+bLr28 6O?0~32D5?C}'ZucpP[PK*P^r(8mda/inst/FortranFixup2019/sandbox/naras_gam/R/as.anova.RUT O^P^ux N1{4"ѓ@)6g[)(HK.fƊҖE /Osנ`qd9\&EԦʒG:9eLQI)'PE!ط\b 9!jX>dqX=?c!@%e=kA[ݗ"cpna.Քݶ.yJ}/3;=뱵۷Z?]_PK*P),(:6mda/inst/FortranFixup2019/sandbox/naras_gam/R/polylo.RUT O^P^ux UKo1W *-=!ġ*=hܵXڵ-U;gvI@3DS| % 501.kTJ_>T0{F{>-=5R oS@ce /AO`]ύhY^-@j נ d€^1J&zI{n%]"[]5(h&XlUF ,gl/Y Kq_F;9s&B -`%;{!z@.ZbS+K1o7=CYg^ Ij`E՝pDS8an0Cg<J5$~VDB]z917Ilc&RZ.ߢ[e($CU^b-i"xUƜ;|5!1_BKX Nu&{jA4?)hMOG@ο&N|m(,l yI 3Gpq0SMZ`cB jLdy]ΦSjj}d< gx]/ebޡ),a-& Dri[UcbIX ĉm 'DI(ρs(W_ aj\Oon=)oM^]6~NޒLY'b|#ؐ#1  zJ(ԑ+#.ܸ-::~o#l4z&WN@LS'#~|>; &g1u4WGw2PK*PNR0jGmda/inst/FortranFixup2019/sandbox/naras_gam/R/as.data.frame.lo.smooth.RUT O^P^ux uR;O0_qdK;*Słq%>VB45E^%TlUT ꠥ= nw$ t ZN4x_?OҴ 9'KD,Vni}+Yq>b \WkZWx>X׺tə|PK*P<{8mda/inst/FortranFixup2019/sandbox/naras_gam/R/onAttach.RUT O^P^ux -0 D~)#LH,m4*MĝN@L{w}GU#kH<=&.@&^U/Rkkωfj bbI*vhoRj8MvPK*PSsI]7mda/inst/FortranFixup2019/sandbox/naras_gam/R/gamlist.RUT O^P^ux SrO,.QRJ+K.L +!B9)99 d %: J9&H'W-PK*P_dq<mda/inst/FortranFixup2019/sandbox/naras_gam/R/gplot.matrix.RUT O^P^ux TMo0 =׿qT\hН09(heO[m(q"PD>>OW]VqgdiPzdY&+ \M ܥo#,ZxjZC5.h" B9|ö<wPB;|0K)X7K|_>ypFQt;aLռ4q(+N<~_S`&yNJ E+a xY4v%tB>1} /ry/u3r46oA(c UXu\) ry+'JSWtpZ BEa CǷҒJj*u8Q6 WRaK#!T,} l0t0d`}Pu W!}?zDHw-8S|pC'=<7Hw߇pGF"c@u$6 PK*P舦.o:mda/inst/FortranFixup2019/sandbox/naras_gam/R/ylim.scale.RUT O^P^ux E;0Dk)F1:dɐOwD35M]EU_n\EhP9TO Akzi[ԎInxVe~!%q\v:PK*Pݥ` ;mda/inst/FortranFixup2019/sandbox/naras_gam/R/summary.gam.RUT O^P^ux W[o6~`6EMek2K %&QIIsHQf~!?Eo?y XTdq[&eE;4Җl.eY%'2Y, Hy͵=#YFum=𑙒!Ƹ1*F4 ^Tr5 U3WFU9)K4?Lۈ?\x=͇x~"Y,(W )x)[Q g1Q֖I0 Eك`-P %tU =/oTCe."4/< rg1QA$Tgp$,ֻczU3GqO>7B5: ͮ!Fo(׶AU *\zUû~2%)VJh8YͷT?LdNEg"Z`7Ot - ˺T<-zQN6i2:Prž(dǖ삎uk- &0 WV|^LԎ{h]fZ'g  ߥ@"lBf5NC/Lc,Y% f̾Z8o9@s)[]߿avIi6R6)fޓo3"@!x~֮:RIY<~Q^Oⱺ)݉# }nGXs $ V[ͦF-vTc?76sH~ u?(Meݲ%1uzqq/2[EwLp 7jJT׈ ь3 btql"KOgq#Cn1@[{Y2a!fKhfPep=,'_}# ??PK*PGP 7mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.fit.RUT O^P^ux Xݏ6_nJ%Z\ ھl w<.kQ6奨]{73e޵v! gQNelq5c֪N3~,ة`}uv_F`Rg+f/ >.+_on 2E{iEXV5' JhOo;mMG[7?NT͸VX(\8^/7 ʦ,UD#0#f4>}ձa`I8*$oܜp[kz@UOrϬT`FleJz,yt{eKXCpiw0J39N/cH-F)pY=$U>FBm%xZ S0C ɘ,9 >v?dūmwj =f7RQt@:s] {?.}Ǡsz!U륂VX J%sNie?("s)}Y[(-wRps/HR;2+4L𦌸H{OfVss\o7~ M 'R ]ACcX@u*yY] HУbe/vq>}|mVlMGfv<|N41)*HT]h/JPX!(^yMLB( #v"]ws[4l6)g?E(h|YphNLݐ$&W5\@wcZX;UV_k26Z`rkk VtӇ)ػr}-0lJMwr&*11폍 "DM\6q1yzș*vRNhY~@%b{ݏĴEIF4h^;.@5=wdVn+\P0mR(EH h'1O2`^mv(ipϬ<"s[֠] ;9/%Z 1N N> м.Bxd9@P_pXx%:ϱ31<9 .?[+&qBrh);XÁ9e~c&i.0B0pHSAɝ4|\_2{L(]t `*#CU8 b1`W,8Q&ϧӇ77JfSD Lrq!`_ #a2̢gLy]H%8'ހ2BsGǂCsG>5$~-)Rvw׉d'S6K-O3>D@FgeUJ,T"GU ~ĚF#X"6('tg4Sn2TV?DCs5A&^"^^!0W EKEa: [KM/iAθM1#L _] dW"eS^CuaxH@3rQf#` vJfQHf<DI⦆*7 +gImtZ *ߒtqWNBN`DR̮yV=ՑBnhWۥiɄv(YʭC?ZĽYzp'~oBoT{ ^?OgR'Jx[2.y0X;bg&6T'^U}U˓|0vrty#,SBRL,1`~̤S]9&2UbBӕZ?1K=9H99՛PK*P>{i Cmda/inst/FortranFixup2019/sandbox/naras_gam/R/newdata.predict.gam.RUT O^P^ux UKo8WL Yh^{2r%憖 ;3pn+9桬ZUM1r*_]zIC Ȭi2ms3CmI;&u35> BO'}κU[m} E!1 y I42Y-Ms?$Q޿w(tklp@eQ]9{\V\sN7>Kص=ܘ ./wuugAbj8P (lŶ]WKscY%SXQ$?ej=&lg'yĪS[Cw cSGHd;5QUk.Rn"3˄V*XyCWbK,7g`}VM54Dc[ Øxov)N ;eŁ8`b>OUlμD~R,컭&tA O\Zz=47RYor}HFjWPoδ,bT댛f\fs'K-ɌK;Ui Z5v<3C?$>.>9Kj35 S<{l #̦IHޔL^~ߌׅ+ ^b.^PK*P-/5mda/inst/FortranFixup2019/sandbox/naras_gam/R/gplot.RUT O^P^ux SJ//QRJ+K.ӨQ -NM-OPPK*P%j2mda/inst/FortranFixup2019/sandbox/naras_gam/R/lo.RUT O^P^ux TMo0ﯘ"%2JD%RQn=!xw-bo6meӪ|{_?ovGze4(88+4TpW|(%~9l^FA'miEߓ՝\Aa6wbdёG?0$K5`5˲hvPa bAj/lkB+G5ju]6M{h]ogcuj'pҭYu1Ɉ uPK?xy["[VқsmNx?!Ic3vHIJ@C8r98!aFźY8,7g!E*#fb[9wyoO ѐͮO)qyʼn!-* @xr$vwMj~/{G\ D^uš//H~_WV݀؜GW ߹~ڭ G =fzy]!5@=7.L7c winYc!CNa7PK*P؝%%~;mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.control.RUT O^P^ux 1o0g+NL 6* ک[Ǫ dlMRCq+,a0-hHI3p%#5JB [`%U :ɍl_UhO/ PJcM޸E Y v/سArF@11"f^pkA@b =Kjl(Rcz {a: : p3&} <|H qn]f;Lhb2Ozu|5\Vskٷ4v ,9OE#^4Ѵo19PK*Psŧ ;mda/inst/FortranFixup2019/sandbox/naras_gam/R/preplot.gam.RUT O^P^ux WKo6>Gb" Ub/PEdh[E"HuM$ș7ЈM bMY.rO7<#J$aie,zF ̾#QmD[-P@4ZhP-DmN*auۺ4. lun׸1Mi 1ܸRsRf&@97qH̢WWHAbx&wZq3R SI |m106'˱$V )c$T,{+>|*.?^PGr57_c(1IN2Ǚ!"Q_R4!`ŸQՅg SZ&VPHӸ\@luV [}oShUG+{g)dBaѫsb`ז6 (Oa@kjuv}{<([[:fE6xl+x΍qa 1t bUjm%n "U R"wUog\- ?axwuR>P$qO3J˨ꧾ]A-u'yI+ h> >AdžuԵ1ȵ lQLxugm%9iՁk+N[E]4k)AE]Ts?Ga@fƶ#aXVrX2c+a|0}zQTٱWwl_Qۢ[ꑚ@=Ml6^+[HBel6#A02gێҔ Ga:qBmPMiNHWtx).qtUǹL!r~~ aA~M1ǃ;;D -2Ѭ' oJ}[%xJN\t=ϠV@UhiJ.`26oN?tO>#㕽m!O9솻?Nho,n%xS6ɓz ֱ,OlKjû`)QJƙ$^y8u-;tn8b4Sby#/ Jʾ{ݒ=MT,.=SK .Ҡ y\b: s1uYX.AUB%PK*P};mda/inst/FortranFixup2019/sandbox/naras_gam/R/assign.list.RUT O^P^ux eA 0E9E $=Arq1XDnR)}@4p5$6ϱg [M[Ň= #j] [pQ,+dHL ߵ/ȷ7Re> PK*Pd7  9mda/inst/FortranFixup2019/sandbox/naras_gam/R/print.gam.RUT O^P^ux Qn W$KNڽsj : Rۑ۱|==u@^ /e$,^0'x֪ `u&`jt&Kqdp&*d%T̲̚$Kh#RΦITٌl":&ftQOL'wK=A@- /\8<ͯ.,Ԫ 'wCC;]\Zj#tÄ_Q5PK*PM ;mda/inst/FortranFixup2019/sandbox/naras_gam/R/general.wam.RUT O^P^ux Vo6~_qS҂j5ls`Ȁ;d)f#Q2tIڎSQ%+0Iy?drRH @2Ehl3d5ֆ:\  02V\c' .PeyZtA+ J4V ^' 2N4ё+#٠~P+j ],Q&x1x[#52` 5Z *xڪ&׬ҀSa J1J:cM;#Mԡy (زQ:1Fzz F{l᰺UK0OWW,2 u Nd~˥޲;t4itC$6 ';1M3)e?Ńv {%Z:5|Sd<6ڄWo^ᆥ830§)2 2PG-XC=&8Rp6$^(iDo¦݇u@[8?`b)5:/b-5Vۑ7湐A$͟p,rp;|pI @@BH$%hиV"Jޱu8JbŰUrB0m|C"'&F,K&3_irwGWC>f0qXd_BxQ-o6vb#E!s gWh%,[ >xLtӥAV}E b. ڵ%c$%$-IanF w{pwEe]ct v(ww"n &.RՃN"{[f޶Qv5-Zʿ >pG-dpG J4!l<ޔr^y8JQ+5;aSxv~3iEiZXz#lXN>*0;<(ڦu=ѽ1(](hJ -sN0iF6@ aVXbEQ hم !)vye8eWڙD:J.aD إ*j3\M1<G* &VчE}׈mTm$ . }G{=rtb3^|YHo3zs,D:c]\ZP7)Qжx9w;23x<;=͔WNe^Y`p$~P`'v'@ޫ$DCrN? 1Gk[G努y"%]arrCG ʋ` E0r񢘀 ;Dqoy- D{x-]0=6jqK uR/c8a'k0aNagֆ>^,OoPK*P=w86mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.sp.RUT O^P^ux ͓MS0ɯ2R֙xpH! &RZڛ\`7.ynnCngm%8p{g-k&[њ#NB%CNIcԛ0ݺf*Ja>[Gk5+Z-BlʷCbJ!r(Rul5FUA(>oj$xZw "R;xJmάXveϊ^.58u2|xY>?.X|q4QUTupѬO!;YpU7eHtÏ)Fj)>Bwi4篯w)dYDF3Y1i;Ih23򮸟C\)<0_ ] [Klv8t4A%j4 S[:b#(Z%H BG^a7JR(MӞFQuVsWK(lOrn3 JY>I& MfeZN.A4*?+nmOSrCN+iSmѻ3)dNǯ׷h&๥$ Yݔ!|qt%ڣ- A _B'A8Ywal}_Lh>Ã@ #ʭxRW(BSATa$>!.W)>ymsBD}i f?,[  ShSPBoGzn\%IGt/<)&@>t({-o79nn"x lj, 제6#YeOU{aŻ~oSƕ]B:DU|ðakxϛIVw]p?ncdGE X#d|S8\{fd0-,h$arOl[AcR>O@wA"r} ߛlRb>ugt_,JOaC  nk)J$gnLD>1]{Y!搪qVY) #iz2͡ ƒWvu"XYv\G!^Ή2{'lO;R/EBB؀O[r)N ;kKZ9wsKEgm[OfuKΆRk![&"X6ą_ˡTȡ( 9%L\Sl%ɑ}6K uIbaتN?8,+ A4ɞ%: ֣Mګ2tŖJo$42ąܜx9^Pᴈ8$q wÌ/5vH-UA9_AoODUqCϔ+Ba X" gB'˾`? 4 Z9_s-]0ވ#j5̻jVjŝԑmH6;8x7PK*PSE)U9mda/inst/FortranFixup2019/sandbox/naras_gam/R/anova.gam.RUT O^P^ux MM! Fs9DρbbwP^!l^lvcɎ’rS帩wR) b"/AAjDeR8/)Y6HF6#:"BE9IP(EHB!k7`l7'`'}a3b/vג}AOPK*PX܅z;mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.nlchisq.RUT O^P^ux 5K0 ),V MYdS RY5x5~4.g|q(MʎHUS.F,׋ZPJ+ˁR*:LӉyu_PK*PS#~6mda/inst/FortranFixup2019/sandbox/naras_gam/R/lo.wam.RUT O^P^ux Wێ6}:7i4*""(DҔ-Jȿ̐-6\893LE$uk]x]*6p|բ,yZɅJBnu-2q?HE]'++Pzv;>~?i]cI" ҙUAKcpÿj,+Jsmg$KdݩB;!-<\(v0CZ8:bȚVߎ-Saq1 %(r J'n@y&yL2}jЋx4;#$# \.͎٩f'M麥!TDq_E|UJ]\kYkr6/b5(b.h}@tXqL'Go4 :";1|iY}'1YaA`ӹ9C>'7G$>nG'eXxYOJ -ĈpďY12N!_YF2[ia@Wat[n {#3;\>=4Dه sWG m.")śSC*5{ssƴ_wJ @,F୮j8gSFt-p-6Xl}.LR"|;D|UKJ@(U@+ 0|{1gC ]VVr)]"/ZU3e1LZDR[?E @e MЊFNS(1@t,BH4Aa"!XU<jT}AfVUB“X_'G)Ta-&R;Q:IshUE4gVCvRbN|sP/`J!8z*h*1qaB~:Y)o#߼Tia_m\ RQ%Gɫܼ%k}([tH1/Z4juɶJBcvI3"OFjUe n"9y_Hocǚws$Rh2:R *WST>I9 wMNJҘ8y\O>^$/PK*Ppp0 6mda/inst/FortranFixup2019/sandbox/naras_gam/R/random.RUT O^P^ux P=O0 +LT tBl'M|FJ*v9_ +=1)x/` 7Z|렂` `w8{> zחSY|λ\c#X13ine9xǖ( "jaKja@XFa|5 5)F p>f(Z"]]{(6j^AQobUVO[.,^!`[Y϶6~ɦF&;#ŏneۡ ; y<@E|p(ҾR3"^PiX%t+N`ؒ1=tM:oV:#m8l߳2C| PcJ˓j9[a>-ă)^NLa~ iaqazk8)ܼs[}F_GPK*PA%9mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.match.RUT O^P^ux Tn0(D5ԃn Dle!T@Q47[;R<.24}< 1? 헝@A@f?{ ubU]HVwbSf|fULϜ 3,)ؒX:Xlf#szHeȄrN"M;&m$<:$]dbD3ˣ"/cB M-9oet%EIeڇ,*o4`4N$v .(`[թ*A} GKZ:{$?_%(8MZWon7ɉ5rdq!W"r'V(uV&׋~MP{8^KSu;&N*  y7Ȼjᯱ1+tL30ktg.Y=`Ob!6ޅ" q:螬ޏ(z1!`}-U킟Iȏm0&Hʣ2< PK*PBb9 L5mda/inst/FortranFixup2019/sandbox/naras_gam/NAMESPACEUT O^Q^ux }Rn0 W>. A{bdWD>MI XHf&_O|F`}i%g~Cf:9!MP:XVg\m`X7c.l W ֩FG2&15+ cx H#x!Y=]ciKŹ 9:=XVvQ6l&Aҫ -Ą 7nv^۪{`vgk(ļ-RCfcFJu$Ԅɕo2묔D n-R$Vgk;PcV|:ᑧjHXS:׎YpRq\H_ڔ_x6~շ{-nLE6^6>;F>''q"]5WR,@(Iu6q͞vL_E9,SJu,k.0 hx-: PK *P1mda/inst/FortranFixup2019/sandbox/naras_gam/inst/UT O^m^ux PK *P8mda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/UT O^m^ux PK*PX*K aAmda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/backfit.rUT O^P^ux X[o8~~1vDIn.*b ln: a0D۴%BɎSw)YE<\Hmb窙<Mm]d2yUyF#Y`<l@UuPqTM s4׾7V Y f4y/W77~~Sy7joM? kol;(Y=̏ÀY&ĸ)e9T5j#)3]4y7Y&zRi-THvIQ2QFZpvNGiE^jdf}!lQ-4IfWZmWq FIb/jf @:Ό(s7 d DxKIa<൦%b%C>lm?H-f;(䄀P ʙYӼ.rs5[x.d)ӗ7N"6q#dfqt2OX_0Y ˑ,cs+ݻ"I,Bϋ:[{Et>d_7~9*)ŭx1+d-\GLLk]XiR]l m'"ksŮIhBnŮg*cjX D[K `A ^ xzB ]h2:,8$EOTP$U4ǒ3&XzHŠw$׭0yAf#7Z2{yc\ ~`rLx)M'ykIXŚ=ļI00Z797qJs {(&Wu-3a8qeB!Ym2NCy62Hʚ "`sbz9E`B (,[6@F) T"P!mJ0%|-E%[\/ ,0^ЋܭPs4 .:;bIY`#N%rcFިᒚ3 :%[!joQ^I[,z952pM*Il4"έ$_=7o݇{ д~m@| - 7* Kw".lG:a-+6^ aGs #;nyfhUE-m"c9(y )`1]3ѿޯ#G<iԖ 4a;'Ɠ<'ދ Eܴ1E(u3iZ9y GYiP':R{u>ph3 lR*cȁ1}G [8^n4WJ ӽG-w%R%KWSۣ{vO4n6YcxݧPzC)IN7g+r/ >?)AiNve$PvIwx$f 50[sFik*H/_:Է- KP2B-Ioj '` $ N9- 씦 EHCsWqiaϖprn {`_2_bsl n#7 \AMKڋkAAf]J$?{Hz?_)Q_l`f |c~`g[%Չ^,"1(;ݨt]$ZraV4dK{N$"ΓbCQ詢r'J&jXGl4/Aq{]kc̀"q̷YHρÓfgK?;D0ң;+3Xљ޸`bnxoJb#O{^^}.8bj>3/( }7i`n}SyZV}cʏH!HhOO>&yw#MnLȞ7٫?Oj /W.~x} , LmG00Aea OvP څBeCMY&CiQq"# A 8ǜY2$b{6 R5<@5yzKY@'~╇QN[B * c@J!s,R~O$7n2zN}X9ZSД* 7$.6CrqcDU;6Qkc;6Kǧ5#'G,l&F+3P+oT#[zX4lAgNaiUI Fb%!4Κ.nW s$jh!ɄaȍO;6jţ6Zs=~/C+QX3qod:HFz${ 9~Aĩ MFx:>l 7ހWc㞋 & J =J[jE'h-uҚ7|e]\ 5YFE^UwENJ8;5GƔ2Hinj=Y-+xL7yzxÒE),ۚoog9 ȓ*=:-%t|N{5lgxNqxjGTRMXsP2J w8!Ք-&v&0S<#[Fڿ>vӹvE}seAqrln/<بr=Ri-gLmfG$ؚ o?')m9 B;ɧK @- r'}0şG;p[/\NT;64-4Y'N.ZuI}'NdbKLp)!m[W+n+64{PK*P@mda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/backlo.rUT O^P^ux W[~&UT%eΙɾ>ĀCCM$9hjvjOWdI哺ko3jmJ?9wiWvqdUiUK,lcdkN qYZ9]vG|m.KtLcѓ&쁿$hYZ+<=kpce槰' 1zuu:kLHGW1JS~͖Z9_o;oYnuh(8l *"Mg×l4J,j>X3}..Q+Kպ59nîm5D(76CrYz#ۥpT'ծxP :ڣ,śLI}E4ʶ[yyb"N);y6=JgѮU``>߈djҭQZ*߸6*+ѺLHȣ3+O+֞%!g$mp=OϳrQ&WRш`ۥoTz%7 &p B@JِH*jx:P ]>p꣩DU"jgd'?³$mBٜݦw3"K!Gnp:YLC[iW # P+Ѣ*k Fi@ei}hF@Pɶ ꧯ-HyT9!l]2|R=k\5 A$vjOrYd\>"2LZ7FH ~GgKU@lAK!jK,96ë'G`#*bE\z+&~8CPdHWCv瀄pIMʐm&LEX*&8@]I$e@/ ȇTT44`7[@7ꃓ7E}p[#Nwkv54 ݛjĽUKuܖ$1=moh8/э @4oPK*P4̾/Ͻ@mda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/linear.rUT O^P^ux <ْƲ+/qO_Z~sEH9'nTVVuyl"vׇ:k}T꯯2n#mͪnW;sq] '8bU$e^̥ htO~l_Έw,?i᧕I)aV!B"YEY\"8ftF>u(uVi_ݴ N۔8- LyBEOdTH~\竫D> u[Q^> huV N:l=smrٹbb-#jJG/i * smjbw>?r:\ԉ}8{uo)|{P h$?z_KiDKJ'iIAJOHq7SD|=24߃9R@ҥ ĈcJڧi1ʾ?y)_I6^g(6 AHYǛ蘵rF tG?T|kd /9x|O=yN6Iv7uYRT*u mrݦ8q[7*.nMb ә/foUcب ;~o@ G3K-~Rs+?c寎5Zuۡ50V/t݇sBX AbZTp.M+Ӡa  Z.qgȩ?[ ΁87xhl!ط;҂ibM(]i$3"bP8PQ6g{o~ dt0 h^y^Lwm0pY+^ 5r@z#Nȿ1~&y9 e"Ǿ9M^)b~eEJѫ|7 #<"B{ ! xM>>Nqq#*~]-ݡϜcVkxe:DzxՖu3cPE ʿy6Yan2+!WQڽE_0zݗn]VI61` 2&tˌ~{n~@e:+HO!xPcH<r!.CyD}˿F oO=1t# q['+atM ! ]pgZ}-lB 8Y\\B\S0*$q5ox)Nv zi=դɓM~Ǜt*7>ѬǙz5C'k!,ӣ'^71;Ə#~*n<9"q[^jDȑg?|lQWR8_VCփXKr_EVQQB ~rhCo-qnT9X &vaFy>5ʠ9>N<*xS:PѨ;S7I;;0K.:E Z&9qB:1"PTU]vc:T%#;?L-ciem܍,"{XHU`N+U†DU<O<*gd},\s(RQQ)4A,2-,\:6;,rPs3* CՅaY2+ȥ`T&s9,Lio{JS}ESէNfuZk l[5z_DϹ'x}쓸>V_$7cbOOCuMj<έZLyA"X|$ή\h56Mȧ0=fXZM2\AQCcTh%EӺ.ݕஏ1 ׸ހj s}}\y<SN@,CL|ralP=xq|2]c3Ve6{|Ԩ]L/p,Q ɷ1f+B-T{o,ɝ's~#BA॰f+N,}T$V@GjùFbyCjܐ+B@)0}iOӭ!alVx I miV7BdPwyCE.iY$8WNr* 24 *)iTP%}YϵhZG@P֤esh<}dZlР5= PmWsi9RzKO'8ρj0[aFϹsR,R-]`K.]G) X @$+6k7{޻4>o>7rkSڥ/i@qNrA h[*(7Pd*:Soׇi`nrv@mi(ܛr it nnHI9gF`G[bq\^w Ÿ}AK` ubq"}SA3L,ˠ>&X}$JʮXg@620I1ϯɹƫR 7)p!lՒ;XSWVM#,]Qt"OEc<+SQ:T֎x<l]aw6PM~}jBf6 XϹW]= >n73mm9~,")=s(!WLᪿ_OAlU!E!^r _p+obR;{:168)W.K^F 8ea B!x@ӥw+Bbь /F%|%8@@IWmQB'LUx\auaeŊbgZ˝4Zht| _K@_JGI >=WG*I! mp2Y=H)/[2|1͂Tv#U @O mhpf஠TK~VK^4Taֳ17=!scE.Ā|2t~b _PC8F0mZQKfH;ԬIq*֜dgh'-W3H.-F1=W4ն%-@ºݒb WZX;.k 'a=4U'V]4?r^M5aZOjϯyE>|Rẗ́0\A(7D״QIj쳶͡2P)r{C~[3U#***yT^ 0-jZe@~. B-B{$ӹ7ᷡxTteUCyw)hkc¡q0zx70.Jށ0rw:xv .˂acGg@L[NZo `c^eŭȟV| )LdW*NB3:D5eW.E nsCfp~Q15V@fr=˂:s]?=?Ɵ71u DX.< P,Nq-7-ԤX2JEy$,3EpQ|:XIZבD)O6?UVX,+,ӵNJȝbG,OoۏGQzGһOXZ#e~BnyCxS4:47CG{+?4 sh6pO:Tjn^2WLQ~4D!9Huv1# F@Ǧa$PAV/Sg}x $$0F\Ŵj&cPtCKL"&&"i$C!ƟN`Y7C힬!fuZd\Pjk/?_2٥,Jkڤ>$>r h$* ^gv+Uو1 )_bFOAQtfY.paq+ԍ1"VBWQӪ;*ծl$IW)v zU5fl nv@=jz?P .6%ՅorRb/ ce Au>7o;:]4TMہvHơ|jm.؏ߍU"HJQGbn]bi=u4n(̽ h:tB' N񬶡]ZEcGrJ?Q3iI"Jh=(cmM8TvrA`F9W6FS:Ą>J>*T${s-轤?rUbq5 Fzͻ ρSmN=a|3 #ˤnx@//2>⁄(?L旭8!/h=K Zk:v&+hfpV;LuJwt5<{dۍ>[_>s(Q#Sv'̙Z,RniEm@eL[$B-X <gRTO@h sf@ؾ9j=Ɩ*n)hnɹ:Y-0Bt,y4L1iIg*xQAϓIXЪRi; x#,ޓ2GpF z-r2!->*R$x?B>/t-BQ,hdEs*ͻ X6t̤Z(Ԩ›!aKD@Wc2.E!rwŕM?Y2]$zM<)f]%ؕq4s n'AЄ⣧C,?= vW>[і o* YN',py '2e>;(?ҿh?I29tOqEl R/xԃnE~:Oߢ4c=D)eҧa ]'9g>9s60GoAV=jxmug7/-q(^-{f@쎤,qvLu:1E*n3RL&$I"q[-( ނh飓 Bd~g8>b$ȑYGRX$sYنin*%SEsq8|Xɭ*na`9T퉹**ǀ("78(\0oI4|2b*ٳ%n3r G=ǻf'#xX ߁OC .%{AlgQ1c{rFgH&1b @碮bkHv=^δq2|܂\zxEcn%-,/:%-!7PW%<{Y[sk]1P `=bKY+y𳓗։D(9Pe [so 6;L=SGW_A֟aGi#aq?B&%U*~"(*brU ƏqO)Q]|SC[X܀'Y]5T+VW.QE 嚚ZVbpz}0@~כ'Q㰆+k``>`@ o.tVzdP"A-6`s0eкi;_F(PX 1Us;Yz8q[JV2 pԐƓl|c 8͢ߦk8[K*gmQu0(QIlЌ.XDD Ԣ*B Arcl0N4!xnX'j7y>gQp'2Gwjwe5-&1$ Np\?0wPz\E8r}?{hXX_J](~D4|'Qŧ-DmWG R yh05jeV-KVFL= (XC%µ"{Iy?`W;jg4wxxϒEěǑу@$ׄaaKT{i(ac֮80h>)ݢƼ>8nPanhHgXFtKֹEWO^ y7yQVky_2?JD9~my![tPB3kQ|F/8yrcM8yz^D%_[%2 W'hC+/y 7hVoyQe,yi{1HejgNLW-Rݒ,x >_ S%kPγ5Q_E SfLu9_xЅxe*.Uv|7ǒnQ3C]7(mz '{\٩]|f.MT;6f\_epC.>l=XcuYx_96ݝ/7βLס(gc]L݇qW/pCѠf6G;켠y޺_5k 0ky5 Lq}Z.f@~]/VmA#?aLl>o1 U$<,%Sg=_W%"NG[MA"`H\DοQt=i!]"8hY y~ʗ:d=Oicp3H>t-uJneqBM'G8f\$|MᎻ;Xޗ - ccXBJmѱMêw-UCzdb=&m+0Vnm[WֳZ ,}\0mf5ij|dc,cV2Q$R1E|g+5d/Kej1;\ZRg;XèQZ6 A{P R_47;!lఁu:nk m\{:ֿ.U,}gw\:/mRh2WQ\Uze}Iw=G{*PG I9,i/=CDw23뀧 8nρ}څeh)>k 9!1:<ǐI4L;$%Hއ8K ;XB*ψ.z˸e) ڌg+8;PWndP\FNɋۜ6ǯpg2ONY /vdcHNc/% H S;U0{~i? vt1Su8l?+6RxzZ0:%JF]_gnV5ʌS߅38z.*p?Xz6NqY|Lutѷ)J3:R8Vo?)1m1/ph]f*68xyaPc2@nӑ{nn :P0t#Hk|9{?20,]>V7W&F]mFɨ(jfSFF* KĻ[Qn`$%\ " j0(qQ&OqlSAL IrB0\. q2mc!wm`rK$ *ׅo8;ӋJ!=\*hZUߖo]8Ks_ޛݩc.E҈SG~Sg!HJoNfXm?vDmKܸr̸xw3 ?8:&15d$QB$Jcupc8 %XLeoߘ?c1e_+LzKT5wLo~9@>˗Yf6y|0o}nVպÂP[ϡ|kYAnS]մl /e\ ;dçCW]KfECC<.\5e N,n_N7!/SߘlesP&ޘTrp%}6#]ٖTgpUFlB[nFHoz71fB7@+8]0oAعCXΈˬf>N O eGsٔI|PwzPC^6-h" UsG_e_i@ K.ww)mK|Q">,H5Qex'iۻ,}@.V1^>{-7G|PT UsM ^!aR9)pm BCDQUJ:No(ʍ s(v 5uVA+lNlвD۱vJ40MUUR{m%6(.?SVa3Yu$f) 2k5L0+gRrc|p+VCfG߭i*z3-8A- ™1:u\PŬcC}5kzznZx@DPl9#[x!f4pDŁj.:akTn7AgiwD3 ;WHQj Φ!ōǑ$7F4|S|?;fŠ@#W)0A32C"pMW!dD e$_4nadbk ,ѳg\$aZy0M;5 ^[p2&(S2hr`ҭ(gQϼaxNAB7JX& K:mzN-  lp=eTvM&wsZ8iYw}Ї@4aN.%Wț8عsٓ7Oh"l!@w +p f?C[ voBa⌅+?OŃRB%W{C; = #yƛ槄 7UkWk].:d|̺u/].^)& uzn`k?<+w@y.n@swؘ{S&"Lb5]V 6vJԟi2LM+zh+U\̪xW!}A ^4lkԛ gs\FtyQ9 W >/lW=H!p⹧nYnm8ߴ\aGտ;j CײeQ5x~F^X&OԜ.-pz\Tn,Ϩ³!|pZXh0M0\ Q5C.G,#h9g  FPK*PrPTZ<mda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/lo.rUT O^P^ux Vr8}PU^(dv*a`.v_j2.ݭnWU6*,+QHD).>a(7b7OT$E*jq+:J6P BuE%m}E(cֈSWQx`ӱ;cHgܭdV+uyUsۉMG"o[8j#th)b)D}. iěoX~&7Ɔ륏W3zA fqd~ 0̰di>Y~ض"1b%͊Z60B.,GaxG(ti2TjKQ<ԃD!?2/׀@*JᮓLE!.z%.:ΛQR,qER,^9X9Ofc/hUOP+"sG" T/Sm#*߷FPk%~ Vd`ϷD7z3wDצϳu+Ms~@qkʚd{xi$sl5=XS*1IqC/\1{$df?ht/ߓ  4;6q?49}a! qlҫ<ԙLҳ&HS^t.z\;TjJ%ҵ"w*P:'UXxv|`ygdLƬȒ#"^JTu"+K. PL9kKi#VeZŮ@ͰeUC<;gℓg m`@R bej4r`ǞK%9PK]t5-/#;N^Q; F9_[9旧МKYpYh}+3Ý dtidTr7ux|CpR,)WTyi  #~Ynm7q#7z uÀ^3r-R5w c3&c>zG +Q~;IW0##w+Zizv uӉų /\O 3z* TinTz ?x|Bz*ؑt& ]Յ񴉽MZf>EPnT9Y`?ɂۼWXrGFȀ4K^xc$["b}`TY% hTY"1-<ª$S~0GX>fĤ2? d2ReXTz\t|RǁjM[B|d6mj,YX7!bYgpJ F {<{w=GjVhGO I{u^J{E/Ro/ȶ(IzM51 ޓAC10a`/ɯ4Qՠ6ɧZv/_~g!6Esx҉Y@]gVRfƴW4vJkYm9@Cq0B5)K~D'#'"\å19TFqxuKLu+Bթdp 3Ouՠ5X8X3dH3$af]wɽ߇gX:_}+\t9t'2,aPQ2L|0&M9b~f΀`ਊS8=56 rB z o8?rÌ[Dg"|Su;UMkWU*OX:(xQ̆\pBK.4GiSˆ66ABxD)՞W/_޺98{=AY~ڎ26M</.'L+{ώ<_pf5L_o~gY.>ȨX>%&b_g{ |flT? zW҄Q8uDJ ;"SJCPlinl<`y@,&priQoYw`Thv~&6pHC8g'˳Ҵ Ǯ:uk*_7-ӴYqٸ~""z>d>s<>;VGEgu df zXZk0Pck-2fNG캱'Ox361sזMˉU93l=?4 *u\A;ql 湆]&~{!NVD ª ϻ"vL LB@ߜ4R7jsmy^IEA34ɵ=QOGs 1$={x gmYJB')4swra_m(zogr jێ&܌aGi;Owۄ%x/xh_ 1H\{.hf5ZbL50MNLnNwuة`0.9|r2,*Vsg<)n)Ȥ)/e#^<nrK\330%]u` nkh_T0jpǘ`EGv<@ؓU|;NǝdmG18IW ; GkvjCw7e #sCR|{zN|k4v'mC ;+ړ+F-|fWp9AgbIC-iu:5v1]2TG{} uWmnߖ j+ ܲ ܒU9;xz<=H9'_wDag"[YPK *P1mda/inst/FortranFixup2019/sandbox/naras_gam/data/UT O^m^ux PK *P(?NBmda/inst/FortranFixup2019/sandbox/naras_gam/data/gam.newdata.RDataUT O^O^ux  r0b```b`b@& `d`鉹zy)% ` |@es&̲? /M(??KP7g@(^bKM-2 2VUh9pTF01acf09acXBLNMI,U " (PK*P>?mda/inst/FortranFixup2019/sandbox/naras_gam/data/kyphosis.RDataUT O^O^ux `SfMOOߔ6#3ΕcJ3*?oTsrpPcs)dprlV[9,[ wtTYvf=NЕ,V ,Sk+naWIʅ7@S-{Vc?{9ɛoh^0nߤjq26}[}vs[kR/>Zڻb[9/t}\tl} 6_`۸^S܇~rmsXP _L]w9O¾w&sloO-S|!v{E/~uj /V: 'UrZpph٘v퀽W_|{uOV'_9gնo^/j_^E~74WV/ܳ:DKxH}ɵԾ K+7~2[XtM#l[S4lgTU&{y{sU`ʻԮۺe?o4U9{%FZSa~6DߔR{tFf+en44]i:T6{]Ga峗\Ky4';YYݧoeRє ' 4@_zf`-X,5J)r?`H'PK*P4$ #?mda/inst/FortranFixup2019/sandbox/naras_gam/data/gam.data.RDataUT O^O^ux mU\q( (!1Ƙ 1AJI3ɝ1$E 5$Tb8BR%FQ;s]|/` Ue:iN„5ϊWMG>[z `(2u^+@0_.XqXs,=x_K"/ggK}F $(m>at*8`ݛ]+N'qgTngBQY GuˬΞ/~h=1ߦf(ڭޗ{y.k~6G>՗w3A,U-8;mn#^:RFBYKW`Z6c󌪱srB@?%9xf(c PIh(t8A}2ԂJX[{D(@kŌsfŦ=dtdWH$>Q*kcS#5z ^t3Ù9%ak2x$ϯWhGmh:)*黓jeW;73%M 5X,|@U@77(GC0@Sd({"xV+$s;)q|5.E1FH {TO!^\ֈï&*Y3m2~\v<g2 ' n2]!.]ۑmSբŠ+n\HɻXz>SG,"H1Q >yls|7i|948@rҖp&@iJC@8]w"zki$}WԐaފ[u\,NHoZ UdN2so:EɋYV5\-n30'~`)sλIsYoo"RT?q-Ƥ-p;ٽm=-ME)=ǹZrZ[ +Ƹ\d2M|wc;"/jnKdBF.pf=%;i;rYJD3ќ9H[<$ЭJ(ߧ7ҫzwA$щ UWLFu+ ]^E?)L\Yr&:m]zgMIa}g^RΈlm=]/.1ł!b{BkyyfמW>w;]xu4wy?rvd$Ÿ:qۭ;""ef*EY[ \^KEgq\⢕wIƫcs7m{Ϻv~ފvl&6GUq}CBGcXmC$X\gڬ\IdRՔFOбUy&g2p8Jpud߭Dv?Toy',b `&+Zgej{ͯъ=uym&%VoR;TZ~mH AǙ&~bj8< <-X5}t%#H_ۣ 49nw:9MC<~h!_v%Yg~7 KCiH.GCD"IJ>{o(另Ϭ[[qt Go(1xb\BO6ly/iJsßV\u'(m߱!rUx#FTsM;ALF:+{9۬^E&EThw?Zb0gj䬪UMU'o=$nxZ\oi6–YP#7mwhQ]&HWfެg@ tmbJ?@ /A;Q5[#CnugDʹ$±5qOO71RSǵߠod}t>,y}ۆե+ ib9G$FDvF.-3{@TGQTi :ѝeȯjU2|_h~r/Y쇅çv<,<ҾF\4CJorkRe8+#ɋ'=i'uzbЭj :RcZFOHIQ2C+k#8oQI ^ jemxEr 6fTvO\j4L4봯*5wna:A0wa+JfJP`nRTrB*`{E\Q *E"#܌$F_)GA2lr77".LE?A,n:$J^\Ⰵzx^%2GAȱ5{MVWXoTǫø(n,] P6}['!ͬˠE\e17K)fw!/xxg='t}fyT)a<ލ lo&(sWyn ݗenX/B}!=fwgyuP9iFvYՏt1 +%E&|UNGwu"۷.a U*EøD)bqbaN~ cZ露.ЗֿvHcdU.iFP.O7*ӓͮFGGu拢m%y n|j,,3iM>"Фv(./Kn ZH:#R U-d[o^s:gi|yw{x6vD*'DNn9t*m8ftlO>?niMtϐdK3GAH=*UR,f) EVu!2v C:/(e` v7%pp~[jyhtCrEW<^5:~DC.ׁyUI!QDv(h (O?+S32I}~ִ[LF:-^U~I {IAF Y-Ď!iOvR$KH|b\ɅNZ0M֋d"wˆq>DvCJ^/1댘<4Ӻ|PUhE ˗OlYK4%e\;Z~4^fUa -CM}]Sn`R%|,M]IvU,ʲyoV\Tg tN{^!`XjWBpYRb&r g@/e` OTb% | ,dE<>`-4>a"? $@ q0؉xhvqʂ2"a^ć;g;S˖~ 39-G[h;p[qk`,m<e6#S onfDre ц3su6P Nu?>oRrmh4AEa4+,GN!z(=v~I,$w-. ½sBҷ!#p aptj.\j!\$,Pi;\"0׌)y+C,l8;Jݡ+BRg2f\wXs":}w9 D6y䃥*W4ؕH<'':ikx*kS \mf(q_H3~y EoܢK2r<As )"$D<.qr/x>qx`T?ƾhŕ2ycQFXmyAkh98<:;{uzX3J7[u0юP@`oxŧL.W`=D.Kg)(}S'EP>aR#<6o{/Zm&BjY4~ڪG|P?hfmSo].4V96{up㒚-ȇMm"Jsa׊78/893n=2}gX28cyw,b= M+,t[cO :`~f^s`)&ج%fC i ԡfMcM+BGE ,U8M]d|wVLଛX\?#e>":3ѐ>%r PK*P 8mda/inst/FortranFixup2019/sandbox/naras_gam/src/bvalue.fUT O^P^ux Xr}^~E_ H vݔUu\*T !9$.4f QNs{%/t3};/_eۯ+KλMom6![dMvNپ{H+'N& n[ɍ \ciӵ5!鷝8OlCmkz&`g綻cTD {Jq#V#HWBF 5r6mW{kFbk.Se1z6^2&p؜LtC6X"EP=ddk[R6-:kkSD|  L#"c BLSRjOYH/Fj'aQ vr[qb]hk J2Om#Q $ܓIJ>>=M> $g;f@ &lgnz8< ${4!Fҽv-D`h%34?& Y?I Ib?Oi & -tʃT$IOĥ~ݮR q k p% *8  4cTP )fll *$UA,q֬w>&SN˓Dm$=!3 @`\eP^SIQl6q`8cyQ$M,OD.|VsL+E-ў2XڙXOy { "NMVQqHlެܣPK9 Sm9~^WŤw*q,Yv% IH[8 q4ƌq0k2S+fS#Q5#䄀NB)>gq^39 ݰ`UkIVtQG|S?_T5CbOPP{n舨f\L̯׮{zmKlbN;u!`T>6Rl,u܁zFrJINsns/ w(20J1~׏?s2k&*iCzv! }E6JQPQxCuQDR;m/a㻶!-GT<S7I-:%kePǥLmQ Jnfs 5.sU}5`lgz}Vo*͚1Bq{M8 3eDUR1!=^5/ ^Db^HOGc&#:S_[ Ul͙hGW}9)Ls ib4X'4ͷ W_Hcb1WZXXYVx9ėf.~ΡzabpFK&T H=?Z~R~(E$r{+/&NͪK̿1ApB fD; _bcK͛ދ=_\ AN7wi5#ë:/b[0 9o"|xK#7s ηq۟_W?㈄^ IPK*PH!3-7mda/inst/FortranFixup2019/sandbox/naras_gam/src/sbart.cUT O^P^ux ZksFn DRHWrZPxAZI6yt>>U㰬z=0V1ה #r"a??hCas^04sAp08Ye ^>{}~qEUє|uzٹfai^~iכǢߝ̪sǰ5p{]3ltw{[FͫvRU7çoo :7pwI+߽toްI7b[;6+>/1ߌ>{Mߋ2ESI Ja6)p:9 @b\rFewNJ'Ӻ C[T!ԶYZ&X*SGr :+mc׿i%\w0ǠQ9 Uê1''J㌛_?"<&-p.< _^Y0,Au =Va.bNY,Ҙ-k" KXr]Q G -'G3ekӢ;O8S ~NiAshOTbWz<۔)+8$v$ǕM]+tDA ;' 0u_,^Zl1`u>'\",K:Uj@ʢX4 Jnb6ofB9 08 ݋XB/q(A݄L'2gFkrVKsp!U4rһv~h'x9 ]w 'YtmNcAf㙨ݲ+&Dͭ; S6K/<[tkm2w5Qَy8BYxU1 4)Ǘ/_Xkmةmv. ( vNG@G"S{a,EwU2]i\^1{vlIi8)-8|4xA0#q=>>>?8<`.6PϣF|Ut`\!ve0|#t5il`iLn" "|.>,;|@ hMМ~jݯ >GvYOYt9. NȠgޟ\رO\)PuW&̥_ !^]+5G {4׭asaV}`d=qO{W_UjN9,rj |ߑN.Im;dm0E. +CߣGVՉ I TS}$ tfEH-w1gaw:.a=$Eb# ^([rqSVR~>SP.Ogd ȓS r9earHv>(B4)NNEsS|ok?0uо'/zJē I&'E34X:BsJl}ǩ\H+-4qqebKv}0.Fv=ةK=> }0|U/JcubS68(yd 6n}׺c}`= ڸ%1{~cTKTZ~-c.̋;x\G;Ή{6#5W[9A DTPLD1ľ=L4MmݪK Rb +*1L~:>U5 ^J7*jMK? aϣ;\x>ϋZ3L!@]ڔś;I@ vaO[M;\+49+%[@5p9䲆NSgYr xWFO1D&Uh`ij1OD˦iʁ}$5<1ѧ]\zѳd󮉳U3*LRXRC+=a5Stn6t$`c*#<dk edԟRUMU- E(Eh) ّn^[1C>Ef` sa;!iJ [&MT9aHyYfՁN8UrN_@0M%V4 4,r9P7ESI^:hږtj'a-V=Ź-Lڅc%pn6@Q5R2T,po$Z$=y·7ʱgsվЊǕFһ0̓C7Y(Ha$2QDܑSXdbɅ\AMJT >غݔMm}j vL g>+Q;D|*Fe`A fW[; w؊ׇD$+X͚wqwȔS}9P4,wX9Ƽ}+Qf)`e ,"xENjz@GGz\;qTGf"~KyXq`-'Lq~+;tUrSLR !kg euh1nf-Ќ;:C4/Ѽ0׫εf9"!-#Mnbyxj,mĎdxy՞X}%K{'N37YQ̥-C\͔/eI_Je?Ѭ{5LӍ0YB<EtNI}?k .aT96)Y2e 9RT'ڄ8x6uўd{-4 Nq =!}WKM˰{~=̘z.!S~/~ޣuH{7qύ~/N_m}!Eq+3Ww9=1qbA6?o~7v(?lm %88@ H|R\u2B nUԒI\EMGU]L_yoP4+^mOm-#&}5zŏ_2T-!.՗<'/*,T4xoUv0srDMitڙVv`P. CR`{LdNWHF7tHg(sɚ]2YEئEi)M~;Gَ+f8涿(Fg_pGy͵k8[)7U{],d{7խX RE^ǚ?: 3|ɋ*#y\9A|ތD8zsB/޾~YJfQc~qMҪbo1-\y2p>,鍥+>6f|5hyc|wA4>G ޹r~̍=˳v4;(}z7W 7|mкML_fŕB(D`mɯ %d7F2LO A C =Ӫ٘l6ᗣbgq_4obNwϕ݊#R"G=oc!E+!b6H6Z"]t끃r 1FV]<ge`m3^On\2_ 3hil'?lICyX/D[oNɈf,xnRǻp-4 M~oȵ7p3FI6p{L7ˑK+R|SH'IccȬ۫>EeզjY#c oPKGWm|/4,[i: ,x,^-y)^ ]a3ޤ\lb `BN{>}*F{l]y&kW|#/"ȿPK*Pà7mda/inst/FortranFixup2019/sandbox/naras_gam/src/stxwx.fUT O^P^ux Tk0~_qa%X)=`c0V6:p%QHNG$۔`:ݧ;fiKc}y_!<~f4וP =^Ce HkZЦPItZE2|c|C=OH'\CAek|kXh>.x>ڡH쥄CIǽs#ƶ& O NjEEWRMR.BvI:y\6Ag8|l|\`^FBښYE #RT̔YQj1# DƶrɢQX [1k*^ӼRs̉9-?Bm~[5)cY\{~5peP=h揸#s]a mkЋ*{zESqPXs= hSap%&m,|:S<xα;\C:*zOReDUtE :Vp,\S$cY%e'򺨋B}Q&[IVp4i$XF#܏Z@bOln :5I0+^n' ʔN>GԝB |& I݆Qp1DžFu#G691* l*ZVa8QB+6F3FVi4Q Ǒ-3e!VY.Ki(2z(\BS(lL)(O+bbLxkb  1Qqf}Ϙ3L/Vr.Z70 9p*+[.V"_ķC7`pν4@YR6ؑӐx0\=WsMÞ$ܛZPφ'f*n烍h<،A!~)__}Y+1g1NM״L0 N9 &DM9wJIISytTO'; cr@HLH'"^HCĞ v { ae CjFEx!"떃 ,Uu=_ii,p!Eas#žmҷKlE*NÛ4wsCճD{] CyZnacCU30lbj1ϲPK*PK8mda/inst/FortranFixup2019/sandbox/naras_gam/src/backlo.fUT O^P^ux Wv8+@ NI pުsRV2ASsyAg7M/ŵϪ"^o/o}s.[~.MVXsM-?!E90%#߰aEkˢ9J]v6,0HuWnM؄|قjKR}yPhc? |/{e+;ܡi./q XlkXlX[a  Kp/#fmf7(os/LM=48Rp;G0@4oDsU鳲8MyaL8zUwT/9 H1}a zXv{taT\wa W33AG_@Mt#xylCKѤ\` `s]f^ Х#\ }fƜ`d6$?\(H~K[c ̛cV4z>l籭'6{bQtn,R#಑n8_ݘ/Y$2.hTUV̦*kR sNbfCVXxn/+ŨnĐ'SN*lU,X#q `UBau=(XѪ̲6 AӸ"UXG3 n fa9QEH>U[ћ3l _ Fp$4x$Փ9G\ʡM>/?=ACOF`ι=\ӂ -,bZ2FXW<G?j"8ӂ'ur:)$%Iz?rmϱ~WD \ 3E= JqxW&*bh?1Ւ,{(;2q@H }Tԇ,]@W?PK*P !<mda/inst/FortranFixup2019/sandbox/naras_gam/src/Makevars.winUT O^Q^ux  vt VUPpq 470 PK*P}38mda/inst/FortranFixup2019/sandbox/naras_gam/src/linear.fUT O^P^ux }zJOAHB zU߀6 0 yΈ!"3{WwU݃5sFfWùn>wsEk;>OIku֟Vu*5;"n1+K@r1S'$PPSsM^P~tQ%|0Ƞ~noy?[nT$]w T Yp(2DcN tq^Oo=a`x,p{L~/oϧ{LS<€hdߊx8O6sgC2 YH;GHhr10곩X+'xiT-eS8,i<^@E5T2 W6:>e اu/&c7euBEZװf#!yB5 @kK1,4mm&dBžaivc=T$8GF #MQ@M#F$q;XHXVP\qi|;6?4?Ҁt64##otWMCѝ R uZmRϫs lLJ"ESV&m, >z8=;O;nmi=j\^XÛW<)'kIPtU7~SFwHʤ<njw?n~TRe.e(-& j{($NbI0c SX+ò+[eziY6uZ\$PjP lP:_l^jwe͗1Ҳ-VXՖJMY\TZ^Ͱ̃ x~󪆉v~{J&7~yX@l6WHPϣW5{A.e_C`hLڇ_^OMuSūIZ6@ye;4>ě3r1jYZ$TiKs>^x5't(ԣ[fB ^:y][W#U ETfr6@t/.ij rk Aa51k.xV0 5r{P+ k (*|C)VA43})^-|p`:UqX.3Yg: Gc{ΎC9+6Yk}\sr(E0ۛ:BdaKzX&ʦN[gk%)MwJ6?JR ņ$:ŰHgcLҶ!-TMGN8˸2DxEl ʈqUۇ&3lAwAXzk묭c >E*t  u\`R`:VGC op*L-aCm8%o˛ߚcd4(iZ$v[3r*ı"E) 80?%C+:=` v=CqG5d"nfFxu2@^FXU8/mT5ЍC:vfG0k[% 71x A ''Wd-|YlT[~ ɍM0ULu1p۠/}dL%y7ɣz \ϖr6A"B,IF\Dwb]'3L|QX!w=ȴzAWɓ^t 0Mк9"w(~ f꾺Yp"p/ΦM @ d1;D &A.H!xڍNPr 78فOv/jXs߾4d,X 9n`A,B= Ї d&} *Hy*ffQUK;1flٻ5:$Rbzv`: wx'Uܭa՗Na) z'C a~ 6(tWgۭz9t7tIg 齽%d:%J;䚬M[N0j+ʰVj$66ԭZ* g;R-?GLR& 9F_]|"l9;AE򖼣G<.faBOE/3*(nш8زH:)) c%v|:Yn*?MX4q sͥTD=wr̯u(0EJGG.О#;qn6s ]ybL; aҌ>?,ά|&6qb["z6΀ w鎞bg#9M _ JdmS=U7i"]dDEwӧQ+a6pPTȑ ﳶY{4cqcBG=Է?喛8xzz#v)2F d\r!_3<07ȣ I.?Q!T>Ɓ ժZx~93p ,Zr;ɻja,O5MY(fA3ɼ3Ąka8b7Kb)&&;m22 6D1(RH/A/AS"FVc켼JvDT>h[zT}:K5LBo:'*; E fz.4\)@&m&E F윅1z|j*I9L\)0fUS>5aDd&̸h5j],N#wZભ^P\΅{n) '1 ayYFHcϿkz@FMD0})ƆԝOfyz;]/0Իʵ [;,~0A-Qda]o*,Go룍.z(⚊Føe\0iK&aQ;nuB'Rq@ QEfU= i6h8!Zvj3Ra|]!$cv蒱aK ۅտNЉȸ[J72`=-OYe( 9-i.F@a?xT– EEJ U5+o y.'_qljҿ^-؝[u^T^ YHM;PkeEAcZ[^*7yze&Z @[)R֌̒6";[s{Y72883L\os{?̈́y2T$@h?0`M gm0W< lm㴭{Gavoɹr'qF3q]KJMw{p5DA藪kN*ު!iCW19JA A1SRyqɦDa]Ңoabyř[V`;>3%p.]-LiBzVR{|.|ؑ`*™-?@{U&&vbww1fmoOOICЖrN08's%1=bz2RZqWҫi)c0=RN|֥P!60D=fjf5e5rq .7кk;^iT <Է 5wd \Yj$X1sS#O yj;?͒j|=ϳ<63! sEKy&MB>>ìMs|?G~0.R!N Jlǒm!g[ǦYq N0<8()7yS߉EX /D[o DEM>DVQw+a*iq20qXT'򭙪w&|It[s5\%0WUsu\}` \AɿSPBF0NA 1È1<SW O[p㫳8T 7A@?ZL#qoNul}Ës8 +r PJJX cבJ8AWʾGE7=k}mՌܸ7.SOV>k}X [k&=7 #=FTG $WՇ* 2H>$B쇃Bry>x ,ꃠRO<TlD`xbQyk Q/-ni/b5؆Eò%NrkGlㅋHTb4\x&ꈩ'Uq0<*2>۩\bF3 S5`irqX%jBNYkFY7 չR\D `wsC?Zk-SɎ}cAm=vvK -@|l :mY%(Xr739\'=tFnL!O]rqJK jO +} Ey(ʺ^ڨJt) /dE&V|K9z[ċZ" ;T3u"#BtuRk u_PN#%Cv4 ׎~eqAmh:fخăX.}}>;/mstC鬫$X,KDOɡ D7^r} x:$xIO㉊pLo&8enXxZ8VlJ3/ ^sh8uSݘue >!FF(e%L iU`"6cw!68z]Wuۋdx':ٺV([š-7ޢvT0\ O?4 3LW*."'O _mRFdro*3cMuF&I`@<5\j6>h-d䙯O/A{2PK7t5u1i:3;D _,#o\ͷ@OԌ,\Q2HN湌!|CpJK38 ŹQ' +̺E*#LӑŽ"NՖ;@r<Hj̻ I\'zHlVE*5ZksF[>GcvW|;8LB!aK@!=y 8 @BLgsV" {$ZgK[vTDfd"k"MW/0}t 9eƇmk%o[x˸j ({Ygo,Q>8pbB @ 3jg 6b\/<3U307I6wZ%n"ӀcZtL['II{:iMI~ #4N v@Xf\3B h"n}Uǿ=mV @s!P/*ԟMAЧs-د_,2 abYS3\׽NNԡ ?OT6 W/2߱KF˽I w1t76sͼso}s"G5(>2\1fji&' 8tz3̠d[n0uFv܄ߊQhs`@=Q cK1mǼEj$ 5pD#x9Cǩ&y [N8p!'ۋ2b7?\8UǏRUT $*#gXz2dY!Ozd;ݍ30qR3BFb~_j*ļX~D/N:1_2hAȿRgF,0=~fAw*MHLioe1-]EKn4?o>"؀в]۲ye޴lWgFr!t;?/l2: ,h؆,Hf Ѡd>\cAУ=BGl(M=f_m$w{^]- r"Fn"NjҼ'Vv'bʈyvakwV Mj>x>Z"ތ&8J&֊(^> nM[G=&U?rZ`^>La0 #Z泫Sa0qk'2(HΨM]NW>鷃C0Bp<}M|'v@k_[.?k*BD_۩!CLT0ut^h]\%wlׁG.xؗ鹯cD&ȤVmA%֥|jk*aQG 8M=p  ״hhOR(ivC5oTm$~̼cYQ~ڭ6O.ⳤR,Zpհ%--? xҟ?!ԈC2g(-8cW2d?cpEC W&xQ#Ў2>Յv,+~Z-|R}FS8TMwLAuU8#'vmq4In&wFD49aҚr,@cic)XiMKҖʏd{pf7m[swFZJZJZ: RQvVm1` T"0Y!nP|~H'@FJ𹗴B_n#lD]!5TSyC2,0`'#Hbx7ɞè_"r85WLiAbχPTeAu"$~T"Т6/5Xᆼ2ޟv`nPMM4/u c]:λ䲛]|0feP: _&Y-i2a1tGVj(,c;YS컜P- 86"=fU=Ua*[x$=|I$ԃ"!wN6c:0/ˢƆ mGJV0 $(5[ *z<%{V8 xL=R=lSg\ӻyrhl'`/9gi3 I!ynG u|$ O5뱯Bp9y;l7 cqh2u@Ga pzXDٍ"*%{3*+eb40En>QQ&6Qy }/Pl/{?WMj=ӕ p3 p`y2L7?N>EI?˃tcv pdv8dXrPH)$v@7kw2b›a]Oy@7Ew$G'yD?oաTO9Z#EBȶ2"|8z R m:7wdSL/AJ{@ ;kTSwӀ.&;s]? o,J֖Jᘕ-nC ><NE4:g뢃A<< DbI3yF'3X8Y$m=ݎՐi$b_7y|~Nm] Brk[SUZvO3l;der'ϹRroqwkv|"@Z=o?Z̺G&7d| /' %"jt deXP\fUK:PCW `# ̽hD8P@&DsK'&k|2 j(6E~\ ߭0$g!fP"lIh9pIQ[,tx}fw<հn}w"CS O97\ &\m1/x:ϐoSSӔmD\ܒ۸E4C#MnXk= 4Pn\5ih2G1S5p#CΓH1)--TF?gdŇc:q<4^ Ҹ=@qHd~ @䉢(B.'V5ȶ.R> 7F8@؊tu)X_jiچV;;9`!{Cxg]?X~S̪1#viŀ\GgH֢J*MtS[dCB]Tދ;f£v ?SNssW#Cx#<:^4a!!#Quj)*%ry iw1EB7+~F/.<ң)b+ jUYћU*F/[3d)h^t񪯮zz+lņ |s9LGK$xYeu>9}mPhH>=#Bun&& hY 4yu6Mo6)= "@jZ̭v'po&w6E@f dY@ p 9ps!>KWfj|[6C Ⱥ,;Y=$;xH;c6.?yxmhOHpkkC!-5^1rtڃse7fl͈;QMDcюjQ'o~߻6o;)#3'$h% dk.j 8@JŹFhU]C̏^1\&n굃CPk^Wrp:; $PKG&,U#>0Ybďѫ#82nUުsiePa11-l~oƟSyn/0( BQ@-挾/X-Xz _>/HZ1d jb=Y{y>#c_)2/M2l.;#'J>'Cq+m,a,<wnc;^>?ZblyGwWP4] gP6 ($ 0򞓀tWL696x](~[|ƆDyĻޡ6 9R^$!['+Nk;J[a BdawMF&u8fduf. PK*P"#8mda/inst/FortranFixup2019/sandbox/naras_gam/src/MakevarsUT O^Q^ux  vt VUPpq 470 PK*Pr 8mda/inst/FortranFixup2019/sandbox/naras_gam/src/sinerp.fUT O^Q^ux UYF~WS CfvH6*rXl0 {QiꮯxߵUB\xs */(簍ځ?x݈zkE2ɣSdNEDT_x0 @wky_xJl/msfġkx ^Ik%'X/oBUs&TQT)55>ǒI\n:l5o9KM~I,y#U5oE+\ΰ"m $77p5s8UA`ECڊ y_oS+n(B7ZtE2Q @6Ƣ˦:(ÀI}'kurRkbLݜ[kB*a|fޒM5@l_}d%89]:_q>e$g7 "/"Oj:V/w=Al݄Fm}ۺ2S2Uv|[ZS'ѳlݵWfmS8 *;Ď4l͒ cjF `mY qpdmjŠA jc/jG0,5#TvҎ"M݂^j |g8#ǁϓ?Mvl ^z3 ]vuwY@K]Ya}I]D!1,dx݄}`zHEwGά=iSg;Z M3YZhlz^fpԃZ j5Arjav,kPlGf$kvu11 /PK*P2 ;)4mda/inst/FortranFixup2019/sandbox/naras_gam/src/lo.fUT O^Q^ux XI8)[d3^_6`wDH SU-#G(_ᆱeME~bIvK˪kڴyU2=0./SVTsw>'pm}aҤ);tL3To:1<W~P5/]6LWkvV.)*wPsRKRAh)S07."\FqNҏS.R%=~_#k9Pe< 4K'_dI@OR*3!͐9CYN֑5,׷ uIEhVM42YA)N"+t-/2^s~42K_͌DCtK,P#<0[q osqp@X8T陙@lUILD#уB9 ia/YXWxY)Y)QX OTXUnȹ:–Y%Kgmdѽ{jbMF>~c49G"n3-LO@lFA B XQdRx>i/M'\}2Y?JMJ xam[">~l:mh2?DBeJ '1AldH;\VB|4aYu v3E?lLwbƏJ&AxtWTu\ۤqp$:!,K ?N.@Diѱ- 6HlOpJ {xN_qZ^^[I9pQ^Ϻ7sT1Yɟ:|n%`-xc?vVRd zh>Y2F)R>/t ?8Lެ@ FX!=͝LV}9/e^q0c¢7}^=i`s>i4il6*(ߥZqUuۢՃO}b]txY+L,#caCa 226QZPK*P ~cu7mda/inst/FortranFixup2019/sandbox/naras_gam/src/sgram.fUT O^Q^ux R8y9,vb;;5 3%\`;JP%$ߖ,9!v]j/ r9\5n4`%+`)qJH[*h6zquuESfڨ; EK)J}ǩRPK&dgCkj^=Mu*8Y| _^E ˋNSoi=yhlv(6E< 5dZTI,*9F#{KhYj=#j'OJtNhT).8Ń0dUΛM# >_ݞ]~+ fSqCp4VeF^=lxGo9 $ ɃA1$Oq07[b6x8d m Q/ubԜ\pYV2,s BzVK-YY//J(6M 2P: N!EO||OR`&!k)Y6&(FXo1ke,΄#}ûf!1?'qu*) +ٻpw`l)Ȍg݆4饥zLwsb+ޑUl1q֩?+jpa6DwNwB\ @[uYhc\6ww!oJQqkXSZB3/ۺ.qn>0au8Υ6{s9r-3`W%i4&vZ3!fCiv(x'mIks;Lm8co6ᰦ]Uab9 ѯ&sКEi'm6Qiyq5<KfgP! >_i BXFUCPAP F -njѿϪ[=/̭7ҟ-x d_b =XjUC3Tɿkhk~j[Lz`5bkMSz-uPlqWlS"0T7DoPK*PINE28mda/inst/FortranFixup2019/sandbox/naras_gam/src/loessc.cUT O^Q^ux ZS۸ 7&RoRH{ Iwwccˉcَws$rH -כ2CHgW+Yo6VW9'0bz,šL?y};pkc11`dKr8  Vq::F xƓhƜM$㜁v#eQ d'fAK^hON}Jpi ,43$zh̖s,g";I>e0GDǓ8 $#7t&#h $g|5?zwkdx~lu>Zg3u~mge뱋.k_[3 ,N-Zv[ڍnuBZ5>Q:M^e_V6uo[qe_Z3vz9mv;*cn6jO%-FD"9*V$W.otz-v .c8|QΏ/'Bw037i>|j$b$&88i(\80a0fNNe>ntwXGzUL)U!*2KTgM^݌l.h%بt"ny캄 Rn4[iJk9OXZW X9T~CUW+3WL%o' k*V(6H3#T+6u9F}>v=6UEu|1B/崅~d6ݏ6/vJ8,Yj]b./=LB]`|PG||~*r!eW_veXGc‰A:a# §0V32'ܡ!G^`x, $y~ک"*0zjpTU"K#k1M\Eۊz-y[9zГEO[{W5,A2zM:vbo*;`Cw&̀A l(JWHTY\euk2c,kyr-cӘlʽK#KSUKxK2  qu ykΜ / ҩ"v;u%ޙz,/1Lijkqo3/Ğ[oʡyR·E = <>UVHհs xZY@5`&u!=$R(GMޟaYЭ Asvf>η+%6:y>x$m;fWdi XʏY \%C"lhdRa"o} $rCv)q; 0&cH1G_Or'AVO Wݍ%ӭmY~1Yi'vB%O(xI=ۺQ^h.,P]?y GH ʋ?jk8{ xQY7X{(v4T+<i5jwQ zsD3~u-m#7=Y J?m ,U[j3VRZvDj}ٻeݹQ:>}ӧ͵ϚkkoVV?PK*P>!7mda/inst/FortranFixup2019/sandbox/naras_gam/src/splsm.fUT O^Q^ux Xr8}W葋H灧? 68Xm$,f6Uֵto9q U_[Soɮ= Cv(naqBߺvjQ ڡ.TP9_`jIN]%WDﴍ1}r`>--8-RZdZ bwz`$'M^]ÀmYlg3ו'f_x/^KK~_= rA, <&blcliTp6_'o\S@Ϣ"E xEBR5m!Q|ctH zL&,!9cpEmXݦ6G ) SF>"`< h!p4: psNt'OM̿3dTOEGw- -mк~I}|zY68Dq/* @&׶EӨCNIP.vBs ։rY׌j*Bs5rRRkȀ^kAϵ.r ܴ\ 6xzoC0^/h&Gԥ+ľt"evѕ3@ɼ:0T Kmٴ>9*פULK=G_i扮x^"si"]q,щC#@)$DLz͗`p^qM[%·Y@ y,YBbdJ'@'k_CddI-J;p ~~)%>{X/v=qhץgU7~C:B(|aS&73["/EUf3WF~)~\L-yUO 8Lݏtq qD>E:`im%R+EAT̒HѬt R#*a)s;_7ˮ;=ˌ[ F-|kw ;3-J-p4]gU͌Njo4 Yu0+ 0.:vLdIXv*~vn8[XRME~X"b0t4׶aDGٗ2exnɱ֕yo(R(]5hM@3Jw6AMVQ8U^᎛1RuO꾼2эw-b"-j*a9evkI0>f{\^6!Zs6}m o]Qequo;T5WvnRs9a,OѴ3ʓ bՍ7mhz32 "J$О0rSPR(/< "Fmy}< Fwc"%?uKl: ]eY}4n{ G`lj+g;wqfվWi]ScRk@e~ZsFF 4Ṵ7fDn3k&lٛ &pqV,DHoǫ$/S!\̗D_7$3Kؓi 䶥nypOu&_-0&[,%"pݍsVe )/XRKH Pudxrx1ҙTW!Bo(0UBձqF xa}ruRdY' Ҙ~@mܒ}܏O|) ]94vu3[yME<@YLJ]}`=bF12d4Gk>KuXr j:}smIYk[_GZ:M\NKaңXH*n{ٍ9O6ٝ.N5kf9tX  ʁP^X)-; PPr|%DRV Vof-> }lk̶|$S.-`]:zIfZk̠߸d]}x" NAH38[&#S(ץ{NJ1?m22jL㖧._soE bO8qY*F>ۣt`Ē4z؄NxEˠOMg<>cA:+KEŞn]R-Tj2#:<ߔMh=2xdѧ7g&G/*=l:-,ĈI+~KKJہj[0llgҙO;\AW4Y\e4}]OSȝZ.k X7Hi#C~1 ɜf)󳒜xjM3,!CZeJ0&lR>i9˯+N^a.khE,9ٜ+HӞzHğ:wF C2@v{RCO 8noF8!dX GǵZ!+{{>mIInGw2!S(x|z&B"ܷf>8dWZc_Z%}NЂwتSG?r!T]o.CYg3S2;dWeҀKY77, jlYW|-9]Av3Ac$4(3#dD\W3ڙ+e4_"+|Pf*(rRbsbIi~W"%P.7p΅)|W8:lZ@) ~{Eϱ4Lg*Th= _`'ɐ[dOZbʦJsج~x^NokR< Γoio~ eՠJTQt{Ex^PK*PC#8mda/inst/FortranFixup2019/sandbox/naras_gam/src/modreg.hUT O^Q^ux Wn8}b8Y7]ip l<HID$%)+ޯߡ.ei̙˙L/LUfk"D Baf$pF, pSJ<- Ow`1C3bT)59#w62JKy (-#MRe#C͎a-3(Cnap]")cadi >[&Mݲ[9^)ط f# 7hX;Jr 'g'Ji!9#8+kݻ$T- b4"K˜S7fD2cCV9s4Z.3Rgg("62,BB띐Ba'6R-̷ 9eM.c`,IJ &vQL ӳGeU@E} 7kjEfG9$[ԧV_7"Rem.*.fCdž  d8-$%;j8/ia| Cdb}YI@['DN wo+MuY}!:+oϿ)հL3xDjd7?5t5q.ȳ0,TbgH܀7Nq_v^RD)mt:qxHǏ093Ά(&lF@^)^Wu@ u<ױa<*ykǵO򄲎YJoF$*&cg'h iEJ11KUifzD8muW.o5 uFSBSFNP 3hMu0!o砃,lmgx{@e(ð=~:v=/iX36X5 a+V72KTFmWB }rL{vrs>,siqFߘ7dsYDVA,lifmLuh'& 86fo5cs.:7c4I^71zOrb䧊\]/[ ^ڱN(իg+y$+~f{7/52]͗{#钒>usأ:5^(uʭZw=MQ&w(/ʜԴ)f]k_15⏳zJ.E< PK*P׍5[8mda/inst/FortranFixup2019/sandbox/naras_gam/src/loessf.fUT O^Q^ux HѝdZIhW'Sr`3y̒lܯ 8-uv[a hyFWĚ~ @Y㇗@qD:ءcC? ,y A12gDy*g5G)[?x'i9=#H4'%.azW@yIu leNvMp.t ܂Uvj7hiW4/N`6ҏ5Dwյq>/~f>5miL?Hn_ne>x<+$'L`{78C^h ~H"E8DCQ+-'g:Ǣ~DҴ빝wxO>tF!v}s!BL;smYKkg}bZE=c!{h0+ott/:P;5ےDLdsk,0ȣ-yCoAaj3eGsth( FmL= - ;=bXGQm޹jX\NX8S,tCBA!Z5Gfts7=E+gf\DQ\ ҴQ P#z fkߴ!1Nq6gSMHw+X7#S.l ) AZتg4tIa x3nTą:~`t"gw٦ I>/a{[L [c/ cxW2L>-A 9֊<xd&9n2SxOIyrhDr>9>Rz !Hx 4u=j.%N?'k4S0O4B_ho KnU%V|?ˑڋ12K_c?C(9!D]A1(*KEXT[]VVj[J'X~OMz,k&;巻kXLjd;^SP|5(J}ac+d?Xe237Sb<\c]j; {p=kX%OX?>H5KFaBnrZӦB蜪u ONEyTl6GWzcjY7cj%V7-(ae2\ϞGSHOڷ:sPuUE /ڙ=kZOT_qNfJ=4s"3K@9.ʒk@xu|,SNFL`>a V1>B\dRE!-2ø^I׀"#u̇M kU͠Btm&"*|*H*"C>L0(S/fL,JV- 2BZfWZ`6VefUJgr8KU*!b2[0hțG-k*䛎J)1@2f U*)su݂MA r> o4"?F̧e0ixYrU+jlE2Ux1f'Ɣu&xEڸ~T|Co5ޏ[UEXl r x0," G)AWc ~4ʛWdhچ)3! V/=‡,{,@<\AԠpڣ*:N`@bINx<d* i'C^.'&!. }*I][.wb٦, uyBv>uɎy<{]&+3Ts'a`^B{)@QDj ZQlGxaXWxU@}qnjt^{xU|V9AuL1f r_ v*k1 PkKee=I[YNTTV M,JK]5mV^З5>ğChl)Wd/ ~}o{UO|Cg{Se5Sv<`Չ4WL;ټ]f;#Ld$)ޙfySd;+lzE@ye Rj[{kӝzFԸo1*s%BQygQneXhC&di}J ޼K RarZs[طZywoÈ(=|8V. [q 2D JD&lU@F!7l]&#onyE(BLtyU⠻Sph -k u5jYuDcUa9&׽_/ΊT/"TEﴗ'.;pk^]=^{oM,dalQBr m4u(lkBv#>h,6y& 5>׮Ofӷ,poRUiḢt2Ѷńpx2k Yд DLBd,Lےd Ӑ^LLY rbf glL $/lsAč9觋13Mgc@N";xbE&žZcjDdͦcӅiʹg - 6:[\s5Jhɹm Dj I2U+Y&!QdZ%@IKXSj-a#:^iX k7?X Z|At|Jq `heea3͔l|N 6rcL -{Ytp%,_p^Ĕ8705HCc+jO zzR+9&=u1Oc Q|'ciD!a׺Yp:g.}wDOǠ=|>S[_hCs5- XsB]'ħ cg{Ud{ZVoC*ֻ߭<'Cqx]Jo0-$ҡ>(nsWKGq]^"G ;— _Bف?úD^<yO;CˇU $P+eSw:J[xɎW+Q]튚ERi6,EU1l2ZoA pU;{Mp5sF P/(mQnYނ8,JF;55;kBq4ڐKؙud;IWFTTYtXSswoNvI͈3#)VU[E<""#Zea^i+ʰ ۂeRa:&!@[p7wʩrl+Ƕ8rmTh+'ޫ*ۂdJaACnURmVma]Ћ҃ D/F[y(|D6"Nkc16ְ@0Ci=ژIr$ȩ?%OPJ$[oJH"%F8hBp{iWAȧ GoO]HHeI ~2.ee~%1e0~a\<8GA;qv7pJ2=(o_?-nIR'}'Ω}Pб6[c@9G.|I#~^LC(-)x@?/9|2>fZ鶜 #`,H`?Oh0m:͈Y?$os0Ї? !CϽ>Av;S`Os|f>AM҂.CO~:΂[u3y:gyզ?VŐgh*ݶ/f>ǪZ>YdoF YPGjST ٬9UE }'V7z8az} ^{PfT!;4-XqhP7Qخo=qy)-۰T(yfPu1mP|Zj3reEMh&4di?[ٲm`1YծgZXEhVV# 4,p7 W1l$(?H*ȃbWxZ}8P޹3|a+1`Q\$@򴺓K&.LG1+8fr"JRVY!?/YMmK^8 e$Ѷ>FbmL^6ǯclcR:pDY; Ƥۘ?v#Ql#_ȇF.Fv}Q7^3]l#\gyelCq܈z}lcymdmd4 R "Ư7Xvy*' r.Hh(~ƋF.MF:L|c:174Ƒ*Jk'{G9G> G. œh%qI7akќ#9 .h% .k6]8GFf [6E/sc!^)bet+HĮ0lτPY̌mW=fZ*X\ 5d<](/1?94'xzȌqnU2Z1{?-W*>E3 HE2;Kۍq:g!OD|$WQ?ҁ~lw`1mOdԛ9y FBRqaѦ `~(#@V"PsZ~[^8 2i:ٓ񴦓=p2gIĪgQƗ }hVGƅqy϶*>n!=L?@sw5d$nDz7g(OM ՎeOAT3LL$z\$p~?v9[yPD&+ʟܐ bt霮W&'k߻"/G~~b\u3Dsʖ@"^ͷ8z;F}:=)J.ѱVŔM1ۣ3l?U"Tsvjz3JbOhGBf'N/ 7J2K cla7 pl Ks)a^czr *YFw·R)rt"ӂj>jR#*0C9L1PLC}=tkȠ:f 2؇N|,emID)' Voks &36|C)#Ʌ> RFeG,yv&s "RNtI}8(VRc\{S hVB\4%#4Q~^DYruO"2;TV?0O҇]Ӑ^?1UtD)x izixTDhB 6ZGJK8),uӄePtU»}]E2[P?݅Or.5O>!&#$ DCmJ뒈Vf1/o&@[gaXpq:!E;&A@B֠:s _ɮAqJ;4[5YgFr6]?&ɓԇ%þ-L]u},Il}t֏v>Bg~z 1 Z5ԦdD][L?;?OC}vg4IMyk&$L)&jb0+ t^Vr֜GB~pUyzPx?S(w=H8+S{jSeK $,%L_r7a<wZy'rL0|>ދ}|APED",s[?P`׮, HPg=XbTnZúbqBO4鶮Cr{軦>׳miɉl4cY !1g(3/Ot:?.XďlTf"%5Ԃ؊5|vPYG/,D8^):(v495 M-jNa@rh_Pn̆E0'%FԸWS}YAN&C42ͪ↥5}TjLć=3gR{: 3U|bnR, iBs>?i{NXMho;5ice.ENʼnt{*pTvG_-[$!ƀuϕd[j~ʸE1T˶Ȋ|y 1n0xZw2Rㅔ4Fr*A XE+B\̑Lyw`bdrHPc]S&Uٱ)6E ~MhӜ?e($c1jm#*<54WFNu@\312ÒIw.cso@!@<9'ع&& dKH7YP:,ۉ8X=*=z>07Z%17ZBM&k) 5WQW0n~C |Q &JD>% _xy]I@j>XVzѴ(ض\oL'/ a> 5MR7+"T+kD g2rغtv])<חݒc3 Agv*j f#_ L.sRş,h,a ֪&L\)E.OIBgͶf1;K[n>EGt~AGX`(6N4A&a kT6h[$ӎq뱑ﶚf ) G]Z(A c5:C߂=zqa1_OܳՂS R@ FvGVUY=e{A3Z>wGq $S-㾊flXtAt;06*Ǭ`mzy9HⰅJ4:ԒP%*cȉkYPDt:]ӶrT!t8LUpt7PBVxa):afq%oثq<' QWͦ..j߇ѯs'.x .ip+ˡDz=`)A[,kS7J#~p9^F5*BD?vi0do'ޮ? 0b,^b݃C@MXztY0b̿)uזmƈ7hG웹K1 $\BDhl!Fe#22*)s(xȮoeiyYfIw֤D;2XwʤYх.#j\k .{@z5OV`mUK*fNp]VX׾ m@n]<$\B3C#pq㦍[YpRTXwwoۂkV*Aץ\Tć^%7GtMuU]`n;bpL8S %x)Fq҄F o)(c*v\/-2jd!20XYxs.5⎣Bd2@~N@D%JCxq.LBBr*'3 [eӘ6C"g7P/m yn.n| o*=^;Qnj$&2HaL~Z;J2"8dD*q{Du9ecMZthlqaG;?ruƹch1w8nMF 䭽jgsכn qF@7K`Ֆ-b$Y?G%k`bq5bW1L+\lFדC@!R7 =}g>PQ.(I)T.?H(;lN`%kV7Z/"a#t}q֋EH*vLq`D0XV0&? :\nb>\][|<{bEWAY[hBӴnEe3w-gCD9E[av8̮*[rf^u 7l<hKkgEpBGr>o9,& JrQV\I$}8 ńW Jb<U 6Fq5esѓ]ZO9"<\Qv9m\|DcOK@@`I%a֑rv,PqY%vWP T,Mծ&w:3U{BWA1Ⱦw`þF (_;iE %q5 "lJxVFIc|3;8F>*VhY?gnlSy&T ߸A0]aa5?PK*Pi$mda/inst/FortranFixup2019/Readme.txtUT O^Q^ux uAnB1 D9JzvE+!.`MUplÇ7vU4ğ&EU #E$ꈑ=;Qwx?*cLJ"ͣdD фLpbsJtY#s{bsMo/7GT^ ^Z{6#;p4$ $ڂN:lyvv^#vMUwHZ cL^1QWp7*tD -h?$bePK*P}d mda/inst/examples.RoutUT O^Q^ux VmoFί9UL`J4'qUEamvKU]{g0pkt;<3/ȅ\2-˱F;r!F0L{vhWY~v@a0" "/)K,, [)MAM&(Fqhb!6jd .xn?1Ae xLD.H.Rі8(0T"%LC>bn*ft[-R/<  HS,`@u#8:]TarruL7a遨Cg%5 TcCvyJJa8r%̋5&BdMI%4|㼙Rj)XfMP kXl/QذW#~" }*qs$#WreJC\eQ#8"ד w7fNzh*m anK^oʡqvI||K|=fpˣYJ@Y"'&Ɩvy,UqOEj e$\_ < ʯ;%o0K}'榨n;ڱNSO% ˏqOxE+x?78N6$p?`)Wu|$.ggFF?/0kUsGF=I Lp|uTQtQ]SXfSi3;;u ApYJ~hjz.0N!t4|bqG)>&FwLz}/W|0KJ"i|=}w7ߗ|{oNO!1PK *P mda/data/UT O^m^ux PK*PNmda/data/ESL.mixture.rdaUT O^O^ux iXSڰTDZ"DE&CH[*(T""- *CCIVDEAT2D1"BB @!9¾rYõ٘~۟5sd,Yu݄&Ty\ (ǐzf4hCDӸ>/v>:^g5Knmgm7/+eae=~>l[4OkKg k+bF$gKU,۳U vSD}.;z !$._㗎sQ0ӺQ=j.ĎvhU=1#{T=bρKt~(N:m lrNIS$?^rZvN46CO6"a[FEl5hMB;Jj.*oPdJEB8Mfwd2+}n$%4n"PBvE|@?0K9!0Sv=1-=dc^?;k a-u KO:;>ES1d@:on!6=D!RFih72٤|lo G{HOX\& MEo /4*BpF8$.v S#om% ˧̓':ReZ vAໞ"~g#Bf| /j#kSdAԙ/' ) dIuCӷZ qcs] dMWM7#EŁ--K3ʼn:lqCP l8(^=oG(. %; T8 enrR]s<{ʩ1쏅hH*w-hEvyˉ?1 3i6.LAo< >s W59LM=1d 1u=3[JgW"$ N]"h˱ $㨞 lqT GUes9eF󳃬%Gh.8KZs"Y08Lg׽RFpRhBԚĿ [ 0F؞lMN88;L*Ryc'4.1#T~XS(W 2mxLZw<@_ӷPZ]jl tА>X-UZ#dh'Z͛&=vH2 k\BRl;чeL+_UFO!Ō *'j jZj ?Ъ=j59jn#yѤ)ǶD6yךg.j#"0>8Q<96a4D45= D#g<k=~J9auPfY&< +u]^!(?t\3'O!kRF1>މ䓅eG KWBfݓ3Od XKʜ|xه Vyf qo)k)j.((mPsvpaîӝ6L#Dje聇y KfU ^-WJT)D.F '4.<}͠BKp \" W9Wخ>2%b6+EQ 6F6Xa.8 Ɉ`3<-?hq&yV0A7l'jJFl_M12$&N1!PLyTpb%丆MOEr%<\tnmx."*auƂ.hxvSM~`J+CŜ(%[!o]8s[w ڲ徺PkCAtsC[Hz#]J NvPwR5FkuZ HCS>D|tNJB&3b|#X0DEg@n9up?RNa"H/t$q˩i\~?W"EAķ#U2|eRZN 4,ᱚ S,S ՑLk0^|l!59%| D>ӼIخAWSOj5LsI*+4Bz&T/dSiJ1\0Rls5j Q6l0,Iy۬F3ZHHT{(j Nr v 4cD_4(ߒ&͓ڹ=g~:5tIjf#>"+2,Wia6oV42,BLEa(Iys&D+boC͒gLj܇8Z_ V) Lp`Gq4&p-4(/vB2Eju|YՇ04Ajum%t!L:Pr "%Dj窭}c؃*`ASjc=.կSmTVJ܇Kkh;{jK;^VXR^j;}ȭO5'l֢.~RZs@p]ss#M@+JRYF=q 5EV%c 2ꂚr++DF /2nuE`R ʸ2\%" NR77r*w<OYXSHpds>EDE-$*i͗-N\@"^ǢMAMAse5Eg [puNMFL ټ'E,j_9g"ҾFH=zTG̓z ]sv:xh^˻aK ̖y=y̻rxқïWRbޥoʍ)[EUhI&J!"3ɻKGZy#ļchq>V9TΕP X'=pʛpjIJ$-`%siV$ļIRw@#Ѿ+ΘdʭqZzBkdWjvn\)9feFT5+/][ڋ+QY2]Ee+ѐwR$ղJ<]YJ廊Zg`eBޅM+a"g뽲WNrbw,eN+#_x>wPhVO5>{;rjDw)vuJ^ֽ\:Y?V/^{ۡz,@eMp(ɻ(ynb9nDޟOi=ݙ7W/نv/w50彮\'`!Õ-Ik1K b϶K0evw" Nɤ\͒p v͘tA/?8guQ?4 %,^؃IuAoLnڕK8E1L7K%n/Ch¹ tW)ۡPw;1mvg}nRQp{$a)-?`w(+/GMGi J`%;gf@`7݊JwDkw_dzZLΤ}[\,°:=6kkԷ"/.{#'aW_q42,?=28Q/2Y #56]eUaa]~-sOO2Nռ;qĚ֢kguZGVOw3V7VïUXvf|mg/3;#|њŽ;2Qżcws8#|?Px6{dZTXve1vk?3D0*yX|3#S}35s? AUrxF:IoZ?̾D+5C4?˜E[.mo>:'x4~{U~W#ow?P'wr6cĝVu]6~ \K4R|x+|?$>5i]҉Wŗ7f(Ng?(oXzX*VUb/tX*VUb]aY*VUbXFɍoXrl ͵jUUVժZUCɥp߰t1r<LT?7~z SkιC~'m޿qc#kdZ{y%%L.. R$ b%G.Rvͪ^իzUUiE+䦚kJzng{>y[uIdwؤ{kwEߜM'֎ڶk /d=M)(#p[>yB7݊“\lhGH׫#컆O|Uzembo[ In8#}bI̱{LX)=:O{lw1k.q< ϺRzVrv]R; cTo|xsDš>ʐ2NڼI #u !uβ٣'% OiƔ^dUu u~fX}J_xtkN KdE}LbŢZV60a˜qӃ_Nig껰۸jɡ> /Q@_}qSSG?y=*ˬ| /m>Ih^WiOi"N~uӾ ]/]'A8=jޟďR銘[{l[8Ul@Ê}kVd nI]n|voU -4g1&'USv7Nka%턜E_|{RUyyXw,t!ɻ.*$ʌO饏ux~.:EPg[xqiyj'Kn1> ŭ;'&T`)-YSyz`[l4>x(kZQYb;} l`]Lvf֑C6ip|Asj*ҕIe?@cMGS iYú"VHkثElx1S2kE؅H۪=DtD~3OHh6ɂE'0X4;)pm&+}_jN 0[}^GE(LG|]֓t饡5CQ´̐G_Zi/q1ngBd0ޱj!5|嗘˯/ VħV(Mf3bbx{pqjG!#H/lG<ӧp';lS`fz{ka^i*eQg4U~>'6che<ǔ]1G?wGp +L"9~G>˜lFmzߕ+.?<g.U%u(Y~$N}mrܜ烓_U4(G̚p~E nGM0^e2.ۦ`'`<%HloWUu}01z!v7疁'x55sQg޴WOW<7B.99Qˀ>G>H5z3nϗgy7]7 q~gST04msGA$.H21:I {wŌDMIھy'Sח+Η ,|˻Y%&قj,`r4fG?mȰ]eee܁[HWcӷ^zjpFwd;KYXR|ܣ&@|ev' 75?6EYl`'|B S /#2鯤'G*H?ۋ`q_-zhxi.oӟ6Bow2i5O7yQ!3[6x 쾥b֮_u<$>忇noG8xXmK7ʡT54,I%p{Nl?Ke>z7Y8&{Bǻ>߸NFg߷6/BnlkJuoYD]utv飠ѓ{O\5I*U;N|r-?|gg1~{Նuެ'3Y1KȨ^䕏$l+yhsF9"B.d1(7JaEȉugר+5LQ$T\{u;I3sk<=bSld{*]y$u[[Ar6̸!8U#kR v|1"M/+"k, SaSRQ\i-WBQjj{]+A}Skp{[s u#hdbnSd+kbB%aVRW%9KNNb_E?"Rxb<-NԾ><=EXl ZâViV!#-o7< u,{T=!h5"7MQ5jw<ѨT.Pnn4zF_үŘƗGdNL!aWkS-0j]@дuUBkh>,<6}1GBϩ 2w˫'sѩ\5r䊞Dݚa4OΚ>>KFyސ"_LDHDI$TYaƾ$N$ҍrC@sNOɱH~ o_bNjKq"f}wGnfG*Sc/85sQ꼳R"]qdP\LS#wWFzW;zcZ?rYPF:v*k,,с|]P7CO6 ;ʃWiFFMOGbd/핻CB=WEr*`62)#fF2c.oH~]dS ?{qӉ\s(jg(Ԑ9Jܾ+N8>lCPG 1'2*>CwݪM,p3ѭcиO\3yɨ#*C&rkQaSڮ]("zZgW"2<#dn63=%2iu `^zĵ,kE܃6Tǔ>ڿ>)"= Rpl)) WW WsJ [IͰؤi }3On$?9fuE#e'6͉|jXljԥermTR)%%YW8nlFߛPJNW h6"%z8 Ϲx{'t @=]̏jiTIS]Dq䒧nysݪٔv@Ǫ>tFWq!h}۶wMzs wpw&h UW%b,/f$׳#nj+ՅlD՜-QŸ̟# dܽ{օؾ0UsB<m<+ȣz+bnّwu'vST._-r5I ɉHRn]?Ij:/c~Crg~IJ7$e&5'V]''=t%\V'?;Ifp"E<\퇏29ῐsfaZ'vC /wQ$4@Xr3~j菲9q:o_+Qo~)rn=ۧrL_~!wq+qڻ{woH\ w^@L띢 ㉵׹#1|Zdfb\Zgw^7rfZk- ?1O'(oй~)p|K|Vnoʮoƍ5o»Tиl0w"nݪ_S<\1 hQ*wֆ\Bkp/Yum[^ܹ=FzzpmژSX㎟BvCh>dnHZH*\ej?'&>O}L2r+#ah9:]#XWʞ][?BTm(xki:9\qLoÅ@Ex2!0RE|$= z=.2A(2hWFjzJ0A]k%Eτn>M_.rT%oN&3%pv& r:aX1='1|ugjE&몜~KGY-XX\3=&lW݈Fr45*Ѱ?z8hA:-!2Iab԰{"U]ᱲ(Ʊ3v(V]եOE3QT($3QB Ŏ=}kkCːѪK~X\^HYϯDޝ]_8b(ܟJG+P?pp$wIe+ơQϥohjwݖ#h9mGm8'<Kk(}Zgn%S"7tvԨP9.FZ2ԧ".]L]pU(Kog!`7J+?Y f\B9Y'ɚ(D։-Yſfՠh(tuȯ"c}kiag\l9ʕk>w\{K NǗkANCPy;[g(j9˘%OCK2$k=9~3V|WY؃{.O=.'W4>C7*ztOuܱ=ۃM3k2y(#==ʠ۔Pet>Yګmu [J؟Iuc^=1(d'-~gR-Iw~]!C,C f2r5dP y7sκދ[:ȵ)٢Dȥ /yp\&pJHHt~Kp X ׷5'lOl"S3Ld'폤-dLup|\^IXQ;֧̞Q{5Y (,r| Z}: ͖|̫2QʏаK. IGfіA`0y#Bu82\B^nFꏩ3_Tr}qj}@,IJ˒?fQ<-Es8z eQྂ`2MyG3V\{QcŹoc2I) _Qn)rE]))SEhќ2-K\E /甙 ?a]/7F N_&cFl2r) z]Kx}U֛*sF[-}`îo֚Y jI:ܸ= LXvY)is.3bHeeCaw)I\=}SB&.IP(,4*I&rXm#Cs9y{~H+%W>,u(HGKp'wϰ"O+-!oVr]UI&bX6C~nzqYݿ_\Pt^8i'qmL6AgFy@cokMqːh3ZZ :on@}]e&\;Ŝ_| ;Ne^͉3j!B" ~nGx}?J{Jrߊ%YD9aS=_(㻔O{8+_O?qj LBeP2hTxչz jN(Ȟ}cBa5hؒcCWy; ;JfLK.P\6g 옛X^D"ޛ%6rbLyr ڿr4̗v579cP=Iw LAtgp%}vKV^=KvLMʳ_;웃K/8K7)( KP R/tQEO6g"JEp%о/8ĝ8wkeSJh–uM8]-3o@sYh\FLɳ9Nik@MntZߣXސu[lŘQND+ޠdype?HBx%- ͨHhphz4m0g{6oUKǗ uzƎ &.ޅFD8[6e .ϋP~P .pޏAEn`b4w /T{[l089Docن/>=EAj§X`9nap84uenP0D[ףxN7}6khd[R?wdxTIl'XFՐWjmOpw-D4y᜜f2ZD>/b)~@~|٤Y닱Nj\B XQauR TB{fgt6ۣ`{3gqKLПdtI܌{. WDO&j_U@^fTъL\FMϥ!1~%^DQJ>hG13~17^vJAֽ\&TLi<{b ګ\G[>gQCLvFFTۘ-9G_1š]ʹ,Jn+ScR1dS0M}qPM[VD3W!ae@O*wtQhO!yX j,K"D]`4&vhU4S%脎'] tKy<*cOcȠka|,VT1[GVcl{Yyq?+U]{1W'\[g./Ԝ0*kv^ 9JG ) 4GW긶e?֞M3 &@i4yT⭬E#Ɓ-/o,Bvcp]aT xtϏ}TT-cqތP}tg fGpKٕŞ ,;w7ۋ֫^WնUlshV:#d&7I#O8~桟hvFuJԛ|~j:/\#߂aWg2;f5!{(ư=FGV<`˾LjO05`2vߝ:pe!WLfnSyY ②_WJ 1} ǣ+5!RPr:)aRN >1W}Lg-xOcdDl zumza ':Wڌ *CVch4X܏ZjcŨm>PVxIH!wOg<-?d:o;TlC2s2_*$,_\-߻DVɘ vTbXU{%kx2}vkN;DIİ-袡uU(H򎶘"-S3_Lod7m50^5NO<̿TMΥz+Î}çmol8)B7ϪrpHٽ/\.3}vyT%_}ZfԂKxM?bX^d 2ĸBƂZ˼U_1Uq9fLq0wpƬF[`g#} 1;OXYg.c:O?taG4>@m^3۪]P9;G9mj(|͹ W'Ve2!Ȗ}R:PeR\+&d)zPJ-LֺΎ7ܻr h,~;R+V aBo/_:?/} g81Ȧ/@yo0r}LL;q|}'0Z3G?F~*9[a6Ga𶣿g$0ÈúH=ۜƻP( ^\bENx |ZP/Ogl>;V=֞Wn|PD3ǃbq[ǸLF8sl-\$1=9.pwf}zO*67c0C!2IKsN cϬZxcŻ Syf{0b-j̱Kb+GMv`W}YN?!` ?yFvFlՃ1Ce.}L:̆w}} ѱ\nq姎|y2_9sfӸu҆лH:mG~_2ҁ_oաpȓ[j;[!?*gQ\*4T:ks~qPU DcJQ5f<ٓ\&z j/9Qs+g\0 ke8†e+L^&>o0]Ff Xπ,uX) d0oYl/ƎVsC: 窧Dmhq,{ HS2:c }8}>:]~́&k9lNk߁+$R/}j!=ht3ng;Wz-IG:DzNXn*>G0wcD[U>F<8U ;jKpČG 8`i̳ޙǓtBWsrd;7#xRGjqX!hD`~E}jK2f U0v^<#圹6;h8o=A,w5JxXqYmh➿ؾe=2uQnQCQ^_<#} GA\Өzf0u%3htnb.>B??ա0˭NkD 7bnTVZ_>~1ukJ\Ẁgͣ5ĝ{{K`Mz̕Zi~ Lcôws1urm٧>.3 w.>g&KB7>YW>/]Ш9tN**tmZ|>g GU~uh'pfgڔT_vpbxyRzwJ@stU>*|e݌}VMc~S,jrJuo _37=߬лK^saiS#/XtlKFJ"OxB`1pycc0 GpJЬG0/y3qѿAZߓ< hd}] LF]jͅ!SPᩮ" * G ܮ!Y8>{˟|DL4o9OGmC#sKv&r`Rk$tci XWu[ {%^ëCٽ 7`ub N30@M#o/Ѳ O.<7)Xz[(Ni,ߒѯڂA1<Ò_8c#Kr;`yaSsXhyP+,:K,x 9ݏ]#;:4ZbgBmE>c >6o!b@&uk>ǜCczT{m96wx5,7\>gzy`f7V毕P\gC-MLZ]97mMw]Sx4V.SI]ye& $ bHw)dC`dZk1L}llWRy4&Ġޕヸ^%vt/wx[C0*qMG/D^J#b'1ĈSeumkɷJWTcb'"'iI}f'|wX|5{;&%)+16iw!3YdaDs^{ezeeolSz}aXWx^}feKXS r9JXT\ᘐ/*$_cAo1kR;ur0D{B{'p~t1: kѶ+Tg@6fFӣMץE‘ UahltXyW}9\tȂ5/}ޫ>/ |^ ;h7QWckhn^/Nog|gKIc5[4)WϪ7Շ )voZm]}$6a槯#m>м8.+߄JDhwBR"RQVI%3#%U{fum׸{~}u9<}?}=i* p+Żp6`x\"5}`hsDzSV=ΥϰѤU\Nn!){hgO%Y FzER /Rd5 "Y-=ʍ6tOF[n~>~n6]\ n4px©K$pRT?k+[ a[:p[U,yP'7%5u5hKۃK;">N- QVfȰgь]oErtv1o&H ^rP ﻉʠ2sZNU\|91grw |᳐EU24P4}xU\25(;"lmvYKd7{7WCjiUH9TQ| _s9&oEٳ䝈:,9Z[!4*YsV#/O|߶/^˟d6vkjyeܝ;uhL8﹔[Xu>Y $DzNpT=g Rh 8wnw'a~b>=@!-I)i c ǑIwV۳qS_[ء)(4"%WO.梸Q_+ ETuw&31|kO#H-YF{g "n!l͑al:>xI9/JMN!'O`[Z\.v).;bB*npID#/.F>o>ʷNwV/: f.1 cE7 ]Xƈή_ 1_kImЛox"+FH|GPljd/ ރ}F ǑA=M+H4ݷ/ &i]C:q↵0"W b~ʖ3ZŅ5Y`9b.cL}#2aWWφǷp"=\rƂeK"kxosNʱՏ!+>!GhBy^$SշARhgPe{\!+|(T;jp%Sv$?Qv-J%L<oYc<:a@i{L^i!6.;#2i</":,KF')yC?#ݥO S9|8G=h~s xޔII[;#1ҏ[ƜޥMW:w#Sߓ>hDZg=+U1}._]߁hj^q*;%R0olQ|0=ɢ)CU@yr*_3ܸPvRr0?#3mdJ8-L!Aj֥sH_O gƣJN6wQUZs8额7JBhi0j h;cumf 5atR &u4ٱ+'$h0~:C}#*{ظ#bׅҏn)zF" ɪ{:9\7G!Y& n+DDmB'=b Lƿo*#"en_j C(QXoT@ Eك'/V 鷩J/kb-N<~?".K eqof;RIG|AFM fZإn:/ \3pm}j'pDm[\9lӍ0JόHSݴS!Je^(UR;ykĸ|Mv|Zٙ&JQ"$/wgLӘ"7X { u{Qxphu do"o[7 B8V ϶gtN^VkGeњV\{* ^跹~ڮ=IB|H*ĈTmaoZ9DwznVFY0t#T]$ANVSKϟFcﶏGѤ%<Mkja^p$[zHU&SLCDT.3V͠WKbI\9*;5(~ ijVZK|H^/y>{w(_M8BP#M!3q:'%-QXn5$s1ef Z;%:{1,VJj o:&GE5160K+ff2<*d`nRcn6:B1\3|ѓ4[yTqUwtR와hx\jɟٌ[R|'J?۔bWNFNi}!.i^o+ŒͅHn@l ODGmg_'TO6مyaxb 8S|u|d7z|wC:>Vpl@EӸb%5ֆ.hH(bTwx'ZR\9ĐazK:Z2 w[ eI5+wCs /nwok_gԌcWsD|}Q*ב0>⾪ҽ1eԇT9ˆ3pW7;DiLɍ9^^h#Y`L;6tU"KVH䩎Mx@]~kP+> )ZWGN:^p?~}=*% ՛䑍;% Dcί@osڋY]9gdPXF0Z}dw2nIaL0sF_ j>%*e.t4wўwZ/ՈX3c͉XWV`Fuu/>-eM&]+(lF~BsId u q〈mH-|G6FEHuvl:,p12FdhDn㊒Tr-ƴhi%ݲ%rO~(,˔#9YYY2J׮3!?G&TX%e.~t}榕38hf"iˠ6eshs~PV.ڹ=vmt$B}Khչ#c&Hߑ=5;jZž|RVE\/tDFMEm,?1L9qjAfL|ct>9H2u|H ]Vn oԮSGꞁSUrmYiAm5w>_؎3Ok0h5FdsبFtcS di/"vl`S|jvi _wjf^aZd߆X|#3>b澺' =qu ht:`ԈD;ˏLNhDBS)]o|,c YVO柊6=J)ٵHy~k$ٮ_FlO8)0"ʖbܣ?,A%dsFMoKAڥE0CܰVp(ڙw.A\\'Np3O-H~u iDw+mtEY?eAw"{nvECߢlߥ6<[GndBA֣;Z?y=9?_\b-v5]ǗwG ,#c6d~!Rɧ8Q= u~;ڊN%w:=FM>b]X#w8Zu02HW6RA/{w.|\csbh0ytb˫RɳK2Fۋ&oabd˭EY;= lͥ1'_@L֢*~:*M/ާ2>7hL.ZTRF8 ֩1K(rMHPD^ղ1d0V5A٠Qm5d0?񨹍!̣׈q@rH w3*|2*ʟkA~+ AeVч)١;(f@R\,_>1ӂ)cLLw]:^^H?g7}m.c-)qv^Ny;IWlCe|rJ1oICƔweSt+g|^Q?My߅v"\]''x <nic֍ |yO6l":G#[o)JaamC@4yx$gj.22AaSl/Dzo)E~fcXRc>*o>Icdm]$$ۦR#2b0UՌ ۳ߢ'66)]܆ ==HP(tZ[pŊ{q=JȌHe@5 #wOA|$wH(pj-_.m?oE|{䂃 nZ<|9&vY&UuLHh^ujEkEyu+;1x0Wy <5 b@G죨,:͘㫱)kt{TC51QnL >h/FY Y{|yi#jϛgHY r|3TÑL=2}e%ip:7MAh|jQs혛aۤ5] _ĢBL*rlW`l9ч=xVAkԓS7(r>Cy> U%]z6/73K11z(.2Wt'\yѡ7$1bum?H mS7٩vJE}!u64 'ɓ߈T|\E-&w&:U~Ay*bL׽(s^@!d(c ZZ}|}Y]_"܌;"-+U<1uQ6(z*HFjh~ځ0ዕx:rT=g,AojQ 83!8?&C#A]Q#?KW +xT^`eIeċ^utխ7XA{Ѳh1-oy_h3TTpr|A&Zdl~JemkO(ҖKg6VifR.MdTD|#js:~$nbH5ѭK5KK jhYBC̘9O*tr|@6SNiDSTI Pi&:VEpX^e .*L|ݢUSk[/^?I!GLc*J.;3FoU U]sB1̿seXJOU>󃊮!vfo_x"<Ѵ׿# u'hPuՐ%Gwe;3QtP:r\~Ui 6L\^`73ݬ q9,#S>ϥUyAgɩF8K5q}=y~WQј/="$ϊ yQ8J<7gL2 j_m Ɣ߀|zV(#yN*iZ.qo[X``b| FvbRN+LT9XSru#Y?-07Zo5{oh(Kހ:R}-Gezki;-%yc:̹ޕWO6\ݘvҼY^LaƗ]M9^1zHf9{L18\C)M:/قG\йtMSh;,ڃfᙽוߡ^ZDXfU(HMzER;7nl*Dƀ5djZʄ O k!kzOW>S۪RR PyT+:&טіjsu| -s\ϡĈm=zFk_hD6c;O`.U1HU=Ӿf1PRLE,^uu m?wlTR͒Pz7r$N &"czHR>fl1gf2r{)8 Me{- b SSKV|-Y+YJ CNЃmcx2$vbވg%#f_oڂ-v@q ӎJtXMt aJsD=tŸ4 HC ߫1l yFmzSկVbg5ChkPW$r@;=ѳvނ˳ ^vVPd*-|+ET5z[Y0tG4ebL`% 0Y)[b˯1~'"/ [ad~! mKS)G@j?tty>A+nM`GMގģeFV@⫁g?Ur5(y.zgFj5:tN&ďa$,FN=dUL&L wwgZ(~~q@rJ4f0RQϒYy"kV9}.~U*543NԾPP}.*M]@ 3Eg3M0,{F~k1Vu e/0Cg:9^l`Z$WKL@>*iœ5JAk)]AbB8 gNGGי&ބc9^u)INAab_޻9TBqHki=QucFpFSu> ~Im˼-ˌ3GkY"bC VV!W=vc]kc0qu+v&o8=zIQvTLxns8ng:D}aé5=ӿ0l&TۃnlihdaT6{O>ENN6')< J3[z~tWvFFOƮ"*)yKu8~~p/8cE1O=&LW?J0ۘa-Mls0nm-lk: J8!P7/[wHz%iP[$@mrR4'A}O%gv(k0o嗸lf=GĹEI-f|1cxgz?ȶQőw1}b r7&I]JB1~j=1#а5ϫ0}uiyS<oq)mGk 3@S}Bȅ>.@ΆsL;7kr'RfVfTW$sUu%OKFpgcy-[򣞘~] yENEa=lj]%v C!Gdne@UC7fWPjD6qI0x?W=P'x9ὼ-5>DVg  M̻7&~Kak̩|'<:ԺU 3<-M-mLgd>!QGL.}/. m)m;s McB/?5W;g-nsǾhΊ%_T@!芀m9lw4RQxm_%4-<~mcm\;u$v&F6:1 lDOX% QhKG&j\7az҇@S_k`L U)q2r>B=_у%h:/kITԕBѶ^& bjyQ_s5暏Cs|@9 6U VBrG|⇱6&Kl7A>8ɼYKaͩQ)"qw[2@=-t ;Z->Qqu nu>@U=1+ƠŊʝ0^kE/(b,PhΟLm1Bڌm2޵٪+% 1J«c}>مֿ廴3g1knp‹k~W0oSyi#i>!Tu7x?Q$ ,E޴q>HiA}GaHÄ&V)yO>jqv/g1a}WeF8vcbOƽ1䧉x]tك@*䤵rWVcȖ[m;~xӓC kމdW.opou4T9 +kŢH\5r%({g(Q]hw߽tVswE@A$l&ā5a0&}>uS1"1*o9cQP\~+*Ҳ׀yKybC䣰G>8.MC݈o_Cߎ/^9ZfEh* QQDn}J11Pu.D?j祖łRtH.Hʻfۍy)aB+/fkgY> 2Y1ߪ\bOƆe9&x4r E]ᲃ F[HYA{ӪZ.wyKCSFqe4.Y|24FUsmK}@yl-#TA6L0,Ż01z)Z۹6=k' `FFؔȿbhfL%icFq"' @ߟ1G{*-7,v$*] r 4Ɠ1(U=c峆?ԣֲLaZ4?%]@g`Qoh#;}?+-b\VlقqϕU>Fsi/tb>ΝEA1nz 5.ɰTՉ'nG^Rr Dl, Ӫ#C+?]ɪ*~b#4oz5R{ij<ℷ1t eiPJi܈fW PǕ0/p"Fsbq71[`\ڊjr.|M } w0ixm tF#/9r{ƞt3kK7= {~JoWmZiG{ ݺC%b[r&wlq4JO:MmR/nČ6s8fly3l%S 5T&+2ܘT6`ɔe! SHъ<=\hس-rJcch^CʅTcePYKwhV޾A:hw{ݖa^ӔN%ZjM2TEO|7r o`6&ht9cyt*"(!#_ -</^H$>38#F|%N"K6_9 p42>MVP{sޟjkze}sOT-]Pwdo4JY^b4̓]ng^kX/N(j2.1 `n1tqsgٚZax8{*ޙI&c \޸ia",fo2ecqS\Ȥk,tL6 :OBPڬhx=Mە"D0X7M >ʇ1.3ZyF/i=iB_`9ssب/c棈XfN<l*SyՇalWM ?8a\lDf^ovFarv!4jcr4y T1?O^HrIczr]5MNmrDEӖG8݋1q2a==QmWn.c#mFPȜzHT@}W=&ޢĮT1{IdR\n}?i4{*21@@N᠖]^ թvwG*Hݴ S"( ꠘxTEP՟u\t7~+KgLI㺞̲8z!pBj ma2cu}1A1aԒf^8_p? t~TW@{ƖhW~e'pZt]y2za:O^fxVxk0'&Bt /+/)#c"f"ޙ»dt0ΐFpGAW09x4hɣG/)mmכg+F} Ӧ_kseFyºe!w5N0ΰWTdp }:Ad|^h+b]]3YO5k,a=O>noX6rq MP΃za_b:8.c~{?Y, y׵l"'[>9YS |vw>G eXuZm:C~vRd!;8*zz92zfv^]/MP:}eۏA3WD0$阴̸}n9i CzIbY`c޷{#aD@|/{ܥ^l3yo˯; :<Q\+79c&%?س 3FI80!sWL 'PKuÜi^ML=|dqZ ߵ;IcB!SGj!8)ӾJCjɠgVg;Zg|dQ:'%*+|\L(Իvths-J,RQ{ OÈ\$S5ƟdŔag+cI,sFu|j|Mo_@y9+̦ -VPVA>ΥGK䂔01Kdo鉜dr-׋ڙW@Kt#7Mkƾ keI_=?jΠ%?'fn@c޿j++Lbۋ 1%M[`Z%[,2c0}? LiT^x3)CF 3UM":`q ݧ{n.3 ⏷ˎQnS؝ka;1Q1c ƭ<_^|ȝ~`l*ɏ +Һ{Ȕݗ1{ɝ;&YcX,d>F/cwnܽPFt0Z>E3E~д,*AI(jǐhh{?̧E"E2Ar P~cWNJ &ä|S_6e`F\=3gFb~Q2L7<$闠r՞rVAs"R8o+lFvw jݻ)zja"'>UkVϻ+>eɪuI!Š&l/M'zZ׃+pg J޷TP̞c2z^[V̋+'`\jиY,8E:|Jo `患t]=˺{gSi0zXuLc1rf"Q iUE=R q-G@ki9e[a n˜haZZG?0ȑz{qqh+ؗwEI86rbZ96W>#g0uj.tne2DKk88x>+$*V2RB)GTDI))(I{KOJhQd-{˞G"y._^q|}B&wA!C +8֏b8TL/xu>>pOGƊȗ[_!߿WWgBM|k8o\>Vr mMq\r}ՉVu7cJ<ɟo{;NOxEfa]'2pYձU0ލz1XF-KKσfk18#͙)STneͣ.fb&ۂ㴫;y fyJ,ȓ<h4y>B9KhRWSS5k(Po¥rfdR}(ј❨+>}C&2utj$<w䈲h%יa=Ü ut!HrȺv-}iwD/.YzɷCu?/oNJelCI=H?Z- ѐ8 *nzΩe܍'dq)Yň"D'+%!`h% "@`kƩM*F;fF|UI\J5ո(+:r /FčU5ףB6 _B|#Mr}dKS|CtJH͚&GtqԤeڱnFz?3̘m;_#f)rnf)Ixn9jHւ3+b̹`)XiN koe{.: -!1CeѠStZEKG Uv(tMy½ =T?ZQIo}4p.G1OУd'Я5ެvuiQzU^P9/ʍېcr~g9FɠRQ%}1z;U W.XO?"\Ɔdt"K |gO"$}ϼx3a+4WX*,bKtuaLlƫ!lt#^@Gd0smgdcdJRapGqJ:٣k]lyE "' ne2Sj+)KK1h ֫'`6b;{FJ`8yIND 8+$9Er d|ie@4ӯ///Ee\Qы֗[DXYL+4SS;SM-UEe; ⏦ A8E6w,4ߧ2::;A)s]Ll7s&`Jsvզ6`,0wAFA1ЫQ{#Z= {:[oo^Ɲԍ  ƲG ,~Z nlk!8bw ]a9y2?k:p2+v4y"|'h3+Cϲ7 ɂ h+urMNCU?}_4?j-3(5bB cwhRT)])R+CMtjVM/*u}Z^peB,sMJэ[tΒrs>v7*Wߨ[Lxp kK.<&卭wdʟ|ޝ ;ĵA mc\Cj1?< 0y4%7@iCx K6CDn7l`{rH^/jL҇W~ 8P?/7w咼\> ~J vRu*-I8k3.-`..LɧӣgǓ|[ {|azϖ|ڒݳA?y 0t(p{pε?IrnyRg? εwjtHUF$M4m X7=@thm( _[EUPp8Y&4zʶ$B\P[ux dl_%@̅A36Txۗtw/x:=$zk^$ϯB81ɟ{,?g3x>8G*31ޱ"ƫ$q U)QCf!.Mp:=/՚)c>LZGtue"[T峙G)J8@'T ~?'?&}P"< fwjoHv}zT(\d^nN8sEN2ضX+>sܘV04ύ,3 4_Zݗ^rSvG8\0iUMƤEݰwjǿ4]r)?6wCbgћ^HuCś7oo4z=KTmGH:_}5ߺqӳbd=Dǁ43ssTnEPڽ*eb:48n<)t Xr7 'Cs,{]o gAз&`+D$>ZU[J㱹ԳO|6 ,U=vhCyblv?H滙ktU='|a9M8;+Sw&NFf\}ſwR͕ H}~LP ?'nZLs ze),:M7 <)ɩ;O'3OWhS-"R&ക86[FB٫`9WZGRc՗ pL#`-4tJ2N*KlY 1~yBXElgZD2}׃Vx&ש\=O]W\0G.H. q1Y.0.BYm74M>hķ(r5=N!(p/Q6.@,6$gWwTdyKhՠeTsZtיIA]8oqOwA"3p- "FH'BŬ>)~xL&мK|_n;uiP?P9$6>z3M5ȱ?^Փ႓N[6FɵNu;KAQɭ\_Ps6ws/%9B{npCwvguUF^_Qxz?эow <{p|ϰJqLpb?_kǾzb&ٙf6Ys(sZS#&e-; wb\ J`oi`\7Z=+Br7ܳ'a8 mSm9JW! _Z,G_67Ʊ|Pwkb߲{^G@Mhq?~[ u3MF̺;(5&gG$ݖeT#f2ԛt2C_C~|Vĝ`HݺvT lw[^eAoa[xXfʗA)zyy~P[N-4RUtE@w4A^Ct!@= $;Xku>ccq:˜wOI4,*#=C-K?#( e_@ǵ龜MIի1`3!&D'm"X$Cɘk~,'Uxe$ո=[EJu_ ϳ@12o#B\ IIU" z!ςVlNSNyqku =^F2Gۊ$)Thp3u,U4RZ/緛Ax";$'ƆWd,Q[d+d5dP](^qz>`^Gi`s8؄uԼWE|NJFr )UtsID?WW2o]1}qCԺ5_VxnMBXWm\o_N5DN/.:RvCk5[h ]P8q!  |/*!,K= \[=,efӑuo yj 0Fsd2P)IM\-.TuvCN>k-S_"ywYG[LnYr" >+4.aEZD4ߠ~<3Qp@B>U$kgO֑Ib/RR%E\Lc--i2d{u=V vf|4ܓ2O &9H@VnUʪ˛s>[ԎR*<L}-zcW|nMϷf8់6GUߖw~RzqH|ƨo&XnzW*G:#bň+ dG{ H!Jc={eУw*ÐY{[ l=_] Rwu%DHظGɺGBJ+ )+z!ۀWO[Z21/E"Ns2?_PNث6S<Y j?1 $.qOTfFڕR 3ƹ x7!jesu >;fUnR:ޝ&{gz*|83T4?_̈j%5a]$ՐFPLh$Zrwf})˧4礔L}@Gt.L9k0~U@7l߸ĦFyOCcY滢$vލL`k-⒀5gb>C&_؝e 440z[qIŝVU; WƪܠV1P(LGaG؊@$-NPժGw 3=wto.Ln]3OH昕(ە}iRf#`D{_+jDw楨~DO- V*kB~>S{+^V?%mL]cՂt@0TD`OX +Ay. {fhoD;LS4 ?`ucJ*6' ڪ>,5,8zc%9\0HUQ7g@(ON=q}JqD#7ih@7vVg;źuFJ~c&qV+DRJ4emjgdnߡpDŽޓ#`TJ}2. m\n*rOGLjI)Fg YjD%Iz  +FwRە0MO, >vea _πeEiW]OBJ%\]߱ws;'r9aB\E1 D;m)kEB5;jL GZ@z(O:OT ~ v55J} 鮭XWj^ Mj́]-Hu_HͨacMzO$&ܧ.$ #։gCoˉB8K \X;N@DT9Q[xVHU\5%im啙#ՙ7rLaeh's84}Ŋw2竏Ǝ<=!,8Kt4)=Ղ^rG[x]H*Юm}5D,uHјO:_tyUc|6/dqtiqy Uz5S\F$Bp쩣9̛je`ΏG2kE:(ܿŢ?nf ޗz3Rs=]nw~.K_wlG{d'{LOZu-Iai|zWn܁h×a&U*:fE$ 82#:#Nl(LYuQ:-2ђz:=q4Q-< L?Puv,=f"'ѿ/DY^J_V"S[jqg\>J3!_8}@vr:splYQнe8~ 9YQ䞠lQt8LW3j.> slwZFZax2J0{DgH5qԧĩW/29v~V.㵠yVG/1#^}Cr3S#m?UjlnPjLRT~p\vzۧL`myFY?i:%_G|ץ{9㶕;܋|o{'}st"7uټ4eSm myWZ1>]qQCȒRfWI`EAniUbH[6Iv)v%3{s؇z_7vPL/C MX>8_q]k#Yg6< 5AYAV U",HrBP"N=hu7O>w&-L2_q?"@?[V I+vջVy&|7 "v) Rs^Yxv­e,wov3[C~=83{ۭ}']9{\ۻrGPW)?r6tw\xOEрȧ][$yl7cө;>A9o2rnBn szGΝZ7e674Tc]>_ޣ䎔EV3'r\o9#t߲nzL]袗h^zyf+?xq3LmOj8.ߞxBkuǴeZ3وl;@'VZV|YHB֏4HtP{WU;!oJn3AgUy72kܨ]>#Q'P [2LmŤH kޥupq+QuCyEXүUWu: R!Al䋹W1p+Ќdv?iüKӫ>6 Y=.?Mb8}yd:FVe딜"oX5}G唢`R ro<`AiUDkc9ULum&G{O.id负'%5ğ|PJ7-EOl4r )oxHLnju& uޱ%邸b.-bEKJ?6Fޭ^!uuI|YQxfw,cOZʍ߾!ͺ87G\:<$w $4r ]qx_ oiZfUL`_`6i 1d2[{_V :4}ƹpd?HqlEvJT;f*? \dˆmd%O?Q_#G{doH5UI,. ]mV}σ]}.LjL[yW1!tN7D_$]ȎS'o5;͇J u\9*OX:3ڨմ(NBLs^DMP=k'׌SS0;)V6p](]GJF=uXtkdߑ8hkz2('I1HFp L՘_;]Uh?-߽B2cٕ߭%ҍg\5Lu#cϕMΉC|TGS|;T!<:iq &x}yM^&vI-cu{ρl.ؗ,D/%!3  LAqVnMU#)HKMգxeXr8^>Oxѝbq3#} ❯I Dbzkq5lDCP> `qƉLohNA-rآIbjY> ?RH9qTYvʰ>|}/ Oev2TG[Wnruͧʿr_r/ONx;a6V V;s}N!{kEEZ pi&?Ȑ?_݋*xRBNN'~IVTvRn;!;3T6;w9&KoH΋W[[HMagvG\wP }Ov*{:?Qָ(,?X^5퇡.nAg؛I]HL䇏Qdy(<=Rӿ߮l{Qk&]ٹop[,nS}fQW!TjZc@:οxf>0A\̮xRlx6"T<vTou6l:MA߷q=P GJ;OlیJyr s{|iCAk=ӍI@( 4theҟQx\1v>";[ ?Uꉁۀ~I t)oJ+*)SA9˙K"yB-v r^Yi`5KtPVQ(~*5SP~}'h bJP;|O8.Ϙ{̓eX)JXrHuӇvJhiFN|MO0L: НVslMzHCJݺQ,;fUnUWqA}(V.!S3801iSTHЩso1f l7O1!7-4Qda%Tw ]2Mq \=Fr*-hu+Qvǟ#*g"}(&]{#&~PUXΠ5J媀;UjȧN|a5krPJzGmW>U!=oDY3=&b=A-Kx ^Pw1\*{^Eu͋8h ^2{כfLJ!j\A)˘htd2*rI:}Uca12mzXn@i`C@E~~g#5N~D 7 Q#d ~Sw&ux~h{fzsm.'%!&0~G1DW"p|nȩonfSVNTChtw^yR%ݗw(wd5m7 DiטGQ9dJM?RLT)}2d^PzyjI1˞w¿3tbK{%Y&{1Ƃ0֨P]W#o G:}(1S][ى_W[#~)0}Iaä)Kդj2BM!scuȺ1аd)񓏬{y!TI[ QC'|{*hRnrQM}|H43JbTKthQ_|V(f6x!aSdX8 |Y%t-TB^r찱xanHqtl3/(ء|w9־N덩;x{ӡ$5QO@ }M7Toyf/֥Re"I^?jS+.׵'oCuH/lhU}MeX625ex{i'q̲`wZ_`=šip͈bKXX???q%-P>:ޚO(S].0[<)sb{'Oq\maҵ5?䬅hM8=q&u Rxꛈej]n4E|o7{(2?n8/Yk3(SC`U`MNo_!cc\NF.Ye|갾{/ܩ/׼A&a7\ag$# @+/+YF_#׋#|p:s+>|uadd sE~WB۲%Q6\f^~T8l}|kϱ#3a.|Xo+mjYyj#W)[ȴ[Z?3 I pw[e5m5쐮4JbkM}|@s C/gzz3!x/ߚt>]tZ{Ʌ=F֢TtUwD>کiR, DCү5ۃƌ#R^\Kw%[.Raڅ.S<*iҬ)=f x\wٔ4݊=vR;r(TݭLSG)/oV7a~ۦ'gH3j׶Y#U{vHp|@',ZO{;&x19=ew .G؂[A*vღJf&OKpT{D-|,m蚈&dJR`hrbnxCJ B?-]=ԹT:qKsJFKVyD+uL|w*yu㙠i~{F7t-L^DrNL~B;ks_^=ϣt9Z:mV9X'8磏CVWćґ Mt\/{sH%SJ"۰zM@DlY2E]oBmKp ƆP0rK&@sy~8ߨl醶0j='Pq jx{庄K>`Mu9^2Ly}ˆĵU&X[#EֶQBlXWW}.%1 (Ow*zyo|]Gޓ-t9]?ckvo vFDOg;殈2nO-ޣql7+N<~otS Np8EmWuf`wk~' J)͞ L{R%)ET0 ͠WC#/m"KűHĆw0Mo&K& zdzV !$$=`wk݈\KAv3 5h$I_!ȡ PUQ|X3o3l)me[uIȢ_[R<5.{y/r]p)~ N鐴:R|GO.:QfWVzY9D?n2` xOFQ \jI\ Pk&2^Z*,_#ѕ [tMץ(+򇑎pޑCħ>vVʈ"td6S"꧴[ooy=yw/oIO]1JW*>_FMoubl߉8}L?rpޅrQ!W h9jg.-IVV_-g\5m9xq@Ƭ6y^d9E%8غn̥]zH^O9kU>w8''}+lF3WBK<,W\%ӎ}5&?AW%!¥\F,& FX"Iuy3H;>.sⲤ<mg1S C*Itw(mht@_FbWEz&C5^ F "!]N^8:C ']fY[xoTd*_%4) ^y >Jyi۠SrToMBH I]E44VLw <M)4fg)Cy|M{r6u6 ]BŶƈmm7(> FK9+ p/@of䕱V[GlMVV.)=ӪOv|7gt=(mH'Q㲨 , ʆ'2#]Tf .uk+\z87#{7}˻o_~{<JFŷV\v8^QA:Pgs2u5qZTGmfMf؇k`TyUb>0O o׽@pG-z%ix˫|CJaVDh6s@ Ztt =^Cqr[||~ ?"3uSU:{F$ѱM5m:0x(A?>,"|kiMRJ~FP X{U#Z-cXN;:ۿ੭zd̎dETA,ba 2 a?0[ is>`^%,^j-۠= $՗M)ҍ+ F, ;goXZBś%H8xT޵BtE *{?=jJ]{ߵ'"Z`Į'>% G`G!RW Uʭ@jSk3L` ^m/xle4Z b qxάeĩPm.a?I>H0.=ye]aVs'D+i*{ aqq g⧷8IܖCne0%@&3mLqt@F<("tͣ><21HCνe nܨ"vAj_f~6G~2 T`8*q1&Y9@ TܖNûzgd靝!P?LB='tt=arpGa.+?՘VEE;Ky_^Px4LJ/FDAiJFO%e;q5l.R Bt=,WlG"V1Űr+BEV6*t9NC@l`xtBnJG @i% bL(1.4>G.td1v:Kg"\9K^~>g~~}fwDN1UuB{fLNi 4qZ]_]YQu]2[iZݧ!7i! ׸@|1@Ri>GTh"#D ;|ZBWNOoI/\Ft[خ>`Έ>*p8_@a+rPH<_^=EYp%1#m &C'ĨX%?+e:zN6.,ªXBXXuZՄ&Q/s҃%|BHDR{F(%֙l o@4Hu",KꎂF3<XN .wFb '%+Dr32#hQI]_P4G sJ >6ya˓ge|qD 3T[ K/͓&/.twWį ЪB)_4DH\_VDsSah-hG9,RD6qa%gxwZ5d <;zt\~1dW@FM(`wV6;ZDKɑ,h TS!EVΘEzm\8\1D GIb8 nEpsJ)iCr~ʂAH2̰`Bv@k^z.s$-6ʭEBѭͻw|q8^&[nZA9JP_AM#HtER^: Rl`T%(42!9 @ѨGY:  _ ]!B,jH(6"4\'3cˣiR:@irDND͈ `Ϯi児M% 3r~GAܛK*?ʶ 0!|NP0vd#?yέ, (^]Q뎭55>60䊅#~gzk˨B֫i=U Ĉ_;r!:/^,W]Zْs.-Tɲ|XU6{ 4a5P-XA,4eiq|7epK)ރt/ ?r.΃13y#tY,(`) DںώbfYچA{ Wp(jN-TH^YJRw\Qh SQ4_ @oJ[[f:/z "uNp:ΟRw \JEBj`ȦKye Y O= U͒C\A:iL컏u1 j$[*F&ǚq qsK x4bSè`scCvS6?@R@]DUk\*3$D3+ 1H+w4 -P8kǎ 9: +_]emn -49D<`')#_*~- —s!H]I aWLUoB/@@aŮOyvƶ٤& 0*|?dS'ML ?B8qr4IVXN,Bp=>iYB},K6:l/]JH `/4ӱaYO֡QC@.P9턄50Q=c*]SJ,hz}AOb(LS/IV^FARYq@L0_Yv7`_ co2ڒ+@VCS/2 pS`sטTiRW`ﺬYVؕQf*-t=޺o.;85(M:)dD(X#Vp1^6swUvx/E*O~,ʔC//Ӄ6QޭR` k65+;=KT7``xHׂN/| 5Hp+@FrJ bd|.\ģc¨ƽ6h@g u]~,[` iaqكZ4e 2-ЩF:r *Թ]|$EX-Ԍx'ĉMt}ߐs) W Ʌx@O˄@-v}Rܪsԯ#YY OWTWyu3f>~T˝ē\2Jnt׈]Z$$QsCԂ[/ &VFǛF+{ wm5 W8oomߑŚ7_H;Me)ʔ+ND8sW#ѕXJ+| ='iNl _VD~hG3_a|t%NXӎ|y ӵ ܟx=1[[$T(|g/dpx&~Put+ ^n ҽg )r;\I(l$#㹖BIyk[k\s6OSB Wv6 `pífc=qu-E}0ԃ6d+eK͡p|#o'țr `A&tvh(:L6jGm%V*x-W{ent䉛&+(<؎? `Mi_Az8nsi/7r/YD0A4ʸimPOc",sU\"Gv)ɮ]//t`tn螅.37 ՄBqrǕgD |H1Ac@g$,ETyVt- $ܱ2͜^"_Τ6״hcPN8N5-#K`[AT@rɶQ Wک/ fel= 3@{Q ,#::q*ETB~dx.HT[B~" <-'O5QSsN{f5῭$ Ÿj||bv!O떧{ WT4_KXBG=W\yqfFSvKPڋ$ѭh4i!IlAsU#[ȩZlA&e'm^[20ksCplZ"O b[c3W_#8bn=/_<BOOCvcQ`p̦= Af_̮u= wٟ_=Agۗw[7ow_mwO1)VD[Wrͨ,A;F_ۊlNjQ[sv'u\Um`(̒StYRy O˟QSUmx)ܧXܥl: \_h}څH2@!_uFBL#6`ʻ-ߏP# ?~Bi~K̪0W! ^6N:V2鄇^~^.[pa!-Ʉ mm iůrM( K> eQ }SI)h a[3+T2Ax GNݲGϖk3Dm3yE רGT.phì/GbB5EaYYZ׵isZ=3V. T8Jsc_)p,[57>8p7x<$[h"R:`<0mW(-Y;@Ob|E_Y,s( Kw40MENm*ED$3{~vVf]@.FSP-&n_{dYbL겦Z. O5NU8GnjpcE],GܫHg-'$4Z['hd5 ,r؍~؃sP\38ŻE`{׬i-[ʲ6E9ߊ}^\;WFa\`* kTQl7xY!6x~gq@ זּLLMp9 tA;ȫ4%EJ.EZ\rc\pt[l2\ặ^Wyf֛yzLEJJG^V:\r qݍ bJS7nˍe[ h1t]I\ bLnr}bʦ: vٓmyֺ{͸=.PMt2ԭ4PE2ǺJV E8b2'KlGFfkUR^C~Ε\}S[UTA0 l\.yxԆQ)P0 ڄ͔enY|fǹ ӂum$b"I9\F=Jvgyϵ5..rWȔ, >p)QvHIoV򐲿_(q=P&ehs*}3WTg+K!u5y{a9fB}\rg_=!]џq(MttiZ%W\vi霤=aB6:0|yngc9蘗nH_5y1HjeÝspEMs@\#`5?3/>X&9J.ZP'Tj].Hd軼O}**I ROqd:Y[}Gբ@`=lUb2ߌ/;}ҕN7ҴU<+ylԣo8Ɯl|g.Y2no.7D?uC=Pe[uV>N{#iD=Y՟i)D_0_#71;$`.QdW\д!{BI2 _ s*̈́W;0ૈg,Vt{1 -FU]Py:vzwtCJol,W9p'(ю$Y؈dptn|~ J@V,H8aAjPY4d?Hd?dzP2A3fmhR Qe:c@b|.g-K凞+L:`C|`-Ն\!ӌ-!:/QU ` jMLAϭ_,YQɑJ=H ;RU( [^ 9XkPڔ9/0F}zSm=yB=s*:=3_'9C}9xV&)\g(Vo'+98}[q~P1\Dg+H.m7󯴐M*lIFfNVs^X7!"oF$jtNe}n8uݿ9Wfb*n9KԼdKCbE9d)S(\YnU*ϩm9GNrFUۜʄ$wK;bY SLK')}uYP Wr!!iX=VҤBiS$roۗuN 2ҭtˏ}H ӣCβʱyˉbuo+'zs޽5\hwn}MEu6ւ7R'kB,P'.)w=ZܨGDwPUKHlSY'`πH^8qr {[]js\qaGQQmN2bposyϐコz+ey(瞌| 6j:7rkf\ߓJƶ Zŝ&_rg{RZZu& ٳsO4?hDg2.=cT񸋵05_IpNcWxVf` V(e3SHR'ⱶru{M޶׏Rc<½bӖyD_ &)4~pX:nN^I$W6 l;zK|w"MzfđWfk*lșOȶQs+UZȸp*vJf-tf5I%1!ZMxN%nn6*LҭB{f)W]JzE(H2/N`J\H;j50IR_w`<7|6+HlљI. CEuלW>uܒV37 ` )iدF9re0M*4GY#9eѷ-i/;%}#iC4QsSRzN-vL  y?ZȌ投JŬ8GVnp>Qp__4}^1ʡ ﭢʱÞKE`S5]r02{^JM=KIr){񐔆z^"Vm7$ͳ@-ȈeLJ3;4;P,zNr# 54aeeI^}a6^iC^YÝ@VF%׾xF.1ƕ2MC;fat`C.j r"|o<٥WL ' &{_G#߆ӷk<4-kĖfnK( #mN}r5!|rW!W9[=JC Wa#v2Hq Et9@pq]mP9;(G ZK7ˌ%g_YVӺReWB]ǚ"!C}76ſF?gyA; L'~ul@%`-"&$pW Rb'k!_Pa yp2@|blq;xKD3s>_9Cΐ)TIZe7Foywt+tZ=b\'s0ݦroANAU -YI7g5oXTK=4;7v)d -$t8d5 [dTvg@:, Z, 6O@/9໇11֞N\:;޿_sV"-Vs4ђW_>N ^h[ W!Qoˀ/a%zT=`E5d]׿֮b kkHxlREN[6tʑ5aGxZ%XlnRg2~K ,?tZHƧSkXrs;]ӗ;F֐7Sc=/bc)ɏ/06 ܬ4P֤9+QB#w;s58CXzgI&g|,=rˍ9K죀yVbm.aEQj]?#%7|My]GuY{g6Ć# "^fy_"MV/Ik$T!ݮAҝHPˤ3wzl":nނhTW /W֫f;|a'6:sS{qBb |_wh=y%# ZL/x KqrDF8,!$GtkזZ[9<y1a&Ska6Af/گ_,%;>HQoދ*WۓVǼ:h(;P=aF\4k5A2`d;zHsc2/EtJ2V~Hr*\W'CνW4#z^!)Jbl. ^@&*^IUǔ̑F>7x}\G: S;]3V"ry,co+Xk.ETK6hKpޅ4QbGF;vЗ)gM9׳EO^7 erʻa,#.1)"2P՘ 0:>_׺5*z8UoI_1~znF 1qx1YK裸,wETz1JļyG"]tVMdخNP,}qANڣ/ccC QV%L_- za$hy7[: j˸tRbW/V~&%4i>gS@^05o"5[ǠwFiOgZ-Aow<:Ňsob;[-WNAHgF, rHf;;B\2s [u2^}F43%V(3&k;2l #4?6|~U;6}cLyӒ[SZWʒbec=BC)Qpyײc/!a.s;֓iQ'^{K<ҫVUn"!ȇiUXhc̏e=ܞnj\g=#O ֩U[NGq1D^[gFTxOzb1?VDvCۂ6fUjB:x1ؤBsZct=`T 6$|G)|ld;ksFʜ*Μ|7td oj_^=yL77# gP>Wf.鐞e{D"]ED]CX1k]k( vɼyn,4)EC#_o%3xipkο;[+#Wj=>DYɯgcO7x:Hı-LTZ^&/ڋ,WT\ 9ޫ0 6`xp-Bܞ;^жŽkS)Rr؛{"vb=sn#$8鲽[_u+e˿oNn/4>I@Tg$8\,2YsN);N_?ϊzN/E/\_d{ pY2/Ѓ L;׈3UwB W{,{ӻ[{CNV@aUq5w iArmd`~G3vF;2h9>qÁt+'\ߺwI5az57*TQ@z8=JE/knPb-zT|(1cwC '4_lyf4-ІЎRWўM8y-v3Ξ nHZP'_x%Vn9Mc^7I)jq`]4&wͮq5ju ;e=;/f^&׊ 8^4g ^9v9di<~odY.60l=9hYUR?e~ (7x- =ȨOyCͥ?zjH-lZZ*q? ص{K(DBȀ4Ģ#ԃs h߹ ᜍ>8DpN= F.? )˕Yon@X]r'-ZBߪYg o'U%zGY;I45tU,Wh)R> μc`% 3? 7͑K12^25v_j-YY-q%WZ^'R\F?'DDT{WFku=C٨ЇzyU*uB n+bX9nnG|k^5UB󹓼\ZAR/A72rtk4%:_-6G%GHUNu #M cY ٻp,?ck {|K͚n/]Pd ;t0ނF/7Rwh_qHr5IiXd) cg]D 4CT % ;.ώ|BJMDUu%P-`Y-Hn4h?@֪&l Hل_m9c4koVJP^xDUJB"u#@r4> yFJ))vFBBzuoXZ(7eV/_ý榔ݷNs6E7!ob؆$m"yfE | 16o_y|{{醞\,Rfy&R$H+D|qLOVQyp@16]bK̤SBxߜ `O~m'?6H+9ayB m,Pǿ#_{~螌ذc3h=:Ff+Wp8"Ф-yDb\o^1W킸e]LeȀueIŠ6[ \Ro,:ӻWKRZ~Ü+}mY TؠI (#CwҤ q&_Ʃ>ڴ u'Gُ^ޡ-BB !FuK+B)q%8q"OEϾ-.)"l!_7W+#ůVsdPx~=er\6 3nLx.*of9Bf""ڵbj'b:췭r{O,3YY\~izSKx$zs%[] HK.22bB1PuPֹEB'jAԓ2͉S׈C $0͌+>oLfj?=-B2_XsC~~C S)JHO6%+˰B-P_ZBʯv{Lσ%Oܑ(v7g{mwf{0ٿ&~ [1ml%oL tui?  yhWO_P0G7(|iOX]?K<@yx̾?zAvl %j=~Ps$*&)%tN(1?m-@VH~0} SV^/~.$vD(?^g 3?Y.Lu_a'͸91GOwMIJ4=L׃zZ"mv=4QuL-TXY^IkZڢ!k(D J&Vs*Ĕ&Z{a1Bd0Kd=Y4M߫ƈ㠋V:Rjrv+oB6ȡM }3LbPהj7ѳS}NQ݁+#!Բh >ηkG3_9ZMSu}gHg'wFbe5uc+?úg8~]wXr[&@T3WHp?|;@f5pȍ%ĂߟaL0Mt,(i3tV>Fs"a}d>A&{sBlJis`t/"7xMRc>>br<.pCWshӜ+Z:h4HPRވE(ju`à3 0TT~j/c^k@I|(5  y$neS=/5|NkD)/fYG)N l@{2>Den54"utыq)%TkVVt=4rb=n,Cfc ϡC5>K oQ zI{:f? {nfp/ 2߮Ȋ^@DWf>goYl$Lȧ¬֔ePF&a_S?WWzA5YouPK>u'w>yh)75;w~ jz@ՆgO (o P':U?l-y_zҡMD-zko=p|eBܵkDCe94V/{FB"sm[0^3c*rs@KDRmІ2cϰhq4:h4lwʄEHTyzTǗJcfGoMHbo6PLo`HisL`ŧa_1#;du{-MWNN2CNTfQHC>,T!U]ǹ+(։zo%-5xR$x /sYgr"h!w&u_n;#V~{@>zRt)ek!ϧy fCYRڂt9k ]w9C@beuP}-tZzA*ۿU[vM-k˚tAk?h)z|Iu͸4e$ƞA8 hܸw)Qo@ͲvDkTFfx^=AѸU1qwҽvқL]A”^E9"Za /S9p[V`Mm$ \L^$ѧD !Oeq+=uQ|8ZOz->d:s&ͥ,k0jJ }54I=Ê>tG_'5ʡ'Q*{(2ON;xA]#C vyp %{+E"tAHճha 5wB4*(HPkj/u8^`Jn9&>@ ]b{.*S#Mǘ(م$U ~OXx,P72fS`PAലc9 ן:O'H8gLi9 ?y"NeZkA ]"Iw:T-7Z$|[+ηqU# W2e.h^6~U4'VNZ\8o$+hi6?x*"'Aյy4gU:T;w7Sb7(b6f __*Հ|'8U87]x, NR9?G5`n{p0p״p 7EDkk(ФE }J WLhܵ^#̚Ӻ -1ӍO&c8ъ ,~NC)m2*ICLTW]Q"@t= O2xUr/8"9sM&1[dGݧ ]دȢQjru |W\ɞPA:N=S[Tq حy⭈& :w9CD'h'eդUHrHr) 7D RN)A#[Ƹ'7@Y؍w'PL5ocdU_ И5?4ipSܠ4V Ze/"m!bW>w,kρ\8hY9m/KYz$z^ K7T/:>7,@AMofdzʌ@"+< DK@i U{XXk>ƦlFM@|w"(D/wk{IU`mU-s?aAStodW cG5Pиy/{,ת^}>su}o|z ua~ia~Os"RT7xkhe@ȹ/w?YhvL@a:dL%AA6(F OPPGC*@ah.}|`ZY|qGy)s#җq1Ʃ3 }ރӀw A@{*&5yG y 46 J%4-JL\?G}Y,m">{2"<o%pN)SkӛkbpPqihI&uZICh7B,PG/D9~Bl(cB? Ya~띚9ݛxhm QEAq[$9Rr;Bipg=On=-zR̃@8N4]]UcI/Ee$JCwQcwDOP# q ''ת끬oI6KթoI w\ka@6/,#oE+;mcػr&C7h>[Z͆U@dXiQ `W3Ւ&HiQ$fDG+ n6VPz HS cY^XR KkMkka׷Av{IPm Ӡ|kY= &LlAݯAbj1D┒%A`ĕ) >H ` &;7iD&{  ߼$f&vTMN&@о:z MʇqΌh:M$Isn{Kzk1wִ;⯠K_v'*$~ ny[S%%dgJa?-UA!\QҫK :o<4Fl:ڨY( ɌYC36I诒=xt@g/~d 'N{xΑS)' ՔV$4&ö*R46Ùd6_|~|,O_^ 1fgFD5c̨fPہ̗-1*Fdju?}^sF!)bm*]ݿ*-}"m/x\[jk5 ܧat|年DH^ C ^efv] .i2RSHjiڰ*˦K/2=e ?D{E=A8 1Zb,Gs/It'4v I$%GrԼ܌~~u/=n/HDE=݃V VJj7DϧkEz~[g7ҒRLEURx3OPh( n.CϬ ](7AniUgpZ)sZq'D7׉EѺ&8:K}(HK4/t#;e[Rp4eRwU@0<_H\&R(t;2=OYqVh}?Zq9 kyB!t]_yuoA=eЉ)ތmUA+L6<3:¾<HfkH#O <wOYm&iM{~'1oP}t}]>7diQk)9.A~I}xߐ858ڱj 03=}f W^'?g> ԇڃĝA@:Rt? CA/ZLnf{hU4ΰ%>[]jE>D_^LrG[K /.p#7ݑ_|-R$jR]Gxrm{tS(LVyz2ۖy ~jmKr6f;Vh\- +<AGg[EZ8;Omj ߬p~smZe}&A=ч?XUtM1|\,`iEN/*n't$#x@u\"Hi?ȞEP(M*&AG%<.k7b ؙ^7)Bp 93=(I./r҃`R.z 2et*h E,`3jxt4c,[axq CU;l+G6Mg`Sy/ȹ{ke4TXKR vݹ O\〹vS̓A; *U'AIgFY| r.)[\!zK4kn jɟٚR(w^t8;be@W,Òة]OU'RaRQ_ H@']( GKzS@uꔜ8khX!`1ڱ1%~%33 @7dK´;87T^7z[T]pyvWrc%?+ƾx@gC4|T*g½B@duQMVMdMAL )ےhV曠\rMeŅF£F^kOP볡ITLEzuFG۫7i23ArmmG#])oOȇ B!g ~onj`P-TĪh5̑;y3w 4y;Ű4MaLb9ݞpm w-N P{_/lHŁ?w Dd}VI%mrd(I3|+ߩνM^xrܾ3t~oh JZtecAioź,p:zɕG e{9I Ӆ{ ‡e'tA0cAO2_ZY)jѹu\8*?T[JKG~Q`R^whs"IҢK- H3Qcѿzц`Z++/viIVh%M:-y0@j.&)nD&#_6)G-JPG[E{WtybJpPJr&55P:NЬ֕ĔxXK]OJT}@]GalnZ4jS2:.Oz:]Nyn!=MݨHߠׇ`ؘGv}\*s[xؑ7AjrP6^{  @Y + Ay"659ы xesX ՅOy+}7LzIX>]Fs@SYP'|LһdU  lV? a}FZ}[Kv M^]MVH@ >QQ2MR1YEa\ApT*Wz"'Yzۄl\ x!-eEk=zB y 9>" 8J|g!M7Z+ / :EAG4e; 0:oڕ{cm PGvr{u!(<@C@kw|~Ĭr>ewf% Tux+ _qT@ڰzu0|2qmM41g~ 0'vX k@@ H\خdWÀ\)hDŽW%N;ِ!Rw;8~ҒbG v{L:M}R ׊/[[ꐢ} fh]%[-A s됌z8l }1yY:D$HYKZ")s@hBaN?KxฐLƞ;O'bAD+AD6Hm$B|S;4h|S0!#_^o]s|z(x*1JS>ɼ+G:ip9l˚v\`scS t\{Xؒv(E@')h[SPu{}qvA e;Y&栔Q$hQp$*,  @yJd= "8opPEVNс;U:g{x\s]c.=0j K{xpu ^k3E/AODz=zzcј]++_iGN×'Mڀ)h=(DcV(COzN$=mGz~>R>1.vo{hI9g;8?T^M.ڷ46C1['nP{=1O+UB Xv O.,Q,\魂DP"O5Bm-AYqO$|sja&Qδ 4"7H_[gu߁-5L|^ uq;=E5f @?Gl ']8`Rp 1@4AzQ훧?MBCp^V A_29FH"ݣ\C6gt4&!Z<{zi'1vj J^H&J4R VC1j]D&+at?SGVߠ;unձhT/@/Ûe?铀QԗH-up翃 "۞ b7##J.m=HܶSaV}$AVEsy1{:j?V%H-{IdpgH*-Aisc-J=FŌ{໊:u rE2~Y?{-kwE(stӌ+[Ӊ1вp"Zah6ޘ&Zʨڽ_؀|m2cߞ E+eKD!qW|:ѓZ{Q?JNeBoe:mⒶŅӨOCZ~*0+=q /Ќٿ!;E$u [E@Jv^JDqـ5Jr2)z/ֶ-SMAy..wԿ% C%.* ƝCx~-LG?yTy`)Э..\UOзI <8:۠'}0^|=Yj*mc<}z- ڟrcp؞G q}A'B 妣QYE[ j!=.ёX(J=yvupH_Yi9nO=6G L7AW ~U8Qe3a ng%Ǭ+uěs}5Z<0Kg@+=8 J^H;8_>AGoM<7]ׂ̚z`)F= =f!OVC1l'_Ǝ&jөZuOM4nHct>KVC.6-T4VMϥs0GN.G(g 86b1 =%}(yR 8vދ.O3 f')ArῃPm)нȨ>{0{Vgc?V9qqҴ|&K1<E7knГhckz}47TĄTDi%HEziXK5^)&lܝ}5l_LXjq7C@L#A+Z؃@Z$^ U'd?PlHjd߅e^9'-@fU vUdCn]-܂ U}S8Hiq_ aJ:mݽs/A0>@ ?MIO\sHIXxX?c+߁upV@VmuFꛅGҜm[7P؉;4~u(NZ4 4?{ԭjBNsHtK90tXh >jߖ?Hܘ/P,:` ^ADN}Dqz>(̕|dFF(vw8r:;Nv-3E_tA?^]AzhUsNI IwyiIӅ3~cݗm\m9M t)! Ŀ~~ *xZ;*Qɀz0=xHZwб-kذr\BTC 8ח64a|\E/gט@SBp#61-~,C;p=T "eԱ؁ A8r!`o+wz;P\qe뜕4AMJzwQP" M o}DrR3rV^#͔x2Y3c#$.򴾿 W|\#@2V >Mw/|m$BF#*Be[?;(_Zu U7Z hHT w"k|xX"6 "v/"6Ct$n*'l$15Hn姽P ٩1{ T+(@㱇eY hnwTxj~t\ @Ӂ{{!Kp q kIH$,6Sg6S7jzj.&kGB@/ RGQ̈́ٮq$pos( x{_L @tL|V<o_SB PɆ\UPI Bgu@!‰97(U,ȏۻ 7(ޠ38=-CKҶ&Q ^qnJω^* c 3Gf6mZOp}f[l^_m 3cofow%J9Vb :Z뵒P=TPoJVUTQp}^5gۺ4h QJ]4'/č_^v6c D5ԓG8.yW}@đE@p'IieFP谊"}nʫi{-@m> hf69Ơ&n8 q~=*5Bxel@wS-l ƾVg0W|IEc%䊅.o~&|1$pAD)sZܿ2;a;lOAgcPftyr|x}/*լ5G(k Lyh_()/7ʹ[(~{JFt yN)tuZT[f(?@7~ t,͝x wfԃ\Ӑ i/$$vO8)PJUǷ Peb79=Z=*z#FDa>yŘ0+;kyFI$!◀mpe?Ah:S#CEV8Ro+LH2g,"aܙS=x{ \t;kO@p:0$wF@骐^3hSFVOt=`L%Emzx.3%zN6k[&G-t;^F!6KLt/%b^VHAȗtтb 3F @zDp =7ӯ1B {=#2 *77jnL2SGj?(@ h*/3pr |Pm4j9U[R91UNP{53<(ۅʃ"ku+5Px|!Z(pdMsyG iM 2rҫ9@ x-gk G19V6L8ET'2"Y9=` n^;ӳ= I ReQu<6py5swlNp^ J}UvwU/ih"۫QgA>܍io;Afaѯ )t# o#Q@[ӊ@PuB=K5:Śq  Qo2,wd" Jz9A>aUssoSۨ5h5uԥ7PeF4g8aY~ۼJokCݝ_萇E0: t.\.M b" bF9 xM(OZd.Cbi>НL b9m ~P@gMhÞ>M:5|eݯ8r[B^{^} }dۇtK2? NE3^/ x~ ^o?' KiSP@tCM2ON>9ށeQm `xA.Y0OMSΠlLb4j@ԪZY9:@ɠ&/Pl*~ٕ 7]Z'~%rn"Hl&bz#@8$Z &&)Ny⟈W kg 6Դ|)w%hh4Xg3/ÃY}C8Qw_ZwEmyj*~!)_6=c.>W͢&Q1WH4XD4~r.ĉdƉhEτhVAF@0:s€ c]:\({$oȀx?֧ gLFzgmyAʙYH#g-b-3]RY\ʛ$+IwS:f%@y>3q|_AuF]:Fl8]v[IR^ϊhb+577YPO.2]#-yoDvسJ_E:W7@~Q`^( {VPzLJ⢜HPĥ mӗYE@A9#򩏜XAn?*.6$loL+0JQDk@l#OhDtZU:̀qNYv>.4;|GJ)}~A JިM[G4Q%~֑?`&O?Bb߾t5ѺTsX !٪5>{IB`?dǮ|D'sOɻ4 bT@DdFցIleS2g5h/ORztEj$v~§&{8M9P 7HUJHCpErp5G+d@ ABTc\̓gD_O"nOQC'\J^ ǀ{iAvts^[/歘.D&9WvX@WeP]lJ#\GP::+ JOAq6m;o*|Ag vz.#TJHNAW*2H% JBHޕ|Dp '=sҁ%Z^=QmE ~>i%~'˼Gr.q#MNë۪b#\??i-q{ߊaڿhA]UBO,}Ă6x !fXwқw n@qIKǡˣK=2ɵڼ6\zT> 3R/7#ȈB2`f^Mt2ږ8L, ΂*tK9]0=я'KaRF˱6yTG ,9{`QyO =$l\eŐ{>,lr}d>bSŮ30pZ F|et?q후powj( w퀢O%[هJe N*CR:gJ+|,'UBCz;rw 7zoCp+ar>Vj~kBmH2r^nPsC䊕7EQlJ ^շKCF5v~4 QU%1KIn`JҞ:htMMXX/p h.f$bKNe1%:w~6'1ŐXn-% X z9!(u! /QT)'9_uꛔOQJ';D}\wꗿ_ W {Y}1>s<=!4|/3s0˙ٍE䞨X)o{󒣗X@ ĦXKX~%rejXط|>F=YNI0s>]}|~ ;`3̗%eMa_[;% s}úv0K 43*Od/F׷I5ð#[|o38WXXC'cB*ԉ͒h2іvAl]?vcw8iy]k֣;\x߿V 6 ]'E|D v%F3lkKL(( 򙇓}! Ϟ3&V,Gue;1"6 QbB2n4feρ};>88+ƚ4jB`ɿc'$N6 뼁Vط>ڦJ\Y@q8\ &}$*UУYU_q!Gv[zٗ;`~a3=ks; n-#R@GQx$(O0N)&-@$9y) ӷe`vܢ:lf {a1ƯTJ*kEV㏪cd.HpJL60_22NЏsᬉgu:&ŗ@vu^hz I.A/Lg=zl{:xj׸ &IC'r7=3Լպ,.1Ay|vP!T^8\($0,Ͼ9FG6H,xw3IJWvOujQϴ]H5$/Yݖ_MLێ I_oxXvڔX~|\̇XNl[c`eS:-uK!΂%z<ZǵGLjL|M1[u}fяr-0nN)KIgmS0m D[u q%tuz4 V3kaW\ef?ˆiAqu,&i"GXa|ׁܭƪ6iYK0q1|ccNysi j_.PmftۮC<0ٮ0lI,3b,̘E~7LT`vȒG̯[kIv0*I܀h9)eeַCM:x<0| CF,1yФ8V!*G{Ǩ½{:-J }NUTF$jO Rp*%BP`gbq2PU) j}|R1~{t~\ѳ"]d;1jGf>d: ʓܶ|^476;tk4j2qL>;v4ˣZ̒YrPPh; ;?5$#^-}[h%bŖŠ*3, ha.2va^i[d[zS`BâbFza$WcW'mXSBW (v) ?;VUmzM0ʨ3i~ znJfc,m_W[l` EvA/f`t&wB!%4kMS)ӝ uA>P=_a>Pa;@^/?lsiP3TZո3T<'f׾C$((vܻu2SORz' Cٰ;DVhǷ[اi^&nvmc&FW=)$f&l_Y!ltzߋyllg=A\! hQViW?c~P|17ɀuYcpt,4A+ t/+9P3U}cs;ar>̿I-JX_8W J7wL__ ?u= gP5sh 7Npq2`,;pLڮŀH} k( f.PHa*rHK>kF.je ક)?|=yF!W#a69gznC"V3mO[|:SWA+J#4Ems]L1:+ ج7׎(.bsH0(}:J.ބyfD(zzB?ҁ!!K:ՙ>"d2 lbqc6m, mdovwi+P嚶1#K.5'IiQ׶oTg_ȒA0F&S>ҍm}cl>{[~ݔ2Cb!eW s(z2ΐy[ z grڄ$73KW{O~"skʞUM E`!o93aHwq Do0}~r.rcY&a걵.E:wƬgɹ7Qy} n/2&ıym&Lt=:M FbWa0Ϯ iLUhwtr;z謝xږn.AsLM/4ζ|c,d}t(V+C!Ճ.@unCy6%F ;ۡ. * ˊR/(ݹ2aLVmy4P:vZq~0iE_ C`$̽g߱B8k!?xV A{e?b4[*1w>mebu,yT (t{tAoBUwӊI:<ǃJ\.c~xmέZMp٨$Ľ?w1 zT,y| 4^޿F c,G`hb7z n%Z!k,~b}QQ!XXnJ6DL3 yI4˗'9F0H7+|q<K;B4@'޸Y BK0KJJsF_þ}L_QO^*v15Xѡ[|-_͟F*0K!C>nU_ ]C͖vKlybPwK>Tfܤ,"ZTjęr7i /IuA B'z,@a뛭;vcr>+| ܵC}yT}2Zҝta[ΩG/XP(WS>.Zb]ߊ b- f,hloLFW\=FxR<mϳI|y}3X 0WT- 'zG_a,E~7~V}]U7 =Ǥ-Շޣx2έ7O}C`#yb ,a`D=*r췖EahzzDz$_"qu?{Z +GHem}Z!t?(͢Pq1Vn!ce g5ᗩbP;pK !K+yd&}-x2r_( s'HSdwI!_{ z3Sg>~O]zvfr%o=!sh;] $؟ee:lFO Y7-ۙ7`m"fnwȗX}$Shχ@.` y޷\/sCO EPP o?b(9{N _>!jB$GCln.R~M!"`v\U]0s;n/yRm NIXt}o_(,68WX %n?dM:V&K&C;yEUYt5g@?=iWy8 giKaC&XRRjBKα6OonHutm bW#))\1,n`4 e:SQ u JaP}9^ِWr^ d4=.&ųz qHv-dڟ}e:moz ܭ,My8_!qKܥK5KăߑÝxp~2ktrC/F^UЪ~E!ʳ! W?XaE7Z1¤t0|^ؗ}0&73z=[`N]DAc)!OgrA7apsz*x0)^t8Ԡ{!.Cs-yJ=:Br4ABhUHUx-1oBUˋ4BG޷M~@efS(f>W;yEՂs6*NԵ(}޼q(@CaY:oh wp1?8#erR9vUK CS<'&6j'Ho K9>nbv.(z'g57سzyvZQJp6D-B}.A5~ŔNbZ͊Fdl6#> џ,HΚߏ:JgS*9>elijO6-z2NKaIat$Lg~97;".K.X4O)9r5:߷+AmR+8Z;hmͬQSGINFUDIj*Kd+T%OSf@)C$^ 6~BVfwj>wH=2T蟀Djݵ] qS{(y!פH)CɣQ!9!bCR}CG Z;iqf;r5y ߷МmQ 5#b5'vP3>މqhE@ms,]_AL\9iYJ0"?{v ՠ3gĺ7)!&..r> ep[a+NMj9uЊ8}?R,0vf':Gց3ACp7xkO,xKc 0y󵯱ğN,~'{gE Uv :CW\5Qzy1?u00hr>1x shk_6+d"=.nfY4gIh@#q l*鞀5öPQtKx_'Vr߭JJ3A}\E. kwu!z[6O?aQA>9xh.< Ë&R [g*ҿ[ ] q1K#1tԼ! ce05 * )'`ѪRL ͋a"yE fQԥеwL*;`AQAywv4r Df{ya57;4"CUw?3L,;}wZ4c_ϺuhC-P /ڴ_ğYP\c[Ų_=ܢPȚWم;LGC:l EBD$"wõK(%'AمEh3EuL!2'EGŇ8!mD*m6^>P@qFv=m}9(V̱@`#G^Xc 6&I@c;`pX gݘ 4,GyHvWI iF2H+) 1_W:SR~\=w} 棐&"k!)p{8JwA ɰEz 50՛H=}:fw븯$d' _NBonBqY3|8<]HjECC|hZUlCaX||aO?qL?-,r*9V-띓o{AM(id&'>BP/6z6R9}%yr rd]|Jmrhw\=YEln3Mu^Lg4s_Kێ痠|(} {c0ՙtf7_|w9`#gE3 kєf0f)N_+/[@FMh&%Kz1O~>Xo(m? ?6(6Km 'C!%uq^ r я*^BfMw#M!dOB:3j0ߤ\;N${l;YV 3k@V@ 9vCscO;xSҹ"BY8Kɞ5u *|}']z0*9f_/%cĄxV'R\ .q`9"Og$!p7$+k4G ud#tey"YASlG7THWxAzޑ@$g7!qWwzq"m׳H@!!+ާ\Ц5oJ>~BƦ03lEfdza{B%1XAmDhcj%8u? t:b$\.\L!O,qsߞ!hqz2yZXM3mի)P|wplc׬'`tda { A{ɥ!fjzĪ79q{Vhv^Hֻ)r`UspBkBAݾ-/*/nV@-WXĝBHAUPN9l7Bg!uO=:/?( ROjmT,<E9]ȻtOD4'"P y.0Dl^x=O۟R1,&l0}Vzf$7(`f0LOvշ' %wBMh˭γ G{{AՖ m9ӵ_UŷrzHIIۏ2 ++$doݮT2$=\ĥW! Kx-TR߸ ub6+Yto_"2Dž ՠ6 l;8q~Vw\g) v q]>eW:ƽ)sy6Vy`t ܤ᜝ R_7Iղq'ʋ#6_?(ǩm=>^f  S늕*Ơiq*<{ l (z=M4#NZ>̀ġ"cHWrod|ӫҡ(ol|;ޙ?ΐhdi"û Z%LɾwMSbdkCRu4i,ď|Fν0!)`8sy f$+ ֣0~Xq}H(w͑_sJ VMSyӰ&l-$Ji[rD!S)j|;c|3ʛ!_5THUV~ 5}*F1q9bt} 6eO!tBEyD4 : <6 Ԛ&tp5x ~6Pˉ͘jiY-2֋KA- wՂ(IJ=c2ys%MĄ}KQ^by]J۩ [mm+us""I{!d PF>kZPYl (ŽcSE٨ې?x?|5T Uս@d H|q=3pAj},=>6eгƤGa-}ڭD`(Ȁ%v!}qJ;2dt>I{֙@BٗP|1(v^SNMH[\$; Tl? ёU3:)z>/[a _'Sdt=a eK`s?Z:_眷6v\7o[@˓ӓIJKڗrǕe/U@ I1bדiG]Ćdd6buS$7kۛtCќw,#1K4<&-ub\@7:lge,˯@[id# wj+5NEcvlU(Qs*4VoҵPxkaȋp*U~P3HIHuH4O8rxUKepD }.3E0Q&by50\ 2;@?ZmTAnh@AІV=:aFIPZ>HlKX'::$%9zSb~“Tb|m;1`;RsBLٻaLv,15gBQ$"b&=F^yFufW ƙg1Rή+bDЩ#$#_(b 5ED%ZBw{O4]f5 :+L;Ic#@`BTC6В $wO!۲4Y{rA'Ƈ!Gq|EQ27<]' "76u;HUy *}V-P <`i )CL-IUHv.+=sPIf3KۯO;^s7%.j"eaHܫ/y۹oc]jui2 u7hB<ľ6Zn T#h6?mVp;л%AKnk`9}U̓NT@w=\Z󫠳+M0 c* &ۉ͟ѫk㣽Ċe |"i l_bnُFbTt׹7?ƋΚ B"(}<1bĢao>J71J }evt:9kK0L<&_*`X%Zj#~x5:oejƠ_I7>o>;橣MzsHqW@uAScZ2A-G-di#Z VH*9zlކ͊Grq|qz>  M4N7z %:NWBeڈWֹ1mGt@Wl7' zҵbg?Ga 7ya5gBP(>=Ob΂?W?&lL< rU^'u(,W.uF2Fd /lAPJP2A:xXۭ04> bEDNbفObiD`G =v1Wg~F)1?ĿMĐ뵑~xC.9];)Z.Dw^S{3ז>σ>*wonxѵ"G'[@ 8L0VsV/`UH|aQ?]uGrGdƃ1%[ w%zO HP[Ԍd`0 C:HVǽW^9ŒS ]{f qt4 (ێU1@jMSf(hhVȮ@ukT4B)jbi{.нc4ȜUf0m>9 bƺrn @[.( ^ҰHl< ͧE, &l#"mаļ{Ŵܓe&bVMZ+ҙ#Id"0O1{Rr9#R:+ |ȩDىDᲷ:J{܄śuJm,d8K9mjn;i'e|"~hs}G=Q^'czM4.hޟw"$^tB7$6Y(:@elvU9^IA+=ޑ=H3v ِܙl7{uIOC[ HR`'Hhbb,_%[%>?p:;N&_@/'$uWӏIPKhHTgfuA>tF AW( ֛C.b@b1Z1ST0R3"UC6ňCd$ek?| QUJ,S-܇dX7QڷX^pBP}Bլ Ѵ鮯 kďw<+uď! nr]жvjW\^=7ʏg+~ɣNʏvmS߿~]y?urݵys?2ѾyۗE/j+c2涹;GUٳwF^S{e\vuyeSF^ްi ֔93饦̾*ݔWg(/?VcOKi>9{aȧ3}I'l{A 6f; x֯֝x5'7>f獳¯ߕmS;Ú,~ҽͅp? .Ӿ<|ɪ~>yg~B{ WuS n?s {SaѺpۛaQ÷okzXآ#z5|r녿]s07ѧO㖇7n;v慰N>r^]5ٷ$мU>~/F4ۑWoъy-k_:6hH^ž ]*w[s.;#ΪhO^k㯮#1~kqv^rg>y5wXrz^i>t^|x`;®Qq~d3ey2}:̧F,oz2_[Vuo?6|آ'^^} z8/kpy=Iټ%C^10o]7h4ɺ,X氝yۻnعc^̛5/)?p`(vs袚/mksڋ.&8̏_~/yS _85nݾkw~bśOoi(k~qg_P-|ϼkTSg¨L"F1@NK**E@RDD@%ܦ"R% ȭ&*b 'ܓ̏w﫬]zgڷJ^4P8J ߽sgf'!'~=d Ca֋벿on& $k_gѹO8B*I:YU&M_"?Kh8VgA7RI/"elUeUupfϓs:} CX ĥ N'\jf8\jgfS,|s], ֦'5sK㞼N ];VQ#x%38Ī.3C#c5GC(\8P=lP ] U{Lg$)Dek艖&$.Ikߊ@Q!edAT5|PLzzks_ûlcQg4Za(C㹬8iCVA.ݵw5_5&&,kЂ{nK05>=5EY~)I0T_kCfHs2]#}E9mItxɲ}pY5O2^_PU3}YU*_baQWBx8f\8`H|=){MEU`${<.|I}X@G~qʬ{Ԁ>yM+H)t`Y0ٽOZ7Fy~RJӚ;?MIf#)@'[WSt%^l-BgFb*n0 p;4ltOQ BzUg"Z-=MC?^G%Rklgkf.{es?W-6Y 6ٕV (=ZS.K]u?\{#sc2ܒQ}j|1UY%) I ˷솛kaX}y2՘̳3ڰ|^rijFbBWSA1G9XJ~c(kxqڛ`7O`\'u\qvwE< w~Z̷'(< Ɂ6w}ɻu {aSjs\ܼdȧ Ftą>B aj7n(uC!S?6^aT^F HkQשt{9Npc7)4 ?W ~บ=\$78Ei#Ӆ#fH-8/2x(:ۖ'Yښ٬?~/]iuQVl eq6ҟfZֱ=w-">~"% jtIu.h"jۙt:/~}-]lBgW""ʓC^+Ct;)űdI+n-O Jt@nʑ?{XO$SˀXW LXpY_1w|EMRFh&fXNH" w+zUbP~_FyO_Jre.jwB8ГYp͔P)y$y*(H']ºKN [ {|!V6-}O 2QT:k)kPABVfк^ыILM$-ofa)#G,O(خ ,qGD3!MhrGZy;Woݺ<_)G͌E`ܓ]@}WuqE_j'XxL 3#)*J{fI}GWysW+U+0;(aw)߇7}ዑ%!I% i]b5kᙤBt͔ޒO7lعd d5( ^[MŚȳ8پk;Alkv$ ܴ3ZD)6|+\gVu?X*+jA#cm%S?8dh ;='M:D*U6QˍH9Ty#gPl4f 7\~[/6PfOt6G5%hy6;Q8+c5jEH; }OrfJf\S ken3ƃ'@@TPp 30yڍSžYoۼ4]ios%*jK&&t;2paRC<5߿Hg'W;:Sw{̄wG2VrkqzU<:oXjk/ !t2tnܒբJW/?cAB+*jM!/͔igZ*{:&)֓wRAfz9Qj˓;kffV=@M|~٣8 x ?X omǦЋwܾup](bjGFp]lE\P1*M2]{WDU]?W}{zOFJuPaa6>}3q$3(JFZyXE4XtbO1 y,.18%Ԑ]ٗ4'mߺ!y3|qy&'9O:O֔_ ;1 ;Row1./oη`=ɞۺ._Vd!k&sNj8|3|fy%Fh;Z. w߾ cn,_7z VAxBQ_2߽e-|,G+QC7+ߦsT'*j&)cnwC^ٌ׎F^|3hUKhoʐ ~.뤅&?CEч} -5ν`Ye쌑X'1믮Y?eyջ O*JP8 ib~|ەh\'wfRu8lo16坄', ۰'U`XQT6u a, 1Mhdoۄ0lYig"Cu97Y}\(- < پY/a_k{Pl__OoB؏J lx #R'NbOUL%m$Xjv`~/:,!_Bj<00^^X㰣V 9t PCNzpMeJbVvKXZO%J{f {WO*'(Fk {6G Bw[u 5Vk~x2cjuPgk7YFpE*J\SE  h ة5T}C 4ZE+S/j:̼-[ 0ԶtLRPE+I uAL7;$隑Ĕ&>|gm3JO1z@Ix;޾$8JFqe$[յGSp9tzs֜J?[k`9ԢNAu7CvRqზj\AZM qZ$ĮA"LjWCOnw4z^Q)hB;-`hj*efMSE}hdvߟUZrw?8l1h#w7`\&u%=j0TI`'%l\}C -UwvKWWWGhV xʐdG|D UDMˣ+0\% qtr\ϬX/q9XtZ Z?=Cc F3=A-T؜~ɟ/Zl+vmQB1N=}ډxt 0#蒸ꟽFdz+=FKIGlpWñ7ńd'O<~^fCb)l,{R/;:T۬ pGf*{ZVO6!^x >51dXP#uKjy g*gcʷQ|,aDXR:qk`uͼ 0; jd "5KcFcN3B~C#UYvx"1{ڋ`l<_};+Ls2:2*MKlxr*vvpu^T.~=G -{;lEE+xc|lC$c{ɴ9% D&d. G y:V̺#׏  F+tU;w% RQ&t>\U5FP=5OFrGڏn Z4(5[\hYcCn6J8+a>z] tGI=NO VRRZhZehnRrN(k~BӌIBμ>uvr9~{삐Qt_ZP:>._W3 QMh!xZ'>8q$6~[T'gvw -Ԏo-4/Mfz/F_h iWü=_8n.31OӅ3 -v;}3]s?S m'OLƍS nQ^;2}Q3^2(8=ϽVϸEÞ۟˦Îqv0kzSR3|3(WᾺqEɓ.G1M_H݈u22 p{5F{:>}j^c|8&쵰ck?d/z^sȗ׈ߒN~GNR.FG_#'d 4n%9y嗽EF| ?8{6q#2딭-Kw8a/{)ˋX ?8{:q# )[[twC#} lR ~P;@ZEܢ??嚤!D3G/6C~*qfNlG F‹,9{esI Dv?a6D = Ϥr/3n6rd/9%˼ ]'9Va{qYH{ig9CmՉ@FF!o \a\(;~dߡ.oW~7>_+o}>7>5—)?R|MXGPW#&?&,cX2e,\ e,cX2eς#7e,cX2?rT}gUU'Uퟟe.k_ݲ+O{$WL$*1H.8*{G p G:oe<ªu^^F/ i~_WkQA8~V5\H,"4_d,L )E4b+ VdKdXZ;ɹe Xy8Ǿ,|#(˹ ZGO~2=2EeqCS;A(\cfmNۇJu?ĚUJF{qlzsGV8_rITX&oU(`0Fl[$d uHH8Z)lV^ZwTV:@Z[8% ɫ˱D'׆%!dJ53Y?+f 5!#ѡIc?A`(> !V5YaBM _ǹ'&3BǔzZp2ٸjEB%O]⡦|kGKuV`cs sy=F=vT!*f"1643F- 7Z܂iZwX;'`>b8=&0G lѕ{ZSȄ$m01G`n7Ҿsň&=*"@8ڍfYi.ga-03áM"R@.&b'6mmx .Y4ÔhM^8y5T=Po0JЌ[`mej 3P jzibt g9d$;QBV4 4S }A2yPTՊRTN̢'R èFZ2ʱAvdM.J$ 92hg*pCkH+ܹE/{%=ޗo?_G;O_H$PK*P}Umda/data/glass.rdaUT O^O^ux {<qH#٪9qqfEtUIDHr&tՉ:]nܷߙ&wf.yy}}^/8~ Y ݆dk6>SzON+xK&+t="^Lz{%h7sYfuiƑ'Nr< XkW1z!TUL %]-[;s6O Ӟ۬m*,꼶W.O2pT'ynl퓃'JoRܒ,4ͧ"^ܬ@S|˧~}_yyt'W3T3m6.V%M.mxqf:m>5Bs:{>(yY˔S ?rǙVIWhq'˰eI1u#c8E`xA(Kw>uUPb96"1 L*&И[ǜF?#~ \08~n](ʽ=}.L+9? NLJ0g>-kP}HtگV_-EOBFVUw?dqϵ-Xh!xrAsጾʝWunD٫&~QⱫ+~a]=*g+:~>'-2 5i&v脮4&m=&r;3OCꭹ^V(kv``=A5 BqVFl(!jyua8Ɨ2WOzw)B[k}o޾w}k -^ &}ǀeaa\R{>٩9IxK{fx`D}u'6M[e_qâsGNٴV^oe.J`)=Ϫ?>|".-[)y' 2Vq,^q`KaWȎCJC!@%A]~ rҿ / w_E f7#ՙĤ,0@ܥq 9:M8@j`NO0L7;ox5&>NZp3'fD"6MMτ 2)}@(ڎU~t3ʪi= ЊO6]01+Xc,ۿWX|47u&2Q\Og݄/ݵW3r-V l93/fWt_Eɔij5*?x;0fVDt N}e$&DLmL,+axjp؛\7C"Jt'>cG>3n/0Ӛl* S, Mäyg ͛Ӿ02)7Md Q0:ϒPԴ]l6_8|`d(fhkZNsj?>˷O,Ui ?8P09k%,`$oI?*@cb%ߚ#ū),"OQo2΀ 06 i[H W&'%bZ VLcc;!ÂwKhWzShe,53kdHa&vRa_oÚUǽpF3Jn9g̔$]}oFDV )U LS<Ψ=HqDžN/ΪyߏtPA{\ߍOf*>ӬಭsNU{ViZldyvAkRra/;LƎnY@ip ` J^$0*UP;6Mpȃ?|OzN{̾ȴɢ}G7vvW-o?j{#SSD!@GmŐ~i5Vc۰DFhU s =qh]E` ߖejJn_OF .7aGYzit>;Jɗ5Zoߋ7/*/Dw|_ hiΆJn:c*e+T4P8CW@s57"@svN_>m1"-3뱝RS ͽQu]dg۷ٍg7ʤ>BǍbǣ;uB06RzQmjDةݒGCv3u"TH% D"W)@[6 x5׬dO HkjDa"aƏQ9 ơsTu%I<aOÉi~ɡW.aK k܊YtUEDU8#4I 6o,:Y-x=rT8){hud .8<|Jç/ 򛾑K!7߄wC*8wN ȟ0ӬϺF8!h.'cuP gu6:Dw`YrAҦp;,9/^Mb[L8o1M2).D5:z?8Piiz7wT\nZ5A72B9߱4yޭjZJ#hϳE.VQF?CZ}gTXQ=iJGܱ.~҈3zMfZ㙺Nm[o}P7}),<%e. pS"2uaF8 8ܮuirG˶f'=ʷs/lS<-CYM+p*LѺ=S%Z{x9ԇ%4f uŽbW*jfS WE]Rb,13EhrOfBtr}jhDƐZ'qEX] C.76mRꈯo{;m~lj_)|O =DHր ޫ;v1Qo{Vu3 NNcrM4jwGS;gA ESU 5,!>| B~uF .ݶ-(_ ||zoM '=$LwQvyEmPz@6~X? n7`v#鑞K`ʘ_j75&kX*}V+|`.P o6DOd*[ȯ^s"Z@jWz/ 1\{zLͩ/\x߽﬿pNR:6r:_5yͺ:f_npЅ8\ܧ<{m贸H1AC_6|`zˡ`#fK~0˲ti1WGanڝΑKI$7L){yjj[68!C=,#IL s547 ~ٞލ֐7OuzMےM=W[D@- .vP[#.G;jZ"Ջk?DD%j]+0=\iy +iFt}#rtZ4o +iEw޼0⌕}q6 &X_o6# 11Z 28qIEhConC]ulb%V;= M @%oX̨X!Sg&6RBӴj?'Lh$v,eԁ [`6gZ,"Qdks&p;ɥxn͞sjFJw6p5Mrɨ+BaD^S7ԳjhH7\Gާ$4"1C\3o-=(ÂK\`5Gl,~-R8ò;!+NWu܋sfaNʁT~DZT }=M@yH +e¾`{ҰZÊR†u$$&)@ (0ƒ~'=$ӆۆg0:``2`Sr{%nOS uN8FWx:6k{c~< ?OCj ]wCk5TI*fYF@KE[gٟnQ {l U#ߨ$DK ^3'́ϮBNˆ"ߨ&$~ 8pQ'L(w, xpQFO!jw.vrnvr>>;|FMR{oQweߑ9'}׸ykf5rz5=\s v~XbS.vN1 {w Jdn5I]/PK *Pmda/src/UT O^m^ux PK*Pxmda/src/bvalue.fUT O^Q^ux Xn}W,XҦ衽8@vX$y "[RKhM[ He7]sB?~Mk'!NN"KѡNg!a[!P*_@YZd=}y}e=~vtbbIr5+_h"BN{c+P]BE?F=W/ eF0@H'ࣘ"}y6/4G |h@HΆ˷*RM@={qxIhB{>mLHfh~LD~tC7$uJsfht5nئQv { "NM>VQqd_gܡPܗ-\;sr SmL)}|^WOŤ2i9|\f%.o!1 Qz Y!n&Ocg s,3j6<U1 ь$x 쌎eW,Jct1<*]9]:_dsP{b'(iNtDT3n.EW+WxԶ%I} qqpRZ*r0:)u/޵܁jFRQ9u[y.fCmx|sp1d& UcXTɱ5wmF*M.L[P:zCE9դњNfM0 g]]<S7IU.U<HZYHGx+Ff'⤨CWřI\Ov.wjm0}gTlrPt=u-;ܯ@:n fJ[/<CϥtcSǴi%kciH90b9ӥ}KY) Rǧ)3C9KMW i.xWh&Ml`ffˬ_˅._*},d۸\fG=!JM9[xTrO>+ebm+Ɯ<$ߠ$vF,> $O}6m}׿hqC?Gƕ(M2n`3!#![cXz;wb0Aw ${<(bz;=.؉=WrWNΜPFeC z> @91InuC4tCɱ@w^.PS3_}~1f*P:w \} y:Rv⇲vND%m({Ic;T1f'ԘWF3] {{rkًDmQh),7|Yfz)";׀L79z!i-}DWߌlv WĦī,@ԫ{&eޢ)˒^W(7O(Ha]`*4ݠ?'I^}/D}F>ɎN{M|HbfD!RBȖ?Jd mx'pv7Fr@m'Sb/ObϱC1 |g/oM.iS^n U7+>R͏h?""] f j}AjҘoNw! fD; ubCK͛݋k~9:/S6M71 Në>ˑ~{w ߻w8"׼}xHk'CwPK*PT鶋mda/src/stxwx.fUT O^Q^ux To0~8aa@=äI&MFi͌IHZ _8;_nQU`)~4% qTLp ̓bB] pۂ 9U7oz X휴<-mJM<8S,-YMA(מ-͔u` 9K?{$ȃǔ᥏ _EG1LpzѼ(O~3 l1C]Lr(HU' VYqP]|x3!`[:+Idx_J)L`E0 OFnA. ݸ^gܾ!(`ɢz~m99ۤeMюyޣ'ΝtSC]!ƶ fr$9Nu_5ĚN2'c,s15J9"d$ B EP@ћ +Gxq9dḲr(.V6;,z$I_gCPK*P9mda/src/sslvrg.fUT O^Q^ux Wێ6}W A+ٴ-J"Zw [l۠Յ%E/ I]m}Kp搜3jO:4~;ĹL -,9jfpe|@_塑cu*QDy2++;1N /Eٰ%ȘACo,GI-&hNyl8| S[?(NYe*oyW tg nJ%צܣpClv؂r!` :ڋFv=@TX ]-M{~i|4}$;w0*E(@*fnN;Q⠂$s,hT G{j0r `0 41`(iZ~c]Bky&wJUEK,E<+%~޵IySMa$ܻ jꢍ"]*VWՈ=8 | ]LJhFi5T%~:1N~>RPۓ7o'l 2y6P)&Lb!dL_3% 6{ ١H#3c +uAQ-KxSYD+`K QGJ~F>> Es_ļ)2~,y]yI¯KqN<*g>сo_T<~:}-˜nZ*,}3KeFi 3JDi,y|>7C8@N>틢O-S^ U>}Z!6[hYgZa/fKYOd3OC\IQ1DHX*QE^ v4jWy6d5 0FE@=0KEy6ZT ٢%Lrvb4a5C09 VVs-EojM"gM!%MD}3)=&)b&N"G!gX"ZԉmݱتffHz~"ҲPkYi5+$$@nRX{kO=KcoԢZd@)sZue'y]_>ݚMkhZtm AY I2<+UjeQZ|ܳ+ ؇$(3R}fAX4>@BCp$n6yli; ؓ n /,F`\xii6gcq+$Y5~XC<}lE <5M (Ȣ6,`Ehcf!tlL1V#= @(4,]<@|дP!FM& 18EBB.c3Nm#}6zYy(,݉,G<20Quyj ֧~< ~y5E"DۚpJ(k92Ae; Sݙ=7ءUTߋjGs}#"Hid}w4kl]~ԉ8 0EMQ߾0{XH58柄ZO?|7BChPCByjWVEF B0Gگ@ѫ*\i {[A sP0,0^J[8\Tc$},Ti8X.Jʪ0{)ٓõ0HzqQ\ VyhP 8}KBY?3.GNx?g)ނNZ@] =ٜ'B&-_pW}kY' zK.J<\H;_KKY%xp_|x>=u ')CuK5)]BjL/Uf٠%gHu$IkVNS%$ỢA~p]Zu1]^d(d|/^+QE\ʴmV Y &Ce8PϠn1t8j[1}ިk~9~ϬǰX εwλޥay/{@/[_}xc֡m9{/ٸyc.(k~ڃ= t%-O<9O -0a-< % Fs6nt!Dk@zwoMMu2w5K7>``ARpaW4o,ܿ50܎1diƓY!OA ;a1H9UXh@mwV@0a2FXl9+c5,E8Ţ`R:24hrRu0GBº}yD w~1R(lڴJ+ #mOQ<ǢN+,hd-n<!BQB!!ϔjD j+VY9_AU_̅T j9,FN,_NVRAdhgB~KDTQ$:="K#)5J* VPpooYn% ?8@,J!R5 CwHI (BC3K=(ļRn#%ue,<'YC\A&*,S-n͋*-%֫je.F2wrҪBorEYQ^4etam/,H@BPFb *fRPEz{kkC > "V&CѦ̎cBsK;,ȎPR=3J%\t\Tfs[kMK6+BLH! @R+++Ojb@T g&Wt}p6fl-m%ϗn:ø(j:zyLZ:C 4 !Z,ISZ㭃p$wED,^'ï L.`*7ҧ ?D's'Ph8Y,lq I!W_!@rty^:aԦm#z?-Z{`,yioUvjC{;4w^7չw3 5;~Nщs07uߡ;{/2z+YX[(<"C岜q珶Atı3Q6'+Vڲ\Ee_2rQ`VuTDb*]֏GP@ O䬖oH<p)sElbØ9Z6#SR"Y;j֓:X1Sz4NDŽ BA(wFRXiغ:?֐l<'g2%XrULX߽iwy˱޿!e=}7%$.Ϣ5cXvD=e&K,Qno .4^𰭲us*3ò/czr*hy|¤539WtČho_jx D_]b_r0pqFp2;WqZwvb(lѧLM?UQz[Cףw<} _w6ď|'(Icp <*T'F;Oy 4'YՉxGIޖx;CʩhS5]l嗏_+uZTE[ցą$$Ofnksh^'Y]8$OORJCYN1;`9 D}{[²٫^4 v/^V͙8A ZpW'Q'q89!BW˷?G%Q]zan{%i^JlS]X9G%b_!D<@\ z4њJŋ圉#٣'jQ#i7jHCH- CgcT|}+Bo3Wyf.܄ܯ{:^oF_5.m@HW7z׏ԗ@{2jF2cN  PzJ9v=w@>48^#vҊU]4@W 5 &O v4 g4܉#qJBuʡVng|{70HS]@ oar\˵6wcKɯ*5D!0{rf"ǵJ\BehY5oP@ҲbpdttJ+!L/7pkrfagfuQ[=xX-&:F2Z|(VS 웏BoEů1Dx.*a-ne_Rfva~w!ܻf5ߏxQw*+Y;7vȽWC/AU+^_>]AU~ͲmV"KTa:*TZ-JgybHh{9>C$Gb3!`q2ǑsbMHڥ>=o̓;}7!QQԔA#^$#GoTz_"?frl'O+ebri=KgĵL*3a"wK<ca׍6;ǎ݈JgYl15agBY$~R@'j d -&mBve\:y殥9r+~-9R.SJVmUVwY=JR|vvK" $#nc /j=E\z?y00.O)ȍ&cg9F0$=:Xb;¨,c!(kcѷĪЇڌIe$nw5ӵu ;tݬk1-lS/%/ G X,*M1XK_Hv&P $h*JD>\RaV@u+Tt";4*]b:VC׷W5=?ի#o7>gghk{, A_$4*4bP/ VUfLT$Xj;j[,A4ޓ;:SB>?>jRsLB< f.ϑlpKq`'|@'=dm{nvuH{hrzWPOGYjBX9]OI՘8Ab 1ТL/hGyr{noKoomGڹ]<_Ə&*1, L@_'~1x&Ao=q RDhw >@zf-]+h2ߝٴW6WL$.f5ͣcy{9CI2uhF p!`sV . 8QP:돆ZP+NUA7RH4kj =tw\QN~~'\C2ۨߎ|[L[~l71nk5lT[Š|vv |GZΖʍ=Mxl1G=5 *_-*itҀ 8Aa[o7j_>1;_POC\'1Wx zrb:Dy,=`np$4#q ~f9;@xfJ gmv:K\.jTQ3!,F)-j򡦝]Jgғf_l00<#欲2|}iYY%Em`d3W(iWzqo|< )^FS ֧eEߛ--|hz_wR6ja4O{ht#ӓ.-;ram6@Qt=7#prRs#qO }ܓXpJ<n"& r2%!ȐKu:B,f4,ZaJ6n+}@@JuupƏ:V6Vx%C'Sǣ3 EN7ep:2BQDW,PsHs !C(gdV ubX  yCQ&WNqT%8^(ɌO2;ר&k||琌<7a8Fo#N?C#<',+Jt,G0? cgRxBvi{_H)@љO~IM_qSzM]Ћ/3Wr/1"I]٣bK0(2&<ۣti @$hj#3/E^'eEljfN'!?%bٰ -JE Z!yQ堞l9hg%qcfBR ^]z"ڨMS 3 n%'V12dL{xd.dex^r!ejĽR#6;euxJ@Ygv%('U)l#*7-v@hO;:R)܂.)vcro bCv30l,F'yv<N-4tF<ԤW_3/fŬ`3ΕMa>fx|{&I>  "3(ȭ<01/wɴ:ȸ6/7/@_i̭GiK"KXh@_A+`$S/@ȡgxF $mJs)Mbo2i.OzNY(ݪ]B" tzn+j ^ܛsSoiHtVߏ(#^*SbgSd.@'ޗuig'@+@;ʠbs"n?y9qZ?/6 }0)&YK|9td> e+PK*Ph I#mda/src/dorthreg.fUT O^Q^ux mPKr0 Zڍ@;l8L *Ȯ13`!<}$L+gzB`:j (hq@u0s5{XG5wl9I7xjȁ`pkx"QµQx˲ Q`y(1ClF =eAfWTOU)}֍z+aN@r9PK*P Y!qmda/src/sknotl.fUT O^Q^ux Mr0>E/@&W;(`)5F #qZwp9;5VL7ϯ|Xj}07m hN0Hf3<*Wh V 0U,K1e=$GW%g>M.le$W65<\dc ۫VŬ8&Q p_l={RI_$0p>Ap` yV5^5#>}6YV ʯ%2-kXb9k| V&W6סUfu0b1t$QnF/ٿs%1VXd>,X}62Hc X :ڛs2Uyl•L;6ȪXx\ O밠.߭M$e9iըש6FqCY""I&d}|r,ʏ6@c * ?jćpy+E*]NU]˦F-PUInr@kmgsaś6#ʌ_ّL(+AΕg j-dʚ ~k=жQ0Pc3t|'C"'ϟrB鏶mloMp:9JX0x{*JaqJ Hvmt%haMeX 9 H3P /֞X;s1[ ID$mzkCSsSWCS7RB| I!)@G3&[CZ?Vӝ=`|ͣy-jG~0Aߟl/EaF0=iK;#cg(n @Keօmu"Y:~W2#>J3 Vgo@Yk/j{HV_UѧǥwkV1ދ~Fo0k9xo; PZ?h3 J/=S9#J-nBόdNaYY9tquC,ja/Gष3>(Mgwb5Ɲ)Uup#ߚI' &\boF: s!k5f(S0e&qu>;(HMQT.Mr0L/PK*PrAmda/src/sspl00.f90UT O^Q^ux Rn0+6.+B%A۵M Q5zh0;m9=waǁ7)࠳ LַQzFSF\As sKBK7v;JCGf^(h K8$ɳjX[tf%w+"]_= ;[_.K YڳZⰀ!Ɣ&K(*Zd(o3vPa3f] r%}'JemRǥ`vzeV9 PK*P7mda/src/sortdi.fUT O^Q^ux Tr0 }+4/| N"cpk;Őfv_6LlH ~xf $Rݘ1U*@W Ҷ B(+2~_zF;bWY)z.`l-m`:RVvlM ؕa%Tѹ:II&ՀWgeIqX$b18]=XIdd=Ctu hMg*Q Xk ?N*.KK2]:LmDWE}X5i~ch:}̓UnD4j3kw6VV8Ia$זR"KU*A 1f.;Gpd)Te1y TW-#f˔ndZf#-O HO!)>//ˑ%~bT; *‚[ *HP1Rv N՜ yget (/K?3S]'^AĚuۗi41[|74@-Ƞ:4 :n0:z UD+A#XHT ڵg'nYy}ȑAUZ\KmȔ V䁕Sy׻nݭCv f? ?¿!'f';wG ȮPK*P.8ߞHUmda/src/dmarss.fUT O^Q^ux ;n<D@eG][Iˇ얕tz~ )|@;b`s^;xT_^*y[nIU5v޳_Y}yK/ Oٵwւo~G|ݚ⚕US[v_"{zϞ_ONEּZ}vM/ f6{*mv&+OSowE:C1b |=ө׺ؕRd;]mGJ/E-F!4 qK9u(eއTţ%ݢa;4ifT)f|^? l} #j$yT=dGZ$0dp./n{V8K Avzr>h_6,*eۢ6ރA3nd&lYЖ*Tzy]IՍD_΢V iզ#fJa2 M5ņig03 M5džiXn6,LĆiWذ(klY ܶ!EȆvj8Nmm xKB\|wD*~Ʉ-ԶGD#+$+[NmWVt@)ЀP` %T!7cPk Tj}VR-1q>y}`t:ѧIE9b־a2cf>k1ã)?;Ӿh6C.w̻JwG|4\6f^]j/f迡>oFcD 0m~gXF?7i[ӞKV ||Eo_Raw q?ۥI|sF/c8})XiG!K00Fϩvu{d<׊XNz6?ՐkC)qaܣ}n]F~K%K= Y4qd ݃[s>ow,Y]75KCbuw{zyCnw]Nky=~}Wnt1 0V褗tYoZ-yrҿ\m3 hQmgM9 ~ss9=o& 5OLt Pdmo9Tfh<)~Nd\P<-Vfk9zc8lۄ7~G 2v%KaC22BD#4qeV~ ޖU eZc)]0J#XO_o>aW>=,Syy=I#%Jy}opf; jc]U$2Iv@fcdVs4 B%Xj<#A-?CӮM]≀]zPF獀S*Fƛ& 7B%1xFNrp3t{8uPVeS±=dRfz W"+%V-TD\ci4k1鳼EI$e99jDxQӕN^ G r1d\ʑofJO HE}k2+3_|fRj` 6IJ0Ŧ}C:6Vb5<z<'PCa泈>3}mC€h}͝9HY_;r%o#/lŝvo3:!Q&>foF̌rkL "rf)v*e6_8?G1uAC8Qb )L? C Lg|e3nÿ#WC%ҫzQo(اF>>rAh`P& i^Mqd]dHѪE voG8؄qCf(Pa= y&p(g4oı( Fd|S'LCXL#t'SQ桥)öi9moPm'ǣ!֮Prx0,G}]*+K:,]pYp oWxm]TCਦTߔbޅz=-n1rYgeٌ׉PRL3i՜GQBd;=d|q/f]x&>uLяlS!N58!1}cxsAAY(kSnx#/x+{B8HC$Ж]anXH~Ŀ0r./N^ϩeQkAdgcBwYs.Rܡa4p#YX.Ő@wpx? W7^bqg#LtgW0ifISz<'"_M?d.^0 +3 XI"LNYJiN.HwV9F@DHX=ɹuqjݗ2"!h 0kՅ.l@.7EErIK(b|l20 1^9q ?QX/|V9 aydXANB e2/~]|jR̽Y)z͝԰9Umb][Dl^'QnzN'`$ta`㾇'ȕ4(WtU< >_tDm!MXn=NX?u*LN!!f.k^|ױ̻ v+ =litޡ!fz/|qbOKl[@2tLۢQG1bRy~vؙg]ڈSA"E1֣CC*CիxQ/liDk\$ʃa+UؠPE|z6 5r_ dE3NmOη~GX_#Iӑi<2?Wмo@!z~RU +ZXY>=*8zf}V 9p{ezM~Ʈ_.Zi+ڊ*!* hT $NsW~swHdp=/(i]p%W}7;Jt91VxGB"]ia@[ _%_^WbF}QBCTv{=?#LLN7,nڧM۸At_(Frt^ثl"Ư&te砰$XuyW{3N>LꜦ=(6Ǫ?3>|<>ғjjb>1GqF^,l|q {ƞVa i+ֹۚه-(AJ{/BB\\('w>cΒŇ-Z_߱&!GT]^.6X%}O\͉aybBLo!uO"H僥,$w4/X(_$Yj~¿L ò4\MPT =q]|P4.v([\2]/J`:24RNEʕ.(@֩X6P_hբNђ}Pr .Xb9k`始?*5r(}54IjS݅awq;mzy7פ]pzwS'2Һ#- _]Y:v.*˰~3wt:_?/bŀr*C Qy/Hկan* +VqpT_ZQ+4ߜ]tO# ieߟo' `{N,·$ "zNSY.%_xt'->*~oPZ7dJ<.Ǣ&?PXuQk'ˤ]8b/FDk8))(uޏs ?53s#  \;%]e6gnɶiç0:+ۏ7J"Zϩ8o/ᄷtLSe:9A0y]?LA:4[FP3 )cЯ315-i."i5L0уFfV Dr{^qrk&+y& CӭW8 }F|F},*X3FxqS (D%5dJWZ`vהR7bnz%C{eR $ Ag(nؒBlm4{?F<(y*׼jdiË́] ljذ[z͎,;B6I5;}I+'SIy*ޯgn\ee+Q",#6z]3iW z-S2 skt61&:+etcmˢoLהiLhcf)GYRy)pETin6I7 i##t3fK+4tczM-8rЀE9relˬ-,&x[ i} քKS\+4\tyEAnZЃQf]!#9 ԸLJÊu[.PśVU#qPK*Pmda/src/dcalcvar.fUT O^Q^ux Rr }l$[\=0Fqb k2{XR~q8|V-HLɚ)-A^ܸB4r#Q݌#܈{7_ %a0J(OJ&e4T5~'Yi'B\}&e8(m:X֙Jm3߃6<)r!ݐL)U5] , Mk h?Y LRKnMMpvOQm+=O>M}AYI~p Me&gSJLN3ꡉs^}=C_QMd7_ WPmuʂٸђ1|~K덄KIU:=fp[{rrBe)O+eNPK*Pvvd L'mda/src/sbart.fUT O^Q^ux Ym6-;{#kmymmrK\PDʒWl9%{ kK&g8/ ggBHVd*wk%&byV(7eYUuLpLҫJnD^-epSuPL#}:8` !X9_r@]*d^Ii#D\4П\킸 OYt+uV#1%vmyrȑ c~EVk" U"Ҫn>>L:b-(%eu#dUZɛ*|!'o'h&)Ϝ?:BJCIy{tC9lȚrgr%5N dHUMYW r+ payvl]'(Ff|Yd$hyYj@f 5',oR%rQ|wVc;!aY g&$:.V~)|dat禛N@u&ԚqYcOexq6Nj<\+ IQ UL2E4WSC} ;) RTdz6&!+y?`v#ʼn8pL4{*%f/S\YsTFEՁ&Ty ܟ{XmUUXa@sb68H-N^ٌ,+J B:Q/v 8^7$BP3Bm Y*k9v838(DJr/>K_h ,ocK9a|3 41Rz2o6KsEmG1:cBRF'=x|xoz'^*jE 2lUY&)8 0.9_J.D@jL(}Fc{aOPW f?Q0@B0p)|DA4]ew^u28HM,~ XM 6 >H۠6ڑ3W#7XÇ\R8gf ~ C)u%c%a4CqA-J$qɿ'iJҬ{{Uih֦mhs9֐Oi@;BfL#kg^T+Ŕ斔ȮA1@@tHb.ַv*36 ? :G{Lh15M~ww>Lgwm;=.hv9T^ y.iZ(^}t(^?jM0`E":QUa lî[+-b8k|n1/lsVe[Q+|w'_za%«uנ\}1U]-?C:Vjؿ{yk%~.+}H~)sPsUMr]ﵶd{ۍZl9WsvL׼MYb% ![mj`V]\؅qSQ:e{J& LHJN 4 2G;{Cśx#tZu&=͏%{ n~wFB(2'7"ԅem(HqK(UX뤎 DUdQ\yrJ79p#h/{Dڵl[9-.im[o4 wwn8VZgܩ]?b[&t y\QFkyMf{e6Z~h\`rgV2~:.E&K#ecHٝhژ"͠,AaH 'YW*jDOtpDrya{uig<uؗ&K5[)w>0,*s ak}nt_\B3 {XSkkU]pa@;7F)Ei=VebCLvh!J=HqIL+&GT{+T72ts슻 )+REG|F̆/23V: $"A VgH9tϊ8œGO?~^;q'u{͠2|EXl&sս,'|x> Լr|W컸aK}_Έ+j[5'|^,1 $c'/\uu|g Z:]HO"XM:{wo1BJ >5QڸSQ h7,aW0s(X2C[>㤬ݛ'ʆPeEۉn]u1dM(a$~d~Nmlv(6E< 5dZTI,*9F#{KhYj=#j'OJtNhT).8Ń0dUΛM# >_ݞ]~+ fSqCp4VeF^=lxGo9 $ ɃA1$Oq07[b6x8d m Q/ubԜ\pYV2,s BzVK-YY//J(6M 2P: N!EO||OR`&!k)Y6&(FXo1ke,΄#}ûf!1?'qu*) +ٻpw`l)Ȍg݆4饥zLwsb+ޑUl1q֩?+jpa6DwNwB\ @[uYhc\6ww!oJQqkXSZB3/ۺ.qn>0au8Υ6{s9r-3`W%i4&vZ3!fCiv(x'mIks;Lm8co6ᰦ]Uab9 ѯ&sКEi'm6Qiyq5<KfgP! >_i BXFUCPAP F -njѿϪ[=/̭7ҟ-x d_b =XjUC3Tɿkhk~j[Lz`5bkMSz-uPlqWlS"0T7DoPK*P;ہP mda/src/mda_init.cUT O^Q^ux Vێ0}WXTB-/

d9> 2XS*Ğd AS ,$2#RYBٖ`/O%̣/a)!Ze"6 {riAK*|;{1g{)eZZ|a<~tY cQ_ 1aXHY賐 A;d< hN߿ٷh8_qż>.sAWe:cbjL=:Wաٮ% ~U_ڦJ_ .Rr2vK7Bp{6`,ҵ^+Pc ya㑕q!IP|]>xUZ4T=,˽'HiZ\vU]N5uT(q 2'mGJ! y,X+T A'CCzL=r;2STZ=Eփ-/;zږ )2{]>slp|&Jc_JU:ΤV$aP%u̮ӐT2^U-Kx$g*+!75 ǎjL\p10'}+QMpChr.PK*Pԛ&mda/src/dqrreg.fUT O^Q^ux eSYr0pMIIB$5;`!{&9hc(^ Ѣ7Fި@A7AJ0 <[[Mp,F`\ epb0E4ztF P+BK& <*!Ў% $*)eWv\qD [c*;N斒Hi8y wǝ+ Fo(x9f>X HREAW+msY.3v6kWNURs%OU[,1B+Qܛjʺs3R/j6*ޜ=B.A,9Z%3m!OÔp;Sn"?A^лC)|]v6f`b.z<&y?,Xkײ[G8N6@8EsĽ|{q0I~e.)zyjJTMPK*PcAmda/src/splsm.fUT O^Q^ux Xv:}W.PDֶhY"xzLHpVI&3;#[w<}S;9{JoWfkOު]/~yۦ:lN?Bew"O󚭪W!Kc^N2oCMv`tԩIٚ/4.SipٹrQm4)mSBĉCc2,28À10XgUKܕ/cN8nu.mDĞBY͸^9x^ t(e'+W[,"S'{eU # ~,v["7 #Jc7/@KtUG0vfmG \CRn2lk]  pcyUT!܁;3&W Xs4"ju? J`tP"r*S6wGR]Y iNAx%O$&vJK3<=}pHKdb`m®Z{ؘρu<e '<%vۿBN;a8Y8g{۟_egȎ^6ЈV yn.=Eߨȱ `&cbcc{ 3Z\<2lwVwc?`=+ ~+ nd1oc]S W[ao}!ECz K$UnCP1ӻ!u+nG*!halIgeRC 0z푮U 6,QA(G׎H|rMUz-Tb8dH (PP~Uz ғV1%ъ7{EQ̇݅;E"S9Y;ٌdȨ;ڑKziҗEH84"r dpCot%"ݕ:z^Ӓ-ӑe_f> \'g2wW0 ^̓?sۜrb?mˈ+OA}st'9xJ}]{o0xӿsI0D5]ڀ=Ct#~OD<^e ȷ ` etS<^r?J9~h.]a% UR%] M!lCf"}h͔/ݹX08f3!3wD Ї=zIuIӘP1.Э'.m 9C,S#T }':>IƗ-": kV>iVS&oz+ְkPTfzc5eLBhr E+O3GQVlQ'bdUԻzPK*PTKyD.mda/src/tmatch.fUT O^Q^ux S˒ eCR1jХ₅P/hD&tO5=-B7Fs ґBWd$cY(qYZXZ7iʖN\ 4ixNI_~{Qqf;ST'yL>Up5mcC2lђiJZyOLUf.MO{Wl}{2}*W~7OSE.H hH103-:s8ȸ"Ю8mj;pƒe9 P{>=532QoU[qxNa ה0N({۔Jsk;oo6? Ve tjk!ӌy"BUjlkC=T -cmKnSW,H8x^V]B?l҇@z P jp36 `D `uL x=D #|Yb:^۶ԁ1Se )oLgpeuv4_T~`6ܐq}ʝ` ?:o4Xhen Ug՛M\z=NA B#^U}i{]".SifS )WZiVgӋֳY&P),ZF<ώ}-BhXGG_Vbg+fIe6[AUp+vmlhHg+>v?ǼAsՅ pz炜MaVdS$eU_P㦲"B$#S {vc##"hlMei]9*;d,;`+Q< *ǺduVnIz|$k^eaa|]Qp OWb8w!8`2dz%5T"SA-U_9ѯ]'yn[Rn$}Ma.2Na&d8m1c8˳jrA=  bv=(5wlgw'$4`b0y⧸ z=?k:{9o(-9xJ5_ )Jr-&h4L*3 R6' 9oќPT,\SwY1vG>ɅNYS^x!un$B xg™}&;km}=7h?UӚ8ySV"O@O؃طޠ.gv*ī?=E;\NM5'tNse !"m}/f+'#"W ;hLL N r?tc1,r2g2K3.#LzN+*PIٱrykJklANQt\H 9ݧ?iNeWtJzVB+nH=A33{ en!jsJ۴Hf&-Ss/1ssԑ?B1wH/J76<xzq+_r/I95{&TkN?s._;;`\] ,9DY@̯jL0hNEv-ԡ| gEw/ ;[9F&~vFZM~z/9+GiCDBYɷ f댌6/K*kg~'zїDI߿c#;lrz3Dgk<-۔jmyAKng49;UrӳhNT)x0rb8!9AT p߈JuMۙzty Vi#.P vRn$)'n}ޅ~8H}>Dt/,wF:*d`+(w'S#A9g:M~}(?Yd; v_P̳F4TwűPEmda/man/UTO^ux PK*PS3b2~mda/man/plot.fda.Rd~UTO^ux PK*Pumda/man/softmax.RdUTO^ux PK*PC8*mda/man/confusion.RdUTO^ux PK*PyXSqmda/man/mspline.RdUTO^ux PK*P$Am mda/man/gen.ridge.RdUTO^ux PK*PBR mda/man/mars.Rd~UTO^ux PK*P"n:{mda/man/plot.fda.RdUTO^ux PK*P mda/man/glass.RdUTO^ux PK*P=)sDmda/man/predict.mars.RdUTO^ux PK*PD wmda/man/fda.Rd~UTO^ux PK*Ph<`+g&mda/man/coef.fda.Rd~UTO^ux PK*P^e)mda/man/model.matrix.mars.RdUTO^ux PK*P[Rv,mda/man/mda.start.RdUTO^ux PK*Px.mda/man/softmax.Rd~UTO^ux PK*P˅ir0mda/man/bruto.Rd~UTO^ux PK*PD;^7mda/man/laplacian.RdUTO^ux PK*P1PQ:mda/man/predict.fda.RdUTO^ux PK*Pd2<y>mda/man/predict.bruto.RdUTO^ux PK*PTgX@mda/man/gen.ridge.Rd~UTO^ux PK*PquIUCmda/man/ESL.mixture.Rd~UTO^ux PK*Pz{W $Fmda/man/fda.RdUTO^ux PK*PPOmda/man/bruto.RdUTO^ux PK*P#^qVmda/man/laplacian.Rd~UTO^ux PK*Pk]XYmda/man/ESL.mixture.RdUTO^ux PK*PJm[mda/man/coef.fda.RdUTO^ux PK*PHƨ>^mda/man/glass.Rd~UTO^ux PK*Pټί ~`mda/man/mda.Rd~UTO^ux PK*PDWmmda/man/polyreg.RdUTO^ux PK*Plu^ f omda/man/mda.RdUTO^ux PK*P7= `}mda/man/predict.mda.RdUTO^ux PK*Pc D}mda/man/predict.fda.Rd~UTO^ux PK*PPmda/man/mars.RdUTO^ux PK *P A8mda/tests/UTO^ux PK *PA|mda/tests/testthat/UTO^ux PK*Pw(K"ɍmda/tests/testthat/test_example.R~UTO^ux PK*PJ!Ώmda/tests/testthat/test_example.RUTO^ux PK *P Aёmda/tests/testthat/test_results/UTO^ux PK*Pm2~T~3+mda/tests/testthat/test_results/mda-0.4-results.RDSUTO^ux PK*P`++2mda/tests/testthat.RUTO^ux PK *PACmda/R/UTO^ux PK*Pd.6=mda/R/confusion.RUTO^ux PK*P+5 mda/R/mars.RUTO^ux PK*P;=67mda/R/shrink.RUTO^ux PK*PV,mda/R/predict.mars.RUTO^ux PK*Pl'Mmda/R/print.fda.RUTO^ux PK*PX4Wmda/R/polyreg.RUTO^ux PK*Pn1BR)mda/R/transformPenalty.RUTO^ux PK*P͆7_mda/R/softmax.RUTO^ux PK*Pں  = mda/R/predict.mda.RUTO^ux PK*P`s$mda/R/model.matrix.mars.RUTO^ux PK*P^@)GV&mda/R/predict.polyreg.RUTO^ux PK*P[9 ^'mda/R/mspline.RUTO^ux PK*PYAfh*mda/R/shrink.mda.RUTO^ux PK*PA.mda/R/mda.fit.RUTO^ux PK*P@ k2mda/R/laplacian.RUTO^ux PK*PoL3mda/R/contr.fda.RUTO^ux PK*Psf4mda/R/coef.fda.RUTO^ux PK*Po{6mda/R/onAttach.RUTO^ux PK*PY 6mda/R/bruto.RUTO^ux PK*P|5 =mda/R/mda.start.RUTO^ux PK*P-E Amda/R/pplot.RUTO^ux PK*PyB/9 Bmda/R/mda.RUTO^ux PK*PxIHmda/R/meanPenalty.RUTO^ux PK*P|J tgImda/R/pplot4.RUTO^ux PK*P'b 8Jmda/R/plot.fda.RUTO^ux PK*PYk}jMmda/R/kmeans.start.RUTO^ux PK*P"=Omda/R/confusion.default.RUTO^ux PK*P6.~GQmda/R/gen.ridge.RUTO^ux PK*P}b=Smda/R/lvq.start.RUTO^ux PK*P+Z> Vmda/R/df.gold.RUTO^ux PK*P*_ Wmda/R/fda.RUTO^ux PK*P5=\mda/R/fix.theta.RUTO^ux PK*PU6Z]mda/R/predict.fda.RUTO^ux PK*P)@Dbmda/R/confusion.fda.RUTO^ux PK*P_)cmda/R/confusion.list.RUTO^ux PK*P|,-dmda/R/print.mda.RUTO^ux PK*P+||emda/R/llmult.RUTO^ux PK*P7k@fmda/R/polybasis.RUTO^ux PK*Psv~yimda/R/predict.gen.ridge.RUTO^ux PK*PWHJjmda/R/mda.means.RUTO^ux PK*PZ޿Hikmda/R/predict.bruto.RUTO^ux PK*Pʤ W ?nmda/NAMESPACEUTO^ux PK*P K omda/READMEUTO^ux PK*Pp  qmda/TODOUTO^ux PK *PE qmda/README.mdUTO^ux PK*P:-qCrmda/DESCRIPTIONUTO^ux PK *P Ahtmda/inst/UTO^ux PK *PAtmda/inst/ratfor/UTO^ux PK*P%!.tmda/inst/ratfor/dorthreg.rUTO^ux PK*P@Vwvmda/inst/ratfor/mspline.rUTO^ux PK*P[Vmda/inst/ratfor/sknotl.rUTO^ux PK*P:g ȕmda/inst/ratfor/bruto.rUTO^ux PK*P#Omda/inst/ratfor/dmarss.rUTO^ux PK*P9qmda/inst/ratfor/dcalcvar.rUTO^ux PK*PFg{mda/inst/ratfor/READMEUTO^ux PK*P֢ɰNLmda/inst/ratfor/dmarss.r~UTO^ux PK*P=Y"XOmda/inst/ratfor/sspl00.r~UTO^ux PK*P'mda/inst/ratfor/dqrreg.rUTO^ux PK*PH!Ymda/inst/ratfor/sspl00.rUTO^ux PK*P@zn2mda/inst/ratfor/splsm.rUTO^ux PK*PKHmda/inst/ratfor/tmatch.rUTO^ux PK *PAGmda/inst/FortranFixup2019/UTO^ux PK *P#Amda/inst/FortranFixup2019/Original/UTO^ux PK*P W1_,mda/inst/FortranFixup2019/Original/backfit.fUTO^ux PK*P-X+mda/inst/FortranFixup2019/Original/bvalue.fUTO^ux PK*PL d+mda/inst/FortranFixup2019/Original/sslvrg.fUTO^ux PK*P ܵ#+Qmda/inst/FortranFixup2019/Original/qsbart.fUTO^ux PK*PK+mda/inst/FortranFixup2019/Original/backlo.fUTO^ux PK*P}3+mda/inst/FortranFixup2019/Original/linear.fUTO^ux PK*P2 ;)'0mda/inst/FortranFixup2019/Original/lo.fUTO^ux PK*P>!*`7mda/inst/FortranFixup2019/Original/splsm.fUTO^ux PK*PB6 "+=mda/inst/FortranFixup2019/Original/bsplvd.fUTO^ux PK*Pעg(5D+1Jmda/inst/FortranFixup2019/Original/loessf.fUTO^ux PK *P&Amda/inst/FortranFixup2019/EditedNaras/UTO^ux PK*P .mda/inst/FortranFixup2019/EditedNaras/bvalue.fUTO^ux PK*PY\ B.Gmda/inst/FortranFixup2019/EditedNaras/sslvrg.fUTO^ux PK*P{ڒ.mda/inst/FortranFixup2019/EditedNaras/qsbart.fUTO^ux PK*PjG !.mda/inst/FortranFixup2019/EditedNaras/bsplvd.fUTO^ux PK*P׍5[.[mda/inst/FortranFixup2019/EditedNaras/loessf.fUTO^ux PK *P"Amda/inst/FortranFixup2019/sandbox/UTO^ux PK*P W1_+4mda/inst/FortranFixup2019/sandbox/backfit.fUTO^ux PK*P *mda/inst/FortranFixup2019/sandbox/bvalue.fUTO^ux PK*PY\ B*mda/inst/FortranFixup2019/sandbox/sslvrg.fUTO^ux PK*P{ڒ*omda/inst/FortranFixup2019/sandbox/qsbart.fUTO^ux PK*PK*mda/inst/FortranFixup2019/sandbox/backlo.fUTO^ux PK*P}3*mda/inst/FortranFixup2019/sandbox/linear.fUTO^ux PK*P6%R(%mda/inst/FortranFixup2019/sandbox/code.RUTO^ux PK*P2 ;)&(mda/inst/FortranFixup2019/sandbox/lo.fUTO^ux PK *P*A&/mda/inst/FortranFixup2019/sandbox/Scratch/UTO^ux PK*PjG !0/mda/inst/FortranFixup2019/sandbox/Scratch/temp.fUTO^ux PK*Pq n5D3;mda/inst/FortranFixup2019/sandbox/Scratch/loessfL.fUTO^ux PK *P(Awqmda/inst/FortranFixup2019/sandbox/Fixed/UTO^ux PK*PB_1qmda/inst/FortranFixup2019/sandbox/Fixed/backfit.fUTO^ux PK*P 0Bwmda/inst/FortranFixup2019/sandbox/Fixed/bvalue.fUTO^ux PK*PY\ B0}mda/inst/FortranFixup2019/sandbox/Fixed/sslvrg.fUTO^ux PK*P{ڒ0mda/inst/FortranFixup2019/sandbox/Fixed/qsbart.fUTO^ux PK*P Ӱ0%mda/inst/FortranFixup2019/sandbox/Fixed/backlo.fUTO^ux PK*P5oR10?mda/inst/FortranFixup2019/sandbox/Fixed/linear.fUTO^ux PK*PP,mda/inst/FortranFixup2019/sandbox/Fixed/lo.fUTO^ux PK*P9T/Lmda/inst/FortranFixup2019/sandbox/Fixed/splsm.fUTO^ux PK*PjG !0amda/inst/FortranFixup2019/sandbox/Fixed/bsplvd.fUTO^ux PK*P׍5[0mda/inst/FortranFixup2019/sandbox/Fixed/loessf.fUTO^ux PK*P>!)Rmda/inst/FortranFixup2019/sandbox/splsm.fUTO^ux PK*PjG !*mda/inst/FortranFixup2019/sandbox/bsplvd.fUTO^ux PK*P5b1'!mda/inst/FortranFixup2019/sandbox/run.RUTO^ux PK*P׍5[*"mda/inst/FortranFixup2019/sandbox/loessf.fUTO^ux PK *P,A/Xmda/inst/FortranFixup2019/sandbox/naras_gam/UTO^ux PK *P0AXmda/inst/FortranFixup2019/sandbox/naras_gam/man/UTO^ux PK*P>Xmda/inst/FortranFixup2019/sandbox/naras_gam/man/predict.gam.RdUTO^ux PK*PC} ;=amda/inst/FortranFixup2019/sandbox/naras_gam/man/step.gam.RdUTO^ux PK*P~<kmda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.scope.RdUTO^ux PK*Px ?pmda/inst/FortranFixup2019/sandbox/naras_gam/man/gam-internal.RdUTO^ux PK*PߋH.6qmda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.RdUTO^ux PK*P* <mda/inst/FortranFixup2019/sandbox/naras_gam/man/anova.gam.RdUTO^ux PK*P⥠2>mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.control.RdUTO^ux PK*Pͣw;*mda/inst/FortranFixup2019/sandbox/naras_gam/man/kyphosis.RdUTO^ux PK*P ݓA]mda/inst/FortranFixup2019/sandbox/naras_gam/man/na.gam.replace.RdUTO^ux PK*P.P9"y@mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.smoothers.RdUTO^ux PK*P>n.8];7mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.data.RdUTO^ux PK*Pgi< mda/inst/FortranFixup2019/sandbox/naras_gam/man/gam.exact.RdUTO^ux PK*PC6'9mda/inst/FortranFixup2019/sandbox/naras_gam/man/random.RdUTO^ux PK*P&15mda/inst/FortranFixup2019/sandbox/naras_gam/man/lo.RdUTO^ux PK*P(ܤ+;$mda/inst/FortranFixup2019/sandbox/naras_gam/man/plot.gam.RdUTO^ux PK*Ped 4=mda/inst/FortranFixup2019/sandbox/naras_gam/man/s.RdUTO^ux PK*PB5mda/inst/FortranFixup2019/sandbox/naras_gam/ChangeLogUTO^ux PK *P.A6mda/inst/FortranFixup2019/sandbox/naras_gam/R/UTO^ux PK*P%L]5mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.s.RUTO^ux PK*PX7>Ymda/inst/FortranFixup2019/sandbox/naras_gam/R/na.gam.replace.RUTO^ux PK*P6xE@mda/inst/FortranFixup2019/sandbox/naras_gam/R/plot.preplot.gam.RUTO^ux PK*P9@9mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.exact.RUTO^ux PK*P9^ 3mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.RUTO^ux PK*PʻݟD%?<mda/inst/FortranFixup2019/sandbox/naras_gam/R/print.stepanova.RUTO^ux PK*Pӌ=mda/inst/FortranFixup2019/sandbox/naras_gam/R/gplot.numeric.RUTO^ux PK*Pa3(=mda/inst/FortranFixup2019/sandbox/naras_gam/R/subset.smooth.RUTO^ux PK*Pq2'h ?8mda/inst/FortranFixup2019/sandbox/naras_gam/R/step.gam.RUTO^ux PK*P!=mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.smoothers.RUTO^ux PK*P``3AP:mda/inst/FortranFixup2019/sandbox/naras_gam/R/labels.gam.RUTO^ux PK*P(2SN 8Vmda/inst/FortranFixup2019/sandbox/naras_gam/R/plot.gam.RUTO^ux PK*P` 1mda/inst/FortranFixup2019/sandbox/naras_gam/R/s.RUTO^ux PK*P6mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.lo.RUTO^ux PK*P^r(8mda/inst/FortranFixup2019/sandbox/naras_gam/R/as.anova.RUTO^ux PK*P),(:6\mda/inst/FortranFixup2019/sandbox/naras_gam/R/polylo.RUTO^ux PK*PNR0jGmda/inst/FortranFixup2019/sandbox/naras_gam/R/as.data.frame.lo.smooth.RUTO^ux PK*P<{8mda/inst/FortranFixup2019/sandbox/naras_gam/R/onAttach.RUTO^ux PK*PSsI]7mda/inst/FortranFixup2019/sandbox/naras_gam/R/gamlist.RUTO^ux PK*P_dq<Lmda/inst/FortranFixup2019/sandbox/naras_gam/R/gplot.matrix.RUTO^ux PK*P舦.o:Rmda/inst/FortranFixup2019/sandbox/naras_gam/R/ylim.scale.RUTO^ux PK*Pݥ` ;5mda/inst/FortranFixup2019/sandbox/naras_gam/R/summary.gam.RUTO^ux PK*PGP 7mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.fit.RUTO^ux PK*PD ;mda/inst/FortranFixup2019/sandbox/naras_gam/R/predict.gam.RUTO^ux PK*P H9 mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.scope.RUTO^ux PK*Pw= mda/inst/FortranFixup2019/sandbox/naras_gam/R/anova.gamlist.RUTO^ux PK*PEMMV; mda/inst/FortranFixup2019/sandbox/naras_gam/R/print.gamex.RUTO^ux PK*PF):D mda/inst/FortranFixup2019/sandbox/naras_gam/R/gplot.list.RUTO^ux PK*P>{i C mda/inst/FortranFixup2019/sandbox/naras_gam/R/newdata.predict.gam.RUTO^ux PK*P-/5mda/inst/FortranFixup2019/sandbox/naras_gam/R/gplot.RUTO^ux PK*P%j2umda/inst/FortranFixup2019/sandbox/naras_gam/R/lo.RUTO^ux PK*P؝%%~;mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.control.RUTO^ux PK*Psŧ ;@mda/inst/FortranFixup2019/sandbox/naras_gam/R/preplot.gam.RUTO^ux PK*P};\mda/inst/FortranFixup2019/sandbox/naras_gam/R/assign.list.RUTO^ux PK*Pd7  9Nmda/inst/FortranFixup2019/sandbox/naras_gam/R/print.gam.RUTO^ux PK*PM ;mda/inst/FortranFixup2019/sandbox/naras_gam/R/general.wam.RUTO^ux PK*PA%P<#mda/inst/FortranFixup2019/sandbox/naras_gam/R/gplot.factor.RUTO^ux PK*P=w86V'mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.sp.RUTO^ux PK*PzHVwz 5=)mda/inst/FortranFixup2019/sandbox/naras_gam/R/s.wam.RUTO^ux PK*P7#A&.mda/inst/FortranFixup2019/sandbox/naras_gam/R/print.summary.gam.RUTO^ux PK*PSE)U90mda/inst/FortranFixup2019/sandbox/naras_gam/R/anova.gam.RUTO^ux PK*PRR7=1mda/inst/FortranFixup2019/sandbox/naras_gam/R/gplot.default.RUTO^ux PK*PX܅z;3mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.nlchisq.RUTO^ux PK*PS#~64mda/inst/FortranFixup2019/sandbox/naras_gam/R/lo.wam.RUTO^ux PK*Ppp0 6:mda/inst/FortranFixup2019/sandbox/naras_gam/R/random.RUTO^ux PK*P'n:m<mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.random.RUTO^ux PK*PA%9>mda/inst/FortranFixup2019/sandbox/naras_gam/R/gam.match.RUTO^ux PK*PBb9 L5SAmda/inst/FortranFixup2019/sandbox/naras_gam/NAMESPACEUTO^ux PK*PE7O7zCmda/inst/FortranFixup2019/sandbox/naras_gam/DESCRIPTIONUTO^ux PK *P1A:Emda/inst/FortranFixup2019/sandbox/naras_gam/inst/UTO^ux PK *P8AEmda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/UTO^ux PK*PX*K aAFmda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/backfit.rUTO^ux PK*P@Qmda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/backlo.rUTO^ux PK*P4̾/Ͻ@kYmda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/linear.rUTO^ux PK*PrPTZ<mda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/lo.rUTO^ux PK*P#S ?Xmda/inst/FortranFixup2019/sandbox/naras_gam/inst/ratfor/splsm.rUTO^ux PK *P1A[mda/inst/FortranFixup2019/sandbox/naras_gam/data/UTO^ux PK *P(?NBƚmda/inst/FortranFixup2019/sandbox/naras_gam/data/gam.newdata.RDataUTO^ux PK*P>? mda/inst/FortranFixup2019/sandbox/naras_gam/data/kyphosis.RDataUTO^ux PK*P4$ #?3mda/inst/FortranFixup2019/sandbox/naras_gam/data/gam.data.RDataUTO^ux PK *P0Amda/inst/FortranFixup2019/sandbox/naras_gam/src/UTO^ux PK*P W1_9#mda/inst/FortranFixup2019/sandbox/naras_gam/src/backfit.fUTO^ux PK*P 8ǵmda/inst/FortranFixup2019/sandbox/naras_gam/src/bvalue.fUTO^ux PK*PH!3-7 mda/inst/FortranFixup2019/sandbox/naras_gam/src/sbart.cUTO^ux PK*Pà7mda/inst/FortranFixup2019/sandbox/naras_gam/src/stxwx.fUTO^ux PK*Pٿb8mda/inst/FortranFixup2019/sandbox/naras_gam/src/bvalus.fUTO^ux PK*PY\ B8mda/inst/FortranFixup2019/sandbox/naras_gam/src/sslvrg.fUTO^ux PK*P{ڒ8mda/inst/FortranFixup2019/sandbox/naras_gam/src/qsbart.fUTO^ux PK*PK8mda/inst/FortranFixup2019/sandbox/naras_gam/src/backlo.fUTO^ux PK*P !<mda/inst/FortranFixup2019/sandbox/naras_gam/src/Makevars.winUTO^ux PK*P}38mda/inst/FortranFixup2019/sandbox/naras_gam/src/linear.fUTO^ux PK*P,e&:mda/inst/FortranFixup2019/sandbox/naras_gam/src/gam_init.cUTO^ux PK*P"#8mda/inst/FortranFixup2019/sandbox/naras_gam/src/MakevarsUTO^ux PK*Pr 8)mda/inst/FortranFixup2019/sandbox/naras_gam/src/sinerp.fUTO^ux PK*P2 ;)4#mda/inst/FortranFixup2019/sandbox/naras_gam/src/lo.fUTO^ux PK*P ~cu7*mda/inst/FortranFixup2019/sandbox/naras_gam/src/sgram.fUTO^ux PK*PINE28.mda/inst/FortranFixup2019/sandbox/naras_gam/src/loessc.cUTO^ux PK*P>!7=mda/inst/FortranFixup2019/sandbox/naras_gam/src/splsm.fUTO^ux PK*PjG !8Cmda/inst/FortranFixup2019/sandbox/naras_gam/src/bsplvd.fUTO^ux PK*PC#8kPmda/inst/FortranFixup2019/sandbox/naras_gam/src/modreg.hUTO^ux PK*P׍5[8Wmda/inst/FortranFixup2019/sandbox/naras_gam/src/loessf.fUTO^ux PK*Pi$mda/inst/FortranFixup2019/Readme.txtUTO^ux PK*P}d Ѝmda/inst/examples.RoutUTO^ux PK*P?^hmda/inst/examples.RUTO^ux PK *P Amda/data/UTO^ux PK*PNДmda/data/ESL.mixture.rdaUTO^ux PK*P}UVmda/data/glass.rdaUTO^ux PK *PAkmda/src/UTO^ux PK*Pxkmda/src/bvalue.fUTO^ux PK*PT鶋umda/src/stxwx.fUTO^ux PK*P9wmda/src/sslvrg.fUTO^ux PK*Pw"f~mda/src/mspline.fUTO^ux PK*Ph I#mda/src/dorthreg.fUTO^ux PK*P Y!qmda/src/sknotl.fUTO^ux PK*P^'.:Ǥmda/src/bruto.fUTO^ux PK*PrAJmda/src/sspl00.f90UTO^ux PK*P7׫mda/src/sortdi.fUTO^ux PK*P.8ߞHUmda/src/dmarss.fUTO^ux PK*P&/h ;mda/src/sinerp.fUTO^ux PK*Pmda/src/dcalcvar.fUTO^ux PK*Pvvd L'mda/src/sbart.fUTO^ux PK*P ~cumda/src/sgram.fUTO^ux PK*P;ہP mda/src/mda_init.cUTO^ux PK*Pԛ&$mda/src/dqrreg.fUTO^ux PK*PcAPmda/src/splsm.fUTO^ux PK*PTKyD.'mda/src/tmatch.fUTO^ux PK*PAT} '#mda/src/bsplvd.fUTO^ux PK*Pի= |mda/PORTINGUTO^ux PKsmda/inst/ratfor/0000755000176200001440000000000013654121571013272 5ustar liggesusersmda/inst/ratfor/README0000644000176200001440000000024613653663715014166 0ustar liggesusersWarning: this ratfor does not correspond to the fortran code. The latter has been changed by ?? and no longer corresponds. This cost TH one day of misery in June 2015mda/inst/ratfor/sknotl.r0000644000176200001440000000164413653663715015006 0ustar liggesuserssubroutine sknotl(x,n,knot,k) implicit double precision(a-h,o-z) integer n,k,ndk,j double precision x(n),knot(n+6),a1,a2,a3,a4 # Allocate knots acording to the cutoffs given below # Cutoff constants a1 = log(50e0)/log(2e0) ; a2 = log(100e0)/log(2e0) a3 = log(140e0)/log(2e0) ; a4 = log(200e0)/log(2e0) # Cutoff Criteria if(n<50) { ndk = n } else if (n>=50 & n<200) { ndk = 2.**(a1+(a2-a1)*(n-50.)/150.) } else if (n>=200 & n<800) { ndk = 2.**(a2+(a3-a2)*(n-200.)/600.) } else if (n>=800 & n<3200) { ndk = 2.**(a3+(a4-a3)*(n-800.)/2400.) } else if (n>=3200) { ndk = 200. + (n-3200)**.2 } k = ndk + 6 # Allocate Knots ( note no account is taken of any weighting vector ) do j=1,3 { knot(j) = x(1) } do j=1,ndk { knot(j+3) = x( 1 + (j-1)*(n-1)/(ndk-1) ) } do j=1,3 { knot(ndk+3+j) = x(n) } return end mda/inst/ratfor/bruto.r0000644000176200001440000000654713653663715014636 0ustar liggesuserssubroutine bruto(x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, dfmax,cost,lambda,df,coef,type,xrange, gcvsel,gcvbak,dfit,maxit,nit, eta,resid,thresh,work,trace) implicit double precision(a-h,o-z) double precision x(n,q),y(n,p),w(n),knot(nkmax+4,q),wp(p), dfmax(q),cost,lambda(q),df(q),coef(nkmax*p,q),xrange(2,q), gcvsel(q,maxit(1)),gcvbak(q,maxit(2)),dfit(q,maxit(1)), eta(n,p),resid(n,p),thresh,work(1) integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit(2), nit(2) logical trace, select #Compute residuals do j=1,p{ do i=1,n{resid(i,j)=y(i,j)-eta(i,j)} } #bruto backfitting with selection select=.true. call bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, dfmax,cost,lambda,df,coef,type,xrange, gcvsel,dfit,maxit(1),nit(1),eta,resid,thresh*10d0,work,trace) #regular backfitting select=.false. call bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, dfmax,cost,lambda,df,coef,type,xrange, gcvbak,dfit,maxit(2),nit(2),eta,resid,thresh,work,trace) do j=1,p{ do i=1,n{eta(i,j)=y(i,j)-resid(i,j)} } return end subroutine bakssp(select,x,n,q,y,p,w,knot,nkmax,nk,wp,match,nef, dfmax,cost,lambda,df,coef,type,xrange, gcv,dfit,maxit,nit,s,resid,thresh,work,trace) implicit double precision(a-h,o-z) double precision x(n,q),y(n,p),w(n),knot(nkmax+4,q),wp(p), dfmax(q),cost,lambda(q),df(q),coef(nkmax*p,q), xrange(2,q),gcv(q,maxit),dfit(q,maxit), s(n,p),resid(n,p),thresh,work(1) integer n,q,p,nkmax,nk(q),match(n,q),nef(q),type(q),maxit,nit,ier,ntype double precision dfoff, gcv0, ndf,gcv1,gcvrat,ndfoff,wmean,sbar,rss,tol logical center, select, trace center=.true. tol=1d-3 # this is the convergence criterion for gcv #remove the mean from the residuals, and compute rss rss=0d0 do j=1,p{ sbar=wmean(n,resid(1,j),w) do i=1,n{ resid(i,j)=resid(i,j) - sbar work(i)=resid(i,j)**2 } rss=rss+wp(j)*wmean(n,work,w) } dfoff=0 do k=1,q {dfoff=dfoff+df(k)} gcv1=rss/((1-(1+dfoff*cost)/n)**2) gcvrat=1d0 nit=0 while(nitthresh ){ gcv0=gcv1 nit=nit+1 do k=1,q{ gcv(k,nit)=gcv1 if(!select&type(k)==1)next # form partial residuals if necessary if(type(k)>1){ #get the fitted values call psspl2(x(1,k),n,p,knot(1,k),nk(k),xrange(1,k), coef(1,k),coef(1,k),s,0,type(k)) do j=1,p{ sbar=wmean(n,s(1,j),w) do i=1,n{resid(i,j)=resid(i,j) + s(i,j)-sbar} } } ndfoff=dfoff-df(k) if(select) {ntype=0} else {ntype=type(k)} call sspl2(x(1,k),resid,w,n,p,knot(1,k),nk(k),wp,match(1,k), nef(k),ndfoff,dfmax(k),cost,lambda(k),ndf, gcv1,coef(1,k),s,ntype,center, xrange(1,k),work,tol,ier) gcv(k,nit)=gcv1 if(select){ dfit(k,nit)=ndf df(k)=ndf dfoff=ndfoff+ndf type(k)=ntype } if(type(k)>1){ do j=1,p{ do i=1,n{ resid(i,j)=resid(i,j) - s(i,j) } } } } gcvrat=dabs(gcv1-gcv0)/gcv0 if(trace){ call intpr("outer iteration",15,nit,1) call dblepr("gcv ",5,gcv1,1) call dblepr("ratio",5,gcvrat,1) } } return end subroutine pbruto(x,n,q,ybar,p,knot,nkmax,nk,coef,type,xrange, eta,work) implicit double precision(a-h,o-z) double precision x(n,q),ybar(p),knot(nkmax+4,q),coef(nkmax*p,q), xrange(2,q),eta(n,p),work(n,p) integer n,q,p,nkmax,nk(q),type(q) #initialization do j=1,p{ do i =1,n {eta(i,j)=ybar(j)} } do k=1,q{ if(type(k)==1)next call psspl2(x(1,k),n,p,knot(1,k),nk(k),xrange(1,k), coef(1,k),coef(1,k),work,0,type(k)) do j=1,p{ do i=1,n{eta(i,j)=eta(i,j) + work(i,j)} } } return end mda/inst/ratfor/dmarss.r0000644000176200001440000004744313653663715014774 0ustar liggesuserssubroutine marss(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,penalty,thresh,forwstep,interms,prune,bx,fullin,lenb, bestgcv, bestin, flag, cut,dir, res,alpha,beta, scrat,iscrat,trace) # # multivariate mars # # input # # integer nx- number of rows of x, bx, and tagx # integer n- number of observations # integer p- number of variables # integer nclass - number of classes (resposne variables) # double precision y(n,nclass)- matrix of response values # double precision x(nx,p) -matrix of predictors # double precision w(n)- weights (ge 0) # integer tagx(nx,p) - tag array for sorting x # integer maxorder- maxumum order of interaction (mi in Friedman's notation) # # integer mmax- maximum number of basis functions (nk in Friedman's notation) # if it is desired to add say 3 terms to an existing model, one can set mmax=interms+3 # and set interms appropriately (see below) # # double precision penalty- cost per knot selection (df in Friedman's notation) # # double precision thresh- forward stepwise threshold - forw step stops if (rss/rssnull).le.thresh) # to prevent numerical problems with overfit solutions # # logical forwstep- if true, forward stepwise is carried out. if false, procedure # starts with basis matrix bx and carried out backward stepwise. This saves # a great deal of time in choosing the penalty parameter # # integer interms- number of terms in existing model. for a fresh start interms=1. # # logical prune- true if pruning (backward stepwise deletion) is desired # # # # # # double precision bx(nx,mmax)- basis matrix- used on input only if interms>1 or forwstep=false # # integer fullin(mmax)- basis column indicator. columns marked with a 1 indicate active # columns- used on input only if interms>1 or forwstep=false # # integer lenb- number of active columns of bx - # used on input only if interms>1 or forwstep=false # # double precision res(n,nclass) - residuals - used as input only if interms>1, in which case they # should be the residuals from the current fitted model # # double precision scrat(1)- scratch array of length at least # 1+n+ 2*n*mmax +4*mmax*mmax +3*mmax + 3*mmax*nclass +3*nclass # +28n+51 (for linpack) # # integer iscrat(1)- scratch array of length at least 4*mmax # #logical trace - should there be a printing of progress # # # output # # double precision bx(nx,mmax)- basis matrix. only first lenb columns are active. first column is 1 # integer fullin(mmax)- basis column indicator. columns marked with a 1 indicate # the linearly indep set # integer lenb- number of active columns of bx # double precision bestgcv- gcv for best model # integer bestin(mmax) basis column indicator for best model. 1 indicates term is in model # integer flag(mmax,p)- ijth element is 1 if predictor j is in model term i # (zero otherwise). note for a zero column of bx (fullin=0), the row of flag # will be all 1, for a technical reason, it should be ignored of course. # # double precision cut(mmax,p) - ijth element cutpoint for variable j in model term i # double precision dir(mmax,p) - ijth element is 1 if factor involving predictor j in term i is # of the form (x-t)+ ; it is -1 if it has the form (t-x)+ # # double precision res(n,nclass) - residuals from final fit # double precision alpha(nclass)- intercepts from final fit # double precision beta(mmax,nclass)- slopes from final fit implicit double precision (a-h,o-z) integer nx, n,p,nclass,tagx(nx,p),maxorder,mmax,bestin(mmax),flag(mmax,p), fullin(mmax) double precision y(n,nclass),x(nx,p),w(n),bx(nx,mmax),bestgcv,cut(mmax,p),dir(mmax,p),res(nx,nclass), alpha(nclass),beta(mmax,nclass) double precision scrat(1) integer iscrat(1) logical forwstep, prune, trace, tracec common tracec tracec=trace # iscrat must be of len at least 3*mmax # scrat must be of length at least # 1+n+ 2*n*mmax +4*mmax*mmax +3*mmax + 3*mmax*nclass +3*nclass #1. bxorth #2. bxorthm #3. cov #4. covsy #5. ybar #6. scr1 #7. scr5 #8. scr6 #9. temp #10. bxsc #11. r #12. betasc, #13 #14 #15 work len1=n*mmax len2=mmax len3=mmax*mmax len4=mmax*nclass len5=nclass len6=mmax len7=mmax len8=nclass len9=n len10=n*mmax len11=mmax*mmax len12=mmax*nclass len13=mmax*mmax len14=mmax*mmax n1=1 n2=n1+len1 n3=n2+len2 n4=n3+len3 n5=n4+len4 n6=n5+len5 n7=n6+len6 n8=n7+len7 n9=n8+len8 n10=n9+len9 n11=n10+len10 n12=n11+len11 n13=n12+len12 n14=n13+len13 n15=n14+len14 call marsnew1(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,bx,bestgcv, bestin,fullin,lenb,flag, cut,dir,res, alpha,beta,penalty,thresh,forwstep,interms,prune, scrat,scrat(n2),scrat(n3),scrat(n4),scrat(n5), scrat(n6),scrat(n7),scrat(n8),scrat(n9), scrat(n10),scrat(n11),scrat(n12),scrat(n13),scrat(n14),scrat(n15), iscrat,iscrat(1+mmax),iscrat(1+2*mmax),iscrat(1+3*mmax)) return end subroutine marsnew1(nx,n,p,nclass,y,x,w,tagx,maxorder,mmax,bx,bestgcv, bestin,fullin,lenb,flag, cut,dir,res,alpha,beta,penalty,thresh,forwstep,interms,prune, bxorth,bxorthm,cov,covsy,ybar, scr1,scr5,scr6, temp, bxsc, r, betasc,varsc,var,work, termlen,in, tempin, qpivot) # input n,p,nclass,x,tagx,y,w,mmax,maxorder # nclass is # of response variables # output- bestin, bestgcv, flag, cut,dir, bx,res implicit double precision (a-h,o-z) integer n,nterms2,p,mmax,flag(mmax,p),tagx(nx,p),termlen(mmax), nclass,fullin(mmax) double precision cov(mmax,mmax),covsy(mmax,nclass), critmax,x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax),y(n,nclass),ybar(nclass), scr1(mmax),scr5(mmax),scr6(nclass) double precision temp(n),w(n), cut(mmax,p),dir(mmax,p),alpha(nclass),beta(mmax,nclass), bxsc(n,mmax), r(mmax,mmax), dofit, res(nx,nclass),betasc(mmax,nclass), varsc(mmax,mmax), var(mmax,mmax), stopfac,work(1) integer tempin(mmax), bestin(mmax),qrank, qpivot(mmax) logical forwstep,go, prune, newform, cvar, trace common trace # # forw stepwise stops if gcv/gcvnull > stopfac, to avoid adding lots of # noisy terms # double precision rtemp(4) integer itemp(4) tolbx=.01 stopfac=10.0 #stopfac=10e9 prevcrit=10e9 #write(6,*) "in marsnew mmax=",mmax, " forwstep=",forwstep, "interms=",interms #call intpr("M1",2,n,1) #call dblepr("penalty",7,penalty,1) #call intpr("maxo",4,maxorder,1) if(interms.eq.1) {dofit=0} else{dofit=0;do j=2,lenb {dofit=dofit+fullin(j)} nterms=interms } if(forwstep){ fullin(1)=1 do i=2,mmax{ fullin(i)=0 } do i=1,n { w(i)=1 } do i=1, mmax{ termlen(i)=0 do j=1, p{ flag(i,j)=0 cut(i,j)=0 }} nterms=1; nterms2=2; do i=1,n { bx(i,1)=1 bxorth(i,1)=1.0/dsqrt(dfloat(n)) } bxorthm(1)=1/dsqrt(dfloat(n)) do i=1,n { do j=1, mmax{ bx(i,j)=0.0 }} do i=1,n { bx(i,1)=1 } do k=1, nclass{ ybar(k)=0.0 do i=1,n { ybar(k)=ybar(k)+y(i,k)/n }} if(interms.eq.1){ rssnull=0.0 do k=1, nclass{ do i=1,n { rssnull=rssnull+(y(i,k)-ybar(k))**2 }} } else{ rssnull=0.0 do k=1, nclass{ do i=1,n { rssnull=rssnull+res(i,k)**2 }} } rss=rssnull cmm= (1+dofit) + penalty*(.5*dofit) gcvnull=(rssnull/n)/(1.0-cmm/n)**2 #write(6,*) "initial rss=", rssnull, " initial gcv=", gcvnull if(trace)call dblepr("initial rss=",11,rssnull,1) if(trace)call dblepr("initial gcv=",11,gcvnull,1) lenb=1 ii=interms-1 go=.true. while( (ii.lt.(mmax-1)).and.((rss/rssnull).gt.thresh).and.go){ ii=ii+2 # write(6,*) "bef addtrm",ii, nterms do i1=1, nterms{ do i2=1, nterms{ cov(i1,i2)=0 }} do j=1, nterms{ cov(j,j)=0.0 do i=1,n { cov(j,j)=cov(j,j)+(bxorth(i,j)-bxorthm(j))*(bxorth(i,j)-bxorthm(j)) } } do k=1,nclass{ do j=1, nterms{ covsy(j,k)=0.0 do i=1,n { covsy(j,k)=covsy(j,k)+(y(i,k)-ybar(k))*bxorth(i,j) } } } do ik=1,mmax { tempin(ik)=fullin(ik)} call addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass,rss,prevcrit, cov,covsy,y,ybar,x,tagx,w,termlen,mmax,tolbx, nterms,flag,maxorder,scr1,scr5,scr6,imax,jmax,kmax,critmax, newform,bxsc, r, betasc, temp) # check whether to accept term doftemp=dofit doftemp=doftemp+1 if((imax>1).and.(newform)) {doftemp=doftemp+1} temprss=rss-critmax cmm= (1+doftemp) + penalty*(.5*doftemp) gcv=(temprss/n)/(1.0-cmm/n)**2 go=.false. if(((critmax/rss).gt.thresh).and.((gcv/gcvnull).lt.stopfac)){ go=.true. dofit=doftemp rss=rss-critmax kk=tagx(imax,jmax) #write(6,256) jmax, imax ,kmax, critmax,x(kk,jmax), rss,gcv, dofit 256 format(" ","adding term"," jmax=",i3, " imax=",i3 ," kmax=",i3, " critmax= ",f8.2, " cutp=", f9.5," rss=",f8.2, " gcv=",f8.2, " dofit=",f9.3) # write(6,*) itemp(1)=jmax;itemp(2)=imax;itemp(3)=kmax; rtemp(1)=critmax;rtemp(2)=x(kk,jmax);rtemp(3)=rss;rtemp(4)=gcv if(trace) call intpr("adding term ",12,ii,1) if(trace)call intpr("var, sp index, parent",21,itemp,3) if(trace)call dblepr("critmax cut rss gcv",19,rtemp,4) prevcrit=critmax do j=1,p { flag(ii,j)=flag(kmax,j) flag(ii+1,j)=flag(kmax,j) cut(ii,j)=cut(kmax,j) cut(ii+1,j)=cut(kmax,j) dir(ii,j)=dir(kmax,j) dir(ii+1,j)=dir(kmax,j) } termlen(ii)=termlen(kmax)+1 termlen(ii+1)=termlen(kmax)+1 do i=1,n { temp(i)=x(tagx(i,jmax),jmax)} temp1=temp(imax) fullin(ii)=1; if((imax.gt.1).and.(newform)) {fullin(ii+1)=1 } flag(ii,jmax)=1; flag(ii+1,jmax)=1; cut(ii,jmax)=temp1 cut(ii+1,jmax)=temp1 dir(ii,jmax)=1 dir(ii+1,jmax)=-1 # #this is to prevent trying to split a 0 column later if(fullin(ii+1).eq.0) { #do j=1,p {flag(ii+1,j)=1} # termlen(ii+1)=maxorder+1 } do i=1,n { if( (x(i,jmax)-temp1).gt.0) bx(i,ii)=bx(i,kmax)*(x(i,jmax)-temp1) if((temp1-x(i,jmax)).ge.0) bx(i,ii+1)=bx(i,kmax)*(temp1-x(i,jmax)) } if(nterms.eq.1){ temp1=0.0; do i=1,n { temp1=temp1+bx(i,2)/n; } do i=1,n {bxorth(i,2)=bx(i,2)-temp1;} } else{ ## write(6,*) "bef call to orthreg" call orthreg(n,n,nterms,bxorth,fullin, bx(1,ii),bxorth(1,nterms2)) } if(fullin(ii+1).eq.1){ call orthreg(n,n,nterms+1,bxorth,fullin, bx(1,ii+1),bxorth(1,nterms2+1)) # } else {do i=1,n {bxorth(i,nterms2+1)=0}} bxorthm(nterms2)=0.0 ; bxorthm(nterms2+1)=0.0 do i=1,n { bxorthm(nterms2)=bxorthm(nterms2)+bxorth(i,nterms2)/n bxorthm(nterms2+1)=bxorthm(nterms2+1)+bxorth(i,nterms2+1)/n } temp1=0.0;temp2=0.0;do i=1,n {temp1=temp1+bxorth(i,nterms2)**2 temp2=temp2+bxorth(i,nterms2+1)**2 } ##write(6,*) "norm of new columns",temp1,temp2 if (temp1.gt.0.0) {do i=1,n { bxorth(i,nterms2) =bxorth(i,nterms2)/dsqrt(temp1) }} if (temp2.gt.0.0) {do i=1,n { bxorth(i,nterms2+1)=bxorth(i,nterms2+1)/dsqrt(temp2) }} lenb=lenb+2 nterms=nterms+2; nterms2=nterms2+2; }} #write(6,*) "stopping forw stepwise" #if((rss/rssnull).le.thresh) write(6,*) "rss ratio=",rss/rssnull #if((critmax/rss).le.thresh) write(6,*) "crit ratio=",critmax/rss #if((gcv/gcvnull).gt.stopfac) write(6,*) "gcv ratio=",gcv/gcvnull rtemp(1)=rss/rssnull;rtemp(2)=critmax/rss;rtemp(3)=gcv/gcvnull if(trace)call dblepr("stopping forw step; rss crit and gcv ratios",43,rtemp,3) if(trace){ if((rss/rssnull).le.thresh) call dblepr("rss ratio=",10,rss/rssnull,1) if((critmax/rss).le.thresh) call dblepr ("crit ratio=",11,critmax/rss,1) call dblepr("critmax",7,critmax,1) call dblepr("rss",3,rss,1) if((gcv/gcvnull).gt.stopfac) call dblepr("gcv ratio=",10,gcv/gcvnull,1) } # write(6,*) "after forward step ","go=",go," rss=",rss, "nterms=", nterms } #call intpr("M2",2,fullin,10) #call intpr("nterms",6,nterms,1) dofit= -1 do i=1,nterms{ bestin(i)=fullin(i) dofit=dofit+fullin(i) } #call intpr("M21",3,n,1) if(trace)call intpr("aft forw step",13,nterms,1) ##added by Trevor 5/24/2015 cvar=.false. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,bestin,y,qpivot,qrank,beta,res,rss,cvar,var,varsc,scr1, work) #call dblepr("rss",3,rss,1) #call dblepr("beta",4,beta,4) #call intpr("M3",2,n,1) nt=dofit+1 if(qrank< nt) { #write(6,*) "singular matrix" do i=qrank+1,nt{ bestin(qpivot(i))=0 fullin(qpivot(i))=0 #write(6,*) "removing col ",qpivot(i) dofit=dofit-1; } } ##write(6,*) "bef mlin", nterms,dofit,(bestin(j),j=1,nterms),y(1,1),n,mmax,nclass,w(1) cvar=.true. #call intpr("M23",3,fullin,11) #call intpr("bestin",6,bestin,11) # #call intpr("lenb",4,lenb,1) #call intpr("mmax",4,mmax,1) #call dblepr("res",3,res,10) #call dblepr("bx",2,bx(1,1),5) #call dblepr("bx",2,bx(1,2),5) #call dblepr("bx",2,bx(n,11),1) #call dblepr("y",1,y,5) #call intpr("nx",2,nx,1) #call intpr("n",1,n,1) #write(6,*) "rank=",qrank, "rss=",rss rssfull=rss # dofit is the number of nonconstant, indep basis fns in the model cmm= (1+dofit) + penalty*(.5*dofit) bestgcv=(rss/n)/(1.0-cmm/n)**2 #write(6,*) "full model,gcv=",bestgcv, " rss=",rssfull, "dofit=",dofit rtemp(1)=bestgcv; rtemp(2)=rssfull;rtemp(3)=dofit if(trace)call dblepr("full model: gcv rss dofit",25,rtemp,3) if(trace)call intpr("terms",5,fullin,lenb) # after forward stepwise, nterms and lenb = # of columns of bx # dofit is number of nonzero columns if(prune){ do i=1,mmax{ tempin(i)=bestin(i)} #write(6,*) "initial tempin", (tempin(i),i=1,nterms) #call intpr("M5",2,n,1) while(dofit>0 ) { jo=1;rsstemp=10e99;minterm=0 do ii=2, lenb { if(tempin(ii).eq.1) { jo=jo+1 temp7=0.0 do kc=1,nclass{ temp7=temp7+beta(jo,kc)**2/var(jo,jo) } if(temp7 < rsstemp) {minterm=ii; rsstemp=temp7} }} rss=rss+rsstemp dofit=dofit-1; cmm= (1.0+dofit) + penalty*(.5*dofit) gcv=(rss/n)/(1.0-cmm/n)**2 tempin(minterm)=0 # write(6,100) minterm,gcv, rss,dofit,(tempin(ik),ik=1,lenb) 100 format(" ","pruning, minterm= ",i4, " gcv=",f9.3,2x, " rss=",f9.3,2x," dof=",f9.3, " model= ",60(i1,1x)) if(gcv< bestgcv) {bestgcv=gcv;do i=1,mmax {bestin(i)=tempin(i);}} if(dofit > 0) { cvar=.true. call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,tempin,y,qpivot,qrank,beta,res,rss,cvar,var,varsc,scr1,work) } } call qrreg(nx,n,mmax,lenb,nclass,bx,bxsc,bestin,y,qpivot,qrank,beta,res,rss,cvar,var,varsc, scr1, work) #write(6,101) bestgcv,rss,(bestin(ik),ik=1,lenb) 101 format(" ","best model gcv=",f9.3," rss=",f9.3,2x,"model= ",60(i1,1x)) if(trace)call intpr("best model",10,bestin,lenb) if(trace)call dblepr(" gcv=",4,bestgcv,1) } return end subroutine addtrm(nx,bx,tempin,bxorth,bxorthm,p,n,nclass, rss,prevcrit,cov,covsy,y,ybar,x,tagx,w,termlen,mmax,tolbx, nterms,flag,maxorder,scr1,scr5,scr6,imax,jmax,kmax,critmax, newform,bxsc,r,betasc, scrat) implicit double precision (a-h,o-z) integer n,nterms,nterms2,p,mmax,flag(mmax,p),v,tagx(nx,p),termlen(mmax), nclass, tempin(mmax), minspan, iendspan double precision cov(mmax,mmax),covsy(mmax,nclass), critmax,x(nx,p),bx(nx,mmax),bxorth(n,mmax),bxorthm(mmax),y(n,nclass),ybar(nclass), scr1(mmax),scr5(mmax),scr6(nclass), bxsc(n,mmax), r(mmax,mmax), betasc(mmax,nclass), scrat(n),w(n) double precision temp1, temp2, scr2,sumb, sumbx, su, st, tem logical newform, tnewform, trace common trace critmax=0;jmax=0;imax=0;kmax=0; # finds best term to add to current mars model ##write(6,*) "in addtrm n,p, nclass, nterms,mmax, y(1,1), x(1,1), tagx(1,1),flag(1,1),bx(1,1#),bxorth(1,1)", n,p, nclass, nterms,mmax, y(1,1), x(1,1), tagx(1,1),flag(1,1),bx(1,1),bxor#th(1,1) do m=1,nterms { nm=0 do jjj=1,n { if(bx(jjj,m).gt.0) {nm=nm+1} } # tem=-(1d0/(n*nm))*dlog(1d0 - 5d-2) n should be p thanks to Gints Jekabsons/Stephen Milborrow tem=-(1d0/(p*nm))*dlog(1d0 - 5d-2) minspan= -1d0*(dlog(tem)/dlog(2d0))/2.5 # tem=(5d-2)/n n should be p thanks to Gints Jekabsons/Stephen Milborrow tem=(5d-2)/p iendspan=3d0-dlog(tem)/dlog(2d0) # # write(6,*) "minspan,iendspan",minspan,iendspan if(termlen(m)< maxorder){ do v=1,p { if(flag(m,v).eq.0){ # check if model term type is already in model, to avoid a linear dependence tnewform=.true. mm=1 while((mm.le.nterms).and.tnewform) { mm=mm+1 if(tempin(mm).eq.1){ tnewform=.false. if(flag(mm,v).ne.1){tnewform=.true.;go to 9911} do j=1,p {if(j.ne.v) { if(flag(mm,j).ne.flag(m,j)) {tnewform=.true.;go to 9911 }}} } 9911 continue } # if new form of term, fit term bm*x # should it be bxorth below? if(tnewform) { nterms2=nterms+1 do i=1,n { scrat(i)=x(i,v)*bx(i,m) } # # if(nterms>1){ call orthreg(n,n,nterms,bxorth,tempin, scrat,bxorth(1,nterms2)) } else{ tem=0;do i=1,n {tem=tem+scrat(i)/n;} do i=1,n{ bxorth(i,2)=scrat(i)-tem} } bxorthm(nterms2)=0.0 ; do i=1,n { bxorthm(nterms2)=bxorthm(nterms2)+bxorth(i,nterms2)/n } temp1=0.0;do i=1,n {temp1=temp1+bxorth(i,nterms2)**2} if (temp1.gt.tolbx) {do i=1,n { bxorth(i,nterms2)=bxorth(i,nterms2)/dsqrt(temp1) }} else {do i=1,n {bxorth(i,nterms2)=0};tnewform=.false.;} do i1=1, nterms2{ cov(i1,nterms2)=0.0 cov(nterms2, i1)=0.0 } cov(nterms2,nterms2)=1 do kc=1,nclass{ covsy(nterms2,kc)=0.0 do i=1,n { covsy(nterms2,kc)=covsy(nterms2,kc)+(y(i,kc)-ybar(kc))*bxorth(i,nterms2) } } critnew=0.0 do kc=1,nclass { temp1=0 do i=1,n { temp1=temp1+y(i,kc)*bxorth(i,nterms2)} critnew=critnew+temp1**2 } ## write(6,*) "geoff",nterms,v,critnew if(critnew.gt.critmax) { jmax=v critmax=critnew imax=1 kmax=m } } if(tnewform) {nterms2=nterms+1; nterms21=nterms+2} else{nterms2=nterms; nterms21=nterms+1;critnew=0.0} #if((nterms.eq.7).and.(v.eq.2)) { # call dblepr("bxorth",6,bxorth(1,nterms2),10) # call dblepr("temp1",5,temp1,1) # call dblepr("critmax",7,critmax,1) #} # try other knot locations do kc=1, nclass{ covsy(nterms21,kc)=0 } do ii=1,nterms21 { cov(ii,nterms21)=0 cov(nterms21,ii)=0 } do kc=1,nclass { scr6(kc)=0 } do ii=1,nterms21{ scr1(ii)=0; } scr2=0;su=0;st=0;sumbx2=0;sumb=0.0;sumbx=0.0; for (k=n-1;k>0;k=k-1) { do i=1,nterms2 { kk=tagx(k,v) kk1=tagx(k+1,v) scr1(i)=scr1(i)+(bxorth(kk1,i)-bxorthm(i))*bx(kk1,m) cov(i,nterms21)=cov(i,nterms21)+ (x(kk1,v)-x(kk,v))*scr1(i) cov(nterms21,i)=cov(i,nterms21) } scr2=scr2+(bx(kk1,m)**2)*x(kk1,v) sumbx2=sumbx2+bx(kk1,m)**2 sumb=sumb+bx(kk1,m) sumbx=sumbx+bx(kk1,m)*x(kk1,v) su=st st=sumbx-sumb*x(kk,v) cov(nterms21,nterms21)= cov(nterms21,nterms21)+ (x(kk1,v)-x(kk,v))*(2*scr2-sumbx2*(x(kk,v)+x(kk1,v)))+ ( (su*su)-(st*st) )/n crittemp=critnew do kc=1, nclass{ scr6(kc)=scr6(kc)+(y(kk1,kc)-ybar(kc))*bx(kk1,m) covsy(nterms21,kc)=covsy(nterms21,kc )+(x(kk1,v)-x(kk,v))*scr6(kc) temp1=covsy(nterms21,kc) temp2=cov(nterms21,nterms21) do jk=1,nterms2 { temp1=temp1-covsy(jk,kc)*cov(jk,nterms21) temp2=temp2-cov(jk,nterms21)*cov(jk,nterms21) } # # this has to be fixed!! # if(cov(nterms21,nterms21)>0){ if((temp2/cov(nterms21,nterms21)) > tolbx) {critadd=(temp1*temp1)/temp2} else {critadd=0.0}} else{critadd=0} crittemp=crittemp+critadd #if((nterms.eq.7).and.(v.eq.2).and.(critadd.gt.0)) { #call intpr("k",1,k,1) #call dblepr("temp2",5,temp2,1) #call dblepr("cov",3,cov(nterms21,nterms21),1) # call dblepr("critadd",7,critadd,1) # call dblepr("crittemp",8,crittemp,1) #} if(crittemp.gt.(1.01*rss)) {crittemp=0.0} if(crittemp.gt.(2*prevcrit)) {crittemp=0.0} } if(k.gt.1){ k0=tagx(k-1,v) } # # decide whether to accept term # #if((k.eq.70).and.(v.eq.10)){ ##write(6,*) "HI",k,v,critmax,minspan,mod(k,minspan),iendspan,n-iendspan,x(kk,v),x(kk0,v) #} #call intpr("k",1,k,1) #call intpr("v",1,v,1) #call dblepr("crittemp",8,crittemp,1) #call intpr("minspan",7,minspan,1) #call intpr("iendspan",8,iendspan,1) if((crittemp.gt.critmax).and.(mod(k,minspan).eq.0).and. (k.ge.iendspan).and.(k.le.(n-iendspan)).and.(bx(kk1,m).gt.0).and. (.not.((k.gt.1).and.(x(kk,v).eq.x(k0,v))) )) { jmax=v critmax=crittemp imax=k kmax=m newform=tnewform } } } 9999 continue }} } return end mda/inst/ratfor/dqrreg.r0000644000176200001440000000144713653663715014761 0ustar liggesuserssubroutine qrreg(nx,n,px,p,nclass,x,xsc,in,y,qpivot,qrank,beta,res,rss,cvar,var,varsc,scr1,work) implicit double precision (a-h,o-z) integer nx,n,p,px, qpivot(p),qrank,nclass,in(p) double precision x(nx,p), xsc(n,p), y(n,nclass),res(nx,nclass),beta(px,nclass),work(1),scr1(p),var(px,p),varsc(px,p) logical cvar ii=0 do j=1,p { if(in(j).eq.1){ ii=ii+1 do i=1,n { xsc(i,ii)=x(i,j) } }} nt=ii ijob=101 info=1 temp3=1d-2 do i=1,p {qpivot(i)=i} call dqrdca(xsc,n,n,nt,scr1,qpivot,work,qrank,temp3) # computes both fits and beta rss=0.0 do k=1,nclass{ call dqrsl(xsc,n,n,qrank,scr1,y(1,k),work(1),work(1),beta(1,k), work(1),res(1,k),ijob,info) do i=1,n { res(i,k)=y(i,k)-res(i,k); rss=rss+res(i,k)*res(i,k)} } if(cvar) {call calcvar(nx,n,px,xsc,qrank,qpivot,var,varsc,work)} return end mda/inst/ratfor/dcalcvar.r0000644000176200001440000000135713653663715015254 0ustar liggesuserssubroutine calcvar(nx,n,px,qr,qrank,qpivot,cov,tmpcov,work) implicit double precision (a-h,o-z) integer n,px,qrank,qpivot(px) double precision qr(nx,px),cov(px,px), tmpcov(px,px),work(1) double precision dsum integer i,j,km # compute the unscaled coviance matrix for the linear coefficients do i=1,qrank{ do j=1,qrank{ tmpcov(i,j)=0d0 cov(i,j)=qr(i,j) } tmpcov(i,i)=1e0 } info=0 # # notice I have put px in as the row dim of cov # call dbksl(cov,px,qrank,tmpcov,px,info) do i=1,qrank{ do j=i,qrank{ dsum=0e0 km=max(i,j) for(k=km;k<=qrank;k=k+1){ dsum=dsum+tmpcov(i,k)*tmpcov(j,k) } tmpcov(i,j)=dsum tmpcov(j,i)=dsum } } # no do i=1,qrank{ do j=1,qrank{ cov(i,j)=tmpcov(i,j) } } return end mda/inst/ratfor/dorthreg.r0000644000176200001440000000101713653663715015304 0ustar liggesuserssubroutine orthreg(nx,n,p,x,in, y,res) # # does lin reg of y on x. assumes that x is orthogonal with cols > 1 having mean 0 # # # "in" is a vector of column indicators (0 means term is to be deleted) implicit double precision (a-h,o-z) integer n,nx,p, in(p) double precision x(nx,p),y(n),res(n) do i=1,n { res(i)=y(i) } do j=1,p { if(in(j).eq.1){ temp1=0 temp2=0 do i=1,n { temp1=temp1+res(i)*x(i,j) temp2=temp2+x(i,j)*x(i,j) } beta=temp1/temp2 do i=1,n { res(i)=res(i)-beta*x(i,j) } }} return end mda/inst/ratfor/mspline.r0000644000176200001440000005332313653663715015144 0ustar liggesuserssubroutine sspl(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs,sg,abd,p1ip,ier) implicit double precision(a-h,o-z) # A Cubic B-spline Smoothing routine. # # The algorithm minimises: # # (1/n) * sum w(i)* (y(i)-s(i))**2 + lambda* int ( s"(x) )**2 dx # # for each of p response variables in y #Input # x(n) vector containing the ordinates of the observations # y(ldy,p) matrix (n x p) of responses (ldy can be greater than n) # w(n) vector containing the weights given to each data point # n number of data points # ldy leading dimension of y # p number of columns in y # knot(nk+4) vector of knot points defining the cubic b-spline basis. # nk number of b-spline coefficients to be estimated # nk <= n+2 # method method for selecting amount of smoothing, lambda # 1 = fixed lambda # 2 = fixed df # 3 = gcv # 4 = cv # tol used in Golden Search routine # wp(p) weights, length p, used to combine cv or gcv in 3 or 4 above # ssy(p) offsets for weighted sum of squares for y; can be all zero, # else should be the variability lost due to collapsing # onto unique values # dfoff offset df used in gcv calculations (0 is good default) # dfmax maximum value for df allowed when gcv or cv are used # routine simply returns the value at dfmax if it was exceeded # cost cost per df (1 is good default) #Input/Output # lambda penalised likelihood smoothing parameter # df trace(S) #Output # cv omnibus cv criterion # gcv omnibus gcv criterion (including penalty and offset) # coef(nk,p) vector of spline coefficients # s(ldy,p) matrix of smoothed y-values # lev(n) vector of leverages # Working arrays/matrix # xwy(nk,p) X'Wy # hs(nk,4) the diagonals of the X'WX matrix # sg(nk,4) the diagonals of the Gram matrix # abd(4,nk) [ X'WX+lambda*SIGMA] in diagonal form # p1ip(4,nk) inner products between columns of L inverse # ier error indicator # ier = 0 ___ everything fine # ier = 1 ___ spar too small or too big # problem in cholesky decomposition double precision x(n),y(ldy,p),w(n),knot(nk+4),tol,wp(p),ssy(p), dfoff,dfmax,cost,lambda,df,cv,gcv,coef(nk,p),s(ldy,p),lev(n), xwy(nk,p),hs(nk,4),sg(nk,4),abd(4,nk),p1ip(4,nk) integer n,p,ldy,nk,method,ier # Compute SIGMA, X'WX, X'WY, trace, ratio, s0, s1. # SIGMA-> sg[] # X'WX -> hs[] # X'WY -> xwy[] call sgram(sg(1,1),sg(1,2),sg(1,3),sg(1,4),knot,nk) call stxwx2(x,y,w,n,ldy,p,knot,nk,xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4)) # Compute estimate if(method==1) {# Value of lambda supplied call sslvr2(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4), sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) } else {# Use Forsythe, Malcom and Moler routine to minimise criterion call fmm(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs,sg,abd,p1ip,ier) if(method>2&df>dfmax){ df=dfmax call fmm(x,y,w,n,ldy,p,knot,nk,2,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs,sg,abd,p1ip,ier) } } return end subroutine fmm(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs,sg,abd,p1ip,ier) double precision xs(n),ys(ldy,nvar),ws(n),knot(nk+4),tol,wp(nvar),ssy(nvar), dfoff,cost,lambda,df,cv,gcv,coef(nk,nvar),s(ldy,nvar),lev(n), xwy(nk,nvar),hs(nk,4),sg(nk,4),abd(4,nk),p1ip(4,nk) integer n,ldy,nvar,nk,method,ier # Local variables double precision t1,t2,ratio, a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u,v,w, fu,fv,fw,fx,x,targdf, ax,bx integer i ax=1d-10 #used to be lspar bx=1.5 #used to be uspar t1=0. ; t2=0. targdf=df do i=3,nk-3 { t1 = t1 + hs(i,1) } do i=3,nk-3 { t2 = t2 + sg(i,1) } ratio = t1/t2 # # an approximation x to the point where f attains a minimum on # the interval (ax,bx) is determined. # # # input.. # # ax left endpoint of initial interval # bx right endpoint of initial interval # f function subprogram which evaluates f(x) for any x # in the interval (ax,bx) # tol desired length of the interval of uncertainty of the final # result ( .ge. 0.0) # # # output.. # # fmin abcissa approximating the point where f attains a minimum # # # the method used is a combination of golden section search and # successive parabolic interpolation. convergence is never much slower # than that for a fibonacci search. if f has a continuous second # derivative which is positive at the minimum (which is not at ax or # bx), then convergence is superlinear, and usually of the order of # about 1.324.... # the function f is never evaluated at two points closer together # than eps*dabs(fmin) + (tol/3), where eps is approximately the square # root of the relative machine precision. if f is a unimodal # function and the computed values of f are always unimodal when # separated by at least eps*dabs(x) + (tol/3), then fmin approximates # the abcissa of the global minimum of f on the interval ax,bx with # an error less than 3*eps*dabs(fmin) + tol. if f is not unimodal, # then fmin may approximate a local, but perhaps non-global, minimum to # the same accuracy. # this function subprogram is a slightly modified version of the # algol 60 procedure localmin given in richard brent, algorithms for # minimization without derivatives, prentice - hall, inc. (1973). # # # double precision a,b,c,d,e,eps,xm,p,q,r,tol1,tol2,u,v,w # double precision fu,fv,fw,fx,x # # c is the squared inverse of the golden ratio # c = 0.5*(3. - dsqrt(5d0)) # # eps is approximately the square root of the relative machine # precision. # eps = 1d0 10 eps = eps/2d0 tol1 = 1d0 + eps if (tol1 .gt. 1d0) go to 10 eps = dsqrt(eps) # # initialization # a = ax b = bx v = a + c*(b - a) w = v x = v e = 0.0 lambda = ratio*16.**(-2. + x*(6.)) call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4), sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) switch(method){ case 2: fx=3d0+(targdf-df)**2 case 3: fx=gcv case 4: fx=cv } fv = fx fw = fx # # main loop starts here # 20 xm = 0.5*(a + b) tol1 = eps*dabs(x) + tol/3d0 tol2 = 2d0*tol1 # # check stopping criterion # if (dabs(x - xm) .le. (tol2 - 0.5*(b - a))) go to 90 # # is golden-section necessary # if (dabs(e) .le. tol1) go to 40 # # fit parabola # r = (x - w)*(fx - fv) q = (x - v)*(fx - fw) p = (x - v)*q - (x - w)*r q = 2.00*(q - r) if (q .gt. 0.0) p = -p q = dabs(q) r = e e = d # # is parabola acceptable # 30 if (dabs(p) .ge. dabs(0.5*q*r)) go to 40 if (p .le. q*(a - x)) go to 40 if (p .ge. q*(b - x)) go to 40 # # a parabolic interpolation step # d = p/q u = x + d # # f must not be evaluated too close to ax or bx # if ((u - a) .lt. tol2) d = dsign(tol1, xm - x) if ((b - u) .lt. tol2) d = dsign(tol1, xm - x) go to 50 # # a golden-section step # 40 if (x .ge. xm) e = a - x if (x .lt. xm) e = b - x d = c*e # # f must not be evaluated too close to x # 50 if (dabs(d) .ge. tol1) u = x + d if (dabs(d) .lt. tol1) u = x + dsign(tol1, d) lambda = ratio*16.**(-2. + u*(6.)) call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4), sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier) switch(method){ case 2: fu=3d0+(targdf-df)**2 case 3: fu=gcv case 4: fu=cv } # # update a, b, v, w, and x # if (fu .gt. fx) go to 60 if (u .ge. x) a = x if (u .lt. x) b = x v = w fv = fw w = x fw = fx x = u fx = fu go to 20 60 if (u .lt. x) a = u if (u .ge. x) b = u if (fu .le. fw) go to 70 if (w .eq. x) go to 70 if (fu .le. fv) go to 80 if (v .eq. x) go to 80 if (v .eq. w) go to 80 go to 20 70 v = w fv = fw w = u fw = fu go to 20 80 v = u fv = fu go to 20 # # end of main loop # 90 continue if(method==2){call sslvr2(xs,ys,ws,n,ldy,nvar,knot,nk,1,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,s,lev, xwy,hs(1,1),hs(1,2),hs(1,3),hs(1,4), sg(1,1),sg(1,2),sg(1,3),sg(1,4),abd,p1ip,ier)} return end subroutine stxwx2(x,z,w,k,ldy,pz,xknot,n,y,hs0,hs1,hs2,hs3) implicit double precision(a-h,o-z) double precision z(ldy,pz),w(k),x(k),xknot(n+4), y(n,pz),hs0(n),hs1(n),hs2(n),hs3(n), eps,vnikx(4,1),work(16) # local integer k,n,pz,ldy, j,i,pp,ileft,mflag # local # Initialise the output vectors do i=1,n { hs0(i)=0d0 hs1(i)=0d0 hs2(i)=0d0 hs3(i)=0d0 do j=1,pz { y(i,j)=0d0 } } # Compute X'WX -> hs0,hs1,hs2,hs3 and X'WZ -> y eps = .1d-9 do i=1,k { call interv(xknot(1),(n+1),x(i),ileft,mflag) if(mflag== 1) { if(x(i)<=(xknot(ileft)+eps)){ileft=ileft-1} else{return} } call bsplvd (xknot,4,x(i),ileft,work,vnikx,1) j= ileft-4+1 do pp=1,pz {y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(1,1)} hs0(j)=hs0(j)+w(i)*vnikx(1,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(1,1)*vnikx(2,1) hs2(j)=hs2(j)+w(i)*vnikx(1,1)*vnikx(3,1) hs3(j)=hs3(j)+w(i)*vnikx(1,1)*vnikx(4,1) j= ileft-4+2 do pp=1,pz {y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(2,1)} hs0(j)=hs0(j)+w(i)*vnikx(2,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(2,1)*vnikx(3,1) hs2(j)=hs2(j)+w(i)*vnikx(2,1)*vnikx(4,1) j= ileft-4+3 do pp=1,pz {y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(3,1)} hs0(j)=hs0(j)+w(i)*vnikx(3,1)**2 hs1(j)=hs1(j)+w(i)*vnikx(3,1)*vnikx(4,1) j= ileft-4+4 do pp=1,pz {y(j,pp) = y(j,pp)+w(i)*z(i,pp)*vnikx(4,1)} hs0(j)=hs0(j)+w(i)*vnikx(4,1)**2 } return end subroutine sslvr2(x,y,w,n,ldy,p,knot,nk,method,tol,wp,ssy, dfoff,cost,lambda,df,cv,gcv,coef,sz,lev, xwy,hs0,hs1,hs2,hs3,sg0,sg1,sg2,sg3, abd,p1ip,info) implicit double precision(a-h,o-z) double precision x(n),y(ldy,p),w(n),knot(nk+4),tol,wp(p),ssy(p), dfoff,cost,lambda,df,cv,gcv,coef(nk,p),sz(ldy,p),lev(n), xwy(nk,p), hs0(nk),hs1(nk),hs2(nk),hs3(nk), sg0(nk),sg1(nk),sg2(nk),sg3(nk), abd(4,nk),p1ip(4,nk) integer n,p,ldy,nk,method,info #local storage double precision b0,b1,b2,b3,eps,vnikx(4,1),work(16), xv,bvalue,rss,tssy integer ld4,i,icoef,ileft,ilo,j,mflag logical fittoo fittoo= (method!=2) ilo = 1 ; eps = .1d-10 ; ld4=4 # Purpose : Solves the smoothing problem and computes the # criterion functions (CV and GCV). # The coeficients of estimated smooth if(fittoo){ do i=1,nk { do j=1,p {coef(i,j) = xwy(i,j) } } } do i=1,nk { abd(4,i) = hs0(i)+lambda*sg0(i) } do i=1,(nk-1) { abd(3,i+1) = hs1(i)+lambda*sg1(i) } do i=1,(nk-2) { abd(2,i+2) = hs2(i)+lambda*sg2(i) } do i=1,(nk-3) { abd(1,i+3) = hs3(i)+lambda*sg3(i) } call dpbfa(abd,ld4,nk,3,info) if(info.ne.0) { return } if(fittoo){ do j=1,p{ call dpbsl(abd,ld4,nk,3,coef(1,j)) } # Value of smooths at the data points icoef = 1 do i=1,n { xv = x(i) do j=1,p{ sz(i,j) = bvalue(knot,coef(1,j),nk,4,xv,0) } } } # Compute the criterion functions # Get Leverages First call sinrp2(abd,ld4,nk,p1ip) do i=1,n { xv = x(i) call interv(knot(1),(nk+1),xv,ileft,mflag) if(mflag==-1) { ileft = 4 ; xv = knot(4)+eps } if(mflag==1) { ileft = nk ; xv = knot(nk+1)-eps } j=ileft-3 call bsplvd(knot,4,xv,ileft,work,vnikx,1) b0=vnikx(1,1);b1=vnikx(2,1);b2=vnikx(3,1);b3=vnikx(4,1) lev(i) = (p1ip(4,j)*b0**2 + 2.*p1ip(3,j)*b0*b1 + 2.*p1ip(2,j)*b0*b2 + 2.*p1ip(1,j)*b0*b3 + p1ip(4,j+1)*b1**2 + 2.*p1ip(3,j+1)*b1*b2 + 2.*p1ip(2,j+1)*b1*b3 + p1ip(4,j+2)*b2**2 + 2.*p1ip(3,j+2)*b2*b3 + p1ip(4,j+3)*b3**2 )*w(i) } # Evaluate Criteria rss = 0d0 ; df = 0d0 ; sumw=0d0;gcv=0d0;cv=0d0; do i=1,n { df = df + lev(i) } if(fittoo){ do i=1,n { sumw = sumw + w(i) do j=1,p{ rss = rss + w(i)*wp(j)*(y(i,j)-sz(i,j))**2 cv = cv +w(i)*wp(j)*((y(i,j)-sz(i,j))/(1-lev(i)))**2 } } tssy=0d0 do j=1,p{tssy=tssy+wp(j)*ssy(j)} gcv=((rss+tssy)/sumw)/((1d0-((dfoff+df-1)*cost+1)/sumw)**2) #note: the weights should sum to n (the number of original observations) cv=(cv+tssy)/sumw } #lev includes the weights #Note that this version of cv omits ALL observations at #tied x values, since the data are already collapsed here return end subroutine sinrp2(abd,ld4,nk,p1ip) implicit double precision(a-h,o-z) double precision abd(ld4,nk),p1ip(ld4,nk), wjm3(3),wjm2(2),wjm1(1),c0,c1,c2,c3 integer ld4,nk,i,j # Purpose : Computes Inner Products between columns of L(-1) # where L = abd is a Banded Matrix with 3 subdiagonals # A refinement of Elden's trick is used. # Coded by Finbarr O'Sullivan wjm3(1)=0d0; wjm3(2)=0d0; wjm3(1)=0d0 wjm2(1)=0d0; wjm2(2)=0d0 wjm1(1)=0d0 do i=1,nk { j=nk-i+1 c0 = 1d0/abd(4,j) if(j<=nk-3) { c1 = abd(1,j+3)*c0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 } else if(j==nk-2) { c1 = 0d0 c2 = abd(2,j+2)*c0 c3 = abd(3,j+1)*c0 } else if(j==nk-1) { c1 = 0d0 c2 = 0d0 c3 = abd(3,j+1)*c0 } else if(j==nk) { c1 = 0d0 c2 = 0d0 c3 = 0d0 } p1ip(1,j) = 0d0- (c1*wjm3(1)+c2*wjm3(2)+c3*wjm3(3)) p1ip(2,j) = 0d0- (c1*wjm3(2)+c2*wjm2(1)+c3*wjm2(2)) p1ip(3,j) = 0d0- (c1*wjm3(3)+c2*wjm2(2)+c3*wjm1(1)) p1ip(4,j) = c0**2 + c1**2*wjm3(1)+2.*c1*c2*wjm3(2)+2.*c1*c3*wjm3(3) + c2**2*wjm2(1)+2.*c2*c3*wjm2(2) + c3**2*wjm1(1) wjm3(1)=wjm2(1) ; wjm3(2)=wjm2(2) ; wjm3(3)=p1ip(2,j) wjm2(1)=wjm1(1) ; wjm2(2)=p1ip(3,j); wjm1(1)=p1ip(4,j) } return end subroutine suff2(n,p,ny,match,y,w,ybar,wbar,ssy,work) integer match(n),n,ny,p,i,j double precision y(n,ny),ybar(p+1,ny),w(n),wbar(p+1),ssy(ny),work(n) double precision tsum #ssy is the within response variability that is lost by collapsing call pack(n,p,match,w,wbar) do j=1,ny{ do i=1,n work(i)=y(i,j)*w(i) call pack(n,p,match,work,ybar(1,j)) do i=1,p{ if(wbar(i)>0d0) ybar(i,j)=ybar(i,j)/wbar(i) else ybar(i,j)=0d0 } call unpack(n,p,match,ybar(1,j),work) tsum=0d0 do i=1,n tsum=tsum+ w(i)*(y(i,j)-work(i))**2 ssy(j)=tsum } return end subroutine sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, xrange,work,ier) double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p), dfoff,dfmax,cost,lambda,df,cv,gcv,coef(1),s(n,p),lev(nef), xrange(2),work(1) #workspace must be (2*p+2)*nefp1 + (p+16)*nk + n +p integer n,p,nk,method,ier,nef, nefp1, n2,match(1) logical center double precision xmiss,sigtol,xdiff,temp if(nef==0){# match has not been initialized xmiss=1d20 sigtol=1d-5 call namat(x,match,n,nef,work,work(n+1),xmiss,sigtol) xrange(1)=work(1) #work is actually the sorted unique xs xrange(2)=work(nef) } else{ do i=1,n {work(match(i))=x(i)} } xdiff=xrange(2)-xrange(1) do i=1,nef {work(i)=(work(i)-xrange(1))/xdiff} if(nk==0){ call sknotl(work,nef,knot,nk) nk=nk-4 } if(dfmax > dble(nk))dfmax=dble(nk) if(cost>0){ temp=dble(n-dble(center))/cost - dfoff if(dfmax>temp)dfmax=temp } nefp1=nef+1 n2=nefp1*(2*p+2)+1 call sspl1(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, work(1),work(nefp1+1), #xin,yin work(nefp1*(p+1)+1),work(nefp1*(p+2)+1), #win, sout work(n2),work(n2+p*nk),work(n2+(p+4)*nk), #xwy, hs,sg work(n2+(p+8)*nk),work(n2+(p+12)*nk),work(n2+(p+16)*nk), work(n2+(p+16)*nk+p),ier) return end #Memory management subroutine subroutine sspl1(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,nefp1,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,lev, xin,yin,win,sout, xwy,hs,sg,abd,p1ip,ssy,work,ier) double precision x(n),y(n,p),w(n),knot(nk+4),tol,wp(p), dfoff,dfmax,cost,lambda,df,cv,gcv,coef(nk,p),s(n,p),lev(nef), xin(nefp1),yin(nefp1,p),win(nefp1),sout(nefp1,p), xwy(nk,p),hs(nk,4),sg(nk,4),abd(4,nk),p1ip(4,nk), ssy(p),work(n) integer n,p,nefp1,nk,method,ier,match(n),nef logical center double precision sbar, wmean,tdfoff call suff2(n,nef,p,match,y,w,yin,win,ssy,work) if(center){ if(cost>0){tdfoff=dfoff-1/cost} } call sspl(xin,yin,win,nef,nefp1,p,knot,nk,method,tol,wp,ssy, tdfoff,dfmax,cost,lambda,df,cv,gcv,coef,sout,lev, xwy,hs,sg,abd,p1ip,ier) #now unpack the results do j=1,p{ call unpack(n,nef,match,sout(1,j),s(1,j)) if(center){ sbar=wmean(nef,sout(1,j),win) do i=1,n{ s(i,j)=s(i,j)-sbar} } } if(center)df=df-1 return end subroutine namat(x,match,n,nef,work,iwork,xmiss,tol) #returns match (order) and work(1:nef) is the sorted unique x implicit double precision(a-h,o-z) integer match(1),n,nef,iwork(1),index double precision x(1),xmiss,work(1),tol,xend,xstart do i=1,n { work(i)=x(i) iwork(i)=i } call sortdi(work,n,iwork,1,n) xstart=x(iwork(1)) index=n xend=x(iwork(n)) while(xend >= xmiss & index > 1){ index=index-1 xend=x(iwork(index)) } tol=tol*(xend-xstart) index=1 work(1)=xstart for(i=1;i<=n;i=i+1){ while((x(iwork(i))-xstart)n)goto 10 } xstart= x(iwork(i)) index=index+1 match(iwork(i))=index work(index)=xstart } 10 if(xstart >= xmiss) {nef=index-1} else {nef=index} return end subroutine simfit(x,y,w,n,p,dfoff,cost,wp,gcv,coef,s,type,center,work) # # computes constant and linear fits, and selects the best using gcv # implicit double precision (a-h,o-z) integer n,p,type double precision x(n),y(n,p),w(n),cost,dfoff,wp(p),gcv,coef(2,p), s(n,p),work(p) logical center double precision sx,sy,sumw, dcent,sxx,syy,sxy dcent=1-dble(center) #center is F for no centering, else T #Note: if type enters 1 or 2, no selection is made sumw=0d0;gcvc=0d0; do i=1,n { sumw=sumw+w(i) } if(type!=1){#either 0 or 2 in which case the linear is needed as well sx=0.0 ; sxx=0.0; gcvl=0d0; do i=1,n { sx=sx+w(i)*x(i) } xbar=sx/sumw do i=1,n { sxx=sxx+w(i)*(x(i)-xbar)*x(i) } } do j=1,p{ sy=0d0;syy=0d0; do i=1,n{ sy=sy+w(i)*y(i,j) } work(j)=sy/sumw do i=1,n{ syy=syy+w(i)*(y(i,j)-work(j))*y(i,j) } gcvc=gcvc+wp(j)*syy if(type!=1){ #once again, do for linear as well sxy=0.0; do i=1,n{ sxy=sxy+w(i)*(x(i)-xbar)*y(i,j) } coef(2,j)=sxy/sxx gcvl=gcvl+wp(j)*(syy -sxy*coef(2,j)) } } if(type==0){ gcvc =gcvc/ (sumw* (1 - (dfoff*cost + dcent)/sumw)**2 ) gcvl=gcvl/(sumw* (1 - (dcent + (dfoff +1)* cost)/sumw)**2) if(gcvc<=gcvl){ type=1 gcv=gcvc } else{ type=2 gcv=gcvl } } else { if(type==1) {gcv=gcvc/(sumw* (1 - (dfoff*cost + dcent)/sumw)**2 )} else {gcv=gcvl/(sumw* (1 - (dcent + (dfoff + 1)*cost)/sumw)**2)} } if(type==1){ do j=1,p{ coef(1,j)=work(j)*dcent coef(2,j)=0d0 do i=1,n {s(i,j)=coef(1,j)} } } else{ do j=1,p{ coef(1,j)=work(j)*dcent-xbar*coef(2,j) do i=1,n {s(i,j)=coef(1,j)+coef(2,j)*x(i)} } } return end subroutine sspl2(x,y,w,n,p,knot,nk,wp,match,nef, dfoff,dfmax,cost,lambda,df,gcv,coef,s,type,center, xrange,work,tol,ier) double precision x(n),y(n,p),w(n),knot(nk+4),wp(p), dfoff,dfmax,cost,lambda,df,gcv,coef(1),s(n,p), xrange(2),work(1),tol #this routine selects from the linear and constant model as well #see documentation for sspl #workspace must be (2*p+2)*nefp1 + (p+16)*nk + 2*n #if type>0 then no selection is performed; the fit is simply computed. integer n,p,nk,nef,type,match(n),ier,method double precision coef1,coef2,cv logical center #center is F for no centering, else T if(type==3){ method=1 call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,work(1), xrange,work(n+1),ier) return } if(type>0){ call simfit(x,y,w,n,p,dfoff,cost,wp,gcv,coef,s, type,center,work) df=dble(type)- dble(center) return } #selection is being performed method=3 call sspl0(x,y,w,n,p,knot,nk,method,tol,wp,match,nef,center, dfoff,dfmax,cost,lambda,df,cv,gcv,coef,s,work(1), xrange,work(n+1),ier) gcv1=gcv call simfit(x,y,w,n,p,dfoff,cost,wp,gcv,work,work(2*p+1),type,center, work((n+2)*p+1)) if(gcv<=gcv1){ #the coef swapping is so as not to destroy the spline coefs if needed df=dble(type)- dble(center) do j=1,p{ coef1=work(1+(j-1)*2) coef2=work(2+(j-1)*2) if(type==1){ do i=1,n {s(i,j)=coef1} } else{ do i=1,n {s(i,j) =coef1+coef2*x(i)} } coef(1+(j-1)*2)=coef1 coef(2+(j-1)*2)=coef2 } } else{ type=3 gcv=gcv1 } return end subroutine psspl2(x,n,p,knot,nk,xrange,coef,coefl,s,order,type) implicit double precision(a-h,o-z) #make predictions from a fitted smoothing spline double precision x(n),knot(nk+4),xrange(2),coef(nk,p),coefl(2,1),s(n,p) integer n,p,nk,order, type double precision ytemp switch(type){ case 1:{ do j=1,p{ if(order>=1){ytemp=0d0} else {ytemp=coefl(1,j)} do i=1,n {s(i,j)=ytemp} } } case 2:{ if(order>=1){ do j=1,p{ if(order==1){ytemp=coefl(2,j)} else {ytemp=0d0} do i =1,n {s(i,j)=ytemp} } } else{ do j=1,p{ do i=1,n {s(i,j)=coefl(1,j)+coefl(2,j)*x(i)} } } } case 3: { call psspl(x,n,p,knot,nk,xrange,coef,s,order) } } return end subroutine psspl(x,n,p,knot,nk,xrange,coef,s,order) implicit double precision(a-h,o-z) #make predictions from a fitted smoothing spline, linear or constant double precision x(n),knot(nk+4),xrange(2),coef(nk,p),s(n,p) integer n,p,nk,order double precision xcs,xmin,xdif, endv(2),ends(2),xends(2),stemp double precision bvalue integer where if(order>2|order<0)return xdif=xrange(2)-xrange(1) xmin=xrange(1) xends(1)=0d0 xends(2)=1d0 do j=1,p{ if(order==0){ endv(1)=bvalue(knot,coef(1,j),nk,4,0d0,0) endv(2)=bvalue(knot,coef(1,j),nk,4,1d0,0) } if(order<=1){ ends(1)=bvalue(knot,coef(1,j),nk,4,0d0,1) ends(2)=bvalue(knot,coef(1,j),nk,4,1d0,1) } do i=1,n{ xcs=(x(i)-xmin)/xdif where=0 if(xcs<0d0){where=1} if(xcs>1d0){where=2} if(where>0){#beyond extreme knots switch(order){ case 0: stemp=endv(where)+ (xcs-xends(where))*ends(where) case 1: stemp=ends(where) case 2: stemp=0d0 } } else {stemp=bvalue(knot,coef(1,j),nk,4,xcs,order)} if(order>0){s(i,j)=stemp/(xdif**dble(order))} else s(i,j)=stemp } } return end mda/inst/ratfor/tmatch.r0000644000176200001440000000123613653663715014751 0ustar liggesuserssubroutine pack(n,p,match,x,xbar) integer n,p,match(n) double precision x(n),xbar(n) do i=1,p xbar(i)=0e0 do i=1,n xbar(match(i))=xbar(match(i))+x(i) return end subroutine suff(n,p,match,x,y,w,xbar,ybar,wbar,work) integer n,p,match(n) double precision x(n),xbar(n),y(n),ybar(n),w(n),wbar(n),work(n) call pack(n,p,match,w,wbar) do i=1,n xbar(match(i))=x(i) do i=1,n work(i)=y(i)*w(i) call pack(n,p,match,work,ybar) do i=1,p{ if(wbar(i)>0e0) ybar(i)=ybar(i)/wbar(i) else ybar(i)=0e0 } return end subroutine unpack(n,p,match,xbar,x) integer n,p, match(n) double precision x(n),xbar(p+1) if(p