From 0d991f5251dc6978e4ce6797a4d7f876751b381c Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Wed, 4 Apr 2012 18:45:53 +0000 Subject: [PATCH] Removed some obsolete documentation --- doc/doxygen/Cantera.txt | 11 +-- doc/doxygen/banner4.jpg | Bin 29454 -> 0 bytes doc/doxygen/bindings.txt | 169 ------------------------------------ doc/doxygen/buildcygwin.txt | 38 -------- doc/doxygen/ctnew.txt | 27 ------ doc/doxygen/demo1.cpp | 107 ----------------------- doc/doxygen/edemo.cpp | 17 ---- doc/doxygen/ex1.cpp | 9 -- doc/doxygen/except.cpp | 24 ----- doc/doxygen/exceptions.txt | 29 ------- doc/doxygen/initthermo.txt | 26 ------ doc/doxygen/numarray.txt | 61 ------------- doc/doxygen/transport.txt | 23 ----- 13 files changed, 1 insertion(+), 540 deletions(-) delete mode 100644 doc/doxygen/banner4.jpg delete mode 100644 doc/doxygen/bindings.txt delete mode 100644 doc/doxygen/buildcygwin.txt delete mode 100644 doc/doxygen/ctnew.txt delete mode 100644 doc/doxygen/demo1.cpp delete mode 100644 doc/doxygen/edemo.cpp delete mode 100644 doc/doxygen/ex1.cpp delete mode 100644 doc/doxygen/except.cpp delete mode 100644 doc/doxygen/exceptions.txt delete mode 100644 doc/doxygen/initthermo.txt delete mode 100644 doc/doxygen/numarray.txt delete mode 100644 doc/doxygen/transport.txt diff --git a/doc/doxygen/Cantera.txt b/doc/doxygen/Cantera.txt index 7964674c4..470aa6194 100644 --- a/doc/doxygen/Cantera.txt +++ b/doc/doxygen/Cantera.txt @@ -6,17 +6,8 @@ the menu at the top to view detailed documentation of the code.

*/ diff --git a/doc/doxygen/banner4.jpg b/doc/doxygen/banner4.jpg deleted file mode 100644 index a234de06f219982f627a31c2b3c9820a4e3d9121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29454 zcmbTdWmFtZ6fHV1XhKLJ5QZQ@2A2e%!6mr6OK=Z^y9NSeuz|sYy9Rf6C%8Kdp5Vcf z%XjZx_pbGRz4xlSe|2@QvsZVW+I9A>e+&OM0I%evWTgOTXlMYLrvvbB86W`wqND$J zJ~fP|6B7p$69WVD88$W+4&F07yywrJKYxKw`052d0siynuim^Ocuho1OpN!E1oVao zL`XzT^xsR+fKSh0VB%t8;u5`h{(|WLbNkl`Aix2HpxXk`XaML0Xg~tAf4zWr000{1 zQ?&mD{J$F-`csTp*f_Y)oxb@dI6 zP0igsy?y-ygG0kp(=)Sk^9zehn_JsEyL+hpgTu4)i_5F)n?JXA|KUOd0RI=P|AXxR zfs5b?7di$85Ci)^TxjSXPZy8?1CyEqi%?7z`xERn4QCJzk$7BoRTnNTm)dV)Q|F)0 z-hjC`>CXOx_CJyRzXKNh{|njw0rr1!EdlU=XipyxNB|H4tew5+te-s%>+k{;1OEf0U*u7vSJy!ev=J%7 z3K@P}kIjHZb7?a~k%~!?Nmx;M6|W{RJilqe{K}At8gsh1wKh8uU=tw7G83rpEE*(w zeN)X9t6WG+tgkcGUx6;yMFn(!^{F8myQm+xl*E0_tt=~BAold#ajb1cii4n2$1hR! z8?o+(R;xh3kkHqQF~%03gT-vI^S|fpW8^1^iFX#LWDCq())I8LL8^3Ah_*SixIRwF zaDpBxUK)32{FG-GCy$%-@qmu;9==q3i6%MA{`D|NuV+O4?yh1FuII-4$eX426r^)0Ui&>l-RFFFfhxdyPjKoyf zOsy%iwZewjZ!|R6y>{>iew42gu0dV5-e^k41uRt}2Q7sbyF zeg6R}JBO!H_v9C&6{k8R_U%(xqG(DG@_zvSG3|?x>X`41z(W6~yLsa+2EUrjEJlx-vCzv=@>vNCg{TS0R-Lwc^K2-? zsfD#&>W4DrKM1^!M#Z`_zep9xXWP8K|Gv5qx(&P$)NK zYR1H484M~KR(c_jT#|Ka{2otOwdGICKY-lybPk$fKQ$u9DxGo-sdh-xlF&^4-c&oa*$DmEp~81rJb4YD=wTE}8*?$CSLvIh zWxd6GnvCBP!IY6QP;S|_s1q(AfA^qJtVysPRiDXGpKa81G-h|e8#m@!F>a70kWC8+ z8h4retC=uJfn$=bUE_N6>#`zV46$WLql+w02xaYR>;$k&gD68%mkGed_XUk9km+W| zKaoT>2EB1v(mIqY>>S7;p%0!kMMkgYk(D1-PME{s>c=-{r3m9>?wXfxDL8 zStsGKgL`eeGDDWmCPy*^_ebRrMdCScYbgODO`31YZ`n?ZD9=s5-=JZ)s73k z*Bqk(S2x^)=Q(@(Jh+WlF+x{3(%;F=MDGhQAQ3OMC>ke>`b#^fhOWaipcvGV10Vpq z|Mj_dtddK}AGeb0a_I!evV450vZSj=e~S(}9uiJ!YU8MsTiE1T%(-2RB=WNn=p?qS z2iFvz#C;+S8`?QhcrTLq8KWr3NgIbFo&2wHl+#^)Ps)rw#hG|ZxOr3pAq?@FcG5+E z?w$=(QeSS>+oEnq(TQ>`jrvU!tBAvIeA1MR`>ojQ2Zfz|(N=4TIwY_7&%o{jG- zZoquwN&0&W#IK~A;`?+K-%eOqC+f41ZQu1w>QZlFGU1-qk}R-fW4lA*NKvy`s*vSx z+~ko4{FZF_a&FIJ^<+E>Mkr&Jiecj+^jlOwJ=%YioVWyMRL>6aF4 zM*jer>fUOh@pfwgQ_~Xkr+c~u@uPIk?wr@#XFP^CGCC&X20fYXrVcWKN<$&_tbc!@Pr=?{GPFC>OcF0-^|nB+uyn zp{7}9h|j30Q*N5_iJd0ZF9zhSLu{I|)KfTJuIxsXlW(*Q8*=rOL^Z^*BNy`` zg~m(d2>lHgHYi=jnRyy5P0IGC;iOu8ti&;wdpYwSG2-POo|iOf%GNh|V&)0#hC1dU zE2yBze2i~+n+RF)(qLZMz@A2n0Ul==c6NGG9h&GS-xuxe{{UiRZ28>>Vg<5)Cz{+X zk^#ypoc_qU5@99nQhuV;s0PcLcQis(>2l*vd=v`<)1U`i0hSX%-7@t~g-{$DQnaIt zuSE}~yr(x4_k}OwFHBH%yf&ioIHxq*&rVkG>n4;!5Houk?B%qu%Q!zu z5J>c4Cs^1KRj2+6d?Hxy-HyaYI+@IoV(|ja zLFv)660)D^Hw&7=m@vxvV(Iq|((%q_Lm^F4r+#=e-wO&V64wG|qguEP%@iX{t+PL> zzJ`i}OH6h-67z;v5as{(Ug##e9^ ztkf>0Swm|nFcH*KB#AD8Tn!e*hM>~jOGth%>nnmeMrgy6kz`_|`(g(naWgRNja@Y%(%9dqoL_>&OQKgQ~UXCQUPrK$D5qGU}%attvJXBt8_H#tr>718j99Mi* zsx{O~sC`tBZy9Kj$zi*140;9yrXv)kG!^Wf`xW4>_l+pwMve`;fvqYW z4~|ey{5_7KSSZ8&ETiGBs(b%;eiJK^;es-vTuVhA=5NUA(G&ZhB+(2Qp<0B@CkAN2 z02BjxY9trgn`pyouJe{8?(H`RIO==Mf%sk&OjD$0QMqB#>NnviP;Ls(uw1p4_>%rV zfJJZI>A1^)V_Se;syxgo?3H`)YCyjH^B>_U*C|zDOu-`0Dq$=%SmeA9==`wxJ8hvS znr-1Fr+vtGPe;3=ke2N9+7UvbWOKHf|2=K=Q_={anZv@A_o}Nnb&qL$fVr&0r-3JS zg08y?2OZyuD`sZy$6iU3j^)^i>l0SJr`O#006a3i!hi!H!qK|pSq ze1FHULW-&;h}^0$^xLIjF^f;j?xOp$SH+GMO9GHzRh#d|F!kM1 z2LSy$r@_Gq)sPuYwL&JNo@xQ~gvMN(L5)a#%Llv8A`lvI2WII4XH0LR zeaP_nY)1aG_i3qm9X;8t%?s0s0s?BP9(9uCT9WCO_=VJjdk&Rl|#DBwm`OnN51l)yDM`dn2>1%8wWG#n&bN;AH)SxixW8c=fF%-wHmC5O18pnZZRQVr4J# z8flu>aQkA0N5IbW#PJ5=J_Ii@cc4v&heS(Lw%Ac0yGzAUD0Sq7g=v)uT-G$MYjo)WVxN?vG0Kn;D#m!G7 zicH2G8#YJ3r5ch}Qi#Tnx%%<9)BVl0c(eHyYuEW#6Io)LBsbF0xdQ!~XHVRAlJr{} z&=rGs(@W~7Z!WrS#-w?Mm%rfTQF@vopncA=kO@OK!4jtaSM9l{;5bt83Yl#l@EF9L zv8!A*gznXj>u9%|cUnSzh`p{%cge_6wfcpT8u1!&F<+V+HuVUyGjl-bGRFG{MMLP$HWiX2d$Xz&jNJ3q{Z#)aDsg~;2h zKT|RZ{z|sQG|iXN$CKT-q!57V886tlV1ZhlzY+|3nrqP(Ku)z1(oI$@U&9Jk=ttL2 zkhSqQyZ&(I0QBe4!(v(55#mK87r41})hFjCZy5Fd4Wb@FAxrK*%cg}%e z4UVJ86pe37S|56qzRN(G7JbKKG}1viX-ZL!mT2l^=Oww2yKUI72h9{_y47@N=9m+l zz-5wTQ1uNq#jPN|t>1Iyx~hf?2X@RMZ2Q1s)fQm1RKT}e^*a5C<0+;sV@{B+Mv_@u z5@_d!9CftRdYx`HG@tuxXM*_+ye*yQ!dpa2qVNdU&5R{{4jfp#AnVALSuSEYb28QK zR{veGYpJ3zI9K>JGLu;-u#b}RrEu0+FIA%jTy98sgRE#k;wbeX z`mIQ>H(h!AcE@3r{IdJpx`$d_c~?D+fdf0%Z~jf(2vJxtay=rk1Ep^HgKRr3-S`=<15f6tuK_4+)i@TfMX!AQH3evZY@JqC+ zZ1o`yKk=$hR5lQ~R54OVq1*8Tb2(o=?vFXVOAig#T7d;MI{92EH#Jy(SI9Pw-NzXh zVw!L);IXvS?qUF&feP|1+V_SIN>?&|I=*6+fyTlMxI!|G((h+dGcw|{YufPiI9f~b zUX4OT3^dDMDn#Ea+XxPDdIefIwTRL}Ac7lnJMHf{^7h3tv_y+p5x_(g>Gtn27bV}C zwkyHIDBcWEGxUQbKsJ|QT+b7!-m4&+7D&b(>Y2Y|-X*;S=xsISeZK3=YT!vho*7q;C zsL`|_%q3tic*(*z=@@m5VxojY#1$K`EE z%b0Nj;}exlkI8pc)l<$Jvw^`}SX&~VzZE8-mSMOMMvi$XDREyP!!!{&x1Sm$AN>p1 zle~jZsL%a%!3!XS48~S-kE0rWH2t%M<)*)%)fevPc>>(8^_peh=AGaWR?8y3Ae4SN zdjO9Ng};@uo#d?a)jDFrhOkq|+h)}3zrJ~&lCQ=hA)+*U`U&Bg0dVuHg0>LPiyl6nQrToNE0N+)Ie7sy(2gduirHH^ zY-|ph!m05Sf*0zIeiRNXUF@cd$>J znRo`3)|Pt$7FjS-1r7TGLo+zFAS$;< zX1j8sI>u41B#s*NFm9+sOU&dAxmE&iH~lKj2^$Cm8NNBXQ|o#L%JWS8aGX`ce6rf_ z>~mE~w#3-dXYYky{jHU|YD756%zR4UV1R$nAUvNsC^jUjgm>fm;YeAsM!9B1zmKJi z$!SnGvO^S&Dv%%UJu_xf-Fv{Xw)QC&(ytxsIU&~141P7?oW)FgS=`NFv2VNYbgk2j9JMaGBgDeTP(SnUnA0rrneEZNScw zTH@q)##(uKq}68_ z@><>@VBpd;pFxQh5g)*B-r&^%xpAg)aNVKH)ODPV zvd8rBo!%o7dZy8LF8$%(TKdG5gQ-KO zbW-(_tY!XNX5fE-t13gvn7rhj*Zp|!!-hi##rn}E=G!c--zF_?ePCtWjbL!GYJfZl zDcUa?;a+{w;T?E4w)X+UBv9Ju<(ap3n(nw_sji1$s|LzTlI8uVynDuTv!>R*=YR8G zGt4_~UM*jtmTK~+5qAra0QP`Pb3Bc>3l3&)S8Tz50Pp7OMOb0-qGnbs(cnq{^gyK^ z%1wrPlFjsdNrF5r5=#*A654s$r$kvY%QpU&I6dFGRJJC~hg7n5s#c*0VZRep_f@s_ zBDF26U;zGKo9l2-9N8OT?3E6O_0L#pan zDzuoye(<~z{%$>8wprVtlO4d#i)U)F54&)k82RHp`^^x)pCxKE>|C7JzERU$k|8Q9 z8fSobr=KX}4(#cS1PNt?@y3@+%@e*K!XfxfRWG{?-~K&R{z6J)h8rbAV6K})g(4NC z#CB0#(e24MvMmL-8lNHosp>Bb zo(|b%t9*1?{0^UwhW<*wbF-&5JFnmRfD73skIvYtec&OKcg4li$)!<1yT!%uZ@;R< zO0(mBHb}>cD18%;c`;710-LHB!U(qEd=C8H@qywZNKc;V)=LXzXrPy1D4bIsTd(Dr zlGn%%+%dBn1PG^}7~h{3+4vI$8-o2RNZ;&+II73~4C;sdnvc^iCnzs;J|Fx=&&!PIP-4Z^e_LekrPre5b#eIAZ# zo5Al?*NK<1nWWP!eTY73c3(^xj$udGqgl_q5#kzr=y;YdbU*&l8B=rTUMjDSsKiHK)-E7U>3r3~w`@vE2cY1i3@mVdS$v?- zq;6M$^rEwX2n=GjeH~_Eds=!}g-cQ7*<%RCq`_T_%HD2{hUsDsy0a5kOA7@ugi?gs zjWAaFWLGP`_sNGx=}X#BTar3V|Vb&ZJ4eGpv>l zhU0-xYklX79uxm1kwYCeVCDzrH)1y_UKG(H&kn-ax_pLF7J_z#WU_|jdm)Z@Zmnai z_7pp}$QDL&LjI7Ujk!GjRQ=X5-i7#GsLOPmMqk6?)@Zk^rU5l9COK%_Sy?Y~OC4A@ zT2$TjW}TnMl)pMqlqy)#jM015t zVyb5J6ngKO)P(I>SLmD?2Hw(A>h1af4Qv5@fte%1P;&70hQGZsZ;^t?Jj~ zOvaLjpO0Kt_5VcL2)3A6HsC9-tvR{GFIN)3xaw6~9%BM>T7{k*#N^AD4F}X$nkD!j zQbK5lK<(!hX?L*oRoX>6QorFXeL?o_*=H%D3>8N}UIS%+|;LjC;UIT?Za)#_OZmQgzjgg`fRi>RqEO7|jfqFY}fp~HSQ5B~$B1&=(%7uYHrpbG{ z-JtoML(yY_%&Eq0CMjt_D@aEt%}il!FeE2-Q>EXq$yC7Q=qNH{KnKZAa`Ku4&ZM@1 z{s$YfI$v2_h6Pl8R{Dl`?9aZ3j_;Y6C z*uL=x+Jb^%0$;CZMAdS4iCQS^49e8GWfdunR8M zT%=?_$R~b24SfrZDb)?NADW9nG)Z_{i(E9 zk(c9Hj+Caq;-A$LWJxvmxcvK3@1XOUDw`W^!tb%rkrRjlz$auutDq`(*(UKm zD=wvnIe7>p(AjHyshO792@$fIb}?Nr^XAx)b5GuZ-P#m6HS-{u9t2!4v)H%9KnBib)?tqTF$K?vqSzVoI-TKxWBrR ztT5+MNl=MYj;+1o=Fre-T4s!=RUFFKD4-96?kn#@^P8eh>}mAv#SxpL>vcV+&>=yL z&a3h?8Ja}U7J(cXu=|~iR1n1w)UW75NmJV@yLuzTHVxopTArtD#1`~#J4!^j(Z~OE zbWu$$Rh6*w;9=7>i8E_ytk2MPQ*o%ek=-%Jvzl&mi1^6M2*-^Z!Gae!dAy#9+4Dzs z+uS(m2}TtSni+E_;1zAuY!^tA`$X=~$>ujTGYKL-26DDddvV+;8mY|(5p43~9m z)<4SjZZ09(m#>ZAx5~HCsy8AN!p9ovX5`-zT~bubfXMH(;`iO}ytyP^CebpfhJo=e z`<1bUj>OovBRgfCHylKDP%%@vhT_jRIH*j>Y%Iuu$3B0FQT(&EJbrN~{wwoxJGy1l zcI0QP&tY22^c?5)N{|hY0b_4PaUL$|YKO>iG(jxdxB-e~;FC(L`tePdL92PYNI1c` zljxmyWb~Z@V?t-yH|BG5ftaxYiX?^~eQx(WOsk1GyXvVoO~xu!8ApcEC?!>xW1!Sd z^R6s5wFjjq6xC+m`{|4HwO#m*q*{J8KEK&1+;!rzYxD77ULpADiF=oAxv$T8ZPJ-zH~k?XMtsc%LJV z4DZ}0=8X8~+jzLoQ%cBt-OxQQcXy*&+wAIfs_|I>m(H2f+sBW^qsKe1Ie+x8S#@t* zfyN2>2JjE+cgbCXY97qXMQ}co`_p?By!Y6!HNdg7kjshA@0As64^DG#E(SuTPhq6k z?~=UdR6=DI>0Ev~MbjV=a>nylF7@Yh?$%qZE-iZ)7GA<_o~Z11p;jXmHgVY1i43tR zsZfkGu?fXRR=|XC&r*FEc)f6WCA{5+c17mzE3dzWsoM_{czn}+9uBXMO$>jUQe6%C z#!YABX+gX_;uR^4-ZGa<;~uwo5RShP7;Z^GKqGRGbpxpX8Ndor$Fo_SQS!h9bsjCfe zj4&IJJ{U42tAzhj=_PbR=_=i}#Wwow)u9yg66x!GEen-C@>r!W!GtREuEK>?SHvkf zONXy)(X1jR8{%Ppi^~~JcYDn&5hhYLv~gJ7lU_y(sInB2=kd8Y{Kg?^jmht^7^o^TeftCR%p}7fKJbY05{J)G2*0i#nvE znKXvOZR{&ZzmunM8*@3Li#vAY^KMeqL)ll16E&avZILJko+-ZJUWZ#*HLms4y**po z<=n*DC4_81ipsu|0TI^#`GjM;9@g^)$_;$KuLruuzrW?DR~s@ScT{>`CXrG-P67`0 zS$vJUj|Z!nzprfkCrU~LJaIUdEQHEteScP<5^g6$yWM98&4RR*;qSITeH&I#Y630# zKdx0utbPsmptNbBRM#U`*;{qBxZrOJ>FcjiB<#yLf@aJ6)?vfq;ad{qF?A_)x6v{{ z(mOm2ZS`sgG6kQ%;(1?&jvHw+9!#sRE98+BTuJo?soq!9qah0SLMe@@A7hSB(MSC) z*~VwbPiHAkww^PMwK$L;$9_1U#@;0z#|CX^G)LuiEUK2iq;6osp}qg(DB&IL;c}pf zp9x-)JgHwucq4@-tkN3_?V(&-U#-Yj;*|5?jR9xY#vlE$j&_{7-W>*`eg8BXNhp|r zs-(=gYRjk3t9;dH!8|I<<-BdP^UjHDzCgf5qt+0p8oimpV`rfre9y_zwPSAXkDN7F ziU7yv74Y3g2IqFD!(HYx%k7NHsPmLsH9eV}rAEvB$Xyl;c)^`gChkZKtb^&eI0Lt7 zNw$UimTiYm#~y8Lb#H5meZJXKidN`Mh`3|3JpSZG>n_fw22{t80$X~|)6 z-w0Pf&G5PV+y$)|>vg3dXM7!C2!c(4!&CSeSHSjD_SAj&WKZ%LWTi;j;FWEEMy6w( zjCr%p=(EPfgsy&mRD+U8n|9u$eMRNTuf=*psceotE9;?+p!pDuBe}P2Z#sVC6o=QA z)6d=elO<0pV)TxgzaESYEXgv!ddXoU^!*;MSgc%OzE(g|uhR<)=N5cuUlP zH-fuU1Vt^Ctq8_d7txvqw@CThqaN&dN##rk>VkLDBkQh%;%OVi&f%1PwsbE(n?ZZl z+P)6a=tR&->*)So&W8Z3vb(nH}G)%i4birgKXM3VIBY zUzXfq{;Wl;E$Z>y{@A6vAdL{@BaiMbT@+R_zmoK!-`JfEFe)gIDr&G_m1Y=pG7C2` zYwWr%`9^dm8T4*!2()t|gzazZ<+w!lRU+|rA(35{R*2K)hA*5N)6;~jtE=#YS?H>X zCF91@b6kfL2L;4ymqk zi%>YIf3Hhvpupu$!+riWV}v#<|G8Kv=;83PF$0ngO6GO`X+}A#?#M=O2j%{W=cF%T z?SPci4;0lj#byw4$<*6DNhI?rFlPJ0(X+?&UB(d?MeZNmoE6zeOAAFY2-zehPD*2x zeUf&CXJ!Ja%uiUoUse*kmiqACtu$*kv43A3Eltr^lH>y7159+C^PD(2CeGMh{%8i} zVFI|m_f+2YNtfu4mGn7%;#mE7b`oL+c#W4rIw9g-uTuZBWAJ^nr%^}51WH@2wu!c) z<9E+@X%KxzTL5}yc*?wCD~8$4`H4WA&Xmnt-+8n`QAF~5f`6Gl6~Noyt*T^MJhg9i zyiXV7v?WGJXAbW|w0X#(npERt+qo3as%RtH`z^EPb;NY!(jHO4p_*#&KL0-e?|J{P zS2kGq*feE&3+bQZ&h{7~%bj36e@%rXvA4y>AE;h17>=!M*ZVOdPGJr9O{O^gYu|;z;>=^aMs5egaS9B&6eN$g5cFbdKSxth?cD(n+HdKFDeh2V9&?cCs9**;{U*WGas zb9V`EPB_Y(YG&i_CbLF}iU*7KNF#<2`cxMooezwq?<|zpR)!l+4@yt@)LM9*B*>3{ zzfmh?g6^=tRLE$2@G3fX8-ZHYh520=m`Kq*5BxKP5|LYPZmZ$FSdr;l!&yuaAf~FK z5Fz(t37NTqR*D&B4DiZDo_nOFstar`?5RvF?O1NPgx+JOsW3Z9lPPgSpbY{PLvb?MAdb z>Yo(Pfh`P`psi9FxI=(f!zjk7eY6x7q$tIrS_jtV5qva6A$oO9;WJ%`P0A#BG(UQf zEwQMdsCRYocCHj``N^3+HamXk_FMYZ5EWx5R4{eEuGY>_cn(T&aysla`C@U@k$=}E z8tt-N`H6!Q*ahAQIBTX#u@R6C9sMyA8O~~|RmGEy07q#AGwg$-n*+>6m6lf5XWl zqZ7IqH*+Jn*Ia7nnZgE+WF3wx?rGoM=O=W6jKg#X64P#!Y?0JolNw_LWr)dxM^$UW zex2woX*fx`R4rSc-B)XSOvFVa^DFiA4V76Gv>? zI&ktBe`ur^_k?tHz6-UpF|j#c84?;;qHiRd!30uaL67#uI^QYGSr*lM@aHJ*VZ|0a z%Q+kOGWCJqnVUB44}U;5NaIs-L}|OZbxiyvNBQGrt7R2~?EOhEv&AN$ya{=3HBt>u*eaNfaj1_t;HCEO?(m6$V_8o_@ z1?5qPP|EDYir!YiwaO3s*)oUl9063k$LLO?6tJ1CDmDiiLk`;83SMkWYYPET$aJNX zw>HDvJ7!rHYgqHzl7Oyt`Q0V`@9s5ygAqHA)*c$xNk`wmzaU1OqT}9HaIK1bR^IC* zz#w(_h8%i)M&NIOxM;7E`kU(KGUbuAM{jd-rNmJ{>|*lmc%|kU(@2n&-;aKEJRFRW z#*0HKKY^K8l;{C!(ZD?&H3 zS#v1FoX&ct?79Js5=BdJFkINza2eNd}thw&YaY88+PD(=}Rv zfmgWL(7PCk7`fcyeeckfb0w$z1e!LfV~t! zo2FrxKv|X63Xuuh80(qGeC~Kl)jr6KOQc?gA1vRCeX_$35s+ zZvH_L97X=4q?EOg!*LLFDM*QI;VCPJAb<&)Ylm1KyjW`xgm9tJ|@?`Nk^}Lrm$e?>wJMVTBgCL(UkD>L90Q881z}2Chn!IBwEr=8zES^-`8v z8|yol#U58Ydi~^8SXJjB={qJNeuOi0t9;>Lev$${>7^jXj?1297Idp|Q-6KPaIx_o ze`d|&!)l^%s~fP*xYkB(h#{IT8XY~Zu^0&1Fq>;!7yQNY`OyPXqLmPz6mWh;)!tAa z)|H*)1I}YK!A_Q;4fMvBIntSy!0eqU6x}?<-(7iaZY`$fr{u3RTh5l?oyInz)UG9L zJq?zha2b#o)B6#o%;P)a5edj*1+&YdGG1m8sh1wp%pH#t`z3t#^SJ$1U?aXfta7+X zbD!_cS9OV+s-;}C#IGO`=@#92SDC#XBj@vX4^Wkxs0L+ggx}p=6{+SEvb5SigA=Y; zrCt<{uM17^sw1UG7uDoVlBl;um>8TxVg}YP3$yIJQbt<1K8SD(l0FFpvkRLRpAx$U zu#2#=QW+4~0)w;=YQJ0V$J~qnG{-*7?mnmgO0=Iln< z2y#ix%9;1($d1ZkR}1S6u57M-EU~^D-N7Inl1&>baM1j#=V!AU+2JAyj zI~F}+R%&FVdV(ex)`e$ZNELkZ&#`?`v~2Wb}Iu#%Cl-$;`%fH zUeI}ot2pL0dJ{&-w4l{GP5ntZcQV~7%rl9^^F`~hjuU!@JVAP}wD;i5)w}u?N!Hi5 z3*8i@Aqb@p{F%ee#nb8U-b+mOxG)SgUueA-12i|tQa4*lD(RrNb@t;<%&*lO<^_ZH zqJ>c78q(WA14d#86BI|Rc3KTLY9@L5%0u9^z)#VIv_N20X+MEbZ4@qDVR-oJ_o^^* z*x>dBaH%S@`AS;I$gaZev++TIA^x)o#Rd|8yA@g1C-28QUJf`xzl&Z&Gx%DKOLmwx zLkg}90 z*=sFY@srRQ3^wo^1yd1Q4vB#oD(w5x`Th5dcj)`RpkawNPyDE9`(@U117@TaHUvAab1&y!!P&Rd zgpa1EqC`#J%}%!)DUcWI@H{SV04iv5r`7QQcEPVs{|9Ik>29LKm70?xEQBnLoc#lQ zeOF<~)}HM@epqDXPX;jO#okWsTe{)A{f0|rataK}^iI?1ST8$d`@y?BApTMSM*E&} zpt$(tnGBd&o)*~7F^O7Ut~xPvqdnGlpG7LMBe_qeAHEtKoY?;Kf|KlEx_}H~j;_j% ziq5EMJ_?Ya2G$Is1?IELhYh*|Wy<=*m_Zx{(a3M5MU9I2fsGP_MqC3BA(?TOvD}Cx z&SprF>CUdr`=e7Rl!oAA_Sdx?E?y6Oob9uU5a|{Yrv$%vCC*$yv&rjI?`QpOQNPQU zotuWhcQ>WY&h05o3Hm~Fouo$e-2f<5z^=W_uZ(^CZb&IJ#iLj2R+qM6jX>r#@-O*D z(ZOV#!9T!)ur?W9Ak$N!jD+IIa$RE8ieji~q55Si^kov<{0b!qzbsi_Eao|meazzr zaCZIa0+_rj?%c{rpXE8;W`pm~L_r#vjMgM8@oG72suh{^oh}?{?4LFeLB>VMwFaw6 zjC>ndm~-oiNf;mu7>uMRnRAW%?*R?za_4}e(W-6$W^>Sdtk1l{ond>qX%c}v%q2V_ zPu_`$38cnJT%XyN!C%fa=~&3U8vhRvlsysgmGySHZjs`FU}fP;eFG<}d2d-65P`-} zgaQ+ak`~!N2yyQ#Z01CJBm16yI4W8P9hsbaGJ;ourY1v~eDFuB zbyC6wloC7)bkuStBX<{S)+Rb?HrlN_bslfszt8-wWNeh78NGr>k+<;y&xr$02>qpL zAyZBrrMDw^oc)mfjv5!@&{N>K{a7+R$9=0fLuZBHib3dr0^3|-KKEC-;l#?bmV={s z(a!VV2@t|+)Bg&ww0~ujVQEvk!{>yXrWi?o3hP|^fORTOepz}qy~3MW(AH}W_8U%9 zCD~bOB*$O5Dsi7XGYVl$$o-{xo`NMDvQK4#?ueeM)>)I|ak4#9=tPAqDs{DvcM0y)!?QF1&K8U2TZV50 zk_i7PyLXLI4t<{=Loai)#RFh*!oHZ;)OJJ#3-OPgz@6pk4{#x-xKtP8Pkgn_%SAPz zl6d}1aCk1EtC+F&CxJ~cefz)&uDSh-wmFpf z+ge$?kHe#vJDXR|g)$!rA0j1pwaPm_5O;`{f#T~1^Wg-~!}<8@am<98L@h?%?er&i zwiZtJ3Q@2$(>w|L2Gjlr z2)4zY^4bogH?9{Y0=g$y> zRVrIFlDIw_rekx?b6n~fM6XHzLBT}eMWG{zQfbrhO<~Cx4%QUo+Quv53{fnOaj~br zl8tM^6a0y$)g=xZ17j`ADm=t4ys;~6jbNvZ9|}##UQSY=#K#hn!gM!vAk*J-2$vma z_x@{$)|;f&D@)qo66`F`9P13l!2A7DuPl5rOWs{7{BakDSo$BJqAn|KxN3Dbg%Wb} zPe zpKmOuQFSlgxyqYqimcd_5!j^lv|X>$?*rtyb^=+-lLJ$<|5Wy9Iko6#F*V#bLu~nv zW{X|xu@*X~@bwxRr06peY^JX18R6l?W)k;vC6><~SkKjueO@8X=Im7$D)}}3gS+LB zQx@tew}`wwNzyAAZB}Ol-pJ=s<(bmp*YGwwga3Dy|cD=zY;LJs&xRlwlP9 z95?$F$*dAzROdrxdqgX>rO@|e=X-8KC=Kv-D~T@)W=%oo@BkTchDLKr*K;T}e`hl& z+g~$UU2i7sR}#29kX#woJyFN04nvpRh=tP9RvoAl-MVQ(wo+|!A?1A~iaQbJ;IJi& zcaT#kIZTI8SvV7ev+RZaFD@21z)n@01^~+sbTL9T^GSO%IdFh ze28W*e=STT&h3^N9avt_CBXaMpg(k)d!MDFAlC)^TG|||LwmQe1JP!mzw4Z>z|x=8 zxAMz{Xd&x4Rk6~=T*!cF_hE;&o!Hkw$dC!X6PtfS6 zmjYpY`2PFXkiCip1$vQmDv!W0+fVE}EZ8k^gCsR-iiIR(Y;o*6#{>uM+UQW9(yM1ylo>i zv~LUsdtn)mjB8fvp_qIoRgmqu6kp#N#0v2$%_~x6mh{WN$T)MO;X?tPQ;c6jNuCn` zSBQ|4Ky-V;wql*l>u0`a&g}(#b)Bu~GRa=%=uM|DePJi6#@z0cBp2vapl5-*$(O1_ zJJ-Z`{fv>vlB6o=A9ERiSrlgvMN_PM|0BmSIL^1ax|V0$B?=KY76SvE9zT^#6g9Z{ zRBt=!+qsu-adY;2t@iR;vXWy~QW=#002UZ}=C|dOZLCcI1xkR32Hb);!0k}n#Iii4 zq$B212c{1r^v!dZ+V#hoYLG;wrEQ=(mB8Z}!*%sPrFAH(nnhUYPPx4_T?@}{ zPQb!UF5)xS7(MEiv986bM;j%uSq}s=7uq)VCy#%W3hKVi3nKw-Zp=Xg%#1b($MVH< zQ)$y(5frhdtZ{|iF$edUU85Whe;Vk+N}E?(qtL_7l%3?YU2pmobnQG`M$_xJqf-pxl zN_%CuK2ozmaN9~2kSHiY$hb`Ci&0z-=*YwRz zM@*VlgKfBCV^hNcjQ;?8oDatpZ9E&YD9rb59LJ_^Jl&*p41{XtUk|cB+ZP3-a45MFmclu>r&~u_t=Bye8GtUUH(E)=~q7J$Cxk`W@7;LWW4TNu2N9 zlK4G+ayoUZ_IE1w&koEoNEDvD;2u9ZTS<|l1)^svKjoO*dY)@Z)s&&g*2c1^+#DQ7 z$pO3hN(E8KeslSM^{EZAf_eV{#|QXTh<;RMUF-th%Xe}IC-kRl*DV&c zd>ybn_X<5eW9jQzvT97M6+z@-yOGyFO6#bqRCerX4{1`I7i7O9Zrz^5yDRQlK33b# zPpK#I=Agd2e=;F7uJDqsaG(-KINhA}s)FgFL~`Mj;2LzYe&40J>0DusU=61&~!ce zRCc<2){vXOE?C+p46*VzgMi;o2U>Q6eGE48HOXdtmcs&bfI9K+dH(?GQmr)UxW!#* z>S0<+q#BC4T7IMNbi4U4RtZ^Vw=7DA1&Hhk%JYo+{cBpwP5V3|2_zC6p(Huqo zn-#90_Ri$0V>lV#kPa|SX~U?tmgyGb{hl&JG5+kXdB#Qvo>Ogea72q1aGv0f<^^T@aGvg$tP*x)yqvH8xACF z%3C4X0Afx!$Qc=|?OxW}>i74S<|Zr6#&(v+Y!TZcxu~dnPHQ_a>-y?&({$xmOWXSX zyO7+xHp>;kiPT60h1N0v7&rv<@7l2S7|B^A5_zd9%DW*QYo)c)ZXRQ6J@b8xF5$i) z`N88E>5e*9P1c=rZ)`V05)>IISP)MdvEyDlWRJ#+ z&06v+U9rXXiTuK?7{pru{5s~Mbmdv|#oGI#>Qj|wr5A2((YJf3rT*1Ie(R}>pgAQ@ zFne=~j?+ken`D$b$g08EfMEa(J@-1Fa<5 z+;&W)2rojW)+)ddxgcY%ct2mxqKf5iF<*Jd?=RibU)Qho*rh*%^&xS+W{PEzk8Pyn z`ePMKQhzR2w^Ah-R(IMC4gokk@C#!g;MVjWFKfw2G9{@+2@qks=lb***!VDe8i z5$}0hjTn|7Mi>ZLlo*2Gy``t;DPYIfUf3-dY7`~rJp2N@kZ zRl9XCL=jN=o5w6VFVncsYIK@>x=RJPjf3DcWXg!4v7SL3;GRWVHjQtmMKqDSTt}EsTs3KnD>v2>_f7eL?9?wYHw_tBO5DNAj z)E=-2OFkOH{UwX+c&6_Z$olx{iIsE z*k%5?Wu`{UBJa2xSgddNRNxW`>PK9EPHMG>ilCihX=8XDxEqkZ@()1R$vlqSRM%Q% zuBS5Gn`1Ks%D@|H$S``gD(ZNC!R_MBu!u#LP#K2b*YvI1r^vL|$S;PB5}J2=ij!O4 zOd)mOD2zBq-N?=f=cjLRPKMD{B#3~!m!JcT{{UKzZAaQZ(-g@Z`*sq`k&NdAWOwwU z4Mi@enj}9rJ?qc+r7v{nY5k4AA&}d-jv&$xE+g}Dps>z+^zTv|sN!QL zjEcaGUG+au3F>;OL1kLJsz+r;A6?H3ZT0I35xAS#Bz9fABP z)wL$H3oP1m%^#K-*^3p8zq_1cuN82^xmr;NMb2qQXXb|L%Q%F|X&Exeent*3Iq8GP zP1Ng4m@cGf*pW0q2{#OEBzlfMxHT)xm#{*%=_GNSI8dyl9jB&8Bc7v*a@xah<~W3r zDf#)v?!U`5Gn`_%TGZ2-D00bb`25QXFsmNra95(?m5)FDZYwugwq~?jc#yQ-w>u;tgg9WJttKC}106KGkL9 zbsc(g4PMba+uZ~No-=r;!B=*CvP)wieuKAaHJ=V!-MThPvh~=w8+|^8uUp&4rL1cV zX&N>+>`{@(#(SQpp48@-J?P|~4=0n(KMJPswB?H*DI-SORsK`ZpTv69&T^X6=Jt}5 zuOf@VZ+k4UzT#tHg3Q2Y=IBRm4Qod%j^+0$QpBuz-Fps{1rDE9aE zr=oIWk&gBmBd&iMV!4gVqNxfvC*1niG@HGSeeQ;aZz+*wX9aQ3%Z_^bdsI?F7_Rui zP(i`<7&)s;6mFs=d`Nj9_4-jXOfs7{0gszKIu4(OYTM;SDWt(IqcUW!eo!z;$jAQx zuB3`4Sr92W9CCWqYgrlPU^jZ45&nD9@01dG$ROaJ2l?W#N%Lw;QoXK8eQK^GV4u7S zPUSf(k;%n#R+p0PWKNroX@n|^Xq~+BN*p_RwB5z0c>K4 zqnz&YkP>jY&PF?Rs@lcy(u(72?~q~>jyjx!+n)ab?NnBJA)m$#cJ4ejNrg4*>(xkTw4)D`$ z`LIxA0nhM^@%UA@wk+%})s=wxRR%_TA4)momoHC4UT#l!rspfE+FaWm@Fb!+4pah8 z(fRw-5a@F}d&{J1K*3^0IN;;cJbx_LQF$~Gv~kHM&p+;#<^sJqI zEfOdqKxUXA1=y84K8v$zdBx58k+HrUGi zna)RkoK~@ep+0(=BKck#eD!osYk$E0nS-TWycf|ii|qvt;Ja{e2jkPNZ_90cJ;9%B zV{QvTt+|iXfzuVAp=mNEqSDPDlL7)aInEA#xFZ=E#w&MGx*svLb#cgcjNlW2fxEX~ zTF(7FsA?wS=GtiF zk;?}gODN7VatQprdR2`pSCR;3JXbAi<3AFniA+r8|l(6^Wv7Mm=o zv(R(zn)6a|s`Rqxa3$>Ow$e+d_5F4zTtSOfiYzpT8?sK^anzsIwzL~rtn8C_mKBL% z7-5X#<>YqYVAWfDa`P;042WG=0`Z&^f_*&&D(gSlG2O=^A2bCKtDzp*N%Qu z!lbhO!byw}%h((d$241BGVdUQ%Z-W`mdU~AB=j}j{iN0J_a2YF;F7 zLuL8o^v`|;L>#W1R-%h{PAJYVG-#||O}j{6n1R%G=z3J^H~XHh9hm^sYBeb6z_h zT`F=_9AdrS>&SJqcEIH>I_w#^310B6P*GX?QFBoEjZvcRJe2%&NMRC@X=8C=2IdOBlT(0Z&F{i(D zzgLddN#tmLZz)L~PTcXvK5zT#rk?jt(ywNgMUkX*`PeWUh$;pLO!LUA5Z`SjCS^AW z;aybc0~y`)!Rv~S?$F;vu#uGHvo}WM9P#hYDCUG(ZGXW=ca74Lvg@wv`q;HJt2MG- zME?M}WfH%cjQ4D0aah;dfA-@%&@l><0KQ|45wvISudY3N)>f@yJ*DV$`J*Hv5zq`_ zSKojudc)72AZ{P`{#Mxv;HV^=a1UH!t+!4pPY z=bD1=!j~~mJ;YP)6B6#v!8tj`0L3!y>8#An8*G{^J+wh^Qy_04dUP580PEI;zOgQ$ zXB_V|R>37Pv~n=o`~p5~arDJ0%A(eivU~oY*K$95O(|2gy8dhaAHUvnepS`7L?%X5 z=jCN1whzC0k!;N#-W!4`}>bt(S}2*J;ZJ0+-%Blwj==k+-(Xt>)RdA*0P;NEf%S2V>$EPCv?1#sb#CfsM_yqIqj5XfIl+0K|{EmC6E&nZyBu0s;ie24CU z0`)lm0PELH6A4suB2Ws2V~{~SpVF&{ZT5VK7F-R^bLumbQ3VQl%c<+Ulb>#DnsvFJ z#x*DHZR91ry}iZwY#5{?8o7;GNBYbDq_CE|sSx5jKtn4&TJ&4%Bk{mSHG0a+JWm z%G$;mTMIXuFjN5jhCcTh8RDj%-b;v@7nzE_N{9A5p84t8rt=x00ZCEN5zu$*>@!g)N>7?bPnmo}<5O`C<^@Zr81(n5 z7(mznBp*`Gb6=LC!zUX~3vwbs1({^V_BcLuDj)5hSY0 zOB0SUoE|{;rXsMAw2029EPDgR5s%2nmvr|;h)kF}qf^tC`MT%n*V?FEN@gM$%-~~b zP!xiB$IXtM`c<8tV~x2}o)^${>sEG^jFw|C&PUCHF`S>)tDSe$(KQEik+RUGis@%* zSWN4@Gev@#>&8g$j+NImh2uqa$m-;DVK_0To7;w&#gq97N;A1h^2Iii{S1!1dsFWP|0(%=MrNp(1D))Y3&n+cO%Rv zAwb6-ooR~!<9Q$)<}s2Fza1+p%KDlvUZip175uWoMI(YnPi~)`SGakV%xQ%O8;cC_ z*nMk8I3$dcvW3VU5DLxJEv3X#36v1yhd2yz)AJtns!HjbQ)*MS$xy5gSSqn#GEdX% z?^W*gU$NWABQm7zGR9E+%&JFq$mvNGk~2o55YG83R0hc%ea}pDQb81Ylu0p_nFP7= z<#M|S1Lfe6#(E#hx+z93?xMYoZ5X@HZ|me>Uuf%Tt=ma0$(CtMkF{e8RmVIG^U2Lm zaiKwYvfQ!qBvoL>R@>$=2Mz7X=s2x5xwSK+H1UQ6fV+V_jC9Y^pLZ%n5APT(To+~l zWp{E3JaRbeTF((RD5&XUuiMr4d+qp{I(597PMsn&fh5|`@-R8$uOsLyGHpUwEj)-P zeaM?fl!1ZcIr;z&O>b&Y!#q~EN+n$w2sDf$P339P(4LyjW*v-k=+qe zB8L&Hwn_H-=CiFRU8fs9pV#O-Ok+8F$*0rMyoe^%-Z>j{!26exfCwWU20Hi6bK0i0 zB>I4~*bpS1Ns{5l!_`S_0gR5k^!KHdHZx@BnTBIbb%0$5IKV z+3V6YTc<-jk@i0>3Oa-doG&J||)Z=g9zP zk_Q|PYehYl!x$1L&N&QS`Y6h6iW^-`}-a(H-NNCtxLhOC8~eQaYbQ&wgv3tS=Ve#af>|HsbX+ zyi2J4j?OsR6FSHW5uKn6bkD7Dv*U5t3M*xTmFdqx$<94%xxbjr8%oi6$Ptvo*z!5Z z^v9)haYT~pHtb;XqtD9$s^tmo%y14!fnaQr%r}+GqiHLMKY|$JT}}CGyGV`zJ2O{ zv^qhVo-uIf$svpG?I)nmH5JieeJiSM+8GyjBrb9nKU!8Q@v4}}VVueR@BaW*ZlQI} zvD(s=orSZv6FlF#bqlu*BH%Y4!h7PJbn*!pZ^5{(jvY4btf6&a?XZ6DBzj}%fGQbu zTep?iF#wWqNI$7H!}WyQ)Z+Tma(bjktpM7c;X;`czCkOT?mfHKQ^RY0aQ0~5IaB5t zK2Qb;_FosiyYSS?@_v!@} zHI_FarDhmO2p|$c$0t8QnzJRW*Ou1{Y>BwJ2XQ$p2;|^&BCsL5yn|OZuIkSWu5bqJ zczFW(?*nK30r^iG0= zdUdTC^w@38*O4SrxRkjE<~ZH*fDSQ^{@rQTx36m~*2xm2ajL|*-GjIcbKl;j`%rff zOB)c}Z3D49^WV9yH;A89aMY<%Q|5otIJ<~$1@*_72%VXmB~^gVyC2D+G`VKiIVG=5nx<)HvKA76TyM4~hbudv_^qbxl#KVPL0#VJX9 zrn1L-(U&UI`qQz%S?HI0p^%vELvoDrVX{3Ge8m3%x+}bn`q)6yhAgBq?kGUdYyvV* z;aOUqm}kGXX&ei9%ex~S6V88_=A>u2TixbM^{_pE@ zS#D-_o=n8MTVie`XE_;R^~N#VHBRE*>S&8BX%gTPMnE!d9P!Q%P;ImF0AE7VUm^d4PGw zLb+4~ZNmPU&1^wwwJ=#%Hh%MrZkzf$e@Bb zBfsHLT^EEoh{onMW@LBT&5V!~cj-!05L|dsecN<#B8N z06LfVZE^t=K4AHnoRBfor7V#mZOJ5K2cF*9{#8a@N;7a`Dp399+<9ZpK>VvfN>*sy z51JV{0|ff^u0;u5TvCjqYmiw{ zlbm}nIK^mvpeu;ZO9O&OOwz9Pa;g*|Vq24({{Wm;*GliXKGCPlm5lo*0w{q%3}@!@ z$I3Y;Kb9)%T}AURKPlQ*0~En*sV4=APKC!Fyc%o;e9hTmD9K+e-6ypP>AguRrmbFkU!5YHUGVnZAU=PpUdAH$G({d@CQ>|y&fPaIje zN#rt@lLW4C3FD{bS8t(7(`gTu<0vzMn$5cNc1I<+`CYNLL@YqUk z*I!NSbQ3{or)l>V@d(+XiLn-U5Zsa1*YmCzrRBu_Sl_*J;YmL)9eF;L(@A-aQsx+< zGCsk-BP6fk_4K8+x06#7MJzJM8BjlY5k(|)$2sF2GtFlTl7ez;O$_Kw;nS40y`9<3 zc~gfGOo~~^B}xtFK8G1U*18xVp4&}RcvxNFw5CQ6fs>35K;U*5^{Eb(1Xpm)F>=r# z3IW7;Q^3g?&wLY6TWNOj$nA+FjnpeIKsw~-sN>)N0IcU$H6m+LylO8`FYEgBFehuc z98Tqz&E!ghYPU?|w;lcKXH2q)=?ir+Sff~_(s#1mXygQmeHyycibmNL@re6Dc4IFqI;t`bH}_XAtu7ic1DTkXBP0R`QZwG0eW13FcDJ@s zwbJATw;`F-@N>se^74CpyjAZDT3kRLdz0kJG0WTeWkJBseqv8n?TXH-hbym1X>Y_+ zl_fT(o)bXm;ooVu~mAaFQSs~KU5X|H@^ydR4;c`2Gdm6=y%QCw# z@83x*P-qmWo`8*`rES3#g#NiL-%6Gmf+SNEZ^H+-aHk-_IZYi9`2 zT-VVZ^Mq)_nLP|icSvROw-QTZ%;dIuX1AfSkNZDPPqS~iS+Ob{2f=QBQhshW^#}E? zhT~4RU7J4YAOMq{pnnPH(z268234FPED0+kz8gGaDh4iloi?T^DB`*-pw0#$|%FvF+eS8rIY&EW)s%9$g+ zSZ0bSd#~%U(JzUAT~NzpQ*uF7AX_sGjNthM=kw;Zd@mzOCa_tHAF#{GIqbAiT{QMb zE+hDI^k12kr@JrOg0TR`;NbPQz*^x=&Y=q8ldTE^K+Xi)mBU{OVLO|?PWx$}v&6=&b{IDJkvS(!qByU4&C zee8cK=sXoXmmg^|$nuiWoVyd--{>f!x5R(DKkKpYVzt6I>G`9ih?TdLfHTPP{wPuQ4K(0qbe#SxS{iTe^mHlmoxtRA z&e|xiLSMjMzp3j>{oWq0^JSTlW3ZA`P_i3$a_TTkZR?+2Pd@bzhUSucB{DlX+nlk_ zB%GQktZJp~Tk|=0qbB>CG5-Lolj;3MOK7005(YyqKRPI{Ivcajmdv5608-(PEz>>v z)fm{Ykg+8BPt?&xZy$%|cT)Ztp{D=>AQ(X_VS9b^QQ!R6Y^RmT7(G7lAIgdfs@ zEB?Bifny|gTghy z4jbkhbI-18E5QE%ys?>>N{f4}|}bpVlK+&6r==buU_r1vwZK*MNKI6H~_ ze6!6{fR@uWw(AWB8prY~@B;7v#Y^R= zkT%h|nU$Lykle=}a8Tf88I} ziYuY~Rx(>ME23kADt4XSM-*8c#KiJ<8Yrb7gxBm7iU7w0fkhRc*+xA^xxgP${OY7! z-mpL3G*L|28!(HDMNz@kx``ccoS^oe@@h!T``_(cgL-IR%*L{4UH2ul~w%((!Lq!#(e})LWf5l08 z6p`5JagxN78Dq~<7~uYblqeF&fDM}$PToguC0W$BOC113TZ0%-BQg?D4hhet7ZAth&f6DuX4Zc=* kNxQE@jvyk(v;o((X+;tkkd#t(j?__IwKhk)Rl6hq*<%Be-v9sr diff --git a/doc/doxygen/bindings.txt b/doc/doxygen/bindings.txt deleted file mode 100644 index 7228bff40..000000000 --- a/doc/doxygen/bindings.txt +++ /dev/null @@ -1,169 +0,0 @@ -namespace Cantera { -/** - -\page writebindings Writing Python and MATLAB Bindings for your C++ Cantera Extensions - -\section bindintro Introduction - -Suppose you have developed some useful extensions to %Cantera for a particular application. Your code probably consists of a library of C++ classes and functions, and one or more C++ application programs that use the library. Since you are the developer of the library, you are most likely comfortable working in C++, but even so, for solving problems quickly you may wish you could knock out a short Python script or MATLAB m-file, instead of having to write, compile, and link a C++ driver program every time. Or perhaps you are happy to work in C++, but you have shown your work to others, and now they want to use your extensions too, but they are not C++ programmers. - -Since %Cantera provides bindings for Python, MATLAB, and Fortran, you can create interfaces for your library by following the same procedures used for the rest of %Cantera. Here we'll describe step-by-step how to do this. - - -\section notools Why not use automated tools? - -Before we start, we should say upfront that this process is a bit involved, and is not automated. The main reason for the complexity is that %Cantera supports multiple user environments. If we only wanted to generate Python bindings for C++ classes, we could use SWIG (http://www.swig.org), which reads in a C++ class definition, and writes out a corresponding Python "wrapper" class and C++ interfacing code so that the methods of the Python class invoke those of the C++ class. - -There are two problems with using SWIG, however. The first is that while SWIG supports multiple output languages, MATLAB and Fortran 90 are not among them. The second problem is that the SWIG-generated Python classes function (by design) very much like the C++ classes. They do not take advantage of things you can do in Python that are not possible in C++. - -For example, %Cantera classes that represent phases of matter have a method called getMoleFractions that can be used like this: - - \verbatim - ThermoPhase* gas = importPhase("gas.cti"); - ... - int nsp = gas.nSpecies(); - double x[nsp]; - gas.getMoleFractions(x); \endverbatim - -Since C++ cannot return arrays as return values, the array x must first be created with an appropriate size, and then the method gtMoleFractions is called to write the mole fraction values into x. Mole fraction values are written to the aray for all species, in the order in which they were declared in the input file. If only selected values are desired, several lines of additional code would be required to find and select the desired species: - - \verbatim - int i_H2 = has.speciesIndex("H2"); - int i_CO = has.speciesIndex("CO"); - int i_CH3 = has.speciesIndex("CH3") - double xh2 = x[i_H2]; - double xco = x[i_CO]; - double xch3 = x[i_CH3]; \endverbatim - -But in Python, this can all be done much more compactly: - - \verbatim -gas = importPhase("gas.cti") -... -x = gas.moleFractions(["H2", "CO", "CH3"]) - \endverbatim - -In the Python class, there is a method moleFractions that returns an array of mole fractions, so there is no need to manually allocate the array as in C++ - Python takes care of the memory allocation, and deletes it when it is no longer used. The moleFractions method takes an optional argument that is a list of species names, in which case the array returned contains mole fractions for just those species, in the order listed. - -This example illustrates why %Cantera Python classes are not copies of the underlying C++ class. Instead, they are designed to operate in a way that uses features of Python to enhance usability. This means that the task of writing the interfacing code is more complex, however, since it requires though and judgement, which automated tools are not very good at. - - -\section binexample An Example - - -To see how this works, consider the class Droplet, shown below, that models a single evaporating droplet. This class is intentionally simplified for use as an example, but all of the essential features are the same as for more complex classes. - - \verbatim -#ifndef DROPLET_H -#define DROPLET_H - -// parameters taken from Example 3.2, p. 103, in "An Introduction to -// Combustion" by S.R. Turns - -namespace DropletNamespace { - - const double Dab_0 = 8.1e-6; // m2/s - const double Tboil = 489.5; // - const double molWt = 170.337; - const double hfg = 2.56e5; // J/kg - const double rho_vapor = 0.4267; - const double rho_liquid = 749.0; - - class Droplet { - public: - - Droplet(double D=-1.0, double T=300.0) : m_diam(D), - m_temp(T), - m_yinf(0.0) {} - virtual ~Droplet() {} - - void setTemperature(double T) { m_temp = T; } - void setYinf(double yinf = 0.0) { m_yinf = yinf; } - - double diam() const { return m_diam; } - double mass() const { return rho_liquidPi*m_diam*m_diam*m_diam/6.0} - void evaporate(double time) { - if (m_diam > 0.0) { - double d2 = m_diam*m_diam - evapConstant*time; - if (d2 < 0.0) m_diam = 0.0; - else m_diam = sqrt(d2); - } - } - - double evapRate() const { - return 4.0*Pi*rho_vapor*Dab()*log(1.0+B()); - } - - double B() const { - double ys = surfaceMassFraction(); - return (ys - m_yinf)/(1.0 - ys); - } - double surfaceMassFraction() const { - double ps = Psat(); - return ps*molWt/(ps*molWt + (OneAtm - ps)*28.014); - } - double Psat() const { return OneAtm*exp(-hfg*molWt* - (1.0/m_temp - 1.0/Tboil)/GasConstant); } - double evapConstant() const { return (8.0*rho_vapor*Dab()/rho_liquid) - *log(1.0 + B());} - double lifetime() const { return m_diam*m_diam/evapConstant();} - - protected: - - double Dab() { return Dab_0*pow(800.0/399.0, 1.5); } - - double m_diam, m_temp, m_yinf; - - }; -} -#endif -\endverbatim - - - -We would like to write bindings for Python, MATLAB, and Fortran,so that we can do thigs like this: - -\verbatim -class Spray: - - def __init__(self): - self._drops = [] - - def addDroplet(self, d): - self._drops.append(d) - - def evaporate(self, time): - for d in self._drops: - d.evaporate(time) - - def mass(self): - m = 0.0 - for d in self._drops: - m += d.mass() - - def d32(self): - sumd3 = 0.0 - sumd2 = 0.0 - for drop in self._drops: - d = drop.diam() - sumd3 += d*d*d - sumd2 += d*d - return sumd3/sumd2 - - -dbar = 1.0e-4 -sigma = 1.0e-5 -cloud = [] -for i in range(20): - d = random.gauss(dbar, sigma) - d = Droplet(d, T) - cloud.append(d) - print T, d.lifetime() -\endverbatim - -*/ -} - - - - diff --git a/doc/doxygen/buildcygwin.txt b/doc/doxygen/buildcygwin.txt deleted file mode 100644 index be1ce7314..000000000 --- a/doc/doxygen/buildcygwin.txt +++ /dev/null @@ -1,38 +0,0 @@ -namespace cantera { - -/** - -\page buildcygwin Building Cantera on a Windows PC with cygwin - - -\section whatcygwin What is cygwin? - -Cygwin is a collection of programs that run under MS-Windows and -provide a unix-like environment, including all of the gnu utilities -and compilers, as well as X11R6 graphics. You can get it here: -http://www.cygwin.com. - - -\section notescygwin A few things to note - - -%Cantera can be built with cygwin in much the same way it is built on any other unix-like platform. You can have on the same machine a Windows %Cantera installation, and a separate cygwin %Cantera installation. These are stored in different places on your disk, and don't conflict with one another. - - - Required components. The cygwin installer installs only a very basic set of utilities by default. To build %Cantera, you need at a minimum gcc, g++, python, make, and bash. I would suggest getting a good editor too, like xemacs. All of these may be installed by simply checking the appropriate boxes in the cygwin network installer. (While you're at it, you might as well get everything. If you have a fast network connection and a reasonable-size disk, you can have a complete unix-like environment up and running in just a few minutes.) - - - About Python. Note that even if you have Python installed on your system for use from Windows, you need to separately install Python for cygwin from the cygwin installer script. Python for Windows is built with Microsoft Visual C++ (not compatible with GNU g++), and expects path names to be "Windows-style", (C:\\PYTHON24\\PYTHON.EXE) instead of "unix-style" (/usr/local/python). Also, the %Cantera Python package under Windows builds as a Windows DLL, and under cygwin as a unix-like shared library (.so). As a result, your Windows Python is not compatible with cygwin, which is why you need to install a separate Python for use in cygwin. Note that installing python for cygwin does not in any way affect your Windows Python installation, and visa-versa: they are completely separate, and don't even know if the other one is present or not. If you install the %Cantera Python package using cygwin, it will be installed only on the cygwin Python, not on the Windows Python (and visa versa). So all this means is that you need to install Python, %Cantera, and everything else twice, assuming you want to use %Cantera both from Windows and cygwin. - - - MATLAB. There is no MATLAB version for cygwin, and the Windows - version is not compatible with cygwin. So if you want to use - MATLAB with %Cantera, you should build %Cantera under Windows, - linux, or some other OS for which a version of MATLAB exists. - . - -Other than these points, the %Cantera build procedure under cygwin is essentially just like that on any other unix-like platform. - -\see \ref cantera-build - - -*/ - -} diff --git a/doc/doxygen/ctnew.txt b/doc/doxygen/ctnew.txt deleted file mode 100644 index 575e14793..000000000 --- a/doc/doxygen/ctnew.txt +++ /dev/null @@ -1,27 +0,0 @@ -/** - -\page cxx-ctnew Compiling and Linking your C++ Program - -\section cxx-demo Building the C++ demo program - -When you installed Cantera, a script named "ctnew" was added to the -bin directory within the Cantera installation directory. This script -generates a demo C++ program and a Makefile to build it that is -already configured correctly for your system. If you have run setup_cantera, then the bin directory should be on your PATH, so you can just type -\verbatim -ctnew -\endverbatim -After ctnew runs, you will find two new files in the current directory: demo.cpp and demo.mak. To build the demo, type -\verbatim -make -f demo.mak -\endverbatim -To run the demo, type: -\verbatim -./demo -\endverbatim - -\section cxx-app Building your application - -To build your own C++ program, simply replace demo.o in the list of object files near the top of demo.mak with the object files for your application. You may want to rename demo.mak to Makefile or some other name. Now you should be able to simply type "make" to build your application! - -*/ diff --git a/doc/doxygen/demo1.cpp b/doc/doxygen/demo1.cpp deleted file mode 100644 index f54e5ca85..000000000 --- a/doc/doxygen/demo1.cpp +++ /dev/null @@ -1,107 +0,0 @@ -#include "cantera/IdealGasMix.h" // defines class IdealGasMix -#include "cantera/equilibrium.h" // chemical equilibrium -#include "cantera/transport.h" // transport properties - -using namespace Cantera; - -void demoprog() -{ - - // construct a gas mixture object from the specification in - // fileh2o2.cti, which defines a reacting hydrogen/oxygen mixture. - IdealGasMix gas("h2o2.cti","ohmech"); - - // set its state by specifying the temperature, pressure, - // and mole fractions - double temp = 1200.0; - double pres = OneAtm; - gas.setState_TPX(temp, pres, "H2:1, O2:1, AR:2"); - - // Print some thermodynamic properties - - printf("\n\nInitial state:\n\n"); - printf( - "Temperature: %14.5g K\n" - "Pressure: %14.5g Pa\n" - "Density: %14.5g kg/m3\n" - "Molar Enthalpy: %14.5g J/kmol\n" - "Molar Entropy: %14.5g J/kmol-K\n" - "Molar cp: %14.5g J/kmol-K\n", - gas.temperature(), gas.pressure(), gas.density(), - gas.enthalpy_mole(), gas.entropy_mole(), gas.cp_mole()); - - // set the gas to the equilibrium state with the same specific - // enthalpy and pressure - equilibrate(gas,"HP"); - - // Print them again for the new equilibrium state - - printf("\n\nEquilibrium state:\n\n"); - printf( - "Temperature: %14.5g K\n" - "Pressure: %14.5g Pa\n" - "Density: %14.5g kg/m3\n" - "Molar Enthalpy: %14.5g J/kmol\n" - "Molar Entropy: %14.5g J/kmol-K\n" - "Molar cp: %14.5g J/kmol-K\n", - gas.temperature(), gas.pressure(), gas.density(), - gas.enthalpy_mole(), gas.entropy_mole(), gas.cp_mole()); - - - // Reaction information - - int irxns = gas.nReactions(); - double* qf = new double[irxns]; - double* qr = new double[irxns]; - double* q = new double[irxns]; - - // since the gas has been set to an equilibrium state, the forward - // and reverse rates of progress should be equal for all - // reversible reactions, and the net rates should be zero. - // We'll print them to check this. - gas.getFwdRatesOfProgress(qf); - gas.getRevRatesOfProgress(qr); - gas.getNetRatesOfProgress(q); - - printf("\n\n"); - for (int i = 0; i < irxns; i++) { - printf("%30s %14.5g %14.5g %14.5g kmol/m3/s\n", - gas.reactionString(i).c_str(), qf[i], qr[i], q[i]); - } - - - // transport properties - - Transport* tr = newTransportMgr("Mix", &gas, 1); - - printf("\n\nViscosity: %14.5g Pa-s\n", tr->viscosity()); - printf("Thermal conductivity: %14.5g W/m/K\n", tr->thermalConductivity()); - - int nsp = gas.nSpecies(); - double* diff = new double[nsp]; - tr->getMixDiffCoeffs(diff); - int k; - printf("\n\n%20s %26s\n", "Species","Diffusion Coefficient"); - for (k = 0; k < nsp; k++) { - printf("%20s %14.5g m2/s \n", gas.speciesName(k).c_str(), diff[k]); - } - - // clean up - delete qf; - delete qr; - delete q; - delete diff; - delete tr; -} - - - -int main() -{ - try { - demoprog(); - } catch (CanteraError& err) { - std::cout << err.what() << std::endl; - } -} - diff --git a/doc/doxygen/edemo.cpp b/doc/doxygen/edemo.cpp deleted file mode 100644 index e59229541..000000000 --- a/doc/doxygen/edemo.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "cantera/base/ctexceptions.h" - -void demoprog() -{ - // Calls Cantera -} - -int main(int argc, char** argv) -{ - try { - demoprog(); - } catch (Cantera::CanteraError& err) { - std::cout << err.what() << std::endl; - return 1; - } - return 0; -} diff --git a/doc/doxygen/ex1.cpp b/doc/doxygen/ex1.cpp deleted file mode 100644 index 24d3a1feb..000000000 --- a/doc/doxygen/ex1.cpp +++ /dev/null @@ -1,9 +0,0 @@ -#include "cantera/thermo.h" -#include - -int main(int argc, char** argv) -{ - Cantera::ThermoPhase* gas = Cantera::newPhase("h2o2.cti","ohmech"); - std::cout << gas->temperature() << std::endl; - return 0; -} diff --git a/doc/doxygen/except.cpp b/doc/doxygen/except.cpp deleted file mode 100644 index 23430487b..000000000 --- a/doc/doxygen/except.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "cantera/thermo.h" -// -// artifical example of throwing and catching a CanteraError exception. -// - -using namespace Cantera; - -void mycode() -{ - ThermoPhase* gas = newPhase("h2o2.cti","ohmech"); - if (gas->temperature() < 3000.0) { - throw CanteraError("mycode","test of exception throwing and catching"); - } -} - -int main() -{ - try { - mycode(); - } catch (CanteraError& err) { - std::cout << err.what() << std::endl; - error("program terminating."); - } -} diff --git a/doc/doxygen/exceptions.txt b/doc/doxygen/exceptions.txt deleted file mode 100644 index 0aa7b89cd..000000000 --- a/doc/doxygen/exceptions.txt +++ /dev/null @@ -1,29 +0,0 @@ -/** - -\page cxx-exceptions Exception Handling - -%Cantera throws exceptions of type CanteraError when an error is encountered. Your program should always catch these. You can throw CanteraError exceptions too, if you like, or you can use your own application-specific exception classes. - -\include except.cpp - -The function \c showErrors is a convenient way to display the error -message in the \c catch block. The \c error function prints an error -and terminates execution. Note that both of these functions are -environment-specific; i.e. they behave differently if you are running -your Cantera code embedded in a MATLAB application than if you run it -as a stand-alone C++ application. \see textlogs - -The output generated when this program is run is shown below. -\verbatim -************************************************ - Cantera Error! -************************************************ - - -Procedure: mycode -Error: test of exception throwing and catching - - -program terminating. -\endverbatim -*/ diff --git a/doc/doxygen/initthermo.txt b/doc/doxygen/initthermo.txt deleted file mode 100644 index f1ff6e2ba..000000000 --- a/doc/doxygen/initthermo.txt +++ /dev/null @@ -1,26 +0,0 @@ -/** - -\page initthermo Initializing Thermodynamics objects - - This note will go through -some of the details with instantiating Thermodynamics objects within Cantera -by reading their data in from XML files. - - - - - - - - - - - - - - - - - - -*/ diff --git a/doc/doxygen/numarray.txt b/doc/doxygen/numarray.txt deleted file mode 100644 index b2f1c0462..000000000 --- a/doc/doxygen/numarray.txt +++ /dev/null @@ -1,61 +0,0 @@ -/** -\page installnumarray Installing numarray - -If you plan to use %Cantera from Python, or want to run any of the Python demo scripts, or use the graphical MixMaster application, then you need to install the 'numarray' package. - -Numarray provides capabilities for Python to work efficiently work large matrices, and is -used by the %Cantera Python package. - -\section numWin Installing numarray on Windows - -If you are using a PC running Windows, go to http://sourceforge.net/projects/numpy and download the Windows binary installer for numarray. All you need to do is to execute this installer to install numarray. - -\section numUnix Building and Installing numarray on a unix-like platform - -On a unix-like (linux, Mac OS X) platform, you need to build numarray from source code. The procedure to do this is largely automated, and takes only a few minutes. Here's what you do: - - - Get the source code from http://sourceforge.net/projects/numpy. This file should have a - name like numarray-1.x.x.tar.gz. - - Unpack the compresssed tar archive: - \verbatim - gunzip numarray-1.x.x.tar.gz - tar xvf numarray-1.x.x.tar \endverbatim - - Go into the directory created by unpacking the archive, and type at a shell prompt - \verbatim - python setup.py build \endverbatim - This compiles everything, and puts the files in a temporary directory, ready to be - installed wherever you specify in the next step. - . - -\section numAll Installing numarray for all users - -If your are the system administrator and want to install numaray so that every user can access it, then simply type - -\verbatim -python setup.py install -\endverbatim - -You will probably have to run this command as super-user. Doing the install step this way will put -the numarray module in the 'site-packages' subdirectory within the python 'lib' directory. This -has the advantage that Python always looks in this directory for modules -- there is no need to -set PYTHONPATH for the interpreter to find numarray. But it does require write access to the -Python 'lib' directory, which typically only the system administrator has. - -\section numLocal Installing a local version of numarray - -If you are not the system administrator, then you can install a local version of numarray in your -home directory by adding the --home option to the 'install' step. For example, if you want to -install all numarray files within a directory named 'python_modules' in your home directory, then do this: - -\verbatim -python setup.py build -python setup.py install --home=$HOME/python_modules -\endverbatim - -Note that if you use the --home option, you will need to configure %Cantera so that it knows where to -find numarray. To do this, you can either set environment variable NUMARRAY_HOME to the directory -you specified with the --home option (e.g. $HOME/python_modules), or edit the -cantera 'preconfig' script to set this variable there. - -*/ - diff --git a/doc/doxygen/transport.txt b/doc/doxygen/transport.txt deleted file mode 100644 index ad4c8a94f..000000000 --- a/doc/doxygen/transport.txt +++ /dev/null @@ -1,23 +0,0 @@ -/** - -\page transportpage Transport Properties - -%Cantera can be used to compute transport properties - - -\section nest Non-Equilibrium Statistical Thermodynamics - - -\section tbase Base Class for Transport Properties - - -The base class \link Cantera::Transport Transport \endlink is used for all -transport classes within Cantera. - - - -There is a list of classes which handle transport for species (see -\ref tranprops " Transport Properties for Species in Phases"). - - -*/