From 5fb091b992149a28b43a234d46ea034386e27eaf Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Sat, 7 Mar 2015 13:21:26 +0100 Subject: [PATCH] TMI-107, TMI-109: And another test case covering both 107 and 109. --- .../plugins/jpeg/JPEGImageReaderTest.java | 3 ++- ...pg => broken-no-sof-ascii-transfer-mode.jpg} | 0 .../broken-jpeg/broken-sos-before-sof.jpg | Bin 0 -> 28814 bytes 3 files changed, 2 insertions(+), 1 deletion(-) rename imageio/imageio-jpeg/src/test/resources/broken-jpeg/{broken-no-sof.jpg => broken-no-sof-ascii-transfer-mode.jpg} (100%) create mode 100755 imageio/imageio-jpeg/src/test/resources/broken-jpeg/broken-sos-before-sof.jpg diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 5f02067f..af879364 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -103,7 +103,8 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTestCasejPDdT)Xh5m1p{B_Lp^La2sN6hwMQ>C!u)cTh^`ozS~d zLXlnqA-{ajeYc!D-g)=D_q)G8eq+2fGS(P7JA1BK)|z|G&zvjR8SDyx`k9)h8UXJW z0IwV`9{|Aa11ObkT&!&YHUR(t01rD4_y`~;`K#f2a%wU%GU_{&6cm(qm}u$f=xCYl z(B8o{T*t!B&dzcN$ct-05pi*G5!ruhc(-qp-zKLdC#R&Lq@<*|LxpR1?oiXv(oo;I zLwARs{%;-qUyb>14M&QdoeS4+#Q6F7u^j*!61;r8a(uk|fLkW zgvu}9(A{?n6d}43n+<=$1*CuV!&+4AebAT+F?XEa!RjH%U7X>2RWOfg{A-)1KXW`J z7{~S3Y>%oxc1}RnkJWe+azE81c1`{|$*b+2`h9Bf)-xn2zpe+laVDv5Xy+B0Tu_gg z-aMxP+`5J1mf&wZ5fj~#{TmDSglP$I9Jt-5BNPdYz4I3bKVFR;hytxw-v`C1=+T4R z#SXcN{$hZbNBrkFj)@#bo2U8`9=2=$#=<}5fcNiMz|H~4@&7g~4L}jFe^h1PnSE(2 zIIC}MvBg9DBP;P~yAfIoC0R9K{(>NtkdYxkTDJ9pK~oaP9y#CRzCh>EHJF#H;Pov= zgR(@A=W{#upu6E@Tg$q{FcFMo>i%7 zpdLb7hN#x@Ba!(){qif7O(&P)9yUBTw4;kv0~S!2c{G6q95iDAsFddC&*xhJ+lNuSRDFgVV z_LfJ}wWqB)+{3kO&*OtoEgQu?1EJD<#XTO zAcgnbm6?CI3NJpA9WOOEYU_(ry7HvX*;Bt?p%QKA=Lt)HoXSyXW!o|x9oktf>5y_g@a(&%k7JblcVYMrO26^0jIN;$yN&sFCc9!&2_xSz)Q&Z1A-h*g3pmLpEXkOWeEPLtM)wz=W`VV z2U4I_Y4F=hQU=fy(Xq(G$M8L{E2^^TYC#G7nF!!EVXx@>GB9y;#-t!lYUlI55{F@t zCS^p#hhmHw*w~#%61lRLp}=@+>aES2)7xLs!xB#g1zDTmATNB( z%VM8^hz9Lwh6leB4kKb$CDHONa-F4dBRle7x*QNo#XY1H$FnTxh~na!zEFw0by^EU zTFbY#X=nw{_p{JG&j1m-C^~QM&TbQv9){8)V?|D_?PJV%$|r-syJgHLK(AJlL+aw&f9B7@gK zfu!8sge*-7|CLSv_vZi)%=oXLxqW;dc8Bd_lHt@%PI&AD{GGJ;Yyz0@^p8W8k4K%YiI?Fv zzZ>Y-ZEholbFM=f3y|ibCB5VEBJH_qDd2;t!=v+4a&kkokF?nMMLJFtrVFW062Gn6 zqH9G^i>h>}&|AGkxb>g#;7pgg3I68Mvs!uG{9i^75d+`n*<_6dm^Ybdt%!B;?%1rS zMoHC%tN@X$l7Z`WwvV{Je+--nisfeEFV9b&Tj_~1TLW;2WUCoS=y|Oznh&uy)e}dz z=H`~LaBBi%o+T<&V*y;7uvKt7inaWaxzmt~+OQy}f0_Ms7rcX4eS`gtk6qp6&2?@qSo8fHa!(J zA7)>njbsot?46V#pc1b>9U2?uXk*?~Xyt7gB%mq;`u8?g7xuYvt@V$FaglPJC+pld zTTq^4^}P|;PaeBF=BuN2w|e?ia^}bs-(WAY%1`_~$Lk06d_}X7ri*$4*+aFvW2>nt zIummmc)paz6y1%(oOq^Tyh>txA?S}vI}AbAZfV4sZMpE?6x-Nk)wdr($;knC@VJgV z;l31#`ok_p<(p>6SF8FuG`Cc;htnbUuiNq%A*{PM+25ex4l7E3cuPyl0h%u#H4`j53zcHkyj?M~-j$YTPy-#b04OaeZ8m?J8|%?t2N~&{leHY zwb*X_EuuD{jxtj-&n?A!W*@z>Yxf$Vch;P`%@8z{)kZY)nYymM`>IMu!qi;R4m`U( z!qO|d{=3#DNXBbg(liCi11%mPOV65r;|6YH|7A^Xn z)*vbP<P({4KgIu-s(=VCfmVxTT`Zym^}fvIfRpkY#$YB8Y!4|lW3q|dphRHM`&ZTvN+@% zDX=&ku2N_dkr9|0TLX_qG*2vM3-G&wbL#f{#)0g#iaNXS4pQ|6I-*0@gUFgc`NdIrG3M^o)d--q%3pl0c%Urt%OiY=j1;4>>`&eua-NOPhs5~OSqkzLf zEU$|c2XwF6f0V-(8ent&vkD>EP;r}AXd!!urx<)lj@m=-ua~%>zoL3yTPw#4@cbe8 z+mlkl7};bsRgySQK#P|#Iz2sL)BGc)fg-1vb|kwK>-7_JsvTz+-P)APeaW?6hsBZ| zcFrSENBMLf)`_ng_qsQvNAitn@3n#`9nrmC z92P_TDbVac?~lq_WrLyZ!JwT*so`yp4Usw)OFxz!qR8$~Nlc4_Tu|*FKVcdL4=+w- z4$iytB88~e*|!oD%Nh&~PwkjPv@<~vi=4)>QixyM5gq0^iYYj6B8a1zYx2Y7q8XlS zJqHoOgW^gC{OX!9fLP*r0AqyydF3V+5J9al6|zMO_U3K-$oCvwxnDp2xT2l=bm?KK z0T;xnR1AO*ZHfVY)ra+va=hzw45M#}U4Et52$81_9;?(4Mc1n6@`wR#K;d_pSsp}i z#ixwiC8K9k2;B5JPh$#W%SX||@mXiEp!V)f z%oYp@J9+0)+NylH2xH7nR^xNZtAFg!h?LG9`BAQQZ9yZw22lu$4lOQ%y7aW;mq&g7 zu~$^m_WG$8!zFt(ntQ+y^ zd8)_xg|6)&)EAVB{C0G&A}>`JMA(t@1vBCQU<14lUoAe_-GN0AMOUsh5rlsxZehsW zH&J}8cqki&1(;z0BX#^P6>KV0LUhcfU{kkc6m4f?7DGy$Y$jp#sa)`>7XuZ0mV#xj zuj8jTkvHdumba)RWu{MIbwc;XzdE2NwyiU@dv;Q$@lKeZM!J8y50v~gxq^9_gI_9H zG!=6$p8B~A-O$)kldJ&Q{NWD88&Wi5UQwIyRAuimbre!j7mLsUOm$eU)h8fGd(@r` zzK`di$l&5CmMnxi+4_7M?(Bl^*=mC_1Lvx2&*rHzn>xMplD9W(=H2iTg*zH_ zx!02d#6==7ay-J7Z!Acf5;bD>a`B7j}vedVG1 zJ2BhI`4X8u@AMB(DuTyk40U|!sqQAW-1wKfX5KnlqyH6Gt^YO#MC<*TK?YeU^4PVi zSK8>*!Zb&_6uiFLaA(rvn%t0aZCy_*>eCbw$Yj?Y6*XQvSJgEj zx;sj6!}}SM6la^qtgpUV)19?1j$A-L2lKAi5L7)rIO@3TVd%e{gMwE?hpfDedp3Ml zO#hm%+9E1_;?NQWvYyadlQc9n0j-VFyN$}I+^uSHd%-Eb6rXPF%9dudv42@c5Vt1Z zFU570qf6j@abi6=CtTvBUmsGbr0vNgsPgUl3%GW0DsPWc;6md;5w}COz6oFCElpsM z(Y(GP5>*az1bvi_#_NcFY~Xc0w-q#^-;f=J1qA!eD7=ZrbIAP+bkr~b-F3!0CJ}b6 zJTL-x<|WjiRG0}e74O)=lfm#On##49_#O@~*5H3Y{W${F-=lc-Zkf|2Rd~3j~CngkJDEgU(WU zGgN)bQ|W|Q6q#EFWeF$EB!%}@qF2=2X2opjVxwt9f`N_3*4^YGw;m5b3Y>4CvN;$-kwbD!q7@6D<21`7WqsAPYnQUKYumV>s*_u6^{=l)DdSWZj%@s5nJn_DhO&s;X5dBWZ? zQ$Fi{Zd_4`i`I7Xj8i*pIQyR2`6NQ>TJxO%Q^QQ@$>BR&0huJ^=#O(Tg4c1?i)NfG z02A56t^T4(8{sDB2JDKd>&P<=o*eGj z@?+-am=!jDQhGh_KsnNHzM2pAkLbPsfpzAdi6$TCBI-Nd9VM>nm+4%2RUzx-&$I<( zgIRkTbfX*CUhiyQ+(Dv?dh+XxPiAmr{_Ft64QQW@ypLjv47g$j<#+@rGf8zsD&N5c zbN9<};3)~d5^lz7$|igctiJVi5Ch-CMZD`YV)I5f+R)8u{#jMIFk35ufNFCEjfMEq^{kI zG9+~(UtlR*Sl5{N30E7Uq#}uBT?{gp3L%Ut2;- z+}>xN+KGlb*WVpqQ^}H^ic)g07u+j7e-tmAYKqTvuM8mOLv_x7QxOU>TFQ4a38yK2jz9S8nDC5skqjpOzxia=1v z{LIXm$s#+KdzKgNTM`q#*EF0YGpJ*_z>g8Y2VF7#UvNr#^3N&hzgFWv_(g(aRTCIe z*C0}NYqPbBs5VOzm;un#kwh++Qf#paAS;IrRHq{F97CyL8Y=lFBY{X_NcV|gf}7jZ zX;G&$loyq|>1;a!)0@161(Yiq?e)1Y?577=huE8_c0$X+u(UZdo9BKX7|yfg82mqE z?CySmk1KXB{1&FvqYk@y4|#au89kQ0mG3EQF+MFOT|OEFr2b$Knk7ejLL3zJwRMvi zbq2ehKzCe!2r!*M2ZHej#mhu@ecYQx-6$vR?SA;0toUxKv1ySGT7?%UPg=dRx&rn@ zU6jEJ+l^r0ljSPg#dcX*mGiIA#2ec*(y%!n8O`6uzeQf2jikZs?LTOd^b!l>6&C)& z0veNdeLdndP2KO{w4R5XrVnuzc=ig{CH!}Op%sJ10+8j!#s1|hq&#MOt{BV=6b!uRuZx2ctN^b?#uPV;-ux(NumP7YQK#p@2jyB^&pGS9NZpA;s=cQ z_4C=g8nKE&ud_u=k^swbzneZaau_u2!Hgcyu<3`|o;uI4n^A7Wj4H&i1Wqpi%c8<3 zT~G}i;9fBE(YXX40SO1K9)#7T`aw0ril-50PpArKbReniNBHxu?Fa1XosvRQwgKYZ zUnS)_s%1#(Z-2+xJ)7yZ^kdX1LBQkuDEKZkk2{cQ}TH zn-|0swX-D8zwGNT7!w(hLff2mMFWmzZ6i=baQQV)oB=a_{)74dzvYVlCp3(fP0)K# z;@o+63zlS8@wFf(S(n9u``4-hXefUBxDJZ#A)c+L>SV)UVX~q z8(B$DwZDGZ+*zm+ICD5CYmKTwE5e=RtGCgNqJ@kC1GjZCxI09+g=$+te&l^kTlNX@ zn-%uz6!W((diJ%$AEbxMx*FTC05_gKO3yZC4RgXpuKZtSB0^o?=hYb$@*9^o8Ac$M zL>6~PfIoPF+#L7rDK`$`bw(%mK$&bv6CM2$BRX6tjCEIg(sfpbm$Xip;X0xk~bZ)NVDEO$*!)|PLr zjDl3}g@r#&GJh&QZQC?+CMG_71Hbjmj+W61iY~qoL|Ma#vP8S1j`$ zy@_MSfk8&-VR2LTy+6)9o$14C5~vTOBEnm>gV03b{R#u=A%c2zZX{j7kkS_#F3oT_ zDE#Bu0T-&7ofQAA(hi+|K`zY|jQDd;8(N`6{3MR$ETthV)@%on##cX%T-}^E->oaz z7P5uZF^#;LYTJYg8eDCCuVXGLi+n?E!VHN1Nce2^!dqwsdY9+ z2N%@Tc=AokFd89tS|!SJlxEvZZJ++=sjpWTLoCT1N-puiCS(6N*ZEfc;}ky)Vh?ulaoWoF@S8?E8%fleeyhO#0zy2=`1OG4;|tfT=%8}^ z!<)JYIi8SJMZAipI;ycy7jN))E;qov-LFc+T^`8=S3#0zhxRQtt1*#ub?r;-{po(P z#dQY_S{Mna!BE+}3PR5lnG#E3H7ZaJ*Y|{ix6AyLDT_zB2t zX@r(`z=y{M3OWrvSimL_G@mDf+tKq-wQ*7&#YTM;Pwgp6KS1@KY~&A`~9UrB&2vid6Dg$xGIgPMh;<9XMHSK>Kfr zc@qq`UW9xDt0{&XN{WiIFoZjSSe&B4{BLtfGdM3FVJyivKrtQiYHWjhhjeUHhFCza zx8fldaK2+umOdf9@Uoj}lyU!U7^nV$2Hxb2Q)cMzBx8*@`}Iyv(x&w=-mL44RFooa z>(Q3v0o^YpWLtrC9d81U2_xeq9xouNa@&x?7Q#b!< z1%%vv?wpYtDGQ<+ofVev`9?5UeYRpln33VwQb&`?Z>15T*+>gkZqhBpJo-~A@4~ke zt)Fx96bmSl=pge7u941l%6wW%LF`;$nLD**>*J-3o;Y34vwArJmtis05hZlO=yB4q zHqKj&H6mVt676n2z#=%Vb6swJ;^6M>r>{h^3uAd-fs0&@S?kOu;QZD!tdFCa#)W53 z3<-6G@QHvqVQnk-4F4mFHr5LPjpL-9mR@(-R{& zfo7jaV;*GvDYLX#98tqvnnhoKBeJV$``IR!i`f1fC2fps!7R!*rKWxA9@4q2z>Sqr z3-W-`+B%iRuc&nHM{N=V#SjfO8!e-Ve-*~ZOP&b}*cDX2(WY4R+o^8c+Q$NBOtF9? z4c54u_O(8ClX@vEpeMZj%hS@~w}A{J0NeXscj(wvb9yXiFhDk$yJ_2Ewm=x#Sf9$sCShowk} zrCy2mX7Gw1{U|KFyqVlYZ|Cv+yRd zrs0rBmNZh=cG$`T3n(>zSFkyjU|)773pTecWmo9HZ~YF+=tr1T?H5cIZb_93P;xG* zXSToa97aYi>>QdK@CX_=EyrXzyBzd!h%gl2&tqT|Mi4vFmvRh2lHrfTl z%`1~ll-!b|rZ^U~bPtSc9S(`c~292$c38jwZdWir z4f{ol+ZJSS0uc)YJ0mqBUj4(A&HX|dP?#TPyUVFU`lKYm;9gDuD3I|t##bdh|U z)*Ww}fO_lB9CQ4WvhpZ;T5y2+PUKpOMMZoSU;1T2ow=iYfK6hYj9-K94NZjcx!GWx zw$EN{Kz4bV_j7BL_5cniCdcc;6NAw~?Vl0`cb`?2j2g{ybwsj?;|JYYh*H5gVew#V*tD?0B^z|lNz~Oj|_#b`y|Hb zx5E8rJKwejd#go@$-P3J?g|lBnT=j?XAOVz5sWqH*}m}hG~{j9BD*! z-|gssDNndOsRv5h$O&ffrhZ;U;=0Anq1qKqj|C8A8Z@Dr3UH}4`N%p%IP)|$E73?U zQD~wb&qDB|Z>{x}QNM8Ov$^RQ=9QjiU5XD3Ll;J~lKRjg!Kz?!wqX{{s3EQ&%8Qbu z$VK-O?o0lYecAMV2O65@4xRzlFfp~NR%=@X?@7gd{p4LqSHpc4TDqMMA7kNd*hx*q2Yr?kJvnQ48kQ6ReUn5)s%+#W72 zX47yN?i0Ud<~iIF|44f~h1_Y#Ryned#@>OG+GE$_^4{KXPmZ!_=3>PVZ`yC~w*=g% zOs130arvctHSO-YopvlNe1i2JV2U%j-!4ws`#`B%Tq=jZO^O#X3KBD;7D7R$(I8V* zS7y>=hAp-x*^8Dj3IvG~pM?4q3GX zKy|_9&3XtjQ;w+9Xosh@Ik!mK7#DYtJ5fTS2A= zxb!O)U_G<_6|#|812V2=60fahXOd{SW!{l-pN9C^_Rq~6 zty}DVdk7YQjk_Knuu{c2x($m|skKWU-t_eNyC)5NUXOSy_0$?p_mhH-4uy=IJU?&( zetVV3mkBo4_nJftu$0v1MYC#|aYice#ct1|IZT>!&2+Qf7FE(bL`%rib6)N}R*3mD z-QS6xnoyYfEE7pk%}c@sdXNGlZ<}n+546>Y4PEMn!xe%Q7XZBM<7aH`#;cfCJEenlf$$K|4wQT<4`n8?Yyg(NxiYbWtAcBtwD#;mF}C zOdy1X-|0Cd`Z4m>CI>+L;iMx4#2MUG6T~W~4zaK73TK4)BKIuo=iG>#JbV)wd;`n8 zwz)EM>J;fA?w;!#Cp_fCnO+q^Yh*>9mFynT5l8ebp$oWovDkXJqpdDtVMDx&H2LiE zK~790kcz&`AQ6S4vQrV_CH1WwR+y$V3j&3QpFRQNN*qr5B~R;ZxrdsIHbEx~E7Ohp zJ-uRv?ybWVDU;`X%Jrt|CeHX~n-gyp3sn}(Ojb5YDP_)7ZHa2+6}aJ~%M0}r{# zYFe?QcIIh>XI~BWy|tWLXijk?o&=kl=f;}`7Zb)oaA_Yg-k899sv4@XC)e}??_>Mq zL`CijYe~qt)4-4Wxy*9~hd3w}QI4k$ws4j?HrB4NCqMh@d2(zg71@65+k-AS{k?{4 zt>>ZUri@G`=lY&378_E%3zF}~=C`syzkW4mZO-kKN*KBavs>&9;ZFpxiG((9X5or+ zg77SSC_02s2dD^I4QZ0xL#CHx=Es4RPcM!3w5Yoi*tBX9hRpg=tCv6H_L+lxnvhBD#Rm62XjO}p;3`!dO57-BjOp}30v%;vYr z{2n1%eWCTIt0xN*s;#}Gkf=D!rzuTf;;)CecG)WTq{CrHsRk(Hf_W+sF zf+vRqz+I4sD1*;p{;sx5Q)g{rO(Ppef;A!j)Sn=e$%i>uzyhG4m6k?cAToCWXpFpw5qoUGt zSs&C90!rh+CBj%vVR^o#PM*JhN$G1#L=L%b{5<>fMu1{M=a-<+jpr#&uirayVY)1C z^=BFlDw^EX%D!2iX!3%`*hbAkyoBDIavUTPmcZ@ZX@C2(kxNy-Piag$if&HE;RU>i zBb94&-Ea4~`R=Py5p(<}dX~raxJt9%3>-HfkosSz z!7k^gaZzbF6&7H%`P;}!zcg@P9l7D$q6-d9>E~C(1pl=zxUm3PUo7C} z#oTg&cn-}>)pT_iCUd(<|K=-~?}j_L037%-md9+1eSo}iST?m!u7O^{Xl27k0c7KtE#W?q7g;ms2Qq`#==0d?PT&Xl=}f#IH4K z4gre#ojAAxjxUxBFO4zqc&g4tw zxqCgD=o1x+5;vg;$N9_bXL0{jRmZ<`L+<5Gd~ zSUEWybDeV>LOF?xmxfB$HiXE|?gMAJ%O()UB<%)GG+T@J)4(i@%_ofqbgaa>LGz{H+l@-8=PfZ&$gwWqOJ?sLx3JT#nYE1GV zc=LHodo426J}hM4tyUr7k+OSmS0gIKOrB^>01Lnoqy3B57hZZO`3#9D{74=~YB` zxOdTQzI6hSa8&P=_*9$4=n5o=j4Dv$*XQQ#E5+sK()<&`G=RfcY8PGO1nUoBVFg+b zXD*EX^!K}#7uWiYI9a*Mz233)M9#mvx9d#_4ke)B{A60RIC+S+d(k(5=s792htM}e zvUe3V>uPqVKQcmaLf7XW53EtVF7Atq)ki>TWk|)7fyaruO_oaj5_^-fZQ4)>A_s7(yPJEg5C#T?P z^_;&<{WlRzefJ?!Y@)@s)0#OlJrf}C0_(J*=X6b+s-O4u%krIM7E%AssNL8=cL#_* z^1Q8+)3~Nm#q;u*UBj2^ahBk<>6=aJq3%I6eP&ph0#xH^ z5bTeoJ{{~#_=m}p?ENHqI+Kz#q4PATS;Vp`DZ}g!-uEsP)Lm2&6}>0Jbr)&6WrB@JBWKm2V-4 z>X@7A_I{3fNjeXcJ@@wt;svT79j;!_toOZ*y%jLJ?^)`<-@fv03;I7+0Es+Vq4{Kb zs+tzlyz6_*D08!r2C*1&8I9F<=!au5F_qoPcPa;e!X8(28C^4T*hMXHpLy^7Y~RY; z`VK#C`!0x1J}qnYZOXXGOmA$&3xM+OfFxzTn%$oUZ;gzt&~GKqnorfC%;x#v*@J!> z0`3|y%B(@vZIvg?=uOS`f)obn=0d-mc`)QndO4@32WgN2$3^oFgUyQR=y5&n^io5m zNFUWnK4+*@6WFU}3&8SZHUU=`(u+{M^fwHpbUy07(Xs3LkPD~je6%f~o;sZy_bli& z&QJf7B~Dr~xEFA`_27rwP3)AL8xUS121D+fgq~5Rm2LRaST=z(SxIki0Ui57X{cjy zh|B;RL8p3#*kksK(PS#N|MAoopP)#j2!ue+bJ8M>7n>Jpp%V|RHnuA*7i(rtxtL+ zP$x20R>{OqF81t()ajbRz$|_!&gZSOdu&2<*i_2xJ2ITJze-M7dF`xzy%ArlsCkVJ zAMkRba&Qn9I5hm*Gjt@aba$D0HSCq)8?64pW6`SHwI`bIybf>0ZH+D+ZAlHuH%v|$dcpRU@h_RCn)3Y(iYxV2sPmx5>?hc&bOIeji&I&&dq zXGXxZMd2E!wr(OK+n8>euUPCc&;%=dBw6oJ{dPq>es5u!ie6`=q`Wy_G;h(*F|T22 zU8R_a;?2{>-QXsUDC^lY8HW z_wtYGSC{kMH zKP6|*g_ky&$a3Z{xa$v80`&1rsO1E_H{QFsX?!)ykv>@$-UnNjAUxP3WGYm)d3i7w zGr2amRn*o&WObo(9N&T4bsvyjDHoKKvCj9Fq4#cQ#Kdy`eysjsn{d-+7(v|) z3Ar1|Ka~lN zn59(jOvWURS12~3;g9drjCQoAOe?j-V_10?FFqs=7mYfjJWsANRf=1ZCFKQA$Xn5sAIF;!)Uksw!)dd zH*dGN^P(VcRT=S@UK}Zu8eB&uz7_xerAc+Su(G9vEv?xPwB;=r{5NZ}lVoJ}|2bCL zs8%cXyCuQ)X76lzEGK*n&C+C`2HkHk6aC|uhXhz^-M9toUUXdV5?gq8ciPs=V7|!RvAic#c#pGo=)N++``dBrH(8K~WJxX* z;uXt#w84ginS~b95u!5F9j3O%%y~#HW*!uu`ulhPM#e+1+PYv|AX0?=jg^D|E|dv; zgzNt6I%d62Sj0{JmbLz9k-~LhGgp7U?98I+<%r{!jnlE(R^~bvsz7C1YLSnFLwcyk z$^lkjv~=WUbRjJmIRfn3N;XGD4((8NZ)5m4ij5;ibP(oWTq+r)_9=p8nax?>7pcF- zh0UgPxKh9o1H}o;+pIOxau?NF^Iy}3r2*VA+uiFb$}7`yy|l>`8AY+oA1agy1gc*udv z0kK*7$>-hN!)S3GAuX&;9H zuz)UqyK4w^_bmD1)BlM?+pydlJS^bz^~eS4YIaZPkgOgHi25^CaTSR>wC6O1Lr%v3 zv!Zrr|6P!mQ;L_!E-YZd9rrWMYkVw#<}&ke>b!c+a*fdir>5l+%X1dloB0wfKnsWN z{yk|V@ZY4#DTW=F;SM)7Z06m>Ul8AL9V@Pv{IRQP?-E?Tk!?3<-92e1pIHoIFGjQTjH^ctkxI%wN6VCPTBK-T@5&FL~1~C5r#~EW*-g;V{Z+Tk4 zvZJn2j^2B_T&wSAw0NbS@7ZAN%7Qw>(9p;wqNFbG{9d0*jM_W3=$SRm3Iq3Sq&)WK z3xs2y@P`e%8 zoRbM#L42O|?NM?j#WYOrjs3+AZLP(b0m2v*%+z7FDb)dZr^)@^Trdghgr4w(?lE{= zQ{ywQ-dkb39mtMQNpD04U*#EWHb#T!@pm#}5BB{djPrzaq&{3yk$;dK*kT(gY9(D{ z$ww!D?i-wU3SuQ=Ca$U{_HtgAc@L`EqSdrYKXqC|u)c`ks`=|2hnNKp^$@u8|FU~j z`_NSz2Y2b=4t}P^$hf=|nWladnM`!+JOeCv?iXD%!q;l7XpH8PS=Opbs+4_{Wf`%* zx^5m2x5zzj+InN~R6PW(-dng~bN`dCLJ)@wp%S5H6);ka8MYg`=|Zv_tZ`G@BtDBqe(G1YC@ zFqJ1IH-`y#s>T4*Z>a{5%HS1~0*q&*ILu@cS8GmKX_|QpRm=%$LK=UR*~?J*#6Z?F z4An<{wPb{}3J5DL#+o*xhv9QA!^qxU-b%7Gbo_)9N;(ruRI4T3YlrYlIiZ4!Deqr9M>ziAFoEvvhXAOwn1p&VC7(O`*JIFOj zD41m;Tq_>E0=s65oyy1fu*|S)Xul{-%_M}(WZPLu1qA2s>*A2tCUlRbNsU|$(NAys`jJ0coJ9vRe+py+H|yIMm)8_p9enVL)oFp)ZL%PhP$Hdh>aejF(xNbiB#xwYl*32N5w4SHvz8sYYK4V-xJYL<)+N5W&53 z*6I_%EN&81D-_Psa&Bz2_HLZ0Y69VdOBKInt+T%;45Bg7-*pMGup=LegM%ueD%Y>H z7U!sUa14~{OMH@|qTtnKwdEIxAcg{Dcvw4WMkV z*zJH@1bN)EyX~8v)}=3E$$}4Iv^9dv zWoE21(LY4>>KgTu(n@3P71M{R8n-DNk(}4y*v>6_`&G4R)?-$nqijilQf*NMc80&P zvY6NWRtW^DhP_2~hxic-Y6vG;5=-x2nCE~6Cafke%t44N#8Zz&pdzHbpx`|b-e%@6ehKKsY6iofFZWU zKX))ZaWF6AEtwbF1*&|c=QP`DZ#+r6VkY!_!J{JbKDm2dS@|=w`IyVHQdQUfM@EQg zYXW$8jB)>AacJfN?zy23l2jarNE3wZfUnqAIMO969!|_I*NniZ>cgwpqWP&sLXuoP z@J50yb3==sM%Ct&WphYau033h=;!8Q%@lP`&$V?t+~-h?p8CcLeepG-sXO_k@rBSU zcTf*v0EI66E3*0Z?I?W?=@FuyP)`!)h&&X2sLq^{p6@Z{AQts1Sh(Z%H}@7U7Lu z`Dk?^zWILWe(otP4Sc-v`4oEf_I{(aDVn)4w}i(Z)^>A-_SarY=o@{C4)7@88wQ)J z&mk>6Q#iD=heLwP!{DJ~z5Fb3>;!dcczOpWXBoIU7EP?Ku@Y|8<{CW60>mhl^#>uK zw?0=eNpYKg7AkExaAf}ZLv2u@#&QxsRaTH(9tezf3Pu@zVbMx)_jcT*#(i5 zX>^%v5>hrCSC)O6dLoaO4u?}pRu~H3APEN7Ujb9>e~Ck@0_XEiY{%zc-}b;fw!EBH z?B+hGgt@TrT`^xZ{v9M`o)^euQP>sV=UP_8B>u@VZhWrQ=#x%;cvtlUB0#FYtZE^V zXV2~6c-`q^)yDKln~X=znDOqfh@x9ns}&Za{sTzD+VB zDA9W3dV=2Fma~~h&8;|U-p{_Sc^SK&J5cU28W!zCuz&S|RX}35{nndxI zG@5{B7g-z4vsc40;1ZqnIxHbVKNcfWakK9_iMQ%gv(^hKXhv_5PhD-`uEYagNg`Dz zPx#%HwM#TzW+6yj46;h7VaQ#X%0o0E&tV19Yv}K7qT*Is^gWiWlq2==55+a!t6=Vy zhs8+Jxnq(NjO#DGHoIXk)LQgbePYiccUGH&=CaK&ITLVRY`&Arm9SP=Q-&}qVkLGy zL+bow<6OAjk`AE6)-r(2yu zgBFiDo-scbRiLCCT4~YwMa{^0+a~kD!hJ1np+rK|6`d67ZSkzC2)(eGOtvY_x*|IbcPo`#n%%qn5+9}6z2$K%>g{OK&ojHL`35AiGGO<6sr z5VLk4@%8f-qI-!E{a~#I)xGF?zdf)-ca|+uz4K& zYS7L7!$2f(da3K)#N#RVyTH~zX z>%v#3XEqN~(A%+e3DFs<#%b1mDjUe1!s%;x!uc*mOG3})ao?N|b!U~fx%D-GOex!# zRfyv1^*pa2EJor1<_HH<$bUwycCVaBF@;09PuJ43*%0yK_8o`MDZB}{ zQ~!dui5E63KGMvshI%V(vm2tZ0v&LOS&g{ayJ=w%VouS@a5Z#4U$^jOO<2SqR#6RR zSWF{Ffs@(UWM-vHlhDg9b+Keud2-;j&{4NnqoSjvi->FCus0z~0#dATuNwkjOd!^Ip(|ionql zCV#IB!`9~`NXQ9u#%0;sM%ujWCJqbp*(qX(B4mT9!I=PEB2I#igE91FM+pEYLdpxe zMgbriJpPwaXMP7(|AX^K3a*9G9MV0F+lkt#TmRh%2+qS7O2Y!D0~IR(g+k^KN#$Go zcsCU|Z26M?o5!eMpS*}wm8=78yb8Unu?#I81m^LJ`4|bVr{%Zy@WyExa^?dI# zmg|tgroT{em1g%zT_S;yO8Ol>0hn6Q=IvjqJ8EUh^O>bB&n30d>@Cv#6YU zexg`}vI;nAHGi8{F+}pM4e%)t>*x2@8yZF_4HB&^_;e2OymYcYP#Z@)pT56sK|bWi zYd+Q=)>YGObXSzvoN!@<1ZUOvh4VO6mnuLVGY4BD!^0=-kQqfZAmY{Av1|ea-NfD{y7Bx_XeDO>JFs4vGG&#E2y2v84o1#GzF-TYatu ze+r%WB_t>X`>RN02#dp)(0b_Y>p59iP6u!e80*<7I}UX*Sq+$2e9dqI8sh}hxuKol zu|i()p~x~$0@&81?k|y_puc3e|5wJ<&?2&glMp}jB6SZldRXo!s7C>4p{>46mm-b? z@K_JeruFFz#}nf}%KVA?%~fd69*Va54qb}!FBvH#01gxg0i^cQXGo=8($K}>Jv0;c z7`gxwKvR$eu?TGj6To&;Nj4oOtNlQ_U60)?YGOz#ddrO(NtO)e<`r4fCF>5MeaX@~ zvF1b-;=%gPy^lY}n@0Z-?nnBDL`U2lE920FRZdijQ#Fymhot?BVO=}cV?bfl2@~&u zElGL{y+IdWMAjXHR#{0IEoJ_#)Z-$K0QNLmR3P6bGv5PxmE$yHk$U`aWQ{rAkr-bk zmx)T%S|>@~{==?GGn1ONYEl_oW+YATA&YONQL~6<<$*x|jex7UiNb5}n?RFob;>)O zRhC2Ct{0{O2Vp(irU$l0C$(mOeGl$4TG|0@`bgy_24rltKB6YN3hx8k*?ms+;%E?c zQsz9+m9HIlog_XI+QjyOAc~Ob{dITT-6w|26re+RFb1~Qz!57qI{eF>1$-3upk^FIG^-kY-39OE^Yysc{@pSDaqR8-uRmw1Zk zwbjjKxbAyFX!79zsp;yHy;AvyCb?L4r`L~qn9z?yK2*qd#PBuAbbU`=*CXB*Y(3{Q zt1#ro$5_46z|mALx@KUP{3JS-r5h4`v|N1T3B-t_srl*XP2NoX86BX{LUPMb8HD3q zjj)0xZOTn&&btYG_ri|1uRXMM#OLo{s6Nk+ziK)WZ(ko~L$Rr$tLz_i!y6BR;HHV& zeq9|an&x6+w_O4X5_j{*HcOEyyhI)6%)-u6q}=T`e@}woI^~I=iC{qK{_Y`mg?miL z=yitgLyC`6EnE#(U62bcsfxIpU>t{jq|>%MyxO&FQKpQlRHUr= zguRQ6eaPpJPGIo_f#)iY&sN&C-E%s9ho1cjxuBlL?P?jj5(x1foiMda&)BqdN+4A} zCwy8IH93M7%XO^yU~hY4VgO0K>Puui8{g@y>qyFLlueRYJrCfaz?zLES^GuNwW zZ2-66niywCES+AVq7_{1?3xo{x4)Jw(@_@1nQk8J>?3RM+~LR|q(-wv%d(~H@~z2P z`MN5;Mv?49Y4Lj}7QzoqyEHK|lqV8q;^5C#dhc=IYRq>rIW*U3=?}?~^^vY+SwBn& zvr$X!t;lQbs&!WFmv0S6J3CN@v^@_L+sII?yr0t2vqSON63MMX_QJOt7L%9VUEnnF zcm8K;;qMoX;sy=66ta)VTs+C$|Hz+GZU6K^b@c^hzOlP+A&Fl>2hxu%R?b!>U7N2? zHk0xS1Gtwg4`V){91qFQTrp;P^rc0{$HGon5afTR7jMB^&N3?|))+zw%&{-Cnr;F6 zT##`-aDp^J$3>H*I*4AV)vDBp~Rz-WYC5d~ALLE0Kh6L@Q|*lhbL`_ht%W$zYa z$^$xSgK0VVoOaqgSPoSK9!|<3)gVc@SEQUV24pVzSYOed|N`{ zZ2kK#v;p6yy?8^l_5t^~ap4JOs}=RA89$AviPx#M8;acl`t3RAxs)uwQRw04MV@?LcT<(iupiS|{9KT*s;h zf&wvB8Q8nyS1e}^9VrWsE@UoiT54I)d-}-t$7M=cAB*_OuO+)-LJblb z&9D2GN{Y695}jBD1Rq=325Wm2ga_y74KB=9FIuY3k;m<98xVS{lnsZ6#mhXtJUFFJ1mk{rICXmj^4s&j;Zz#v#uCLf+{+hIcvEvDSx=_}5 zW}2`jCG9lSiCGG^Z-vPh0xDD{ZJIdnmu zs8Uluj^F>JZr^&x@`*c@;L;` zO5D=@Nn~e-CI`x7M0Z!c!Bz|17snyT2wqXOXV|Skg~UTE z3357Mu>q{k`lba3uK>{tZJSpdF9oYdC( zaK#Aall0RNPNAzqBWaEaclxh;WX|C$qBH;d|HgePt z5&dRhZC^Slxb~r0uvWoP`{vmbH^wAGtQv}*+thPbhOA@`3%z_0C@y$iBYqCIY9s96 zH3ECI$VQ9qWT~65@;-4n7P!H403B!l>`=#+#JD9~6KZa>C?*s)X4C-ubAyamf}u=4 z@S^N{JR=g+zP;AGZ7(>?6IbFY8Qh*znT&(4lI)EuiQ?dD}C&Z}G zB4vQ>WE893*#^6~rg2~%LWRAcioJLHh`!jsv7R}FKhL>obMaGGliIQ84eRa&Yny)z zUg%a+UEu$$c@@MyX`l-BC!f(0NF(l=oRLlNKQDo$pJw2{?c{JG`R1p7T+B=fK*Zqg z`rXh!RXCGt7h>BfGun5WnPg#gN8rGZwR`vPr9juMs$Tm|!Rx7Pq<9zo*sj%{Zb`}I zsg?&esN3)7ZjJ7fhPwv1R2(_Aq1Wde%4kMyo+mf9U%V*aNt?|N@03~hC~!k{%Tz&p6Z1jPhK+yC_mo7 zD6Tj`Uka}L2|_@f%*&F=rx<5U%H;S@GWr0df6Atj(1t)3JzwN#3}dTq42c7mN{n<+ z69A-`$Ein<&RgBoWL9&1 z0ILV+FJKQD1S_rf*z2${4{|mUPT!$t-WfL;OWw(r=^s6UbM~G1+oE4eZ~d}eb5H5! z~*;L(&{9yO`>UNz@Gt9i}rIaO2*>J7VVjaBZ3Ot>!rnW4mgAxK*r0{`_GDGZ&6AK?;9B%dPj zki?~oNMoFU!re8-R{dz`pZYX$wvQ2vtdr|(008nJ z(*bWq?+uPakJ_lk)IXw+J&>R}aMHiz(MUj#dz9M(MnA)KdysQB8}}R@3MC{DnE~5l z=*R|=cp0`(LG24EVr9&l?x_`1MQkDP)tEh1&CwEaaZ9hiIreh&E_wcd>gltn>@TbT z_5{EOgx~@Ao+LW37;$C}^ME$F>#BuYUjV5LbRi)MPuuoO#F;6+^gCQ>f4UuWkWY`V zOVKZ;R3`TLV4{KS`wrKAjj`urj5Ck=&{;L`b#$$jeRm%4lcT3eV)Q4br2$J>}r&N3PyQ z+9JGc!xHI0sRB?IQsWswl2(IhL2v+y-n9(vrq%|t@A!Uqr$OV18%6b|9lL0kFrNzE z`ukLsZ{5^a{$t3k1lYgTHs40>#smKf&{;HqoCl8NkL9gSm_v!C6Tl%&uYO3{@&diR zh6tqq*P3(~0}c=gy>XU5L9aP!H;PI^fbh{O^N?16RCkKxk%uOqT?b~JCEy