ࡱ> nvmգsގPNG  IHDRv,hlgAMA pHYs.#.#x?v IDATxOnaw ; [4 %]=K%tinɥ˜ `.;NLnqkU_^Lp6+:{$UV?_Tzi|T"@(!@(!@(!@(!@(!@(!@(!@(!@(!@$IB!4}ו:s-<+F(ϕ/_OqzzEQ$#mۖZDi:5mrr⺮ZQ׸kvgUm&M0 ᒁmxv`:( gggx鿟of;]܃ZP0 @q;Ͷ̣^*SxNGwI|]]v݃=ƞw0 @'an_$I^7n"fѨwy&<<"}vk'?ܐRmFH 몫k2lwY,mqeY֓$'{Q Taz]۩ox:IZVDI%(9L fEW/ҧID-zq| tCgV4j͡67I/t^'VO{[w'-΍G1jT Q[ |ns4"C驔<IIԲɣo<,(͙ͬ5wҫfyaw㩤r6^p3U(͙,/Ϝs7OtHe}7~])@9ѿɶ} UaEP*qNNN `Lv4MV|2_rbJQLϓG_f:8 01FCz$I:NVz׼WfY1MkuLj$jY' UQ@%!DCvїZ- C̘c>hv-/K8S#6LDzzcNG*-{br{>C"Vr.mFz}(eiF/ms&z k@٢(j4 Pi6[*REQ]& Z"%eXyЖmc3c4piFZV"f.մ<~wy|e(`(PV5UWWȣQqJ+@9 0 a<D3<.]-|E E>oB\^9V^.@.Q@^Ϡ ஜwhc918˻j))@Q$)m!W3'XW&|*e8v@T7 V.1Hg}JJr:JTa(D&ih:9GGGR呺bĿ$T]@!p8u]2Fs tF O- @BͤisjL1mZ w||R1LaGu@ C%le8핗EQTB=ZkϦ=O*So&Ti(a$bPM\zghE iBW[<ϫ4k@.( YEFrlNeY۾v&QLcV6}e:B\4l۶GGG| ŜQ@t r6wMoCS]sٮ{Pt%Ɖjw:mdqlj^W,Q@23I$I<8fw]AIwkb8Fѐώ L+$g(gMCW8AOm`0P]{?I4FQܔ4M/"iAo0 dI+Z6GmoۦL&{B1Bz!,*EdpvvJڄy49#uu*Tikf4MF)y|CQi"2p=˳/>\۶j:/ Uh U_,j Jf2|n.oտM8ud"Vҹ;6x,usչqչ( I@L&@)E&T]E.rۙm l6mk+l%M"`֠e ).(wZu]WmF#Axylz՘6\a4"˦Vi:a;۞i:oAAM(+?UByB[ͤiO(aLH<A. \F#)x0zhe7k@jFCu@iha-:fl۞fJ6r]w>k鏞;>ZyG!DQ]P8(ʣ$ ^o>"mssa9m]un\_5FXnu۸K5Qժ`^*f3 cx<{M^O~>~|8`YNVVϖl^,:H Bgɔ6ؾ.qG X,E߷m۱ϋsѮ:7'Q˲\.ّ DdR"=[,m*bV aOt8ðJC.kGi*Bi߾Kܶ[nٶrv: Lv%EQ)qhvUB(!q<;<<>6(yόX >}4 //P( VjeqfQO پ"OuCja*V3@o"*+" `(jZ*b7I~_0GGox9Y"[nWm۞dr~~>6IhG+;j? W^6FsXu |tFa$IZVi,0*}TN{se6RQ9,zغxرxC.! |Q$ ~_ ~v{0z>V_?~&OBz^BIE[,|1C0L3il6;0zvrrdz/VYIԲ,2\ BFEjZAۺm=aڏ&Õc=ȟD-:;;+TA Q.KX+vESbG9Oְ^+Zj(VA ֲ$dh]l۞fyZ¶bAJO{[w'vAořItzO:ЗIZ?jbst0!<7ZOW&Q˲tZbF,D39k @<1B~;5gW{k z&X BS&LGW^6 j4}u~2'/ ;vY_6]؊+8a:t:Bt:8c``0P=Lys{ю}M=?}v?>J=hhGu8axtt|,n߿_C h۪v݃GY#ӻuoݾ~ԸUFE azIӴjb VkX,f0!fGr5'o-xZ/2[v{XDq9u6DQ1Qha:.A(ֺ>Sf?&=ϛ0\Z8ry/C6=z =8L n2=K*m\TuiA䔋ԧ޼c.VbVK 7&r{֟R{OO=k, Kucf8Q$ \բ.m03 f0Ʈ R,˶n}߲{0}0X,k (qSWQ6 !,fyGcZ-dP[;oSWP2< ...K(09_)rJk)%08"ܮFONNK((31AӚTCphW.0OgS>^A`%̌=Qj4^c*R1B\91@pLČ>20zp8.dmAl;B<㜷Z-БBgyn( :k4f盅,ζ~}v3P/IP^nUJ FvU$˲0 Ffx0(ԋyQQW*`0X_pXnpTJiH CFaͲ;UDҵ"2-F>0&hw4RnV+`86laYF-8㜏F#*nEъ[>.15@}O(LLQ (@1Ft:7ub莋V 0(h䄺mygG<[,~SA,z,QaEιI΂< "hX{kj<y^n1,h7oP8\+*`W,;;;#y}Rh]F$3`QЅ߳K~XO)l6|3hu=kZeХ8d- vfFA#`8RW6|SJe*fp]}s|>CڑG 7AJwu{^ͦSIA@]Xz7qI]^ɧ+ q=v^ u:<<4^c ;8NOOwzQIRv[<$ e;*,{쀺͙ 0>T;h FcaP|>$1Ʀө&ŀž}E]=1;c# @Fq'Rqu$ uu)9AL]=?M~l,P.QpAݮwV!D^~`0 >F/k {}Fo;_tVLdC= 0 W}_,ﴪ+ *Ϗ~1|Qbr/0]\\PP&.>FKl6M4m6+o0]K_ޓ_S$r~s}D]˶J:@\qտsi]$-bA}~:S2ւ Pun% "/8[jxȣ+z/PA)nI v |>hT}?I+P>?`rJ]ϒߺLE)v5L<0`+2HR)uV9&}Osԅhj+_:@85̘ixoYÆ&0{'}/XCv'Qqx52WI(c:+g c>Fs-'Q~fFBJIOt]Q*VɩIԦ h]aynD2GXWt;mO) h-yN~]Р P뻀=1ikMCan0Z &zK)1uKBȉXsR||L]h a~ijҺNO^nZM,t:aM!H(\jr@dG+V;SWB\/It~J]w{%u-<99.0j3R?>B/AhG$1ht0 of_Q@ m[$Ѱ*(֞eT 7ID((là#ߛ IDAT';ު8'__\B ȿjH<}G{쀺 A0N =qΧ)Dac{Z-kަ)u ;m 9qiZ_EQ߾_ \ue?y3+m]iz`hfЛ(zD6K4 C*d2jGOUPcOH]5oW5[-]bimzoAt:%x>=̮縔RaVNJn`0m`ff1W`X6ч^2lVDaۭ# [B u [}@PC/+ b茚D~(˲v.Cma`mQ tDZ qu97( Q,B% 0q" <=-j¨MtUSJi2'z0 >a>FvuN#0KqJ>:iZ%ÚbJ<ϩRAk-z}t}D]ǚΨ5ՑRlLeFfsa(ڢ&<ςK1a:qu(N3QCO]¶,6AH6y\ \f(6(-.M"b5UHBW]n$+Nqm|6  ]Y-_>ޯ*YZˇڽu32JrW)1teLBF46Pwm5kS:^qEmZV!IM/%aaւ rtkwFǶl&0͟_}!A/ǿjmkkK!,˚f CF(PƢjUf"+i W(TW3]G+4tQ(T<^atŸ;͂ (z7~PFKd/g}b7$˲~yt F-Q_,}b+_F_;_Y) 㮒a8?ж ?Y֤̰f*vq2 3zXyyY%IrrrvnK5 -h4n~#B/ǿ?eټ6>|v`n4J)۶)b2Z.۶x, xm۶mrvM3Z.c:1_Ne\ELFYe̹1_MvvJ=|zyy۶ 5@-ko!c5ksCJ ɲ,d$gOD=GpL_:@:ɪ-FQ,ˆal6qxm4IjqIjҥijS,e61^77ٙt I?y{)`$I(*:jec2Z:]ץ/vxm02eYt:NMh$I2S2Z#catYwS@yl6nJvuQFyEqa(ʐ$I}bEf3>quPF+t46PLFxz N<}50UG0Nh:=kw)}u5kS: yO:3,˒a & ,5t'A؆ڥ(yw:&)+EVG)ѩw,QFQy{4MEᘾjV>[z뺣H:?B:_OD(1%1ZLR㌾dgm}>*B{Ѫٶ]硣eYaּ.Z&Btz6ѹ4Mݮt QF8SѣeYX)%0:n)ڋ㸌W++:(ǙNEu]XeaKqШc:ʳm{:VKj MvvIV:4EQ_^eܪxF4}!~۶+,`Ot_N!i[XԱ6 ۶gt 0FQqx<i@IOV%F$I4mF#26G2Z;fh8N?|7m(^H:R#hcZo/;Rjoo|e#Jz:ixcA(e$I|^[նmu8(A XI{Ly=˲(*;7)j +{t"QLɲ6pXCilEELcatڤxh<}Ծxtxi/`ɪ-F4q#@etYIZpXgeY& P7LFߴy˲#h2;N q7ͻGNOo3¸ /2ByW6;Nta,n;)= jDfS w] 0Xyt´mڠ>[N&[QGqLFxz 0i2kG}Z59( J:0&(IeԤR63dYV&:G]XtCY)`S/R MqcEuK0tiP%$Ѯ1q_])m0ٶytm[n(Oʤ4M(NbF׬ +wtPFEQe)^B%W@k?gapG3]AKGx,˴x ,<@:³阹(JTmOۤ-dg7ٙt ao#Xmu4(ҽqƢκ#&TӲ0 S2 (ɪ?(*wvB_-iSFQ:T1=㹥ePFgL1I*5PCm~%BQT^'AZ嚣o2HG(F1P,2Gxd)2 zbamag3ztP &oP2꺮]&XHGeY$i8RݻwK@1Vk?4Nx wCJG eQ?ARJcuW7!8ƈ4pLm4ivQ+24] @:`_,+fv$)'w:*PF0 #<8\6NOSvaKӴ=Llyyb$\ծ؅a(0EtakڕNViCa٬@}Z&AjPO?gazJӴj Ê?7N~ş/leS)SFaaQ(N#x%p8t:/2^W -F)dg7ٙt ao#ExLA]T5,) Cb1]w3DQvSwW2(˲<agvOV%FZ5ѹ<033(q hۼd;3 CJXtCY)iqqLi2Jt*,˶o*R2{)$m_b'VJ)^ζl&֤q yGX_44Ox Ư >v-SFܲI.Q'ذKp͢.Qw,st+˦Zf{Х6w)˪4 RA xlYj[O6GzA~?o_:L$=x{Fɓ¸ K4 C*z e KjuYN3y ЧsAw<;,{ݓ|t$IRX9;d3c2jAfAa _v;ZQxce{m^Nc4ь3Y:0"&edF?c-ʨeYQxy<=N! iQ=~8';eٶ=㟀~,/Uʅ2(g3(f۶zF0F# O7^z%ؒ$ pmJ)󶷷y o_V3@=M=KhT*^4M~V33NDQ'44jhߟ׏J ,k4Q"(zo*i2B5@[\t^(HtUUF\g/G)1EQp a(qR)Ijvo i7.g]:p-&Q,[kjUv4 }( q1XO2a~_C'ĆQ^E(pQF?@&VGLLHvB:0cV [q%0ce{m^NLFR&m9eJqkD3Qi (v6Z IDAT^b( nj"πg(nqN1Nz)0IEضmL^KGer[[[lZqKE<=N!wO:03QJ1PF/r<8KjU:01R)t]PF/JH8 P:06>Y,d7Gы: ot:IH(7vww#L}cJeq}+( Mb2"mŭ@}GA[]g8 L50Bv9X菒$ P:Ŕ ZYLFYG)5eTJu]z}k+ <={?N!&k(fY; ((w(?*X4Sݮ ƢKj 0CQy`N(aXtHY:0(a۶k߶mA BG#*c1w~'AFaͦt+)A!ƷG}k3>/'/')1aݮ7=A8t MQF-˲8.}P:P l]R+κt gAhG `Q˲DA|`ޞIGB>[ QF-˲##MSq> &k0V:UJ CQF-˲L*p&}`N^ď30 u]UeԲ,+c1s†e{m^N̗Pؐ."ʨeY2&}`Nat`9::Z{m\¯ (a2 (v=wS){ttIQFMca,`NG0ʆQMќ)Qf :ʨiX{V芳VS\ `4ڶ=tFn,%Ple,mn80<<>~ѶO>Ķ2j7oJGEBPAP"D2jYf-mY1en(eY&m@R *ًt aLF2jY!!7zr> l^[q֥S;(eҶ1ge_g, @CQ2hh #EQ˲,3M^&O^&OSHZR=(PF_ޖ#: M(P|ߗFY'^`z-{+c ӫ}|(k@&M8(ʞU 8rm\xt]F!bJmF#^ďJ:;~np_: &I0 :et{{ی&aGJ>XGjZTZqzz4M YrwR 'CXG9Jh4r܃$IժT*vJ/T*IHLm6)}/#Hbe;μ+vvv\KPF/ pkkK:- w>RcHh\u,il %yWw h:=#&jYV$j,((84bUg`J~;_JGh4 }NVt:KضvS|8) /ziZl(jZ᎝2z95?*RVSs5/_%jZtDPF+lFn`jU4?8>͋2t1G)9ҳi*{((án}4ͷ(s8{}8j) 2Zl(M2/U.`^OxqZ-h4dת/K{W`윐tk ǯd uhDEMԲt`^tbuPF'l6Rnw8r0Cb>r?_פSs*4M;t ݱL?vus0RJphď1NnFf9op8  LeMtYT^pMԲ,1I^/)\# ޷Ik2ut,a8:љ(`0}mApzzʅJ{ӲF :0h΢(8I;m۶m{ssqu9<={x럤S`, U*$ISLZ`uߞk&I9Y ]`(\NcQ, B7Q˲0ٚKQF ,AI(w`fOR5e{GN˭[a V/&F)=cQ,"eYQIGeQʹFnQ͘wxx(AGQ8ONJ9e, KGG2]$(ss(gL3fě/(s{xEm&}PFѯ8Ea6æqϨ8߼t||洠Rjccò,qlvG2%P'wHGPFq0|/]&IӴV7Q˲8T*܅([B9͜R|dMT[`NG_&OS,Ov\פSf&c>H(9г Ҋι%S>677#2Vgr :OϞKTFyo e||QFgnuP)㭭-\zTJQF/EIXtnKWKt @yfeGEptx29 Prz]:¬ sB^+ E5g,zۻwۻ'y^/xmU(SJD%Ib=2ycƧ@ {Պ.НfS:8f[2:C90cy=4;~σt]m۞j2:c^x7惠>Nn꺮Rjccu]q:WLF޷6~C(\eV3:g{sKKpet&Q^.HZ;OϤSnpL*p&}Ei@:Ex.ERʘƆtrIkS(1f˳1y?0{.r;q8^^id&d]/{0Ln ][rt^H_I*eA\RgT6bd/69|C8Ni{i ONӉhȮb^eM&UG?躽}*]]: 8d2YtFˮ(0]żljXveFP?], \RT4zub @~No4eW1H@QC?Uw0(R{bue(hMvX,4MΝ;#P e]tq?ʪ%oe=e p>]BF&$[_~zD3 ö]u´^g:&5shxٖ]PBwܑ]BaD-,ˆa\;^϶=$4Mgm4FhLk/˲^i6VE$1$3KoD^Z¨C_E$1#مLy`9N:%"0`vbYV,'xZ X(N0,|ߗju:Z04LkƻO/>]*8!¨f$i4o۶=,˒UT]]7/ Va'{aX'iZ;֓p_$n+If00 }ߗ]a^/zp jz?D+㯙0'-{FN !z<ϓ] 'kx<%by WΨTK/mW M$JCP֖ s%%aTuiDדGK/_k$ܗ]#W_ۛkV]YWZ*mq8hp~pA%@YUUUΨnq:9{U`!wkD̍EaYV9ZڶM](¨3 Qɮ{_{_]۝vko{ pT9NPUec;FBb޴<(*1yt*j"˲` ۻ?+D $Q@eޤ,$hQiae\D/>My@ .a.ׯUy*0 -晗?"-M&ra0!DR]ŌLӜL&ʬ'~ :Ae98W=ќBW ~sڦO!t:KޞVQTUo^Z5LdW1;c?7?xܐ] -4Q~&7 \)Ͼ}+nSb(PIuUL4xm^-}q|7o.1v\I7u?#8yB$. Qx:۶*7D{u>cX(%so%#ԩSK(!3y<ޗj%@z482qLD_*ӟ~Nݭ}o(DCyq' .aT!Z`B<7>TmnSb(jݮʗG;O.-ߚ2;w.ga~ ,;.LzTeD 0)/-)g}$ܗ]ȯq/4?:^]U!ɣ$Q%B4h8OKQ@oO{_<.sD Z-q|_A[Q@WJM).'Dp8\eY~N`I! 0ᄞ&}4-0ݫB/˲^[i6M70(Jno^h~Tqr+@HEQ]R˲+0 ȮT?^h~q<,;Vi>)h8s4MuRRwFr%%R!=޿ۛ "I4M^G8c֖8eizy^JNnSwvv!jΨB(j4(FО/ J(a|̲7YT4MS!DW+˲FHURȮb^\=%м z KKk4 ha8¨rt?7Ms2Mx/ijǃ[;٢?k|AYi^;txiqLOyxϳG?Ѣch<36~Kˮz> @v!ΨUoy=œp?|x<6P'H}ɶ8ig ¨yXq, |0͘'Gmi֖m۶m=4 J Uʍ01!`0X¤83/Ͳ,V[8.X/"S(aT{Yz :tǙp8,x4M&RʩSdP8gΨ, `2t:yq/V*jif,8hټ<:l!E0 }ߗ]E1\FB.s]7aeY$wI4˲7fS49|fh4M l/Ij:@2\MU8QJyͶ l^GJvRV\z]iu^@_Q.MZ&k}a3ʻ\HzE%Q"O(D u(8|QDqh1!£Pg.<4M1sQu۶E}X(c1\.vg2VjUHa*AQhEQ,K)C !A(%BHy#>8Qa?n8HquƘv;>>d`Q!,˺pmyz_QikH`*X(LIH<)ڶ$IPUF1| (L/ öm˲p^Lo6MAS9zdr&x0 ʲ<yNvmvC?eY]qjvGv ((M|||9{!u]BbTQgXq}c!eYާђ$= a dKqOGܩ8qD$UaH$hRVѯ, yNa*.Cvf9>tqOWea$0 U` 9Hֺ Eb>:n8!$QP(bAas.N)VNMTӧŨyLHQ01EG6M\.9*@9UU黑gsԲ4MUIPU`?.a=O6M~͢(Gۛnҿ0 %BH]8{0Ivmm۫/KfdW8Mӈ__B׻s3Uӱi~]Zvcv{AA`(ׁ!A~O[TU3ZebPHcUU{CJs 3t^UUz&v8ﰅƶ<ύ٤`g%ܪ|#A`i88qڗ9q\.?Lo;EiclG< CE mIt(+ Cny󼫿,j:X7u#c,˲,>>N8&6PEhn&5Ƨ^y^]קd]u]#qb3- AA 6T^4p]%cC`AG bgz\]p8SaXxs}{ 0ty'1Mӳ;AmOBQnwβ,Wiwm[Y۽*ʤi*,8Q(,:^OYVOۢUUAx((\zRvfpnӜj%wإ:ߧCQYQ4eڶ]fi0(<0 4 Z7? TPL<%X_4ME=,kًhKW!,X4U޼0 {NssW_Ey42vz֕8AOaNJG7M3qOD$*LGUSYq㔸a>ˈO@"QxDi*4cPcZ?5ŻZ>_VA,qis^~tIApz(3laDX$G,M)\M<-϶oqg(<.uy¡$Q }.'J$3tѠUѥqs1Me`Y(<8BHYeYޭE*u=bs$ˠuYn+C,q%Kbt1tF0 `Ap8${+X$mێ>oRgFaݎ[{jCu޲m<eY4M۶Md.)!dٴm)> E)Uљq}ܢ(4g8;G]וUD)A!g$-r_9y޶nxXJk,П8ko[TzHn;yrF.,Xe"膎VӬC:F11 j:[vXkůۏJY,J_4GptN)UUu%&.@iO(NEXx1X# Sϟ?k^|W| u]wg5Ji8Ў|8wF-<qSmSXE龇 [ꋥۏc6(FatγALjxw? $̄0 Gv S$Q˲|y``Q`|4A%npHP繫_a1N@xj0Al<xۍeSFQxt) &Ӽ|>D<$|MQ`<_(쒍l}I1ȃDͦ( Ae~g3aqmݪ&QǏqQEQbbpe?^]]k$o< 68l6IVH urssœie9N-g`Il6=<<<>>Vn]pk+4Y_aөyT_uh< IfXu<.7eys!(p ͍ohYrnv.___z{a `(p 0,«zxsz )YYmm CQBIUJ_AIwJME`xQrAPgL&Q]h;A0˺"崿i;G#6hmo1GǸF 6T4I8}_aZmMi1VQaLjJj[m޸l+C4|> K;o^/Kaex8-Usυ>nuE|>۷of$׿[RˋCؠw??f[eCQ0 [TFp8e\e[$wwwC.BT(ʄ'Y6F,:z EՕÅ$Cwmo[#/e\u+\(fu+Dju=N=$ f<=\v] |{$QfFZYi_Փ]NHhe9N]c~ȇLX`QDZe(z<7ڰZO$ (1X%bb$~] ]p1F&MaŸDC6F-o|Ϩw'6D0>*$9չŪDZE0 WUQ;6&0ge ܇1%IO2(FvfCQy'pXϝWȏXmF^]r0|)Dru]eRUUUU = 0 oooF  a8 ^IDATҮafYC|[p87Q=0 ࢨ맧7 81 @psYRiE?~` %FpCY}78F (!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!(!r 3.,'j<52 5 oǷsgEdeYenqqDZŖ}*ڪ Ukd2( ߿q_^qq|>Y MӢ(imB06&MSG/B{h5(Iy7R^,3rm6M5y(8M,ˊ8i6|vA,kHyq54}k>xk,kդ#^(0\VF8E$ISq{/VϴQ|6otemO(lsQjF%]~ojиZ{"o`at[ ȲH{I q.Zggakgx(ul6NUUuss3δb1ARl6s3X?]T atECmCut:|kWr9A;ڇ,z:ӌz[PHݒߛ%{ +aQf݊XjՅ#M$ZoŢU Idg, v^ւiڶ $IeY>??o[zxXr"& 8??ݢ߿WU*eYՙvuu5.{'?׹/lKg/ |{~:εD 0˲$IZ ZOOOoA (]DoأZz\ʃBM}_ZN,t7mjx8;R9O0j]MZmϴfyUtҚ_DwC=ӶvKWWW_?MϞ%?,ھA6i 5EFnWd2;TR0(FHs8w,aywnxAcLM1^agFvW]屯,sAt^Izqtؕ5ڣۛlz>fmQno#A3 Ϋ/.Fݖp>Y+|[ 3r[5F6QY x>=tk~%{Սpv>{ Re4HDoX׵ͮV+'/9iH7-atOD83pG_~8jE-}G'=L *KYI\[XnX {׮`1y0 r{0껲,O˛7@2wxqT;Ɵ p9>5ˢoiqz`6>P 7Ӧ$>z=GOOOOڿjJFМ9*.k+n Vϴ$I$7zgaF53?\ʲY^6ZXǵ!o<)ܐ꺖KS7OmϦ3J6 O*¨|2"vi#%',iA=) t d clh?{' jK\%Wr#FAh L8Gn7@GN(,ei"M?GNrlkuaqۡga]TCsKЍUZګ2Xz|&ECԸ:m߿KYa`#> oaYNυ??il#˟*^ThDlv0 _XÄn_1!UOz xN^罽A!zʷ*d]*AHٖ߿K9Ծi#>5?yY݀UQOIj?az;\t^Cx80c2zU}Sta>jNQX4 'QOI6- 3>8|3-p8Lp/. _yމ:?ip0=¨<26F+?#D+YuaqT-l[T&|2t>w=Mګ ĸ:;Q dn F}%#\+ՆVgÃ?{MW $Aa]8>k/kpBèAwsmvUm;\NSO$ə&LlG%]ov~q^O ڶ^{e>TJG #vppUmCY׳y$4ə걧zmd\Yl׎FM-Q gON+cبWs߸*v+a^___OSa_%3¨mxƾH7>f\ڛWx|hmsUo{Yx'&̅fnBjg ]dW}-vM3¨w*s穥COl,O#zGxQXI8$I`}7{n{䧱(LًӡO />uq~0Cθ sqt2V+yDuT6>Pw4M> *̸AQ:yTn׮oШ 㣪UZ+ O>3UoKn:j cqaqPGVw?l\fYmzǧvfX [m///;R>[k I$QGg^SUYer08T$}zzZV^r8YV~F&kώ³ӨMƌb5RqR;9DQT1,˛zd{<-HګY.S-(0GimGҺgl6w፽6AQ$/c6)jl3`Ζ"EqDERd^_Ruv$jx]m0:^Q0`R=xZGuk㋾<:FqE%(ڼEQ}Am/D7㳝vSQ5^Ң(j^[?q0ݮ( 0ESCKiڪ>]E N7 )B]K C{v"i̛j'E)O_aG_o(aN¹,NVi[믿l6Ǣb!+ټ98OʩLu;y]׶u>lhT׵WQj6{[Ȋ2$~SßidjEykk S( .-+\F}$]y5E+#:|G뺾0 $0oɟ$=i:ϵVvmW|)|SeièoP> Pk, #"Im>k2')z]^Ǐ_D#epܞ!'υr)6,F=%{U? ހӀϴ-hQ?FE/aFHCis ލ~)/n1!3M[j>KNgmfH8OKb///O `akBW0 4,KiWړ܍)žzm-(n4z^֗?Cm.m6R8!¨״2ūz'z\j& C_slG }Hʢ‡48,ߙp6pV;i97KI-F=D6Ӓ&ɯ_]ʲ\퐚dN6 [EDhUUZg\RY_.ܭ;6Rv5Kpu(+#.MSbIB^],yeU kc$PmG5k23- CH.&#"\Fpg]mGu@IH at9ӄ-1uN t䳍g+qIn N8 ݊Wމ$؊hU Y83-Iδ>7Q0 GFQ%VaqZzX/Kv>%WMatd:d zWUcektݶ8YhLϮ1ԡ8*yYyFL$V)QLuYʏhL9rAo;qGF_#GAiEQ?s}QYu#ڗsVקFF kp`9矪pnuۢWiqqeYVUjoEQI}Yݻ9Im[:sɭ뺪?"z=XEwwwiy~3Mx2'bkMm3r7ƓZool&\>% ösB;n0q,Qgls+ڣ!Mtw"s&#hF㭌oOU$KD9s 3:Ja?IaD#}nL55ѓgZ5m#UY,;JEmg۳:.cm]Vb¢㕦iQ;\,\58TcvC(:f4Pl8<n;];He1^xxuM=ܓ G |;ߝr>Eao?(gr.U׵pCW8y.R+u r$@0:nAl6f3]P-ճRZ~(ԁewWߣH: zvvzGVbO 'OqN= V2( K??;3;{[`GQ7ڮ#yuU---_'/r}~e0<{K3{g4hWi5XAg=ӌ컡7KaϨNv~xH? % 7Model for Supporting High Integrity and Fault ToleranceHBrian Dobbing, Aonix Europe Ltd Chief Technical Consultant November 1999*% Background  -Real-Time Core Specification is Released High Integrity Profile A subset of APIs in the RT-Core Address requirements of Fault Tolerance High Integrity and Safety Critical systems Work in progress, led by Aonix Draft circulated for internal J-Consortium review CALL FOR PARTICIPATION e.g. from TelecomsZ@8;\@8;\ %   Characteristics   Partitioning - single processor  Partitioning - hot standby  Partitioning - distribution  Partitioning - interfaces  Partition Construction  2Static Linking only Need to verify statically every byte loaded Native code execution only Temporal constraints prohibit interpreters  Control of the processor HI partition will (normally) contain main() Low-level interaction with underlying board Intended to be user-configurable~,+X!,+X!  Memory Management (1)  Memory Management (2)  Allocation context re-used for each run() Useful for Periodic, Sporadic, Interrupt tasks Special allocation context supported Programmatic reclamation for Ongoing tasks Allocation context must be non-fragmentingZ*/&,+*/&,+   Concurrency  4Periodic tasks (threads) Scheduled by the runtime system Sporadic tasks (threads) Additional to RT Core, run by signalling Events Interrupt  tasks (handlers) Triggered by hardware / software interrupt Ongoing tasks (not run automatically) Often background tasks in an infinite loop 0+&+ 0+&+  Task Interaction  qRemove asynchronous task-to-task actions Stop, Interrupt, Wakeup, Suspend / Resume Important for replica determinism PCP used for Synchronized methods Mutual exclusive access to Shared Resources Tight bound on the blocking time (no queues) Used in preference to mutexes, semaphores Atomic regions used for interrupt handlers Can signal Event object to run Sporadic taskl)L"+-)L"+-6   x  e Task Interaction Example  ! Scheduling  Priorities as in the RT-Core Interrupt range + non-interrupt range Normal FIFO_Within_Priorities scheduling Task inherits ceiling priority when in PCP Each task has : Base priority (at creation time) Active priority (for scheduling) Higher of base and any inherited priorityZ&dB*&dB*   Sequential Execution  5Need to be able to support : Access to physical memory addresses for example RT Core IO class and Device I/O Registry Exception handling Needed for failure recovery (roll back state) Finally clauses Tidy up when failure occurs Must exclude any non-determinism Needed for replica consistency in fault tolerance$5.!2$5.!2 6 #Fault Tolerance (1)  THardware-related considerations Keep standby replicas as identical as possible Eliminate constructs with race conditions Predictable execution even if clocks vary slightly Allow access to physical addresses e.g fast DMA to compare / update state in replica No addresses exported from HI partition Simplifies switching to replica on failure ~ /]#2(, /]#2(, U $Fault Tolerance (2)  )Software-related considerations Checkpoint objects at specific points Save state in durable (persistent) storage Allow access to physical addresses for this storage Detect and recover from data errors Exception catching Roll back to saved state Tidy up in normal and exception case Finally clauses~ &_$,% &_$,% * &  Summary (1)  The HI Profile supports : Partitioning Controlled access to code and data Determinism in sequential and concurrency Small footprint runtime system Proposed features : Simplified memory management scheme Including access to physical memory addresses Simplified threads kernel Full exception handling and  finally clauses # * $. .  #I$.H A " Summary (2)  The HI Profile will be : Compatible with the Real-Time Core definition Compatible with the Distributed Middleware profile A full solution for the entire range of software requirements6a>a> g   F   ` .T3f` T3f3f` 999MMM` lff3f3޲` eoHff33Ҷ` ff!>?" dd@,?nFd@  d " @ ` n?" dd@   @@``@n?" dd@  @@``PP   @ ` ` p>> qi! (     s *(>  > T Click to edit Master title style! !   c $(>  > RClick to edit Master text styles Second level Third level Fourth level Fifth level!     S  c $)> k0 > A November 1999 2  c $d*> `0  > X"High Integrity and Fault Tolerance#(2#  c $*> `@ > ISlide *(2p  HA1?h#! ! T$+>xaxa1?P~,$D 0 i9... ............................................ ::6Z  B޽h))? ? T3f3f Dads Tie.pot  1)0 (    s *49+ P  > T Click to edit Master title style! !  c $9+ P  > W#Click to edit Master subtitle style$ $  c $T:+ ` > E* 2  c $:+ `  > G*(2  c $;+ `@ > G*(2  HA1?0@p,$D 0  T;+xaxa1?@h,$D 0 D....................i   Z<+xaxa1?`,$D 0 A.................iZ  B޽h))? ? T3f3f  $( SW r  S <+P  + r  S T=+  + H  0޽h ? ̙33  @( 5 l  C +   + l  C T+  P0 + H  0޽h ? T3f3fw   '  PT ( `0( Tl T C +   +  T 6+1p X Partitioning 2    T 6T+1 pP  Z Minimal Size (2    T 64+1 p H Y Determinism (2    T 6+1` p   hCertifiability (2   T 0+p  o Fault Tol"        T 0t+PPp  l High Integ        T 04+@ p m Safety Crit      dB  T <DjJp@pdB  T <DjJ ] jB  T BODjJljjB T BtDjJ pp jB T B.#DjJ? o jB T B3-DjJV jB T BDjJ$eTjB T B2DjJp;pjB T BUDjJ 3 jB T BDjJS H T 0޽h ? T3f3f-     `<m ( Cl <l < C +   + F a`f < a`f < 6T+fjJf x cNon-Critical e.g. JVM (2   < 6+PPjJ  `Critical Component (2  fb < 6' q fB < 6D@ A` fB  < 6D ` fB  < 6D `   < 6+` f d"I/O devices Physical memory access# 2# # lB  < <DjJ lB  < <DjJ   < 6+L` SOther peripherals 2  f < 6"a@f < 6 < 6+ SNetwork 2   < 6+`  fControlled Communication (2  H < 0޽h ? T3f3f   ` X pX0  ( C   Xr X S +   + dB  X <DjJ X 6t+ SNetwork 2   X 64+PPjJ0  `Critical Component (2  ^b X 6^B X 6D  p ^B X 6D ppp ^B  X 6D p  X 6+@ fControlled Communication (2   X 6+PPjJ @  `Critical Component (2  ^b X 6`^B X 6D p ^B X 6D p ^B X 6D PPp  X <t+1p   aI/O devices / Physical memory(2   X 6?vP  fControlled Communication (2   X 0@vP  TMessages 2  H X 0޽h ? T3f3f*  \j(  \r \ S @v   v  8 `  \ 0 fB \ 6DjJp \ 0TAvp@ SNetwork 2  `b \ 0p`b  \ 0@  @ @  \`  \ 0BvPPjJ0  `Critical Component (2  `B \ 0D  p `B \ 0Dp pp `B  \ 0D p   \ 0Bv@ fControlled Communication (2    \ 0CvPPjJ @  `Critical Component (2  `B  \ 0D p `B \ 0D p `B \ 0DP Pp  \ 6TDv1p   aI/O devices / Physical memory(2   \ 0EvP  fControlled Communication (2   \ 0EvfjJ"  dNon-Critical Component (2  rB \ BDԔ`` \ 0FvP  TMessages 2   \ 0TGvP  TMessages 2   \ 0Gv  V Support for Distributed Systems is being addressed by  Real-Time and Embedded Distributed Middleware Profile *ui 2s `     H \ 0޽h ? T3f3f   ` ( # `r ` S Hv   v F P  ` p   ` 6HvPPjJ  n Critical Component ,(2   ` 6IvP t"Remote Method Invocation Interface$#(2" # ^b ` 6@0  ` 0TJv`` f g#Parameters / Results (No Addresses)$(2$ $ Xb ` 0 0  ` 0Kv 0  SPhysical Memory(2  H ` 0޽h ? T3f3f  x(  xl x C tKv   v l x C v  v H x 0޽h ? T3f3f  E= d( ` dr d S tv   v 8  @ d @  d 64vPPjJ @ a Execution Stack "(2   d 6v @b  lDefault Allocation Context$(2    d 0v  V Per Thread 2     d 0v0   ~*Stackable Objects plus dynamic call frames&+ 2* +   d 0Ԇv  iNon-Stackable Objects& 2  dB  d <DjJ  dB  d <DjJ@  @  d 0v ` iNo garbage collector!&(23  H d 0޽h ? T3f3f  ( 3 l  C v   v l  C Tv  v H  0޽h ? T3f3f  p(  pl p C ԉv   v l p C 4v P v H p 0޽h ? T3f3f  t$(  tr t S v   v r t S v  ` v H t 0޽h ? T3f3f  kc$l  ( $ lr l S v   + 9 F  Fp  $l FP lB l <DԔ p  l <vjJzp [ Periodic Task  2    l <dvjJ@j p [ Sporadic Task  2   lB  l <DԔ lB  l <DԔ   l <$vjJz \Interrupt Task  2  T  0  l#    l 6vjJ   X PCP Object 2    l 0Dv   Qput  2  lB l <DԔ@ ` `  l 0v0  Qget  2  lB l <DԔ` `  l <dvjJp  Z Event object 2    l 6ĖvP  Tsignal  2  rB l BDԔ` a  l 6$v   Qrun  2  rB l BDԔp` 0 a   l 6v Fp@ [ H/w interrupt  2   rB !l BDԔ@` "l 6Dv0  Qrun  2  H l 0޽h ? T3f3f  ( ^ l  C v   v l  C v  v H  0޽h ? T3f3f  |(  |l | C v   v l | C Dv  0 v H | 0޽h ? T3f3f   ( 3 l  C v   v l  C v  v H  0޽h ? T3f3f  0$(  r  S 4w   v r  S w  v H  0޽h ? T3f3f  @$( ?4, r  S w   v r  S w 30 v H  0޽h ? T3f3f  h`P( N l  C w   v l  C 4w   30  v   s *w|`   ~*Needs YOUR review comments & participation&+ 2* + H  0޽h ? T3f3frl0"-5bDP8NOYhWpy}{wnwCcە#7 &3Oh+'0R hp   , 8 DPXNo Slide TitledpwNC:\Program Files\Microsoft Office\Templates\Presentation Designs\Dads Tie.pot\ Aonix Ltd F41iMicrosoft PowerPointoso@(x@ @:@PTl^GPoM  O('& &&#TNPP0> & TNPP &&TNPP     'A x(xKʦ """)))UUUMMMBBB999|PP3f3333f333ff3fffff3f3f̙f3333f3333333333f3333333f3f33ff3f3f3f3333f3333333f3̙33333f333ff3ffffff3f33f3ff3f3f3ffff3fffffffff3fffffff3f̙ffff3ff333f3ff33fff33f3ff̙3f3f3333f333ff3fffff̙̙3̙f̙̙̙3f̙3f3f3333f333ff3fffff3f3f̙3ffffffffff!___wwweeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee쒒mnmrmmn쒑nmCmm뒒nmmCCC DC lm o o@o@F @@@C@@i@@@i @i@@ @@ C@@@CCi@@F@@ mC@@@m@@@omo@@Fm C@@@ @@@ CmiFiommC CCC Co@@<"@@J mf--&TNPP &3՜.+,D՜.+,    ?On-screen Show -s9j Times New RomanArialMonotype Sorts Dads Tie.pot8Model for Supporting High Integrity and Fault Tolerance BackgroundCharacteristics Partitioning - single processorPartitioning - hot standbyPartitioning - distributionPartitioning - interfacesPartition ConstructionMemory Management (1)Memory Management (2) ConcurrencyTask InteractionTask Interaction Example SchedulingSequential ExecutionFault Tolerance (1)Fault Tolerance (2) Summary (1) Summary (2)  Fonts UsedDesign Template Slide Titles 6> _PID_GUIDAN{84F2AB7D-CAA9-11D3-A0D9-00A0C9992BE0}!_ John Weisࡱࡱ>   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)0cCb@PicturesCurrent User)SummaryInformation(@RPowerPoint Document(Q3DocumentSummaryInformation8