From 4b5f6009a47f64f0a56c2af10b7b3f82f3f6b116 Mon Sep 17 00:00:00 2001 From: Candy Date: Thu, 20 Aug 2020 00:34:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=B1=E8=89=B2=E4=B8=BB=E9=A2=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BB=A5=E5=8F=8A=E5=A2=9E=E5=8A=A0=E5=8F=98=E9=87=8F?= =?UTF-8?q?=E6=8C=89=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common/Cdy.Tag/ITagQuery.cs | 2 +- Common/Cdy.Tag/Real/RealDatabase.cs | 2 +- .../DevelopServiceHelper.cs | 30 +- .../DBDevelopClientApi/developService.proto | 7 + .../Protos/developService.proto | 7 + .../Services/DevelopServerService.cs | 86 ++++ .../DBInStudio.Desktop.csproj | 3 + Develop/DbManager.Desktop/Image/huoxing.jpg | Bin 0 -> 70658 bytes Develop/DbManager.Desktop/MainWindow.xaml | 3 + .../Properties/launchSettings.json | 2 +- .../Themes/ControlStyle.xaml | 73 ++- .../View/ImportModeSelectView.xaml | 76 +-- .../DbManager.Desktop/View/MarInfoView.xaml | 5 +- .../View/PermissionDetailView.xaml | 6 +- .../View/ServerUserGroupDetailView.xaml | 6 +- .../View/TagGroupDetailView.xaml | 53 +- .../ViewModel/Tag/TagGroupDetailViewModel.cs | 464 +++++++++++++++++- .../ViewModel/Tag/TagViewModel.cs | 8 +- Driver/SpiderDriver/TagInfoServerProcess.cs | 8 +- 19 files changed, 710 insertions(+), 131 deletions(-) create mode 100644 Develop/DbManager.Desktop/Image/huoxing.jpg diff --git a/Common/Cdy.Tag/ITagQuery.cs b/Common/Cdy.Tag/ITagQuery.cs index 4cc0615..084d7d5 100644 --- a/Common/Cdy.Tag/ITagQuery.cs +++ b/Common/Cdy.Tag/ITagQuery.cs @@ -61,7 +61,7 @@ namespace Cdy.Tag /// /// /// - ICollection ListAllTags(); + IEnumerable ListAllTags(); } } diff --git a/Common/Cdy.Tag/Real/RealDatabase.cs b/Common/Cdy.Tag/Real/RealDatabase.cs index de136ca..077e197 100644 --- a/Common/Cdy.Tag/Real/RealDatabase.cs +++ b/Common/Cdy.Tag/Real/RealDatabase.cs @@ -676,7 +676,7 @@ namespace Cdy.Tag /// /// /// - public ICollection ListAllTags() + public IEnumerable ListAllTags() { return Tags.Values; } diff --git a/Develop/DBDevelopClientApi/DevelopServiceHelper.cs b/Develop/DBDevelopClientApi/DevelopServiceHelper.cs index 6b73ce2..68e63f8 100644 --- a/Develop/DBDevelopClientApi/DevelopServiceHelper.cs +++ b/Develop/DBDevelopClientApi/DevelopServiceHelper.cs @@ -777,14 +777,14 @@ namespace DBDevelopClientApi /// /// /// - public void QueryTagByGroup(string database, string group, Action>> callback) + public void QueryTagByGroup(string database, string group, Action>> callback, Dictionary mFilters = null) { int idx = 0; int totalcount=0; int tagcount; do { - var re = QueryTagByGroup(database, group, idx, out totalcount, out tagcount); + var re = QueryTagByGroup(database, group, idx, out totalcount, out tagcount,mFilters); callback(idx, totalcount, re); idx++; } @@ -799,13 +799,22 @@ namespace DBDevelopClientApi /// /// /// - public Dictionary> QueryTagByGroup(string database, string group, int index, out int totalCount,out int tagCount) + public Dictionary> QueryTagByGroup(string database, string group, int index, out int totalCount,out int tagCount,Dictionary mFilters=null) { Dictionary> re = new Dictionary>(); if (mCurrentClient != null && !string.IsNullOrEmpty(mLoginId)) { int idx = index; - var result = mCurrentClient.GetTagByGroup(new DBDevelopService.GetTagByGroupRequest() { Database = database, LoginId = mLoginId, Group = group, Index = idx }); + var req = new DBDevelopService.GetTagByGroupRequest() { Database = database, LoginId = mLoginId, Group = group, Index = idx }; + if (mFilters != null) + { + foreach (var vv in mFilters) + { + req.Filters.Add(new DBDevelopService.FilterMessageItem() { Key = vv.Key, Value = vv.Value }); + } + } + + var result = mCurrentClient.GetTagByGroup(req); tagCount = result.TagCount; totalCount = result.Count; @@ -879,7 +888,7 @@ namespace DBDevelopClientApi /// /// /// - public Dictionary> QueryTagByGroup(string database,string group) + public Dictionary> QueryTagByGroup(string database,string group, Dictionary mFilters = null) { Dictionary> re = new Dictionary>(); if (mCurrentClient != null && !string.IsNullOrEmpty(mLoginId)) @@ -888,7 +897,16 @@ namespace DBDevelopClientApi int count = 0; do { - var result = mCurrentClient.GetTagByGroup(new DBDevelopService.GetTagByGroupRequest() { Database = database, LoginId = mLoginId, Group = group,Index=idx }); + var req = new DBDevelopService.GetTagByGroupRequest() { Database = database, LoginId = mLoginId, Group = group, Index = idx }; + if (mFilters != null) + { + foreach (var vv in mFilters) + { + req.Filters.Add(new DBDevelopService.FilterMessageItem() { Key = vv.Key, Value = vv.Value }); + } + } + + var result = mCurrentClient.GetTagByGroup(req); idx = result.Index; count = result.Count; diff --git a/Develop/DBDevelopClientApi/developService.proto b/Develop/DBDevelopClientApi/developService.proto index e30d798..31e161d 100644 --- a/Develop/DBDevelopClientApi/developService.proto +++ b/Develop/DBDevelopClientApi/developService.proto @@ -569,6 +569,13 @@ message GetTagByGroupRequest string Database=2; string Group=3; int32 Index=4; + repeated FilterMessageItem Filters=5; +} + +message FilterMessageItem +{ + string key=1; + string value=2; } // diff --git a/Develop/DBDevelopService/Protos/developService.proto b/Develop/DBDevelopService/Protos/developService.proto index e30d798..31e161d 100644 --- a/Develop/DBDevelopService/Protos/developService.proto +++ b/Develop/DBDevelopService/Protos/developService.proto @@ -569,6 +569,13 @@ message GetTagByGroupRequest string Database=2; string Group=3; int32 Index=4; + repeated FilterMessageItem Filters=5; +} + +message FilterMessageItem +{ + string key=1; + string value=2; } // diff --git a/Develop/DBDevelopService/Services/DevelopServerService.cs b/Develop/DBDevelopService/Services/DevelopServerService.cs index eab56bc..cec0066 100644 --- a/Develop/DBDevelopService/Services/DevelopServerService.cs +++ b/Develop/DBDevelopService/Services/DevelopServerService.cs @@ -953,6 +953,80 @@ namespace DBDevelopService return Task.FromResult(re); } + /// + /// + /// + /// + /// + /// + /// + private IEnumerable FilterTags(Database db,IEnumerable res,List vfilters) + { + return res.Where((tag) => { + var re = true; + foreach (var vv in vfilters) + { + switch (vv.Key) + { + case "keyword": + re = re && (tag.Name.Contains(vv.Value) || tag.Desc.Contains(vv.Value)); + break; + case "type": + re = re && ((int)tag.Type == int.Parse(vv.Value)); + break; + case "readwritetype": + re = re && ((int)tag.ReadWriteType == int.Parse(vv.Value)); + break; + case "recordtype": + int ival = int.Parse(vv.Value); + if(ival==3) + { + re = true; + } + else + { + if (db.HisDatabase.HisTags.ContainsKey(tag.Id)) + { + re = re && ((int)db.HisDatabase.HisTags[tag.Id].Type == ival); + } + else + { + re = false; + } + } + break; + case "compresstype": + ival = int.Parse(vv.Value); + if (ival == -1) + { + re = re && (db.HisDatabase.HisTags.ContainsKey(tag.Id)); + } + else + { + if (db.HisDatabase.HisTags.ContainsKey(tag.Id)) + { + re = re && ((int)db.HisDatabase.HisTags[tag.Id].CompressType == ival); + } + else + { + re = false; + } + } + break; + case "linkaddress": + re = re && (tag.LinkAddress.Contains(vv.Value)); + break; + + + } + + } + + return re; + + }); + } + /// /// /// @@ -977,6 +1051,12 @@ namespace DBDevelopService { int from = request.Index * PageCount; var res = db.RealDatabase.ListAllTags().Where(e => e.Group == request.Group); + + if(request.Filters.Count>0) + { + res = FilterTags(db, res, request.Filters.ToList()); + } + total = res.Count(); totalpage = total / PageCount; @@ -1036,12 +1116,18 @@ namespace DBDevelopService { int from = request.Index * PageCount; var res = db.RealDatabase.ListAllTags(); + if (request.Filters.Count > 0) + { + res = FilterTags(db, res, request.Filters.ToList()); + } + total = res.Count(); totalpage = total / PageCount; totalpage = total % PageCount > 0 ? totalpage + 1 : totalpage; int cc = 0; + foreach (var vv in res) { if (cc >= from && cc < (from + PageCount)) diff --git a/Develop/DbManager.Desktop/DBInStudio.Desktop.csproj b/Develop/DbManager.Desktop/DBInStudio.Desktop.csproj index 36c77a6..cadd9ac 100644 --- a/Develop/DbManager.Desktop/DBInStudio.Desktop.csproj +++ b/Develop/DbManager.Desktop/DBInStudio.Desktop.csproj @@ -23,6 +23,7 @@ + @@ -47,6 +48,7 @@ + @@ -62,6 +64,7 @@ + diff --git a/Develop/DbManager.Desktop/Image/huoxing.jpg b/Develop/DbManager.Desktop/Image/huoxing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f71bd22ff441c564ffcae48e67d602e7d793d48 GIT binary patch literal 70658 zcmeFYbx>T<^Dj6A8GHhP1cC+#?(PF2xa;5qcbDK3f(98p5Hz?$a0%`b7~I|6U54fR z-rL=(t^H%)+p4YFs^7V{@6^Augi&#Qpfa#FHV03;*;0O{obJR<-? z5^9p-8p>*dl$K^JHcsZ2lpY+c?3DEGuGS8gl(KTtlyWMP(v%*&oD9sA&hEx`)^1*u zB9sE`n9mCU2>|k|SN}O*8p_LwijInkf`W<(1frp1V`5`tVPaw7;Nri=!NtSH!g~Go zHQpNnLPA1p&^w~H1Vs1*garTj6C~u9dr(j@P*E`maIkO){-@h>I{**;l{PXZG7=Tw z6&?~Y9@29+fZ_!tD$;*zfdA2uUcHPF4Tz3`iS^Q<_BG%Y5;F2D6y*Pm`lYwu%kKab zJXHJ-9O7tiRE>dD&IFtRv03QUpDH^D)y7U~xJ+EWV_?30M@0PoBP|_010y#NFCV{v zpu}fMDQOv5Idu(9Er_;`uBn;1g{76XjjNlx$5&4;@4%qokkGIn;c@W^i9eH)f2CyS z4Afo{PgA3`^*B3#?LqYw(frc-x3N&_pL&X_@ zPVgxKgV{+|K+{=bCm{{Z%X;+h9wBO|>m9x@&P z40tTg4yOnFm;Bcp{Fe^=mk#`w4*Y+n14z!Y;qHWOlsFwZ1osM<8Db>i9P;4?ZE_iU zfO!UwC;EjRR;^d6QuIAc?3naDMA`pdg>!_{|3M{Cm3b9T|NH+Bg5i;7NswIPFFw!T zYn{IsVAz>G- z#UzPR-(g};wq~NRXcOy4T|8R4B&%4%Ji}~mACGX(8v>J;?wHr2mf)oGh{}6%USvdtAmBtkk!%CqCerAz0Xh_Z<5`Qo*aqA zC)xC1x9K8U9sz3jf;^?)glcPsw5eeLZ78hoj1VP-+{f}XcdrOE-@mHc5naYU8*8v& zmF71XPy^P;J5-hX%O7uM9c3{!FB%543AhyV(em$jcQns`Vb^}i9WuM!R6piCpDoA$ z%u}AKsFZ(WKQ@$%ew3oj(881(FGW`?b}xa;JM9QEnf|~9G``GbI?_|jYd~N|)zqnv zP70zvc>W@>&U4i*D~O#^l$s{*t@iY|X3+YPS{2oL0qojY$sM*Hp!`F2dW$2{+3lYMaSmoepz9LHLT+};qANcA(= zq(4C;8W&omNoM#bF8KtsG5NZvnnp1>2ASNx>BMAI0@D}W`_I$aksZN~ttv_IjXpaZ z@P8*<@@Z))a`Z^D6uP2@s|bQ`7Lh8*RW0mLL4CFsE~4!ucK|)$Ywp7E2Z20dZa_gE zZ{XGcu1)`IpQ4?o@E}7+oIOsvhwGR>@FvW9wjguEh=9uqpHtlUwS$#cw{F!szo6A+ zHz020Oa>S9VF$hdZh=0+l5$t(=0GK5+$W7K<7~v6ONOE{fr6 zjny~6EhANMmk6tv3{3N$?-@{DJbaqn{#{})X9ak#6}ygU>x$u|MSUpCwKeC;JC+I@N z!0v5~yar*s9^Vgt`|Pt)wyS=2MQjqyMy{cVjUX_c>r)*s7I*|i@U zX1yzkT2N3^^p)j#g;Ubn)}Rx0427|#`6!QroEpeDZHIE0Uw|O_( zHp_FQ?#X)4YmgqC-EWsc@~_Q&-d76$xa0&b6;gb*ds-Q9F@Izs8ZnLq8=V$c z-5LsCIUm)PDW&c!vwZe4wTg=GC^Q>W)`t|zt~tX(g0#H`*xuoZtRX?0XrFv)HTl2gyDAt1$8k()1U?! z-fwmN+MMx1`qi|8(0k)r>a_RAMxR7@C-JTLU-l}8?@R~G8#sSW^SHaaYTbvkD2^vV zS($m#Q?a)AF59$ya@L=OATsk@_Zn=ud^a}aM73d3Nb0j{cGo;L_wu+NDL-nak&ib{ zOUVfr+Z@TamBx0h7IcBi&X08Gg~RdB0FP=<3#(%3MtR5Ss9L*u{-b+!(SIA2k0pGe zR=#J)TJw^m50gj8Uy1UQ!%COlxlEQz#>=W5UggfI>{c$qA}umsHm51vc&x}5Tc*4q zTXV1FkgV@O-#48eE~g)i(~+GXZNn%4uqW78P;*A2&+EJEA$kVz7yZGIWS!?dQ%*q1 zj#LZBZ@>s=x1P-dSmxU_idg~cxsS?Vq2yDXs6@;`AXUhbaX_z^I$|`t-5jq^;!d4I zPhGE@pgx7&C-8|$aGl2xMzSXvUa1>7QB;eg9g`i-C`O+h`5$AHLjZVj9{#7@1kh*& zYAI;-30?35_)Fk3K(frfkCgg1)^P#huqQw0_A|GFlYbWw5urP$3X2ZE3;*F-=U*n} zqLH&}okRE#-(T?biwLS)kCx^0Zn33-;(99js+5uj@$PZ2{hy%h-FBr@H4?OgeitO0YdZm1Mnw%}XVyjEKG zgAFoG?;6lm1V#T;a8k&Fa-)5aM}~*K@`mJ`5CkGml3JPP(K;fVxy}r= zd>HS5TSicfCmkA+Ha_J4i*`YEI`DIl!i;?eAQfOmND0Tau5n2J@nPV$sysR&Ku9}2 z1JKI@`R{yT&_-5pnbb1Uc-}Jr@^`n&qG5|SQouP=4MZp`kNFHJNqYvYd{)~mp$N$V zm5wI$NRp8}^3<4~4^Ta6Q0!@L-x}i);Rha$fzC>|Qr0{}F0+n)fo>;bjclD7n2OAy ze}BR+ax&kL`Tb7qQ1+&mZ6$Q=i;>QXAp8UkGTV6~N4vq6zAO*Han#ft_-i4$O0lPv zbM`h@u-OrDX_C@wN{QeQCfDI9qk-WyO)SW=iO|t zq#t|6$FRtjR8Y=#-ut7-Ajj|GcklN?pb>iA7yC|i5Y>nBe|Mq>YlHO90F5s4sZ?;+ zmI)#2RG~J6Fetq+iM;YYf-Yl4`X_KjiHX0FVGA#N9Gx5)ZE` zK#`-fw~Gc=Rg|GU;Lg_3r1oXvhMmLfIq(vHahxyxC@Zl4#R_>CoejHpg_~Yy!v%eD z9&7Q=d|QFWH)4+MQv%KSci@kHSt^W}E398&YNuDk(lY380DAR$Uq?zMK-(kj1`kM2Ab z&T8pD13+I+0LvmIz$?N9?D?RdQRKeo!uBE?w-iF)&{eH8P+%tOZiD{R?pR{*1 zfY_*=;y|Y!jFawvJaMS;43OK?zQ^Bpl4t7{H|WX0p$!O#Ys(Y6$Dn9;HeBKBDhY-k zi-QmAZ>N0`uNtE12A~f+JT1nw=S9JC{TGm5ev#tu!~TWuB2r9XWBi{V%HH$$euGV}(A-0G@86+Z7Q?gg z7I;9IIcTOd)Q_d{g=L%B01aq5wtNXSF{+xC#swMK-W|5xsfr4(@Fq`!XtppP+m=**S z)ELh>xe$a~YSinSNZZu*^W|30E z8x|_C8`o0eWme3OCn^|M+iWQ34L7KL z-YIdxk*P<9K?U>8^iQQk_Bu+K(lL@0W;flg@^q^AG=xW_1T`W)0GIO*v)7VvV&y(w z7k7$*S~=7(G(dmv$6P-TOpC*=sN_U?wD8%+)5^bH^~lG{{+#L{QxwtBi<;6FjA`JZ zJ;X&XY^>lJ5{JNCl`%oyg|MMfn4gUi`{jD|*M`Yb9dyB+6n`|qixbU+*qK+k*skg$ z;R;p1v0c?ZP-lS?A!^REe%5emF|?u54!%y+t43z6c(AQs~tI z??@u&z0DibxVA(^^6XVN-G4?&Wim9#wHAl^HrzI4XCkUl!F0CxW_MT|!%28L5!7>9 z@4b(dZP`DTndOa{I|;}>(-R&h_vDIyfJf3twj2tpx$Fy8y0DPIt#x}IXv!4tjO=CwQETj9GO#vhgKqdDz)PjMgKb3&=4_aIb)xkd-v z?S4l)&w$tT+J^>w$5W&AA)OkAS08W4ecT^J7LgNtJo*&g>UOo=A{7>=%`tC0{SrsG z9}X1jclz7f?zTAbL3OKA9zb`FE^SxioJ{!wBcksa^fxo)lO~@5Nmh4*C#&{{)Sz7D zg9N}cfLiBWCI(IY0oha|**u@VKjr)TIu`d?XLl0Nb%Mr0vCws$^9uDdpu)guUD!-B zx8g$hK8+^{ZZ&(`db8Ht5q&QM6{jD8a%g`w!gUaMTEsz&|3)O<=tbzoe7<*YUcNiJ z4Ijzu@~3E8-w;>0Tq2@)vN_4?anH&9?WO4{gu`Mok7!X2Iu=G1{*2hLe8>yED7_PA z62$-AV7U6&bq87E%fuBX<9`N3>qYppdpJ-`PD{c&*szwrQ%zb#JYDu9H1{Xg=ao0K zgl(EhK0XTg?R3BKl(QIM*BjWE`|@IeMjB2-Xd-DxkUi+SI238E|2RR3^ddiI>7TlT$t`(~`_>>qcix*1&g9c)mDAVKL{eE~`iX z#?$6A0NKdM2m#NauUU$Cn+Tolnqe#Q{V;7`Pm+$WBvf08_yVbr7wOWNk|mckB=1pQ zrW>mAG%BA~zt?1F=Aqg=BznZP-7SHK_ELRrvXZ)9F1P}ZSFtuD18F+A?Sx*TBQ*D< zIdWJWyrwvtB}LZZfTXTN!Ff5TMVIRm@Mz86vNm{R*q z4)SsmJx+GIjFi>ZOBA*sHLrz4pF?1h`0eGY_CFF|Tw*V*su+dGt&~+?Ft=(w-J#0G zGr+FL<}R#zRSOuDtGZ_Yjt2RfUK)IiIcu%*4f%^VWI%b{@!ykRgi@La784aYhnx;S z>BS6M2@o3{$X`%_$u3O@6gM5w?7$Wyzr>itjsuWJX4LAVnWlH`DRR7)raqAC`pb%y zhjImP5paB0AUq{0)`+qbZD_rlE-L0ck-{u$q5GhF*3mapCg6y)Nxi{OTv1v1;O_wimwl3FIk-A|}=2c0wx{h2>l7!4U)dSi0 zB?bgzicn&o?#7IM*yS(KhFX3#@t$CGZ?&7zXRDICoGRIlO>!H_ROi);6a56;?2IHp zbeXQAEDY?I={qUN#jTlrWw)>9nv!6^nGq>+@JsQN^4&f-T{}W0!IT-yI6UFQ*;4vd zQ0Bz5gT~LM(`eOcY9v345}BFgv_~8Ecn=zE+)+9))znLs$c|P8FPB&sBEx>&&v2&1 z1%9tJ=0R7Uu5ugSh13XIogh2^z0=s^1Zx8KnNsw+u{knFN_)Ph8TXgwy{+R`ZyYVv zIu^BxK@hAJ%;UupQONa$@5bKjPkvQ~>0OnUv2JX$rPD5j0ub(uyZinJf5?9oJ1;fd zlyIyh^7F*I>Q%Z{IUa_HkT~7s*M)U&c2}t7XJrJ1$2z1p$wwFF{p(6UR!iy{+zSb= zJXBQoLz`d8tGW9d;zVC2Yy-`S zaj9&i@Z=#~mn89WP{dJ&dts`lCxO%QVJuL?{8T#l zxAupUPA#8Wy`W#-{LKpb&P$ZjLL$>lV|c68^JBk1562-oBt;E$DI%>_b&0ps3S3p> ze-xSAAg(zxKfh-_%gwnWEVbL?}62lOoY@|;Sp{!77`$`U!+p@9na{=LOo zeV7PiyTamBg8IC60?S?T`*N%c*3z+3!QO!f5xW6Maxyc71eM0{_uO?_v}(yG#x)S)7%}a zNN&pl4>sCMtSPlv?HuWH{Uq}pa>00FI_~Gz3JXN-j@@`D6)UlQ`#aFOk*gxNu;Q`f z#l8`)=QKNbCAwfUO;M!Ri=zL~&g%;mzhWf9ySKb5=JXXkz3ju+Th?hr?EC{$$ySWr zOt2hlJXL&}D8HBt`}F2c>m^b<&G;Rpe{0q&(_v*qeNOdvtydiuAKXH`BTw}^VzKBxvK;g*5$(*-gN=2bhNiy&Nr*DOXZz{ikZ<-oC$1hj$K( z)>ma}75P-if8G?5AnyF~8>39Gea>28ku#zMlT+_XV?UW2m8NmgcUi(bhZ(;=ZXZ~$k?)^;a`n3gyyb9#C=h(k+%g?@M$76RLFPiE(^L^vhYf4 zd&I|s)Wja?Zpv zg}8hSL7K8awG`Y}F5lK+#d`MJ9~KlW`eJgRKgqkP%` z3wUgLpt&LeUMh5Z_i6e=UaM4{hl}EW)#oHTu@17`yahXD1X` z_H+dCB`;Vv`LA;~#`Ea?7W#|e2-bNieVoOcG=5lHo0y_5 zfMZ;n&y9Bh35hBKL;{aJmIE!Z0!#;Rv`mL_y+8AFJ2V>tJdug9Rq=LpSkm;C@gz-O zGL)xt<1AJ9xBvn)q!(Ak@%qJv(s>g z3CPJ?BWc)VUGAUqKXHm>U8hF={g-@?zmL5D3Q`|knUuq;49?uE+|h}~f}KBrxQ0jT ze9O&mZJD}oK1%u_)7k6%x~%tX!<6LB(w?B6<75(vr^1-AzD~Kr`7tj>J z0LC5}n$o42v6@*xwFG|ea~3}B0}a!?p_w-O_laC^uPDu|Jx*V-`cDNTbkss(v{~`% zoY}|PxnG>bDOVARU6Nl(3klf2ydzO|9M6SGJ!A!$Ibmiz1IEjYt;&P^JZch8OiQ6Z zf)ft4)VyD;^%REiS6Ama$Gi?wr1R)}@p7oGuq9i@EZNf@IjWEg0d7QW2DIS3jQUgD z9C5P&B3io&%&8 zmt`W6g4AF~)hj{1Gp1k~S$M_ot9)puy34OQA%;HX7miRcUdq#PX{~{BHPSMAI?WPm z6mJ$e5SEtW-o?G~%Uz~^(N%;9d&F-l`M0G}}y3g@IV{2l_;ap><91^efhsfG$)$%DX z5;g_0Ql6*NvnIybVTfE4BSO?>**-`f2!-CurCp-2a~X*W3sqsgx*b?#_fNNOwL5*q z+XV2Fp;(g`bgD9X^?roI`Rk75IQ&80rpZ(47o}g9(_$LlL?N(6zxt_UhN3lO39eQg zb+mU?@$1VBt9{1;wLRk4^ChO9u2{J3^;}^s98TLTj)RgyxT_SHmVpYchiVU&lhYKn zuvq2*vv77nmn~?z+r8xx*IG%M;|jU*=^r~tAE)i9VgAPnQ`i2^4T_QCe@$j{<~4r< z8?8oG!5sRoYmYRDA!#@MXkxP5=vHQbAy2to)1z(LU5PBB^6y>i(ILl!VOQD_d}6K$ z!n+9o>}~h^w0&IM@q&Z?J-xSr-E}^ZN%>~IXp{5pPcPKL&eU2lg^9vRK@VZ(8CCSy z0r=gXdN7BL)<2N)vg!SFOL=J$kV7smU@|A9Vnk1wSijsK?tQwE^QKRDH86bdvLZq^ z;}_*CghmWDS?)Ke?m6S>F6D*M)=kgHLQ(x5QqGc zwj+U!gOp=8=)9$>lq!3DgORTpBD*=f5tkNg2_h1%vyGpB+&5JzEKRJ!I8I~0e-DAr z8yzv3tdjgyroUo_+18GW@_D+d0I-rGH~9I%{WDPz)|W_|`2@xrY>?}nqW9@a*aOe< z#H7)HtvAImClKe6<{99gYF!>ae`ki27+6s#K-k5vBve9%slS57oim~FH0P{kI$>$l z$luqZ9&!@Uw*|@iy9%L6Wls{YU}7p4H3vuOz_9WTh`GvC1=Z)q~U`*1dAc1 zj*-H`lbz#qMkxT$c&Ri$r5R>5Ns$PcaiGpw$wkU(;)8>4vro8sPL?nSVND*WemY+! z$Km(;)EZae&#^Dtxmmqr>M3{c_;J!lj~2HA#rhbR9MMVmp&8gi_RZ6Dv6|I@N$ItK zti40d!*m2Cc`j5p%dHaoZW=^%r2)Kycs9BAb;R_87YHg$a$Sm*$3vNp9Z7AZf2ICq z^0;%zuX5BEREM<*;#7Km%e*#E;JYYC_>nKGd=(2lEscPqS|^F!{fte!|6S%))G{_f zDv9CvCOz8lZ;X8+GY{cOqJCz#Ny%bQmLarnCnTGA|I8kKo;%fwg#gEzPAH z4QO-*?DZh%X{&BB?>@=+6dtVg#BPiEu$I)rLPDo_mSdQGsrU&c9t>lm-B7#j$qsoi z49q@o4jhPlVT}|G^BCRRwnjdJ)s?MP-JyX-0cAc9!nX4s&}#RE@8fNJGO8c`m!?8_d%~Pd%V_22;zmLlO8}~Ef`G~Qm&zsEiiNi0R zB3wjicogB;cVIBsYA$V-ukZJCbmtFDw$b&kw#+;%XC;KeQnZGH&8YC(z7)feEELM z-6+72xn|^_LE$dGLgqlp?yj>4!x7{}*k+N3*cRRI-|hL$npCA@Lxcol^!ks)w!|+6 zx1#$~VLz8;`VV&{{fvu!+0JM)w1@K-%Z2WI`nH+Un?`wvq|n`{i|fQF0xGg{(kF_V zC+;$Zj6#dMtg5%}nuYhd{;XcE7s+Swite=deen7{@WGL{lh}1C=*vqW@^K}w?4x?B zRM`Co_^wxlA#tz(bx($YR(!SaD@Cj+CBOaL6gm-(TS&dZ?c0wuC5Pm&T9wlHDUX@_B`3<7rT3bOxRHzE-vQ=>Rc_l60+2 zq5!ea+31DzxQ^$7N^9Ci{hnb2TWCMnEq*V&i1qs*XsB;I+Txd7>3xR(HM3xVN^Op1 zfWcxDaUa9IrnQ^!i=PX|43#9j3V|^kC3_S;hLDx~@k9Ua#8{Ie@G5It??R-)o7k@@zw@&ofPOU4w1CGaZN?IObZX3W$ABAX7aQD1SdrI{!p902fwO)2{ zE$Xax!hp3s>1(v)*MyE$-MHR<9lDBCuep9Y6inc$Ar(4%C^X-P70Zpa~I zGGIP^rz*`X?Mmc;BTs{psRZmI2+AX#OR{`ebf?NI@7lJASGYTX+l0t&(#1*H6eX^A z;f5Y>x<9%q>D5`xi(yNXz_=u1Dx7IzGbt;J;cqVxv<0ao8k-IxUU1PwH7_k*%0K*< zJXIdMmLL6d)w%)Hl$ka~G-9~2J+dG7qnn6ZDmAuS?9A0+TT$+kbiSYDR#W(U|$-pkkwwNT%Yf4{ZoyqV(mo0*xKru ztWx!L(?1l|M6+%f42)2Yl0>!ec2#bGPyn|K$0)0CgNwWbjfqoe3}F1*#)Uyw(@ zc^t8wA?853$asXa>Oi3`26X20Z7;eVsEjSSAR$&qc{t&V^vp{Yk-DqAbR*4Id16N7 zt9I3ey(9VSuuK7@)C?!COsImIZ`Es}W8=}+P)1X|(si-l?#N_4JQniN##=0N-{vb~ zwA0&mTC{lU%D05ul40URk2a8iej%A%p-bXCcDaY}a}lJy+ph&a?jQU5i|6eNnH97* zD6!Xnu|zf8Y0`*~5R<<6R$9b{ylxu(BTlXZ*Mvk#u4d&#PLQi&^}22s)?W9XNCn&t zF5F*Vz>H;2Nx)OD)F!`GTxD@Rhd3bio2?NHsb>IqFw2$3=j(!iz$R{Mw`Oq^u@BQF zXOa>>W`$t%I;IOF26yjjE^JPu|3FV+d~F~^&F6I^-Af8YBR5e3e|IeQX-jxxzAj2D z>>7P2V_pi}dN-4A;B{GiRKV##@0_U=1f@2>pYLP8qZtGx!zM*wleEGdhd`rz#vFq( zYy*@lX^yWJ0}D(GOy4E79^M|c(c8JJ^wIv6Im*Q=i4k;LcydNKD_Rk7MzdgM+#+hL zdblmGG)Cwb`qFAFfkc3-#~x88@ojqaS!&96y|!gZve7^BXxjz(U(!YuD!fr7b-V4+ zi*I@$)8%2FhC94}9-jf63TR$;?O?e-k?Z1-RXa5JT+s^A2YP{uvF)?lykt5)2=d8F zU4@DZqD|_O;Ca7ln3emn^3+@cxjthlsGkzx{eSrusx+x+J7O8il9vT|_< zCHS*T5!tIZeXGziLqS`de`YWZYB0y9`bMSOLN&jLjBmiMbj6z5&b!fR?%bxIzt3nE z30$NEmSQ1CkD83UXj?R!mVd5FGb`b}*ZoJ$?vFl`5q4`%7}Np-TiT{=w=+Ufe4~4T zC1k&r_l#aUvhd>%0#4EpiOZfo8~GKv{jHLZVL*N|@N3(y?683NCQcwK3E*mn(4QEM zfa}$Y!p2I<1=E+)E52|MLH z{9AW_bplW3%_s^r)c%#uX1SZliATJy@%NIgbG1))^X+@yW^zBl3Kus+(1` zli`go%=}LA>b{!)rP7Sjn_HcIRimAv#}@)PhdNeYGU*44g9bq|>BDsC`|wuGKU57{ zXicQmT^~me@K0J5mFmqhTf(kj}7b!%HRA zdvo0u$;bL#o0_@-I#P-hycP+3zZ!0Zk8~o32{RotiY6sR!}|Gg`mzT!zSnsACOOE5hCOfV|sGMtmuA0Wc}zqIhZ<>KxrnD)VFwL&Z_yATfCpx?tT_n}=84YIg_ z$c2gQP*o#a5dK~g@aFow)B8)g^qxe|?|lJs_e!`mJLtf$jFrAeVj~#NS&y^ISoTJ` zqaF&%@0Bd%Co_d#^8EO^njcwbY<4X?voZt4anrkEt^4x_+(QBFh6ok;5>MpAf5y>D zmrEZQwve+G)Wl0iK?1Gdx0;|p2VW`;zloQWbHiy4GNQb7ZnE{2UV|yI7Wjx2oamBL z(2kMh9L2RuuyZ#vs|&S6b+dJQ}SpjV&BMJGdz-! zAXkZjp19T828$F|e4FHzXys-_orKAFZ$?!ek<;~?jhj;~N`$IhZj z=z!C9+~_43WFY1%Qt;t|lO+dbNBD@WxFg+6;x$V{+II*rdb;uw|Bd7y>cDHybLofd z8ifa#GTr34?fISbvgN+U_8p!LR@4~BSNn~CL~5{-jb_`cY&zwxamp7V%xr%fnU z(veWohgjshUrtN(aWdLRF>wtKPy3mf@;kBPN!7<-tNXX6zX;-TSI+`s{2Pk=C5S~W zF!s{oFNnf^AR(UwVe%L?qdzJJK{>2jPR8FhO1KEr6xTY(*9L4xxB{28W?g@wAkElMP_L%Cf6A{ zfikpeHSY_BhquZAO&^Wm!DVy7UqX^v`%H5Wxp_6dQ0Oz@O7*GIMwT@a%ezA2;2AJoyke60cVj-fl2Cx3 zZW?A47&%r*D;+eLgvVLVXWU49Ej%g9tbp{ULO3=a!IQxfCLG;IFjIGhH6ud5tz7tY z+&gI(Ra281YA{F0T$&+s!P^x3jnqw~EzxxtSA~_caYV=>njzikD_+_L9YNW)gkz=M zJac{Zw=zq7H_DyN&hoAh6z<~9FTO1}7Umf4_S}3d=~qbK%tbdUd%Sbsu5aGbOFU`K@UG$rIsD4-=5b zCp7Eh--D$GtH_sZx`;(p&oHw4*Rsu**KL`Ib#FelFc{o$R~>3Uup$gOH>T6v3e$MU zT|AL~^gljKG87t=FOBx@2&b9yFxsf`60Y(Cjy7X6y=8|QSw4=c=beDF8jL=6~RP48QQA% zRsg(UbRsGcO^X8$)(*WYI-OhUbfPg4ikz5c5yN(*u@t_L&-|CCculSMrF~=5Vf8G- z`>N>Gn}C>|DH!9TtHIIyY01u{dx8J8_&5CM0Z*+g!E%kC8+QLhS;Oo+U405b{8Cz>BVZD0Dgl-+`foj-e9w?vHd{#HlyMbkc)_$k}B%IS3E`_c5V^h#Mhs-;QU+gN$*pSTvHgOarN!w125Yb$EOllO_vKsscPYy{`}N!IBjM%i+W`V%?7DS zN&i}?9Nc!5f0*wmbQ&gQlVvZDUz{PR39(Q(vQv|FUyM}|>9y6SwguVt87cRsKK%xC zeDqH=l!rNgV{C?jgtdxrs3ndz9=bAhaYm_QW3@*X8iqfQC+sSchTpKz*mL(UNq*iV zi41vFC3%2+^G9T__mo@)tt4Tbb^h)0B>C!;j$Od6z;*7sRqyavw#0|X=^q2{ml9|y z`!osFK!czW(4Q0A3=^U1>xt7t=h z7JgE;mgfCkWh(b9F*5Vu&^+=PP$dBx{F8wP`!>nB@KWk>STv-EG!>;M(E`9q42!=p zQ_GLp6?DiA&Ut%7@#%fT+=u>N^hX=CKu4zY*b!;qWwA!e?MIU-*^jonZuM=rH4l;7 zvkc%R6o|k}DOY6!_NzbF<~Wc0+O>X4lm7eX#)rcV{!$eZ8-7ZJ-6e$WS7segIQB~U ztS@Bu8;$%jHH=3XNbQyw`Mb)8n|TdH8icOM7po!KRhrm%wj9SN*HE~g#xHwd@^Xm; zjiQ|K(vW7%!3k#|=ov7f-T&llaCzbD$1(*M%-8%mbGyfs$-L~#KIL{Tgfdo9^`|tV z0?Vi`_G2>y8Ikh26x!R`3u7V^vmgn}f8n${it7yt>KZ7TYkyoU#g}=z-DZ>;6nCG$ z6vd-KyF5f$le%~}ME&DyZrH2oc0EfEqJdTyn-<%1@M0iEo?nFD>4HK7{GRQn^5X>! zM8xmZWkf%Dv7)-r*sz6_w%}uVXf!0y@NzS==yW@R<2_3>UD!)e;HaeDMau!56!bPh z2ReiP47kLDp!_;AaJl_;apoBNPWa!$_+8XqkH$r%bc&6G!H~ao9{zgKT}Xm_xP(HT zrND0`S54nT724mvJ#hZ}@gIKsnW-7;(cIy{5d(a;?ey)3DKP)I*RRp zQng0VuYK#!4JR@XHm@Ag6sH8s6HO#G?q>kETBYy5=8yXB!>`QI3V-mgj^DLjrZn9B z@{}te;yyo!J}o_CqfYsnDmRU5Ioe#>xbOe#ccQSSI3-+H_jN)Z)jr2fawX@(?lIa?r%bglB-8&va56CxC`RLJcEe72(#{*Kf|7Ff?GWqGTOq z2Kkoj$7GwKB!Z}k)KZOcg>A!}U5LI9HTIKV_SLDL=mj80|I#?iP^6pFTtL$F9N}}7 z)u>y)rp40TH2s~chu=2|`NaI1TzPmeJkc(x5-@t8EfOv;mK#55l54`#|79c>G}yQpkum za*uKygNndf0Xz6BcYgnk>K#P}6^Szd?$ zy<2`lq$OBxqV{x`IxX@6qK;Za-+gIT;|s{nj$ccUaOdxx@$t4wO(I#;eV@ZV+UjNfaK-pEDic2Yx$9n0*Px=8)0{@O-xc3Fr6 z8?#p=u~*nf7^fMB)CG(k&0xB4rKW_Pgg!<{BxuuCibZtS{nx_NTFSxt#D<1|>fO{| zKT)n;u_s#$latZi5d0-2SEahY7X)vy8}{l+rAGT}G^9xSoaGszX4bPQ zBkRV&%%J>dkho33wC|~~-1l~{X6;(x=h40{R zb@W2tr?W1A`L>zp6uG(bqP0dueKWnQQo3+&%e9qZ31a zash|I4A71`Yxb(&eyD{u^zN_r@Gr)T*BzILKb6x>*f_<-cZETwN;Ni_{jkC>^ zW*~EOpd=XYv8sAFtG&nm6g2YKF{Q~P2J3vyDYXL1ve&}V??iw>Yv(APYXPf|GCO9SsDVx>RGdGO7sE!}*xNpz$(hKUo7u;vSL zA~dO%OWf=%D|2Fex6jNRBsA2d8=T?eRdFZQ#5;THET?cF`DCMx?+vY|%;tASv`^me zGmp$e3x5y7M3_F$p18z+AYT9dk{+IWRZ(C0xDR|BRu_a1Lp6StkMn~3oVI*I1LLj*y%Rh7IE zgjfqXc0LvDM?@Tdi*DLAEqC)59L02@K%zVj-WbBa+VO|EHlTk|OMDz}^N4FXK}r^-8` z(2x<kfO0x4+KG8}i%@zxy;E?AuyTw!z9@M+|>qUm8V&HL+ zN@O)ldCyu=AwR`PeBI0GCmA%pV9iky9Cap-H2c)@q1?Z}-jvJDQWDem^VX-84LcVS zLL442I}w_Bn+!-ESUl|n;8hU*^zSg12Y1cuP~wYIFB$hJ1{hgubUV?=yFDK9!uZ{{WoSizprGat`IpJGNR@8-D5F{syImQa3Cz z9lDinzlBlred)-y8ycJ<9?xm@Ouc2R)X z_x_b2m4O&+`*#(dv!0n1BHcHs&rH;~ml?B2TsZ^gIQ8_YQsLXE{EcO$!2okprOjsI zu3s|hX(Xhaw_Ia`)~Aj6#{PPaD=BWdsZ#3(qm`DXYsTboSaa6`o+cUO9&0ggK&g`K zH`Cs;aD5FUJF`qmGo88isTINxl=bV{v!l3E-}R}*z#|z3p~bDuRFQop?~$Il2d!C( z=cgw=m6;r?k4l%%M8PYO>IG)a6VTd@K&W!VuTj)~l=Zkr13x#Z#w!^vcQyu3t_@j@ z(Z1vSr`ofYrk6FAQIUW^?U7Q)B9q5a*0Pn^P67V_fgY7IT?OHv<{S~wR!%lHQo7XB zRf&&UomFx2oYqjg9Fj-Wbg5S09)$iC4KmY4qROF$7-!J&R#k}P_VlcQC?lWLRMFh+ zV7MJRgZ(QuS23=V?!aS)^)+HEg+e}TVDuG@_ST5n>hoe;jr?N9q>1Nv7yw_|VkREv3$jP&NGkiKJlUUD#T@0yiwhzFlg@c;MLH5

%)+kqL*4GVb3_`&+|k4iZO&ToCUJf5D^@3)SDuze3&=Y{izM;Ium?HU#}DmOcTyW*17Si87~u!$7%MX?ZdG@ z%AX-OHH`kMF-hkr=ysn@D=+Q5{{URmjo%$;4EE-f7^46^sIw)J#+Zd{itA_ zrk^2P);5y#AL2DK-ujy7e$=PFC>Nv;y+eUfowqt~wfoZjr`54syH4MO?yeSK)^vzTkR`LPWPrV`7Mp5#8Ds0DePS2h>;*g%elU4HLfzRVj z^W8=;MN%Ef%aNXjm{=dYqM`dp&m;At&sOhNhAffAC!*9XYykOK5mFXktue6GtYu

(ro;qK`_VnPd{{3_->j~7FAhTahCv}*0S`w(wc3Gswg4^`=kAl&0Z1^hjttv zy^)@4^f^6U&&z4I$cZFaiW?uagj>CK-^h#o}B)_ zT8~3b_aZh**a>h3dph9$eJVD!lyutNzE%}(2w<0RB&VQmnWjFPM1(^s5<3!qol>2; zhb8(IO}yZdvAF9@D=PIy1L;ya-PuSE!-8@!G7s0*pB>!fmvO@%PX7Q-)b3^0#bV@p zQsfaOnJpyQ@~ zl}Tpep0a{7MUd`XS-@kJ&u+BiD<@(;ztX9RQ~}35&$Ujntg$L?A%V}XO(wJ-Gbb)V z8RL%Bt2qa)MgT?o`Oh5or>x;l3L!nPIV1f0)(%}PZ4}N|k8%7(UMWquVPGV0wJ4N<{{Yvlm6)>q(4l$buj5ihaL#tAS3a34N8ozYv|4P}OM{*XsRhe% zoP(YicC4k5)Zu{@DqU<|xCf3q8qL8oMK+CZwGq^ZBiFCzQwxFyQ~*!ETE!EIF`Vb` z4#uaBcLU{i80*tDpCPv~uMPb1Fv}7;VDnauz#ln3H|Ltdj`#ouLooFisgmJypP7A> zf+{5omZoj3*45$fanPYPGlcyx^ZmO#t^I7SV zg$)i4F}Y3&{09|jzq90xQLWK}j431LAB}nZUN2T*^P=a5S0o($dRC-*xnc7L2hbdk z&aw7#>T0SZsq%FE04>*!xg?r`YYP`S2+5!BHx+`qn8yTyX+N~sAH7Gjlj>JGG-cBQ za}CEi=)RL35iz^b^4tr!Ce`Q&?s~ z7bA0HsU!aYuS*rqdgmWXIS0;ei=q!F2hh`n-VY}p^^9*+a7oDSMFQkVGrIzxA%4*t zA8Z5v0Iy27N=6S_$n!dU-22o1(sRk?j!O^PBU{g3UO$}zVh;wg1p6t<$GQARg6XJJ5J7wEZg}nE~scp`}S&FDJbwv@4kC66RIGN8Uf)r>>ym zhfI%AShm+?QyaeuvG&|`7(UgXAxcK5o+$^t1yzU2{{V$%eXUM1Gv1V3XPn}P0=bO> z93BX2Ysm5SQ}wE%?w9RMPXywch`Eo0bc>HGO0@X~e3Zc>ugg<4!tX4nZaNHPRb42L z?8`+1Zs=17{sUHAY&jqU>OE`p3H(g_(wg@W<&_n;3Bs`$JaJMqj>nk;k~ko8YPT82 z3Ff0?<;tgNgXxD0-E6uLBs0fD!k*iS*C>V3{lAJPd{2o$pcZ51dVrY zaVorgbCsug@v@S08TBHsM}2VC#Y1GbBnzsjiy1g zK>cZvSs`Y`%Z|q%&zfY=fL&u?*&J^i^`^%xhEdQhZNE-Am*bGQ!1+}Cy)%k@lC&$2 z^@~j->pd9sI>rP*pur~wP9`#jj;bhALkI^{GRR#H+MUK+bx8bV?}{q{+nT zg09RDY!glwAzPVFJMK9(U&@p+lo83??I7{&DePfvB)06h{xE;~+}2GZx!G`CF5j6} zKsph{F)m^bHt#}ufc$>7SU`x`f>EBz{Act302*;Fz$=XH91z(b=h}-Qsk@g}=~NuP z26!#aJYB^90Dd(rKZ$rhrDbk-j#PrDwkgI!ype%^q0KLxV;t^2fkk7-cggv^&N@`7 za>{tz6!+wc99u(EM$%pr$C>%AYE+q-4kcAN&rj)CZE`~H5tdx`r+u}s3~RXi)_%>s zjTF*1e8~v^09+4mko2ii`b7XU0=>x?{#DQYwZO|KzZ_MFuXg~!nL+9sr{_t*qP?Ow z#n^oEPal;zXI92gF&*-9D-~{m0DP=HGlTyC*QpZfGBeZI@lnWXr=hkd9N~69d~=_! zY2IiDcK-k^{W$>sm5!5^KP-wzxv5OjDIA0BIjC^5xYVv{3#aH~+&{cKRI%LwfW)aD zr~1}IO6r@GaoZezWFP5Dmrg-3$jINshmlaDaB^te6L1-F-1QXmd~N>#d*u?#=*4qb zi*n7?k-ypmkL6OuaUub-LWJ>$R*hDPX+@Ijo%((5TkeQ@%QbVvo0iI{tOUuCmA%%*g)n z2M6-481*p931(#@y5g~PY;Wyu?2eo5zLb5i^~tOiy9~Kgf$vH$53L@^J*AD&etrJ{ z3PW~`4HQ=mA`@2&N??A&YAY96m3>1{>zN5EFL84-c`qYxzm)f@5#Pps>-$$SvxaQ>tfRRioI|l6Fn@ehxT2KobpHTr zVaEKALMlbNBxfIpu3aXXTjY>n{{RUlr%g@J;lLx+O;58m_L?0ax-Hj}>S;yU9=NO+ z^(1fNBkNWc=#|KBJ!*LYOxPDh_cZmqJDHhr{{U2jueVyU_Ma>TRt!&OYOkjp>6WUw-{q$u^NqCWVpkd0nD!uq5;!1ssUw_4 zoy#KR{+U19S!i~j_@Zf$O=~6-ojz!2Po-sv;dTPld zCz5dddjpSJjbu{gO8mau^HK#^*|6#{)8*oaK556u7@l_Vnp+f_ak%0Lgf`Z71BM-k z)2&Sxn`*3CixJQ`#}!?tlGXO`NaJ!G9DX!ScC(^}SH^R+wny@%VWvywIahFYmM4zc zsmC+#jHUudcQWz_qRa>bCwLVxp-Kr76{{UtA{(RDUZijMY)Hj{mL0~_K z@%dtx`${#9L&75mByCWCl~sztq$3h}SRZwdU#X~WZ5?h4F^np4`?J^ldr*>Yi`Bc!|8F3EiiXOeQR00gCFTmq-E_3=+D<;`l(H8*o(Ek8Be5CUuZfM59 z2*EuVk;tl25d3A7b^!2y3W>EfkSd>j#Zw*s04hkOLm|WN1CXP&7O-k&}udjNB>m+#aJRida~xGPfZ5bAd>AxW$qt<&R!T9fcA&WC+>Dasf2e zfHSt%EB?sll5pX^U|44vQTk9ZvmlTzz>AE7o-`nsYo`9}%OPK+|Rv6&%(ACY%z&79?91zs^-hdDRk%739wa1~~Ml#i-jpR$F5kJa5i%_+qo$ zV`Z;W%R<=9P!^c{{R|j)uDFK))hgRGTUXUG@Rndn^7!@JoK&B0!eyXBJxBiluliPGamc^Cg7j?ZmdfMm zFlzJ=+})r7Vw__q%8^O>;)ascY28?qNgJySWq;W`{-T{4NBk~N)L{K8li5mHRTQkF zCu<(RLr5M}aI--1u%0_Y+x*nj6Ri+Tk;KLxv>WBPmpEha%VQ{1m ztvoBQFCbz%Fz5|KihDAX?rpW4v9Kg;BaXSvBSj(%m0~;Lc&xO%Xq15DFSj)!YBNT| z87uwtI4A2$%(Uawx|dl8Y@~twEV&<-Z>>mY5@2Tl_CcDV_WiHYH)b3pi;VvOpRF;k z-c!=^{M!4*m)_S620CihOUxZ3029sd9d zQj;n9)G73&;oM4ZbX`qFko>YTljv&HSIZ-Bl~zJ~ugXv5#bq-H8|U1OjDo{}X{T`m z1stAtC-_wICbTJ3ms6k@F~9uuQPi-($MiI!=gS9V(Z~-4T}qn3TZ0(K&ChO})bUEK zk2RTC{{VWk_Fc_=p{!?SC-+RGalRQc2jD7LZsu`e?MHiCKsfttZHi8JPg zjs0s7d4QF~5Zj*IQ9xREFg=;H(P=~BmiI=&cW^~GRC zdc1>zdluk*Ggg-NNN}zhKpZeXDf(iuaIvDPb8qpuM>&;{fwNrs7wg|;MT#(o#P@qzgsxGljGln_c zgXvkq=x3;<^TF>&D4ff!CI=0Vr8mxXZb`xXYN(hD{M4Rs_a22#DCI?S7k<(Q-^l$b z!r>U4o`VCPYM-76`I(sdwKL2Oj3_@&De{k)(GCe1Zaw-_ns-bN-MGlCrgt3)$m0O@ zrAx^Wb|ib!aVbd}WuuT}CdNLUKPrYu{I&-f1O8ekTCMip%%eH{Dn+?QUcG(lY{KQ3 z^+r#Zf101&af+Th$Yvo!Y$y0%r{P&`9$0i?>U#ck;vz-m2_5i1tzRiBa=xaX5DrTr z9*2Ye6bYPr4_wx461WEvI)l?VVT!Shz-064DL9wTTo(?<2e0W)GZ_1xed|1ujhqGp z`@9-ekbp>HeTd}JP(jXUEzw-$^ZwB5Pf0=JBd%*KOv3{|k6}t~cKzT!y(wE!^O|Mf zc1Ak&%~)C8FjcbM)bIskeV`wiaf90xBHWz)AKs^Ve^n(+F!DU7siruLK{M z;;fsqY{w*qayo;LPAZm|OjcIKBq4-r^6lfGscr$1KpH{4Z~-6>eweSSYu;zYN8v@- zCyXmQE&~kYIpox6-hIGW*aAjQ`mG$&f)L7%xau1}rC5gD{!_;%(v_MmS&~bHI}%Nq z9FfjyC`%ak?pIad0nk#*Z7R9>^MQlZAHu6V5(xr~s{x)!$G=(yCuU3^a{yQZf4kgN ztg8?hB=-lNY5}?w62`-Jer|amm$gbISLM)PgYzr(`h!wbZMj{;JB)8`xd(&qQlyBu zM&5)T4l`3dvP{PT5l3*qlT>Djpurj3Iu*u8)K#lJ$eMejQOr_zF(VxO&CeAaqsj^* zRxVCDgP+E$Ti;-;a{S<(%*OkzvEfT@1a^*797bOpCU6m4i$zm zR%Do4Mm*S^02m`Ak@TwORk@GOG6nQ(fA#62_vI?m47WqT$@i%=PRiZJ8Ia1`WZjd1 zt>5q!DoQQ65(Hzwz#00~X>hE0d^tD+J?UjraVFOoVtM)UN8wc6*)BFiSi4Dt#JT4r zbrmA4o5Gd>zVN{9{VF*WLfeBdPT&u_nzd=NR$!C8x{MK(&IhlxGchu`3%OW!EHFs_ z01VVO6YaSH0aPTM4^!HkIcAWk9&dfw0DB(C-lO^X00GH3Eu7M5sOU({6lGU&>Kl-M z3L==idsq-KPC>;$rcAET3O68k9@L*~DBBpasW~ZvaqCLO+??>BhC2suTCnoPG)e~5 z#(52bYP!OW$Cv=>O(u3_5aDh zhjAw)gTbSCNjjDo##c0%NPLoQA%Mz`y~s4NP7B}=q@TPvrg`XC4WM9jYI>Obrc<;A z8Qe3+=}b&VReZ-HhF#euMn77KtYMQS8IuQ)+~TAvVNyVjSkEKo{*>_|?NcJISn>(v zem<1>iL&fblF`u#QX2#eFIt4|Ooqyl)K-L&D8nmb*~cH9SG$1B$$%qnj87vSx>Hi_ zCk-?p^GzOO6U{>FBzfMaXgJ&l2kA-`oxgV+j6KIcrB>!imIRo^S+&$28C0L00r`}k zqtdhG4-4&)85zju1SXdNxTy(*yTKUh^_Z6Fgq$+ZoR(8oW<`pa$cawnL*~LR~=IQfrtq~_2jw>)< zNZWV2IA4BhbAFd766RS34p(CCBlA5eC^)@!E81QnitPDJ$K^u#3e-4#xB{0s`(jaCy!z%oz z^!%$fntGO`r5y^Q`WYiBI8e?oUNyl#g)OzL=zQyWqjvu4u?O-vs5KWB^0N7V@F&PW zO0K$rLK#p=&nn0KSoRI;vT%Bo>OV@yl{cz2moj|U(A<`BCfO~5&aeKm5CarF z`2MvTT)`;X5PPJfBC!ZdHd*02Ksno-AJ46A%&DxvE@3S#!VJl`mIM8uKb=ICnW~-L ztX8O?ZWIB(SK$Vw0GmifNN^zN62Wp4uwR#$cTLp8K&pk#s{0&Ft6^({B9=Ksm zMlWMdXKhOvl;dkMfIjIt6zJ|=Gl97erf@4hE9Q^oZc?oMp;!=9uss*GDM6veaglXz zV~`&)I(l`f1c|#SagWcfINYA3qh$X8 z5CXD;ynK}o4?>3(GS47fr^?v>0G5OL(QR}NWN0nSa^xvtjCFjBQzUt<&KPA+LsU!0 zIVZ^rARMTEGwoJwZuSkLR*mt>%rl?I6z#3YbV#=)z)_Ybu^Fj^#gp$x8STd0(`CP! zJQapF_Ys4UP_^{8B>adJ^xGH*^rdTuGB3o^$JSuTdJOPtb-IEuJi(7vPAdtV7dbvr z9YN@7XqRzgxR3T*pT>nvJ;m*<(9@ECn=wpKblWh%{Q6Xa_Gk$b!5oXzIP3U|&$TQv z3YNzQ2N?R+gfgY5!m|6J`AI+2Q{+)r1vd2V?F>q(?FCT+>` z5uQQlM>K*{lY?39dWuv^-dWBFZ}G<;jXAD%o;e4co}Zm($ZK@=Fa4;F^zn09t8xu5 z+B4pcLEW03ccIUModx*bWyJX{7D z&OPYlA2o}m$pGPq=}K4=!+>+til(!S=Q%#Pqs+nSk6(J8Q0FgsYMGZg z%_+DzBOumlxjg6c=}!}F9eVWUpDHhz7fY+)=VAAySwe75N2;EcP*0xuqs;?7zLatg zoW3P>IabK@#W(FFH$o4uHBWkxjDD3ON&uzGhs}M9%R7GwRzB4D?v8Ll7_8mOPX`92 zS&HxvwH$>hBj&iTk~>RviGzOWGIPdu(hHz|^EvDWc&w{4i#R=zf0ayMAXnA$qR7JcCIphhzD-dNP7jWGKGazhq|v0htGjJ%ga?36PsXk^{%Vktv&Ov% z&j;GE@azB!fz*-OwC%0oF`t=-1C?wOT=RX6q0ILlr)#)k;E|pesQ&;ylp@6Mf*We` z2~tKW9VVLroRByU0I1#>EynQ97aW2=!m?WKZ*oPI{b?>Rqo4nIG_t*{7u!hS>d zcZ}}z?Nk*cwvm~JQ1S}#nwlscMa*xtq&z9-kEST-8=4+nlaDmph757WcJB10d7y`C zh}<&`p+V?B59?V-vcn?A<&N$$atQj>vQ;EjA&?RQ3Nlai#ZyY;^cvH~2Ki!to8=@9 z{S8%?Laab18Oa&wD(&ou0FW`4ar?yWKTc`{vPqob(SDsX?@IR`f=VTf4U9I9c_00H zVUkvG3I^J6Nb6HcWFd!ln!9tJ2O$3dg+&s9)Ax>WcIOpI*j6l|6FREL&N6b?{{THI z8^Wrfh}dv5o;mOMR4$1mo6Br)cnUvCSrC#V+(tRwoa6i|M|%j-qabBwQQ3z$K9uN- z1t*77&u#@CXh6C8WN}OvF=qs+IL3ElH7wCF?8W|W81++;$K_5562KVbMt{PEK8U zs3nP{iPOykY3CdgDWn(ZTM;hY?p!e3aB>gQkgSnL00U{`imw~Jx)8Z4KZU+veukvA z)I`wAvZt5G+R8J}p{cdXM6qs>Lodq1xaomN(z9Tz50qm)Nc?Imc}#8@T;yjs{{ZXM zttnZ=isC>P;-s2>;O-Px%(31Db1RBecB!!AN+CjlRg=?tT<$*B*bJYHR{{Tvw zY|R0IvE{hu0Br}>sYr(e_eMO>v>OW*D#Igbrf)f`t)qzn^5!QTVaF%wgG`@Bo;3{@ z@A%0Gyn*ZQO-(Z^HLEM`r!0V=3@~%otwA($K*UIlgmLo>Q+&^UJw;vn2^!JrA~^Qo z6u`pdfIghnxGt?PSS{x0+yWL+^AE?G$c0ki1s^P($>@FQ^VnQl#w99VBhp0WYF(Jq zXqw^ztL8@DWJKgJJ^qzy2RE^(Hv%aWjjTr_+Ok$g!36itDZXfP(+ApyoRzL9%a&J2 z>7Fvmu-zEd+wbqjCuDI(t@oy}YmTZblr2=zgB{ z1-0br%^AzYPB3}L(DwRL!e$nE04fr_RjQJg8<3I1ZJTN}#@g__<&6w28Q zhowVdaJJ8rkQnlDSErgAhFM`_9J%M5(A#i?1X4Y|~kYeMbDr)z$hyv3yW$z>T_ z`u_l&(?*>%3mnnS8%EzSkz3_B^fjL(X7VxfCj93skIJOc^+nTWds!nMNhC74+@$-C z+4U51SX|L^_l;Qo({KYs!c}ijI6qoK)5kBBb8jM$dW1ZTdQ#k5+U)-TMP`WgDzBV( zaiq`ah{bNtFYYpO&_pZ-GbKhVE0EjKb1p0gt4JzSHR$b$rS=# z+%{6}6odC%bz0Jb_2Y>Qax9=9x_QUrN4+01*RyK-Gdd|kU`PobpiugQMUkH}Jn@l& z1!zmDz{`u9HvsjK4?kR0LtzE%Mq3Mka6$R4J4g%(tiN5#4_7 zRapB59AxLMNhCKGrvvwcJTdKAi7Gqcqd-Sc1zv|#+M!hLUYzw6o4VN-3EuZ)(oGb+ zKgivUEH_d@!9xa4hB-z-_XeUjO(FTB3@IaZ-Ve;D(2Rm9U%D>ovru2ek>*HVGt($~ zestgMDYufhG0KE=nK=XcR(;LPN`Z2~c17nN;2tUn+A!sjyteGaJpTZJq@vKAyBpH# zdyqB7qLjxBr;n~`dwFb*)`++`!3=Om6@V`;pa7w5ho~F_^&JgMY|&lr4uS*JGMtS4 z4PP#oWGS0h5Vg=ICKn96?P0aYragZO%983sAz2FsJmyYuPLE5um@&7UN;+)^2leCf zH4(a+0%E$0cn6hb!TkEwD580qB^Lr!3eGnBim-3vj@(8;cOQ2iobj4$b`f0wVKNSR zLIET3?@AU=TO$VGP#)b)g{0Z1)46(qiG+f6>`ae%(l`32UyzxueLgV zRRk8+uhsm~=&gqQu~IyGd{O|DO9YAi@z?aFD>b2TPjgP%@*Tq^k-5&&3ZGnqPL}DT zB24)i<1hCK_s&ISTv|NJ3=*rB=)c~mV7r{1tR&mcQtM%nnYmf z0y_*FqZ)GF!<4l;z1_=>q^k~lIT#?g$U08ij)a@#_$ zt;=B=RT4zO)3>EJ&2?fkoOKmd?T_`iAn=ave8QQD?a<=hmx zwjM5UdS<0r!&M=Y*jz9@2sG08&p5?O1lfGZJ*j-m4h}0n&Lh1&EpIaZXl7I4+})dZ0-IB=z(^(t$SKxy2SM zn7-1GM*!lLE)F^pKiNJ102-pVdwP$id(?|?hwlvMu%~MWF?A;dgTmnB(27{(T;Mi- zrl^NfFpSHC(D6=Y+k$w_0nA?Wa5JCQoF*f#D?iQPeq66gkVrZCw|zOMVO^KJ?9z#A zKh0C$^~F1P9sdA2n+4f_&8Mux6`Up@ikHvhs1$41IhlCK4{`a@@6UhMsCn7%ntI4{ z)|H3M&zmh<{T3nq!v6pvQ)k|vW2IcZtS-nRk7AJWFaV4SzZQoVCGS*b+8mTT!H zB%bHW#+D}lng^H45!{F59GPEA8BpfETiq3gzepNOgW zwi-!lNb?aZD0eUF8vu%qNtxM3&G_l;DrK3M1jZZDfZ) z(`b+|OE6-r3my~$gNlsHJ*UdfNXN{yvCLTfq=GOB=tV0{BjjY@@)R-0<4=9e z3!gJAjFGl7rN?i^tc#av%gC5)a?6fBhOy^>vnJd*JYb$d{3>`sk1RJQ1QL3F9<>rn zqbe#bE;O(Rkv@7Y`crF7MPyn1 z^l@%Ul##)SyAMDrHrp!m5LO+~VErlx@wjc9%tO;XszkU{EP_RK1mu4g=TUKwXagww z%D{Z3usP^(YBjfb##m$#fq}+p%G=|2Mj6IgLBRIlQEPTpu+C5eoP*C!{?waju2l4T z4p)n4RYnB$9;ec)w2Le4^2qlCr`E1aBa`nP!H*k2$Zw@VERjJWjb0+hkQ`u-%e`qA zebA*FA|0~z0N@Uzj%n#5lqA03ao?f*O)+&pCHA|R`VUY)3YqmKbjrH)!60LI;Zq)8-!(`bRsR6gqjo0*WAZgYrAb39drG%N&tG~}2_o%McsarDJu4Y` z8Ya=Fc^QIi1qulHLh*`h3n3@Um*>WCTkDX0s*^E76fWR7&T~(>xqq?|ZW>2CZ6hQe z;QESbG_)IOh?87jGZ^D85Mh}{N7IU1d+m-8u|Nhe!z13S2`}N2KPWnZ(`uE^wP>@? zcw5Z3T%Y;p*0g#pOrv)6W3HGh2aVC=CjcJ9>rF}aug(J}L5|g3l`X*q%7fdt)1^yn zu*gA-oy>Scz^t_BZ?94QVghho6!a^eDqD!%86G*esmIHnbNvM*Y=ZG4ctmb`5=p4_ zSG%&FIQ*i^oE9Ia=|p$4A;qtG7CzZDt^}hba(4{p)}y-7miRojav+lg`C#B5rg4g` z1^jSMkAsd4Oo<9nEFn4Hz$4|LS*wNv2$UV3t(4L*E zptN*_W`&_w-i292yz|_8)@*l;G;R|ragrT|LGRM6M|rtkDVk;k5gdzvRG#>$ZQo&8 zbUDV%5;8EsQbrAFK(?1r0fvf0)aQ@G+K4n*UN;g>Or&lS9)qqj4_y6e8^g1#WyQ=a zs(BIQ5$88Ldxwp@9X$h zJ4j<X ztg6Fz28?lqG#`IZ3CndQC3s%Jc>vV9qm~p&wdp#1q&|OF*onoVw&3 zXQ8UgbtF+3(pQatx(+c@*=m#8D@VLb101w+43Dq3T9GE6nxjV6@ve(a2FRxa4Fivn z!0x`EN__f}ksc;rCUKlPHwLTPMQ3ou$L?RLjgJH9Yg#9>+!TSx$!zisWb}HYWv^2% z);pV!(cA{|$QX7Uj%n>}4Yk2&9Dpnr}oqqT^j^HZU@~M{@}4=0+br#N$7$IvZ={MbKE^uehGZO<5nV0dLeDfS+fpCp#ZwIuX=18Eb-h6N;3(`h`^O>J>( ze8!FA1C99U_=>$At{q9(rOCq)^8R%y-@>i~Owh696*(BG=91kOp$D;;mo2-33m>LW zy=Yq*E)};U0y;7rXV}%p)E*c~OFL`G&viRmvrfCGx+^ue+2kB%KA`)Gi8n2gaZ!ua zmSUAunC1#wpjmj&~ zljL#Hw&t&r`w*mDeOe%)OlBZ>J9D5LA4 zI(l6~7^97n1M&cH7<<#(VLPqOp{|*fKsi}tgMZ5cOA@UdnWYAIU7j&)1#jf1$lhP+l9j~A4B~r zt)oFOK5#AsF)FEf1K>D3rI|R%|f*d(mVUZ&X~C+DHcVh_DdoFSoyA82d+-uI5ehN6OP{1O=QU=H#qJo zMA`MKvLw=i<=KD<$RDSzIamhjHxA9kXL+MP#q|dmrQQY(?sJk)BlGK7^0le5nWK_i zZQ$;co4teRw&VIEmKBaS9ndNn02?TWq9Exhq z=uhXGl@dH3kT7HXMDb9(AzO^a?8hR6ku04Yws1#JdO}xt-nl-Foc?u8xklr!_m{0s zFGPqEcXN-rRA=)U{c8DGU6%aw_e_i%oOz48kF7My{mPTn6m0SI>rs8QTO35|G9G!z z$K%1IZ9&|RncYuA%}&gX#`-YUW@#nDQFta#~wN46=cb@H+mmxF**XCA!MrI%|G zr>9fMOLE8vjb1!`(m1PTWVn&k z4<&%cHe{d5m+gL9?Gc90V!pWPNuyOIeaee+vOp9>L2Trq>+Mxod2*_Rkz4N`F;=9z zSmqHlZbm>k?fHtaELO=Lc9YeI%mF>Qq^;Ofytb8sm!YTLScte znIwvIX&OexH4LsYz?0Y0J*kjdjo_4Jes-4xV0~#0Nwk6D#Cc?4-EcA+@uo)JY_8ja zgZF_w2dA*B62!{szIfLp0!sjMPr0|YU=kTjxySEwjGAuDgzQ!iAY+07^b5u*oJ!?^ z3d6Akao(g@1P;rLmpKgF9CP{7Tq%obK%*dJat%X@HH`Va(LZs#7Th`LgB($^+F~-! z#QGlf69RF9ySf6$AJT^`9ICj_d@v;XeJKxeWnKU*pbzg353#8hNLo|@HXeg5!1c{j zYpDw|Is(9Qe(Cq;y-95$E%#P7BMM0eiftscGq=23nnsL`vl2+?IRmX%l3?HxL~b}g zFF*dONv3&nSdTNg9S7m`sTw0RI8o*S$?8Zx)Sk%Hs3l)8uO}RU7o|#XLV(gEu<4Zp zII65Afw@(2yP>OAf;Et^7(z3UeK`CpM;PwWlIB_tvD6@nN8KLsC0R{G$Y7LH}~8{4`5 zbo*P@XUc|D?8(#`$2?~%zfQ(`IUqHw zpxR9eR-0ETNvO{x%7E@5JTdAK5sSgH0D1Z{uZD#{@QEHkk!qGh0Q@}j0a6OMvR+e#VHszJnh2=KnF!mtUC8hi^v$zDXKPqSQ z2!v~-dkXP8|l%qatiW7_Z9S+NDsCTId&+~0O9Q%F(vGpAaf3(MN*8Xe- zaD20d2h{r0^y2Fo{nJVaz-;hGxT`;Jy+y%?a_|NTEyt&7N!mt|e9KcV(?_;TwtIr@ zZ`ET52RR%XuXI~Rz5UFAqH&cYuHQr3HK#GSxr#%EX|PJ~2LSq$>(;qz$X6XlT#riHpTw4z(VsrT6DBatw*-1}DJLlC^#nB8SR&8K4f3qJ*vv; zi13AV+D8Nd)Y4i{q_+LY>AUWMA^A_Y{{UXCMd7n}8LcjanB&Wl2qbe#11m=&cLd`Y{XOcu+9kv}4UNihP<0gRYk48sjXXdRfQ07* z--?fQmbsSX@s%aYS2~{{UJFZR0F`K~mJ>k@-Gsa$$eC#{_;K)~AXYi5pzT zamfd-;Au40)+E3$J5cwtmMp``XD6Po+J!;&xe{F-T zEswjC$o~KerqBo+hE*N#8yFt6bKMV-t!`K{0KY34p(Bqoh907&OVlV7tA@t_;N$3O zg2=J(tffy}uQ;Z)!epr|a(eX{{*^q5>TAzssb))<-#%nphxeDLsUl}&Axw7|?B@;i z_o}g8tbZ)4@*X;j8XU=B43LuXpW%L@i&$LAmqwv#NLgW;HvseZj((l0OGzP*E?rDs z{E{m)>haxTIqjBEJr2@8;8gPjHz}KWSv?j^aDKH)&qj%E{$}~sEfOM#!bpkxjo5k$ zsC8I;!tult&^gX?Se`*g0!*O(7a1e-6@J#rHpiJ00sZ01x6}Ustwxb1?Uu#ymA`o& z7!Cq)f&P0{n@v92>6Kipdxy)qO}zbjeicyL+Cu6Kj}wFP`NM^cq&yMVai9&6Q)3)v>^nBadP!pKVZ}$^thfcg70m*CU$FhTO5)CDBp$KxP^C zt3PCM9@Q^AT?+x6e_D$!IX`pb39DsMy#vZPc>m}t$uTBapXQad7DZ902+c_ zQ8Hq^iAV?ibYLq3>yGs)E8QEpSz6=)@HilSDc*4v6obo*I=aab=^~y!htShQgY~Lr zMTMW9O-i#0qE0C{ZfhpW@HWSWArAV^w z`=N2{Fhx~KRT)ai%6&k^D1F54!S%-(r)C#Lkv?(HUjDT4C?l;`Zz@G4NsaOMTcP}a z#+koi$MWWvD9I34%X|7#`K=NnPl95q64X&ap6LN5*&uc6j<#n|S8(+$*yN9F+$@kgD)o#^)|p z9^f8MD$H{Wc>e%(GYovkgO#b-6t(C<_F3YPymOTddbjlktXxMevMVBqnDg@FF=GA&e>D9G|5!d2B;0(looJ_Xj*2{{UKaz`B#>f=?u8 zwP*;^Qr=@l*n(7@-oHw%c8_cqVnw$lfKiXry%$$0-7Sc%-(wTKTW3T(=k%!_X{U{L zH@5uBR2b9F4>M>3X0<#_w2owBw;x zJu1u-ODX{B7;-@e9C{j(OSO_T-4`ly8*hJlfr<>YYRWw~59LkCJ;BATQ6;aIq^rfX z$2cUM;-qP#l&LV|{jHpSH3SnyGdnvKVd_Z9_NJq|OjUOCTQM2y7aJxQfC*od~-i82X_ zvp8|ogVY~Ry?&IjM=Wyiio-c1fzCd)xpfVsQ$F-418`zeJvsEnSc1tsq?$0Tk!0l3f8wL_$8No_lPigJI8sOmd?YpT`!F$KttV!S>| z0>q5q@HsyHc&={m!uJ+{qLBH=&WAm{KU%odgVCAJ6Hh}zT~;^d5W|h7urZ$a#X}wB zw$3-icAj?wk&mTgN}}FCsO6U#!R&j2D^Ax@jyFi(~uF1Du+Lv|@_w8!ibOK|B#$ zi`{lw9hyD$DBk#L?#@xS=ZpS&4gmZrtapzDm{xWE6U}Q!JeDqzINqaz0nJTwqFUdV zmfBWFa86iY6ZEZ>M)aAC=_jlV6L4fK;FSZZJwCO2PS$6RQY3b0h`7D!~y z&R2q`rAr0iV9d%3=Ylw=B&4=6Q*n3dY~Mj9qX1>wyzmPiewnBq=J!jsNM|MDBPuhH zN2N(^yr6hUWha!!9DQo-;-%%IhXv6|KQ9CyrD1McCUxCST@~%DV7=RkV?!ng5=aIQ zrYerHrA=z&l?;I3?CGA_to2uB8&u@-4h>B;%%#GT+>Ua3*FujjspxaLDMhI*O&v03 ziAZMHpbk2d{?|2D^(Ttw%}vEV@)bOK(;-Xit*U|9PdHxnZLD=T@}?$=FmPOtm)js?K}E^VGEiF7|Jh94>E+pk*A zn@6_u@{CXcjjGrmtz}MWT{Bv-l&vH-JwjH1EU)J67{eZaI&YsLQWzE8^7GtQV`=vh z+%#x~%Krcm>GjP@e$l74`4BR&!O7e|`qizMLmRcaE?e0lM~pB=3$-)&N3)z?n>qAYuj4R5tvBH&I+g?sP*est!BN3 zPn4JE=E=vWf9X{0HARv@3rMndJF~_r+}AQn!^(jq+PjX^gZS1BwJS5Va=U$?t}rbOk(0M$ zb5~8JmE>gv`$_7I3D3XQwN)*$F!oMP$mjmhgb|&-r@dIU)F-l$Wwo87Zoy76JqW2~ z@Z9CtK*=^a9N?e8)?~2BYa=VER$i*ZrCO4njLKBy4bj@zc(yy3h?tvurQw_J2K+Hp zbqjc|Uwm`M`^h1f0RAJjb3SLB19$ZFrtHDsnvZ1_@RqAf?HwhR#pS$2tgO)~#^}y= z{{V$u8kl&2xmfNYC+`&ue-8D^TinfOlNlWS;a2SRSjZ`H5pP4BjQ;>mC~!4Z@1>1( zv$LJX*^Q)!fU=CC^dR*gh^7lW`(4YlT*c2QL;nE!t1|3ct4B0a$h&edTPKeBtI%p~ zWYM~|%Op{k)qY~mc<1%)RK!v#FT5c= z7!Y&xHJ)!}xZd&xB=W=@cc!3iz^P)rKsBtmdmSHIJ(K6nJ%?TE(< z#&ge>cpuKH$E=fVu`v@y2h1Cj*SDoPwaYn^%a+|0MsdLoqp<{a{AqhP(0sO5}6obSyvqQ?V4`up%HyhrfY~l)*!fE&VKUe*S%P4kt{>b#?GV_ z93Rg;>pnZU=MNN($umJq;-!^}(fL zlP|`=$%S>}kV(a8eV!Z@#ByoA>ROeL zIJZ?@J`)?^wl5g=?^V`zNePg%Dd#K2XlbDRiC9U7*r2K80ggM>SyD~ge3bxkjCJ+n z(!0~urg?v5BwC8%8>>)&%8VEm-P7?D*(Q?I6-k2ta!0S$s`-kAgTuGf^Hv1vV+_E7 z_jx@%DKt`7*^Es?Fyd8E2OHxZY3fAZG)ze&oPF>9ziMHM5~QST8#&12XZg}vmyT9! z>;tLY{b^a+=%vh^nP5#S5;}r1K_92qqY@byB&?%nO!LR5N`>Q!P##GghI?>F`Sqw_ zg#_g7lpei4>)X*^{6C6Csy+TIo%rd_QhBh%l2hmn@0)* z5Kld;GIg2(hja=~L1UcKj;wQ5S1gNkj#3#}v)>r2P{84VjhOetfJv;&d#O>;#z;8i z@GDtfL2k?f?Lr%2!RkNy^x9@|ao)wdNpKVq_Gv)oLBJm7i>ZJpo0AGSc!>eeJ!w@0 zkqzpo-IZGh(D90mErsKlm}m0&?5)KpSx(nfZx z1qF5xi`uWxqdd_Vw}C3~qydhZ>s;N;EonQ#*mqOOQ^Br?IL||xr!*bxY+GJ=uE~~s z0CHOZjE*t*)`LlDJ+m?*q@}v64Ds(=pPj}!=A@3`#-jvt)E<>nqu5catGU@}{vwjl zs%;GxaH_|SpGviFtHfENkbuq9ag6>|%h+nmVK^faIbLzkZuNHaR!I)_Tq}A2LY}=y zu3u$oTA9%3IC#b9)Q%09hEE$$Y2c$!w`qkB(-8#yoDFYbY zjQ$>#Wp9}s(|Qc>Lkyhb(wdZ_$&_OybD2Rb3hc`24`K+({A%^Cvm^lTh)L70PsXR~< zRb=)$o>oAhk&LbZ{cD=l?AFHQM;IkX0g3BdGig?ScvxnA-mYphrAU#t&E|8CK_q@c zx#H9%xzkb-sU1~}crK*0L?MRKa2G#c@vW;pN;{-anS{CdvGVroRVBBFV2O~I&ur&E zPU57r(;}ZfUJ;X)-rRwoL0d`2Xu>j;H)D40DH0S}VIy*kFiu#1U(8oLx3R}Jmg|yv z80Y-=tCv@Ib_@iA%#W(bxIg~B)qrP9%eIiFGtS7{9Qx9y2KBj9pIw=(-XVKA6h@J3 zCoHU|5qKT5qkaZJIMMP=!OjQ%x;aRcrpTuJhRNa`xIx{JU> zpn>>v{OVk9v2m%(@f+SqMa~N<_4$YAOK+{&!s};u2)VX=hh*T4^go4XrNO&|IgJJf z4qKtBCs6w()2pCkoIVe4V~R=+PTfkB)NO5xy5EN<(&Txq!_Q#ver=` z$m{7{c8%h#tOu4Ri>AVIK>TYv#aZAIB$Aaf z6debr<5Ej_q5ghGcw^OSJ)DiBQZ~80F*5*spwHO0HxI_2ZK_Wa0PG0lA24n|%CVu< zMY}GSZpAGPJL>UBZG_+_3moa(VU?umXhJ&Km+YiK?l&)q`i(*Q!iem<2kA~5l;es z_7+88Fw8NUfn2L_20CJdlXgRHQD(iqu-1;j0BBfXqm1+FJt}!GQgA%AFYHH8VOU~O z^v68Z_Sb$}Wezyx9`rceBPLjDfhJkA6AnSo_|lu3t8su!Dd<7Ss{;DoW9GalB;XS3 z!S(6wRodh%pCW`f&d_)@7PmuG*K%03M|_s~7-x~iJZiGU!GMlVGqr|AMz0*CmWYPx zLY@cH{{XK_MY9vLe(uQJG5jhWyBaIK*={TATZA}-M$N-Vo)6QSa=XES0tm65bBxw* zErftNNgIRr*QP3UQ|1PaK`If+Q;ho3NYdR4%oH{YT?b#U=Tb!^H-s&~SjZeR zkLy)pypRCVzp+v}`_;EtuAu57aJj}alj}LX zqmNOS$!MhIx`M}#^Yp7nd|>WYWE>M2<$n)KY@SWQK1`~PdNU7{{e39rLiTT=R$W3l z7>k$#XZV+o)~;H-5TV$(d}niKAbxz+N0>|X zq#XWqpOZ9=-$Ks&dx^$d>=$Dg-hNVkwLR=oI|aRo;+yzp19CX`BC6b4u>mAz80f@h zPtf+L>~%@>zulysZMfjZd}`i*u>-q3Y{{aGBEcZl_OiS6qeLHGVnr! zl|Mt;q8Bzd&BJ|`e*3r}`e(n=ndaST$g z54&=c6(Fk~NFt&Vbj4eHDK4N^k;j?_Fvs+)*ZE1~kZ^sf`VlMNQrMFsmwpKAk;tln zh^GlT=ZX>)%VCaxtuF9tu$P=uyudrtuw0wJ6z%0jLLVZG_a};x-o=%hr94aTRKpKb zOT6cbX#!>8C%s7&{#%B?$mfxeexkF)q|}03^`_OwbB@z)5v^fmUBwY|_zq1=e9@ta zpapT=x$V-aX^Z99#xek){#;r$gN6aMpFC!W6Tgh_CwsI!jIN24B8M0G2Kg23T z`^}BMQygt4f%w#>-{;x6e9hPZf_GB+Y=wetWzSE$gZ>mbt&k|a*$Se7dva5(@R=b<*;1x0QB^!_m;(OAX2IO(nDv{f-1ZI z?5@-ddEJ0bSX;LP4lsb^b53a^l47M8kGe?d`BADIqO>ALF_6xU9(f@~a62DrWbCTp zNerNJSOP^_^EWaD0GxcoxH#jE)g9a{%pDVUc`Cg0q^*5PmD(E-B^11XFRpn8trUUb z8{M6{kCf)KOcIj2k6e7%>MG=BXjNA`hoCw9Fe>JwrG*JdvZf5K33bO)*XU{~Ez#AC zWk@GGNX|Z$USjBgfG|h!o}Z;j0?cB_f}n}QO!$L`1ZHFI0kKeh}7u#$DHO#ZNAsIhVLttRr{ZJKT1fo$?Xv4SC40_dmg^EF{jD! zF*=c&{o&8)(93glQB<)Ylb%1%TD>LAw$lJtV=f2H*B+vqVIhuLZlrLMNc)e=&>nM+ zo&Nwz*3=>z_L=5F6kJ5xLjkano`;-bwv?UJWwDGR+HE~T9cBsUjwbm*1O_F-Rw z(uC26fkN^3Mo2%_v#oS_ywWElaOY}rPwQ9FrM1JO6bf;kg->e6T1(t!^zP$nqP>$O zC8CjoWaAjBSEpsr_xsP_);?4?@gZYpCy>ja)lZ^A+8gO<8jw_~g<2d`r zEjqKL^gS~BLh$#C8DzGVEH0)PW<$e2xc>kO#qlSD=7t!=QK*n$qYgJOzi&$9qn+d1 zwaj=q80>v(xY9gF1^tpoJG4^{9Fvee{{UL#aGe#Sx;m9wc#RsfIC$;ugt!qq5s`v8 zrExvD21r;ZKyYwPb{d2zvJ>V4xa6QC1E@JCjMQ*R7Tu5YAi#Aawt9-SRrNFWQCcIF zjl`G=a(ya$k2O_9fT%t5!LEW^4LxMYj45n_RFS~$F~wHC(w=)+7ToS-0I7OCq7?{#inB{pbnf@Mb8J~w<|aQk$~Ld~eQDc-t%PL~9zg@A zwR4vGypcErv0b}P4?kajrCu7W5#_hY*~ShzsFgW%Hibw%Zfl9IVPcYCf!Gdx{prji zRWA&zyz`Jr`eLB7)@y6z+E-C*DqK3fi)XBq8FEvdYT z@?BgHlX%Go)A1Rqw##>CBD$jm-Im&TBDS(?o2itXz8Nc{K20*_IefN+)iW#3Ix=Lw zz;84b$i_h<6yQ+@n2bR^^PKVRRhdB~o_m^Xc|gNIDHtG()8rqtk!^K}Qv(aRd!E&D z+f-IKn5<;lV`LOGCGu4wyaum9J%gAD6mFJk-z3H*@;`04mAT<(4Fr$?|;MLe5jevELTn;$vQO=R-Am!K1A1>@+zZ%Wj`kTIKYMCTf z>oWO>;!)Eo*yHI_Ul4wQd$DgOhR`Z4h>svdMAmZcveDw@}BdzG*?{+N%e^>rWDXbPY1W$7%t^ zL?q+VmxInopm#XSHj>`nCLDl^jCJW#vmL~{yCV^hY4++~#@v|Hjfw#SuN5NA`?9+c zOK?K*pZ>jVD>rs?MLtxBKuHh)#T*lYPg6?;$!5WSpX>IrLN0jMck)c$zHX zhdh(O6rH*jp1O>cafK?YySQ#eGGtv-&$iyzvRl5>{NHFO{U06*riWhpkpKaDmAw@F{yABnBiDABaE7) z$Z^+F2@6HFl59BSf#2wAXs$q$nRe~u5(i&TO0WC523dn+Cn!4OwLu`p8v|x}Wp3SZ zkH(rw?hW$nU6Jl4cVo5F9R>wKYVrvWA9RkO;~u>~3ZGBAPqdiS?{K-sa0j5P*E4x6 zHU&;LkPlPoQ7Kv3qN5&dQJo};Bv%ZoPw?dN_;jmL-7IQ1Kbf@r*w0UXJ!+M}R*=5m zBmt6Fxb_~kOUo)5w}%GHNuv`Or2JB3ye?c9gv`HoNF^reazBxX@F z0{oCpKQGR)Qt^^gx!rl|82+_94=YM!d0BSycY(X>nmHeGx#Hf&jrN}voGkLl%t-+p zH*Ry9q$0O~jnfxU-+gj8`cvk)OPg)JYAy%d#t-98h}%fG@)3?OLvw@eOI5iRPgKd^ z)#HJ@n1eE7gV5tVdm6ObnzUq;Av)u!`s4c6YPv@vtdRVN?&F`rtQ(jjJRowQgMfHF zdQ>>w+|^1+7n19FQ5*rrM{MWUHDdZ0^$R(z<;A&>;Z);+!Q!%^zVjWK72_miI`M!< zG@sfM#OL>>NK>&RBl_Z!z5UXhlV0)8Uf9iLbnr;0c=Q074IJkzEbN?2@Qw z8(*j-W3SSymHSRxAZ2n!?xwo^qe{%;_A$PU%=?)xuF%i9+Ii_}Bu0&(^0~$wt;` z4^Nbl)Kt)DlCu!(iooMwIsJN3HjykXxyX%B2Kml7^cAJz^hP|j7ra)!xHmI-j5je{ zXT53Zk^^q4q$3bP+Ix=w0FHet8_p9uHbz0_t!eYDZrMM0WEJD}s&QPlCKA=Q%@=!z zZb6WDQJyN@y^A)}<+8>(8=D~U{(UO6I@z`*xOM5ZyZ$wH+r{xli@G*LfIoMPb?y&Z z<&&CLM^!&&o~+civ9b<&IJZOT zAo*LLUf-2ok6f9p2%aNzY{wZ<%ICl7T$1*&YDZf3GEO!)1rC{pP*vmkNN%J2@m4J_ z9tS%l05KWpN91c?UDDybK{cUfoHo`BKJdo}r?p^N=~oxGokuXjeE_3y& zc2_TLAS;qd$okd}5u9%pZwixytt4I5ZKl$0V-bTE>@u(b6OP8U^luj`KH1}q#DJ`U z*M=R(>q&7mej?M|HVEz``GLnI`d2VRD>|I1&Is;3sl_Ua&va9pr7mdf&D+li+uX=* zY$ibye9Ie?mCtO}6!vplGc2){WjN`<{A*vs*X9Q?5;k@R09QqGq}l557Fj~c(2dPcaq-Vh@2RIr1KDDIY8jjvz^ISZs*J>#Qk4*Nh z1=KAe9$ZNhMiZkhbN(i`b#&0@RBZJs$9iXs#K&nLb86rb?nhdJ;@;=WI8DQ@bDn<+ z)VIE|C~|hO{ujVg^{o&r9x!AEE!?S(r{Xisb2_}QRCKCJOLLWt<&zQ0F@b>Dz!c|_ zXc)Q|kyU>8V14~-c553KQsU&J5(q8)L(`8+yJ4ciaB=5GQy66@p!764s_IrMG+eYy z<}Cb6ab|$1Qp5PMf@;mip{HtNboTKfB%R8oNGIHN{A)tz;mbweIgaMt)DCw5NMZG=jHy)CF3g!myfm7+H*NeeW2p_cH-P(Yh3742LSf^!is#ruc$eoxggVr@yGKnB1gJ6Ulhg;FN4*@HCU@ zk?K&(CBKqoi@{sW`5cwhKV=ywAayktAwy@5qn;|}r)?}YZaagy zf#HYv)+d>j198CU4{Gd&s_5jOxceFlGbzY##8cwbCx!B|Fz42@QbzL?atJkGWMega zsqT!^Y2N2mr1+`TJgE-nJ&!~5^sa#(E41AU?lQ28YZR zz*9f9X0w%W&Imcm@tWsU-&S;Ur>aK4vy?XI)ysEWfCXy7dk|kN0J8nuk&KV!ShoHo z7jKEi;{O0HNcn|Wd$?pms;*Rzyu4$Mc%;sQ{{TJd)88Q-T_arJ&; zkl)%)z|9&0-zflN^{dcJr@DDJKuH+ruB0&f9^ai(oT0v@x-qG?haMP_obyU|WaQwE zIj-t6r0gGONCrOc;qwkL$?sLB((Nyt?|92&BWc**ojBqy?P4Al%SLhJ=Yl^v70hf( ze58(j{ss=CbZzzLnz$2W$ZxwF+|(8h?w%8lD^ZV*zBt#twbOYP9xumf|ad12-V9G7VCbLVg&WA2TG~%7P8rl>1O61~-EJ3aHpc@h z=b`o{l2Ka=ns4Go@3!0Al6D1ba#?z}L!5@`2pL08>(6cUuBe0stktbg%xIge8@TNzvx}US(LL>u>mBSCH?@$~2 z=p6j)!~4W@Op{iQ@qoOHNw8yne|SEP-|?X-eXT-HDc%|~V{9e{YjzJA<&>VD*s8I` z9IRDk5w}1b9<`@sV`SKt()<~*pDK0Qet`5ew^~TOKQ7x_qsWRwg=&1(9H8E&Z172L z!DLdo=zAZfFg6Z99x7QL?@W-}-A2ok%u6sp7?wGQK&cIqrXWKZU2y**?ERa}!mVky{XJ8N=$ zh<7ejB7u(FRrqxj+R7mjg20UMDVCDJx_mecNks*A@%KeGTZkWF@{cW$K*?{RtzNC8 z1pU;)SxwV0jmsXG!0J7HI@EilQc3p)@=z-*F7r~d$|qLN%>Y*}3ORtMM68pdhO zq^hyYv($t7Q{>c)suDIbNw+yCmB({a$l}daSj$FTXuR@DDUH+_6P!SDD{aUhry%%~XTwmAO)>rzNkvsx7FciXYS9OD4@t$S@jWmj2d z^4y%ApktxyS*;e>oM$CZ2e&=_sm3zmG%l*(9AxJ|ja026)0CoU$9iFri9Tv)>-khy zFUOdRu;BIRed-j1#>W#nxF?VUALmO2`@Un9yzG3SF*y~QPCFX8H+0!9nG;Chv5e=9 z#9)tJX_MMWpt|-vXRCchLnYWul?D=YvyRx~zc58wLY{PB`?%4?-25Uxiu4uI3RJ1vW=cXJEu z4uyf{HUk9J*=2&~WRa^x(}wD z+ctz>$c!z_XU;`A=z9T76M-O+#u#=*=lNCUm>A4~@s4%@f!B^|CRpTBK`71h0^DHI zQZ2^IMqRdnW`~S}oM*2X`g-=K9Wv8-ZROaGiazQ3W~tcT%BmytGUuTH;PKL%CEFW- zSw=@k1HYwUxvuVOrIB(NMTCSSgBxcnoMYeGmf)m?f~se(-r30K+Nnt~D)KZt3imt; ziakg$C4+3q!5D03*ZI@r*63NG z=ab5T*m~A}GB~U7$0f{4pfmCO3Q4Z#eutKlzM;)186yKHwMPUJ2}&?0wma6fg@ZK1 z1zEF<5;&-o(nZ3Xy{uN6>S-Dv?YUwfD9`6x786Mt?3a2*dIjVBiqeMPPl*7#fR*7`a8G=GHH8JN znsgzRgN%~QFhM8Ry>uF`r4)9ANIaP%POJ*YN zjSra04!dc|Nt5 zs%SS5?~xKl=amcF*WR&w(ts3WjEoR#w9&j>6!wBE?7WIT@jbnIb^2EgMJigyRC*Mu zLbBzajN(k{tW@PlF^sS*@6JBOgp;iv-V!xhAZNqXmZ1g``ol@dZjt`W`Pa}r^06D2Y zvyo&~^9rfz2PUq|q|C5@#Ffv>&tFW^pDyBpl4O>5(?cLw<<3S+0#&PVwHY-#Zz6N& z5T|I6;r)Jwx%+)L=h{4_ez+~(wC*$;`+I2TL$P|W9R5|yK349JLYtCWrgJ)-liFPn z%duPT`c*)7kZ>|N2D*ElJnE4J^8t~0$>5J~r@dod=yz5heiHHHi6i-x{x#JKv1-qA zf~_e<-Y7-Xm?D5kKgIt5)~lLMyDT?Lmny*U+_Z6oen1yhLKP`dX7VvTP{VR?Y6&)7Gbg0V_t31;LFu=*|YTQg4 zhdW$#73i_(8apP*KFI9Z`9TQ7+v;mKRQP)m+R1TYJDs>9H#r|n*6SAsxy>vcRIeRQ zHM85AmJ4aFq*>(K<;bQ%{2-2h3V-(8GL{mV82mI<83 z*vR}va>Yr%c6N4gHbKgkT-_N?fj`?zd$xf zg^#stlUta%C$Z6KdbD>rX`&3oV};9S=~7WfWTj)?t{xMo$)r&0NHTF_o9$F^8wyM&Ls z)Pel#BJ%O23i2xCjljlsmi)WbYkSwq$qb?*1_JUxsFZoN>Nrc0vv%u5wZDtZv0)R1 z$VNH;0QHK)nn|rgK{6CL=))v_bu@aEuFS#qNT>c;j8);QJE>VOE+sj5-^)9zEaD~~ zd0dbPsnsp7h64+0f_cX%-(EjaSevpr;P=fqNrTkWbk(#Hn)^u7ni(|vrAvj$&PET) z-I?7=&9F!z)ABTFz zacy$k>4Q=CqO>}RZA$#<^Qq))Z=a{~ta&DqD~2&MaJ@Ht-^-fD8oktN%F>nEc}B?m z>clgp-U*Wqyp6{g`cx`Xj^#?MXQI%&-d)3x%2oaQ)YkDvhYKkV20;FGNPPGhX3r;Q zBBV%OP*ojU9N?a6TzWG|%KEZ-knhmvPGZNW?C^RFj7P016=n zwPjSPB)LYJ0d^o@XP`X|F8U^m_djTiFpT}}-@<>x-k}fgTO3Z;xnMU+cx+W+CVlC5 zVt}z{eJEf>SKo?olZvYpnMY1+*hX7($+32I>5OC8(%MEGN(yX~JBV@sKI1*=f?7&a z-Lg*PPy%3ajybDuZzavZXH$j7N)C!WeS21oEm@3Tx{1q1qD|6ejxgN{{eN19OIEf5 z;5bD*EPHT$$S18@vVkOJ-l(y!A2RdP>F-l&+EnqDV8x=5cZJ=7kEVUISg9uYO`L45 zWSeibF`6~=Wi8YmNj&uawA-yWVJngx9yc#T?@n|Pz^ty!NdOSsApmx!G;47i38Vm~ zGZ}B1wQa=7B>hZ@ZCNwD$spi1eX3X%C|Kn=$5Y5PeYEJO0a4k&I2qs%e{N`9E=CLy zl|b%3Z^JbGqGZO5?(`szKvv&fCKIo!W4f5NX7Yj!GQ!3X$x&%I8m z5`|?0c7AO2B>T{&lPi;(t%{qr*#KfYM^?@%6=s@f+5S||8%IjHdd53)s><=_sO?p3 z7@LIs=D-0U<2d%Kx@zp_mHF(AU$w>NpWkLDQIWSCh*z|6gw2Z8D-A~l(||JE4D`~8D$0dar{f)+LktRCL>&qzhCQGf>80c_=1kv z$0wSvX<}MX=r^z)@iE@hGp1J0# z4JC6a##4SpNFZ{2!SY9+m2;9k>cH^r*1Ip7XN?Yag>J*PYH6m9F&K|88RQVd<l7%cM@cbmJPCCIu@_J~Df^)Ql}AgtI&Jh)u0ck@Dgij} zU2dDJ!!tB*x!`Q?*uOCM`qwjkVfJgsV2to@I4m)d=}}Ikr+7@dv{WrRXJv8znhf^i z4B>eZa^G6y_3t*?@B*z4_1rQ$R_>Fmv9}0_w*2-01JnNity6e|LH^aY6UN|9gCPmv z`wy*h#%`TXS!{LGhqa}6ZgJmjl*Fhu{JdusHKwN|H&IB;Olp4V#xQ!-Yuib5=ko3l z#(LzO=kXj>DK7T?-kzuYE7Wj|mWPecIK6i|j}u;7J)CZeQb!wcyFdQA%CXaKC4ev+ z6FA(*8){7{MDoWq+^7H>RyhH{9=}@ZE!sI2MNP7@58{(+F!mkml2Z0dl^wB)uO%rv z5m?zg@v0d?W+Mzn26_Jg3VxyC$yI#l*(2kS0MFMILgxLf%ao8qo)`w>BCK0$Q%h*e zBWJ4u2SfG8`NebEqIX*zywt7BBRWkU;I_i0%JLW2+*FBUa3l<5b>}64&1gY;Hb=@s zsK{aWze=k${{WW9a>yCmzZ~|hdFAk z$7j^!_Hu2wt%)JMl*#_EuR<_!TRMKV1ggn$o3YgTj)2!3mtOJ-zAP;PkNoR3jiHu|Kw0f=Sk&wsD!RmQ14!lB7cyKqkx zRyN>!Q>PT8%E+BWJC9niADudxk-hfk`U=KWl$Dv$O0=V@X7$C@s<)VA45y(3X~)u^7l0lTgpo18A$|=-{Dd9c+06$#7;XMjC!q{tHQ|2c`E1m z9z{hxR^DQbfaC@_&s-YPgHCA%UTh9=$m83sN~ECf*{8RaMWQTA ztH$M8HS(J$aQ+s@daWj}aTG&ifzLtGtgeQUK*gBLllQ>|ez?!`rb(rl)r2Gv4it|5 z$KQimMl|I0Gnchn6lB!h-5icoVY$w0XG8H#)tb9`xdZP;=W?*`!S9OaCWYXYk%vwV zA_4)*k_U0xw4EqTc^Jm6NJ#7N?`*Y_E)oG75slC(1P?=4x`vs~ zYfF$K=OgA_++)_dCz>0OSWHd;`Pg&%RtjFrMX}b}#76IPi}K8pa6VyLQCgMTx<8bT zer|{V0Iyc=w5ATysa9t0rzDD}Z*g%1th+-ho=bl(>s#}4tqxCQ;VVeD9+H?OMo@O{ zLGcnI4to`en+9gYrL;;{; z(GH4(r?pp>RAp%+J4%d|KPgk{DNOQN$ab*WMhc$)0OM8WM!90@xCC+qZk5)o##88x z$YD#nWd%NbXL24J+;*fycoSrd+d$zqfKT+Sn+xf*hxyRF41Q!Mq4m$LZ-E}8ZX~yw zSd^cblaRmRSiWdKBY3#a)Wf|$XS&L6T#Ss>yInxtu!=|8-I#H^>sP1JM7G{rGRQ&7 zy5l(Z>z}1_*LITHHXIT=9CiNyKi0KQH5HpNoFz%~Esd#>WN#`&`G+20?mKZ(SV=CO zE5$ft3w1o>9glj&hUtp!b|iKunzv=F$#46oCRj)C=cm*BDrBW?0yB-v*ZNyU``A^U z7Rkux6`oiD+PV!t#J143z`J8T8UFx;`}C={+05rXDN;s(!!J;C&q|T)n%;JXf85AFyf~{dX;Mt#1hKAh%QsK)t(>Bktmfpq zv2qt%t72mcWmU*b;1k?YY_0OjkK~Mfz<_0lwnU??{u5BX@VhWvViR42Q& ze7Z(h^edj9*0bf29hIVHNe39o$@a}FPF-w6loQ(K++GVygmD(55j>R+F_HBD01C{z z(RB?KmUoSoCBRvuIb3~vel(*{k%+>Gyy});^?vx@%ZY`>Pnv9J(iRq&JdT$=m>WR~>&k)wk3wr3kl3VqAZ$ zKzQ`y{3|UrSy7M})xwNym*&np^T?^>xPti((qnQmRE~$()qGo`Ao*3(H01KLjoy4` zx#pvGSeG!$z?1wOipYlQdw-BSC>(+PYhK-?Wd`AVvUv_T1XMWNW@{O#=#_{hyC?T^ zs3?Byods0=?W^Dtr?@uD)ijG!CCD(#_gU(G_w$oN@10yLtHm-jX+fPC9_YEDzLGy+=caW#4Lk&nI|gI1GQ;J-&vqttD7)(U`PAlC6Wt_pXNCed(V$ zBni+zBzxrbtZH3LnkP*rrxzI`o1WflNqo7{qjA~0(|6{!Ze_OA$cpMiZ6ahOB`LT)0r2*(PGkWV0B0!3SjX0k)&s)pLbfsBvqRZ=Od zij_|0t=-F8%y;5d#xle1@x@WRxGr8r-Id_?Ak}HL86^XX9~yMIYC>t*^es&ckvg9#l#m8T83MFoj5I+;cMOto`5YQeGGTf#Az>pN zgVcl1deFX!W3$*53;zHMV<+(Ej`hmrsz-e&-tBB)f&}168$6!fs=-tevUw5$oPacctfTO`@a+D}tjO)V}06p40$xT>5QnjJFPBgyjA zCso>WR1)`OksdbSU=BGRwQ+BLaPh7QAP@k<3Wv^gMbmpB4w(#Y+=2+)M$!v=0ZVSN zAOuFGy5XuhZ!pBM3)^WNkH(~mc+7cl&C{HLnp%V9PQxxC+{@)DIq13L++(dUIJRNQ zMj(QOd;KcFxKPuRfJq$(U-7Kl`>l*K_ld~cj30VxE?QWJB@=erP=H3N(WHks!zeuF ztR|o>X2=nwWS$CR2DrJT3hH8F2r9T}(XtqhFlj73w_~0! zndptl^|FuVBL@U^J^j6FHeF&_LBI)~>%pos%(*SV&p4|=q=ZwgUcoU^YcTWhJL zQmo|tPHI^1ULXQ61p0AQR&`;+4@^{oHr>w$^{phXtY;SQp|Nd?iI*}2Z0+ZU6|4P< zV8N0|-9hDn0QBklS2r!|BhIAbrK>cfuP<;-_RHuJ=YHh`7Bu%*q zaKouN>+MoWrXwH?F3gO8dB?qH+syZ2gk_ny+8ux%xUDODsiYoIl%%Sla8EexT+-%- zw>=oB$r!q=y4%~li0dkj3j_M&HHDp|9Q`@2pInMrN%M-XN8UUUoOP~h_SLN110u<| zWHR(Wop#Z8icIqH5VY=WSlvpJBf#X!R|S+{)$5Dtu2=~JNW^4sJrA$avuqMsEQ366 zh|WDfI&`-YsxIYLMI3YU4{C`<^3c{3_jM+YX&_)0Fc1=cQJ#H23hKN$tC?-cRr(IO z&Oa~yy>e@NY9Pui%v@&?zCipcID9}Y?m&fJFk3iRBag-6YD8g>#i7xUVOTgi?*`kQ)VhS9NEuVSsNkILmN1a1C-77T;*Ux{+KEHN1C&Uvnv zMZH~0&&p?EJbe`Mr;krw^v@I7CB>*?x9uoDg>m&2lcGgFn<<_|U0Tkzm2H~d%H?yl)k2bS(SZCp zt^)r6L%!1PB#q&H(f#I(WD)D1O1Y%!_ZF`kBdNj08`C}i01E7Mj}pZc*p}a*?nc~n z{Jyn{m0UZw#EzDz;5h1oR0&uN`Q~axy zlfm;w%obo!a!%fr(@woP?5uKB!p<7*jPSq%+NQU;F&qK_Z(iA{&X&+JqsSv+##_Bd zJ&QuDPYl1pd;Kd;WhJ9AX~pVqY1*QfiaAIHxaXB8-Hc_pd*9 z%7KCC4|>vvP`ZZQcOsM=0Nv}Jr5>rB6sxV7($8_G70fZDas|iAy-&aAR3z0Qh43+h z)k@j z9Bf^qZJ^^MS1}F7)?5%a^lV`LezksWNu-5X<%#)7^r!5{^^Rjz&AzBvB>AN3tT=C= zILGHzXCGwTn>GSEbinjAl+%@B6m9M?(yzs;h@&j~TRnFSoYitzN~CAH)RiwIb}6xA z1Y;~Z`*Bi19E*a5dhm0RSP)#ZNrRu5@yANL_P35Qf!Kd{xXnwari_@?SJc&(=4kR( zEIOZ<mflh*Sy-cw&PP~Z+8T!!C?u%oM>CSfYbN)1=Xz0yk`IX|z zQQygL!k^vbk&e}N%I&3)9pq!G-~is)tlOx(nM$5UKKHE<%JGf}$Dtfn&No^d@s_%q zcbanEx0@RU$oY}RF-?Zl*c=$+W$%%iOHD!>r3o(G%s>sEbLdZ}H0gGrDmSW*GyUJC zb33QX&ZML9L?*nol?u)`D|3#YOjcI;bZen34opqXJx8bi0A8h@(Oyuh!NU%q<0h$1 z0f+@7E87RB;axDabVn^#-o1^Ouc5odsP2;IE}-KF+mGv3r*x7v^9R}^Vb#9(*V?&W zRP`h2-n6anl~fXd5%-vL_~M-D+f)#$q`l&`^_jAhj$wXPy}kYFzHm=-TOvsSE}>pF z>yAg`P~B+HBtB#*v5!Dc%ESC=#%XB6RIl$u%~E=PHG5Cgn$Bfy#2(D2AAzAX8}>kc z%-u7OU!_BLrq5@z%7rpNDz>9FX3XN{2Xnc$xwG*UD;>rRh`%h&)DP=f`i_q#oX*PP zNPr|@^sYiHnJvEIJaRMZT|S-S87?CUakfwfGTleF6~j6*r0%sxp-#Oz%F!_s4UUQ`#X)@dhmZbZPkmecdp3?I0O9gS0J}Uh&8;h$sRcyvO)TF6#oD@f|e=Y zB&%{ctlYVDH&Ij7nT-_QP%j=c{A0aB(n$mFCDD41{;{oZG;iFGv}dX0)KlBM!I_pd z+%b&fkELj&wvi5>Sh5>^Lu7!)raOb(PF24OwGWkW?%8Wuy5U9#;tgdTK4`fJPjF8J zR-Lt@NeCAaox`2o$JU}sAr{-SB%4c1l_o}w9DmDX$o$7~S$DQK8g!pI2OMuhkZVj@ zy_w#31;z`n-9LpoDMByJvS?2^BN(ZSoL6*Pq@MaSF5ciuQaJ!T{H)!N*0*B07W_UX zPP-%pj(vzCtAA%&&mby|8lHE9(EU1MtXydK7WVBVa>q1XHYSQ zcVaM8AHc^TdeB5Sk^qtqGrG5bp{&b{nHUAw!>Bbiwu66p3do7MPa`e)Pl-Cg!B0tA+&VE zFUZ_yCl#VZjhJ&N|Yzwb0myeLmd% z+$vy$v~=m8rDk3DQakBhadO#gvo746@kvc{H6rIqQG%2=Ictmgu3eb1P)`6Jm0zn2 z)`i}KcV@2b7%?CO$PdfUy-~(%wOZO9WYm+ijY~EAJ+kEOByKqGQmyN64!{CEMQ01A zY;Qa9z$djy6v9W^rzf`^Yd0RIs$CJarQew6Q;daNVTtGbIIEINaKx};p!C{zWAm&r z8^Ft!R4j5be@fo4^5@fEc~zX`E)ObuAJEq<;;+qPwv4^ju4LccGcu+XWX4+uny!vv z;fF2GJ-zDp*$a#_zTa(hsJW z1V5uMObX63yiDMnsW>1U3eZP*&s4f>A zQ(@gOB|dN}+%_!oWwEhFPI`M)xg=+1#@kvw$-n?}$vp)@etyF|kp|r3p{v@Cr}ij> zP%;PauyDSIHGs~}cN3iRpIVrv-O84V!j{S8T2$WRSc^ZGqrJpRNm?3R>;XGJG0Pw zRYiT=ZT6)O219imitmLp&Yf9FXliNKCNLC%$-r*;_Nz@{<`tGT0g1^_4l6rNw36!M zXeXbTe7qk~U4D_E%P>klW>PUEY#CX7c&udBu^?qZBMvqmLw{OPe93Z} zPAZi3=ykeH)H7`5O5gu z91isR>vAQzx5%6lN)R!X>s)-ilW6aAg-S`uT&D$rh@U)80_Hnp3 zAzP^)wN@=#`!S>_Jfg=V3!lS2mDk#MfoDKvRT<!GVxW?fe^(b%&_aD}|EqhIU zJ5ievm4%p;Jw`sYC8X#sSId+UzzjZI^W5VfopoYH5G0bHIw?Nzd<=2d9qJQwWqyXz zwk9b((ZIz!M<6-cbN9I8(AK)%$cUk~gM+ol3<0Kiioy$hvp{jq)=jv_rYk1eV(qhd zTyhB+HP)J|6(i1V(vykXXnNoX@wA!9=RN(s>g~>|$slFJ1Hj`W9eMOM#KUf_vCP{^ z@**qPayk5K4*tqm z0A_rk8QM?Y9^CU{&b+O%E>NO*MdDOx74iO6fX!Y zo`FHfwR3um5zT7T%^!*c>0OD#Au3LJ@-j%M4}+YzI6BJ;%LQ)F4vLEPN?B{63wkHM5)|vng1+cl>cw z)Ly8@@{6+}xVLLr85nfvLE!xP&Z@fQk0c(s?}|e2Xv8R7R@%(6d6w)E_a3aHBzqiw6;04FFCHYx z$>*PXW5nzMW4E4A$LCevX)WBiV*dc`RS0F<^KRU~UX{^l{zQQc@QFq_Xnyu939enu>A!6Evlh!+ zk8U0y#P!Dj{Y_{wu^|fwjk@)~$?aLMZ>N<$O34eh3hyTa+tRBx*q4)lI-GmoJ%Ou7PnztPfs7Y<&fI`cxaOyiSw)0JDkO+{mFf8U zeJT{Y3n7(dWKPkMoxhD`d0%6pDtx*!gBOzQM>-2zvA}Y;SNis=si@r9oq;5Waruf4 z8~*^U^`yDg((NKyWOija1=p4K6!Uu{#!yHmQ^8`qkMK2ZwnTYjdp$@_u8SK9k!2X< zo(JKIi5e?{UJfPef@&#jp}5Y;1agDG>H1Z1V=|ONg-&uAPg>F{7Tm&el)4vI{%Bk* z!yuduqoJ#*Y_6N2ZKtUmpXXQ%w>o^DWQs}?m+znOttGyAVn#*GL%2OX>A2hBAx*7b zg~-CRSe_r01C`I~^rj6mb=`4bOCtQm0UL+^02M&g(m;xFAnUohgY>H#$`3Lp2aNo! zj05OvFL^x;(~OZ#Z{xV#72IH)@<#{j(x~5AeU$Hw#IPQWqo=W}mlDBv%$EquB8&$O z&*R566}7Cxdqf2BV;LR3qqS=pHK~l(K+!LulTWpdFznj^anNV!Rub8;%NQX^!l^m@ z$m!a-3w=SPYha^<3P=Y9v5MFK0EC(TRE{unl2o2o9cfgg`MHqkVj|$9BWqUCn)^!o zIR|k0k+YB(b?evDn&c$#oc7k!%{fNm?X!Q@ObcMKk~NrvZ z9WkfXvmRXn_Uc!TG%XrubMywN-DvY$OtC03vkp~9O6gx%kVvGTzmP(3SMlh6l*x5j ziE_#|u*XhKXs0AZsMD66N|st`Sz0fe#h9G1P;k6@)k~?`+0`wJ$mAX{eq7e1I=7Zs z$+#h05->RLR&6CixvkD zbuNbu?xOb>@yhDUkKK>}J+t1Rw$rv;fd!c{fOt`WbMITav5toq)x#^gMe|6FnjauT`ir=AHcE0&RI5e9r}+<)xmLV zG{3n_WaG+|?&G)X&2l=jPh++;V$)YVt5mjoE7>A`2;>iL)kI1&jO5p-Yn};@RiDq; z(MSMNB0Ll9G4ELyUkhdz4$$2v*?`@b2YB@a3h$?jq~f`qndMc%S5kbc=;77*$@{(W zL6dR7z#i4yY2OVd`&bte7ggkh;4t+Dwx#f9m1QeQX|#X=K4gUc2aj60V(Dy%h6c2? zYR8?!q|Gni{nmX&J@h$O3XZZ!NgGE@4*9Oqp{2DpA1U5*P6Vffa3 z*T&ssg;|S?uvaAHQrP&GUoa%R#@WEg#(&7AIaQLnW{`y%Z08?6#lfBm;I734 z?FXRsr|Ei|TNOz;g-^@@>M`$Hy55@ik*vGqE;2x2oO^qIHHvihw>Knb}&dd$oCxdK9rM^>S@Ut?2cKj94TKY zDh`D5Pqk}l5Zy-^R^86bRUcz3oerg^NvPOQ5-eVFDfvkN@#*jWHNg&F(2v%;>pO{Oj9d~oj1u_I;`hC}k_(;rIN)8t)V!dRw2vLNc~@~QOpuRW(0q@IVT zet7cRQ*9`kn*kE`+_SATeWLv13epV-1MyY zW@sc?P~fjm{=IhcMyzx^y$dF2|)gDvZsZ)UFv@2tYg@L8wLSmNM>! zMp8KhlapI9Tw2X2k8@khMnNmj=~(*QEpNjPOK`w&N4M!+5NW*anuh= zQKae5O_--!+Ee$p8=*>~@RnWJQ^4)-T9aww;mcdL{{ZhVL;nERu6scQ?7q3HZD7SnIL2~){l+UjB=aLl zBUS{Hf?qfvPg=Dfh)uGnN8QfScJuny4N1GBt}Yz5Wk-rzN!{{s)05YyTDTqV6-ZUv z&>RjwDsAQ8+Sz6PCh4&;kD&Cber(V-iY#!K$FL zKRFGY5W=<~zJ1|_7!&u0U&gG-Vz=r^g#&_qWjJttg!5M#miJi_r+r{hvb)N@;xXKc zy%IdzHn@2Eu`kryX@7kEat~U`d_0MXVVKTn$*axW24r!(k`A|;f895ki)e$S$SS>oR17RHP z=Rbu^Qb`q9unW5fpXb`CDVhfPKnwlj=~kBV<)dbhs;C^U(s=cyuR*6Bk}F)=ZBRtT zamL2#KhL#iEbkU$cWr~92dAZL{gO+y43D?z&V9v0b)vak;N?#wclwIbGKzL)a;G)$ zn9bKGzj~V9c_3vOV5hOIMYAa%&lc-&0NlKvYF3T~OavhG0Jj@)jf zc*?7?;Eo9&;Zj^$L#dGE(Hst2W(hw30OM3HAXyiK@{hVtBk57Zj#vi_0ON3_XuVK# zJ*BZb_bUrA+B%Fy0Erv4GOmXaVL*O1v-vuPlauCb4^b^2?0i9 z$KLg;>vWMRaQG|E2N?WnH{T`-&l{20cgL+H-%+?Fvl1OaK=S8Jr1!=RNhBp?GTKVP z)1h7u<^KTdrmvHEwkF%Vu0iSVQk_0qY!I)tzUx0jN=+h^U98Ru+>sc;+mVC$R-TVw z_c9U`06OmJk7}03NQw(}k<`mB6^0ulk=$0rxQ$!|5yKcfg(n}cO6;jpHnKeWRHb#y zRW}Tbu{x9kI4hHkdgiRd1Q6nL0hADMakWXMm6Po!Ym0%LZeL$&y#?U~S@w<(Z0G4* zZcm}=K}ObNE_}CyeVj4K&fZ5pnW~01hE*uRSFw?^j+J8J43jLeIFdD7;YZ`o=lWC= z87>fnU~mb-fx*ueDZP=Tqo*@8t#s>~mv(E2hJJ69h2yqOShax`W)CC9g&^~g+z$21 ziKIs{d3$7j4oK6sN%F1AI-QNQ3KY9IAeUA@ zczzx06`)7o5|%J11YvSO^e3^dzf)h4jIl)`c0tvL;aGCd3P&Vq5yu3_+>m;GD@s*T zM>Tpkkwz^xB=SwVD=#cZ1@Y=f<5yyUN*wMXnR0jWyN^#?9@R~*128cmw|=A#ly~Dk zwQk3=L zUtg_iy|YCKF3R!|o;c5MsiEaYwoTEJQ;p=~k7J7GRZ-RKbmckOp`D0x7C<;8k&piX zT}f%DG}4IVU8;Qn&VQ|FUhT3xM&SU?(wzN&8j{dELL_+>C(i8Pk_K=;3fVbHT*=dn zSzbL1Kx9C>n>pt@aoifeBiT%t#@v*s94h{mfIoPKVMp}KZwPwzEB&Z0~t=-*E_08(astv zk)qq2q2uzbX1|%-4djlVxy5Vj9G0guuNrR1?Qc9oK1&9FlyIcuBiw(5XFrH%o&`pc z^VFy~8209|#nCv8h82%Me((PPTCL3r!zcyVpaFT~Z~5Y?G$S3+GQ>IRnQGTnxQgj^ zx}C%VLFcEhRS4jG$i`IULk_*COi z7k*co!x%h+#!s>It}Uc#5#3mz&N_X6ttG6|$n1|Pk$}h@J!?r}p}I1TF});p`l4-y zNh3n>kVfDR)#uPwWvuaCxkqMZKPemyywrBL(@Spg1`ZgLgX`L|Ofn>@&yvb|4Ddh3 zrVzU2Wx3i)aaT7lwBNKwLP({DBxjZUJt~p37XJVvITB$E_@}R3J40iEIW@(V~Wz!ZIe$#+7z^dlyBn4 zhqvonekpZnp+HGsGD#TEHI9yBl~|~39PKBH>!Q8GhYPK-jP%z{1p@l-8DPTWW%2jx4uQ|@dQ<srCHot@Vw&LeDb+ChTqlAo6+itW_yva*D%w&px8HCr>?c(truh zbNP?+>s;=iE4)s{TiPdcBIemLHlN+E_m5xxwOqB-B^wwL%)JTZ4!+;cs9Z*|$Rj6s z$RM%p+xpY2=GglIW{mTL#t*Tsmaerpxveb@s>fSd;@dViu*P%kj-RbmlTd3J$_aeU zt-y1PgZFftSm{!bDR)zc>JnM(2}aiO9@Kj7!}X#;~5=pyqtXv*3~@LRzw8! zDfo2h&1c67bS5?;2e zr*3VgMF(*M=3$D?apankHm4}g4wUyeo}Ia=ZQY}A>6K+U7&zvmbuqgFFmiLn8@)O9 zuR!uGW_DUmuNCA*29cItK2yg(=hCggX)G5DJVBU$dLBakYlV(xf>7gwp5B$v*=h!L z*&L;19ORs5uOF9s;HgKI-a8(Z97AiCdzQRu9GBLx+`Lh&(Kgu`4+rqBJ(!$lkHWjj z9d2!17zs-P9Y!)eYlpdrLvZR2aBvT(t+3DBw_^-cV&~3{4F^?|PP|dO_bz^A>}z8F z7^Naqc4a)bKX*RetCZ?GX0~*_Sz?c6%QisjJC91bkV*3`#ZIzIl0_{=9vhIrFi<{C z!}P00L8#lLZ^XbHbKb4YVZDpxUEmyr4evynV#YkkcZm9hDMMX!7O>tP-|jz`yw{y{n+{Oj4-Gt+o;;^$Zq&vs(zKM zX4}-pbmEn-sfe8!loKq!o$jR zY<1_1el=j}@H&TPQ$Bx(j2_%~6+F>gu1j~jCeafTpr-oitNXlD`NUc zt z9Y~h?7h$=I+-_L*5!9=2KT5Qks!YJhtj8U3{&QFo?k%+BXQ3nf`gf?j_J{!Ia_6ZW zkEKhZr0;RYvyP1Foz{4Og^`Ee*tiEZm2qz5xL~skU}1R!>s9UCn9C_*z1WeA`{K2% zuHu~v2H02b@4?UGS@ODjYH!UNy-dqXcxOAKlWP9}v@`fs*tAP|K~W(Dp4rO#{uGzR zp&>*_y}?m}N8{F_O=fFHV7|E^;86Ldz0!GM8Cqz4{{V+2fj@TJ*NkpGefm`h#4PF= zSV^2@9AMV5)u6hB`HWlv_fJvBdV*7@&fA&Oap>sT&;I~l+K5U@Hjw2ACwLBnP!`E0 zyr?9F#tD^3AC5nms?%tYyk((~N0M=qmFeqDmdqH-LvYT$La^yoV!WElQo}eSli&XU z)l`#C@!ZZ*Pu-d-#7(r|N~G*KAoi`e5((mOm83Yxl{&38R>M}8EYA$*osxal^}+4d zr8<1ps-YLmjE*pRRmw@E<+(KA<9lj|XS6Yp%*6Lo{xq=a$pnfeMR@a!=Oi3;6q8=b z8Y;YgSUm_GdsQo`VsW&gMm@%GKD5$InM%&+)spvW7jK;y@Op}v815JQ!x_o`mCspU zy|bJJbncDQ{{XF8kjy0v(8?D*WAx&tRPC_iQZn4K_VJ)1BflplSE%}mj^@QL<0?+c z7aL0qejPa#HJs5VR%R+l;n?I8{S8jgNU;}=RgnSVdKLAkQfB;$O6Z|!qT3jZayj$8 zdK~+9rB4pLFSxlY*b#>OdsK5zBJ(POGx#6JwJ_>Vq^Xnc_r@@5Mb7mxv^HpaSx>oR zRLRe7qqq6RMLbd|5vgF~JY@d>Kk=!B^G4g=LnuFVk-+x#6|<-6CglPcpdr++Bmz!( zSub|#OJo8GBaWX++AyXJJMfh3G%lUg?S0zIf1_i_UP*W3D0C<>hIs%7}DTgd^F%v@(B zc={T%wkXhCTc}*%GUqryTFHWOBjMPPayo7H=ASm8@S*a+Oah=F`uD8dI~%IE+;*p^ zFP{@MJ0w%zkjFgzD{{|Yj9aMSGJ>ZM_kYhd!`*6!dp8m}I3<)5ijgjgLccdo4tURe z{&lRVu3H$>tkn6D+M0XVl6aY2!YE)_ zx8!5`S3eG?GVCA-`Q?UvzosdtRG7&5%I@H=I6sA9?4{Dja<3iQY~7DhwYDygnH0A< zZP*^hpD&2wVghhT>Hr_-p#1BWTN#V1%am5g03Ju-R({SSU^9XD4&o2xny+M&)syY# zYud%Ti~Gr^45aN-^6eXFlHTfh#DOJ|2>FIFk58pi-Yw+;S(G*i+`yim)q799HtfgD zkp?md>5lo$U7U6~d7QeGwTF|+MKK)rlN{r)^c-TSTiMGdBoVgIal0Mst5>&RSe>Af zLBPR3*R^Gvq*cCr+x#WdMg;?{V|yvW;|C07T4J9VgJxp`qw&GK#p z_9nJ&P)iS(Bn^;o6#IUIn&#gr$ERUh!cFdFQYsr7(8y#%h6NWK9)q5v-m&E%OY%15 z&)&uft4sw+Afzc(ZBHDrcViAyLd*dd2+ ztyi-39f*P*c*?F-$1_!C+gU&l~{Hi;-Pm>bFg;kFVqlF~&JBKAR=IT7y=G)s7YrfHPJiw3bbzDcao#8L4(0ZuGG=lt7;`)DZmcW74kq z03y6ExfpcE-8BPQ%CMAmA~bvg&C|br)nOSe(E(7zal!dd*0WuWg64U*$ObZ3uo?V7~#C5)EW+oVmQhJ8h8=(lTg5~3h12+A-mpK(_FN2W_Q zpShK{Me_mI9P&M@&y1Zqwruq!6;hSrwK$?F@TTS%`9SK&praV;(xtb!cnJtcJ#s6) zTAor$=-JccTXY1*8CY|UNcZ+NzO8LE0##fV`^O~U`;OJlY1)^QFYj^Xo(Tsy{3~@L zNS~Bp8w{%e0LE}ldDRn4_2|iRm|i2d5!yV8bIvoIgU{zUBTVs{ZLC2+adcBg( z6UKu)qy3)EZXuI<54;XPG5J;y zZKk$#y;ex@g}EI8Gd)wl%z01as3qG1}6lU&Tv zx40KEDn9QqPs@(u2B)`QD3nw=&jg%j>q~QNrN4HjFaRfmihL84Ay}&nXB|N~^{#f; zL$)xpw24p>Gal&i{C!8gF{3e|V8p1wK48vj(O)$=b@JPj7;GQLtCv7|c8x*#fhCXs z0A8}YX3jR)d=A4Uccysj!1t-eznX*;^Az*I{$zhTjM_&U2i(O^JF$_ELr&i;BY@JO z;eb6q`qV8&s@#RGyuM>rE!_)oP{|TqMX&`|9T*H8)bdK(z}jPG{ubzJ!w6jhn2d6_ zLJkMhnrZU8p)_HUC6oD51M7fzKKxX&UZuS5i?V35!-0Y-^~7RW_Br0Ym@W_DSyS0b z3W7*rPf`7Ac)n$+%{1Wj*xj_%*6ty1Iw4c{Bqs$;QoT_Gin3d?FI~)kk?t!l3y&#| zS90Tw_BFE&`dmk{Rw67678x0-aQ1HK)-(32-g=P7Wdo^rCMzd+o3Qph#Vwk}9E7kK zBaOp>QQm3IYNhw9uij9NpVFwL`y@DQq3561G}fy_HrmmnQr7m~Jy-oKGTUH)Fmbya zWDap!i*={nKvGfr{p2CRQ-Ve@o-vKttZ^DnBl9-pmxJr=PHRI1>xYqtZNq_4B%58$ zVA@xDn|B&sl`Z)JaSDdrGP%N##Eb%Y$Qb--EcJUBe16f=kKcg$0jz; zN2csnCZls=_IHBO7jwL23n|DLJAgg8s?$ZikH`Ve26+T~RSDvj5#|Cw&rXE>YpR_% z?{ki<(9-$YB4H4W?Z)gAyS@f#)!$;;V(R?uH?q{!DbmF=DAF&(Dg_=TO zRbv(o3mlAO9R#`W^X1xGDelb`GEO$f`2-r9iEidqkQZp$;nfbk1zqp`hbQ<-x{S2q6uw>0?m5Tr1**m`auTRlH7UNc#D8j~#U#Y09<$+YlCZYo(L(d52{ zCY43Fgzk}BIeq5@oOANyipG(ZWMz%=fsWJdo+yPV?o{hY$&P4bjAlhfRRauq@!G0M zDw!}O3h*sa}&enn}mI-f~z0|6P|$k^I5m|3bv&pWGD#1-IhIl_@auNBIPEwGa+RRq>;1` zSZ?Yw+O>Y!6wshOrs?GrI2&}ReXVNtxX#CLg{ znRvkK-#NMGBl+~jBq=eD6L@yxs2*cR=HTt(#yE8 z0PqHSRg}6|nmE~!fNYc3^rDKsRAi>(v1N4xSaxm;8Nk{|Ir@53)*=}sZP!SQGlF~j zWYI-qWOXW%Z&A`o6jtCxBrXFMA&v<4$gFM3U74JH4k)6vf-$J>lVg@;VfT~~(B^?U zU~)Hg`cXw|9gcKJx27c_9dYZPp5lvZmV=zD4cYmdG*MVdE0-C&n(Kb^5iph|AYh{~ zKb2S2C5}?NN(l}ZcK#@$v*k(M9e&nLS(Jvz)Hj%?``q#!cXN@&K_Bl90|oadiYTs& zTSRfUcd4^$sz+r4#=8$Yy7e^6%kwt!-ce$5Hl8{5^`eT;k#jRoZ7qhwI4($%HR;2+ zIQmd82!+r}xNL*S#S~EBnj5Pt8AaFo;C%?Imi9h$Ta3|ye}{O@6jjYAtqkctX=-UD zjk-cXmN4V47!Y`<#PLGqRl{^63;-WWD6W1~&gS`cEJr1=%CxI0H$%Jm{$`%BTdY}W zqfyVwvI0#MP~sfT?jwDa74oNuj)h;0Rp=$Mk`@L;M(Ov)Kgpts%1}(!5@@{*#1O{c z=@4yxs_qVdTIGCCVQmG~j1c!}`%hHx&03DYYvW=G7yGm5Pesobn*w**3Jb_q^!y~vn8oQ@7f9n{jAm9cg81KatR7q%3+}Dd$%cwGi7{MF( zBiovoUqX!0`N|G4fWv9^qKfABakC})xa3@BMa_mqOHML z%i2jZLf2PVPs;HCK5Q8V39Fymmae2Dq7&5_fnQwpqKd=WMQU|Mywb5B+HKq}+2PM} z&DZs)h25Hh!Qw{faKQdlQ9`E^UUo_~3rKi*<8^ERaz9WFM{?FAIF9WO7v@qy08(7cU$!eLbliBJqyTd$iu>ibsJ}`Z= zQoZ%ON(A!9EJOZzxF(7#7foF4RUa+c9ppAhrb}C>q==4Dop%bs^5Bl_A#fvZj2K{j zXri@( z*Jn*St}*3F7 zaS&6$`Gzr6uHHLo)=1`z=jR0+aA=~OV2tHbOu27$r|L?4@{n9(?;!vmQfiIl5!$li V;wcfbLn9B%*wIBCsWIO}|JmO9KGFaH literal 0 HcmV?d00001 diff --git a/Develop/DbManager.Desktop/MainWindow.xaml b/Develop/DbManager.Desktop/MainWindow.xaml index 20054e8..8e75594 100644 --- a/Develop/DbManager.Desktop/MainWindow.xaml +++ b/Develop/DbManager.Desktop/MainWindow.xaml @@ -78,6 +78,9 @@ + + + diff --git a/Develop/DbManager.Desktop/Properties/launchSettings.json b/Develop/DbManager.Desktop/Properties/launchSettings.json index e480c59..4cfb86d 100644 --- a/Develop/DbManager.Desktop/Properties/launchSettings.json +++ b/Develop/DbManager.Desktop/Properties/launchSettings.json @@ -2,7 +2,7 @@ "profiles": { "DBInStudio.Desktop": { "commandName": "Executable", - "executablePath": "C:\\Users\\chongdaoyang\\source\\repos\\mars\\Output\\DBInStudio.exe" + "executablePath": "C:\\Users\\cdy81\\source\\repos\\mars\\Output\\DBInStudio.exe" } } } \ No newline at end of file diff --git a/Develop/DbManager.Desktop/Themes/ControlStyle.xaml b/Develop/DbManager.Desktop/Themes/ControlStyle.xaml index b6f5c4d..6e9611d 100644 --- a/Develop/DbManager.Desktop/Themes/ControlStyle.xaml +++ b/Develop/DbManager.Desktop/Themes/ControlStyle.xaml @@ -108,7 +108,7 @@ - + @@ -126,8 +126,10 @@ - + + + @@ -844,4 +846,71 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Develop/DbManager.Desktop/View/ImportModeSelectView.xaml b/Develop/DbManager.Desktop/View/ImportModeSelectView.xaml index ea1fa18..1782444 100644 --- a/Develop/DbManager.Desktop/View/ImportModeSelectView.xaml +++ b/Develop/DbManager.Desktop/View/ImportModeSelectView.xaml @@ -17,79 +17,7 @@ - - - - - - - - - - - - - - + @@ -97,7 +25,7 @@ - + diff --git a/Develop/DbManager.Desktop/View/MarInfoView.xaml b/Develop/DbManager.Desktop/View/MarInfoView.xaml index abc8a0e..2812015 100644 --- a/Develop/DbManager.Desktop/View/MarInfoView.xaml +++ b/Develop/DbManager.Desktop/View/MarInfoView.xaml @@ -4,9 +4,10 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:DBInStudio.Desktop.View" - mc:Ignorable="d" Background="#7F000000" + mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - + + diff --git a/Develop/DbManager.Desktop/View/PermissionDetailView.xaml b/Develop/DbManager.Desktop/View/PermissionDetailView.xaml index b7616ce..76c3174 100644 --- a/Develop/DbManager.Desktop/View/PermissionDetailView.xaml +++ b/Develop/DbManager.Desktop/View/PermissionDetailView.xaml @@ -70,7 +70,7 @@ - + @@ -85,8 +85,8 @@ - - - + diff --git a/Develop/DbManager.Desktop/ViewModel/Tag/TagGroupDetailViewModel.cs b/Develop/DbManager.Desktop/ViewModel/Tag/TagGroupDetailViewModel.cs index 22f0c60..6163aaf 100644 --- a/Develop/DbManager.Desktop/ViewModel/Tag/TagGroupDetailViewModel.cs +++ b/Develop/DbManager.Desktop/ViewModel/Tag/TagGroupDetailViewModel.cs @@ -9,6 +9,7 @@ using Cdy.Tag; using DBDevelopClientApi; +using DBDevelopService; using Microsoft.Win32; using System; using System.Collections.Generic; @@ -53,6 +54,37 @@ namespace DBInStudio.Desktop.ViewModel private int mTagCount = 0; + private string mFilterKeyName = string.Empty; + + private bool mTagTypeFilterEnable; + + private int mFilterType = -1; + + private bool mReadWriteModeFilterEnable; + + private int mFilterReadWriteMode = -1; + + private bool mRecordFilterEnable; + + private bool mTimerRecordFilterEnable=true; + + private bool mValueChangedRecordFilterEnable; + + private bool mCompressFilterEnable; + + private int mFilterCompressType; + + private bool mDriverFilterEnable; + + private string mFilterDriver; + + private bool mRegistorFilterEnable; + + private string mFilterRegistorName = string.Empty; + + private Dictionary mFilters = new Dictionary(); + + private bool mEnableFilter = true; #endregion ...Variables... #region ... Events ... @@ -65,6 +97,319 @@ namespace DBInStudio.Desktop.ViewModel #region ... Properties ... + ///

+ /// + /// + public string FilterRegistorName + { + get + { + return mFilterRegistorName; + } + set + { + if (mFilterRegistorName != value) + { + mFilterRegistorName = value; + NewQueryTags(); + OnPropertyChanged("FilterRegistorName"); + } + } + } + + + /// + /// + /// + public bool RegistorFilterEnable + { + get + { + return mRegistorFilterEnable; + } + set + { + if (mRegistorFilterEnable != value) + { + mRegistorFilterEnable = value; + NewQueryTags(); + if (!value) mFilterRegistorName = string.Empty; + OnPropertyChanged("RegistorFilterEnable"); + } + } + } + + + /// + /// + /// + public string FilterDriver + { + get + { + return mFilterDriver; + } + set + { + if (mFilterDriver != value) + { + mFilterDriver = value; + NewQueryTags(); + if (DriverList != null && TagViewModel.Drivers.ContainsKey(value)) + { + RegistorList = TagViewModel.Drivers[value]; + } + else + { + RegistorList = null; + } + OnPropertyChanged("RegistorList"); + OnPropertyChanged("FilterDriver"); + } + } + } + + + /// + /// + /// + public bool DriverFilterEnable + { + get + { + return mDriverFilterEnable; + } + set + { + if (mDriverFilterEnable != value) + { + mDriverFilterEnable = value; + NewQueryTags(); + if (!value) mFilterDriver = string.Empty; + OnPropertyChanged("DriverFilterEnable"); + } + } + } + + + /// + /// + /// + public int FilterCompressType + { + get + { + return mFilterCompressType; + } + set + { + if (mFilterCompressType != value) + { + mFilterCompressType = value; + NewQueryTags(); + OnPropertyChanged("FilterCompressType"); + } + } + } + + + /// + /// + /// + public bool CompressFilterEnable + { + get + { + return mCompressFilterEnable; + } + set + { + if (mCompressFilterEnable != value) + { + mCompressFilterEnable = value; + NewQueryTags(); + OnPropertyChanged("CompressFilterEnable"); + } + } + } + + + /// + /// + /// + public bool ValueChangedRecordFilterEnable + { + get + { + return mValueChangedRecordFilterEnable; + } + set + { + if (mValueChangedRecordFilterEnable != value) + { + mValueChangedRecordFilterEnable = value; + if (value) NewQueryTags(); + OnPropertyChanged("ValueChangedRecordFilterEnable"); + } + } + } + + + /// + /// + /// + public bool TimerRecordFilterEnable + { + get + { + return mTimerRecordFilterEnable; + } + set + { + if (mTimerRecordFilterEnable != value) + { + mTimerRecordFilterEnable = value; + if(value) NewQueryTags(); + OnPropertyChanged("TimerRecordFilterEnable"); + } + } + } + + + /// + /// + /// + public bool RecordFilterEnable + { + get + { + return mRecordFilterEnable; + } + set + { + if (mRecordFilterEnable != value) + { + mRecordFilterEnable = value; + NewQueryTags(); + OnPropertyChanged("RecordFilterEnable"); + } + } + } + + + /// + /// + /// + public int FilterReadWriteMode + { + get + { + return mFilterReadWriteMode; + } + set + { + if (mFilterReadWriteMode != value) + { + mFilterReadWriteMode = value; + NewQueryTags(); + } + OnPropertyChanged("FilterReadWriteMode"); + } + } + + + /// + /// + /// + public bool ReadWriteModeFilterEnable + { + get + { + return mReadWriteModeFilterEnable; + } + set + { + if (mReadWriteModeFilterEnable != value) + { + mReadWriteModeFilterEnable = value; + if (!value) + { + mFilterReadWriteMode = -1; + NewQueryTags(); + } + OnPropertyChanged("ReadWriteModeFilterEnable"); + } + } + } + + + /// + /// + /// + public int FilterType + { + get + { + return mFilterType; + } + set + { + if (mFilterType != value) + { + mFilterType = value; + NewQueryTags(); + } + OnPropertyChanged("FilterType"); + } + } + + + /// + /// + /// + public string FilterKeyName + { + get + { + return mFilterKeyName; + } + set + { + if (mFilterKeyName != value) + { + mFilterKeyName = value; + NewQueryTags(); + } + OnPropertyChanged("FilterKeyName"); + } + } + + /// + /// + /// + public bool TagTypeFilterEnable + { + get + { + return mTagTypeFilterEnable; + } + set + { + if (mTagTypeFilterEnable != value) + { + mTagTypeFilterEnable = value; + if (!value) + { + mFilterType = -1; + NewQueryTags(); + } + } + OnPropertyChanged("TagTypeFilterEnable"); + } + } + + + /// /// /// @@ -262,11 +607,122 @@ namespace DBInStudio.Desktop.ViewModel } } + /// + /// + /// + public bool EnableFilter + { + get + { + return mEnableFilter; + } + set + { + if (mEnableFilter != value) + { + mEnableFilter = value; + OnPropertyChanged("EnableFilter"); + } + } + } + + + /// + /// + /// + public string[] TagTypeList { get { return TagViewModel.mTagTypeList; } } + + /// + /// + /// + public string[] ReadWriteModeList { get { return TagViewModel.mReadWriteModeList; } } + + public string[] CompressTypeList { get { return TagViewModel.mCompressTypeList; } } + + public string[] DriverList { get { return TagViewModel.Drivers.Keys.ToArray(); } } + + /// + /// + /// + public string[] RegistorList { get; set; } #endregion ...Properties... #region ... Methods ... + /// + /// + /// + private void NewQueryTags() + { + EnableFilter = false; + Task.Run(() => { + BuildFilters(); + mTotalPageNumber = -1; + ContinueQueryTags(); + Application.Current.Dispatcher.Invoke(new Action(() => { + EnableFilter = true; + })); + }); + } + + private void BuildFilters() + { + mFilters.Clear(); + if(!string.IsNullOrEmpty(this.FilterKeyName)) + { + mFilters.Add("keyword", FilterKeyName); + } + if(this.TagTypeFilterEnable) + { + mFilters.Add("type", this.FilterType.ToString()); + } + if(this.ReadWriteModeFilterEnable) + { + mFilters.Add("readwritetype", FilterReadWriteMode.ToString()); + } + + if (this.RecordFilterEnable) + { + if (this.TimerRecordFilterEnable && this.ValueChangedRecordFilterEnable) + { + mFilters.Add("recordtype", "3"); + } + else if (this.TimerRecordFilterEnable) + { + mFilters.Add("recordtype", "0"); + } + else if (this.ValueChangedRecordFilterEnable) + { + mFilters.Add("recordtype", "1"); + } + else + { + mFilters.Add("recordtype", "3"); + } + } + + if(this.CompressFilterEnable) + { + mFilters.Add("compresstype", FilterCompressType.ToString()); + } + + string stmp = ""; + if(this.DriverFilterEnable) + { + stmp = this.FilterDriver; + } + if(this.RegistorFilterEnable) + { + stmp += "." + this.FilterRegistorName; + } + if(!string.IsNullOrEmpty(stmp)) + { + mFilters.Add("linkaddress", stmp); + } + + } + /// /// /// @@ -424,7 +880,7 @@ namespace DBInStudio.Desktop.ViewModel // var vtags = new System.Collections.ObjectModel.ObservableCollection(); mCurrentPageIndex = 0; - var vv = DevelopServiceHelper.Helper.QueryTagByGroup(this.GroupModel.Database, this.GroupModel.FullName,mCurrentPageIndex, out mTotalPageNumber,out count); + var vv = DevelopServiceHelper.Helper.QueryTagByGroup(this.GroupModel.Database, this.GroupModel.FullName,mCurrentPageIndex, out mTotalPageNumber,out count,mFilters); if (vv != null) { foreach (var vvv in vv) @@ -444,7 +900,7 @@ namespace DBInStudio.Desktop.ViewModel mCurrentPageIndex++; int totalcount = 0; - var vv = DevelopServiceHelper.Helper.QueryTagByGroup(this.GroupModel.Database, this.GroupModel.FullName, mCurrentPageIndex, out totalcount,out count); + var vv = DevelopServiceHelper.Helper.QueryTagByGroup(this.GroupModel.Database, this.GroupModel.FullName, mCurrentPageIndex, out totalcount,out count, mFilters); if (vv != null) { foreach (var vvv in vv) @@ -467,8 +923,6 @@ namespace DBInStudio.Desktop.ViewModel private void QueryTags() { var vtags = new System.Collections.ObjectModel.ObservableCollection(); - - var vv = DevelopServiceHelper.Helper.QueryTagByGroup(this.GroupModel.Database, this.GroupModel.FullName); if (vv != null) { @@ -480,9 +934,7 @@ namespace DBInStudio.Desktop.ViewModel })); } } - SelectGroupTags = vtags; - } diff --git a/Develop/DbManager.Desktop/ViewModel/Tag/TagViewModel.cs b/Develop/DbManager.Desktop/ViewModel/Tag/TagViewModel.cs index 58658aa..8dd7dfb 100644 --- a/Develop/DbManager.Desktop/ViewModel/Tag/TagViewModel.cs +++ b/Develop/DbManager.Desktop/ViewModel/Tag/TagViewModel.cs @@ -28,10 +28,10 @@ namespace DBInStudio.Desktop private Cdy.Tag.Tagbase mRealTagMode; private Cdy.Tag.HisTag mHisTagMode; - private static string[] mTagTypeList; - private static string[] mRecordTypeList; - private static string[] mCompressTypeList; - private static string[] mReadWriteModeList; + public static string[] mTagTypeList; + public static string[] mRecordTypeList; + public static string[] mCompressTypeList; + public static string[] mReadWriteModeList; /// /// diff --git a/Driver/SpiderDriver/TagInfoServerProcess.cs b/Driver/SpiderDriver/TagInfoServerProcess.cs index efc3b1a..ca007b3 100644 --- a/Driver/SpiderDriver/TagInfoServerProcess.cs +++ b/Driver/SpiderDriver/TagInfoServerProcess.cs @@ -89,18 +89,18 @@ namespace SpiderDriver { int psize = 100000; var vtags = mm.ListAllTags(); - int tcount = vtags.Count / psize; - tcount += (vtags.Count % psize > 0 ? 1 : 0); + int tcount = vtags.Count() / psize; + tcount += (vtags.Count() % psize > 0 ? 1 : 0); for(int i=0;ivtags.Count) + if((i+1)*psize>vtags.Count()) { var vv = vtags.Skip(i * psize).Take(psize); Parent.AsyncCallback(client, GetTagBuffer(vv, (short)i, (short)tcount)); } else { - var vv = vtags.Skip(i * psize).Take(vtags.Count % psize); + var vv = vtags.Skip(i * psize).Take(vtags.Count() % psize); Parent.AsyncCallback(client, GetTagBuffer(vv, (short)i, (short)tcount)); } } -- GitLab