From 6fcdbabe2cb39bffa6fa68bbb10ce787174d7d87 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Fri, 7 Oct 2011 10:01:46 -0400 Subject: [PATCH] yayy --- pragmatic_packages/1_content.md | 371 ++++++++++++++++---------------- pragmatic_packages/2_outro.md | 10 + pragmatic_packages/ext/moo.png | Bin 0 -> 42424 bytes 3 files changed, 198 insertions(+), 183 deletions(-) create mode 100644 pragmatic_packages/ext/moo.png diff --git a/pragmatic_packages/1_content.md b/pragmatic_packages/1_content.md index 60ad55c..5f3520c 100644 --- a/pragmatic_packages/1_content.md +++ b/pragmatic_packages/1_content.md @@ -72,8 +72,6 @@ Perl, Java, PHP, ColdFusion, Classic ASP, *&c*. -!SLIDE -# Barriers to Entry !SLIDE @@ -107,6 +105,8 @@ Perl, Java, PHP, ColdFusion, Classic ASP, *&c*. ## http/url/lib/2 +(better in py3) + !SLIDE # Several hours later... @@ -146,7 +146,7 @@ Perl, Java, PHP, ColdFusion, Classic ASP, *&c*. 'realm=(["\'])(.*?)\\2', re.I) def __init__(self, *args, **kwargs): - HTTPBasicAuthHandler.__init__(self, *args, **kwargs)s + HTTPBasicAuthHandler.__init__(self, *args, **kwargs) def http_error_401(self, req, fp, code, msg, headers): url = req.get_full_url() @@ -162,135 +162,27 @@ Perl, Java, PHP, ColdFusion, Classic ASP, *&c*. If this was you, you'd leave Python and never come back. -!SLIDE -# Fuuuuuuuuuuuuu. - - - - -!SLIDE -# Step 1: Pick a Release. -Pick carefully. - - -!SLIDE incremental -# Step 2: Install Python. - -Decisions, decisions. - -* Download installer from python.org? -* 32bit or 64bit? -* Build from source? -* If so, Unix or framework build? - -!SLIDE -# Let's play around. - -Maybe play with the GitHub API? - - -!SLIDE small code execute -# Ruby. - @@@ ruby - require 'net/http' - require 'uri' - - uri = URI.parse('https://api.github.com/user') - - http = Net::HTTP.new(uri.host, uri.port) - http.use_ssl = true - - req = Net::HTTP::Get.new(uri.request_uri) - req.basic_auth('username', 'password') - - r = http.request(req) - - puts r - - - - - -!SLIDE -# http/url/lib/2 - -- Which module to use? -- Worst API ever. -- An *extremely* common use case. -- I'd rather be writing ColdFusion™. - -!SLIDE -# XML - -- `etree` is terrible. -- `lxml` is awesome, but difficult to install. - -!SLIDE -# File and System Operations -- sys | shutils | os | os.path | io -- Really difficult to run external commands. -- This blocks dev+ops folks from adopting Python. - -!SLIDE -# Packaging and Depdencies -- pip or easy install? -- setuptools isn't included with python? Distribute? -- No easy_uninstall? -- Broken `setup.py`s -- "Released" packages not in the Cheeseshop - -!SLIDE -# Date[time]s. -- Which module to use? -- Timezones -- The stdlib can generate but not parse ISO8601 dates - -!SLIDE -# Unicode. -- LOLWUT - -!SLIDE -# Testing. - - -!SLIDE -# Installing Dependencies - -* Pip? Virtualenv? Never mentioned in the docs. -* python-mysql -* mod_wsgi - -!SLIDE -# Integration Time - -!SLIDE -# PIL - -(On OSX, this is simple) - - - - - - - - - - - - - !SLIDE bullets incremental +# The Problem. + +- Unclear which module to use in the first place. +- Prognosis seems to be urllib2, but the docs are terrible. +- Worst API ever. + + +!SLIDE bullets incremental smaller # This is a serious problem. +- HTTP should be as simple as the print statement. + !SLIDE bullets incremental # The Solution is Simple. - Build elegant tools to perform these tasks. -- Provide a real resource for learning. + !SLIDE ## Python needs more Pragmatic Packages. @@ -301,32 +193,39 @@ Maybe play with the GitHub API? Dealing with things sensibly and realistically in a way that is based on practical rather than theoretical considerations. - - - !SLIDE -# Break it down. +# Python for Humans +!SLIDE incremental +# Let's Break it down. + +What *is* HTTP at it's core? + +- a small set of methods with consistent parameters +- HEAD, GET, PUSH, POST, PUT, PATCH, DELETE +- They all accept headers, url parameters, and form data. + + +!SLIDE incremental +# Urllib2 is Toxic. + +- Heavily over-engineered. +- Abolishes most of PEP20. +- Docs are impossible to read. +- HTTP is simple. Urllib2 is absolute garbage. +- Scares people away. + !SLIDE # Enter Requests. +!SLIDE +# HTTP for Humans. + !SLIDE -# The Codez, they are ugleh. - -[trollface or something] - -!SLIDE -## Unless there's an explicit requirement, -## a student should never see urllib2. - -# No excuses. - -!SLIDE -# Pragmatic Package. @@@ python import requests @@ -338,14 +237,32 @@ based on practical rather than theoretical considerations. print r.content +!SLIDE incremental +# Achievement Unlocked! + +- a small set of methods with consistent parameters +- HEAD, GET, PUSH, POST, PUT, PATCH, DELETE +- They all accept headers, url parameters, and form data. + +!SLIDE incremental +# Do this. + + +!SLIDE +# The Litmus Test +If you have to refer to the documentation every time you use a module, +find (or build) a new module. + !SLIDE # Fit the 90% Use Case. !SLIDE # The API is all that matters. + ## Everything else is secondary. + !SLIDE incremental bullets # I Mean ***Everything***. @@ -354,29 +271,118 @@ based on practical rather than theoretical considerations. - Performance. - Corner-cases. + +!SLIDE incremental bullets +# Pivot. + +- At first, Requests was far from powerful. +- Deeply resonated with people. +- Features grew over time, API never compromised. + +!SLIDE incremental bullets +# Today +- Cookies, sessions, content-iteration, decompression, file uploads, async i/o, keep-alive, callback hooks, proxies, *&c*. +- 17th most–watched Python GitHub project. +- 20,000+ downloads from PyPi. +- Twitter, Library of Congress, Readability, etc. + + +!SLIDE incremental bullets +# Cool Story, Bro. + +- We need this. +- We want this. +- It's worth your time. +- It's worth everyone's time. + + +!SLIDE bullets incremental +# Subprocess + +- Powerful +- Effective +- (Second) Worst API ever. +- Documentation is severely lacking. + + +!SLIDE bullets +# (Proposed) Solution. + +![Moo](ext/moo.png) + + + !SLIDE -# urllib2 - -"I'd rather be writing ColdFusion." - -!SLIDE small -# subprocess - -A powerful module that . - - @@@ python - import envoy - - c = envoy.run('ls') -. - - @@@ pycon - >>> c.status_code - 200 +# File and System Operations +- sys | shutils | os | os.path | io +- Really difficult to run external commands. +- This blocks dev+ops folks from adopting Python. +!SLIDE +# Barriers to Entry + + +!SLIDE incremental +# Installing Python. + +Decisions, decisions. + +* Download installer from python.org? +* 32bit or 64bit? +* Build from source? +* If so, Unix or framework build? + +!SLIDE +### There should be one—and preferably only one—obvious way to do it. + + +!SLIDE +# XML + +- `etree` is terrible. +- `lxml` is awesome, but difficult to install. + + +!SLIDE incremental +# Packaging and Dependencies +- pip or easy_install? +- setuptools isn't included with python? +- Distribute? Why? +- No easy_uninstall? +- Broken `setup.py`s +- "Released" packages not in the Cheeseshop + +!SLIDE incremental +# Date[time]s. +- Which module to use? +- Timezones +- The stdlib can generate but not parse ISO8601 dates + +!SLIDE +# Unicode. + +!SLIDE +# Testing. + +!SLIDE incremental +# Installing Dependencies + +* python-mysql +* PIL +* mod_wsgi + + + +!SLIDE +## Unless there's an explicit requirement, +## a student should never be exposed to urllib2. + +# No excuses. + + @@ -393,32 +399,11 @@ http://python-guide.org ![DON'T PANIC](ext/dont-panic.jpeg) -!SLIDE +!SLIDE bullets incremental - A guidebook for newcomers. - A reference for seasoned veterans. -!SLIDE -# There's only one rule. - -!SLIDE -> There should be one—and preferably only one—obvious way to do it. - -!SLIDE -# Topics - -!SLIDE -# Installing Python Properly - -!SLIDE -# Installing - -!SLIDE -# Installing Python Properly - -!SLIDE -# Installing Python Properly - -!SLIDE small +!SLIDE small bullets incremental # Best Practices - Will recommend **distribute**, **pip**, and **virtualenv** out of the box. @@ -427,8 +412,28 @@ Explicit directions for setup on every major OS. - Teach `datetime.utcnow()` -!SLIDE small -# Installation Guides +!SLIDE +# There's only one rule. + +!SLIDE +> There should be one—and preferably only one—obvious way to do it. + + +!SLIDE +# This Solves + +- Makes Python more accessible, lowering the barrier to entry. +- Great reference guide for seasoned veterans. +- Practice what we preach. + + +!SLIDE red +# THE MANIFESTO + + +!SLIDE +# Simplify terrible APIs. + +!SLIDE +# Document our best-practices. -- PIL -- Python-MySQL \ No newline at end of file diff --git a/pragmatic_packages/2_outro.md b/pragmatic_packages/2_outro.md index e69de29..8008974 100644 --- a/pragmatic_packages/2_outro.md +++ b/pragmatic_packages/2_outro.md @@ -0,0 +1,10 @@ +!SLIDE +## Questions? + + +!SLIDE github bigger +github.com/kennethreitz + + +!SLIDE bigger +@kennethreitz diff --git a/pragmatic_packages/ext/moo.png b/pragmatic_packages/ext/moo.png new file mode 100644 index 0000000000000000000000000000000000000000..a8753d19a4a185b52e4e3ed106f7495f2e5a4ea3 GIT binary patch literal 42424 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
    }15{i`_rXtkM*@R-wKyH(5n8I} z^t5`ISF+|*QD#r;;r-nX+|KnHV`HEiU7{!;CK-+?Hvi@E-H;eTok z?%H?v;k1uCc(99hSQSvl@;*WDC#H?}ex8} z9hIeI>MSm%lR4C?>U-M_@n$Zxna3Y}J0riw9H;u;_7b32J;E3t@=wK;HVd%-V+4W z39YC|_v^g8-~Mac>f>6`AH&oH(p8-FRX-I?>f&%O`SDJyq$p+I6)st@XpxDXEL*g* zZPAV~T}njuhg)E{7SCAX5IWuN^RW7WpPg1P_tSh46(4_oA_U>GdzS}e;Q{59eM)>R6ZM(2C@6e$E}-&i;nC*(Ziy!)2yC)5WQYgd)b$V{VbYem81i`bznzpR9F^v5uTJNj|4KHbY9Kv zyj(2uvI}Caa#9`6uW@N@T{dsQ-Fde;U_~+wYy)A2&MXeQN~S47>f6zwKBEuM%B$fk zozx|pF8|4c4Ch)0l=t;aOpfk!%w!V742{*QtgU%JM_vvcUCR>U@zbYjN_41k-p-9Y z4kDAQ+`BR~c#r8G8Ku6x`QAt4VKR{paRvOU1$C}@c%6%KK{p<$prc$zyu z_{1^$w@1ysrccNI5j9N~;?=O3YvG^qk{9VFlUEc`Wh4BYt)kQw#20uq>+j@h3~ZFU z3iCJA!D9L9PY$YcBeFJyR^xR_EKyK;*=gl$wR3h!*oXIy2*CQYl6Dc#7huaTR8sGj zmI*OSM$T-3Wy{&01w2D%iMd3Y<93n(B!Zd?0t={YZJGNY0kB%K+#rJt^=j?}@(gyB zp+1)AYLJfv_vsdiV@rKiSeAMzH{T19de5FKENkM$WkzjSY|}>IYkX%A&NWNgrqRSO`v)TD4-}qe)(nlwq5ON z|55yx{+5Vq3{6uMv*J9(5=hAuqj-7Pb#7-@H@*0Vkb#FoU^`n6RQ!kV@q!THAIcjy z)IX%ivnfVpZ_m8kg1M#7_YEctFFV-p&Uf+Hp}-FXcRliIqMdE3;MUZ^bbC7=f8`Bp>||UeipLmG2aF9bmY+tIWp6-;DmA5KLJ>f71{^D zq9R}5;9Q2UljP)sRD$pXMI5Z!$=kA69BHe>&~a6`TOTjWqEckbEruFesY^@uZ+|#r zM%IaRUF(507xz{o#V`pub9G`bclcHY^7!v1hUd(g4^Li4VxG>k#`41TNOJgLNzDPx zEgqL4drnV$_apg3sGhY`S?TT{v)^5neKZ4g=;adn8bX8Wf|EbEnm=&bgB@4PJM^m= z`kI80E9#M7m0&Ojdyl8UwmQd!g19FIecSOBJCq&zPrXzFb$LH0x@RAZx3uYCH=qL0nRC>n2stYaB z<1Xkd1+N;VSh!rS-JUzaBmIZVI{xE>Blllxd-KED4|nd&UJwH>kX5aGn8{tnK~ByL zQ^vhHf+P0`&+PEpS@2dBzUR`}n_e|CF)cf9dzwdotRdsc} z?td))JFihI{4f6W!+Te(Yr6cWxZ>sH zv3SO}>p^e*3SQCyNc9E*$+2ztnU@YMsQu)xk7UqqTb+~T^P8JU{*)iX`V;RB)@H{4 z{&d@af4h0jn*2jAD2KI~tKaC#t0AZr=+Zp23%d8@H)r;Q`6+_g1<+6J`{LY<0evdc-R_<44UMa_P~r<#*Qa=H~TG zw|Z^g|2Zt@B2_Ma8lAro9WxeFb_YXM877Z3ao27=(2*=72_4R^)j;P z0&YFSDV>hh8nByWR^fj#;h0L&@X(9qEBF8aAOJ~3K~(eaWzs803asDv>YsFggKbnF>Low(k!0M>hs zJEp9f#8+MM`IBqNlcae0eI<}Il?0LN6665PIw$`?x6P{Yd!B9m2lv1@cRUo9R=d_ zp>ys8EppW%<|2POn|ZC01HhV))(Ifo<17OwTy;pv=b!y`k=YY<20g|m**thO1CBZ; ze6Au6Uf(t!?_z>AOFpa?f9} z^LYxSeK&LPuWu-AuWgw%vo2+}be;2-_8VP5-rhuRyuD^n2`T7Tbo<<@1xw%#8J~N@ zDVMt?yeSYOM)np4C{TixwK^7i=!fNt1&NeE zjG@lSn!Rs)G;GQR#b=YomzZwH{*>#W$h+T~v-7^+0&T$KE&Ncw^3k@LQ;WW`Y;bi= z_m(GU4I?G~@}wQVS`X7tT~gms!FQpFZQR^)y56&v>HJ+cEpDcmp8UzFMf|e?l!~u9 z<1^5yZZBQGSeAP>T2Dt6jlzRHNR2m?DZNQ{ZyMaeVNsA7rEsDw?2FCXgZZ1&m%mjB)dOGe~Bg^V{{Q0&$ zoQH844SSGm{K#o>TaaKwjH%AyE57b)pY%x4^oPq|x>l?b5kjnGYcmJH7ksXdeSaBz z|B_e|w4&jIorA_s1+LDO^gATqdAhCXUrWwxtG3?r zxhi^bPf&bb(WHllZ2oTRnG4_@H-_w;r(2umR-NdA%$5+MbL$P`;i&gW699uA;lr-Rd0ltl&S#!pa z{85#-tabj40~$VWS+ck6t@|shN%zX>c|^@ zWWkUUvTuMeG!KH+u=7Ta$RAov>T2Nb9F6Ed_y5POW&KF^@75gn+BN;IDvW=&uH|QI^L}w>RojNv zzciLVc5Ou^>3sG@ar9C13KcLd+8`MUW=pulavgdMAyc0UGj2_Rxg)e86@|pV&ds^p zFKu-81bXzCLoZuESdK+I5}{V=2*!u9eEa<44k7J}-*^KM+{FY;CnRF7bMo8WZ+?H+ zgbPc@UEBPQN$*E@HUI6(s?qZ*pPC2DGI52WSex1Y_Nw^Ue_n69&<*?)P;zH>-JUjWDal#egRVqzf{R{b6c#6i)!I! zgCcwO?0#2|VKY@a?}pOW4SAc^77s>-yz}Otf^ET!O&ZM$>Yjz@oErOhN6elP>Wp?a;34t6|d+! z6tpJ25s<>f$XMxP<{nkmvgdVYJXNX6!TH1gadx_5pSA9O^1 z{`S@%9QwI&WxEullP-fV(R~5HJTaZhC_cFWcm~u!G~@uyVrMGT`SNwnD+g(oTN?BT zXk*tMWj(t`_P(VUAu6M*(HUHO1BcHjX>{>SE@pT5Vt$kCLKKBsHF219e&HBVg$!NwmVthU0_ z^gF!>q}Vg{6rHvr2Z};OSivZuz^lxf+oD4me7OX-+O{-&(x6@%XRgS>3;X$87P;!7 z3VX!cTUJs5zzvi#KqLjjskRh2Xix#>BpKV7T1Bw0ftZ4Nu4g&|Y-&?&)g$ldfn6Ld zl(ExLFh5vf3Ld~IAaa-s*M=1`v=tquKY_j1fD%yWBf{^)q1U3`yd`8cs(wnOw``JB zaMBien?gDY8?LW)F-UACm5k3+5cpHKI1ee`d}rTjk!Oo{(oiw8^0bVDxf#GG=XjF9 z6yR8bRk+Pcvb7y9h>$^eN;l7k^o$Nh_WCNoBFn2Cf{=lNS28Hvyk=sKbdN+&wCDj= z9rS&RPsoTiaqojzOI*8C(&ckCCu7Pn5Y*(urFfN6Ws2Th1!X*}f)6+pOm~^`RE^Z- zt|0)6yKo>1Sdd=X1YC?eB`Bkln_*&3g3XRGWu=sxcMc^Kf#*rXyHU^2|(_N!zogRu1_<)Y7 z-ZM|!o#P_HVRuH(;maU2DXnrL!>%|Lnm=e*nFB(KA9x^uO&v8-#Xr)l&A=>)DL$Vk z_of|&ql{7d$N)YH8&>O5c~2!8d*AH1N0`UMm!T))2F`gVJzl&hr>%63h2M;TXb3Cu z7@lc#50eX4s2d($%qgyObyTe8)pNK?Rbb!BG+f>&;yUQ7OlOaJxfB6gm4oY8Vxr8% zNc2({SVzlF#mYg!!QqB*RygNm1bRWF9*u+^6Hd_5-1^t~l%Ebd;{@HqrjEaCDmXbj zlGS{?vHjgo^O-ouK**aq{=6~o6!^^^b#p<2_}CLAC!OY|4vN&5)4PZVH}vV-dFLD} z4N=cpJ6_$KHz~`IZ@(S8;7HBScx(I0ZTZu)4Y@8peYiG9@%GM@yYkY2%%477OIm8k zh%{OMXu|Zte9aWg$9TuSmHSGj50>9)fap-jJD0t(hUrrLQb4MZGT4wzD9OElo%cJU zaO8>I9i1_eM={daRZ9{=Vp%isqJKI$&UDgJkHs5EEh#wilsx#_CTS?%5C=mxBxxkI zF+j#tPDBP1H|lglHts1r{`kDMPPyDC7H^7gAX$gpzCHgG`u$L1I%Dwr$LmNz)*(NS zpK=&{k5%0Avz7XpZOEMiPZ?6y+TAVugdajC>qtd1Ncb8BUaO*o3w#Si8t>7?0(xDu z($~3l4yETfP5{FGoQ%SrN)SDy*GcjO4glXQ5<(8EVJ_OKu(ah+6(Mpr0DK`IOSevk3#+i#Os(C&{=Wg664*oH6P7*z$wca zHox?wwVpGh=?O4+kb%@Ig_ox^DT4!>ao5~9?5 z_DUk`z#{%A0-1?GTIw8KPvt3{hr;(XO&NT-G85RyN)&-Cia^@xJjG+=*X|xgj3f_o ziv5YyMG?rQ2;@qg=Tb}~UsD|czc+5t@!c=tX{+-TzftCI`B^jN(c#OxMqD#d8yvm= zr(qK4%)D<{ZSCRjzc45PSrAE5JTaqvT#D9sROmigkhVJau^XPOe1iJ&m5uPbu4nxR z{|04USK>DTkD7b%-Cr$&uS%{ty5f&Z`L8(Y%Ds9?ihHS!X!JuDb2Xc>QOL9i7`_Km zqi03O`OITm{^`|YCl_tX)G7UfgI@V@Me+W&n~wcQ-C5ONKDBH@RmanR zbo^+FTR@T&cT*eTtq9N~xN^7$O0TPN7^CmYib!xMH|pGZ^M1p+{ONN`4?mPFe?t6n z5FIqlh2X=tIDfu)(CDuA|2TQalZ3qbM9X1kRZRGDQOBzd?*{v!v?RqXKO)FA0){$w z<<$tjm6I5QW+Ty#Fbye=FS_&G(@(N!D9k2>Lj8CVD=X8M+L>j;V_}VoO^9LSo-bmd zYyt@qb}2l(;h$l<;*Amia$5J}`CIu9zX%qlQuLy>*F=D3fu0PQF5=%YPAh9Hh%wpw z4pCo(*XKXnPt?KF*_72l)yLv%Q)Li?W|}RFZX?T`_vh*;Dg4;KH@A|4bDrWq7382t zh+Y=~M`5_6HK38g&ylRB?voD;ctR~OLqZ?L@*R4>91v$<#RI`31VgvNxZR?gq8zSs z_+8gEAH)Y;RB^W3;39lqhybR%y3rD#`LANr0n<_k#iD@0s9yKXC?W+5aA5I=_QoKg zsPtEt%XLo3lKQbStx;G0QFo z1hbu+k+CNAP0H)&AU!liH*U*U25q|@#uRO04A#igbsr8K(r?9yn{D(Cg1igoe;*D< zM*m!bFlWf}UzToqVD~Nb=hmrN=WP!cSs!%i%&UvEZwW*Gyz-*%X2-{ETi>i-{fUpd zh@4ymT+={JG`$M+o?_maBKGoCm~9}Hbt|to+ zURJt-L=gT>o7XVlcU>#tcU|c(_c9|U4dHQ<2Y&i+rTB(0OB`Hu=ETOQcb{`>lf@K4 zsgHm;2WVDV#+1sYCqG7E6Q(4W0wRZVLJe3ULtD{d`V-jWRd|9M+SZE892r%6F4Z~s z?Hw9AevE-S!X)6L@skTlQ@5(2q9PBpH`|e9>+06%bgl*}4X`C}c!yBZulHaXv>+&;{m( zJtjskoR_6WwqAe~bLp7OIQtO|_q+)3^ajZk5AC2PuPs;Zw|kF59ifpEk#Kl79^n~Yk|y6ibo1sz=Z_aUxs+2aV8n~J z)qkix{KZAp672+pfKV=4>H{9(@g?=LuGlLC$zcY#9wBJ#x@w~;gd;kVB~DZu1$oVR|O-qAvf^IzUdgd$IKLB z=|43`&7vkdGjoQCIdnaRkWx!~z1vWR~g z0+rjtNf9nOm5fi73;^?-MotRqA_|ogSdz27&YOIXmKIebthiKK5~f)BTE_xf&CcOS z2aw;kF_E08bIc1!3-9gaE1O`k>g0v6SXJdkm{zGO&2micEz&;yJ6{4e zlN8B`I@b!r#7h@0}2V$#{M8rH1ghT=zEJ@EC9 zM{eE>uMy8Is$!C(uO9fu$0KVwQhC6Bb@RLX$&sg)2=V$y-;7tDRB_``szFNh+^O6Q z_GGsco#Jj7RZ=&EaRQ8CLoBD585}aeCSL|ns&fb$5Y!~Miwy?_Cof#r0%nz{R5+{l zaC_85k^v9R1gjeIq>KCia;8+*ws9*d z7*;e{ zE9dI=d5`f}!VZX*G*%H+rji-Pe=ju%K>DT@CnCkBfQZ7w5v^T%ToO!5i$r}xuegxI zZ^|hotX4p}BC7}LR3AA3r3{iX;aR%NE&$$}NU)c0`#~* z3F;9-z$D(g>YNa|f-SAYL6HPn< zCtAf^D3Hp#DRI_MDBW4bEGl0+*ISkBeb(=7b65e!3}E z6;M!nVVnFYJr8-V$Dm#q$^?g$$vSsC=qBj8o7iH$ShZYdP%4)b^z4IPoV@g>4pLA! z^#b5P>guOk>PYOo8-`qPRMGtZsv1GaM=v+&$Z9}-ytJKt{n=UICZx!{lmmr7*Q>9h7w-q_rwBj!)+T<}lZ zm(sqvyYH35W(+xS-7!1qsa~GrZB#+a6U&Q1{ox{{<73(@xe7ffhdG4XoPw(G#%grs0i#kJcQguB2CNCKF z(4~1xrvBp|u`ne*s`P>r3(1zY=iZ|0QK^F1Q92S;)V#jAU&nKGlWr2HcgxKz>#ab6e}GdzLq_wX4m3Wsp}{*xjhyDWn#XM3OCkZCFvO`f9-{1V?5OOv_UX zQdu1^53Yt+a8aFWkx6|gC+ZxA&8yrutK@NAELKGck)5H#N40^Jl97QuaT+^ne0je? zWsluo;apSz2JA!YiVxpxxJ_!{r2g5(!yrF?v2M)0K8tGcqaM16VA>7Z`fAAZQ0Nre z(@{D*_M-E-GbZ6M8LV?~j9#mYmS4EDF5Tk}{#~{JlMRxnz@`K&H$61N|GDUs3AZyxG0dCFy;E( z7GTIMZr+SQ)xxWFyn+e`;F#Ca%fO1fjPz<+20vE|P-I@APPV`x7uZWRB9Rgxur9T> zc7(MqRb}^qt6$qZ@7{O0}cW6r6XBV3p>|B$X1hu?d==xZ%?dR$HOe;)GIMJ02t8r1cl zL+%{~$RL|FV0;@DP{>`eaTeX#C572eW-nER0)#~vy!Xo`U#vXh;S&lqe$^#p$cZ`+ zkqj`VWHz=g_0`|vhveZlYWRM-F7@)e_*wBux-RwNTl#x@h4VlsU7IPynqIzc38_Fj z6>UFyuBD9>{@b_s^F@!`)4YS^U3Inc=)S@X;4h|>m5|Oyo@smJ*KNo-qf)1P_rOcs zu;C!>n|EFuf+kw70lMBV%I8;WZk5P|4X%3|#S;a*P_3VTZl*0fXmI#1^r{53l>K#1 zLt>u()ML+{gzHjY=Ic_!=x0|6FXOt@Blx;h5a0jUo81*B!n)Kzs{H3(nOZTUTE3_W z#7z3=6#0P6Yn%VnNRB?PSom81;QQUxN0ex1_`qH6f%lj>lAgb}fzjaq1 zUiL#+^aC3;DN|7MlgaWu<-=T6)M^Y$2btVAPUQ-vI_ZNe;I7h}!W7bIs77h7ijYd9 zY6KX!xAJ7Dx;K{P4Awb}JKMLSVFUTP)I>dP-MBT5>r%y=gT)JQUFxh`s}sGvbaliy zqpsY31UflwAMT774lbG@nD6;z(-$QF8`tnV4w$%5L)7ryGfFE-*Fz6CGv0fawSGbJ zuKQXAa4^S&4lC6V12n@%6`M(xj4PdKRmq~#45m_w0-G!va*&8|m|#dF$-$d0L~7Y}df z9&$?Mt-3$4p;cEM9^3Uv>mrHY-th3|_~2v8z9%sbfENI79Aq$UAW@W&qANf?_@^%_ zqmxt6bJZ%$n%wuXD-TFahYzi z_`1}eR|PsqNU@#)?Blv^X-gw1_{I`0F-DIP+3&G8K&h3is*Gm0_Ch)<1i|d>JVTEMEY)w*|xV! z*#_RL>YOI2JyQ)qc15*s+r!tTy0QQPO5Lh%8Xq>T64#|> z@mW0{FZt5Jv5xH>E7ZZStNYDna@d3lc^{sT%5NT%SHHRCw(Tk(AshGqW;;3T#8QP* zW8f2$%=~Ejf^?v64TY}bP>;F31)g(Y!>SzBCb2M;JrVVWAj3spa?_g1F;SD!cFx0o^lpaFjPpr^R=1kM|tJ^wB!3~#} zDT+A=vi#8Jq)`lIz+LJ#NOf9HY7tZI5&=EVBdtoB4NzEt!s}g1834Ot!IFt07q+Z6 z`|BKh4OHqhN0LpHx9+L`TW4(Y6$7jYg@NXMqoSO2Jb7z_bvkEN{oL-ATgVaTS5KDO zYzGKuSJVXz$$BYl3YK19C?qUe#|y7P*h?h}B=|M|qOwZT@h~oE0b#aL;MF}(?;uB? zSuq23mS1;be#`dO>o*D(wSD`Gr}vQ2Czr`Pc|b%V{8#y$us?@W#uGz}5jaH4nf0#T zb1-`v$Sq>7Jm1bQbnFu&f{j@u{sk_<7S^Rcd|CeDb3eQ1ld!*+TJuJ2|Mum3C*9Ow zusv%??ZUDTmhSrMf))d{=TX(0U#vOsO5M@-;E7sRB@K9tOdH&FL&>|(?s=fO{PEKY zmi~I@oOe_%fW^#wxqsIYy$jR;01d85L_t*S;&)&B;?!r_a77|I#i6gdx#N*R4V50!mNFz~NEBh5~!$e4ZFOf0i&epqK5z0Glcrx-INgrPNa2ACYsgtBfX zTt`H0bN#MNCIY@ccW%_a%?XWB?b!IJHWSWi#s}jQFCXcUWbimw>O9b7;|z%ZkfDg! zla7E@in3C8NhCKXLYt-E;3~5uSQ!KFv4*=6=r98kg56*$eJI6!6Ucosx~2z*o;|@& zi#5NnQ28F?^bH|d%{UHa>}GYy;LBtdjj$<-0F6JJ1h2ddZH?=7PA^)K`5YigLR9gF_m9fhNT{YshYYY#o$$+NUC21zT0OUA((T1H` z(W1oLia^B&gp(P7p9%YwfPQVDjY3gnlX9>{b)L+eWwGqK_J;htla7*$$;p^;B_s05 zrjN7pDV=mgQYiz>`#!xH&oq5HB0VzrYv&HS^hohzjMRg8Yx~M=`O}j?zPCO8^}`Fv z$bNOdtp4Ef9S@IyvvucdYkOpTk$+y2Rdn}s0^j`frLmP$%kw+8xBj+=^DQ#pGZD!CI*0csp5N)~h+B@8IQ9R|A8fnR zF%Ur9m<)2-poM3ZU3*r1%jS*&hnLSNCYxWe|BRDKeT3_U5lGwnb9TowRS~n_FZI-$ zTGO7UvYPlp8+XYIhUdcq^-_VjRNTiY@{=75y+J~xAHJ;p$Mj!mw~rGoXRUD z)?K%^yQD+@csMiEz3Yqavd(T**&9O@r7UxswvMdWs zfL3*q4+5_gKvL=rpe15SECM-kzdh)goP{7=>($gmg^O87k%M($!543=8G-elcTck~ zO+(~)MN9^@i5J&mNlQr4O|3(p8k7tQAbl_bgqU5L)$i^vJ0EhVcI4s#WzC zLjh z5NblO`a5M;27UJO7qvL-N-PRj=Ei_{i>CJ!B@vjy2xR~J^YH7{tQ<;VplE6;r!e@? z5bk){Hr29?sFExxGnUgWq6IM$>nj%A9}DK9b`8P>H@u*WR`MxE1x;;{Px4Ao6;i0G zU<9W%0@+{Z;f7DMC|#)pdbNyI`wp9k(72WSSD3>;WFUnBPz;1x(w9I`xrkzv9$YL< z(k}}oATx<$u`x3U@u*EY0y$CVVNU63%@|M~!+$I6-sWsnTi4PO96}ZRAH9G(@rpCS z)o@OuLn_jO8DuwR(L>p`#1OK2p_D|-AtI0ybQ=QaMlE@Gg}w~c4Ak`)~U^j z3GZVhk$eO)S?5W48?d(0UFHGZu+FWR=-s>b$LV@cD*|ys*QMej&>q>0*5kVxaH(t{ zhgh`-VvU%3J_2c5mkLAEPgS&s3sNZs0k*NOV0Rw>@njyfxc(iQp&#X^cQGd``xr+|n4x5LTm8VH)QlQf-VtFRXJq&Jbm1j7w-F6fb)@ zC7stOPM!!8MIfCK$mIL;bmTkKb2`)}5%K`;1Yk+Rfk-rpfFlCE^?dFaXi5b2>V#xM#BvkflOYvhx05s?yyA|#u_Vi zy!Rf$3TF)=5yqv6H;RB~1hT)*p{l}tu$G}x;wN@Jy2jgo8FEPXB~H*WaJpBiVyBZg(Z>M-j-H2;@Ya<0W#CGbQB-!k9JT zj~t02kdX-FM4bn^YRCGHYCI!J6B)_52;@Ya<9qWE@6U5?5+aAA2&6dzIZ@|XQ-3{yN7G)uNMmpG?kZ&?$>R&wQ@-!m5?d5loqUjuROQ1BV0n7S`x(dZ?g9 z%zYsO*?&F{ISbLLKV-ln_P!8-wAFd^L3UqApJ7}!s_{SgnZzqysqL0>G0u!O52n36O;rm`E zUOIRBnP;6aW>^^^^_yS2WA^voB_v_w?XzwJaoFJ7UFCk|3%{p0ZAU*>Gd{T*qRyES zO>fkRBGBg}pk24KXsr3oD}P!4;m$_O*zFTiKIG``pC<80ALQwJ>?0)C?z5w zia?);fcBis*bBdX&DYO4?$G`)^rr0}KEG_`PnJ9j$i)dES3L835Kl!ELx0soDvYK| zhx6zb9f?vE+elB)2xxWwm9Nh_?$CW7u6btpBR^gBDOZsI@>wRHvX9W6r4n>_Y2%|V zsebX|Rcn|(ud8x_KlF(``OKcmpEhSRs@O5yj9QP3nIoXRKR@Egv70_+@1`y8#E_W3 zdYxzB{W&#?hAr>Y0=eEV5DxI=b+(ju`jQ$)nHD!=+=hoKlcWjf^xuYY3fZk<-;T2> ziMr{CfL7-zG(aa*o6!u^IryLc`*5yBp2Fy*T$QLVbw+4aTDz3nbX6#v0S46{SN@2Q zd<3-X_T<%B8uXL7g%1sdtSd;|G$v0-XF?A)T>@Cn`1Q2PSJdKAdS+wJfNkMV8Yir0 zMwoq84for#&&d!T(cDc_0_SRx%kV*5V)&1*G{s2T3Id=H;y(y~#FKCY(steMIG?N6 z?EuRSTnCu$apxFG=;}((rMtmNZnkfwR+;;4+ z{PT1eiQZw!)F67XowQxI_u`oGp;<)<_3l;bH2wJz0fd}6Z7LG4`0;v*(Fy@ZtDvZq zT5dLyhgR;Ofg`MYLWSiAg*>m)fg`x9!a&ppjzCoBfkS0uw6fSnaCD)t;XuI9&LU6Z z$`xJE-gSc!;TCJ*CoY22kGL=aar9Gl(jqy=6%xU{jmkM>+)~2c+uon2Bq)KDC|@=0 zbuwqVpmNyDpqf^e0UsE}D~C0rj6@q)iz{R5GzB^2xVjM$l8M0o0TsV&2|0}_&j0`b M07*qoM6N<$f@Th8KL7v# literal 0 HcmV?d00001