Progetto P4-Distibutore-ver2SLD8PPT3| -mBINޭࡱ> Femibold 'j  DTahomaille Semibold 'j 0DAvantGarde Bk BTold 'j c  . @n?" dd@  @@`` D<T[ r [F   ,b$ئ|2o@ 0e0e     A@ A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||c"$`@u ( / 00DTimesarde Bk BTop 'jp DBaskerville Semiboldp 'jp  DTahomaille Semiboldp 'jp 0DAvantGarde Bk BToldp 'jp c  . @n?" dd@ngئ|2PNG  IHDR~ IgAMAsBIT3 IDATx\M$ɑ}V !P LvEe/fotҽ0raA FȬF͞ǯ~G\E5 g.ryk_~| ϚNV?:?ۧrMrMF*2$ǟt9կ|Y+_Y. .博fw?a|?~/I%I'0]g.h6 IHcN: Q`t( R#jH}tDq/+*ŬV 9V.OIEInn$$q^wu?BDB}\A w_ܖ2J1s-/Q08IVRnH0 |Ь Ћv5VE颓ݦ=$n 'Ӡn]-Q~m:l'?5N̝Le-%zTʘ  ,4 D@ R?"$!EiR0JP)6M" (O >oCkP&)Q POAAUYs;&96yOg;F_~7L"MOw4RpzS;Tdp5Yi݉@"X Siq 4QFX*$#dS[{.G M!:(Y͜ٿ|@*$$P?LY=WK""e㝆<7]6̓(J8omezlJr.-Gq7y=~oo_~7Kn{E<= :2 fEI$sh3w0wd($\s(0bCDqFDQDI 4 Bns[9ϨV N(At24irE)GE_dP4:# qx?04noPnS Y*m+6+0)) S39PR$$>7Cb 5PTCT̄#'D2~RF2cKA:jXp#M#"L1X;Y~دtPT67߼{{#[4{ݍxipqIvNq%7٦,Js ȁ{Ȏ2@ |謜`ȍaf*]ԖÜ%$G SX;JlMŠBs|xH2cÇxR*,o0xx+&Fa鲄ᄏ)/oIod2.&?(e:hȤrKp2AJ*@$.?-3.m:&aX;R&ԝ/$kZh"S@gm>6) Aôsvc;CkG#%sEle3r4Ԥ0 )!<"ɫqė%1زʟNˈ96l=r%>RٰMuw cnϋ?K5Ifš_OH%(}bH'E*ĺ KS}Iqe@r:8= q?a fig)?Jڽ|i{U_AyQ@WO|.olެʖ;{; cj@8/szIYJ]ϹL"o(dX|TzQ'B5YĜ9GY Ontī^f[WV?.odOk1ѕ Jr#ɪ']&/Bd=odd0W>U۰^ Jc70}U,^IR1b9; E@ :,9JTJuv40[H,*U̚O_rH%Qic C8Oz欗8R*P9\hv..`XFR>ŁlqsbQxQ'tg$i/BPkN+~,!GTN?Yiv/T F Hg ݹ =#Y>wy/WkWc=7uHJlnm'iF $19?L,jX-=ZM=iGr˱̲fS4lIx+*P6n1zj|WLEI(:Dx9 W1|Cz"id%XO4hbiJ8V}l)$e4¹{_g @ \4;gƀp.Yӻm64[eG];*> iag%aS_X{jB x5umA-ToCا8eW :7$C No#pirL2ND7T3LwZK IG\包?o急>(&&jM=OG>|lv8%"B)q)"GT@h]̪67jQ@d *OOtq5!:hRS| miMc ܐzI}V97/~egV4MeC.ܙkjVԚC}kxTSs_S [O"PuWJG0~(xb6&m))b2B!I yjmEkHZ"U Ό"=5c 7(Lt |B{iս=.ȉNLJo ;gnޫcՒ jAco+Csck<2+jf!3ximm TFZ/ yJ:sAbufFK_*їŏBYu$E<r0Fdvr*6I 3EZ2yG˗3K6m~R^OHν{g̘>j!?cJ`aj mp'WrWR0S z$ 6UKV[e 0YK@xt@g6٘ٶVlBTfVo@=Z#TBxޖVa_I4t:{Y4fi !i0%7cOV0 >pJ%4uiLTԇa{j1&(dOH/c)DžXk Ɋ;Yf!۶Rk Jo=O)N7k>3\ҽ-<:&^h=nzi }&iM|<};>{.mEQuM#rU"zF@ѓڪ}"x%$*ѽ 1Ժ>ݗӂU[[,}-Fn=ITLV3ޥ0Yރ۽;% Y0:D$B԰672 Lj߽Mq$k5=q~dgRhCCPru&0ĒINU]qCs) C=0ooU"ԟ63w] X{,m=ca10QL, Z3r@~S/ ccO't<ΥMO~Li˜šz y\qAGU 6G^-,bw f`(%=쌯Fahnd6&.߿\f>tQ;>}&j8]еFP,,(Ѐ\\h֯ 28V{xʹӛ^[\ Crm7;rǀTȂ$js=7čF:iOr!'Јw!r;|Q{ '_[ݤ兩 {f2 E#mdW~.k4I߽R/Ut\hxCM]_VkLk[`'f3ŸhH& aM0n&Lfm8<ɤc@g\l|!Osn#l|l"QMAERem=v+ gj$mS4ieXUm5i]۲_Kȋ 6d`{t"tb)p9tZkzֺR7iT/'aou}]j+1QD$)|[8$i]"}Y ڐؾ6m%O%`܉ Yk> XͬMk JwuJi̠Z7WAi3iO]Hp=&^riU?H't^_4ӅMmk|nWBBN|++oCkuQU͚Klp'vxt4Q.L`HӲ @uLt{;qm. Cc2N߷s!ui >9ߏ|e V8-k!Cm>ZĘ꿭?7qc=i- k#]CP2cjOi0tGj4::}i؁&aNKԙ6zEמ I7ַI%>X*wZQE/K~\f%kBfq̐|`a0;Ƅ6IIR<3>eC'v&Ui\ { O -Qu,d0|Կe!\q)K; %};\4{Ywφ_p F.AW'ɃMF ѝlFH*g>"sБ'-?U[6䦩-0oLg(޺=pnC}|Фd /7vu$VI #$'3wր Lڟ˅gfq/e '_ڳwLg 赶h3&p1з@U%@ 17\n$'._S|9k[kBۀ흢|E 6nW n ڴ},ZS0BaJq9G6ϴOkͱYv\u"+X܎dv 0Y K)^fY'@%ATz \瓱 ѽ 逛b{@lp.-xȯ="z2 3乜guQ}mU#K)j($lpOfi̽ͬwl@->ɂ3^Jp8i > *I;'(R|/ZUkumُhH"E;ę8{1Dd Ɓ:ώνdP:@Dlx7Oj/Nf}B`m/ӵݏ1gQ1AE"C7mh۫ C,'Ǥ~*_Io:Vp?_,'$wP0>п n^՗ٞ6`r Z}[wiVZk@ꪒ ۫HH[jg::F'KԄxLRyww3`}Im}y̼tNwN(&P]]- yf|}i 蘭ipLBl(` o2%\q͞qO1vEca!$-&ڇ8uQ8Px;hkoF/Vs2NgCBoR@2tQmva\*氓n_w֌S8 IDATcmZ$Il#WL!Ҡ &E7 ަcx-=t6TD\p9ಘQ3쬏*+2LUʽs.AD2^ZKBٮT_:RuVV…LTU?9أ&8ʺI=vِ䑌"q`R,ӮwC$ȄbD질R 2Nޑ@Ϯ@2A!(k]P.['W8Dv:XM}*EXPϐګT`>Eo5'`H)5%*BjʣUNt2Z|# F"']O-q4;5 frI_屌7I9M-^}+3&SC!rCY>)ћ5gZ(.8=X}#oEOcJ8}Fa=D$ RomuwyA&H<zb(U;[L 3.߁Q#>_.3m=jh=NTwc&2eN+dPѣg3KZWЭPAs^I>mz㷤_~׆$UeTI>wVP{%bؔyAۡ..d2rɌeBd$'zFG95ھmw7 ۑJJR,iV? |7rn:}jjF[2^r r_h$3eXL ^c$^- Y-CW7&#kuzsիKx]rYr`Brosgub0\kXݼbLC4/q#}n8[Ox7R^Iy/t&ZkHt>nO pauy.[0%yĦ\,XfU{[O?=?-%U%yz.ZK)\R?=k}Xc\i\TZ.tW̸o~fЎU~|>m|9eA2/9>7MFD pL~ټb:[ʊ{G2,\n-;y8j<۝7O9ufɈ 99Mu1dk`N^T:>2Zx6 ϧ5< 4 r ~z UNMaN!:K zkA@5WNBGviV Ea և\V ifa(xҋ³EC*'j!q|[ TT;Kwß~_o,@d*s}vW;[Bҟj7qcP,j {cEQ^˃NEqGs2l+$ffRFjzQ/"}lDDRWERDkxԕtZ#s @Br>_ =3: ]XqPf3JKK5&wO gN=ɇr.)ǵXYOxS.[TNyɈ2A.щʠ,ŵ;Q{eWN9JD0vWueW09'Z!`wHH$eMQLЫWXKa RlAp{fq \v>nuRCj92sl  |& \˜Wg:\h#z=(e|~:<٨=V;G]fz:l{EGSӋ$UMk 9 ۶'b%?U^)q`Х7 $k (j{ ${CBkrw]R-2hP%59$݊4+nд^FBf')ʄ1sA|0ڛP@#ym7&".^Ʌ ee1Ar]֚ro#!y}qwS4f :pF}6zЦ)m;2kK6b|~zZS.~8IMiw`6Y3'`&p3cHH Ipu ˧vI+2ZB^dC!5ԦPT` T MU<==]>nMoζd3+¥u{~OuPk\ 2QdCm2}7CKeD`}XÌ%pl"{X!`oHY^">y 1{”KjZ:GP !;…ᖱ[nPT!c 8WSxBN}X/(_Iۼu[ em殛7QQTw[bV]C&S !9QN%:/x4 Ř[zOvx:bqK`ez(rB>WIzdTS}ުWr^̬@%yJ@ix+oam>%FA?^;Ё^_~?~~M-bK} eF5 & 7يW&';֢2, HAM3xH+ea TF|XD7Ɓ6LT/]Xٞ7\-{%+I<- F*pSb$BB ifwkYö}|*]1  ҉yK_tizw$Paz)E2s8}~A~p#1>$W^}6;$-QPITu{V,ߝ߿_<贈/C0LdBz񬮐@ @wr)1A$JR}&nqs<,8dMeO|1!9kn_;ӗ(VUméZ6Z֤-<RjN+jŒy e:Q$?Q~OZ+ۘ50띑{FҗY,yjԴ>뻒Ix+.) '`0~lr7tÒʽg7sd 'b*k`M@z|̉Fzj2+ԮP5g7Of ı >ӻ2Lg3"cF";Ǣ.ԙmi`A|#2(|"{u=Ld[ }80߳@&@omnlr&#q֌7:@݅cFw0m6៘Vݟ>章єGL~wJ-H{Z1[U-9Wʎ  | mAH^:,6x#˟'ojc|iV} #jZ!1 KOƣ={ qOQp+"> qLJ+9e;И@T^#aga0PNB[-7SGl6-<@ջTw|6sKԽC֓ ]X3D̈1i*ļ,̄-29}?~5L#!ߞ$ {@KAOL3XcjF1}IH0ٶFXsĆcT<-Vn8jI R"7Q{^iC_Xn~[/kw91K&H * {Hm PY<؞-L]j]w~|v4F__~+D\5mَp&dȬڋ{m{Up![ 졈YrE(łfvFY$[ W0{.|͝qzViHZa&Уq>/o-;+Zz[3pV}Mŧ)^}{؇\|vx^mkhކM請hctECF&Crm1 ա+C}U|  VWp_}_}1e j WIsjfGK8^"DvD&E8D3jK-\!3ɰTr*2x~$0pFp }F)\/Ll^ H!A̹0Ad$3XߣWn{\)œ(ms_ $W_B0)͙ D UnFW(Eև 1U}ħJ}Bg S"2 Ss.ՉFrv(GKA t;$#;TOՅgL}g74N%S}Jb t fi-HR%lEiJ\]Aj\`7Uݭ1s*iet^؂bŀ&#B,v*㸉4`h0r46nҨ}?Tbmę1,u@]i]pNܼFt84Y%e{.^C\FHzz(K)9szsoB hNB}v"[)HU#ȰeYG.nM!|j7V2 #edeQ޲CO]pt}6| tT6͟~;vkREX4Hs$m7j[Zs]D뺮novKm@6Ƙ2/dcT', Y:zR%S>+\鍍UQ]eS3Mm|kFŬ0'~T8$SΠS]7&U^1).@0RgfE:8EAu-U^><]?y~keZ˒^][V"0H2qz\C SW^TT ိPW}z.u=5VȢ DLeKԼRWa) 3ZuOuyn.A^9LljWmލ =btV}O$zL3UىBQ]M-l̐_U$5ELrN SAWGLG3m)4빂38 ±  k';T%v)& CND\iowWmFW 4251eh,;(K:&At$s>-$O\xN^ۍldC6X@!8O TS< sDoضK)bKpIy)?Ōߣ+/

=)TU(dQ#LD6 [l!:lBrj0ۣ׫|qYu*Avtgֱnwc9`Og`v~;$nL;wf2d$n-F%.z/y>l ..'^ZNm_?.>:{CWD. Pi3"wmώ])V`3~Ը H)GD#@R-3b"r+;})1e&v*1~ aqs-O{3Ⱥ @c{{3}x@|K9N Yt"!LF%13\4aʽV$c2`mc&rTkk)@DF}E]i}L$-$b_o0b &\,> =ZyeF`Td2>Xo(IcW\4x@[1X갔piWGVWyWe+hy xUӳ`}(W)P<ӹcUJf`4'mg+h{YSTa4 Wc<LR/uj{eϼC!=1$Lr)냭ŀnȡ|I@Q(n~+7'9NIa}m=W@fv#؉=~]`%FTw&y BL4rƷ'^#NRМ/ϗS}SKOK׷R kt ̉[!9lk%'j)wЮM;…7#tF+88S۫P__}@pGC0Yh "ri#+ A0L'{|$tO^|icF_?RJb~08dS3^ 'kA"Uwx[߭HB;.ec?KnRi!((,+ dӪR#15bf@\H4Z H Px כ mmH"OCnjDYh;0<{# ot(HV#EeK$zji&(ot~RP̊K]$l1dX!uJ1܇4QH`}|܁@@B)%jbG~yފEwɟݓf :ƔTZl1%R:d\'1O9;s߷eU&QjK$sYXa$Hd9lE2jUy: WE8C~O'S;VÓ? l|=$˒d@y(իp;ru=Q҈R#sy:f|ijoaTA`4lQ6B.h9Hca̭q#x@hAMt#yu=,^ּC@wH.n sPf nj4״_?6͘}Ⱦ]H'%}_!ĕ+ 45E;H Fzby@u8f6:9+ZLq@u'G# 7.86ӛ &LuxZG{ކ̠gԺi%l82i ]1 /p k TTx8맊 GF->2l2s"0zswcYz:^VUצo-+#n(c" ,T)ۧJRf2RԔ=-@J) 'h$,ד+xE]Nb)@ !*" mŀ1@w"[Dil8B1&\$R~q?&KWޟ_}\ʥ.ulP(OӊC&Hxbw[> qmi Kf$3ӊZ>L D9ZVw!#)pb\67tT?lDSO P,h AJN.qU]-io61ӹm}(߭k!fªyXnT7zۿo"D%vӗh~SRNs"qPh?ωP bF[[o3}9GO0/<ٌJHkat5QЇ79>;"Opc2'A?81 B_VXKPXyk)D_3r%Wkb:vqVtMByOO-?!ר6ؿr?7+ڢ_Yi]3J}pjE. ;@%$3i=((SXe1/J )?<Bpbݧm CħԈA`2*ƌ(Vl_$Ht͖}ȍiNdħݷm).K̠R}8)'ĚP %pA!troG:*'ctQ~&sV٭sJ[rBc1OqZVHt߀&CV [UB[ 3;U#ShNLR|{V;Z]7yB8r/ׯjsw꾖eծn9SX1z>C2>$ly OPɦx9M%C hmګWϒ<{0o߆??Ep:7}`h$N̬"i?ZkN8B%8i`j$|XXVlnDGNPr&m!;F,ޔ t(jwvܘ}_D:}j jr!}yw@V Z0FWn^s!*\zjs4aAA: SVGK\2گoC0oo[&$t4h/9Y}*d :J!$'Q$ay۞+`V(IłjB2& Vr/{uonSO͓@ݸХX`Lb][!>:̰}XP܀hU @kԡg6VHXKru뺮ƥh)].b@)/q57*4ݤO}/ѪkG*O|^COW8ׂ%1Ôvw!m_7 x fp̃s~d/v}A~iL T Wrě4fE =N.X Hut{L}TRj 0 .唹Fs ?1UᘥYL_|3ݤko_ޤ6r`"]hQ1/&ἅDv;@!'!q=#yWS ~|foh9>uuit\S׽.﮽ъw `PTW&/ ?ޟ9'k@Vё`<Ҋ1L:/O_aƣ<+/įq txdO[:Ổ*u)zbLKnWw+oRؕ)^R>6=o/ ( ArWi)TD/Lڞ׺p$w+ep\CBtBoရ<]D9mP2L3O;ȰX-^8Tf(uQl."45? C$C6d@P0# +pSN9vZ؃:؁HwP.`Q}BwaanfٳOIjHOUoSFWwx2Oٶy8~ӏOeuzkp͔cCk-..?̗9%OmΉo}ns>00gDƔR>DιcTFHuK:Jf ooyz<pl=6mƍ|1x[jPCm4~1\|M_]/9ދVk'\˃T$Ήh0vcnVAR0]4m%F^pA/m- 鴈.~ɧXҷ L`@~#V9[n2=4BȮCbl,o/esi)&QdEaF*Fbkh\}F(P?Ls'Mqw\ }6c&9pW@`f'|r_qyI SF %DDf},]k5y`r9Izm}T)º>-jhڐ͗T+j xúccaإ'S* v*_*dGzȀrm4֜<>3^?`؉1m SSkn@mb>V7 Z+TiaU['4/3P%x]L9gKmjbΰ@\k>QZ2Cg$j|^J=a*2!mس:rJ~KbӯæY񽩁4xfL)by"SJZ:bV"ɦ&?bl`t( ̌LFe91Hy>'0 ZPa_F7t ע<_pl&ZB~w<#l5,# dℼI{e'/&R=,Fs~tAH8GHE5@mnB IDATϦQUo B+m X֊mYlD/sbSK6s75ÇT z#38mxE0 RSoOh]yp[kGZ>'+!^i} @1FX8<:ps(tF 4ę<Ԍ'CT G/J=w9]DZZmm$k ;CTւ0MQbdTW$+p'xRyc(˱û7 H #dL*wJ ڞk ΉFi/-]uo3R"'j*mgr}9'+ kS/ZOe˾+#ġMXU tu?!v2/5h&?:Ajmwj{e5ð ry{e9'( %jڛ7,M* C7.߷;,sg{a @W l3 Zd- ]0HOW=^gޚ&CUe-ogyȂD z۟/";$S>N2F:A`ԉ䀆:ʅ L2_r^_Ҧhu=Fɺ=*Hj7C$G` JV}/PPUZ5Ggc%5"ҥj{Cмe? Umn«ahyC`3+XL ei@3NDy@N!< !ps>MGd@]@G?wу*90SL"0!T6[ y+cp#91P!{H^UĽ[;Fgy)!kX[-2`RG]dQI!09х~-Č9ۧء$؆=@'?  /g͇Wgw~ B4 㙘7&fhfAn'>/HVuS؟Hvxh|wY1ѕZ[KZQ'wVk3E>\Mv9)iQ[vʱ{-ow.i#5ז+te1l7%c*=#mO NKc[Kl1!Gp7>2.< nk⍠VB8=&!~lu&[ˌgS#BӘW, pTjP2d1$ʈZ[w@-ִ Z^fr_x_v|~_F+hUk'LI5'ύio#6 0odI cZgfo眘bM=-B紋= UG>u{?A]uz}Xju]Su\hI<Bf Z[e.y@'P$IK]b4j_>ozE.Ԋt%yz!^v^‚GEmIlZ&`mS ,+V}ZhkYا ~ #_y!@͓8z7\3SJH 6Jit PKc]be7 mN"0ߦ17J-1h*`v9 -KiBDN!1`ܧd pox$41vH]ІS]KyV E @G}dC #kz? ƺ;vI#cxusK#bJFjĉ)!rlakWw`InFm}QSU˞UlPQ*UЗN//8߽4))K6 .-q4*ud{ogaF߲=Bqf_.tu.Vc/Um !F uY6ve&/;0-IY$OnȁlgW#ȸ}_ +u:Bk_rJpl;~-sYnsKJ_xָ$k`By`GMcq`kp%ެs#" FOKk4b&Vm㥟ہ8 a~]q 06ED8O; |;zp -ݿ5\;5ߐxcSSkɒ_D% hަ>:+9 (My?ǻ;cT pay'82%1Vd@ ꂿԇ&qn9}<|)k:69i#UV@yr8^Td<B!uǵU5󗄆֕o2`~˱Xbpv_X$ZBc@IRŧNo̓NTV`@6p->Ak)! i,97-ܓU4QyKa'c| xkxeE<ORmd-E`i>Ix=ƪR +"U$R)hZXF4$Az]=y#%S:M:&m]俒LsB?ko̜(D-;)hV)nݤg<84nAl4 bafQRW׆g&̚ƛYg!&/I*Uн߫HPes kbNsMɷ)c&u`TOxϷ? F"h/`60úq0C, X̫.ltaWv|p5TaųЋO"6 aaZ)%a3pnsg_~.ŐﬓH\P8rݪZK R&c끳' z=Al67kOEVx7O i`QVP ?D qSd؆3-#iZߵ; uGaak HSkKߪ<p=sD7g)\.}KYꅪF'4M^爳}m y8g2ruaF՞̗R ީlj>LFsN!r; p|.2T2%oMj7ts؁Qi0BVZu$7{n\]J e(Y?ڕתfڬ֚-f(pjXHkŎN%36"GmbBi{cZ-A]TC0mB 4t]vMZ=W c yOը[ʯ<Y2K_&,g%!?@D# RΤ :b`UD'iGS'd@%sJy65*HO7N*0L@bw!gǧ' @cwz>qL#H@FAY2Fy9qwiMM红uxÜrME?zFmesСg1V0hBb5, qbh9q .\WSpʬ=T3;;f  GǑe6Ye tsStjB}B},-hML)\L  K۳Wyla w޾ufO!N&XWX7K{)KP^3#nh)'>$}uɺIZkKV>»#] Wb~iZ}7 xUqM) C?0 eU.dGrTk$WAfd mUԢZg~}g<|YH!r>(?aUd җ;%]GLƯ&xJ-ګ#/3n^Gyzsg BUKEx0׸ D M=KB].F;@1dt.'x/I^-=>! ,鈌g:fn3. kt9.4d1to::zH [W9;SAsN[?w ~8OKx˪؀b Izǜ#Hw+#'^e:VbrfɉaC,uY(z*HoqfOt9SCmGfk-}#H imb)amo(6Z~x 8z$'ś7?gxJU}$ ?`İa|ُyw/q )]w;16_@B6{:51Da`)5gYg[{%7dF?nE9Ξ&vpmHxߺkI.f٘ 3vuQR3fvqzCÄ ,*[1\`bB4.7=CYm^_ }m? ]uPZuԯ,WO1Nssbg 4q`lt^C|+c)]/_òi1M^,qme';NOZi|G uفvJ9828!a e2AsӞ@7s3  ^v?b[5k~Fӟza ?9UN40"W08;dJ}e ;powZ<˲X#Āhl=~39VrL^4/|Ń4$g ݆`ru;tPr<8:=+XU?{obK]UwN>1ŹV7^\I0 0jś81??x%Gq!V:m7Hd$קͱ|wᚻ&\Ϯ{_wĮtvWRNqK [ޮgGXC= &=)`Is-l[ksxfbͩE 7/Y$L.lC;մH#ǢxU}mQ!A X&(7!В(^S 9sAu{"gMc/ި=sL6M֝"wZ⊿a" gTJYGJ>)[t OHbKx)z]ى >1k"X\rSG OǨ 9gXI٤o{]\[Nt Sjٶ_5Iز}7uZ3VgVn ('&yJpCw͇$[*"%gSm+wk)+Pq>^zJOr3i>% PBKv^^9kˈt vK{W}h;d8'Ks͂qYE0Wص꟤񮶽6RqjDJ|ے<*ʹ0!R=܅g`*ʲn:t.yl%ZҠZM*<\|?Oi%t/)2f`Wsc((ڣPQQ q{SS?!PS1  _3>DfLxH5¬,\E,ˁJ,g=b7.V˭/r^݆d/S&Kh8>~/h@ eANgBY˗|:-Ã@ҚDAAE?n=9PQ>W̥R5 §#)6jW ͒g,p6v.[ށ Vs<` IDATT)_\lƥB˃A FT$St$j5z9-"{7T=,csȶwHCGjew 蝀 pL4aee9U{_#Vuw"϶׫Fh$ UY~'ےJ/D@@v2]5no*OJ0/ }x#3t᮵ݻvr2YZj1o)+Lŷa(Q`Sak}7W;qāpcog0yHV4'wo@<pe!k.Xa[-n著46$he\ R)I; "}U4Kc+-J-'nՆB $yOF{x aXɥZTeLy(XdHϜWZ $AF~?"/fT-3FoT.SNy8T!=| )Sa/v}r.8i$ZD b<aŧ_@D xvJﭨWDZȀ3vL@g缐2lZ?3 nd:P%xHQV3#pX<ϳw"Sd- 5h{s/hAUW>.OkJz( (ۺI yz) ჈) mi+{޴=;M*l.^Cbou19tmgGGkCJWHy̯xDZ_370ETpe)TYPj˪ll =7pv$Wo8C&Bk!QX :/B,-E_j[owP*{aiYl_g@Xo!/-ɳ%-2>w"4g-ei%>g I^FmzBe+q|-ksq">B !(K.TKiB"ya]Vkn6;LP.BrM)礝6Q?oB|  -/&-_Z1$X |*$$$VȽ >crF7m4'q3o-;Z]l-qZIX-`[' oǐSy9~,k'"٩AOE,aVUIreb,7BGJ}nQ @L*謠EFiۈ@ w>N>+w^y䕖e%҈B2*{hXqSSFO|Np갺c$AHap"X5$Ӛk.ԢUP3(<c)YV/ZP;Htl2u`7*CrEUnB][pF;~hM k )^`uxf] iv%"ˉ%c)ID]Pȁ נ8iBHOEW֞FlG)|"Y+/e J͐`gгU@$X`nEOu<(uR@ns1=8֑ ץEV1dwr.H)#&Z|PF/mښ'-mG P#XsNZP, +lhl fr{Ʒflz˙T聼Ap/n`*.VtQbWoisbUf'Z`xEI2-F/'üMP@RC;)9/t d28[ i=Lmܡ<m弾 zk]r*^B^.oK4 ;Wew7nLMaEJƸ=;{r)/<߉ZJҒwhcnS0b a{g~HB<*e#tZ!iD6eoLV(9o-jCu{\ YjS@S K$fj拶calnz;xg9~֍~KUZ͐hd; JVAvOo LWN`t"! eT9"'הhd m-֡iey*pR$*O%;R0gxD~W+'!!I3fEdMhՎw! o[KBs9 t킷{>R1wKll"O_RKTxß~M6*" W>/I_R\Z rő=V+1q!ޣBMgte,= Pp(iγkN{{ki}x繿݈X9n%ݔdv5$I\B`d@7``/325TA$ ={dJ]Q3CuZJexZdzgϪ{N0,p\=o{ј%rΡYJϡ2~Cx5~T|rqNpaquH19w_d<bdA*'X2՗{{hu/e-CP9*!iLtPNRnKN@2 Zռ P HɫBtU\Rbatٞ=INW~*@}+gK OytR&5ݫ?%ˤخQ$o`4r3௭'S{oH_/ߏ0~?]}o(~i[ONbf'cSPb+ۊk mfb.U$z]︞c[W}M+IL dfBf7Y\ZNLl,Ib )Gs氏 2#aȳvyAvy#nՍ×]ޮx _/ v׋oJ cb³k{rw%v6y&jWhk,VƚeI jl;+>]bSGF c\ɡuorNRgh [8%PݜI]hTX& txCz#v(}KiI:Ė"UU}{С4}ڶϕI! plH@{ep]L>^}yV1B-c~ӚW0t))D&cīh9eYź*cԘFՈZ ,˻o^+ &gӹ,%˽Z%mMLZ)9EBz9P` 0ø#еgR^ " ИsNQ!4o9A6`q]ȑ+ բ9s)c@2_BkҢvPS`Wu!IԶ dzk{hƑ,Ó`(іgoM]SrI7z>{ABb}oE8Ԓ򤡧z,t-38{D̼0\bܑ!MHS uӻv:+f!h~#m_ߞuO-ATvi9ˌqj=;7T8iScCM-d(%{9W9rM8W[Ť`DKxsrzk̿G ,HKTY~.23ny^Ǔ0H.oѷI'=3RGLBjGt!/TDz.Y¦ƔR6o˃z}x mA"ݰ3&X[ph!΋p6/м( w QEB!B$ $i)hqa*TOˮG S] 㽯?ɞ.]!ܞ/a]ØK+ZOږ3Ixw*MO Q$,,vdi]~/Uwu Y gyy#?1;z&a0Utѹsb jvQ{Z.2ssӪl @ X 4ճu`esEZ9,[B^,_`izp hɖXT/X;Ub='72bZ\L|ARG= yTuoܽ,yw<k{rUUopL(f!oMPNAէsS-ْIJGЬL)N,xTLgOI؞꼥C[o2#%f5wWIb3Ao)3d&!$\zl^ÖBr!!uևAj;Fcy(j ˠ>meE"sFjcfWn7w`(s1$w+oysׁ.Q÷UW# 5C L])(wɘ~+p>u)Hc{mcO_Wҕ)`oSdч)&Ӈ>|\ "/1c7ܝbB4?9]ڡ !j *0l:[y4}W^hJ*4I?~:YΐSi*2PzW.²T(<=cBh-R%H5wޏpU4@.?̟mJ+' URNMψBVwkWPƖ&uhG˜tBYmd8h7S* ! ș<h?vW\zZYo!\ከ@!YKܒ2uA#Y{cBlD8HOoS/W)2OGYWu]feՊ-dDp;s8Aϭ`FwAhۧs}:Bdj/FvcAlc9֔sXMZ.~&J{ u.dB=Q0u<~Ȅf$Ӡg8;׹K ʚy_9eoM}}^x1w!(wбrwz*mĵ2b'#q>v==>{3#RQŜ3&~t+Ũ;ɓ'lCD@LE->6c3;y*b}޴OS ')h-$mۣV3+6'qzPЇ|ԕ̫ubV.i~ z}-^5T̚61u]tDz ^5(ֺO'u:.wսe֫tԦ'4<?m^=O>6o˘7Jri-̡[Brj[7egho1qrɶqw H6eDܽLA{ru an);WK7]օffP4G%dBzp'<ഫހXH7[%1&ހ:Qm(JH`&W.Uuwt-/%ź62Z^Ɨ!;*K{/H@7,fYjt:1'W괎yTH2|Ǭ3-Phn5IsjL3JQT]PXO[=M5ɸD+u^Qʟe$3:]u/u ;e-f;[Rh²d=PoJ(Tе=m}nz ,Z1y}۱ҢLyevZ:У*T^+.t`"mhR)9vk[ P\A֖Q⽁Rma@/h]&`ɍXu]XBOHcI;(JxHpA5t@ϡ <  d:ARdt =[YكGm&%fdt_+# f! (>0 9c+PJZ1KW5 )fh9~::ю/_vu45@RfС&N&PM:s=wO$7kx2?^r4zCw3(8 :ra%pM@W3-5@Ŧ& h_Q]HOn/nh.W& wxI&̉[b#G}5VzT%aV#:CJޱ\N6"\H' $I=Ҭ akьdQ) hơޜqؚk0 т`F6?f̌I71lCvؾ_aۧs\3({Yp;@6 ۮDw5J C#cL̉xͭ ت_Fo۽I ~3{}Hg}Tp? R7ƄG[|/ml:V!V1O|*戓IFKԧC$cjZ(8BE^PGϯ9ӱ/ꝼa}8`$Q%t?sLpI3 7ֿl?>d?v/s f=>zir2&P ݆i KGի<06sNnǬ LS1H] Kp|/ Odb lr._.הr'ƕC|yc i?|.$3 P@p߈ Ϯǁ5O9O&b6ـx\bib3SiJz.'-o^ͽb2 F/ 1la[.Rk~r6D9{ۉT,> ~sVҏ)ݱz2D8PA淎dȟk$/ =U^пk`#%'HvF1C>}0?.@,4ڱza4=qySLfBc`ܫW@;-(Vf׽\ g@M-)vV)L( 85w#~-m1sփ$g:֧a4K$L̗~{*>!VjE $?l$/*e$J=JWǂm*jq4n4I 0\jz|qr$A UޤzWsgwY"s"SG|UE.xj9obwzZTٓx}Ԝ?X#/-2jڬ1cpH6d D0Y6n,CȀ%$ Cݯ>15atuDHV>R뀻Uj Yq|cCf{Y-B:4>NyU7uԛYmfq<}s:w7W$w 9 ql1ѮCfqQdWC1IrfvqNuKk]{T12h ._~AoT)Mq'憵f6( bx.g@bNO0G{MgV܁˯~žlǵ  1mhs>oVN(o | G -b 5AiGd!3j?}Cw|pcݯakҔ9v,"]C}U2s2&^JpNSPk2 cJ+ó:bMM#SzuЁ$e9EpC)E ުzEgΙۆ1o|(ZH*M4y]b޽aq>d}#@{g8Mq#>{~jv* ~L.sl$z, T18#7◀1 ՇRk)EVx?В̌d QMjBH"bM1DGaQ<\Y7zԒ 81 Ŕ»#G 4l9of pA]MNCqBj~Banm!,9xm .R_y,2&S1Wm k,,wofi$Ɯ&!}A`,l}3Xʹ7S߮ƾgS7AO@KlP9t@Ƶ XLq"mC{% Cġ]St\zp?c,'+ijڈh0m_Fn!L~s*Uyo;6G P"Ac/Z[4Lλh{IJNKG1MVN`Bd&yz~k»c$ȩu;[MP};Cp{ny{zVkf>L Fjs23"o0u 6P3뾫-#Y 4=l}9-oN5u !5ZxX+Uwj;kԆ;кl U\+l^18aP>8ܧipq2ꤎKrF~r} 9:.`W^o~MfcCI#X9D;TC@ sYvmuqZȁi*p =yGutt4232<͟={V >PRJـ"AHrT1[,%JȆaՈK~Z/i/>t)4_?ZaK5d!oX D+_ߦ!(m*I)MRRa4 `_yOBm,?.ˇc+bGb9.P@]^=zX]j T-[JS:*g ՚oBѳ5}I{r<=U`%=uJN)6zϷD`4ӔLT)l]mڿCp}+Ȅ&{S+kUSUoz$ʮLr8~8Xqr$LTOGFD0!d]- @aVk9.⍯[yr8䜛|rW~jeJ߬'1GO4{j9@bKUd&[Fo#<ypz3@v2!{Z՛^7 cl]NaebиY^&eY+˃TQZjU-SܛZGRH+Z]oL\X~=Nj ##cJMSL2!c_)Ho댭A ۾Bר-06 `+liߕZyj́^?c"c]g 1Duq#x>h9V+sd@+䡔蟘\+2ms9DGķ  7|DYM6w:Cs.8fnO?~C~]_v~og:"ӯlȲ=iJ$X=RsM_slY4yp_>Hh,~tvڃGZ-`>*B~h;u(|պŝ~5lɌ'mԼ X <e96)x1MM_fT~ 9'L(+e$oꬋ|aNru &8V][;MiPXmuҰ+Oe7ߌe-67mmSFp ߿gBάm ;/ϰI3z;J˽O;7xpI8u9ML9Ϸ)ĉOTJp*lSn睜·uc6$uzN)b܆l6?W_unOІ {{6྾JdUj79N{tAT1Yc)XꓚόgemIT*H X2k'o^m5W϶eS;] a[\[n􃁅z[Y =Unu?W<>' W+bɔ̔&M Ih Y%f 'e,o40XW0܌Z , z'= 5zZ4lnfkdxxHKܜ fxV%zS =Y"q ($dW&vZkd$Ēnb50)652!`,kӪAr mtr/x̷oMqB.qJPD.+4Vra4dgM5O=2;]`p/nS'?\^imT:9GƭqťhHQGc |F q!3wbig+ ( z"PʪZ3 0VT,ji8"my: S1ak%r䮰3g]b>y }^<~&e_Y/ 7.waQT!,r_UC>T)JemV2y:a5C¹L7CO5lOO֬aCfNU#^@P?18>a*xZPlMns2TЖ .)5%!\#d49q()(k@LSn: OƤ`Y̜iTܞ3sP.Eki5Rm%`_h萚8m@r%9E&da2Ń81&d !_3O:KpB041g2đ6VY+~<20 풥&F2mC2hO1_zm^$eIrJYd?¹\!*>`1N !sb%ߦ96qb (J 08|t  5 Fn Ǵ$A. ]C7;<IoV*ZeHkt]is/.B!5KI..FG@lٱ<4ILgJ'+rH/$KFع2wv3L} eRrMWzfciM; ֫ZvR~y&xNNUSڪF x0}|g5! M)O(0- s.#{iQS6 C{ (; c //i^c֞%YUjmEFWfL|RSSSyiWW4c{Ó/_"'XgU##ȋ +̓D&@n߿S~i3%#U-w n,b65U#of+w*wHRZj? 1䶢G tԄ9dsPֹ ǾZIțr~l$Z o*]<H]3_^᳏bd3qCݬ.RަA1 = 2lPϧv՘lMJydysL7y9H5M*ʪ0Ǹ9x.aCV?zP̫E {5WI֚_aATxVI Be`bN;̿PNmnMv$0BMmC)šN9{:ߓ%*|xO V FBk]o]v ^ 80}xCh$)6pmv44fydDcp>=|-3`e^oM)1 *ɛ&9zKV,ܲG^}Uud;Eֺ]Qsف@^ <ϧbs[CˈhN7f˶ WdSseL|N<NWAr:nEo`AC5V.\7#HkS>snj2mPr_\R Ѻi33ڞeNA.^ n/o ȉʶ㼰~'ec %.%$}:.K>V^bZr٤y < L ٪Çá-?MMm^131^l!;0@b7?g֞m~򷷃S݅YANVa2}C٦!RsHƉPI8~!C5Uz2v魏xK^=>5)l D eO9X=Ð9FϨ0Us>̷3@4v@q7)ӼUXӲ,FEP3KɖJ=CFϣO87W|)y$ t3Agw|z3}<\= ުWYV?f0AnSau@#)j_j-MURL)ۙec&'9GO%ٓ!Sja 8}"xhѨUG|"UWUuZdl8B|žIr$*x !:`{>-}߽/12@)Ѓa&yDTuVL:$]&3TiWu zW ۬KSj=,DDaOSsFu3 |Yo+v?i>9p1`i^PIaζc{y_oߘ.96xqx+nwn'pMUֲq:2fwFT,ѝ_~۶k?3 [r [ޝЯ.z97쓻bζM@Kwn wwu?8iDoz Ғ:O,6` |'#V˔xp!<8 /L\׀ౌ `fk)<=V7G?3.Z; xSfUYdc }y`in A$wָ5ewN7^֊=d)u}0.$'aw"?&Z^.>R$բwL!HqR!^wHꐤ'`zvr'8h\Ul㆕,2>Ym1tb6n ; @5 0'/_p`1Д0CA1 4$3].@VC;е*&R%/i=fP͂TWlفwH͚GCV(CM k|q ۳<"aF3/x_!RzVm IDAT^WuNkQ-9S# ?sK!ߟ! "Wm#1. bqc .aǪZZOsZx|'~E!5&(5=N9h27Yp- DiI9aC u=㒴硄DommC&ت*?!㧻<%2%cIt%NQMtwxR[0:{ɸ*x%#/I"z1OW9,jE}J=4ljJ])2mtw+J˃ɔr4-뺞W. ]9H)<㾍D(jR[^nN3*ߴ>ܞoA2SzZẹ~{ ZWz@ʫUO^|HKNl@(5Ogrwt\ן =)Yr{ d`]H2܁㻟7⚰>q=MNh7Oωilnk:yRCjxm۬dƔ, 󺮧g;﹙s&YlJ؛;It$ W#)bJ)>Ϫc$r-oaM'@c2rMkz^|mwXe ]j/T ~خz>ҘvQw8\a_ypv!i}3"$uycA}'{,9&5yXIߵx,l&{mZf*;ObީZ$@g[u*޸5Y3Hz!(΁^dn tL R&@dH\vG >t8)?1I"0031niaeϏ4ۮv5sO֕Tm66043vк|7N9h|3bu AÙ 1\AM* |^3øG?_{?,qD 1{߸jw ӆ +-ir/Q6S Ryx`fTJ\\?=3'۶rlw 6 W>jAjjX J1sN ,5 S^sJJ5 phݩÚOil<\ ( 21fK8Sr 2#o]í~-e?;##@նme||`4.'XW!+Тty}xXNum=)3Od`6ٵbsJ&=IgRIY7Z^R:0.3:e{-R E2"4T]baU* <la~Za.G^įB%IryˋDӏxwDko `%b C 293s@."AuBJ:9 XkJ9۷LKm3+Vl]OM7!9*s)Ls rb  q=tVLMm{ŀ FW>h{ˁ1~`_rg™Ɔ}xQqL`nI\xϿLTEͰ.ȁJH̭g)p{';T9øuSJH%T-OZ%#@RPà$IŶ[C%5.q\ײHOw&2Ъs1|L[GZ =03^ ȌXb[Zz:{ڑvyEzN01@0n.lkhOv5ނm^STL n#0wT[ޢUO魠ÂKzZ#ɔW8 6jz+=f$&;Bx 3kxo޴H\XLV\͡d hpP~"iIa w~`CIŻ#E[i|߁6Ѕ(y~ Y-LrekŊɬ<->RwDFCoՆOF⭣uSU;{A@mt{?d>(mӖ2cc Gxv2bO}c$w`bф:Ϲ`!ユ13@M  v (' [ 4кn/UЭBo |"A!X>67TކRZT "ZG1kX zP0+X20+'DPta V\=/L@gF̛.HJ$@G YGk]C oO 9)=%b鵔Vŀ8PEh]r)v5w 톟z^H;KȆH*ַ6$iȄ."zj' ;o#TUYG3b Vh''cHzñG\T41Ϳţ$2D##Յ'1i:{3vltK~sJj&9Pje۶r?A~6?[חw=(T(v@hI7JǶGc'm<{>gq^ vZuH+')RG3<̱3.|orMqpɟ_x2|@fb`);.oWS,PBꭾVq@`9x?\b@QbVf)B!0rrqgx7IZA:b>mL,9&#)զ1A65݀ZbOou͹]'G (?禨V>!M2 gڳ*]y- 8>Cr 1.ohr(pA}5w|=u w_af{VZv 䀖b5w<1XNFbW>BESr<[Le93ed&]wc|ʥ(1Teo|-yCW6v3UՀ\!gVSŨsXIB1sg[H_?? J7'~Ө7.Pl;J:أP! 1ϙH?&F.DKq}V[-Zfu]5gh 7ZajL)=qC ۧM]۵xLOPrIu== 2 1NIǬ!(姗_G)k_4u xgI8O~n눳TE*͇,3䶁n FTlR>FI93;H4ѳ}dg3emzчKr#lF(%.lbNyѽ 1JV`]%{Wy捦 } ryI?|~h[?(%b!`Yk6Z쒠+2O^Q'O.c{Sū)4b2 i!p3r2RJ[s^ϙ'~ܮ 8$N!~l芁4B5 #غԛKj#Kn)gc#gcq5';wOI6Y @XoyXJUykw4S4"6#3[1Zv^>m*eh*{mb: V<.T-'"Ƒ TIjj}<;F) |eYv{);i8i_sGfN ?">2_|*9"J%"eN%r+~7⺘ "0޸.G7`t [<xvyPKZ嘬iPfíK Kq= Z^O2ίQ|͟"1痖Z]B ?}QT^f#O~ݾ~~7@FZ%&.F&X6'W_ZG߈Y9\!TՃkf h+'} BDbMҮ֏`EZ\=,~I݉C<Ϙ9 ;1!@61D$=0;xl0i_g۝UV"0?1E 5ժE.{y/VJ-!-uf0ee@:ݤDJ>bh00tr`c홬Fۖ۶*ē.spie&I1Rfm"=RS(ʭn[DOz![8aB̄oy&f'GR gax5'Z<ȯl\H0-,OzD2ٚ`{-x-$)jۭJ]q@woz93TT+^@aoy]m{ꔄ:zfXLh@ &2Y-J R3׭I.a^뺬M>oɞe9YymbZz6U_M3%oϾ;>y:mػ?OcMeWҹWpF A? fX6n&#2ͦ?w=ph#SVr@jAd=l۵joOzE=% ف{+RoFh>g;/t،w9aa)+go?> ҏ4\"mA;\]boճ%u,`<*^G% Fd׊HVq؎8DJޫHV4l48m."*unE(*78[AoܣTjk$ }8EQ"쪵"`^L|'K,xAbdF.ErǸRmG-enVD旿,K&h]W=XݕB!=1 #t)E65޴˴giIzS.=)l 'gk_d 2ozDDDtիZ-9;3-!ӎ=(6G'F@B_TߩC{|(?}dOgSSF O2|~Njh hLq?庴:tZ@vl\Fe擴ah:EY W-sT?"Y74Հߓ|uʶpWS}on{:ZYhiė[GrVu .oꭖ,/1uɜtqH9p.&W21"IrxQ_`@ g(w0YK0w4뒳NCʹ{F N5U :-=M 6/.-gF9M˘#7754)g9b v2kj78˽8|sƄTʭ֢[XI}iGꑬXj (W)z ;Ћ6M͖gki$IΟ ! ! 29T4î~@A0seJ09 P A9f~LJBCRx[> @\p+"bJkeUͅ18ȜZ6AZcɬ<$gۛ׫ÝL3SZ U"·+PtQ/qET@a B'>\ T6uXhP)!g[A ,/9~@-)t!V-!톼}%ӓYK .> THӍo۲"GE>р0f󳟼 w1AQ 1l `Ae1YB3KwƾG(9.d3Xθb.۟4nW*O 9Eۥs B&3ӴUL~D"BS-]!E7o:"/rYby!JCޥRCw"zÛLnE< "Ē s3 _e|DWQUЎe~hqpJeR$ .{0&T9 & U:2?)kUitR Ss)pSfoTp͋M^:bUsPo#KDt)cCk珠dƪP W&cR 6v"]^"K^_a ˰rNps)Ǟk~w|םJ.?{AP3ۭ2<"ar!<-&s0hWrϷoȸ;@ "^: ݰrJ}5Bnؒ`a?Ǽ~@!2jtw^e/"Z"ʚ5Eua7|׍n<Ӡ; ˼3ٻVI(qs0 p|}9gM11i*b\GvIwdT^:?=H'yF\1T`_oqT ,-b$fư"bQ1'"+RƬ]1.E2m(edNdkO%\H,)'uvB=l4! Uo>)g^t#]@Eͯ^ǡ2t.SŢORb +84a3hؕ2ҋ,XFS \@bT21( 9 ;!XaHv' gUK3GG8;pr3#ǬR[P$D`1p@ %;}é"?J^ 3AJ'V J`x*xB\(""4!`9'tޢSSJjRs5u/bnupXf>u#|PУX,"L`2fM(Tii ~$m!*Q >N?~o~ðU'E ȍ'?T{bmj^P#8SMn-;20m@p2&>Qn>DasBTr(."e:ѰjimFp,N^YrEگ|:+/L2 /!k,TdY&u/f5FlIMz+~ljޘu""D)K!DeQȊ}q`JỷE;t NʍY)t+¶A0񷁝o#zϑFhgfI%t.a#t=͈n 22?Bms98fB:oIFXk6B嘢Bzc 4{\!TUZxlH\\p6_W?b" l SCPs^/"⠌^@ @Q0!yI()R!@Bq<OCh]@9˘Ⱥc'ZAơYQĀNJR-QJ(f_zUᵔ'*k@hgA"D~`)=]L6  vS9-` !AOr 2''I c1 +c/X4 ~ݿ˗eN-_]WeE#3^ զpEmob׮^qf~[hDMBNZz Y^PIfn}i6AvE fs'0UXGaBx!~< mme$A ;l'c9%b]+dmERNJbigWߝЍW1aڴ>3"]A}xѡXp6\ 2ńْm(h>#'TI1R9.][E!A𛟼2v1n,K_MQgtKCM?8h =^(%"Y6ҁaH9AnDc]49Ed2_goxKl]oϮ9w8gu7_|oՖR nN͞}11 Ŋl!`$U7Aqd*@2u`UX)u^rhl-CgMh(߲l%3Әb5fq=PʬZ(ODw4TTAEy:# o{;,E ǩY6&p}8 -x,:ROcu<[x2eFTg=Pm;H‘ԎVR-Ī33IIcGxiM)L@䬼bH-aR@z"G1)xa7j'ExYbXIW ⩡- Ԅ̻Y8tqqZ6׆^L{ad-EX^):,ׁ6ڵNX[I]^v5k;V [9mj$?~|hДQhׁyM@w2Q!YӧˉOߩdn-yx#&a4pߦD.xz˴ߨ!,-;N9nt}ϴ3%7%Nv6.;GxKfBZDGSS/"v_MP¼Prc/c!&d9F:YH&1-6=cC?|G{+ m}]( Rmm$L{oYN^NA_X0hYZ" D3 &s4nwpWnĄʜr 8xuxԩٙtG@,w8x& 8{ԑU&2>0XٽG;0E&g躟giF` Goql_~~bŇ.C;VTNR&F2uJ*cb_~C;%)ċҘ?xLq%V4}fW-/d7ʥW|QxDa$ /G0i #y떇d s^q{dٴ@QN6/fNs9>..q}}Q#WW<(Ǽ~erM,lZi`Z'Ҥ$'n!Wc,ʅo1HkfыNp8 rLDmT!΋o퀖ŖNy,48Vǻ6DU\]4Ș*fKA ⽔*AdU}#{"2![PA/ʱ™ ێsſx'(_1h(f۰%C'cHc5Bpd迾T_KD:]4yj{Չ r4N@"Nls|H=zvg?@avZ }ծ\4#csB e.(^()3;"TmMҍMCJiSWN;3 o B \?~sI-|"aw-*ׯnx[9O 1:Ge-6_NQsVDDf8 ɴoJG<͋5B!UA&f_◩ YjtLQLh@|yO2]-~W$9Ldޥa{Ӎ99&[d aDŽ ǥ\EBbC $vfg6#/~)ST,y=:7g{O4=?4bgG?~/M;(=\F!8qqu{oOؾ}R"Ǩ%vd|:Sq'h4/Ï?G?-Tyͮ"><0}tu ӟHaO&؜>נN$ᚣ/1ZBHIENDB`  @@`` 80TYr [ B   ,b$ئ|2o 0e0e     A@ A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||c"$`@uʚ;o3ʚ;g4fdfd 8ppp@ <4!d!dP,gӨ<4ddddP,gӨ ph___PPT2001D<4X?, vProgetto di Linguaggi di Programmazione 1 - A.A. 2002/2003 O =l         sx,, `  e{HH(dh   ` 33` Sf3f` 33g` f` www3PP` ZXdbmo` \ғq>9y`Ӣ` 3f3ff` 3f3FKf` hk]wwwfܹ` ff>>\`Y{ff` R>&- {p_/̴>?" dd@,|?" dd@   " @ ` n?" dd@   @@``PR    @ ` ` p>>   (    6. P 4 T Click to edit Master title style! !  0`.  4 RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  0 . `` 4 P*   0. `  4 R*   0. `  4 R* H  0޽h ? 33 $Blank PresentationH @H(  @ @ Z2 ?#" `P    P*   @ Z02 ?#" `    R*  x @ s * ?"  T @ Z^D ?#" ` @  RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S @ Z9 ?#" ``P   P*   @ Z 8 ?#" ``   R*  H @ 0޽h ? 33@    0 L (  L L T)( ?#" `}PJ- *PROGETTO DI LINGUAGGI DI PROGRAMMAZIONE I $+(2) * L T*( ?#" `  *A.A. 2002/2003 Docente: Prof.ssa A.Dattolo$+ 2* * L T,( ?#" `$J .(2  L N`,( ?#" `p N? FASE 1 Descrizione del problema pag. 2 Descrizione del distributore pag. 3 Descrizione Componenti pag. 4 FASE 2 Modello Iniziale delle classi pag. 7 Class Diagram pag. 8 FASE 3 Use Case Diagram pag. 10 Use Case Utente Use Case Manutentore Sequence Diagram pag. 11 Esempio Verifica Prezzo Esempio Inserimento Moneta FASE 4 State Diagram Esempio Display pag. 12 Esempio Bottoni pag.13  r  $   *       t        : L 3 A   L T,( ?#" ` " d  $PROGETTO P4: Distributore di lattine&%$ $M  L T.( ?#" `P xV eGruppo di lavoro: Sannino Fausto Mat_566/256 Vitiello Nicola Mat_566/489 Musacchia Francesco 566/414 "fd   f  L T/( ?#" `< , H L 0޽h ? 33  d \ @  (      03( \  DESCRIZIONE DEL PROBLEMA Il progetto consiste nel descrivere l attivit di un distributore di lattine. L utente pu prendere dal distributore una lattina della sua bibita scelta digitando il pulsante corrispondente dopo aver inserito l importo dovuto. Per sapere a quanto ammonta il costo della bibita, alla selezione del pulsante, il display del distributore visualizzer l importo della bibita desiderata. Successivamente l utente inserir le monete pari o superiori al prezzo della bibita e poi selezioner di nuovo il pulsante della bibita. Il sistema di controllo delle monete individua il valore della moneta inserita e lo somma al conteggio totale. Raggiunta la cifra dovuta il distributore azioner il meccanismo per l erogazione del prodotto,e se dovuto e se presente, anche il meccanismo per l erogazione del resto. Nel caso l utente volesse rinunciare all acquisto della bibita potr, prima di aver raggiunto l importo dovuto, premere il tasto dell immediata rsetituzione delle monete Il sistema di controllo del distributore terr traccia del numero di lattine presenti e segnaler la loro assenza/presenza. Deve inoltre segnalare possibili guasti meccanici. Deve anche informare il display con importi e resti o nomi dei prodotti. Quando un prodotto esaurito il manutentore potr aggiungere lattine. Se il distributore fuori uso il manutentore dovr aggiustarlo. ^iK iH  0޽h ? 33 P6(    03(j  Descrizione Distributore Il distributore composto da : Sistema di controllo del distributore; Display ; Pulsanti (supponiamo quattro), forniti di LED lampeggianti, corrispondenti alle bibite contenute; Un pulsante per la restituzione dell importo inserito, in caso di rinuncia nell acquisto da parte dell utente Meccanismo di erogazione del prodotto; Sistema di controllo monete ; ^!Ii H  0޽h ? 33    `4 ( ( '    0)5  Descrizione Componenti Sistema di Controllo /* E il vero cuore pulsante del sistema. Lavora in stretta collaborazione con gli altri dispositivi del distributore*/ Aggiorna il display con le informazioni che elabora: alla pressione del pulsante manda l importo della bibita, tramite il controllo monete manda l importo ancora dovuto, tramite il controllo monete manda  Assenza resto , tramite gli altri dispositivi informa l utente se uno di essi rotto. Comunica quale bibita erogare al meccanismo di erogazione lattine; Comunica al controllo monete l azzeramento del conteggio nel caso venga premuto il tasto per la restituzione delle monete; In presenza di credito residuo (per mancanza di monete per il resto) somma tale credito ad una successiva operazione di un utente. Display Visualizza in stato di riposo l ora e la data; Visualizza in caso di selezione del pulsante il prezzo della bibita; Durante l immissione delle monete, visualizza l incremento dell importo; In caso di mancanza di monete per il resto visualizza il messaggio:  Il distributore non da resto ; In caso di mancata erogazione del resto, visualizza il credito residuo; In caso di avaria del distributore visualizza il messaggio : Distributore fuori uso ;  2xl  H  0޽h ? 33 p.(    0)   Pulsanti Lampeggiano in caso di assenza del prodotto; Comunicano al sistema di controllo la bibita scelta; Pulsante per la restituzione delle monete inserite In caso di pressione, manda al sistema di controllo la richiesta di immediata espulsione delle monete appena inserite. Questa scelta non pu essere pi effettuata se la bibita stata gi erogata. Meccanismo di erogazione del prodotto Per l erogazione del prodotto deve avere una sorta di  via libera dal sistema di controllo; Comunica la mancanza di una bibita al sistema di controllo; Deve erogare il prodotto; Comunica al sistema di controllo un suo possibile guasto. p} b4' }H  0޽h ? 33N H( AܞK HV H N) ?#" `|  ^Sistema di controllo monete Individua la moneta inserita e cambia stato in relazione ad essa (incrementando un contatore); Il valore di una moneta riconosciuto tramite la sua dimensione. Una procedura interna controlla quest ultima ne ricava il valore. Fornisce in tempo reale la somma delle monete al sistema di controllo; Accetta solo monete da 0.05,0.10,0.20,0.50,1.00,2.00 euro. In caso di inserimento di monete non conformi a quelle sopra indicate le espelle dal distributore; Attende l informazione di erogazione avvenuta da parte del sistema di controllo e genera il resto (se necessario); Se sono esaurite le monete necessarie per il resto, segnala tale mancanza al sistema 8  H H 0޽h ? 333 33Iq1( @I   6@.p P  XSistema di Controllo    6.0 [Display    6. @  YMeccanismo Erogazione     6@. `  JUtente    6 '   O Manutentore      6'  P  LPulsanti      6@' `@ TControllo Monete    6`' @p YPulsante Restituzione  R  s * RB  s * p R  s *R  s *  Bz/'"a Raggiorna  R  @ s *H R !@ s *@ R " s * R # s * ( $ B`'BJ \comunic Erogazione  % B'cn S V invio Scelta    ' B$`'   XdaiSommaMonete  ( B.Z' s ! [annullaOperazioni R ) s *    + <`'  11  , < ';b C1   - <' C1   . <'pp   C1   / <'< J C1   0 <`'0 @  C1   1 < 'V E C1   2 <'K R  C1   3 <'V  C1   4 <`' E C1   6 < 'p  N0..* X 8 0@ : T' ?#" ` j  *  ; T`' ?#" `p 8  SraccogliLattina   < T ' ?#" `j  E1   = T' ?#" ``   E1   > ZGHI?#" `P   A T' ?#" `  z E1   B T`' ?#" ` =  E1   C T ' ?#" ` J  *  D T' ?#" `Z Laggiusta    " E ZGYH4I?#" `   F N@' ?#" ` '  Ipreme   G T' ?#" `@P E1   H T' ?#" `  *  E1  " Q THsI?#" `   R T' ?#" ` 0  TinserisciLattine   S T' ?#" ` 0z E1   T N`' ?#" ` Z  H0..*   U N' ?#" `p  * V N' ?#" `  * W T`' ?#" `gz *  X N ' ?#" `$@ *  Y T' ?#" `Z mMODELLO INIZIALE DELLE CLASSI"   \ NZ?#" `` 0  ] NZ?#" `p P  ^ N_MJ?#" ` p _ NZ?#" ` `  ` NMM?#" ` p b N?#" `   c ZR$)( ?#" `` )  Q espelliMonete   d N[?#" `00  e N%?#" `xX g NZ?#" ` 0  h Nr?#" `0p2 k  `ZGHcWIH??#" `H @` B n ND?#" `0B o ND?#" ` B p ND?#" `00R q Nk?#" `pH  0޽h ?   ! "#)> EQ  k 33k- --6Z(+(  (m ( NP$)?#" ```  SistemaDiControllo # attivo:boolean=TRUE # codiceSC:integer=00000 + lattinePresenti:integer=000 + importoPresente:real=0000.00 + idBibitaScelta:integer=000 + prezziBibite:array of real # disattivaDistributore() + mandaMessaggio(in Mex:string) + azzeraContatoreMonete() + estraiPrezzo(in idBibScelta; out prezzo) Questo dispositivo ha la responsa Ilit di garantire il funzionamento Del distributore.    ( N$)?#" ``  ~Display # attivo:boolean=TRUE + mexInLine:string=date() changeMessage(in Mex; out mexInLine) + standby(date) Ha il compito di fare da Interfaccia tra l utente e il distributore @>-i- B ( ND?#" ``B ( ND?#" ``B ( ND?#" ```aB ( ND?#" `  !B ( ND?#" ` B ( ND?#" ` 1 ( N0&)?#" `` 0 SControlloMonete # attivo:boolean=TRUE + credito:real=0000.00 + valore:real # valutaMoneta(out valore) # mandaCredito(in credito) # aggiungiMoneta(in valorMon: Real;credito:real out credito):real + prelevaMoneta() +espelliMoneta(valore:real) Si incarica del prelievo e la gestion Del credito tenendo aggiornato il Sistema di controlloTT S ( N2?#" `   U Pulsanti # attivo:boolean=TRUE + lampeggiante:boolean=FALSE + codiceScelta:integer=000 # lampeggia() #elaboraScelta() + comunicaScelta(scelta:integer) Comunica al sistema di controllo La scelta effettuata. Fa lampeggiar I pulsanti le cui bibite sono assenti     ( N2?#" ` ` v2PulsanteRestituzioneMonete # attivo:boolean=TRUE + comunicaAnnullamento() Informa il sistema di controllo Dell annullamento dell operazione    ( Np2?#" ``  SMeccanismoErogazione # attivo:boolean=TRUE # codiciLeve:arrayofinteger + levaDaAttivare:integer=0000 + attivaLeva(codiceLeva:integer) + erogazioneAvvenuta() Si inarica di abbassare la leva Della bibita il cui codice Gli stato inviato dal sistema di controllo  B ( ND?#" ` 0B ( ND?#" `0 01B ( ND?#" `0 01B ( ND?#" ` B ( ND?#" ` B  ( ND?#" `0 1B "( ND?#" ` ` B #( ND?#" `0 `0 B $( ND?#" ``B &( ND?#" `  B '( ND?#" `0  0 B (( ND?#" ` B 1( H?#" `@p 2( H?#" `@@ 3( H?#" `@ 5(  `ZG`HI`?#" ` " 6(@ ZHI?#" `@  8( ZGHpjI?#" ``p 9( ZGHpjI?#" ` p :( ZGHpjI?#" `p @( ZZ02 ?#" `9~ g CLASS DIAGRAM$    A( N2?#" `    Manutentore # codiceManutentore:integer # codiciDistributori:arrayofintger + consultaSistemaDControllo(out codicePezzoRotto) + sostituisciPezzo(codice:integer) Mantiene il distributore funzionante  B B( ND?#" `P  Q B C( ND?#" `0  1 B D( ND?#" ` ` E( Np2?#" ` P Utente # nomeUtente:stringa + premeBottone() + inserisciMoneta(in moneta) + prelevaLattina(outlattina) +prelevaResto() Acquista una lattina inserendo le Monete costituenti l importo dovuto  B F( ND?#" ` P B G( ND?#" `` Pa B H( ND?#" `PR L( N׽X?#" ` I B N(@ ND?#" `  B P( ND?#" `` ` B Q( ND?#" `` B R( ND?#" ` B S( ND?#" `B T(@ ND?#" `0 B U(@ ND?#" ` 0 B W( ND?#" ` B X(@ ND?#" `@B Y( ND?#" ` @@B Z(@ ND?#" ` @ H ( 0޽h ?1(1(2((1(3( 1((5( (1(6(1((8(1((9(1((:( 33 0(  0 0 TP2?#" `P@0 :Il manutentore pu essere anche un utente, in quanto anch egli puo Prendere lattine. Allora erediter dalla classe utente.||  | 0 ZZ2 ?#" `9~ g CLASS DIAGRAM$   H 0 0޽h ? 33'$ ##,A,"( L ,2 , H?#" `P` ,@ H?#" `pB  ,@ ND?#" `p`B  , ND?#" `p`B  , ND?#" `pB  ,@ ND?#" `Pp2  , H?#" `   ,@ H?#" `  B ,@ ND?#" ` B , ND?#" ` B , ND?#" ` 0 B ,@ ND?#" ` 0 2 , NP2?#" `P  SPreleva Lattina   ,@ H?#" `PP , T?#" `PP p2 , N2?#" ` 0 O GeneraResto     !, N l8 ?#" `P LUtente(2   ", Tk8 ?#" `@ O Manutentore     $, Z\@m8 ?#" `~ |  V <>    2 %, N o8?#" ` 0  aAggiusta Distributore  &, H?#" `@ 0@  (, T?#" ` P @  ), T?#" `@ 2 *, Np8?#" ` P  iConsulta Sistema di Controllo 2 +, N r8?#" `@ P   ]Sostituisci Pezzo  ,, ZIs8 ?#" ` Z  W <>     -, Tu8 ?#" `  j  *  ., ZUu8 ?#" ` j  W <>     /, T8?#" `00 @ L operazione di prelievo di una Lattina pu verificare o no la presenza di restoSS R 1, T8?#" ` @  ,L aggiusto del distributore include le Operazioni di verifica del sistema e Sostituzione del pezzo se necessarioqq p 3, T?#" `P P 4, T?#" ``P P2 5, N8?#" ` pp [ConteggiaMonete 2 6, N 8?#" ` p  [InserisciMoneta  7, Z8 ?#" `@  W <>     8, T8 ?#" `` $  *  9, Z8 ?#" ``  W <>    2 ;, N`8?#" ` p ZConsultaPrezzo  <, T?#" `pP P >, Zo8 ?#" `^  W <>    B ?, TDjJ?#" `R @, H?#" `@` A, ZZ8 ?#" `  bUSE CASE DIAGRAM$  H , 0޽h ?@, ,, ,,,, ,,, %,&, %,(,%,),,5,3,,6,4,,;,<, 33B TBLBb4A( F  42  4 N?#" `` B  4 ND?#" `B  4 ND?#" `PPB  4@ ND?#" `B  4 ND?#" `  4 H?#" ` ` 4 H?#" ` 2 4 N?#" `@ B 4 ND?#" ` B 4 ND?#" `0 0 B 4@ ND?#" ` B 4 ND?#" `   4 T8 ?#" `  cpremeBottone(idBottone)  4 H?#" `p 4 T`8 ?#" `8 Z gs1:SistemaDiControllo$(2    4 T 8 ?#" `eZ `bottone1:Bottoni"    4 T@8 ?#" `p@  \comunicaScelta(idBibita)  B !4 ND?#" ` B #4 ND?#" `  %4 T`8 ?#" `p  \verificaPrezzo(idBibita)   (4 T8 ?#" `P  jd1.changeMessage(PrezzoBibita)  )4 H?#" `pp .4 T`8 ?#" ` Z b d1:Display"     B /4 TD?#" `@@ 04 H?#" `0 `B 24@ ZD?#" `p ppB 44 TD?#" ` B 64 TD?#" ` 74 H?#" `pB 84 ND?#" `B 94@ ND?#" ` =4 N?#" `0 @B A4 TD?#" `0B B4 TD?#" `@ 2 C4 T8 ?#" ``a  RL utente verifica il prezzo di una bibita*(2* *~ D4 B?#" `@  E4 H?#" `   G4 T 9 ?#" ` Z  [inserisciMoneta(valore)   H4 H?#" `P  I4 T 9 ?#" ``]j  lc1:ControlloMonete$(2  B J4 ND?#" ` @ B K4 ND?#" ` @@  M4 T 9 ?#" `    XvalutaMoneta(valore)  B O4 ND?#" `0 @@ B P4@ ND?#" `0 @0  Q4 T`9 ?#" ` L :  i%aggiungiMoneta(in valore,out credito)&&  & S4 T9 ?ʚ;o3ʚ;g4fdfd 8ppp@ <4!d!dP, g@<4ddddP, g@ ph___PPT2001D<4X(?, vProgetto di Linguaggi di Programmazi#" ` p Z  YmandaCredito(credito)   T4 H?#" `P 0  V4 T9 ?#" `   ]d1.changeMessage(credito)   W4 H?#" `  ]4 H?#" `P 0 B _4@ ZD?#" `0 B `4@ ZD?#" ` B a4 TD?#" ` P B b4 TD?#" ` c4 H?#" `   d4 T9 ?#" ` j  ms1:SistemaDiControllo"  B e4 TD?#" ` ` ` P B f4 TD?#" `  g4 N9 ?#" `j  \ d1:Display$ (2    B h4 TD?#" `  B i4 TD?#" `P j4 Z 9?#" ` *  l4 Z9?#" `  *  m4 Z9?#" `P  *  n4 Z@8?#" ```  *  o4 ZUD?#" `   *  p4 ZVD?#" ``  * ^ q4 TVD ?#" `Pj xL utente inserisce una delle monete per pagare la sua bibita==<B s4 TD>?#" ` `  t4 H?#" ` P  v4 T?#" `p0B w4 TD?#" ` P B x4 ND?#" `  PB z4@ ZD?#" `P P {4 H?#" ` p@ B |4 TD?#" `@ p@@ B }4 ND?#" `@ @@p B ~4@ ZD?#" `p @p  4 H?#" ` 0  4 H?#" ` p B 4 TD?#" ` p@ B 4 ND?#" ` @@ B 4@ ZD?#" ` @ B 4@ ZD?#" `p p 4 H?#" ` B 4 TD?#" ` B 4@ TD?#" `P B 4 TD?#" ` pB 4 TD?#" `  B 4@ TD?#" ` p@ B 4@ TD?#" ` p@ B 4 TD?#" `P 0 P B 4 TD?#" `  B 4 ND?#" `p B 4@ ND?#" ` 0 4 ZZXD ?#" `9  cSEQUENCE DIAGRAMS$  H 4 0޽h ? 33% 8(  82 8 H?#" ` @p 8 N?#" `@" 8 TYD?#" `  KStandBy  r 8  `G@HRI@K?#" `h  8 T@ZD ?#" ` - cNOEVENT/standBy(Date)(2   8 T \D ?#" `U KStart(2  "  8 T\D?#" `P ]Visualizzazione Messaggio    8 N?#" ` B 8 TD?#" ``  8 T`^D ?#" `j} *  8 T _D ?#" `&  *  8 T_D ?#" ` !  ~:mandaMessaggio(PrezzoBibita) / changeMessage(PrezzoBibita);;  ; 8 T_D ?#" `P Z ^NOMESSAGES / standBy(Date)  r 8  fG3H gI?#" `H 8 TD ?#" ` }9mandaMessaggio(PrezzoBibita) / changeMessage(PrezzoBibita::  :" 8 TPD?#" ` @  W Disattivato     8 N?#" ` h   8 TD ?#" `@1  r&disattivaDistributore() / attivo=FALSE'' &B 8 TD?#" `  2 8 H?#" `P  2 8 H?#" ` @0p  8 TD ?#" ` 0 iSTATE DIAGRAM - DISPLAY$(2  H 8 0޽h ?_8888888 8 8 8 88 888 33 <b (  <2 < H?#" ` p@ < N?#" `Pp" < ND?#" `  KStandBy  b <  fGHI5?#" `8 < TPD ?#" `@  _NOEVENT / StandBy(2 " < T0D?#" `0p KPremuto    < N?#" `    < TD ?#" ` 4 q-premiBottone / comunicaScelta(scelta:integer)..  .  < N?#" `8Pp  < TPD ?#" ` Z j&bibitaAssente(idBibita) / lampeggia() ''  '" < TpD?#" `p P  M Lampeggia    b <  fGLH'I?#" `8`   < TD ?#" `OJ r.bibitaPresente(IdBibita)/ Lampeggiante=FALSE //  /2 < H?#" `p@P  < N?#" ` @H 2 < H?#" `  < TD ?#" ` - [@ iSTATE DIAGRAM - BOTTONI$ H < 0޽h ?o<<<<<<< << < << <<< 33dxp^RЀ3ÿ lHbP  @AL G@;b `B&VUr73(lہXTP,!&F~XLQl?"%/`](HϤ%݂uXNG( , 5K^S8 $X{a݁SID&""+F,#2Skh'$J-.zuہYQK,B>Z`F^O@@xX/S%݂WLG,8*)P=!:JFK|?NO'$LZ[*63)ܶRIC*R@$,16GTF.?^M%0bO"*)%ݶPHD0R/0Z\>LPMfzeET}f3Ei۶XPK6UWp}\wϑ("ݶuQIE2 %"@0,!)*#B:;0:ZUFi_ ("݁NGC014YFA4AA2cZWEPzrjw !("فXNH7NStkbxn[wܪ))-#݂PIC1&(&13;L\U{b5E,* MFA-;?)32I&)OI`t{z3C(' WNH2@jnIWX|D3Fݓ:J.) PF@0 C)+#1 WL*ghU*2"#LD>,,g=(G1M-e]Ak'-"SLD2VjIsY3#3Qy؜-3##PG@.4 : 94{O0^n۞LE=+(2'+T2\0$/M={`NڞSMD1L`PU^O>]T~۞uPF@*!7;)#50jQDavxvہJD=)--1;S*S<.3H;sheځQMC0 VXVkL|jW]|aۂPE?*"!(>=%6/+(|ZTT}JD<(68B`\/RF/A5}|QL@/ `pu4J{PbL PE?)4[1]v",S59ҚkS,<:&KC;'N~S5AuT*Kổ#RK@-&`pŎJr!$PF?)CU`o}YNH'vƗvzOeLD<&a~}qo<ݾ$(*A SJA,$`%#)Fx PF=*_>NvvocY@Яy^d JD;(}dvŚZ˷˿.ceW QK@.#ل%;AJw PF>+]otx~k`⻧q'KMZ LE<(zª͊*OPUSJ>+%ݢ鼷!*1J؂uPF=)CP/^\X\j۵{v`+-MہKD<'\tKzǧ(@+)ڽƼ'RYG}ND=+uγij#JOVܶE?7$ʴ׷1caOֶOF>+*ɱ=]ڶwNB;(l̜SYε“ځ F=6"xsʮ˓ OC<)'ղ䢯ŽLC:(ʝaMʛ)ECE=5"ߴdlj{$@>NC<()ɻUKXZP#A>KD:%YſרbH0SY D>5 u幃Yּþ“'MUMD<'&~ فpo^(FMGB9%LƛbWټB<3TثzpyxּGC:&\乩3@@H@ټuHA9&jDNځB<3 u[iݢp~uׁHB:'燘.8;A=ڂHA:%gNY۽@:3!tir֧mvٽH?9&瓡/::%V۽uGD=" .ӲWb;`ׁ?83 3vuܭk|}7cՁG>7"@ު.<@>@7oׂFC82 (d֔Xuݬi{~G?9"9j𵍧.7:?>FC< 9}½l#'S=81 C؆+?iԪjF?:"6]Pw *5:@?uB@; *;ف-TШف:61 >قu@?: +0S">Qׁ߳:41 :@m10]kĻ Ձ@?8!0GSPׂu@?: +9WSIOudՁ950 (2D`lhjȭ ԁ@=8!GUf{ŦỼжՂu??:!ڹtuRmNǰՁ730Һriʲ ԁ?<8#ҶՂu??:"eβunbаe¹Ձ630}ʑѦxýtԁ?=8#ٽߜՂu>?:"_ѼętՁ530sџۮΤԁ>=8#ġՂ:;:!μt430#̱Իʮ :98"(;<: Ƞ~PdNxn540"WmUx ;:8"%¯ro>>:m̶Ʊ6p6519 p >=8!J u ??8k~, nݩ775ɲ2n ?;8&@ q??8 Ht: W775Z?^?;8%C bw>?;!$fĺ@Jһ776#~CPл?<8&M  _һr@@?!؈*  ^ҁ877𩨔/ ]Ё@=8$;  c҂@C?!QJ9 (')/4G98:˥dbA! #,+-28J@>8!ҎT))-2<;=FN`CD?!"֝Ùxq ;::ɨէ@??! ­㾵ݺ~EFB"ų}ymO>rȹѿ <<=ΖsWD~D"!wfѿvFD@"tY}^:?|ׯс =;;ӶpgDGƯFEA" ƱҼcfЂv@??!xu{Vjс <::Цd{B??!"ؿʝ͂v??; fnrhdw˯́:86Ӹx|us??=!!檱²ᨮ ͂>>9 |b|x}z~q˶ 764´tջ>>:!˦ڱ˶}>=8s~iyxy{}+0ɶ753p~'.Ƕ>=8ƾ⢪ʴۼÿ*0ɶu988ic~w|hfaWO[Y$k]ȁ543vkɠqmlcYc`!e[ǁ:98ҝȺIJi]Ȃu{7:W}|Vlwnl]][N5IY90*/ Ɂw34]_u|sqba_P6IX8.(- ǁ>?vnSbmL>79 ɂk:   g4    s>     a   0>Qdz[   .M^j~A-=J[hzG /?Oao3 B?Lmy Yk G:a3iw   , \p   ,  ՜.+,0@    'On-screen ShowPcasaree'p $ TimesBaskerville SemiboldTahomaAvantGarde Bk BTBlank PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPh     0 LM (  L L T  ?#" `}PJ- *PROGETTO DI LINGUAGGI DI PROGRAMMAZIONE I $+(2) * L TRdO)4EBPicturesoPowerPoint Document('SummaryInformation(%$9$      !"#C&'()*+,-./0123456789:;<=>?@AIJGKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DocumentSummaryInformation8pCurrent User0 oint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint Presentation  Fonts UsedDesign Template Slide Titles (_x'CTDavide Musacchia ?#" `  *A.A. 2002/2003 Docente: Prof.ssa A.Dattolo$+ 2* * L T < ?#" `$J .(2  L N< ?#" `p N? 3FASE 1 Descrizione del problema pag. 2 Descrizione del distributore pag. 3 Descrizione Componenti pag. 4 FASE 2 Modello Iniziale delle classi pag. 7 Class Diagram pag. 8 FASE 3 Use Case Diagram pag. 10 Use Case Utente Use Case Manutentore Sequence Diagram pag. 11 Esempio Verifica Prezzo Esempio Inserimento Moneta FASE 4 State Diagram Esempio Display pag. 12 Esempio Bottoni pag.13 0)=p r  $   *       t        : L 3 A   L T< ?#" ` " d  $PROGETTO P4: Distributore di lattine&%$ $  L T> ?#" ` x lMusacchia Francesco 566/414 "     L T? ?#" `< , H L 0޽h ? 33 F>@ (     0D >JDESCRIZIONE DEL PROBLEMA Il progetto consiste nel descrivere l attivit di un distributore di lattine. L utente pu prendere dal distributore una lattina della sua bibita scelta digitando il pulsante corrispondente dopo aver inserito l importo dovuto. Per sapere a quanto ammonta il costo della bibita, alla selezione del pulsante, il display del distributore visualizzer l importo della bibita desiderata. Successivamente l utente inserir le monete pari o superiori al prezzo della bibita e poi selezioner di nuovo il pulsante della bibita. Il sistema di controllo delle monete individua il valore della moneta inserita e lo somma al conteggio totale. Raggiunta la cifra dovuta un sistema di controllo del distributore azioner il meccanismo per l erogazione del prodotto,e se dovuto e se presente, ci sar l erogazione del resto. Nel caso l utente volesse rinunciare all acquisto della bibita potr, prima di aver raggiunto l importo dovuto, premere il tasto dell immediata restituzione delle monete Il sistema di controllo del distributore terr traccia del numero di lattine presenti e segnaler la loro assenza/presenza. Deve inoltre segnalare possibili guasti meccanici. Deve anche informare il display con importi e resti o nomi dei prodotti. Quando un prodotto esaurito il manutentore potr aggiungere lattine. Se il distributore fuori uso il manutentore dovr aggiustarlo. Classi Candidate Motivo Eliminazione Distributore Lattine Generico Utente Lattina Non fa operazioni Bibita Non fa operazioni Pulsante Display Monete Non fa operazioni Sistema controllo monete Sistema di controllo Meccanismo Erogazione prodotto Tasto di restituzione Conteggio Totale Generico Guasti Generico Nomi Generico Manutentore m025  T/ga!9(!B0 ^W- E.4D  &H  0޽h ? 33 |p(    0*  | Pulsanti Lampeggiano in caso di assenza del prodotto; Comunicano al sistema di controllo la bibita scelta; Pulsante per la restituzione delle monete inserite In caso di pressione, manda al sistema di controllo la richiesta di immediata espulsione delle monete appena inserite. Questa scelta non pu essere pi effettuata se la bibita stata gi erogata. Meccanismo di erogazione del prodotto Per l erogazione del prodotto deve avere una sorta di  via libera dal sistema di controllo; Comunica la mancanza di una bibita al sistema di controllo; Deve erogare il prodotto; Comunica al sistema di controllo un suo possibile guasto. X| b4' |H  0޽h ? 33% Y%Q%.E,#( L ,2 , H?#" `P` ,@ H?#" `pB  ,@ ND?#" `p`B  , ND?#" `p`B  , ND?#" `pB  ,@ ND?#" `Pp2  , H?#" `   ,@ H?#" `  B ,@ ND?#" ` B , ND?#" ` B , ND?#" ` 0 B ,@ ND?#" ` 0 2 , N@.?#" `P  SPreleva Lattina   ,@ H?#" `PP , T?#" `PP p2 , N.?#" ` 0 O GeneraResto     !, N . ?#" `P LUtente(2   ", T. ?#" `@ O Manutentore     $, Z\` ?#" `~ |  V <>    2 %, N ?#" ` 0  aAggiusta Distributore  &, H?#" `@ 0@  (, T?#" ` @  ), T?#" `@ P @ 2 *, N?#" `   iConsulta Sistema di Controllo 2 +, N ?#" ` P   ]Sostituisci Pezzo  ,, Z  ?#" ` Z  W <>     -, T ?#" `  j  *  ., Zf ?#" `p  W <>     /, T`?#" `00 @ L operazione di prelievo di una Lattina pu verificare o no la presenza di restoSS R 1, T?#" ` 0 ,L aggiusto del distributore include le Operazioni di verifica del sistema e Sostituzione del pezzo se necessarioqq p 3, T?#" `P P 4, T?#" ``P P2 5, N ?#" ` pp [ConteggiaMonete 2 6, N`?#" ` p  [InserisciMoneta  7, Z ?#" `@  W <>     8, T ?#" `` $  *  9, Z  ?#" ``  W <>    2 ;, N?#" ` p ZConsultaPrezzo  <, T?#" `pP P >, Zo  ?#" `^  W <>    B ?, TDjJ?#" `R @, H?#" `@` A, ZZ ?#" `  bUSE CASE DIAGRAM$  2 B, NAI?#" `` 0P  VIntroduciLattine  B E, ND?#" `@ 0 H , 0޽h ?@, ,, ,,,, ,,, %,&, %,*,(,%,+,),,5,3,,6,4,,;,<, 33r(7CSZl s>N C~ ( / 00DTimesarde Bk BTo@ 'j DBaskerville Semibold 'j  DTahomaille Semibold 'j 0DAvantGarde Bk BTold 'j c  . @n?" dd@  @@`` D<T[ r [F   ,b$ئ|2o@ 0e0e     A@ A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||c"$`@uʚ;o3ʚ;g4fdfd 8ppp@ <4!d!dP, g@<4ddddP, g@ ph___PPT2001D<4X?, vProgetto di Linguaggi di Programmazione 1 - A.A. 2002/2003 O =l         sx,, `  e|HH(dh rҙ  ٤ ( / 00DTimesarde Bk BTo@tttDBaskerville Semiboldttt DTahomaille Semiboldttt0DAvantGarde Bk BToldtttc  . @n?" dd@  @@`` D<TS r [ H    ,b$ئ|2o@ 0e0e     A@ A5% 8c8c     ?1 d0u0@Ty2 NP'p<'pA)BCD|E||c"$`@uʚ;o3ʚ;g4fdfdtzpppp@ <4!d!dP  g@<4ddddP  g@ ph___PPT2001D<4X(?, vProgetto di Linguaggi di Programmazione 1 - A.A. 2002/2003 O =l         sx,, `  e|HH(dh  0(  0 0 T_?#" `P@0 :Il manutentore pu essere anche un utente, in quanto anch egli puo Prendere lattine. Allora erediter dalla classe utente.||  | 0 ZZ0_ ?#" `9~ g CLASS DIAGRAM$   H 0 0޽h ? 33$ 5$-$,G,}"( L ,2 , H?#" `P` ,@ H?#" `pB  ,@ ND?#" `p`B  , ND?#" `p`2  , H?#" `   ,@ H?#" `  B ,@ ND?#" ` B , ND?#" ` 2 , N_?#" `P  SPreleva Lattina   ,@ H?#" `PP , T?#" `PP p2 , N_?#" ` 0 O GeneraResto     !, N_ ?#" `P LUtente(2   ", TPa_ ?#" `@ O Manutentore     $, Z\a_ ?#" `~ |  V <>    2 %, N0c_?#" ` 0  aAggiusta Distributore  &, H?#" `@ 0@  (, T?#" ` @  ), T?#" `@ P @ 2 *, Nd_?#" `   iConsulta Sistema di Controllo 2 +, N0f_?#" ` P   ]Sostituisci Pezzo  ,, Z g_ ?#" ` Z  W <>     -, Ti_ ?#" `  j  *  ., Zfi_ ?#" `p  W <>     /, Tpk_?#" `00 @ L operazione di prelievo di una Lattina pu verificare o no la presenza di restoSS R 1, Tl_?#" ` 0 ,L aggiusto del distributore include le Operazioni di verifica del sistema e Sostituzione del pezzo se necessarioqq p 3, T?#" `P P 4, T?#" ``P P2 5, N_?#" ` pp [ConteggiaMonete 2 6, N0_?#" ` p  [InserisciMoneta  7, Z_ ?#" `@  W <>     8, T_ ?#" `` $  *  9, Z_ ?#" ``  W <>    2 ;, Np_?#" ` p ZConsultaPrezzo  <, T?#" `pP P >, Zo_ ?#" `^  W <>    B ?, TDjJ?#" `R @, H?#" `@` A, ZZp_ ?#" `  bUSE CASE DIAGRAM$  2 B, N`?#" `` 0P  VIntroduciLattine  B E, ND?#" `@ 0 B F, ND?#" `  B G, ND?#" `H , 0޽h ?@, ,, ,,,, ,,, %,&, %,*,(,%,+,),,5,3,,6,4,,;,<, 33? ~?v?\4>( F  42  4 N?#" `` B  4 ND?#" `B  4 ND?#" `PPB  4@ ND?#" `B  4 ND?#" `  4 H?#" ` ` 4 H?#" ` 2 4 N?#" `@ B 4 ND?#" ` B 4 ND?#" `0 0 B 4@ ND?#" ` B 4 ND?#" `   4 T` ?#" `  cpremeBottone(idBottone)  4 H?#" `p 4 T0` ?#" `8 Z gs1:SistemaDiControllo$(2    4 T` ?#" `eZ `bottone1:Bottoni"    4 T` ?#" `p@  \comunicaScelta(idBibita)   %4 T0` ?#" `  \verificaPrezzo(idBibita)   (4 TP` ?#" `P  jd1.changeMessage(PrezzoBibita)  )4 H?#" `pp .4 T0` ?#" ` Z b d1:Display"     B /4 TD?#" `@@ 04 H?#" `0 `B 24@ ZD?#" `p ppB 44 TD?#" ` B 64 TD?#" ` 74 H?#" `pB 84 ND?#" `B 94@ ND?#" ` =4 N?#" `0 @B A4 TD?#" `0B B4 TD?#" `@ 2 C4 T` ?#" ``a  RL utente verifica il prezzo di una bibita*(2* *~ D4 B?#" `@  E4 H?#" `   G4 T` ?#" ` Z  [inserisciMoneta(valore)   H4 H?#" `P  I4 T` ?#" ``]j  lc1:ControlloMonete$(2   M4 T` ?#" `P `  XvalutaMoneta(valore)   Q4 T` ?#" `   i%aggiungiMoneta(in valore,out credito)&&  & S4 T` ?#" ` p Z  YmandaCredito(credito)   T4 H?#" `P 0  V4 T` ?#" `   ]d1.changeMessage(credito)   W4 H?#" `  ]4 H?#" `P 0 B _4@ ZD?#" `0 B `4@ ZD?#" ` B a4 TD?#" ` P B b4 TD?#" ` c4 H?#" `   d4 T` ?#" ` j  ms1:SistemaDiControllo"  B e4 TD?#" ` ` ` P B f4 TD?#" `  g4 N` ?#" `j  \ d1:Display$ (2    B h4 TD?#" `  B i4 TD?#" `P j4 ZP`?#" ` *  l4 Z`?#" `  *  m4 Z`?#" `P  *  n4 Z`?#" ```  *  o4 Z0_?#" `   *  p4 Z8a?#" ``  * ^ q4 T8a ?#" `Pj xL utente inserisce una delle monete per pagare la sua bibita==<B s4 TD>?#" ` `  t4 H?#" ` P  v4 T?#" `p0B w4 TD?#" ` P B x4 ND?#" `  PB z4@ ZD?#" `P P {4 H?#" ` p@ B |4 TD?#" `@ p@@ B }4 ND?#" `@ @@p B ~4@ ZD?#" `p @p  4 H?#" ` 0  4 H?#" ` p B 4 TD?#" ` p@ B 4 ND?#" ` @@ B 4@ ZD?#" ` @ B 4@ ZD?#" `p p 4 H?#" ` B 4 TD?#" ` B 4 TD?#" ` pB 4 TD?#" `  B 4 TD?#" `P 0 P B 4 TD?#" `  B 4 ND?#" `p B 4@ ND?#" ` 0 4 ZZ:a ?#" `9  cSEQUENCE DIAGRAMS$  r 4  fGHIw?#" ` P r 4  fGH_IP ?#" ` (p r 4  fGHIP ?#" ` (p H 4 0޽h ??`t4t44{4{44444 33 <b (  <2 < H?#" ` p@ < N?#" `Pp" < Na?#" `0p KPremuto    < N?#" `    < TP?a ?#" ` 4 q-premiBottone / comunicaScelta(scelta:integer)..  .  < N?#" `8   < T@a ?#" ` Z j&bibitaAssente(idBibita) / lampeggia() ''  '" < T0Aa?#" `  p  M Lampeggia    R <  fG6HEJI6?#" `8   < TPBa ?#" `OJ r.bibitaPresente(IdBibita)/ Lampeggiante=FALSE //  /2 < H?#" `p@P  < N?#" ` @H 2 < H?#" `  < T{a ?#" ` - [@ iSTATE DIAGRAM - BOTTONI$ H < 0޽h ?o<<<<<<< <<< < <<< <<< 33r   0^  P'RdO)LaBPicturesoPowerPoint Document('SummaryInformation(%$9$      !"#C&'()*+,-./0123456789:;<=>?@AJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstvwxyz{|}~DocumentSummaryInformation8pCurrent User0 oint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint PresentationPowerPoint Presentation  Fonts UsedDesign Template Slide Titles (_x'2Davide Musacchia