ࡱ>  Otfn yM%@əzO;PNG  IHDR:]9sRGB pHYsod0PLTE999SSSzzzhhh9r OIDAThMlgIja[*p޸C[QE -QH`j"@jѴ4d?-P@o+E RI[ʀ}.e7v9Ppz]ձ R侾٥ܕdCh5I-wog޼7Έn.Rķѭ-&pe[+Re'n:4Gѳѝ:[uҩ^0]WxyDz] svWŰ;H%b+9 Hdn%ur"ίygtk6Ϙ2HwR ,x"vO}`e/ q6\\(8}^/b:Y3 +Ga#ZO,|_Gf׶ބjP=zL~\2> EҬ*!^^)]70-S*|]v;SC"Tj5OdaւX;W"˂Q?6mXA׹ Kˑ$Px^Fg17dUYI?[0/ s׷A(C׉_}3``0L/Y./+[ō`{1hKK[7zT-~_~W ~'V7?HͥrF Z"rQLsli=٪/ 7atχ]Ջ4 kԙFeE/WpWn*8{n:7=c!x>]IB0)/y.M%׾* ;ՈbO/]HwtxxfH;Uwb8 YۘA=g1إt. ;w'!l׳αb$Zy)8)FJH\h-ҹ}j:Ȳ;!p|FW@JǼm=9[m3uSes y+_O7%ưt6=.lLJTcV:VLn+]Ũ_ֺ }]itQsVN  w0 B3tM#C2W-MY[9+V{:]q8`ӯ;<'ZfQb J=? Q(Jcv+lt]xg4GC#}r|2c s ȭ,<^9ϳ=f:kzIҹ]cdڦ1hP$$(=):-Ff+T9wE+ѾabNccSN:P~nYd \1ªVb | !XJoGձ-:g,<'IPϴAP)hۮv\)FrUag D-z?7=:˫L031 ~W?eW+FW勋L\~ʮcts]xV= 3S t8nVQow[ۣsX t+9Xo:u:GQimy..S\§;Hab; z8΍b VF/i%QQd9Xbw"]a&Tf:H.#vi%,CLq+`n(E§{`R*Gyv===='KǷ)Ӛ~)//QMJtVIU-6~05H/Q-FF76oBgZltͼaM3dS5:U շʝVtZM!S-69\烑SlUk ]ZV:C2!;G5ձE 4gL7c$V|o)BشF7 gQ誁A~b;0÷ݫusq =aS8n\GwObkNc&A gΜatB>Gj(Q΁~rl Fbn|#FW|гtTy 6 һ~7bCoќTa쵠3lih°NFE'18y_lx2zepGgYfmXx?Zw?>OqT\wqwlƜoB'(dsR=kYc(o1*VNi]?p<11RҪ5躋© CVe q};.ga-QSqc`Sf~W~9.3&zFСg<:+_nK }6!c)cK٩Rh\.gYYa,Mz4+FX =;|mBI3kn$YU%sɖXoY Лs|G k?},MG jknΰj{Qp`:4/|'Î3V: I]ngwڙL#IDATx^fu"$(hh`+1,X$"VQZBb+Eb#X&l6DbL@`c@ UuElHo8̝;>Ͻ}Ϲ|x>9>s=sfw]?яO賕N]r;!\?#H%@d//32.W1 ̫u"}ɳݥ^ڵwbr&]b*u2/ns9g^y=!5Pj]w3Ne5=R#06"M8"Dz_|zMeN6_ޡ:(樺>ͷn+Y/o~\pAۿE?S^9{kFfxZ>S{4iȭگE/5Y(M Y 4YG !ۿ??U"V"evQϝ:c""IcgEŜxeS(l岂F鼄F__xX?|9A0%N;__r)?Ogb GTPŎ;xp4C9G֭^G}G]w]+zVY_&ɀ+:.LPaRk;>!I8 0_yÜY| /BUKw[y`0\A\ږ)= ϡ_SD$!4J+ X_}x;AigFau#b?OqJ`/(d ǎ}vXVF?WouĤ$ʕ-Yz*bvAVrh%QyH(P9z,4: CFڤ?FX4P4p륒rlfB*t$f֎X" ‚:!!zZ .LZ VHoz gk.ڴ*=}|I~7m޼9sN&LUMFA w~xƫiLRz=yOhB!A[J>O{シ̰nذ9 sCejYD>۷<|̋og*6-ff2?e`di44W)Z3_ʂ=&nJĩX+  ú`hkBdRU?+hm*&|z whtu1-U|&n傑JK yď9Ob WI+Ibݛ vZJP.,qz*R!+˺~.mF eJp7u ЄYXoF~I ZggVD d=~JY2Mw1TVipAܩm۶apnة ' >*iӦM,-Bgqy@/\Z)ZI啃&S)f*]}aUżiL?iaS`y,AR ]YY6$crg+20=c*Gy*``H4-8jSDȫ8{_:3~ӟX}yںۻ^pVzL(b+nQq[q '\MLX  g|)o$Ѵi1Tb5+SyOˋzlψ>6{#\Zۨ-`VPZ_(m+m_MS[qKF i Mggc`}7V@`1ˈ\q_.>,쳏9k ۻws=Ǥ;+?19 }M^{GKmYj_|.vٳ{dl/ Y+栃-8|뭷 Wo&u2:So~/TYbqa/| ~[@^k1;Bdv 'p%:뉽'>O7)Do_l~?b@'K ۘ3"^~=cd6<K/tGsI'=C_W^sS<_{. 1CB=p cB3 PAlٲ[n~MP^,Y}[*$2FJ-e zd,]?޺!ph/'}>Zk,y$e"-%iv$ p>UXpfUN F46%~ԛ?h9!sum~wøCurH&J$E_1/=gJ"=Lyh.3,^zq^)4y.MO/iZ=pnG`pB8ˏ嗡X!\%0+#"*I&thFt.QI>4r _1Ɏ<;'^1LyMM2ZvNMkcڳ6(#V%EY9́ e%GS ِ b4Ey@Q4b[lJqKY8a78^ӚvZOKIoV^ Be V(MߦKv^z&*)̒`U.,i e,LD Eu:%!d-e/i||[EYd[!uC`٣Hsda4{S0W}n&E\t*hMJZT MƤIs[*) y+˹\:rg)P9RsB7}zN{p?^dq 5>nŖ& (Y>'PX-> "2[Lu믿/}_E(X=DHZƧw^o u@!$&T~X%tJÀڽ{7g^9R.ߔ9A`5ٔ'Z+}> Lgǀgm$71>ú[Am&sZSnPsS=kS'KT6b StS\ؘ"AB*g\=kS'.DFp ` cѳ6ML xJʖ VeW d)yd ˊ@|#(ݏl q& y#0!w}\rmF?pk+XN~z*eԬ>YPY%Vl)M l, ,ަ_?Ǫ̹4TiAh^يvSyvjD!S$4V,Jj:2}aۭ&$P2dFi= qNqBc`g13V+(E N*xI/ġY-CVUvtՠ~7jjYKm֭ iFKGXdB*#pe '?I O>H`r jhaԧ{2 ~ Y΋.Y9\D8_vrXS]{A!BBGKc#DtDѪET -r3ZGL:&!jRQ&oe1VS+V҆պfiB O}WiN.;wLFYv_T!Ȇ]qM ,LXH0~Ћ1,fZRDKo1f 1 *슕֏"3@&}{lko%4u_&Jw]D&OP{*@dêȫWrx Vڈ1l لXj>i.&V֖2FyNRd1U/pgN 2>Qm'v##E ݙc)OuE"0!"aG`J G| 8Xq_RU&$"gXKJR4EښN8B`UҼ`zG`FUI: O8Iqz8!0{xzUhVҠk-iQUR=ǜ9~yꩧ8y!װvJc:̯@"EW0:`KO3s?]ِ8uh MMW^^"bjW#p\kd`}_En#dضmsBy}#"&="gq!=9C-[ BgQjevx8eUK{Ng(xxr[vtu1 ne딞eoa~Mь1qKlRBJ¤1R6+ 0F9f[0s%Ϙ[kcn͕wfڄ!=36%ShY6&]w~Ž`k)(EF +8$N55i rғ,W֦kNB DD'n6^RVY%EafQCaI)+Ѝ)gQ1Wj+( NHM< JJ3 %$f7< |G$)QBDf톤:8eoT+Axd W 7J~dt 6*; jTflFq+bv_pkT.˫la65=vҤ9BU%&Mx+$QB&\@5k1*3G~G 5,Ȉ-D^*)Ǧ9 *#5D.sQHDrMd$z޲]p)'naڵk̮,<^IO?,1/AGngr}Un2j SOpE~j&StȹلQ!{ЄZ vН{/sWbΒF,[%oߞ򠰙ؠ-x=iI6+,6Cxmʉ ԽH`OJl0qK.+ VRyNGC!A+q1YIdu8(eR+?+)8z6Fә&D[_d!mTa8GZd,7)X3ǟm YI#@lr!U!`6T+q.ʅ;LGK,˛o}(ڄ#S%SE˷+nB,C~oԃoL36J>J'\c&wd۶mt} uH,کш[%)qkxue?7mDAg#r6_Oļ A.M+j4)/=3A.UH GżiL?):`y+eJ;-0?;[b00$q1j"ޗɹ"%F泭^9Z7ׄU騆\qڲpes1tq-/hKQbũjКUyOˋz oI.}YG8f1Z ͤGhWyڊ[qJW4‘RUXp#*Y}7A-:ꯘJݻ }֏g|0K#n޽c#u}}ט8va@`QJ_.>,쳏$n\s d0sɝwyW~C-2ڣ>!ڰh0,܋/ /u]ٳgw_Voo&u_^<|S"ԗe⃬~1׿8j3:ɜ/?Aޫo}[L8C K>17TG_6t祗^R\H礓Nz衇daֈ) r1Pg8÷XgAdj lr-hOE-,_][TsC ]f;IlpVT9N)$[w~wy[Mд6C,eY*zmso]`7Æ Ȩ"mT9RjtڽIAC+P7DXEK3n*m߉< O%kmE#7[{3F^]Mҷ {pmϙy7}/SnS=v0KP(X\%- 鶋JwOJ4QsO<M[%lyp\_q nuQ5sRU2c˸„Dq-!ڴ/˪[IQ!υn6NbNTD@CQ \[nU?,]zB@z+HmaF m&KB@֞,RE*mV^X% MwedR`B eF9Z>7)1 23*E5erEDa #"iCφK/,/wly@c3,&/. C ޾}1V uJwLd W[aJ4Uq?Dz";2!t/1\H 1;Íj дo␥vE;eT3IY,ft |Ҵw ;b曒z~,LZyuj՗TA'teBU2IyuVWI+/b#LJZ&i9#*iEt WI$-Xy&=[,;Lձ҆+lG0um^9w.0!Gkq'pJBt(_|[G B`uTEEӽT8@K|8b%epHVRM΢)P@ 0b} G(U0ʛ4eA:o 0AʜEe@ӔA/ ЧT6ZERʰ&57 Cc%'߯0(,E R3 -^ׯկ~DDð{ iDl /LXM’iZTR)?ܴRiE>J G`R ;,OGĬ""5K7YIVlh~G`!0/_΢r vr:7JiB>(dPU{NFބ#P@`ꀴ_?pS"rxB14ۗ#0 OF78+VҊ@pp4<ނ#T#**'tp4<ނ#T#**'tp4<ނ#T#**'tp4<ނ#T#*P&\5N8j{$ O R"z `8mɏ}{S|?o~{?O;civs&#ґ].Z^zHf 4rC pۯh oQ_1&n!q?B-˿|l#ibop&*'85B5gͿrO?-X" KF:lhM4_*,rђ%b mXZ3<Ћ/\ev7'-K s97~gFQ< yy^o[ƕDؠ>ܷd4q>[𓀚uWjri0pe=P"g\u*E02J*n1IUTP"঒*) TIhRB`Y Ҍ/ )ުŘU#*u[`B r XBY%%,=HtSR1Aĭ 66(qe2a($!JVC;oM4is!z!1~56s{!=ȧo"Z%Z)&I RC94zvzqcO"cSI*UȬhR+=@(|%wi W@tgڰ)A*ꔺeeE@x٢N1a)c.p5sWkgd5Iiҷ_QM*IdM_TSIŽ,e-rUU<,FA7g~`iZ5\֠㾉@b#O<}$PDdV\/d$\ CѤԋ }z 5W]ZTK@2,2cq J /_| MPx7oN9{nR驧Gy$\$F%?MhtA{ת_;oߞ6s0=蒆WסZ- M"y UNwAs)S;- Rq#~׮]caODۅrȁ2 t +]%^Tateש\8_(碋. lb!Ge!kY4 Vm=/h'KXG L_Ww+UmyPO~#hUo)eIEܶPK;I*ƪ|rrWP_Z-7Լ8} U3rV/1V܄#D4qtiUx_2~Guw̌M|CBW:h҄9ؘ+xեگ5 /~Ady+oW&`6i6 9GФ7<7j]S fK n,z :4"O%XJ,iӦqc3S{ Ў]nݫZRejܹ3"g?Knh[M!F> ӵ_3ӑ_W93fG\GAͶǽ(=%tֻ ?6l`b6\@P̗%:> UR/)$d1Fhtz|R Κ26n\xz@a`OJZSOJvDJUYOo2_[nnMߊN8` Zp'P&UDSOHYJ]H;7tS}u m+asiO 7ܐu;J -7kxuW'5qOgxJE0roy?G4=9&LSFygK۳>ؘFM( %ڊ/ POh MiES\7n8=D54rFբRqO^sy=<;va1/bmC806hpilec$J)Sp*zWzyzL3n!Mi~!Ptq'9c"@xCRAOQ$X:(YSF@Ć7U^(A fhN8\ A[iH6@^J Ƈg2ն6*H!n=5WiĤ˽4->]+[ydNiZ٭j=mm$ţ67_GRwi#Z/6D /r*8[gA-WTHx+c%uZ "گWh%i8#S%G脀Np9# T&nW2u 8@`**Ikm sB~3 jb!u/ld4]Y& s^[:G`U֙͞K7t/8č]lgNœ-g}v:Z"b w*wiG;U[Oҥ('@{p]spg8vg/̜ {9hK.$=M:#;3SœlbPD_pssD>lR씋iQu:IWBK!N`sct/Mc4S>ee]SDȼJ3w)}L7;'M-i%DU(Nh9HeU։3D@pUi:3}$'M2GN4daUROs~`U&ց=EDj3ŤZǓ&!%;٤I#mU FJT?;"Z%qY1WkjJ@u0Ý@(Dcp4;|I(4P0RХ)H ~"__@$qǬDn"x=ÀIHmF@p/AX! o0fyvE}_ze auTg*NDw4eL02&Յ?٪fJ+O2ENFMRJ5WMQ'YL$m|IzByAG@E*4m6V;=Js)Q4;5Րg4acM*)NY[#_oYVԷzz+1 Фj_6J*)W^M;~ڨ2z1I%2,r^:groc;k׮]ӔDEåLD͛-_,|q, Ņ^SlݺUdLO 3)!yGhkLP*;lee@i"6A;.8grG6J1`x}gb0fG([-i]dY&nYs̐V",[n%>f9j[q~mU@U.HڨM|&Kje6<$c ,:Ҵۼr5!JQ]=۶m>BGkZl70%0:\dS- dCV6Jj@걽`6lV>E7pw܁?sM6gQ[WyJ5ɑXpdl1e E20( 1+  ŀOE$cRye矇u{抄f&T"˟]qtb%Blj S]~&fw劥peX{ i*'nM*mT͊lpV\NϣIz#+8;yoƍٵ}7DE,}^{7;0l3 oRI>ߖz]VJKGy1 xI oW쳏|tI=[c^~={P9,=\c92L!B=ez3<[oQ'p@9*t7Xa(]{RLgՂ5\C/D,Vl1 D/|$q'??~3+0 "+e6l`2aI `ЮJz)?B?O|ӟVI y^r%& l2 ۏ:i;~3w}jSGȞ`Dc`Xj-~{T¡.V$xG#80 0YƊ_|^뮻^}U4{$(Fod]?B R2 'V̢^eh4]2,Y"~7R?[)k#kR!TL֞2LXɸ+6*Wk*Ŧ QJMi\{JsnZPטIpafĕbpkWPgOG=mT;KH Er ٟˮE,SD,N^'N )8#2A%f25O ՓMsEG%XYJ%G (kpɦ"ݰaFRIkP#̂Y󲎀#0gVI1I 8րJ_R E3*ɬl#۔-̶"Vgn* S!>"QJ8í݁~ă1#.u(*rkaCW=;5eQ@eD)FRҸJ摽!q c DuT bF M~ִ.ͨNQZ Z?!7m%_ 1QX6dG5݄F]fT'ˢn aC nFkf@wRԄ]V"ruc)Jyҋa 3 CpIܚ*KIH_ZCNBuѾbD^)pqu:!um%_L*^@[Z)wL,BJnlj&ZD,-RTI(lTѾL^#0;m |I~w\8/"_. (Wh/9"¯~x.I_٨>l\pHZIR&Io+ՖIJZk:qkTZI"hm  "Z_&ʷ詒CmZ470KӁPsH6Um}uܹ3j_.:EmyACģUqla(Cp"%)֭[E MzhtQiKmɻCVD\Qޞ/xm"= I]%Ka;ە%)5Ԛ`jks@=k /j]706YY6n,@Q V5©D=K#]V6`UJ(EPvQ1ECJ q Q~|~}ιsgpu^{^{WII`++Y~ֈl}RpI`yոjh@Õjdk'L>C{~xmͣea<и*u3 -yȑ#_җ>eSڟgj/WԾ`z׾O|"S7H'ǭv㍸ T6 >sQ~qr { !1p ;wR2կ~Śj/ˌvުmMDC/dH&L;[ R*ڞ_RI@TZ܊Ξ=;3otrzfe9#1sԧ>w-rO~ܵk#ޑ%}{׿GProL%e\^{Sc37iZ!ciuJw)gej $C^E6X[;[ End**!SO~"F݋i[f/$3M-<#ֳʂ>L`$5?V*Fdeqnv5ipfJ)Pe2 %#ci){k|3񫯾:ogΜ@wx)`޽K }!(v#TNxna3ieiE2" nHϟ]F l<'(V!YŦjBwRݻhw3P޳ C-zt8x3OGy>04~ьUSC8*H+RYWZ26I8f ׁOw}{KQR&!,8jng|wQm @ ])zZ  _wiq"| Yݗ3NUlƽ""Mx.wYH}[oEi߳gnghy%|Яg?ǡ4KzpN~ke='=؄G[\ڛ--.mA,M^TmvKP܋^BN&>ޔU鎆d+z%=a/0rPp p}'+}i' jq dpg!*i̋g(ytl/H.$}3}Q*=z<섶 J{P_c;1ַ R 5%ID0XYXY~.xFV˥<-WY C# 4K26fEG odog->,t/=lA;Ƣd5v+>6a[#'+R%%.DGLb7 ׬2`R"L%U&~RZSS-y~6 %a8u=!%K뮻b9JjvsaUUC&^o[7D6ݭM"6/L33Ma_,͍ݬZ^F!^X;h}ZTI`hY1$P-bzWZ $lRm~٥IMæ#AGoL fO6 vj_z*zE 4cӿ2NRy0\!{,ٷCVTGx !ׂ7HɝdՇ8Vy@->cF[[2aJhT WȚ2><\tA}Ie-|Xm!?3{K62kUtҥKKQ)>|ӟhx$34Ut'S'^PhG?^#19ffz-7@ qFWK]i=qk3Wu0bѐ@Y|٣Hv/{cCW~\q|FYDg ͗~^9VHɕOV7ByAش:!IL('$J}FAa@nH# 9 =8 Н]S»//5ǗB CJ SiE T+aN1J+hIR=VS(kcBa 9zz;ʎ J:e YIBP3*o}[(V$%Ë! ö F./ _3 y+zĥm3h4cM] $IX^@+ةZM'1Qkq%Әk(JᢈA%Әk(JᢈA%Әk(JᢈA%0uBlNDQoܙN5⍑}3:ŗn3yn'xЅbDR&7*SD~x saz:4Uvb-`b׿zP(Яts#AԻ*vn'7;,O?exI/b eO6 a20+z3ǥkT#lشo12̓o|5а˧rAK<d1m! hشo)Jt~GI?rn*4JhXD&(I*'"&}``M3C’-Ǧz养laIts$h:RCS9neGG3G7ڕNаB !Y 1p~DLSx}aӾ[A% ҄Y˃(8@*uFz!ܷ땀 +,,/zý/!ްZ(\4Ol(aJ6Yxf6$y2ѫ=;<j'eE+>c'=a Z n rͼ}xikN駟fcnS=; GE5q<> VF&)4M[Kw *B3Q {jYy6ao)g/ܩrtE LNza|xhAah0ktTŗcZAwæ?X]A6QشMAAش1TgGկr6mŦ%¦7)^ W2( XIVW^yTTp&=y7}|3&p)MFBQ5_R@%m겳@C4N\>} !à&J=kilW%cA!w æa$P-jO뢨j:|+LakZ!:K;By`Z{jR۩eGv+0PIp4WY2(*٥@|'Ɩ/6Z>u%- G IX cǎA#0"ezV'Xxtŗ>t^ùs$UF$RBkKSp N|-apcz~BJ\< 0?\ӕc6o<`*UӬu 675l|U~M`_Q RcB[( qdw3v_ FѣG+/2oZesVF: _+zwK/a,:xA)n@tKyDT;FR K /) -CQqe10D#yҁW 94՗..A8#i vc^Rl(S]/:F}{HaKLkV0gHHZ`Ͳk#}p'|"qhFvt> xr˸."H2_~iPs;29zB a_h\hW|^˥Kz ,!]!OqY]ZܦX~e'\uW_eDaqOŝ;wvb]ybEouap-(4W qiNZqUL5Ʉ*^g5lzXS8A>j{KcZ_:CL }`axġjk7< 1s ˑCP`@5c֩,B|P,"DC[29-zB8'LvF$TIj^f#~biKC̠N8M2HhwIaJ/ca %X`&ޚF-5$`\=DYY~'ʢ^%naw ̭HG@˓ w%5uZB(+6Ģgd mz-Oj5zD ֡A7P{R˯KP8#28A1n7NJތkpD(Jd f}JU"NeF;#s1 7t 7iIB"X^akWt =Ei$6Ǐb{!t^/+XL\ % e*l`LX/.+%\._ب^*/W_3!CݯQE(QSV hm 7٥P*k꧂9{, .RMiXkZnDdds;UQK5J@Nϛ!/zy]LB6z.O?؇5{{!|CFx^0x *G1/S'm5(~7C¤HitZX9^{XG +LI~H<:ҰC9[Eq=Ò &+Y̚O>i Og.tdteEV)J_S"XIbR(cg](Fehb\Z0Q,N*#kxcfxVOVF߿??۾)wJ-u V|8 @ x=j 2+cvj$ Jݧ]C4ZZ$_-m#gfJNX9Kwuv%<&wڛE,0VÄldv ᦎQԨoxA]sfͦn|dy{`,ܰiX-d,u .ĕX lش@|U J*(&MDh1?9fLO&"b!!NzN)v"jJ"ES-+$}4aO`A8~k۱c#ϝ;w=p]i(~ܻl wc:)SNA}]v^} !Z`d}P2킠JEp&UW]>BJ\?uXv] w}?4GiaHi팹9GzʬlGSǺuj؋N~Z(i8`D24C5J,7kHvvŰ/1'I1cU|k44"fSNye\}2eZaԴ<,mHlmsڇe;K`=L릛nZpJKmiSZ@5xiEGjetogXJb5nUUQYcin-5Z4Ij3[/^(+hY":$#e'^}Uf`zqS5wy'ah-~z)Xw}7VB~ hL8{,L1vך^s57pC}Ȕx^z; >1 6a.aӁ~Ç# &79>;wX^qWV$^Q q رc+Xc={xާ oAV&[& H`/4RNtV{#(Bl8:hYLp*{zPw9HB<)UF n*Z꩛s2er"27o>)36 kwc7ޖlv/dQlҼ(~z71kpen<jHUlsii N,fzdjiv6KVr,$ӷJ瀰*ysE{6@ǿяcfK ų_e衇lA87͒@Û֚\xl[V#ևW#VJ$$mX6k%%IENDB`n:lTvڃ/'QfPNG  IHDRHU`sRGB pHYsj0PLTE999SSSzzzhhhVCIDAThMlEk;nBSoZh\ZUq*^&l4' = n- B\q**NHi6,FUMlg]?ͬwA*gw?ϼy3Ȑw;BR|eTͪ'jZ%9z jȔȌ4S RɶIZG6TPՐn~"B IةW"W0"]`!HzS40KBբy[^@.ObP*b.ydQӈҨjgH3~Žao)HFE@[Y<亢(J6ԵRQ:;e,8h]W$s}L 2'nl7 57CmȴY\Հġr搬R~vXhm+l%sR|4/ W5 'eA-亿L zv~ݷY[Z ̳bHVՀ1S͘IT@f ȅG70$A=9X"BH^Հ\DMy2o)n6sܧ\i<Ln%f+Gw߆_S=3H4mP\5;K +gZ.&\&3<)ߠW` yeKcWR Y1}( Ii̝n>%6A#5_Րv2*@U uOwgjn`4?`Wȼm?-z T]U@ 1ޞE"fBk;= x_i[ E>kUы ~G^|Lm=*@..' 0;UEkߤU͐xW&í`q+QU(@R[`0T;9#(:(ru{! aVSUtoR RODLNP7H͐xW`p4@z͐ljS!12*R2̡GD~aaH;/D2e2lš",AGHU3,-35G`"J! ,6+h G.ԍ XD9a 0B,S;]ʦPWL8.H-\'bUk's|puk#ҭ日I}B-_LDO+`2]g|KuLX&kzu)XB uí"!K:uSRҫ2)zո:2:i 2)|`曎~^8aiȃt)}P;Tw?ү6gB"Y"W<6MXJ䇦!I 7FY=CKH;~eIENDB`nE-uB QPPNG  IHDRdUn gIFxADOBE:IR1.01agIFxNETSCAPE2.0$NPPLTE̙̙̙̙̙ffff̙̙̙ffffffffffffff3f3ff333ff3f333f333f3f3f3ffffff3f3333f333f3)@tRNS{DgIFg?^K cmPPJCmp0712Hs IDAThCE@C:ddUbnNAcz=%Wc5>!)Ħ6UAyF^?[7TUw.Nq63i6@pq,ؾr̓*C;}j?aHz(Umv{^LmwpA`s](4]sV!6Gx\BvAZ}%49tm?C{lMU3K =?|_ҧ_ɓX/}h1Xze$tpq/ ]zUDE9ir+ SX0)Wd(]M쳣 w[}Nd xԈ:bIXpi?ޓagj`/0xw56Z,aFcʤiwk͕D_u`,%Q/¥fAj67&|ծiL,?iZ|nM$-8 )ӏDze4/u5J;F*opLd!z}?be]MR5F- CYk˒}S*0Õ] `Jd„89jS4s#8/1.,˿MMhvMSXWsٙp^gv#y6mxX? %b4 ĎQZm1`?*mJL:ƫÂ=1/+@tD#b(x\*&kEx~Cp C: J}wcT!V;U$XiD$[W$dD$i>a"Y쁊gm5/mypxGotMH2cd H)2osGu[xww|v^0!0A>L.ٍ8YBkUT#oMGJi5Z LRu "W?!;p|V_4`+ DƴZ84Fa['(r0c|<2aAaRp{^@LRl('Xotԩk]eMEt~M%GtjEt<{;<DaȲr.HhfhdzGm7D &0L4_@* 6t<O%i P71EutJ@r!̰M<%H `cߑ|6Q^K "`JhE xD l_"\ %D)vJ;|3[LjmNȉ@ՏBKa,  ќ@5SͣbJ(l`g ;-B "^(}at"^0NʏK:yHzYΡcYL 5xQdd88u[1V" [.7bH`cվQySN9aؼ, rSLn883r@l%->ů(g#IZFk5ǫYe_Ȓ[vq@t)/ ER .G׳Tz܄8X U\h&F<:rnDz9 gYSq~0XAݷ(1o7oMK~vhrvcLL/C=0;k$Q{:QEMq}pݩqݶШ2A3S/?DA]c#աjxݣMR RXNC QV8o>Lca D*3|N#`W8xS龍*i/iGA#n^xY/0TLqI9o\q]vr {ŠhEa(=b04>`H%@ ^F/҆NB5$3-*ۗ~V@:c%gW1 Cr< r#3;:Jya9^T0TGj:Br ݾ !q7B0,vBtæ{_񔖟e @D#{N#bJ1c^ gkVu j8x*=XeX= t2@aF%u˺b5O{8xB"\&@tTO|/?NFH*l ] 0s+(D->1ܳdb"QosAi e'8RޏW5_0zE1#D!t&|&2M}<,! *(0_}[;y6g (D:=pZ:_[N(r>f_)D~ Bf-eIl;ar˘;P8$]:<`Lh]X)=\7O Y)&;.*_+#jba0! Cep@vm5MޯAsUX=`?

hc%Xѝ~. 3ZVYr$A@ .TVȍukp]ݹ`9m&柅=rrTR9#=fOAUMx#H[#|[ƸP"DL.дf+Zy`RdeNєW :| c"C#%T`-kn\y-$M`*~P< O|a?^+g7~ o*ȑ<.t`h,xh;² OhL(Nٵ^KU@@ Ŝ8 msOGMSOFFICE9.0GIF89adU̙̙̙̙̙ffff̙̙̙ffffffffffffff3f3ff333ff3f333f333f3f3f3ffffff3f3333f333f3! ADOBE:IR1.0! NETSCAPE2.0!?,dU@pH,Ȥr9 TAZDKazd@ 4ʞbC *TQUoU [ x  feNNT   ]_ }hU T   diBT ͡ZC}˓h{θ  ~TˠVot-hNؓyX֪J1\V(`–Gzdz8 ]&`$Kp~>bѕI&JBcBU$b.,+)*( ttGo**nBG.tSQEf1cb j1 Z?*Rk,'۪qk |qIPGg@Z)U2*$=yMʲ5< B,Y?`R 2o"30pR*}vHzgg9 tVUL'MIKM.'ET%PgAe T'\hX. ^td(IP .ALC%8 ]2@\KixEs.]@"oYrPҊ.Elr@RG.cxqa\vʍ$R0 ^ -*#$!3@ <4DXX].]zc/ gN#q 7<iH7$6@pg<ȎXYH"a #U`aթ 4e#iFDWു:+aJUXq˓Kݘ \s.e3HtDa}hDIHV4&`F496 goQPt/a=<K)?FAMpjg +PqÔKu] ҊP+& &u ''-;[EFD.x!\@Jh1ew2HřzzoxGA `Af Wpg@e"Lk/(,.C_;  T ,ZHZ1H#C2fC~&/*rabx4*LC ԅ'@PTbAr:,  ͒ h9)\bQpQ%VWb^U&%$0NN!:ɷ]uά l[c qC5=JbYXe`QK: '* ͨ԰`_~AyXW[Xu?˽]T)z!= jv2lQ U4A<bm&(*Y1֩ c#&J$Kc26ARA%_9F[ `•eܓ 1> }ZL(!˔VuXROH%+2O9$oTLQA7X cyѱ).3IBT %1k iؚ-)V<E$*D|V5ѹ ۋzsfx"Qt&* E#/ʊ ,+gWG> 50Zw"~k#(" uzQaS"{[2a=n \ Bl(nlyH&א2#߷<櫹po8cKqYV.e[@(3Cb{ҫ雇Zoɤǭ\;r^vRPD"J X=wla "׃~_@߇'ޘtqA9F#顇^<t 3I#DH \z9J²(zoŎ'2V# `풀GPv"Ǚb9o+2`SLā` [qC¢|#1fzW $W M9S FyQS |syw1on(~hoqqG" h#Cn  uwu+Wob:i%`qsoJ~OW'tPQoHZ/KPky!%l`zC"yz'6m@ZO!X!Py wf64`CІ5k$HrmQ2t(` $ntzZąxpCTXRg)Dm3s@3D a8k# AWlMѺv`%:?ՠħ)*a(!h&͙tH׸A?D!fHb H \a"(eGdH$,1DDkB##L5aX ~pΑs!5!!!: ,bjJ 8>IE<ǓiU ]4Ŵ_# ~83&i|*&eJYiH j؅bC0"!]6` ȹs<W)$1RѝM4#vBvqpRzI˼H- gr ~eGGƠw'5ĆdJIK[NiLmP&Cb'&(:AK w1IHL+S&201[y 02BD`/P I\ư@ ľeB .xڻ)qJSxM"<%!t DsD9`j9Eua9D\T]኶  R9{ IY-Wh5)G4e\R^*xJEÓ2G. vؐ 1ή>;44*Az %6{Vr4Թ^ pd|,;9 tH3r1`q H.؀A,;r#׋V+0PNCs"6!+k5B ~Vtxnmv,tƱHe'.~N˅P+S%uX8vbqatҔb4DV/S(.f;o{#TXvI7&mѸAbOb>1ӽ庤9VS@ ,~ ~vi0x5U=o1pcRf 2P'  e$h ֧@pR*ni}1N EȓZ-B)slc9Cc`n+Fm W̥*i11;vHrZFLAPэ8 hiȬzaDRw @ r̕#RbbZؕ( H߮!I]qZ{[70sn0EA=^GxGE+Ii@SEVࡳ˩͈8RdzNa+og BȄ\TK6a@ =cr C×Ua-j|'De]oap 4R8zu;b L@ck gKA[X$,%a8X( gR&tY l †5}LQk8BA\VɱH|3FagRy[!zEYƋ(h,VtGvh; B 9M:FBbXdO2P▭)JI a:-oCѸAdG4cܘ;pA!/BH y$]qTܡ1i BWVH)hkb$0-~xbP8 ØuZ oEܸJM2 NB I 009W|'5}8-bul 0! @Q~yx;Jh:Mi 3"c3 U($`kҐ$ݨ ":bF: *?p! Ljr' 0-S3sU:=fHl3Gʑl$Y0CHXqyd蔢~؏Isc 2lP%$'&!2`cĭu~RH1b e`ÛҌэ"W8ZWDAzq[T'Wn H01~S 2Mn5%2N;nQVR[X`\ɖcy6Lp@89ZGU>rGBBP9f63L'i-,geDVFccfœٙ+1s_ZGOԴk88-ss ) Mi%lz)CT7Њ F+ao^J->Jo`&JA?Rn, t6num4f2Q=GC /{E훸^XSQħ*8UfI,a^Ÿ7k>[Q0ܦ&Bٓ]*VL8t6@0ZCsP\?geg:Sr2jx 6so[&o4p$t Eq{{l3@ђ<$&\טؑa2 Hh mWZ{gw9XeqC ޖϷۃU;HP,` G/ɘFVԗ۩9)T^n7eY\=ܣwNp%˽)P,9A_+BܿWqLg&8= (An?8@k-A"hLJti d3iFz-sS?%\%B=)mbZIh1%CEh#7A"h;%@I0ՂPkQmSs S?{fhbR qqc  { rTub UIRa?scyc{yHxs VXR\QbGsUyJQM??Uw}Cs0fx\7Ĝ7&o@)OPxje2@ C0̧p%U9{ƠF)G!¯E$S^;P : QnX;hŔGVE+b`hL"(^ @ ϶9E`[$5gVka@9`M@DZ2`'3D(*,u *vm @t؀?^)h0gR>gvڭL(nftLK ,=?$1h_}Mv' Au(xsHP,=H*,•vD-S4 ZW{-Pu*&>"M"%Y9'N0V2ȠD]LjB"XO"< MPĀ[uI*06@2F iDX,]5}Ma%- `m4-^|D h MLL2@Y5ӡ]eU SP4%UHR7'l @VGVW:at#f\Ѫ%1AʂNM H08)+Sn0@~S3hI*h::貤*M _`[R-t}6ySGӌ+u6H@bZ%>jm JǼ G2uH+hT|bʘ6%LDeac5mRDw\K\'{ #hV iH<]d䆌5C30t}(\MԱ0,|ΞVb+f%˦˄@\m-rd @v]HRS&H6tHPLapٖ`×m$8g߀ Vͤ#HAe97 s|6@6hc(Hx 5~R'x*Hl@>|?T6_Y 4 h rPE$`S R dט"D@fhA# Rd ,&@qLDF' MaYЎM c3buo 7cp-_J'0Yj+%`c96婯 #nX%X4$2V#TSAtJ)GȂX4T2=QR58,T ÀX!=JM8VMPt R#5E@ytG(*:XAS/GQFvÌ,D( osS@6\N`d9q";1 D 0+x6#2Z H7x PZdI 2Y $!JkDZ bQL@k\9wP442)b,H%EE(GQ䔑Hs#x &IX`@`(U*΁j׀B$t|; j9@*eWR͏^9TQ uul4Ɉx?+& ,o`}lH iivs8MawNRj3~=Ǫ)#JW=Wh!$cÀ AP < >#'JCG(9^qv H,|U(5Ap @@@QAY)_l 2Uϻ%r:THWwFUWXHrr x<&+ pg8U8WX[c1{͗@rk~FhuguP(( E^J!!?,bSpH,Ȥr ˨tJM J.&e H4lem7[~b b\b{eiN~b? xVMnj a^cLiOa qb Hosbk [ yʘCsDs YPE~sQM Cbvi,|b(" ggrIKw؜jgM %Z@vr( "d띟^fr QXp aAejl4@ PL^&)l妉. vEiVJEiUoE O K-Ŏr"M· x*UjE=h9])wIwN[D#Q;GG ex)H 7(=0ffpaa𵤂-.*b1Q>P‹HH ŹKQx)gQY񎇄/BOћF[p*$TPe+:ي9dllQJ"lܩO'5GLf7 /(HqKPV *QpqR[,B.@Y8NDrA4ӝ+G4@;W%H*ֈ .kELy1a0Hf,1;&\+pYEnb$cYpl4EGӋ>7mƊ}Fo|8m(~"*0-6S<(fn=q!f5 n$ifc>%3KhV*fA@J+Р>4B@gV> 6/cZj} ;͔>á]Ų4%@lTYЗų>aO`e/T,mkKy"$pƗ9[QXvIon۩ ,MŲxT泊SyЉd4FLYA?0֥ڳH6MlpO,?VC=o,P,ik'gvU˂gYnJ=1&cYMDAOՅ[.F;ZΗ֊tF]f Kg6!'n[U[hL`~G`-py73lQ:sPPz-`f|&emeoOUԆh>55@tfT|g8R|̀5%{6A|}_g,(+,O'e?a9'+bFȃ=EW}WE@Zׄ@\p4}Vh 'zqrA;IENDB`n{ KsIADtPNG  IHDRcHsRGB pHYs.>0PLTE999SSShhhzzz2IDAThZ]l^)Ƭ[C-Ѵh#* m%JQv 5PTJ(Zt% ;8E_ *m}X+mʼneIӑ7ٽ;I9v3wgfw[ha+*أ flﮩ?$$c*l7^1$`"i(\ 5yK8#\WK UJ[f #Rcx[{pOsv|E20߷+ss|> A|eqƷRwYCX",W@ɾK zm}Oi-TgQM)dlZZ p2ssmIG y}c(Ca>yl};:Җ)6 .iMQ4C3.O1%InU%&]+(9ⶃ ً."O&'X>rYN$j~DwBFG>Ȟl q5&]o!rxA>crȉn rȉRюLc\qK/9%Ľ\`RM-;uhS5l20<1p)۫hgRrO''k"ӉR͊$'`6 Xea">,AH9 S;תonN@FfxLJۄ_Kw ݹ_(7O]wA9]b"Lfb% 䤾Uvţ[䄗R[ Ze&+T3;уƘ4PDI/צE)kTOώ 1dz^ B(e`˵h-L{ ]ۅ qZetrbȺDU[667TE@{o904c(nLձqYp2}RJNܯIBP #ŚmY$$$euR>`0PLTE999SSShhhzzz} IDATx{l[}_%Y&j25Gj6,֨@-ySt ˣfRa\ɨ5bؤn d'sEsc)JX@YEw}񒗔E/x;/%!4X`J(?>:ˉb\fuXb-'߄TbA1'c4cՍ#rfy͚fYe%5G$#t<ŃBI[rX)̺O5I8(ŒaκdX7Qk2𢧓R^X5#ג";h  ax/f51چXSXxia{5'EaS|vF"Z Fa,[(<^51O Ƚ 01 xF\% _\$;Lܙc94 B> 3,iXb5pF$I2[lt.l3(x)F!Q*&EaR*Rw y⁇ rU- |b 㧎UOzc`g33xiq^QppsQLV4>s"(2gU'/E$ND:JP? )|4(\G:jj9k RR+jl/9OϐYw,#\:==b}ҳ1Ƨ 靲yFyCtg띣2{me_` fo??m;EU^ڧҳ16Xlb  M&ơƦ`")ҭcHRtJ@+>ںcubA3+酠xK};;hQb 7+_w !IfC})BZQxi+[ 94%G4dx<¡"^ y7ROSJKT 2 #7vƷœR!$x|Hr>%Cu*lQF %DB//.p3Y$8JEZR_%~aJҼXMmz7K|_}*N Q]Ty>-StDtc:F Q.~? Z4EZ.D=04 մ0>`FE,1F(}pգu~ Kv-)P)f>Bq^=pV2g$EIIIໆk16)5e_ֆh)>mP dž1EpGQJL/k7NβAUkRDd+Xhw3+zoF LQ'*1&9/^G^f; oy{[c}{1u$ئRmɴ_K73`)f=W&ˈ-q;bQه,^-^⯇G)}MT|w/ lpqZ/wsyPlAY 8,n&'4/GI\Ż rb𮖞%R[!D%x=H:MHB a#/ b]E+\Cc#Z.o]z~ޏ_~$k)D%J@)Ee,(G҉}_kbn$I|J@_ kUEށKM F 4%%w{ϬKl&* >QP&/NEwc6SG[D@/Zƿjwv"giaEGm%ERIi[МOB$/dW)kn=: < 閜Z}E+wLTD%s_o-;(wT\.rbw}F ^y+ 2t-1LTBK)8 Va ȴst'.1O*tK{9ZNj3RQ`;\|n"0LT MkfOB$bgR {H,zeXy;KA34QEê,~@9! &ZX|h5C _gt~8cY'pl"iͻhW;qonbJD\6-{EA&ƧxC);UVQSi45=uH{\FJN-0nڲ:h ><}0H/V%6u'3hҋ>CCICĵ*9Q@h$ġB)"c?ɷstR4Ept"ևh콐oeA ߑs֏huTC9̼prRzǡzZT%ɰGqeEs8~>\ 0i=b3}jV~̑ڢZ;eh h~k&# Bk;fcdKH6OpJABꅧؽ^sчSPJ)>7t-Jʾ  S>#b}= s 7+V2B;kIAvxk-{3GpDaV D]U)z hwܣy)P^f_s,;:ʬh衬#gʋ>2WSW+\*XfNG0}yXchj*Ÿ\͟LŮS&La&"^Cw\jZHcgZPh4жz6Ȱ#S>JZ=Ȼ}Ӓq?e e|@ yOTYGpʋ>/JI*R?{, P_Y/J]Z ǾMy9Gpʊ>W QREWէ?v>M%IѤSTl@"w%lh7E蒠L E{Wڲe(Z*^bM;֚ST(nt7)'rr-,u_Vw:Kř*ۗ)ןBvC;_hR}q@pPݾL]#ֳ,DzLY򅲯=β-e6_hM='˴5b=)]Od 4?E>7ۗikm ~~i~gʾ}FFi~Tʾ"/˴5bt<H}F,.K(_h NSپL]#^!/OW}pc{!YӶ\? + 4?XmgFlc+gz7zQRÇ&EIGߕot2M=E^yF==ury>}X lzSR"":R8=bi}ĸOCM}l;Jts(~f= ?&"t7B#0Z[bQX/=/X=–[.f@ncBI#6,rήRܥ!š8Tqײi(n\"ص:{-B$Utl֑k]kZ$0|gJ1ZDg`|=)~vF^?WONm yBƇVl\`0PLTE999SSSzzzhhha+=%#IDATx [yǏ ?5bı@2N&IW M<,pj=̄evd dN%iNx$RL*LȸVz\}BrQ o=s>< 9Q>hrS[It?SQqcUrZbx8Wf]hQGi]Q9 {OIGbָrå l-qyo }ۓ)2#dGɝct>{oT!G(g%m)&uwB/x>RמKHzF#y#8c=HlD废ض^soԓ¥ +Z}RxpY8F^ pc(8O z3^n~{75x(AqA:V)<r>%*R% l&6za2Au}ت (Ȋܗ&TH; $~o X'+VJU^aJ޽M)j1̍+u8׹_TPZ,#|{xo}\@%oA鸠 H Drc IϺ˻/6}/9q<ľ=Έ0s}(Ux-t˻}=~sgҌm^@OD%A풁)' ,% l@&`~XKCd*6jGcە9,] g&w44yH!˶ yrөkF6 +kmRs5,|M#\đ.%epȢНt52PHkzkcSJ!t[$ _OD9dM*XgcdJ^$5=6 cԍg58սHD3 !NrhF9;&  @MN\!K1 #dfQڀ,ϒ/~|f\^/|7!г@Rl,IT k5$5rwo'g|ʫ Rtȸ1g-Fh]hX5a|; */< N]E[ }~KNN#] l] |ɣhƅ偮@|[z6Fka8׫kpq dߚFcD)EHVtWj>=:HcMЎ'62ڐBZuM.n\]a!5UF\Ji[ Z:Xo S U))ֹt4PdнJYtFIk&WDXJuZ(˞umcwqDfaߋ$z|e% ls8>m;O&\ًe n9ۊ3#Kv"д2_c/Oifao3-/ j -"-,E NPj(Cfa& "PnPXG &k avk!5->(<| Ӓ.$e+f&ײ@)8C7 me (KF+G9n6q'@QdÖ>$t9f_BfdGge_4-RFʳ''7 {<(.2DDGjA/Pjo C;.bl1<[׌XL@v\{e\Sr/Q-C+u7_v~g}C,M7m8>RP`l&,ڵ,so;H@;qm*]%88l -PkJfWǵkH:`dX! }usɳe ^OMw.; lW6&ܿ-W*@/-idE>wdH~@|6 Z=t:J=rˋ=J ]YCٟ䗁rdcK9Ӭ HhSgdau?3q*i Dm A·2~N H(CH|#N ,rؠ ;]XhzmO \TMnЦ|b٧b,~ L&0yj,]*cH@T$pm@e& a{Ud\ YuXbved8I+čR fwP+Nxb2l nWPGN;>4Nw etE2ʥ/eKO򴐂g7WF@ܮlvNA`PqCajZ< 8y|(wl',4t).p5.~<s=۳@{RY X{;Y=-ATpJǑt ךXڜBNET~ѵj2J撔wMTe&T_t2 $S]a?d, >#6EN"AܓRHfœכ1()8k4Beڔ*&\()oX LbwUMb"Ck02d6?YDz6or@E/[#02P d"?y³6JjSAb٣XY4|+3O/Y;UMb)8V l,Ytk1ϡY9Aڔ*ϓ,OJ.EwEp~.k @CyRbm*/*󤤒Y=)ʚn^T&݁akrP=fo\X@,-G~sL1]s@sM8";9˱RqaCdY& iA;0>>srnA!.)|Z0P4Z҂z9@"sAYY~魺*-Dio!LTOkh\I:W kN9Ad^=_5O+Vri /D:dGb ӲO-FOkrx|h)jӟ߼+j$CY҃X*Oq | Bq(ǎYO܅W.ӯ8z8w KY?9($UZ}7 /!?C+tz#pW2<9lAF >ý/Ρs4][YlI,Cܠ=(yRRd k~Ef5wH߱krPk/TSި~"]@4o|Zs9/YWiwIϊt~n#Sx=q6h JƲUoTBd]vЊ5OϑI83q_6(\FqnAxɍ*.\KޙφDMf3 hdڌHBɵdT&xM-H n律)dڌHBɵ;hA^&4haAxɁ.\@<:\h|rHBɵ;$hrɭ 6R*o%6%yBD@"& 5/>QfAx9?0h](v'Dkɚ/7^ t损X׶MN}˩=LTǑhkr-{`;@̲Yk3rڌ>*v78r&@3~vJUW8ٿΌPMoč7=T6f>> lJn'j4}~*ܲқD?6_Tm+;$LHb%!<@!ɽujrR5 !ߜ'l @0Sq-. %K-@IQH6/}pɐCDgqMhݖ[T@>;'Gd  HH6/@ĵbe,BηUq~aI4IvWq~<7CJ#89 +ȋ[ &COO" k_k&Mb%͐Su [ lpyb4 fAƁ*77`tЯ5SmnDRS&pj̏cW)z'| 9<9$ ΄e A~O4I>Dʯ]8GžiG>^VB'QL!2DךDtw253@R GZ酁xZ35hdȁmeh6j-QNPnz]pZ35hVUF1އ!tu4q'@Q!LM yo@6Я5S&QAF~&V9q'f^&e}óY8~G_Q*ҶGYNFיDS#;}7Kz76ro ~mN œ¥䛑CDik}z ηA0K4 O g1:!ßv-1q'E΀!*! Z`rO&-L)@Ҥ`j9rFJV4'Ǽ[큨݂c GKfg<Ҝ?>]y"%7\_O\-r< w@9/Q@=nrB^C@oΒԒt8͖;hh!~ "8B)21=r Shc.|я[1[b7%8At}\$7/8i!Aas\fJc7N-wY  1gI6%c7 3Wz gQ ,)>}}@YRi?͓Ǿo2 '0h@ΒcO0l8QKfG<8-}h<)éz-wqdy̓qx > Yv %yUKvΒ<5%Zw 㒱 Y>mO Y.zֵ[ CmW:@PtAp|cy E Se?q!~{G\}H=י[ȹv 8@4.F6 9^5O7W[I.{Џ?(4Obx]=Pkc I6ڰMYg9 P( a }m (P3mf중@9tg<+Ah#CZ# ldxkQ8K.܇;ހ*r6@I@{{u:@ t_l9)$5Z^9)$5N{)+Ю@3(g{!pV?7Yd34bz,,IK iSRL:;orR:ڲόlH;Ɍk |@Gi'#b-IYY s#Λ@WFI=C!M i''7¢u+9Kr6JÛw<4:iF ]yxI^εi'kne1gIQ\|CT(w7nCBnmu,崓yػU4vL*_QZCEP! L]þ TjM;&g?VY2%~2l֡@n][??0969oҸiN{R SŜ%YƔIZy>'1`ldy-R4@5#nPФģ+UK$y+Fב.'e4l)~*=H>]rRMN; bΒLg?\N5A(Λڜ7v`GxdGBxINu=l$,d:$BΒ+ IpusLhsR ]zK?DKR귆`4& i'SxQYR,4^Yq͐QNʢ@MKC92WPMRaνɵmuZtK 2V5@骸 cUTMݕ&HW+UhXfUˠ.cTU.ZL*H-XUXJ2 ]Ł<()HQY2 ]FB2Y@U*䪗L L<x2nFwZ|GT,0>mrG~`P/[#Xba˸N*Bq~@_WgJnQeL d ӟ NѴ sR_ig},FoZ\Sqa˸ خraY8]1ӱȎGplYoݎ-wTX'#I-fj*b{ 6DEʚX(ܯKg'1^+PR‡$ !J. [ȓ¥ 017 鯺TQ?|ZAiTE@3Q!K4f y.2HڇVon%J~@3KOƊo`\: PSQx)2WkU'?(T~j䧺{C<{r|9x>uӛ5gJ䧺#q.O[A9ZʫS^R@|?ϧh&Dl6,J5'EV\!%$ivN՚@t<*1R',$NC uJɴSUϿ -f\rVmr/~HRR:A@\~RS%RJJR:n@>)!GWR݇6F:OubO !G͗>7tmeKԩN~_+]SW'?5 Txm$QBSӀZt:@5Pj.-n@n[ $I|ֈ|([ A`f= 7K/E#r; dp@X2 ,,)+.Rkk b0!3[IM: 5k[| cunKwx F߂A/E~͵(K0 ,I4=xc/y~mn! vCu^`^) ZȒbXKWhAM d{o Q KD_E(P:3|%Ӓ;őq] RJ]ƧpǑy1 !yYHt"u{ #}0矢¯?C~C(G;T) F!AcdrHuutJQhc %'d,sH J'h@I*%ǹob^7/($d>p鎑/j|v"ʊ-gӁ/K#&6 Lɮǂtʜq` d4Ϣ12!"3a0m{`\;zEo4M1' oe&. 9#30!K.(+R!BH[iId";B8vϺ`4ڙz^8*RNDUrBV䢤UJ%1p ˚R"M lAJٲN-{>O޾U'UjcF\1mZ&| Xifx=y_O\(Q`4C812ٛ)"^¶fOywlqy P&8UprW^G-oqP4 %ݴ&tej :S^ ALM(z ]MX@Q`jkҙ|jJV;"( k_SBvúh)zh(^o;u2PMO &\u0eЄFn/C3jB\OY&ΑޯbRuJlJ3Imxq7 ?l_W`ԣ\ϑ8+%)"ipm~ӽǝ(G'*0H`5#>l6Iy,5`ƚ1F @5Foz/SD!\Ckj0t@-@ Z*֮TLGR X; ]-RmBKJ]QÅ5 @NjH0YuGo3CG1':|ez.Uvf0Zo8یh{D IOnӛaL|8;ɿ˥ʎ5:nKUA[ D^gK.Uv`aBR`BW}fcޣ1`ڮ5qS 4Re1EШ;zNؕ\/:L8;*ԺT^~l;zJlF>cW3eK/yjGo3kB]ldFtdǛvh]Cίy6#N>.=Y&;RHQV/L@B_#CfĨ }$WgU&%B6ReV앤Cy`;Xn\+ tI`$^rdG^EŦ(>WlF4PGj1VZY/:@8N  0r3WxFixǩu dxǩ34;N|\8[ c]qՍgtMhi}n&$ }6d3 T3vbXdmA@F  ذύg'MҽRTS)ŃxH8N=ЅOAglj<_sOh4sΗ}I,꞉kх昹3^L.3h=k_z/Ga*S65Z-@ tmVfs "FC3G>q<lBrd1 !Mxu*Uyӧផ-iLVlxx :'tm'7YEd|Sb40b7>af"p;\;/Gtd:tAӲ :Hgh*ґMU\ݐ։#E@b3 uP%ߝͩ:h8R kc.d& ;bfd tlgl2]:18.B_pGK*@ 3pO%xl;@Jd@ :Htc VRǎT:=IQg{zn% v6T)x=Dun]v"@\bH+tV05@)iQ XOr ~:02k\k2ʥG>#]*!k$K\e0]&_\@8y_M eŌG\r/@.Q6rB;V>Eˆ͔t@tE'o#2m@9Mv~sm) MH>zba`nG0d#˿Ag?=AK%|9HtU:DلQ(1z@v ӚlUV։UFda#㎈MLV7 SX,zE1oS3S*}&T11#2ܺU`b:O1wI{W`Ii4F1wIX uJXsZԷZs+PSt|&ȭķKjbo@pU($ 7[P! *\ITFD$- ֫OTIN<#71Al<>D@&9F6#r<9q]Q:%)T-X_fMr>'iGX" _p5%;}T xVJI̚NVAz4^]Qb ?|%E 7ɡ/p5<ΛR#p v-tтuMȴI ij):fs<2L-X `$G߉ <Ny`iuh$QQb@䚓zŞ,40I#<1k{"6Zh$~ #LL1kܲrZ0@ǵ\wwj|eh0wLVX Y_VKUt'Z6vVb)@'qD;X+nYX+.X PbhcJPb|}icJ,CV\F+if'6/k%eKUm|C#9e&\F+~YEVlX Ш"k%Z-YNd; pw@ `,VKʶ\w]׫˗GL0m9*oS Gl]CzUvz tm) = m`5}JS&18]* qH[yś@۔l# V`)f2Y罽31ƜCP'z>ő+̖\c/2%pKits7E|s0{pjz95`E`[Q2._&1eԄd8@'*x9Or:IL`GX$~f%si`=o: So* Ɯ^;=mT\V Pk_C5}J7'?E㷻{o¬Z._Pm.=,o=ew'G& ,J ,(o} p#LiwsS7vbXTXظTk{~=q>%mpapDg=0* 3]`a>`VԣЉ.a2,<RTX(v2)#Ŷo`RɈoyyl[8!3_|=I ɑ.}`aU#3a$dăLLo.zwi*hD+ 8~͜4!uWe/j|=rM!뒉GL5pP;[`BRk׽h̲yĔKoUME} ılEIENDB`n+AݎO5cPNG  IHDRg<sRGB pHYsjǿIDATx^_Wǹ_ϥᗚi*)hxQl""e uCt"Asa& )DNl x{3{Z_?53f晙g|w @ @9& @ @V* @ @P3 @ @j@ @ @ 9e̙SEa!@ @! P_1 @ @O1  @`l"=#C5*A~!@ @" @ @``5' @ TX RI @ 0kZ_@ @@*@ @5X nݺuȑzwƍzq/]WYkz$I(r*z-ST! 梭*10sεkk9yݻwaRp} y5?sOPti>SAh"&)F15%אpȥӮnqeuB@*^XSŋy۷o·o]BEXO&J7|wvb3~ac~ _WatcPoZpEe P@zA]J駟ڷHZ W<㺣v?*%KPm\P+ꍥJfҐ@/ DcZU&ZV#][$L/+p&uR spon} *A @bA5&tkRFB.hW2-d=nM [[BMX 9.\:m6W[FN=|aвa[kX{/ҟ 4\ׯ?tК5k2u 9p@=!rdSZe˖C4<{}ݷnݺs綕4Nx̷E?˗/^xTOop&w@+RzJP]kM6I1M>P[lrJV5R[D)PT}&%RC!"ˣ(.29W?Hx ^fd ߯gj(qՠ-:THX$s[ڶ+-":oDOop&q@R@[_]kpP#Z6EU.(zP2 b#E7DY(ݫ+*1@->+mDΐ hIfoҰ]imi m&0@!j8~q.ɪ,LYFjBE8k lGTjZ _E{]]m+i$ lKvrZ,RZ(tyP.\Pg.(ZQ(bF U%Pǯ˗/1͛'5vנݲTDT;whWZ޶P:h#$$<4yךvhC%\RЄ[=OŊ[I(pYo OS'kPg)BzKM.OuӒh+#;^-믉&vxS~Ձlg6d*o,M7ibGFWGrITAܷڵkFU7'_zj~RHT~OTJ$|ڶ˜2*>E `j)uSC{v(}+]c@6])]+K| SV?誙V@e5<_k!!0|Ǫ7?Mڵk3%!Ͼ@YK.7뿮MumVG VmIrk4Ӧu\um@7If_%Q@`TĒJo`W %@Jآ$Ty].JfzCyi[ w|rp1^P`dG9 QN$S[{;Z+!e3zdG.M=+stlqT,_ϯ oGF+;Žw)'Kkkks翙 n._ᄚ4ӊZIWY?0Fa$Y(|_t+uI&߷> 2 }4#^h0WTmL@7JOI(Z@{?_buIa(Cʕ+e};e@\uFsoٳ!lɒ%[ʉ|B|LZ=ӑw:kRR(Y~×ϟ>R'Ư;$UnSQC|ϐ=s3k*uRYb=pB@7Or#/<[A}YS&shzJ;ԆVdw~ YHիݩ(y:_>D8yfU}'_UiW ?#Ewlپ}ʌoGvW^ڹlٲ!@p{[sݖ-ٴi W}HO=׍\Y( w=Վj@J!ee6K&Թ .(6H ,4dTrqJE EeHc?:+{TYV\/ TݪE_Cmp'-և5FRzY^)Z) PsC┚%n+4D 7)3׹?s_|~pqk X?cH=Xg;PByCSOij)٤n;|:-JϞj ^@ 5l6 ZΝ;:?ж/Y0@u%l0(ŧ;ё#Gd(CСU3gΔw bS 1%|{nMPεWF3s;@=CVRaҥN xn̗  VLʹZ*ynotSvc ?~ڿnJ7׍ RgO6R(m@e;}嗅h7,zw&U?§t\~nZfи믿NT O?+%+;?y}RC˗[p8F:Vܺ! h!%O>D4+XhqϞ=.n^ u惹i{e}6%l툇[g8/jKn%bo>JϞj+'/dPQ>5Rh+zB gG׊84١`%ʸPSBJk #C@=,GO4PmX-;:U)X =q=nZ]U9S_z!p)QI @YAjG;) qU-&aײ \X|׉e}h6k/R,V{B25Z&I=u[prfL)2k+Yn-~ Re^O{J[0W愙@ TZ'?6QnCWSnא,-J|eއ_z_:+?~I?o*,=C vu̻jDS&W*K1_F#oPW[UJM:r󵨆ھbd@ը@R#_"NԮ?e5un) &N whQ,*z%S_HS;ovX.BFTV{[jXU[&I=yÐi@k.SƤ[y?- F RPz={~8.J9L ܂痿ޫ3ʪv RƾqnA™sY?C432a]բHg Hy7~ZyIQ[[;T[:5!S3١՟2i*߲BJR(nY'd^:2胪Ty 8TJ/^@@ |"!1@(%a•}7fG5@QGN?˲Jh|ᄚ4n*P#ͷU$\oP+[%=taOVpT;} 5vDs3ӕΙ3G˞-ΰUnv$2)RT@@ vw'RsTF`@@?-xM߷o߅ }]8Jfx>cZ؃=@& @h΃d O;2GI@5h ^EC~;w-@&j޽m D @"zuE&tҕ+WRZT  @ J@K N>K/]v-L4ZŋG 1h ?h/ ,c3 @ @z֭{__k`&v(vA@t}JL?( o}ݷdu^};v-V^@h j`7lذf͚2=jPĉ@SI sݰ Q?l޼ٳ~~˖-SYd @Cݶ)ֻ8p`&W\8  0;vjK#0N%f@ k f %OqLaZd $ 03ӑM˅8x?m6M%/f@j0kUB:!st*B!@hF ڂCĆ @ @` `P  @ 0qX &^(@ @(-Ԃ @ LV @ @J@  @ @'`E @ j0ЂA-@ @H$p}ݺu+1|4[ouhY`JiFZ(cd*u{[U;WAzŌa/OH;>0퍻JŨRuո[oQ5D ڂ15ϙ4tNՌ̸1.A?[6}OIH7f5pi2#_8R Tvv׍@^|J(/ӾP|#AAhO3Ͼ Qnj XK5D)SصY{AnPK펄u3@*I_pO ?J:qNe42tt_mw A>]Eaͯsx퍛#?ȼbZm@7|s3afh > V{93fuW]ech_ji4s۰m>Me~qvi\CR8]ZVvlR 9u2h%^h3vQh @`vDDQjZLVP(ٚZbF%.:փ/!ƑL*AD'Q(쥨UV3l=D,eǯFUh5*TCTGn{*<ȷ"ePJmea-LJn^6 ;lhgʗoμ Vh+z8@هu} +_VeVa)0 I SĴX^WP&J@\R_TmRkBּАK"^L*JZ9T ֟qZ aX卖F䧵Q5Z0޸a&e>e#JM_Kzu$0ڂ2duk[Cu07mfӆ#K!c…NBi ,(/:vƍsd|%-}W(v{/ҥK3:tH!\Htɖ-[ f@î{[>>hLN]WZZ?ҕ^ʴr6.liPw2{ٛ *quv{Hzi_T * =Zn]&?FBD퍻@8: PL꫞dݐHxjjD uh`!d)MK(j=4?r3\H6;PѤ8@Yy~򓟔}?DXa7?y bW( 2b=J32}Lwuq=IV Z$&Uْ'_q߳`wuZWͩ&ܫ{)WXcR5O}o\LhTZyJ([`h Db]1yqq.`N4 5O$- D ,{ l /-s{ ^ Wa9QZ 0sK!ڊUju kEsQNG=-v] U%hHy=u&e~t*3UJՠzb|DZw㻔2lI&ȟTh >kV;msO>엲iIL D $ pq2 sOQ2g4Q5 !bW(z/cO O)/%EC6JgD~mq)$O^=W騌.\`):Ju3Wյ &nITR7|-!]z4 `aԫռu%J;$S^!t 6 (@=mѵlٲL_*ǏK CthDě6mzfx /vHg%]z*%L!5± jW6ȉ߰]W]oՠ^vZ ,nw iSM uo  \/ A\۳W/Ă !bW(MEhCv\?s6ܳgy zeBOM}敠K"Eh9_pMwzꩧkT{1j (zL-fqSJk;jƝ=QUNF'6wi[ ;}*_cjժtn iATVW ȫg> Cvb.[?K [2䳣χw^A hP["~-\W؍3 N/t]cJ$*Ad+ ,AR^͍z'Ooi1Ygp5:CO|U:޸Mlb*کj)׏~`Sf;XQn cU* da,3B;w&Z6G!z$SP1ܥ{_ .@3Yh\L y͚q;ΜE,5T*VyhRJH X0|= !9 4sG 2?5*|}.*Nb/O}K"z'Qd9υ5{tSX뢌@\ngԙI{o8|N?@SXU,,_@~E՛TN7ڂјuj=?{ԷRX +|5P/%ܾ Dp 3C4w ݑ"?V?T]pmfF}(?|\e*RڗEbXTޔaB#98&$'5 eE_Cy (V T2.Ȕtw*ADUj&z=75UG<)R(%Q ҷ^h3jz!Z[&`q{'V)L=US*ɖiԣ-4X #b꯵e}UXV%0_u2z ~ܝ1m#;2 ,5@Șɥ,~3[19Ațo_Zm$" &s 0&U-QY a&DYXp}ľPK펄?YZ}!S Z$F(*pͩߓ@) gL/NA՘N:V֬PA+TSF*F6P(F}'mj ,6gyp,u3ڂO򬪣*~e%w66rowdl3eZ@gOϴ]rLɴovK,_f$],xxObLKcd6iPMN of˥9mah!tM ZzM/˚pc:tMm~7Z@A: w]w$zD^u @s%/pO9 J\JNH?L'MYo)eklgap/>OYe"3{NK7ڂ ,'םǫol& '/>!DxCLE0@̶} 2VaZAFM uPN@*崲i`-^ofaAj0ʏz q9Ƒ  h >~ f&]@ @@eX *## @ @`F`5& @ "~ *# @ @"wߕZQ$B @Z%0(Ph6 @J yVo@ D[p P @ 0AX &!@ @&`Ńr @ j0A$ @ @4. @ LV 'i@ @ `5t @ @`L>IC @M @ @$`I @ 0hX ]<(@ @ O @ Aj0A9@ @ `5 | @  VAA @&H`w}W9st5&i@k$y޼y˖-( N1zS\d @j0ťO T#`m?~̙j1 }/ @$m١0RC%>:+%3޷oի-͛z뭔 =1Ђ]tȑ#C&_'O@ 0Xk0EL!+ t~ETów~gs=Ǐ׏gyf޽/gƍwaΞ=;ƩrqصkezWXiqNjcuZcc 0-8Vd:;d x,X`jꫯGΝ;7=UHiHشiS ~X :-sL=2@#h 1+:C`Jhs;Lʛ۷o4~ܹ)m0Nre x.[k۶m=p\]855I@ j0BOL!0o>6;h<%m{h~.0o]n,p  @C#`h%>!ϟWnӊGo>XgJ(*mӘ>, @`Rz䝫;_zJҶgR>}.n޹s'0 EtQ̍ܰ+djߵkrtwTo%?1^2go.uX5B%~ ^̙ҥK%!PQ utcof"'-. yBBz擋BGqB7}<;|K]jߖpA Lb_Jz{7Mf4>%up2X%\˃uS+:~*i].i$]JE-tpۈĉB1)9 kQaTJhٻr ?BFW*駟ꩁM7"=V*>Gz0e-W= =|Rʢ,+nq82/ӥ.0Rc4@=ޔ'!@vhLɌIg딲B%laɁa| c- d;54dJH ovIv,R fIČ7Ia-j^Jh9 1X* ڭ~jLXh3Xً\V*)Ф48/3bjj;+ /J}X)J!p9?iAf@E … W\14`* 6YF0ZF_ Eׯwu_S@kȱ{|ߌ' )7ot._'K$Dݺu+p GE9sn)w7n4P)Z{G2֢U&[ҙE۽MTc?Ɨ \CmZv޽{WXagaz߂|}S;Ѱ; / 1~:OTvN.}o_/$~*%֟$=i4 @e-x`NB;3lipJTt r OԻvտ*&YIK=͞E'ʢ U ԥX2otK 7P)w) @ Jh5B$4_Z UNW 2p[ib3:P;PtWusb S;˶Df)aZ)['.!@hB ڂC$3 Ɍu}Ψ*;\c %Qv[?Z)@zڲBs )9 v+Aua-j^Hh>G@Ʋz,3v,P1jbpʶW(>tHQ)U"%LR#z}t @(rhv.4Pܨ2'!I]FE91I/nI \xPB]\sYG[y'[l~]U׊>%%=~4UQ{}oUʩ{5ʂ("s J[ @(ՈeϺnu&.4H@ιRnHLY"=Zc<֐Жʬ )TL2(0_O%RrT`5"%` tslQ  0j=>is'׆f;_.tyY+j.۵kܼi,$,'mv]|Y.3ۃV3DGyJТ˖-sEsW景 6EO1T_ t߇E @ H`bV'njԩS;A@"FQ3{ ~?عsd2GvP6X_Iq쵨]N/sС*VmyBeWZG}vZ@1k8yA@  LjSO=ei:Q32ݱBڳgsQӖh&?rہpO?t`0c熜6ZԮr-[F^_~e@ ZO@ +}=uzuR ~JHpMd  /TkΜ9_Ŝh[f,Кs @h@|?3\Qs ƌz Orr|]837E9 ~bb@Y7e_\`@BZԼ 5PB2װӔrI&vp.%:4A(ԧ)* ~BJ]TD?G)a,U3șc\V)['`ոu @S|k bfleFZPum uIA'Dقiv1D;@].yuۣVBäm۶i=΢ELсg- BtY۰aC\qs ӃLot"%&yj.e|"8M:SHäL,ܩ"Ə=SO?#{k,y@l ?G2 emE#>%XS`Q>)~FܞL`R%w5>#Xծ)4Ӝ@|yH @m<0,e:5i8q 1 0%})'ـ Lh ` @ F q/G$?ϸP@e-, =h0q!0}i8 @j0EyT&Ѓ SmDbޮ]rJ?0VDt@}vC @d@䝸tMfŊD^u@ `pM @#&qP 0-8k  @ @ @ 0Loْ3@ @@3X #6 @ @`z `5޲%g @ f4Gl@ @j0eK @ @`5hƏ @ %`z˖A @jЌ!@ @K-9 @ 4#ՠ?bC @V-[r@ @hFA3~Ć @ L/[  @ ЌVf @ @^X l @ @ @ 0Loْ3@ @@3X #6 @ @`z `5޲%g @ f4Gl@ @j0eK @ @`5hƏ @ %`z˖A @jЌ!@ @K-9 @ 4#ՠ?bC @V-[r@ @hFA3~Ć @ L/[  @ ЌVf @ @^X l @ @ @ 0Loْ3@ @@3X #6 @ @`z `5޲%g @ f4Gl@ @j0eK @ @`5hƏ @ %`z˖A @jЌ!@ @K-9 @ 4#ՠ?bC @V-[r@ @hFA3~Ć @ L/[  @ ЌVf @ @^X l @ @9}]9s~f][lll;&3sL^ @`vD[pTw;w̙3gϞ\7lp}Zj$3R 0NuFK37o7|#])s=Ǐǀ8u\W%0-9ZL Q E ڂCwY~֭[e2РLvرi&#u ռ#GT#2&[e @`5Vy] .( 5=?q[kUB.9g  @Ljnӧ}W^;e;?F'Oʡܹs\zDc<9di z6+UA zj֝X\wҥK.9EٳGm7z NZ1a[\⳴.p9Rűʣ"Pkd+|Y2SdSݑw. +E=M^+Q"cWX!-5,e':xӭZ5w`R (rosۧ,{yo/ ZS*RX[ ;B0 sa*{Ta2h"1z;d2"M(Z㠭яvC*9+!FUbkBŋ ()FgmpW FMoUIKW^ၼ엎U}P*`Vo Ø>TGXxoˣoĪ¸VO?X 2 +/sW>PrF _jVVdR8zazoY_c>Xju tG:KϢ1k+mc˔+M F͵s'EǺl H=:T BlȧLY7?E/.꼃:F5j`=%!7Z|TPf5+Qq[ TXTTi0LɞVzM+g̈üaV(V]XdvI4(X[S;fƗ柲vJ#ህ @#oAa/Y]mqIY0ui~^pi`˕b//q^F6dŒ4!DUJ2}WlLeJX+Bw2]TL5LJ^Zak:X3Ꮱˊ 3otcf_+wƖd?kk jCPe?NO ?frh8 kt(U?) _PE>Ѹ @`R-xV\u#L/?ߙ~|˕UQe#]ѵ!:(32DdwAP2xqC|)^O]a hև@In BTxF13R\/WY/Y=Q;E]Ֆ)Ph/]e\5 (n[mV/OUMo;Z7,4_ X^q# @"m{;ù餞5kdUu=-[} %(mܸLŋ=3(! t( s0QQQjHOb!k:m۶seOuT^O9 KPGyD/_\&jcرCnF[ѣG32މ4`Up1}VXt3z_]v_;{i.QQ*|ݺu._O_-Z/[>S-X7 I Y&Ы۵w޲ UO},q>|n>C)Xv-+L4_~ C8YdIX%˼-Ur^ ][L tvjDD1Lhh+cGfg6ݗoёMITu (DFO=Q`'/؉ 2$OGLW6v"  L@VǏ'| S?VT`KW&HRIBICqu -%/ e,0^~;&oe(UQr&$!$ կ~,"յuMV\pBР @j]6p=s˗/GÚh]@!}*5.~WtΝg]@{TFTy.DfϞ=*4@ 0 z+u4y'uG+_$V}ߚ!% 5ک;'xB~饗 iX]TXa}[Fc=;ڭ"JhO%ʙTůj%gΜQx߃`,pkѻvk-6q5я~W3l-߯OGs}>ezNg? 3A\mr/kc%@'r8[-{Zzuk׮DwGv=|Z-si1~W" kg$Jo$^KO{T/FtaM4F# @m/P&e [(7@ 0(ѱd4k joot o LEo @-r৳2ce^ǒqg[ (Q4\0BuDu D[1Y l|XlglrB*@GZ_ Z Fs5e_{F,YSs, ' @BXJjLzrSu<޽cG~߷!<  @]  @'mYk>t$B @7n~ȑJf6V @ R'*֭[ׯ߱c߯ǏfR sΕ/$tܹ!0PD1 @`ǞA@w8 (;w~_^r7ܸqEW_g9vX4JD!mYk0#5lB  LoHjऌ@i>E[襷~{HC V jA k׮iIe˖B~Q ٣- n/w &zZJa?ljJ#V._r@ 0h.\~Ӵ@c{uLT6W^Ux[&/^#Q:YlsAX  @4nRK.zoGCݱOO۷Eo)ʘ>̢(9 k]C~w"@Jצ L]qS;1T.\PVS$sɒ%eW^G_SްaugJ {2ܨJj !`HM @Q_J-~ ,+Myה6k(/ZHu_K׭[k.dSx饗$M/{]7[lRT,3g.4`S˦tQmYvm؇L-L&_0fJW^yŊRjD&: LXrkH(Zo҃]{j*=*D}jNZ$o^܇ @>zS\ĉ~rPePQ0;”~iɸ`zf. $AO\&/=4&R,%E0= LIFWvV"YCHbVI e@xbb!l^~=_jBvhfԵ]3v+i5 @`Z TaZ 1<\ 5вBzVinL[8W`ݷq{ٸ׼܅z1g魈>j-3 LdPU.=X[Jp餄q&­Iru7!5q'H ڂc51Lv _I[NURۣO.a5&p@h@J*$m 40:C~=$kA?k6*+\+|{q*Mn Bo[+QLi݃O鬦q(N4pz{Ra.L ڂ ՞4yBW4hL|څ(5Oh7lk1?^ӯꨖ:PcXqQX.2Ad_@l^o}e{| l;SԎ0Ԥ|gO6Y#(˗jte&رc0WȠ^)֯_ޚLhʃw6/${0zlҥFBSN̦bٞ_U%@|YåiO*CuUƌT޲)k.%Vk8}NKUG'$ @a@Ys\sOiudlC}t/=܆TU;uа޺#pok12jtVS8M!ѫgQf@CZV![l٥+&_eVd (Cu&!%,"ͫٲ. 4$)I깦RGNH@2Y/g”uR@,ʯS#4*19y[,/ cԩ)lȖ{`3 :0}Ybt3qU:) P=#b͚5ӗ5r4pX īNΫv]6nhv>O詪! l&x$ Q36j]h^[B"BhgZ3 SvޞQg[ ;Ю<Λ7vΝ6ב=쎺ڒՅ2Іv#&<]'(J` # PJu W8K4gۏ[˅- H0=Gm`HrȪl[Jxh& &*TyC)0zA5ӑr!0 D 6,i_z% )gCR R} 84gRbNr$@gAkei6t5 =m ZQB;KիWl9:j\-~ʾ?(&=rA|K,?( cˮ'xB4{`uA]fIt*i u:ZݾަտUZQ"jo… cCNw}bn,ӟ&!W jժ fE?:'SR2):֗HhVīOR\Qo~xB\wPSgS%PD / @YXpbJ u* EW\)ӮގHU?aH|,Fg+ K6*@iR6ϣn} H.5*.)&i +}bAuSsh؈6_kɋ}ݜ@c4mDGa8ǘz[aGTUZ\&iI[N浕>vjxm {҉4!vẖ*uj`c ̿R|. ,9n-U'rQ(˾`( {~,X~r{@uE2JXC+nUgVwtˠXQjJfGt] D@fЛ[ D} K`a-wQ>@ Ajhk|3ɔO*bdNp`Oxt,_pU!⤹6=Ҷ i"BN ڂc5ȎRڕ:!k*xZX \Dkw-Q} ЧL esʼAZ$kr$<0uMGDِ=ҘHޮް 'Kva5 2wt)WͮqŤ/a &spZa+n|D:~%]?>u6hDz/]7,ͻ@Ĭ\TdVr馯j*Y7ί&p©eD[ٵ뚧X 6.-'_ճ'VX& lhT 2>|60"(k\ot}{Ao.RJ<%#7wH·VUeWn{3s&C~XcGBBH's"@h@b {e v3y/QtU9'7}+w:@lfޕٛN. `w ݚ Gk2 K7enAmݻW: i"mgj)}JՎ"RӤJCK.`"qs}ue$Y3=++Pa`ŭ%5yRJ<%:pɤH8&HX x"Q/\b~ \/(`e)P5@?}~  .oy};$䘭6r0%#fz3jR. ޤPX QbJ-K(JƆkk/pt׋CKei* |ѧg?J5oU#[loB*Ri|, ˣ5{FWMBL}Ao&^_YjnRZP-%bV% *̇W)`)S a ?P:"BŸ԰<}J>w֎W1.Dh;;-8'/LQg!|0Jo?uc<߱c͛Wڽ{vwdNEDۺuRt|Qw)\gϞ9mٲ%/DTa_<oT%'75Uy!tPD|ק;ʝ'XΑ*PVN"*-[ThGGX`:8v um9z&e+{ܹ6lhōڡ , G 5ϱgϞ[n"!azק)BQ.]Rˮ&~ '`JXSWe/}Sġڹs/ɯtS 4jas^]ɔ?~DOVQ䯒Cf>ܠBל+ũ{ァojK "FD +3DmjjJ^,{6 H/]zkсd;P-ׯE7n(K/УljXx%1HgniQ#fZn]wI 5SݻpcmD` `5lTVF2pp`ᅹvZykP !Timi;t6&hf8P(Q60ہV'.\PeFv*E?.eeӟ4Q7|).'+38uɀe$= ߲E"bs=|G}FZD !wR9UKkMڤ j0A-'mC/-@_z|v &c͗hH)cIߒ3T݀l+Wܹs`uƼ/~)A]v$G?r3&)%$xF2RCC*} M!JhbNT(wב-j@QY~ MM\v/@{+#$c"}"/d[FyҥKu󫯾*tm5Z يMCG @8x ^v >gTV* '2ڣzcIRSt {N #O/#ݷIB4#]<@;P&\eْD&S.4ܕMk%2' 8JGFiNl[Ł TU$m)М .mP  D|F5%N3Is&H55Z8oQOYȯKo ^x֕ V(hn0O|UNl$]%;ndY\haM;uUDMz.cGBĪv7qNȭp ]V 6!@ ׀BV+z_^'lUTyW-*  "LE!  D[pq#oRahCh)M9㈖kC~^r e& m{˹f5p&6:s9yΟ?_Kܔ,DOnC-'B' NoU~jm2{oO'ߜׯ_m׃aɒ%Jغï`h8#}@6!@"mgj0R URGF¾#9}B 0@3XjTz#)D@E% C @"ZaG+ڰܠI'BtVTLq @`-8k [ˏ` vYBCU @ XkPə4,t7pQotP͛w70 Є@tpB h ՠ# hcp[@HD[pv($Q N@5|BZ s;yJΝ;$h!,p[0kEO~GG+2  @tu,ZI>sL면+ƍw2uX?>|ۅ[nmٲʕ+&3|SUҥKd޾}[\wOF`5HD@ 4&{Ժ[e|'_Ah@Y^` ,`5R@ 0Mf4d{^dmVŋy-7IhGr耽ФV `5h' @;|%}\ ȏ9גdݷo_% 9Az*q,%&c_2rGf$s g Q#ϔĒ%Kҁz׿kMjȏ2Id@` \  v6m"s;@=ܣ]V$;aSBͳ<տh@l~纣pb[ڵ,ASo}=GܰaG~GW V.<j˽6y"jٲeer^=0.+h(z#ALLw%R @'|MJ'NXtݍcs;QJ $"˚ |JB5, H^c(”eOy43陹T4J.WSmdJ7e? \I[Hźګ1^ pfM-CF ڂ1U @`94lKpM- t`ܛKƺR53ԿxzJb?? }!#q{@sQ[,ƱDžxJHJbMOu 1co  m١` @@1Ӫ{=8(NݻWJ g6;? ޼yӿ)ZA~+*̲׿V,t(Tk? qL-?pG-S@Q }aMUS!ZL Q `5 |h۞s¤-S|ـ PolG7y`K."~a_~c#vS;_/;>7> U*L .\rEn (#eRW %K5)GcGEX _viގKܹsSP(+u ^wRtjӟtJ4 }W yx]T#GC~sr›kCEp,5aGPNɌ(_=('?I hAq2 Jƨh$טC$T[Om/dbjV{$Mk t1Z*0*k)Ghͣst `5軌͛gW3ʕ+{rWf8< (XjHH؇~ZY_o)+Y@K,-,@+RZ&V;QKp{ I*ą N5e˖@fq/d'W@ Owept_OF!槟~ZN@T:o_bаk׮hP\4BPxD>kZ7!l @8Y6ڗrcl_nZ};y%}Q`=U{`~1@zݿ!1ǥXRr* >A0Q5k¢q_ ,  Xg,D[2$XcvR$϶[MTR Qf{C4ez/juRQ,pl"*w}$TvXDʛnᮅ/M>@=Mj%avY&m9yCLh;lFlg,seZѣGua‡>&씦Mm7V.5ݵ_D׆mZl$M|rb^g!1z4~ŵ-] /wj4RO/t%*#dٱZ3{l 8B@[8^)abEV)`*ܵ%#'Jև:oEbF7p.xeJ0̦bgO-1H4Gx(-vzE#VZkPτsWv2S՜ޑ((A 0oVQ^<4r/K)Ie!E7S3}|Z@lV zNtP)$U`Zq _%*Jݚ|cU&*RC D[R@4fm0jRYDk'R[!V0v%ՠ*Lv>qx  @=啙, 𴪧ޝ5 @b`y}񵉠lA>y[f>x×Vi\-^5F@ 0!.\Pʉ~'#BCR;*) 8 zY_U! !Gthd@9S@`* QǥΠa>]r % HA0{e9&\]ù*'.RG& 95>mHG:{uB!`5mWq`ӀRe"a/?ls""P&ZbŊ8o iE:aLV!j0Q_n]zVl"F?L˗?ikI" @@˻{1 wmC܊_NuY.| !pbJ>Xx@F @ @U `5JlᵸQjG]>YЦk׮KӧOxXvˆJq -_u!% @Vv)xf8X~߿4?yΝ;x \\m۶>+[p֭[_IÙu=d0٢*@߳gx @@]sL09sti= /5횩ְsѢE4'@D8pNIpBtsuW8BgFŅLDݻS%{{jAV :'_+ߟFN#mk =ztܹ5d sc3 @ ڂc5軒hijTY.\׽7o/_|ٲeф,H<,MZa"Ըzj31hx6-PM X_NTZre>@"Db~0PNϟ?RC8Q @1' @`D[p3U, @+>GW # -8~ %* @ @` `5%s @ 4GT@ @Tj0K @ @   ⯿dӡmG|5>@ LE iwJ^h=I7n߿)a?>|Ma ~,X"5Ν;|Ɋ+ST.5HaG- y֭{Ό\ 2CYy*H)L2 @@zS0d{ƮajPUx5U5 /ݳ>{ʕgy駟v/28wK/GoƍBY#m١0kUB @$ >|رcsnٲEGlUeXi.T @ <H/^o>.\3HA0@ @+۶m{d(K`ժUzt4@Lj0N!@E@~ܹ.7K\jɞHPv)\ُn%ɓzQ;R_z9O"?SUKeJ̨\BY}Jav"bJo޼9T2Y @'A)ʁ c3:J]|=ߚ LԪ,$* W`۷mnE(~{ĉL ⳸&-@`M~ˬi*2] CjS_蛘))3#/J>pz"0<)&mKјSLA P@= nz>p+Vc 5b̏X7#L3 Q~駅 htmFxFGJ;Rlʬʩ%xKp+fOu Ul݅o|%vHr|]GJT6I]#=]~AF֮=j.g֑ fԦã벼B ] 蟉k6,ՂzKhRp7F-S0/w35doΦ@ P@]'-[$ tR8fCש8z0 `^JTR?Nדѣw4P5ݱcym_kH"0v8Lh5pX <׮]O_ pā @KyfF>@wzw}3._FJ+iEbUyUK J9ǶJRV ΋M~ul%p=N#In%S)h >'/j)ڵkS,Cz'==<֝x򢳳FuPHٺQ5@6-KK/ې{qgjm6dL/PGeѢE/B^Nv؞Jvhk1--\tW)|ʎ7!>Z0ݺƓ-j 6\BYVcS_ [Jĝ-k1… (^q$^/vQns!ogpz3v_”NZJ`1Ϝݨ-@V1Ԇ O}gԎ+i[3M* 5!yHVWxmw:T RL7yo_B52B\LW@'%F 7Qd&˫Q=I{]bh^i1h ^ںGc)V'}GVB&Z ܧSW9jbvHK!@`89LAx 0&"0j\O۪.C ڂϜ7 .آ8]1uر3^-,8 +4־,E})&Z  @'Nt\@5~V|!U{$G׭[˗/~{O~Ȏ  ȶevK0ۏۮț'@$!0 |nx_8$@g o޼?GEAQ  @L`0dҥK4AD2ep! 7ot $G'Dn߾ lk$AH Dg*F/Ԇ L7h >V2A*h.TrIXg!]Qh8H+= 9&B &mgn;O?4 Q#vȢUw&uN<32X]*LVD @ @c'0k \iU;… :Ѷ*^zɒ%˖-+,_k{CT- bmaÆ +~kX=^kH :S1@Q  h >V @9ZI! K ڂv)#  @ 0Le)@ @@  @ $`*LA @Z ՠ @ L%SYd  @`Lnܸ!7G#ݻOց7oyV&ΒWu:[[o i* iң$J&XtA @@_T'xBՈɓi߹sgrJUHYzjĻ~[^rBL~{nRѯ]vϞ=?~=={vӦMBiܹ۶mSsΥ'd `5,R @u=~Ç/^<|hĸc -ZAto.\(kpڵ}IOx|P7ܲeg˗/9sرc~k&U7TS4߸q*) 3Ase5Ԙ!@ z,T ;wjpe˖ _gixݺu1v kY 'Nl߾}J1h ۲JZe ޽;)׍Ⱦ 0ߑJG, @4yfnGa2pDqfXf͚G*#ZLs{i۷okk&zʶhrhDž R$ZJ? `5 | @u6ҌX@hf~Æ ʎO0RL3 4ѐ% ڹO2$LtA @`4ӲUw)?Zm.ӵyeƺcF=vhT@ 0Ņl}LW]|+̈krx}!Kql40Ԗz|Ad0 -RK!GzΚ0t5Xfi1i*9ef'h5$8jg3EٮLyqh1w݉Jىi\G[p'RW~R,9f´6iB[inF쒯4i[!Lͦ Z,h{qML2b.dm%j g'h52uW[pХXi팋eƦ+m"L05 Dw^ MH B hK.Q9K>-Ve޶&BV/Lo`>]OF!-|2xNS;PuNG` GyD==\芞h@hH]w7̂]&W v~`sUr:1Ͽkw[N$PlzvʑI(#awyt'^19bP/TF]EV~8 A zoK溤t \Oz>Iqga,|zG5K/> ahS)5Ds欱+񍻚Q;4ٍ7I@ JCx}HzG8e֒f#ռowch5p;n`+%7@'0E_!-^We͓b[ Tds&I5--[ɸs!UCyK+~aءP!  PL>[LS? @ C|m>^nSK\vY0yΫԕ(t=' /ؐk > rD/Pxk \ܹsZܾLӅ`J@ !Xd裏Y _v٦bmUpn uիW  H?>+c\U@^GobfPU2rJ()nGJ4|ƻ6 ri`"I ׽֢@YK|{>j0Y ]{1ӌhXFJ_Ie3*82+PIi=';(A_jwx2x 1Lcu;}USb'Dvxg}Va=T#jPeצ4!@"]ި>Ke\9% <5rǹ: XZYJW)[ B 5H[ c*B^r2tUR#->C~4! Fd߯)\EVp-]ƮV[Ŷ";je8{aoh ժ"0聀}zH$'l_lI5(nO>':P`>?_\^ BBQ*kcФZ4S޵J9%^br~EU͈ZU0|N5-UzkeUB} IhˆoV= 5ϼPuO~ r/*630?oZ;*d^ZyFJouuxV(c7>A0Q!پ֕IIv50 W*hv*ը 2N]XeΞV^Ub-@7zC[BHmMLouE?g͛(XZ[ȫ瓈W)X=R= _(zSv=^LTu̟ y7P8Rv fCC.[-ȧ{$ÁJAj޽{V FF@'#ăG=ԅ@Š`ٲe5]tIfqM؂YIEj0)//$zY_U!LMCE l+E@`țڨMYqN >?tjsݹ`pX5b~*3a.s?~\_?ZU y残lWriH6Ȗk.|@+~MMvVmOY4:2sh='ݴKnid׭['^:>էE3g(+O?t`;w%͇;: 2}:tH#ْdop0ЪZ @"8³6@ JҚlk d|p4f64yCF/RExW i[fKNUW_=@ @` hj4742o|lY͙ku~`<FTPBbbamm|4!4]^'l$%mzT{t!sZjdq9q6\B L,Q7~z 5xINx mf}.\!evLD:rifB2/F~ŋ2ʔv(O>m[2F4_hQ#s ,E 0(@ P3tn=Q6vD];?ٰaahuX {3.MK(4hςեQf"E 5RlZ^է 6Y}0)Hk5lEwAөň^"p"n-dY:+;2/sxn!zhUPeDmPreU`V}X fnwU*JKHtMCׄ@@&*@v6[JX W'5(K]#dV,Yf}8M sRaD)haG3W/XFHN `;B?JB̔_UrZ=*cn+Bba ={H$ @hH ڂ :~'fC(lJa5g*j%  @5@ @-PbP >:eDmӒLŴd|@@j0UMf А}2K$zN0Yr AH Ψ@@j@% @>G i  D[py @ i!`ZJ|@ @&ՠmȃ @ L R @ 6mE @ @`Z`5$ @ `5h( @ @B$ @ MAD@ @X $ @ @msBsmF/_|˖- P=̈@G%i @A?IΝ;W^u._~GU۹sKZB N5;J:%^ Ŧ$  @ Lݡ {NtE+oܸ=H{ӦM@:f͚(i㏝ i|#8p@TJyzDT[@ D7? h@A|Fh)0\rE6-/:HIvZS0@ٳ'|A @ 4!0k d2`>CMSv͛gϞ{E<BYuҥK3|MbP>BcATf'$5py>.G[. Mj!q!@` Dg* d 0}-Y p`n̯O?b :իZ/ 2Zʹ3n{n'?=ulp&q!G P@QO, @@ 25ACcx~+{$wUx믿 fi|?~ V C @R̜ˎˎ;N"x|7hn߾=0aB_-s(_JRʏ0 @ ̜  tz+_`2et(/P/EbA @9A=L'J @ yCܼy;"˗/߲e {C,sUXbW/[nb@'4q Q sk 6l0^Z×8Gmz +:R!/YG0dNl+u@ @ ̜wttV \v-֭[ܹs…[n=w\:pH_ǏڵK-(}ǶE @ @*ۡ @2/]TO+ o߾?z䟞h!,z̵VYF?N>-K`?~Yҙ$ѥs2+K,/fU+!@`D7 @h >V\ P'NYիe4sgonܸVC.p*y~D B`@>>eA@ VQokZe} X!$PF-C(GQZTQ @ B3j5ŋku,>|XtRߺy3gvdӟ$'M0#[@ @ LP q L%Ʃ5 @ݵc/Z @ tMAׄ@ @+c-9 @ tMAׄ@ @+c-9 @ tMAׄ@ @+c-9 @ tMAׄ@ @+c-9 @ tMAׄ@ @+c-9 @ tMAׄ@ @+c-9 @ tMAׄ@ @+c-9 @ tMAׄ@ @+9}]scnwܹz{xe3aʔ@@f3[ tG ڂc5O׮][reY1`5讂"@159%# i"m١=o޼i*u@ @hVĸlٲ ͇~ @ Vo߾v[n @ V`5F-7X`A+L@ @ܺu뭷ڷoիA͛9rҥw*/N<)Qz$iqi= (Ν;]rƍU`It˄!]x6})ROד @ &s'NСe˭7nhhiӦLJȡC֬YS% -b ߿ٳe}ZhR$!5֮]CnEmŋ3 )jhƲs o@O ڂm5(3ĉ2+jPhqyAhcom G(4J+4(d@όe_KVR DD D D[^w(6Oe)x״@cf Y@2eD2XzVOk_ovSɯ2ȄTBJP G *,!@ @EHŋ,>|X#gkmhϜ9Z8v2^OaB~"e;eˤTĠߺc+LJQ)9%Dha @ @5L`B -/JӗSr@3B qF8M@D[p1~GJ2pn{U @ DS@ @X ڇ#,}jFb f}f @@'-dtWB @ *D @ @`Ca @&G qr2 @-8k = @ j@̀ @ @u @ *XkPa!@ @D,6y @ T!ՠ -B @fVY*m @ @BAZ @ T @ PV* @ @%X f+ @ @ Uh @ 0KRiW@ @@X ", @ @``5& @ *TEX@ @,j0KM^!@ @U`5B @ Y"`JB @jPa!@ @D,6y @ T!ՠ -B @fVY*m @ @BAZ @ T @ PV* @ @%X f+ @ @ Uh @ 0KRiW@ @@X ", @ @``5& @ *TEX@ @,j0KM^!@ @U ϙ3B @ 0Jee,Q @ B `2ҵ@ @K-;4 @ tKA|@ @/-;4 @ tKA|@ @/+=oHIENDB`@=;*Tӯ1X# +( <jJ xZ]lU>3.n-, ȟʖR"`,! !l.B!%<>h !4>4ƒ<4*$@$̜{{wfg@ iNgs{s=wfh%IJO"'Dgm 8`PD $%Uw.@x%p44~Q?SXv J+AdXO\ ZG$ʳ`C AxSIkD-lu&A|t(aX6Tf0Wq m'<7`-O5۹D1 I7#|F\\H7Dj-.:f9vNډܾܾ[ ?*+u?ohl;S#Ii;$/NcF_#Ma;j7&?H8oƉ.7yx^ٶE؛UCIui=̥\0p ;r]lf}ݯX.\yP~ſ߯+]~oSmI7)zulǔ/W7Y@O+ӊ~_?NT};: [MɍrpZ+}GlzA/;DݐrqUV'DD] yAe/{o_kxjlϛb.[p6Zcˡg8^O1s%]8 :ܯ]ƒڒ=_)YA _'+{'^f=7s]9k(.d-} ]{m<1(M/}f?xqo>,Y Xw:3Y(~~_}wT9`']V :*kQdh[ƶMT@L©C8D[O8?_cz`_|?v?a]~)~?倿~~#c?1$t?QG߽b+nX?QryQ3 =2Stu)wB/?;vx7~C~17DU;7d@0-L~/-&:7ti#ҦFC'{~'{콡oο5 9Q{6*׽(:7t8G{CI@97$mFS~FM}Z<5,DN;BWS`ІGV_l?-1U`]i֑R/v8nE䟐^ؒ?w"\頶"#*A|R[*ۻr-nQSYL#7F_׷4l6= ~Ct+&`; iq!l<H'M8\M}CTˏVG)0uI%{} 2WqY\mq#WhFa5CWR'}|-2y>|*yZ =PIBRz; J1)RY~_&c!w_6[Ϫv; Q٘KZ.}Vq?ެndc:Cin^\PNG  IHDRzGsRGB pHYs.>bIDATx^}eyDKQр. bb6*klֆ]V,D+Ju[ė(I[V6*l_PiED[ۮbm?7}:̙;{=Ιyy33s_s~9#찈:9#?~8 mZ#>8 o߾m۶zN?a׵k^wu'p$ G\jyO[뮻eu׿}_2'DѐkV\YU|PR7e ܆|V,K/lec=Qc9niG[I''l7o|Yg1q5=6ad4p)#".wwIK('SҐ[Ǹdi+}xjbG*ГTU<`A&вYZ OO_fjǿab(BJV H2Q '"H]^jo@B~q#zi1Ŷj? s!wU-vM =IDJz߅Q%'K.LOGTI(ГHDCT~pxJE=6Z0XzDڭKdhM5Sx5YףQ^<g b[o5% zfIZS9zu/ASv MߎzmNWۏVۢ' 푅_oE dtײج%j^{k*Iì1ңpU|M`jiez +]T8 RƭMR LWhdOr bN&$B=3ߐ2\QOπ?C:ؚG]Ua&$'O:ASҷNm%+ 5* \[֢2ُھ)똜HQ84QY E.?5 4  9` MW7Wi~ \+ dM!$" /{W{xꩧxusx@ٟx≦lW NNgتrb^'^TM!'"W7œ50ayw"m _dш{u;eOOP0|*~,Ƒz/}Z=`曨mWP+VhTt}ٶo'eS_cT@V~M$MY0Yho/8_Pi]z<#U?P;4ݴd;s(M{D'9?3p+G"7/@ꀴ;usIln[Q,ez%r!<GYzj=fW!חu.5lIնL_ 3/t+Wvޓ 7Yf#%NW)Jv0+gY+`>>Z}5lZAd3MK\E-ߐBy @JWɔ'} #Yp+SN &;-E=86j2&Ħ[R{k*W'aje؞%*ymUŵ*/Ij],URpHvN4hZ!R5|e*Z|ݏg%JkQ_и4mfh%X7H|iZ2]:oU}ptۧmXhvBu P9c.MK)^EŖ֚0dj˨LЋ'=mFg\>(Ak@Ϟ5 G#8J)-%mMa[b]e|mָo{ڶ^[@ }S{d;"A$65(AuaIJezkHȅP<׾p#n~ 4L7G'L~ ^ \Җ'4Uu;o&ZU-Ƽ$hz_Hlehl71۪ U+\BL`"1\R>ٛ,*!0?k֬)1 P"BooV' /(QLT+5+j~JOnbE/߽p^fNck=c}nw_7 z*q|+a~ s5:rk)ʹ K}|4wQ%b 磏>:*۝4bn-ȴ(#}hn|T2iۆgLxPٍva RА\=uq#:\i<8f0?û{lqhOP`:Du*jʸpGpB<GXX-lzG GXXMkcPt\ #_VOj݀`t#;=C=t!+<A;V64SɌ gPgi /b8d GΚyj2i:Y#a iRGpCʺ>#q%t \k(3XWMjo[7tleY( tǼ8"ē47ՋRFiXV2%R.M8ˑ BJ `xBH\\7 &(BUG6p2ʊJMTUp! 6M 7urڅqȘy!08N(HDgaDCQ`(E<&^Ma?.đplmѮy!t;]xHMa81Ael'PN*e;)RQiKc$QXBPPcʚV̍Hhx*pfh,N)bM) 튚Y<5 !0wJ' wWvd&&LF)b#b(fZEZA)%ӊP*pFf6~t6WS9 \%ݓ^ apiTTHӫW"i* 4MQ6HK+xz.1pfŲSͳ/v7|d_MhEp&&z'.͆˿䭈">sR>8 kgvcn8wlFVӸݠ.QĹ obj`,sF1=/TgBw\sMQ%A%NQynZlM f[{2^|)AR]tG]#YypEO2,lzG GXX-lzG GXX|Ǧ%SO=E"]`BE/>F6BXF"ĬrF##m܄iXܘr&}PLF.( #8#^ӆeFNE ;l4Sq W/bVF6[F􎯼KpB5cL_}Ջ.9zw߽vڐŖ#URUVr-k֬In}'yPf.W*c ]fM6{= ͡g}%E*gԤ0uG2$v7f#ʹT)-4c!"[% F(pQLY6‡,*XD4" (y&5i4jqEQ*%MݬS,_fqDؓ9Mx<2YIa9oe[*~rKf'&62`5${$KCe"u$茀OQ#\cc"U*.b~a=_\t^ɒY $ 0!69ݽk&3r1Qb&T$.VCOB \.6oϾ &q&d0iĎ*Βhp'$\nڴkeNJ+cX7|mЉ /d_V:xJG` GM&}2+G&Sdϖ' ҠvrJdkǍ"f7 <]XV!Mȱ^>8={>^u5}pZ娩5f2jZY`^) #ǃMj̶3}mmRcC\AMdva DQȸIp+LG#>r9HgIT,7і. %*][a:Y's-G}N{Gkwōϳl=:78묳>m۶\D8vq|?wyga$H^vi,1V饗^Ba!BrޖxvX:q>Vȶ"]rFn7@z{>!;9+MPsO2+~9F` y,B鎰Vu YJDs@lhڐo$#j3r8-.iٮNfCRS!1k}-Q2(;a 0\#  -\G0n& s n8m8p7a@]# 7pi p& G`8N[�az7[κПS Lz%p(⭷"{+`x(/߈Sq: '⊇zh"gZI+nu$@ZE>u]>1-:͸^{qj|JG'X]b:"u]`yBD*zDr9Mal9HDg8+0Jiiɪ@ l>j%&p+Iܶ"!ODi$<,o:XSJc%"0ɥ^NH͛ׯ_Zz0d\6{EQVR \=i8*p=wV EmjL1 Z۔3ba}4.9B>_D4'C`ɼ$Rz ! 5WwWf6%0 /Cln䐐!ȩIY_RN { hN(u4bZi \+w'2ք!ͣhJ^ Ug-ˬ^YT&ud[|miczMb+IIw#(t:[LYYCԖk riŝv7,W~ؑjRogS%m+VyJ Gыr`G4eS iF#T4PMx渙0ײU`&@r0 \=wzEcsR;LLQ[)1tt܍4, (&SCU3!-mbYWJJ79a|2$ Πz*J\L\&cbý/4Gm`"BʏaN;@eo),c$J&&uc"0׊4O7 -Yi}4j?yQ"8N@.޸:=4ء:㛔F };Ovn{z!p?zVcǗ6@r;w܉#;LiFpԺs<(ъ(LQ i͍a.crʉfXQF>g͒C6w&F4TNXpt(8)%ی9|sZNӲN=J6E-75a4:wSOQiIi^!,NTаq$Ǔ[: edMtUņ|i9#7 W8i;RZ5l}8ȉٗcCeT(fWWCOC1psUd1=.m\axpPY e:Lmx*W8{b8eࡍhZn#RvM R U5/t?ГSlﴁuyF'7e]An8qfGwܱ믿+_.ivAv*{!%FP&"?裷~_> ֭3\kHt`E]!!.ō7^~.>˿ {{8{=hI,CIBLtho} hX}iŝV; ?7!Ewb$H}ӭp7t[׀@ޖw4|`yyLUmZD0qATeʦd[(pijm6Ti/!16<o#w$ 1D$m;1]x<vۚ3C͗,ָvUnkn:u!`x+89B$1em#) Np2}m,` )|[6;KOQ!nk, n!nk, P\Ƞ:V=r #<ՔΠj`-;_p1]\lemzxp^ZK8I\αs2AzSܔ?-[808(*uh6ͪ^#0z4p|r-5bfkXϋڊgs:gKAV^M&p>1ΰqY!УQs H~$񚉒bfXVx6+>g*'U$Ù<(D ]W9^H6>3jb*F)1 Vѷf+TT)z$5w ) C;u+^z͉}f;DG5X( LPqA[Ѻ9 uK \iēЊU0؉VQE?i!Hv Y;p-Q``ZV}\#Уլ/j=f+V O~=,h`9 \U߲򂹞3Ffst/j=f=g[a?UѲSz`àڶ< 0p]EGH!w K6lHk|k|pVվT|5 /٬$@AP23]j?cPBCG?R^ t_OyQ+y6SMDAJ28j j+T=r"" sᵉk4 eȼ׃޷vۦMZr-&+:C.X4|7V9fO?E3oev #0 )OgP\Bsm:WpF!>QsG[mӹ⎀#0 7p玀#0Iفr2GZk$׿u"m 4,Ƕi|uҼvt ljv!% \ @DBxh2+ tVH3*B~uʸ9i^n-!dô};pVpآ,,L$cPHʰ=<{J(1b}1cf TP0"htG  eFj"v!1[q)HqʑhkRr'b_;p)%SHc2GeX$mYv kӪ^HyАVѣY)ZOɚ6k:ĪDt:B:kٕ ;SOH7"D+ҴFDԈm R1m9}4e|8 {5CBHԱ)\sMȨV}NW{߹qJn$mʼndLc8JOk'eG5 Κ5|aa/kbi&p-!d (16"߳&̣`\i3_OwJ. j*5&4j;Ⱦ"1&tS_;iٗ-!$wYk$"FX*g;Lڷv!oqWx{\d(όҧ-r+H*a${1Mlbw9i^==B@} h?ns=~a?~z}-ec/럽ׯwr=K*ii <Ȕ\hh$N8~\tE[,]qִ I7qCa[ٲ=B0m˝{/aGv^xlIgY KtVId[}\qMsU"PQLfI)^9zwV"+۝lٞ!v'DzX4|pZ-PNʷV3N{)EV 2˛wҼJg(ڸȻ$S%!dS T)f0Yd*;L YE%秫jR9\g 6pv;nf6~۶m6;^{m͚5# 3SzUW]usO?U8Ml;%qҼzB٪Tn ֭[߭%0tHz.`? #`,[8@[tp2n༇8"na+8q^SO=d#8D`z#8G,(HS5SaXAOE^D=\CSl G`z ΣpK/;J sK_c[ G` #0HRLy];nBxEWD$NC/&ӛ-e! Oji|?1/xBb o_Nb|(Lu*%,=>ÿqӁWy睏>hnbv)ݔY V_Iwk6cvqhMG)P`AFot3RbIrMs1N%3=؃1z SjaL- -ɨU)\x<#BX j**&%7SX]9ĞLB%nE!&|<"-~Rtʎ4T/1Jrk*iz-׶ ]6xvRJ7>)5JV(0~Sn ɈƧ \l dVDd$=[BUhjJ3-puZWz[oݷZ(YS@j b% nj0 ׊"#lmRl.:zKͿ[uv  f9;#r00hFo>D, p1>C(Qn 1a2>S#<"`l3I) rEK <士C[=euh6{T+D-x!/bpZNAOqbYpt&/3-m%o}/fK5pZ:|ΐ4-0">~~Y\.XΔF8@_ YoDpE/1nzlЕ[c3%F 7WXtz&zG`n۸f#0&nг;pp7ܶqG`L gw"03G4^vÅ5sY 0m" $y8^u}Ye@]9=#ٌl֍Jէ슀sE`ĥXnHPS G` {`q ק9M>#Ta FiRʴM١ⲚWeWI%>?Grٿ{.ŠjX7U}іB-Z-GSOiZU/330pli,eK>*]_EF Y5-b$-iSN;[;.J3sQ iꫯ,۶mmbAJ%5ÊhqXFaGDj¬Sjb/mM,{V"g`%);W۴ GMotO):F }`SiKYiZђVb@ FoQ^aeVO Lul'tqr}ʲ(A' j4%`ƣq=B6:N|:hK& =X>sIJ aޛoe߶Ce;ReMq}rD)+VD.sEKOb^v&T@}"|n<2#0=ݴ&}}ʑ-Gq}}Zґ &.ﵭMd"傳@gǐ˞kjp\5է)M>8l\ĸ.&\JKړjF1A,M-((5ȝ7=#0Eki}ʚ&D/!;)-2iJ$ 9[#nVRh5GqT_i04.wX0aV -_hGHH^%5hPH(tAr**8_x{.sj& 1)ʨDsެD!+8z'%JSl%$3P =@aEp,tZ"J UC[) Dɶ x}=#0 B7 C)[5C 5Mfb]!fj('Ko2WL:@Y UYטN3+$PI Qʃz'vBax *h֧ DrKc7@4[7<**A妳6[ՄYT^#0xpLF}Sv<>C>ӗ^z)6sV` O<իMTlovBԿӪu>M4Te#"VQrT%WM{Q~ F21YUŌij/)`-@Av(8at_C7#[p/I'! >.Iqc)Kq%JL5qG~+qomFe]"O %k"Kj[6=rP޽P/w&"ê`L۫b!o)7^QC*?-E9>Aac7sտ0mUT Ef -U^ߌI֍4MM`]ނ*(YB ¶aK|'ҵ1[oڎ\iSW_}<ٔa?S:=.-wyg7y8 ti$+B7/&uea_> v*o{7v`nI EzB@'yɏ8eguBS9Mt,pwyD?g+Z\e֭:TKუw}8s$`i,%Ws)G?B^̢Wᢞl/2j#;vG}0n1Cw 32v:f A9#@U٦5]sl{Alxh(T%<&SN騄;yvuR]m{hDhEŶS5o,n@v:G"Va:'վ3fQHF Xxg|Zvd3ý񥹄 ,éQY7pRi __8r" V|AfUCER}|P{b{MoɁĺ+, n.VnS Oq‡)Gplkg:ʌUv3g\7/~pLuu .Y{ueB 2X2-Y{ueB}p?s{)BF̧Ŏx\'/*>L˲C&ٜv JnE&QӘh}݉8D`rS.0> sr'8Di嬈}#5Wx. 0XBz[S N\YvShQ0pMٛܗ&h ."xE)fo\-Ϗ΁Uv>KHJ=Rz&蝊"#J3*EِŔhէ@OP,39?f k,V[!#C,G&L*W^qJFa!Hh_@-sm #&իg,9+^1Gp*jj,WET |aZ/S4#<|lO0F*[}٘͛7Ւ!$1zmܸQr֓dlG ȹX8ɺje)k37*.טLM3$ 'mV;*=lcB,Y@<˒ NQQzI,ˌҵU>jo9Iă (dBnΚ/|f‘ 2Qݐ Kz5!G`j,"pG``J#0MG8D Ur n28G n(#L7pѥ8X}pTұG`DlWp&8}[n}'n/ e\FM6؋q"΅8SBʞ ͪ#/ot6p(9#-@{[4qsoJ%/p{VSMI]L^t#0UԑWB4ДT8٬/WC駟ֿ_|qj5sx#03z552l H2}kspG`h;1pӤ||Agip~ \gZ{^wu,bXJvh/Gp@ <@d8S6v<$ WQiWִX7s쌻 ٴBQ*\UT+EC9s -ig8X<ͲF߭]wgpwYac,-)d#!dbf0 #zGX.^SG XgWp7pK^MG`puv7pK^MG`puv7pK^MG`puv{۷o۶b MP7<6!'?yh_~E`g(#uU;<"k^F yv}w‡z;@J>k ƙz=l VM :;@$\iCǫSM /#@qB*?~[4{ "/co+/2 e.bYZBq' ժܾGM[X acى08 mҶ v+K2NEȻzjh!5vOEvx8"L55ʕ+ 蘘ȴ^tEcFȗ\r#/_q ĆBO2ݿNWOFeY!PdSbRU"oE >r /.S ާ|JG+T.TK(*LD-i[꾅RNV"?Vܲ4_3P?N]T6ѶUw4oS: D#UvIMܪT#ld2AGקCx~/(V = ^B馽Ze GvI8)Y7aKauȈU:Yz>EV345U@TiHmZ } _ǚi(K RKߪ_u DZ-t8}glF1Vo^'r#e:K d .ح\V YίwƮI_AVcCcAKQSI _7)k'm&0StaFV]7F_l}+i2\V HeiV83vЁ%>嫑]z&!bs~׭[Kͼ$ /=nQvzi&F+(?TYSoRg녋vv4s=Gz\0+_~s<5ܞo#4O{ra}*n8qx0m\s ?qvU/ٱ.|I'wڵ$`Ң3Mɽ~Y0X-[lذW!=LcƦ[}B D[3 %wyFʑޘɴR.5D+ O3&U[stͬF3OQ~սi6 ^Dpe}MuKHTAj[V^)Ԉ&0.T5 , ך;s3X_SwԤF}+ԠTf>8TBVXIH{^]*d[E PIԪh*VIm}edPtv sxZNL؍㏳ Ұ ,C}E4|p$n6Q;nIHߏ>(¾"|}klCx$w^ ^{m͚5q0 RXӉx &@`@xgplܸ/z'K'4x'}M7?yf47/gAV7AsQG934n c}8f"EL*lܘ/^^zIGp.{{ 1駤{zjIc5k!uyʋvq5}l'هѺ 5hB[\p1:3;xD7K4P%c:R :s:h[Fv5ʑ &j&z/BN8"Ԧyt~ޏV~l=#L 7pS @ 'E鲸 WO?}饗6O4{C.$@ ٚ 20pFz'8c"07f<#8YqTˡwG`& ^#L7p@p >8gtx\n&U:m 4,`\rz0C- \WB~ʝ8+GG~mBsz[oߐH, \ W#sVT)M#8kX7#$A8[~=q1dH(Ej #L~ Mְ]w]*1Ca WC=(XRlGnfr8m9m[vkZBPpx$9x 9!3Wc 5b ڸzZz&k6P.^N̓ Y.ME*TcDG4GrF. _6h+Oք@}yUʌA#TQeK0YSi\ip o'Kwj(,2KѤeQD >c`^i`]v%Ja⛜Ib ybY"WN=.D2_x[?- ̊M,lM^. m9"@O4ysԲ5kZTm3, jhx?0;ޖH‡@.WfCH㴁mijKC1ekyl od 1Q>>#4ξ(1X",rsm`ZLhI~4T@>9[sԲ=ߓ"뼽۪eef&j~=VD."1mǞZ@I*X|ޯi0&^½z7_r5@uH5Nm`V,MN(j5AkOUx3!v[.K{ \YZ!i{ x.~*%龞.6\5p@)LZwdc,E{gp_r%{'{w)"0%eGՋKiB!<)׋.NJ6p80ͦa9iBP80g#WF۹M-g\M a0p?C0Sv0*~uG`ΠQl\H& vlCfAT4!~dat9~a#PV[Í,td*}6Ȳ<\w>LP)7WE1C!qS*;[Ia@ZƱ*o[L%I,&VƣNDEf yJ*Bv~ *FMA6n,qM?5(Y"C qY+оxҔ%0T_'a$t:LCz4p+WdޤiTxfkr-z*Ct>bYV-)"RTbd#RRJVp |ŒO2^8UvAi^1IjM>ñB՚yy$ ]BC8 ƌ:oݺ ǀ!'Sօ ߆Ӓ0za@ 7es&356l49+(y H:8ʊ8RB, RbL[&CE(gQC5AUd ܜ,-iVaPL#mIudob=dy[ra.XB) i[eRU葪f&~H_v Zv-GLP} 2p5uuVH36l0JLLTI{iey2!ۨ8L L%3"q֣/L&L3[}D OhԆlb.S蘕x&I^g9Ď$%'QEζ0Jc7pRF]ٹK,I pxܚ(dŠs=WM1|sg5mmgIT>P} Σ"%{%ma):d_ŔP5u̍=8[MowJ5Sb(AڊrO ,Qޚ)sSW^$)8Q65qi:reG1 =U)'H)j6>&OG+|pMίJ[`橩Uʦ[.HfljtQ;fq ժÔ[a"FE\ ,p 6L{E?e7p\X*SRl(;Hw;&mPu8RVbSs7:ӒNauRFa&w^TH} 6wށek_d;)' Wq9Aka_ R!|7D|._; (x)G?B01n}{N 2d_b8~Fê_)/gywx{RRzO$l|vҁZ *wЊ/z(BN;jt?P:teMtMׯ_S@gX-u>rѿ_]Vjt SQD+$LkڵkO)H`4: ,Do2zb2aeJUJYC866""V@m5_R&9ك&XeZR_YaQw&aF[6弆K*tց?ba UW gpøGubm}.v'< Ǩ Ofȵh5wa3g1ℳ7x9Evaz\=7po9|k3nz;XZKv#nm8@O X8G`zN\ 1KǏҡJ,b.aX-'<43p@l=ı5Uy> ds^˅魢2a)gB DV+F=?L \gZ)!r.VyE`z#80'6L fNw&YЍ g;z7p h>.^02t#NSJiӦ4GDd%ywa=  [itDwwi)+ s9={zd+D=mGjGam+iR2 //!" R8Dw衇$h0Xk׮O5.ա^NC7 : q7Ddd\\ {]2E\e.+0-(H)ӹ^j4zv>CzlT?]]RZ-yzIz9 ]>ziYq &5S;s8:/jj@l~>eXG/hRH뮻i 枺0MYM:K41+!0y25_d(kUOCW2-Q.}16.P2z-+snj s9= %6U_ nfիWs3[Dg 0cErIq![87wĨR>aꫯ"tiŰE~,t ٜݠk{뭷 $go˖-xُv'ۼ2eԊ,\_W"srr6-v~#2Щ] C0ÔU$d)MVaÆiT^:. S5p7 T .{tM |O<Ô_M6]{b%X&?Kq Zn@EP[]re7ɞ C1pd~0fF {ՑB)*x.@7e&X''[V3Ohu@KƱ^zW^~@5:蠏>u>8vyGy/ۿ1i%̓>x7cy/ L''Rs=_WɎ;N; ro۶ 7߬GO?s=1[nE?S3U~m+;o6L֨a[꣧mSFb_07 %[rЪW_}7o !C #)#G"mutGTdDKW@Ycu~ꆄHJ^)jAb A{eu6ٕ-EXi/ d 7)gKe=#0A&V`f;ݝAg{J  J (5 mM,`e HCKv)% u.jj8̌G^#PKvE 6WX|-~{ E 6WX|-~{ E 6WX|~ߙ'}IENDB`n;B+ {?|PNG  IHDR}sRGB pHYsod;QIDATx^}fE/"[iX">m&+ieIR!Ⱥ`!eEXIl^4әspsϹ\s\_z_ @{‚@A S P}:o۩EhA`&(ާn|O~2(t}]xqR_~_vBѐ?Ē^)L{tdE_妛n§Eh/_~z~3;U) ӌ߼.?D_*@L'?Ig'z䢊IR/ñBcз`LJ~_)-Ӯqфn+|ipX+v0ΓXRJM8D[SKӾ4d;苠/NΗiK%m;uvGָm?P{\FrzTkQv+^y~Q4q%W5Iл>ӑe릭 ʗdz9HC/~ f>eSe$MQ+gБ~0?-cBxg՞ G~\u-q1t 坍]!P6O3)3i\-FrT+eUa$ .}*ەɬ 9|쒚8J_Yk;WRv4*)π XKyV殟H|1ߔ1o QON4ћama_v+[?9 i4L#Щݱ48;(6_̀4ݶ_h? `pbQKleb|$Ɖ芍7^SBȧ@pF}d"AHkGD5U$>)a9|- 0Y [1xr4Aȗd#0FOBbq*/4\9ާZ6C|%9K~2>:c믿?C; .lܸ~ӟeƾL%;/BL,Oq4+'|AGu]%/<JcU`?W_}cE's=;@[n˳AA4Sʩ#9U7.>{mݦε`*۾}{*yİ-+kL j{?B]=C1}b =܃M;Wpc~r!3;~va{bpQEGb735֎09wq92{Wlh`fMQWa7+{E~u/M3lgG|'-n GuM`s^{bpZۘ`pOu?hb/ڝO0n* ΢;ZɶslEH]Y-b  0}Í@C԰׬q&7Xܧ?Q} |#G  蜸}vW0ZKl Bѫ}r*>9IeJ|4_cT*g5cTQͫ|RT?ž\k=Zb+w ߚh-8ef:`PkFHA{D9m1{߼jvq RuX $bN5 h,]vꊵOLpWU[Ms寰=[Rؼ-{s&bܟ34ۡtnj{*NJU3;΂3H{ cψkQiopdZbٯhͯƋiKimЙ+f+ڢ|㩤g7+_y0SehTR5r.weCp_dCM[5m;>t=9 dbHڛTd6i[\´Tؘ?>4Ls@~|u-NE{EbZNOY@qtC4gYM87i]QEF|J2JoQgr^N5ԡźH qyᆂE8ΡvUی\gut}-jbDI%_,nAsJNV'Km3S$m_oc_v҅NN4g@ZYi4L+ fj/U͔6tƊ>5.(]UB1XakqW1{m~oz%K[L))--*G?#GvK(4 mooݺu˖-|!lڸ[zQ|(sY>a}x=:iRgOf X:S-,8F9XD4WLp굳ңZKIS>-YqS>t„Y4x~p~49Mű72zʾvAԈdq4!h?:* ѓ^{QG?Q0[1XTǃb!-G3&1Jie AC_'Tԧ>E1<(%iczxCbY?X?5R_6t&h~=% nT134mmm=Lo'T;oƜ21Xq|e&8!4//;A$KcMijzxI4?O(eB@TFOdy*_+T3N!h Ő #-5T$cڲVLKV3 !2R\* dzƜBi{0nfM;KH>)V8 ydrPe5]tAgrwXDPG1}Lm)\C$rw$rNGyNJħW,2Rr+Y-(K,%~3]G` IXNЦ zrUd"raUY stD(&Srʫ&sĪ#]yτC81`yA-r QfS74r~ӧ5>Ohnoh>VV^m&c=k?g]trB8~M79bVXaM;AMƒvI&ْ?g}Q󁙐Y'>L:ַtLo@~˗听nZjJ{Ν;1o|;|CaTڵڵk/_~^uUEI,yfp+< :v}wAdR)B| `ո$/w(2Ĕ?&ʈcrdƨެ}>(2cLk̤e2lWb? LK1Y>.E@3" ^L8;_R ПHXї(&֯*&~re_"F L*iOZ'WA]6H@uڳhb8jdTzSQ.M"$ GQ.ܟ1T$2&l'~(Y_; LHe@1R+ 3>? % b}) (7suA{z't. c8m8>zR^Ȥ\0XAFsW26ONӺYIw3򡦑 S(xZYP f-ϫH)>.r;UZ ;\B`I2Uў6ddr`ںvIZ [YBd PD"_TwX}gVq4SLf,WIpc%QR ؎hO?i K3DEwyG%ɳT:'/ QbDXϯ$:g㐅e"PZ-`[&T\H vg=1|%Ҕ*oU}7Y7+k߳`tn3p\:я~tr sV^q|PIMo*"ًq2.@4Z6QK!!7!g|8~*BʡX4KMiܧ7/ƏK&Ѻ[̒(t']#5_|<͆5}izSx, Yg+}̮m9_m3%vFY%ޔᆍ+9D2umo3!bMaq0ЕRc?2:w׳-FЄEd@Gi ʶl|]H|Y#l1>zݸL04,4([Qs]1$m\ 'amp{!7篈3iϪ ܍V;]k+L,2uFEoA !gvճQ>ŝP$2ߵ`"eڐR:N^4,Ӧ)g=؉]tdB9̑C?p ]LQ>]((]t [P((ާXHA 0  { P(ާ@A 0  { Po^sm۶uu5σ}dBׅgnp=q]uav#YYH-W\WY$ϭ9uS6dV=\neKE?)Ӱ|^'tY٦l,6gl.=$ ~Mg\8`''_"0Sf$Y z(\YQ.qm CHid_`yX`wݺu4PlS`6UHLc]Jr$/#ir j3n,`Wd0O5#j^(~N!_#u\R 1%34m -m^`=lNz*!y4dL'q'IdJFDDIFerNLA`+w$̉f|JNT>rf(MSeSzw*$K9 8Nt3E }d%!xS*eJRY s*]3Pf _Yhơ(#o{']O>$eaɑy$Y Y N6"|` D2O:6obq${Od>Sw|^~zhB?II` +"n|#{21,VXA"FsV de*SY<c=<"?S( Jn)[`+JE/>(N GuT0C` 逸KػkI|#zhnCg}M.JB=ׯ_Oڮ/ 7tS0gvtؾ."o&>sSx~Wn,i2K%^`Ic262qW>4y)rڣOB]/w|>,t:_GYV'>\D?՘$k(k^paHn}M4&df:tDQ黰YjU?s3ܿz!6ܹs…dfz/+< ({?vik֬y{=/V[, R[%J2% {}UW1mܔX2uV1g,^u @kҥ,hѪqJ2F{_dŋX`)2SJ>j0mh۸q#t;X4B8דO>y9*5FlGpU3IZz5w>%`7mڴk.Yvˏ=Xc-\hd+͛R`Adݾ};Yh?FX\o1Sx˖-2履~zʕ7|3138cFl R͘!`fne4ߒ5]>5sG̞3ojF՛]9r- v~"Wszw_Vm먪QR8g>wy4^(Z(t~qE|A 0< E|"P|{iuA`xDx3| @>>s˨3) 52wHυ&6:p6ILa玒_ҿId[gir8 33\ݬ}쮪L0n#ഔ/s aÆ o~88*E М2lp)ӹIXZ`K0loxg7G`eJTepeEmI$J,%~vT~ϣ%Z䔔JAmǂՄPx+¨P؄***yWyA3#>(֣oI$,y&rFbZ.CL[rxWY5 KKWb鱯y;5mҊ|;R@3.pu4/"aŻ"4(_'DpVgGvFp pu44.pjbBbp crٴhfKacB́}CuaFؼ#8bb+r@yZtd6&Jfywr%BJz/mF(!'f8L29NsbR|[紎2#$PsĖ2A01Ge|{+yxms_hcy.❱˯ [QHV>W]+LjɶLP#InuSWj _:LMJfcu+gSi΄Y 3d胗,~H|J#IɣF5s '#A; bݝDX)>3̨}9]y,\=8&qFjM1?ibkTN(}ڳWmzЛ~M N:'|} kd@*ZO>#Yb]"ym"MGy[<<^r%Pl8ਹ~Cd'z%KHG?B A:!M6 &]чyϴ;_glR)s8+_2XvihOUP4.Sk 03_]}@A`N(gN;4 08 E"PϜv|ivA`p fM%~٬!87y,\la@86k^6YU  fŽkaa;;V֩fj^>v.ਣ&H?x&E9Ř ]=:fm6 Ek 4 lۛ8wO {WItACg5ٛt˜P*5.)@VkiҬdY7' ϰ>#E`8M^z)'II 4f'x"֭[GyQ" OAG Wv 0e ?b14-ak7y(ϚAG u21'f9++qhP Wj4NNgrhF f8-0RTJI'lrS+sc 6 @g_1ojTj<R}-[;dOwA%m Q'a&?̐b&ԃ<`KV0-iA3<3!w1{eYO?]P)oMIu#ioW24aG Jf-VqgdJ/b2TN[b4fûN3 ELirL^"GhIb J˟q/ S=L7'_*3}c_օqHk5*kgvS81fJ*b G;IeiF/؄~ꏫq0XbWzNNOg ,ڛöm`p9 35FGcQFm`0o0ナN3(3/zhe gaYQXL(C~EoWgdJt-"JV"5p&DE60+2Ah߄J& F!<ӗ+P?MPLk%`bev`|z01u HF'嬼+S?iUh}6' `Կ1~jY>n.?ָq>[Ad },rFSޏ,$2P[whQ%JM.%> j}* &=Q}tjJO+߼`̒rL&~\';-}Nmq$0 yԴJRY'i08cYO@:X$͛7'*dwq e͚5?B.c)I}c{W}vËr]w+`G1 OMBv9{͠XAdA^gdLH:ԍ+޹cXur4avrD gL4 ;Τ "_GvGSxk)ާFe0#pF-Uż'T~%|)Xm.BxT:to8$1FGr:9E )$˳"R\aKe3@Ot\ /Y,R@3ڂ#PV^so@3ڂ#Pܛ@ 0 |jR+FJق#PCI{79ylٲ,<Aۊ 9ΚL=΃E,OdLJ% 0=5Z~sfdÛF_Ȳ{ '$%>l h!OSM&g=1CZ?0 s9%cCAggU,)3)cL=w2]O OMX*{ (L:Qs3Zg>䐾+3=ʋIgANMdI9w̞d /xMdz)iRAGŀgCt4mVgnֺun%/t3 Fٵ)OXvW#P WvAw0~L4D"'aN 3bȔJd9f8􇟴A?bm#~ckH iȿL j44htm5ee- K ZtZ F oĻ94.FTÛ? >VXŸiNe3tAff>kЙ/Υ&_-gN̔}W8$`l$*VI& ,15'˭R)5XfZ(U6?(eW)dRA6yۉηZ]P T> NHZY ;;g{0w$crT[1&i44ak2oag2MReF"i-6,QRS-[l.ĪY>zʴb71//fsg^MtaqDM]fd3:1 e X NJ̯ReK+ ~>QG"&h @cQg҇jiJϊ!tJX-!;,$m0Qч^"4r'OK@w+L̹ ;fi{-*ӕWpx%PȮYTՠW^iz)fFIo=q%+$enu,?zC;5m)+Q9SA@ig2 Q c}jфezjNg9WA1=SV=p&#F~7/ǭ _l.^j,{VZKuUG?& .&JYx1 {%( &˗{W]uW_-REgxȤ #(F:jCf {CXq7߄ +W|l<3P-v-'|gNw}*}#8_)o~%c瓔i\z饢3p7ȿ] _2sl=KfjkSB54l A)UmW% v:k xKf0mOpf9CSbr79f+K!P3V1)hꂺMkP~FN/8N IRAA%Fpw{キv bZª)D`F>Jj⋜zNLAq@6wY@Sf|$Y>s1R6ŶKg9q˖-;A1m )@PׂWPgyOY|GHZƫxŊpo+Ѿ$V N!'`:ThRW2.'5c4C`L=^H&bĘacC_(XTɑVk=<*)Z@`ׄ F1Fsd*>&gHd&x|q0tuθ3>yO;"0珅Qy' KN;m͚5?{'+HtO %s,nR¨3ڒAL?Os-:.:zm n0k. Fq]Ѷ 3}hIa)]}ƅ{Ѷ PO˂@A`\3*f}f/KK BxqjPr/.cn,DٿOZLz^_23$Y[&O=Ѕ$d{sHɹѠ9`Isb&&T@7mfp~4t?)B)6@4w *ьI)'MƘ2qJ0bI8E1Qb` {19ޝϓkҩr<RZO9[fF>qdel裏>CHasqr-A>fݠXnGI|\9ڭh:a! 25Ԫ7.Fer;Bb,?6M؜Wl:J'Sfe圴vu:#v,;]͡&{1K`W: ku7mɂݤ J`V?YZd&e΅43:B(טcBSA+k{o{ޖ96*&,]gox0 S-["ĬZP#:j0DȵhѢ`W_}7!d/LO,SQәX^̡L1č_,$1 383;1m۶ y :jbKݖ l2pv|[\δ{vʧR%)*-dL pRf"ns3|\mi5ٓ_zɞheOp4-j<Dl'R=v`Q=39j}ӝ#qJJE Y-=H<c,P7/+071͛73PS/`PD]y}vD'u]w5uEIU4xꭷNo<OW'>d 3zEevZb.v ⏓N:K.ٴiӮ] @xފJҥK fJREug]Gɳjfdl1:+3>,jQD(t7x:[T2GC[ڍu4UGnLlBO{AL]Η|3/)5ztٳJI:ͮBNOVq{0ݩ00μJÂ;nqj)g!|{P$bJ 1_s( a(+ap/ (Axap/ (Axap/ jX(     Chart Excel.Chart.80*Microsoft Excel Chart./ 0`DArialans ll-ԥ0B 0"DTimes New Romanԥ0B 0 DWingdingsRomanԥ0B 00DCourier Newmanԥ0B 01@DMath C Newmanԥ0B 0PDSymbol Newmanԥ0B 0`DMath B Newmanԥ0B 0pDGill Sans Ultra Bold0B 0"@0.  @n?" dd@  @@``_ camera.wav.WAV 140105RIFFWAVEfmt ++datah||||||||||||||||||||||||||||||||||||||||x|x|||x|tx||||xx|||xx|||||x|x||||||x|xx|t||||cgxkxxt|x|t|ttxxox||xxto||xt||t|x||t||oxkxx|xo|||ttt|ox||ot||xx|xot|||x|x||xt|xx|xx|t||xtxx|x||t||||||x|t||||ttxx|xt|x|ox|o||x||t|oxxot|t|o|xxx||||x|x||t|||||||||x||xxtxt|xxx|xx|xx||t||xxt|x|||xtxxxx|||||t||xx|||t|xx|xx|xox||||xxox|x|||xxxxt|x|xxt|||||xokkgWto|tk||t_|kxot|x|o|x|||xx|x||xo|x|xx|x|xtx|otxx|xx|||tx||||||xxoxo|t||ktxxx|xttto|t|k|||x|||oxo||txoto|x|xx||xkk|t||||xx|t|xxto|x|kt||||xtt|||||||xxx|ttxtxx|||c|k|||xtxxtxx|x|x|||x||||||x||||xxo|g|x||x|||xt|||||||||||x||||||x||||||x|x||x||||||xxx|o[ooBtWt™F_gtBW|gJcttFtogotxgoo|xo|x|||ox|xxx|xxx||x|||||||x|xx|x|||||x|x|x||x|x||x||||xx||||tkt_|o|tk_xNƀ)JۀgtgSk FB%||>gc:ΑtSx)k[[>xk_xx[[cSco[ookc_ooƀkx|So||gxxg|tc|to[|kct|totkgo|oooo||ktt|txtxk||||||xx|xx|txt|||t|||||x||||xx||||||||||x|||||x||tx|||||||x|txtxx|||||x||xxxt|||||t|||xx||||||xx|x||||x||||||xox||o|gc||tok||ttotxx|t|x|xx||o|x|||x|txx||x||xxxxx||||||xxx|x||||||||x||||||||||||||||||||||tx|x||txt||xx|x|xxxxxxx|||||xxxxx|||x||||||x|||toxxxxg|ox|ott|c|x|ox|tt||||||||xtt|||||||||||||||||x|||x|txxx|xx|||x||x||||||||||x|||||x|x||xx||||||||x|||||||||||||||||x||||||||||||||||||x||||||x||||||||||||x|x||xxx|x||||||||x|||x|||xx|||tx||||ot|o|x||xt||xtt|||||||||||||||xx||||xxtxx|||||||x|||txx|xxxxx|txxt||t|x||xx||||||xx|xxx|||xxx|xtx|t||||x|||||||||x|||||x|xt|xxxtx|x|x|xx||||||xxxx||xxxt|xx|xtx|t|xxt|x|x|txx||x|||xx||x|x||||||||x|x|||t|txx|xt|t|txx|t||xxx||x|x||xx|t|x||x||x|x||x|t||txttx|t||xt||x||||xxxx|xttx|t|txx|||x|t|x|||||x|||x|||x||txto|x|x||txx|||xx|xx|x||xox|tt||x|x||x|tt|||||x|x||x|x||x|tt||tot||x|t|x||||||x|||||xx||t||xx||x|xo||ttx||x||||x|x||x|||xxt|ox|xtxx|||txx|||tt||x|||o||t|t|xtxxx|||xxo||xt|x|xtkkkot|x|t||||x|||||x|||xx||x|x||x|||ttxxx|Nktg|gocxo|o|ttgt|xxxxt|t||x||x|txx|x||xx|||xt|||x|x|||||||tt|||||t|x|||||xt|t|x|x|tx||t||x||ox|ttxt|xtot|g|xt|||||xxx|||||xtxx||t|t|x|xx||||||||x|||t|||xt|||tx||x|ttttxt|x||||t|x|xo||tx||txxx||x|||t||||x|||xxxtt||||xt|x||xxxxxx|tt|o|gxt||tg|txx||tkkFokx_toc|tot||cxxoo|xxtxoo|kx|xktx||ot|txx|x|||x|txxkt|xtxxt|xtktt|t|xxxxxxx|xk||t||x||||x|xttot|xoto|oxxtoxx||xxx|t|x|txx|x||xxt|o|||kxxx||x|x|||t|||x|||xxkxttxxxxk||xtox|xx|xtt||t|txx|t||x||x|xtcߌƑct__|SWo|Nott[_t|gokx|tkxgtttcokkxxxxgc||||xxt|||x|x|xtxxx||||tt||x||||x||x|||||||||x|||xx||||x||||||||||x|||||||||||||||||xx|||||||||||||||||||||||||||||||||x||||||x|||||xx||||||||x|||||||||||||||||||||||||||||||x|||||x|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||x|||||xx|||||||x||||||||||||||||||||||||||xx||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| chimes.wav.WAV 250106RIFFWAVEfmt "V"Vfactdata{~x~{}}{|{{|}||v|ww|}|w}u}|w{yzx}y~w{}uuz}{~z}yv|zyytvuyxyuv}xwu~}|{}~xw|yt~v}yryuuz{}{~}~v}w|x|~t|sy|i|pieyptrzwvu{x{t~{x}|urtr|x|}zt~|rsu~{~}|~y~}xu{~{y}wyxu}ivw{|{xysrqkvkrqpm|k{x}o}pu|ztp~vv}}~}uvw~txw|k}tuw}z{x|q}yv{z}|y~q{ppymvqsp}ow~uxx{nx{ivwgwslxzo|zz}||~wt{y{}}|{xwvzqtxpxws}vz{v{~q~|t~}v{{wwjyye{okympyutx~|}{x{t{twyqu{}{|{~wx}t{zw~|}~z|uuzkzsl{os{ut~w~xus~vy~u{|y}~zwypvnsonvhwpqzt{{|}}w{}sz{w}~~w~t{|zo~ovxry~w~|xtzt|rwvrzr|wz|~}~ywoysx|z|v|xtvtntslypuwwyzvu|yy|w}}zz~v}zr|ptvoynytt~t~}||vytuys|{|~|zzw|u{vy{y~}}~tyrpv{ozuwyy{|~}~}}yy}{ywzyvuvzrtxqs{lzxqv|~~|}z{~~}}vuwn}yuzzyyz}~{}yzw||sv~x~{zz{{w~uyx|}z~}wz{tx{o|uszyu|~sw}x{}~|~}{y{|u}{wy~pxzvqwz~vu{{}uvvsmveOOVOhx^]~jsschqf_^mv|l|c~t[y~vfl}zzf}}|~rq|ui{{ld|t}]~rrXxtagjnssjs}r`fqv|vjmyroyu{m\ylflxqhxgV}jXk|^fzzRttou|jnnusptipravx~ik{mtmZnwj`poaf}qanx{Txhvnytw~`ppxuxulrSzumyikyatwiLvgdX]sg]j}{wl|[Vopyi|ocv\f|stX^e~kikgsuMnzpwcrvxV|}yO`ec~ebrdoYw}Xz`kig[swgkdm{\RCjysybb|~_fhz_kdwTpzt_hqbwiXabvNnzkSzro[jyxDypg{^zsuU_Z_zjbTzdwfvgc__\xvaevjfQ~PV|wawYfWclp^ovOy~zgcwakq^cimRt{{}]nuV}m{oLs~z_przi`gjkxv{qRwfe|suyaq~e|qy~n[ooya{cQ|q]cysXvw[hz|Vr|g~rqgi~}szejsUpzjgqzVjrunen`usyq|i_~z{^V{hTyf[v~^fmwsrsLxtV[hKesOvbvpSfgmumrZpol}}ulpuoqkijpwxrylk}mxtrgg~oitkyrXeg~T}syHuyZbw}i_p}nXrYflYl~dmvf||kUtqVln]tkrw~sl~vyvonmqpy|y{lq|nqtxueocdoUdfZptTk}|ZlqlvmsSk~b]jYmqtnlr]g{Ucj~Rm}\{vlkzzmuwuuy{my}qqzkv}yzn|re|zs}o}tas~n_wneraqp|`\uceih^p]i{o~cquzsizko{`hlZzmVr|\}lywkqyrto{pt||wxv{spr~uzuponzyzvhzuqvizx~hospt~[rtWoZ]qZ{qlwtl{tbpeile}nzndkfd~{tmwj{}rju}uoy~}uvzwwa}pmzvu~pnvmt{t|pzy}vpstmlpZn\Zpy`yty{jr}~lxq}wydrtqghnZrsrlwjbyr\xxpkvqn~tjfu_mks{vvo}ypquqrxw{orpxu~gp[{sxjaq{jruzpkj_pnyr{^qYlgqpwsflvSsijl~gp~d`v_rwjo~b~|j|zzsotzk~pwammimsofw|lneyywgwk`kxeYocnt{utz[w^r}se}~uk}quXw]zbxnxo_x}rasxly~sy{wo~tqwynv}|{oznxzcxfr{w~jvqv~`{xRsdc}l|rextlovf{skwi~nmy_xywja|ohXlgxqw{}sszsshunttsuvwi}zprypx}flecfXvvihroq{jrt}vrk~{i}nzg{{hvooUd^e\txzkux{{rvnqgs}v}mky~wzum~~}w{|~i|i_z}Zofy}habZs}mo|~|nyst~u\ktvuizn`~rwhhb^mswlym{x{}l~yv~ftyqkpq|tu{r~l{ly~nz|vqvugg|gyimtzpemu}f|{nztnkhc}fmbluum`crfc}spz`lzx~xl{x~wo|yy}xylrwx~o|xz{w{~oyn|yhr{demzr_btr_sx{]hu`sujyu_{`jqdtvnyvws}l}mxufoytrjx{t|wnt||wnw{{{}~uopo~o~w}|}rrvn}wewn~rm|oneunpv`id{tze_jky{x_qrtu}owgrjflk~dxt|vutx{usxr}pwy}{xnz}remroqgigux~tz[qmnba|e{g`h\tlymbbx_rsylzg]o]gi{quemhn{~t{x~tz~|rts~y{p{rujm}otrm}smptrygpnxnha}ofrlstklxvs{ryun|f`ouhzk_{img~ukvtl~vuw|yztq}pz||}wtsurvxysqkhnq{~wnr|us}jYnalymmys|zxu{lslc[}kxq{gq}iymp|p_memgzom{|v|~z~}ztsow}v|txgy}py}mz|}muu||lmuho_}utypr~uzryqsu`gi[kslrowtzgrzmkvb[s~d|vfvp~v~uvztsnqmyxxsztp~u~z~u|w|~xnzynopluus|l~|~t{{ozomwacdbvntuqww|{rtwlnbdZu{qnvh{wzvjv}g}raotly~l}~~{y}yxqrv|w}owxvhlyy|z|vq{}~zx~qyv{xnse[lvkuqp~}gqd{bca_xnx~yxt{q}u~qujfWmclmzzyzt|zs|{ryljtnt}}nrousx~~~wzyg}owvoi~mb}vS^ggdz{re\mxWXxukaq}ibyrwqhnlM_r~f}tqmp|x|r}wl}bijl~n~bywrtuzwelVspdg~sszxrhzmzyptnvbepw~u}~h{fejpwxsqy^Wcpsy|}y[ljvdx}~yu~_yvww{qpr]tx^dztvyrl~wio|eimrtwnn`rhz~~xvswelr~wozgdGxm^x]ryygVknnyzrgfhubh}}rucws|l~~h[rjS[|nozyy~|ipoyhyybzvi}ilYp^rty}pltoqbO|a]zde~wyghlxruwfZswUmsvtyasoq{|qa|e[{VyZnb|ttnrrqhsktqfzxcz{jovow{sugrZQlOqquzqfrrw}qjvqgg|tx~jszWh{tqkwogTcnws{~~nvuutpwxru~g}sk~wgmffpwgmxv|~~r}yffyejcqqwrow|vpszzzt~~~|~s|~xlq\fygojywd~dfxtkwysfpf^ozzshy}i~x}{mrlkh_zm|{om}~zgzmy}{~tqhytmry}}rzu}}tzuqqgThoon{nq{ziuizy{qz}tyyt{vxlrxiozdzx^durlus~w{qowmzw{~|}{{}uw~znnvqow`]~tpyxxyqkhk|tx~zzv|zr~zuy{o{ylijcxpn}klruy~qzpr{xz}}{y{u|{~y|ttvyuygfwwsuph|zmryt~otivw}{}{szu}}v~~ovwswvbf|n|pvqw{q|rhop~n~zv{|utv|vwwxysscjspjivzx{xv~~nrfrkvxx~yx{xt{h~s~rqngpsxlptxqpytpymgyzv{}|y{|z|~x{y|t}vt{mdtpx|stmppsyuuyt{~t~|{|w{yuyxzvxmu`oqrynvsqurtft}v~}|}x~{{u|xzi{atsnl}uvxn~garl{w}wv{zw~v}yv}x}usws~wvxto|~p|xwv{jdw}izwzz}}~prwzrwurornwz|i{{b]gt|m~|h`yxkvrs~xr|xzy}s{qtyuup{}{swztqxwxx|zzzs{{s{z{|oy~yn}p~|pqzxz{{ryozuj|qtw~ppo||svu|uuq{eue{st{z}nqymnbnpy}~qv{o|ru}n~ry|{z~zxzz|s}zu}uzmlXsi}v}yvzmpvtoy~}yty|x{|u~spwztls|qxzn~qv}sw|zw~uwtvxuyx|y}{}{}p}vys}tunkqzr}zyzztyzt}z}yw~t~wplzv~}}u{}m~tkrvu}z{vtr{xsuty||zs|kf{qpsnysrzlowuvvtzlpzntyiq|z|}}~x~yy~zy|szittkt_otr{~|j~sk{j}pvn|}sxx|sw}|{yvrynx|xvwt|wwzw{~yp}rz{t{y{z~|{vyto|v}utq{}lrnuzx~zvzuputuvqwizwzx~rtv}nq|wuvx~tx~}zy{s~t|uw}zt~|vrwzs}zpoy{o}{nmhcfl|fwuy}rri{mve}yfvu|xye}yf~pp~~yx{vxvi}|h~{ixl}j{~jvktu{x}y|~{zxt}lqvzyz}n~}gjrwrxy~~r~gik~iqtkq{zo~zt[L~fO~ndnv}jzyql{}|jo|n~zuyl{zml}vo}urt|p{zehwvz|y~r}xzq|ywzys~}tz|zt}npvsww|w}vt}ypjmu{u}qy{~|||g{k}l}{wq}wt|tktr||~x~tukrfmc{zfho~pzypzmuxufpqpxiuxwbxdtssy}y{lwhyk~usuvvx~}p}p{pz|xx{zs~~i{j{tuqhymvkqsss|s~yt{~ts{`rsitkwpswp}zm~r}|vw|rnvrus{pdllx~ztqa{k}z|~|~zlse{rwqtoxwlyusw}{t}sqorsn{uoh|vv}nhamk{s{w|t{q~o|msvh~tp{vxwxmys~x~tymtwxx~|xvxysx}|~x~z}ttl|}z}qr|ystyw}u{yzt|~pt~{ryoxynxq}~|}{|st|xwqnmyqzw|tp{v}d|}btrsty^ruipn{l{rxoz}s~rvnzrtx|w|~wuivtn{||{~wy~oiqvk|znwxtu{~wyn}|fqkz|ysx}qyp{sz|~wyrmgrn{|w{xloetwzvux{upxq{uxu}~wq|nsss{~|ueqrk~|gznol{px~uurvykur}{{{v~mut|qm}}wetsvpzsuwtfrl}kxk{ynung{}x~pw|pa|k||}oxmpxocr}z~wytqpz~wpl}}sxj|ojhu}u}{jxhrppf}rzdrwswboxmxphrfqzuz}is||qmn}wmp{evxyerz~vqh}vfqxrjq{zqxruw[vnzfpfpitux|tqv|ynimgl}xkqsvZfkrovzybw{utmvzpyzrh~~i{ttve{ygymbYz}cm]x|`memy]]z~|mp^|`kpez~zutxpuyxhzy|}|}|ylyg~uzu`}tv`rm_hwvl_|v{]dmyn_ppsvdbxu`lmipgndttfotsg{uvty}yw}zyqp|wqmwz{_sykcfokal|sp^fadisykiknrx\nxqqqnp_vl}m|pyvx{zuosrtz||dkwjmdwf|htzdnnnmksvz]mgrqppxjhvxokr{}ywl}oxvunxoz~y~zwv|syzvxwyayeulrkylwt`mrqhtr|joqxm~ty~qvswstx~ujpwytm~|vv~t~uw|kyz~|axyhoxnsr{tptvy~hpzzsrnylrmro}vx~nxw~wu|v~ux{~}ytz}l|{{~vuv~v|vmwwwntvlwj{xerzfx~{{r{uzzpy{w}wz{kqu|}z||w|mwx{zssqvzypzszyvp[tvrsmvz{r}ywmvzohgb|ezpvUllsnwcum\vnyxo_L|puccIwbok~lzphgbwp\fRqnpve~u~mtdq{|oiWepmfuklfsy|}vzrnlrpvsejcesyxpdenjyzy|y~dn\frx|e_biywq~rwysynu{|qba_tw}k]jfmo~z{~kxktnrqt|mtVeZtvfjhv}xwuxw{~qrnk~}mm[hsxap`~j|n}prljcmanpr]m`lyxhxk{ej{u}nbjefxhg]h|zyxuz{xzzgrlt~wapYro~{yjupnwp|wy}mpujp{yyquwmqzyo|}ytty}puzbxewzcpk}|tz|u}on|pts}mowruzw}z}utsyqku}|xo}unywz{ssv||b|ssvu}w~yrxmpwryors}~qs~sxw}sl}{r}ltyn}znyrzqrkp}x{zpp}p{rszym{vmlxq{ysu{g|qt}nwwtx|zl~xz|j|tj|zpb|}}s~~|}yrp}{w~hvn|p|wjj{sux|nz|q|w~syn{|}~gdxu`qzo}yks}p}kyxxtv||vt~uxs}|outwkhVs`^NqbnewqiyYlQrwa~Yz[fvkgxt{vjx_[wsppu|prZ{d~sw}tt|rv|vlv}tmkbx`n}vbrizs|u|xiwzJ~O\\mqvlpoohr_ipWR{hpyuZhNwQVf\nbplonjsiy|n~fiytydwz~h|ad[SbJDOAv]rezkHj1t3izTzbyG~kZ~^ar@dSq:rhc^a[Av{|htxUph}pIWhGg}~|bnzkw]z~wxzbepwsiD_Xhumke_r_o_~x/l,oC|\ucdvYeu9q@kMr|m_}lizfxreXrnqqu}h_aK]WMraSCiR^uvtciW1CiJ`^tEtv{^Y~a|pNfpJvY~i]a*ZbX{qwdnpp8Ej5lFObmpW`t{h~lddroqStow@4\DeRyO\fsowyXkUn8pZWmSfsYmgb@zblSen[Smp]&g8N uG^roGoEpzQX=S]Iv{J^ku_zRRygb~~gk}we;sA=;c;2R__^iu_dbh0sOUEnzxZwU\pejyspjLgc\`ITawa+r1cp_iqfmJTb0~IRbtqaS{}jtJ~~y|xtggotSUXm0gmwIr}trYczpGvq]yEs^b[}v}CbJ[kxZvZXYYf5izcic|z|_]wrj`kh{uVzULGw]cuy[i|OwpX8\\GT{tZ^wo~r[tv[^guDqZOUrqK{ymfp[bnaFdk]Svuvs{[ps|gg|rgn}||~mitea^`y`|zy~u}\ivyengVk|xx|sQYyrfc|gY}ywx{zLoidSxRetzsVj`w~^{e|uUmviFggRYws]\meubs{}prs|osMl}}cju}huW{WYw|v{t|xvumlirusQwNP4dEX]p^JnmXwukEOvE^wakMqeWadgWso~iyKpSohyxxhxrUn}pqappZvm`yisalnLacWojmZahtt}Vsut}to}|o{|yyieby}ke~{pvw`n}\nm{vmouq\js{bf~dkje|UvZYbzen}v[_|zl}toyAUb[fyjuvGYtvf~Ux[}yfXy]ba}ewk\L_}ptaxhukr~i[S~sezNVoIqLusdwoeqPwLNgLvIqiaYik~`o`prhi|iK~Gkat{bsdTWwqf>m@}|SRv}XLyV|jizYViYwy}t{oxZvtRx^[{TeR{=uMsohV|zPyXbe]WIY[z`xwd{az[a^jp]ypo{tNOpjcwRs~d}mqyglvp~vrncbe}|avsL@}[|rjOyJ~fabjlld|Yw\mrr]e_ee`hznkpej[XaTlZ{rb`qSYvbP^nmu~|qwtksdysmxufdherl}S<}UNzSeqv\cuxvk~tih~}`~Qm\{pgq]p{ll~ps]tDie8H[oKp^vy\Ae4kTrwcyt|vvtf~y`Lt_O3^Q={;Kewbb[yIiIDVRriav\peqzy^`dI*vjTyBt~j>MwQK\grxnri{jhgknmGKEZ?g[s}p|IufyD~usnj^zw mTDp`b|{etzPOWS_ezI{yg2fCvVi|mb(Xo~mQ[t3U`\yk]tuPVGntbXfPx<_jj7-YT`iDlY(}rJg{k:Mkf~(jZnvZcPm][7^k*dF\Qxa=oORpWyj3ftk}a`nijSixuyd}{Xg~gtVpFvb@d|P|n{uR hu-M|{KpmOnxi}^K^csgsvtOWl{\dFYIzkllL}W;hfcvmlUWMaLtKMh\1wA@ggSA^`O|abqjoHbtaZl_UyRSvmn+5`doj9ifl>v{~VsLd\qAzQOinLh~jfQq`xrMAb?db5Yz~L8xaT{DjZ-xF~*@vknt`sals|}~q{~vxj`q{iN|{xekf]hbvV6zw-;~fXvW{)ȅE_Xcs~F5d9T|vPwf\8sgvN7cL]~>h\KYtb|eoh,C`wsVW}VlFuQRGzEMF"JRj|~l|QofnX|be]]IRI9+Vjh_gspBntnM%ā@ P<:vWc\R|^~>_| ^bGo{Pfk;x~xik_Jeu>(cD}916Btxcykd&!jGwXQD8~emR^x[kvShZ@I^&`euOklBYE*9\y2OYo^~h]Myth0nhnWijv}xfbtiY`uoOi^fOjhZ^h\i*t"6M.\eO/Sq|lhWul[S]Dt~l}0hhrWu|zsdgj_LF)E@Qo2WU}P4[b$aq:t[nL`d~pci{S_yv|9lRMOOtj=h}dJLU}dkyeJ628jshlz^*f}yXDBAqbKSp|cTjsjehZRzdKd=]DE~Z)LmwxV/'P_.@bnQL8DPZikjQF;HS[+V`fdruz{ngu}Pi}bJGW(J_W{~UF?Ī?Zdg8~xC-wo\w`xnv-c0ewz]~~yyZRao\p}t~|AktbPyl#{\X6Pu?ltdv2^|Goka[C^imvyklcfn`P~eWawScXo~6g}NǂCwzq([t-\vok}nkXf^~{~zv[yV9Nix~zgNoon]M|p`bNs;}jtMZYux~iQ\p\yQ|_c}|ba~\t_D~G]{pk;MpQCpldt~ri7sq[r[kex]h{TiT>_R{]tX:x#[z{UT{ne{Lb_qnrcnPChl^rr^zYiKzLS}xomilPz\xh[cVWWt7|h`~gkrku^^XxRiygl)rtWrfy{]rLyx`YnCNyWKrR~Tyzlxr]jvsTlsbZ{pnwG~](ip{rw0zjxQ{`xQKv~frc^}fu[o~r}ndooLBz_~s^}bTuJ[{=NRL~}qfy\~`rLs{urjmmjvbkzeVvh}\rlAwsX[exPTibplL~Yigrpsjgim{]vpgoDmmfwxiRRpxS.}hwvg`geS~t`uayoyh{~wnn]{|_imgSxWvegr~T|tkm^Y}h84C9fm\~k^jwa}ofw}lBtsSa|v|jgvhieFqnga]pkt}YC|L_zopTuk^dY~snPQGe}wbxZsdQvwifsP`k\djgmvRgMew_~yyp|j`qtoznyvsp}kjuWmq\KBsiZuDO(bcjxYkv}slhkWj[g{zdy^xnhzLVs`[}yaRwUcny`zrbotq}Xv{zwWus_W|J\wprfqrdnTMzev`htkwhos]zLk{jkm^nxx|mfUgqnTobwjiQwdt{Jtfrruvl]apwg[cqk{gu{YlrpjW~u\b!jQuo_z|ptj|rpsejXvQde`cnd_pOyzYavugb|qmpyo}Wtxy\gcu_c{^iqns|[hpLvttPorhkLsvYbMlOej~b^i~v`htvxw{v{{tf{t\{u~Q|lb;]D|mo}XPkoul}udxfgV~x{wqkkkr^df_bslypz}b~r{Nl{n`x`?s[>uePp{ewi`e`sv\vPuj}u~tg~ouxvqwu~gwzj|oun~jcjr|TAuShP:[Yksdgv{vn~k{xu}htgxngugvmptqroykwLkmdr^yhRdpQt}eYsM\pwajvMl{ddyYlo}kl}fv\|X~qrjyu{d_zn_o}y_dws|sauxx}hSSQaLsnYvjv_x}{znvs_Z|jXoy]mk{mvrknsnwyUy^yg|`T`}sglnuUspYasesXUSZ}t{fzpdwnygbsnagsws|kyfhp}nsjtktxp~iwco~xov_GcrW{d}VPq}jrxwqyp~o{nnvzmsiflpshpnclkuZpszyYZV[}w}j|ho_o}^jq\he[pssqolya^}xtgucsksxhrhXmisi|who|syv|dmgusl^lpxpYs|v\T^dxk}hxh|izsvzz]xs~[wiy~itkxi~[b_Wiwgmwv|{qjrVg~urpxxvsaY{ljenf`{muxXbkRw~y}{wzr{z{swrrqzmzt}ocliy}tZZ|ru]=[Zdkn]ujvkh~{sxtmuuov{eyc}ubonynU~`vzpQdri\ufxt}rm}piww||tu|owd|rYdvhr|e`hTdirxqa~]zfr}_qpvgqvkgzy{r~drtubjvrXdsXOsw}W}Qv]upwt{akr{_xp|rcpu~vlz~vw~sx^Uwhkxnf`{z_`tr}{j{t|mwql|wepqfUv}Z[s`bo{{w~kmlrjQp{kT}|kS`_Y~o_zizomi|trqtLVyqfkxksl`t[hsv|{m|r~hylxzdu{qwtpuuzzo~ptj\loy`In|W\_r~pgm{~w|}qrnwtjnry{hokXvmiljyKK`U~tb_owwmzsv|riscs_f{Zytngmniryqngstebum|jh{vxyx~|ypoh_{mjkbpfam|kqmg{zeciwl}ay`n]itkvq}yiw|jkio|o`Wxk[o}qWbedquaycuhn{kq~poqz}{xrshz]giYzqdk~zdclzjho}q}ni^r}gutzbzqPZu~Whv|{W~ouvjktqscoayW`rxipir|c^~uhcxsg[kzsovjiw|hw~w}so^j|jnx}sq|rx~vomreiRZzw{^f`dYyj{nyYixt\^ntle|mzgyonkryxw_]zmRf~c}bpg|dj`~ta~zs{zt{squwv{tsx}wmzilkhovk}qswtNa~\Wm|znwxhr}frxrqmr}qd~lz}_bc\\rvf{j~wWtl~~keucj]v{hybe}tm}suap]cuudlwors|zqfiu~z{uux~|py}sp~{o{ssuxqoqtgWvi\d}umnnqzzbcqx}ius|dhyv}^cy}ohpgwwomrvq|s\m{Xbr|^]y~{prwvuusxirwl_xmeqqjl}fdxvp|on{{kwswtgwv~}k~n{zyrkcwu~gmkyyzmydw{w[]`Qtri{[ookjpvwipvz~|ssufSl]Zxrpts|tizkvhT~w}|p|}{zxyoo}}stxumome}rszsh~rjZq~dxl{srutpfrsg{o~i|~}ijzzV_kxc{yzu]xpeXqaauqfrv~wbjwwwwx|oyrn{zrj_vj`~i^ke~n|w~wk}xl~}{|y{{xxzej}l`j}i{sycsvw|fxe~vXcwlpk{ytrwylruanqtmiovjo|cfxbqmrvmqzr|ppt}}}vgzvir{yzpjn_e^}kzi`bxMszbt{tbpzs~qfmwrzwvuxnu|d{nn}uku{qb}kuk{[~hpsvw{o`q{tiyl~onnzo^jfwwjtc}aomttcmuuksnuw|}fzqw~x{|wwhz|w|whzkql|qd~vxQk{gsskhpq_[ywrynyygvzofiipuk|grxfs~hkwvk~xv]p{ntory|e|~|{fu{|||p~yjyh`tnlg|s~wgr}ptoxxz{two}or~vou|w{qsy|~~jvl{h~kh[vmfxs{{quxVwlxzrnx~h}vm{u|pi}ogxxo|vhyit|la|nry~zyu~lsurrg~}itq}unvjn~xsq{so|{|jhr{m~xpyp~||l{qvomvzlut|swzfret}v{pt}mt~|spp}x|tuwuxwk{}inopu~~hruhwyosqpy~}~xmsvustx{trnrp~pwzpvskyuu~ezuzoevtl~wj~wz~|vywzqv|z{r}_m}vvy|ts}xzzzzxvst{w~rn~vxyzwwszzhyzsswpi}ht{xm}~mo}l}ut_}{q}utzt{xtr}m|w{yryouhoqzrngzsju{u~q~xz|~{lxhk|uzsvr|t~e}~w~ntvuy}x{|xvvww{v~uiu{wz~wspnkcvstx{xs|}}|o{t}||smt{rovj~{vxth^xqmzwo~{ow~v~Wuz{p}rp{wudiqwtbzk~wz~x}qr|vvu|qxxq|zty{|zhxx|uu|Z{p~kxw}||twquq}xpuou\z|v`ncuxhxxqrszy~xsw|iiqwyzlzrtt}votlz~zvyty|ot|yksybekv{s{ow~crxuzl^~}uqsxzcoyhn^{tYpkytZYhd~v}ogzi{s{Z}gumwr{tvov{hYt}bwwursb{fi\y~vsif~pyy}x|tvukstxclp{uxswwm{{~|q~OgZgtn{uv|~_rx{sc_|j~ttx~pjriqvorhz~qlvno~w~wxjndxslynnuu}mq}lfynp}w{uup}qX[{kv~{}_k~zp[}ba}kajt|}rmp_fpnr}w{w||~nyljrwrsxqtm~~v{|{{l}h{sxZ~lkzuytwexngoewszv|u{l|wl|gwii{_rt{cluehdr{{z{kjvn|wqypxny}}qjxpcw|iqsz}uzupv{vvhfuuh{ryvzjovouvk{jtwt~paxek``v}loidnrmys{xyxwmt{u~ev{p|muxjlypv}xy{pz}~tux{sn{zzy~xxsu}u}oznpsxx~|zzn}g{aU}rwr~ras{qklus{sssnlnpqmZ~|rs|yovtl~as}|xhpa}x~{z}~rx{yeq|wu{{}pczwyoo{uklw}pivmn`{qtvxt}t{pwtvurqVw~n{mrwtn|su|r{{{q{wp~uuuzfqwzttzyqx|~~q~rzvrr}xsbptq}r{p}q^oztvrnx{}wtz{xucd{mrxq{wvoy|pmnuxrjzrruz{vkqvjqt~{~w~x}~yesp`yty~wpuq|wxrkrr}u~h|x{uf~qmstqm|||xmuyvzhm{|}{itsqckyzor~{~|_}}znu}{v~tgsv}yqjttwcy}x|v~s|qs_mv}is~~x|wu}ylonhqo}}v|{q~oyil~vsiz~uy{{t|ps{{}uuyyz~|dpr|qhy~}}rxzn|~pv|sk~z{~mxwnzqxu~szjnsclxwrqzcsybjmwy|w{rknxzx|yxz~uwqt~{~zq~rwznvzzs{~o|~~|syrv{p}||x}|zl}vjvn~{y~w|wmwsmsk{mouzvmq}ryxsty}u|zvz}suztv{xv}~w||~tp{qk}xi}stww}v{uwt}~|vmzs~u~|squwzkt{{bly~~mo~n||}zor|jxt{zxruxq~vq{}||u|{m}|~}s~o}p}|ypvpu}|~}uw{oyu~ww|~{txxn~j{sp|tqr|zvueeps{t}xns{x}{h~}{|~v|vx^zuvw}uu|uz~~t~ytznz}{qs}xxx~{wymh{v~}uoxyvop~~yjzyw~k}}j}qtw{|rp|z~vovz{zrw|z~zynvzt}zwyr}{sxrxwz~zx{xxyxtyqqs}z||u~llqqy|}q~}r~rsyj|x{ntz~yux~wytor~yzvv{}w~w{}w}u|{~kn{{yw|yo|z}vrz{x~}~wxyttswxy{ih|n{xmzjp|m}z|q|nuz|~u{}wzqp{zy]nwpqwtmonrxptlkjwqmziq{rm|~~|}wm|qpzuylkwsg{kv}mrwwc|vwxjzzm{x}~tovvxtyuw|zewx{w|}z~zwxt{}~zuwv{w|vntrxwz~|{~sxu|xxrz|y~|xkruvuwz}{z~w~}~~y{{zup~zuv~}x~rts}|rwxzrq|xxsw|{z|~vy~zwt||}ronsyyw|~yt{~ztzx~vt}{~vvzq{ysvvyrxs{vy}~{wv{ql|s~|y}z~~~z~|w{zy~~{w}u|}|}pyywv|x{yy{z~yvz}xp|n{~rqwi|ipxz~{}{~su}w~|w}sw}z~tx{yx|u~xt}|tyy|~}z~~zy|}y|w{ww{}}~~}yxsy~x{y|oxvy}}y}kr{ywt}z}|}xq|}~|{|wy|}uqx~rrv}|~xu}yyx|~w{t|{|}zxy{|svuvzq|y{z}{{|uu}z}w~zrs}~|q|r|qxx|tz}y~}y|~yt||yzp~{~|x{z~w{yvyy{yzsy}n{~~v}sz~r}u|wuzzxwtu}}~wu~u}{~q{yow~{v}x~v~qq}~z||zx}zvy|y~zy||z~~y|}y|u|z{ztvx~zyw|z}~}{~{y|~xys~xvvx|x|ww~z|~stt|y~t~}yz~}}zxx{w}z~w}yz~xzty~}}vvzz}tyv|x~zyt{|rtyzrz|xuwzy{~~r}{~{zy}x~|}}|w~}x{|ww}~|~{x|}~|{|wyvu~~x~v{}}~{|}uy|x{{}|{t|~p}yz~z}vun}xuqz{~z}{z}yw{z}y~y|x{{|}~}{|}z{}}uxz|z{{yqp|xuztu{~rw}u}~}x{|t~~wy|~}z~{zzy~|v|~|}~{}u|z{p}{}z|{~~~|y}wtxyy{~zyy|w}v|rx{~t~wsv~{}s~vx~pwrxv{|wz{~~q~uwy|x{zz|vz|}||y~t{}~y}yv{|zu}~twry}}{|z|u}v{yw|wxsx|}{xu~}y{||~{|x}{uvz~tw~twz|~{{sw}|~~{{wtxs|txy~z}~yssrztzww~w~}yz}|u}~|vu~zwvoy~v}yx{||y{xyz}|v~z||vwswyw}ww~x|zw{wz{y{uzwv}q}{wwvt|qwyu}}{zz~{y~xxz~~~~~{z{|{}{~yyw|zz|yyy|~{|{z|}|yu~wxwx}||{~|xwvwwy}sv~z}|xxv}wy|s|zy{~{~y~|w~zx~z}||}~~{xw}{|z|~z|~z}z{zv~~x}zvzvxx}x~}}}zxyuvw}z}|}|~}}y}y|}|yz|{z}x}w{zwx~{}y|wuzzz}y|{}{{yy~y~{}v|z{}|}~{y~}~~}}~}|~y}v~|~}|wx}{}~{|~{zxyxzzy|}u}~}x~|}~}xyzuz~}~~{~}~z}|}~~zz||y{z~|z|{~x{{{|}|zut}u|w}z~}|~zz}zw|{}~}}|y}~{~}|~~yrz~xz~}wyv~wz{}|~~y{wt~zyw~wz~}|r{{{z}sw~xzyy{~}x~y~}}xxv{~x{uww~~|~y~v||sxxv{|yy}y}~}|v|~}s{xux|{{y||~|}}z|||~x|}z}{~~}}zx~}}}}~|y}{|y|}zv{|~|}|z{{w|z}|yv||u{~|~{x{yz~y~}zzwzyz|~|}~y}|{xwzy{|}y~{~~}z}~v}z{|~~}}zy}~~~}||~{{}y{z~{~{y~|~||~}|y||vzy~{{~{~}|z}~|x~{~|~{~{}{{|}{~~~~~|~}xzx~}}~~|v|z{}~~~~~|x~|v}~{}~}~{|~y~~~yz|}zz|}y~~{|}~}~|}}|z|}y}{}}~~~y}~|{z|{}{y~y{~|~|||}{y||||{||}z|{|}|~~|~}|}}|{|{~~}{|~y|||~~zz}{{~~~~~}v|z~|~{y~~z}|}}{}~|x~}}}~z{z~}~||z{|w}}|~}~w{z{~{{~|~~~~}{{|z}}yy~yy~|y}~{~|~~~{z{}~}}|~}y~|zy|}~~~z{{z~}~{~||~|}~|{}|}~~~{|~~{~|~}~~~~||}~~z}{z}||}~}~~yy}}}~~|~}~}|}~}{}~{||~|}~{~}}~|~}}}~}}|}{~|~|~}~}}|z~}~~{||}}~|~~}}}~~~{|~|~}|}|~~{{~~|~~~{~|~~}y~~}|~~~~~}~~~}}~||~}|~~~~|}~}~}||~~}~|~~~~}~~~~|~}~|{}~}}~~~~|}~}~{|{~}|~}~~|~}|}|~~~|}~~}}}{}}~}}}~|~}~~~~}}~}~}~|}~|~~}|~~||~~{}}~~|}~~~~}~}~}~|~~}}~}{}~~~~}~}}~}~~~~~~~~~~~~|~~}}|}~~|~~~~~~~}~}~}~~~}~~~}}}~~|~~}~~~~~~~~~}~~~~}~}~~~~~}~|~~~~~}~~}~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    4() IT 0 )g5lq    7 .  c!  ! R[r2 X  $4  b$yM%@əzO; b$;\¥_9ZL b$-Uяx6x:*Wb$:lTvڃ/'Qf{b$a$WeWT}MInb$-uB QPEb$KsIADt b$`T ߨIFdFh-b$AjO%䧇G0J%b$\JPJŶ;b$AݎO5c30$$"$*Tӯ1X# +C$b$:Cin^\lc7b$B+ {?|;c 0AA f3ffA'"@8\h/ ʚ;k8ʚ;g4GdGdB 0ppp@ <4dddd0pC 0l`- g4#d#dB 0Bp@ pp80___PPT10 ?<, (Sebastian BurckhardtO  ='VBounded Model Checking of Concurrent Data Types on Relaxed Memory Models: A Case StudyWWSebastian Burckhardt Rajeev Alur Milo M. K. Martin Department of Computer and Information Science University of Pennsylvania CAV 2006, Seattle3]The General ProblemThe Specific Problem Case Study: Two-Lock Queue& ;Algorithm published by M. Michael and M. Scott [PODC 1996]<< pclient program observes ordering of operation calls within each thread argument and return values of the operation code is correct if and only if all executions are observationally equivalent to some serial execution (def. serial: interleaved at operation boundaries only) We assume serial executions are correct (can be verified by convential sequential methods)`A'"FR &Finer Interleavings = More Executions kserial executions threads interleave the operations (operations are atomic) (operations are in-order) sequentially consistent executions threads interleave the instructions (instructions are atomic) (instructions are in-order) relaxed executions hardware makes performance-motivated compromises (stores may be non-atomic) (loads/stores may be out-of-order)LG_%U"]q# Case Study: Relaxed Memory Models&$  Which Memory Model?Memory models are platform dependent We use a conservative approximation  Relaxed to capture common effects Once code is correct for  Relaxed , it is correct for all models See paper for formal spec of  Relaxed ,I Halftime OverviewGeneral motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Our Verification Method How To Bound ExecutionsVerify individual  symbolic tests finite number of operations nondeterministic instruction order nondeterministic input values Example (this is the smallest one in our test suite) User creates suite of tests of increasing size H#]g#]hWhy symbolic test programs? Implementation codePwe hand-translated Michael & Scott s code (above) into a low-level representation that uses explicit loads, stores we added code for dynamic memory allocation and locks" Commit points designate where the operation commits logically given order of commit points, we can construct serial witness execution eliminates the in  executions equivalent serial execution 00X  Counterexample TraceEncodingTGiven symbolic test T(A, B) memory model L implementation code & commit point specifications Encoding First step: encode concurrent executions of T on L as solutions to CNF formula FL(A, B, X) (aux vars X) Second step: encode counterexamples as solutions to FL(A, B, X) . FAtomic(A , B , X ) . (A = A ) . (commit point orders match) . ((B g B ) - (some operations commit out of order)) nY CA'"5  "A'" =""" -fLs6 Encoding Detail: Obtain Symbolic Instruction Stream74  Encoding Detail: Memory Order (So what did we learn in the case study? General motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Results: 5 code problems found&  Results: Scalability Graph shows tests in our suite (unsatisfiable instances only) y-axis : runtime in seconds x-axis : # accesses (loads/stores) in test Fast on small tests, slow on long tests Not sensitive to # threads All 5 problems were found on smallest 2 tests... all under 1 sec t>G>GE2  Conclusionquickly finds subtle bugs supports relaxed memory models counterexample traces catches broad range of bugs (not limited to deadlocks or data races) is more automatic than deductive methods  " not truly scalable (though scalable enough to be useful) not fully automatic does not solve full problem (bounded instances, commit points) Ordering/Atomicity RelaxationsThe following 2 examples illustrate the main effects (1. ordering relaxation / 2. atomicity relaxation) Where necessary, a programmer can prevent these effects by inserting fence instructions  What code? Data type implementations optimized for concurrent execution (Concurrency libraries) What machines? Common shared-memory multiprocessors (e.g. PPC, Sparc, Alpha) What bugs? Bugs caused by concurrency (We assume code runs fine if single-threaded) | ffVff? ffJ_! Encoding Concurrent Executions"" /       ` Ot{h______` M <ff33̙3` +ffO=ff̙H7` fff3f̙` Tff33ff` 0Ky{kOz` )R{f` GiIfff̙fR` ̙|̙3f` 3ff~>?" dd@ ?lFd@  nK'o`P( n?" dd@   @@``PT     o (`)p>>ZK0 @'(    6,ˑ "M 0}  X Click to edit Master title style!!  (  0͑ "; `  RClick to edit Master text styles Second level Third level Fourth level Fifth level!    S    0ӑ " `   X*     0lؑ "   ^-*-   H  0޽h ? 3ff~___PPT10i. s+D=' = @B + Network ZK0 P(((  ZB  c $D"P`  6 "w  X Click to edit Master title style!!    0| "1 w  [#Click to edit Master subtitle style$$    0( "` `  Z*     0H "`   T*      0, "` `  T*    T `]   " pph2   s *"`]h2   s *"]h2   s *"]Eh2   s *"`h2   s *"h2  s *"Eh2  s *"yh2  s *"`B h2  s *"B h2  s *"EB h2  s *"yB n2  0",B h2  s *"`u  h2  s *"u  h2  s *"u E n2  0"yu  h2  s *"`(  h2  s *"(  n2  0"( E n2  0"y(  h2  s *",(  h2  s *"` Z n2  0" Z n2   0" EZ h2 ! s *"y Z n2 " 0"`  n2 # 0"  h2 $ s *" E h2 % s *"y  h2 & s *"A  h2 ' s *"yA  `B ( s *D"H  0޽h ? 3ff~___PPT10i. s+D=' = @B + 0 (*(  ( ( 05 P    X*  ( 09     Z* d ( c $ ?   ( 0,>  0  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S ( 6@ _P   X*  ( 6G _   Z* H ( 0޽h ? 3380___PPT10.EnQZK0  0(  x  c $@  x  c $[ @+  H  0޽h ? 33___PPT10i.E\g+D=' = @B +P% ZK0 (  X  0A?@    <>`,r @software 0   <x> r Fmultiprocessor0   6C"?p  Mconcurrent executions0d2   <00 d2   <x0@ ^2  6 P   <| u  <bugs0x  c $ 0   ^  6A? L^  6A?<0 ^  6A?T   0  `,$ 0 Pconcurrency libraries can help e.g. Java JSR-166 but how to debug the libraries?QPH  0޽h ? 3ff~___PPT10.ֺ&z/+ ,JD9' = @B D' = @BA?%,( < +O%,( < +D+' =%(%(D' =%(D ' =4@BBBB%()?)?)?)?D' '=.7 BBBBBM -4.44444E-6 5.92593E-6 C -0.00121 0.00232 -0.0026 0.00441 -0.00347 0.00695 C -0.00625 0.01575 -0.00399 0.0213 -0.00694 0.00927 C -0.00746 0.00325 -0.00868 -0.00277 -0.00868 -0.00902 C -0.00868 -0.01157 -0.00781 -0.01805 -0.00694 -0.01596 C -0.00277 -0.00601 -0.00121 0.00556 0.00174 0.01621 C -0.00017 -0.01018 0.00313 -0.01805 0.00521 -0.04351 C 0.00799 -0.03147 0.0066 -0.0199 0.01198 -0.00902 C 0.00504 -0.00832 -0.00173 -0.0067 -0.00868 -0.0067 C -0.01111 -0.0067 -0.01805 -0.00902 -0.01562 -0.00902 C -0.00989 -0.00902 -0.00399 -0.00763 0.00174 -0.0067 C 0.00521 -0.00624 0.01441 -0.00115 0.01198 -0.00439 C 0.00782 -0.00995 -0.01979 -0.01133 -0.02066 -0.01133 C -0.02361 -0.01203 -0.02656 -0.01504 -0.02934 -0.01365 C -0.03888 -0.00879 -0.0335 -0.00161 -0.03107 0.00464 C -0.03055 -0.00231 -0.03454 -0.01643 -0.02934 -0.01596 C -0.01319 -0.01481 -0.00104 0.00533 0.01372 0.0139 C 0.01198 0.00556 0.01059 -0.003 0.00851 -0.01133 C 0.00504 -0.02569 0.00521 -0.0162 0.00521 -0.02291 *3>*B ppt_xB ppt_y=;0BB)ffffffffffffffffffA<*D' =4@BBBB%()?)?)?D' '=.7 BBBBBM -8.33333E-7 -2.59259E-6 C 0.00122 0.00532 0.00209 0.01065 0.00348 0.01597 C 0.00417 0.01898 0.00313 0.00926 0.00174 0.00671 C 0.00053 0.0044 -0.00173 0.0037 -0.00347 0.00208 C -0.00572 0.00278 -0.01007 0.00116 -0.01041 0.0044 C -0.01093 0.0088 -0.00642 0.01181 -0.0052 0.01597 C -0.00347 0.02176 -0.00295 0.02824 -0.00173 0.03426 C 0.00313 0.02153 0.00365 0.02407 0.01372 0.0206 C 0.0191 0.00995 0.02188 -0.02801 0.01025 -0.00463 C 0.00973 -0.00093 0.00868 0.00671 0.00868 0.00671 *3>*B ppt_xB ppt_y=)0BBfffffffffA<*Dw' =4@BBBB%()?)?)?)?D' '=.s7 BBBBBiM 0.01476 -0.04236 C 0.01597 -0.04004 0.01719 -0.03333 0.01823 -0.03564 C 0.02066 -0.04097 0.02153 -0.04814 0.01997 -0.05393 C 0.01927 -0.05648 0.01649 -0.05069 0.01476 -0.0493 C 0.0125 -0.04768 0.01007 -0.04629 0.00781 -0.04467 C 0.00677 -0.04236 0.00365 -0.04027 0.00451 -0.03796 C 0.00538 -0.03588 0.00781 -0.03958 0.00955 -0.04004 C 0.01476 -0.0412 0.01997 -0.04166 0.02517 -0.04236 C 0.02344 -0.04537 0.02274 -0.05023 0.01997 -0.05162 C 0.00903 -0.05694 -0.00312 -0.05463 -0.01458 -0.05625 C -0.01233 -0.05393 -0.01007 -0.05162 -0.00764 -0.0493 C -0.0059 -0.04768 -0.00451 -0.04398 -0.00243 -0.04467 C -0.00069 -0.04537 -0.00122 -0.0493 -0.00069 -0.05162 C 0.00104 -0.04467 0.00278 -0.03796 0.00451 -0.03102 C 0.00556 -0.02708 0.00538 -0.01689 0.00781 -0.01944 C 0.0125 -0.02477 0.0125 -0.03472 0.01476 -0.04236 Z *3>*B ppt_xB ppt_y=\0BB#ffffffffffffffffpBBqBu;<*D' =%( ND8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-g6B fade*<3<*+8+0+ + ZK0  @(  X  0A?@    0<P  2optimized implementations of concurrent datatypes303)   0T  n6shared-memory multiprocessor with relaxed memory model707d2  <00 d2   <x0@ ^2   6 P    <\   <bugs0~   s *XM 0      << c'case study: use SAT solver to find bugs (0(X  0A?  X  0A? @   6بC"?p  Mconcurrent executions0H  0޽h ? 3ff~___PPT10i.ֺ&z/+D=' = @B + ZK0  /q%(  r  S `D   r  S  E    X2  0>0` R  s *` R  s *p  <XM100 .0XB   0D1PpRB ! s *D10 " <O10p 710XB # 0D1RB $ s *D1000 ( <H100  720XB ) 0D1 RB * s *D10pp + <X10 p  730RB , s *D10 LB - c $D0 p LB . c $D0 p RB / s *D 0 s *]~ <head0 1 s *b  <lock0X2 2 0> ` R 3 s *p R 4 s * p pRB 5 s *D  6 s *df p ~ <tail0 7 s *j@P  <lock0 8 0@n   hSingly linked list with head and tail pointers Dummy node at front Independent head and tail locks ! allows for concurrent enqueue() and dequeue() Race condition if queue is empty *c0"^ 9 6jJP X2 T 0> 0` R U s * ` R V s *pRB d s *D e s *xu~ <head0 f s *y   <lock0X2 g 0> ` R h s *P R i s *pRB j s *D` k s *Xh~ <tail0 l s *tp  <lock0^ m 6jJP   n <\10` .0RB o s *D10LB p c $D0`LB q c $D0`H  0޽h ? 3ff~___PPT10i.@G+D=' = @B ++  ZK0 *"`  ,(  ,r , S @     , 0d P `  D @`U , 0\"C"?P  #thread 1 enqueue(1) enqueue(2) $0 A'" A'"A'"A'^ , 0P$C"?P  Lthread 2 enqueue(3) dequeue() ! 1 v'0 A'"A'A'l , 0,A'C"?P  Pthread 3 dequeue() ! 3 dequeue() ! 2 )0  A' A'A'R , s *P LB  , c $DP LB  , c $DP LB  , c $D@@  , 66  i' Case Study: Our Correctness Criterion&( H , 0޽h ? 3ff~___PPT10i.ޯP+D=' = @B + ZK0 c[  (  x  c $M`p}     S <<$@ 0  2  0@0 ,$D 02   B"`   002   6"`  BSerial 0   0D @  >SC 0  0 @ ,$ 0 CRelaxed 0LB  c $D0 LB  c $D 0 pB  c $D P0 ,$@ 0  6t @ @},$ 0 <(Reordered Instructions = More ExecutionsH  0޽h ? 3ff~___PPT10.m+=lD' = @B D' = @BA?%,( < +O%,( < +D ' =%(D) ' =%(D+' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*G%(D' =-g6B fade*<3<*GD+' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-g6B fade*<3<*D8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-g6B fade*<3<*D+' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-g6B fade*<3<*D ' =%(D) ' =%(D8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D'  =-g6B fade*<3<*D+' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-g6B fade*<3<*D+' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*Gl%(D' =-g6B fade*<3<*GlD+' =4@BB BB%(D' =1:Bvisible*o3>+B#style.visibility<*Lh%(D' =-g6B fade*<3<*Lh+p+0+ ++0+ +  ZK0   3 (  x  c $̸   \ " 0L P  Example: output not consistent with any interleaved execution! can be the result of out-of-order stores can be the result of out-of-order loads improves performance (more choices for processor) Q: Why doesn t everything break? A: Relaxations are transparent to  normal programs uniprocessor semantics are preserved library code for lock/unlock contains memory ordering fences 7Ub 6 2K       V # 0A'p0  K x = 1 y = 20U $ 0A'p  O print y print x0U % <TA'C"?0 Dthread 1 0 A' & <\A'C"?  Dthread 2 0 A'J / 0@A'C"?p c b ! 2 ! 0 L20U $H  0޽h ? 3ff~___PPT10i.@G+D=' = @B +Z  ZK0 Y Q @ $ (  $X2 $ 0 "  @ ^2  $ 6 " ^2  $@ 6 "0 X2 $ 0 "@0  2 $ <̇ "0@  002 $ < "  00r $ S (Pp   r $ S 4 P  R2 $ s * `   $ 0@ ?TSO 0"  $ 0@@ ?PSO 0" $ 0  ?PPC 0" $ 0ܚ @  AAlpha 0" $ 0X@ CRelaxed 0 $ 0L@0p' ?RMO 0"R2 $ s *` `  $ 0P  ?390 0" $ 0<i 0 P  >SC 0H $ 0޽h ? 3ff~___PPT10i.#@U@+D=' = @B + ZK0  @(  x  c $SM 0}   r  S T;P`  ^r  6> ^r  6>   <8pC"?oe @done 0  <HsC"?0 pd  E coming up 0 H  0޽h ? 3ff~___PPT10i.+D=' = @B +0  ZK0 4, 9Wt(  tx t c $TM 0}    t < ''o"`P  6"0 t <o  AEncoder0 t < oP  D SAT solver 0 X t 00 LB  t c $DqaqLB  t c $DakLB  t c $D"LB  t c $Da"LB  t c $Da t 0+   q'implementation code with commit points.(03dB t@ <DoP |F  r t '0Z t s *3 pTB t c $D3zTB t c $D3) )TB t c $D31BBTB t c $D3ZZTB t c $D3rr t 02P  K symbolic test"03dB t <Do``dB t <Do   t <7  <pass0LB 7t c $D/ `/ LB 8t c $DG `jG LB 9t c $D` !` LB :t c $Dx `!x LB ;t c $D ` LB t c $D>a>~ ?t 0cS"`?t~ @t 0cS"`? W9 dB At@ <DoP   Bt <>   Fcounterexample0X Ct 0 pdLB Dt c $D!LB Et c $D)!+)LB Ft c $DBQBLB Gt c $DZ!ZLB Ht c $Dr!rLB It c $D LB Jt c $D *LB Kt c $DPLB Lt c $D LB Mt c $D0 0LB Nt c $D ! LB Ot c $D!LB Pt c $D ! ~ Qt 0cS"`?4P4O~ Rt 0cS"`?r St 6Ip0P,$@ 0 ?1"0r Tt 6Lp0P ,$@ 0 ?2"0r Ut 6Pp` P,$@ 0 ?5"0r Vt 6T ,$@ 0 ?4"0r Wt 6Xp pP ,$@ 0 ?3"0H t 0޽h ? 3ff~___PPT10.+ 2D|' = @B D7' = @BA?%,( < +O%,( < +Dn' =%(D' =%(D8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*St%(D' =-g6B fade*<3<*StD8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Tt%(D' =-g6B fade*<3<*TtD8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Wt%(D' =-g6B fade*<3<*WtD8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Ut%(D' =-g6B fade*<3<*UtD8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*Vt%(D' =-g6B fade*<3<*VtDF' =A@BBBB0B%(D' =/u8CC*Q3> Br<*StDF' =A@BBBB0B%(D' =/u8CC*Q3> Br<*TtDF' =A@BBBB0B%(D' =/u8CC*Q3> Br<*WtDF' =A@BBBB0B%(D' =/u8CC*Q3> Br<*UtDF' =A@BBBB0B%(D' =/u8CC*Q3> Br<*Vt+0+0+St ++0+St ++0+Tt ++0+Tt ++0+Ut ++0+Ut ++0+Vt ++0+Vt ++0+Wt ++0+Wt + ZK0   1(  8 @ @@ 1 @@Q  * 0(A'@   .0TB + c $DA'@ @ / , 0A'C"?@ p  thread 1 enqueue(X) R0 A' A' A'"A' < - 0A'C"?@ @@ 8thread 2 dequeue() ! Y `0 A' A' A'A'A'r . S  M 0}   r / S ( ; `  r 0 6  ?1"0H  0޽h ? 3ff~___PPT10i.$9+D=' = @B +N ZK0 MEP(  r  S 8 0   +  0  5 1) Avoid undecidability by making everything finite: State is unbounded (dynamic memory allocation) ... is bounded for individual test Sequential consistency is undecidable ... is decidable for individual test 2) Gives us finite instruction sequence to work with State space too large for interleaved system model .... can directly encode value flow between instructions Memory model specified by axioms .... can directly encode ordering axioms on instructions555/#%'548#9,  $H  0޽h ? 3ff~___PPT10i.p6+D=' = @B +  ZK0  TW(  Tx T c $ P`P   r T S \J    r  T 6 ?2"0X  T 0A ?8  X  T 0A ? X T 0` X T 0 } H T 0޽h ? 3ff~___PPT10i.+D=' = @B +  ZK0   X(  Xx X c $ M 0   X X 0A?` X<X X 0A?`xr j  X <\  `  ~ X 0cS"`? ~ X 0cS"`? 2 X  X 0@m v X  X 0@p @r X 6` ?3"0H X 0޽h ? 3ff~___PPT10i. }+D=' = @B +"  ZK0 0 `(  ` ` 0OA'  .0x ` c $$P@ `    ` TA ? Z  LB `@ c $DA'P P LB ` c $DA'  ` 0MA'C"?w $ thread 1 enqueue (1) R0A' A' A'"A'<  ` 0BA'C"?P $ @thread 2 dequeue() ! 0 `!0A' A' A'A'A'  ` TA ?p     ` 0Ps  =4 0  ` 0w4  =5 0  ` 0<{dtK =1 0 ` 0t >11 0 ` 0hrzY >12 0~ ` 0cS"`?0  ` 0z =2 0 ` 0z >13 0 ` 0z  >14 0 ` 0zg =3 0 ` 0  =6 0 ` 0h"  > 7 0 ` 0    =9 0 ` 0   >10 0 ` 0  =8 0~ ` 0cS"`? `` ` 0 p z,$@  0 rcommit point order (3 < 6) indicates that enqueue precedes dequeue, so we would expect dequeue() ! 1 incorrect value (0) of queue element gets read (7) before correct value (1) is being written (11). > A'A'''"" ` 6G9)( ,$D  0 ` 6G ,$@ 0r ` 6Ȱ ?4"0H ` 0޽h ? 3ff~\ T ___PPT104 .(0+H,D ' = @B D ' = @BA?%,( < +O%,( < +D ' =%(D ' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*`e%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*`eD' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*`eD' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*`%(D' =+4 8?dCB0-#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*`D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*`D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*`%(D' =+4 8?dCB1+#ppt_w/2BCB#ppt_xB*Y3>B ppt_x<*`D' =+4 8?\CB#ppt_yBCB#ppt_yB*Y3>B ppt_y<*`+  ZK0   #(  x  c $@M 00   r  S    8   q P P  0DA'   .0TB  c $DA'` ` /  00A'C"? @  thread 1 enqueue(A) R0 A' A' A'"A' <  05A'C"?` q 8thread 2 dequeue() ! B `0 A' A' A'A'A'r # 6< ?5"0H  0޽h ? 3ff~___PPT10i.G+D=' = @B + ZK0  xG(  xx x c $    / x 0 P Finite instruction sequence for each thread Only loads, stores, moves, and fences Each register is assigned exactly once Control flow represented by predicatesX x 0A ?S H x 0޽h ? 3ff~___PPT10i. +D=' = @B + ZK0 2*  (  ~  s *C      0 00 *    0D$ @ :Example: two threads: Encoding variables Use bool vars for relative order (x<y) of memory accesses Use bitvector variables Ax and Dx for address and data values associated with memory access x Encode constraints encode transitivity of memory order encode ordering axioms of the memory model Example (for SC): (s1<s2)(l1<l2) encode value flow  Loaded value must match last value stored to same address Example: value must flow from s1 to l1 under following conditions: ((s1<l1) (As1 = Al1) ((s2<s1)(l1<s2)(As2 g Al1))) d (Ds1= Dl1))J)!,"O""O"=c/=$"O""O""O""O"$"O""O"P-1  @`  6%A'   s1 store s2 storeJ0U   6<A' p l1 load l2 loadJ0U  LB  c $DA'   pLB  c $DA' p  <A'C"?` & 4 Dthread 1 0 A'  <A'C"?`&4 Dthread 2 0 A'  <G9H- `@ @,$@ 0 UO(n2)40H  <PGH  P ` 0 ,$D 0 UO(n3)40HH  0޽h ?/  3ff~___PPT10. +B>wD6' = @B D' = @BA?%,( < +O%,( < +D(' =%(D' =%(D8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-g6B fade*<3<*D8' =A@BB BB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-g6B fade*<3<*+p+0+ ++0+ +  ZK0 (  ~  s *M 0}   x  c $;P`  ^r  6> ^r  6>   <ܗC"?e  @done 0  <C"?  E coming up 0 H  0޽h ? 3ff~___PPT10i.+D=' = @B + ZK0   (  x  c $}M 0     0~   3 were mistakes we made first commit point guess was wrong incorrect/insufficient fences in lock/unlock and alloc/free 2 were caused by missing fences in queue implementation (not fault of authors... were assuming SC multiprocessor)\_t_smzX  0A?` , X   0A?0  .   <p  D  R---store-store-fence"0''X   0A?0     < ^  P---load-load-fence"0''X   0A?p DH  0޽h ? 3ff~___PPT10i.">+D=' = @B +s  ZK0 (  |(  |x | <A  ??`P `  x | c $p  ,$@  0 4 0ffH | 0޽h ? 3ff~  ___PPT10 .+`2DO ' dX|= @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*|%(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*|D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*|D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*| %(D' =+4 8?\CB#ppt_xBCB#ppt_xB*Y3>B ppt_x<*| D' =+4 8?dCB1+#ppt_h/2BCB#ppt_yB*Y3>B ppt_y<*| +8+0+| +  ZK0   C(  x  c $JM 0   x  c $dK   r  S 8L     0 4 WWe would recommend this method to designers and implementors of concurrent data types. X0X"1 LB  c $DLB  c $D   0O G `PROs&0(2"   08T G `CONs&0(2LB   c $D   s * Xp ,$D 0 ZFUTURE WORK & CHALLENGES&0(2H  0޽h ? 3ff~___PPT10x.e+QD' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(DV' =A@BB5BB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<* D' =+4 8?RCBBCB#ppt_hB*Y3>B ppt_h<* D' =-g6B fade*<3<* +8+0+  +W ZK0 p\8(  \ \  W>d?f P 6The EndImpact@m P \ s *޽h ?"` 3ff~7 / ___PPT10 .#G0G~+D ' = @B D ' = @BA?%,( < +O%,( < +D ' =%(%(D] ' =%(D ' =4@BB6BB%(0u)?)?DY' 0u=.!7 BBBBBM 0.0 -0.00024 C 0.0151 -0.01229 0.07118 -0.02387 0.09028 -0.02387 C 0.21406 -0.02387 0.34132 0.16686 0.34132 0.35828 C 0.34132 0.26141 0.40503 0.16686 0.46528 0.16686 C 0.52899 0.16686 0.58906 0.26326 0.58906 0.35828 C 0.58906 0.31008 0.62118 0.26141 0.65278 0.26141 C 0.6849 0.26141 0.71649 0.30892 0.71649 0.35828 C 0.71649 0.33348 0.73229 0.31008 0.74809 0.31008 C 0.76406 0.31008 0.78021 0.33487 0.78021 0.35828 C 0.78021 0.34577 0.78837 0.33348 0.79601 0.33348 C 0.80017 0.33348 0.81198 0.34577 0.81198 0.35828 C 0.81198 0.35179 0.81615 0.34577 0.82031 0.34577 C 0.82031 0.34716 0.82847 0.35179 0.82847 0.35828 C 0.82847 0.35457 0.82847 0.35179 0.83281 0.35179 C 0.83281 0.35341 0.83663 0.3548 0.83663 0.35828 C 0.83663 0.3562 0.83663 0.35457 0.83663 0.35341 C 0.84097 0.35341 0.84097 0.3548 0.84097 0.35643 C 0.84514 0.35643 0.84514 0.3548 0.84514 0.35341 C 0.85 0.35341 0.85 0.3548 0.85 0.35643 *3>*B ppt_xB ppt_y=b0BB)fffffffffffffffffffpBB>BV+><*\+t ZK0 sk` l(  l~ l s *P 00    l 0"`0 p  Lstore A, 1 load B, 00 l 0<"`0   Lstore B, 1 load A, 00 l <p  W  E processor 1 0  l <p $W  E processor 2 0  l 0  p,initially A=B=0 pink numbers = memory order(-0 l 0tS"`?0 p  A3 1"0  l 0S"`?0  A4 2"0-  l 0T"` p  #store A, 1 load A, reg store reg, BL$0,  l 0"`  Kload B, 1 load A, 00  l <d 0    E processor 1 0   l <0 $  E processor 2 0  l 0`  ;initially A=B=0 split store into local / remote components(<0+ l 0S"`? p E1/6 2 3"0 l 0S"`?  A4 5"0LB l c $Dp@pLB l c $D0 @0  l <t$V*  i/EXAMPLE 1 store, load may execute out of order000 l <% ` w=EXAMPLE 2 stores are buffered locally before effect is global>0>x l c $+ `  H l 0޽h ? 3ff~___PPT10i.!p+D=' dX|= @B + ZK0  (  r  S ֮   H  0޽h ? 3ff~___PPT10i.+D=' = @B +) ZK0 ( `  (  ~  s ** 0   ?  0h V %x1 load a[0], R1 x2 store R1, y &0U" "  0  G9x3 load y, R2 move R2+1, R3 x4 store 1, a[R3] :0U  LB  c $D00@LB  c $D   0   Variables O(n2) bitvectors R1, R2, R3 for intermediate values boolean variables Mij to represent memory order xi < xj (for i < j) Constraints O(n3) memory order is transitive: i<j<k (Mij . Mjk) ! Mik loads get latest value stored to same address memory order must respect memory model axioms and fences (e.g. sequential consistency requires M12 . M34) thread-local computations connect values (e.g. R3 = R2 + 1)06u 3  ",     ~26 %  G  <ɮ0x Alabel 0   <,ή0`  Alabel 0H  0޽h ? 3ff~___PPT10i. +D=' = @B +V 0  8f(  8X 8 C (   u 8 S (u( 0  u hT Implementation must hide relaxations from client program.... (by whatever means) H 8 0޽h ? 3380___PPT10.d$& 0  <6(  <X < C (   u < S H0u( 0  u 8$So far I have been unspecific about how exactly the ordering and atomicity of loads and stores are being relaxed in common arch for a good reason: it s not the same on all platforms. For algorithm designers this is not acceptable... they program for SC program for RelaxedH < 0޽h ? 3380___PPT10.$ 0  @.(  @X @ C (   u @ S :u( 0  u 0 go into more detail... H @ 0޽h ? 3380___PPT10.Ӈ 0  D(  DX D C (   u D S Au( 0  u l More classic model checking uses LTS for everything (synch or asynch composition) Bounded Model Checking @'H D 0޽h ? 3380___PPT10.ЉL 0  H\(  HX H C (   u H S PJu( 0  u ^ What s special describe queue ... enqueue at tail, dequeue at head optimize: concurrent for non-empty queue emtpy queue: race>% 4 H H 0޽h ? 3380___PPT10. 88/ 0  L?(  LX L C (   u L S @Tu( 0  u A- This is our position... a one slide overviewH L 0޽h ? 3380___PPT10.@j 0 me P(  PX P C (   e P S R( 0   wMy name is Sebastian Burckhardt I am a Phd student at the univ. of pennsylvania and profs alur & martin are my advisorsl    H P 0޽h ? 3380___PPT10.` s 0 (  ^  S (   u  c $D]u( 0  u yC Implemenations are plenty... choose one that has typical features4H  0޽h ? 3380___PPT10. 88  0  (  X  C (   u  S eu( 0  u  H  0޽h ? 3380___PPT10.[5  0 0(  X  C (   u  S ju( 0  u  H  0޽h ? 3380___PPT10.@%  0 @(  X  C (   u  S u( 0  u  H  0޽h ? 3380___PPT10.AO%  0 P(  X  C (   u  S u( 0  u  H  0޽h ? 3380___PPT10.@Iz%^ 0 `n(  X  C (   u  S طu(` 0  u p\1) Explain pink order 2) Explain commit points 3) Explain value out of order, and how to fixH  0޽h ? 3380___PPT10.s%  0 p(  X  C (   u  S u( 0  u  H  0޽h ? 3380___PPT10.@b%  0 (  X  C (   u  S ,u( 0  u  H  0޽h ? 3380___PPT10.n&  0 (  X  C (   u  S u( 0  u  H  0޽h ? 3380___PPT10.ph/&  0 (  X  C (   v  S Cv( 0  v  H  0޽h ? 3380___PPT10.06G&  0 (  X  C (   v  S hv( 0  v  H  0޽h ? 3380___PPT10./f& 0 ;3(  X  C (   w3  S x4w( 0  w  SAY TWO THINGS (reason... narrow) REASON - hard to reason - hard to test NARROW one way: concurrency libraries can improve correctness & performance who writes concurrency libraries?H  0޽h ? 3380___PPT10.غ x< 0 L(  X  C (   w  S >w( 0  w N:describe pieces -code -machine -bugs motivate case studyH  0޽h ? 3380___PPT10.غ5 0 p((  ^  S (   w  c $4Fw( 0  w  H  0޽h ? 3380___PPT10.ph/&  0 (  X  C (   w  S Lw( 0  w  H  0޽h ? 3380___PPT10.׿z  0 (  X  C (   w  S Pw( 0  w  H  0޽h ? 3380___PPT10.ؿd 4xZ}lwg58`aC1c`BbB`Ҙ|A&jRT 4J?J* AMTEm% jQrJA& Ji{ofoفjog37og潝sg ^;1cȐ:f2 A&Ԝ d SrϛwZcv QX ;e.X\|Թc\ejۿϟ|TSznM.'AԢ{rcL Xv.X:<3>\DlWl6S6!az \>Ӏ7*M_@'k9|raO26 }GN'N3>FQg/X|ɊƏGn l ~̇G+'Gg¬ޤ9s]IoZA~ o闞_/e ;_5q,r\8%Cekgg\7Y&k8x,('wlMvsJՐk+o|7߫cϏր}U:x8^⚙&7mܳs-ѥnN:oM <Z@͌=fe hۖ-pN%Tg Z)<5 XV~&8&ф)elQ>"L|Q( GMO<yLx2Vm.L34ـh@ .=r׋TsEU1 =:JfUmܹiYbLŹ0)-՝ J{*5Eif 6Ut>T@5+N궭\5sJ97VL<^z0JoLiޥxfFY3j8j2s(? ׆!N++=gggG4츞ka5ÀUHI"oDJmfms26VM8}4~ NƧrsOWL4;ZzLJݼmxNn ;- Sf}o_DiS#xe](aomc4kֱZJyxYfy<W˘M6jr"8&b \ԶR9<In$?]7êQ\"Һ粮pGbxM1F<3-= 1@C[1=Z {jgĵ!Dc<ݾ\ɕ?4wr]X/ջ}K=}Qd/[Xz;UwJ^*/4f% "E:+״Ӽf>h4[.خAs+ſf$t\1/N|qǨ/`mNS{Oco%A=%Y415/ |03|B>郅}0d`ӾUy~c5ʪu1y,pֱ3LSdNi.N4!ӈL#oiGNxDtETDHwpt""]b"×'2p I1& DpL% (%;o1Q!c(<9ɖ*23 Z\2LG+Sjg’(D+{.QQXYJDoVD{]",b"Zӈ("LԢ".)Emzj<!>U6/iZ^*+Z'O \l@OI(Շ6O! j|_بCIA!d\Ww(~a㡎/ 9g\M\_oãC q`1Z;c]@>X(4S^yf~ >\߬&-! O4c^<:ޭK,'%MBy-] t~u Jtϋq,q%>gs-תjż a*3Xjp#oIiOjPw_mC;6QIuBƑ3μ:8cH;spē.\^{-+lYYDre [V?Sڎ;eȖ@[VrGn^С:m4ɴwݷׂM#=S{-r>H ]Nmr>4l> GUUi{ U7>?_ V Rx>c0~UW _g/jA)I00Cu"rP`% vH@Qf9Z `}Qwz1~WCz0Uޒ&0-:Dwgwo`&:Ȝܞ &1ǥth S +?e X(     Chart Excel.Chart.80*MicOh+'0t hp  Slide 1 IBM_User Network IBM_User 465Microsoft PowerPointP@{@Z oE@`jGZg   L  y--$xx--'--%m--'3f--&$@@@ABBCCCCCBBA@@@--'--&$@@@ABBCCCCCBBA@@@--'--&$@@@ABBCCCCCBBA@@@--'--&$EEEFGGHHHHHGGFEEE--'--&$EEEFGGHHHHHGGFEEE--'--&$EEEFGGHHHHHGGFEEE--'f--&$EEEFGGHHHHHGGFEEE--'3f--&$JJJKLLMMMMMLLKJJJ--'--&$JJJKLLMMMMMLLKJJJ--'f--&$JJJKLLMMMMMLLKJJJ--'--&$JJJKLLMMMMMLLKJJJ--'--&$JJJKLLMMMMMLLKJJJ--'3f--&$OOOPQQRRRRRQQPOOO--'f--&$OOOPQQRRRRRQQPOOO--'--&$OOOPQQRRRRRQQPOOO--'--&$OOOPQQRRRRRQQPOOO--'f--&$TTTUVVWWWWWVVUTTT--'--&$TTTUVVWWWWWVVUTTT--'--&$TTTUVVWWWWWVVUTTT--'--&$TTTUVVWWWWWVVUTTT--'--&$TTTUVVWWWWWVVUTTT--'f--&$YYYZ[[\\\\\[[ZYYY--'--&$YYYZ[[\\\\\[[ZYYY--'--&$YYYZ[[\\\\\[[ZYYY--'--&$YYYZ[[\\\\\[[ZYYY--'--&$^^^__`aaaaa`__^^^--'--&$^^^__`aaaaa`__^^^--'--&$^^^__`aaaaa`__^^^--'--&$^^^__`aaaaa`__^^^--'--&$cccddefffffeddccc--'--&$cccddefffffeddccc--'--%==--'@Arial-. 3f.2 "%Bounded Model Checking of ."System-@Arial-. 3f92 )!Concurrent Data Types on Relaxed .-@Arial-. 3f2 1IMemory Models:.-@Arial-. 3f2 9R A Case Study.-@Arial-. %2 IISebastian Burckhardt.-@Arial-. 2 Oa Rajeev Alury.-@Arial-. !2 VUMilo M. K. Martinr.-@Arial-. L2 a%.Department of Computer and Information Science.-@Arial-. .2 gNUniversity of Pennsylvania.-@Arial-. !2 m\CAV 2006, Seattler.-V3)4PLZb 6}H1bAE5PIAk^s]w9{Ϟ=>|C893k>fZov @ !R& @ /B2 @`CO @@ @ $ =C @ $C @  Fl0 @ @  @ 0BS0 @ B2t @`CO @@ @ $ =C @ $C @  Fl0 @ @  @ 0BS0 @ B2t @`CO @@ @ $ =C @ $C @  Fl0 @ @  @ 0BS0 @ B2t @`CO @@ @ $ =C @ $C @  Fl0 @ @  @ 0BS0 @ B2t @`CO @@ @ $ =C @ $C @  Fl0 @ @  @ 0u׮]p  @#pǏG߼yD"@`-TsR@xWWWWÇ_x d @;ynܸ@,Y9 @tcܹsW$!\5B P3g^y= ظ@!@ w.!@QK ʮEԄ 9$@H6 !w ab |F U @xہon._ #@kz'oRb ibՉ,a}DkqeeC2=FzcKA[̋,i䚚ŹOr&ყO{+fɹO~I5E_=zGU T{衇KeR!TD& !Q'ޛ7o~oƌUHuڨI]aT+e7=VLl捄}עz%E)w#G:uF˙ D;gjylT^}?>|ao>B9+'\B'ȕ|t5txfZ ~&ۏnHBɣ*TX]bTb/BgTD*"-+ɽIjUYEgYM%` UH`mϩ =+WeKtY![ZABA񅻼N0|* ߧw#zVibT jGsw>eY7i>╎d|]-e5HOL޺o]!"%Ϭ-J<]wjMW}|͒?ܳ:kSͬ]`4ݏmGB4PSA.GYU'KOS9|H'NK&3@؁so$ ,Ґ&4%\iL@ÛOgbқ9rmЇVO@ĭJICO皂ɋ -*kL0ưե%昵TipmLlucACyG ᏌͳJKv FrJo1@B<2:j޶dD3f 0&R!r仫nac@yso;4Y$K|M KӪl YimT. e"Q1]s}'C ,;Jp7 e={ f*l2V$0-#At+^_b)141[P"u}nU\|bv+~92#:r`>= ʊ +)}iDݲAb Y S. }ռO1]5̭lu^-#] T&zG]hP!M[%Ys(凞$gVv/A~Le!߂ kU9jL,Ŷ] eZdmTN`#XaCc!bט _^k3E+#"5som^HLԥ1gW4H7#r2&pِpx -C'Pv1Se;p$UZz{ c*{z/^%GӟdGy={^{ͼnmƍz^ "3z |q}uu5 5'ܶnj_>,g{Y}Ykkk%tiv۶mi9KlDp|dJͪ^d/^Zu‰[<={xеuNg>qc(3Hϊl~ _Wwv-o$s2"yR00v-1]uI&|a^-cY 6 %Q_+Trfճ"[4H7um'"uI?x||Ը٧=9~%b ?>I K0zG]y Uؽz2 w LCjd Q^8q*>5J!m;d`?cǎz1ĥC2cR?q2o.!l1xG]U=۽!{0x Y#=jw5"NV27a?j0chQBsCa/Bc~!{ҷi|<2>74t\wE΅p,j_o[Wg$ޑ:Գ>+\"ץYYrv/Y*]S2l>| \I^:!;(uXqrUƳۓ~$D첕z\ g»[L;5#l՛Ck>`OvmգB4 ǕjR'/b OQɡpu:ƏZC}}ZP0cY5:ٿ]꧛X<,vƑ ' %'?_{C;~8pcCG&YVrv/Y&6==I?r\vj-HL5IdjXXnv#dn5WJVH_'BfU`c=P5M">vI6"G+nKcM}/g&5=)p/OKa гjeX>fk ]۳*._ɦȜÐr>wȘNƷ?q*9wdQ8KiQdϒy;'FA}/|\ڦɥyаdSBp BIaf۟_l[䕃vռI{8U/r+^V)BtE{~<K"b~9uSڹC`x]LA1iʗdS5q!Xy桍 }]%rOe|)=Bf`qgVmۭw Q^Pb,15Ng=o}KZ~ O|mfiX>eG*Ϭ65dsg+TSy&W~͔;;6뮌U Ϫ纔{CiTLG%_jհ9fLn芩u0sfn[h_e<zuIEGN?&ːk}w%$רuST#!?'8Uڢ~o$JJ aj f гbVzKFc/fgcci v-ZA.LM TSAԎsm+jۑxG汤Y4eWxVԥ?fS[#*J5"kH-Y]@lu@௢0SSϝbُ?s\[;V{X?*QD@U.wץW? ABn;vÑ6&S grXzsMNBniM28Uut iEz:{P.WgK(g.i|\Ưfkhki?޵urNJܻhSo%-/sj+l1MizGv'SV{BU?u)jѨF,Im2y?5o [E)+6h6T> rZowg;:ܪЀZ" OX+5Y_UJW3=(|g͖1}؈_7sO~zZLLc!UEd*PǗPDFgnx2@+'m1nrx]iYJ hc c.0bhAޟѶ]"CYH1Z5GMRnnUm\It1#dAL#ֈjld1mKeQ?gQw4Qo}Z9Իgg] ٽdblBUJ\0Yr-u/iL{m)Wkit+aE f–7crLCxIq-KKZ<.{x#F*g$h%qCI:Ynb:K|۳LA94uFAZ)R~6ָVl~@6w$̑пmpK=>RuԨPrK)y>.iîAd6-̛ NY0Īd쑀5J@!2I&:6'MVbK%4+ ,۶D$&[gˤ2̢$ v JXBOc8xjk ڥ̋vsy:mMV|ʵP%vjr˗B:WnǤ<4n }pHkؼvr=xVեQ={Dt& .&7-̛Y,yV[s5YLH|F%ըghkqU|AB%t"j.1lleMkQr%0b6 5kva b1Qc*;$I^c\ [JH˕4yw(riSjTSd :/Ҧ,a ͟,27+o17BS܃,s yF-`̶e  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~SRoot EntrydO)BjPPicturesCurrent User8SummaryInformation(PowerPoint Document(PDocumentSummaryInformation8rosoft Excel Chart./ 0`DArialans ll-ԥ0B 0"DTimes New Romanԥ0B 0 DWingdingsRomanԥ0B 00DCourier Newmanԥ0B 01@DMath C Newmanԥ0B 0PDSymbol Newmanԥ0B 0`DMath B Newmanԥ0B 0pDGill Sans Ultra Bold0B 0"@0.  @n?" dd@  @@``_ camera.wav.WAV 140105RIFFWAVEfmt ++datah||||||||||||||||||||||||||||||||||||||||x|x|||x|tx||||xx|||xx|||||x|x||||||x|xx|t||||cgxkxxt|x|t|ttxxox||xxto||xt||t|x||t||oxkxx|xo|||ttt|ox||ot||xx|xot|||x|x||xt|xx|xx|t||xtxx|x||t||||||x|t||||ttxx|xt|x|ox|o||x||t|oxxot|t|o|xxx||||x|x||t|||||||||x||xxtxt|xxx|xx|xx||t||xxt|x|||xtxxxx|||||t||xx|||t|xx|xx|xox||||xxox|x|||xxxxt|x|xxt|||||xokkgWto|tk||t_|kxot|x|o|x|||xx|x||xo|x|xx|x|xtx|otxx|xx|||tx||||||xxoxo|t||ktxxx|xttto|t|k|||x|||oxo||txoto|x|xx||xkk|t||||xx|t|xxto|x|kt||||xtt|||||||xxx|ttxtxx|||c|k|||xtxxtxx|x|x|||x||||||x||||xxo|g|x||x|||xt|||||||||||x||||||x||||||x|x||x||||||xxx|o[ooBtWt™F_gtBW|gJcttFtogotxgoo|xo|x|||ox|xxx|xxx||x|||||||x|xx|x|||||x|x|x||x|x||x||||xx||||tkt_|o|tk_xNƀ)JۀgtgSk FB%||>gc:ΑtSx)k[[>xk_xx[[cSco[ookc_ooƀkx|So||gxxg|tc|to[|kct|totkgo|oooo||ktt|txtxk||||||xx|xx|txt|||t|||||x||||xx||||||||||x|||||x||tx|||||||x|txtxx|||||x||xxxt|||||t|||xx||||||xx|x||||x||||||xox||o|gc||tok||ttotxx|t|x|xx||o|x|||x|txx||x||xxxxx||||||xxx|x||||||||x||||||||||||||||||||||tx|x||txt||xx|x|xxxxxxx|||||xxxxx|||x||||||x|||toxxxxg|ox|ott|c|x|ox|tt||||||||xtt|||||||||||||||||x|||x|txxx|xx|||x||x||||||||||x|||||x|x||xx||||||||x|||||||||||||||||x||||||||||||||||||x||||||x||||||||||||x|x||xxx|x||||||||x|||x|||xx|||tx||||ot|o|x||xt||xtt|||||||||||||||xx||||xxtxx|||||||x|||txx|xxxxx|txxt||t|x||xx||||||xx|xxx|||xxx|xtx|t||||x|||||||||x|||||x|xt|xxxtx|x|x|xx||||||xxxx||xxxt|xx|xtx|t|xxt|x|x|txx||x|||xx||x|x||||||||x|x|||t|txx|xt|t|txx|t||xxx||x|x||xx|t|x||x||x|x||x|t||txttx|t||xt||x||||xxxx|xttx|t|txx|||x|t|x|||||x|||x|||x||txto|x|x||txx|||xx|xx|x||xox|tt||x|x||x|tt|||||x|x||x|x||x|tt||tot||x|t|x||||||x|||||xx||t||xx||x|xo||ttx||x||||x|x||x|||xxt|ox|xtxx|||txx|||tt||x|||o||t|t|xtxxx|||xxo||xt|x|xtkkkot|x|t||||x|||||x|||xx||x|x||x|||ttxxx|Nktg|gocxo|o|ttgt|xxxxt|t||x||x|txx|x||xx|||xt|||x|x|||||||tt|||||t|x|||||xt|t|x|x|tx||t||x||ox|ttxt|xtot|g|xt|||||xxx|||||xtxx||t|t|x|xx||||||||x|||t|||xt|||tx||x|ttttxt|x||||t|x|xo||tx||txxx||x|||t||||x|||xxxtt||||xt|x||xxxxxx|tt|o|gxt||tg|txx||tkkFokx_toc|tot||cxxoo|xxtxoo|kx|xktx||ot|txx|x|||x|txxkt|xtxxt|xtktt|t|xxxxxxx|xk||t||x||||x|xttot|xoto|oxxtoxx||xxx|t|x|txx|x||xxt|o|||kxxx||x|x|||t|||x|||xxkxttxxxxk||xtox|xx|xtt||t|txx|t||x||x|xtcߌƑct__|SWo|Nott[_t|gokx|tkxgtttcokkxxxxgc||||xxt|||x|x|xtxxx||||tt||x||||x||x|||||||||x|||xx||||x||||||||||x|||||||||||||||||xx|||||||||||||||||||||||||||||||||x||||||x|||||xx||||||||x|||||||||||||||||||||||||||||||x|||||x|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||x|||||xx|||||||x||||||||||||||||||||||||||xx||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| chimes.wav.WAV 250106RIFFWAVEfmt "V"Vfactdata{~x~{}}{|{{|}||v|ww|}|w}u}|w{yzx}y~w{}uuz}{~z}yv|zyytvuyxyuv}xwu~}|{}~xw|yt~v}yryuuz{}{~}~v}w|x|~t|sy|i|pieyptrzwvu{x{t~{x}|urtr|x|}zt~|rsu~{~}|~y~}xu{~{y}wyxu}ivw{|{xysrqkvkrqpm|k{x}o}pu|ztp~vv}}~}uvw~txw|k}tuw}z{x|q}yv{z}|y~q{ppymvqsp}ow~uxx{nx{ivwgwslxzo|zz}||~wt{y{}}|{xwvzqtxpxws}vz{v{~q~|t~}v{{wwjyye{okympyutx~|}{x{t{twyqu{}{|{~wx}t{zw~|}~z|uuzkzsl{os{ut~w~xus~vy~u{|y}~zwypvnsonvhwpqzt{{|}}w{}sz{w}~~w~t{|zo~ovxry~w~|xtzt|rwvrzr|wz|~}~ywoysx|z|v|xtvtntslypuwwyzvu|yy|w}}zz~v}zr|ptvoynytt~t~}||vytuys|{|~|zzw|u{vy{y~}}~tyrpv{ozuwyy{|~}~}}yy}{ywzyvuvzrtxqs{lzxqv|~~|}z{~~}}vuwn}yuzzyyz}~{}yzw||sv~x~{zz{{w~uyx|}z~}wz{tx{o|uszyu|~sw}x{}~|~}{y{|u}{wy~pxzvqwz~vu{{}uvvsmveOOVOhx^]~jsschqf_      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNdQRTUVWXYZ[\]^_`abcefghijklmnopqrsuvwxyz{|}~^mv|l|c~t[y~vfl}zzf}}|~rq|ui{{ld|t}]~rrXxtagjnssjs}r`fqv|vjmyroyu{m\ylflxqhxgV}jXk|^fzzRttou|jnnusptipravx~ik{mtmZnwj`poaf}qanx{Txhvnytw~`ppxuxulrSzumyikyatwiLvgdX]sg]j}{wl|[Vopyi|ocv\f|stX^e~kikgsuMnzpwcrvxV|}yO`ec~ebrdoYw}Xz`kig[swgkdm{\RCjysybb|~_fhz_kdwTpzt_hqbwiXabvNnzkSzro[jyxDypg{^zsuU_Z_zjbTzdwfvgc__\xvaevjfQ~PV|wawYfWclp^ovOy~zgcwakq^cimRt{{}]nuV}m{oLs~z_przi`gjkxv{qRwfe|suyaq~e|qy~n[ooya{cQ|q]cysXvw[hz|Vr|g~rqgi~}szejsUpzjgqzVjrunen`usyq|i_~z{^V{hTyf[v~^fmwsrsLxtV[hKesOvbvpSfgmumrZpol}}ulpuoqkijpwxrylk}mxtrgg~oitkyrXeg~T}syHuyZbw}i_p}nXrYflYl~dmvf||kUtqVln]tkrw~sl~vyvonmqpy|y{lq|nqtxueocdoUdfZptTk}|ZlqlvmsSk~b]jYmqtnlr]g{Ucj~Rm}\{vlkzzmuwuuy{my}qqzkv}yzn|re|zs}o}tas~n_wneraqp|`\uceih^p]i{o~cquzsizko{`hlZzmVr|\}lywkqyrto{pt||wxv{spr~uzuponzyzvhzuqvizx~hospt~[rtWoZ]qZ{qlwtl{tbpeile}nzndkfd~{tmwj{}rju}uoy~}uvzwwa}pmzvu~pnvmt{t|pzy}vpstmlpZn\Zpy`yty{jr}~lxq}wydrtqghnZrsrlwjbyr\xxpkvqn~tjfu_mks{vvo}ypquqrxw{orpxu~gp[{sxjaq{jruzpkj_pnyr{^qYlgqpwsflvSsijl~gp~d`v_rwjo~b~|j|zzsotzk~pwammimsofw|lneyywgwk`kxeYocnt{utz[w^r}se}~uk}quXw]zbxnxo_x}rasxly~sy{wo~tqwynv}|{oznxzcxfr{w~jvqv~`{xRsdc}l|rextlovf{skwi~nmy_xywja|ohXlgxqw{}sszsshunttsuvwi}zprypx}flecfXvvihroq{jrt}vrk~{i}nzg{{hvooUd^e\txzkux{{rvnqgs}v}mky~wzum~~}w{|~i|i_z}Zofy}habZs}mo|~|nyst~u\ktvuizn`~rwhhb^mswlym{x{}l~yv~ftyqkpq|tu{r~l{ly~nz|vqvugg|gyimtzpemu}f|{nztnkhc}fmbluum`crfc}spz`lzx~xl{x~wo|yy}xylrwx~o|xz{w{~oyn|yhr{demzr_btr_sx{]hu`sujyu_{`jqdtvnyvws}l}mxufoytrjx{t|wnt||wnw{{{}~uopo~o~w}|}rrvn}wewn~rm|oneunpv`id{tze_jky{x_qrtu}owgrjflk~dxt|vutx{usxr}pwy}{xnz}remroqgigux~tz[qmnba|e{g`h\tlymbbx_rsylzg]o]gi{quemhn{~t{x~tz~|rts~y{p{rujm}otrm}smptrygpnxnha}ofrlstklxvs{ryun|f`ouhzk_{img~ukvtl~vuw|yztq}pz||}wtsurvxysqkhnq{~wnr|us}jYnalymmys|zxu{lslc[}kxq{gq}iymp|p_memgzom{|v|~z~}ztsow}v|txgy}py}mz|}muu||lmuho_}utypr~uzryqsu`gi[kslrowtzgrzmkvb[s~d|vfvp~v~uvztsnqmyxxsztp~u~z~u|w|~xnzynopluus|l~|~t{{ozomwacdbvntuqww|{rtwlnbdZu{qnvh{wzvjv}g}raotly~l}~~{y}yxqrv|w}owxvhlyy|z|vq{}~zx~qyv{xnse[lvkuqp~}gqd{bca_xnx~yxt{q}u~qujfWmclmzzyzt|zs|{ryljtnt}}nrousx~~~wzyg}owvoi~mb}vS^ggdz{re\mxWXxukaq}ibyrwqhnlM_r~f}tqmp|x|r}wl}bijl~n~bywrtuzwelVspdg~sszxrhzmzyptnvbepw~u}~h{fejpwxsqy^Wcpsy|}y[ljvdx}~yu~_yvww{qpr]tx^dztvyrl~wio|eimrtwnn`rhz~~xvswelr~wozgdGxm^x]ryygVknnyzrgfhubh}}rucws|l~~h[rjS[|nozyy~|ipoyhyybzvi}ilYp^rty}pltoqbO|a]zde~wyghlxruwfZswUmsvtyasoq{|qa|e[{VyZnb|ttnrrqhsktqfzxcz{jovow{sugrZQlOqquzqfrrw}qjvqgg|tx~jszWh{tqkwogTcnws{~~nvuutpwxru~g}sk~wgmffpwgmxv|~~r}yffyejcqqwrow|vpszzzt~~~|~s|~xlq\fygojywd~dfxtkwysfpf^ozzshy}i~x}{mrlkh_zm|{om}~zgzmy}{~tqhytmry}}rzu}}tzuqqgThoon{nq{ziuizy{qz}tyyt{vxlrxiozdzx^durlus~w{qowmzw{~|}{{}uw~znnvqow`]~tpyxxyqkhk|tx~zzv|zr~zuy{o{ylijcxpn}klruy~qzpr{xz}}{y{u|{~y|ttvyuygfwwsuph|zmryt~otivw}{}{szu}}v~~ovwswvbf|n|pvqw{q|rhop~n~zv{|utv|vwwxysscjspjivzx{xv~~nrfrkvxx~yx{xt{h~s~rqngpsxlptxqpytpymgyzv{}|y{|z|~x{y|t}vt{mdtpx|stmppsyuuyt{~t~|{|w{yuyxzvxmu`oqrynvsqurtft}v~}|}x~{{u|xzi{atsnl}uvxn~garl{w}wv{zw~v}yv}x}usws~wvxto|~p|xwv{jdw}izwzz}}~prwzrwurornwz|i{{b]gt|m~|h`yxkvrs~xr|xzy}s{qtyuup{}{swztqxwxx|zzzs{{s{z{|oy~yn}p~|pqzxz{{ryozuj|qtw~ppo||svu|uuq{eue{st{z}nqymnbnpy}~qv{o|ru}n~ry|{z~zxzz|s}zu}uzmlXsi}v}yvzmpvtoy~}yty|x{|u~spwztls|qxzn~qv}sw|zw~uwtvxuyx|y}{}{}p}vys}tunkqzr}zyzztyzt}z}yw~t~wplzv~}}u{}m~tkrvu}z{vtr{xsuty||zs|kf{qpsnysrzlowuvvtzlpzntyiq|z|}}~x~yy~zy|szittkt_otr{~|j~sk{j}pvn|}sxx|sw}|{yvrynx|xvwt|wwzw{~yp}rz{t{y{z~|{vyto|v}utq{}lrnuzx~zvzuputuvqwizwzx~rtv}nq|wuvx~tx~}zy{s~t|uw}zt~|vrwzs}zpoy{o}{nmhcfl|fwuy}rri{mve}yfvu|xye}yf~pp~~yx{vxvi}|h~{ixl}j{~jvktu{x}y|~{zxt}lqvzyz}n~}gjrwrxy~~r~gik~iqtkq{zo~zt[L~fO~ndnv}jzyql{}|jo|n~zuyl{zml}vo}urt|p{zehwvz|y~r}xzq|ywzys~}tz|zt}npvsww|w}vt}ypjmu{u}qy{~|||g{k}l}{wq}wt|tktr||~x~tukrfmc{zfho~pzypzmuxufpqpxiuxwbxdtssy}y{lwhyk~usuvvx~}p}p{pz|xx{zs~~i{j{tuqhymvkqsss|s~yt{~ts{`rsitkwpswp}zm~r}|vw|rnvrus{pdllx~ztqa{k}z|~|~zlse{rwqtoxwlyusw}{t}sqorsn{uoh|vv}nhamk{s{w|t{q~o|msvh~tp{vxwxmys~x~tymtwxx~|xvxysx}|~x~z}ttl|}z}qr|ystyw}u{yzt|~pt~{ryoxynxq}~|}{|st|xwqnmyqzw|tp{v}d|}btrsty^ruipn{l{rxoz}s~rvnzrtx|w|~wuivtn{||{~wy~oiqvk|znwxtu{~wyn}|fqkz|ysx}qyp{sz|~wyrmgrn{|w{xloetwzvux{upxq{uxu}~wq|nsss{~|ueqrk~|gznol{px~uurvykur}{{{v~mut|qm}}wetsvpzsuwtfrl}kxk{ynung{}x~pw|pa|k||}oxmpxocr}z~wytqpz~wpl}}sxj|ojhu}u}{jxhrppf}rzdrwswboxmxphrfqzuz}is||qmn}wmp{evxyerz~vqh}vfqxrjq{zqxruw[vnzfpfpitux|tqv|ynimgl}xkqsvZfkrovzybw{utmvzpyzrh~~i{ttve{ygymbYz}cm]x|`memy]]z~|mp^|`kpez~zutxpuyxhzy|}|}|ylyg~uzu`}tv`rm_hwvl_|v{]dmyn_ppsvdbxu`lmipgndttfotsg{uvty}yw}zyqp|wqmwz{_sykcfokal|sp^fadisykiknrx\nxqqqnp_vl}m|pyvx{zuosrtz||dkwjmdwf|htzdnnnmksvz]mgrqppxjhvxokr{}ywl}oxvunxoz~y~zwv|syzvxwyayeulrkylwt`mrqhtr|joqxm~ty~qvswstx~ujpwytm~|vv~t~uw|kyz~|axyhoxnsr{tptvy~hpzzsrnylrmro}vx~nxw~wu|v~ux{~}ytz}l|{{~vuv~v|vmwwwntvlwj{xerzfx~{{r{uzzpy{w}wz{kqu|}z||w|mwx{zssqvzypzszyvp[tvrsmvz{r}ywmvzohgb|ezpvUllsnwcum\vnyxo_L|puccIwbok~lzphgbwp\fRqnpve~u~mtdq{|oiWepmfuklfsy|}vzrnlrpvsejcesyxpdenjyzy|y~dn\frx|e_biywq~rwysynu{|qba_tw}k]jfmo~z{~kxktnrqt|mtVeZtvfjhv}xwuxw{~qrnk~}mm[hsxap`~j|n}prljcmanpr]m`lyxhxk{ej{u}nbjefxhg]h|zyxuz{xzzgrlt~wapYro~{yjupnwp|wy}mpujp{yyquwmqzyo|}ytty}puzbxewzcpk}|tz|u}on|pts}mowruzw}z}utsyqku}|xo}unywz{ssv||b|ssvu}w~yrxmpwryors}~qs~sxw}sl}{r}ltyn}znyrzqrkp}x{zpp}p{rszym{vmlxq{ysu{g|qt}nwwtx|zl~xz|j|tj|zpb|}}s~~|}yrp}{w~hvn|p|wjj{sux|nz|q|w~syn{|}~gdxu`qzo}yks}p}kyxxtv||vt~uxs}|outwkhVs`^NqbnewqiyYlQrwa~Yz[fvkgxt{vjx_[wsppu|prZ{d~sw}tt|rv|vlv}tmkbx`n}vbrizs|u|xiwzJ~O\\mqvlpoohr_ipWR{hpyuZhNwQVf\nbplonjsiy|n~fiytydwz~h|ad[SbJDOAv]rezkHj1t3izTzbyG~kZ~^ar@dSq:rhc^a[Av{|htxUph}pIWhGg}~|bnzkw]z~wxzbepwsiD_Xhumke_r_o_~x/l,oC|\ucdvYeu9q@kMr|m_}lizfxreXrnqqu}h_aK]WMraSCiR^uvtciW1CiJ`^tEtv{^Y~a|pNfpJvY~i]a*ZbX{qwdnpp8Ej5lFObmpW`t{h~lddroqStow@4\DeRyO\fsowyXkUn8pZWmSfsYmgb@zblSen[Smp]&g8N uG^roGoEpzQX=S]Iv{J^ku_zRRygb~~gk}we;sA=;c;2R__^iu_dbh0sOUEnzxZwU\pejyspjLgc\`ITawa+r1cp_iqfmJTb0~IRbtqaS{}jtJ~~y|xtggotSUXm0gmwIr}trYczpGvq]yEs^b[}v}CbJ[kxZvZXYYf5izcic|z|_]wrj`kh{uVzULGw]cuy[i|OwpX8\\GT{tZ^wo~r[tv[^guDqZOUrqK{ymfp[bnaFdk]Svuvs{[ps|gg|rgn}||~mitea^`y`|zy~u}\ivyengVk|xx|sQYyrfc|gY}ywx{zLoidSxRetzsVj`w~^{e|uUmviFggRYws]\meubs{}prs|osMl}}cju}huW{WYw|v{t|xvumlirusQwNP4dEX]p^JnmXwukEOvE^wakMqeWadgWso~iyKpSohyxxhxrUn}pqappZvm`yisalnLacWojmZahtt}Vsut}to}|o{|yyieby}ke~{pvw`n}\nm{vmouq\js{bf~dkje|UvZYbzen}v[_|zl}toyAUb[fyjuvGYtvf~Ux[}yfXy]ba}ewk\L_}ptaxhukr~i[S~sezNVoIqLusdwoeqPwLNgLvIqiaYik~`o`prhi|iK~Gkat{bsdTWwqf>m@}|SRv}XLyV|jizYViYwy}t{oxZvtRx^[{TeR{=uMsohV|zPyXbe]WIY[z`xwd{az[a^jp]ypo{tNOpjcwRs~d}mqyglvp~vrncbe}|avsL@}[|rjOyJ~fabjlld|Yw\mrr]e_ee`hznkpej[XaTlZ{rb`qSYvbP^nmu~|qwtksdysmxufdherl}S<}UNzSeqv\cuxvk~tih~}`~Qm\{pgq]p{ll~ps]tDie8H[oKp^vy\Ae4kTrwcyt|vvtf~y`Lt_O3^Q={;Kewbb[yIiIDVRriav\peqzy^`dI*vjTyBt~j>MwQK\grxnri{jhgknmGKEZ?g[s}p|IufyD~usnj^zw mTDp`b|{etzPOWS_ezI{yg2fCvVi|mb(Xo~mQ[t3U`\yk]tuPVGntbXfPx<_jj7-YT`iDlY(}rJg{k:Mkf~(jZnvZcPm][7^k*dF\Qxa=oORpWyj3ftk}a`nijSixuyd}{Xg~gtVpFvb@d|P|n{uR hu-M|{KpmOnxi}^K^csgsvtOWl{\dFYIzkllL}W;hfcvmlUWMaLtKMh\1wA@ggSA^`O|abqjoHbtaZl_UyRSvmn+5`doj9ifl>v{~VsLd\qAzQOinLh~jfQq`xrMAb?db5Yz~L8xaT{DjZ-xF~*@vknt`sals|}~q{~vxj`q{iN|{xekf]hbvV6zw-;~fXvW{)ȅE_Xcs~F5d9T|vPwf\8sgvN7cL]~>h\KYtb|eoh,C`wsVW}VlFuQRGzEMF"JRj|~l|QofnX|be]]IRI9+Vjh_gspBntnM%ā@ P<:vWc\R|^~>_| ^bGo{Pfk;x~xik_Jeu>(cD}916Btxcykd&!jGwXQD8~emR^x[kvShZ@I^&`euOklBYE*9\y2OYo^~h]Myth0nhnWijv}xfbtiY`uoOi^fOjhZ^h\i*t"6M.\eO/Sq|lhWul[S]Dt~l}0hhrWu|zsdgj_LF)E@Qo2WU}P4[b$aq:t[nL`d~pci{S_yv|9lRMOOtj=h}dJLU}dkyeJ628jshlz^*f}yXDBAqbKSp|cTjsjehZRzdKd=]DE~Z)LmwxV/'P_.@bnQL8DPZikjQF;HS[+V`fdruz{ngu}Pi}bJGW(J_W{~UF?Ī?Zdg8~xC-wo\w`xnv-c0ewz]~~yyZRao\p}t~|AktbPyl#{\X6Pu?ltdv2^|Goka[C^imvyklcfn`P~eWawScXo~6g}NǂCwzq([t-\vok}nkXf^~{~zv[yV9Nix~zgNoon]M|p`bNs;}jtMZYux~iQ\p\yQ|_c}|ba~\t_D~G]{pk;MpQCpldt~ri7sq[r[kex]h{TiT>_R{]tX:x#[z{UT{ne{Lb_qnrcnPChl^rr^zYiKzLS}xomilPz\xh[cVWWt7|h`~gkrku^^XxRiygl)rtWrfy{]rLyx`YnCNyWKrR~Tyzlxr]jvsTlsbZ{pnwG~](ip{rw0zjxQ{`xQKv~frc^}fu[o~r}ndooLBz_~s^}bTuJ[{=NRL~}qfy\~`rLs{urjmmjvbkzeVvh}\rlAwsX[exPTibplL~Yigrpsjgim{]vpgoDmmfwxiRRpxS.}hwvg`geS~t`uayoyh{~wnn]{|_imgSxWvegr~T|tkm^Y}h84C9fm\~k^jwa}ofw}lBtsSa|v|jgvhieFqnga]pkt}YC|L_zopTuk^dY~snPQGe}wbxZsdQvwifsP`k\djgmvRgMew_~yyp|j`qtoznyvsp}kjuWmq\KBsiZuDO(bcjxYkv}slhkWj[g{zdy^xnhzLVs`[}yaRwUcny`zrbotq}Xv{zwWus_W|J\wprfqrdnTMzev`htkwhos]zLk{jkm^nxx|mfUgqnTobwjiQwdt{Jtfrruvl]apwg[cqk{gu{YlrpjW~u\b!jQuo_z|ptj|rpsejXvQde`cnd_pOyzYavugb|qmpyo}Wtxy\gcu_c{^iqns|[hpLvttPorhkLsvYbMlOej~b^i~v`htvxw{v{{tf{t\{u~Q|lb;]D|mo}XPkoul}udxfgV~x{wqkkkr^df_bslypz}b~r{Nl{n`x`?s[>uePp{ewi`e`sv\vPuj}u~tg~ouxvqwu~gwzj|oun~jcjr|TAuShP:[Yksdgv{vn~k{xu}htgxngugvmptqroykwLkmdr^yhRdpQt}eYsM\pwajvMl{ddyYlo}kl}fv\|X~qrjyu{d_zn_o}y_dws|sauxx}hSSQaLsnYvjv_x}{znvs_Z|jXoy]mk{mvrknsnwyUy^yg|`T`}sglnuUspYasesXUSZ}t{fzpdwnygbsnagsws|kyfhp}nsjtktxp~iwco~xov_GcrW{d}VPq}jrxwqyp~o{nnvzmsiflpshpnclkuZpszyYZV[}w}j|ho_o}^jq\he[pssqolya^}xtgucsksxhrhXmisi|who|syv|dmgusl^lpxpYs|v\T^dxk}hxh|izsvzz]xs~[wiy~itkxi~[b_Wiwgmwv|{qjrVg~urpxxvsaY{ljenf`{muxXbkRw~y}{wzr{z{swrrqzmzt}ocliy}tZZ|ru]=[Zdkn]ujvkh~{sxtmuuov{eyc}ubonynU~`vzpQdri\ufxt}rm}piww||tu|owd|rYdvhr|e`hTdirxqa~]zfr}_qpvgqvkgzy{r~drtubjvrXdsXOsw}W}Qv]upwt{akr{_xp|rcpu~vlz~vw~sx^Uwhkxnf`{z_`tr}{j{t|mwql|wepqfUv}Z[s`bo{{w~kmlrjQp{kT}|kS`_Y~o_zizomi|trqtLVyqfkxksl`t[hsv|{m|r~hylxzdu{qwtpuuzzo~ptj\loy`In|W\_r~pgm{~w|}qrnwtjnry{hokXvmiljyKK`U~tb_owwmzsv|riscs_f{Zytngmniryqngstebum|jh{vxyx~|ypoh_{mjkbpfam|kqmg{zeciwl}ay`n]itkvq}yiw|jkio|o`Wxk[o}qWbedquaycuhn{kq~poqz}{xrshz]giYzqdk~zdclzjho}q}ni^r}gutzbzqPZu~Whv|{W~ouvjktqscoayW`rxipir|c^~uhcxsg[kzsovjiw|hw~w}so^j|jnx}sq|rx~vomreiRZzw{^f`dYyj{nyYixt\^ntle|mzgyonkryxw_]zmRf~c}bpg|dj`~ta~zs{zt{squwv{tsx}wmzilkhovk}qswtNa~\Wm|znwxhr}frxrqmr}qd~lz}_bc\\rvf{j~wWtl~~keucj]v{hybe}tm}suap]cuudlwors|zqfiu~z{uux~|py}sp~{o{ssuxqoqtgWvi\d}umnnqzzbcqx}ius|dhyv}^cy}ohpgwwomrvq|s\m{Xbr|^]y~{prwvuusxirwl_xmeqqjl}fdxvp|on{{kwswtgwv~}k~n{zyrkcwu~gmkyyzmydw{w[]`Qtri{[ookjpvwipvz~|ssufSl]Zxrpts|tizkvhT~w}|p|}{zxyoo}}stxumome}rszsh~rjZq~dxl{srutpfrsg{o~i|~}ijzzV_kxc{yzu]xpeXqaauqfrv~wbjwwwwx|oyrn{zrj_vj`~i^ke~n|w~wk}xl~}{|y{{xxzej}l`j}i{sycsvw|fxe~vXcwlpk{ytrwylruanqtmiovjo|cfxbqmrvmqzr|ppt}}}vgzvir{yzpjn_e^}kzi`bxMszbt{tbpzs~qfmwrzwvuxnu|d{nn}uku{qb}kuk{[~hpsvw{o`q{tiyl~onnzo^jfwwjtc}aomttcmuuksnuw|}fzqw~x{|wwhz|w|whzkql|qd~vxQk{gsskhpq_[ywrynyygvzofiipuk|grxfs~hkwvk~xv]p{ntory|e|~|{fu{|||p~yjyh`tnlg|s~wgr}ptoxxz{two}or~vou|w{qsy|~~jvl{h~kh[vmfxs{{quxVwlxzrnx~h}vm{u|pi}ogxxo|vhyit|la|nry~zyu~lsurrg~}itq}unvjn~xsq{so|{|jhr{m~xpyp~||l{qvomvzlut|swzfret}v{pt}mt~|spp}x|tuwuxwk{}inopu~~hruhwyosqpy~}~xmsvustx{trnrp~pwzpvskyuu~ezuzoevtl~wj~wz~|vywzqv|z{r}_m}vvy|ts}xzzzzxvst{w~rn~vxyzwwszzhyzsswpi}ht{xm}~mo}l}ut_}{q}utzt{xtr}m|w{yryouhoqzrngzsju{u~q~xz|~{lxhk|uzsvr|t~e}~w~ntvuy}x{|xvvww{v~uiu{wz~wspnkcvstx{xs|}}|o{t}||smt{rovj~{vxth^xqmzwo~{ow~v~Wuz{p}rp{wudiqwtbzk~wz~x}qr|vvu|qxxq|zty{|zhxx|uu|Z{p~kxw}||twquq}xpuou\z|v`ncuxhxxqrszy~xsw|iiqwyzlzrtt}votlz~zvyty|ot|yksybekv{s{ow~crxuzl^~}uqsxzcoyhn^{tYpkytZYhd~v}ogzi{s{Z}gumwr{tvov{hYt}bwwursb{fi\y~vsif~pyy}x|tvukstxclp{uxswwm{{~|q~OgZgtn{uv|~_rx{sc_|j~ttx~pjriqvorhz~qlvno~w~wxjndxslynnuu}mq}lfynp}w{uup}qX[{kv~{}_k~zp[}ba}kajt|}rmp_fpnr}w{w||~nyljrwrsxqtm~~v{|{{l}h{sxZ~lkzuytwexngoewszv|u{l|wl|gwii{_rt{cluehdr{{z{kjvn|wqypxny}}qjxpcw|iqsz}uzupv{vvhfuuh{ryvzjovouvk{jtwt~paxek``v}loidnrmys{xyxwmt{u~ev{p|muxjlypv}xy{pz}~tux{sn{zzy~xxsu}u}oznpsxx~|zzn}g{aU}rwr~ras{qklus{sssnlnpqmZ~|rs|yovtl~as}|xhpa}x~{z}~rx{yeq|wu{{}pczwyoo{uklw}pivmn`{qtvxt}t{pwtvurqVw~n{mrwtn|su|r{{{q{wp~uuuzfqwzttzyqx|~~q~rzvrr}xsbptq}r{p}q^oztvrnx{}wtz{xucd{mrxq{wvoy|pmnuxrjzrruz{vkqvjqt~{~w~x}~yesp`yty~wpuq|wxrkrr}u~h|x{uf~qmstqm|||xmuyvzhm{|}{itsqckyzor~{~|_}}znu}{v~tgsv}yqjttwcy}x|v~s|qs_mv}is~~x|wu}ylonhqo}}v|{q~oyil~vsiz~uy{{t|ps{{}uuyyz~|dpr|qhy~}}rxzn|~pv|sk~z{~mxwnzqxu~szjnsclxwrqzcsybjmwy|w{rknxzx|yxz~uwqt~{~zq~rwznvzzs{~o|~~|syrv{p}||x}|zl}vjvn~{y~w|wmwsmsk{mouzvmq}ryxsty}u|zvz}suztv{xv}~w||~tp{qk}xi}stww}v{uwt}~|vmzs~u~|squwzkt{{bly~~mo~n||}zor|jxt{zxruxq~vq{}||u|{m}|~}s~o}p}|ypvpu}|~}uw{oyu~ww|~{txxn~j{sp|tqr|zvueeps{t}xns{x}{h~}{|~v|vx^zuvw}uu|uz~~t~ytznz}{qs}xxx~{wymh{v~}uoxyvop~~yjzyw~k}}j}qtw{|rp|z~vovz{zrw|z~zynvzt}zwyr}{sxrxwz~zx{xxyxtyqqs}z||u~llqqy|}q~}r~rsyj|x{ntz~yux~wytor~yzvv{}w~w{}w}u|{~kn{{yw|yo|z}vrz{x~}~wxyttswxy{ih|n{xmzjp|m}z|q|nuz|~u{}wzqp{zy]nwpqwtmonrxptlkjwqmziq{rm|~~|}wm|qpzuylkwsg{kv}mrwwc|vwxjzzm{x}~tovvxtyuw|zewx{w|}z~zwxt{}~zuwv{w|vntrxwz~|{~sxu|xxrz|y~|xkruvuwz}{z~w~}~~y{{zup~zuv~}x~rts}|rwxzrq|xxsw|{z|~vy~zwt||}ronsyyw|~yt{~ztzx~vt}{~vvzq{ysvvyrxs{vy}~{wv{ql|s~|y}z~~~z~|w{zy~~{w}u|}|}pyywv|x{yy{z~yvz}xp|n{~rqwi|ipxz~{}{~su}w~|w}sw}z~tx{yx|u~xt}|tyy|~}z~~zy|}y|w{ww{}}~~}yxsy~x{y|oxvy}}y}kr{ywt}z}|}xq|}~|{|wy|}uqx~rrv}|~xu}yyx|~w{t|{|}zxy{|svuvzq|y{z}{{|uu}z}w~zrs}~|q|r|qxx|tz}y~}y|~yt||yzp~{~|x{z~w{yvyy{yzsy}n{~~v}sz~r}u|wuzzxwtu}}~wu~u}{~q{yow~{v}x~v~qq}~z||zx}zvy|y~zy||z~~y|}y|u|z{ztvx~zyw|z}~}{~{y|~xys~xvvx|x|ww~z|~stt|y~t~}yz~}}zxx{w}z~w}yz~xzty~}}vvzz}tyv|x~zyt{|rtyzrz|xuwzy{~~r}{~{zy}x~|}}|w~}x{|ww}~|~{x|}~|{|wyvu~~x~v{}}~{|}uy|x{{}|{t|~p}yz~z}vun}xuqz{~z}{z}yw{z}y~y|x{{|}~}{|}z{}}uxz|z{{yqp|xuztu{~rw}u}~}x{|t~~wy|~}z~{zzy~|v|~|}~{}u|z{p}{}z|{~~~|y}wtxyy{~zyy|w}v|rx{~t~wsv~{}s~vx~pwrxv{|wz{~~q~uwy|x{zz|vz|}||y~t{}~y}yv{|zu}~twry}}{|z|u}v{yw|wxsx|}{xu~}y{||~{|x}{uvz~tw~twz|~{{sw}|~~{{wtxs|txy~z}~yssrztzww~w~}yz}|u}~|vu~zwvoy~v}yx{||y{xyz}|v~z||vwswyw}ww~x|zw{wz{y{uzwv}q}{wwvt|qwyu}}{zz~{y~xxz~~~~~{z{|{}{~yyw|zz|yyy|~{|{z|}|yu~wxwx}||{~|xwvwwy}sv~z}|xxv}wy|s|zy{~{~y~|w~zx~z}||}~~{xw}{|z|~z|~z}z{zv~~x}zvzvxx}x~}}}zxyuvw}z}|}|~}}y}y|}|yz|{z}x}w{zwx~{}y|wuzzz}y|{}{{yy~y~{}v|z{}|}~{y~}~~}}~}|~y}v~|~}|wx}{}~{|~{zxyxzzy|}u}~}x~|}~}xyzuz~}~~{~}~z}|}~~zz||y{z~|z|{~x{{{|}|zut}u|w}z~}|~zz}zw|{}~}}|y}~{~}|~~yrz~xz~}wyv~wz{}|~~y{wt~zyw~wz~}|r{{{z}sw~xzyy{~}x~y~}}xxv{~x{uww~~|~y~v||sxxv{|yy}y}~}|v|~}s{xux|{{y||~|}}z|||~x|}z}{~~}}zx~}}}}~|y}{|y|}zv{|~|}|z{{w|z}|yv||u{~|~{x{yz~y~}zzwzyz|~|}~y}|{xwzy{|}y~{~~}z}~v}z{|~~}}zy}~~~}||~{{}y{z~{~{y~|~||~}|y||vzy~{{~{~}|z}~|x~{~|~{~{}{{|}{~~~~~|~}xzx~}}~~|v|z{}~~~~~|x~|v}~{}~}~{|~y~~~yz|}zz|}y~~{|}~}~|}}|z|}y}{}}~~~y}~|{z|{}{y~y{~|~|||}{y||||{||}z|{|}|~~|~}|}}|{|{~~}{|~y|||~~zz}{{~~~~~}v|z~|~{y~~z}|}}{}~|x~}}}~z{z~}~||z{|w}}|~}~w{z{~{{~|~~~~}{{|z}}yy~yy~|y}~{~|~~~{z{}~}}|~}y~|zy|}~~~z{{z~}~{~||~|}~|{}|}~~~{|~~{~|~}~~~~||}~~z}{z}||}~}~~yy}}}~~|~}~}|}~}{}~{||~|}~{~}}~|~}}}~}}|}{~|~|~}~}}|z~}~~{||}}~|~~}}}~~~{|~|~}|}|~~{{~~|~~~{~|~~}y~~}|~~~~~}~~~}}~||~}|~~~~|}~}~}||~~}~|~~~~}~~~~|~}~|{}~}}~~~~|}~}~{|{~}|~}~~|~}|}|~~~|}~~}}}{}}~}}}~|~}~~~~}}~}~}~|}~|~~}|~~||~~{}}~~|}~~~~}~}~}~|~~}}~}{}~~~~}~}}~}~~~~~~~~~~~~|~~}}|}~~|~~~~~~~}~}~}~~~}~~~}}}~~|~~}~~~~~~~~~}~~~~}~}~~~~~}~|~~~~~}~~}~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    4() IT 0 )g5lq    7 .  c!  ! R[r2 X  $4  b$yM%@əzO; b$;\¥_9ZL b$-Uяx6x:*Wb$:lTvڃ/'Qf{b$a$WeWT}MInb$-uB QPEb$KsIADt b$`T ߨIFdFh-b$AjO%䧇G0J%b$\JPJŶ;b$AݎO5c30$$"$*Tӯ1X# +C$b$:Cin^\lc7b$B+ {?|;c 0AA f3ffA'"@8\h/ ʚ;k8ʚ;g4GdGdB 0ppp@ <4dddd0pC 0l`- g4#d#dB 0Bp@ pp80___PPT10 ?<, (Sebastian BurckhardtO  ='VBounded Model Checking of Concurrent Data Types on Relaxed Memory Models: A Case StudyWWSebastian Burckhardt Rajeev Alur Milo M. K. Martin Department of Computer and Information Science University of Pennsylvania CAV 2006, Seattle3]The General ProblemThe Specific Problem Case Study: Two-Lock Queue& ;Algorithm published by M. Michael and M. Scott [PODC 1996]<< pclient program observes ordering of operation calls within each thread argument and return values of the operation code is correct if and only if all executions are observationally equivalent to some serial execution (def. serial: interleaved at operation boundaries only) We assume serial executions are correct (can be verified by convential sequential methods)`A'"FR &Finer Interleavings = More Executions kserial executions threads interleave the operations (operations are atomic) (operations are in-order) sequentially consistent executions threads interleave the instructions (instructions are atomic) (instructions are in-order) relaxed executions hardware makes performance-motivated compromises (stores may be non-atomic) (loads/stores may be out-of-order)LG_%U"]q# Case Study: Relaxed Memory Models&$  Which Memory Model?Memory models are platform dependent We use a conservative approximation  Relaxed to capture common effects Once code is correct for  Relaxed , it is correct for all models See paper for formal spec of  Relaxed ,I Halftime OverviewGeneral motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Our Verification Method How To Bound ExecutionsVerify individual  symbolic tests finite number of operations nondeterministic instruction order nondeterministic input values Example (this is the smallest one in our test suite) User creates suite of tests of increasing size H#]g#]hWhy symbolic test programs? Implementation codePwe hand-translated Michael & Scott s code (above) into a low-level representation that uses explicit loads, stores we added code for dynamic memory allocation and locks" Commit points designate where the operation commits logically given order of commit points, we can construct serial witness execution eliminates the in  executions equivalent serial execution 00X  Counterexample TraceEncodingTGiven symbolic test T(A, B) memory model L implementation code & commit point specifications Encoding First step: encode concurrent executions of T on L as solutions to CNF formula FL(A, B, X) (aux vars X) Second step: encode counterexamples as solutions to FL(A, B, X) . FAtomic(A , B , X ) . (A = A ) . (commit point orders match) . ((B g B ) - (some operations commit out of order)) nY CA'"5  "A'" =""" -fLs6 Encoding Detail: Obtain Symbolic Instruction Stream74  Encoding Detail: Memory Order (So what did we learn in the case study? General motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Results: 5 code problems found&  Results: Scalability Graph shows tests in our suite (unsatisfiable instances only) y-axis : runtime in seconds x-axis : # accesses (loads/stores) in test Fast on small tests, slow on long tests Not sensitive to # threads All 5 problems were found on smallest 2 tests... all under 1 sec t>G>GE2  Conclusionquickly finds subtle bugs supports relaxed memory models counterexample traces catches broad range of bugs (not limited to deadlocks or data races) is more automatic than deductive methods  " not truly scalable (though scalable enough to be useful) not fully automatic does not solve full problem (bounded instances, commit points) Ordering/Atomicity RelaxationsThe following 2 examples illustrate the main effects (1. ordering relaxation / 2. atomicity relaxation) Where necessary, a programmer can prevent these effects by inserting fence instructions  What code? Data type implementations optimized for concurrent execution (Concurrency libraries) What machines? Common shared-memory multiprocessors (e.g. PPC, Sparc, Alpha) What bugs? Bugs caused by concurrency (We assume code runs fine if single-threaded) | ffVff? ffJ_! Encoding Concurrent Executions"" /       ZK0   C(  x  c $JM 0   x  c $dK   r  S 8L     0 4 WWe would recommend this method to designers and implementors of concurrent data types. X0X"1 LB  c $DLB  c $D   0O G `PROs&0(2"   08T G `CONs&0(2LB   c $D   s * Xp ,$D 0 ZFUTURE WORK & CHALLENGES&0(2H  0޽h ? 3ff~___PPT10x.e+QD' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(DV' =A@BB5BB0B%(D' =1:Bvisible*o3>+B#style.visibility<* %(D' =+4 8?RCBBCB#ppt_wB*Y3>B ppt_w<* D' =+4 8?RCBBCB#ppt_hB*Y3>B ppt_h<* D' =-g6B fade*<3<* +8+0+  +r:ee (    ՜.+,0|    On-screen ShowIBMO %ArialTimes New Roman Wingdings Courier NewMath CSymbolMath BGill Sans Ultra BoldNetworkMicrosoft Excel ChartWBounded Model Checking of Concurrent Data Types on Relaxed Memory Models: A Case StudyThe General ProblemThe Specific Problem Case Study: Two-Lock QueueSlide 5'Finer Interleavings = More Executions$ Case Study: Relaxed Memory ModelsWhich Memory Model?Halftime OverviewOur Verification MethodHow To Bound ExecutionsWhy symbolic test programs?Implementation codeCommit points Counterexample Trace Encoding7 Encoding Detail: Obtain Symbolic Instruction Stream Encoding Detail: Memory Order&Encoding Detail: The combined formula)So what did we learn in the case study? Results: 5 code problems foundResults: Scalability Conclusion Slide 24Ordering/Atomicity Relaxations Slide 26" Encoding Concurrent Executions  Fonts UsedDesign TemplateEmbedded OLE Servers Slide Titles _xIBM_UserIBM_User:]k[_균kWDQq1؊KTwWvm\t˳_xկ~5&,oɳ1ܹs)&k[G%ը7?EʡYBr%T]Z66MrvsJc5&رc9|caيF?~zõa߯a8wtɶk.$ߴiy .Hl%Fz3$6oi^}ox1hcn&{VٳGSAǎudo^(lG%ըGzI%!,F>0&6?BSܧ29d *C[ۊ,0z,^{;:rܲe[ۺurԩݻwכ؊KRcf*8$ }koEϞ=k+M۶m|dH>K/M1lma,m7}hlRC7ydiie+jr3.gJfQ=~?Kg DR7t~r8V,F]hT\+ZVPfo:`7.^bjnїP\qiV]NNkDYw[1I5^S1z%xiפ_$MU^6Fb+.Y4O]=<ɛ[d4 HP,ѓ  ΒvTRJȑgK, ys)}⡌a#4KOٯO {~N*;y":QM咆d83ͭUkh:jyMbc#oTRJvWN,;9.=ȼPưQαeu%TݑmZژ 7 ̝gըS%ԢS!qF7zcv'~1ȟ ?_ zsZ Lel% 6B[n^hעzHq·A{Kɛ,c Tg^u% cț[L4mĉO'ԋGz&?~{RPt[GsxҘ` -s7%ubH[wNMe-2 9ysA u mljT^Ce?onYD"@1x}YLVJ7BIxDKWqw/چk7RsVd A,]H6e  @`(JR+]/"OSUZ( 2@`i ,ťml*@XBkQ7|DŽt..PeLg@@]+O}v|mmMo-W9CGlڔA ZSdڵTĹsD $[6F |F@wz7Z-|hrB2 %GY݊Z"VVV˛o@ P7.J 6.W,sfzS[ow^Ɓ) Q $u  @ ظK @ Q $u  @ } @ 0jdn @!b/ @FMl̓p @b $[v @ y @Xldݾ @5u׮]@z!pg}VE]remm޶m[/%S ɖ< @!wyŋ?ܸq#| &҄ !e-[H{xln A!0 J뮬 P@ Μ9p @ ΒÙR @֭|͛Cbdsހ@@>Cܹx,Tr" @3vl޽ BPS @c'`nVT/+;zS~N>=  08K6 !`%ъΟ?d1@ J&YA 0 >z;=qĻceٳg7m4Ct@`2@@ ٓO>yUmV?!a^|~%4@`)-E3SI@ G}teeeϞ=.`\֘ %YH@bd1}ٱcmb@Brl !dvksϭib\67AP@`~qq~ I!@(FY Z{g_t… 'c@`y -oSs@$۵ka}[u3>!  @HV*yB 0g9"lr'uVԩSwZ!. 0桕 .]w^qM7+W_{eW}l $[޶ z7/c寠 7."I> @Z`52 @ !Y.@ @5Bx @@.dH @ Z#@ @"I> @Z $k @ "@H$@ @hM52 @ !Y.@ @5Bx @@.dH @ Z#@ @"I> @Z $k @ "@H$@ @hM52 @ !Y.@ @5Bx @@.dH @ Z#@ @"I> @Z $k @ "@H$@ @hM52 @ !Y.@ @5Bx @@.r ɉIENDB`n#t uN|PNG  IHDRýsRGB pHYsod0PLTE999SSShhhzzz}#IDATx]kcU?첏) m _i Fą-B$ĩ _x>h+Q͌A5`eUgEI ~ >i{;myt={a`k@P4 @Ch!4 @C!h @C4!h@C4 !h4 @Ch!W (h5Q 4 @C`+h 4 V NwltmKZG,mbvIQ0L  w퐐Ɉ'Q4VMw_$(i%S(4w,#97YtC 7?"pR氳v1Ƃ} hMTr$Ï 2*OZM)IGV*3.œIXj z7KtPj (5=K~l6bS !H(A39!u|b}>d|ɱf0ϡ4q+#QCYg ȍXK!!LG/P#sԟ` sɊ 4BirvSr\+~>3{]W js>TBRm I#1+ԧLH[&ȵַ;'o?5RU!'Gt΢Y$.u$ċH\C$J]%1?6=4?jt3qܩtzvΡBUl)ow@:x)iObL`t5 n"46n"iw֑O:z4Qutbs9 pc! FU5iHB H4f o`~^`\mwʳnZ\=_%~ʩ^׏Apw3{6BYCQV$̋@3K8Huݡ \Ć`~2vjVqM8kUw2 oEQЗWZS2l( :B"P hb<{A4hjZ8yHCEj‹F,"ehLB!x(48jʉj^5KB!x(@2Z$ףwA>Y2BΛ|\X3c8"ި9*3S? Z$O\IB!x(5td8UJ!)c)wtp4FэF>nL5GCiZ@B,vX, V& tE/$OcGߑw@pk\Pv-EkA?gt'kA -ڶք9*ʓ/d0tgPo34tx$>!CŤY:1b.:`GM5KEa-"${[5\'Y3Hmq44j9KC{[-LaȚa5&9kʇu^C}e$9[jdVg1nu08L!|P |r\jxHk7۲xu_(#{0_ r d{^qٮ|d#Fxҽշ_g9 꼪;Et .*9kqT K+BBTCd\O։w9W==.ZC׹*1ԌDb"| F/mMCUcZaѸV aN rs>Z'w$ݨs6fljCГ Y:O5I'IF%~HTîpQR%<,\J"'}bꞢΉdl vk(h}r&5Nt=ɤ>߳9<}IMfY:On!4D6$9&)%/_/Gf?)U[`OO(߹5ևjgZT=нx1QkH?`՞ا;Ĭ{>h%)t9x_Qr?u>;C.Hz!+Zڔu!64VC 60Mk(cĭ5_]&ΞhW s>ҬjA0mѽ}NNb`;VPܷer>ѣ +Uc8[#J!;7`tt!!v/diy2=mMgisZڸWCYWC%cN e5\^h7G!{ycb]b'fyj&b@BX%,B'zED Mf ~;D+enYc }#̬8G /7G2w~:'㎭v,%H;"9BΧ^6!#s'Qf{WOuv_dpiWXbp(?59ҊVoqݩĚ-k2{=k~iۙL̼':Mmftk߶&ֻG~t9X"B1ѷP̚(nS%d}kLe_?n~^uj^+zX#RxmEbݸ"Ǥe<#N,6bYrgC!@4ݙי{rL*5N [CVe-Z]{\6l%oM{8cdU;1TiQ6ˎ:G[Vw,މj`):$9X"Bs5}qY )1TU$hW _5:d9"$z Y UP?Ik VCKg>P#>zlt98"$NsR3Lv&R]žIՅ,.ࡀut :Uʹ]!f7| -FKgH(O2_sxEH(PY1+#&xjʊgԆ"!-nN~ۍTmݣA7J cq#4.-A!R!Y TK5ڎik 6F'XJk>ۯέOc3?$AnPUT-Twt"Aj;K3fq^[ST\Xu)_sZvlN4gR <4C(-#Taf<,$ў OTU`J%rEiygYtT(+mDªTX\7;{L)WQ0LX}nD8YLn% y>栋):s1bH 0U/*P _(޹$YIsW>‘XV>JYL Cg)*+ {}>栋KLxiFbaU)IwH]ͷ2aC0.-,w /2BX>:L8_&QS\Muf_.]CQ&^ರs_7C=sKD߷l%sH(/(ne߮R&\Z.xɕJ롞' 6T v5~U oU]+syy52Ѭü#ޓ7.ȿAFt4wߠ m#b6wߠ m#VTmNTmRbF%t؁n!h4 @Ch`C{ N̠!Ȏ64t@惆4wEym>h<=!@cD=!@$ԃཥ4-!@gc:ΑtSx)k[[>xk_xx[[cSco[ookc_ooƀkx|So||gxxg|tc|to[|kct|totkgo|oooo||ktt|txtxk||||||xx|xx|txt|||t|||||x||||xx||||||||||x|||||x||tx|||||||x|txtxx|||||x||xxxt|||||t|||xx||||||xx|x||||x||||||xox||o|gc||tok||ttotxx|t|x|xx||o|x|||x|txx||x||xxxxx||||||xxx|x||||||||x||||||||||||||||||||||tx|x||txt||xx|x|xxxxxxx|||||xxxxx|||x||||||x|||toxxxxg|ox|ott|c|x|ox|tt||||||||xtt|||||||||||||||||x|||x|txxx|xx|||x||x||||||||||x|||||x|x||xx||||||||x|||||||||||||||||x||||||||||||||||||x||||||x||||||||||||x|x||xxx|x||||||||x|||x|||xx|||tx||||ot|o|x||xt||xtt|||||||||||||||xx||||xxtxx|||||||x|||txx|xxxxx|txxt||t|x||xx||||||xx|xxx|||xxx|xtx|t||||x|||||||||x|||||x|xt|xxxtx|x|x|xx||||||xxxx||xxxt|xx|xtx|t|xxt|x|x|txx||x|||xx||x|x||||||||x|x|||t|txx|xt|t|txx|t||xxx||x|x||xx|t|x||x||x|x||x|t||txttx|t||xt||x||||xxxx|xttx|t|txx|||x|t|x|||||x|||x|||x||txto|x|x||txx|||xx|xx|x||xox|tt||x|x||x|tt|||||x|x||x|x||x|tt||tot||x|t|x||||||x|||||xx||t||xx||x|xo||ttx||x||||x|x||x|||xxt|ox|xtxx|||txx|||tt||x|||o||t|t|xtxxx|||xxo||xt|x|xtkkkot|x|t||||x|||||x|||xx||x|x||x|||ttxxx|Nktg|gocxo|o|ttgt|xxxxt|t||x||x|txx|x||xx|||xt|||x|x|||||||tt|||||t|x|||||xt|t|x|x|tx||t||x||ox|ttxt|xtot|g|xt|||||xxx|||||xtxx||t|t|x|xx||||||||x|||t|||xt|||tx||x|ttttxt|x||||t|x|xo||tx||txxx||x|||t||||x|||xxxtt||||xt|x||xxxxxx|tt|o|gxt||tg|txx||tkkFokx_toc|tot||cxxoo|xxtxoo|kx|xktx||ot|txx|x|||x|txxkt|xtxxt|xtktt|t|xxxxxxx|xk||t||x||||x|xttot|xoto|oxxtoxx||xxx|t|x|txx|x||xxt|o|||kxxx||x|x|||t|||x|||xxkxttxxxxk||xtox|xx|xtt||t|txx|t||x||x|xtcߌƑct__|SWo|Nott[_t|gokx|tkxgtttcokkxxxxgc||||xxt|||x|x|xtxxx||||tt||x||||x||x|||||||||x|||xx||||x||||||||||x|||||||||||||||||xx|||||||||||||||||||||||||||||||||x||||||x|||||xx||||||||x|||||||||||||||||||||||||||||||x|||||x|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||x|||||xx|||||||x||||||||||||||||||||||||||xx||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| chimes.wav.WAV 250106RIFFWAVEfmt "V"Vfactdata{~x~{}}{|{{|}||v|ww|}|w}u}|w{yzx}y~w{}uuz}{~z}yv|zyytvuyxyuv}xwu~}|{}~xw|yt~v}yryuuz{}{~}~v}w|x|~t|sy|i|pieyptrzwvu{x{t~{x}|urtr|x|}zt~|rsu~{~}|~y~}xu{~{y}wyxu}ivw{|{xysrqkvkrqpm|k{x}o}pu|ztp~vv}}~}uvw~txw|k}tuw}z{x|q}yv{z}|y~q{ppymvqsp}ow~uxx{nx{ivwgwslxzo|zz}||~wt{y{}}|{xwvzqtxpxws}vz{v{~q~|t~}v{{wwjyye{okympyutx~|}{x{t{twyqu{}{|{~wx}t{zw~|}~z|uuzkzsl{os{ut~w~xus~vy~u{|y}~zwypvnsonvhwpqzt{{|}}w{}sz{w}~~w~t{|zo~ovxry~w~|xtzt|rwvrzr|wz|~}~ywoysx|z|v|xtvtntslypuwwyzvu|yy|w}}zz~v}zr|ptvoynytt~t~}||vytuys|{|~|zzw|u{vy{y~}}~tyrpv{ozuwyy{|~}~}}yy}{ywzyvuvzrtxqs{lzxqv|~~|}z{~~}}vuwn}yuzzyyz}~{}yzw||sv~x~{zz{{w~uyx|}z~}wz{tx{o|uszyu|~sw}x{}~|~}{y{|u}{wy~pxzvqwz~vu{{}uvvsmveOOVOhx^]~jsschqf_^mv|l|c~t[y~vfl}zzf}}|~rq|ui{{ld|t}]~rrXxtagjnssjs}r`fqv|vjmyroyu{m\ylflxqhxgV}jXk|^fzzRttou|jnnusptipravx~ik{mtmZnwj`poaf}qanx{Txhvnytw~`ppxuxulrSzumyikyatwiLvgdX]sg]j}{wl|[Vopyi|ocv\f|stX^e~kikgsuMnzpwcrvxV|}yO`ec~ebrdoYw}Xz`kig[swgkdm{\RCjysybb|~_fhz_kdwTpzt_hqbwiXabvNnzkSzro[jyxDypg{^zsuU_Z_zjbTzdwfvgc__\xvaevjfQ~PV|wawYfWclp^ovOy~zgcwakq^cimRt{{}]nuV}m{oLs~z_przi`gjkxv{qRwfe|suyaq~e|qy~n[ooya{cQ|q]cysXvw[hz|Vr|g~rqgi~}szejsUpzjgqzVjrunen`usyq|i_~z{^V{hTyf[v~^fmwsrsLxtV[hKesOvbvpSfgmumrZpol}}ulpuoqkijpwxrylk}mxtrgg~oitkyrXeg~T}syHuyZbw}i_p}nXrYflYl~dmvf||kUtqVln]tkrw~sl~vyvonmqpy|y{lq|nqtxueocdoUdfZptTk}|ZlqlvmsSk~b]jYmqtnlr]g{Ucj~Rm}\{vlkzzmuwuuy{my}qqzkv}yzn|re|zs}o}tas~n_wneraqp|`\uceih^p]i{o~cquzsizko{`hlZzmVr|\}lywkqyrto{pt||wxv{spr~uzuponzyzvhzuqvizx~hospt~[rtWoZ]qZ{qlwtl{tbpeile}nzndkfd~{tmwj{}rju}uoy~}uvzwwa}pmzvu~pnvmt{t|pzy}vpstmlpZn\Zpy`yty{jr}~lxq}wydrtqghnZrsrlwjbyr\xxpkvqn~tjfu_mks{vvo}ypquqrxw{orpxu~gp[{sxjaq{jruzpkj_pnyr{^qYlgqpwsflvSsijl~gp~d`v_rwjo~b~|j|zzsotzk~pwammimsofw|lneyywgwk`kxeYocnt{utz[w^r}se}~uk}quXw]zbxnxo_x}rasxly~sy{wo~tqwynv}|{oznxzcxfr{w~jvqv~`{xRsdc}l|rextlovf{skwi~nmy_xywja|ohXlgxqw{}sszsshunttsuvwi}zprypx}flecfXvvihroq{jrt}vrk~{i}nzg{{hvooUd^e\txzkux{{rvnqgs}v}mky~wzum~~}w{|~i|i_z}Zofy}habZs}mo|~|nyst~u\ktvuizn`~rwhhb^mswlym{x{}l~yv~ftyqkpq|tu{r~l{ly~nz|vqvugg|gyimtzpemu}f|{nztnkhc}fmbluum`crfc}spz`lzx~xl{x~wo|yy}xylrwx~o|xz{w{~oyn|yhr{demzr_btr_sx{]hu`sujyu_{`jqdtvnyvws}l}mxufoytrjx{t|wnt||wnw{{{}~uopo~o~w}|}rrvn}wewn~rm|oneunpv`id{tze_jky{x_qrtu}owgrjflk~dxt|vutx{usxr}pwy}{xnz}remroqgigux~tz[qmnba|e{g`h\tlymbbx_rsylzg]o]gi{quemhn{~t{x~tz~|rts~y{p{rujm}otrm}smptrygpnxnha}ofrlstklxvs{ryun|f`ouhzk_{img~ukvtl~vuw|yztq}pz||}wtsurvxysqkhnq{~wnr|us}jYnalymmys|zxu{lslc[}kxq{gq}iymp|p_memgzom{|v|~z~}ztsow}v|txgy}py}mz|}muu||lmuho_}utypr~uzryqsu`gi[kslrowtzgrzmkvb[s~d|vfvp~v~uvztsnqmyxxsztp~u~z~u|w|~xnzynopluus|l~|~t{{ozomwacdbvntuqww|{rtwlnbdZu{qnvh{wzvjv}g}raotly~l}~~{y}yxqrv|w}owxvhlyy|z|vq{}~zx~qyv{xnse[lvkuqp~}gqd{bca_xnx~yxt{q}u~qujfWmclmzzyzt|zs|{ryljtnt}}nrousx~~~wzyg}owvoi~mb}vS^ggdz{re\mxWXxukaq}ibyrwqhnlM_r~f}tqmp|x|r}wl}bijl~n~bywrtuzwelVspdg~sszxrhzmzyptnvbepw~u}~h{fejpwxsqy^Wcpsy|}y[ljvdx}~yu~_yvww{qpr]tx^dztvyrl~wio|eimrtwnn`rhz~~xvswelr~wozgdGxm^x]ryygVknnyzrgfhubh}}rucws|l~~h[rjS[|nozyy~|ipoyhyybzvi}ilYp^rty}pltoqbO|a]zde~wyghlxruwfZswUmsvtyasoq{|qa|e[{VyZnb|ttnrrqhsktqfzxcz{jovow{sugrZQlOqquzqfrrw}qjvqgg|tx~jszWh{tqkwogTcnws{~~nvuutpwxru~g}sk~wgmffpwgmxv|~~r}yffyejcqqwrow|vpszzzt~~~|~s|~xlq\fygojywd~dfxtkwysfpf^ozzshy}i~x}{mrlkh_zm|{om}~zgzmy}{~tqhytmry}}rzu}}tzuqqgThoon{nq{ziuizy{qz}tyyt{vxlrxiozdzx^durlus~w{qowmzw{~|}{{}uw~znnvqow`]~tpyxxyqkhk|tx~zzv|zr~zuy{o{ylijcxpn}klruy~qzpr{xz}}{y{u|{~y|ttvyuygfwwsuph|zmryt~otivw}{}{szu}}v~~ovwswvbf|n|pvqw{q|rhop~n~zv{|utv|vwwxysscjspjivzx{xv~~nrfrkvxx~yx{xt{h~s~rqngpsxlptxqpytpymgyzv{}|y{|z|~x{y|t}vt{mdtpx|stmppsyuuyt{~t~|{|w{yuyxzvxmu`oqrynvsqurtft}v~}|}x~{{u|xzi{atsnl}uvxn~garl{w}wv{zw~v}yv}x}usws~wvxto|~p|xwv{jdw}izwzz}}~prwzrwurornwz|i{{b]gt|m~|h`yxkvrs~xr|xzy}s{qtyuup{}{swztqxwxx|zzzs{{s{z{|oy~yn}p~|pqzxz{{ryozuj|qtw~ppo||svu|uuq{eue{st{z}nqymnbnpy}~qv{o|ru}n~ry|{z~zxzz|s}zu}uzmlXsi}v}yvzmpvtoy~}yty|x{|u~spwztls|qxzn~qv}sw|zw~uwtvxuyx|y}{}{}p}vys}tunkqzr}zyzztyzt}z}yw~t~wplzv~}}u{}m~tkrvu}z{vtr{xsuty||zs|kf{qpsnysrzlowuvvtzlpzntyiq|z|}}~x~yy~zy|szittkt_otr{~|j~sk{j}pvn|}sxx|sw}|{yvrynx|xvwt|wwzw{~yp}rz{t{y{z~|{vyto|v}utq{}lrnuzx~zvzuputuvqwizwzx~rtv}nq|wuvx~tx~}zy{s~t|uw}zt~|vrwzs}zpoy{o}{nmhcfl|fwuy}rri{mve}yfvu|xye}yf~pp~~yx{vxvi}|h~{ixl}j{~jvktu{x}y|~{zxt}lqvzyz}n~}gjrwrxy~~r~gik~iqtkq{zo~zt[L~fO~ndnv}jzyql{}|jo|n~zuyl{zml}vo}urt|p{zehwvz|y~r}xzq|ywzys~}tz|zt}npvsww|w}vt}ypjmu{u}qy{~|||g{k}l}{wq}wt|tktr||~x~tukrfmc{zfho~pzypzmuxufpqpxiuxwbxdtssy}y{lwhyk~usuvvx~}p}p{pz|xx{zs~~i{j{tuqhymvkqsss|s~yt{~ts{`rsitkwpswp}zm~r}|vw|rnvrus{pdllx~ztqa{k}z|~|~zlse{rwqtoxwlyusw}{t}sqorsn{uoh|vv}nhamk{s{w|t{q~o|msvh~tp{vxwxmys~x~tymtwxx~|xvxysx}|~x~z}ttl|}z}qr|ystyw}u{yzt|~pt~{ryoxynxq}~|}{|st|xwqnmyqzw|tp{v}d|}btrsty^ruipn{l{rxoz}s~rvnzrtx|w|~wuivtn{||{~wy~oiqvk|znwxtu{~wyn}|fqkz|ysx}qyp{sz|~wyrmgrn{|w{xloetwzvux{upxq{uxu}~wq|nsss{~|ueqrk~|gznol{px~uurvykur}{{{v~mut|qm}}wetsvpzsuwtfrl}kxk{ynung{}x~pw|pa|k||}oxmpxocr}z~wytqpz~wpl}}sxj|ojhu}u}{jxhrppf}rzdrwswboxmxphrfqzuz}is||qmn}wmp{evxyerz~vqh}vfqxrjq{zqxruw[vnzfpfpitux|tqv|ynimgl}xkqsvZfkrovzybw{utmvzpyzrh~~i{ttve{ygymbYz}cm]x|`memy]]z~|mp^|`kpez~zutxpuyxhzy|}|}|ylyg~uzu`}tv`rm_hwvl_|v{]dmyn_ppsvdbxu`lmipgndttfotsg{uvty}yw}zyqp|wqmwz{_sykcfokal|sp^fadisykiknrx\nxqqqnp_vl}m|pyvx{zuosrtz||dkwjmdwf|htzdnnnmksvz]mgrqppxjhvxokr{}ywl}oxvunxoz~y~zwv|syzvxwyayeulrkylwt`mrqhtr|joqxm~ty~qvswstx~ujpwytm~|vv~t~uw|kyz~|axyhoxnsr{tptvy~hpzzsrnylrmro}vx~nxw~wu|v~ux{~}ytz}l|{{~vuv~v|vmwwwntvlwj{xerzfx~{{r{uzzpy{w}wz{kqu|}z||w|mwx{zssqvzypzszyvp[tvrsmvz{r}ywmvzohgb|ezpvUllsnwcum\vnyxo_L|puccIwbok~lzphgbwp\fRqnpve~u~mtdq{|oiWepmfuklfsy|}vzrnlrpvsejcesyxpdenjyzy|y~dn\frx|e_biywq~rwysynu{|qba_tw}k]jfmo~z{~kxktnrqt|mtVeZtvfjhv}xwuxw{~qrnk~}mm[hsxap`~j|n}prljcmanpr]m`lyxhxk{ej{u}nbjefxhg]h|zyxuz{xzzgrlt~wapYro~{yjupnwp|wy}mpujp{yyquwmqzyo|}ytty}puzbxewzcpk}|tz|u}on|pts}mowruzw}z}utsyqku}|xo}unywz{ssv||b|ssvu}w~yrxmpwryors}~qs~sxw}sl}{r}ltyn}znyrzqrkp}x{zpp}p{rszym{vmlxq{ysu{g|qt}nwwtx|zl~xz|j|tj|zpb|}}s~~|}yrp}{w~hvn|p|wjj{sux|nz|q|w~syn{|}~gdxu`qzo}yks}p}kyxxtv||vt~uxs}|outwkhVs`^NqbnewqiyYlQrwa~Yz[fvkgxt{vjx_[wsppu|prZ{d~sw}tt|rv|vlv}tmkbx`n}vbrizs|u|xiwzJ~O\\mqvlpoohr_ipWR{hpyuZhNwQVf\nbplonjsiy|n~fiytydwz~h|ad[SbJDOAv]rezkHj1t3izTzbyG~kZ~^ar@dSq:rhc^a[Av{|htxUph}pIWhGg}~|bnzkw]z~wxzbepwsiD_Xhumke_r_o_~x/l,oC|\ucdvYeu9q@kMr|m_}lizfxreXrnqqu}h_aK]WMraSCiR^uvtciW1CiJ`^tEtv{^Y~a|pNfpJvY~i]a*ZbX{qwdnpp8Ej5lFObmpW`t{h~lddroqStow@4\DeRyO\fsowyXkUn8pZWmSfsYmgb@zblSen[Smp]&g8N uG^roGoEpzQX=S]Iv{J^ku_zRRygb~~gk}we;sA=;c;2R__^iu_dbh0sOUEnzxZwU\pejyspjLgc\`ITawa+r1cp_iqfmJTb0~IRbtqaS{}jtJ~~y|xtggotSUXm0gmwIr}trYczpGvq]yEs^b[}v}CbJ[kxZvZXYYf5izcic|z|_]wrj`kh{uVzULGw]cuy[i|OwpX8\\GT{tZ^wo~r[tv[^guDqZOUrqK{ymfp[bnaFdk]Svuvs{[ps|gg|rgn}||~mitea^`y`|zy~u}\ivyengVk|xx|sQYyrfc|gY}ywx{zLoidSxRetzsVj`w~^{e|uUmviFggRYws]\meubs{}prs|osMl}}cju}huW{WYw|v{t|xvumlirusQwNP4dEX]p^JnmXwukEOvE^wakMqeWadgWso~iyKpSohyxxhxrUn}pqappZvm`yisalnLacWojmZahtt}Vsut}to}|o{|yyieby}ke~{pvw`n}\nm{vmouq\js{bf~dkje|UvZYbzen}v[_|zl}toyAUb[fyjuvGYtvf~Ux[}yfXy]ba}ewk\L_}ptaxhukr~i[S~sezNVoIqLusdwoeqPwLNgLvIqiaYik~`o`prhi|iK~Gkat{bsdTWwqf>m@}|SRv}XLyV|jizYViYwy}t{oxZvtRx^[{TeR{=uMsohV|zPyXbe]WIY[z`xwd{az[a^jp]ypo{tNOpjcwRs~d}mqyglvp~vrncbe}|avsL@}[|rjOyJ~fabjlld|Yw\mrr]e_ee`hznkpej[XaTlZ{rb`qSYvbP^nmu~|qwtksdysmxufdherl}S<}UNzSeqv\cuxvk~tih~}`~Qm\{pgq]p{ll~ps]tDie8H[oKp^vy\Ae4kTrwcyt|vvtf~y`Lt_O3^Q={;Kewbb[yIiIDVRriav\peqzy^`dI*vjTyBt~j>MwQK\grxnri{jhgknmGKEZ?g[s}p|IufyD~usnj^zw mTDp`b|{etzPOWS_ezI{yg2fCvVi|mb(Xo~mQ[t3U`\yk]tuPVGntbXfPx<_jj7-YT`iDlY(}rJg{k:Mkf~(jZnvZcPm][7^k*dF\Qxa=oORpWyj3ftk}a`nijSixuyd}{Xg~gtVpFvb@d|P|n{uR hu-M|{KpmOnxi}^K^csgsvtOWl{\dFYIzkllL}W;hfcvmlUWMaLtKMh\1wA@ggSA^`O|abqjoHbtaZl_UyRSvmn+5`doj9ifl>v{~VsLd\qAzQOinLh~jfQq`xrMAb?db5Yz~L8xaT{DjZ-xF~*@vknt`sals|}~q{~vxj`q{iN|{xekf]hbvV6zw-;~fXvW{)ȅE_Xcs~F5d9T|vPwf\8sgvN7cL]~>h\KYtb|eoh,C`wsVW}VlFuQRGzEMF"JRj|~l|QofnX|be]]IRI9+Vjh_gspBntnM%ā@ P<:vWc\R|^~>_| ^bGo{Pfk;x~xik_Jeu>(cD}916Btxcykd&!jGwXQD8~emR^x[kvShZ@I^&`euOklBYE*9\y2OYo^~h]Myth0nhnWijv}xfbtiY`uoOi^fOjhZ^h\i*t"6M.\eO/Sq|lhWul[S]Dt~l}0hhrWu|zsdgj_LF)E@Qo2WU}P4[b$aq:t[nL`d~pci{S_yv|9lRMOOtj=h}dJLU}dkyeJ628jshlz^*f}yXDBAqbKSp|cTjsjehZRzdKd=]DE~Z)LmwxV/'P_.@bnQL8DPZikjQF;HS[+V`fdruz{ngu}Pi}bJGW(J_W{~UF?Ī?Zdg8~xC-wo\w`xnv-c0ewz]~~yyZRao\p}t~|AktbPyl#{\X6Pu?ltdv2^|Goka[C^imvyklcfn`P~eWawScXo~6g}NǂCwzq([t-\vok}nkXf^~{~zv[yV9Nix~zgNoon]M|p`bNs;}jtMZYux~iQ\p\yQ|_c}|ba~\t_D~G]{pk;MpQCpldt~ri7sq[r[kex]h{TiT>_R{]tX:x#[z{UT{ne{Lb_qnrcnPChl^rr^zYiKzLS}xomilPz\xh[cVWWt7|h`~gkrku^^XxRiygl)rtWrfy{]rLyx`YnCNyWKrR~Tyzlxr]jvsTlsbZ{pnwG~](ip{rw0zjxQ{`xQKv~frc^}fu[o~r}ndooLBz_~s^}bTuJ[{=NRL~}qfy\~`rLs{urjmmjvbkzeVvh}\rlAwsX[exPTibplL~Yigrpsjgim{]vpgoDmmfwxiRRpxS.}hwvg`geS~t`uayoyh{~wnn]{|_imgSxWvegr~T|tkm^Y}h84C9fm\~k^jwa}ofw}lBtsSa|v|jgvhieFqnga]pkt}YC|L_zopTuk^dY~snPQGe}wbxZsdQvwifsP`k\djgmvRgMew_~yyp|j`qtoznyvsp}kjuWmq\KBsiZuDO(bcjxYkv}slhkWj[g{zdy^xnhzLVs`[}yaRwUcny`zrbotq}Xv{zwWus_W|J\wprfqrdnTMzev`htkwhos]zLk{jkm^nxx|mfUgqnTobwjiQwdt{Jtfrruvl]apwg[cqk{gu{YlrpjW~u\b!jQuo_z|ptj|rpsejXvQde`cnd_pOyzYavugb|qmpyo}Wtxy\gcu_c{^iqns|[hpLvttPorhkLsvYbMlOej~b^i~v`htvxw{v{{tf{t\{u~Q|lb;]D|mo}XPkoul}udxfgV~x{wqkkkr^df_bslypz}b~r{Nl{n`x`?s[>uePp{ewi`e`sv\vPuj}u~tg~ouxvqwu~gwzj|oun~jcjr|TAuShP:[Yksdgv{vn~k{xu}htgxngugvmptqroykwLkmdr^yhRdpQt}eYsM\pwajvMl{ddyYlo}kl}fv\|X~qrjyu{d_zn_o}y_dws|sauxx}hSSQaLsnYvjv_x}{znvs_Z|jXoy]mk{mvrknsnwyUy^yg|`T`}sglnuUspYasesXUSZ}t{fzpdwnygbsnagsws|kyfhp}nsjtktxp~iwco~xov_GcrW{d}VPq}jrxwqyp~o{nnvzmsiflpshpnclkuZpszyYZV[}w}j|ho_o}^jq\he[pssqolya^}xtgucsksxhrhXmisi|who|syv|dmgusl^lpxpYs|v\T^dxk}hxh|izsvzz]xs~[wiy~itkxi~[b_Wiwgmwv|{qjrVg~urpxxvsaY{ljenf`{muxXbkRw~y}{wzr{z{swrrqzmzt}ocliy}tZZ|ru]=[Zdkn]ujvkh~{sxtmuuov{eyc}ubonynU~`vzpQdri\ufxt}rm}piww||tu|owd|rYdvhr|e`hTdirxqa~]zfr}_qpvgqvkgzy{r~drtubjvrXdsXOsw}W}Qv]upwt{akr{_xp|rcpu~vlz~vw~sx^Uwhkxnf`{z_`tr}{j{t|mwql|wepqfUv}Z[s`bo{{w~kmlrjQp{kT}|kS`_Y~o_zizomi|trqtLVyqfkxksl`t[hsv|{m|r~hylxzdu{qwtpuuzzo~ptj\loy`In|W\_r~pgm{~w|}qrnwtjnry{hokXvmiljyKK`U~tb_owwmzsv|riscs_f{Zytngmniryqngstebum|jh{vxyx~|ypoh_{mjkbpfam|kqmg{zeciwl}ay`n]itkvq}yiw|jkio|o`Wxk[o}qWbedquaycuhn{kq~poqz}{xrshz]giYzqdk~zdclzjho}q}ni^r}gutzbzqPZu~Whv|{W~ouvjktqscoayW`rxipir|c^~uhcxsg[kzsovjiw|hw~w}so^j|jnx}sq|rx~vomreiRZzw{^f`dYyj{nyYixt\^ntle|mzgyonkryxw_]zmRf~c}bpg|dj`~ta~zs{zt{squwv{tsx}wmzilkhovk}qswtNa~\Wm|znwxhr}frxrqmr}qd~lz}_bc\\rvf{j~wWtl~~keucj]v{hybe}tm}suap]cuudlwors|zqfiu~z{uux~|py}sp~{o{ssuxqoqtgWvi\d}umnnqzzbcqx}ius|dhyv}^cy}ohpgwwomrvq|s\m{Xbr|^]y~{prwvuusxirwl_xmeqqjl}fdxvp|on{{kwswtgwv~}k~n{zyrkcwu~gmkyyzmydw{w[]`Qtri{[ookjpvwipvz~|ssufSl]Zxrpts|tizkvhT~w}|p|}{zxyoo}}stxumome}rszsh~rjZq~dxl{srutpfrsg{o~i|~}ijzzV_kxc{yzu]xpeXqaauqfrv~wbjwwwwx|oyrn{zrj_vj`~i^ke~n|w~wk}xl~}{|y{{xxzej}l`j}i{sycsvw|fxe~vXcwlpk{ytrwylruanqtmiovjo|cfxbqmrvmqzr|ppt}}}vgzvir{yzpjn_e^}kzi`bxMszbt{tbpzs~qfmwrzwvuxnu|d{nn}uku{qb}kuk{[~hpsvw{o`q{tiyl~onnzo^jfwwjtc}aomttcmuuksnuw|}fzqw~x{|wwhz|w|whzkql|qd~vxQk{gsskhpq_[ywrynyygvzofiipuk|grxfs~hkwvk~xv]p{ntory|e|~|{fu{|||p~yjyh`tnlg|s~wgr}ptoxxz{two}or~vou|w{qsy|~~jvl{h~kh[vmfxs{{quxVwlxzrnx~h}vm{u|pi}ogxxo|vhyit|la|nry~zyu~lsurrg~}itq}unvjn~xsq{so|{|jhr{m~xpyp~||l{qvomvzlut|swzfret}v{pt}mt~|spp}x|tuwuxwk{}inopu~~hruhwyosqpy~}~xmsvustx{trnrp~pwzpvskyuu~ezuzoevtl~wj~wz~|vywzqv|z{r}_m}vvy|ts}xzzzzxvst{w~rn~vxyzwwszzhyzsswpi}ht{xm}~mo}l}ut_}{q}utzt{xtr}m|w{yryouhoqzrngzsju{u~q~xz|~{lxhk|uzsvr|t~e}~w~ntvuy}x{|xvvww{v~uiu{wz~wspnkcvstx{xs|}}|o{t}||smt{rovj~{vxth^xqmzwo~{ow~v~Wuz{p}rp{wudiqwtbzk~wz~x}qr|vvu|qxxq|zty{|zhxx|uu|Z{p~kxw}||twquq}xpuou\z|v`ncuxhxxqrszy~xsw|iiqwyzlzrtt}votlz~zvyty|ot|yksybekv{s{ow~crxuzl^~}uqsxzcoyhn^{tYpkytZYhd~v}ogzi{s{Z}gumwr{tvov{hYt}bwwursb{fi\y~vsif~pyy}x|tvukstxclp{uxswwm{{~|q~OgZgtn{uv|~_rx{sc_|j~ttx~pjriqvorhz~qlvno~w~wxjndxslynnuu}mq}lfynp}w{uup}qX[{kv~{}_k~zp[}ba}kajt|}rmp_fpnr}w{w||~nyljrwrsxqtm~~v{|{{l}h{sxZ~lkzuytwexngoewszv|u{l|wl|gwii{_rt{cluehdr{{z{kjvn|wqypxny}}qjxpcw|iqsz}uzupv{vvhfuuh{ryvzjovouvk{jtwt~paxek``v}loidnrmys{xyxwmt{u~ev{p|muxjlypv}xy{pz}~tux{sn{zzy~xxsu}u}oznpsxx~|zzn}g{aU}rwr~ras{qklus{sssnlnpqmZ~|rs|yovtl~as}|xhpa}x~{z}~rx{yeq|wu{{}pczwyoo{uklw}pivmn`{qtvxt}t{pwtvurqVw~n{mrwtn|su|r{{{q{wp~uuuzfqwzttzyqx|~~q~rzvrr}xsbptq}r{p}q^oztvrnx{}wtz{xucd{mrxq{wvoy|pmnuxrjzrruz{vkqvjqt~{~w~x}~yesp`yty~wpuq|wxrkrr}u~h|x{uf~qmstqm|||xmuyvzhm{|}{itsqckyzor~{~|_}}znu}{v~tgsv}yqjttwcy}x|v~s|qs_mv}is~~x|wu}ylonhqo}}v|{q~oyil~vsiz~uy{{t|ps{{}uuyyz~|dpr|qhy~}}rxzn|~pv|sk~z{~mxwnzqxu~szjnsclxwrqzcsybjmwy|w{rknxzx|yxz~uwqt~{~zq~rwznvzzs{~o|~~|syrv{p}||x}|zl}vjvn~{y~w|wmwsmsk{mouzvmq}ryxsty}u|zvz}suztv{xv}~w||~tp{qk}xi}stww}v{uwt}~|vmzs~u~|squwzkt{{bly~~mo~n||}zor|jxt{zxruxq~vq{}||u|{m}|~}s~o}p}|ypvpu}|~}uw{oyu~ww|~{txxn~j{sp|tqr|zvueeps{t}xns{x}{h~}{|~v|vx^zuvw}uu|uz~~t~ytznz}{qs}xxx~{wymh{v~}uoxyvop~~yjzyw~k}}j}qtw{|rp|z~vovz{zrw|z~zynvzt}zwyr}{sxrxwz~zx{xxyxtyqqs}z||u~llqqy|}q~}r~rsyj|x{ntz~yux~wytor~yzvv{}w~w{}w}u|{~kn{{yw|yo|z}vrz{x~}~wxyttswxy{ih|n{xmzjp|m}z|q|nuz|~u{}wzqp{zy]nwpqwtmonrxptlkjwqmziq{rm|~~|}wm|qpzuylkwsg{kv}mrwwc|vwxjzzm{x}~tovvxtyuw|zewx{w|}z~zwxt{}~zuwv{w|vntrxwz~|{~sxu|xxrz|y~|xkruvuwz}{z~w~}~~y{{zup~zuv~}x~rts}|rwxzrq|xxsw|{z|~vy~zwt||}ronsyyw|~yt{~ztzx~vt}{~vvzq{ysvvyrxs{vy}~{wv{ql|s~|y}z~~~z~|w{zy~~{w}u|}|}pyywv|x{yy{z~yvz}xp|n{~rqwi|ipxz~{}{~su}w~|w}sw}z~tx{yx|u~xt}|tyy|~}z~~zy|}y|w{ww{}}~~}yxsy~x{y|oxvy}}y}kr{ywt}z}|}xq|}~|{|wy|}uqx~rrv}|~xu}yyx|~w{t|{|}zxy{|svuvzq|y{z}{{|uu}z}w~zrs}~|q|r|qxx|tz}y~}y|~yt||yzp~{~|x{z~w{yvyy{yzsy}n{~~v}sz~r}u|wuzzxwtu}}~wu~u}{~q{yow~{v}x~v~qq}~z||zx}zvy|y~zy||z~~y|}y|u|z{ztvx~zyw|z}~}{~{y|~xys~xvvx|x|ww~z|~stt|y~t~}yz~}}zxx{w}z~w}yz~xzty~}}vvzz}tyv|x~zyt{|rtyzrz|xuwzy{~~r}{~{zy}x~|}}|w~}x{|ww}~|~{x|}~|{|wyvu~~x~v{}}~{|}uy|x{{}|{t|~p}yz~z}vun}xuqz{~z}{z}yw{z}y~y|x{{|}~}{|}z{}}uxz|z{{yqp|xuztu{~rw}u}~}x{|t~~wy|~}z~{zzy~|v|~|}~{}u|z{p}{}z|{~~~|y}wtxyy{~zyy|w}v|rx{~t~wsv~{}s~vx~pwrxv{|wz{~~q~uwy|x{zz|vz|}||y~t{}~y}yv{|zu}~twry}}{|z|u}v{yw|wxsx|}{xu~}y{||~{|x}{uvz~tw~twz|~{{sw}|~~{{wtxs|txy~z}~yssrztzww~w~}yz}|u}~|vu~zwvoy~v}yx{||y{xyz}|v~z||vwswyw}ww~x|zw{wz{y{uzwv}q}{wwvt|qwyu}}{zz~{y~xxz~~~~~{z{|{}{~yyw|zz|yyy|~{|{z|}|yu~wxwx}||{~|xwvwwy}sv~z}|xxv}wy|s|zy{~{~y~|w~zx~z}||}~~{xw}{|z|~z|~z}z{zv~~x}zvzvxx}x~}}}zxyuvw}z}|}|~}}y}y|}|yz|{z}x}w{zwx~{}y|wuzzz}y|{}{{yy~y~{}v|z{}|}~{y~}~~}}~}|~y}v~|~}|wx}{}~{|~{zxyxzzy|}u}~}x~|}~}xyzuz~}~~{~}~z}|}~~zz||y{z~|z|{~x{{{|}|zut}u|w}z~}|~zz}zw|{}~}}|y}~{~}|~~yrz~xz~}wyv~wz{}|~~y{wt~zyw~wz~}|r{{{z}sw~xzyy{~}x~y~}}xxv{~x{uww~~|~y~v||sxxv{|yy}y}~}|v|~}s{xux|{{y||~|}}z|||~x|}z}{~~}}zx~}}}}~|y}{|y|}zv{|~|}|z{{w|z}|yv||u{~|~{x{yz~y~}zzwzyz|~|}~y}|{xwzy{|}y~{~~}z}~v}z{|~~}}zy}~~~}||~{{}y{z~{~{y~|~||~}|y||vzy~{{~{~}|z}~|x~{~|~{~{}{{|}{~~~~~|~}xzx~}}~~|v|z{}~~~~~|x~|v}~{}~}~{|~y~~~yz|}zz|}y~~{|}~}~|}}|z|}y}{}}~~~y}~|{z|{}{y~y{~|~|||}{y||||{||}z|{|}|~~|~}|}}|{|{~~}{|~y|||~~zz}{{~~~~~}v|z~|~{y~~z}|}}{}~|x~}}}~z{z~}~||z{|w}}|~}~w{z{~{{~|~~~~}{{|z}}yy~yy~|y}~{~|~~~{z{}~}}|~}y~|zy|}~~~z{{z~}~{~||~|}~|{}|}~~~{|~~{~|~}~~~~||}~~z}{z}||}~}~~yy}}}~~|~}~}|}~}{}~{||~|}~{~}}~|~}}}~}}|}{~|~|~}~}}|z~}~~{||}}~|~~}}}~~~{|~|~}|}|~~{{~~|~~~{~|~~}y~~}|~~~~~}~~~}}~||~}|~~~~|}~}~}||~~}~|~~~~}~~~~|~}~|{}~}}~~~~|}~}~{|{~}|~}~~|~}|}|~~~|}~~}}}{}}~}}}~|~}~~~~}}~}~}~|}~|~~}|~~||~~{}}~~|}~~~~}~}~}~|~~}}~}{}~~~~}~}}~}~~~~~~~~~~~~|~~}}|}~~|~~~~~~~}~}~}~~~}~~~}}}~~|~~}~~~~~~~~~}~~~~}~}~~~~~}~|~~~~~}~~}~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   ( 5() IT 0 )g5lq    7 .  c!  ! R[r2 X  $4  b$yM%@əzO; b$;\¥_9ZL b$-Uяx6x:*Wb$:lTvڃ/'Qf{b$a$WeWT}MInb$-uB QPEb$KsIADt b$`T ߨIFdFh-b$AjO%䧇G0J%b$\JPJŶ;b$AݎO5c30$b$1;g7px .h"$*Tӯ1X# +Cb$#t uN|b$:Cin^\lc7b$B+ {?|;c 0AA f3ffA'"@"8\h/ ʚ;k8ʚ;g4<d<dB 0~ppp@ <4dddd0pC 0l`- g4#d#dB 0Bp@ pp80___PPT10 ?<, (Sebastian BurckhardtO  =(VBounded Model Checking of Concurrent Data Types on Relaxed Memory Models: A Case StudyWWSebastian Burckhardt Rajeev Alur Milo M. K. Martin Department of Computer and Information Science University of Pennsylvania CAV 2006, Seattle3]The General ProblemThe Specific Problem Case Study: Two-Lock Queue& ;Algorithm published by M. Michael and M. Scott [PODC 1996]<< pclient program observes ordering of operation calls within each thread argument and return values of the operation code is correct if and only if all executions are observationally equivalent to some serial execution (def. serial: interleaved at operation boundaries only) We assume serial executions are correct (can be verified by convential sequential methods)`A'"FR &Finer Interleavings = More Executions kserial executions threads interleave the operations (operations are atomic) (operations are in-order) sequentially consistent executions threads interleave the instructions (instructions are atomic) (instructions are in-order) relaxed executions hardware makes performance-motivated compromises (stores may be non-atomic) (loads/stores may be out-of-order)LG_%U"]q# Case Study: Relaxed Memory Models&$  Which Memory Model?Memory models are platform dependent We use a conservative approximation  Relaxed to capture common effects Once code is correct for  Relaxed , it is correct for all models See paper for formal spec of  Relaxed ,I Halftime OverviewGeneral motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Our Verification Method How To Bound ExecutionsVerify individual  symbolic tests finite number of operations nondeterministic instruction order nondeterministic input values Example (this is the smallest one in our test suite) User creates suite of tests of increasing size H#]g#]hWhy symbolic test programs? Implementation codePwe hand-translated Michael & Scott s code (above) into a low-level representation that uses explicit loads, stores we added code for dynamic memory allocation and locks" Commit points designate where the operation commits logically given order of commit points, we can construct serial witness execution eliminates the in  executions equivalent serial execution 00X  Counterexample TraceEncodingTGiven symbolic test T(A, B) memory model L implementation code & commit point specifications Encoding First step: encode concurrent executions of T on L as solutions to CNF formula FL(A, B, X) (aux vars X) Second step: encode counterexamples as solutions to FL(A, B, X) . FAtomic(A , B , X ) . (A = A ) . (commit point orders match) . ((B g B ) - (some operations commit out of order)) nY CA'"5  "A'" =""" -fLs6 Encoding Detail: Obtain Symbolic Instruction Stream74  Encoding Detail: Memory Order %Encoding Detail: The combined formula (So what did we learn in the case study? General motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Results: 5 code problems found&  Results: Scalability Graph shows tests in our suite (unsatisfiable instances only) y-axis : runtime in seconds x-axis : # accesses (loads/stores) in test Fast on small tests, slow on long tests Not sensitive to # threads All 5 problems were found on smallest 2 tests... all under 1 sec t>G>GE2  Conclusionquickly finds subtle bugs supports relaxed memory models counterexample traces catches broad range of bugs (not limited to deadlocks or data races) is more automatic than deductive methods  " not truly scalable (though scalable enough to be useful) not fully automatic does not solve full problem (bounded instances, commit points) Ordering/Atomicity RelaxationsThe following 2 examples illustrate the main effects (1. ordering relaxation / 2. atomicity relaxation) Where necessary, a programmer can prevent these effects by inserting fence instructions  What code? Data type implementations optimized for concurrent execution (Concurrency libraries) What machines? Common shared-memory multiprocessors (e.g. PPC, Sparc, Alpha) What bugs? Bugs caused by concurrency (We assume code runs fine if single-threaded) | ffVff? ffJ_! Encoding Concurrent Executions"" /       ZK0  z   (   r   S D M 0}   X   0A ? X   0A? \ r   s *C"? Y r   s *C"?  XB   0D"jJi     0@ovIR C Qcommunication formula 0"XB  @ 0D"jJ    <hvv  Rmemory order variables 0"XB   0D"jJ   <v`P H input values 0 "   <r   I output values 0"   <,Fv  Ointermediate values 0"XB   0D"jJ@XB  @ 0D"jJ    0P I C Qthread-local formulas 0"XB   0D"jJ  H   0޽h ? 3ff~___PPT10i.R-+D=' = @B +r|e} (     Chart Excel.Chart.80*Microsoft Excel Chart./ 0`DArialans ll-ԥ0B 0"DTimes New Romanԥ0B 0 DWingdingsRomanԥ0B 00DCourier Newmanԥ0B 01@DMath C Newmanԥ0B 0PDSymbol Newmanԥ0B 0`DMath B Newmanԥ0B 0pDGill Sans Ultra Bold0B 0"@0.  @n?" dd@  @@``_ camera.wav.WAV 140105RIFFWAVEfmt ++datah||||||||||||||||||||||||||||||||||||||||x|x|||x|tx||||xx|||xx|||||x|x||||||x|xx|t||||cgxkxxt|x|t|ttxxox||xxto||xt||t|x||t||oxkxx|xo|||ttt|ox||ot||xx|xot|||x|x||xt|xx|xx|t||xtxx|x||t||||||x|t||||ttxx|xt|x|ox|o||x||t|oxxot|t|o|xxx||||x|x||t|||||||||x||xxtxt|xxx|xx|xx||t||xxt|x|||xtxxxx|||||t||xx|||t|xx|xx|xox||||xxox|x|||xxxxt|x|xxt|||||xokkgWto|tk||t_|kxot|x|o|x|||xx|x||xo|x|xx|x|xtx|otxx|xx|||tx||||||xxoxo|t||ktxxx|xttto|t|k|||x|||oxo||txoto|x|xx||xkk|t||||xx|t|xxto|x|kt||||xtt|||||||xxx|ttxtxx|||c|k|||xtxxtxx|x|x|||x||||||x||||xxo|g|x||x|||xt|||||||||||x||||||x||||||x|x||x||||||xxx|o[ooBtWt™F_gtBW|gJcttFtogotxgoo|xo|x|||ox|xxx|xxx||x|||||||x|xx|x|||||x|x|x||x|x||x||||xx||||tkt_|o|tk_xNƀ)JۀgtgSk FB%||>gc:ΑtSx)k[[>xk_xx[[cSco[ookc_ooƀkx|So||gxxg|tc|to[|kct|totkgo|oooo||ktt|txtxk||||||xx|xx|txt|||t|||||x||||xx||||||||||x|||||x||tx|||||||x|txtxx|||||x||xxxt|||||t|||xx||||||xx|x||||x||||||xox||o|gc||tok||ttotxx|t|x|xx||o|x|||x|txx||x||xxxxx||||||xxx|x||||||||x||||||||||||||||||||||tx|x||txt||xx|x|xxxxxxx|||||xxxxx|||x||||||x|||toxxxxg|ox|ott|c|x|ox|tt||||||||xtt|||||||||||||||||x|||x|txxx|xx|||x||x||||||||||x|||||x|x||xx||||||||x|||||||||||||||||x||||||||||||||||||x||||||x||||||||||||x|x||xxx|x||||||||x|||x|||xx|||tx||||ot|o|x||xt||xtt|||||||||||||||xx||||xxtxx|||||||x|||txx|xxxxx|txxt||t|x||xx||||||xx|xxx|||xxx|xtx|t||||x|||||||||x|||||x|xt|xxxtx|x|x|xx||||||xxxx||xxxt|xx|xtx|t|xxt|x|x|txx||x|||xx||x|x||||||||x|x|||t|txx|xt|t|txx|t||xxx||x|x||xx|t|x||x||x|x||x|t||txttx|t||xt||x||||xxxx|xttx|t|txx|||x|t|x|||||x|||x|||x||txto|x|x||txx|||xx|xx|x||xox|tt||x|x||x|tt|||||x|x||x|x||x|tt||tot||x|t|x||||||x|||||xx||t||xx||x|xo||ttx||x||||x|x||x|||xxt|ox|xtxx|||txx|||tt||x|||o||t|t|xtxxx|||xxo||xt|x|xtkkkot|x|t||||x|||||x|||xx||x|x||x|||ttxxx|Nktg|gocxo|o|ttgt|xxxxt|t||x||x|txx|x||xx|||xt|||x|x|||||||tt|||||t|x|||||xt|t|x|x|tx||t||x||ox|ttxt|xtot|g|xt|||||xxx|||||xtxx||t|t|x|xx||||||||x|||t|||xt|||tx||x|ttttxt|x||||t|x|xo||tx||txxx||x|||t||||x|||xxxtt||||xt|x||xxxxxx|tt|o|gxt||tg|txx||tkkFokx_toc|tot||cxxoo|xxtxoo|kx|xktx||ot|txx|x|||x|txxkt|xtxxt|xtktt|t|xxxxxxx|xk||t||x||||x|xttot|xoto|oxxtoxx||xxx|t|x|txx|x||xxt|o|||kxxx||x|x|||t|||x|||xxkxttxxxxk||xtox|xx|xtt||t|txx|t||x||x|xtcߌƑct__|SWo|Nott[_t|gokx|tkxgtttcokkxxxxgc||||xxt|||x|x|xtxxx||||tt||x||||x||x|||||||||x|||xx||||x||||||||||x|||||||||||||||||xx|||||||||||||||||||||||||||||||||x||||||x|||||xx||||||||x|||||||||||||||||||||||||||||||x|||||x|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||x|||||xx|||||||x||||||||||||||||||||||||||xx||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| chimes.wav.WAV 250106RIFFWAVEfmt "V"Vfactdata{~x~{}}{|{{|}||v|ww|}|w}u}|w{yzx}y~w{}uuz}{~z}yv|zyytvuyxyuv}xwu~}|{}~xw|yt~v}yryuuz{}{~}~v}w|x|~t|sy|i|pieyptrzwvu{x{t~{x}|urtr|x|}zt~|rsu~{~}|~y~}xu{~{y}wyxu}ivw{|{xysrqkvkrqpm|k{x}o}pu|ztp~vv}}~}uvw~txw|k}tuw}z{x|q}yv{z}|y~q{ppymvqsp}ow~uxx{nx{ivwgwslxzo|zz}||~wt{y{}}|{xwvzqtxpxws}vz{v{~q~|t~}v{{wwjyye{okympyutx~|}{x{t{twyqu{}{|{~wx}t{zw~|}~z|uuzkzsl{os{ut~w~xus~vy~u{|y}~zwypvnsonvhwpqzt{{|}}w{}sz{w}~~w~t{|zo~ovxry~w~|xtzt|rwvrzr|wz|~}~ywoysx|z|v|xtvtntslypuwwyzvu|yy|w}}zz~v}zr|ptvoynytt~t~}||vytuys|{|~|zzw|u{vy{y~}}~tyrpv{ozuwyy{|~}~}}yy}{ywzyvuvzrtxqs{lzxqv|~~|}z{~~}}vuwn}yuzzyyz}~{}yzw||sv~x~{zz{{w~uyx|}z~}wz{tx{o|uszyu|~sw}x{}~|~}{y{|u}{wy~pxzvqwz~vu{{}uvvsmveOOVOhx^]~jssch      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeghijklmnopqrstuvwxyz{|}~qf_^mv|l|c~t[y~vfl}zzf}}|~rq|ui{{ld|t}]~rrXxtagjnssjs}r`fqv|vjmyroyu{m\ylflxqhxgV}jXk|^fzzRttou|jnnusptipravx~ik{mtmZnwj`poaf}qanx{Txhvnytw~`ppxuxulrSzumyikyatwiLvgdX]sg]j}{wl|[Vopyi|ocv\f|stX^e~kikgsuMnzpwcrvxV|}yO`ec~ebrdoYw}Xz`kig[swgkdm{\RCjysybb|~_fhz_kdwTpzt_hqbwiXabvNnzkSzro[jyxDypg{^zsuU_Z_zjbTzdwfvgc__\xvaevjfQ~PV|wawYfWclp^ovOy~zgcwakq^cimRt{{}]nuV}m{oLs~z_przi`gjkxv{qRwfe|suyaq~e|qy~n[ooya{cQ|q]cysXvw[hz|Vr|g~rqgi~}szejsUpzjgqzVjrunen`usyq|i_~z{^V{hTyf[v~^fmwsrsLxtV[hKesOvbvpSfgmumrZpol}}ulpuoqkijpwxrylk}mxtrgg~oitkyrXeg~T}syHuyZbw}i_p}nXrYflYl~dmvf||kUtqVln]tkrw~sl~vyvonmqpy|y{lq|nqtxueocdoUdfZptTk}|ZlqlvmsSk~b]jYmqtnlr]g{Ucj~Rm}\{vlkzzmuwuuy{my}qqzkv}yzn|re|zs}o}tas~n_wneraqp|`\uceih^p]i{o~cquzsizko{`hlZzmVr|\}lywkqyrto{pt||wxv{spr~uzuponzyzvhzuqvizx~hospt~[rtWoZ]qZ{qlwtl{tbpeile}nzndkfd~{tmwj{}rju}uoy~}uvzwwa}pmzvu~pnvmt{t|pzy}vpstmlpZn\Zpy`yty{jr}~lxq}wydrtqghnZrsrlwjbyr\xxpkvqn~tjfu_mks{vvo}ypquqrxw{orpxu~gp[{sxjaq{jruzpkj_pnyr{^qYlgqpwsflvSsijl~gp~d`v_rwjo~b~|j|zzsotzk~pwammimsofw|lneyywgwk`kxeYocnt{utz[w^r}se}~uk}quXw]zbxnxo_x}rasxly~sy{wo~tqwynv}|{oznxzcxfr{w~jvqv~`{xRsdc}l|rextlovf{skwi~nmy_xywja|ohXlgxqw{}sszsshunttsuvwi}zprypx}flecfXvvihroq{jrt}vrk~{i}nzg{{hvooUd^e\txzkux{{rvnqgs}v}mky~wzum~~}w{|~i|i_z}Zofy}habZs}mo|~|nyst~u\ktvuizn`~rwhhb^mswlym{x{}l~yv~ftyqkpq|tu{r~l{ly~nz|vqvugg|gyimtzpemu}f|{nztnkhc}fmbluum`crfc}spz`lzx~xl{x~wo|yy}xylrwx~o|xz{w{~oyn|yhr{demzr_btr_sx{]hu`sujyu_{`jqdtvnyvws}l}mxufoytrjx{t|wnt||wnw{{{}~uopo~o~w}|}rrvn}wewn~rm|oneunpv`id{tze_jky{x_qrtu}owgrjflk~dxt|vutx{usxr}pwy}{xnz}remroqgigux~tz[qmnba|e{g`h\tlymbbx_rsylzg]o]gi{quemhn{~t{x~tz~|rts~y{p{rujm}otrm}smptrygpnxnha}ofrlstklxvs{ryun|f`ouhzk_{img~ukvtl~vuw|yztq}pz||}wtsurvxysqkhnq{~wnr|us}jYnalymmys|zxu{lslc[}kxq{gq}iymp|p_memgzom{|v|~z~}ztsow}v|txgy}py}mz|}muu||lmuho_}utypr~uzryqsu`gi[kslrowtzgrzmkvb[s~d|vfvp~v~uvztsnqmyxxsztp~u~z~u|w|~xnzynopluus|l~|~t{{ozomwacdbvntuqww|{rtwlnbdZu{qnvh{wzvjv}g}raotly~l}~~{y}yxqrv|w}owxvhlyy|z|vq{}~zx~qyv{xnse[lvkuqp~}gqd{bca_xnx~yxt{q}u~qujfWmclmzzyzt|zs|{ryljtnt}}nrousx~~~wzyg}owvoi~mb}vS^ggdz{re\mxWXxukaq}ibyrwqhnlM_r~f}tqmp|x|r}wl}bijl~n~bywrtuzwelVspdg~sszxrhzmzyptnvbepw~u}~h{fejpwxsqy^Wcpsy|}y[ljvdx}~yu~_yvww{qpr]tx^dztvyrl~wio|eimrtwnn`rhz~~xvswelr~wozgdGxm^x]ryygVknnyzrgfhubh}}rucws|l~~h[rjS[|nozyy~|ipoyhyybzvi}ilYp^rty}pltoqbO|a]zde~wyghlxruwfZswUmsvtyasoq{|qa|e[{VyZnb|ttnrrqhsktqfzxcz{jovow{sugrZQlOqquzqfrrw}qjvqgg|tx~jszWh{tqkwogTcnws{~~nvuutpwxru~g}sk~wgmffpwgmxv|~~r}yffyejcqqwrow|vpszzzt~~~|~s|~xlq\fygojywd~dfxtkwysfpf^ozzshy}i~x}{mrlkh_zm|{om}~zgzmy}{~tqhytmry}}rzu}}tzuqqgThoon{nq{ziuizy{qz}tyyt{vxlrxiozdzx^durlus~w{qowmzw{~|}{{}uw~znnvqow`]~tpyxxyqkhk|tx~zzv|zr~zuy{o{ylijcxpn}klruy~qzpr{xz}}{y{u|{~y|ttvyuygfwwsuph|zmryt~otivw}{}{szu}}v~~ovwswvbf|n|pvqw{q|rhop~n~zv{|utv|vwwxysscjspjivzx{xv~~nrfrkvxx~yx{xt{h~s~rqngpsxlptxqpytpymgyzv{}|y{|z|~x{y|t}vt{mdtpx|stmppsyuuyt{~t~|{|w{yuyxzvxmu`oqrynvsqurtft}v~}|}x~{{u|xzi{atsnl}uvxn~garl{w}wv{zw~v}yv}x}usws~wvxto|~p|xwv{jdw}izwzz}}~prwzrwurornwz|i{{b]gt|m~|h`yxkvrs~xr|xzy}s{qtyuup{}{swztqxwxx|zzzs{{s{z{|oy~yn}p~|pqzxz{{ryozuj|qtw~ppo||svu|uuq{eue{st{z}nqymnbnpy}~qv{o|ru}n~ry|{z~zxzz|s}zu}uzmlXsi}v}yvzmpvtoy~}yty|x{|u~spwztls|qxzn~qv}sw|zw~uwtvxuyx|y}{}{}p}vys}tunkqzr}zyzztyzt}z}yw~t~wplzv~}}u{}m~tkrvu}z{vtr{xsuty||zs|kf{qpsnysrzlowuvvtzlpzntyiq|z|}}~x~yy~zy|szittkt_otr{~|j~sk{j}pvn|}sxx|sw}|{yvrynx|xvwt|wwzw{~yp}rz{t{y{z~|{vyto|v}utq{}lrnuzx~zvzuputuvqwizwzx~rtv}nq|wuvx~tx~}zy{s~t|uw}zt~|vrwzs}zpoy{o}{nmhcfl|fwuy}rri{mve}yfvu|xye}yf~pp~~yx{vxvi}|h~{ixl}j{~jvktu{x}y|~{zxt}lqvzyz}n~}gjrwrxy~~r~gik~iqtkq{zo~zt[L~fO~ndnv}jzyql{}|jo|n~zuyl{zml}vo}urt|p{zehwvz|y~r}xzq|ywzys~}tz|zt}npvsww|w}vt}ypjmu{u}qy{~|||g{k}l}{wq}wt|tktr||~x~tukrfmc{zfho~pzypzmuxufpqpxiuxwbxdtssy}y{lwhyk~usuvvx~}p}p{pz|xx{zs~~i{j{tuqhymvkqsss|s~yt{~ts{`rsitkwpswp}zm~r}|vw|rnvrus{pdllx~ztqa{k}z|~|~zlse{rwqtoxwlyusw}{t}sqorsn{uoh|vv}nhamk{s{w|t{q~o|msvh~tp{vxwxmys~x~tymtwxx~|xvxysx}|~x~z}ttl|}z}qr|ystyw}u{yzt|~pt~{ryoxynxq}~|}{|st|xwqnmyqzw|tp{v}d|}btrsty^ruipn{l{rxoz}s~rvnzrtx|w|~wuivtn{||{~wy~oiqvk|znwxtu{~wyn}|fqkz|ysx}qyp{sz|~wyrmgrn{|w{xloetwzvux{upxq{uxu}~wq|nsss{~|ueqrk~|gznol{px~uurvykur}{{{v~mut|qm}}wetsvpzsuwtfrl}kxk{ynung{}x~pw|pa|k||}oxmpxocr}z~wytqpz~wpl}}sxj|ojhu}u}{jxhrppf}rzdrwswboxmxphrfqzuz}is||qmn}wmp{evxyerz~vqh}vfqxrjq{zqxruw[vnzfpfpitux|tqv|ynimgl}xkqsvZfkrovzybw{utmvzpyzrh~~i{ttve{ygymbYz}cm]x|`memy]]z~|mp^|`kpez~zutxpuyxhzy|}|}|ylyg~uzu`}tv`rm_hwvl_|v{]dmyn_ppsvdbxu`lmipgndttfotsg{uvty}yw}zyqp|wqmwz{_sykcfokal|sp^fadisykiknrx\nxqqqnp_vl}m|pyvx{zuosrtz||dkwjmdwf|htzdnnnmksvz]mgrqppxjhvxokr{}ywl}oxvunxoz~y~zwv|syzvxwyayeulrkylwt`mrqhtr|joqxm~ty~qvswstx~ujpwytm~|vv~t~uw|kyz~|axyhoxnsr{tptvy~hpzzsrnylrmro}vx~nxw~wu|v~ux{~}ytz}l|{{~vuv~v|vmwwwntvlwj{xerzfx~{{r{uzzpy{w}wz{kqu|}z||w|mwx{zssqvzypzszyvp[tvrsmvz{r}ywmvzohgb|ezpvUllsnwcum\vnyxo_L|puccIwbok~lzphgbwp\fRqnpve~u~mtdq{|oiWepmfuklfsy|}vzrnlrpvsejcesyxpdenjyzy|y~dn\frx|e_biywq~rwysynu{|qba_tw}k]jfmo~z{~kxktnrqt|mtVeZtvfjhv}xwuxw{~qrnk~}mm[hsxap`~j|n}prljcmanpr]m`lyxhxk{ej{u}nbjefxhg]h|zyxuz{xzzgrlt~wapYro~{yjupnwp|wy}mpujp{yyquwmqzyo|}ytty}puzbxewzcpk}|tz|u}on|pts}mowruzw}z}utsyqku}|xo}unywz{ssv||b|ssvu}w~yrxmpwryors}~qs~sxw}sl}{r}ltyn}znyrzqrkp}x{zpp}p{rszym{vmlxq{ysu{g|qt}nwwtx|zl~xz|j|tj|zpb|}}s~~|}yrp}{w~hvn|p|wjj{sux|nz|q|w~syn{|}~gdxu`qzo}yks}p}kyxxtv||vt~uxs}|outwkhVs`^NqbnewqiyYlQrwa~Yz[fvkgxt{vjx_[wsppu|prZ{d~sw}tt|rv|vlv}tmkbx`n}vbrizs|u|xiwzJ~O\\mqvlpoohr_ipWR{hpyuZhNwQVf\nbplonjsiy|n~fiytydwz~h|ad[SbJDOAv]rezkHj1t3izTzbyG~kZ~^ar@dSq:rhc^a[Av{|htxUph}pIWhGg}~|bnzkw]z~wxzbepwsiD_Xhumke_r_o_~x/l,oC|\ucdvYeu9q@kMr|m_}lizfxreXrnqqu}h_aK]WMraSCiR^uvtciW1CiJ`^tEtv{^Y~a|pNfpJvY~i]a*ZbX{qwdnpp8Ej5lFObmpW`t{h~lddroqStow@4\DeRyO\fsowyXkUn8pZWmSfsYmgb@zblSen[Smp]&g8N uG^roGoEpzQX=S]Iv{J^ku_zRRygb~~gk}we;sA=;c;2R__^iu_dbh0sOUEnzxZwU\pejyspjLgc\`ITawa+r1cp_iqfmJTb0~IRbtqaS{}jtJ~~y|xtggotSUXm0gmwIr}trYczpGvq]yEs^b[}v}CbJ[kxZvZXYYf5izcic|z|_]wrj`kh{uVzULGw]cuy[i|OwpX8\\GT{tZ^wo~r[tv[^guDqZOUrqK{ymfp[bnaFdk]Svuvs{[ps|gg|rgn}||~mitea^`y`|zy~u}\ivyengVk|xx|sQYyrfc|gY}ywx{zLoidSxRetzsVj`w~^{e|uUmviFggRYws]\meubs{}prs|osMl}}cju}huW{WYw|v{t|xvumlirusQwNP4dEX]p^JnmXwukEOvE^wakMqeWadgWso~iyKpSohyxxhxrUn}pqappZvm`yisalnLacWojmZahtt}Vsut}to}|o{|yyieby}ke~{pvw`n}\nm{vmouq\js{bf~dkje|UvZYbzen}v[_|zl}toyAUb[fyjuvGYtvf~Ux[}yfXy]ba}ewk\L_}ptaxhukr~i[S~sezNVoIqLusdwoeqPwLNgLvIqiaYik~`o`prhi|iK~Gkat{bsdTWwqf>m@}|SRv}XLyV|jizYViYwy}t{oxZvtRx^[{TeR{=uMsohV|zPyXbe]WIY[z`xwd{az[a^jp]ypo{tNOpjcwRs~d}mqyglvp~vrncbe}|avsL@}[|rjOyJ~fabjlld|Yw\mrr]e_ee`hznkpej[XaTlZ{rb`qSYvbP^nmu~|qwtksdysmxufdherl}S<}UNzSeqv\cuxvk~tih~}`~Qm\{pgq]p{ll~ps]tDie8H[oKp^vy\Ae4kTrwcyt|vvtf~y`Lt_O3^Q={;Kewbb[yIiIDVRriav\peqzy^`dI*vjTyBt~j>MwQK\grxnri{jhgknmGKEZ?g[s}p|IufyD~usnj^zw mTDp`b|{etzPOWS_ezI{yg2fCvVi|mb(Xo~mQ[t3U`\yk]tuPVGntbXfPx<_jj7-YT`iDlY(}rJg{k:Mkf~(jZnvZcPm][7^k*dF\Qxa=oORpWyj3ftk}a`nijSixuyd}{Xg~gtVpFvb@d|P|n{uR hu-M|{KpmOnxi}^K^csgsvtOWl{\dFYIzkllL}W;hfcvmlUWMaLtKMh\1wA@ggSA^`O|abqjoHbtaZl_UyRSvmn+5`doj9ifl>v{~VsLd\qAzQOinLh~jfQq`xrMAb?db5Yz~L8xaT{DjZ-xF~*@vknt`sals|}~q{~vxj`q{iN|{xekf]hbvV6zw-;~fXvW{)ȅE_Xcs~F5d9T|vPwf\8sgvN7cL]~>h\KYtb|eoh,C`wsVW}VlFuQRGzEMF"JRj|~l|QofnX|be]]IRI9+Vjh_gspBntnM%ā@ P<:vWc\R|^~>_| ^bGo{Pfk;x~xik_Jeu>(cD}916Btxcykd&!jGwXQD8~emR^x[kvShZ@I^&`euOklBYE*9\y2OYo^~h]Myth0nhnWijv}xfbtiY`uoOi^fOjhZ^h\i*t"6M.\eO/Sq|lhWul[S]Dt~l}0hhrWu|zsdgj_LF)E@Qo2WU}P4[b$aq:t[nL`d~pci{S_yv|9lRMOOtj=h}dJLU}dkyeJ628jshlz^*f}yXDBAqbKSp|cTjsjehZRzdKd=]DE~Z)LmwxV/'P_.@bnQL8DPZikjQF;HS[+V`fdruz{ngu}Pi}bJGW(J_W{~UF?Ī?Zdg8~xC-wo\w`xnv-c0ewz]~~yyZRao\p}t~|AktbPyl#{\X6Pu?ltdv2^|Goka[C^imvyklcfn`P~eWawScXo~6g}NǂCwzq([t-\vok}nkXf^~{~zv[yV9Nix~zgNoon]M|p`bNs;}jtMZYux~iQ\p\yQ|_c}|ba~\t_D~G]{pk;MpQCpldt~ri7sq[r[kex]h{TiT>_R{]tX:x#[z{UT{ne{Lb_qnrcnPChl^rr^zYiKzLS}xomilPz\xh[cVWWt7|h`~gkrku^^XxRiygl)rtWrfy{]rLyx`YnCNyWKrR~Tyzlxr]jvsTlsbZ{pnwG~](ip{rw0zjxQ{`xQKv~frc^}fu[o~r}ndooLBz_~s^}bTuJ[{=NRL~}qfy\~`rLs{urjmmjvbkzeVvh}\rlAwsX[exPTibplL~Yigrpsjgim{]vpgoDmmfwxiRRpxS.}hwvg`geS~t`uayoyh{~wnn]{|_imgSxWvegr~T|tkm^Y}h84C9fm\~k^jwa}ofw}lBtsSa|v|jgvhieFqnga]pkt}YC|L_zopTuk^dY~snPQGe}wbxZsdQvwifsP`k\djgmvRgMew_~yyp|j`qtoznyvsp}kjuWmq\KBsiZuDO(bcjxYkv}slhkWj[g{zdy^xnhzLVs`[}yaRwUcny`zrbotq}Xv{zwWus_W|J\wprfqrdnTMzev`htkwhos]zLk{jkm^nxx|mfUgqnTobwjiQwdt{Jtfrruvl]apwg[cqk{gu{YlrpjW~u\b!jQuo_z|ptj|rpsejXvQde`cnd_pOyzYavugb|qmpyo}Wtxy\gcu_c{^iqns|[hpLvttPorhkLsvYbMlOej~b^i~v`htvxw{v{{tf{t\{u~Q|lb;]D|mo}XPkoul}udxfgV~x{wqkkkr^df_bslypz}b~r{Nl{n`x`?s[>uePp{ewi`e`sv\vPuj}u~tg~ouxvqwu~gwzj|oun~jcjr|TAuShP:[Yksdgv{vn~k{xu}htgxngugvmptqroykwLkmdr^yhRdpQt}eYsM\pwajvMl{ddyYlo}kl}fv\|X~qrjyu{d_zn_o}y_dws|sauxx}hSSQaLsnYvjv_x}{znvs_Z|jXoy]mk{mvrknsnwyUy^yg|`T`}sglnuUspYasesXUSZ}t{fzpdwnygbsnagsws|kyfhp}nsjtktxp~iwco~xov_GcrW{d}VPq}jrxwqyp~o{nnvzmsiflpshpnclkuZpszyYZV[}w}j|ho_o}^jq\he[pssqolya^}xtgucsksxhrhXmisi|who|syv|dmgusl^lpxpYs|v\T^dxk}hxh|izsvzz]xs~[wiy~itkxi~[b_Wiwgmwv|{qjrVg~urpxxvsaY{ljenf`{muxXbkRw~y}{wzr{z{swrrqzmzt}ocliy}tZZ|ru]=[Zdkn]ujvkh~{sxtmuuov{eyc}ubonynU~`vzpQdri\ufxt}rm}piww||tu|owd|rYdvhr|e`hTdirxqa~]zfr}_qpvgqvkgzy{r~drtubjvrXdsXOsw}W}Qv]upwt{akr{_xp|rcpu~vlz~vw~sx^Uwhkxnf`{z_`tr}{j{t|mwql|wepqfUv}Z[s`bo{{w~kmlrjQp{kT}|kS`_Y~o_zizomi|trqtLVyqfkxksl`t[hsv|{m|r~hylxzdu{qwtpuuzzo~ptj\loy`In|W\_r~pgm{~w|}qrnwtjnry{hokXvmiljyKK`U~tb_owwmzsv|riscs_f{Zytngmniryqngstebum|jh{vxyx~|ypoh_{mjkbpfam|kqmg{zeciwl}ay`n]itkvq}yiw|jkio|o`Wxk[o}qWbedquaycuhn{kq~poqz}{xrshz]giYzqdk~zdclzjho}q}ni^r}gutzbzqPZu~Whv|{W~ouvjktqscoayW`rxipir|c^~uhcxsg[kzsovjiw|hw~w}so^j|jnx}sq|rx~vomreiRZzw{^f`dYyj{nyYixt\^ntle|mzgyonkryxw_]zmRf~c}bpg|dj`~ta~zs{zt{squwv{tsx}wmzilkhovk}qswtNa~\Wm|znwxhr}frxrqmr}qd~lz}_bc\\rvf{j~wWtl~~keucj]v{hybe}tm}suap]cuudlwors|zqfiu~z{uux~|py}sp~{o{ssuxqoqtgWvi\d}umnnqzzbcqx}ius|dhyv}^cy}ohpgwwomrvq|s\m{Xbr|^]y~{prwvuusxirwl_xmeqqjl}fdxvp|on{{kwswtgwv~}k~n{zyrkcwu~gmkyyzmydw{w[]`Qtri{[ookjpvwipvz~|ssufSl]Zxrpts|tizkvhT~w}|p|}{zxyoo}}stxumome}rszsh~rjZq~dxl{srutpfrsg{o~i|~}ijzzV_kxc{yzu]xpeXqaauqfrv~wbjwwwwx|oyrn{zrj_vj`~i^ke~n|w~wk}xl~}{|y{{xxzej}l`j}i{sycsvw|fxe~vXcwlpk{ytrwylruanqtmiovjo|cfxbqmrvmqzr|ppt}}}vgzvir{yzpjn_e^}kzi`bxMszbt{tbpzs~qfmwrzwvuxnu|d{nn}uku{qb}kuk{[~hpsvw{o`q{tiyl~onnzo^jfwwjtc}aomttcmuuksnuw|}fzqw~x{|wwhz|w|whzkql|qd~vxQk{gsskhpq_[ywrynyygvzofiipuk|grxfs~hkwvk~xv]p{ntory|e|~|{fu{|||p~yjyh`tnlg|s~wgr}ptoxxz{two}or~vou|w{qsy|~~jvl{h~kh[vmfxs{{quxVwlxzrnx~h}vm{u|pi}ogxxo|vhyit|la|nry~zyu~lsurrg~}itq}unvjn~xsq{so|{|jhr{m~xpyp~||l{qvomvzlut|swzfret}v{pt}mt~|spp}x|tuwuxwk{}inopu~~hruhwyosqpy~}~xmsvustx{trnrp~pwzpvskyuu~ezuzoevtl~wj~wz~|vywzqv|z{r}_m}vvy|ts}xzzzzxvst{w~rn~vxyzwwszzhyzsswpi}ht{xm}~mo}l}ut_}{q}utzt{xtr}m|w{yryouhoqzrngzsju{u~q~xz|~{lxhk|uzsvr|t~e}~w~ntvuy}x{|xvvww{v~uiu{wz~wspnkcvstx{xs|}}|o{t}||smt{rovj~{vxth^xqmzwo~{ow~v~Wuz{p}rp{wudiqwtbzk~wz~x}qr|vvu|qxxq|zty{|zhxx|uu|Z{p~kxw}||twquq}xpuou\z|v`ncuxhxxqrszy~xsw|iiqwyzlzrtt}votlz~zvyty|ot|yksybekv{s{ow~crxuzl^~}uqsxzcoyhn^{tYpkytZYhd~v}ogzi{s{Z}gumwr{tvov{hYt}bwwursb{fi\y~vsif~pyy}x|tvukstxclp{uxswwm{{~|q~OgZgtn{uv|~_rx{sc_|j~ttx~pjriqvorhz~qlvno~w~wxjndxslynnuu}mq}lfynp}w{uup}qX[{kv~{}_k~zp[}ba}kajt|}rmp_fpnr}w{w||~nyljrwrsxqtm~~v{|{{l}h{sxZ~lkzuytwexngoewszv|u{l|wl|gwii{_rt{cluehdr{{z{kjvn|wqypxny}}qjxpcw|iqsz}uzupv{vvhfuuh{ryvzjovouvk{jtwt~paxek``v}loidnrmys{xyxwmt{u~ev{p|muxjlypv}xy{pz}~tux{sn{zzy~xxsu}u}oznpsxx~|zzn}g{aU}rwr~ras{qklus{sssnlnpqmZ~|rs|yovtl~as}|xhpa}x~{z}~rx{yeq|wu{{}pczwyoo{uklw}pivmn`{qtvxt}t{pwtvurqVw~n{mrwtn|su|r{{{q{wp~uuuzfqwzttzyqx|~~q~rzvrr}xsbptq}r{p}q^oztvrnx{}wtz{xucd{mrxq{wvoy|pmnuxrjzrruz{vkqvjqt~{~w~x}~yesp`yty~wpuq|wxrkrr}u~h|x{uf~qmstqm|||xmuyvzhm{|}{itsqckyzor~{~|_}}znu}{v~tgsv}yqjttwcy}x|v~s|qs_mv}is~~x|wu}ylonhqo}}v|{q~oyil~vsiz~uy{{t|ps{{}uuyyz~|dpr|qhy~}}rxzn|~pv|sk~z{~mxwnzqxu~szjnsclxwrqzcsybjmwy|w{rknxzx|yxz~uwqt~{~zq~rwznvzzs{~o|~~|syrv{p}||x}|zl}vjvn~{y~w|wmwsmsk{mouzvmq}ryxsty}u|zvz}suztv{xv}~w||~tp{qk}xi}stww}v{uwt}~|vmzs~u~|squwzkt{{bly~~mo~n||}zor|jxt{zxruxq~vq{}||u|{m}|~}s~o}p}|ypvpu}|~}uw{oyu~ww|~{txxn~j{sp|tqr|zvueeps{t}xns{x}{h~}{|~v|vx^zuvw}uu|uz~~t~ytznz}{qs}xxx~{wymh{v~}uoxyvop~~yjzyw~k}}j}qtw{|rp|z~vovz{zrw|z~zynvzt}zwyr}{sxrxwz~zx{xxyxtyqqs}z||u~llqqy|}q~}r~rsyj|x{ntz~yux~wytor~yzvv{}w~w{}w}u|{~kn{{yw|yo|z}vrz{x~}~wxyttswxy{ih|n{xmzjp|m}z|q|nuz|~u{}wzqp{zy]nwpqwtmonrxptlkjwqmziq{rm|~~|}wm|qpzuylkwsg{kv}mrwwc|vwxjzzm{x}~tovvxtyuw|zewx{w|}z~zwxt{}~zuwv{w|vntrxwz~|{~sxu|xxrz|y~|xkruvuwz}{z~w~}~~y{{zup~zuv~}x~rts}|rwxzrq|xxsw|{z|~vy~zwt||}ronsyyw|~yt{~ztzx~vt}{~vvzq{ysvvyrxs{vy}~{wv{ql|s~|y}z~~~z~|w{zy~~{w}u|}|}pyywv|x{yy{z~yvz}xp|n{~rqwi|ipxz~{}{~su}w~|w}sw}z~tx{yx|u~xt}|tyy|~}z~~zy|}y|w{ww{}}~~}yxsy~x{y|oxvy}}y}kr{ywt}z}|}xq|}~|{|wy|}uqx~rrv}|~xu}yyx|~w{t|{|}zxy{|svuvzq|y{z}{{|uu}z}w~zrs}~|q|r|qxx|tz}y~}y|~yt||yzp~{~|x{z~w{yvyy{yzsy}n{~~v}sz~r}u|wuzzxwtu}}~wu~u}{~q{yow~{v}x~v~qq}~z||zx}zvy|y~zy||z~~y|}y|u|z{ztvx~zyw|z}~}{~{y|~xys~xvvx|x|ww~z|~stt|y~t~}yz~}}zxx{w}z~w}yz~xzty~}}vvzz}tyv|x~zyt{|rtyzrz|xuwzy{~~r}{~{zy}x~|}}|w~}x{|ww}~|~{x|}~|{|wyvu~~x~v{}}~{|}uy|x{{}|{t|~p}yz~z}vun}xuqz{~z}{z}yw{z}y~y|x{{|}~}{|}z{}}uxz|z{{yqp|xuztu{~rw}u}~}x{|t~~wy|~}z~{zzy~|v|~|}~{}u|z{p}{}z|{~~~|y}wtxyy{~zyy|w}v|rx{~t~wsv~{}s~vx~pwrxv{|wz{~~q~uwy|x{zz|vz|}||y~t{}~y}yv{|zu}~twry}}{|z|u}v{yw|wxsx|}{xu~}y{||~{|x}{uvz~tw~twz|~{{sw}|~~{{wtxs|txy~z}~yssrztzww~w~}yz}|u}~|vu~zwvoy~v}yx{||y{xyz}|v~z||vwswyw}ww~x|zw{wz{y{uzwv}q}{wwvt|qwyu}}{zz~{y~xxz~~~~~{z{|{}{~yyw|zz|yyy|~{|{z|}|yu~wxwx}||{~|xwvwwy}sv~z}|xxv}wy|s|zy{~{~y~|w~zx~z}||}~~{xw}{|z|~z|~z}z{zv~~x}zvzvxx}x~}}}zxyuvw}z}|}|~}}y}y|}|yz|{z}x}w{zwx~{}y|wuzzz}y|{}{{yy~y~{}v|z{}|}~{y~}~~}}~}|~y}v~|~}|wx}{}~{|~{zxyxzzy|}u}~}x~|}~}xyzuz~}~~{~}~z}|}~~zz||y{z~|z|{~x{{{|}|zut}u|w}z~}|~zz}zw|{}~}}|y}~{~}|~~yrz~xz~}wyv~wz{}|~~y{wt~zyw~wz~}|r{{{z}sw~xzyy{~}x~y~}}xxv{~x{uww~~|~y~v||sxxv{|yy}y}~}|v|~}s{xux|{{y||~|}}z|||~x|}z}{~~}}zx~}}}}~|y}{|y|}zv{|~|}|z{{w|z}|yv||u{~|~{x{yz~y~}zzwzyz|~|}~y}|{xwzy{|}y~{~~}z}~v}z{|~~}}zy}~~~}||~{{}y{z~{~{y~|~||~}|y||vzy~{{~{~}|z}~|x~{~|~{~{}{{|}{~~~~~|~}xzx~}}~~|v|z{}~~~~~|x~|v}~{}~}~{|~y~~~yz|}zz|}y~~{|}~}~|}}|z|}y}{}}~~~y}~|{z|{}{y~y{~|~|||}{y||||{||}z|{|}|~~|~}|}}|{|{~~}{|~y|||~~zz}{{~~~~~}v|z~|~{y~~z}|}}{}~|x~}}}~z{z~}~||z{|w}}|~}~w{z{~{{~|~~~~}{{|z}}yy~yy~|y}~{~|~~~{z{}~}}|~}y~|zy|}~~~z{{z~}~{~||~|}~|{}|}~~~{|~~{~|~}~~~~||}~~z}{z}||}~}~~yy}}}~~|~}~}|}~}{}~{||~|}~{~}}~|~}}}~}}|}{~|~|~}~}}|z~}~~{||}}~|~~}}}~~~{|~|~}|}|~~{{~~|~~~{~|~~}y~~}|~~~~~}~~~}}~||~}|~~~~|}~}~}||~~}~|~~~~}~~~~|~}~|{}~}}~~~~|}~}~{|{~}|~}~~|~}|}|~~~|}~~}}}{}}~}}}~|~}~~~~}}~}~}~|}~|~~}|~~||~~{}}~~|}~~~~}~}~}~|~~}}~}{}~~~~}~}}~}~~~~~~~~~~~~|~~}}|}~~|~~~~~~~}~}~}~~~}~~~}}}~~|~~}~~~~~~~~~}~~~~}~}~~~~~}~|~~~~~}~~}~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   ( 5() IT 0 )g5lq    7 .  c!  ! R[r2 X  $4  b$yM%@əzO; b$;\¥_9ZL b$-Uяx6x:*Wb$:lTvڃ/'Qf{b$a$WeWT}MInb$-uB QPEb$KsIADt b$`T ߨIFdFh-b$AjO%䧇G0J%b$\JPJŶ;b$AݎO5c30$b$1;g7px .h"$*Tӯ1X# +Cb$#t uN|b$:Cin^\lc7b$B+ {?|;c 0AA f3ffA'"@"8\h/ ʚ;k8ʚ;g4<d<dB 0ppp@ <4dddd0pC 0l`- g4#d#dB 0Bp@ pp80___PPT10 ?<, (Sebastian BurckhardtO  =(VBounded Model Checking of Concurrent Data Types on Relaxed Memory Models: A Case StudyWWSebastian Burckhardt Rajeev Alur Milo M. K. Martin Department of Computer and Information Science University of Pennsylvania CAV 2006, Seattle3]The General ProblemThe Specific Problem Case Study: Two-Lock Queue& ;Algorithm published by M. Michael and M. Scott [PODC 1996]<< pclient program observes ordering of operation calls within each thread argument and return values of the operation code is correct if and only if all executions are observationally equivalent to some serial execution (def. serial: interleaved at operation boundaries only) We assume serial executions are correct (can be verified by convential sequential methods)`A'"FR &Finer Interleavings = More Executions kserial executions threads interleave the operations (operations are atomic) (operations are in-order) sequentially consistent executions threads interleave the instructions (instructions are atomic) (instructions are in-order) relaxed executions hardware makes performance-motivated compromises (stores may be non-atomic) (loads/stores may be out-of-order)LG_%U"]q# Case Study: Relaxed Memory Models&$  Which Memory Model?Memory models are platform dependent We use a conservative approximation  Relaxed to capture common effects Once code is correct for  Relaxed , it is correct for all models See paper for formal spec of  Relaxed ,I Halftime OverviewGeneral motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Our Verification Method How To Bound ExecutionsVerify individual  symbolic tests finite number of operations nondeterministic instruction order nondeterministic input values Example (this is the smallest one in our test suite) User creates suite of tests of increasing size H#]g#]hWhy symbolic test programs? Implementation codePwe hand-translated Michael & Scott s code (above) into a low-level representation that uses explicit loads, stores we added code for dynamic memory allocation and locks" Commit points designate where the operation commits logically given order of commit points, we can construct serial witness execution eliminates the in  executions equivalent serial execution 00X  Counterexample TraceEncodingTGiven symbolic test T(A, B) memory model L implementation code & commit point specifications Encoding First step: encode concurrent executions of T on L as solutions to CNF formula FL(A, B, X) (aux vars X) Second step: encode counterexamples as solutions to FL(A, B, X) . FAtomic(A , B , X ) . (A = A ) . (commit point orders match) . ((B g B ) - (some operations commit out of order)) nY CA'"5  "A'" =""" -fLs6 Encoding Detail: Obtain Symbolic Instruction Stream74  Encoding Detail: Memory Order %Encoding Detail: The combined formula (So what did we learn in the case study? General motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Results: 5 code problems found&  Results: Scalability Graph shows tests in our suite (unsatisfiable instances only) y-axis : runtime in seconds x-axis : # accesses (loads/stores) in test Fast on small tests, slow on long tests Not sensitive to # threads All 5 problems were found on smallest 2 tests... all under 1 sec t>G>GE2  Conclusionquickly finds subtle bugs supports relaxed memory models counterexample traces catches broad range of bugs (not limited to deadlocks or data races) is more automatic than deductive methods  " not truly scalable (though scalable enough to be useful) not fully automatic does not solve full problem (bounded instances, commit points) Ordering/Atomicity RelaxationsThe following 2 examples illustrate the main effects (1. ordering relaxation / 2. atomicity relaxation) Where necessary, a programmer can prevent these effects by inserting fence instructions  What code? Data type implementations optimized for concurrent execution (Concurrency libraries) What machines? Common shared-memory multiprocessors (e.g. PPC, Sparc, Alpha) What bugs? Bugs caused by concurrency (We assume code runs fine if single-threaded) | ffVff? ffJ_! Encoding Concurrent Executions"" /       ZK0  z   (   r   S D M 0}   X   0A ? X   0A? \ r   s *C"? P r   s *C"?  XB   0D"jJi     0@ovIR C Qcommunication formula 0"XB  @ 0D"jJ    <hvv  Rmemory order variables 0"XB   0D"jJ   <v_P H input values 0 "   <r   I output values 0"   <,Fv  Ointermediate values 0"XB   0D"jJ@ XB  @ 0D"jJ    0P I C Qthread-local formulas 0"XB   0D"jJ  H   0޽h ? 3ff~___PPT10i.R-+D=' = @B +rCe (     Chart Excel.Chart.80*Microsoft Excel Chart./ 0`DArialans ll-ԥ0B 0"DTimes New Romanԥ0B 0 DWingdingsRomanԥ0B 00DCourier Newmanԥ0B 01@DMath C Newmanԥ0B 0PDSymbol Newmanԥ0B 0`DMath B Newmanԥ0B 0pDGill Sans Ultra Bold0B 0"@0.  @n?" dd@  @@``_ camera.wav.WAV 140105RIFFWAVEfmt ++datah||||||||||||||||||||||||||||||||||||||||x|x|||x|tx||||xx|||xx|||||x|x||||||x|xx|t||||cgxkxxt|x|t|ttxxox||xxto||xt||t|x||t||oxkxx|xo|||ttt|ox||ot||xx|xot|||x|x||xt|xx|xx|t||xtxx|x||t||||||x|t||||ttxx|xt|x|ox|o||x||t|oxxot|t|o|xxx||||x|x||t|||||||||x||xxtxt|xxx|xx|xx||t||xxt|x|||xtxxxx|||||t||xx|||t|xx|xx|xox||||xxox|x|||xxxxt|x|xxt|||||xokkgWto|tk||t_|kxot|x|o|x|||xx|x||xo|x|xx|x|xtx|otxx|xx|||tx||||||xxoxo|t||ktxxx|xttto|t|k|||x|||oxo||txoto|x|xx||xkk|t||||xx|t|xxto|x|kt||||xtt|||||||xxx|ttxtxx|||c|k|||xtxxtxx|x|x|||x||||||x||||xxo|g|x||x|||xt|||||||||||x||||||x||||||x|x||x||||||xxx|o[ooBtWt™F_gtBW|gJcttFtogotxgoo|xo|x|||ox|xxx|xxx||x|||||||x|xx|x|||||x|x|x||x|x||x||||xx||||tkt_|o|tk_xNƀ)JۀgtgSk FB%||>gc:ΑtSx)k[[>xk_xx[[cSco[ookc_ooƀkx|So||gxxg|tc|to[|kct|totkgo|oooo||ktt|txtxk||||||xx|xx|txt|||t|||||x||||xx||||||||||x|||||x||tx|||||||x|txtxx|||||x||xxxt|||||t|||xx||||||xx|x||||x||||||xox||o|gc||tok||ttotxx|t|x|xx||o|x|||x|txx||x||xxxxx||||||xxx|x||||||||x||||||||||||||||||||||tx|x||txt||xx|x|xxxxxxx|||||xxxxx|||x||||||x|||toxxxxg|ox|ott|c|x|ox|tt||||||||xtt|||||||||||||||||x|||x|txxx|xx|||x||x||||||||||x|||||x|x||xx||||||||x|||||||||||||||||x||||||||||||||||||x||||||x||||||||||||x|x||xxx|x||||||||x|||x|||xx|||tx||||ot|o|x||xt||xtt|||||||||||||||xx||||xxtxx|||||||x|||txx|xxxxx|txxt||t|x||xx||||||xx|xxx|||xxx|xtx|t||||x|||||||||x|||||x|xt|xxxtx|x|x|xx||||||xxxx||xxxt|xx|xtx|t|xxt|x|x|txx||x|||xx||x|x||||||||x|x|||t|txx|xt|t|txx|t||xxx||x|x||xx|t|x||x||x|x||x|t||txttx|t||xt||x||||xxxx|xttx|t|txx|||x|t|x|||||x|||x|||x||txto|x|x||txx|||xx|xx|x||xox|tt||x|x||x|tt|||||x|x||x|x||x|tt||tot||x|t|x||||||x|||||xx||t||xx||x|xo||ttx||x||||x|x||x|||xxt|ox|xtxx|||txx|||tt||x|||o||t|t|xtxxx|||xxo||xt|x|xtkkkot|x|t||||x|||||x|||xx||x|x||x|||ttxxx|Nktg|gocxo|o|ttgt|xxxxt|t||x||x|txx|x||xx|||xt|||x|x|||||||tt|||||t|x|||||xt|t|x|x|tx||t||x||ox|ttxt|xtot|g|xt|||||xxx|||||xtxx||t|t|x|xx||||||||x|||t|||xt|||tx||x|ttttxt|x||||t|x|xo||tx||txxx||x|||t||||x|||xxxtt||||xt|x||xxxxxx|tt|o|gxt||tg|txx||tkkFokx_toc|tot||cxxoo|xxtxoo|kx|xktx||ot|txx|x|||x|txxkt|xtxxt|xtktt|t|xxxxxxx|xk||t||x||||x|xttot|xoto|oxxtoxx||xxx|t|x|txx|x||xxt|o|||kxxx||x|x|||t|||x|||xxkxttxxxxk||xtox|xx|xtt||t|txx|t||x||x|xtcߌƑct__|SWo|Nott[_t|gokx|tkxgtttcokkxxxxgc||||xxt|||x|x|xtxxx||||tt||x||||x||x|||||||||x|||xx||||x||||||||||x|||||||||||||||||xx|||||||||||||||||||||||||||||||||x||||||x|||||xx||||||||x|||||||||||||||||||||||||||||||x|||||x|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||x|||||xx|||||||x||||||||||||||||||||||||||xx||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| chimes.wav.WAV 250106RIFFWAVEfmt "V"Vfactdata{~x~{}}{|{{|}||v|ww|}|w}u}|w{yzx}y~w{}uuz}{~z}yv|zyytvuyxyuv}xwu~}|{}~xw|yt~v}yryuuz{}{~}~v}w|x|~t|sy|i|pieyptrzwvu{x{t~{x}|urtr|x|}zt~|rsu~{~}|~y~}xu{~{y}wyxu}ivw{|{xysrqkvkrqpm|k{x}o}pu|ztp~vv}}~}uvw~txw|k}tuw}z{x|q}yv{z}|y~q{ppymvqsp}ow~uxx{nx{ivwgwslxzo|zz}||~wt{y{}}|{xwvzqtxpxws}vz{v{~q~|t~}v{{wwjyye{okympyutx~|}{x{t{twyqu{}{|{~wx}t{zw~|}~z|uuzkzsl{os{ut~w~xus~vy~u{|y}~zwypvnsonvhwpqzt{{|}}w{}sz{w}~~w~t{|zo~ovxry~w~|xtzt|rwvrzr|wz|~}~ywoysx|z|v|xtvtntslypuwwyzvu|yy|w}}zz~v}zr|ptvoynytt~t~}||vytuys|{|~|zzw|u{vy{y~}}~tyrpv{ozuwyy{|~}~}}yy}{ywzyvuvzrtxqs{lzxqv|~~|}z{~~}}vuwn}yuzzyyz}~{}yzw||sv~x~{zz{{w~uyx|}z~}wz{tx{o|uszyu|~sw}x{}~|~}{y{|u}{wy~pxzvqwz~vu{{}uvvsmveOOVOhx^]~jsschqf_^mv|l|c~t[y~vfl}zzf}}|~rq|ui{{ld|t}]~rrXxtagjnssjs}r`fqv|vjmyroyu{m\ylflxqhxgV}jXk|^fzzRttou|jnnusptipravx~ik{mtmZnwj`poaf}qanx{Txhvnytw~`ppxuxulrSzumyikyatwiLvgdX]sg]j}{wl|[Vopyi|ocv\f|stX^e~kikgsuMnzpwcrvxV|}yO`ec~ebrdoYw}Xz`kig[swgkdm{\RCjysybb|~_fhz_kdwTpzt_hqbwiXabvNnzkSzro[jyxDypg{^zsuU_Z_zjbTzdwfvgc__\xvaevjfQ~PV|wawYfWclp^ovOy~zgcwakq^cimRt{{}]nuV}m{oLs~z_przi`gjkxv{qRwfe|suyaq~e|qy~n[ooya{cQ|q]cysXvw[hz|Vr|g~rqgi~}szejsUpzjgqzVjrunen`usyq|i_~z{^V{hTyf[v~^fmwsrsLxtV[hKesOvbvpSfgmumrZpol}}ulpuoqkijpwxrylk}mxtrgg~oitkyrXeg~T}syHuyZbw}i_p}nXrYflYl~dmvf||kUtqVln]tkrw~sl~vyvonmqpy|y{lq|nqtxueocdoUdfZptTk}|ZlqlvmsSk~b]jYmqtnlr]g{Ucj~Rm}\{vlkzzmuwuuy{my}qqzkv}yzn|re|zs}o}tas~n_wneraqp|`\uceih^p]i{o~cquzsizko{`hlZzmVr|\}lywkqyrto{pt||wxv{spr~uzuponzyzvhzuqvizx~hospt~[rtWoZ]qZ{qlwtl{tbpeile}nzndkfd~{tmwj{}rju}uoy~}uvzwwa}pmzvu~pnvmt{t|pzy}vpstmlpZn\Zpy`yty{jr}~lxq}wydrtqghnZrsrlwjbyr\xxpkvqn~tjfu_mks{vvo}ypquqrxw{orpxu~gp[{sxjaq{jruzpkj_pnyr{^qYlgqpwsflvSsijl~gp~d`v_rwjo~b~|j|zzsotzk~pwammimsofw|lneyywgwk`kxeYocnt{utz[w^r}se}~uk}quXw]zbxnxo_x}rasxly~sy{wo~tqwynv}|{oznxzcxfr{w~jvqv~`{xRsdc}l|rextlovf{skwi~nmy_xywja|ohXlgxqw{}sszsshunttsuvwi}zprypx}flecfXvvihroq{jrt}vrk~{i}nzg{{hvooUd^e\txzkux{{rvnqgs}v}mky~wzum~~}w{|~i|i_z}Zofy}habZs}mo|~|nyst~u\ktvuizn`~rwhhb^mswlym{x{}l~yv~ftyqkpq|tu{r~l{ly~nz|vqvugg|gyimtzpemu}f|{nztnkhc}fmbluum`crfc}spz`lzx~xl{x~wo|yy}xylrwx~o|xz{w{~oyn|yhr{demzr_btr_sx{]hu`sujyu_{`jqdtvnyvws}l}mxufoytrjx{t|wnt||wnw{{{}~uopo~o~w}|}rrvn}wewn~rm|oneunpv`id{tze_jky{x_qrtu}owgrjflk~dxt|vutx{usxr}pwy}{xnz}remroqgigux~tz[qmnba|e{g`h\tlymbbx_rsylzg]o]gi{quemhn{~t{x~tz~|rts~y{p{rujm}otrm}smptrygpnxnha}ofrlstklxvs{ryun|f`ouhzk_{img~ukvtl~vuw|yztq}pz||}wtsurvxysqkhnq{~wnr|us}jYnalymmys|zxu{lslc[}kxq{gq}iymp|p_memgzom{|v|~z~}ztsow}v|txgy}py}mz|}muu||lmuho_}utypr~uzryqsu`gi[kslrowtzgrzmkvb[s~d|vfvp~v~uvztsnqmyxxsztp~u~z~u|w|~xnzynopluus|l~|~t{{ozomwacdbvntuqww|{rtwlnbdZu{qnvh{wzvjv}g}raotly~l}~~{y}yxqrv|w}owxvhlyy|z|vq{}~zx~qyv{xnse[lvkuqp~}gqd{bca_xnx~yxt{q}u~qujfWmclmzzyzt|zs|{ryljtnt}}nrousx~~~wzyg}owvoi~mb}vS^ggdz{re\mxWXxukaq}ibyrwqhnlM_r~f}tqmp|x|r}wl}bijl~n~bywrtuzwelVspdg~sszxrhzmzyptnvbepw~u}~h{fejpwxsqy^Wcpsy|}y[ljvdx}~yu~_yvww{qpr]tx^dztvyrl~wio|eimrtwnn`rhz~~xvswelr~wozgdGxm^x]ryygVknnyzrgfhubh}}rucws|l~~h[rjS[|nozyy~|ipoyhyybzvi}ilYp^rty}pltoqbO|a]zde~wyghlxruwfZswUmsvtyasoq{|qa|e[{VyZnb|ttnrrqhsktqfzxcz{jovow{sugrZQlOqquzqfrrw}qjvqgg|tx~jszWh{tqkwogTcnws{~~nvuutpwxru~g}sk~wgmffpwgmxv|~~r}yffyejcqqwrow|vpszzzt~~~|~s|~xlq\fygojywd~dfxtkwysfpf^ozzshy}i~x}{mrlkh_zm|{om}~zgzmy}{~tqhytmry}}rzu}}tzuqqgThoon{nq{ziuizy{qz}tyyt{vxlrxiozdzx^durlus~w{qowmzw{~|}{{}uw~znnvqow`]~tpyxxyqkhk|tx~zzv|zr~zuy{o{ylijcxpn}klruy~qzpr{xz}}{y{u|{~y|ttvyuygfwwsuph|zmryt~otivw}{}{szu}}v~~ovwswvbf|n|pvqw{q|rhop~n~zv{|utv|vwwxysscjspjivzx{xv~~nrfrkvxx~yx{xt{h~s~rqngpsxlptxqpytpymgyzv{}|y{|z|~x{y|t}vt{mdtpx|stmppsyuuyt{~t~|{|w{yuyxzvxmu`oqrynvsqurtft}v~}|}x~{{u|xzi{atsnl}uvxn~garl{w}wv{zw~v}yv}x}usws~wvxto|~p|xwv{jdw}izwzz}}~prwzrwurornwz|i{{b]gt|m~|h`yxkvrs~xr|xzy}s{qtyuup{}{swztqxwxx|zzzs{{s{z{|oy~yn}p~|pqzxz{{ryozuj|qtw~ppo||svu|uuq{eue{st{z}nqymnbnpy}~qv{o|ru}n~ry|{z~zxzz|s}zu}uzmlXsi}v}yvzmpvtoy~}yty|x{|u~spwztls|qxzn~qv}sw|zw~uwtvxuyx|y}{}{}p}vys}tunkqzr}zyzztyzt}z}yw~t~wplzv~}}u{}m~tkrvu}z{vtr{xsuty||zs|kf{qpsnysrzlowuvvtzlpzntyiq|z|}}~x~yy~zy|szittkt_otr{~|j~sk{j}pvn|}sxx|sw}|{yvrynx|xvwt|wwzw{~yp}rz{t{y{z~|{vyto|v}utq{}lrnuzx~zvzuputuvqwizwzx~rtv}nq|wuvx~tx~}zy{s~t|uw}zt~|vrwzs}zpoy{o}{nmhcfl|fwuy}rri{mve}yfvu|xye}yf~pp~~yx{vxvi}|h~{ixl}j{~jvktu{x}y|~{zxt}lqvzyz}n~}gjrwrxy~~r~gik~iqtkq{zo~zt[L~fO~ndnv}jzyql{}|jo|n~zuyl{zml}vo}urt|p{zehwvz|y~r}xzq|ywzys~}tz|zt}npvsww|w}vt}ypjmu{u}qy{~|||g{k}l}{wq}wt|tktr||~x~tukrfmc{zfho~pzypzmuxufpqpxiuxwbxdtssy}y{lwhyk~usuvvx~}p}p{pz|xx{zs~~i{j{tuqhymvkqsss|s~yt{~ts{`rsitkwpswp}zm~r}|vw|rnvrus{pdllx~ztqa{k}z|~|~zlse{rwqtoxwlyusw}{t}sqorsn{uoh|vv}nhamk{s{w|t{q~o|msvh~tp{vxwxmys~x~tymtwxx~|xvxysx}|~x~z}ttl|}z}qr|ystyw}u{yzt|~pt~{ryoxynxq}~|}{|st|xwqnmyqzw|tp{v}d|}btrsty^ruipn{l{rxoz}s~rvnzrtx|w|~wuivtn{||{~wy~oiqvk|znwxtu{~wyn}|fqkz|ysx}qyp{sz|~wyrmgrn{|w{xloetwzvux{upxq{uxu}~wq|nsss{~|ueqrk~|gznol{px~uurvykur}{{{v~mut|qm}}wetsvpzsuwtfrl}kxk{ynung{}x~pw|pa|k||}oxmpxocr}z~wytqpz~wpl}}sxj|ojhu}u}{jxhrppf}rzdrwswboxmxphrfqzuz}is||qmn}wmp{evxyerz~vqh}vfqxrjq{zqxruw[vnzfpfpitux|tqv|ynimgl}xkqsvZfkrovzybw{utmvzpyzrh~~i{ttve{ygymbYz}cm]x|`memy]]z~|mp^|`kpez~zutxpuyxhzy|}|}|ylyg~uzu`}tv`rm_hwvl_|v{]dmyn_ppsvdbxu`lmipgndttfotsg{uvty}yw}zyqp|wqmwz{_sykcfokal|sp^fadisykiknrx\nxqqqnp_vl}m|pyvx{zuosrtz||dkwjmdwf|htzdnnnmksvz]mgrqppxjhvxokr{}ywl}oxvunxoz~y~zwv|syzvxwyayeulrkylwt`mrqhtr|joqxm~ty~qvswstx~ujpwytm~|vv~t~uw|kyz~|axyhoxnsr{tptvy~hpzzsrnylrmro}vx~nxw~wu|v~ux{~}ytz}l|{{~vuv~v|vmwwwntvlwj{xerzfx~{{r{uzzpy{w}wz{kqu|}z||w|mwx{zssqvzypzszyvp[tvrsmvz{r}ywmvzohgb|ezpvUllsnwcum\vnyxo_L|puccIwbok~lzphgbwp\fRqnpve~u~mtdq{|oiWepmfuklfsy|}vzrnlrpvsejcesyxpdenjyzy|y~dn\frx|e_biywq~rwysynu{|qba_tw}k]jfmo~z{~kxktnrqt|mtVeZtvfjhv}xwuxw{~qrnk~}mm[hsxap`~j|n}prljcmanpr]m`lyxhxk{ej{u}nbjefxhg]h|zyxuz{xzzgrlt~wapYro~{yjupnwp|wy}mpujp{yyquwmqzyo|}ytty}puzbxewzcpk}|tz|u}on|pts}mowruzw}z}utsyqku}|xo}unywz{ssv||b|ssvu}w~yrxmpwryors}~qs~sxw}sl}{r}ltyn}znyrzqrkp}x{zpp}p{rszym{vmlxq{ysu{g|qt}nwwtx|zl~xz|j|tj|zpb|}}s~~|}yrp}{w~hvn|p|wjj{sux|nz|q|w~syn{|}~gdxu`qzo}yks}p}kyxxtv||vt~uxs}|outwkhVs`^NqbnewqiyYlQrwa~Yz[fvkgxt{vjx_[wsppu|prZ{d~sw}tt|rv|vlv}tmkbx`n}vbrizs|u|xiwzJ~O\\mqvlpoohr_ipWR{hpyuZhNwQVf\nbplonjsiy|n~fiytydwz~h|ad[SbJDOAv]rezkHj1t3izTzbyG~kZ~^ar@dSq:rhc^a[Av{|htxUph}pIWhGg}~|bnzkw]z~wxzbepwsiD_Xhumke_r_o_~x/l,oC|\ucdvYeu9q@kMr|m_}lizfxreXrnqqu}h_aK]WMraSCiR^uvtciW1CiJ`^tEtv{^Y~a|pNfpJvY~i]a*ZbX{qwdnpp8Ej5lFObmpW`t{h~lddroqStow@4\DeRyO\fsowyXkUn8pZWmSfsYmgb@zblSen[Smp]&g8N uG^roGoEpzQX=S]Iv{J^ku_zRRygb~~gk}we;sA=;c;2R__^iu_dbh0sOUEnzxZwU\pejyspjLgc\`ITawa+r1cp_iqfmJTb0~IRbtqaS{}jtJ~~y|xtggotSUXm0gmwIr}trYczpGvq]yEs^b[}v}CbJ[kxZvZXYYf5izcic|z|_]wrj`kh{uVzULGw]cuy[i|OwpX8\\GT{tZ^wo~r[tv[^guDqZOUrqK{ymfp[bnaFdk]Svuvs{[ps|gg|rgn}||~mitea^`y`|zy~u}\ivyengVk|xx|sQYyrfc|gY}ywx{zLoidSxRetzsVj`w~^{e|uUmviFggRYws]\meubs{}prs|osMl}}cju}huW{WYw|v{t|xvumlirusQwNP4dEX]p^JnmXwukEOvE^wakMqeWadgWso~iyKpSohyxxhxrUn}pqappZvm`yisalnLacWojmZahtt}Vsut}to}|o{|yyieby}ke~{pvw`n}\nm{vmouq\js{bf~dkje|UvZYbzen}v[_|zl}toyAUb[fyjuvGYtvf~Ux[}yfXy]ba}ewk\L_}ptaxhukr~i[S~sezNVoIqLusdwoeqPwLNgLvIqiaYik~`o`prhi|iK~Gkat{bsdTWwqf>m@}|SRv}XLyV|jizYViYwy}t{oxZvtRx^[{TeR{=uMsohV|zPyXbe]WIY[z`xwd{az[a^jp]ypo{tNOpjcwRs~d}mqyglvp~vrncbe}|avsL@}[|rjOyJ~fabjlld|Yw\mrr]e_ee`hznkpej[XaTlZ{rb`qSYvbP^nmu~|qwtksdysmxufdherl}S<}UNzSeqv\cuxvk~tih~}`~Qm\{pgq]p{ll~ps]tDie8H[oKp^vy\Ae4kTrwcyt|vvtf~y`Lt_O3^Q={;Kewbb[yIiIDVRriav\peqzy^`dI*vjTyBt~j>MwQK\grxnri{jhgknmGKEZ?g[s}p|IufyD~usnj^zw mTDp`b|{etzPOWS_ezI{yg2fCvVi|mb(Xo~mQ[t3U`\yk]tuPVGntbXfPx<_jj7-YT`iDlY(}rJg{k:Mkf~(jZnvZcPm][7^k*dF\Qxa=oORpWyj3ftk}a`nijSixuyd}{Xg~gtVpFvb@d|P|n{uR hu-M|{KpmOnxi}^K^csgsvtOWl{\dFYIzkllL}W;hfcvmlUWMaLtKMh\1wA@ggSA^`O|abqjoHbtaZl_UyRSvmn+5`doj9ifl>v{~VsLd\qAzQOinLh~jfQq`xrMAb?db5Yz~L8xaT{DjZ-xF~*@vknt`sals|}~q{~vxj`q{iN|{xekf]hbvV6zw-;~fXvW{)ȅE_Xcs~F5d9T|vPwf\8sgvN7cL]~>h\KYtb|eoh,C`wsVW}VlFuQRGzEMF"JRj|~l|QofnX|be]]IRI9+Vjh_gspBntnM%ā@ P<:vWc\R|^~>_| ^bGo{Pfk;x~xik_Jeu>(cD}916Btxcykd&!jGwXQD8~emR^x[kvShZ@I^&`euOklBYE*9\y2OYo^~h]Myth0nhnWijv}xfbtiY`uoOi^fOjhZ^h\i*t"6M.\eO/Sq|lhWul[S]Dt~l}0hhrWu|zsdgj_LF)E@Qo2WU}P4[b$aq:t[nL`d~pci{S_yv|9lRMOOtj=h}dJLU}dkyeJ628jshlz^*f}yXDBAqbKSp|cTjsjehZRzdKd=]DE~Z)LmwxV/'P_.@bnQL8DPZikjQF;HS[+V`fdruz{ngu}Pi}bJGW(J_W{~UF?Ī?Zdg8~xC-wo\w`xnv-c0ewz]~~yyZRao\p}t~|AktbPyl#{\X6Pu?ltdv2^|Goka[C^imvyklcfn`P~eWawScXo~6g}NǂCwzq([t-\vok}nkXf^~{~zv[yV9Nix~zgNoon]M|p`bNs;}jtMZYux~iQ\p\yQ|_c}|ba~\t_D~G]{pk;MpQCpldt~ri7sq[r[kex]h{TiT>_R{]tX:x#[z{UT{ne{Lb_qnrcnPChl^rr^zYiKzLS}xomilPz\xh[cVWWt7|h`~gkrku^^XxRiygl)rtWrfy{]rLyx`YnCNyWKrR~Tyzlxr]jvsTlsbZ{pnwG~](ip{rw0zjxQ{`xQKv~frc^}fu[o~r}ndooLBz_~s^}bTuJ[{=NRL~}qfy\~`rLs{urjmmjvbkzeVvh}\rlAwsX[exPTibplL~Yigrpsjgim{]vpgoDmmfwxiRRpxS.}hwvg`geS~t`uayoyh{~wnn]{|_imgSxWvegr~T|tkm^Y}h84C9fm\~k^jwa}ofw}lBtsSa|v|jgvhieFqnga]pkt}YC|L_zopTuk^dY~snPQGe}wbxZsdQvwifsP`k\djgmvRgMew_~yyp|j`qtoznyvsp}kjuWmq\KBsiZuDO(bcjxYkv}slhkWj[g{zdy^xnhzLVs`[}yaRwUcny`zrbotq}Xv{zwWus_W|J\wprfqrdnTMzev`htkwhos]zLk{jkm^nxx|mfUgqnTobwjiQwdt{Jtfrruvl]apwg[cqk{gu{YlrpjW~u\b!jQuo_z|ptj|rpsejXvQde`cnd_pOyzYavugb|qmpyo}Wtxy\gcu_c{^iqns|[hpLvttPorhkLsvYbMlOej~b^i~v`htvxw{v{{tf{t\{u~Q|lb;]D|mo}XPkoul}udxfgV~x{wqkkkr^df_bslypz}b~r{Nl{n`x`?s[>uePp{ewi`e`sv\vPuj}u~tg~ouxvqwu~gwzj|oun~jcjr|TAuShP:[Yksdgv{vn~k{xu}htgxngugvmptqroykwLkmdr^yhRdpQt}eYsM\pwajvMl{ddyYlo}kl}fv\|X~qrjyu{d_zn_o}y_dws|sauxx}hSSQaLsnYvjv_x}{znvs_Z|jXoy]mk{mvrknsnwyUy^yg|`T`}sglnuUspYasesXUSZ}t{fzpdwnygbsnagsws|kyfhp}nsjtktxp~iwco~xov_GcrW{d}VPq}jrxwqyp~o{nnvzmsiflpshpnclkuZpszyYZV[}w}j|ho_o}^jq\he[pssqolya^}xtgucsksxhrhXmisi|who|syv|dmgusl^lpxpYs|v\T^dxk}hxh|izsvzz]xs~[wiy~itkxi~[b_Wiwgmwv|{qjrVg~urpxxvsaY{ljenf`{muxXbkRw~y}{wzr{z{swrrqzmzt}ocliy}tZZ|ru]=[Zdkn]ujvkh~{sxtmuuov{eyc}ubonynU~`vzpQdri\ufxt}rm}piww||tu|owd|rYdvhr|e`hTdirxqa~]zfr}_qpvgqvkgzy{r~drtubjvrXdsXOsw}W}Qv]upwt{akr{_xp|rcpu~vlz~vw~sx^Uwhkxnf`{z_`tr}{j{t|mwql|wepqfUv}Z[s`bo{{w~kmlrjQp{kT}|kS`_Y~o_zizomi|trqtLVyqfkxksl`t[hsv|{m|r~hylxzdu{qwtpuuzzo~ptj\loy`In|W\_r~pgm{~w|}qrnwtjnry{hokXvmiljyKK`U~tb_owwmzsv|riscs_f{Zytngmniryqngstebum|jh{vxyx~|ypoh_{mjkbpfam|kqmg{zeciwl}ay`n]itkvq}yiw|jkio|o`Wxk[o}qWbedquaycuhn{kq~poqz}{xrshz]giYzqdk~zdclzjho}q}ni^r}gutzbzqPZu~Whv|{W~ouvjktqscoayW`rxipir|c^~uhcxsg[kzsovjiw|hw~w}so^j|jnx}sq|rx~vomreiRZzw{^f`dYyj{nyYixt\^ntle|mzgyonkryxw_]zmRf~c}bpg|dj`~ta~zs{zt{squwv{tsx}wmzilkhovk}qswtNa~\Wm|znwxhr}frxrqmr}qd~lz}_bc\\rvf{j~wWtl~~keucj]v{hybe}tm}suap]cuudlwors|zqfiu~z{uux~|py}sp~{o{ssuxqoqtgWvi\d}umnnqzzbcqx}ius|dhyv}^cy}ohpgwwomrvq|s\m{Xbr|^]y~{prwvuusxirwl_xmeqqjl}fdxvp|on{{kwswtgwv~}k~n{zyrkcwu~gmkyyzmydw{w[]`Qtri{[ookjpvwipvz~|ssufSl]Zxrpts|tizkvhT~w}|p|}{zxyoo}}stxumome}rszsh~rjZq~dxl{srutpfrsg{o~i|~}ijzzV_kxc{yzu]xpeXqaauqfrv~wbjwwwwx|oyrn{zrj_vj`~i^ke~n|w~wk}xl~}{|y{{xxzej}l`j}i{sycsvw|fxe~vXcwlpk{ytrwylruanqtmiovjo|cfxbqmrvmqzr|ppt}}}vgzvir{yzpjn_e^}kzi`bxMszbt{tbpzs~qfmwrzwvuxnu|d{nn}uku{qb}kuk{[~hpsvw{o`q{tiyl~onnzo^jfwwjtc}aomttcmuuksnuw|}fzqw~x{|wwhz|w|whzkql|qd~vxQk{gsskhpq_[ywrynyygvzofiipuk|grxfs~hkwvk~xv]p{ntory|e|~|{fu{|||p~yjyh`tnlg|s~wgr}ptoxxz{two}or~vou|w{qsy|~~jvl{h~kh[vmfxs{{quxVwlxzrnx~h}vm{u|pi}ogxxo|vhyit|la|nry~zyu~lsurrg~}itq}unvjn~xsq{so|{|jhr{m~xpyp~||l{qvomvzlut|swzfret}v{pt}mt~|spp}x|tuwuxwk{}inopu~~hruhwyosqpy~}~xmsvustx{trnrp~pwzpvskyuu~ezuzoevtl~wj~wz~|vywzqv|z{r}_m}vvy|ts}xzzzzxvst{w~rn~vxyzwwszzhyzsswpi}ht{xm}~mo}l}ut_}{q}utzt{xtr}m|w{yryouhoqzrngzsju{u~q~xz|~{lxhk|uzsvr|t~e}~w~ntvuy}x{|xvvww{v~uiu{wz~wspnkcvstx{xs|}}|o{t}||smt{rovj~{vxth^xqmzwo~{ow~v~Wuz{p}rp{wudiqwtbzk~wz~x}qr|vvu|qxxq|zty{|zhxx|uu|Z{p~kxw}||twquq}xpuou\z|v`ncuxhxxqrszy~xsw|iiqwyzlzrtt}votlz~zvyty|ot|yksybekv{s{ow~crxuzl^~}uqsxzcoyhn^{tYpkytZYhd~v}ogzi{s{Z}gumwr{tvov{hYt}bwwursb{fi\y~vsif~pyy}x|tvukstxclp{uxswwm{{~|q~OgZgtn{uv|~_rx{sc_|j~ttx~pjriqvorhz~qlvno~w~wxjndxslynnuu}mq}lfynp}w{uup}qX[{kv~{}_k~zp[}ba}kajt|}rmp_fpnr}w{w||~nyljrwrsxqtm~~v{|{{l}h{sxZ~lkzuytwexngoewszv|u{l|wl|gwii{_rt{cluehdr{{z{kjvn|wqypxny}}qjxpcw|iqsz}uzupv{vvhfuuh{ryvzjovouvk{jtwt~paxek``v}loidnrmys{xyxwmt{u~ev{p|muxjlypv}xy{pz}~tux{sn{zzy~xxsu}u}oznpsxx~|zzn}g{aU}rwr~ras{qklus{sssnlnpqmZ~|rs|yovtl~as}|xhpa}x~{z}~rx{yeq|wu{{}pczwyoo{uklw}pivmn`{qtvxt}t{pwtvurqVw~n{mrwtn|su|r{{{q{wp~uuuzfqwzttzyqx|~~q~rzvrr}xsbptq}r{p}q^oztvrnx{}wtz{xucd{mrxq{wvoy|pmnuxrjzrruz{vkqvjqt~{~w~x}~yesp`yty~wpuq|wxrkrr}u~h|x{uf~qmstqm|||xmuyvzhm{|}{itsqckyzor~{~|_}}znu}{v~tgsv}yqjttwcy}x|v~s|qs_mv}is~~x|wu}ylonhqo}}v|{q~oyil~vsiz~uy{{t|ps{{}uuyyz~|dpr|qhy~}}rxzn|~pv|sk~z{~mxwnzqxu~szjnsclxwrqzcsybjmwy|w{rknxzx|yxz~uwqt~{~zq~rwznvzzs{~o|~~|syrv{p}||x}|zl}vjvn~{y~w|wmwsmsk{mouzvmq}ryxsty}u|zvz}suztv{xv}~w||~tp{qk}xi}stww}v{uwt}~|vmzs~u~|squwzkt{{bly~~mo~n||}zor|jxt{zxruxq~vq{}||u|{m}|~}s~o}p}|ypvpu}|~}uw{oyu~ww|~{txxn~j{sp|tqr|zvueeps{t}xns{x}{h~}{|~v|vx^zuvw}uu|uz~~t~ytznz}{qs}xxx~{wymh{v~}uoxyvop~~yjzyw~k}}j}qtw{|rp|z~vovz{zrw|z~zynvzt}zwyr}{sxrxwz~zx{xxyxtyqqs}z||u~llqqy|}q~}r~rsyj|x{ntz~yux~wytor~yzvv{}w~w{}w}u|{~kn{{yw|yo|z}vrz{x~}~wxyttswxy{ih|n{xmzjp|m}z|q|nuz|~u{}wzqp{zy]nwpqwtmonrxptlkjwqmziq{rm|~~|}wm|qpzuylkwsg{kv}mrwwc|vwxjzzm{x}~tovvxtyuw|zewx{w|}z~zwxt{}~zuwv{w|vntrxwz~|{~sxu|xxrz|y~|xkruvuwz}{z~w~}~~y{{zup~zuv~}x~rts}|rwxzrq|xxsw|{z|~vy~zwt||}ronsyyw|~yt{~ztzx~vt}{~vvzq{ysvvyrxs{vy}~{wv{ql|s~|y}z~~~z~|w{zy~~{w}u|}|}pyywv|x{yy{z~yvz}xp|n{~rqwi|ipxz~{}{~su}w~|w}sw}z~tx{yx|u~xt}|tyy|~}z~~zy|}y|w{ww{}}~~}yxsy~x{y|oxvy}}y}kr{ywt}z}|}xq|}~|{|wy|}uqx~rrv}|~xu}yyx|~w{t|{|}zxy{|svuvzq|y{z}{{|uu}z}w~zrs}~|q|r|qxx|tz}y~}y|~yt||yzp~{~|x{z~w{yvyy{yzsy}n{~~v}sz~r}u|wuzzxwtu}}~wu~u}{~q{yow~{v}x~v~qq}~z||zx}zvy|y~zy||z~~y|}y|u|z{ztvx~zyw|z}~}{~{y|~xys~xvvx|x|ww~z|~stt|y~t~}yz~}}zxx{w}z~w}yz~xzty~}}vvzz}tyv|x~zyt{|rtyzrz|xuwzy{~~r}{~{zy}x~|}}|w~}x{|ww}~|~{x|}~|{|wyvu~~x~v{}}~{|}uy|x{{}|{t|~p}yz~z}vun}xuqz{~z}{z}yw{z}y~y|x{{|}~}{|}z{}}uxz|z{{yqp|xuztu{~rw}u}~}x{|t~~wy|~}z~{zzy~|v|~|}~{}u|z{p}{}z|{~~~|y}wtxyy{~zyy|w}v|rx{~t~wsv~{}s~vx~pwrxv{|wz{~~q~uwy|x{zz|vz|}||y~t{}~y}yv{|zu}~twry}}{|z|u}v{yw|wxsx|}{xu~}y{||~{|x}{uvz~tw~twz|~{{sw}|~~{{wtxs|txy~z}~yssrztzww~w~}yz}|u}~|vu~zwvoy~v}yx{||y{xyz}|v~z||vwswyw}ww~x|zw{wz{y{uzwv}q}{wwvt|qwyu}}{zz~{y~xxz~~~~~{z{|{}{~yyw|zz|yyy|~{|{z|}|yu~wxwx}||{~|xwvwwy}sv~z}|xxv}wy|s|zy{~{~y~|w~zx~z}||}~~{xw}{|z|~z|~z}z{zv~~x}zvzvxx}x~}}}zxyuvw}z}|}|~}}y}y|}|yz|{z}x}w{zwx~{}y|wuzzz}y|{}{{yy~y~{}v|z{}|}~{y~}~~}}~}|~y}v~|~}|wx}{}~{|~{zxyxzzy|}u}~}x~|}~}xyzuz~}~~{~}~z}|}~~zz||y{z~|z|{~x{{{|}|zut}u|w}z~}|~zz}zw|{}~}}|y}~{~}|~~yrz~xz~}wyv~wz{}|~~y{wt~zyw~wz~}|r{{{z}sw~xzyy{~}x~y~}}xxv{~x{uww~~|~y~v||sxxv{|yy}y}~}|v|~}s{xux|{{y||~|}}z|||~x|}z}{~~}}zx~}}}}~|y}{|y|}zv{|~|}|z{{w|z}|yv||u{~|~{x{yz~y~}zzwzyz|~|}~y}|{xwzy{|}y~{~~}z}~v}z{|~~}}zy}~~~}||~{{}y{z~{~{y~|~||~}|y||vzy~{{~{~}|z}~|x~{~|~{~{}{{|}{~~~~~|~}xzx~}}~~|v|z{}~~~~~|x~|v}~{}~}~{|~y~~~yz|}zz|}y~~{|}~}~|}}|z|}y}{}}~~~y}~|{z|{}{y~y{~|~|||}{y||||{||}z|{|}|~~|~}|}}|{|{~~}{|~y|||~~zz}{{~~~~~}v|z~|~{y~~z}|}}{}~|x~}}}~z{z~}~||z{|w}}|~}~w{z{~{{~|~~~~}{{|z}}yy~yy~|y}~{~|~~~{z{}~}}|~}y~|zy|}~~~z{{z~}~{~||~|}~|{}|}~~~{|~~{~|~}~~~~||}~~z}{z}||}~}~~yy}}}~~|~}~}|}~}{}~{||~|}~{~}}~|~}}}~}}|}{~|~|~}~}}|z~}~~{||}}~|~~}}}~~~{|~|~}|}|~~{{~~|~~~{~|~~}y~~}|~~~~~}~~~}}~||~}|~~~~|}~}~}||~~}~|~~~~}~~~~|~}~|{}~}}~~~~|}~}~{|{~}|~}~~|~}|}|~~~|}~~}}}{}}~}}}~|~}~~~~}}~}~}~|}~|~~}|~~||~~{}}~~|}~~~~}~}~}~|~~}}~}{}~~~~}~}}~}~~~~~~~~~~~~|~~}}|}~~|~~~~~~~}~}~}~~~}~~~}}}~~|~~}~~~~~~~~~}~~~~}~}~~~~~}~|~~~~~}~~}~~~~~~~~~~~~~~~~~~~~}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   ( 5() IT 0 )g5lq    7 .  c!  ! R[r2 X  $4  b$yM%@əzO; b$;\¥_9ZL b$-Uяx6x:*Wb$:lTvڃ/'Qf{b$a$WeWT}MInb$-uB QPEb$KsIADt b$`T ߨIFdFh-b$AjO%䧇G0J%b$\JPJŶ;b$AݎO5c30$b$1;g7px .h"$*Tӯ1X# +Cb$#t uN|b$:Cin^\lc7b$B+ {?|;c 0AA 5f3ffA'"@"8\h/ ʚ;k8ʚ;g4IdIdB 0(ppp@ <4dddd0pC 0l`- g4#d#dB 0Bp@ pp80___PPT10 ?<, (Sebastian BurckhardtO  =(VBounded Model Checking of Concurrent Data Types on Relaxed Memory Models: A Case StudyWWSebastian Burckhardt Rajeev Alur Milo M. K. Martin Department of Computer and Information Science University of Pennsylvania CAV 2006, Seattle3]The General ProblemThe Specific Problem Case Study: Two-Lock Queue& ;Algorithm published by M. Michael and M. Scott [PODC 1996]<< pclient program observes ordering of operation calls within each thread argument and return values of the operation code is correct if and only if all executions are observationally equivalent to some serial execution (def. serial: interleaved at operation boundaries only) We assume serial executions are correct (can be verified by convential sequential methods)`A'"FR &Finer Interleavings = More Executions kserial executions threads interleave the operations (operations are atomic) (operations are in-order) sequentially consistent executions threads interleave the instructions (instructions are atomic) (instructions are in-order) relaxed executions hardware makes performance-motivated compromises (stores may be non-atomic) (loads/stores may be out-of-order)LG_%U"]q# Case Study: Relaxed Memory Models&$  Which Memory Model?Memory models are platform dependent We use a conservative approximation  Relaxed to capture common effects Once code is correct for  Relaxed , it is correct for all models See paper for formal spec of  Relaxed ,I Halftime OverviewGeneral motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Our Verification Method How To Bound ExecutionsVerify individual  symbolic tests finite number of operations nondeterministic instruction order nondeterministic input values Example (this is the smallest one in our test suite) User creates suite of tests of increasing size H#]g#]hWhy symbolic test programs? Implementation codePwe hand-translated Michael & Scott s code (above) into a low-level representation that uses explicit loads, stores we added code for dynamic memory allocation and locks" Commit points designate where the operation commits logically given order of commit points, we can construct serial witness execution eliminates the in  executions equivalent serial execution 00X  Counterexample TraceEncodingTGiven symbolic test T(A, B) memory model Y implementation code & commit point specifications Encoding First step: encode concurrent executions of T on Y as solutions to CNF formula FY(A, B, X) (aux vars X) Second step: encode counterexamples as solutions to FY(A, B, X) . FAtomic(A , B , X ) . (A = A ) . (commit point orders match) . ((B g B ) - (some operations commit out of order)) nY CA'"5  "A'"55 ="5"5" -fLs6 Encoding Detail: Obtain Symbolic Instruction Stream74  Encoding Detail: Memory Order %Encoding Detail: The combined formula (So what did we learn in the case study? General motivation Case study parameters Two-lock queue implementation Correctness criterion Relaxed memory models Our verification method Symbolic tests SAT encoding Results Bugs found Evaluation & Conclusion)J #)J #  Results: 5 code problems found&  Results: Scalability Graph shows tests in our suite (unsatisfiable instances only) y-axis : runtime in seconds x-axis : # accesses (loads/stores) in test Fast on small tests, slow on long tests Not sensitive to # threads All 5 problems were found on smallest 2 tests... all under 1 sec t>G>GE2  Conclusionquickly finds subtle bugs supports relaxed memory models counterexample traces catches broad range of bugs (not limited to deadlocks or data races) is more automatic than deductive methods  " not truly scalable (though scalable enough to be useful) not fully automatic does not solve full problem (bounded instances, commit points) Ordering/Atomicity RelaxationsThe following 2 examples illustrate the main effects (1. ordering relaxation / 2. atomicity relaxation) Where necessary, a programmer can prevent these effects by inserting fence instructions  What code? Data type implementations optimized for concurrent execution (Concurrency libraries) What machines? Common shared-memory multiprocessors (e.g. PPC, Sparc, Alpha) What bugs? Bugs caused by concurrency (We assume code runs fine if single-threaded) | ffVff? ffJ_! Encoding Concurrent Executions"" /       ZK0   #(  x  c $]M 00   r  S 4^   8   q P P  0aA'   .0TB  c $DA'` ` /  0cA'C"? @  thread 1 enqueue(A) R0 A' A' A'"A' <  0jA'C"?` q 8thread 2 dequeue() ! B `0 A' A' A'A'A'r # 6r ?5"0H  0޽h ? 3ff~___PPT10i.G+D=' = @B +  ZK0  z   (   r   S M 0}   X   0A ? X   0A?8 \ r   s *C"? P r   s *C"? @XB   0D"jJi     0DIR C Qcommunication formula 0"XB  @ 0D"jJ    <|v  Rmemory order variables 0"XB   0D"jJ   <_P H input values 0 "   <  I output values 0"   <   Ointermediate values 0"XB   0D"jJ@ XB  @ 0D"jJ    0I C Qthread-local formulas 0"XB   0D"jJ  H   0޽h ? 3ff~___PPT10i.R-+D=' = @B +rqxeX|