From 8a0b5665c62f35476d4a01daba4ade95d3ce3810 Mon Sep 17 00:00:00 2001
From: Jack Jansen This volume of documentation is rather big (17 Megabytes) and contains
+a tutorial, full description of the Python library (all the modules
+and packages included), formal description of the language and more. You can view it online, where
+you can also download PDFs for printing, or you can download and install it
+through the Package Manager for viewing and
+searching via Apple Help Viewer. The application PythonLauncher will start a Python interpreter
+ when you drop a Python source file onto it, any file with a .py
+ or .pyw extension. If you set PythonLauncher as the default
+ application to open a file
+(
+tell me more) this also works when you double click a Python script. PythonLauncher has preferences per filetype for selecting
+ the interpreter to use, and how to launch it: in a Terminal window
+ or not, etc. Holding the Option key while launching your script will
+ bring up a window that allows changing these settings for a single
+ run. Choose a topic, or enter keywords into the search field: Python is a programming language. MacPython is a package containing
+that programming language plus Mac-specific tools and extensions.
+
+ The Python programming language is available for many hardware
+platforms, and most general documentation is Unix- or Windows-centered. Keep
+this in mind when reading the rest of this help, or information on the web.
+ The Python website, www.python.org,
+has a Beginners Guide section including an
+executive summary on
+the language and a
+comparison of Python
+to other languages.Python Language and runtime documentation
+
+Running Python scripts from the Finder
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/index.html b/Mac/OSXResources/app/Resources/English.lproj/Documentation/index.html
new file mode 100644
index 00000000000..dc6d5f32b57
--- /dev/null
+++ b/Mac/OSXResources/app/Resources/English.lproj/Documentation/index.html
@@ -0,0 +1,44 @@
+
+
+
+
+ MacPython Help
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/intro.html b/Mac/OSXResources/app/Resources/English.lproj/Documentation/intro.html
new file mode 100644
index 00000000000..18c29217268
--- /dev/null
+++ b/Mac/OSXResources/app/Resources/English.lproj/Documentation/intro.html
@@ -0,0 +1,76 @@
+
+
+
+
+ What is MacPython?
+
+
+
+
+
+
+
+
+
+
+
+The Python Language
+
MacPython contains a complete unix interpreter so +if you are familiar with Python on unix you should feel right at home.
+ +The MacPython Integrated Development Environment (IDE) allows +easy editing, running and debugging of scripts. Read the +Introduction +to the IDE to whet your appetite.
+ +MacPython comes with lots of modules that allow access to +MacOS-specific technology, such as Carbon, Quicktime and AppleScript. +See the Macintosh +Modules section of the +Python Language and runtime documentation, +but please keep in mind that some information there still pertains to +Mac OS 9. + +Full access to the Cocoa APIs +and tools such as Interface Builder is available separately through the +Package Manager.
+ +The Package Manager also gives you access to extension +packages for cross-platform GUI development (Tkinter, wxPython, PyOpenGL), +image processing (PIL), scientific +computing (Numeric) and much more. PyObjC deserves a special mention: it allows +transparent access to Cocoa and Interface Builder, similar to what Java provides, +thereby making Python a first class citizen in the Mac OS X developer world.
+ +Python scripts can be saved as applets, semi-standalone applications +that work just like a normal application. Additionally you can even create +true standalone application that have everything embedded and can be +shipped to anyone, without the need to install Python. You do not +need to install the Apple Developer Tools for this.
+ + diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/macpython_ide_tutorial/IDE.gif b/Mac/OSXResources/app/Resources/English.lproj/Documentation/macpython_ide_tutorial/IDE.gif new file mode 100644 index 0000000000000000000000000000000000000000..da9325d02c03cf8294169a26071b7d2c3b0eed65 GIT binary patch literal 10249 zcmWk!c{G&m8-Ct*=AC(GF*DZ2+E~gYWfVfn5VEuk$x>pdzO;U$(ubmV#=d1pl2juU zr5dd&)oaU=YLW_VLmSffjY10f`91eJ_w&zv&i%)8uIpUqx}KF@9`+957{I_!0GgVb z>JQl8+GVRyD0+H&?%%)P(eml`?b}bDJh@t3edETBPhI^NPvq6%b-#cAuB@nNZEd}L z`EtwMn|lK;N+gn(FJGQJcW!8CXbE!izyJQL*=Bh(#_vvL_r87mWHQ;og9j%kC$AJa zoj!HC;rfERQ4YI<1Uq)@7#tk@^7wtzA=kV4m!F;3T~JUE5fRavetqDRs>UzBS?nDW zvaxFG;&Q3m&5H9Lc8e}V=D&aU{%Yo))vH&xq^|e#^V{OHG&MTv#E~m&=O*O@FYfQ} zzqHruBr&q6s3;>NW8ydA^XJc9_0^?Eo=Eqm<>uxtwd6j#oZHvemz|wG7b^Yu@#EjC zcPW+1H*emg#avi#RqnsSxnk42;jiCMrlv8-BsREo{nD+T3vH_2uO9l@CnU{3e*Ac_ zS@xvC>}^Ne_fP-cjVXOt`yh1}{_0V4O?kl!dF$)v`UQz`mzSih)H{3ka#c*&M*MoW zv9?B0ghOxlER{<2?;t(cI)0If(dRzZ$yA^B4_+#7b$spX`Sa&b!uIe>We*Bn4<64x zHa0wpU%k;@*Q`W3V-kfD<6KBx1o?lWb1-5hZkriPKN8G6 z#38Yj%y+*|DRoc3pN>V+fLcJ*!EHEG3Mi-$GQk#8aH_p#4L;ZZdk333Z3! zRA2B}r7qb(L}^jbZhb)nd^Cdv0W<#}9c~0E709ToFdCIlUs=s)Rsf2S@=`?{#K2r3 zVYM7dmy?Py*+BuByy1AUlwmK05R7Q!yKxG@BP?p4fI7iJmanHIDCyk;wBs16DLlJp z@Kh9sl&PR0%0i_890O!)8`1 }DjA0xglYu-A_9-@&Vf_asWEWS)`8=nSkwUlyiY+O7gfI6Kn}tXJ0T(3 zi;*SJ)B@lhhkjGWpAbL|iVH2G{2mT<_lApmexn9}HYqx|T?l0;VU!m @&FO)*J z%o+DF^b6<8o(w30M>kOxCga46X^a$^KZ8%r5-H@08Q;fDGy{(g^~(?WfeQ*~t`J@z zBaqsVAe^H6nt0rMpB_=8lMngH=;f?Aqkf19pBO2H76Nh`M)78m7w$aE79q|u5GkdE z3W+E9Xiz6*L}Y RTzx zIX5z2Us}zpv}Msa#_%d0t(@oMmq+j76PI8_nu^?mp@HB|i9Vx)|IaA_ Oee&+ z|9Jd#9K0Z=VDwysmW
;6_nGYwT5!?A|>Oa0RH;=?!R}*=Yhs5 z4(y86o+Cr;KJ*k3sgwtqQSn|~vbPG}hSP3|@HemT8FN?1DDUWspg}pqkIyVm2BLF> z pt$1QsY6bUE_3qH%5e-R!$$ZGqbCa99l^m&=%^G5X{*pXkE_lQQI}*Tb#5 zKxFZGWlO{RiCB~I2EJwEH5OG}fo9<-UCG!eM|_lxUpK<<^vd%-s5=5=t-wlLM{|>* zsDS?3;b9*AbRZ60#F@7g7k9Ql438Apc%_`2#9gIy6F$S1^|)-3u~DS9TuCUcMV5i$ zXer6)8CoNyCf6k=Vbm%CE%(i%-gM}T3f?TImZ#&iCLBlZw@p4gQ!yirp^XAUDu>+B zj{b*(ERk9^PLU{xepI0$1X~_+Ry#m=B?GxK;`IwpdSj7%y4qnSS=kajI`pt@@(yc* z+FTAf{vXsrO#$Ab3ly-g_wf)Z+BU6JH^PbLy!FSPk*>3#Oc{y2;B*w9ELX*G1-dkP zhuW^Ern@tkS;Q`ku?sLvaMV^v-Of= jZi-6Zi)4tijTp!Elz*x9OCz0N^p@=9602?N@%Z?v{TBM z3lK{jHWbjOv6^VWoZUOacI0WE{Y4g<%(~*sgH094A5qUr0qJ@VVxuJa%5UcI$tfb* zEu}c*XZ)EL=k0kwyeuVo6aA}_cvMaamLiLJ#O(^OU4*_85<@j10Vl{-NC@F*8d}$Q z3N6&8Q>b5L6t aIc1H%O8}%;cQCw7{0W3l@ZB`BDL_J04^g^=)RC*(`ltbD~ zr<$^0zKCeUg4cl$_6fvz3|hy66YhU8mXZ_J5cvFyUoccWz1#mi>NqwJNwx^@7DAu- zp=Ue``hLW37U=2w0Z2xJL2v7&H~Ul&n000{SI-X=rz_|jaX_blF~Xsm|9fgH3l0|% z^F-vmM(_W7i)`XhY!pb2h{$KbTLE>GlpN1{&6W`lNexPUb)UTes|4Z(!Nx#Gt>4oA z(}6|_4m1j0q$4HVQ7BoLKOIm&!yj}|KDZ`eAOQH`NPYJbBNwVJUu{ZB>7bpCTK z1$=0>5>gYAtfjCu9}Z*;8cuV i!|4Xs~RKOhWzX!E1hca7;>T(UB(m&ZjGtv#IKV};vK!|+s8Hc-O1lBN-yN>Q9 zqkWgc5DT1HPT2<#cloN?t2UpMMGLMnyY4Z9eCSh3AQv&LhnQQXJ?jJ{34{3lHgw65 zl*8)Z%0td?B8lyX-~B=ZFb$s$OO5l6;2m?IVvE-ZG?F=|NMbMrO1z{9#QF*GVORzo z;6nqlpIouSEJ4PrB_wKg_iPt6_m|W{)r0pA bQJowQ&WF3$E zXIe(lmyu_EV|w$}JI`Of`T0f`IkYGoGLi-#t!91_a?~c$XDKOfc@qoP!Z)1>62Pjl z++uo+O4f*;m9Yumyqa`;S#-iwY0$Gi_bhFf+6x_PeGCp8yYHatmS=h%W=}>N>t6NI z%H;)~9WkG~{w4ttsTzDau8s&*?hCNQcSu6*cy`@2=F@c*O`UVP)%l?rS}<`-b>ia{ zFgV3HEhsDrA{h+SbczKQA2!yMGo&+!FeBB*j{f`U_3 Za~MLvLt5cTp9NS$MXbUhwj_o5V5XbX|FN?uKas($Idw zXUTQkarf`Bt=yH#MoF-alQKf1*9F>HndaqUlFSBZfks+?8AlsKdriwM3aZ{L56f*{ z_3qWX_)qk;k1s5~W`Z-S%!uu(hm9e2C|WqDgx Zr9VRFwJt? zsmJo)Swsy9&!w8wxZ!;9HAzTCp}(lNk3u%wj}xdeo;j>8*PT0So~SV87;Kp?Wc$Q4 zAXF}wpM@|Tc@pHaV?PJlN9D}bHA@)SS~+^iW@P1~g(s(<(qs1z(`_`y6YC{}3&wog zmm8MK4d$hIc@$gfJ9%hRMPAr3a+X{+V^hS;F vO`;vGxf+Lzrd!rgX`Qq8Y6d$$;JCVm*mFpesNT? z^uZwngIsmL&I?`0k{IbHmuB@oD$KiD>~<%2+72-rz1EO=1yo>02HB5gXK11dNmVc! z@N2=2Bg5`%cRBKJ5qA0eHl=Oac?{ZSxL;ZFU-7}QTaQdEjp-1~ID7UeRZn^?jRe@6 z&m_FuSvcF6G?Og2&tKDb?I}@_<2=`B+}@Tr(MxWN1~GG-{IudeL9CZIAAe*1-YpK* zb;ORsC$~l>{dYg}=fN)tQ%!$83{P3e7u#xc@kBz}ZP}Sn`Ij%0c~#-b5~igC!1gXY zYLTmL(6r&AuB1k%O1f4msSf0F>k0KK%MYG`j4*sG6T_i s?T>W3=1gDseqfqa^2AShv%sW5dn5eTpWWP`zws670H>Gs`>3u$}; zOMnrjeX&%`b%x16K=G$VO>wTU5#VQH%2|`#6!o}QkWm*#zB|aL#dy@B-qLNq?i{Cp zn-}_>ToT-OV(Mh6INVI8Y2HP4CXJTDUQP77D4)*Ju5_qv|L31YzIGNONZ(Kfk(Ek> z9$P?glWBUEwP-AsF+xCg;Q04I!cS72 VV83mL z8nz6J9xgsJeXkw0T}%dAd?Y{sF_R; ;2Egr}1LiBmp1_oK zg%h40u%+D7?7IoU6|b{9v%Tr#4P|Kkhi+~CHmihr{%1oEogjx=g9!RpqOZlabt(lj zO)LfH*{RoIe9a%5v*Ll7>?tow60N*uJ6xBwTz$WUz*VL}hLJAn>n?iq%l`2ndF2*W zZocfr1&Q}DecV#rf#?s&e#)2CvOKMFEdnJnq6zwllb-N*I0yGbc>A;TEoMo!h^x7V z1x7r{&;;r2?);y=M}qyu0ZxRF oM8NzI6zlm0BVKS?$C8w8T ztX D$0^OJ`DGsPzR@8;dEBw>4tlG1Z0%r`u3EO7H zIY$uf#@GJ7iXRNBX)Dv$+boN8`P w*0unvL(iD)bWYrKI)KNl+m9|g|43`V z9s2X>3RBBvZ=#8o6-PxyIbgMiAbGpR`8x&KCG54FCa42KW;|NW4VNWWR2gHQTw;Hu z7uh0ZW$fux-}$>c$n;P20#vDlYg>$*f0rCNYRD(vpJ)RW(k$VkBx*xYbH)6 sFBSD#=c?a}edeFPV#dW0ncFQfcoS+>XE(iap%D**)4*D4f8$f}J08nmGu_;i zG+!m9RsLnF54fN#Rh&4vygU2xzlb&q!=Ch+z}<50 drJVs7Ea&*L#GRxQPhUT#Fv_2sWOR)lZ5M#roG2W9IS9- z#@-5Gn5R9rB?XeFfO%(Hxg=u&AXVQcR=`dbfQG?yxtL}@@<^8uFO!hR%fdX7X<`sL zR0P(;kdw%1^@q|B9vSg0AuACeOC?6$*@YvguMtU+S1!t(UurI*{RTQ9liHt}>cun@ z7SRp?4Tme=eRDK%=y7cFn;_oFObk*Yao7@S#rZH#9hr}m%06k|nMw!wBwng!3=*%n z9`0$(^vo()%&zpouwmYlxKz;P^5WV9&sKQ9;4Yy*DOg~b;F;1LhYb$8b0aZ9Au{60 zB$#5r37B48W~N-4Ay*HzhfqA3$xeZSnzncqgn44-yau|;yx`=*^~y8)w1$#a4)Db8 z41-s>clJwd7>}TpbvYBSGt@8%Ia0$c=BCqTXy5q!>H5;t2&LVRyI1}LO(?r?dkffC zi&}88-U=|w%yV(pO0P-17A`47PJEtTMdYS#ScL`lTkKOTYb9VLITonQW3bAIQh1#* z%P (GRf{b|^zG>pokIVqF>dQCR2fQjs~H>@*M&l7p==*;^^cNrn$nDrZS zyvR!$_b8!o<&AyIqYfo6a=ncT5xFM_5g?yIxz)VXjbbeFXev8s*(GJh23=QEUTR2C zNxaf7p#{vV03Wf1KJt49=076cb_x@a(V!|qQ0kEQQOpQ36$jz~W HO|F_9tWgNGLZYzCTH2n(|LKnb-g| z_akAEH{Z_0>(&GfPw2?b7F{mnklRL99DzhnbfTApwvf#Fk)y`P0x@5M-KKx8CDAx^ zvqI#nOV0HA;^JU{HTx}67apU^i#B;aoLx-3ZmRCJ;+&;zb2tYJQ=TV}gN4f;6Qh|4 z6%ryF3q_GQWonrGT4)R`A1>RdAtvFDw}w(@d5fbwp-nB%jbjiP?{FS%50|I7xJwA* z7|QbB+N-{$6(Hjkx5{8N@~XHxDMGkrCJ7_ASXji64BsG*dM`XrKqSu>mJ2Wv??FTh zV#;0|Q)V!`(f~>GKh1-h&gM@2N`@TQti4`M6tu8|pyz`%x@ h5R!(d2l(1m?j=f5+BJgZP$Uryz2V zp4sNSY8{2xLs@n_HZi86R9l+5`TBzcm&66p-8%|vBKX*64k&cjDL(enTz)qYyPP=$ z4CRo%0 X;`6(GBS(`n8tj>A8*Dn;KCDWCfKS53S%)Ya zu8wBdbYzFiF%*>;`o97!%q!-#F(12~{YozmF{QSW +}gS<^-{=FqPS;WNxCrkQSxbx-&n3;@n=l8u;kh0?RdyH4!Al= zMpz(L__|9QGv< s Ar?-0E&_>|hXH93S^RN76BMv+&; zg-_b^)(QzE?n>gGV8k9Xx5vFFkocg~HJ*Sg_jZ0O)IOIzdJt~XPef18w>v1&3JuqP zk`^|8{;<7xjSwlgmZHz-Bh?wFEPXev9btAqEg>kE#D8Iy5Rs)Ib5BQDT#lH3;N{Fm Hr=|Y`oD$E= literal 0 HcmV?d00001 diff --git a/Mac/OSXResources/app/Resources/English.lproj/Documentation/macpython_ide_tutorial/entering_in_new_window.gif b/Mac/OSXResources/app/Resources/English.lproj/Documentation/macpython_ide_tutorial/entering_in_new_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..baa400ee1b1f1a140eeae81f137429522256466d GIT binary patch literal 15578 zcmV<0JSD?NNk%w1VFUsn0rvm^=9(!7K?jV{|21Qi)6>%=ONwBpEHh)9i?`=Ja;OX& zGswuuIc%gdU5YGPl-}On8aZsUv$HHyduwWHz`(#0DNT=KTofx*8E42)mE_sk*&aZ8 z{{H?VL~GaA*AgT;u<~^C^Yd6(SnTZV+uPfdGAlrJtJ2calarG)V2&|cgd93zf`Wo9 zRfOi|<{C3o6e>lE&Ppm(kveOdM@B{*J$V5%up>!^7&K%OB|;fCX>1`O6A}`foSc7u ze;hem88us?qNBvs<`pejI5#&bO>@cpiWf3r%5*hyadG?TZk|{yBuad!sHpJp@8aU( zH)*2%qn9EgBF)Xs88J;VUy%+UI{Cpz8aZ(wLw+Vui$jXsEnSx=Q;rK5EsKkbyu7?; ztob2EgAgG$B0**rFk2x+cPL*dD^PYQOK$%9hwyrBcf0=`K6Nfwgk6TTu#k`@NNl*c zxXV&T#l^)DCP{~fhf``TuCA^hJz~?Ck1$$^H)WO0%|9JIadt^b1xvcRy1M<5g{RAz z(9qCxoZES==QU=ZCrfcrY?&K8bo FK!G@c)+$G%{ H(c$=%D#m)-wir0-L7Qz1v47&B-uV4HlV*n!3WEmwOdQjkE1Dwf<< zHfNGHWt|&4a1S0c8#{L?Pk80+ zM{XH6Zs^0AA3|R7@$v8P@BRJ#@bK{I>FNCZ{P_6z`uh6i<>mYP`{d;0;o;%x>gwz3 z>+bIE=;-M7_V)Dj^!fSu_xJbp_4VcD=H1=h>+9_0<>ck%;@#can~aPdI34cu_;aOm z$<@h_osjVG@rH__HF(cDTZAW1jw)A_b-Oo*keeb%h!{C_4 j?jE8dv65hKNp96x%bNOGbUlPKjC&~j3XN_i|<7LZ4?CQX+%UB=wWlVvR}U08Pc zS*sS!qP4mxUCLBx(xzQxK&>T}s*I~xvu2$)PX^bnSG#^4JI_H^2VNbhHCq;K*|uxp zu2sv$LEW`?@p7rVmv3LcfBV`EOn7gszlZxCj ta^?D!>(H;y zph1E9eBhAjL%A%gR(+^6>eH`bw>I7RmucIcZ`;PL8wzO9P<#g;PP{l21`K{3XAm5@ zbL6RxMW3Duy7W}ovtwtFKzphL-M@$b?@k`P`Sa+{n^@0&eS-ET7DjBCkYLD&5H||k z2-2c{kR{EOQGg_=L|{n K87 zAbtlDIAEy-rmE^oGu heM2yI+G!ZlA_*P2!2wt5K`n36^&R+zYkl?x@6j!}m0y6R4r?z^s?2Hc#- zeaV}0X|f5MXlR;d9C2O-{O`bg^4aHe*&!S#poA8B=);kg7qO(5q6golnr5sqdl6-{ zpQi?iQQtu#BP51BC6`R{$OsX{5Xli4^s>th@pn+DBH2e0fGCxuAc7>tw35(06>ap< zF$D!whb+P5)6!kY0~J%gmKfF47e
+Y$cyC4~W|VJ6_~N5){`%~< z@BaJjGXcN(@~E@ttI z4M;%>8c+o=rl5>t6r&o`xW+b$aR8V|#l{4ZANrVK6r3Q1CH}$3KKk*GfDEJ{2T906 z8uE~cOr# _3s$fPP) z$;wu`@|CcRr7UMj%UT{%2yehd#n|(yg7j__qyUFEnnBEB5)&HGaE3CGY0PFi6Pe0% z1~Z*W&1OJznb4@FHn+*mZhG^Z;0&iY$4Sm|n)96KOs6{6$ RctZwzG zMEC+2rXYteT-B`ajH_JdO4njKV+7wEK|Jfq*S`AouYmPtJonm+c|Jo3xHv|lii)y= zWC5vr{09g4$N>&K0~|@90UTCQiO#M94m6kmP%BH?%1Xl;7AS!pRMFW=tU?ceu)t_b zYg%ysOn?UMV23Yu%Z_%0cDAIoWg=-y+~OMdxX4XzX$RQ^LiF(oO+aKfdf*H|_CN}V z^amIyOWJJoU;-!@hjKX(jvj1dyu|eY3X&j)ZzNZ^h(xb^=PO_M9&)mimFyowkOIY4 z%BUiHtRFZ)4R2@_n%Y3Y4lF 8z_*1E7mcH7PojEu8;x>v{B*<+xW&f&asYn%;O&W_{TsFvX7 ~_2R-SCdLyys2tT{An;&;Z9jQZNI>CMp4d7Q n;-=e)4&c%U?>=%u?c_hfCoY7 z2M?G`1gG=B8C4E}Q)%#YJScMnN#{Y+@sP|5e}M-JxN!ukzUF42fCwny0SX?#gDE)U z?br1ODk{u&9+Vu%8i;m{Z|rlO+qv*L2Rh<=?u5oW{_&81{NigK`N~`V@|bsmg>4=J z_wu{n{snXv1Ws^2Jmd7zKz#@numg$DArzrl1MDMiiXEIF1gS@TGgeW8P+#HqzYlc@ zZlC*SNFxL%2tcb@9)sq`pydG|{^_Sr{pwr)`q %ya9}FSjK#HI7kE?nk*~ZrcJU{`~fCByy2-T+zG~f?k zKn V>$ayW-{ zSci6ahj^HWdbo#pNMv6~blI>CL?8lDm|{^FT0t0ibg&IBaDYMom~~U&4?#cya^Mdd zAc!K6aNCe&a+nQC;14w50o&jM{ve7{cy=VW4T`u8RrZB6fC`N0h;*1@gusWkc#F80 zi@Laryx5DjI07Ls4bqSTe1L=gbyU8y0mowvAus~fPz^3{4H|$4j~07^AP7-#jj~5+ z5ugFr-~!+%jd-vG0Dy&ypakf+2*I}m-S~~+IE`aihWP*j^q3E6xQ5;M1kVVK;JA TY?kODc70(lMm*pK@NjtaSu4B3zl`H&F#kp8HU04W7Yu#eXTjYM#f)ev{j_=?YX z0_#={ $!Q29$}8A7=q_u$YZG0*@I8u3!K$Fpowsnnqxc2H*;r84cR7 znw#00t+|@88Jn^>o3vS*tm&Gr8JpQKo4DDVzWJNIX`8V5n?yhZu=#eXNd%j)n<=K6 zp|zSG;16`54NnkltJ#W?*aQNl4UKtK+&KbS)|j;a=>t5#4W#G+tyyJzsfZ)cirpy! z(QpmX)|&!I2z)7=-}#&Pxu5)*pT3Eoz!{(d>YC(Gpay!N AY&q$Vj@ZdM4$oF zz?a}4lvD5o{19zY8UZIT4IzN1)9?UZ_5>mSKmgNVry>fc;1G9WN(Ve}335uOQd$jS z_W+&>4P6?lqB^RiTB@dcs;GLULOP`101hD bkD%+OF>UuJFnYd=#(rTCeWPX#OAtElC2`wvh*wV$Dhc3v~%a zNdebp2MiSrLb !95C8$*Faj>n z5B-1*o_YciU Ah{`vv@P2gT3_O3(+za0mR5wI{H( zT-y&1KmboG0(StKOlkmVtF~<0wtBm_eA~Bv`?q|Xw|gtNdixLl@DG5SxQe^DTss93 zFa?Xd0EF8Q8bAnqO8`?KxC<~2e(M2ppaFZk03-moLfH>f0J?2kxs1EItlPS-`?|0j zyRtjGdb_ornzz{C0wWL(D$oFOc?>fkaLL#Px}Xay0E8~!kJsR}5%2}5Km*VVy{M42 zgzx}Qa1Gdty-)A}gz&Ve(0;}LDFV|Q0o8lG*?SG!+r4)1z0oVac7O+KYrfcfmGoP` zS9!kpo4 @Ulzyz$k0eryNi JWOIXHv-Wx!$Q0XNw5h;Oac~XXXkWhgJ)y=d$^OAczD)h zRoulrmUCe61&as9JcdqYyklFObD7u1ZtMij0LOA1$8 L5CM1)0fDdp1V920;K-cZ$qxX@l1#~# zjLDkZ$)^0tkvz$j3 Jj=9P%e0)uhil8ayvw}Y%d@<+z8uWLJj}#g z%*K4o$ehf`+{lg0$=47KBTxz|aG|)+Z-s0;hm5q8s{!2H%^KhV1V9K=FwTTP03P7Y z= pad=P|oN4&h~uI_?*xBywCZJ%ZJO)03FZ*J ^AUzJZE7G@H(k6Y eXpK)uvV9n?zw z(MKKCQjOFw4bn}0)mWX>Rz1{H-PK;L(j* s*_ho&FT2@?o7tZI*`OWTqJ2pd4cXOv42A3mhl~S=OS`W9+OQqle(TSFB-^%q z+qj+Ey1m=H-P^m}1f?C>);zqF&Dy?w+{jJ4`@7u9-Q3Ro+|V7}(rw$o-Mhk#+P+f* z8QsE`J>A~_4c&%|xXk_C cn`;0nIr44&KTece6i2UxJtWzgDO%L3Yvdo*Z#sK?>b z@Zr|C;TrDYAYOeU-r+P@;?#HI9&UWn01Yf4-x-eL9Nyv|UVPKX;v%l%Io{$e{tqR- z+&WI;Fy7!se&k4= J=GXM*%M|C>wB>Z3 7TsmA6@C9 zP6DBR>6V`9rrznPzUrgy>YPpj9xw%h-Vc&a>9bzyweIPlp6adc>!%LvmM-g;PV2>< z>V4GfnqKR-p6iA_?bKfFy4?g4paRo;+D^{Gl@00gO$a1_4cEZPPhjrNobFG+%$wW~ z{J;+r&;#q9?v6a~*s#6iZtmv32`E4UM6k5>j_>8Z?&x0cj!Xi$9`55l@K4YK@9qOr zaPRfL?)SdQ3}5gPfA8zg?@N2}_MY(#9|4SP@%sMp&5ZEU-nRarv@6f@uHEtwsJJly zueUA#vd2C1d|UHei}O3*^Dh7MeT(xpFY|uO^APB=*52GrfCdw7!qwdE#SQKkp2_BF zt|*zj{FwD2d=2K%$l8@`O^}nxi<8*f^}d?C-&hUcC3R%a^;M7dSkIP=b^^K10#twY zYL5yL099j;^(g7~c%SxJkCWhK_Es 5rAkCH3dm90bq~~;N@f`g{~5nXxB!O8c_GPpRN=C-~-W6 zozc()3y=-f@CDfr0bsxaNiYTIdJR301eY*Sgz&^C0R1T70`tEK^`8w>01%seJfJ{> zh7T7JC}?}|#f}DUQ=0Uc5Fr{jZZ0%d)4-zNN01-=fgCAPWXXR1P>xi2GGxk-D`k>2 zNwX%*lrw9VRLN3jPM$4uzFcXu=SiMOZwdt(^W{*JLS+U;`Lya&tXZ{g<=WNjSFl-| zprNIr0WMrKvTSJMM;8PfN6P$r$wEW55qY=m-J5p=U%-61`5Qq +G782w-@ONP+^J6lb9q2i_)nn_tu}Ja`0Y7q4E ULg_LTKBlB>9dW34$R&Bye zniML|s_}Qik4khs%lh>7x1YcNCQbm|b1y)n^1JG&{p9QKDyPD7@IeS8l<=u0ilC(w z6;eoREw*$~Mu#JYperO6NXP~n6rpKmMHX9ZCPfvSiN+rq{0RaY52Sdpu}g?pk%$FC zco7 d26V~M z09!inzy{gNuR#AIU63RNm- !DNHjJFe?TpboEtOA*@gWv(UmMi?!T>K!-Bs zs%so=unb{XVvF_WSZ|1phKFYCAR+_}p7n+w#|907h6R!xmIWg0II=Ttq$qY=a?53i zN)~_>HVKa~3*oj9NRYyt&O!+1%wmI}K?(v`5CH{%ABfCffKhmW204oLbJ)(l*ko9T z1s#?KI>tR0t5D@j)xQ5aC2C^=`D<`hO-JsysQX5JRKNbz1NqTYJC1c`nrnV(RuwYD z<<<>0&^0b!Nqk@gWW(v^Xr#LVXK8SfUK$#IzL{n^Gs8juu7?QtQ5xH$!Rcq-!TO18 zn|YZ=n(3yKMmij}M|c3;p^NS&2|K#!F-sJ>`EKqWl;%O|X}}4B8*pgA;{+O-0jG&< zA|oX6#k2VhoG0+mdlRK2i`JWNXqZCKrn&BhZL8l_PgVLzR+&@$Qm2&U)?uGdcK-k* zRdtj-w!J9TZ c{Kp8sLC1f{ zv5nclBOLYE$2NB38t6*n9Q*hTZM^Z1ZnT;k%j8BmKC+F@m_{3|Q4K@>Lu!Bw 4wIS2Or|fxfek|c;*yxnJZ3PXxy)Ts^O?kyW;mTGPGxQr zoz}!=Dt+iqc*avJrj%zrYgQpNv@!()zy&PZpo=n=ff2Q=(m1%`3>U?yNihmdLYuTA zh9a~@3T0A69m=F^Oo>DWl_-lSdeMeX^r0_WQAj;HQj3ZdqZ+kmOI`X>n8s9AMaXA{ z_{kw%U}1S@BoPaI`ct3=Rj5NHYEg}PRHULSsY_*QQ=JM_nMPHrQ>CgqyGRzB@{AW` z#DPEwT2-)yRjgwrYgu1 (3AS>5_pxW-kkbEQxkYTAHTvW2T&rE6dP`d7dP zc9g3GV?Xr@0l0Xz35#WHV;%cg$VOKGvXiB3Wi5MI%w|@zo8@e0J^NYEhE}wrC2eU< zds@^o)~@=zY0o^w)=0%xwzH*eZEbs7+~!udyX9?fefwMB23NSlC2nzzdtBruSGmiz z?P{}%Q!E7Z0-U67b*+0{>}FTH+vRR|z58A8hF84fC2x7ndtUTX*B{n(?mi9Mmgvew zMCqk(eeHW+{N`7``{i$c{p;QJR=2$=m_g5c_Mxr{ P{M`$y1dnm3={_;hvoQj+t8>Zjh2Lo7f2=paICf)& zd5q#4TR6ujCUTLDd}Ji2Sj8CsZt(#4083rSxD3-BFOGFA s87hZevf{oZ~KAc*$ XF$Y@EgC_KL%M9p$ zWLT|hhGU!otz|F&7|&OZ^rW$T={{rm(V8xFr#=1YP9NIFiiUEB+01D# B4{GVzT6sm~TF1HA#BMdR#ck|2Lt5OZmh`mU{cd=7SIKz1HeNBo?Y5Y@ z(RWVvxdG{DNT(Xn$mTQus|7yrcqd%p3oo~-d#!>n;(M)KJ+;9ZesPRv+|%toGa5<} zkDVO@mSmLgur+>il&3t&?4{LNFd^~{C_;G {m~F*4K`PT5V_pHF%43_pN0=%X!Cpr#qa} zJ^Ov%zTmRw{qEuajQigAnBTM4v5)Nxd*J`s)ya4B!0k?F=T{!|)5k91&yIDir-2r< z$o9^d4)<{HUfr0cV{DZ@eoNb)+yXbZo}2A{cE_LDnnr)I(T{HShu`3vr+)vbYkkr? zyu`~Hv~atB+LfBqKW9@mPC~xelRYkbz~5WI $!@u`qz)E|y{fj(I%RmZ*Ka1l) z|0_XG0zktvJ;d8S6)3=-`6osb!4Q15@=LeQ<2-cxvGLPE@>@3z1VMr$zaDfrAnZ38 zv^*0`LO4P}>@zy; @j^qWB+G`abEwsp(FA>=e4EW#?3zgXkK{Ubs#>^x_? zLLpQ_He|y8(#yUt(isDsI1hWh%B#P2Q@71?J_%I6BlN>?t3P6cK6X34JM_Q~48t2k zxa1Q)Hhjc4aznN22D>r~ZF4(CXg!L $kh6G3z0!ecthfxEM~#fYG3+x! pOk86}Y;(a4!vX{YO2@p+d?ZW>;77OPg^E;6 z%nVIk%t?uK!A3aC#1u`{Oh&@=I5{-M&zvy7oX6Fy&0Pe`>w80^Lj+&s$$WFYzO+sM z;S{rNY(^J@O|;~%zAHY0B))+hPUuud+zdcbbj{<8x!5E#`m@T6j85;o%jrzP?6b}= zdcoGCLcCkQ`=ib8Y|sBHPUArfvy?{kye|w?#JF@%{p2tB)R`BHrHZ`8`npf~%g_Bh z(EBP*ecG9BJ5S5ZujL#{uKY*@tx)>v&nU#s 8!fkJUnjvQA}ur4FjkW6+VGHIOo(-HFYrm$jlH- z7*WJ@Qj=@M^;}asU9b?n&N#hM4IDQbyi-8MuPR+VA>Gi6 )@j|=3$4~3eXf{`R&E_v5cO6TgGDEU*5%<-a&1>r^;Wwo3wtw9WdIsrbys}- zKXbjSbPdK~)Yg0r*z8hJH`pg^719p@Sb<$wedSW>98cDIvB^wWc4b)qi;YBh&8LD* z*Kn=Xi~U$Oa#k11f-&`2kiA%fHP~Z?fMgv40X L{ zrO`sQ*RQqMoYgj@CEK!P+I`JhC#wMsRok^K+Ke3qH~3L{mD{ s; zSe+%*=;~R)CD-Dl6&C|GVWe2EP25}EMy$PCw4GSJm0WJUTDRTVu~k~ll~%SRvJc zsg2ywB~_!f#Dk5l(@ouRU0uAT)mlVd*j?1c^;^T;Dcil>Ks8$b%WYlA_1(d3+q*5# z$uwQiCEix$+)_vZwA}zK5Lf0ER-pYN=xyC~?cM5CQ`x;-4oh09?Oscj-F`hw90-Q- zC0|8d+~f7!!(CqX#a(m7TGoYDl?)N?onIp*T(q6V_+4NAwNv0N+#2{)uHD}O#!>hE zQDDod?Ootfz25gVTxDok1(x6xEnsZ}Hl0e^uGQd6yIMzrQA{IM$c7- z53$7*R^bYz;A|TJq0L+xUQ-T+-!hWl9hTA_uGt?B;UK 4PY<+;^-vd**#(Z{WW7PWnm>wUKD2IEG6MR zxLhtyU^$*r%9ViNh1==v;yk`$hZRqwV=+EXV=`UiKrYfSw%h>-#!OV+CSK(I OhE5wEfJ@fqVJ_!NzUJe_VIhs*Rc2=}c4r4xgh uH%5_ z1 YNaKy3X_^kqe#YitX6Sj|>CkLs zlzwE19_OGI>dS=a12Ewafdv^>>e~F~bYAI6mg=Q+<)U6aX@u&e#%i8^=}T6G3+8CB zc1(zV >yb|1tM==LB `pxC#1?4;)NIjK%4JN3 z#4ClO_TZdm?9|4`w5|b37;My@?U6)m!CvhD(AMoFwCO!SXWJg^z6S2y_Ey&B 4ep3=pM~$Zh_{u?F&AF+`evgBx;x@Ytub$@TP5Z P<575R&wT3q)^B8#?_Rj+(l&0{7VuSEZGYD81HWLe{%r*x zJKlEg@=ovx_eAmTZRN%A42Q%DzirpG#R~ZF{Z{VQMrmH9OaKoC2{-YmL+IBgYXJ9f z7!Pi5-G^Id?~$f!8^7@q6z=+t<{E!-Ajdf&H|ib_@FNFtz;14Yy>KIMa+MQqn5Ink z{&6Y?J(=ZA*S_+EW%4b@aavANTb2O-?FMsLNM9`<^T1n19si=Zj#>|a1z7N~DR=XX z6Y?s+>@aV0Jr6tiM)S*Ny+6 2cbVz@?E@y7MiaGN3 zaYVoLc+2$lPHc&eFEIyo!GrU}bMOI}?j^T$RJS?)-h)kFYfq1L6O?hhQiR*??o-Eg zL6>yx#w!cIbztv5IOk1PR|H;w;Y$DXW7o$Vzh(M S%uTZwGf!tMF$3^AcD0RG;=qZ*}Un^IwPeo3nCyZ}fY|_bSivatCOY_H|hI z_k>gRc|Uj4jc|h(JA}Vmfxqqlh41%<*SIbpg*1QUKeqRRuXuOc@HVJ-uYPxrhq~2P zZ~EqgbBAylW-gb{Ej)+-IRFDN2!xuK138F*OIWNp>3N_3c|3@Dna6peFM6XtdZbT! zrC)lcZ+fSHdZ>?jsh@hPuX?M$daTcSt#A4Wka?Q7d7J MsOYsD49`h3wD%LU07ee+Mw2g9R9W@-Kh$KY#R3fAwE~_HTdpe}DLofBBz(`mcZc zzkmGCfBiRqIsgbd0x5uzb14X&Z6OviZ0L}J!-yf8HFKunAI6LtHO46-!A*lI19)Lk zrVJLWU_&l!%;?Ww%a}4}(yWOQrpuWTnt_`J4%z}yuWSI?Vh91!q)L|}$Y8_9qb3VZ z5U6VPD%Px8w{q?3^()x0V#ks#YxXSKv})I~wR(aOp(zU%P@o_uNRJaCditE^_b*^M zfCu*l2d>%0nk4@Jb^O>M#eo` $0mjWIXO&)an z=KcG&Am6=57(XqDv+>@iX-hnlgdN5nL8cffsicmSD>HZQ?_cI;FMXB~9uM>s%@i!W z!Wsr!$YRJ*5JCu>AzNUu+9Pz3a1DnYdiWuTA&NL6i6xqNB8n-hxFU-!y7(fDG0He& zhfiSh00|mYHw7Jm;6*?-(@--cHFEGngET}^gNKsT(7=xzO@i})dojTmjeH;NQC|&; zl!Ve{nF;v+ADR6HIOaxj5WtN#ButS6gYY=w$QE_lX=es`=DCF<@L+HuAb~uPjW&fE zdMKiaD!M46jXL@$q>)NGDW#QKdMT!vYPu<>g+{|oHBaE^!3lIVfr17kXyc7F9wb2n ztlh{eD;~3U<0Py}5MT{8;Y33~l^b1&QDY#9#EX~8 boz${rdYazyS+9 zFu?`C>&!MIL~~6))A88E7yV!}@g=ZYY~#e(^nmfi7Q=eU1LKh3L9iKVU H;@ByFdXd7S~;OG(qfL zx5cPX;DQU+JTXqm|9F7%Kk)sN#(aB-bdQ% #QTg`Yf@_&IZ$b!gEYQ-!!>9@4fr}JMh5^KRofp8-G0V$t%A+^UXUS{5RmN zy-hSvkU$6+K?JeQHl&ZB@FgP9@ICpLkpDdmA~X@r_u6Drc*%=nc`}xeJ9g|nSXf^F z8RpG~#yRI~7LzGtV;kM@#t51K3@B`&708I403s;62nv7|6^tP5GT;a()Pn#apoTR< zD8dnvu!JT&AqrEd!WFWxg)V#{3}Yz68Pc$ZHoPGYLpUUGcmo>Qc!CB9AqN!DAspf8 zMmVOnHgTZ98&32_I3n;wZ-f8^E`Z_z*_Mr9$?qTZ!w4cgq5{bcKr;6^$r1Voz%^!W zS~4L3G+1SgZj8eRz%YRWXF 2?osAs7%nrY$hJq%QHA24R6q46Z}ZT8^QoVJ?b%n ze~h3Z-jE0%T*3p+0Ec?gsm^t>vz_jICp_aR&w0|bp7y*aKJ%&1eex5YJ_$!NM&N=6 zoB#|Fcmf9!8qI|!w4n_pghL&=&?JE)1n%i2FXNL2U>d88#r%?GhOo?$KI@HfBoa7A zKnD~gVFLURfe85V(wW9IrZVNn1U7+!2%NwL&6pxkgDTXa61AvCJt|U@s??=2wW&^h zDpaE?)u~dos0)F{Hn;&qfjnV%y7L_ges{|QLL)I4ogd?V*#b9^aRa>nr~!WTGty<2 zG$sqE1~;6c*MwEW17J8v69U_WOAxlOhQ&h!z_0)fRAU6)(<@{nE7{3Xwz8JJEM_yS z+0Amcv!4AdXhSR7(UP{brj6|PvY}PPJzxZ%B>`qfpbbzZE+$3j#ahW&17c2QS;(wF z9qQl-eBi?h3OKG8lB?Y1GPk+TeJ*sPE8Xc*x4PE7u5uNyi|u}(yB`?Cc6Xrw>?U`- z#|`gx$1n!(en1oK^{#s38(#3DSG>o)FMjju1>~C7y!-VpfW08z|MC~P_QkJ&^SfQ` zinqQFelUdND`EOVxWX2`ForV>UJBEoB`C88lu7xWXl_6^vWp^7?nb*?sPK$vfRBOZmyn zrSfu{9OW%P8NgaDFM<1eUK4lMy)a&|egC_QFpHVN=v6O!YiwgV)7i}3T`!E~o8bq$ zIlO(|Goa_2UK6{x&~T>ldnHV05HFg=jW#r-S3F}D=Q+lAhHs)X{a#FOy3?Nibf@iH z<~X;vy_&c&j&&S~NRS~JzYL}uL^6Oz)ZiZX$xlcxU}R75y0}SJfRgho>|qa^&BQM7 zv6HRrWiwmZ2PXEjg`H$PpSs%cwL*Ov>}G5)7~57*FL6KrkONcO7}e%JMYZef-WszP zA7l9TwBH@ycz;{M-`+*N@h$Ip?_0g~_BX)cU2k_=Va5g5G@?NrXLXC3)7?Gzj1?~N ziBo*jc5XPk*KO)juba-~&N#zEF7lC+yv8u7v$?5|V^#NfAFno66(X}+NlXSMxz=@X zc|F|X`Z~!zH}0>44(y==9q2?qI?|1<^y3=+=t~#6(}7)dsTcj{R`)r+ub$+rYrX3} zC$1-QaO!i@+1)+=Ig-CVhH!^n>?Vgn%2lp%98=-kH-^E mVXde6JbIbUP9pB&wG*Zb&G zFLrTvzV(}Lz3BIj`qbAM2AltU=s_R)+-oB5zVAKWdynqm`@Z;iKfdYlehTFyU-`>_ zKHQ`Kd{o1I`gXtmx#iCCVUWS)y}&J7MREXI^VVg-xD3v7uJfG}xBc$tIsB~ PU`1{@<^E`RgD4_wPRdx*z`qAOQm4a2+5%>|EP<9^B>F+%4b9@g3kLU;?fmK3HDZ zEnpomU (9$zN}ArZ3RjdeoZ;h4D I!N3sSoeD}H^ikirsUY@w zpa-fT7=qyzexVnppc#Il8K$8cf*=(jAqu*o+`*yT$=wU6+NyD%%l* -3Fdw-_-#ORDc_j;3vF58-5_(1(yt-VsPo8DkdV{v0^6(gD_A5BfugFu3988 z12L|eE50HuQh_jhU^B8}1+1bpMk6)OqBN?aG{S%?M&mYS<1QXwG%8;Qh9fx+Aupz3 zGd5!{GUG3 GR7^1FK0B|YdE$$>w_M|7|93ukdPY&fR5+zUm b1|w=_W@hdsNMhzkuH|KJq%wBoE7oQm z-sV^4W*z3{NcN_VwdF|WWnO-QaJph~9_MiWfO2}Jaw;crHYamN0$1+XG4dGqb)Szx zjz^3FTZKf-9ReVdA2I2V4(Py4o?ju_ wUtH#abn2yAUO2mUzb*@^CCaIQcsgz3Tlt$^4GHH}9 z>6kjHnbN44mS~zfDVnZ8B#`Kva^ J8 zFbL|QCMt@WB%_+7jK=7T#z7dV Pj#|sg|m*`sxsrK~4UuujVMR9_z4{ zfsL9dcJ4z59BLkrC=etovJxw{5-Wr xqW{tGzzy3T&yq?km6UD-KX;zS=8^4y?e2>$D!MxZ3Nq7OcUZ=)68G zz1AzkPAtV%Y{N1v!XB)kiYuXZtjBh2CI~7SIPA#gLCKD6$U3aaj;xH9Ys;=I8MrLO z&MeK=?96t6xz6jk>MYLUEVTYCv?ha(#et+ELKuA?Fy)qa4!{8%K&FN#`EjcLC`*38 z0uG#~N|b?0oL{LHqSkip5Txg?mMXE1t=XC_wk~VgmhG~tZPu=Bw$^0aYAvw_!`u?< z5#TMh9zovb?cSC_-d3x&0&d^_Ef5^R;UX>$FstH1zzSr-xlSq~B*VFeY`*^MzaGKW z9`4oRzz CP|x*01SOF72Kx3$-;IIDXul4q? o^$sur5Afs~u&dFo(Jn9p8|`f&EikR*9xN>% p&B$)88utX%*-K1c`{*`HD#Ij`1sKNlFD>7IBT7 iqL3AxvhV1O@ zIclLocc=>&Ee{|#Ic=pKK6Ul=^%yZt8#rCNySpq}lo2LLB0*;;Unn9-h1=WPF<+Jb z`iJgzX)IZgE?t-{Re?2Tps x+T-Kn=a(7&wWumoh2@ 7cNURX_ei}%PUiURCH7@T#p<#RVPk>96NC@UyM6$s1`3^LW(Pv+*U18e;Ye@ zFjamtW0@N|ZWb&>5Fau!WRWLIZ{_XfB}#uHLSG|Hg&R9_He`=CXP`G{mf3_IB1nlF zJa0O0q@I{B8#!kdE>J*clrUeK5-3lLrotsgYbH*Nf0DEA^7uY(o$T-RBu8i{QjX}u znJZF=!qem lq?@9*mB>fzzx;Naly?(XR5==}Wr z`uh6&`}^eN C}<>ltx-QDHo C~5 h)ybQTjB}-P)S7b+A3ZBpl{jynrQ~J2 z`hEZa0RR90A^8LV00000EC2ui0N4Q~0RRa905u5I011*ng99~qDVWfU3rGtMdKt)2 zVZ?=AFcw^B5hEjrj50z5kP( 5HpRU+_$Nm1?#Z)36Hadi5*WYzV#zLfh4BwzqH* z$W8lpE?gLPv%%Pl;1OOJdiy>?u($9dzlTSSSv=-Z<40N=k8(`eG2_OU$3$MNMT_Fa zmLqr8tOZSJ)22JCUY)u$88om_$Bs<~3>Y$Gp4Gnn?AeWHk>W&(G$E969LM9}z)`AH zt~haS+=wo{l%!{+Zb*{;{Q2@+xk| E1j%j_|oAI9ETRee+W6+qeH y$RL9!1%AN82Qu)$0~8NV2nB^Ig@lYs5UJFWKpCZ^(ugFY zG$Jx4<^)qrDcuwlBLE OxV_e?Zk^Va z8>nRbHfnFW=?2C#*Oe-sc%6o+QmlB1wAkO^{xC&Giaw zuf;Ztt9`xBx~qJ%P9Vbvvlio@4B8gMttZ+l=&gbaj!T3LL_ooyClL~%3=c%aON1v> z#7jlJCvLbQi6M&E;)yKY6cdUl_IMPGI^KxVi!}Op@WTKYJfx3GR@~&pOdff0HW*_G zR#;kEc~+QZamg{3W|ldo%5kDK=E{M^`R1E`8K#e%Hy3v2pny&`iWWC(A?Ip#b~dy= zrK$F_YOTq}G;E#4W+@q?;3jFNnOZHW)}eMCDygL6mg?BQq1sz+*Y&o^b(^#eY#gQ3 zH!HW@La1%8#mw5ab;-8>?d*Jj<7x)8?U`Y?fz_J9t>T6o9xk_#ldGU7>=r0FyX4Zl zAQkLV?g oN-=`83g Q#|pK zz!Tr`@f$bE@yS?f$z@w4w}rBrDXaMxVA#)m{mc63rBBXp1}dna;M=Lspm#p XgBn%mZ11E8e9=C!jK&};`pVA^_f9bsL^I&Ev4ee7ea za9NH({mE712Isd3_9|Mq0?;O~m8-mwFmKY@pbV<@trbdca^T9G=Vq8W8F0>qoZ}q5 zC`ScZ+{=geBAqP%ltG2j$zq7IV1Y7ZvAWg8XkR2!h!h)A5Qs2jA_U3EK|rLCkBrEQ z7U>9wR 8EkwR3YO-N}-QJT`0j vw h`Ijj7Y#4eekb@CrsfATlm5l&aj3z%whR*BMQ!t7ZHwV z-~_*}cE|vc3vkf~b|AqUFpe>d!x4^h*qFvL&asYZY~ym^SjRy229IwXjvyQP$Vg7I zl9$ZnCOi4bP>!;cr%dH4TlvaZ&T^4sY=w4k!x|2Xmk*a{Vt@@q0@PSX4#M#cbGUi` z9Of8@IvhZX2l(Rwq;SAE;Oyo;`#H|);J_XpV1yLpInIAhw4CW|XFThf&xww-q$f@3 zN?ZEUn9j7OH_hozd-~I$4z;L9P3lr-`W@lO0XU*T40Q1@iTPw=6tP%^KA0c}FP3pQ z6aWGN*dq(7$bvlt00IS+!^q`OKp;AB21=-c5@+Z@AdGF~UH7^KS*Sq|N ~HGv7hk%L~J zK^2%txGK&->>R8^;1CzMnwKpHQzRS{rjUcQ9UgIrtGU+>sK+lxUJnN}92_10R&U2w z&hnPK{N*d}fdd@SgLt&p9R5&%etS>@^TPb+K#w@jVV?5!2L0$rZ+X$v3vht{yS&vH zfP*IFE+y)7CHoc#EKK0yWAoS?4oCq7Dj|omm%S1cNPz>);bR)}_z7o7K_&2^jk?zz zAC*YK8QAW29?$s!thfgt20!?Fu;Kx0Z+qVt&-lhW{_&8HyyPcO`EWeo0ej$uKRD3% zbhO|QH2#7=YEb#eKL7-e_dMuJFZm%1AskD%#vV$*`r6z6_PEcz?srdlAtNCNCXo7n z;N`A-C*;g7*!r6Hyyqf(VGkYX04UNxed>cE`g QI6M*n%$j zf-o3^GB|_$mx6niYQcvC#t>$pV|5#n5H8>X5+DJv01hse4mFkz>M#T;AbrzUeQ5v+ z*OvkcFb?U^W9cvsHP8V&a14mB2qzGRi+~8numc@Xg;(ff i%0Cr{sM(_@z z*8>7z1Ong=HP!=!W&{m@gy&!cn5c<|pogbd4x?C#n^+E$XarBN1U %fml zz=Tqm2AseNVla?V2ns1s1K!Y&{x}33;Dsk}2@)xhCx8f(&;hEjkoyP@>+p|m2!|sO zl5pi6k}A29EZLGS`I0ahlQIdDhX@WsU<4rlzyU_!4dCzuIrk3!kOfv? z0_xxoyubk@po`!T0{&0}>5v6R-~dEvlpLS{N~w~E_zy*Slu5|}-~g0DX#z}{1xv68 z4FC>B`2bm94(reZB#;B7um|k`4i4ZC4)6wSmjlEGZ{Q#R4bTn(5C{Y301sdSgc$-~ zU<3* Xo>@?u! o5Rra0+>V z1H^}5EZ`vmF@zq~4oL6> |Q>mWNOTP)ejdAOwrRn}iSq zSV{=Mc>+S c9&Qpbqi>(11ZY1Q93? ^o2&Tl=s)twvA)t#;X$VDN z1iWy0fr+PeTCB!utaqBHf4Z#9+N|*KtYG@A(mJiwTCLW4t=L+vP}-_sN)9i|4g(Nf zd9Z`TXJA;Q0ian0f1nHOU =o019FN2Y!$Q`sxQu3JQCW1tDM#PcX3N z5D!^E0f^9>K@bKE8w6U42owOY0!y&y&;zVc0L ;S18@CG$t1SRkW<6FKUzz(y!z3;1+ z@e96pnFER00Pm0kA&>+0+X6X<4vYA>b(xIha0mq_09H`GfdIM!Yy>p`x^ $91d@<{$vaD8~Y@f*^2=x>y7)K#LqO4u?3ym=LT* zJPy`)jcI(!sGQ2GyvnTH%C7vyFZu>$& xYkNKDkx?l-Nz@BgF4(A+~2#A2;JkE#U z4p0r%hj7llw$zOX&mr*CQSA )b#D>*|daP!B)^obmYQ5H5t<`Mp)@&Wu zY7M9G5S3_s*TyQ>dcD?gZJt|QsB8_`TP>t`UD#;7*NC0iiXGMR(AbXs*pMCBl0Dg! zJ=tX)q?fG@ |BE3RI^IyF7%Rdjuj-V?xGb;gE$V%>gCQ0D;f|CBOkKKmwZG zhfkmmhR_184cmb*+qHe$f#`Ou&D*aX+x9@)hG2!27iGNXc;?uRxTkDS;CRmc+>ICA zeTdzRcir6o?RMIIj_Wwy j#l zLP!8D%nTxsh3-(y=#bFH`~?co0$I=l46dLG@C6So(h`2)Lr?-ry}T1Q0&q5{{S& ze&Idf;2X~2Bwpese&Q&e;wnDj#k}G!{^Bqm<1#+uG+yI2e&aZv<2o+V32opPeF)?5 z1gqc#3@`wbD~}VR3=@HmB2`e9AOgaS4kR$;R6gYjpa2zK12r%N8C~UG?&Yqh {^oEV=W;&hbYACne&=|e=X$>9eBS4M9s)MK3OU^hGb)cz z;4T9H0o0+X3l<;(?@+@M9S@Rz%o0uMmVW7&p6Qyt>6$L-A5H0=9_pe#>ZD%krXK2+ z?&+Mq>a5=Ck^bqge(JJ5>#`2&lkV!cp6jok>a^bLzOL%F4(qx;?3)hkvHt7GPV1n4 z%$|-8MPLpGU<*a=2EDL@P*6l?W>cYg1dZMR-u~_29`52k?&MzX=6>$zp6=?t?(E*~ z?*8uZ9`Eu#@AO{p_I~g9p6}~^0Jjyc_#IE`a*z2~1w(BC7_f8*pYRI5@C@JZ4xjM; z;9mUh14WMC#&98`t+@ja3zlH;5C8EXAMzqU@+6;f5#L@vunH6}x#PMniO!=0Z`ud{ zU-C3x^EQ9;I8X8?FJ3!uUO+J90}u-qKV3ep@f-EaA~5qgzw}Js^iKcu_SN(L(DUT= z^EoZ9)?V~Nn2)~v jt-c?TPLJ1OQRGAOa$w1Z4kS zRDbtRpZ9v-_fbz?Q-Aj5mG(I;qxtRj4#C26pY-Jw_ ?Qi1&-0(ZUXhRboA39se_v)V`u{-qK2Xb%aPjc+ z@}0}=b>H})fBC~-Uy*-a$3ObTzxuCF`Kv$r5fA(H#r&Xu{MKLm>XrPkkNT$nzx`&< z`rse_vp@cm5BQEh_|aYlMji<`;2;^l!V*AGrXBpPAN$(x{H4$Nr=R++4-o(U`6K90 z;6Z}|6CPwZu%W?(1s67?2+`rdf({8% 4;WPw2gg!n zPN7y=vxb>fta!P?^%|1%Uz#wxYCikWq*}gm+3NgkTH)BQq(i$to7S%X$B}Ap8|K~H z_iw^zJK{O8$_E2Ak#K|}()6hW0>fZk#(;u$U(Tylqwb4PFU;7oL4zh4cRR+@Hd~X` z&T{X{($~?GmMIgvc;NZ<@8^I0wl5%TF=_ziLV?1$s0gS+7YnSiPQ0|xgDa!avRdgv z3^j^ywzV=$tt|HrgHJ39DfH{Lx;iwmKL1>z&BX5dlW|5G1>21w00l%&xepF}4!Q*` zaqy=a^Se>LB6&M9N$!|*^2r*P{KuCcY$;>M$Dp9Xsi-6vMi(Jzco3`+p`1}lGjBpO zO*Y$fvoHln2!Wh&%0VIrcGdw0oOW`s0*?U87@(B`wfr$USQ@PV?oCD;b@Wk4Bi%2~ zIqSSL&prG669}RhAW$hNJn_PX$zai?Dka7gOHwD-gpx&8W0kd0O6jx{Pd)kc6OW;; zRHKvSit$7;sn*bi84MO3Z$%7mgK@lyn)R+OYG0JrJm6ea56M}(^|r=ZEyXp{T{*py z&{IPBU|3S6`clYL U3@gtj+r-{SULf(!mF+*>i#)e33MWdL0R zsc=DqsHOr_gm}r54^3ycEw8+mKo-rj*FMBewQ4n-mcC|5(yC0L43>H3-VnYtS4|u4 zbbt%;Ft918q@wDwj9)C-zPENe61KTcV;Vfy=rXx2dLd%}+TMLf_Sb2eyY|{Ao5x*P z=i`ow;{zEynYdz8Ex1b6%}B=2 2P0T+zE2*^_(P+(^6-aD7jd2 h3->y~zr-Mm+J>K>mAU#$%WLAjfg` zQ)fYAaRZ06BWu^<%_ETaMB<+%aaGh0M{#A`T#ni-<2x@g+Q0?p8^w=L#$L97XZJqR z+R0_uTpwaN rC1 zCU7wM%NeJ9FaR~2A`d)J1`B> `Zl$YNT!OeYr4_L!BU>H7lz2TeE$xW9 zS)2@MSUxpO@Pv`sVKTtf!+*)|iTVjk%s4hiHDRkXQ=}Ifl{7{+$|#Pa` Va0SYK)7MeYS&sL^9(n=?Z5{ygQV8gJjOh$8PYb^)1KCjr!v08jAbc{ 0eBib<=;Mc7t(odKH2dl z>UKi45Pc4Du0rM+J6B9qf^J*)2~Wt9In1s9Nl%cTdD=B&M9gYR%8tdsVjhg~0V4RW zR7ZeUAXDd+4be@Q?Rh5Y=y=SH1%;TKOk*2~R8PW (mdXp@T13?Kw=7LlS-thDpN-05am5nUoBK^hF`KT!)Gg0c`Ttv`O&hICh z^rSwy$;y5%4~-5*BqeLgo^X MpSu26AFK}5xvUsZcs+_q4LxO*6|LaR2YC} XIX8EP_3R+dqX6de*Jr4 z#-aBB{A)!g;$S)80x1UCUGOvMnVttjGkM|V5P2<(VHkH!!&l;2 $ zM<#Q(Cfcc1fK~=j_|YFmOl8}Gx6E^ h{mT0#UgrCS!ao zxoKF_#L$z=#RSr(*D4IRsL-M*pzjjl;k{Ihe|dGRjor8;%T<49z5x2LD}h_+8jQRi z81(jw%n7S{!dmtZRO4Gpv_|vT H z++^;w r#T-Js5pAUF!rp^SO3+-L*+w#y*^S(FPkp^d zm?MCxFcW99$33^^_Su@lo;kNwdDXo(V6f%>_ae>s;z>c (h3@QM+vxm`3=_X)m?v+f@16 zU*PGNT=AWOArh9C0j|g1Xn`^ddBiI|B*~j??#I6;l6FHbLg5LC9UT@^zPkMV|GiFo znDZ&T*V6?}=)eC k* z5+ne^Kr}%~^B)SrB?7nwH)BIC m_&h#wr|+HPCP{>L9fI*3Uf*) zT#5=e 0f*-ksBiO=P3`WSS6eXK0iekk{i~^`=gj_q70}MW4 zj7HvIt-4YJV)!3xhyrB{ns*^PY5YdQ@F^eom0aA#ZIp^X7&TJ_M|Knp)}ke1_yAqh z#-Pc I5+Vj-NCh4+#E`6*;YyaC^vR0^%DRdLYvci@PzGffNCo+WVK~U8 zWXgmD%6{}mV<1YLbjd`tNUmhZal)crz@d*+1_ZlA2g$^<%txo}M>Xh$JRr&ns>ib2 z%DF_#Dcqln!^<4f$&suMx%^9T9H*aJ%MaLxbgD-^B)G&>Olbs4Am~S^G$Ccc!h$@4 zXRJ)i6h?8hAxWf4y^2L19L=UA!Z*MMazc)^giN;#t~!VT%`;2Zq(y3cpjcQ-8NkE; zqq|4H+|61P$Ip5U;cSFkxJ}U1P2=pucl1rx;{h!}M5+kQ=%mXjq@moYJN$c!Ec_B+ z+)ltGMrG5K&Z18A*^(}a#dS2#%k0k9QVt%twMLKttQ@ZRluyzm!&zDdp4pwHkeCFi zgJJjv?ex$2L{G^Rq1JMP30Rl>gN}kMMZ{##292u+Wiqb|MFWM!q$^GhjYGj(tn (kPY_f8{bbQH zHB&$w#52S{1S?2IAyGJmL;&p+^XXBY+)^CP(>S$K#Tr05g$k@RNVf@8L9J2;MZGfY zlr!X`;EE1|)C48K(?(6eGdqq5!U3ibQ{e*C9NpCa8@iz4f&3!?0=P}BELBsLzYux@ z@Dr2{L&Dl*RX5etSdBkwECb!?h5w1nMqt%HU?)uF)n45`&hmwy`prF(g`@k-DP2|t zRK+U9%c-PM@{CJs4Z=?Zs$s3rL_J7G{Z=m})T1~b0D8+URaSH@J#l;(HwXn`A=h1n z)p(UxE3LwGK^uuFR!hB6ecji`LoDhHtx$1+{3L)FxYSvISAzw-ceGXii<$rxZBtU6 zSWg7dRm8a73$7|~vpX$Vj+Hz5b3WID4to@mSvc2|mDN4 y*pclw8H`3DL 3%jxVQyePq}~_kWs14TTvi2w_RMvYg}764#<_!!oA8EumDYnSjENM zackT%IF43`1N)PK_e{`NHC=vv)bFE`vVEArHIPOqRxb%%Z dG;9jRL!D25N1R_*1|?j<*h zn_erSR~)!oH9S^J7+vm7U#$J!Dsck3WnFa{POq(B`xRUK)sfXDToByJ#0}uMYur`P zU+cBkX%z*6RbaDYVEt_c@q=Go_1)*CV5VDNz;$3SC -WKj*Is@Uwn4Cz61LbX4tdw9D zM&b_^Ug9O-mV;kts{;uZ0UoAel>=b`5#0AJ+&_qpUrZMN00!e&`{6W`T!D=?QJCLU zIbt?GyD5xez@^!{twe{F(hk1kWBXz2ePV$fG0?1IL1tXxo!%L)+Z&kB8?M9@-r+S~ zWJt5%<2?mQCIB3+WK5ktOjh4U4&gzmKS?&+6jsnL9%Z2$;0tzxNdAC^MNm;F#a4D@ zSX*Bp;DZa!;N@l2=#XFxcv)!BL}M zW>pjp-D19EYfj=kc4VWt05EXk2>`)|ZKrA;XWUZaU(N**zF|v5;7omIcvdYCeq>Y* z1;a&SR_5D%F0Xzz+c%z2DE<;^F6d0oV=753+>L|(QlRBZbj}9JWrr3tY$jVzNwYHc zWJ=cIVkYQ~j%O?G fyb)`yioahB-|>u3RSf>vm@ z3CQVNKw+5fX`k*ddB)vZ3k4To)jEI$6%J>8UTPTX=tsVR_l@R@e%KW@W~?S>WnP#C z$mU<3WtK&1p1$g_)~#|5;fDbOwJuhq4r`@;>$z*>S^8ye4(5?Qz=%C&y*@G+&VT^9 z;3h7Gb!JYsw(7z*?6}ru40ht9twa>AYDJFh7z65G#_5LrOu )`(B z;a&xswrz?o27$$BFV5@cHZ0W6-?^?e8L(> gcBH377zpzR-r&anzdd9#3!GuEc^Q<`*Y&!ZPxQxd5E@<~sOA5op^3 zck(CCW8yu4ZJ6sD*n}jPV g{_mi_G?k~RpH;{xM zkK-19M(mDr`;qT2$6y>FVUgxy1uf ;DYI`Z7DB>O(@nn$m|CP^-G^@MbLD0mTE2*UHWBoS5Kgh{(%dI+zBuP zyQW&a#`RnmZc!)o507#u26m~w< S$`m;7A_xN|rwT z)^-k>@U-scXw!v6|8#OUb`C{7WVeMQ-}A4=(CLHrc9$I}_jYT?Y;0%ue2*V)@AWv? z1YlS77H4HM5BU2zY?Wq!F`#SzG2h+5&T)p9_G2$~C(!grX7*Nn^U+=Oi*I<^-uPBP zgO2BO1r2$8A9=6g_E_il#%A%AZ*rIauZ$0X`4(!(Wo+>N_l3WCedqEI=lPCbabdr8 zq4yqa?q!>f_(<@1yT)&&U;3fXc&B%QF@Rj$-rXB_@u0VQ#cBHDHu?!jb*Tnrn-}|; zA^RSW13h=_yUupD$N6_(GGu>+r?+iMICx5~>b0-?f`NIX@Ap>i^C=emIx1%%(0i@# z`6RD+fLDAZ!}@NAe6Qzix~F`aApy_-e9#YlWUuMRPj9q8>NlT-z~}r~A%UA1eML}& zp^oHI*xfqdVim4>)|VOo*S85$4*)NJTrh}xDzEuJ-~C4E{ge2De_(^@{Q;Yv94D3p zRliNZ4}0YI7Ul1VFDQY3_ AklU;XTll lqy%UZ0YhP%$PD~lJH2P#JGQ7{&C4bP>~aaU^Z=PMBt&QZx$$8oayu_)TmOY zQmtzBD%O=XIo?#Kvjoq9uLcDLbEDKI0uCXHnmB9L#jJAY(yeRvF5bK}x#Ik1sBh07 zd iBAFm9yx&Q{PQ37@9h_ayR zG3MB^XVb22+onbZegEb(^x0>@gJva}Nqs9u+t;%o-)`>wIrQjzG4k%*8|;D%f=Lfg z>+pDE<; 76tnJ`uFp%t2v~5udLz(18A64N^t}n z#hOG+MF7nfjyRG}J_%ST1%?@FxFLrfdiWuTA&NL6i6xq7qJ_NhVgQQ oVS=8h|@fXWqDxbg`b*#YqbP-Dbb%6zIZ zsEK$FMmS-G7mm2(jFHlKBBhmvI4OpcVw$0*nR?o(q@P9_Dx^*(3F8zkuE1iKMmG86 zlnG2Rs{yI9Xy-1wtgwp#tM*tcu&K^EtE_IyTBVgZW=Uq4DHciPn97o=th6t_>E^IM z)|xH1-2U1kwsFoXu8PBA`{uRgcDt^(!v;&Mu)qSlqOCf9YwNea;<`(ouI$<8dj<(Q zTyaJ{#F}dkLbxb}2{bAt#1Sib m1z;1kt$2*cL?911Tuku+V zU-R*?4==mc!2iAi@Jf5HG|t}d-n;L=Yk$7>+?%gH&EbDP`}gt7Kfm}&lMnW;_M0C6 zHl8z(?ZGFw0Ga?CKoO)NgF-e@Fa;efJa0k4gBIq92<3xOddu5{7-hi=a s5)5c!8Y z|6$=10nARof?}9w5QibDslzR9krYHd&?0i1poA6`LsYU7m8x7NEMqCl7*=rqmbSbl zE^Rrw9+D1cK3wH4dFjJl^3a#P+`{>g2|Q&YvjWa+h7pl?1tvOk3tmL#7P5)VDOxj% zQG6yUnlXd1`Oja$aK$+-dBk=4?+S$oCpA&w%z4stp5Lrv6zf<4Z#q+-_4MaI>nYHI zHUpj&fF~34)Qo~clc7v}XhFqBPHEyUq7XgkL77-ka6Yu72o0x0;Tcjq74!-V6 J!@GPrcJeKbDwMfeQP$U`qZgD zvk+waL@?CpiWwAwq0rdpKL1Kj!3uVv3oV3Q%jqvm2BWc#eQaJW`3WrSm9Kn7Y+ntl z+08bi0-E(~XFD5#g&vf%pk*j$Q+rr ^c{FME|+=wylLN zaAO->*jo0s#XW9fXRF-GDz~}LB^yqmn_GX8jRw=LB%jzIK=%Y-I}8xcffQI&1uY0U zaI45tBcR>~MNqxaXzzRB>(u$ux4!d*Dt+;L-?`RTzxMqvfbAPWr#6GW?0s(q-V2Qa zx3>ZjaIk~fyWRpfL%kKQuzFEY2pZ6UPmZ-DWiN~25s$XSqiqKN1QAPv8E}{eSiph@ zV$24|Vxz{ss4 BfaVj9#Ivq~5)l9Q}t;TBoN8z%CQqb%egQ#r^S zo^q63JXyR(R QR%r)DSE+s85aR^{Tqlr^Ym_QJm>Qpg`7z*t8OAje;Xrn%9Nkb*_Jn0t~p=1KPzy zjTZoDAgB4r&Q=1np-p6ID?!aLHa4KSAixD+!xumR!U4el{cRxlqTDxLfVP+I=NQMB z!^9?YwaF~+dAs<^YId;*s?6+tv)cpWSU0wpE#rO@Jloplf;7+#Xn+%(-Pexs!y7K~ ziL=|!>JIqA*`NoEXT0Mc&v=iun{APgyvHU#_yRza0iTFw6+kHr8ZIDIL>EWV<295h zlA@G}xMk9_z5d9`soZU8%V)Wv)40X-X$u>6~tQrlGC$q&Gd cm8w13SHqdEMZL<>_=px8BGnk==ISl068A$mY*dPuMh=2xd?>pQ3{`P#o z-QWHehaNJ)g(fTj0`B?K0V0o!$xlA=k^eRxGCzm^&Fi7_;@G=5;tphHV1e|^;5+I? z5M$M^9`zDGeZ%7}df0;=@rc)Z=R2Q?&d*`)oBw_9=broF&w&ebSb#L7;fv%aAMbPj zeCIVj{OMDl`n~VH@%51X>;r%9#s~iI7qI#7AHV$KH^2B(u72dFfBos7L&8C${>*0{ z0zT>PEBH_lCp= CmpaiC12?ibptY8cd-VDwl4W8iO<)9Ak z;NV$;2>74~FhdS911xX>1V8`*Mcxkp!ODsMpB~6w-2Gq_&K@)90y98g;$^}SLVyjd zTz5s@D)@j8#DW->;pDA?5&}U0WPtt60R%Jw=k1<2WWwjwp&j1g9qIw})uHFnq3zAV z?&aR@4Pqt~V(-D>9KazQLVz0{AscSt7B=D$CgSEbp8bs*Cb~!CZ5|>5A0z(WCqlp` ziXtOUA|zVk7UIDXsv;z|qWwAEDzYLQ&Y~l(oO`TX2HYYp?jjJ_-!A@QPxX`<{(xu* z#vlL%fe4D)43z?zL82Aac!g3Ztwzq}Tw`3L1z3PYSOQWZl>$Oq11g|6VnC#kBhQ%~ z1UeuClH=Q@V>_zj0_I>mihygpodwwcBRvk@JvyKzWMe*NV?Wa4J@%sy_9HV8 GCc0z_H>L?)y|9;8J&q$OCP6;>fEWI_`lVE`DA50t?w{J zVkXRiOBNzkRwYdWB34qRBF;e-0HPvpWlbjH5kBP++CW)y;Y|hrPU2)vvgJ)OrCOTh zO_t>vcGnN!f-T@BG3F!}LZV#uWf#h&V4|g2u3TWgC1Uo}TGpjnGNxnZBxFXWWOkQi znq&abfk|d2G5!E%+GTfP=3Wy2BOU0U{uz)HoaRBa0vV`{B+%S57S#Z%#ez5*Tf~5E zBFAmwCURK95qyKrA(b{}V>WtYHfjPxN~9(Tr*QToax!N`0whF6CqYUlLQW)aQs;F_ zBt;$pcXDS&9)T`!CrgHBc!DQ+isyLhLJXuQdxB>&tS3w+!!X3;8pxzBWCAR#K^1&t zPSSxQ0HqH&!7980Up7H~7UCKtXcer%Q#QeVHt0>_BrxnGAK1YlYy*J+Wh|sZFQh^$ z2&GV}K`aaa0|==8(E%NF!&=VeST?AOe&idzVNF8fjK-)dZlPJ8C1Iu|TLMEjTxN;} zKsV6AE2Joj8fi}cC}i6Iz>fmM57+{fP9Bun0w4T 5-NxkfLajo@tSe=9<2Oo4P5H@ 7EY4{_)>;wZa%^foa?T zGd80$Hi8B~BcrAU1Kk3B+`=FH!9xs#qs71<+@>hx=BDCi&e^6YaA&CcW~fF4cpgCv zpem|{DtD%8tA^)#rmC!>s(OOwFx=)5bZV@w=dJ3(t-|Lp_^PkQKr*ZWEF3Gcu7NHf zE3>Y_A5_6GAZry&s(!-4AHc$bR)Mx=tA1wdwtlO&N&o~*C>;y}0%$0SD#9!L05I4< zgFa{zNI( iY-tWklB{)**bw~BEWYY!~mdyY6g`;03f0k2QoCo zqPoBUGOB_&>QRsvC`qHF-h!pZz%W=UZ6>ba7A{2CX5%_;rvAaL{_5f$uH{PZq)w{g zPU n&74=wj}qYU{I}?zEn+=WeS6fUE1W?zgsX707P5I%w-k0Pf1G?#64p z(yIncs2wQ67`Oq!UI2+!?JGoVz4or&+JFYwK)yyVBusC_@~a@czzb{x4D_ECAW$xN z=su)E_=YbJq=GTzK^}C1z%sxic&!}>1Ib2g{7x_QLT~h{X!P3e^iJ%^MlAKp@BI2` z{K9WH2!jFhtIG<4g}y-5GB5%R0s}Mf0$Z)szOTz(=r%AwQL2H!o~9FQ!^^s?2#>JT zUU1b)E!I+S3a9V`o2v`EFan4z3}-I_)Nl;fu(@u74acw(@Nf+S#Uq?10`xEu5Ah?g nF9Wb1?ROpV7&Nh + + One Day of MacPython IDE Toying + + + + +One Day of MacPython IDE Toying
++
++ ++ + ++ +This document gives a very basic introduction to the + MacPython Integrated Development Environment on Mac OS. It was + written specifically for MacPython 2.3 on Mac OS X, but most of + it is applicable to MacPython-OS9 too. It is based on + "One + Day of IDLE Toying" by Danny Yoo, which you should read if + you want to use the cross-platform IDLE Python development + environment.
+ +
+
+ +Ok, let's assume that we've already installed Python. (If not, we can +visit: http://www.cwi.nl/~jack/macpython.html +or http://python.org +and download the most recent Python interpreter. Get the Mac OSX binary +installer.) The first thing we'd like to do is actually start running it! +We can do this by opening up the IDE, which should be in Applications +under the newly-created MacPython program folder:
+ +
+ +The IDE starts up and shows an interactive window:
+ + +If the window does not show up (because you have run the IDE before +and closed it: it remembers that between runs) open it with the Windows->Python Interactive +menu entry.
+ +
This is the interactive window to the IDE, it allows us to enter +commands directly into Python, and as soon as we enter a command, +Python will execute it and spit out its result back to us. We'll be +using this interactive window a lot when we're exploring Python: it's +very nice because we get back our results immediately. If it helps, +we can think of it as a very powerful calculator.
+ +
+ +Let's try something now! As per tradition, let's get Python to say +the immortal words, "Hello World".
Those '>>>' signs act as a prompt +for us: Python is ready to read in a new command by giving us that +visual cue. Also, we notice that as we enter commands, Python will +give us its output immediately. +
+ +
+ +Ok, this seems pretty simple enough. Let's try a few more +commands. If we look below:
+ + + +we'll see the result of running a few more commands. Don't worry +too much about knowing the exact rules for making programs yet: the +idea is that we can experiment with Python by typing in commands. If +things don't work, then we can correct the mistake, and try it +again.
+ +If you got to this point, you now know enough to start playing +around with Python! Crack open one of the tutorials from the Python For Beginners web +page, and start exploring with the interpreter. No time limit here. *grin*
+ +
+ +Now that we've paddled long enough, we might be asking: ok, this is +neat, but if we close down Python and start it up again, how do we get +the computer to remember what we typed?
+ +The solution is a little subtle: we can't directly save what's on +the interpreter window, because it will include both our commands and +the system's responses. What we'd like is to make a prepared file, +with just our own commands, and to be able to save that file as a +document. When we're in the mood, we can later open that file and +"run" Python over it, saving us the time of retyping the whole +thing over again.
+ +Let's try this. First, let's start with a clean slate by opening +up a new window.
+ + + +Here's the result of that menu command:
+ + + +We notice that there's nothing in this new window. What this means +is that this file is purely for our commands: Python won't interject +with its own responses as we enter the program, that is, not until we +tell it to. This is called an edit window, and it is very similar +to edit windows in other editors such as TextEdit or BBEdit.
+ +
+ +What we wanted to do before was save some of the stuff we had +tried out on the interpreter window. Let's do that by typing (or +copy/pasting) those commands into our Program window.
+ + +Ok, we're done with copying and pasting. +One big thing to notice +is that we're careful to get rid of the ">>>" +prompts because there's not really part of our program. The +interpreter uses them just to tell us that we're in the interpreter, +but now that we're editing in a separate file, we can remove the +artifacts that the interpreter introduces. +I have added +an extra empty print statement so our output ends with a newline. +
+ +
+ +Let's save the file now. The Save command is located under the File menu: +
+ + +
+ +Now that we've saved the program, how do we run the program? Use the +Run All button at the top of the editing window, or the equivalent +menu command Python->Run Window. The output will appear in a new +window called Output Window.
+ +By the way, one thing to notice is that I made a typo: I didn't +quite copy exactly what I had entered in the interpreter window +before. Does this affect things?
+ + + +Ooops. Here is an example of what Python calls a "syntax error". +Python sees that we made a typo, and warns us to take a much closer +look at our program. The designers of Python feel that having the +system point out the error is better than trying to guess at what the +programmer meant. Press the Edit button and you will be brought to +the trouble spot.
+ +Python is often perceptive enough to direct us toward the problem, +and in this case, it's telling us that we forgot to put something at +the end of this line. In this case, we need to add an additional +quotation mark. Let's add that in now.
+ +Other errors, which usually occur later, when your program has +already done something, result in a different dialog that allows you +to look at variables and such in addition to only showing you where +the error occurred.
+ +
+ +Ok, let's say that we fixed that silly typo. Let's try to run the +program again. This gives us a new window, the Output window, showing +the output of our program:
+ + +
+ +As we play with Python, we'll find ourselves "switching modes" +between the Interpreter window and the Program window. However, +if we try anything more complicated than two or three lines it +is often a good idea to work in an edit window, and align +your edit and output window such that you can see them at the same time.
+ +This is pretty much all we need to know about the MacPython IDE to actually do +interesting things. There is a lot more to the IDE, here is a quick +breakdown of things to see and explore:
+ ++
+ +- All sorts of edit commands such as find and replace can be + used in the editor windows. See the edit menu.
+ +- The bottom of the edit window has the scrollbar, but at the + left are two navigation devices: a line number box that you can also type + numbers into to quickly go to a specific place, and a popup menu + that lists all classes, functions and methods in your file.
+ +- Above the vertical scrollbar you find another popup menu, this + influences how the Run command works. You should try the debugger + some time! If you do, and you wonder what the new small column on + the left of your script is: you can click in it to make Python stop + when it reaches this line so you can inspect things. The profiler + is also nifty: it shows you where your program is spending its time.
+ +- The module browser (Python->Module Browser) shows you all Python + modules currently loaded. You can look at the contents of the module with + Browse... and (for modules written in Python) at the source with Source...
+ +- The Package Manager (under the File menu, also available as a + separate application) allows you to easily install Python extension packages + for all sorts of things: scientific computation, image processing, + building user interfaces and more.
+ +- The Help menu gives you quick access to both the Python documentation, + if you have installed it with the Package Manager, and the Apple Developer + documentation.
+ +- The File->Save as Applet menu command saves your script as a MacOSX + application. This allows you to create a script that you can drop files on, + and much more. The IDE itself is such an applet, completely written in Python.
+ +