The Sample Application
Let's look at a sample application that uses clean architecture.
We'll cover the following...
To keep a single theme throughout the course, most of the code examples show code taken from a web application for transferring money online. We’ll call it “BuckPal”.
The BuckPal application allows a user to register an account, transfer money between accounts, and view the activities (deposits and withdrawals) on the account.
I’m not a banking specialist by any means, so please don’t judge the sample code based on legal or functional correctness. Rather, judge it on structure and maintainability.
The problem with sample applications used in software engineering books and online resources is that they’re too simple, and they often fail to highlight the real-world problems that we struggle with every day.
Sample applications must also not be too complex because unnecessary complexity may obscure the concepts being discussed and confuse a learner.
I hope to have found a balance between “too simple” and “too complex” with the BuckPal application in this course.
Application
PK
A META-INF/ PK
A m±>=@ ? META-INF/MANIFEST.MFóMÌËLK-.Ñ
K-*ÎÌϳR0Ô3àåòÌ-ÈIÍMÍ+I,
êdä¤Z)¸%¦ä¤*%¤ñrñr PK
A org/ PK
A org/gradle/ PK
A org/gradle/wrapper/ PK
A ªÙfØ ê - org/gradle/wrapper/BootstrapMainStarter.classV[WWþd`c@7.µÖV°´J½ -lDÛÉ!NfÒÉÄKï{ý¾ö¥O]«} ´®ÚÕ×þþ>i÷É@«,Ö3ûìÛ÷í}öäïg¿?p
?(âLÊxKÆE½¸¤à2®(ÂU±L+!£`³b¹ÖëBòvædde(è¼g±(ãÆNÄð\n
wKb¹%ÛxWÁ{x_Þe±Í+8Î9gX;ÁJ$¤I»@Ò®añÙji;óú²IhÆÎëæ¢îâ½.ÜU£ÂÌØN1]tôÉÓ÷½\æNúm»^ftÃʺºãrg!\[c¥Ìý6u«ÎºaÇ}a§/&÷òÑ"EØÛFAñC^±KËîfcNÿôªîPöyÛrùwÒÔ+8 ã¾
ÅÝôÂ\¦áH(kOݧ!¶'¡ÅùwWíC_ÃWLwÓþiö6÷°ku{nhôwWù»3zÙS±BÁ.>Èó²kØVEFª³bX
^µò«Üñðõ'Z¨k%CZ1³Urµ«N9QЮJ)a«âª8×ömÃÚx¢ÂÀwU(ɰTØ(«ø@,GàȨ¨pQUq÷)eê_¢YǺì½\T<ÀCÊ[ðL[¨Rñ!>bèÞ_[¾C´«øPÅô¦]áGâhoêyÓX¹}¦âs|¡âK|Ehý¤F¤FSC·Êÿ¯ñ
Õ{3ì\Õrß(ÃÅI»j4Ëv5*ïrÍ]åL|jWÏÏiÕÀX®
ÚàñÊ`JÅ·øN¤ö=Ãàÿ¼]û·ëCºAG
Év-µ6Jصæ¦ÚD²ñzL7{ª®Ù¢!Írí+r7û°âòRóE<´Zx·»×u[43ÁÌ"mc%GCk̯:\'
vå«p¼ÇÂúR|
»mÆE_âá:MÚ×çÅñÄÖaµ`ZP7ÛØ,m±I¾hÐDë}ºúl£/ÿ^4ùª[ETÔ¼¸1G[JDjj\q.¦d"¹¥dB8«éÜÌõÆïnMIwéÇv<Þ$ +¶CJ-@ÛÖèFä¶Îé<@ßfñ#Öcô¦'£gxh
ìWÚìÀqZ#p?NЪú
DÔ"-2f¤'¬aÇìrÒr¡ÑÂ5D²ëkèXCç´%.Õ°3.EÕv
ãáènÒîÊ
¢ÝÙöEâFh.4Lï{oÄ¥¿{,Ì~CHNò;NZû(øÂqÃôÑ?~\Âa,@ÃmÂZ ü?Ázòb7Ç(R$B¿Ò´ÅÄKå4§ð2>OãÒ:S§Â?{Î^#I?Øs
&ËÑ-£×ûÉèé÷0æeÍ0NèSgýgÊ*BÏé'èÍ
G÷a
ñ§¡3RtèGéN jè¨áàcDâá_Iì§çÿ<Á¡\´?àj× ýéVÐÓK© 4=J°OÒþÁth¤£¡XhMo3íÑÁ<P»z7;ð/éÑ5ö:ãüPK
A hQþ}¢ Ò # org/gradle/wrapper/Download$1.class}M
Â0
ßh5µ*v/×½?àB\xØØT{7ÀC)âÖæ
¾÷^ïÇÀCÆ0 $g{sÜZÆ[ÛmE¾,Å]&;i룲¾Ú!!̬S\9kÉ'ªJ:þË-VÑÁé6Zx/=!m«¸FñÓ¥YMþiHç tðnX¡~~Ð8\j4þ PK
A Çåî© L 4 org/gradle/wrapper/Download$ProxyAuthenticator.classS]OA=³-l]¶XWmEäC@Ü¢v_ÑÔjHPÃÓÐNÚ5ËN3ZúLÐD_hâðGï
4E÷agæÞsÎ=wnæ×ïï?ÜÇcuàbÖÆ\
ónb!
ÅÌöeÜvocÅÆñgaêç ?¿Å,Ë`¸X cñº½»#Ô¾QÄ«È*¶¸
͹LêFØ¢Ü{ݵ¶nXU®¥bp_ƱPå·Z0ÅTõ ®x-AGñfS¨à
ìÄäµ¥³%©ºÐDïHUÈ
2fXôó÷üb¡á »þÈ«%ÓµµWd;ÈàlʶªõÐô>NiLÆ9&Z7MÓïÛP6î¹( Kü8æ2À$6V]îSä¡G
ÿ»Lì±SM3dzÄÇõ`³ÛÒbaÂÌEIBê.ò_hÆõRþláÉà?R3§cdBËr«5¥8Húùí2CnHí²ðô61O¯Æ
ù°Ì A/N4ÀúJú÷q f>= <\¥5,r}ò+\îï¼ä!ƼqÏ>Dê.Àùr"ç
Ø'ÙOtþLûÒ¹#i¦1Õ~J«Õ÷ÅûÊú¾Ìî:¦{´=ü®ôJ[ÔzáàeR PK
A 5¶<À ! org/gradle/wrapper/Download.classY |\ÇYÿÒî¾§ÕÓáõ¹¾²NìXÖi;ËK¾dˬäÊvâ<IOÒÚ«]åí[ÛJJCJ
¥%£4ÍѤ@Û@)à´õÊÚ&ê@rS å(PÎPîhZ÷?³v¥Hë_4oæoæ»ÿ3³ùÜ·^úòÖ Öã×èÁg«Ø»¡×Tóëªù
5û9¿Äoá·
|> ~'ßÅïñ~_5 xþP5Äü±/ø ãOáÏx_TÓ_RÍø Þ¿TÍ_ø²úþuÏáoø[|E5WEioâøGü6ñzñ/~¨õ¯ñ¯ø·jü;þ#gñ&þKQþ[íô5Eù¯+}þG5ÿ«ÿSÍ7Tój¾©o)nB³úEL©0¥Ò_ûñYSüüJ,b¨I7IU]4¥:kbRcH"ÕRoÊ2O
ÊrYaÊJµë*CV²Æ°)k
YgÊú d)M¹Eí¡&²É[M¹Íͦl1åvS¶Ò 6ØfH£!M«+pÜθJ9)A¨ÏM^9ö&µ½¤+¨ì9ÞÓ{ªçÜСþhWoÙºÏÛí¶¸hzn,1±OPÓL¤<;á
Ùñ´cJ³ ¶¯¿÷Hÿ¡hô\çQn"®JåkAuÇàáÃúÏE»NªH
ÄåëNºm®=wÚ.¹öô´ã¶uëI18î±§ú½!ÇMÅ Aý´pTª;òÚ§¥Ü>ñ¤=Ö·;î%bÞ~AGÃ,6}1eÛÀ×£uݱÓqÜ{$î(ç%GíøíÆÔ8Gôy1úÃR*SÅä}7æ¾Y3Ö&ã±´ë,L
íöÊÅTõìÑ'ìé5æXN¬àì¾ ÇkìïÊI%ÛÇâ`ØccJ5¦K)+³dÌIy±DNVméZ&À¡Ë£Î´äâú¼Ì®ç¸ ;NåÒn|Á®Ý\VN9î '©üHz|\eLÅêHOõ;J÷ÚNoyÝNbÂd,ó9ÖL+!Ìçcä"ÞÍWù¸Ú®)ËÚH8£JU*PL{UszÓÞtÚ£Ó{Ó1._YíJÌOÒbH«!ml7d!;©oÊwÝ`ã_o[èO:$fÈMwØ©ØèÂxn+®ÅF¨ÀGc\9µ+1$¦Ø)g÷®CQ]·7ɬr R?áxÙEî ÇLÒkø\g<NimÙ9ò[fÎóÙ¡[
O½#ç¹HE]ÑîìuÙn<¦¸Vq)ϸ§1 #ËÎê¢2»õ£²K°E=Û3XðÄåRj¶ö\B#9ÍM/%]Z*ÙNg«`ECÙ6ä$ÆZWg9X\6?U ©,V%SÅÄî(<M¦ÝQGs;Øjñ¨j³à"eÁÃyiÕ\Ä%ßÇè¾IÏnV`¡47äNKvã#Ö%àióâsrd!wY²WÚ-Ù'w[rì·ð.¼ÃÂOãg,¹Wî#@åë¤C±3V\M,ÃbÌ(RûPM%rÐÂða/a.P·h[rH[rDò\Z Kºä%Ç¥ÛôH¯%}JÛ'å$cSpᦧ=gÌ~K¢2 X^¨ðÞBþ Âù-#ìT¤ha«RËTýZ2$§y%ÃrÚ3rV KîKPa°Ïs³äAÕØJÏÕUÍîëXÈ`VàWÑKY2.+§ô÷tõ¦h£}RØ$/:nÄNPÛ3Ê£"2/É#s"G´#c<ÜØHZñ´Fúâ1C-KÅXQtA`´Y¨Ä%ÝØÃ9Z½°:Ò±¸®Ð@V=åI?XSVÄ
ùP¯Ö¶Rl¼µCÃ% a©çÁ@¿ Î-r¹T¼vsaEm|Y
rr!È×°ý[×i¹XÂ_º¼. "z¹õòT¼u$k=h{¶73íé}}-æ^Vµît~³~Z±)§hÏû󹦼]&0©È¥7¹Dàc©H"éERééé$u6Cü:¡óõ,[2¹QµÅ¨ØÃ=¸Ę̈*Ô@Öz1kVn«ºìpjb$SY
²WB¶5°ÛjÛ4lIíÓÿm+êZò°<B,)Sá]w
K!ØVæö|Ýåð]î§ùåÕbLH±swILºÉKÙK׺âÎ$<ûrQ¨W=ºJóowCJ«f)i7£Ï°%ÍÖWy{¼)Ç;èÛé8]ÑqX§÷¨QbmĬëêóÝü
/0ua,æ¦ôµó4ÉKj8çïxË_4Ã
åo\j®æ&±vÁ%¸êwJóv:ï¨eî9åïÔµ´´$¾«L-¾îeïD¥·PÚÞÅ[¦«¯¨þ3jX_¹ÛkÚUÞÌK/Yªz¶ÅR]óLñųO¡IAåeȯ!«Ê]òÏ¿ãs
ÑTÃEn/^Ü9i»QåÛĨSra: ¹U®S¦ïâCíò'ß)^:E eëò÷³cÇÎþKnÌcômW¢TòiJúh<R×&Æ$::é(¬1Ø?LyÙ^A0׳U¨LöN¦
꨻öľÈM¿©\YLéúÞ)ô©O-Uîz¬ª©åMÝÓsGº·z
ÃNÙ©QE¹tÛÂ[ò¾lÆÀNx1[î2MÿªHå¶Ûòÿ( bÜWfÍEkwYô´XóæèÇXâbòC¿·Ïqm¹ÇrXǧ~rYUÎBõm\:G
È}¦7t.+}óÏÀxÒ²½&ñTr\ØõèÀ0b8Ïþ c-¦(OBH½Ø©þ¦s_>#ø
÷2fØ>ÌÑ üðñ[ÕØ$Í-³õ6hÆ
¶`âV¼½Æ,#¾oÓ?ëUiA¢{JT
î)aZÄ£9ïäú!pcã,*®¡²±å|aß5ø¯!À c^îF
l¦´-ÜïvÔb+V Ø
ÔBé²+»cA]6j3+tÏÓº¨ÒÊG*Q9zµÀyU7P;à°Ì¢ú:,¥K¥Ö¥V¯o¡Z±Ûµl+».'ûíWøxEd½Z©Ö5gPAí©Æ¦æYÔÍÛÝ÷î»ý;õ¾ìMu¸Ô²êðCÚ?̾(ûïÊ«ÜþÙ¯£vÓuÔg°¬=0ÐðSðY¬ì 2XÕîkl
ûf±._Ón}¡pØÈ`mØÁºvÿ²|Êl7ÕhÃî`Õêª=5aØÌ`ãðîªç1u·dy
+?M¡[3¸mC[fqûË«jVV]±÷Ô¬ªÖßêUÕ+°uªê=Ï¡©ñ¨mË ñ&:{ªI Ü@H}V¯¬ªù$h +«2h~áæ»õZÃþ0ÃþÚZn í/à¶öºòó×½ü¢NºÏãuºìu|U³!}/Ó
ØËù}ä¸îßϹÔûÐØÎt²=.FÐáG1Äѱú3ºÞ=K/ ÇÓ8¢%çÇ1Wq²Oã8/á,¾ð£§ñuÒÞÀY< ~*ØbaD§ÀRZ¼wãGÔx3q
J¾Â¹'.²ÖUú6ü8{AÊ|?D5u¼÷°WCk^ÃOÑVJ|J±K)ö²)U!ÕxïC¥¨´Î®ð§h_'÷«¨ºÉk¬7°ÃÀ35ð~ÏxÞ@¿åÜd.Å%ëè¸IM Q7iMÉ]|à&®~ÑLþØÜ¤=e÷-*Sý¸«Òãô¢*¯MsØ1ÜÁNasÿvñïNþíæßYÜuµP·½àBlÂÏÒ¥ó">HÎáÃ9¿×ýM³ØÛÓò|/Ú(+}OÃÒI|7¸9tÏöÏâÞÐ}h$wðA'«s²Ø¤ÓtÕCtd
«s¢Þ=ĽyÞ_ÀýÙ`: wáç46¾]cvŨfVØL&¾ï³P)q
pæqºã`N4gp$t´òÓèÊàXOsè¸wû8®ØîkÎ÷dÐÛîûÂ~NöW6
ú28IÞWÐ+ÔÊÁÒaãn÷Íah8tJØ[^¦&à$ÚOKå7ë£Fz´Ùd¯a·Ò¬½ÄË,«~Ô$KéQÓc,$寳ôÀrüË·Ü·1j¥öúKøeFp>ÎÒcÔ¯âEöú cOaöã_?®ýÊ+å ÊÃM¨¸Iñ:7Y
×TJGoò\ñH$h*d0;¤æHsGhÔÐi¶=Í7pn]._xĨoÏàLK6_®2»Î^-dÌ*}R¾|º¿eôaî¢LÙQÐ~Îe^a¨ñu}¢[O2¥òM4k}û9ùærz~BTbÞºvÐÚSÚdÛîÙêã¨O 4Zoê 3ÿ}Ña?þè0Ó$:³gÑa³):\hfc´D¯cl¾
³Uð<õü Ô¯!tºGX}[Y}ʶ£Y
r¶ÈÒ±OkÛBÏhÛÂúõ
!Â*z
=?÷Ù_a/@ÎWµä_žFU`\ÿ_MêÿEN"ømPK
A yL¢¡ Ê 1 org/gradle/wrapper/DownloadProgressListener.classuÁ
@Eï+ÓjDËöEÐ@ÛEERûI¦#3cþ[> 4Úv»9×ûñ°ÂÀç¡OĪ.r%ãÐJ[ÍM Çñ,Èä]8ökß_ÃPU:â]3aºý©GÍÆ©±\°^¶&a¡t"-ãEeY²ÿÂè˼8\3¬K tÐBNûÐkØûPK
A !9|¶ 3 org/gradle/wrapper/ExclusiveFileAccessManager.classWÛsWÿYÒÚ«u|iªVÍMNZ*;±JlB×NåKÆ[t-دvÅjÇÜSB[(·¶ÐP`x¡3íL«$xô©Ì0Ã}á
0¿³+9¾%L=öÙs¾óÝ¿ß÷íúOÿýý Á¯t<gZ ãYµÌjxNG_ÔpNGϨÃÔî¼Íx^mMESKA-EµH
1¯¶::`éÔvIÃb3lIÅDIGºquñåfxJ_¥~O¡ªcu,áJê§íÄññ
_Õð5öñÉ¡±#ùñáSgGFòÏ
t_2/YÛtæ³S¾g9óýC®SñMÇ1íªhñt«þDE@äv]ÛÎ;¾ô.¶"Æ,Çò Ä2ù|÷@tÈ-R°mÜrä©jiNzÓæ-=·`Ú3¦g©sõ,jÉ»Þ|vÞ3¶Ì.yf¹,½ìð]XåeËÁBAV*¦cÎKÆÍ 0 ã°Ü¬âëOUß²³×)T=O:~vÈ´me±¿{]ÔsdÁWÊä²å-3ÄQºd»
EÝ!£C½
Óq¤] 0E(¹Þ;&f£*2³B5ûþ?ÍÊ^¨¤£±}Òòè«\j÷L§èÂøC¶ÖlÙtGuZÝÛ5Ó["
äMn,Ér¹QïíõÀôtÿ1)ß,,Nå@LÃ×5|CÃ75|K@gùdÙ·'ÂhÊwL¿êQ÷ÄÀtnk}¢2ts¥óÒ&J',ÛVXjÊt³%syNÙnE>]µ¤o3É;6ÄlK¡q¸oF3åV½B½ÖûîÌ>%l W
Ä!½8$`¬ÍÀø¶À»ïDÕ²Ò3ð"®x ßèýD]AÌõÙ
EßU
úð²Wðªï©åûxÀ¹cóLÕQ½V$ÃCnÕ.¦×O<iú2]6UÒÓÅÓ]/ ¾HÛi¯
~``§¼,"ÞâG~xg4¼nà
¼)gLÚ½Vÿó M
²^2-É L¯µ\:lþ´ïä(ö3¼eà:®jø¹·qZÃ/üWYÐ;A¯¶}3öÜrû»µS#»Û
^L/xîR¨X |:Èu¬öL÷æi¢åYâåÎL÷v;®ÐáÌÖëu°©ñã»!IàÀ¶=¸A½°Ñf§UñyLXuc«ÎU\»êËÓ¦¿ pÿvQNεv5¢»ÇÔÒ|o9LêÞ»r×§tû¬KùUl)Ëį̀²¾;¿Wv¢ö椯½74OÚÒ¬È
¦+¾,1±é¸
ÚF[F
ýfº >#&¤A7zx N5@¸ïT3Ï(ïúåz§Yò4©}Ï
] Ò³û4½?E¹vqÝÀ<Ì áÓøLø¥ÁNpÿ8>K.ü1´âDgÖ[A|ö4nkhéLp©Á¸ÖS½¼ÍESÑv\ÇcêÙöêÙ~]+èËvvRÜ÷5dwÞ¹ÈÅÊý=ï#rÍ<ª\KªåT´¤öúÛ8ºäloç7ð`.ÕÊÅSñ
WÿßÄ®TU4]»Ýï¬~¨Tô®7½6övîãþà7ÝBZ §§Hè
Ò«@'¼c ¥¿Klϸ3Ö1·ÿ¿ãcÑÆ¶õDQDDwp>¨äPõzp}ÕÊ@8B gmγ*&_$WÔ
ëö+ôkôrÖ}¿F¿A?~Ô(µAZÆÇ8ðÃñü:üưqÁ¤Ð8
Ó"¼Ø
Q±câ ï?
z5)çqj
sDP·hí hô F9Ò¸ë§uì>cÄÑ~êþiMÈvz5ÀHMü¾ ªøð$?b)n¬IPò$)SÐþã¢üݳhÑ Ç§B¢¤<£À¿q¢ÏÒ0¶Ê.Ò¶åÃx½dÐ(§øÇWW½§w@óMìߥß5S<
a<õÀuõ.«Ëç3ôäGhí¹
GÞAtü=£dl¥Ù¦@]±
ùßéçysýùü:õmO
²¼8x4ó?PK
A ì,y - org/gradle/wrapper/GradleUserHomeLookup.classSÛNÛ@=$vÔK
J)$´ÄÚÒE¢`@"\@¤<E&Y±#Ç¡¢_Õ¨H}ìC¿©ª:ëK äaföäìÌ9ëÝ?ÿ~þ0QIx&c\Áâ
Bñ\¬_DÐ) I
Ædè"¿1-òYþeceq7µ_M/.§ünÆHç×¶6-u`ºm:%=ã{SúÀ0tßNomé\~ÝÈ1t,¹NÅ7?kÚUNýïðÍl·Ë_`h'²mKn6t¥,oVö¸·cîÙ\èp¦5=K¬ë`¿oU)×+é%Ï,Ú\ÿìå2÷ôÕ`¹[áÞ{ÄS®{X-ôÎRÎ'j-W_±lNo7Ìr0FÂ+y¾`×
*·ê¸à2ÄI~*zÑÇ0qOi$¤ÆJV OîÓ^«x9õ¦@Ñø-Ño©wSñ Cßíö©jÙEî1D®Ú«x2+ëÉÚ`óøH}¯·níðß Õº5B'1´¸¿í¹dÐ?aß½8fw©§nBÚqç
qhNaê^-ëN
3ß½û0Þd6ÐÃÒjELU1tS&>Õ-Þsc-ÂÄg¥ØONQM}(1á ìÁ#jR`ë¿Íiõm¹õßP/ÊQ«ðWM:Üâ;"¢¬+) Q¤g<Dº)`£W%L&|
Ã[þ¢[¬_%Õâ7p%wvM%9§èÐ:)¢ë"»aâh`÷éPK
A À!lá7 " * org/gradle/wrapper/GradleWrapperMain.classX\Wÿ,Ì2m"1*<Ë©`L0+(EI¢ã2ÂêîÎÎ
^˵\õJ¼j®×äº^ÙåäÔë%×{ï½z½ær÷3˲eüî÷·ó¾÷½ÿ׿÷=råR¥')Ø'+Pp"§ÊxA.ÁÓe<Cƽ^<Óg ³<Ïõây^ñ|ã"¼@,¾PÁp
:ä+x ^*`_&á
.â~¯ôâU^¼Z×Èx5xj¼^Ƭ ñFoòâÍ
xð øz«Þ&·{ñ/Þ© ïów+¸Ë
Þ÷*xÞ¯ IP°WL`Ê
W½¸&ãºøüXü°Xü@á×Gñ11|\Á'ðI§e<¤ °¬½§¹5Øv¬¿·çXG÷Á¶cÝú:»»$ø§´³ZCD4ôZf86Ò$aa[ZÌ:¢Eºím}ÍÁ¶ÖNUåpg[_º2Z°©dO8¶öJ(
Ôài1)"é]è ÝìÓNDt¡¤Ò"G43,æi¢Ç
Ç%¬æHé
GôqSÓÍv{:àÌjáòDù+ai`¨Ðd[ºf¯ÊeYF> ʰѰ?ѹZ>f\´Âz\P$ȦaXaòif\çÇl=CpCj±aaì!@¥!#v@bÃü
½çâ=Ð2½²1f
?¶á¬}d¯çÁÒE} +i¡;¬~*ÛaDigIÄÊÞä
½È}iJÛJXù׺ñär ··MtÇep´áá|7HXÈ
HîLÄVq$9JWç±×åsQZ¡l6oY)tËdDL·ú{:¹&QΪbï¹¥MdìUÖki¡Óµ1;¡e|NÂÖÀÜ!+Ðã¶ym->J¯0Cº»Kg³È»@´ã±¡
«èÆ!Gaª81wa}c®Wñy|Îͯ8&È|ª~&k¥Ã¶)AÀM£±/âK2¾¬â+ø*yÎH(>ëmÿGM©ø¾®âø¦o©ø6¾Ã©->Ê ªø.¾'ãû*~ª8s*¢©ÁãeüHÅñ +\Ìê½6aå:ãTypèOs=8ÍH³Fãq=ʬ1ßÏÄðs µ.ÌûØâ'Â_L8Ç _àÔì<¢IÎÎÍ3½LÀþJƯUü¿Uñ;Üßã?àkÿNæ
¹VBYÎ?âObßeüEÅ_ñ7WñüSÆ¿TüËøGð_æÓ,åAOÍäDO"f
£zføÔ^T^HEö¶h±aÕë42ÊÖ"Z<>FÕ4Ì´OjØÄkNF´&Äóæ×kj×Åk7çäa÷SzÈR%T,Ĩ²äU¥RIaIe²¤ªÒBA,áfSó?j
¶¯ü,KÕl?ãý±Ó1ÖV÷t/_¨ÏRb¤Awºs³@tO·¥Y¶;
^6ªÅÍDTYs©ÁgÛÉðHÂd®+hY
ƾ]lóµÆõxËÚf×:ûîne·öåÓ½ðÀÓç±}óh²Y(lMuys ÝÄ;BÂj
ÀÈ ÖÌ}RÒæ÷@þ©åÔõöãn^Go®ÁyGFa0ÜïTòev÷¬Ànýqúq]Íé¶ Y· éCniã*ÂiÁ®knÔsëµ#ßõ.ù§N3("®QUL͹ï7
e§´f²fæLºéôνÑÊdéÒÄ}H5õ±&3Nþ]yE×
³v~[éjèÑé4Úb×e¿h5Ûúiåã©¶Î5äóPlõì{ÄÛ¹æðYR:³J¼å¶ÆÎG¤`æÚ¹:Í;ØÛÌl`a7õ<NqE\í¬¾QÓ×@Û;"|½¡QݾbëgZZÍïOMuGÉÀÒjÜnï¹ìqܽv-ÙdíjóX>"\©í7ú5s¬'/çT<ýzu»µç<dq:Áûª'p´înø?À?:qý;8[2ÎYsóYó
λ²æðò÷bIià¯Äßâú\¶Yz8ØÄÕèå¨:èC?Kqäâfé>*UFÚõI7LÂsCq×JS=~OÞ¿§ø*J|e½ÚÄÂ$ÊgÈ\)ÈSXľÆb±Ø[å÷Ô'±¸±dKe¿LjÉeYËðû¹²¢Ñë÷nÄMb²²±tã$V5*~¥~
ÕþÒ)H}«}5)Ü<
5~o
·¤°v
ë´>Ú³ÀÇq=½\KC(G=aVa#¶c:è¯ÃØÇa+¢c&°÷`7îEÎãV\`®aíº1Ç=ä´c7ÅÇÈÝY$îä×J¸ÌgÉ(çAÜcä:Ñ5ºü8ç'b8tîæ(SÖí¼Ù
1ç±ùQ¢] nab8NÛr$DøÍ~:Ê!b-ào-9
À`½¯.
úIl Ó¤
Y¤S1
UØO·´ÛF-u `P Ø_wÙF)â}¸#VeßFçߥ¼ä:\e¶_@3æ4ß2[á$6ño³¯Á·%Ǥ°5®+nYo¿4ܺNèÝéSØÄö$v$ñØ;ÀÂàv
nHa÷uhô5%±ç~,Dß«Ø;XTß;ÛR¸ýzZæö]²EU0cvÒIBj ˤâc±T±TV2öFÿV*$¬!oÿâ°8«bì8K¤ CçßBõÈØù0JeLÔоÜÒvÚᥰz_Y-±Ø ('I´ Å&±_x§(+Ç(è8V0f¼Tm§#°Ò
á³0-fWZLùÚ^AQ)tä;ýd\yNÂl®'þPK
A úâæª Û "