From 12fe9a0d2512ebbbcc9c492af187ff76404b913e Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 19 Feb 2019 16:42:54 +0000 Subject: [PATCH] Fix an assert() that might not be true if the database file is corrupt. FossilOrigin-Name: f2d400db4dbfb05e2540178ed3662f97f8c57a95f8129886c7081c35e53adf0d --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/btree.c | 2 +- test/fuzzdata8.db | Bin 987136 -> 991232 bytes 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index c980667aed..d4cd296435 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C New\sassert()\sto\sverify\sthe\sTF_HasprimaryKey\sflag. -D 2019-02-19T13:51:58.095 +C Fix\san\sassert()\sthat\smight\snot\sbe\strue\sif\sthe\sdatabase\sfile\sis\scorrupt. +D 2019-02-19T16:42:54.196 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4 @@ -455,7 +455,7 @@ F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df F src/backup.c 78d3cecfbe28230a3a9a1793e2ead609f469be43e8f486ca996006be551857ab F src/bitvec.c 17ea48eff8ba979f1f5b04cc484c7bb2be632f33 F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 -F src/btree.c 2105865a621c211cd76d8d21a6831249c31c876d7d1fe7d7ebe27410cd893747 +F src/btree.c 026f48c39b179a5602423904fcaaae87bbd75f659fd672b3756fea43356d9909 F src/btree.h 63b94fb38ce571c15eb6a3661815561b501d23d5948b2d1e951fbd7a2d04e8d3 F src/btreeInt.h 6111c15868b90669f79081039d19e7ea8674013f907710baa3c814dc3f8bfd3f F src/build.c ac41c86b486f480b2bcad7e55c6cc19d7151082f74682ab048c45980d6c9ddac @@ -992,7 +992,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 3fc78e65dfe0be9df9e262075d5a335f18f627da47dfc691d1a7b822f34d4b99 -F test/fuzzdata8.db b7f93d26fb1d29af7c5181eda877f1a20bdbb3d286bc14622e77d08752b6da61 +F test/fuzzdata8.db 04d95f81db43fa4a247531d25573544125d9dd2777ae43594c9eb57e2a8b901c F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -1804,7 +1804,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 55d43adc894a6b1e0f77bf481dad6dd604a0dc0022e72bbf2e3037f97351971e -R 4957484ea90ae4ee926291ee2f0443fe +P 0abace8a7aecca01c8677d07f3ec1bafb289ceffe5bcd60284701a7bf813f415 +R bfae54bdd2f15a7a8fbc764b3228c6f1 U drh -Z 06b0b1933b49b6d18ffce83176015625 +Z aaec93d3bd3865148d42c2428c55baee diff --git a/manifest.uuid b/manifest.uuid index a65f486535..7a8eaf1d80 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0abace8a7aecca01c8677d07f3ec1bafb289ceffe5bcd60284701a7bf813f415 \ No newline at end of file +f2d400db4dbfb05e2540178ed3662f97f8c57a95f8129886c7081c35e53adf0d \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 0a8e6a99e4..aa2c84999c 100644 --- a/src/btree.c +++ b/src/btree.c @@ -8261,7 +8261,7 @@ static int balance_deeper(MemPage *pRoot, MemPage **ppChild){ } assert( sqlite3PagerIswriteable(pChild->pDbPage) ); assert( sqlite3PagerIswriteable(pRoot->pDbPage) ); - assert( pChild->nCell==pRoot->nCell ); + assert( pChild->nCell==pRoot->nCell || CORRUPT_DB ); TRACE(("BALANCE: copy root %d into %d\n", pRoot->pgno, pChild->pgno)); diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 6ae5d76f4a9e4ea18af4be55f09953fec3f0e3f3..ed0d3497b4622f8ea25c591ae96612ee07a24d8e 100644 GIT binary patch delta 15031 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 delta 14454 zcmaJ{2V9lq_rK5ky!(AGL&25EMa8Y$>)wDn6$Q8D0JrA2xN-xIa+HFo$I1b2bAc$w z4LH)$1j@|Jfo5rz31*hL{^z}xq4oRw`Ml@KJD%tJob{aNoD-kjJU*p);%mMkHXA=~ z`{$o;QmuL{Bt3eAq7G$G=srK5Y^t9n`O~Q$8A;@|u0+fTn~go_WQ()0 zA3M;0^V$(P)0)VsRz!A(6WP>~$lB&aK4?Z{X;UI|nh=@Tn8=uhL~ak)YZ{%GV;|UxSEOH6nTyB1$lE?{Q@!{(n>?S` z$zXH|m}Kw?Qy^+C4~E>s+#g#m<1-Kk*JLSBwC(KqA0MR((vS4T9f;k<12E_izs}h&kepwDi;fMMb{ydr~; z5BN36Eg?1s^(6Nqg|giR-$6!IXmOGsTk*)4g2PVm)dDM||HtB_Q@onWf^bb9&t~eq zZL&kOo%elt_U#b1ln=HL|4i4fkQ*=d$Cz_`9cTA3cdocoz}**ll*Arj+E6i^L88By zgYtF$gt6ZtFNeFZ!3`d*N)<)h;U@nvb^@d|6zAd>zwp{j`ipT#< zX7fM+Tj^pBV+?{m;bHJJQdHsnl45ySQ%-ynkC|c^X9DE!=BJ8D21zpY8RM|m6oWCW zmgwNH>trpAhW85Y<@E?{(s2$EDqv~8RD^2`4)pevI|s?5Zl@uI@P9Vm(r-${%IpHgD1 zHKH98N{Mj{2c{Yw1PF^18)SxwwIx;!>$DZ?Fwy%XpQ;$$PF%|*VmR}`oIBi?%z;>l zcio~P0AcB9jX8(;LhNvH3B+e{`MJIV>1zud*hSnRv67fmUJMs7ZkU+BJnumK3SJ5B z_7?q^ALKa1byzS$^bs)g4KY!YYKXSXnEzT9Jc|(}wbVx=s*5&!#fqLU9I^+Cp;8Hg zTN)V?$1!w&#jDU7dx^uDwdgXiwv<@in%Wl%>xgbkKCu`$QoJFvauC)*{1Df;#i5+N z2C0fT5J)x+VDw6+V#-AEkt)>^Z5dG(wjOYQrnp)O`0&k|qHQlkotMKPGKn{Q?n)eS z;#H|E%~t^u^Z98ctE$ggAjW!$OBiOU#4;Frl;6&rFP_uH+M;bG_$2YpSb3@VEt4Gd zVI|1%7yKZyoAd|zEEj(jSY?cGOXNtJeIT9^STIIRluk0t{ZkBLuq#7q4?ixK%0Q>J z;yzXdBc@0KgMA=%z%HrcUV&AGh#8UtD{m05a#jr@;-&FWZLO4xZMTXMid09mJqfhd z6^37@iPgA7E|t}UqCRrRjOa@#JUM~SREO}O)YMh?IxLb0WjKukFp1k_8=WSO;?3p(h4)|Q$D6qOH=84ZZs|UGnsAaJH zIq@cE^&#p{lKE>F#9N#-fb^?kSBPt?x!rzq+ zg1d^*6dx9fI%mxwYnv1fEkHa5B&E+`-=|Ulq%4u5q00y27|ePgwqdL}WbLxv`p9}~ zqEs3KABr~w)&jCJ=yvw+qKeKu=?cS|PsIz2wS+9RUSBV^gRB^7@ZMjfohozUYE2p> zNY*AAj-n|MD_WuGWBs;9(a-vAgJK!$w=Ih0t>1PiI;`LJC{~slXtImewy?dmwh2&B zSCGIxf|bBeYfB9UDU8PL2q{;jZMe%R_28@%=G+rahCU4>(!$P=^FaI^3j0VVDov!v z0*k<$KgAG_4mQGp{iPLxCEzZQ^HiJ-q3dY#3=EfOnOz}Apfv}~k`fq(U63{qZ7=ng zSv_16A=PI})B(M&XuA(Vv&rKYXj1*>*qp7IH&jTc!M1gg%340{b-KEtw^J(O5dX1c zSo3v9@A}e0hKqYjlLXcSe8)>aBcUwGSx@wC?s+xy`K!Iacbe20Bcr7Z&U&NoEb0Bf z009BYhL8@DkvT#lcik6?oJJ)~TqwC2bXhJgK*w0=JI3C?tovdqhUH?V9|iU%Wc?vF z#^z*?ob|)3$KpVSgQrR<0_(p#OZpPRKB7^(Y@}T~Y?ai};=nVBlr&(jbWk0bsn!>5 zKl>LG#@`E0#NX#hsvuD~#-h=6MXJuQ_5$g=z{op(EIoq-J){|sc2bIj=mt^~prx0E zw?JHunTw?e#s)!BBdI((5~c4r8w|d?rHvTUPjWJ-`B?Npau?+UHUyGFrIJ{BrSvmr zL&5iebO)Mk5}QEU5NR>)TP<}G*f4N~2xMs~(oKbp0N*1*83;Qr?Z&fPqz0Uge4+P? zvF8qHr@%&ebo{x80`gGRFmtzs=q+fmRy<}or&0_Yh2*n7o+@PkNkYO)nNn58M*pMk z%YTvTYtQynHz)d zi}?({`c$eTuviHCL;M2IpOI>FHXef>i@E><2TG~9>kFv|V-xlUNwMr@iKRm*mp0+4 zucg+K)L67V^LT~9)}}aV&!|SC?Z>|Vf$euI0AUoBv&m4@P_F>->zQnUZXlpf6{9W# zLh9Lw--fhBBtz1#|1DC>tNdx{`4k9mB#lP*Eh(9^sgRQ{{Z?G4O@5I+V{96vfi+^P z7yx^wN?R=sABU_j$(uxnOQUeXJ!u+a(=lhi)PfZgxB5VO#Mlf7Z*S?%AJTUUn*~J+ zCv+QYBPJO=XaF&!c|3uzEpiis;mF$2>yzKJ4~Tt*g= zY`z8sn+3;>#-t?l5_G4%uhLAn>jrRDwHI|YS zLCq-y$QI24R9=_K%O-*IU6Y(lXZf}&H}&jI$?3xqJX!_kB5AX@-NN*RuDxUx^n}1jA4J%S{Eg0*j`~$2;7u+*5$&C!UH}O18g}4T@NrLBYQl>ne=cCxNgc-lA9e#hk--5 zANe#f65O}s(i8=JEM(4=_lZ(-(ROJt7Wpy?Jl%XCwk{+5R)3c4oOKpMmdfWCTc7Nxig<9D+<~(V$&Q-m@WM*DCTAOy9U%pf`=cx; z@9Os@9$qc)lckoT?VG`n&|Dda-)xX83F7ATAuU#HmY>NfG})HH%Zp?OzIjpJ$iSJ# z4&uCzWr}yULcwIYEX3_*<*~_j`7xWD=cwBE)rN8Bpi|7#DS;e4V^ z9sm((Y#W}rBsbzLGdZ;z9fk|!Q=DOPj=LOIxFLVf**;vdSB@2M(rtOM#17!KBKDeq z?rzFZ26KOvi z#87qw!;jko=?FU7ejDwA@<3wQ5PQ{Y2^8)%FGArxc^SB~ko!ZTOIZN3 z4JCo)K&-6PeQ|diJ}?zKXGbBSk`RcMe3SytjzQ2*N&|>&&C`-2BUMQ3Bv;2@0u-IW z8h`Il*gBFMIJT6soU!AOdRh*KY;PfKZx_MNp|A>t)nQNBAZraLAU{|s#QWtHZ_YkJ zS6L-jfb8nD!R~xW@tz}4c^&SSS0pGr$4bET2u_Cx8#|etw4_aD31JX}>^n@vw2BG^ z8ON(A4n=N7CJ!T#L{~zvHkK^9K7;V?N*1KJ6+aBql~%N;_O`pQV_juGW2fQTRQq5^ zd_)dmTz$o^Qgk@8xiXtepVFsiA*rv@9>ba_ok)wbtmK#_XXG-a?%Q-j>-*;Q~8{QIX0n?pYKR{KjaHu(7W& zs)r&nRQoHB1a=;;MJVeTE*wqhAY`y|j(v?meU+<%r9+=sBlfnwx`09bt(#*C>@Cpo zmhzp*E@IRzC56L=3CckBEk^xpP1WUq5@Ef638M-XnV~*ac_^^U7N;}4` zVAvl@HisRT6>>y2b``@Od;Y%m{O^M0VQM{WG+#NRu& zS{jbDQjg#_6P3fB2>AxO4k#3`&~)#4ZhQ}}BT6bn`lvpTJx33sXi@P3_j%&?G48U`S-{9mN(N)MfHmZ#hMy@Tu*Q64G|$|wOp&AxqU~m! zCA3XgX}2<#X}7bhwI@l&ceid1vh?X1T|Z&Eq;?e`v74+Vr;HXcI+OU!e#Uf7RT)HP zscA6wuCf$~V|y991L<~k2L#qo-4K6Hd5i%^lph$St$Z~-1PXlBskl8`>CM?)i2O{Q zf$_(cISMO6-(WsWfGf+C-k5Wiw3gk2^fqcB1WZ*-%-g3pIV7Iee8K&tlFWXE)$7&4 z5bvdm5P6K=N}Q&|f{(XKyToB-3`7TO5+v4C+knqdwIqhzSAfi*vzlZ{={}}+R#gsx zF7>|k_ivaUsRlC`wM5n7$aYnOC6AO?B%x-=tP{lCP{wNP>ArRyMO%@t#TrkL_xs+8 zuTuc}Iwnm~gD6u{LUDj|k21+(TOnP4c;Y)uyP&2}uTk=OG3yQ?7FGsm>|e zXk&k3&`PB{+w`SEA!YO4Osi3qWr&$qpX9CJ;I<>ip=3kKc>Ku3(8&V=406L zjq-z~4yCwdi%*(3hftzZ@kgIAYCi#woFW_9qY9$Hoz zK$yCrbCjA#u6?%h(0VLFPCYdgTbEI@6$*wOmM)^ZGGFYOP=TV)X@48rT3w2TYg8Ww zI|r)Wz_C#ChO?8EBp6Xu{fII#MfnPOlfT&~BPrkwMhUW_uRQldcx4zjTup+4ew1$` zM%A}r1Zl24OLYU$w&MS zsdMqoz_Y5QTtZ1K+(}$p@u{*BxA#`6Us8E&n!9D%S+F2>gnyiFVK5C_M0{g8~H;`%;x3&;#?9#w$ssWIfYWhRo zG1Uoq?e*6n?uzaU5!00<44JRqWl&Byt-l5n+_oBt7)zC9A`n6)vbn`Th*m-;#2i8hAdXkF|p!b#^;AS&Zu;@7@Mpv zrzk$AAuol|>1v9A2Ue)BOO(4CGhS(Asm9Av!JVtso&u`^IoWDijL%a-1q<0`CRB9+ zo1j&MamPrn|IPYE9{Z^VJBO3K{H^xyF(iQH1y+5<3B?67Ppfla>=IQ*a(rz$s{us~ zDAbP5Ra0Q>Gji%Xu6a1ITb(VlNW8jFb#SRNt-Lk_O;G0iC)jSn%RKFFajFgky{(Y; z{#%_gSO^47S1Mq|HuVV>&QI|R5ubDK;wuPt<8tG;cB^OSab1f+K>1vKK7tBw| z9#XVhxMqdf$>W(?K>8!K780s2Ii2GiC$)KSb-p$UyesKN9w0zK8sTg~OJFP%!tH89 zOngt<#vpJAg%v67^{5p)w8j>!>7Eh8AXU}xS%`F=X==SisfTF0JB|*FtzoT?R!MD@ zS%GBrbNCCO7p-Vbpc0+X+S<)3L(_CK6o>n1t0zZeM5fJ^U z_7;w7t}Ww~X-rzI(WVlnEmB!8%8B1^zs-sQIDrYNV@*MCD3m8EL+QBFzXY28fLf9_c8BAPD?B6I_o*9 zWGQrqq>(~Nh@PhJ!cTf=EjT3{BQNTt*nKoo?4D5ch50Tn>ZeUnSZ~O8N)s{7sYP<2 zrBVXPCiKCW73Ny$MGJi)CR2~Z9;3BgoU)BEYpjmzw(e<^m9zeJ#RhuHP;Slvi?G4*6Ybu_)td$e+ZcmNGzhkr3i*k-p zOq*|^$!FkwQ=NkaA8VBuWgep>ZP^Q4@6dkzlll*;=6GkPR*JDv7@KE-=%kc_$mLq^ z%stwES$adX75cu=kMfkx6GrcE+?VQ&lV03iU|Gcwy2c<`g+b@Cqf#44J7ET6Uba5p z<95eFeouPQ}slO8A*vDv4VCAnlSxMOTupWe4joQ zXP(mD;Vc#tBt4F#G*SBy@~UXxS#ONT1kJj+>wVfVoDq5-mU&L2r1V6{DMdR_ytlUw ziFx`{$m?K~U0TTt3YzMl!Y}DM03j%eCogKv8Jh(885E6s6s_Q~=HL+dOr5rTmQLks zn=lztud5~Z?$V<;+;wX!t$S}n^i6UwO>bzQayA8hYUqU|uIqX*>W+7Fe5qWqlPPb+5MoPm0`y>|IoH@ zHWS@PEj^1|BBUWn{E$ZlXIWS(Lcw(1@q%CWy|eUrR^l-~juufNR$FV~s>3au@sK}9 z55cfICKVr?Av_OfZ8Xn%hDv~-saksrWE4c-r4257kQRdkagieR6K#J^@CX>mEi5Cm za%%T2F;nA(Fc-r=)XFieP*(q5VDpg7##gXhQ-KF8IQr@xps+wKX#sc#$b4?&FAm+G zQ&Q2_-|i17ZPj3mTc}a=(k@s(EU@{&zBKn^WC#5V$^bl2WVjo`eSx5o{@H{D|8N$F zvlq~)t*=z10TgQ*FF*oQ7ai!;U$p(^dU3C+m5LMQ(Dfc9bk^46=EizI$~HpIWwkGo zrEjuQjyc!V&EU9cnkz;LPc&7*ZHm;j{L;(kcJWhNaI=IG9UB)Z=M(Tg&X z`I@%IGr0gh73lPn*;Vfd(VO%DNSq>wnWOd1vNVuNN6!t{lB?!n&r+J~BXDF<^!B%# zr%d!J^ggFk=_q=XV3m%9)e!rgT5OLwL>VToM?s!j>ta1$gRBOBM%zKESqO>8=^%P_ zu{H?$&e1<+YmwFA?HG2Pr>|0^Xwmjl+zSys*R3&7Z;5`!%2NvKu&{~lL;6%->x*NS z>MJNQY4K|*!xhW*F#_8FK{w4{2n*D@(+fLX&<|1$5}cyG4rvplT3GI7y}rOQA*q&H8(jtZYbsT`VU8g}_nPZy+gg0LTFwJ>H;mSdO}h~$+V47!dqDE(;@4gjlaxRzEj zF}{s)j-mfO{TD_V-lDCBw}4NU8B_)h{9V5xvcovDg+b2wEAf!xqBS)J`r9Ahuf%*lgk+I zE0iEh9A-TIuW>RwTt5jxF3BIF9fmLD4OYrw=usi(pJDH@%xcCpNg7Uxz95LYMdBdr z6Fv5Jf?$4zIjxLPX5mT~;K@;%C|Sqf*1mC@XXghUGF8yIE5G1BmyP$^A0-N?lXqm1he zXo`y2Gdjbsh@SA+Vg$6Cd|8rYh1~qV0_T3y{>BGijJno~d7N388{V-eAvqEZODL zbpc&IMlJ`E5H)+)gm1v*XE;EfWkloL(MB9+7a?Z3u@!f?ja~}71YRwTPw=xTMib61 zL+*AuRNpBQnlS7+)1dn56=3OlDafuX`B-bAa`S=&W11q3p^&$e2NIA>mO}G|#ye`k zx+wk4Hr@w^VidrvImT@89&aqOKEHt}pAsr?b~a|w!Ba5t&Id**fqf6@ zVWJBLcGD@ZxkOR0<0@mn!fs+zD`S_(46niWJ&Xj{Rmq3~n!O9`*=%%Ww=k-mLFEu_ ztMRA6euStuj43!{yFm`}HYCk63c-O?5qg|vbW)|UqV1wbo7Ukk`wd?~`hgJL0as^p z5`=`ahPdmH(Sy3{&=pCiI9!oqkmtP%t{!Fx);n%IP((VHFxGPR8^jkG zb-~@x-U!y7FuLHuOGZ7N>e6?AFnpL)L?8VDF}X%*NL)p?J;Dq>jirf;ofPf2X;hIX(aCx*#go*al%=7#dRDu{9TL z4I%ctQ3`hcWJGw%n@HtNgW(3v94Ij6sSSa%yD4IM)67<>oPOEQ4C1ozl$um2TN`aL zw2Ya@nFKkC8462=nDwk;X;oZZ-WfABS*Qj*cgNmru!hjam;|0&= zpkF0Zk);XbGlQ)aT(XXNv8%l`D} zHHfV(`7bXteXRQzIV%tOx}Dm|rkGbb3xK2mVu*W&Nj(V_ASsBFgl9*ZvA8haoT@Mf zM9mibp=D2DDlVOGme#~6qHU|y=F<{?N;3TfiMn=qB`R8)yZ_0JP`Far3RfOyeqeIW zf}ck#6h}70imT0QlqSR2_cUVWzj7eUDPL9}gKlYyIe6by$tl{XCK9`hPG8Q)f{1xr z%qt3;io4RxNKd01uZiL11Pa;Bz2@%%^|&Q8r3^^+H9Be?IbwDLx2aUe()-Py1y*}` zj*^Gx4w-I6olYS}iw2to$T=^!gTU_Z&SQ_*@Wll~P90H_SDZm)NcQpw|!PJ(Aw_=g;ec>jH%n z&hON5u=tjF5r^cPYXxeZx^`U;BrP;48%t|lkJr93D+<&O=g8A3%(`HnQ>fc5C)g$Lk(e;jq>*s~x$LLLV0Cicb{)4)z$F`XfGy;KegE*qV#+x_umV|%C~ zQt$rw*3em(zc0mvMt4EA`G zNQk-4M&LNNJ&7xW8d4J=kAj$=sLv<*o_!bQb+%J&p<8l(S4#AJCRd_XD|-f48rG$( z74Htd_t_8}(Zl|cm9V;|^7`1gkNvcjuyQ;yTT=Y#QqiVL}s9Dj1wT#pGKj%-GBEYZ+yQk90 z`z420s`3I)CTIPjs7Rg;g>CH}V3q3q0Y>+R;;<}AiMOc`q*%;;?JD$t=oK)=DutL#-c8}=&5;r{};(E>T5 zILML3L2kDgH>x2t!N2W0znU00n>t4rk?K!Vg)aQTH zK7mp4DEyxNERZ-CWAq7YTKB8)V*drt!^82#;Y}zG&m-4~#o=AB3{J$B1@Rt&WQJ;RO8?MD9bIMH3f2d+P6Stnm|?AUiMF)uK;KT8?49FoVLg8 z1o0E>luW#5&$X0ukaZ@ZmVcjby$YfBXEOCPPqBLn*?c+#b+-pW4aNIBIA_=aQjW+& z@%P{Cra&EOz6v>%zdODv1F7xjkk*0K#ps6?cVoy z8EPL5q`^I4NolK1B8GH0Q}m)dTKxaelZ1ci$?R7Zdd{oDnET(tm{(jF@4OI(iX9zZ z`>mW&F@>(|MY%)KH`lvWA%f|3vPp>wDM2%^D&Hq5R_Fw2y zUPYJsD!O(5jc$E$bQ_AJ^LT)b#nDalBCf3_TwDI9OW*o$m;Uj;T>7^EcIn%TyYwB! zaqTRQ%VYYxisL%&RjA6EW$xk6-KR065ml)8X1aD`Q5S{c{KWhA;f!{kg&r@J0qm$5 zZn^l10uDd#wTe-D*tKJF;EIY$7q}{UH?a&H7#?8WE(%Ma^Su)C`YI|=UsPr5(`-m>Yo7=N@-Q~gyw3_O2kZ2)f59#8 z*0A0)k`31~O`HDQ9h)9+-z23Z=Y7MK*}j9|Z$#RIAbXz>CT~aeK^n It?v*1ADO){3jhEB