WMI/Docs0000755000000000000000000000000012453214032007205 5ustar WMI/Docs/WMI White Paper 2 - DMIX.pdf0000755000000000000000000273435712453213337013524 0ustar %PDF-1.5 % 1 0 obj <>>> endobj 2 0 obj <> endobj 3 0 obj <>/Pattern<>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 4 0 R/Group<>/Tabs/S/StructParents 0>> endobj 4 0 obj <> stream xݘ_o9ߑ~H_!%R)*"!U]2j~(iV>>ٲM:=dP}UE]/l>g`/|nߓ*u"eT(&&2>_>[ۭw~2+J:՘_{wWC<2;EvQ"Ay]Xe%є$)(Zg% w D:'](X [h/"du)$ByA,!9]$Xt,>t;.òz E~XSo},:<,.dt!.[ ˩s`]SgSg E~8S[:mD|8S[uF.ñZ_j/:.Z.ḇZtyrJ%i+Pʊ(rJ (rJQrE-`1\`JbJk#KYLH2KYL ˣgݞ܏{o43 eN֢śjUuwk,@VU{sixbxE}[n\y]=u:>kU[o8l!Nf6/~`Hc[!u_]qo]֭&qj;cf!c)A/Ǒҧ ,qX=[k1xks\EtEɜ-l#Gs5}FT5SDE$M(z"sW|suM>EpsΩU.z,mImdPhT IyXXkk> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj [ 9 0 R] endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> stream xm…Z`T.lEA #Ko@|<`Vnl|kQc}klSbG8{vzbO sG/I/)rktojdL̝އ>ܓ?} 59DG(Dž/Zt$NL\ɒ;E=)ѓiї)w징@r0'E E Ra\@9!"M2Uy-WVA5E)E%E)7hVjU+[C+ӞյҖ:@olC`] ld8txt6Y;-nLJ endstream endobj 13 0 obj <>>> endobj 14 0 obj <> stream JFIFxxC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ("e逛Jfg\/ ڒ#{?G8!Fe:I#5[S7%~siv;nv?[ wL:GQ^&u~[;V?5 \泱?5W}~'BZ2nlþeֵb 2xLnXuN=?7u_w?p?^t0\$9Ph0+TXHOw'*M(((((((((((((((((E6Z7W"ANSv"u#M^N{VB_!wOƼmo7so-~L{x='%uIn?ņOZ-7S1 [4-\,vBxbRZg?6l%ooT_ZOP~ZgGY* r`IC5ie ެ(5VrזƑQ[ =} hE±=ZEbUf Ems#D_1VA vGֺ*}_x/_qR+I<-V꒡F~cTqu:icw\ݑ VSrT"_@5si F~WUp?5o#$ǝGQWv\WӟJ.$JɟPfQ5KJPgk1V?83twQExQEQEQEQEQEQEQEQEQEQEQEQEQE7{Wxg&7{(ɽ;ZcXɋ3:cC֭|4Oj8ǩ+8ҧSIU`Cn5>6`3f| ~נk bvIFVSʐWϿx8ٽ Oc'J2Jn} /JdzvEwOKu?5OӵSJGK ,"r2kڕ'[ #ƅUKZwE*VhUЧ};LTvbsGJ:{?YKDB'3|{wQΩtY )u2eS?uܺ9;|J/K\?Hտb||Q [*èDdvAs"N\rYF[\>p{X׺"\{X׺" h;,$K X-Y[ujKc~)@͎7?\cV^j \˵C G?Ż}T?ҽʿZ_|ӻO^+=Т((((((((((((_NweϿO~m+[l5ԻV)Jktܻ-&񗎒K̺)9Ӡ+7`:,zя-πٕOuOA5'~5߉?Y?O̟^W8KxGE+SW|Ik:Wz#?Qx5M,a1yݜ~Bxme#|k"߂_5z}RqO NS[RB9\ {Yo9]1x.!νwOvcq~GS좺υZip*2.p0kvEwTFCkB0{X׺"\{X׺"4c+,.~77# c3RĀ$xoo ri2f8+oμ6֝u= MuFon忾cYgcNkܾMI'q%ۙ=g!7,cG8OB% j@C1U$peԛ袊`((((((((((((Jos  /1Efܻp#L -r@Wy^wKᛛo{0k+Zi_F6eEOdM|_}Us]Zo'ܕ 7ЌW~ 9-`w.>Yɥge?(i_ʼSOWTE{_?P?xĎ|sTE,Xx|#/WW7?J_5z}\oľ_ӂw_?cPuo^D[O'koѹݾȋi]$Ѝz<|@xUeZjpJ]!<3L뻻>(4a~:+ULxqUGPO WEmG(ʝҾtVe0Ϩ5_ $o ݙ]Er:{u˨04Rc- uUhTdͱphƴQ\WSQ02We0 `@ ҟu`]]O$Ih 1uz&x'OtF]Jᇾ= A|< y jp,m{S>+,.,x6Ѭ];(Uefϖk>t$v}PM| jxnmݠRQǮ{j)0fӺg&2Gx5ֺNm`xbO/{WajwYB!ªL ؟QO_½|-kq\ÏA[N,9)nc 2~ >O(}XIrRW9rrFQE%Q@Q@T?h\,h̻2quMEPEPEM,ΩUVM]s _QRX#8`884Y薊(aEPEPEPEP^SncG5 ź(7wbYwDOgkl5OgV2f~Ҕ&[Si3m|I8kݳ|-R9blH5^"KK5( ~!%;z#0OEy[P) 1q¢=WL5)'"fw{Яoekiûyqf)7}+lgK$Zy$¿VhPB 訡@KE;(N]2g/-ݞ%'UJk`i=`BG POSE!w/ؽ֛k3 ƙm̓vqD#"*k\HU;RK3c`3nmL 4ݠ1b?-o?OJ0O㊻Wcn^yL<tK RIhsNu#j@ Pj_ /Uu/]Ms·|4?3Zi5;(y iA,ޓC5x'ȳxS,[L @()b{]n4F6z{5GoL:Ek^_] (Oz_\otSz^xMHk{"4)s@NmrWoRi5+hFxu{)-.,i-==f'&;Ք+j~ON?vj%ˈ\2n=Joĝ6l.. %J;Mz-"MKR/6~|?'5cwOC Nr{5۩wKrj_iZu܈^#;VlVeΣ|{1=+?J|(qϝ ckdarykFbWoLi{ikbVi_[+vh56^p=Gw>+- RC ȥy /@DudːA9N_Y>cyecf mS/g ֝^Nע-Ix65BXr=sr>#e֫KKI;nd\g#ұH>݂w~w3]vyxQ1ZsZ_޷bIԃ_ipjqUsSLҡҖUo51sH_z֮iWquS}E+3P((((PLK}{MyGC?Z{.x$hWS }T@`A_ &{^TW$_qx7iOᏋ*U-u!5QWX6z{;"?_/\Og;q*2:, :a5̰H?7*Jڶ]N~#9H{WϪ(Ӿ)*ݨ1]5XHOs vW;Ꮳ-ݏT8~-xq.>0;?EX5eYiOw—+_̾󰥮 _>@v}ϴ@3Ytȷ.\2:ZWd鴵ןYA}K\>$J~k='[]@]v1.y/GT y ѯ {iYow]PkJ0F¼f6 =  tO% H#u垩ŏIj6*U|ތ~wv/˾%m5Z:}LU.)m."_jGˀMxJ=CT]NgGξhe{ܯeZ3F 'YS72C;O m==tK:֩,Uh#iך!P"(;POZI'}ݿ7j+&~Zh?eC1yCv=I4k4gr]@`$g :ZP+>yss_S^H[CK}cP5+ExĎ6??ZܗBo[kFYBЈ6{3MՓLJ e##RС];PIKgE\a;-c0j:ԭo.kfa޺J(U$gN2O$ٲvGRIcu+[\Z 3]}*M'J-%mL𭆝f/=儧zzLTX. ޝ+M6NIq1ƥ8ժ(۾+h(aEPEPEPEPEPEP6+_fj0YB+͵1HYS^ڎս,MZZEsR-O/ kzQ?l.GܿʐpA0 f^hM?kmfvgf8g$+[%^県֨n>QvIsn*O{<DŽQ^~N_^eo_4<έxn({_ \?Z?ҢcMQ[&Rj>u I= ]6\X?>}Ym>";J犽±hM4S+¦!CWug:r!>OLg-`hǥL}/:6t"q{w7y?Z䔜u**V (AEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP endstream endobj 15 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 17 0 R 21 0 R 23 0 R 26 0 R 27 0 R 30 0 R 32 0 R 33 0 R 35 0 R 37 0 R 39 0 R 40 0 R 69 0 R 70 0 R 71 0 R 72 0 R 75 0 R 77 0 R 79 0 R 81 0 R 83 0 R 85 0 R] /MediaBox[ 0 0 612 792] /Contents 16 0 R/Group<>/Tabs/S/StructParents 1>> endobj 16 0 obj <> stream xo8У@7 ڴ=CMKn %ٔ"R\cv$Iinuq^8-7՗oW?bڬ/.W/?NO^]啯yk*k z8=۪fB['uu?qzen~&ggϖW5?ӳx|۹cUW<=y5$YLKLSϊ)qd[SHlL f-rvpf e}^o6pST-$U},YeTYΙЪ?;CƖb]lᣘ}`ߊ%eu- #B/m. R.|ř߯l8ò%rPpҰ5&g"si_5:g2iCaތV#Wo_V Ux6)a-MT2cjDkkMYIhE%c:Uw#LַjYmoG>ܠ]߅_?=ISǙӓ?;ƹlhO?=.ago|.%FlͷkЊy܀?;jfFT3~`YKҷsW.*e&KA# g)HR %I՚yNB9i͙3c 2׿I)0GiwB0Sj7g!z%>eWEtmϮp\RqD׼Q C e *o5^{q<ߏ#HH J`aj$ Ji,MM&/>y㲪uسg>}0kcN{h<`GAbŠ^-muu s  %N!>z޽pd]5_^6Wp8͕W /_GZ*D~ DZ@)0"7 `\Ӡc4Te_IA\\z1 1gW]o6SN _tօZ `~S"^Q| GoF˅ŹtT˭dF[p$J$iؙcQF0@ `h!L5{vdMeדlW)l_0s;h죋{7=:k*ƅdYpdP=9^AoD ÝA$ J0qAlLR)KiG1c PyL=LN=x],)RLwY_`xx\\{Z3&֌:\CỲɛHqKҞ MfRҠ4LP3NRJ2iP2:d. PyшL4mV4s) Y*Ѻ< Hu7Q-P3èEV#ͮl)O!>MʒLC܂cQm(PmP]P]H$"2/)˔WJDiRpë$}&WXK8 +=hR$ǰ *KlX[G̠ B AY@@\3D$(1B@b@ҒKC VYTVCb;/Ґ^U.!IˤcjHiR;t;j6ƶ7]Uی~(Nǡ,~-8TV?P~PZ@A#GdeWQM:~} lK~l Oݮ]SZPd2NuNlIP7'm<7@Rl H )=!v4CQ\77y=91[ܲv="c*Jz\/4fxJN K^;LFeIvk\IuX"A){IP^i )MriHy1-n*F%D3a^Xy$ڎ(s9)L4*%% \ xY5yaW=.3{ګrj+". xup+$!uJA83@* .'@&FP0KW47[4&^Z6S aYXTíGI傯$cW{$J#A9 'AӠ A7J &AiIP(Yk(=0nĞ(Oe4=\e ş([?R,uFXM:{$]C$A5kv լ!5D THj)P$*; 8oШ^tT⶷hEY *<T0a1q8ЬN*Jʒ z-8)ZH9OMR0XpNj(ϩӐ`9jBN".3ɉ,94Lciar4~YVC&w(F|ֺ}k&D['4qIYʒla"^ E5D!@InPȞuPyxJ)҄JDvYCTBeS8oШJtT:U!X%mxwb|Z[S:> 9,7Dei5?#n$! >ArS().n$J7HPJs$(vt+JrwQj jB$"S-mEBdE8oШHPS$/~l:?^P8 *n(N4(PaJ%%08 0 @)CJN , !1QT˄b`{Y(ϝf4*ŹSv}>!> %}#,k,e #GȂF.@,(PmdA"rԄ`DZ& F}<;mИ`h1\4tO Uᅺa!}@y v@{d5$({$ JY\*$A&E*r L%W UhA*Q02h-vKQ\>^_ p(ׂcQ.%HPcBܠ$(kMRgA)P3ѼĎR>/F 4/Dest[ 18 0 R/XYZ 48 741 0] /StructParent 2>> endobj 18 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 88 0 R/Group<>/Tabs/S/StructParents 26>> endobj 19 0 obj <> endobj 20 0 obj <> endobj 21 0 obj <>/F 4/Dest[ 22 0 R/XYZ 48 741 0] /StructParent 3>> endobj 22 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 93 0 R/Group<>/Tabs/S/StructParents 27>> endobj 23 0 obj <>/F 4/Dest[ 22 0 R/XYZ 48 665 0] /StructParent 4>> endobj 24 0 obj <> endobj 25 0 obj <> endobj 26 0 obj <>/F 4/Dest[ 22 0 R/XYZ 48 556 0] /StructParent 5>> endobj 27 0 obj <>/F 4/Dest[ 29 0 R/XYZ 48 504 0] /StructParent 6>> endobj 28 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 94 0 R/Group<>/Tabs/S/StructParents 7>> endobj 29 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 97 0 R 98 0 R] /MediaBox[ 0 0 612 792] /Contents 96 0 R/Group<>/Tabs/S/StructParents 28>> endobj 30 0 obj <>/F 4/Dest[ 31 0 R/XYZ 48 529 0] /StructParent 8>> endobj 31 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 100 0 R] /MediaBox[ 0 0 612 792] /Contents 99 0 R/Group<>/Tabs/S/StructParents 31>> endobj 32 0 obj <>/F 4/Dest[ 31 0 R/XYZ 48 351 0] /StructParent 9>> endobj 33 0 obj <>/F 4/Dest[ 34 0 R/XYZ 48 630 0] /StructParent 10>> endobj 34 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 101 0 R/Group<>/Tabs/S/StructParents 33>> endobj 35 0 obj <>/F 4/Dest[ 36 0 R/XYZ 48 714 0] /StructParent 11>> endobj 36 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 103 0 R] /MediaBox[ 0 0 612 792] /Contents 102 0 R/Group<>/Tabs/S/StructParents 34>> endobj 37 0 obj <>/F 4/Dest[ 38 0 R/XYZ 48 741 0] /StructParent 12>> endobj 38 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R] /MediaBox[ 0 0 612 792] /Contents 104 0 R/Group<>/Tabs/S/StructParents 36>> endobj 39 0 obj <>/F 4/Dest[ 38 0 R/XYZ 48 681 0] /StructParent 13>> endobj 40 0 obj <>/F 4/Dest[ 68 0 R/XYZ 48 741 0] /StructParent 14>> endobj 41 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 160 0 R/Group<>/Tabs/S/StructParents 90>> endobj 42 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 161 0 R/Group<>/Tabs/S/StructParents 91>> endobj 43 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 167 0 R/Group<>/Tabs/S/StructParents 92>> endobj 44 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 168 0 R/Group<>/Tabs/S/StructParents 93>> endobj 45 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 169 0 R/Group<>/Tabs/S/StructParents 94>> endobj 46 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 170 0 R/Group<>/Tabs/S/StructParents 95>> endobj 47 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 171 0 R/Group<>/Tabs/S/StructParents 96>> endobj 48 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 172 0 R/Group<>/Tabs/S/StructParents 97>> endobj 49 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 173 0 R/Group<>/Tabs/S/StructParents 98>> endobj 50 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 174 0 R/Group<>/Tabs/S/StructParents 99>> endobj 51 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 175 0 R/Group<>/Tabs/S/StructParents 100>> endobj 52 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 176 0 R/Group<>/Tabs/S/StructParents 101>> endobj 53 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 177 0 R/Group<>/Tabs/S/StructParents 102>> endobj 54 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 178 0 R/Group<>/Tabs/S/StructParents 103>> endobj 55 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 179 0 R/Group<>/Tabs/S/StructParents 104>> endobj 56 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 180 0 R/Group<>/Tabs/S/StructParents 105>> endobj 57 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 181 0 R/Group<>/Tabs/S/StructParents 106>> endobj 58 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 182 0 R/Group<>/Tabs/S/StructParents 107>> endobj 59 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 183 0 R/Group<>/Tabs/S/StructParents 108>> endobj 60 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 184 0 R/Group<>/Tabs/S/StructParents 109>> endobj 61 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 185 0 R/Group<>/Tabs/S/StructParents 110>> endobj 62 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 186 0 R/Group<>/Tabs/S/StructParents 111>> endobj 63 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 187 0 R/Group<>/Tabs/S/StructParents 112>> endobj 64 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 188 0 R/Group<>/Tabs/S/StructParents 113>> endobj 65 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 189 0 R/Group<>/Tabs/S/StructParents 114>> endobj 66 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 190 0 R/Group<>/Tabs/S/StructParents 115>> endobj 67 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 191 0 R/Group<>/Tabs/S/StructParents 116>> endobj 68 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 193 0 R 194 0 R 195 0 R] /MediaBox[ 0 0 612 792] /Contents 192 0 R/Group<>/Tabs/S/StructParents 117>> endobj 69 0 obj <>/F 4/Dest[ 68 0 R/XYZ 48 690 0] /StructParent 15>> endobj 70 0 obj <>/F 4/Dest[ 68 0 R/XYZ 48 598 0] /StructParent 16>> endobj 71 0 obj <>/F 4/Dest[ 68 0 R/XYZ 48 340 0] /StructParent 17>> endobj 72 0 obj <>/F 4/Dest[ 74 0 R/XYZ 48 741 0] /StructParent 18>> endobj 73 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 196 0 R/Group<>/Tabs/S/StructParents 121>> endobj 74 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 198 0 R] /MediaBox[ 0 0 612 792] /Contents 197 0 R/Group<>/Tabs/S/StructParents 25>> endobj 75 0 obj <>/F 4/Dest[ 76 0 R/XYZ 48 308 0] /StructParent 19>> endobj 76 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 211 0 R] /MediaBox[ 0 0 612 792] /Contents 210 0 R/Group<>/Tabs/S/StructParents 123>> endobj 77 0 obj <>/F 4/Dest[ 78 0 R/XYZ 48 545 0] /StructParent 20>> endobj 78 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 218 0 R] /MediaBox[ 0 0 612 792] /Contents 212 0 R/Group<>/Tabs/S/StructParents 125>> endobj 79 0 obj <>/F 4/Dest[ 80 0 R/XYZ 48 204 0] /StructParent 21>> endobj 80 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 220 0 R] /MediaBox[ 0 0 612 792] /Contents 219 0 R/Group<>/Tabs/S/StructParents 127>> endobj 81 0 obj <>/F 4/Dest[ 82 0 R/XYZ 48 421 0] /StructParent 22>> endobj 82 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 222 0 R] /MediaBox[ 0 0 612 792] /Contents 221 0 R/Group<>/Tabs/S/StructParents 129>> endobj 83 0 obj <>/F 4/Dest[ 84 0 R/XYZ 48 227 0] /StructParent 23>> endobj 84 0 obj <>/XObject<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 223 0 R/Group<>/Tabs/S/StructParents 131>> endobj 85 0 obj <>/F 4/Dest[ 87 0 R/XYZ 48 741 0] /StructParent 24>> endobj 86 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 224 0 R/Group<>/Tabs/S/StructParents 132>> endobj 87 0 obj <>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 792] /Contents 225 0 R/Group<>/Tabs/S/StructParents 133>> endobj 88 0 obj <> stream x\Ys8~wԈ&NU)W%NwEmXF߸OڭC!On@7g$̿$QȃXʐz{~f>ARcízi~>zJD,@j4k _󳯯K&!*ԨC[;: 󠘢V&zfPϴW@lO]I zll2(n10 c؂DWHdIba8ֆn,]&,D18S~̏G%pGzȌ!B(ŗ  fI<{vȚ>'ʉ` |˞P|WIpk4G"IZm"Io18kgLz4Jyq&y[,5CܡB3,hFڴHڲUZi2܁ f \!U MJ9&8%R9.TᡩSd[g!<w >0d^!C%E#]0 p<nz].2Ý 'g(iߡ[w`7݈˪w\ƚ[`8cglaYQQbpx@%j?ɺ6*oo-uh}|7<;&H*WDX%D$å4[:[{ٵa^#z5Y6E*l͎}R<65B#'z?cR I^ ہ0V-:-k}hm&I֑$˜K IIܸܲݜ6;#,t ? /9H BZoQ=o"X`%JJfu⣞j1( >B*^I7fDâ.%N$% lef5E]Ѕd i@ "b{SDB6j.;nMv@ͦyTr5dw *gp-5- *eD1n-@RO 9]VZ|xgGͼaK_A s29+se\OA$e831m)-Rܺx&-}'zLs*w)ink_[4pSB`Sf4P)|6<')ݒHUjQDX*^ҷf `g؇EXMs_3 ocbO^fI IYjUA&I A@-,&Own=lrѨlwb[m[?$]][6 }ͻ06a8fVu#.Θz(6H ^~j$},+7Jsh^`q[a+^+(ؤ9JO0j hJ&:^U&b)8y$5fmڎpKQ9?`5V583ڨr}KO =6rR6 G bܚyăe#㞶#p6bPJkMܣs{Vf]aRv.ZtRܔdpZ jCO!WݻMHyDauB)Jg <7xPx*;fB[eˈ# Wh6 B 8vv]"o s՞^ABAARIA}!8۹l?2l '8Ib::`U5F9)#2\>X`J҂ N-XP~]ޱmT(-KHa.cj'Y#+5pBL8E>KxJԦp^.(\8Q$ dM6QM#{+VQ\exq%/!{N⪾bri?-3@^.Ss}i%Ư1g|mN8{&'SB!w'QR֔.ūupVr(;&cd4nwK:e\f*H-&ZiF ifGz#j}}Hx͞w,42uQsGD:-<+ %y 9FT//pZQ\$ҞN)m(|ay0(VC y³` oy\[& ~<!TQ0fF|Z/4Vom=x͍ 9%*c7zP42:vkk0(%P1WPs\Q/}ӓiS⭻"v9WJ9[C M:do]>Bm*ekP#+ sp!X"o <ELiQBFpO1u)osc\Gz8f|̱e>4Ͱ61̳ *%uY S'd^@LÐ}BQ5>ǮPݡ D LgfMO~28MKfPm¡ dV8%Ivp2T ^C],v 爡Ʃ/hRpp)`xpDN#8_ N%*ձoa?9@q#¡t77똋_2ZF48/DMzP1ի_K]"a@pv|ȆRnK92h+ d]NBAWѕ)ޣ.3dXTaue9)O=ȲꚬlhT$P7BhlS[X\ejpfb}5˾O# /Ot Ҙ&o%N@U16|Iħ_Q;w t)/=:N޵x)Ä8|(d*>4:@ endstream endobj 89 0 obj <> stream xc`!0NGvi3I 39RsTV L47B$b6> stream xc` #X Ąr$ $q栘b, endstream endobj 91 0 obj <> endobj 92 0 obj <> endobj 93 0 obj <> stream xZ[o8~G("u_ IAm>7زG{.Eʦul9P﫦Xeyr~~~|=,d̚b_8n?./><^^\N<./?ᄞ8qtwY9+X㟗?f7+ṼY3bo*} ~<ߜ]^|NSO&SNjȿɫmȍѬls!۲!Y+\a"͎D'c:7uԜ 9n \=w#JO2[/AC*)g^d4 yy&HrŸ0Oг0JCXqs{J`-iѐ|?u4aM3fJ v>>:a41 1& v#XDƑ+̩6-!}䤙"qC)/x;΀I9MEgN|%{D7~_:`Xmz.ϋcxΕ DB~q*G)1$ pP8 >iҺ;Ҝp*D'qS`ѬFkA_^K f{XVtVyg6aX^5w]J`#Xѷ`GcKrHn*s(=M 拲R=#Xg@prMhYG;J|7TZΉn.Z?cq4"ly_eb[dU&^f'VX0ZB&'LDXsIHpjߍŸفYt|(Zx4eKHPD`m$#)z:-Eb-qOqcVI (s[dH*X[NkZ:'^[ipфn$LF]xuQ ѿLwߗO6ѱ;ɖ>7}B2rߝ%fKz8_a ) /w`KZcC1M(|Rבr7IvbITD\J:T82=W:X3r58@~)8ۧ/w≝HЩ։cVOʭTyD ݑ?!'CejXa'UQ:G r-F0 ߡ;dU w!R]sՂK/@Q[2 4#̪HcPP<̽|m6,=0<=?LMi)|;s'OTqǍ'ZU "ڌGr]vY]f;ncBi\OH.hElWayu;l^hYUmh q߷X 34_ 7͹uN| X:%B7`TaՋb{ֽ[ُlfEW՜#vpI0kDP˽@A,j {U~pDD/ ȋ$MUR2W?q3Μ[ x\F "!PO91 š+=[>Tbz*ލ-ѯdm]REŶCv>ض֪定G 9z{ZۑЖ?g>o#NYʤ{ ԯ c2$:_LUzߐ$OA46"\$F`ZB,LRR& cJ:TkFXkSHK,j ՙz43a3ԜY4EF*2^ jnT]kv@R^x%)ܩ1_ų&Ew֥FaU8+:P1_+IuޚeywoJ58S]X ,þ + @S^& d9@O2ZlVK@):-&L)[gh L\[$xU95*賩;t5 +RI8(ĦvҚ$I]mQ+riQ9}tB6 5G| =o7m9I N\2Isq(taMHXX{f,쓣7+;f9,l}Y/iݳAH) 1BR_P_hpWmb̾;LSڠ('AO l}Q_NkbAweETt6G ,hx3D8S 8(W(QLfǼ9mfzRG6A3iS-sQMU~Duտ'_k-sLKYS WQ* ݀.S 'ߎ)-!Cz}`u$5@A>lWNRÕptN-gp[nS2/xMAGׅAE݉L"ݒ0jX6^%֪()ٞ֞'5[ўAQ7XY2|X ev9VL#TF4[!>j`VTGF^뼱*sMЗT׷:˾"nw#7<.O ɂ^MmHϐYĶK}ExmlTB$OF^rsZ.5Vy44o#)!0:Ywf:g|8u>2gzmt"Wn%O|ҭ$A)xNF> :]1| .'/T5\FLPM៹+ CQEW1CKn m.ZR9w7zԥS2S]ꢘ;G5I~L!e}uu\/\8Y\tNA:x$M.$)]s5]ixg_Ϥ\P$G۹?uT_L4u*I l{$ {DP{tkOV{=5eyˤ*NZ+A!t% O{5 !+ endstream endobj 94 0 obj <> stream xZYoF~7Gi0ټ =p2bA.n$J!ik?jlvSlJS2̣͇)Vq~Cr|y~yz;,o>E9o}y{}w{$yZ]_ ǃ‰<7t8vy]_ox%"tWƟ__}|Lgf:b+g:&jߜ\_+r}e]; xK OTgS HnS)ڲfg;2sc+$؏K59Uv8/%XH[''"?] yym^p6?Q|ß0wQt;]·fp0OhR‚ saJ'"7Ln(ni^8scA}w6`wčvȢ(]aY _4Rndߥsx@ 맒Fj?%2r.98к〝IM 2 &hU5tEɢe!؍R'7.!hDN=#W$1&' JZYq(nӅu,n`PQYǾ%uc#sQDw˲!@6Ƈe mx¤?" } bThЋz?@ L ~(pu Sl͎}1 KTޱ8q 8[.̭R} X &[o%$ {NXK!j,(nw%kQpH4; _6.Qǜ,wħdWm+‡)˷$Rr#E㎸;BGZ57O>FY{EYO%B @gM#7Mj78Z7^R C'aټThͶؐJVDfd|Aw-+X }G̃xAhοO1 )8<1N80D`PL ;!l +FI]oݻ񶳮(ߔ$oREd}Y, NMrM8##̀sZY9]M X+L&p1Y s* kh7fr_C]С";?s4Jع7Kg3&1"9"ϼXuZI`xPD 7/0g毴6idmj q|.\!KB2|@V {3NmO=7T݀dZ:(3צg?VhB 0Oh'nҦSTHf u* . oy*8 T44arEkx/ i>T"4t*cI$σ2Z^_{5 JaJ;ψ.1`]89PyA9fǽȆ#'g-LeKΘH %7Z..ɔF 4ezd Vg'r >dݲR1t {ӗ,< ^c+%/-foaP|惙:MI'S?=>dparһ zߵ,Cnc36Ug6EMcUQ>ͱYq?Ή5f;o_ Y|guW*hy P_x޶AOhNl%!d($inջ6=Iyo D3-?cNBsbKB^؎z c7ib6گUAig&[ٚHrAZ2U~r^%癯J7Y x`mQɰ.VA\hAx(L̝+2s6\oU'77/diƴƬ!X`E9tUp}#B~QuҨ,$* ZS>LTz;$g<( LTǼ_&Ik-W5=XH\QbZV 0αW6/3Ԥ&-lG҂+:[ vz~^Uzzq2F>zVsBs{ 駔R8ʻ7aZ<,OT;\ sXI)^ɷwNy}PDric<&kN[W j% endstream endobj 95 0 obj <> stream x!x, ,0YPpA B\Gӓȶ<:#GљyHg dZΞZ1u(&Iצ M[.;דzqgׯ_CdMӖvGW~ h>s=CPϫ-t}+M |jW[ʃ4%y}z^m+Ҕ8ayg M|jW[ʃ4%y}z^m+Ҕ8ayg M|jW[ʃ4%y}z^m+Ҕ8ay>`jrQS.ZL 剋t:-M\:&%888X. Bڪ 9/44,  eIi-A| lUZZM8K dX eZHSy <.A.MnIgRbCog*>j?p^ 1ǺLoQl,`]-3`pOblʶ>"MC>_% 4 u@ xH5«_9GMj?p^hE!'T.Md" 1]G>W͋qϒqDƒ,ףv iJ$"*s5pLAWtW\S6TOOr+ݩ 'OOH/ݲ.p8Ljt iz$'3M9B_YpI(1f'FRj5իߧW#k MثltA|c3 >;-2A_=.AɹͽxX淯4D^l<g_ZAxK }ܫ)v2g‘MsrTk&Kr w<Ȝk6\dM)F0T.pH{o)wJ4MF<4lG9$HV6d3TjW[CpMA )f-tvvr+c2˹/~v k1S3 M| HW0T BWk xq BAܶ ΄O!#Nrn>-g >C=S ,.W0i}⹦\O١9!f9HH4%8CPϫ-t}!vE ٢8Vݢ1*fz L7cl>+X(ޑX,s%xC -ר~z;sn k_lƻ|!\1ognҶtB[X/ mH>ϻ6vө4>[ʹlUwh= 0~;ה!Z{l*I{ъ ">6ݓ@kZj͔43 _kl^0跍P}QLm0I1inwY} C{= M|ʃ4%ܛL6q2~vGW)qP3j ]_yA}>CPϫ-t}A< >C=iJ0T BW)qPP3j ]_yA}>CPϫ-t}A< >C=iJ0T BW)qPP3j ]_yA}>CPϫ-t}!p^~VkhPף+4}󟮫0<;S׵xF+vEy}}!ݣZ Zܨ0e@Mvvvȇ=DvdDF1;k(U EvQD搝Bo)slPeIBo Rdn( 7켝T]CMٹ[NNNޕqy;]khѶ7oy{r>.Qσ켝 M|dDiJ ;o'jy;QA<ۉ=Ҕ8AvNyA}>vvσ4%y{)$999iJ)S}OTJ t+;o-Ҕy MqAɃiJ׵4%Ody MqAɃiJ׵4%Ody M3L0;"O%9z=}Ԕ&%_>"_9Ҕ -2qٚNS~=-F3pss^}a&)|xNxO M)f.zdp"ŖQS23|KjHS,h*ʩ!dK)~jwz)UYh ]/3\o|].d7_eO>q\\l&4SJj jUё)%*0 M)fc@P<(oߢ얙B\oy MqAɃiJ׵4%Ody MqAɃiJ׵4%Od3dZHS M dgg y뺈HS M dDF1;+T6)yDgPesی4%ҔYFiJ)BoyˑA9'''too^ۓɤz yˑA<ۉ=Ҕ8AvNyA}>vvσ4%y{)qPσ켝 M|dDiJ ;o'jy;QA<ۉ=Ҕ;|w뜜[=sWuwP+5@mPާ!IAԆHRvCbg)C 6Jۃ= R:B 6 dBaAԦPJv6y6HEb4]bv˗k4hё7S)]Wa+{h5坞B4)B!)B!B"-)B!B"-)"rۧ層L&>6IӢĖ#MqǗ>===88 7g%ׄba)Frss3Wsa:")1&4ERm8=tNv*J|mRBBk) um7NZ=h4kn)8/3b4E4Ec:2fPk,NlG3/(;<Ďc{[ft<:SS,F&+j1v}yPqDFIS@(ЪJSD[HSD(B/J+#|2\%bͽmyQ)"=B'l)&7\ﶅ*\ff`s>#0eF yKՎN b`Dfk\zZ:؉Vv)BG"4EHSD_i !#M}A"D|)/HS4Ei񑦈 M">)BG"4EHSD_v틋xiԪE)/HSVp&1~|||ѥO&hJeJ+jִuw]!M}A&8IMS.//Y틟?0. f@PЈ_whG^jrx8֙y,]^aylaYkbC%n3l)Fd%.b|"_K93(?XL&^,O؋a@ ł@~D!"yP/V3W@+eka M}App?Wpڲe,_-Zaim#O.XP9IB!X`Xd2> HAL}4)o޼y'*:)G?gJ̝2C43*!&L |8 Jey.gHml~OHDNÈz=2MMSU#HSV4tD#MY _q?2Ap$ .L`w/LPL |8_i xJ+*P)ҔVW=Ҕ8HSV ܆WڰFSQ3bvwC 3J gM0 x*iJ5\MY4'!MGiď``NK5| \Kl_9gp/|rͅ{؁伬>\#p)#M4Exf~Ht4iJ)"nvgDHSꑦA"D|)HS M">Ҕz)qiJ=Ҕ8HS4iJ)BGR4%!#MGi#M4EHSꑦA"D|)HS M">Ҕz)qiJ=Ҕ8HS4iJ)BGR4%!#MGi#M4EHSꑦ4"$_ MÇv=A2iJ&nesّDN_|"A,'+_]EXHSXs:BB"RXBᑦ>HQ"D4E$AB!)B?^~u-4E1i+Fdt:|_OOOm_#b V@>//..1HsC6,m!fHSX44ܜ66ù}ssP<}qRS <)&HGQFLv@>ha$ uFP!\Seˢtޙv-E-^k W䯖I͢ZY"dCSpD/Oq@G~Ht])!zCsMa,PMG)jOPJ0MaQ|U`/ 4E@(Hb)Z, ov5`tqFe񡊂!睒t0?<<P4%m Èᡂ!egSw2X@Kwq 3>|Poe Z>}~ʢpu}ZBDAы5?Y|͛7T舩_!X,+96 MCb2lX@,H?=\Y߿G Z8HS@P)A rxxxrr4Fuuu{- q)oiCJ"߾};>>F=u]hO޿!*iTݻw]WDTׅ)DQjʿxy1ݽ}X+bX E{1"U&+}۷3>Gq0 U>}c`g?~A5>}:a۪ZrÇ@EnooOћ7¹/ch8xxwshn#!"߿Gl_G9NP{iDL~嗮k񌃃QW4c~Ȅ} L/ߩozľ/v,?Cw.sg|]XZP{ Wd8uuuůKQ)4|}1bmRZBh =P"?uzz*M-j}_|pE^w+GW{@P>aP%$BY|-{|P{ Wdu...7̍&WJMgQq<|&Q a(}{T ګ_"\9B} +2\( 5W 5WP{EfQ؊Is_T}q~jN£j4o.,ZtŢf Y=*~ G/^iu⃓{T ګ_"։_5WP{Ek(==O+VSɓ8''']WJ,D/˝^1Y?CD )4e\b;`OWV{g}O4`M)}5ګ_PE53y4@G@_nnn)6 *jw4є;NsؚR̆DW`I+s_~pqq)Ea7 D׋_a8>>_|uE~wDQX?CD@/猉@M qM1M )GGGqkDU?S^0 ?y4VB+cx jؿr뢤(g/ ,3.C ^_> O>umi/ 3k}<瑪h >DO4G>#M(>шczd4e{HD#}3}<Ҕ!"8ϬGTh˚o$ҔՈHD#}3}W44_PFMŚGe×W"h/Ҋdni&>=V̞G+žj7!rl&‹~k틲Ni̎doGP '7%<}K)`=V jrQd&Ru#BU>^M|ua;A1kG|PM1;sC|LYzv>4lliOM Où/PsO8fO@ٟ)|)qQz`^ņ.40a:&BS8Mt8M|*_ͫ$]X g Aq4_;CLab >6*f]h`w~pvd59G\V5nRRi&>m17q LљlPQ?g`4a_Re9Q G TL)lkQ!g{)0/L Z?a{ʰ-匥,؎|$[)XW'q(hIΑ^cUW(ەB_ )2Zf=X~IUcÉkMa֟xGcCǓ̀l?1W_aXtqmhټSqMݬ  5%Yxj5pw5<p627bۼJ"vlXNP_ZP?eה4]s7i2f>u*7 FoQ1BvX&ZfkKX<Iڏij CSOQdz+Ϛfp K{O2WSac怜42u$N7,qګ/MRh]s5e}c1k֪J ;lg{}z}ƅls_lMƉqg/$&bN֩8kjgJ8:SuwO.tk+Ӝ(Jj5xp8gc67!"Շ}L9-9%X)_%;쳪) ^$N{5񙼄ͽ[!e1OSb²bhQ[%g} K|sirIS޾}{{{k_8yQ[^b&7>8aabg3 G#g(߿HCMaKjowj9b!խxIS&Y^}8 (f[)-~,`=I‰y[ؐC ה>Nƭ}"N{5\bMU岸5[ RJ)hȮGMv.#[g qXJ$}qbYo ;^Ky`,SpujZ~&NaXS~DUEMa?*JHQ&ּa \O6M}!UMzMUG026i)9کi|沏w͛7Yϛˤ$Qs™T^5?X q㱤p7o  s|"wOZ,ׄses'"+ǟ7y6A.qU?-'Xl$#[:YqK>٧o߾{~@dϟ?~EsQ>d#N{g#4ǏWWWp{忪a <,5W6)TJ;;;F ~jhҔz(m}i/zdxzz3;381JM PZҔz(>шczdMB))Q$Z}>>CEROE'q#Y3T)Q$Z}>>CEROE'qs.Gi 9::⢿U׭vdg4u]iTf/ ^xm׭$g:6O`k麉>|u-ue"|0jkD()B"^@" P%>!Dd,HQ )B EJ/!ruu!Z߹Q搦!CQ4EiJ_!#M !D|)}A"4/HSi">Ҕ MBG)B|/?:::==6V !rrrSa2t]aî2WWWd:vDBUe<w]aBS~98<>SD2ϽՃ$TQ" ]( >I UC``PEA\,TQ"j gcE0TQ"j gN(_k/|e~{NOO!yl6"|f@罵yn+@uO-ρk 8>3&q샠 oBD;@eB>r?=ǟJ...&i; }1GdF+y)4E }好Dh9@)Ɓ}5++yvA~ rb$+Kˀ4eҔᱲϜNn#p0?W |e܁MrBJdAT۞p:/{,B>1<|8pJ@Y)8j@3`!^Pʄ XQfs,B>1< 8sxx:pnxuM\ u#ssM4q4 ^3o,"%uVܚ,G|1O4E u|&zr SLPYk Y! O,`ᬚq6c#5OY|-rSMⱒ>c=d,%MᱦϤ6#ZR$UMaEFΜ[) JrF VMt~ߚ%5y"MãEM)J+jVX,):777̃ &n3e-lb5mi h1Oz)TXi"~͹h)Oݩik̛ d™?b퓉h{>$/Ae(dt!蝦n,Jbv %Γ(Mh,T[%?lʧ0O5Ֆg$}VД$,1u 9k9W\iyUWܪnfGma[.LQSmiq|fLgٹ0LشMN2 ?$\CŚ&.żPfۇFC M#όI4:bHb{>p;Ӣ PR>i=T]qєS/_O`V5ug$}^8lw/1m_lV=*u3T}6Ac1¹XǔdŭPI)hddIQ4E 8>3&qg+'1<̘ıO4*MYiq|fL'_4E 7o_{wo0Rz@X1RRǡ%}dY FS !{o|:%89N=w].OK]]oǸ`.2%l1-beT.42EL"S6٬+zZ,YL"S6ʔkZ+v.؉"SfsX~RxBݴ|c;2|eImf-aQ9̔mS8$SVF2~;tJX #K^İ%B^Xv2)d @{O);Ȕ%_J> stream x=r8?QZ3b'9gNMfr&ddIyV5o<}HAGtoht7o|q㛷|ZN~s盛ͧ}ׯn^zALWb$dgYfOHH&O_œ{__>0PjL !+4]O~ۭ^z^eb4XDU/FD<׾%(WWiMLM _7w{3/v_?,@|Yؠ~;;+Drw`1|;_W9Z",.Xq,/).S'.3')Y^^UοCqc[_NشTipiҐ JTf5Me''oz3 6iIGYfd=O,>)!ܕb9j(-'o>}$JHzENLJլVfd]^lO1}a1o A@[u`D6}0xjQA_ .JZe?h;V 4=?⬊ <>A_Z hGQTzv8eq<К_Ap"!$}dq<64!0iou<&-^Jhb=?0]b}Zh_ǧGZo{~OKn# l癈⁀P=QG >$o=pvQ BD8<Ԧ/jYz(H9(- 0`zG& ~ k4^qBO`,w-h$j=l @(Kp4]o5#Mk,\zWe6>.g2pQX(jjlrBY`U[ `SVx?.@ϧߪر̟wmm84 |\]I"_߼yzzdW6ǻY,/#M"RI2Ww?x6S&[~߮VÍ\6eygQJ r #ްq _}eAo gX8]!+|Abqek_<6hP@O)ڢRlAZIϵnUxT[mKzhReM ܊vwyg[Dkpx>#7k`NVsXlѡc4k]0f*cgA:L]%Ĕ?Z7سᕞ<&C53WH-ńi7da[dܸh [;!roRnӾ6 Z&c1}c죞E5;V[l*JI GVp~($zNC0P LK"71@Gl4Uz=iu(^ s‡E_&>x ]&#EC 4%TLPz DD 6C[1 vB ryY/ J#xȨ2ga1)Җj4-"[qiSGHh ?͊2e?aWy쮓|>pZy/,J|?N :8HcLXʳU7Wh_[P-EnK2h]6ѣa٬`f2X={b~+؄,v#$&& ]6M Js=4(< "Oo+̻RТrvNѱbfMN ΑW//~kGJJGx,, [hJbfrh>BpžB]vMFM~0nR0$ &RkQنtpz k~CyKk^fܠ^z_O(5 U,ZWJNT;e3Y4T2˖'͸ [KĪ0>{sN|zͺP_rte|ُ'hy6ՂhOю!9H t!ĪE-v:5,JZV$ӄxupxh}wj?S5,/fƭtbkF|juٮ7攱/ z㛝;s64\GlZ^y=ö< !䜇1&*14cev趙[=oJbd'BE&Yz`;FQ#I;Klxϋ(!1J;q3(e><#'uة'26']^]я!(1}fc{cNuTIŴ \S\awxA 4&+=%.p⭻a6 fvp,՛_S-°w;?Ω(BWGsHYj1 7cGQ]B"0Xg16RmX4ḱG$cU?m8יV 6ʡ^1rTj2=)zk*ێ[OOmg0rY 99bTFe%@ץM5աCTi˺*Ndz#U6%Ђյe=wj V.-mXyoǩ;/"Mjܓ#A4aJӔJ;'aFNxPZ_qϒ(Ks[4}Ţ*ld>gfou沯2O`F5sA!%\9c-j=auTB[/X;["-1>Ք; Waŏs5"}>Z+jT޾Ty2mduj ѽ1T:SUޔoJT@H&]^/\tanM)1Ek}`?3%pBVi.VCRV=X:vڣ.k\VӚDĦ^|ӧgŮlHXr榡evcl"8V]V0h4\1vh1]=+xr|c7T Na{wN *8 {@3s%^vT8 6x@Vy-}0z(kAC|hСc.F:: *T#΃2.!SA)T@WLu{j\u#Κz ؼܺt%lgnJ@aʱ cWT*Q-*p0RC ^G2w翫ߋN:~cG{Q3xE9Imc^c:Q%|c^!\MτSO17){Ny阳V^}b3lfEz8AN`C(''e}[ d8i|c PЀnS[E"<} o/jM +R=S=H B7Vłi45tklBPÚ 'RY׺|xZ89 Qޘ 2xVsEnφNKRh=V ӓ!CWt[LR6 =~lF^wMC(yAVdY/yCL%L}uYz<>g+cDZΰ9AOhcO+6U!sģƘ1 M |]jH8eOOiIvƏ;\PW)P .\.nhzApa\vܤ>X$̝௷f)Ch5. 0=a`5wl"[Әuˀз~8pGY`m.3[V+MdBOX|ɣrp/7ɴVSeu"|/*,Vou3ߕ4oa6:(?7+<2n/S=- r/ lHar~Hq3H(t``S1K#$9H֕ӮM ,cksV8a$4S ;3fD} ޞ_zVicf[ "-!,ir78'J4{y}*yͮK޴&rS D`:G4W7IyD*u? )cAA l~nEѕח" tI>\"J\R#݊TvIͅpsy=>"UB6Ec-ĘNg,;'pC%zx""8p]㯧#Ovva^,2_uB8AGNtU2=,@?tuFjX ;m|jm}_لPً W،L'+䱮zX.MuO IzjGQpXYu`6<Ү6NksAN#]D!e݉kZ|ڭDq'DRyl).I[kH;IO{͇jI}50&]mMJШ8dO!{Iʏ:Ξ&+?aA{Zft(ˋ=qP۶ܰm\,=r#Nkg7 39dٗuwjBA'Z_Oa<)+5<wcONk*ߌi7g%0,KkAN[P=uy'mgCÀ*OI*O%JOa~ Ti;#zzXhz%ZٰK&fN7Kef;EB!,Tom/.>/F 4/A<>/StructParent 29>> endobj 98 0 obj <>/F 4/A<>/StructParent 30>> endobj 99 0 obj <> stream x\[s۸~OU1MN*qJ29!sjKdD9HUNb@_7@_:l^zv,gvyq<[YYWW7_/_yr OxqG^$ ~"|x+/_||^I1&B^yӋx?0y7x-ϗ/c/ѣUGz1ȏ3uuu٣i2ٖ˩%/>Ovk]GcX)l-dej˾YVQSm'gj rkwac  AW UdW1~E}W9~[Z\l >@ԨMsägiW'c_}&6?O:4 {ڻt]Y6.`0S-OjԱquY .$EYzq~߿5~xia,/_cȗCz' /D Dq~aώ̦a#6I=lD?vmӋ-ٞܡm li)AK!r?:l?mki5)@>Dc:b_tn_2^V(.O3kv"a+w~Y8.fEL[ꢆ$:kEd6J 2!iC-ϷB4NJ;RCKadۏ k@Ûb\}B1%A/!ekEä%2V?#0HKPޝN[;n/n5W,ڂ|şĠ*lv!Ȟc6a!2 p U{e"%~LhESS94!9q()@4ԛO2cI:0Gv'J`(Tb#J)-Get6OsϠy~čɤm{ᯥOmNJ\=\YHQ<~;uN9+՛2c25< cDL ?疣X4w~?7f EVE" z *i5žp; bm3l.m""bQ?n/5WՏ|t:!=9&N2X~Ρep(mc9X`se ,▣8GԬۏE2kN0"k:-nJPtăAna>ĐCq j!HZt}p5V?c$j8*n-zŢ4aڑKgL2L#?IF:X~2cP((u!^`IX`0b)P,upQ)P*uۏBAfaIPg(#K:<؈$i:zyKϟJ9C33U%ocZQV;0d:~?Q/)))TV#1d:GfU Ckq$nXҺڟAw,@MNQ`)&sgd7o'&ͫ7L5˯G|D"£Qoa$Rr~wp5Ds(`/& N4đG|<.y%yzk!!`}wQ2mX5 lZt/j%u:%vX6{)<[;_ĸ#_h l>;+uiZ}EYJE) .~k`otSc&KԠMdAp)^fy$ Q'.=o6n#-hOd?;NCeA.-٢a:`2~{*k+%pIW9!g)>4n^ fCH͊5%24<GJ1}I{tl5V[㱌4Ml)Y1ʉ /t7]VJri,V0BB@vΧ)dCȵd?tQ&͐0x̿M~/FlH0+3 Ϩ,x%}'cHX4u/ H8ՙvĆѧCw=l2òbq)W-B`k[&i豎A l^Ͷzbٜ"(M,Ձd6HZ:m`VIyRӹi /' 1x_+(嶦OJP>E2O3Cʬ;0U ~~G#*'D*!zޮ6@%{wuE7_\`߬H~ˡ:F:FC8zDeY.ұOcZ}UsΠQGrݒ毼]ƺdx[['nKFW<[ H@Ty; J|7;ƢlxOCիvdMKKԍ}Yą"tC>=5(sR6Gi\oY >n$"lr ^ք<u}]e ?g5O fՉa`WASVb`nisN%z_}QSB 7&ѹ*j}\pEl)𺄥gA%T۲-q8OO񹌁p΃K΍lۆpٗj4μ±%mм̆瘗~ȼLhR,Q N20҈yi D&lT&$T2Fa !Y 1t}6|TwUys[UA$[l y*S;vuy}usC(wqnOTc"ͳ1 l#Ω;})+bw=5øڪH|JnZYuUrYTe㮰qd˶- o=ZMD?4}t] !=: e˾/T>n]C/5  9%S(ב |8obkǭLU]1c³PK햮ʑۢġ Ed[4W`Oj@T5߼W_H/jv󫍴 C*m(JH:3*fUBhFi͘Y|OHG$ mkvmNiF&F})6zZ֏[ҚvB3ȿ%zdnH0.+Okj:"]?2/|Pz(I /d{7l}4$ 5`٪*u CSҘCr endstream endobj 100 0 obj <>/F 4/Dest[ 87 0 R/XYZ 48 585 0] /StructParent 32>> endobj 101 0 obj <> stream x}Y[Ͻ./~ϡWz׷^^gG#y?J0? 񣏓E<ɤ^d yӋt;>_a³z~'Ǐ{g~a٫^j'?յd ٤nx(~ղGvw14|5ƶ)J{~c_-Q⓷zZhӟhiocAD5x?i<ޥ}f\<*`%Ӥ.4]qG#bc'IS?NX(~ iA2KC+ܵnR &iE^Y&)O..!FO=+/0΀X E@DCURW zM/I;|k <{bZJ/79|Oj.qyuK{ڍ`Fx{-b;6U`识6ѻA}[yz2@ Fصl}t.vxxvI ׵D$^-i> ή8jlBxҮqgN U0 s%XMmBo-ФI0WԴmkR `.j;e`8nZ.0N"hȹ7eo]{964f84A4+_#^}NpP?J'L~jS5OS_M^2@H+s>B fE휡A1@#cW^1\q q&a% ^,zEx4RPLdR\ѾOAsU?8gW>I%F OnCŲo,{Bu5c_@R/]#cgDjB7hy\=3(ՌjfR8CٹRuCP^V hB93[\xFg<t_ Ix[0a+gQ<> -q^K:yn82Yo7gW]%{Eaub$M%S_4-Yƃ KSc^( xֳ BP w/f֠Hj۪WfWQX9Qi`2t[:VzN{4;rfq+1Gh]LHGDsq"f!^(K|UHDg'SfʓC#$1& {IT"oO:p }2ke)% ;rMlqb90b&Gƍ'#@(Q#ė<BֵmѮ@Z 3vbif>s2'V8l8\C7ւTU c-aBSc4mYC$pgd?,ΐc>kKI,242e'(jV%[XsCsu 7?VӜ~!{ iFX~32@.hZN%%@QxSM5فAutp"=e e>y.Cw}zcBj ?;z$~usP1'Ú%)\/:!P;JF_vu/ʻ{5K+fV5_dAH*/(IX2J)w(4&wőXa 1"[ P~'RG=huKigO;ʝO}ssS{~{@W@bQ9NʬݳRáFHʽ:G7JZ~g6 iӇ2FՀ<*dmfXA* VK 7KROe,.TY#LRg= 쀩Rc=xP)Kszpp ~*1yq2&{ŽTB1z%- hE' ;{=Z6 \0>_T^@s@"ąb R! dL( "buN5GXASQ6"KUH$hvB M~1f %|LwTzEe>]:Ѓr9%!8xPD%f΢'"UeQg6J;aA xH,Q"ڪV0`%ٵXg8V.T 9cm Ʌx""q )"ͯcMxS"z,0D!GNxxC aZe=lABaXVxO7Vy@~i'`JYǻv<TǨ/ICR۩BgB uX @|=8Gi?bȊ݄LO7/=P mvM0\(Li5 smgWs _Y3 C]^EtG[qM ,3uedi:LLda)IuWǰ\pZ6Y ƃaGwyK1&J a@2 m@;Ud4R$AĆ:^9bl9}]b#%T,KLI7\Ƌ/ 6378uU-X.>iKGT4f- /6vTeҷƽm9̍{lvR}0#;W˥Bq1ꪻKUOcLc#RvX,e3fLblme0"jE*`'UTQzmjTB!OK.[.ԋ VYVjPo qFX%4Z-U}* ή{V2Rphu42 rWf9,-Ncs)| / ^!$Xzn{6m%F18Z*QfG47qٍhG-:Nsڪ=n4ߨZ *A`Q$,0 T)O+jJ&6*;պ]KPr "JI AZ3B+ vU˚ʯ~A3gl\0!8u,Sɐ2<2[Ceht2YIiC-e~ TՆtEpB0tݔ3S~8DU"tuMc8ƲXZ;ַъPVan׹ѥ5ۙm#"@̆Ko1S .1`y*^~NИ) EiHő}#cOm _e%ݬ_y]U j%&#}yYj@an5hdHpq$*CTmX&XiE܌qCFX`M]?8Ny[&A%R̲4dܴpUm3f}r'16sx?Y\E2yZ <:IR7~U0}K2mGt6+ ނ}רT*0/z;`֯'Jɣ<(eUs}#z|GTF,GUY+{t s"GqSF&\}ȌcJJKkd1)%A'L6Lzn剾dmH"> 5, !RPh:'ڎ[x7;IFjsjNme KO6$h"ر Ti^0Sd`"e TXa  i:"ebC>Ӹϟ`?̿#/+< $M= #m7K1P_ZעlNUUʙIxM4|o3»<) egEEaK{Kݶ#p2GpM^磙s:{Fβ .>e Ak?# TYOqRd7GaX}M?u<v$:DOx;֓Զ[e9 ;Gâc'ʥQ)?`V}Cw9ħp/IxV? ai);t bxQ=I>\24O )][TYfveCeV;7f%v74tr~ _t,wBoS"UM..l0Qb$ڍTJFhWǭv}rܦՅR0JD`܋!w#:<:8έ<F .g%4>oUKj!?S+]^RPzx w;Iʘ0\' AqLf:nGdWL)[Lw j>fF4ժjšmx:;KPÒ҅a|窮nnmuX W”MG!LN87 j|36TMLӅ];WűrigOZa xđ4yOY̝z!T*;yl|ƣ-b.q̸{ %0S9׮TAd7cw |¼e@06:#ZdN\cr lq0 ?vș"ƼL%Hܳ$|&]fpamyKkq4?I.lW %:Nw ^5:XvafXצezW endstream endobj 102 0 obj <> stream xY[oܶ~7GA{MQ7i"Naڛ]VgfHIV=(j83좬Egufz88>˼H|[[OO.OOn\+'? [Q2[-- r}ıɃu5zv>z2u]{Wd؟q<ݼ0u5q$a^|JuGK-g>D,R%>NB^w.n^,%̱&5/f[~eqf%'ԃ܄9>2u]Es{ 5mqrr)_{bnxE<x88܇K;p$>OǏYO{[ޘ\~C1Lצa0>⚿uA` 2f$Ӏ3Xغ pD AqˏX6$TJHwc?jlurl Gy.%Pc#8+bBp)̱/P/ xeV0xApbx ~󌐟]OYIre(ܴzY^s| ;ߞ˼Pu*AoKP%agQzgmF7Y'$} n^f^O$6mJI~9P[#ds^@(tL&)o7 ?ѤU!X= U.#_(\/2H dʲ{v SQqY~WyFBܬ: j`zH״Cy +!ƤA1&:0'.[{6&!I'x; ¥zw5xWٜyX/tYӚRt=gfT߰)R.4 "+) Iܾ,pIiH0iBI6HZPܺs*mPd@Kݪ lUn-o/ j䦽E#Otj$Ҧʅi\ȟL+uF*ڥ @(^LEVE}(^ eؖARu_A5r? R>@aSslY $ITV w4//w4.}0,5`b z CA;Eo6fw鷇Ѓ,f6M/8ZJ\y@HM JMɂڅ)%YѴH N rۏ臹'ON c9Ily[ͩ YuD|±?)RBLYC*b U;pd+p O@h_Q0m>A7]ਆQ:D,Q &Yon(}D1XF.܋h,H2k9 w0!CZ@/!5- muZU0\.[AIdQQvR:p[%N^s_*+YO2#dfwBMh GF9@l e̠'}W:V{+?sk#w@{Gb6%Gedݥ&JӬij^F ]f66Bt1=1@ DAQ3w5GxߋJHd\*V)orh)_(d9GJiGvIeMqM5妫=7UD<#Dw9w*DDȫaUblb"u.qR,==ߠVǒ<)F9 Z}:-(Ѵ^uܢ)C4Ij lgІ YZAfgOvǸPġ>7ؒvi}T1~y3WFhRTOܚuNMM(]FLaM72wh%7z,IL2k endstream endobj 103 0 obj <>/F 4/Dest[ 52 0 R/XYZ 48 343 0] /StructParent 35>> endobj 104 0 obj <> stream x\[o~7Ry'( Nr4(T[qr"m?u~겔BJW].7p/çmUYNo?/\L2x7XLˇev&z~v=9?xɳ"|:?<,W5&"<2cЖ?g>Gr0Tr8|0l8҃wx~ ߾̖C &?'z~ȥ~zl\G:nUJ׶&Mn-[x54E9|Y OOK&=yg9+kk9ϥ }>^1[N^OXf/^=]17 x]jͥ?ߴV_^+oo;¤,ru.uɴJ^aETÃopTOmamT.UlnL,pjrqYhkroh/9M\]ۥ.ޡo^=XM&DQ0pީOe?ޏśoUTFh= 8wCb5.2,gge&C˭ȴZ陷x-&}o5㟞#;>Co OSpY/ b ' ^@)O#oJֻq1>̰ U7aq=}[=kkDL6RLJ[ߟw* 0Ur˝mw%Jn__fxi 6 Ua|#k_-0Tݞ` Ʌ r5NcǭmL#7㼭v5hs乌,R<F*Mi.> ppct έnmB"0MHӄmm8: ׋ '#Yk@oj34!ZB!XmRjB9x~lLX`Foc6ks}xȯUɴB2WI#Gd/Ů{f:5BD35ҡY.8vYp~\a{!D8~2C@z"ϻO5聝O[H%sp̌vMd{, @QH^*w*jUU3n;PIZ}uV@Pl][e^P0 M]0Z!)Gn<Q9E%|[5!1q^,S!μM\ (! |Tye;#?m9 a/$* " MVt⍟TF6 sk"m5mHזwv?!۰' wSufs,u5ч?U|܈iW݆j?/[+9.xB"/d:I W+qqF>ft0 EIeeas'TaVz>O^Y^ :]EKp*EEMÜ8ʞ[-dRss󆾻ȩ*BANUq".7 < "3#<ƳPR'I lùֿcdFf@ޣ2(IA'i@FN\z0hZHoB3se"m`E%7yxM<#Ef!*Z 4Ёᮝ+͐^ TTX17; X;r_.qPf%-`EL`VTYAC'BӞscک@6jYo W5VEf{ u}X='Y&&'~]rY!R61O%jqpp{+}9:`#8}ʰva*ƻ=EߐTąy ZZ"S'j2׮I1HAP4|KHܽ舄+ m 3d̄"k nDj_%M{G*5 i2u0 iܓ4 rCcp&R) E2VP=A}TbQ;*N]4ԉ+Azg*9%!3dXMgGE~zEZ%\ER8 OZ5 |M/sLZ V_{]vOڗ]YF/45$)6}Bƾ6Ȱ}u0$PUuӐHCjqJpָK13V@ޖikB赳5tQ7%9ۇ, fDnH@:"7 uK:j(.MyζG~KBR{zʸ5>@C9BH`$)Q^>s\$68@\E@4)#Gl㈃9>wspf°*-HY]~2rIP ۾0  S5{ "BhHAr#BL@xO~SF:36Ws$A+I] ]ȔA^*}?aUYрX5AWpRF衠ˆ$顠EV=kj.s~ ] DNC2+p'E>"V8A&fЄ4EP||ePr_":p%~!3OMŵMJʠU;%σ !n ]~Ëx띆’ L;)7%}[5*%'X쉃MM3r/%.gbFRE$+ጔpɟc-[KipgmKƨ1l ~cN8[SܻVD'$悯sͅZ '-}ͅ[#6_Vs9u,|N4y{ElZjɓ$9#zBR@#AI;b87kuz1o_m^B/1DT:)K'짛kz Xr{دqnzaoXg$tgYt([ 戽L-W@mVm`t%OSPq]$ܕ[FiZ$$m;P"^-` cWҗ79ҊIX(@NT8 .5w(OKÅ&yYRa NWDd0;\c"=Q$|f5;Է(vΓJ0-,y?$\CL(c"֤LJG2Mp<Y_XӒiUhs]h rJ'*x 3 aPaw/z+mƘz endstream endobj 105 0 obj <> endobj 106 0 obj <> endobj 107 0 obj <>/F 4/Dest[ 52 0 R/XYZ 48 710 0] /StructParent 64>> endobj 108 0 obj <>/F 4/Dest[ 52 0 R/XYZ 48 710 0] /StructParent 65>> endobj 109 0 obj <>/F 4/Dest[ 52 0 R/XYZ 48 343 0] /StructParent 66>> endobj 110 0 obj <>/F 4/Dest[ 53 0 R/XYZ 48 352 0] /StructParent 67>> endobj 111 0 obj <>/F 4/Dest[ 54 0 R/XYZ 48 644 0] /StructParent 68>> endobj 112 0 obj <>/F 4/Dest[ 54 0 R/XYZ 48 265 0] /StructParent 69>> endobj 113 0 obj <>/F 4/Dest[ 54 0 R/XYZ 48 124 0] /StructParent 70>> endobj 114 0 obj <>/F 4/Dest[ 58 0 R/XYZ 48 164 0] /StructParent 71>> endobj 115 0 obj <>/F 4/Dest[ 59 0 R/XYZ 48 393 0] /StructParent 72>> endobj 116 0 obj <>/F 4/Dest[ 60 0 R/XYZ 48 741 0] /StructParent 73>> endobj 117 0 obj <>/F 4/Dest[ 61 0 R/XYZ 48 409 0] /StructParent 74>> endobj 118 0 obj <>/F 4/Dest[ 62 0 R/XYZ 48 515 0] /StructParent 75>> endobj 119 0 obj <>/F 4/Dest[ 61 0 R/XYZ 48 198 0] /StructParent 76>> endobj 120 0 obj <>/F 4/Dest[ 63 0 R/XYZ 48 652 0] /StructParent 77>> endobj 121 0 obj <>/F 4/Dest[ 62 0 R/XYZ 48 259 0] /StructParent 78>> endobj 122 0 obj <>/F 4/Dest[ 63 0 R/XYZ 48 356 0] /StructParent 79>> endobj 123 0 obj <>/F 4/Dest[ 63 0 R/XYZ 48 115 0] /StructParent 80>> endobj 124 0 obj <>/F 4/Dest[ 63 0 R/XYZ 48 115 0] /StructParent 81>> endobj 125 0 obj <>/F 4/Dest[ 64 0 R/XYZ 48 211 0] /StructParent 82>> endobj 126 0 obj <>/F 4/Dest[ 65 0 R/XYZ 48 724 0] /StructParent 83>> endobj 127 0 obj <>/F 4/Dest[ 65 0 R/XYZ 48 164 0] /StructParent 84>> endobj 128 0 obj <>/F 4/Dest[ 65 0 R/XYZ 48 501 0] /StructParent 85>> endobj 129 0 obj <>/F 4/Dest[ 66 0 R/XYZ 48 300 0] /StructParent 86>> endobj 130 0 obj <>/F 4/Dest[ 66 0 R/XYZ 48 571 0] /StructParent 87>> endobj 131 0 obj <>/F 4/Dest[ 67 0 R/XYZ 48 681 0] /StructParent 88>> endobj 132 0 obj <>/F 4/Dest[ 67 0 R/XYZ 48 467 0] /StructParent 89>> endobj 133 0 obj <>/F 4/Dest[ 38 0 R/XYZ 48 276 0] /StructParent 37>> endobj 134 0 obj <>/F 4/Dest[ 41 0 R/XYZ 48 483 0] /StructParent 38>> endobj 135 0 obj <>/F 4/Dest[ 42 0 R/XYZ 48 590 0] /StructParent 39>> endobj 136 0 obj <>/F 4/Dest[ 41 0 R/XYZ 48 262 0] /StructParent 40>> endobj 137 0 obj <>/F 4/Dest[ 42 0 R/XYZ 48 118 0] /StructParent 41>> endobj 138 0 obj <>/F 4/Dest[ 42 0 R/XYZ 48 347 0] /StructParent 42>> endobj 139 0 obj <>/F 4/Dest[ 43 0 R/XYZ 48 255 0] /StructParent 43>> endobj 140 0 obj <>/F 4/Dest[ 43 0 R/XYZ 48 482 0] /StructParent 44>> endobj 141 0 obj <>/F 4/Dest[ 44 0 R/XYZ 48 648 0] /StructParent 45>> endobj 142 0 obj <>/F 4/Dest[ 44 0 R/XYZ 48 507 0] /StructParent 46>> endobj 143 0 obj <>/F 4/Dest[ 45 0 R/XYZ 48 566 0] /StructParent 47>> endobj 144 0 obj <>/F 4/Dest[ 45 0 R/XYZ 48 118 0] /StructParent 48>> endobj 145 0 obj <>/F 4/Dest[ 46 0 R/XYZ 48 541 0] /StructParent 49>> endobj 146 0 obj <>/F 4/Dest[ 46 0 R/XYZ 48 307 0] /StructParent 50>> endobj 147 0 obj <>/F 4/Dest[ 47 0 R/XYZ 48 666 0] /StructParent 51>> endobj 148 0 obj <>/F 4/Dest[ 47 0 R/XYZ 48 427 0] /StructParent 52>> endobj 149 0 obj <>/F 4/Dest[ 47 0 R/XYZ 48 286 0] /StructParent 53>> endobj 150 0 obj <>/F 4/Dest[ 47 0 R/XYZ 48 143 0] /StructParent 54>> endobj 151 0 obj <>/F 4/Dest[ 48 0 R/XYZ 48 644 0] /StructParent 55>> endobj 152 0 obj <>/F 4/Dest[ 48 0 R/XYZ 48 644 0] /StructParent 56>> endobj 153 0 obj <>/F 4/Dest[ 48 0 R/XYZ 48 644 0] /StructParent 57>> endobj 154 0 obj <>/F 4/Dest[ 49 0 R/XYZ 48 558 0] /StructParent 58>> endobj 155 0 obj <>/F 4/Dest[ 49 0 R/XYZ 48 404 0] /StructParent 59>> endobj 156 0 obj <>/F 4/Dest[ 49 0 R/XYZ 48 724 0] /StructParent 60>> endobj 157 0 obj <>/F 4/Dest[ 49 0 R/XYZ 48 261 0] /StructParent 61>> endobj 158 0 obj <>/F 4/Dest[ 50 0 R/XYZ 48 595 0] /StructParent 62>> endobj 159 0 obj <>/F 4/Dest[ 50 0 R/XYZ 48 452 0] /StructParent 63>> endobj 160 0 obj <> stream x<,ֱ%3 g<8ԛM=^ެrCuqy-~f<=9 <3%eDfyF"|$OO׋36,^2L?PB?mvߧ'5ğOO2cdSG%9Q&3N_klH)Dro[?Z?'n3[n׏=,@S¬f J4~9J ~ZV3#5jdqHQfa<yEE{Sxb4Ձ$hg}kiDEh zodJ86AS9 `~|"EuXo5_;=K]$іڊD0{,Գ0଍˵[Er)BQ/2j340)<`JL vp6<$nM$rZ1olk7b&"{%}a8teYu^Şd*˭rTVDʊǑ'#N1+MU`fI'[iR9n?pNDsx_o{h덐k}1h,oLŅ!:^G& p6݀ \o+[=2 QIMNe( XTگEٹ FV RoG D5DP~PA5G8Y ?3 E%O3U mmФD WD0D"a~TH74J'h1ݘ @SDt0g&9I0cc$ma8J~ Tn&_JZ@b`"l7i~JC aXSMsTyd9B0!]WF]CJYVװڪ12g`6士6 <i_۳@>SRqH=LE o.v%*5cڮP&4:vޛڑ, j!c7hK=(y6HZ!џڼ4ܴD\t/Vy )ХoX=m;:v|T']h uneSD0Zm\=4dj"G!sμt8X }î!w ḥR \1[L2ю7o}MitR 6$@Ov^cOØN8&(}$DLjV2G[{1qHg56EDyFT QRҝz<տa(MPWt,Hךd1'FN:~Uc6ŅD-8\άhAAE&vcv N;K-fY 37G!06 'B%qe/ } fO313vE}vA@8:<\8.T٣To0o}1/e5ER#Fg\-IlwKk$~?,1I 2At&P3RU_PX0jci6Ƨ|FM(nI=j&`8RYMd^C8uޔF7CnS{CktudyoHQqנhtTeYd5y>l+_ݖZd$Aomm)HvJ7X.jR/T&f`CIaBiL& )JZI,.PeXQv0Ta1jjTͭ#k+OfYk?eB!46IuB}ҩ x_6Sr%SEt &\-`]0 HQx>t*P|n pcpF=Wgdrnۚr 45CC+Xov|.5HXIV"`q'n5ӡ~^?Y!Xekb9&,CR<柕}qtyLjP8mQu4^IbW$hۧ[X iH.V f %PHrRm>mRŇIER0q:4s[}9s^.~~JY:00PNۧʕ:v++WvLڪ(LۂL(&\8}B(ra!6|8X*?Z1!qJeIcuV Uöin;S _`eҎxBd&~rQ+ eo1'B"˱B(߰4VvN-clmn @q cjO9F`_NN+([Wy4ƄvC85ɥ\LoB  >jm!KZIa颿z~Y$ƈRLf*__CK@嘦X:IiXd>7yuye suNB,%dxʦ)8IHhd{HR&ŐB~ Š˷P}$ TD9i Q ! H.N(,1ד G+ (S,k$k#.K.0-jBe`T35 ;ʠACjJM+=P=N \6"҄];'INZ:=¼H%yM \ncJp H_}ORdxGwX#)2Ӻc|gn=F;C.V IeAJe^L'yШф:UaMQH)ofoJSHg w4 LtE`kL ʊv3OSEs?, kGu̥YѝSAmƣw=סj LBehmEo{xW+!ah܏uq0F1𚖻3;qt_uXik~lIY l|'^=s$s ퟨ (Y{S; ն\K7F9MZŎ}3J2 Ybdx|n%:uC9~k]A{tEp"[G8x!! l֮ ά3!xnx W^py@GqEfM.҉MfPG6, &dnzYCzڅbû",&JL1.R`GuH ;}i3i`Ta[?j+Wݏu =NN;،+tL.^Qh#4Q_CyRI j0ϝ*`rڮP Bk BYYTP)JRXвJ+Nͦd.9(aXg Ab TV9:cˑ 1/3Z@$R!.ⶕ@U+0&e?)㪆~ o1C)gf ]K*rρжE*NߴŠ͑Dsvp$D[t2,gm~(wW_q\P/bGўApA_!pbg qXfW+5:M15zԂk$GTF_¢=5H,P> stream x\_s׌=t6q:SV5ӡ%bK EY.;Gn"y bw[,fq/~]^_/>/.>6jyWů'^O9=!EWe]4Bw'ﮨJRO'Ul??#dO v9Kqӓ'Q]Wv2|rg{˚)kKQ6nn?l_lݫoyOhy3yO[i8Qk]V]Yu>m%dOh %~fY|X+t{= TD[bUUW/jX Ҿԭ|~ۨ!8CZ~jF4JPͯvjKS.w#ӔӲG߼*#vŀduQ7 [qrFh x#Jⷒ b^#XYѱ (I[87~#к(K.tnyzrB E_PTnO?Ulh!*h$Ѣ# ܦ L}Բڢnk3oے~  7%[2fEP5eӎHًze&tSMYHR%QɔIa7 ~jc_?. ]_?e(6v_cCR~iթ:)1 )vYӓm3w]Rв}08aȬIjJ1xq}acQ7r0;$ 5C&6oԊ C#"QK'N umڅPdFjR{0d`Ty˦003Se蒭Kh85 LZc!0&(:Q;7 VBQΎ Ig: #1Pt9ܚ&x;;n=aE. Bˮگ$tFy|kq &?d}Q @=?i :8) NSQ2Nq*IةP.Z3(MHo!bSR?)mQ d][6q]$cq2ZI:Rd36m>Dd 9%8 DMrJOZ"2<ցV~NȀzˎg@alRt 1?ҭd@l}yژE'@l$*vXTYP8: OJ Yk,ȴaPa{2XLM8;`:5"iq3`)[3(Ʈ$7ء*y=^g+9; >E,$$/Sϗeʋx#@VsU26ə7y6'e=z tl2R-Vf32yѤŏOlMĹ׸`ym+i&JIe/d(#u7 =U>"\@Вz\HD`8B!KG׳!uNIW͇螛X` G8I)qI b~wx`C]YUV *c5vY͈7KJnIrʬض/v'fo6E>{)ױAaׅ)L]oFi1*$WHq[@-,HQ $6Z?C &jmʮWf,,3[C0QI%'Ueo[@V]~kfB*{؛u4Bil Ӈk_TZ2GWk ,6HLK_ZuU.iF&z1G( a݂y]%yQ:7+m >'r7 q,Ff`2φWm%IدDnHV:^ >`v=EX`O }r)z1tIڏWS].v'mV];yr(J?)gծNmUr:{>ƻ J& IGH3$w2Uq_n!-WlӁ 썫`˽"zPMdA97u˦rLOFlGBu *ޗ4:lq~4c7nwc9N X#֌f,oY5;,Y݊_OKnavT3610ZU8}vnPbF2 V]LKJ&c,\Oo* c6=@%{L`;ҖkT O&L*&kkH8ZZL "UNj3fΠѲVP)l)k@ZN@"&n·VEZSFn%َ@@r!]jڬ y4m'kCȍ@E CE҄ W4b=$1Y8Oez36#YҠSlr1CN儚 PSzG[d2N"p5kw-nc>-~!59JEEn/=ae/lbgQv2p7؅Γ֟l@_4r\Jt9,) _2 Jv=:Di~i!SB#9=4>'2광˝ii@|>΅C*{[^IʹSE{U bz*HxYKFz)c)dvZic&"D@Wbw*,Q>&O;<ᕓ4k~/HG8:C)mp0Zuu=AaS'h5j*M$כU-kuSr|gIn|Dc#HEg+c(R[}bM1(B̚A*Jү#AU|dkAʜۿ~8TR^԰ciFvXS2~rRN4F99"UptZL) ώҌw>WkoeA﫚+^cPY] @1`=Y+ ޣ;<nMf,=]WJ{N:<q35 ?1m7<,(6jNv#F9֭ ୛ZNdxt~zi[_'ΫX2&*UT"KүK/ ^8 ]#O{ݙx7hD+;JQ#qRGMܔJ캵RlAA^ #}D_mC<܎Gx.e/z])s_>&ވ'o#EzY'm<?;eʎq$.?/vpɊ>&9~Ugmg;xU7* endstream endobj 162 0 obj <> endobj 163 0 obj [ 164 0 R] endobj 164 0 obj <> endobj 165 0 obj <> endobj 166 0 obj <> endobj 167 0 obj <> stream x\[o#7~7G)XM} L2,29;̓,[Ȓ#˙̿*ޚl^,Nw*Vvy}}᰼_̮/w?_~~\Xޭz}fog|uyzr b3Ѷmf's? fNOl~X2_f3>ϗjNO{z튩JjRQϊGek55d[ wDwo|{X-|3:#v6',4`\RW/mT[B**__\#N/˻Xl?=׌DtKuMn޾aϚ{oߴuozP 6o!;+Ҿj2ŗ㼢~iѫK3۟hY8'_~k T+oOZ: +[(f(AW;FrըaQ5Pr~2wAra`c|0Y? >eFPu"2=~ڿ/n\WkG|6L V+5ۿH=SfU=oBA9'< ii7KT(?<t^api:;C 8k.*n/hr 7dF5B&֯ c"qE€5Ƶd?8' `8_SM֦pfA :5;\ӱq_SjI"{gۄRkp|\E1fzt(-gQBxʒ-B˱6J΄!G3BNJ<`$aTkUM4D\2]f @Ë"1KZ ۛW'7 c8_чzLM}$/M n.dzw'ٰb#JmzDc ՄÐ*&ߙ 4#Ri߱g۪̾9@Q.D  ڔHYwK)JCOZ_;mtӊsWS#Ŋ.I/~"@`buP{ vE`'`}_Cp0s*@JÞ[IKTҝ8ICd㵽Yk`7܍SSYxcߨE~0/٨^([(8R\![[dLA7k[*ReE gN_81XJ֜Z^iZlI*eD7)5"KVTqZm+ֺd4gl^a~MRQǜ?kڜ6GFS26*Ddv>n6yLTuH:3#ޣjx-$_ڍ5V֚?LkEua[4~nB+(q+ȶЕ &E7-2hMD41 (swm|`)*X*Tq*5<8MISuݬ .dEu!Ɛ%L*p2]ZjγD7G.g{! %Zs242^'|?Ql2>jK)Hg9 h3.O.  @{DP*lPtr#!hiA4/Ur B9omqԡ, 3R<~/ቀ&s("#G8UFYhI~) ΛXIX. oQ k(5šdε ip3+s`Ht2@dC9P%_rHL4=X ?$94J 9L}ZI#(η9%Phӣx|#J LUw?G(]I.AX/:t<.78M}mQKh*|lB86kc)g׸_no6+q0[;u"9a"3xAN-84yUytfh!qU*(sw pںYl[HH$ m6R2A1fv6\IC*/5l+Tpe]k7~Ggq( {Xn%$#}EdMS ։LV~d -=++J3)Ьan݆xEvhHEW\BۿWo} R9SNyu?U'rvRT'C4#HzG¾Sk;ayv JlB2IXw 9Z[á5Qm M쎘?ӜNӑє"4sXľQL_ԣ"gIRdVDt֎s uv3^tw)u=)myL C+:AGj#J:8QLU~Fg;RG;sn7Fd45:١{ ux#K9 u MBƒ<|qʴIsV, YABKo4jEM]S@8 kss諯 d|x}FNM$j{LM{ZM]]h3M7P/Fx7ڼ5}pjI݋dgd7u/nYpkm4ޙe#ю l(4{΋8Ϊ[vRSXtTMc/"5 褩zF#FIe=fm "WfA7:g3'2!sůZ>4> stream x=ko7?T'Cr8E E޴[J,ڒ+M9| ϱ4.:9<,/כ~<>{O^>}-uӋOȬȌE5k`tvz ʂTOKO?_-N| !|-No݂oNODaw]ǎJJRѣ**z !뢱GGxj=?i/-~zgEu6.ڶ+nvkKHa+-(_S#' $d_gggoC"//KV%}%{/sy Tx}ȯ!8BW#:ظ c+h4Sq^0]Xe<{YD+ۛbuUjV5E]K0l/gsRE7uADԈ0V44%i W^J5'^ g. [=}r`b<\p ?7@S phh:a6J{]=hXD5XVʙ[Xzw<\WO~7JS6E0uD~E::g;T ]wUQa;ײ ^^3BL գP}]eLR o o{^Qw U`Zk27 Eۦ $Nံ5B(I8pG+cRG"]2X3/S;_qD ݀cp]B&c$PX oC EM5Rxu .6>Xf͸Q֞9br֍.?Vceez6t0>SDH ڈL.uT $> p1 c; K3^>o%m80lX9NW}B B>!EP-烄jUw 8VÌCR r'ѓ^FU~f:i=26̈j7 v܄Ϯ9ffj#嶽 }XI̹a9 Z0.8Y Sgp$vE͓d-7=qniJĎ3)ABaDpS'A4(r֪Lʄ)2ulb*u4ղi vTBbƠs㪿42M2ohoV} `h1|L"0T PE[%mn+-m"PFOŹ]V Nr"LBNk0yz10Ӡ¹XsbNakUR3l+avZeQ0VdEvn:f9 4s.4'M4`--89F8XL,@Al#*'5C?ՄabBZXYT¨%iꆽJTd#pՀ4,RfTU3ˆDaR5]IiKJ ]K YFW Fֹ 7mBN`PY٭.YG@"3`)!Zz*J_Va|Q^[g qaǤ? hRJbjl\MC7>U=Z5P]$H+e+ҶEǼFZEf$ʧ[ 'VI/"~j*3{D"ڂIA<)?8HvNe _ƃ6.pH ݚv ƍ/_xx( suskY2ksϑ gkrLWnUJUG {Q卦KUR E7FX;z 'IQ?w#SvܞDvwY +.qKwG+XPvUG+ŵ`f&8U=?K5ma5p?X TP,j_-bZ ő0'B^ONv s@x*',5zlbfoJ4|B +Sb U&A6AUe ͕ _H戠+97 ӠvfC"{LmXU:â`Ƃ ;Y lfh,ߠ@X,s&ġ6!08P!LywƧ:&#ݠNI)%> w7pƞ.ɥC"GER$!aA/͂0*>?(N!1rdqd|a 8eg0&S2!'KH2 !t:x{߼K:\ ֘K!QGiuB&Tf*)!dBeDC"O Օ}S"!Zjn q_‡_vErB(/Z9Rn B3FLo5„LD0%GN)0B.DE;,Z*dž96nLZrty0tFa`C"O>*x ܨO Z/(Ȣ7VA4rTqtF*v:yJaDl0$&S}$ (P㇬&Ԋu!45&/ <4;sc!q3&Tmƽ.Bch:yz>ZrY/&e+6=aȶ͟Y*0'Y/t5QO5xV=O[OQ?DŰ*NzB8bHXW^u K!r5eѵZ7]WbFk"n1SۈtP 4@8HSrB#%b Bc.4RY~@՝6%[l۷kjSWX8dx^xiTG-ND` BVL TSlPeAWNEbYLK<=pe TxxC 0w Gapvks@:8y}Ъ>qQQ1- #; ݁5%)$ /'GR^R(Y=fg8ĒHcR2J* =d&'3xDR3xKfθŲ(JNn@:8なt)!= ? f) u*ӑk6"p jh*'"XM:DT]<%aR<ĽsrGnG88@p`F[ ;£xWIFH1Gu*{:SEx)ȡ`#9!-"s@;L[px<cj.W/્8P1ߛ89/Ū&e`M`? ;7{y}}cwuBD]{iLaC /a\EYOjj>ڸ~EN̡XmD$"fBxnu:;0N>!퓸B\ZsM1֢fI>qӽC0'}(} d3pq4Lp̥J-2(wM 2@qdBDk ߞ _tp%!ŏLIFh2RBؾ+\zmv<>q| X'J@M8J8xAz4i )i %CN)#3bO#CO#_IX hva#ML 4w\3bGőS=Dn4)YFDEv` oI؁X`pPo"!Z |GuNutGH|W[ȂY.n<9UE%]2K/]@ "4m#h!#vXсXJsehZjb]}zةc*vs{:b7aUŊ.ݝ1οi<...IVlsHѻA]h8AV aLͩ/KKO5yI K5U}כK*.CMoū@Ӭ!v-^1_C>%*PfTe ؘOG=nsts )!G[l5~oϫ۞Hpb'hlk:Qy1> stream x=mo7?T9͓Wpm9[veq|zˡh,iIpf83p__7ŗW:zXxuo_/޼=[ś/^Caq~Z?`mC /ĿE`!E _ݬNrZ|ZN#~!=w+&~}q/~E04 }ꨨE ?BlB24@|PJ"fepO2Z~S .ŒӆlO_euA~/!'5r.4-N%jgxE;Ir9d찄ڑv\sĿ#Or5~K<V>G%8ԑz(xmX`r]xJ> KG?K-#h„": XJ{*Fm8;Б)0 {Q`:}g,L?Xʮ~$$b`v V.d45거~*$e7kGe!dvxK5!ol| dL>K.ʖ}u2,kD0 MC#@KNXHQaQ?DxJU(7 K< 2&tFC|[`wBd&"R뛁:+.yP8x r_r6m'Nx;&QMb R j rhu{Ez/.c4!!4(,ag?f߲=d窻iJLķ hWK}jq9OG`HNukWĬ2$Ħ- giSGochh 0jxkLil5ʃ9igMp#[Z+>gas)#ށ殆0$63;km-p[j> ڍLY!̥ !A΃R9;g wmsXhY<8-jKʊ%tgtOHFY58d]E09W.V]ŖqT7g??yF3GJOQC'ix!wq$\6S uvITDRo]E 8> HG+ܘ#)L(q;TB8'sOV4LHi@&9T"FHS[971HJuK Y?1|38b= UOZH tn8։y}bzZR!ZeEr ڀc r*HMY@( mpwtbCFmc= O: b<7;*`F7 V. *2ށ/[V9wK|vA9\2ܲPC&S߈}o֫~0| n{m>lʌb= U_JnaF d0a/kW]eXBj\\xHGjXE4]?]'Ń.om  9g֨{˜I 0ACJ9b3Y9Arph lJ uEV aRRк/QBNh!YC24}1XΩbjm& jJZ %,E[0\{ۉ/ !Ow$ߪmx ,$^O"1窿iH, @W!2qE)Q{R"By/]f1)WG5\XkS2@fm|(*N/<29XPg^mzYf4#Q%.eH6MB_A`m аZ&ħ-Ýj[V6?݃÷F|OOՉ2o.9&jiZZ,X6tDPu R!Q,-[#Iryr(orT& b3nė6EAtI5Btc$tGW1G߷a#ϳQ\v!zLAuN).=50{=tdY -,H*ot&`9I'of&S|aoG$uQjM 8^I%I Ď_Zr6*}EԇRWJ8*RК ,mW.KtV q+LԧoAQljMi!;Υ%\EΎ"T]vto7FNǣ{1Bn˰0~|_[o|g8 숪]8 c :0 @˗H\ ػ- K.ѭ$ J&M @#{R2xi؊BM~E!;SݼogaR{Yk2cO}>'K,UCZe.u:r!U302܈`ΨxeRWk)T{Ŗ=F"$Q R}nA@Q=pv\J(⎅;-avߠ8WSU}7| 9|(_[ B \?h]UOB{vS`g 6 $%BUAˋ~`ST`ED,ǁ0+sV\S^;\ch .bАd U?r&4Euc!6Z N2&/r\+6Vʺ|*w{Lh}m]M XÆXkԚ5]2^[\p;?03<^[klgm1oc\6d]Bgnv{t8Zk)֤_HmG瞇X Ayz>c UYNcW]6i|N؂zvp)69=rVC#OH]`u׶cW]6iJ35fk trwj'O˚滸EY̆eɅJ>靁,s3/u88OӺCZW&H; WCs 8p-Sq޶(cqŰ{.g…Z@ښ&[f7m7V+l7b_Tbl=UxHlB"w5Z+xb%A2ػliޗRW*Yc 5]յ~".:dH&Cj} nT5 @F/Z\y K Z>17lE ]JoW'r=+R8J!>+ ^0DKWڡAM[xClԙ@)k='qˌ쯧ԴT$ۚF|{ܒH[ae^4یYVa`K eB7,#HiZ_+3"ǟ& ?80 uKZVs#Usqo_fMÄhX3k$; - >Јσ <$DZ.ؕӹ1r"(` xy!HHZNv_C|("T҈R[x "e"uDἀFڪ=$% 7imX~ SHV?ouX`HVͦ$%R(!DC!F-K$HÑ\Drʣ, "%~_V^V0$Z93q)OpUOy굒FNϣ)AV"V҈֊\`I7ïr hv|b*XURxӀaOҏ0s~MORnu %sI\Rb҈ 9P/X$A3D;4WLVk7u,Ocgby6I6Vɇ뽯ɄX9fΣ`n`y[W̙2ϝa[\f 6t1`amsڰ茶 6 pI'lUZ">x=ⱩQ 7VHfg'WȨ*=љyu^bb+I6ADRϳ endstream endobj 170 0 obj <> stream x\[o#7~7G9X $,0[kK,~x&ټIvy9$*~uaηj7۳nqu]]l=xy\}Zܮ֋j~nߎ_@fjD]Y4#-ᳯGr)N|wrJ| f'b _Do.r|=PQvW+^:*I%G=-WklȦj~0~qik;mIخ˙19 LqZ(<ح|Z]-~ hDj7q,OiYe0[\3*(K9[JO5_W<23CP6JƆhtN{ы˙ox@nb~kvitb|3}#\|ls?<;] N4ڶsNﮬ,!k"`ih3|%nuXlhCq[FW77Qjѯ.%Tӽv`1|l=Lhb6=N:>5 u5߆U)gU*"-ZUlMb`yh6|Xge%f}L]Kc85PK\ *q(f~1zگw$uDh8vڬNd蘖QF^9<G׋~;fDUo-Xm9(Co?mL J~k16 Hi&⟖K%:Vd}K(]?FG'3AD%Jjz{5iE O>G \Ί !-[/rx: ̘\X`N&A0ఒYW*&CO\!bɘHhS fRC @|Wc!*vy|t D9ɏ-rqHUl MhńdftN~әɫiNMQ']SP0q N9mA=>} kp#FA.Q0!C`4HѶƉTN)b\"eH NAk=hd gJ9OcL@6{BlEMȍZyH:@pNJQM e[<1l~9!F%k-g#hiݡgN9x "6š몓&?=hٌJ}i`%M0qRD**)}l#StӘ2JC^bՕh:4DRO*'՛y"0|YO#0KH"&k_%LgD}՚ ,H[ q,=jCGTY%?ʼTMSqIakј˘,1>QV? i:3t#ށXr>r_POJzLr6cK )5*xcV vGc4JSa'<kI~ ƴ#H P*TlQZ}dRe83f:L׭k0MC@7=B, &0xxVOk+U !b=Yo{ $t#;b_Moȝ$S}K"ȮᓲI^ޏƈD5P2he9Ixy3 4OqnO~嵟 ߣ=PYj"g(Mr18R`NsbCLibݳx F8=TS$ B |6IZMޮM:FYaWa<aMɋI8)̊%GHSnSt|agqgGxC"0A5evGyYUJ.%{,'gZk.bk:U0hf .v6nQ`0n&aEJnjmDl)>͢+ T(2+=`P>1ו 4vQ x,ꮖX0m ù׀VűG;p:mhؖM,rҦǫ;]-MfM#ݬKC;-tG7V^oqh~fN="k_`o/x' ZeXn9Qs"g|X_k/8R[t,i<:NE"*:[QD45Lj'y)UZ` cm%?`zUklf/+vwkզD#%*z^J ܚ߱.?dܶ[}u+bZg&Kܦ*T8 >֛mt?rq{r-3UK_F|Jo]Sкä+ݹXn|EE+?/.nP\LR'%SWըMɾ}գvk%v(̭+fݡuiƔxAN^b]&+){3KIIu@ 䝝tO^) 1:z0Qtu8&|=Gl'#it?uǶ,]NHY ]7%{]F Rtn`=1j0  ;Dp`@1u'Ri!TĹMt9@6zrC 'o?s) DS*uA M&">_Sp Q7N3& ٽ@:Vて9fR\C9Y:yhM4kgcrfxMF+88]<;$4},^=&mrE!}irF &u=S*4=V?&:`zus !6> )ŜZDsmVwh"> |&P9RoFcj4C3~I0Bj替ِe¼Gk=/P/u Dy B6^ D׀%.؏DZ1{Tig]ƒ|zI-3e^4Y=(_fwbN?0 Pإ`H5jVDD"$"Gw_tiL$Ac6STk*KE^knV@fг\ڈP߅-gTPf',|XCB"Zzq'hdr qYo5oK0cӽC6µy`G<b̓9a9p.+WzuPlXbK3ufr,[S5ʚܕQzU]z BQ&ܵfF!(a&IwjER, iĈ@1z!MT$:=wy!ZҰiH0GӵVׁdы~.wb)Х|&t^h^R$; endstream endobj 171 0 obj <> stream x\o7n>Jy|-wECM.mCPJ,ۺ%W޼ܕZPԑvə<~$gHC=ӳ^~^]ޝo~==z:}ZozydGOϏNcjv~y|f9f*LE&fyƕfr(]^z!ℱ >'j/jP?^*dSej2ՓTe&H)_MZMfU#zrAB߮7[xb<[NJջ7ѶUWnY-cn+S(PO^.7˫x[wS/.o\yΟ=1O4>)(GO GN''T%8 /o0!'TT&Te⎒UE Lr`<{4 Ou-*d&L( 6Wû9/PȘۋ:ļ"DX-Ygq/}|[cZOsDѐ{@/\/)߬b0&2V}v[tx=<{.(WUdm }F+,NJߛ0cĈR{u W-얀$+lv gz)b^-dh.H1(#IQpQ_lw?%LPJSbQc+ň|,ŋ_w+EfK6D~Owza0, c:aF#T{}qv LMat.ЀvCL|!DY1{>fmP[M} nф"}F&ghW81" Eh Me a8S)|!Tk 'S{}ეU&+~Ҭ3+I&=\3Mq<6Gg0Ы7YF6Won ڈ-`T|#-&91װʺk5oͣ1qF 5|\wKqpJ̨tbb\!O%7l?ohX}Zp&%N[mIԬĭ./Շvm{J^n.nbNm蝥p֦o ͖25(=IS_>񶹧Yn>׬3pQ/;QFjG5DGXdLL`",p4E1q.'vWl::gp؎(K"$X}mϽ~ho4>#"sg 1H"=9ӜefPڥYadE?Cp١e`D>d 0ZXH$ך.dV6Io^(rȿCkGۼv.JrWݢ˺yYo}svk=.[{_EI8FNY8b:y]dKK-8e 9ۭ.>o} =%"om-Fkl2+ SBꝱ"v妛+v r\AJY("KHc!mo;JXFӽ֦ua+ uc*0Zh*{[{ ]bgRWi{`1]v8T7N'(}(UpyR'  acb>>M%3MU{biؑ;Ɣddʇ$`^.ҡኃE` "LZ ;yV?8 .}Dl[{Gf--Y0xJ ICV8Kq @כZpAUȁ&XO0F[Kp[:+EuZ{ @4e/!pЁL|6f3ޜюwv1oi%|ֻ5mQ-?ltw>z anF˛eQC2+Z8ooF9YnЉ69V樐 =Hh4 pݵ)<S 7H\:E tai:ZX&EPԭzYճX]MKشOQֳD-\=,rP]2&9d?4ʟGEZRxd'>^w^B jE9921őEIU²VZNP^[rEaBcfZG >hՑݫ2j^qzӵ1Z)@|@`Du?90 l1*|uUG&cS "'ZL>F-V6M]ݟXܝmjM۟{N4vtWXVe"Wl_zz@]5& ss,b%٦A8/0ؒ0ۏش "Lh!`ЀJgh 6lu7t9if546KK˱|uQ<$?09fG%Jڳ9ij~Ii|'(e_i2C7{1M;edx_*!u  VҜ ؐ;|E歓Gz#Jhm* -UcaQHFYg76m!嘚%YQĦؔpĖ)Q'lS"l=a=~Uq 8ha9>G!'&癠4Znu9ugq:9y >{Ylly(69iuMZ۳QiZ >hbG >yGJ5h@u?PmӲ6QJVC5P5cpy[jQAqW9t1#lWT}Z#쎊V7ͣ6H|YwboHnn>Ƥ#\ Lkx;wc*Xpw7]t?PGoJXU+g^~8 ,Ìz]')Wðȏ<.gTK0"ujpwR]LQ@2WtIԍP#(AL_BKTG)E-/O\LY5nM ,H1gwD5ge'q& 'Ԃ*(b(.[r"2qK 㖴ҖDg,qK |c{Ub@z 9T2:-P V5-n*J1}зaPMpP>%٦#:b T gSXG$r+ϻB"@KgA:hӮY<6=;N|)ivZIQD 1?Z ag#U.R=T-Z 09 a->$8"h"{Q/ҏ1|! {%zR _u#[ҘK $v5SX0.'d3 'O۾v 8T .R%P> GWOePSIp m!2V}9Ĵ3r&=B4M+,HUzШ X58d߈ #{6}ɉ5'^FF{ OAN͢c4,QKN6Z*X tAt endstream endobj 172 0 obj <> stream x=n v8_,6D3+d_,ޚwR3`bIEVUa/^z?^\}{ؼxVo?bZ\}~ -zZ՗ĿEa6 ~qO./vI/K.6]+fd?Wُ<=MzԱ^/{GҚwۣOK~;lnqs{Xnw{Zi0aA4>]|~a9X:2o7AJڭn6BBO|kw8"< ^~{=~_{r'K&~0t{y9z)Z\,~%BjB2u05C+L^P')]O?f"^_r%qCǹB#xtu)`J6I !]Sc ر/x~E;rq@y d,7j5./[zBDL}bQʛ~#mR_E)c_g(F&gAL[Oܮ,+3@K  `'<]Yד<];qra^fJ1VFxT& |zC/>'P` x-p~ H 0s$ѩc<սے^NeqFZ&W)tR&"ubh '1bc7UyuBPl%&7@j0qggƥXS>ԟ V D. Y:v|si7Yj,Dę:)ɓ%[l] a'=F])ೖZVA ߱w{JpV#06BWD[V\رyM>6|X 3]cxfrF(LInTyqsCj2VV Z.1X#sz^yQa0gn^1sYF;WW"cI}Z ]&4`oQEdL Bý!!/ʫ!?ï ><]w? p/vO^m $cz A^9!##V]ıb{>t^Pt~AMs4r%acSIPxߣpIMT1Lqf*m&L҇l3!=lv v3PPYV(떋$t~m]\b$X7t X=}ԲTbۢNO{NĒW7&G IcL7dBK:Y6A6/# h7P b~>HrE8=d@|,2:ٌͨd74 vT'x$Ǚo9 f.~z%ژ{ me~}Tn#G +!& @Zow7^YK`iUVamBa3|#xV2Z`hwͺ&fAI6Ήf1?^.hA ĐCVDqG;Bw|7;VmzPmc)s083)lhGVYC+w dS!SXC(6fJ q~gImnhR&aiB ƐA{Ǒ2|О#X``s~aR%v͒l6:al<*ˊchPLxu}V$rM$əڠm])圼݂A6Kfֿl)KD~}[} =yz=1arK!Q&Ժ*7 XMm rF q"tU~lz3+'#ō:lsɅԅ -vАq{Ec-X{9;b!&o6t=i;Niߴ,Xic];yb'7G@0et:a/S5+6С(  9I;"h . @0oLA?{_ ҂Ջ*th{ђ\Wn}E'щw=[HODu3zL ;ۖbd{msTCx# ]κ.5 BDavۥNJ0lm!Iőٷ<(["M +~ ٖU\ q/Rʁ_!1~ZL: '+( |Bfy)¤OnVR*OmՔϑ 梟jwT`VZ~-ը!g:8'.nY(-'35BPMԳCNDF\P od& f2UM63p{Ie#.4ՠ/(|Qfp޼  E1`?꟪!} U59 kxT c5&DW8H\zT-f(6R11@awғY8?&FM0ɏ^Xvm^ C7mU Ѭfn&4uNx Ŋ)5Zu8OxsRkFt&/3ޛ:G9VP[(Dބ;fΜ mmI5u+ e<{ZTs۝ϒusP3cL"'OIzsj߉9n﷫/gẃ8n*z|=Vv QhkC_R^R'ż@``!Jj5An).6 lXq=sliXg{ 16CLæ!vx[Xm7 ȪpԖG3㠬OknXMNbC-CḴ̌dCSM{I%|uiB^b%Ö6Mˁ Wɜ*&̹V:92zy'Ndd`|dR~?!EˌX=sKkUSۄ9=urSw^79y9FI@ !%۪!5b gN)FpX9s 4% ih0QA[v$fA aN(% U*-Lrq; zpO"Y huhuY˧)klqȁSCDβ9lVy_6 {GvCiv;nG1! 1ڽX5DWZ,J ݽ&;Pv-TET9D@ⱏm"jmDwhpl"3&TnfDETX1 NjX2?oo$g ΝO #mX JzPc H -Մ̋Xˆ>=L=Rq I3f 4 K+PMራ~G~ru rxq[:%"];jKV[i%oϼMZB)1zHڤ(&AFi"_96Ok}y6/\Y?ԜhHLP5ޢ:EX z $Ug*XNQLNҔ6K2_‘[ËҗioIAo)w3^S"i!8CŻ»`X**Lѵ bi>˭Bࢳp"b)$:hW8 1(GCvYFm,#Á61OPDPY'[MC3-nD.#/?%tIo.VqM1!pgK1&T7k0A")jfZdiPk6h4,*-hvM_"8}WۖMHDcHH\5Rǔ>FuInnSN≨'v\P$ciP[dFϷKcio{Oc8ޢi ӠX6 Q` ^]`4jRh,-k`4%ʓ/|)X~tt&R%:Dya5l+a8}<*ݫ mAzr+ AUBC6'Qp& .dZ{1",38q Xf9*=(!G L^Z 㗆qh`inu Z񍂨8 %ıW4C68<x=9(/3jV3PP/?hn6D2ʭ+MpQtvdֻBDغ3;|9bv}}cg"0 )"j# rMt䨒:> ZZ`]᮪NjcH$1KJ09DpuR@kY#<ߧT$8D(->qQ4S%Zׯב E7܍]2Lsda` :cδc];k-kIqI3 OROcK$HsM]\4ѽ=omӇ+B'Bw7.phܔ~Aq3~$U}~ QT&MR8Y7FT$H6ΓW_՝p갽-ͳ9X_t1œQ 5Q+7ӤI~0O&D7ui} `7׮EcX| p 7)q{[x z3Vˏ#MIww\}TR6O#C tk׎{]8t/ Qi0hGTHT7mTSX&Z\Tp&-R#ꝑA~SXRz((7&Y(j)E$,wT""-LFm1EK-fQ/Sk녕R")ȼ#z3 =R5t;Kϑv(y _W{h endstream endobj 173 0 obj <> stream x][o7~70Rj5&'0nıXci$ V)ߟ*ޚdIX,֒EV"zy[|nyyZ|<ŷzܭ7/^,~xjg?\<v#YȢon 0] =_?k7ߟ?x;Yv'3BNV􌟼Ka=ퟋ} p$qlPͽUҒWzVjttOYSMw[t[TlvSvr7/V;$\ofqڟ\篏[i8Q~\VOKҎM;-! }+f\v]n7+![4{# TDemW/:e/z2~t,?՟j!-}  ~eP` ͨ_; !(("ӔӦ"o޾Z'Ps \-Ba[..?11 x/גRF(tﰿo_z>Gu)o0u!0XlWϟ]FC?h6qnRG젮HF芈qp +;"(/q^sk}~uz֟<Ÿ_v?8O~xЙ27cD`v:BZC,$fUݸgX(D]߽-bvh{ye(zV&<k^ŮV] U=ddӬk-4#zCAzE ;mqLb$Q3i:섴$C$!+>NgHf0!tg,Nў3ip{Xy #Zv'h~q ,ojX?b; |{ďۿ$*H22B8 b` f۵YN 63tMHؼ4X[4UԲn+j Y6A-Kl. F+-3&=r.[-i?4bt+T8nͤO ӟ[T|0PƬr#r\-P{+ .fF iʵ~JfLOh d)x߭Lhқ ~QѕntK~#E~|8$ M./mKM9&_Cݬ=6`VNPEORL"FXYN]ju y<3%Wmpi<XqSRH"C (O%hOK&}uˢ&e"Crv|$;C(KŬ0( U8Z q82FO;yZ-̨Gc ہ`$`߱(!g)7]E׷V(ۨI0: LGE8bh{ Z&WkwUŘ5#WÈk ]#谆sBuT2CvrA-c̔EDhC`0O&f{)WR^3#wʊx<ĺ<E] @;ڣ?MZcZ rgr5ۇ8(`ZRYJ[~QZV 58 ,F)W׋Fo{1Dߴ2tFKkq @ZV0:gG㛇 .d(n݌g1zZvAZ38;|l9`7b J8qK(: )@M bEQBJ:ו ΎK1H9LDJi3M6Ar1U! Bewr2GfA!Ҥbr1=W5[bd׳D:9%-83ۻH8h,\fŖ˖rMhxPnGؾ& k& uAΐ@Ml˨>V-s=z8Hg&mnۆ:M1 Ʊ2=JdJr3/ux:9WM*Wpꫤ?[Z~i$rxt :d"ؐKt/Ͱ쓃ɑOCʎ_ңMOk]|&ZU< ԟV.#Jzb9ˮxHuM-ާ3m/# kRMBU_/*Ή"~i*se_fDmK>'GFgDT`=i." ʅ0 7a6iTMDED 8,- )ܠ!2 C"8;nmxm@8S ՝{ V>SqƸc /5LCֆ~Z/bqha:kq1W\zoMN57^N+)XCBz`vdޢHbͶ[U-M$4'-oHԄuCe' ؇''lF,IV ؇#y,6!M&YkLLbhcO֑c5vr܅hӕuMzɸ 'YCq Xۻ(m(!$#R௨`ls x.W5@!l9 ޶k\1ܢY:u<`dC.Vrsw?YJHе(3V"Ĝ%/o`m[xn5vq\aef|3{֦3; t7ia&2>@ϊҸ6$)'G\UR.$#&kdnVO+\-8t%5ps_T"kaC|ڼa ߑ&*g!L!A.LTӭRl~kV`agt;1L>GY><}+HO`q"l \iHFߤIH4{qN4!wJ6~qAuA9}ϙeR)EF]Z2SRN2?d宣hO*;LL~2iRF`s:J;\OT1EiuX+Ǡl+('\Kԏe[[192p6`(I$ݽ9/Ƅ f:{Ͼj7%'L&XOzM>sGc@&_pf[l[RbOzxM?ڗdndzɻ3X@M)FO`̷#Z̎\y *1_X +ݗ+Cg`%oHz^uatTLψy0BNT4䍵$x\?02ݖlђbx/IˇS51LIzoI]ROF _w\$x]5~$ -?gex2WA  }tpAR >hO#eӪ{b֏Օg魍hΙc\ TV$aGL?I}J!l-'Ha. qIN^ tB٫Px*5Ur ip&|ejʛ& :A]{ aj5^yD>;] ,P^8[Մ!ï]h*sN@Hq%<=صߎ>Ei')%c0<?K]t*;PP2nW4;2}GXrUYۀ$cM|xY5ۆ9qE( Ba`+&K|EEeXp\״-´xoޡ~:U`2*=C2Bz6JHVcZMX^A1xmŁS}8zRɽyEƋG"YR*S%fа4fhS5[ձeWq;NhVwa:e*ܷ?6RNy`kp}b+CxR5ۤw^14#/gv݋TKo%"JS#V]*Rڻ%w[1*rFo#՝6_2 +N2yN<혌N5A)&ߕ^ oŧ\YV!f۷/O ^ς=UE4 3:38{0}$g kw5 O46dKI&(9(TATeê<,ܢ M+fvTnX>"  jF&>Q̑Ǻ}D1 s ="+1OHCC VIت> stream x=ko?Sa-Vsfpudnxipb9Vk^Yn\~y×dKĖgHC9$d]]]|~v{zy9o/ο/_Z_lWw˳ϟ<k4fWϟY+k:8o>&~nfmYg G rӣ|R|-</7s&mv?ϟY04^;*jQêG]TJ55$o:wDwh]͸~y܊GFͻx 0 $,zǣmT[mϖF Z>ys/^`p/hmI۶-9I/ƏE{ ~ԟ豀Da6'K,Պbm?m\a_2zS4D{!(F-EDx^Me s&bjE< ﺝE˺zzUPwVF?P>qZ&Gl45+`ŹӍD-T̤ZC&Eq26'vIUE`ZVuɽKÄ_0.xkl,0=11`D'}mOTV #.z!B ")sXgm :l%|N߈ɔ,]TBSz JhUTba}TS02bbZL h"*=*"…o9yxuxY໒9i`.gRM]0DZ=t+DĤx6 8tO44Qމ$& 7|"R։awf8 6TRm ׂ }D8f pNXh)PV%ڦd(xݶ[m8hSd@ lYj>3k0{ '-- LzRAZ!snU)Ri}M;ZEˈRHRjVĊܒ Xog+G|obFUׂ16;-0 =:ЉTp%ټS$(7КaI*TQSdM, 7(b/:FDO.hB31_EܶΛ^u^]CY|H'^f}m"C]gExρurOܧp"hچD~8O+`/=yZtQzM} `Rh3kؔirc쾨xtڿ.u0 hWF͊jAvP/mbOqE$U-PU !I,VN,Xd@"]wd_  $p|ό>6CVe,Š 8=a37A|[OFjZv5D3QW07]`WJΖA蠖@.)N ElAKJ)^JYZ)I hrjܼR* A0 S2zوlt~T3P?(/hrlpz9ƲpX/DnU>!Z('hOV:,^GЕU41oH%QvrK-iE!"1Te:m!4ݐEv;>-Q20tЇ}|zY,[>s}%lъ䩧j jTv_#% `toViǑ=S2e'6RҜ*N ƻD^4:$;6R]" 'JGɨi I#Ʌmˌm5]zz c$Gu̗턅Re=koP]#8mNӮ㖟 J0ׅi2 v!S:kԹf_.X,vg}y\˩_=hNaO&&w~ ]}a=C]jE B-BHvMlJwIzSZ}V후Ø}n[Xˋ{lpX1 r.]/%s!7N{S-慀# KX6lp'SZ8 7Y{sMb18, cAA#cUE$(e~.՛0|FMbjcmi,Bq'Vaah\1UQS+9ǍUAȁ~;b :PNRGhO*(S`w;I@!$pP%sUȧoi2KVEB/eḰULLxexj%QOhKɦQ,ZP3Hk(^#^.wfc4C !b{ֳ뎔*QZU w)/UJ++,lƯpQ:AK?B*xX)U;Űp[fNa'mK_/ܓP\݈B_QUpg T+ӟau R+Qp£c@?5w(|;}{ U-BffSK𧪑s*[N= 1e *#.,|A0_2;y`ń< 7jDq8<M*|\6s_AF[hA`P>)\]˅)(SmR@=MʠRvֹm^f9:Az8P贕&I,&!v !`hGRNp2\4}_{%QT,UcJNG1:"Ps'ZV:T 7L5>$ Sz@ճ[2uוW$2L]5X*gSNqwG/-\O`1ai)BkB|+9Q&`ݧG5Wc08nƥK# <(ucrOr3텉[&on}﷝A#7[[N1 12u/}x)| FQi^ P 6 ǂ{\͆g&j],|o#&GsG{9$uv5*c_WI*ܠSi"3Lx|x2NnΩ4.E C [V- 32r{t#~+.ip5|LةKs OyL&T+I HJ<'h4 4,́ GW!ߚ iC(|ovkfi;Z[%ݱΦ Np = 4+yh`Jsmn/NCLk0zXu>| Թ.eZʽ+|`*h? w⡾'YXzm܃?ll{@-Xw4;Z<ܬA(w$cyc| Vѻ;%O%IԒ4}Z@-%t+FvVTK [4[Mo| $uKg-!دf)f,:vl|' GIHzu'ul:YPcb qȅHFpӷ!{[Q8r9"*#9o>N\dј7:k?wGlB߿Dk|ȁ}*O;iV eE 1y%78d|5=r .%) WFBU? :EP&{9ͻ ݵqGMAv^+EDJv}BVHIPH `$rm"piLGP,H }9hPAȪX4`> ܼ9Eމ%1_6 Vsw^&ɂ9wPCxI{ c_JVy7f 1IÝ)i5V֘XeIKA3~ȑH38U!u,Di]6-eհ.0L]2YyϿzT7M{ nH'ɳ }ε7z]YYe0@4iyxr1ш0Sk4P|59< f+`xD };8,C\%w:u (Jy"[l^Hkim+|ɫ-Bb}$%P!uUtJj/LSD_AbxJ8 Ler{dN 2<'&#uxvgWWĽI 5LX {'Q'n "1mbɘTIGy]Fww1VAk>Vb>AE*qd))|$Np͉PM1n=˭}vc\)ۦ4&&4壟?Ry$%>f!2Yt%(>hyܧW ReWcKǩ1}ة:DRYy.[sXKd"Ʉ}to2\2n BDxSjM*BF] a^_n"{n^Y Ec=0bY[,  s7t4 RzL)"kUw"P*NL-0fF8B㹑2@)VUr#huݓ\z[fz.n:KN ks½erYK'K^43w6KEp{e{'t{-oq7F| d `s}įՔ¿Y{0g7eq L3ܕ/}{4'[._!is`E&z endstream endobj 175 0 obj <> stream x=ko9r ?Gj7_, yCJ8R" Tl5&YŪbXd?}_}>_ӳ?<|u}lշǏ^=~ YϏU J _]0:ܭچǏǏ>q>e'Wk~_rVSq;~n7\?Jdž kG%-iDգqM 5;;¯d߬Dw+Y?7;,4( ?.'Iv]Ұ~O/|'x>}C=x9K۲mglٳ %g|&ij~Gzb[KN>6>!ͷ9u 9I J3ve*h/WOZ~5\EWoNd[_}pBIB D5dKvHI cMKcs ZY}WVω:w ~6} fN |PX=w:8COtahFvQ3p\[{ >7\ua8ixg0lR <&UMX 9 e08ƀҾ2 bn8ۻ,G(:ud8Xb i'Uπ'qwv>On.n %d@c0X,>4 b(w>}^2hc [.W7h+]b L8HoL\0HBsLjL$t{q-S`:=z k|'*S\a X4 2DЬ*5m6O1R},bGpcP}k &5%-ű!1Ўah@2SIW)ecC۾!\MhZu`5ݘ)v þVah@K.d L}%r}e*\Ɣ|Y 4S n5xJ4.6 <^am=6%돧 aR7X]:Bq?{"uP1lfI 4dt^QO :R0Q:ּYϜ'JqL쀢[%JT=s1]qAڍvA𪛘PC _ayCCO_ov6gx7bpB5zQt l03v!66Y M,2o\Yc'pr<.p$lH0v5!S[N@S3U{"ݲ` XY*Cл!RAIvU qʜۗdxL,fmJ#BM׀ǑJ'&:VW5RNZ619CIeLNkEhӚg ",ؼ֤J5 k"]S!G ,(羮V*tuGIC@.YyES*~"ttg>d§2TaR tOyb#Bۣ`^ښLχ!//[=7fxc4:iWޝ ع}eC-ABDƈ)F61bQyyc.q+P<)q߭ VF.厺X*A{:la i8S1 S3m.@/dw0-,e1z8I]vDQBDLS\qnhX0C 4PJ³yY$_VZURƭˈ^6P|>43%\.!ݑ )I; ݶdHvdzyp6=$T0t6XV :J,\rj;whZ"= 4nG$|`(o~*cO2R0<kؐsg'Z>VANGTs.1vX%?F)hj1th*l-&d!GA1c#tce Lml쥐"±>52LJ7bxeG󀚮ЅT9QKP Wk䀐س:+ѐ!τÔ2Lx.ݒ΅UDFpJT &b(Ĝcw„%9%P9|2.Ða%hɢXسufZB 4뛈wh8鞵;J⡱H W/Ke~З4 LYӅq]l)ezq~wh=1/gmZxy[Se~Ab>I+K-ȜXbQbo9]= 'M7Wp)%1ְq*IJ;0GZւ2G+.&W9yu>*1rDzic4JA`\Ŗ1#n{IQUM~a5ĒFuJdW*,"l{)1窎ctx(.; ٶcFEiffxE*[AsW'W9'֑^LskFI>m,%~[[(/kЮVw]z.GDr%f*ɛUqly&.J64XME r#K((}˚::6"tg?bh)ھ7#UUC̢! BP"9 !xcV`XBBC!/!$HBE bd2–*٫ukZkEJ6؆Q9'Ҵ,ui2kqQ̆6Q$5يQ,c/9lb.5_{-}ǗAUNcŖs z<ݏ v>tzVCSv-:OkL9aБ <_;AwG& YV̘tumO)n{l?PiY QHU!3,Yߢ-ڌ =.55e$8WCě#e.] Ko"";p -gs8 Sӹ5}GX-V RY0 ݳ[^ wKӎ?~Dfb( zʜ8:eR5G - %JR&IXTvI %cJ(H ZWXrrBw<;{Uΐ,!"ĭ^zVG풰R8l2`J+`}iYK#6w0^va#;- ItՔ4O2hSUSAN)Q 5ʂrn=ήQӗU?e*\TvSIT :+c*(]oHDY>iU!6e (U̴_mh*D-qώ:5F;;#(q ,SKFyt鴇n֬Uڿ2?5h)![Ӑ~ְ~ۨGteE7z)CGГ~nu\^R+LHIٵ}3L=+~kŶ[roSI89LxB}x zcmAHݧK2M2!,6 m ijj]@Qx6K'JKzO4I R"hx4)RaQCxf(FFj#yN%+;I0uwhD8YR}7*aR`]qdhx'5)ÁCx0(sy;[.Ӆb'S2H҅NdXHg_5tw,SJʏ٥(OtP1TAԱŹ*1zd _|КNd +hM~>ۈ ?L~~D\/~B1,!rq {]p*_*%_._.ީ^Y\o/Ö 3M^G\ cN)>R>veDHUk!r4@ꧯL_ \e0x뤺@l #waPINu^Ymvo߿^?_덽ݻI, Q,o8f"$5 =t}-s ZCxgs}mLч숒Wj!u7,ن51Sg otv]/ f5 _H R]T}U:%)^8N ea1 k)&YrƤ)gx= ɍܻ]K3)2PIEW,lt|gesl$ayc^ r~}I$ ___w:gvSGvzJo>/hBt'C7FNU?0&̕ksI:fSGDAM\&vQo#>xu2<G[l=X__I -z髺y $E~v hj5/&&FVYA!ajHd>~raʈ{W}tU"u=Ap=%շ,3󬹍O0vM/ i'9A)OZ"GL;fM-r7VOms,+uW2h^-N[JyƅD HdƕqT/Ve6b%!h$U:˜ &zp3gR0Gmc(~*}Ie9p_yR;Uea/ +J8Ypo#;b SB1`/!9J!vGݢ0݌yJu/a饩NJ!w>R"9tV)6{#Ux/0aIjU0 b(HH7WUy 郥Ue#ec![Ѧ-UL *sEU1=k"Oz> stream x=ks7]OV4UUwI:RHIHBQq|Ѝ`0xn,Q3 Wry}Wz}zq~w?-6~s}rݛ׳??Ȭ_>FfGfY׶ݬ(H3Y=٧o|8#df3> /_݂grğ?ţJjR^ϊ{mk˶_~`Ŀz/˻-vu'yp1HT" wOGaǰ,!ưo?\VN/˫?zݾxG=Q!y9ۺfu]/f/;x"^r/[g]T/e3#!_6X_iSb<%2qA6L9&0׳~wS .¼m*̚j[5Dŧ9)][q+l cUMCs@Qg/~YD`IKWv$v..yҪ \wDV:HDGq!Tn[:hQBjڪQ^oo6!(JCf?L̄ȩ4m`&ޢymJXHr,jƔv S7G'Vu.a&L-fgGf; ^5jWR Miy}4L9}1(LtcaRmԠ?}] qƺF kENtj8WhrԴ!MПgBwVfJV2wnb ] 3q5ja⼀㎆?1( ݒK?%+Nu_rOú 7oAm;ܿZـ" $w !I1BҤTQD #GE)" cQ`:N=Vp (g/*x%yZz&eͨ{@ zy%yn|ެK^>|o"- ZF}'?z*V C7 ί7ڳ@evZk?ua~,0.6/m|Z>7T ۫-Qn {&0Ƶk+S*oav_Ex-9v#ʥK0 QBd=JJ"eBH{aQ$sLT4?Fx?ZZ+8I7юa?gF*<*oЁfレjxBe׺ߨ|1*$dʯX((=@~!Fk oJAsO1n[Lb\4cD*PJIMԋquK ѣ~6j^ɪBvKϤR6P6eY g渟F+S@ހ{2^ f;Pd܈_nV9>vOE˱4-(X+B,I0q!?M=Qfi=_hryn9?:т鑓z:B_ ׋ w&SO $c2' H2TS/9jox-uf s4KM@w@w_7GEZ"Й$Il!M4DnM zQ, N7AaƱ#Uv{c!A "G3Y3'C4͞j1dgg|:Wޭ/'d' ڪv(T *J">uӍj;)Z;} ;$Y'a<њ4Q 1Gi!f`"<J~%eNAzErH6v4 hO涓 lfZ37 ޸'P{惔 t5mK JF%|v[4JIbA p̛NXӶbSQ-UםS)ˇְs=s_GW1ԟwmmܬumPt/wzS&b1Zjm_ 57-24ح*3K~!2?ZPth&v}$ջn2'%0~ |C4bH 4+4OLnJ5j 5ut6΅av 0oww~ +3p,}~\ vhlO"rZnPv2QԜ.sl7`,-lU 2s͛6nzōvL>H>p-^G`ֵUƔHf 'XwasN9no]a7m=S[މ]XbDoeOJ1ֶFǁ=~ :VFtN:O0e[,~C!ſe+W$  iUқUd'(o\%U*Ȥqqڜ}lh\^҆$4P>C'`8lԭ̸N8.WZ[+Bwa21*nx(r,燒Vml8]Xya ڨ3! Shq]3ś;S'.N;c7˝!N a~SZD<8Sˡ I-ퟔ)k4hV WCuYg}bp:dmrbZDnQd`E0B%3.rzPU_`ł4qÜLeb(DjcQCaʓ-NM˺mt)㦅Ov@+#\?[lnN1B(`#a ge%`28 ˢMK&_T: #IN3qRax8H=ZpΕ1Ӡh%3T-FmRi] *X4dZ̗w^iiuQj#uQZd 죨L'?#Gxaa3 3[dTFe䨛#H`y$A {ZpM*3#wD(U=-[Z-vD#\|bvsqS!ؗ3|:ZLDjF/j!(]7SGa2 &oEX [B{ NK[-z0ShSnzh#37B]AGg~1Զʻ8.4:as?'"n"9Ica6t{`(b؂9u o=vթ&'{X?>> ;zՖzgFѣt܈\iXݿ*tCߛ ʣ6z<Hu;{9E]/  (wo7.H\?~|h$$ J }3*M2fXÊeRX9IN ؃ RѻY'"QiYS3.M/ փI=`밎AF̈ S[ EE!xv2QRl nQȑ:HƂ=y<ğE(`go?e" vqFɲs9: vbСW-io/$^UQ2rf O;AQH9mte Nr鐓 g~gtY˗f>i&fg4IPYS8y/4y@0UxO7x]Ժ$NE7w >wx3`XessB*.L*XY]MTDOB(N),֎;U sEf^HOiD%F'o1iy#foOICΛ/uUsS W.L6H=NYȆL;|I\9>5-LB]i,F.,!)#C7XD0qD||HH$[ ]a,$i䆺uGL)ՐKP*d8JlIn O)<*Ryqy]~abRxՄ'Ф1F(Inh0 W4 Յ{̠Ph !r U(T9eB~8P'a6r.F.%DKB\^ \^Hc(G4I&5}9'mNaDbSb_ۘ6IswۤNZ%_ȕ E.77WWvuq:>Sc;l!/K[}"ҞQ]27dOc}#w8#x")1\.{!B7iʷ?}۬c17"dC! |7iF9%;q@Sv(2Wc:TKsR0Y}M6Y!dr7 اÌhpḸʘ}&Ti1U.PXQ/^H8d( ƫv bfw'Mk@C"X,GO9Ec[bE2'KP"2׾U`pW֞Jb&wFN0ePlp h< "@n%z)m8FeөѕX#x3VR9A7ʻ<Nd?Ixǎv$xE|O^C5X66iD`AbpUX74%Fw1F##1Ɂ.xry#I/|»e(sZ{5Hc|i1mD<NyH3ؖt # 3s{fAq1H@y!\r(մCjҭ$"JהNuփ>%乤L (>oYѬFi`/emxζ)n=~3Pxb ~[P[LRW7f*vMIGs*t^6oxj}HͿ<m)Fi㩮Aƻ[&D*"}4?1jP&04X0}젆d72ucpKA$py" 6a_p&^,׾snKK;}@5ǘ"+"P7CKKܤDNO6Cdžu:%0 ^z5pFbbcefxUlϭ \h~"YBLwqZP0yLvDF7 Ja |襤zA哽Ztb~aAkgu XI^.%!424;v}1"K뭑gM4 endstream endobj 177 0 obj <> stream x]6nCc?u, ؎d{XcO=}U|H")p9H|UcY㧇qwowǯ/>ɓճxۇHVdUJ_MS1z+*ZW_>WO[vyֻ _7Yoo#~ /_wFgX/d>|0wW=URJd(U^qֹ&8nMX#|ru{eVvny+u }$][7[~Zv5WӲ?l%U_|J_|J 9?7?REs9fu]OfOZx=Gm tDZY2+44aGf=hY7FiXD4 ڣ>_.RRCڂGú!{TĎFKf1^]ű!Mr'ij%CrZN2Yoz_bP-)suV˩N%5"*uAXenG%~2Yj$*&SQɣ!%y g("L`O"ůIz>*P$X9q))-OF<t `ˡ ,9M򻠣%!s-xĀ@Q{,bohT%EMG{p&99 1k4w8jX~H(U$DpIAѐToT+vz9h7` qRQ ;,uSc3[hi BKBԧO -1ZB_F[[</. 1uza`e:_} qPޫm)ٗ79!  O 0x<NW/ՈSgJӈVm.z~qXHk,g`"V;^R3}[ڋ~≨?-ke$Ë[{ib9oJf60A Wq0bPtxG6K+(rMԏ`YwI4Z =>8ٸ7f儵ҎPa}kX0oKr$SLN9}愣*-\butt5J1ʡ$ Zq+ +o6%__JypǢ>=<,%%(ݎ޻BQX,詤<(&]\Eb~nR嬸v;NgkS^:Uy.,:R %}ydxyѐ-VC'|0j;P1(֠}$ %ss9 1Ι0l5E+l`%L՚&cg;8e6)cTj\|E;0,8dWJQ O冭 ,|9BOH\O@ln>HsNZ}!kFV+ ~Ӭ?owp!Qo\ʷ__Q="VscY&$Frҟ0'O7I>?-I/I  FVt75HRS)׵pcLۡ:1*_@la*@Die@rF[)Xx \x܁㽔50b}/pg?yʋ'Ҏ4}L;^,sXi)CNfHZKBC7U)o($`;IwIC5oIY苌51q4Ta%v oT8%fAfd@lN]w n/Uxq %U2 nu9@ TWCz*H~S+xfW>ƠOw i?^G#9K~`\Y 3!K]12n̝]ctR6m07%L8vGN\_i-Ou5'xZ@B:WSҖ ##g LtDi PJQfIk6y#Eߴ7DUgKeAO|UhzgL:1VB_S)Bc>`Xkn/ZOa%syw\,Ci')R.;`r]ݑwõVsj0 b}w9r뭹evü }ATaiY OQkA{lBfpr$}\sa>rE=<<)HiWD{q|=HbA}{HX?"I7͑EU5G`7#WLEQ"> {w:뺶x#a70|~2zⓡ x8uң0Ӱ -OtstP,%c4P޺zns+X-|Ag J3M_16bÕu8saT:i$!|,[iBLqҼ>)< 'v[9>M}%2/P %b] m#i T^:]L+7Ί9qLHf:_rA6N_LM0i՘ͻn6ܔQ\4&iVb25I5!uUN6cV~YV3qwpljBkY<6˝BMdx@(49vhNr:\ײ)o>=v;Ͳuw~yw/v3Pȸɬl*a^>9S=7{v'yaMbzcuUk1wxY#;3V75CKGAwaՌ ?vA67!HA`qA2.W`x;1h]TEX["27q4SrC4 ox+QXN3¯H)"}<*xc 2ԇs$UMq%l8|sT]QRW쌎 ISc[BK($)Q1̴]J|׎c`(ٱS9Ww9X|_ ^;'a3e94.38a$1!2ꚲ wPAl|1C2n*JFkvuۇ]G-;p.h]s9J\?l}葇3 P|It$ u1#dC,*Gh'c4R0u;j,CǧM fdiI}DQN"^j;G6g)N/h,)4x9w%RqG],#HҨYqG<&qn{m7@x38!psmP a==A0q8 қ,W#Ɖ|2@dc&Z;n y2FN[2YA$7~/DR%A$U,'\gCU "1׈v"&732X@iˑ.f؉Ͼw.⮏%+k; aaL-IS:sgROʉq׻Uv)8ѾHf  XiP q-e-VyT$̩b90'\BU̓99ю0'-s wX@>d&&; ̀0qқ;,W|2ẕ";Dk-n?=]ƪ2iaqjdU(EkTdFˉwPU5Ǎ*}${+ۤ<Br)ˑ&s0xs]esrwT xѾfC%4i8c]anTiC9QtռbMsDZ0+@`esXJqgHe(lYjrBsP%*9砪y9D;|JIh/!JӔv "hO.) [x7E)] 8ʩWȠ]lm)Z*|Xݞ.u!*[![ȉu4ŚZ~Lb"ڏF$V۶bwN֪jjm endstream endobj 178 0 obj <> stream x=ms63R ɛNf4ͥ5~iٖm]dّɿ iK7sӉ,xY.vZ\첟~:97_'g'-Wnuy:{ѫ7gGN޳ή^XVyRggGs9jVfOG?՗l7?flo~W?^UtE3yQ'Z%!!e^##|fٺC~Z=Bl^>6w43qmܩ~mf6rZ>,![gaOEZT( u _ ' T?eCq z =-?G 4~ jBL6 |SVU.%o6x^g>N"Rnww .,sQfeK` ]|2U-s1|h-ɫp~9+5報4k-nϺ:|;Əh7^cZousb&/%npom h-_ } xQJlws%/m=uX1U5 U񩴐3Hq0? XՊ8y8d;Bɰqe&kRYZfѫ`7 r xMcFau il-J 'Enתs&M64sN 7;"(v+d'|jfo_|A^<w^@PkxY2NX!뼩G%ORK\YތR7eayA{kـU>+a{03X%W-Afht ZR/NQzXS9Be !aTH #zK"nY ˙|Qv/ov اu;MM<+;mF}ӨRRY uIP$M Ȳ뾒e3qr\񲿯$/4ð ϸ'OOUJ-w]ӤDoȴ1JI,Պ 62"Ɓ)bmg6(٪1xՌ)Ek('0)p/K,g$??{O/"(Kw1Ϲ**@FvdYIا-~+K6 zppYAn_ ZZx`T0 ֪n僁DLșb쪟)KհZrdEhխ T*H5bpoO$M3$x*-1G|@|ZTPXQPnk J1*%:ciD^ 9yaz|4ꩇ;yÏX {ՖhDG$Q[ x]O֢m6BTL9SZM@購҈3!i(!uya8/wIY ${W,(8Fgi4sScM[M#lu0}+=7yZǪe奔\k"JoX9ѽt'@%gM`̫{~jCW0C)EZ2DcZ:^7 SZi!&Xf,ax'jӜɉj|iA0f L{pCha&2נ0_^$eO&'Na<g@Td w)O6 hUD!!oh,RX{X*=}@V <~}Smj޴F?JvKʅ%l_RU Dn VxB2Śf5wDgFG$Fp x^\B֣\Й]]uǂ0oj깩PB,h򢞊M~@lb|$mvL}Z,sdEaǹR+LSbg kx:ɞjN8՜=-s縤-ra`iòh0zX~7v+lF!ϙ*gν ?'FCwnR2GV8A;4ɢMvYC.:9bΛҺʽL 5*'HI Y:o8dtJaXe?Z& US}:wM(ךmHvޜ8!-9 L662o҃`N} ݶ :'^o3p=bwۉ@vXy5FzN)Kg"jMsR Z~XT(0c{]SiVqv5 5ΈZ9>Na\IwN,2ϰonӊ 3S ){i=bk®86_Rv1h:U˹(aΞ1tsV|E\>;3Y')_9NTY( ܄7z|,Y`l`awU;{UfB=:q[C#j-}|﷥z,w}h|E }s񽙷 {Q .iBmRVѭN @֭odb_ nrF:|J"|dPV}ZN:.0U; *s x^CVFr QHzHcE`m4['Q QT_^OhnB"lw ќnSnmw]U/Bܟc%gB?ޏ.$ޝ:pRD9V}rl//Y^Zgٝ94izuaNО'/\ Uz7 ŏV$HE}uris}:Ï,0*ke^Nh#QXX e.]0j7N4|7>=^{RP,SQVUڂD9Qtz9x#7ȹ~u吭aTmTXuaXy=zIj5EK,9MI,lrڴ䭹SC02USyhRh.%5i3lv{vy5PImƐޥ4] LT0w4i`FwNGI"qzi_F0/X,%OQHJ[̖7["lʟJk ؟S-lR'k* 8(6f:)jŬCّske$7_¾ endstream endobj 179 0 obj <> stream x]ms*͝F .9Wɒ8e;JwJ]QJd"i`^04]LR3ݍ ۻwovgwwog7/O_\]\_}w<~Ǐ~+vvGbWĮ+kܽy+ٴB>?~TÏ?~O'bOO89v'Kpog߽G߸Qmk+^TQ)~JˍXS4U;} aN.GOw#foO~:v8i -IvӦ~>MZ[v~.uj׾88TCy H;Yȭ<)zoe$"9]]]V_IU~5+~kXxg]M1XaJJ旹ttTY3TôUw|4 __]HpctN1nG|"4.!e5ZR}Y\)Iz%߽Փ>$d(u?ʺmvO3g?<~y~[oUx9Ggnp·7&ǔDqfz-^m(VJv$<=Aq.%^A' T}X?.W?ޜ.qZ{_q?;'Gi܇w]MTiYT?\)$@pv-4{P`n?Ih]aW5*gu#@_jx :}z|!Tc V%6h:3 v |f~T/І.Ok?_\ SQ{A3p|  pë`H8UUWY5ۮ:16%axݞ}t^aྼn@@ZWPsp$6*k~ lufLmE}ݝC+C r:ŧ7pQWԞOyBx73h7IvY3{bsM&]4?I`V_;U鯁/?! 6ecnmYJ8'AͯrOZJW"z:ίfʽ׷wa6/@8-B f6.ނܼ^[Iq3rU:| @Qy8ɥa}{ޝU0sou',ɑLPOat ~\2m%ۙX xGA/5O{nhճ^GƪV%\w ]NdAEaƎYA$l$L\~.rp&1F:A9IyxuyA$9K\)=Vmv-._ML?PXKB( 6(6LROy=cjIv]$ϯ+ёMJڥ%Nv2JtDGѲia6)bEA#`{U֤t42fbQ 1b&^?nmR†\mt`0 {+l: ky`UӁt4W(Ƣi1M'ĕZe̓ǭu{Ze`3?tF0ь/Е~閕-N%{L@Ĥ;ȼޥ]awN]x[oxum,7ѿA\Qh-d;罅u,FQY.N sh#ƣ)0` Kiy|'W{:^>;ˡ[)Uj62@z'Wfع8x;EXn48n4`n}uf|]̳=:ew(Řټ(yt$s'FHVHþ794Cc 8]>y #oZ ̭2y1B( ?m6rbV,L?A!6Zј5 J "|BH`QZ1Sj(#JOn5i 3{303i s3>!xa!۪Mb +&C5ɰ'CN 27wt%Dm鰱Ivڙs?E7"7Tin$mdLas^K'K5͊Zw>1eo2eo4`Lv/aM??3yI8- eT=jZ[w6-jSMc J~ v 漼ӾFFh܉!7 A\ɽ14Xg*O$>!MuXBH8|8Y{`ߣXBO%H9nl쮭tX[6cdꈧ,YlDv$g_Lf@'&kеYl$m=Y88 '̷ J;Bar9,6?0(&$)[(S2&d1!LJC&ӿ~ZJrE~B; WjLh2^ m͌D\h8Uk3 kUk{ƿv]rjMluYoy}j^53NLX-ɯ<.Ro'u/{ՙFKǵ_*@>Z"^r~:gg5-g!})IҵX|3Ф2 ʒWv:`6u^*rxdkM?pٯtm6~eMPZӀU8Wϸ6>~;n6 @[{(ҭDrme%k u޶z ҭ=~^¹bnvU;qtY53!sl[{(Uӭ=.7<*`'ㄾ%1nM`fϫz%zr ȣ^R/ڿFt?%mMCfcbo Uܦ[,LnLnmt:Հ쬐-X1c\#BYVKvW=:›ea)`jAjwm1Iő/՟AU Ve:"#cP9-WC:&Ζ0Yd ~s4l1YgU3VDV6_ z!-\mb0Uar'|ӝFvpQnTJ9:jk[/, r<>xr*]V 9"tCM蕒PN;}3,%'E"QjR [G -Y]Y,܈d?oZwQdNn$z 7IPyʚH[xn0sx}@%EF;۲^FxK fl}^>Nb-G֜w~K++w~(kFD ;+9/[֛#ÉNo^" nJsosfF)Y7[ Tl6-l'DfUȭRcr1v"o[?HnԙV TpF2?j`xy}X8i/5__!=FBխ1j_hŒjǚgZShm¸ "s=d$cy[Es2a{c҈U|̊sr{cҊ)P%bIVs`yտ~/#7 9͒W17KJ!7o L+f;ȔۓfM*.?;H¬,ЧM;ld=nim K5 V-Zw*Η%cҮ"F!g&g\;9k5SJd4g>< ?Qr܃# m5~NØױ%mf隑AvD uešwVܑLN*.;y']*1nk; ^V4wPY殰۪3SLO*-;' oNEF;0o@̣''Ƽv/C e7[ATD"(T8SԫC,{jɘ1Tpb $!2Dz͘t[wh0ay]P&Bf`10FpSV䕫䐖m0=ؕ*;,KfՌUVT.%-i~S7: [>Ye3(]TloٌWM K:q@dQn<`"g+[@Tٮ1cE]YvY6@*m~h.06S >f_oB8e#u[o*ИO5jӶi-?sSJD4X,֨ǞX8N7l~߿YCFcgm}NO#͆,IO2f?h$MLtԧ 8gK4+]Mdbiɤ1oDb ?3\HŽSJDHHĐ5~ "fcTx.0SXРțIJ{UQ)P%gTh-4llZ̎l1"]lG TlFYv$JgGfTem Aj~:g^QgLjknd9e~gS%Di83_7RSdyVhgNT*!6K*BWdΙF@]ukegRo%jD9ԧӌt#j]iY]L2rf uchc=uLl-U"[~zMF:CӉRTҍx Lj CĈ[Ξq7L*-?KHLqnccuhJC8܃g.Sox(dqH 'L?;egsMucfi>ÌLaxaVɞq6J*-?3H^UkNvd2I T+>dGf|ۍލĩ0ܤiFs/7A]3c?)P%e-U"ZvFN =ь)_~d#6x1gU?\7VKE7@-U [δ.o $\ٗzMVX\xd L \WʸVMvdz$lFWWX^cUl5e| 6 * endstream endobj 180 0 obj <> stream x]k6n>v͢e) ;0LvIv;`0qݍx<~yPI$ER]`7Ү*Q^W۷oW四./.ww_|O<ۧOȮUhl]|xD}ص OwwO|qNٵ۟Ka/o]'ߨża}qO%-iDSϋN+.=R6'|g??>/oTݾ;pu~8t9Q~Y|ŴC󴻥4}yPz&z ~۶m[9W[_B#s὾&AugsHKR?* o/ |[ 02QAFM#yblA;>, a|ǻFJ śϨ\`dCwXXXYorw~z]kD)˝BԴrG⴪{~o"{lgbG(}TreH :%{PP>w']"{-O]jC< I'HRO`2S҆+~3U莨B^TE,cG^SyZ]sUJ hu$$o?;D=i{eO^5=gw.N} .o=g"g%љC+4Cz"t$zê:3a)iIt,յQ>h _UT?B9w#~R,y({t-¬[/fDR\QyC_W~"mo9_=rQUռO0Q:lݪJ.S/s4ysR|!㞒 qd5WEO{xPw1L|4vYCÇj G ? QN990DF?w 8EGa3}Q#5J#괛~aߍC5r !\Y΋$s_!G dI9a$fM׍ƱU48S$:aOڳ*{7:L%}ѭ1DʨWM HW1Z6W^KVw@%=.?8M<{Yr%xl)WaĔH7CJF\IUrrmw#jyiBjexy>{wNS߹Ν4睺cTN9&l(r&_ð$u>1:<4W|^ہ*CΔjh); 'jCL"J5M/+,)(5GWj %fK'oN! 7(f)U *A1=E9nrg]ReK]p ̉.!MuA&nOO0s0$݊FCi^2X_ef^ppB٪nz`#:vĮy+Pm1@ &id[.#kozM2`CO,L=4&ϱkᬒtQ$}#X's_XP:uIq:!s!!6tgIGuH|~%.huq/ώGwo׆WU5qS&7:x@6E PLs΍/@Ϲzݫt]Ý ~~˿~õJǻ}g>_Q SKc6ݵFif~Y¹HX)h)H*jKDRB ~F Sմ }\+\M,`(Lidиj5{~tO}Nu.^WZ tt:DW@ldgm8/v[&+z &M]܌"[ ;0B3)dl =Yn : T6CW[ٳ=Nrx .'ZGc-|N\X~ldrN[/nF⠦_C;d܉e.h®$$ː)S""b<\;o4G3-&&abӋP(t9so.c*'WSO{ZÊ 4.WЕ>鸨IBO&=61ۣ*΍9]ݾu5W)ykcgǘTx#AlBT'vM+j[yJ]xD79ЁF<_|y_+ ) OJ IxCDBFʶH|q%c`Kdb%#I#%r/ zD!##_[ 032;!_#+124J#IሆK$T 44;H(DJL.!rBvI%z̓HэT"D^A,LTH4)1)BZQO\@Vmkkϻi!# slm,CTHKHPI2eOz{7a9FH]K06w8DMǗD+}%ؗQ)lMWeD_)G_*[ PR*)T ΅@f@HVe6k$g5_"L7_"=@%&ŗD)2&"eb|Q4L(E",; /(zJl/R*"=UNHɾ`"/T@ f&KĦX9)[+EmTXWH22@$1 l`bt"@j[WX= t`[0҅m#„Q[*hV> |Իp^8+x 6G苰.ש/n޼1tKB eZJhzD9Tc**!f$}_+GVn ]ȏ%FOjM de=5EJۣ+d0dͻZkA*(j SL0ʲުЫ(]W!nO: >j/O5lUWa}Y&݀Ɇ/m%Dj/+k@[\mxei뫫fd_]e+;WŢ-j vQ^9{󯷭/f/B/5;gE[|y0_^+{ؤQc9z_bUlN|ryZE%a*1* VRgMKjbl0/CϢLg Ϊ [<_ |0X_g夥8Xߍ]oYk,h{JE|"_ |0X_d5|0E)ܫ 5k䐨l%DEf_TbU|u @԰u˔1qJka/ #teJ_kveFNJWSU5QCח芫VY֓WelՕ^9->klk䐪mZaX+B,Օ @ kn+Va}q&r|q$}.5D#AmeĨ(wsE!UM23QZ*ͶMEZ*T&|ru 9j+;ܑb '尣X-}f2X _ b^DTgbC 7^VbN;-M+}IUyʗ7yW$zJ#j(.55}4Tk([ޛ0vDQ`*1+ I9+~.$!U J [qUNjUA ҾOd1c,C=P%VŗJm@clVXϗM3YH8IרHIcw+KJ5 @$en3jʒ2g8ӉrˇZd0 i44C/M$c' Y?Ry6AdWdW:Y3ݭEi|TAPm3u=pGBI'}&z>JqN9*Ox6^"~!в^r4G 鷹J#gNbz֫G1`ioq隠<4[`*v 5ou5RGÞ KطvzQK$pZ䂖d'Ѱ #T՜[G-M|JҮfZRtOAFZ!ZAkc_O/3=u&I۵~Vzm㙮-O#FP "1}N|-3Jt[u {+:_kU:tsX\VdmVmKVCE֖ ,IK6i$%K񇵑Q[@bȥqI7˥~k40s y3UP?O`P_2D`m0DAIev`rt#T#Z8JVyݤOd=Yi=*p;} >՟&<_]rݴmAκ&<7_Qvesӌ=PD\ =T$4~ w q9}C:]{kψߵOB5|6{8*Z⇫ϗpN:⯏O9 $~a[ HI~B~麹ݖViJxHOnG;E@%V>hQq0X-XnwܕIlhG\YnV0Y丬tvFJ焝z鏺#ǫJ?=''pb |bT 8%&RyfE͂J^^rK+M fߤàB I6=k#%wQ; a`3fGHxm@*ToŖii6 Ca^2H8:VôBS/_0KEåZYg_(ݯ-3Kl_KY!oDt) 08O}oHo[n(ݻ,hD}UM5;Qo ]߈դ,Wo9NMtB7[ rxD!8Pl ."t2G4U+2em<-Fi F ak$3)ȕ@`kY!kEe!8NshޛS7!-榯>%ѳב<[kډM; NZfݭebj9''i7"彺{_e!!- ?4np\XLԮ128OQ^黓s{!_6S:{[c_R5 )I7QM19=m糾!_\ f a?@(sfHӲ GWW@- ŗ뜦J Q7)#`&F-.HY.-^72YM\@$eifF-q/́o!9'["!h0ƣݻFuU][n5-i:ŏ7=FG/juP:t×fnx=m&K^1\QU/}#'[$M*TG(˩3c}^0/](k0 RR{ưC;2rLr뺡xk}$fի⓮t MygGzNv F1Q}!; n`GMk}]8RϬUh tZ5F UXv'D6-7"&ZAOTjn=w&ׂ35L]ϸ*] y+YAoX[A0<3[TfexD!tckt 0䭈ck'v;_sXd3ee-j<tUPkVtU 0䍈j~2m1Sߞxr׷fvd(- s~ECފr`m_|}/voDl,HXڶ rzdzq[V9 9'WAW`h%b?WT.oI"O3?t%aF97!Y^aS!вM۸%2[^Q黓k!_PP[M,^$%{qn@Pф4 \,9E|z*ZpʹŲ~ (+P쩏*a+s<':UK'g~~΂dI왔ͩbE/)紐xr;v,tcMn[Ј<0mHȋSʽuLQydʼn!Id%CeC 9,ng]z@fT/Jzv?q7~NVt{u̮ Rj7o E0dI<2aݖ s&ixc (2`9\f/L"h20ȄwR,x' ׽ёC|8(aa<o;ݲYpuߍ^7V]0F% EK4+KqoҸ~[B5>Y"B`k,L|TnT!},0t@ר [ޝ=:ƏΫ#0~ܕzs\6\<=U&> N^4㞷wHB1 LOۀ _3+=O7dru?p=q^.{a !t ܪynQ v:z0v.pmY_0d׻pM]_0l]YD؈zLS#VzuFVXe"wFF ]r6Ե]gG&Sw-h{lI/Hmc֠jƼ)H`6fV%0gV&Xm̪'Y.l#QrۘիAg%> stream x=rF?vOUkBg(?4&kISMk[u) We^?/o}x~ڝ>x{ˋw?l/q{xroϟًwdխ>^<FV૦ FWo??WeA%g?_mNz愐NڜTnwg>>uk>zT^p:#>qz}86l}ݓ_ߟ#^YmX!Q|A}Z%8+nFN>l˝{']l=;jcߖ%+˒yů%{'JS/kozy҉_7Oqc+Q+78fc]A#mL^Ub"=۴E=W}xz oۛb"\ռ`|ś%lY>~M@ .xNI 8#I[TU^UD` ׫VmWغA~_'A鿍CÁ?euC8CCq}zXD ^Yg@˨hU>;v-__mNvNh/bI2KU=Z=3HեPj< ޣ3Տ'Au{p jǦ'Icbc(JYsִ>L?^:2pX!@&AHB"`JŷV_@l|r;[7vazވQ`m? 绋0=[CtAݓ!jūRL֑ YB(bK$Ϋ⫪:{H]T"Dth^w!jChUUǁuiW#X3PÍkFH ט2#r6#q~ݵEcXNSf< ^pصei$ loL W9mOln c2(?@a{w#ЏAG?Gp ԭx,TRQR:6zf^HijqQC_MG8{΄C+@ hkbRˈ i؟ܘ!ty{ i2FZ!:9۞(^M)1A^hH~?`eZ ʄ7 ׇo/=08Drڭot>NYo: LjM.Hb~HNLF[WmAbA ƚX ya4r1'kb/qvNd2U*G@;Hf`? ~o9WA36 )/QQais-T] BґTrԫ0+qg*g>K/7w=|3|j\&!uGf ~'5j@jk (7@ ypTda 8hʱ(t(zz !M Xg "8k"lPv7ss.yG7 ʳF] ڠ2H7OFqqQ=>}# >YN԰DjUW Jה߫еI "aʵB6N?‚Gk#2Q'/oLb'suc vQ WK75S(=MRrsّa:aRÊcCLqukj.~|M Ha]m453kl;7huUt#t eP qz͂[S(g&8 TNHI6Ilf0<Ki^M*Rjͤ5cHDTf4ʨ&iROM5etq)rL&⟱CDk e4AlsL)V)'eH=ˑPHa|4j[fE}8VrJ ]N[8u|H2b_81j|h$> ,\Q M'Fe -d$1>;N\t[U֔H!9{4&#p|kQrQuHoqQ+NxaU'Ư9e6G&!%vHHՠA6k~dFp币& t*@3QnSُÎ*~Yxg*]2J;~@Exi{jn<gC*TJ<B+jjrAI)9i+t9S"54c?c?k7E9ZVkjUى/zyQآ䙄ti3vه[,Cۦ*<70!K6 SHFp(-;XJ$n#To.5yK -[M]S1d-IJLLߞo7 %@$OSΞl-%V?"UH V6ݩFz*x ݮ~b}ɀT T'B]~\rTLߦJ:B9-RSBghG]C%@èt:6U7`i5eB>8k4+s`u SVVEOe;lW8 v&WRpc+,V5u":`󘭕 ̬:if,ʠm? f}r`@ KI&Uy$wepj D]ऍ94r UK*ocoށB b7!*z8]qq\EU9t+ۭm?6'# N`+2O08Y7E1bK|4e[QY]qiᮅA{?!SRdط86KjևXm}{=_I2b^{ƙXsummv?~ $W{4 mQPG3S/)!#8T3]fM6 }(u\e}?+i!Y◌;@]?%qGDЇ9>lN̹^l t}hJeBS"Gݏ ! IHjUՁ*&3~.Kd豙t:vtFz -A}4 䣘cydoD :ZНȅh@C.ju+2I,g$kI*sI 9zr6p CGぜmT[։B!ٮ8丳-@#go!D]*W>b&MHMr$HEY2l̙Ij9ןh&V#qӇnGtv{#lj́.yG2JtIh͠mA3XHO6'@=4 /gDno &'60BVnEfEK]a~K[M/n7뎉?u>ۍέn˝t , 6v}j}BS)P Ak*O7DAI̴Kԣ6tc5uDjD%b" Ɛ(C>xdךׄv)$2v^ 5 ȏ! ͤL@6w4 _[e-RI/1 d{5_Mz6y iOW^"/Rߋ;|~%!sPQYYHu `9ZMg2G}&~#vҭ?Mg`6+D!l6)H:Rm¶U]4ł߬YInr 甾#U&pZ'@*~-pC `a oYSoNU55P28T'_QUyvn,:o6'HCF$V /4&aYͦjY6ռ Pw nRGMsd>n8ҌXE ĞOwϮfqN(UIz4?6DeK)CXU7,-ްhMBK7155 EH*} # ҩV`| m09r!}vO`iF1QpQ|Y>P 2 5@V wr)k4k ,KyxW"7W!Ҩyb)2hW;q#<ݰ2xeO+PYba<$_ClXFG4&so`4?Ǽ 7x<PemDqt}_Hȫ9Mi͇/K[Mvk$L q /E]s=.&[n* ׏'Y-I[B ]޻ب!dN`%T%BB^| m2("W'hM߬-AϲpDj5IˬU& rY]tPbpӅ4km76. w&AԎEL_nCKi0hRi|6 ZJLE])AxBb,%/)N_61rۓ&{%¯/{q%J/_$>nX6_4 K0HmZ)v*@oMh, IBOYsu7D)1dk>5 0>5"tG"\DIOԴ7DYYtB~W}t?o0xWTU:/X%$kLe]Yf}f3ɓ'H)>N!7S i?gs)P2 >h10Sp&Ȉ&@]eЮ,G9o}(3UjZ#IKζwku 6w{sw |A45izo4=Hgj!wU*lʍA|sw[HZ}t n%$/݀% +}3]q[9X$ޥW7iIW/X GH_#_d tH_/C:yVa6ud_|_ׂ&]gBag;{7XykntI ~eƪ.lc{-۝qY5sj@H&)ikg JJ n)|3J)ʵmOL/L?PI=6Iy~^y z`8ENG֡ =%7Q{0s^]&VC|sG7Oc1~y봂DSnC!1H.@~Gv4OLw})pG/'JaxhT9](:2*P"d/q!6E߆CÎjCۆ2 l! VJm>8@?AɴJ`ըS_'LO'4 $ŧî;+smN$< MCŞj*,= "@5@{+nԏ> qRbxqyhr9ϵA,1|_ZpێtbLº"5gΏus^n}t<3אcn @R8n-K|v?S/ v@q&$ay:( WV Fv0L|iSEDY_тEuFӋծ?03;&&@4h/j _,ZZ#j/ _5(ɠsp{E~o,GfS%`Jͤ ,LZMW]LC(v8RH'7CT  ӷe%-~s7 .*GYdžEn5|mgDw*r] Nf)<͓\?HH/ /m㛄seͽ+`>>m o[_暌Ra=M]4e?FǕO%UnI*/{uMG[8cJ= 8x:TP=" I~R|25|. endstream endobj 182 0 obj <> stream x][s8~OU!ewN'ޱg:%۲-;2Ӎ /SSHTh4_wn}~n]]>>xzܭ6of_^8>{2g/_YϳbVe )f^g7/_|]zQwB+4[)^_·vڟ}p:c"{SIN2ԃYAG:2O>E9V 6kU.+[-.{Ekei muv6DKHƪ>H1Kfy W:h={j >yN1g^a BA W8@Zz+y-a K_;!6.=Ô,/Slɛ_r&^*Rf(N5eEjILҏ?6@aCZtT!;өE!2w3<#SJw3xROmOVp^qUq{2*dF Rͷ 3LZեSK!J>:vK6( t`S3yjc|=uVzlQ$ z aA|~EFh}˴+q0G3 c}xd!=o|f/%uƙX$<mHD뺶IH zF}E!-ݴg.}1$F%#JyLnGj^fAQH)Ԧ(905*t&UJZ̊JT S"8m,[>wWS0ؕc#>{s ``? PLH}TL )aB|gHȑD8D1N4k"POPrMCMb`%\%B OqpM:`1_ g[_כ'tWl\3_h] ]" "Z``y 0OP . Z>p?,Α歒X7O R?,H>9?&.p¿K1Ei.IFG(R8OCŔJ/k]/P RNtzޠw#g6ӈ XW"T\AXaJ&0z:bV) 9K'f3k + /&U8Rx6Bj=|wy@Oyg⏳H9׈ZVr`%`gZ5"X\yDR&h Y 'fa۞oJ>ɼ߯vJ~Zibʋ A'"%|i>ywDweD\O=.ʚenDo4Ju@ټJ+37ATD@'UYYvUꂴ۶-Wwv&{fep[0EsckiS[3eYkHQFn9֖&^z?*lpOo|ՐW,p*K* fx>e뱼E@1«'K  !΃;20])46Wqm -?JxyF.VrEz5?%u)<'wqJ(Nuifm&XWt3qN"NS48;GJ-tu {٣+n4%^t \()AL bl۪kwZ_+]W *n qցߦfQ~t;Ԑ4ƭhL^՞|a$$q+#$8 0+ITlPukaJfeK7'M[iƒs]%ǭv*s}c6ܯ/ǻn門X0%Zy!ʔXFdB>xСLċ/zLHsjH>OxO2}Jn K+2E3Dy87.qRK7C |x8?KL (w ^ZCHPi`|p=ENw{iy#8gd 2a7XnuoSՒt/-you"Xvdtb}婪L*쥐vIIuؠ2hi]3k/.e7O{CtpPvX)ɴ(Z+[ iso't\ўv{4t&Q1Zekp#{8:s >aHeV;|@cչi-AGh߲~];XtN? +Wv2e8*x3xMʍM&jEQXٽVo5ĩ"rM=0vN:@U9dB.aqYڻrCK&,Տi%Nfn:ef^09[9e&\F =%{Dz643$,EYjULc4CozKJ߬!RKP&jNW lXl_W 7s`Oz7|%nZq  eQӀ&g39aXtZU<)rl!:rzOksJՄ{_M$~MJ%2wHHe ւ\vGN2GDm"q餳B25P:Q"mֳ̘?m2ym%D*`.k7Qa=d]l8t!)pb7: k7N T%ܱmDGo ]Ch)"HRƵDACDOJȉDJ5{q @ˏt+n$Mݕ4i("/j- i<&'k nu<_s.ӐxGXi%͟ םVvNn#9ۭ¬ '5|*YV$ SyJJ0$Fn\ \RN3"qj $mw*k)tU:9UɄ$@eGx:%&?&]=L!⨉m/0fRYwD]Aj<#jn߫єZ5:٭x{y(뿯Lw68DݪҤҿ5GP8[4Sm{VzgВolNyyvVWcS1OY][io`[ݦSӉ*!SƶzQ2E=neUV[cՌo<[ܫV(w՞[8'# bS)S9 [sj!)@e^IQ.860վ6YUbt-KeYLjV*N dZLݻwz*i֫!i /3).z3iR՜ A0`gE3{2rigVVeYtVil6NZ,qE+u3&2N4x3(P}NB矡"+`T^Mh85xW f+NAzd=E ']ْMOjɚd??Bsv Z%랭. (38dj 'fVC| GzD\-͒3bxYf`};7GG)Lh -fq WqIwky+r]mVmt{ TKdBRF4}gR>h*VNCdFW({L74vtIA*.qrbE陛f {9_&)]lR"R"ͩb [i&R%W+S~zk!.Pm.*\52^~) <00vRfTˈ,Zd)Yx.@%tjavČMm̄}slČfrx㨃㿔h]T,H@ 0P b!Jj+L j;[ "u\.CX]/Vm{tDcםq GQq!9&3#Az#)kt4B/\,UQ㊆aJkJ% QDgdjHҨ<*33B}K5+7;u{X"BT훝C/× endstream endobj 183 0 obj <> stream x=n9XG^؆}l/ݞn=UX$J7Wɳ/FR&F"|[_-?f|[~^]޿狋ՋOrۼ|9{^]<'2fWϟY YSW|ֵm3m:g_?gϟ^z!6[5| ݯsv_ϟY0T/^:*IzV<*8=ؐm##hj7#'Ww[h3[tw<`E~]PՃvkKH:+7 $d ɰ/~xY]KeO Ӵ/[]Ӽ<WSgؖã;i͔a MK4kR"jh˴Ug?y={ vۘbnZ^1>]ն [79"RtmE^CLj\jגU[׿09! АZn kliwA]I3(ꢗF| @(H-֕Վ vU5.?`]:oR/ gq#moj43Xf~gRl!(+FWo|%[|(+q$.oH;*P+I'xvQ,gM܌ܯ63xsIv9ù="}#"`JnIpO-/`<{650@Hj7H͑#$XVH\{6:5\%`)}]Ab0|u"4J~'bEcIb L=Zp-kֻ;@=övW.EokJR[ACr8F #ϏڬyY^+MzAJuq9 pB2y[iA"|D|)D"iaF4R15LZ1k j4U1@;% u P"8--<k阻I@=|cVbZޣMJ `M@/KI l&M?2Ccl|?.4I߁Wb,S`UJ2&gIb9`u5݊5s/?a:@լq?؆AQd6 P0pX0pvwd[Lދ?`b:6|lM-Z&ʶvc]4-К!ڗ]QK\!dIBbl&XE)@tig͓$:> O B]:NBFAteXIiz9Dl  KCdDx8gӥ٩eƞ.f$c0 E*p1Ϳ߭ё)4(vc85P 0`9Q:y` ٱ]˽eG;]KMjfhuaSr>'R-TPUQ ^) v(glLQ6Sf5Q)>S$ܤfU (?-e~ꢲW1)]0vH3u5htp9B²,X(rC.7"}c&ɕNG(2r@ nɬ*ZF ˆM}18A(1)P:+{핲J+Gt_‡ DY:LZS#ezCgO!\IIXХ0 E&&m]י^ Ԁ9o1jq,RFu`ٳ( btj`F'< $ ʇ6H! d紭 㛴uGV&m_Bi%A+N(߿OwNۏ0qfb/:|kSfBiYfpSYF٤|= ʔ% Vq9cQü8'4b? I[<:oMFr/UBkaè/4#OTf?rܴMq1n:0TNtԓ[0QF=cQQO njI8,n%k6@S˫)dpڊ?>绹y'kRJ j ұnR4Է6i4eՔ f&fS, $شlȸ:-zm1˜<5'@ *"( h5Ӗ';ZYl&)D,0 M@';u{_O ]VَDJ)/P`3mT0KgWz_&&ǔlg%lDɮce L:# 8}RX}IT V-+ ˧־~TsʆVF$q>q/:Wii&0q:`BEzxQi?ݡDHW]=$[^nvFy߃U`w%0L(Ű.itHYM}`ٳ<8 6m;(fYr'=uQ'L .:8oi.*/J <.&;Z.HgYG`TQ١^k,KƦMk\c\?EVfŲgf=8 6jp{ڣثJ<@ u\E@"0<Tٮ@SXA(J8 9ôP04:1i8݁ @?UϢxp$LGy@:}W@^y1/j,z*^9^?]ml*\Cq/W_䝝!w@NiEb5i2mJL;(=KQ-rbTC1V= S; 6ix?Tɚ>+B:LFz dIWIm>{Jw${I׺bn\y}Qa\^ԕۿkڪb;O - qJX}-^BKAK۔`w5)l`C5+iPO յA= 7Ҁ:޷vniqBfUçH]hS!ލ44H~6>af7>xx=c> 8TG~1DkQAj?HNȊх42Lp( Gl,^/AQrIB1P,pBa !6%!!n2=Gܘ 6|-U``[!j*vqs2%ʢ0E^xśL0ӥ<'e k+%Ln&sβ)N^9wDXXD~ZgmE`2Bɢޖ0 ]dF64CFG*xd'M&*(@+(v`y rRTnJBh⃍Wv}^!:"w6fY.fCgU2N9ł(0v]oLu%**-BOUř"4)$ #)ZUM*V3m1=`,Z` dD\^?nNJK7OfR싗AMP:r[E ?5P貎]F米  UWBAA` kr.ф^i.]CQLאַjDEeLiC'd >=y4 (2=Ŷt+UA|uƶ<b9Ng}bPy]ZEԉqXXM iU fPt=2QDY AU1zkhg g}% /j=pda-xq/'sEJ_TJud#C͎VkZǰcQ0:{Mm$0&2r$a&H+!<œsz8rȑ+;Oo+{eJe5iO²j>1clӲx6/ 9dl=rձ ="a\sKd P1{_b hAv[O 2%XVAd_;Iul_v { dձ> mハ(SuFv{Ϗm$0Tz鄿!dI(p1!i X@/ġNt%:KRAcS#2ƗkQr L-Bin HVXf" X(,X+W'4CS)zrXj#L)U_6x!eO+5SyCFM{G 1h=0 [uiZʀcjXƁ '!|Pe_z; 7nAW!^p2AڟF؃f5uВ ;j4BuVÙdg@O-iy*SK[5hۅHA>zBs|~i^o;칒s৚GSSQZNu_Do%䪯'믷'W}y"\y8T}č7̓|BN!j7ѕ2ܝZWW3ް N+}T{xAdg%4했.&M aThTYvv 2|eT[⡜l@FI\T3sLʼn;]ށa(wۋ*0P:A@&]jדuFc-~X~>"7 ~Y|U7'78+Y9ZTЊ̍szXRC4ëF$9\~uHDi5OMKO.>lT>MZUKFHwz4~<) IŃ=N^w"?wsP႞~;h7HroNV7 ]R@h!ۜ;u(t }3z~YHz뗲o;Q&;0%Q8"%6 @BL:GO~2OIvCA1t"q(;PaE_m{}t{rk./VJmHDE-QPAJ/f"yaRL*( ?(]]e͏@ҵ ;bӇ>k6AΆZYk26*T50Ӽ6 ;M Y+^Vq:&ͥ sblCEJm%T!r^vl,kJh=M̫*1N:OκLŔ~DNҨKĴQRXtM.R7֪0)fZh$vт֓ o8ywvcuE;zr= +iVԧ_[(;D{,2n^)D9Qtik8xYX 6Y!~Yk}Q9S׋3}=vgw~]]<>W<ԚY09~qkVuI&5Jjtըѽ /qMu}?-פ szqxmD$D5B̦c;aQR뀅`1 endstream endobj 184 0 obj <> stream x=n8hkEI9I&b=<E'mݞlxD/V+v0NIUź>.6wOnnzvv>{zǏ^=~'U#+QW|6M#[-/իOǏ8>aGh|BF}[7Zu 﫳=~JAGQRV+^TRJ?t&G6U;| ~s̎zoIfۣX Q솠=U-}WTq zQSңcDNr fu]ӗϸZg-=W?uK؄ cLV4Acp!*&R"J629xiD+ocahxU0 Z>;buD DTd8AtUd]$%;Jh!tF7#q(1'w1w TXLW3j-P [S2(թ I(^SY O.WovzA&ڨ+C}Ulʠ/JT,ڑϩ퍶m 1[zt(1VFJĭjF:1/3ݦ[<[Vyts#T &g` \e-8xBEj*iVG(( 3 z!Wjp,v`݂c@}jZdb"m BZ>Jz3tRHo YFJv;PލBuI]\^vr'¹N"(kWoXrK5T^JFT[?IP_Ĩ0XF*y&!]By<,.m 52F"3ZR6`]:C4AHl6Dh'pL`>/-Oq 7ǤG3qXe&!LMs!.dbYF9ݤZfǕ[ =8™NpwI5S0 h=WNѠ,FwʹQYn=K@ݑF6\mVyቡtڹqXT0dmѨxhy;ۋFs5^TfRTh˝Qkn>\8 C7ߎ9o *8.uBHõk8A"8OPӵ[\xV X /5|P@2NV%fx\ht`.s ɥ)~_n VtO5盏:}i.2O. xam$e`5uScyՑv4hy$W9|PQq- ;$H$AulCʁ) ?3pX$iEᏗXN2*#Rdac$$ANߤ@pBlsA18(ue<AIr$JN5F fҙ2T9gPؼ8%4L;Ѹ´cI\ø-+8W$Am8C..!<^$mV쐀cpq7, =AEκGc9Yv>0KbiߪcA %OQ`3l6t`6 lR=T˛j]|}cx4ܤ5=U=?wv+"e8^.‰ KhU>}Bnjc( ANx*D.+@Vy3 (\x_G 8k01cN ᤡ(NAgm K?pԾã WXKs  $EmtSk;&-=hLC(4 1Kb&iТAb$败#j%LOpn٣-AHA#8#˪ȥAsrtF?$tc$vi%9:uqZWIʽDowԇIm]*SMIgbF1M|~Z}|ʢJж畠XwC`;ӠJPQOYiN=9}|Īı۸@:(PmۡeکS8}Xh6dNr1]Gg]j?Dtco~}vo͎=rM9t9Ϸ% \ߧu; ]G=_K]廡EnA' .[Kul'Lob )ͺQISACy duYRSo?=:#aa 3$%k}ZDC&´cIH!Ð- )$R$A5n N co@nM]A+a-F3W"Q u$(:b2j{+;Q 3,Hԑ68}uH|DyN01E?~PAA00CˢZ#QGvt֥{j(ey wW&P=x#@νs+4s]i uUk HfPY E,>%xDA߷di/cuuء%֑H<BTbX똍9h31WuDGy+DkDi'G pɌYx0z7 K4:AN3傏1x̸àVOz%h}11ӱ CãnhI"GӠpYD ˰?]ބ-r*}rP%1܊D(𬏝ʈ G߭sJ4̍<)4d2{W{;;9g+dh}P.? SJՋÖf\{lRώåOiɌb,UqRVuq*A[*XG j r;fr7͊'EWI}t/tWG>w#{ljtt$ટDAI[fph&*N~[E( FvA endstream endobj 185 0 obj <> stream x=n9zv׃AOfb3';<BڶYvdySU$wv[b0fUź>9V׋_NNwm]?|=9~O>/nVnuynog߾훓lί߾ac*YS/fwo,ϊa7훋/c~G1cG=|͏~{ :;7}uo'C:+YVMxeV{sFshhI;˜ټ9,X |ך.~bcxcRrriY ![8L{pHTK/y׳Uua"`G=o\0.cp Q5Y?qzH{ A_~m`5\fyj|bXrtџ=y??IR_+@tOMh֖Y$%IѺHgz8>6;^xfc_8^D7-kLѢҴ1cYqA@ݿA+@ߟdR|=b P_) ֚1,*X@vr_{x Z"ކ>n]sŋ m5١'¯`=᧖r  䭉J3br +Sf)39/φͶm*sDB `@0T]׹#,hRbú8.\<ن9jp!,+5ߘH  C$I^f9<Pwm֔Y(ץ (oASTXs01\Ʊ:"} ^ Ej,wt jo6 }N; #o߃.\G-p i"`/QmF ^9OغnqϴqZX\>^%ĚЄ0IE+#|T`|) 98M> !PP>>W^*кj r9k~g})YI+"2Bz`r!t |i`M 59 _Lz3?Ѝ#h嘰tX hGŏr-Zx@Ȇv\eC'~ w.'4!z3ÑeUX(Kj%5KRie:đm=c?nΚ& ֫PQvfD|*Y%q"rJY&EC:Fe S1ba%G2vߡ3+ַcTj1즧"޽WAdXmnlmF+˩6լ 91%ݜ`6Uմ+7El< "3Y$8-B.Jo-Z`ŚywmPĮl}Un>{-R+ozϊ JdIZ[Lau@84\pC$&~Z.v&{M x)_O]n94= m*RZOAePʢj.& t7σf- <Xzr{^"Hh*t%_LF9A}T)</PwA N6 :kU#$iHE"+wЇ s4+LBkmt: ݐ?ESB4bpCy/p 'Kɾ `DFUpLIz-iiRs>\?,KciK0&ABi9?YYlG;] qU}!NE!=EL[7Cw,n,.܄,o\##U~&Y~0ԡʂ\]Z1@x9b(@"MOr^emcWX!]y DtRulQ:W5udR'K7܄$%^wGcrؾaVagK Lf\1֤zt>dF%TQBIQKdG Wf41ahJt;C3~}nh\E rh\ո;+cr7î|<(̦Ɋ1SXscq~B>xaui;$Qx!^mЄ Nnoz7\L@Prʗ~Z="ɠY#)ʋ\H_E;CN%:2vetMؘZ퐾 g)%CivCsVZdElY)d0N9"}HVWy1Ժ|-0R^13ƇZn7'9$S°Eacxm۬[`0O6 8{.D\3p'dOE1ɀ4])223Uy.s(G^ n:(¥~ _!^gp'> ],+kA6N*~3Ќ{Ts,"Ta 'e%7;ʔd]"H8Fc1M3njaki2*ZˁtwGip|9:JiG*SthsXZI-y/NH쀏#JA(iE 1вH<' gKﲀi LZ֦))!~-4 8ʥ1ʽp)J╋ L7bcC5H! Ϣ*/Фckh)ǢKϒ_4 e*Rbk6'yqE r'p|qA݂XMґk?*$+\VB@7҉G%Whf6ǎ3Аes˲ ;\5aDw{z[}e:BfSbMlsp9l-*zq]CoO~-~d׸}gFMAQfW&8SdG%ʤ t[ոAbD:9)ʈPgƦ KZbNP!OXl-P@@ C10  䛃2Htpb7Vy4 .%O5?ًN05K`mCI>p*aO0ZT:ZGM(Pj")ǒjb|C4݈>a#k~]GAricʴ$sJ*F=u<4z~\SIЋ 8\ocDVZX^ĈM2ôRsGW'yS,/]֠Ĉe9y [~;ڞN՛,t.'u{ezfwD>*hVGvZm^1SX,rli+8Ǿ=z]iטXgqq:kbH{ru}ՊiE jR,V95L(3zuvu&shS 3 - 3Ӗloi4w!?AؠFIcƉ)zQ$ .M}Ґ^ p9BfO܎/՞6yS%mh/ 8iΤ(iPt-=]>oiIBˁ;uV9.uMX SdC9m~tzi~ qך쫱QLu1;OHKyg& bj7>7n~tn7w[X1+<9P{1|@U֓kl3/ (7^ҩ-[T^H(]fep?"|uRҞ7rM"ZqZf$T")u%DV!F0t+BQ)Q)u۽DZl)f5v2%$Ȭ_#FN%d@`j<.G%)r0ԫ[OCN+#/NSҠ}3wl;` 1aq>k,@AYQnK[ǞhJ~\LnA4%0Ӱd 6X?d5ABLa(j'$Vs H$e (L>k8)4qy;zJ:jQ^. e֏;7޳R@vrJ{~~ۚL |b3Z8+ԊX E:m,L&YY)@&GSn4e8]zlPQ#BnChP6Vj~4Tzr2𲔚COgu]Υ#ŻF_m(unT߶ױV!AQج bijcQ2wتu7-[mQcx+nitEFl"4I}w aW7U" endstream endobj 186 0 obj <> stream x]mo[7 A>>$Y)hzs7CX(l W\Yn7EQ_f8C>3Czyy}ayy}8z~~uny.ŋ٫o_~{gol]\?f-htgwϟY`:nvv?8Chgt_O~]8},I{ªZ^Ϫ{k˾~Xa $Ձ%yb^ן,@SSœ٤>̿JvtRujvŹ]OK̓fgȞ_n`ODq]i[Ҷ-~߰(GY[A]xA4Fh~sQ2Ҍ}dRܴ]컷g Tx;vw)`}אn MK2ٖ..? N: r[Y#BHX54=;?|;k1-% i5i(oo&V=L=&a-N:mZþ?4S +kvYxqKp@rET}‹G>r4e\Wx,~/ORF? (Z<ܮd"!PbWeb+8I "JDi?ǡAlF9 D~W jѪᗋs;fh|5DqTZ0%a&_C֖Q^nQ Aw+t#&)F݃^MBИQgOؠp0 }QalY UPPbEO?IOH#2qr|ʠE95=ɫ !զ6%*ڎ$PvI$ȷ_sT8y6J.(0N"'*TÍ\k*e|b܅JU{WNGeR*e *s}ʒ e0%ˇN&̸#FרJ sf1N@_} 8Sn,IotqSifF{ ,G5@ t#Fc7SzPY\fn?f5z )K9^qD{&iE˧.-Xzpq No,];2fO-spj-?߇%g/#.QSb]KYM5z0Dz DYH ;?2˜Іa]LXdJ:o2TͰ]O@$S17qI)K}"vu0G: SH^YAcU^U͘"U1gzeKcz} N0K6fz{^'<'d\8J51'Hh'a5س7AЬ@ՏZPjZ$IK fǬDŭE>C`QV-!EgޙM(cA0w~#.$+Y U]' YQ`0 @@U+H HgЈb:l0Zb6N&ʨM L"0KrxA@׺A\MЅxj4}13$"v5q'(#^$R":/+&"qr }ނN(qG0wi"Jk藜QN"(pqDe#*ۋuQ5%L]oS%*?~jj0i;&_R/Pi} 8qVkIHt=fj jfqUsmc(g6)yخkGw)~j{fN_J혈C%3R?~˽FDT/ϼ4OߗO &M+jyR MH1ۇ|O sz$T 'OդF! B )+M`JH4M=hBV(FZ9~4![VE4&dcF>8d28cfkfJMXa+R垅R*V(ք}VF[TqEj,RPEqɹTXEWX"K9f'};}%Qe<|riȶ,Dc+ PBHV!]B"@HG {8\nd/ h)tn$Yw?Uq\OAE22 Fw(F-y Mbx+=3+@X!1?JBRi|r*Y _dJ3nZ] zJnE2(}'C\65tt[e6TB>%&-HGK'8HخJ/uG^(c^OLu*[>3Eݲnd;LuCHCP..^`)MFHo~:5΁LPBST\n]y&#+@Km&OS駵j߬/ M~rKIdo!;2kn9lB-(R l(zKV.>5~%v8踚x#}G 2-%οΛ-1k懗ٟD7'HB)9.w0ǔȐN2FFkVV7 KQ6Zob2 * nj,/p?d%yc}cF*oKl^(۾~^ۣKEq}Z۞4^. "S 8Ttsj tQ,K-ލ&l%ntQ '(C-QDfk{i9 DwV;-Sؾ[N"SZu5Z+γIEavR?dW7ӸWұx |7#X?B'z p_kջ#Qţ @W9[ݗX`#VFd$Υ0r>XbNE%iOsqi#K)ՂkRkgbI)ẓ'\h !C% `w-)|8"IV5 @mNT#j1t}~!w[PG)8m')Ii9GRcf t.@*5۠NO9-y7ţfuGVq O!<4-~L+ @/ sW`kS>LAa_PEٽr{e=':I5rw>GR(e4jb;/,ŶÃV” >"IeP%^O!IY\Υ>i-*pت!a*zUa QV$Ryԡ8'_Bh 3΀2x9sO4M z."d/C~KtqPdͱw:JGv7V /:#XD5[W69?}4kes%lG]Z=E9'y=\@ql-~%2(-t%Zn3@ u%COTJuр}8"a0X(=uvo_6e&HyL< cߴ-{S|; ^ݰRV5 [):re?kYL\Cw]P{bK'KfX$|W㱃\i0SQVᡟKY:96TSSan0N?C*>!b*ǓRaUb*LEMXV &dXVB}{oUfձ"$ en3_#kX*.j397i~[t3d =TDe,^dW;:9D_ |p)1MSmKS:h&4) )SdeWbElMbfNˡh#r V%R'fqرQlIF w ֈDˍc޳,v5MH%ЁDѫNF|g"UҐH<ɘ<3?r~霠;4׿!&xٮ '|.Ml2{2w{$1;u1a&w.ELSG163bYD :qhS,ZTm(| UQglɨ(.8@xH ]RF.Ied = ch G&D^}J=uP IqeXҘM[@#+u\ ȣ*t{9Oіy* 똸Zԗ\"Wuy v䑙M͢:hL@A_pO}A>%8CNԥN<8_Nglj:#d%stM9<'/LYM=vUG:^5Os'%E*^OdS-lD-*x\mw0&r  HD0IO-Ӭ&Lc\WC@N[;9o |e^ўh e,28fX/. Y _HQ3KOQ_RMsWceJGD-1JZ rfpȃ /U0y$ 0qxtvq>ac\سը0fԵHRܿ-P{*єz-nAtfB& T$Jlt{ŹO/NN9R{;.Rn} jB&MgZ{ t`YZ0J-)Ql0۪N.RUU-k|gC\5ݜa4>zȳ"ƻ[ R ]+"Kx`g31gq'/ mGwc\ޯUwu.Xe_ BҒ, <&Wu$Wt׏7[nZv>h3)a֡^>,)eɹx #=Z."vPzcNZ~ZZu *5JnThenDW`Y Qsj|;oA.Wo {9AkE8@ZIzŸoz&֑:pVyզ՝n~uj˗+D 7 (dHb PVj#V#7kZ>묶*U7/IIh3.d~Q>ilNlIS6Q4*b.%4c ›@#|2?9%G&O.Tpm5ԁ@DhOl )/L>`V~˟sܶn\xm-[nbQ\:?·讝MxC, &CS0[`yz3b.؛iƫV&Z]$*]\%TF(1K ^ ${ZluTw|d]:VHڤQUFҩ=j&#yRfu,qU%!O+(ms YAhiQFsv!ƂS.^DQSRSj\d-^PQ7xa񶍤y4*${Cx(K7Aţ%BAc֓1!)u)[!oZg`gF.9釿Q` ӈȫMS pNf `cFt%4r6,cs]mhpۇP!4dp]bG _#i轏rNm*ZEF91 άjk47 bqG!N8ك8=3(YA\Z!ףS~OF{3HXp0aO<)AZ]{t|H[+,J@̙wct](=乂- (DP*wDh^ ĞZ{YZ$RQ^-Rό9d}+ $gDUsU=܏Ą9},e(>zSIF:hhNƃF;&&hpcblبjl"qոSթj jZiwk?5JI=vQ>O{AE͈߯&|TDkUVM4L6bu$K աjP qGrl[TBoQ٢j<-^-,Qea~w3 7u=nO&J~@K^aT~_kHųn瓫B!3Brj62Bpb^}Z'<|k`Vi#P66I:+ZIU;"uHLJ(4Zg [Ǝ뷌6I^ }vFV Q's,vF/Ss}l{X SZ|g,w#ƎQ`$?Z>Zgץ\;'Sj{!#5jEW!xD Ka~ tnd('8 cޅߓ#e-r"3IK,e!m>5^\_jOky,Xl"iCF)Mh-zD&sFgFd'Iuth![Y^,ĨM;Ftu@k(zZТ]yT4XfO fċTXB@hHSXI{ZόВ k Cb3no1__nU]_:ɾI$*o#=b ?0d?#=/UP;ھ7R~Í7A隆 "%{ JM9͢ݎYA=&Eo\_L)O2V2LЅmL #N2qhcO6Sofa c3TG-.B@aj-|kCsiӮKÒegͷy-ѿdcsԟئ_5Dg.?Y֞sԏ @ZmK@1%Xp{ l3V0ȍ۳vYetaq6A5^ endstream endobj 188 0 obj <> stream x=n8d%^d8did ǚQxټOAI.vU"Y<ono=onww_}^|qsn..Zū/_Ű-ZZn6u.|.>Y>r:Ch-Vgl3<z^VLɛV|ٯWdqd/ދGv'`nn+$дvE!O(@Փ77k!;OkBS߶-i_]PgK.:x_0 .~^cl_uhqR<|j|248Ú?ܡ5T&(#Ôᦥċ\-Vv> K0!tAsF2ݒЄ7hJ6Hi !Mc} Q߰t?C\ݢutZD];,vǜAcd?Eͧՙ0{7[1֩qLp?_M(PxB qj [16'QtŸq p~xLmҬļ[~H|@}lL*H#d/<ʠP$Pzjt503+\5\+txS^!A k*O4C &0@|[|q@AD 7t#XےS2=`Zـ~<)6Igc4tFD(no{_BZ3N(`HtZ7T ad]DH#VA~=\ Dƚab("„De _Ap!}`۰뛞 jqʉ!{,vo=K;_1= "X-e'Xc+~VA7V Fgp5 &m;em.gw(? iٗDڟԒ955mz{1`&&FʚrjBBKqYdИ䜘1 am(+1> % "3)al/l4+8@-KzY9+O,u)P &ʀ%cRZ1uGl[:CXZSm*/lh/#Pꬕ \|a>VBO]FqdSm;F_^윷XFDHGc0cBøY_ RUJ cK )wqު=ƪ_k|yzkr7{PZ&^;CZ1A2T3 :אMR$ 6 7o[t(2 \"f>$߆PxĆHcltg$KuTv3C1bE8^s{٠ϟ[p)tZ\A~rzJQۥH[V&;ÔNq沞[H}amҝrC`{\,7fAׅ~ ,d&r5|p{N$s6՗VtOHI /n"LvhTN|FÄa0i'Et#B/*oշQz3o ǏЪ7Vj]aOgtɰv@VSBF)jnĕc0Jbo1<{iJ.?YA|$]0˥OJ?$b qR ' )Ď$n N/w;qg5Ʀ0ma1iCr`'^rpmj1,b(Z܉X/sZlf%@F4ME(qLc/) ΛV,&I JNA^JPS16i 2í#}I(k_+Dr`d+MTNhQ^VDz`1s9F, u%$LK\;1-E2EʜHJAeqkE DCpj RIQNY+z%,|͌1#\nG2M[ei;nuAzd);AC !\cڔdC|ۅ d7S/4p5:\epUKp{/<ڼEmûWz D!1R4U6[ԮJcqĩp%͑U qN8[{lԾ㆜$I7qJrBQo񝱖!C^sƺ%Cz%e1q^:i/|UFe}'gpٿ wc 3ol<$$n}fr PnBv'$B51 [Zhdh̢'P,$;ohא⥝= 17fh3Ė*3J 6:jPNn9Fϙ9Z f9N=~yœ.FcE2Ao[XăǺF9Z4h`2'A_/bDn,bՔ{hC;C5S<4klԤ!JQ:/j-Ώho6!');?ZCQ&Х&\}RKe]ԇRsy{XG|k/n/\JJNKv%#r{iY.aǜXq6 * ~R}1C.'PKe٠e ZpяrXz- (et˪eb,ڼ/R©=.vW7,2؍ hICn!8~~OF(s !njs"@Xh$е 'ɹ:|/$Ζ7s J:'c2H(Z/tqF'QX{{< /g>G5=%?4B'M*lbl>&1|baj– M-e CYS "V}c[>a'pP3Ŋ:SDYySL7Ug:sB j&±1D8ꚶQBT ֍Y6rdq}K\1!%搢臈_/ޔ\繐ys/>]CA.EF"9/+ˉ*Y[>g ^lNE >e)BpZ2sqZkof{,L{;e4l!}~z \6;ehe hpNvSo8 ٖ$?6$)%* %'9rBhy۹Ѱ|+{ŏ SE3ɤ ]s=#ZdIuV?@0؋''z5(MT" S7h??7w:sOnp~7p'7wqB<+.7B /`UT錝Ur+NKU@3?N0`|`7ѷdGd!RAD"JΦ 8S@$7"􊄪J>8ԋС֭9D,}yN438p?`D 3 sqW·q+wB唎4Js Fu>܉-?YՏj'He!i |V9gf+պHcs4:: |lGp:>x[eqyɈ F-yx|e=߬'QmP85/mEIIȖi'II17HTmԤ/8xFz)L/ [y5%D VlktӪ5"~<⬓ .h''ʳ~ɛP9蒔U)׸8O^'SÕ-=tnZm{7޺4L"SG5,%3>9UlVdOj3mڝ9yI."ɿf+e9{cQʚO]ajVl ?+]j͠ 6`Q㴕#-- Emu j>;?f+5&VMqaPy*zMvy%7AJWR>L~T< Ƀ !@OeY"X wA߇B* Jh?| Y82E=( 4Tȸ ۿ6 /e"7Al^*ds+3PX4^U'j>ie ۽K1;9vI+$ع5⡇kgԽ4F)ȇ)c4.˾=yts_ɯV<%eL컟5kٴnMˀtW܋kArw>]6NPj4sɏҍS%lTW҅J|=LvSf쫥C8Hܵ?ʋPW9:X0dQlP7)0j8C';zB)i Byy]$yйYښ])_^/;K< IkܿaF9j &xHw^P^t%؛5bw# ̩h^a>fbl4)0 }/s&YA .6z/5M+ 1 Fx2 )Ic`RD_^$u:3TPt nIt1SVqM2#8d, dQ- [LsހRCBn9#Q-Х7u (V`G7MA Ѭfjm"E_/Uk Ssy;zb :|땾"5#A4fp37&*eb{9ѧr$]2"2= wEw "(pԅELH_nD$":St=? 9v#E*=-"+Ev3 P[*NzwfOa$QNҚ™*.ʚnqp;do"7P|+ؖ0jnĭ_)8 wnы jj5/VdMCg2~Htt-io5xwa%-j0'rsl[:GU;3HZsb +o!J"2TC7%f"ܩMrحq L^xm=iE`779!JKf[BGCCUv3T Zo6䢺tQ^rh/[oE{VU ˥rOQ1vlm%m= *Vo حp) 1r9 emǡ#NXmm>M:ӍI`󸳦;kQ .z.V@>F!yA˄ᓋ= uou썈f72 "E΅ #cܑn|oi endstream endobj 189 0 obj <> stream xn݀awh4$si)ԍU-5*U}e b;;?V_g_o7m?/^|ًgg?/.NH.ڦ)-.6'}Q.<Ϗ'>,_/Ob)!>Sx_r__N?y%벡J*RUOW˚khɦl~Z6aX_v8O◫v~_ SC|ߙ>, ˪~?VkEzz]}@C.;˞@diXUU>Vyt9ԝxhWfXz?u0%ߊI.6Kao6wjKc*Vo<۔Ӳ=W_gbw86!`"̛duQeH0l᧋OMIYbBHk-2I. _}Q)#zS+8l]X7GoBX[j A-j z9N:_GG=ڗrlBj@ăMXSn֔ N9Sx֤)h>mx@JP1bH`ODg1UWv܃/8+Ѵoȷ?Y?*{A%`N-O_FV`纡'ĉѮ|1ix* 끇coKhc ;M_`[hmxwG²5DhCtzaG00"1DQ#GZыF,C,K8!+#f5cLZÛ:Z*pі3u/σ ůw9?@N<s@Ls(zch`k|Cjt8HxRʥ leQBxp9-;~ ?~ 1縂39vC ٖ\xԾ*`y 4y2` ^Iԋ~kx"x F['!Eo{2 a4o4sDqsq!YL܆/8=\GȌŗ}ėmA@Th B>(3vi]B<߮P 7+["PPփqc6N#/IJ^O_.cşsJF|F|F L}+# & z3Xtͦoyi e`LpCJ}`.Sst>р\ "I **,gOuzkX.!eɯ]{rCDٔO@kRHuiBh$[DQ<3 ?-z!T}#DD IcychC؛AB+9m4KVu=:5k`Lp0TG@9%&ő =Vg3Z:)͠lQ39qS^Y+ǬЁW]I0V^Vzq-b~Xנ`9{w-3{; $M>2nE>ASrAFH{SXPy[(*O ᣅ].(+< RhYMeBd6B@)^иA<Jɳe?@4w2FR,ImнM@Rx7j=+ӴS\T~0wUWHWc׷v^OmEĚ9&RLϵ<k6|H?XgTDx('Xi u }ZZ앰 H4H 5IMM@[ ]aڂkeOCcncA[ni GN0TnFOP(w9Z9^n(ܸM8放78ZaP:vU'3Ti%ԣ}-@WntI'$-иs#>_ǟ4wnjސGN1eaV $MoG}=Бfǭ^WHR~sOj1J`V~̗ }e-ju6(01Yo<ʱlb#nk 5%%yHeascM{ڒR+Fj" O 3 cKu*DXi V n|0,T璪;6%K-Y,':%ӟP횗TP*vl@/߱Cw:{`)$uc`h^7aY9j1kķAs1nG X)?ə?./G>Ƚ;RuJ9v^Pm_WŬlȼάSAbQj^6_%+;j cհ /j*#e,ĩO$*ZB(͐uk{V|Fn[ `~jf3#5ǎ^]Q\UGeJ^d e²VAḤF$:)'xa%)2  @tH+nZWAV'QNZ5-8Q6SHժ0*:U1r6wzġ &W }\a>2싾A!eJPs|*XƱJ,)vn"0}s)u+l%9Nzc9cbfMv6xeMaWٙ@P*Ho6{L#v&0 tp7gg3z+nWm9H:@F9J32 `(j<Ey(/ Em̵)$x)9 )* rb΍UP=Ů-W>kI:7hu^ɠU@3eFz 54ڰ ܰ15>c~3db: +U7cfǙqg<Yù꠺Du)ST@q1i}q`'eyH}ي# _ݘFCc6)]:VLp1uI)&yS]i`"VZ8 D@"< !sD@F<*JaD&rfg@ЃtkDkm| xI3?'Y(FW*=w")U |@ɐ%%"0}+|x\Q#CR AH:!Hn:{ ܌@>nU ggqb{Fȋ_/* ʉ;e'Ϧvc +k?>I7ž8yw|_S+ƾIFrNM!R.Jd5`R uwHKG&>`C~l?m}U%tEHTD]k*$]ػ~y;x -4wDKg%1H!5 $Yxڌ'nxH%~ 0o6$*te.VC۵B TxZ6䫂kuId~v4HS;٦ܾA&ZpW/ZEiV^Zʏ,zЊ]"kEhXy +|7 M{P&^y sǣN߭8|Cl=u=W`3LLeƄP>i. ,|f;εt:Dy{? UW®,e7xߜC8j!5|?7%-w iYj 9ovmVcmk{-kG8{Rv5ܦë)s;\H01ŠgVs Kd h[U1[7WtO, {5:}[2c$Yq;&^7> stream x\on@?Au}"08q"Γ6A Z$4PT]̾(;m",fwfgf3;;a}:̾pX^ݭgg_.>ݯ~\ޮz}rͷfk2g7'/ȬLMS1:p~guEEKɋzv?rr >?,N Tϗjٯ8EwW+^:+I%g=-W)kjʦj,ZfT>@3[|b< ' rUޥh X~e %r]O:ٛ5TD;fu]W/9Z-~ҽh^63!^7S=HK_Kj Q1sT}٦V50}, ݇0Wx[5b>&m*⎒R^#XUZJU"ُ޷|;5DRcK%ז`nqG]-k{jyMO}3ä": Pa[p2@rhݒ~\1+'QfX-} Ot`E?,$JlPr(Z?'4V5 Sr}̚H7@ɋ ?'U8?5%bh]cac/ak˸LGT6Ds|XpsĤwclc7V-B;__U# lN?Z#DCa wfFŕqvEq U?aY;1L!.9p5+;% ɼ͈YʏCk2x;ْb*OLkk{@^!A {Pf29ʢ{or(  0uLk 88sl|ʲf.N:%MY=Z4ni_kHO?z*dVdY#m$LNdNȽ#fL#0(Rf'93'̶ [9ʴzЛ2AɍND ʔ3"e#C1nW&/>,qn)ffa1]̢e(6a稦<@>߱<67k`>8U3<uu-f79:Ob=щxR@SO[OyV}tQ)@K}<4unGmmx@-"k0(0FPׄyaNœ$6<&kQyi abCh DLl t5tg@@?qhxP|:K1ub1PZ%,876ǁxv0V0X_>Iȇ`sf8mWNԭ|Cᩋ伫)\jsJ R$j@b̚J> 24jVgZ@c陲TMCAA6j2]s*k=v\Fw޷_A rNN 9][+׍_GȄ*Ȇux9ݬ ܕ(팝RTb&=Jݙ\ES SGh|/@&'<{%ju]w'(7m큲ުy҅BQrD*,r#r3ug:^5}Z4d DO%odr^t;&)"W֯_ܡ'B .U[Zv'=-,wXAn;X)4!Vu^] EcQn û+tLy 5.+ '5)P 4 tJwj0d E1+wɼZl6 ]>vuŝlF1qлĉ;Gj QQ+Y ՍjCa9񩍡j[GPZWCeæ346Bso3wK|)yAVq/Ci 5HQl"pǧeJ<60s;>i';>Pgӡ,ΌGu|:3|ϤvBcSS| $puiK0E@WhCl!*h{DGicIu[(mv[ %Ҫ}n(pfHPQ720FQ|LY ݈5f3 5=oRxh {Y]_ۀ  doiXɂ٭ѝdᜢq.cBġtxđ ]MG ū]GzDI%ѥCG&o":/1u^׉ !qY.ќV%$:v͗ endstream endobj 191 0 obj <> stream x[[o۸~G8fĻ(EmOͶb&Nb SGif(Q")Q,pf8zt)"y(׋t}鯻r5/qÃ74ɓMdJD"%IR¤"y<h9jZj~O6=z | xz߿|*I5Ԙ1fFis %O6WO&Cv3fXQȟ15cjLm8,Lͽ_uCB>;DM1-SF%&װeRȅ)5F63 8-sr?^R u ǸFewNp֛%8)IaOJQ̧E(5`0޹@l4!`'+Q/@Cl&0J_2O[\o`+W"1Dw7. rCK4&Rn֪ésF([s"9ɷȒ'E~13nf|,q`u)!A (4:9*Cm҄*s8f^=߮7Ӽ5ŸJߚG5~e^Jesv9D,ǵrzY^IJ'R6'Y^N!17 z PKV@`/NֿLêK75ub;6#)a [wK:YzIuI bђAsAR5/F^Z( BAw`#zHR Ր!7ݥ2wEbdˬq /.)KS+*$d,b0crIhﲟ:v#9,UL]1`OB|St|7w24e2!J,$qH}Vmg2e9ʖ o_pTBKVCPHZ*dLGΤ9TP DVtYz}h3АUِ'澻y@ukŽy!z4jj >㬍\4^Y8. &xм}d5gқE},[28mSjēt .'k  RD tTx*7 F3"=vղۓXCܝ$'F, (O,wK pʚQ!J9BnĈ G%ۋpQ5FR:¼ Ca^Z v&gDA:QM7mʧտڏio[0+CeΞa %-ź*_(l,@J} +$"YhKS}]tPbuL^uteX cT#Tϊ] g'7bY+Ӳy9TEUb/H|,:oẸ>/4w 0YctOu{%GЊ4'T>y!п4tz"28.>%":cn.3B9PV^'5 GFSp\ڥ{>K3j Egt/$(4*M#TߩL-]TJad=˜ߪۿ?D Mן+:|futW')ZW"/9]&3uswoO*9v2MRb`q#u{'xq}n(A4gF2[%$*)Z4ة#SAd 3!zm;zj endstream endobj 192 0 obj <> stream x]ms6*8ZQesm9(N,h423p8u[7 A鑮R%/~Ã<=+v&?pzVUjy3|zunyΫ~7?_x};6'W/_I(c8 $M ⓫g9 LL^'wǗ/>O?f'Ѵi5;alMf'x>,9__;σ(VYȂxt'[Gdff gt[-gtݰe%Rb{s/?nOwe e'}e ]RRE+(b-O>d5{[,♔e0 Ðy%a*'٫X']:忯S^'PG,Fb%[`QÚ?qDOe%ȓ3y'o&=^}UoIp IBHbX>Z|FYiv-Ч58( B5$˂ԓ_`o޿Ƙ?лlﰅZiX627bүNjPNR%SA! L> (!D& 7(G yYv-i~ >q؀CV}%1~D dHd%@1ҽ H7哷.-ēz(sEh {ɠZg HTD?/I8 ^07#*b_-є xM5r/6@=H^6}{%߁E6K,/wm-ыD3o+ݓέ @dͦ ޛ6t$)-qn:-Gm))%6bE[7*xgcuU^M7+FxaA@KuB=~ھ]6Z_ݿMr!K-sh.E 4AV46RCa48 8h@-8Uxj bvAIv ;S5af0,B%edeaV1]̓yIoDv9 }0eW"חkH]Q6E_/ U1+V|WR8Hɀ`\XԡPQc=z*8%^ huTD"\1#J=3F97x̋SD_aޕt KJr/b}/9r~UXl|=2`\q1Fdq jCo4%vZ5i}"BOҧAY>xWំ{^Jd+妽>w ɟXfX!.**ϡ^IR}PfD̂,Eh`A 󆇣z ;x. P9 B24G/gH"0VR EQXB(3VI9=?=[Va<߭߬]3@<+0:u G~x9ㄮ}"`Gc–J40i.=jU6zUR*/ܲ(žŽBצ];gnC>@\<U=(R:} 7`ֱfU: \C%Fe[U}Òu+^ԮMs=aEtK-Ve}6ϠW[JzXaGy{'wcDpˉ̺*ܬr^c#{ž彭K1ÓHb"ca^G(|5/Hoq멮Er~H`dY{>h1cfr@(q(TLC;DjApAZ~@?b;K#D%=jaIJ:dI>i[︻+C.f,YIiz!.]98tH70¼e͘ه_֓xfJx5xk|"/O_e;8_Yi|r!oԓiCi6Gt2&+sD1-wTNb.kE9k!,+9"OAH/L=%e"%#1;nӘJF={G̈7ƷR5֛j!/oZ(Pk FKh=u,, 鬮i= %قlY+"xōPQfx@VA3YKB]s*F8ݎWdU{WqG$( { ^Z@+]V]o<5>KwMS>[6m lW$P}ZMƘ5Q62Vf-0*1l`gY+F^{l P,: ,¤1Ȧr7p&Q5G! {{~9]Qe!U$# 7XR/*;ұz焮E" E cV8bud䙈\pBBZa+x5Dp%I ‹lssaMޮ?RYx3<'Έ2?J5 INgpZp#w19oSBYf&cשU|ļK_*1b#ib9Eˆojw*Qwջ!bo{CE.vct(kk,Bǃm3by:V5ktong{;  FV]-h^҆Ekj8)QwPÅu nlXp?KM;|]:?522{a 82w^ !8~g_HfAW t b#Vf$X}߫rAw&3 t8>:a7Kebe; ~÷n$`th޾~ YU>ޭ-mpv4q&0F;,kЩ)fIk,;cSC#F! 7# EVز|/',3 !y/9|"a/ϝeW/ gb8H0osgjtQ1swwPvFL yl[UsT7y{>ݼ};S5scź>@z*u\s;-[.j>Q-y4=&;KuK{#8/r(h"wfaF#v_gN4XЎ'(abOw%jr=zZ>krEm<4z/րIj[BN&&z`1i yz&2zRW)ή Ii0㰧3@ic`RKMx86Ȟua<2tn"x~slbAnos*mg1&8HdZeFxx7: חūC(^Yh5 cnφv,߯Jq+ٖJ ʎQCII-d. R7R"n33fEuQ(17L? |k W5:T#ļY^ x8ϯl &E?jP`'gs=)5VsCH170} wE2L+Ҽ`Uf؋0741$izzB*RR9ffb5}+ꁞ0΃cv-3 i㚏F.򰗚aȮdL޻~/5kLo9ǵ5Zw*W^<-DbZ"zVkU.gҨ\=l:QM^t OA,MA&uOq8v\/`F_E\rq5Fgcb6e3 p F"J>G%4|܉x8IuϨ}RI d܎CJ!Cc·ߠA~܊w}wQܘQݘ fۍlWUR+0.&WS7'7ŤX *TPs4XLP`IW W'MN^P`,5 UeSS*l='|ѻ1 AToHC#{And&3&n+ jԩAuPzmqXr1dn{f:S L[Gf+k!Dbz ` %qU däF163 yw,QS{?jPaN_BF'w̻ %2!`%eT/yr+;S;9az`< .ڮV5\eyn0]JZubNz]w7oj؆T[tkܱcʥ^܅֡!/agZJ怹 K3s3XAY!u/53P~Z48+)a9KPHq iKh HTZB{<~7jI>u9[j>|[hdP-Q4you΋<9-J*iit;|ӼZ(NL ) 2V+^ŕdɤP1_B4Ɖ:X߫ 5Ŋ]<bes^QU;d ;pRSd&^Yb*7qIZ-:JS  UPsWQHGJȷ yhz{pL`{ WG 9pXR5 &SDBJdH/Ce=k?zh rv4M!7uPW#wrtT|x[mpS=֨PT;4J2$`$3a"tə|pC*+ټCK\Yb08h6dMHh8YI;4WDl] U$5"ĬwI& L$ZϡݠUB]h!c }>{2grD= @~)^yM~)"DŽj"n};jx 736?C_n}%DqC iD~y)M^mOskr!duwn,zd1ڔRnǂ"k{GUy G_o2~6o ="{_:򰇎1: )D{ lr*}p>,v*}m4m&~~ xqH=U)y֎cf]vo;nӮ-OL~?,KPZ6uqn/fǝ΂^Ot#:ˎIòFj%i`K?5{AiS;zu8 鰆CZ:k?pY ΋.I7Nujٌ;9hl7qYNl[\WqIECX?GtN2g~΃S\ױk 8q/jiyLC $_ Ʉ;۱{9:f)sC(mTGTVހ2O^[LCb`)0ـ33y,EE>)"Lླ+Pn[PzQ7f8ąG7N2,XOWtKZOɶM ' ׷('RZ3)M:͘D_" ,ROn5. yxLZҭx tG~k86% 8fd,1$wviZOM`. ؕUpifFQ+N}*'\b3s.$f/XnrR^j!6CO=M1WwϿ:.EB~ٹ 'mÕNٗ|X=_}xsz 0S)wo@4xz? ޫ:TОS4eWV+WV]JOA} gyiӸ~6*G{)F#k{C7 F)hw SNwi貌Rp(Ӈ)>}:? 뫂9OܹX@1&* =:@T*,rD!?l۸n# M;JSuSR p )|cG},N?Jn endstream endobj 193 0 obj <>/F 4/A<>/StructParent 118>> endobj 194 0 obj <>/F 4/A<>/StructParent 119>> endobj 195 0 obj <>/F 4/A<>/StructParent 120>> endobj 196 0 obj <> stream x=ioG ?#DEր3^qbk`@KčDd+^c0}:n"LxWgn}&|rv׋6_/[2_Oʼn/v!o'䌿>}28wcɞK\D WP8T/5v X[ i>BLDfXPJ,SA'&zrl@+뺻!,*^0>uQUj l)OgQW{a!A\+J%jIB c={ gƉ:Tf5B.]9'9()jZ ql#:0 CMM0gZBͬW){XbŽK[)=ZVu%6w@3ZT4T)gPVĺvUpPE0)o J&ӥt* VJeoMf[PxY+L8Ϥ4SܴG̘z 19DQh6ncP!U߂ aZ `B4 ?3Ȅ&(,\U`cϑqP?JiBjɯ$ мI԰m$ʱ_^K~4$D`(/:Å- m\_=,e.\i;oEXUN;bj!_ M!][|5}~rգNvkTζX.N-~]o1i8I/Ep)BTEH ߻$W s0n7fBa8}g K0Upowg PnW2[2(3#xC׺T.Nfg[ּ=G(7RYvÍbn(`j P0 FTLwy f QaLl6JDnn৯3+pZ5 SSVҲcLz:O ͅZ8.Qƺ5,# 4-erR!/p^QҁTcA:K=.Vezg]xe-g4!]AYˈHAYbS-WAot)0:~}rVґmGAryQ^Z^~lYQ-qmV?GMBE[zC$H2 U]48q'-B,5b{|1&a𔙇`=u@'\Jf>/+XJ1ފ'm hDqq^7nm!hecmzNy`L=\כKݛbm5(1UdzI[ `Rz!']jT/(~2ozvz;Jz:#(fO)4j Mhij+*"+sϊVT厓hY#;U`hـPdCiLe6ciN >[ioGe9V9 1SD n 5%&#1Jf w9z9de(4AD7;q3dët9C;Kt׃i0aAE,}3owRfgL;̔6Jfm;mX=Cu2뤠͐gʶ#B0"#;q/dHE} Y-cyT444jeaS(im-iued{Kbw1Z6+ܞ7;°9; /fi5%GDhjOp_M Kq=ӛ5cx4E}{iJά:$`jG<;Y~̼'x|"'`,TT Ts\:"ZkX^}RNCˑPO`_Bma7̈́ĥ1y\i> /wGvڼ, XQWb eUS0ol=x#xQrphhxh3uD@ GcH2Q"R`dyëfon1Dw%vXRXwd=>zL`=PѺכEx G1+嘀RHo$ @q߄*%)߿2gH>M77`16`n|{̬G0xz66g;CT/&jS@tf`ܖYECέh&Nܡzה*X`B7>E LM;IR=E" &A^1Si9ܐk0/* snu;opu[5xQ 5O- J srl)T@[ԃkl; g2AUj^K@ 7"JݰWDh%8DԌ̝"=qXDjU_bUsJ9F<{) 5͔JLD:.N&@:xiFO VoQJVBy2n62b{/cvLFH^7gM6@`QIj0oUfuiT9( z(;NG,% 믻/;15ZcN%w-\"W|Î/eV' 1P&F$Z t\ࠢ i^t1a4g*ڨ:BFw*<;VBphC.18 ͇[XEvݧ,VIưU W&E ^pʽMe5*l"~'U\ 0`iyl#Ȭ u; S ܎#Z=ۄ#&ed;烌H1z' !?=P!DLR7[b>>{S~Y! s2Dl'vѓ&Γ et,2kk1l'f&Ye;gݿT9hicn N/&GKX>H{ L6ge i;sΦ MxGղG`ޤeYOng2aՂP$ra樯~\U["iDZ%ӵwxR b~fra41e 3hu+%y^h+t6ʔ Z@3TE &lC&K(2E-b&5hB89t?/$,:f%cjt 8xIZp?e-ܻS6%A'u:P2d9˶ $L8eڢ}sP= q4SY s*zI_? Nwh3

+YDc +p0)\F@`L 2 ۗF4%G-$XLK H5֥j E M/7$f5i{B4vsH?I8 HrQVԄТ`0d2A) {DOe Ӻ#:zRM6o= VGX^˼A|em_6+&;s>DdJ⬹u1P/nEg)O 5% <̮L^J0cn>ƏBSc,d6b-FkcVq+VK>> Ab# _cDjޜQBqG+HApm|PžPA VJV{Er^CC5@[D. '·0@;[xRuCd;!2DCWǴ ` eJ&^;ݖO #k$ apfy^q)aqHѐ@k|f8ww1:dxLVJf$O˕ubHϮR[U{i*:V>H}6ZD7mgdbHRT"{7-S fo52.Z1|!]=8(£6ppU3g$'m&= F8s 8ÄJr&WR2m\@Mkउ2F)e@/0^ ڧWp{t77|_V~ej8mܹGRy_:M\m?%Ԧ:/ԙfxCe9:'ԾOO7 DCRfTyp`}Nm%5ԘQo6-3^8YW+M=iv}&BIrHuw& 7 *ShF&4SLV7[i}U+'og;)[YCot58tqq;>"i/$J\R;E傺a)ow\bt;*@8aވCE`L1ƶ-e%A.Q.Qa>ښU+0t6&=Yhx;qk0ߏTB $A87cǑNV=`sX ]S寳4e桛z怀!N?Ul2m]L? 5~lZо+So8L{8¹>.߭bGeA(g>⟰Z$pb6lQkZ}N6lx&8VIz'#U睟8ow+_,۝uZmD(O KN%cv5O,ABS7pwPs $ϾOg<线J_^C:M (3*:S;1ѺxN{vI\`AzfF ۑ+jJQl|=>9zbIDm }8^GJZ0B}ʆ_~BkT٧WTgpՍ޲0o<ֽ5ʝZ;{-*tixىx+ wPmN&p~=׏ѝj&@f݄6M?QM;wr;)_TZ3uQ Fl 5b"aAĕ*/>2iBf~*I5w~Tܥd'h8n8V}p|l.)pvӿ%tqTIGEZ]LrcL7FL%ЌfٲVPM_=16X"lC\"ozI,ڍt!U)[WE 5_"8h7u!J[COLtC%0:r-X]al Tݵ9*QL>z?ݒa.rAo eVl% {.<-/YӸqGI-qS+VOIW%U׵"v!wbt 0'G> endstream endobj 197 0 obj <> stream x4I3ťyc |Ea , |"&?<>z?z7Q6b|(oD~ XA߿>>z >>rN_{CwV0_=޳J_/5eG3\Q^c1ZT$uZ@ܭ0GwY>[AaZHO:c?Hc=X|5ǾH?LRN^O} &kM{HceA g,žL B1=S$ϋH7Cxsa%66m |4ԑJB [P$٦|}:Ū(VKb#B C  tLߏd>kE/"tFWU{?z__^ښL:dfAHooB{Pg(1 FEnǶWS.K`"a`?w 2;&C~dam.9BPv x, }vڮ? Bpx̃xd* "Cv-!Ijm6d (?p lCM vFߋU q@d49Omd0JIGKs|R67qWyat5i7%|FH0XN47XT>m9K8)'5fNM9=0Q[U«FV,T06 -[T̖8wx&w s*w5ieV "D.mˀ ̮9 K-q)9 }B9L 4EpڌIl=OHVw]|t.J@Za'!ÜXKZB0[䆖U|0~gP2YJK*$XƔ}z1bN;8/hEn)YZg1_wCD?!xXϵ@-,{ ]ؾ,eՈI'WD7¨k;BbFoj)TJ!L>,2fޒL/~Їn^A(_?;MI|$j#DBMel 10/p FgZ(AԀXH//3=|'R˧2@r;-K'&yZ덈@d\)bh+ɠ.YpI^!Qs{qf[D.ȪJҵJK)p}s昖Dr1k/p! Ж)p̏eSi0&uͧBKHNZH9UCAĭed/nj+@Ǿ W|H!OI IavK1,Vt|nSZ28WB`,.ᡢ;OLi1)0c?7p8c=eOH0=$=lpOw `9kC^\DiR\r?Lcw[n7`rz&N- "@*m|:r,ckLZy1!T:q޶ڀڐ6TW&fh9N&'`eF[[YR kHC뱍<2rC2k:wV%~W83I+u˒ ڒ~*ߤR C7]Ɋި+]MuZUoK2}=1Բ$D%{pn)2FR}8B(>sdn[![̡4 N;>R\`|N >2B;T }:*6_kp6xYT5ɽ "AgU~+vs+p`k=89m,mȏ\{ywzû;tŘXYp.mvb/n%؊?; t]h~ttxBn@t'kCqF٣P(a xp8BF-ݦK.R3CXltu @[zW YUvLJEC-BaiK+Z[8T[Rk-{Tm(C*먞G泥p8P}(E.\di^˫0$P? vMJR7O Zc?OЅ)LYkP|]p T?bQd^:E#+EF.Q~WP0jW`/f |Vv26@z^oR+:\QVxcJ$cj RaCIc bUqZО's(WנdjSZ%jćɦQ|E }L P5MYԮȪvz8-3,lwޤgȏ W>fM}Us)d ўDc-Nȧxk"}fi& Z mo ɪcEV wMUusIWI $E1ut{. *s%l+;-? 9F٥LZ&>,A d_'RUsN-# :>J?[J-KrvK+ŮR>\/<5o:P{ĵ QͅUuhZMkDp۪6<7oS%FtWQĂMm\WxQ>w-3=bT^/oV^(p>ubLuК_ݠ9Rq0P̉mvgW uE)^:f"Pyb p93"_\r'ð9raȻDˁ':&a557e:oN}n W#Qg5V4an a7uu܈%]epbZnj aIh糙A]͞=]hv'_&Z!4mlN]0@Q(?jCa2$ UkHt?0MDAm09D]21=>jݍTtv1mEȶ4S[ju/L*310xִ\H%:M|2x԰4]a\G@ Bp &n+;N}tTti}t# 0 gb@WS̚KoGOCNTUX}~=6"z@l\^x)R'O}͛jPV4PHi5 X|>=07aB"2 }|8G ^I2$j/0HAs{yAjj }0K4@ ;LdE.Nxo m󘘱bNJ4\0Ug/ } LᘇN/^/$Y7o ֚N}aƔ5w&l8$5>hS em&^x~\lJLE6”V?J 3 TR PBǙHbeZ)ޥݍEVVihP:Xִ\EHCmb鰌ӈ-{Zt *W0|7!ޛP1']c hY`XPljܙtA2Pᙄ0>/F 4/Dest[ 34 0 R/XYZ 48 630 0] /StructParent 122>> endobj 199 0 obj <> endobj 200 0 obj <> endobj 201 0 obj <> endobj 202 0 obj <> endobj 203 0 obj <> endobj 204 0 obj [ 205 0 R] endobj 205 0 obj <> endobj 206 0 obj <> endobj 207 0 obj <> endobj 208 0 obj <> endobj 209 0 obj <> endobj 210 0 obj <> stream xko8{a?ًDуco/@=uMnC{d[Ig^IN3CJ"%QV{b["y?Ȟ]Uv,+_.*Y>+v]z!ʶukk9kqfVY7#,,x2ȱϳOS٬,o>~by|d\;m?T|2Pͼ2C  )7{ȋ:8wu㟇$:a4)^ŒS]_!MbeǶ7Bt0mYP8PSXz:3XmUm7&à"fbb@fy\0]}M0I mKoܼk3'"n0k2;~ h6` 1YGI*f4*01 i6=%%hqBj _>_HjN^l Ίl_cWL`eZp/iM|ӻ!Cl8k֨'@Icۂ?b_OYPc%xWS^x)i6oвT @d!?7<#O>*bIĂ MKIԦGvlq96"=>Hh- Be䧟*X0Eg(phu*oÒ)W 8k h*ݰ0C5Aǘ-4kJ 0.0y=ϰ00~Ts \9舑cq^c GY9>XAZC<8}!)MZş߭&M6.V^/;t6[짫"Mtr@\m(m'}  pY_*EO,礃]@+9bz?Z.cMA:v)"2I]fA7̬Y>r\t5+&UV*c o')5^&ejͣ%<N,sP "~>_6~|Ee" += pD N l`"83Fi|SHxuRGMMۭL0^e7M>bO DzJ" \'5-Wrx~z} !`k|lKdg|AjDSIۼ͗1i 1i؎b}97Ѯ P֐ua s]R.ď"](iy7 Iq:[tb#-K\^w8APf qڐ~, *!6 [sH~&z =#MnkGD$z>"@j6Ap vɁgK)1%A|E WŝuBUȍڱK \FY[-wTZA ĹfuQxId“G,>SXfQHId rV d]wl$W%^"SNuw-% }_a$Q6 C00 #S,})0bCȝca|?8Gfg L,r|(gY#w=;t?ktdaBdzB&'\%;$u}nw3z|CyCO;Bxb̑B.+[}2w}8Ex6룠UO`ǔwS:/B/i(ԹCo'^Z@#n ΁/B apr }n=H >MoWL}ddL!{ }ҝRhCXgV'Y;}PtPA5.XqwݢKX72n0l0O=lEDM,$!-X eeChZey֋dcUD)Ȃtz~b )(7\|7]nH_exRev¸W&nɊ:e:mfUdML&3d!.銚RȎZϐXa&P?הj 6tPFGm1c`c zj.E”<*|e,='! ͐)t\l1 ,8JjCJ`ㅙLis4qYVkZfMzq>Ϟ2Ă5y(<5()%>bTwmT<:AI]L=D&(RZl/0 fu+U-`d/|Hߓ9dv;5U̙fbQ9URT M0J9lCAyZfsZǠu*6N~PNJoP$tsZW\S1+˦Y<7"jvP9]L41Ϊk\4h!Ll+HUC!yJ[4Ւe-e&"k*KQL5G% .3  ȣT0@'{WKZlה IM]kտUlQo擐,ߓIeA"B)«.mdLWUe8 u2QEQ`5GH L86mA .& GzJ8 hգ-`g7} &2 Wc*sRVMVE2% $=i]I$M[R<(| %(evg@[D:Xj}G Fr?f$b$͍⩖;E a~&^+{C:"2]Sڄ2 1Z&'2*hsk X}a,xȔǘL3Qc#6QH9c1$6rXc(첌/ڟ zEu-_܄d|Dyߨ/0ꛗ(NA97 e@b>/F 4/Dest[ 74 0 R/XYZ 48 720 0] /StructParent 124>> endobj 212 0 obj <> stream x\YoH~7Gj0ټ9Hd Z%H[&4-"G*CezUYfbn}^NO2fe۾|i~se8?{==?|'Ԛޝ ˅? ]'(r|Ϛnr/E`=e5|B{Eh_&!<Ӛ-q4udcWpѫ^^5pDZMKFN~r1uo%<'w&%wP=< >MԭڿǦc-X!?ǾYU̐R'm\WZb, ^ﺮw22' $]H1_Œ 뽂G 1MjS硫7:w0tpHe̊Q=?\YzW1QN6@£x-,`:;wH8'<o,W9;)]6 w?q[eg2)5zw\zQLn1.`2r"<^XjF&;i*OXh6`)2 ._ Y"@CfpFH ?4|FOiȦ}hIRi0im'`Aâ>LO±p[`L |DJ5ЃW!'GAIV8vI5[#3] F]{WH;ޕ2FI+nf[lƇퟙ F\VG"v/>ylgxgKy(ۊy8#ΊJp_\o,\O%%JKGv(ɪ2|}d &73$(vQ VSN gIޏ|ޕI/.Zg9,I-xBlxEG&cKBAN,xȭf["Ipg5o Ƣٛ&qQ$&iH#L V<Չ0ɩUOj@\v{dkKU͗a`G9 yOyVLJC3kHƚcEkdĿIt b;w(T:5^c '',EHHH'x7hwH7mcsľ]N0 !7%/|Y`6 ?: +{#fy;x|1KlZg+i u|L 6{'*-ТY(tT= w .CAr_A$2p#'5t=ח.\qDB j1bg (q‘~lEkhM Ln;ַV0p9"g+PYg2x;qԈn?\1@ac',=%&[O-PsO# 5RM%^/|L,ƣx_;߿PWdyL\,PB7Dor$y/ѯ*6 aI6`|:2_!킝qllTBj7/wîQ︱zozm0j%%^UkT+ƫ\[M{l\L[y¦1bVfPR0_% ՙAJ P&-Ҩkߧ3Gup:\CzfXomBwq;Ʋ#f/Ej{/`JY.Qů^C 2%5EŁ >A:<HN&U mhXgD#>>ffA*q8~"h`~:M 7 "򮍝(P|1~ev?:/VTCnKKowK)}kRkw>hJhcX [}ݞݕ `:|໓O5k|/E&/BSBɉeGc Xv' ,D,fƔv3+~"0ИeBW5#rb򰥶>;3\z:+DH~0ugzD2 S:Q}joQҔDۿI|=k=>R 7^W*jے}TƋJuC\?FuE̢G,u=/͍0R玔c7ozNNEԡm|d0W,T"Mq@JTt(dݘtUM7?G[;*svo)! Th> e>ؔ61MbjK S2֞|FSq=seODa#&\jO+Y)usC?4iٞ= PVT$nu^SDR@Qj0K]gf\Wc ai:XӳtQ]keCEFks4b6_cJFRUa&:ɉ:yW';,{ηGP5U>ZF(5ю18RHc~$H֩AHfLBm:y<U|M~?xJnϛr~_F )ncŨ N1KLAqwT&' M2X>XOv@VU$԰:PyW6 昪8Z3\d0x5$Ir0k񽑹d>?&~-\kXybQ5>zuL62RÔP;0;dY 徖2߾iGBĘBvՕ `l?582$EmpZ5ٟGyo;&RDanZa]vpwXyZDPZui3Ivfm!=_;DTgХ,MƗY;&vX%OQD*P՝-Jb0\SCml &c+vsRA@ f(-"֫ P}C{鶋vެ@bKmǑ*45 1]JMnTܱ kxՉ {Meݺdn %>Ɋ}>wkMջAʛhc:L2qjq}mïB|Na^4*j(]R 㨠HLl }d~ ýOU&Y8_58+_/_gE]K{󙕶|[v5[ʆۄsnZ)1<~F (]K儎}>42Gڎh8`sR1NRU~ b=-qIvQmgjY+0טXդwMҧh*EhO1h p((4s+@'@3ܞ*gYkj>qF<ё\dǮ^G\_/(g̸*8sSw䪧t4\IUk7JoT nZSM+%9$qn7dVX7|XBI1jJg<b}a*sC =|Cn=FLщ/RT[C-~sDOebڋm$<و%Nsa.=>RNlc|G|` endstream endobj 213 0 obj <> endobj 214 0 obj [ 215 0 R] endobj 215 0 obj <> endobj 216 0 obj <> endobj 217 0 obj <> endobj 218 0 obj <>/F 4/Dest[ 74 0 R/XYZ 48 720 0] /StructParent 126>> endobj 219 0 obj <> stream x\mo8 AEDIE$m=4i 8lDJ73(eŻ(89!uYF2Ӳ陸oWOb9*Ip,|f8q( NC)0lXx Ie^g54!ˆͥђeaup {qMYsB)2"C:g`}39ŃbyG|f=Z| x;ggh SF7rBNt8{|'[5ʈgBX,H81d8D誹&+,VS̈́&O+3̝FEKRTj_5s5$2s kqӔf60;Pb߳TKDeNX5WLK[VrVqYqLęTs=K=?[a;u*ڶV[R:#oOb>@UP 11i0T \C!q_hʺ'=E!o f"x9̏4L9zzx0aK3L;$"ꅉ$B2$*܈cr~`1˃7-b'_&AF^^p@vm=dJxV?ʺ]fdOa. _5 0&U9 vUnEA*p"+x)pbG2]x5Y>cb54pQ~]Bfp3b;jHUqm<m6p;QÔ]@zk[[d ŃJ~>/NBIʓ8U^ t*( 5t%aČm9#WQzCW~2oEUϗ;3쾮j w@ 4ya6B'fNl3{- YJf^S=SazOtBp2d+T0=kh9n$.+*>_J/O}='=nl&+ _ LՁ.h0_~fTҙqD$[* )mlԍX˿zngm Qh[qʠ'H VajRݺ* Ո=$UPWURa-=neAo#nf xŎ||"ljmCŸmYmb!mRL9E* wI٘HH}_M`$. LbnĈx,>vA$j ]!p-Q%D5 TJh=fÓ .3lkdXޝ %Ze(CBj%.|nVL:z,UZ9c]`[V&$YA 5^ٙxY5L Ts4 }S)]'t(woJƘ1٤+$.:=/TGJ"^R6Uc ϙ WhMxU{Ĭew1f[qqߕLZvQˣ/?dF.ZGqwu"ko`ca*SZչ(WR1nӦّ{ ]۳x`=*s|BU?+EGhz+8ÀcΨ/ QuRoWyYBAI}c*2ls23jsAQ^"k >N~evq(zΗo,,w/O%k>/:zOF`/] @.@i2EWPMzZ:G > endstream endobj 220 0 obj <>/F 4/Dest[ 74 0 R/XYZ 48 720 0] /StructParent 128>> endobj 221 0 obj <> stream x<[oF(-bCoE`c'EY.T|]H ɑ}8""s&Efyfrv~y9gU˯w7Οg.?'uWgpBϕNEn;3,XHs&Ӌ`M多^1Y7gzN~3_y{3iǮ*<ᆣWt"%#7WW8&yBO ѓծ14|ڶgoXǦcX! 6./ ҖO~%pH?ɧβhin+ _*'UUȄޅE '8ֿG 1MB%X5ؑa13Fb'6vx\Z»]U6ŠF #c7x .,`:K?tHxo>:Rv9Ix M9,pq e`aC$o]exE?@?HF׭d|/w-gӋdR@Je S~+Jek7.q.Pd"iD^:Yn`:T\DegrJBw~0EI3PdK/?H_PaԒ<}@!z=~ ~Ct}n*$phjDZYMJl9yXa ҪOv-aꂞ҇5}"^kpjhF1eSƄK&$Zr0 /,~z=Մe :D LH!#yj] ]aR@9Vl  =Jzr(XH QXCФ`E)f4~Yٯ1n.G z6PtY,y^e9qMf8qj@P٢\E^,6JXA1Xh_+p˜S59Y07 O#̕*,ZD4~38c!4k|w~~;gSKF]Q^͐ `" q%N2Hк~~,hV%/vB^I$_ڸ)35de`{-ZSgdޛi0ZOn D/6غ/vИ \,c?47<βe#y6˳IVC>'}ԘN7mdP4*:ӖhXQs@_D!lFT*IhlZCόȌ60WeJLؖ7MeD6 v s$f٦|s,kEnl0'hI gdLmٻExp <k`ZWaNZV/l1<0Ō()).1Y")JSkƑS<,oXfjBn?E!Oh }JqMl:D:OKpH^w;V2H8}FϻfK\}0 MXfSvl{59T TW)|ag|ׇx:rF2T,V9mC| TW9s !g:94&?Jm6t<0xbOFk "3־7ִ X-u cXiJ*nTgܴ\MyI|nYXG'>=ɉӝ.^z2D} {n8Aކ>UPHB<% HC ec뺶|rOoA|@suN=6ynWg?;+l]"ܳkǓfR !Q[IG-D5v|1c9)@̶*q9>8 /ƵO,E|/k&3RŲyDݖ,<-v#5!#[pj049 Hì$ ;G+0xQP}V8/6&;7jۊa=EIy@~4R~p3&jf^Qʪd*6#(?&N3P¥NLlK?46 R[gJ,{m}\[Fcݝ-.gY$`"f.PUV'? Te$S;ȷ)I))ޫWs;t^pǕADB-vGVO hqف=ݏI(﷙kJv` [:ǏlA3~!:+3`|L ė`9,LB@꿏e[,vqj.HQ,TɲnZllɯ2w^G&@֬CNȱ' c-XLeTϦ~ P=k`ŧY覲B{,fع7G]@6G\to(Y[@h݆w02ކk6mq}w:0*ѱ@d(WQ*pap_zxZj l|OF8vqTLRdWO?\`rSKH#쉪fVQdҎѴJC&6_J0۲\/Llf6,Z#-ĆZܩoݘ"; 4iUTpsȨ zFS܆f JoP0ߋn\Б9_vfr*͡BQt{_te-XYNc_gte"]{<ߵM -+k"'[8EN6DNm"O-N 1/ל.ԆɴRB|Km扷>GN^cQ¾JF1Wulq\UecR%2 0١ ^s FsIkNIuhо5u^0CR3&G{㐫4+/&hܥk5I VRH91QJL*=0}{EæjUF6'з]DXc4Jc e=oPCx p[[z}-YsNAKN[bqQ(!")ZM1JmehE#s-ϖ:}\38%p˒s`Dml>S(j#IPϽ*Oun'i"*؅-5'5_^e;p& #E>1 ?T㑑2"`Aɿ%ce '-3m4LdT|CN)?ZaGq wӠ(P Uw' Tݣcn(ï[.)Tr9??;BM:ʶ{-ZˁM5١Ck'xǚy:店5bl)fI8RNϡ+ W: 0[LFjG(Qh(cIgpL`k|s%*+SjM"sjOug. endstream endobj 222 0 obj <>/F 4/Dest[ 74 0 R/XYZ 48 720 0] /StructParent 130>> endobj 223 0 obj <> stream x]mo8 ?ڃ"%&d7l.]vKt-"ot-U*ҫ}e~~^^>ˇUo._x̚嗗/,YglVqbvy(+f?^g+~>>G1;rf'{}.[nKg/|4GS*IVndt,cD^cM[[xw̏61=Zw"^|݊2vsu+~MM7MOѲM7XYB2Z˞/Wߵ,Sc'7RXVY4mረ.~syqvלVK}ZJ~?geyz҈TOP8kS- +r*&+֗+ˌ)J0-,g³_~=x7M1 eXq.fRtxʈHVY ,/B}J:+㽞z,W}"0*CW4Tfs|OBE1bpc^e l#Z<CU`tRS(uYQM=0`Hn}ؠ` |>S a#uBC"(`ы~CYZazgNxcȆ {O?g%VXskIhf5b! :FӯS*EV DwE82_(Ҏf'«}_wC$04uVMT%юI`u@+:Gm-,Kז{?&vD[bPow?GI}3 <LL c @(gەq5)Gυv 8.[]V *gcgS0%ԞLN;mOB$o 4 `GlHAj['0k\"x4o `!_-5)%&bF'Jq OIe=!dӪ`TO D%"0ERU@,ąK]BLIxM2z8ZdUڂڅ}`,">W P''&=A.C=|~qdTP> Cbr$~ $χ%?@NGƤ5(jz*k60 &'Ia45@BlaHѼxP㾲i)JL^B1HUVmjV,# Fg"4Q4Ή{ڇHIHp?LA}:4۳(& w3pkaj43"οְ QζŧGD"<; ./^@7 bi`]5zV8K,\pNc`%"W%!qF+?e`\Tii\ '#qU ~BWќ'"Vx{}%O:hs4ULD'j'>'R1st+ԩ!sXYLJ=b,0:F=,ixT({xCq2q0.Scܣ>.X^6 & CYBt珊','| {#捒c)BcDNp=Cz4wGwAu~C 3>k$m&B/6c =6`j aj~ރ95&QɄk%P#l-m3ihw1 r'<~Ω_é1*aXN T%ɩ 'D69v.(~9/`>7G}*HaW׫݄l2b/ aoA -]~'&mURY+| WpfR,7ʐ `lJgŖt?BV@\#?Dz6жh-9Y3( "?+ խ!$yiٝZ9 XAR,߀hʫ$>U1fùO#,lx&[sg-$QD~뵻 ;!o@Vs;e@+Jhaj4ZF>!XC }I9C=9N' U~83:Ɉ?(}aSq{7nB-|Y6R -o_ %X۽X>R j< Do5ϿA_縗6 *faV'8s5 N OVWY1jQAa;x#b8,2MzAJy nLِ\S FVeh/vC#x79y Y[ v^dWј$2^^2 'zeeLGMJwݮt"ybNc72X(5fxT\|2:F~.ݒ,T&yBhh) JpWԘL bאOl^^ ~& tRшtb+U?j[.Ub*Ð=s'˱> a6Ss!xfZvLːrVM]+> )L.=Nӓ8+(9ZӼֵӎ0Tu]8Q**ka®@Ub8TêeaWYǤ>m( vbv[*K\,kjJ1PWLRM%2΀91;As7F'Hik{:mYsH񴀹UMS*o cWi#`.a .23'p! 6$2t & 05t a_if>bCaESDC_8aۇ}3KMBE} ck]Np'%A@g} \rp$ >׉ch&w!jԄ2/ HKPsPEBtJKQєSǣ'0v˃p($Pl,bpEVw 3kH &8|t XN cٯsp`ęRMBL@vfanB+pbHVT ||a肍uثcb+$o윦DECuHExkZS=Q[FpVFJ=xv9[F9E,y }F`.i?7ӓ rg[7T_ѯd PiX* (!P{E 9ܧ2 O>1 !fQ=il9A@&~)!Y&@bx'T%Ԉ 1i,. уXK4Ѓ¨F#FhE#$& !)Uuvt:Őʋ šA' I/p`#cBRQI(\5A~rr9 <.VH ?p9&HÏVNb@5(P .1Yi Hx1pp!=oF-,&Å uCBlZk…ߵNRNC9lHH*LetK !TUCTISCzIiH HlzRaFv,5f;9TUGm1Eii¨F,vL=h']"ˍ~3y5PUGU&,LNcNXg(3a65nW@}ze@ptKp޽0M/pOwLڨRD>$Ǯɘ> stream x]mo6na?,( vs%;\Ql썽]/83V")V\Eؖp Rlv/v/Ǘ_7|_LN&^ezrMr<(2'w$ϸ*</?Ύt9숱B6G>=,632Z?zuu&de*֣Ze&H[,]cwb-fbڻ_X%~e&rr}}/?m[jAĵuVi]luWv'X&ʮB[_(W`i'BGFɧ?;压x<yI W?d:9Ӓ7R%rq;L:T**2E`*2xq*vw}6X2r"ˬ(H66Wէ,z@Eƺ@_`[rj'ɪLzr$ 'X+Smˋ3ԋwZV[L 0}~v$_tWtxE;@o>#w}y,ȼ+65>\mQIRGp9 ~{p; їM3 6{m#[뛯ES1/@)ڇ?ق2Y#ex2:rXkc!xS+&W JL67a{(fƴ+Рnk ~sŦ/\eۨVN+P݄L¨{ek<+ mH;HKs}C#v+p] }ŭ`Pvyukè]MA71H.Pc {Xf5)fQ UԽm?4cM{DW` ʠ94X"R, zxُUOU)S_ kz%puu-0 JtX*@C{qyݠjn"okP . f2lޏ)9LMJ]פ}@۞U[~?(w[YDIP7iۇV 7($ Z1)X5QEh|3bY|NU&}n=UZlPƆTԓ5T.ZiclQ۸Ӕ81t " o@?ݹgdF2g LC+J~v8pva*ucZo @|$=]Aw?|ہde)@ћxͲ"]c7p3Dc@YWS2zS9F $T/b`uVi!!cBW/IȬ@}ILjҁ_*Sr-6,=B2F$\N_VWX"XUH;*H lĢH-(wAh9lJ6x}jUXT$o;_~8`> a&] !ŋ4*+qA"To(Э@2ʁuSh<>F5a}י9ǿJ;[-8ÇI_! 1hq 3Kud6ѿR5s].hv"͖B#׃ Bח)dmfqKh+L3Qۢs6w&\nr;<9*Y H t#SypTv[/U*Q$P'/X7S/RJi_i[t&MJj?> !$<`RHg Ru2Ml4oL==oq{c`&e KShh mo_..ſNjxDge:)bml[#ooY+ p} KFl?{I+Ke qqrؓwVniS xU<`\BPIi=^h+%,4I4dJI@\s= 6_6K盡 $e]5*HT7q߭gPt9-T%}RO)4K0w@ҾJG{0Bbw;_$RV>㲣]Ř˂gR(yj%Vu,cщ9 NQ*ab܉9L+obSOZro\' Ft|0{xRv5<;Ge sXx ]37la&*0AgM2S{⤩>[ L8 &I B&`;էiMj)kT;kqy{x07a10)! ~M.>\@ߔLڴ(8{n}]"FZ wf?8$⛒IE`OJcE`>8c!g_H?>4no ِuOC?I`$$0b O0%$]WuڅJuf ]z1<װEYG߶c=%}afE2<і^K~p<lS3kphKؽxxNLsosE꾂'@*Iيg9󱿒Y9Fbdr?M{C&wC\qeUe*mͳ\gIξ $@pX^t-pXhvQ݈12P.s"9PЭ'}TVl$Ø?뎦4߉SP>~ `cE< ϸ0j`3*Je2)T1m{YԙX>#|Fb)9/ܛiyt!8JJg1`'g0<.1\\$hx5mNx-t$h8z$6Uף+#6t%9"HH+dU$xdRI .UXR.]IkU{t%8{wWH4[Ӟ]IQDRv/<-X0&1T aF-R}]ʳƪQ#vTic$8K04)a q޸(O{baw4x wUkesVoYR\ |fa>{b#ggl4>~:Iw}Ͼ2)49ό i}N|fw-gJ6>4_Bb{(= ;~2d11 z2,`|n|Tw bR,/ǎ*a`Lj^J{3 [؉QDkw8d㱚uP+MW| c jF ?nѯt  />v'5`OUsVEyD DaZ Ϙ>oVAi' p2K=1,R@{ u M领2'kaps)j/9~o1ADikG <ˢ}d,j8s-o[9:[wa˝ʓ#t8,2*\PDҏ՘PaR!k0˶՜|dzk36|(6(:}?\U;|' ǒjlحD28%~P't^YTaw endstream endobj 225 0 obj <> stream x\[oH~7@<4u7q,&33yp -"=S\*E3٠[&r\s/]E,jܜ__?WW\4Ů|yvzdxD:I"p'r<7?tNO<z~&f<53ߟ3?fW|Wrjm[ܳ)Tf:6s+sPu*J*=y(w+А fz˞ z, R /C艗 >I_F+_+L]<0 (/I}j"s|3F+1+fly[«]6Ǡš+B'L8mX/G,L,Z%뛳hMk,B^0t~FS;Wx^;v&$J"I$J[4 i=r-B{#pVVu%?pPwY`Mijjʏg"_.J4ˊ ئ9\-ihWfqeS?C1#0KJlT (5h$s֓x\:2R8V14d@6J69-y_9h$KVP 885\Je;Mw4P,qI& vdϨ]]@d5K.~0[tGGq>/h?q1Oq&ᑟ@5\XQ ,GDֶ+r YufH5X6Bc {~7uoސrՆe -Y. ϕ_~#v$ϩI *ݤPݚQ+=(4J$Uf3i ~4j#ʹ ;̑TcUf.6z|9tOXa\%^13<-ϭ+TtJ J[ҏ{jCo8|nZ$`ɭ踬=5=6$!f?5MCb }( n (A`a\V= %mEadn˺;کF6=L)~(=8m8&3~QbdE]3na48M&AdD]cSkdQ= ̅03r悵c_AN!!Gd$SM͹# OǶ)04(FTP{?<NILT>>>0i|ANW_AzD,c, 'QC*;Y?Hdhn'`@dg@(t#B"3FՎG|pI`"J:%KzӅ`O,UrH> A3w9]7RGđ9GOCQ~'B] , QG6{d{Q ɑHdta6 .I`JƘj> }HRZQ,v(dL`W9Z拉a̱EYHe]5;$( pE [ۧ{N%>@AsWXR~Ɏ6knCi3EˍR%d9f6VD(s@Zܛh" (~I=@81oZTbӃNʕL%Z˂,)Ҫa膙یX`Y՘D鞖 갵$ %`E dGP;hQHA jcww*騇 uP'+ӀP'ڸ‰ND_3Z%C7׳P9V+[eZ|1K4~^q8n8En˜$Qx 8vQ8< GϦB(eiTVeϳW>b*+nGab-r^Rpǔ) #U$-y,5#Ck,< i7LQ{_w%cW7Eyc+M.x=mphsc s5Zrş3yŬʘ;ʬl Ixy,$-v3VC؇ܘig_I1֨В-7q-xҍr%'nNT.rIA ̤*<^B3%Û{~*@dD0eܲYwL(<;fPѢkɕB8NJxcRh<~M0p;ljv׬_ +ڄx L6[4xN,p* a.^m zTJސT ZcevP[e*LTzL_w~_;g)t\Ke1Ũؤ4V#5?(P+0|A3Xd96zx/vM*4ї}h])ǽR-,cT myxԅ/Gu`K;-nzrH qUClI&5_IGL;9ЫX8WBI_"Kz#쳸GΡvgB(Na-妚&JH/WƁHM$Z͑↊HѨ3?]p^8^:PBJFJz7<ZYДUr.l.sTEʔ,Ѹ52" @_!ab[H}OdD5R$Oı ᖜ:Sg֒ 3j8<2jėsI:>>GR]_ c,4ݒDÈ6q^+P,+*qu{E]K`فMZC ,JRt º9ʋ0Y3NTsT \?34bTnkHTQ[B`DɱՒYU[;ijZp\r@bbXd&JzzaUœ?4dui.l[&I$U[ zчAy u%*Wd%u3nc~7RWz؛g,1‰Zx)3Q=9%;,T8Va.{(pH䟺:K4QGG @4r<A*}Ic ط%K륁)} X#EAAd5e7Lk{rS5 ;bE͕zs{(i0|b@x 6|M)ܯaj:{.4I}EX~!VVVP|zTSߓDG= J_uB0qbO]?0%=l(!D,X].7ى59Y&-' rѴzŪlw%Ёҁs8WRO%@ K2RrD/~^Whod2)a/aJ7 [hc}#}F2 a5UtzG߇?d)u 8"mմV7"u#Y^%$jž`-:S'#-4^Y< ݡZTm$D.4 gQ .0ƕ_r|\U)+w_WWX<(//ϝyO:HCK?¬Qʛ0Rj~VraW#|~+5KyUI_xbAzD?sx ̨&\d,:S.ۢ\nVÜWr?Kヘ#Ӹ|<L1??Jw݋%wKp4g$ ]HO{.͓HZt jrwf@fsEcqY endstream endobj 226 0 obj <> endobj 232 0 obj <> stream x][-m}/0u_B] @Hj6l}8F c)\h-tfSERG.CXBŸd?oZ\WHgdugϢ[]gj߸7-B1/g>E Ⱥ$GnIT%KN'q)mlYJ&]Z#]^*xx)K-A&Z1tsO N6\fM}´}_T(>s9pƼ\Y Y28gpNTv S ك3\/`XC3`ŕUL :6S>m3%0m,9W+zyNNr+auDk`oewjV'+g؝ʂJq!|X9 J"XؽW֓S:)\fww4(4#6p&)x@@#! B 0Z0PC<T*L&`q& 0Fj6?%:fg ߂pELG@#1{=JHң0%&`PΙjbQP\,ߊ/]1Jy#qnm..<' +ЈD('YEJ>T 8gQ$qq#"p.n%tR #fb,$4 a ?F4(\/yZMtE$pf3PV "@ 0l LЈ0ǐUpn6'I)Ge5s]8-#.?R ~lt*Ǡ#4䐕 cleJ!Q շ<=7D*.l-aQ 8r0Ʋ27YW]9;ϹD -΍є$ቖUb"WBȃ%CH<ѪmIY*y*"гU[ə\J Xb,q+p̟A-j&V|.t^MfČ0G كC"晎!¬%{0(\[%R Vj{` -J(A[F",a <-Av3*!<-]#'I-Z +#2R}52͸H SX {pz7t嬐Zz7\WʢUB[f٢%һjBǰ+L}WaגzMB߇ l-lv( z& WrO53`B?C=(b/Cw+>DN߈ ZL#ekN&D?OҞShZ}:eJEṀ7aDJ3i;LZ 3jKvX]٢T̔[rK](ѻ3rr3$w$zE沕/12dZȅ^'<%z|ΙȯPX2c }{[YZ L$)[Ƒݥ=鿅D/E2}9 D./hey'zwa%7 (_n_qշ8ӻ@f/2d]#q䎐DX_ke #% &[9'qݕhQk(ѻ+WDÉ2R$zwmH_3ڡ+z724UxDWvEwA.Ѣƹ][ؕv&ppx/זpV"7|ˇ~XO4nOЄ 8A#4i&OД :)Ehͨ(h=;D#} Fʍ ,~׿|6gn׿fl&?cM~ogX&?cM~yÌÌTxxxxxxx|_鳶* *2E T4=e6SA7ui ?jyغ/KLo?[;WR`-rD_| n0:bQڛg֯SΜ}=r7q|nV,q8Ԃ152Ɨ 5ƷQ;{u`j*Q{65dND-_:Ԝl^2&Q|/ 녨C)jn3QshnNasl/nfysv e?~b*95lrS9l.T fL-JKOM i:'.1-]{N ssr6r:"2"'3Zĵ!8@.u4I999 'C.*rq\4~89EN搋f9 (!' a@ρL.ȉ%H(r2@NlE4\6K6r:"%a@I\C.[;X\JK\ L0$E.O"g.D.\Jˊ\ M0dE.O"gsD.\Jˊ\ m%+re9s+6rR:"Wa@ѢωMMΌFPJ\Qb#7 (Es3TK@r u\5ÀR:\1j"/v:@a@dj&gp#u+WW{PTvT\K6׺,{zg{ҸW{*{#hg5mMm[X:#`t]I.T{1?^Mj}#PM6u\$<[V4ׂLe}lCwt ǵdv]/ jU>T᮸GUqײFG+W?uۣij֫].3Z±U~)yRQ'ՐSqvzN/w|zFN1{d[湢{ qI_IvT4wۗљc@i.@.Ӊ3aA+f7ڴ PsK羓STu+Z?@?S϶zU-[NkKw?~%jH@u7erorDY?*L3d(G" w:HIO+뮢(A}Z/麽ZFh{CYf>ۇgv.\̼شəS@elr97G:@{Fs/TϞ |8i'??P?S~}g#2]~mVP-w]DS٧OrT~*w嫜7T"w9oB9漡}N4S0C>^!4C;th>YM(o!'t7]>iUEUw_tw!xz>ޙ tM{|֒jn`;x c6pv|뻯;qj#p9ۣ)+Ck9r%q*D[D[U^IZːH?^x"FyzGq>w|*}Dz M Ur~kǙ^ȓJ*ǫ!șHKau#XyUnrPUtmE??GbD%UxpIi;.{Čd~sl4n#CmCk:*dǞ雗5B|{1APA`tȓJ?^x˫(DaSKi]ddt+RfVMR G(+֜Uvy%(F:GkvweaCL%"3&M@c{&iR>9I;)FBYH231s˫jLJyzxq75ʃ@]TpjN E1PR$[z>Hk7ߙ#t_ #me]:Q(A-/\j ٱ WmiI%jCխL' U_RVP@v$ZHu9KWFw$A۝ 7j '[Rq7a zc+mfutJn,!Ng̫M2$FIInnHdF23P:%lgZC<%'zTv'ڍan*yqy9|NrrwD梈@y4/~ޣAdkBRFɯu!׮ϾKRT|u={gN.žd*=90ka'{;"go#z)]dZrIIAi)w\$[zJnz0^w3ߜ"v#H`Z rb!zg=B7 k~򠴔@k_AψjA%AD6ҐDj endstream endobj 742 0 obj <> stream x]K,qebd!|!id!!BD9H48\~b=xQ0Gx| oȇ˸-C:<_ }4GJot$[7)Vz9#WI(?Jgs H Y Z+K9#+ [` p0 W0HB)!dR\ ^1!CCQpE 9 hE+ ZpNDx FX W 5.Pt"`]ŀarJJl"3!(ɣsWP_""juA`ge zKpo;q0{C`n'T*.ʲt3,xtzPqAXpՋDyhg`  +xLX\ /Brq,@ Qw{GhǕ@=D BB1(Xh;\'dڎ t"DF UŪW{AFUEE#3" bQT CbV6z~DG+S1g(8G`b`L42eaQA"-2Y]T kpLbɔU@d23 *GrT! $8I>`L8LLP3S CDe𸂙)bm 5)A b01I"_'&ɂ`Lb(]5. +UXTi B2S<+VԂYnń@1 3Gg: -ٷ\Yg~ż%Tfb y D~EY334bg0/+UE$eXaȤ^踎 =AV 'C>" F 2~"22#2=%aJ @+L5-P +<0 `E@|U# \މ%Ƨ%C-3"N+3[%##H^!'`kdȭ.aT^&C8J́YT*¯2*VamJC!KƇDo Gfd-Y|Ogpkۙ@΅29sO4{jHM2Oو񔑅3e0@]+eеjf*d@}Zo8WQ Q\ȰZY;8 aaQPM8fC iCq2c,5#-C1r - )McɁ[\C¸JD M  CHs0cHb;f Y95jk㄀ҸIŅJȐb%6ҐO9$@f!Idq'7qҪO(̽CU(@M<+ +a [j\,%Wn ,y!`u1i#E&_"""1XZRVe#.KSGiPg YrO~8H^ptlC"Qơ(~HYLW I &!ऴ,"AJd#qX d#RZPBQ",GPv$EVD0q  AP,fbgL-1B 0Қ.;Ң OCBL!1Ibb΍Y $Gq""aP,&Ee)BEs R`Bi*<A@ŋ-z!Q˹'*:ݵc/b13j*|è`.),Eq(s] k+ )MZlnKD$,f.’5EB(:4;! (ҘKP9̲73 SEX-TyȕgC˙a*Jn &FR-!Sgu-F܊'+8Za/iR}c_M@z p>L] kX@`cԣVԢN\!U-mavҊV%$JTNYc&񍿂yI;匾rΡtu U`2n HJn_U\|jZ c_`fSb^X4]]yOŹ} kըJ>*y-ǹPT=KȨEͨMz>v}䖯&pFY9 -en%% k\{fwT?/?/ٟ'^f ? egFmcg_ݥ.!+9@&͞}d*nԤZOO_O-(Gw R_IH^ݰ{zֿ<|b?t* o=N~ie3Gl<|F6Ű~ j!vXHT.aDmbAv{5XnsT Q[;J#Sg(aUӂw6t8eaTnZiQ3ͩePs5@4Qs%4xPs5@%ݴE-ky|P5@4Q4KjMNFcV5ӂZ0:jaZPQ+z Z0i*jF„Zj'o='.jDc >]HPE5=ĎZEͩ]HPWԸ@m4қ"5V#3KIjh]V4ԴZ$zI#iB-uSrHoxԴZdzI#yB??QrHmԼZ̏9/i$Oj^u4oռZK)jV5=ZEMF% D- Ԋ5z) Z4_Ip4ԺYg~[MZK*r_@N%#W7%ɝywSitw?hla |24xWb'KB|:kSۚ=@UrUNVvVXIPucv➍-/-j*\udcj䅍/vacwq6kyRU]UqtG8^0N6wۨ:B8[8ƅGsQ۾UUtUu 񒗀EGsQE[Uk3~W8VO씦{=PݷѪ}qgqpq$(6Ge6ߟ{՜LZgdȹ*}'۟KM3dSw0 w Wsʫ jLD4&=? 3Tp׍6(Ɓ$z8 @1nh2]^TqF1fę_8PL(Z(/k*\4jm?.LLŴG#TPę*ݤbEQ?&/*\MQE6qJ7ywQ/FCM7yF1fę*bEQ?EM7eF զę*ݔbEQ?*\MQ,E6qJ7eXwQԫSk3uv&W.zuSufz&F~kBQU1ߝ0QnPD;M,Pzc+,ҍM-n&:;F J6 1 U"نjucb(ځę"t7 fd'ҕlFu&馫u&ͰIr%QtE3Ej+D{&Սu*n܌(Mҍ(]zxM7~FW- ?vW.ju3zRn(Mҍ(]꽛xM7sƎލ]n޻t3z7vw꽛xM7sƎލ]n޻t3z7vwFݤk{7vnwcMZѻW7z&]ܻwcWn*݌ލx{7nލXwVfnnՍ޻It3nU꽛J7wcލr@~NԴF>+q\IJWǕ2q+8m5YY¹ΙvFלk@!;Dwߕ7KDeٽ)>Pǚ;էe{A8,_]A֬*nJT!Dռ'3ÑO~C-T y偃 Yw?LO<'_%PߑOWR>{pMUh8W2㷷.O+r٤"}"k6Wx3nS,vW/UYS6THSTڙ,}J'~kqxwmRivOdEg{n(Ze-^jELt=]\ӄ{גGJmeŏqkG{[Z6̞]~bCwfuo"g1ӳY+\+3=R%>¡ UFUmH֥+ӦW^'V独l< qRE5' 20m2p ?S endstream endobj 1247 0 obj <> stream x]8r~n% ¬d3d@&*u\lb4KGʲ(۾9X6'%jwOi|hgAoE4JY84OŜ{mIȰn%l[ ~ˍaJ[U!D#+ם]Tv;ageU(UJ$:@ 2M;I}K.EHEIUQ.c4g䧏\W: -C~5he:MZhr q>6+gvgQF }A'+hr,buL^Wtʥ@i9Z)>CYI)  TMaG`5TB+[cFj-#%yUф^jPhKXrΑ\t [(\r)oP.tҡBuN.A-|Y-)mmABt[bV1t#D#A_.S֧ctCD t!ه"Ϫ9ǚO"駽׼%G+ҩQ{5>w'M1@^'t4ږG[0槓n!M Si+˙ WCB`4jS.AIvJJ@"΃ڴxjڹ +P7TEEEVVbKHDv.%K|Vǐ@[zL YN `ƒTSVR [YE[DLl{up_[&F] J:2T0c6]p)ا\oN.zU->'Wm?gXiTo.Y re*C=uuҺT@ೣZwX?>r:x t?8DaQ,m% dBdQ<Ȅa;.F2ySH3ig30=2e#hFfL8c2/ L !jf9``WueH,>&.\ 8 1!)5+DL QPSd儘qV.1]!0+ Y`Ƹ<%CȰȌ1ZU290-p6' SӧQ={NGoJtpdKKqe"5sf ,"3 "C@}hM(842M` D4j^i,AT蕠3e4W C8Mm`I4hc^e֊Kw{)3.!T{n1&JLͤU?؋C_a4ZGFI+-a0Z;VZ/F|1 e{̈́&&ՁxLM&o~& .iH+hBQ@|UKLSId50_eڤ+C3u̥h6gP%XHk /D+ܽ9C4٫[fU|`L'WPlJt;.T61J")6usC_MGCǿ&O02wf`h 6ۏ.=jtڃ ˃T./d&U}c@V/̊bTNP∬qîX73ۊm+6[qVgPʈAmk5">PϠT?"#Ŋmg(Dq. c6Tnu_?M,+T K;k_dr^ 9O{!f1A畠pJ!BL!y>t3[D-7\W%x+gZ<`Xu)>}- \̾sxnD#Lp&ZSNjGB{)v1Bxoye*N畐juֈX(޳ʈ͵n[7㙟36pnaxo;P4na"q+Ѻ5(yӭMXJ2(KM6ع^'ڍx-*֨|ªɱ<b6y2+s+d!+u,#Yk]# /׷4?6`ϕ=L.ɈA쮇bvVv>"#H& ѭ$|gm3`&8ĩ%TҦ ՙ=S&p XʈA[ɂPLq%8p#Vi [PLq% DӃxxhə9^MGe})c{+Ѧ8өR2ðMnHJ1 ć8Xxނac fo1{-`*Ho!oHc޲l L3RFdbٌv6 ȎnŲht0;D+}S̜Vu׎8L/S9=83M*2s~D Tw=n{8&x ɈÃD8+N5וz8׊IbX*wo%G'7'&5ݧ&gT': a9 Q*|bJC"}g8SFT-CuQV|uVb0>";l\?C %t2N(qD֠@+4 u f*_WGd4 (O'ߧM~%c?#%n8y J~*kG֠V Wv]ԠgzM|FYm9 rԭ_A(a&J&?3S?PVB1#Iǫ#V3ά6<16N6Yo~~w(jUNDY]ㄒGd Ji%Pdew2Fd-_QWP2ab&-fҲ s*iD֦"[ο}TJy*\GdoPLy%xAH|NTg(&pj'mu{!t'WWXo5o~554fbMgZٵ.#E;瑺CZ]ZF#I]alo 'Sc5tϺG8Ɏ۱1ۚQhҾȚ>/"\莂o718 aNpꢟᘰJ!:;y;ʒ+$έ2TCz纝7~?W1 GtyAɥZMgDҽL{oR1p] Ң:ܖpr!bqiUKv< #q|̤oGTmߴi}ҭ3eDBVXBZk*ljdedŝdŝt!)ᅾX"|b6֏KĬ~B/Xa:f~ +™\lTx>M)a<ڜPlT~bj|;kA͵^Gr#X (Q];Dq. c6CevFw9f+J}RGd;W{8Fd;Wz`%+$+ɤ[I9^2";njild^A4q}%{'<]EKq%$-Y*Y$R <)2hx/GIzr q4%%ֆdpwc'L`넒Gd;7[o ʵ6l=jïP웭tf(O(iD6C1s+,ύP쓬ddxfsJZ$NzѣH9/S(=DoP E/$-}GdG}J2( IKAnDveOq7Gs}>y䥀ʞU=N/^do=x, 㭥['>͔/ \kM11Xbe*(ľ,r/utiYΰX5XvE\M݈)nkn~lřZW;׉p]l|Qk3U~MBSG73]8lL#iu SG4:+:$qNb5Ye.w Nv?o}B+vɪ%aZt׏~tk $-7p]GDj?;8vIRXݷ~֫Uu;ol>`o4;+p֌oxߜx\eӜ̤ݳ_ ^stV&,?&)hG7S',|1b5IfԏQ#MDw|buc[,k^?%K p L}3C:J2]Gt NP+Bmzԏ{q},pve)yvyW29otp1.uDwTwܕg|A DWqQIgr ά2ڹtuiv"MlاxI7I3Bb',L-__#G69mnrZޡ%{*^+U+ڈi x{C8Ʉ3jx~w{s5뜯U \JvX޻`\?kC %tJ> E J^ i'ʚيvS7]^}5TيA٭$w5{PLn% EFd Jnx6}T[߈DOteesŴ}RҦ}FGv|Ԯ:n;zj V VVzVhVh˷XS5iD^վe0yg˜8ƌD853iXYrh)yt).2alNSe3r;Q">,[;/wqlS=OiDv-nJxQ}L':";vW(aZ+uB]BJ/%F/;O/r\nG6zq䚆r<"U endstream endobj 1752 0 obj <> stream x]:nG L"@L A޿ גmڞ?iM%_S:b|xç Ucy?#yrzc# rGSQ2Q~@rG@h;zS52qwL 3!'8 ` G ɟr4!=!! A+4!_ !w6&DYjTj%P=!㱞ʄJ#Q xb+bed鼘.9@# #2-Ӝp˘VC (P]£r 0HxL<9&>t bDGn2&,@YW4ل@eu(>)cʩS~ڄh̰L =_Bw BpMFGt&1*df c,Q1 Dʱɏ&Pނ@'/LD7  Y&Q!!"M uGM&R#;5I$>ƄGhvHP 3Z,! Tk?rTcy,jω~^U;F ]Sq\C&+ex˕IgS0@Bwv#=1|q'.ZaU<%-c%RQ*%rL[c"PI&aP%]E1b o1*D9( Ɂ~ԟXN<]IR JXc]ĨٷKt*]B1VB5 ʒTy"܄Gt1dHILWf.*ҼG6ƄU $<: Xٺ1u_,|'. cxV#1_?(JvH,Q2`.'75#qw}KP"ъቈE Ґ<\!cn"Z%7f$-vn?It^96d2gP?eVkQC"HA@!y]D(܄y/.'n1T 1&z]ܬ3[q,YQmИs X$ Uӏ@]@Q" 2Hw)Br9W rIGa"PX\ ;!z5viLuX!  oGư,cQM!H;#6 SAG Y uJt AqRCcd*b, 5YP+CfF"Rlf(#nV Iܥ."§0 X2,160FRH2U|,#`E Dc ܔ /"0iqD#PV njHBBpZ|T J#K*QbX8̍\;'$QTrBb RsAXMJEY)u;G+Xޤjd-@RҒ0rg2"K(F`/U$Uµ:F"dR@(2Q- v'$FbʁvKsCɈX :Xfk;8rp,b$ C V=TCQH+Kf(CLd [ ??F3@YDG~(Rc)T16LIL "{R"AS3/ PXyWPQP^(DǺ'N/{&}ab%;7e @A*'ܚQPW-T,p  Dv|JnP"JpkmA>Fa2rD#7jct DVh38 z܏ ,}7",F9EkEAϭv#n @!4& r,;ǾPK2&|a28(,HGV\s3GY H>.RI}6t@k  K4-+ \V[wQ.E%7)+Su(֪]S)$8J^ qP_VNbVx8-}ǼZl(kqmgf[)gva_k;_tN)fؽЯGE=)NS>nl,kwFvjWL}j| %ۅ$Xts}>SH£8%1mNj8ۢ6+SlGy-NVq6BK8xpNrwp;wr'-c"5gz7,QX[ΦTN.w[1m|\R*ls+/줰aguב/*N݉lcA~?$n8g}u,苮1k~u_J/hr{OuZuL>[* 0 mPk,H p7ko4WFQdZgQFXD2.Q mR)7ZW(][ߚD*6[E*JEiqv״ҵraM4pJ+1|Es MB Ej`3hQQrX9Re}n^^tuܝBSoԪX өsAŕp[y3if(GD7 {RZ;#y nHv岥]S7>W9Z ObAZ8k15ﯵpHVد$ČM"uWhCj] ɮx%J_>;fnV͢]!M>mFѿE(mH;c5;6©K/YZ W[d kŗo6ZU<==TE*}PlIWR7+R )o͠za+3-XS 9h'|'cS3%멡(MEQ”-/Q w7Zr >vS1  mLM4'Tag2%J] QځX;;ϗTWhDq8L%MٹBPW 5mӽz%˛%3Jcد4v$Z?ӈWoםifXSD7{VZh`Tu˪FX-IK@FϗD_fMw۩fnӢ*oi6hѯƑi]63D[[ QpptCW Q4o}TEa6z8s8(Qn#iPԵzh-4p/+1D9;wg_x1kq}gGӣ_q✆8S[#N9DW}~Kd蝹}_}}puoѽ߮{Nq6+wva %h䍭N]^mbrrK_y+ݮ!p'=Xzw`mnS\ iܢhޯy|& tRWhoQ4sܚ@(DE}~VߢhX]iqWhoQ4&/ umuymu1UMPo=fWtYn~VMߢմwvk~.FvƮݗ}Bj.~K7Iv+!leܫ5]n9_ F_PYVhDwܔwF>.)qkn6v+Ci,N4="w;.Q mՏ-L;.Q ֏|^B-F&3|{yۄo{DB[u'X nrV591}i o8_>SWxƇ;~j;#ϯB} ~g|8ak,3o;Uo? l3Q7gPhO*zRl=9܍H"9؁=sl3qwN7GV,O_fKHv$7u>x﷼GwFv$7~0Z> stream x]8n|HIb l3nA Df㗦?(OJG8Rv7ɿ9d #e“t|V9J AAԃ ODG:h>*hWSGD=Yvb*5Ac%#)xKB1˰1sdd" Օ18L=rUJQ"% "R2Z*E0w.ЂNua@Ìr) x#V0F"K"B9U 9 fx#r(0הA?*(5(>GyְV!*GC/ *EQ0b\YoC^<s) U0Zbؔ>B M$TSEe´I0,c>2~\ Q3%&!@>KA5w)DBg( e JSTY&X"ctXK!Ux %MJSP0,V8C xC\T"J,JoDTi˻J*]*(ٲLB:S9(g,8J~Pgդ~u]˨38323EMZ8UDM-G[B>qZ," dQ-|$Tՙ˳Oݜ`YGq1SRP7dw,EߐaD VUytǤ UƮbO:phû: Lݸ G5Յ Ϧ+B-04E5H8vw!a g} uXsd?84"pl &xSO $ADݔ4.  !$F&dRi24.J28Idـ!axM 5gL>{%BdCSaB27IRAБDG!-T0ӂHW`4U,)F㮹FP iٰadP6NE%NGx Q<O*ݹI>`UB֗IN†, .`+BFr1fĀض+{V V/CJ C-w)u]}%ZXME KĬ0%5 D#BR*O*KHd"T!C *H ck!D  zpF|`͚aKB#pa 0!ȮdYirG!5yf FT80 aˏDQɚ| #ȗ5,Qd=ao\Pƈ8PcP-Rql"f8#TdB)B"01"AՓ#TT8`B.&$F1T+v`$q$3P!1@ F5%1Z"#QJ+Y ZyU/zJDb#lEHpRА$8t%*+!3*fl ZQa[3$0hLBHRлY]Tq%"A$dBbdh8&d=MK:`K&ذQlzJBn2bIcGh!2aAnУJfHrS cnX󄐐^4=+^V#``UNRaXPS6\!CGw UYGa!) +|JҊU?zJ,1"E-0BȦr1M+.,#jQFB* i+ЧM-jHd!tZPd`<+?ۯ=ul<>o i?P!׺V|'lLdu$;HхÇO3N6c2ۀi3Dwk{{*?>owp0ZN@RkI՝Z^?` V|t5)C MiJ;8©i7`sV^=plN+='Opyr*+p֓u@_**-7D;Ä$s`#ړdO=)Wp'||itB/_BT ъy5Rmf0}g0}c0}7d5% tN{e3+[A9 H߽9 }^W|'/pppp&@r-~Xлbi>`Xq:a؟s6Vx ;ScS;W^sqꎲXsR?prԟDikoDWbp4NeKm G cfsVlgjtx,J6(fۃWl V0_C1?Ju%>ȩk!.T\bSAST)8]bP,ڏ w ήs\)t*#{f?C1睂f(dvŹ %mL Gv &^,3u)g;Ֆ/Z(of׋J)c3bJ*XA1@ڕ}qLz%짝y4]KVlc~P8S:= 2eڹ(.JiŦP(hqjw)Oե y-33ϲUCkvuNE$ :Ub 杂U0ۀBHg~g(Spu|/}~NsaѠԴu=l3yWl#.GE7'yʳJTMT=ONKgYg=^TNIVV:ڧv&*o#&#}L7$a?m0/뮋ދN1(SzwsѾsaGpTf(}"AW>lJ9Dzwbor|حTz.c~ ۘJ;{U\mKh5x7}Ʊm'B /h.Zp~?4:yR3Hm^[0*N]kw͹/T܋&lMJ|\86 5q.]H՝9K43nەOùPڮWjz\mėujSI@s\zjo'iI;;kAy-+yD<]^p߀-.hL)ɦ.d+,L#/Rw*Eu+(v~+V +3 V|tѰDw<\p8{#m}' ǖwJfߓW|'t7y ɼw .H5,ފ+cIWˮ3\v{sO=8fكLWWkk_*םrk}'G^ E[=XUwᚫ_ѳlgu k'[PlmNYJ@sՎk [\ ?H|Šm\NeG^ N;MJg;/%cg;z>uYk+WT6/bUU˽?̕0V51퇰JXvMũk-8M}2& 2oJ$}Њm@q{Rc['rQ g3b;|!y2sdPxk+2'5kՍq<nݝ~q;#O<ab OWQtm3w~ (h? QޡQ+e?[a\E9c9㧐tUjm7eWL+1\Et+JPmbq})ymsn1f6v6;Ynxֺv~s)t{6ùeZ6 "=46NYr\d{rߓQ86Tⷺ땩od&st+75'g|;5p6nuG鼋lU߶~Q'ޫ:]9oq5ix2?YN~&]f+Ұix[ nI*o5n-U&VlTvlN\˳SZ}urE ղՑ5lJXUj8vS֜]I{#|:9 `R}|V&VeT9JN@+K)-km s%:v|}i4G%Z->(| endstream endobj 2760 0 obj <> stream x]4G@9xR | #ɓꎔH#uTÑc'8DGi@9jz*hAxw ](B6@PZ9|WqB*y,3$ 4k_?VIG,A!}*ϸLg#1TR_=4ziDdԨhKKBYcGʄ0  \D*ሉ[2)ccJaDn/XJqR HPPUY?[3 V(T{i5X`r01@5& t +`&H3XB3}Y}\"=cSD(n61Hq-$7FadBn–#[` N~B%72Cٜgڄm DF$3r]?t[R]ɍgdTrN t^mxGA r\ȧQ"s$x>f< EtK \DUTHgHnCY %N M5&̓Y3 T R`G!( 1RA >430C&Ln([!ަ*r˜ jBƇԅX!.^A :B!g$BDuA9H, U3TdP,Q##`&:f`M$3.a `PLǪ3 yZ=eX# 6JưR$n\Ja "EH(qyK! 9@r3f>YtIaJdt5 | `$X!ib`ݏچ@*t tQ'A䝀4 $R8.*K@e2Mrcy**Z< x bf0ƚ)2LCHKE 1j HEzϹ(6NA I:AcIcYj#Lc9*ܤ0MgXi̹"sXҝ(}F֏(e1 c,A 1tf@`ɔ OAQVKܜc )Nf,A 1tfN%*@Q#LgA%@Q#Wg"$EY&8guQz ΋ZH) |re1 ϬQ*2@+XtDG|:B1*fX:)7QJ73EYL8p=v2uXA5 X):)r)3Vj,OI!0Ia $5) O/1E10y &V%Q ^,5,5s0/;䴞9ʾS`"3F&m4TN 4Kz&0W l-5 2L'(-3HZvƬ92CE, ̩ؐO17)ĝGrB&}d D)%DnAW؏G f,gĝL2"k n11KX,]DnY97SX""O.m<%7V17DwAZ"Q*eY^&/O`C ,R]Kq^VK|H|rj{zLʾwRk>q~85(f[ՕjV@ͨVƞj oN%+*,?1!R>{,XYjU;|&iL2'd,0ԏIa~ɏ!6~ P2ZFShjM-e4 04\wqEUML;s[eeAu]v bYn+J w ywգzixn>fҀj7 {2հ ߻Ϳ8fMeVxSi3E5wvu7EaCuٗbY+ygkw|v؈0;>{TRϥA2*PCyӼ5 oˆ; lXSf{,Yg%>V,Y[ZMƇdMƓ}*x}nrgErgۄpP@sx[|SQP3آ_MqDar8qgN؈sڴ6,/X~7f!-iXt}1ıu o.4]^:;G,?j2a VX#]"ݲoLbo=]ԑ^;SmV>VtSpɏ<\̯MA-7T1m_|.|ĵS[a*bY|ҥJ?Q@ /byd]w,)]87\K%tui+%RMQ m͔'^yG٨UC[ Q(\jugUM5MTp +4 鈆9*\MDzBԃ/,} ;7SɭV9VSp5mJ;;dvcTkq7Gu|+1rܧlZjmKݓ,?T{mReh;IM/~$mΩr! -)ԫ)7I6Ld#NbvAf8 1nĊa:Yi_ SG1[Z;w ݙ!Gvb,Bl\%80=R:v]6u{b߬vn3ЮNؽVm0Lt!T-ݚkkת/")«ST3\yȡn~ŴI2`n-|`okmWa("fvÇqA毽7o6մX)9_g8T7]bNWI%j[E=oKw[]Oku]_Ww77Oy=dѽ۪mosz+]~Q[>q&8m,ۓ֓1ص-V5ˇa\QewPuzzY)_gQTwl[OWs\BLfX o]u&An`\yđ;8iGxLL>D9C$f9E-*M orQE*ViG_.+tNǍ] o/{}.nOT[h"SEˊ_ϥkH)zƆaXF=Ufѽ۪WΣѭk? La`{sw+yA_aH0arzuUۚא4$5]Р;zfVgzf%wFeI3&.lܣy aQo5^G9/xZ8jL3n77x5P!d?}=~^;.7l~'_ݙ_"Sj ڏ!(@$^ )ݐ~ AŧcdfÚ݁;,GK:{j6u/}uU_ `zݸE;Jhcw9^%7oEwޜž[Q/ǵ q[Q_反HB2;|05J'ݦ;BRNJ9)夔RJ9+嬔RJ9+嬔RJ9+墔R.J(墔wmcwn%f7Q9GeOdnT`^DZƵ/=+k9u)a7B|^XƪմQS}SVxzqU;պݬ՝=ng\zн׍M8qM+P_:n[?ˏ8mjZXz`Ug6}']{Wl/]]An{O}޼q.*.l,m?o I5is|J[sc6ðaXVxsUoZtﶪM:vsy ozE8Laˏ8i7zE8Q=9ne{rzrPOx|$fi2›:wHYN;OWOwJWE˓TΓ]ϥ[OzkqigiðtKZnEnZd{rr+!? O~%KOqtNϣwq o}C`'?[eٞ}wmON}7޹Cf5|;6\|yrz^)9_-O~P-;Oζc'kkkɗq ò›Ӆ'g,w[^|=_+w qtNcwq oF}'׭lO.[O֎\SC>j3|0+1~uT˓)zry*gI ;%_[UZvy.]zrUGjVز'4;iYvgzw6qƠιCN0:owt:ѩS_'> stream x]4măRpc >pv Rئ#D>oB۾,-[%oR[j['M?ٿOo7* B6Rҍ4oU7)+osdDݷ06' eknٛՌݐڌjN -/۲QnTfR FUʖbTś5켦SC`TM[$-Nt"LGULGüt4;=5x+ZI͟F(&UXmv0MbB .x7LL<á./g蠌gp$#/>/Xڟ+f2) |9mKp(WLaE( ?nh-\dc(sxf-9lI ެo<,U^UYX [3g+;¢!"j`IVrʴLJUb:<{ϦsXt뎜Gɚ:l8ljQ7L0dmqSٝ2dN&@,T>[HZ>Nn6"Ygq^w&تG2Y֫⼲5'nY}EŹ-X[gli)Q>[aSp,k?3m}lٶ>>B8o}lٶ>lq8o}L|gq٢i},[?ϖOg>趙}͟b.HU0tYwѮs-$hW b'!>mZ|i*,_Si$2Y;UiOmYZ0g5%ϽdoS M,{vb}`-}-N2Bq-+Nbwl|k߱f& l9c$L_ m>`lfc1~x3#a0Ys0vw)THsoSd!8 Iq 9AXCA*Y &8HEppDz7Hb[ vnΆCKKɳ $K>4X|S6mhOaGiw a?E,ݰ-Ua ][;gYS3~ugǼl#M6$hN=٠egfΆSHca7n |S?<H6@̯,)fmG!&'Hb\"}#خ$q"ӑ2; ./6IH+H6|RKl0IG!reArN2H>D -a[=>Q% 7 anA.Qq{@T1ܭZ-P ȓg~̖avTdI>WGdrRAbRmd䈣I8#X@;KK;Kl[N_\R}M rI5SH\b ؐKj'M- ם7BdԒۋ\,Cfښ0lM_A; J rIߕq49uVHd|\D@Iv,{5jYjгY{p21V!|HAv$~6qo2{a7ڪ{aCuo25Cbo(bH_\6/vXBc$k: ~;I }wU k-8ce+&0u{g[ЦPܰQYK(AEΪ(\$w@ŅB3׎%Fcw1G8\r6[Nʒ |n#P0ec|95;*7%vPĬbnBSP)0R@`8(~6m $viE+# b<KNQ(qΥPy]Q['P(nM zebECzDZa?- =% BH= հ 37EYp`3p($#(ϟh #/Vhn^F7m/Y0pyE~ӡ? qEΐݲ ҵ!U0t`[q'E~⊑@\12 o7rܟ6XՊHF([|Ev/@[z rmY6D͜+E*ͦnXE&:|zmr5&ؾ>.2OwWD%Q:7~eHES`{VF;eK">%gX7~RrRf}MAyiSd 9rg,4{/Yx7tܕG2iiz(j iiz{ odG6tmg \:oem)Q=_8ESlTgSFS@mg֚> h+]Yi{X· kZmo6ִm›ɚ.v5- fS*8&q9Ǻ،9l+c, mJ$ (,8yCq߆OjhfN¸uaʵ4JtOT+MSl#a~W˞ޒXAQ8B4y>}O!8jXRú\sQ۰}<4%Ggᩭ۰5`FMթ'iFɪDɪD,j0jӾ F_ՠǔàFYei9)~W}J@8NǍV}\[F{~za֗HlA5sJJ"U.:O4 &PX#VlaDoi 2hSE;f 9/d;jN9z8s39>60q[ߥ0ԨP6.Uq>*3a5xJ  Ok|]h h%9x !`Z%-H" >,4Ϣ>/9h!`@G|НE0; Su 6,Kj5>_j00|@XXYb$x(5>1'D!@/;^`AXX07 Y@oPdAqLk|C(l@wP5>"k3^0VUHD "v&*ٔ(Br )$Cr9$琜CrT(*Cr(JTBr܈ oDY۸(^hˎ;_2@ae}xr3"dyt&|bMk|0`[,_mM0an@w~Z@~07L_67>P'|da_ sm07,6"bo| p;%!k|Ew:p@/,Ov4kqv-@.92G\s\olexk*pI\ nT{><wT^`#E}|0m<\pC}p;-6Y!|u΋M-.w+]%JϢ>/؏cf8*CءM":&q ES)C(S)~b?EOQ'9$G*N,L$UG08y-Yi,L?mWG`%X%U⍏Y9-,[ 6bT`س`-q<{w%ڷvo+Қhho~mZbn;L=`h 8iKiaģdw7 47q%8slj.XF\M54b&7b&~?Q>Ո(R G+DU'.v?]}ߵHmya746^mX VȣOSJ2q-i  ޲6/}*~Y߾옳°xو,e0V04 ߧWs-{4TM_g%*k|K4TΦK4T>Mh,Mh}.PYr0D 79Vz+GQo娷r[9Vz+GQo p'!?Էq_2nٕ"ٕߧ+E+5OW*:N|gW*:NK|:N|:Nk|׮:N|:Nk|׮:N|:Nk|׮:N|:Nk|׮:N|:Nk|î/QWꝕ,򝝕蚬}:+5YtV5YMѯWq8U(tjGQg㨳qn8lu6:GQg㨳q8lu6:G2|g-~֞wpf%GyvS7^mY#g9j̳ /'73upyfRZ'N㨫2."U/? ۸{p$7^;ʳ, ovq9=esbdqq&7}w-Q;͉ө@0쳐(s@9ʬHa$=;ڵEv$Q9eEUO3'kJES,ǥO#9kjNqH}Fɓ,0gp|* УlNLӬuSϸoGc٤6sXGso㎺ 1|+ u\7f`qf` /" /`QXsTi9ۤ-YGc稥sy?m11_gMt(5"~~xP{:ϩDNKt%LOV6@@^ӐcIa$w{qw˲91Mi4pio&Y6IäÆ혢60p_~,Ƈ_ͺuY|uy Y됞o"Cz:K+j5_DW+jK,$jD)EoDA[|-er2;$|q4*?/m6ҘDPfBy<9?K@%~'SD K(C@b:7|=2YLO|=KO--wy&ZR.?{pg- F2e"SØKpޗP`0%)0􎾍P6Ď8) ;TlJMy=*ɧ)6lAۚ!a/Qm-ʥxӧ#۰RqA?fvE(`> Y&gSĻzsBgA͞'idY F[ɢW߆m \!>5.&i% ;6%'\{a M0ea,j5v[ O,j0jola%Fy'iEmn#?\{9ODI곺zN4jQNӨi-/561oc@Ը*V۰_|Ȥq> stream x\:n`̤ RL ME-Qrs.7M.O-;ڏH#w#yD:BQ|Vx $Z;R?()Gi$5PNOG,hAx r * a%ގJ:d"&T'N)GHQ)*5JHJAG OHQITR=*EP!~B4m=C| )8ƨX(Ƣ\NzStPocJ5PfzkU :8V)H@ArOJAJ%)m+A'+`TRtPyؕh5FPR`ɝV( !zPzF*H3th4u4xG9A"J~+$zEN:"'gJ## Hs\JArJeP:r$[:"qtȸe!G9r꽀Q JGjܑc*)$^4gGrKQs2p#G8^d8wtH) tHTQOՁzj(=ED|t^dwMY J_%nYs\ F)(֤נi<#XQDA Bf ϫWOd`  hZ`D2EPAZ?qbkj*5EF؊^F&$Iנ)*E`@A t$(萪H**P4HB=Q܈ k@ cS>i 7v` WF|W 7n}\ ( $nאr%_ /FOmng@rCA&EvKex-3?ԋ)--kC/u "%p"@vu yFUIV-o9dW^ΣQ`?UV!dp@!U2mtj+zSnas*@g9NaU#JgƲ)ODs3)@ArfN'z+Q u@CbN!u% W @Cf]8*>,)\3` ?@8\ԅ w -fX3R ]q j՘$;1&`]Hv%-b6"IH@>-RXJ[(,{ )w 3.HF` 6UIIafVuBbb$3qJ2L$SDa(UDRHI LETQ2jU ?bXARg8T鱠O\PP #ɦ$LKaFnBE$\8X1pkҢ,\]Vd%x+1T5uvC%.!2kHS)K T15fꁤ0V3IBj!XV0yb]/ІX@ V$pȜAU5XaP, *:+L  SuyN, {LxX%hxT]', e-Jam my 2Ԍe,5t#I0 GH} Hf`YѥHj*U&W1Z\X  HUoʵ;R[׫Hjt ؆F+oVH.L@j#Cda , XX$X@ЫTdFVhDoE5f`rYPvTpԦI/7i֒&Bgh,eW!r dVmd$snĞM>M,[qMV%,7&:,*po~c `|~c~c~c}S zDȖ XQKրJ$BJB1T^ICI-`t[FՍHb#]؈XKDԱ.SAYIOEֹ]f $YuQ5ɝrfS$g9aCԖ| H(TRWX”q&ԦF9"U+tMLId܏d&0B/L$Іi$)mІx&dN˫#;mӪ2PRL@V%;Ġ1a\7|#bBd!&e3@ OGۢ*f"rG J24,Б EdW8SLTQp4bѰJԦLTK4w6͔ FGZ%{jTTdL2\͗ٽIjTj>< e!Ȣ2ɪL8 14H"F P[ )[RLc7d Y# WIĸЙ糖YIbגd'B2s FmL?2?_:q ߏ?_?Fs<ԤoFj|J_KM7ǟ{2 pt7èº⻆!<ӰWm+qs7[Ϸnf;'+ wVq׿ a~DEH#DLEH/BKSEB1u ]"J+ö_ t -@X?%\$N]]ptWˍp[xpp:{ 8ñz z ~=ywᆜ{%> R8|TbeD,yl@Z bW_]F;`'5lx<8%`n鿆 XpNNNpy=lGrzΪ R2HY +nWFc4_s]]`'M 7 .JwOO6/|us+Zǝs3?us_6؂e{<c/ AVW|׸b .隫P{ǯ\ 8][P2} ǼvN_z^]plb#˙'DxJ%?Tq-)<>~e盟]{Y&?J^ˋd5.YΖ)"2[d٢##OYh#6#j>v<yObA_I}ll)b)ݵKuW,Id52Q6Eq5elX决5Jc O^DZE֛ˈ7W|^X-ZՏjqU~[םGˣ^Xo>/B|_|g[Y[7um#qN6uJb(VwAve׿~.l.[M\Q9_7‚*č+.z9юILoPw@sŌlhoS 6$!خcG7WkcC>cCjxb-)^XMI2c}ْӷ,=jMOڗg#İ'pwSsþK` >{k:Ӵ@ˊM#<^ /cئZRAyLwNk}'QмD<.Pg.Ɩm6ݏb<=t ԼKmfPJXy!%s ̓w>jRVlJEl_vl%>yIzMܺ kdĚmRv3˾lo^-ir).n^%\^l^zyqbbf7ؼҋ[<ٺ쓕"냉`b}0><`oe>SȋsudK-mm-ɽv]^6#@_usw8r Kϐ03o(>~9'5+ ?Á1;1\:ng@۽Mou}q/a_1}xyZo}x?.y xym5J=qp[ߣZiV|vзN2ߦoy7w$]=ucLNLN*5WⷾvLVЦw/zCwY̖aym+ N_1o_e[UlشS⻎4qIhLt5'[UZUXY(Cůҋ%|i2ugok~t}ʺjr{ߦ mvX]ưbgBspwˊ:4~ wPd[t+ý>bM_:WlړC2.kG6/kg{zѶYk-`ͱ ޡ '+Áf63vYݬiv!8)nϣMs|Vl e Ų6ofl6YfZkyfx#NlY[vY[O=OεfxY; emvHY-1.(OVlWw.qX߭©fpg[]pc_ñ[_ .8ep eñZWm}N碻q~nӤߚyj.FuM а.udF'_sZQG'iwxr[.X7&-Zg4?ɭoCXhTt~y YJM-ԭC܅u̢u̢֪j@{r67;K_ҟpF ^TJT^rGݟD>>a]'狋m{C [E;k6p껪}+ 6Uwp8}wyş/0η'X.v[^->;t| ~A-&' endstream endobj 4272 0 obj <> stream x\Ÿm; !%AV]&H+Hze^ے &)GԱtsԶ[%o"lVI-&#tUI-B*,^mFMr$!B"o(J4nطha[Z4bZH[ap(XEAUJsa|Q Jhyk[H,&%1IqjT؂H :D )(PI YQVR#*(T 9OA'(M eӞ?TUzP),ĹOӘQ1a¢pJ$FA[ RAeR R*Rdq@fcQ Tb̴RP2T#G@LfBΠQ! ɚ65/`S (D_k8 j( `ƬyT&Zo[$',8T F_bQPZIH)&_u7 yCh(Tn^`dF&!q0 D #ɼN{fKdzg[r5 :ļ )FAȢbh3 :zHكPjoH %\&B#-i DiE di(FD]C3&L) T4#@馲s)+yU. fiFxk |ʵfdZ#V60CfDVw!@ YEgEkU=C P;(1r&ψ­ŭ e? bwbϐZtdϠ{YݪbL(9X#s2@hey@1q lk6[ 6mFUB Ϭg$I-Ɩx/̪TKmLhVXPڞYFy0lo4P\h Esk, %Q_eEFvl^E&7[I4QM edJɃڬ(@JgGjB[*Ԛ^PFHom›'+ZF2"ٹ)3$=eG\Yatg+C;Wm`]~\@2&٢r-$%eQQte!h?!Pb``V562Tk,YSm”QY5ޟBE ”@)KE4i~Sr7YPBa+dR֒b;e)j #IF $DY@?ULlL Vme)OXp8 ˜X@ޟF Sm e(. mRYa12E{RIXa*+Ԗb[D*f=e}j`eV֨jfUjmTT8s[M2) mXeYAeF>>& $3qM-lei(kI34â"TidZⰖ45ؠ ,6e-Ai{ jfkIi5Imeh=qH *s҂ co.:>=BҦq7s/T7jik,;nj$VϲS[6Q[KaK9@Znm^F $H(FaI.B ` H1 $sƭ8ap)'2IŜ{@sALLìl 1 !4,hMaBsB'8" b@6M IF T@vƽ,:m z$S ¸65aJJm[2T[ښMPQO$L6 (P!LH3Ԓe/@(پ-@L},Jmҟ.L ($bNA MY)V- UsK XB?ځ}叿;!ǝHƶt?_تJ:'rd7GVԜ9gڜԅ9ksd.ޠ⿝vZܡ ew; @L~?@79fyi-өKa>hO;>W .7Kl 62gIG|9܄q7rrgrG|ݜl;:n^V:_ey&7d˦ ew6;ޒcn\39O=p2?|KI&.2:Ye1hOǦ°PG|pfytvp" # mOSX993Y_7.ntsr>d]esN8d1~ .fI=*5uyeOL*L(C4*8Ba%Ac LLNL.:;!:CXfۇ9>Mi4亏9Հ2LN+gy&e&'䙜<:*<|"4|O왜W\g~_99_fM++x+œS 㙼B> YfÍWZ!^ixo+]/DgWGB3k ~+g@*kJ /KYhKY"(kr&9T{aa_Q*lP&p`)ٵ3SdvB?Mǁ)MYFlG7Y~r\33v_sP3;x31؎,c=W󥠌غ)(smuSq9--_ak۬3K s6+:ft7pNSꈭz/q[=v7EfKo_1ZG+rRx&E?&ɞ%:bV෹6Z662~~qrxwci84I*a>Tm7P[}9qyze)~Vif舫7 tr3>b;fO SӀ"_LT?%d>έ+>1Ӕ:b;v)!I]9N|Yn okuXOk*c5X\N=F؇ꈭus&,Dέ)wmiOi"],?&YI[E[Bd^ȟK)mցi:.µO7koSMY:hy~"OS?"kyWGl<ޏ dR@sEWI.4Ye :udGEP8Ɉ&pO=4y4F?~ȋƕkζ.غ)W)qi*k1 j4γvEop C8Mks[fMq]y]8_ oL.l?r@U ?"懭CY<4zXbӠ[7zr)ꦬV<-غ)M*o+uK/Ǫ?)P6d3:TV5~غ)xm;XVN^A;aw>U08PdR]R#2`۷M3 zr8󿥶iBO_Rꨊ.b~Si5^-a)Ϳ*nm|U!꘏ ĽkPB|wNwrSaCxwS8xtVoG0yxUmU5߁49 z~+: tꝸP+msgևGrqgPG=t9KSs.V ~IamQM VOWKyqsgBA @|X9z!XΗ/WooH(+<}1\-L=VpQYlbghWGkXiZHe#]~8TVPRy^.#9ő<+:_SQ\VLSo^Q镨Fe U^YU߈j&״{JxoA`v,L(Fq\~m#_NSʈRwצx_N<^{@nJ #1ﮯM쾜nW׊o)T%8"#͖PQ(riJ]6,+)غ)~)5cYy鴦B7 5rAhĩF_I2o Vqh^rT􏤯{gZWB}$yEO'yԧ#>o`dJ!#71 endstream endobj 4777 0 obj <> stream x];  g`5kQm=)}4$^DNH#eqGH;|KG#MOHG*ʜ|<ȕz[;J֧(B# %ģ%>.hJRwj΃**\ű Tf̷UP D0>똇Ttd!Eg"J̘V}ҙca#&L t>AQ2g<&] %Pf(N %Q2(;b ` ښF_EPC<0VZB' X\!*> r8R*Dcxvk1*H RR쉅KUt 8}Fi2P΢֧KIh/#کUa=RAsA s?O},RGT΀9^E,S.]AtcHu௕q$@A)1HQ/p WHH |(@1c >AeB(WHNaQUⷔ:B[ L[4** |WH.T F3VGNu:sy@Qt)f=.Ngl.R_#'XdJyrATGk ?PAg =BJ!;fLA$#r2;8sD<#!Z̢̍TEGD2L0E SQU4#HM`q#Jt 4cDcQ\t?8(HX%c!IaIAz#))Im Ik&j+,IIj+ 2P0)JR7CԦjc6zANK|P:7(0Sr1@&}:BU% c((ZN(ri -UTU@;HH* ptpEM 2SZe 2k>GI]TG.)}>vF P[Ԗ1j:BEGdQd[5t!VuB Us1&c#jʂթ 3Art,ye<7dbaA(G!AU`طuڒ'COڲ=e~HELV$ aR1sxLIBxd!2F:a(J36QVjXUUy) ^$)7 M@PPHVz&\ 2Ge&6ʊ 0a,$ 2xB2SH N(Wt"EN0TH&%"c!(I꒤~R23T 2n_a$El 3bD%XイG; )=U F)GCNf5[ F{ ; ^w='[u lDGICܿIrC lP lL[5HQ^dk*;xF$U/R)jBalUx!QO-}#MIh ox* J: '@i,*ɾM !A؏XdU? JR[Bm բ$6|x=쭀T`/ph#ݔU=2Ce+k k^LJf} Ȋ-DT"~ w/~u!<ͿOcv''19@WoGN3k>k(rBin-(&S&#K} StQɝf#%| GT_yU_ ͝),}-V!SX{'H_a3.-:_:C;n+iYB3ȏuV#/P(|]  !9 JڭEB\0VSY[J:P;뫌TALVPꌭCak퐅P ?cS((P'P~cF(yŮN@z`_os}t=ɷTׅ}t]on}ݜm7aK[a_0WzJCjDqv9:e_##`W}8;C4غV;|z `l( Kh*Ze|ZZ[ 89dM;릥uƆbN;Cu(|}ϏPig8p+k}/[8O2>lJ;([\x3m,BN:?F6fvن{a.PH1CܵHͳ LK^!܌Iq˳*ee):ެ@Jx~E::9*zG(QjAPÌgP,\.<˳-X`.yԥs9ՃV|lN,vnKK7c ,vnKK4cPPw(f؎CX\ דdɁ = ]Bvꢺ(}gZ٬Ql(ʌF 1Ns t+3>WZy'ߢ+q dP# [@G[Yt ƴ26 .(i֡s4^}db҃وM_[oްY# ğ+~o+HY& u"t2vۮE+#5W'~q3:csʼn_>Z6ЧCv띟=^2㕲YG8Fag߰^WWmB8!콛uH ܡZW鵵CoJXv .IXrXVk[&Kn&4Ӽ9AK\{g\"ބ5ՒXhwX &7 yV}Qj=.];E3Q4Y+Fv/IiwNwypQI/m.NpxEOos-OamUp%#yku2mCb?WI^Gr3sɛHϠ^L\˫H]$u`m$g l.ZVee02("<}䲎ϋ!?|'^Ի\˴3xMSŒ|[8vEXH.H.$kIE/KmY\Er}d$_W[:FtuvKfXM9}vfvuIWwUqeٽzh l7qހeez~ʋ':f""Κ^-nz5lo]',9 bͫ+9 sfYG~Jq惯ϼP:'?\qmVg.dwF0byA6j Ey-)n ,*b3^>U\y!I?[;_n;ww^l N68k7zK82p^umpنYZ 63s:zٞWr f3vX Gk8f3vX;_oWV01c2wN)9E,2ftݕOn3k秼Xh݈%v2/Ln'shHrO.0y-yخMzkzVpKDoD]7%,6wħG VNQˌ,K%/[ܮR A nv݃n#sӼ tlnw^x xso3(H:^6cݻZv^vk^,[^iFɶڄ_]|vqvp_zq3d+/dGM"⌭C?6_ۇnkCyA3r0[ܭq<ZX4k-U`1glxJ03p- C)nk(f`X2c;|mFƲqWv6pp5~TYOPnfNYR;#y_Lb/yL]uޥ猋Aw6-ߙvmlm_XQvQ{ZZ muԗQO~n _ &j2T[xvwrdMvQ{5 ^}$Œϕ_gܟd>3/ݶPlyδqH3>-rHEPšsb'Cr+8ھx54NT-0l֛u \dQ{,͓ 69Ϟs~iZK=~غ[+^Ee^c/Ǡd7cMϔ}bSvsflgʾA*pnx4ŵ- qOEzp%sJl BJ0c덴We(ՠl O.(e֡i 1pq4(mص^{k}eKJ{cz6( 2/ԕG;;:uL=.ZnF„sfl}m%vS%]ԆeԶ0c덴5[3mXFm+3_0{ %ZƭQ+ۨ  w qӲȜ ݛ@,[r5V?"[؅}+{&j[wȾՌg'[hW&+c?ZD[do#cv菺Ipc}u{?F}be]'&dϺ/!o! d|ϯWr阱؛ǯ}7Ĝ}X®6}g|'c¦xZ1Z1vGhGa׏?0mt 7?լ:&3r/.~itxbbb` 46 ~̯rެV endstream endobj 5280 0 obj <> stream x\m=xvYEJ@AI3@.4h,ݗe :o$%ȶo9([o1@P@DA-7ʄX?l nL`Q`+m!rl8Qe+pVpVA'VA'UI() HXQw@Ѱ+dcA kB"@)[P IPƔcIRPUJ: 6b)MyX0l*\Va knJfp1]''2 ٚjc`سBg"rcAژDp%\sR?у0 `;V\SqhcYMݸU ^6K*c0D ]N&S' 8ck0HT+pK,/ricʷ@oF5گ*s`'PVȎ I:i %%1A@ &DX#bUTǎp+@c,ֱ}.kF|`Լ 75\ɌmE("(05u3*(ёD\cc T` 0 Fт@ŦHa5H (Q&YDP*;1bXȈQl#1Xf )MD)HɌUj@ʭp (-Ų) 676ЖX1ˈ%lK Ұ #v5.d! \;ATLͦ"Dؔ{+8 ~B*mx7*pU+ֹR" S8B <wg y"RZY*oF󙔪K\WVW p-kQE(gtdcO#wZAp0X߷^0h_DyڧzeDNkeZ(X'm\|!m7g;h&CD#SXDz7h\/U;/QjeFY&]73hqQ%ũFGhM7i%FR],Sw-Eƍ0Bk]KMzؽ66mh9ǫeNZqJRZFhAG|KCiikvk~_M+զi@B-1JN6uֶ{ۮDLCܗnY&eÀRӀ,ZFP{aU@O'$+w^GxU\En;qE7sNq2*Z\8c:}NPYٲ:̔ܓ_vCXfEEޝUC \06K]Y3(VEgMy.^]u> YA{H! LqFv4P6ol=7TgMVgt3ߜtk.&y w8#nxՑfL*M4;]2|6 ~o*Vy q_|+7rX4sw_|-Nrq EGx8x \N~-8p3ps<i6֯|M7BWόvy͛O94ywZ$~\i Hxs/,W=|-b^X*^z-תyOʈܡsAϩ3Aiw'%3rt2=]ʀWuTi/}e J~,{*/ZmB&M1-vNl#n[ Iϕ%/ݯ*% RHPM4]cv|׆؃P&n7 o5n6(Sy*b׷9ޓf/ؾś<gmpB7()uA#.Qپ8>'k#$SM_ˌ_ʲRLpN_KV)muiĒf.ދ⊓6G2B;o4].Xvu\ߖϵ;%ke&NZKl}F7ʃ<=Lks'z? yKOty-x/{)fX0#6izoa2:ww>2l1n8G9ӢgzmSRa2$pw2i֨Q;SLx?JqZU5Qf/$,eYhNS{'P>j6pv8y7>}!8yǻ69r΅9Ek 0_<hǦ3k?NgqCN@h~ie +k{b} +0~o0vC2n8 G^et暈g^=e3ߏcūi)7?xG_߳+~68=U~ϏS)Ww =U+)ۑW8V5%+Q~>{U&G:Wh0*#*;jN~\,tj\暿m]'83ע\߰$N?g~/qu^vk#>鈯6"WX@ja5;z`M*5[z]갻=.ن~Z,O=|I: f&q-|MYv/XOb L֫uW5Su^y %{9<Z|xo3GNGMW~_g;o ׋{#O Q8*&_ Un>+}E/hJe N43ϧΏ"J#?##dD6 endstream endobj 5785 0 obj <> stream x]K,qem߀a FVlC"S왯Yř[)ufS6-wžH--NB6ľI-$#yZbeKr:N9-grV} D[l~TS:޴PUJݩtu; IХ_CBN F)aj2 i SJ)EW*{Z҄ ڶHepAh[xsl+ TPHNHmDC"O;G$fђFH-IRb$gJIhQ)jԬR_Ѣe gKSoMҳJ- qkFc*lQWhEuFGKRGL; hTgs_!4*hQ4p,P[@ڴ1RZpvB+ 4شGA5m)-BS`7R?HԴA5.@է #X*|E}KG^P+A5f.@ȕv؉%|Aʃ(|aGQ1CբzvI9J ?8Sh0}*R%wM[$pvفgI':Yv TUEߐ W֑*EIPTUyj#*L3O( }4:Jd@|p+0ݏx2RLC)r4:PsndT~d~ 죦HѮHLhKyX?$ўL]߁βxv؁*лzEZ ׳uwmWصw j]hR K$5 #-GuUu͢O[@I +Uup:p:sIaY Ƨ썞 %%.8v̱:Aav 2L 1MЧ:cT{GqLT'YGGRdo%Uc~PX&ԁm E8H20@B$+HMP࿃T$Uf696·DUMNYÂ'>-UYbo\ƉHEs׉&FĂDo^_{!p"R,9-fSh!F. I!:`6$ &"g6+h4 q+Tu${caf )$\ȗibBc`H 0y>%u 4S+98 R$vOI$+N(kJ2,%pOy"I."$Ձd%”LGq0S]{V#CJ:4}ʲR8 +p.8\J$BX uX*0U)%`և5A"r5ihBQ&%,6d VmFuIu@f7N GPuX@ lJvUi!0 Vid`%B4-e$^@a묔e3V]`Mkj`ڂrY0S"q pnhx8YpU&Q`}A9Rя#=jFt\v$r`%@!AE!dԉJ@G]Nj dM5c:V~AH ZP@0cYE$ eΕ@$K_CWqbFZUŹJT:TN[e%.j1W$x4-* |N rg% H 6Áp׀,Itqd I4L[T%Uc;!R´ dvA*#/q@Qn4ICT C'r t,0NIP/!LBCNR%pC:]Z"t@[ KHJHNbD*Ў adfpd<ꐩoU2{U{x޸v޺Yfo:Ux >EXdB 7pl.L* DdI0E p,GO+u(S$dRvݑ#i'Ԅ%A6VgF]"?$H  BO:rS0w*I hUJUko÷7g$۾}XΒ/Ζl& n{p?-w??_ONR77W÷ja) }4Rي6|GO GQ n@S0Ylvrħٰ^+&3~kF3'Mfp/]^'ftgF3'^ 30c߻ ^?n֗bs̰za6 35X` 5C,6یwZ`r<O#U f[lij< ?xS>XU쯂y W_s9RE:f5l=n߹74c j#s>ݩ즇>B[a+f9Q*K3jjVݚv1+7ݨc]G5 Uwbs֖kW4ɣ2R)LDI.}svߜH6In5Hbs{gwgh,6 {6Zf[5Ielf)Hdk&1kq9~m=EWM.OE]reDdO4Hieqƕs-w":<:|铳U[5I7G`G{ }X!`\OfXUffqm7f$1ê9YmL%%5c?o}bs)I+Ƙ2NeD!Pwm3 6͉WZQW]dn9fxFه4v2rA'IOpkw _^1(nzH؜&o(Îۻ_*=bsHx#=HJٌU/nj9fOQHd_,ϣ2r%ܣ+Ոx:"^݈?=ix#u">; >=ixc;S-{7EgJ:'z󧪷č*͈8*]ۈmzmo D=C|g>ޓk\6bsgR?yY! 2س xytIoleS`˶x]_?oH-S)7!ܲF($-dTIG\ŵ< 5 ~gx 5LxFTky`0 Ra,-\Fᐑ3!=U]g,i fĕbqveFgfSXO3V`6cUͯˌl@ X4Fr%(/e_pl[Z'?+bgodEYVYq;ݙVYܬxyb{37"pUVf SvK,Z'ިy$S^nF ӔitFN?Hs[oMŞnܷ<륗tV|۾taF^MBݯ`rc6B]諍FI'2f9>tP6Х3tu,6u]~bY\xqjUP#Y\FuFcMjLxj4KVICP:h" 9 y:vĕaa,wSPeץJUxe/x K.x%cfRű |v,"xcBZxY>xʏp6ha1s훏$M?˖ӽuRË$=BVNs<%$0c.͙WIn%?`bxs3ɼg[9:Yl*4 V/7=(/:L׭ULmiK\,c0ݥ[Ehok3s]*Wt#!~ ?ǿ;c!<#JT1)v݅ٙqfסI]P¼ 8bs^tOLo);%slㆼ l37'ÌBdFNJTտgq-6Mjު7]gFU(c_f[v wY1հ[u=bSUh]Uo&WFIE}l-Ôa<ɔ |R[lRb:/: ްBDzKV,v]}!osD?}bsȗ7zcX;ʀCʔ:2e,O7pa[ֱrN/=u_ży2wY9 PnI]U-=9ȅw{y#\Cxw!߆>NuMEW^齫W$BU>]0]ew do!qWE;ͅ|Ǵʞ>>Omk<H~!.FgOn_: љ*k?ܳRXJƮiqŒEbrKsu$,.Ѱ:;-ټJOVi7͋>M/z5/~[JY%H;~igЙUtYGzU<3>DVH%Z|o;s};h2Zdgův$,uu}qxO^=.~r(A/`Ι5h\JKW;\=R*{^m q6GT0a}ax%S4[ƌK(5u/gfF77/F|9to6/w q*KآYh\9R, :2sI]%Enlq(gyz)|v~a*NcWV*TۡmUj2@.jcQ枌m5i+N׼_b;F'q>J;q endstream endobj 6292 0 obj <> stream xԝͮ-qIã 0I3#Ÿı EO>}*YWQ&oob]by#LG2 7Z9yҎ~#rtC_)g GTHGi@9ن/hqNr;пģ_ 9)Lm VrFFBWj|)iC$j!Y"o*9!/jje"Ţt- xRR)~9hyߤit-U4۔ӨДFeX ɠ~Ę.kxE)*Ջ#J򴚢|hj6qҠi4rUJ#ݬiִ_m5~um]ej6#D4J_GOM"{>,Z!h:v+;Kj)Іa{=` }zv,Zm؞04aj0ߚ9à"F~f8jֿ.uP5gÚmC1SU#_Hmy: cQeho9cZ,UaȚ ws.݋4SrE1hi2 /kW*CLCeW3zgU|P-_/é:0a5jC~jy ';WéCէ&WUDhᵍh 5CK|/:VWuMB??~<_?kor~x[Qh~[<o7,^An3{u^^˪M yd[I[ͬ)ܕ1{JZf%{Y.>vtڱΓǖZzFH?:hU:Ae%~.z!+!|F}Wzxj]kFZEٻXNﵫjuhi%s 3sO{JUd%R=iR}[^u ?Bk񱁖Z۟Zl{(Rk{^#j`!g-(nzRHOOkqH: |jr$fSH ォAp?bKOŞ|^Yjo8eGq%;B5SRٽ(ԂZ,b]Q> j,yRcYqg~!mc'=dV">?5rx+M~ɲVɂdhS サ/7J羚g459f=ˎvt}NS#&wggxǪ=45;hryl&GMhrA +EA&59ZE|}jV*IZQ R颕O>$&JZg45YeG }NS#&K޻KPt(Nװ8Bc5:^RF7zI{>oY= H}VF'k+*?5έPVˢWO VC tU[ɽPWƎ~}fAǎ2;{ϲӆxlT%On.YB {wv&AA50,2Ypk:iV {=;Ϸ^(d*i `?זs1s:2ǺiΦ̪Ae||?꣰eyIy)^Wᭊ?yV݇*?UGo}ڲdl*Ʀ{]yıɸɰ-$^~7{&߹^~d<&;r|ze|~hƒߙ>F@Ñ^r>okS-bqkIYb OUWUc;E||p+0g3?v9Bb),l+-ZEŻp4yc(bl3F޷3mͅohX,}[[G[bl6\F[E[jlɳ_&hm@Y&ϖі"lg54ڔ]XN^!6I;ӉօlX{՗X}՗X}3۳سڳN/[Immll홭=g֞3[/[2֞3[{fkl홭=g֞3[;dkl퐭-Ms7qb30LNm~gX9 >+G-yWMN]c{K^lbϻ|%yYi+Wr5fYoyZ| >4ӇfЬoV[nrɱYt-LW{* )!XW JYB0_ @UNBTB ;;w2dRϤI  @ @H)H l-<Os0O\\\\Lo1fF`  0B"4(B"fLe WB7Ѝn,tcK'Tfݳ+l&K!@ Bf47͔=SB *PBq }JQJ_J_J_e 05-FotFotFotlʆĀ,xlxxvwձQ=E dΔ4T@@*0 ]̳O&'3퓩93dd}2>oLOf'Sԓ9$dz2M=j) CF`F`F`F l?0)Z39s9&0-&2OTLd¡lF6clD)ۍ2DK3cLqG,\9t"I6BI"L#3kXt1KL#D=_$jeyXYb"-b"sa#6rыىى$. IhAL+wSnJtUh=ֵxre֎Ą3Ӧ31LL8N   &'&^Nx٬MbU@}O{B P21s21LBSͿXY7i, reJ :d}~n `k`9`@u 剰<'DXay"]04^ xnN_r/$[OP@*`'L$&4 I0Mi@.LNI8J4]%R(N8S(N8Д,4e)BMQhɩRJ+e0J+e:ӐӐӐӐӐӐa'fޥP@L ~aF- @$ @SE\Gn2 0 na-m%f&IifRf&S13uL(  H@2/;qQ9XR@L`0mR@H 'P5wM]=3gfm2hf MoDg{g{g|՜5g9v~y睟w2>Q;3xN(@f~dYœqd8NN /uLVQgfԙufF'nm8Kă tfOotgO6^ BJQ)E Pgȕg,X\ZUZ5ONmTjR PC~zK~S|/XUύl4+=3{s%̿$@ 0!0`KSNWvZj{ '`  Ƽ0;-N `{ `{K @P)V`E /, 6E03X03X03X~W~D܇ pݯVm?~??ۿO?׆oeϿ??OyLt`iaSc;'ٸoC;hK$#'eiW=0UzLwz13Żn2QΕ26㗫t㤳9z:}a<\^'/([j`4} ؝i8px\gVdutV~kZMmN\:ISc55JMSøij byb`q ;=6N/aWc$!Qq4obFȑ.#]Juk}t3(zSnVt?:ԈrĚq$]u7Y$w3I8 `=qّtm[O̞}ᾂxApq/!X[.5}~_EpG# Jv)|_Kp?}9~_Op[G(K r_Tp#W(e?}]6K < <'dt_spCsPpo=QFD܃/A1,a>L96kHKao( "?bw &ؚx-\v@9pΖesⲵ'ܼ3pWͰ5cg;bwٶt!{l  '5>jиqeg[} "×X^xȞaNfI/]YSԷ).\笾 ho@1x@gxX@? AE`bOؓ"LefAsRGD<6$`ςH_M#6]^fقY?MN5Sv^&ϔO+)G5xy4H:x}) aD>M^ǹw3,viL9)Ӕ&הP"!|:y3%h6H4o<;ۧOldh֩_{>Sunb8^&:ŧU)q֯OKF_x*/v4q &?:k!:@ЋpؿŌۗH@'tSaz@=9L:Ld ~[Aggm|"wVDp0Au\݊օfnfY%Vn[֯u"(#h[馤ݺ B dGܢI̝ΣG9/'9>lۿv 9Ƀ5PHHv@֐@6hϯ5N*s "cҚ;h/$sƕ 8z@Z-M-H̃SNW`"CPFhyr lvT47\QhA={e W8~9fpσ)/a qB#= -K@k9zt(+Ωd~d0%v'@Z#hkK@sj6#ų(Z. A׃)PVB ] Qu V[\@ɨ/p  䙑$p@q  f{@Zhf{@E9:a'B\ P@Zhv{ x@9l[y]<Q.qL1z@%.\@#4t9S`]c-.Zi*0:. %g' @Wy+2 9Dk=\h(kZ@7!| } KK`=cTcT.P.%l}vށ  :=d{`. Sw`;`aw`;~ Tm"ŚfKk@2σ+6zP& v`sۅ PaBk= PЗFeO[fjx/3CzyFyw@ŷzﶨ%P-5 m XPJ@ZWHKh%ބفe/8S8Sc]80y.3+wY91%.( rO\@2sp/c_`ۄ%_j.L+!q?{:8jm dωq!i (k -zE{@Z !,p$r?"#pg9Lm br{1/\ Ќs<#Hm 8Vza׹msգ } \GT VKH@us9ir ]2%%p{R"zsNzNz~ ,-]y @2|l (7&QVt[\ -4Jm Tɵf. fż_@<@X@9Pii͛$@h-E"#q.y4L.@ (Ka$Ѕ5 s= (5a. av^U1滛Ux@QX̠U\\v1oy%ļb^btu}c HH_$:>=#$Da%0<BH+%猓 q2Nz@ZS= -#ָy^o67sy/~ R˲G ?d8) XqSkHm tȹ 5LVDE""c_e*.jZB̟%V%VD0%SyH):@qPFb\@2G'lxvH @<6߸]B< W@Z>P$\|%]B{2 I0Ok&ȕu.ԗF9 dQ3ot+%@ΛQkkHk5555NtЛאˠ5$2=>):MHR$HI9G>Y{ kk(k/@AoL`Cĩ *Jm W< uL~@~1{_8dSD@ZXGHkg jy7ż1'5>vX2HAH/RsT䠚 y @zIYr1"$|-#B;ZyfVQG ̡@s$\>%9de_;dM+ad.D (o@5-J%,a c_ɱ@݁˒c"J-@V A؁id;vo @܁yh;7{@ܫ d4^\_py+{@^f 1*gQg? w#q0yh;`u;G}]@Lyy] ɡ !7!@فKPw@&N|20Z"F⸴ H 5H|$uu⸴ CKƼ;YwEqtX YJv2a=@ro'G]&O$tYC]yƔr$c8ǝ*s.g #D!0-K"oB؁iv艳 u TG ,d)Qā9nvGULt aVqi*Ж .$@R3 Q@fȉljoܸ  95%`7<kkHk55P@{?Fƃʅ| d!DM׉։x$U'ޑ8_8Mz1D~,] #P &1g] Q&BmZ$VNNŧ؉t("HM'NI?C"v!A֐P+Sۉυ@a8H+!.P@iK p4 4z?9d1NV60NV-0N|R$q;q; d y e u(kkV1|NŅ9wDu  k P "Yq H6'|7EJ )$,Ԇs5 Y(N&9ə$x{0 \YTᜩpPT8(AENk@`k ڗH5Vk$w$wt<81 @ށi&N*%|.$gTä. 9!9!'ԗ Y,y Y5 0pbT/ hH.y & ©R)R0pTnxpT8'&@<iVk.D @ށV Ǻ@1)|ETfD &o_dq`78 YŤ|JS`_cgWx9*rUA8#N'X\@Yؗ@p{@Z/.5s-`;Pv@i.$znj`T`P dP` lkr$3rT\8.v<3ɽo T"ᬷ 5 95g 1r Y {w.gHNm +yo2r<[8q-v<3ɹ<3E. Kp9,|y@A>PAN/ epzY8,|HT^vyq^#sB {ia9M#Ϊ`\=ꗾ\had y  'O\ ANG>븀V4355 PVT@0P 2Ƀ U&0 a/D BԻ.D BA.D !B83 Pj $ JC,|G?fV l.q,ĵiluH g#P[a$0 D W\@ZC,|'H"vL*1 !zdgԗ0W!U< a'xWAB*D r9 =@ Hz@Z(T6Ba]@2̷XV!NUAKQBRQ*|XH$GQ2z@bҪHohK@sl*D .y$\y6_c"N/J q*|KH=K BQ!!VSt9(S`_C,.ic@kb5] |9HGY=@ )m ABЦ)|FP_9M$d:@Bd hK@G t{ziYE!DSpX)+ HEk2]S`[a)] -Ғ* =&$3!Q(D8 BP ltД 6@Z(( ZKТ HfS2BBd oeHH!@G!2VzX뢄 aP@FqcZ(|Npyf) ^QN] ϥ/S@ S@ HF \D!Q8 =!J`nPL  @3<5 '5L;qT(p]7/SNK3Ό]$1k.ak VkkKSn׿%{AVK*{sxg@d \BYamk/IIX8<5u55 )JO *| -⾔nttw{g]!d84A-ȥ4;q.A$=l`m-PHCDQA%D s +Ԃ\;KPQڷ a( < p 'Dz 'lp;ZWp# Ja܁*aLUy-\Há {ۇLU7I5ԍ-8SujAFÆ[SiNG}1ZYњBkS)*O-r7T "&C~SL!|ԁ;-<;(0Kzѽٷo-X': $)dd +ŌBE ځ 5Tz+[}%(qZ{ ]dwߦ5DƘ?_@ Xi?]WV *TXQ-%(qT V;k+y4蠾7 '=5+ SS Ɋу!^uՂ?b4jze!Xy.ci !/QE-ܟ!p\jG20iD-x ?ZL_᧦9s.BY (PB> ( ЈB# {̠bT[ALpG\$D 'LpwbZH:~F }+ 8 _&bB &4 keW/$Bf 1C;]S('!WrF'X1+tGB 9X1.> H( 4>B戹T!a39XqӱOAC 1)<cG!<jB \`e6 $p b P' &.}2Q*)M2ksC1o M 7"">|88>ˈey,~8xxp:Ù)Nǜ^uJqJqJ1<3Ot86>F !c[{%lrmk޲VA]d_X_WXM8|[L)=`^q1$҇nARցc_\J??5OK=%LSMc o`78ܩt/dZpf,};{.M:^:^:^wWhn{鶗n{TT趷 [ur\n{ rV=S%x\rv`ЁȮX<9C4K[8 hTw '_/7:<ނȞ:fA Ū_ށ:VoAdw,~WN (7JUi(G "+Y1꺷 Ԑ/}ҙ@1շ b8 ߂\*2g~;ʘ_ANԡ|/2ula_T/K^˰/oU`.kp7 endstream endobj 6444 0 obj [ 247 0 354 641 0 0 661 183 288 288 447 575 203 315 190 348 585 585 585 585 585 585 585 585 585 585 195 208 559 569 559 0 752 623 591 525 615 525 525 586 650 233 249 584 496 731 650 637 569 646 603 531 576 632 631 812 629 570 576 307 347 307 0 506 0 497 518 434 518 524 371 518 531 217 217 476 214 772 531 525 518 518 363 446 375 531 516 772 532 520 463 322 0 322 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 348] endobj 6445 0 obj <> stream x{ չjz_gai`fQ- "DbWb"J^A^\5$ϐ/zWr8=?3ʹ`2~~ޙשs?zx`n׉^>2av| GN;g_e 7彿a-e↑ms7l_vKַ=VD^Mܿ )>5I >f%׃ΏA_v몷nvoYY}@5+/Y6|B߱zwajͺMWD\|UW[2̾#Ch 88]|/ȻR0usS` G=cwBPp5eiP}3v ۠ щ ,\/ fZ3*1AQ[ބ>a }f)BX%D$d4 8>6mEAHıY| H<İ$3 痳YJ w?g h y/SA;B0 # e`O%ƙxAp8{9Fͅd+̷Pxi$Pt25`9)Ϡ~HJpȌraX!k\Eˊ{<28SJ%@[W!3r /I|g q{ʅu]Eny)"T$x+S@" RB/B,g aODY^*$XWH2Nʲ$c_xGDeP"%g _ZB%jr SK0~!k$/>F#]TOgBeW/Bg0K|~L˅KEǣx2{*_$J M |C'I?z&Q!'><"{9qxUʸ^㽒(4h hS=,T>8 B% gsx&Hx{Hk=u(T<.>U4‰Ȍr8S>TEGTdϫ|OQ(^zy^t74^/dlT}+`CZ+U(ϕegk(Y3#A$ :={xZ.USgV W]h(0-u)ϐʦ( =~Yc A# ~J1L)2)bҼgjg_Pvˢ(`%Q+ގ@]Y;5blUpcBFP?U^C''O'h4\&Ȥbt>H!Zј Z(Bƨ3zR \#i3tMkgkbztxd* UxUTPS8 ;P \*jtJAERњ2Az8>ɐԦ&6 r:_4l[N-6a=\.1q LjkooM-MmmSBB.QWo5f.MPR"Lmd VTeE\ Hd LF$onjdGֶV4ct:a|]md}tSe[ӚRLs#LG*x2$5IGF;3+֯Ÿ))f,e%ǎ 3'o6~j>0nsu%2 -mummٶ@> [cLВ %FƗsG'(p*9cOEPpa:z4 ^ŧja-;CH4O$SVju c[Z;:ǎ?aL޾ig̜u9sϝ7y ->^,_;t#{S?9 ibX%bg`*Ű C$< ǒV:ٔ6?`N1@E8 uШwp4ENߎ/.7K8t3~|Iy%(1̏cpg&&LK\ qC|ܙsܴS yCw7cEv|3X h®04M|qUP1Kٍ*n 1&*SJAx7>n=p3ae{lp%`jBDuzX 'Ux^E=yS F͡ܥ[y7̫`9:0 z)_s)#2RzN!6p 4MIW2jRԲm>J"!S u]DXKdl[GkkK`^ڤQw ֶA.`l[\OG^wlqp!Ԃ.@cwcwD. 3-z?s'3P6R9^x]V3ѦtϢ_\8 U0<ٱ׀բ8]'%[n,MD5XOpӽw"-(fSxSl{#qʛ:/w..h*/n}uw&-5{\ؼFB\+YT`K~CTJ~FqLg^:ej܉]7;Kb# 9 0Y{n˻mƖK'G(%R$fx +Ҋ /M9\1AW b?u5w00erf8qƴ7z-}%OfʥZ3{.a\÷y"IB95Ͳ|liٴzXBTrA}ֵˍt76R.N *1;"Ӊ"A RY`c4ˢ}>SZ!` J111ʮgW-ܓ>'eIKJ99k;%+agmd.\*`bGވH0?%Q]pH]Ol#7./4cy$ S5,C10$8`'YN}CM׮7E{nk=c#uq{!:5_ۇ; ]WhQӅrQ$:( <H LmOVSI1vlw(s dTunֶTFt}-^So{[-,BӅv_My㕿seƘ樄tdƻof[dB"#'cqvEݯߢR;p#JIjQjC H$ G$Ho(26R8<цOPs0V6:a%3p!bڹk:ZsA5;`]b>]kY9EX7ndz#ݘQ]rH 탷IS؁  ;P&gRr%v.I_ɿyT^@J-{hw?D˚W+(q6Gat__*=@w>b/OYXEb SҤR MB$ؾ;nw_?{y|/>|tvD͞QW<#)r=oIV$uQJpB`JC*<5Dcs9 2~t~CSDBVxB-O#%Ƚy=hmbHgTR21THpo/^;CC}PDY\6a͖D.K .AywOZ'^vҕk}{{y/}ߵ}}틮ֽ"-{*מ\ɯ{8zRf֯|eK{ R+KvtRR8J958CV2iT؊1]; -&\xxa6b%aLLF'hvE~+zF7)G7GI}πM#$7 >x'_M&f6KO$eBid:AGl(]$ﳟp ^+#Œf?tXf:Ӷ rmH][Kg5eG\̈́!3ϻ8w.~\P+xu2s<~>7Oz1Iz#v<-80^ʬZp- q޴~o'_o wJ}CLѼ0Ͼ5u)??^O{Yq&+s3RҚ"P=7_An.,wq>iҁW8Q?Ұ߽kCʶ-yNڰ 2"֘bc^[+JK1k$M5~gIAKH8cFi<$c]m3 [|{UCH3z}17"h _a23PS#,&Jhz%SsN 4[aSʽ1Ϲ2CZQ|Gk^r;t="wKf h@!~7!/o#׹yUP^V- Aktqz9.)9sڃ:-8} jC[s1Gtǯ{%h{$|ngpiD?5Yvz1kd˲ i''130m !k*೩~>W Pϒpuqk_IIRaqխD/h\0ެfeNjqbLQL u7=y&. *Pp/ +PXf &Lf̓5U&hl\q⎉1&/֞P&309`[Gz5 ьutL9) \KJ~L*F">K8-l fY/˦CqZJÂpji#xj pOz/@YU:NJfHL!{8rO{ˢnl!0@/0]IܻN\=λm^ܣ޸x:fƌ?~xgŏg(f?2꩐[=.NYh+ԡJJ#ݷGUkyg&LI=$$d!! N") hQZAjkjmz9^zxmb2sL&Ooٟ|g~~~k x&35P#ox4E8lBPi˨qM7>l|aoӕ/n* V}GbnԳs,y׮05@/finijd4AuZNed0jؒF )XP*;[vmĽٵM[%=kPF0tmlj2t⏸-%J=;rk 9Ow0Sz?.un)gObܓ57=G4ԿB9{/C5H;hwe)T[ \!XfπEV!hTɉV] Š*b|e|_][iDE4S&u5X};I߯]_8ⱛG_e_+yl[wogne3_,ֺj{W?UiJ4;2,ۚؾӠ>m!zБ,x`59]BmPm-6^&podבY=FM\ :(;{@/2H\F醤G%uۻٯ4;Qqz0&ق#R)xEg' NY;knfd6j-U )M֜tef2,:EZHt!mrzLy =ԗx bcG,k̙X23QC.AT/Th33u#c}mFfaTMdy|2d2쒖wjTIqλb.eǁz4jb?QZ=ZϸNI7Yka69ٟ5zѢdP>ҹ =֘)C/U%/aTQ4a潾p&:|]f}J+'jִ"\cxl-8&ٕ藅Q`ɦ#ï&C6ptճ+]~jb\.DT&hrq(=t 98k`5`LJYtWYA(PZKk~eAlM vl괙.sRx|dw)nk0eSى$;dl#zX@ 67vʆ"_3h2gy f4*z܌9#è)4hqg []X1,;5h1ں !`ѭ/,qOrWUq3۾Fx]tܞL-M[r8;oOs-Mo+]?{?sWЎsJ#աd䠽$2V#LNq!LZh\sF?b DiퟜN7Ỹbϒ7W_.bVZMNۯ.G>q;9<(X C ʵF 5HΠ߄ ;zS'W)Aw U~{*:uq^1.wzlj{ߺ5[ @< [͂ƖORu9L82h!p " gk幏:.#DN]wZt鱗"Go zlbvY*w~,wYHxLy]&'"t>K}N#zS&h<לe L#&| }w)AY%(.ӸO=-7z7goe-ޱ!ow&lp{Oa"ϩ?XŞEO(?tg~Zd1Ke԰*eH IωG#g{ ~YEHvZ!YwSu_q2Ԗ3#ase/2َm[i)'c#id)'+BK5G?˔1YZpT!k1")HV  s|b+&6553b^6`fFo Ă7o~efWn e]q`lQkf|_ǧenl{i4@skN<Ɲ2<t-i\8oa5=uZT0BFJLʳY ՛\fw_0+\쳊[R5]ת+<4ɏG縒 YҍN+X`*N8J̛IbC33s<-a^TZsA;Gq g^1Xyma* (,止 %m~'=Jߓ[h8֝+j%ڡK*@3n+ITTͻ9I;BG󍹧;څз6M1Y-ڹ*uvFAAgჳx(}mW_y *F93 ?g:GcC;&̨.&lrʴ V4C{oAXg_̉Vf&))<]z6a nCcIc,0cӤF`hÎFtg%n[,~_ޯ|ݛn c >f c}|=z־=6Ɲ̈Ef)3l MV]!~T/-Rv{q?ܾ!hN+?pc~wlgߞw3>輨}]7;6~_u5wQ^w Y*|jZJ(Ot:ЈsFy;qo/h\酥_}t/]Ǧ~xrgn UJsStg`HVMC'F]2"Ʉ vyCgQ/*6mM 8nji~X[m&ϜCqz+O呭zO9 ^sy.)P&c³ae>P`T+C)ZAVe7pa?T: ?f#w~n~DO o! DسC_O̭{K{ogEv=3z(Li `ܔgwr_S@P^iQ^02U􍮅~ֽ@HPZ67ۊVD %i"b3FoMŹ);hh -1}kU?3&ğzQ֦|z1h-e`RhgkF)fz8%3IIJvRt/ +yOR`D]|۩ecj3- ( &N60Sexl,uǮgnhZ1g!X{Yi&IeTBcQQF6i`w=B4kzݮrY9q7O7,h+[:+sl~"aNo&#!+ͨ'rUgT2>ſBv]a Ap.ds=nN'P_Pѩ8TJn|d&͊H2 zSx"zY`)e`Ԍi/8+%O* >Q*1tv3 ufG.LI|߱~8:..t)bm\M]緋f+k6Y#&ߨro̷!6eb?V/Ys~ҁǡraCyъ&u2_YK|dd9)״tVIH fo_o⋷&l3,6s)sKET?:6KC[5 ҷ*eHH/W>5vm_'T_'Y^ǪW ޻tG︣97}=zlc'}v阜fiܤ<&Z$V0D̵ SM)3=>LwAZ0&_a J1z]LG}fYopwLx.RPD]iŢU_۲>WuζzE]ּ"~ ڗ]]2;|4my:"qmw:C^&Ác2~ASĔ:jmha+;#*]%I+EKoJ\K!ZD7mM/\صr:LkNvM_g.Ц{:SM}wחHxqGC^ЬMO@/ZH ]J 2ȱ ,_X(Sc]kk .2C2BǢ HjS /ER^kr3NZciIEf Xμv`w9zqb圊(o]\a Y j4ٰR*MsSU0m]ːe Ak$]L3;I݌ǻkj0 J2++qܦ+|9YgHZub?K3:sgN{QoV=3ZܧtSu"c;0Le!tN"Snfj3 2A'å6 tuavLC UcOK:«*P,k-0x`>v-%}ӵ#eUY.>.UGw%Zz<h>=cf,.yꋍv<._]0jv t;2&$;^ï(S;S 5Fm5}dF 7c_V7=g,,vgzO||!e{-c=i}Ƕ6a}}Y۹y&mM#iVrg}K?J7̻W|.y{e eܕI|."̋a`,1ŏZ k1l" D-afbL\=0 ot+ GaLu` KjӀÈ-[1܎؉؍0>0`Ob9y@ɍ|PpAU2 DZ~&C7VC ~CWk ejPD̍X=~1_%\ D C`8,~ 1'!Mb 0b i '?7~$`) %/C@ePrhX^E>X @롮x7(-0/JxއJ3Ry,\( ⟢ė!ˀ4J(EDr?ʁ4Xr\%W`Xr\%WO\XX:`MJ  4LQ x \ rXO כPcp7`|/dڵPD̅zI^=Ğ B76w{[aI$k۱ wbӀ]!hq6dP9)Hs5̃Vhc5P`b4Tͧ 9@- a5߁N ^jixHQ5I R:Η7R:kkˀ5@Fhx_ ))..F>/F>/4ۡP;g{Z06#BBOi )R%M͈` S 1m_M> ؍X \: q#W-Z'γet@2—[1܎iaz^i2!B 1~9ğф, cm3 }ƧaE=O7@/q|-8wUbL;黠[X ("-m5`Ըy 0 <\=J8G0Wj\Y1k=mlǧ؊v|O%i6BL SBK@Zuf c삒?쎿 J2?$8v#Ǻq톼;COP[! `@9!W<}lsЛ  PvNZ(Ҷb؊^{m#ҹJZF#7E_#f<.9v|Jѓ'0ķH0 -!/a*9##9|*4 dK-rXE~F䰚,EktPH9';a~W(d8ehjw 2/+𖕔TxlxWMzMMDFcގd~Ф7❚ DG"ۼc2D nw$ND MNE'ҡQotb*['&i%ū:[Eɪ-SDWtbxKKJ }AM -tA' /G>| +/%pU@Rog)CN/#ibxgďI(Ӓ΋MaH9d/ʻRM-= 8Ws15)vg܂MAhBn)%C[,o%pO'[2 [ MZEA!D҅5Lx+FJ%$_X&W!ךH _^&b:5õ c;!C;ɠ̃D4#͉A0ܡ?7t|в#Z.(e:Yo?H4s4I5'kQX`)g(rm|: 99ܙNv 4Ҿ}#_gcr;.RN+? >h۔܊>FVnNCsk4_Q.jn"@Ѱ3GSSk!4NH\?Fq:ʦpGq!ȋc"NP^3dOimbl/LH~|QFL+eƓOh$>Òef $JwNR9 (i#J`Rc',m1pD~^Sesy^5l(ЎR>&.镹ipn5H4N>[FI>*Q(ޖ8&` ^\+ӈ 7c\%~X?R-#)SiwUGHH&KiH݉yJX5#h|Dν%hHӲnyxS9r ?..wj $S.iAq2M+eo{^*u1*Tq4\'?efP{3t4LcNLsB7{R%y?}Ǽ3$Gΰ< hIӘ[D+:/gɪci-A)B( q%sL&$McҟM1Ig/k@c .Bz'SCoWJYQKFpX"}1drnE-e-G6&{|ǭ$9CHJN&퉄u7χz9G"2Wsf,EsEPj:<"[+ޤ|52~9suR]Bֿ߫"t|=9@@x\ ɶly~L.BO-' 3rl_?z!c2m-ei]J)t|ӟF"Sd bH?iEl!]&ш['(F1Z&w)QmqYݵT]#j??^Yc} S"nO柖SI% eXVh~6kojoZ#aC%$ [Ku%%WZ؞R[ި-(uzEƣ3VYt}CRZs0s*Z)q*ExE'6O4Csshj$a()/-+(ޖWVWVtQb7vE':.He'`UގD]щC3r%d32٥"Ev-1k $3DTBݛ%u/#k5T\T\=3{{^sγsysyxQXҡOE@`t Ckm+ C&ۼ!TxJUδ bIu v %dXzY.TKzT=4ers~Y{m{LˑMn]v ˤ\@R.mqi2W?l8r3Q.޻RHabՆٱ/y盬˹3Q:eecFK65@4eʚqRZ[ёТ !^Ƭ/HԠ8J?1mNnP rƉR$"%X#;֎8?P`ƪx@Њ.'>ZsQ+JL4bB1=?!k[Θp16]T,=*ygiō[O?Q3ͼM+4t m9[B.NW4 1#6xL2S= ce.$6Rޗ 1_d @?ZŒ-Q P0 E|{fR(D~bln!j@,v? C%ҫO@nV5`.X<)dgP"Emm;4ЯJ>"g[n6lx魤Ƥ߱teX+~joXLz? rNGf6Z#DҬorȠxڏNT;#줘EЪWsf"ZmNhILռZz56!|uz{KwGQ9lt~pejor W$S5ًyÄ^ `Ysɸ%Ѝz"a@PP8mGeK $?_Qf!T_ُƁ6`Qg?؃YFaQLd*a~BZw%}Q).NG9 J=~_1`8J "Ԗ+]UGY$ ɛr^(gB碒BE'*Ⱥ`ŷG(-þ2@c%pKGtn<| -붣c~tw&]Lkfvkw ¶_y%1ogEfi[w6F:N< p P+Ys_ 'ȾW?2Wg>:+wivbE​1qK1w0ǩfW+bCo{g˫AY\Ǯ uu4PY8plR t~N΃Ǘ Š Ǜ:vt_xJa';5U_FϬ!<j.p^&A;'Ů.l 2aPt "y{UIDy.m<:4> stream xn0 ? endstream endobj 6447 0 obj <> stream x{yオvUWUWU:==O3& H Qq[#%N݆ЫbҌg}7(IlYB/Q+͞յv#wچ_wBP_|͚%뿈cECp5og_J@OvMɽ&B.ٰHv[Xq=?DtknsSB6B}OJ.r E C˧_2(v{4|2rkDRĀ$o9P/3 5uO;MwyŝhJ1/=5FglA'[)1{_`s}1 @;{rgL0*h++v4ҹO }`Rϧͤ>Fu'| 4\G;jCFҿLXr-ڡ_ӎڙryP3P=59FD^EIWzI~aNbPh1M71ư+480bI ppfW)>If.FE&9I 4J4 ,K+t8vGHu2ܢ.An \4Ӓ CM6Xt1tM8z2jІWt2pހWb v^~AP®yg >^"j\Q5E$MyI Æ6kQ)yᕢ!@ٟ*֨LZuiy^:#_?M~O11H9JY@D*LdAτYMێ@S^U˥TYS /\ PE`Tb,4RDEK,L0 )r<* s"Rnhh ;WQ X].!BQO?p,V SV n;  jІJ>o D9fѐ---yUK,zo#((GxL'QM$P4+C!#TjІb-b<*b>2j(X OlZ*ƅ[Xtd-* (JfBjU]F.i_Y*0mpdnjill \ĵ.Tgc,mj;.ڶʔkuafwUal*H͸T "dt)5z+4x b2С]zxMf|RUYOZ$,=~-Mu;Q2O廐?JiM5T<LlG(ݤpbîd5X;VuQ޾Lo} ?;.1)B<صUj*)JB~|UUr-)m <sD: `Z[wKK35ΤSNŢ}aQyaYFI|7ΙRIy) =㌬B3Μ133УMf6_f3hZq7vAP֥ .hKw3T2I g6|[`p9V̈Ĉ|;r9>aK嶺şR}ˎ(0{F3rj#<L^c%{c=#r%=XNF.. {4D'D0Rq"Z bH'\]QJO-+Ȗ=a?P( BsB*5&Ёs"mu멣>қo9򺹝{vx-Yo)+Z97sǦ ;* t>ꕯMkΚ\]O˜Oj]eվFqMSy |҇oSau#3}-~g9zyգ7{N?pJg^‘G䷲wټ&~N)#9r)dc R''hT>%kPc:t.J Dz\5a8<|șU$c**(; ŵ<iMde=r3>wO[~sc +qjע>n8:_>V0bT-GmLQuS$~Ge@l,DS\]Yf3[dbb$fwGgE3Px;2~9fDJgǟL,ã՜$QgBI5dSwFq`@r{$`]n+s^iTWLmbZ3Fq(]~_B]q bsD8DXϒbG-oxPF({ U`s|ƁS7n9u_ߺWl\xǼۈPׇLy'ɿ?ۆ(69+h+X~n Qգvء PNywo/Mյ}śfT*=&>1_Z~we# J f58sxĉ:{0GpͼIew6L|*nKpPE${\܎ƥzuJEsapzJ9^ Υ,\8։5A`ҹ%ͤ6xobDIܲZ{J[9M~DQ4+M8,C oU=]oLro+֌~ g2̜6}F9 W 2JR ۪(Dq'+9GSϱ~)TZ.6iDAgpclS[;buI!zuE4ػ:VSf^yLirS둈"$+eyD!\4y!H doғʅ|5.BRh1 K%gy{;pKK=-޴|饼7 Ny5j3Y۬Q-[ML#A-4ĴP'wNPZ`6m(6ۺ'wV}&0Wl˶*{;PźkQ?/Բ^vCPwPÏi+=/= 6MK5W# E8 dȔۓwmd´OZ.16OY51~u) 椯O^rp;pC8ti7I=أĻgb7ќ 2^҅CR}"I;9#h']^i$QZl |{3FT5KQ4c%^"ڤҥF^'5j 0'tT)C[{vͲ'I􏃇npwU.w$s' X!gB۸Wsk!w\9=2ooԝGcOuKrg 7;g jzQo9 HŞd6C~֔! 48P-+Hk09rּUs\&P}Ҵv:kҎuXBc$&|QrrW"R^>;{#_-ݭRg|! sډRX@C`.ӱs4_}M ]GД@)ugF~~8dec^?ǔv! l~P6~18R}Fo]KػNagëg9Jfɮ߄ىgtbhI)q%q'y' *#|2dAe^Ͷ ^Q7׻5lvng?f/;˖w8[9̝٘ @]"J  xUZ% i* Ÿ}mOn8j@;VUz[5{]/m9ĮN֗vѕ<Yg ]W>\vBeɪ=q-sF%fx)3KsU;G_mFɴ8gO &+BC}w( CmP])Jn€K5|ZNP n*3Uk_X5ɴ*Y}9+ol-wYٲwʭ %Vg Mm^Q{,y8qFymv9$W!UbPMBs\"JJVq xޫlFX)[U>S6Ϭ ; >,? R,9 #wgsZCn}t/լߎw ?L=Bw}7YzYKRwwW|+`+Aذ*Ey@@zJB#yzݺ)^STijᆠKZ4yw=@U҄%%B*M+djIFYٗ:,礳N6pgϽFu]eq15K['3$ yQbLif1c]tvE+vv]+_ZqSG ,r ##G( riiy19O./Ж!t6&u?5ɢ",v% R0H0 WJZzR*hqoֽZ֭V Z}woL&p7^BiFH{-ݖzZWJcE+H BnO/$" mf_80@@I;;о} 6Oy )9j^nu& ʭDrkWi _p]$jBoS/ນN+00B+?qlz>qbjb̯(Yxmi˔.eq2|5Ue k {oPqbLZ2{$d.Miq͜Ⱥ#e;-Dc,N[̳\eyy[y#JZhuκ+z,"w)PJ u/6 sm,~d.Av&7Sa%6nmװ_ ? 0\_ )yQxT^8 cF DV$\OØ1Gz~-`~`>7m}OSAOOu"<#W 4<Z_(_?t_ {O+COO|3zFF3%C p; A` '`@FVAbau\_ZS  r6Bk^na0t  ?!fSgΆLө: 7%2 9&f$2e,Ι:kϘ:S.3u'2uS(K_nnNPֳ%m:Wԭ>RV1Q^LKR;· *DJ%**9RWRB R**]xg$P %jiR.T%+ e)@ITtU$RF+WPZ)|թb $g$RDV^&/UHYrP7CP𧅿0 R8镂 %jл%*B ZbQ#)"PG(QhIv|]IhoGpDa~Z<zV§(ŋ$%>Ho%`K@=&g,ҴPS3!dx,cԷPn'V!$$O5dKaPi5p0_|~#JCb,7J2f22FP4ʰFz>T}}yu ZP}M.v28+;t27hf{M=&ǴRͬ%Vո 0΂A`ZG ȱ]eh_{|bTFƋ3bl2V1d,_ɰ:Uv)uYlTsK1z:yyV.ȯl/&3 o\oskhtGPtMdT>6B/oao4EN3f1ߖ% BK _ʈ$R)@.GcUcum ՈM3,|d@N'2h 8' 5Je>0Um,!1O$$|'zڂ]4b= 16\FhF'Dq"<`à2hȇbDPPmwJ0>vW|l?w#΂"B ȶ1Bl|w@Ľ 4dg>$xRߗqm칾՗~ktJ7zgGv+g ”eg݋wY%`ND7m'2x^2q6i쯾ߴ~u35-op5[gˡNV_̀4gǃ` :V+?c׼`Y_2z.G:r~MA Emr.Mޒg&Nw/ѽ1+eqNFej.SSg,48&m}#.w^ۚ;rIh!wж+VR7O#X|spfުܔo=9BVxc,wk{7$մ!Qʏ}n-ew& 3SMJ2ӮG+.f& 7D_KW ?IUy΁~租[-oַMkNr'7rvzʙ%y=/.I^dlX~/1eQˤxXb4 ,׏FRy?L>|{Ż%>~oV-'E#/c=j߽=;cǝZկΩ*4sϪsƟ &#,~lH@b]?.DσZO>@cgNE/_k:qsj)] L .V$}'=)sP#ߢ{ (|NNqR RuE VTJXLVh'tB:A$AԀX;ZR)rmJ].@G:eՕ}N#Z ťk`̇ XvFCTrcP_Ϯ{G>c ";e_~wHϸHDnM|2J~agKz\|hWdخz{yTDčγ?zޯO@}&iԃ;qV|byM)^ϰj gy3{Q\vYë8m>o%3Vz]P kklI0Di~TӮ-+ ![#Nb۱eG-篮9-S&{lɹ}^k ԯabѱW'>w}߸=:ڢ;K[sfHw-bRaƜT_cnܾۙmϮ1R0@~$a'Ia-Zʰ#bFq53 YqGb CdWP,~2p@5Vc2dtjBokq AtPJoW՟JV*DKHr*KZ(6DRu9*Q2%ڕsf3%~~ūywp֞{U;g>sfjQ{^ 6H'H?9wn0y>xSǏ9QSMSic7JF|[/S}?,~ZT6sœC_Ȕ?4ɷ_P]@mdYti6±l3OqEҵ_Mx/H]L5 gĄ7)6es}NW{Dż tY{gv9bA5wZS> S;u片1 v+ڙ<#--V2{[~N+U>7GѲ'EqŲÍY8d{ڕoOT=`Qmk u܊?m3_9^=zDjܕxk/t{($֊y5#uD\GMNMz:9e47CI%Ŵ8 ӹ=4\:ymOO1 ԑ'fٺ4rm_䂣__K6h,[}ߤnkm˖ポU'6܅Jǐ}!>پfy_s}>SE5A~rb:(Ӥ yaYfmaя|_FJ{S/- /6uKw,;tohl%6nJ9x8ừ.Zss3}qs/(/L~I g7^jfu玲$!J endstream endobj 6448 0 obj [ 3[ 247 194] 11[ 288 288 447] 15[ 203] 17[ 190 348] 21[ 585] 30[ 208 559] 33[ 559] 35[ 752 623] 38[ 525 615] 41[ 525 586] 44[ 233] 47[ 496 731 650 637 569] 54[ 531 576 632 631 812] 60[ 570] 68[ 497 518 434 518 524 371 518 531 217 217 476 214 772 531 525 518 518 363 446 375 531 516 772 532 520] 178[ 440] 180[ 328 328 177 177] ] endobj 6449 0 obj [ 200 0 0 0 0 0 0 0 300 300 0 0 264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 635 593 589 671 551 0 0 0 246 0 0 0 0 696 730 0 0 0 552 0 0 0 0 0 0 0 0 0 0 0 488 0 490 536 438 536 498 318 531 532 232 0 487 232 829 527 533 531 523 335 404 347 518 462 712 0 480] endobj 6450 0 obj <> stream x{ xSǹ9G]JdٖmyǶ^eea,el8^b0a)$!MF&m6Is4&MoSzח|9GCҴoX?ۿ??FŠJmV  TVU{_Ehӳ_j/c\ፍʹ!dxgߕ޼8Bx 6t_ BQc][v }zVmDh@HfZչ% {kV֫`"TPW0W@nɫ7o DR^׳i{awtu>>^EH2skoع"R ݱ m|vM=}oI BF!"ԡu(Azm׎I QHH0N?/;$'B A.B=05hF#NOr,C)D4E1DԿsZ?;wjE5FA"t_Ph ȈXEs m| zb.OIAO~Lw31k>Oo'CԢIz'wP%2I3tK<)~g ᩄvYhet.q 5/Dʏ!JRy[ r.7DLMMƠ5x.nu߇~ h{ї!]xU8>sDP=m"Tvkm}h#O ~YB:xrGţQH"͡5O@ڑ()(@@Q|nO/^ǧ%O󿛨^i/o|>O7%<gDQ`Ny#?CO< C) PJGU-F~ԁ֠64I:b=xgo[D"!g>+xbIo+F_EID)QA|?OGHvԩM>; #a[8|{e Os"OJkڍ{ڋq`AtF_@GQt ݇D'f^ۺiL􏬻\MwNJZKMŋzk*+pҒEy̌T=M Z:J!I%bCSWAk 1 us@շ Y|7=9{[ON5Tnb7*Y^ @@%j ] |q(l0Ze^]i ᠵ*TexU;W=tt^JTO!iY6D۫:C@UeP?WH\sY~o;A+Ne7ѝ0h i42}3Jg+BN&o:1+횏)o gp >C+85DI7f[ͤet k# F~[VC+}g[C#k5;{JoK! \g֪Y."6!2BX Ȱ"]Q!WU%Z5$ss=\k3nZ  j<A?{8[kV"%VJ{+򣀶zv&KRk[`[^ _%-/pDz-@WxIMVxl6!}JqDt\IX/&&Yz* xˤ>O"0qzgh;\Q0 "R4[C`{Vtk yz߲/툖,&hBT(`3nV|ߨzokmKz8L}bs.e56jS3+sx_Upu1g8Pv%`xϳx< dݻ$pTE|2"P@ TBfj(50ꚢfF`# $d^ [[e&ux, ra (<ʐ))rG \Z10 F )Ⱐ4:53$`{#J e _d~5 &4I@2VbjԆd0,2]A]  ?~*P,X&l1]S Zul1ac$n qPZ&Iy M]A+pA]~sHC?H#"dvE<$˄ GʊLEvIk<_t5!`4\7/i|S f $P,0^pvEdTB(Wis6ۜΒ(&{-wfKoFqiԧ% -{ef\g#{wo?j]IޕpA<5 ujT~crGhww0ˈ2cj=趨c۩퇶Smp?"ҷ۲<޲O -Pnv:o JW,sזyt%Jk2J9,V5+f[܌ݨ٥FTT̤0DTa+jeni30a\()#:M؉'78f' A^%ȮhD95y 1EfޔW! wIKD\$(Q3RT)Pݦ^3X6z)!J)"RUpJR%RF)dx<"+VpEs![;p\<54vel˗8_+;Սݘm4K$G KPoOKM9#hx? $y2 b ʄ6K;"QfVʂ\^u&TexTW%E++"W"\]i#Xڴ6)Hp֨uͤ.+q/XHo1(ޓoܾ?gUWyݕUu^&եU$6QʲWVu64bZ,k7.^bzVpѰ+Jvq6GE^B"&֙ȏiYofP]e3=+3y,sp2)whLJ&Tdt8;^:شom?t.~zY335s7k=$J+?liӧ5(!HW xNJYWNye1 D8>m,<Ǚ_<=PqjymTӛDɱc%Sg|tM-G9zյߪ9W `@ Eܫax {9(dgmF@FxpOwQ _Э[QgLa:Suիߦ~/f" &Q ܟh#QKbdpt 6)"F(l``uࣃ_ gun"]ג,Y-r j4dIaXA8JJp Y} Q!CM(&r y2.sWmgv,fMy1Tu疚 G beN[[ӷh6SJLY8NQ-]bmȜ?KZ˝ƄTP: |@83+Y_E%EbCVS!Z|7^%ZA\jJ@n07ϿVe5dVI>򀯴}A {[Rۗ/wXXV3R͑23=jҽ뎒N$#V-~mK间w$͹`̪ ڂM |j 'GR*HlvZ۰#/ƴCnPˊN 8m#s]Ʊ6_x%nZIr RJnr9~fŭPND#IaS"<ѓ5\?-m2OX]ւE=9z_ubSCXkr9LyEp8('7\]7%fHZ%~ENa%1) '$M;b4$6 -'&6YF(S,-j/?[t/: s/tK,"'%2J323+jQԱbU^ne"M@Y!h3i&w[o`X A|tpVTf"~`QY[yxw^cűyI\e=ֶ֒KMwpqBq.3%`>|uϮϳvQS#E:gͺ#=/z'hͻh/RL(Z%׶#{s7]x>-ZdKWӱ'\[Q9nTEE-#8OtP>,>`fv‚)=gip'O>K_^}|Jd O*CŒ[QƘŬ7OwY…ɓ}1\?=Ţǯ 0+H){O=~5)3AgԸ\0ceU< v(Ռ2JcBPtdmֈ}|Mnt~d&ݿ7D:~Y{em򩮲Xyn[h퉯D"4! PcF!G_QPw9;(RP Jd6[Et'JNz,ش$d@ CLnܱ`8^@El/Gsif= ذÊxpZ4v# (1e&p"4%@A""4!d P%@ VnQD9ߚEW8zX&a"ήR"Z-+0%J :R(RB3H .K\1vŗ 6GVsx#g \UxY+g}Ho?qׅ wox3ON&nܨKG3t1ve)]<Log_!Dj*Aoܴ{-8 [-bxQp{{?%Rwy s78Jm,*^eՆ$2( rTԥbx^a*%mZJ%a@rݰw1B&5h8nu|XD(1\XP&׎oYt쟶*rY}#9ZD0],WIk 5{_QkI U(X4CUP" Pc/;8jS-ԝkVqwi)c)?Ϥb-c$_QXF "X)C.GRF*%C yKUJeM}|1#sW2d "D%!f>Iݳ3j'Ǧ}AbĴQlDlO I꘻Ѱzfuh٦jruDpf۳?_Η&23A)5$cw"suUr7Cyn}e֖&]_/sT9.`cdqZ,omUnYLg7›=/5T۵>O]o!]\, Q3#4hI='Mdj#*@~eN/>yØmǟ _<}!8Dj̓cǨ`jw ؄^}z=xCC%,bl6T^ݑO*JϨvROrJugQ ;5Y)wyҲ n{4.Ltܼ$2Ѩۢ3NirUTBzbV7Ѵ]vY^q/fVef,_޼˾q!20sԀUJ-΢:W%]I SMQcDMEUŘZݙyh+7o)CӲxhۛ,2q ^p5g}N[/-_f) E*._=ʼbJ{k'tH2'{u GAD$o1TT450D@f(0 u6ߜTtfڔ$5I%9|M/ԴM<=_/M {o|O;O]͚^] c{kZ_E[RvUr%eL}3guO=חzdމ)=P.y>o`nvL++68V_UkWS ysٽd;Lɚ _3'cqlXX/^Sh'JʕJeDpd,3z# ӴV{eormʌiof+n"eiS_ޘ^k$%'[n^j,PMʾEzzYZ漼CC:g펊Y&D#"⭕:?suK3"4-IʯR"+МeS$Wa5UWr7pf*8rYe)O+g9W Zm+g+ʢիj8Kb lf~c9E5;/Uv-6%Ih.9;=rG w6.,.kMSCDWJ+vщݱGͶw%sus6z e+.i~d5k Gf/aZYV,벤HD0/,Hgfaw盺א$2 QݱJ-0?_aG,o>=򄩿d~qɑY.}LYfLqUB9,_#dS"ZcLWV+ZrY&1%R%,_dDNdR'!Ns[ ߾69cg2"ϭ^[|D|B y++^-O߸n$WʅtYK2LݘRrJjOL6nhhƉ0.qYf0WR'iK) r̊IHD}sȂJYj\4(Mk+91']w˒Ad}yu]nҬsKJuCN]Ko_S>mZ5FnXk}>g&#z"=^f=Sz<=#4_O|8 7_vBJwROlOBd2G; dT6Q|WgÝ 9ls^U^;q_pzzF9٢1457"gOLyň<4?|GI5O e)9it|؍֜%Ui[Yy-i1+$.b4BkZn77ƿ#xxwLqj/ϱ.~I㭉.t)J|ņ):ߢZu~g{CԗZVi˲VJ>wsՒ)rEYsm51lݰ r:2qKlMƕMReڹ04ȨF>VLil?x]թSʪg_U؋Ms>D%BWu쨈x7eTuξP#_Y6͖IeW̬-c)ɍɮa%EΫDnVhjqRf y,wXV nը*.xgA?h'+U3b2qdu҅ev[LO[Z0/]zU{O*kNˆ# z~$7"KtݲyU1*K#UX 9[r(2yKUm) 0^r+<<&sY_q~ +U,FP#"X3LY3b,-rBK\Ltu;v W٦ X>g^2%?~!ː7./+Z\dքت%1*T tBϲLߒ.'WO$TGZ.SzȸE46G:e`xH!jUJRi aJLږx9bQKqA{‚rBۄ\=¢ӐBXl,KUlg|Slk5(sY92b"CcTR\-K7~%'{ߋXpYq54\< ic|E?X!(B{y]^Qfݚ99 Ȩ-R"{Ӫv=?{wU'6#Ooƍ]ϊ 52GZb}GJ [ mW"^ۡ uy7MoO?*;#SMԅ|ɸ.ԯ4%zrV,={񊴛2N6}aMl~}ROTߥ_SP.6FƍO%G&eYzM1[{Qk3^?rJީW"MwIWؒ–b_ۢY5TX̯pf Oh̪gVYUر|GIU嶕3x79oәwc6rcCRSk6oiJQFK2ezdQEPH}>ݡA"X>!ԑ!cdŖd%t:(cRj%cb]^QQw\oH}ONNje7uP~D;vv|(4D}24HƊE:GTԽݡa{D}\lW|H'8oZpu6 ĉoZ[?I_,,RFy\)Th-GJV(ю2̋vrhXiF'7C׍voK#4ڲdJ5ڊ}S6m'Bk-GJE(iR3F;ZJyhXivLюTxymLN*b?£9гu=m]zfN=uG7wU'ziǵ^Vnn`vsRwRr\'U1[۫}jFl:ĖZ1NSt7!W;:<kֈ(TjP7m_+kusw3]'Z;6U8Nqs7fu[ǁt55=rE`gUHn74ҫagvKHd3;gЄct6죚5*=;K=Ka%:!nҶ5g[خ[a킹Q kqj(^lri^`l9 XFK}9~ eu4yYh%$)>{?d5ߚ 7 .]uA-:m5]ccQS#ߋԋyrGJ7 B]|е[*<6{]Ā&#.hZ! kjt Nj=bnuz=n4y7^MO#]NoXi\x|]uW?F=& ng/k8 h3碊!b[Н[ELu=\SAXE=b6qEh c74ӣnUҹs˭j;mue[G{[GZd]bШ:{{]v[Mkjmֆ=vkMSUliֶZni[Z75ڭ-vcZv{uoh)ַmjmvrvG:U;uiGP!Tϩ5kZ5ձMc֖#6XUN\gWkZjW 54ڐUv-vHSbgԴ:覉5|٭LA ph[;Љ@J_`Օ@c<%EsKƔmgX&P M]jGM}WMNkg[T\aukbh'mlU;r eTӺQUݻhWxڶ]LVokU㺎,j7uZwtiJ@ &u8]M&Ҏ.!kk_;:kUMMIc\º&G{ 'LDZza"km-]ּ|}ZÝ/+^ qg5Z(k,}&Z׶fIFՏڠSmT&<>&I!Q\gE5}Lt;k_dy Iĕd~:&ɲOd!o~RA)O,iO}( U1)?3?Ar+%Y,hZY~C9*J+>KqѾT"ɦRSd23ʜ̒4zB]}rdhR:;ҖUZyVІ"Y-;7QR6|fUJߴzcѴ̌"X).zQoVQ_5VQ/Cjcj%Ōd##u9z1tXEAnyii\= )VcQk룇1GOh$MOښ?)eR'<^KKT]p6EE/+1q$\Z™¥??gL~R/ӟNKVW7ߥn5ూ?6Κ]9{vz^Z)2yQr s ¹ٮXR_+A,l6JVs[TTttb{JN`}T}Q}e'럯?[׆E 9Ez'ҰVtY+Hkz~4Ҝ\`k[osE懛n~7|%uIP[a';ڃw:Ý[.|=Y--{yU'{s߻f]]sVwm߿omqߖ;򶵷W83lͣ&gC}<(:uy:꡼Cm:>tnwpWz{ >uY}u䧇 u7]sѣ=}wzYrJܷp~B{fCA"E{ HCrKSCRFhgMV0 `1gB0`!X5` n`nX4Fdm`']vtPA's}9mvCG 2B^9+L{'} w8C*W(CJvȧ(s^R-\4T[r+`>*R*[K({/tNO0p7xs|m_(8۾ξoPPyg]?P=hJyLC6S8!}ҞYhϤ@ 榀,qaa,>Ň0X|ca=0X{kca=0ucY7uc,6sa1sa1xΦ=eӞpm  zkX=jaװkX5VucU7VucU|>O ="qd]_Z$=l K Bw'P|2=lr} ?|}1yh $ G8B2^VJr٘fG{=Ԟ>C0B!SPà̘2cʌ)\^l.cs\26el.^tnNz3C>C>%ASR%Ti4X7c0vAbUX  l ¬U{&0=E>%hSAsqNC|p./C/=KC/=KC 祛I\ 0t0d0Y 䃂K VIs䫥jx k獐|T -jq ~xm=pWN/4__>u Moo0O__ x ~΂o=7>X? ā          \{'h{9?8|?>b8&Cnb8&θ1b%@l$-CE|i&+`y#C.1 ~լX 5syydpJ#DY 4Nα 8.η8`I7aIͫh^E*yyWѼU4i~>b,`c XX,V +!p$ʰc!,]ӰJ왆4j.6 a!jCX͉Նb+4ix$>%04` rL fhlfQssRِʆ45_@ؐƆ46! ilHcCؐiF9 l/qD/KqD/QKeD/QKeD/QKeD/QKeD/QKeD/QKeD/QKeD/QKU4UbJ W*1\%pUbJ !A ƢX4 '[sFy8k[8QAGDw8g}3;gD!4")ڛFq#sZL A<;(F9u8\tĸX52E8醓n8醓n8醓n8醓n8醓f`8 `8 XDxX baX baX Qb^/w=8p{}~ xd|q_#KQ? x |cNU_O?6x| 9zrmmmOS2%WW,x ow) dp ǜp ǜp ǜp ǜN 'kZdpV8Y+d+Ç|C>|ȇ!>Ç|C>|ȇ!>4Ǹ>XƇn?g3LJ|?>LJs9?~uu?\u'\u?\| ^ ^^^^^"zx^;^^^^^^u^u^`k~KnUꆧZ^pT[k+nmծD2shFz`L0q&8`L0qiD~9~1~-C[[[[[[[[[e/KWY5 x,d0bF  ! LYaC6 /l/l/l/l/l7lpÆllll      0 a0l ð a ,2!U € 8ayB^#CAJ$+AJ$+Av3HL SĔ 1%HL SĔ 1%HL JڕQ4܇D.p{4uàb-w@? rBWoZ^F¶_UרzեϢ= Xt0d0Y ;|QϘFl 6"H/ld6n|F4u]d6n2Gf#٨d6*Jf٨d6*Jf٨d6*Jfg6̆3~fl ?g6̆3~fl ?g6fܵY-ϖgMDe7QMTv w6Ά;~gl w6&*.| .7YMV&qոjd5n7Yv#j|d5>YGV#n#7_!v3݌o7v3݌o7v3o ߾^oƷW_d0~|ۏom?Njx^4 ECx^4ĕwX {gUU梀 rQа jeFd_TԶXLﱤ|椝r,|w$/6^Xn08w={ 2Zg>ٷ<뷞uۓ%HS㮖w9 ]S5̣vU˸k7b3@jZ 7ofxk֎Xfe2[W3fxCb#}%=lO-%RpX; xMxMx}4ik«k«k«k«kīkīkīkToke>evtתh!ZaV"!BaV"!0DC0DCeV M|3| mv??yd.~ ~|kpv'%BX"%BXh%ZaVXh%ZaVXh%ZaayX"Ka<,!,!,!,!,!,,V%4p0KaX"Kܛkx'ca<10Fy#>O10Fy#ca<10FSR{X./,/W#dx[5mZqv}\>5NV/oP,zoj04ituO5Ażp) ,]+˼W,td(AYKNfrzV6q=R}drph??oޕH\X^W~l[{/ՊvLc)c);*%Y҉jOFкj{4]mdd{;f6Y3.L1r(- VTͼ%u\:$RUve x, s%ǕWr\1VRJAk2r' 3b[1*ل<+?쭮?oL_'v4rMp%n7~gW9R=r^A?Q} <$-Wt'ʾR3u "e.pv%w.hwQ+o_jk{xw7fXmՆXmՆeLO,=6Z6Z/ iBZ/ iBZ/ iBZRBjBHM !5!&ԄRBjBHM !5!&ԄRNz[!5#fԌR3BjFH!5#fVLӢŴh1-Z=6Z6Z6Z6 i6۫XR,n"n"nU ʫ =,=,=l'+6Y[C9 ߔ\sF~U6;SRUYJU"rjY34e 9ZY6ܬk),˂X 'sL1vE{η`cX?Qf3w08j$%|<OT>)O|J>OӺ>OӺ>OӺHH7hg]~zuCUvMJ Ҫީռ\J%rp] <``/S)Y ooyſnnUTG$.ӻʘbRI)lBAYa؇Bg{g{g{g{gI#5Of ⹫52o(gb3˼Jf~t5=g]Q9+@.d,6m"RHJ!)RHJ!)RHJͤLJYR_1ajU|R(B P )H@ R(-B m%VvUxCJ9cLbr8&19qLcrr7\:&1uLcr\:̓x" Sn X]rt\Vh.m7S͝6Q[Mԭ&5ZjXjId(ew+M=mΑTs#}9j_ڗ/< kĢ\LįH~7_esI5ݜob}&єqjW[[[[[[͞MϬ>wvԲzlNu-OX58^aeX@lzyOOx9>^vlVf:KaEVaExon] kϜX.6~IřH/8o?db<4u~.vFwP1xp0v_v 0'[o gd:fw ~;VҺ[Ym0Iv7M ynHShG>Zr1\L!SТϞ)r9kf)kWҦNVҦlͦlzݏj;2·5ك h*@KiA_!-5~`4Ƃ hg{%\eb$ǼzH6d}$Fv#~jcsO34&RDjHeXF{"Ql={ ΐ ΐ\:>C rcSrBn[aLrgrdtHZx)Gj#'$@ε@$;ˢ;ffVh%@+Z JVRV꺸B9e;y Ϊʹ/P ..@XL.0vRwhzh(*Pd[| Qd7 |,7 |,7 |,7 l, , ,C`-y]o`ow/oвZ>e|{m&ϗcm5&U'' xYqDѽǵ5ċ9gR[oݩLݨANԌ~|<¹<N[Si#iq"ᷘcEMֳ$]I|8Po_ p~`ۉvwq=l:=d2+ު7{֤mWMrc)xIu쫨@bHU $V*X@bHl8.FR`.3?kfSfnM6p;Ȁ`4K[R*@4*} q[~A.}=K5/ReF3ޒ> 7~KVȗ1&r2YAkȡ  gvcόh1bDD>fme}'2snd[X׻p;q69[#%dDZkd(Mdvme_'1mkI`XzkjX״}@8smX/ˊKFaa)l5ʾN/M&dAv/֩FoWm2ort1-gڶQ[sAm!!ǵpm]՗L];+DջjE9"Etn?;W@;}KRp\|*ٻ]ڷݕ=;Zvhtxr(hTEJO#ˈF<рE 5-}ޛ/>+SYkYf*("5pͺxflqϹX 6+]UJs;;m͇`5vGpn$0! cv^[YN-Jujˮv`L|hI(عz*晕5yYjڼVڼ6/k۶ =Ӯeh2bGMs[_'agӝSK䭴F4h/\k1E~G;xyK_x5mw5U5h)K$k.pnjq>8ZOσ8"O*:O>x6s&,w8ߕ\; r)L]  A ."b 5!e=pZM2#o&Z RH!=k)b+rl@HI" D>z_/}\R-eT/rcWO>;~`W< 詀 vGX:aG\%)"e|bvߔܝ۝sy{48i|ԦdOԄOcz ۄ(ij]eM;r.˵KE1wS 9xpJF|#:J2GtN$8m)ħqtgs3(GzoK'bD'bU{W$Wi|3+Rλ.o]CkM fadXVv}GmΕS5?T_&򧶞ClyڢNSVR]@ZGƛT;H[IZ7Dn|I]a{%O FRYjTY$qUKhJg9o>cdS<6\ ~2)Ħn5Ķmܞ|@Ov.y e$Yև_WA{xF1Ys;﹙R ۈ32+r}'{Zu^;_9sL\'1OU'cy2h G*J:6ozXF"uNހ?{nfׇYIYE_͵š!#:-NՏqq$oJ8Oq4x< Dmb`ϭ&?k_xk:}x=7oDoq6xw؛@8UC]8qw,uw!Zo>`7y_ۿXָx`aPy0}+~Q,#67)x9nrh>gwaf''ky:C1eE1*H}rh¬Ǝф&b$!Icf3e LD͈+BRe_@tiJdiJ5: l,٩hU)7&'fmo0;6'A| ?3lX>\[64gWo!LTFdd~2ȼ)rC#8ӿ8Ԧ;Sy,!JdA&9jXX9dHd]16\̢IkƿA&-{ {Ռjc9?AXŴumAt4d˴Z4TZSϴN7=ņԬܬMZ4SfCyL_ۏ1NWa[Ҵ0+'Vp46RUb-^S\=iY3~YyޣXp|ٗzڻ ݥn?ޠN4%e;]xs9me =ka?)|xZg- ڷ)ZD#,hYh%Z`FXh,K4uD# Q'{rs7k;5ͰD#,K4D,K4uD %ð$,K4H3aFX-]' ЫK4 S"{ c`q7A|w(E*SG[RݑGH͙!e2N[Y&c{=edXƻyWJ)(}N_.[ b#VYBm4öxMv!.T)2H o->ƾYNl9gV⩿`=U6 Q\Y8-c(J7#$d O7xSx2Sbf$$ƫܑfXA}LP$3Keڟ칭33b Eg(tKI:/)k3f'+y}W?Y ]\f_h꽭om6a6}-cNu!~{?fhAez ;TZW:jdK; ,ntMe9P6o+}QɼlVK;/{t4{H)-/6Z\I`94Wb̺Gȷbɓ&%R AmHVgQǶa+6zjJf5%%Ԓf%nZϳ/p0~`4Ƃtu8~o)C*n =a2gEz%m9L/kr'㩵_XE;Uey/D9=wLⳐ7+=둹0 {fcsՙuYg{| 3;:u["9;BwEntET긏J(o?z̬w>ݴ.>iz9eFKxK{x/wri鰿iU\R]T{5NP3,oR]VרPgɷFu^}KUH}Gݫ]ݯT#1VOwZ^RMUUPww]NozW9 g3DtvPsr&KNZjgss;rvuntn9?ps~,w;/:yUu^s'=to9IwsfL_wN=LtNzxL}7,}>9_Og8|z^|K_/p/5΍b}]t:NFSܡB߬ov?pZrݬܧt׿-NN>aqB?{ .azw@۝GTwӝNӃ`w;C재PLR.t/#Eb=}}L>}Jl(w/@,۞N?fc~J|҉#|~>V#՞ԇO#YuUqj:G͗;|/5LRԁjˑ(u,gWgs+[jRRUS3՗Tw5w깓՞ $LK0;uڗpJ; /awQM&M^p-hQQp #ݧIX!&YRð=Ͻ>Б܁vB{ J] G\_B-eռr$T҅p.C v!/r%vnG&~ o?m;(ڕ/g5婯oܢ2> 3JUoyp:}DSQ4 V~6j6>K7䷾~>ݾywϷ6~7$>߲OCbή6^}tz I{bRzWxUr x_ ^`Z#ZM %]ꋧ| w{(1'{4wc9lA/̒ԙ}:Y~[nn{{ܯ9:NɫYvqvV:9ϩ^ٛw \_wzZ5w ׹҈%c?KziW՟7nNwUJVПџQ-sz>NGW SKK}^9J~V?W+j~S6mTow 5_9vuwS§/S_w':U/+i][n'.IJvB44*JTvT' [ːFCsȐ T$Er$N!oB<~Za}7V<QGG 1bi8 qv Gqd^cAbQLqL. @*|= ilq9\"o>:h7Q8Y㲨"BTmowAsrpdxȂaaL)$Rt2@ 3#!9}R8p/0JZ a,%rXM# w=p+0 0¼.]h|ue-<):XG|RBch 2h -tpdBzB/ }`( 0F( 7r,6FdL!9= !U=D hT6H#~qPkD>߸iR r+* pkZo~0)`dlJ~l&ԺR+HY?pܞ]\G{AEDЍ=Cyp"Mˍ1/CYFT@ ,rT ttx%@3Y},f0i`%QvR`55&UZ@ B̥X 0Fys,ːˁ6{iqGN.` X \6wxx!|AA! )p"A@ q OK0^xcop&=FzۗT۸?oD;<<£Mx ! 7 #>(j r!Ẽ0P Aa(EIm "m< NHKAi8ҡ 3ZVs"TsfV:R` ap'Ζg<ǀ`?  , W*&R6"TVbn :]l蠐G,| -">c⿈ #B(#&ɉ"ac7Bh9|6̍G wbs(WeQamj@]ɷgM%I;yPW (G5A3CziʼnI52TèǢ<2:tN@tQN'GFFCvb` HI TA[6Y`'9 |Pv` 3`ÿU `: Fs'=v:%lDegm.+&Ci>>Yt0#[/o,I@)uOEJ>{:g 8 J5' * *5Tk&KחSLG뛘7y?#là ,hm @7 ?>B9?V5(71_a\Ohze.Ji{Lˆ`Is)&%xKq<;?ħa+;;,-Њl kb8IsÂ0tHL,}u!3i0Б7 1M+Vz^gV!X<*Aภi ÷w71/SlhRi$=]_e#D3(G7t `2D aC($/ח@Znv;Oװ`&C +xDD+`//w`/? Bl"S&6 + |:C ?1Ȣ|IeL%`zzK7sWa(s ~nLm?۲ez3H, ;yWP, znVv~{SG-z׻6>5ڦ^@8Ƥ?o@㵁ᰊƬ|?y`\chحk$w>eoK *.yĿv@_2$G{Dz3T`~H) #A#\C=[8_OGgSϥ$y4lvtiԩOZ&(S̮؅%OrF՝}M:|qiOvuIouTX<]QQZ;߫^;E=jE%5!~i]"6ΉM'> (@U=(@%{ww vDD$ a@͠- yEEjxZu+bhzQHE%?rdi<heӈ Exl дʚ -}xH$uJuSږ%ft*}ReMY7zZ2qCiIuUKU-#kR奔ç3G/Č\2wLB o D'~Tsظ\ B OU%ǍQ.yJ q#1OZd;ZH[p}Н^-OҝopI(>_!z[niu/j13%xJ;G{haK5 챍+Mv.|ZJOˌ]OmJV ͱ¾l|54Qd[_TA[%ZD-#}XK?пu~GKoh_'U3Ԣ'm'|sODTݴx`t.F_]KF;\BP(/K3)R7r?rMjSN 趴tX'4l5ttiԢIݍ0,qsǃ5"Xul~7uYEL޷3b+_IXIȩ {eʾ=6%9opg؝ݒ94/*ۭs6ZHtuܽ>r]M}rkםQ!{W33%d_ =#yd21ojk)xs57'b]. ռ{))st7;ՊQ뜣~S?r`фQx7f,MG'Y;FC oDz +ϡ3ע[x{ T҄xg?jb1m{zGa`DxP#jꌉ0LxCs@aK pYIUƬ5e/+=>m]dZ5kE d=Dɭ u|"fvI<;s7*{xw.[(l[W;gn͋%*wϊ.^iu $rUO+-s],ҲIzNEFq]J\En<(ޞå 9l[uj0ΊON<9+ǯpxql˔0Z3qc:bMti;Tcr&g"nTD| 闀_@ :u ;:FEŁcƩӔ*W\ w;LZ½5&\ܫC#UܢVOkUҚ|Y,:K̥.W6 8>x/! O d9-nICqQׇ: 2/; ?mzɹ5DaBNoRWjzKx$ҘֺJ]B8wI[vz&w$e^9DNoMTPycOEy/h044$G!^m_G B n ODA* a\oqhf?Z22g2˘>e"$DHGFN*kgk5yܬ7Wd>u(l}uD3B;_y7Op8Ʋ) xi'!Vջu yM'n4"mE'kq瘹pkZAҲO>fSpSeF 2Fk?o~YCQ_)^sdkt|;2bV[EU!=pű<{cd=-q>ƴxyBJ֮Qϸ'Mo7(kQU .a>8$)%oߎKY@x8/\\ BFIT)~ߕn ;M)Gmi_iܘ-!f@Pć&F@tTsۉCxx4)nƷ82[U;m3ó7xtame+}CE+4{\5^7S"&1n˶鎧$۳odT].Kͭ/Ki},udKW=^D l7/ak>R޲&-U=洓or-yYi!8}rEN/V*]ڴIgMXCH\txw$[V9_UuMg?W]񰋢bSGLbM,2gwAEXŀG|>cbb.*kϲpm\7,]jO'kmeE12y4u Vu2\tn#h`OUmA iҥkWEΤ{E-YX:.ń~nNIoq(E֪ qR%?¾%OREㆅ}o\fOjy9OtWTkbՎ^fzngTaw17%[YGDG6\rƹ ";hyJ=7.hZ=AE}׬H 79`vo#+FҌӴL'a&|cY̛pSlL1kNm<}:d4ƝK4p?Ofv=3\tw s{:-y1(erSY}GǚT;6jE0X(l^ gE/ / U08 4;q\;9*F v- e˓ƛ6==EDNzKx\|1:fJ~X07Wlj#PijĂPlc L#0F|1>53Ϭ}~)+-<1,%q?ݪ:&jJ>d f7_c0-X8si[e֋w9:i~q= zie^l|L旐2ZfG*EljW;'h( tU=igN_^Hsfj;ROd~M(XZB=9v ~#/7Js|86E+ # !@}mb I 6> Y3a>r3?DUi/gGj wȍvƒV,o:-`>_;{oqˤs.zc[,Xڵ~JO\0!e7VN]wHI}c]˪}z2cjº 46q'OuzfxfGbޛSܖ8ٶKoqRs$Nʕ7[E<2>~i6m爤ܗ@SI!:5Uz%=Ua;5OZZjGnI-Il endstream endobj 6451 0 obj [ 215 0 0 616 0 0 0 0 0 0 0 0 0 324 148 0 560 560 560 560 560 560 560 560 560 560 0 0 0 0 0 0 0 599 560 517 593 513 498 568 627 204 0 0 463 710 631 612 520 0 578 510 551 613 610 768 0 0 0 0 0 0 0 445 0 468 484 417 484 491 357 514 485 184 184 424 184 726 501 502 484 0 289 420 360 501 460 732 473 466 426] endobj 6452 0 obj <> stream x|yչ9twUWUMoݳ28$, (kPYDq! QNhLbnk{H4$FI.n$A{WN}ra_ 1nGvM7~~ڀy23qi}9 ƿq٧~-cO3{ҶÄ냧nlYv!L/8w~D(]6j_P0\_tyD;oEQ-y|K}kPb1gU~ښA 3]˖,\km"w>XiƷz٪3y@0wV,DO|bXy '?{:5GV-t55Z W-Y)ࢵK\rr}KV/ ?~x"h9Ҩ 8I5cG}0pkj~4|o38yt-gh1@^5a qb~m‘2RKi"KO;mi(Ql~ f\SO@3p5z͚4 }v-EK^6plY[yOZO1p-e ߃m0?mӾ^4Yp~Mp$Ѥ\z)4~s|8ΧSoL^"~ppξz >5ג >E ɾfϡqh8 "p?JR > vvk?AXl9f%H9$M13 Eu%` 2liFjaX xYr8/]qrQ߂Ek9$8ۍ J"g (s:NpBjd]Np:]UKQ,r8XD 'CqjY" ,_Sÿ6X&"pJdp9"6¿#rPɿͩUtVHDD4Ô=Вt\;]ſi!\|, ;(ˆwnKdYW° 8q@q. 5}83hA|;D_*h-+G*q"pՔeYK+9ᘷy?e.M;i r qS_*q"_QxH9<"KprYs}K 倩 E1k3H(aw lnyG` 9s bD(D"/ ʑ|5܈JC)a4I 68 <7#"]in5*Аy HQ%Uh);" q"*v*ͩb#p"./2 (Pˆlq~fU>dF j@%R]]"At-蓡8W:6@9ҨƉDЀHA;ԮKN( ̠i L4PDϧ \^W0|$Kzܧnj\_H]6niiCFvP l\U(P"`Fu4@aDjJdnՀq:WHU4 OPms4I"attt RJՅJ`Uh(5kbF#B7T0@IqS@msˑ%"T!Q)/FQu q$)`ѪxU8V L'U(^Nԗ PH ~w&!L0xRy+9D(*Fww7^6]}<)Ic5F)NTIfAƆ֤FJTGT(FŎjkDdh;h4XL~yi cو%LP IҐmΦsjFfQS5W"+UMWek%)!djԌNˁ+rdC: h@z<}Ο?vx S%ظζƆBSF kB퍭ÆMQ>X()SLw]6u2brdk+: hCF)/^ 垊Ɣ0Q +5mdk.Ɔ]ЈѣWPcSIU3䖖&T4Lnl̞ m|\84v#;;OfaT( y`zYKQdN%EAC͹ -W?,dM6M-sƢq'L4yʩSM?mYsϘwfYr2 S>p8pgN ȯj`8p4@gsjt:z5qc3jp;mBh[.yQ͚?Ã;ߧ~s;oOOTvU#`aIyva)܇꾇貅u=/ј6&|1C3ؙ}[@)1u_ׇc܇هca4o>* wuO'Ib,> JK.I\ZxWo_6.[ɱ]>1]'9 2"qH_7p̼ܰ\ ߫31ʢ@g4TgD5 YK-[n|.C2+ PLVzE:o~y~'ROӛ\G P9`3tI`H ,G`hfN\V Y)ɘѫYs 6x}~$h8cxH[dL ̺3یMבHkڕv{!y$ӄ/'{dÐ=7ˆ)1c%ӐP1gSOshh M)lbjBQB()rud0y0-9!Tk1aӣ1!J+uhFcvү%LL.zE-j2%Y%!yE%$I'-G%o9ᐵTW~I]+{0'ߓIܞKXj1hϱpDYMx hj~)xfd ruXA͹NPOTm'rA,4`IϘNΚQHDRYmmQZiI0 wywNocRCpG-8ɯķ}s7W}"L v!#Qdp2 2Ʈd;J7 >a>VLSaD| 5)&?\K0"&ƃ'0J㘑9TpⱈkP']ӼUHzX1TggGG{ iZ.Yǩ@1El=}V6޸#KN7ξyY_Ty׮;_[y1-jk{w oA(F̵a_@p{i6碝hnF徙&6^!DC!#ǐ9oJ.{_C_u)[^{KXsV\ !m fWeWvN-f&z4} Aˌ̈́N¨ [~9cq$ E 1B j,HF['bJ*m vVfOyQсF'V7(=^]%)3ט67S(}?AAG"Psl00k3H3"p߇f>3՜e`1eSGЭQNDp'ٟ便uu׈"[ v&_ vL%+~rOY#֫~x->֋*w|ۊ׎h $^>-\@w;z R02bK{8sz*{gԘd{ncq'4ЏꋆpbXT } ~>LWp~wW})ͻ)cK/37/׮za{qESke+:.AA,,2G~Etl~{[ydD~` tF"Nj# PluNOf'0.EL\y6+ @:F#r-;WDA79ŠĀn2cȍ`Z Iī %u xmE !Xh; ̈́Gx=^x7m{օ,`Om\ݗ??^}1#7+Ϙyv9[^?kec25s2c޿NQgBlҺXu-b `Ll$u8ؤrSQ{e<>V)KwW`*-:LV/O_JHStckp>4؊KS4 <.LПtw4V1#]20M"#'kn{$ Pف1hjkm^>\:>Z+ eQ$g( @O[q&IA& b Jɀ~JW:sՈ+gBdֽ*Q^Ϝ8՛ŧ3ӗi")#Ǩ.i9LhpN*VECY gE]ǔ~8Y`yHv1x12r"O2jf?/v?\70_CGKݐJ L| nƉuƛl=3,66I< ^Y ɏ3NY 46vF9ӊYthnkJD>)7R| PA~z<% 2R{P|L+yɺR|ŵ6{ LH!f${%ڭ!J&H6J$Yal ]`U0yN|lBH5=?˥."z%SoN4;]dIsX)a#4|JKgFQгH&f xMKKn@ [ `W( O s&4 \T=3WU LwrnĎԴ0yU2FfKD5tUŗ*vtWUJ:@ 6)tt: sC* ܅UIT!} \uGwi[vS[ݱ0?8gϺ.j;l܈udϔ){|+ #^2_[qlVv::p0 Y<Ł( z=N'RpT|ُ?ɻQaϦ޹ҷv/,y z Bot.F@Lh/MQN/G*(ƒJ}GUkal(w[ N.=(C1֦N<)URcd~%>q!K5ba u@^'q6+؇~\GNyp '}T=ni ^V~,zX5J{UjXPlō|VSv}yS<`{2U={>~M+ۿMH^_?ҥ>,9;=lHF| u 0Ua"C$< ጠ)!.o)v&ukgRbԭ[Iݻd"T.޺BŅ>+ "9 c?j?TN WQhgHOU:oB)yv09ګ#er[syKWu1;}B&ZF?{Z=fa^#/w,A?1}*,ENB] Hz: d(+өMI /|Di>1#7jRZ51߃$ՓSsp#M i[;<j5p56`t]|MeDS34=Q!أNҮnk/߰*;uH$IV_pŨ>tVcKpLl*E*C9g]m/4GQ2g~"$"'jNHZq\:р(w]|,]$<H4tW17Kv<T(3"xD!;8τ;8G ٥B"ڲ婳 =;׭ٽ෿EaՏ.Z۟/Ą|ꁼ~ g窇>xzώ{'0=7oUPZ!#kW^βGZa4"ЂX^S ' T4 iQ#VM*Cц&Z dITQEDrfրkky5FiRD]QڊTyic ^|>m>^i5z {sϜ:4w\rW7ߴ˻Yuք-Su9;=%]g:2>vԋ()E.^>GdFRX卝\liK$W:/0j݅ϧR' Nw( ө7*$W#Xs;Åǩ!lcw ĹȈ~1DOƉz-l+ {7n)O$Ɓy`8#04~&VHQkٻO`u[vwLRKi!L?Tzdzw9:H5Bl>N\Tjt kulg- xZnTgEו:Ɔ,^m^bm|("6`4COL5:GnUΦ1 CɆLLcs+[5ǑFM]9y;SJh$u50sڶD\I!ۙ$I, ȾN C(L(VJ]պ}][V_mkZk 3}c9ܳsν3 L'mhWj+Rk7>؏JۼI6 <98[ؒ[ZB҆ʽ%0qgpu7Sm19b22c<"cn| iGO*YkGI-<ݔi#CS[p=/Lxލ' C@@ڸ8ޞ!Z`%uAoC73_+'ǭ 2+ rxIޏ[ o-T^r6PeG ~^L#m'drSXyJXK$+-w$ -crx,Qҹq5k\w#{[8c:/zs u"O&-oLQrFA_΃Uރ= []D6On;EȓA !/u S{gF!uJES nSfEnyX7Dk3+V\!zsꜹS7FǏ<W^Lr`σ uPt$N: O6´s$HRRvNm+l?gJ& H±GMSO ? uA҅#, JvTy7MvP$y4 ZPD[9Z eӅ@Sq\.^Rx}ܱFvy>\/||p$8AAABgooGoa qQ{?{;Lv(-̏e%vqq~ [ G[3plh &uqQ"_ xٛ)_ MAn )KhJ|G=%)Oy KR,OS z[EW9U9F9/#AWEB>S=RoWyrɤ,h:4n! +%Ŏ{NYѴoh0|4`>b_DGa6H;Mq8%5;L"s\k.++huK{U򾹾Vvvyo++WI M#3_iW8F3łUBLYf`1CɎ! r#f%cAL)$ZdQLs$`$sEWLCp-ŀcf z,t; F"},¼+.>Q^W{ao0CŁQS>a 9H01.DXI#e A81H3 CoăV;0ڥ@KAЍX94\ 0a 9`EF`b]8%p(KAЊA An"T"ꐈr7$ 9r`19}>?R~/ַHzӰ7 F8' ( ᐎ4lg CLB@99d7l䐍QAD"&1U.hE[Aa% 'i&i  AVi@HK!"v` b̑b3=SRVLvBCpHCd(3z LP$@YJs)-E>? <oޤLFê&i[ǷTwڢN4oa/o[R/BKq:ͷa+pJ.ɷT4\rmQ' EηŔ@ŷ-W ^Vc߶zRܖI m95ZķYe-P&k+Fm)SUL`RɲLrj$VWp&[cU5 Fk`TQ*Tc]yǠjU32Z5a уPm *]ʴj"U΄E15FM4i*T"2eP!QAIR1§&bࣂsyJE%#Z(U#5 (= T!GB=Я|P[ g-1ψʀto t Yґ]Cr8A+x#+PZzR2Ԉ!s磩:8'efK ? 4OgXEAUDVyʮ,x ,]WNQFY5Л)I"Ae ~`K_# #|ȧdR5lWY-C =ҾwȜ »}D.ufj8:K;t|Y6d&kqȅ̬RKzӁYd;h0ZFvU:#x2Uh_9z|^ƳEbgfV oey'vJ(zZ Xz@*~f 8GBhUNQ1t2# 5YтL95"1yzv, cAɯiMwF3e|: hf*yqd?&XSZkׄb?9fbe7`<'bP9US+iw@8hu]'=p:Ku+FbiqFyN߿*ߴ71eל$[5*_aGz-k߱F*1kXAB62|[5OՒ֣i3^yEK1rTȗ1'L;-kͱGTWh3'=TT|s0ߕQx&oE톳=/1N`Rk5E d[BM<<46?E,PKsdbA^RU>*50J[GjaS m)jK<㠨%[O%~t"Ok}L.-3 z){౎ZOZuGw.uƓ9d7)$FN¤B+| T\"{چ- nṧ֓f?'w.YھF}1xscǾcqwޛsއ-Timr7҇cEn}Wζ3qރjS̊Tپ'Vd7nR9ȵ/?5>l8{}'';*}¶=̀ng<}rԙ\"-/k%t:ӱFaP?J4?Mu9iOV6\^7lKޞh+4 >)=i-"osWE9p8n=K'nj9>beM̒JI}p'.%#?UM}7-]C7]WX{ v5˖rkV8SӜo-rOȐXw~phuEqz|1K6^{ ow*oEvؒur֙^A{\v-;;on];N#PX(L?nm\:j@6zwkʯQ騥u+2& NQ2y#Fܐ[|wŷ/LmCZJ;m?tfu͏[?Ϫ[LG:ӉSʹyZk|wk,~Ca*L;Ke _n6>=Zgx:=S0lG/K XfȄ}6;W`~aĞ|mjuElo: 3nC<9%}467Fi_sҖJ6R&+!O{=s4czRl 4TӠaIKAyjl5ewv=Wy;fvkﲯ xIzom;zqWS>49{^w'POR0vOՂ+oj/SV;j|w^?UnҢfofߞ20"r]K-ߗNkTr䍶Ӊ,;%b_%i\> stream x{ TŹhӧ}_fئ`aXadM EŋHP c A#1c xM35/>9~xX-/]N[0v>7CL|C=?p擝,:!7,]wr%Rݵ gk6Ih ,ӉN7B_zMgHuK| ~/"k - Dʱ;O$s‡iD Srcͯ|R>_uh&:d!{t߃Xİن]/*C˨2 EQ"SO>m:>Oq0Fmr,1)} ՍQ3o{Ѷu:Is|ZaΠ:(:>}igz`6 xx{0d*Rg<$?e.C ӂN|w~}h~Zƌuw.z?CBL_?U6j2 }xhߛcn7><&xgm1al]6r:ǁHfoa .tj)wn2ZhI WeǦBW3"r)8?' _19Z EPW(ESf0)3z| : Hm<:},%rZ-ESZK/@&Cy$Hk +Pdypưd(b+)UU?w_BDti6N~1Ik\ƿT<ĄDfI%h$3hE & ]NkR)dJSlH$8TLCd$dFT̲ |/&I$ %k*b*zR4/_.bF&3YTE_7hM&ʋZ.X\ )n-3B (C,l@AD'[U,f]fl/6R\'|UBQJ^9%w#ZnS"󢂊|,,z477C*XJI%\<$e(RhE!TwQw6??mAo>cyp)p+ȑ#K0B)P,U'PGP4FR( z!Go u,aWS"bJlB)rǏGVkTC(ZHt,.= EѨ; [c(r1+z]Ncx-U %U )wuu!`eF(!!(UCGVTѻtHF)_FSI+󥓗5VY dJS1cr VֻTi@d؍Ls-jEzn啱@%'eWx$rZ[])W(EbA &abrCZPHF1Ј&4Rң@Mm.R ttբH:R_seom.\ )F*z#Z:]mF1M-UҽOCcecSSԈbUTPPᵒoFlB|N M0m]zY)ʸ^i<9qbRijkjPSs4]t&O蜌iӻ陁9kdKL塇מ*OAGICu^4(]V5h#=É3y*G$V   h0||?5_TO'ҳrg$ <,>*x[=ܿ(ΘjjqE>J"sjQCUfuTUBkUɪʣ7ѱGz(AhƣTF{m ׇ ڌQCCЕ'ONx[?dOGL,s@&U; D,Opocxj*fʢȲnvzW39δfYԅ4U`}e]΀m,[+&WtQ%s`dz\v`]@WI'1tDh?ڇ=^݅Dw]h'ځmh+ڂ6 h5@+Q4 N15EzGϡg#谾c/:4ZsZ 7 ,j2g:wJ9'-#Zʢ9]pUd*nG~fVQkE-9.-kj5774;6B:d49s">>1mvÞ /% ˀmvjV<#մb;Inu9vX5Lh^J_n3oƆ[L*s77lGvgǹsmG~yR2m*xp;l咉?1op$@VO8"J2"-8Q$N23oDxujyjۄʮf&Ё5V2§siiDđ^VP_z,s#9eC"aOq,esXFt4J"\'jFMN"d"jԶ9^`AޭK!/־qˑuz; J;. MIs?z*ɹ7j}" ZoOGz_,sMgi ސn3 %EY MQk0<MNv6ԏ2fRsM9_v_nK?tۡ}Fa"r aemʟ}홽lM6l:$39VdʱGa_a&qDapt[-/ņBAG@s&`;1369c]VoQ4UFKE3Vi3mއ_SVsOd-^i?W{/4e]G=O^{@KS]p@g@e/n8¾#6rܽ_mcV2f#_ruT_qkk9!VQٷs JZo`ht@;c 6}K_nbE֯+Rrݷau̴in"<nr[6l22:DXΘ*Ze*TzEFwCNH<6-we3[KÑJToJiB*J,)XDݑ 4h ICc([wfA͙L3Ǻt[׭}Wb{;nXRj}/[^. bTs7۽ - >AS|UjB4:h'Tщu*e(mP:D;<`8i&)΋6࣊}C$&e6v ,E"*u180=s?s/>ۏa<X+Q֧,i=r+{c&ɄE6ĞY572Տɧ!ʶI,Et 1'( # FXKE<$(tXǝ d>D_sI爎PԔENl?Y!n!5R!yڎk2m u vMg_xmtOnyن ' % r rzŤjUU`HMfNQ!'dG4DmIc5|ۖ|lQx޷vR=Ïϻ?uDtJIqޱ#AOh`Wհ+Uh ȶ*nTE:I 2 Al£bJ QFD-B#ddG8[aEXp eSIÄȇmEӌ8J];z5NW[͇7~AIOްjk>e]yT>Bӿ{ZX#?=p]oQ%nBIA:l?p9SK;e%έ2R$* E)dT ?HstP]X{F| Y+pL8DGBQ@qEg•q!wz\sذi%|D;#v>[/X4rEM]on+ABZ'ܟ𿝹UW`TfG'.Y)t'M= $n͇T_yg~I<؅h kAf*,&g5חE<|tadส(b#b]5DteK1$0 ydgФ "msH\nxBf:?][oBzw-s35 wyljfgos*bF*oMYе{@Ul3ywjY{eLb$+"IQ$)~;͖~:,D;Ftm]Eٌ7<]09޸{} Zg6H k\yZr_! KvZAӅxi䟼@D)[Gy|Bbr-vjA- ͿL3k }zқs!9 kUlMOa ;DBd@k  L+A 2 [c~eI wOanӿyxKrUD-M+*np33_? nV,|~mtEU/쪢PTL~C/>d?B1ȼff߸5L%4&ܙ*ԒXke_*;1I=9PP1Uc.țCg2~DA4 7ASrmcՒ%5 m~x_Tԍ:9lW﫱f{Ō/hN(Kzʘ*܌-vT$tB;s>\5T#*1^D(ma cFէ*r:;𽪑'CftP7I" )f@[l>v\ݩpBHBFsH|E6IYd:%5'ch~>9#93П8S5 zy>)XEhX 0t o9Olٶ[ǿF=z Zv NZf8GoN: pV-s9Qov9<3p'vSNM(sr`T`Qm bqEE (bEP"U '׼[41)M4ذ`M%j"XcX !jfv8{|μ3eo[v2 TNTh@$ @ yA[ x,"x,6p{*Pe8C<1 L2wP&Jxa(B(*X@$(6- f%'#Zɨ>PֿO ӽc:o:bH g+H3iM<'(qc$7@v H0qXtЋg<'@c_;*6qqAI#A|9ZOWZYRK p-؜F,a@^Xj? >tV`hޡ%²@`yph?1/ iP^:r@6茾/;@6+E*k-)+e[u%@jөu5²PB : œ!dW ;rϽ>jwkr'Au>)kEZr}|b gJ:>HZyRjd#A^barc1&f嬷bGKfC@h]hHa&.;2l>UZqCaM hUgqvcf l:|h@2ΊT;wʈ:͇!<^CEb?Ahl6:|Pq!cמܭ[Q(u 9y7BwƟui7ˀտ]Lm􏋙b[Z_A߿Op*u {_oΠ6~ga%Va#QxTFEB4JQՆ[ aՕUFlid$vv;*Ngr( 1_Ipvc цe1SD&Ȃ!`|Y7ɾ6Cl6#.=8` OSvaAp}] 6l?H"3>tcu ?}r-=  8:G_JhA@h{=bp@_.6<'F9hbڎ0$Gjgy6Y&Q@4֤)128 λOxqnb ZzR=No-s8aGz$f\HIig<,[fx=gJ0+i4|x(%B(9w @EZJIDb1ͷ8.V^X;0"VDi"zM\{G;N$T(= &]Y~A?tæ C] B+JzRߓru RDV, h%$] a\ n9Gؖ]T;?ZHCGmSJΗ_VmG.EiNN V4Ҷ5h>9~yWFe֣OrbwXӴ.4=h[*1zk7+v|;v-p\! jHcSFF&8s'~6vPA2Rz$wzx ϔ4֛DA$;]QS{Y:.5@Z[ƀCжԃoe\l0p@ow_`3_>|,ԙ ijf;N0XSr:^ՓXwwN/Z}5kӨ!}&Owo%|.8-rw쥂{;]rsȲe7[prN9u +=/ qr 4j<RécgŚtdd:qDFp$ 1= Q# h߆hk2ruMSOsbz[ˈ5yv㕵7Q /NP5.Wɵ!N-ĺ$L3Z89+FlbO76Nw2az5~Rx[4;uW4rt6a$fg{ں?^zX[zxS+W̦w.~oce\X[&]U>.$]ow>);kžc Thwe`!ElHV?!iI~L0zMۯmR* ?G~;"и"п}B+͒_9!OߣgCUU^X״K%N6.~~}w^W[=}SS?g%bצJ-UٵKR*@w[+oZ:pf)~6+)`{F2Y}BĔRITH@D+DJv&ժ BAܚf. {|P+UDʖ)2ȡ̀AqBT+iR/1:BN?lc "(!|imp`wԀ?[7Kn,5?,ϻ{KM?73{-}VK +L}^}bgux|3IFmf_kV5`m_[4lRN<,rkZ| '~~{]E${ceǮ\ 4ӵ<bza8^Xܤ]fgBu-$ޖ^t36cr%a8Z Arr%M.3'ٝ;2~! 9L'{!76Qx8jl'r6́#bVӍ5nnzOK^|v%uV&^MgJn}wNyW7ټoe+ WXdGOf xŕe?h|ᷲ>W{}kR#+idSGot90xq/F73L`#oMaSۊdYE R)uS&ƉTB.wupF %&"Bz"BXPdS H"!IY"γp'i2-ɂsf`tůssyܳ?N|R}@֓iJku޿&RcbⰘNOP,=K$(]e5dzwER!<+u3|چ8GI~& @\.&Ǣ#,\댒[麄1HX{٣mN|`Of2X_f?oh]G߅&ur#%:QQBP"-Ҡ.zf\$ʳNÉY0t–}>uSS~n޽lFSܶT UKP.GN:G&Jo}Ŏ?.^PxDp6¢u_!,pĂO w7_3Pq'IkX[{7C/K>6lsS*)9}Y>3meuoVNs!V_/9Wm },OJ>O }Xx4|E,S,II܈fOX,jE=XG^'͓)mA5pfO|zI{oi< ֖zv R?³4:>aޏL1nɏ&^|g6\4J&>vَW?f VێixI|!h]_tky-Gϔnu-\%hve4B]v5k1m6utGY >ddRUھ!{2x^ypZVi4zDݪc@s#:yI`e`bG8LjoL>9O $L`9e \1 jψ%I-^v-\iˊ4~ *x>h6G.> stream x]j0 ~ Cq!0r6[ l琷&AOn|`EpN8oޕ&*-p- ƠK O. +;dO>^~gjp8ʠ/fF;vNt0-"K c%lhBUWR WF!N 2ݏKq߻+);(ArOx_S 1S8on endstream endobj 6457 0 obj <> stream x\ \T?U\#.,À 0*1 fpfR22*Lۭ_iQ7g{-ڢ6~~={=s.#0 >Ǡm{@<2ü3R/.956شl֑"2Y'+^#DԿhR%7!7߆tJmm\?y7w* k_z<|2asbzrCs_4[b`APW5t47 ExQ.5 a6ds8ɀu儐&д9lorvH 3("@J'|&s_*1M˓ 9Z酱Tub@$@&R:$ۙ.ndέ:6ȇJXfA!U 7|`d;S7w}X:[^9 Q|2 pp2t P^JP"z7} ~q!1!1BC!L<aDlG 疱`x/ `bLDD_qbDG(I0 Q* a Sa3Lia:b Bx 1ԈjH@Lx!1 g 0̄Hςd!1l Oi鐎pAsBΛHkAYِAA.b.䉇 !Σ=p6b>#@b!C#C b K2(C, T9@%b%T!VQ\ o\8<8|P.jj0"A&ZEuuPX WfD3\xX -`Al%X `rND'8EZ#.66bX"~K(^ ^ K2e.vX:;2q\Fr XDV"U^Xq5gp\x5\5Ѕ"Zza-ZOqq܈x#$~7͈7-mp'p;܎p'wz]w Q nĻ{( !# > q<$aFG 6#nG-[`lx xR|"B| ߃gY< Hs ",/+y^C5xux ؆ #n;`6NxMxK| ނ߆w߁w7]x߄Ca.H n1/ ~ !A^>}9s /P  7-p |B~߀C#?P~BOp0_#p ?ïo"Iǐ>Cr_|@쭐IO]xWb">lRы{{ ?_3=G/?oCArEٟ˙~ 7"~hLh8zhLhI:G/r6W3C;z |uu9#XNb`#H\3z #exg=uh(IܹsHOK2k挤DM:>.6fS'&E#&76|LXhHpP`K!I%@N[ͻT$STœʈ 0FGV2.GĒu't,Tk{a̯DU:HBJKЄ/&Pׅ7.׹r[:u9X_2[-([鍤7R1nf]Z7 _5NsU\\X*_UbM\df\l6Û9'jc}jU*]\?|(eW^9.I4Ѡ+0*)s]XB=!"EoCb5]i###Pa6lAgrxhC!v ؘ0t)Υ@M؜ê7'69qS"3t= MS"Wf$E^W^-&>8=6h[aRaasAfc!^!^)]=̳]ʻ]s]dyZ+wM( ?BP(d U"GܓKY$%` a g+g Yٱ=rԕ[0kbW0PVÈux2+= #^qxϽw w5z%vTŸ!,+Z s `;/i{ "f|;d#]E]Zot=QJ"Q<ݚs*WkuKC3z&)5r7 *!ǕỵKNdkU9ݰDWVٽ$S٬TƜ'Y3U=1L505bњSdאא2h:!/V@V.zVbWU hC-=*|'%ڼqu/ג, G4OVO2{ʂ9 \g!j˶oL°kyUABP_$J1o\pLLj}3L @LPɶB<ǡ>\x\zHBPCL4ƆOMPw0AXG:*#Gla%|l}- bjx3?l0K D%] p-s9ffoPj:$B2K}6%0߄V?/a[G`L\[oUd$h)'܃%߃c,eM2TXԯa)ъ[Nx0sf;˶JKE"gģq =bu(y"Ifҙ9)eaV00G1Ώ*ؿS,/q>BFr ΃&p@+\<{t?oJ&O L&s6S\3F1yy9dT-e&v.}Zq:-6qsroq0ϖ%fId%yWrHrX/ O(]߷?\q.ֈW]x@O$%SўUk ن-Zwx y v}^!2QL<=sS s άanA?w3[evha[^W7O{"'Þ|\ɭnnz^e +IH$] G$HޖjN<]ҭҧ_Ȃde3eY\hS|G膭'0+f$\;dɿ H׀~D #,@u0u̹p;7 ۤV0`ǥ/QnXi'nX.{@bދs)dt8xM;<(pFa_FQь€ їADMT`T`4pzgJ^Ƌa/Χ>),an K Dd(g&Jf_8V*<6anьL`Pjj&XM53yFʃCdIS*eY ժxbgf9ZU33=oF@Gf|K! //yR+}و12߈2BƆ :v|(Ea0܃- 3vcPI\XPT&2@e2x+0y2x ee2b_Lr&4jL.GF@4-~%BMq~N&[[]\S~a9[{am,o?d}YY]{hG2-VF-C+ ^%Jސ$C i@PzQl|=4>͂|ACKB|A2)HY~yZfPx+"Cyn1O&Tg?졃 r2x"-b2 J "l3]VYemMB$e O߉,>foٍN7YLj>4B 2`4[Q.15U _jop:R![ځ m56 "DuVh6m[szPl1+eE ˊlm/ ٺ"t2_ iۚ FƦ6hͨmCk6[34PIo vZS7:H%Fb6 V,n B`u*k0i4[Q9Bb_.+f`rZ:qH/ehV,9$Wkv8f'Vjڬp;AW #m[fcv8pi5_n5Z6QV EM\g6l9^:z*k50Zx;8¶Sb{ lk:XC_Pbv4v.m<]F7䡑 Q놌3ZE͂6cYMћv4ؚ-]h1 4N6Þ#mDcbѣuݩ* VF1:Hr͞2OIxy#S8s&bʌ>%yVT_eٔڪnxq[=;R6(8"JCMfCbk&Cvͮ1:0&gG;qłCd{`6aL9Vw5U#''\75=vn?cQ a2iL<6؄aIv& Ta1BF{-uC}&48- NSFDžjԄ%Z r/BR ɟky#>>[!ډw+WmP-|}2|I t!Ji&Fi 9W#CeM y̓e^"h C%Q(S:8T)ˎZZViVzcv j'ckNnݚP ʫXp<5`~ -gC=HMxfZi@jX)7!BkETܲO|Bgf9O6~9r,Eǰ w? mVryO,Z`PF'i3ґl6 [})]# l#kyC%mX=5Sq5< Nj@CgP|'0Z5&z7^=T3FgZZFv̈?$-c܏no-p9yqxʽbkhVX>fJ_FǛ@"OR ܾ{ǟM4Ȩw [,th5YM@fZ5{6jy4L=%:MyA5ЦF@}jh~rr\ ʐhD<#=͜f@|;0OtC匃k;F@BdUE]t_^0S91_* _~~XГ~s _1t Y1oϾ]Y )9T j2VH/Քhq&l>bRT9#\Ϸ+_aަ ;j:^!yʭW|=uCŵA] HM+(*ـ/|ėc'yL % ofqwjH;yDY lę$wآb@˪xmvLO3MOMG875E3+1Ic&Sf$z9WW˗jP%qe~<]6#f;GΝW]^>;?_]}{\ZhB^<:}S$}5'h*"<ɵn)<'=\qҨ,+zλ-&{+- !^i]!WǖڎKp">*XXw%s͂[j^τ$a`WκUw~*i-Rx/Wjκa&V1[an+ oٕ}0Xn^]]H ~(q&]WcRZzF*Gy5$CГ/VY~I!{Jқ<|uW^-w+tW^>mW IWm|!ySק?ئn_-UlGY>yuc;۲l>+M.b Rߙvx?IMo{üs/2)m~%M59GT8_?NwC+R=[X}_>ǫnwZ+׹Ͻ+d_ݝwϛ3HG'uﳙy_Иyfe/] 1rcWڦ{_ϱ խ^dwh,^?}$;ܞңh1׺޶$%zk,-7$kIBէ`q_kyq}$FsKR%=0޽_K?~ߺ{?2.oKmtYwYnL>&ˤ/ ֽQTyVǒfUlmmHOxw8|!.ri`eƚCWp?s'L&]/WzNQW4 wv Wh,{,9ҏ5iDKX|K&D±+I,o,mXn} 74{5GL!eS&h"aQ2F!O~COva+om,4,S!IVFID;$*dG>|-wx>Ym;&NN7CMpQc`5 q# &n&xJGsEl]!' KK ٣ ".MN4drhOTWgm Go. u9(g:\/2VE4l/7ȦphXy\R.gP+ ˨6iBo0c{l^q)P0`/,){tU ~*tBQvAyeD u09`eq)/+"Hk-]^-KKK 89LN*Q"n~9*ġHL_P*s2{kݞu_Jó)bgFțǗ^ڗct͛ݹo/Ex>>iI;d}1Mɰ>Ya'l'z>^5}-܁MN{@pOxϚ z>3.6pm#mf[Z걾ۛbL8kuSs07'qɅG?h5Y|/']Ik*eT|ޒ,YQb1Aju0; ? vd(/c~UR$Wr`_4]Pѫ{ Ƴy/=uQ֕ e\qrⓉaEs<0z Ϝ pc ;Ig(> stream x{y`TE9uo;vBt6I鐄-o $*A\ 0ʨ8""qܾ quaqy~?r~:uԩ*U6jЀ9B7DO (+ؾQD@iFwєH7%:lTQ{[6sÐD{̮ųD_%Ss__=Q_Kϝ1ѽ3k5sKy͘u+ہ'Ɯxd洚O壾LD\/|OE>sy׼M0֑LLt_5Cg\370=o늚":ѺQڹsji ƿHϽjVe}=I]ϧ٫O񝲄[H~f3{6lJSŋl -@ٚO%l٨D{>LzXa2 .I:u.nU7dsO.FR1OlӌP,9VFG@ADLVy?}NGQ^C6}{dFp,&;EUô.GTTL&ZA0,NSQD=oT7aZ?O[iY uQESQ|=#,BrQ\؈v9domP8# (Zxcd&=v'T̥y;CQ"29h=pYɧ@f\hФ>F_vAR%}}ǽq=7s>ŘM;t\ ߋ zѼ𔐥uY>%"SҍQcT-}蹍 7I3J$Y4 Z)- C_p 7z(;& H"m"UmT*>^ZݺAE_bF[!&DOc4HRBNƏN|)= ې:j\Z5,]۽B_@aUs1I_J9}^wVm{kzX ؕPm>|",ml!qVVbDyAAiK GN S0B*P;&cՖ6:籴XJ \BqXrϹHWIF`vѧ@zTi(jp$AV)A|%G N+aW!Bh $=js'7BzP&݌Vw'#l.ƷXkr;Y< !HULVZe`q<=Jj՝ɵX^c)_;Oz^h*/E%UuMTi]=폯ƊlESs5g+ T!= vh6s`~(a;V+4BG1ȳy$de) S6!м:Ѭ{;^@$O7; Tlܖ?A#.kQr*gth~*\Bs!!I@RXnƿ"C Ŝ=/n-bz ]nPAXYL\d&b'b1p' 38[qǰ*`$Egp?(Q4N10lJ;0`"''%P"K0t.J1~ 1=S2SalJPq gO3(,LG߳vl`g1~ J^`7I{P^Th|LbQ'`NbX'pV unRe8Ӹ?^oh> 1|! R_0*6 K4a%W8(KƗ8+V@xd|k8'**i]!jE NQ8MW8Fg*Fe4xY48 ^)<_ |d*X |\j] jd4O4\L37)\B3q' .nYh6vTGW)\Nsw\=++*J{< aOWӵ!x 5 B3;x ,MpGh QxS|\_iq[VtnPROߤʹ z tu+[>C+Y:wn{ y^o7\ |P4^] Fk/Zn7/W{(KF$q?=|/whm4^ ']z i>*l;`#?g-3zxDQz؅w# _Rmo;z-<;a@N #xN*Oç>}>ʧtO//?|W[ʧwXIB}[G>@:V1]HY]% ç+ 0`.:FCHΎ!x!25NJYO7ѹ___3` #pD)6N 9QfVvNn{%wԹKn{PGe 4!C 1r;j~ך_jE>{ѭkΝ:v(,d]iRI q-&:*2n1tM0{W=3p`{jPPs^Au\Պu!odG|W_q5HQr^QHh*OY p<̺2tWa-NS5ؗUB$dPdOYy)򚩁#*RNL_ ƫXT + 0Klh>gFMFNLPjv/- $^w$\;J+o=6E+O%uuFT_XU>Vd돡C\M, R 3j4O,̬K\׺M8]u+=@q]}Սvr^XS_o*>:&:?1lJ)vyV,% A\S\҃90'M 6|UVXKu޲\lW)xsaIM$,vdRYSC}[:򤉘Kw+_(.̵A}4w/kddGT]49UQ-kvď5j6d%ĖS=bbJWy]uH/ȵ<[JbK+JM('eȀ0eSX*aWz`+VY٨NRѹf!1\@: ٢b:u{\jœ=.IֲWhѼ,%y&1{Zm#|ۨM6FW63QWUl̹d* ,*OX@422K[ӔFZfSe qߩl߈Dgv^,(7w).͠7@:M. h,~7A%(iFI3JFb9نt u3dm  Җᘮ]' whǔ#th涶aM*çkJlAIzS[ Bj-:dkPkTbՕ}PbmCLBV[4] 㴱 wTkcf ')p]sTzJtq(-y0F6Rs6BZ90e,#n UL'!W>F (}rC bZX֐/ [i84Xlm09bJ'y;&mY!E6L tXw->_gwKm#;ǔ\ "1ն\:Htrh G (#s>Gq) r<&:^di.JrE\# ~8hhG.Cs2 i;U*e4F{ǔއP)6"& fIkBhFp!`4Jw"܁aV#nwWL6ۢn+=msD B[)!'nI. &PC&W)+L'O:2! QLwBT儨O0!'QxVzz{yx{J\(^POag Sy\ComsVMGݍ:7n ZҚ5# M螑Ze^yyoe.4s9f9gqXlhKjX,EXh|X\MFaD]mB| "h0b Q1WvNɮOrI>r/M|Y2jKS|i6"St!ό yf(!}cr+I=@Ձe f&Ov^Փ̔qʹF>V(_d`OY=]W>:垚-j6]0mFg5<9րMQIVcmcmc Pc)YZ_*""0wUܾʚnLiGg_HV*2Y-_SP vO?J* ?wI%2V?2Q-#̠$Ro7/-W>ZGjMkmsMG\{P?i^j%tW;%̦V9!)d" ]8MB+yYl1 q̣CFWhT:Hiݏ.:m ?Š iL\I>wh=J(|E3 /G/{oO󸣶PzMQ" +[DhzMd7:?N}1a8?M8gXf1R4R[^4:j U|,h?W"ø]4>GUHpVS@oлtc8|D-AdcPNQY\"kMςi{4-kzZ60G&bm*R5 :{Cro-Xk-q T_Ekvӛ:؉x!/;^O|LĻݤ 2ƃBȅn>"~|.+5#[.cq<"kiʹ^F:}N?CK[]#yχ_O1K4Wۯӟn6O c0^4qJi.\g0KtS#!@|W "nO ߕݩ n1C`[.]N4hQz+s$NW321o;y'x} ƈÃbNYuֺUQܪ݆ܯ}ՅwGWLi>nӫla|9O'v}YMZ>^(N_E*hxo F`)μ&qd3W>@gk4xqy;ai ba/v$'*{ hu7dhgLEqIhXh{y<"#$6>xv{&\;{k`fݼ sF6~*kNt#_ m=! pS+5 dZ"Ip'u@xeK}NKxn 0FYHHv[vXq+ D1}T߀4-t=Hiέ"hs|ϥ8#:RgANcO%t%<) U}\v2℺nG[I0޸q)Okh~KE4 o{`n6FkO)]Ka1Dq~WX?:V* XI6Կ>ȑ[QjeB#k g5M$eٳLN˰듼Cm'}CZ|Cm?Z$u趻Y3KyowOM&A4s(hdy9l%G$4ܡYK`a.3T2)eӳ֘XL pN<0%FZ aa&[bBl|XӐuљD6jv{DI\*s␖>q4R{IJNGVq9^3rE{2'24_q%WȬ'C- H[#[li;#2xp/($mpd]JKL !o EPrc͸I{+q/6NsZݺVHLp$E)A#)# i|6f=9ow*LSqZzJzEZ^fuٙtL.ӒQ5.vXMzdfeeeefz23{v g&N#)FUօhLf#zH~XC%ȏ/MV؁7mq4dC}I8ҹI1~Pã-Ѣl E.:=:1ےAcDE&\NEΎi0l"~Űj1{{kE-;əLp;㜦v))i))zXNvnvl=,"i4G´ {\~e@gO)N@vd @=#1&޷x{Z8.͞Xl(h4NHĵRlg 1#!'.! )>-Q\`$Tj-;ƟDL\bl^,6{D 6"ŮxltfS31?(d8tvtӾiڃo.L-IDbIaZ-ati3׀;֕zr{ \N|fn}W7&w.z ~׋2)1/_YF=,))zxL@nnĄL_Hk.fcQ[L #Nib ح^"mEzЂ ~"wqCŢ7td4%oO'K˹~0#1Ὺ{.sS= ޠ5Om6}ޜG5Q[srRhܛ0(Ctk|hRN:dN̉nF U}Dž];vc\!Nwu!)P-#>U"xDѷݑu:SJ 1w5p縡h"IGd -twq>8Q}t= Ҭ;@RbZމ4tiiA\35;iҮd26ӈ'mm8hcьhf> ,'b82)!O :B4iMq\90!:k~Ox~B^'LJ^a$"Xc:Mb3D&c)=𝨲I٫Me@;JzG$ !3iٱN^\f4ziG`!%ՠ 313C1h ɃZ+ aW;tPi#ֆ53$ꞐK1'tN7,'+>𗓴0OYmT>.Cp%x^EA>ԁ|ȇuH}rSryu~uʣQ#EPJ6foRgיKNL}}|`\p\LO)SVި7͆I~"\V750=M[rTq^Pr]8 ɔ$JMMEpT8jYknv!W(`h3k=s10B,.AME[ϸ8D= DŐ3`FjVj)rfSVI6Qs8 SDD,r:B苹ywww2Qqo䰝 654EʾICtc{7\ ܆Dgoݹ :ZӜ]= z>69Q .mnwꥭqA4WYetzu_^]Y^-巺;Rn7t7ʚ7jMdު8͖[I)4HB15Ԣ,{ye{1Xn$֕0Y`]}wkP͖fn1p ÂqmxN^;`H)]LKf Mކ7{]Xp5e܄~w7WO uٌ)gtɹ O]wW I{xI?}zyksacԍ?=g nwC'"WYnvrbos=vKbujX %f]mAb21Z< @tS>.)&cK'JnJL&BlGvO&%!ZM! BjR(o"( `٭v4X4MDI&͑ +r3!IP4VX8ZT ،82i>sL{B?ᙻa;*BmgT׃b^K祳.rſ矂/:fxE(Bw3Kp_ Ed@y.VMمa."q+N)dJ(fbi"b%j%=E G%,Bd~I:lSIo*r4CF#(itf;bQ-?І1J7"@u4UW??6SG4PQN cɀB=!; [ªX <>&n—y"3ixXkyu$[U♗3;3Yi=ҕJ/u"= MW*B79" bN#0()DBFT(, Ģed@B4ANNRz"027%f{{4h(MBG)]|nAmXbP #XV7A7zl`H{F8/_md t!LOVǯG,Y#R瓞iJPAѓjҦ@fl)/NSY\.2YlNAp:T0DhDTd[BKK $IhS)% {ffD?R E&>aMՓN&&T 2RP58@v"t.-ܢWcFWČٷ JAaȬ1puSc_Cɸ&dg˜, VL 2*SMLK3ch]}KsiFJ)t=G/%JUdip n?Z eNށcr9˂Cx)l2QX04mጉI0LtLUF 5HNX#*bun-DLDL3Ze88(1In;Cz _?yjŹ?" pV4 EeџҔ/55Kb֢׎y[ Kl$gtVJ$6 C3XSE{lu@P(#V]vBb5܏?H FɒRsc'ZgY:?Ӛ}WaEQyNm-'h鹭svЯ!‚)ѕRzLaK5a~)¯&Lܷ$}/qZa-#쓼I)ՓC_bDȋSKE|xhz!%-d GC[T9JT<ĨԞbFR#vE$| `Pň(֌89HƵ۽>l R3-STWju`ʐd;.jQ'iwBaԍ9]J,H XFQ֕Wbe2>42Z B_N v ;IBI,Xwwx%%wcȇ%)H c*`H :}@8pGǸc9/_^ߧw=8|Swi!C/^S˭H^$S͆f*oj<7bQG fn7S?Jopyn@kPʓ#qs߇Ń y1 _P;W*7n)\`72K9S1Va2\\:s\%2?:7Vɝ?pN ]\¢Gszmo)ln1Y\(gmF޾}9GE-T;kbQt/'ǥǵNLSn^!sCnUݱʚ̺] 7+>+5# .% " ċP"rRhЅM @lb6f KeŨ,G7>>pB~@Lȼqp]P: h^ ?|f*#ktcnѐQPC PJx^-AaQ1Q+zoi Z@&8~q;GE0qҳJn :f׌R)^851{o?FzYide=ϲU?`tZm)i QO'*xnƫuFe\yWL]]!p~5+ke )S7oIkGkS`DI1~!4ҩ?JOxd(>I=;kAQmG}@2rmVq3;::"CY(MBˌ%'W+݇++ZJ։ mE1)촀:5sxQ~R4\SwV /ZQ)sPBEÀuv{«~=߮⣥l~w{x>\q2l=7sf/i ?w F"?۞q7q+=uyz`$C<5'nI'_;51aYra]E LtV2sk N֑(ysS3rXV'u%KNOlJ”{wB(zjbC sjCc( .V"p(W pL&ukkLoi.8霎#eu}O fr[.ߴ3~'nYfߪ>/}KNO=º`56-DMM".|.N+9v A0`vf$hW оooʾv_o)M>~ :\?Zܗu_rMM/߬>/|Nտa˪mRV3v>#09p?CY$A??SE*ptEӬKPO!X*@E"IE ).#Z]FѨ#D >9]( .%V Jnuy7CdeNABpV"f(OjqrҹqwGMikܨǎTUpY`HlvH!Œ%YM!^|4੭҅af WU;&YuVikpo2=<xR۪Djuj NcH Ɖղʻxs $ qkV!\ cwlI1guy].f&=δ^,r,r Hs[T7^$E)pJL&;</so_z6 "KNV` J@di:2;'r G"A{nicӠIoZ7 zѪ'VXD#  z\,)\Xhx7wlI.=#dw=Ue%H*&=;p6l)V WԦ PPEA- , G * xgq*Q 7"unf(zvc༭*f>z:Я&aZuYL!зWIlLswAiG}C(GzkTrp^DA?ՏQP)iq@wRW-|D-ffnQOt8=gn /n!(w8z(UJ#}c Ng3{޿~-Ƿ`\|W^m'ߓ!]˺ # ʌ4YP7MLS#&ڜ36̂‡F|cWnsaZs)C5%Enej`_@[&sqBwc~d5qn:&$W+دTl[B ֺpOIkx/GuAhn9<_=a3:'t.|ϻsγ>y4DcVi_ñF 0 udܒ;pi∷>z`4 NՔ*C|xsAĒjiJJZ=tP46UWa6X;냛T^ .znAiF2Tf 9.TC{ +ӨjeZv[,]7RoQPDaXPN=uS{D*n`DxC횵徺dǸA7?nn_&mnX|[;e_k5v)yc{.xU¿fgv9X˧A^qy 'GU CSȺs|Q-Z)DkM1hGW0x9pvY+$d9Iʸ0N8·~Sֺ19`ΒLύ_(!8ayB{Fz|:b86'X&vti.<[_1V,K,W7_ƿJ2-Aj[,t$ Ek @3Q 5 x{Gw<[gGݠNPrz@Yg&$8-hF҅dB;Ϲފ%v(1c;;PΏ]jT$JrLwpu}'zQGo˓ng:ܰ`iL0a߯aߙ.q_x_@˾l>%O=nWOͺ@sވFӓ' ,U곚QhodBqSŌ 7DC d%`FAn)u ' .Gī֫$2vׯmZG1__oՃrPbFbH`c.y01jXք5<&+;G2I 掷/k^⭟iKX7ٺ7w coв^<|=oՃ=ѵ"O@P/1sw&Lb1,EMǛ[_W Z ]%yoKz\o{F xD16AbRoyGuvHV&7Egkmf@f $l~p!rܘֳgF2}Aq'+ި]{svasrϊ[XGt|O+{[[WBy r; " }PU=yn$J"(4o0QE\)\sj˺TRW*#G4ֆ JZʘʆEMM!+V|m کy6ҽnpγPс.<ێɲyRΟ_epiC›؁K(pK\6?CIm.eD? ~<1|'qYzqvqZ&~ߘ @z"4@l6f%Fj_jc)qKyx; ܶ ;;_z (.C/Wwy$t W; 5a<1z(ƭᶝgY7bYRl.5Af6DkK>bScN2#sH)S@8C'W-@0и;?G?{[7AF:kek?3B|G20P- iWo4Dz=F_-$QLcV?[c?"f2QCc_Wg^{,D__`Rv4-/iSVpν6X6KUB$Nbשɐ$™bJXc V<>d|:ⱺDs`;K@Hڷ#!/g\7Jmc" __b3517;g'= #]D^Uh|Aεw]i_r:{jj=ѷӧQ^\h[>v}y|ŕpWWϭ/49t_#itydilٲ -I#ilI#F`@ `‘p1ך‘c?cqHs^F!$SU{^~I tʂ.b58sfӋEEK"<\鱃&e{ ad-϶8WQI=s^={Ho{~V{_9|/:rc]ju XOI"\(]^g[[Id+mK_+~-N;ϊ? g kvo@l 8I::.K^VhËRz;U7¡PC_n4Vk0~3#G m֪bUq8öpfXE.`gm ⏸H$RuSG)& !۸bя7y1 0FEVdQ;٬MQCJQr3-[-k٢.ruN,<坞6`NwtvKgg5w:$5d_zg*/N *-Y k2gܐk_St,hmHRHTT,v>|5R3eטɌ/2so!LNWLq&[cXLlff+q5-f>!GDɴԴDM.W6ͩ_P^3]}_fꐣԡvl."fl6Zmƨ8_c)kUJ(%M_QӪ[ѤwWwR)B?"g͚oYGeX޴dZ` ~{ o.BRdomh,2tvutvF;յJOIMuY[ITץFCUMMv :Qocȱ;>/)%ds _y;W+v,}oݵ5*۲촚y&hi o^9Ƅia4&fU!维yBW\.zB:LQ%y^iz1E Fϵ W={0^^؞d*AA;ۀ38Kɻv\QY씁@d0 ̴Tfvҷ:iGᒆ9].݉Aڳjl~WigͤAt>bj2R>R~Hy m~EZ]CCM76^UN%w'Sw诒Mky{nw-3mZiH2W]tɣdӚbS1?ð7vIm}EI!or"Z| l\Ŭhł}.b yb$[p; ? ڵBBR+ռҭ+TImڶYd}B$^pC_w7XpM.E'gjڥ-g $D9h!8lN}<{]+:zUP'C渵ߩѧ:*>'W NQw̖D˺y-F.k,rmM{UdPY ]9~ًv=wlg/="z Җƶ2њ`6C~_{7q޼%bxm"6CF= ~VH'/ij 7exFNT IEjAPdFbSۣfO$TEy>vUU5bmrQ^FvVI{.Ga BNWr#hCxٖn3NAu*j$!N[j?xON%| $\Lj!K- uDž'hU2GzNa.ME8ݱ1Po_ZP|{_.K-B}~pm}kuY?Y/ s78+W}s7g=xe:GtT:x9&o;??s|4K&SDD .(AzAۂ \`FK~ۣh.\y5K5= y]!h47_vQ,*EDʿ'YD1?QOeĽ0?v4Hӛlي JBJA[DDkDDQS&IS.p׹FW2BPUvEkH٣'xEXGZ_1D|1RP#HHg1D--@iMMiEx%vab Q|< GɨHh̯;7Z05ƢZyʩ(rj ʈ#D%ml1v `k|S`L͸w97d,B>pÇibr졃E~vʤ;` p~cGa[lڞ-ILMTMQiB6<`\?im {/=/5?Xtf^x fn!sAX6wt6-Fmv뙡 g|s&[%}: _QDy"1ms"y e{!Ӻ2o#،XbGq|S`' Z[l<#u *^~t:.w`bPw|=bzUC WՓ-JHKQgֿuSd|\K>~tMK\ol^_5f @e{>X¹3W[5ØBq.!ۜC3$Zܠ/WYpiim4WzQډhgrnX̄S{ 3} m<3}Hee,7=G49bTBp5T*"r2|v8矧CqEدد,թE;tm60jif^>۽R{tX`›ܭ?A&3R+G֣r6epb%JB YG!?KTR+%G۝"Y+3e6o̡8d#SrØ^ !8k ^t\ ߈P ͥ2_BMD8kPc\^#OJ.Fx 듥DR=2gFd'P)j:$:Q*N,Yg!1(uHbKaٌ fK/$>M:Rcb_,#Gj\ַR/KhlTJK]J #\%@Gn~Y.R&!EƑ `=Rr+& ^5*GFJgЗhJ>aO0ÿ;Ӛ^OQT;QOڏ3͠u?T)*XB/R 5$hV*s c#f 0Jji!pS![_'f,W#(3[i,j^쨁v2zZ"z K遬eLHZ֍S8CE\3 [Fs2M0!ӑqh%dv,Y=ٲrK`Q+^x,"Lȷ!ĔΕ[8Ei 3\&Pv~25ӓS~nʚQycwl.b'L p2'*N$hH2u`Smi e U/)MXY-Q3h+#Svd5"W;Cdq4Żŕqqqr$(3MbDrDұ!W$Y̘hյ!׈s剁<>OmePL$>1kc<5P״IJʼnTr,ٟ._NϹ-g\V,^)_#Lñz1USX:7J99>Tc5K\ԵsEKKu_b8g_RkW&t "GSQ@U![I׈k `lc\LC0MRq1d)/6TPVr I& T> O*3PHNa/W G~VV|6'x:Ta0VHf<&mÙHWEb47yzorlu4ȑ:ro56 > GQG8JT jZLi-mgѵA=^A??ON3(HSYK"}'}MHB| p(@Ki5V:ΦFi'O/Wfz|7?WOߢ4Q?-4D(^Ko?tCOЧs2? }$r럭 WG=TAZFh Mt ]IoKrz.>[]zN;A_w$}JOߠ!g.=B?O JԷRq Mmju9-K/|LF?y`g,-^m~%Jb"$HjH 9_˧ GM ANř80´bnk OY,=q b%s)'C+L WE[s7y\8c3p.C@ zIz-Y/ ųPڄ#XjXsv0nw:w6hAԦqK+ktAx4I3 8nv@xb` sY t=N`a׳v!B?[o^ \U9S|)>H1% c #XB6bXyXQ̹s0XVbUH'F4ޛ S#mt̹tX9kAS0MWMNo3@G(V鵰p<>]t! 9BFAXKc1!Ə'S&ϥ0\ɻ0|'0|J?]ȎmC{*P1J#jڕzւhO~1 zwM`O 6.+`]EOlCt$X-aFa4fzzoz+@Zn-;``E<^%q`Mz?='h)~*0~4}xO~ 6d~)ZZi@[4dhcOJ!,Zp3/J@ ^< GCEɬb s-@ -t1`@' a' yU*AGS;}Krl-I =. *ȕlq`+,sRB@p ~ 3PVyPxPRa B+}0.aXN&nj73/+ P~]HSr\rv7J01P#hfr%Xyfre9t.Xd9_~#GϠz&J}7pzNqN^zYNȕ;`إLwmʤI>_} `2 "u_#$AS) !K81@fM6cVReh-}?zjFBǾmS-**Ax?1@!FPwRB?1@1C[aB_`3H`9q" 5BuN\- z+Prl&+B[[K^򱞨m[BT'S;B*J"-<-- UĸY';5;+q|Ύ8`~՟/{Iqt4p-C[hh 7gn~ڲ}mܿSH'::sȨU-ruΐEi \bu :vCg;To"6$Ȭ-V'1sNԷ6¡t.\Qom7+K6@Be%%&_1$!?QRe`,$vH"VDTM jKU+ֵu-֢SQ{L{3}{oX r ԰n0XԟUQr*EOCp 9Ї-g/Zb ӓVJ{h2(\J*.^yHf->b5]X`h\ire'*\ Ttڷ-mY_&. Jr6;F7D!.H籜#Tض%ύ"=[o^1),D؜:594rˑqAֱ6q~X{SϞm3*x%w{i~"7UʠtE?n $3$ain(i:="0Uꇾi~ճRJ!>.uE6]@!rFAfQ)"& 1\~Oo[H=LraPz{q2מl*4)t󶦔%̲TzvQ\Ƈ4y0;, bs0E9 J>hi`M7h &L^yA m'*f [Yכ.qGON箎_Sue`0܄+o{TH=!fqlŽ؍K|9c oMjY5[x}tlK]=5orwEcKj@| Fn ɔI"#ut=I]-c5ƪ-- L>D$32}N"WD}.Q[z{r&zF6X??z,db-E)m\^඘,EVlxư=3]qzme1 ;yە|8fw}PQznۇ<+]!fo+ erVSb,I<_8ryK6'N;}/=v.y}ǐ_}99ǵ'x1T"ѲcUp)3ң]"z.3G)a}^U2u-,6=B7,PތdZ1Wôg-P3K.O#"^7+v!܋lhv3mieIenZkmޱջhs"w8} i3Lڼm|M*6]nUS/Ox"3|޺ŝ> stream x| XǕpUw\43 `A!1bIuZ#ƺbي9Mb;3[رheKiobdv|1d?M>wݯ^zwÙ0B7׵7-}Ssw dYZW|:Ol Br{zi{g!y?Z/Z{{Bʨok˥5C=*x_SaƭzAH C; 0^mܲoNk@oVK6AEMrPشux bG5y`6{}˖}.UBH޽;$(NBݵw&12Csh/Jw؁[~%l }.";̜{uڪ7Mw;I;7+> ~7f)n)SJ kR^Au`bQ|LF,W<$H.[zd6aeC!jNniw x}B^^TI>&ryJܗQ?oݗ%/_ŗHtur1vr܀ZEhٍ1tLm^`Q'@e?:?`W#ׄΰqMt>@O&<:#y .+:Lm̠Qn_`lsi7֏[ eTM ߁g\.KhP҈pm(j`mOܟNWKA &{ا!hQ-ZV6ԇ ڎ}]css"k06hhϽs‰\_^G] P҂ n7p[7չbUkؽiS)ken:T(8` 0Y$Wac?(CVLZQZA3u.cuh}/]i}E|]l_XAX_W@m~xtkM3][+H=7j7s /P#BمA!/czH3S'iOwT=MzWnhy]1۳oyLuu:"P^Qs~!‘35T #-f>W__GrO Z|8r^>W?@E(Jk(Hc(/GJ.eMG@DrG0v6J5UРs"hM+(XOm#ibIF;a.$ hb'a?ʚMZ[5D%""]C91gc@BdhC?GyPkFtM7#ڢt\SD(Ԃ6 RZ/6^ܔhvMiB "H,6V\qo]:WtB=* oT)kmQ~2T2j59xjx*|.ڻ#t0LuDa0SS=m .B!\@(AANBVVryhKȄϣ6~/4$ _诂,YNJ VF$Os  186N__[͑__r;P8[w ͝H65N4`nӷG ## =<(t ERáUα@׀ss+{f׳/wQ<}{savcgs> D]l;` (P_ 1uPY[wgwS*rJ:'Om@ө (;ei'N&ӜpRh,֞ŧ}A؅aE@NIL?AϝhQ[sL޺:bvrc)ՑsBv,$QZMs,=ӓVmAuoȗ85r&ûDmy A Gq쉨up I*lN~%qg?CB`p] \uh? ?:JG}v9.oC7##)AS苠 Z-%-J}j `HTeIUUpľŋ=6[|d9}OMf|fCrN+OςLjk뇍]j{bU7̤1I:##SNW^I=${^uVj||jEGojgono2ثmطF+-g ~h$tskAIyICY(ڞaۓlv>1JZ7WY%E%%@)ux2lg{06_ KwNp]}cwu Zj>z/ sMe6c1Oӗ6Wl}ӹ_Vbg͖S\nVk>c>z2:J2dga JKSS:SXR\)# @'qn¤ O"L֖^Ym6$ȕ ffԲE)P~rSN-<Yq- dLJ$ML[ B@G@pjy;ﰗ/<C8 c\@ҹ1-R4竡 YA ma$\ɑ+ȀdK9UOPc ,`c3|3Ļ?f$5^> |~v2`=Rttƣ Fܠ]JR5Q%RGJ؞V*]2-ٍ] YԮT+ɢҍqQG8pw̮SuI/<:):7%2JrBCkh2I*Jx_P4ӇlqࠒDhu`~̙BޒMǽJaV8K9%8O^tT;3Cy)s!.gQoA,fAp6[ū58MR@FB-: oul\\^.<$Fњ.FPA[_Yq_[0Y)ʓ f1p)65̔Uh@8zj<0iB6Y'%Vojjj]..22őPƛucm'E֬--W.Zrw'65}rۑըF!Q[Z2P2 ֮VvuLL@4lM% 85eT,XbZȜί2؄CSxg EE=M=AwS2wvE_R*o ,~v+,/ua3nTjtM.~-.OD?N>=8з X- yxl鷍i،Q?'{߯Վj`˅4LK7k b_ }n]#ym|*h3>e+%wdzWZOچ=..n?[ŸQw}M-SnmlUQYg\qޑH F[ hUA9sR~/llABebd=a"'`Ǽ1.~<() 'dpkc ;*(SoADn!K_/F.vrzzTS[C=9Dա7ؚ)F*eqȉc n K~DIt/ƆB9PJKQҀ0`7Dl$003Ϛa{ _/(x@g`ep&vf8zKBMC ɈJƲbItgqZ &x#eg3oqw–C 0UQŀ}F=+tigI&v87%cR =s/ W6+5JTDR0y+UIXgttg{F!O<гbw),•5[4S㦃S̋7\| s'} %QgӠRYJ8Y@fL[v[h⻡;ouuMK6lvuuud9WՎ|q0cժa \w̚ ;GɵewZ(;Jf{k,ު!ݩv 1U:CJvc$uF67w_?˾l%47G-o|b @R\$}cJXμ|B6~X?4H_9IaM7[{s(m6@^j`oEQ*{uB`ݿ3&:_m=էږw5"\P* L)W0K&=C*ͤl:5U6jxIquu|Wx=İiUSy;km6!Yț(LM2'tpBHktDn7Y=ŇS[+/Ѽ2eNR6yRqz1$&-xCA-qe=+LsjǕ+sݡ`܂祪ʲh?I %Iddh_`vg^SM%%Q t s P y&+oߏ[&wE>3q[a$Pŵ@g>&3H0cދgqOXM AAIa$*Y! sf껺&LꊛӸ=+J+yW>qCܯ BU Z\@ lJmk2'M-(5TOJo`ۅyUUJ`'\,g}09aʒ6%IT6NC Bf +dqDҾ[n+-^kGc[ҥY|opp$n.F!mJOI+m6<=,F(/p66dI/JrVU+̵;WaמŅɕSr4.I[[L3c5Ŕb*iKJ4FFa/;d#j'T 3MՠAaL󴰍- 67GGO\yyL-3Lg ? dL(%FEr( Em( A>wމ #8kTQ _F8f?vqU~y9Fz{2kk)?$8JJ/)y9 0YQe8Q+bYՅ?̙t[,8Ϩ~Kƭ)<N:홿GGGIXG~ Z>y'#UKנhi>'E&tdp[p??Ciqz2(k&K$Z"0%~=WƼ&2Ka)W ͶeEXRe"dRUNBܓ"f~+Evt7qa fؗJUla;EX",",C(>)rdR( QEXkR!2'![xrH5pX9g,Xг z`A,Y= g,Ji,Xг z~P!a>] >mGCpm@gۡfB ]6-h .u) swý~]%=H)鷍bvo:cm.A]>L ؤ1Yd{wPD&?4->;(sb*V AADUR$& j:ejS1muVm޹ms-{ѢZ~ D%ӷ-痙syٙA쯑kc9kdRʃ֪ϕo}WܫE(2h8zMeђb[tY^ҵJ z]qЖ\?dT/Y&:CemWʲIgun uu*559Uxc9^YkՍxcuUm2EъhSš&]72&֊xECEx6ڸ!W-Gk袺ъk-⨨袚ڪ&Jo,^kU7ȒQuEMB6.9њ*ʑ:WqeqrZCًE1Kbz!TSi;+ 1m9>^{x&W56 G^kOּrtxC#]zŝ}Vs}ZRAu**K+DĞ^_صWVIBXb",k5zUE풊ź^?mĖҥ=.]Xt"j_:qQ]82V4/u־Jk뚢K+ZaF+պuvu(K}C]eB]eqŽeY-XXYdfeuc} 77TsBŸўjkZcEK'Tm~' O_g)7Y4Ϩ[X9ֿ2&V>z^?Tc?TT՟՟XAX"?WKKwݬEjkN[zJK~klELLV"s"?Me\|zYPP_LkQ?9碨1;~J5|R~V9< jeQetGX6@g"׎b?ha}cr{;W/^'.o{Uj_]].(Ӓ?W=_~,[BqwQdlW wpkô m`dFd6$5 QYc}[cn5i/:~?ZzT|H|(o>i9c=Oj&?9ym swg|8om=2Kl~SxJrK]l/~I9)?:p|C'ꓷLMN}si-~錱33^l@Ymُz~s9gwχ3Nj3/~p5\ղ?w?igO3S3Lϳ3޵@t-x|شY3.[./_>iOМ{>;>u58d^m+Y0t؍T$+XQ5jlW[ꫪfd%߫tAmźuV_d邥 =U׽^~pz{?t-?Ӡ4\Ѡ7$hx=G5h)7_dilk^z\}&i}sC?޼yeŶZhKiKDzӗ],mYѰ{V>jGorӤ,7^͕˒˒7`uTˊ=boزտ^s͚5wy`v ]wֺuuN J]Zz(ݺGnz7sug~mvg]CmOkm_f>dEٰvw̹qL3zuw~yCɝ_d6w:fuY:j:;n츻x㩎ulxcG;5>6~pGm8ge2 1'gO'rR+'9eˡʰ`r*7DH0 F1tp Ɓ3Gx0i`:5˹Si0| `!uqTԵ$^ZP44ѶfVڸ+*ڛ7:$0SRK@ ߗV`J $Mk#62ӂ}4lM{ikhglO d=7005Hiӂj9nFЮ5q_[ͬ]\cchqρA'e<Ķ/0`z}mq?x7Y>gؾ%Ҷ"fCA,2`b`:k'04%)<^<^<^<^<^]]]]]dbw=Ae[e[e[e[e[FA߫'SrMk\S\U|s\*>Wh@+XVp`H_a=ҡ=#=#+$.c[@UZC96fy0˃Y"J}^}A0ԨO=|ejR^襉^襉^襉^襉^I!I,[|˔*jIS)Q#(p ƀ`, RGǕ 꿁Ybe,˹ΫN{tڣK+bA6a&m&\1 WLbX6eX6eX6eX6eX6eX6eX6eSbl/ڻ=~.e _ `oomK ~^PnG.b}`I}x=x{{ރ=x{{ރཧV^j@ eāOA8Hi Y萁萁e1mɡ-b-ڒSK}I- ﲾEV 'wN J $a{v?>1ׯ D̀~^ Rru(IOu,cy˧|˧|X^:ױz?@^^^`@ @ @S;͍,&{Yk`2V᭤#k:3ωص\ Rx.rx.rx.rx.I/1^b2*P>j8 FQ403>UWY9菂ΡV1j6>fĨMĨMĨMĨMĨMڔRRj#o˓򨎅XXX(X(X(X(X(X(X(X(X(X(X(X(X(X(X(X踎Ett\Gut\Gut\Gut\Gut\Gut|4:> XXXp‘>v%l,:aT7q?BwPM[QAviOPrp U+=i쑦>ADUnO^ i#_j`wg+p@tΑ} lNpҀ4' 8iINpr.:h:h:h:h!Qdz蠇z蠇z蠇z蠇z(Q5Z 6;wl{}LS1A _/ | <6sΣ ||cq5Ȁ'SVԒԒԒ*?fO  ?/@7x^>/%LuEï$J¯$J¯$J¯$JW$+I$}E"I_H PV% $d&  [=UĽAĽAĽAĽAĽA}OYd&IfaYd&IfaYx.#ǻo9ޕE$08L2$08L2$08L5N*T `VU n7;>_2Q1bU2ra&*F/*v%L"^u* V2ȧ>CX,_Vu=z :y <c.IF$K%gYAU_e;Z-{, E!(DpQȢ. E!\"B(B8(DpP< a& a& a& a& a& a& E!(DȢY"BdQ, E!(DȢY"BdQ, E!(B(BdQ, E!(DȢY"BdQ, E!\E!\"BQ< G!(B(B(B(B(B(B8(B8C!"BQ< 1x1̣y"BQON?ɣy"ZQwpN8{wq o ]+)zG޻ĽZ%!wy`.X VU\d%\MT# F F$Fri;[<4zQ.-wNPE*"ӈ=MiSS`@󱞏|c=Xz>󱞏|c=Xz>Vwo+BђǽÔ[rraS zp7۟f -QVpR%|8Yps ~ (G\υ} ا'}zb0~'''F3n4$/V/‹;1{]?Uab.>` /5jGӜ&뿕:ۜ6^͢ lȞC*2H>Uq'˧5*"A@k+sW@- Բ@- yN:8p"(DD(M(ˑ`8 c 0=~v^RIKl2&iMlZe*Vd*6Mbd$6MFbd$6MFbd$6-![h2۳)}R3X+W}R$PZ(ch ̮I r{^/eԝ|O2'"7de0*w.XSOI>%Oi9*giiiii$%< w#IΩfÁٽ2Zrh=(C֬5ҩ>"H;=9-*AeO$ҔRKI.%RKI.%RKI]EI鰤}*PM J(PB P%(@ J1 %a KPyv>+SO[O ا>5O}jScvwQkZڧ>O}jSkZ&➞dߞPUD:%(vb(vN($;-2-SCfhe&ϋAci1p9#:{b;G9Q~}9O<[1wP}Z7"aWdT$<'9=WػO>A[<8 u=,xLo**cX`X`X`X`X`Xxϙg4Y3GߐHe?X`㐏+'3b$~;{rdw6Mcd8v4>usǏ"}[GLEœV\M RIlm:hC'3VItjis~ʶmbЮurȱCA{ `"<<^>m>D>an}{1yE|ʧ[:U\%UNΓLwq~?Ae/xƋ6(eԢZE\='HBq]s9r\oЏO }JT\OGA x]XGf8om9j9/pf=𾭉~|<20+8ʹCYƊ (HK(%X3Ie!J@艚&k-`_񦸫V2.+T$16#X.~ˑUQUiFp-&Ũ5$2_.09 $,c'-ބ`jnm3y SAR&7 2tui߻YgQa5<aytrdY(9Qdlxvy | d%[hb)% FQ403Ĝhn bQ Zپ+AYLkk#hHֹVMbUXĢFݍ߇u:9!0ۅUeJb1,֎RXZ2*|ԑFlhsE-jPkZ+r%v0gmΡvFodS;~M^4i;Ooo@l}㉲P:<1ow'wM]~9?>((0"#2/s2!/s2!/s2!/s929bC.搋9bC.搋u;[m; Cv?] P&gG0wsl'|7gǘ +]fWg&a]¾YZ%Xֲlb;zI:ܫq"b]^ovPgٖ\g?fyS=xR|εuߠ ~do~ϒC=b]h9R&9M1iu=ouO.=fߥlX-#`LIb0I &$1$`-u2V2CLb,+u9G&>p/ږoY7iIFwe?cbȱʤp0&0k{L'ίcri}(cr,VʱX9+bXcr,6;EwEG=Yl{Y?<_xlGA2 H Fi4Q-@ @ @ @ @ 8}D 1'9>?LVsP 稌 . S?i0| *H؄Ca`L<a`*TrrO[*H}'UDXi_˶WU` eA##v[aj9,Mh"S3r(a\ >(@>Lg$a[T@E XÀ:(GA->Kհ##X b0< W9;->iO}|B+T:lc{?rT[[r?[{owSGﯽ2;򯭻8,ܿPz|#`a?q~(UYL ,xa<0tO:'As6ld'-y78sDș\Jm$Np:8;3w)u%XagF0XF$e³%8{w+  ⭚{^6sc|\GжmYt8ުev.73`2o'4 ,l!RsX rX w$RG"oX[w +_}H;ڔyʆw2dR>T/!5?.xޛr dn2[Aqτ<ޟgnt,/ǓW:c,'wTob)r{;ϟ a\_ ̽ssΜ9g̬z.VVڐ~.JARHSs\L_>-ȭU뉸/@7!14c?"B1vZy|p?/|p<3WQ& {c_}EDIhv?rz6rA!=D=E\gI|P55sA|P2˕3Z{u =|IΨoW@7P;J @i t& > #ѮB1xY82g3% Һ'NRATu&"up_rʳvEvפ)Nw+5u$VZLjM{a9_\W;!EM1F -K(깚WD5鍚F}P4c("=G?T|Զ jڷ}CכbPY; z+9%+^Dɖ:;bP9E݁RP;Nzi: TQ=sZy=^Xg!E1-b({*j.Ơ\;{hJռtluhQXAi'Qf;ߜn§ʙ'*L Q<_g=Bצ_a˱&;PrJC9()GzOG%W#}Fna*lH9g1HZ%\EIY E ok5pfTGwa1aaUd > RK S `3r+_pY2 }Ul cTV>mG{֣z~ L97j߅iP^6NJp|6ͫϞD75z9-fobȡ)) #AL"Crf@JسQB@u{>2l7}etfAћQON7 p}p-`l";9ҫ< GF+v%e\Ex p/ro!q6ccg>v)h h)Bf؇[`66l=׎'u6:scwE[U^a5@uWaM@-c{^;@XP4A9_=%ȯr/^hgەz(-@ݫ܇(!4Mz9!aC&J 2!Qzu\j1}5r^uo142^c(]J%Z r lKYXuLH>ݒ#!K:iu:4izZAO@czZZ^렧u:rzZ AO렧u:&zZ=t:ȬAOG@O렧upiA3G(/T2z9z9W;y:+Ft)rЫХ!B$g#Gj1Bg1*f V/UyL31t);-.eHA АFPeLgBdC98QM͇|( k'b7 :)ڀ,Y=\EJMe+MA Mw } #b%j\}=#Β\HU9WW.gu+Gei}jg{ig9Bz| TG@1bIՑ4]F4t^FBlG]@3@&x*Oڳs=e6k&Bsuy Oiff%YoT\pDDN7; 9+\ Q5E.שY)ruT I [t%7ES |IOҐ_$KYM ʹjS Es_!ۋ5Œ;8k i;%a? "[YiCbpH*bi\DxI(+aF/[.J.P-pP6cꗖՠ~}z;[RXg7 gI=y4? ymB^@BW h_!V"BQo\}VGGP Qr(RSxVJjKSySeou}r6YmiKY꼠fYHb;@6r-(}ζ/:Q锭#% 6$XԪ8e^ܳܫ[馶%ZD˂/`jʿ"|9_aB߃#pZ*CWaEh_O HU\6KTmU.I=3I7>1˥@MY,g:` hL#)rGOt4o(Zäwׅ8:}iŗhe+\_^>E-dzTH.Ti[G_C^|bnRgB˴3cbAUs͟ˉ`;U^/;,k8ǗG*^E Bh(r;2U#oceWGjx uw>H7q'Wf.ܛ'ȯP=Mew12pRH5q%q׌$/$ӛ'FƑ$'I"y%RJNVUd2Yiy>r&Qr\$5RB>"*jGaL]H>JkE)9A[P?r2ACH @'4FGt&M i]E)7wi}nM mFߗ^F}ss ssÃէk@G}5chւcX֍Nbl fdEʦt%Ƣ*ehK` i[–ӭMnckZ![ӏF.Ŷ4e/Cv/G~veqzd'iV3{VD#.˴]eevݡW=sBos9}r[sWƫ3kxeV1oΪpފ9#s<޼7<|$j<(x>y(k̿'Ys^O/ m66;.T>DGj!# $~ą+RԕIlG@52i4ʻĆ&*iJZA;2 EKFA'g‚ $ĽH~QE=;nHoK<N iK:.'pԢ!y!5WbGiA^!+EbIύ%a$DŇ1J.qaQZ+~HI\~$~,0gۄMWĞ7iOwįJ#xNj%* I$J\S{Mh&FWbExC% [HVWBfjS W%VKJh鯆pZ2H25WʱwQJhRWvjxYj_ ϣ<[drU$r-]$zw5ܗָ(-(z(bz&_(4g=ͦٸP0p#=@,i>'V8=NIz4BҳĖFvJD ?|_Dd'IH|w$a19%jO53yZPK,Hʺdκփ ^7c,\6 %6|Vdӣٷ[r~"wmv܃%wgAk g R#̒Y3[Xf]Y5V-2 JܹAFb kf, bV ?lO`;XU%ąw.K97 2oJhֆ:ĂV='[X+֚gol:M`  <'$fS |QQgM|3·wy&ϬDKч|SJkx/ŭ?AyYf|3ؓ~<A|D'| |*gY|6yuymsOSUNaۣ'm‡ X6) uoꏷ㭑5>cyx4<>E=xދB}xޏC<QzBC>OE3P{>(=UXz҆zB}Q"C`bΗ&; \<%/-_hlH ?l)]XS/ZHmAߑ1XSZ?eL]jsjКwkOu0գ|hMb 7o_n›f9o%oſϏ? '[;e|z$ z$ʾPjER&Qdν {b#瞓tU٨gCJӲP4y0Q*H@K1~,%iCÂAS;>oI&Hб,g_aĨ 9Ik3Q};;E$NA6MwxiA8Qo93yv/G(6Syl>hj![(Gz/H?|D8pc*EN2';[E7"&%t)]F&]AߢoTFߡk:ON ,m?)gYHK3dnRpU{2\N0|t#_ `$n^J L+tp KQv9O҄hH{ Sk\/E%2ȶ=GhI!,ZkHO4Y",?(ӻ"*}{SͪJE}=t,#Q>R_;M+掜ն$P+Vp#1j1Dia㱹D&x&-7̢_p[ú;_UWX&>QƜZ}!%wuݪq(*DJaVnlTwj7qcf?"<^#46ܷUD[7!4zFDTTrC)3u4"έ#ܲ.a!%J^Vx.&} YXcu652v>ϥsag7x2s12ܛ2lxPCsh=͢-t_iɐcMj;ri/ Y9s1mytë]`mg]K:)mK7^iԋyk yuF A6R&*cus_q9ak#wZl&WWT␘mLkMݝ̾>mΣ냛k|ڭf(=T (Pwsd˯b z8/^0UG4 d/LC4BL$Q"uFm|OX~eYN[(xVwf'jO>f=Ǐh0>ˁZSǧ{}8ח']YP#+'Ώ3hbvny'"%#Wb;ek',֯KsdmygnڇW4ǀvV333"Tz黫#aօ}9e]毖yu/Rk='m}hp'7?fs 5w[ݘR%$ZB',Ov9AXɅn5m;71"&Oz6 kۡC;aq11=bb[x(/W{IL2VSTypLֳt픘l:j4Tkjҡ{ӝM6y-]= +B 83~wz"Nu` ?DSLZnJ':ȳh_+]گiIm%..tڽ.jX6 ㉝ q׼!#-7i{7WyzZ cUw>yo4j[SI}2⭐vZ7I6$ qN'̴;.>>{/.7wyt{オ7i$lZ$$-p}"fD܆A xxtS/qV_ۛr7f_>ކ.wDŽm`w+;^ֈ-r2p:uӺqr^oJαK]ՌD.<zÄOm7//<=k2cϹv\rɀV aiv^R';=4qIR W`/mצoaCbR O nݰ?8!Άupi1M5}Q^L?\3h+ͨmdb4>52X:kIl&g]ߘw3 7>HClNkpֿ9}z=1UkQMek4!!4A*7$N" CޤNhAIHu(#i2Q *A" "ё* A`T,sAޯYo|u>76\4%v 8 L4Zr5}U'SмO`)N-iY^QH+Z=7-5|'Mw^g<⊤rCcva\`)HR*sbSgfy$| !1+CYOþzF|6 `E^+8Y,T*zcN_xR ЮkC4Y/5r\>~PѱjI.q&%iZݮqn:C;8#…_O;Tǥ]=i(ѕݟOho/#~.^4ֈDꬳ72l]+Wr6p6.\z)%U0N!^Xob.zW*ݥK.'*Pco"vM!P",q.t͑$Hf2඼m=O"ӏ\Fଫ6t^HehlnAgW2VO6}!@GsDݴ3 s,h/3t-UA ̋޵CUrtG9goSV)&nWgV0.40<%1ܽbSɌ3bIe^wΰeFǻ;@dDkɢIcđ湾y M*9:)i=$Zh'P^i{+>0%SZuELr*= zP BOJ|`}lN*Fzu -;S~y}'IDfO$+J3>!3FhTo̞`Qy8 e_OO4 I?|GB\` UV ' h_(O<󺡡KzAz82or8LbOT/^Rf8qH%j%5Qsڷcɑ&騅ownm2C$5׏1!g7[B,k_bqK yCKs/Z^I'X s_avd3i/C09 B/lmUD]'L}p6EU> stream x]j >EB`٥Cд`t ;ڰ(>G^[|Na.q%08)p潫M~[2]h,.68\\I7rH>LpkJ?8cȠDۂÑjfYcXy;27d, Fq֔b*T9wco" endstream endobj 6464 0 obj <> stream x xTչޓ{DE !HH!X7 ͐L3;@BbcN-ZTMk71ڜuS/XT{z[kOb@li9{^LvI(p٥wVBIJu]ZZV~bq~u+6<>BW+-?tæ]k{s7sQ!h 1y!UMcfuj_6Q!~NSvrvMCkxJOSu{~~Bʅ\_\KEY8^ܙ&D MUq?-Bvos%F{ѽs?Pnoc/}^O_b"K߶]xe kZ"O)wj] ]K~/okOiF} YxQBdb{Q5EHK'yS'Zg&;t=BD|agk!>}!ėU'/+T(NNNNNNN|)[ŭ???q$09񦱑3Jz  ;|q#pY׏{KIцN|w\Owj꣧}3?ȑK=^sUWnشqukkVle+_RrE.`K[hNӝ?#{ܘ̌Ԕ$2g˰fΕ+s ePU~|pf-KhY}BeHK-X&)4ʜ\ֶ|YiXWU9i:ɴiaԖ2ʬeR;¹›1PȤIɚf^>l]Z2Z4wڴJU'VV˨sG ;[ludyUMvkԚZKZ2Ig׏ YN䝿:ƝI~GȢ\∙>\̍i\n.[9 51QR\Pi.y+goW_&]UJmͱn5b} 1õVNgimVI)wbeGbu *b\n7>PnIf_a WU.T(t}9UY~ĩu;RulRDFƊtM_Z^yd:*0PvUZY)O y"{ZIjD{$UΫ5҆4Qխuu:uIv]>oT*w_j_*5!;t:C饷h7/k?0?xu}M7.λakoJnL*}}־Kڻg7/oyw-צ]vE6}\3|j6y򼠊ʛa'oWS-;X7&ka^¤MY `RlMc/gmchRafmmr,79)BG6n((Xݝ&֯^iiV/YJ逑[8i* s)W[S6Tu֬jT?M_f}#W=Xt[]L3FSiL^kdrF-H)+ګnUQoĪmVvs~Ν_8 z>la{7iUG9JV]~ne j)kyG,o[QͣYl/sd;=jo~Uuu[xNyTQ)G,,Y%gQ/aץc?7"睔Ĝ QWGT٦ftZ='ZwE݇=:593Wʼn4ZAg-ʷ?EW%ֱ OɈw_Qj`2VVDg]zFMبYbjz=ٝEJWLQm(C^u ]Vڪ`6\C ŇW|jmFJDjݵ3n]"s"zublX)O=T%Oru 4f)nS|?=#ok͠kQ+b߬UN*sRhǮԶ8zpb4'Om-ݮVVoxW||j6\UH'v>l̟;wqy]Us4V45f]ScqIC~ov[ Fxu5^a65u۽hijh1Mo3FQy*h^zX5QԼo6;ZCNШnhQXcT0ȸ̔C7xk6x Ujjv7nos3w]hp700LxMw]Y7[Z]׺}bmM̈3Fh[LyKKj܍~qsk5Xr -~&[„F԰T9c:yEs}hl/ݲ766wuF2+XgrmP PLMjFYbmFwufOiرhpEUMۊYtSMWZ\eV75QM?X5+ZmVids7|muV5Mk.P'&OK)'vԽ$<6 =u~_HhPE+|Wd j̬exm7}UpH5HC 6jteD_ ̬cӻMQ=M;ܣen{~M-ńz|',TQVmy:O>N| :GobH8&~B,phiߤ|TP~\n =ړҾM;Ӕ=C{ZվO)kRciQG j?<=OߴSK/j/R~I{˔~@? zNC|c ñkJb /vjQ 4{f(኶ark,ۿKɟ 1iՆ"i.%LU*_*ߪjo}Ujq+k{ou66qVAY'ӭU+H7@2GMFv,s,xÐ'5<*͓^ޗ͸)ѱ 5g\uơǟ=NLy&塏nie'lYmlGj1vCS;#96IIIS[z̝&͚>kYYYس~hvo$L-XRGˏnlC?&gN-^8[up=ńPUl&͉'YӋh[TTt葢gύ͛4y;:]P0dGF;mn輣 W-()r+zial^dQEl;Hi좟-V{VpxТuEu+=_w>~qv1gowݧ{̆%56=k>19ԲƋZ5oڰa 㥩[n߶cՎ[lZ޺Pζ~{WϮv(X{I@;^<\tx?h=/읹|ƽ-7{_ k7Nq=fMYfT~SM?p־?n9`9wx)ڧo_^ζ}sU;lSIH["ęǃ 8'nxqR<(r=br m;N.\z`OGi`rć`1C%S0 t!<>LJCx|!=Cx{o!= .<օǺXcxua=^?x40}G<ڠ2^}W_ƫAīAhn[VCbv@A/;){8b^7B9>[ڼjoRǷ9Gsh&xxciIpW;dZ cʙA1黓xE[E[E[E[E[DKiYk@n< aLO>5Ԋ\5|].\>5|s k\s`'hm`׃-va%aa {XNJz ƃ -%ާ)i\A>>fY`vC+bV&jR5jd=&1ett"CvJJ"CrX!b9D,"CrX!Kf9p ,p< x| ^ O_%x^/__W{'>3qb= 療,0LM~[>c>c>c>c>c>c>c>c>c>A=}_@퉃A`88 - CAt(Ѡ:DghLmC[hKC[וԣ-Qt% pB0(yJcu^Ox8wΉSKx cosy-)v`4wqdOZx&7-,oay [X&7x `YX֟SB<)S '@ O)<R,8]P" BxS><S= 5=xցZ^ >k}x-"'DGP(Ty |0| |#YO9뙕Y f?q1q1q1q1q1)b6EEOO֏Q0Fq(N 2aT&ʄQ0*Fe¨L 2aT&ʄQ0*Fe¨L 2aT&ʄQ0*Fe¨L 2aT&ʄQ0*FEhEL4DM4DM4DM4DM4DM4|:> X0 fbL8U:8:OecYQDŅwq'o0[mGx7g+de b=,V?c"(#cDvLѠҿs;qǠx.Ѹ(UqiLNdNdNdNdNf8Qt0F(:E QQF ha-Q0F(ZE haT܈Gvp3 >yp2E|~_ _,p< x| t'@x<+V\On!O30?1Kx^W w xw @ p,p,p,p,"""""""" pBv=B !IG9~Ab?H $~~=E"Df"Y,Bd!2ECo 9j4#D"q8Bd!2G#D"i^V j@-;N .vA{>*ϞAtU^B\īɳ+HѰ+Q"^ q!b6L̚<ĭ*H<Ӊ'~Ûc=XJoyCh7c/hK,F!!!!!!!!!9rb%~z^⧗^⧗%~"O?'{z$\\\vke ^kZxxxxxxxQxQxUW{Fށ^[\ UWkʼJ>g{|7noQ,)#C0 &v.`bL삉]0 &v.;QD`ND`LD`KlllllllllIsb"x ~~ ^12Q# QUo<aC6 0lÆ0lÆ0lÆ0lÆ0lÆ l†(l†(l†(l†(l†ǰ!! ! ! ! ! a6 !0`CX 3>`@ APj"v=]Olv=]Olv=]OlO"'b3ؾ.'ˉ b;BlGQ%>(#>޼c'A'A  o(zABt HzkG+߿-hQF2ZT}|c6LVKK}cij8D9dA[y=; Zvm`o}~<O>duOVw?Ydu$;(~|Br-S˵§kݨ(D/ ыB( ыB ( яB Q"B_BD?/~ x __8GA<< 3J *ыJD/*ыJD/*ыJ*1J D?*яJ*1J *1J *1JDQ(*E%D8}Q~TG%U>k2w~G1Q~G1Qy@1Q~G1Q~G1Q~6*sz@m(%o;\=\=\=WOG:]蚩%&MLѹDd<0E}qڧP\ }l;NJ_m` أ~XA7X[I~UoqGҨ5b\,bOn1H,  0~7{O6SRxVg}u¨waԻ0]Gkˈo$81 V{=7ƸJkr}8_;r8f2o2U# f|0巴/2˖dormEF͈D o/{geu , (n "Q ZDLTmlM[hhMo;M*K\^Kelqik={& HP'w,;Y~$$͓4O]gw20x84: FCc(;JZ5x BPZ*V hZV?hZ=uhZ=uhZ@qӑ,nE>J&nU}CU1S:BJLi)a҅Ε.Yi⥼WXWqԟ|X9ݶy`r;4~] !R JTB"H%D*!R J-R tQh/*EC3.KKj7hVP :L_ n*į <>t+!ʩۡBIGЏ7 B|,7 B|,7 B|,7 Bt, B, B,CFʺ zz mކށޅޣRv/FqY_ -Ɓ'VxX!eM\#{gWpZCoݩ Ŧn԰d'jO9^ :L[S\g C7/CWvgmi]b\` m Mp\~gkJ u\ga1lu26c` a1l0 ư6c%&j yzVNއ+tu] -ze טD&o 5ڜ&j ]a/xF?@~wqh:9椐 m*j$m&Q8|mcG=N U28VX+cep 286  "‚qz] D^usqYm{3o 5B?nn~%A?ໟ@MJAh A4q 驹8 Cd q!2A8u{z`+e{Gsׇ8htDlѰhsa] {ҍS$J"WW$r!5K"2QäGx9;Pe4ր.NMWNcp)v{t{߈O{4~$̝K; ^O-" Pbo[.' )w+<@U^ ]!'!ɐdH2?ҟ ;8ooo\?yne^t%Z75ڏ%\ƽh$4 :: G뫠/B1oP`Ċ' p-] A(Ps;w'.C}X[4+yth^v,4P ETHl5Q707т5tN7{еweLc e~#cTg?gv0^QF-ʨENGkKFd|{4QpYt%dѕ,}>zHo! ̂HHH[hhQ:N_`2 e5קoAeHҏY|9x:-ϐo-=aRf`LoQF;%d$hLQiZh-HLN3Z,zY?JdgGp9hNNs~~ցb(ux>nA 4!&$݈ J­Pu]`~&Im$k++)&~e }Q.AyZAACWIF1t5GWjtL6LO1zۉNs#SjoW2o.cBFY!׍Zӟ@@^IDFCcOt.z5WPȫoBќ~"?s-e'];*䵅3}۝ك {Cwhħ#Ax4r22rx!hH"otD{wRüzzk[Ezʫx!^khݺxnl_=z.=;sr#<2YN7sR,UJ?ى%_#)V4"j[h\ oAH $O"$҂D~-I8 'gsζvdW{}B+]9+H+daܛ,m f7[d߼PFzAs-~\pj2=:nHnSY 7Xö6a:x 9d׎\-",w sS>xp\F|ǯZj2ϜDOzONL0m&Ysx~sywӎK,Fb,Fs 8]n (œDn]˵Cip p`miMq/J8(9$JN‰{Ž"!hP(Bm/Vz-pnT!*8RESW+U8cIϙJ8gD83T SI>And}1RUKes9q-Bp΂Y6T NEX׶Jd_CHcil$ X%ŏxҐcs\-|DvJ$eD!|N#lNquNTm'ؓ9Öw=Sǃ;MÕ2r:N-EhhKs>N;95L_ӫ6@ݠhh'?ѹ)Zx8K,ѭRX[ kK :sZ"p{hZ+E+ xGCnPLT" >G$ڔp$&4eweUI-rwLkOkol&~=vIPh2S7֧0ȯNJ|):mT_fYjwkRބ6E^v-7$%R'"割G ƹ?ڒ=+H}R'vv2u1wIMt,Ѿ7hV-qhR7|hzM}I^ovMl49ly#hu]gKi>K=Qd*]CyאosΘfm&f,7KgK+*Sک/Ox"OPn@z^Ds4_/i !5@n @(w"9|tkwX^R㋜Y)^D/rݾfI;nV0pթw{|.<0:’yUcWmUS5?T< 0(RWϡ^m 83fsc.#ML̟}4U5[Y5r=7S[!6lk;ev4 _^hCuKi͍QVe͓QdK!Ǘ9e%h(إ eժOt${#Mp+v}?/Ue<qFܜOZ<'l"$sH0nWh'$jDf~7ņpp&K݈C+BT)%)_@v jf jly[ nv*!%@kU,+qm n=QJǀsccs <7@њJ%@``~ׯGB ye5Tں4s Cm߱3gÏ$9T$ [B_Q==<{w[3{ j|,#ty?AՋ/Azƶso# vzqq$3Al}JD$BF q/_9uh꣢O7DZ}}me|iYh.̷ecܸS4!+(ʉ~ kRUCc xbzVXOϚ$.[݊˞ ǖݿ-vy~v I߿(ّDʑ桷5),y 9 Hsc^b^ba7H!Ŷ^㑢h%w(k"l㍡5g^;z<#r׫۞xN?u86HZ2! e[eH7ʍL-CR#ViL}E_f?Xmoj6Av'ԡeuj&tuqѸ=wtJrHu -WsW:~ڵk6SԬ\-Q274\דzR]KkFJT)6>ӼJي.+_۶U[IurdTBeNFَ8F bd_$5%Z)uUf/;zYmC%V§E GmVHD;yyG"/pB!MAy+e0lӶ1RDtKʶ"O ԣYʞȾJF!~"]?q~1q.'IJiRJJ/|,_|FB|`1yꝕL?+ȷ w@1$X;=s#^t~"ʧ^N* de\;1#%]\}e-lrBeW8pcՌ͟v j˭9r}=C?9TZjWՒB-܆b{K?ID6"M f*|Ԋ'*֖jnžVNզ'UE=wkǼϕs%˔=F:܈~G_W/5!ZQ<ƶa/4rҴDVR4jd?Capht4.LSc'7`LP杦_/! 9=(kfRj3/k|h<+i*=PW*m7fyXyÉ 7;]xtgTj7T5fj:_}FUj@}U^5-UVwGz@QGUB=߭jzQ5WT^RwSw^zDԣzO=H=uz_=F^'zڠ?+F}^ȗUz\R:-^oz~AW;\ cLw=2fwi0{rӳ3@els9@5́zk!3|s9A/6S̹RsYn%[bsTfYcjUfV\gI Z||Wlnֿ47?}i25?3wߚ_f6W?d~c~3G?YggL<9Ӫdd^/%7f~l1M}[X߳l77mvjM{=m1;eکfagAvi,c<[aKf]nWQ3>aיq6c4*nGtE+-U{.ZVy^:Zݤz*}֬)D OVjq0u:AY1UAvGWAGj<_NTm:T]&zajO5}>ݞPghE2<}:Y3}{M#1j:I=X5RMW|H=5B TCcqdg6NS (~OCg$U>DU-|IX/a\„I S /5I_^i^ ߑ}Z#a .pO K8L%ԯV-*~~UP=W/>_k}^wKQuFqEn>ǽ|z5Qk|dW|rtLw>?O~=EjEj=ajgꃧ|=NKGu(z׽eF.dlf?)/IE]ߪ.[t׏z^zSj7~Vg/BDw5rF k^fx_/#`xײw@t1]TtSTO|ުq_;~j|T?{=XAvidkF EHw9Fu1F7MC03ƚ ps9]ۜoΧL C>=5v/ۯدz{<˚K3TtFfƐ7<Xtx66iTSgf{w7oovǺ]{w (OX do'ؓ)vnܞe/ B[i/bVًer{]i_W/ژK͓SOOSce?ǿWݥ=W()|=fLޚcϱs<{.Kl${bO!ivOɽ̖ r/~=/e=}{ywmr? e?gK7J{hKw{QMvۮl?U5Cj4S2aqj>'r9e: AQAJ]Oۓqo;<-P=L#ԣhңG4A ?C[u>JIz2-}O'ShǦSt}}3ugsUw%Tu{y!I} Q%PGB)q253A$(E* KOB4_P~\9{Yk{x-l[#d (l ];ہ'`܃@0 `|8x ưN.t]RPt  z}G@4 FCP4 ݉in4 ~A'I  ca6『 a1L„ &I@w,Ics0"&bs19l&ݲSĔ0eU156tX vkڰcrMP J]`F"(xИdh&2H3+09Oy>tWDs4|Ï"*/PC$;ҊtB,RB_bEOC`P8xz8s1KFM`&$PP|bPۙ r /3#צ[Vhsafz4_a._^|F13,L w#~#1Gb?wY hb^AHI` ) t2apǰD,gj<ΈXqfvdfgcfvfňjL5 c5]Ęk꩗ pgb(,2xpY&"fQ&,8~DĂxy 1cӗ·s \sDD^*~W34U\AfOQԟU+L7cDÔ`)1N0`P^t 6pV%^ gApGVN%Vh#h( Ik"^p(|1^̌,; PVo|e<&҃ӰVc(@Qb)=f+?ؾ|[*`g.$ I".mMx)$a\&e@hS1ЏB% \BS D#ՅJvzyRnLhtu;q7s̓kqMy6QPZh3n>cٸV9u2q'Y/Hks*׹)>T2ŗ1) μ+1C`;'J)j9F<ɹsoiYzm5Β-%Q^㫽54X[|[C-5f*%Uޱ"f}Ts{Y ބ>ݵA*l q#bB+7H<*mA)U]Պ]KP/R˿VX>ƾ_D7+E=g5dͿ%4Ej{P(S| ]zP'ol=vY”؀ 0LܴL5]4$윣U+ѫ8Zq䥳WnrNPXb&!3Ó8 ퟎcJÝĊp8d9#c8:3T WT&eQ|2$Ϙ*z%jop>,?HQRz*4RΕxY[ZڍW{SSu.|ש7VXnj +q-9'ŝt'+- hׄ8 )!Hn-wwkls yyP Ed/_/?*I{|r >gjDyy \|~ zXH8=M8I]4]V[2j"䀿)JDʺsGszas۪~ksPi@EG%eE_uq%HmUqth_\]a#_SO'UHaQ˞EUgzX:²{qyI$]N8htVJYF.8dRxv? 2T굂lV\8 nGZY\0+2RYDĩ]]}t[.{ˉB{zy#sq xdZmkϱÅϬO?_` )\uoD^rmU:u]@}2MN?m]dsB v,aHKݪ'7R>=L)dXjĔi ?2 IؙLrxgRt(rܼw7d&LZ VA {Q_u:!5#_%,wZc º!$sjӏ`oN+bd<&cǥUϵO.a{يҲחIo4mj}4Ex˲WusBH/x6 ߄ R'My%u:.:o c&S4]].=*)|(c'Gb$ͼZ!\PCg:ߠAVi.0RYy7Xx8{֧qH\)([1G]7B q.a87łcL#?{\\h$Nw4buVެU+ }#qUV=/0ݬoK ۗ_`S-ٚґrHǓ֮6]$(ayH򕇒IÎf^wÚLI]M顜/hlimA ͓!E]ee#ԐJO?&t i\!ܺR\]IPu #cMY*t灠zcհ9(X4 ILcי_>S~xBB߹oB[҆VU?r/REu;o@8Jvꬽ#ۍ]?:fa1<"pF*w`WsÜ. rK[Au:lmWG-I ޝY-2~W 6j7X-r4[׼9vl; =eOv"#ɡ$B5C#=2CE[^D4pޑw2^o޶aHDU:HC_~|Eֹlۃ/,#= UL\[8%Qq 7wD\NA<"<?ov [a '"$DR|/15Ϫ@qmۗu~T$=TNSn@iqY RUa?Lq^&zxtP&5yV3FVqV/I4T4쾬6~ hCXͧw9Jg{xuܵu YsU/ L u&7 |s$M o<#UnVmpљBc}|:  ky_oZD^ϋ M}zy1R봈M~Q;$6jnKɆ&ޫGx8gxAKkߍ57 UܺrZqׅ QֻYסi3+*;+ -J%z&EA+8h$zQ' 5w!U-ھoY@R[t&폞rWܡhEhݸq^#lDIZ+c'ꂫuKVxB\J-0.-ien;%Ê1 endstream endobj 6465 0 obj [ 488[ 264] 520[ 443] ] endobj 6466 0 obj <> stream x]j0 ~ CqCAʲ=c+a6ҧ%@_9 =ԡmںrD9T]qNBJC4I-1RMt6b&]}Di \#calp8Gc JMQHQ` gSvW3wefSvPboK endstream endobj 6467 0 obj <> stream x| @T\@bq/ 0x AF@Ad.aƙ$ː jQ]M⥴NS'3+Ӳ2tdWߵ]Z{w3f֝`f-@ldiey6ېd﫪 ˪6UȺ1bq @v3;Y<NT(Z'gEd,%?~,@q ʺJ }iQe/o{}x9ƺu2G#~qS2\W!hIu a&IsN)H*m\1GeHzdUQU+P'$aX {Cqo?L[>) ,DBo L'oPx  F:. ySÐdmRz#`%Y?:Iv: g \!$ _>P;Q!s *A(! qGAQ; Q1; 8G 0 !Pᐈ8~.CL8#a~dHBL@8.Gɾa,THA(4c|?8Q Â4ߏ0xHĞ "NLiY0qG وS L8 & ^ ȇIa2bLA,:(΀+!Q3a@b)"A,0q#V3}A% ΅R*(C{f#·r+a@ ojD\sk H|߀-P|:5 W#^ !~6EL0#::D7#z(6A h+b \!7K:p ^Oq8}  \wnfěqŕqNj"`,Cn@;)}Ўx܈nFXw*{( p?AkuGnER|nC|n}[a=6q;l@w>Gn({w#OFD/<wfq[ƒOCOÈO#3Y؆9;G ;.߻x//K{nėa؋ p8*ǭ=pA$ Rm W\!%$')"DjDp eH RmH2cbU8\!ಏH* H\! ωH RˆG`Rg.)ꒂ+d9idƑ2P )1S+d\cS〃 (}zF!#BJqe5~F (%}D+dGIS. L RbpFB+d4"KR0R˂+dP5AUp |K?n g)eO%eĉ|7a2iԱcFJI\=21aC N Q*2e@SrޔZ4E]\FFl04z9l*Oj)ן2)Σ(z)Hn LIp:5}Pu3Tc}]zKSM8$%N72[С-D~]uJ@*X]L4V"ݤ.ᨕwPի ^Ihϩ&&%դiLYmz7"@xT g%Kcmw$jS,jqAWb!2R3ԅמfVV{C ~fںm5DZtAJJ מLt[9rѱnS؛DiJ*Pkn-G̨ Sfp*IڈZGZj!ꆎkjqvx5iЙy>:Z"Q]c, {yO+2JtנX{hjw5C4R1DCM^6y"~"t'"=jEvDN"!KTs?-FE#* ސ~ݛ;D5F43ˠL@'%Y^ӝ&ͩ90%/[Kz{撞6OZ5^ʔ1I^&yʒ;ʫSkSj;R(RsEn_IE;JJ:ZIݾ}kykktw oLA$jl&  URsl,,nS(B]( CBE(6 ^(bPL<&S"W(B! P0yc~󋘟$'0¼v0o捘bB .xT( #BP< B/SbP(B&P@^a~/cޏ%Ocދy1o|;V̖ؐؐ Ls^ѹEysӡ):ssFY\9R)+)*+㕱her2LR*rT*A I [bΔxy2՜^z:.都S*u3.D= y]X@|ip`3(FUAZ I[;Ik'm."(uVbnyu,=l MLF4xYRP\ax@c&]ii IH rv]MNJ|.vEbs2hO t=xjv9;k ^zXh`f/fQEu :nm&7!KXN>3 属YK&=}}^|g b`;w#<1f)܁}2 9]335L[ |!zyx~`biLD˩.6y # `\jyb7^ItAa#ç[ D,0d,*\T2 f3Ӄi6N;%0闲E: ب#o>a'1S;.*)*9)*MXd~&=@>_8-AΡ(a2<7Z*WFeEM&$dɸ˓S䩐6 fwy`IeD2a',.qgxZT'Gɸux7;~wNC]{r3Νɍɥ9*:P C[ri_Bn6ac0'$bre)Qď|6!9'{|z1)[mo%F}ߙьdjw.)]xN.6LD.30|e3'̸",dyqp!S&s t mH ׌5وlQٵt'%[dbu񢲤i;0j.+iL;fS{9-č"; y1D>.yfN6M8 n Ҩryo]2$weW ⻬^4L0tpR$ yѵ`qZqlmx22ZZZt\WWghk1:#Ґ3|1܈m(>'~|u{9 Ǟ\ Mec[ҘnuvB: ˊ^^nzc#U3RIJĶJĉT@^MÊFV=[*tHiKB]G9 #[(Bi<FʃjA -)'zx&O&:.I+fKECzmDN T{{ y$0Sk%L(3A9+2~ozh;iYcZ1Nd s2!Z4cAVSHm{O/i:x}1#;7Zmhj!\̀` ,PV:}ތ4VԾB#6hMH: g\bwҽqG rhC (Kb1+%+Rq]!.9cA{cM$mQߓ^7tg$μF֎(&k'wޜ]`ә"FSB??aQO-F:Ll=׋|4ܽpvgp"&7|CNU~o|^I9򽒛WiЋB\;zmחE[i 2jW:}?:]<2~Mb,#`ds/2%2.|H πY ;#=?' ~O0ϗ#|t$%0 %R oօs̯?^#xጂ6g&s6LzX rU2XFB[ {px0B7]<]ȥFyǬB ktiys{vv1llG:?e|ߺUG4Tݦ ՕJL.+UW.?s&{ZE 8B3O |ю:}#v|kߒxWs's6KN5+Oח+k]yPÍ6ɝ;A4os3e X) $סW˗[ܩ4iˇuwo }:*|qñO!WC8׿iU}+:}͒Wǝ_ӘǪ =f^>oxXM9Ϯto̯lRgI=:e.عbq2[? _Vr}8dq|\%b392Ī^1erZr֡>sތg4OPDۡM^;fv CWsEie#6KXe#[64=ݸq^~q,"^ f >7" v;2[6o˛L6Ӑ$;_\t%2 [f:_xM^[f Uu饕$s2i| V r 7K W**)2C!d>>,!{^ʵ?⴯=OޛU}S;%߳ﳖeĆwX0zGD#]ɜ-& MIz%ZӍWCVlܹtûSfUOm_]HvՓ ЙcwfC/}$#~7i/(NY5"{v߼~◟۽r;u:գs~;J:gڨ.;5IW^T.ejeٹ,FjAJRm._E6ȥN)8p_k-Bj{PD42OՒ''x hm$QIZT^mШvGl6=qO`alit/ol93зwU/ړ dJMIyl*w<[zR2=@ģ#Q5/2ӵ(hM6In}pF$ե L֥WHǡ4qsTH'?.+;wNOfM#jUe[48\xq|dǎO/ tYy*:W7t\€sT_c8]Egg͘U븹7ze/W85TV *Kk83u\l2DU3fg+ *: t*Qm"Bo0Ey\ʯo/+/Ջ:+tg:aVAB¥Uz* o H_9 /z>W:-ͯV64T<}i)7kvj:TG̞e͙K58dR_%+; g AS;yAxꐪԀ.p@q^,[[]Hª[ B05RKp< f FF3_u`219V`ekF,7itC9meo'puO.ߦmӶCkW3+~1 r%*2.5R*m\yVSԳ־wOlV)yp->%kvDR+C,}uqς5/lNٺ,-Zk],/_j/s&^u:v>ږyU]/Dy|10cťkٹB[ܾ/| ߹w񩿘f-)gnZ1at['NՙEӵM">o^];K!E}w;}H>5~ѫ|uҖǨm%K3vBf? {mG(Ws37~+1)=ѷt潶n͋LC8Lzmcҕ6GViK6e-c{.ex=&]M?vܑ^KW8ɻΩ&gWK87qi H3oV|ri?W_KOx麕Mܱ}w55sW2Aoԛwƛq]o)7̅48wuʷ!I7D-lblѝAa^NPk1ਉ4@9r#I.jvZDa$Ii[].K,U5Ii+]b%Z\~OZc<4407E9DB3E90E64BB3535DE0D526A12C>] /Filter/FlateDecode/Length 12089>> stream x4u-eٰaϽ7҈tHtwwwwwa"!" R*|Ϟc}Zk>07?860ٝ:0Axo`J2SM704,{c`)_[y10}<.x~`ue\v`q+}}`}opK6s`Ï򁍼vNj6币fzm¶ l 0sws>)ng0m; s1v:o CD2lN)x wpβQy{UuW6p3W~-0qhvK>l~a瞁c  zR l0wG=8pb WskJ-Nd´-3av0p&7w,p+acX^'`Vl8\ aMNtҁ݆5a$O8򬁣"Lh8qන58vgR|mvwp4ac& c L05>i0-̇1f̘b6̎`|sb.̍y0/X b!,E(>q, ,%4')|X֥XcUUZXkbml. `#lM7m5Va'=v;c}bp!8P#q8Q8q*NƉ8 L|t|Y%\ qKU|_h{).hM| W6\pU7z7F|?q3~[p'~p+ ৸܍^<}y9~_WxQ 7~I Ox 9LRF7gژfNH)^Cӱ1LS3MM/QL31Mӿ1LD1Lz'Idژ⥆aj%aژ5:/L S$2L$Q"/5L"T-KES/(=—)Wo88>0ژ ab6M)09ć1 1=tfL3b̌Y1G1'˜b>,ǰX 'i,%>e),.pqt!."/+*.p.:^[7`cit.wmǿz\p~F|76܂f܊ǸwN܋q~{ p/s< ȴ15Lҿ2QL"/MMȤ.L"0KRD1Lҿ45QL"sWI]&IdR &)ebbJ6&u_b(&I]2(i%)eژ%i/5LT4KSʔ2L ӿ2QL"D1QL/QL)S$2K Qo LӸ05L 3K"Sô1K S0L$25LӸ/M Ɣ2LS0K $2mF10L"/LD1Kƴ15Lҿ0L7ӸoF5Կ/Kҿ.KŤ.KRD1Kn,У1K/HR3L0L/5L01mL d0LR3LS0xic% _ژx`7LuUY2 &)^j8zc?7j6p4aԛ0%WLI1&G!L)0% Ǵs`F|3`̄1;fl‚VGsa^̃1X aa,E1|Xa,)|,ĊX+`:VjXkc>6clC=f[cKl ^ ;`G슝 n{`싽~8 p88 Gp<.8 'Dq >p:.q&>p黎. _x*\+M|W۸qFoZ|7 w76܊;p;~Sw^܍{p?~ ¯cx+~ OxSx |c),%I,e<>O3XaUVjXc-u.Va}l 6&[bsl-6a{v~aw=> C01Rc[8G(cp,Sp8'$|T3Y,sp.p.ėp1 p .:.7p%ո5:\ѥp~f܂[qnǿ3܉;c?]w>܏ /s“x Q  #~?Ox O991>1/`Y,ZX+b%U*Xb]ub#l6 [blmvNdݱ+v^{b_}p$8 q(8 (p,N8TY\93q>/\s5\qQ.W%|_7p._ǕWᛸ·((&)^26qn~˨Njc2k 8900aLarL)11 tØ3b&̌Y0+fG1̅bÑ| `A,(VX ǒg2$>Ocy,V*kcuհa >6F[csLnsͰ%Val=vNaw=Y} q!8GpcpƱ8'xqN)8 gL|p98_q"\K2.W5\qU@-F\M|·qk=\pF+n#܆[p+nw⧸ n܋_܇0C%~_Wx0#f2 bf̂`6̎91>E1/ ,%'11Rc͎>`Y,cmVJXcUĎX`]l6F`SlͱV`[lvNaWݱ'žq0A8q18XqNI84<3Y/s1zKo+Q<4~';{S^xx_6ڌ U?0Jk'^ǨcoMmwjiNژIdjajn&i0Ǎ!IdD&Idj&aj c _&aX& _ &Idj j{bz &`2 &`2 &g`26&`26 X &ic2%_ғ%`— )^: \ic2(&bj&`ژ%``2 &a— &IV(&)^2 x`2jn*&|`—6 Q &)^2 x`2%`2 &7mg,渱M\PR/5LRd0JR0K SÄ/5L t,K S/5LlRFZ05LR0K Sd0KR԰Q?Oy1(K/LSt3Lܒp &`٨c@' _ژ%hJdQ1Ldpd G^渱I0Cc |SajLi0- <3af̎Y1>`̍91>1/BX bQ,Eq| aq2X')|aY,-2VJX `UlձZX`]96F`Sl-Va[vN`Wݱ^qA8Pp8XqNI,N8 1\cp8*\ p!E\/+*FW2|J\o5k]\[q#npf?-%ގ;c܏.w܋>A< 6ĶclͰ9Ɩ `7=vŽ;cW=;> {cpN!80#p8Ǒ8 Gp)8 'tp8<{xyr(|/ _2(& _bx`x Qrn&a2 &X _26`xq3i:ajaj\ _ &Idjicb%|a(_j6\ _ &Idjicb%|a(_j6\ _ &Idjicb&| _j%|a&| _jL$` _j6&|icj𥆩aʕ&bjaj&[bD&pId2 _—&| _j&| _ju>K S0K SÄ/5L S/5L 05LR0L6Qx:$`dx`&Lo8 Vџ/KȄ/K ӿd7pS5Id0L S05LRô1J S05L ShK0L"sGR87;~wKqn5b"LIiL09 Sc~̊0 Ō3`̄1fg0೘b,0X sNm-%V2X Kcy,VXa5::X kc]l >6bl-6?^a{v.{bwC/>8aqq8p#q Ʊ8'xSpN8 \spƹƏCYj)p>87@ST7@5L S05L S05L/L $25LR05L0mL /5L,ylIdjD&aDc)^ژ6x`ژ%icxij2𥍩a2\hژ&`2%bj%ijaژ%)^ژ xic2⥍`%)^ x)^2Ñmp!Xd"UK0K Ƅ/MM 05L S05L6L0mL/MM0KRÄ/K1Ko'`aj&|aژ|bʕId—&_jD&X—&_ژ iʕIdE -&Ikj% _2%L Gs\j8٦e4$` _&|Idj%hr%aD&aZD ,K"S/LGp aVK"=q1&$[eI1&SajLi f cf̈̂Ysc.|a̋"Xaq|K`Il Xb9"jXbM5XcC 16¦aKwmmqvNbl#^bݱ'Aq ůq a8GHSp pDžb\qWj\kqnm7f|⋸wv܁/K wA|>|XS/mLd0K"d0KE*K/LEd0Kd0Ld0Ld0Ld0QL3Hd0LD1K>/mLӪ/5LESd0mL)0K1K0S/Lҿ/9K0ӿ/K(KRT4Kd0QL d0Lӿ3K.KT-K>FK 9:R7+KR$2KTt4%|an&`_j;$2UKFT0L0KRäu8MwhIF\j8Q$r8=0!0>&4&$S`2Li1 Ԙ3`:LY1 f̘9}[c-|sả0/o[x ēDO~gc<G ~y_75~_%|?3r^ëW23x[Fu?7;x>‡x! XgaijU)^()^()^(b9HHR %|Id%|Id)eJ &ajaj _j6&|YSq8 NZPJ(&bn.!KRD1K)$2QL),K /mLEƤ5K"Ŕ2K/5L"/QL"ӿ/QL"ӱD1QL/QDJ3qKRt3LSD1M)p8 05L 35L/LD1K>+K0SÄ/L0S0L/LL0K0-5L0sa—`icaB`Id2%|aژ jb9F璸5:R]ӂR_J(Dzn_JR&bJ|&|IdjR&`2 I]j _&hsҨ9—0a7)q1c0oI0&d}s7)&njSb*Li0= =? fMu3c̅1/<aA,,"XK`q\Kb),հX +b*6ĚXk`>z[al6vŶ`l3vNaݱ>HqA8P99G 8'dSqFS8gl\q .Ej\Kp).Wap;f.ch  9i!<䉷<9X&b![n?_8C>OxX&<4407E9DB3E90E64BB3535DE0D526A12C>] >> startxref 638491 %%EOF xref 0 0 trailer <<4407E9DB3E90E64BB3535DE0D526A12C>] /Prev 638491/XRefStm 626194>> startxref 768054 %%EOFWMI/Ncs2Cm.mof0000755000000000000000000044476112453213337010216 0ustar /************************************************************************ * * * INTEL CORPORATION PROPRIETARY INFORMATION * * This software is supplied under the terms of a license agreement or * * nondisclosure agreement with Intel Corporation and may not be copied * * or disclosed except in accordance with the terms of that agreement. * * Copyright (c) 2008 Intel Corporation. All Rights Reserved. * * * ************************************************************************/ /***********************************************************************\ * * NAME: Ncs2Cm.mof * * DESCRIPTION: Master MOF file with base class definitions from DMTF's * CIM 2.6.0 schema needed for Intel PRO Network Adapters * WMI Provider 802.3 schema. * * PREREQUISITE: none * * * NOTE: This file generates language neutral MOF for IntelNCS2 namespace. * This file also generates ENU language specific MFL. * \***********************************************************************/ #pragma namespace ("\\\\.\\Root") instance of __Namespace { Name = "IntelNCS2"; }; #pragma namespace ("\\\\.\\Root\\IntelNCS2") // ================================================================== // ManagedElement // ================================================================== [Abstract, Version ("2.6.0"), Description ( "ManagedElement is an abstract class that provides a common " "superclass (or top of the inheritance tree) for the " "non-association classes in the CIM Schema."): ToSubclass Amended ] class CIM_ManagedElement { [MaxLen (64): ToSubclass, Description ( "The Caption property is a short textual description (one-" "line string) of the object."): ToSubclass Amended] string Caption; [Description ( "The Description property provides a textual description of " "the object."): ToSubclass Amended] string Description; }; // ================================================================== // ManagedSystemElement // ================================================================== [Abstract, Version ("2.6.0"), Description ( "CIM_ManagedSystemElement is the base class for the System " "Element hierarchy. Membership Criteria: Any distinguishable " "component of a System is a candidate for inclusion in this " "class. Examples: software components, such as files; and " "devices, such as disk drives and controllers, and physical " "components such as chips and cards.") : ToSubclass Amended ] class CIM_ManagedSystemElement : CIM_ManagedElement { [Description ( "A datetime value indicating when the object was installed. " "A lack of a value does not indicate that the object is not " "installed."): ToSubclass Amended, MappingStrings {"MIF.DMTF|ComponentID|001.5"}: ToSubclass] datetime InstallDate; [MaxLen (256): ToSubclass, Description ( "The Name property defines the label by which the object is " "known. When subclassed, the Name property can be overridden " "to be a Key property."): ToSubclass Amended] string Name; [MaxLen (10): ToSubclass, Description ( " A string indicating the current status of the object. " "Various operational and non-operational statuses are " "defined. Operational statuses are \"OK\", \"Degraded\", " "\"Stressed\" and \"Pred Fail\". \"Stressed\" indicates that " "the Element is functioning, but needs attention. Examples " "of \"Stressed\" states are overload, overheated, etc. The " "condition \"Pred Fail\" (failure predicted) indicates that " "an Element is functioning properly but predicting a failure " "in the near future. An example is a SMART-enabled hard " "drive. \n" " Non-operational statuses can also be specified. These " "are \"Error\", \"NonRecover\", \"Starting\", \"Stopping\", " " \"Stopped\", " "\"Service\", \"No Contact\" and \"Lost Comm\". \"NonRecover\" " "indicates that a non-recoverable error has occurred. " "\"Service\" describes an Element being configured, maintained, " "cleaned, or otherwise administered. This status could apply " "during mirror-resilvering of a disk, reload of a user " "permissions list, or other administrative task. Not all such " "work is on-line, yet the Element is neither \"OK\" nor in " "one of the other states. \"No Contact\" indicates that the " "current instance of the monitoring system has knowledge of " "this Element but has never been able to establish " "communications with it. \"Lost Comm\" indicates that the " "ManagedSystemElement is known to exist and has been contacted " "successfully in the past, but is currently unreachable. " "\"Stopped\" indicates that the ManagedSystemElement is known " "to exist, it is not operational (i.e. it is unable to " "provide service to users), but it has not failed. It has " "purposely been made non-operational. The Element " "may have never been \"OK\", the Element may have initiated its " "own stop, or a management system may have initiated the stop."): ToSubclass Amended, ValueMap {"OK", "Error", "Degraded", "Unknown", "Pred Fail", "Starting", "Stopping", "Service", "Stressed", "NonRecover", "No Contact", "Lost Comm", "Stopped"} : ToSubclass Amended ] string Status; }; // ================================================================== // LogicalElement // ================================================================== [Abstract, Version ("2.6.0"), Description ( "CIM_LogicalElement is a base class for all the components of " "a System that represent abstract system components, such " "as Files, Processes, or LogicalDevices."): ToSubclass Amended, LOCALE(0x409) ] class CIM_LogicalElement : CIM_ManagedSystemElement { }; // =================================================================== // LogicalDevice // =================================================================== [Abstract, Version ("2.6.0"), Description ( "An abstraction or emulation of a hardware entity, that may " "or may not be Realized in physical hardware. Any " "characteristics of a LogicalDevice that are used to manage " "its operation or configuration are contained in, or " "associated with, the LogicalDevice object. Examples of the " "operational properties of a Printer would be paper sizes " "supported, or detected errors. Examples of the configuration " "properties of a Sensor Device would be threshold settings. " "Various configurations could exist for a LogicalDevice. " "These configurations could be contained in Setting objects " "and associated with the LogicalDevice."): ToSubclass Amended, LOCALE(0x409) ] class CIM_LogicalDevice : CIM_LogicalElement { [Propagated("CIM_System.CreationClassName"), Key, MaxLen (256): ToSubclass, Description ("The scoping System's CreationClassName."): ToSubclass Amended ] string SystemCreationClassName; [Propagated("CIM_System.Name"), Key, MaxLen (256): ToSubclass, Description ("The scoping System's Name."): ToSubclass Amended ] string SystemName; [Key, MaxLen (256): ToSubclass, Description ( "CreationClassName indicates the name of the class or " "the subclass used in the creation of an instance. When " "used with the other key properties of this class, this " "property allows all instances of this class and its " "subclasses to be uniquely identified."): ToSubclass Amended ] string CreationClassName; [Key, MaxLen (64): ToSubclass, Description ( "An address or other identifying information to uniquely " "name the LogicalDevice.") : ToSubclass Amended] string DeviceID; [Description ( "Boolean indicating that the Device can be power managed " "- ie, put into a power save state. This boolean does not " "indicate that power management features are currently " "enabled, or if enabled, what features are supported. " "Refer to the PowerManagementCapabilities array for this " "information. If this boolean is false, the integer value " "1, for the string, \"Not Supported\", should be the only " "entry in the PowerManagementCapabilities array.") : ToSubclass Amended] boolean PowerManagementSupported; [Description( "Indicates the specific power-related capabilities of a " "LogicalDevice. The array values, 0=\"Unknown\", 1=" "\"Not Supported\" and 2=\"Disabled\" are self-explanatory. " "The value, 3=\"Enabled\" indicates that the power management " "features are currently enabled but the exact feature set " "is unknown or the information is unavailable. " "\"Power Saving Modes Entered Automatically\" (4) describes " "that a Device can change its power state based on usage or " "other criteria. \"Power State Settable\" (5) indicates that " "the SetPowerState method is supported. \"Power Cycling " "Supported\" (6) indicates that the SetPowerState method " "can be invoked with the PowerState input variable set to 5 (" "\"Power Cycle\"). \"Timed Power On Supported\" (7) indicates " "that the SetPowerState method can be invoked with the Power" "State input variable set to 5 (\"Power Cycle\") and the Time " "parameter set to a specific date and time, or interval, " "for power-on."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4", "5", "6", "7"}: ToSubclass Amended, Values {"Unknown", "Not Supported", "Disabled", "Enabled", "Power Saving Modes Entered Automatically", "Power State Settable", "Power Cycling Supported", "Timed Power On Supported"}: ToSubclass Amended ] uint16 PowerManagementCapabilities[]; [Description ( "The primary availability and status of the Device. (Additional " "status information can be specified using the Additional" "Availability array property.) For example, the Availability " "property indicates that the Device is running and has full " "power (value=3), or is in a warning (4), test (5), degraded " "(10) or power save state (values 13-15 and 17). Regarding the " "Power Save states, these are defined as follows: " "Value 13 (\"Power Save - Unknown\") indicates " "that the Device is known to be in a power save mode, but its " "exact status in this mode is unknown; 14 (\"Power Save - Low " "Power Mode\") indicates that the Device is in a power save " "state but still functioning, and may exhibit degraded " "performance; 15 (\"Power Save - Standby\") describes that " "the Device is not functioning but could be brought to full " "power 'quickly'; and value 17 (\"Power Save - Warning\") " "indicates that the Device is in a warning state, though also " "in a power save mode."): ToSubclass Amended, ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"}: ToSubclass Amended, Values {"Other", "Unknown", "Running/Full Power", "Warning", "In Test", "Not Applicable", "Power Off", "Off Line", "Off Duty", "Degraded", "Not Installed", "Install Error", "Power Save - Unknown", "Power Save - Low Power Mode", "Power Save - Standby", "Power Cycle","Power Save - Warning", "Paused", "Not Ready", "Not Configured", "Quiesced"}: ToSubclass Amended, MappingStrings {"MIF.DMTF|Operational State|006", "MIB.IETF|HOST-RESOURCES-MIB.hrDeviceStatus", "MIF.DMTF|Host Device|001.5"}, ModelCorrespondence {"CIM_LogicalDevice.AdditionalAvailability"} : ToSubclass] uint16 Availability; [Description ( "The StatusInfo property indicates whether the Logical" "Device is in an enabled (value = 3), disabled (value = " "4) or some other (1) or unknown (2) state. If this " "property does not apply to the LogicalDevice, the value, " "5 (\"Not Applicable\"), should be used. " "If a Device is (\"Enabled\")(value=3), it has been " "powered up, and is configured and operational. The Device " "may or may not be functionally active, depending on whether " "its Availability (or AdditionalAvailability) indicate that " "it is (\"Running/Full Power\")(value=3) or (\"Off line\")" "(value=8). In an enabled but offline mode, a Device may be " "performing out-of-band requests, such as running Diagnostics. " "If (\"Disabled\") StatusInfo value=4), a Device can only be " "\"enabled\" or powered off. In a personal computer environment, " "(\"Disabled\") means that the Device's driver is not " "available in the stack. In other environments, a Device can " "be disabled by removing its configuration file. A disabled " "device is physically present in a System and consuming " "resources, but cannot be communicated with until a load " "of a driver, a load of a configuration file or some other " "\"enabling\" activity has occurred."): ToSubclass Amended, ValueMap {"1", "2", "3", "4", "5"}: ToSubclass Amended, Values {"Other", "Unknown", "Enabled", "Disabled", "Not Applicable"}: ToSubclass Amended, MappingStrings {"MIF.DMTF|Operational State|006"}: ToSubclass ] uint16 StatusInfo; [Description ( "LastErrorCode captures the last error code reported by " "the LogicalDevice."): ToSubclass Amended ] uint32 LastErrorCode; [Description ( "ErrorDescription is a free-form string supplying more " "information about the error recorded in LastErrorCode, and " "information on any corrective actions that may be taken."): ToSubclass Amended ] string ErrorDescription; [Description ( "ErrorCleared is a boolean property indicating that the " "error reported in LastErrorCode is now cleared."): ToSubclass Amended ] boolean ErrorCleared; [MaxLen (256): ToSubclass, ArrayType ("Indexed"): ToSubclass, Description ( "OtherIdentifyingInfo captures additional data, beyond " "DeviceID information, that could be used to identify a " "LogicalDevice. One example would be to hold the Operating" "System's user friendly name for the Device in this " "property."): ToSubclass Amended, ModelCorrespondence { "CIM_LogicalDevice.IdentifyingDescriptions"}: ToSubclass ] string OtherIdentifyingInfo[]; [Description ( "The number of consecutive hours that this Device has been " "powered, since its last power cycle."): ToSubclass Amended, Units ("Hours"): ToSubclass Amended, Counter : ToSubclass] uint64 PowerOnHours; [Description ( "The total number of hours that this Device has been " "powered."): ToSubclass Amended, Units ("Hours"): ToSubclass Amended, Counter: ToSubclass] uint64 TotalPowerOnHours; [ArrayType ("Indexed"): ToSubclass, Description ( "An array of free-form strings providing explanations " "and details behind the entries in the OtherIdentifyingInfo " "array. Note, each entry of this array is related to the " "entry in OtherIdentifyingInfo that is located at the same " "index."): ToSubclass Amended, ModelCorrespondence {"CIM_LogicalDevice.OtherIdentifyingInfo"}: ToSubclass] string IdentifyingDescriptions[]; [Description ( "Additional availability and status of the Device, beyond that " "specified in the Availability property. The Availability " "property denotes the primary status and availability of the " "Device. In some cases, this will not be sufficient to denote " "the complete status of the Device. In those cases, the " "AdditionalAvailability property can be used to provide further " "information. For example, a Device's primary Availability may " "be \"Off line\" (value=8), but it may also be in a low power " "state (AdditonalAvailability value=14), or the Device could be " "running Diagnostics (AdditionalAvailability value=5, \"In " "Test\")."): ToSubclass Amended, ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21"}: ToSubclass Amended, Values {"Other", "Unknown", "Running/Full Power", "Warning", "In Test", "Not Applicable", "Power Off", "Off Line", "Off Duty", "Degraded", "Not Installed", "Install Error", "Power Save - Unknown", "Power Save - Low Power Mode", "Power Save - Standby", "Power Cycle", "Power Save - Warning", "Paused", "Not Ready", "Not Configured", "Quiesced"}: ToSubclass Amended, ModelCorrespondence {"CIM_LogicalDevice.Availability"}: ToSubclass] uint16 AdditionalAvailability[]; [Description ( "Maximum time in milliseconds, that a Device can run in " "a \"Quiesced\" state. A Device's state is defined in its " "Availability and AdditionalAvailability properties, where " "\"Quiesced\" is conveyed by the value 21. What occurs at " "the end of the time limit is device-specific. The Device " "may unquiesce, may offline or take other action. A value of " "0 indicates that a Device can remain quiesced indefinitely."): ToSubclass Amended, Units ("MilliSeconds"): ToSubclass Amended ] uint64 MaxQuiesceTime; [Description( "SetPowerState defines the desired power state for a " "LogicalDevice and when a Device should be put into that " "state. The desired power state is specified by setting " "the PowerState parameter to one of the " "following integer values: 1=\"Full Power\", 2=\"Power Save " "- Low Power Mode\", 3=\"Power Save - Standby\", 4=\"Power " "Save - Other\", 5=\"Power Cycle\" or 6=\"Power Off\". " "The Time parameter (for all state changes but 5, " "\"Power Cycle\") indicates when the power state should be " "set, either as a regular date-time value or as an interval " "value (where the interval begins when the method " "invocation is received). When the PowerState parameter is " "equal to 5, \"Power Cycle\", the Time parameter indicates " "when the Device should power on again. Power off is " "immediate. SetPowerState should return 0 if successful, 1 " "if the specified PowerState and Time request is not " "supported, and some other value if any other error " "occurred. In a subclass, the set of possible return codes " "could be specified, using a ValueMap qualifier on the method. " "The strings to which the ValueMap contents are 'translated' " "may also be specified in the subclass as a Values array " "qualifier."): ToSubclass Amended ] uint32 SetPowerState( [IN, ValueMap {"1", "2", "3", "4", "5", "6"}: ToSubclass Amended , Values {"Full Power", "Power Save - Low Power Mode", "Power Save - Standby", "Power Save - Other", "Power Cycle", "Power Off"}: ToSubclass Amended] uint16 PowerState, [IN] datetime Time); [Description ( "Requests a reset of the LogicalDevice. The return value " "should be 0 if the request was successfully executed, " "1 if the request is not supported and some other value " "if an error occurred. In a subclass, the set of possible " "return codes could be specified, using a ValueMap qualifier " "on the method. The strings to which the ValueMap contents " "are 'translated' may also be specified in the subclass as a " "Values array qualifier."): ToSubclass Amended ] uint32 Reset(); [Description ( "Requests that the LogicalDevice be enabled (\"Enabled\" " "input parameter = TRUE) or disabled (= FALSE). If " "successful, the Device's StatusInfo property should also " "reflect the desired state (enabled/disabled). The return " "code should be 0 if the request was successfully executed, " "1 if the request is not supported and some other value if " "an error occurred. In a subclass, the set of possible " "return codes could be specified, using a ValueMap qualifier " "on the method. The strings to which the ValueMap contents " "are 'translated' may also be specified in the subclass as a " "Values array qualifier.") : ToSubclass Amended] uint32 EnableDevice( [IN] boolean Enabled); [Description ( " Requests that the LogicalDevice be brought online (\"Online\" " "input parameter = TRUE) or taken offline (= FALSE). " "\"Online\" indicates that the Device is ready to accept " "requests, and is operational and fully functioning. In this " "case, the Device's Availability property would be set to " "a value of 3 (\"Running/Full Power\"). \"Offline\" indicates " "that a Device is powered up and operational, but not processing " "functional requests. In an offline state, a Device may be capable " "of running diagnostics or generating operational alerts. For " "example, when the \"Offline\" button is pushed on a Printer, the " "Device is no longer available to process print jobs, but " "could be available for diagnostics or maintenance. \n" " If this method is successful, the Device's Availability and " "AdditionalAvailability properties should reflect the updated " "status. If a failure occurs trying to bring the Device online " "or offline, it should remain in its current state. IE, the " "request, if unsuccessful, should not leave the Device in an " "indeterminate state. When bringing a Device back \"Online\", " "from an \"Offline\" mode, the Device should be restored to its " "last \"Online\" state, if at all possible. Only a Device that " "has a StatusInfo of \"Enabled\" (value=3) and has been " "configured can be brought online or taken offline. \n" " OnlineDevice should return 0 if successful, 1 if the request " "is not supported at all, 2 if the request is not supported due " "to the current state of the Device, and some other value if any " "other error occurred. In a subclass, the set of possible return " "codes could be specified, using a ValueMap qualifier on the method. " "The strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array qualifier."): ToSubclass Amended] uint32 OnlineDevice( [IN] boolean Online); [Description ( " Requests that the LogicalDevice cleanly cease all current " "activity (\"Quiesce\" input parameter = TRUE) or resume " "activity (= FALSE). For this method to quiesce a Device, " "that Device should have an Availability (or Additional" "Availability) of \"Running/Full Power\" (value=3) and a " "StatusInfo of \"Enabled\" (value=3). For example, if quiesced, " "a Device may then be offlined for diagnostics, or disabled " "for power off and hot swap. For the method to \"unquiesce\" " "a Device, that Device should have an Availability (or Additional" "Availability) of \"Quiesced\" (value=21) and a StatusInfo of " "\"Enabled\" (value=3). In this case, the Device would " "be returned to an \"Enabled\" and \"Running/Full Power\" " "status. \n" " The method's return code should indicate the success or " "failure of the quiesce. It should return 0 if successful, " "1 if the request is not supported at all, 2 if the request " "is not supported due to the current state of the Device, " "and some other value if any other error occurred. In a subclass, " "the set of possible return codes could be specified, using a " "ValueMap qualifier on the method. The strings to which the " "ValueMap contents are 'translated' may also be specified in " "the subclass as a Values array qualifier."): ToSubclass Amended ] uint32 QuiesceDevice( [IN] boolean Quiesce); [Description ( "Requests that the Device capture its current configuration, " "setup and/or state information in a backing store. The goal " "would be to use this information at a later time (via the " "RestoreProperties method), to return a Device to its present " "\"condition\". This method may not be supported by all Devices. " "The method should return 0 if successful, 1 if the request is " "not supported, and some other value if any other error occurred. " "In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The strings " "to which the ValueMap contents are 'translated' may also be " "specified in the subclass as a Values array qualifier."): ToSubclass Amended ] uint32 SaveProperties(); [Description ( "Requests that the Device re-establish its configuration, " "setup and/or state information from a backing store. The " "intent is to capture this information at an earlier time " "(via the SaveProperties method), and use it to return a " "Device to this earlier \"condition\". This method may not " "be supported by all Devices. The method should return 0 if " "successful, 1 if the request is not supported, and some " "other value if any other error occurred. In a subclass, " "the set of possible return codes could be specified, using " "a ValueMap qualifier on the method. The strings to which " "the ValueMap contents are 'translated' may also be specified " "in the subclass as a Values array qualifier."): ToSubclass Amended ] uint32 RestoreProperties(); }; // =================================================================== // Controller // =================================================================== [Abstract, Version ("2.6.0"), Description ( "Controller is a superclass for grouping the miscellaneous " "control-related Devices that exist. Examples of Controllers " "are SCSIControllers, USBControllers, SerialControllers, ... " "The Controller class is an abstraction for Devices with a " "single protocol stack, which exist primarily for communication " "to, and control or reset of downstream (ControlledBy) Devices."): ToSubclass Amended, LOCALE(0x409) ] class CIM_Controller : CIM_LogicalDevice { [Description ("Time of last reset of the Controller."): ToSubclass Amended ] datetime TimeOfLastReset; [Description ( "The protocol used by the Controller to access 'controlled' " "Devices."): ToSubclass Amended, ValueMap {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47"}: ToSubclass Amended, Values {"Other", "Unknown", "EISA", "ISA", "PCI", "ATA/ATAPI", "Flexible Diskette", "1496", "SCSI Parallel Interface", "SCSI Fibre Channel Protocol", "SCSI Serial Bus Protocol", "SCSI Serial Bus Protocol-2 (1394)", "SCSI Serial Storage Architecture", "VESA", "PCMCIA", "Universal Serial Bus", "Parallel Protocol", "ESCON", "Diagnostic", "I2C", "Power", "HIPPI", "MultiBus", "VME", "IPI", "IEEE-488", "RS232", "IEEE 802.3 10BASE5", "IEEE 802.3 10BASE2", "IEEE 802.3 1BASE5", "IEEE 802.3 10BROAD36", "IEEE 802.3 100BASEVG", "IEEE 802.5 Token-Ring", "ANSI X3T9.5 FDDI", "MCA", "ESDI", "IDE", "CMD", "ST506", "DSSI", "QIC2", "Enhanced ATA/IDE", "AGP", "TWIRP (two-way infrared)", "FIR (fast infrared)", "SIR (serial infrared)", "IrBus"}: ToSubclass Amended, MappingStrings {"MIF.DMTF|Bus Port|003", "MIF.DMTF|Disks|003.3"}: ToSubclass, ModelCorrespondence {"CIM_Controller.ProtocolDescription"}: ToSubclass ] uint16 ProtocolSupported; [Description ( "Maximum number of directly addressable entities supported " "by this Controller. A value of 0 should be used if the " "number is unknown or unlimited."): ToSubclass Amended, MappingStrings {"MIF.DMTF|Bus Port|003"}: ToSubclass ] uint32 MaxNumberControlled; [Description ( "A free form string providing more information related " "to the ProtocolSupported by the Controller."): ToSubclass Amended, ModelCorrespondence {"CIM_Controller.ProtocolSupported"}: ToSubclass, MappingStrings {"MIF.DMTF|Bus Port|003"} : ToSubclass] string ProtocolDescription; }; // =================================================================== // PCIController // =================================================================== [Abstract, Version ("2.6.0"), Description ( "PCIController is a superclass for the PCIBridge and PCIDevice " "classes. These classes model adapters and bridges on a PCI " "bus. The properties in PCIController and its subclasses are " "defined in the various PCI Specifications published by the " "PCI SIG."): ToSubclass Amended, LOCALE(0x409)] class CIM_PCIController : CIM_Controller { [Description ( "Current contents of the register that provides basic " "control over the device's ability to respond " "to, and/or perform PCI accesses."): ToSubclass Amended ] uint16 CommandRegister; [Description ( "An array of integers indicating controller capabilities. " "Information such as \"Supports 66MHz\" (value=2) is " "specified in this property. The data in the Capabilities array " "is gathered from the PCI Status Register and the PCI " "Capabilities List as defined in the PCI Specification."): ToSubclass Amended, ArrayType ("Indexed"): ToSubclass, ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"}: ToSubclass Amended, Values {"Unknown", "Other", "Supports 66MHz", "Supports User Definable Features", "Supports Fast Back-to-Back Transactions", "PCI-X Capable", "PCI Power Management Supported", "Message Signaled Interrupts Supported", "Parity Error Recovery Capable", "AGP Supported", "Vital Product Data Supported", "Provides Slot Identification", "Hot Swap Supported"}: ToSubclass Amended, ModelCorrespondence {"CIM_PCIController.CapabilityDescriptions"}: ToSubclass] uint16 Capabilities[]; [Description ( "An array of free-form strings providing more detailed " "explanations for any of the PCIController features indicated " "in the Capabilities array. Note, each entry of this array " "is related to the entry in the Capabilities array that " "is located at the same index."): ToSubclass Amended, ArrayType ("Indexed"): ToSubclass, ModelCorrespondence {"CIM_PCIController.Capabilities"}: ToSubclass ] string CapabilityDescriptions[]; [Description ( "The slowest device select timing for a target device."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4", "5"}: ToSubclass Amended, Values {"Unknown", "Other", "Fast", "Medium", "Slow", "Reserved"}: ToSubclass Amended ] uint16 DeviceSelectTiming; [Description ( "Register of 8 bits that identifies the basic function of the " "PCI device. This is only the upper byte (offset 0Bh) of the " "3 byte ClassCode field. Note that the property's ValueMap " "array specifies the decimal representation of this " "information."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18..254", "255"}: ToSubclass Amended, Values {"Pre 2.0", "Mass Storage", "Network", "Display", "Multimedia", "Memory", "Bridge", "Simple Communications", "Base Peripheral", "Input", "Docking Station", "Processor", "Serial Bus", "Wireless", "Intelligent I/O", "Satellite Communication", "Encryption/Decryption", "Data Acquisition and Signal Processing", "PCI Reserved", "Other"}: ToSubclass Amended ] uint8 ClassCode; [Description ( "Specifies the system cache line size in doubleword increments " "(e.g., a 486-based system would store the value 04h, " "indicating a cache line size of four doublewords."): ToSubclass Amended, Units ("DoubleWords"): ToSubclass Amended ] uint8 CacheLineSize; [Description ( "Defines the minimum amount of time, in PCI clock cycles, that " "the bus master can retain ownership of the bus."): ToSubclass Amended, Units ("PCI clock cycles"): ToSubclass Amended ] uint8 LatencyTimer; [Description ( "Defines the PCI interrupt request pin (INTA# to " "INTD#) to which a PCI functional device is connected."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4", "5"}: ToSubclass Amended, Values {"None", "INTA#", "INTB#", "INTC#", "INTD#", "Unknown"}: ToSubclass Amended ] uint16 InterruptPin; [Description ( "Doubleword Expansion ROM base memory address."): ToSubclass Amended, Units ("DoubleWords"): ToSubclass Amended ] uint32 ExpansionROMBaseAddress; [Description ( "Reports if the PCI device can perform the self test " "function. Returns bit 7 of the BIST register as a boolean."): ToSubclass Amended ] boolean SelfTestEnabled; [Description ( "Method to invoke PCI device self-test. This method sets bit " "6 of the BIST register. The return result is the lower " "four bits of the BIST register where 0 indicates success and " "non-zero is a device dependent failure. Support for this " "method is optional in the PCI Specification."): ToSubclass Amended ] uint8 BISTExecution( ); }; // =================================================================== // PCIDevice // =================================================================== [Abstract, Version ("2.6.0"), Description ( "Capabilities and management of a PCI device controller " "on an adapter card."): ToSubclass Amended, LOCALE(0x409) ] class CIM_PCIDevice : CIM_PCIController { [Description ("Array of doubleword base memory addresses."): ToSubclass Amended ] uint32 BaseAddress[6]; [Description ("Subsystem identifier code."): ToSubclass Amended] uint16 SubsystemID; [Description ( "Subsystem vendor ID. ID information is reported from a " "PCIDevice via protocol-specific requests. The correct place " "in the CIM Schema for this information is in CIM_Physical" "Element (the Manufacturer property) for hardware, and " "CIM_Product (the Vendor property) if the information is " "related to Product acquisition. This data is also reported " "here since it is part of the standard output from the " "Device, and as an optimization."): ToSubclass Amended] uint16 SubsystemVendorID; [Description ( "Register indicating how long the master would like to " "retain PCI bus ownership whenever it initiates a " "transaction. A zero value indicates no requirement."): ToSubclass Amended, Units ("250 nanoseconds"): ToSubclass Amended] uint8 MinGrantTime; [Description ( "Register specifying how often the device needs access to " "the PCI bus in 250ns. A zero value indicates no " "requirement."): ToSubclass Amended, Units ("250 nanoseconds"): ToSubclass Amended] uint8 MaxLatency; }; // ================================================================== // ServiceAccessPoint // ================================================================== [Abstract, Version ("2.6.0"), Description ( "CIM_ServiceAccessPoint represents the ability to utilize or " "invoke a Service. Access points represent that a Service is " "made available to other entities for use."): ToSubclass Amended, LOCALE(0x409) ] class CIM_ServiceAccessPoint : CIM_LogicalElement { [Propagated ("CIM_System.CreationClassName"), Key, MaxLen (256): ToSubclass, Description ( "The scoping System's CreationClassName."): ToSubclass Amended ] string SystemCreationClassName; [Propagated ("CIM_System.Name"), Key, MaxLen (256): ToSubclass, Description ("The scoping System's Name."): ToSubclass Amended ] string SystemName; [Key, MaxLen (256): ToSubclass, Description ( "CreationClassName indicates the name of the class or the " "subclass used in the creation of an instance. When used " "with the other key properties of this class, this property " "allows all instances of this class and its subclasses to " "be uniquely identified.") : ToSubclass Amended] string CreationClassName; [Override ("Name"), Key, MaxLen (256): ToSubclass, Description ( "The Name property uniquely identifies the ServiceAccessPoint " "and provides an indication of the functionality that is " "managed. This functionality is described in more detail in " "the object's Description property.") : ToSubclass Amended] string Name; }; // ================================================================== // ProtocolEndpoint // ================================================================== [Abstract, Version ("2.6.0"), Description ( "A communication point from which data may be sent or " "received. ProtocolEndpoints link router interfaces and " "switch ports to LogicalNetworks.") : ToSubclass Amended, LOCALE(0x409)] class CIM_ProtocolEndpoint : CIM_ServiceAccessPoint { [Override ("Name"), MaxLen(256): ToSubclass, Description ( "A string which identifies this ProtocolEndpoint with either " "a port or an interface on a device. To ensure uniqueness, " "the Name property should be prepended or appended with " "information from the Type or OtherTypeDescription " "properties. The method chosen is described in the " "NameFormat property of this class.") : ToSubclass Amended] string Name; [MaxLen (256): ToSubclass, Description ( "NameFormat contains the naming heuristic that is chosen to " "ensure that the value of the Name property is unique. For " "example, one might choose to prepend the name of the port " "or interface with the Type of ProtocolEndpoint that this " "instance is (e.g., IPv4) followed by an underscore."): ToSubclass Amended ] string NameFormat; [Description ( "ProtocolType is an enumeration providing information to " "categorize and classify different instances of this class. " "For most instances, information in this enumeration and the " "subclass' definition overlap. However, there are several cases " "where a specific subclass of ProtocolEndpoint is not required " "(for example, there is no Fibre Channel Endpoint). Hence, this " "property is needed to define the type of Endpoint. Note that " "in a future major release of the CIM Schema, it is likely " "that ProtocolEndpoint will be ABSTRACT, forcing " "subclassing and removing the need for this property."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27"}: ToSubclass Amended, Values {"Unknown", "Other", "IPv4", "IPv6", "IPX", "AppleTalk", "DECnet", "SNA", "CONP", "CLNP", "VINES", "XNS", "ATM", "Frame Relay", "Ethernet", "TokenRing", "FDDI", "Infiniband", "Fibre Channel", "ISDN BRI Endpoint", "ISDN B Channel Endpoint", "ISDN D Channel Endpoint", // 22 "IPv4/v6", "BGP", "OSPF", "MPLS", "UDP", "TCP"}: ToSubclass Amended, ModelCorrespondence { "CIM_ProtocolEndpoint.OtherTypeDescription"}: ToSubclass ] uint16 ProtocolType; [MaxLen(64): ToSubclass, Description ( "A string describing the type of ProtocolEndpoint when " "the Type property of this class (or any of its " "subclasses) is set to 1 (i.e., \"Other\"). This " "property should be set to NULL when the Type property " "is any value other than 1."): ToSubclass Amended, ModelCorrespondence {"CIM_ProtocolEndpoint.ProtocolType"}: ToSubclass ] string OtherTypeDescription; }; // ================================================================== // IPProtocolEndpoint // ================================================================== [Abstract, Version ("2.6.0"), Description ( "A ProtocolEndpoint that is dedicated to running IP.") : ToSubclass Amended, LOCALE(0x409)] class CIM_IPProtocolEndpoint : CIM_ProtocolEndpoint { [Description ( "The IP address that this ProtocolEndpoint represents, " "formatted according to the appropriate convention as " "defined in the AddressType property of this class " "(e.g., 171.79.6.40).") : ToSubclass Amended] string Address; [Description ( "The mask for the IP address of this ProtocolEndpoint, " "formatted according to the appropriate convention as " "defined in the AddressType property of this class " "(e.g., 255.255.252.0).") : ToSubclass Amended] string SubnetMask; [Description ( "An enumeration that describes the format of the address " "property. Whenever possible, IPv4-compatible addresses " "should be used instead of native IPv6 addresses (see " "RFC 2373, section 2.5.4). In order to have a consistent " "format for IPv4 addresses in a mixed IPv4/v6 environment, " "all IPv4 addresses and both IPv4-compatible IPv6 addresses " "and IPv4-mapped IPv6 addresses, per RFC 2373, section " "2.5.4, should be formatted in standard IPv4 format."): ToSubclass Amended, ValueMap {"0", "1", "2"}: ToSubclass Amended, Values {"Unknown", "IPv4", "IPv6"}: ToSubclass Amended ] uint16 AddressType; [Description ( "It is not possible to tell from the address alone if a " "given IPProtocolEndpoint can support IPv4 and IPv6, or " "just one of these. This property explicitly defines the " "support for different versions of IP that this " "IPProtocolEndpoint has."): ToSubclass Amended, ValueMap {"0", "1", "2"}: ToSubclass Amended, Values {"Unknown", "IPv4 Only", "IPv6 Only"}: ToSubclass Amended ] uint16 IPVersionSupport; }; // ================================================================== // VLAN // ================================================================== [Abstract, Version ("2.6.0"), Description ( "An instance of VLAN represents a VLAN within a switch. " "In a particular switch, there should be an instance of VLAN " "for every VLAN available in the switch. For example, in a " "switch with port-based VLANs, if there are 16 VLANs to which " "ports can be assigned (VLAN 1 through VLAN 16), there should " "be an instance of CIM_VLAN for each of VLAN 1 through " "VLAN 16." "\n\n" "VLAN inherits Name from ServiceAccessPoint. Use this for " "the textual name of the VLAN, if there is one. Otherwise, " "synthesize a textual name, e.g., VLAN 0003. (Consider " "leading zero fill, as shown, to ensure that if the textual " "VLAN names are extracted and presented by a management " "applications, the VLAN names will sort in the expected order. " "It's irritating to see a list sorted " "'VLAN 1, VLAN 10, VLAN 11, VLAN 2, VLAN 3...', " "when it could have been " "'VLAN 0001, VLAN 0002, ..., VLAN 0010, VLAN 0011, ....'.) " "The numeric part of the name should be at least four " "digits wide since 802.1Q specifies 4095 VLANs." "\n\n" "It is intended that VLAN be subclassed only if necessary " "to add attributes. The type of the VLAN can be inferred from " "the VLANService(s) with which the VLAN is associated " "in the VLANFor association." "\n\n" "An instance of VLAN may be associated with more than one " "VLANService. For example, there are switches that " "support both 802.1Q VLANs and the vendor's proprietary " "VLANs. In some such switches if a broadcast packet received " "on a port in 802.1Q VLAN 5 will be transmitted from a port " "in proprietary VLAN 5. In effect, there is only one VLAN 5, " "and the type of port only determines the packet format for " "tagged packets. In the case just described, only one " "instance of CIM_VLAN should be instantiated for VLAN 5, and " "it should be associated both with the 802.1Q VLANService " "and the proprietary VLANService. " "\n\n" "In typical VLAN-aware switches, packets can be assigned to " "a VLAN based on the port on which they are received " "(port-based VLANs), based on the source MAC address " "(MAC-based VLANs), or based on the value of a set of bits in " "the packet (protocol-based VLANs). If it is desirable to " "represent the VLAN assignment predicate for some MAC-based " "VLAN switch, it will be necessary to subclass VLAN. The list " "of MAC addresses associated with a VLAN would be an " "attribute of the subclass. If it is desirable to represent " "the VLAN assignment predicate in a protocol-based VLAN " "switch, it will be necessary to subclass VLAN, " "InboundVLAN, or both. If the predicate applies to all ports " "in the switch, then only VLAN needs to be subclassed. If the " "predicate may vary based on the port, then InboundVLAN must " "be subclassed, and CIM_VLAN might have to be subclassed " "as well."): ToSubclass Amended, LOCALE(0x409) ] class CIM_VLAN : CIM_ServiceAccessPoint { [Description ("VLAN identifying number."): ToSubclass Amended ] uint32 VLANNumber; }; // ================================================================== // Component // ================================================================== [Association, Abstract, Aggregation, Version ("2.6.0"), Description ( "CIM_Component is a generic association used to establish " "'part of' relationships between Managed System Elements. For " "example, the SystemComponent association defines parts of " "a System.") : ToSubclass Amended, LOCALE(0x409)] class CIM_Component { [Aggregate, Key, Description ( "The parent element in the association.") : ToSubclass Amended] CIM_ManagedSystemElement REF GroupComponent; [Key, Description ( "The child element in the association.") : ToSubclass Amended] CIM_ManagedSystemElement REF PartComponent; }; // =================================================================== // RedundancyGroup // =================================================================== [Abstract, Version ("2.6.0"), Description ( "A class derived from LogicalElement that is a special " "collection of ManagedSystemElements. This collection indicates " "that the aggregated components together provide redundancy. " "All elements aggregated in a RedundancyGroup should be " "instantiations of the same object class.") : ToSubclass Amended, LOCALE(0x409)] class CIM_RedundancyGroup : CIM_LogicalElement { [Key, MaxLen (256): ToSubclass, Description ( "CreationClassName indicates the name of the class or " "the subclass used in the creation of an instance. When " "used with the other key properties of this class, this " "property allows all instances of this class and its " "subclasses to be uniquely identified."): ToSubclass Amended ] string CreationClassName; [Override("Name"), Key, MaxLen (256): ToSubclass, Description ( "The RedundancyGroup Name serves as the key for the " "Group's instance in an enterprise environment."): ToSubclass Amended ] string Name; [Description ( "RedundancyStatus provides information on the state of the " "RedundancyGroup. \"Fully Redundant\" (value=2) means that " "all of the configured redundancy is still available; " "\"Degraded Redundancy\" (3) means that some failures have " "been experienced but some reduced amount of redundancy is " "still available; \"Redundancy Lost\" (4) means that a " "sufficient number of failures have been experienced such " "that no redundancy is available and the next failure " "experienced will cause overall failure. Also, the values, " "\"Other\" (1) and \"Unknown\" (0), are defined."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4"}: ToSubclass Amended, Values {"Unknown", "Other", "Fully Redundant", "Degraded Redundancy", "Redundancy Lost"} : ToSubclass Amended] uint16 RedundancyStatus; }; // =================================================================== // RedundancyComponent // =================================================================== [Abstract, Association, Aggregation, Version ("2.6.0"), Description ( "A RedundancyGroup aggregates Managed System Elements and " "indicates that these elements, taken together, provide " "redundancy. All elements aggregated in a RedundancyGroup " "should be instantiations of the same object class."): ToSubclass Amended, LOCALE(0x409) ] class CIM_RedundancyComponent : CIM_Component { [Override ("GroupComponent"), Aggregate, Description ( "The RedundancyComponent association indicates that " "'this set of fans' or 'these physical extents' participate " "in a single RedundancyGroup.") : ToSubclass Amended] CIM_RedundancyGroup REF GroupComponent; }; // =================================================================== // NetworkAdapter // =================================================================== [Abstract, Version ("2.6.0"), Description ( "NetworkAdapter is an Abstract class defining general " "networking hardware concepts (for example, PermanentAddress or " "Speed of operation). NetworkAdapters are Devices with the " "ability to support multiple, higher level protocols and provide " "the implementation behind the Network Model's ProtocolEndpoint " "class. (This information is conveyed using the DeviceSAP" "Implementation association, defined in the Core Model.) " "NetworkAdapters and their Endpoints represent the potential for " "connectivity among peers. \n" "The 'potential for connectivity' is very different than the " "master-slave/controller-controlled by relationships of CIM_" "Controller. Sometimes, however, a single Device is both a kind " "of NetworkAdapter and a Controller - for example, when a Fibre" "ChannelAdapter is operating as a ComputerSystem's SCSIController. " "In this case, there are aspects of the Device that are network " "oriented and others that are Controller oriented - and, both the " "Controller and Adapter classes should be instantiated. A Device" "Identity relationship would also be created to tie together these " "differing aspects/abstractions of the Device."): ToSubclass Amended, LOCALE(0x409)] class CIM_NetworkAdapter : CIM_LogicalDevice { [MaxLen (64): ToSubclass, Description ( "PermanentAddress defines the network address hardcoded into " "an adapter. This 'hardcoded' address may be changed via " "firmware upgrade or software configuration. If so, this field " "should be updated when the change is made. PermanentAddress " "should be left blank if no 'hardcoded' address exists for the " "NetworkAdapter."): ToSubclass Amended, MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.2"}: ToSubclass ] string PermanentAddress; [MaxLen (64): ToSubclass, Description ( "An array of strings indicating the network addresses for an " "adapter."): ToSubclass Amended, ArrayType ("Indexed"): ToSubclass, MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.3"}: ToSubclass ] string NetworkAddresses[]; [Description ( "An estimate of the current bandwidth in Bits per Second. " "For Adapters which vary in bandwidth or for those where " "no accurate estimation can be made, this property should " "contain the nominal bandwidth."): ToSubclass Amended, Units ("Bits per Second"): ToSubclass Amended, MappingStrings {"MIB.IETF|RFC1213-MIB.ifSpeed", "MIF.DMTF|Network Adapter 802 Port|001.5"}: ToSubclass ] uint64 Speed; [Description ( "The maximum speed, in Bits per Second, for the Network" "Adapter."): ToSubclass Amended, Units ("Bits per Second"): ToSubclass Amended ] uint64 MaxSpeed; [Description ( "Boolean indicating that the Adapter is operating in " "full duplex mode."): ToSubclass Amended ] boolean FullDuplex; [Description ( "A boolean indicating whether the NetworkAdapter is capable " "of automatically determining the speed or other communications " "characteristics of the attached network media."): ToSubclass Amended ] boolean AutoSense; [Description ( "The total number of octets transmitted, including framing " "characters."): ToSubclass Amended, Mappingstrings {"MIB.IETF|RFC1213-MIB.ifOutOctets", "MIF.DMTF|Network Adapter 802 Port|001.7"}: ToSubclass, Counter: ToSubclass ] uint64 OctetsTransmitted; [Description ( "The total number of octets received, including framing " "characters."): ToSubclass Amended, Mappingstrings {"MIB.IETF|RFC1213-MIB.ifInOctets", "MIF.DMTF|Network Adapter 802 Port|001.9"}: ToSubclass, Counter : ToSubclass] uint64 OctetsReceived; }; // =================================================================== // ExtraCapacityGroup // =================================================================== [Abstract, Version ("2.6.0"), Description ( "A class derived from RedundancyGroup indicating that the " "aggregated elements have more capacity or capability than is " "needed. An example of this type of redundancy is the " "installation of N+1 power supplies or fans in a system."): ToSubclass Amended, LOCALE(0x409) ] class CIM_ExtraCapacityGroup : CIM_RedundancyGroup { [Description ( "MinNumberNeeded indicates the smallest number of elements " "that must be operational in order to have redundancy. " "For example, in an N+1 redundancy relationship, " "the MinNumberNeeded property should be set equal to N."): ToSubclass Amended ] uint32 MinNumberNeeded; [Description ( "Boolean indicating whether load balancing is supported by " "the ExtraCapacityGroup."): ToSubclass Amended ] boolean LoadBalancedGroup; }; // =================================================================== // NetworkAdapterRedundancyComponent // =================================================================== [Abstract, Association, Aggregation, Version ("2.6.0"), Description ( "CIM_NetworkAdapterRedundancyComponent indicates the role that " "a NetworkAdapter plays in a ExtraCapacityGroup, providing " "load balancing.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_NetworkAdapterRedundancyComponent : CIM_RedundancyComponent { [Override("GroupComponent"), Aggregate, Description ( "The RedundancyGroup representing a set of load balanced " "NetworkAdapters."): ToSubclass Amended ] CIM_ExtraCapacityGroup REF GroupComponent; [Override("PartComponent"), Description ( "The Network Adapter(s) belonging to the RedundancyGroup."): ToSubclass Amended ] CIM_NetworkAdapter REF PartComponent; [Description ( "Indicates the scope of load balancing for the NetworkAdapters " "involved in the RedundancyGroup. Load balancing may be " "restricted to transmitting data only (value=1), " "receiving data only (value=2), or used for both transmit " "and receive (value=3)."): ToSubclass Amended, ValueMap {"0", "1", "2", "3"}: ToSubclass Amended, Values {"Unknown", "Load Balancing - Transmit Only", "Load Balancing - Receive Only", "Full Load Balancing"}: ToSubclass Amended ] uint16 ScopeOfBalancing; [Description ( "Boolean indicating whether the Network Adapter is an original " "primary adapter (value=1), a preferred primary adapter (2), " "or both (3). Values of \"Unknown\" and \"Not Applicable\" may " "also be specified."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4"}: ToSubclass Amended, Values {"Unknown", "Original Primary", "Preferred Primary", "Both", "Not Applicable"}: ToSubclass Amended ] uint16 PrimaryAdapter; }; // =================================================================== // EthernetAdapter // =================================================================== [Abstract, Version ("2.6.0"), Description ( "Capabilities and management of an EthernetAdapter."): ToSubclass Amended, LOCALE(0x409) ] class CIM_EthernetAdapter : CIM_NetworkAdapter { [Override ("NetworkAddresses"), Description ( "Ethernet/802.3 MAC addresses formatted as twelve hexadecimal " "digits (e.g. \"010203040506\"), with each pair representing " "one of the six octets of the MAC address in \"canonical\" bit " "order. (Thus, the Group address bit is found in the low " "order bit of the first character of the string.)"): ToSubclass Amended, ArrayType ("Indexed"): ToSubclass ] string NetworkAddresses[]; [Description ( "The maximum size of the INFO (non-MAC) field that will be " "received or transmitted."): ToSubclass Amended, Mappingstrings {"MIB.IETF|BRIDGE-MIB.dot1dTpPortMaxInfo"}: ToSubclass ] uint32 MaxDataSize; [Description ( "Capabilities of the EthernetAdapter. For example, the " "Device may support AlertOnLan, WakeOnLan, Load Balancing " "and/or FailOver. If failover or load balancing " "capabilities are listed, a SpareGroup (failover) or " "ExtraCapacityGroup (load balancing) should also be defined " "to completely describe the capability."): ToSubclass Amended, ArrayType ("Indexed"), ValueMap {"0", "1", "2", "3", "4", "5"}: Amended, Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan", "FailOver", "LoadBalancing"}: Amended, ModelCorrespondence { "CIM_EthernetAdapter.CapabilityDescriptions"}: ToSubclass ] uint16 Capabilities[]; [Description ( "An array of free-form strings providing more detailed " "explanations for any of the EthernetAdapter features " "indicated in the Capabilities array. Note, each entry of " "this array is related to the entry in the Capabilities " "array that is located at the same index."): ToSubclass Amended, ArrayType ("Indexed"): ToSubclass, ModelCorrespondence {"CIM_EthernetAdapter.Capabilities"}: ToSubclass ] string CapabilityDescriptions[]; [Description ( "Specifies which capabilities are enabled from the list " "of all supported ones, defined in the Capabilities array."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4", "5"}: ToSubclass Amended, Values {"Unknown", "Other", "AlertOnLan", "WakeOnLan", "FailOver", "LoadBalancing"}: ToSubclass Amended, ModelCorrespondence {"CIM_EthernetAdapter.Capabilities"}: ToSubclass] uint16 EnabledCapabilities[]; [Description ( "The number of times there was an invalid data symbol when " "a valid carrier was present. The count is incremented at " "most once per carrier event, even if multiple symbol " "errors occur during the carrier event."): ToSubclass Amended, MappingStrings {"MIB.IETF|EtherLike-MIB.dot3StatsSymbolErrors"}: ToSubclass, Counter : ToSubclass] uint32 SymbolErrors; [Description ("The total number of packets transmitted."): ToSubclass Amended, MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.6"}: ToSubclass, Counter: ToSubclass ] uint64 TotalPacketsTransmitted; [Description ("The total number of packets received."): ToSubclass Amended, MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.8"}: ToSubclass, Counter: ToSubclass ] uint64 TotalPacketsReceived; [Description ( "A count of frames received on a particular interface " "that are not an integral number of octets in length and do " "not pass the FCS check. The count represented by an " "instance of this object is incremented when the alignment" "Error status is returned by the MAC layer to the LLC (or " "other MAC user). Received frames for which multiple error " "conditions obtain are, according to the conventions of IEEE " "802.3 Layer Management, counted exclusively according to " "the error status presented to the LLC."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsAlignmentErrors"}: ToSubclass, Counter: ToSubclass ] uint32 AlignmentErrors; [Description ( "A count of frames received on a particular interface " "that are an integral number of octets in length but do " "not pass the FCS check. The count represented by an " "instance of this object is incremented when the Frame" "CheckError status is returned by the MAC layer to the " "LLC (or other MAC user). Received frames for which " "multiple error conditions obtaine are, according to the " "conventions of IEEE 802.3 Layer Management, counted " "exclusively according to the error status presented to " "the LLC."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsFCSErrors"}: ToSubclass, Counter: ToSubclass ] uint32 FCSErrors; [Description ( "A count of successfully transmitted frames on a particular " "interface for which transmission is inhibited by exactly " "one collision. A frame that is counted by an instance of " "this object is not counted by the corresponding instance " "of the MultipleCollisionFrames property.") : ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsSingleCollisionFrames"}: ToSubclass, Counter: ToSubclass ] uint32 SingleCollisionFrames; [Description ( "A count of successfully transmitted frames on a particular " "interface for which transmission is inhibited by more than " "one collision. A frame that is counted by an instance of " "this object is not counted by the corresponding instance " "of the SingleCollisionFrames property.") : ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsMultipleCollisionFrames"}: ToSubclass, Counter: ToSubclass ] uint32 MultipleCollisionFrames; [Description ( "A count of times that the SQE TEST ERROR message is " "generated by the PLS sublayer for a particular interface. " "The SQE TEST ERROR message is defined in section " "7.2.2.2.4 of ANSI/IEEE 802.3-1985 and its generation is " "described in section 7.2.4.6 of the same document."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsSQETestErrors"}: ToSubclass, Counter: ToSubclass ] uint32 SQETestErrors; [Description ( "A count of frames for which the first transmission " "attempt on a particular interface is delayed because the " "medium is busy. The count represented by an instance of " "this object does not include frames involved in collisions."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsDeferredTransmissions"}: ToSubclass, Counter: ToSubclass ] uint32 DeferredTransmissions; [Description ( "The number of times that a collision is detected on a " "particular interface later than 512 bit-times into the " "transmission of a packet. Five hundred and twelve bit-" "times corresponds to 51.2 microseconds on a 10 Mbit/s " "system. A (late) collision included in a count " "represented by an instance of this object is also " "considered as a (generic) collision for purposes of " "other collision-related statistics."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsLateCollisions"}: ToSubclass, Counter: ToSubclass ] uint32 LateCollisions; [Description ( "A count of frames for which transmission on a particular " "interface fails due to excessive collisions."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsExcessiveCollisions"}: ToSubclass, Counter: ToSubclass ] uint32 ExcessiveCollisions; [Description ( "A count of frames for which transmission on a particular " "interface fails due to an internal MAC sublayer transmit " "error. A frame is only counted by an instance of this " "object if it is not counted by the corresponding instance " "of either the LateCollisions property, the Excessive" "Collisions property, or the CarrierSenseErrors property. " "The precise meaning of the count represented by an instance " "of this object is implementation-specific. In particular, " "an instance of this object may represent a count of " "transmission errors on a particular interface that are " "not otherwise counted."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsInternalMacTransmitErrors"}: ToSubclass, Counter: ToSubclass ] uint32 InternalMACTransmitErrors; [Description ( "A count of frames for which reception on a particular " "interface fails due to an internal MAC sublayer receive " "error. A frame is only counted by an instance of this " "object if it is not counted by the corresponding instance " "of either the FrameTooLongs property, the AlignmentErrors " "property, or the FCSErrors property. The precise meaning " "of the count represented by an instance of this object is " "implementation-specific. In particular, an instance of " "this object may represent a count of receive errors on a " "particular interface that are not otherwise counted."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsInternalMacReceiveErrors"}: ToSubclass, Counter: ToSubclass ] uint32 InternalMACReceiveErrors; [Description ( "The number of times that the carrier sense condition was " "lost or never asserted when attempting to transmit a frame " "on a particular interface. The count represented by an " "instance of this object is incremented at most once per " "transmission attempt, even if the carrier sense condition " "fluctuates during a transmission attempt."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsCarrierSenseErrors"}: ToSubclass, Counter: ToSubclass ] uint32 CarrierSenseErrors; [Description ( "A count of frames received on a particular interface that " "exceed the maximum permitted frame size. The count " "represented by an instance of this object is incremented " "when the FrameTooLong status is returned by the MAC layer " "to the LLC (or other MAC user). Received frames for which " "multiple error conditions obtain are, according to the " "conventions of IEEE 802.3 Layer Management, counted " "exclusively according to the error status presented to " "the LLC."): ToSubclass Amended, Mappingstrings { "MIB.IETF|EtherLike-MIB.dot3StatsFrameTooLongs"}: ToSubclass, Counter: ToSubclass ] uint32 FrameTooLongs; }; // ================================================================== // Dependency // ================================================================== [Association, Abstract, Version ("2.6.0"), Description ( "CIM_Dependency is a generic association used to establish " "dependency relationships between ManagedElements.") : ToSubclass Amended, LOCALE(0x409)] class CIM_Dependency { [Key, Description ( "Antecedent represents the independent object in this " "association.") : ToSubclass Amended] CIM_ManagedElement REF Antecedent; [Key, Description ( "Dependent represents the object dependent on the " "Antecedent."): ToSubclass Amended ] CIM_ManagedElement REF Dependent; }; // ================================================================== // ProvidesServiceToElement // ================================================================== [Abstract, Association, Version ("2.6.0"), Description ( "CIM_ProvidesServiceToElement is used to describe that " "ManagedElements may be dependent on the functionality " "of one or more Services. An example is that a Processor " "and an Enclosure (PhysicalElement) are dependent on AlertOn" "LAN Services to signal an incomplete or erroneous boot, and " "hardware-related errors."): ToSubclass Amended, LOCALE(0x409) ] class CIM_ProvidesServiceToElement : CIM_Dependency { [Override ("Antecedent"), Description ( "The Service provided."): ToSubclass Amended ] CIM_Service ref Antecedent; [Override ("Dependent"), Description ( "The ManagedElement dependent on the Service."): ToSubclass Amended ] CIM_ManagedElement ref Dependent; }; // ================================================================== // ServiceSAPDependency // ================================================================== [Abstract, Association, Version ("2.6.0"), Description ( "CIM_ServiceSAPDependency is an association between a Service " "and a ServiceAccessPoint indicating that the referenced SAP " "is utilized by the Service to provide its functionality. For " "example, Boot Services may invoke BIOS' Disk Services " "(interrupts) in order to function."): ToSubclass Amended, LOCALE(0x409) ] class CIM_ServiceSAPDependency : CIM_Dependency { [Override ("Antecedent"), Description ("The required ServiceAccessPoint."): ToSubclass Amended ] CIM_ServiceAccessPoint REF Antecedent; [Override ("Dependent"), Description ( "The Service that is dependent on an underlying SAP."): ToSubclass Amended ] CIM_Service REF Dependent; }; // ================================================================== // Service // ================================================================== [Abstract, Version ("2.6.0"), Description ( "A CIM_Service is a Logical Element that contains the " "information necessary to represent and manage the " "functionality provided by a Device and/or SoftwareFeature. " "A Service is a general-purpose object to configure and " "manage the implementation of functionality. It is not the " "functionality itself.") : ToSubclass Amended, LOCALE(0x409)] class CIM_Service : CIM_LogicalElement { [Propagated ("CIM_System.CreationClassName"), Key, MaxLen (256): ToSubclass, Description ( "The scoping System's CreationClassName."): ToSubclass Amended ] string SystemCreationClassName; [Propagated ("CIM_System.Name"), Key, MaxLen (256): ToSubclass, Description ("The scoping System's Name."): ToSubclass Amended ] string SystemName; [Key, MaxLen (256): ToSubclass, Description ( "CreationClassName indicates the name of the class or the " "subclass used in the creation of an instance. When used " "with the other key properties of this class, this property " "allows all instances of this class and its subclasses to " "be uniquely identified.") : ToSubclass Amended] string CreationClassName; [Override ("Name"), Key, MaxLen (256): ToSubclass, Description ( "The Name property uniquely identifies the Service and " "provides an indication of the functionality that is " "managed. This functionality is described in more detail in " "the object's Description property."): ToSubclass Amended ] string Name; [MaxLen (10): ToSubclass, Description ( "StartMode is a string value indicating whether the Service " "is automatically started by a System, Operating System, etc. " "or only started upon request."): ToSubclass Amended, ValueMap {"Automatic", "Manual"}: ToSubclass Amended ] string StartMode; [Description ( "Started is a boolean indicating whether the Service " "has been started (TRUE), or stopped (FALSE)."): ToSubclass Amended ] boolean Started; [Description ( "The StartService method places the Service in the started " "state. It returns an integer value of 0 if the Service was " "successfully started, 1 if the request is not supported and " "any other number to indicate an error. In a subclass, the " "set of possible return codes could be specified, using a " "ValueMap qualifier on the method. The strings to which the " "ValueMap contents are 'translated' may also be specified in " "the subclass as a Values array qualifier."): ToSubclass Amended ] uint32 StartService(); [Description ( "The StopService method places the Service in the stopped " "state. It returns an integer value of 0 if the Service was " "successfully stopped, 1 if the request is not supported and " "any other number to indicate an error. In a subclass, the " "set of possible return codes could be specified, using a " "ValueMap qualifier on the method. The strings to which the " "ValueMap contents are 'translated' may also be specified in " "the subclass as a Values array qualifier."): ToSubclass Amended ] uint32 StopService(); }; // ================================================================== // VLANService // ================================================================== [Abstract, Version ("2.6.0"), Description ( "VLANService represents the VLAN aspects of the function " "performed by a switch. Some VLAN-aware devices participate " "in protocols where VLAN information is propagated among " "switches, e.g., GVRP in 802.1Q switches and VTP in Cisco " "Catalyst switches. VLANService also represents the function " "performed by the switch as a participant in such a protocol." "\n\n" "VLANService must be subclassed so that instances can be " "distinguished by their class. If there is a name assigned to " "a set of VLAN-aware switches, e.g., the VTP domain name in " "Cisco Catalyst switches, use the Name attribute inherited " "from CIM_Service to store the name." "\n\n" "A VLANService should be instantiated in a VLAN-aware switch " "even if there is no GVRP-like protocol."): ToSubclass Amended, LOCALE(0x409) ] class CIM_VLANService : CIM_Service { }; // ================================================================== // 802dot1QVLANService // ================================================================== [Abstract, Version ("2.6.0"), Description ( "If a switch supports 802.1Q, an instance of this class " "should be instantiated in the switch. If the switch " "supports GVRP, this class represents the function that " "the switch performs with respect to GVRP."): ToSubclass Amended, LOCALE(0x409) ] class CIM_802dot1QVLANService : CIM_VLANService { }; // ================================================================== // VLANFor // ================================================================== [Abstract, Association, Version ("2.6.0"), Description( "The VLAN Port used by the VLAN Service."): ToSubclass Amended, LOCALE(0x409) ] class CIM_VLANFor : CIM_ServiceSAPDependency { [Override ("Antecedent") ] CIM_VLAN REF Antecedent; [Override ("Dependent"), Min (1) ] CIM_VLANService REF Dependent; }; // =================================================================== // DeviceServiceImplementation // =================================================================== [Abstract, Association, Version ("2.6.0"), Description ( "An association between a Service and how it is implemented. " "The cardinality of this association is many-to-many. " "A Service may be provided by more than one Logical" "Device, operating in conjunction. And, any Device may " "provide more than one Service. When multiple Devices are " "associated with a single Service, it is assumed that these " "elements operate in conjunction to provide the Service. If " "different implementations of a Service exist, each of these " "implementations would result in individual instantiations " "of the Service object. These individual instantiations " "would then have associations to the unique implementations."): ToSubclass Amended, LOCALE(0x409) ] class CIM_DeviceServiceImplementation : CIM_Dependency { [Override ("Antecedent"), Description ("The LogicalDevice."): ToSubclass Amended ] CIM_LogicalDevice REF Antecedent; [Override ("Dependent"), Description ("The Service implemented using the LogicalDevice."): ToSubclass Amended ] CIM_Service REF Dependent; }; // ================================================================== // LogicalIdentity // ================================================================== [Association, Abstract, Version ("2.6.0"), Description ( "CIM_LogicalIdentity is an abstract and generic association, " "indicating that two LogicalElements represent different " "aspects of the same underlying entity. This relationship " "conveys what could be defined with multiple inheritance. It " "is restricted to the 'logical' aspects of a ManagedSystem" "Element. In most scenarios, the Identity relationship is " "determined by the equivalence of Keys or some other " "identifying properties of the related Elements. The " "association should only be used in well understood scenarios. " "This is why the association is abstract - allowing more " "concrete definition and clarification in subclasses. One of " "the scenarios where this relationship is reasonable is to " "represent that a Device is both a 'bus' entity and a " "'functional' entity. For example, a Device could be both a " "USB (bus) and a Keyboard (functional) entity."): ToSubclass Amended, LOCALE(0x409) ] class CIM_LogicalIdentity { [Key, Description ( "SystemElement represents one aspect of the Logical" "Element."): ToSubclass Amended ] CIM_LogicalElement ref SystemElement; [Key, Description ( "SameElement represents an alternate aspect of the " "System entity."): ToSubclass Amended ] CIM_LogicalElement ref SameElement; }; // =================================================================== // NetworkVirtualAdapter // =================================================================== [Abstract, Association, Version ("2.6.0"), Description ( "NetworkVirtualAdapter describes that an instance of Network" "Adapter is actually the result of several Adapters " "participating in a load balanced RedundancyGroup."): ToSubclass Amended, LOCALE(0x409) ] class CIM_NetworkVirtualAdapter : CIM_LogicalIdentity { [Override ("SystemElement"), Description ("The 'virtual' NetworkAdapter."): ToSubclass Amended ] CIM_NetworkAdapter REF SystemElement; [Override ("SameElement"), Description ( "The ExtraCapacity RedundancyGroup that describes the load " "balancing. The result of the load balancing is the 'virtual' " "Adapter."): ToSubclass Amended ] CIM_ExtraCapacityGroup REF SameElement; }; // ================================================================== // SAPSAPDependency // ================================================================== [Abstract, Association, Version ("2.6.0"), Description ( "CIM_SAPSAPDependency is an association between a Service" "AccessPoint and another ServiceAccessPoint indicating that " "the latter is required in order for the former ServiceAccess" "Point to utilize or connect with its Service. For example, " "to print at a network printer, local Print Access Points " "must utilize underlying network-related SAPs, or " "ProtocolEndpoints, in order to send the print request."): ToSubclass Amended, LOCALE(0x409) ] class CIM_SAPSAPDependency:CIM_Dependency { [Override ("Antecedent"), Description ( "The required ServiceAccessPoint."): ToSubclass Amended ] CIM_ServiceAccessPoint REF Antecedent; [Override ("Dependent"), Description ( "The ServiceAccessPoint that is dependent on an underlying " "SAP."): ToSubclass Amended ] CIM_ServiceAccessPoint REF Dependent; }; // =================================================================== // DeviceSAPImplementation // =================================================================== [Association, Abstract, Version ("2.6.0"), Description ( "An association between a ServiceAccessPoint and how " "it is implemented. The cardinality of this association " "is many-to-many. A SAP may be provided by more " "than one LogicalDevice, operating in conjunction. And, any " "Device may provide more than one ServiceAccessPoint. " "When many LogicalDevices are associated with a single " "SAP, it is assumed that these elements operate in " "conjunction to provide the AccessPoint. If different " "implementations of a SAP exist, each of these implementations " "would result in individual instantiations of the " "ServiceAccessPoint object. These individual instantiations " "would then have associations to the unique implementations."): ToSubclass Amended, LOCALE(0x409) ] class CIM_DeviceSAPImplementation : CIM_Dependency { [Override ("Antecedent"), Description ("The LogicalDevice."): ToSubclass Amended ] CIM_LogicalDevice REF Antecedent; [Override ("Dependent"), Description ( "The ServiceAccessPoint implemented using the LogicalDevice."): ToSubclass Amended] CIM_ServiceAccessPoint REF Dependent; }; // =================================================================== // Configuration // =================================================================== [Version ("2.6.0"), Description ( "The Configuration object allows the grouping of sets of " "parameters (defined in Setting objects) and dependencies for " "one or more ManagedSystemElements. The Configuration object " "represents a certain behavior, or a desired functional state " "for the ManagedSystemElements. The desired functional state " "is typically driven by external requirements such as time or " "location. For example, to connect to a Mail System from " "'home', a dependency on a modem exists, but a dependency on " "a network adapter exists at 'work'. Settings for the " "pertinent LogicalDevices (in this example, POTSModem and " "NetworkAdapter) can be defined and aggregated by the " "Configuration. Therefore, two 'Connect to Mail' " "Configurations may be defined grouping the relevant " "dependencies and Setting objects."): ToSubclass Amended, LOCALE(0x409) ] class CIM_Configuration : CIM_ManagedElement { [Key, MaxLen (256): ToSubclass, Description ( "The label by which the Configuration object is known."): ToSubclass Amended ] string Name; }; // =================================================================== // ElementConfiguration // =================================================================== [Association, Version ("2.6.0"), Description ( "This association relates a Configuration object to one or " "more ManagedSystemElements. The Configuration object " "represents a certain behavior, or a desired functional state " "for the associated ManagedSystemElements."): ToSubclass Amended, LOCALE(0x409) ] class CIM_ElementConfiguration { [Key, Description ("The ManagedSystemElement."): ToSubclass Amended ] CIM_ManagedSystemElement REF Element; [Key, Description ( "The Configuration object that groups the Settings and " "dependencies associated with the ManagedSystemElement."): ToSubclass Amended ] CIM_Configuration REF Configuration; }; // =================================================================== // DeviceIdentity // =================================================================== [Association, Abstract, Version ("2.6.0"), Description ( "CIM_DeviceIdentity indicates that two LogicalDevices " "represent different aspects of the same underlying entity. " "This association refines the CIM_LogicalIdentity superclass " "by restricting it to the Device level and defining its use in " "well understood scenarios. One of these scenarios is to " "represent that a Device is both a 'bus' entity and a " "'functional' entity. For example, a Device could be both a PCI " "Device (or a USB Device), as well as a CIM_Keyboard. The other " "scenario is where a Device plays multiple functional roles " "that can not be distinguished by their hardware realization " "alone. For example, a Fibre Channel adapter might have aspects " "of both a NetworkAdapter and a SCSIController."): ToSubclass Amended, LOCALE(0x409) ] class CIM_DeviceIdentity: CIM_LogicalIdentity { [Override ("SystemElement"), Description ( "SystemElement represents one aspect of the Device."): ToSubclass Amended ] CIM_LogicalDevice ref SystemElement; [Override ("SameElement"), Description ( "SameElement represents an alternate aspect of " "the System entity."): ToSubclass Amended ] CIM_LogicalDevice ref SameElement; }; // =================================================================== // DeviceSoftware // =================================================================== [Association, Version ("2.6.0"), Description ( "The DeviceSoftware relationship identifies any software that " "is associated with a Device - such as drivers, configuration " "or application software, or firmware."): ToSubclass Amended, LOCALE(0x409) ] class CIM_DeviceSoftware : CIM_Dependency { [Override ("Antecedent"), Description ("The SoftwareElement."): ToSubclass Amended ] CIM_SoftwareElement REF Antecedent; [Override ("Dependent"), Description ( "The LogicalDevice that requires or uses the software."): ToSubclass Amended ] CIM_LogicalDevice REF Dependent; [Description ( "An enumerated integer to indicate the role this software " "plays in regards to its associated Device. For example, this " "software could be instrumentation (value=5) or firmware (6)."): ToSubclass Amended, ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "8"}: ToSubclass Amended, Values {"Unknown", "Other", "Driver", "Configuration Software", "Application Software", "Instrumentation", "Firmware", "BIOS", "Boot ROM"}: ToSubclass Amended, ModelCorrespondence {"CIM_DeviceSoftware.PurposeDescription"}: ToSubclass, MappingStrings {"MIF.DMTF|SubComponent Software|001.2"}: ToSubclass ] uint16 Purpose; [Description ( "A free-form string to provide more information for " "the Purpose property, e.g. \"Application Software\".") : ToSubclass Amended, ModelCorrespondence {"CIM_DeviceSoftware.Purpose"} : ToSubclass] string PurposeDescription; [Description ( "Boolean indicating that the software is 'burned into' or " "otherwise located on the hardware of the LogicalDevice."): ToSubclass Amended ] boolean LoadedOnDevice; [Description ( "Boolean indicating whether the software is upgradeable, " "when it is LoadedOnDevice. Software that is loaded as " "part of the OperatingSystem is typically changeable and " "upgradeable. However, when DeviceSoftware is burned into " "EEPROM or a chip that Realizes the LogicalDevice, then " "it may not be upgradeable. This property indicates the " "ability to update and upgrade DeviceSoftware."): ToSubclass Amended ] boolean UpgradeableOnDevice; }; // =================================================================== // Setting // =================================================================== [Abstract, Version ("2.6.0"), Description ( "The Setting class represents configuration-related and " "operational parameters for one or more ManagedSystem" "Element(s). A ManagedSystemElement may have multiple Setting " "objects associated with it. The current operational values " "for an Element's parameters are reflected by properties in " "the Element itself or by properties in its associations. " "These properties do not have to be the same values present " "in the Setting object. For example, a modem may have a " "Setting baud rate of 56Kb/sec but be operating " "at 19.2Kb/sec."): ToSubclass Amended, LOCALE(0x409) ] class CIM_Setting : CIM_ManagedElement { [MaxLen (256): ToSubclass, Description ( "The identifier by which the Setting object is known."): ToSubclass Amended ] string SettingID; [Description ( "The VerifyOKToApplyToMSE method is used to verify that " "this Setting can be 'applied' to the referenced Managed" "SystemElement, at the given time or time interval. This " "method takes three input parameters: MSE (the Managed" "SystemElement that is being verified), TimeToApply (which, " "being a datetime, can be either a specific time or a time " "interval), and MustBeCompletedBy (which indicates the " "required completion time for the method). The return " "value should be 0 if it is OK to apply the Setting, 1 if " "the method is not supported, 2 if the Setting cannot be " "applied within the specified times, and any other number " "if an error occurred. In a subclass, the " "set of possible return codes could be specified, using a " "ValueMap qualifier on the method. The strings to which the " "ValueMap contents are 'translated' may also be specified in " "the subclass as a Values array qualifier."): ToSubclass Amended ] uint32 VerifyOKToApplyToMSE( [IN] CIM_ManagedSystemElement ref MSE, [IN] datetime TimeToApply, [IN] datetime MustBeCompletedBy); [Description ( " The ApplyToMSE method performs the actual application of " "the Setting to the referenced ManagedSystemElement. It " "takes three input parameters: MSE (the ManagedSystem" "Element to which the Setting is being applied), " "TimeToApply (which, being a datetime, can be either a " "specific time or a time interval), and MustBeCompletedBy " "(which indicates the required completion time for the " "method). Note that the semantics of this method are that " "individual Settings are either wholly applied or not " "applied at all to their target ManagedSystemElement. The " "return value should be 0 if the Setting is successfully " "applied to the referenced ManagedSystemElement, 1 if the " "method is not supported, 2 if the Setting was not applied " "within the specified times, and any other number if an " "error occurred. In a subclass, the set of possible return " "codes could be specified, using a ValueMap qualifier on " "the method. The strings to which the ValueMap contents are " "'translated' may also be specified in the subclass as a " "Values array qualifier. \n" " Note: If an error occurs in applying the Setting to a " "ManagedSystemElement, the Element must be configured as " "when the 'Apply' attempt began. That is, the Element " "should NOT be left in an indeterminate state."): ToSubclass Amended ] uint32 ApplyToMSE( [IN] CIM_ManagedSystemElement ref MSE, [IN] datetime TimeToApply, [IN] datetime MustBeCompletedBy); [Description ( " The VerifyOKToApplyToCollection method is used to verify " "that this Setting can be 'applied' to the referenced " "Collection of ManagedSystemElements, at the given time " "or time interval, without causing adverse effects to " "either the Collection itself or its surrounding " "environment. The net effect is to execute the " "VerifyOKToApply method against each of the Elements " "aggregated by the Collection. This method takes three " "input parameters: Collection (the Collection of Managed" "SystemElements that is being verified), TimeToApply (which, " "being a datetime, can be either a specific time or a time " "interval), and MustBeCompletedBy (which indicates the " "required completion time for the method). The return " "value should be 0 if it is OK to apply the Setting, 1 if " "the method is not supported, 2 if the Setting cannot be " "applied within the specified times, and any other number if " "an error occurred. One output parameter is defined - " "CanNotApply - which is a string array that lists the keys " "of the ManagedSystemElements to which the Setting can NOT be " "applied. This enables those Elements to be revisited and " "either fixed, or other corrective action taken. \n" " In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array " "qualifier.") : ToSubclass Amended] uint32 VerifyOKToApplyToCollection ( [IN] CIM_CollectionOfMSEs ref Collection, [IN] datetime TimeToApply, [IN] datetime MustBeCompletedBy, [IN (false), OUT] string CanNotApply[]); [Description ( " The ApplyToCollection method performs the application of " "the Setting to the referenced Collection of ManagedSystem" "Elements. The net effect is to execute the ApplyToMSE " "method against each of the Elements aggregated by the " "Collection. If the input value ContinueOnError is FALSE, " "this method applies the Setting to all Elements in the " "Collection until it encounters an error, in which case it " "stops execution, logs the key of the Element that caused " "the error in the CanNotApply array, and issues a return code " "of 2. If the input value ContinueOnError is TRUE, then this " "method applies the Setting to all the ManagedSystemElements " "in the Collection, and reports the failed Elements in the " "array, CanNotApply. For the latter, processing will continue " "until the method is applied to all Elements in the " "Collection, regardless of any errors encountered. The key of " "each ManagedSystemElement to which the Setting could not be " "applied is logged into the CanNotApply array. This method " "takes four input parameters: Collection (the Collection of " "Elements to which the Setting is being applied), TimeToApply " "(which, being a datetime, can be either a specific time or a " "time interval), ContinueOnError (TRUE means to continue " "processing on encountering an error), and MustBeCompletedBy " "(which indicates the required completion time for the " "method). The return value should be 0 if the Setting is " "successfully applied to the referenced Collection, 1 if the " "method is not supported, 2 if the Setting was not applied " "within the specified times, 3 if the Setting cannot be " "applied using the input value for ContinueOnError, and any " "other number if an error occurred. One output parameter is " "defined, CanNotApplystring, which is an array that lists " "the keys of the ManagedSystemElements to which the Setting " "was NOT able to be applied. This output parameter has " "meaning only when the ContinueOnError parameter is TRUE. \n" " In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array " "qualifier. \n" "Note: if an error occurs in applying the Setting to a " "ManagedSystemElement in the Collection, the Element must be " "configured as when the 'Apply' attempt began. That is, the " "Element should NOT be left in an indeterminate state."): ToSubclass Amended ] uint32 ApplyToCollection( [IN] CIM_CollectionOfMSEs ref Collection, [IN] datetime TimeToApply, [IN] boolean ContinueOnError, [IN] datetime MustBeCompletedBy, [IN (false), OUT] string CanNotApply[]); [Description ( "The VerifyOKToApplyIncrementalChangeToMSE method " "is used to verify that a subset of the properties in " "this Setting can be 'applied' to the referenced Managed" "SystemElement, at the given time or time interval. This " "method takes four input parameters: MSE (the Managed" "SystemElement that is being verified), TimeToApply (which, " "being a datetime, can be either a specific time or a time " "interval), MustBeCompletedBy (which indicates the " "required completion time for the method), and a " "PropertiesToApply array (which contains a list of the " "property names whose values will be verified.) " "If the array is null, empty or contains the string \"ALL\" " "as a property name, then all Settings properties shall be " "verified. If it is set to \"NONE\", then no Settings " "properties will be verified. The return " "value should be 0 if it is OK to apply the Setting, 1 if " "the method is not supported, 2 if the Setting cannot be " "applied within the specified times, and any other number " "if an error occurred. In a subclass, the " "set of possible return codes could be specified, using a " "ValueMap qualifier on the method. The strings to which the " "ValueMap contents are 'translated' may also be specified in " "the subclass as a Values array qualifier."): ToSubclass Amended ] uint32 VerifyOKToApplyIncrementalChangeToMSE( [IN] CIM_ManagedSystemElement ref MSE, [IN] datetime TimeToApply, [IN] datetime MustBeCompletedBy, [IN] string PropertiesToApply[]); [Description ( " The ApplyIncrementalChangeToMSE method performs the " "actual application of a subset of the properties in " "the Setting to the referenced ManagedSystemElement. It " "takes four input parameters: MSE (the ManagedSystem" "Element to which the Setting is being applied), " "TimeToApply (which, being a datetime, can be either a " "specific time or a time interval), MustBeCompletedBy " "(which indicates the required completion time for the " "method), and a PropertiesToApply array (which contains a " "list of the property names whose values will be applied.) If a " "property is not in this list, it will be ignored by the Apply. " "If the array is null, empty or contains the string \"ALL\" " "as a property name, then all Settings properties shall be " "applied. If it is set to \"NONE\", then no Settings " "properties will be applied. \n" " Note that the semantics of this method are that " "individual Settings are either wholly applied or not " "applied at all to their target ManagedSystemElement. The " "return value should be 0 if the Setting is successfully " "applied to the referenced ManagedSystemElement, 1 if the " "method is not supported, 2 if the Setting was not applied " "within the specified times, and any other number if an " "error occurred. In a subclass, the set of possible return " "codes could be specified, using a ValueMap qualifier on " "the method. The strings to which the ValueMap contents are " "'translated' may also be specified in the subclass as a " "Values array qualifier. \n" " Note: If an error occurs in applying the Setting to a " "ManagedSystemElement, the Element must be configured as " "when the 'Apply' attempt began. That is, the Element " "should NOT be left in an indeterminate state."): ToSubclass Amended ] uint32 ApplyIncrementalChangeToMSE( [IN] CIM_ManagedSystemElement ref MSE, [IN] datetime TimeToApply, [IN] datetime MustBeCompletedBy, [IN] string PropertiesToApply[]); [Description ( " The VerifyOKToApplyIncrementalChangeToCollection method " "is used to verify that a subset of the properties in " "this Setting can be 'applied' to the referenced " "Collection of ManagedSystemElements, at the given time " "or time interval, without causing adverse effects to " "either the Collection itself or its surrounding " "environment. The net effect is to execute the " "VerifyOKToApplyIncrementalChangeToMSE method " "against each of the Elements " "aggregated by the Collection. This method takes three " "input parameters: Collection (the Collection of Managed" "SystemElements that is being verified), TimeToApply (which, " "being a datetime, can be either a specific time or a time " "interval), MustBeCompletedBy (which indicates the " "required completion time for the method), and a " "PropertiesToApply array (which contains a list of the " "property names whose values will be verified. " "If they array is null or empty or constains the string \"all\" " "as a property name then all Settings properties shall be " "verified. If it is set to \"none\" then no Settings properties " "will be verified). The return " "value should be 0 if it is OK to apply the Setting, 1 if " "the method is not supported, 2 if the Setting cannot be " "applied within the specified times, and any other number if " "an error occurred. One output parameter is defined - " "CanNotApply - which is a string array that lists the keys of " "the ManagedSystemElements to which the Setting can NOT be " "applied. This enables those Elements to be revisited and " "either fixed, or other corrective action taken. \n" " In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array " "qualifier."): ToSubclass Amended ] uint32 VerifyOKToApplyIncrementalChangeToCollection ( [IN] CIM_CollectionOfMSEs ref Collection, [IN] datetime TimeToApply, [IN] datetime MustBeCompletedBy, [IN] string PropertiesToApply[], [IN (false), OUT] string CanNotApply[]); [Description ( " The ApplyIncrementalChangeToCollection method performs " "the application of a subset of the properties in this " "Setting to the referenced Collection of ManagedSystem" "Elements. The net effect is to execute the " "ApplyIncrementalChangeToMSE " "method against each of the Elements aggregated by the " "Collection. If the input value ContinueOnError is FALSE, " "this method applies the Setting to all Elements in the " "Collection until it encounters an error, in which case it " "stops execution, logs the key of the Element that caused " "the error in the CanNotApply array, and issues a return code " "of 2. If the input value ContinueOnError is TRUE, then this " "method applies the Setting to all the ManagedSystemElements " "in the Collection, and reports the failed Elements in the " "array, CanNotApply. For the latter, processing will continue " "until the method is applied to all Elements in the " "Collection, regardless of any errors encountered. The key of " "each ManagedSystemElement to which the Setting could not be " "applied is logged into the CanNotApply array. This method " "takes four input parameters: Collection (the Collection of " "Elements to which the Setting is being applied), TimeToApply " "(which, being a datetime, can be either a specific time or a " "time interval), ContinueOnError (TRUE means to continue " "processing on encountering an error), and MustBeCompletedBy " "(which indicates the required completion time for the " "method), and a PropertiesToApply array (which contains a list " "of the property names whose values will be applied.) If a " "property is not in this list, it will be ignored by the Apply. " "If the array is null or empty or contains the string \"ALL\" " "as a property name, then all Settings properties shall be " "applied. If it is set to \"NONE\", then no Settings properties " "will be applied. \n" " The return value should be 0 if the Setting is " "successfully applied to the referenced Collection, 1 if the " "method is not supported, 2 if the Setting was not applied " "within the specified time, 3 if the Setting cannot be " "applied using the input value for ContinueOnError, and any " "other number if an error occurred. One output parameter is " "defined, CanNotApplystring, which is an array that lists " "the keys of the ManagedSystemElements to which the Setting " "was NOT able to be applied. This output parameter has " "meaning only when the ContinueOnError parameter is TRUE. \n" " In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array " "qualifier. \n" " Note: if an error occurs in applying the Setting to a " "ManagedSystemElement in the Collection, the Element must be " "configured as when the 'Apply' attempt began. That is, the " "Element should NOT be left in an indeterminate state."): ToSubclass Amended ] uint32 ApplyIncrementalChangeToCollection( [IN] CIM_CollectionOfMSEs ref Collection, [IN] datetime TimeToApply, [IN] boolean ContinueOnError, [IN] datetime MustBeCompletedBy, [IN] string PropertiesToApply[], [IN (false), OUT] string CanNotApply[]); }; // =================================================================== // BootService // =================================================================== [Abstract, Version ("2.6.0"), Description ( "BootService represents the functionality provided by a Device, " "software or via a Network to load an Operating System on a " "UnitaryComputerSystem."): ToSubclass Amended, LOCALE(0x409) ] class CIM_BootService : CIM_Service { }; // =================================================================== // SettingContext // =================================================================== [Association, Aggregation, Version ("2.6.0"), Description ( "This relationship associates Configuration objects with " "Setting objects. For example, a NetworkAdapter's Settings " "could change based on the site/network to which its hosting " "ComputerSystem is attached. In this case, the ComputerSystem " "would have two different Configuration objects, corresponding " "to the differences in network configuration for the two network " "segments. Configuration A would aggregate a Setting object for " "the NetworkAdapter when operating on segment \"ANet\", whereas " "Configuration B would aggregate a different NetworkAdapter " "Setting object, specific to segment \"BNet\". Note that many " "Settings of the computer are independent of the network " "Configuration. For example, both Configurations A and B would " "aggregate the same Setting object for the ComputerSystem's " "MonitorResolution."):ToSubclass Amended, LOCALE(0x409) ] class CIM_SettingContext { [Aggregate, Key, Description ( "The Configuration object that aggregates the Setting."): ToSubclass Amended ] CIM_Configuration REF Context; [Key, Description ("An aggregated Setting."): ToSubclass Amended ] CIM_Setting REF Setting; }; // =================================================================== // ElementSetting // =================================================================== [Association, Abstract, Version ("2.6.0"), Description ( "ElementSetting represents the association between Managed" "SystemElements and the Setting class(es) defined for them.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_ElementSetting { [Key, Description ("The ManagedSystemElement."): ToSubclass Amended ] CIM_ManagedSystemElement REF Element; [Key, Description ( "The Setting object associated with the ManagedSystem" "Element.") : ToSubclass Amended] CIM_Setting REF Setting; }; // ================================================================== // DiagnosticTest // ================================================================== [Abstract, Version("2.6.0"), Description ( "The CIM_DiagnosticTest class represents the ability to " "execute a test. Specific diagnostic tests may be defined by " "subclassing and/or instantiating this object. To provide " "more detail for a type of test (i.e, additional properties " "and methods), subclassing is appropriate. To indicate that a " "test exists and may be applied to a specific ManagedSystem" "Element, instantiation of the DiagnosticTest class may " "suffice.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticTest : CIM_Service { [Description ( "The descriptions for each Characteristic are below:\n " "\n" "* \"Is Exclusive\" (value=2) is specified for the test " "module only if the diagnostic cannot run more than one test " "at a time, regardless of how many SystemElements are " "supported. Typically, this occurs when hardware or software " "constraints prevent the test from running as multiple, " "concurrent instances. If the diagnostic can be run against " "multiple SystemElements, but only once per Element, then set " "the IsExclusiveForMSE boolean property on the appropriate " "instances of DiagnosticTestForMSE. \n" "\n" "* If \"Is Interactive\" (value=3) is set, then the diagnostic " "displays a message either before, during or after testing. \n" "\n" "* Set \"Is Destructive\" (value=4) if the diagnostic will " "destroy data, or reconfigure the Element that is being " "tested. \n" "\n" "* \"Is Risky\" (value=5) indicates that data loss may occur " "if the test is interrupted. Some tests make copies of data, " "perform the test, and restore the data returning the tested " "entity to its previous configuration. If the test is " "interrupted, then loss of data or reconfiguration of the " "tested ManagedSystemElement may occur. \n" "\n" "* If \"Is Package\" (value=6) is set, this test is actually " "a set of lower level diagnostics, that are 'packaged' " "together. \n" "\n" "\"Supports PercentOfTestCoverage\" (value=7) indicates that " "a request for reduced test coverage can be specified using " "the PercentOfTestCoverage property of Diagnostic Setting. \n" "\n" "Also, the values \"Unknown\" (0) and \"Other\" (1) may be " "specified. If \"Other\" is defined, additional detail may be " "found in the OtherCharacteristicDescription property of this " "class."): ToSubclass Amended, Values{"Unknown", "Other", "Is Exclusive", "Is Interactive", "Is Destructive", "Is Risky", "Is Package", "Supports PercentOfTestCoverage"}: ToSubclass Amended, ModelCorrespondence { "CIM_DiagnosticTest.OtherCharacteristicDescription"}: ToSubclass] uint16 Characteristics[]; [Description ( "Provides additional information for the Characteristic when " "its value is set to 1 (\"Other\")."): ToSubclass Amended, ModelCorrespondence {"CIM_DiagnotistTest.Characteristics"}: ToSubclass] string OtherCharacteristicDescription; [Description( "If this test is currently being performed, the InUse " "property is set to TRUE. To determine which ManagedSystem" "Element is being tested, query the DiagnosticResult objects " "associated with this test (query DiagnosticResultForTest), " "and for which the TestState equals 4 (\"In Progress\"). " "The DiagnosticResult object is associated with the System" "Element under test, using DiagnosticResultForMSE."): ToSubclass Amended ] boolean IsInUse; [Description( "The \"Expensive\" qualifier can be applied to this class and " "its RunTest method. If so, the ResourcesUsed property " "describes the resources that are capitalized, based on a " "default setup for the test. Multiple resources can be " "specified since the property is an array."): ToSubclass Amended, Values{"CPU", "Memory", "Hard Disk", "CDROM", "Floppy", "PCI Bus", "USB Bus", "1394 Bus", "SCSI Bus", "IDE Bus", "Network", "ISA Bus", "EISA Bus", "VESA Bus", "PCMCIA Bus", "CardBus", "Access.bus", "NuBus", "AGP", "VME Bus", "Sbus IEEE 1396-1993", "MCA Bus", "GIO Bus", "XIO Bus", "HIO Bus", "PMC Bus", "SIO Bus"}: ToSubclass Amended] uint16 ResourcesUsed[]; [Description( "The RunTest method executes this test for the specified " "ManagedSystemElement (defined using the SystemElement input " "parameter). Results of the test are stored in a Diagnostic" "Result object, a reference to which is returned as the Result " "output parameter. How the test should execute, i.e. its " "settings, is defined in a DiagnosticSetting object (or by a " "subclass of DiagnosticSetting). A reference to a Setting " "object is specified using the Setting input parameter. If a " "reference is not passed into the method, then a default " "DiagnosticSetting may be used. This default Setting is " "associated with the DiagnoticTest using the DefaultSetting " "relationship of the Core Model. \n" "When RunTest starts execution, the settings, which are time sensitive, " "should be evaluated and captured. This is suggested since the " "DiagnosticSetting object can be modified at any time, and therefore " "the current test settings could be lost. \n" "The method's return codes are expected to adhere to the XML " "return codes as they are introduced. Currently, the standard " "return values are: \n" "0 = OK (function succeeded, but the test itself may have " "failed \n" "1 = Unspecified Error (function failed for unspecified " "reasons) \n" "2 = Not Implemented (function is not implemented for this " "instance) \n" "3 = Out Of Resources (component could not allocate required " "resources, e.g. memory, disk space, etc.) \n" "In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array qualifier.") : ToSubclass Amended ] uint32 RunTest([IN] CIM_ManagedSystemElement ref SystemElement, [IN] CIM_DiagnosticSetting ref Setting, [OUT] CIM_DiagnosticResult ref Result); [Description( "Execution of this method will delete all instances of the " "DiagnosticResultForMSE object, for this DiagnosticTest " "and the specified ManagedSystemElement (defined using the " "SystemElement input parameter). The DiagnosticResults " "referenced in the DiagnosticResultForMSE instances will be " "deleted. Also the association DiagnosticResultForTest that " "references to the DiagnosticResult object, and this test will " " be deleted.\n" " One output parameter is defined - ResultsNotCleared " "- which is a string array that lists the keys of the " "DiagnosticResults which could not be deleted. This information " "enables those Results to be revisited and either manually " "removed, or other corrective action taken. \n" "The method's return codes are expected to adhere to the XML " "return codes as they are introduced. Currently, the standard " "return values are: \n" "0 = OK (function succeeded, but the test itself may have " "failed \n" "1 = Unspecified Error (function failed for unspecified " "reasons) \n" "2 = Not Implemented (function is not implemented for this " "instance) \n" "3 = Out Of Resources (component could not allocate required " "resources, e.g. memory, disk space, etc.) \n" "In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array qualifier.") : ToSubclass Amended ] uint32 ClearResults([IN] CIM_ManagedSystemElement ref SystemElement, [OUT] String ResultsNotCleared[]); [Description ( "After invocation of this method and its completion, the " "specified test(s) will be discontinued for the indicated " "ManagedSystemElement (defined by the SystemElement input " "parameter). The test to discontinue is specified using the " "Result input parameter. If all instances of this test should " "be stopped for the SystemElement, then the Result reference " "should be NULL. Upon completion of the method, test status " "and other information (such as PercentComplete) will be " "stored in the DiagnosticResult instance defined by the Result " "input parameter. The output parameter, TestingStopped, is " "used as follows:\n" " Set to TRUE if testing was successfully stopped. \n" " Set to FALSE if the current test(s) can not be stopped. \n" "If set to FALSE, testing will stop when the diagnostic is " "able to do so safely. To determine if/when the testing is " "stopped, check the TestState property in the DiagnosticResult " "instance defined by the Result parameter. TestState will " "change from \"In Progress\" to \"Stopped\" (from 4 to 5). \n" "The method's return codes are expected to adhere to the XML " "return codes as they are introduced. Currently, the standard " "return values are: \n" "0 = OK (function succeeded, but the test itself may have " "failed \n" "1 = Unspecified Error (function failed for unspecified " "reasons) \n" "2 = Not Implemented (function is not implemented for this " "instance) \n" "3 = Out Of Resources (component could not allocate required " "resources, e.g. memory, disk space, etc.) \n" "In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array qualifier.") : ToSubclass Amended ] uint32 DiscontinueTest([IN] CIM_ManagedSystemElement ref SystemElement, [IN] CIM_DiagnosticResult ref Result, [OUT] Boolean TestingStopped); }; // ================================================================== // DiagnosticSetting // ================================================================== [Abstract, Version ("2.6.0"), Description( "Specific diagnostic test parameters and execution " "instructions are defined by subclassing and/or instantiating " "the DiagnosticSetting object. To provide more detailed " "Settings for a type of test (i.e., additional properties), " "subclassing is appropriate. When only the generic Setting " "information is required, instantiation of the Diagnostic" "Setting class may suffice.\n" "Data from DiagnosticSetting is captured in DiagnosticResult. " "When RunTest starts execution the settings, which are time sensitive, " "should be evaluated and captured. This is suggested since the " "DiagnosticSetting object can be modified at any time, and therefore " "the current test settings could be lost.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticSetting : CIM_Setting { [Key, MaxLen (256): ToSubclass, Override ("SettingID"), Description ( "The identifier by which the DiagnosticSetting object is " "known and uniquely named. One possible naming scheme is " "to name the SettingID using the DiagnosticTest's CreationClassName " "and DiagnosticName, plus a GUID (Globally Unique IDentifier).\n" " Note that at an enterprise level, there is typically not a " "one to one mapping between a DiagnosticSetting and all " "copies of the DiagnosticTest. The proposed naming convention will " "scale to the enterprise level."): ToSubclass Amended ] string SettingID; [Description ( "Sets the level of warning messages to be logged. If for " "example no warning information is required, the level " "would be set to \"No Warnings\" (value=0). Using \"Missing " "Resources\" (value=1) will cause warnings to be generated " "when required resources or hardware are not found. Setting " "the value to 2, \"Testing Impacts\", results in both " "missing resources and 'test impact' warnings (for example, " "multiple retries required) to be reported."): ToSubclass Amended, Values {"No Warnings", "Missing Resources", "Testing Impacts", "All Warnings"}: ToSubclass Amended, Write] uint16 TestWarningLevel; [Description ( "When this flag is true, the diagnostic test will report " "'soft errors'. In this context, a soft error is a message " "from the diagnostic reporting a known defect in the " "hardware or driver configuration, or execution " "environment. Examples are: \"Not enough memory\", " "\"Driver IOCTL not implemented\", \"Video RAM compare " "failed during polygon fill test (A known defect in the " "video chipset)\", etc."): ToSubclass Amended, Write] boolean ReportSoftErrors; [Description ( "When this flag is true, the diagnostic test will report " "'status messages'. In this context, a status message " "indicates that the diagnostic code is at a checkpoint. " "Examples are: \"Completion of phase 1\", \"Complex " "pattern\", etc."): ToSubclass Amended, Write] boolean ReportStatusMessages; [Description ( "When this flag is true, the test will halt after finding " "the first error."): ToSubclass Amended, Write] boolean HaltOnError; [Description ( "When this flag is true, the test software should attempt " "to run in an accelerated fashion either by reducing the " "coverage or number of tests performed."): ToSubclass Amended, Write] boolean QuickMode; [Units ("Percent"): ToSubclass Amended, MinValue (0): ToSubclass, MaxValue (100): ToSubclass, Description( "Requests the diagnostic software to reduce test coverage " "to the specified percentage. For example, a hard drive " "scan test could be asked to run at 50%. The most " "effective way to accomplish this is for the test software " "to scan every other track, as opposed to only scanning the " "first half of a drive. It is assumed that the effectiveness " "of the test is impacted proportional to the percentage of " "testing requested. Permissible values for this property " "range from 0 to 100. \n" "This property may not be applicable to all tests. If it " "can be set for a test, the value 7 (\"Supports PercentOf" "TestCoverage\") should be entered into the DiagnosticTest's " "Characteristics array."): ToSubclass Amended, ModelCorrespondence {"CIM_DiagnosticTest.Characteristics"}: ToSubclass, Write] uint8 PercentOfTestCoverage; }; // ================================================================== // DiagnosticResult // ================================================================== [Abstract, Version ("2.6.0"), Description( "When a DiagnosticTest Service is running, test results " "are reported using a DiagnosticResult object, or one of its " "subclasses. A DiagnosticTest may be running because its " "Service is Started or due to an invocation of the RunTest " "method. DiagnosticResults are related to their Test via an " "instance of the DiagnosticResultsForMSE association.\n" "For every running of DiagnosticTest, a new instance of " "DiagnosticResult, or one of it's subclasses should be created.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticResult { [Propagated("CIM_DiagnosticTest.CreationClassName"), Key, MaxLen (256): ToSubclass, Description ("The scoping Test's CreationClassName."): ToSubclass Amended ] string DiagnosticCreationClassName; [Propagated("CIM_DiagnosticTest.Name"), Key, MaxLen (256): ToSubclass, Description ("The scoping Test's Name."): ToSubclass Amended ] string DiagnosticName; [Key, MaxLen (1024): ToSubclass, Description ( "The Unique identifier for an instance of Diagnostic" "Results."): ToSubclass Amended ] string ExecutionID ; [Propagated ("CIM_DiagnosticTest.SystemCreationClassName"), Key, MaxLen (256): ToSubclass, Description ("The scoping Test's SystemCreationClassName."): ToSubclass Amended ] string DiagSystemCreationClassName; [Propagated ("CIM_DiagnosticTest.SystemName"), Key, MaxLen (256): ToSubclass, Description ("The scoping Test's SystemName."): ToSubclass Amended ] string DiagSystemName; [Description ( "The date and time the result was last updated."): ToSubclass Amended ] datetime TimeStamp; [Description ( "If this property is TRUE, then this DiagnosticResult " "summarizes the results from the execution of a packaged " "set of DiagnosticTests. The Tests in the package can be " "identified by following the DiagnosticResultForTest " "association to the test and then using the DiagnosticTest" "InPackage aggregation. The individual Results can be " "broken out by instantiating DiagnosticResults for the " "individual lower level tests and aggregating into the " "'summary' Result using the DiagnosticResultInPackage " "association."): ToSubclass Amended ] boolean IsPackage; [Description ( "The date and time when this test started."): ToSubclass Amended ] datetime TestStartTime; [Description ( "The date and time when this test completed."): ToSubclass Amended ] datetime TestCompletionTime; [Description ( "Describes how the test is progressing. For example, if " "the test was discontinued, the TestState will be " "\"Stopped\" (value=5), or if testing is currently " "executing, TestState will be \"In Progress\" (4)."): ToSubclass Amended, Values{"Unknown", "Other", "Passed", "Failed", "In Progress", "Stopped"}: ToSubclass Amended, ModelCorrespondence { "CIM_DiagnosticResult.OtherStateDescription"}: ToSubclass] uint16 TestState; [Description ( "When \"Other\" (value=1) is entered in the TestState " "property, OtherStateDescription can be used to describe " "the test's state."): ToSubclass Amended, ModelCorrespondence {"CIM_DiagnosticResult.TestState"}: ToSubclass] string OtherStateDescription; [Units ("Seconds"): ToSubclass Amended, Description ( "Estimated number of seconds to perform the Diagnostic" "Test indicated by the DiagnosticCreationClassName and " "DiagnosticName properties. After the test has completed, " "the actual elapsed time can be determined by subtracting " "the TestStartTime from the TestCompletionTime. A similar " "property is defined in the association, DiagnosticTest" "ForMSE. The difference between the two properties is " "that the value stored in the association is a generic " "test execution time for the Element and the Test. But, " "the value here (in DiagnosticResult) is the estimated " "time that this instance with the given settings would " "take to run the test. A CIM Consumer can compare this " "value with the value in the association DiagnosticTestForMSE " "to get an idea what impact their settings have on test " "execution."): ToSubclass Amended, ModelCorrespondence { "CIM_DiagnosticTestForMSE.EstimatedTimeOfPerforming"}: ToSubclass] uint32 EstimatedTimeOfPerforming; [Description( "TestResults stores one or more textual results from the " "execution of the DiagnosticTest(s) referenced by the " "DiagnosticCreationClassName and DiagnosticName properties. " "One entry is considered a cell location in the array. Each " "entry is time stamped and contains the following " "information, in the following format: \n" " yyymmddhhttssoutc|DiagnosticName|Textual message \n" "Where: \n" " yyy = year, e.g. 2000 \n" " mm = month (01 - 12) \n" " dd = day (01 - 31) \n" " hh = hour (00 - 24) \n" " tt = minute (00-59) \n" " ss = second (00-59) \n" " o = \"+\" or \"-\" indicating the sign of the UTC " "correction field \n" " utc = offset from UTC (Universal Coordinated Time) " "in minutes \n" " DiagnosticName = string reference to the DiagnosticTest " "object which was executed\n" " Textual message = free form string that is the 'test " "result'."): ToSubclass Amended, ArrayType ("Ordered") ] string TestResults[]; [Units ("Percent"): ToSubclass Amended, MinValue (0): ToSubclass, MaxValue (100): ToSubclass, Description ( "The percentage of the test that has executed thus far, if the " "TestState property is set to \"In Progress\" or the percentage " "of the complete test that was executed if the TestState property " "is set to any of the completed states (\"Passed\", \"Failed\" or " "\"Stopped\"). Final results may be based on less than 100% coverage " "due to the parameters defined in DiagnosticSetting (such as " "QuickMode, PercentOfTestCoverage or HaltOnError)." ): ToSubclass Amended ] uint8 PercentComplete; // --------- Properties below here are copied from ------------------ // --------- DiagnosticSettings ------------------ // Note that the DiagnosticSetting object can be modified at any time, // and the current test settings can be lost. When RunTest starts execution // the settings, which are time sensitive, should be evaluated and captured. [Description ( "Sets the level of warning messages to be logged. If for " "example no warning information is required, the level " "would be set to \"No Warnings\" (value=0). Using \"Missing " "Resources\" (value=1) will cause warnings to be generated " "when required resources or hardware are not found. Setting " "the value to 2, \"Testing Impacts\", results in both " "missing resources and 'test impact' warnings (for example, " "multiple retries required) to be reported."): ToSubclass Amended, Values {"No Warnings", "Missing Resources", "Testing Impacts", "All Warnings"}: ToSubclass Amended, Write] uint16 TestWarningLevel; [Description ( "When this flag is true, the diagnostic test will report " "'soft errors'. In this context, a soft error is a message " "from the diagnostic reporting a known defect in the " "hardware or driver configuration, or execution " "environment. Examples are: \"Not enough memory\", " "\"Driver IOCTL not implemented\", \"Video RAM compare " "failed during polygon fill test (A known defect in the " "video chipset)\", etc."): ToSubclass Amended, Write] boolean ReportSoftErrors; [Description ( "When this flag is true, the diagnostic test will report " "'status messages'. In this context, a status message " "indicates that the diagnostic code is at a checkpoint. " "Examples are: \"Completion of phase 1\", \"Complex " "pattern\", etc."): ToSubclass Amended, Write] boolean ReportStatusMessages; [Description ( "When this flag is true, the test will halt after finding " "the first error."): ToSubclass Amended, Write] boolean HaltOnError; [Description ( "When this flag is true, the test software should attempt " "to run in an accelerated fashion either by reducing the " "coverage or number of tests performed."): ToSubclass Amended, Write] boolean QuickMode; [Units ("Percent"): ToSubclass Amended, MinValue (0): ToSubclass, MaxValue (100): ToSubclass, Description( "Requests the diagnostic software to reduce test coverage " "to the specified percentage. For example, a hard drive " "scan test could be asked to run at 50%. The most " "effective way to accomplish this is for the test software " "to scan every other track, as opposed to only scanning the " "first half of a drive. It is assumed that the effectiveness " "of the test is impacted proportional to the percentage of " "testing requested. Permissible values for this property " "range from 0 to 100. \n" "This property may not be applicable to all tests. If it " "can be set for a test, the value 7 (\"Supports PercentOf" "TestCoverage\") should be entered into the DiagnosticTest's " "Characteristics array."): ToSubclass Amended, ModelCorrespondence {"CIM_DiagnosticTest.Characteristics"}: ToSubclass, Write] uint8 PercentOfTestCoverage; }; // ================================================================== // DiagnosticResultForMSE // ================================================================== [Abstract, Version ("2.6.0"), Association, Description ( "This is an association class relating diagnostic test " "results to the ManagedSystemElement that is/was tested.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticResultForMSE { [Key, Description ( "The diagnostic result."): ToSubclass Amended ] CIM_DiagnosticResult REF Result; [Key, Description ( "The ManagedSystemElement to which the diagnostic result " "applies."): ToSubclass Amended ] CIM_ManagedSystemElement REF SystemElement; }; // ================================================================== // DiagnosticResultForTest // ================================================================== [Abstract, Version ("2.6.0"), Association, Description ( "This is an association class to relate the results of a test " "to the test itself.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticResultForTest { [Key, Min (1), Max (1), Weak, Description ("The result object."): ToSubclass Amended ] CIM_DiagnosticResult REF DiagnosticResult; [Min(1), Max(1), Key, Description ("The test that generated the result object."): ToSubclass Amended ] CIM_DiagnosticTest REF DiagnosticTest; }; // ================================================================== // DiagnosticTestForMSE // ================================================================== [Abstract, Version ("2.6.0"), Association, Description( "This is an association class that relates a DiagnosticTest " "to a ManagedSystemElement. Consumers wishing to 'diagnose' " "a particular Element could query this association, for the " "Element, to determine what tests are available.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticTestForMSE : CIM_ProvidesServiceToElement { [Override("Antecedent"), Description ( "The test that may be run against a ManagedSystemElement."): ToSubclass Amended ] CIM_DiagnosticTest REF Antecedent; [Override("Dependent"), Description ( "The ManagedSystemElement that can be tested."): ToSubclass Amended ] CIM_ManagedSystemElement REF Dependent; [Units ("Seconds"): ToSubclass Amended, Description ( "Estimated number of seconds to perform the referenced " "DiagnosticTest against the ManagedSystemElement. Since " "execution times could vary by Element, this property is " "located in the association between the two entities. It is " "also captured in DiagnosticResult, in the Estimated" "TimeOfPerforming property.\n" "A CIM Consumer can compare this value with the value in " "DiagnosticResult to get an idea of what impact their " "settings have on test execution."): ToSubclass Amended, ModelCorrespondence { "CIM_DiagnosticResult.EstimatedTimeOfPerforming"}: ToSubclass] uint32 EstimatedTimeOfPerforming; [Description ( "If the DiagnosticTest referenced in this object can be run " "concurrently against multiple SystemElements, but only " "run one at a time for the referenced ManagedSystemElement, " "then this boolean is set to TRUE. Alternately, if the test " "can NOT be run concurrently irregardless of the System" "Elements being tested, then the more general \"Is Exclusive\" " "enumerated value (2) should be set in DiagnosticTest." "Characteristics."): ToSubclass Amended ] boolean IsExclusiveForMSE; }; // ================================================================== // DiagnosticTestInPackage // ================================================================== [Abstract, Association, Version ("2.6.0"), Aggregation, Description ( "This is an association class that identifies a Diagnostic" "Test as made up of lower level Tests. In this case, the " "Test identified as the GroupComponent reference (i.e, " "the higher level test) would have the \"Is Package\" " "enumerated value specified in DiagnosticTest." "Characteristics.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticTestInPackage : CIM_Component { [Override("GroupComponent"), Description ( "The DiagnosticTest object that acts as the container for all " "the tests of the package."): ToSubclass Amended ] CIM_DiagnosticTest REF GroupComponent; [Override("PartComponent"), Description ( "The DiagnosticTest object that is one of the elements of " "the package."): ToSubclass Amended ] CIM_DiagnosticTest REF PartComponent; }; // ================================================================== // DiagnosticResultInPackage // ================================================================== [Abstract, Association, Version ("2.6.0"), Aggregation, Description( "This is an association class that identifies a Diagnostic" "Result as made up of lower level Results. In this case, the " "Result identified as the PackageResult reference (i.e., " "the higher level result) would have its IsPackage property " "set to TRUE.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticResultInPackage { [Key, Description ( "The DiagnosticResult object that acts as the container for all " "the results of the package."): ToSubclass Amended ] CIM_DiagnosticResult REF PackageResult; [Key, Description ( "The DiagnosticResult object that is one of the elements of " "the package."): ToSubclass Amended ] CIM_DiagnosticResult REF Result; }; // ================================================================== // DiagnosticTestSoftware // ================================================================== [Abstract, Association, Version ("2.6.0"), Description( "This is an association class relating DiagnosticTest to " "the SoftwareElements that provide this test. SoftwareElement " "describes vendor/version information and other deployment " "data.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticTestSoftware : CIM_Dependency { [Override ("Antecedent"), Description ( "Vendor/version and other information about the software " "that runs as the DiagnosticTest."): ToSubclass Amended ] CIM_SoftwareElement REF Antecedent; [Override ("Dependent"), Description ( "The DiagnosticTest whose software is described."): ToSubclass Amended ] CIM_DiagnosticTest REF Dependent; }; // ================================================================== // DiagnosticSettingForTest // ================================================================== [Abstract, Association,Version ("2.6.0"), Description ( "This is an association class to relate test settings with " "diagnostic tests.") : ToSubclass Amended, LOCALE(0x409) ] class CIM_DiagnosticSettingForTest : CIM_ElementSetting { [Override("Element"), Description ( "The Test that can use the Setting object."): ToSubclass Amended ] CIM_DiagnosticTest REF Element; [Override("Setting"), Description ( "The Setting that can be applied to the execution of the " "DiagnosticTest."): ToSubclass Amended ] CIM_DiagnosticSetting REF Setting; }; // =================================================================== // end of file // ===================================================================WMI/Ncs2IBA.mof0000755000000000000000000003613512453213337010242 0ustar /************************************************************************ * * * INTEL CORPORATION PROPRIETARY INFORMATION * * This software is supplied under the terms of a license agreement or * * nondisclosure agreement with Intel Corporation and may not be copied * * or disclosed except in accordance with the terms of that agreement. * * Copyright (c) 2008 Intel Corporation. All Rights Reserved. * * * ************************************************************************/ /***********************************************************************\ * * NAME: Ncs2IBA.mof * * DESCRIPTION: Master MOF file with class definitions for the * Intel PRO Network Adapter Boot Agent (802.3 schema). * * PREREQUISITE: Ncs2Cm.mof and Ncs2ICr.mof [In that order] * * NOTE: This file generates language neutral MOF for IntelNcs2 namespace. * This file also generates ENU language specific MFL. * \***********************************************************************/ #pragma namespace ("\\\\.\\Root\\IntelNcs2") //************************************************************************** //* Class: IANet_BootAgent //* Derived from: CIM_BootService //************************************************************************** [Description ( "IANet_BootAgent encapsulates the parameters and settings of " " a NIC's PXE functionality."):Amended, LOCALE(0x409) : ToInstance ToSubClass, Dynamic, provider("Ncs2"), IANet_ModuleIdentifier("NCS2Boot.dll")] class IANet_BootAgent : CIM_BootService { [read, Description ( "InvalidImageSignature is set true if boot agent has corrupted " "flash image." ) : Amended ] boolean InvalidImageSignature; [read, Description ( "String describing boot agent version. e.g. 4.1.04"):Amended ] string Version; [read, Description ( "Boot agent version in the format 4.1.04"):Amended ] uint32 VersionNumber; [read, Description ( "Indicates if install or upgrade to boot agent software is available."):Amended ] boolean UpdateAvailable; [read, Description ( "Boot Agent Flash Image type."):Amended, ValueMap {"0", "1", "3", "4", "5", "6", "7", "255"} : Amended, Values {"PXE", "PXE_EFI", "EFI","DISABLED", "BLANK", "MISSING", "iSCSI", "Unknown"}: Amended ] uint32 FlashImageType; [read, Description ( "Boot Agent flash types that are currently installed in the ROM."):Amended, ValueMap {"1", "2", "4", "255"} : Amended, Values {"PXE", "EFI", "iSCSI", "Unknown"}: Amended ] uint32 InstalledFlashImageTypes; [read, Description ( "Boot Agent iSCSI status."):Amended, ValueMap {"0", "1", "2", "255"} : Amended, Values {"iSCSI_PRIMARY", "iSCSI_SECONDARY", "iSCSI_DISABLED", "Unknown"}: Amended ] uint32 iSCSI_Status; [Description ( "ProgramFlash will update the Flash ROM on the NIC. This will cause " "the NIC to stop communicating with the network while the flash is " "updated."):Amended, implemented ] uint32 ProgramFlash( [IN, ValueMap {"0","1"}: Amended , Values {"Check Version", "Write Flash"}: Amended ] uint32 Action, [IN] uint8 NewFlashData[], [OUT, ValueMap {"0", "1", "2", "3", "4", "5", "6", "7", "16", "32", "64", "128", "256", "512", "1024", "2048"}: Amended, Values {"FoundImage", "UnsupportedImageFileType", "IncorrectChecksum", "InvalidChecksum", "NoFlashImage", "InvalidNicFile", "InvalidFlashImage", "OlderVersion", "AdapterNotSupportiSCSI", "OS_NotSupportiSCSI", "iSCSI_OverwiteIBA", "IBA_OverwriteiSCSI", "Multi_ROM", "RPL Not Supported", "Combined overwrite with PXE", "Combined overwrite with EFI"}: Amended ] uint32 FlashRetCode ); [Description ( "ProgramFlashEx will update the Flash ROM on the NIC. This will cause " "the NIC to stop communicating with the network while the flash is being updated. This version " "of the Program Flash function is compatible with FLB and FLB+ images."):Amended, implemented] uint32 ProgramFlashEx ( [IN] uint8 NewFlashData[], [IN] string ImageType[], [OUT] uint32 FlashRetCode ); [Description ("ReadImageFile will read the data passed in and return a array of the image types in the data file and " "and the version number of the images."):Amended, implemented] uint32 ReadImageFile ( [IN] uint8 FlashData[], [OUT] string ImageType[], [OUT] string ImageVersionNumber[], [OUT] uint32 ImageGroupNumber[], [OUT] boolean ImageGrouped[], [OUT] uint32 ImageExposeLevel[], [OUT] string Description[], [OUT] string Reserved2[], [OUT] uint32 FlashRetCode ); [Description ("VerifyImageType will determine if the image type the user has selected to be written to the flash is supported by the adapter."):Amended, implemented] uint32 VerifyImageType ( [IN] uint8 FlashData[], [IN] string ImageType[], [OUT] uint32 FlashRetCode ); [Description ( "ReadFlash will read the Flash ROM on the NIC."):Amended, implemented ] uint32 ReadFlash( [OUT] uint8 FlashData[] ); [Description ( "CanFlashBeUpdated will determine if the Flash ROM can be updated on the NIC."):Amended, implemented ] uint32 CanFlashBeUpdated( [out] boolean bCanBeUpdated); [Description ( "EnableFlash will enable Flash ROM on the NIC."):Amended, implemented ] uint32 EnableFlash([IN] boolean bEnableFlash); }; //************************************************************************** //* Class: IANet_BootAgent_iSCSI_Adapters //* Derived from: CIM_BootService //************************************************************************** [Description ( "IANet_BootAgent_iSCSI_Adapters lists all the adapters on the system " " that support the iSCSI Boot feature."):Amended, LOCALE(0x409) : ToInstance ToSubClass, Dynamic, provider("Ncs2"), IANet_ModuleIdentifier("NCS2Boot.dll")] class IANet_BootAgent_iSCSI_Adapters : CIM_BootService { [read, Description ( "Boot Agent iSCSI Status."):Amended, ValueMap {"0", "1", "2", "255"} : Amended, Values {"iSCSI_PRIMARY", "iSCSI_SECONDARY", "iSCSI_DISABLED", "Unknown"}: Amended ] uint32 iSCSI_Status; [read, Description ("Friendly name of the adapter."):Amended] string AdapterName; [Description ( "SetiSCSI_Status will update the status of the adapters that support iSCSI Boot. " "The function only takes the primary and secondary adapter IDs and sets them accordingly. " "The remaining adapters are set to disabled."):Amended, implemented ] uint32 SetiSCSI_Status ( [IN, ValueMap {"0", "1", "2"}: Amended , Values {"Primary", "Secondary", "Disabled"}: Amended ] uint32 iSCSI_State, [OUT, ValueMap {"0", "1"}: Amended, Values {"Success", "Failure"}: Amended ] uint32 RetCode ); }; // =================================================================== // IANet_DeviceBootServiceImplementation // =================================================================== [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("NCS2Boot.dll"), Association, Description ( "An association between a Service and how it is implemented. " "The cardinality of this association is many-to-many. " "A Service may be provided by more than one Logical" "Device, operating in conjunction. And, any Device may " "provide more than one Service. When multiple Devices are " "associated with a single Service, it is assumed that these " "elements operate in conjunction to provide the Service. If " "different implementations of a Service exist, each of these " "implementations would result in individual instantiations " "of the Service object. These individual instantiations " "would then have associations to the unique implementations."):Amended, LOCALE(0x409) ] class IANet_DeviceBootServiceImplementation : CIM_Dependency { [Override ("Antecedent"), Description ("The LogicalDevice."):Amended ] IANet_PhysicalEthernetAdapter REF Antecedent; [Override ("Dependent"), Description ("The Service implemented using the LogicalDevice."):Amended ] IANet_BootAgent REF Dependent; }; // ============================================================================ // Intel IANet_BootAgentSetting Abstract Base Class // ============================================================================ [Abstract, provider("Ncs2"), IANet_ModuleIdentifier("NCS2Boot.dll"), Description("IANet_BootAgentSetting objectifies BootAgent instance related " "driver and network device settings. IANet_BootAgentSetting is an " "Abstract superclass for a set of concrete classes of different " "types. This set of classes allows open ended usage of a variable " "number of settings." ):Amended, LOCALE(0x409) ] class IANet_BootAgentSetting : IANet_Setting { }; // ============================================================================ // BootAgent Setting Enum Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("NCS2Boot.dll"), Description("IANet_BootAgentSettingEnum objectifies BootAgent related " "driver and network device settings. IANet_BootAgentSettingEnum " "specifically handles Enumeration settings"):Amended, LOCALE(0x409) ] class IANet_BootAgentSettingEnum : IANet_BootAgentSetting { [Description( "PossibleValues is an array of the possible values allowed for the enum."):Amended ] sint64 PossibleValues[]; [Description( "DescriptionMap describes what each value means."):Amended ] string DescriptionMap[]; [write, Description( "CurrentValue is the current setting for this parameter."):Amended ] sint64 CurrentValue; [write, Description( "RegistryValue is the current setting for this parameter."):Amended ] sint64 RegistryValue; [Description( "DefaultValue is the initial setting for this value."):Amended ] sint64 DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; }; // ============================================================================ // BootAgent Setting Int Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("NCS2Boot.dll"), Description("IANet_BootAgentSettingInt objectifies BootAgent related " "driver and network device settings. IANet_BootAgentSettingInt " "specifically handles Integer settings"):Amended, LOCALE(0x409) ] class IANet_BootAgentSettingInt : IANet_BootAgentSetting { [Description( "Min is the minimum value that the integer can take."):Amended] sint64 min; [Description( "Max is the maximum value that the integer can take."):Amended] sint64 max; [Description( "Step is the granularity of the integer value."):Amended] sint64 step; [Description( "Base is the root from which the integer value may take values. i.e. " " CurrentValue - base is a multiple of step."):Amended] uint64 base; [Description( "DefaultValue is the initial value of the parameter."):Amended] sint64 DefaultValue; [Write, Description( "CurrentValue is the actual value of the parameter - this is the only attribute that " "the user can change."):Amended] sint64 CurrentValue; [Description( "RegistryValue is the actual value of the parameter in the registry "):Amended] sint64 RegistryValue; [Description( "Scale is unit of measurement to set or estimate series of marks " "or points at known intervals to measure value of the parameter."):Amended] sint64 Scale; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; }; // ============================================================================ // BootAgent Setting String Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("NCS2Boot.dll"), Description("IANet_BootAgentSettingString objectifies BootAgent related " "driver and network device settings. IANet_BootAgentSettingString " "specifically handles Integer settings"):Amended, LOCALE(0x409) ] class IANet_BootAgentSettingString : IANet_BootAgentSetting { [Description("MaxLength is the maximum length of the string."):Amended] uint32 MaxLength; [write, Description("CurrentValue is the current value for the parameter."):Amended] string CurrentValue; [Description("RegistryValue is the current value for the parameter."):Amended] string RegistryValue; [Description("DefaultString is the initial value for the parameter."):Amended] string DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; }; // ============================================================================ // BootAgent Setting Multi String Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Boot.dll"), Description("IANet_BootAgentSettingMultiString objectifies Boot Agent related " "driver and network device settings. IANet_BootAgentSettingMultiString " "specifically handles Multi String settings."):Amended, LOCALE(0x409) ] class IANet_BootAgentSettingMultiString : IANet_BootAgentSetting { [Description("MaxLength is the maximum length of the string."):Amended] uint32 MaxLength; [write, Description("CurrentValues is the current values for the parameter."):Amended] string CurrentValues[]; [Description("RegistryValue is the current values for the parameter."):Amended] string RegistryValue[]; [Description("DefaultString is the initial value for the parameter."):Amended] string DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue[]; }; // ============================================================================ // IANet_BootAgentToSettingAssoc class // ============================================================================ [ Association, Description("This class associates Intel NICs with their respective settings.") :Amended, LOCALE(0x409), Dynamic, provider("Ncs2"), IANet_ModuleIdentifier("NCS2Boot.dll") ] class IANet_BootAgentToBootAgentSettingAssoc : CIM_ElementSetting { [ Override("Element"), Description ("The BootAgent to which the Setting object belongs."):Amended ] IANet_BootAgent REF Element = NULL; [ Override("Setting"), Description ("The Setting belonging to the BootAgent."):Amended ] IANet_BootAgentSetting REF Setting = NULL; }; WMI/Ncs2ICr.mof0000755000000000000000000015504512453213337010326 0ustar /************************************************************************ * * * INTEL CORPORATION PROPRIETARY INFORMATION * * This software is supplied under the terms of a license agreement or * * nondisclosure agreement with Intel Corporation and may not be copied * * or disclosed except in accordance with the terms of that agreement. * * Copyright (c) 2008-2013 Intel Corporation. All Rights Reserved. * * * ************************************************************************/ /***********************************************************************\ * * NAME: Ncs2ICr.mof * * DESCRIPTION: Master MOF file with class definitions for the * Intel PRO Network Adapters WMI Provider (802.3 schema). * * PREREQUISITE: Ncs2Cm.mof * * NOTE: This file generates language neutral MOF for IntelNCS2 namespace. * This file also generates ENU language specific MFL. * \***********************************************************************/ #pragma namespace ("\\\\.\\Root\\IntelNCS2") instance of __Win32Provider as $P { Name = "Ncs2" ; ClsId = "{AF7799A5-A3E7-455C-92B5-8F9D7C127B15}" ; Pure = FALSE; ImpersonationLevel = 3; PerUserInitialization = TRUE; UnloadTimeout = "00000000000500.000000:000"; }; instance of __MethodProviderRegistration { Provider = $P; }; instance of __InstanceProviderRegistration { Provider = $P; SupportsPut = TRUE; SupportsGet = TRUE; SupportsDelete = TRUE; SupportsEnumeration = TRUE; QuerySupportLevels = { "WQL:UnarySelect" }; }; // ============================================================================ // Ethernet Adapter Base Class // ============================================================================ [Abstract, Description("IANet_EthernetAdapter abstract base class objectifies " "the general network characteristics of the Intel NIC. In this class, " "the lower level networking properties are presented. Note that only the " "network relationships are in this class. The controller characteristics " "are presented separately."): Amended, LOCALE(0x409) ] class IANet_EthernetAdapter : CIM_EthernetAdapter { [Override("NetworkAddresses"), MaxLen (64), Description ( "An array of strings indicating the network addresses for an adapter."):ToSubclass Amended, ArrayType ("Indexed"), MappingStrings {"MIF.DMTF|Network Adapter 802 Port|001.3"}:ToSubclass, ModelCorrespondence {"IANet_EthernetAdapter.NetworkAddressDescription"}:ToSubclass ] string NetworkAddresses[]; [ Description ( "MiniPortName represents the Win32 kernel mode service name of the adapter."):ToSubclass Amended ] string MiniPortName; [Description ( "MiniPortInstance distinguishes a network device from other devices of " "the same type on a machine. It is a unique string without any " "path-separator characters that contains serial-number information, " "if supported by the underlying bus, or some kind of location " "information. The format of the string is bus specific. " "It is persistent across system boots."):ToSubclass Amended ] string MiniPortInstance; }; // ============================================================================ // Physical Ethernet Adapter Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description("IANet_PhysicalEthernetAdapter concrete class objectifies " "the general network characteristics of the Intel NIC. In this class, " "the lower level networking properties are presented. Note that only the " "network relationships are in this class. The controller characteristics " "are presented separately."):Amended, LOCALE(0x409) ] class IANet_PhysicalEthernetAdapter : IANet_EthernetAdapter { [Description ( "PartNumber is the NIC's PBA manufacturing part number"):Amended ] string PartNumber; [Description ( "SanMacAddress is the MAC address assigned by the SAN server"):Amended ] string SanMacAddress; [Description ( "ETrackID is the EEPROM Version"):Amended ] string ETrackID; [Description ( "The textual representation of the speed"):Amended ] string SpeedString; [Description ( "Indicates the current status for the adapter"):Amended, ValueMap{"0", "1", "2", "3"}:Amended, Values {"Disabled", "Link Up", "Link Down", "Not Present"} : Amended ] uint16 DeviceStatus; [Description("Specifies the current status of the adapter."):Amended] string DeviceStatusString; [Description ("This setting has been deprecated and is no longer supported"):Amended, ValueMap{"0" }:Amended, Values {"This setting has been deprecated and is no longer supported"}:Amended] uint16 PHYDevice; [Description ("This setting has been deprecated and is no longer supported"):Amended] string OtherPhyDevice; [Description ( "Bus Type indicates the bus type"):Amended, ValueMap{"0","1","2","3","4","5","6","7"}:Amended, Values {"Unknown","ISA","EISA","PCMCIA","CardBus","PCI","PCI-X","PCI Express"}:Amended ] uint16 BusType; [Description ( "Negotiated Link Speed specifies the negotiated link speed of the bus"):Amended, ValueMap{"0","1","2","3"}:Amended, Values{"Not Supported","2.5 GT/s","5.0 GT/s","8.0 GT/s"}:Amended ] uint16 NegotiatedLinkSpeed; [Description ( "Negotiated Link Width specifies the negotiated link width of the bus"):Amended, ValueMap{"0","1","2","4","8","16"}:Amended, Values{"Not Supported","x1","x2","x4","x8","x16"}:Amended ] uint16 NegotiatedLinkWidth; [Description ( "PortNumber indicates the port number on PCIe Quad port adapters"):Amended, ValueMap{"0","1","2","3"}:Amended, Values{"A","B","C","D"}:Amended ] uint16 PortNumber; [Description ("PartitionNumber indicates the partition number of NPAR enabled adapters"):Amended ] uint16 PartitionNumber; [Description ( "MediaType indicates the media which interfaces to this phy"):Amended, ValueMap{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9","10","11","12"}:Amended, Values {"Unknown", "Copper", "Fiber", "Phone Line", "CX4 Copper", "SFP+ Direct Attach", "SR Fiber", "LR Fiber", "KX/KX4 Backplane", "SerDes","Backplane","XAUI","SFP+ Active Direct Attach"} : Amended ] uint16 MediaType; [Description ( "ExtendedStatus contains additional status information for the adapter"):Amended ] uint64 ExtendedStatus; [Description ("This setting has been deprecated and is no longer supported."):Amended] string OtherMediaType; [ Description ( "The Controller ID identifies the Ethernet controller that the adapter uses. " "Adapters with different DeviceIDs can have the same Controller ID"):Amended, ValueMap{ "0", "1", "3", "6", "7", "8", "11", "13", "20", "30", "31", "40", "50", "51", "52", "60", "62", "63", "65537", "65538", "65539", "65540", "65541", "65542", "65543", "65544", "65545", "65546", "65547", "65548", "65549", "65550", "65551", "65552", "65553", "131073", "196609", "196610", "327681" }:Amended, Values {"Unknown", /* 1 -> 63 */ "Intel 82542 Controller", "Intel 82543 Controller", "Intel 82544 Controller", "Intel 82540 Controller", "Intel 82545 Controller", "Intel 82541 Controller", "Intel 82547 Controller", "Intel 82571 Controller", "Intel 82573 Controller", "Intel 82574 Controller", "Intel ESB2LAN Controller", "Intel ICH8 Controller", "Intel ICH9 Controller", "Intel ICH10 Controller", "Intel 82575 Controller", "Intel 82576 Controller", "Intel ADORAM_VIRTUAL Controller", /* 65537 -> 65553 */ "Intel D100_A_STEP Controller", "Intel D100_B_STEP Controller", "Intel D100_C_STEP Controller", "Intel D101_A_STEP Controller", "Intel D101_B0_STEP Controller", "Intel D101M_A_STEP Controller", "Intel D101S_A_STEP Controller", "Intel D102_A_STEP Controller", "Intel D102_B_STEP Controller", "Intel D102_C_STEP Controller", "Intel D102_D_STEP Controller", "Intel D102_E_STEP Controller", "Intel D102_F_STEP Controller", "Intel 82562_G Controller", "Intel 82562_GZ Controller", "Intel 82562_GX_GT Controller", "Intel 82562 Controller", /* 131073 */ "Intel 82597 EX Controller", /* 196609 -> 196610 */ "Intel 82598 Controller", "Intel 82599 Controller", "Intel XL710 Controller" }:Amended ] uint32 ControllerID; [Description ( "Adapter status specifies the current status of the adapter."):Amended, Bitmap{"1", "2", "4", "16", "32", "1024", "2048"}:Amended, Bitvalues {"Installed", "DriverLoaded", "HardwareMissing", "HasDiag", "HasLink", "HasTCOEnabled", "DeviceError"}:Amended, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.AdapterStatus"} ] uint32 AdapterStatus; [Description ( "EEE Link Status specifies the current EEE status of the link."):Amended, Bitmap{"0", "1", "2"}:Amended, Bitvalues {"No EEE", "EEE Negotiated", "EEE Negotiated and running LPI"}:Amended, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.EEELinkStatus"} ] uint64 EEELinkStatus; [Override ("Capabilities"), Description ( "Lists the capabilities of the device."):Amended, ArrayType ("Indexed"), Values { /* 0 */ "Unknown", "Other", "AlertOnLan", "WakeOnLan", /* 4 */ "Adapter Fault Tolerance", "Adaptive Load Balancing", /* 6 */ "IPSec Offload", "ASF", /* 8 */ "Feature Not Supported", "Static Link Aggregation", /* 10 */ "IEEE 802.3ad Dynamic Link Aggregation", "Checksum Offload", /* 12 */ "Switch Fault Tolerance", "Feature Not Supported", "Feature Not Supported", /* 15 */ "Feature Not Supported", "Feature Not Supported", "Feature Not Supported", /* 18 */ "Feature Not Supported", "Feature Not Supported", /* 20 */ "Feature Not Supported", "Feature Not Supported", /* 22 */ "Feature Not Supported", "Feature Not Supported", /* 24 */ "Feature Not Supported", /* 25 */ "Feature Not Supported", "Feature Not Supported", /* 27 */ "Feature Not Supported", "Feature Not Supported", /* 29 */ "TCO Capability", "Wake Up Capabilities", "IP Checksum Offload", /* 32 */ "10 Mbps", "100 Mbps", "1000 Mbps", "10000 Mbps", /* 36 */ "Teaming", "VLAN", "IEEE VLAN", "ISL VLAN", "Feature Not Supported", /* 41 */ "Identify Adapter Support", "Cable Test Support", "Diagnostic Support", /* 44 */ "Flash support", "ICH Support", "Usage Server", "Vendor Intel", "Feature Not Supported", /* 49 */ "Feature Not Supported", "PowerManagement Support", "Feature Not Supported", /* 52 */ "MFO", "Pass Through", "Quad-Port Support", "Dedicated MAC Address", /* 56 */ "Jumbo Frame Support","Feature Not Supported","Signal Quality Test", /* 59 */ "Cable Offline Test", "Adapter is LOM", "Scalable Networking Pack Capability", /* 62 */ "CB Platform Capability", /* 63 */ "iSCSI Capability", /* 64 */ "LinkSec Capability", /* 65 */ "DCB Capability", /* 66 */ "FCoE Capability","KX Module Capability", /* 68 */ "Virtual Machines Load Balancing", /* 69 */ "Performance Profile Support", /* 70 */ "OS2BMC", /* 71 */ "AMT Capable", /* 72 */ "2500 Mbps", /* 73 */ "Basic Support", /* 74 */ "Extended Support", /* 75 */ "40000 Mbps", /* 76 */ "NPAR Enabled" } : Amended, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.CapabilityDescriptions"} ] uint16 Capabilities[]; [Override ("CapabilityDescriptions"), Description ( "An array of free-form strings providing more detailed " "explanations for any of the Physical Ethernet Adapter features " "indicated in the Capabilities array. Note, each entry of " "this array is related to the entry in the Capabilities " "array that is located at the same index."):Amended, ArrayType ("Indexed"), ModelCorrespondence {"IANet_PhysicalEthernetAdapter.Capabilities"} ] string CapabilityDescriptions[]; [ Description ( "Hardware status specifies the current status of the hardware"):Amended, Values {"Unknown", "Ready", "Initializing", "Reset", "Closing", "Not Ready" }: Amended ] uint32 HardwareStatus; [Description ( "This setting has been deprecated and is no longer supported."):Amended, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.OtherEnabledCapabilityIDs"} ] uint16 OtherEnabledCapabilityIDs[]; [Description ("This setting has been deprecated and is no longer supported."):Amended, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.OtherEnabledCapabilities"} ] string OtherEnabledCapabilities[]; [Description ("This setting has been deprecated and is no longer supported."):Amended, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.OtherEnabledCapabilities"} ] string OtherCapabilityDescriptions[]; [Description ("SlotID field of the System Slot structure provides a mechanism to correlate the physical attributes of the slot to its logical access method."):Amended] string SlotID; [Description ("The Location property displays the bus, device, function and segment PCI configuration space information for the adapter."):Amended] string Location; [Description ( "EEPROMVersion contains the EEPROM version of the device."):Amended ] string EEPROMVersion; [Description ( "OTPVersion contains the OTP version of the device."):Amended ] string OTPVersion; [Description( "Original display name of the adapter. "):Amended] string OriginalDisplayName; [Description ( "PCI device Id of the device."):Amended ] string PCIDeviceID ; [Description ("Displays the connection name of the device."):Amended] string ConnectionName; [Description ( "GetHbaPath will return the path to the corresponding HBA's instance " "in Device Mananger."):Amended, implemented ] uint32 GetHbaPath( [out] string HbaPath); [Description ( "IsFcoePagingFileLocatedOnTarget will return whether or not the port " "has an FCoE paging file on a remote target."):Amended, implemented ] uint32 IsFcoePagingFileLocatedOnTarget( [out] boolean bHasRemotePagingFile); [Description ( "IdentifyAdapter will flash the light on the adapter for a few " "seconds to enable the user to identify it. This method will only " "work for physical adapters."):Amended, implemented ] uint32 IdentifyAdapter( [in] uint16 nSeconds ); [Description ( "GetPowerUsageOptions detects any optional power usage settings. " "For example, power usage for standby, battery operation etc." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetPowerUsageOptions"} ] uint32 GetPowerUsageOptions( [OUT, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 AutoPowerSaveModeEnabled, [OUT, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 ReduceSpeedOnPowerDown, [OUT, ValueMap {"0","1"} : Amended, Values {"Disabled", "Enabled"}: Amended ] uint32 SmartPowerDown, [OUT, ValueMap {"1","2"}: Amended , Values {"Normal Power", "Low Power"}: Amended ] uint32 SavePowerNowEnabled, [OUT, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 EnhancedASPMPowerSaver, [OUT, ValueMap {"0","1"} : Amended, Values {"Disabled", "BatteryMode"}: Amended ] uint32 ACBSMode, [OUT, ValueMap {"0","1"} : Amended, Values {"Disabled", "Enabled"}: Amended ] uint32 LinkSpeedBatterySaver, [OUT, ValueMap {"0","1"} : Amended, Values {"Disabled", "Enabled"}: Amended ] uint32 SystemIdlePowerSaver ); [Description ( "This method can be used to makes changes to the power usage options. " "For example, this method could be used to reduce power usage for " "standby, battery operation etc. Note power usage settings are " "stored and used for every boot." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetPowerUsageOptions"} ] uint32 SetPowerUsageOptions( [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 AutoPowerSaveModeEnabled, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 ReduceSpeedOnPowerDown, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 SmartPowerDown, [IN, ValueMap {"1","2"}: Amended , Values {"Normal Power", "Low Power"}: Amended ] uint32 SavePowerNowEnabled, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 EnhancedASPMPowerSaver, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "BatteryMode"}: Amended ] uint32 ACBSMode, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 LinkSpeedBatterySaver, [IN, ValueMap {"0","1"} : Amended, Values {"Disabled", "Enabled"}: Amended ] uint32 SystemIdlePowerSaver ); [Description ( "GetWakeOnLanPowerOptions returns WakeOnLan power settings. " "For example, information about wakeonlink, wakeonmagicpacket etc.." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetWakeOnLanPowerOptions"} ] uint32 GetWakeOnLanPowerOptions( [OUT, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeFromPowerOff, [OUT, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeOnLink, [OUT, ValueMap {"0","1"} : Amended, Values {"Disabled", "Enabled"}: Amended ] uint32 WakeOnMagicPacket, [OUT, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeOnDirectedPacket, [OUT, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeOnPattern ); [Description ( "This method can be used to makes changes to the WakeOnLan options. " "For example, this method could be used to set options like " "wakefromPoweroff, wakeOnlink, WakeOnMagicPacket, WakeOnDirectedPacket etc." " Note WakeOnLan settings are stored and used for every boot." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetWakeOnLanPowerOptions"} ] uint32 SetWakeOnLanPowerOptions( [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeFromPowerOff, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeOnLink, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeOnMagicPacket, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeOnDirectedPacket, [IN, ValueMap {"0","1"}: Amended , Values {"Disabled", "Enabled"}: Amended ] uint32 WakeOnPattern ); [Description ( "This method is used to makes changes to the Power management" "capabilities during DMIX install so that any upgrade scenarios from " "earlier releases will have the right options for all the WakeOnLAN" " options and DMIX will not have reinterpret them dynamically" ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetPowerMgmtCapabilities"} ] uint32 SetPowerMgmtCapabilities(); [Description ( "This method can be used to check if SetPowerMgmtCapabilities() needs to be called." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsSetPowerMgmtCapabilitiesReq"} ] uint32 IsSetPowerMgmtCapabilitiesReq( [OUT] boolean bIsSetRequired); [Description ( "This method can be used to check if iSCSI is supported by the OS and iSCSI " "patch and hotfix are installed." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsiSCSISupported"} ] uint32 IsiSCSISupported( [OUT] boolean bIsiSCSIOS, [OUT] boolean bIsiSCSIPatch, [OUT] boolean bIsiSCSIHotFix); [Description ( "This method can be used to determine if the passed in setting will be changed when the new team is created." "Depending on the adapters in the team and which features each supports, the setting may be disabled to " "synchronize the setting accross all adapters in the team." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.ValidateSettingOnNewTeam"} ] uint32 ValidateSettingOnNewTeam ( [IN] string Adapters[], [IN] string SettingName, [OUT] uint64 ValResult ); [Description ( "This method can be used to determine the available team modes based on the current configuration." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetListOfAvailableTeamModes"} ] uint32 GetListOfAvailableTeamModes ( [IN] string Adapters[], [OUT] uint32 TeamModes[] ); [Description ( "This method can be used to determine if any of the settings supported by the list of adapters passed in will be changed when the new team is created." "Depending on the adapters in the team and the features each device supports, a setting's value may need to change in order to " "synchronize the setting's value accross all devices in the team." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.ValidateSettingOnNewTeamEx"} ] uint32 ValidateSettingOnNewTeamEx ( [IN] string Adapters[], [IN] uint32 PerformanceProfile, [IN] uint32 Reserved1, [IN] uint32 Reserved2, [OUT] uint64 ValResult ); [Description ( "This method determines if there is a common performance profile that is supported " "by all the devices passed in first parameter. The method returns an array of the " "performance profiles are the supported by the new team." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetListOfSupportedPerformanceProfilesOnNewTeam"} ] uint32 GetListOfSupportedPerformanceProfilesOnNewTeam ( [IN] string Adapters[], [OUT] string PerformanceProfileNames[], [OUT] uint32 PerformanceProfileValues[] ); [Description ( "This method will be used during the installation of DMIX to setup the DCE service with the default DCB settings." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetupDCB_Defaults"} ] uint32 SetupDCB_Defaults ( [OUT] uint32 ValResult ); [Description ( "This method can be used to check if iSCSI is enabled on that adapter." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsiSCSIEnabled"} ] uint32 IsiSCSIEnabled( [OUT, Values {"0", "1", "2", "3"}: Amended ] uint32 iSCSIStatus); [Description ( "This method can be used to check if Macsec is enabled on that adapter." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsMacsecEnabled"} ] uint32 IsMacsecEnabled( [OUT, Values {"0", "1", "2"}: Amended ] uint32 iMacsecStatus); [Description ( "This method can be used to check if Macsec driver is bound to that adapter." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsMacsecEnabledOnDevice"} ] uint32 IsMacsecEnabledOnDevice( [OUT] boolean bMacsecBound); [Description ( "This method can be used to check if AMT is enabled on adapter." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.IsAmtEnabledOnDevice"} ] uint32 IsAmtEnabledOnDevice( [OUT] boolean bAmtEnabled); [Description ( "This method can be used to get the NDIS version" ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetNDISVersion"} ] uint32 GetNDISVersion( [OUT] uint32 dwMajorVersion, [OUT] uint32 dwMinorVersion); [Description ( "This method can be used check if the fan is running on the adapter. NOTE: not all devices support this functionality" ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetAdapterFanStatus"} ] uint32 GetAdapterFanStatus( [OUT, ValueMap {"0", "1", "2"}: Amended , Values {"Not Supported", "Not Active", "Active"}: Amended ] uint32 dwAdapterFanStatus); [Description ( "This method can be used to check if warnings exist on the adapter. NOTE: not all devices support this functionality" ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetAdapterWarnings"} ] uint32 GetAdapterWarnings([OUT] UINT64 dwAdapterWarnings); [Description ( "This method should be called during the installation when the FCoE feature is installed. FCoE enabled adapter perform better with Jumbo Frames enabled." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.EnableJumboFramesOnFcoeDevices"} ] uint32 EnableJumboFramesOnFcoeDevices(); [Description ( "This method is only to be called by the DMIX installer during a clean installation of DMIX or with the add or removal of the FCoE feature." ):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.InitializePerformanceProfilesOnDevices"} ] uint32 InitializePerformanceProfilesOnDevices ( [IN] boolean bInitializeValues, [OUT] uint64 ValResult ); [Description ("This method validates settings the user has changed."):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.ValidateSettingsModification"} ] uint32 ValidateSettingsModification( [IN] SettingObj settings[], [IN] uint32 bSetValues, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method set settings."):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.SetSettings"} ] uint32 SetSettings( [IN] SettingObj settings[] ); [Description( "ValidateCreateVLAN is used to validate a new VLAN can be created for this adapter."):Amended, implemented ] uint16 ValidateCreateVLAN([in] string VLANNumbers, [in] string Name, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method gets the settings relevant to the indicated profile."):Amended, implemented, ModelCorrespondence {"IANet_PhysicalEthernetAdapter.GetSettingsForProfile"} ] uint32 GetSettingsForProfile( [IN] uint32 PerformanceProfile, [OUT] string settings[], [OUT] string values[], [OUT] WarningMessageObj WarningMessages[] ); }; // ============================================================================ // Intel IANetSetting Abstract Base Class // ============================================================================ [Abstract, Description("IANet_Setting objectifies instance related " "driver and network device settings. IANet_Setting is an " "Abstract superclass for a set of concrete classes of different " "types. This set of classes allows open ended usage of a variable " "number of settings. These can be different for different adapters, " "teams or VLANs " "and it may not always be possible to predict what parameters will " "be required."):Amended, LOCALE(0x409) ] class IANet_Setting : CIM_Setting { [Key,Description( "ParentId identifies the object that this parameter is for. " "This is used to ensure that the parameters have unique keys - applications " "should use associations to link settings with managed elements.") : ToSubclass Amended ] string ParentId; [Key,Description( "ParentType identifies the type of object that this parameter is for. " "This can take one of the following values:\n" " VLAN - for VLAN settings\n" " NIC - for Adapter settings\n" " Team - for Team settings\n") :ToSubclass Amended] string ParentType; [Key,Description("Specifies the name of the setting as it appears in the registry."):ToSubclass Amended] string Caption; [Description("Specifies the name of the device that is associated with the setting."):ToSubclass Amended] string Name; [Description("Specifies the name of the setting as it appears in the registry."):ToSubclass Amended] string RegistryKeyword; [Description("Specifies the description of the setting."):ToSubclass Amended] string Description; [Description("Specifies the description of the setting."):ToSubclass Amended] string DisplayName; [Description("This property has been deprecated."):ToSubclass Amended] string MiniHelp; [Description ( "Expose level of setting. For example, based on the expose level " "management application could determine whether this setting could be " "exposed to the user.") : Amended, ValueMap{"0", "1"}:ToSubclass Amended, Values {"Zero", "One"}:ToSubclass Amended ] uint32 ExposeLevel; [Description( "Writable is true if the setting can be changed and false if the setting " "cannot be changed. If this attribute is NULL then the user needs to do a " "pre-check to see if the setting can be saved."):ToSubclass Amended ] boolean Writable; [Description( "Some settings require a session to be set. If this is true then this " "setting requires a session. The setting will not be saved until the Apply " "method of IANet_NetService is called."):ToSubclass Amended ] boolean RequiresSession; [Description( "Some of the settings are grouped under specific categories." "Grouped is true if the setting is grouped."):ToSubclass Amended ] boolean Grouped; [Description( "Some of the settings are grouped under specific categories." "This attribute specifies the Id of the group under which this setting belongs." ):ToSubclass Amended ] uint16 GroupId; [Description( "This attribute specifies the Id of the setting detail under which this setting belongs." ):ToSubclass Amended ] uint64 DetailId; }; // ============================================================================ // Intel IANet_AdapterSetting Abstract Base Class // ============================================================================ [Abstract, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description("IANet_AdapterSetting objectifies Adapter instance related " "driver and network device settings. IANet_AdapterSetting is an " "Abstract superclass for a set of concrete classes of different " "types. This set of classes allows open ended usage of a variable " "number of settings." ):Amended, LOCALE(0x409) ] class IANet_AdapterSetting : IANet_Setting { }; // ============================================================================ // AdapterSetting Int Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description("IANet_AdapterSettingInt objectifies Adapter related " "driver and network device settings. IANet_AdapterSettingInt " "specifically handles Integer settings. The following " "constraints are placed on the CurrentValue and default value:\n" " min <= CurrentValue <= max\n" " ( CurrentValue - base ) is a multiple of step\n"):Amended, LOCALE(0x409)] class IANet_AdapterSettingInt : IANet_AdapterSetting { [Description( "Min is the minimum value that the integer can take."):Amended] sint64 min; [Description( "Max is the maximum value that the integer can take."):Amended] sint64 max; [Description( "Step is the granularity of the integer value."):Amended] sint64 step; [Description( "Base is the root from which the integer value may take values. i.e. " " CurrentValue - base is a multiple of step."):Amended] uint64 base; [Description( "DefaultValue is the initial value of the parameter."):Amended] sint64 DefaultValue; [Write, Description("Specifies the current value of the setting - this is the only attribute that the user can change."):Amended] sint64 CurrentValue; [Write, Description("Specifies the value of the setting from the registry."):Amended] sint64 RegistryValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description( "Scale is unit of measurement to set or estimate series of marks " "or points at known intervals to measure value of the parameter."):Amended] sint64 Scale; [Description ( "This method is called to check if the change in the setting will have any impact on other settings or to the user's experience." ):Amended, implemented ] uint32 ValidateSettingModification( [IN] sint64 CurrentValue, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The DisplayValue parameter specifies the new value of the setting." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateSettingModificationEx ( [IN] string DisplayValue, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Adapter Setting Enum Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description("IANet_AdapterSettingEnum objectifies Adapter related " "driver and network device settings. IANet_AdapterSettingEnum " "specifically handles Enumeration settings"):Amended, LOCALE(0x409) ] class IANet_AdapterSettingEnum : IANet_AdapterSetting { [Description( "PossibleValues is an array of the possible values allowed for the enum."):Amended ] sint64 PossibleValues[]; [Description( "DescriptionMap describes what each value means."):Amended ] string DescriptionMap[]; [write, Description("Specifies the current value of the setting - this is the only attribute that the user can change."):Amended] sint64 CurrentValue; [write, Description("Specifies the value of the setting from the registry."):Amended] sint64 RegistryValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description( "DefaultValue is the initial setting for this value."):Amended ] sint64 DefaultValue; [Description ( "This method is called to check if the change in the setting will have any impact on other settings or to the user's experience." ):Amended, implemented ] uint32 ValidateSettingModification( [IN] sint64 CurrentValue, [OUT] WarningMessageObj WarningMessages[]); [Description ("This method returns information related to changing the setting's value. The DisplayValue parameter specifies the new value of the setting." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateSettingModificationEx ( [IN] string DisplayValue, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Adapter Setting Slider Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description("IANet_AdapterSettingSlider objectifies Adapter related " "driver and network device settings. IANet_AdapterSettingSlider " "specifically handles Slider settings"):Amended, LOCALE(0x409) ] class IANet_AdapterSettingSlider : IANet_AdapterSetting { [Description( "PossibleValues is an array of all the possible values. The values " "should be arranged with the first value on the left of the slider and " "the last value on the right. "):Amended ] sint64 PossibleValues[]; [write, Description( "CurrentValue is the current setting for this parameter."):Amended ] sint64 CurrentValue; [write, Description( "Specifies the value of the setting from the registry."):Amended ] sint64 RegistryValue; [Description( "DefaultValue is the initial setting for this parameter."):Amended ] sint64 DefaultValue; [Description( "FirstLabel is the label that should be displayed on the left of the slider."):Amended ] string FirstLabel; [Description( "LastLabel is the label that should be displayed on the right of the slider."):Amended ] string LastLabel; [Description ( "This method is called to check if the change in the setting will have any impact on other settings or to the user's experience." ):Amended, implemented ] uint32 ValidateSettingModification( [IN] sint64 CurrentValue, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Adapter Setting Multi Selection Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description("IANet_AdapterSettingMultiSelection objectifies Adapter related " "driver and network device settings. IANet_AdapterSettingMultiSelection " "specifically handles Multi Selection settings."):Amended, LOCALE(0x409) ] class IANet_AdapterSettingMultiSelection : IANet_AdapterSetting { [Description( "PossibleValues is an array of all the possible selections."):Amended ] sint64 PossibleValues[]; [Description( "DescriptionMap is an array of descriptions of the possible selections."):Amended ] string DescriptionMap[]; [write, Description( "Current value is a bit-wise OR of the currently chosen options from the " "possible values."):Amended ] sint64 CurrentValue; [write, Description( "Registry value is a bit-wise OR of the currently chosen options from the " "possible values."):Amended ] sint64 RegistryValue; [write, Description( "Default value is a bit-wise OR of the default options from the " "possible values."):Amended ] sint64 DefaultValue; [Description ( "This method is called to check if the change in the setting will have any impact on other settings or to the user's experience." ):Amended, implemented ] uint32 ValidateSettingModification( [IN] sint64 CurrentValue, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Adapter Setting String Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description("IANet_AdapterSettingString objectifies Adapter related " "driver and network device settings. IANet_AdapterSettingString " "specifically handles String settings."):Amended, LOCALE(0x409) ] class IANet_AdapterSettingString : IANet_AdapterSetting { [Description("MaxLength is the maximum length of the string."):Amended] uint32 MaxLength; [write, Description("Specifies the current value of the setting - this is the only attribute that the user can change."):Amended] string CurrentValue; [write, Description("Specifies the value of the setting from the registry ."):Amended] string RegistryValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description("DefaultString is the initial value for the parameter."):Amended] string DefaultValue; [Description ( "This method is called to check if the change in the setting will have any impact on other settings or to the user's experience." ):Amended, implemented ] uint32 ValidateSettingModification( [IN] string CurrentValue, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The DisplayValue parameter specifies the new value of the setting." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateSettingModificationEx ( [IN] string DisplayValue, [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] string CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Adapter Setting Multi String Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description("IANet_AdapterSettingMultiString objectifies Adapter related " "driver and network device settings. IANet_AdapterSettingMultiString " "specifically handles Multi String settings."):Amended, LOCALE(0x409) ] class IANet_AdapterSettingMultiString : IANet_AdapterSetting { [Description("MaxLength is the maximum length of the string."):Amended] uint32 MaxLength; [write, Description("Specifies the current value of the setting - this is the only attribute that the user can change."):Amended] string CurrentValues[]; [write, Description("Specifies the current value of the setting from the registry - this is the only attribute that the user can change."):Amended] string RegistryValue[]; [Description("Specifies the current value of the setting."):Amended] string DisplayValue[]; [Description("DefaultString is the initial value for the parameter."):Amended] string DefaultValue; [Description ( "This method is called to check if the change in the setting will have any impact on other settings or to the user's experience." ):Amended, implemented ] uint32 ValidateSettingModification( [IN] string CurrentValues[], [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The DisplayValue parameter specifies the new value of the setting." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateSettingModificationEx ( [IN] string DisplayValue[], [OUT] WarningMessageObj WarningMessages[] ); [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] string CurrentValues [], [IN] string DisplayValues [], [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // IANet_AdapterToSettingAssoc class // ============================================================================ [ Association, Description("This class associates Intel NICs with their respective settings.") :Amended, LOCALE(0x409), Dynamic, Provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll") ] class IANet_AdapterToSettingAssoc : CIM_ElementSetting { [ Override("Element"), Description ("The Adapter to which the Setting object belongs."):Amended ] IANet_PhysicalEthernetAdapter REF Element = NULL; [ Override("Setting"), Description ("The Setting belonging to the Adapter."):Amended ] IANet_AdapterSetting REF Setting = NULL; }; // ============================================================================ // NetService class // ============================================================================ // TO BE DECIDED:: The Save Restore functionality, if not at Component Level, // then Save Restore functionality can be handled in this class. TBD //============================================================================= [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Core.dll"), Description ( "IANet_NetService is used to manage the interface supported by the provider. " "All set operations require a unique Client handle in the context if they are to " "succeed."):Amended, LOCALE(0x409) ] class IANet_NetService: CIM_Service { [Description ("Version of Intel NCS software stack."):Amended] string Version; [Description ("The BeginApply method creates a new Client handle that can be used for any set operations on the IANet classes." "Parameters:\n" " ClientSetHandle - returns the new Set handle\n" "Return code:\n" " 0 if operation was successful\n" " non-zero if operation failed - check extended error status\n" ):Amended, implemented] uint32 BeginApply([OUT] uint32 ClientSetHandle); [Description ("The GetPartitionsForPort method returns all partitions assocated with the same port as the indicated instance ID.\n" "Return code:\n" " 0 if operation was successful\n" " non-zero if operation failed or no partitions associated - check extended error status\n" ):Amended, implemented] uint32 GetPartitionsForPort([IN] string szDeviceID, [OUT] PartitionObj partitions[], [OUT] WarningMessageObj WarningMessages[]); [Description ("The ValidateAndSetBandwidthsForPort method sets the bandwidth information for the indicated partitions." ):Amended, implemented] uint32 ValidateAndSetBandwidthsForPort( [IN] PartitionObj partitions[], [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ("The Apply method commits any changes that the user has made with a Client Set handle. " "After this method is invoked the Client Set Handle is invalidated and a new handle needs to be acquired before the next Set operation" "Parameters:\n" " ClientSetHandle - Handle with which the set operations were performed\n" " FollowupAction - caller may be required to do something before changes will take effect.\n" "Return code:\n" " 0 if operation was successful\n" " non-zero if operation failed - check extended error status\n" ):Amended, implemented] uint32 Apply([IN] uint32 ClientSetHandle, [OUT,ValueMap {"0", "1"} :Amended, Values {"No Action Required", "Reboot"}: Amended] uint32 FollowupAction); [Description ("The IsDeviceRLB_Enabled method is used to determine if the miniport passed is a team with RLB enabled or a VLAN on a RLB team." ):Amended, implemented] uint32 IsDeviceRLB_Enabled([IN] string szDeviceName, [OUT] boolean bRLB_Blocking_VNIC); [Description ("The GetPROSetWarnings method is used to determine if any warnings exist." ):Amended, implemented] uint32 GetPROSetWarnings([OUT] WarningMessageObj WarningMessages[]); [Description ("The GetUninstallBlockingErrors method is used to determine if an uninstall can occur." ):Amended, implemented, static] uint32 GetUninstallBlockingErrors([IN] uint32 Filter, [OUT] WarningMessageObj WarningMessages[]); [Description ("The SynchronizeVmSwitchProtocolSetting method is used to synchronize the *RssOrVmqPreference setting across all base drivers in a team." ):Amended, implemented] uint32 SynchronizeVmSwitchProtocolSetting([IN] string szDeviceName, [IN] boolean bIsBinding); [Description ("The ConfigureNewDevices method is used to configure recently installed devices with default settings." ):Amended, implemented] uint32 ConfigureNewDevices([IN] string szDevices[], [IN] UINT64 ConfigurationMask); [Description ("The UninitializeDevices method is used to reset the list of devices back to the default state." ):Amended, implemented] uint32 UninitializeDevices([IN] string szDevices[], [IN] UINT64 ConfigurationMask); [ArrayType ("Indexed"), Values { /* 0 */ "Virtual NICs cannot be created on a team with Receive Load Balancing enabled. Disable Receive Load Balancing before creating a virtual NIC on this team.", /* 1 */ "Reserved" } : Amended] uint16 VNIC_RLB_WarningMessage; [ArrayType ("Indexed"), Values { /* 0 */ "Virtual NICs cannot be created on a team with Receive Load Balancing enabled. Receive Load Balancing will be disabled if you create a virtual NIC on this team.\n\nDo you want to continue?", /* 1 */ "Reserved" } : Amended] uint16 VNIC_DISABLE_RLB_WarningMessage; [ArrayType ("Indexed"), Values { /* 0 */ "Virtual NICs cannot be created on a team with Receive Load Balancing enabled. Receive Load Balancing will be disabled on the team.", /* 1 */ "Reserved" } : Amended] uint16 VNIC_RLB_DIABLED_ON_TEAM_WarningMessage; }; // ============================================================================ // Extended Status class // ============================================================================ [Description ( "IANet_ExtendedStatus is used to return error information back to the " "caller if something went wrong with an operation."):Amended, LOCALE(0x409) ] class IANet_ExtendedStatus : __ExtendedStatus { [Description ( "The code file name in the provider where the error occurred." ):Amended] string File; [Description ( "The line number in the code file where the error occurred." ):Amended] uint32 Line; [Description ( "The ClientSetHandle used in the call that caused the problem." ):Amended] uint32 ClientSetHandle; [Description ( "If a technical rule has failed this array provides several strings " "explaining the reasons for the failure. " ):Amended] string RuleFailureReasons[]; }; class SettingObj { string SettingName; string SettingValueList[]; uint32 SettingType; }; class WarningMessageObj { uint32 ErrorCode; string MessageText; uint32 MessageType; uint32 MessageAction; uint32 reserved; string reserved2; }; class PartitionObj { string Identifier; string DeviceGuid; string Name; [Description ( "PortNumber indicates the port number on PCIe Quad port adapters"):Amended, ValueMap{"0","1","2","3"}:Amended, Values{"A","B","C","D"}:Amended ] uint16 PortNumber; uint32 PartitionNumber; uint32 MaxBWPercent; uint32 MinBWPercent; string Reserved; uint32 Reserved2; }; class WarningMessagesText { [Override ("Warning Messages"), Description ( "Lists all the possible warning messages."):Amended, ArrayType ("Indexed"), Values { /* 0 */ "Success." } : Amended] uint16 WarningMessagesArray[]; }; WMI/Ncs2IDg.mof0000755000000000000000000006046012453213337010310 0ustar /************************************************************************ * * * INTEL CORPORATION PROPRIETARY INFORMATION * * This software is supplied under the terms of a license agreement or * * nondisclosure agreement with Intel Corporation and may not be copied * * or disclosed except in accordance with the terms of that agreement. * * Copyright (c) 2008 Intel Corporation. All Rights Reserved. * * * ************************************************************************/ /***********************************************************************\ * * NAME: Ncs2IDg.mof * * DESCRIPTION: Master MOF file with class definitions for the * Intel PRO Network Diagnostic WMI Provider (802.3 schema). * * PREREQUISITE: Ncs2Cm.mof and Ncs2ICr.mof [In that order] * * NOTE: This file generates language neutral MOF for IntelNCS2 namespace. * This file also generates ENU language specific MFL. * \***********************************************************************/ #pragma namespace ("\\\\.\\Root\\IntelNCS2") // ============================================================================ // DiagTest class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Description("IANet_DiagTest is the Intel Ethernet DiagTest class. " "It's a subclass of the abstract base class CIM_DiagnosticTest."):Amended, LOCALE(0x409) ] class IANet_DiagTest : CIM_DiagnosticTest { //***Class properties //* default values for unspecified parameters... [Override ("Name")] string Name = "Intel Ethernet Adapter Diagnostics"; [Description( "Some of the tests are grouped under specific categories." "Grouped is true if the test is grouped."): Amended ] boolean Grouped; [Description( "Some of the tests are grouped under specific categories." "This attribute specifies the Id of the group under which this test belongs." ): Amended ] uint16 GroupId; [Description( "This attribute specifies the Test Id ." ): Amended ] uint16 TestId; //***Class methods [Implemented, Description( "The RunTest method executes this test for the specified " "ManagedSystemElement (defined using the SystemElement input " "parameter). Results of the test are stored in a Diagnostic" "Result object, a reference to which is returned as the Result " "output parameter. How the test should execute, i.e. its " "settings, is defined in a DiagnosticSetting object (or by a " "subclass of DiagnosticSetting). A reference to a Setting " "object is specified using the Setting input parameter. If a " "reference is not passed into the method, then a default " "DiagnosticSetting may be used. This default Setting is " "associated with the DiagnoticTest using the DefaultSetting " "relationship of the Core Model. \n" "When RunTest starts execution, the settings, which are time sensitive, " "should be evaluated and captured. This is suggested since the " "DiagnosticSetting object can be modified at any time, and therefore " "the current test settings could be lost. \n" "The method's return codes are expected to adhere to the XML " "return codes as they are introduced. Currently, the standard " "return values are: \n" "0 = OK (function succeeded, but the test itself may have " "failed) \n" "1 = Unspecified Error (function failed for unspecified " "reasons) \n" "2 = Not Implemented (function is not implemented for this " "instance) \n" "3 = Out Of Resources (component could not allocate required " "resources, e.g. memory, disk space, etc.) \n" "In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array qualifier."):Amended ] uint32 RunTest([IN] CIM_ManagedSystemElement ref SystemElement, [IN] CIM_DiagnosticSetting ref Setting, [OUT] CIM_DiagnosticResult ref Result); [Implemented, Description( "Execution of this method will delete all instances of the " "DiagnosticResultForMSE object, for this DiagnosticTest " "and the specified ManagedSystemElement (defined using the " "SystemElement input parameter). The DiagnosticResults " "referenced in the DiagnosticResultForMSE instances will be " "deleted. Also the association DiagnosticResultForTest that " "referees to the DiagnosticResult object, and this test will " " be deleted.\n" " One output parameter is defined - ResultsNotCleared " "- which is a string array that lists the keys of the " "DiagnosticResults which could not be deleted. This information " "enables those Results to be revisited and either manually " "removed, or other corrective action taken. \n" "The method's return codes are expected to adhere to the XML " "return codes as they are introduced. Currently, the standard " "return values are: \n" "0 = OK (function succeeded, but the test itself may have " "failed) \n" "1 = Unspecified Error (function failed for unspecified " "reasons) \n" "2 = Not Implemented (function is not implemented for this " "instance) \n" "3 = Out Of Resources (component could not allocate required " "resources, e.g. memory, disk space, etc.) \n" "In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array qualifier."):Amended ] uint32 ClearResults([IN] CIM_ManagedSystemElement ref SystemElement, [OUT] String ResultsNotCleared[]); [Implemented, Description ( "After invocation of this method and its completion, the " "specified test(s) will be discontinued for the indicated " "ManagedSystemElement (defined by the SystemElement input " "parameter). The test to discontinue is specified using the " "Result input parameter. If all instances of this test should " "be stopped for the SystemElement, then the Result reference " "should be NULL. Upon completion of the method, test status " "and other information (such as PercentComplete) will be " "stored in the DiagnosticResult instance defined by the Result " "input parameter. The output parameter, TestingStopped, is " "used as follows:\n" " Set to TRUE if testing was successfully stopped. \n" " Set to FALSE if the current test(s) can not be stopped. \n" "If set to FALSE, testing will stop when the diagnostic is " "able to do so safely. To determine if/when the testing is " "stopped, check the TestState property in the DiagnosticResult " "instance defined by the Result parameter. TestState will " "change from \"In Progress\" to \"Stopped\" (from 4 to 5). \n" "The method's return codes are expected to adhere to the XML " "return codes as they are introduced. Currently, the standard " "return values are: \n" "0 = OK (function succeeded, but the test itself may have " "failed) \n" "1 = Unspecified Error (function failed for unspecified " "reasons) \n" "2 = Not Implemented (function is not implemented for this " "instance) \n" "3 = Out Of Resources (component could not allocate required " "resources, e.g. memory, disk space, etc.) \n" "In a subclass, the set of possible return codes could be " "specified, using a ValueMap qualifier on the method. The " "strings to which the ValueMap contents are 'translated' may " "also be specified in the subclass as a Values array qualifier."):Amended ] uint32 DiscontinueTest([IN] CIM_ManagedSystemElement ref SystemElement, [IN] CIM_DiagnosticResult ref Result, [OUT] Boolean TestingStopped); }; // ============================================================================ // DiagSetting class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Description("IANet_DiagSetting is the Intel Ethernet DiagSetting class. " "It's a subclass of the abstract base class CIM_DiagnosticSetting."):Amended, LOCALE(0x409) ] class IANet_DiagSetting : CIM_DiagnosticSetting { //***Class properties }; // ============================================================================ // DiagResult class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Description("IANet_DiagResult is the Intel Ethernet DiagResult class. " "It's a subclass of the abstract base class CIM_DiagnosticResult."):Amended, LOCALE(0x409) ] class IANet_DiagResult : CIM_DiagnosticResult { //***Class properties [Description ( "A textual descriptive name for the test."):Amended] string PackageName; //***Class properties [Description ( "A textual descriptive name for the test."):Amended] string Title; //***Class properties [Description ( "A textual descriptive name for the test."):Amended] string Caption; [Description ( "A textual description of the test results"):Amended] string Result; [Description ( "One or more value/map results from the execution of the test."):Amended, Values {"Passed" , "Failed", "Caution", "Test stopped", "Information", "NA", "Graph Excellent", "Graph Good", "Graph Adequate", "Graph Poor", "Graph Unknown"}:Amended ] uint16 ResultCode; [Description ( "Textual detail descriptions of the test results."):Amended] string Description; [Description ( "Textual solution description."):Amended] string Solution; [Description ( "TestResultsAttr indicates the type of the result string"):Amended] uint16 TestResultsAttr[]; [Description ( "TestResultIds indicates the result string Id's"):Amended] uint32 TestResultIds[]; }; // ============================================================================ // DiagTestForMSE class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Association, Description("IANet_DiagTestForMSE is the Intel Ethernet DiagTestForMSE class. " "It's a subclass of the abstract base class CIM_DiagnosticTestForMSE."):Amended, LOCALE(0x409) ] class IANet_DiagTestForMSE : CIM_DiagnosticTestForMSE { //***Class properties //* default values for unspecified parameters... [ Override("Antecedent"), Description("The test that may be run against a ManagedSystemElement."):Amended ] IANet_DiagTest REF Antecedent = NULL; [ Override("Dependent"), Description("The ManagedSystemElement that can be tested."):Amended ] IANet_PhysicalEthernetAdapter REF Dependent = NULL; }; // ============================================================================ // DiagResultForMSE class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Association, Description("IANet_DiagResultForMSE is the Intel Ethernet DiagResultForMSE class. " "It's a subclass of the abstract base class CIM_DiagnosticResultForMSE."):Amended, LOCALE(0x409) ] class IANet_DiagResultForMSE : CIM_DiagnosticResultForMSE { //***Class properties //* default values for unspecified parameters... [ Override("Result"), Description("The diagnostic result."):Amended ] IANet_DiagResult REF Result = NULL; [ Override("SystemElement"), Description("The ManagedSystemElement to which the diagnostic result " "applies."):Amended ] IANet_physicalEthernetAdapter REF SystemElement = NULL; }; // ============================================================================ // DiagResultForTest class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Association, Description("IANet_DiagResultForTest is the Intel Ethernet DiagResultForTest class. " "It's a subclass of the abstract base class CIM_DiagnosticResultForTest."):Amended, LOCALE(0x409) ] class IANet_DiagResultForTest : CIM_DiagnosticResultForTest { //***Class properties //* default values for unspecified parameters... [ Override("DiagnosticResult"), Description ("The result object."):Amended ] IANet_DiagResult REF DiagnosticResult = NULL; [ Override("DiagnosticTest"), Description ("The test that generated the result object."):Amended ] IANet_DiagTest REF DiagnosticTest = NULL; }; // ============================================================================ // DiagSettingForTest class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Association, Description("IANet_DiagSettingForTest is the Intel Ethernet DiagSettingForTest class. " "It's a subclass of the abstract base class CIM_DiagnosticSettingForTest."):Amended, LOCALE(0x409) ] class IANet_DiagSettingForTest : CIM_DiagnosticSettingForTest { //***Class properties //* default values for unspecified parameters... [ Override("Element"), Description ("The Test that can use the Setting object.."):Amended ] IANet_DiagTest REF Element = NULL; [ Override("Setting"), Description ("The test that generated the result object."):Amended ] IANet_DiagSetting REF Setting = NULL; }; // ============================================================================ // DiagResultInPackage class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Description("IANet_DiagResultInPackage is the Intel Ethernet DiagSetting class. " "It's a subclass of the abstract base class CIM_DiagnosticSetting."):Amended, LOCALE(0x409) ] class IANet_DiagResultInPackage : CIM_DiagnosticResultInPackage { //***Class properties //* default values for unspecified parameters... [ Override("PackageResult"), Description ("The package result object."):Amended ] IANet_DiagResult REF PackageResult = NULL; [ Override("Result"), Description ("The subtest result object."):Amended ] IANet_DiagResult REF Result = NULL; }; // ============================================================================ // DiagConnectionResultStrings class // This class is for NCSProv internal use. // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Diag.dll"), Association, Description("DiagConnectionResultStrings is the Intel Ethernet DiagConnectionTestResults class. This provides localized connection test result strings and is for NCSProv internal use."):Amended, LOCALE(0x409) ] class IANet_DiagConnectionResultStrings { //***Class properties //* default values for unspecified parameters... // [Override ("TeamPrefix"), Description ( // "Team Prefix contains the prefix for all team names."):Amended, // ArrayType ("Indexed"), // Values { // /* 0 */ "TEAM : ", // /* 1 */ "Reserved" // } : Amended] // uint16 TeamPrefix[]; [ArrayType ("Indexed"), Values { /* 0 */ "Connection Test", /* 1 */ "Reserved" } : Amended] uint16 Title; [ArrayType ("Indexed"), Values { /* 0 */ "Connection test - Using another connection", /* 1 */ "Reserved" } : Amended] uint16 Other; [ArrayType ("Indexed"), Values { /* 0 */ "Connection test passed.", /* 1 */ "Reserved" } : Amended] uint16 Passed; [ArrayType ("Indexed"), Values { /* 0 */ "Connection test failed.", /* 1 */ "Reserved" } : Amended] uint16 Failed; [ArrayType ("Indexed"), Values { /* 0 */ "Connection test in progress.", /* 1 */ "Reserved" } : Amended] uint16 InProgress; [ArrayType ("Indexed"), Values { /* 0 */ "Connection test stopped.", /* 1 */ "Reserved" } : Amended] uint16 Stopped; [ArrayType ("Indexed"), Values { /* 0 */ "This test is already running.", /* 1 */ "Reserved" } : Amended] uint16 ALREADY_RUNNING; [ArrayType ("Indexed"), Values { /* 0 */ "Cannot run the connection test.", /* 1 */ "Reserved" } : Amended] uint16 CANNOT_RUN_TEST; [ArrayType ("Indexed"), Values { /* 0 */ "This adapter does not have link.", /* 1 */ "Reserved" } : Amended] uint16 HAS_NO_LINK; [ArrayType ("Indexed"), Values { /* 0 */ "Make sure the cable is connected and the speed and duplex settings are configured correctly on the adapter and link partner.", /* 1 */ "Reserved" } : Amended] uint16 HAS_NO_LINK_DESC; [ArrayType ("Indexed"), Values { /* 0 */ "No servers configured.", /* 1 */ "Reserved" } : Amended] uint16 NO_SERVERS_CONFIGURED; [ArrayType ("Indexed"), Values { /* 0 */ "This test relies on a response from a gateway, DNS, DHCP or WINS server. If none of these servers are present on your network, the test cannot be run.", /* 1 */ "Reserved" } : Amended] uint16 NO_SERVERS_CONFIGURED_DESC; [ArrayType ("Indexed"), Values { /* 0 */ "Cannot run this test because this adapter is included in a team or VLAN.", /* 1 */ "Reserved" } : Amended] uint16 BOUND_TO_ANS; [ArrayType ("Indexed"), Values { /* 0 */ "TCP/IP protocol not configured.", /* 1 */ "Reserved" } : Amended] uint16 NOT_BOUND_TO_TCPIP; [ArrayType ("Indexed"), Values { /* 0 */ "To run this test, this connection must be configured to use the TCP/IP protocol.", /* 1 */ "Reserved" } : Amended] uint16 NOT_BOUND_TO_TCPIP_DESC; [ArrayType ("Indexed"), Values { /* 0 */ "Invalid IP address.", /* 1 */ "Reserved" } : Amended] uint16 INVALID_STATIC_IP; [ArrayType ("Indexed"), Values { /* 0 */ "The IP address for this connection is invalid.", /* 1 */ "Reserved" } : Amended] uint16 INVALID_STATIC_IP_DESC; [ArrayType ("Indexed"), Values { /* 0 */ "This connection obtained an IP address from a DHCP server.", /* 1 */ "Reserved" } : Amended] uint16 USING_DHCP_VALID_ADDRESS; [ArrayType ("Indexed"), Values { /* 0 */ "This adapter is configured to obtain an IP address automatically but no DHCP server is present on the network. Windows selected an IP address using Alternate Private IP Addressing.", /* 1 */ "Reserved" } : Amended] uint16 USING_APIPA_ADDRESS; [ArrayType ("Indexed"), Values { /* 0 */ "Invalid IP address.", /* 1 */ "Reserved" } : Amended] uint16 USING_DHCP_INVALID_ADDRESS; [ArrayType ("Indexed"), Values { /* 0 */ "The IP address for this connection is invalid. Possible cause: The system may be waiting for a response from a DHCP server.", /* 1 */ "Reserved" } : Amended] uint16 USING_DHCP_INVALID_ADDRESS_DESC; [ArrayType ("Indexed"), Values { /* 0 */ "This connection is configured to use a static IP address.", /* 1 */ "Reserved" } : Amended] uint16 STATIC_IP_CONFIG; [ArrayType ("Indexed"), Values { /* 0 */ "No gateway is available for this connection", /* 1 */ "Reserved" } : Amended] uint16 GATEWAY_NO_SERVER; [ArrayType ("Indexed"), Values { /* 0 */ "Ping Gateway %1: Passed", /* 1 */ "Reserved" } : Amended] uint16 GATEWAY_PING_PASSED; [ArrayType ("Indexed"), Values { /* 0 */ "Ping Gateway %1: Failed", /* 1 */ "Reserved" } : Amended] uint16 GATEWAY_PIN_FAILED; [ArrayType ("Indexed"), Values { /* 0 */ "No DNS server is available for this connection", /* 1 */ "Reserved" } : Amended] uint16 DNS_NO_SERVER; [ArrayType ("Indexed"), Values { /* 0 */ "Ping DNS %1: Passed", /* 1 */ "Reserved" } : Amended] uint16 DNS_PING_PASSED; [ArrayType ("Indexed"), Values { /* 0 */ "Ping DNS %1: Failed", /* 1 */ "Reserved" } : Amended] uint16 DNS_PIN_FAILED; [ArrayType ("Indexed"), Values { /* 0 */ "No WINS server is available for this connection", /* 1 */ "Reserved" } : Amended] uint16 WINS_NO_SERVER; [ArrayType ("Indexed"), Values { /* 0 */ "Ping WINS %1: Passed", /* 1 */ "Reserved" } : Amended] uint16 WINS_PING_PASSED; [ArrayType ("Indexed"), Values { /* 0 */ "Ping WINS %1: Failed", /* 1 */ "Reserved" } : Amended] uint16 WINS_PIN_FAILED; [ArrayType ("Indexed"), Values { /* 0 */ "No DHCP server is available for this connection", /* 1 */ "Reserved" } : Amended] uint16 DHCP_NO_SERVER; [ArrayType ("Indexed"), Values { /* 0 */ "Ping DHCP %1: Passed", /* 1 */ "Reserved" } : Amended] uint16 DHCP_PING_PASSED; [ArrayType ("Indexed"), Values { /* 0 */ "Ping DHCP %1: Failed", /* 1 */ "Reserved" } : Amended] uint16 DHCP_PIN_FAILED; // Online Link Test [ArrayType ("Indexed"), Values { /* 0 */ "This adapter is configured to force the speed to a low speed.", /* 1 */ "Reserved" } : Amended] uint16 FORCE_LOW_SPEED; [ArrayType ("Indexed"), Values { /* 0 */ "Auto Negotiation is not complete on this adapter.", /* 1 */ "Reserved" } : Amended] uint16 AUTONEG_PROGRESS; [ArrayType ("Indexed"), Values { /* 0 */ "The cable connected to this port is missing pairs needed to connect at 1000 Mbps.", /* 1 */ "Reserved" } : Amended] uint16 CAT5_CABLE_NEEDED; [ArrayType ("Indexed"), Values { /* 0 */ "The adapter is configured to negotiate the speed with the link partner, but 1000 Mbps has not been chosen as one of the possible speeds.", /* 1 */ "Reserved" } : Amended] uint16 NO_1000_MBPS_CHOSEN; [ArrayType ("Indexed"), Values { /* 0 */ "Link speed has been reduced because the Power Saver option is enabled.", /* 1 */ "Reserved" } : Amended] uint16 POWER_SAVE_MODE; [ArrayType ("Indexed"), Values { /* 0 */ "The adapter is configured to force the speed to a low speed.", /* 1 */ "Reserved" } : Amended] uint16 SELF_FORCE_LOW_SPEED; [ArrayType ("Indexed"), Values { /* 0 */ "Link speed: %1Mbps. The link partner is not capable of higher speeds.", /* 1 */ "Reserved" } : Amended] uint16 LINK_PARTNER_NO_1000; [ArrayType ("Indexed"), Values { /* 0 */ "Unknown", /* 1 */ "Reserved" } : Amended] uint16 DIAG_TEST_STATUS_UNKNOWN; [ArrayType ("Indexed"), Values { /* 0 */ "Other", /* 1 */ "Reserved" } : Amended] uint16 DIAG_TEST_STATUS_OTHER; [ArrayType ("Indexed"), Values { /* 0 */ "Passed", /* 1 */ "Reserved" } : Amended] uint16 DIAG_TEST_STATUS_PASSED; [ArrayType ("Indexed"), Values { /* 0 */ "Failed", /* 1 */ "Reserved" } : Amended] uint16 DIAG_TEST_STATUS_FAILED; [ArrayType ("Indexed"), Values { /* 0 */ "In Progress", /* 1 */ "Reserved" } : Amended] uint16 DIAG_TEST_STATUS_INPROGRESS; [ArrayType ("Indexed"), Values { /* 0 */ "Stopped", /* 1 */ "Reserved" } : Amended] uint16 DIAG_TEST_STATUS_STOPPED; }; WMI/Ncs2ITm.mof0000755000000000000000000007131412453213337010336 0ustar /************************************************************************ * * * INTEL CORPORATION PROPRIETARY INFORMATION * * This software is supplied under the terms of a license agreement or * * nondisclosure agreement with Intel Corporation and may not be copied * * or disclosed except in accordance with the terms of that agreement. * * Copyright (c) 2008-2013 Intel Corporation. All Rights Reserved. * * * ************************************************************************/ /***********************************************************************\ * * NAME: Ncs2ITm.mof * * DESCRIPTION: Master MOF file with class definitions for the * Intel PRO Network Adapter Teams (802.3 schema). * * PREREQUISITE: Ncs2Cm.mof and Ncs2ICr.mof [In that order] * * NOTE: This file generates language neutral MOF for IntelNCS2 namespace. * This file also generates ENU language specific MFL. * \***********************************************************************/ #pragma namespace ("\\\\.\\Root\\IntelNCS2") // ============================================================================ // Logical Ethernet Adapter Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_LogicalEthernetAdapter concrete class objectifies " "the general network characteristics of the Intel NIC Team portrayed as a Logical NIC. In this class, " "the lower level networking properties are presented."):Amended, LOCALE(0x409) ] class IANet_LogicalEthernetAdapter : IANet_EthernetAdapter { }; // ============================================================================ // Team of Adapters Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_TeamOfAdapters class objectifies " "the team properties of an AFT or other team. These are the properties which " "cannot be attributed to a particular adapter in the team."):Amended, LOCALE(0x409) ] class IANet_TeamOfAdapters : CIM_ExtraCapacityGroup { [Override ("TeamPrefix"), Description ("Team Prefix contains the prefix for all team names."):Amended, ArrayType ("Indexed"), Values { /* 0 */ "TEAM : ", /* 1 */ "Reserved" } : Amended] uint16 TeamPrefix[]; [Description ( "Indicates the current status of the team."):Amended, ValueMap{"0", "1", "2", "3"}:Amended, Values {"Disabled", "Link Up", "Link Down", "Not Present"} : Amended ] uint16 DeviceStatus; [Description("Specifies the current status of the team."):Amended] string DeviceStatusString; [Description("AdapterCount is the number of adapters currently in this team."):Amended ] uint32 AdapterCount; [Description("Specifies the name of the team, including prefix."):Amended] string TeamName; [Description("Specifies the name of the team."):Amended] string Team; [Description("MaxAdapterCount is the maximum number of adapters that can be placed in this team."):Amended] uint32 MaxAdapterCount; [Read, Write, Description("TeamingMode is the type of the current team."):Amended, ValueMap {"0", "1", "2", "4", "5", "6"}:Amended , Values {"Adapter Fault Tolerance", "Adaptive Load Balancing", "Static Link Aggregation", "IEEE 802.3ad Dynamic Link Aggregation", "Switch Fault Tolerance", "Virtual Machines Load Balancing"}:Amended ] uint32 TeamingMode; [Read, Write, Description("Specifies the team mode of the team."):Amended] string TeamMode; [Description("MFOEnabled represents the MFO enabled/disabled in the current team."):Amended] boolean MFOEnabled; [Description("LinksecEnabled is set to true if all the members on the team are LinksecMode enabled."):Amended] boolean LinksecEnabled; [Description("TeamMacAddress is the configured MAC address of this team."):Amended ] string TeamMacAddress; [Description("BoundToHyperV represents the Hyper-V enabled/disabled in the current team. "):Amended] boolean BoundToHyperV; [Description("The property contains the device unique identifier of the device currently set as the primary device on this team, if one has been specified."):Amended] string PrimaryAdapter; [Description("This property contains the device unique identifier of the device currently set as the secondary device on this team, if one has been specified."):Amended] string SecondaryAdapter; [Description("This property contains a list of all the devices that are member of this team."):Amended] string TeamMembers[]; [Description("VLANBoundToHyperV represents the Hyper-V enabled/disabled on a VLAN in the current team. "):Amended] boolean VLANBoundToHyperV; [Description ( "TestSwitchConfiguration tests the switch configuration to make sure that the team " "is functioning correctly with the switch. This test could be used to ensure that " "link partners i.e. a device that an adapter links to, such as another adapter, " "a hub, a switch, etc. support the chosen adapter teaming mode. For example, if " "the adapter is a member of a Link Aggregation team, this test can verify that " "link partners connected to the adapter support Link Aggregation." ):Amended, implemented ] uint32 TestSwitchConfiguration( [ IN, ValueMap {"0","1","2"}:Amended, Values {"Start", "Cancel", "Results"}: Amended ] uint32 Cmd, [ OUT, ValueMap {"0","1","2"}: Amended, Values {"OK", "Error", "Progress"}: Amended ] uint32 Status, [OUT] uint16 CauseMessageId[], [OUT] string strCause[], [OUT] uint16 SolutionMessageId[], [OUT] string strSolution[] ); [Description ( "CreateTeam adds a new Intel NIC Team to the system. The 1st input parameter Adapters " "is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team." "TeamingMode is the desired mode of the team to be created and TeamName is the unique name " "to be given to the new team." ):Amended, implemented, Static ] uint32 CreateTeam( [IN] IANet_PhysicalEthernetAdapter REF Adapters[], [IN, ValueMap {"0", "1", "2", "4", "5","6"}:Amended , Values {"Adapter Fault Tolerance", "Adaptive Load Balancing", "Static Link Aggregation", "IEEE 802.3ad Dynamic Link Aggregation", "Switch Fault Tolerance", "Virtual Machines Load Balancing"}:Amended] uint32 TeamingMode, [IN] string TeamName, [IN] boolean MFOEnable, [OUT] IANet_TeamOfAdapters REF TeamPath ); [Description ( "CreateTeamEx creates a new Intel NIC Team on the system. The first input parameter Adapters[]," "is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team." "The second parameter, TeamingMode is the desired mode of the team to be created and the third parameter, TeamName is the unique name " "to be given to the new team. The fourth parameter, PerformanceProfile is the desired performance profile to be set for the team." "The remaining parameters are reserved for later use." ):Amended, implemented, Static ] uint32 CreateTeamEx( [IN] IANet_PhysicalEthernetAdapter REF Adapters[], [IN, ValueMap {"0", "1", "2", "4", "5","6"}:Amended , Values {"Adapter Fault Tolerance", "Adaptive Load Balancing", "Static Link Aggregation", "IEEE 802.3ad Dynamic Link Aggregation", "Switch Fault Tolerance", "Virtual Machines Load Balancing"}:Amended] uint32 TeamingMode, [IN] string TeamName, [IN] uint32 PerformanceProfile, [IN] uint32 Reserved1, [IN] uint32 Reserved2, [OUT] IANet_TeamOfAdapters REF TeamPath ); [Description ("The CreateTeam2Ex method creates a new Intel NIC Team on the system. The Adapters parameter is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team." "The TeamMode parameter specifies new mode of the team. The TeamName parameter specifies the name of the team. The PerformanceProfile parameter specifies the performance profile for the team. The remaining parameters are reserved for later use."):Amended, implemented, Static] uint32 CreateTeam2Ex ( [IN] IANet_PhysicalEthernetAdapter REF Adapters[], [IN] string TeamMode, [IN] string TeamName, [IN] uint32 PerformanceProfile, [IN] uint32 Reserved1, [IN] uint32 Reserved2, [OUT] IANet_TeamOfAdapters REF TeamPath ); [Description ( "RenameTeam changes the name of an existing Intel NIC Team in the system. The input parameter" "TeamName is the unique new name to be given to the existing team." ):Amended, implemented ] uint32 RenameTeam( [IN] string TeamName ); [Description ( "ValidateAddAdapters validates the adapters which will be added to this team. The 1st input parameter Adapters " "is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team." "ValResult is the validated result." ):Amended, implemented ] uint32 ValidateAddAdapters( [IN] IANet_PhysicalEthernetAdapter REF Adapters[], [IN] uint32 TeamingMode, [OUT] WarningMessageObj WarningMessages[] ); [Description ("The ValidateAddAdaptersEx method returns information related to adding a new member to the team. The Adapters parameter is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team." "The TeamMode parameter specifies the new team mode. The WarningMessages object parameter returns any error messages associated with modifying the team."):Amended, implemented] uint32 ValidateAddAdaptersEx ( [IN] IANet_PhysicalEthernetAdapter REF Adapters[], [IN] string TeamMode, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "ValidateNewTeamMembers validates the adapters during the creation of a new team. The 1st input parameter NewAdapters " "is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team." "ValResultNewTeam is the validated result." ):Amended, implemented, Static ] uint32 ValidateNewTeamMembers( [IN] IANet_PhysicalEthernetAdapter REF NewAdapters[], [IN] uint32 NewTeamMode, [OUT] WarningMessageObj WarningMessages[] ); [Description ("The ValidateNewTeamMembersEx method returns information related to creating a new team. The NewAdapters parameter is a reference to an array of IANet_PhysicalEthernetAdapter which will be added to this team." "The NewTeamMode parameter specifies the team mode of the new team. The WarningMessages object parameter returns any error messages associated with create the new team."):Amended, implemented, Static] uint32 ValidateNewTeamMembersEx ( [IN] IANet_PhysicalEthernetAdapter REF NewAdapters[], [IN] string NewTeamMode, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "ValidateSetting validates the member adapter setting. " "Value is the setting value. SettingName is the " "adapter setting. ValResult is the validated result." ):Amended, implemented ] uint32 ValidateSetting( [IN] string SettingName, [IN] sint64 Value, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "ValidateTeamName validates the name of the team. The only input parameter is the name of the team. A ValResult of zero indicates that the name is valid." ):Amended, implemented, Static ] uint32 ValidateTeamName( [IN] string TeamName, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "ValidateTeamMode validates the mode of the team. The only input parameter is the mode or type of the team. A ValResult of zero indicates that the mode is compatible with all team members." ):Amended, implemented ] uint32 ValidateTeamMode( [IN] uint32 TeamingMode, [OUT] WarningMessageObj WarningMessages[] ); [Description ("The ValidateTeamModeEx method returns information related to changing the mode of the team. The TeamMode parameter specifies new mode or type of the team." "The WarningMessages object parameter returns any warning messages associated with changing the team mode."):Amended, implemented] uint32 ValidateTeamModeEx ( [IN] string TeamMode, [OUT] WarningMessageObj WarningMessages[] ); [Description ("The ValidateAndSetAdapterPriority sets the adapter priorities for the team."):Amended, implemented] uint32 ValidateAndSetAdapterPriority ( [IN] IANet_PhysicalEthernetAdapter REF PrimaryAdapter, [IN] IANet_PhysicalEthernetAdapter REF SecondaryAdapter, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); }; // ============================================================================ // Teamed Member Adapter class // ============================================================================ [Aggregation, dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Association, Description("IANet_TeamedMemberAdapter objectifies " "the properties of an individual member of an Intel adapter team. " "Those properties attributed to the team as a whole will be found, not here " "but in IANet_TeamOfAdapters."):Amended, LOCALE(0x409) ] class IANet_TeamedMemberAdapter : CIM_NetworkAdapterRedundancyComponent { [write, Description ("AdapterFunction describes how the adapter is used in " "the team."):Amended, ValueMap {"0", "1", "2", "3"}:Amended, Values {"Unknown", "Primary Adapter", "Secondary Adapter", "Other"}:Amended ] uint16 AdapterFunction; [Description ("AdapterStatus describes the adapter's status within the team."):Amended, write, ValueMap {"0", "1", "2", "3"}:Amended, Values {"Unknown", "Active", "StandBy", "InActive"}:Amended ] uint16 AdapterStatus; [write, Override("GroupComponent"), Description ( "The RedundancyGroup representing a set of load balanced " "NetworkAdapters."):Amended ] IANet_TeamOfAdapters REF GroupComponent; [write, Override("PartComponent"), Description ( "The Network Adapter(s) belonging to the RedundancyGroup."):Amended ] IANet_PhysicalEthernetAdapter REF PartComponent; }; // ============================================================================ // Network Virtual Adapter class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Association, Description ( "NetworkVirtualAdapter describes that an instance of Network " "Adapter is actually the result of several Adapters " "participating in a load balanced RedundancyGroup."):Amended, LOCALE(0x409) ] class IANet_NetworkVirtualAdapter : CIM_NetworkVirtualAdapter { [Override ("SystemElement"), Description ("The 'virtual' NetworkAdapter."):Amended ] IANet_LogicalEthernetAdapter REF SystemElement; [Override ("SameElement"), Description ( "The ExtraCapacity RedundancyGroup that describes the load " "balancing. The result of the load balancing is the 'virtual' " "Adapter.") :Amended ] IANet_TeamOfAdapters REF SameElement; }; // ============================================================================ // Intel IANet_TeamSetting Abstract Base Class // ============================================================================ [Abstract, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_TeamSetting objectifies Team instance related " "driver and network device settings. IANet_TeamSetting is an " "Abstract superclass for a set of concrete classes of different " "types. This set of classes allows open ended usage of a variable " "number of settings." ):Amended, LOCALE(0x409) ] class IANet_TeamSetting : IANet_Setting { [Description("Specifies name of the team the setting is associated with."):Amended] string TeamName; }; // ============================================================================ // TeamSetting Int Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_TeamSettingInt objectifies Team related " "driver and network device settings. IANet_TeamSettingInt " "specifically handles Integer settings. The following " "constraints are placed on the CurrentValue and default value:\n" " min <= CurrentValue <= max\n" " ( CurrentValue - base ) is a multiple of step\n"):Amended, LOCALE(0x409)] class IANet_TeamSettingInt : IANet_TeamSetting { [Description( "Min is the minimum value that the integer can take."):Amended] sint64 min; [Description( "Max is the maximum value that the integer can take."):Amended] sint64 max; [Description( "Step is the granularity of the integer value."):Amended] sint64 step; [Description( "Base is the root from which the integer value may take values. i.e. " " CurrentValue - base is a multiple of step."):Amended] uint64 base; [Description( "DefaultValue is the initial value of the parameter."):Amended] sint64 DefaultValue; [Write, Description( "CurrentValue is the actual value of the parameter - this is the only attribute that " "the user can change."):Amended] sint64 CurrentValue; [Write, Description("RegistryValue is the actual value of the parameter."):Amended] sint64 RegistryValue; [Description( "Scale is unit of measurement to set or estimate series of marks " "or points at known intervals to measure value of the parameter."):Amended] sint64 Scale; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Team Setting Enum Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_TeamSettingEnum objectifies Team related " "driver and network device settings. IANet_TeamSettingEnum " "specifically handles Enumeration settings"):Amended, LOCALE(0x409) ] class IANet_TeamSettingEnum : IANet_TeamSetting { [Description( "PossibleValues is an array of the possible values allowed for the enum."):Amended ] sint64 PossibleValues[]; [Description( "DescriptionMap describes what each value means."):Amended ] string DescriptionMap[]; [write, Description( "CurrentValue is the current setting for this parameter."):Amended ] sint64 CurrentValue; [write, Description("RegistryValue is the current setting for this parameter."):Amended] sint64 RegistryValue; [Description( "DefaultValue is the initial setting for this value."):Amended ] sint64 DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Team Setting Slider Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_TeamSettingSlider objectifies Team related " "driver and network device settings. IANet_TeamSettingSlider " "specifically handles Slider settings"):Amended, LOCALE(0x409) ] class IANet_TeamSettingSlider : IANet_TeamSetting { [Description( "PossibleValues is an array of all the possible values. The values " "should be arranged with the first value on the left of the slider and " "the last value on the right. "):Amended ] sint64 PossibleValues[]; [write, Description( "CurrentValue is the current setting for this parameter."):Amended ] sint64 CurrentValue; [Description( "DefaultValue is the initial setting for this parameter."):Amended ] sint64 DefaultValue; [Description( "FirstLabel is the label that should be displayed on the left of the slider."):Amended ] string FirstLabel; [Description( "LastLabel is the label that should be displayed on the right of the slider."):Amended ] string LastLabel; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Team Setting Multi Selection Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_TeamSettingMultiSelection objectifies Team related " "driver and network device settings. IANet_TeamSettingMultiSelection " "specifically handles Multi Selection settings."):Amended, LOCALE(0x409) ] class IANet_TeamSettingMultiSelection : IANet_TeamSetting { [Description( "PossibleValues is an array of all the possible selections."):Amended ] sint64 PossibleValues[]; [Description( "DescriptionMap is an array of descriptions of the possible selections."):Amended ] string DescriptionMap[]; [write, Description( "Current value is a bit-wise OR of the currently chosen options from the " "possible values."):Amended ] sint64 CurrentValue; [write, Description( "Default value is a bit-wise OR of the default options from the " "possible values."):Amended ] sint64 DefaultValue; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Team Setting String Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_TeamSettingString objectifies Team related " "driver and network device settings. IANet_TeamSettingString " "specifically handles String settings."):Amended, LOCALE(0x409) ] class IANet_TeamSettingString : IANet_TeamSetting { [Description("MaxLength is the maximum length of the string."):Amended] uint32 MaxLength; [write, Description("CurrentString is the current value for the parameter."):Amended] string CurrentValue; [write, Description("RegistryValue is the current value for the parameter."):Amended] string RegistryValue; [Description("DefaultString is the initial value for the parameter."):Amended] string DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] string CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // Team Setting Multi-String Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll"), Description("IANet_TeamSettingMultiString objectifies Team related " "driver and network device settings. IANet_TeamSettingMultiString " "specifically handles Multi-String settings."):Amended, LOCALE(0x409) ] class IANet_TeamSettingMultiString : IANet_TeamSetting { [Description("MaxLength is the maximum length of the string."):Amended] uint32 MaxLength; [write, Description("CurrentString is the current values for the parameter."):Amended] string CurrentValues[]; [write, Description("RegistryValue is the current values for the parameter."):Amended] string RegistryValue[]; [Description("DefaultString is the initial value for the parameter."):Amended] string DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue[]; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] string CurrentValues [], [IN] string DisplayValues [], [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // IANet_TeamToSettingAssoc class // ============================================================================ [ Association, Description("This class associates Intel NIC Teams with their respective settings.") :Amended, LOCALE(0x409), Dynamic, Provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Team.dll") ] class IANet_TeamToTeamSettingAssoc : CIM_ElementSetting { [ Override("Element"), Description ("The Team to which the Setting object belongs."):Amended ] IANet_LogicalEthernetAdapter REF Element = NULL; [ Override("Setting"), Description ("The Setting belonging to the Team."):Amended ] IANet_TeamSetting REF Setting = NULL; }; WMI/Ncs2IVL.mof0000755000000000000000000006152312453213337010300 0ustar /************************************************************************ * * * INTEL CORPORATION PROPRIETARY INFORMATION * * This software is supplied under the terms of a license agreement or * * nondisclosure agreement with Intel Corporation and may not be copied * * or disclosed except in accordance with the terms of that agreement. * * Copyright (c) 2008-2013 Intel Corporation. All Rights Reserved. * * * ************************************************************************/ /***********************************************************************\ * * NAME: Ncs2IVL.mof * * DESCRIPTION: Master MOF file with class definitions for the * Intel PRO Network VLANs (802.3 schema). * * PREREQUISITE: Ncs2Cm.mof and Ncs2ICr.mof [In that order] * * NOTE: This file generates language neutral MOF for IntelNcs2 namespace. * This file also generates ENU language specific MFL. * \***********************************************************************/ #pragma namespace ("\\\\.\\Root\\IntelNcs2") // ============================================================================ // VLAN class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description("IANet_VLAN objectifies " "the properties of a VLAN. All of the needed properties " "of the VLAN object are inherited from CIM_VLAN."):Amended, LOCALE(0x409) ] class IANet_VLAN : CIM_VLAN { [Description ("VLANName is the name of the VLAN as chosen by the user."):Amended] string VLANName; [Description ("Specifies the identifying number of the VLAN."):Amended] string VLANID; [Description ("Specifies the name of the device or team that the VLAN is associated."): Amended] string Parent; [Description ("Specifies the name of the device that the VLAN is associated with, including prefix, if applicable."): Amended] string ParentName; [Description ("Contains the VLAN's parent device ID."): Amended] string ParentID; [Description ( "Contains the VLAN's parent device type."):Amended, ValueMap{"0", "1", "2"}:Amended, Values {"Adapter", "Team", "Unknown"} : Amended ] uint16 ParentType; [Description ( "Indicates the current status of the VLAN."):Amended, ValueMap{"0", "1", "2", "3"}:Amended, Values {"Disabled", "Link Up", "Link Down", "Not Present"} : Amended ] uint16 DeviceStatus; [Description("Specifies the current status of the vlan."):Amended] string DeviceStatusString; [Description ( "The StatusInfo property indicates whether the Logical" "Device is in an enabled (value = 3), disabled (value = " "4) or some other (1) or unknown (2) state. If this " "property does not apply to the LogicalDevice, the value, " "5 (\"Not Applicable\"), should be used. " "If a Device is (\"Enabled\")(value=3), it has been " "powered up, and is configured and operational. The Device " "may or may not be functionally active, depending on whether " "its Availability (or AdditionalAvailability) indicate that " "it is (\"Running/Full Power\")(value=3) or (\"Off line\")" "(value=8). In an enabled but offline mode, a Device may be " "performing out-of-band requests, such as running Diagnostics. " "If (\"Disabled\") StatusInfo value=4), a Device can only be " "\"enabled\" or powered off. In a personal computer environment, " "(\"Disabled\") means that the Device's driver is not " "available in the stack. In other environments, a Device can " "be disabled by removing its configuration file. A disabled " "device is physically present in a System and consuming " "resources, but cannot be communicated with until a load " "of a driver, a load of a configuration file or some other " "\"enabling\" activity has occurred."): Amended, ValueMap {"1", "2", "3", "4", "5"}: Amended, Values {"Other", "Unknown", "Enabled", "Disabled", "Not Applicable"}: Amended ] uint16 StatusInfo; [Description ( "ValidateSetting validates the vlan settings. The 1st input parameter Adapter " "is a reference to an IANet_PhysicalEthernetAdapter for which the setting is " "validated. Value is the setting value. SettingName is the vlan setting. " "ValResult is the validated result." ):Amended, implemented ] uint32 ValidateSetting( [IN] string SettingName, [IN] sint64 Value, [OUT] WarningMessageObj WarningMessages[] ); [Description ("The ValidateSetting method returns information related to changing the vlan setting. The SettingName parameter specifies the name of the VLAN setting. The Value parameter specifies the new" "value of the VLAN setting. The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateSettingEx ( [IN] string SettingName, [IN] string DisplayValue, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "ValidateUpdate validates that the vlan name and number can be updated." ):Amended, implemented ] uint32 ValidateUpdate( [IN] string VLANName, [IN] sint64 VLANNumber, [OUT] WarningMessageObj WarningMessages[] ); }; // ============================================================================ // 802.1Q VLAN Service Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description ( "If the NIC supports 802.1Q, an instance of this class will " "be instantiated"):Amended, LOCALE(0x409) ] class IANet_802dot1QVLANService : CIM_802dot1QVLANService { [write, Description( "GVRP (GARP VLAN Registration Protocol) is used by workstations and " "switches to dynamically create, change and remove VLANs from across " "a network. This protocol allows VLAN switches which support GVRP " "to determine which VLANs are active and to identify their switch ports. " "The GVRPEnabled value indicates the GARP VLAN Registration Protocol active status."):Amended ] boolean GVRPEnabled; [write, Description( "GVRP (GARP VLAN Registration Protocol) is used by workstations and " "switches to dynamically create, change and remove VLANs from across " "a network. This protocol allows VLAN switches which support GVRP " "to determine which VLANs are active and to identify their switch ports. " "GVRPJoin time sets the frequency of messages issued when a new port " "has been added to the VLAN."):Amended, ValueMap { "100", "150", "200", "250", "300", "350", "400", "450", "500", "550", "600", "650", "700", "750", "800", "850", "900", "950", "1000" }:Amended, Values { "100 ms", "150 ms", "200 ms", "250 ms", "300 ms", "350 ms", "400 ms", "450 ms", "500 ms", "550 ms", "600 ms", "650 ms", "700 ms", "750 ms ", "800 ms", "850 ms", "900 ms", "950 ms", "1000 ms" }:Amended ] uint32 GVRPJoinTime; [Description( "CreateVLAN is used to create a new VLAN for this service."):Amended, implemented ] uint16 CreateVLAN( [in] uint32 VLANNumber, [in] string Name, [out] IANet_VLAN REF VLANpath ); [Description( "ValidateCreateVLAN is used to validate a new VLAN can be created for this service."):Amended, implemented ] uint16 ValidateCreateVLAN([in] string VLANNumbers, [in] string Name, [OUT] WarningMessageObj WarningMessages[] ); [Description( "CreateMultipleVLANs is used to create multiple VLANs for this service."):Amended, implemented ] uint16 CreateMultipleVLANs( [in] string VLANNumbers, [out] IANet_VLAN REF VLANpath [] ); }; // =================================================================== // IANet_Device802dot1QVVLANServiceImplementation // =================================================================== [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Association, Description ( "An association between a Service and how it is implemented. " "The cardinality of this association is many-to-many. " "A Service may be provided by more than one Logical" "Device, operating in conjunction. And, any Device may " "provide more than one Service. When multiple Devices are " "associated with a single Service, it is assumed that these " "elements operate in conjunction to provide the Service. If " "different implementations of a Service exist, each of these " "implementations would result in individual instantiations " "of the Service object. These individual instantiations " "would then have associations to the unique implementations."):Amended, LOCALE(0x409) ] class IANet_Device802dot1QVLANServiceImplementation : CIM_Dependency { [Override ("Antecedent"), Description ("The LogicalDevice."):Amended ] IANet_EthernetAdapter REF Antecedent; [Override ("Dependent"), Description ("The Service implemented using the LogicalDevice."):Amended ] IANet_802dot1QVLANService REF Dependent; }; // ============================================================================ // VLAN For class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Association, Description( "The IANet_VLAN used by the IANet_802dot1QVLANService."):Amended, LOCALE(0x409) ] class IANet_VLANFor : CIM_VLANFor { }; // ============================================================================ // Device Service Implementation class // ============================================================================ [Association,dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description ( "An association between a Service and how it is implemented. " "The cardinality of this association is many-to-many. " "A Service may be provided by more than one Logical" "Device, operating in conjunction. And, any Device may " "provide more than one Service. When multiple Devices are " "associated with a single Service, it is assumed that these " "elements operate in conjunction to provide the Service. If " "different implementations of a Service exist, each of these " "implementations would result in individual instantiations " "of the Service object. These individual instantiations " "would then have associations to the unique implementations."):Amended, LOCALE(0x409) ] class IANet_Device802dot1QVLANServiceImplementation : CIM_DeviceServiceImplementation { [Override ("Antecedent"), Description ("The LogicalDevice."): ToSubclass Amended ] IANet_EthernetAdapter REF Antecedent; [Override ("Dependent"), Description ("The Service implemented using the LogicalDevice."): ToSubclass Amended ] IANet_802dot1QVLANService REF Dependent; }; // ============================================================================ // Intel IANet_VLANSetting Abstract Base Class // ============================================================================ [Abstract, IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description("IANet_VLANSetting objectifies VLAN instance related " "driver and network device settings. IANet_VLANSetting is an " "Abstract superclass for a set of concrete classes of different " "types. This set of classes allows open ended usage of a variable " "number of settings." ):Amended, LOCALE(0x409) ] class IANet_VLANSetting : IANet_Setting { [Description ("Specifies the identifying number of the VLAN the setting is associated with."):Amended] string VLANID; [Description ("Specifies the name of the VLAN the setting is associated with."): Amended] string VLANName; [Description ("Specifies the name of the device that the VLAN is associated with."): Amended] string ParentName; }; // ============================================================================ // VLANSetting Int Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description("IANet_VLANSettingInt objectifies VLAN related " "driver and network device settings. IANet_VLANSettingInt " "specifically handles Integer settings. The following " "constraints are placed on the CurrentValue and default value:\n" " min <= CurrentValue <= max\n" " ( CurrentValue - base ) is a multiple of step\n"):Amended, LOCALE(0x409)] class IANet_VLANSettingInt : IANet_VLANSetting { [Description( "Min is the minimum value that the integer can take."):Amended] sint64 min; [Description( "Max is the maximum value that the integer can take."):Amended] sint64 max; [Description( "Step is the granularity of the integer value."):Amended] sint64 step; [Description( "Base is the root from which the integer value may take values. i.e. " " CurrentValue - base is a multiple of step."):Amended] uint64 base; [Description( "DefaultValue is the initial value of the parameter."):Amended] sint64 DefaultValue; [Write, Description( "CurrentValue is the actual value of the parameter - this is the only attribute that " "the user can change."):Amended] sint64 CurrentValue; [Write, Description("RegistryValue is the actual value of the parameter."):Amended] sint64 RegistryValue; [Description( "Scale is unit of measurement to set or estimate series of marks " "or points at known intervals to measure value of the parameter."):Amended] sint64 Scale; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // VLAN Setting Enum Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description("IANet_VLANSettingEnum objectifies VLAN related " "driver and network device settings. IANet_VLANSettingEnum " "specifically handles Enumeration settings"):Amended, LOCALE(0x409) ] class IANet_VLANSettingEnum : IANet_VLANSetting { [Description( "PossibleValues is an array of the possible values allowed for the enum."):Amended ] sint64 PossibleValues[]; [Description( "DescriptionMap describes what each value means."):Amended ] string DescriptionMap[]; [write, Description( "CurrentValue is the current setting for this parameter."):Amended ] sint64 CurrentValue; [write, Description("RegistryValue is the current setting for this parameter."):Amended] sint64 RegistryValue; [Description( "DefaultValue is the initial setting for this value."):Amended ] sint64 DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // VLAN Setting Slider Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description("IANet_VLANSettingSlider objectifies VLAN related " "driver and network device settings. IANet_VLANSettingSlider " "specifically handles Slider settings"):Amended, LOCALE(0x409) ] class IANet_VLANSettingSlider : IANet_VLANSetting { [Description( "PossibleValues is an array of all the possible values. The values " "should be arranged with the first value on the left of the slider and " "the last value on the right. "):Amended ] sint64 PossibleValues[]; [write, Description( "CurrentValue is the current setting for this parameter."):Amended ] sint64 CurrentValue; [Description( "DefaultValue is the initial setting for this parameter."):Amended ] sint64 DefaultValue; [Description( "FirstLabel is the label that should be displayed on the left of the slider."):Amended ] string FirstLabel; [Description( "LastLabel is the label that should be displayed on the right of the slider."):Amended ] string LastLabel; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateSettingModification ( [IN] sint64 CurrentValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // VLAN Setting Multi Selection Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description("IANet_VLANSettingMultiSelection objectifies VLAN related " "driver and network device settings. IANet_VLANSettingMultiSelection " "specifically handles Multi Selection settings."):Amended, LOCALE(0x409) ] class IANet_VLANSettingMultiSelection : IANet_VLANSetting { [Description( "PossibleValues is an array of all the possible selections."):Amended ] sint64 PossibleValues[]; [Description( "DescriptionMap is an array of descriptions of the possible selections."):Amended ] string DescriptionMap[]; [write, Description( "Current value is a bit-wise OR of the currently chosen options from the " "possible values."):Amended ] sint64 CurrentValue; [write, Description( "Default value is a bit-wise OR of the default options from the " "possible values."):Amended ] sint64 DefaultValue; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] sint64 CurrentValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // VLAN Setting String Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description("IANet_VLANSettingString objectifies VLAN related " "driver and network device settings. IANet_VLANSettingString " "specifically handles String settings."):Amended, LOCALE(0x409) ] class IANet_VLANSettingString : IANet_VLANSetting { [Description("MaxLength is the maximum length of the string."):Amended] uint32 MaxLength; [write, Description("CurrentString is the current value for the parameter."):Amended] string CurrentValue; [write, Description("RegistryValue is the current value for the parameter."):Amended] string RegistryValue; [Description("DefaultString is the initial value for the parameter."):Amended] string DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] string CurrentValue, [IN] string DisplayValue, [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // VLAN Setting Multi-String Class // ============================================================================ [dynamic, provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll"), Description("IANet_VLANSettingMultiString objectifies MultiVLAN related " "driver and network device settings. IANet_VLANSettingString " "specifically handles multi-String settings."):Amended, LOCALE(0x409) ] class IANet_VLANSettingMultiString : IANet_VLANSetting { [Description("MaxLength is the maximum length of the string."):Amended] uint32 MaxLength; [write, Description("CurrentString is the current values for the parameter."):Amended] string CurrentValues[]; [write, Description("RegistryValue are the current values for the parameter."):Amended] string RegistryValue[]; [Description("DefaultString is the initial value for the parameter."):Amended] string DefaultValue; [Description("Specifies the current value of the setting."):Amended] string DisplayValue[]; [Description ("This method returns information related to changing the setting's value. The CurrentValue or DisplayValue parameter specifies the new value of the setting." "Use the SetValuesOnNoError to save the updates if no errors are encountered." "The WarningMessages object parameter returns any error messages associated with changing the setting to the new value."):Amended, implemented] uint32 ValidateAndSetSetting ( [IN] string CurrentValues [], [IN] string DisplayValues [], [IN] uint32 SetValuesOnNoError, [OUT] WarningMessageObj WarningMessages[] ); [Description ( "This method is called to set the setting to its default." ):Amended, implemented ] uint32 SetDefault(); }; // ============================================================================ // IANet_VLANToSettingAssoc class // ============================================================================ [ Association, Description("This class associates Intel NICs with their respective settings.") :Amended, LOCALE(0x409), Dynamic, Provider("Ncs2"), IANet_ModuleIdentifier("Ncs2Vlan.dll") ] class IANet_VLANToVLANSettingAssoc : CIM_ElementSetting { [ Override("Element"), Description ("The VLAN to which the Setting object belongs."):Amended ] IANet_VLAN REF Element = NULL; [ Override("Setting"), Description ("The Setting belonging to the VLAN."):Amended ] IANet_VLANSetting REF Setting = NULL; }; WMI/SavResDX.vbs0000755000000000000000000047760312453213337010602 0ustar ' Updated for Static IP in Adapters and Teams ' Updated for Static IP in Adapters and Teams Option Explicit Dim colArgs, strSettingsFile, SValueSet, SessionObject, NetServiceObject Dim strIfSetFile, strFileName, strSave, strChoices, strInput, bError, strNetSerObjPath Dim strSettingName, strFname, index, bUserInput, bModified, NetServiceSet Dim totalAdapters, totalTeams, existTotalAdapters, bNewTeam, ServiceObject, FinalTargetObj Dim AdapterSets, AdapterObj, wbemServices, strComputer, bHasTeamOrVLAN, wbemServices1 Dim bMisMatch, bSelected, strSettingsIndex, strCapabilities, strAdapterName, strAdapterPCIDeviceID, strOrgDispName, strAdapterBDF Dim arrPrivDesc(), arrTeamPrivDesc(), Adapters(), Captions(), Teams() ,AdapterPath(), AdapterPCIDeviceID() Dim partitions(16, 10), partitionId Dim TeamsObjSet, TeamObj,Temp ,VLANObjSet, VLANObj, virtualAdapterSets, virtualAdapterObj Dim bMFOEnabled, shell, IPFilePath, HyperVFilePath, WINSFilePath, bBdfRestore const HKEY_LOCAL_MACHINE = &H80000002 const ET_Supported = "FALSE" Dim strRemove, strRemoveAnsOnly Dim OSVersion, OSProductType Dim isPowerManagementSupported Dim bNoAns Dim Arg Dim isTimeOutValueModified, oldTimeOutValue bNoAns = false isPowerManagementSupported = False dim strOEMCustomizeableValue, strOS const NCS_ADAPTER_CAP_VENDOR_INTEL = 47 const SETTINGS_INDEX = 5 const NCS_ADAPTER_CAP_BASIC_DMIX = 73 const NCS_ADAPTER_CAP_EXTENDED_DMIX = 74 const NCS_ADAPTER_CAP_NPAR_ENABLED = 76 'Dim blTenGigFETeamError 'blTenGigFETeamError = False 'During DMiX-to-DMiX upgrade scenarios only, the PermanentAddress 'will be stored in the config file instead of the PCIDeviceID. 'The is due to the fact that the initial release of DMiX 'did not have support for the PCIDeviceID property. Dim bIsUpgrade bIsUpgrade = False 'Initialize to FALSE. Dim InParameterETObj,TempETObject,OutParameterETObj Set shell = CreateObject("WScript.Shell") ' Set env = shell.Environment("USER") IPFilePath = "StaticIP.txt" HyperVFilePath = "HyperV.txt" WINSFilePath = "WINS.txt" ' arrays used to store TeamedMemberAdapter Information ' poor workaround for Wscript 5.1 (Windows 2000) - classes are not supported Dim TeamedMemberAdapterName(64, 10) Dim TeamedMemberAdapterPCIDeviceID(64, 10) Dim TeamedMemberAdapterPreferredPrimarySetting(64, 10) Dim TeamedMemberAdapterBDF(64, 10) ' Dim TeamedMemberAdapterGroupComponentSetting(64, 10) ' not currently used Dim TeamedMemberAdapterPartComponentSetting(64, 10) Const maxAdapterTeamVLANs = 64 Const maxAdapterTeam = 64 Const wbemFlagAmendedCreateOnly = &h20002 Const wbemFlagAmendedUpdateOnly = &h20001 Const maxSettings = 1000 Const DefaultFileName = "WmiConf.txt" Const SLA_TEAM_TYPE = "2" Const GEC_TEAM_TYPE = "3" Set colArgs = WScript.Arguments strComputer = "." CheckAdminRights() GetOSVersion() ' Check submitted arguments, show Usage for no arguments, ? or help arguments If (WScript.Arguments.Count = 0) Then PrintUsage() Else If (WScript.Arguments(0) = "?" ) OR (LCase(WScript.Arguments(0)) = "help") Then PrintUsage() Else strSettingsFile = defaultFileName ' Assign variables after determining what combination of options have been submitted For Each Arg in WScript.Arguments Select Case LCase(Arg) Case "save" strSave = "TRUE" Case "restore" strSave = "FALSE" Case "upsave" bIsUpgrade = True strSave = "TRUE" Case "uprestore" bIsUpgrade = True strSave = "FALSE" Case "removeansonly" strRemove = "TRUE" If WScript.Arguments.Count > 1 Then MsgBox "ans only" End If Case "remove" strRemove = "TRUE" If WScript.Arguments.Count > 1 Then MsgBox "remove all" End If Case "/bdf" bBdfRestore = TRUE Case Else strSettingsFile = Arg End Select Next 'Execute Save, Restore, Install or Remove on what data user submitted, depending on the arguments set above If (bIsUpgrade = True) AND (strSave = "TRUE") Then WScript.Echo "Executing Save during upgrade on local computer with " & strSettingsFile SaveSettings(strSettingsFile) ElseIf (bIsUpgrade = True) AND (strSave = "FALSE") Then WScript.Echo "Executing Restore during upgrade on local computer with " & strSettingsFile RestoreSettings(strSettingsFile) ElseIf strSave = "TRUE" Then WScript.Echo "Executing Save on local computer with " & strSettingsFile SaveSettings(strSettingsFile) ElseIf strSave = "FALSE" Then WScript.Echo "Executing Restore on local computer with " & strSettingsFile RestoreSettings(strSettingsFile) Elseif strRemove = "TRUE" Then WScript.Echo "Executing Remove on local computer" Remove() Else WScript.Echo "Unrecognized keyword: " & WScript.Arguments(0) & ". Keyword must be 'save' or 'restore' or 'remove' only." End If End If End If Sub GetOSVersion() Dim objWMI, objItem, colItems Set objWMI = GetObject("winmgmts:\\.\root\cimv2") Set colItems = objWMI.ExecQuery("Select * from Win32_OperatingSystem",,48) For Each objItem in colItems OSVersion = Left(objItem.Version,3) ' Stop errors from causing the script to fail. ' ProductType is not in the Windows 2000 or NT4 WMI On Error Resume Next OSProductType = Left(objItem.ProductType,2) ' If there was an error accessing this property, we know the OS is Windows 2000 or NT4 if err.number <> 0 then ' Set OSProductType to an arbitrary value. It is only checked if the OSVersion is 5.2 OSProductType = -1 end if On Error Goto 0 ' Allow errors to halt the script again Next End Sub '======================================================================================= ' ' Sub: CheckAdminRights() ' '======================================================================================= Sub CheckAdminRights Dim oReg Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const KEY_CREATE = &H0020 Dim bHasAccessRights: bHasAccessRights = False Dim bHasAccessRights2: bHasAccessRights2 = False Dim bHasAccessRights3: bHasAccessRights3 = False Dim bHasAccessRights4: bHasAccessRights4 = False oReg.CheckAccess HKEY_LOCAL_MACHINE, "SOFTWARE\" , KEY_CREATE, bHasAccessRights oReg.CheckAccess HKEY_LOCAL_MACHINE, "SYSTEM\" , KEY_CREATE, bHasAccessRights2 oReg.CheckAccess HKEY_CURRENT_USER, "CONTROL PANEL\" , KEY_CREATE, bHasAccessRights3 oReg.CheckAccess HKEY_CLASSES_ROOT, "CLSID\" , KEY_CREATE, bHasAccessRights4 If ((bHasAccessRights = False) Or (bHasAccessRights2 = False) or (bHasAccessRights3 = False) or (bHasAccessRights4 = False)) Then WScript.echo "Save/Restore Script requires Administrative Rights. Please log in as an Administrator and try again. In Windows* Vista, this script must be run as the built-in Administrator. Other users with administrative rights do not have sufficient rights to execute this script.", 0, "Intel(R) Save/Restore Script" WScript.Quit(0) End If End Sub '======================================================================================= ' ' Sub: SaveOemCustomizeableSetting() ' Description: Saves the current value of OEMCustomizeable in the NCS2 dmix key ' '======================================================================================= function SaveOemCustomizeableSetting() dim regAccess dim strKeyPath, strValueName, dwValue dim retValue const KEY_QUERY_VALUE = &H0001 const HKEY_LOCAL_MACHINE = &H80000002 set regAccess = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") strKeyPath = "SOFTWARE\Intel\Network_Services\NCS2" strValueName = "OEMCustomizeable" regAccess.GetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue retValue = "OEMCustomizeable=" & dwValue SaveOemCustomizeableSetting=retValue end function '======================================================================================= ' ' Sub: RestoreOemCustomizeableSetting() ' Description: Restores the saved value of OEMCustomizeable in the NCS2 dmix key ' '======================================================================================= sub RestoreOemCustomizeableSetting(byVal setting) dim regAccess dim strKeyPath, strValueName, dwValue const HKEY_LOCAL_MACHINE = &H80000002 if setting <> "" then wscript.echo "Setting Oem Customizeable Value" set regAccess = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") strKeyPath = "SOFTWARE\Intel\Network_Services\NCS2" strValueName = "OEMCustomizeable" regAccess.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,setting end if end sub '======================================================================================= ' ' Sub: PrintUsage() ' '======================================================================================= Sub PrintUsage() WScript.Echo "Intel(R) SavResDx.vbs version 1.0 " WScript.Echo "Copyright (C) Intel, Inc. 2013. All rights reserved." WScript.Echo "" WScript.Echo " Usage: SavResDX.vbs keywords default/settingsfile" WScript.Echo " Keywords are required and are 'save' or 'restore' only." WScript.Echo " Settings file can be the keyword 'default' or an explicit file name." WScript.Echo " Settings filename must include the file path." WScript.Echo " Default filename is WMIConf.txt, saved to the current directory." WScript.Echo " Default filename is used if no settings filename is given or" WScript.Echo " the keyword 'default' is used." End Sub '======================================================================================= ' ' Sub: SaveSettings(ByVal strFname) ' Save Adapter's, team's and VLAN's info. and settings info. to a text file. ' Save Adapter's compatiblity settings. ' '======================================================================================= Sub SaveSettings(byVal strFileName) dim colNetDevicesPhysical,colNetDevicesLogical dim objNetDevicePhyObj,objFile,objNetDeviceLogObj dim wbemServices dim DeviceIndex 'Create a configuration file If IsEmpty(CreateConfigFile(strFileName)) Then Exit sub Else Set objFile=CreateConfigFile(strFileName) End If objFile.WriteLine "*** NCS2 DMiX Save Data ***" objFile.WriteLine "*** Date " & Date & " Time " & Time() & " ***" objFile.WriteLine "**********************************************" objFile.WriteLine "" ' Save the OEMCustomeizable Setting for ViiV objFile.WriteLine SaveOemCustomizeableSetting() objFile.WriteLine "OS=" & OSVersion ' Set wbemServices = GetObject("winmgmts://./root/IntelNcs2") Set wbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") wbemServices.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True 'Get all instances from IANet_PhysicalEthernetAdapter for adapters Set colNetDevicesPhysical = wbemServices.InstancesOf("IANet_PhysicalEthernetAdapter") 'Save Adapters DeviceIndex=1 dim bIsLADIntelDevice dim bIsNPAREnabled dim LastCapIndex bIsNPAREnabled = false IsNPAREnabled colNetDevicesPhysical, bIsNPAREnabled For each objNetDevicePhyObj in colNetDevicesPhysical bIsLADIntelDevice = false 'Checks if the device is an Intel Device IsIntelDevice objNetDevicePhyObj, bIsLADIntelDevice 'Save settings for only Intel adapters by checking for Non-Intel and disabled adapters If (bIsLADIntelDevice AND (objNetDevicePhyObj.StatusInfo= 3)) then 'Save Adapter specific info objFile.WriteBlankLines(1) SaveAdapterInfo objFile, objNetDevicePhyObj, DeviceIndex SaveAdvancedSettings objFile, objNetDevicePhyObj, wbemServices SaveVlanSettings objFile, objNetDevicePhyObj, wbemServices DeviceIndex=DeviceIndex + 1 End if Next objFile.WriteBlankLines(1) 'Get all instances from IANet_LogicalEthernetAdapter for teams Set colNetDevicesLogical = wbemServices.InstancesOf("IANet_LogicalEthernetAdapter") ' SCR 50668 Fix: Without ANS installed, the IANet_LogicalEthernetAdapter class ' Is not exposed in the WMI, causing the for each loop below to fail. Since ' isNull() and isEmpty() are not reflecting when IANet_LogicalEthernetAdapter ' is not there, it was needed to be done like this. ' Turn on error handling (script does not halt on errors) on Error Resume Next For each objNetDeviceLogObj in colNetDevicesLogical ' check if there was an error accessing the Logical Adapter collection ' if not, get the ANS information if err.number = 0 then 'Save Team specific info SaveTeamInfo objFile, objNetDeviceLogObj, DeviceIndex, wbemServices SaveTeamAdvancedSettings objFile, objNetDeviceLogObj, wbemServices SaveVlanSettings objFile, objNetDeviceLogObj, wbemServices DeviceIndex=DeviceIndex + 1 objFile.WriteBlankLines(1) end if Next ' Turn off error handling (script halts on errors again) on Error Goto 0 objFile.WriteBlankLines(1) Wscript.Echo "Saving NPAR data!" SaveNPARSettings objFile objFile.close Wscript.Echo "Saving done!" 'if bIsUpgrade then ' SaveHyperVSettings HyperVFilePath 'end if SaveStaticIPSettings(IPFilePath) End Sub '======================================================================================= ' ' Sub: SaveSettings(ByVal strFname) ' Save Adapter's, team's and VLAN's info. and settings info. to a text file. ' Save Adapter's compatiblity settings. ' '======================================================================================= Sub IsIntelDevice(objNetDevicePhyObj,bIsLADIntelDevice) dim LastCapIndex dim index LastCapIndex=Ubound(objNetDevicePhyObj.Capabilities) For index = 0 to LastCapIndex-1 if( objNetDevicePhyObj.Capabilities(index) = NCS_ADAPTER_CAP_BASIC_DMIX) then bIsLADIntelDevice = true End if if( objNetDevicePhyObj.Capabilities(index) = NCS_ADAPTER_CAP_EXTENDED_DMIX) then bIsLADIntelDevice = true End if if( objNetDevicePhyObj.Capabilities(index) = NCS_ADAPTER_CAP_VENDOR_INTEL) then if(bIsUpgrade) then bIsLADIntelDevice = True End if End if Next End Sub '**************************************************************************** Private Function SaveAdapterInfo(objFile,objAdapter,DeviceIndex) dim LastCapIndex dim index,bFound bFound = False LastCapIndex=Ubound(objAdapter.Capabilities) 'objFile.WriteLine "Adapter Name=" & objAdapter.Caption 20/2/2004 objFile.WriteLine "Adapter Name=" & objAdapter.OriginalDisplayName If bIsUpgrade Then 'Save MAC address in config file for DMiX-to-DMiX upgrade scenarios only. objFile.WriteLine "Adapter PCIDeviceID=" & objAdapter.PermanentAddress Else objFile.WriteLine "Adapter PCIDeviceID=" & objAdapter.PCIDeviceID End if objFile.WriteLine "Adapter BusDeviceFunction=" & objAdapter.SlotID objFile.WriteLine "Adapter Index=" & DeviceIndex objFile.WriteLine "Private Description=" objFile.Write "Adapter Capabilities=" For index = 0 to LastCapIndex-1 objFile.Write objAdapter.Capabilities(index) objFile.Write "," if( objAdapter.Capabilities(index) = 50) then bFound = True End if Next if bFound then isPowerManagementSupported = True Else isPowerManagementSupported = False End if objFile.WriteLine objAdapter.Capabilities(LastCapIndex) objFile.WriteLine "Description=" & objAdapter.Description End Function '***************************************************************************** Private Function CreateConfigFile(byVal strFileName) dim fso dim file Set fso = CreateObject("Scripting.FileSystemObject") Set file=fso.CreateTextFile(strFileName,True) Set CreateConfigFile=file End Function '***************************************************************************** Private Function SaveAdvancedSettings(objFile,objAdapter,wbemServices) dim Perf_IANet_Obj_Name, Perf_IANet_Obj_Value, Perf_IANet_Obj_Desc, Perf_IANet_Obj_Exists dim szLLIPort dim szPortsList dim strQuery dim IANET_config dim NumVmqSetting, NumVmqSettingExists dim NumSriovSetting, NumSriovSettingExists dim IANet_Obj,OutParam dim oNamedValueSet Set oNamedValueSet = CreateObject("WbemScripting.SWbemNamedValueSet") oNamedValueSet.Add "GET_EXTENSIONS", true oNamedValueSet.Add "GET_EXT_KEYS_ONLY", false oNamedValueSet.Add "IANet_PartialData", 512 ' We only want to skip DCB settings if its an upgrade and FCoE or iSCSI is being changed from the previous install state dim bSkipDcbSettings : bSkipDcbSettings = false if (bIsUpgrade=True) then ' Check if DCB or FCOE is being modified before saving the settings ' This needs to happen dim oReg Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") dim strKeyPath : strKeyPath = "SOFTWARE\INTEL\Prounstl" ' These flags are set by the MSI Custom action "CA_CHECK_IF_DCB_DEFAULTS_NEED_TO_BE_RESET" and designates when DCB defaults should be set dim strFcoeValueName : strFcoeValueName = "DCB_Update_FCoE" dim strIscsiValueName : strIscsiValueName = "DCB_Update_iSCSI" dim strFcoeValue oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strFcoeValueName, strFcoeValue dim strIscsiValue oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strIscsiValueName, strIscsiValue ' if strFcoeValue OR strIscsiValue is changing, we need to skip DCB settings so they aren't restored later if (strFcoeValue="1") OR (strIscsiValue="1") then bSkipDcbSettings = true end if end if strQuery = "ASSOCIATORS OF {" & objAdapter.Path_.Path & "} WHERE ResultClass = IANet_AdapterSetting" Set IANet_config = wbemServices.ExecQuery(strQuery,,,oNamedValueSet) For Each IANet_Obj In IANet_config if (StrComp(IANet_Obj.Caption,"DCB_Settings")<>0) then ' DCB_Settings will be added later If (Is_GVRP_GMRP_Setting(IANet_Obj.Caption) = FALSE) AND (Is_StaticIP_Setting(IANet_Obj.Caption) = FALSE) Then ' Don't save GVRP, GMRP or Static IP settings if IANet_Obj.Description<>"DcbCfg" OR (IANet_Obj.Description="DcbCfg" AND bSkipDcbSettings=false) then ' Dont save DCB settings unless we're not to skip them (see above note) If (StrComp(IANet_Obj.Caption,"VMQueues")=0) Then set NumVmqSetting = IANet_Obj NumVmqSettingExists = "True" ElseIf (StrComp(IANet_Obj.Caption,"*NumVFs")=0) Then set NumSriovSetting = IANet_Obj NumSriovSettingExists = "True" ElseIf (StrComp(IANet_Obj.Caption,"PerformanceProfile")=0) Then 'Perf Profile saved to be written at end of setting saves Perf_IANet_Obj_Exists = "True" Perf_IANet_Obj_Name = "setting Name=" & IANet_Obj.Caption on error resume next Perf_IANet_Obj_Value = "setting Current Value=" & IANet_Obj.CurrentValue if err then szPortsList = "" for each szLLIPort in IANet_Obj.CurrentValues if StrComp(szLLIPort, " ", vbTextCompare) <> 0 then szPortsList = szPortsList & szLLIPort & "," end if next Perf_IANet_Obj_Value = "setting Current Value=" & szPortsList end if on error goto 0 Perf_IANet_Obj_Desc = "setting Description=" & IANet_Obj.Description Else objFile.WriteLine "setting Name=" & IANet_Obj.Caption on error resume next objFile.WriteLine "setting Current Value=" & IANet_Obj.CurrentValue if err then szPortsList = "" for each szLLIPort in IANet_Obj.CurrentValues if StrComp(szLLIPort, " ", vbTextCompare) <> 0 then szPortsList = szPortsList & szLLIPort & "," end if next objFile.WriteLine "setting Current Value=" & szPortsList end if on error goto 0 objFile.WriteLine "setting Description=" & IANet_Obj.Description End If end if End If end if Next If (StrComp(NumVmqSettingExists,"True")=0) Then objFile.WriteLine "setting Name=" & NumVmqSetting.Caption objFile.WriteLine "setting Current Value=" & NumVmqSetting.CurrentValue objFile.WriteLine "setting Description=" & NumVmqSetting.Description end if If (StrComp(NumSriovSettingExists,"True")=0) Then objFile.WriteLine "setting Name=" & NumSriovSetting.Caption objFile.WriteLine "setting Current Value=" & NumSriovSetting.CurrentValue objFile.WriteLine "setting Description=" & NumSriovSetting.Description end if strQuery = "SELECT * FROM IANet_AdapterSetting where ParentID='" & objAdapter.DeviceID & "' AND GroupID=12" set IANet_config = wbemServices.ExecQuery(strQuery,,,oNamedValueSet) For Each IANet_Obj In IANet_config objFile.WriteLine "setting Name=" & IANet_Obj.Caption objFile.WriteLine "setting Current Value=" & IANet_Obj.CurrentValue objFile.WriteLine "setting Description=" & IANet_Obj.Description exit for Next 'Power Saver if (isPowerManagementSupported = True) Then ' Some older versions of DMXI do not support all these power ' management options so we need to move on if there is a failure on error resume next Set OutParam = objAdapter.ExecMethod_("GetPowerUsageOptions") if isnull(OutParam.AutoPowerSaveModeEnabled) Then else objFile.WriteLine"setting Name=AutoPowerSaveModeEnabled" objFile.WriteLine"setting Current Value=" & OutParam.AutoPowerSaveModeEnabled objFile.WriteLine"setting Description=AutoPowerSaveModeEnabled" End If if isnull(OutParam.ReduceSpeedOnPowerDown) Then else objFile.WriteLine"setting Name=ReduceSpeedOnPowerDown" objFile.WriteLine"setting Current Value=" & OutParam.ReduceSpeedOnPowerDown objFile.WriteLine"setting Description=ReduceSpeedOnPowerDown" End If if isnull(OutParam.SmartPowerDown)Then else objFile.WriteLine"setting Name=SPDEnabled" objFile.WriteLine"setting Current Value=" & OutParam.SmartPowerDown objFile.WriteLine"setting Description=SmartPowerDown" End If if isnull(OutParam.SavePowerNowEnabled) Then else objFile.WriteLine"setting Name=SavePowerNowEnabled" objFile.WriteLine"setting Current Value=" & OutParam.SavePowerNowEnabled objFile.WriteLine"setting Description=SavePowerNowEnabled" End If if isnull(OutParam.EnhancedASPMPowerSaver) Then else objFile.WriteLine"setting Name=EnhancedASPMPowerSaver" objFile.WriteLine"setting Current Value=" & OutParam.EnhancedASPMPowerSaver objFile.WriteLine"setting Description=EnhancedASPMPowerSaver" End If ' Turn error checking back on on error goto 0 End If 'The performance profile needs to be set as the last item so that it sets the correct profile If (StrComp(Perf_IANet_Obj_Exists ,"True")=0) Then objFile.WriteLine Perf_IANet_Obj_Name objFile.WriteLine Perf_IANet_Obj_Value objFile.WriteLine Perf_IANet_Obj_Desc Perf_IANet_Obj_Exists = "False" End If End Function '***************************************************************************** Sub IsNPAREnabled(colNetDevicesPhysical, bIsNPAREnabled) Dim objNetDevicePhyObj dim LastCapIndex dim index For each objNetDevicePhyObj in colNetDevicesPhysical LastCapIndex=Ubound(objNetDevicePhyObj.Capabilities) For index = 0 to LastCapIndex-1 if( objNetDevicePhyObj.Capabilities(index) = NCS_ADAPTER_CAP_NPAR_ENABLED) then bIsNPAREnabled = true End if Next Next End Sub '***************************************************************************** Private Function SaveNPARSettings(objFile) Dim IANet_NetServiceClassDescription,cstring Dim Method Dim InParams,OutParams Dim Partitions, Partition Set wbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") ' SCR fix for 38688 and 39528 wbemServices.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True Set IANet_NetServiceClassDescription = wbemServices.Get("IANet_NetService") Set InParams = IANet_NetServiceClassDescription.Methods_.Item("GetPartitionsForPort").InParameters.SpawnInstance_() InParams.Properties_.Item("szDeviceID") = "" Set SessionObject = IANet_NetServiceClassDescription.Methods_.Item("Apply").InParameters.SpawnInstance_() Set SValueSet = CreateObject("WbemScripting.SWbemNamedValueSet") Set NetServiceSet = wbemServices.InstancesOf("IANet_NetService") For Each NetServiceObject In NetServiceSet strNetSerObjPath = NetServiceObject.Path_.Path Set Method = NetServiceObject.Methods_("GetPartitionsForPort") Set OutParams = NetServiceObject.ExecMethod_("GetPartitionsForPort", InParams) Partitions = OutParams.partitions For Each Partition In Partitions objFile.WriteLine"NPAR setting Name=Identifier" objFile.WriteLine"NPAR setting Current Value=" & Partition.Identifier objFile.WriteLine"NPAR setting Description=Identifier" objFile.WriteLine"NPAR setting Name=DeviceGuid" objFile.WriteLine"NPAR setting Current Value=" & Partition.DeviceGuid objFile.WriteLine"NPAR setting Description=DeviceGuid" objFile.WriteLine"NPAR setting Name=Name" objFile.WriteLine"NPAR setting Current Value=" & Partition.Name objFile.WriteLine"NPAR setting Description=Name" objFile.WriteLine"NPAR setting Name=PortNumber" objFile.WriteLine"NPAR setting Current Value=" & Partition.PortNumber objFile.WriteLine"NPAR setting Description=PortNumber" objFile.WriteLine"NPAR setting Name=PartitionNumber" objFile.WriteLine"NPAR setting Current Value=" & Partition.PartitionNumber objFile.WriteLine"NPAR setting Description=PartitionNumber" objFile.WriteLine"NPAR setting Name=MaxBWPercent" objFile.WriteLine"NPAR setting Current Value=" & Partition.MaxBWPercent objFile.WriteLine"NPAR setting Description=MaximumBandwidth" objFile.WriteLine"NPAR setting Name=MinBWPercent" objFile.WriteLine"NPAR setting Current Value=" & Partition.MinBWPercent objFile.WriteLine"NPAR setting Description=MinimumBandwidth" Next Next 'objFile.WriteLine"setting Name=MinBW" End Function '***************************************************************************** Private Function RestoreNPARSettings() Dim IANet_NetServiceClassDescription,cstring Dim Method Dim InParams,OutParams Dim PartitionsObj, PartitionObj Dim UpdatePartitions(16), PartId Set wbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") wbemServices.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True Set IANet_NetServiceClassDescription = wbemServices.Get("IANet_NetService") Set SValueSet = CreateObject("WbemScripting.SWbemNamedValueSet") Set NetServiceSet = wbemServices.InstancesOf("IANet_NetService") Set InParams = IANet_NetServiceClassDescription.Methods_.Item("GetPartitionsForPort").InParameters.SpawnInstance_() InParams.Properties_.Item("szDeviceID") = "" PartId = 0 For Each NetServiceObject In NetServiceSet strNetSerObjPath = NetServiceObject.Path_.Path Set Method = NetServiceObject.Methods_("GetPartitionsForPort") Set OutParams = NetServiceObject.ExecMethod_("GetPartitionsForPort", InParams) PartitionsObj = OutParams.partitions For Each PartitionObj In PartitionsObj For index = 0 to (partitionid - 1) If(PartitionObj.Identifier = partitions(index, 0)) Then 'WScript.Echo "NPAR Values: " & PartitionObj.PartitionNumber & ", " & PartitionObj.MaxBWPercent & ", " & PartitionObj.MinBWPercent If(StrComp(PartitionObj.PartitionNumber,partitions(index, 4)) = 0) Then 'WScript.Echo "===============================================================================================================" 'WScript.Echo "New Values: " & partitions(index, 4) & ", " & partitions(index, 5) & ", " & partitions(index, 6) If bBdfRestore = TRUE then PartitionObj.Name = "IGNORE" PartitionObj.DeviceGuid = "IGNORE" Else PartitionObj.Identifier = "IGNORE" PartitionObj.DeviceGuid = "IGNORE" End if PartitionObj.MaxBWPercent = partitions(index, 5) PartitionObj.MinBWPercent = partitions(index, 6) Set PartitionsObj(PartId) = PartitionObj End If 'WScript.Echo "==================================================================================================================" 'WScript.Echo "UPDATED NPAR Values: " & PartitionObj.PartitionNumber & ", " & PartitionObj.MaxBWPercent & ", " & PartitionObj.MinBWPercent 'WScript.Echo "===============================================================================================================" End If Next PartId = PartId + 1 Next Next UpdateNPARSettings(PartitionsObj) End Function '***************************************************************************** Private Function UpdateNPARSettings(UpdatePartitions) Dim IANet_NetServiceClassDescription Dim Method Dim InParams,OutParams Dim PartitionObj Set wbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") wbemServices.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True Set IANet_NetServiceClassDescription = wbemServices.Get("IANet_NetService") Set SValueSet = CreateObject("WbemScripting.SWbemNamedValueSet") Set NetServiceSet = wbemServices.InstancesOf("IANet_NetService") Set InParams = IANet_NetServiceClassDescription.Methods_.Item("ValidateAndSetBandwidthsForPort").InParameters.SpawnInstance_() For Each PartitionObj In UpdatePartitions WScript.Echo "UPDATED NPAR Values: " & PartitionObj.PartitionNumber & ", " & PartitionObj.MaxBWPercent & ", " & PartitionObj.MinBWPercent Next InParams.Properties_.Item("Partitions") = UpdatePartitions For Each NetServiceObject In NetServiceSet strNetSerObjPath = NetServiceObject.Path_.Path Set Method = NetServiceObject.Methods_("ValidateAndSetBandwidthsForPort") Set OutParams = NetServiceObject.ExecMethod_("ValidateAndSetBandwidthsForPort", InParams) WScript.Echo "UpdateNPARSettings " & OutParams.ReturnValue Next End Function '***************************************************************************** Private Function SaveTeamInfo(objFile,objNetDeviceLogObj,DeviceIndex,wbemServices) dim colTeamedAdapters,colTeamedMemberAdapter,colTeam dim TeamedAdapter,TeamedMemberAdapter,objTeam dim strQuery 'Access the same Team from IANet_TeamOfAdapters strQuery="ASSOCIATORS OF {" & objNetDeviceLogObj.Path_.Path & "} where ResultRole=SameElement" Set colTeam = wbemServices.ExecQuery(strQuery) For Each objTeam In colTeam 'only one team in this collection ' The team prefix to the name has now been localized so we can no longer assume the prefix is "TEAM : " ' Get the localized prefix from the MOF file to extract the user's name objFile.WriteLine "Team Name=" & ExtractTeamPrefixFromTeamName(objTeam.Caption) objFile.WriteLine "Description=" & objTeam.Description objFile.WriteLine "Team Settings Index=" & DeviceIndex 'Get Team Mode and Adapter count objFile.WriteLine "Team Type=" & objTeam.TeamingMode objFile.WriteLine "Adapter Count=" & objTeam.AdapterCount objFile.WriteLine "MFOEnabled=0" 'Access Members of this Team strQuery="ASSOCIATORS OF {" & objTeam.Path_.Path & "} where ResultRole=PartComponent" Set colTeamedAdapters = wbemServices.ExecQuery(strQuery) For Each TeamedAdapter In colTeamedAdapters ' 'objFile.WriteLine "Member Adapter="&TeamedAdapter.Caption objFile.WriteLine "Member Adapter="&TeamedAdapter.OriginalDisplayName If bIsUpgrade Then objFile.WriteLine "Member PCIDeviceID="&TeamedAdapter.PermanentAddress 'Save MAC address in config file for upgrade scenarios only. Else objFile.WriteLine "Member PCIDeviceID="&TeamedAdapter.PCIDeviceID End if objFile.WriteLine "Member BusDeviceFunction="&TeamedAdapter.SlotID 'Save Bus/device/function ID 'Get Priority settings for this member adapter strQuery="REFERENCES OF {" & TeamedAdapter.Path_.Path & "} where ResultClass=IANet_TeamedMemberAdapter" Set colTeamedMemberAdapter= wbemServices.ExecQuery(strQuery) For Each TeamedMemberAdapter In colTeamedMemberAdapter objFile.WriteLine "-Preferred Priority Setting="&TeamedMemberAdapter.AdapterFunction ' parse out just the device ID of the TEAM and ADAPTER 'objFile.WriteLine "-Group Comp Setting=" + Mid(TeamedMemberAdapter.GroupComponent,(instr(TeamedMemberAdapter.GroupComponent,"{")+1),36) objFile.WriteLine "-Part Comp Setting=" + Mid(TeamedMemberAdapter.PartComponent,(instr(TeamedMemberAdapter.PartComponent,"{")+1),36) Next Next Next End Function '/////////////////////////////////////////////////////////////////////////////// '// FUNCTION NAME : ExtractTeamPrefixFromTeamName '// '// DESCRIPTION : Call this function to determine what is the spelling '// : of the localized team prefix. Then extract this '// : portion from the string passed in. '// PARAMETERS : String - value returned from IANET_TeamOfAdapters.Caption '// RETURN : String - the caption without the team prefix '/////////////////////////////////////////////////////////////////////////////// Private Function ExtractTeamPrefixFromTeamName(szWholeTeamName) ' 'Wscript.echo "Entering - ExtractTeamPrefixFromTeamName - input ->" + szWholeTeamName + "<-" On Error Resume Next Err.Clear Const wbemFlagUseAmendedQualifiers = &h20000 Dim wbemServices Dim ObjClass Dim ColProperties Dim ObjProperties Dim ColQualifiers Dim ObjQualifiers Dim szTeamPrefix : szTeamPrefix = "" Set wbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") wbemServices.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True Set ObjClass = wbemServices.Get("IANet_TeamOfAdapters",wbemFlagUseAmendedQualifiers) Set ColProperties = ObjClass.Properties_ Set ObjProperties = ColProperties.Item("TeamPrefix") If Err Then 'Wscript.echo "TeamPrefix not found" If (InStr(szWholeTeamName,"TEAM : ")) Then szWholeTeamName = Mid(szWholeTeamName,(Len("TEAM : ") + 1)) End If 'Wscript.echo "Exiting - ExtractTeamPrefixFromTeamName - output ->" + szWholeTeamName + "<-" ExtractTeamPrefixFromTeamName = szWholeTeamName exit function End If Err.Clear Set ColQualifiers = ObjProperties.Qualifiers_ Set ObjQualifiers = ColQualifiers.Item("Values") If Err Then 'Wscript.echo "Values not found" If (InStr(szWholeTeamName,"TEAM : ")) Then szWholeTeamName = Mid(szWholeTeamName,(Len("TEAM : ") + 1)) End If 'Wscript.echo "Exiting - ExtractTeamPrefixFromTeamName - output ->" + szWholeTeamName + "<-" ExtractTeamPrefixFromTeamName = szWholeTeamName exit function End If If VarType(ObjQualifiers.Value) = (vbVariant + vbArray) Then szTeamPrefix = ObjQualifiers.Value(LBound(ObjQualifiers.Value)) Else szTeamPrefix = ObjQualifiers.Value End If If (Len(szTeamPrefix) < 1)Then szTeamPrefix = "TEAM : " End If 'Wscript.echo "Team prefix is ->" + szTeamPrefix + "<-" If (InStr(szWholeTeamName,szTeamPrefix)) Then szWholeTeamName = Mid(szWholeTeamName,(Len(szTeamPrefix) + 1)) ElseIf (InStr(szWholeTeamName,"TEAM : ")) Then szWholeTeamName = Mid(szWholeTeamName,(Len("TEAM : ") + 1)) End If 'Wscript.echo "Exiting - ExtractTeamPrefixFromTeamName - output ->" + szWholeTeamName + "<-" ExtractTeamPrefixFromTeamName = szWholeTeamName ' End Function '***************************************************************************** Private Function SaveTeamAdvancedSettings(objFile,objNetDevicelogObj,wbemServices) Dim IANet_config Dim IANet_Obj Set IANet_config = wbemServices.ExecQuery("ASSOCIATORS OF {" & objNetDeviceLogObj.Path_.Path & "} WHERE ResultClass = IANet_TeamSetting") For Each IANet_Obj In IANET_config If (Is_GVRP_GMRP_Setting(IANet_Obj.Caption) = FALSE) AND _ (Is_ConnMon_Setting(IANet_Obj.Caption) = FALSE) AND _ (Is_StaticIP_Setting(IANet_Obj.Caption) = FALSE) Then ' Don't save GVRP, GMRP or Static IP settings objFile.WriteLine "setting Name=" & IANet_Obj.Caption objFile.WriteLine "setting Current Value=" & IANet_Obj.CurrentValue objFile.WriteLine "setting Description=" & IANet_Obj.Description End If Next End Function '***************************************************************************** Private Function SaveVlanSettings(objFile,objAdapter,wbemServices) Dim strQuery Dim IANet_802dot1VLANService,IANet_VLANSet Dim IANet_802dot1VLANObj,IANet_VLANObj Dim UntaggedVLANObj Dim isUntaggedVLANPresent strQuery = "ASSOCIATORS OF {" & objAdapter.Path_.Path & "} WHERE ResultClass = IANet_802dot1QVLANService" Set IANet_802dot1VLANService = wbemServices.ExecQuery(strQuery) If IANet_802dot1VLANService.Count <> 0 Then For Each IANet_802dot1VLANObj In IANet_802dot1VLANService strQuery = "ASSOCIATORS OF {" & IANet_802dot1VLANObj.Path_.Path & "} WHERE ResultClass = IANet_VLAN" Set IANet_VLANSet = wbemServices.ExecQuery(strQuery) If IANet_VLANSet.Count > 0 Then isUntaggedVLANPresent = False For Each IANet_VLANObj In IANet_VLANSet If IANet_VLANObj.VLANNumber <> 0 Then objFile.WriteLine "VLAN Name=" & IANet_VLANObj.VLANName objFile.WriteLine "VLAN Id=" & IANet_VLANObj.VLANNumber SaveVLANAdvancedSettings objFile,IANet_VLANObj,wbemServices Else Set UntaggedVLANObj = IANet_VLANObj isUntaggedVLANPresent = True End If Next If isUntaggedVLANPresent = True Then objFile.WriteLine "VLAN Name=" & UntaggedVLANObj.VLANName objFile.WriteLine "VLAN Id=" & UntaggedVLANObj.VLANNumber SaveVLANAdvancedSettings objFile,UntaggedVLANObj,wbemServices End If End If Next End If End Function '***************************************************************************** Private Function SaveVLANAdvancedSettings(objFile,objNetDeviceLogObj,wbemServices) Dim IANet_config Dim IANet_Obj Set IANet_config = wbemServices.ExecQuery("ASSOCIATORS OF {" & objNetDeviceLogObj.Path_.Path & "} WHERE ResultClass = IANet_VLANSetting") For Each IANet_Obj In IANet_config If (Is_GVRP_GMRP_Setting(IANet_Obj.Caption) = FALSE) AND _ (Is_ConnMon_Setting(IANet_Obj.Caption) = FALSE) AND _ (Is_StaticIP_Setting(IANet_Obj.Caption) = FALSE) Then ' Don't save GVRP, GMRP or Static IP settings objFile.WriteLine "setting Name=" & IANet_Obj.Caption objFile.WriteLine "setting Current Value=" & IANet_Obj.CurrentValue objFile.WriteLine "setting Description=" & IANet_Obj.Description End If Next End Function '===================================================================================== ' ' Sub: RestoreSettings(ByVal strFname) ' Call subs to read file to get all the info. about adapter, Team and VLANs. ' If there are the same number of adapters as settings then ' it will apply the saved settings, as long as the adapters are the same type. ' If the adapter is a different type, compatibility ' is determined by local network speed. Then applicable settings are applied. ' If number of settings and adapters are mismatched, user is prompted for selection ' '===================================================================================== Sub RestoreSettings(ByVal strFname) Dim strTeamName Dim SplitID,SysAdapterID,FileAdapterID bError = FALSE isTimeOutValueModified = false GetOldTimeOutValue() 'Read File and assign found values to Teams() and Adapters() ReadFile(strFname) If bError = FALSE Then if StrComp(strOS, OSVersion, vbTextCompare) <> 0 then wscript.echo "Cannot restore the settings for Intel(R) Network Connections because," wscript.echo "the current version of Windows(R) doesn't match the version used to create the configuration file." wscript.echo "Current version of Windows: " & OSVersion wscript.echo "Config File Windows version: " & strOS exit sub end if 'Set the OemCustomizeable registry setting RestoreOemCustomizeableSetting(strOEMCustomizeableValue) 'Remove any existing Teams and VLANs. Remove() 'Create single session to make changes.. CreateSessions() ValidateAdapters() on error resume next Set test = wbemServices.Get("IANet_LogicalEthernetAdapter") if err < 0 then wscript.echo "Unable to enumerate Advanced Network Service information, ANS might not be present on system" wscript.echo "Teams and VLAN information contained in the configuration file will not attempt to be restored." bNoAns = true end if on error goto 0 dim bIsLADIntelDevice dim LastCapIndex dim bIsNPAREnabled bIsNPAREnabled = false IsNPAREnabled AdapterSets, bIsNPAREnabled If bIsNPAREnabled = TRUE Then If bBdfRestore = FALSE Then wscript.echo "A device configured for NIC Partitioning was detected. It is recommended to use the bdf option when restoring." End If End If 'Cycle as many times as adapter sets in file, check selection and compatibility, then apply For Each AdapterObj in AdapterSets bIsLADIntelDevice = false IsIntelDevice AdapterObj, bIsLADIntelDevice For index = 0 to (totalAdapters - 1) strAdapterName = Adapters(index, 1, 0) 'Adapter Name strAdapterPCIDeviceID = Adapters(index, 1, 1) 'Adapter PCIDeviceID or PermanentAddress strCapabilities = Adapters(index, 2, 0) 'Capabilities strOrgDispName = Adapters(index, 2, 1) 'Original Display Name strSettingsIndex = Adapters(index, 3, 0) 'Setting Index strAdapterBDF = Adapters(index, 4, 0) 'Bus/device/function If bMisMatch = TRUE Then CheckSelected strSettingsIndex If bUserInput = TRUE Then If bSelected = TRUE Then If strAdapterName = AdapterObj.Caption Then If ((Adapters(index, 0, 1) <> 1) AND bIsLADIntelDevice) Then ApplyAdapterSettings(strSettingsIndex) Exit For End If End If End If End If Else If bBdfRestore = TRUE then 'Compare only the first three parts of the deviceID (excludes the rev) 'Get all the parts in an array split by & SplitID = Split(AdapterObj.PCIDeviceID,"&") 'Re-initialize SplitID saving only the first three (saving array elements 0-2) ReDim Preserve SplitID(2) 'concatinate the three parts back together with & back in the middle SysAdapterID = Join(SplitID,"&") 'Do the same for the file device id SplitID = Split(strAdapterPCIDeviceID,"&") ReDim Preserve SplitID(2) FileAdapterID = Join(SplitID,"&") If ((StrComp(AdapterObj.SlotID, strAdapterBDF) = 0) AND (StrComp(SysAdapterID, FileAdapterID) = 0)) Then If ((Adapters(index, 0, 1) <> 1) AND bIsLADIntelDevice) Then ApplyAdapterSettings(strSettingsIndex) Exit For End If End If Else If strAdapterName = AdapterObj.Caption Then If ((Adapters(index, 0, 1) <> 1) AND bIsLADIntelDevice) Then ApplyAdapterSettings(strSettingsIndex) Exit For End If Elseif (bIsUpgrade = True) AND (strAdapterPCIDeviceID = AdapterObj.PermanentAddress) AND (AdapterObj.PermanentAddress <> "") Then If ((Adapters(index, 0, 1) <> 1) AND bIsLADIntelDevice) Then ApplyAdapterSettings(strSettingsIndex) Exit For End If Elseif (bIsUpgrade = False) AND (strAdapterPCIDeviceID = AdapterObj.PCIDeviceID) AND (AdapterObj.PCIDeviceID <> "") Then If ((Adapters(index, 0, 1) <> 1) AND bIsLADIntelDevice) Then ApplyAdapterSettings(strSettingsIndex) Exit For End If End If End If End If Next Next ExecApply wbemServices, strNetSerObjPath, SessionObject 'SCR 37163 if bNoAns<>true then For index = 0 to (totalTeams - 1) strSettingsIndex = Teams(index, 1, 2) strTeamName = Teams(index, 0, 0) If bMisMatch = TRUE Then 'Sets bSelected CheckSelected strSettingsIndex If bSelected = TRUE Then ApplyTeamSettings(strSettingsIndex) End If Else ApplyTeamSettings(strSettingsIndex) End If Next end if If bNewTeam = TRUE Then WScript.Echo "New team(s) were created based on config file" ElseIf bModified = TRUE Then WScript.Echo "New Settings were applied!" ElseIf bUserInput = TRUE Then WScript.Echo "No new settings were applied. Any existing teams were deleted." Else WScript.Echo "No new settings were applied. Any existing teams were deleted." End If ElseIf bError = TRUE Then Exit Sub End If 'ReleaseHandle wbemServices, strNetSerObjPath, SessionObject 'if bIsUpgrade then ' RestoreHyperVSettings HyperVFilePath 'end if If bIsNPAREnabled = TRUE Then RestoreNPARSettings() End If RestoreStaticIPSettings(IPFilePath) RestoreWINSSettings(WINSFilePath) ShowTimeOutValueRebootMessage() End Sub '===================================================================================== ' ' Sub: Sub ExecApply(ByVal wbemServices, ByVal strNetSerObjPath, ByVal SessionObject) ' '===================================================================================== Sub ExecApply(ByVal wbemServices, ByVal strNetSerObjPath, ByVal SessionObject) Dim StdOut,oReg,strComputer,strKeyPath,strValueName,strValue Set NetServiceObject = wbemServices.Get(strNetSerObjPath) Set FinalTargetobj = NetServiceObject.ExecMethod_("Apply", SessionObject) 'WScript.Echo "FinalTargetobj.FollowupAction" & FinalTargetobj.FollowupAction if FinalTargetobj.FollowupAction = 1 Then WScript.Echo "FinalTargetobj.FollowupAction" & FinalTargetobj.FollowupAction strComputer = "." Set StdOut = WScript.StdOut Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ strComputer & "\root\default:StdRegProv") strKeyPath ="SOFTWARE\INTEL\Network_Services\DMIX" strValueName = "RebootReq" strValue = "1" oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue End if End Sub '===================================================================================== ' ' Sub: Sub ReleaseHandle(ByVal wbemServices, ByVal strNetSerObjPath, ByVal SessionObject) ' '===================================================================================== Sub ReleaseHandle(ByVal wbemServices, ByVal strNetSerObjPath, ByVal SessionObject) WScript.Echo "Releasing Session Handle" Set NetServiceObject = wbemServices.Get(strNetSerObjPath) Set FinalTargetobj = NetServiceObject.ExecMethod_("Apply", SessionObject) End Sub '================================================================================================== ' ' CreateSessions() ' Create sessions to make settings changes ' '================================================================================================== Sub CreateSessions() Dim IANet_NetServiceClassDescription,cstring Dim Method Dim ServiceObject,TempObj Set wbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") ' SCR fix for 38688 and 39528 wbemServices.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True Set IANet_NetServiceClassDescription = wbemServices.Get("IANet_NetService") Set SessionObject = IANet_NetServiceClassDescription.Methods_.Item("Apply").InParameters.SpawnInstance_() Set SValueSet = CreateObject("WbemScripting.SWbemNamedValueSet") Set NetServiceSet = wbemServices.InstancesOf("IANet_NetService") For Each NetServiceObject In NetServiceSet strNetSerObjPath = NetServiceObject.Path_.Path Set Method = NetServiceObject.Methods_("BeginApply") ' Save the path for later use Set ServiceObject = NetServiceObject.ExecMethod_("BeginApply") If ServiceObject.returnValue = 0 Then cstring = ServiceObject.ClientSetHandle End If Next SValueSet.Add "ClientSetId", cstring SessionObject.ClientSetHandle = cstring Set AdapterSets = wbemServices.InstancesOf("IANet_PhysicalEthernetAdapter",,SValueSet) End Sub '====================================================================================== ' ' Sub ValidateInput(ByVal strInput) 'Validate input by removing any spaces or periods in strInput, returns strChoices '======================================================================================== Sub ValidateInput(ByVal strInput) Dim i, ii, arrChoices arrChoices = Split(strInput, ",") For i = 0 to Ubound(arrChoices) arrChoices(i) = Trim(arrChoices(i)) If Right(arrChoices(i), 1) = "." Then arrChoices(i) = Replace(arrChoices(i), ".", "") End If Next strChoices = Join(arrChoices, ",") End Sub '================================================================================================= ' ' Sub ReadFile(ByVal strFname) ' Read File and assign found values to Adapters() and Teams() arrays ' '================================================================================================= Sub ReadFile(ByVal strFname) Dim v, i, ii, x, fso, strAdapterName ,w Dim strAdapterCaps, strNewAdapterName, strPCIDeviceID, strAdapterIndex, strBusDeviceFunction, strNparSettingName Dim strCapabilities, strSettingsSet, arrSettingsSets Dim strIsDefault, ts, strLine, z, numVLANS, numTVLANS dim firstVlanIndex : firstVlanIndex = -1 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists (strFname) <> True Then Wscript.Echo "The configuration file can not be found or is" Wscript.Echo "not in the same directory as SavResDX.vbs." WScript.Echo "Try using full pathname to the configuration file." bError = TRUE Exit Sub Else ' Array Adapters holds all the info. about the adapter's and related VLANs info. ' Adapters( , 0, 0) is a flag of Adapter's existence ' Adapters( , 0, 1) is a flag for setting having been applied ' Adapters( , 0, 2) is Number of VLANS on Adapter ' Adapters( , 1, 0) is Adapter's Name ' Adapters( , 1, 1) is Adapter's PCIDeviceID or PermanentAddress ' Adapters( , 2, 0) is Adapter's Capabilities ' Adapters( , 2, 1) is Adapter's Original Display Name (for Express Teaming) ' Adapters( , 3, 0) is Settings Index, for selecting settings sets ' Adapters( , 3, 1) is Settings Default, "TRUE" or "FALSE" for selecting settings sets ' Adapters( , 4, 0) is Bus/device/function for upgrades ' Adapters( , 5, 0) is Adapter's Setting Name ' Adapters( , 5, 1) is Adapter's Setting value ' ' Adapters( , x, 0) is Keyword "VLAN", any elements after this keyword are VLAN's setting name and value Redim Adapters(maxAdapterTeam, maxSettings, 5) ' Array Teams holds all the info. about the Team's and related VLANs info. ' Teams( , 0, 0) is Team's Name ' Teams( , 0, 1) is a flag for setting having been applied ' Teams( , 0, 2) is number of VLANS on Team ' Teams( , 1, 0) is Team's Type ' Teams( , 1, 1) is Team's Adapter Count ' Teams( , 1, 2) is Teams Settings Index for user selection ' Teams( , 2, 0) is keyword "MemberAdapter", ' Teams( , 2, 1) is Member adapter's caption ' Teams( , 2, 2) is Member adapter's flag for client(0) or server(1) property ' Teams( , 2, 3) is Member adapter's Preferred Priority Setting ' Teams( , 2, 4) is Member adapter's flag for "Already Added to Team" (1 or 0) ' Teams( , 2, 5) is Member adapter's PCIDeviceID or PermanentAddress ' Teams( , 2, 6) is Member adapter's Bus/Device/Function ID ' ' Teams( , x, 0) is keyword "MemberAdapter", ' Teams( , x, 1) is related adapter's caption ' Teams( , x+1, 0) is Teams's Setting Name; Teams( , x+1, 1) is team's Setting value ' Teams( , y, 0) is Keyword "VLAN", any elements after this keyword are VLAN's setting name and value Redim Teams(maxAdapterTeam, maxSettings, 10) totalAdapters = 0 totalTeams = 0 ' Read the text file and save all the info. to two arrays - Adapters() & Teams() Set ts = fso.OpenTextFile(strFname, 1) ii = 0 v = 0 x = 0 w=0 partitionId = 0 Do Until ts.AtEndOfStream ReDim Preserve arrPrivDesc(v + 1) ReDim Preserve arrTeamPrivDesc(x + 1) strLine = ts.ReadLine() If StrComp(Mid(strLine, 1, 13), "Adapter Name=", vbTextCompare) = 0 Then numVLANS = 0 strNewAdapterName = Mid(strLine, 14) strLine = ts.ReadLine() If StrComp(Mid(strLine, 1, 20), "Adapter PCIDeviceID=", vbTextCompare) = 0 Then strPCIDeviceID = Mid(strLine, 21) strLine = ts.ReadLine() End If If StrComp(Mid(strLine, 1, 26), "Adapter BusDeviceFunction=", vbTextCompare) = 0 Then strBusDeviceFunction = Mid(strLine, 27) strLine = ts.ReadLine() End If If StrComp(Mid(strLine, 1, 14), "Adapter Index=", vbTextCompare) = 0 Then strAdapterIndex = Mid(strLine, 15) strLine = ts.ReadLine() End If If StrComp(Mid(strLine, 1, 20), "Private Description=", vbTextCompare) = 0 Then arrPrivDesc(v) = Mid(strLine, 21) strLine = ts.ReadLine() v = v + 1 End If If StrComp(Mid(strLine, 1, 21), "Adapter Capabilities=", vbTextCompare) = 0 Then strCapabilities =Mid(strLine, 22) strLine = ts.ReadLine() End If strLine = ts.ReadLine() 'Skip Description line. If StrComp(Mid(strLine, 1, 22), "Original Display Name=", vbTextCompare) = 0 Then strOrgDispName = Mid(strLine, 23) 'For Express Teaming strLine = ts.ReadLine() End If 'Assign found values to array" Adapters(totalAdapters, 1, 0) = strNewAdapterName Adapters(totalAdapters, 1, 1) = strPCIDeviceID Adapters(totalAdapters, 2, 0) = strCapabilities Adapters(totalAdapters, 2, 1) = strOrgDispName 'For Express Teaming Adapters(totalAdapters, 3, 0) = strAdapterIndex Adapters(totalAdapters, 3, 1) = strIsDefault Adapters(totalAdapters, 4, 0) = strBusDeviceFunction 'assigning settings values" i = SETTINGS_INDEX 'SCR 40856 'strLine = ts.ReadLine() Do while StrComp(strLine, "", vbTextCompare) <> 0 If StrComp(Mid(strLine, 1, 13), "Setting Name=", vbTextCompare) = 0 Then If ( Is_GVRP_GMRP_Setting(strLine) = FALSE ) Then If StrComp(Mid(strLine, 14), "TimeOutValue", vbTextCompare) = 0 Then isTimeOutValueModified = true End If Adapters(totalAdapters, i, 0) = Mid(strLine, 14) 'Setting Name strLine = ts.ReadLine() Adapters(totalAdapters, i, 1) = Mid(strLine, 23) 'Setting Value i = i + 1 Else strLine = ts.ReadLine() 'skip the next line if GVRP or GMRP End If strLine = ts.ReadLine() ' Skip the description ElseIf StrComp(Mid(strLine, 1, 10), "VLAN Name=", vbTextCompare) = 0 Then Do while StrComp(strLine, "", vbTextCompare) <> 0 Adapters(totalAdapters, i, 0) = "VLAN" 'Set up keyword for searching VLAN later numVLANS = numVLANS + 1 Adapters(totalAdapters, 0, 2) = numVLANS Adapters(totalAdapters, i+1, 0) = Mid(strLine, 11) 'VLAN Name strLine = ts.ReadLine() Adapters(totalAdapters, i+2, 0) = Mid(strLine, 9) 'VLAN ID i = i + 3 strLine = ts.ReadLine() Do While StrComp(Mid(strLine, 1, 10), "VLAN Name=", vbTextCompare) <> 0 If StrComp(Mid(strLine, 1, 13), "Setting Name=", vbTextCompare) = 0 Then If ( Is_GVRP_GMRP_Setting(strLine) = FALSE ) Then Adapters(totalAdapters, i, 0) = Mid(strLine, 14) 'Setting Name strLine = ts.ReadLine() Adapters(totalAdapters, i, 1) = Mid(strLine, 23) 'Setting Value Else strLine = ts.ReadLine() 'skip the next line if GVRP or GMRP End If strLine = ts.ReadLine() End If If strLine <> "" Then strLine = ts.ReadLine() i = i + 1 Else Exit Do End If Loop Loop End If If StrComp(strLine, "", vbTextCompare) <> 0 Then strLine = ts.ReadLine() End If Loop totalAdapters = totalAdapters + 1 ElseIf StrComp(Mid(strLine, 1, 10), "Team Name=", vbTextCompare) = 0 Then Teams(totalTeams, 0, 0) = Mid(strLine, 11) strLine = ts.ReadLine() strLine = ts.ReadLine() 'Skip Description line If StrComp(Mid(strLine, 1, 20), "Team Settings Index=", vbTextCompare) = 0 Then Teams(totalTeams, 1, 2) = Mid(strLine, 21) strLine = ts.ReadLine() End If If StrComp(Mid(strLine, 1, 10), "Team Type=", vbTextCompare) = 0 Then Teams(totalTeams, 1, 0) = Mid(strLine, 11) strLine = ts.ReadLine() End If If StrComp(Mid(strLine, 1, 14), "Adapter Count=", vbTextCompare) = 0 Then Teams(totalTeams, 1, 1) = Mid(strLine, 15) strLine = ts.ReadLine() End If 'Added for MFO on 17th Feb If StrComp(Mid(strLine, 1, 11), "MFOEnabled=", vbTextCompare) = 0 Then 'bMFOEnabled =Mid(strLine, 12) Teams(totalTeams, 1, 3)=Mid(strLine, 12) strLine = ts.ReadLine() Else Teams(totalTeams, 1, 3)=0 End If If StrComp(Mid(strLine, 1, 20), "Private Description=", vbTextCompare) = 0 Then arrTeamPrivDesc(x) = Mid(strLine, 21) x = x + 1 strLine = ts.ReadLine() End If i = 2 Dim AdapterInTeamOffset: AdapterInTeamOffset = 0 Do While StrComp(Mid(strLine, 1, Len("Member Adapter=")), "Member Adapter=", vbTextCompare) = 0 TeamedMemberAdapterName(totalTeams, AdapterInTeamOffset) = Mid(strLine,(instr(strLine,"=") + 1)) Dim vi Teams(totalTeams, i, 0) = "MemberAdapter" Teams(totalTeams, i, 1) = Mid(strLine, 16) strLine = ts.Readline() If StrComp(Mid(strLine, 1, Len("Member PCIDeviceID=")), "Member PCIDeviceID=", vbTextCompare) = 0 Then TeamedMemberAdapterPCIDeviceID(totalTeams, AdapterInTeamOffset) = Mid(strLine,(instr(strLine,"=") + 1)) Teams(totalTeams, i, 5) = Mid(strLine, 20) strLine = ts.Readline() End If If StrComp(Mid(strLine, 1, Len("Member BusDeviceFunction=")), "Member BusDeviceFunction=", vbTextCompare) = 0 Then TeamedMemberAdapterBDF(totalTeams, AdapterInTeamOffset) = Mid(strLine,(instr(strLine,"=") + 1)) Teams(totalTeams, i, 6) = Mid(strLine, 26) strLine = ts.Readline() End If If StrComp(Mid(strLine, 1, Len("-Preferred Priority Setting=")), "-Preferred Priority Setting=", vbTextCompare) = 0 Then TeamedMemberAdapterPreferredPrimarySetting(totalTeams, AdapterInTeamOffset) = Mid(strLine,(instr(strLine,"=") + 1)) strLine = ts.ReadLine() Teams(totalTeams, i, 3) = Mid(strLine, 29) End If 'If StrComp(Mid(strLine,1,Len("-Group Comp Setting=")),"-Group Comp Setting=",vbTextCompare) = 0 Then ' TeamedMemberAdapterGroupComponentSetting(totalTeams, AdapterInTeamOffset) = Mid(strLine,(instr(strLine,"=") + 1)) ' strLine = ts.ReadLine() 'End If If StrComp(Mid(strLine,1,Len("-Part Comp Setting=")),"-Part Comp Setting=",vbTextCompare) = 0 Then TeamedMemberAdapterPartComponentSetting(totalTeams, AdapterInTeamOffset) = Mid(strLine,(instr(strLine,"=") + 1)) strLine = ts.ReadLine() End If AdapterInTeamOffset = AdapterInTeamOffset + 1 i = i + 1 Loop Do while StrComp(strLine, "", vbTextCompare) <> 0 If StrComp(Mid(strLine, 1, 13), "Setting Name=", vbTextCompare) = 0 Then If ( Is_GVRP_GMRP_Setting(strLine) = FALSE ) Then Teams(totalTeams, i, 0) = Mid(strLine, 14) 'Setting Name strLine = ts.ReadLine() Teams(totalTeams, i, 1) = Mid(strLine, 23) 'Setting Value i = i + 1 Else strLine = ts.ReadLine() 'skip the next line if GVRP or GMRP End If strLine = ts.ReadLine() ' Skip the description strLine = ts.ReadLine() ElseIf StrComp(Mid(strLine, 1, 10), "VLAN Name=", vbTextCompare) = 0 Then Teams(totalTeams, i, 0) = "VLAN" 'Set up keyword for searching VLAN later numTVLANS = numTVLANS + 1 Teams(totalTeams, 0, 2) = numTVLANS Teams(totalTeams, i+1, 0) = Mid(strLine, 11) 'VLAN Name strLine = ts.ReadLine() Teams(totalTeams, i+2, 0) = Mid(strLine, 9) 'VLAN ID i = i + 3 strLine = ts.ReadLine() End If Loop totalTeams = totalTeams + 1 ElseIf (StrComp(Mid(strLine, 1,17), "OEMCustomizeable=", vbTextCompare) = 0) Then strOEMCustomizeableValue = Mid(strLine, 18) ElseIf (StrComp(Mid(strLine, 1,3), "OS=", vbTextCompare) = 0) Then strOS = Mid(strLine, 4) ElseIf (StrComp(Mid(strLine, 1,18), "NPAR setting Name=", vbTextCompare) = 0) Then strNparSettingName = Mid(strLine, 19) strLine = ts.ReadLine() If StrComp(strNparSettingName, "Identifier", vbTextCompare) = 0 Then If(StrComp(Mid(strLine, 1,27), "NPAR setting Current Value=", vbTextCompare) = 0) Then partitions(partitionid, 0) = Mid(strLine, 28) 'WScript.Echo "Identifier " & partitions(partitionid, 0) End If ElseIf StrComp(strNparSettingName, "DeviceGuid", vbTextCompare) = 0 Then If(StrComp(Mid(strLine, 1,27), "NPAR setting Current Value=", vbTextCompare) = 0) Then partitions(partitionid, 1) = Mid(strLine, 28) 'WScript.Echo "DeviceGuid " & partitions(partitionid, 1) End If ElseIf StrComp(strNparSettingName, "Name", vbTextCompare) = 0 Then If(StrComp(Mid(strLine, 1,27), "NPAR setting Current Value=", vbTextCompare) = 0) Then partitions(partitionid, 2) = Mid(strLine, 28) 'WScript.Echo "Name " & partitions(partitionid, 2) End If ElseIf StrComp(strNparSettingName, "PortNumber", vbTextCompare) = 0 Then If(StrComp(Mid(strLine, 1,27), "NPAR setting Current Value=", vbTextCompare) = 0) Then partitions(partitionid, 3) = Mid(strLine, 28) 'WScript.Echo "PortNumber " & partitions(partitionid, 3) End If ElseIf StrComp(strNparSettingName, "PartitionNumber", vbTextCompare) = 0 Then If(StrComp(Mid(strLine, 1,27), "NPAR setting Current Value=", vbTextCompare) = 0) Then partitions(partitionid, 4) = Mid(strLine, 28) 'WScript.Echo "PartitionNumber " & partitions(partitionid, 4) End If ElseIf StrComp(strNparSettingName, "MaxBWPercent", vbTextCompare) = 0 Then If(StrComp(Mid(strLine, 1,27), "NPAR setting Current Value=", vbTextCompare) = 0) Then partitions(partitionid, 5) = Mid(strLine, 28) 'WScript.Echo "MaxBWPercent " & partitions(partitionid, 5) End If ElseIf StrComp(strNparSettingName, "MinBWPercent", vbTextCompare) = 0 Then If(StrComp(Mid(strLine, 1,27), "NPAR setting Current Value=", vbTextCompare) = 0) Then partitions(partitionid, 6) = Mid(strLine, 28) 'WScript.Echo "MinBWPercent " & partitions(partitionid, 6) End If partitionid = partitionid + 1 End If End If Loop 'Until ts.AtEndOfStream Wscript.Echo "partitionid" & partitionid ts.Close End If dim teamCount, vlanIndex, vlanCount dim teamVlanCount : teamVlanCount = 0 if numTVLANS > 1 then for teamCount = 0 to totalTeams - 1 teamVlanCount = 0 for vlanIndex = 0 to 999 if Teams(teamCount, vlanIndex, 0) = "VLAN" then teamVlanCount = teamVlanCount + 1 vlanCount = vlanIndex if Teams(teamCount, vlanCount+2,0) = 0 AND teamVlanCount = 1 then dim swapName, swapId swapName = Teams(teamCount, vlanCount+1,0) swapId = Teams(teamCount, vlanCount+2,0) Teams(teamCount, vlanCount+1,0) = Teams(teamCount, vlanCount+3+1,0) Teams(teamCount, vlanCount+2,0) = Teams(teamCount, vlanCount+3+2,0) Teams(teamCount, vlanCount+3+1,0) = swapName Teams(teamCount, vlanCount+3+2,0) = swapId bNewTeam = 0 exit for end if end if next next end if End Sub '================================================================================================= ' ' Sub ValidateAdapters() ' Check for installed adapter count, check against settings sets and get user input for mismatches. ' Sets strInput and strChoices ' '================================================================================================= Sub ValidateAdapters() Dim ii, iii, counter Dim strTemp, strTeamTemp, strCaptions, bFound Dim Capability Dim SplitID,SysAdapterID,FileAdapterID Dim bIsLADIntelDevice bUserInput = FALSE existTotalAdapters = 0 iii = 0 'Count existing adapters and assign captions to array for user selection For Each AdapterObj In AdapterSets bIsLADIntelDevice = false IsIntelDevice AdapterObj, bIsLADIntelDevice 'Knock out Non-Intel and disabled adapters if(bIsLADIntelDevice and AdapterObj.StatusInfo = 3) then ReDim Preserve Captions(iii + 1) existTotalAdapters = existTotalAdapters + 1 Captions(iii) = AdapterObj.Caption iii = iii + 1 End if Next 'For BusDeviceFunction restores check that there are matches If bBdfRestore = TRUE then For index = 0 to existTotalAdapters - 1 bFound = FALSE For Each AdapterObj In AdapterSets 'Compare only the first three parts of the deviceID (excludes the rev) 'Get all the parts in an array split by & SplitID = Split(AdapterObj.PCIDeviceID,"&") 'Re-initialize SplitID saving only the first three (saving array elements 0-2) ReDim Preserve SplitID(2) 'concatinate the three parts back together with & back in the middle SysAdapterID = Join(SplitID,"&") 'Do the same for the file device ID SplitID = Split(Adapters(index, 1, 1),"&") ReDim Preserve SplitID(2) FileAdapterID = Join(SplitID,"&") If ((StrComp(AdapterObj.SlotID, Adapters(index, 4, 0)) = 0) AND (StrComp(SysAdapterID, FileAdapterID) = 0)) Then 'Adapter BusFunctionID bFound = TRUE End If Next If bFound = TRUE Then Adapters(index, 0, 0) = TRUE 'Adapter existence flag Else WScript.Echo "Invalid device found. Please verify configuration file matches your system configuration." Adapters(index, 0, 0) = FALSE End If Next Else 'Check existing adapters against settings sets and set bFound value accordingly For index = 0 to existTotalAdapters - 1 bFound = FALSE For Each AdapterObj In AdapterSets If StrComp(AdapterObj.Caption, Adapters(index, 1, 0)) = 0 Then 'Adapter's Name bFound = True Elseif (bIsUpgrade = True) AND (StrComp(AdapterObj.PermanentAddress, Adapters(index, 1, 1)) = 0) AND (AdapterObj.PermanentAddress <> "") Then 'Adapter's PermanentAddress bFound = True Elseif (bIsUpgrade = False) AND (StrComp(AdapterObj.PCIDeviceID, Adapters(index, 1, 1)) = 0) AND (AdapterObj.PCIDeviceID <> "") Then 'Adapter's PCIDeviceID bFound = True End If Next If bFound = TRUE Then Adapters(index, 0, 0) = TRUE 'Adapter existence flag Else Adapters(index, 0, 0) = FALSE End If Next End If 'Set string of adapter settings captions for user selection For ii = 0 to (totalAdapters - 1) If Adapters(ii, 1, 0) <> "" Then strTemp = strTemp & Adapters(ii, 3, 0) & ". " & Adapters(ii, 1, 0) & (Chr(10) & Chr(13)) & " Priv Desc: " & arrPrivDesc(ii) & (Chr(10) & Chr(13)) ' + ". " + + 'Newline + 'Return + "Priv Desc: " + + 'Newline + 'Return End If Next 'Set string of team descriptions for user selection For ii = 0 to (totalTeams - 1) If Teams(ii, 0, 0) <> "" Then strTeamTemp = strTeamTemp & Teams(ii, 1, 2) & "." & Teams(ii, 0, 0) & (Chr(10) & Chr(13)) counter = counter + 1 End If Next 'Set string of installed adapter captions for user selection For ii = 0 to Ubound(Captions) If Captions(ii) <> "" Then strCaptions = strCaptions & Captions(ii) & (Chr(10) & Chr(13)) End If Next 'Checking number of installed adapters vs. settings list, prompt user if the numbers don't match" bMisMatch = FALSE ' If existTotalAdapters < (totalAdapters) Then ' bMisMatch = TRUE ' strInput = InputBox("There are " & existTotalAdapters & " installed adapters and " & totalAdapters & " adapter configuration sets contained in " & strFname & "." & (Chr(10) & Chr(13)) & (Chr(10) & Chr(13)) & "Installed Adapters: " & (Chr(10) & Chr(13)) & strCaptions & (Chr(10) & Chr(13)) & "Enter selections separated by commas, no spaces or periods." & (Chr(10) & Chr(13)) & "Adapter Sets-" & (Chr(10) & Chr(13)) & strTemp & (Chr(10) & Chr(13)) & "Team Sets- " & (Chr(10) & Chr(13)) & strTeamTemp, "Mismatched Settings Sets") ' If strInput <> "" Then ' bUserInput = TRUE ' ValidateInput strInput ' ' Else ' strInput = InputBox("ERROR: No Selection Entered!" & (Chr(10) & Chr(13)) & "User-defined descriptions are listed below. Enter selections to apply, enter numbers separated by commas, no spaces or periods." & (Chr(10) & Chr(13)) & (Chr(10) & Chr(13)) & strTemp & (Chr(10) & Chr(13)) & strTeamTemp, "Enter Selection") ' If strInput = "" Then ' WScript.Echo "Script cannot continue without user selection." ' bUserInput = FALSE ' Exit Sub ' Else ' bUserInput = TRUE ' ValidateInput strInput ' End If ' End If ' ElseIf existTotalAdapters > totalAdapters Then ' bMisMatch = TRUE ' WScript.Echo "There are not enough settings sets to apply to installed adapters. Resave or check settings file." ' bUserInput=FALSE ' Exit Sub ' End If End Sub '================================================================================================= ' ' Sub CheckSelected(ByVal strSettingsIndex) ' Check whether current settings set was selected by any user input, defaults to true if no mismatch ' Sets bSelected to True or False ' '================================================================================================= Sub CheckSelected(ByVal strSettingsIndex) bSelected = FALSE Dim iv, v, b If strChoices <> "" Then v = InStr(1, strChoices, ",", vbTextCompare) If v > 0 Then iv = InStr(1, strChoices, strSettingsIndex, vbTextCompare) If iv > 0 Then bSelected = TRUE End If ElseIf (strChoices = strSettingsIndex) Then bSelected = TRUE End If ElseIf bMisMatch = FALSE Then bSelected = TRUE End If End Sub '================================================================================================== ' ' ApplyAdapterSettings(strSettingsIndex) ' Apply selected or all adapter settings and return status message to user ' '================================================================================================== Sub ApplyAdapterSettings(ByVal strSettingsIndex) Dim IANet_configur, IANet_Obj, IANetSettingObj Dim IANet_802dot1VLANService, IANet_802dot1VLANObj Dim IANet_VLANconfigur, IANet_VLANObj, InParameterObj, OutParameterObj Dim TempVlanObject, VlanObjectSet,VlanObject, IANet_VLANConfObj,IANet_VLANSet Dim strSettingValue,bFoundPossibleValue,bVLAN Dim strVLANName, strVLANID, FinalVlanObject Dim strQuery, strExistAdapterName, strExist Dim Dumbpath, i, ii, iii, iv, z, b, k, x, cstrPath, pos, intCurCount Dim TargetObjInstance, TargetObj, numVLANS,InParameter Const wbemFlagUseAmendedQualifiers = &h20000 Const Temp = TRUE dim bAlreadyWarned' Used to tell the user that ANS might not be installed dim savedJValue : savedJValue = -1 dim alreadyRestored bAlreadyWarned = false Set Dumbpath = CreateObject("WbemScripting.SWbemObjectPath") 'Setting applied flag to 0 Adapters(index, 0, 1) = 0 On Error Resume Next 'Updating Adapter's settings by checking if selected and if not already applied strExistAdapterName = AdapterObj.Caption If (Adapters(index, 3, 0) = strSettingsIndex) Then WScript.Echo "Applying setting set " & strSettingsIndex & " to " & AdapterObj.Caption If Adapters(index, 0, 0) Then ' Check if this adapter exists from previous validation sequence (Adapter Existence flag) strAdapterName = Adapters(index, 1, 0) ' Get Adapter's Name from this settings set strSettingsIndex = Trim(strSettingsIndex) Adapters(index, 0, 1) = 1 ' Flag for setting being applied SValueSet.Add "GET_EXTENSIONS", true SValueSet.Add "GET_EXT_KEYS_ONLY", false SValueSet.Add "IANet_PartialData", 512 SValueSet.Add "SaveRestoreApply", true strQuery = "ASSOCIATORS OF {" & AdapterObj.Path_.Path & "} WHERE ResultClass = IANet_AdapterSetting" Set IANet_configur = wbemServices.ExecQuery(strQuery,,,SValueSet) Dim j For j = SETTINGS_INDEX to maxSettings-1 If StrComp(Adapters(index, j, 0), "", vbTextCompare) = 0 then 'Adapter setting Name Exit For ElseIf bVLAN AND bNoAns <> true Then For x = 0 to numVLANS - 1 if numVlans = 1 AND Adapters(index, j+1, 0) = 0 then wscript.echo "Unable to create an Untagged VLAN without a Tagged VLAN" exit for end if if x = 0 AND Adapters(index, j+1, 0) = 0 then savedJValue = j wscript.echo "Untagged VLAN is first VLAN in the list, saving the index. This VLAN will be restored last." end if Set TempVlanObject = wbemServices.Get("IANet_802dot1QVLANService", ,SValueSet) Set InParameterObj = TempVlanObject.Methods_.Item("CreateVLAN").InParameters.SpawnInstance_() InParameterObj.Name = Adapters(index, j, 0) InParameterObj.VLANNumber = Adapters(index, j+1, 0) strQuery = "ASSOCIATORS OF {" & AdapterObj.Path_.Path & "} WHERE ResultClass = IANet_802dot1QVLANService" Set VlanObjectSet = wbemServices.ExecQuery(strQuery,,,SValueSet) For Each VlanObject In VlanObjectSet Set FinalVlanObject = wbemServices.Get(VlanObject.Path_.Path, ,SValueSet) Set OutParameterObj = FinalVlanObject.ExecMethod_("CreateVLAN", InParameterObj, 0, SValueSet) bModified = TRUE Exit For Next ExecApply wbemServices, strNetSerObjPath, SessionObject CreateSessions() if NOT (x = 0 AND Adapters(index, j+1, 0) = 0) then WSCript.Echo "updating VLAN:" & Adapters(index, j, 0) & " settings..." end if For k = j+2 to maxSettings-1 If StrComp(Adapters(index, k, 0), "", vbTextCompare) = 0 then Exit For ElseIf Adapters(index, k, 0) = "VLAN" Then Exit For Else strQuery = "ASSOCIATORS OF {" & AdapterObj.Path_.Path & "}WHERE ResultClass = IANet_802dot1QVLANService" Set IANet_802dot1VLANService = wbemServices.ExecQuery(strQuery,,,SValueSet) If IANet_802dot1VLANService.Count <> 0 Then For Each IANet_802dot1VLANObj In IANet_802dot1VLANService strQuery = "ASSOCIATORS OF {" & IANet_802dot1VLANObj.Path_.Path & "}WHERE ResultClass = IANet_VLAN" Set IANet_VLANSet = wbemServices.ExecQuery(strQuery,,,SValueSet) For Each IANet_VLANObj In IANet_VLANSet If StrComp(IANet_VLANObj.VLANName, Adapters(index, j, 0), vbTextCompare) = 0 Then strQuery = "ASSOCIATORS OF {" & IANet_VLANObj.Path_.Path & "} WHERE ResultClass = IANet_VLANSetting" Set IANet_VLANconfigur = wbemServices.ExecQuery(strQuery,,,SValueSet) For Each IANet_VLANConfObj In IANet_VLANconfigur If StrComp(IANet_VLANConfObj.Caption, Adapters(index, k, 0), vbTextCompare) = 0 Then If StrComp(IANet_VLANConfObj.CurrentValue, Adapters(index, k, 1), vbTextCompare) <> 0 Then IANet_VLANConfObj.CurrentValue = Adapters(index, k, 1) Set Dumbpath = IANet_VLANConfObj.Put_ (wbemFlagUseAmendedQualifiers, SValueSet) bModified = True Exit For End If End If Next End If Next Next End If End If Next if savedJValue >= 0 AND x = numVLANS - 1 AND alreadyRestored <> true then j = savedJValue x = x - 1 alreadyRestored = true else j = k + 1 end if Next bVLAN = False ElseIf StrComp(Adapters(index, j, 0), "VLAN", vbTextCompare) = 0 Then bVLAN = True numVLANS = Adapters(index, 0, 2) ElseIf StrComp(Adapters(index, j, 0), "", vbTextCompare) <> 0 Then For Each IANet_Obj In IANet_configur If StrComp(Adapters(index, j, 0), IANet_Obj.Caption, vbTextCompare) = 0 Then If (StrComp(Adapters(index, j, 1), IANet_Obj.CurrentValue, vbTextCompare) <> 0) OR (StrComp(IANet_Obj.Caption, "PerformanceProfile", vbTextCompare) = 0) Then 'Set IANetSettingObj = wbemServices.Get(IANet_Obj.Path_.Path, ,SValueSet) If StrComp(IANet_Obj.Path_.Class, "IANet_AdapterSettingEnum", vbTextCompare) = 0 Then 'Get the most current PerformanceProfile to avoid passing down different display value and current values. HSD 5107226 if (StrComp(IANet_Obj.Caption, "PerformanceProfile", vbTextCompare) = 0) Then Set IANet_Obj = wbemServices.Get(IANet_Obj.Path_.Path, ,SValueSet) end if IANet_Obj.CurrentValue = Adapters(index, j, 1) Set Dumbpath = IANet_Obj.Put_(wbemFlagUseAmendedQualifiers, SValueSet) bModified = True Else if StrComp(Adapters(index,j,0), "LLIPORTS", vbTextCompare) = 0 then dim LLIPortsArray LLIPortsArray = ConvertStringToStringArray(Adapters(index,j,1), ",") IANet_Obj.CurrentValues = LLIPortsArray else IANet_Obj.CurrentValue = Adapters(index, j, 1) end if Set Dumbpath = IANet_Obj.Put_(wbemFlagUseAmendedQualifiers,SValueSet)'(wbemChangeFlagUpdateOnly, SValueSet) bModified = True Exit For End If End If End If Next End If Next End If End If End Sub '================================================================================================= ' ' ApplyTeamSettings(ByVal strSettingsIndex) ' Apply selected settings and return status to user ' '================================================================================================= Sub ApplyTeamSettings(ByVal strSettingsIndex) Dim TargetObjInstance Dim bTeam, i, j, k, x, intCurCount, TeamAdapObj, TeamAdapObjSet, FinalVlanObject Dim IANet_configur, IANet_Obj, IANetSettingObj, TeamsObjSet, cstrPath,temObj Dim IANet_802dot1VLANService, IANet_802dot1VLANObj, TeamObjSet1, pos Dim IANet_VLANconfigur, IANet_VLANObj, Dumbpath, bTest, VLANObjectSet Dim VLANObjSet, VLANObj, b, a, TempVlanObject, InParameterObj, VlanObject Dim PartComponentString, GroupComponentString, TargetObj, TeamObj Dim TeamObj1, TeamsSet, TeamDeviceId, OutParameterObj, bFoundPossibleValue Dim strCapabilities, intTest, arrCaps, strQuery, bVLAN, numTVLANS Dim p, r,IANet_Virtualconfigur,temp,jj,adapterCount 'For GVRP settings restore for Vlans Dim IANet_VlanIns,IANet_VlanObject,IANet_VLANSettingIns,IANet_VLANSettingObj Const wbemFlagUseAmendedQualifiers = &h20000 bModified = False ' for setting preferred primary Dim oTeamedMemberAdapters,oTeamedMemberAdaptersSet Dim AdapterInTeamOffset: AdapterInTeamOffset = 0 Dim VlanName Dim foundMatch Dim SplitID,SysAdapterID,FileAdapterID On Error Resume Next p=0 r=2 i=5 CreateSessions() 'SCR 37163 Redim Preserve AdapterPath(1) If Teams(index, 1, 2) = strSettingsIndex Then bTeam = TRUE WScript.Echo "Creating Team: " & Teams(index, 0, 0) & "..." if (IsTeamSupportedInCurrentOS(Teams(index,1,0)) <> TRUE) then wscript.echo "Unable to create team. Team type not supported in this version of the OS." ExecApply wbemServices, strNetSerObjPath, SessionObject ' Without this before exiting, the script hangs/fails exit sub end if ' Check to see that the team type is not GEC ' GEC are now to be created as an SLA team if ((Teams(index,1,0) = GEC_TEAM_TYPE)) then wscript.echo "Converting GEC to SLA" Teams(index,1,0) = SLA_TEAM_TYPE end if Set TeamsSet = wbemServices.Get("IANet_TeamOfAdapters",,SValueSet) Set InParameterObj = TeamsSet.Methods_.Item("CreateTeam").InParameters.SpawnInstance_() adapterCount = Teams(index, 1, 1) Redim Preserve AdapterPath(adapterCount) For r=2 to Teams(index, 1, 1)+1 foundMatch = false If bBdfRestore = TRUE then For Each AdapterObj In AdapterSets 'Compare only the first three parts of the deviceID (excludes the rev) 'Get all the parts in an array split by & SplitID = Split(AdapterObj.PCIDeviceID,"&") 'Re-initialize SplitID saving only the first three (saving array elements 0-2) ReDim Preserve SplitID(2) 'concatinate the three parts back together with & back in the middle SysAdapterID = Join(SplitID,"&") 'Do the same for the file device id SplitID = Split(Teams(index, r, 5),"&") ReDim Preserve SplitID(2) FileAdapterID = Join(SplitID,"&") If ((StrComp(AdapterObj.SlotID, Teams(index, r, 6)) = 0) AND (StrComp(SysAdapterID, FileAdapterID) = 0)) Then foundMatch = true AdapterPath(p) = AdapterObj.Path_.Path p=p+1 exit for End if Next Else For Each AdapterObj In AdapterSets If AdapterObj.Caption = Teams(index, r, 1) then foundMatch = true AdapterPath(p) = AdapterObj.Path_.Path p=p+1 exit for Elseif (bIsUpgrade = True) AND (AdapterObj.PermanentAddress = Teams(index, r, 5)) AND (AdapterObj.PermanentAddress <> "") then foundMatch = true AdapterPath(p) = AdapterObj.Path_.Path p=p+1 exit for Elseif (bIsUpgrade = False) AND (AdapterObj.PCIDeviceID = Teams(index, r, 5)) AND (AdapterObj.PCIDeviceID <> "") then foundMatch = true AdapterPath(p) = AdapterObj.Path_.Path p=p+1 exit for End if Next End If if(foundMatch = false) Then WScript.Echo "Invalid device found. Please verify configuration file matches your system configuration." ExecApply wbemServices, strNetSerObjPath, SessionObject ' Without this before exiting, the script hangs/fails exit sub End if Next Redim Preserve AdapterPath(p-1) InParameterObj.Properties_.Item("Adapters") = AdapterPath InParameterObj.TeamingMode = Teams(index, 1, 0) InParameterObj.TeamName = Teams(index, 0, 0) InParameterObj.MFOEnable = Teams(index, 1, 3) Dim TempTeam TempTeam = InParameterObj.TeamName Set OutParameterObj = TeamsSet.ExecMethod_("CreateTeam", InParameterObj, 0, SValueSet) If Err <> 0 Then WScript.Echo "Adding Adapter Failed..." ErrorCheck() 'If blTenGigFETeamError Then ' SetTenGigFERegKey() 'End If Else WScript.Echo "Create Team Success!!!" bNewTeam = True End If ExecApply wbemServices, strNetSerObjPath, SessionObject 'SCR 37163 CreateSessions() 'SCR 37163 Set oTeamedMemberAdaptersSet = wbemServices.InstancesOf("IANet_TeamedMemberAdapter",,SValueSet) If (IsNull(oTeamedMemberAdaptersSet) = FALSE) Then ' first we have to find which adapter is the primary and set that one first!! For AdapterInTeamOffset = 0 to adapterCount-1 Step 1 If( TeamedMemberAdapterPreferredPrimarySetting(index, AdapterInTeamOffset) = 1) Then For each oTeamedMemberAdapters in oTeamedMemberAdaptersSet If(InStr(oTeamedMemberAdapters.PartComponent,TeamedMemberAdapterPartComponentSetting(index, AdapterInTeamOffset))) Then oTeamedMemberAdapters.AdapterFunction = CStr(TeamedMemberAdapterPreferredPrimarySetting(index, AdapterInTeamOffset)) oTeamedMemberAdapters.Put_ wbemFlagAmendedUpdateOnly, SValueSet Exit For End If Next Exit For End If Next For each oTeamedMemberAdapters in oTeamedMemberAdaptersSet For AdapterInTeamOffset = 0 to adapterCount-1 Step 1 If(InStr(oTeamedMemberAdapters.PartComponent,TeamedMemberAdapterPartComponentSetting(index, AdapterInTeamOffset))) Then If (TeamedMemberAdapterPreferredPrimarySetting(index, AdapterInTeamOffset) > 0) Then oTeamedMemberAdapters.AdapterFunction = CStr(TeamedMemberAdapterPreferredPrimarySetting(index, AdapterInTeamOffset)) oTeamedMemberAdapters.Put_ wbemFlagAmendedUpdateOnly, SValueSet Exit For End If End If Next Next End If ExecApply wbemServices, strNetSerObjPath, SessionObject CreateSessions() WScript.Sleep(2000) WScript.Echo "Applying Team Settings to " & TempTeam Set virtualAdapterSets = wbemServices.InstancesOf("IANet_LogicalEthernetAdapter",,SValueSet) For each virtualAdapterObj in virtualAdapterSets if StrComp(TempTeam,Mid(virtualAdapterObj.Caption,8), vbTextCompare) = 0 Then strQuery = "ASSOCIATORS OF {" & virtualAdapterObj.Path_.Path & "} WHERE ResultClass = IANet_TeamSetting" Set IANet_Virtualconfigur = wbemServices.ExecQuery(strQuery,,,SValueSet) TeamDeviceId = virtualAdapterObj.DeviceID bVLAN = False numTVLANS = Teams(index, 0, 2) Dim bApplySetting: bApplySetting = false For j = SETTINGS_INDEX to maxSettings-1 If StrComp(Teams(index, j, 0), "", vbTextCompare) = 0 Then Exit For ElseIf bVLAN Then Set TempVlanObject = wbemServices.Get("IANet_802dot1QVLANService",,SValueSet) Set InParameterObj = TempVlanObject.Methods_.Item("CreateVLAN").InParameters.SpawnInstance_() InParameterObj.Name = Teams(index, j, 0) VlanName = Teams(index, j, 0) InParameterObj.VLANNumber = Teams(index, j+1, 0) bVLAN = false If numTVLANS = 1 And Teams(index, j+1, 0) = 0 Then wscript.echo "Unable to create an Untagged VLAN without a Tagged VLAN on this Team" Exit For End If j = j + 1 Set VlanObjectSet = wbemServices.InstancesOf("IANet_802dot1QVLANService", , SValueSet) For Each VlanObject In VlanObjectSet If TeamDeviceId = VlanObject.Name Then Set FinalVlanObject = wbemServices.Get(VlanObject.Path_.Path, ,SValueSet) Set OutParameterObj = FinalVlanObject.ExecMethod_("CreateVLAN", InParameterObj, 0, SValueSet) Exit For Else Exit For End If Next ExecApply wbemServices, strNetSerObjPath, SessionObject CreateSessions() WSCript.Echo "updating VLAN:" & Teams(index, j-1, 0) & " settings..." For k = j+1 to maxSettings-1 If StrComp(Teams(index, k, 0), "", vbTextCompare) = 0 then Exit For ElseIf Teams(index, k, 0) = "VLAN" Then Exit For ElseIf StrComp(Teams(index, k, 0), "", vbTextCompare) <> 0 Then j = k Set IANet_VlanIns = wbemServices.InstancesOf("IANet_Vlan",0,SValueSet) For Each IANet_VlanObject in IANet_VlanIns If IANet_VlanObject.ParentID = TeamDeviceId then If IANet_VlanObject.VLANName = VlanName then strQuery = "ASSOCIATORS OF {" & IANet_VlanObject.Path_.Path & "}WHERE ResultClass = IANet_VLANSetting" Set IANet_VLANSettingIns = wbemServices.ExecQuery(strQuery,,,SValueSet) For each IANet_VLANSettingObj in IANet_VLANSettingIns If StrComp(IANet_VLANSettingObj.Caption,Teams(index, k, 0), vbTextCompare) = 0 Then If StrComp(IANet_VLANSettingObj.CurrentValue, Teams(index, k, 1), vbTextCompare) <> 0 Then IANet_VLANSettingObj.CurrentValue = Teams(index, k, 1) Set Dumbpath = IANet_VLANSettingObj.Put_ (wbemFlagUseAmendedQualifiers, SValueSet) bApplySetting = true Exit For End If End If Next End If End If Next End If Next ElseIf StrComp(Teams(index, j, 0), "VLAN", vbTextCompare) = 0 Then bVLAN = True ElseIf StrComp(Teams(index, j, 0), "", vbTextCompare) <> 0 Then ' Updating Team's Settings For Each IANet_Obj In IANet_Virtualconfigur If StrComp(TeamDeviceId, IANet_Obj.ParentId, vbTextCompare) =0 Then If StrComp(Teams(index, j, 0), IANet_Obj.Caption, vbTextCompare) = 0 Then If StrComp(Teams(index, j, 1), IANet_Obj.CurrentValue, vbTextCompare) <> 0 Then If StrComp(IANet_Obj.Path_.Class, "IANet_TeamSettingEnum", vbTextCompare) = 0 Then bFoundPossibleValue = False For I = 0 To UBound(IANet_Obj.PossibleValues) If StrComp(IANet_Obj.PossibleValues(I), Teams(index, j, 1), vbTextCompare) = 0 Then IANet_Obj.CurrentValue = IANet_Obj.PossibleValues(I) Set Dumbpath = IANet_Obj.Put_(wbemFlagUseAmendedQualifiers, SValueSet) bApplySetting = true bModified = True bFoundPossibleValue = True Exit For End If Next If bFoundPossibleValue = False Then WScript.Echo "Can't apply the new '" & Teams(index, j, 0) & "' setting value of " & Teams(index, j, 1) & "' because the new value is not in the possible value range." End If Else IANet_Obj.CurrentValue = Teams(index, j, 1) Set Dumbpath = IANet_Obj.Put_ (wbemFlagUseAmendedQualifiers, SValueSet) bApplySetting = true bModified = True Exit For End If End If End If End if Next End If If bApplySetting Then ExecApply wbemServices, strNetSerObjPath, SessionObject CreateSessions() bApplySetting = false End If Next End if Next End if ExecApply wbemServices, strNetSerObjPath, SessionObject 'SCR 37163 End Sub '====================================================================================================== 'Sub SetTenGigFERegKey() 'Write a value to the Registry that Team Creation Failed because we found a 10/100 and 10 gig Team ' Dim oReg, strKeyPath,strValueName,strValue ' Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") ' strKeyPath ="SOFTWARE\INTEL\NIC\Team_FE_10Gig" ' strValueName = "10Gig_FE_Team" ' strValue = 1 ' WScript.Echo "Setting the Registry Value" ' oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue 'End Sub '====================================================================================================== ' ' Sub ErrorCheck() ' Displays Error and Extended Error Info to standard output ' '====================================================================================================== Sub ErrorCheck() Dim errExObject, strErrText WScript.Echo "Error Number=" & Err.Number WScript.Echo "Error Description=" & Err.Description Set errExObject = CreateObject("WbemScripting.SWbemLastError") If IsNull(errExObject) = FALSE Then strErrText = errExObject.GetObjectText_ WScript.Echo "MOF=" & strErrText 'If(InStr(1,strErrText, "StatusCode = 10000;", 1) <> 0) then ' blTenGigFETeamError = true 'End If End If End Sub '====================================================================================================== '***************************************************************************************** '***************************************************************************************** '======================================================================================= ' ' Sub: Remove() ' Removes teams and VLANs from the system ' '======================================================================================= Sub Remove() Dim regAccess CreateSessions() Set VLANObjSet = wbemServices.InstancesOf("IANet_VLAN",,SValueSet) ' SCR 50668 Fix: Without ANS installed, the IANet_VLAN class ' Is not exposed in the WMI, causing the for each loop below to fail. Since ' isNull() and isEmpty() are not reflecting when IANet_VLAN ' is not there, it was needed to be done like this. ' Turn on error handling (script does not halt on errors) On Error Resume Next For Each VLANObj In VLANObjSet ' Check if there was an error accessing the VLANs collection ' if not, save the ANS information if err.number = 0 then bHasTeamOrVLAN = TRUE WScript.Echo "Removing any existing VLAN's..." VLANObj.Delete_ 0, SValueSet If Err.Number = -1879109552 Then WScript.Echo "Found Hyper-V bound VLAN" set regAccess = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") regAccess.SetDWORDValue HKEY_LOCAL_MACHINE,"SOFTWARE\Intel\Network_Services\DMIX","RemoveTeams",0 Exit For End If end if Next ' Turn off error handling (script halts on errors again) On Error Goto 0 ExecApply wbemServices, strNetSerObjPath, SessionObject CreateSessions() Set TeamsObjSet = wbemServices.InstancesOf("IANet_TeamOfAdapters",,SValueSet) ' SCR 50668 Fix: Without ANS installed, the IANet_TeamOfAdapters class ' Is not exposed in the WMI, causing the for each loop below to fail. Since ' isNull() and isEmpty() are not reflecting when IANet_TeamOfAdapters ' is not there, it was needed to be done like this. ' Turn on error handling (script does not halt on errors) On Error Resume Next For Each TeamObj In TeamsObjSet ' Check if there was an error accessing the Team of Adapter collection ' if not, save the ANS information if err.number = 0 then WScript.Echo "Removing any existing Teams..." bHasTeamOrVLAN = True TeamObj.Delete_ 0, SValueSet If Err.Number = -1879109580 Then WScript.Echo "Found Hyper-V bound team" set regAccess = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") regAccess.SetDWORDValue HKEY_LOCAL_MACHINE,"SOFTWARE\Intel\Network_Services\DMIX","RemoveTeams",0 Exit For End If end if Next On Error Goto 0 ExecApply wbemServices, strNetSerObjPath, SessionObject End Sub '**************************************************************************** '===================================================================================== ' ' Sub: RestoreWINSSettings(ByVal strInputFname)' ' '===================================================================================== Sub RestoreWINSSettings(ByVal strInputFname) Dim fso Dim wbemServices_local Dim TeamSets,TeamObj,VLANSets,VlanObj,AdatperSets_local,AdatperObj_local Dim ts, strLine Dim NameServerList(),NetBiosOption,TeamName,VlanName,AdapterName Dim gIndex Dim ResetSettings Set wbemServices_local = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists (strInputFname) <> True Then Wscript.Echo "The file " & strInputFname Wscript.Echo "could not be found." Wscript.Echo "Either the file or the directory has been deleted " WScript.Echo "or Restore is being run on a cloned system." WScript.Echo "Unable to restore Static IP Addresses." bError = TRUE Exit Sub Else Set ts = fso.OpenTextFile(strInputFname, 1) ReDim Preserve NameServerList(-1) NetBiosOption = "" Do Until ts.AtEndOfStream 'Initialize ServerList to be empty gIndex = -1 Redim NameServerList(-1) gIndex = gIndex + 1 ReDim Preserve NameServerList(gIndex) NameServerList(gIndex) = "" 'start to read for settings strLine = ts.ReadLine() If StrComp(strLine,"Team", vbTextCompare) = 0 Then strLine = ts.ReadLine() 'Store Team Name TeamName = Mid(strLine,11) strLine = ts.ReadLine() If ((StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0) OR (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0)) Then 'Store NameServerList If StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0 Then gIndex = -1 Redim NameServerList(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve NameServerList(gIndex) NameServerList(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store NetBiosOptions NetBiosOption = "" If StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0 Then strLine = ts.ReadLine() NetBiosOption = strLine strLine = ts.ReadLine() End If Set TeamSets = wbemServices_local.InstancesOf("IANet_LogicalEthernetAdapter") For each TeamObj in TeamSets if (StrComp(Mid(TeamObj.Caption,8),TeamName,VbTextCompare) = 0) then SetWMIInfo TeamObj,TEAM_ADAPTER,NameServerList,NetBiosOption End If Next if(StrComp(strLine,"VLAN", vbTextCompare) = 0) Then Do while StrComp(strLine, "", vbTextCompare) <> 0 strLine = ts.ReadLine() VlanName = Mid(strLine,11) strLine = ts.ReadLine() If ((StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0) OR (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0)) Then If StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0 Then 'Store NameServerList gIndex = -1 Redim NameServerList(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve NameServerList(gIndex) NameServerList(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store NetBiosOptions NetBiosOption = "" If StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0 Then strLine = ts.ReadLine() NetBiosOption = strLine strLine = ts.ReadLine() End If Set VLANSets = wbemServices_local.InstancesOf("IANet_VLAN") For each VlanObj in VLANSets If (StrComp(VlanObj.VLANName,VlanName,VbTextCompare) = 0) then If (InStr(1,VlanObj.Caption, TeamName, 1) <> 0) then SetWMIInfo VlanObj,VLAN_ADAPTER,NameServerList,NetBiosOption exit for End if End If Next Else 'wscript.echo"Nothing to set Vlan-Team" 'exit do End if Loop End if ElseIf(StrComp(strLine,"VLAN", vbTextCompare) = 0) Then Do while StrComp(strLine, "", vbTextCompare) <> 0 strLine = ts.ReadLine() VlanName = Mid(strLine,11) strLine = ts.ReadLine() If ((StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0) OR (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0)) Then If StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0 Then 'Store NameServerList gIndex = -1 Redim NameServerList(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve NameServerList(gIndex) NameServerList(gIndex) = strLine strLine = ts.ReadLine() Loop End if 'Store NetBiosOptions NetBiosOption = "" If StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0 Then strLine = ts.ReadLine() NetBiosOption = strLine strLine = ts.ReadLine() End If Set VLANSets = wbemServices_local.InstancesOf("IANet_VLAN") For each VlanObj in VLANSets If (StrComp(VlanObj.VLANName,VlanName,VbTextCompare) = 0) then If (InStr(1,VlanObj.Caption, TeamName, 1) <> 0) then SetWMIInfo VlanObj,VLAN_ADAPTER,NameServerList,NetBiosOption exit for End if End If Next Else 'wscript.echo"Nothing to set Vlan-Team" End if Loop Else 'wscript.echo"Nothing to set Team" End if ElseIf(StrComp(Mid(strLine,1,13),"Adapter Name=", vbTextCompare) = 0) Then Do while StrComp(strLine, "", vbTextCompare) <> 0 AdapterName = Mid(strLine,14) strLine = ts.ReadLine() If(StrComp(strLine,"VLAN", vbTextCompare) = 0) Then strLine = ts.ReadLine() VlanName = Mid(strLine,11) strLine = ts.ReadLine() If ((StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0) OR (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0)) Then If StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0 Then 'Store NameServerList gIndex = -1 Redim NameServerList(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve NameServerList(gIndex) NameServerList(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store NetBiosOptions NetBiosOption = "" If StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0 Then strLine = ts.ReadLine() NetBiosOption = strLine strLine = ts.ReadLine() End If Set VLANSets = wbemServices_local.InstancesOf("IANet_VLAN") For each VlanObj in VLANSets If (StrComp(VlanObj.VLANName,VlanName,VbTextCompare) = 0) then If (InStr(1,VlanObj.Caption, AdapterName, 1) <> 0) then SetWMIInfo VlanObj,VLAN_ADAPTER,NameServerList,NetBiosOption End if End If Next Else 'Wscript.echo"Nothing to set vlan-adapter" End if Else If ((StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0) OR (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0)) Then If StrComp(strLine,"NAMESERVERLIST", vbTextCompare) = 0 Then 'Store NameServerList gIndex = -1 Redim NameServerList(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve NameServerList(gIndex) NameServerList(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store NetBiosOptions NetBiosOption = "" If StrComp(strLine,"NETBIOSOPTIONS", vbTextCompare) = 0 Then strLine = ts.ReadLine() NetBiosOption = strLine strLine = ts.ReadLine() End If Set AdatperSets_local = wbemServices_local.InstancesOf("IANet_PhysicalEthernetAdapter") For each AdatperObj_local In AdatperSets_local if (StrComp(AdatperObj_local.OriginalDisplayName,AdapterName,vbTextCompare) = 0) Then SetWMIInfo AdatperObj_local,PHYSICAL_ADAPTER,NameServerList,NetBiosOption end if Next Else wscript.echo "Adapter Does not exist." End if End if Loop End if Loop End if wscript.echo "Finished restoring WINS settings" End Sub Const PHYSICAL_ADAPTER = 0 Const VLAN_ADAPTER = 1 Const TEAM_ADAPTER = 2 '===================================================================================== ' ' Sub: RestoreStaticIPSettings(ByVal strInputFname)' ' '===================================================================================== Sub RestoreStaticIPSettings(ByVal strInputFname) Dim fso Dim wbemServices_local Dim TeamSets,TeamObj,VLANSets,VlanObj,AdatperSets_local,AdatperObj_local Dim ts, strLine Dim IPAddress(),IPSubnet(),IPGateway(),IPDNS,TeamName,VlanName,AdapterName Dim gIndex Dim ResetSettings Set wbemServices_local = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists (strInputFname) <> True Then Wscript.Echo "The file " & strInputFname Wscript.Echo "could not be found." Wscript.Echo "Either the file or the directory has been deleted " WScript.Echo "or Restore is being run on a cloned system." WScript.Echo "Unable to restore Static IP Addresses." bError = TRUE Exit Sub Else Set ts = fso.OpenTextFile(strInputFname, 1) ReDim Preserve IPAddress(-1) ReDim Preserve IPSubnet(-1) ReDim Preserve IPGateway(-1) IPDNS = "" Do Until ts.AtEndOfStream strLine = ts.ReadLine() If StrComp(strLine,"Team", vbTextCompare) = 0 Then strLine = ts.ReadLine() 'Store Team Name TeamName = Mid(strLine,11) strLine = ts.ReadLine() If StrComp(strLine,"IPADDRESSES", vbTextCompare) = 0 Then 'Store IP Addresses gIndex = -1 Redim IPAddress(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"SUBNETMASKS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPAddress(gIndex) IPAddress(gIndex) = strLine strLine = ts.ReadLine() Loop 'Store Subnet Masks gIndex = -1 Redim IPSubnet(-1) If StrComp(strLine,"SUBNETMASKS", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPSubnet(gIndex) IPSubnet(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store Gateway Addresses gIndex = -1 Redim IPGateway(-1) If StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"DNSADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPGateway(gIndex) IPGateway(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store DNS Addresses IPDNS = "" If StrComp(strLine,"DNSADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() IPDNS = strLine strLine = ts.ReadLine() End If Set TeamSets = wbemServices_local.InstancesOf("IANet_LogicalEthernetAdapter") For each TeamObj in TeamSets if (StrComp(Mid(TeamObj.Caption,8),TeamName,VbTextCompare) = 0) then SetIPInfo TeamObj,TEAM_ADAPTER,IPAddress,IPSubnet,IPGateway,IPDNS End If Next if(StrComp(strLine,"VLAN", vbTextCompare) = 0) Then Do while StrComp(strLine, "", vbTextCompare) <> 0 strLine = ts.ReadLine() VlanName = Mid(strLine,11) strLine = ts.ReadLine() If StrComp(strLine,"IPADDRESSES", vbTextCompare) = 0 Then 'Store IP Addresses gIndex = -1 Redim IPAddress(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"SUBNETMASKS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPAddress(gIndex) IPAddress(gIndex) = strLine strLine = ts.ReadLine() Loop 'Store Subnet Masks gIndex = -1 Redim IPSubnet(-1) If StrComp(strLine,"SUBNETMASKS", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPSubnet(gIndex) IPSubnet(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store Gateway Addresses gIndex = -1 Redim IPGateway(-1) If StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"DNSADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPGateway(gIndex) IPGateway(gIndex) = strLine 'wscript.echo strLine strLine = ts.ReadLine() Loop End If 'Store DNS Addresses IPDNS = "" If StrComp(strLine,"DNSADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() IPDNS = strLine strLine = ts.ReadLine() End If Set VLANSets = wbemServices_local.InstancesOf("IANet_VLAN") For each VlanObj in VLANSets If (StrComp(VlanObj.VLANName,VlanName,VbTextCompare) = 0) then If (InStr(1,VlanObj.Caption, TeamName, 1) <> 0) then SetIPInfo VlanObj,VLAN_ADAPTER,IPAddress,IPSubnet,IPGateway,IPDNS exit for End if End If Next Else 'wscript.echo"Nothing to set Vlan-Team" 'exit do End if Loop End if ElseIf(StrComp(strLine,"VLAN", vbTextCompare) = 0) Then Do while StrComp(strLine, "", vbTextCompare) <> 0 strLine = ts.ReadLine() VlanName = Mid(strLine,11) strLine = ts.ReadLine() If StrComp(strLine,"IPADDRESSES", vbTextCompare) = 0 Then 'Store IP Addresses gIndex = -1 Redim IPAddress(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"SUBNETMASKS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPAddress(gIndex) IPAddress(gIndex) = strLine strLine = ts.ReadLine() Loop 'Store Subnet Masks gIndex = -1 Redim IPSubnet(-1) If StrComp(strLine,"SUBNETMASKS", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPSubnet(gIndex) IPSubnet(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store Gateway Addresses gIndex = -1 Redim IPGateway(-1) If StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"DNSADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPGateway(gIndex) IPGateway(gIndex) = strLine 'wscript.echo strLine strLine = ts.ReadLine() Loop End If 'Store DNS Addresses IPDNS = "" If StrComp(strLine,"DNSADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() IPDNS = strLine strLine = ts.ReadLine() End If Set VLANSets = wbemServices_local.InstancesOf("IANet_VLAN") For each VlanObj in VLANSets If (StrComp(VlanObj.VLANName,VlanName,VbTextCompare) = 0) then If (InStr(1,VlanObj.Caption, TeamName, 1) <> 0) then SetIPInfo VlanObj,VLAN_ADAPTER,IPAddress,IPSubnet,IPGateway,IPDNS exit for End if End If Next Else 'wscript.echo"Nothing to set Vlan-Team" End if Loop Else 'wscript.echo"Nothing to set Team" End if ElseIf(StrComp(Mid(strLine,1,13),"Adapter Name=", vbTextCompare) = 0) Then Do while StrComp(strLine, "", vbTextCompare) <> 0 AdapterName = Mid(strLine,14) strLine = ts.ReadLine() If(StrComp(strLine,"VLAN", vbTextCompare) = 0) Then strLine = ts.ReadLine() VlanName = Mid(strLine,11) strLine = ts.ReadLine() If StrComp(strLine,"IPADDRESSES", vbTextCompare) = 0 Then 'Store IP Addresses gIndex = -1 Redim IPAddress(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"SUBNETMASKS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPAddress(gIndex) IPAddress(gIndex) = strLine strLine = ts.ReadLine() Loop 'Store Subnet Masks gIndex = -1 Redim IPSubnet(-1) If StrComp(strLine,"SUBNETMASKS", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPSubnet(gIndex) IPSubnet(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store Gateway Addresses gIndex = -1 Redim IPGateway(-1) If StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"DNSADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPGateway(gIndex) IPGateway(gIndex) = strLine 'wscript.echo strLine strLine = ts.ReadLine() Loop End If 'Store DNS Addresses IPDNS = "" If StrComp(strLine,"DNSADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() IPDNS = strLine strLine = ts.ReadLine() End If Set VLANSets = wbemServices_local.InstancesOf("IANet_VLAN") For each VlanObj in VLANSets If (StrComp(VlanObj.VLANName,VlanName,VbTextCompare) = 0) then If (InStr(1,VlanObj.Caption, AdapterName, 1) <> 0) then SetIPInfo VlanObj,VLAN_ADAPTER,IPAddress,IPSubnet,IPGateway,IPDNS End if End If Next Else 'Wscript.echo"Nothing to set vlan-adapter" End if Else If StrComp(strLine,"IPADDRESSES", vbTextCompare) = 0 Then 'Store IP Addresses gIndex = -1 Redim IPAddress(-1) strLine = ts.ReadLine() Do While (StrComp(strLine,"SUBNETMASKS", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPAddress(gIndex) IPAddress(gIndex) = strLine strLine = ts.ReadLine() Loop 'Store Subnet Masks gIndex = -1 Redim IPSubnet(-1) If StrComp(strLine,"SUBNETMASKS", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPSubnet(gIndex) IPSubnet(gIndex) = strLine strLine = ts.ReadLine() Loop End If 'Store Gateway Addresses gIndex = -1 Redim IPGateway(-1) If StrComp(strLine,"GATEWAYADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() Do While (StrComp(strLine,"DNSADDRESSES", vbTextCompare) <> 0) And (StrComp(strLine,"", vbTextCompare) <> 0) gIndex = gIndex + 1 ReDim Preserve IPGateway(gIndex) IPGateway(gIndex) = strLine 'wscript.echo strLine strLine = ts.ReadLine() Loop End If 'Store DNS Addresses IPDNS = "" If StrComp(strLine,"DNSADDRESSES", vbTextCompare) = 0 Then strLine = ts.ReadLine() IPDNS = strLine strLine = ts.ReadLine() End If Set AdatperSets_local = wbemServices_local.InstancesOf("IANet_PhysicalEthernetAdapter") For each AdatperObj_local In AdatperSets_local if (StrComp(AdatperObj_local.OriginalDisplayName,AdapterName,vbTextCompare) = 0) Then SetIPInfo AdatperObj_local,PHYSICAL_ADAPTER,IPAddress,IPSubnet,IPGateway,IPDNS end if Next Else wscript.echo "Adapter Does not exist." End if End if Loop End if Loop End if wscript.echo "Finished restoring Static IP addresses" End Sub '***************************************************************************** Sub ReloadLogicalDevice(ResetSettings,WbemServices) Dim ResetSettingObj Dim OriginalVal For Each ResetSettingObj in ResetSettings OriginalVal = ResetSettingObj.CurrentValue ' Do a BeginApply to acquire a lock in Middleware to prepare to write a setting Err.Clear Dim ClientID, dummyResult Dim BeginApplyNetServiceObject Dim colBeginApplyNetServiceObject : Set colBeginApplyNetServiceObject = WbemServices.ExecQuery("Select * from IANet_NetService", , 16) WbemServices.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True If IsObject(colBeginApplyNetServiceObject) Then For Each BeginApplyNetServiceObject In colBeginApplyNetServiceObject Dim objReturn : Set objReturn = BeginApplyNetServiceObject.ExecMethod_("BeginApply") If objReturn.ReturnValue = 0 Then ClientID = Cint(objReturn.ClientSetHandle) Else sReturn = "Unable to establish to obtain client lock ID" & GetErr Err.Clear End If Next Else sReturn = "Unable to obtain instances of IANet_NetService " & GetErr Err.Clear End If dim SValueSet : Set SValueSet = CreateObject("WbemScripting.SWbemNamedValueSet") ' Add the ClientID so the lock allows us to apply the setting SValueSet.Add "ClientSetId", ClientID ' Update the setting to what we want it to be ResetSettingObj.CurrentValue = OriginalVal ' Call WMI to update the setting Set dummyResult = ResetSettingObj.Put_(&h20000, SValueSet) ' Try to apply the setting Err.Clear Dim ApplyNetServiceObject Dim colApplyNetServiceObject : Set colApplyNetServiceObject = WbemServices.ExecQuery("Select * from IANet_NetService", , 16) If IsObject(colApplyNetServiceObject) Then For Each ApplyNetServiceObject In colApplyNetServiceObject 'Spawn IN parameters for 'Apply' Dim objInParams : Set objInParams = ApplyNetServiceObject.Methods_.Item("Apply").InParameters.SpawnInstance_() 'Set ClientID objInParams.ClientSetHandle = ClientID 'Invoke method Dim objApplyReturn : Set objApplyReturn = ApplyNetServiceObject.ExecMethod_("Apply", objInParams) 'Evaluate return codes If objApplyReturn.ReturnValue = 0 Then 'Evaluate FollowUpAction (0 = no reboot, 1 = reboot) If objApplyReturn.FollowUpAction = 1 Then Wscript.Echo "A reboot is required" End If End If Next End If Next End Sub '***************************************************************************** Sub SetIPInfo(ConnectionObj,ConnectionType,IPAddress,IPSubnet,IPGateway,IPDNS) Dim colWMISettings,objWMISetting Dim settingType Dim Dumbpath Dim SettingVal Dim i Const wbemFlagUseAmendedQualifiers = &h20000 i = 0 For i=LBound(IPAddress) To UBound(IPAddress) wscript.Echo"IPAddress : " & IPAddress(i) wscript.Echo"IPSubnet : " & IPSubnet(i) Next If (ConnectionType = PHYSICAL_ADAPTER) Then settingType = "IANet_AdapterSetting" Elseif (ConnectionType = VLAN_ADAPTER) Then settingType = "IANet_VLANSetting" Elseif (ConnectionType = TEAM_ADAPTER) Then settingType = "IANet_TeamSetting" Else settingType = "" End If CreateSessions() Set colWMISettings = wbemServices.ExecQuery("ASSOCIATORS OF {" & ConnectionObj.Path_.Path & "} WHERE ResultClass = " & settingType,,,SValueSet) For Each objWMISetting In colWMISettings If StrComp(objWMISetting.Caption, "EnableDHCP", vbTextCompare) = 0 Then If objWMISetting.CurrentValue = 1 Then objWMISetting.CurrentValue = 0 Set Dumbpath = objWMISetting.Put_(wbemFlagUseAmendedQualifiers,SValueSet) Exit For End If End If Next ExecApply wbemServices, strNetSerObjPath, SessionObject WScript.Sleep(2000) CreateSessions() Set colWMISettings = wbemServices.ExecQuery("ASSOCIATORS OF {" & ConnectionObj.Path_.Path & "} WHERE ResultClass = " & settingType,,,SValueSet) For Each objWMISetting In colWMISettings If StrComp(objWMISetting.Caption, "IPAddress", vbTextCompare) = 0 Then If UBound(IPAddress) > -1 Then If StrComp(IPAddress(0), "0.0.0.0", vbTextCompare) <> 0 Then objWMISetting.CurrentValues = IPAddress Set Dumbpath = objWMISetting.Put_(wbemFlagUseAmendedQualifiers,SValueSet) End If End If Elseif StrComp(objWMISetting.Caption, "SubnetMask", vbTextCompare) = 0 Then If UBound(IPSubnet) > -1 Then If StrComp(IPSubnet(0), "0.0.0.0", vbTextCompare) <> 0 Then objWMISetting.CurrentValues = IPSubnet Set Dumbpath = objWMISetting.Put_(wbemFlagUseAmendedQualifiers,SValueSet) End If End If Elseif StrComp(objWMISetting.Caption, "DefaultGateway", vbTextCompare) = 0 Then If UBound(IPGateway) > -1 Then If StrComp(IPGateway(0), "0.0.0.0", vbTextCompare) <> 0 Then objWMISetting.CurrentValues = IPGateway Set Dumbpath = objWMISetting.Put_(wbemFlagUseAmendedQualifiers,SValueSet) End If End If Elseif StrComp(objWMISetting.Caption, "NameServer", vbTextCompare) = 0 Then If (StrComp(IPDNS, "", vbTextCompare) <> 0) AND (StrComp(IPDNS, "0.0.0.0", vbTextCompare) <> 0) Then objWMISetting.CurrentValue = IPDNS Set Dumbpath = objWMISetting.Put_(wbemFlagUseAmendedQualifiers,SValueSet) End If End If Next ExecApply wbemServices, strNetSerObjPath, SessionObject End Sub '***************************************************************************** Sub SetWMIInfo(ConnectionObj,ConnectionType,NameList,NetBios) Dim colWMISettings,objWMISetting Dim settingType Dim Dumbpath Dim SettingVal Dim i Dim CurrentNameListCol Dim bFoundMatch, bRestoreWINS, CurrentNameServerList Const wbemFlagUseAmendedQualifiers = &h20000 i = 0 For i=LBound(NameList) To UBound(NameList) If StrComp(NameList(i), "", vbTextCompare) <> 0 Then wscript.Echo"NameList : " & NameList(i) End If Next If (ConnectionType = PHYSICAL_ADAPTER) Then settingType = "IANet_AdapterSetting" Elseif (ConnectionType = VLAN_ADAPTER) Then settingType = "IANet_VLANSetting" Elseif (ConnectionType = TEAM_ADAPTER) Then settingType = "IANet_TeamSetting" Else settingType = "" End If WScript.Sleep(2000) CreateSessions() Set colWMISettings = wbemServices.ExecQuery("ASSOCIATORS OF {" & ConnectionObj.Path_.Path & "} WHERE ResultClass = " & settingType,,,SValueSet) 'Loop through each setting item For Each objWMISetting In colWMISettings 'If the setting is NAMERSERVERLIST If StrComp(objWMISetting.Caption, "NAMESERVERLIST", vbTextCompare) = 0 Then 'If the passed in NameList is not empty If UBound(NameList) > -1 Then i = 0 bRestoreWINS = false 'For each element in passed in array For i=LBound(NameList) To UBound(NameList) bFoundMatch = false CurrentNameListCol = objWMISetting.CurrentValues 'If setting passed from WMI and the passed in setting are empty there is essentialy a match if((UBound(CurrentNameListCol) = -1) and (StrComp(NameList(i), "", vbTextCompare) = 0)) then bFoundMatch = true 'else if the number of items in name list array from WMI is different than passed in, we need to restore setting elseif(UBound(CurrentNameListCol) <> UBound(NameList)) then bRestoreWINS = true Exit For 'else compare each item from the WMI setting to the array passed in to see if there is a match else For Each CurrentNameServerList In CurrentNameListCol 'If there is a match mark it If (StrComp(CurrentNameServerList, NameList(i), vbTextCompare) = 0) Then bFoundMatch = true Exit For End If Next End if 'If there was no match with the current passed in name list array, then we need to restore the setting if bFoundMatch = false then bRestoreWINS = true Exit For End If Next if bRestoreWINS = true then objWMISetting.CurrentValues = NameList Set Dumbpath = objWMISetting.Put_(wbemFlagUseAmendedQualifiers,SValueSet) End If End If Elseif StrComp(objWMISetting.Caption, "NETBIOSOPTIONS", vbTextCompare) = 0 Then If (StrComp(NetBios, "", vbTextCompare) <> 0) and (StrComp(objWMISetting.CurrentValue, NetBios, vbTextCompare) <> 0) Then objWMISetting.CurrentValue = NetBios Set Dumbpath = objWMISetting.Put_(wbemFlagUseAmendedQualifiers,SValueSet) End If End If Next ExecApply wbemServices, strNetSerObjPath, SessionObject End Sub '***************************************************************************** Sub SaveStaticIPSettings(byVal strOutputFileName) dim colNetDevicesPhysical,colNetDevicesLogical dim objNetDevicePhyObj,objFile,objNetDeviceLogObj dim wbemServices,objWMIService dim objWINSFile dim fso dim Capability dim bIsLADIntelDevice 'Create WINS config file Set fso = CreateObject("Scripting.FileSystemObject") Set objWINSFile=fso.CreateTextFile(WINSFilePath,True) objWINSFile.WriteLine "*** NCS2 DMiX WINS information ***" objWINSFile.WriteLine "*** Date " & Date & " Time " & Time() & " ***" objWINSFile.WriteLine "**********************************************" objWINSFile.WriteLine "" 'Create IP configuration file If IsEmpty(CreateConfigFile(strOutputFileName)) then Exit Sub Else Set objFile=CreateConfigFile(strOutputFileName) End If objFile.WriteLine "*** NCS2 DMiX IP information ***" objFile.WriteLine "*** Date " & Date & " Time " & Time() & " ***" objFile.WriteLine "**********************************************" objFile.WriteLine "" objWINSFile.close Set wbemServices = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") wbemServices.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True 'Get all instances from IANet_PhysicalEthernetAdapter for adapters Set colNetDevicesPhysical = wbemServices.InstancesOf("IANet_PhysicalEthernetAdapter") For each objNetDevicePhyObj in colNetDevicesPhysical bIsLADIntelDevice = false IsIntelDevice objNetDevicePhyObj, bIsLADIntelDevice if(bIsLADIntelDevice and objNetDevicePhyObj.StatusInfo = 3) then SaveIPInfo objFile,objNetDevicePhyObj,VLAN_ADAPTER SaveIPInfo objFile,objNetDevicePhyObj,PHYSICAL_ADAPTER End if Next objFile.WriteBlankLines(1) Set objWINSFile=fso.OpenTextFile(WINSFilePath,8,true) objWINSFile.WriteBlankLines(1) objWINSFile.close 'Get all instances from IANet_LogicalEthernetAdapter for teams Set colNetDevicesLogical = wbemServices.InstancesOf("IANet_LogicalEthernetAdapter") ' SCR 50668 Fix: Without ANS installed, the IANet_LogicalEthernetAdapter class ' Is not exposed in the WMI, causing the for each loop below to fail. Since ' isNull() and isEmpty() are not reflecting when IANet_LogicalEthernetAdapter ' is not there, it was needed to be done like this. ' Turn on error handling (script does not halt on errors) On Error Resume Next For each objNetDeviceLogObj in colNetDevicesLogical ' Check if there was an error accessing the Logical Adapter collection ' if not, save the ANS information if err.number = 0 then SaveIPInfo objFile,objNetDeviceLogObj,TEAM_ADAPTER SaveIPInfo objFile,objNetDeviceLogObj,VLAN_ADAPTER SaveIPInfo objFile,objNetDeviceLogObj,PHYSICAL_ADAPTER end if Next ' Turn off error handling (script halts on errors again) On Error Goto 0 objFile.WriteBlankLines(1) Set objWINSFile=fso.OpenTextFile(WINSFilePath,8,true) objWINSFile.WriteBlankLines(1) objWINSFile.close objFile.close Wscript.Echo "Static IP information saved!" End Sub '***************************************************************************** Private Function CreateIPConfigFile(byVal strOutputFileName) dim fso dim file Dim szTmpFld Set fso = CreateObject("Scripting.FileSystemObject") szTmpFld = shell.ExpandEnvironmentStrings("%TEMP%") If (fso.FolderExists(szTmpFld)) <> True Then Wscript.Echo "" Wscript.Echo "Unable to create the configuration file required" Wscript.Echo "to save the static IP information." Wscript.Echo "Static IP information will not be saved." bError = TRUE Exit Function End If szTmpFld = szTmpFld & "\PROSetDX\DMIX\" 'make sure the folder exists before creating the text file If (fso.FolderExists(szTmpFld)) <> True Then 'need to create destination folder one directory at a time szTmpFld = shell.ExpandEnvironmentStrings("%TEMP%") szTmpFld = szTmpFld & "\PROSetDX" If (fso.FolderExists(szTmpFld)) <> True Then fso.CreateFolder(szTmpFld) End If szTmpFld = szTmpFld & "\DMIX" fso.CreateFolder(szTmpFld) If (fso.FolderExists(szTmpFld)) <> True Then Wscript.Echo "" Wscript.Echo "Unable to create the configuration file required" Wscript.Echo "to save the static IP information." Wscript.Echo "Static IP information will not be saved." bError = TRUE Exit Function End If End If Set file=fso.CreateTextFile(strOutputFileName,True) Set CreateIPConfigFile=file End Function '**************************************************************************** Private Function SaveIPInfo(objFile,objAdapter,adapterType) Dim objWMIService Dim colWMISettings,objWMISetting Dim colLogicalAdapter,objLogicalAdapter Dim col802dot1VLAN,obj802dot1VLAN,colVLAN,objVLAN Dim cont Dim objWINSFile Dim fso Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") cont = True 'Store WINS file information Set fso = CreateObject("Scripting.FileSystemObject") Set objWINSFile=fso.OpenTextFile(WINSFilePath,8,true) 'Check whether static IP information is available through WMI If (adapterType = PHYSICAL_ADAPTER) Then Set colWMISettings = objWMIService.ExecQuery("ASSOCIATORS OF {" & objAdapter.Path_.Path & "} WHERE ResultClass = IANet_AdapterSetting") For Each objWMISetting In colWMISettings If (StrComp(objWMISetting.Caption, "EnableDHCP", vbTextCompare) = 0) Then If (objWMISetting.CurrentValue = 0) Then objFile.WriteLine "Adapter Name=" & objAdapter.OriginalDisplayName SaveWMIIPInfo objFile,colWMISettings,objAdapter.DeviceID End If 'WINS settings objWINSFile.WriteLine "Adapter Name=" & objAdapter.OriginalDisplayName SaveWINSInfo objWINSFile,colWMISettings,objAdapter.DeviceID cont = False End If Next Elseif (adapterType = VLAN_ADAPTER) Then Set col802dot1VLAN = objWMIService.ExecQuery("ASSOCIATORS OF {" & objAdapter.Path_.Path & "} WHERE ResultClass = IANet_802dot1QVLANService") If col802dot1VLAN.Count > 0 Then For Each obj802dot1VLAN In col802dot1VLAN Set colVLAN = objWMIService.ExecQuery("ASSOCIATORS OF {" & obj802dot1VLAN.Path_.Path & "} WHERE ResultClass = IANet_VLAN") If colVLAN.Count > 0 Then For Each objVLAN In colVLAN Set colWMISettings = objWMIService.ExecQuery("ASSOCIATORS OF {" & objVLAN.Path_.Path & "} WHERE ResultClass = IANet_VLANSetting") For Each objWMISetting In colWMISettings If (StrComp(objWMISetting.Caption, "EnableDHCP", vbTextCompare) = 0) Then If (objWMISetting.CurrentValue = 0) Then If (objVLAN.ParentType = 0) Then objFile.WriteLine "Adapter Name=" & objAdapter.Caption objFile.WriteLine "VLAN" objFile.WriteLine "VLAN Name=" & objVLAN.VLANName Elseif (objVLAN.ParentType = 1) Then objFile.WriteLine "Team" objFile.WriteLine "Team Name=" & Mid(objAdapter.Caption,8) objFile.WriteLine "VLAN" objFile.WriteLine "VLAN Name=" & objVLAN.VLANName Else objFile.WriteLine "VLAN" objFile.WriteLine "VLAN Name=" & objVLAN.VLANName End If SaveWMIIPInfo objFile,colWMISettings,objVLAN.Name End If 'WINS settings If (objVLAN.ParentType = 0) Then objWINSFile.WriteLine "Adapter Name=" & objAdapter.Caption objWINSFile.WriteLine "VLAN" objWINSFile.WriteLine "VLAN Name=" & objVLAN.VLANName Elseif (objVLAN.ParentType = 1) Then objWINSFile.WriteLine "Team" objWINSFile.WriteLine "Team Name=" & Mid(objAdapter.Caption,8) objWINSFile.WriteLine "VLAN" objWINSFile.WriteLine "VLAN Name=" & objVLAN.VLANName Else objWINSFile.WriteLine "VLAN" objWINSFile.WriteLine "VLAN Name=" & objVLAN.VLANName End If SaveWINSInfo objWINSFile,colWMISettings,objVLAN.Name cont = False End If Next Next End If Next End If Elseif (adapterType = TEAM_ADAPTER) Then Set colWMISettings = objWMIService.ExecQuery("ASSOCIATORS OF {" & objAdapter.Path_.Path & "} WHERE ResultClass = IANet_TeamSetting") For Each objWMISetting In colWMISettings If (StrComp(objWMISetting.Caption, "EnableDHCP", vbTextCompare) = 0) Then If (objWMISetting.CurrentValue = 0) Then objFile.WriteLine "Team" objFile.WriteLine "Team Name=" & Mid(objAdapter.Caption,8) SaveWMIIPInfo objFile,colWMISettings,objAdapter.DeviceID End If objWINSFile.WriteLine "Team" objWINSFile.WriteLine "Team Name=" & Mid(objAdapter.Caption,8) SaveWINSInfo objWINSFile,colWMISettings,objAdapter.DeviceID cont = False End If Next End If 'Check whether static IP information is available in registry If (cont = True) Then On Error Resume Next If (adapterType = PHYSICAL_ADAPTER) Then Set colLogicalAdapter = objWMIService.InstancesOf("IANet_PhysicalEthernetAdapter where StaticIPAddress <> '0.0.0.0'") For Each objLogicalAdapter In colLogicalAdapter If Err.Number = 0 Then On Error Goto 0 If objLogicalAdapter.DeviceID = objAdapter.DeviceID Then objFile.WriteLine "Adapter Name=" & objAdapter.OriginalDisplayName SaveLegacyIPInfo objFile,objAdapter.DeviceID End If End If Next Elseif (adapterType = VLAN_ADAPTER) Then Set col802dot1VLAN = objWMIService.ExecQuery("ASSOCIATORS OF {" & objAdapter.Path_.Path & "} WHERE ResultClass = IANet_802dot1QVLANService") If col802dot1VLAN.Count > 0 Then For Each obj802dot1VLAN In col802dot1VLAN Set colVLAN = objWMIService.ExecQuery("ASSOCIATORS OF {" & obj802dot1VLAN.Path_.Path & "} WHERE ResultClass = IANet_VLAN") For Each objVLAN In colVLAN Set colLogicalAdapter = objWMIService.InstancesOf("IANet_VLAN where StaticIPAddress <> '0.0.0.0'") For Each objLogicalAdapter In colLogicalAdapter If objLogicalAdapter.Name = objVLAN.Name Then If Err.Number = 0 Then On Error Goto 0 If (objVLAN.ParentType = 0) Then objFile.WriteLine "Adapter Name=" & objAdapter.Caption objFile.WriteLine "VLAN" objFile.WriteLine "VLAN Name=" & objVLAN.VLANName Elseif (objVLAN.ParentType = 1) Then objFile.WriteLine "Team" objFile.WriteLine "Team Name=" & Mid(objAdapter.Caption,8) objFile.WriteLine "VLAN" objFile.WriteLine "VLAN Name=" & objVLAN.VLANName Else objFile.WriteLine "VLAN" objFile.WriteLine "VLAN Name=" & objVLAN.VLANName End If SaveLegacyIPInfo objFile,objVLAN.Name End If End If Next Next Next End If Elseif (adapterType = TEAM_ADAPTER) Then Set colLogicalAdapter = objWMIService.InstancesOf("IANet_TeamofAdapters where StaticIPAddress <> '0.0.0.0'") For Each objLogicalAdapter In colLogicalAdapter If Err.Number = 0 Then On Error Goto 0 If objLogicalAdapter.Name = objAdapter.DeviceID Then objFile.WriteLine "Team" objFile.WriteLine "Team Name=" & Mid(objAdapter.Caption, 8) SaveLegacyIPInfo objFile,objAdapter.DeviceID End If End If Next End If On Error Goto 0 End If objWINSFile.close End Function '**************************************************************************** Private Function SaveWINSInfo(objWINSFile,colWMISettings,adapterID) Dim objWMISetting Dim itemWINSNameServerListCol,itemWINSNameServerList Dim itemWINSNetBiosOptions For Each objWMISetting In colWMISettings If (StrComp(objWMISetting.ParentID, adapterID, vbTextCompare) = 0) Then If (StrComp(objWMISetting.Caption, "NameServerList", vbTextCompare) = 0) Then itemWINSNameServerListCol = objWMISetting.CurrentValues Elseif (StrComp(objWMISetting.Caption, "NetbiosOptions", vbTextCompare) = 0) Then itemWINSNetBiosOptions = objWMISetting.CurrentValue End If End If Next 'If the length of the combined array is greater than 0, then it is not empty if(Len(Join(itemWINSNameServerListCol)) > 0) Then objWINSFile.WriteLine "NAMESERVERLIST" For Each itemWINSNameServerList In itemWINSNameServerListCol If (StrComp(itemWINSNameServerList, " ", vbTextCompare) <> 0) Then objWINSFile.WriteLine itemWINSNameServerList End If Next End If objWINSFile.WriteLine "NETBIOSOPTIONS" objWINSFile.WriteLine itemWINSNetBiosOptions objWINSFile.WriteBlankLines(1) End Function '**************************************************************************** Private Function SaveWMIIPInfo(objFile,colWMISettings,adapterID) Dim objWMISetting Dim itemIPAddress,itemListIPAddress Dim itemSubnetMask,itemListSubnetMask Dim itemDefaultGateway,itemListDefaultGateway Dim itemNameServer For Each objWMISetting In colWMISettings If (StrComp(objWMISetting.ParentID, adapterID, vbTextCompare) = 0) Then If (StrComp(objWMISetting.Caption, "IPAddress", vbTextCompare) = 0) Then itemListIPAddress = objWMISetting.CurrentValues Elseif (StrComp(objWMISetting.Caption, "SubnetMask", vbTextCompare) = 0) Then itemListSubnetMask = objWMISetting.CurrentValues Elseif (StrComp(objWMISetting.Caption, "DefaultGateway", vbTextCompare) = 0) Then itemListDefaultGateway = objWMISetting.CurrentValues Elseif (StrComp(objWMISetting.Caption, "NameServer", vbTextCompare) = 0) Then itemNameServer = objWMISetting.CurrentValue End If End If Next objFile.WriteLine "IPADDRESSES" For Each itemIPAddress In itemListIPAddress If (StrComp(itemIPAddress, " ", vbTextCompare) <> 0) Then objFile.WriteLine itemIPAddress End If Next objFile.WriteLine "SUBNETMASKS" For Each itemSubnetMask In itemListSubnetMask If (StrComp(itemSubnetMask, " ", vbTextCompare) <> 0) Then objFile.WriteLine itemSubnetMask End If Next objFile.WriteLine "GATEWAYADDRESSES" For Each itemDefaultGateway In itemListDefaultGateway If (StrComp(itemDefaultGateway, " ", vbTextCompare) <> 0) Then objFile.WriteLine itemDefaultGateway End If Next objFile.WriteLine "DNSADDRESSES" objFile.WriteLine itemNameServer objFile.WriteBlankLines(1) End Function '**************************************************************************** Private Function SaveLegacyIPInfo(objFile,adapterID) Dim regAccess Dim keyPath,valName Dim regVal,strVal Const HKEY_LOCAL_MACHINE = &H80000002 set regAccess = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") keyPath = ("SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & adapterID) valName = "IPAddress" regAccess.GetMultiStringValue HKEY_LOCAL_MACHINE,keyPath,valName,regVal If UBound(regVal) > -1 Then objFile.WriteLine "IPADDRESSES" For Each strVal in regVal objFile.WriteLine strVal Next End If valName = "SubnetMask" regAccess.GetMultiStringValue HKEY_LOCAL_MACHINE,keyPath,valName,regVal If UBound(regVal) > -1 Then objFile.WriteLine "SUBNETMASKS" For Each strVal in regVal objFile.WriteLine strVal Next End If valName = "DefaultGateway" regAccess.GetMultiStringValue HKEY_LOCAL_MACHINE,keyPath,valName,regVal If UBound(regVal) > -1 Then objFile.WriteLine "GATEWAYADDRESSES" For Each strVal in regVal objFile.WriteLine strVal Next End If valName = "NameServer" regAccess.GetStringValue HKEY_LOCAL_MACHINE,keyPath,valName,regVal If strcomp(regVal,"",vbTextCompare) <> 0 Then objFile.WriteLine "DNSADDRESSES" objFile.WriteLine regVal End If objFile.WriteLine "" End Function '**************************************************************************** Private Function Is_GVRP_GMRP_Setting(szReadLine) Dim bRet: bRet = FALSE If (InStr(szReadLine,"GVRP") > 0) Or _ (InStr(szReadLine,"GMRP") > 0) Then bRet = TRUE End If Is_GVRP_GMRP_Setting = bRet End Function '**************************************************************************** Private Function Is_StaticIP_Setting(szReadLine) Dim bRet: bRet = FALSE If (StrComp(szReadLine, "DefaultGateway", vbTextCompare) = 0) Or _ (StrComp(szReadLine, "IPAddress", vbTextCompare) = 0) Or _ (StrComp(szReadLine, "NameServer", vbTextCompare) = 0) Or _ (StrComp(szReadLine, "SubnetMask", vbTextCompare) = 0) Or _ (StrComp(szReadLine, "NAMESERVERLIST", vbTextCompare) = 0) Or _ (StrComp(szReadLine, "DNSADDRESSES", vbTextCompare) = 0) Then bRet = TRUE End If Is_StaticIP_Setting = bRet End Function Private Function Is_ConnMon_Setting(szReadLine) Dim bRet: bRet = FALSE If (InStr(szReadLine, "ConnMonClients") > 0) Then bRet = TRUE End If Is_ConnMon_Setting= bRet End Function '**************************************************************************** Private Function IsTeamSupportedInCurrentOS(strTeamType) dim bRet: bRet = TRUE ' ********************************************* ' WE ARE NO LONGER RESTRICTING TEAM TYPES IN XP ' ********************************************* ' if ((OSVersion = "5.1") OR ((OSVersion = "5.2") AND (OSProductType = "1"))) AND (strTeamType <> "0") AND (strTeamType <> "1") then ' bRet = FALSE ' end if ' ALWAYS RETURN TRUE, REVERSING DCR 170 IsTeamSupportedInCurrentOS = bRet End function ' This function will take a passed string (szString) and break it based on (szDelimeter) into an array function ConvertStringToStringArray(szString, szDelimeter) dim szArray() dim szTempStr dim szTemp dim arrayCounter arrayCounter = 0 Redim Preserve AdapterPath(1) ' The only way this loop will work as written is if the input string ends with the delimeter ' Otherwise it will result in an infinite loop if InStrRev(szString, szDelimeter) <> Len(szString) then szString = szString + szDelimeter end if on error resume next do szTemp = Left(szString, InStr(szString, szDelimeter)-1) if len(szTemp) > 0 then Redim preserve szArray(arrayCounter) szArray(arrayCounter) = szTemp arrayCounter = arrayCounter + 1 end if szString = Mid(szString, InStr(szString, szDelimeter)+1) loop until len(szString) = 0 on error goto 0 ConvertStringToStringArray = szArray end function '**************************************************************************** Sub GetOldTimeOutValue Dim regAccess Dim keyPath,valName Const HKEY_LOCAL_MACHINE = &H80000002 Set regAccess = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") keyPath = ("SYSTEM\CurrentControlSet\Services\disk") valName = "TimeOutValue" regAccess.GetDWORDValue HKEY_LOCAL_MACHINE,keyPath,valName,oldTimeOutValue End Sub '**************************************************************************** Sub ShowTimeOutValueRebootMessage Dim regAccess Dim keyPath,valName Dim newTimeOutValue Const HKEY_LOCAL_MACHINE = &H80000002 Set regAccess = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") keyPath = ("SYSTEM\CurrentControlSet\Services\disk") valName = "TimeOutValue" regAccess.GetDWORDValue HKEY_LOCAL_MACHINE,keyPath,valName,newTimeOutValue If newTimeOutValue <> oldTimeOutValue And isTimeOutValueModified = True Then WScript.Echo "Restore successful. Reboot required." End If End Sub '***************************************************************************** sub SaveHyperVSettings(settingsFileName) dim fileSystem, settingsFile dim ncsService dim physicalAdapters, physicalAdapter dim logicalAdapters, logicalAdapter dim vlanServices, vlanService dim vlanAdapters, vlanAdapter dim Capability dim bIsLADIntelDevice 'Test whether Hyper-v is present or not on error resume next GetObject("winmgmts:\\.\root\virtualization") if err.number <> 0 then exit sub end if on error goto 0 'Setup output file set fileSystem = Wscript.CreateObject("Scripting.FileSystemObject") set settingsFile = fileSystem.OpenTextFile(SettingsFileName, 2, true) settingsFile.WriteLine "*** NCS2 DMiX Hyper-V Data ***" settingsFile.WriteLine "*** Date " & date & " Time " & Time() & " ***" settingsFile.WriteLine "**********************************************" settingsFile.WriteBlankLines(1) 'Save Hyper-V information for all Intel adapters present on the system set ncsService = GetObject("winmgmts:{impersonationLevel=impersonate}//./root/IntelNcs2") ncsService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", true set physicalAdapters = ncsService.InstancesOf("IANet_PhysicalEthernetAdapter") for each physicalAdapter in physicalAdapters 'Save settings for only Intel adapters by checking for Non-Intel and disabled adapters bIsLADIntelDevice = false IsIntelDevice physicalAdapter, bIsLADIntelDevice if(bIsLADIntelDevice and physicalAdapter.StatusInfo = 3) then SaveHyperVSettingsForPort physicalAdapter.OriginalDisplayName, settingsFile set vlanServices = ncsService.ExecQuery("ASSOCIATORS OF {" & physicalAdapter.Path_.Path & "} WHERE ResultClass = IANet_802dot1QVLANService") for each vlanService in vlanServices set vlanAdapters = ncsService.ExecQuery("ASSOCIATORS OF {" & vlanService.Path_.Path & "} WHERE ResultClass = IANet_VLAN") for each vlanAdapter in vlanAdapters SaveHyperVSettingsForPort vlanAdapter.Caption, settingsFile next next End if next set logicalAdapters = ncsService.InstancesOf("IANet_LogicalEthernetAdapter") ' SCR 50668 Fix: Without ANS installed, the IANet_LogicalEthernetAdapter class ' Is not exposed in the WMI, causing the for each loop below to fail. Since ' isNull() and isEmpty() are not reflecting when IANet_LogicalEthernetAdapter ' is not there, it was needed to be done like this. on error resume next for each logicalAdapter in logicalAdapters if err.number = 0 then SaveHyperVSettingsForPort logicalAdapter.Caption, settingsFile set vlanServices = ncsService.ExecQuery("ASSOCIATORS OF {" & logicalAdapter.Path_.Path & "} WHERE ResultClass = IANet_802dot1QVLANService") for each vlanService in vlanServices set vlanAdapters = ncsService.ExecQuery("ASSOCIATORS OF {" & vlanService.Path_.Path & "} WHERE ResultClass = IANet_VLAN") for each vlanAdapter in vlanAdapters SaveHyperVSettingsForPort vlanAdapter.Caption, settingsFile next next end if next on error goto 0 settingsFile.Close WScript.Echo "Hyper-V information saved!" end sub '***************************************************************************** sub SaveHyperVSettingsForPort(externalPortName, settingsFile) dim vsmService, switchService dim externalPorts, externalPort dim activeConnections, activeCOnnection dim switchPorts, switchPort dim deleteInParam, deleteOutParams dim bindInParam, bindOutParams 'Setup WMI access set vsmService = GetObject("winmgmts:\\.\root\virtualization") set switchService = vsmService.ExecQuery("select * from Msvm_VirtualSwitchManagementService").ItemIndex(0) 'Get information on virtual NIC associated with port set externalPorts = vsmService.ExecQuery("select * from Msvm_ExternalEthernetPort where ElementName = """ & externalPortName & """") for each externalPort in externalPorts set activeConnections = vsmService.ExecQuery("select * from Msvm_ActiveConnection") for each activeConnection in activeConnections if InStr(activeConnection.Dependent, externalPort.DeviceID) <> 0 then set switchPorts = vsmService.ExecQuery("select * from Msvm_SwitchPort") for each switchPort in switchPorts if InStr(activeConnection.Antecedent, switchPort.Name) <> 0 then 'Write information necessary to restruct Virtual NIC association with port to the file settingsFile.WriteLine "PortName=" & externalPortName settingsFile.WriteLine "SystemName=" & switchPort.SystemName if InStr(switchPort.ScopeOfResidence, "") = 0 then settingsFile.WriteLine "ScopeOfResidence=Default" else settingsFile.WriteLine "Scope Of Residence=" & switchPort.ScopeOfResidence end if settingsFile.WriteBlankLines(1) 'Delete the switchport from the virtual switch set deleteInParam = switchService.Methods_("DeleteSwitchPort").InParameters.SpawnInstance_() deleteInParam.SwitchPort = switchPort.Path_.Path set deleteOutParams = switchService.ExecMethod_("DeleteSwitchPort", deleteInParam) if deleteOutParams.ReturnValue <> 0 then WScript.Echo "Call to DeleteSwitchPort failed with error code " & deleteOutParams.ReturnValue end if 'Unbind port from Hyper-V set bindInParam = switchService.Methods_("UnbindExternalEthernetPort").InParameters.SpawnInstance_() bindInParam.ExternalEthernetPort = externalPort.Path_.Path set bindOutParams = switchService.ExecMethod_("UnbindExternalEthernetPort", bindInParam) if bindOutParams.ReturnValue <> 0 then WScript.Echo "Call to BindExternalEthernetPort failed with error code " & bindOutParams.ReturnValue end if exit for end if next exit for end if next next end sub '***************************************************************************** sub RestoreHyperVSettings(settingsFileName) dim fileSystem, settingsFile dim line dim externalPortName, systemName, scopeOfResidence 'Test whether Hyper-v is present or not on error resume next GetObject("winmgmts:\\.\root\virtualization") if err.number <> 0 then exit sub end if on error goto 0 'Open input file set fileSystem = Wscript.CreateObject("Scripting.FileSystemObject") if fileSystem.FileExists(SettingsFileName) then set settingsFile = fileSystem.OpenTextFile(SettingsFileName, 1, false) else WScript.Echo "Hyper-v Settings files not found." exit sub end if 'Read in settings for each bound port do until settingsFile.AtEndOfStream line = settingsFile.ReadLine if InStr(1,line, "PortName=", 1) <> 0 then externalPortName = mid(line, 10) line = settingsFile.ReadLine systemName = mid(line, 12) line = settingsFile.ReadLine if InStr(1,line, "Default", 1) <> 0 then scopeOfResidence = "" else scopeOfResidence = mid(line, 18) end if RestoreHyperVSettingsforPort externalPortName, systemName, scopeOfResidence end if loop settingsFile.Close Wscript.Echo "Finished restoring Hyper-V settings" end sub '***************************************************************************** sub RestoreHyperVSettingsforPort(externalPortName, systemName, scopeOfResidence) dim osService dim osInstances, osInstance dim osVersion dim isWin2K8 dim vsmService, switchService dim externalPorts, externalPort dim bindInParam, bindOutParams dim typeLib dim virtualSwitch, switchPortName, switchPortFriendlyName, switchPort dim createInParam, createOutParams dim switchLANEndpoint dim connectInParam, connectOutParams 'Check OS version set osService = GetObject("winmgmts:\\.\root\cimv2") set osInstances = osService.ExecQuery("Select * from Win32_OperatingSystem",,48) for each osInstance in osInstances osVersion = osInstance.Version next if StrComp(osVersion, "6.1") < 0 then isWin2K8 = true end if 'Setup WMI access set vsmService = GetObject("winmgmts:\\.\root\virtualization") set switchService = vsmService.ExecQuery("select * from Msvm_VirtualSwitchManagementService").ItemIndex(0) 'Find Msvm_ExternalEthernetPort associated with port specified set externalPorts = vsmService.ExecQuery("select * from Msvm_ExternalEthernetPort where ElementName = """ & externalPortName & """") for each externalPort in externalPorts 'Bind port to Hyper-V set bindInParam = switchService.Methods_("BindExternalEthernetPort").InParameters.SpawnInstance_() bindInParam.ExternalEthernetPort = externalPort.Path_.Path set bindOutParams = switchService.ExecMethod_("BindExternalEthernetPort", bindInParam) if bindOutParams.ReturnValue <> 0 then WScript.Echo "Call to BindExternalEthernetPort failed with error code " & bindOutParams.ReturnValue end if 'Get instances of Msvm_VirtualSwitch previously associated with VNIC if isWin2K8 then set virtualSwitch = vsmService.ExecQuery("select * from Msvm_SwitchService where Name = """ & systemName & """").ItemIndex(0) else set virtualSwitch = vsmService.ExecQuery("select * from Msvm_VirtualSwitch where Name = """ & systemName & """").ItemIndex(0) end if 'Create new name and friendly name for virtual switch port Set typeLib = CreateObject("Scriptlet.TypeLib") switchPortName = typeLib.Guid switchPortFriendlyName = virtualSwitch.ElementName & "_ExternalPort" 'Create a new switch port based on the old saved data set createInParam = switchService.Methods_("CreateSwitchPort").InParameters.SpawnInstance_() createInParam.FriendlyName = switchPortFriendlyName createInParam.Name = switchPortName if isWin2K8 then createInParam.SwitchService = virtualSwitch.Path_.Path else createInParam.VirtualSwitch = virtualSwitch.Path_.Path end if createInParam.ScopeofResidence = scopeOfResidence set createOutParams = switchService.ExecMethod_("CreateSwitchPort", createInParam) if createOutParams.ReturnValue = 0 then set switchPort = vsmService.Get(createOutParams.CreatedSwitchPort) else WScript.Echo "Call to CreateSwitchPort failed with error code " & createOutParams.ReturnValue end if 'Get instances of Msvm_SwitchLANEndpoint associated with connection if isWin2K8 then set switchLANEndpoint = vsmService.ExecQuery("select * from Msvm_LANEndpoint where Name = ""/DEVICE/" & externalPort.DeviceID & """").ItemIndex(0) else set switchLANEndpoint = vsmService.ExecQuery("select * from Msvm_SwitchLANEndpoint where Name = ""/DEVICE/" & externalPort.DeviceID & """").ItemIndex(0) end if 'Call ConnectSwitchPort set connectInParam = switchService.Methods_("ConnectSwitchPort").InParameters.SpawnInstance_() connectInParam.SwitchPort = switchPort.Path_.Path connectInParam.LANEndPoint = switchLANEndpoint.Path_.Path set connectOutParams = switchService.ExecMethod_("ConnectSwitchPort", connectInParam) if connectOutParams.ReturnValue <> 0 then WScript.Echo "Call to ConnectSwitchPort failed with error code " & connectOutParams.ReturnValue end if next end sub