ࡱ> FWW?g$ (9ATJFIF,,ExifMM*bj(1r2i,,Adobe Photoshop CS Macintosh2004:11:30 10:09:20&(.gHHJFIFHH Adobe_CMAdobed            P" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IJI$RI$I%)EAIOTI%)$IJI$RI$I%)$IJI$RI$I%)EAIOTI%8?XU腙C }3sE1Ŷ naw;wSvΫ˳tf\8ndCGTk{Y_{c]ck eg}KwPvGBpV$ɨk\SoddĂHo8IG_խ#?ӨQ`kƬo9}[? cW~/97ۿ{;lo}c`Jn?6Z 襗z{Vw2uWUt|c Xeo}+-'ܛyJJ&eͱպϥAs\[F mfh5kv.gowإC]SK {9[wxVD!dķZ}?gDl`Iic}2c67\\hzfY TwW5 , kkڱn?>7j5[]K*5=6o˪/ڮlrA52A.h乶یebobɭѣK챿{ݽKU4Z»)66c*vmw2}OOWZKmYkZ~Xjs6{տH>r 0mcO)xxC};?=-Tǻ-kS_V+T>r)v5?UV[^jz,z5ޭX[ZZ6oW>0ifʱꭐᵬh~{Xj^[Z`6Π>_cXSK?H!Y*s\1繭c͑_7V3vmn=mk@`9~~zsDz5Q>!-TEAEOTI%4MSۇٌesN-̿?WͧR}87OW_֡ٺ=OBTe+YkvyuWRf6UGm5mΓle,c\[j'T.˦nF("vf$s}gmRʳ'7nU7ӯ=MS@)I$*RI$I$$I)I$JRI$RQwTI%)$IJI$RI$I%)$IJI$RI$I%)EAIO+rPhotoshop 3.08BIM%8BIM com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:08:27Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIM,,8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMAPage 2nullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM PgJFIFHH Adobe_CMAdobed            P" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IJI$RI$I%)EAIOTI%)$IJI$RI$I%)$IJI$RI$I%)EAIOTI%8?XU腙C }3sE1Ŷ naw;wSvΫ˳tf\8ndCGTk{Y_{c]ck eg}KwPvGBpV$ɨk\SoddĂHo8IG_խ#?ӨQ`kƬo9}[? cW~/97ۿ{;lo}c`Jn?6Z 襗z{Vw2uWUt|c Xeo}+-'ܛyJJ&eͱպϥAs\[F mfh5kv.gowإC]SK {9[wxVD!dķZ}?gDl`Iic}2c67\\hzfY TwW5 , kkڱn?>7j5[]K*5=6o˪/ڮlrA52A.h乶یebobɭѣK챿{ݽKU4Z»)66c*vmw2}OOWZKmYkZ~Xjs6{տH>r 0mcO)xxC};?=-Tǻ-kS_V+T>r)v5?UV[^jz,z5ޭX[ZZ6oW>0ifʱꭐᵬh~{Xj^[Z`6Π>_cXSK?H!Y*s\1繭c͑_7V3vmn=mk@`9~~zsDz5Q>!-TEAEOTI%4MSۇٌesN-̿?WͧR}87OW_֡ٺ=OBTe+YkvyuWRf6UGm5mΓle,c\[j'T.˦nF("vf$s}gmRʳ'7nU7ӯ=MS@)I$*RI$I$$I)I$JRI$RQwTI%)$IJI$RI$I%)$IJI$RI$I%)EAIO8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 945 474 1 300/1 300/1 2 2004-11-30T10:09:20+01:00 2004-11-30T10:09:20+01:00 2004-11-30T10:09:20+01:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:0d7a4ac8-444a-11d9-ba93-faa244e3cbb9 image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@      w  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWLVaqK/v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW_F`%v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWiv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW[{_v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW49v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW?F`%v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW5>9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW;f_v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*U*XK@V9Zݳ$R߁u$za娎 0 +8oE䷛4˝?Pu휍լLH9.e.1Me+ٰ-4a_Ny_'2?.Jw<گFc2?.Jw<گFc2?.Jw<گFc2?.Jw<گFc2?,ɟ>{εCNgoѷ4é; =^PC;,xd_T Ȃߞ.umWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW49v*UثWb]v*UCyqgqz4Fc%C|0涵9(u_*EOmNOҧR{&b3![>>cwKO-G$lVDm:`b7;iocN?e8b5?z"]ڽO%q,Nn+A5s֟zyEҼš&V^鷑̡l!!am]x lUҖ;?6YH'4TEC1V=nu1͗trj#G7m͆m%휍լUЩ>`X&^&vy+ W{i/60$64`iW[sW疗_7v*^ƳiMg:zWM'49*`NQr]I!)c+[uO֟x=Z:TBBҢVlm!8Oe8yN52u.+9I6Ť 0ڤ⑔lg,V#W_мkʺXɥi7wzU\\9r>IL$_?G姒t[Vԅ GB}8 ͅOˎr{喷_2~_C^ εhjGTQZ[O43v*Uثʯ9yr/GVtk-&TJ/6Z~\I1n1c)A42Prߗ7$ C?-u2>R|Ϫ\kz9FН_VN-I'M]v*UثWb]~p凛A.$4I,ZhYQNb@eydcG5`~}gGsk^F2\\ǒ:Zw19J7$yNywF/.9RgVu4Yʣ,'>e:^JguH/56*U`hEFlZ8UثW~m^V|{ZVhX/'%R$ԗ7n4呌I_󋟘_~'VVMY}rcĞli4rI{/<˭`%ytz2Q"y1 i[)(OtV\ҴoLiŤ7|Y qqpUXQv*r_[?_uŞũZYwMTSo)ϐ6'XGhN+/ȭ'T+h/NSqk:,B=EF'>SSAǐwmK{Tv6W4Y@)cPXrC[S-è4v(!VdثWb]v*UثWb]:%|M/rqH,~zG'fثWb]v*UثWbs/v*UثWb]v*UثWß慝ߞF $5=;ZӬm&KLԡK wE4RHPAE(*Uث?7(lfڮ:C9(nnyϰػwl˧j#G7mͅwr4WVWGSBS˦,Ybc8 FBB$6PY&k^y֠tXy;|wm hH{u'agvިiR?L#@N6h~F6--#HP\ZZnG@?ez{J0`r. {>yeeb^w??)yWݕt77$HOLʿ:?:<ɼ98蜛k bk+NN܊P5Y2,yV_^j9K$U Iqq $i]}Pȏ(Fb-+F/xc]U;R>jı16$-CWb]v*Q89ox)g)DWODW8{\?Ys|brcLn|0*-6vN3/\̂# o{VkVU+}9Œ:\]dM|62OÍ1|y{Kh7h5̈́wbfx4 H#B˶4 Do5f= [1$'$2Īx0! w%jp ?Fs~ǫ8ڵށ×T?[U?Fs4OWиRw\seըQ'_t=O\_Gp$ޟ>)ˏ:W{rwAӼh ZT:$,&%~Nb5BH4!ܤI9MGHΟț)oYpR&br%u]|ѻe_~>е+.=GG֭bo22Flwpv;dd$,!6®_?fOb3~WY;R]g=*W~[-9~/{?rʿ?Zǜ|5iޯm[嶎;d[qBiTB\$&#o~jy_B溜^%,uT;->篓̚=Z?<àLI-.8^.
(-HSX|ڭ7QzOJz/.C1Dݦ .0k \qVn#7>,9~{dĮ7䇎:DY~iivy?Z0_hy0#` E+n#}*ÛĽC޵oN·yX[iZfIoM2ey=o$'i6:-P^: yV Tqެ9|AuI!vV~^y_ N#"oLOZs0ڼba I$@ru'"ʀ/s;R6}Q~^Xk%~ķcRB }TZf7,N -?@ !;k[{36s,]6ĖALqr;ZwlӨ3]$%jf^cQIÇ4*#e!9k{?KUW ̯;YaN!wOUC$QRሲOΛLX2G$mZ}TL;Q"yοKˍKgz^p:4̉ˆ$C~n>y}k/[>Ts}>zp#'.%9O6_~[jڗ_*y԰=m E$dSר2"=9?寐-ufVk+Op- L:l|CkYjZ}h]W$0¥ڕ;n{fa (|_^xԵF<Oܭď'qT^3P݈03)LvM=qrD|hr# GG{.]'H[:F?n&^J:rq=H}2<8}KSD5ާIqz_>yq4hzeҗ'7Y z:ƙ3^Oz_V:0$b5垣VdW}YPhm.XFq;0ͲQeE =_r"v_:Ԗkg 3LМ=A;|e9ۺoIW|RW/6 =s7u W-7d ^TF}N՛ˣ?PNI*jVgBؿ;Z-O?]jgyB ƺFu-gvQDx)\M>t|˫ȉuu"HYGOVQx`hİێ]$ "?"#?uyT럤>s x}ZN~uUJC70U\?N!o?X9ԯ=)dI@BKd'_?[~y=ޔ9/_u wP~i$VhO+2Q0}Qiwբ:ߛrm4]5 K*(ݙ fT",n9w{~U>\RQ&y cX%^=s3O?"7|XPoLq",6AXr݊!Jo)~Dh6λ3,ں&09q!` P9s c@|q9+6yqK%-"  ,+T?@Eke>ZO)'UCDph&CX'J/lGC | 9Iw81]f&c9b]v*UثWb]Hv*UثWb]v*UثWb+??5l|[X1byhcY5CY #n,?A~0wZ~k-c)cbVR 9d_e-R>Rlj_d]"Yqn&F?O0g04y vΟei7Zf \X_۸)rGGZ5fE(*Uث?7(lfڮ:A9(nnyϰػwl˧nVq?O_f?ʶ|uVRfh6SN>|euݥ:(@q>!09~]MD!"v?_!hiD\z2wr:+=wKzQ9w9,,4v*)QNn쬣 BG'j|U2dU76M?1{~qy{96ׂV cTjd36Y Yߚ4է?{_I Gqq%һ  #A_?~Uh*-~'"u^%HDnY!y%jv*UثWb?;.[_uc~\^ R?t\A_RV*6bq䇨~_zz㕗8MB MJL(>AA듆aOnGϿ4yQӮL"s5_ٖ(vʴ_?͎[:Y8mhW 7KעaV[4yNU*64^|L'}|o>+ ?S?H/ tW|T>]mPP~G连>ZG79WO彗j\ H΃vi D[*zW巛H}kSm̌_@?;}_7g!tK!MX~_\S;RgWF/Xƛύљ4Irju{g:O/Y䋲O{Y|PQ~T[G(r_@> c9scO?'kmijjr}zfo#tzG/4A?4u go"3f1 W:SVZC~Wr2Ƚ+Vr+ڃ/܇GO+/~ggdgb fKq{ɧ esN9D $YdCѿ",,;-|ir^1[JXxEGR+'QPv"?7W qwrr%Rkkuu Mf^0'3@u5.Tm뺞AoyiNJOjoi_ޓ_w|893k*K?"~`Is]F! q$K?O x7!8rVŗ7ߟҿZbK._'յr0mVE@&31"EcP'AP6_ԿIi>3?+ cC_ʟߖ h_ws̷Z/䕞i3D|KZvE5G[ {w5rWzC)5)+.{O!b.mR5RR+(;e81@ǵ/+yrCȺ.啾3[,"[e6wFGSZȨA-l^+O?>lrXwihJY?+ cC_ʟߖ h_}Wb<@wM>bC& j:ŷ_/i\5ݬsGlT]+]l;e1JQw5O>eY{N+ήw-0G&`Ә|LK~Ey[5#ڼ:u"бf_Ibth:,G׭/l5g4[ ;YjuAz07,32?g@T?yO/.?3 #S@K? ?-utݏU/",9)i9uMN+epхtU, x܊i >n,y8$>XV}+2yKT τU$uݱ nʹ"(-3*hXCݎ U)?7˿_ls{ޣ3v*UثWb]v*UF`%v*UثWb]v*UثWb_V)j]yY~cE[EZQ@9_aˋn9 ޝwu_YJ^Y΍Ktt` AmHlU_.;/66iMKK!-rc$HT>F $5=;ZӬm&KLԡK gE4RHH PFlXb®]㵵{^_LqNl[WW0@nk6y"2;v*)QNn쬣 BG'j|1 d ,o͟l~c^ɶ&@]ȫ U!ej?..?OӚT<[@ ..$Ws`b`dh+//ʿUMEA_f{:"SV,k<ؒ]v*UثWbfa]V]iz՜:$c~cB~/.7?lK|h-,Z%EGp>9?͛#R<-7G;z|q zJ~ԍWorsk<s?Y'Yʵ?ݟTqY`>7aK<(?텨4fO}W^;M}})$]:Ca}*W~[-9~/{~.|Y'rì٣U[Z 2Z/&)E01~3iC]sBaB[z}yNf S-yql}Z[̂SnQIH?GB>1I])=tOwk-D.X9moʀ" , ?3y7WM"Լ}yR9a RNi֙TLE OkӮb:7=8Dc!.S A$?Tt|>ɦhh7q @Ƥi^EFrm?l)/Cq_Ҽ6^jX ),7N 3_"3 /24(;^ذ?NOMR?6y;-Kյm%^x"krKPoQNDv?(/?˯? jmmY ky Л Wf^ @xn[_c!͐~]5o4kvZg"Y$jdrTٰw,^k$d&'y-$$iFa-PԀUd2F?am0Is{6]).[B"|>9'tr [?'~yMg5ו|ΐRX vL߄ ȜQ.9?D?̟2COw-*DZ6w3H`FWQͶy0I}:Q4Is# oI1" ]?rq;K+˩X,qEvTI=A}'靽ͽ+qic ȵw,i#=0zֵüB~U=~UN.|k3\yCu|zX#UrxcKolPi!7%ͩ-c1E?6/?ʼ6GʳjyM]o#0VY%Q=Iʱ }M_+7K}Z*C7 H-ד~mq >=f)@ޥI8M7szu `g[QBQXR$e񁰶_8y[L󿕵(k-:i^cPkg 0e4;Y8 (cZ~M򤗲]Mv*79$H6lUU<ͦ]Z@%^Jcb愃lBw~S~Sy_kG2KK}.ͨJMLc#c1 ~a~_y_?ʺ|bomK0G1Q ut;ӱIbdo5hu[Ӿo 3ZC.]--f*{2 zmdث?4+9d5Wf@+m(ɧM>P-򕞭nt[3]sضOFѻ[qE rY=>Jz:XWZy6JSqnu RiG"H-nj@PC?L^|k]յ5^u;VKnH <)K 6ȿ+'?*u2VZujzw0 /U 䡧 o?ߛ[Vdw yjmeG%Sb#2,ɌLQCh?޿]sne%CfKzR1'}{O yG˶VV;Kx;+Ydr#P 1& Ʉ+U.-^/ilu#u*ѐYqu~-4aӮB[+^ 9,R]Af}89K~N0KͳM~ZjS|H+$Dw&2MdC``hA3S:VoaԴJq$SE jlXb®]CC~SwgononH%-Бڟ%f!A9 ~ t~t͓ys}^ߜ^^NM5'jEX(U ͖`<+Vquw/5iO~)K(xFXe oSEP_$7@Σ$Ջ116$-CWb]v*UثWb]v*Uثy"[_YӮG@/Ll i VUH"r35_~es #ʞNϫqug-y*G 3 2; ,Yrɕ2-t 2!oE E%fp)3 v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*'0Rv*UثWb]v*UثWb]v*rqNV>F.WvHbm`G?k>Yqu~-4aӮYloex/,FXtt` Ak$6*/qkrQafRԦy%%W1k$ct#sG~iiZ{jPŅ")$tu$A،ق^w??)Wݕt77$HOf!A9 ~ t~ty͓ys}^ߜ^^NM5'jEX(U ͖`<+TUwwa%?Fv dW~* O&_/ϒ?(;?m:QEtHmŗQq X$hfKX9dL^OtRKѽ_t;ky}ؕNl*@-_^j=KY$5X-RP+24_*/Io3HgGAׄIR۩'k<ؒ%?/-Xt-4-t% * hMEAehg2 ᗘ4 cʺީ0XKZ-̖0# FsXA'gןSצ{Ybsh0dV^RG .]J~{b]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UN`2v*UثWb]v*UثWbXo?+^o~nfyXN#/#EQ4PH ,_~hGgSame{[DHE0mz<v*US9c]#5K=[QQbCm!_Tj d'e v*kwVKsSʑy0sJjBSI@qW 8=Oo"i>`V|Xe4l¡v X;l8Չ{\b~d;TX ^㷘k3ӫ0Dv/ YWuwM*rs$>*4MR_fn;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbs/v*UثWb]v*UثWb7~埕/7R]7GWsK<Ȣ($FsUC_4ST-oMgO,yaV1w;ޞŠV\!'W\~Y\Z~_yK˹x際eHZݘՔn_Sn H!)msm{moygqݥi5.$XԐ4#6@|Uث44|ECj[)M;OFX*Lv)G^*E2dU~ayZ| a7ƻ15TZAj'##e ȫWb)uB)yi/MJj$Dw&2MdC``hAڽ#Wҵ2Y5}[IԢY5+Ihf2:fE/9䯔<拏Ri9EhQ0:D hD$a(,?3?1 F&C3e ՜~]~]KZRI#U`H..$P]*M{}5?yYn_:7$H`e;CCB> '̞4[N Ylex/,FXtt` B0i(lUꟗߝ<>CipKKй9 {ZPV0|{bӎ{"N!z"\*yOxo+ij0=Yʊ*@P &L~9~A>O:8/7~lc, ><Cȅ,@ y%>\b]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UF`%v*UثWb]v*UثWbZ 0*"băKKM'A%|;dEtt*_ɐ/K(<W'ou .z%~"Fd s0;prC6iyc4G݌8Feu_$l>a"V6׶w]ƓZBH@I  B3h W]|9g'~wed-44LTE'e?T>.6n-^I*nP94.]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb~Kv*UثWb]v*UثWb]v*V;*H:Կ4+tt/s)%M;ݢ//PFL~nf_v(W~YZ~_`]w{w' /Tz&$Z݉(Ŀ+~ $4G,rHe`A m*|+Y[R%t}5w;4pAAy*Dg1e___^bڢUgnz4qGV@NCe"ѴmWZhvjzƭqiX*r~C ; kA`x5U KڍS1Rz$l8#LKٲ;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]Iv*UثWb]v*UثWb]v*UR(AF*H:Կ4+t g풦Ett*_ɐ/K˿9~Lkf1ǖspSS$r1j 6Co~!_o_5=qИt䵳WI13 #[~lp~wy^Ǜl .Zlw$v%J <%3e.Ӵ_PҴ9KQ-,-,B"($M Wg՗>ptQ_ejP@"HeZ5,*VH?O:|lI}Hv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*#0v*UثWb]v*UثWb]v*UثDXPЌUa9G8gs ƣ;Yٮ<;TcVyCTwUW> _rG$2IK'YYM 9{,͗k֠-4H̒1M6UY䁄M~0*iVy~} "p[1)4yدR,~ 6$̔;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*'0v*UثWb]v*UثWb]v*UثWbs՝YX;^1H }@O'&+m8 +45ki71[s [};O+ӼK.A(X\^i)ۛA &]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]|LeOv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9iv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW5v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9Iv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW4>v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW9v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWL٠FZ_=@+oJFIF,,oExifMM*bj(1r2i,,Adobe Photoshop CS Macintosh2004:11:30 10:09:34 &(.9HHJFIFHH Adobe_CMAdobed            3" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI% h0ޑ5S$};mv5:" :~JRI$I$$I)I$JRI$I$TI%)$ILlXh{!pA4R -ߗ_)?|7<ݻ{woҺd- WO/S f)uYc .t!W>c:I5tޕW{Y]GoM}GˎI/K*7K?(߫Wt^hr5d1 pv]w￾MTb"#F$_}-5MedOݻDL K) ?Mk=/WO9?ms6w{mw[e׮DݙEōhq~?9ǧeIwIpv1},?E\9嶛=w5v WJ~WF>?jA 8swY^ƻ,?Z %Jk`[ _Iqc+v~wjI$$I)TI%)$IJPU,湮\ǵ5SI%4:_B}'>= com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:09:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:09:29Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 734 576 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -18 -18 774 594 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-11-30T09:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator com.apple.print.pm.PostScript com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName US Letter com.apple.print.ticket.client com.apple.print.pm.PostScript com.apple.print.ticket.modDate 2003-07-01T17:49:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket 8BIMxHH@Rg(HH(dh 8BIM,,8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIMG logoPPTp1 nullboundsObjcRct1Top longLeftlongBtomlongRghtlong slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlong urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM U3_9JFIFHH Adobe_CMAdobed            3" ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI% h0ޑ5S$};mv5:" :~JRI$I$$I)I$JRI$I$TI%)$ILlXh{!pA4R -ߗ_)?|7<ݻ{woҺd- WO/S f)uYc .t!W>c:I5tޕW{Y]GoM}GˎI/K*7K?(߫Wt^hr5d1 pv]w￾MTb"#F$_}-5MedOݻDL K) ?Mk=/WO9?ms6w{mw[e׮DݙEōhq~?9ǧeIwIpv1},?E\9嶛=w5v WJ~WF>?jA 8swY^ƻ,?Z %Jk`[ _Iqc+v~wjI$$I)TI%)$IJPU,湮\ǵ5SI%4:_B}'>= 1 2480 792 1 300/1 300/1 2 2004-11-30T10:08:03+01:00 2004-11-30T10:09:34+01:00 2004-11-30T10:09:34+01:00 Adobe Photoshop CS Macintosh adobe:docid:photoshop:d8a0e805-4449-11d9-ba93-faa244e3cbb9 image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@        6  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]"f]kMWRC)GPG,m rCoMȵ+|?2(H+a]+|?2QV)/?柑w+LGgF[~E|W3!E)l?O`[g&C5c;?R0/>.oiՏ(H+a]+|?2QV)/?柑w+LOgF[x?"X>VIX?I~E|W3!E)l?i_4Ljva_]+|?2QV)/?柑w+LGgF[~Eissl,.C]6&) DHO Rv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]i_1jAuUvue?uO v: yDuv:=g\#F9VRAP쬣XPƂ6 gሄ l&(]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]o. .cI.<ڝQ_ |˟&yol6~+u`;&=ԑԁL[|֝CW Xn>kM~UC?ViʿHgj;|֝CW Xn>kOC޳# Ήq:955` i ǜLZ}ثWb]v*]|ƲyʱՔ\K@ uzAYF)?tzL}߱rBs9D؎as[灓*kw (j'{Y8aCݿ''˭kJhQ7iuUQMoR=+?`209?|FWl9Ͼ-!;+(+x$q@}3 pB6{NZb]v*U_ǚ3dӥ#@UvROdU_Q35e?i>?GՇqZw_Q35`|֝CW Xn>kN??ӿ|*!ig9gLVUC#c^lۛGOS޾.)RjK>.2ܚv*UثWb]C]Ge(~(TTTcNO@+WG.}mibW;xUcS$AwUA'R@F'i^b]>~ayJo4yX"Be1!.eBDBsU]~~ybmU:?X>uXiEXPW܁@ie {Zb]˿Z:y+zz6iD($LHnV\XWZ:]~>kR+° d$,+ +Wb]v* odXFYUUSW6?7:-򈆦Tӛ/?P'Tܮbn6}(2XT Z]v*UثWb]v*UثWb]v*_Ο-~E ^3%RG"yD9V\4S!9oe"R泻UY=2h$B]S #aH}!ثWb]v*UثWb<9/0MOCPoB8*Ѹug kRy WZIךa6Z s^“̝TẅˈXBoWb]v*UثW~b~y Vys"3r^U'u"*hb>34_#_2aGL 3i^N -yZS>ضYtK 9!dثWb]v*UثWb]v*UثWb]v*UثWb*|Ϫ7^'Bhjub>G)H!!0hu֮+Yͺpm,̥v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]Ju M%?m RH.cYco##(_~oha7VS[y"]{Q4)忟?/ѱ@UA Q04v#w\bɾk劻犺t]~o<ִ̺uӰ{(b7_J9v̆| B::_[sKHl!5$q@}3 pB6{NZb]v*Uk0PYܓ1a䭶Pv73H#2fM ~X<| Gr XUyeXP/3)]|e9~rzeϪ͝c1 Lj@b3$ قMpHeo+;e+8) ,j[PW6`SNv*UثWb]v*_=g ?gi :./CWb?"NKW?L??TW`M;Oev*UثWbXϜo)%0aubeM`6lR-4ób%ڙzu/P^TfҺeoۭLMObA Ԉ(&3gBxUثWb]v*UثWb]v*UثWb_i>r/CAwi,4$R.Uy)XM&!6YOK7U`#zd kRcbl~fj>_-.̶>K.5j6R^_8TI0DuK:a]4;v*UثWb]|8M}/zrZT[=6j(ë([-i +~~Qy,YuYExKǓ5ߍ3a#,W~sqߑ yA5;L&PMv9VL~\u;l% }>[p8ʿu'ZMtzesT;)ٔcHHXb2JUثWb]|.dYÆ8b!@艽'-CWb]v*U_9q9sϭ~UU]Pz-40}j[QLR0UثTH/u4M .X%,h@N Zl8ɤ4tw [Wm h%.dثWb]v*UثWb]=ߧT_ǫm/ 7`ԞqLI{Geds#-o+TuSOOO1yQQcgVAhA铌Ĺ!6׼ɤVglC*'7AB 9]>ygM,^PtVHcw 5hXF@hi^LK̒yu;t7Zĉ 0éZH**K3TV2G+2v*Um=c%]Fxӣx2۬OU,2C_ro7 ^f7hr$,zXHO`78xOvV );2.]v*U?3BɘzA!Ϸdt]~ _9b_3E5z~.fv/|ː<_/y5a&+q!Zr deJӥFFR:&=g˗/!ͤ4OŊBTсby+7.slnv>IjĜiXǙVZ~R4?3naJ'}-iqn:GR`EAlArpW]*?4hmz҈[ μmJVdp9Oaޚz4|:͞TrhzlY?0<d򎷦BKn6bv&"$^CϿ˙}u-gm/nAqG,l;23SF@Ew]Z eeaPAGCn /yNBs$1)cE܅Lo):v={K/#-hlo`c*\n(,iJ;bQHa?~{דl|;J{L"s UQ#/*TV*2Iݩ~Ǽ|M?Pխ⹳Eu9UFC]v*}mD}_?)4̍/ҥd?ݓi]xE\bX}e4|sX9}wqr64Z,`XWng,/KkPX@U$ ;p\(מ|32CXӵSm,n׏?M*W :`kϟH"/[ O#9LG"szCfB;+d_޴(z_e򯘬.n 2S72Qr)ev*qsOuw"jYv rI;[p8ʿt'zMteT꬧fSm#!!a%+Wb]v*UGGd_c < ,@􂲍SO׽r4lcu4 Gc8&sإU㐎_>쬣XPƂ6 gሄ l&(]v*UثW>WWuCp@{;Wl F1H|KWbS-H`t[y.X%,hԜ@~//Y~K/|ʱy:I %0(v:+e }(v*UثWb]v*UثWbXϜi} Q?5+Ymd=JCO=Fqzޥk+%恩7AhSt,m5<2Cwjj2,Ӣj*آ~V?z|֥qkl3W:) ;}cŪ~mj1RWL,?dqt%/C~?O*5N,9ɖ_~{o*Ο1obi^OME" Tq GH z Νk FEwٜzOm8]*ȺgnWRnMBf)=l0 s%\ѳmj?yar:>e%._GL(C\yxdpثs7r+>y Yjn$TTs *_^hN}ZӅ?Z@Ƚʹa׍*CLa5s8a9+ŧnZEa4Yg?b.GNC˕@[%G|رv*UثW[P /&a91>w?#OMu)~r~)Ϗr\꾦Aa8ʿ?m .C;~A)EB>/䯜|h)7!7}(r%%+q<8cN8{{%դu^_*WVpKiO//&Ƕ4T`\Y#E2!I h0nT~x_k_KI4!ϲB$>rx`ֵ[)R|2*>e:Iѥ/֜!ثs+Wx|c'+/C7S+}l*H~*Zʰ4˨z 0pSR0G9TΞo|_RzZvO)ʪ **@'.h~y?pM[.%etX0  P%jw(JrY>ѿZ͊ϯyP+SO@2[\s?o9Symy85q3R/0ZVWaԐBbG&zu>>4o?OFO'{]S[QEmainJWcP?qS̿+t %hM< eCS//-#ͩ%QOFoK;[qEo9~HyV|PIm  "y$,h '% -C35?.4-1uO!m?cy^~fr^|Ϝ58i:qu O=ȩ#۰z1=,I6q6UhvHH<$x4`%_%̯q[qD:ri1 KH31.j80cu&TfB?O)/. w5$\Hc#uvSɛP+^(I y|{sNur,yXh6j6vPROq"@HT׬?(;KHByiE *+Fe;2gT-JR@:g 9 s/KY2Pr%(}!Y赏c7Z[rhx? JA*Ҵt2rKм8d3}wUiTJܿ k\pJ{:i(o5a["T YBi͂86mL o|S?5˵APɭk0:_%F._?L6fN ?e0m1MJL4]:6<(zew׊er*Ϲ[HH,.j֖!#;HFFO2H|>^ y7Z fsiR:~%#sڟ/|2ڝ<.CevڪH;t N |kQf_iRrNR}KW#ٯ5JVKh9BUkPƠz5c}Ϸ$ 8 y5od,?خdyE>zo{ =v(kOI C#kBzY[߰4rCCp ʐDP@ 9&(馎6eHK;(v *;L<>&a]nDC H^$H+846~B>`d4C(X@b Ld̵ۗ-N4-ņ__=g׬b?ͺ2$uWCS36V7˿&n[:|>ɏ?sQv /\ءثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثVq~jwO󅸚qTaA$2xoֻT0*H0~~xGkhz♴=)F֣V*Xc04Y;,ݸ~V*(|-,q~yGO_5yV/4˴aYŅu;FBBKWb]v*UثΏu"*UPZ{u~ş?'?~;H^VQ?y._sFru>rLM{yuiZ- &v3ԯ{fC>pF}!/-?ͥ6eeJ8QUF:L1@ tDثWb]v*ֿ**(u=NA>_5 ?1 .]Lt"_tKy.X%,h@N Zm%̾eXu$QoG _e~s̔;v*UثWb]v*UثWb]>-^r|lhհT~9FPU >'~\Z7t-MIG+s1ϊ5ܥ0PYܓ(?>tλй\z^ߔJ\#79/LGm66!,6'ڑni<")?_~d>|춱n}FkFaWeQI"I9mʴIV;|e9h]_H|>'.UR_yثɏ44 Ѿn̟5#SZ>0z4J/&r% WߔK?D5n{RXQ$|$^(HOAT(6ZtY (Az1W%|+=A9BSWPidžD2~_yy7vݰX}\rf5v*Uث~-(fm0Co;͟&Ls9]?glO9.j_S 0\S_6?^!? w#PC:ޟp˚-ޱ [358@_T"[f5+O#IwRN18hBvHu 9Z>e{둜x+O"44Y6=Nn:M;? њa͓([<ç:b[+$G*a􃀋FzЊ[F˚b +z{K 4l /s'%iw _YdY#u5 *{sn c^}}|yRInJNlxvsEɷv E-ܺƪpȏ8j5KvO\1~q.^DbRjQOi9|f\B_>5iz<񆽖ip9qK'˥ÙR->oE,5ԝ\v[FG :cj!wǛ慮mnQے!3-4I/1~pɡZΉ o}"wWvˬZ ÎMnvRǫ hMc6TP=__/Ůyw\Ik.C) >mC`A󂿞~_CGcM%LʫQX- ֍Iir8J 3UثK/ o]gL^]>7?J&g!ثOL=#6O7L]5=B"U$[$$jY_G5Zӟ[zY`jUngO8yd4 }*/Na!$TUP;7Sf~ ay&;=EbԣEPg 2_7Ko-bLԴ`v>ђ}l0K /iUN_dC5d:/?=YfM_\i[%b>bgi _g!ثWb]h.kW!iq>Fۍ!rXjpڡ_|nj$yZQ漱0{S'ַ3٨=r*.uU|ʚeݛZ;7U;%m_Ɩ:jK[t`'nT;0Wi0Ȃ)\?(0LYF)/O*imˊ̖^ic=1̼M F*vO7˲h6yl/-bTKFXu*0jq|]~SyU`/wUx fJ@91NJUgf_nWK=L|GNceQH|8 {o2ڔbX+#4!@hU_PXܽ/ ٱbt򝏞G҇m6aR2E.$esbb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uثv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbB< q=ª‚Hd6ߋv=*H0~~xGkhz♴=)F֠:PwRuYq,)Wb]uտ"}f׬kzWeGoecO^m|ʷIw]8OXuVS)m#!!a$+Wb]v*UGGdWc < (.@ uzAYF)?tzL}x4X*^7Ha}kԃQqpS_ c(*_yCWi_i}C?|1|9_ʥG~#?׏_k>+G5:y{j,PYTl\bIв~vՏQOr2vՏQ>7˙u6>mO;Vj{t]~ _b_R$ AdmyHh~k5_S 3\S_6?^!? w#PC:ޟO>7]ǒ*_Yb#?&? ҿ.<2FbU{~iMFҎlFn~C?.DyMɲOk}VAqlR׈?vo!Ol\; zLS:iFW~/B?+$]PH<*n {w]ӷ,=~99tj_b_/EǗܾqs]=<516LY$Œj㔹%вvՏQKrqEhuFn %ܯMnɯ~NY'JI ~,ŊB@6l_?G1hfCܟycGK{3PU矚Zށq6^Z7Q39_'aߵ,yGybUޯVR˧/=+\_,zu[]<Ԃ;x`zI4^O?U< w+,b?./.AO8tޭז$zS|̸EYNmS{x$eb$뺒7sah}#NWdC5dZ7?=Y^M_\i[%b>Co;͟&]~ _9b]v*}mD}_?(̍/ҥd'΍ˠ^[$^l@GE$C!+2>1?,|DIovf *F ݳ_|3pJ/3<Q Cp&|ȻfI~fыWQW:?.kZ@fR͢m9{'4?hb2yȒcvQfIa^PS ܸىOŸH/˽GC}{.Gv1$,\2K٭#ܣA0siox ]'_a.MH2ʌ Sx| <b(Oҟ/>[y/:j+{Iv ĘM1AêƟyO+~N~7H~a\[[?.,/eTkP䅯'ZԃҹrK?Y?;?Ǩ\?W%K]BV=GFw*?7A:yfHoZ޵־Z%ܶͻ˿&n[:|>ɏ?sQv /\ءثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbX?Ƈ\y?k9U$mCֻUX$Nb<#u=qL|F֣VwRuYq,)Wb¯?"ȭ[x5=Xkȣqۋ)U7i>{m|[/RՁYŅu;FBBKWb]v*UتP.O߂WaWb]v*UثrrZG8[h a=A5-_)iv*Uتei.WR,0Awv4 u Zm%̾eXu$QoG_X0pnyb]v*UثWb]v*UثWbVXT8mfhۥj:[><C2zz4gq:\2hwh̽Pp2,xʇ73G/WEM8#"u'giz)?_~H{%ٻP?e!ث/sFcjC/u<0?9r2[̓b#;&7?!ҿ.<2Fb3|setxl!<@~ D~V~bhj+wCteh&$xxc d"'EAPAALUثWb]|s9|Ys{nI uV%$ڡqH|S8 o_;CR҃6$)%SVf6|2/!ثW9Is[$Yl", Ue 3Q|R%[7~]ڔ-u5ed 6x?,Ww9SC!`z|R?Pw/KGȩ~fbPJOዱWӳ/?1v*rf~\j=z~k`[t/[(C*:"N6z1~sj aXAxΥ]/!o#7fAR=J=3M=UmoMdHVes>$Kc^^c8XZ½DE|IsHDŽS$͟$t%l'ap|Z-dy}d\uKu[U$V@Qb#4$'*_ٞb]8?ykc?-gDܟycGK{3PUثW¿>_OuO/Gc].H"C(FQʼn__pw^\4waiqerICN" ӭ.U$mX K}?϶Gz.ҥv*q<H_)sKlnKm6fGH$)"o"+n(|kwD~ah&s_q#pxO7[j~`tyV{R P^92plXbثWbrw&'{'7ѿi&W6bj3~K.YR9l?!6WR1;v*UثWWSm%v$>IUD>di~/s% Wny]pZu!&NU؁E^u5izM-w6 V5iV?(0LYF)/"NEZ_%YF.^95n_k2le:?+?nѧ=ȄS:o$r3hثɛlӚ|QA_]C 7+T]a6[HoԬNѾЎn:\%W䥗䯜N7=J^ZFY>Ap7fRvvG%W=ffW9b/_]_vῳpx㌟ڍ 鐜*o;jEf 94ʂHS R S'O{1^Nrj]pg>W9.(o(IFkD'&SUDیR;`rTn* ~`[y?H#MlMU_ȣf.\2~]|9o̟Q㪇?k?͊v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]?ˍWC-s !Hڇv=RA*?#3i{ ZGqsJT^Lf'ej UUV~o}zƿGvY}>[qf8ʿt'zMtesTUUe;2si Y.I]v*UثWb]v*UثW>WUsCp~gq5-_)iv*Uتei&o%ԋDݍP:o/{%/V;9]GI$dFǣ_e~ e }(v*UثWb]v*UثWb]v*UثW3Z6aedBc&>%W(-\?!/?=7LҴF`UBG^$ًr~nثW':UkYs {䲟7jGT̤;|e9hm_H|>'.QR_ybU~G:WEǚ|_PO7 ]5?<]~lZJOVc]nd?0X ;4[lrH)gƩa<ɬhV#'1/DQ*Tl Z OxjJWW_Ỷ%ꭿB2c82}Y?MI% I //WPwǫ?_qt֜[Xj~U.|֟*~uuk^}huʘyyتb 64,3&P $?_察lyOMgC*^MƠ0N&:AI~f͋Ww9SC!`z|R?Pw/KGȩ~fbPJOዱWӳ/?1v*U@y&s'V4䌕"⮁OZ%LuS2}5>/j?`1N̰֮"Qi!f_YCVM;3z[MB0*Ѹ<G!8q*7|8Dr֛(1XJ!;:8ٔ+Q~~^4+H34MET+*ո3+z>ٗ `fa~_ilMJ菅=$+HGW89]wWϘ[-ޝ&G?i5!b8 f2=C0r=_GU/CW?=64ԼN7kq 2<Տ2=W izGV JW`IWoY`D>e| ~XCq ԣ6w (D%KI$hͩ_UYPh,s$Re3O!r/!g?%ƗB]f.<}M?o+)~fr6Z~]ِT FiH,P aSXzƽWlRg89S}mo˺VJ% 5~#pdɉd Gڢdg34T9ג~t. ƣY%# .BVJ},&. |*̯?ĤD1Kl V(U$mȻRgU=_VZ׭դXyN -u hn(%@z- I_wMO5FO3Q>7i&W6r^M_:vZ; fr?f3Ѓ*1ubL_ #Bizon$5xIl)`/ŊR$nT]b_L~htNfQ}q*\ӧ"lz梟{Y*>x_M5+Xh$"o+J^9 C:ɫWb__MOc5ϫ~DgYM>W:m-ĆtXzR\i7a}CR}MDOj_j?/8xYyT#piac`RZGh?eV1f3?pqRЯcµkY6MIk +z !9:l~%o|9sDŔj>ɟ'.Y_bU!NmGĭgqg)$oX\ߪ>[Ԭcq:D#,}8jTS7MZK~OXk,z ^^ iWWJ̚~_u+r}m]eN=A#s ʧs "6t *[YhmsAɵ.mn6b9SplY Wǟ-jpkiwc{5Ճ4WsO7VWзY>U#O|֢h-bEӬIĹ"R;7a+J uc5W@Y4`_If?;424\-ZHH uDzVo5܆͖< 2;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]`殇q8[VC  ]kEC LQWv6)O_;u;V: O+Wb_H:EߑZ;,ݺzƿGvY}>[p8ϒt#zEteT?z꬧fS;FBBKWb]v*UثWb]~W\\}s_W_: } ?g_e~j/4v*U24~ DE"Rƀ(I W佒̫ל 2Z# c}yl`C CWb]v*UثWb]v*UثWb]bxnKs042 ) N"BSq~<%ډ֚@W)8Z'mS1&!ثWq;y[{ :=I$I0DKr_))ɀde_ߔ'ֈQ\tMԋ#UN)EX zvX^o]phM54M?(vV}aVr^E[$^#[`QȳzoKY,~]VOT/uC₂4o+o;v*UثV?o*sA]. aֽW „v9DHQW~i~_k2חn- $C<+d9-$O$}ŢhhkZF{voGOm^E#dkwQAj־jGd4k{x"K[TXB" (`3#WqCo _:=&?Tc$7.H"2FNio䶁%h>M{̆E UZ (VRCAz'_~?Kg*QVǽh}|cJ"~ZcF-vbZ! 5]Y;fL ! &煥7Hley,,QL.!mߓ]Bx5)V_G]NZe>*( c--CVm;'H Lu"L``Q\q$0rVg޶|)56[u:H$*NG|qa6W/CWbygZ$odԢNj"ERuu`*xҧ)ɄOmA3_}W>>ʝ??'q'xm>-V";I̍Ĥvlxm8ΝV3y^Eg2GdjXmaɀL[{(f*,VF938dFmW(g]Wvq ?:PQ J"Ӧ]`0o>~[yc6/5eIjT"MJ|'_y}.SI\"jY4cMWPȭP$xUZ}u+o?+"?'4ԆE-q 26W+rCײv*y˺_&pY4~dAYn!Z $dW_^u5+oVz1ԭO.(.xIy)2ܸ R̈a9!j/m;iF%7hU]qe`z -_exySR{-We/ipa˙IhB}C#~EiWg7r&e%/UT(mω9~,C%ev*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*1.4?] o*($@>#j." pU=~Gkfӧ,GqJNU&3'ejU-]_H:Ejߑ:f5=Xȣqۇ)U7i>zm|[.ӜR:)ٔcHHXbrJUثWb]v*UثrrZG8[ ?g_e~j/4v*U24~D`E"RƁTq{qz^|UWQI-D{>_X0pny̔;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*|<^geH4IJDu=3~;rjRd-. ?A3k횜B=!b]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uc\h_ǔWWuCp@{;Wl F1H|)vv*U24~D`E"RƁ@ko/{%/V;9]GI$dFǣWm h%dثWb]v*UثWb]v*UثWb]v*UثWb]v*UثW?l>_I$I纹6HTHIud$՘QHbjr$?<1'17 ~3'kee zUr^ra~Dwu;V: O+Wb_H:EjZ>;,ݺzƿGvYT}>[qe8ʿt'ZMtesTUUe;2sg Y.M]v*UثW>WWuCp@{;Wl F! ?1 -b^h-WR,PAwv4@N-__K_2w^rH(h7#ݏG}yl`A/3%]v*UثWb]v*UثWb]v*UثWb]v*UثWb]Rp+AT>/>}y orT$]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثVqjWO󅸞qUqA$2xoֻUX$Nb<#q=uL|#Q+PwRuY1f'j*UثOȭ_+Vߝߖ}zƿGvY}>[p8ʿt'ZMtesT;)ٔcHHXb2JUثWbˏˏ}gSo;40}j[QbUUwz徍BR0CH*L@~//Y~K/|ʱy:I %0(_X0pnyb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbB< q=‚Hd6ߋv=*H0~~xGkhz♴=)F֣VwRuY1f'dثWb"oȭ[{m|[.9gE";xsJNU.3E2v*Uث_Ƚ[+Vy囷^]ECeYN2?(Iޓk*%x>ve;2\+.?.>ʯʻOSf} K`j5@~c]vL"_4X$b RpjW5o$>WUZ=AT2%H1kb{TWxYD!Tt Wgy--2g D;+ A8?߿Q{;v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]?ˍWBS !H~." pU=~Gkg,ȴ0]j9jqU*WhxV]W?ZV;,ݸ/Պ,> ~-سe_KQe[#/u H+F-LPF؝|5-v}O@|KW`WaTH/u4] .X%,hԜ@~//Y~K/|ʱy:I %0(v=_ Kl`A,r7qIҹ ?3١6#571<p=Scњ'ҵ!]*Hծg1  !F5XO<=G:;[j63$JUzv v8[C6_>R$};ѹMM;=o'/TثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*ɫο)ruEՠ >rxWI>ˎV)!YϧKa|K 22j]vvv^.o%ԋDݍw8@~//Y~K/|ʱy:I %0(v=AR,87v[di?4i` f݋Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uثv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb1'4|honzҢ8z(y2 *׿:5<(ihVVw'W!YWX&YYMC)U89aLP^aLy%mrUUpP6}Gǚ}hv*UثWb_?yy?)?=Puګu4ghЎFEI6TjsqlYbb]}!89D߷y囷^a( oec/x1t{6yB.땪VUף)fܚx/GQ+s\.QqMcSՎS0^x?18jWۢ*"(G U>T)tny #,^34$.gثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثU9Kc 1 {*q-FO3~hQK[}=b$+7NJ*OǼm9 8ծ~CG<G˷MPHQROMw ƗyRWT&WD%YYMC)U89aLP^aLy%mrUUpP6}Gǚ}hv*UثWw>UWuCp@{;Wl F1ȞKW`TH/u}DK( K;u'o͏o4L^wX з t9OH2sWe]]zg?%/O)Ң*2xrW??=/dց~z{ !Vr?֍s6{"Gxkڣ"-|] !O3Ձu䷞dW>n}]j7'v;*()TQGrI HK^1E~ty-K{pG'>i ,xA~Pm>]tSf;U՘bO|""IWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbR3ycKu3Zy^FcCw (TAde!E__󍺧fORʗgxEJ56CKBWW d ]U%;I)uxF*jHwbo_6m_͋ה,VHvv2boi ^fتR[Y]bxl48HGVfb$jϓ͑yY ќ4W$SHA2:J*מ>hb]ZF{h]_HAJY8j^^_2ctAFKDaQzH}7m h%'?ƅy?{)U$m.B* Ӏv6)O_;xsJNU.#E2 UثWb] ]` ne" G)$jl2h 2p_O}G@O-yxne+%Iq(zQ(bv A/aPUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]>fΗ-.>fL42 Ԋ ADHQWn}nԼYRM$ІU&O2v*Uw/lzNT@,vZ@:jG(rW<$EsJu)|G-休O?2<< o;[+r:En"J)#7&'Ϛ^MWb]S-#H`t[y.X%,hm88e/de*u+$x=۳:j[e }(v*1.4?] p*($@#mcЊ LQWv6)O_`<]v敪TVLf'ej*UثWb]7N4_)ۑl[-Y)R' fgew俗$Uq V~P>~(>,Ygjv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]H|/Z]ז|kyhd ;*@ 22?/S3SݧyK" њH!BWY |[]okvvv*iE{uu"gwc@o/{%/V;9]GI$dFǣW- h%dثWbCЮ.КUJdq,)W`WaW:>wJbc;M 2((bm, {eM.j!kg,G̈R})JӢ~0 UOrǻIs.1rJUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*:_,;23*B##( *3m?#5OzT;*Pp:QBWW |>aʕثWb]S#HtH$bU8@~//Y~K/|ʱy:I %0(v:j[e }(v*UثWb=?6 &"|QțI deȊ ^H * ?&s1"U!. bxHoŃ-M+04Y<"_l ~ko!SĻGzƏymic9q^6 #U0{X:Ul)7(e&űN2JUثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWbv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UتCo,i~rkX4sC `A0RD~I6ꟑ9yRB,BwfvhC*a8ϓ+9Rv*a]~n*7 o(6%;Ye4 +Jc{Rp͋b]v*UثT]MՅlcTK^r_fiY; F.<P=rv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثTXygicCwՅ  $(rKqT>i^yRB,BwfvhC*a8ϓ'9RKi,wvO+"pF*O&(/0Xj**LQiw >byfbv*UثWb?7?8d>(;(*~(9?vfΗ-.>fM42 ø Ы  ADHQWn}nԼYޑRMKBWW|[][\Kg*];E4LYYMC) Sy䵼(~u Z$::p>h);hk[ǨGsk2h\::) fhFaWQm/E=s̠2gj؅YR#r~5~bdk̾kѹEG u$GnvOV$Ns26R*Uy/zk/)[=ޥvR5vcQF`0&[~=>i7խTwr714/CWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]H|/Z]ϖ|myhd ;  ADHQWv}nԼYVBwfvPU>aʕثVco?4y y?Y\ʬ}#%O7duj< u ֍HS'!<ʼ"]%/Xm|;gԮߌq@;7f;12488D 0ݢ8ǯwXXM.yCv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*:_,;23* P"B ?$5_LY/|vꗴ(v;,qCWW |]`ʕU eG6[Oy\eUiݎʋݎM0&[~==:?]wcӎJz~&gnmf/cxg*Uثɟ:~r݅t xWfqk:W$>TܡM30cG#ݪN!UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*Uv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWc? ;Ƌk{58&;@&5|ϼ|] Tl+ N~EocSiEʑQ,=(\1޶#$~XyEі"}It!@.1[}"#P Wb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb_v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWv*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWb]v*UثWt&( / 0LDArial$$Dx0z[ 0"F, .  @n?" dd@  @@``   ($l     " #/XR$WW?g$ (9ATR$Z_=@+o 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s " 0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab@8wʚ;ʚ;g4rdrdz[ 0ppp@ <4dddd 0$x <4BdBd< 0$80___PPT10 pp?  %IStateful Aspects in JAsCoWim VanderperrenStateful AspectsENatural Evolution of joinpoints: Static Dynamic (e.g. cflow) Stateful&!%!% Timing Aspect1 class DynamicTimer { 3 private Vector listeners = new Vector(); 4 private long timestampbefore, timestampafter; 6 void addTimeListener(TimeListener aListener) { 7 listeners.add(aListener); 8 } 9 void removeTimeListener(TimeListener aListener) { 10 listeners.remove(aListener); 11 } 12 void notifyTimeListeners(Method method, long time) { 13 for (TimeListener listener : listeners) { 14 listener.timeStampTaken(method,time); 15 } 16 } 18 hook TimeStamp { 19 TimeStamp(timedmethod(..args)) { 20 execution(timedmethod); 21 } 22 before { 23 timestampbefore = System.currentTimeMillis(); 24 } 25 after { 26 timestampafter = System.currentTimeMillis(); 27 notifyListeners(thisJointPoint,timestampafter-timestampbefore); 28 } 29 } 30 } P lTiming one method: But how to time a protocol? E.g. time between execution of a, b and c on ComponentX. Protocol Timing Aspect?Stateful Aspects: MotivationProtocol based aspects are rarely supported in current AOSD approaches (apart cflow). Result: protocol checking code is scattered over advices, poluting advice code& Is also not optimal, checks at all possible joinpoints while only a subset is required.Stateful AspectsAllows specifying regular (=DFA based) hook triggering conditions in a hook s constructor. Advices can be attached to any transition of the DFA, or all of them (global). Example: Realize a more general protocol history condition than cflow. ( Timing Example Revisitedi1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 hook StatefulProtocolTimer { 4 5 long timestamp; 6 7 StatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args)) { 8 ATrans: execution(methodA) > BTrans; 9 BTrans: execution(methodB) > CTrans; 10 CTrans: execution(methodC) > ATrans; 11 } 12 13 before ATrans() { 14 timestamp=System.currentTimeMillis(); 15 } 16 after CTrans() { 17 long resultingtime = System.currentTimeMillis(); 18 notifyListeners(calledmethod,resultingtime-timestamp); 19 } 20 21 } 22 } jPj Timing Example Revisitedstatic connector TimingConnector { perthread ProtocolDynamicTimer.StatefulProtocolTimer timer = new ProtocolDynamicTimer.StatefulProtocolTimer( void ComponentX.a()., void ComponentX.b(), void ComponentX.c() ); } B(  Advanced Pointcut FeaturesExplicit start transitions start > XTrans; Starting with two transitions: start > XTrans || QTrans; two destination transitions: XTrans: execute(methodA) > YTrans || QTrans; no destination transition QTrans: execute(methodB) && !cflow(methodC); ZZZZZ/ZZ/Z // Advices(Multiple specific advices possible, one for each transition per before/around */after * Global advice works for all transitions isApplicable can also be global or specific (e.g. isApplicable p1() {& }) Strict Protocols(Per default, stateful aspects are non-strict, e.g. protocol a()-d()-b()-c() also matches timing aspect. When no intermediate transitions are allowed, use the strict keyword: Strict Protocols with ContextOnly strict with respect to a certain set of joinpoints. E.g. timing aspect does not accept intermediate transitions on ComponentX, on other classes is ok though.Complement of a protocol>Trigger advices on everything outside the protocol: COMPLEMENTComplement with Context=Only complement with respect to a certain set of joinpoints. >>Weaving;A DFA (Deterministic Finite Automaton) executes the stateful aspect at run-time. Default: weaved at all possible joinpoints defined in the pointcut. Optionally, jumping aspect in cooperation with run-time weaver: only weaved at next joinpoints in protocol overhead of reweaving vs overhead of aspect applied at all&ff/   ` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғ3y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@ ?" dd@ _`J  " @sX ` n?" dd@   @@``PV   @ ` `p>> 4B(  4 4 <?"6@`NNN?N 4 <_`J?"6@`NNN?N: 4 <?"6@`NNN?N:3 4 6n #" `'g   STitel eerste niveau Titel tweede niveau Titel derde niveau Fourth level Fifth level   T 4 6Ԅ_`J_`J #" `y  UClick to edit Master titlestyle  t 4 0@  "  PStateful Aspects in JAsCo * | pag. *)) 'J f 4 C 0AlogoPPTp[4]"?H 4 0޽h ? 33___PPT10i.mx8+D=' = @B + 0Titel van de presentatieW  8W(  8f 8 s *n#" ` 8 H #" `w    OTitel van de presentatie   8 B #" `9 w   ROndertitel voor presentatie  * 8 0LR  "#   * | pag. *  0 r 8 6n?#" `  8 6\ _`Jf3#" ` P *f 8 C 0AlogoPPTp[3]"f.H 8 0޽h ? 3380___PPT10.mC 0 .& (     Ny˼y˼ .   \* a00aa  Ny˼y˼ 2 .  ^* a00aad  c $ ?  "  Ny˼y˼ 9 3  RClick to edit Master text styles Second level Third level Fourth level Fifth level!      TĿy˼y˼ q   \* a00aa  T˿y˼y˼ q2   ^* a00aaH  0ηo~ ? 3380___PPT10. *d  0(  x  c $H̽8w   x  c $Ͻ89 w  H  0޽h ? 33___PPT10i. *Nj+D=' = @B +}  `$(  `r ` S 4y   r ` S Le4'g  H ` 0޽h ? 33___PPT10i. *+D=' = @B +}  p\$(  \r \ S 4y   r \ S ,49f   H \ 0޽h ? 33___PPT10i. * /z+D=' = @B +  ( d(  dr d S 4'g  r d S *4y    d B(̲ ?"6@ NNN?NdtC 1 connector TimeConnector { 2 DynamicTimer.TimeStamp timer = 3 new DynamicTimer.TimeStamp (void ComponentX.a()); 4 timer.before(); 5 timer.after(); 6 }H d 0޽h ? 33___PPT10i. *_+D=' = @B +`  wo h(  hr h S  4y    h BD  ?"6@ NNN?N @ 1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 boolean methodaexecuted, methodbexecuted = false; 4 5 hook ProtocolMethodA { 7 ProtocolMethodA(methodA(..args)) { 8 execute(methodA); 9 } 10 before { 11 timestampbefore = System.currentTimeMillis(); 12 methodaexecuted = true; 13 } 14 isApplicable() { return !methodaexecuted; } 15 } 16 17 hook ProtocolMethodB { 18 ProtocolMethodB(methodB(..args)) { 19 execute(methodB); 20 } 21 before { 22 methodbexecuted = true; 23 } 24 isApplicable() { return methodaexecuted; } 25 } 26 27 hook ProtocolMethodC { 28 ProtocolMethodC(methodC(..args)) { 29 execute(methodC); 30 } 31 after { 32 timestampafter = System.currentTimeMillis(); 33 notifyListeners(method,timestampafter-timestampbefore); 34 methodaexecuted = false; methodbexecuted = false; 35 } 36 isApplicable() { return methodbexecuted; } 37 } 38 39 }   h H ?"6@ NNN?N' ,, h B  ?"6@ NNN?N&(h @ 1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 boolean methodaexecuted, methodbexecuted = false; 4 5 hook ProtocolMethodA { 7 ProtocolMethodA(methodA(..args)) { 8 execute(methodA); 9 } 10 before { 11 timestampbefore = System.currentTimeMillis(); 12 methodaexecuted = true; 13 } 14 isApplicable() { return !methodaexecuted; } 15 } 16 17 hook ProtocolMethodB { 18 ProtocolMethodB(methodB(..args)) { 19 execute(methodB); 20 } 21 before { 22 methodbexecuted = true; 23 } 24 isApplicable() { return methodaexecuted; } 25 } 26 27 hook ProtocolMethodC { 28 ProtocolMethodC(methodC(..args)) { 29 execute(methodC); 30 } 31 after { 32 timestampafter = System.currentTimeMillis(); 33 notifyListeners(method,timestampafter-timestampbefore); 34 methodaexecuted = false; methodbexecuted = false; 35 } 36 isApplicable() { return methodbexecuted; } 37 } 38 39 }    h HhP ?"6@ NNN?ND  E1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 boolean methodaexecuted, methodbexecuted = false; 4 5 hook ProtocolMethodA { 7 ProtocolMethodA(methodA(..args)) { 8 execution(methodA); 9 } 10 before { 11 timestampbefore = System.currentTimeMillis(); 12 methodaexecuted = true; 13 } 14 isApplicable() { return !methodaexecuted; } 15 } 16 17 hook ProtocolMethodB { 18 ProtocolMethodB(methodB(..args)) { 19 execution(methodB); 20 } 21 before { 22 methodbexecuted = true; 23 } 24 isApplicable() { return methodaexecuted; } 25 } 26 27 hook ProtocolMethodC { 28 ProtocolMethodC(methodC(..args)) { 29 execution (methodC); 30 } 31 after { 32 timestampafter = System.currentTimeMillis(); 33 notifyListeners(method,timestampafter-timestampbefore); 34 methodaexecuted = false; methodbexecuted = false; 35 } 36 isApplicable() { return methodbexecuted; } 37 } 39 }  V  h B0 ?"6@ NNN?Nz  r connector TimeConnector { DynamicTimer.ProtocolMethodA timera = new DynamicTimer. ProtocolMethodA (void ComponentX.a()); DynamicTimer.ProtocolMethodB timerb = new DynamicTimer. ProtocolMethodB (void ComponentX.b()); DynamicTimer.ProtocolMethodC timerc = new DynamicTimer. ProtocolMethodC (void ComponentX.c()); }ss 2  h H o?"6@ NNN?N}*-22  h H o?"6@ NNN?N6  2  h H o?"6@ NNN?NYH h 0޽h ? 33___PPT10i. *+D=' = @B +  0 <(   ~  s *4y   ~  s *84M'g  H  0޽h ? 33___PPT10i.n+D=' = @B +  @<(  ~  s *`߽4y   ~  s *04z   H  0޽h ? ̙33___PPT10i.p,r+D=' = @B +   lL(  lr l S t4M'g  r l S :4y   =l W  lW,$D 02 l H o?"6@`NNN?N  l HL$ ?"6@ NNN?Nm `W EStateful Pointcutl      l   ,$D 02 l H o?"6@ NNN?N7 c 2 l H o?"6@ NNN?N    l H ?"6@ NNN?N    ])Attaching Advices to specific transitions**B  l HDjJ?"0@NNN?N ,$@ 0B  l HDjJ?"0@NNN?N*F ,$D 0H l 0޽h ? 33| t ___PPT10T . *Pu+nJD( ' = @B D ' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* l%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(+}  p$(  pr p S ʩ4y   r p S 0r4'g  H p 0޽h ? 33___PPT10i. *dQ+D=' = @B +}  t$(  tr t S 4y   r t S 4'g  H t 0޽h ? 33___PPT10i. *ķ+D=' = @B +  pN(  ~  s * 4y   ~  s *䟿4'gI     H~ ?"6@ NNN?N 7 T isApplicable() { //global condition for all transitions // returns true if advices should be executed } isApplicable XTrans() { //local condition only relevant for the transition XTrans // returns true if advices should be executed for the XTrans transition } $H  0޽h ? ̙33___PPT10i._+D=' = @B +  x(  xr x S d4y   r x S 4'gv  ~ x B ?"6@ NNN?N    strict: ATrans: execution(methodA) > BTrans; BTrans: execution(methodB) > CTrans; CTrans: execution(methodC) > ATrans;2 uH x 0޽h ? 33___PPT10i.*ms+D=' = @B +  #   | (  |r | S L4y   r | S <4j'g    | B? ?"6@ NNN?NY  J StatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args), context(..args)) { strict[execution(context)]: ATrans: execution(methodA) > BTrans; BTrans: execution(methodB) > CTrans; CTrans: execution(methodC) > ATrans; }$ e | BC ?"6@ NNN?N n2,$ 0 static connector TimingConnector { & . new ProtocolDynamicTimer.StatefulProtocolTimer( void ComponentX.a()., void ComponentX.b(), void ComponentX.c(), void ComponentX.*(*) ); }l ,F |,F,$D 0B | HDo?"0@NNN?N,` 2 | H o?"6@ NNN?N Fp  | <P?"6@`NNN?Ns s,$D 0 @Accepts: ComponentX.a() Y.d() ComponentX.b() ComponentX.c()6A8y  | <5?"6@`NNN?N} } ,$D 0 IRejects: ComponentX.a() ComponentX.d() ComponentX.b() ComponentX.c()6JAH | 0޽h ? 33  ___PPT10 .*c2+7^D ' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*|%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*|%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* |%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* |%(++0+| ++0+ | ++0+ | +_  vn(  r  S e4y   r  S U4'gv    B̵ ?"6@ NNN?NYC  *StatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args)) { complement: ATrans: execution(methodA) > BTrans; BTrans: execution(methodB) > CTrans; CTrans: execution(methodC) > ATrans; } around complement() { throw new SecurityException( this is not allowed on  +thisJoinPoint.getClass()); }HdI  iH  0޽h ? 33___PPT10i.*`!Y+D=' = @B +  Q I   (  x  c $4y   x  c $p<4j'g     Bhc ?"6@ NNN?NY  NStatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args), context(..args)) { complement[execution(context)]: ATrans: execution(methodA) > BTrans; BTrans: execution(methodB) > CTrans; CTrans: execution(methodC) > ATrans; }$e   B ?"6@ NNN?N n2,$ 0 static connector TimingConnector { & . new ProtocolDynamicTimer.StatefulProtocolTimer( void ComponentX.a()., void ComponentX.b(), void ComponentX.c(), void ComponentX.*(*) ); }z ,F  ,F,$D 0B  HDo?"0@NNN?N,` 2  H o?"6@ NNN?N Fv  <P?"6@`NNN?Ns s,$D 0 FNo complement: ComponentX.a() Y.d() ComponentX.b() ComponentX.c()6G8  <?"6@`NNN?N} } ,$D 0 Sd() in complement: ComponentX.a() ComponentX.d() ComponentX.b() ComponentX.c()6TAH  0޽h ? 33  ___PPT10 .*c2+WD ' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(++0+ ++0+  ++0+  +}  0$(  r  S  listeners = new Vector(); 4 private long timestampbefore, timestampafter; 6 void addTimeListener(TimeListener aListener) { 7 listeners.add(aListener); 8 } 9 void removeTimeListener(TimeListener aListener) { 10 listeners.remove(aListener); 11 } 12 void notifyTimeListeners(Method method, long time) { 13 for (TimeListener listener : listeners) { 14 listener.timeStampTaken(method,time); 15 } 16 } 18 hook TimeStamp { 19 TimeStamp(timedmethod(..args)) { 20 execution(timedmethod); 21 } 22 before { 23 timestampbefore = System.currentTimeMillis(); 24 } 25 after { 26 timestampafter = System.currentTimeMillis(); 27 notifyListeners(thisJointPoint,timestampafter-timestampbefore); 28 } 29 } 30 } P gTiming one method: But how to time a protocol? E.g. time between execution of a-b-c on ComponentX. Protocol Timing Aspect?Stateful Aspects: MotivationProtocol based aspects are rarely supported in current AOSD approaches (apart cflow). Result: protocol checking code is scattered over advices, poluting advice code& Is also not optimal, checks at all possible joinpoints while only a subset is required.Stateful AspectsAllows specifying regular (=DFA based) hook triggering conditions in a hook s constructor. Advices can be attached to any transition of the DFA, or all of them (global). Example: Realize a more general protocol history condition than cflow. ( Timing Example Revisitedi1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 hook StatefulProtocolTimer { 4 5 long timestamp; 6 7 StatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args)) { 8 ATrans: execution(methodA) > BTrans; 9 BTrans: execution(methodB) > CTrans; 10 CTrans: execution(methodC) > ATrans; 11 } 12 13 before ATrans() { 14 timestamp=System.currentTimeMillis(); 15 } 16 after CTrans() { 17 long resultingtime = System.currentTimeMillis(); 18 notifyListeners(calledmethod,resultingtime-timestamp); 19 } 20 21 } 22 } jPj Timing Example Revisitedstatic connector TimingConnector { perthread ProtocolDynamicTimer.StatefulProtocolTimer timer = new ProtocolDynamicTimer.StatefulProtocolTimer( void ComponentX.a()., void ComponentX.b(), void ComponentX.c() ); } B(  Advanced Pointcut FeaturesExplicit start transitions start > XTrans; Starting with two transitions: start > XTrans || QTrans; two destination transitions: XTrans: execution(methodA) > YTrans || QTrans; no destination transition QTrans: execution(methodB) && !cflow(methodC); ZZZZZ1ZZ1Z 11 Advices(Multiple specific advices possible, one for each transition per before/around */after * Global advice works for all transitions isApplicable can also be global or specific (e.g. isApplicable p1() {& })   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)'M+PicturesCurrent UserPSummaryInformation( UPowerPoint Document(JDDocumentSummaryInformation8X     " #/XR$WW?g$ (9ATR$Z_=@+o 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s " 0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab@8wʚ;ʚ;g4}d}dTz[ 0ppp@ <4dddd 0- <4BdBd< 080___PPT10 pp?  %DStateful Aspects in JAsCoWim VanderperrenStateful AspectsENatural Evolution of joinpoints: Static Dynamic (e.g. cflow) Stateful&!%!% Timing Aspect1 class DynamicTimer { 3 private Vector listeners = new Vector(); 4 private long timestampbefore, timestampafter; 6 void addTimeListener(TimeListener aListener) { 7 listeners.add(aListener); 8 } 9 void removeTimeListener(TimeListener aListener) { 10 listeners.remove(aListener); 11 } 12 void notifyTimeListeners(Method method, long time) { 13 for (TimeListener listener : listeners) { 14 listener.timeStampTaken(method,time); 15 } 16 } 18 hook TimeStamp { 19 TimeStamp(timedmethod(..args)) { 20 execution(timedmethod); 21 } 22 before { 23 timestampbefore = System.currentTimeMillis(); 24 } 25 after { 26 timestampafter = System.currentTimeMillis(); 27 notifyListeners(thisJointPoint,timestampafter-timestampbefore); 28 } 29 } 30 } P gTiming one method: But how to time a protocol? E.g. time between execution of a-b-c on ComponentX. Protocol Timing Aspect?Stateful Aspects: MotivationProtocol based aspects are rarely supported in current AOSD approaches (apart cflow). Result: protocol checking code is scattered over advices, poluting advice code& Is also not optimal, checks at all possible joinpoints while only a subset is required.Stateful AspectsAllows specifying regular (=DFA based) hook triggering conditions in a hook s constructor. Advices can be attached to any transition of the DFA, or all of them (global). Example: Realize a more general protocol history condition than cflow. ( Timing Example Revisitedi1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 hook StatefulProtocolTimer { 4 5 long timestamp; 6 7 StatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args)) { 8 ATrans: execution(methodA) > BTrans; 9 BTrans: execution(methodB) > CTrans; 10 CTrans: execution(methodC) > ATrans; 11 } 12 13 before ATrans() { 14 timestamp=System.currentTimeMillis(); 15 } 16 after CTrans() { 17 long resultingtime = System.currentTimeMillis(); 18 notifyListeners(calledmethod,resultingtime-timestamp); 19 } 20 21 } 22 } jPj Timing Example Revisitedstatic connector TimingConnector { perthread ProtocolDynamicTimer.StatefulProtocolTimer timer = new ProtocolDynamicTimer.StatefulProtocolTimer( void ComponentX.a()., void ComponentX.b(), void ComponentX.c() ); } B(  Advanced Pointcut FeaturesExplicit start transitions start > XTrans; Starting with two transitions: start > XTrans || QTrans; two destination transitions: XTrans: execute(methodA) > YTrans || QTrans; no destination transition QTrans: execute(methodB) && !cflow(methodC); ZZZZZ/ZZ/Z // Advices(Multiple specific advices possible, one for each transition per before/around */after * Global advice works for all transitions isApplicable can also be global or specific (e.g. isApplicable p1() {& }) Strict Protocols(Per default, stateful aspects are non-strict, e.g. protocol a()-d()-b()-c() also matches timing aspect. When no intermediate transitions are allowed, use the strict keyword: Strict Protocols with ContextOnly strict with respect to a certain set of joinpoints. E.g. timing aspect does not accept intermediate transitions on ComponentX, on other classes is ok though.Complement of a protocol>Trigger advices on everything outside the protocol: COMPLEMENTComplement with Context=Only complement with respect to a certain set of joinpoints. >>Weaving;A DFA (Deterministic Finite Automaton) executes the stateful aspect at run-time. Default: weaved at all possible joinpoints defined in the pointcut. Optionally, jumping aspect in cooperation with run-time weaver: only weaved at next joinpoints in protocol overhead of reweaving vs overhead of aspect applied at all&ff/   ( d(  dr d S o04'g 0 r d S x      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a4y  0  d B ?"6@ NNN?NdtC 1 connector TimeConnector { 2 DynamicTimer.TimeStamp timer = 3 new DynamicTimer.TimeStamp (void ComponentX.a()); 4 timer.before(); 5 timer.after(); 6 }H d 0޽h ? 33___PPT10i. *_+D=' = @B +rT ? 0s&( / 0LDArial-<$0<z[ 04F, .  ՜.+,0(     On-screen Show SSEL-VUB ShD ArialTitel van de presentatieStateful Aspects in JAsCoStateful AspectsTiming AspectSlide 4Protocol Timing Aspect?Stateful Aspects: MotivationStateful AspectsTiming Example RevisitedTiming Example RevisitedAdvanced Pointcut FeaturesAdvicesStrict ProtocolsStrict Protocols with ContextComplement of a protocolComplement with ContextWeaving  Fonts UsedDesign Template Slide Titles(_ VWim VanderperrenWim VanderperrenStrict Protocols(Per default, stateful aspects are non-strict, e.g. protocol a()-d()-b()-c() also matches timing aspect. When no intermediate transitions are allowed, use the strict keyword: Strict Protocols with ContextOnly strict with respect to a certain set of joinpoints. E.g. timing aspect does not accept intermediate transitions on ComponentX, on other classes is ok though.Complement of a protocol>Trigger advices on everything outside the protocol: COMPLEMENTComplement with Context=Only complement with respect to a certain set of joinpoints. >>Weaving;A DFA (Deterministic Finite Automaton) executes the stateful aspect at run-time. Default: weaved at all possible joinpoints defined in the pointcut. Optionally, jumping aspect in cooperation with run-time weaver: only weaved at next joinpoints in protocol overhead of reweaving vs overhead of aspect applied at all&ff/ *  kcl(  lr l S 04M'g 0 r l S p04y  0 =l W  lW,$D 02 l H o?"6@`NNN?N  l Hܾ0 ?"6@ NNN?Nm `W EStateful Pointcutl      l   ,$D  02 l H o?"6@ NNN?N7 c 2 l H o?"6@ NNN?N    l H0 ?"6@ NNN?N    ])Attaching Advices to specific transitions**B  l HDjJ?"0@NNN?N ,$@  0B  l HDjJ?"0@NNN?N*F ,$D  0l dmd  lmdd ,$D 02  l H o?"6@ NNN?NdWB l HDjJ?"0@NNN?N l HDS ?"6@ NNN?N-md g ETransition Labels[l - l-,$D 02 l TS o?"6@ NNN?N .,B l HDjJ?"0@NNN?N` ' l Hlh ?"6@ NNN?NZ- i5Regular JAsCo Pointcuts for triggering the transition66Gl =  l= ,$D 02 l T`6 o?"6@ NNN?N=  .,B l HDjJ?"0@NNN?N] P  l Hbh ?"6@ NNN?N]   U!Following Transitions to evaluate""H l 0޽h ? 33___PPT10. *Pu+e!D' = @B D=' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<* l%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*l%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*l%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*l%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*l%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*l%(D' =%(D' =%(D' =4@BBBB%(D' =1:Bhidden*o3>+B#style.visibility<*l%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(D' =%(Dh' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<* l%(+}  t$(  tr t S ,04y  0 r t S 04'g 0 H t 0޽h ? 33___PPT10i. *ķ+D=' = @B +r <> ? @f%( / 0LDArial-<$0<z[ 04F, .  @n?" dd@  @@``   ($x    " #/XR$WW?g$ (9ATR$Z_=@+o 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s " 0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab@8wʚ;ʚ;g4rdrdTz[ 0ppp@ <4dddd 0- <4BdBd< 080___PPT10 pp?  %;Stateful Aspects in JAsCoWim VanderperrenStateful AspectsENatural Evolution of joinpoints: Static Dynamic (e.g. cflow) Stateful&!%!% Timing Aspect1 class DynamicTimer { 3 private Vector listeners = new Vector(); 4 private long timestampbefore, timestampafter; 6 void addTimeListener(TimeListener aListener) { 7 listeners.add(aListener); 8 } 9 void removeTimeListener(TimeListener aListener) { 10 listeners.remove(aListener); 11 } 12 void notifyTimeListeners(Method method, long time) { 13 for (TimeListener listener : listeners) { 14 listener.timeStampTaken(method,time); 15 } 16 } 18 hook TimeStamp { 19 TimeStamp(timedmethod(..args)) { 20 execution(timedmethod); 21 } 22 before { 23 timestampbefore = System.currentTimeMillis(); 24 } 25 after { 26 timestampafter = System.currentTimeMillis(); 27 notifyListeners(thisJointPoint,timestampafter-timestampbefore); 28 } 29 } 30 } P gTiming one method: But how to time a protocol? E.g. time between execution of a-b-c on ComponentX. Protocol Timing Aspect?Stateful Aspects: MotivationProtocol based aspects are rarely supported in current AOSD approaches (apart cflow). Result: protocol checking code is scattered over advices, poluting advice code& Is also not optimal, checks at all possible joinpoints while only a subset is required.Stateful AspectsAllows specifying regular (=DFA based) hook triggering conditions in a hook s constructor. Advices can be attached to any transition of the DFA, or all of them (global). Example: Realize a more general protocol history condition than cflow. ( Timing Example Revisitedi1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 hook StatefulProtocolTimer { 4 5 long timestamp; 6 7 StatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args)) { 8 ATrans: execution(methodA) > BTrans; 9 BTrans: execution(methodB) > CTrans; 10 CTrans: execution(methodC) > ATrans; 11 } 12 13 before ATrans() { 14 timestamp=System.currentTimeMillis(); 15 } 16 after CTrans() { 17 long resultingtime = System.currentTimeMillis(); 18 notifyListeners(calledmethod,resultingtime-timestamp); 19 } 20 21 } 22 } jPj Timing Example Revisitedstatic connector TimingConnector { perthread ProtocolDynamicTimer.StatefulProtocolTimer timer = new ProtocolDynamicTimer.StatefulProtocolTimer( void ComponentX.a()., void ComponentX.b(), void ComponentX.c() ); } B(  Advanced Pointcut FeaturesExplicit start transitions start > XTrans; Starting with two transitions: start > XTrans || QTrans; two destination transitions: XTrans: execution(methodA) > YTrans || QTrans; no destination transition QTrans: execution(methodB) && !cflow(methodC); ZZZZZ1ZZ1Z 11 Advices(Multiple specific advices possible, one for each transition per before/around */after * Global advice works for all transitions isApplicable can also be global or specificStrict Protocols(Per default, stateful aspects are non-strict, e.g. protocol a()-d()-b()-c() also matches timing aspect. When no intermediate transitions are allowed, use the strict keyword: Strict Protocols with ContextOnly strict with respect to a certain set of joinpoints. E.g. timing aspect does not accept intermediate transitions on ComponentX, on other classes is ok though.Complement of a protocol>Trigger advices on everything outside the protocol: COMPLEMENTComplement with Context=Only complement with respect to a certain set of joinpoints. >>Weaving;A DFA (Deterministic Finite Automaton) executes the stateful aspect at run-time. Default: weaved at all possible joinpoints defined in the pointcut. Optionally, jumping aspect in cooperation with run-time weaver: only weaved at next joinpoints in protocol overhead of reweaving vs overhead of aspect applied at all&ff/   pN(  ~  s *04y  0 ~  s *04'gI 0    H6 ?"6@ NNN?N 7 T isApplicable() { //global condition for all transitions // returns true if advices should be executed } isApplicable XTrans() { //local condition only relevant for the transition XTrans // returns true if advices should be executed for the XTrans transition } $H  0޽h ? ̙33___PPT10i._+D=' = @B +rA sf? @"kf%( / 0LDArialH.V<$0<z[ 04F, .  @n?" dd@  @@``   ($y    " #/XR$WW?g$ (9ATR$Z_=@+o 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s " 0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab@8wʚ;ʚ;g4zdzdTz[ 0ppp@ <4dddd 0 .V <4BdBd< 080___PPT10 pp?  %;Stateful Aspects in JAsCoWim VanderperrenStateful AspectsENatural Evolution of joinpoints: Static Dynamic (e.g. cflow) Stateful&!%!% Timing Aspect1 class DynamicTimer { 3 private Vector listeners = new Vector(); 4 private long timestampbefore, timestampafter; 6 void addTimeListener(TimeListener aListener) { 7 listeners.add(aListener); 8 } 9 void removeTimeListener(TimeListener aListener) { 10 listeners.remove(aListener); 11 } 12 void notifyTimeListeners(Method method, long time) { 13 for (TimeListener listener : listeners) { 14 listener.timeStampTaken(method,time); 15 } 16 } 18 hook TimeStamp { 19 TimeStamp(timedmethod(..args)) { 20 execution(timedmethod); 21 } 22 before { 23 timestampbefore = System.currentTimeMillis(); 24 } 25 after { 26 timestampafter = System.currentTimeMillis(); 27 notifyListeners(thisJointPoint,timestampafter-timestampbefore); 28 } 29 } 30 } P gTiming one method: But how to time a protocol? E.g. time between execution of a-b-c on ComponentX. Protocol Timing Aspect?Stateful Aspects: MotivationProtocol based aspects are rarely supported in current AOSD approaches (apart cflow). Result: protocol checking code is scattered over advices, poluting advice code& Is also not optimal, checks at all possible joinpoints while only a subset is required.Stateful AspectsAllows specifying regular (=DFA based) hook triggering conditions in a hook s constructor. Advices can be attached to any transition of the DFA, or all of them (global). Example: Realize a more general protocol history condition than cflow. ( Timing Example Revisitedi1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 hook StatefulProtocolTimer { 4 5 long timestamp; 6 7 StatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args)) { 8 ATrans: execution(methodA) > BTrans; 9 BTrans: execution(methodB) > CTrans; 10 CTrans: execution(methodC) > ATrans; 11 } 12 13 before ATrans() { 14 timestamp=System.currentTimeMillis(); 15 } 16 after CTrans() { 17 long resultingtime = System.currentTimeMillis(); 18 notifyListeners(calledmethod,resultingtime-timestamp); 19 } 20 21 } 22 } jPj Timing Example Revisitedstatic connector TimingConnector { perthread ProtocolDynamicTimer.StatefulProtocolTimer timer = new ProtocolDynamicTimer.StatefulProtocolTimer( void ComponentX.a()., void ComponentX.b(), void ComponentX.c() ); } B(  Advanced Pointcut FeaturesExplicit start transitions start > XTrans; Starting with two transitions: start > XTrans || QTrans; two destination transitions: XTrans: execution(methodA) > YTrans || QTrans; no destination transition QTrans: execution(methodB) && !cflow(methodC); ZZZZZ1ZZ1Z 11 Advices(Multiple specific advices possible, one for each transition per before/around */after * Global advice works for all transitions isApplicable can also be global or specificStrict Protocols(Per default, stateful aspects are non-strict, e.g. protocol a()-d()-b()-c() also matches timing aspect. When no intermediate transitions are allowed, use the strict keyword: Strict Protocols with ContextOnly strict with respect to a certain set of joinpoints. E.g. timing aspect does not accept intermediate transitions on ComponentX, on other classes is ok though.Complement of a protocol>Trigger advices on everything outside the protocol: COMPLEMENTComplement with Context=Only complement with respect to a certain set of joinpoints. >>Weaving;A DFA (Deterministic Finite Automaton) executes the stateful aspect at run-time. Default: weaved at all possible joinpoints defined in the pointcut. Optionally, jumping aspect in cooperation with run-time weaver: only weaved at next joinpoints in protocol overhead of reweaving vs overhead of aspect applied at all&ff/      h9 (  hr h S `Ä4y    h HɄ ?"6@ NNN?N' ,,  h H  ?"6@ NNN?ND  E1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 boolean methodaexecuted, methodbexecuted = false; 4 5 hook ProtocolMethodA { 7 ProtocolMethodA(methodA(..args)) { 8 execution(methodA); 9 } 10 before { 11 timestampbefore = System.currentTimeMillis(); 12 methodaexecuted = true; 13 } 14 isApplicable() { return !methodaexecuted; } 15 } 16 17 hook ProtocolMethodB { 18 ProtocolMethodB(methodB(..args)) { 19 execution(methodB); 20 } 21 before { 22 methodbexecuted = true; 23 } 24 isApplicable() { return methodaexecuted; } 25 } 26 27 hook ProtocolMethodC { 28 ProtocolMethodC(methodC(..args)) { 29 execution (methodC); 30 } 31 after { 32 timestampafter = System.currentTimeMillis(); 33 notifyListeners(method,timestampafter-timestampbefore); 34 methodaexecuted = false; methodbexecuted = false; 35 } 36 isApplicable() { return methodbexecuted; } 37 } 39 }  V  h BT܄ ?"6@ NNN?Nz  r connector TimeConnector { DynamicTimer.ProtocolMethodA timera = new DynamicTimer. ProtocolMethodA (void ComponentX.a()); DynamicTimer.ProtocolMethodB timerb = new DynamicTimer. ProtocolMethodB (void ComponentX.b()); DynamicTimer.ProtocolMethodC timerc = new DynamicTimer. ProtocolMethodC (void ComponentX.c()); }ss 2  h H o?"6@ NNN?N}*-22  h H o?"6@ NNN?N6  2  h H o?"6@ NNN?NY2 h H o?"6@ NNN?N }2 h H o?"6@ NNN?N ':5 2 h H o?"6@ NNN?N 'H h 0޽h ? 33___PPT10i. *+D=' = @B +r^k̐ ? :kff%( / 0LDArialH.V<$0<z[ 04F, .  @n?" dd@  @@``   ($y    " #/XR$WW?g$ (9ATR$Z_=@+o 0e0e     A@  A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||s " 0e@        @ABC DEEFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `abN E5%  N E5%  N F   5%    !"?N@ABC DEFFGHIJK5%LMNOPQRSTUWYZ[ \]^_ `ab@8wʚ;ʚ;g4}d}dTz[ 0ppp@ <4dddd 0 .V <4BdBd< 080___PPT10 pp?  %;Stateful Aspects in JAsCoWim VanderperrenStateful AspectsENatural Evolution of joinpoints: Static Dynamic (e.g. cflow) Stateful&!%!% Timing Aspect1 class DynamicTimer { 3 private Vector listeners = new Vector(); 4 private long timestampbefore, timestampafter; 6 void addTimeListener(TimeListener aListener) { 7 listeners.add(aListener); 8 } 9 void removeTimeListener(TimeListener aListener) { 10 listeners.remove(aListener); 11 } 12 void notifyTimeListeners(Method method, long time) { 13 for (TimeListener listener : listeners) { 14 listener.timeStampTaken(method,time); 15 } 16 } 18 hook TimeStamp { 19 TimeStamp(timedmethod(..args)) { 20 execution(timedmethod); 21 } 22 before { 23 timestampbefore = System.currentTimeMillis(); 24 } 25 after { 26 timestampafter = System.currentTimeMillis(); 27 notifyListeners(thisJointPoint,timestampafter-timestampbefore); 28 } 29 } 30 } P gTiming one method: But how to time a protocol? E.g. time between execution of a-b-c on ComponentX. Protocol Timing Aspect?Stateful Aspects: MotivationProtocol based aspects are rarely supported in current AOSD approaches (apart cflow). Result: protocol checking code is scattered over advices, poluting advice code& Is also not optimal, checks at all possible joinpoints while only a subset is required.Stateful AspectsAllows specifying regular (=DFA based) hook triggering conditions in a hook s constructor. Advices can be attached to any transition of the DFA, or all of them (global). Example: Realize a more general protocol history condition than cflow. ( Timing Example Revisitedi1 class ProtocolDynamicTimer extends DynamicTimer { 2 3 hook StatefulProtocolTimer { 4 5 long timestamp; 6 7 StatefulProtocolTimer(methodA(..args),methodB(..args),methodC(..args)) { 8 ATrans: execution(methodA) > BTrans; 9 BTrans: execution(methodB) > CTrans; 10 CTrans: execution(methodC) > ATrans; 11 } 12 13 before ATrans() { 14 timestamp=System.currentTimeMillis(); 15 } 16 after CTrans() { 17 long resultingtime = System.currentTimeMillis(); 18 notifyListeners(calledmethod,resultingtime-timestamp); 19 } 20 21 } 22 } jPj Timing Example Revisitedstatic connector TimingConnector { perthread ProtocolDynamicTimer.StatefulProtocolTimer timer = new ProtocolDynamicTimer.StatefulProtocolTimer( void ComponentX.a()., void ComponentX.b(), void ComponentX.c() ); } B(  Advanced Pointcut FeaturesExplicit start transitions start > XTrans; Starting with two transitions: start > XTrans || QTrans; two destination transitions: XTrans: execution(methodA) > YTrans || QTrans; no destination transition QTrans: execution(methodB) && !cflow(methodC); ZZZZZ1ZZ1Z 11 Advices(Multiple specific advices possible, one for each transition per before/around */after * Global advice works for all transitions isApplicable can also be global or specificStrict Protocols(Per default, stateful aspects are non-strict, e.g. protocol a()-d()-b()-c() also matches timing aspect. When no intermediate transitions are allowed, use the strict keyword: Strict Protocols with ContextOnly strict with respect to a certain set of joinpoints. E.g. timing aspect does not accept intermediate transitions on ComponentX, on other classes is ok though.Complement of a protocol>Trigger advices on everything outside the protocol: COMPLEMENTComplement with Context=Only complement with respect to a certain set of joinpoints. >>Weaving;A DFA (Deterministic Finite Automaton) executes the stateful aspect at run-time. Default: weaved at all possible joinpoints defined in the pointcut. Optionally, jumping aspect in cooperation with run-time weaver: only weaved at next joinpoints in protocol overhead of reweaving vs overhead of aspect applied at all&ff/ r? ~