From 323d76fbb9594c5f6945cfef77db4b196a58f718 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Tue, 11 Jul 2023 12:02:16 -0400 Subject: [PATCH] LibPDF: Make encrypted object streams work There were two problems: 1. parse_compressed_object_with_index() parses indirect objects without going through Parser::parse_indirect_value(), so push_reference() / pop_reference() weren't called. Manually call them, both for the indirect object containing the object stream and for the indirect object within the object stream. 2. The indirect object within the object stream got decrypted twice: Once when the object stream data itself got decrypted, and then incorrectly a second time when the object data within the stream was read. To fix, disable encryption while parsing object stream data (since it's already decrypted). The test is from http://opf-labs.org/format-corpus/pdfCabinetOfHorrors/ which according to readme.md at the same location is CC0. --- Tests/LibPDF/CMakeLists.txt | 1 + Tests/LibPDF/TestPDF.cpp | 12 ++++++++++++ Tests/LibPDF/encryption_nocopy.pdf | Bin 0 -> 70599 bytes Userland/Libraries/LibPDF/DocumentParser.cpp | 13 ++++++++++++- Userland/Libraries/LibPDF/Parser.h | 7 ++++++- 5 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 Tests/LibPDF/encryption_nocopy.pdf diff --git a/Tests/LibPDF/CMakeLists.txt b/Tests/LibPDF/CMakeLists.txt index 536be7f6fd4..b466a25a827 100644 --- a/Tests/LibPDF/CMakeLists.txt +++ b/Tests/LibPDF/CMakeLists.txt @@ -8,6 +8,7 @@ endforeach() set(TEST_FILES complex.pdf + encryption_nocopy.pdf linearized.pdf non-linearized.pdf password-is-sup.pdf diff --git a/Tests/LibPDF/TestPDF.cpp b/Tests/LibPDF/TestPDF.cpp index 56483cdc8ba..d82762506fa 100644 --- a/Tests/LibPDF/TestPDF.cpp +++ b/Tests/LibPDF/TestPDF.cpp @@ -61,3 +61,15 @@ TEST_CASE(encrypted_with_aes) EXPECT_EQ(MUST(info_dict.title()).value(), "sup"); EXPECT_EQ(MUST(info_dict.creator()).value(), "TextEdit"); } + +TEST_CASE(encrypted_object_stream) +{ + auto file = MUST(Core::MappedFile::map("encryption_nocopy.pdf"sv)); + auto document = MUST(PDF::Document::create(file->bytes())); + MUST(document->initialize()); + EXPECT_EQ(document->get_page_count(), 1U); + + auto info_dict = MUST(document->info_dict()).value(); + EXPECT_EQ(MUST(info_dict.author()).value(), "van der Knijff"); + EXPECT_EQ(MUST(info_dict.creator()).value(), "Acrobat PDFMaker 9.1 voor Word"); +} diff --git a/Tests/LibPDF/encryption_nocopy.pdf b/Tests/LibPDF/encryption_nocopy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fe0efce40d675561c3f5afcb223016e275083dd4 GIT binary patch literal 70599 zcmY!laBi8ykI}%)HdZqRgt)6a_vLpK8xN4r>k&%Bh>ifAJv1w$hc zCoNyW$PjF)PikIzNrr-{A;@uMU|$>S2j%CNC>WW56$EEir79Sk=!aAmr0PcmrKahJ zM;j^_DHz7u*%g-*r6%U`a%J30N=gw(NJvUp#VXWu-ND7I=ctXm3S&}jcUnSHN(5Vq zp@D%@$NwJd|BNgW43~FtyyN9c%}asmhlXl#Nn%k+MNw)RFP8x?m#V6(zZ)+XB&2z{ zj6q=p3VTq1Dp;6f4J`#j14~ex8tOy6Wof1#tYB<`aOo{giOMPVOqUmE*Gzd}uRnc~ z)w{s1u00P9zbo9ZOU13bvwoH_TOj{DRx88SjE7UZ4ok-G_xC#UqUp!YM_lLFC6Dty zb&)>*Gk#6QuhUM~CM}rYIQy?C@;>-#>IW$38XB0G=m#m7=m(eNx2(24ydnu67$kE)^l!tAGXT! zMCg{sKbJja?W>H@Ok7{iav;JvChxL-^^^_2HT8WGi%Wd-Q!>*sQ&TjYVq(7TW!$I7 zaJ%J&nv(u{=1resG_AFsL^`jinihV~W%_@Mv+Ua{YqwPXf8IY?_n8BqroL}tQMPAZ zT0STrrlCZ^nFuH5>paO5*0uxCrCdaF+J5M zF)1~tSi#T&oU$PzmHDM5`u=&TkX#B@R;*xT08x>dnw$!?4`g*}N`MO}=1}}0C4Z%C zujr8#m(NuD{hp*XxlQ%9_p4?58+;~o|DAPMZ->W}0`t;yDRZmmCSQ6wU(Q7n9Hqe} zMWx9lAw{XF;LK(Ywhx@goD)kDbMn)Xg4z^OvN-4Gm89mC6e}1(bT}8~7dYitM1$OG zW@w~fZfO*&@0*&EnTR18kXV$OR|4}|P-=00X;E@2sDN^ZiC zB@nAXQ4*4vRIDEiDLg>ojpQpcgs-rad~TUV#U%=c7O=E#YHp_Qr(g^*$v-J8xFi>m zt0%13HpBG*(|K;ev$HR$wLRPER5w%hNenwjv(eqUfyZ(y3# zqg~#o&c5pomX*Ha=aII&ak+|0X1j);{<7-TRr4bD2zn)iFh?l4?Mpm7U&t`}?d=6q z+?Q@MI2^Xxyioqs{%yBxZoRr{@@w;o|0fF{P4T#Ptk*;@X=k8i0OOYVEsB$-mOr@c zd^l>?r-l$2n`4U(vg{18DSrCxW`=F@D!GYAEcExv{Esy`f5b4NRei#u|8e)H-BJ~G z|66C&KKXFc`;ywEwYwaX6}x84)fci3@r#*#KzU2i4;AVE`cHQpPG9utRpBAYGq0oT zl_a_BWt+OC@}RjLd>r#~8^E)|i*|N30 zva8MKcQ8$M-I=Jw|7dyX^>ZiZYOOAa;r(@0eP$?YOD(hb@5w63ALI?996uD{@Sy(6qF6+7#wtS)LDiblMid4y@W!g&qhrNW>2wCo)wX1c)V%~)L zdg|P(Rh%BSgw)Pih*Jdp--`kR^Q%4&5u5r{F=f>3)cE9k6Y8{=FZ3S-*@iGmbD&*KZCX2FDU)+^cv?T zYm?a3Z(sOc<<9nAC3Ymi?7GmVD8ne0XL8~*j9xv``|A1k2)0ril)s?m8YdmkDY|8)?8f|0BDFK4+^+3joY{1QbS$A=}gl)pq@Z%$kJChW4x%yo8EZ2DU?GNj%-aH~@~ z{IMC3*I)JGR1VMoqkLii-S{`&-&X2xp>^z8 z!fwASOI&MSIelLl*{hwW>!YOk{Pm}e=c~;GOQz)JmKuL7H=SI6Wt)+;OQoy8(hD07 zo{D_8?(eUDpQzIC`4jBct*GUEb2=u(V$V^P;3vk+6OS*v*|%+Ba-8q6!!Q;FjuXSK<9FvqV%e$yZrxG+&Z);(d1Zj z=Dc8k*%O&d4o8-Ee)~N2sL!&0-y@85{YsByZtT-yp33pXX)R0EZ3`KPuiD3Zeh95d zt1Y-)YF2J|?bY;43qqbqPWr~LbgEMEr-#du^=(hGKJc7(ckP|4r!86gWBtE`36I`S zy_I{jX-+hw=}X?D`JPAAoL^X#c1ZSwZ&+j)yl4B~YYE@GZ9+CJ+7r~U)cL^A=dlv2 zl?#t#eMrnV^xXY*#~mkD$t4XtCcN9G`}bLjP4CL0*((-5e)_^rO5AE5`-TnE*;oY3 zMNd>8jd9y}^vu*Vo38DaH!XdXBWI+hyJm&R)DyfnZ=Ca6x6a$Bboz{rpQ~6NDeBHt zyxsMCpqrO%L;B5lplUA zBIxj9LrrYe^6!SstFNYaThx@^`TsR9wbu6Uue6;?ub+AITsHl(YVv>i?yjl5vS!m< zOhn`aRTZOn{!||neDisWQ~b}=xjL`c_Ht+4=DBt7{U@k}Y(Xo8X zg@vc~EQ_>k3OKnt+L1jsus3lxgJP*>+S7lY+pSttWRoN+A3wd~~;T3H#?1U6aM~>J-Ww0DJS;3P2jEQ zy}E8!H^@$wXZN}rSi_^au-+=@4a?3b$xpM6M|08xa~=bygx)x^h?{n3~|{r^*&>$hv?o_~C%tF?D!M1bOtC+qsH zIu9Oy=AyRVsBzxkyLRnjC;s@xZ=7%b{n@Ft_D!Wyx2}HgoPS%@`Nu+|vahNyyZbbg zXGQGVA-U^`RN7>}IExe49T~rE>)tm_)m}q=Q^aaj_O+gk%BB*bj0+T>re0-N@cC#S zzdOhG+pMV`hI^0r2`88J>FVE=J_w*T}>3e)4Oqw68_){qV$^M~`BY(!KC)2jdUHrm+^Ui1`*I~ice&8A_iXR}w%CU+c-7UFvR3zzxAl1*r@&Z& z1&7~sc6?EF{MY1}eQiycPG#J)#Vqdgl_teVZF%xwRq~9FN}n8D(mg~rSpO^169`~P zUiN-fiLbG%KhNa*LXDU6Qf{)_--)YH$y>GCexbr$e%X7^)(5Y@al-G6z~cS3Qm1$? z74O}at2X;#qSuL?U2IYOk5nBO_V~7Yzh$+1A7|gP?q4NG+GFO!i&igr!?EHdSHWE4 zj%O>1vsQfWvkeJmsw?~Z;PB5Fy?Y93E^E)^3HgiI?JM;5Pe0D__-o7Tp4cA;g!ien zFlSXj8aNBrF59%>xQt)@wFXwj+Qk|)FySa*{@Gak^{ce$pTF=x~ckZ(lg)XJX`UQ7G)rV1}Re`fi2wy8(9do~BfnoA4i zCBD7-P^WZro5K7@UEOmWo;>Gp`1fUIyT$(~YOaYtb|CD-y0Ee-->c8& z8AbS>DUg{VU-)9j9$CG*Y{T%q&ogrxetZzwey!u&`tLLIOx~>yvb3?6GU$y-%&xxK z&bhNYv1HxWmHrRsan{;*#d1Y8J65yJ`mJ>M5Z4ENaRux8PixxW-3X|X`0}Xz|F3iB zzc+8R`f)y?mQ$ALrTY_|C5_BCW-c_{Q(ogQ#$>$g^KEBOrTX>830smU3a)vd=WA@3 ze0TEU@7w46HErI!*&&Fnui&)&)}JfyHt*0~a=O`IE$h-dYI_A+)T1}}vFn{*>22cZ zQg-KEl+JbA^fx@bn>Poso;GpdwkfYXy4B8jVe2~i#TPvUeV15#y?a`!_x7#zn>pX{ zKRs~I_*r&Tg;y*$oY+810h3(N?dz4zU`0 zFIFIzjII*zTiYwM=xXrmGHD%}A zeOG0svmURH^-NhWrt8ZVpa1N@+iN|p#tT;7ui06$Q}uq({%w;@nXm2SU!*kW1y}FR zNZmbu+T1($zB}(q;4^K#rjYtusx9Pi%qi9y{t4atJ7vFYtN3`~vghLsyB-wXyR+iZ zNsEeL1^VqVD}?*{`>!2G*6;NvsVmH@?PsK49}Co4Dt9 zei-}vlur^+N=eLJ^f1fh#@%HXUtPWPC{g;Ac1F9`{lb8xy%L)~oaFX7rKooO!kzN| zMM5>Z`iWnx2P#F{MYe}S+9PYr$j4XTvZm(X?u=!`MqubY%LNC(gan% zeOY(r$gZAAAf8 z^}TJpcU#dz^R?=0*86C-%C|2voO{dX-GcB{JI&s$y|=nK@711{0SeOb#fyzZ-Zx&` zvh?+1fg;( zckM~RO`dh_2`x(%#5V1#dVs=*i3VxBeKhUQ94k+i+sV#m3V+4I`vuYY!;hpBU`6WPz^Y_1guD zlRUJQV!oYQl(lZPZX92U=IzBFdP7CF=g561IrDT|*-L+oA8WQH*!}J@{>&Y=?6lak zU2A3Tc^mKAmn5=RYuTI(S1ot3jat7}YX8_{?&Nn!#_rEhIVNezw9tAhSM%hofHDw-%Fy5+Ky zY~nUg3OO>R%m0^Z&SU1SepB}6-NO|<#d}Klg}D z!?g0g@vN_96N*l~3O$>?r|IFruBg3#ikM!R3m&St`)1jiV=nX0Rm}hQx#3jl{tNTf z9RlMo)@=3`eZp(M-RY$5tXnf?Xt9{<`db>?&DeIR=<0>0#o0`jjemYl2~j%ST@bfY z@9=t!%`Y1ryw)x~Fz3;2$+CxutP2#v_zwx>-f&X#KDI~rq&Z*pUDx~TW3m-z{i^xb z|Lvi#Rp;D03kr@sFXrsZ%He8RzTw{Ef@6C&`OTZ2Vm!;~!4J^fxpK)2H*L{g)16lxCoPQ?(@gV`Ubwt;M|Gg+ zl#6+>m$POY#g=T`5&QC2!o0jBi6&P*jy1i0QXM)++7xRTRoEqSRLmbGS$Z%bqz^<Ji<8PaJi3wofxC>opOh`i|cw^cV1*pwYrfN5z?<8 z=4%;p;-H4_*`Lpncdq)nQ*K+>`(TEGl@IRz{&tvM>eScV6W<;PTv%;h`Aut;xB90i^GZ&g zu2nyo|HA0X(Q6EbCYHZ<7w<6%5$W*wGHKh58A_HDQ~s>#y!7_uon2Rd%6yd$=h)G@ zaNE9T~I z#L0-Ya^*J~0^_xA?(55Po=|jezx%uOH}oebpE&5|l~XoTz<9=@zAFZYer+nfu+4d& zN?^+(1A_|%Yf}y$NpA_B)#%`4QB}hw^X*6U=Cx4=&o~(@T(agd$D|i)POsz7+P|Oa zW(xbVoz0nYi{k9#C%-)@cl)`JXIX;CHl{NTpL>op|H#>3Jz-_gYMy0s>lwc3G)>)g zFmJEU!AWO4+1E_Dwjr`2Pet}`+_Bs0`@jC(&a+1K#DjF+Gv_TmkIq?j`OeNM2j}o; zMolcZp%ymr(&m#Z&(HFjuyVuNuy)&jnF3e$EXhobIk`WMA<)Er@y)ubA3x_cm;Q4% zeR5&>t*RAvKG%fy=B>MYG;MpD^@d{{5tB;ur97`(sIiT>n15zMdX+}P%6_%xS-fR= zeFrZtxf}kwMe_En6%X1nHhEtu>#zM3v!dde^MaKUqso%-Qm-DF|ip4mTB z>#9_lKlR$BZpwFWU6`_Tdg_;V*A)|3W#7J;S8M)Z@@B?@Rg2bgzvNT-qNSss$n}W9 zQ$yOog)@4c?7xC)(_2( z_v@bBygJ$T+1&$M<$|v-yLa%=GEwvNJ^a-Y*%!9``RQ;W>{N~2n!*dylsRR^6}+EH zSiKbY$U3@amZGeL&$_*fHdS+$h0aS=a@y9rC5Ksyt#QRXZmW)E50=-Yun2x%bxChV z%j4|-H>&0wT@k&3+i2~Nr#m0E|L~RYc_C=&?%DcyMvF(X*dMLQ(>?Y#Gjnxv%%6DZ z;khgSIvjbee{PCqJX$1RW_vv>Ys#c|vt*4 zE$U`*^!q~2N!#mMCx4PD&XPBJANb(lyP4)fjAyeI&8#^)4(~aUxF__)lM>$B?W@ZJ z&uxgf%)ax#9oOYPgU2g=%{+TOvh~=^$>y)`1Tj{vZSx5D(q6kdqeUbAam$zX(%>fM zt>5>yYA$1YdQ<$aW8(dFA%WVKQ=fLSSWlWFt;-~!89(>yQ4!}^(L7qwv8|tMR>?Cc zKD)jqpVQoIxo5D-{}YCy%mun{g#^x$$-dz*^=D1e zxBF418sC3bM*r8JZ9UZ~;9hL>0fwX82Xt4KYt+2l@n@ZCiqSuw-zNf&oNTjRuAK74 z=flh8IoAVXyX?;#3wx#er`n=UW0li4ryDB^YOfy*nzf9--r)BtMzxSnY_3-RuZ}ND z>G;wd@4O(9wQA*l>mM)8XLY@NazI!#;O39C`@w!vRxV6MpJYSMuJ?%#{aUpvXT|ZT z(}k@r@B9YhyC&Y>E?Kul)I`BFB}2HZ z@L{2*;C|PJru+NcdxN&0*dMGp*JYQlnXjI7ZjfWpnKU!CIamJG2i+3%mW@rzd3;xq z=e&Ym*%zN}->>cVcP?e*YqJ-OS#N^L4M}O*Ddw(uJ<1=`yQxqWSi!cez79ENK2L(Y5WKM z(p38+mjo&Uc4n}Yud!F zy!hr3)eB0&e>K>WMP?l}S?4^}^!MM?e-_NGk9vD=&s{m?;t}@ix?vU1-}Y{J8nyR8 z%iPO5kMFqyXiH$fk`u9>!Xvp1H4-JISYO@h^2R#}%48ID|4Ie;#rvC}TO; zkh`q(`~6=_R_eHgratkD60_FMJ{sF|Y`u7H%!30-ogoSQz42$%ES9)r7oWz z{PSw){r7t|wVUxtyKd~!N#WQLZDr*a9x&bMo`|!xsEpa;oY42KCHsCYeBC2)n>+8v za>I4jor$W?(ynAT#=MvQQ=*f&>R}m!!b=f#@n>Fu(` z%Ev@2z1q9}^HrVjo!=rm(NKypEwO2j*ngdvoh)AzS*GYKAHKEWcFu+=^Nbd}>rqds zOAwf>lPt9?RpE?4zE`PCRGG(hna8^ri_fguCc7_{`{>2~r|%heN2GJG_WG=l-0;)o zq1v>>=G~7)_`@DA66P;?9hmUX)>yB7*{MSq4{;?($(vB+}s@KXLtHZkI}E!o{7B~jVn&^ zEY0|v;kw4EcJh0Z*r%VB=e7OV-v8$K3?BdLzD*lUuPUl0{+WBz=+d$B-D{H9t}vUj z;_I2Brr!I_p>L*U%M^b*XS@5>7vZyaH?=nhR?kl3*!+amp!R~`&MD2VY|{^UPrFtz zZNKLlm58_*AD1MiDlE2`?=GkJIy<@ciSZr2ThDB}w^cn|qP*s&YLb;=EsK!j>}A(> z7StwfnytWUX!FXY>oH^6PNk3xp2eM?c1S*Xr=fPC@ztv`p{dVz#=hxrF6>^tVC$FH zsR=8V#WHqY+PYVLi;#*1>+XNok7c*~RZ`siq1W_bl(>#?y4l+L*#aIN2W5D*Z#=fL zemqD1qPc#)SIP^&DMx=lT4a&7aN!KM%xU+HZ<*_x1oF6qElOuU6#45zO+L&0u=kVx z>E531CiE)k*V#jJjgN^koQur@P4KJB~E?Ow<#x^tZ%9MRGxV}#1C}lBv`6ox^um3*I zd56FJJGK5|rEAPL*7yJ7+W210IaQJUl7lbi%90sAG8ZEk)osad^X~pF_Rgm@VM^q} z!}$)E^-VLRj^4caYmNl7+`Zf*U({|UGFay?((%0B8f#~|;CF0W&5G^T^Oj%N-;q0c zSzC;2!}`1X=0z&zeim_Ay*=XoyLF#=y9-?n*JmE6e%13ies86i`<@<`$cqt%U(5@wds%jRXx=)P5_mgGKqgY>v`Zdin*4#V84G#W$f<^}N_9SG zVKnuRP29ul$Hau6>UTW-@S8(kc+nPb2aW~H`6}=3sH@_;x$A-C%jSJOmEm13k83pI z*Dfoz`29nA@*A-lCRaUXUrkxd=SN~4t3PK?HoJB{$7hpmiPPTSjWx%1IR*+{DseMD zvODz4{yVQ%t>ntM?#t{wVX?T{6z|7N0`(euz}&TMSj}mAM1Tz9(eh8hm+VJ@iIP(4H9azJY>S|-}h4#I;5|zlOlWh z_pP(nc+UDUZoD9+$66({rro4XzoPV^>Vuj`!l!k5IbSl&yyMKP;k0?WPuf<$D4Wk4 zFIBk6%W#}Ku074num9hkCHq_g?%ue1FJDpKuJv4n-MEEH6jyd#)8@}t(&qTBi)fzJn!psl`Bi(_-I*t! zN8j9a&u~tAZ1JqTn5&VKXD+-P<`A?bfj4n>QPPTRk>JiB-vZy<*f+)I>o3bIsvXtuuly}itxxHg+y2%`EQI{7h=Tc@nxqr&%sGAW=Qy7 z+uru#!CD1wzX@(~pZ@*#Qrnwpyz|nRZto^__T^t6yx;B+^I!7J!(fTij*Wl2zU@EO z?tiv5zH#M3%{Ou}ysKk+RtFk)GQ1QN*rUV3cYDGLs~K85$#WBjdSYEvZ3g?L4dem%KQ_S-!_PdP_T(?!zr6Eo5-^HeC8F3bHL zH}hl5Z{dbMwR@J#l`q^<|1@W-=+&8ct$aUmveVNW1u06|X={8v_AHIua?8nj{#I(NPzODmiI&1Dlh|MRV2N^sa8_}}@h zF0W`khrRm!pQ~qIOdR&2uA%lVf`b$wu@z+7cKLi)+p;6ZS+fG3P*V`Z{dt%>x-^!(mH%e$A0=2L${)w zw+7o;MHfF3c~|W2Tu~5TdT!2@lj3m_o>>ZPUl%;Oa%D=n(ME;u2bEi%m!J7-I@6_l zM%Y=iA1~gVc0G0GwhV8q{i~U0yTa|BxJF-A_V{@+^6Y1JXKR@m={GOd)_5&F!Rnye zQD*6s!qmYqeIJ+MB&CeCyYj!zoDkz`KQ;97k!yC6d7qA62>M*}aN&`dlQ)9YHci+o zKI^ZPz|+-Pffr6)T5_^BY1Wj_S_@lDjC`ZCrpQlzpK-$K`lp-#-@N@7nEQ^UA6`>B zgCkq9mto3FN!b^FX1e*dE^3&sHLJabug9Up^WLF{o<-P0o`OTJJo3EHp4!RM_6IwH?eYkBZ=!5dOZ{W(`%Bd z#U@<1_;Kybi7n5ySI*r$(IL)$-}yg(-d*nO&8(er)bNXe+4^}0&L=OQpCiyI_k%5v zX;$99-@C&(I)Z&$tm4Cbgg2az(s}2d7khf0y+QLahrRV1e`@YF-fCQN^Sso9-_oZz zZ!7LSSiEv+g=OpPLySLMjy>O=w{TLx%D229o1d>QwQp!}{=zSzf4uk93H>P5-ScJ! zz1^GmnQfWU8dbsX3nx6A&K-KhH(T%L`w36Z1PXG!{5)fN)K1Cu1`Fz!KYP)t(m(&< zyhuCV+BB27r}hXvn%8vxWAUog(p$`4@=8<1nWNGr`>g-$XWU{jBi_z+iemPW6TGa! z>nyYF>*p?X6^ULf@W}0jzs#i#w=I3;rfW~R=B9VI*`<9}a?l@D6K{`R4iu}!-;a*>@qCJq+e)U)*~=uZBV9$EAt;l-|@A82hnSDNS3L@N&lg~lp13E#Gdd`?YUXy#J=vYX9GagMW3a`)eu z#+AR9o$#A9L+qSEpSHoRD$7?n&Bxp0cl4)mZJqRM?fC`1YrgfG_-5B_dd;?Ofnv{s zQ>~?i?z8@BZp`lY`TK?MUhEdfFM?d=E6ZmvHZNA&d#m!;gPfO1dEfW3b>EuIa#Q;4 zN%O+%G35`>#_T_F`uH~A{nxqHKEE%-J*81$QuE(!3t6uny?giBhFOYVYZv%Gy3c>; z;rg|9S;>D3f)C%kEh&AYwe0V`WUB_5zLc~J0scF3e&uNYIWlWI+X64vS)si%YV#!? zo(?nn>RSDL;n!k&>mIASCubjc%eGdx?eXLD$4l?|72lD}yZ)kXUC6Rao>?mv`_0p2 z-50W>Kzi;htz5${bJrhpG7ffRZ>YR$pB;Aa_6@W6bAjIryVtdPo;!Nv z_s^`|TRbK2QSuVgT8#?R_PME#oXZVN+KpXo@}`OldmgT}pP+YNeZ!uNKo;*m6KZY? z|L?A_485|UV9QdKlZ@sn`wS*>SBTBh^Aqg)*4iX8`BUSabmui?^H!=qH7|6OySiqZ zn#%?$6C3-F2Bk{^=kKXx>PxH)?+KfrXpE#tQ%|KphnS7#Oqx^K;%l&iP-y*i(Lbg$+w_hiGPm+lY`hRAlLr80o=I)igdnJqS zeDh@Gc>VZkpT=?>&nfq}&1wIv^=YEt^6Bdm-k2UVOjn-7b@`~u>D*kITRR>w6u9jW zSZ1G^&b@6>-2)%{6SZCwFD82n9X!`4b=c%~^TFFLOEh)oyV_Yzi@jO;_)|*RhKlJ; zf9~$?Ik@}WouUZ&C)w713Nud2C9B-raA?WPxG9~Q|Nrg!`9r7b=kKyT0>aS?pSsv8 z+6$U{mMYeNcXQI1H0?t4ukXo!f@eF&ckyq%6E%~=T>jXql^3j+{-2|`Xa16YUX!~M z-^+~hT3^);o~P)fU3%<=n2q9_iN7;0+FJ@ZWCfk(ep+NU$Nm3&;T2yR-(9q| zf7do^((VwOhm}q&k3Y^+ZTMty`Ph~=<~4y_>S-UZANr~_^IDft?_re>+!Gut_>;4? zC^0)6Gz*RRd+}g`SP`@6-(8d5&RF60=CJg&FmI0IpX&G$ADVsrcj^(F=N6_ZbIwZf zPhbqYub}I^FZb`u+iiAvZX1*R&#=s&c=FdSE#`%DR7*u>Us!v)b7e2b)xrlGUeCLG z_)*%iR^9HexzE>jcLhsNj*pKxxMZC`_Agwq z=kZd~)!(`&G#__u>G3?5c$dMzFXDrss_z$u>S*B$Okdmur#!b#Kf7Cs$4r4q>Gk4c z;TM}1K5JaK@T}|S4f`1OF{Y?W=Kp1P`p-3=d2N-Hgn*w!$KEF_QX4ahKIqKW`+qU+ zlUtOXx5=fFbE~%XKAO6m=S4rG^f9(N2lr>eh7LZxtGWWed{D5y@BUbHOLkUJli%*U zi}=1)emFbhZ?RgN7mIxQvbJ9>XG0c?3HAPz{rSM|VTkfk`I8g8SmKOtUc0nz*?}5^ zeyb~Pmzq2Jr}UoA&R=W$<)yHWBm4biF`ElqW}nsdLoZD6n-beqZW4JR1mG5CWF;O*{LLU#et4l>oQa-X6EjpK8 zxbNxPazCAW+XU9kVsKgAw$Fq8+wb1AqiO#A-V^^ZdAulJpBn7vX1!*Mw86KN??2=| z=}e3D*f6bHJ)`@<3&neV3bi|4KR#mK(6D{Uzi8WYDel2jMdod~C0-F16Lo`o;`uK< z#yQU#e=!<5IXQ$~oOt1u-G!en+BWACR!#MaoH^6y*Ar%O=NDOaYzje~O21}o`yy>( zF>mjMxKkH5c{QE3d2moR`>3peRf}Z9b2X9WCtKzIIV5%@8t|I5X6&BEU16EMTVhuA zjkBua7K{JAVd-6dGWY0OZJEB{R+pv&o7CkOeY?D5c89~cwUJ8ou@_F$@`s484W8hI226Wv*^Cng$bf|+kWXMC~e)`Z(@D=>#E1qe=a@< z$zAH(qIIg}Ra9Bt{CM|S%f;EMRzLfq^5k;Jfm^R`-+8)VxyTe*pEZZJ&A!d|`;hlN ztFqu(E+2(CH9A~gX0et?bo*G;W(#+1Y<()ko7$z`{g2T=yEHcu^LyPfwJ-cs|2r{D3Ue2wY2Q`T z^Dyz7C3|VQ@xo6|Wq%aIy3T%UPVVUW@{D!cqiD??D&)`Rv|`@GTd5Ch`!iNJeMik^9b;S~e=g}``Ogl{)t7t^Kh))$v}^j3jqhX+awO-w z-maB8`X~0fncua#{B7rv^tl_dFEKQeMTFt=WP=TxsVwDP#{N2-S6yfqg9Wl#q}=8 zE352jZ|9Za?q8zjb|I>_sQK2p8@#DkA58hAy7BqR%mW9y0v+}!zBEZGzZv4NTe>kw z?9jcdN%Kk{9jTM570*AHx__avNp{3P=C-7}9UbK!TtC#c7M-`U%K7_U;kZ*QPifq* z^-^;e-Kxqzrsnv|>h;XtTZ%eS(%w&bCtFL%9{!bfCeBk&Veb-e@7jf4TQ-(g+-HnG zyHt6D$Y-4nPOWX8YfqW8O?66=o^c^Y%lp@Db0zh4rZqRFJ5MOKULN_d+f+fvA}81A zv)Z|BihrYoO*d(ZhwFXGWLjkQ+}iyc%duZ_ES!?pGhtFire>7ZF= zsqIhh{XE4f&HO-VKhNqQ9_tHSHtsGfL$AF0vF%at!!^zgf`7Z5u2vp9aYx7MRNVZd z_HV9aRK6_aydR!+rfq4#Qy16G>%!BWzxg`eK6Ut#qO2?1Udg5~VV*4>cJG!qo8(Cv zm0iEf^0d*K{gUa`$ERO12kS20J4-@J;brBot7Y4N9WKw&Jaxfyh41WsZ%!VjQ&(Z2NB3<$BENW`4`BMAR?_{QvXoOV;yWPxscXUA{(gWw!dJ&`N`7 z@q0Q3Pfl>IcW!VAlzz3ur1j z0n@vDS0j9!=I+*V=Hc6ZWi7v=bylHLU}vh9$*1XVwLe#d@E^GO(RkPH!uPfBS5FNO zeYW#bfTDlt)(_cNZ4NOkjW{CGXkO4NaWvj;_Ojr>cda!~HfTR97Cy~<{DAX`YoEe1 zowj;cY`muPX|`wmi%O2=Y0KQtWQ-F2YKTxQRLH7~EvK3nV|e6hXgR*Un7u=8KN zWhZ=bVh=ccjMHk{I;rI>d1nkvF8HvETV4|3zuv6tB3K`=itpQtn$*npoGVKz-+lC& z!|2+d`LOhD)G4Rw0b#S7Uv9p1=e9w1&=rph>TN$m|GYMF($_f4S-2}I`D&+ls2-o* zn{`pS8|uEj`~NRjcE-Nr^Ywo$aM?YnMQ72!U5*RQ1k``O-LEBoZ1NR9%>w~D)^8}j znQ=Ewe`~+i@0eQUs;rwwCs$9~(QsAj^Cqhovu-9y9h=2FeZynvnU@=u{4TxM`MGcP zg6v7B&s<$qnU(k9dad0_CKca^ysh?ON#7H%KhL$h7A0oG#e8SZTURw7sfDj~#oJER z8VhP0TrBYUv)T6kdFHe{w#7?UESkh&y4Lf{&c%OQ)%%Vu%3%L@UFo-Pu=i8hidum^ zCNbYX3pmR#e=6bf=VN@9vv6tXuO!oaF^3bCAFm(VcjfwupK)JO?Ug<`J-;Pif0*M^ ze;JePk^|xGmlx<~`hCo7v=99}OK+pa#&j!hixk9!`G_=a<(K$-Bu1Cw{=uR8YaiTYy8jeibAUEK1ZTl(b_?vfbkwGW;6 zcV|D^rge0)uBqGfyf+PkflXeUV`gkDURgTvcD3cgwsfAVm&Ov>s?)CbFUdO?uJPw* z^Us~{9A&!>JlZdJ;mw?5=k|y-|98qZ_Emb<^tR>3gE*VCdo9V^{x3;*IPqb~6600J zw-{7!I&p?&?Ug^$vA;?lTL&;-TX^T2esAtF?xmu?Gx{3-gyfg6ZBaU1`-$hP?SjY6 ztzvAvdrs==Xeuv!vU1*=y1yN)%RF`+nP+?ULSUs>`L+M$CwJ-y2W*~lQk!qHsqxhH z)8A!^hAhl)RFRT(^p`z%@t+GzZ<;R857q2X>N2sBtF~-R{C4f)jTKwI`tH6M@LgVD zjl0*R=+wAHtGJu?%AWY+GyD3Sh54%(HEq4lTs`xi+jDD;-SPvB9S=^-^|jb%+S96G zsipUF(}|-7CN39TAMH5$`E>rR+~@yPuWmeVcwA=9qEEs}m&>$kqyY2DaUc1SKWsP54 zD(mCs>f@^aude+p$NzuoWqIc`t#c`?=Z@P&GxcRYxwcR9U_}$7j+OCzGlB3qEW3_h z5&b^PIAzfUiCuSeV;p%+M4w+RP~OxQRWnz+dG7vu+XOXLt?w7k?`qPSx#v|`*H<1E zg_2co7L`r?eSKm&^R=JPUN)rhRkihte0jxt?e7!U3d4ZKfmanmAH3~LZl3Ou*BJYF z!a3$utm;XJ0;gK@KKP;YGAOJd?ByAbrEcuAHhf%n<5&`d+Pe3AT^}ZWJj(lPuF2wi zyBSqKuix9`t*N&DhHu0E_dP!C*EV@M9ewV0UbS}Wev?49*?oU2=ABbN5o{s7KVXi1 z{iD1`1n0HOiA?!ov5`;X`)h6<{yV4VnuXZ8x;?XEAFiyK z)W3=?civP72ZP7m33UNB%2$`{TzRFB1l==U z28Z9Iy47j+%jCqw%>G#Z>U*Vq!klZK6*KnTiQV;tGrqmFd#QN4(xmtwpF`|@o*0~S zVb$NAbKYvrmgF)K{u_tyD7iiOdvx3F1$Ry>uM>-Bc$4#I%kM%(j;+sJ@A1uYx!qQ5 zeRu_%bX;8J({2B*JpaxuYL&Zxy@G?n;zc)PQX1YhN80W3o)N`smgM=j{BWPumx}2b zr(GK-3M8(-QS^LONupm@A6MP3#NRoW(#2AK6!EUgG>mZ%69~QP`iuQ>K>V}+sjW6^ zHGiC%9d6ftc*&~wcRJK=2;CBy6#wGg^G9#Yvsq-AlF}NR6KID%Rq` z+>4vp=AD@LscF^<*&~f!z2YTRJ53uc?prcG&^Y{h!`7Q-)4n_I7vW>@vp8{SpNr3f zmQzn6Q+F?8@44v49^%gMYmd#thpc)`uP^%_`F1+ca_=^m%@6M^4?KK3V)>Mk>rR)i zdvRW?dd_-yrqh(VGxth&`Q!?Ikv`s2Gr{Yv!{;SOn|OZcy$H~Dd--Vf3>8Jk9e?*V zzIT>B-+ES3*L-5E*{jI#(yDh$BChDqGp^Dopl0>n`V}1GS%Ex z+Y{PWv?+9!w5YDF%Hj*Z!?@yZMf84f+v2jdP(aD+@|(6#rmtGA9jUr9E$?U;qx&7d zBQI_~dY#?YzH8TNGx>D+&Fq{ql@-oC3k`YYPTa|_u3!*dtjM$Yv&1?Lk>{INaB(N{ zE|ufSv=1(dRX({RGR;P@_ts)n@i#yJ-NgUTjK#wC(OAF*$ZW)zcE|ea(JY2(iDGkFPfe{^=RFsYt$ zy_hw#(&k7^O^iB=hVE8|xrZh%Vy@#}uew5c$Dw`Uc5G9<3Rm`jzI67z>D|dk_G;;H z?tf}k-5b?8ORGIhF58GHwezoW8SgnJ_sZYzjP5AR`60Tj?#r5NuY@lFdGB{^7M=aL z_<_@OT@wxkX7>gQMU#kPbLKVir87zjKYTrZc=}73BPH^SVm>s@;MD!!q?TXmXx%mS zscB%v1n1(_$K?Y5|NqJ;eou72)Y)k~=T9(CadEygcSH8}NQJ+9E#$&{9d=)0Z~NUl zDXc#y*RrZ{KDSG;2ZX03p?90(`6=EE!ylWs%50u@IbrfQ ztACf-Rwya7Mo+!+#N>x){F7rU>0%qs2LEo*oKkSI_pIxI6Sp5;v&(+BbEjwgy1yv~ zCvWeWF7iyq=~Ux7yaNNjHEWAlu-f2i*Rs4{uKA}mX5Fl^SkBma;?ko@ zYZh$m z!%oC4Y79xPUz~U(vH3@prRDDK+eMMJeXn;e$(g!B|6bmu1%+>}cfQ-U*jA!Hu=C?B zmG)b$%3XabMUy&2&cArQ-A%G+)#1H|YTsqDoIWNuPo!mn(}^uFM46u7Qhfd6snG4R z2d(XKi&m_e@~Ug*gwt!{6(=R@zBRTKuhA(!dZ8tqx7ji8_3ZUIcA+8Po9^#X*nj)$ zk0&WlEhgMPD>G5Z`_YD{25sD{)PID_e$&0M;{R{SCVTN)LK^8YZws3i{8{mMwyP-b z?A+-q-6m!}`1G{G{o0>O-p#oe6*gY9-B=fvyxUKwLpVl$>U_mBTa@ldt%-WLt{`ZK z?&7Y`BHK7DsvgZZ{?oif+RpWh!lc>nrrC9i^|NA*v3%)}V~U8HS|Ibp*OTwR%a@4QxDVlH<^>%}cDmsp5IpCY zQA`l)7HyX9_5VAjXyu=j`g&JWe$rYiuJ_7Cyg9~`62t1(FXufdcKK23UDb*cH;s1L zKC1A!bM?l?DbYPj;Z<{`WyC+&o=YoEc-o;7KDBMvea_WAQ5TudY<6AsF5&!cwwDL2 zu3Bq9bh@@4OR7+`_{ERjZntgPaknAk`M&|I47mq58-p}xQ!CyRc_VSyz&OCc*@LR1~!+Q3c z303pHIF?qp$wvKFomTUteEX-AvqCdivph4G=hpm~b;4ZrkLvE5<}-g98+s(R*8AnN z-+!jI{q*+-t}X0|Qm5pP+>AcCZSj(-BHNQQ8SXDBinNoSzAEXGv+jxN?WZNx{M_0v zZFxA^%J1um#J|nO?2=(7SM2ld&vw!@x+~qUEU@kG((Hduv*RCqzuLY1QcwYVWc>C? zaoJhZ|L+t~{*rzD^gOX^bC2-WGTk-*H*?pqgg|-DRnoqDzb9uszWG7wa73v{U`o|{ z&edBF&pW?AXGi&NUw2k+S5}R}@H4jxOPQNF_~YWvW=UX1Yo2PDL2{V=)n7dJ z|4R;Sdo6xTYr^B6uchpV!V5*ZYO{h?`iS~M1CDZk0bN~N8`nN?^@70y#QF&>l z{zLF`QNaT7LQ~xh?}b$l&-kj?x@W)AloxlVTllSfZFa`yOSNY2QVM7NY>?Fy zx@)EI!|>_#zB^>+oX?SG7j$_m@XO%EHIAw!RRck>eh-+PLJRx#DK-nNKvE!_LI~zjx#bd*Ppu;C1ZBK3cBaQ*Nhw)lGWB zhWMvzj`c?H_H#&_dy^xgw5#Okj{C>Mr$6Q6i~2dqVOM+iw7qj;kB7Vc*)U;>)I|R5 z%ge4AKl0j>G$qv4f77~|SKKGa_rPHdYzLGc>3>G zy_Hkhk~FzxdmZbaiqPX{CnX99y1seImo-~Yd%lisaHxpgWUq)R{X$)ZZ@;bYyV0?! z=}`G$du`6_o;>@$Bxt|k&TGH! zxVQG~f8|gdbau)JH8`_t_OAM}yXOmy<#%omVt?f&ylZ`PvDNv# zA&u=TdtCRdyv^IaSHt*|uwU7G`I}RARsWXeb@N#u&+|g)z3zepJ-BRVv;R zM| zbto$G>|R~Tbm8>JmwykOX%*xC$gXiity*aHbaRd6TZ+XJot3Zg-(SA!d6MR~qh^_{ z@3)jaz4-Ro(&87&Gw-|1Z=S2MVdArdTNcirP8FK}V>;ZwCE~B#%;hULFKe&*d%tOx z_h;Pr30&Gvr`QA2Po|`{=LUMbK&*}X)+O&^3&F*flRhW2Y1V{l=X9u&Bu5i`6ey9_TA}7t(;P_>wK=qEZjC30hQwF z&B`}^*t_Wui#u&+m_1JNLBhemWyAcJ1Oovunyv^ct1A%XXwGOrPiQ`pVA@Zt`9FoMtN9 zo{BHe>x+3VYW(Ed@!GtMYo_}93mv>nE>8TS{A&MSorQNN@auRRu{a-mXLx8Y$2_Jf zT#pm4z0Nz+scXH=OI|^DWna>pT_;W)ZMEkv2|RM%>DLMID9NuI_FR0L-&xE1V@4Q* zj?PTqPNr!=!FwOptPL-5%ii{-ztlbQ)xj$tQ*D@+v&uaha^vPTIYrR?c`q(#zbzh=p-}n+H606dy`BOWUuYI=o8~(!hR=*tw z-mJN_;hy!C1Gk!-WOZ1g4X13`tMtjViR+D%KC7Dj@7Ynk#%0ep=B&QKm9St#&Ax~y zp-va?$`{?`-@bSH@_Vk*AxfILO4@qCA8a~R@6USWKmV}SA!Cu=S?y14<4qZ_!V*M;{7KN}ls9AI21dZuS{ z+_Hz2_sVqxwkO>_Z8^Ph#x=`|&RE@l3oL3puFj9*WXZ~PdsE@GLa%D#mx-vw3o^Zzx||?B>GbKgBgxcurjq zRNd^_wdA96Q{)W(+)YVQ{_CDP|I)TP>H9$F+UmQ1CWpLtkFi=>#1glyp1a%sudP%D=UmZCl=@@>f;8z8D|y{C~NXr0%sfDXr2G z8FdR1*y5f(>8`!f`d_!U((;GB-RgV^y<7av@n=^DxSW1A?Li&G$GrZx9@_iTo#_cthc=4Nooy%}GqqYk-V??-_cu2^vb@LuB zd*;YBVN33h1(6F%=KN+}`HjOZYWH@Qj{g_FS)Y+%ARD~3Y zAf1;^m*uX$eK|*f^PJXa8S_mXwbPuey`TJ2+Zu6jMRh*&oUQ5GEAomM)DkWzZtaSF zy*sXqW7p|@vn*b)8wQDFEH$*_^*KCehox59-;Bf{6=U@`Pqrzwy#1|oewQM{?c)24 zi_ZP4?^pO;vG__SOZ37QqMeWD@s!w3o7MEb-|*DaTJKYnH@SZK$`hy@r#vbCS7Y_G z7T#N@`BKbU-)!OC!f6-O&YYat-yHi^tS0$`zt5-nyPh76b7Ik%|427NZ0DSy^Sr4s z*S9T}>G_p?bn~4J|88U%h2N*;zZ||{wbgZrLn9l<7_jA%_&A)Mb z$K%zEit940gU;RMoT#H=8>KOGhuQ55;RO@VMn}{+%X92|{ZxL*)MHv5dkYu0o!2$F z!ts2<>#yavTm_}2AC>T<{n@%Ahm^WMp|w(G@7Ut=---u$i#(Cb=T^`5 zJ!Km0$@BO{=gt!;l@@C^UXhr4N=&QT_KJaWua-04tmo15H%_=|rBf-t?0@8`SBBpc zWLKrQK9+q^IPd=b?cX27ELv-E`L3`NFaMAKJQMe%B)qom;^y2{aiOuZ(la>pLrn4W z)ZjC$F@jI>3Mcqwy(>9&mCyWTkL*GX=j#hI58nJdFUv)TF zB-T>+POiZmXN&a`qUwh@^H>`$7F?P$*J5*GnrG*uxZ5voDxL~i=(;h`f$#qA_e;$B z!z~;C7hf*^?bqGA(3RKn;psisy(V8zoy+$2VK(C_gGE!L*QDBgZxGrlo&5cz5Widx zSIkRWcJs~lL-2pKmxe{kiG;s!)||1rLTB-!7j& zxi%|N^oK)~@W*!vFB^(X-T6O;|6R6TsbKXX{i~*bj;ea_Y>jkTTl%D~^vjR8M}CDS z`gYbT)XYzO_th|Tz2nL`DaRS!+jJ$DRKI@Sx+Hp%gMOas-KsTL<4V6V-?X-?7HWKO z+vA&IyG7=u3U{+dAtGy+uiiE($Hsg{THLuy1!5nr#vD6kcsrO;Co(GOcujdn{)UkBhMD&pHBB?o;beR+J4%}ko>CBP}9FPi*)C_`XhSdR?REsMlW~U zW1Dl1>=8SfCt)1Ywq!xp#z$xTr#d%jU%FVQ@|A6Z#O$=Q3{Q*#CtE9;l&rtKab>r$ z{EPqRoBN|a8!pny)E8noANu5{`h2^j)$na%(3>>(+}3JQ&mv( z$m0!O{3VwElXE^RtH!68f*P0em980UHlFG>3|MZ=>Sr2s{K)eIe4^T!(dLdfXQ*6e z`!*~8_LYwxJ;GN-TAK%*osjs~{y$giBo-m9xob3DKFC|)cQ``VfH{YG>rSWcxdQ10 zPMpWWLQ)l}Tw*fr^rQN!H#&%RV>#HM>U?Z52W_4Y0+ zWA+sTRikYG#h$NqFBl~3Ze$ZVd+yaacj2aOz0Xh2mG+$}AYHNO_58H&K8t76-&ykI z*PWJ~S~dDvtes5D7N~4CkA8penM7->zRKgO{%<=^I574&9V+`1cj$A-;|t|3;<_Fm zMY;OcZI?~Y*I&WtmfErRNA8lCDJO+eZ^><*@_WW}?rC*vHh*7jdu)xu`>3aqEX%H} zw7n#y)_J^1P~xIUy@U3a-vQdfbzLWCE!~hY>Bydk-|q%XiB0s&@)=-X&}7 z*4_Pj?q6Bs#K@t0&-wDnTIxTQqV#Q|FD81b6OqQpskN#y+=8`!X zzBKie_Pt+q5+6P3C3TFk+7+HEW9uMd7{QW7$&ttjx?QHea zKC&rlD>N6Md~+aB|KqJWWi`I4b5@^ybhxqPg@ER6`58Svv)W&F&ky*ac<@uNz#Lr( z^YV{JdTQ;q>O8z^Y{4q*B=R%m+`)#|F)`{Ni#KTXykEM-Dd&a$>FdWEVqc4GEDN5y zTQXpB>*??M&!XD+EmX_}cJFntSqux-N{ zESt|St1Nm+577JiXr_j$8PRrn&`E8B(q+K7)zGhEdw8rf0 z3a41Lg=U?uw|`Wu`QDVncxwCglGk5tYCARxTL&nuzhcc;axCe__h92EtG38YH4MiWF+JZxE$@l+Eobc<|g&ob^$4^TNOsd)=_veJE1H(BM;h*eX zB75E>UAdjvELb?5Q-P^9q$~8-O~?Hw)=QW&Ec!3YH&gQ`*9rH#tTtlWzY2eJR!mvL ze`bQ{wXQ=Kd6_1-q#Atsuqv8CQTuIB+gz>^xkqzaKU z`_B!Rgf%bTEu2|!ykkeE;Dkx9Gx!64u_Xz=$30h&|Z4m4wsmYqKXMuqZ--@~kx1OXhe`%j*U)Jx_kHGS?Q*?qh1 z7lp4EllgqI-uA<`Nt-t8u8wz~py8|(Dz2Ux|3vP#U~}xZce7*9tUG?>@FvF_^0V|c zC2Exm_G}2wxqkY<`e$oubkhU>%C0dLdBk4ERsH2noFixDv!d1U>+T)gt=_qG8;8e% z&6`w0^(qVf*uJS7|3AA<@$PxI6YsoTmN7Xsep?Z^Fe6bYXM4U~nOxgRnF-bLiMkR$ z=1$Ws_%@~ct#s4I_f8d>+cz{AbaAf!usZKrl)~&f$)zXHn0@5iV!&A!)jg~3OZCrN zimXm6a}NGXozN7k@XKdqf045&o8^~p3T8)zWB6|=XB!F?Gk8r}qPWVg-``5sbhEI~ zz31ou^WMGEmN4bY%smRa{cFOuOI%4aUGqEGLH&rpj=goO);qKOH9r+Nx#YLy>%wib zkJkG1PAI)_tg<`Cb-{mu=wo-;UaVak%P8{4rAq0~qf(h`ZpWJ@E6zLSno^p$=&p>L zmbt&K7N+R(wxIajl?_b235S<%I($U1;Y`$g{X^$;&C0t!z7%449DnTg&twjj zEl2H271kbGdt_4mj!1NvFpQ36*r6&6l~l z=P_;H*|eSS^C6M9r_Q`gQg|^v?@rE~ggIXyce`IJsC#3%(&S|Jx!oacJg?7R?0H?p zZpyAegFR7bCufOwC>aU|K&BNJZt3FZoIH|*Xi0!pHG+W*4&pb zJ90qpf~kbK_U@UJ}^N}f9={x2w)mqfFhjDF=e)Jr(ilx&w=LH_Ke8umYBWW>nOSXXyS0?K`uf@jx zJT-rJXd~#Uxn@r_VeapU% z=LU&?4*Zw?IO~eBjOd9^Gd#+qCMid3xYn@2`(J zd}LZU)plL$CTW-d?7!J(tgU4_#B;9YUG#l{T`phuv2rt6hHE@5Ua@~!|7oW?osPu` z=g*|*E6EB(r%LSow0*<$2UeUXib@&{+H)qnC}Of#^DMf|_3n9c&X-_6iQa=fvH>^R zj4f&=UjLxd5|mQ0$F_G{O=01;lKIv)n=T%IFS$J-;5uWAh|`WS^6BYN85$wf>&A>&jl;Uz6F*ZI~Z+S##)CzsZ@( zs>iLGbnA}p&KdK|PX@B2u9tmqa8hD-1m{7kCui$C-_5PNU|dnF|Ay6XPv9x`Ss@EA z9@|-ZCD-fIp%3hT!qlU9CG;{DBuN~Ys1gi=C7s6F%D+x~~= zywgAEU4JkoCtzMwjNlOwwQ7YYjz?pUzln-iyv*2iX5Hl(Zrj@9%XBk1`Yg1!y)o1{ z>Y8%-l=+$b#FvNU{)pWU-_4=1K;dJcR&k0_KlkFyqc4^?IUf6T@}ut~yBU&)#hU64 z${$ZWpVMt=CG~rPNAmP<|9c|cx(3={`+(k?H^8BnKC)L;l0|d zvWnHb0kr{HZ!TPaeeU39UX-AINWxl;%SRthKbnDXC6}_61RPs#!u^7*o;l*&< z?(-rU*FO`sv&BB&lqQ>$uK&)W<{O{oYL|x+hOyRGEA$WerT((&(cZXNWrL*t;$;ud zxm}&N`f!$1+50ux0lPeIEH}P9iLY+z=XUO()pyVGoAW-KFm>`d(FOGndYw2|K0nEH za-~Y;;)NGKuIxM?^>gXo#;VC1U)*>;@8{lKhvJ)bM6S*2sO4L>>q@lK+?409&+E-_ zef8u2arWJx_|KNkR4)iG*syr(k?WGxTz zK1{k{%@hufnfKqah8>;It8mQ9;6X$~MSW)dVzdhSGyP%fJB}5vQ?5Ey7AbMx z`Od!S+w6$n2e(vZmv&m;p10MhMB3-^+sjMJZW^Yq|8y#K#>5||K7RNiarL}mbWXgB zd)?uswzo3O3IjPe(Vx{j{Gpf$CedMo~Tb0F_*|+rH z5y7g zoOT>_UsB$AE@x6-DJ6YE(AsV1Lq2cuhLeVSmzmq2yCu?Bw*4NH*RwYha|Ib9TZ$ih zF23%1U*T}-$tA0eTy{;^t)6IY`PBCRt{v*{3tunY@^FXdrFp*?mI$$&Gt6|`p&D{( z(!2BxXYLlPei~siE0;GUVRpz@_3Sxp2MgccIM^5eTO#b0&(DSxZ1)~zJ$YF&BQ1@u zbz$?WEBi{`O!~!VFV`@CRJDJ1wy_RZ&mIobJXb01FGd0PLG z_V(mtlkSsgYYS(-nAj}#z5DP!qhpdM1&$oG3HhvcRWYk0=Pty}ZJq^nabA1;z_x>Kc>vkUdjFe|*3r;^Y-p&5^ zN1NIVE2EQJcguS~v8UA6q=vfOVUA8&8gH{)JA zS>;R2Qm?7vVmC62-|3k+B=a^fZ`1nzOMTPi7d+3m1X#*exVLp)nw}!D#&gZ0a~sn1 zcWicwd#;=EHZC|Ku`*ZDL@hAqtF8QI_BPK`lV%jm_%NqDOvXL9)@au>2}2I^j@R*L zZdLg^vt}QB5qEICHEas=?zwOJ>E6n+Z~r|9-F$l4Iw7 zp87j0u*`4TsSh{ul~`ZxEU_%+*s&=5MQ6kz)1xnbbNx0uF8B5A^dAooe`Pgv z>o0t{-MBL54QJr_=fylC#X)izYKEP5%izES>* zn(%j}>RZ)zFE;(Y@Q1-{=WHjP)j!|W=zM#`1l1UrKGUtt<6{VjX%vVfySl27+ z{qEq-qX|b+%WVYNb=Yrpy?tZ!eBpdKNwe%A-6J30Z=YtBar1L6XWfQGd6iY=2KD(D zCS5$Mf9}<@l69L8?`VDMUc2e#-|)wB*H101eiyt{k^RKU87rp5pS`eUv7Dst-?H}> zA6~q><@az|@Iroj>k0e*I~OL}KAp9=q}UC3s1Y}<<{JO_-o%C zc@5!LZ>}skWz8zgG)8VyOLf!i1VWKjvHEf&y_L8B%k!mz-MT^`_1FkKH%N#I@n` zTh|)z|05kI_1&Sg!u{#2JeRlgS>g{~w(mN(;)iSG_Zg8}7t~iJ7XK^DSBc*+>t18} z)Sj8QH`y(k=pnM~EtApYR(fr`+Z%bXMz+T3sRdY4@GK-%ejwT|CERCGXj5_%PUa8Xem|9~KU9VDqJqyIS)Q{i91K6`21qDaX-#TAmiwF2ea}*sGu+d! zu5rC}`M|%gmFg3CE+}8SlX=HO_0(YzUzO!Lfhx<3W1q=X=6qdnLnts`i}~b2x!+Pk zUQ3PsFRiWkzB~DWt}_4f@0Wzw*X`OUFHrGIaGdU!qi|o}c&_&~=k0tdn-2fI$a(HSY^jaM=lNRqb{fg;=MgA;a@W7^>Ry4f zyI23q%Q&a!K0EhX?9`P{ey?IaHRFM1%!v)p!dG?sRh^1gi(0`lKe)D7T0+<`tu(4? z$4bT(Ms2BIPl&M#-oK|NFI-u8Y}wt+mKzCAwa)S#xFPyb;G4~oDRW<55HI!lId{33 zJKO7fUA#ww-fi{ExTsRJf;H^7$Xo)g zC8b$-x0dzEEf3pM1V30AtP6b*cH0Izc@5gxX;gz*=JtA>EE5iu)bw`UwSa+ zOLev=I+{luP7yk`Pw2bJ!lNa}bz3v9O}Tew zBKMSLw>kNQaIQZllDDaC%e1iigWsQ--gfb;FDcjbU!P*Mr}%^BcImXk7Q#_a+xG9S zFP{7Koki2XmBl9?h-7$qp56UMA*o8$25Ioj>JUtQz3_6( zx=zvO^Q;#&6mHbfaXu3qc6j1*!RuF5osR#PKVEUH@&A%v(+)m4cXbnUpGgOUO?#H+ z#qjRAW`^nOw`V=}4_K$$QPx!dPksG)rrv3m`|dv|)lN9vq|}k~le4fQ{##X6*fQ?0 zrOmYu(+)gpEMcsbeg161y=l45_NSO<=Vk5WR!Ukd+>*D$P5<%2OABZI>+=v?ccAsv z3hQ&eQh^#=XX|BcGNql0)1R;M3vf|1H9gO9`r&KiM5SUK>*f5%EBO{m+SrP`-1Iv< z<@m2BQvJ`vw_mSWw$L&7s>zgxLW{SA9hvg|T7=ytzS{Tue^f_l={AV(D=66Zn*E;7 z{uu&RGa?SRE4ZZ?#~fxat9((fedoiggMvrBH>z=Qu6m}sH%wx}mVQ3|eExM+Q}XXI zdMCK)Ke34{`IgPFv^iHp;ncnlA=z7UVo&_J#URvlXU$9Hje>6uST+Z4%Gowyg5TUL zEiZR0*!_89)&0cJ>6}WR^J}v<8gS(GtIkS^Nx6KawezWWl63ot|LNgVj-9>nD`@Qs z##d{Xp6?DUZ=F&5Ua-{l+40FL&F8HSx>-CATz~3Z?QZ+czW?v;6e}*|Q=Ylu^~!^L zuXQOX-aqlgp#Jd=%`MkAMovGuQeoPGt0zoERwOaCf8L!bqsHVo?eHU|yR1f=ayGuW zX?S4W>Eq#(9d2^$_LzBPS~oyv{vx@Wxdsz|jpTUTr_Gi_S+>0hxcr>tBo)!W3{{6$*xqi%D`4dso0rvz^~9edVI=DoMZ z-3OVhS#xbHRrt2-S!}%_NWW-d zB0l%-m*?+{bboz#6Bf7dmcUc{Wp^ufic25&{lcbWpe`@_ul(Ba-hTBRd?zx$-L6n> zGMeXCKa*E@>Bld7yynkhlT=CP65sE2;_{s}cm1pG>}Ol_xqt0)&SuVM!I5#{rv*CL zzQ3OOu(qmOX4BTm)k*4qrPt<%>a6?1x-7!tRAie#X=Rn{t;c8X?@QY1ufKJvG~=B)mE&FZVLs?v0J zWiMl`W;uRupRHe49Y1C3SQg~}($pj2LhzeVn~#?nD{LfG`Hf9a?_)nc`_iE^m*-Jjdzw(7;VKi4@o^?B~RR=MBjuNUXtU_MnHgSzsY z((9Q^_~uCHSvyEw_`XFjt6J*gO;xeyUtb#i()BqjZ&m&Khk3^N!$&ig-Ai*jkPTYo#U*=BWkSQ3dEv{ZC!3vd^oW0-dOIz+eDY$Y zYfKqUQxEZ<6`46-LjNDjx^sW0h@26aydm{3%!@6t8Tq>+q-n8_MYc9 zr7WMS1*cCqG5PV-Jz-1E%vDhQdi%H(-=Ron-Nmn;Bz3%dek7i4SATD^NjOvg4BN>Y z_dRm7Z@$Z=dNy8+=|}P|?V=CwyzlWnN`3F&Zt~no*=Ta`vcj(sFO2KYzR+Q-J?3v1 zGp%f%)5DAci`NoI;=UdE?jw@9JKc-r+nuCylIJ@E^3UCvqB1e-aJd0{-TwI*1rMIE zYaA__B_(|6PMKZF=LX4-;fG6XQ-0RXF8m$fb;3Q-MK|xX*_Q@bgxAYv@a9X*4636@PU+*7k3_N&QYq|;d!_zN9rX0;;+LY<{>1oD_vfKwh z8*b%(H`n-HxUjG2#L3B?VkOp2nJ$qBIAUW?wM}=m%c)fei`(JdHsLSNMUjZr%$xse zeLb{K`9@Ae$_(edGtHMRmvk#y{q1TT_pK$1mR-1MZZ>zJ|7Hsjt1l((-U(F~{hU9` z@z|Y;tSQ`kP{=y&t((qz+vVHYozt!?)pdKvysG8H8eJakKAE*sFYOgOC3O8*`QGmZ zJP8pcA`8W=t>k`c);y5azj{rsXr*MYgFwq9>zOx?=;be+z^uL{qdj1o`KFZ44bGoc zdlygJAnt$j#$^||$-EyOVtUFFXT=pRGxGRy%2;px=Bex57lp8W;#J&IwJh8I$GJ%k z!IE9|^EZY)jc|3|@nccQp4A=|N|QzZEnBftC}zQd=SLL({h5^YG3oKa!#;U?C*Sf} zxrMRWlZ$b|mR_HAt#^f`WUJ1z>;FCbpsJyoxrgV&;s;xvT=O$dsEJsx+jL*z=?;&r z4=WFBu~qXrY`ZCM<9_omELx6L=N($!Xs)_3SCGs5qo(>~Y?Z5@8)~n|qw@B9ePBE5!n|L34HYb>K4i2jiCAu{y|6|*|Io^f zFUoxkcCTVSq$*NmDfC2vMf1VwSj`F34$c&4@tcqsAvfir+|(Cka^FfX&wLr)&He4$ z{)6f&v+lWjaQ@Ak+5fRDZOa*L2E93+1%kW_&y^OxTqo%^-{M~Ahf^2r&31e>aN|#$ z<$ZN&pkU_GdrOKu4KhvUEL$umtdQc!T(mrP&t!rA!was?7E=)G*sSxlq4M@M)8H^U z+sjv$Y~~YO(EaC*MrT>ch5I)rpYRh6xtMLl;kY<)QS9%6gzknto8Hv(?fU61lKoym zTD{}O znBn3X+Z9vY7N6dw+utygXV%*#BGrw#U-$obrZ(Xz>)Ba8lKRhtI6qhH^>E|f#~-;j zpYiqzl|+sW+V9w>T~IrdxBug76Zu~U?zTM6GQDFYt0iC`vRRdJfug`%^`#*z&qWrC zzhaqF9eb-S>Ho$iF5!m5Ox>L~%-{W-vtFe2U?A(;Yby^==G`Ia9mG`ims5Y^Zp+Z> zde19+rq^5XS8&!{vdh_8_WS7cPQI3FS8imvy=eWweJVxSH8a>($!+GoQ+qSS+8sX0 z&E;$@P@Tld(P7!yHlgxZhnhgS`{jGbPhL&>>9J|COWsXq9aHV;oeS3QdR(}p*>=(9 zor{w-f{(GAf8CW``8;{rkNHox1b$ZtDGk`B!}=}HCipPb)T)(0#?fWKV+lxUvx^p)CsOq>zXN24nES?Sntm~_{607(p$H$ z|0MHM=ihOg*`E}xpFYRJMPPZ{JxA4r&utDCTisOqIy<~~^_H670?W?)4O-x)8uCFr z+j9AS7WIDnsdEJEI@xz_KOp`uJcfDE7he;G#G4&QwgyNY*>>$=!Ir4qAGM!-y(Gn^ zca`NX7bE|Th3mxbnur-4`fgB?bYbh7x?IT%BGCqmV{(u0PB1?saLsk`{jw{6J}J!2 z`@`g_R~Y}P{Kn0-^{Y*;ubMldWn+Z0W?Q{aaL~#lAA=YZKPs_@JU2;NIE|0EO%W|txm%*IIH{Z-|c>1r?@7U}i6Kj&0gC0;qd)b`P#@V|;(ds=*yR&KN6n8qS)xyPz0 z{*X`gXvT(YSQ# z?CHZP`wZ@Li_$@7^+njhQmcu+zm+W2z6;)aTqCL;w(9oDa>cKOpFP%fi#~f76=Ut>SC_Q5&i9*% zOaR~Sm<4v2<*W|C+FQn@kn|O0a_%a`#$*pgjuU}Ze z8!&}G<=|HBnR$6!zBlz&25&KXdMhX)?Use7z5lXT65`7Zz$WPIKDFfzOKg|8XP%o{dT*~j}~{^PFqfAh9J``=I}ck;K*W1m+Ir`KKW()eR~uEV6= z^V)-&&cjdLy>E)N8;2jrepRU}zxzx<^p_%C$KbHWe-$fx7?d)a-ANsRp zO`j)PZ#tFR{_&&R{G!&DgwWkJYhA-@+Lh}~6+%Xr29$ z;b85m?{wjQQQRR_yQ;#(N0TzYZPSq`N_d%&Q53TFt>wCoN&k86W-7$kU%e#jQ_*tg z?$03YyV_^ZeAr*ec(6Mq{(I*!b&dU}C$~KP%bmK>t|#+kui%>fO{oSVSK8imemOtu z{QFJcQA9%~JcMMu3kNRp^$9WrG>)1x-TxrAFwmuRQmStQsvNuHELH<+}Pg7 zxm4dYKK%4$=RVmZea&T#XQCo1Zhe&cE~H%|xMivMwhO!8*@WpnUvu-9`>P^5wa?Pd zZ+Kg)zlSV-o}_%--|+pV4foHA@GiOeSYnc?DC_RRCSDWCBRAY*IJP1&ao|dn_UX}Ob%o{aG5A^IA{Kg z^^w{xYZ$|IPgKwQdFoF~`dYp3uNj!WdhHrkj^`q|XH=+;Qwl}=|{O|XIw(A9= z(N23U-u2$&jkz%I(!b|9F+NO?GIg4LAy zM4E_$-cbCIoe*qH`vOrFnoOVKJ8pn>zP|`-wG|uZ``G{TU9dArg_qPqm8fsg)W-& zan8ndxo)TbPRiQ-u`A$uhDS?J_L2i@=l){O(y!TW?tR~QQliMm*2_yG8r~Szo1UGs zh^c#dT%7#JJ}&1U0iFNP_LkdMTCr}n&3+~AF?U(i`!}lTdpj;i&zsM+eh(B|Yc)RMmH7 zm-V$Xg6-nPcXx)Q{k>Ry>5J$y3r|Z{ALm0sQJ;F7U%jbI)L616{^iBbd1;?jmY<)= zT>s>N&}NSlv*d5xdEE0S@r=#OpHizAe|~LXc6{3By{8RMuw4;K*Vbfd^PH1=ta!9n$luhHITyN#c;-u@u* zcZx=_!m_8enRg54S6h7(k}5pp!#DX^>EDK4&zs8ELo)2%NbsHU&9<7lz4YgFyDbkc z7~eO&_pDORsWt7m%Y#+g8cScWFA&)&cX7#M#`oVAbKm9*|J>Qd#-7(L$of@lwLnwn z>hGRcm&-EOJTrM4cun`IKTpoS{UJj7k8Z78cYoLF^LuX{Gvec8UNBQ~zvROAuM+c( zj`50D-DtVy-`%!Z&28C#H-X+n&ce%olTAKLhFTr<&Jtn&S-1Bq_p*kF5ABc6*K9Mn zCeAW3e$t#@FSgn1{HW=bSi_sSN%0wr;iSI_de5YUPPsq7yee{zoc8VfO)dR@MKHQ`vr8c%Zwf;Z!!>Z{0w{I5l zERr{UE^OZzY5(!1eQ-m&plVE~q<>A#7VnI=bJ*tYPsy>>a|gkJ1%k@Xjjbt_eOrk zoEu7fhaT$R(2<{e!Q-3q51niO47_`eWL|g}$?h^q$-FJ0X*S>OEzc^RuMB!E9^%_8 zJ8kX~yHCp&w&&-3mU?@0(WLqc^U}^q(|HW{Jee+`uw(ZD_az=4>n+9NcGf;q4*eeb zy4cdh@-JPXsD9;xah ze@lX|#ANvh1qGe(xVDb{Lc{_6#An)-VSVnc{VGMQ_mQ`Q}R;CG0tM(7X6rrJvljEiee z-}wA-cDb%1AFKW~RfU*CrLms;)ql=$&#Y#s?0Xt>f?wgd(c)`waxNr07+?LdYl@TE zvggS%Q`%n$Bre#?cxT!-{bJXJcQ@;--4LACt$0gownM=ERcG>wyj_xB{>&G?5WZXE zT>1W^N6PNAANsdq{i4@XL`2`@pNZ3Jc>O%__DjhblDTY?x^w0h1eeE|v~EnB#O=7+ zJ;tC}Jxf(C=j*P;@^fGRv%L1`s*{?$yU4|N?b`*nI2)W*`ORGVh-H-~Q{7#=0~M90 z_HbIrerK~WYZsn1f0CR5x6ie8tPl3EE!x@nHY#G!if%j$E z3MC%T$8+T>N?t5K+N$nw?ON^P38hN^j`;>S${wxMs``1un6j?#Cm4mNSMQ4jF$Il91ZS_w{~|#Cg9D(>rb-d@_sS{{t!W+(6Mc zZ<^1$i?J*$-)(Z|&Nj&}A6qmpomtUz@$ODLvCw+OnnDxFrO{qn{H@nG+AjH=Ec5@+ z|BP=xXIXy|S~_*Z7Uh2;z8`$IPY(Yc$owPYP@~(4rZ{PV<6q8wL#C6`@y58UzDHBaDQ?9=po1S`PW{%zdvZc3F4)$ zehqoG+jSUb-gBE4o-woe#o;ZL?k^1&3V*&Rb2GXzFwsOfp!?+6x%0DDHheQqbzrlx zu-X3ZrQ=Dbm+v)xviaQiNj-naF-!LNW9=xJg}*B_zbCD>EZXRJullUsb=e(L4@|o* z{JQ1i{E3ARjf-dXU*`1Mv$5pKd#g!&=Dc;)W$Ii9%d-MlcrU(ejQ@K0+t(J+&78G& zGx~3L+;^9p@I&Htf7789fdw3mhZ}^;t&!*86ws(g+~M~)-=`Qu8{q!y^R zhAkKTB>rNZ>)lx|Pt0L@G%2`4VU_Fx#%(b&NegVJo_qD!y?9=Tz@b1hflGf96z8Q{ zvQ>9KG`nGzH+$}*y?;Zi7`Ar2Q+!$D`%!!6tL~38V_Y=F@-M$O+{x)dJhrr6~9TKjGZI&{pA|9fO7gX&VD zt~gdT#vA`jT&QGqYx^xKJ8zD01ZeM)uMgEyq-y z$~m)pE-$j^JQ@3=aBI}H`x`r+xOmMwoyYtBccJ*!6;FLwTV(A1`6%>qwp^I}U-Xk4 zAKUd?;yjIl0XM2<3f(s4m(OVT$rgt%=_Uah= zT~1&~j{L>u!l!dL>F8(g*i{A=ZxlB~ojbjxdzp-cc*ybV(_AL3mAQ9g{yoO+8BEt3 zj$U1Jf7a}VS$p!B&;J#pR4&9z@y?bawIstUKAS-AUo zBj<&!CZc?ArQgQa-V9RFRu=7igc#A2DKCAa&-O;}=d|P2X zckZ@Qo2?@DE|>pTmz`9kS<$gKisho`KkfGt7iX~C|5W$C z_*BS*=?nC?GKcg>91UbzT$HKj@tEIUQ~1<%m$<*(f!h1a8vfN4v!;<8!yYW%_C67xm35 z_04yQEwc{q`7$eW-KzOBGe2d0Ge}F{|8iSQ@}G5vXBqTYUvR5!-g{^B&$+^rZ)Qzz zj!$^*mZO!S?YKwdG^dBP#BIZNU%#93%O~k(8bt25?*DN`BJ_prTVEf$=y{5<974-= z&sxM}81ZdY`@6E^yqMCL6WkJ^PHJV=kJfOr+|-e1Kh69iXHDQWPQe=e)u$${eJ{lp zy2oc8Yx9}5dpZaBGlYA@C-!N4_KSX&x-=d??s(| zDfbMoTAh>O(~v(VBlT2AXP(Cm!zF8beu-(uF7w`)m{w>d6c+s0j74<%yAwan1D`i% ze@R=mDPUq9>+T(vRTF==ajd*@T}vTN-|xXH*BIFktKwg%g4n@p6kD))?kS|JWDF;QwdU z)yCXOYIc@|QkmPXH%?!gU$gkw|3^pC*DVmJwY&6!OLo!8^!%dw`XtpOb={&jCY*lf zF7|8hmL83V^KP2Ttom)eW7YAh8%MIlU%D@xxZUcS?t<@M`ZE=`FFGWe!m?`1AG!Yt zTk`F%^v&Hae*2cA;jVR;=Oq34bVK&hMVV_$({^wE;=JeI4P*J|Rx(z6I&A@qgu`d6 zq(>Fcn)Y7rR>hWQYhO(3dr&UppQF29z0h~c<;_O3^%5lR>L1fsf6jcxywBEhzo$L7 z^f9$~Q|T5T&zr*RtMf1>{K2a!Pa75soMYm=kzu`4y)-z3%f2D~@N_}Or3ueHFZo|| znRrNW@4^aI#&t1C56X3Cm$YtF-m*1uvfO-s!=1kVE7$C??GMntb9a${%isF{juD>n zAKu-K54qcWWulHGzpqrHXqkN5-oVm%_59pEG_E(l)cN!2XbZ{};(EE-o#5t)tg|d;3yKaM^^~ zT@`a*bYJOqYn{;KJ^#nEnM+ztC9OZ%J}~RfQ9oqjX?UII_`-_42Y(u>cWCSP{O+87 zZIA8ajv9rCz00?r6kA)hEn&07&dv9~KC&^`S;}iVL$fbu>2o9Lx2{)O=Wvw>M=qLh zTJY4Boga(%|6kbgro_j+x@||Mxlpq}fUS6bo8q#S9bdM6+pO7C&~k9~H#=q3-Xrf@ z?VG+gZ;JX5d|I7%UA5`k0A1?^=ZG1OeZTQUKV`jtMRl<_ua5g|HwD&~IqQ~Ph|U*V@#)@)gyY*% zQj}^piHXj-yz0q=6Z6ccT}WN4s;ne&yY#n+$L%OPxtOR=;_uHh?9`k2FrL$Dkh3$5#SZPj%2 z$eA7R!)YP2@KTFj3yqDE%4¨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

5`=WdBu8&n1i-*g4)aOnAl=X@8DW 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

)3rn0I-`Co< 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 E04ft$g#Z8m literal 0 HcmV?d00001 diff --git a/Userland/Libraries/LibPDF/DocumentParser.cpp b/Userland/Libraries/LibPDF/DocumentParser.cpp index b608de763ef..3bf17f635ce 100644 --- a/Userland/Libraries/LibPDF/DocumentParser.cpp +++ b/Userland/Libraries/LibPDF/DocumentParser.cpp @@ -568,7 +568,9 @@ PDFErrorOr DocumentParser::parse_compressed_object_with_index(u32 index) if (m_reader.matches_eol()) m_reader.consume_eol(); + push_reference({ static_cast(first_number.get()), static_cast(second_number.get()) }); auto dict = TRY(parse_dict()); + auto type = TRY(dict->get_name(m_document, CommonNames::Type))->name(); if (type != "ObjStm") return error("Invalid object stream type"); @@ -577,8 +579,13 @@ PDFErrorOr DocumentParser::parse_compressed_object_with_index(u32 index) auto first_object_offset = dict->get_value("First").get_u32(); auto stream = TRY(parse_stream(dict)); + pop_reference(); + Parser stream_parser(m_document, stream->bytes()); + // The data was already decrypted when reading the outer compressed ObjStm. + stream_parser.set_encryption_enabled(false); + for (u32 i = 0; i < object_count; ++i) { auto object_number = TRY(stream_parser.parse_number()); auto object_offset = TRY(stream_parser.parse_number()); @@ -589,7 +596,11 @@ PDFErrorOr DocumentParser::parse_compressed_object_with_index(u32 index) } } - return TRY(stream_parser.parse_value()); + stream_parser.push_reference({ index, 0 }); + auto value = TRY(stream_parser.parse_value()); + stream_parser.pop_reference(); + + return value; } PDFErrorOr DocumentParser::parse_page_offset_hint_table(ReadonlyBytes hint_stream_bytes) diff --git a/Userland/Libraries/LibPDF/Parser.h b/Userland/Libraries/LibPDF/Parser.h index 64edd70e335..99ec82d8ecf 100644 --- a/Userland/Libraries/LibPDF/Parser.h +++ b/Userland/Libraries/LibPDF/Parser.h @@ -62,10 +62,15 @@ public: m_enable_filters = enabled; } -protected: + void set_encryption_enabled(bool enabled) + { + m_enable_encryption = enabled; + } + void push_reference(Reference const& ref) { m_current_reference_stack.append(ref); } void pop_reference() { m_current_reference_stack.take_last(); } +protected: Error error( DeprecatedString const& message #ifdef PDF_DEBUG