From 7283d7ed64477c6baeb6a5febf6abe8c0679700b Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sat, 22 Jan 2022 06:58:43 +0000 Subject: [PATCH] Make all text-extractors always return a non-null String This changes the expected exception of some test-files git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1897319 13f79535-47bb-0310-9956-ffa450edef68 --- .../XSSFBEventBasedExcelExtractor.java | 2 +- .../XSSFEventBasedExcelExtractor.java | 2 +- test-data/spreadsheet/stress.xls | Bin 38912 -> 38912 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFBEventBasedExcelExtractor.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFBEventBasedExcelExtractor.java index c53cc39312..238a533868 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFBEventBasedExcelExtractor.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFBEventBasedExcelExtractor.java @@ -142,7 +142,7 @@ public class XSSFBEventBasedExcelExtractor extends XSSFEventBasedExcelExtractor return text.toString(); } catch (IOException | OpenXML4JException | SAXException e) { LOGGER.atWarn().withThrowable(e).log("Failed to load text"); - return null; + return ""; } } diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java index 64d90fdec3..2fc9cfe01b 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/extractor/XSSFEventBasedExcelExtractor.java @@ -291,7 +291,7 @@ public class XSSFEventBasedExcelExtractor return text.toString(); } catch (IOException | OpenXML4JException | SAXException e) { LOGGER.atWarn().withThrowable(e).log("Failed to load text"); - return null; + return ""; } } diff --git a/test-data/spreadsheet/stress.xls b/test-data/spreadsheet/stress.xls index bd26bf16d125aa4b177c127c07fc871c097558b5..d8237a26ff2dac5ff5d76c4f4dc4d7bdf5c65bcf 100644 GIT binary patch literal 38912 zcmeHw378zmbzUtl0w72NyqZIhVB;Xp-P!vBNnE>FV#x(|iCq%lrRD5Q&+Y)TGsEfG zixO=}vTVn(<1=xX*l`@oPAoY-Vkb&s$EM;Ojzb@DqF8nkN6zh>^c6>mEad-RRabZQ zHV#U1V*AtV*E7?v-}~!z)qAgARaeda;xFv_%y<9D!@sUluP4+-_4(`D)RqLj4d2J3 z^PNgPjqjv={`&Rn5gA{<{Q4tQ1HW%{-G~O^yJaqPfx7mmAe z+=BxqpmyQ77sq`#?#J-}jt6mgI3B{0!|^bV-8de>@hFZxI3B~{Q1jkVv$8fac=)jT3(TSrAM>mch9KAUDaP;FCz%htp2*)sv<2atc@g$C? zaGbz#62~bVr*WLYF@j?h$5|X>IB3(+@r*hDBh;+7t?ETp$6pI=aaPsv*;H$|+uMIV z2#ZM;b~}>EcyT-Yx8nJ7`Ed>0s;+oFS^wL%!i%?TRzH5%J9K&R{a;rb)DLg^B;J+! zH#lBV4aSC%Lbd4szj~b!9SUvK;q5l~ZQCaFH5=4-;J91;kkEfZ-k*~A1GZDjr^mBT z`kl5@;8W@wZ6RXPY1Q2S*Y&Wv_*X{bW^AJ?fdwx>oXEfKdOHBx-XjPx3_)LsjSd{C%SZV zI%^_}|3-A8X7T^=rGFH4>ht!@E2__9x*pz5(~sPM-hKo6(HqdWWzrR_L-b*XDKD*$ zrtj4qsY9pr_)2|X*RD_O{={yzY1>`eenNF z_|PX4KTA*Yqg*Bu@=Dc1g8r==5TUNA>-^k#ZKHhdy0%3=@4dE3KJUABhkV|DZS(bS zL1fd>0o%L)ZwuCY|}b`77`c!Do)zx_5ouBo@)x~|^pEu#l~N4*37GXAcE zuF5!nhk#ItfBY(Vf*=?y1wtbC4&<+2e@nfE^XqRx7P!~nc}w+{udCj7-T@ulJl?`l z27LJ~^|6nA3~5hU^}YoH(w|-&Z^;2#FJwV@O`_dL5FzK86d{v4yIKqytxCNXegyg3 zPgY6Ys?HT^rE1U&zg}%ZrgcnxvTZ94rDndNP5l=&$87K2m&mHNyzBF0tHSs|Nfc!i z0jnI*_g;19yUYrI3XEIT2iuTEZhaduS#3R~_WUOEM&yxOci=#txb^ptN`6lHz7NO~ zfZBupnFF_8bGbs1+825S1IS@>g*;mvQSD6tL1) z7pwWOu$rGfeR-ChJ`w9@)CsmCi5jv8}i*B>s)b7kWCr*~8 z3mUIAmRi#-goMQd6G6FEhnKPj?H$ZuvZGdMRp85Eff19fsTKCSR(pB}4$lcsLI^dLW6K$VrCMH9+|eoL-8wF9S{3ktO`e|fQL zkv@muMDNk2A4R0d#tVK61`?cFXtf&0J3FKf=|r5yJyT;xYKCish$5VFMuKXMX(-xpNKK7SsT_ugfDMa6w+`bf#nVgr>E6q?0_ zd?RR9d0Vq#vpCzT&#hHzS7!^w#h|0PRD(cASH7#OdzRf(N3}9HyAU8u@w6(TdlB8& zWroeksS)(kmzs6hM;RR*dkWmPk7y;Q=oeu4v^ZSwCntS`Q@H}GSZIXhPI~*r`drX# z&5l(I3;0}P->@&~l;hQEFkh&iZqB=%7Sb$+v*`ZVrm)Lub4d5WLCM_#;XEe-V_K2wLeOfwI0s;ax|)^)WVJz=SYs8p{N zs>}tDGa#a{p6GszCVf}(w2#wsP(P5Wl6>zd=DNagX;Du6ashT%I_@KFiAbhvEf=a` zfF_9yr1Q+ue1F$)e?Kh@GjHi8S!tB>Xp&1XdM0hDRynuc+FJFxU$2(@4xcjqa6j!H zgrJ%CXPRq1GYbHYnluRgN7zE(Jc)eL>eN3t)YnUe5D3w+mx6GizS220H8b3wZ!}u0 znCXcz%=x9Y4XfpRU{hc!K7~Z0DZN)pb!63N3Lz{Beu#MIn?%WHro@1Xj-%aQt1pRl z(YO{0%LurU{T2Ke8TUxXZueIfDhO_suy&{wSy)h#{BJ^MQ_KnM{WKbVT{K4C(x_4| zehJD#3J#d2pXmMkl>(Bgpn`jBB7gEHC(icR`>UaCNSkB`(l^bV!Kye~S+3OTvloNq zpjs%^si{utCdSYkrE0%kXNCtC0~mcsOc4{Z8eKvkidZVPmXK=BHQD`lM#*#s@;>BX zxDXiud=hT7_ZbwUJD$EPortW+_YnXJwPG+k0(K6(45q71p?p79z+|8=pYO}}zIxn;Dy5~Oy$V~dmLSwt5#|#4s~LL!gh3=tXJtc z$kbXvB9DBNAuj_D@yJ$}{j(yq2hKh9Znw__S_}1N<&B{9LZP}8`_N)a*T{@+OW74bOQmB7y@VTz zEc8`i*NZfD9KV&HW-tpVMtx3dEjLO`wfRUzC&&Ib+$eSt@uVNkn{#Oht z%W$ENI5q8d<59Z~NPgGEZ7YFN^IgE=2~@6c>uDEb3cE+JRgCI_q`}MN9JCIDMZqP`)CHN2_y@!Gu>!c#iU<*+l7?Lg1X%IGKs#p*tpHA9bp zG$zPnxP}SDa@e_4yIQNS)Mgtt8Obk(^LUJ|rykpr6M^S-BDmif%hgK3>f{m(PKFMl zwY7(lqgLz1tA6)zZ~x#xZ&zQRG?%1CsX2rO2B^4$x%%Rq)X1mW)Jv6y&vUqro?+Z8 zQ(a<0EA=HL=}aeJRIHdq%*^>s&V;aI)?@mtnZaPm4X3O;Unn*6~S3gisv`AThEmvxbM zhuP0cSrYr2+z-LH@sCEG_!bHHPBhm^V^@VC8~wBaNO_i8t5AyX!kD`Ryx;R z>>U_x*HwDl=iEVW-$4I%NejZ`{`v6>v*Q=WCQi?soxON^W_(h3x-ru1YWL3~u&f>T zSF4?RhG$w&@Nfzhvj9o|Ni=&$fYIODmmB{NN#pnTx{cr4{lzzaa*zzOE%k6%gIF>H zx3ohH7_6Q0xiookv`1XHZ(YA9!7DE|zlJgRVxD~-Mu&798-nlziQsnJOF#E9_m3&F zXvzh-F$erI+&8l(m?MqHdg>NP`-yw4{+ zsTn2)zvL_vas$LWOii$kF()eziR#TS;LfG!8{UI-jJJOeegFUNq3?$G(9fnzb#!qn zVKxYtQ}c`c!(D@N>nZv`SI>~p+wmY#KTqQnEVG|Pc7=QkEn}tt#Wm6}eciqC7{_;Q zXIiH4r>FB63Rj9PF*&4~4BW+*8Exo^p>_5jl<-&&&(JuZA7Ex=Y2M$D-hOx(&&`rX zJze2b0*xs6smD9|DMC_#bhW z%0h@VkA(8YYP}Y`P$^u*_`4~Ok%HvIEV@0i;-zMd**^xm$e1!8k|7~#Vh|lv^9&xC z`QXFHJf4%qWf2!qy@sb^X!C_|vD|rjdSrZjc4Vr%r@wo4Vq|=@yQ^=QX(!ud`ute` zx^PdiK>t82b1U9jBj#l&uv4b8nxI~2R5~ymDE9RB4^RcHL(mse>Dy|(*=Fl6d z!B@1bf!r7(N2f?Al5q$3p@$E%WN1~c>W7ptG=9G=<~cM02jFK;uQN+KU{Bg6(-4?u z_6YpfZmVCW|H)jpp2p4l95&!-DP|g~m{^^cp^S_w;h4-%WTaBUvoeeTI8Ak<(fX)) zauI6CXcR$M9}}js9swS#N5K&`9@xSfxWqw*E0RSW4(4^fU><=mLa>sK96}h3R*9fD z=;wy{#`?vX5O6|SMrELUuBg?VO?fL*m0 z2fBKDy69VG(G1X5x4|NiyW#2V-o5Y|M}eR;i!oGxx1M6apj;XN(G-ulA(M8V!R{eh zW3ULd#-F}0dGRd54CkA5^4OHoV(52DOIaeHx1|%20VE32!Qf#q7f+yHJQu_R zKt2np*T&@W-&sE5$MfK*>%|iR&Rd+2ju%gba4t^+PcXr<@e9xBxu&OM5i2HI^27%d zOjeVw-tOM!QZrvDEn=CMuIPcj-kzR(y&Cku%i&35)Aka(Fk}+A1U)o2pLlh=5j5)^ zTuae`bO}$|G*3E|U`9g^f5`=%Wa$KFiQ=^><}vtm3sVWU5BttG8MCxtZD_9b^BmFo zBA<&w=(f>}hMB101O>k4{WELGWb_KK$Z9Yvvdjv{JS7$#)j2O2#RHl62v!%cmIX7J z%V+~xj$tM^xO53q6o0^zBNF8>mwMZiBZbu&-0CzYGj4ZcM4p2dV572FN>>!+IT_M7 z#Kg5-Pnckis#}r^_LZBXe(l zmxOoB{OV^&O)fr@`Or^dbYa$yp$A$F&KGK!*lK=Zi)ke3Lp>MF1af3*w}Hk0Zn_*) zMskIYHCRqtN66vQ9D4TFk^~ooP)WSd#9>Fh+<~Vfl|}_tA2RJ4KnN{d<-KX zo;2>=XytS8=&SNr&+Zujb zFLDBr#?A$1Y>R48n{O?EEskf1l(X#5XB)NoS(9pEN&sZ^8l39D^mem_7?(RX}7-T2$@DoOD?;2|@`i6&l zWobi--rqgkCmm>tKF~GXJ3zSg^gfyWK?jz^2Y+AB90ig}ac)LX(6p9Yh_jen6?>-$ zI)WQqm7!JbrrRyW*_hrdQ++i!4{NmMZ?#nSOO4qaAIk|n<5qZC6a_VW2k z@haA_g36Y_2WuQ3QuC#{ZULOLx7Gtz^1V@M@B>XOA9W4@cqUT#l=f>h!st`zd}bni zK&2QgU8I-h@NsVH%oxv>Lz=|7(Wl4AinB$WUXD)%VL8;u_%!Fb#N|*U;}cRBo}ZY| zkYZl!BYBFBl^=S5onL8Icor_K@Z*hTIa_SV?Y+JtA1jTJ*N}wqW3|Ec)cLRq=a;)* zEK&db@*i`mXZ4b(+iI1OhUUw)7E@tfU!Ic>1aO{}n^FzsrnE(| z8m2}rXDaj4(=$3qi=e zZ*1gZN|xzi;^9;`E4WdXnr#G9&sVOB*)*;e!|tBz*iZ0X>f7K_JCsttiqS~E4a3*1 z58wd7ybzD%wP8Cx^ft4d&Nj0h*gjCg)&g$J+9g{Fc4D)@=f3|pf9d?()X7<)U*k># z^Ll*4CU8F9_CZ|vEAZKK_MZ#lKizEY#YO{?$r_ zW@+ES?jD~{P`bKoGKjSN7&n{!Kn{RkzXb62caJJS>W{>Cl4jQ zAIA3&cYOLo9iM*p-pwlRYSQ(GsC2(pd_V_Qd~ zPU&)KE@>M2@pUvBWt#8K3>qyw&4*dYbu`vhnh(<}>u9XOG#_S9*U`{9ucM*kTSr4) zvW~{~OP9emPt&k~ejN>AbR7-xa~%!gWgQK1}&$i$iEsSSG%c0!ptPN+h zDt(P5(4N{hYysy+>=D&;qSL1I8PRD?nrjPozmrbQVq}KBocOrDMr2wRWj0vk4bVA8 z-T<9r~n=CS;POS4L2YHj#nYEvjy}Q(Tv!nB7L8iSEd9y{{EXcHZEyLQNwd=Djz@we> zjIEi27SUO<6rpME%H_ed8;5tHL?}RagESwbMhMuMBnD1Zxi&$ zuD4nAZGujJ)iSIRdMfqiZ-Z#-qus~I^q|;AX!WsO(>8ToZ+DQ{{xLFJPb1TZa`Iad zEdNeN=Q|yp@3hEw3bGGLEkoqJIHS&YT4cuc7@0k5tTPjnSmzxUd543%Lv)Ui*_Uda z>BBkn^Sb=I9G&lSbiT_X-{sWCT~2M>Ws%v(#K?C$I&*h>tn=L#`ECdKZU^~pi_D%X zC%?hLI=jcwnF(6#E%#XDdj$D_xzBq9`Ei`Fp6{{9j3_bkPDkgR4)RWmyi<@58swdV ze8?d0w8)G*IVNt>&bu6)nNE80+ac6umqp&?=)6mij~e7%7MXo-PJVHOwQ;Y5e6Jw0 zzKDFUMZQ;%+l@B&3UY_#ifn@sEhoQULgf1#0xzixuXLV*w zjFI^p0kJ*bFUV2fa=%5s-$B0LLB8K2Gn(Y&w^pe01CGuQI66OIkslCbB;(RH4+wIP z(fI+3%vc>GKj`TEpriAH7WqL(Xa4%gL-N}%Y>fvkGUI-X%nTtXzYfDYV20qy@5E4s z8G?>T%nm&H?HJ8P<@CXbDUfcIkoYSAV;?GkVSq-kcT0uWr%#-AU|Z0 z*`ws-cWTI$bC7cma?T>>9ORtTMueQR$n0ry^6NK5e%L{NSdgDG+B|HL9~R^jplccG zeA047wZV)pM&2#RjI5N|Ey$;g%x;T}pC>>)N65QH=LmVX)tPx?PJW$-SdTb5KjP^8 zh(&(HL4HJ#&zSNbvB>PrV&q31ogZ~{e$*mAD#%f+dsL7|4DzEEnLT4pjpCg;?{ReA zBgkis%pQxpN07&?4D0!6%N5l#GvS;%XSg17kRKD|BSz*ii~N`%k6RfcKV!Lw%<-HL zN_t$tJ}pgSf0m~0&!Dl6(tPX{(lkc*G>tJnO=Emd(|E6G8l!lchNqtEXpGQlKE~-Z zEuTSS)J^ksWzZP+(tM15Xu-Kq|r-!&|=H>9dGo-vY!P9BeicW+jlJ67jKL#+qd3GE6%A2ytACWj?e6M zd}gmj-s>Rm73A}#{Jj>Lz7Qktb9Cl!4S6ckd7nkz=OFKMkoQ?+dQ?tbFgovdbl&gi zyx$`4caZlB@}$vuzeT2B#>fX8oewxVAF#*=9OMHI@&SuX@6M?yqx0jA&W}4fKW>p9 zcaR?!*q)DCxfsTYjS#~htGbsOjC$1L(O z2l<#FUotu$v&gKi7`ffix!uvZ-6FR;$n6etyG3SikW-h9&K-`<9fJI#(Wb*9cL?%J zR)&4;%a$wZ#o4FC$azQSydXz29(jwL7vw1O$cxUe805UwnLSfZy^43nx=u&uPCO3>qVRx(w=-rct{z?OXPScpT zrfJMX(=_IaY1(uKjrm!cj~Q2*#+)ckW0sSqF%L=882i#R<{oJpGmtcmxkH-9ydh0v zzL2IdJ4n)K@uxtGE&G(?jrcyj?QO9=Lq?XMLr|QQ7?W*ke3be8LKlr zDn=d=gFNmak6UEM&K%Zr=-PP3L4L+Te#Rm{;~+odAU|V~8G&Qu zX9anODd$;1jy&aAi~Ou0Z?{~`5559ttmkJfGUIqo)|RjZCmfw89GxdD@`R)FgroC> zMP_f1Q`hiLFH>zRDm^ImlBE@{~oMa*(GS z>>8surKGyDCV z`g(&r;~>unauktfEb@#XKWb&@Dc@j_XDl+ahn)IThU<9;nJdLS^^Hd6d5iqKAb*pU zA@Vm{uBbMcgXGk=7_Ju_Uv!XP zw8+fOa_Z0E{U>4dF9CTs#!?%^2VMe}r@mdT?ZCB7_zxL-aD9thWd@g1f7VF8>`1=s zNWPqsWS*B(ZyCu~9LZN4$yZX6%m#Dn&l$;A9m!Wk^3Th)9hh%&wPntj!!Pvf`+T1x z`96{SP9yoglq56DocarRXS|pdNk#}R0@Zn*K4V>dm%*47jK`#|IO=%~^kjBQ8e>bE zHkUywX3$C*H1;EDymAI@K7+Q9L91lYu4K?StB@|Ynn7F4pmA)TmgN{bP2)&AO?y3q z*36)V88l|@X*}lQX&STWG>v&~n#RmEO=HfPrZFo_)0oetY0SjZH0Drg8grNAidS0V zYoO)SU&K2-`ZdSWUlU9JZn?Gt*EYe|V~?gq=G0#@k_AVyAd=r>Bnv4Yq21>2p8<54 zbB^SkNPe%8oJ&a-Me_UbPTh-;%-M{nC?58g?KOHBaWp5N)c+NG#$M$6aYi34+UQ0< z$*GUwopn)i^eTy7AD3%8aLtVu^roEp0V5eWl7UG6RU;XsB`0cKS}dm| z>6tn8Lq>Amk(_sGaXuwU|IMi%Hj)dDZN89_q?hN^j~K~{BUus2zb4mqV8+v} zA;yB7`cWf!#gV+?lzAm3$%v6tKV~GaI+9mK@~_La9hk9n%Vb>1slQ<)tBzzpAo9kSi__qx=qm-w9+@2+6YwKidu)du7 z3B%23=BdA9&nUaqp0Nk%#~H1*4*m5kW*xeFuvo2YU3%`HvRqMy#F!W(H{_1`j7&p3 zCqiymWd5(5cpXtgkOvKN!+H%PtEb*JSg#9mr1R?z^6M7)bw}sd9i3md$c)dP`lLZ_ z3i1wnmaL7YMQ#f60n0^CAHf;xtO;aYXN>Zm`n!fJbdW>Q`KOIcXput)ITW2E^i{2A3`JvLOFME5myJ8Os&bGkZTz{UgJ*BFK@|tq5{tbt@KmMUV%q43Q(N zTd_K`5B1c~8m?6bdDTH)waBXu@~YHEguH5z*%N!}9~>xkl(O6Gb`}a&l|4y3vv{%-VbEP zEB4(wUcDc3IrR&Mo7sb>e$k#KXBj>qviIN`@Am^%s}DdcU;Ps+vl**We#vqXopF;n zNR0fZQgK<-aLnSiJ^XKj zx4Es%Y!d#%zNzf7Jr78Y>P=S(!^zE*dNbEg%GSy#;A>tYchleZW({YIwOt%2OPw zQ3r03O7hY-JoPUOFE^*@w3jucH$44Ik>pvjPUt_L`d3Dd+nHiHy`3qN)7zP%x}=YJ z>eq}MH!H<*db3g_r#CA_a`Zz_{c9t~ZAh`4-i8#(>1{}n9NW@UpD}XWWE9KkO-7NN z-eeTX(Vso_>qd@Sh+;Xtg(#BKTZke#`n)Iq{*pDw4MMS;-XIjo=?y}W9OHtg{;esG z+kav?z5OSW)7yU{ImQl8{W~Ma%{{T4-rN((>CHWn9OH|p{=Jdo)}2^RZ{3OH(7B4m zXq#mW^3;DYa@?2`%ju0dk(}O`6P3p}<*EN@AXVqV6pBroHy zr~bR)r@c^Q{I^*;1G_gPS;#y0Jg-)NdPJ zZp(;yxh*5f%YMRBzhij0(IV#MMvEjb`wvh3uHog@iI|sLCn8?vH9ok~edgW_+P)0h z{tViI4BF!vw1XM6Lm9Ng8MGrAw4)icV;Qve3|dD9EuTT_%%F8;(7H2dJsGs#3|e0X ztv`dtVQ;$KI7Cg;hB9cw8MNaWv?nrXPiD~Q3F&fAWYA8gXzXQt&^+}&@vhI3w#v;A zk*)G7?b1`fXLz~2A+~F7Z%FdeUOn}{4DUYSWjzu{Z&>(7oY8;vhK0y~Y15witl{K# zgxK%(c7*?JzssCf-xY;0<)0+)GXXNx|gGi3P;Xx~{8MhL6>hr?61OFJ_ zy(jvNCu0!a1vdx8yxbg+ynp%<;%}SA<#PX+m&^T=y!0_dXT!?{{4p;V@F#icdx+hJ zmrL?vUM|T`^3o@<+0gKEk$ud|MfOQv`YN^~8eT4&_wcW&b=>5#`6MrW7~2yKFBihc zyj%#MJG!prR|>jY0%iOaA|vzmp+eaRKv@~>becd%f;$RUd94s(uSAI&$SM0 z8NK}cYo!#PC36tQ3;a-kk>ld>Sa&WiPnN+r;;B0gFPDqQyj(7xi9+ z7l0>u8F%oA(eQFfcg)Kr-AP`?BTwCJc)3VB=H(*oBrp97Kf7Rfx$HXT<+AG}FXNY| zb{bwTq>g#HkUGiBxaP@NnYBCU@D8SU8SgxGufgSF=NOlZos+nXgBXbzUM^pbdAWQ! z$;dn#vmxl}jiJ(=KTzHkb>=~#a{gLWo^Hj+Ub z&7d(~N|!N~L3=ubb}oZ9oheTjk>0q+Qc4 zJ+<5Laye~m*QZmwv{z3(VtCIuyj&og#HAg3>QTeXC9g3qm%JuF zX6~p%Os;5gUck7y!2;J9X7mr;bX+hg^x*I`Z>1s z8D71VG2-P?#w0KO-&02ouU?!O@p5rul9zG8Q^yRiUTzria=BrWm+`{GkE`iA;{w9C z9=L!o$;&w6sSd--C4n(7mjotx8DBj4u{(Mn7x~4!T;!MJW!&*pr@`g2y_lEF_L97e zN1np}kCcp@3-MxJF2qanGERA_+wfj;crT@R8NWQ$V|ck(F2?0zxg;**nx}dVFPFc? zyj=d4Aty;L7U5<6;m`? z)N7!5>bNQUHK**?5@nN@<#_4|!&`883n^Zf@2MvZ@0`Osm*S;fmkr!$AX6I%OAI{0oLf}@kEu! zCVXcz@cSL+6JNjl`eR%JZD{R{+m+%i?%cWot*+GD@~*~q;}buy+^mQ7a?AY7Bm9Sv znZg|YQ$&F0NciuA_$gnGGQZ##>`xc^1tNU@I_GuPL(r~2^O5iRt4}kQ{R!_z4KeY9s0L__6KEnn4+=E zdRoUS9kKuE;&4{FDu4VKJ>1CGl|y zr8lt#aZdEOn#F!o8Xq0;ei^%{$4!~dMe={@YxPMR*16TOIht&d&PSh7+3)54?>7Z)R?}(;_rHjQf^9zzD=15wkkZ16 z)Vl2MzL8#>5@osUH*U9l*4Gc%@<&lZQFI8z0^gfHoW^3g(d$NfCh7G5R+8{VeviuL S=j}kTf4v>P+vWLU%KyJa+~W)Y literal 38912 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