From a92e7559bf7696779784a974efe1923bb77ff42f Mon Sep 17 00:00:00 2001 From: Gustave Monce Date: Thu, 25 Jul 2024 23:58:37 +0200 Subject: [PATCH] Revert "Common: Re-enable project logo to differentiate from stock firmware" This reverts commit a6b4799081fd1582422230315d76e583c1b5dcab. --- .../Include/Resources/logo1.png | Bin 404011 -> 0 bytes Platforms/SurfaceDuo1Pkg/SurfaceDuo1.fdf | 4 +- .../Include/Resources/logo1.png | Bin 404406 -> 0 bytes Platforms/SurfaceDuo2Pkg/SurfaceDuo2.fdf | 4 +- .../SurfaceDuoFamilyPkg/Frontpage.dsc.inc | 14 +- .../Include/Library/MallocLib.h | 11 - .../Include/Library/lodepng.h | 2055 ----- .../Include/Library/minstdint.h | 70 - .../Library/BootGraphicsLib/BootGraphicsLib.c | 218 - .../BootGraphicsLib/BootGraphicsLib.inf | 49 - .../Library/BootGraphicsLib/ReadMe.md | 11 - .../BootGraphicsProviderLib.c | 103 - .../BootGraphicsProviderLib.inf | 49 - .../Library/LodePngLib/LodePngLib.inf | 26 - .../Library/LodePngLib/PngConvert.c | 18 - .../Library/LodePngLib/lodepng.c | 7612 ----------------- .../Library/MallocLib/MallocLib.inf | 19 - .../Library/MallocLib/malloc.c | 213 - .../SurfaceDuoFamily.dsc.inc | 3 - 19 files changed, 6 insertions(+), 10473 deletions(-) delete mode 100644 Platforms/SurfaceDuo1Pkg/Include/Resources/logo1.png delete mode 100644 Platforms/SurfaceDuo2Pkg/Include/Resources/logo1.png delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Include/Library/MallocLib.h delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Include/Library/lodepng.h delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Include/Library/minstdint.h delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.c delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.inf delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/ReadMe.md delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.c delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.inf delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/LodePngLib.inf delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/PngConvert.c delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/lodepng.c delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/MallocLib/MallocLib.inf delete mode 100644 Platforms/SurfaceDuoFamilyPkg/Library/MallocLib/malloc.c diff --git a/Platforms/SurfaceDuo1Pkg/Include/Resources/logo1.png b/Platforms/SurfaceDuo1Pkg/Include/Resources/logo1.png deleted file mode 100644 index 547efbd4b7652c08f99771a858f4f3021e25242a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404011 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

l0ho`-XT%OjTQqB03 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 z zkUM|drRx{a)(Dp=JHGJMb2mGQ`U_JE1CR&txv<%qU+a79REvGpq_Ww5N;*uGwdf ze)6G%vP(WA)GuDze;&I9xAb{jI*wncsqA7YlWk#jw!nzo{+%A#xrFS~7Crv}xU9_m z9{GqH(AKbt=q}k#?&WeEIrhfG!Jz(s3D68nd z0Dd1NfrM+?0liWm*nJEXEJ(VNJAW_PK+U+1&A@?We&>0xmhQ`sgwou@1zv!}My=^i zwint7S0cb#gr?8$5#9YBt!bnYu!F~8Od*2|QXesP<|P--l>`6qMMR(4LkTf#a*@Eu z+oVkWFURz7T*wo!L3J(<_va#)ULM}l^5GX<(t&=463K5}Q?sEroB{|WRRqE5z^DUN z^kb2pB2Jn`UYvOHG*9*YoH+L0Z_#a<^7d@rY2qcjIJO+26Y&n!pt@J?A0*8`NOHKW zrsKi$Tsz-gVeCNe^@JKrOu!WabaH_gx7J~rQFmzEg+<7(@p(*r+fb8$(xuN#9uvFQ zin|GYp}vYcKDG)ywV-b9PYu?2IExpN-4UWA_4J!gK1sHn6ld}?EeK6wZGkNyb|%@D zf7-$u`SW}T@a|$ElL%CIUH*)r^DTQ?VyPUIRNj~6MnwPhYaP`g9aw(?hZ64T2BEVB z&~fh+E}Y-w)LZyB!@ts>D!O-osAt}2Li%dWe&wb=Owtw^GK2lEla@zwH? zem$?oT_$kjkS<1d8aW-vGp(Nx<>VZ_H3m}@f?<_L-m(Q-u*LH==x=G7d zj~iP&*Uw#t1*O7fk2AqbRklz#m$HdiqJ;8ECd~@B^T&n!bow;^b&=K(SVI?`Wvs** z*KF)E{MCefgbL;DIA}tMZ}#y1JAs3bkL|7UU!?r$pOO&bevNzvD<%6#^SuEbw2^#A zJV6d?m%XtHo_Rp~k+_9}yb~P=L^m-ZFx_)VB0UlH%ewGiEdX4D<0;&_ybo%qd@y;B zFy5!fR=F&5mAIrz52pIVflHa4c>&GRi%hTh>QcuhxtEzrcP7auT4{m(#OVF;(@9dL zxN!*&xI9rE`H|DW@T^P(u=oWyjSD#ZTUT@o)r@DnIgvh|P_!6gfbUv5i7RxcvNNyKW7x`mH7a>X1L&CE@X8Csr3+`Erc%KQ~ zzuGdVNqxnnmw&X$J*oeqjKs25YFxC;_=}GhY_WKka$1;J>;-NF*HjdG*VkVYj8)UU zK2R%4t=(FG5dHoY5K3A@=HlSh{2CSB-%2O?)i`V+4#r&g(-DX>dRM8l`^e+B$g56* zWXtJ)VY5S#o=wokRxY*wpOihQPD${oS=h59u=G=#Xkjcru z+S83$G6np+i&n5gMu1SmT2VvM&3*B8ieO6b{6_9Q!<%=2DOSn5dJb{?o$Y6Gt9z48 z)CV*aB{g!8ZWi_hG+~E4YmEySPV*$0N5&2iefbe;^daTNtY>aE0j9~{l9|m)IHfsZ z$}*D$J!cd<1Y_P-J*qum!Abg$qjw-+q~vpGW|vE}-HHeZ#^$OE5KA4x!>xAsVM?bQ zytDk5^k_1N;gcqPEVw6kSSJzzu9bhfbfTfDt~e~hfcGbl-SoKZ%O(uoERWkkmctJQ zxv&hDg_Wos;P52z>2Tz^I4985!XRT)p^kB$e##iVKS#5IIeFvrD^s95tZ|6}2L`9W zU7LMRods~6W9D3g%kfiB+oU!cf~ZXAfB-Jae)7X~Y)PwKw6a#7us}&%dhM`x*1)W4 zg+0d@ee&!V9Z~(bojB<-&Ey1)KHd0s3l@0`FFWs}Ttn7UV@RIS5SL&p#U3)niEltZ zE;_1uAovj0s3pn`M_xCJR^Lm?eQ`*IOvb=2iKM-J6I}RTx5xiS)57cP4d;H%4hb!m zk560Tn#PVSz`_qxOQx?}hTX0ax*$y*aBM^x_?d(i-7BT^Ocj9T9C$GYDL>Cc4~{@_ zRM4_Aql(9?Buy^z++sv?7wu|`YMO1&p^~;6jv`}2NOL7mT=eRho+ajt9WjQoWBar|B!aped3PV}V@gUF~P zw9VNeY@1<> zbyEl_qYs;}1lbw!3>?KBXU%9=Ml~?b z$~4US+}uzF$SFtvIT{yRf3M>lTziz0co0jxbi*hW>!vR{3DhF16d2Wj2!tQ> z9Y+R_4A<-aWU4oCBp)1|DPk>^#o8@X^N1F2cAB(Uti5@ll{wyp-H@42JQR*`K(4^d zCz|Slzq@auq-pArYXaG6M!uTB(-k8HA+NV0eH(UJg(>Uyq{kBTIJRFN4p9FQQozo5 z{!cPnZ0!0cruQAAtYbD#g&vi0j#=666%VJ$31KrN&bycY#2O-jE*@@=e)?wJcL|w- z9#kZK?>NOhSki3a-y0Fba14s}sCRtZv@w|8uo=A%L>YJ99sd}@eCfN#DLr9$R?<=p zm7kvYU7i;;n)W?*?`ijoN(D1(nFaXw>}+=lMpS{e+%+)G2I=L8*+>&>bMqAU7c-wt z7t-BJ^P+=n1JzPHGL@*gwtkDR7}l~*W^3ck?dxXa95Nq1yxokoOcd#r^!MWLA`9jC zCK}u+x$pQfYkfRGijN#L+GWCSyt#2jt&S?<@o;GLXYnNMZ~wZyQTt7gMIJ2H-Cfq@ zwz}?&_^F|JTTd%yvO7S3bEGrd|8mS?V2&7jz^9YYL&?;2`sh-t)omr~ih4(2azC+)hMcb&xCJh4)o4dzP+l3pWTtiuDj$}PrFNd>13jU#mY&i_ z$|FW2+dFu9e?7zoDqg*l!q}D3Le$ z%CMeslRUI|nR1E?W-DCwWmAzU6--;uy0Cg7%@M*Gv6S%JI{QotvnMD92>`QP>2_!s zSl;(2W`~k#VXZMQ&hre* zv}3^SVb)s@nBmPOm$@nsBNc)(u_{MCET(txY41+Dk#&&s5W`Ynd?0tWDX>>Uv{%|4 zEyjW3L{^;>Tf$9Hf^cwi8H@Zh7Q4`A?`h+}8Z`%r@G`RRf)dXA@wm~oX#CjF#2#Ogy?-Io2dqm=l$0lOO`mBBd4VNtr92$wXnDibnC zq{KBl_>=r|vNZCM@0Y>AM`db2-OUQKrG|z4 z_ZQC&LOq_X$yuzCtn*nx4sq1>s+@F_rpfaF@4-1siMm2SQ>@Ek?WZHjaI%&USag;T zR=wYvnqNVY+&rZn!W{TX=|UJfS=Jcdcdx8ut^Ai&NdHgg@%#XOy^&&3A#T!YjyGx9 zqv=~(e0-^Vq(8Zep+OFMpO{m^QKIuC>MIT<|A@IeSzT%*H9#5u!O)Ca@95g%s6KoI zet%+LVY!;_u4X;!wpm2QH4%08vP;3a;*U#aE*>r(HAAVLyV+XoE}1|E5hJBH-zH1Y z_-=41GA<-Q%@`U2y=`@DpGy4|+`d=wc&6_#X`yBIacGn%DT_!+WzSS@mm~nW!8za0 zFH3}5Bj(Q8Wt^LGg$)_(u-DJe->v$%zcu(V;U6Bh{w+OhA{&t`6Z%v8rZR2)5& zgTKMMv+)Ky-P4AyooluOHtlqS>pc*UZZ(M%8aP<+ zQ-$T|BTy4`8XaW38Y3}#d#Og}^a~{u`3Y2t#GVC%E}dm&3d&Aw8CrTSQ=O7DUJs`u zr??pT7+4&~VEV%p@P+&{&oFuU#tXu-sEW!JB3$mT$ae2#VQDT4GKu-g z8#e6v|J&Yi4gP7Q{A&sUda5;Y@A9Ep-p^&(Hp*a#tN`O%$tXqf7YN<}D11%ty+WT> zUjFWb=Hfiym!$wl-(t8{=r|ONj|xR0QBG1s^!Opj~B-%cO7%1 z9I@jeAyjX0V1h`0zfJsu(c1FBdLos}lo)@CbFwPy;QJ?+{)z!rdry=|NNM}7OBCR6X4|(W)N(OuH5z|$I z;8rmOq(Pkgy@niv$m#?u`=BkmY>}Xz4ddI7e@nB5USiSg6#lc)&>Ki&m36K|Hx4&MVv2XoxZ5x7(?edhg;*+;M_T%Tvu``> zC#OHBweY|lDFWu->Zct`c&}6M3*@ou!oMuSpI58GD}d-6TzZ9cosy}j;tSBu87APm zr8~U?B46|_YoxGAM6e~JTEi-H8QMZ#R)N7Wa1xa_;CkqqGN*B~CpR`!f-APCJ3U;7 z0-o~G)*jz&eacEdbdTU8;c!COdYJ3X(z&7|7;-*V0A_y zfGTV~jLb>AtIZ-MDMUixnuOG;fHjez$e$|Ptbgxl>Y0E~wMC`lpp*?NExAufh-XLe zbdotBJS_4UiuImn1X5KIY+^}5KX78c^>pj@(Yu^35pHVL8&(JB^_`+F{y_yiXUQrzut;P=3;hJo*B{;j}iZWHaiMC&T z+duS_eXh$XW~F#O@W^ySZ>y8`YX6Ji`Ki_vn*xIkH8y)1akxpScN#JA=o#1P#ITax3D=7jyjWcbjkjSA59*AN_rRo1FijGwMz$ zK1PkZ(2q-4vslss7h@Z|mODjhVLKPn@lpUoSCka17a{s_jf^|Ek8wk;&8hFz%~RbS zxzLp+5lz4>)+imy*d6h$C6pAx4GG1pJIjjxb;O1It&xzH+3iAV1BE+|A+0REMoDFz z^5r40ktQFMJHNrX1eEphIlxq;)P~u-V>%Te(>=8jDx780sxX;~dqs=D$+RsyJ2=Nk z!x;CHpl_xXy`i;J-m~+_Wd_b=nP5=QY`?rcdw3xyk1_d{cdD|2r6MNaF%mYuLA>mb z0=ji@r~*mwJd{^;GzjPa_oLfJ!ajOJXE@x;25YCE&s2i;oG-h}ynx@fH5KCEcGNKL zXS3NLd^)c9@q`0572!TJfOH6REV)UDVgx7v_i&6dvGzlb86qlc&ny`R9TgFe%~wDU zHC@~L*bgC^EZ9sC&aKyDmLE%`61Je-L#rsYKd(&&$?bO7wuGzV@=H0uNrhiTtq#;G zQj1fY-l)#hSghElTXK)o*V8cb7A>y>e`X@-_5Yf^+1Qfvg6lgx2n8jPr>s%4VD9I8 z`RAOTte?-rQ(;(7z?pCx=Vhz9VPI%?+k8bXrjUXneJUj}M36oMAv_&uchq{({dM+d ztwETx53ECx{Qd6PZK%e$J$al;U7U55&MGL^%rOL0)b!3Z5g>HJ45d|xR za(FEv7ua1A#5EC^9mh62@R30jUUb>zBW!R+c}@AD%DJ@ z7sHRO$0tfHZuu*_IKE`|P9*+r6uMswFtm1XM=&NH`fz@!f|I|TMDCvcIT&_OYw&;b zb-8^Zdgzc0oPUSc)E{35IBl>2dJrV*>tJrJ8r)po(3E)BtjU z>0Gu(OEPkSX0*JWcwp0VFEGPNB~gP)^}V|8r*g2rjtE|Q&HrQSD*U2uwmt|_N`unf z-5nCr%>vRT2rMPtA>Fxjcb9Z`cS<))cjvp${al~>&VR78^P6+dwE4mgqEWPDh{K1q{I{H1idRi?x+;S|K41m>WxC z^l1lAGm7hjFgaCc=95fxk za-z@ZFlVRhofp?UxXkDxpZO57Q?X~=;e-5$D>q&CpQDXuU4;XuB_*GNg5dvmLCxB% zmLq=5#PVu{zwfc?=xWB3OQO3S4O_3SI_Ql+*~`D2wH7dGBwzpDUo$-BZl#Ha`5pMa zxD)Xs^{WD|-TBqkxo$E!HYmb7f{*^IWzaC!R>^Nc(c+$DO_^l9EbQx;Z?h|o!cNu; zp91tozzvP#g?siEUirg*A)HeDQ98yuOOws>Cd&-0a4f2(?Vsw)3hQ2ELhMzx4*Vzp z3%8Eti2A_P{)O5b*NHl)#gx;mH?P~#K?@w4s6uYrw|kx)tP`;VNHAEcU{Z=G*w}S7 zi!35kS^PL;+N_tO)k%QpMDMS5M9CZ9THfG3?|g*3Q@H)eyW_H_fd0qhOigi5ez!U5 zcBrN+mYPZ=0%>1`AJprHER%PbLGUi{3Z0PBjbEVzsKdayVo zz%lr3TE@w!2OJ$>XuLTN+Xo9A@=Z%gJ9J}d9bDMb$vlRB_!7ib7FNt@dD1%Z^+)d+ zqC%Rx;p+g=VfqTc%hfr;K$3=oQiKWul$0^+>ITml+;7TYR|$BGSyp4J?>Eg&P1WxI zmf)B2ihnNSZqEh&8Rywj<(!|2=Eia%5oMng^u&~At?m43TrC%SCjf%sUvR_%0J8?@$R)hVLYuI?_x2oj*GGL zhJMOhoh%;0>7_^2T)HS^F-grXv2lhwS|NW)DjY3JR%L^yG2JUEaH&N3S}71H?hf4X zlq$EUhrCce?+GMq5WzEsg<&dLKb# z$6KwaTd*i2Kv8wp3>So+o|C(>hGqpo#Z~RLj(lV$;iJRELyqS}pAhc`+u0F|7vDk` zKaVI>%5+m8lIyvZ14)heBK2=K~< zBkS7a$~jZ*r>gNbNiAokI?Rw-Z0_Tbt}jkWv@;eqv*=x_u~?82tdibEbIf;C*de8~ zV3EjeHJ|$B-{UG1{bhMZ9c}I|WKV_IDZ{u%n5@1`<99q%?HittWmf+gZ4l($KBpn) za|FWow&M|Sa$ly3g;0L(eGv|KC6Ymv<2=ljf5yId(0C{`qglLM6}Bb z%yDLeYN>`~<{QD1C{!S|HL)}4&W#?^+K^KKW!HQPH5*6Z&Io5H_|75Z&OTJRq1qcb z*vz=C$ZiyOA{}y5NabcwY91?~G0^UOtCKkE@W~&;f`Z;j{N?7>X zyW{+55c6wajYq_`zMGvAvaYR+QXJJhjJoPI`@1K1C-MHOmYr_zzbj`{q?k(*0(Ro~B@4J2fH z=Rah4&yuz_y&wj6XQ7=$B#I(1444Vuw+YK3Df=iB@;z8XR+45-&pI8De?ZudO?UNy4DI00PVaqW#b}Kis@V}di}WGuvnhjWd)ocw^w*2WA`t})pDTF* z;pr?k=Lr`2YvamYrzAG}4F@O@F+EFSA$8k!HhnZ(m;4~Gr4tKkDZI}zs&IETe?%|D zIHgdC65Rcb05(PRAlJe{DOkd8);`wZ{-7Df+Q#O8e{fZDJp{kPg!BxXgq_~6?>DlK zxOMdP^pfPnKW5W(xI%P$GN?Cp5ixU4EV?2 zxOxlA;mdKNnpoq>NP*yAGF84r73~9!@kiJuOCk452qOYH+is&?sMsTHLk}ocO%bVw za&Ed#xQf_2W{xO2+4Z{z@B|76DmXvgP%9xuKXQVoLSp}5FOPgZ+)xU<< zMf|5OM|PypjRw-<8p#X?(Xm0weK#Ib0nxw@?Ne(hkv{R~uK;|}-9N#Zj!9>gC2F`w zE3Fgn8RC(@5of8`%q0b&QvnB-QYJ2H^81mE9-dvG4`6J+dhaHX0Qy<%Z}sTDLQ=cB zx!CkuxYTN$ODgZ(xX6{HxvTK>qb%fZQwT~g2{_k@wHMSPzN6$V={#zr6|1A0}bOHg@CkXZ++Dh0XTN@ zi@}FaRdpGC9+^t&kjFqP1tjU-Sb~2>10}JHsdX zPlH|+q@Aq4BL|<;8MnKuFL*zY4_xwrMg+qrZ_mZ~xvi2r`G3Xp>MxIHvwXG(XUjFC zzw*MX?t4(^OU|*5115x5+YZNKMfX>C#C$3sp6lr>0>S&9@aI`kuyX6|^Mk$1#a6&7 z^|S02swN(o|z5 zZGQ>o9(%W>Jkf??>v_C)m1xH@D}-j4_HAB|J~q$m>u_Ma<~(H?a#M#k*zAZkH^-HS z3Tr-l$2A@pD_TFI(**3#A`q*~+z#EY9tSK$D$Fu|(c)y(PdvRc)@IMiObreQ6iAD= zRh1E>xL-NVQ#l~{jt_31=?~Itd`7|X@^XFiti&Pg217%MekS=SZr;1OF<|>B<~ZQAm=k0D+?dPJV9TO#Ig{uvvtW`f1jyQYIwAI-4D!=%Q@F>d@yA|5&SNsULtc6+!<^S9n*YdlIK zm;uxkvQm=YT1accarVJ7?T(XY07ozP(iz!=Zp^0SIoxl`QrbQE^7O>nSZGSmKpmKTlv|i$9kG8=^`ew)o=Li0o}bP)I=CVUyN7vAvBe zq?ny#O_0;LLUfV#a&^)hfK-$Q-D~1$g<7g6_p_aG*)5Jm z(#VhlYVz$(Bf(i1LG_Ps{MB|=!{zHLj4etD-Pcvr(XU<=3gTiy7R_lbMOyDIOENgO zg+V=a4n*xt=U9juM&-^>&exy3?)He9(InV7!aEex@k1t92lh84AoeHW=$zKFNZS9U zxFnQUbe)^~B0zvg`16L!!icSf1t?}ZyNHsC>ttjw?_f;Cf$YRuy*tU?rwI4i0a{Cp z3J;t1yb6V+Gxk@TnhCncd5vhBY_hvGJiFMSA)w=}3{L4s&jC@~-^21n(YL)jRz29m(=~tdT=iW*5cUCRkStM z*whjf_+prTl`-?qk_L?|80B!~@2{E465F@UckgMea&FC5!rJ$>_{F%ON}XqVdkH_7 zqKhmzPCBlh?`2@6?JZ_WAXcTNF{jAF#lL{i0aYvoV5KN_){yPl9y>}WgyTATP=JN)I^rkN+ zOO3*Jj--2>r0w88I|wfbZ_1^b_HU$EJy5xjM7zewNnTM6oY&7z-v?^c;Vv zb5ckEHjim^pq6_ zBRrSiWPz;O=xiMQLO#=No0|4>M09bVbp!<&CtZd?Cd1FY`R+M0yaR!vki5^>obj6n z$pJdDfAW1cZK3`PLHd!xlS?3H!mnjQy*8}Nd+TG%B^8}JfAEbVr!T63A{J9~7-#V+ z9wg-Mg`H&W+h@;Y?kPf$M;nTdcC-ks=X`m@GDiun*Z)z_-V@%9HM2Q6Ex3dzs?Nnp zM}eT!UJjfs9^x}v{=-BYko}Wsp|vn35(uuhT%J_2Nrod!jN{}cRzW&uq%iw=I@QWl zEfm9|8=c5PP0xEF5yHvb@Hzn~&f=e~B$ag5VCiusvYZRQoA#r?F#XwT(^&lJox|zp zd-LF1gly+L)Kx@L1Y>vm&u#<3N(1&${p+|Qk6RD+{~Yxv^1q1dr+{xb*hQkRx8 z4j-}ELo?tqVR$S=xmYKEg%EbW;etm(ykbSu^=k@(>x=TP^a!Weyk8|DU@=Hb2D#Tx zS2_7Jt!i#m+gc@WI{^Om%jo7aKS>3%AMNt?9R2-+r=mX}_)#DihL-LsNP?YG!9TJ| z0v@vfM+G(b{JHN#V{>!O|9*B1WaJP+_3%bLuYCLSc8b2Sm@OpUJO@Ql#<4fa70;N5 z{5HCTc77<&Vo9D*$4A(cha<@2liHK!Gr5F-X}BejnXYaMNE?b{y7)nXc}u})QIU=W zQa>u^t>Vt`i_2!qG?!2DvCqy8VQ>Il;j^Cfx8)OY-Z)gr^NtSne7ORUiO}2=xDRfy z3VzaB@J~3+>u%iX07hQXQXVq|S$|EH7;rT*rcxuyXy7cRVj8U$M3@%DdIJtCUFqV2 z@u#AVv2bwtCJ;THU0^CtBhlVPG<|i)Ea+_f{_f1(C>~4waBhqViF?9Xc z$=X+*)OGGkg4X$VIRWL}di2(Q(Pme>dv&pnp-hV`ozhLm4z{2askbbV?PqWgSh}(! z>TwwV+`i7yGkhDJJzYHEh~wFd4iv^i#QhqBqiV%kvvR?9sIvDuAxK(6C_juDSw9nw&TxdgTH`Ot(rZk8 zG;1uVXG*NtHNX|hWUnOCx|OtK=j(YqXT{1h6noGbKB}4^ALDl~;3H0e{diu&f78Qu z-6SC<`31{|rmEt01J&BJ6YDDc_6(I*a(jY>tNry6_@VIckd4)V4A%qpd%H&3@P2Gr zi#|w(zuzj!Ftf)l;7ECL2}|zFXnH8A46+(HYlDuGAq|2mWNG^0-G$XwRC|%5NMV?B zo&JgK7(YHSF?!2D-g|d&CN?{A{>Qd^ZQ2JB(v9a>mI&=})ZT-)@((}_WDJy>>A_&qC0&HazQ2yQiUzp6tF-a+>e`Cxb_4J{?CnC4ksmJ_6yCSUWrzT z--yz@s_BjW)vBo)91H94+-J^f4JaEY zJ-{#G`^_k55W5$NKME8=FxU%x{-taj64>3kVd^vd~Ci;%jN50YEF{gKbuejV* zTcr}_u)eGl$US{0Ra=xmcatp<-zbis?IJwC_`%NZneb>pBa1hrRZ05y(S<;?Nchju zh_Hyf5#GTmPML`|-2s?9Fx=FozP!ll)bu0*Js5bPAcCLCX|JhAUid3NjShedtX?&h zQBKMHVJHVez(!qir0IZTo-X~q_vxhS)B@F|MC!8tXgeh086;AFA#f3X+5xn|fdui}dmOO?bSSU;SNFz_j)o_)zZW}pxdDp@ zkqZLU+oq%s@!6B@qrNUBAh(HSQ2bT?ok&qPoapymFv20WcJS`lDQ_rV5`C>06xc0i zullIc^8`wdVA?;l=emw{E&$Nb^!5z_yX5=9F-pkoCOr?eP*W^`FKi(iRD-K}^2v;? zp7hqB3o(cNE85RoD$TPJUL}^!#oP|nJgZ@XGBcgp7@of2-7s*s!{|L6cYK(W-g0o1 zZ}r6kOxHnEuXHid&OLLK_gPLq2uDcDY6?@@%k01rF+ne&h7 zyjtDH84p~8K%#a&ApaS!V3P!pgYx5m%o+kK4WLr*$q;YMrb9-rmr26315_{T+TN>h zJ4lWqs~ZGS`k%@5d42_gENE^eLikgUg_bOLf?#Di%OcjcnEXv|f!3N@+J5ZHlY#K(n}fCPZm8VtTU#RDh~6^(atK)-xj!+ za3=B{H>h##=jg83We=xnPcPFNIE`ggF=tpL{AfOJO>fXSGM2^IHZaDeW`9KifcFJe zlXv)h{P^1>KgmQLXMgUT67Ix544Ilr_ChF>OluD&yFi3FILNaDG*6TNx+D6>+?x2e zbN4f>=B$AL3ki)UZb6U2D>vTWuB-T8%wXSXP{`DfSdYT&^X|C}p0DA5_ov1r+U0Hv zwWHTylG#b}IHu~`zk=~m)KQF;uIM6xWh)Wa(e&0pAeO%%&$lxUF#7amXBRV+{~?Yp zsG!lxDr&09ou`muv@wpm^O{6tB&s+f`B12Q zPf7U|#sWz2^s^DroY;Sd$EJxD^=@TonFc;F39luE6BH9<;Cfu(5;;|MOmj=kIsgoTM1g8bj4`RsesO+4?slA}U z7cMnXiSw6yls*VjacwY)x;lvo{N+Ta3RK?VVHn$vH)0F+)?Svz@K?~Zug(_!5va?! z4V^$s#&@cYs%ovA(@Zd02b3;qoe2fr%>Q&AkN#PVBQMA>J#T|L(?JAAZGzeudr=%I z`0zrJf|U(5&VN3Rs@BIUo&m;-5U!T*cs!(sOfLV$SJkflAZ^}eJIwtEG1TjUXUFEt zczvuo7%*yX(eUX#Va1>C{FLj46pspqWJsA0&!$3v1jP~wWkdP= z8FyJ?_!O`NBd9Q;D2Y}Q`%mwPuK>2Ws$P9shpDauOP#Prs9RdVOo#j1fHEu6WL!@6Q4*=@o6X0#s18XDH}K1S z10-Dt3aaDf#Aee)U`a6MFSO{kY|P>zbl=hd_4ah;Hn$%EfB*YO+%V;yWjMa(KzF_N zAZSH`13=`B@~gJLD$li##@`O!Pz9U2yAbM}r}hdOI^zk%D@;EI%y9##MkEX>Gb0D~ zUg-Mz?1)=1sfjU4GhT^c#1BLzI8P(0#5Y743qL1ep=*n!j1WX$+*=Q@9yq5I0>K(5 zNo4`edS5hI@j!vfbqqtdOE=*dy&Fk04m8pDa{-ySr%5E?9IDm3$<+E3o?0$Rw-32<QpV*S@@6RO zo_=j^L_R{M`UtA6MVj7hR}J4Kt3K&H0xYWc_6uLaW0S3aug(Z~G;`eCGk6y9vE)~& zpjOMU4yv|SP+&4?zKvg}2MoR(+7bz!t!|Mn!+XGYc&?W6N%PFuPgU8gq9_|=UqSNg za8!ho*rB0x{%2KeL|f`JxaYa=VeHiJI8+PcCfZ0%<=w1x+@`yle!usea?6sylod8}znh_cRN283E*w?Wc=h9@pkDTr$3j9=PHve0!gE-((I88d5d^QlSK67CP3P_iCJ?3noswZoCj_mN6i*DA* zI>>&HU2TXX3E(%tLIb&UcGcRgD67flq`GUx1V879b}D(|pL|UNDx6SW;Xk;ARLvt8 z5K)C;n{qxAuqpy???c;jLyx51+a7AwmGF$#emF5O0v%-*s$~jbbqwU#u}z-TEObTzk8~+YZNpUCE{X19<;@ z0|h1A>JAfC=!-`Ai^*X!z}f|6ihXFD{N4|ebn$`P&APMq^>r`RMq=yVd0?ZeMZ6~y z?)C78&)cKvaNYeJwyGy3LcCTk9u~fX3>v03Vw`;ovdt0>eX0j{G#3=qfUiqul0MeR zf+Nz^kiMP38_8kb!7)21ROEC+Z@5^CFA5MlpBAJg{gKk!VstFH=5^TB1c8gX);@7o zijb&XAQc}#r7UxzlP}cQia2jt_<;1wZH%)-Yi#^4AXqwl3b&3wD5{C^W5T)JBo70a{q#tC_6$CKfbrMKf; zDwKKZ1OTOF1&+H@fW!W$-jWc1gJo|9A`kFo_?_R^b=I z?o=7E{pKa?gH8n0&FM)Ufi%ddaur^ znI2&H1m}fDr>r2yBy|^hn^I2CLLHVLClKOAyBjs0|EDPVh!?Yf?l*54ejM>G3TB~4 z<+dMH(&dLR$J=0=jh7ekK*)3~0NgiRF)G0!t8HK#?)!1pZ*a-jvePLjI zg|4bp`06a=ZF;m&FsVY!2J~>nmAKU|FnL1p;!DXK=#}>D@tu7RSjIs*v{{eU?a0fw z!P(alS!5v~o8Nd`3I3lLpfluW9`s?c!+hwOJK^U^dd0sTLSU3jm?evc&T|ih%eb(C zQh*V;JGsfjTm8jZ(w%~Qr5Z5x84+4b!y8@@S{_muEuBy+xb?NjdwOA^_p2(H^JYBh zZ1M%DJ7;k6MnyC0=8_XizAp;#P7iPDsL6!X%iKWfK;!NX9jf2LAPrH4G+aR;7<4aQ_v}$OUGmA#Jg|S~9Ds-2&2dWKGb4DixUWhUj-fV^+ z+bsVV?tn4(b$m9`FO?XC@wpxd5@d6KLsZNb193lQepZ0qsPu-rFU@@HsPwey2C(HX zVki(!#4K$ja*d0Sa%+Xe2m)jwMg~!#(LczUyvUjSB%O8IdoO7(RiL2{CM!jJ-3NjS z-|cdk63GFoG8PoWO^8!k0}i9t-WA@euxP@HNB2?@i&KqAdnHvm8S{X)`Vt9y@qH~j zR>yQ5YvtrCc3ihg4|@Cj@=Au^3}T5SmXxlH_MJxgcxo+i(M?{fp+B+dzzTGQmV=`~ zD{0Y{O%dCbRHJL0*FQ=WYK<(la+*=|8xlw4AA-_pouER-wH#g z_2{u43OwN{W92fGt&w(*-PEnZ{H3!pcIN*WG+KJ_KtGqR-?dcGFM#oGm^v0qhgh58 z%2W61crj?jzQl8FASW zDfoM_>}P&rb}n5EM8Zhml$1~Tbyj^xYMY)r#%Ca#ZNf8M6bZzYyXlQLz;;A`>JYw* z%?!$A*K?alON?>3L>{h4UX<(Jpa*edekE-Br3&<$k2YBA*TK~y%cT`55%1GJ!U26J z(ijJI4~7+!Re78w*bO(usjBfw#erh(kIi^LH+PH0Pby6;;=q_z`8yto{fsbr!>Dbj z^KijdIih6*J4vNAh+AXS5@xD7{%F@Pnalhm^hs=+lWSdf+AckkO0K6`m#6FGr6t3i z_+wIY1-@EtFaiQ>kY7;GCd(drgyE$QW9Yc=l^2Cr+ueEJXZ=4fe*@vOJ&r6`JZ|qF z&^Nqatlpj?&g7Fg$Of{B;4)PPv4=o`$TX%>;Y$(6DN5%muQDev#kawwBgXq7cu|7w z=QLGYumfBF~3rj zqt(4jc+~j|OD$m(MvZoxyRO2hh;h^^gqf!9Nah2haTjuvwGGLXvR~|sS?Az_kLFkH zli&9_?xi{VK>O1YrRH{4Ow8MKW3B`=*mCdWMUG#SPFnuyYt0duD8j!CANTUNf8k#D zF#b0HL~PEf$KbvdB4c6phH4bN@fN;Q-0;`^1ErA(UZLVlj&P-2@v67)6Z)P}L@g2W z82^64L)Yx-SRjeYB<~`M19mHrGgvn9aS@m_!P{K7o<=efyi`GXq-4QuAqm#xW}>%!albHMi5ahp!+M&yH>sy{ciZN530$)mN0J}$qV zb%{Ml@DE}ZW)W|`*>f>srp5r){;-u#{rOM2vH-w7vHX;D&MM6eoc6*IBiQWWc!2Ds zYRmEaq0#{HcNQ2b=U>`x@C^{dLUiF5v}P9fwe2(*?{j0lDXCxM*49BRPg0TZpgeBo zG@Ray|7$G&)(J_c&7^w0fOOg~D{mD6GhnVH;8jGubtG%`fljJTwX0aWp)mm>-4~yM z3gLyDFX2Xgj^tB#@ho~LZjrjo`JZ;aN7S27Se-W*0rhzd-_?`!#S4k$`w=kA#jVg# zzm6gDMugADCx5u1mdh(r4Oa4}%w~G(qAgLC{^h1aH~sy^V(1Ga;TJ16pSqWDegz2- z3-(ng66_DDB&j)}l^7WX5!vR3#}NS^K<(3)pQ_JHud<6rr6HuO>~8+ z5aS~p6=jQd#X#447qPR=+n*#~CHu_Y{Cd1m;Hljl*mEhZ8?hjKS`8@~Bu^RRKe|%k zzq--~u1N^mLLJf|`Je8hG|0>Ec5ZI^Mc{O&KGp=tJ+K6q5QLklD>#hpjcwS(CVt1V z6WV(8Xy0}Y#f-8mU%Q7S9B4~lssY$EhrQf4LKPKEX>6B3nxoNyfCjwDS-Wt^$wyJW zpqzwlg>wu&Qe;j$qfJ|6d$rT>EJnamb>Qa9Hd6JUV9|>YBLGBlbfl{)gXB;jBpFGe zPrEltt?HO587&HQsK`peD06)XBJo;%7mOt9Min$$28%v``QhK^f)67NC$So<#PdOLhS&}2>c^xedqmzK+ws2Y8Iq{>hs zE)yey(rD0-QD9ok0IU`fcPx7mSR3@h^mPZTmOJww@+;T zmcvx9x(Bpjc)*^wrKY@H_&rs*5e@gK?%vj(o z78xo?#W@m9ER^1#OiR#80wsL%B7cVa^FSNI{C3f8W7N~`oby1ZbT=~z08MF z^6(oiDYNq)Yb*d2yf9pkfzdcg(EtAtOJ=*_E4YcN~~3;>RkQ2&dJ36=G%_>4~3sRp+j!a#6=Tus${&FY~9~e;u)5Rta6_g&{4N zo%)chwe|HI@3%eIOd!Ws%QD2oyNm zeFuFb{|s>-Z_C%_ntxcIJ@zZ~ULYU)G;#qDh_V|ie)Y>i8#vxam~4{#V^}c1Knp1R()5t!cR93NPo$v!OYK~5;7p$n}*iuw{Yi4%NXbqtYe}87m z4Qu9nwO?9CgU$*#?~?JGv+SEQ3?Q0$vchgtfyA681Skg25wt8D?i_wiDTv=gTl zgZu0AWmKq+mUOOpeO+eh>H_%#z0~E=y_y}l*SFty1rrGrcaDFCMoU^++w`3$93~>W zpx8;O(R)gVR$yb0SaDvz1f8J966U-?2OU>+JcJP%@)OjGiKr$}#$cI* zP?@NpA^MQ;bQ;{2w-nwjyv)0=uhLzCQ8hKW>FIx$oO)JH`5g$LGdHh$I+oVh6}unJ zKBUj=?fqHRpAq_&6|eU;)l^c|)Ui)8^CZnXssAPBC^nW(Nx=qzBvoK95^tJFF|x+F zppsapTaK|vpmtdo5mmGf(5^64NT5<8KFW|yVybX1w@NK)=IjXjEttc^H`c+OK*r>V zCUG@z4<41q`iO`qIu|P*@H!O#Hn4VPUQ*{dY%;!tS>@EsSGN)+%1)a=D@=R%8}0l- zYH3+kGWo!*2~QSLdegBV4{JItz`J4LqwA8nJ6b8`eZ~@y<9p8rxgxg0XU8j5*ZD{3 zGEM&<$DTq%Y0$s4QF*>SWJ|U)2Ovr;PHNe~(yA$h*R&R=AYg|S#ZTJHa$3aY738%q zpY)#zqW@i8%NxPL@Th*c=O_Gp{)kXq{Ptw0wblxW@+Et+kW5Gz(V}+3vOX@R#V-4I zrv`kAd5W%2+jtl-N$&WMkH0Izlic5V_&_#EKGt zqo5EP>s_=9TC7d5axCT7r+X1oGh(TAvi#t$WDu{&cv!#aSy`rhZz|IvoHv~RelOFr zwYkYi5k-I4a|Y~V(e!%qiYNq&czmXJFO3fpp^{9ETozAD_B+S3QCM!6WF%xp z&td#k_mS2TlRk6_6Z)&U(`jnaY}z23@HAPyj@{w{QR1K9(WvvSB zL~gPD^9UX;ik%GQ#gkoHRaLb)e*%ZzwMkE{C7Q+8z27)h9_Ex^gUa7FQM}0RRH7A z`y5%_=&N%HSEusMO^dtHSLJ-3l$4XZ(yX!R>lkt!XZ1txF)~#_s2osPH;%cdOxD-S-TJKkbT@(BszaNMJ3dmAe_aI{Z*vBLz$J(P`wGngk3iZ~dT|ihcTKo_EF9xLcI+4m?71Rt zk0F&vJJPDACfts@zXwg+#b)52lQxQVUQW1STi~t8Qx(Gp`;jxTHqbh7d4+?iW@0kJ z22*6#biLfVK+~t}OL88IIQx$jtX+tVk$6)ToGCr;O-Fe_MAoeiumd2f!LGH8Hi8f) zKjn$_>DQRJ@!B)I`xZe={Q->(^upeuXkw-iS6L}wY%zQ(o0lRMiUE?{91^nt-JZp= zBlnI;m$MFDwJ1t2&fbAMd0>hCGASITMOwU9g^I7#k;ly4Gv$#cm6AQP5pDyllpEhX z^s9F$LzTx;!(kZvOk7#hb>EiU6y|x_0CCL&0y|a8TH70|D z5n5|epAY2IvrwSG&0i7|Z4O;zr|HBcW@A2$9N$r_*)!OdaXr<_riy7`!x`|*aF70i z7ToMuYV@b>Y4r!e4@&P@o~`9Ao1Zy?$I~vY67#Mf^qPI?tf3+*9fZZz&nczR8g^DF znuDYW68E7Q-VM^m*_0NQksASI11c921lan?2w$+i1sC7P zVGvTE0eNj6`E;1a3@ltiTeHr(#cEgejiwE4?M%(5a!;Su*5932TP%>xA?@gt;?kE& zbg`r%v&N{>j2Htx5#?T4z5i?iDv~a45KFRz?Aq0&7;4{{z~5~{&)2?!e3^c<=fWK* zI{&%LV8CwF9X}mMyc9nae#HqGjGug+$UXyfl}PfU^B)?)>Nyz>XJ?9x`WZW@~~_^NKcBcqoWcbECH|ASJJ4dD=EX!=}3)^^zx8`NX`tK<5Ce$$uZ>5 zRV3_htb(}VnIBqFQXi*^8e#9E{K~^IeXpG=F|g(!tvioKCd4pOP*=vyvRaEMzy>|ZoDxFVSm~9xXYTfh47S%&L$l&Q5269 zI*4RIW;-535rU#)Cm``bQCTc_uab0~iR|xshuq-t&(2UBpi!mD?O*O%Z^%}*!RPLu z7!V}>DQYvSvaqNx&tu!^23XvD@}pu^X?N*p@&x}zWf^8aB^6r5_foAHO1m^!Zvv^T zop{2@Y_EEY_4-zhW?D!U6iiaBg9LUuhJgJX4zEt`Jf)9_v2){JJq5&;OH*L&T*l=& z2?nBBVh<7TxS*wwi1fb|W~PoWqEL{<6Z6<+5{i7$G>&}0-imbI^2J+GAcf9v-cJ|t?cO2$cDny61?=ZyV$?qf>9ZEDTP|Nk9N^EI; zX*UVp|IP>_^v%_q$$yuT&MrzJwQ(bZggkZB0Wl?-ZA3jo{hb6JAWNvmw~mBIRKqp( zi{;YiA8K!E`mPP0r(w~_OqxcoH?)K&Rx4L(zMjw~qGLkLv#mkZws>u#ph;6kVP(*d z73>F4w-8&+4zgCR16)b|P{rXCrJ65qj9KN6_2#m+g02o!q+`ENjS6;q)L&)6ein$H z>6CuU@Ip1q>0#8ARElmV!Y9KpyE?fE0cOP#6=luJD#N-av?{XmI~9?v35-@8V@0M`{5P{pV;WwFGoq|?J8=?%(deu7U-A> z-@aKq3Bi`Z2>2>~w6_DO{PwoCYLu5JX3mAORLN-ZN^R}>7&{j(ON+ds?6IJUSL>U1 z=z=9w06>YV!7g;%T{bNXUs`dw4-6ieZco3sa7>kVL7EVYp7g`MyNMp_M4ho`c9c2E z4+J9Ee@vp)xHq*Bn%`?q+rL=Dji}})9W~Vyi8R%Ot9eYTUQy+smJFaRZV;5PCsw(_ z!x39LFmQC_^jZ)3+d`RrZ4(z4aB(pwzJJYl^&WP#RU$;hl=)mqPpg9^zm`wB-eF>6 zDHdUn!REGi9YA3af3UtP?pC7w?$P7<7{gJlsQC^4nG!tOMB1Pl9f1__o6hjief2n% zf2UM7I%VPO7xdw8oD{=qP0hU({O}&x!WDcKA%msJJV>LOnX&Wf?hKvn%@#`9zK8We z?{-?W41|_XYE`Qgfr3jfrf)4~Ny=vUd-w}J6Xi$j7WB$Pv5Iu4zJs4UzHGTAFQL9) zu{WAu87x}ja{j1emr{MHQxCHxlYf5xG{FWK0=A&8+~~Fj9X_>Q-@OM@OqNYrrm@S8 zYplcIud#G!d3(*m=HRCK6;Ee==#hiJLT1}AgA31l9YvG#UUPz-{G2t1uD6tGn3hc< zp?1p7XTv5&hJm1u*Org7tM1z7>InqWdoBFCmqi|Gk-@=GKC&G|&Y?tP!+Nq+Bl?^(0ftUY6KM-&jm1Xv;b z`JO6)`tM9v$+I*=Ub^9*PVhZ*uz6JMS=FsZe)9a76kmPSz+X2tIvpcU&^otX4ZC$)c@IY6#u+F z$KHO!Qk4Br@5*6WDk`t)HrXjLnG_U-6j%HrCZ2N;IP6*@AmBE8U3Wt9*(S+c$2*#! zC`C;%I5_w#{|JkBKGJ)@bp*v;&eVv8$qn7w`g+`k$Nz>iejt7)4c$O6{idp;{oY?F zB)C~?V;q}TQdrX~)G)mO)XP4Z#*$ktP8`!kq6QD@77ZuU!UCv(9yTP0$W58_^MuCJl}3fjAeCG+o8W6GLU59oosK)_}FJEeX$fZ?2S%8OUY{_c$| z{4gnZ&OxMYV-EA6(Y)lR+Rqv5;o}R{2hwVasUikw!SwjWSNBQwf7BDnT-~`zew~T@ zZzA?^^aaL?&~QKgW8GOKCm28SZ0BRNPTn{bYfKWZPrK%P9~kD~G1dWAyv_Nnw+zHMN1B+q1 z{t;9qR#ziO5H;W9;SOu2H&e`dTFpa<)Z9FkmE>1y4>;LJYZIR>zPee$IMEjWbY^x^ zSQ}IsLu0_9pgsx~?)`(o&8aAB`ynI?kI|4Li<&WeV*57dzkw4CE|KKhSF~ixz#hb> zHJhMotyhXkcfGL6U1)jS;qNjlL{;07?4{|+lt?%ibc*?g-3$d(cEIeRfm>+jcb%V= z(!*{51J@Aa;{f6+6J)!y7{ix*&+YE&FlhP6X4gKBkQZ8NLKe}az^EM;Pi0rGb`<8R zu>aZ5~!(4-}H{a=!I`jf< zC+8`r7A1=l3Z$r^Qm-5cPG(uP$2nOW!&R?%+JpydK>dm4aTR(ltywK#dQ*+AV@EfL z(=&NOhP`vGClaTHZeD}k7i@k@Z4;B**!i-0GM?2-Jdf1lFgLLAR(N{r!FQ79_FFT^ zFy6ZF+G6ukE%`^M#bz_2nU@GtqkfNxm17j1cbP&gyy_Z)Li&{3WPVCW3WjAj;JnLU z;+B+yMOIxqfvk4Mv6i?O^1o#DZ*50CCLJAuHx%#gl=FNrGB{N>5>3S_HSA(-sogRq z-rJ?sPFmp`V>%5WRVImlO-+z;;O=H3%Oyo8>tZsL*=7HTN~fm%l~*Ys5mi($jouf8kzR#7!fXv|G!`;|l+} z_PfV@hP={*^!qW>6sE?X81P{|&APQuH6+(G8F&Z9YC`kyuTCP#*uu z$WfuUqtfH?UU1@!fmu~jIYnol?yPp=(<5j(ENZP(%!WRi-VTC7jdMRx1zP$QtAez| z(8bE6fGunw!sO^f)*%tYUiFqEb!RalhE#j(qT8wlGd9#~aycw?UbV|SfTv~2g%wKi z;$x!Ad79)=+^~-fmV$3suol44tJqKjp?l7SKVmsjvn0APcL z9LyUK&Iy89 z=?eKFE|{iLD+sIu=nB>wd;dvp$qiMZZ(na=(6$`AXc+4PQ5AZ==8#k=(mX8WiROWB z&~8@rQCI^>`nFnssV%GqmxisE#@&rSgj`^ z2S=W&dT*JPC6CE0JCt9pWi|~(`_@u=L76?W_*W5a8<7UCcrvI_JF|jo2=V;g5|~I3mM(L)O7o zbQ&E_avTPsMf`%nc6}#aOM~CpE;AR`EL?l6^pMu_K1Bj=CIE< zf2<1fZ~3nmpq3-UL&e6#3}OAF*<)u3+l^X(p-cU}B&o=juQt?W^`;MR*@ zJMl7%=t7VL4Zk?vAt_m3MFy56et2REWqUd;w0xxlH)$<2^-EHfWTc~`qkkLnzt1mQ zSy>LpSoii#`If71JN5;d?tE_;6|)q=3G`j0H>9LRYZbEfHp`eQ{U0sH^ALa=Wo!sT zq!@HAmHj^_7!Qr!+X4;k9|m++CUY#70f_hTmIgDcVlq{;GOS*J!B@;6tLH z&oQ-qAyQPd`M$JUDoVWS;-X|-9^6-s7d+1Aq+XkK?R%(kP12$bFML)V8!8ua|65V? zq?_5t#%g;l*8=!kIpW-a%V&H*b$1;XPpm>eg>X(KdkyOTxT!H(r(Z^G9vF0jl}bx!Za!R+v9xv1(f=y$Hu`h8zkEpSyoxv7sZSESk2 z78r#rsX(AaY5&z;?g4u8fOj{9bAHk(qW-c*%iS%>0P*rXlV(N!PMEKF2*;RMDf|9l zgtqO5)XMXYV9s8H6DdqC2|+4}UeDN=18w2IYx@tTck_`OP$PRD? z05*Kuk#MIrcA*qagoDPHk!p+^zY9@zgOhgThSuc6QeeVCMx?}Gol|FmqT7sTL<`#l ztVJ5^9#{Daj`cTq8DZv1OUk}c=D~m7A#NIa1)ZH7O!Yp-nhQi|5ad9UrkKZSyJLCiefp9B1zwte zeM~;#9=#tD_U)z;$;Dwz20Yae{@(eO%R|>t+WUAD1wXH7XDP0zb-8M(%`-!p*LaFq+RP#@%e2QKQ^?A=;m`C z=KCq1$7hCD1)H3Sd!JMgy-7;T0WVtw;#hs&UG3xecL)O+-!`K+A zs(y2R>wV7{am5c_rfL+RRh$fvc1zl<2bp0n>e}>rKno_W*Nst`n&r{Nne9S0-FTaR zLU4heLo1y7V6PzJ+n{F_XYO3d-Hs`t@wog;eqX}0qLha3`F|zeL^1#Q;mIrB7(kpu z{B{fLUx*wXRs4s?|MUD$h%AU=Z+nl>(~jtWN^!16EwnhVNVZ4ow~{i&<-vD+yn)SX zk624xY$K{&_`RU-o9{r=_U~QiD*7xbPwi}4gu#FbVhSR9rZu=VuF2~!tb;kx)MAZEc#=l?4B-b>^h^M=+~(?CEH7H3t%vQW zuW4d(!ix;o_ZzTy8EbB3h3w$qumlFj{C|LB_789h(34>E^o|G~A|LwfD^dmd_Ly|Z zoP5`kw$i-%i<73Lq}^aPORc66&gNe)Up@~oe^lwzNgh-{thFg>4s1P3Q~z>*V~)m& zoGUw(k;hEiNm+HQt0!+wf?O)<7;)|awwfLB`KHk{**nK5oz7si!c1dakP;q}kfx=b z9e_8ks@G0cqXO-r5i1W6?*Lgo3XBGY%i4+sCe#6`qdi8_45v;>!uHj^61}%9LzgNb z3vW>}%ewTD(^fS~=Y9`a;*XCZ@Z0Zwi(tO7Dp$+#ZBfyacf0-|<8(u_M6&jwpvv;K z5!`pyjoIZ3M=`k{P<{5{xXX`FgHjm3C|iNCaMpn5jNym5ijf!yhP`(6nO z99RK;+v|VX3o6CGAZHu8CYHOHznEykht&SEX}I@)_iO=Eedb+BCZcoGGq!p~P)#<{ zhL1tQsHz;jFMNrQ`04>>bG>du*ZVvvOxlT_t>Befc;ljsmdsKp2ptxTH@Yrg7KA_v z8-~HB?;iW5!Kfmhe~rpifD6Cu{BiDZW>kZ;^AT&6A3cZq&U!JQ4meI2ST`Q?WeU4# z8I#c)*kuF(mkquuDTh79bm1n>kreNH3K+dv@|XmKNAdp4q%VH_C#nIR*|;n*z(1WJvtTQF8~Vw+0>& z6$;pm+G{0`vv7C<$_vKVSeBc;3dCg5e@yiwAp-2vU4gBsi{Tx04a4OsFDzpwLG$D3 z(;LSUdPT~sS6<{Ae-^23g*ZP<>CH3tF{rO0T_)_ws8^iO&YeJSSsFm_;-i_B75TN= z6J#c7MAx~hd$f^r0jCG@e(Z--ZFgFy6dlTjbq&Q~-PC}2i_BN0(j2PkMIvzNVkr?v zVt&P!cYT=wwmU0m3fj5Jf9h_!j>4OJtyiA?Yolhv;K>if^Z@wI9%xT7l`91MxrLV= z2i-VytL<*6HZ3g)tjHP|vaGmf1adT*TWlC9GU-+444kqTqHt)m2}O2K0so5+LI1Oo z7nc&w?C*J2Mnc&?x}pzmpr0zJRtR}0-KlH~_&Dyf3Er)v9FRYkk18GHJB{iR^q!f{ zwYOWwJoX4Yx{EWj*{e=TM2-F`ZF+gj%F+Vv6JuB$B@8JPd+tP2mxjk3nHI>=jyD%G zJo>G985=5&D&14&vFWjECqWH#9lLQszDGAb)uUbldX0Rr0+ZC8KQZFw>(SM0;YPRu zW;V0xTZF%%lHX+E;QP~7!sTVb`t%O9gl(oNYAy9!=xhMk?7oYhsFxY|WZWuh>-_C- z`zq!}HBAq+#bJglb(v54me|#EO&%_8^XlEu>JMDmXsV7+1*X6Ux?T8d!k3=M+42r%9 z<5g0&^?+)$SG1XG{_tRuY3)Y@$}bLuTH^Y}Ys#HMd-0~3oLrY@#q-NV@w>f;Qr=

v_4K&FYDH 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�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%0A6ohVDpnd$dF|geX z`4L%g2@h8)_S>`R6ShrzviC>X{59Jyu=vRF?_z3#_MsCk*@CxXo(yj6unBK*hMWw_ zzDB$3Sj?D_Dx|vowsLGQ#9lAl<{0)dg8c$IgiLK){2GmhXvCW*9MK>R?1>0P|M#3A zdR+W|14R?1X<`%&53XLxZ*rup%>PP6&3&A zao-DCNg0G7W(xeW(5`lwk9&GkV)GL zTJJVGZ)7P)L7o&QE$h6`qwuto@2S2^i^jua^$&DfcF!q(d`D;kfKa$*rrNuPOQ8$M zxvA$m=y2POWd9d3u_W5G;Cr=*!>VOnD2b`vUQg{y;UQbj9f&Q0EtSlY-aetZWt?7s zXPLe^&GsO02Doj=Bn`7?Q=S2a5@>lz8#4l%`>HKd-VfeN8=9FPKeq4xSaUsEopupN zq+=WI4bR3e-4Q%OJmTLm_v}tI@^UoU5NAeIQCWxysH}@#kdvWLitmpsNfK9TBBaCs zv}l0jlkw6I%zME&YR@xdVF!o}-rthB+_du#C}@sf$Qoej!xeMOljVp|y!u+`W##{| zoMo9@_xTJW9R??`XngiqWTwm*+vUC9M%b>`JS};;cLhz)`B(hNh5!i8ps(Fy4=@CJ z|NK{L|09uA22I?76K61>k3iy=VqX)tJn7||XD4mQI7^ha8xXxOu zaPV0W(6Rkn?_jfujHn z6ABh1DX;m)^PNKq4uJRFg+prbOzGQrZot7Zat8M3M*SYqh3BEFeS)^1C#F9KQlgQ| zD#ipaZ*~%P+r7^<*xRQ!&?`liA%-usoaF~aYpizrbF0mBKHqsWEqj;iBSM631Hgjc z9mOko{;x)MNmS_R&nGDPV~Z$J6Io~1;n(_F7w2F}aHbz~)LZLnQ5gxu%!QgZDLR*! zwwrmA>fr)LHlnLtUU&7Vz4jeir%Djuj%MWf2AJL2Tp-+@&;GqBRZ}iL|J4EjT^ot# zv*>LH)p88oN#9N6pblwa(G%ji049%FSjd~($p@O=i4N!_k7})KsHGyZ@D)ZmM;Hr! z@6*xAa13Wr1plTGgh6ctE?l;*#4UkxeUz^yMO7PbzoXE?FvjcTBFR|)?#^+tWgowED4>@85590rhDIU)gbT=P)Z;GTYbXciowu_mkwws-k;rjKsQpluCD9OH zT3!95gbkpV)y*S>tDW+|%&j^4b1GN}C15jzOACnRRtRQJ+ zpVGk!s^INf7gDvWbmopD-}1&QpOP*hTfzj?{x zNp_9t+k~Y*S?`VR^IFO&5ETtUsUEvfD1$63aFReG5e0Q+Nn$Br0RQ^ybkg5X9x{mG zoYH=qYuB(Tzyi?-O;C}r-n|Nn?kT$FPw%LQ69*gk$b+;y8C@dk0<4q5469uXy2vo9 z1JNs-F_)*2OSc<8Os#=q>KCM3c=CCt*mXBa#Tep005&{U@e1VsS8RZ^4RH2>=D`@$ ze2dCks4wPlpD*9^OZw59KCWa~)_>ZSd=+xKt%3ytkz0vWhBHUe2lQQoI5{38lyY*cpzWaHsj2`y*jrG@9#{l!IV zy*AwklJxhf%+1E-1q;0E$d%igv>0#Sh__HGJKiyUwF#M+Dyr@g#y4zh1zvA}EcW`P zMbgM+xyq(QFaJ&dZH(M?lGSi#D<72+Tozv$oiy>1Y|y%UTO*ntUhVl}*mOjWrKJwK z#yWdXU&IQLi8U`>y5r)Oph<-5zzkO}hCm&$jmoK8OH0}>s=fRbW1QRwE`s7m;0OzD9_QLs_n z1}q3-(Kl&aH_D(Uy7B7rd`5swN`CP&#%YjeJ0p6f`mtlJqB^&)yN_8*A)Z6uJ$9c; zL)DIGkvT<$!&tm(U8zKmKO>+dJ}vAhG5Y6HKtLji+Y5*9GE6Y}dIm+69!OX<;&jsr zOf@;5&z=PJ-wLW{z5_AqZ(pyrx<5YW*75QOUcNN(blmj?WKh}m9(524xA1&Yl9;+_ zS&0(AZoXLFVd8tpN%&DiN;{M!!M7<@S}cPGQ;@6G~T^rv&7tj5HfzguSQk0;E`nJk=HT#DXiSG=hWvu z4*o%V2Yb~ajrx0$H~!!d5}U{eJd49!jZdL2<}pfxtUbj0_*^K1tiUJAe2gdN?tYyg z>bp4IKpBMyrc(n$lS@>ALu8AGKbhE~i-K?0^{H>Jq}S}U?+Die6W)3n*3qt%_id@LiDoq!Ob~j)FFBfs)R@o%zvT)dVX>GG8X3Ie-p9rsl8ev6lWTSJ>pzZV($hQ0 zlt#uI%YMrK$(CBY)wJUV%e;tZUO$9kO^FU-gSL+m;>r4@Sk%Pb$?izt2|Q1CmBf~%Q-kztZpI124tFZ+Ugd|2K7LG6;E%L zj(s>X{DP_(CQ(VjF09q3h^GCeXvcV zk3<8oU1xP0Wja@boo+mx?!eAL^o9d+qsf4!@XpUo@AP)E@DZx8L{qW1xn&dZ0+ys` zGKCOTl$d+(i3>J~VL4;Efg|Nms%HO^THVW!s~5#t7-Oiv=k|U?Yrd7oz$O#VPpFnI ztFe}0mMT##8=i%zq$ z$6nRXUvPZl6U@zZHs4-w7v=a?*7{Q>IVeJnjZ6)L`x)D0D1?Lqw z(g!4FmBtabPu#VhZEPLenA;tM7zw=e*0#X?_qO(K->ekDmq0Ik(YSBOzaBLM zMogt3%!yvW`hMd2_Dm2pbTCoiwDZv`2p{rJi|C=+_#5c`upI_kuTbSRp^xy^%|0O; z!r!{;Iztx|3B$-fOJJp!`ZlrYCtm$M#XCfGR`5%TMWRCbSy|!SB$Ds9O=&sE2d-82 zPR!!vZ@d{xZL)hyJX$wz>unNoLrG11UUZe!L%>>2ER@C$Q8I90D%4CDCip`b8*BlW zJW)q^QCfLLC0sdNDPjdNQ?(24qe5YgkxWZZzu6_ub`mE}5oFz)(ob4iI2kvtI!&u8 zsP0Oe8x^Xq7qkaSTXC2FUj00JW}>GmNJLFE5{3`IF^|2BYn9c$;Q@yxI~#;<^2{nm z@i{9;Z#vg)^&Ns!6k*8uJ65B)zgHFT$zcZ7VDTdcyXzE+cq2lwvsiJR$&{ume6_<*e3nW?~2*>v_yt(82D zDO>H=I8aC@d0AoX%&FBw@bAO>CZ7x(WTkLobR%(jCP+eV4->`gXJjky;T6NPt*pNK zK$BQ>>hEzQLxnvrZ9)pdC_jnmk&I+Or@t$%NN(M3d5CVpEM>d-oQlIb*+>-}zc29T z(3ipN=hsfEku@@rX20F?U&JWlF+gaGhy`KbRh-( z9SJBY$UL%}o10wz>@4|67$lSb$7+d@(23W^DxIm_jo$5+YmrL^cfgKH0mQRv@%<3` zR@SJS-@{vV$U9>cBqK55stj*QE6zIMU#}TMd@{_v`z5YiN*t0pUUU%_I@*U{B>?<$_8s z9)!Og#wsHS&LXa0i*w_2PdxUt3*5_}J)-@%qx z4p?>fySgEOiHuRcLou7Gf#d@Hiqe><#v7Q7YC#iS-)V|?c{fP&gQu}wI0ZfyF4`_U zf-PM*!A&{igv#2d29A<%CWqXYxv9))*yekqw48H;z8qp?6ROcX_xX1RntXh$BkyD` zZcF1@o#PF?HVZsiCJ32F&IT%SKMu7LM;+44_r>zXo1PjXy0@m1)n*1EoDPR*+mEU8 zMJ`xi8v3_fl_QtlcN=Gj(b-nOD@8sTSIAw1>U}K|L90m{jTcU=7<}Nmqa4@6Oe1_2 zG%U$?|2d^7y97==MD`vYZ!koW>XQn~Bxwy@X|fAMFeSueR*o(|KWBclt2nrUYwxZd zuyAdazVwMAWPqA@3ryFu06Z)!Cm8 zhXzvL7=$<2IBUibgBTNr=~=$XygRbp?M{lgG%Fl% zNs-eJU4F%Kbji;GNH{bW3?j;u8%(Y^REiwoBQ78G&Ty!3V(UMB)7@FKI;&umu11$G zik4Mmn+LLV`4SWkU1f{~Xxk+-y9*?Vd>%`M0TVvT@#P8B=U*nx8+nk<1e`3vwDzyk zXwp}jBEdzqaHQ-RYD=$gLC|nPakEmUN(bD%@@Y_`QK0ta zoDf>7eUSuvZ-FlMy{$ zy1J_FDf8;EOW57f!))@P5YJY|vs44mn!4l8mZBTe?TzMswk0SmjggkVoh=oGvHlB~ zcmkG-1+*qhi%JlD4-*Ay_IPo9dTC)l%A|4%Nu+Bb*Q-(~*nYlc%f+e?UX=E(5c+9j zSLJg3<4E^sy*MTG?6Kuh&1Xv46m|;#&%|I*EgIb-V);utA*3GNIGqSd7dcoL97(3F zZ!V3WLgW&U+}p6~+_=7da_cw1T7@A-Tgwk7>hM*Z?u>58qXu&>TbHZSDQN{TW~IQR zYyU1T2pc|`QA)gx@bom>(^%F!Netu#cgc9I-FN+3o0Z85I`}{miXYJ_xarnNXy2kG ze29cL$f}Qf^UdTxqo5J~RF)-?3WpD9Sv+T3?mo;VsmHctii$yt3@3f@+WobuQ@ggt zZjLQO%5imCS8G24)Z5}5s9?JvP^!*R93v@~2BQuk4l(-mG&cx+tVvuix2?*cr>@j= zt&*e8q`;M|BKMNzfGtkO8H>+Ev$egeol;yFuXCwoGumT5I`KJ>2VC2I)65J zAzoca4L#4}&H5>L=z|FMp_E0|rm3mfUL$6lQKy~slWJE*F7v3mZ;d|CzA{hG&1^s{ zK>dYZY->*swo@mW7k6f@H!I_AFB2;z9usosOL8gX@4E9{=BSVCMkU7e!b82vgr3hYSU_-HiDt# zoRUpE=tkV-Cf!-&;SFWvYE#@VRBNanm$*a6`T8dhmqxAD;jtarY_&EM6NU&P6g{h| zdYbhtQ*=hh<=4db*(c&Mt^twjHd$GqA9BgG(Ze?z?*ojAwNd|?iNe`-a$lcHeOU^2 z%WYdII6Hq8cPW13kVq}O>SJWEKk#zayZsvb3=D|Rd!;i1z0O@bLrBlc;1j;k9=9-Z z-UFG$J1l>sSFuF%8uNpH#~YS zCKBuP6Q>X0Gvm3@F8HnIm_Y5o8D80*-GdbS1EdsNb5_sa+voRU@cOZ(lS6hlh!uW_ zw)|(et(So~TGH{{-p{;}LzxKvuI}6)Gs{0GgSwkCjxG}5>RWy&s95OcY9;M?3j3I6 zoH#KX(?3cE;hRi4nvSe$;Av)B15>0_Ul1^E|EG6#9|=R+cz$Z^5LdzSigF4iDV6NX7V)q(rISGcUrXFy2y*94}5EiL9j1!OIK>$?4~;V-#t0->ArPNJJqsZ>?TL$(FWbN&}Y* zgNK2&Q>PPZXCnvDCi@NF91|%~h^3*cpn{d%OSmhWm(@>0Qn8eICvm?`>%vQurm&_k z={R5Ppu2;wo~eUWd=1HDI2IK4Uek~^EG;!rlp|8ap+@1PqSig5uYaw+?=r$SApTd& zKuK}u>=Jx?wrLHmf?}Dat2|Lw#!=0rX$7YUwa1+og91L^1Pr)@mMO5I?OnV=Es;Ig z#TAzLsDs5+VkY5jm94QwM514CwbYM1_slV5->m4+B-4zBh z3!$O*U}K*$l7^2I<&nuOzfK`48(s4KhSfi)PJjz=)iaw~I2cS=h)ZJ)`IY99Sr@R7 z(9w24#KCtqQ$8m;cnN-z|-LlP=3R+l^=Hl+E@W)?|qWNjFrl>*a5I}ha*l7^Is%N4W=C4LN1j5Z-B*mlA5ht@zG&L5g1 z3Rm@T=q`QDw_6Dyr3-Q^A5iDsJ8~)e8i>q_u}HXAW57sH717sV?ib#oe<-Cv-w}ui znC-E2dY(r2i}0gzKTDX^%Rafk{sLDOO0s%g;T`rDE#~^ySjY>=gYV8qNxx7&bIOHD zqfg36fdm-~uhQP;f!eitEMD|T_IxU2$#-t_gQo>j7?juDPimYBeSsZO|8#pdeiGZ; za-wtAD*KlQt_Pz&&S?BmjAzz7NJk;tL&w=Av?VX^i0{MaOA%N7kMwdUz0|tS^*W7h z<5-W=9Z9R)k87&2CGHk2jZV<1Gw=opWGjNW(D5Hq%ZuQY5#ncSl{=Rq?mm<`Da!c^ zZs}Ro2@^ut~g0i8xqIjUPqR$$nX;#XXG-8))g0(Ccb12`KO_7Bp}`>Dw?*4 z9uU9x?f$^X;k&`RiZoWM|29@c82#7RT;J^Mpqq@Taq|23%se>@r0DfBnrB%e(ibY{ z6UWwcF~#~$)_cP8=N%+D@UlD1D#=u0-!GkwHpFP@`p_HyG3y*$zUK`i2puGW8?b8B z!)9rA`7*jLfu_r)$;W0&*RU-vdtlBYF2E}P`iu1y_PsznJXug7ANg3}rQBCI|2|&j z#FcA{AxA5jI9eaYEqw8+J!!3HYq<(b(xW9$!g)NVYs@(TrBNZe8Dpswb)7AtA&BXeJ~hr%Sz6&*sUpQCer)Q(v-0){lu{;YD)Krs8+Lwn&_zj5Id^IG6-dgiCS%gnnO zAE8#^Ue|idje2J3>v4F=>p`fAuHus`Px>|muyFgA^!}n^=@o8;ErEs{VNQ#u3XimG zq_83h^SQ4#ju_a@`6RN9i@7iI!bx$ohkQvTSD!ijd=~rN1VIM9BdcexaIQ7S@HnkD z+M!l5g8EI=H0r{Pam#5w5I$QD%{TMBnYp1~QlO}2E6NyB8Xnau49B4`KC=AuND|#( z=MTBn1=%JE+@M``kGj=@)V>1X`yKL9XXO843SCgBkAkPCr|1&s1uuwX;n)cojg>?L za+d<%DMDm0(;B$<(|~_c&auNNzJr^a20LoxE*5QoN(k=mJ_ut(X%}(K6vpg~^lXXb23hn%o9e20yyckPtgxS>;~AcKP=n~yh!*4h<=J4P3X4Y23oqPh349X3O7jxf=92|DEtL9QNc@fX_tUSOJX=dl_ z;Pn8l+VlAA8>&o{u4DHR?pu6N8Q{2&ulViRQ+EZ_7w5=ZsCO;5hy zM$?*vjwwMVbx~UfN)5TVXzX2#Qbc;02fH4N|A+hqewQVg2%Ru0m>`Fi^)2tt`i~v} zSpn*8{s%REA}B5AOc_NdV=EF6A$Hh1#k;oEkXHeYq;7fe^kU-`PJ! z4Q1O4;--?RX4MWVf6`Ghx~j|Fe=mzWQ>w_b*NF-Y7$CM1rCTS>>T!=Oj@njBowZbo zC39YvHRqj{smUdl{kzomyx!FeofYtOQ7m%WtU=ox4_T%UQ{jOYrzvxtyNtTXQ2 zm&Dww#4k^0e#5!1C!5)!s>An;Dv~LTP9T~BS49YbT}G&CJFfDib@{yw|AGTiwAtxWgk&?V@Ln# zL7~^y*SGg?xVZ$Rg3u#JlBEv2FX_L}csJoGLQ}jgJkeyu*k z_)I{Hs<qOI;vwZ_qbc;BoxN4v})XvW}$c$lz>aBA<*o+En4K9F`~UeZyPj*106~ zNv(^1&h1t%#vIH(GDIva18zcJgWQizFZ<+ z6oo!6j(du*r*<%q9VEGTt?J#Z1tnh(b%~~0=A&sHjwo-mh zHRK;BuhO4=UyEXWh-i+{Ok6ss974ju0S1J4)HT|QQD~Jun=4!^w}KBw-$l^HevLSt znFZV!$9}QB6C)W)waI9<%_51LmY=L675oY2j;c-AS~<>OB#M@D!|GOv?kc)xmKl3* zx}bDBOsKMpZ#&){VZV~3fD_7X%`ZsfAD12@;_y4UhR9_&OS9)%AN;sv7QE+aJn zUQCUQhREmF^vKr8BVb!bd`4a@9&%-|s8GHJk3DkG>}*tZrOaj+pOR7H%=4RC6L0O`QBsG8vi9W~fr znRrh{A5Nrx#fXtsYTY%!H}fRF7j2qr^IPW{KRLhlp0OD%`W>^txV|>VbV@hUA&qo*ry$)6K~m`k=?>{ylynJ5E<#EgzQ^~x`|N$L>-z&-FqzMoW8CA8 zKbnrA(14+FIeWN)c}~JDaZe;V{PI?w`i>AubaiDj(UspVD>$B25#Rd4ljRCA*k;

g=FnSFcT-4_e>9B5s_JI@MX!3}v!`i`e~P=BCh+Wd$>( z(N9zfswOCHkfEv&^MKQ$CZ5-C@2AKg1wf8Nbkb6s?FYydBNgz5K^ zf8H)U0C{&_IMIL=iJNI6(v=b(HWOYs!-bWOM^ec05k8s%>C=??KM!^q3Awhv8FJ{S zLpGCW`ZBsQ&gHVV^8J->K7P(WAf)J4LI*cYc|8t2TaF)j$_Q|X@!H$t8@v+9h-5+< zCLxD!_ppoLXwJ)L9FG6-0%`5d;9>zy-REv~`}E7NHiRAVvu++{R)`I;bxd!5fYS|q z9UAmH5$G8aXSG~-t2uWaxV3x9m+QC>as9-9iFg9iNF?l+buP!<^Z6>Q(~rR+W#}&H@CELs!Wo) zOBrR>rC8Fl&dVu{|6J5l2)?>(w(?!$b4?)NzU@?fzM6byoUpu?Fqo@)bh2;G&#u8+ zDbJ8bg!@vY?mI9g@jb?kH%&u^CZa>4!Tg3#`x0t(Op>HWn*PHtW*faSq>1I++M!To zvuST*ORkpJpd7<5w}P)cqzbX^JsC&C%eVHHkH~JT2KlL`BU^iGjK0DRTzwR`4wcXr zvqrWX#F9R?$l;Lird?M=U<<0!=5-l@{;Y6V#C{&F$tFsgvZZP#7?q_mDN4 zY(JvB^p2sBmiG3uUX4#kp0u?+-_>6c&ux>e6I#E$9RjWAr9@%iMawUn2iMa_B09sc z9Y$mM8$6>R)T|I{`g(`6@2!m3H9GUm%{w0jcj(>c$2DM^vEc1oZNBozZl8!4J}0ht zItg?d(8WXWtZlabfsH8d`eVJY@elOgxIcO*(;#x>%A>5{3#ue@P59&kj%2F03+A!S9bK}qaTUZ#9(n0Uh!qfsbERb^h< zp|eu{jdk7Ym$Rzw?|gn4oJ&7cWamt$i*QROo;#D*63G*5aU#CsH zq+bnDup%M?YnzQLZr48f;sG!DyXr|lC#P%RvVfn~{sm-5e*!5i&24S3o-Y@E?z}il z6r7*rm&u&+u|1RKzVRa2-BoRUF4z}23V#=C6DC@Xh>or%uDoWQ$yuf%j4D($g*0Hbd3JH2sDLM@QaweR$6N6cEc0$~icX|1O+|ws-=XB^+@CH?+h@y1CN29y4QP>UqsGMDkP{ zxR;o@f9}Z~Kr<6vA@E&Xe49reREn-J-9p3F9RKS>jnQ-6YMnV1C!jG2{TK6*xc{wOp0To68csBg`T}*jUt>L=b!m~j{?gbk+&sT}+wnafBRciP>+r@SiIHjMdfOks? zB?(v;m*#=gh-E@x<<>7O)=t+Np<=hxwlDxDra{^jYOb;)A5?|JP@fjw4Gp8e&6wRX z;k8_?Qg-kftmZ2Vd=;JZIVQQ5KN{$2_H>&IlCD80I}r_|igB5Bgd}QYF*+p7BMU8^ zfBZ+t$3dmhXRJkKCH!8fcKG;T7|g*a6}&I)CnjjXG%_BMUVnKhsJjHkFQ^>}F)lQ< zC0yco&Az>-?G)AS+TOH$HlN(+ul!!tmxFhPBnK0g*ixe!M^`^ipK6({*oTHc1m=Yk z8D$?$e*O!vifyjH`*%M?c6jAyU}#)UlR=R$?yy}%Ut9mZL{WleDOPRgAb93^aO7{m zgfVD(FbKd8+a5$QynOG+DjeHL@ywVvnZa}@9;vsm*-u3u*?tOlLdwE*U;^mDRq$B{ zxi0s>Z1Q3zk!uPjGbWP3r_aSgM24&rzrv>havbj;y-fekKN|duv!`c1aYTtqFcX>E9j``*#Ma4w{c`EEKO z4XRc)vFMj@WE-sNQv|FPyU_kcRiC*81jN~7s3WSCJa!dqG-uIaQf$W}m5}Av59QK- zhx0k*TzoshMO#^2r^d(t%N*j;6@d#Zed%R0F@<}7f|X4phw+yuaVXfi(m{X@73ZN9(8-{MC?kcf<=%|kbww6yY6?oof&40YVn zXvs$a68x?U5)4tigM19h_vTX-nl@dgR?E=R5X|e7aMDl6U1m?N5C+agd};~nH!FM}v;oO15Q<7>G1wrFXTQ8pCY zW)&(g?!Fe%F_WdHuBJ&1SBQNUEtIOb!-W6!#P32fff>IO4um34T_F$jBATj4@PF$Z zuoD(1a^DWY3gIGotD3uJ@gsQbTuf1(C}THe$tktU3ZGqS6l4QUCw?u`8GuOaVVt3) z?ob@muxwU$U|I`wtzGbSgMUkg08ldIT$Kh$6=!@MgFRVv>OCThgrHNpj2Tw3jM@O2 zC-!*P8wQ3PPe3C`r4>4@9UVvzZ((mx(u;mIx(T3tOG@kvp*d{B0U_;X&(Y_=qyXoddh}5*12F!_Sxfp_3ZDF19^or$ANV*n;#6z^2_azWI<9)&vmmi;t zHI4StV6IM?w9=LOtY#OY5bYk`7e&uD$uEd41;M;}hjV5d&vekP_0!?oZ`?S5HK|gn!2t z`u?U^m1CfIOjWGQ&Q*rN;)P|CwWyhRUi^Yrwk$RxSjL?)pW2`7^P~2!Q(Jub%Ju#G z$T7;)-0?qIG3i~g!s3RCnMB&$I4>!hy(Wn6=Dy_i5?Il z&P56gj%C-IPVqX;59jRcdF>V;9l-q{`cL^holzAt?OHDsvSYT z0?B-I3Z8z&(L45-z!9(4cm15Ru?3|lPVc8cP)w=S0#`G!z~MiI4)z(<=6MLHNQ(o-s3meqR6Tuof zV4Zr=i&;L7YMMdwO=0=RlFxRtePy$Mp#b)Gdq`lQ77vl3o_(t2lbxHEZ%&2=Yu+YP zouG@>)w~@?nC?nLOwWTRf;Pe1(GwBBtfM(+so>{7fT8c*({KaB|Mv8;X}tgl4ltp1 zK}cn93E+F&Z}l4yDX{Wwlz4<>b_<2W{;uk7c&>B3sPV0yDTTRUlWM#Y`O>cl#!Sa( zYC?-dSljn@i>DTMJ4{gaY!^JSE%(}5(U9HV1b4Y5xG}z8)u-c68pDpL#T%=QNt_N8 z{e{Fn$apkgAA)93u>N}4lbESn-w4$*czH|Niy2f9{W+H2ddJUooQc7#xoW0j3c{gk zAgu;tzl190?r@)s#hU7dECMWLU^N#%>l@bzkiXMg^3#GIsN>2fUcUjvZ5@V|j2j1@ z>`bIe*nx){rsE;l~|Pk|56rKVi$Op@GgEjCgD)3OxnPL`%zXq4aQ zI>+sNJL5dcZLDYds#F`S%<{)1UXG}_D@uHcwHg#zOKA)HOV}{m-a{5aa z-w#i-`9qU6nyZj`o+}Dyqz1QkRW4;WXmfLJTbI-@iOWA&# zLkVlNtC)Y~w*`QYO%G4l|AM!**C$VpPJbz*1TqXQvZK_92K`fdMa;H0>aXI}XUZrg zz0U@p5`rFa*8cD7S=6WgH={5W`$!2>jI2+q8m+D4L?-n+#+tzanon8CnP*L)xD3`q zXm0BY0*>SKj3DT4Fd@CDl!C9=^48!$L-r_yB`OgCZ?pDv`yEaC05VG6=VIAAiJ0mm zy4`0yT>-df2p+czaYITmVAm<|9dEKLOLZQ44p;!~8A0YUo}#>3CncD=l_J$D;8k>H z?XN&H-e{aM3;DjXmGRepA^GzeaA5-%7bY)WHv*|u8zw$_j0dC>kp-|eoCn6i!G&F} z3DcB*8?YuwV{A~Mw_;$O3~{s8p4C{=yB)B|IhoKLT&aUYXENltqfe4eD5R&aMd$|T zTN|a-k~=v=-7`hXny>-X@(6Qn>F;{&`GQcyKX4M)@yW^Q{!B3lVaM#H_$7~}x+xNK zRbxI9W0f@P4~V^3gyk(M-DB6&4F;dr-N6c7RUTHYyc%B7fx^A|@U(dgku=H-KP`J} z&fuaOb;5O1=#*0`jtz@2gFsAVyg`W%M4!GS@w34fi`)!&k&&PLz5SD_nXi4TiaA@A zl+6oOd8+h{r`EBsuKu75o)ImRf&=?;BwG$;R~Tn(rWS%ndk9 zps3rHrC*3d0)-{1+sC+yNC8yR>6z&r&UVOwVthhsmC4?inc4#IDX(Y$T|IIpCQyqO z_^Yv#OR&<81bzegBPsjwM1Sd*V(M?)rHMuA-kyD4Rpn$Qs2Tf>qC9#a)F%4NFUDsF z{G2bwGxn)dNa+S_*zR(+@Z5D&Vqb2(8V+YL_u!yvf_0FZ&xEb5DnQAR@sq-IZi+0F*rggS4dpCBw2|Uqi#qk!T^v~DWle-Im*}RS zXXN%`i9? &tr`A@uZqCvT*FclKJgeQ@hs@l*hF>P$(jV>j9pds@eYJ)$ifeOK246dSfs*8VgE7mWo9Ab^T=U zeOL98NEBL*mUO!RNsQKeIlF1IVTe zKg9^Czx}j4Lxc{2X;4rCy!_SS$ua&18DTkWbXt&<;S)1!{Jr^mUbi;}BWUEW^mr zp77hg>Be9Tso#bXQ&)P(r>`WhlKzo7_U$3-OeGe%~Li*mu zq)D(&>K{h=_lsn~jgytsE{tkNdh{(+=`83A{q64v{w=}J&K`Rsk{3%r zGs5|d=;@s+sDkx%M-V#6#F{wmH4_}_R6Qm zgu7EbdPJ_c`-tS;mUgCq{s;Y`s_9mg7$@!%)Q_gYS5y(bh)wf+=>wMSosbx;_H*4z zP2H}R&hJO#4e^^;7y8*UN;6P{aPntgIW&nBFf`vyb3SW;<^Sp_%2G=9Xc2J#6E4kWW|4V_7|JHuat^YOXymJTpCR z#Cw2&InCtce{amkQ>2^a^+)ZPG*>J?s%K20=T$5oUuU)z$C(3&)jHf3L|+WA2N zulIW`Za#~ngJD@Vpy7?QE;KG|ju!jTY^nw<5h2fPbM!n**8vTQFaE0?cq3Ewi768q zuc@Dzcmnxpdv}O4-rcj?3;?hNR?+bADar%wQp{ztF9;YI8*iOG_yJ!UI6M*$={x^^ z&^MPPOBcv)0xwz7I;I)>3o{j%%&fv2`V0Y9gmgTHsJuS%gvrQA=@q(Zg2F1vbuU5n z1pPkx($vT(MM6~We7ih$dX(#`59S|FeC->B07(AQ5dUq+uUh&n&+10r{UY1eZ@Ip`?OJx<1YbBq7CWyZMWtDu$jr&Dx`#nB@1xvJ^m(q2}bw?I#bz z`+Y?n#Co?z%(cClmPk>M;lV6OzUD&&TD}O8CEjT5MPgNK(Hj@>4@<1K ztowNrX&PNbvflvW^F`iG=S}G4gQbE%sZvlq2$83~hB@P!Bx;m_{P&e*?nR_LK1p$CxYCpH}P@DM&BSI65+q70Dx2#neX4Va}*&)+gb7b>M&4N&O3L;s3NxZ~tc|i`-Gq zOnxDMz(2Z)#5uU1_OvZVlb)N(C$BGWuh@-#uyR zaP82Em^?x&qLYO-le!$T+tETrtk>^jzCx_3Mj18Fj3lE}EvaID4YVaY9x=3Lm@GI_ zI_^Gy5E0gFFf?|vACOH*2RQHe=0A1+vzcN9Ae6K5h1#`fLRUi^{phPcWTcWeU9wrlL_e{(`0F6b6G69uY zVE28F&n@%Y%3YRhk?D&)%@C!f_`-_hs48j!K&i2C=(%9;#eaC^{d7#pA?Du=p^6?F z9Mg5s1|GH#=?XG7v7ub?3+sSOIj--~hylv@`V3!LY4x2%UD9o1MVWsuHe(uQmu;iN zJA0^Ns^;MjeD9NIhqgG@nP_8&Ka&+9F|lLawzHw72Rq`K&zhHF6C6m5R_7n;w;|_PR#jRp#5yAl|Ae8_esQUfG8& zrj~h$No+|-OFjWl%&d<}{E&?OtF5kt3t4g@{`o>T5=GDVF4rQ*S}3SCrm8I#94I@k z1#HQdA)1O^C~8OufMCMe^AYo*X5i?ON3_!~p$(o1QK=l?@6@?s78*D@;yFHXdSepC zWfl}v9CyjW-&7&W1FYybFN%yd1l;LepEtwvf_NP!$hq-OPluj z?d}9_!5ZJ76JAJ9-M8DufM^7FSgN?jpbF*c_>!&ZQWP$FB*JetCwEd`d!1KzXx%^~ z_Q$D;J>;KnRB0{f`YlC5GM0bz_lBYSQM$Gg_8;}u1rw}t^B%)f*BAKs{_U+jkAN$B z6al^l%$nFe4_yM?IZMGP`gv`jNbAw7jVxq8k17RQ(P*%lXx;s+PSyR1y_C_;aQT7g zT#QU;>pi^y)D9*1I4BmePrudO(=#3qX|2l-h^Tl1gbwYItY;1rut^UQN2e;6t}bLD z_P*A(wth%IVGzxFyMJjoG19GzsFiKHYF7np!g9ROF(zGHWi|g+KdvtDPlnbAYfkNl zbE>`!Wkspq*%9YBy|#wWR%(q=b{p(tYw@D&jkKCv(eXRohWZ^scaT5)!mRqVa8U;- zR9A}IBCVS)p5s?g!jteZBmkS0EKejvI>buo?X9>M^6m3K1jGF9WPwxTH2arj@HX&z z0}bIkO94TvS&r^J`0<=Z|R+c*!3m_jc`ba?3LKugZ+XYT1dn8mM;X{~4IR-v92! z9d?mJr-i`8h&Zyg^x(o7S!ycgf3jSqOIuXeuNEriCm5|R{v6{3J)JVe&Y*Z6^id3! zVs;NRlnqvzO-g>>GnaFM`2_1qe_`YQcs=yp*p-CSNf~ES@FmCaVwqm0zy$9=Fe$P` z`o$8~?F0WaiUC0Ah(ZGh_5rtts|9<$=9bohiKkoqv=cF!g3yZ98-b7Gb_(#d{)xgNetZUx$MA$P+R!_PfammlP4#9^5+Gu9YE}+J{d{jqPOkEs&m8R3& zw%(gW+|kEeMTEe*zn^R#NCavuhl=Rw=|HtgZnCL zzCu-Ywm*|91q-?$aM7!*OX7(Qu z*Yy5QUdGq|eS0~?05weX^Tg>3HsyF)A&x>RhvDhzjqrg*X@tgQc7Qj;3wH+kl~MRI zKj>o@>5PnMf^UzWRpAZs;TKR6}jUn z{cMiOZ$6Pw@KgGkw0R_}E-I0%Bsx0Sgq$hNrH_y?HUb|IUN^UN_RP)_0c`H6OUkvt zClLVN(nNXqjhHLy-{;P6(y(UY<$}oN>=qEtf&u`SI1wG6Z2GSY&Sc=^Bf~KtBk{hP z|MqD&8k{fJ;KK^O4GI6mb(w7$sZP~3v8;IPn7g!pDd1}Jq6ZM*`hJ+T)aVsSDHBje z?3^KBawymN3fYZ}*N~$-fV`lu^WZinM;Y6qN^axcjcYufW;3&V!$ZRE;wuu0AiJbe zO)c}*W1X1Ki*mU*TqyPPH$8xXiTbh_Kv~b9cK*Yk*fxH;B|(6GJDiS3BGPC-=dpq` zO>q}%A6^*0isu-x$;Fy)y1M?okBJvzuJGL)ftyasV?rW0GgIWxo!UI|63UuK0$eb^ zK4@zr*riLAqZM8LkARQTytR7Rs0Q(%eYDZ!q?!~ykyL*47h059Q-!Td#2Lb5H^^>W zeEI+eK=x^xpTBnZiON*fVGXU)2ILZx9>{=0!0E<=kU_vbI_SG)Q!l@AbLVYX?_==8 zgUCQ{=O>Z=;uIbrd|?NxjO=mF{%yec_B#Hl{VES*cgQf}ugOcCctAa>df#MJ-H@F# zYdQiYKe(f^BB=)2b>-0)1Cqg4`ey|UN+`Rw!ae*49`hc7j02Vpb?Cd5%k?cr7yQk? zsw}@kN$CFE1XwEUP792a&7S&><75Ykzu9IvQ*8|**QhxFe)RtczPbN{x}~=*FTWP7 z_6ZSGsm{NMvAoqTK-lSWlA;2A59}I*C{I{YN}xBlcJ}j!LqB6G(azZ`AW0CetQ@A` zNm=yis%*yvN}t9>;xQ1*(kCyFNO=F!dXczi%{T7E@i{(O<}hChMV{_lp7c2_je?Tn zJd{sRIntE1Uma@p+_B0DkWoje=5n|Md0|-&)Bs5Inz)o~dQaR@yqYJB4*)Aop%%b|~WqirbGy z--ovdlen(@L`urE1($MFOCVSifCqTVyL%kg7(REluLWRST=NsW|GRQ;X>Da)-`&i5 zeV7p@mgaU{>-XFP(!_3HW06?}&r!Z1K#;<}zt|vXx&qkhJ$EWk78fbcI8`*3mmY%cQi0ej?JiOzGL?7AfU_`y279 zsR@9wxV9dTsQ?`e!2j)eJa%M^?X~it z%k)_>Gze=%@;vTCI|iue)(6>g+TtcLJRxjjMW(t?^_E<7zQjmp(Ui3`MBX;mZq<{n zMvyVfVIE)v@&085efaOiq<(z70zuxVQ6*9sst@ie@*2BFeX73cYK&yznejWxoz?fh zcaIw_x8p*DxecGt&lUNmjTlRejQy~*r$H5vyJadCUVAOMMLhE2gU|6-;pRZLt?u|b&e>Lcvh1CdWG$Li2a}`gE z5=I)c%-yH^Y=`2=*&P$^!-%?o54>`|dnT;_Cjj?9d{&dkn~9)L#PGvy$E^0B>^yRj0~_ajnN%kitx>~`oNb2jIgz!2~M(28;!hPiIRZEAz_EJ=R|HAY=?Lkje zS9c=li{nhnv*@C1m;ca=9-HLBuL734A9#$9++l0 zcdeUareNlolYiyJvGmCPX!HGXhxqR&-PR_HvT<;L`E-4U+kERDep)jKiOUEWrpjDZ zk?ofZyQ0kULZ|(C{71Y0NAKevdM#eY@|?LVwpgRzg;Cxg*R%2rFyKODe`A z-H_ZSx0Z_M{gkZ~pQ{IHb6YZMe+qT6%ldl{IuE}gp9z;4v;KIU&}a;^TH|B{lzQ>m z59UA*FHaHtH24X?W&uF|DYwJxA(>5RR4CWW7#5`{W2xn#<5kY^0cp6;Z;3igCjS&$nbZL|b(#DrYsi|jb~(}GqD~iPA^O15K~5f< zejgqewj|}opEWuZ8yrqp|1_JZ*P@>J@5SB-=i^I!3U!4&p$}KbUC%(FS8qm~B2DU1 zlfLhX)T<|N$c4qkJR1OKSu$uhMEv$qv`t>O-N=p&GhS&yc3@lK-@Ly^dN4~mxwVM) znV|?ElD65QV~9NGR-rqmMWu*9r1dVqLlh*M(;$|4!OhPQyA_OQ=1{4lzg5|^1|*0l zoHjf?uAjzr-M(_q?zgN90k`5frO;Y49Lu>7GB!_bTY8XD22pLhC~=bNq#|V?dH4VWDE8-vLe*U8&BM()Vlxp;_kjTG>iV-Lx;)<{6n#| zGVnqpvka~9%smmgzYx|4z`@vO15w&xv#k?NV5cZ1HeZeK1y{t0&SA@iTOnzKN}>4T zk`TPY6~$NKr03|J>X(8u=QR~rI!Qkwf;;OLaH(K-f6%^8S!Yd#P5sZg1INEb{F__s zocnEoNnGXDw>&21K0+|IBs(4E;%SJ!t~9m`vl-Fm_i?VV_nS>C1>u{lj3F{m8O>bVG)BZd=J8K{-M2qewaOpJK=xACez~_`= z&NfGd@}mc!?^Q_8>mkJcR5c7|dd8hwmskXS-*(G(xaxN&dfSiG>)gG#LovFIsQ^!7 z`#CP5ZS^(L!ocT|R^_eBOEka>DP?62x;h|_S;-%hM~mXDFewwZzp49&Hequxtn#oDB%t8qU#~s9yNOD%UCK;@$~MVP>|F z;TfxIr9<2i&Qpn9D*Y&|ej*+Fha*_7$CENvn-nc#!+UJPVb~*e*AeEYynSz#VL=s> zwzB#;@e5IV3ZE2|k&PI2ZFDOpi_fp|n4yeLX(Ib&)Rz)%eGyE^vG9Cbdt0Zx_)Vp{*dCp_idtERB=bWQSvL_$I`sUL$N&B`Yd zGddQRU!P;OQG=e}<2MYL*iE?b-j0oVU+m%E+wta*o1q|HGd=AE=;nj@U7+l@oq}N5 z-7k@odU1Huaq71uuVRrvnBhNrz#D7JSAZn1X4%07fEc%JF$}}H(=f9s)(_iOL^<{H zXygX06LWobZ5=Do-)$0GaG6DdRAgBm!7_B-;(~f!%P4Vfq&h8QZLi#mn*j)tRN{4OmcemiP^k+O9Wh2Ww`-o<{sE$wGpeEOn zsD$Fs?Mc2i$R_oQjhGl*`#xkx#JO>Q$^*4`N=L^@O-5jl3wl?|eaWB@eA9O$AKZ@0 zK$fqnN2;|w%{G9)-d3lI-r7s->+~~C5Pf1Gz{}gd@C*CZA98n*2*=(m0 z{b~0~mBHT8d46kj%e|LIRDUo~0x zeRfw_38P1-kA|a3J(egSF*KV^ziZPlHQ`M>pm@V8d@Ikwu(cfB*I^UeEZITG9VMhD z)v~Ee>}7+%#L`nc7u`*cG_Vo5;oNuX3`~ps?{YUDI0G?G+Rt%vgndGRTyyw!-1_zN z`-7l+E#d1!?l9)2?EnOp=atVt_971Uer?UpW%B>@J$KVLV9HLI`hkP`j8H>wMWf{# zm7Y93JtO_tnM3NY@{yNRsQNG6V~AidzR8TA1Nd$5S7C{h?0_Z_W*S>sjVOfz6On`V zOBbR?qxWT11JUEN9n|JX>0cV49I5wec3Q-a(g@pq&CR+Bi|<6YZpmN2(o3e8+V?2- zXU@A7l0wOc>@0pALr9xv6E)P!7#^2-={`3y)MayY0TgT~V=V9gzMJGu{MZ1WrtX%1 zV(nA4qC7xfSAm`&lFbypWM2dndJTlK*$LMdQ|8PdAZCWSuqSIIs)zJLUvipHYr20e zqeXz&I+{Jfj+qi^LImr_Ru_K!W24W)f*P06=Lv3ONQe#X3O3J|FM&VcJGBZ1OC<8= z7w&b*at)rx80u>qyref^*xm)|)aT`!Cmf?2y`?-OXPk%^)@VoAo zyFSP!P=UhGsY4@u5#k4t4LHc|0`qoP1oZP5j1IZae-PZq96-?a%<2#LMwwIIL3Vq+H*A#sDQL#qJCc#oPDiJxU zKX4-;A77$wyE8{m5fOZ;hr7IQ&<=U^NnP{A$u@5y@AtTN5y)uIbq$4!cGcfLJx6ao zS=u%>Y4Rfu|3O6)|Wr_tv*yEFcCrO#9GPP^3AQO$)>msg%ub}2h zK5$R#$97FqH3WTspG_7;wq}K94QumQqwNbOd@tN;e8DwfLMkiV(%y#_bk}rU_jF^0 z@cyC`?x$kaSQKi$2SF{1O2yu6gOk-)~!=9y(!^3bR% zIfBH_I&*w!@50mQyE|F$H$8C{_IBwa2J`_9DnH4Q-v*8ec-705LO-Z#Y##iyjBINQ zl=Swj90?D*r(hEH^?ktYc3HKCJbwLeQ}R3_()sBz!2hz`IQ5%PrD^?e8f^mG;EHbc zfwh|r8Yfvk?GW=t`{%$GgUu9GQJ+f8^x#8h`tQpmyUkv^pf*afxjjMkY}ek~yc4is zLSHbrl{a!Gjwevf`{Z=)!AqP?uja&mgaqT5yU#ZIq8Y znd^OgU8m384I`R>8R8pdH}(mI5(n+wn~Be7pL4ee9w|J39>SXc;7<8FxMcXMagdBB zynjqVEWCC+qu1h+=LLipd~fIs%bPYs8--M$5TVqFd)10$+h8o_muFsp|-NZd6YR=&lB zQB($nn-7UP$5I(>g*$8fCqEO^5c-3VkSQN*^HDOO7ngWh==4u9UvpMhXl`%M8d0%@ zd$bJD%OI4H<%v_}>TJqroX4smm;|y*PkrCu|Jk#pNUs7sv>Lo^Q-t`pu+WnCtNG#SqL7I z=;O8d{Rrn1+WoxPHRs|t)^OE`2OLKV71-|0t{f+XRbrD}il$)kJSp<4W*`ia55(pw z%B(6B`~#Y48ynI$7(cXR0K9B^27dhj&pu{g=K=7dSH||=Gy|5O=RfY zWrO@DWnPpQ$kA3_uK`1x$kK+*`@p9ozX_Xq;Ix}k|DS3;7F%9ko}nQyq5G?krsmh1 zPuNoi{;u4r?yOR!Vp3_DoyM|eX2OB3{a2z7N)+*IRegE*WR+j#Xu}dIRjRGMnq@~I9WFWPCV*=G#%!ybSH+Ela+LiXZs{p)|2Ra3-#AZa?_{E|uSP6hJWr(6e|csZgY+guT=)gwY{BO; ze+SD?3&9y~nQls>J=@ax{(f^q-#oHy7?glMd|GDz<^LHx$>ZL2ySDT_Jx)9cd>Un_ zpW|xbF<{iRI9&9>J$V@B4;X97qm?OOw%}z+n}*hAN8nN`^j_P^#NwNLX(IN5)zxu; zV|lblIr_B*_JnPn82OG48;$DuSFS|nGO>gMugQ+P&N;NLtR@FwVI^sb9@mI<>NI+( zc*1#UA{qqp0#UvVfGvAywZrZhb^!{iIR#);(ZeFKi>Csl>Zu<~Vk&i~4_*p@C4T=F zSfkx}Aai9rHv86R+YqXbIoOLx{j|Eiq1yH6A?$mB4p=z@Z|@j(pA6vV;$L^st$GOPL!H^McjDrcsy9}EC0k%zy7r#0aIL~j6cGa1V*Cx ze`io$Jc(|{uIkTGS%x<1{@;0Io!8`y2O@#|3O*Ulwkkgd%6xjt1P$nT|)qEDp;Br47EsLW|(+aXetzQe$HJnZ*}SM(|Z9Vl~8vclhsgmps!L* zf-zUN$S*Q)9v?F0k<6`6@hb~~e)#9C!gjJ>%lOumdBbsWEdxlm+_b(d344310Kzip zSK=G4=O$vQvUGO+3wST)5{pU_Hw_FqiN(0g8>g&Ss4~p|?_kvYjExxUzOFiu$f@gr zSB^#3&Jqa~fq1IV=PK6xhhIXXbX8&(Ff>P|rKJG?3mZ3!{;Xw3-#af31i7lOb9%8L z2FFFHIEr;P9oi0`#JbMXEk#0#%gLkAfve2)9mpXs7LcC~r5JjxF2s3M8D zyk-nKpkNPIw19}rA~9Bi3i?HgJy}~kM?UPN3vi`=IxAbfB&PM&m5jvKWzzw$h*R%w z{$`4R#Biki8Y94wnnFVEvYB7r?!n9y=wPfXf4Lw|UZIwIFjb8uu6~c6yrP8hicpCy z%~GhDGps|x_@$}1a}P2g#zlv09iq#x7%|E z>U=Kef8Z`h#DMj!QL#%6@2gcWL=dU@*M_RC5}M&~cNOxz7)hr!8Dp7!#TVZA^8d@x9htarxp& z<7L|cvDH^&Hq+P;-)GXV-OwytI7W<+qRF?jKD?yNqINS^pOcUTh9pooH{AdYs14-3 zOOHj;4f)9&w+Ztjn^DD(!pzdmqm14=KsJk%W5LRQ^Z$|cmQhi*?e{RLgCGJTokKUH zAPq`)w=_~BF?56E00RgNAq?FqE!`bMNtcwMNK4oMx}V>A)^o4-U2DG1hdHmgj`KM7 z-pAfXCDouMI@#O`23uf8uX3m;x!oM?&$sX_c+^o zDe!?X9k#7NGc+`C4)9|4#ldL3Xl!qP#A`)OA{6}GrPk{{Xe*Yz;5Vpk z%I8BqPi*<^nRTsq#lWw&3on*hd35wt1w40af&Pql{^HlM?zg{;VOD$2<5y z2t4jpM~!5$w~(F+YP3%Ph?8IXBwu4RF!||=IlK!T2O%A(hA+!GD<_-|!->I~#E{JI z#0vzHD8i@ci@Tx}8F@5_1dR*UV9Q~AZ2@7to}ixNe?E8jK>_qm#GItKe%HT>F7MWE z#BTQ<_I8fH1>VgGVJ4}e_$B5wwR?#w)Tv6x%OzaDfF;=EH?F|YFF9E?!aG`9wcS?+ zN-d=hhokIq(`xvOh^0T#99p>`Jj6@=isVMuLmFKh%HC9h;GTevka}uhAEpk%GQLg# zws>#LfUPpi%F5)F-J6Y4V2qNQ(6<1G{>=h#$3S|;o;cTmoJt`WZrtnS*NLgerJEzJY&lzPMgNN z_`gT;v%8p>WqVZF%%x;|((F;tiTh9hr{ugcvCO@nhsU`gF5YOTM<4(S;ooecF(dif zr#bEGh{r|)udFhz%sV3XeegDeRvaS`(xQGds>bcd#<6YEYiH_=)tG%yJPhTzu6cYk zdRenwr$z7J+yNHq2pcAgptGy#CyW=cM zbF_8BCVunh)jz}UKYbFwft`QrhzYzqeR%S)8TWt%kcsD=obR+kWiw=?g;)R!bkNM* z)gMbpH2IGb&Wz_lsWOvB@0o=%@EFN)cQ`X&x|rXU7i1{CBUH(Cpe`Gai$sh)?-Y*f z&syI&5VM^|NAglV1MaD6!<@Z8kz_-7jgarN-gaLB_Y93y&1zYCrpj(hI8M)xoEKw@ zzpda|=<_ITQjVGy{ghLol9b_=(kCNN@=u^_O#v~rgJ1O!YZGi^=c59iKM^?};NerD zXCETl4;N`8WH*zi|J^ISQN%f1?ug5}|CLpVuWsq)_$Xy^D|H~r5>yXue=m}(d;NLE zhbcl^7V!x<>CNLa2X9?N%Nftzj}f&qHBmV-M>>jKkB1okl#9Ixwj;_ju|?ThEc@>{ z7)kgCpDp~;EM(fz(CY`1Q-4??#rx4{G2pW=F%GHv&801d zh7m|ba-BH(&Kpq^Q{!A31d%4<+=o0O*1fkinWsRTbE2Lx(wiN{E)fkeqxuJW`}r~E z>_ZHc>UeAD`R(ysd$^PT5&CMgC+Wq(iU@g1(Q}&*<>QGb$lO+(DEs4l=aODEVmZqz z185>Dx-Dvx=oP8es+Ef>RxTDRjLz`;u8UZj#ZyK}I>}%7gI6W14p2d_Ao6G#0PyTI z_e{lUfv1xB+c=9VCKoprZchc6n^z=5uMNaYHAA;+2FxX*g3>awFAgdpu{1YrBjW;L z0p<|AfSLhR^6w^*FB;S}8;dI7QH(0xxfhB}zf1^qgzCzz35)$fWEnjkp2g#PvUyMu zyZ_v%IA)TO zq2!P(hfkA=TWo+Pu&53BLN1T|ZHb;nf;esV;Q?Qp+Y05y^g9&AObPrKs{0mdP6kj~ zs25yaz9*5c>9t^fp-o`Fo&@KYY=5y^Hw?pl2bD4B;~>o#eZwUW**ZxY5>C7LQ;1>fw>&P0Fk8#1{F zGO=<9_;-S&MflW-+B6~o9`Wk4g=AEYwF|SV8G*3n8@hag^*lKk{f=CMAZzVlF(P=< za5;9to;CJ6tK~JM^D+6?HOFrNL{5LO(iSrF0lR=We3P)_$m!nc_O|0z=ypYpw#(Oa z?hDMUg~oUeeb8|a`q^)4!3V~gZavb=a-iXip@}iTDtV-Qwwd_B2V+OJAORbx|5Ap3 zyD>Vq5ar_ZB8i9E2Mz@Eb93CKVfNmfb9i-q{pX zIsK|jGn0v4nofb)*5BK_Glo!co6rkPD0NEaN9diD%ifthN9KNF7@DS`D7`BjEwiRX zNcxIcZEh1RJ;%Z__mTx1455(a;Ji^?y#=n7Z^=LZM?gB_0Cd6Sa7qU}IvV$L?(f$~ z&m^FEZA}@K`uUqIrWWD@bYvrfkXIfp)Ih1Po%8XBfuh@`Y@WW}<4@HhQ7@dmKoBXD zMD283Ox>dwy_mJ31ZrB;jj0!H*^D8wq8~{$J)&O*{unu%@;j4FYkjmNDi~lJ@qI7p ze4~lCm(?Dt66R}jnzUE*#K8z&TE=k3SLZlEWbnFwf{6_KzjxZ>-!(Md^HV+BXd(QN)Xg3QHlyg zg*8me&R<>9`uD!L8nLQ$GqRCKe!YG*({w~+nk^r?m8$KJuXdmkE;*c#4SdN}{)MKS z^CtSzJ`Gxx(7Pa5b;~LcU4Eqr)1EDEl#9+g-9Qnwv`K+Vo_raF&yI+2?rUq*1eiH1{~Ic*R1#G=W2m#^GJF&2(!YN@H+(uDh6e72 zx;Y@*CmZ|zMdvg!eSA&nx6NVNwbJ5QYd`#*@ECmHeYoxt;zh2856Og2rnF8XzG7Pc zX?Q2<6C?Kv-EL#nu;)X_>6oEm?UzZ83 zDuIWMTP5qlX4E?)@mGzYZzP@S?(!6(lq}Mx139p08Rd-Xi9nN4RQ#sd%aY|6_3Zu} z6A;i!vO(q3k#EZo=%3&HmXgMMn?KkpSE#H}xsWgJg+-fL>*RvzZ)eYwcYM0_NLfM+ z4USJxR*nG)QHmBLQ)GgUFk^!s6|v4Sz2S&kIeoV?<4I|tYS7PD!yqo zgJMY>gsh~VLo^&DGaIv9+~21uNvb{F(EDw9K{uO6Q^s=u=|KDF-}4I&FuxQ9oUj}p zv>XQW3duIXzYuLt8nVO+%U4?AnY+NPFKkD6Mwq=*!0GR3pI}V ztl67;SURZF`@F*aMU{zljg2DVtYHv&zhUbgN@Q1?=HL!9#2OpD%w_Zq3*1 z8hoF8`NYJ65k__@9rW`2Amk4eV{_wUOyw&W+xo9*4!_F^r}cNVenDebLaPrOr1t9x zQ;*nFaW)Ba76%E;r6h@?#hra)D6xh*F z-ftGEVur$2210CQ%B{n3(IaKF+ZGQB8q0u@Mc6R)zm$F+R0&`b0TH?mS?V{losEOE zUjySqy8Z$yK}@n zl$a<{Dle|Lh1hT(@e` ztbTXWAOrw$uXjZ*lT7cQUGj81+yHcs`_|ey^)=F)T(T4B3B0H}A?Qt)C4y!n5bUf? zG~O4Gq2fRkZN|6xIRkHuk`fSmb@(iyV!?u7b8!@$lf>GgN>K2Ho!cD|DXG1i@#7uo zY!gmjGD}DCDIIl^NdsrgH#YT+FF&yx4O0v&c+7U%h7oVyCfUx;*nNa&qU>}Xb#f_G zWp`ZzJ~ScaQ7Su>87_&xq+2D}WGzXK1$V{^dw1cbUy6a3<9w1T@4t9rKNpZB6?khY z5gvGADUqzC%2zjuR-DY!M+OnrtCf;+EKHI0fHuEKS@T0?!kpdR!=O~Ad;E%{RsCiQ zo=4(8Za;E0<<4$(r*rNS5A2o+_7hLK1A<$xy?c?}8!Hs~3>^W$X2Q>||Af(mz;Xbg zy{fxIl+r8uxC)l|bBhFdK#a;8OM{kO7w%d4GvY(V$zW^a>*$~-pJ5#kx*cX9+#Q{7DpJC?&h3m2P{^8ycB=W-wVrHbPPvzV8w3bU!0-ED(4n z(C7;N^bfBA#^b;R9o zF@naw>KX2_$?=&MTgRixfF5r>#o7^rPm%d`LdlkBBLSt$)c@x(jf^M(a-SL5N64+i z_}u68Z#nq+rN)gtq>H$Dz{`L+e!XcPg2*F+K@vWH@NAy;Q7D1yFYVqf(@j7BN-I7d zT44L_u&Y8 zHee-L6ru>%VOG16j8?0SBh{RN~i1QoTRkjsie% z#{L_;d;;fXT4zzJ_u4Iu0`!RrT z5*u0B^3Yt`S>L}mUBVy5(j1A#ti&N^<-%}|;`lGE4W+w3Y zR&Bwxp!K+2fP)sDOrz)FsuCBEJs-t`^S|UW(CB{z8s|4{AXT;*!fT@CB6%?pqO1-* z8N7_hf*01yEuM!l`V5*B^xu*t+LBxQpl(O2dh~UC?gPlC>zZQ|qqZLNxXBouR&26O z=i=B7Qia$6Bvp!*evzQSCw4CqZ#6r~xuHf6s5Zs4&Q1~h-N?PBw~?VE4={ERY2twy z3$aw#MX*c6#p!K6=faIrHW{Ebv(-KoWoTtdl1@)`qh;EPuKy0I5rge)Ou2;FHlqk> z18*Vs`#iVc_M4SM`b#uk%W9*Xz2-D`A*wj%p3gFBO&XSXWLV6yAR0%iJuyXQdz7Qf zbhD(}^p|u^!=IK3xxCPb&1v5SnE8V7N)^o5wsEpiS+8-_iO8 z%U?Dqn4B>z6hS7T?{}!e&ELQY6*+pzezcVxXxU|`)m%uvc|s_?QHjuSmW2`hLi_pK z7EZrKHKj1fiQfe#E)_k9S=OaJ-6zk3UigKeP%mHGI8hvN>d)G8Eqr04FARPBjOGW= z!wGPpKFfhO4u6f~9IJygpP-%!b@0h6BquYw4IMCDPR>j*7bv4tWW;sfyhZPIugg@3 zl-ECbjh-)0mz1q732(UPu0a-SODYyQS%;Ek^V46#pnvBN&(#&rXPn(Ys7Upa!hr?D zm{iS3iM|gjm}uc$A@ayZ2o&`a+v0t>E_LkVxXL+L{JK%GQ^RsoZLfz&l-7JP=dH_% z?rCF?rm_ytXq=jNxfEPoQQ_lT-9MK125kAc3s0XjY6*sd?D@FAdQ=3JOg4u7yIqz6 zu)(iDzdTi(fh(_==zW|G2qL~ZoUS$*s%pKI)gp0`W+e37-ri>7=HXd`xm!F!&6OEW z)R=rl%Z|!>^78i>T_}M$JmA;1)+pYRyI@BnX2sLy%0vuWu-|Ql)8<{^Uxtl*->w1P z`pFa`1}Il1u{L3+!s1T!pg108YaHxt|E~cJqpCj1RQ>+_5FVjCIDrNAD;|e)h)RRa zPqvY|tUl8{j;G%VCUxJM}V4zSwRBu%X+p%N+@tUw#|WVN zg|zTUIqzQM1KeLq98G&@Ug}G`kxSn(*HM+Tv$TbrkMOrPB5n}%>VURSOHp11siNia351$b|4RJHASB1!EfrrpZZ+BjRX=7z_?8lvIe4FwWbls( z%YU^1(SRXn&pdXy2Jq_|4s-a;o9euc#J@F-uVOiK4`2G(rH_B(x<0StfiZF*RbJpMQm_nQ*2C_~$d?BQLtto|Epo~J5g1&`lj z2|z5{^gC^z+CSCxH^sJiPE1c%IXBveRi!fe#t}rwXS}li3@|clN%ySEzc&#oLSI+Xh~(p6 zaTh_{X+`f3L;@oKiaHo}1Po@K=hSbo4l^3fEQ6+mDET`U=*D>>h%sTH*~P?~S8R!r z?sds$EThOKGu9XJ38<9Q@?wxsK`k;unvOs&G{}%(#uI+GO3wtnT5W2HXBMnZnHqbe_)0DhE|a3+BNIAKBR-1XIhRH796l@fu7bd# zbHRs+JiO_Xv3-Wzz7{v()Qs3w%@0I&Oh2HERpf9pXg%A64Lp;;1nF1KzD)D4<=s0K z4o4p2Fx$oQSa`G3mOM!|qMXyBp?!Ab9cafz{tW`-Eq3hYS-3D~{J@LcWksec3`XqCe|xrH=k&=3eXfar0Hs(;3_S1^}Z+SL~gNhnNpAVxle zq9nzQbiQVBtnBR*ko{<-6&$3b6Sokgsn)lJ_n_@q`3t1u8#`64#Q^iZ;ZuP}2Fy$r z4oA>o9Bf7#ZMI$lsK;!Nkayl&4oMIjEyu+6=oFbW*-Y9GDdY)h5PPmTM~tR1$)ir` z1i~~WyvxkfAaroPPhMrBz^6kolr zo`4~FddH;vLu(x1uhd_z1t%0ok9;n>1HJmIC_RC2L0MqYVWO@@5Fuz3>XyTXDi)YL@R6zH!8&fvuaNCzj?>Su+%S~=LG`) zA=>uvd_x&ixt9|YOdO|{%e0fNkRfviZl8rZ@JE(SeHi!F&Lpr1efIKE`)-S<>e$)2 zeRHT6KI9qMw!u69wkKQHQN+UbX7%r(0VhK&muIFo?zdANH%y{Fm*gZP*d!wbjdB?P z<26#C46ftRRbsUy2p$Od*5^#sOP@{zd;XdEg5Ac~o=~Bn%b33UEx)|(u`|WnofAK7 z;AMu_&+0p%%sxi+Qly_U!N?Wuds8PoWou-g_mJ7Sj(cMXZN3<9)E`;oMVr#j=*cdb z7`j<-4Hq1Myhl%0JQjV+F?5ze;&%^HK1O4fSalh$^#@g!lrx#WHpQMLQ|ESQ_G~Z7 zI|If}kBQ9V|BaoS*Vh!{EyCXC5@=0>@0sD&U2n(QGjVgmz|yS>-K=OIJw@>H>I$OM zM{VTZM-rqi+kI6ebKiuSQxQmYI*S5fs?j}XO3wEd`b;a}zmx7@mhO3`7e)C-F2WllM(gzL_AyX*Epe{MxYziJdb8IOx>Z%B<39pFtIiS z{4Y&>L~f$r10qcy7bb=kdb2>m;aw+-P$U<7Zo+WPFCK|3-hNn*V>AHE#vF;5av%>ZiI& zdqQuj`n8X@b*kE$gK6dR2^eXoVyYUX6meQsNd6-${5-Y8u}VVtJQYi(fWK~1M;}kf z#q6L`Td{{My8T_J{<~AhXnmP{#&iUEKiPa`#A}jaTLQJbB`dyWVmg%!g#;Ue3+wwL zCph6I>q2fmsB9Y}-*))_rcH4?m69VWm#Zc=uQY($N&R~-Gx1gA{26~#dLtRl5GX5flIr4Gms6*+C z88HUS2Q5_TFxVl*xCiCE+#=}o|9??r6>$I!A={9xD_aHI_N#)+N3XhSw;q+goJx}@ zTd;EaEqDi5?RpHLqy1=&xR4=>sR_rjEinDU`UI`#7)0wQRtcq=JQLH5;`jZY^l^cd z_rz3MazU7*i|Zqx=#%nPoO2Q+7uInIjX* zQ7OrNLt#M7VUV;SWN5)i%*N^S4j&TtWn9&k*?D%)Y!-00ho(%G&zJ-h6Pvr?r|8WA zkm_aI+KvD1;@3N2j|ef~36K@Mg>=O*Ec0TF^3DQ&P*V0Wy@V0__>;c*trNX?jLD-K zXywC`L!f4`4t1ipDs@zlHcE1PRK=Q?!`5Nq0@t>p+UV=Lf49#HV2Kj+qE*cRt&qY~ z9rI~wt!1JkF*wro6(qa7kdoLKSB4DRC_ImKu~l?XJ?g{# zpW88N>mh7>2=bPjuuGr8LNrKb)&4)1#J_jFPPTqcmjvPTUA-2fiPUz`=gB+uGHGWW zqs)}?^O+9SKx$*kg2^`m}$GW)$^e)--C z0t~VZihbd9r&lAHXZSX%-&>zOcb#EosZMQeC`PhXW(Ysbm_J;gpk)isTAwT#3yXCu#QFNk>$rKRBQnqEVTZhgT=2 zr+fhdD=Aars^KNmky7=mT0}O?!*kN=2COO&74NEAcP{cgI&4e6W|Xd{4WUArhCp0|!<(ahkz|&k7vdscEvPwmL=(nG=N-QR`fIX`$4rK}0-2CGLs>>P9nF0wr*EmSe zo94L4k*|`}&y@%JxaL{e-^^-9@=aY5zfP+m1yq+B{^PQls8oXxZ z)k1siD9CxZ&N;KBKof?*`q^Pltw*xX)yHW+yHW{~+t`3s8A8?L)F?5R+~pzNk0XAFSt#pslJal5`s7Kf#O(Q9Tg&*H zqPDz@0|e#jUgPXqEACSHitU`STN84(GOh@D2RU3 z%`+wYbAitWf$N|#w5XHsxyPBiHB~8E3SK8B8FLDk&pzrQD4nZ^H~eB&$ftw zi*ejEt1fihC?C}%;Mf)$!9XL{R*9`FE*%6Chsooi$tu*Il~I(e9X8AxJH_Y1KIao# zaK9I(!EX$>CLZW9p_mZr64H}7=s1K-t8iFwF-y8n4BNI=5oRu)-53-+4fRQ%pHn3_v>8J>vf1VMt(0d#((orlFWZ$H4} zL%l7VNJ-Y(C?8JT*$L&i0FT81)a~-`I#c`255i0nr{krLJCVyi(@Si>qxA?t_DIKc zu-0>rb|@y#hIBxg$DqI3^b-65xKDUD_?7-7s-=3L@m#MUxR}c5_=|-m9uD5qt-;`J z7aU7rvf82GqIkbK&Rjh`9@Xf%!jF^QsGgH)4CCNSOyeSZJEDw6V+9LxcyP6B ztneYOPOkV*CTJ>E9)Cj4Pk5B2HXC+X-B!WNxg|Qf9XNY$@9xt!4JH?$NZm~TyGXgX zyX#sqDYRDqULE>hDG*xR35Ing?=;(nGAj(0!{!8m)>_t@Mb)u7ubHi@N z&TsFQ;^EHLpm5hJL!qHh zT%`WghncRq#~JXk&0Y<|r62Zo&$Db1Mfh5sO?EL-aIfZ-^{zZ6BPY+xGN*g~`{}^z zz@y9KO-?k7RUs<;$Iv*6n3-$N!>>TQ_iTqMb(+}zv!G4fFxJBm&X}u+D;9c@C|rC* z)@qP~J4I<|`8)M>0DVUuA0jz8x4G>XpYIR1ef7REL}P3-!y!(=-V*PGZ0{TxIqsAT zWTWwm{bW*_C3|X&Wr$4fEcx?@3*U>MOXh|7&bSshc#^`{!}r2CV%ufmULDXt1pRCK z;M->a8l?+W4;urM;S^LDh;9DBaNeM)u#mPZ3zQ1ecq7{r*ED%MbjBaM33~J7i{`LF z$fI> zwwgWrjR6m7t(X|?Sf&Ve?e6Pnke~{mzqL*fWlG8(ty5#MmIZJ%tal}Hh&HwN3q1V% zdYl!w^9@2JH)M!yN%iQ@H<4blYJKi%p^ia@KbRhRb4Mr!Xz-pQXS&%ucoLcQJw z*u547qC)BzwT-;{xdR{S!>1_xI}q-S*p^%{Vnxq6KTU~mv@-&@KLt=|h(b0c1bRi$ z97zSvY*h5CaD^GJuROD?FmHb%@d`+zYqj*+(id(Ct0;;JX=SDbTDJ}GSnLMH16@Qx zQul`i8x}x(xzPN7b?D!?2YnokSb~NzJ2qnx|5DU$uSU^NhQGD1ucy={iuQW1E(!^? zx*Y?9o}trA8y(`S8+Jv2cEpBlp_lZs(-J(Iiu2Y2&WbpOBcKK#&3vCkPc4fMD{k`` z4NT|t&(tj;P5yi=BllGi?RcpC@U~Etw)-(8DD+SHnB~Q+ty?tyESXyag0tk7{>wMz zApY05g&QE9dRRoZTWp|N5F4q*j3AKoLRnC?dt>)E&6;83@}PB_kVr1 zA?rKME>iHzKa))DcPnbgzii@;NY^eO-JehfhLJHKrsR>lv6!(vgjivK%KL1Af=w1M zKmlHi{8Vg>t!_5nY)5#?PT^>@T~n~&JLA;&VP!3etUa^|TrWW!)6bQS^Di>D*Eeo&Uz;0@-+rCZ zIO-@Uwd0-JC?p%lwmD7_a&|rD`VR6c-$db_ynf}dR}Z-kLu^!5h>$~AY?j;QzU z>7JYd>1TiKOmZ#1Ps7g;TWh%{kMqqcVDVieG{l6!EaF!I5aW4KC)-VKds}adEl;tA zb4!AewY{Yzb1lodX^~l2Z`cTbp_@%EoJZtNHe&ye!Z_}j_pRko0EEzoiyH@oUkr5G z1Ssg<5HP|ja@LWr7~L=V0@LpC#eTo_nIN|dC+<_(!ee#8mygH%j3rOyERPm*P&r(> z47NP(8x^1Kv9WfH|1yKSU~Ft~b>~d78_Ddq9V8n8tGBNnyH(V? zIG*wD;!0%h8OUF^IIW@Y?&iXD(0}$B1Gm6C0>W@;_qH{rJ!gx&R1kzh`tKJYRmv!! zexZC_3at<1pls)6nvu1+@s}7zxXIg17Gg)m`&4Y14?HF3I<(K9Sthgt0lO?SS=iYL z^t<3_If5SJ+DT*O$NN+em)BPTEkOP5B1y~`;IYp)W^Xx>uW>B~I6r?*TkJBzDPR{N zeSuFxU0z)^Ta~VJ`dT(!_!*k7N4J=cTSss46s=Qf{lH(smqt8ul(&D@A@{$1149n| zcGQlywy+x3<)6@s&ZclEI|f5YFG=igFIc<;8dE4r3{ zjTGi^{u)32;fmZhBMWcmpgwR+stwC!(iwHx;EeDl-=TN~F?^-~Uh>DVAX_`Men>_6 zmOXuzxX5;nKU-Z42)bY+0HBrl4Rnh$nZlX`!&Mf2GS$6cNu=D77L8*H)?}sKu+>`v z6C-J|7g%ozfKRB%@X*i@XFh>1y-nis@_o7EheDo;>ECHy*WgWL&u^C)NYXE=EaYk9 z>&7j44iq=z^~V9{xw2?*DtY>;7z6OzM1=xiV;-2fL1dA}ku5Zv6B0B0iqZltW+U_7 ztaiVOwH94}z z_@*)`f1&pl?<~2yBuYxz1NRI*ew_`?umGCi@u{!NqYX8;6*~yhJI-ym0hH-&G z6*f$Ncl1P>TYie|XZE}KzxV3xzUABJUP;pKTjl!oSuftHZZSgji=g+n{<4r@TN0fZ z&0RweHXaf#ljcCiKvt}EY`IX4|C~M6+s3?d-Lkgs1kpzs*!adxZ}uQQ8H!Gdv#jUT z1zkXv?L+s$x8kQpbObVg!qHpW0ktr_EY01_^V#yyvrGj`HvY7AqD~%sZF` zSo7BWfi$RCUk-(mL1KGiau0ys&d3C@v~D26Xd-3ji%NW-Q_-M95@CLx!j8SfSEYiP z_mrY1R>P7HxA=!cg@gY4vN?<4c)0i0Qfg^Z0Lgj1uAn}r7vsBe`z4Bi%;uvKkUOn= z(V;769gPA|&13C5*nU{pqS4|TKMvN(|cBaU7NS}Ziid09QyeLWO zwMdv0H9Fyo6h8yZr(uufB6gcq@AX05xNuNjFdgWhkF(tIYSFo~4vuN9b3uZ$x~Trl z;H}B5ZM*nSsP(C2GLO~k^rx|EYLjscFmQ|Pw0I<1-K-JGU-H;#EfBylfKc?o=U8R? z)-e$h4??=6q#$Xg5f>`Czb({-cCE+t5_fmS8$UV56JFVCITqt z_?9DV#Una;hN;yPCavIH`BE<4IGq#k!;772m(k5_b%_7ZTDnp2?#YkOaSGFDKWrc6 z6ESLUJDggg_P`GmeyJ-3KhCdGzso<-_Rq>s$-k=Y?K6Hdy;ZiO4x;aF(XJ|R-SpS> zwS-)jes9RlP^mPl5W?gK7ZUo3YkcQxZO2c>Ac2+DKsd`icYQpY>QabB=D3=eYg;>tH8)0 z+pcBfCD&oPElJn&0`FE3lx?R57V@O}z2VQZx1e6jd*Vb^o#@IanHvI0He1afWSG(< zyKNV#;W?tF%IDL?K_4H|vAbaemu;R7(R#GYUtel+#FG^Fe|2}^KfvwwO=GG26*RA> zI1Rem0F3_pE{|tZP6dTT26`gmjutt1HgU5aFc2sfUVW;AW^7h0L4ht6eDycq^z#$S zv=!?~8%ur)&R^ec%~ducA_)kk-W=tC!lwnzzO9&jTS6zSGVEev`MB!jFoHt0ezli7 zu$ZI^h1vbJ66oXWZrA6lis`Zzb8h{lYx@p&2Lm7f9Vf|C6sqAUHm+c{)zm*#=0|Jz zd0_J4&*)bEm@ z9fg21nIOVKwyKsmOccBIY0P!?WPhJ}xh^#@?HtR5T1X#?Vi5X)fN+E7e|ywdC87he z98k6ZwkpVIb98S{|HSL>YKwkG#>uWP+&Qsl;)3iN-I9p<)k2A+k+!8 zG9Bpowyw9amB!DF>~g*jW2zeI$lREE+eMPuMNOiHT@rOe77bOs%1MKAE+%uG=iYOR zVk~y6;&BTpcuIMb`tJe)*->zrf+T7l@c}}|H zzNvoGy5zVXGSIb7A9wE?H@3}0`|S@BeyoW1Mp`+yWVV_}aW9-LjLd@l^%Hfp#fH9< z9|X+%aRj1q%XoZS3*V2=hrpiq>BaM$1_JN5;gQEKSKua;lPEa_znk2f?cfB?dd!3u1yZHYK z6Wy}Lb^E|^p4`m*{tI)deUXZD!_Kd_Z}yAuJ&Z59ZBF;E(Ob-w@uzT#cFGV*#R>L& z0YAS&yyAYW#E|Epgj#QEvyy9ApP+9}SR!Td?mWKch(||w-`)v(KN5bRvH8T^bQOhW zho?<3SNP{I){Dm_no)fd{fOnS_*WJG)dHwl;w?5<(I*ufJu@RQc=7PqF*3B+)kTNh zu%-c2z+_n4I%^<0GPcuHa_d9>{O4MkCi8vy`>vF4#>VCMeFNh{5r+>yXpcN4F6n7# zY4hyfshjP1tX)jVT2|}VjLZssoK2xSnaik)x4wJsoqt>UF)i(npQCmB1>I;MOiUWF+@8&_J!LGVeke)ccbh&g2p^oSDymfYD) zD7u_J-FnV1YbPG7W8xxyulS3|TVu_%sJnt9kH4Is6HkCdHrfpg;$c7eMe^S=H2Un} z{xI5BC#@p>CFUo4RZ(LBv7N%>-`AW8!0=B+L(@KSkcu7wcP{ds`5?cxVDYMPg??;PABKXu5kx%HZ6npKVWx1?FtQ ze|A8PLFi2HtT9m!S=M$uqk``cRd=3EjeHGa?e>j;l9?}s=Mk5O)sNNB`JUC!^(iqO zLi%uyh#!^{D$#lg^f{Fb@~Y3xtv_Xek*6SW#9kzZ-w_=c3pg<;_VFRh8*Lo>Q`RP2 znnki!H#b;=!_U0W)OoIYQ}qme@n~4Niv+&4&Bo6Pq|ozDFMr)Udzg_iO4)mQe?S`$ zI^J>hC}2A!kX#zQ>v*TaL4=BmYBWpk#5VnP{lICN277dif~0Qqlg;PLJRi|(K zw-5Ux9_jnAH!`DP7$n9avlQ^e$J=MRky)@(qvz9*wK#E@(Gy*1O%J~~)LZ+oF~?3u zp}gQD$$ypgp4-1R5*)cIE1ahHA#c-N?pEa?jaZNM`uE(Mfqyz)&r$bb2Q;l}@naO7 zTeD%8_c+44qEhm3IZ^!PdwRKyYo4G8G3_zAHf^C0tlr`!V@`+$9@PcV$yD9Wiz zlN)zkS2<|T;gqeGFQUYCaJjcJ@vLrCexaYggTe7M@q{M5@Ds!X)u{8t;GXXX)DGy6 z$M-b5Y_aoH2nWthZgd9BJT#df7bpNH^Y=={Hh3)+{ama5`hcZ-#f~B`O4$(SCDce(~yP+g$qp9M`(m9 z(;N38k8PJ;_p#IYpP$;pnMPjYmUyRZk4|v-W@P-4@jkim zYV(Orcbk=1>HT~1#P)SLy#kR=QB|ZX{UL@HEHwdCzxv0y-SE^zJLvSjnKzl*ejMk{ zBYNQ3npDS9*JJJ{&8@Ayd@(?HPs_?rDeAcDVVarxH-@v=FKle2w`!1#J||J>8GiAs z+X^RSZL<{pF5D&cTxsFasrqDNr~%OM-s?z9jbpNJidVUYzdm#fu+!EF^Zx4F+8@4F z4SwLG z3lV3d$aQ=>_6k2~{>lecSCt_8*V}Fc1%-nl4Y1rZo2*^CJxteoTax$F5saG1=yXk9 zRtZ|(*mhx()`ptFv0raV;f!IC)-ve z{nL$Lfb;(Tw_hLdzInIS{m!XPrmANa4?>hV>2=YtjWm<9cvo z))-KW&GY|m8@TI{qLIK4eS8s@T_5g>KkFQ+9$sstA>B2eMit+=E&M1R+_0xK-@s)h zVf-yfrF%kWj+N2k6pi>voDjdI0wmj$Be0%C?YMx(WQ7Q|Q8U?@5vHn*(>de)n+ z9`86nx`9;7wGRacM-ehrzud9c4Ap(|IJ&Ymjx(s=tAMqv!5<}3vgKj26i8d;lx1YJ zvEgzWNzDQ7?)wn-t>ajy_2h)(Ncw2?ljNK4PaZ#xpyDB5KAE@+v3Zb^!$&4+?+se+S=9y)!hVkbwEU{!d%8I@?2KS@o46!E{oHHsvc^bsjh^GTsnEJL4nBnhX!Mn#fXn32Kkv<`oaIcHIh|6h- z2kzND+`6ZS>2?&8PT$ngn)`_Ufrrfg+_=<7*_VAB# z2-TO*R0FdgSjAe_qn`%woTJaR?_?8~D{LDZ=0PZ4D)WGNXg2 zG(n!b(>sb7=Uga?0v4b5Jgor}oWlFGg}T*qw;8`*pHJnT^l+;#3^XkmB+2^ig_8*! zL>wg&pTIz%2c~rSr3FHl$&6E2gcBmDqHpy}Y}t-{_9D<7)6QRU>QL;(>X2)~myK3E zY|9roV9mnBv|m%@T>m;2BVlK(7g`r=K@luFy93A1#dJ|ZNMz=w+2lH|Q(L4*^&1e@ zlTc9i#t#DNUhXL}^NO%~Ye&nq=jb~c*ZwTdp%^Xi2ihaDsE`-F+&lZ$PoLmJFjgbt z{w~&{8Q>>%-`|f8a8?Y+pH5cK9^EjKw8cy|dVcK@^by>Nm;3AbF+{WTBwH!(Iy84! zk0r>0ZC4TV+?T%E59%WRB0$E-(bq!=H~6TV?tdj1y6Uz0^mfVgrv472fbqqflBP&; zp>dbzVuW1?{>!C+L7!YBE zkyHt(QDTs8MG)!E5djGa>Fx#F$o9WRR9_2Bf>;JNNh9``-H>%sl6uXYak% z+G{Pf4pIQ4>nS87o;$kpUr`F7R81W6KRTz_{PW(J- zy`9$>^=S6d>#&iI__A~`rg3XBIA~C0G+p+0W3a=|_@mMIoJKLgt}ol+A#Nh7eIO=X z-;vaZQom^2^=1(6y%%BBqL=Q07i9xsV>|`f@YNMbgZ-W&kup=x4cB>a=M0Wi)lsKJ z^H~l2TuXmPwO-Dgis-viyK63V*P9owZw>$HwQzqZ0c}h$x6WHV*U6BfM3kTYTzN4` zix^geI(BpTP|P%AUc=kiwE9b4*1&jeWb zw@s|nRlF4zk6a=23Y&gCco@@{YcCWOJihjMXhKA733M&F8wy~_*sp%%beC+6k zV{}Veft^nYkGajZ-ela|z1HngpQVe-0`v|;snHN+!)YChu8IKNi;%J`@GHF?S88^1 z5BWy-HhUg-5cIv#BZ`z1o)~BPPa_fL=3`##(O?VO=oi-6hED1@w z4d5&PyRA=8Yp7N_9zQK29)BvQK^gpxf)6W1y+PjRD`HV&T?I(0=cd0kwB; zk`j+D8DoAx#MRO^rO{;)&HkI!`|GDIWy&2G&4%KgTzh{<&ge9lxK#6$X*J-tlsBya zLhEYxaqD1nua2@mRK6;s6PWpeFJE{&IoD61obAihhK{%fuUz{wdT*0#B$)1xTD>UA z5y-SbB{9ND@^xfQp7$!YK>o)@?)hb69S3FIJ@2pOqvvXOE5pEZSNS^&Ave27#bNv$ z<_b8N$+&t$@{^+=I|OZy-{}iZX6?0f?s_|ccuN5{FXxD|E$uKZ4b-G%awV<5Pvx6y zSt`;%B(WpZFHWYg(VMAf7PGpfzjYuYRU9WZt{WNKg&_15PB5m!1N6~UWaKnps=iPk zfv|lS*uy;+3{C3XzWz{LF`wo@+xrJ+0Zd>X=o1B=|HBIz!7i{J(d(<`n-gvB1ld#k zRk&?9{*FFHyA;1}`hlF|W3O)Hp`{)WCb@Bx+I^3}6=j%nd?0}%hTpJ1@9nUTGp2jm za#3!R%#0u0a#6rt&}*x5KmiL+e-I}(=~%_u#q7$KGgx&$!?)8^MJ}(LZT)^sg`kZv z$?}gR7(CAT{8Ei@fZtr0kQtw$_u15A8HM7m6~g20!jo2E(xq-Io*A0>ZmpO;yp}8* zV6!}=zSwzGK!ISs)RO<^)x89_ao_M2PQVh1s4^+1hsFVtZJ1^HN=6N~fYww%Jkk)LJ+oAb@&l?blbSycuViZkFqZ zdLMW+oT63d2?DgGluK!Zd4-4=z%n>A8(a^})FFnj|M3#|IL*iJuWuWAZ1L0UjV8t-ADG<5*_6T-Z)Dba2Pn7k4r@$VTtOOjb=`C7dzbZWxRt zEwF(gIroTFaAbZYk~}AP;hTp_kpX=o3IcHy3QxTH4q=Y4L#5nuC1xbvv_6U^@Z7-? zb-{E#$_~l8h$8uf9Y3WPHD#0upjp9elyPI8%)Vf)?YJ}n(_wOiSflGBR{U23m_0%9 zQxDG#t7d;KLw8W2(!C_XvE9iRuYTp)g#Sv)CJa|o`yr}Q*49wNI$ISt4S*awsb9j z5sP}ayO|AU?sto>ePac4N5RC~R#u4fBc9R^yxLYO{7Yx7-mAv7!@43(i_CmHD44ME zWqqaO2OZsA5@tl^ z1?YaYJzA;^KH~z(dhNDkLXM~rVZkM4Jj{LcXK4v(TizrMp%|OG zpBrXSmQa5m!#&Q6F3A_Do%`+pqm;Gazrjuz&Tg2?*hiv6=V1*ezir15qGITC)1X*+ za`P{3-S3kEqhk-r{UvMKBDNnp4cw`$BQBVB7tkGfcHrd-V9#IJJ3{ zzDDc;hxyzej<+BS>wrh8^Gt%h|96@nRowrk%^Cww0nnTV2~ z;`1n+5p%W3iTHhz)Xd5ZktMx~p3Bq(s!yp1uobME@}R9W^j(T`@ke>dc#1=}j?|Me z{U@E{!s$U zckLF`d5-N~Y)Q%GY{Vt=SF^ECt*h$IIc$ZodjSkr(7DS=t-bU7;RL+E#modQFnMZb8&Rr29*#m7`McnukZw!@^P_|A%?^Gw$-oe4a{E6IC8GHs@ zvIG*os@CNis@2K_BV5_GWsx{lixfhNmSq^Vf!?hT`twNDrSk(kh6_vBXSQ2VWQhnu zacd7Xx1M`T*HYU`?Z8!0Ro?C#E5HY z;|}TXRCH=GXXN(zGfAj4yeZ^Rd|hv@TM%RUFml!YI)70cpdFU?wzInur_06fmCS7I zuI(W`4>pWC13ctk8<)cCR4;6g;3}|w!T<+D%9l9=(*p`*7!H74@QWIUHfJwx_Q#K%(7iYiI0jFR=RK_ z`JP7K!SD#`zs{zb74`P_Mj2Q5jctC&{uccctJsI#5H*vuhZ3Sh#L%%z@~-=*(3HNH zr}Ge?!*>!<6_3(qj7QgI*2Fi2Ho}&Mfb~8$G@D^b{MyLJ z_aNe~Dd|I=F-@-hVP1e&PG6qp`b02s8-?CMamTlfCr@XJUD*YA zu|=zZpuvDY&J3OC3WZyU?3D3faI1_C&&&zg|=Wn;-mIWpYci7w(fBW|AMoge2mE zw%$dG$tkKVY%WrYc?$HeFhSB#X$!3Z7pE&cH_R1;6{`+;D08|@)eiyOI%)5C-XPk9 zsp~4?okBlaY#nw)(Do8@JM*d7f(2OZLM}O?XMgYa9nr^HR;lE==5*$bj>o>+G91VJq@1idrwE7Jg&?pe|pL?S^J~%Ml^@u19>_Kt<|qeE^(rwB56e*y<=QYmq`;+`pw;$jiGV{V|15`3EnvG8;*%hA3%q{?wx^Uxci<|C6VOq zi&*wdzS+~IBSDh(au3oH|AqJbl+^=8mcpXu@$@M*#6K11p3hmc$mK-jZj7cq(B&Hz z-7pvP^iU!0&a#lXyQf$7Vq*>`gMpPThc}vKY|8N3`LA=7TPOIt_JAlBfbGEvk}Wll z!b4hx6lUSI5t(9D`X9YQi3;&w&KtG@h{)5*Q9sT5-Zi$a*iyevLm4o-wq;qFq?H*- zIf#0HVVPiXngMpj4`S~$oE)St?q!DnGdTiloI*&&65M32B63SrAzxjjGrDsg@7y3} z9*>Q3nh)obd~@Ycj%2E8G#8a|9EYq1{8qQDug2x69CpvL3V&PnR>#^Q zY~suJjXU5^5k8NwB~x2s@UG?NI4Fzv<=o9ZpIz3u)}9F=W{OKbyVg(qX5t>$&j;}! zDGF~E5b`#gYt0X=$atKTafMv9{^I;D7!c7YSh)%^$zeKdCX4vSeN;#8eHTo9@cJm| z9gKcOxYusAa5a&jaCOWr>RmxoFYBm+^tZl-7cxjCx9gRx6au6q#Fp!SgQ`DZH+8WC z1Xk%VOV~T>KWtbrKfoCI1jaap7eG{Wh- zc1v-+!=|*tF}#z;f2p_jK}y5SsxrGca#jFHVU?onJu}vILhP7-dFdg>pPi9$H$jlS z-~U-x&{zH8S`V>Cmrm6eJ)cq?Uq!(!I3qG6s?1JG8Nt=G_i||dKV^xJ0}>p*K^NaV zt1DWv*Xdkp)8Wf#VJUO_FyYahAe8(*8!|t{=4x9mE-HHU)8Iq;LorAldeOLc{-+|S zxakn2qw$t7zzfUmG)3eTD5!15xF)CXo^`Si+VB%?&%lz zVss@tL$}^WSSB0CwZ#P@3IP{L)Pcwo23$7ukm^oA7hg1N0m8!eS|`Ra`c1(YhvZ|x zIL5_5|DvUI=P}p%fyNKcP)MkwqE><)%E&e?rIKE%McD@+EkoXW;}tib6EmMJdiLY3 zZ&r-<5TwlNVd{>=%sSB{uf;v`*(fiU=Nkbo#7}BoDhrIyFh6q`)|BwAR<_SZi+lXO z-n$*dw?%H|Xj`_EUXKR`MF(&5V`-?s?aLV;YiH45%g^HU{&o=*|JD@H?}?fj+hRVE z{I9XHdM+i~hMw@-*sj7j-jlJPVfxfKR$B2R3NA=zv?)8r^Y97hW8d}-fH!JOw z&TZ`iT<>3>>;mw~?nVb81eMlYruJv|pEvT;63NS3)PG6+CQZ)PqI4(N{&{{3BzE{| zAc&ZrO5}sCkK2eLoo$7dE*?b>S8_JJLy|UUZMF{B!+mCGxMw21t}0v3n0TQ!LL4D1 z-1YuumcgWaW*_TG+bhMgzuOvsD{RkB(%Vt{W4eKUAs1fTg#Db0u3G!@l9N38R|QwZ z07ja1{QFq?P@>yC7cD_p+VBy1C;JQHNioHK_let1Z4LXa9391emXqggS8-!olH=P# z_U1(Ev#ojD12pl;%G7Tli!?5kx#!qMGeN$zIo}|&SU@(}pmxF6MpI`cK--qp9 zAL8)LHOH)EJ!Uompv=h@Xh4-Es6={Dh{)<^Vd%r|+BD=``&n4f;0UQQT#7DgUKFeQ z4lfG;d8QNP)?$%vPoM1-1KiWt(SkY%&hyV*XMte)FZ<9qQuKDXeMGWqLXN!|ETyLB0E1ty(_|4-*O0ueE4g z?40kb$*>!!=D5GS`|VO`L*{XiNwP#okY2q>-2WZkr^tUKS`bi4zICPUmQj-K_j0z3 zW3&V9#X{nP|SJiHa8EZ6wpZJ-U8MaW`!(rfUo6*p#k5D3zY&YL5M5e z@wDr-SD=D~vwWcL>7^xTdC5g$F2dX|Ww_k-H7{{}(*Nf9d)uaFlECkvI)biMQ>U<- zUE$`K;e&|fuPbmj=c!k_-pK}OOt|(vvO5vYCGFl=F#9U z95ek-!3G@9>G2p=Eabh<#ng`yxo@z}&0N(@N~dUo+{au;+(L5f_@^QY>9Fi?-@YM4 zMH>&IRebqr3;BVGmMv!<)zwG7ouKIsg0hAb*%-$jV1&qXMhfp3uR4A1TEwxk4mUQ2 zdne0P80eYOut9)xW2UI!PYlKx=JQug5v`Y#z88>NF}7bv`ol&o#8cgpii-hk!P)Lr|>GR>)?HLdIb0)QOEf$QuTL9U}NcpthCwj zv66l#^_qleTFjcvvdRU7H`24f6U>X2@GEz^`WDZxTQ3*!SbZyMYR4vKV*TZ()Gl=) zd8}|}R)t&<5|=l@c_r|ZH`Js8y^NsIZkqY)p#DdbfiKgq;EPA&MqSl&-t~MvkNfWh zyzuf>X4ayh)hy4NtBuqyk(?&gokiVdQZ4Vlpn;B#`bKWgjHW zQ3knubXRpy8H|&0cBU<{vUg>If`kSQ=9U8FeukU=Is40}vxkPJ9m^tBSD_LVF$0*= ziKFUO?S`8*=wFxB=@5@6eP~>uN@{pmXllB`x6oGvIsB%8CUo(MX&}6+#;MWe#YZw| z2+nW^M$Kx%l6L>3Gp;xrBrhX(9q}b75V*1z^c}nMR0TD zvNjQgb#^C6bhgir2Es5qcdiH1=S`h%fxv!2KR?P`Ktz~V8~}lWZ>bWc@&wZ#R_dDg zG2SXaI3ZEUNr{LEpl@k)gllqJpI2n@{RuvgIlrGhd=d+%9s4<_QL9J7u`TNT=l$db zW>`17ax>hZqQ6kok_qf`|7`hh(#iidvj1Bk@+Xt8qdo?`^!Xe3DH8D}7X& zak;KZ{lxs@Ce;$6rT&)9ROZGr{6$1?r$db zl9TT3mJ!Wj=Aw$vJ_vYY%%Bj+_kg}DhG8ym34-h(zrOA|Rc<~BS-bEf8J-S>B52!{ z?f^Dfu!p#xBSy6G!UHAfF;N*3Am&JZ6#Jwz0yrBR&K)`|s51$*BGdD&Wj5Qp+i_Vr zM)O&`a(`0xv{dB{MMTYzGXqY1$H}9{fg+pZEM7p-FZv(YC#bz$+H;9+t|h;?i8x1x zGXqF{gv%)ocd+z}q9@bfimQ2Jl}! z`&e>CGl1Vhn7;1k91}p28XdtMIu+7$?MisuS_!+D?2Wq58;EF@X}&gElBuf1T%7uu zqBjO*c3p0tmhl?M*#$ob4M;G>YvPExM$Tr#2@Qtha35v4_V=Hf3?0});jcI&>C+4C zYA0svkibg!UaVTfQLW%^=Rh+-eA!dS_1Dx%LRK}sv`1+KgK_azAGqJ{gIlHVwX;+wwH)4{A!hAu`KMHU ziqCeQJ9f7U`JJzP&BhmJ7bGovoyFqxhh(RkAT0H8xf)Ag)@Q3 zcL+R-q$NUNfjABuT~e=f89|Qz-8hA&ni0#Uv=cgETXTw+$cajJ<)_pO*V0*XBw~=U zDS8?G>4Vu=HN_VX8f~nr^z@4aPbZ5#33wV0L7{PFvQ9mHBgspA`=^LF+?*#lP`nC( z*SZ0wz9)A;K@i;F8EUZy6#SKSU58$~KlUm}HZkze=U*r^jA&;KYt)7wbnbM zZ;OhFb~)GAk9IA{-<&F+&dyyymUwYN-NFz8K!j1jtZ)IP7!xR|l8lV&{f(GpG%BXD zv$G?g*=LMLl(INpZ=W8{_C>j6Ysm~Y?mWrKtn?pDj%dn5d~EE}IPmIK)>VsIu|GE( zfAJ=iaayVa&haBmG#{?;urBx#fbs%W)8$qi>1vdth9^eXhMgwh$w7~i zq|q@k;s#y6xdQJ;(Eg=5@$+gb_5fCo5MsrkiSClth(5z+sX-pY}{DD zGnpbkow%s>5%t)yZ>sA^DQ*rPXxt;L(0rjYc7X75q70Okj2AnB8369DnzS;$E_Zxr zT%GaEPY}WbIK+oPqEmK`y2qCe1Z`5NB_j`>Ess+di@$SDWUhaOJj0++Aw$GdGq0He zd2-GDP~QI@L_F~38C}I2u?MmH<`KW6lA=xerU1@SNbJpG%SjjEE~-QWu7bfPAMbkw z^$6iJ!{|9Psd%5o1gzkmkR{|O8A!H1a?yR1`y}(3;GTdAN31H9w4#5m;~n2nz<+TJ z(88hZK?MF|gp(GoJG^9g2|PKar<~S%&1~G$iIYoR_WmUFL=n;Q9m4_~G44L|<}9Yd zq|nd1M{CQZ8+zN+{RQ0Pu2}5OQi{<9hoRdU4nvZ5ZA+#9SYAz6V*;p+ zZ{jPI;++aOG{o;|Nb2KH1R_P(>)}0ratF`os#C<};j+QY(-V`1y7WAnI-n>f1r;$o?ZVFwT0L$h$? zFxAYv!4v4~bG|;X>*2G1Uokq!h#9b~_oBRJ`&l%NuKG0z`ZTnKgN6byP>x@&jh*Wb zPV$!}NZDyO?#9!P%(l?XW@nEhgPh7>enL6NJso0AuDJ*hQQCHcgg#%K+O0l(+~ z*@%EnT;?d^wk^s3E!07de;15HPtY^5T6`n~KMDea{5gCeY?%Cf*@sDhIbSc?HHdrM zN<>5mPX!2Iay?w8O0n^=;Y(o4vZ00Dr_Zw4-0HtyIIAT(25aczQ~F)NW50h2&~Aa6 z5>w6@^QBYPkg#7B1{Aa1A+;1DLf3ynaqi++DLO=|+LNx1OV(Dd6QanW!w3Y$0_#pg zUu_Z(6tHXexi-2MM5U#EoB51hNdb~ zZ7laGLTqpSi?NpQJbGa7*yKN>{^H?tCCo+tp_AIduq~dQ4NU(xD>~HVL(R0cB;2%e zVsUv9H+GI@A#zZgo4O{--2yeY*<`E{?(i8LzyFR$i>9UlAq~b+u*YyzkHlC;PLx4% zMhu--M989;9qyISDHi9AQ{@k?=OcC&hT+;aRlm2+X`F92om@*_cHLZ%=kwo_fHR)@ z0z?)c#tZ=%)D7dtSHh9N)B5G1QP7 zIqOK3|A*<12JNs*3O^zG9UB3RliDKERgPex>R+WF*aPtR2V%WH-$Iyg^&^k8xwpxOb`Db#BhA*(B3d_uHP6Tl}JNM2IzN{N#-+LfF&=e zWPgX89UtgjFAy`Hc`GQ;<-hBq9fr^Dm(`*amhW2b_kaAu zZy=5NuMoLe*Mt5iwB(>t@CypD6*BaQB7^EvuO=T`oo^$$MuNl5H`foYG?T|c_CA21~sgyd3UxP)c2KxOSV+`C>F!J|p7AeMti&OlVG!!GG@z+K%1L5W9 z$qkv&^-#iYP_)Jtu*1MzA7wl5{B&)ZF?5SZ%={y0JGapeECE5m^mu$A zuk{MA>knL59%<+(!pgt7$aM>;#-RVHL6 zrlt$MFQ!iz*gB|9HKbFU{PR*s%^j6%33MQg!e`Qq;o61OW?!!z$~!N*SQAlmQ`-Hn^$Fwq6pfpZn(jG<;(M9x*B7MYz8z zsNuL*2#n3r-s(8NP>hneKbxuGGkseZ7rD(k{r9_5%{Mpmhnt*S0#aW=I{+$|7@l|< z2u?rbEl~=Q2<$(n1Odc%;H!xg;OPTmxyp;A8ZF0A@hzwG3e`s%=25hw=2818#o|t9 zWUt*Z_iX5>Cvh^YXknZ*`?3H)3!;$whk*JW5W0JPv4eyKyP?EFHac}=*!-m)hL2?* z)}mzcbvAK*6O6odocHBh++s%E1ME>im)LVgz&)-P*wUsSxjEgxJw1?29$U3Yq@Ql! zUb*(cDIY52_@R2HMYwBQmYGyK#-#djv{?=x@H=0*Ww|x3-c2;fQsYqTy?8?MT}b3< zy=*z1d*h73om`{C9Y3GTZ|U>JH^(8CU(@;$9gg!)$Yj)E8F1AevYBmXK#yY90^s8| zw0vCVF|<~HS}+4|3k`LUZd`WL{=tL6Pc7Bn$QJAvn1WV2R0{bgtJvp!LP)}HQv^== z{@V`QMOE4C6~6Z(0e0wn?uRpfUhSLp2z-6(;g4Uzs*jMn^h`6<4cJKZ;qReWH-mOe zjITSgY=(E}iTVg8g9)HnR8|m?>JoA3lbPnY^U$kDFWf;A< zSSv8v`B%?+;-M{MdME7_vodk1ggq!&sHlMQJk6JBNh{Og@cCgNNU&5*P!-=y>)gEb zt$4SML18?EE#9479qV&k)km%+{0VR^`Mr5u=0_mudi|d=4+P7{7~QzsknuEMI#9|v zQ6_x{XJgJjuOtQyHbgl_KYbpC2;f`!gogf=tA$EW?|XF(?f^&L5vGeF`vNFj#7PnQ z+$C$zfW2`-cv(B&*QKX1AaS3c$wNe7wVv7}k7idj>Y0yY3Y19fRG?F{2J(s{ybY zG`ji2vy?-0lF0{Q10?hf0}ji8XxI;&kpB`w@HexcoFs*QNO!N&%#}oPn}$d*WBs1M4lf+8iVQ`zipj2>s4_FoTQRLl;Vi zwHfR&!;dqTw|^*PEc$%SKU?}35x~to{yT~VSQyIZrxz0nBF9l+hh`5}isUN7+d{Cz znVK|@Gj;DM&s6Cm1#OZ%K8!S!&!d3#RIufoMPaRpNa0|EKp|X$@(_8XO@Z2}o4svj zEhc9yTqC@3Ng{LF8siX`2;*`KW4!g_#6<{0xR!q0MyTqa{M*6 zzsE;gWtpKG_N6kICx04zqwl#kY#VkAbIo*yCak;79rm!dwz{adscTR5KI5> zmtG@D7YeLDvn}m(D~(tx>abU`Qh!%CRhQr&LII&5l#_ha+@2pEG1$4=_q=KZWI67B zef^up>I#{a)O|&=Q@^pu+oCJyR_mF2=T~WI^0a-&u zYh@Kk?cpsD+Oo}d{?pm>Ko|P^$nu%l^`r3Vm^ZDD10} zm5JJ|;f1pJSV{j~)PKkmK?iq-w&*(ONk_h?5XpVwax1?5+ngwMn{ES4^7^EAlnghkF<9%6LyYC#=ecbwsiRAJu!5hT<7j{G$NlkZp^Njx4o3w z9tW#BI$!q6{>6VAM8JS6Y(0F3fVsd$ngSK0%wy+V+T_S`D7dFJccJ%J;VP<;D;!0! zZr+c`Ze=0F_(XlOyO|XQXsoKa9JbruFeDwH4N0LAJC~}$K-G--*+d?-QA3$nye98t ziPcD=kdMGVM?|7BzAP>qB^6acmA12fL&e&&Y2mmXVM*7t|KRqv%Lz@FW|x18uQ?{G zl%!a({LK8WA&~i0<)tqD8X0!;5f5^#Xtm}y+(*pLSoRz{PfyOA2Ml;QRHl*8)DYZ~ zHC+JAs00i&Y8VOasWa2ZPgHI^hBq3--Vfx6{aKGuSBUSmxfJeHPrmc%Iw}W7N}Tuz zC_-pjzMh5Z+1s+#^yphVuyn>{{|w<*U>tFu9g3#C%A52?!HxJg^~INC^vuj%Pse_o zjivH9v475bpr$G~Vn<@DX8{$MPw?KwKMXKwhI;SP?8@(EUl~KIaH>Ii7Sc9O(zZQg zARXKM`q8g4VSMbLUB1`;i4>CE>>>9Ez5mHA@6T8xR{hiEO{g07&D&+F+NZ9LE9b>W zV#g=W4c)LZgH%W3dGEQ9B^<2b162Rpo=;{4I8rY(Db=J+)ZX#9$0Npdvf+aKMRYV{ zucl;o65eIstq|zB>V>v@mhQjW&T8@07=FeaI!@&fN%=QnUixXmlU{D!05YZhh_>V- z$?xc22Zq}gA9gzRy8s?YPfxERKpbzdv_`*hwvn^wI++7$I}nIS0}2hrPD=`;CmmL+Hg1vH9(Syf`*QL+fsJXdAmskXxCChtAIL7 z&!j|n&B-a`NLh#E>Y&EshW@(#W?j(krj@0cA!mSibW*}{l)CU9p80*kY@FV_j&LGgXWvHomlo;78BC_+d1%pD?+u!961*SR5qQ5dnHKDHoget^~$@pK5B zFbz9%2m=0RmI`qsd_=)SL$IXEsjiW`W_y1<-r-1KQ=hdcRjK+9$@|4nPjdr8qAU`d z!@X!zF37#P!_mKB-Km|5w@_^PtUnOu$ zwaEhV{1XXScbM!N#<@YO9Ic#Lf$o_gRgR7hC|7c)$g?yqIFcH%Vvcqu_0xI8<}2{K zlqJ0G13_@nX_~=uxkmZw?lgb0t-xb)+Mb$`~@`464FG zC5ys651-wx(=ns#c$&L4G~X%(UMm1RNOq&+2yH+fXNyo*nW3ar>=Va(c!7tqCbJ)U z+MauP_H(<6uD-j>g_t#~P|lil-|MGN_POS~v|H_Kn2(9dZUtC({4Q5MDHW;;SMVZ# zV4%w150+8jNlJf-cA;vMp-ZB7(DQql z?|<+R-(r7AoAZm0coN_K(8+z1=YyroXwP_2EW`f`Lnj)LqRK}`YGPU$zXu9Gu&?Vz_wDr4%DkE0p_WV z48|iRy2}OgcfI}JhpKI5|KUT$_A^psu^2MWCGhnuUFzInyO6xj7vK|RwO_sfz@~^5 zVum>n-{Ep0Vs@41ICqIlDg<~3f1J>kl)AEm6Vh&HtvS;6WlJZO9{(ACe&eaX&s9p39meyZda5q|c zV0Q*sB#$kBN}5M(rqco?xsP%`=cknSGo*-}vJ-1VG#*Iry?A|lY4_|)Bs_GPFVak` zRrb$E2Zz*+w@cKj!77%)xI#JmiE9hey`9d(~izsQk9b7Z}O>r2B5FY-? zCo(%S1v*~LFrsl8wq!!Uj{n!g>u3D;i*ytc6C+zHDU|rQ?E9+)#oZUEJofkvt}ZLo zJaYfIi4o=tC}Bk0-9zQ9Q2jKgYuk8iNM5#=RH|PoALYcqC-k{(ymlAvlr23-?PI>( zfM9Q4g_&7ib$-q*vW}l)eukWsIz`)CS$DTR(3>+~*uEkP^>? zmBz;36_PrB74{(RKB2(hJC|r<`-kqsZV)EzPK0Y-`;gkOc#RM_`1uCy4Y6^Q6okG2 z`{iZ*Y~;bk!Z6g2fBH}DtsRoaq|>(wWw5=WOa~F>e6ah|xY!kWFym&KRjYM(TVI%# zVf<5{z-DOf#Hm*=OVrfcDSI?iV4wiChRTOP@5M81tG$32vDWJ53onp_Mm$?Dr7j(i ziV9;1!eU<~qor*6j+670VG>chAW1C6(5pLh8z^M}UDUJ!Wf*_?2fDAtpVeF=hU z*CDdG{S^Ye-2i>Y_EM2`DNa}c(y@Wl$nsB>KqLUsO}W(TBM&gH;fqU2jvTiLC0HH# zqDKy_BP-a5BfF53tws=~;d$4pjxt;0!uAvKbNrZ?=oV>AW+^pzh1V(DuojUlH#_JU zeJrs55V0$n9UXMM?+Wj`?K5xkA?@S|<3#y(iicMEykS9lWLGM`l1O?;4E>Ue&kgzB z@-8?Mu9%DDCHyWYIa)bzm!DcwIIhf>pYR(i>#r#P%F-PA89+<&WZjIb_ef;YTUvC< z=29xsS|YcTCI~zTx_${pLxbCirChPc-#IR8L?t1`w{cs1Wb6I@DG`5N(N;be@3T4k z9@srIzj9?qmSEZ}Vgm&VrCFTVtcTDNbUtp^fWsM(*15jUzO_7X;1}(v*d^U?hUW5I zdAYN2TE)2dRUq{kE z%=TMLe~|b|73EW{g9 z4bx+N+-LW)_dZ&v73sA|gUgY?G9>@Ft#-fI(OL`lx@ zxw?CX*ON0Kt)5A0eDU4)kB$RMB3~44v0*Br7gWReyz`mc>SXE4>;o_Fhs|78x4qnc zQ1%6?zS+Rka@O-j4?oR-;F>Y12olS(-NGyE8R*#SxpjRw&=iz@GdZw$K8i=$CEa}| zY}A3k%8TMtB{f=?O3FXLq_%*mZLdRU=dA$R8P=FkMpn+>{V^-GS*+(p6o3b zi2BP{qgp9Dsvwy{zR10aydWy=wus#9ybkN8jL$s4f&BM|0))-GYv8G=sf7TMm;S01 zC$gn2LfF4%Xt7I19wf2Us2yLM9iqcpAp5=-StOj42v5JZEXHs7_f)c}xs`va4Nv4N z)@=3dHlctx7>mmMjNp4ou;0?~J$e!Ea6wyrX{Lu20>-FJP6TaX={qVyjk8{K*YFeK zX5n|{U$Z~f73J^|t7hKjto(ISR3q>uRYtuzhDamGY{qz=_&HPe;0dMY0nasY^9hkp zqz`udhAbEGu5hUu908UqkGCC=R|$-yY<;*#I#Hu#avFE9`O5|F^4|?=S$UB?vqIIW z;<7Cu<}68!W8+CB(bR-;{HU72Nf7r0;t!b^sh4+H1-W>yx;vxbpRpX=_&0x z%of-A*!m6mLxloC%rr%cX)EP^>Dw>&o*RU^?Dk`Mn_xeKOt4CR@nXbnH=^Ga)Xi=o zxgKTXd~s5WZW`zw+=E{)yuTrP6brxJZr&?KiqN;yYfm@3Fetdym)$O<4T@tU4qJIg zz~m`V>T@;U=>aPHxSmsg`mp=6#DMA#Ep3m5_t?qLJQ&1Rs`=!~y}mu67I}TrUP=Y7 z%s5Gv=g--VX`7qS*%TPe+l;$%kYf6OJ8RcRF%06{p#+gndHYmT_^<^}&wHQHSaKMK z=O9Xx#3DV4H6Ks5?k??(A3N_J7t*WEC0jj zeUS@&;!U6MrGB{OYh9KE4IS91ybEVKyd_v}FOL)G4SDa!>>i%t2dn1~{9FL`!?8D) z(!h}EiFZ*ioM@|L@9rMn&Z>;V_@?^&z8*Efm;AfHd~=rof-m19X?dHeBPaYQJ!dlv zE@8LuR5ePr*H^;Io%<^(x6M}9Mvlxd8<^=exOC#a5~L$X`rk4+@US*_=-wXwORk@1 zHJ%Q}W=jWWX5#&J7<)4x^7oBrj}+dP@)y|I_|Rx*WPN0gLZ2AofD8}mNFO|k#gSX0 zbSkvpnT1n3&RyQ$lM>*izin4i9{^l9OS4O?(Az}p5maEeY_tS>s=i%uc#$;UCEb{| z*zf5t`)_cvEjovt`*G|{`UwQH`d^~k*BTwk=E=;MTJN=&aI_MHl*T;4n;y+q4#i*UA}oBcLz28P%11i(muBz@FQ9Ku?m3ABB_|F-IBJwSHl zXOh8~aJhxygcV-Q<>`};u*{x^wEEd1eX#znKS2=j!3$eH*y7}9zUxN6V8$xz?}=nn zACK^L*G&SmnxE{|WHh8fq^4^he6t|mt)hU{@P&oxgi-wQA_#1(E{>q@UJF34KKA%d z7bLG7UGg+({=C&YTztNjy*7`It*~`T`{3bck}Sgx{1*MqvKLmE)`w07#ai$d^8S!5 zA!Omwa3_iG96MeBQtZxnE6I%+1@Vcuvd@DGc z;?XcXIwo2T&x;C{pVzW(?YEMLwtI~enF*m(xMxw=O0sQK{Zjk$4_J}lv-F$PE)iZd zV-3ih@QaXLNL3EKA%^E`U_LBv2pUI_CuM4RJ9jCQ$8P9B)18j|;QyXowtUQMDp?2- ztfgUh-TLPga(B^E57$@$=@Pbey%*A%DW1#7VtY~LP3QP~P5FC>W zNY$h9f*xRgy<;qG6z#B3mtqgd&X(=E*DEBiadu@M>9UxkdAuo*U)Dw^Sd?u`_17)+ z*h84jqqf9MCBv51qEMw*aLmx)EM2kAS0t7 z$Zy)1y~E`=Y7)r?)928Kf0y^gq`xL$bmA|Oxi9`iKJheJWw@zqp3Z^6Y*cRw4^ao> zlkjBo9Ab<~p^{r(P~7i{33NZ*xcvrN2_@ndx^Cfnm1?8d)n4g!*OphD;`q+k+rS7_ zZP4@yW^V z`~u4}Py;?j=<-S_rA_sLuh zA+voLcxWniFm;pxRw1XGqQdQnK30VKcn%z>O*0?b-mQyw!0xX)F82?!Z*K#b@ZX;~ zoz9B#P^)IpXJ7cy8c*gWaKr+;n!`?PWEz!#;V21~g>M7^SSgl=0guO2V?(Iu8=1f{l;Own&GW7IQ^ae=)XpYj2vP#s6hp zs$({{oMBtnIm|HokDhY1rji7E$HmoGzYN62#a+A%UP#Z#5B#k|!mhSgWl0|UVbeQ8 z2Zdv;1ucH&eiL?vA+HU#3BDs*RD05J)S91I(Nj@nRE@bP? zi*PuFTLgBbu{fk3E5Dt`|Ubm7Usv?4M(cFR*D+lEcOw5oQiH(Wn`$v?p`~ zt6$~*tD3G$EnRA`g*X4Ucw9|4?V@O~f{=PSt-sadz-fVQ<_9))qmX3zNP>w0oUmnq z5;>MCHCA~R3g0!UiX0;`=JR`7g$<~xj?F4D*!g|{Rs0_JRjJ=xtk>2dQrez^o zRB&(QPui3TW(HKDlD|MAFgc@bP51RM){X!}as9`eADo*x!kZCzuQ6N^&sYv;?-(~? zp2;-blL2i+adomc3z(2Sw>DUC!&%r=SoEKY*G&l3>OH0poT9Z03K?E{BD)PIvx?Kj zOFyb?2XU#F9W_^7;midu6uURk-TE=ISBbKH9k&j5v;gQ^)z$`Mk7tq-Ro|vnM_7MW zS=7qFh5|(`FM%v2)n{&$W?_?daXGXhch&}l`K(ulB1~=D2Yk@a0(54pzy8mIL&eL& zott_+rAeW~cKWO#s_G{gl5u0d)tHpudbKkI7M5po5)!ZoFveHbw87dk8PpmI!BW1# za@wXMAaA6LW-ga%l44LbkKbapD4E&Q_bQlOUhF;-VTH$rwZGS}PP-$h1$BQC##Uj* zvOLI@CMZRCJ(|>yD4bf(2qI#fPsKt!&_$WXDjLy&i_B_I*Lhx$MS(u(U7#@o4B)!V zA_%KytE(PNN3q9pD_=lqQol1?Qe(p#U5+LHeY)9zG`3->@z=*ZYWYq{B0C;X!&Y6Z zqi%zFDTHnz^M7ZCiX^gPnUL3Zzo~bnbvTJ*%r>5uM#BZ{lrqC!@GEd@bmzcqGKx6>kKzXfmxzNv8Y@m$set~-0eoW zeBF>*yDyqj2vvSU`#1dp8yFr;GTn;^G53bTnRcuXj#V_!&d|oz3 zSn>k8z#47N;)0;MU6df);@NA0K9v^`6$)JZ&YZ77Q}7lgqv?g2M`oEJBzB9J?q=Ji zna}B3Mir6Fm2j=pgafrJ4K;==BOAsl*ZBZzBVuS6{&B10=f#fWKe#d)_ZJ z{CkD8abN5DHHV58)@*>$W3wIm;Pbt8xpku!c(n z1N7t32gsL^ahHiP?!-){rjXoiSX)EGt|UznY2XxT;73J;X{zt8X@ymbJAB^pSJzv`xq&;sa*o&-wFD(9vjLJB6@0DJYF=j(9Y#rQSW$0YEZa$5( z#44uN()-jlI!%&+jef#I$3GlbLT+{Z?99DTSBymBN(O&Q|K=1x8I`jad!{>%SnQXY zLQp*l8JU@GQ_0I%X?h?V7W#*%6I?J_SCoX!+0$#A-=+S1(bHx-J`COY%_G)%&vZ^f zquJY6#%&^php_Yy9sm^JQ&Mq%Dq@d(kNF_~e`q(kRx*`sogHF(E?sPN-rNuFxF;n!(T`_y%sY)(e%m zJTeZ#NAN$l3Iek&;u27SDLEVLGG2{0I>k1W^O>6j&oVHzj+p%|+YS(Q&_l7fMfh#E zX-0@39%94X@;s`!^<(>Eq1m|Ija4)oi|egU(Cz>Tpo0$cTOJA&bH#>-AlBs%-ft(( zk3oCH3>TdaSYli@cm8SQo2`S(`?Q5nuSnQr?|X{i$Vw`54j|7Jfzy}0ntdB1+vDS~ z)a5GF1v6+6xZm?IgKqF2d$o=qX*_t0CJw3YEwMK(A(THDGVrc?$4OUYHIrUVxqxzC z;FmM^4RP!GHhfc6%|l3x4|F;hJZz{(q@$KHs;SJ8s$qYxR|GYF>gY<6{PJEu6Ylez z-Ft*0H`PvtQ*F|zJ-cPl5l3A3;adwH3{sl;T*Hem`9iVj!h3BYd|=+Xdds0voIK8~>y+}9pFGtf{YDNg_OarTy%`}#%`7h0rxtbNf zb*Pu|B#m3sl9bt@>kTX3aYp&m^+NDtNFaHy9&$w$?%Hj{XA3U>S>)T3^@{FEd`nz1 z9*=u&-15Hut`f4eE1m8StS4#9=l&)rTfI~L$m%}HcdB%m#XN|}vCAwLFT~_L-wd}* z6y5`XI|`_iY-}4|Krng_Y#QhHWdI~3DNd(XZoWrI<*{S0MzV;Jpr9gX|1DE6t6w zetsD;FE|Ja8ONK_*WEs5DYFomwQ`~5*8EDYIKc8913$#A+>Qa?G*baW0LIVAV55VK5%4_$wH01YGx+D|(0C(^PFCU5r&+2Ler0u)h&-OBh50O&F}Sn^g2jVOKSa}G@?)KJ zt=>NNlqC|sMd?P(SR|wD(GxyP}*hs$eC1sTH4wb#$Fj)@q zSnB>D4e$E(L-*z&;-5+mMphh@Bf@?3F&0d#xP)BGP-Dva9-JH(AQ*?aP>K{AXT=Gx z6q`s9#6uB-aB$GT;H&-CwCR)PD*&;=sp%v9k*4(L!K%<-GS5GnGa9R9Zm#$#z-IO$ zrYNQ>jJrN)nu(MGP{sG|$3@zOZ1t!kK7s;<>30;eK27;ftuhi-7=R?J`U}1t)o)5O#+vX@g?qnZ3 zb|CtROFw;$h90#d&%Ek{RF){CU8?29MTgGo=B!{N$}Ig7_(Yw0bU2U{N=XTTgxnaS zwK|pDZFzz?E$@|g zpZTtuE_;9m%lBY$?&52}F52mKidVWZfN5x5sBHRTQK+6$l?GZohy~D<`su2Vl|D0! zmeyT1aMCf%?t-3oG7uet0JezuxIg(xk^o5wVV^m!1@TiWvfzIQg6jW%kQ_tgz&r;) zXq64m`}WSL-0K?z6X;PZ7(HFf^Te`f9@n=DKMw?-eD%GKzssaYW`PII5!P&sz2DIK zm*jcqNBzs!y`N7xieIiLDmLhB;G81Al%>uQM)>nA=ymE6*_ASNkWQaS6q3R*5uRP5 z&03?QIO;`WNk3!_$aY5)JX$|e(OC`WzxdSSa(q3Bn>*FjWJsnsiy!EaQ!$98%x(pG z7-6HApVC*eijn1oJ4O8tWrOJSRuMw;NCzatY+7o?!U$+m9NT?kgekNx_z8XvpEq5e zEItQPh7QwzFQ%iXJd^e(K|S~HI)n!4i=zQ`%zx^;%kW`jP)+$I^UsHwrnJ#_rS z1FGM@Y1PL<5Co^*)^$AwL({c*H00Pm5O#%3RPwHw(JvFM>QTr9YwToDtJ|@qo#Bo- z!iM{{rWD6(DW!_kWz?7Jsn^Uo75Lvz64g!3FdtavADQt;JJj#XWa)CDm?a{F@L*aX z(vtUIcxj0ooRt^7MozW}Uo?2h+{B?yoW3uf&VNU)+vZ~+d>Kp0u=LX@m_HhQ>EC*B zgbRq(Ozt5mLM8P}qPWr_pOLYG0LD#O&OfiA>^4-jBt0A`9*z20Y?#r>aJ zewa9rQ*yBWaAwD}_kXnj9ih>B^UdCYbokexcsw$oh1y*SZ6CjEvtH-lMIX8y zG0+@;%V?{2#L%3Tc@Nr+f7kEiCD1vO+Vky_>$*UpisxAdKR6^o`m0cZlM9M&tF8Dq z;g_qI6-e>V8^~O_;aX%JZ7&i`>tG~pXTU4Uv^1I(K{7fL ze-XW$>?)t zJLJ<^B|_PX_1qtI-0olS-yh#oh&wF7d#=x`Qb$|Lk&8BL@{r_lJc|`RzYH1we^8DZ z_j*_3{nY$@u?8t&utCk=g>`r#p%hrCE(}=!_>GFgn|Ff6Z4I@)@2}eYulrLK*4(Ou4j-xalN)lun zpVW5Mf2x68o;989B%1x1*2iXuhUU2lQL7xItup&c>~m_HCn4+T@(wH5#5ol2h-en~ zj|1yYQRA6;SF%vyNE@zv6_qN@~2P>@qpAp-&@%v*Y{mZJpf?#aBo4iV!RL>F-cZIQCh{%Ky)Nj>F+cT&wxyocQo$J zh8PWsB!5w$eNaHTj6Zf^o-fvk`elx^w}e( zuZo+={I5L%m>iaxU=@BBfId*(X!_32tn5CoK$+#4j$4S5%_~mH{%j&y(g;-A1JWH= zo}adxmxm+kMNJAf#=(N&C0wSNVdHp;9A^4cBzOfqXCDYGh(#=5@`W?81!NAiB?v4VA`M_1c+pC%nnnyo4r z-x}T7*?Q5oC3gxXsJ<4ST3vGuPshi1%rL7mG!vmWY?N{+^V|w64?I?t!24C%%Xq;o zwN`<&Hu0-qcJwecs7#0B`%4zwr19lo1wyCX{#DN%@(cxhbnCYLWU^>Mj|y$&D2_j1 zwV^1c!$r}DlHD~~!vIQ!hYql&W>f>%WbogTV5|T}H#T=fWNs1cFL+^_cwdtMzF=%0ZDBfsq70*qJs2goVtrAGA2?srnSL5gF3e6^p0$?UyfYnw(@hx z`ggCP=iCJXrBBTVi?>DF&*?Ut;;uiR8Wzn=m4#1DyfTtOw~K9Ok(jsWJoU;lMJ6*h zX#|lAA7&#d2IJLX^!|%`Alr(Xj%N{GVAuRdcddwP^^JaS^xY6@- zJ8~`hA)jZ1Sw@yH-W;_HO$fAHIA}DLzfV}J6BzSes9+*MgHQZ(6}RJ<`Dp(`$ghf; zOMY8EgV{9JH^8LCE1*8oy&t6IS#YD}b4qc(pIk=3^+BjH4wAClB`?+{K`}p!0KF@w zo3g4gb=W7cjEApi^UG_*n5S{kiUfD7o+uFXsd+LAr z<CP$mau58r(@H~gnd7|LjJGORaLZzCoFgbDYu%kX{1`58g ziD{nFgdGMayD_Y=ZA5zuTXMWJ53Difs5{deH<4cP4zLUpg}?aa_DSJ9Y>2pWb7L#> znDxl=O6_S~tl12Qb^bK%l9YvtS1LLjD+xA=&Oo2#mC}$4V^&D*EmBIAxnzEJqn`XN z#@6XJ|HH^kq_zI15OHP*RPb$WTib`bDS>0bV&MZ?ycXtyq7X@|&s> zN)1aFX&D(s1)BJjV|}TJmUE`%^rbse|CJ%89Ad8u2tCZC@+FuWq(f;L^Q^YY_^BO5 z?G%}XS8n`QmpvC>3H;cZMoAR4jNm90sorqpcB4{0_AiMDd6iczxwT!MA{bW0;h|o^ zjhcTe*!xH_dZzYcD*r7T6Zj&6qTmF}T8~hTjWRr++_BRa0&RLXHfT>DgPupf9t@6{ zf3wdaGTW{Ae!1o)q~V{R#nY%=--#xOI=OIb<-ntYo{JUPXzZq(&%MZ0;WP;)nn1X& zE_C9|ud3dUzFwQsIjqYrc?_{Fr|;9<6b-U>NfZ|GSa(;tgZf*$hHQ{*EmTh0E;ZOA z!AFc0DZPWs%OdbjUD;2g!O$|lpJo&?lwy5uD*<$L@WV2and-n0^;Pb`r)yWI?^ic3 zDCP_v@9ggxUR-x(o_n`NvL)#SKucfT-*$C#wBe3%;Ie$Do~VU?=gEO}g|I89@~5Qo zzXz1@oV1F0n-=3Dgt8ZFjEl`~4AT`m1?PFVo!)z{@IawP1-b$OT2dgG z-YeW49l}w^dxxJ4gEk;W9W{iCn-O=>`G4&5IkqukM&jF8i|Z>OQiP1o3aD3&M8Rr0 zg*g!O!G!!KDCET1c(_XuHwYajZ9 z0@YbvM|fok9UxKD-FDnZLg}+ICNQF@ch9>IGB~kZ3A=IYZ|Epy9pG zv?y@>*Qq<=JRA(W0L=*?C`-Wl^}<|)OAth18fzx@!^yol7;(hV_Hz>#lW}&g%w=rw zsnebz(yRynOx@g?f@4*pT%5E#Q>jh=>QJZa_R?#&VLKYnDCIrBO)Yzz82n;b4dFwI zJQh|odZR1RK=CmIC7fA*i(bmI$JI<}k}{gcO*8Uy$@^$f*n2dwBKDTmk3+wjP0~DH zx7*Y#gteAZ!j%cv@d`}8K*!L2)&8UpP-4#tB3>|-|X9Uk18n! z)QG|KTjMGhQeTBaC+%e2Nzo)R00}z|3m2r)GA>OW1><`lq?CnOWWJ@KoJfplCR2nl z*$g)9to&}sqgdO^3YKd*2>!b<;KO9WX}|mW@DTQJsb}$QQk+{gsO!ZGDlF}1D?EGhH)Rb6QK;v!>igY($tXE=>3DtunDw zkMnc&9{b%?O?jK;WDC>cV52bXc%tuK`IsbOAZWf>EeM|8x%kEj%yX*#X;k)souLWx zE_wU>)?;9{-V73`8UGRgz_{hD6e(}mPP>{*?nb}~rk83+ZINMG6O z=?6sVRzL8Hjx7d9pYbv6(?0Jp@x50D|6c0*AfncfS<@xTg`@oFNRb`I0s@f!7puWx zkWkyP&B-O^St0oH5mfK&&U}WN`_Ke&y!q(f;;lAGU=0l~ad6{{zn5#w%|m+@$I6Bf zllxyL-6KEVk6-xcy?*x<@N&pIi@;u!BF{oZnV;cP)5F2V@Qn1wX`x{kEH{^QcC8u| z$jS|C+y2&cZ`?Zl+){u8H|-MqV}P8_%-h;efPK4P8#x)&r3iMI>UFNFW-W9TcT9hR zDI}Nwi__4@X2xaSH5)BDi>A9w_LMcQ0O}+gkzS76fCwMmM~_QCsZ`xaiYHjQjhm_kjlQ)l!a>9D+cj-$q`Mc-sO(KT(&oLXVMEk6Lz1Ej zU8yeh$IUed@_o13ROH%von2P2MZXKs5B-&{L{{nNxp-I8VQ(0vyAQXBQ7buqqj=(8 z_rJBMaH)P!D%md&)ef%{%rQ($HJk8!f6~0uh!XQ#=}CAZ?a2dy0tg2N#h0ga!Hoy^ z8u>;q{zo8cBCW0WulV)hk`KPg?XsOMEPOd5mjh>TykW!uom1BZY#68;x5;Bi8#CXu z25+*ZSc}Vwh!kT#XNOLeGrokN>62q4aLJGOJS7`op67>y5d{kt@23v<()$y#+`FT@^I^000vq3oqqHD$Rc98L`zTp5t z*PuzczTT!cbr$3kmF`$M^)weWa}_sgLPeh8HGMkc8`J{G(_QO3XUxND)}vn{r~iHR zAIh}Fhb-77S$sw;tPj z#`NOg)|MbIUT~x7-&4t-inNY&@I6&%^|{6)J#*K5^+3-tDGYaxq zc|8;MUD?8$%ceN8oiP|ThCaRx7q4^fz{K)47BRESoQPF zQ1k^TIJ1fYIoh{*F<(6ov3l!oNv^wl`5*%!VGSMQfC0a~+Fnzf(3HMT3)pz_T6%VA zrn~Oe$Z&3{=h~qysBO0_$;{_l?K6`Fzdyz=IMkshZReqGRQi|VpLw2wpx~^`m5A)c z{*rPhp==Zq`QT4;A@;OQXdTtk_2%1F4>VP|$;@uMRc6R0kZ(YtWv*8tzyNC{nw=%$ zC)uVS^*$uxnS(bmZ%E>&_t7E3!?6qs9 zj)G{N$EL&#O_;~Gi=UvW-Z57_&_AR7>X_NsA8VxB{VyRxPUc1!uy{dg^+X#oBV}uP z1@V7|f2t;1h$| zZzgn;9Lhy(O5O(Bf;de{E*W4Sa4l;jsD@}~Q|m-~Ks~O~y{ETE088HJUm2fSwzVEN z)>3C0im0G&&Lm@6*4ong`CY_6pi|-%OD9NkT67P{^U^l@_tZ|H-tweyOFFiN(`RR` z;AhYGb?s5TWOLTHnIj;rMV-L3#^8a19VC3ZAlNxCIKs^KR;qNds_Z$_0U_s?9eyx= zr{0ASJ2IGwcraUb8@6_U>+MRzwAz39H0gF)lO$1MTvR!2-1@zu z$+yFND|0s}3`w#=oe<=oz*Fncf5e`r#F=hNt}8;4B3aiEGf(f7oPvXb4lh8SvoXdA z?`H0f&^5jtlAWDy>1aDTnNKT{v?fKm1A0r0Ot|lDq|B|iHy1QPl=Vos=`RtW+)QD? z#B|GbH1&Hx*epcWWx1!8%FYmq-?Su7s6R3QpJs0?)p^Q&O}$s`!)CugclE>`vTZwP zq|Rq;m0L?a079E)piXRquH&;z#Y~n51^_8T=8KOC_!ZL>HoWcUhen1AOMOxe4p&D_ zo4={@SS6DcF*%(GW0`vP{HHvWxXRj;j*i9eY2l5_go;0U=C^LQ|{6|9?#TU(N=kZkgU`~oY(P+$`sd)B9! zOer7;&w)KKXZ(^n<56BOdRSIWrd*z>DCNG_%AIuBsCcKTSJc*)cusw$JZHnr~dGR;OfdMn=2QzVElIC-4Ma!e#X*%R^TBBdN&i{ z8h+S_1?}`j;;>9M)Y;exEYO-tmR0J1%%JDbt@E=#9BN8ACybhU2}zIdLw`%DZ{zu( zeTDSA$29r~D}?wDFJ2rX`1zuBx^i~*}A{ojODqn?*|${(do=ps}qr*dh8E?Z3p#*a_Dio4wU#s*l_ zXce^H8cAlt^?Tf#Oo^u?ZOhyl#H|>`$EXC|Vm`OBQqc8xUxT)x*t7+JU*}I@SBcK+ zciJinA8*5I3y4?*=#v_~D&vuk7;sR1(PQ6(v-A|cXgF@Gph2w*Vk7v+jW56ST-*eo zk_-XMa_7OtCJ3N=kJriHXdqru+zR$cM(p2izV*GeTI|W;nu}dFK9&x-KeGHKf`L&s zQa~wCwFB5u+@B>sZ{&!^qT=g~YxJL2l4i@j1rDzHU;I!8JHzE>CuOm}!gn1TxNde0 zbttg%ArDw25E}0V;Nef0!n-Ov&(6ry^BvFk299wdrYQP#Ho4jn?Hw!oJaI9HM9`<$ z(eJiNcp&D+QHk|jwcZvXn$YFk??1al2I)8@LLem!CZrEbS+#7*h;=u}*Skaqujepz zKgB$Wm1}sWveJaJ@&)%%qDyB`gjV6AZa_sK=UmP1U03++hn8or5R$sT-PM+!w>E1hS&uYK3 zIQ+Ay#xJO}^hgo<*smUs?qA!og&u%m7@uVPZj%F0-klDz?$ zTrV?V1ey`g&uXaQlNsg9m_MP4s~WNv7&JV*Ewy4)J(aI7w#kn~778`sI_{>3#aV6v zOx<7ohjGHzhv0y1hr1{K8=2zMd_TCNfMo4D(js!`Q`*Zh0r~i0PTGKJcvxOZtJz|K)7IMF@SA?WmD$xNAJq5iYu;c` z&lj4eUOu<7CC~azb#ow8$9g1C z+lvHJwL)w#Mm*C9Qe>2AW#L5P!Vp5Snfy$G8s1&SmY{C~SOfut4i2Kot(pnS*u1V4`LmYb%QiL*5J;? zGYb5cIRMt+QQ6tIU4hX}3lyt7?Vz3GY0vPuqYg4~>8=YvBlC7>7Unt0pETOS1T|+( zHLv7r0P`Q|8x1o|U*B^XjZsTi=4(MTU{YVYy7!MXxodg|{5RGZ)zg}zG$A}s$3)r# zx5%B9^cqd(Tq>~a$Y0%bM-_-J4m>zqdgO#>na@32#&G>0xDoVsY_O_)p1BI6!@rmT zL^}YsS!RTg2uZ*?RmuIRM*jGRin;V5u3EqH5cOllX&g<{GCLWYlsD?ff>IQG7W)Na zt~R-~L0T}T^oUX7^;kI-Ohz0ehtR1al0!+zQ#^TJ#++<85{2g~R=4Z-$B{g4eg-=FVw)HJ)TDW^WF6|007R5@`< zz!S-VRkxW_nuF5E{*vZMHbIe$pNcZuw%oDJ?ipZvaf>Nm3WF_$a*iSWEiblkXSiu_ zAdnm3`^&V-u&`fCJH&O)zqcc3iffl0PP42V`Iz8(%uQJC8i{pj{Txbcp^Xdq9qzZP zTI`&A;Re{+suKVfv`Uo5OjnyjH414Oxw{2QM3Mn^0c}W50st47iqsl3S-D+~WB z=}d(fF*U~&gM=OfHhPYjR8en<3cs6R_PB|bQqO_=5y|_d6{z%0@$=5*R9Tsp9bIT9 zHX7&=dKLdZZCg_xAEJ(%Q+|}H!=e()F>#CLD+*QbQU?bn;_sselT=#HrOC8E^t;lm z0tA-U+=uT+6d@6AW)9DNCWsW(^94+J%rZ#!G#`WtUT)I5n$gee@r!(fcDt-`5You( z2$#}kf7Rpunl@hM_FG0en3QCR^c%NGthn;wMDLK$VX(_y&1JClVD$||AUsT{@%rFF z9vM#o@uym9iME08(@e|UaH9`sY~sq;T7YuB|FEP;_2=1%9E zJ~ypsUG%}u4OYrF37a-1K5zr74Q9?Gr4z^CC*=p{UyJ4#M%|+)bxXc8EfkJ2?)o$8 za>ddS!kZt9;K;Qa{Jnpk$HgUI^mkl8yx6shcYg`N;20t{4b-alFwoOd%;P#0|)8}y2` z7!y zjx-A_FTR{QpMsXl`cMUvo;}{~AA7NrFC7**`b8zv0W*{s-Xi|ZIe$kl3QheqdJ&Q& zrfc^}8Z3b|bWwM9xfw~FARntC*5+f81e-scE?1r2r`{+CnZ8K*zAKjHTJ!JWmWud~ zWEUiu{_djV?sy3mW8&97;XVu!FiARKwEpv($0UiSgiB!##96AxtsM)5YA*c2Uh zLy9)73q6ULdU~%`$g%!PhZyf3%Z>;VpBQ=(dk9guwU-zWg}9#7m2l01l!2-J1I-=- zZ)K`_f)%+|@8^~LKKgi#H=0Qj8E$0qd0fJ;XiV;<6Ul9y=k8RC(C2QY0C)JAnS>yNJR~{>-bnDT zpU3F$72z85k>w!Z4i(V7?|;kcIUSQACpzAlg2-0xH?u44s_B) zh~cUK&}<+q8&?4Aew8xGGaPo6i&JC&xW3{hDRb+{SP~&r+TMJ+4(in*UY+&~b?bjE zO0F2OGa*OMJ9L!4#7G1E`MuLtYsFenbx-rNKi}cNt!~iYQRfL{NT+N>GAMC+}P)fi2IB4ir zV#j#{E8JHtdp>Vb5fjKOv*3vp6)cRy^hzd~E~r02eEgId5A4-kc5Z>MTM|Kc;(o5R z_19~ITN=B6SrVngcTGaI2F;_f)Zbcj<_(3n6XUH`6lA}Qp z4l1;WQa*oEnW63t(IbdUT*t}|I3nwh!Tr8=(3NjT^68hU5Vt1fGfy&(LE>PSBn!MU z2Av;Nh(2)GR_Ti@qKs@i=ryo7nQvGD08S{J9(){j?5Q4HE|mp`-*XwU&#$?gH8}or z{mq3`#fAWJ@XO=P;X?cyQ;BpoW&has%hz$Ph{f5v-`R%bPT3_5 zSF_1;ieV?+)*cyiL=x&B2c$YYem}I&icur$P5*n8?~8N^Z%(N@`eg4$9L|*5f@WG@ zXj?QkTAS7?LR5y)&(h#8Y^W6rKa%cCCkYV%L%Cvjy{J^#lES00J)lc-u{SK4^kZ7^ znwoiMkHb-xNY>e<=t_na=t5N{Ha7b`R+5e=2jo~+UR7>m{g|Q9NY!V7%dkwmnC@$@ zjt?|w>*xsRUI@A{4{V;j;wM+W7Al04TW1TVm7DOTc;4MyW-i@@+scRM{e%!i<@XWS zybi1W3A`V}Pc`C`|2@xC6P%%u-*Q=SCSmeFDB|KQ0bTPV-Ulz9{6|mjTEG=684+Z} z6M7H2f`(%7s=z#!f^iMM{6Zr&Ae<6u@bA7xR7OSgx}yAKl_qORi)~2NqCZkrwJ!cv zOV)J&ceeE0D=y&rOnDG`V;wh5oy+8$wJ) zz={*{;M+>>l}f;}@^~&zA@FsI9(mDsvICi3Ur2!&u%CtsE?FyS8UD%6G$X=;(T?_W z$E+<`Cq#UtY%YFu6p>TM2-np^mml4(J8`~7Cz$_Jm9=j)y`HJU;^^(|Z54*Jr*G#X z;z0|42!`rY{XC|RRrIj@h6Wq+I6BvMI?E{NQH8L^;oAPeo72xNahCRW#KL*0?82B& z!Int>Z4E5-!>mj>`GH!YL{hai-9*e49L!P29X%M^(~>a%{m?^&bF7vY;gw_&z9kYd zMfKyWvBSzPBHb%RQ7Ii2t6ZTtmV)(@uhQ8Lxb!8S>=8~B&1ai2DhKnBaSiL1cn3e822y+q*7e1bs(qHv#dd1gB z@z3&ekd>wi^sRWKM{B3KOpqYyBL0VOFAgvhKgN{|9^A~}A-sSj8tuN%-oN0xO+3P2 zCU3M0g&C;Y@C701IxjdLD{&Y+tJFgqFHN1Qme1N;Zt~<6P{$x@5 z`BirM85QCe8~sI3qy0a4?wgGZzWJCaB=J`8y>o*5964$SCak0oi8|KqtJLp{omj@M zHpDnxPFj@Bazf-Ew+~Srq2i1D`Z z=C|N%-7uXElIvGYJwggF)P5NAvVLq@7E}j$u>fS%=yW~px1Qj#O`|Fs|1H8>TQzpI z``~r@)7U2#-_GPWb7J@E$B)hC+vy7SE9j!|2!QpiXCVvip=7CQTohW&iR6mOxg|jM z3nmp-wc1%#h!>kvwV`QRdA2$`FiL7g>xO@&Pefe**2q?6#(22L0DKsd$n-RKDVu~FBQR>X*_&CcYbusPn}j={zEVGGc$_FdA%t?$!dC0vZs{8qzYPp1Fq zpna2k4}Xjvblewp^tI*p#r=Q~#PwCQi^bnYMlWxO@JU{3S z1ttwhY!)iPi+Vf{xmOQ2eb4=V8&J?~Yc}v6C4EC@L{QMPU?A{u_E+Rzu^t21lc8OG z@my-lG#5$EWL#+f$TQ6_eW$haddclWY(aw&T z3=2&CQz%G{&=D?}`7Ys$0yhyH*`S|N5L$z&KGE$JUoyB#;A?mF=pqoK!1liFAxj(s zdqld6lN8U;h3Bl;qKDAPXA5$>{M;m;mFpSFx~ec43tnJx z_(#etBg55)CVufnR_G+|tIy;OMDg|71dG@S1U!U=x%|N~q^BB(Nnfx{x5TCctdgTV zcSKvJeVE4T@oMx)S;imWT0nGWMA23O^xMu#EtXenAlS4=`PgBO-;E>!3G3#7jX&;f z`A;6nYCh_2>-o*XetYMDvy68IDaIB4QUT#B$zt$O~oL1#=p@E^Nj ziV>F}>Cv%CT9vkL&Z{R~uC>oi1F}K40?cuW27owRnTO6s9~bcMb;#b(SiQITlye{X zjX#+qT8MIhWTpmjy@0&@3>6uA1`2GJ;VGoHn3rvRSUJW1T$C_-fg*4iC&^iJ)=X?a zbi56)$1;NAFt?m`2#U94iCbhn@_!Pb8Mg9p4jKPmU&W@eE7TA7R_>5_)ZgLLBO8kJ z5#m%eUYJn&G=26ezVdch6v<4iAdnMaKKbf>Slj=X4n8PTuZDH*2I(%QgaC^qO-FEL+ zwV8tppV4~dPSwX7psObq^yV)AzyA_KD3u_VP(neJ3hP&!%GPbYz_vEk+`|w&8?{sB+0?g;{mL zl9??Q@XNRQlD`kD4n1NJsc!w2gbW1mNv3}}9}rc(Oh|a|Lw4^#2~VAcc<%2My3yb5 z@ro3*`)1|BS(%{aoh6|WU89Eg-A0j5k@kgDchz zm)vut*;6V^Pqj2uzeiV<-W9!Pu5)yH9m$*OM88I;tnz_%8e6OwLud+nS&X2(?pMn8 z+3X4e@@Vz~9LiX@U{-9@uzE;p6$X`u+%df`!rJe6XEnJ=2WT662sYztT@aX=iBD{& zI%ebsbSW`hh_XMYVXOxSfJB1Gx9?%Ov6I`LlgqRMHccvdglI$~B{?&i&kxofiOb}k z?G`E3N~_SBNbz6$Xd>LU%w^~bY82MQ&Qu=_1^>$~Zxl{3H0AIJ z3X9={z9P$Eoo3IPXPLlqKw`YgIGVzE^&&YuyiDli*g;V%pr16U0pOGwA~n_1R7k*J z3KbC(yBpibE=)}g0T9T0@Z3Obcw^PGsaLPfyY0|VRc?`pFzCaz)%}Fv_0&H@A5~Ru zJg@YwC^XzAPEl(wLOJmqOk;*^Pv@icMrf1MH4NK_?qJxJMbDoz+O4@KCl5TqgzME) zMxY{aVM33aQ#Eh4tA8+WPz?ou3X)W+h~~4wR&5w)0PA9!>}*uT>uqTNe#bTD%hwNZ zx*^t#ox*QUC2DVvzPI?nJKR=wWa6c!0$+?3nqjhHcX@vmM(3xUcWHhc;YUthw_1zR zAxVs0^Y{viWg2ywqyh{c2Bb;BL}~N7X0Wi3E2^IBEqwcU3bb%=w+dc4nnY7Wv7Ps> z4vwLHObd2Sqx9&NcJ(ir^j$j40K_&VC)vW3A3ZAfPKP^oxCjgO+(RfqbOO76P1YeQ ztxkH1LDqvzed+V={;plEQ#@36`T0{VPISC&*?&z(Pxbm}2i+l8gtvnax1BvF(&ga-GU^w?4;3VGq{_xea&PL~GMbYo5`` z<|RZD5^nkSbR4N;uS2U<@?iI4L&4MDEdVacr`VTXPx}J$NzKTUVco`>RgS2^<00 zEoR3XFvA_O&506I5(!n$V4AI|cX-3)22f01BiCrY+fr;(vX z6|cV?ixB9i-E?J4<*gzbk!Y$}61l5~+zJzQgX*Ge{LzoPVrQkKa>!Q3bG`2rtqAaI zh$RvT9l%6l6^0dVRJHRA=5G7>hLqUhNTj!G>ub&OxetOK-8JnuQq*OmwR(qCB7um) zk3qo+Aa0MKuD(dvlX13DSF^1*?L$8LMUwzkZ+G>cl-(g7~@NF@Qu3a8+Cgcu)M8?r29RG|A$v8-99B^jM*IEddYjz|2P$+C5e-$8hOW}ak?}my(5!Je&K)-!HEkX zvJDeNvZ6D=PVYjxEgZN^^_Tm~S2VcEB4T}o@`Wdgxah;mWA*7@W%KbbFql`1U7jw{ zwbWdX#lOE$i3dS$$x(=n4Q}&ga(uzKXz604Ku3-;)?NA^eL6dnDaSVdrXeq(!E%(& z>E58hFH;;4hFPhuIA4x8nc{N>pi1<$2OQMV*b#k799BmY%+~Y>lIcp%b*gMun5$%` zkOJ_JIUY?;BOc#M%RQFv`_@hrt5izyQ+`#^Rfo4I>xSEdRdHFXQXd~}hE&EDYM=yP zX4LfzzcrY9A>^5aJf~0n67DJVb|^MYB#R(3iv>tk0w6Ouh3^y@%4mV6RmU%Pru{|x;}HxZ+MS6 zu=~ujsnd-&&97E}3LV}TP3xtxky6Cv(Pd&Sl)EY3dx?e8NoG|E$z}Ly`?|G$3aCAr zl@vK5C*mG&*3%oD%&4#dHDg$=2JC9@Ne@*{W178$>u4(#lhrS3`*r!3wxg})^8Sd^X*UHygWgdV`1h@+*rCdqXFuH5grAXdYV%DsY@@LIdm%`OpK1};=^s013Z-u7<6XH#i>sMu zQtRuv$i?}fG(x8BP^rmV!!YIKw6xx^9W};TjPtK>rv{u>kf$4sISV)4cLk)7*Sg%_6I`Czgp>+%<_3Qy(4b2IL^K^STCPG;C}SKiqM>V8}q+1{c2op*( zK|^qnos1bsk+BYOT%3kou$hB!cRV^yuTD~;`ko;ZNW)UvmM#!lpTaH6FV@i`t&W2> zB?UlHIgy+eX)Nmu|Mvg>>0>1W4-;))X#YnGZ~=PY{MtP%M8h~|`mSmMr}A0xuoqz*_$Bv7LY`B4*+?khm9{gQ*C3FXO((eP;F%|&=8nA2^2%YF{*q2*GD~0 zdSc`LxUM1Rn;%UfI+q4M0+U~WK|-AOd8{q{LKq?^>_~-2y8ae89RwQz<#xy#+*l1LMHg%F*$S)GZ3@yb&BxAv41kKJ}oq)1F< zrC_dh-5PuZfo;bH%;OV+73yfuizyXPGPQWVLIDbYC2DJU*zz0dKB3pUn-tx54hZ!d zSfn*7Op8E~IA%P(m4CQ)6xC7^5cIT5Oe#k7fLBPflP*a4vX4bXJyEkq);k6$9*2>zF|B zuB90dz2XFZWH0PT7{H39c%nPfcP03_InMU8aG8HX5RjOogQ=%A9sTqTk6WR%iEGN?QdGpMNc9#Ic!RY`q^9^Gf ztzLmVvj??M?Xha~8!l>x8>{s zWOp1h4AwNC^xHL8oNnBo>nx^lsjp(dL*S%ZY9})|L0segxLklVpZLHQJ+py&tNGqx z*P?74SK^=#du0i`0|r@rhSQ(Mw5Vnh#5^)I`(&KvNgRsM{(nr({Qt2Ez2N?$Sz_!H zjvdp7#wyw57n=N8lXzzxb7V+Qm9^+Oe1M_Fmec-OI{7JtwXR0%$@6gJ;MekbhjN); zuFd_!Kd&PLzfDh1-wdQeWO`oTLg}-lN4YN6igBYbM7Q^aXt0Wh6U?Kt0zu@G4?^9*WihGs1xU zWCqto%E5E$05C5QU(!UNkN1L3W8I;v<7Xk$3&pCI1?|4>-9$6mBWajUMy5Oy>`BL@ zMFh(_>DdF;|Kok6$M$T$zzK+~d8NoY(*s#0006$(@7FPUn{`79OsiV@CE1a(&Q!o8 z-A^h0aqL))PhJgJL;aGtW0K}^7_$q|{4m|RtKs3{`U1yYJ0e^3M=N6#N2>)l@*AL1 zc=5t-F+nTX$I{HMaHA0Zvd6OQ*A$4CMMSGH5MdCU90<5c#2RiExrgnyxr^;%$z| zazgQo`#SN-|2imjv8+T=iKee)*Qe`ReD7sAWs>K3d)~ z;+F~pPs8Tgn-SBKRLpdMFowTe&%mKF$}-)Xuo-JD&ViV2OmVz?~k1l<=Ug9GUl#+{;aY1N1jUl{t~tuXr)v1X3;m%mOaYWu;<5n z!ZlyhbOk)ms?i@Gi}0pqxUj)Q67ZLGc!qsv>7LxJdd^JV%BcpT$@tQ)EyVYi=O~Fz z^ZsBR0oqg5L@3RAu*b+&&H*y&0G!mJ=drG&{;qh5$o`Yk`kw%=%K%c71M-fNIetZZ z%F;hYU*8`~XIx;z@3OUc$gobA{{{S4CAHJN-{^Dni%@x&lm)^ux{zOyyVUw47fEOH z%b9%p>*kbN96upD4EhIMn%J6!H&%FKFW<)AU|J8KMFy|s%Z0`RkmQcnQl}CrK3y)_ z_-KZjy(X-V==lfuS7aAWos~=fV`YJ_ZrLp~%sKukDZdy)6KD^B^4B!q5V(HDl_G^3 zg;q*@f1V9G8BB$DlPQzAD~44+_gTU8^vUx~R&{m)_el)e$_-cZz!q;irRXSPoZbsc zr9*2WGiyN$6}}{L-+O>Q=uxFD`~N*=$BY!{u7`7bob8y2$rvSMye(+Kz#_kV!yQ{I zoOpg{uV1FzS4g<5(zU$J{6yiSm)R^n5l=Er}k-(4c+|f!?Hak#7!7C)8->Sxf?P`VlNX9o(g2C zPZOch#~IWvAqyu{S-e~EA>7)8?Us6zz-cl-zg!;R@^{Xo!_T@zZPZSF z6`Rkv*mA`v+)n990O)MoR6}n$B-3#R9$Nd zl`GPx2hUx!x1*ixENsBWmay^1hE}LVX)%@jiJ%#!l$qM;eO;10d?QGfLxTn7EYe!)`^8YNW(5lGK_<@f^{I!ndOUwBGW<< zx+43BGazmFusT#NL;9r{HBZvQ*EPJ*6FFeFAL@qI>vpaYF9lh@J)IEP>V|$QsD=_~ z*|RT<{_-DzkMiq@^?3KWigo4+X8GVCFmnjWBKl*wHcee_h-Mccy-IyS29ZEM1ntOe zH)(OXXDjY`H|qOHf!m7DQjwNqEo;>7>@yN82$JdkcI}ar1UceYfc&9{9@jS!d=Q3M z74iMaAr<(HQFcm6T^{_`C~Hfh1jd~uzAXWBj@ z6>)n?Lz1zLNN-+h!UC5<9pvE+>`x9d^H~;Toko!9a^YD{FTdQ-p|QQDfGUt)m=i06 zGx8=yap-8%!Cf4~mZM-c$m2d{<|dwOG*}XoD=2PPkGk_9Bd$&QDh#zz8{t0AIRv#`xH0GHWCV9GuLii%t|dz{*u#3iM)rb z0MI|1)&?=vI@_OPkpScH#+Ys5QX|RCCXJOrpQQSwZH@Qf&G0_~gR*MY#m4&|9$iF+ zSdptBT8sc`9YCU+q*`t$)X$G>9(qLszibql@RUO3{Xzt=#{X51Dv(knIy{ZdLG`hl z%ScJ6KmcWh?%v@x0U-DUT%~n5FVD6@SLG!~T=kh`_VlPF$G5S{QOUsePhO72=F-&@ z0H6%HKB3H)4MGbXgnbiyM%L<^r~TW9vvU^rd&29z!Ogg^xmCLe7E92->J4cX(_bn2 z7j|cOYXc%Br$@iOH!$Prm4tY=?%wmzg|^st(LS_Lvi){1iw+W3B~A2_IPD)vC>v$2 zx2&1nYG~%?0!P+b*GGc8(QEYIPE{4OFbP8p% zznSJv96lyfJI(dptI~mrpFvk*)9A7x{-d$G%*3n(Zm(Tie81jVE~Dyx;?w1~4yd2uuwH-zQpA&x zG}{)Cd!QVhQ1MFb2?>J%mIk>6yo5Q-ph7o#fGGlKTG-C*M-&1kGV4tXk3MD;Cs}n5 zS@IqD%n3xGt&9J69*&op_-BrjTEH_I5+z0O%2`N?f_>xbPwLv%?})^C=-aqbvd*xo z37T_e&q?MxyK7y1R_oUb3(C;bovD`{-gFj&XC9pmRfg*C0TcbIs;UM03ioDovJE?u zK9h`*1I(1wyyYQYMb^t_tiP^16AA@~AIC?@IfxC7G6cPgy6WfVm^Hb(KR9iK2+Tpg zR4|yETMX}_fntOk&L9j2Czn@}_h)NRKp#`>>%+q42FPg>UPj}Vk8&Xy1383%Yvth= zZEB_RC-_%k{Je{*GVn|by}HZo<)NgQFX2eI4k%|Esl&YKB!o+|-ORYGkH-r);B`o) zwf{p8!guvKJm~Qo4x(ie7-?O47}^#7jC#zC7ZHH^Z!1)zBF1303&VH@uma3|Y@E*m4mk+y&MCvKZzDtRl< zbM5l5r?`qnLX|{FumDW8I!Q7ed)gDgO%VG$Tw{epO+3CgzxCQXm^2g**c@HyP*`gc zxUGt||-mCIv+h+mqoQ<~TV#@=3f+AiT4gVuE zlIkpT{M4f5^E@!vJli*ZC$vceJ%-Wb%k(wH7b9;*^RowNfgVI${vKsDgII|yUhVxZ z6n{6J5H9DR#RAN1|LuogJE4}`tY?-+Y=1virc|A=*J5MGc47Bh3uk>TdRUi^+v?Qk zHly$V$+uJk;z53t^ambz(cg2w9xMa7ZKEL#@{AxBSXd;MVs70aC+y7W(PqK+2tqL5 zYvC;}aFy%V473=1Er|+${=6^fHBe99iQozj#RP#bp5v?e*;qC8UBRl;GMH?RD+(JFZBq+6un1&QzGakN$jq@cr1Qnxa-vUP%4 zt^nH*s`x)i3ZCV7{ZOp-AEbHlVIgm0{X_TkC^x#)%rn;uSjxTenXZ>MDTbfW@m7%Qmjdx_ z2RO@SypD~Lr5f%{bu6kHZ69D8X0cipuoir{}}cSsqvkM;y;RMI6HDcn%SK_ zr_|50GPkwdk-qw(&JY(r7!;fMQUYGsbi7ujSMr`1DUE>Zia>>@ZEB)t0sTy|8mv@V`OAyL!vp%M}* zucNi*w%@delevdk5v&g`nsm(PY68%;$lq(Q3rVK9`Ii`#ZHs+r#1_zdLs#!FgRoP& z)-&9&)#T8nV8r?cU(%0PM!ruS zcN`jr8<9_Cy8J1lb+BBsaT=ZR9qraXKM!vpGOw^K*^(ikVNF6Jl-XEHWR%`b{KUzZ zk-&B&s+rvcMgc-R{_DvZRx8mS=5^dm_Lx7EoSWUf9GP8wAm>&lKk)i8ty4`ZOQlUs ztgqMz0d0b@bJH>qNlJskZ|ss|Rr8%Ecf1U5`+O_WMksr`5w|?RBPe3y{!inp_#!z; zk?gWz6cC{7)jV?QmHb!nnXp6&WDIL1XsuZrfBf3m`qVoBq+$wejR}1|paw?k#tEtx zt%R4Rw!nYuA0tmskPL6jzw$X;{KU1m!s#FOd<9qGmh!(vgqyy!ASqfi@IxXo#p_lQ zU;dVV8h-?ANpo6LY+8!y_hw7B%PY!zMZ{>wDatEuP`O@066FKcfUxCokW?%g8gRK3 zlN!_d&f9h_m6(57H7n-+$o0?eMRnbGw7&PY{EGX(m8sM z-Qm7@+4}Y9haeZG>PC;LeluJUM&*}Xrrb4?P{gGcwC3xR-*W^RRlwHG`>Upizbgjl zf^WurvtFWeW0_>+(ryPc+c9>C1?MU2mw?$+@X(|^3B`X#cOFg0az&ZB*d)H2rB}~B z3z2OS(j6I~Wk8b8?Wl5#{*|4cShtzgSgq7(klE2DJpP@ZllPyxl3*2Y$UTcxAyRRF3;g(M_1b`xI>DMYl!zd`bnqr9<%(t z5VVu2$rSrKGEducbo729R4I+jiosNn5JK*&LUR&r-=bB=a>=5&KuoqQV#SoNx!m~fdEV*I*j_juIlp)tUQOeHmyCecPN zA9j0t+Z?TjkTqVxQS&C2Oe)o#mol$ym5{Xr?6rd>;0?auAC;K8Zzxz(7i#6L8g^t8Qs8EC!I8ax0n$SBg7q56P2qYB7ypHa~w zbN^7uRiCMSvJ`1B$x)X)j3?J;f(zyYG@pvxNtL{w2&ebF6Pv&mi5s964NUL;IZCe> zK6_d+(BgdhYe^C)DGKWEdM|H9a@M64IqZERP@J4G74LE%Sqoe-;L4c-jp+3Mx{rAqz_Gm`a6X{Dw5U!h;Ztm`&iT9SzCBQqCFJ23q;v{XkfN&=@E2yCzC$Nvmy>nPI*10a4lU{{}1 z{Rx><5U`hlAI-XQ;(fzvwe+XDUbofnGG0d) z$unm`8@*v5)ATjq8>%rCHo}v$DPWYefBb74IM@*a=75K2@ z+0^(OEr0AO|Jd<~0IwCeQBCo`0)!*sl#J`RCh)=yjC4rbKzU7MsAlKUX>6F86@NIe}f0My7a}u9_4zbEnvw4az6!RKWrpB{?M7FiYrIGhytmBI&WGG+7;m_)k zVphZhX6>!m@@c(Rf~BDBFSzLa*oh5J&8q2GRE|t7E$=8P^gT2uFo^8{YTKSNO^ht! z@uMOE@&h#h-9@2kJVu>1C#*n)NUDB$At7WZ-K4<0rZX+z*}Sd_7nb}Uhk7FQ0+0#D zI~&;uX`UN3T^R78^t42b{o^+pJF3NGHB{JC)9H5I{Q32*q1sMEu7BVY^nZ71(tcY;!Ox38KN~ zN1!L0;QS(E8DjmwW&Zkb`#JyKBHuFK{;1+6OFT!${-r!arKxvuoEq`z=guhvlcLj>;+F93B0;s>P6$AqGwWP4k~F?Fq%pB!9Q6 zp4V0Vd)_`d;;}ZXK4wY9AQH;(S;R5%LJxlPkDXlh-;W+#1yD?XWH8BC*wyOw4!08D z5t3Z)Y9iNx3sZQS1snSK=q07`a-U>uC9f?vZ8+KGl-PET+T7bFbtSrB@JiL|=qhkz zl~&S`pT^_%p!kpwVS(48({znTyHnG-+_Gzq@ zC;pnOAZ`CKcV4cQqD!QeOc&Ii!l!*xfJWp7)&UBOUu9gD1xV(96?vX;U})R|?mfuq z?tSvt-`%k@d#Vwbtdh!uf-)O{%5=9}KglcF*R2?`5oY6^R7chvOpK7w5vS|rLE4ZL z>qHc`7H^V)6yn2sQq)7OxKZTlHA2f_AG72WVFld0AHSXER#-A502_z7Q8NJ4QpB|#`nrZS`Z>q& z>);$Zjrtqv-k?z#{E`=U_Mh zxCXr*&6(+rcI7RzkuDzN74(RaD+gruM~y4%JxmmaL{WQ zFa`icL;=sdRt(?{fl^RrM76Sq?$Pp^`X@dt_tN5bAg{DOy-KZ6MLd%YvcO5$?+K`{ zY?dEP1lSq1SqL>H#5pyOEDcl5Cq?MTlVA<$XdC@9(d3lKng*0*UAG<|k{hQwB~*KB zwsO?cU&^%k6HS?n|4iac8fdFICidjcSSVjz2WANgn1m^?NMl$*l*HtdaQsULba|C| z+_r`KQ(|?#2-G0||JESMG@->7J~OIZmEfmyTmjc^OIcC+BYvvOvBEbECqMCv_iBsl z2D93{%VXA07m}u-G=oIDB5JvWClzEo1ek>aKd*F`T*XXk7P@H#+Z19K-yI~K6Y)|} zG;|A>ZH3|oTpTW~gmw8Q)P;q_^Gpln8)q6m!Gi1kay1h8^`{mOpF5$2rq@5$ju)%? z07nihEf9zGlBF!U5wF32gKYC3vbPqKriWR-a*=m;Aw1C9krO@YUP}nTAXOxwB1PNh?~}y+|fyWV!%bo8z{NP zD}3oly5oGt$Em`qraqpag|L3I#s~!#`{2>q(~V%8IT`8O%m42|CHe}EY~6ZAJC8dO zMb6^05NPm5nYs^Qt#uUf3~mHw~}Z{V|-|()IS|X#FVr za*%gNHQt~zytAP0k)7e;X3ZI!w4UrVN9p1VqD6AGP89fXHMe|qw)H)V*>|qU%?yC` zxe^%l3Gjf`m-j_q0qX^SH?_?RPfQFnkC6}drsL3alSvMbslsozHVKRg#k9))`NCAA zVB}iB{ibWOZD5t?_!yBRoCW~Y6Om2^OSB5NIhmB$01$vhBVoyZ4bJOkF_6USlO(kR zyXLx60t#G5D04|eAT{)Z+;cpV{*A62{wP}6!ZdAc7opcbZo+Q>17q#+EoCi~%?U=v z+YAQTbRl;(XW?Z-ylu|^5-w9){~W*pYQwp6=#9RmRT`po;&F0)Bfp)fVB*4noy}QF zWGwO*o92K6rK*yTg2huOdSRW=IJf5qAru2rHoVDxkk3DSlg=IH2!mm#NdD30R4iJZ z0WJ{Mh$Z{cI`h0EleJuS_oC;ySPKZz0QP&0h$bUbWC;iZCw9|_(MD3TNxpn%(A_tf z3Zwm4phZ7y-&ypM$6tz4%jvI5Td!)-unq`M!ZC#a7nwD;blN4I!5bmAVqP!JabYH< z!P?*;9~mMWkMV^XU>BDYiCt!dJr$VvWs_0(D8aorU`!H_$yXlZK_JN; zwL0C16QEs@F8*yC%GFcI`)Fu`pZ(pB|;Ye)33bE^%x7lm-$sFCTPWm@TfNcWWe~ z`Yu1+ni4IX(|LWdJ2)V2;voC-HuY7xkvjQ=*tO_4Vy4a_D9ux*^miqJ4!dK|PU}PJ zVb~f7zAcHM8&P}jtAJ2>UgV1mT_3ZrKD`?cmA$xOm%p>yIy&Mr=4L;(&+oTI_*ixr z8vV3McGOe80z~NK# zB`Gb&KJQ3a!!UfH?)%l1M7cQI_72ifW7jm)BWGw;RetL7@S2}_KUBFSz|+%Hzjz51 zs%&~2i&O^;nh!>K4lC4~!OLwOODgKH1({c+{Kx`%-J3v@z6|XLnXsR)^m%m%eTz>T zA0=X-ov_Ou9@tl19{4Yu?hhkPn3}El`PL_pu?zA&PM|U|)RrE@IYpkf0(@0bR$jIp zFaLLpoA|-bK>N|i0`Xk*)t}RH>$6mWd)E7-&V}A(L_etaPK;kb04Cmh^=&Mo6!vx| z&a-S6_C(XjD5(x{gL1g|s6uWPc6Y7@N>shQvTk%9eY=_O#g2BX-*f$E;&WLxLw;9C zyWvQkak;om+4i{Sl$ZDv0^BK=RhHn}9Dn2x$~CD2yPfgsDExzZ;oa=Cp|XMcaP1kQ zx^muNY2?|mrU}y{$;C!0wxRBmGVfVH%Zd+nj)~Nq(`fSLvr1@aeFkaz@&4kiA8c3O zgfw=(wtTo8c*cj6p9^-Ui<$fGg|89IO{9fnoY^Y5c8-7fc(~2nd80|g*D1^4y`M#^ zYhk|pyt$qfQRwZ~ihJ14jYxoTYU}Kk$3mM3S=gRgoe{$0gJR5jLweQ{i&D&zHqO2xLk5 z;gT3?rOgd_c>0+-+C0}?oLq%`n1z=&v0xZ@8dOmkLnoqhjCE+);^3Yw5%T=laM zL!QLO;WWQK36ja9as!cq&yo3xtbbmvepOCYp|KfwDGn11@*z^mK-~~Fsyy(1EILV` z`1_T9K#*<>E3GNdHJuK2PB^6li%jjGW!*j?Vm+xX#hcqvp}npKmh1iy;I!=) z>YwdyOP4w=^Jf8OSuOA+xbK?g%5G=rT1T8Gx7r5r>F?`{mxhmeLT|+O%Oops_=@6u zy271<%%(Il^y9rMSuDh6b@~Tyg)F-Qws0Bc^c`2UD9KNMX5^0qHD^t=ZTqB+{jl6< zvS_mC%&GBRNd}_~p56-*3273Z=&K_Ho?kyDc6MC=RT+*VyAN(YuW-b(ZQr^|^S#KL z+Hl@8&=d#Ho+0`?47sK9w-6{sP0#=oE2Igl7!6IvSxNnLEqj7%oQ>bz@AP6{YQIc& z4MW~NHb3G!gjOK)22zd3^i(U>K5z943+Fe!6VJ9qomk_m76$ReSN3#OZ;4b;zK?D? znB_-j&BEGJm}4k?S4J%6WZ#cI93S&v*GlIKNm(VzWIesMe0n!#KC2`h8gD`^g$~L; ze{1ge=ZZ5wkrn1+V24i)ZTT(^?wq8_ogNki*CAqAv&xcs5ZcC+ci(2)e4KAXVv!yB zmi!aKQ)TlHwFnaN^51&QqezwVf{TF3@jbXyP&--D!07m&CunGSUH-2YJRhJ|BaPpr z+>Vd!n$1*6f0ije3;+!D<0H`=Ih+^_;Cs1@xcSwTCCn%%kpvbv%FRLw+ zC+)gzV?jgu_pDd1xf-;lh*T?h7IN=0FKTD+s_tAtBx@-lN}V``?j+eGgIhwbK_(@i z3!a{`ZCp|o`G$=pM`CZvFD}_~a2_z|D22SPg^K3Zg>L8|m2XP5da`-W9-<4);OT5gS?ir>2RpHl+{+n17@d)p)s0{nI2)41XQr%|H>H;An0Mbk zem`2rw>>zKnMfC7^`GLxdwWm1G5Tib!h?A+R9?`@E0-HdET!sE==ihth^5Rub0YP3? zC2z)#v%OJrzvG6QvhrGso*yitz2~6#sH4;?ta=fY{wdeH)Oo=VsHm>u*#MRI+U)Sb z493=@q_S_)Ed}YRMLaH5Ds_=hoXDI%@b&pg=9ul9wsZZfOq=mrj-2TlYWL{jgUt(h zw@}%WR5IYurbMrFc3z?omZM=00#+(3=M%zZ3CP9@0_RFI-h|y1x#dFW7YRcSrfGIr z(;*)jcehM2rgGNtFY!fOWpsXaDzkz_dXz$znL0H0-o*MV#4{I4GNM{t-5sIARK;P} zbNK)+6qlLtl!1QY`>=ETuA698#vhXLej!W%kUm2?w>nWzty-MOgMGbjIGL0w}Y)yIt=F zsCjC-=FFh<@Jsj}nI?2vM?smm3T+7Hux%Yf{aG7qrz?_&dZAnzLfUl2e!WYTKA7h9$u)#+hnoIh9#eB z%1=U*UrdZzI6yBfeAYw>SoDFd;l$?Oacv=`>pQa=p_n5%SNnncmOm^Px=^v%WzJ0#TV!k z5+_n((iYJI zf1Q(kc=LtJZcH`aUCXHNY}tU6<(+o#VJ#wAFZ0~-xVy` z3EYG~ro~2MdFs11gm}2LxV^}~7qYZW+}d54H~`LCLdNuzUFVV}&HU(=6T@JDMQ78( zbfJ^FkP%aE%L;VmX!Np)E8%mI1h>07x5}E|%()$*<66_{MGy^mLAHJLcCGV2Wqjd) z+lNaVCpOQuP+$UOrZ-2)L#bA$Lk@I_Te$RcBi=3G;>z*1rL`og%RRviNw(p;P^Oy> zfNEJ0s?MQa)8bTA9-=TGX=~*>M&0bjLasyM4Qt6;PDbf^X>)uZ_slj z3n;yXqswQLggME}XYcZ%e|zv-{^e}3p1UnA*N20JiTPhQv7w?`3|1l6Jo8naa!!*+ zrw2wuKaS;;X@GuTJEMzxw&{g)CQly8meVt^8C0T%Xa9zEzeW0Oq2}rDeJMYb|HGDR zhgI>x!2xZI&8Hc09Gu}|wI?H^zGkb!JrdunWoxM|)cp-|^7C(OVxVVqdBV;*72ga^A4$1P5KcA&0#MhO{#0p&jq{_!uw_Kdl2RD6$$ATpb3coR!N_+ z`>~2^T=@6SDePMnTSreq86C~``QW1Z1}V2beOV(HiP5bm?G?F!|8qU62Fp5IrucB77EqSY(CDUkJTsG3L$bh`O!BgTeSt?Y+Zrw>KRmY_j1mxjE|iOAnBJ*9N* zPVWAEyOD}egoCr?KYwDr}(>Gt;0Vx=ji!LwZx1;dX!g`rJy!?3I`%y|nLISsPA(Pj4UFfFADGNKbE<0&{Ycz`Hv>m?d$UE#FBe zUZ&X6i&G4nyj(`j5vKx0)Qm^uKOIPNC68UB<)~ld`^w4@D{M#a?l&0y+93EV@x<63n_XLpFS(*Lig9PR()_0?3A9z&BV>sB3P_;TbgBmTF=#))8;DeD^`BvG z^_3HHU+;R~0?rV-woO(l?`w~Nt?YwXqoI-Dyc+%q`%061Z6 zt*xDxy;_gz@~no2uT0I?j%|UTf93aRH!kdk~ZAhn2V zgd{Sp$T|D-iq!m1o)!a@L-R>F%|`uLd*!|@*!dut)?8A*+uV@S+R$K6^2ADKz}+!V z2d9KOww&L8uH|`@QdfIN@Kh7GQ-Jv#gXm0o3RLq{f=pS_L z_7TlM=&Ja2?XnLSemQ8ImV1;qpypJ)@A`k*yZUc7vpk;a*;DQ4U|Wr$rS!}eV?>P# zitIF^T9c}pY||zBV$pOrQbTA=UOF#Jnv^(alvypN(I#Xx*2@Y)*d@v7AvE5Ch#)&s zQg0hXL}G8w+5ceA{N|_o%X98?@AvsUpU?OEx%WN~$FDyWp^{FfAA{;L0C*$*FcvC! z>CZx5*!k`0V)!#@u3_#$&Eh+0g0u5jr&k?=5ge__JLiz?Zhe^UV0lm*1RL(0B2cP1 z$$wm6)%}ZJe;b`Jkc~J~R?_?V@!afThxmoW^%t}ml&;aRJ7m#JOC|? zqTP{h&;+V+0XH4_zWU!3{PuZUy7K$zjb10E2scV_Cyju;EzMw<(a=;EFb*_)Q0Sf% zSx!AQ@|*STYOhm%(Vj$CkLyg8$P9wO&QmHCM&t>?ELcucv@UOle%cWEI7Zv`^vvSg z)(=MnHGI`^XV@+AM(+onrpXQwogpfuPEV^PYO8mYd7~NIz`y6YQp4x_)L;k4n@%Rp z<{8bgi$Nj!&C!5v=F-8>LUm;(uU9^0ui~;lF)K{re=SXT>BBp^<%?<|K#k^n%ASA) zD58o0*M=eFhtP>wx59kmdUm;xr5s=X)y`HSyfNkVyoAL9AFMb5jxXI6-MpkUI#cP`BgfAw zr~9+n&4V5I)Vw_>b1MrNDEBII?>ozpIAs=@{LwAy=2${M#kp5;1|Gq;kCSy5f2Ytg z>r3Y)1|1;6@>!Q{?2s}T)31>(TWHVcB2HHG44p&X0acZs=1ci)57P2*i6*l zXuR3L8#j3~UobeXTpr-MlB@gy-H^sH_1dHn*@ARwH7t`Yk~U%7a`C88B7$PH$(M1{tHx9pe9SlR*0t*Z{xZa# z0dWa~iK}(;Et8KL%#nf*i^$)+sUcH)H(E1>sw6BZY#sZLc2ZL+-~~K_Mk2<~=jTE5 z97&y&^&oz5AA+*}CNw_h!{BFk_)(R@LD_InU}1Y&STW9*!zeAdCyL57I<8+6W|{xa zR;$%-yt(%9?Ag@QAR~Fy{onwiZ{o@xPf3(+nK+ClKka0$J1n3|GMURy_G7+FWODJ^ zg_WpGaO73LV+^U&Ey-0vp34jN#kXM_$#!q+(rABk3GG^Wcp$N2!Fo7mZn3gU9@uAW z(DXSHXQa8J;yshb>YI`h!Ro-v(nxe|>|py>oA-q_AsQu!o}4HD=oi{e&->_S{u4tp znqpl_>!i?}^%xh-O-V#w@GGya&72vHMkdDBta4HDzNqSgbETCTMd?-|gi>$IwAaqS zxUwrR8cF}@Se{SMgQCJ(u_w~b;oh>7O2Wok3E-(>Fz6%>Z)-%%7U-|?FPg<{@v026 zv8~iHhZ#QoK>+~)5j|_sL+YqkZS-30-mZRC`xjABb2Iw+>l=*~nXxV?XD~pHPx<{} zQ^6IDQE^o#Z}X`GlLDtkrD_W`2WOl)`iy}c{HX)4-Pxj5z{3aOk%Cw>9{cUJS>@%x zBM=B(kNWz_7z-Kwz5fQRLo6;9>p2bltS>)TqDF#&d+B=70hvQ^N2{cP4*kFjSI{zl zMhF5=6|{-l9}~MR;|Cq$lMxPC#x$^xKWUZPUbvW&emMN)WTN@Bjy9^HxZ z*fMWhR%uZB&fFoFj*@oI&xFTkk+ul;#IJyQGmAuWsiy5LPRvZTg4*-C;^}p_?|@<1 zis#@}v56O`2nWR|>AgODWo6~AYk@5RpWoS;I`{!(SN^|Vtkx*2v3oaem#wjej6XvI z`<9?YDO=+t87fkOk_2XNwnPa8f_ZRdt_b(C^sZ1PQ3;8uBDFMAX!ywvLNE80Dqwl^?nfZBI4Z#1MxOeS)2a&jNYH&`szgjy}h6tc`_^S0L0>ZGCWQCkv|EcgH6 z2FJjQP-h`M^dmOHTQlGu9Y=v;rk3x==ZBMNRUc0oEyL-KkhLEy^vm`!2f)1^4U~F- zP=YmDxQ#79dttxbkHfEl1D^4p;Sk6n?&avuzud>zKE{3xjP2uUA6NUh+Sl-X9{B%w aV9)bUFuTJ&Cf5*KKbKKgqXidlfBRnsd($oe diff --git a/Platforms/SurfaceDuo1Pkg/SurfaceDuo1.fdf b/Platforms/SurfaceDuo1Pkg/SurfaceDuo1.fdf index 088c4ed1..5482bedf 100644 --- a/Platforms/SurfaceDuo1Pkg/SurfaceDuo1.fdf +++ b/Platforms/SurfaceDuo1Pkg/SurfaceDuo1.fdf @@ -115,8 +115,8 @@ READ_LOCK_STATUS = TRUE !include SurfaceDuoFamilyPkg/Frontpage.fdf.inc FILE FREEFORM = PCD(gOemPkgTokenSpaceGuid.PcdLogoFile) { - SECTION RAW = SurfaceDuo1Pkg/Include/Resources/logo1.png - SECTION UI = "logo1.png" + SECTION RAW = SurfaceDuoFamilyPkg/Include/Resources/BootLogo.bmp + SECTION UI = "BootLogo.bmp" } FILE FREEFORM = PCD(gMsCorePkgTokenSpaceGuid.PcdRegulatoryGraphicFileGuid) { diff --git a/Platforms/SurfaceDuo2Pkg/Include/Resources/logo1.png b/Platforms/SurfaceDuo2Pkg/Include/Resources/logo1.png deleted file mode 100644 index a35c1f25795ee7575dfaa2d7feda7a89199180b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404406 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

`XYxy4yjBe*O4AS^%9nEU+<`zdw|j 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%0Am|1> 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 diff --git a/Platforms/SurfaceDuo2Pkg/SurfaceDuo2.fdf b/Platforms/SurfaceDuo2Pkg/SurfaceDuo2.fdf index 5a97618a..55be210e 100644 --- a/Platforms/SurfaceDuo2Pkg/SurfaceDuo2.fdf +++ b/Platforms/SurfaceDuo2Pkg/SurfaceDuo2.fdf @@ -112,8 +112,8 @@ READ_LOCK_STATUS = TRUE !include SurfaceDuoFamilyPkg/Frontpage.fdf.inc FILE FREEFORM = PCD(gOemPkgTokenSpaceGuid.PcdLogoFile) { - SECTION RAW = SurfaceDuo2Pkg/Include/Resources/logo1.png - SECTION UI = "logo1.png" + SECTION RAW = SurfaceDuoFamilyPkg/Include/Resources/BootLogo.bmp + SECTION UI = "BootLogo.bmp" } FILE FREEFORM = PCD(gMsCorePkgTokenSpaceGuid.PcdRegulatoryGraphicFileGuid) { diff --git a/Platforms/SurfaceDuoFamilyPkg/Frontpage.dsc.inc b/Platforms/SurfaceDuoFamilyPkg/Frontpage.dsc.inc index 0e1638c1..0a71cc6e 100644 --- a/Platforms/SurfaceDuoFamilyPkg/Frontpage.dsc.inc +++ b/Platforms/SurfaceDuoFamilyPkg/Frontpage.dsc.inc @@ -60,11 +60,11 @@ # # This library is for showing the main system boot graphics. # - BootGraphicsLib|SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.inf + BootGraphicsLib|MsGraphicsPkg/Library/BootGraphicsLib/BootGraphicsLib.inf # # BootGraphicsProviderLib that uses PCDs and raw files in the firmware volumes # - BootGraphicsProviderLib|SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.inf + BootGraphicsProviderLib|OemPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.inf # # This library contains access functions for dealing with the copying of an MS_UI_THEME # @@ -129,10 +129,6 @@ # MathLib|MsCorePkg/Library/MathLib/MathLib.inf # - # This library is for showing the main system boot graphics. - # - BootGraphicsLib|SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.inf - # # Library to support Device disable Settings (get/set) # MsBootManagerSettingsLib|OemPkg/Library/MsBootManagerSettingsDxeLib/MsBootManagerSettingsDxeLib.inf @@ -141,19 +137,13 @@ # SwmDialogsLib|MsGraphicsPkg/Library/SwmDialogsLib/SwmDialogs.inf # - # BootGraphicsProviderLib that uses PCDs and raw files in the firmware volumes - # - BootGraphicsProviderLib|SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.inf - # # Library that platform implemented to determine boot type # MsBootPolicyLib|SurfaceDuoFamilyPkg/Library/MsBootPolicyLib/MsBootPolicyLib.inf - BmpSupportLib|MdeModulePkg/Library/BaseBmpSupportLib/BaseBmpSupportLib.inf # # Supplies the theme for this platform to the UEFI settings UI # MsUiThemeLib|MsGraphicsPkg/Library/MsUiThemeLib/Dxe/MsUiThemeLib.inf - SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf # # Library for determining if Manufacturing mode should be enabled on this boot. # This libray is what everyone should use to determine which mode we are in. diff --git a/Platforms/SurfaceDuoFamilyPkg/Include/Library/MallocLib.h b/Platforms/SurfaceDuoFamilyPkg/Include/Library/MallocLib.h deleted file mode 100644 index e17a2c27..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Include/Library/MallocLib.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __LIBRARY_MALLOC_H -#define __LIBRARY_MALLOC_H - -VOID *malloc(UINTN size); -VOID *malloc_rt(UINTN Size); -VOID *memalign(UINTN boundary, UINTN size); -VOID *memalign2(UINTN boundary, UINTN size, BOOLEAN runtime); -VOID *calloc(UINTN count, UINTN size); -VOID free(VOID *ptr); - -#endif diff --git a/Platforms/SurfaceDuoFamilyPkg/Include/Library/lodepng.h b/Platforms/SurfaceDuoFamilyPkg/Include/Library/lodepng.h deleted file mode 100644 index 60e4424c..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Include/Library/lodepng.h +++ /dev/null @@ -1,2055 +0,0 @@ -/* -LodePNG version 20181230 - -Copyright (c) 2005-2018 Lode Vandevenne - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. -*/ - -#ifndef LODEPNG_H -#define LODEPNG_H - -#include - -extern const char *LODEPNG_VERSION_STRING; - -#define LODEPNG_NO_COMPILE_DISK -#define LODEPNG_NO_COMPILE_ENCODER - -/* -The following #defines are used to create code sections. They can be disabled -to disable code sections, which can give faster compile time and smaller binary. -The "NO_COMPILE" defines are designed to be used to pass as defines to the -compiler command to disable them without modifying this header, e.g. --DLODEPNG_NO_COMPILE_ZLIB for gcc. -In addition to those below, you can also define LODEPNG_NO_COMPILE_CRC to -allow implementing a custom lodepng_crc32. -*/ -/*deflate & zlib. If disabled, you must specify alternative zlib functions in -the custom_zlib field of the compress and decompress settings*/ -#ifndef LODEPNG_NO_COMPILE_ZLIB -#define LODEPNG_COMPILE_ZLIB -#endif -/*png encoder and png decoder*/ -#ifndef LODEPNG_NO_COMPILE_PNG -#define LODEPNG_COMPILE_PNG -#endif -/*deflate&zlib decoder and png decoder*/ -#ifndef LODEPNG_NO_COMPILE_DECODER -#define LODEPNG_COMPILE_DECODER -#endif -/*deflate&zlib encoder and png encoder*/ -#ifndef LODEPNG_NO_COMPILE_ENCODER -#define LODEPNG_COMPILE_ENCODER -#endif -/*the optional built in harddisk file loading and saving functions*/ -#ifndef LODEPNG_NO_COMPILE_DISK -#define LODEPNG_COMPILE_DISK -#endif -/*support for chunks other than IHDR, IDAT, PLTE, tRNS, IEND: ancillary and - * unknown chunks*/ -#ifndef LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS -#define LODEPNG_COMPILE_ANCILLARY_CHUNKS -#endif -/*ability to convert error numerical codes to English text string*/ -#ifndef LODEPNG_NO_COMPILE_ERROR_TEXT -#define LODEPNG_COMPILE_ERROR_TEXT -#endif -/*Compile the default allocators (C's free, malloc and realloc). If you disable -this, you can define the functions lodepng_free, lodepng_malloc and -lodepng_realloc in your source files with custom allocators.*/ -#ifndef LODEPNG_NO_COMPILE_ALLOCATORS -#define LODEPNG_COMPILE_ALLOCATORS -#endif -/*compile the C++ version (you can disable the C++ wrapper here even when - * compiling for C++)*/ -#ifdef __cplusplus -#ifndef LODEPNG_NO_COMPILE_CPP -#define LODEPNG_COMPILE_CPP -#endif -#endif - -#ifdef LODEPNG_COMPILE_CPP -#include -#include -#endif /*LODEPNG_COMPILE_CPP*/ - -#ifdef LODEPNG_COMPILE_PNG -/*The PNG color types (also used for raw).*/ -typedef enum LodePNGColorType { - LCT_GREY = 0, /*greyscale: 1,2,4,8,16 bit*/ - LCT_RGB = 2, /*RGB: 8,16 bit*/ - LCT_PALETTE = 3, /*palette: 1,2,4,8 bit*/ - LCT_GREY_ALPHA = 4, /*greyscale with alpha: 8,16 bit*/ - LCT_RGBA = 6 /*RGB with alpha: 8,16 bit*/ -} LodePNGColorType; - -#ifdef LODEPNG_COMPILE_DECODER -/* -Converts PNG data in memory to raw pixel data. -out: Output parameter. Pointer to buffer that will contain the raw pixel data. - After decoding, its size is w * h * (bytes per pixel) bytes larger than - initially. Bytes per pixel depends on colortype and bitdepth. - Must be freed after usage with free(*out). - Note: for 16-bit per channel colors, uses big endian format like PNG does. -w: Output parameter. Pointer to width of pixel data. -h: Output parameter. Pointer to height of pixel data. -in: Memory buffer with the PNG file. -insize: size of the in buffer. -colortype: the desired color type for the raw output image. See explanation on -PNG color types. bitdepth: the desired bit depth for the raw output image. See -explanation on PNG color types. Return value: LodePNG error code (0 means no -error). -*/ -unsigned lodepng_decode_memory( - unsigned char **out, unsigned *w, unsigned *h, const unsigned char *in, - size_t insize, LodePNGColorType colortype, unsigned bitdepth); - -/*Same as lodepng_decode_memory, but always decodes to 32-bit RGBA raw image*/ -unsigned lodepng_decode32( - unsigned char **out, unsigned *w, unsigned *h, const unsigned char *in, - size_t insize); - -/*Same as lodepng_decode_memory, but always decodes to 24-bit RGB raw image*/ -unsigned lodepng_decode24( - unsigned char **out, unsigned *w, unsigned *h, const unsigned char *in, - size_t insize); - -#ifdef LODEPNG_COMPILE_DISK -/* -Load PNG from disk, from file with given name. -Same as the other decode functions, but instead takes a filename as input. -*/ -unsigned lodepng_decode_file( - unsigned char **out, unsigned *w, unsigned *h, const char *filename, - LodePNGColorType colortype, unsigned bitdepth); - -/*Same as lodepng_decode_file, but always decodes to 32-bit RGBA raw image.*/ -unsigned lodepng_decode32_file( - unsigned char **out, unsigned *w, unsigned *h, const char *filename); - -/*Same as lodepng_decode_file, but always decodes to 24-bit RGB raw image.*/ -unsigned lodepng_decode24_file( - unsigned char **out, unsigned *w, unsigned *h, const char *filename); -#endif /*LODEPNG_COMPILE_DISK*/ -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER -/* -Converts raw pixel data into a PNG image in memory. The colortype and bitdepth - of the output PNG image cannot be chosen, they are automatically determined - by the colortype, bitdepth and content of the input pixel data. - Note: for 16-bit per channel colors, needs big endian format like PNG does. -out: Output parameter. Pointer to buffer that will contain the PNG image data. - Must be freed after usage with free(*out). -outsize: Output parameter. Pointer to the size in bytes of the out buffer. -image: The raw pixel data to encode. The size of this buffer should be - w * h * (bytes per pixel), bytes per pixel depends on colortype and -bitdepth. w: width of the raw pixel data in pixels. h: height of the raw pixel -data in pixels. colortype: the color type of the raw input image. See -explanation on PNG color types. bitdepth: the bit depth of the raw input image. -See explanation on PNG color types. Return value: LodePNG error code (0 means no -error). -*/ -unsigned lodepng_encode_memory( - unsigned char **out, size_t *outsize, const unsigned char *image, - unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth); - -/*Same as lodepng_encode_memory, but always encodes from 32-bit RGBA raw - * image.*/ -unsigned lodepng_encode32( - unsigned char **out, size_t *outsize, const unsigned char *image, - unsigned w, unsigned h); - -/*Same as lodepng_encode_memory, but always encodes from 24-bit RGB raw image.*/ -unsigned lodepng_encode24( - unsigned char **out, size_t *outsize, const unsigned char *image, - unsigned w, unsigned h); - -#ifdef LODEPNG_COMPILE_DISK -/* -Converts raw pixel data into a PNG file on disk. -Same as the other encode functions, but instead takes a filename as output. -NOTE: This overwrites existing files without warning! -*/ -unsigned lodepng_encode_file( - const char *filename, const unsigned char *image, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth); - -/*Same as lodepng_encode_file, but always encodes from 32-bit RGBA raw image.*/ -unsigned lodepng_encode32_file( - const char *filename, const unsigned char *image, unsigned w, unsigned h); - -/*Same as lodepng_encode_file, but always encodes from 24-bit RGB raw image.*/ -unsigned lodepng_encode24_file( - const char *filename, const unsigned char *image, unsigned w, unsigned h); -#endif /*LODEPNG_COMPILE_DISK*/ -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_CPP -namespace lodepng { -#ifdef LODEPNG_COMPILE_DECODER - /*Same as lodepng_decode_memory, but decodes to an std::vector. The colortype - is the format to output the pixels to. Default is RGBA 8-bit per channel.*/ - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, - const unsigned char *in, size_t insize, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, - const std::vector &in, - LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); -#ifdef LODEPNG_COMPILE_DISK - /* - Converts PNG file from disk to raw pixel data in memory. - Same as the other decode functions, but instead takes a filename as input. - */ - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, - const std::string &filename, LodePNGColorType colortype = LCT_RGBA, - unsigned bitdepth = 8); -#endif /* LODEPNG_COMPILE_DISK */ -#endif /* LODEPNG_COMPILE_DECODER */ - -#ifdef LODEPNG_COMPILE_ENCODER - /*Same as lodepng_encode_memory, but encodes to an std::vector. colortype - is that of the raw input data. The output PNG color type will be auto - chosen.*/ - unsigned encode( - std::vector &out, const unsigned char *in, unsigned w, - unsigned h, LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); - unsigned encode( - std::vector &out, const std::vector &in, - unsigned w, unsigned h, LodePNGColorType colortype = LCT_RGBA, - unsigned bitdepth = 8); -#ifdef LODEPNG_COMPILE_DISK - /* - Converts 32-bit RGBA raw pixel data into a PNG file on disk. - Same as the other encode functions, but instead takes a filename as output. - NOTE: This overwrites existing files without warning! - */ - unsigned encode( - const std::string &filename, const unsigned char *in, unsigned w, - unsigned h, LodePNGColorType colortype = LCT_RGBA, unsigned bitdepth = 8); - unsigned encode( - const std::string &filename, const std::vector &in, - unsigned w, unsigned h, LodePNGColorType colortype = LCT_RGBA, - unsigned bitdepth = 8); -#endif /* LODEPNG_COMPILE_DISK */ -#endif /* LODEPNG_COMPILE_ENCODER */ -} /* namespace lodepng */ -#endif /*LODEPNG_COMPILE_CPP*/ -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ERROR_TEXT -/*Returns an English description of the numerical error code.*/ -const char *lodepng_error_text(unsigned code); -#endif /*LODEPNG_COMPILE_ERROR_TEXT*/ - -#ifdef LODEPNG_COMPILE_DECODER -/*Settings for zlib decompression*/ -typedef struct LodePNGDecompressSettings LodePNGDecompressSettings; -struct LodePNGDecompressSettings { - /* Check LodePNGDecoderSettings for more ignorable errors such as ignore_crc - */ - unsigned ignore_adler32; /*if 1, continue and don't give an error message if - the Adler32 checksum is corrupted*/ - - /*use custom zlib decoder instead of built in one (default: null)*/ - unsigned (*custom_zlib)( - unsigned char **, size_t *, const unsigned char *, size_t, - const LodePNGDecompressSettings *); - /*use custom deflate decoder instead of built in one (default: null) - if custom_zlib is used, custom_deflate is ignored since only the built in - zlib function will call custom_deflate*/ - unsigned (*custom_inflate)( - unsigned char **, size_t *, const unsigned char *, size_t, - const LodePNGDecompressSettings *); - - const void *custom_context; /*optional custom settings for custom functions*/ -}; - -extern const LodePNGDecompressSettings lodepng_default_decompress_settings; -void lodepng_decompress_settings_init(LodePNGDecompressSettings *settings); -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER -/* -Settings for zlib compression. Tweaking these settings tweaks the balance -between speed and compression ratio. -*/ -typedef struct LodePNGCompressSettings LodePNGCompressSettings; -struct LodePNGCompressSettings /*deflate = compress*/ { - /*LZ77 related settings*/ - unsigned btype; /*the block type for LZ (0, 1, 2 or 3, see zlib standard). - Should be 2 for proper compression.*/ - unsigned use_lz77; /*whether or not to use LZ77. Should be 1 for proper - compression.*/ - unsigned windowsize; /*must be a power of two <= 32768. higher compresses more - but is slower. Default value: 2048.*/ - unsigned minmatch; /*mininum lz77 length. 3 is normally best, 6 can be better - for some PNGs. Default: 0*/ - unsigned nicematch; /*stop searching if >= this length found. Set to 258 for - best compression. Default: 128*/ - unsigned lazymatching; /*use lazy matching: better compression but a bit - slower. Default: true*/ - - /*use custom zlib encoder instead of built in one (default: null)*/ - unsigned (*custom_zlib)( - unsigned char **, size_t *, const unsigned char *, size_t, - const LodePNGCompressSettings *); - /*use custom deflate encoder instead of built in one (default: null) - if custom_zlib is used, custom_deflate is ignored since only the built in - zlib function will call custom_deflate*/ - unsigned (*custom_deflate)( - unsigned char **, size_t *, const unsigned char *, size_t, - const LodePNGCompressSettings *); - - const void *custom_context; /*optional custom settings for custom functions*/ -}; - -extern const LodePNGCompressSettings lodepng_default_compress_settings; -void lodepng_compress_settings_init(LodePNGCompressSettings *settings); -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_PNG -/* -Color mode of an image. Contains all information required to decode the pixel -bits to RGBA colors. This information is the same as used in the PNG file -format, and is used both for PNG and raw image data in LodePNG. -*/ -typedef struct LodePNGColorMode { - /*header (IHDR)*/ - LodePNGColorType colortype; /*color type, see PNG standard or documentation - further in this header file*/ - unsigned bitdepth; /*bits per sample, see PNG standard or documentation - further in this header file*/ - - /* - palette (PLTE and tRNS) - - Dynamically allocated with the colors of the palette, including alpha. - When encoding a PNG, to store your colors in the palette of the - LodePNGColorMode, first use lodepng_palette_clear, then for each color use - lodepng_palette_add. If you encode an image without alpha with palette, don't - forget to put value 255 in each A byte of the palette. - - When decoding, by default you can ignore this palette, since LodePNG already - fills the palette colors in the pixels of the raw RGBA output. - - The palette is only supported for color type 3. - */ - unsigned char *palette; /*palette in RGBARGBA... order. When allocated, must - be either 0, or have size 1024*/ - size_t palettesize; /*palette size in number of colors (amount of bytes is 4 * - palettesize)*/ - - /* - transparent color key (tRNS) - - This color uses the same bit depth as the bitdepth value in this struct, which - can be 1-bit to 16-bit. For greyscale PNGs, r, g and b will all 3 be set to - the same. - - When decoding, by default you can ignore this information, since LodePNG sets - pixels with this key to transparent already in the raw RGBA output. - - The color key is only supported for color types 0 and 2. - */ - unsigned - key_defined; /*is a transparent color key given? 0 = false, 1 = true*/ - unsigned key_r; /*red/greyscale component of color key*/ - unsigned key_g; /*green component of color key*/ - unsigned key_b; /*blue component of color key*/ -} LodePNGColorMode; - -/*init, cleanup and copy functions to use with this struct*/ -void lodepng_color_mode_init(LodePNGColorMode *info); -void lodepng_color_mode_cleanup(LodePNGColorMode *info); -/*return value is error code (0 means no error)*/ -unsigned -lodepng_color_mode_copy(LodePNGColorMode *dest, const LodePNGColorMode *source); -/* Makes a temporary LodePNGColorMode that does not need cleanup (no palette) */ -LodePNGColorMode -lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth); - -void lodepng_palette_clear(LodePNGColorMode *info); -/*add 1 color to the palette*/ -unsigned lodepng_palette_add( - LodePNGColorMode *info, unsigned char r, unsigned char g, unsigned char b, - unsigned char a); - -/*get the total amount of bits per pixel, based on colortype and bitdepth in the - * struct*/ -unsigned lodepng_get_bpp(const LodePNGColorMode *info); -/*get the amount of color channels used, based on colortype in the struct. -If a palette is used, it counts as 1 channel.*/ -unsigned lodepng_get_channels(const LodePNGColorMode *info); -/*is it a greyscale type? (only colortype 0 or 4)*/ -unsigned lodepng_is_greyscale_type(const LodePNGColorMode *info); -/*has it got an alpha channel? (only colortype 2 or 6)*/ -unsigned lodepng_is_alpha_type(const LodePNGColorMode *info); -/*has it got a palette? (only colortype 3)*/ -unsigned lodepng_is_palette_type(const LodePNGColorMode *info); -/*only returns true if there is a palette and there is a value in the palette -with alpha < 255. Loops through the palette to check this.*/ -unsigned lodepng_has_palette_alpha(const LodePNGColorMode *info); -/* -Check if the given color info indicates the possibility of having non-opaque -pixels in the PNG image. Returns true if the image can have translucent or -invisible pixels (it still be opaque if it doesn't use such pixels). Returns -false if the image can only have opaque pixels. In detail, it returns true only -if it's a color type with alpha, or has a palette with non-opaque values, or if -"key_defined" is true. -*/ -unsigned lodepng_can_have_alpha(const LodePNGColorMode *info); -/*Returns the byte size of a raw image buffer with given width, height and color - * mode*/ -size_t -lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode *color); - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -/*The information of a Time chunk in PNG.*/ -typedef struct LodePNGTime { - unsigned year; /*2 bytes used (0-65535)*/ - unsigned month; /*1-12*/ - unsigned day; /*1-31*/ - unsigned hour; /*0-23*/ - unsigned minute; /*0-59*/ - unsigned second; /*0-60 (to allow for leap seconds)*/ -} LodePNGTime; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -/*Information about the PNG image, except pixels, width and height.*/ -typedef struct LodePNGInfo { - /*header (IHDR), palette (PLTE) and transparency (tRNS) chunks*/ - unsigned - compression_method; /*compression method of the original file. Always 0.*/ - unsigned filter_method; /*filter method of the original file*/ - unsigned interlace_method; /*interlace method of the original file: 0=none, - 1=Adam7*/ - LodePNGColorMode - color; /*color type and bits, palette and transparency of the PNG file*/ - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /* - Suggested background color chunk (bKGD) - - This uses the same color mode and bit depth as the PNG (except no alpha - channel), with values truncated to the bit depth in the unsigned integer. - - For greyscale and palette PNGs, the value is stored in background_r. The - values in background_g and background_b are then unused. - - So when decoding, you may get these in a different color mode than the one you - requested for the raw pixels. - - When encoding with auto_convert, you must use the color model defined in - info_png.color for these values. The encoder normally ignores info_png.color - when auto_convert is on, but will use it to interpret these values (and - convert copies of them to its chosen color model). - - When encoding, avoid setting this to an expensive color, such as a non-grey - value when the image is grey, or the compression will be worse since it will - be forced to write the PNG with a more expensive color mode (when auto_convert - is on). - - The decoder does not use this background color to edit the color of pixels. - This is a completely optional metadata feature. - */ - unsigned background_defined; /*is a suggested background color given?*/ - unsigned - background_r; /*red/grey/palette component of suggested background color*/ - unsigned background_g; /*green component of suggested background color*/ - unsigned background_b; /*blue component of suggested background color*/ - - /* - non-international text chunks (tEXt and zTXt) - - The char** arrays each contain num strings. The actual messages are in - text_strings, while text_keys are keywords that give a short description what - the actual text represents, e.g. Title, Author, Description, or anything else. - - All the string fields below including keys, names and language tags are null - terminated. The PNG specification uses null characters for the keys, names and - tags, and forbids null characters to appear in the main text which is why we - can use null termination everywhere here. - - A keyword is minimum 1 character and maximum 79 characters long. It's - discouraged to use a single line length longer than 79 characters for texts. - - Don't allocate these text buffers yourself. Use the init/cleanup functions - correctly and use lodepng_add_text and lodepng_clear_text. - */ - size_t text_num; /*the amount of texts in these char** buffers (there may be - more texts in itext)*/ - char **text_keys; /*the keyword of a text chunk (e.g. "Comment")*/ - char **text_strings; /*the actual text*/ - - /* - international text chunks (iTXt) - Similar to the non-international text chunks, but with additional strings - "langtags" and "transkeys". - */ - size_t itext_num; /*the amount of international texts in this PNG*/ - char **itext_keys; /*the English keyword of the text chunk (e.g. "Comment")*/ - char **itext_langtags; /*language tag for this text's language, ISO/IEC 646 - string, e.g. ISO 639 language tag*/ - char **itext_transkeys; /*keyword translated to the international language - - UTF-8 string*/ - char **itext_strings; /*the actual international text - UTF-8 string*/ - - /*time chunk (tIME)*/ - unsigned time_defined; /*set to 1 to make the encoder generate a tIME chunk*/ - LodePNGTime time; - - /*phys chunk (pHYs)*/ - unsigned phys_defined; /*if 0, there is no pHYs chunk and the values below are - undefined, if 1 else there is one*/ - unsigned phys_x; /*pixels per unit in x direction*/ - unsigned phys_y; /*pixels per unit in y direction*/ - unsigned phys_unit; /*may be 0 (unknown unit) or 1 (metre)*/ - - /* - Color profile related chunks: gAMA, cHRM, sRGB, iCPP - - LodePNG does not apply any color conversions on pixels in the encoder or - decoder and does not interpret these color profile values. It merely passes on - the information. If you wish to use color profiles and convert colors, please - use these values with a color management library. - - See the PNG, ICC and sRGB specifications for more information about the - meaning of these values. - */ - - /* gAMA chunk: optional, overridden by sRGB or iCCP if those are present. */ - unsigned gama_defined; /* Whether a gAMA chunk is present (0 = not present, 1 - = present). */ - unsigned gama_gamma; /* Gamma exponent times 100000 */ - - /* cHRM chunk: optional, overridden by sRGB or iCCP if those are present. */ - unsigned chrm_defined; /* Whether a cHRM chunk is present (0 = not present, 1 - = present). */ - unsigned chrm_white_x; /* White Point x times 100000 */ - unsigned chrm_white_y; /* White Point y times 100000 */ - unsigned chrm_red_x; /* Red x times 100000 */ - unsigned chrm_red_y; /* Red y times 100000 */ - unsigned chrm_green_x; /* Green x times 100000 */ - unsigned chrm_green_y; /* Green y times 100000 */ - unsigned chrm_blue_x; /* Blue x times 100000 */ - unsigned chrm_blue_y; /* Blue y times 100000 */ - - /* - sRGB chunk: optional. May not appear at the same time as iCCP. - If gAMA is also present gAMA must contain value 45455. - If cHRM is also present cHRM must contain respectively - 31270,32900,64000,33000,30000,60000,15000,6000. - */ - unsigned srgb_defined; /* Whether an sRGB chunk is present (0 = not present, 1 - = present). */ - unsigned srgb_intent; /* Rendering intent: 0=perceptual, 1=rel. colorimetric, - 2=saturation, 3=abs. colorimetric */ - - /* - iCCP chunk: optional. May not appear at the same time as sRGB. - - LodePNG does not parse or use the ICC profile (except its color space header - field for an edge case), a separate library to handle the ICC data (not - included in LodePNG) format is needed to use it for color management and - conversions. - - For encoding, if iCCP is present, gAMA and cHRM are recommended to be added as - well with values that match the ICC profile as closely as possible, if you - wish to do this you should provide the correct values for gAMA and cHRM and - enable their '_defined' flags since LodePNG will not automatically compute - them from the ICC profile. - - For encoding, the ICC profile is required by the PNG specification to be an - "RGB" profile for non-grey PNG color types and a "GRAY" profile for grey PNG - color types. If you disable auto_convert, you must ensure the ICC profile type - matches your requested color type, else the encoder gives an error. If - auto_convert is enabled (the default), and the ICC profile is not a good match - for the pixel data, this will result in an encoder error if the pixel data has - non-grey pixels for a GRAY profile, or a silent less-optimal compression of - the pixel data if the pixels could be encoded as greyscale but the ICC profile - is RGB. - - To avoid this do not set an ICC profile in the image unless there is a good - reason for it, and when doing so make sure you compute it carefully to avoid - the above problems. - */ - unsigned iccp_defined; /* Whether an iCCP chunk is present (0 = not present, 1 - = present). */ - char *iccp_name; /* Null terminated string with profile name, 1-79 bytes */ - /* - The ICC profile in iccp_profile_size bytes. - Don't allocate this buffer yourself. Use the init/cleanup functions - correctly and use lodepng_set_icc and lodepng_clear_icc. - */ - unsigned char *iccp_profile; - unsigned iccp_profile_size; /* The size of iccp_profile in bytes */ - - /* End of color profile related chunks */ - - /* - unknown chunks: chunks not known by LodePNG, passed on byte for byte. - - There are 3 buffers, one for each position in the PNG where unknown chunks can - appear. Each buffer contains all unknown chunks for that position - consecutively. The 3 positions are: 0: between IHDR and PLTE, 1: between PLTE - and IDAT, 2: between IDAT and IEND. - - For encoding, do not store critical chunks or known chunks that are enabled - with a "_defined" flag above in here, since the encoder will blindly follow - this and could then encode an invalid PNG file (such as one with two IHDR - chunks or the disallowed combination of sRGB with iCCP). But do use this if - you wish to store an ancillary chunk that is not supported by LodePNG (such as - sPLT or hIST), or any non-standard PNG chunk. - - Do not allocate or traverse this data yourself. Use the chunk traversing - functions declared later, such as lodepng_chunk_next and lodepng_chunk_append, - to read/write this struct. - */ - unsigned char *unknown_chunks_data[3]; - size_t unknown_chunks_size[3]; /*size in bytes of the unknown chunks, given - for protection*/ -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} LodePNGInfo; - -/*init, cleanup and copy functions to use with this struct*/ -void lodepng_info_init(LodePNGInfo *info); -void lodepng_info_cleanup(LodePNGInfo *info); -/*return value is error code (0 means no error)*/ -unsigned lodepng_info_copy(LodePNGInfo *dest, const LodePNGInfo *source); - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -unsigned lodepng_add_text( - LodePNGInfo *info, const char *key, - const char *str); /*push back both texts at once*/ -void lodepng_clear_text(LodePNGInfo *info); /*use this to clear the texts again - after you filled them in*/ - -unsigned lodepng_add_itext( - LodePNGInfo *info, const char *key, const char *langtag, - const char *transkey, - const char *str); /*push back the 4 texts of 1 chunk at once*/ -void lodepng_clear_itext(LodePNGInfo *info); /*use this to clear the itexts - again after you filled them in*/ - -/*replaces if exists*/ -unsigned lodepng_set_icc( - LodePNGInfo *info, const char *name, const unsigned char *profile, - unsigned profile_size); -void lodepng_clear_icc(LodePNGInfo *info); /*use this to clear the texts again - after you filled them in*/ -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -/* -Converts raw buffer from one color type to another color type, based on -LodePNGColorMode structs to describe the input and output color type. -See the reference manual at the end of this header file to see which color -conversions are supported. return value = LodePNG error code (0 if all went ok, -an error if the conversion isn't supported) The out buffer must have size (w * h -* bpp + 7) / 8, where bpp is the bits per pixel of the output color type -(lodepng_get_bpp). For < 8 bpp images, there should not be padding bits at the -end of scanlines. For 16-bit per channel colors, uses big endian format like PNG -does. Return value is LodePNG error code -*/ -unsigned lodepng_convert( - unsigned char *out, const unsigned char *in, - const LodePNGColorMode *mode_out, const LodePNGColorMode *mode_in, - unsigned w, unsigned h); - -#ifdef LODEPNG_COMPILE_DECODER -/* -Settings for the decoder. This contains settings for the PNG and the Zlib -decoder, but not the Info settings from the Info structs. -*/ -typedef struct LodePNGDecoderSettings { - LodePNGDecompressSettings - zlibsettings; /*in here is the setting to ignore Adler32 checksums*/ - - /* Check LodePNGDecompressSettings for more ignorable errors such as - * ignore_adler32 */ - unsigned ignore_crc; /*ignore CRC checksums*/ - unsigned ignore_critical; /*ignore unknown critical chunks*/ - unsigned ignore_end; /*ignore issues at end of file if possible (missing IEND - chunk, too large chunk, ...)*/ - /* TODO: make a system involving warnings with levels and a strict mode - instead. Other potentially recoverable errors: srgb rendering intent value, - size of content of ancillary chunks, more than 79 characters for some - strings, placement/combination rules for ancillary chunks, crc of unknown - chunks, allowed characters in string keys, etc... */ - - unsigned color_convert; /*whether to convert the PNG to the color type you - want. Default: yes*/ - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - unsigned read_text_chunks; /*if false but remember_unknown_chunks is true, - they're stored in the unknown chunks*/ - /*store all bytes from unknown chunks in the LodePNGInfo (off by default, - * useful for a png editor)*/ - unsigned remember_unknown_chunks; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} LodePNGDecoderSettings; - -void lodepng_decoder_settings_init(LodePNGDecoderSettings *settings); -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER -/*automatically use color type with less bits per pixel if losslessly possible. - * Default: AUTO*/ -typedef enum LodePNGFilterStrategy { - /*every filter at zero*/ - LFS_ZERO, - /*Use filter that gives minimum sum, as described in the official PNG filter - heuristic.*/ - LFS_MINSUM, - /*Use the filter type that gives smallest Shannon entropy for this scanline. - Depending on the image, this is better or worse than minsum.*/ - LFS_ENTROPY, - /* - Brute-force-search PNG filters by compressing each filter for each scanline. - Experimental, very slow, and only rarely gives better compression than MINSUM. - */ - LFS_BRUTE_FORCE, - /*use predefined_filters buffer: you specify the filter type for each - scanline*/ - LFS_PREDEFINED -} LodePNGFilterStrategy; - -/*Gives characteristics about the integer RGBA colors of the image (count, alpha -channel usage, bit depth, ...), which helps decide which color model to use for -encoding. Used internally by default if "auto_convert" is enabled. Public -because it's useful for custom algorithms. NOTE: This is not related to the ICC -color profile, search "iccp_profile" instead to find the ICC/chromacity/... -fields in this header file.*/ -typedef struct LodePNGColorProfile { - unsigned colored; /*not greyscale*/ - unsigned key; /*image is not opaque and color key is possible instead of full - alpha*/ - unsigned short key_r; /*key values, always as 16-bit, in 8-bit case the byte - is duplicated, e.g. 65535 means 255*/ - unsigned short key_g; - unsigned short key_b; - unsigned - alpha; /*image is not opaque and alpha channel or alpha palette required*/ - unsigned numcolors; /*amount of colors, up to 257. Not valid if bits == 16.*/ - unsigned char palette[1024]; /*Remembers up to the first 256 RGBA colors, in - no particular order*/ - unsigned bits; /*bits per channel (not for palette). 1,2 or 4 for greyscale - only. 16 if 16-bit per channel required.*/ - size_t numpixels; -} LodePNGColorProfile; - -void lodepng_color_profile_init(LodePNGColorProfile *profile); - -/*Get a LodePNGColorProfile of the image. The profile must already have been -inited. NOTE: This is not related to the ICC color profile, search -"iccp_profile" instead to find the ICC/chromacity/... fields in this header -file.*/ -unsigned lodepng_get_color_profile( - LodePNGColorProfile *profile, const unsigned char *image, unsigned w, - unsigned h, const LodePNGColorMode *mode_in); -/*The function LodePNG uses internally to decide the PNG color with -auto_convert. Chooses an optimal color model, e.g. grey if only grey pixels, -palette if < 256 colors, ...*/ -unsigned lodepng_auto_choose_color( - LodePNGColorMode *mode_out, const unsigned char *image, unsigned w, - unsigned h, const LodePNGColorMode *mode_in); - -/*Settings for the encoder.*/ -typedef struct LodePNGEncoderSettings { - LodePNGCompressSettings - zlibsettings; /*settings for the zlib encoder, such as window size, ...*/ - - unsigned auto_convert; /*automatically choose output PNG color type. Default: - true*/ - - /*If true, follows the official PNG heuristic: if the PNG uses a palette or - lower than 8 bit depth, set all filters to zero. Otherwise use the - filter_strategy. Note that to completely follow the official PNG heuristic, - filter_palette_zero must be true and filter_strategy must be LFS_MINSUM*/ - unsigned filter_palette_zero; - /*Which filter strategy to use when not using zeroes due to - filter_palette_zero. - Set filter_palette_zero to 0 to ensure always using your chosen strategy. - Default: LFS_MINSUM*/ - LodePNGFilterStrategy filter_strategy; - /*used if filter_strategy is LFS_PREDEFINED. In that case, this must point to - a buffer with the same length as the amount of scanlines in the image, and - each value must <= 5. You have to cleanup this buffer, LodePNG will never free - it. Don't forget that filter_palette_zero must be set to 0 to ensure this is - also used on palette or low bitdepth images.*/ - const unsigned char *predefined_filters; - - /*force creating a PLTE chunk if colortype is 2 or 6 (= a suggested palette). - If colortype is 3, PLTE is _always_ created.*/ - unsigned force_palette; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*add LodePNG identifier and version as a text chunk, for debugging*/ - unsigned add_id; - /*encode text chunks as zTXt chunks instead of tEXt chunks, and use - * compression in iTXt chunks*/ - unsigned text_compression; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} LodePNGEncoderSettings; - -void lodepng_encoder_settings_init(LodePNGEncoderSettings *settings); -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) -/*The settings, state and information for extended encoding and decoding.*/ -typedef struct LodePNGState { -#ifdef LODEPNG_COMPILE_DECODER - LodePNGDecoderSettings decoder; /*the decoding settings*/ -#endif /*LODEPNG_COMPILE_DECODER*/ -#ifdef LODEPNG_COMPILE_ENCODER - LodePNGEncoderSettings encoder; /*the encoding settings*/ -#endif /*LODEPNG_COMPILE_ENCODER*/ - LodePNGColorMode info_raw; /*specifies the format in which you would like to - get the raw pixel buffer*/ - LodePNGInfo info_png; /*info of the PNG image obtained after decoding*/ - unsigned error; -#ifdef LODEPNG_COMPILE_CPP - /* For the lodepng::State subclass. */ - virtual ~LodePNGState() {} -#endif -} LodePNGState; - -/*init, cleanup and copy functions to use with this struct*/ -void lodepng_state_init(LodePNGState *state); -void lodepng_state_cleanup(LodePNGState *state); -void lodepng_state_copy(LodePNGState *dest, const LodePNGState *source); -#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) \ - */ - -#ifdef LODEPNG_COMPILE_DECODER -/* -Same as lodepng_decode_memory, but uses a LodePNGState to allow custom settings -and getting much more information about the PNG image and color mode. -*/ -unsigned lodepng_decode( - unsigned char **out, unsigned *w, unsigned *h, LodePNGState *state, - const unsigned char *in, size_t insize); - -/* -Read the PNG header, but not the actual data. This returns only the information -that is in the IHDR chunk of the PNG, such as width, height and color type. The -information is placed in the info_png field of the LodePNGState. -*/ -unsigned lodepng_inspect( - unsigned *w, unsigned *h, LodePNGState *state, const unsigned char *in, - size_t insize); -#endif /*LODEPNG_COMPILE_DECODER*/ - -/* -Reads one metadata chunk (other than IHDR) of the PNG file and outputs what it -read in the state. Returns error code on failure. -Use lodepng_inspect first with a new state, then e.g. lodepng_chunk_find_const -to find the desired chunk type, and if non null use lodepng_inspect_chunk (with -chunk_pointer - start_of_file as pos). -Supports most metadata chunks from the PNG standard (gAMA, bKGD, tEXt, ...). -Ignores unsupported, unknown, non-metadata or IHDR chunks (without error). -Requirements: &in[pos] must point to start of a chunk, must use regular -lodepng_inspect first since format of most other chunks depends on IHDR, and if -there is a PLTE chunk, that one must be inspected before tRNS or bKGD. -*/ -unsigned lodepng_inspect_chunk( - LodePNGState *state, size_t pos, const unsigned char *in, size_t insize); - -#ifdef LODEPNG_COMPILE_ENCODER -/*This function allocates the out buffer with standard malloc and stores the - * size in *outsize.*/ -unsigned lodepng_encode( - unsigned char **out, size_t *outsize, const unsigned char *image, - unsigned w, unsigned h, LodePNGState *state); -#endif /*LODEPNG_COMPILE_ENCODER*/ - -/* -The lodepng_chunk functions are normally not needed, except to traverse the -unknown chunks stored in the LodePNGInfo struct, or add new ones to it. -It also allows traversing the chunks of an encoded PNG file yourself. - -The chunk pointer always points to the beginning of the chunk itself, that is -the first byte of the 4 length bytes. - -In the PNG file format, chunks have the following format: --4 bytes length: length of the data of the chunk in bytes (chunk itself is 12 -bytes longer) -4 bytes chunk type (ASCII a-z,A-Z only, see below) -length bytes -of data (may be 0 bytes if length was 0) -4 bytes of CRC, computed on chunk name -+ data - -The first chunk starts at the 8th byte of the PNG file, the entire rest of the -file exists out of concatenated chunks with the above format. - -PNG standard chunk ASCII naming conventions: --First byte: uppercase = critical, lowercase = ancillary --Second byte: uppercase = public, lowercase = private --Third byte: must be uppercase --Fourth byte: uppercase = unsafe to copy, lowercase = safe to copy -*/ - -/* -Gets the length of the data of the chunk. Total chunk length has 12 bytes more. -There must be at least 4 bytes to read from. If the result value is too large, -it may be corrupt data. -*/ -unsigned lodepng_chunk_length(const unsigned char *chunk); - -/*puts the 4-byte type in null terminated string*/ -void lodepng_chunk_type(char type[5], const unsigned char *chunk); - -/*check if the type is the given type*/ -unsigned char -lodepng_chunk_type_equals(const unsigned char *chunk, const char *type); - -/*0: it's one of the critical chunk types, 1: it's an ancillary chunk (see PNG - * standard)*/ -unsigned char lodepng_chunk_ancillary(const unsigned char *chunk); - -/*0: public, 1: private (see PNG standard)*/ -unsigned char lodepng_chunk_private(const unsigned char *chunk); - -/*0: the chunk is unsafe to copy, 1: the chunk is safe to copy (see PNG - * standard)*/ -unsigned char lodepng_chunk_safetocopy(const unsigned char *chunk); - -/*get pointer to the data of the chunk, where the input points to the header of - * the chunk*/ -unsigned char * lodepng_chunk_data(unsigned char *chunk); -const unsigned char *lodepng_chunk_data_const(const unsigned char *chunk); - -/*returns 0 if the crc is correct, 1 if it's incorrect (0 for OK as usual!)*/ -unsigned lodepng_chunk_check_crc(const unsigned char *chunk); - -/*generates the correct CRC from the data and puts it in the last 4 bytes of the - * chunk*/ -void lodepng_chunk_generate_crc(unsigned char *chunk); - -/* -Iterate to next chunks, allows iterating through all chunks of the PNG file. -Input must be at the beginning of a chunk (result of a previous -lodepng_chunk_next call, or the 8th byte of a PNG file which always has the -first chunk), or alternatively may point to the first byte of the PNG file -(which is not a chunk but the magic header, the function will then skip over it -and return the first real chunk). Expects at least 8 readable bytes of memory in -the input pointer. Will output pointer to the start of the next chunk or the end -of the file if there is no more chunk after this. Start this process at the 8th -byte of the PNG file. In a non-corrupt PNG file, the last chunk should have name -"IEND". -*/ -unsigned char * lodepng_chunk_next(unsigned char *chunk); -const unsigned char *lodepng_chunk_next_const(const unsigned char *chunk); - -/*Finds the first chunk with the given type in the range [chunk, end), or - * returns NULL if not found.*/ -unsigned char *lodepng_chunk_find( - unsigned char *chunk, const unsigned char *end, const char type[5]); -const unsigned char *lodepng_chunk_find_const( - const unsigned char *chunk, const unsigned char *end, const char type[5]); - -/* -Appends chunk to the data in out. The given chunk should already have its chunk -header. The out variable and outlength are updated to reflect the new -reallocated buffer. Returns error code (0 if it went ok) -*/ -unsigned lodepng_chunk_append( - unsigned char **out, size_t *outlength, const unsigned char *chunk); - -/* -Appends new chunk to out. The chunk to append is given by giving its length, -type and data separately. The type is a 4-letter string. The out variable and -outlength are updated to reflect the new reallocated buffer. Returne error code -(0 if it went ok) -*/ -unsigned lodepng_chunk_create( - unsigned char **out, size_t *outlength, unsigned length, const char *type, - const unsigned char *data); - -/*Calculate CRC32 of buffer*/ -unsigned lodepng_crc32(const unsigned char *buf, size_t len); -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ZLIB -/* -This zlib part can be used independently to zlib compress and decompress a -buffer. It cannot be used to create gzip files however, and it only supports the -part of zlib that is required for PNG, it does not support dictionaries. -*/ - -#ifdef LODEPNG_COMPILE_DECODER -/*Inflate a buffer. Inflate is the decompression step of deflate. Out buffer - * must be freed after use.*/ -unsigned lodepng_inflate( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGDecompressSettings *settings); - -/* -Decompresses Zlib data. Reallocates the out buffer and appends the data. The -data must be according to the zlib specification. -Either, *out must be NULL and *outsize must be 0, or, *out must be a valid -buffer and *outsize its size in bytes. out must be freed by user after usage. -*/ -unsigned lodepng_zlib_decompress( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGDecompressSettings *settings); -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER -/* -Compresses data with Zlib. Reallocates the out buffer and appends the data. -Zlib adds a small header and trailer around the deflate data. -The data is output in the format of the zlib specification. -Either, *out must be NULL and *outsize must be 0, or, *out must be a valid -buffer and *outsize its size in bytes. out must be freed by user after usage. -*/ -unsigned lodepng_zlib_compress( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGCompressSettings *settings); - -/* -Find length-limited Huffman code for given frequencies. This function is in the -public interface only for tests, it's used internally by lodepng_deflate. -*/ -unsigned lodepng_huffman_code_lengths( - unsigned *lengths, const unsigned *frequencies, size_t numcodes, - unsigned maxbitlen); - -/*Compress a buffer with deflate. See RFC 1951. Out buffer must be freed after - * use.*/ -unsigned lodepng_deflate( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGCompressSettings *settings); - -#endif /*LODEPNG_COMPILE_ENCODER*/ -#endif /*LODEPNG_COMPILE_ZLIB*/ - -#ifdef LODEPNG_COMPILE_DISK -/* -Load a file from disk into buffer. The function allocates the out buffer, and -after usage you should free it. -out: output parameter, contains pointer to loaded buffer. -outsize: output parameter, size of the allocated out buffer -filename: the path to the file to load -return value: error code (0 means ok) -*/ -unsigned -lodepng_load_file(unsigned char **out, size_t *outsize, const char *filename); - -/* -Save a file from buffer to disk. Warning, if it exists, this function overwrites -the file without warning! -buffer: the buffer to write -buffersize: size of the buffer to write -filename: the path to the file to save to -return value: error code (0 means ok) -*/ -unsigned lodepng_save_file( - const unsigned char *buffer, size_t buffersize, const char *filename); -#endif /*LODEPNG_COMPILE_DISK*/ - -#ifdef LODEPNG_COMPILE_CPP -/* The LodePNG C++ wrapper uses std::vectors instead of manually allocated - * memory buffers. */ -namespace lodepng { -#ifdef LODEPNG_COMPILE_PNG - class State : public LodePNGState { - public: - State(); - State(const State &other); - virtual ~State(); - State &operator=(const State &other); - }; - -#ifdef LODEPNG_COMPILE_DECODER - /* Same as other lodepng::decode, but using a State for more settings and - * information. */ - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, State &state, - const unsigned char *in, size_t insize); - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, State &state, - const std::vector &in); -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER - /* Same as other lodepng::encode, but using a State for more settings and - * information. */ - unsigned encode( - std::vector &out, const unsigned char *in, unsigned w, - unsigned h, State &state); - unsigned encode( - std::vector &out, const std::vector &in, - unsigned w, unsigned h, State &state); -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_DISK - /* - Load a file from disk into an std::vector. - return value: error code (0 means ok) - */ - unsigned - load_file(std::vector &buffer, const std::string &filename); - - /* - Save the binary data in an std::vector to a file on disk. The file is - overwritten without warning. - */ - unsigned save_file( - const std::vector &buffer, const std::string &filename); -#endif /* LODEPNG_COMPILE_DISK */ -#endif /* LODEPNG_COMPILE_PNG */ - -#ifdef LODEPNG_COMPILE_ZLIB -#ifdef LODEPNG_COMPILE_DECODER - /* Zlib-decompress an unsigned char buffer */ - unsigned decompress( - std::vector &out, const unsigned char *in, size_t insize, - const LodePNGDecompressSettings &settings = - lodepng_default_decompress_settings); - - /* Zlib-decompress an std::vector */ - unsigned decompress( - std::vector &out, const std::vector &in, - const LodePNGDecompressSettings &settings = - lodepng_default_decompress_settings); -#endif /* LODEPNG_COMPILE_DECODER */ - -#ifdef LODEPNG_COMPILE_ENCODER - /* Zlib-compress an unsigned char buffer */ - unsigned compress( - std::vector &out, const unsigned char *in, size_t insize, - const LodePNGCompressSettings &settings = - lodepng_default_compress_settings); - - /* Zlib-compress an std::vector */ - unsigned compress( - std::vector &out, const std::vector &in, - const LodePNGCompressSettings &settings = - lodepng_default_compress_settings); -#endif /* LODEPNG_COMPILE_ENCODER */ -#endif /* LODEPNG_COMPILE_ZLIB */ -} /* namespace lodepng */ -#endif /*LODEPNG_COMPILE_CPP*/ - -/* -TODO: -[.] test if there are no memory leaks or security exploits - done a lot but -needs to be checked often -[.] check compatibility with various compilers - done but needs to be redone -for every newer version [X] converting color to 16-bit per channel types [X] -support color profile chunk types (but never let them touch RGB values by -default) [ ] support all public PNG chunk types [ ] make sure encoder generates -no chunks with size > (2^31)-1 [ ] partial decoding (stream processing) [X] let -the "isFullyOpaque" function check color keys and transparent palettes too [X] -better name for the variables "codes", "codesD", "codelengthcodes", "clcl" and -"lldl" [ ] don't stop decoding on errors like 69, 57, 58 (make warnings) [ ] -make warnings like: oob palette, checksum fail, data after iend, wrong/unknown -crit chunk, no null terminator in text, ... [ ] errors with line numbers (and -version) [ ] let the C++ wrapper catch exceptions coming from the standard -library and return LodePNG error codes [ ] allow user to provide custom color -conversion functions, e.g. for premultiplied alpha, padding bits or not, ... [ ] -allow user to give data (void*) to custom allocator -*/ - -#endif /*LODEPNG_H inclusion guard*/ - -/* -LodePNG Documentation ---------------------- - -0. table of contents --------------------- - - 1. about - 1.1. supported features - 1.2. features not supported - 2. C and C++ version - 3. security - 4. decoding - 5. encoding - 6. color conversions - 6.1. PNG color types - 6.2. color conversions - 6.3. padding bits - 6.4. A note about 16-bits per channel and endianness - 7. error values - 8. chunks and PNG editing - 9. compiler support - 10. examples - 10.1. decoder C++ example - 10.2. decoder C example - 11. state settings reference - 12. changes - 13. contact information - - -1. about --------- - -PNG is a file format to store raster images losslessly with good compression, -supporting different color types and alpha channel. - -LodePNG is a PNG codec according to the Portable Network Graphics (PNG) -Specification (Second Edition) - W3C Recommendation 10 November 2003. - -The specifications used are: - -*) Portable Network Graphics (PNG) Specification (Second Edition): - http://www.w3.org/TR/2003/REC-PNG-20031110 -*) RFC 1950 ZLIB Compressed Data Format version 3.3: - http://www.gzip.org/zlib/rfc-zlib.html -*) RFC 1951 DEFLATE Compressed Data Format Specification ver 1.3: - http://www.gzip.org/zlib/rfc-deflate.html - -The most recent version of LodePNG can currently be found at -http://lodev.org/lodepng/ - -LodePNG works both in C (ISO C90) and C++, with a C++ wrapper that adds -extra functionality. - -LodePNG exists out of two files: --lodepng.h: the header file for both C and C++ --lodepng.c(pp): give it the name lodepng.c or lodepng.cpp (or .cc) depending on -your usage - -If you want to start using LodePNG right away without reading this doc, get the -examples from the LodePNG website to see how to use it in code, or check the -smaller examples in chapter 13 here. - -LodePNG is simple but only supports the basic requirements. To achieve -simplicity, the following design choices were made: There are no dependencies -on any external library. There are functions to decode and encode a PNG with -a single function call, and extended versions of these functions taking a -LodePNGState struct allowing to specify or get more information. By default -the colors of the raw image are always RGB or RGBA, no matter what color type -the PNG file uses. To read and write files, there are simple functions to -convert the files to/from buffers in memory. - -This all makes LodePNG suitable for loading textures in games, demos and small -programs, ... It's less suitable for full fledged image editors, loading PNGs -over network (it requires all the image data to be available before decoding can -begin), life-critical systems, ... - -1.1. supported features ------------------------ - -The following features are supported by the decoder: - -*) decoding of PNGs with any color type, bit depth and interlace mode, to a 24- -or 32-bit color raw image, or the same color type as the PNG -*) encoding of PNGs, from any raw image to 24- or 32-bit color, or the same -color type as the raw image -*) Adam7 interlace and deinterlace for any color type -*) loading the image from harddisk or decoding it from a buffer from other -sources than harddisk -*) support for alpha channels, including RGBA color model, translucent palettes -and color keying -*) zlib decompression (inflate) -*) zlib compression (deflate) -*) CRC32 and ADLER32 checksums -*) handling of unknown chunks, allowing making a PNG editor that stores custom -and unknown chunks. -*) the following chunks are supported (generated/interpreted) by both encoder -and decoder: IHDR: header information PLTE: color palette IDAT: pixel data IEND: -the final chunk tRNS: transparency for palettized images tEXt: textual -information zTXt: compressed textual information iTXt: international textual -information bKGD: suggested background color pHYs: physical dimensions tIME: -modification time - -1.2. features not supported ---------------------------- - -The following features are _not_ supported: - -*) some features needed to make a conformant PNG-Editor might be still missing. -*) partial loading/stream processing. All data must be available and is -processed in one call. -*) The following public chunks are not supported but treated as unknown chunks -by LodePNG cHRM, gAMA, iCCP, sRGB, sBIT, hIST, sPLT Some of these are not -supported on purpose: LodePNG wants to provide the RGB values stored in the -pixels, not values modified by system dependent gamma or color models. - - -2. C and C++ version --------------------- - -The C version uses buffers allocated with alloc that you need to free() -yourself. You need to use init and cleanup functions for each struct whenever -using a struct from the C version to avoid exploits and memory leaks. - -The C++ version has extra functions with std::vectors in the interface and the -lodepng::State class which is a LodePNGState with constructor and destructor. - -These files work without modification for both C and C++ compilers because all -the additional C++ code is in "#ifdef __cplusplus" blocks that make C-compilers -ignore it, and the C code is made to compile both with strict ISO C90 and C++. - -To use the C++ version, you need to rename the source file to lodepng.cpp -(instead of lodepng.c), and compile it with a C++ compiler. - -To use the C version, you need to rename the source file to lodepng.c (instead -of lodepng.cpp), and compile it with a C compiler. - - -3. Security ------------ - -Even if carefully designed, it's always possible that LodePNG contains possible -exploits. If you discover one, please let me know, and it will be fixed. - -When using LodePNG, care has to be taken with the C version of LodePNG, as well -as the C-style structs when working with C++. The following conventions are used -for all C-style structs: - --if a struct has a corresponding init function, always call the init function -when making a new one -if a struct has a corresponding cleanup function, call it -before the struct disappears to avoid memory leaks -if a struct has a -corresponding copy function, use the copy function instead of "=". The -destination must also be inited already. - - -4. Decoding ------------ - -Decoding converts a PNG compressed image to a raw pixel buffer. - -Most documentation on using the decoder is at its declarations in the header -above. For C, simple decoding can be done with functions such as -lodepng_decode32, and more advanced decoding can be done with the struct -LodePNGState and lodepng_decode. For C++, all decoding can be done with the -various lodepng::decode functions, and lodepng::State can be used for advanced -features. - -When using the LodePNGState, it uses the following fields for decoding: -*) LodePNGInfo info_png: it stores extra information about the PNG (the input) -in here -*) LodePNGColorMode info_raw: here you can say what color mode of the raw image -(the output) you want to get -*) LodePNGDecoderSettings decoder: you can specify a few extra settings for the -decoder to use - -LodePNGInfo info_png --------------------- - -After decoding, this contains extra information of the PNG image, except the -actual pixels, width and height because these are already gotten directly from -the decoder functions. - -It contains for example the original color type of the PNG image, text comments, -suggested background color, etc... More details about the LodePNGInfo struct are -at its declaration documentation. - -LodePNGColorMode info_raw -------------------------- - -When decoding, here you can specify which color type you want -the resulting raw image to be. If this is different from the colortype of the -PNG, then the decoder will automatically convert the result. This conversion -always works, except if you want it to convert a color PNG to greyscale or to -a palette with missing colors. - -By default, 32-bit color is used for the result. - -LodePNGDecoderSettings decoder ------------------------------- - -The settings can be used to ignore the errors created by invalid CRC and Adler32 -chunks, and to disable the decoding of tEXt chunks. - -There's also a setting color_convert, true by default. If false, no conversion -is done, the resulting data will be as it was in the PNG (after decompression) -and you'll have to puzzle the colors of the pixels together yourself using the -color type information in the LodePNGInfo. - - -5. Encoding ------------ - -Encoding converts a raw pixel buffer to a PNG compressed image. - -Most documentation on using the encoder is at its declarations in the header -above. For C, simple encoding can be done with functions such as -lodepng_encode32, and more advanced decoding can be done with the struct -LodePNGState and lodepng_encode. For C++, all encoding can be done with the -various lodepng::encode functions, and lodepng::State can be used for advanced -features. - -Like the decoder, the encoder can also give errors. However it gives less errors -since the encoder input is trusted, the decoder input (a PNG image that could -be forged by anyone) is not trusted. - -When using the LodePNGState, it uses the following fields for encoding: -*) LodePNGInfo info_png: here you specify how you want the PNG (the output) to -be. -*) LodePNGColorMode info_raw: here you say what color type of the raw image (the -input) has -*) LodePNGEncoderSettings encoder: you can specify a few settings for the -encoder to use - -LodePNGInfo info_png --------------------- - -When encoding, you use this the opposite way as when decoding: for encoding, -you fill in the values you want the PNG to have before encoding. By default it's -not needed to specify a color type for the PNG since it's automatically chosen, -but it's possible to choose it yourself given the right settings. - -The encoder will not always exactly match the LodePNGInfo struct you give, -it tries as close as possible. Some things are ignored by the encoder. The -encoder uses, for example, the following settings from it when applicable: -colortype and bitdepth, text chunks, time chunk, the color key, the palette, the -background color, the interlace method, unknown chunks, ... - -When encoding to a PNG with colortype 3, the encoder will generate a PLTE chunk. -If the palette contains any colors for which the alpha channel is not 255 (so -there are translucent colors in the palette), it'll add a tRNS chunk. - -LodePNGColorMode info_raw -------------------------- - -You specify the color type of the raw image that you give to the input here, -including a possible transparent color key and palette you happen to be using in -your raw image data. - -By default, 32-bit color is assumed, meaning your input has to be in RGBA -format with 4 bytes (unsigned chars) per pixel. - -LodePNGEncoderSettings encoder ------------------------------- - -The following settings are supported (some are in sub-structs): -*) auto_convert: when this option is enabled, the encoder will -automatically choose the smallest possible color mode (including color key) that -can encode the colors of all pixels without information loss. -*) btype: the block type for LZ77. 0 = uncompressed, 1 = fixed huffman tree, - 2 = dynamic huffman tree (best compression). Should be 2 for proper - compression. -*) use_lz77: whether or not to use LZ77 for compressed block types. Should be - true for proper compression. -*) windowsize: the window size used by the LZ77 encoder (1 - 32768). Has value - 2048 by default, but can be set to 32768 for better, but slow, compression. -*) force_palette: if colortype is 2 or 6, you can make the encoder write a PLTE - chunk if force_palette is true. This can used as suggested palette to convert - to by viewers that don't support more than 256 colors (if those still exist) -*) add_id: add text chunk "Encoder: LodePNG " to the image. -*) text_compression: default 1. If 1, it'll store texts as zTXt instead of tEXt -chunks. zTXt chunks use zlib compression on the text. This gives a smaller -result on large texts but a larger result on small texts (such as a single -program name). It's all tEXt or all zTXt though, there's no separate setting per -text yet. - - -6. color conversions --------------------- - -An important thing to note about LodePNG, is that the color type of the PNG, and -the color type of the raw image, are completely independent. By default, when -you decode a PNG, you get the result as a raw image in the color type you want, -no matter whether the PNG was encoded with a palette, greyscale or RGBA color. -And if you encode an image, by default LodePNG will automatically choose the PNG -color type that gives good compression based on the values of colors and amount -of colors in the image. It can be configured to let you control it instead as -well, though. - -To be able to do this, LodePNG does conversions from one color mode to another. -It can convert from almost any color type to any other color type, except the -following conversions: RGB to greyscale is not supported, and converting to a -palette when the palette doesn't have a required color is not supported. This is -not supported on purpose: this is information loss which requires a color -reduction algorithm that is beyong the scope of a PNG encoder (yes, RGB to grey -is easy, but there are multiple ways if you want to give some channels more -weight). - -By default, when decoding, you get the raw image in 32-bit RGBA or 24-bit RGB -color, no matter what color type the PNG has. And by default when encoding, -LodePNG automatically picks the best color model for the output PNG, and expects -the input image to be 32-bit RGBA or 24-bit RGB. So, unless you want to control -the color format of the images yourself, you can skip this chapter. - -6.1. PNG color types --------------------- - -A PNG image can have many color types, ranging from 1-bit color to 64-bit color, -as well as palettized color modes. After the zlib decompression and unfiltering -in the PNG image is done, the raw pixel data will have that color type and thus -a certain amount of bits per pixel. If you want the output raw image after -decoding to have another color type, a conversion is done by LodePNG. - -The PNG specification gives the following color types: - -0: greyscale, bit depths 1, 2, 4, 8, 16 -2: RGB, bit depths 8 and 16 -3: palette, bit depths 1, 2, 4 and 8 -4: greyscale with alpha, bit depths 8 and 16 -6: RGBA, bit depths 8 and 16 - -Bit depth is the amount of bits per pixel per color channel. So the total amount -of bits per pixel is: amount of channels * bitdepth. - -6.2. color conversions ----------------------- - -As explained in the sections about the encoder and decoder, you can specify -color types and bit depths in info_png and info_raw to change the default -behaviour. - -If, when decoding, you want the raw image to be something else than the default, -you need to set the color type and bit depth you want in the LodePNGColorMode, -or the parameters colortype and bitdepth of the simple decoding function. - -If, when encoding, you use another color type than the default in the raw input -image, you need to specify its color type and bit depth in the LodePNGColorMode -of the raw image, or use the parameters colortype and bitdepth of the simple -encoding function. - -If, when encoding, you don't want LodePNG to choose the output PNG color type -but control it yourself, you need to set auto_convert in the encoder settings -to false, and specify the color type you want in the LodePNGInfo of the -encoder (including palette: it can generate a palette if auto_convert is true, -otherwise not). - -If the input and output color type differ (whether user chosen or auto chosen), -LodePNG will do a color conversion, which follows the rules below, and may -sometimes result in an error. - -To avoid some confusion: --the decoder converts from PNG to raw image --the encoder converts from raw image to PNG --the colortype and bitdepth in LodePNGColorMode info_raw, are those of the raw -image -the colortype and bitdepth in the color field of LodePNGInfo info_png, -are those of the PNG -when encoding, the color type in LodePNGInfo is ignored if -auto_convert is enabled, it is automatically generated instead -when decoding, -the color type in LodePNGInfo is set by the decoder to that of the original PNG -image, but it can be ignored since the raw image has the color type you -requested instead -if the color type of the LodePNGColorMode and PNG image -aren't the same, a conversion between the color types is done if the color types -are supported. If it is not supported, an error is returned. If the types are -the same, no conversion is done. -even though some conversions aren't supported, -LodePNG supports loading PNGs from any colortype and saving PNGs to any -colortype, sometimes it just requires preparing the raw image correctly before -encoding. -both encoder and decoder use the same color converter. - -Non supported color conversions: --color to greyscale: no error is thrown, but the result will look ugly because -only the red channel is taken --anything to palette when that palette does not have that color in it: in this -case an error is thrown - -Supported color conversions: --anything to 8-bit RGB, 8-bit RGBA, 16-bit RGB, 16-bit RGBA --any grey or grey+alpha, to grey or grey+alpha --anything to a palette, as long as the palette has the requested colors in it --removing alpha channel --higher to smaller bitdepth, and vice versa - -If you want no color conversion to be done (e.g. for speed or control): --In the encoder, you can make it save a PNG with any color type by giving the -raw color mode and LodePNGInfo the same color mode, and setting auto_convert to -false. --In the decoder, you can make it store the pixel data in the same color type -as the PNG has, by setting the color_convert setting to false. Settings in -info_raw are then ignored. - -The function lodepng_convert does the color conversion. It is available in the -interface but normally isn't needed since the encoder and decoder already call -it. - -6.3. padding bits ------------------ - -In the PNG file format, if a less than 8-bit per pixel color type is used and -the scanlines have a bit amount that isn't a multiple of 8, then padding bits -are used so that each scanline starts at a fresh byte. But that is NOT true for -the LodePNG raw input and output. The raw input image you give to the encoder, -and the raw output image you get from the decoder will NOT have these padding -bits, e.g. in the case of a 1-bit image with a width of 7 pixels, the first -pixel of the second scanline will the the 8th bit of the first byte, not the -first bit of a new byte. - -6.4. A note about 16-bits per channel and endianness ----------------------------------------------------- - -LodePNG uses unsigned char arrays for 16-bit per channel colors too, just like -for any other color format. The 16-bit values are stored in big endian (most -significant byte first) in these arrays. This is the opposite order of the -little endian used by x86 CPU's. - -LodePNG always uses big endian because the PNG file format does so internally. -Conversions to other formats than PNG uses internally are not supported by -LodePNG on purpose, there are myriads of formats, including endianness of 16-bit -colors, the order in which you store R, G, B and A, and so on. Supporting and -converting to/from all that is outside the scope of LodePNG. - -This may mean that, depending on your use case, you may want to convert the big -endian output of LodePNG to little endian with a for loop. This is certainly not -always needed, many applications and libraries support big endian 16-bit colors -anyway, but it means you cannot simply cast the unsigned char* buffer to an -unsigned short* buffer on x86 CPUs. - - -7. error values ---------------- - -All functions in LodePNG that return an error code, return 0 if everything went -OK, or a non-zero code if there was an error. - -The meaning of the LodePNG error values can be retrieved with the function -lodepng_error_text: given the numerical error code, it returns a description -of the error in English as a string. - -Check the implementation of lodepng_error_text to see the meaning of each code. - - -8. chunks and PNG editing -------------------------- - -If you want to add extra chunks to a PNG you encode, or use LodePNG for a PNG -editor that should follow the rules about handling of unknown chunks, or if your -program is able to read other types of chunks than the ones handled by LodePNG, -then that's possible with the chunk functions of LodePNG. - -A PNG chunk has the following layout: - -4 bytes length -4 bytes type name -length bytes data -4 bytes CRC - -8.1. iterating through chunks ------------------------------ - -If you have a buffer containing the PNG image data, then the first chunk (the -IHDR chunk) starts at byte number 8 of that buffer. The first 8 bytes are the -signature of the PNG and are not part of a chunk. But if you start at byte 8 -then you have a chunk, and can check the following things of it. - -NOTE: none of these functions check for memory buffer boundaries. To avoid -exploits, always make sure the buffer contains all the data of the chunks. -When using lodepng_chunk_next, make sure the returned value is within the -allocated memory. - -unsigned lodepng_chunk_length(const unsigned char* chunk): - -Get the length of the chunk's data. The total chunk length is this length + 12. - -void lodepng_chunk_type(char type[5], const unsigned char* chunk): -unsigned char lodepng_chunk_type_equals(const unsigned char* chunk, const char* -type): - -Get the type of the chunk or compare if it's a certain type - -unsigned char lodepng_chunk_critical(const unsigned char* chunk): -unsigned char lodepng_chunk_private(const unsigned char* chunk): -unsigned char lodepng_chunk_safetocopy(const unsigned char* chunk): - -Check if the chunk is critical in the PNG standard (only IHDR, PLTE, IDAT and -IEND are). Check if the chunk is private (public chunks are part of the -standard, private ones not). Check if the chunk is safe to copy. If it's not, -then, when modifying data in a critical chunk, unsafe to copy chunks of the old -image may NOT be saved in the new one if your program doesn't handle that type -of unknown chunk. - -unsigned char* lodepng_chunk_data(unsigned char* chunk): -const unsigned char* lodepng_chunk_data_const(const unsigned char* chunk): - -Get a pointer to the start of the data of the chunk. - -unsigned lodepng_chunk_check_crc(const unsigned char* chunk): -void lodepng_chunk_generate_crc(unsigned char* chunk): - -Check if the crc is correct or generate a correct one. - -unsigned char* lodepng_chunk_next(unsigned char* chunk): -const unsigned char* lodepng_chunk_next_const(const unsigned char* chunk): - -Iterate to the next chunk. This works if you have a buffer with consecutive -chunks. Note that these functions do no boundary checking of the allocated data -whatsoever, so make sure there is enough data available in the buffer to be able -to go to the next chunk. - -unsigned lodepng_chunk_append(unsigned char** out, size_t* outlength, const -unsigned char* chunk): unsigned lodepng_chunk_create(unsigned char** out, -size_t* outlength, unsigned length, const char* type, const unsigned char* -data): - -These functions are used to create new chunks that are appended to the data in -*out that has length *outlength. The append function appends an existing chunk -to the new data. The create function creates a new chunk with the given -parameters and appends it. Type is the 4-letter name of the chunk. - -8.2. chunks in info_png ------------------------ - -The LodePNGInfo struct contains fields with the unknown chunk in it. It has 3 -buffers (each with size) to contain 3 types of unknown chunks: -the ones that come before the PLTE chunk, the ones that come between the PLTE -and the IDAT chunks, and the ones that come after the IDAT chunks. -It's necessary to make the distionction between these 3 cases because the PNG -standard forces to keep the ordering of unknown chunks compared to the critical -chunks, but does not force any other ordering rules. - -info_png.unknown_chunks_data[0] is the chunks before PLTE -info_png.unknown_chunks_data[1] is the chunks after PLTE, before IDAT -info_png.unknown_chunks_data[2] is the chunks after IDAT - -The chunks in these 3 buffers can be iterated through and read by using the same -way described in the previous subchapter. - -When using the decoder to decode a PNG, you can make it store all unknown chunks -if you set the option settings.remember_unknown_chunks to 1. By default, this -option is off (0). - -The encoder will always encode unknown chunks that are stored in the info_png. -If you need it to add a particular chunk that isn't known by LodePNG, you can -use lodepng_chunk_append or lodepng_chunk_create to the chunk data in -info_png.unknown_chunks_data[x]. - -Chunks that are known by LodePNG should not be added in that way. E.g. to make -LodePNG add a bKGD chunk, set background_defined to true and add the correct -parameters there instead. - - -9. compiler support -------------------- - -No libraries other than the current standard C library are needed to compile -LodePNG. For the C++ version, only the standard C++ library is needed on top. -Add the files lodepng.c(pp) and lodepng.h to your project, include -lodepng.h where needed, and your program can read/write PNG files. - -It is compatible with C90 and up, and C++03 and up. - -If performance is important, use optimization when compiling! For both the -encoder and decoder, this makes a large difference. - -Make sure that LodePNG is compiled with the same compiler of the same version -and with the same settings as the rest of the program, or the interfaces with -std::vectors and std::strings in C++ can be incompatible. - -CHAR_BITS must be 8 or higher, because LodePNG uses unsigned chars for octets. - -*) gcc and g++ - -LodePNG is developed in gcc so this compiler is natively supported. It gives no -warnings with compiler options "-Wall -Wextra -pedantic -ansi", with gcc and g++ -version 4.7.1 on Linux, 32-bit and 64-bit. - -*) Clang - -Fully supported and warning-free. - -*) Mingw - -The Mingw compiler (a port of gcc for Windows) should be fully supported by -LodePNG. - -*) Visual Studio and Visual C++ Express Edition - -LodePNG should be warning-free with warning level W4. Two warnings were disabled -with pragmas though: warning 4244 about implicit conversions, and warning 4996 -where it wants to use a non-standard function fopen_s instead of the standard C -fopen. - -Visual Studio may want "stdafx.h" files to be included in each source file and -give an error "unexpected end of file while looking for precompiled header". -This is not standard C++ and will not be added to the stock LodePNG. You can -disable it for lodepng.cpp only by right clicking it, Properties, C/C++, -Precompiled Headers, and set it to Not Using Precompiled Headers there. - -NOTE: Modern versions of VS should be fully supported, but old versions, e.g. -VS6, are not guaranteed to work. - -*) Compilers on Macintosh - -LodePNG has been reported to work both with gcc and LLVM for Macintosh, both for -C and C++. - -*) Other Compilers - -If you encounter problems on any compilers, feel free to let me know and I may -try to fix it if the compiler is modern and standards complient. - - -10. examples ------------- - -This decoder example shows the most basic usage of LodePNG. More complex -examples can be found on the LodePNG website. - -10.1. decoder C++ example -------------------------- - -#include "lodepng.h" -#include - -int main(int argc, char *argv[]) { - const char* filename = argc > 1 ? argv[1] : "test.png"; - - //load and decode - std::vector image; - unsigned width, height; - unsigned error = lodepng::decode(image, width, height, filename); - - //if there's an error, display it - if(error) std::cout << "decoder error " << error << ": " << -lodepng_error_text(error) << std::endl; - - //the pixels are now in the vector "image", 4 bytes per pixel, ordered -RGBARGBA..., use it as texture, draw it, ... -} - -10.2. decoder C example ------------------------ - -#include "lodepng.h" - -int main(int argc, char *argv[]) { - unsigned error; - unsigned char* image; - size_t width, height; - const char* filename = argc > 1 ? argv[1] : "test.png"; - - error = lodepng_decode32_file(&image, &width, &height, filename); - - if(error) printf("decoder error %u: %s\n", error, lodepng_error_text(error)); - - / * use image here * / - - free(image); - return 0; -} - -11. state settings reference ----------------------------- - -A quick reference of some settings to set on the LodePNGState - -For decoding: - -state.decoder.zlibsettings.ignore_adler32: ignore ADLER32 checksums -state.decoder.zlibsettings.custom_...: use custom inflate function -state.decoder.ignore_crc: ignore CRC checksums -state.decoder.ignore_critical: ignore unknown critical chunks -state.decoder.ignore_end: ignore missing IEND chunk. May fail if this corruption -causes other errors state.decoder.color_convert: convert internal PNG color to -chosen one state.decoder.read_text_chunks: whether to read in text metadata -chunks state.decoder.remember_unknown_chunks: whether to read in unknown chunks -state.info_raw.colortype: desired color type for decoded image -state.info_raw.bitdepth: desired bit depth for decoded image -state.info_raw....: more color settings, see struct LodePNGColorMode -state.info_png....: no settings for decoder but ouput, see struct LodePNGInfo - -For encoding: - -state.encoder.zlibsettings.btype: disable compression by setting it to 0 -state.encoder.zlibsettings.use_lz77: use LZ77 in compression -state.encoder.zlibsettings.windowsize: tweak LZ77 windowsize -state.encoder.zlibsettings.minmatch: tweak min LZ77 length to match -state.encoder.zlibsettings.nicematch: tweak LZ77 match where to stop searching -state.encoder.zlibsettings.lazymatching: try one more LZ77 matching -state.encoder.zlibsettings.custom_...: use custom deflate function -state.encoder.auto_convert: choose optimal PNG color type, if 0 uses info_png -state.encoder.filter_palette_zero: PNG filter strategy for palette -state.encoder.filter_strategy: PNG filter strategy to encode with -state.encoder.force_palette: add palette even if not encoding to one -state.encoder.add_id: add LodePNG identifier and version as a text chunk -state.encoder.text_compression: use compressed text chunks for metadata -state.info_raw.colortype: color type of raw input image you provide -state.info_raw.bitdepth: bit depth of raw input image you provide -state.info_raw: more color settings, see struct LodePNGColorMode -state.info_png.color.colortype: desired color type if auto_convert is false -state.info_png.color.bitdepth: desired bit depth if auto_convert is false -state.info_png.color....: more color settings, see struct LodePNGColorMode -state.info_png....: more PNG related settings, see struct LodePNGInfo - - -12. changes ------------ - -The version number of LodePNG is the date of the change given in the format -yyyymmdd. - -Some changes aren't backwards compatible. Those are indicated with a (!) -symbol. - -*) 30 dec 2018: code style changes only: removed newlines before opening braces. -*) 10 sep 2018: added way to inspect metadata chunks without full decoding. -*) 19 aug 2018 (!): fixed color mode bKGD is encoded with and made it use - palette index in case of palette. -*) 10 aug 2018 (!): added support for gAMA, cHRM, sRGB and iCCP chunks. This - change is backwards compatible unless you relied on unknown_chunks for those. -*) 11 jun 2018: less restrictive check for pixel size integer overflow -*) 14 jan 2018: allow optionally ignoring a few more recoverable errors -*) 17 sep 2017: fix memory leak for some encoder input error cases -*) 27 nov 2016: grey+alpha auto color model detection bugfix -*) 18 apr 2016: Changed qsort to custom stable sort (for platforms w/o qsort). -*) 09 apr 2016: Fixed colorkey usage detection, and better file loading (within - the limits of pure C90). -*) 08 dec 2015: Made load_file function return error if file can't be opened. -*) 24 okt 2015: Bugfix with decoding to palette output. -*) 18 apr 2015: Boundary PM instead of just package-merge for faster encoding. -*) 23 aug 2014: Reduced needless memory usage of decoder. -*) 28 jun 2014: Removed fix_png setting, always support palette OOB for - simplicity. Made ColorProfile public. -*) 09 jun 2014: Faster encoder by fixing hash bug and more zeros optimization. -*) 22 dec 2013: Power of two windowsize required for optimization. -*) 15 apr 2013: Fixed bug with LAC_ALPHA and color key. -*) 25 mar 2013: Added an optional feature to ignore some PNG errors (fix_png). -*) 11 mar 2013 (!): Bugfix with custom free. Changed from "my" to "lodepng_" - prefix for the custom allocators and made it possible with a new #define to - use custom ones in your project without needing to change lodepng's code. -*) 28 jan 2013: Bugfix with color key. -*) 27 okt 2012: Tweaks in text chunk keyword length error handling. -*) 8 okt 2012 (!): Added new filter strategy (entropy) and new auto color mode. - (no palette). Better deflate tree encoding. New compression tweak settings. - Faster color conversions while decoding. Some internal cleanups. -*) 23 sep 2012: Reduced warnings in Visual Studio a little bit. -*) 1 sep 2012 (!): Removed #define's for giving custom (de)compression functions - and made it work with function pointers instead. -*) 23 jun 2012: Added more filter strategies. Made it easier to use custom alloc - and free functions and toggle #defines from compiler flags. Small fixes. -*) 6 may 2012 (!): Made plugging in custom zlib/deflate functions more flexible. -*) 22 apr 2012 (!): Made interface more consistent, renaming a lot. Removed - redundant C++ codec classes. Reduced amount of structs. Everything changed, - but it is cleaner now imho and functionality remains the same. Also fixed - several bugs and shrunk the implementation code. Made new samples. -*) 6 nov 2011 (!): By default, the encoder now automatically chooses the best - PNG color model and bit depth, based on the amount and type of colors of the - raw image. For this, autoLeaveOutAlphaChannel replaced by auto_choose_color. -*) 9 okt 2011: simpler hash chain implementation for the encoder. -*) 8 sep 2011: lz77 encoder lazy matching instead of greedy matching. -*) 23 aug 2011: tweaked the zlib compression parameters after benchmarking. - A bug with the PNG filtertype heuristic was fixed, so that it chooses much - better ones (it's quite significant). A setting to do an experimental, slow, - brute force search for PNG filter types is added. -*) 17 aug 2011 (!): changed some C zlib related function names. -*) 16 aug 2011: made the code less wide (max 120 characters per line). -*) 17 apr 2011: code cleanup. Bugfixes. Convert low to 16-bit per sample colors. -*) 21 feb 2011: fixed compiling for C90. Fixed compiling with sections disabled. -*) 11 dec 2010: encoding is made faster, based on suggestion by Peter Eastman - to optimize long sequences of zeros. -*) 13 nov 2010: added LodePNG_InfoColor_hasPaletteAlpha and - LodePNG_InfoColor_canHaveAlpha functions for convenience. -*) 7 nov 2010: added LodePNG_error_text function to get error code description. -*) 30 okt 2010: made decoding slightly faster -*) 26 okt 2010: (!) changed some C function and struct names (more consistent). - Reorganized the documentation and the declaration order in the header. -*) 08 aug 2010: only changed some comments and external samples. -*) 05 jul 2010: fixed bug thanks to warnings in the new gcc version. -*) 14 mar 2010: fixed bug where too much memory was allocated for char buffers. -*) 02 sep 2008: fixed bug where it could create empty tree that linux apps could - read by ignoring the problem but windows apps couldn't. -*) 06 jun 2008: added more error checks for out of memory cases. -*) 26 apr 2008: added a few more checks here and there to ensure more safety. -*) 06 mar 2008: crash with encoding of strings fixed -*) 02 feb 2008: support for international text chunks added (iTXt) -*) 23 jan 2008: small cleanups, and #defines to divide code in sections -*) 20 jan 2008: support for unknown chunks allowing using LodePNG for an editor. -*) 18 jan 2008: support for tIME and pHYs chunks added to encoder and decoder. -*) 17 jan 2008: ability to encode and decode compressed zTXt chunks added - Also various fixes, such as in the deflate and the padding bits code. -*) 13 jan 2008: Added ability to encode Adam7-interlaced images. Improved - filtering code of encoder. -*) 07 jan 2008: (!) changed LodePNG to use ISO C90 instead of C++. A - C++ wrapper around this provides an interface almost identical to before. - Having LodePNG be pure ISO C90 makes it more portable. The C and C++ code - are together in these files but it works both for C and C++ compilers. -*) 29 dec 2007: (!) changed most integer types to unsigned int + other tweaks -*) 30 aug 2007: bug fixed which makes this Borland C++ compatible -*) 09 aug 2007: some VS2005 warnings removed again -*) 21 jul 2007: deflate code placed in new namespace separate from zlib code -*) 08 jun 2007: fixed bug with 2- and 4-bit color, and small interlaced images -*) 04 jun 2007: improved support for Visual Studio 2005: crash with accessing - invalid std::vector element [0] fixed, and level 3 and 4 warnings removed -*) 02 jun 2007: made the encoder add a tag with version by default -*) 27 may 2007: zlib and png code separated (but still in the same file), - simple encoder/decoder functions added for more simple usage cases -*) 19 may 2007: minor fixes, some code cleaning, new error added (error 69), - moved some examples from here to lodepng_examples.cpp -*) 12 may 2007: palette decoding bug fixed -*) 24 apr 2007: changed the license from BSD to the zlib license -*) 11 mar 2007: very simple addition: ability to encode bKGD chunks. -*) 04 mar 2007: (!) tEXt chunk related fixes, and support for encoding - palettized PNG images. Plus little interface change with palette and texts. -*) 03 mar 2007: Made it encode dynamic Huffman shorter with repeat codes. - Fixed a bug where the end code of a block had length 0 in the Huffman tree. -*) 26 feb 2007: Huffman compression with dynamic trees (BTYPE 2) now implemented - and supported by the encoder, resulting in smaller PNGs at the output. -*) 27 jan 2007: Made the Adler-32 test faster so that a timewaste is gone. -*) 24 jan 2007: gave encoder an error interface. Added color conversion from any - greyscale type to 8-bit greyscale with or without alpha. -*) 21 jan 2007: (!) Totally changed the interface. It allows more color types - to convert to and is more uniform. See the manual for how it works now. -*) 07 jan 2007: Some cleanup & fixes, and a few changes over the last days: - encode/decode custom tEXt chunks, separate classes for zlib & deflate, and - at last made the decoder give errors for incorrect Adler32 or Crc. -*) 01 jan 2007: Fixed bug with encoding PNGs with less than 8 bits per channel. -*) 29 dec 2006: Added support for encoding images without alpha channel, and - cleaned out code as well as making certain parts faster. -*) 28 dec 2006: Added "Settings" to the encoder. -*) 26 dec 2006: The encoder now does LZ77 encoding and produces much smaller -files now. Removed some code duplication in the decoder. Fixed little bug in an -example. -*) 09 dec 2006: (!) Placed output parameters of public functions as first -parameter. Fixed a bug of the decoder with 16-bit per color. -*) 15 okt 2006: Changed documentation structure -*) 09 okt 2006: Encoder class added. It encodes a valid PNG image from the - given image buffer, however for now it's not compressed. -*) 08 sep 2006: (!) Changed to interface with a Decoder class -*) 30 jul 2006: (!) LodePNG_InfoPng , width and height are now retrieved in -different way. Renamed decodePNG to decodePNGGeneric. -*) 29 jul 2006: (!) Changed the interface: image info is now returned as a - struct of type LodePNG::LodePNG_Info, instead of a vector, which was a bit -clumsy. -*) 28 jul 2006: Cleaned the code and added new error checks. - Corrected terminology "deflate" into "inflate". -*) 23 jun 2006: Added SDL example in the documentation in the header, this - example allows easy debugging by displaying the PNG and its transparency. -*) 22 jun 2006: (!) Changed way to obtain error value. Added - loadFile function for convenience. Made decodePNG32 faster. -*) 21 jun 2006: (!) Changed type of info vector to unsigned. - Changed position of palette in info vector. Fixed an important bug that - happened on PNGs with an uncompressed block. -*) 16 jun 2006: Internally changed unsigned into unsigned where - needed, and performed some optimizations. -*) 07 jun 2006: (!) Renamed functions to decodePNG and placed them - in LodePNG namespace. Changed the order of the parameters. Rewrote the - documentation in the header. Renamed files to lodepng.cpp and lodepng.h -*) 22 apr 2006: Optimized and improved some code -*) 07 sep 2005: (!) Changed to std::vector interface -*) 12 aug 2005: Initial release (C++, decoder only) - - -13. contact information ------------------------ - -Feel free to contact me with suggestions, problems, comments, ... concerning -LodePNG. If you encounter a PNG image that doesn't work properly with this -decoder, feel free to send it and I'll use it to find and fix the problem. - -My email address is (puzzle the account and domain together with an @ symbol): -Domain: gmail dot com. -Account: lode dot vandevenne. - - -Copyright (c) 2005-2018 Lode Vandevenne -*/ diff --git a/Platforms/SurfaceDuoFamilyPkg/Include/Library/minstdint.h b/Platforms/SurfaceDuoFamilyPkg/Include/Library/minstdint.h deleted file mode 100644 index 2a017ea8..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Include/Library/minstdint.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef __MIN_STDINT_H__ -#define __MIN_STDINT_H__ - -#include - -typedef UINTN size_t; - -typedef INT8 int8_t; -typedef INT16 int16_t; -typedef INT32 int32_t; -typedef INT64 int64_t; - -typedef UINT8 uint8_t; -typedef UINT16 uint16_t; -typedef UINT32 uint32_t; -typedef UINT64 uint64_t; - -typedef UINTN addr_t; -typedef UINTN paddr_t; - -typedef UINT8 u8; -typedef UINT16 u16; -typedef UINT32 u32; -typedef UINT64 u64; - -#ifndef INT16_MIN -#define INT16_MIN MIN_INT16 -#endif - -#ifndef INT16_MAX -#define INT16_MAX MAX_INT16 -#endif - -#ifndef UINT16_MIN -#define UINT16_MIN MIN_UINT16 -#endif - -#ifndef UINT16_MAX -#define UINT16_MAX MAX_UINT16 -#endif - -#ifndef INT32_MIN -#define INT32_MIN MIN_INT32 -#endif - -#ifndef INT32_MAX -#define INT32_MAX MAX_INT32 -#endif - -#ifndef UINT32_MIN -#define UINT32_MIN MIN_UINT32 -#endif - -#ifndef UINT32_MAX -#define UINT32_MAX MAX_UINT32 -#endif - -#ifndef UINT_MAX -#define UINT_MAX MAX_UINTN -#endif - -#ifndef ULONG_MAX -#define ULONG_MAX (~0UL) -#endif - -#ifndef LONG_MAX -#define LONG_MAX ((long)(~0UL >> 1)) -#endif - -#endif diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.c b/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.c deleted file mode 100644 index cc4297ab..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.c +++ /dev/null @@ -1,218 +0,0 @@ -/** @file -This BootGraphicsLib is only intended to be used by BDS to draw -and the main boot graphics to the screen. - -Implementation borrows from Edk2 BootLogoLib - -Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.
-Copyright (C) Microsoft Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -EFI_STATUS -EFIAPI -DisplayBootGraphic ( - BOOT_GRAPHIC Graphic - ) -{ - EFI_STATUS Status; - UINTN Height; - UINTN Width; - UINT32 SizeOfX; - UINT32 SizeOfY; - INTN DestX; - INTN DestY; - UINT8 *ImageData; - UINTN ImageSize; - UINT32 Color; - EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Blt; - UINTN BltSize; - EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput; - EDKII_BOOT_LOGO2_PROTOCOL *BootLogo2; - UINT8 SkipCounter; - - // Initialize pointers to prevent CleanUp failure - ImageData = NULL; - Blt = NULL; - - // - // Try to open GOP first - // - Status = gBS->HandleProtocol (gST->ConsoleOutHandle, &gEfiGraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_WARN, "%a - Failed to find GOP on ConsoleOutHandle. %r\n", __FUNCTION__, Status)); - // failed on console out. Try globally within system - Status = gBS->LocateProtocol (&gEfiGraphicsOutputProtocolGuid, NULL, (VOID **)&GraphicsOutput); - } - - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a - Failed to find GOP globally. %r\n", __FUNCTION__, Status)); - goto CleanUp; - } - - // - // Try to open Boot Logo 2 Protocol. - // - Status = gBS->LocateProtocol (&gEdkiiBootLogo2ProtocolGuid, NULL, (VOID **)&BootLogo2); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_WARN, "%a - Failed to find BootLogo2 Protocol. %r\n", __FUNCTION__, Status)); - BootLogo2 = NULL; - } - - // - // Erase Cursor from screen - // - if (gST->ConOut != NULL) { - gST->ConOut->EnableCursor (gST->ConOut, FALSE); - } else { - DEBUG ((DEBUG_WARN, "%a - ConOut is NULL, will not disable cursor\n", __FUNCTION__)); - } - - SizeOfX = GraphicsOutput->Mode->Info->HorizontalResolution; - SizeOfY = GraphicsOutput->Mode->Info->VerticalResolution; - - Blt = NULL; - DestX = 0; - DestY = 0; - - /// - /// Print Mode information received from Graphics Output Protocol - /// - DEBUG ((DEBUG_INFO, "MaxMode:0x%x \n", GraphicsOutput->Mode->MaxMode)); - DEBUG ((DEBUG_INFO, "Mode:0x%x \n", GraphicsOutput->Mode->Mode)); - DEBUG ((DEBUG_INFO, "SizeOfInfo:0x%x \n", GraphicsOutput->Mode->SizeOfInfo)); - DEBUG ((DEBUG_INFO, "FrameBufferBase:0x%x \n", GraphicsOutput->Mode->FrameBufferBase)); - DEBUG ((DEBUG_INFO, "FrameBufferSize:0x%x \n", GraphicsOutput->Mode->FrameBufferSize)); - DEBUG ((DEBUG_INFO, "Version:0x%x \n", GraphicsOutput->Mode->Info->Version)); - DEBUG ((DEBUG_INFO, "HorizontalResolution:0x%x \n", GraphicsOutput->Mode->Info->HorizontalResolution)); - DEBUG ((DEBUG_INFO, "VerticalResolution:0x%x \n", GraphicsOutput->Mode->Info->VerticalResolution)); - DEBUG ((DEBUG_INFO, "PixelFormat:0x%x \n", GraphicsOutput->Mode->Info->PixelFormat)); - DEBUG ((DEBUG_INFO, "PixelsPerScanLine:0x%x \n", GraphicsOutput->Mode->Info->PixelsPerScanLine)); - - // allow for custom bg color - Color = GetBackgroundColor (); - - // Color background when counter BackgroundColoringSkipCounter reaches 0 - - SkipCounter = PcdGet8 (PcdPostBackgroundColoringSkipCount); - // Color background only when counter reaches 0; - if (SkipCounter == 0) { - Blt = (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *)(&Color); // only pixel (0,0) is used for EfiBltVideoFill - Status = GraphicsOutput->Blt ( - GraphicsOutput, - Blt, - EfiBltVideoFill, - 0, - 0, - 0, - 0, - SizeOfX, - SizeOfY, - 0 - ); - DEBUG ((DEBUG_INFO, "Coloring Background to color 0x%x. Status: %r \n", Color, Status)); - Blt = NULL; - } - - // decrement counter if not zero - if (SkipCounter > 0) { - SkipCounter--; - Status = PcdSet8S (PcdPostBackgroundColoringSkipCount, SkipCounter); - } - - // Draw our device state - DisplayDeviceState ( - (INT32)SizeOfX, - (INT32)SizeOfY - ); - - Status = GetBootGraphic (Graphic, &ImageSize, &ImageData); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "GetPlatformBootGraphic Status: %r\n", Status)); - goto CleanUp; - } - - // - // Convert Bmp To Blt Buffer - // - Status = TranslateBmpToGopBlt (ImageData, ImageSize, &Blt, &BltSize, &Height, &Width); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "Failed to TranslateBmpToGopBlt In Logo.c %r\n", Status)); - goto CleanUp; - } - - if (SizeOfX >= SizeOfY) { - DEBUG ((DEBUG_VERBOSE, "Landscape mode detected.\n")); - } - - DestX = (SizeOfX - Width) / 2; - DestY = (SizeOfY - Height) / 2; - - // Blt to screen - if ((DestX >= 0) && (DestY >= 0)) { - Status = GraphicsOutput->Blt ( - GraphicsOutput, - Blt, - EfiBltBufferToVideo, - 0, - 0, - (UINTN)DestX, - (UINTN)DestY, - Width, - Height, - Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) - ); - } else { - DEBUG ((DEBUG_ERROR, "Something really wrong with logo size and orientation. DestX = 0x%X DestY = 0x%X\n", DestX, DestY)); - goto CleanUp; - } - - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a - Gop->Blt Error %r\n", __FUNCTION__, Status)); - } - - if (!EFI_ERROR (Status)) { - // - // Attempt to register logo with Boot Logo 2 Protocol - // - if ((Graphic == BG_SYSTEM_LOGO) && (BootLogo2 != NULL)) { - Status = BootLogo2->SetBootLogo (BootLogo2, Blt, DestX, DestY, Width, Height); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a - BootLogo2 Error %r\n", __FUNCTION__, Status)); - } - } - - // Signals that boot graphics has been displayed - EfiEventGroupSignal (&gLogoDisplayedEventGroup); - - // - // Status of this function is EFI_SUCCESS even if registration with Boot - // Logo 2 Protocol fails. - // - Status = EFI_SUCCESS; - } - -CleanUp: - if (Blt != NULL) { - FreePool (Blt); - } - - if (ImageData != NULL) { - FreePool (ImageData); - } - - return Status; -} diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.inf b/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.inf deleted file mode 100644 index 964019e2..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/BootGraphicsLib.inf +++ /dev/null @@ -1,49 +0,0 @@ -## @file -# This library is for showing the main system boot graphics. -# -# Copyright (C) Microsoft Corporation. All rights reserved.. -## SPDX-License-Identifier: BSD-2-Clause-Patent -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = BootGraphicsLib - FILE_GUID = 0d42b5bd-b0d0-41e8-8432-8cc303b672f2 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = BootGraphicsLib|DXE_DRIVER UEFI_APPLICATION - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 AARCH64 -# - -[Sources] - BootGraphicsLib.c - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - MsGraphicsPkg/MsGraphicsPkg.dec - -[LibraryClasses] - UefiBootServicesTableLib - UefiLib - DebugLib - PcdLib - DisplayDeviceStateLib - BootGraphicsProviderLib - BmpSupportLib - MemoryAllocationLib - -[Protocols] - gEfiGraphicsOutputProtocolGuid ## SOMETIMES_CONSUMES - gEdkiiBootLogo2ProtocolGuid ## SOMETIMES_CONSUMES - -[Guids] - gLogoDisplayedEventGroup ## CONSUMES - -[Pcd] - gMsGraphicsPkgTokenSpaceGuid.PcdPostBackgroundColoringSkipCount - diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/ReadMe.md b/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/ReadMe.md deleted file mode 100644 index 2f968596..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsLib/ReadMe.md +++ /dev/null @@ -1,11 +0,0 @@ -# Boot Graphics Library - -## About - -This BootGraphicsLib is only intended to be used by BDS to draw the main boot graphics to the -screen. - -## Copyright - -Copyright (C) Microsoft Corporation. All rights reserved. -SPDX-License-Identifier: BSD-2-Clause-Patent diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.c b/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.c deleted file mode 100644 index 8d9cb487..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.c +++ /dev/null @@ -1,103 +0,0 @@ -/** @file - This BootGraphicsProviderLib is intended to abstract the source of the - BMP files from the caller - - This instance uses defined PCDs and RAW FFS files - - Copyright (C) Microsoft Corporation. All rights reserved. - SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include - -/** - Get the requested boot graphic - -**/ -EFI_STATUS -EFIAPI -GetBootGraphic ( - BOOT_GRAPHIC Graphic, - OUT UINTN *ImageSize, - OUT UINT8 **ImageData - ) -{ - EFI_GUID *g = NULL; - - unsigned char *DecodedData; - unsigned int Width; - unsigned int Height; - UINT32 DecoderError; - EFI_STATUS Status = EFI_SUCCESS; - - switch (Graphic) { - case BG_SYSTEM_LOGO: - g = PcdGetPtr (PcdLogoFile); - break; - case BG_CRITICAL_OVER_TEMP: - g = PcdGetPtr (PcdThermalFile); - break; - case BG_CRITICAL_LOW_BATTERY: - g = PcdGetPtr (PcdLowBatteryFile); - break; - default: - DEBUG ((DEBUG_ERROR, "Unsupported Boot Graphic Type 0x%X\n", Graphic)); - return EFI_UNSUPPORTED; - } - - // - // Get the specified image from FV. - // - Status = GetSectionFromAnyFv (g, EFI_SECTION_RAW, 0, (VOID **)ImageData, ImageSize); - - if (!EFI_ERROR(Status) && - (*ImageSize > 4) && - ((unsigned char *)*ImageData)[1] == 'P' && - ((unsigned char *)*ImageData)[2] == 'N' && - ((unsigned char *)*ImageData)[3] == 'G') { - // Decode PNG - DecoderError = lodepng_decode32( - &DecodedData, &Width, &Height, (unsigned char *)*ImageData, - (size_t)*ImageSize); - - if (!DecoderError) { - ConvertBetweenBGRAandRGBA(DecodedData, Width, Height); - - // - // Convert GOP Blt buffer to BMP image. Pass in ImageBuffer set to NULL - // so the BMP image is allocated by TranslateGopBltToBmp(). - // - *ImageData = NULL; - *ImageSize = 0; - - Status = TranslateGopBltToBmp( - (EFI_GRAPHICS_OUTPUT_BLT_PIXEL *)DecodedData, (UINT32)Height, - (UINT32)Width, (VOID **)ImageData, (UINT32 *)ImageSize); - } - else { - return EFI_UNSUPPORTED; - } - } - - return Status; -} - -UINT32 -EFIAPI -GetBackgroundColor ( - ) -{ - return PcdGet32 (PcdPostBackgroundColor); -} diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.inf b/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.inf deleted file mode 100644 index 4090a2d2..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/BootGraphicsProviderLib/BootGraphicsProviderLib.inf +++ /dev/null @@ -1,49 +0,0 @@ -## @file -# BootGraphicsProviderLib that uses PCDs and raw files in the firmware volumes -# -# Copyright (C) Microsoft Corporation. All rights reserved. -# SPDX-License-Identifier: BSD-2-Clause-Patent -# -## - -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = BootGraphicsProviderLib - FILE_GUID = 3f7bd07a-1436-4486-8a8b-e7957d171ad7 - MODULE_TYPE = DXE_DRIVER - VERSION_STRING = 1.0 - LIBRARY_CLASS = BootGraphicsProviderLib|DXE_DRIVER UEFI_APPLICATION - -# -# The following information is for reference only and not required by the build tools. -# -# VALID_ARCHITECTURES = IA32 X64 AARCH64 -# - -[Sources] - BootGraphicsProviderLib.c - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - OemPkg/OemPkg.dec - MsGraphicsPkg/MsGraphicsPkg.dec - SurfaceDuoFamilyPkg/SurfaceDuoFamilyPkg.dec - -[LibraryClasses] - UefiBootServicesTableLib - DebugLib - PcdLib - DxeServicesLib - BmpSupportLib - LodePngLib - - -[Protocols] - - -[Pcd] - gOemPkgTokenSpaceGuid.PcdLogoFile - gOemPkgTokenSpaceGuid.PcdLowBatteryFile - gOemPkgTokenSpaceGuid.PcdThermalFile - gOemPkgTokenSpaceGuid.PcdPostBackgroundColor diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/LodePngLib.inf b/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/LodePngLib.inf deleted file mode 100644 index 1de710a3..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/LodePngLib.inf +++ /dev/null @@ -1,26 +0,0 @@ -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = LodePngLib - FILE_GUID = abf96351-5992-416e-8dba-a5d329da033b - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = LodePngLib - -[Packages] - ArmPkg/ArmPkg.dec - MdePkg/MdePkg.dec - SurfaceDuoFamilyPkg/SurfaceDuoFamilyPkg.dec - -[LibraryClasses] - BaseLib - IoLib - PrintLib - DebugLib - TimerLib - CacheMaintenanceLib - ArmLib - MallocLib - -[Sources.common] - lodepng.c - PngConvert.c \ No newline at end of file diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/PngConvert.c b/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/PngConvert.c deleted file mode 100644 index 44e60825..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/PngConvert.c +++ /dev/null @@ -1,18 +0,0 @@ -#include - -#include - -void ConvertBetweenBGRAandRGBA(UINT8 *input, int pixel_width, int pixel_height) -{ - int offset = 0; - - for (int y = 0; y < pixel_height; y++) { - for (int x = 0; x < pixel_width; x++) { - input[offset] ^= input[offset + 2]; - input[offset + 2] ^= input[offset]; - input[offset] ^= input[offset + 2]; - - offset += 4; - } - } -} \ No newline at end of file diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/lodepng.c b/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/lodepng.c deleted file mode 100644 index 37918bc4..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/LodePngLib/lodepng.c +++ /dev/null @@ -1,7612 +0,0 @@ -/* -LodePNG version 20181230 - -Copyright (c) 2005-2018 Lode Vandevenne - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. -*/ - -/* -The manual and changelog are in the header file "lodepng.h" -Rename this file to lodepng.cpp to use it for C++, or to lodepng.c to use it for -C. -*/ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -extern void *realloc(void *ptr, size_t size); /* Stub */ - -#if defined(_MSC_VER) && \ - (_MSC_VER >= \ - 1310) /*Visual Studio: A few warning types are not desired here.*/ -#pragma warning(disable : 4244) /*implicit conversions: not warned by gcc \ - -Wall -Wextra and requires too much casts*/ -#pragma warning(disable : 4996) /*VS does not like fopen, but fopen_s is not \ - standard C so unusable here*/ -#endif /*_MSC_VER */ - -const char *LODEPNG_VERSION_STRING = "20181230"; - -/* -This source file is built up in the following large parts. The code sections -with the "LODEPNG_COMPILE_" #defines divide this up further in an intermixed -way. -Tools for C and common code for PNG and Zlib -C Code for Zlib (huffman, -deflate, ...) -C Code for PNG (file format chunks, adam7, PNG filters, color -conversions, ...) -The C++ wrapper around all of the above -*/ - -/*The malloc, realloc and free functions defined here with "lodepng_" in front -of the name, so that you can easily change them to others related to your -platform if needed. Everything else in the code calls these. Pass --DLODEPNG_NO_COMPILE_ALLOCATORS to the compiler, or comment out -#define LODEPNG_COMPILE_ALLOCATORS in the header, to disable the ones here and -define them in your own project's source files without needing to change -lodepng source code. Don't forget to remove "static" if you copypaste them -from here.*/ - -#ifdef LODEPNG_COMPILE_ALLOCATORS -static void *lodepng_malloc(size_t size) -{ -#ifdef LODEPNG_MAX_ALLOC - if (size > LODEPNG_MAX_ALLOC) - return 0; -#endif - return malloc(size); -} - -static void *lodepng_realloc(void *ptr, size_t new_size) -{ -#ifdef LODEPNG_MAX_ALLOC - if (new_size > LODEPNG_MAX_ALLOC) - return 0; -#endif - return realloc(ptr, new_size); -} - -static void lodepng_free(void *ptr) { free(ptr); } -#else /*LODEPNG_COMPILE_ALLOCATORS*/ -void * lodepng_malloc(size_t size); -void * lodepng_realloc(void *ptr, size_t new_size); -void lodepng_free(void *ptr); -#endif /*LODEPNG_COMPILE_ALLOCATORS*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* // Tools for C, and common code for PNG and Zlib. // */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#define LODEPNG_MAX(a, b) (((a) > (b)) ? (a) : (b)) -#define LODEPNG_MIN(a, b) (((a) < (b)) ? (a) : (b)) - -/* -Often in case of an error a value is assigned to a variable and then it breaks -out of a loop (to go to the cleanup phase of a function). This macro does that. -It makes the error handling code shorter and more readable. - -Example: if(!uivector_resizev(&frequencies_ll, 286, 0)) ERROR_BREAK(83); -*/ -#define CERROR_BREAK(errorvar, code) \ - { \ - errorvar = code; \ - break; \ - } - -/*version of CERROR_BREAK that assumes the common case where the error variable - * is named "error"*/ -#define ERROR_BREAK(code) CERROR_BREAK(error, code) - -/*Set error var to the error code, and return it.*/ -#define CERROR_RETURN_ERROR(errorvar, code) \ - { \ - errorvar = code; \ - return code; \ - } - -/*Try the code, if it returns error, also return the error.*/ -#define CERROR_TRY_RETURN(call) \ - { \ - unsigned error = call; \ - if (error) \ - return error; \ - } - -/*Set error var to the error code, and return from the void function.*/ -#define CERROR_RETURN(errorvar, code) \ - { \ - errorvar = code; \ - return; \ - } - -/* -About uivector, ucvector and string: --All of them wrap dynamic arrays or text strings in a similar way. --LodePNG was originally written in C++. The vectors replace the std::vectors -that were used in the C++ version. -The string tools are made to avoid problems -with compilers that declare things like strncat as deprecated. -They're not used -in the interface, only internally in this file as static functions. -As with -many other structs in this file, the init and cleanup functions serve as ctor -and dtor. -*/ - -#ifdef LODEPNG_COMPILE_ZLIB -/*dynamic vector of unsigned ints*/ -typedef struct uivector { - unsigned *data; - size_t size; /*size in number of unsigned longs*/ - size_t allocsize; /*allocated size in bytes*/ -} uivector; - -static void uivector_cleanup(void *p) -{ - ((uivector *)p)->size = ((uivector *)p)->allocsize = 0; - lodepng_free(((uivector *)p)->data); - ((uivector *)p)->data = NULL; -} - -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_reserve(uivector *p, size_t allocsize) -{ - if (allocsize > p->allocsize) { - size_t newsize = - (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2); - void *data = lodepng_realloc(p->data, newsize); - if (data) { - p->allocsize = newsize; - p->data = (unsigned *)data; - } - else - return 0; /*error: not enough memory*/ - } - return 1; -} - -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_resize(uivector *p, size_t size) -{ - if (!uivector_reserve(p, size * sizeof(unsigned))) - return 0; - p->size = size; - return 1; /*success*/ -} - -/*resize and give all new elements the value*/ -static unsigned uivector_resizev(uivector *p, size_t size, unsigned value) -{ - size_t oldsize = p->size, i; - if (!uivector_resize(p, size)) - return 0; - for (i = oldsize; i < size; ++i) - p->data[i] = value; - return 1; -} - -static void uivector_init(uivector *p) -{ - p->data = NULL; - p->size = p->allocsize = 0; -} - -#ifdef LODEPNG_COMPILE_ENCODER -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned uivector_push_back(uivector *p, unsigned c) -{ - if (!uivector_resize(p, p->size + 1)) - return 0; - p->data[p->size - 1] = c; - return 1; -} -#endif /*LODEPNG_COMPILE_ENCODER*/ -#endif /*LODEPNG_COMPILE_ZLIB*/ - -/* /////////////////////////////////////////////////////////////////////////// - */ - -/*dynamic vector of unsigned chars*/ -typedef struct ucvector { - unsigned char *data; - size_t size; /*used size*/ - size_t allocsize; /*allocated size*/ -} ucvector; - -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_reserve(ucvector *p, size_t allocsize) -{ - if (allocsize > p->allocsize) { - size_t newsize = - (allocsize > p->allocsize * 2) ? allocsize : (allocsize * 3 / 2); - void *data = lodepng_realloc(p->data, newsize); - if (data) { - p->allocsize = newsize; - p->data = (unsigned char *)data; - } - else - return 0; /*error: not enough memory*/ - } - return 1; -} - -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_resize(ucvector *p, size_t size) -{ - if (!ucvector_reserve(p, size * sizeof(unsigned char))) - return 0; - p->size = size; - return 1; /*success*/ -} - -#ifdef LODEPNG_COMPILE_PNG - -static void ucvector_cleanup(void *p) -{ - ((ucvector *)p)->size = ((ucvector *)p)->allocsize = 0; - lodepng_free(((ucvector *)p)->data); - ((ucvector *)p)->data = NULL; -} - -static void ucvector_init(ucvector *p) -{ - p->data = NULL; - p->size = p->allocsize = 0; -} -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ZLIB -/*you can both convert from vector to buffer&size and vica versa. If you use -init_buffer to take over a buffer and size, it is not needed to use cleanup*/ -static void -ucvector_init_buffer(ucvector *p, unsigned char *buffer, size_t size) -{ - p->data = buffer; - p->allocsize = p->size = size; -} -#endif /*LODEPNG_COMPILE_ZLIB*/ - -#if ( \ - defined(LODEPNG_COMPILE_PNG) && \ - defined(LODEPNG_COMPILE_ANCILLARY_CHUNKS)) || \ - defined(LODEPNG_COMPILE_ENCODER) -/*returns 1 if success, 0 if failure ==> nothing done*/ -static unsigned ucvector_push_back(ucvector *p, unsigned char c) -{ - if (!ucvector_resize(p, p->size + 1)) - return 0; - p->data[p->size - 1] = c; - return 1; -} -#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/ - -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_PNG -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - -/*free string pointer and set it to NULL*/ -static void string_cleanup(char **out) -{ - lodepng_free(*out); - *out = NULL; -} - -/* dynamically allocates a new string with a copy of the null terminated input - * text */ -static char *alloc_string(const char *in) -{ - size_t insize = AsciiStrLen(in); - char * out = (char *)lodepng_malloc(insize + 1); - if (out) { - size_t i; - for (i = 0; i != insize; ++i) { - out[i] = in[i]; - } - out[i] = 0; - } - return out; -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -#endif /*LODEPNG_COMPILE_PNG*/ - -/* ////////////////////////////////////////////////////////////////////////// */ - -unsigned lodepng_read32bitInt(const unsigned char *buffer) -{ - return ( - unsigned)((buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]); -} - -#if defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER) -/*buffer must have at least 4 allocated bytes available*/ -static void lodepng_set32bitInt(unsigned char *buffer, unsigned value) -{ - buffer[0] = (unsigned char)((value >> 24) & 0xff); - buffer[1] = (unsigned char)((value >> 16) & 0xff); - buffer[2] = (unsigned char)((value >> 8) & 0xff); - buffer[3] = (unsigned char)((value)&0xff); -} -#endif /*defined(LODEPNG_COMPILE_PNG) || defined(LODEPNG_COMPILE_ENCODER)*/ - -#ifdef LODEPNG_COMPILE_ENCODER -static void lodepng_add32bitInt(ucvector *buffer, unsigned value) -{ - ucvector_resize( - buffer, buffer->size + 4); /*todo: give error if resize failed*/ - lodepng_set32bitInt(&buffer->data[buffer->size - 4], value); -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / File IO / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_DISK - -/* returns negative value on error. This should be pure C compatible, so no - * fstat. */ -static long lodepng_filesize(const char *filename) -{ - FILE *file; - long size; - file = fopen(filename, "rb"); - if (!file) - return -1; - - if (fseek(file, 0, SEEK_END) != 0) { - fclose(file); - return -1; - } - - size = ftell(file); - /* It may give LONG_MAX as directory size, this is invalid for us. */ - if (size == LONG_MAX) - size = -1; - - fclose(file); - return size; -} - -/* load file into buffer that already has the correct allocated size. Returns - * error code.*/ -static unsigned -lodepng_buffer_file(unsigned char *out, size_t size, const char *filename) -{ - FILE * file; - size_t readsize; - file = fopen(filename, "rb"); - if (!file) - return 78; - - readsize = fread(out, 1, size, file); - fclose(file); - - if (readsize != size) - return 78; - return 0; -} - -unsigned -lodepng_load_file(unsigned char **out, size_t *outsize, const char *filename) -{ - long size = lodepng_filesize(filename); - if (size < 0) - return 78; - *outsize = (size_t)size; - - *out = (unsigned char *)lodepng_malloc((size_t)size); - if (!(*out) && size > 0) - return 83; /*the above malloc failed*/ - - return lodepng_buffer_file(*out, (size_t)size, filename); -} - -/*write given buffer to the file, overwriting the file, it doesn't append to - * it.*/ -unsigned lodepng_save_file( - const unsigned char *buffer, size_t buffersize, const char *filename) -{ - FILE *file; - file = fopen(filename, "wb"); - if (!file) - return 79; - fwrite(buffer, 1, buffersize, file); - fclose(file); - return 0; -} - -#endif /*LODEPNG_COMPILE_DISK*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* // End of common code and tools. Begin of Zlib related code. // */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_ZLIB -#ifdef LODEPNG_COMPILE_ENCODER -/*TODO: this ignores potential out of memory errors*/ -#define addBitToStream( \ - /*size_t**/ bitpointer, /*ucvector**/ bitstream, /*unsigned char*/ bit) \ - { \ - /*add a new byte at the end*/ \ - if (((*bitpointer) & 7) == 0) \ - ucvector_push_back(bitstream, (unsigned char)0); \ - /*earlier bit of huffman code is in a lesser significant bit of an earlier \ - * byte*/ \ - (bitstream->data[bitstream->size - 1]) |= (bit << ((*bitpointer) & 0x7)); \ - ++(*bitpointer); \ - } - -static void addBitsToStream( - size_t *bitpointer, ucvector *bitstream, unsigned value, size_t nbits) -{ - size_t i; - for (i = 0; i != nbits; ++i) - addBitToStream(bitpointer, bitstream, (unsigned char)((value >> i) & 1)); -} - -static void addBitsToStreamReversed( - size_t *bitpointer, ucvector *bitstream, unsigned value, size_t nbits) -{ - size_t i; - for (i = 0; i != nbits; ++i) - addBitToStream( - bitpointer, bitstream, (unsigned char)((value >> (nbits - 1 - i)) & 1)); -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_DECODER - -#define READBIT(bitpointer, bitstream) \ - ((bitstream[bitpointer >> 3] >> (bitpointer & 0x7)) & (unsigned char)1) - -static unsigned char -readBitFromStream(size_t *bitpointer, const unsigned char *bitstream) -{ - unsigned char result = (unsigned char)(READBIT(*bitpointer, bitstream)); - ++(*bitpointer); - return result; -} - -static unsigned readBitsFromStream( - size_t *bitpointer, const unsigned char *bitstream, size_t nbits) -{ - unsigned result = 0, i; - for (i = 0; i != nbits; ++i) { - result += ((unsigned)READBIT(*bitpointer, bitstream)) << i; - ++(*bitpointer); - } - return result; -} -#endif /*LODEPNG_COMPILE_DECODER*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Deflate - Huffman / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#define FIRST_LENGTH_CODE_INDEX 257 -#define LAST_LENGTH_CODE_INDEX 285 -/*256 literals, the end code, some length codes, and 2 unused codes*/ -#define NUM_DEFLATE_CODE_SYMBOLS 288 -/*the distance codes have their own symbols, 30 used, 2 unused*/ -#define NUM_DISTANCE_SYMBOLS 32 -/*the code length codes. 0-15: code lengths, 16: copy previous 3-6 times, 17: - * 3-10 zeros, 18: 11-138 zeros*/ -#define NUM_CODE_LENGTH_CODES 19 - -/*the base lengths represented by codes 257-285*/ -static const unsigned LENGTHBASE[29] = { - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, - 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258}; - -/*the extra bits used by codes 257-285 (added to base length)*/ -static const unsigned LENGTHEXTRA[29] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, - 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, - 4, 4, 4, 4, 5, 5, 5, 5, 0}; - -/*the base backwards distances (the bits of distance codes appear after length - * codes and use their own huffman tree)*/ -static const unsigned DISTANCEBASE[30] = { - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, - 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, - 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577}; - -/*the extra bits of backwards distances (added to base)*/ -static const unsigned DISTANCEEXTRA[30] = { - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, - 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; - -/*the order in which "code length alphabet code lengths" are stored, out of this -the huffman tree of the dynamic huffman tree lengths is generated*/ -static const unsigned CLCL_ORDER[NUM_CODE_LENGTH_CODES] = { - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - -/* ////////////////////////////////////////////////////////////////////////// */ - -/* -Huffman tree struct, containing multiple representations of the tree -*/ -typedef struct HuffmanTree { - unsigned *tree2d; - unsigned *tree1d; - unsigned *lengths; /*the lengths of the codes of the 1d-tree*/ - unsigned maxbitlen; /*maximum number of bits a single code can get*/ - unsigned numcodes; /*number of symbols in the alphabet = number of codes*/ -} HuffmanTree; - -/*function used for debug purposes to draw the tree in ascii art with C++*/ -/* -static void HuffmanTree_draw(HuffmanTree* tree) { - std::cout << "tree. length: " << tree->numcodes << " maxbitlen: " << -tree->maxbitlen << std::endl; for(size_t i = 0; i != tree->tree1d.size; ++i) { - if(tree->lengths.data[i]) - std::cout << i << " " << tree->tree1d.data[i] << " " << -tree->lengths.data[i] << std::endl; - } - std::cout << std::endl; -}*/ - -static void HuffmanTree_init(HuffmanTree *tree) -{ - tree->tree2d = 0; - tree->tree1d = 0; - tree->lengths = 0; -} - -static void HuffmanTree_cleanup(HuffmanTree *tree) -{ - lodepng_free(tree->tree2d); - lodepng_free(tree->tree1d); - lodepng_free(tree->lengths); -} - -/*the tree representation used by the decoder. return value is error*/ -static unsigned HuffmanTree_make2DTree(HuffmanTree *tree) -{ - unsigned nodefilled = 0; /*up to which node it is filled*/ - unsigned treepos = 0; /*position in the tree (1 of the numcodes columns)*/ - unsigned n, i; - - tree->tree2d = - (unsigned *)lodepng_malloc(tree->numcodes * 2 * sizeof(unsigned)); - if (!tree->tree2d) - return 83; /*alloc fail*/ - - /* - convert tree1d[] to tree2d[][]. In the 2D array, a value of 32767 means - uninited, a value >= numcodes is an address to another bit, a value < numcodes - is a code. The 2 rows are the 2 possible bit values (0 or 1), there are as - many columns as codes - 1. - A good huffman tree has N * 2 - 1 nodes, of which N - 1 are internal nodes. - Here, the internal nodes are stored (what their 0 and 1 option point to). - There is only memory for such good tree currently, if there are more nodes - (due to too long length codes), error 55 will happen - */ - for (n = 0; n < tree->numcodes * 2; ++n) { - tree->tree2d[n] = - 32767; /*32767 here means the tree2d isn't filled there yet*/ - } - - for (n = 0; n < tree->numcodes; ++n) /*the codes*/ { - for (i = 0; i != tree->lengths[n]; ++i) /*the bits for this code*/ { - unsigned char bit = - (unsigned char)((tree->tree1d[n] >> (tree->lengths[n] - i - 1)) & 1); - /*oversubscribed, see comment in lodepng_error_text*/ - if (treepos > 2147483647 || treepos + 2 > tree->numcodes) - return 55; - if (tree->tree2d[2 * treepos + bit] == 32767) /*not yet filled in*/ { - if (i + 1 == tree->lengths[n]) /*last bit*/ { - tree->tree2d[2 * treepos + bit] = n; /*put the current code in it*/ - treepos = 0; - } - else { - /*put address of the next step in here, first that address has to be - found of course (it's just nodefilled + 1)...*/ - ++nodefilled; - /*addresses encoded with numcodes added to it*/ - tree->tree2d[2 * treepos + bit] = nodefilled + tree->numcodes; - treepos = nodefilled; - } - } - else - treepos = tree->tree2d[2 * treepos + bit] - tree->numcodes; - } - } - - for (n = 0; n < tree->numcodes * 2; ++n) { - if (tree->tree2d[n] == 32767) - tree->tree2d[n] = 0; /*remove possible remaining 32767's*/ - } - - return 0; -} - -/* -Second step for the ...makeFromLengths and ...makeFromFrequencies functions. -numcodes, lengths and maxbitlen must already be filled in correctly. return -value is error. -*/ -static unsigned HuffmanTree_makeFromLengths2(HuffmanTree *tree) -{ - uivector blcount; - uivector nextcode; - unsigned error = 0; - unsigned bits, n; - - uivector_init(&blcount); - uivector_init(&nextcode); - - tree->tree1d = (unsigned *)lodepng_malloc(tree->numcodes * sizeof(unsigned)); - if (!tree->tree1d) - error = 83; /*alloc fail*/ - - if (!uivector_resizev(&blcount, tree->maxbitlen + 1, 0) || - !uivector_resizev(&nextcode, tree->maxbitlen + 1, 0)) - error = 83; /*alloc fail*/ - - if (!error) { - /*step 1: count number of instances of each code length*/ - for (bits = 0; bits != tree->numcodes; ++bits) - ++blcount.data[tree->lengths[bits]]; - /*step 2: generate the nextcode values*/ - for (bits = 1; bits <= tree->maxbitlen; ++bits) { - nextcode.data[bits] = (nextcode.data[bits - 1] + blcount.data[bits - 1]) - << 1; - } - /*step 3: generate all the codes*/ - for (n = 0; n != tree->numcodes; ++n) { - if (tree->lengths[n] != 0) - tree->tree1d[n] = nextcode.data[tree->lengths[n]]++; - } - } - - uivector_cleanup(&blcount); - uivector_cleanup(&nextcode); - - if (!error) - return HuffmanTree_make2DTree(tree); - else - return error; -} - -/* -given the code lengths (as stored in the PNG file), generate the tree as defined -by Deflate. maxbitlen is the maximum bits that a code in the tree can have. -return value is error. -*/ -static unsigned HuffmanTree_makeFromLengths( - HuffmanTree *tree, const unsigned *bitlen, size_t numcodes, - unsigned maxbitlen) -{ - unsigned i; - tree->lengths = (unsigned *)lodepng_malloc(numcodes * sizeof(unsigned)); - if (!tree->lengths) - return 83; /*alloc fail*/ - for (i = 0; i != numcodes; ++i) - tree->lengths[i] = bitlen[i]; - tree->numcodes = (unsigned)numcodes; /*number of symbols*/ - tree->maxbitlen = maxbitlen; - return HuffmanTree_makeFromLengths2(tree); -} - -#ifdef LODEPNG_COMPILE_ENCODER - -/*BPM: Boundary Package Merge, see "A Fast and Space-Economical Algorithm for -Length-Limited Coding", Jyrki Katajainen, Alistair Moffat, Andrew Turpin, -1995.*/ - -/*chain node for boundary package merge*/ -typedef struct BPMNode { - int weight; /*the sum of all weights in this chain*/ - unsigned index; /*index of this leaf node (called "count" in the paper)*/ - struct BPMNode *tail; /*the next nodes in this chain (null if last)*/ - int in_use; -} BPMNode; - -/*lists of chains*/ -typedef struct BPMLists { - /*memory pool*/ - unsigned memsize; - BPMNode * memory; - unsigned numfree; - unsigned nextfree; - BPMNode **freelist; - /*two heads of lookahead chains per list*/ - unsigned listsize; - BPMNode **chains0; - BPMNode **chains1; -} BPMLists; - -/*creates a new chain node with the given parameters, from the memory in the - * lists */ -static BPMNode * -bpmnode_create(BPMLists *lists, int weight, unsigned index, BPMNode *tail) -{ - unsigned i; - BPMNode *result; - - /*memory full, so garbage collect*/ - if (lists->nextfree >= lists->numfree) { - /*mark only those that are in use*/ - for (i = 0; i != lists->memsize; ++i) - lists->memory[i].in_use = 0; - for (i = 0; i != lists->listsize; ++i) { - BPMNode *node; - for (node = lists->chains0[i]; node != 0; node = node->tail) - node->in_use = 1; - for (node = lists->chains1[i]; node != 0; node = node->tail) - node->in_use = 1; - } - /*collect those that are free*/ - lists->numfree = 0; - for (i = 0; i != lists->memsize; ++i) { - if (!lists->memory[i].in_use) - lists->freelist[lists->numfree++] = &lists->memory[i]; - } - lists->nextfree = 0; - } - - result = lists->freelist[lists->nextfree++]; - result->weight = weight; - result->index = index; - result->tail = tail; - return result; -} - -/*sort the leaves with stable mergesort*/ -static void bpmnode_sort(BPMNode *leaves, size_t num) -{ - BPMNode *mem = (BPMNode *)lodepng_malloc(sizeof(*leaves) * num); - size_t width, counter = 0; - for (width = 1; width < num; width *= 2) { - BPMNode *a = (counter & 1) ? mem : leaves; - BPMNode *b = (counter & 1) ? leaves : mem; - size_t p; - for (p = 0; p < num; p += 2 * width) { - size_t q = (p + width > num) ? num : (p + width); - size_t r = (p + 2 * width > num) ? num : (p + 2 * width); - size_t i = p, j = q, k; - for (k = p; k < r; k++) { - if (i < q && (j >= r || a[i].weight <= a[j].weight)) - b[k] = a[i++]; - else - b[k] = a[j++]; - } - } - counter++; - } - if (counter & 1) - CopyMem(leaves, mem, sizeof(*leaves) * num); - lodepng_free(mem); -} - -/*Boundary Package Merge step, numpresent is the amount of leaves, and c is the - * current chain.*/ -static void -boundaryPM(BPMLists *lists, BPMNode *leaves, size_t numpresent, int c, int num) -{ - unsigned lastindex = lists->chains1[c]->index; - - if (c == 0) { - if (lastindex >= numpresent) - return; - lists->chains0[c] = lists->chains1[c]; - lists->chains1[c] = - bpmnode_create(lists, leaves[lastindex].weight, lastindex + 1, 0); - } - else { - /*sum of the weights of the head nodes of the previous lookahead chains.*/ - int sum = lists->chains0[c - 1]->weight + lists->chains1[c - 1]->weight; - lists->chains0[c] = lists->chains1[c]; - if (lastindex < numpresent && sum > leaves[lastindex].weight) { - lists->chains1[c] = bpmnode_create( - lists, leaves[lastindex].weight, lastindex + 1, - lists->chains1[c]->tail); - return; - } - lists->chains1[c] = - bpmnode_create(lists, sum, lastindex, lists->chains1[c - 1]); - /*in the end we are only interested in the chain of the last list, so no - need to recurse if we're at the last one (this gives measurable speedup)*/ - if (num + 1 < (int)(2 * numpresent - 2)) { - boundaryPM(lists, leaves, numpresent, c - 1, num); - boundaryPM(lists, leaves, numpresent, c - 1, num); - } - } -} - -unsigned lodepng_huffman_code_lengths( - unsigned *lengths, const unsigned *frequencies, size_t numcodes, - unsigned maxbitlen) -{ - unsigned error = 0; - unsigned i; - size_t numpresent = 0; /*number of symbols with non-zero frequency*/ - BPMNode *leaves; /*the symbols, only those with > 0 frequency*/ - - if (numcodes == 0) - return 80; /*error: a tree of 0 symbols is not supposed to be made*/ - if ((1u << maxbitlen) < (unsigned)numcodes) - return 80; /*error: represent all symbols*/ - - leaves = (BPMNode *)lodepng_malloc(numcodes * sizeof(*leaves)); - if (!leaves) - return 83; /*alloc fail*/ - - for (i = 0; i != numcodes; ++i) { - if (frequencies[i] > 0) { - leaves[numpresent].weight = (int)frequencies[i]; - leaves[numpresent].index = i; - ++numpresent; - } - } - - for (i = 0; i != numcodes; ++i) - lengths[i] = 0; - - /*ensure at least two present symbols. There should be at least one symbol - according to RFC 1951 section 3.2.7. Some decoders incorrectly require two. To - make these work as well ensure there are at least two symbols. The - Package-Merge code below also doesn't work correctly if there's only one - symbol, it'd give it the theoritical 0 bits but in practice zlib wants 1 bit*/ - if (numpresent == 0) { - lengths[0] = lengths[1] = 1; /*note that for RFC 1951 section 3.2.7, only - lengths[0] = 1 is needed*/ - } - else if (numpresent == 1) { - lengths[leaves[0].index] = 1; - lengths[leaves[0].index == 0 ? 1 : 0] = 1; - } - else { - BPMLists lists; - BPMNode *node; - - bpmnode_sort(leaves, numpresent); - - lists.listsize = maxbitlen; - lists.memsize = 2 * maxbitlen * (maxbitlen + 1); - lists.nextfree = 0; - lists.numfree = lists.memsize; - lists.memory = - (BPMNode *)lodepng_malloc(lists.memsize * sizeof(*lists.memory)); - lists.freelist = - (BPMNode **)lodepng_malloc(lists.memsize * sizeof(BPMNode *)); - lists.chains0 = - (BPMNode **)lodepng_malloc(lists.listsize * sizeof(BPMNode *)); - lists.chains1 = - (BPMNode **)lodepng_malloc(lists.listsize * sizeof(BPMNode *)); - if (!lists.memory || !lists.freelist || !lists.chains0 || !lists.chains1) - error = 83; /*alloc fail*/ - - if (!error) { - for (i = 0; i != lists.memsize; ++i) - lists.freelist[i] = &lists.memory[i]; - - bpmnode_create(&lists, leaves[0].weight, 1, 0); - bpmnode_create(&lists, leaves[1].weight, 2, 0); - - for (i = 0; i != lists.listsize; ++i) { - lists.chains0[i] = &lists.memory[0]; - lists.chains1[i] = &lists.memory[1]; - } - - /*each boundaryPM call adds one chain to the last list, and we need 2 * - * numpresent - 2 chains.*/ - for (i = 2; i != 2 * numpresent - 2; ++i) - boundaryPM(&lists, leaves, numpresent, (int)maxbitlen - 1, (int)i); - - for (node = lists.chains1[maxbitlen - 1]; node; node = node->tail) { - for (i = 0; i != node->index; ++i) - ++lengths[leaves[i].index]; - } - } - - lodepng_free(lists.memory); - lodepng_free(lists.freelist); - lodepng_free(lists.chains0); - lodepng_free(lists.chains1); - } - - lodepng_free(leaves); - return error; -} - -/*Create the Huffman tree given the symbol frequencies*/ -static unsigned HuffmanTree_makeFromFrequencies( - HuffmanTree *tree, const unsigned *frequencies, size_t mincodes, - size_t numcodes, unsigned maxbitlen) -{ - unsigned error = 0; - while (!frequencies[numcodes - 1] && numcodes > mincodes) - --numcodes; /*trim zeroes*/ - tree->maxbitlen = maxbitlen; - tree->numcodes = (unsigned)numcodes; /*number of symbols*/ - tree->lengths = - (unsigned *)lodepng_realloc(tree->lengths, numcodes * sizeof(unsigned)); - if (!tree->lengths) - return 83; /*alloc fail*/ - /*initialize all lengths to 0*/ - memset(tree->lengths, 0, numcodes * sizeof(unsigned)); - - error = lodepng_huffman_code_lengths( - tree->lengths, frequencies, numcodes, maxbitlen); - if (!error) - error = HuffmanTree_makeFromLengths2(tree); - return error; -} - -static unsigned HuffmanTree_getCode(const HuffmanTree *tree, unsigned index) -{ - return tree->tree1d[index]; -} - -static unsigned HuffmanTree_getLength(const HuffmanTree *tree, unsigned index) -{ - return tree->lengths[index]; -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -/*get the literal and length code tree of a deflated block with fixed tree, as - * per the deflate specification*/ -static unsigned generateFixedLitLenTree(HuffmanTree *tree) -{ - unsigned i, error = 0; - unsigned *bitlen = - (unsigned *)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); - if (!bitlen) - return 83; /*alloc fail*/ - - /*288 possible codes: 0-255=literals, 256=endcode, 257-285=lengthcodes, - * 286-287=unused*/ - for (i = 0; i <= 143; ++i) - bitlen[i] = 8; - for (i = 144; i <= 255; ++i) - bitlen[i] = 9; - for (i = 256; i <= 279; ++i) - bitlen[i] = 7; - for (i = 280; i <= 287; ++i) - bitlen[i] = 8; - - error = - HuffmanTree_makeFromLengths(tree, bitlen, NUM_DEFLATE_CODE_SYMBOLS, 15); - - lodepng_free(bitlen); - return error; -} - -/*get the distance code tree of a deflated block with fixed tree, as specified - * in the deflate specification*/ -static unsigned generateFixedDistanceTree(HuffmanTree *tree) -{ - unsigned i, error = 0; - unsigned *bitlen = - (unsigned *)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); - if (!bitlen) - return 83; /*alloc fail*/ - - /*there are 32 distance codes, but 30-31 are unused*/ - for (i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) - bitlen[i] = 5; - error = HuffmanTree_makeFromLengths(tree, bitlen, NUM_DISTANCE_SYMBOLS, 15); - - lodepng_free(bitlen); - return error; -} - -#ifdef LODEPNG_COMPILE_DECODER - -/* -returns the code, or (unsigned)(-1) if error happened -inbitlength is the length of the complete buffer, in bits (so its byte length -times 8) -*/ -static unsigned huffmanDecodeSymbol( - const unsigned char *in, size_t *bp, const HuffmanTree *codetree, - size_t inbitlength) -{ - unsigned treepos = 0, ct; - for (;;) { - if (*bp >= inbitlength) - return ( - unsigned)(-1); /*error: end of input memory reached without endcode*/ - /* - decode the symbol from the tree. The "readBitFromStream" code is inlined in - the expression below because this is the biggest bottleneck while decoding - */ - ct = codetree->tree2d[(treepos << 1) + READBIT(*bp, in)]; - ++(*bp); - if (ct < codetree->numcodes) - return ct; /*the symbol is decoded, return it*/ - else - treepos = - ct - - codetree - ->numcodes; /*symbol not yet decoded, instead move tree position*/ - - if (treepos >= codetree->numcodes) - return (unsigned)(-1); /*error: it appeared outside the codetree*/ - } -} -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_DECODER - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Inflator (Decompressor) / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/*get the tree of a deflated block with fixed tree, as specified in the deflate - * specification*/ -static void getTreeInflateFixed(HuffmanTree *tree_ll, HuffmanTree *tree_d) -{ - /*TODO: check for out of memory errors*/ - generateFixedLitLenTree(tree_ll); - generateFixedDistanceTree(tree_d); -} - -/*get the tree of a deflated block with dynamic tree, the tree itself is also - * Huffman compressed with a known tree*/ -static unsigned getTreeInflateDynamic( - HuffmanTree *tree_ll, HuffmanTree *tree_d, const unsigned char *in, - size_t *bp, size_t inlength) -{ - /*make sure that length values that aren't filled in will be 0, or a wrong - * tree will be generated*/ - unsigned error = 0; - unsigned n, HLIT, HDIST, HCLEN, i; - size_t inbitlength = inlength * 8; - - /*see comments in deflateDynamic for explanation of the context and these - * variables, it is analogous*/ - unsigned *bitlen_ll = 0; /*lit,len code lengths*/ - unsigned *bitlen_d = 0; /*dist code lengths*/ - /*code length code lengths ("clcl"), the bit lengths of the huffman tree used - * to compress bitlen_ll and bitlen_d*/ - unsigned * bitlen_cl = 0; - HuffmanTree tree_cl; /*the code tree for code length codes (the huffman tree - for compressed huffman trees)*/ - - if ((*bp) + 14 > (inlength << 3)) - return 49; /*error: the bit pointer is or will go past the memory*/ - - /*number of literal/length codes + 257. Unlike the spec, the value 257 is - * added to it here already*/ - HLIT = readBitsFromStream(bp, in, 5) + 257; - /*number of distance codes. Unlike the spec, the value 1 is added to it here - * already*/ - HDIST = readBitsFromStream(bp, in, 5) + 1; - /*number of code length codes. Unlike the spec, the value 4 is added to it - * here already*/ - HCLEN = readBitsFromStream(bp, in, 4) + 4; - - if ((*bp) + HCLEN * 3 > (inlength << 3)) - return 50; /*error: the bit pointer is or will go past the memory*/ - - HuffmanTree_init(&tree_cl); - - while (!error) { - /*read the code length codes out of 3 * (amount of code length codes) bits*/ - - bitlen_cl = - (unsigned *)lodepng_malloc(NUM_CODE_LENGTH_CODES * sizeof(unsigned)); - if (!bitlen_cl) - ERROR_BREAK(83 /*alloc fail*/); - - for (i = 0; i != NUM_CODE_LENGTH_CODES; ++i) { - if (i < HCLEN) - bitlen_cl[CLCL_ORDER[i]] = readBitsFromStream(bp, in, 3); - else - bitlen_cl[CLCL_ORDER[i]] = 0; /*if not, it must stay 0*/ - } - - error = HuffmanTree_makeFromLengths( - &tree_cl, bitlen_cl, NUM_CODE_LENGTH_CODES, 7); - if (error) - break; - - /*now we can use this tree to read the lengths for the tree that this - * function will return*/ - bitlen_ll = - (unsigned *)lodepng_malloc(NUM_DEFLATE_CODE_SYMBOLS * sizeof(unsigned)); - bitlen_d = - (unsigned *)lodepng_malloc(NUM_DISTANCE_SYMBOLS * sizeof(unsigned)); - if (!bitlen_ll || !bitlen_d) - ERROR_BREAK(83 /*alloc fail*/); - for (i = 0; i != NUM_DEFLATE_CODE_SYMBOLS; ++i) - bitlen_ll[i] = 0; - for (i = 0; i != NUM_DISTANCE_SYMBOLS; ++i) - bitlen_d[i] = 0; - - /*i is the current symbol we're reading in the part that contains the code - * lengths of lit/len and dist codes*/ - i = 0; - while (i < HLIT + HDIST) { - unsigned code = huffmanDecodeSymbol(in, bp, &tree_cl, inbitlength); - if (code <= 15) /*a length code*/ { - if (i < HLIT) - bitlen_ll[i] = code; - else - bitlen_d[i - HLIT] = code; - ++i; - } - else if (code == 16) /*repeat previous*/ { - unsigned replength = - 3; /*read in the 2 bits that indicate repeat length (3-6)*/ - unsigned value; /*set value to the previous code*/ - - if (i == 0) - ERROR_BREAK(54); /*can't repeat previous if i is 0*/ - - if ((*bp + 2) > inbitlength) - ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ - replength += readBitsFromStream(bp, in, 2); - - if (i < HLIT + 1) - value = bitlen_ll[i - 1]; - else - value = bitlen_d[i - HLIT - 1]; - /*repeat this value in the next lengths*/ - for (n = 0; n < replength; ++n) { - if (i >= HLIT + HDIST) - ERROR_BREAK(13); /*error: i is larger than the amount of codes*/ - if (i < HLIT) - bitlen_ll[i] = value; - else - bitlen_d[i - HLIT] = value; - ++i; - } - } - else if (code == 17) /*repeat "0" 3-10 times*/ { - unsigned replength = 3; /*read in the bits that indicate repeat length*/ - if ((*bp + 3) > inbitlength) - ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ - replength += readBitsFromStream(bp, in, 3); - - /*repeat this value in the next lengths*/ - for (n = 0; n < replength; ++n) { - if (i >= HLIT + HDIST) - ERROR_BREAK(14); /*error: i is larger than the amount of codes*/ - - if (i < HLIT) - bitlen_ll[i] = 0; - else - bitlen_d[i - HLIT] = 0; - ++i; - } - } - else if (code == 18) /*repeat "0" 11-138 times*/ { - unsigned replength = - 11; /*read in the bits that indicate repeat length*/ - if ((*bp + 7) > inbitlength) - ERROR_BREAK(50); /*error, bit pointer jumps past memory*/ - replength += readBitsFromStream(bp, in, 7); - - /*repeat this value in the next lengths*/ - for (n = 0; n < replength; ++n) { - if (i >= HLIT + HDIST) - ERROR_BREAK(15); /*error: i is larger than the amount of codes*/ - - if (i < HLIT) - bitlen_ll[i] = 0; - else - bitlen_d[i - HLIT] = 0; - ++i; - } - } - else /*if(code == (unsigned)(-1))*/ - /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ { - if (code == (unsigned)(-1)) { - /*return error code 10 or 11 depending on the situation that happened - in huffmanDecodeSymbol (10=no endcode, 11=wrong jump outside of - tree)*/ - error = (*bp) > inbitlength ? 10 : 11; - } - else - error = 16; /*unexisting code, this can never happen*/ - break; - } - } - if (error) - break; - - if (bitlen_ll[256] == 0) - ERROR_BREAK(64); /*the length of the end code 256 must be larger than 0*/ - - /*now we've finally got HLIT and HDIST, so generate the code trees, and the - * function is done*/ - error = HuffmanTree_makeFromLengths( - tree_ll, bitlen_ll, NUM_DEFLATE_CODE_SYMBOLS, 15); - if (error) - break; - error = - HuffmanTree_makeFromLengths(tree_d, bitlen_d, NUM_DISTANCE_SYMBOLS, 15); - - break; /*end of error-while*/ - } - - lodepng_free(bitlen_cl); - lodepng_free(bitlen_ll); - lodepng_free(bitlen_d); - HuffmanTree_cleanup(&tree_cl); - - return error; -} - -/*inflate a block with dynamic of fixed Huffman tree*/ -static unsigned inflateHuffmanBlock( - ucvector *out, const unsigned char *in, size_t *bp, size_t *pos, - size_t inlength, unsigned btype) -{ - unsigned error = 0; - HuffmanTree tree_ll; /*the huffman tree for literal and length codes*/ - HuffmanTree tree_d; /*the huffman tree for distance codes*/ - size_t inbitlength = inlength * 8; - - HuffmanTree_init(&tree_ll); - HuffmanTree_init(&tree_d); - - if (btype == 1) - getTreeInflateFixed(&tree_ll, &tree_d); - else if (btype == 2) - error = getTreeInflateDynamic(&tree_ll, &tree_d, in, bp, inlength); - - while (!error) /*decode all symbols until end reached, breaks at end code*/ { - /*code_ll is literal, length or end code*/ - unsigned code_ll = huffmanDecodeSymbol(in, bp, &tree_ll, inbitlength); - if (code_ll <= 255) /*literal symbol*/ { - /*ucvector_push_back would do the same, but for some reason the two lines - * below run 10% faster*/ - if (!ucvector_resize(out, (*pos) + 1)) - ERROR_BREAK(83 /*alloc fail*/); - out->data[*pos] = (unsigned char)code_ll; - ++(*pos); - } - else if ( - code_ll >= FIRST_LENGTH_CODE_INDEX && - code_ll <= LAST_LENGTH_CODE_INDEX) /*length code*/ { - unsigned code_d, distance; - unsigned numextrabits_l, - numextrabits_d; /*extra bits for length and distance*/ - size_t start, forward, backward, length; - - /*part 1: get length base*/ - length = LENGTHBASE[code_ll - FIRST_LENGTH_CODE_INDEX]; - - /*part 2: get extra bits and add the value of that to length*/ - numextrabits_l = LENGTHEXTRA[code_ll - FIRST_LENGTH_CODE_INDEX]; - if ((*bp + numextrabits_l) > inbitlength) - ERROR_BREAK(51); /*error, bit pointer will jump past memory*/ - length += readBitsFromStream(bp, in, numextrabits_l); - - /*part 3: get distance code*/ - code_d = huffmanDecodeSymbol(in, bp, &tree_d, inbitlength); - if (code_d > 29) { - if (code_d == (unsigned)(-1)) /*huffmanDecodeSymbol returns - (unsigned)(-1) in case of error*/ - { - /*return error code 10 or 11 depending on the situation that happened - in huffmanDecodeSymbol (10=no endcode, 11=wrong jump outside of - tree)*/ - error = (*bp) > inlength * 8 ? 10 : 11; - } - else - error = 18; /*error: invalid distance code (30-31 are never used)*/ - break; - } - distance = DISTANCEBASE[code_d]; - - /*part 4: get extra bits from distance*/ - numextrabits_d = DISTANCEEXTRA[code_d]; - if ((*bp + numextrabits_d) > inbitlength) - ERROR_BREAK(51); /*error, bit pointer will jump past memory*/ - distance += readBitsFromStream(bp, in, numextrabits_d); - - /*part 5: fill in all the out[n] values based on the length and dist*/ - start = (*pos); - if (distance > start) - ERROR_BREAK(52); /*too long backward distance*/ - backward = start - distance; - - if (!ucvector_resize(out, (*pos) + length)) - ERROR_BREAK(83 /*alloc fail*/); - if (distance < length) { - for (forward = 0; forward < length; ++forward) { - out->data[(*pos)++] = out->data[backward++]; - } - } - else { - CopyMem(out->data + *pos, out->data + backward, length); - *pos += length; - } - } - else if (code_ll == 256) { - break; /*end code, break the loop*/ - } - else /*if(code == (unsigned)(-1))*/ - /*huffmanDecodeSymbol returns (unsigned)(-1) in case of error*/ { - /*return error code 10 or 11 depending on the situation that happened in - huffmanDecodeSymbol (10=no endcode, 11=wrong jump outside of tree)*/ - error = ((*bp) > inlength * 8) ? 10 : 11; - break; - } - } - - HuffmanTree_cleanup(&tree_ll); - HuffmanTree_cleanup(&tree_d); - - return error; -} - -static unsigned inflateNoCompression( - ucvector *out, const unsigned char *in, size_t *bp, size_t *pos, - size_t inlength) -{ - size_t p; - unsigned LEN, NLEN, n, error = 0; - - /*go to first boundary of byte*/ - while (((*bp) & 0x7) != 0) - ++(*bp); - p = (*bp) / 8; /*byte position*/ - - /*read LEN (2 bytes) and NLEN (2 bytes)*/ - if (p + 4 >= inlength) - return 52; /*error, bit pointer will jump past memory*/ - LEN = in[p] + 256u * in[p + 1]; - p += 2; - NLEN = in[p] + 256u * in[p + 1]; - p += 2; - - /*check if 16-bit NLEN is really the one's complement of LEN*/ - if (LEN + NLEN != 65535) - return 21; /*error: NLEN is not one's complement of LEN*/ - - if (!ucvector_resize(out, (*pos) + LEN)) - return 83; /*alloc fail*/ - - /*read the literal data: LEN bytes are now stored in the out buffer*/ - if (p + LEN > inlength) - return 23; /*error: reading outside of in buffer*/ - for (n = 0; n < LEN; ++n) - out->data[(*pos)++] = in[p++]; - - (*bp) = p * 8; - - return error; -} - -static unsigned lodepng_inflatev( - ucvector *out, const unsigned char *in, size_t insize, - const LodePNGDecompressSettings *settings) -{ - /*bit pointer in the "in" data, current byte is bp >> 3, current bit is bp & - * 0x7 (from lsb to msb of the byte)*/ - size_t bp = 0; - unsigned BFINAL = 0; - size_t pos = 0; /*byte position in the out buffer*/ - unsigned error = 0; - - (void)settings; - - while (!BFINAL) { - unsigned BTYPE; - if (bp + 2 >= insize * 8) - return 52; /*error, bit pointer will jump past memory*/ - BFINAL = readBitFromStream(&bp, in); - BTYPE = 1u * readBitFromStream(&bp, in); - BTYPE += 2u * readBitFromStream(&bp, in); - - if (BTYPE == 3) - return 20; /*error: invalid BTYPE*/ - else if (BTYPE == 0) - error = - inflateNoCompression(out, in, &bp, &pos, insize); /*no compression*/ - else - error = inflateHuffmanBlock( - out, in, &bp, &pos, insize, BTYPE); /*compression, BTYPE 01 or 10*/ - - if (error) - return error; - } - - return error; -} - -unsigned lodepng_inflate( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGDecompressSettings *settings) -{ - unsigned error; - ucvector v; - ucvector_init_buffer(&v, *out, *outsize); - error = lodepng_inflatev(&v, in, insize, settings); - *out = v.data; - *outsize = v.size; - return error; -} - -static unsigned inflate( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGDecompressSettings *settings) -{ - if (settings->custom_inflate) { - return settings->custom_inflate(out, outsize, in, insize, settings); - } - else { - return lodepng_inflate(out, outsize, in, insize, settings); - } -} - -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Deflator (Compressor) / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -static const size_t MAX_SUPPORTED_DEFLATE_LENGTH = 258; - -/*bitlen is the size in bits of the code*/ -static void addHuffmanSymbol( - size_t *bp, ucvector *compressed, unsigned code, unsigned bitlen) -{ - addBitsToStreamReversed(bp, compressed, code, bitlen); -} - -/*search the index in the array, that has the largest value smaller than or -equal to the given value, -given array must be sorted (if no value is smaller, it returns the size of the -given array)*/ -static size_t -searchCodeIndex(const unsigned *array, size_t array_size, size_t value) -{ - /*binary search (only small gain over linear). TODO: use CPU log2 instruction - * for getting symbols instead*/ - size_t left = 1; - size_t right = array_size - 1; - - while (left <= right) { - size_t mid = (left + right) >> 1; - if (array[mid] >= value) - right = mid - 1; - else - left = mid + 1; - } - if (left >= array_size || array[left] > value) - left--; - return left; -} - -static void addLengthDistance(uivector *values, size_t length, size_t distance) -{ - /*values in encoded vector are those used by deflate: - 0-255: literal bytes - 256: end - 257-285: length/distance pair (length code, followed by extra length bits, - distance code, extra distance bits) 286-287: invalid*/ - - unsigned length_code = (unsigned)searchCodeIndex(LENGTHBASE, 29, length); - unsigned extra_length = (unsigned)(length - LENGTHBASE[length_code]); - unsigned dist_code = (unsigned)searchCodeIndex(DISTANCEBASE, 30, distance); - unsigned extra_distance = (unsigned)(distance - DISTANCEBASE[dist_code]); - - uivector_push_back(values, length_code + FIRST_LENGTH_CODE_INDEX); - uivector_push_back(values, extra_length); - uivector_push_back(values, dist_code); - uivector_push_back(values, extra_distance); -} - -/*3 bytes of data get encoded into two bytes. The hash cannot use more than 3 -bytes as input because 3 is the minimum match length for deflate*/ -static const unsigned HASH_NUM_VALUES = 65536; -static const unsigned HASH_BIT_MASK = - 65535; /*HASH_NUM_VALUES - 1, but C90 does not like that as initializer*/ - -typedef struct Hash { - int *head; /*hash value to head circular pos - can be outdated if went around - window*/ - /*circular pos to prev circular pos*/ - unsigned short *chain; - int * val; /*circular pos to hash value*/ - - /*TODO: do this not only for zeros but for any repeated byte. However for PNG - it's always going to be the zeros that dominate, so not important for PNG*/ - int * headz; /*similar to head, but for chainz*/ - unsigned short *chainz; /*those with same amount of zeros*/ - unsigned short *zeros; /*length of zeros streak, used as a second hash chain*/ -} Hash; - -static unsigned hash_init(Hash *hash, unsigned windowsize) -{ - unsigned i; - hash->head = (int *)lodepng_malloc(sizeof(int) * HASH_NUM_VALUES); - hash->val = (int *)lodepng_malloc(sizeof(int) * windowsize); - hash->chain = - (unsigned short *)lodepng_malloc(sizeof(unsigned short) * windowsize); - - hash->zeros = - (unsigned short *)lodepng_malloc(sizeof(unsigned short) * windowsize); - hash->headz = - (int *)lodepng_malloc(sizeof(int) * (MAX_SUPPORTED_DEFLATE_LENGTH + 1)); - hash->chainz = - (unsigned short *)lodepng_malloc(sizeof(unsigned short) * windowsize); - - if (!hash->head || !hash->chain || !hash->val || !hash->headz || - !hash->chainz || !hash->zeros) { - return 83; /*alloc fail*/ - } - - /*initialize hash table*/ - for (i = 0; i != HASH_NUM_VALUES; ++i) - hash->head[i] = -1; - for (i = 0; i != windowsize; ++i) - hash->val[i] = -1; - for (i = 0; i != windowsize; ++i) - hash->chain[i] = i; /*same value as index indicates uninitialized*/ - - for (i = 0; i <= MAX_SUPPORTED_DEFLATE_LENGTH; ++i) - hash->headz[i] = -1; - for (i = 0; i != windowsize; ++i) - hash->chainz[i] = i; /*same value as index indicates uninitialized*/ - - return 0; -} - -static void hash_cleanup(Hash *hash) -{ - lodepng_free(hash->head); - lodepng_free(hash->val); - lodepng_free(hash->chain); - - lodepng_free(hash->zeros); - lodepng_free(hash->headz); - lodepng_free(hash->chainz); -} - -static unsigned getHash(const unsigned char *data, size_t size, size_t pos) -{ - unsigned result = 0; - if (pos + 2 < size) { - /*A simple shift and xor hash is used. Since the data of PNGs is dominated - by zeroes due to the filters, a better hash does not have a significant - effect on speed in traversing the chain, and causes more time spend on - calculating the hash.*/ - result ^= (unsigned)(data[pos + 0] << 0u); - result ^= (unsigned)(data[pos + 1] << 4u); - result ^= (unsigned)(data[pos + 2] << 8u); - } - else { - size_t amount, i; - if (pos >= size) - return 0; - amount = size - pos; - for (i = 0; i != amount; ++i) - result ^= (unsigned)(data[pos + i] << (i * 8u)); - } - return result & HASH_BIT_MASK; -} - -static unsigned countZeros(const unsigned char *data, size_t size, size_t pos) -{ - const unsigned char *start = data + pos; - const unsigned char *end = start + MAX_SUPPORTED_DEFLATE_LENGTH; - if (end > data + size) - end = data + size; - data = start; - while (data != end && *data == 0) - ++data; - /*subtracting two addresses returned as 32-bit number (max value is - * MAX_SUPPORTED_DEFLATE_LENGTH)*/ - return (unsigned)(data - start); -} - -/*wpos = pos & (windowsize - 1)*/ -static void updateHashChain( - Hash *hash, size_t wpos, unsigned hashval, unsigned short numzeros) -{ - hash->val[wpos] = (int)hashval; - if (hash->head[hashval] != -1) - hash->chain[wpos] = hash->head[hashval]; - hash->head[hashval] = (int)wpos; - - hash->zeros[wpos] = numzeros; - if (hash->headz[numzeros] != -1) - hash->chainz[wpos] = hash->headz[numzeros]; - hash->headz[numzeros] = (int)wpos; -} - -/* -LZ77-encode the data. Return value is error code. The input are raw bytes, the -output is in the form of unsigned integers with codes representing for example -literal bytes, or length/distance pairs. It uses a hash table technique to let -it encode faster. When doing LZ77 encoding, a sliding window (of windowsize) is -used, and all past bytes in that window can be used as the "dictionary". A brute -force search through all possible distances would be slow, and this hash -technique is one out of several ways to speed this up. -*/ -static unsigned encodeLZ77( - uivector *out, Hash *hash, const unsigned char *in, size_t inpos, - size_t insize, unsigned windowsize, unsigned minmatch, unsigned nicematch, - unsigned lazymatching) -{ - size_t pos; - unsigned i, error = 0; - /*for large window lengths, assume the user wants no compression loss. - * Otherwise, max hash chain length speedup.*/ - unsigned maxchainlength = windowsize >= 8192 ? windowsize : windowsize / 8; - unsigned maxlazymatch = - windowsize >= 8192 ? MAX_SUPPORTED_DEFLATE_LENGTH : 64; - - unsigned usezeros = 1; /*not sure if setting it to false for windowsize < 8192 - is better or worse*/ - unsigned numzeros = 0; - - unsigned offset; /*the offset represents the distance in LZ77 terminology*/ - unsigned length; - unsigned lazy = 0; - unsigned lazylength = 0, lazyoffset = 0; - unsigned hashval; - unsigned current_offset, current_length; - unsigned prev_offset; - const unsigned char *lastptr, *foreptr, *backptr; - unsigned hashpos; - - if (windowsize == 0 || windowsize > 32768) - return 60; /*error: windowsize smaller/larger than allowed*/ - if ((windowsize & (windowsize - 1)) != 0) - return 90; /*error: must be power of two*/ - - if (nicematch > MAX_SUPPORTED_DEFLATE_LENGTH) - nicematch = MAX_SUPPORTED_DEFLATE_LENGTH; - - for (pos = inpos; pos < insize; ++pos) { - size_t wpos = - pos & (windowsize - 1); /*position for in 'circular' hash buffers*/ - unsigned chainlength = 0; - - hashval = getHash(in, insize, pos); - - if (usezeros && hashval == 0) { - if (numzeros == 0) - numzeros = countZeros(in, insize, pos); - else if (pos + numzeros > insize || in[pos + numzeros - 1] != 0) - --numzeros; - } - else { - numzeros = 0; - } - - updateHashChain(hash, wpos, hashval, numzeros); - - /*the length and offset found for the current position*/ - length = 0; - offset = 0; - - hashpos = hash->chain[wpos]; - - lastptr = - &in[insize < pos + MAX_SUPPORTED_DEFLATE_LENGTH - ? insize - : pos + MAX_SUPPORTED_DEFLATE_LENGTH]; - - /*search for the longest string*/ - prev_offset = 0; - for (;;) { - if (chainlength++ >= maxchainlength) - break; - current_offset = - (unsigned)(hashpos <= wpos ? wpos - hashpos : wpos - hashpos + windowsize); - - if (current_offset < prev_offset) - break; /*stop when went completely around the circular buffer*/ - prev_offset = current_offset; - if (current_offset > 0) { - /*test the next characters*/ - foreptr = &in[pos]; - backptr = &in[pos - current_offset]; - - /*common case in PNGs is lots of zeros. Quickly skip over them as a - * speedup*/ - if (numzeros >= 3) { - unsigned skip = hash->zeros[hashpos]; - if (skip > numzeros) - skip = numzeros; - backptr += skip; - foreptr += skip; - } - - while ( - foreptr != lastptr && - *backptr == - *foreptr) /*maximum supported length by deflate is max length*/ - { - ++backptr; - ++foreptr; - } - current_length = (unsigned)(foreptr - &in[pos]); - - if (current_length > length) { - length = current_length; /*the longest length*/ - offset = current_offset; /*the offset that is related to this longest - length*/ - /*jump out once a length of max length is found (speed gain). This - also jumps out if length is MAX_SUPPORTED_DEFLATE_LENGTH*/ - if (current_length >= nicematch) - break; - } - } - - if (hashpos == hash->chain[hashpos]) - break; - - if (numzeros >= 3 && length > numzeros) { - hashpos = hash->chainz[hashpos]; - if (hash->zeros[hashpos] != numzeros) - break; - } - else { - hashpos = hash->chain[hashpos]; - /*outdated hash value, happens if particular value was not encountered - * in whole last window*/ - if (hash->val[hashpos] != (int)hashval) - break; - } - } - - if (lazymatching) { - if (!lazy && length >= 3 && length <= maxlazymatch && - length < MAX_SUPPORTED_DEFLATE_LENGTH) { - lazy = 1; - lazylength = length; - lazyoffset = offset; - continue; /*try the next byte*/ - } - if (lazy) { - lazy = 0; - if (pos == 0) - ERROR_BREAK(81); - if (length > lazylength + 1) { - /*push the previous character as literal*/ - if (!uivector_push_back(out, in[pos - 1])) - ERROR_BREAK(83 /*alloc fail*/); - } - else { - length = lazylength; - offset = lazyoffset; - hash->head[hashval] = -1; /*the same hashchain update will be done, - this ensures no wrong alteration*/ - hash->headz[numzeros] = -1; /*idem*/ - --pos; - } - } - } - if (length >= 3 && offset > windowsize) - ERROR_BREAK(86 /*too big (or overflown negative) offset*/); - - /*encode it as length/distance pair or literal value*/ - if (length < - 3) /*only lengths of 3 or higher are supported as length/distance pair*/ - { - if (!uivector_push_back(out, in[pos])) - ERROR_BREAK(83 /*alloc fail*/); - } - else if (length < minmatch || (length == 3 && offset > 4096)) { - /*compensate for the fact that longer offsets have more extra bits, a - length of only 3 may be not worth it then*/ - if (!uivector_push_back(out, in[pos])) - ERROR_BREAK(83 /*alloc fail*/); - } - else { - addLengthDistance(out, length, offset); - for (i = 1; i < length; ++i) { - ++pos; - wpos = pos & (windowsize - 1); - hashval = getHash(in, insize, pos); - if (usezeros && hashval == 0) { - if (numzeros == 0) - numzeros = countZeros(in, insize, pos); - else if (pos + numzeros > insize || in[pos + numzeros - 1] != 0) - --numzeros; - } - else { - numzeros = 0; - } - updateHashChain(hash, wpos, hashval, numzeros); - } - } - } /*end of the loop through each character of input*/ - - return error; -} - -/* /////////////////////////////////////////////////////////////////////////// - */ - -static unsigned -deflateNoCompression(ucvector *out, const unsigned char *data, size_t datasize) -{ - /*non compressed deflate block data: 1 bit BFINAL,2 bits BTYPE,(5 bits): it - jumps to start of next byte, 2 bytes LEN, 2 bytes NLEN, LEN bytes literal - DATA*/ - - size_t i, j, numdeflateblocks = (datasize + 65534) / 65535; - unsigned datapos = 0; - for (i = 0; i != numdeflateblocks; ++i) { - unsigned BFINAL, BTYPE, LEN, NLEN; - unsigned char firstbyte; - - BFINAL = (i == numdeflateblocks - 1); - BTYPE = 0; - - firstbyte = - (unsigned char)(BFINAL + ((BTYPE & 1) << 1) + ((BTYPE & 2) << 1)); - ucvector_push_back(out, firstbyte); - - LEN = 65535; - if (datasize - datapos < 65535) - LEN = (unsigned)datasize - datapos; - NLEN = 65535 - LEN; - - ucvector_push_back(out, (unsigned char)(LEN & 255)); - ucvector_push_back(out, (unsigned char)(LEN >> 8)); - ucvector_push_back(out, (unsigned char)(NLEN & 255)); - ucvector_push_back(out, (unsigned char)(NLEN >> 8)); - - /*Decompressed data*/ - for (j = 0; j < 65535 && datapos < datasize; ++j) { - ucvector_push_back(out, data[datapos++]); - } - } - - return 0; -} - -/* -write the lz77-encoded data, which has lit, len and dist codes, to compressed -stream using huffman trees. tree_ll: the tree for lit and len codes. tree_d: the -tree for distance codes. -*/ -static void writeLZ77data( - size_t *bp, ucvector *out, const uivector *lz77_encoded, - const HuffmanTree *tree_ll, const HuffmanTree *tree_d) -{ - size_t i = 0; - for (i = 0; i != lz77_encoded->size; ++i) { - unsigned val = lz77_encoded->data[i]; - addHuffmanSymbol( - bp, out, HuffmanTree_getCode(tree_ll, val), - HuffmanTree_getLength(tree_ll, val)); - if (val > 256) /*for a length code, 3 more things have to be added*/ { - unsigned length_index = val - FIRST_LENGTH_CODE_INDEX; - unsigned n_length_extra_bits = LENGTHEXTRA[length_index]; - unsigned length_extra_bits = lz77_encoded->data[++i]; - - unsigned distance_code = lz77_encoded->data[++i]; - - unsigned distance_index = distance_code; - unsigned n_distance_extra_bits = DISTANCEEXTRA[distance_index]; - unsigned distance_extra_bits = lz77_encoded->data[++i]; - - addBitsToStream(bp, out, length_extra_bits, n_length_extra_bits); - addHuffmanSymbol( - bp, out, HuffmanTree_getCode(tree_d, distance_code), - HuffmanTree_getLength(tree_d, distance_code)); - addBitsToStream(bp, out, distance_extra_bits, n_distance_extra_bits); - } - } -} - -/*Deflate for a block of type "dynamic", that is, with freely, optimally, - * created huffman trees*/ -static unsigned deflateDynamic( - ucvector *out, size_t *bp, Hash *hash, const unsigned char *data, - size_t datapos, size_t dataend, const LodePNGCompressSettings *settings, - unsigned final) -{ - unsigned error = 0; - - /* - A block is compressed as follows: The PNG data is lz77 encoded, resulting in - literal bytes and length/distance pairs. This is then huffman compressed with - two huffman trees. One huffman tree is used for the lit and len values ("ll"), - another huffman tree is used for the dist values ("d"). These two trees are - stored using their code lengths, and to compress even more these code lengths - are also run-length encoded and huffman compressed. This gives a huffman tree - of code lengths "cl". The code lenghts used to describe this third tree are - the code length code lengths ("clcl"). - */ - - /*The lz77 encoded data, represented with integers since there will also be - * length and distance codes in it*/ - uivector lz77_encoded; - HuffmanTree tree_ll; /*tree for lit,len values*/ - HuffmanTree tree_d; /*tree for distance codes*/ - HuffmanTree tree_cl; /*tree for encoding the code lengths representing tree_ll - and tree_d*/ - uivector frequencies_ll; /*frequency of lit,len codes*/ - uivector frequencies_d; /*frequency of dist codes*/ - uivector frequencies_cl; /*frequency of code length codes*/ - uivector bitlen_lld; /*lit,len,dist code lenghts (int bits), literally - (without repeat codes).*/ - uivector bitlen_lld_e; /*bitlen_lld encoded with repeat codes (this is a - rudemtary run length compression)*/ - /*bitlen_cl is the code length code lengths ("clcl"). The bit lengths of codes - to represent tree_cl (these are written as is in the file, it would be crazy - to compress these using yet another huffman - tree that needs to be represented by yet another set of code lengths)*/ - uivector bitlen_cl; - size_t datasize = dataend - datapos; - - /* - Due to the huffman compression of huffman tree representations ("two levels"), - there are some anologies: bitlen_lld is to tree_cl what data is to tree_ll and - tree_d. bitlen_lld_e is to bitlen_lld what lz77_encoded is to data. bitlen_cl - is to bitlen_lld_e what bitlen_lld is to lz77_encoded. - */ - - unsigned BFINAL = final; - size_t numcodes_ll, numcodes_d, i; - unsigned HLIT, HDIST, HCLEN; - - uivector_init(&lz77_encoded); - HuffmanTree_init(&tree_ll); - HuffmanTree_init(&tree_d); - HuffmanTree_init(&tree_cl); - uivector_init(&frequencies_ll); - uivector_init(&frequencies_d); - uivector_init(&frequencies_cl); - uivector_init(&bitlen_lld); - uivector_init(&bitlen_lld_e); - uivector_init(&bitlen_cl); - - /*This while loop never loops due to a break at the end, it is here to - allow breaking out of it to the cleanup phase on error conditions.*/ - while (!error) { - if (settings->use_lz77) { - error = encodeLZ77( - &lz77_encoded, hash, data, datapos, dataend, settings->windowsize, - settings->minmatch, settings->nicematch, settings->lazymatching); - if (error) - break; - } - else { - if (!uivector_resize(&lz77_encoded, datasize)) - ERROR_BREAK(83 /*alloc fail*/); - for (i = datapos; i < dataend; ++i) - lz77_encoded.data[i - datapos] = - data[i]; /*no LZ77, but still will be Huffman compressed*/ - } - - if (!uivector_resizev(&frequencies_ll, 286, 0)) - ERROR_BREAK(83 /*alloc fail*/); - if (!uivector_resizev(&frequencies_d, 30, 0)) - ERROR_BREAK(83 /*alloc fail*/); - - /*Count the frequencies of lit, len and dist codes*/ - for (i = 0; i != lz77_encoded.size; ++i) { - unsigned symbol = lz77_encoded.data[i]; - ++frequencies_ll.data[symbol]; - if (symbol > 256) { - unsigned dist = lz77_encoded.data[i + 2]; - ++frequencies_d.data[dist]; - i += 3; - } - } - frequencies_ll.data[256] = - 1; /*there will be exactly 1 end code, at the end of the block*/ - - /*Make both huffman trees, one for the lit and len codes, one for the dist - * codes*/ - error = HuffmanTree_makeFromFrequencies( - &tree_ll, frequencies_ll.data, 257, frequencies_ll.size, 15); - if (error) - break; - /*2, not 1, is chosen for mincodes: some buggy PNG decoders require at least - * 2 symbols in the dist tree*/ - error = HuffmanTree_makeFromFrequencies( - &tree_d, frequencies_d.data, 2, frequencies_d.size, 15); - if (error) - break; - - numcodes_ll = tree_ll.numcodes; - if (numcodes_ll > 286) - numcodes_ll = 286; - numcodes_d = tree_d.numcodes; - if (numcodes_d > 30) - numcodes_d = 30; - /*store the code lengths of both generated trees in bitlen_lld*/ - for (i = 0; i != numcodes_ll; ++i) - uivector_push_back( - &bitlen_lld, HuffmanTree_getLength(&tree_ll, (unsigned)i)); - for (i = 0; i != numcodes_d; ++i) - uivector_push_back( - &bitlen_lld, HuffmanTree_getLength(&tree_d, (unsigned)i)); - - /*run-length compress bitlen_ldd into bitlen_lld_e by using repeat codes 16 - (copy length 3-6 times), 17 (3-10 zeroes), 18 (11-138 zeroes)*/ - for (i = 0; i != (unsigned)bitlen_lld.size; ++i) { - unsigned j = 0; /*amount of repititions*/ - while (i + j + 1 < (unsigned)bitlen_lld.size && - bitlen_lld.data[i + j + 1] == bitlen_lld.data[i]) - ++j; - - if (bitlen_lld.data[i] == 0 && j >= 2) /*repeat code for zeroes*/ { - ++j; /*include the first zero*/ - if (j <= 10) /*repeat code 17 supports max 10 zeroes*/ { - uivector_push_back(&bitlen_lld_e, 17); - uivector_push_back(&bitlen_lld_e, j - 3); - } - else /*repeat code 18 supports max 138 zeroes*/ { - if (j > 138) - j = 138; - uivector_push_back(&bitlen_lld_e, 18); - uivector_push_back(&bitlen_lld_e, j - 11); - } - i += (j - 1); - } - else if (j >= 3) /*repeat code for value other than zero*/ { - size_t k; - unsigned num = j / 6, rest = j % 6; - uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]); - for (k = 0; k < num; ++k) { - uivector_push_back(&bitlen_lld_e, 16); - uivector_push_back(&bitlen_lld_e, 6 - 3); - } - if (rest >= 3) { - uivector_push_back(&bitlen_lld_e, 16); - uivector_push_back(&bitlen_lld_e, rest - 3); - } - else - j -= rest; - i += j; - } - else /*too short to benefit from repeat code*/ { - uivector_push_back(&bitlen_lld_e, bitlen_lld.data[i]); - } - } - - /*generate tree_cl, the huffmantree of huffmantrees*/ - - if (!uivector_resizev(&frequencies_cl, NUM_CODE_LENGTH_CODES, 0)) - ERROR_BREAK(83 /*alloc fail*/); - for (i = 0; i != bitlen_lld_e.size; ++i) { - ++frequencies_cl.data[bitlen_lld_e.data[i]]; - /*after a repeat code come the bits that specify the number of - repetitions, those don't need to be in the frequencies_cl calculation*/ - if (bitlen_lld_e.data[i] >= 16) - ++i; - } - - error = HuffmanTree_makeFromFrequencies( - &tree_cl, frequencies_cl.data, frequencies_cl.size, frequencies_cl.size, - 7); - if (error) - break; - - if (!uivector_resize(&bitlen_cl, tree_cl.numcodes)) - ERROR_BREAK(83 /*alloc fail*/); - for (i = 0; i != tree_cl.numcodes; ++i) { - /*lenghts of code length tree is in the order as specified by deflate*/ - bitlen_cl.data[i] = HuffmanTree_getLength(&tree_cl, CLCL_ORDER[i]); - } - while (bitlen_cl.data[bitlen_cl.size - 1] == 0 && bitlen_cl.size > 4) { - /*remove zeros at the end, but minimum size must be 4*/ - if (!uivector_resize(&bitlen_cl, bitlen_cl.size - 1)) - ERROR_BREAK(83 /*alloc fail*/); - } - if (error) - break; - - /* - Write everything into the output - - After the BFINAL and BTYPE, the dynamic block consists out of the following: - - 5 bits HLIT, 5 bits HDIST, 4 bits HCLEN - - (HCLEN+4)*3 bits code lengths of code length alphabet - - HLIT + 257 code lenghts of lit/length alphabet (encoded using the code - length alphabet, + possible repetition codes 16, 17, 18) - - HDIST + 1 code lengths of distance alphabet (encoded using the code length - alphabet, + possible repetition codes 16, 17, 18) - - compressed data - - 256 (end code) - */ - - /*Write block type*/ - addBitToStream(bp, out, BFINAL); - addBitToStream(bp, out, 0); /*first bit of BTYPE "dynamic"*/ - addBitToStream(bp, out, 1); /*second bit of BTYPE "dynamic"*/ - - /*write the HLIT, HDIST and HCLEN values*/ - HLIT = (unsigned)(numcodes_ll - 257); - HDIST = (unsigned)(numcodes_d - 1); - HCLEN = (unsigned)bitlen_cl.size - 4; - /*trim zeroes for HCLEN. HLIT and HDIST were already trimmed at tree - * creation*/ - while (!bitlen_cl.data[HCLEN + 4 - 1] && HCLEN > 0) - --HCLEN; - addBitsToStream(bp, out, HLIT, 5); - addBitsToStream(bp, out, HDIST, 5); - addBitsToStream(bp, out, HCLEN, 4); - - /*write the code lenghts of the code length alphabet*/ - for (i = 0; i != HCLEN + 4; ++i) - addBitsToStream(bp, out, bitlen_cl.data[i], 3); - - /*write the lenghts of the lit/len AND the dist alphabet*/ - for (i = 0; i != bitlen_lld_e.size; ++i) { - addHuffmanSymbol( - bp, out, HuffmanTree_getCode(&tree_cl, bitlen_lld_e.data[i]), - HuffmanTree_getLength(&tree_cl, bitlen_lld_e.data[i])); - /*extra bits of repeat codes*/ - if (bitlen_lld_e.data[i] == 16) - addBitsToStream(bp, out, bitlen_lld_e.data[++i], 2); - else if (bitlen_lld_e.data[i] == 17) - addBitsToStream(bp, out, bitlen_lld_e.data[++i], 3); - else if (bitlen_lld_e.data[i] == 18) - addBitsToStream(bp, out, bitlen_lld_e.data[++i], 7); - } - - /*write the compressed data symbols*/ - writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d); - /*error: the length of the end code 256 must be larger than 0*/ - if (HuffmanTree_getLength(&tree_ll, 256) == 0) - ERROR_BREAK(64); - - /*write the end code*/ - addHuffmanSymbol( - bp, out, HuffmanTree_getCode(&tree_ll, 256), - HuffmanTree_getLength(&tree_ll, 256)); - - break; /*end of error-while*/ - } - - /*cleanup*/ - uivector_cleanup(&lz77_encoded); - HuffmanTree_cleanup(&tree_ll); - HuffmanTree_cleanup(&tree_d); - HuffmanTree_cleanup(&tree_cl); - uivector_cleanup(&frequencies_ll); - uivector_cleanup(&frequencies_d); - uivector_cleanup(&frequencies_cl); - uivector_cleanup(&bitlen_lld_e); - uivector_cleanup(&bitlen_lld); - uivector_cleanup(&bitlen_cl); - - return error; -} - -static unsigned deflateFixed( - ucvector *out, size_t *bp, Hash *hash, const unsigned char *data, - size_t datapos, size_t dataend, const LodePNGCompressSettings *settings, - unsigned final) -{ - HuffmanTree tree_ll; /*tree for literal values and length codes*/ - HuffmanTree tree_d; /*tree for distance codes*/ - - unsigned BFINAL = final; - unsigned error = 0; - size_t i; - - HuffmanTree_init(&tree_ll); - HuffmanTree_init(&tree_d); - - generateFixedLitLenTree(&tree_ll); - generateFixedDistanceTree(&tree_d); - - addBitToStream(bp, out, BFINAL); - addBitToStream(bp, out, 1); /*first bit of BTYPE*/ - addBitToStream(bp, out, 0); /*second bit of BTYPE*/ - - if (settings->use_lz77) /*LZ77 encoded*/ { - uivector lz77_encoded; - uivector_init(&lz77_encoded); - error = encodeLZ77( - &lz77_encoded, hash, data, datapos, dataend, settings->windowsize, - settings->minmatch, settings->nicematch, settings->lazymatching); - if (!error) - writeLZ77data(bp, out, &lz77_encoded, &tree_ll, &tree_d); - uivector_cleanup(&lz77_encoded); - } - else /*no LZ77, but still will be Huffman compressed*/ { - for (i = datapos; i < dataend; ++i) { - addHuffmanSymbol( - bp, out, HuffmanTree_getCode(&tree_ll, data[i]), - HuffmanTree_getLength(&tree_ll, data[i])); - } - } - /*add END code*/ - if (!error) - addHuffmanSymbol( - bp, out, HuffmanTree_getCode(&tree_ll, 256), - HuffmanTree_getLength(&tree_ll, 256)); - - /*cleanup*/ - HuffmanTree_cleanup(&tree_ll); - HuffmanTree_cleanup(&tree_d); - - return error; -} - -static unsigned lodepng_deflatev( - ucvector *out, const unsigned char *in, size_t insize, - const LodePNGCompressSettings *settings) -{ - unsigned error = 0; - size_t i, blocksize, numdeflateblocks; - size_t bp = 0; /*the bit pointer*/ - Hash hash; - - if (settings->btype > 2) - return 61; - else if (settings->btype == 0) - return deflateNoCompression(out, in, insize); - else if (settings->btype == 1) - blocksize = insize; - else /*if(settings->btype == 2)*/ { - /*on PNGs, deflate blocks of 65-262k seem to give most dense encoding*/ - blocksize = insize / 8 + 8; - if (blocksize < 65536) - blocksize = 65536; - if (blocksize > 262144) - blocksize = 262144; - } - - numdeflateblocks = (insize + blocksize - 1) / blocksize; - if (numdeflateblocks == 0) - numdeflateblocks = 1; - - error = hash_init(&hash, settings->windowsize); - if (error) - return error; - - for (i = 0; i != numdeflateblocks && !error; ++i) { - unsigned final = (i == numdeflateblocks - 1); - size_t start = i * blocksize; - size_t end = start + blocksize; - if (end > insize) - end = insize; - - if (settings->btype == 1) - error = deflateFixed(out, &bp, &hash, in, start, end, settings, final); - else if (settings->btype == 2) - error = deflateDynamic(out, &bp, &hash, in, start, end, settings, final); - } - - hash_cleanup(&hash); - - return error; -} - -unsigned lodepng_deflate( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGCompressSettings *settings) -{ - unsigned error; - ucvector v; - ucvector_init_buffer(&v, *out, *outsize); - error = lodepng_deflatev(&v, in, insize, settings); - *out = v.data; - *outsize = v.size; - return error; -} - -static unsigned deflate( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGCompressSettings *settings) -{ - if (settings->custom_deflate) { - return settings->custom_deflate(out, outsize, in, insize, settings); - } - else { - return lodepng_deflate(out, outsize, in, insize, settings); - } -} - -#endif /*LODEPNG_COMPILE_DECODER*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Adler32 */ -/* ////////////////////////////////////////////////////////////////////////// */ - -static unsigned -update_adler32(unsigned adler, const unsigned char *data, unsigned len) -{ - unsigned s1 = adler & 0xffff; - unsigned s2 = (adler >> 16) & 0xffff; - - while (len > 0) { - /*at least 5552 sums can be done before the sums overflow, saving a lot of - * module divisions*/ - unsigned amount = len > 5552 ? 5552 : len; - len -= amount; - while (amount > 0) { - s1 += (*data++); - s2 += s1; - --amount; - } - s1 %= 65521; - s2 %= 65521; - } - - return (s2 << 16) | s1; -} - -/*Return the adler32 of the bytes data[0..len-1]*/ -static unsigned adler32(const unsigned char *data, unsigned len) -{ - return update_adler32(1L, data, len); -} - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Zlib / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_DECODER - -unsigned lodepng_zlib_decompress( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGDecompressSettings *settings) -{ - unsigned error = 0; - unsigned CM, CINFO, FDICT; - - if (insize < 2) - return 53; /*error, size of zlib data too small*/ - /*read information from zlib header*/ - if ((in[0] * 256 + in[1]) % 31 != 0) { - /*error: 256 * in[0] + in[1] must be a multiple of 31, the FCHECK value is - * supposed to be made that way*/ - return 24; - } - - CM = in[0] & 15; - CINFO = (in[0] >> 4) & 15; - /*FCHECK = in[1] & 31;*/ /*FCHECK is already tested above*/ - FDICT = (in[1] >> 5) & 1; - /*FLEVEL = (in[1] >> 6) & 3;*/ /*FLEVEL is not used here*/ - - if (CM != 8 || CINFO > 7) { - /*error: only compression method 8: inflate with sliding window of 32k is - * supported by the PNG spec*/ - return 25; - } - if (FDICT != 0) { - /*error: the specification of PNG says about the zlib stream: - "The additional flags shall not specify a preset dictionary."*/ - return 26; - } - - error = inflate(out, outsize, in + 2, insize - 2, settings); - if (error) - return error; - - if (!settings->ignore_adler32) { - unsigned ADLER32 = lodepng_read32bitInt(&in[insize - 4]); - unsigned checksum = adler32(*out, (unsigned)(*outsize)); - if (checksum != ADLER32) - return 58; /*error, adler checksum not correct, data must be corrupted*/ - } - - return 0; /*no error*/ -} - -static unsigned zlib_decompress( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGDecompressSettings *settings) -{ - if (settings->custom_zlib) { - return settings->custom_zlib(out, outsize, in, insize, settings); - } - else { - return lodepng_zlib_decompress(out, outsize, in, insize, settings); - } -} - -#endif /*LODEPNG_COMPILE_DECODER*/ - -#ifdef LODEPNG_COMPILE_ENCODER - -unsigned lodepng_zlib_compress( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGCompressSettings *settings) -{ - /*initially, *out must be NULL and outsize 0, if you just give some random - *out that's pointing to a non allocated buffer, this'll crash*/ - ucvector outv; - size_t i; - unsigned error; - unsigned char *deflatedata = 0; - size_t deflatesize = 0; - - /*zlib data: 1 byte CMF (CM+CINFO), 1 byte FLG, deflate data, 4 byte ADLER32 - * checksum of the Decompressed data*/ - unsigned CMF = 120; /*0b01111000: CM 8, CINFO 7. With CINFO 7, any window size - up to 32768 can be used.*/ - unsigned FLEVEL = 0; - unsigned FDICT = 0; - unsigned CMFFLG = 256 * CMF + FDICT * 32 + FLEVEL * 64; - unsigned FCHECK = 31 - CMFFLG % 31; - CMFFLG += FCHECK; - - /*ucvector-controlled version of the output buffer, for dynamic array*/ - ucvector_init_buffer(&outv, *out, *outsize); - - ucvector_push_back(&outv, (unsigned char)(CMFFLG >> 8)); - ucvector_push_back(&outv, (unsigned char)(CMFFLG & 255)); - - error = deflate(&deflatedata, &deflatesize, in, insize, settings); - - if (!error) { - unsigned ADLER32 = adler32(in, (unsigned)insize); - for (i = 0; i != deflatesize; ++i) - ucvector_push_back(&outv, deflatedata[i]); - lodepng_free(deflatedata); - lodepng_add32bitInt(&outv, ADLER32); - } - - *out = outv.data; - *outsize = outv.size; - - return error; -} - -/* compress using the default or custom zlib function */ -static unsigned zlib_compress( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGCompressSettings *settings) -{ - if (settings->custom_zlib) { - return settings->custom_zlib(out, outsize, in, insize, settings); - } - else { - return lodepng_zlib_compress(out, outsize, in, insize, settings); - } -} - -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#else /*no LODEPNG_COMPILE_ZLIB*/ - -#ifdef LODEPNG_COMPILE_DECODER -static unsigned zlib_decompress( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGDecompressSettings *settings) -{ - if (!settings->custom_zlib) - return 87; /*no custom zlib function provided */ - return settings->custom_zlib(out, outsize, in, insize, settings); -} -#endif /*LODEPNG_COMPILE_DECODER*/ -#ifdef LODEPNG_COMPILE_ENCODER -static unsigned zlib_compress( - unsigned char **out, size_t *outsize, const unsigned char *in, - size_t insize, const LodePNGCompressSettings *settings) -{ - if (!settings->custom_zlib) - return 87; /*no custom zlib function provided */ - return settings->custom_zlib(out, outsize, in, insize, settings); -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#endif /*LODEPNG_COMPILE_ZLIB*/ - -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_ENCODER - -/*this is a good tradeoff between speed and compression ratio*/ -#define DEFAULT_WINDOWSIZE 2048 - -void lodepng_compress_settings_init(LodePNGCompressSettings *settings) -{ - /*compress with dynamic huffman tree (not in the mathematical sense, just not - * the predefined one)*/ - settings->btype = 2; - settings->use_lz77 = 1; - settings->windowsize = DEFAULT_WINDOWSIZE; - settings->minmatch = 3; - settings->nicematch = 128; - settings->lazymatching = 1; - - settings->custom_zlib = 0; - settings->custom_deflate = 0; - settings->custom_context = 0; -} - -const LodePNGCompressSettings lodepng_default_compress_settings = { - 2, 1, DEFAULT_WINDOWSIZE, 3, 128, 1, 0, 0, 0}; - -#endif /*LODEPNG_COMPILE_ENCODER*/ - -#ifdef LODEPNG_COMPILE_DECODER - -void lodepng_decompress_settings_init(LodePNGDecompressSettings *settings) -{ - settings->ignore_adler32 = 0; - - settings->custom_zlib = 0; - settings->custom_inflate = 0; - settings->custom_context = 0; -} - -const LodePNGDecompressSettings lodepng_default_decompress_settings = {0, 0, 0, - 0}; - -#endif /*LODEPNG_COMPILE_DECODER*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* // End of Zlib related code. Begin of PNG related code. // */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_PNG - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / CRC32 / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifndef LODEPNG_NO_COMPILE_CRC -/* CRC polynomial: 0xedb88320 */ -static unsigned lodepng_crc32_table[256] = { - 0u, 1996959894u, 3993919788u, 2567524794u, 124634137u, - 1886057615u, 3915621685u, 2657392035u, 249268274u, 2044508324u, - 3772115230u, 2547177864u, 162941995u, 2125561021u, 3887607047u, - 2428444049u, 498536548u, 1789927666u, 4089016648u, 2227061214u, - 450548861u, 1843258603u, 4107580753u, 2211677639u, 325883990u, - 1684777152u, 4251122042u, 2321926636u, 335633487u, 1661365465u, - 4195302755u, 2366115317u, 997073096u, 1281953886u, 3579855332u, - 2724688242u, 1006888145u, 1258607687u, 3524101629u, 2768942443u, - 901097722u, 1119000684u, 3686517206u, 2898065728u, 853044451u, - 1172266101u, 3705015759u, 2882616665u, 651767980u, 1373503546u, - 3369554304u, 3218104598u, 565507253u, 1454621731u, 3485111705u, - 3099436303u, 671266974u, 1594198024u, 3322730930u, 2970347812u, - 795835527u, 1483230225u, 3244367275u, 3060149565u, 1994146192u, - 31158534u, 2563907772u, 4023717930u, 1907459465u, 112637215u, - 2680153253u, 3904427059u, 2013776290u, 251722036u, 2517215374u, - 3775830040u, 2137656763u, 141376813u, 2439277719u, 3865271297u, - 1802195444u, 476864866u, 2238001368u, 4066508878u, 1812370925u, - 453092731u, 2181625025u, 4111451223u, 1706088902u, 314042704u, - 2344532202u, 4240017532u, 1658658271u, 366619977u, 2362670323u, - 4224994405u, 1303535960u, 984961486u, 2747007092u, 3569037538u, - 1256170817u, 1037604311u, 2765210733u, 3554079995u, 1131014506u, - 879679996u, 2909243462u, 3663771856u, 1141124467u, 855842277u, - 2852801631u, 3708648649u, 1342533948u, 654459306u, 3188396048u, - 3373015174u, 1466479909u, 544179635u, 3110523913u, 3462522015u, - 1591671054u, 702138776u, 2966460450u, 3352799412u, 1504918807u, - 783551873u, 3082640443u, 3233442989u, 3988292384u, 2596254646u, - 62317068u, 1957810842u, 3939845945u, 2647816111u, 81470997u, - 1943803523u, 3814918930u, 2489596804u, 225274430u, 2053790376u, - 3826175755u, 2466906013u, 167816743u, 2097651377u, 4027552580u, - 2265490386u, 503444072u, 1762050814u, 4150417245u, 2154129355u, - 426522225u, 1852507879u, 4275313526u, 2312317920u, 282753626u, - 1742555852u, 4189708143u, 2394877945u, 397917763u, 1622183637u, - 3604390888u, 2714866558u, 953729732u, 1340076626u, 3518719985u, - 2797360999u, 1068828381u, 1219638859u, 3624741850u, 2936675148u, - 906185462u, 1090812512u, 3747672003u, 2825379669u, 829329135u, - 1181335161u, 3412177804u, 3160834842u, 628085408u, 1382605366u, - 3423369109u, 3138078467u, 570562233u, 1426400815u, 3317316542u, - 2998733608u, 733239954u, 1555261956u, 3268935591u, 3050360625u, - 752459403u, 1541320221u, 2607071920u, 3965973030u, 1969922972u, - 40735498u, 2617837225u, 3943577151u, 1913087877u, 83908371u, - 2512341634u, 3803740692u, 2075208622u, 213261112u, 2463272603u, - 3855990285u, 2094854071u, 198958881u, 2262029012u, 4057260610u, - 1759359992u, 534414190u, 2176718541u, 4139329115u, 1873836001u, - 414664567u, 2282248934u, 4279200368u, 1711684554u, 285281116u, - 2405801727u, 4167216745u, 1634467795u, 376229701u, 2685067896u, - 3608007406u, 1308918612u, 956543938u, 2808555105u, 3495958263u, - 1231636301u, 1047427035u, 2932959818u, 3654703836u, 1088359270u, - 936918000u, 2847714899u, 3736837829u, 1202900863u, 817233897u, - 3183342108u, 3401237130u, 1404277552u, 615818150u, 3134207493u, - 3453421203u, 1423857449u, 601450431u, 3009837614u, 3294710456u, - 1567103746u, 711928724u, 3020668471u, 3272380065u, 1510334235u, - 755167117u}; - -/*Return the CRC of the bytes buf[0..len-1].*/ -unsigned lodepng_crc32(const unsigned char *data, size_t length) -{ - unsigned r = 0xffffffffu; - size_t i; - for (i = 0; i < length; ++i) { - r = lodepng_crc32_table[(r ^ data[i]) & 0xff] ^ (r >> 8); - } - return r ^ 0xffffffffu; -} -#else /* !LODEPNG_NO_COMPILE_CRC */ -unsigned lodepng_crc32(const unsigned char *data, size_t length); -#endif /* !LODEPNG_NO_COMPILE_CRC */ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Reading and writing single bits and bytes from/to stream for LodePNG / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -static unsigned char -readBitFromReversedStream(size_t *bitpointer, const unsigned char *bitstream) -{ - unsigned char result = - (unsigned char)((bitstream[(*bitpointer) >> 3] >> (7 - ((*bitpointer) & 0x7))) & 1); - ++(*bitpointer); - return result; -} - -static unsigned readBitsFromReversedStream( - size_t *bitpointer, const unsigned char *bitstream, size_t nbits) -{ - unsigned result = 0; - size_t i; - for (i = 0; i < nbits; ++i) { - result <<= 1; - result |= (unsigned)readBitFromReversedStream(bitpointer, bitstream); - } - return result; -} - -#ifdef LODEPNG_COMPILE_DECODER -static void setBitOfReversedStream0( - size_t *bitpointer, unsigned char *bitstream, unsigned char bit) -{ - /*the current bit in bitstream must be 0 for this to work*/ - if (bit) { - /*earlier bit of huffman code is in a lesser significant bit of an earlier - * byte*/ - bitstream[(*bitpointer) >> 3] |= (bit << (7 - ((*bitpointer) & 0x7))); - } - ++(*bitpointer); -} -#endif /*LODEPNG_COMPILE_DECODER*/ - -static void setBitOfReversedStream( - size_t *bitpointer, unsigned char *bitstream, unsigned char bit) -{ - /*the current bit in bitstream may be 0 or 1 for this to work*/ - if (bit == 0) - bitstream[(*bitpointer) >> 3] &= - (unsigned char)(~(1 << (7 - ((*bitpointer) & 0x7)))); - else - bitstream[(*bitpointer) >> 3] |= (1 << (7 - ((*bitpointer) & 0x7))); - ++(*bitpointer); -} - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / PNG chunks / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -unsigned lodepng_chunk_length(const unsigned char *chunk) -{ - return lodepng_read32bitInt(&chunk[0]); -} - -void lodepng_chunk_type(char type[5], const unsigned char *chunk) -{ - unsigned i; - for (i = 0; i != 4; ++i) - type[i] = (char)chunk[4 + i]; - type[4] = 0; /*null termination char*/ -} - -unsigned char -lodepng_chunk_type_equals(const unsigned char *chunk, const char *type) -{ - if (AsciiStrLen(type) != 4) - return 0; - return ( - chunk[4] == type[0] && chunk[5] == type[1] && chunk[6] == type[2] && - chunk[7] == type[3]); -} - -unsigned char lodepng_chunk_ancillary(const unsigned char *chunk) -{ - return ((chunk[4] & 32) != 0); -} - -unsigned char lodepng_chunk_private(const unsigned char *chunk) -{ - return ((chunk[6] & 32) != 0); -} - -unsigned char lodepng_chunk_safetocopy(const unsigned char *chunk) -{ - return ((chunk[7] & 32) != 0); -} - -unsigned char *lodepng_chunk_data(unsigned char *chunk) { return &chunk[8]; } - -const unsigned char *lodepng_chunk_data_const(const unsigned char *chunk) -{ - return &chunk[8]; -} - -unsigned lodepng_chunk_check_crc(const unsigned char *chunk) -{ - unsigned length = lodepng_chunk_length(chunk); - unsigned CRC = lodepng_read32bitInt(&chunk[length + 8]); - /*the CRC is taken of the data and the 4 chunk type letters, not the length*/ - unsigned checksum = lodepng_crc32(&chunk[4], length + 4); - if (CRC != checksum) - return 1; - else - return 0; -} - -void lodepng_chunk_generate_crc(unsigned char *chunk) -{ - unsigned length = lodepng_chunk_length(chunk); - unsigned CRC = lodepng_crc32(&chunk[4], length + 4); - lodepng_set32bitInt(chunk + 8 + length, CRC); -} - -unsigned char *lodepng_chunk_next(unsigned char *chunk) -{ - if (chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && - chunk[3] == 0x47 && chunk[4] == 0x0d && chunk[5] == 0x0a && - chunk[6] == 0x1a && chunk[7] == 0x0a) { - /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */ - return chunk + 8; - } - else { - unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; - return chunk + total_chunk_length; - } -} - -const unsigned char *lodepng_chunk_next_const(const unsigned char *chunk) -{ - if (chunk[0] == 0x89 && chunk[1] == 0x50 && chunk[2] == 0x4e && - chunk[3] == 0x47 && chunk[4] == 0x0d && chunk[5] == 0x0a && - chunk[6] == 0x1a && chunk[7] == 0x0a) { - /* Is PNG magic header at start of PNG file. Jump to first actual chunk. */ - return chunk + 8; - } - else { - unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; - return chunk + total_chunk_length; - } -} - -unsigned char *lodepng_chunk_find( - unsigned char *chunk, const unsigned char *end, const char type[5]) -{ - for (;;) { - if (chunk + 12 >= end) - return 0; - if (lodepng_chunk_type_equals(chunk, type)) - return chunk; - chunk = lodepng_chunk_next(chunk); - } -} - -const unsigned char *lodepng_chunk_find_const( - const unsigned char *chunk, const unsigned char *end, const char type[5]) -{ - for (;;) { - if (chunk + 12 >= end) - return 0; - if (lodepng_chunk_type_equals(chunk, type)) - return chunk; - chunk = lodepng_chunk_next_const(chunk); - } -} - -unsigned lodepng_chunk_append( - unsigned char **out, size_t *outlength, const unsigned char *chunk) -{ - unsigned i; - unsigned total_chunk_length = lodepng_chunk_length(chunk) + 12; - unsigned char *chunk_start, *new_buffer; - size_t new_length = (*outlength) + total_chunk_length; - if (new_length < total_chunk_length || new_length < (*outlength)) - return 77; /*integer overflow happened*/ - - new_buffer = (unsigned char *)lodepng_realloc(*out, new_length); - if (!new_buffer) - return 83; /*alloc fail*/ - (*out) = new_buffer; - (*outlength) = new_length; - chunk_start = &(*out)[new_length - total_chunk_length]; - - for (i = 0; i != total_chunk_length; ++i) - chunk_start[i] = chunk[i]; - - return 0; -} - -unsigned lodepng_chunk_create( - unsigned char **out, size_t *outlength, unsigned length, const char *type, - const unsigned char *data) -{ - unsigned i; - unsigned char *chunk, *new_buffer; - size_t new_length = (*outlength) + length + 12; - if (new_length < length + 12 || new_length < (*outlength)) - return 77; /*integer overflow happened*/ - new_buffer = (unsigned char *)lodepng_realloc(*out, new_length); - if (!new_buffer) - return 83; /*alloc fail*/ - (*out) = new_buffer; - (*outlength) = new_length; - chunk = &(*out)[(*outlength) - length - 12]; - - /*1: length*/ - lodepng_set32bitInt(chunk, (unsigned)length); - - /*2: chunk name (4 letters)*/ - chunk[4] = (unsigned char)type[0]; - chunk[5] = (unsigned char)type[1]; - chunk[6] = (unsigned char)type[2]; - chunk[7] = (unsigned char)type[3]; - - /*3: the data*/ - for (i = 0; i != length; ++i) - chunk[8 + i] = data[i]; - - /*4: CRC (of the chunkname characters and the data)*/ - lodepng_chunk_generate_crc(chunk); - - return 0; -} - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / Color types and such / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/*return type is a LodePNG error code*/ -static unsigned -checkColorValidity(LodePNGColorType colortype, unsigned bd) /*bd = bitdepth*/ -{ - switch (colortype) { - case 0: - if (!(bd == 1 || bd == 2 || bd == 4 || bd == 8 || bd == 16)) - return 37; - break; /*grey*/ - case 2: - if (!(bd == 8 || bd == 16)) - return 37; - break; /*RGB*/ - case 3: - if (!(bd == 1 || bd == 2 || bd == 4 || bd == 8)) - return 37; - break; /*palette*/ - case 4: - if (!(bd == 8 || bd == 16)) - return 37; - break; /*grey + alpha*/ - case 6: - if (!(bd == 8 || bd == 16)) - return 37; - break; /*RGBA*/ - default: - return 31; - } - return 0; /*allowed color type / bits combination*/ -} - -static unsigned getNumColorChannels(LodePNGColorType colortype) -{ - switch (colortype) { - case 0: - return 1; /*grey*/ - case 2: - return 3; /*RGB*/ - case 3: - return 1; /*palette*/ - case 4: - return 2; /*grey + alpha*/ - case 6: - return 4; /*RGBA*/ - } - return 0; /*unexisting color type*/ -} - -static unsigned -lodepng_get_bpp_lct(LodePNGColorType colortype, unsigned bitdepth) -{ - /*bits per pixel is amount of channels * bits per channel*/ - return getNumColorChannels(colortype) * bitdepth; -} - -/* ////////////////////////////////////////////////////////////////////////// */ - -void lodepng_color_mode_init(LodePNGColorMode *info) -{ - info->key_defined = 0; - info->key_r = info->key_g = info->key_b = 0; - info->colortype = LCT_RGBA; - info->bitdepth = 8; - info->palette = 0; - info->palettesize = 0; -} - -void lodepng_color_mode_cleanup(LodePNGColorMode *info) -{ - lodepng_palette_clear(info); -} - -unsigned -lodepng_color_mode_copy(LodePNGColorMode *dest, const LodePNGColorMode *source) -{ - size_t i; - lodepng_color_mode_cleanup(dest); - *dest = *source; - if (source->palette) { - dest->palette = (unsigned char *)lodepng_malloc(1024); - if (!dest->palette && source->palettesize) - return 83; /*alloc fail*/ - for (i = 0; i != source->palettesize * 4; ++i) - dest->palette[i] = source->palette[i]; - } - return 0; -} - -LodePNGColorMode -lodepng_color_mode_make(LodePNGColorType colortype, unsigned bitdepth) -{ - LodePNGColorMode result; - lodepng_color_mode_init(&result); - result.colortype = colortype; - result.bitdepth = bitdepth; - return result; -} - -static int -lodepng_color_mode_equal(const LodePNGColorMode *a, const LodePNGColorMode *b) -{ - size_t i; - if (a->colortype != b->colortype) - return 0; - if (a->bitdepth != b->bitdepth) - return 0; - if (a->key_defined != b->key_defined) - return 0; - if (a->key_defined) { - if (a->key_r != b->key_r) - return 0; - if (a->key_g != b->key_g) - return 0; - if (a->key_b != b->key_b) - return 0; - } - if (a->palettesize != b->palettesize) - return 0; - for (i = 0; i != a->palettesize * 4; ++i) { - if (a->palette[i] != b->palette[i]) - return 0; - } - return 1; -} - -void lodepng_palette_clear(LodePNGColorMode *info) -{ - if (info->palette) - lodepng_free(info->palette); - info->palette = 0; - info->palettesize = 0; -} - -unsigned lodepng_palette_add( - LodePNGColorMode *info, unsigned char r, unsigned char g, unsigned char b, - unsigned char a) -{ - unsigned char *data; - /*the same resize technique as C++ std::vectors is used, and here it's made so - that for a palette with the max of 256 colors, it'll have the exact alloc - size*/ - if (!info->palette) /*allocate palette if empty*/ { - /*room for 256 colors with 4 bytes each*/ - data = (unsigned char *)lodepng_realloc(info->palette, 1024); - if (!data) - return 83; /*alloc fail*/ - else - info->palette = data; - } - info->palette[4 * info->palettesize + 0] = r; - info->palette[4 * info->palettesize + 1] = g; - info->palette[4 * info->palettesize + 2] = b; - info->palette[4 * info->palettesize + 3] = a; - ++info->palettesize; - return 0; -} - -/*calculate bits per pixel out of colortype and bitdepth*/ -unsigned lodepng_get_bpp(const LodePNGColorMode *info) -{ - return lodepng_get_bpp_lct(info->colortype, info->bitdepth); -} - -unsigned lodepng_get_channels(const LodePNGColorMode *info) -{ - return getNumColorChannels(info->colortype); -} - -unsigned lodepng_is_greyscale_type(const LodePNGColorMode *info) -{ - return info->colortype == LCT_GREY || info->colortype == LCT_GREY_ALPHA; -} - -unsigned lodepng_is_alpha_type(const LodePNGColorMode *info) -{ - return (info->colortype & 4) != 0; /*4 or 6*/ -} - -unsigned lodepng_is_palette_type(const LodePNGColorMode *info) -{ - return info->colortype == LCT_PALETTE; -} - -unsigned lodepng_has_palette_alpha(const LodePNGColorMode *info) -{ - size_t i; - for (i = 0; i != info->palettesize; ++i) { - if (info->palette[i * 4 + 3] < 255) - return 1; - } - return 0; -} - -unsigned lodepng_can_have_alpha(const LodePNGColorMode *info) -{ - return info->key_defined || lodepng_is_alpha_type(info) || - lodepng_has_palette_alpha(info); -} - -size_t lodepng_get_raw_size_lct( - unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) -{ - size_t bpp = lodepng_get_bpp_lct(colortype, bitdepth); - size_t n = (size_t)w * (size_t)h; - return ((n / 8) * bpp) + ((n & 7) * bpp + 7) / 8; -} - -size_t -lodepng_get_raw_size(unsigned w, unsigned h, const LodePNGColorMode *color) -{ - return lodepng_get_raw_size_lct(w, h, color->colortype, color->bitdepth); -} - -#ifdef LODEPNG_COMPILE_PNG -#ifdef LODEPNG_COMPILE_DECODER - -/*in an idat chunk, each scanline is a multiple of 8 bits, unlike the lodepng -output buffer, and in addition has one extra byte per line: the filter byte. So -this gives a larger result than lodepng_get_raw_size. */ -static size_t -lodepng_get_raw_size_idat(unsigned w, unsigned h, const LodePNGColorMode *color) -{ - size_t bpp = lodepng_get_bpp(color); - /* + 1 for the filter byte, and possibly plus padding bits per line */ - size_t line = ((size_t)(w / 8) * bpp) + 1 + ((w & 7) * bpp + 7) / 8; - return (size_t)h * line; -} - -/* Safely check if multiplying two integers will overflow (no undefined -behavior, compiler removing the code, etc...) and output result. */ -static int lodepng_mulofl(size_t a, size_t b, size_t *result) -{ - *result = a * b; /* Unsigned multiplication is well defined and safe in C90 */ - return (a != 0 && *result / a != b); -} - -/* Safely check if adding two integers will overflow (no undefined -behavior, compiler removing the code, etc...) and output result. */ -static int lodepng_addofl(size_t a, size_t b, size_t *result) -{ - *result = a + b; /* Unsigned addition is well defined and safe in C90 */ - return *result < a; -} - -/*Safely checks whether size_t overflow can be caused due to amount of pixels. -This check is overcautious rather than precise. If this check indicates no -overflow, you can safely compute in a size_t (but not an unsigned): --(size_t)w * (size_t)h * 8 --amount of bytes in IDAT (including filter, padding and Adam7 bytes) --amount of bytes in raw color model -Returns 1 if overflow possible, 0 if not. -*/ -static int lodepng_pixel_overflow( - unsigned w, unsigned h, const LodePNGColorMode *pngcolor, - const LodePNGColorMode *rawcolor) -{ - size_t bpp = - LODEPNG_MAX(lodepng_get_bpp(pngcolor), lodepng_get_bpp(rawcolor)); - size_t numpixels, total; - size_t line; /* bytes per line in worst case */ - - if (lodepng_mulofl((size_t)w, (size_t)h, &numpixels)) - return 1; - if (lodepng_mulofl(numpixels, 8, &total)) - return 1; /* bit pointer with 8-bit color, or 8 bytes per channel color */ - - /* Bytes per scanline with the expression "(w / 8) * bpp) + ((w & 7) * bpp + - * 7) / 8" */ - if (lodepng_mulofl((size_t)(w / 8), bpp, &line)) - return 1; - if (lodepng_addofl(line, ((w & 7) * bpp + 7) / 8, &line)) - return 1; - - if (lodepng_addofl(line, 5, &line)) - return 1; /* 5 bytes overhead per line: 1 filterbyte, 4 for Adam7 worst case - */ - if (lodepng_mulofl(line, h, &total)) - return 1; /* Total bytes in worst case */ - - return 0; /* no overflow */ -} -#endif /*LODEPNG_COMPILE_DECODER*/ -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - -static void LodePNGUnknownChunks_init(LodePNGInfo *info) -{ - unsigned i; - for (i = 0; i != 3; ++i) - info->unknown_chunks_data[i] = 0; - for (i = 0; i != 3; ++i) - info->unknown_chunks_size[i] = 0; -} - -static void LodePNGUnknownChunks_cleanup(LodePNGInfo *info) -{ - unsigned i; - for (i = 0; i != 3; ++i) - lodepng_free(info->unknown_chunks_data[i]); -} - -static unsigned -LodePNGUnknownChunks_copy(LodePNGInfo *dest, const LodePNGInfo *src) -{ - unsigned i; - - LodePNGUnknownChunks_cleanup(dest); - - for (i = 0; i != 3; ++i) { - size_t j; - dest->unknown_chunks_size[i] = src->unknown_chunks_size[i]; - dest->unknown_chunks_data[i] = - (unsigned char *)lodepng_malloc(src->unknown_chunks_size[i]); - if (!dest->unknown_chunks_data[i] && dest->unknown_chunks_size[i]) - return 83; /*alloc fail*/ - for (j = 0; j < src->unknown_chunks_size[i]; ++j) { - dest->unknown_chunks_data[i][j] = src->unknown_chunks_data[i][j]; - } - } - - return 0; -} - -/******************************************************************************/ - -static void LodePNGText_init(LodePNGInfo *info) -{ - info->text_num = 0; - info->text_keys = NULL; - info->text_strings = NULL; -} - -static void LodePNGText_cleanup(LodePNGInfo *info) -{ - size_t i; - for (i = 0; i != info->text_num; ++i) { - string_cleanup(&info->text_keys[i]); - string_cleanup(&info->text_strings[i]); - } - lodepng_free(info->text_keys); - lodepng_free(info->text_strings); -} - -static unsigned LodePNGText_copy(LodePNGInfo *dest, const LodePNGInfo *source) -{ - size_t i = 0; - dest->text_keys = 0; - dest->text_strings = 0; - dest->text_num = 0; - for (i = 0; i != source->text_num; ++i) { - CERROR_TRY_RETURN( - lodepng_add_text(dest, source->text_keys[i], source->text_strings[i])); - } - return 0; -} - -void lodepng_clear_text(LodePNGInfo *info) { LodePNGText_cleanup(info); } - -unsigned lodepng_add_text(LodePNGInfo *info, const char *key, const char *str) -{ - char **new_keys = (char **)(lodepng_realloc( - info->text_keys, sizeof(char *) * (info->text_num + 1))); - char **new_strings = (char **)(lodepng_realloc( - info->text_strings, sizeof(char *) * (info->text_num + 1))); - if (!new_keys || !new_strings) { - lodepng_free(new_keys); - lodepng_free(new_strings); - return 83; /*alloc fail*/ - } - - ++info->text_num; - info->text_keys = new_keys; - info->text_strings = new_strings; - - info->text_keys[info->text_num - 1] = alloc_string(key); - info->text_strings[info->text_num - 1] = alloc_string(str); - - return 0; -} - -/******************************************************************************/ - -static void LodePNGIText_init(LodePNGInfo *info) -{ - info->itext_num = 0; - info->itext_keys = NULL; - info->itext_langtags = NULL; - info->itext_transkeys = NULL; - info->itext_strings = NULL; -} - -static void LodePNGIText_cleanup(LodePNGInfo *info) -{ - size_t i; - for (i = 0; i != info->itext_num; ++i) { - string_cleanup(&info->itext_keys[i]); - string_cleanup(&info->itext_langtags[i]); - string_cleanup(&info->itext_transkeys[i]); - string_cleanup(&info->itext_strings[i]); - } - lodepng_free(info->itext_keys); - lodepng_free(info->itext_langtags); - lodepng_free(info->itext_transkeys); - lodepng_free(info->itext_strings); -} - -static unsigned LodePNGIText_copy(LodePNGInfo *dest, const LodePNGInfo *source) -{ - size_t i = 0; - dest->itext_keys = 0; - dest->itext_langtags = 0; - dest->itext_transkeys = 0; - dest->itext_strings = 0; - dest->itext_num = 0; - for (i = 0; i != source->itext_num; ++i) { - CERROR_TRY_RETURN(lodepng_add_itext( - dest, source->itext_keys[i], source->itext_langtags[i], - source->itext_transkeys[i], source->itext_strings[i])); - } - return 0; -} - -void lodepng_clear_itext(LodePNGInfo *info) { LodePNGIText_cleanup(info); } - -unsigned lodepng_add_itext( - LodePNGInfo *info, const char *key, const char *langtag, - const char *transkey, const char *str) -{ - char **new_keys = (char **)(lodepng_realloc( - info->itext_keys, sizeof(char *) * (info->itext_num + 1))); - char **new_langtags = (char **)(lodepng_realloc( - info->itext_langtags, sizeof(char *) * (info->itext_num + 1))); - char **new_transkeys = (char **)(lodepng_realloc( - info->itext_transkeys, sizeof(char *) * (info->itext_num + 1))); - char **new_strings = (char **)(lodepng_realloc( - info->itext_strings, sizeof(char *) * (info->itext_num + 1))); - if (!new_keys || !new_langtags || !new_transkeys || !new_strings) { - lodepng_free(new_keys); - lodepng_free(new_langtags); - lodepng_free(new_transkeys); - lodepng_free(new_strings); - return 83; /*alloc fail*/ - } - - ++info->itext_num; - info->itext_keys = new_keys; - info->itext_langtags = new_langtags; - info->itext_transkeys = new_transkeys; - info->itext_strings = new_strings; - - info->itext_keys[info->itext_num - 1] = alloc_string(key); - info->itext_langtags[info->itext_num - 1] = alloc_string(langtag); - info->itext_transkeys[info->itext_num - 1] = alloc_string(transkey); - info->itext_strings[info->itext_num - 1] = alloc_string(str); - - return 0; -} - -/* same as set but does not delete */ -static unsigned lodepng_assign_icc( - LodePNGInfo *info, const char *name, const unsigned char *profile, - unsigned profile_size) -{ - info->iccp_name = alloc_string(name); - info->iccp_profile = (unsigned char *)lodepng_malloc(profile_size); - - if (!info->iccp_name || !info->iccp_profile) - return 83; /*alloc fail*/ - - CopyMem(info->iccp_profile, profile, profile_size); - info->iccp_profile_size = profile_size; - - return 0; /*ok*/ -} - -unsigned lodepng_set_icc( - LodePNGInfo *info, const char *name, const unsigned char *profile, - unsigned profile_size) -{ - if (info->iccp_name) - lodepng_clear_icc(info); - - return lodepng_assign_icc(info, name, profile, profile_size); -} - -void lodepng_clear_icc(LodePNGInfo *info) -{ - string_cleanup(&info->iccp_name); - lodepng_free(info->iccp_profile); - info->iccp_profile = NULL; - info->iccp_profile_size = 0; -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -void lodepng_info_init(LodePNGInfo *info) -{ - lodepng_color_mode_init(&info->color); - info->interlace_method = 0; - info->compression_method = 0; - info->filter_method = 0; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - info->background_defined = 0; - info->background_r = info->background_g = info->background_b = 0; - - LodePNGText_init(info); - LodePNGIText_init(info); - - info->time_defined = 0; - info->phys_defined = 0; - - info->gama_defined = 0; - info->chrm_defined = 0; - info->srgb_defined = 0; - info->iccp_defined = 0; - info->iccp_name = NULL; - info->iccp_profile = NULL; - - LodePNGUnknownChunks_init(info); -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} - -void lodepng_info_cleanup(LodePNGInfo *info) -{ - lodepng_color_mode_cleanup(&info->color); -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - LodePNGText_cleanup(info); - LodePNGIText_cleanup(info); - - lodepng_clear_icc(info); - - LodePNGUnknownChunks_cleanup(info); -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} - -unsigned lodepng_info_copy(LodePNGInfo *dest, const LodePNGInfo *source) -{ - lodepng_info_cleanup(dest); - *dest = *source; - lodepng_color_mode_init(&dest->color); - CERROR_TRY_RETURN(lodepng_color_mode_copy(&dest->color, &source->color)); - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - CERROR_TRY_RETURN(LodePNGText_copy(dest, source)); - CERROR_TRY_RETURN(LodePNGIText_copy(dest, source)); - if (source->iccp_defined) { - CERROR_TRY_RETURN(lodepng_assign_icc( - dest, source->iccp_name, source->iccp_profile, - source->iccp_profile_size)); - } - - LodePNGUnknownChunks_init(dest); - CERROR_TRY_RETURN(LodePNGUnknownChunks_copy(dest, source)); -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - return 0; -} - -/* ////////////////////////////////////////////////////////////////////////// */ - -/*index: bitgroup index, bits: bitgroup size(1, 2 or 4), in: bitgroup value, - * out: octet array to add bits to*/ -static void -addColorBits(unsigned char *out, size_t index, unsigned bits, unsigned in) -{ - unsigned m = bits == 1 ? 7 : bits == 2 ? 3 : 1; /*8 / bits - 1*/ - /*p = the partial index in the byte, e.g. with 4 palettebits it is 0 for first - * half or 1 for second half*/ - unsigned p = index & m; - in &= (1u << bits) - 1u; /*filter out any other bits of the input value*/ - in = in << (bits * (m - p)); - if (p == 0) - out[index * bits / 8] = in; - else - out[index * bits / 8] |= in; -} - -typedef struct ColorTree ColorTree; - -/* -One node of a color tree -This is the data structure used to count the number of unique colors and to get -a palette index for a color. It's like an octree, but because the alpha channel -is used too, each node has 16 instead of 8 children. -*/ -struct ColorTree { - ColorTree *children[16]; /*up to 16 pointers to ColorTree of next level*/ - int index; /*the payload. Only has a meaningful value if this is in the last - level*/ -}; - -static void color_tree_init(ColorTree *tree) -{ - int i; - for (i = 0; i != 16; ++i) - tree->children[i] = 0; - tree->index = -1; -} - -static void color_tree_cleanup(ColorTree *tree) -{ - int i; - for (i = 0; i != 16; ++i) { - if (tree->children[i]) { - color_tree_cleanup(tree->children[i]); - lodepng_free(tree->children[i]); - } - } -} - -/*returns -1 if color not present, its index otherwise*/ -static int color_tree_get( - ColorTree *tree, unsigned char r, unsigned char g, unsigned char b, - unsigned char a) -{ - int bit = 0; - for (bit = 0; bit < 8; ++bit) { - int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + - 1 * ((a >> bit) & 1); - if (!tree->children[i]) - return -1; - else - tree = tree->children[i]; - } - return tree ? tree->index : -1; -} - -#ifdef LODEPNG_COMPILE_ENCODER -static int color_tree_has( - ColorTree *tree, unsigned char r, unsigned char g, unsigned char b, - unsigned char a) -{ - return color_tree_get(tree, r, g, b, a) >= 0; -} -#endif /*LODEPNG_COMPILE_ENCODER*/ - -/*color is not allowed to already exist. -Index should be >= 0 (it's signed to be compatible with using -1 for "doesn't -exist")*/ -static void color_tree_add( - ColorTree *tree, unsigned char r, unsigned char g, unsigned char b, - unsigned char a, unsigned index) -{ - int bit; - for (bit = 0; bit < 8; ++bit) { - int i = 8 * ((r >> bit) & 1) + 4 * ((g >> bit) & 1) + 2 * ((b >> bit) & 1) + - 1 * ((a >> bit) & 1); - if (!tree->children[i]) { - tree->children[i] = (ColorTree *)lodepng_malloc(sizeof(ColorTree)); - color_tree_init(tree->children[i]); - } - tree = tree->children[i]; - } - tree->index = (int)index; -} - -/*put a pixel, given its RGBA color, into image of any color type*/ -static unsigned rgba8ToPixel( - unsigned char *out, size_t i, const LodePNGColorMode *mode, - ColorTree *tree /*for palette*/, unsigned char r, unsigned char g, - unsigned char b, unsigned char a) -{ - if (mode->colortype == LCT_GREY) { - unsigned char grey = r; /*((unsigned short)r + g + b) / 3;*/ - if (mode->bitdepth == 8) - out[i] = grey; - else if (mode->bitdepth == 16) - out[i * 2 + 0] = out[i * 2 + 1] = grey; - else { - /*take the most significant bits of grey*/ - grey = (grey >> (8 - mode->bitdepth)) & ((1 << mode->bitdepth) - 1); - addColorBits(out, i, mode->bitdepth, grey); - } - } - else if (mode->colortype == LCT_RGB) { - if (mode->bitdepth == 8) { - out[i * 3 + 0] = r; - out[i * 3 + 1] = g; - out[i * 3 + 2] = b; - } - else { - out[i * 6 + 0] = out[i * 6 + 1] = r; - out[i * 6 + 2] = out[i * 6 + 3] = g; - out[i * 6 + 4] = out[i * 6 + 5] = b; - } - } - else if (mode->colortype == LCT_PALETTE) { - int index = color_tree_get(tree, r, g, b, a); - if (index < 0) - return 82; /*color not in palette*/ - if (mode->bitdepth == 8) - out[i] = index; - else - addColorBits(out, i, mode->bitdepth, (unsigned)index); - } - else if (mode->colortype == LCT_GREY_ALPHA) { - unsigned char grey = r; /*((unsigned short)r + g + b) / 3;*/ - if (mode->bitdepth == 8) { - out[i * 2 + 0] = grey; - out[i * 2 + 1] = a; - } - else if (mode->bitdepth == 16) { - out[i * 4 + 0] = out[i * 4 + 1] = grey; - out[i * 4 + 2] = out[i * 4 + 3] = a; - } - } - else if (mode->colortype == LCT_RGBA) { - if (mode->bitdepth == 8) { - out[i * 4 + 0] = r; - out[i * 4 + 1] = g; - out[i * 4 + 2] = b; - out[i * 4 + 3] = a; - } - else { - out[i * 8 + 0] = out[i * 8 + 1] = r; - out[i * 8 + 2] = out[i * 8 + 3] = g; - out[i * 8 + 4] = out[i * 8 + 5] = b; - out[i * 8 + 6] = out[i * 8 + 7] = a; - } - } - - return 0; /*no error*/ -} - -/*put a pixel, given its RGBA16 color, into image of any color 16-bitdepth - * type*/ -static void rgba16ToPixel( - unsigned char *out, size_t i, const LodePNGColorMode *mode, - unsigned short r, unsigned short g, unsigned short b, unsigned short a) -{ - if (mode->colortype == LCT_GREY) { - unsigned short grey = r; /*((unsigned)r + g + b) / 3;*/ - out[i * 2 + 0] = (grey >> 8) & 255; - out[i * 2 + 1] = grey & 255; - } - else if (mode->colortype == LCT_RGB) { - out[i * 6 + 0] = (r >> 8) & 255; - out[i * 6 + 1] = r & 255; - out[i * 6 + 2] = (g >> 8) & 255; - out[i * 6 + 3] = g & 255; - out[i * 6 + 4] = (b >> 8) & 255; - out[i * 6 + 5] = b & 255; - } - else if (mode->colortype == LCT_GREY_ALPHA) { - unsigned short grey = r; /*((unsigned)r + g + b) / 3;*/ - out[i * 4 + 0] = (grey >> 8) & 255; - out[i * 4 + 1] = grey & 255; - out[i * 4 + 2] = (a >> 8) & 255; - out[i * 4 + 3] = a & 255; - } - else if (mode->colortype == LCT_RGBA) { - out[i * 8 + 0] = (r >> 8) & 255; - out[i * 8 + 1] = r & 255; - out[i * 8 + 2] = (g >> 8) & 255; - out[i * 8 + 3] = g & 255; - out[i * 8 + 4] = (b >> 8) & 255; - out[i * 8 + 5] = b & 255; - out[i * 8 + 6] = (a >> 8) & 255; - out[i * 8 + 7] = a & 255; - } -} - -/*Get RGBA8 color of pixel with index i (y * width + x) from the raw image with - * given color type.*/ -static void getPixelColorRGBA8( - unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a, - const unsigned char *in, size_t i, const LodePNGColorMode *mode) -{ - if (mode->colortype == LCT_GREY) { - if (mode->bitdepth == 8) { - *r = *g = *b = in[i]; - if (mode->key_defined && *r == mode->key_r) - *a = 0; - else - *a = 255; - } - else if (mode->bitdepth == 16) { - *r = *g = *b = in[i * 2 + 0]; - if (mode->key_defined && - 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) - *a = 0; - else - *a = 255; - } - else { - unsigned highest = - ((1U << mode->bitdepth) - - 1U); /*highest possible value for this bit depth*/ - size_t j = i * mode->bitdepth; - unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); - *r = *g = *b = (value * 255) / highest; - if (mode->key_defined && value == mode->key_r) - *a = 0; - else - *a = 255; - } - } - else if (mode->colortype == LCT_RGB) { - if (mode->bitdepth == 8) { - *r = in[i * 3 + 0]; - *g = in[i * 3 + 1]; - *b = in[i * 3 + 2]; - if (mode->key_defined && *r == mode->key_r && *g == mode->key_g && - *b == mode->key_b) - *a = 0; - else - *a = 255; - } - else { - *r = in[i * 6 + 0]; - *g = in[i * 6 + 2]; - *b = in[i * 6 + 4]; - if (mode->key_defined && - 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r && - 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g && - 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) - *a = 0; - else - *a = 255; - } - } - else if (mode->colortype == LCT_PALETTE) { - unsigned index; - if (mode->bitdepth == 8) - index = in[i]; - else { - size_t j = i * mode->bitdepth; - index = readBitsFromReversedStream(&j, in, mode->bitdepth); - } - - if (index >= mode->palettesize) { - /*This is an error according to the PNG spec, but common PNG decoders make - it black instead. - Done here too, slightly faster due to no error handling needed.*/ - *r = *g = *b = 0; - *a = 255; - } - else { - *r = mode->palette[index * 4 + 0]; - *g = mode->palette[index * 4 + 1]; - *b = mode->palette[index * 4 + 2]; - *a = mode->palette[index * 4 + 3]; - } - } - else if (mode->colortype == LCT_GREY_ALPHA) { - if (mode->bitdepth == 8) { - *r = *g = *b = in[i * 2 + 0]; - *a = in[i * 2 + 1]; - } - else { - *r = *g = *b = in[i * 4 + 0]; - *a = in[i * 4 + 2]; - } - } - else if (mode->colortype == LCT_RGBA) { - if (mode->bitdepth == 8) { - *r = in[i * 4 + 0]; - *g = in[i * 4 + 1]; - *b = in[i * 4 + 2]; - *a = in[i * 4 + 3]; - } - else { - *r = in[i * 8 + 0]; - *g = in[i * 8 + 2]; - *b = in[i * 8 + 4]; - *a = in[i * 8 + 6]; - } - } -} - -/*Similar to getPixelColorRGBA8, but with all the for loops inside of the color -mode test cases, optimized to convert the colors much faster, when converting -to RGBA or RGB with 8 bit per cannel. buffer must be RGBA or RGB output with -enough memory, if has_alpha is true the output is RGBA. mode has the color mode -of the input buffer.*/ -static void getPixelColorsRGBA8( - unsigned char *buffer, size_t numpixels, unsigned has_alpha, - const unsigned char *in, const LodePNGColorMode *mode) -{ - unsigned num_channels = has_alpha ? 4 : 3; - size_t i; - if (mode->colortype == LCT_GREY) { - if (mode->bitdepth == 8) { - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - buffer[0] = buffer[1] = buffer[2] = in[i]; - if (has_alpha) - buffer[3] = mode->key_defined && in[i] == mode->key_r ? 0 : 255; - } - } - else if (mode->bitdepth == 16) { - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - buffer[0] = buffer[1] = buffer[2] = in[i * 2]; - if (has_alpha) - buffer[3] = - mode->key_defined && - 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r - ? 0 - : 255; - } - } - else { - unsigned highest = - ((1U << mode->bitdepth) - - 1U); /*highest possible value for this bit depth*/ - size_t j = 0; - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - unsigned value = readBitsFromReversedStream(&j, in, mode->bitdepth); - buffer[0] = buffer[1] = buffer[2] = (value * 255) / highest; - if (has_alpha) - buffer[3] = mode->key_defined && value == mode->key_r ? 0 : 255; - } - } - } - else if (mode->colortype == LCT_RGB) { - if (mode->bitdepth == 8) { - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - buffer[0] = in[i * 3 + 0]; - buffer[1] = in[i * 3 + 1]; - buffer[2] = in[i * 3 + 2]; - if (has_alpha) - buffer[3] = mode->key_defined && buffer[0] == mode->key_r && - buffer[1] == mode->key_g && - buffer[2] == mode->key_b - ? 0 - : 255; - } - } - else { - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - buffer[0] = in[i * 6 + 0]; - buffer[1] = in[i * 6 + 2]; - buffer[2] = in[i * 6 + 4]; - if (has_alpha) - buffer[3] = - mode->key_defined && - 256U * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r && - 256U * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g && - 256U * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b - ? 0 - : 255; - } - } - } - else if (mode->colortype == LCT_PALETTE) { - unsigned index; - size_t j = 0; - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - if (mode->bitdepth == 8) - index = in[i]; - else - index = readBitsFromReversedStream(&j, in, mode->bitdepth); - - if (index >= mode->palettesize) { - /*This is an error according to the PNG spec, but most PNG decoders make - it black instead. Done here too, slightly faster due to no error - handling needed.*/ - buffer[0] = buffer[1] = buffer[2] = 0; - if (has_alpha) - buffer[3] = 255; - } - else { - buffer[0] = mode->palette[index * 4 + 0]; - buffer[1] = mode->palette[index * 4 + 1]; - buffer[2] = mode->palette[index * 4 + 2]; - if (has_alpha) - buffer[3] = mode->palette[index * 4 + 3]; - } - } - } - else if (mode->colortype == LCT_GREY_ALPHA) { - if (mode->bitdepth == 8) { - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - buffer[0] = buffer[1] = buffer[2] = in[i * 2 + 0]; - if (has_alpha) - buffer[3] = in[i * 2 + 1]; - } - } - else { - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - buffer[0] = buffer[1] = buffer[2] = in[i * 4 + 0]; - if (has_alpha) - buffer[3] = in[i * 4 + 2]; - } - } - } - else if (mode->colortype == LCT_RGBA) { - if (mode->bitdepth == 8) { - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - buffer[0] = in[i * 4 + 0]; - buffer[1] = in[i * 4 + 1]; - buffer[2] = in[i * 4 + 2]; - if (has_alpha) - buffer[3] = in[i * 4 + 3]; - } - } - else { - for (i = 0; i != numpixels; ++i, buffer += num_channels) { - buffer[0] = in[i * 8 + 0]; - buffer[1] = in[i * 8 + 2]; - buffer[2] = in[i * 8 + 4]; - if (has_alpha) - buffer[3] = in[i * 8 + 6]; - } - } - } -} - -/*Get RGBA16 color of pixel with index i (y * width + x) from the raw image with -given color type, but the given color type must be 16-bit itself.*/ -static void getPixelColorRGBA16( - unsigned short *r, unsigned short *g, unsigned short *b, unsigned short *a, - const unsigned char *in, size_t i, const LodePNGColorMode *mode) -{ - if (mode->colortype == LCT_GREY) { - *r = *g = *b = 256 * in[i * 2 + 0] + in[i * 2 + 1]; - if (mode->key_defined && - 256U * in[i * 2 + 0] + in[i * 2 + 1] == mode->key_r) - *a = 0; - else - *a = 65535; - } - else if (mode->colortype == LCT_RGB) { - *r = 256u * in[i * 6 + 0] + in[i * 6 + 1]; - *g = 256u * in[i * 6 + 2] + in[i * 6 + 3]; - *b = 256u * in[i * 6 + 4] + in[i * 6 + 5]; - if (mode->key_defined && - 256u * in[i * 6 + 0] + in[i * 6 + 1] == mode->key_r && - 256u * in[i * 6 + 2] + in[i * 6 + 3] == mode->key_g && - 256u * in[i * 6 + 4] + in[i * 6 + 5] == mode->key_b) - *a = 0; - else - *a = 65535; - } - else if (mode->colortype == LCT_GREY_ALPHA) { - *r = *g = *b = 256u * in[i * 4 + 0] + in[i * 4 + 1]; - *a = 256u * in[i * 4 + 2] + in[i * 4 + 3]; - } - else if (mode->colortype == LCT_RGBA) { - *r = 256u * in[i * 8 + 0] + in[i * 8 + 1]; - *g = 256u * in[i * 8 + 2] + in[i * 8 + 3]; - *b = 256u * in[i * 8 + 4] + in[i * 8 + 5]; - *a = 256u * in[i * 8 + 6] + in[i * 8 + 7]; - } -} - -unsigned lodepng_convert( - unsigned char *out, const unsigned char *in, - const LodePNGColorMode *mode_out, const LodePNGColorMode *mode_in, - unsigned w, unsigned h) -{ - size_t i; - ColorTree tree; - size_t numpixels = (size_t)w * (size_t)h; - unsigned error = 0; - - if (lodepng_color_mode_equal(mode_out, mode_in)) { - size_t numbytes = lodepng_get_raw_size(w, h, mode_in); - for (i = 0; i != numbytes; ++i) - out[i] = in[i]; - return 0; - } - - if (mode_out->colortype == LCT_PALETTE) { - size_t palettesize = mode_out->palettesize; - const unsigned char *palette = mode_out->palette; - size_t palsize = (size_t)1u << mode_out->bitdepth; - /*if the user specified output palette but did not give the values, assume - they want the values of the input color type (assuming that one is palette). - Note that we never create a new palette ourselves.*/ - if (palettesize == 0) { - palettesize = mode_in->palettesize; - palette = mode_in->palette; - /*if the input was also palette with same bitdepth, then the color types - are also equal, so copy literally. This to preserve the exact indices that - were in the PNG even in case there are duplicate colors in the palette.*/ - if (mode_in->colortype == LCT_PALETTE && - mode_in->bitdepth == mode_out->bitdepth) { - size_t numbytes = lodepng_get_raw_size(w, h, mode_in); - for (i = 0; i != numbytes; ++i) - out[i] = in[i]; - return 0; - } - } - if (palettesize < palsize) - palsize = palettesize; - color_tree_init(&tree); - for (i = 0; i != palsize; ++i) { - const unsigned char *p = &palette[i * 4]; - color_tree_add(&tree, p[0], p[1], p[2], p[3], (unsigned)i); - } - } - - if (mode_in->bitdepth == 16 && mode_out->bitdepth == 16) { - for (i = 0; i != numpixels; ++i) { - unsigned short r = 0, g = 0, b = 0, a = 0; - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); - rgba16ToPixel(out, i, mode_out, r, g, b, a); - } - } - else if (mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA) { - getPixelColorsRGBA8(out, numpixels, 1, in, mode_in); - } - else if (mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB) { - getPixelColorsRGBA8(out, numpixels, 0, in, mode_in); - } - else { - unsigned char r = 0, g = 0, b = 0, a = 0; - for (i = 0; i != numpixels; ++i) { - getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); - error = rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a); - if (error) - break; - } - } - - if (mode_out->colortype == LCT_PALETTE) { - color_tree_cleanup(&tree); - } - - return error; -} - -/* Converts a single rgb color without alpha from one type to another, color -bits truncated to their bitdepth. In case of single channel (grey or palette), -only the r channel is used. Slow function, do not use to process all pixels of -an image. Alpha channel not supported on purpose: this is for bKGD, supporting -alpha may prevent it from finding a color in the palette, from the specification -it looks like bKGD should ignore the alpha values of the palette since it can -use any palette index but doesn't have an alpha channel. Idem with ignoring -color key. */ -unsigned lodepng_convert_rgb( - unsigned *r_out, unsigned *g_out, unsigned *b_out, unsigned r_in, - unsigned g_in, unsigned b_in, const LodePNGColorMode *mode_out, - const LodePNGColorMode *mode_in) -{ - unsigned r = 0, g = 0, b = 0; - unsigned mul = - 65535 / ((1u << mode_in->bitdepth) - 1u); /*65535, 21845, 4369, 257, 1*/ - unsigned shift = 16 - mode_out->bitdepth; - - if (mode_in->colortype == LCT_GREY || mode_in->colortype == LCT_GREY_ALPHA) { - r = g = b = r_in * mul; - } - else if (mode_in->colortype == LCT_RGB || mode_in->colortype == LCT_RGBA) { - r = r_in * mul; - g = g_in * mul; - b = b_in * mul; - } - else if (mode_in->colortype == LCT_PALETTE) { - if (r_in >= mode_in->palettesize) - return 82; - r = mode_in->palette[r_in * 4 + 0] * 257u; - g = mode_in->palette[r_in * 4 + 1] * 257u; - b = mode_in->palette[r_in * 4 + 2] * 257u; - } - else { - return 31; - } - - /* now convert to output format */ - if (mode_out->colortype == LCT_GREY || - mode_out->colortype == LCT_GREY_ALPHA) { - *r_out = r >> shift; - } - else if (mode_out->colortype == LCT_RGB || mode_out->colortype == LCT_RGBA) { - *r_out = r >> shift; - *g_out = g >> shift; - *b_out = b >> shift; - } - else if (mode_out->colortype == LCT_PALETTE) { - unsigned i; - /* a 16-bit color cannot be in the palette */ - if ((r >> 8) != (r & 255) || (g >> 8) != (g & 255) || (b >> 8) != (b & 255)) - return 82; - for (i = 0; i < mode_out->palettesize; i++) { - unsigned j = i * 4; - if ((r >> 8) == mode_out->palette[j + 0] && - (g >> 8) == mode_out->palette[j + 1] && - (b >> 8) == mode_out->palette[j + 2]) { - *r_out = i; - return 0; - } - } - return 82; - } - else { - return 31; - } - - return 0; -} - -#ifdef LODEPNG_COMPILE_ENCODER - -void lodepng_color_profile_init(LodePNGColorProfile *profile) -{ - profile->colored = 0; - profile->key = 0; - profile->key_r = profile->key_g = profile->key_b = 0; - profile->alpha = 0; - profile->numcolors = 0; - profile->bits = 1; - profile->numpixels = 0; -} - -/*function used for debug purposes with C++*/ -/*void printColorProfile(LodePNGColorProfile* p) { - std::cout << "colored: " << (int)p->colored << ", "; - std::cout << "key: " << (int)p->key << ", "; - std::cout << "key_r: " << (int)p->key_r << ", "; - std::cout << "key_g: " << (int)p->key_g << ", "; - std::cout << "key_b: " << (int)p->key_b << ", "; - std::cout << "alpha: " << (int)p->alpha << ", "; - std::cout << "numcolors: " << (int)p->numcolors << ", "; - std::cout << "bits: " << (int)p->bits << std::endl; -}*/ - -/*Returns how many bits needed to represent given value (max 8 bit)*/ -static unsigned getValueRequiredBits(unsigned char value) -{ - if (value == 0 || value == 255) - return 1; - /*The scaling of 2-bit and 4-bit values uses multiples of 85 and 17*/ - if (value % 17 == 0) - return value % 85 == 0 ? 2 : 4; - return 8; -} - -/*profile must already have been inited. -It's ok to set some parameters of profile to done already.*/ -unsigned lodepng_get_color_profile( - LodePNGColorProfile *profile, const unsigned char *in, unsigned w, - unsigned h, const LodePNGColorMode *mode_in) -{ - unsigned error = 0; - size_t i; - ColorTree tree; - size_t numpixels = (size_t)w * (size_t)h; - - /* mark things as done already if it would be impossible to have a more - * expensive case */ - unsigned colored_done = lodepng_is_greyscale_type(mode_in) ? 1 : 0; - unsigned alpha_done = lodepng_can_have_alpha(mode_in) ? 0 : 1; - unsigned numcolors_done = 0; - unsigned bpp = lodepng_get_bpp(mode_in); - unsigned bits_done = (profile->bits == 1 && bpp == 1) ? 1 : 0; - unsigned sixteen = 0; /* whether the input image is 16 bit */ - unsigned maxnumcolors = 257; - if (bpp <= 8) - maxnumcolors = LODEPNG_MIN(257, profile->numcolors + (1u << bpp)); - - profile->numpixels += numpixels; - - color_tree_init(&tree); - - /*If the profile was already filled in from previous data, fill its palette in - tree and mark things as done already if we know they are the most expensive - case already*/ - if (profile->alpha) - alpha_done = 1; - if (profile->colored) - colored_done = 1; - if (profile->bits == 16) - numcolors_done = 1; - if (profile->bits >= bpp) - bits_done = 1; - if (profile->numcolors >= maxnumcolors) - numcolors_done = 1; - - if (!numcolors_done) { - for (i = 0; i < profile->numcolors; i++) { - const unsigned char *color = &profile->palette[i * 4]; - color_tree_add(&tree, color[0], color[1], color[2], color[3], i); - } - } - - /*Check if the 16-bit input is truly 16-bit*/ - if (mode_in->bitdepth == 16 && !sixteen) { - unsigned short r, g, b, a; - for (i = 0; i != numpixels; ++i) { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); - if ((r & 255) != ((r >> 8) & 255) || (g & 255) != ((g >> 8) & 255) || - (b & 255) != ((b >> 8) & 255) || - (a & 255) != ((a >> 8) & 255)) /*first and second byte differ*/ { - profile->bits = 16; - sixteen = 1; - bits_done = 1; - numcolors_done = 1; /*counting colors no longer useful, palette doesn't - support 16-bit*/ - break; - } - } - } - - if (sixteen) { - unsigned short r = 0, g = 0, b = 0, a = 0; - - for (i = 0; i != numpixels; ++i) { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); - - if (!colored_done && (r != g || r != b)) { - profile->colored = 1; - colored_done = 1; - } - - if (!alpha_done) { - unsigned matchkey = - (r == profile->key_r && g == profile->key_g && b == profile->key_b); - if (a != 65535 && (a != 0 || (profile->key && !matchkey))) { - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - } - else if (a == 0 && !profile->alpha && !profile->key) { - profile->key = 1; - profile->key_r = r; - profile->key_g = g; - profile->key_b = b; - } - else if (a == 65535 && profile->key && matchkey) { - /* Color key cannot be used if an opaque pixel also has that RGB - * color. */ - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - } - } - if (alpha_done && numcolors_done && colored_done && bits_done) - break; - } - - if (profile->key && !profile->alpha) { - for (i = 0; i != numpixels; ++i) { - getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in); - if (a != 0 && r == profile->key_r && g == profile->key_g && - b == profile->key_b) { - /* Color key cannot be used if an opaque pixel also has that RGB - * color. */ - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - } - } - } - } - else /* < 16-bit */ { - unsigned char r = 0, g = 0, b = 0, a = 0; - for (i = 0; i != numpixels; ++i) { - getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); - - if (!bits_done && profile->bits < 8) { - /*only r is checked, < 8 bits is only relevant for greyscale*/ - unsigned bits = getValueRequiredBits(r); - if (bits > profile->bits) - profile->bits = bits; - } - bits_done = (profile->bits >= bpp); - - if (!colored_done && (r != g || r != b)) { - profile->colored = 1; - colored_done = 1; - if (profile->bits < 8) - profile->bits = - 8; /*PNG has no colored modes with less than 8-bit per channel*/ - } - - if (!alpha_done) { - unsigned matchkey = - (r == profile->key_r && g == profile->key_g && b == profile->key_b); - if (a != 255 && (a != 0 || (profile->key && !matchkey))) { - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - if (profile->bits < 8) - profile->bits = 8; /*PNG has no alphachannel modes with less than - 8-bit per channel*/ - } - else if (a == 0 && !profile->alpha && !profile->key) { - profile->key = 1; - profile->key_r = r; - profile->key_g = g; - profile->key_b = b; - } - else if (a == 255 && profile->key && matchkey) { - /* Color key cannot be used if an opaque pixel also has that RGB - * color. */ - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - if (profile->bits < 8) - profile->bits = 8; /*PNG has no alphachannel modes with less than - 8-bit per channel*/ - } - } - - if (!numcolors_done) { - if (!color_tree_has(&tree, r, g, b, a)) { - color_tree_add(&tree, r, g, b, a, profile->numcolors); - if (profile->numcolors < 256) { - unsigned char *p = profile->palette; - unsigned n = profile->numcolors; - p[n * 4 + 0] = r; - p[n * 4 + 1] = g; - p[n * 4 + 2] = b; - p[n * 4 + 3] = a; - } - ++profile->numcolors; - numcolors_done = profile->numcolors >= maxnumcolors; - } - } - - if (alpha_done && numcolors_done && colored_done && bits_done) - break; - } - - if (profile->key && !profile->alpha) { - for (i = 0; i != numpixels; ++i) { - getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in); - if (a != 0 && r == profile->key_r && g == profile->key_g && - b == profile->key_b) { - /* Color key cannot be used if an opaque pixel also has that RGB - * color. */ - profile->alpha = 1; - profile->key = 0; - alpha_done = 1; - if (profile->bits < 8) - profile->bits = 8; /*PNG has no alphachannel modes with less than - 8-bit per channel*/ - } - } - } - - /*make the profile's key always 16-bit for consistency - repeat each byte - * twice*/ - profile->key_r += (profile->key_r << 8); - profile->key_g += (profile->key_g << 8); - profile->key_b += (profile->key_b << 8); - } - - color_tree_cleanup(&tree); - return error; -} - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -/*Adds a single color to the color profile. The profile must already have been -inited. The color must be given as 16-bit (with 2 bytes repeating for 8-bit and -65535 for opaque alpha channel). This function is expensive, do not call it for -all pixels of an image but only for a few additional values. */ -static unsigned lodepng_color_profile_add( - LodePNGColorProfile *profile, unsigned r, unsigned g, unsigned b, - unsigned a) -{ - unsigned error = 0; - unsigned char image[8]; - LodePNGColorMode mode; - lodepng_color_mode_init(&mode); - image[0] = r >> 8; - image[1] = r; - image[2] = g >> 8; - image[3] = g; - image[4] = b >> 8; - image[5] = b; - image[6] = a >> 8; - image[7] = a; - mode.bitdepth = 16; - mode.colortype = LCT_RGBA; - error = lodepng_get_color_profile(profile, image, 1, 1, &mode); - lodepng_color_mode_cleanup(&mode); - return error; -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -/*Autochoose color model given the computed profile. mode_in is to copy palette -order from when relevant.*/ -static unsigned auto_choose_color_from_profile( - LodePNGColorMode *mode_out, const LodePNGColorMode *mode_in, - const LodePNGColorProfile *prof) -{ - unsigned error = 0; - unsigned palettebits, palette_ok; - size_t i, n; - size_t numpixels = prof->numpixels; - - unsigned alpha = prof->alpha; - unsigned key = prof->key; - unsigned bits = prof->bits; - - mode_out->key_defined = 0; - - if (key && numpixels <= 16) { - alpha = 1; /*too few pixels to justify tRNS chunk overhead*/ - key = 0; - if (bits < 8) - bits = - 8; /*PNG has no alphachannel modes with less than 8-bit per channel*/ - } - n = prof->numcolors; - palettebits = n <= 2 ? 1 : (n <= 4 ? 2 : (n <= 16 ? 4 : 8)); - palette_ok = n <= 256 && bits <= 8; - if (numpixels < n * 2) - palette_ok = - 0; /*don't add palette overhead if image has only a few pixels*/ - if (!prof->colored && bits <= palettebits) - palette_ok = 0; /*grey is less overhead*/ - - if (palette_ok) { - const unsigned char *p = prof->palette; - lodepng_palette_clear(mode_out); /*remove potential earlier palette*/ - for (i = 0; i != prof->numcolors; ++i) { - error = lodepng_palette_add( - mode_out, p[i * 4 + 0], p[i * 4 + 1], p[i * 4 + 2], p[i * 4 + 3]); - if (error) - break; - } - - mode_out->colortype = LCT_PALETTE; - mode_out->bitdepth = palettebits; - - if (mode_in->colortype == LCT_PALETTE && - mode_in->palettesize >= mode_out->palettesize && - mode_in->bitdepth == mode_out->bitdepth) { - /*If input should have same palette colors, keep original to preserve its - * order and prevent conversion*/ - lodepng_color_mode_cleanup(mode_out); - lodepng_color_mode_copy(mode_out, mode_in); - } - } - else /*8-bit or 16-bit per channel*/ { - mode_out->bitdepth = bits; - mode_out->colortype = alpha ? (prof->colored ? LCT_RGBA : LCT_GREY_ALPHA) - : (prof->colored ? LCT_RGB : LCT_GREY); - - if (key) { - unsigned mask = (1u << mode_out->bitdepth) - - 1u; /*profile always uses 16-bit, mask converts it*/ - mode_out->key_r = prof->key_r & mask; - mode_out->key_g = prof->key_g & mask; - mode_out->key_b = prof->key_b & mask; - mode_out->key_defined = 1; - } - } - - return error; -} - -/*Automatically chooses color type that gives smallest amount of bits in the -output image, e.g. grey if there are only greyscale pixels, palette if there -are less than 256 colors, color key if only single transparent color, ... -Updates values of mode with a potentially smaller color model. mode_out should -contain the user chosen color model, but will be overwritten with the new chosen -one.*/ -unsigned lodepng_auto_choose_color( - LodePNGColorMode *mode_out, const unsigned char *image, unsigned w, - unsigned h, const LodePNGColorMode *mode_in) -{ - unsigned error = 0; - LodePNGColorProfile prof; - lodepng_color_profile_init(&prof); - error = lodepng_get_color_profile(&prof, image, w, h, mode_in); - if (error) - return error; - return auto_choose_color_from_profile(mode_out, mode_in, &prof); -} - -#endif /* #ifdef LODEPNG_COMPILE_ENCODER */ - -/* -Paeth predicter, used by PNG filter type 4 -The parameters are of type short, but should come from unsigned chars, the -shorts are only needed to make the paeth calculation correct. -*/ -static unsigned char paethPredictor(short a, short b, short c) -{ - short pa = ABS(b - c); - short pb = ABS(a - c); - short pc = ABS(a + b - c - c); - - if (pc < pa && pc < pb) - return (unsigned char)c; - else if (pb < pa) - return (unsigned char)b; - else - return (unsigned char)a; -} - -/*shared values used by multiple Adam7 related functions*/ - -static const unsigned ADAM7_IX[7] = {0, 4, 0, 2, 0, 1, 0}; /*x start values*/ -static const unsigned ADAM7_IY[7] = {0, 0, 4, 0, 2, 0, 1}; /*y start values*/ -static const unsigned ADAM7_DX[7] = {8, 8, 4, 4, 2, 2, 1}; /*x delta values*/ -static const unsigned ADAM7_DY[7] = {8, 8, 8, 4, 4, 2, 2}; /*y delta values*/ - -/* -Outputs various dimensions and positions in the image related to the Adam7 -reduced images. passw: output containing the width of the 7 passes passh: output -containing the height of the 7 passes filter_passstart: output containing the -index of the start and end of each reduced image with filter bytes -padded_passstart output containing the index of the start and end of each - reduced image when without filter bytes but with padded scanlines -passstart: output containing the index of the start and end of each reduced - image without padding between scanlines, but still padding between the images -w, h: width and height of non-interlaced image -bpp: bits per pixel -"padded" is only relevant if bpp is less than 8 and a scanline or image does not - end at a full byte -*/ -static void Adam7_getpassvalues( - unsigned passw[7], unsigned passh[7], size_t filter_passstart[8], - size_t padded_passstart[8], size_t passstart[8], unsigned w, unsigned h, - unsigned bpp) -{ - /*the passstart values have 8 values: the 8th one indicates the byte after the - * end of the 7th (= last) pass*/ - unsigned i; - - /*calculate width and height in pixels of each pass*/ - for (i = 0; i != 7; ++i) { - passw[i] = (w + ADAM7_DX[i] - ADAM7_IX[i] - 1) / ADAM7_DX[i]; - passh[i] = (h + ADAM7_DY[i] - ADAM7_IY[i] - 1) / ADAM7_DY[i]; - if (passw[i] == 0) - passh[i] = 0; - if (passh[i] == 0) - passw[i] = 0; - } - - filter_passstart[0] = padded_passstart[0] = passstart[0] = 0; - for (i = 0; i != 7; ++i) { - /*if passw[i] is 0, it's 0 bytes, not 1 (no filtertype-byte)*/ - filter_passstart[i + 1] = - filter_passstart[i] + ((passw[i] && passh[i]) - ? passh[i] * (1 + (passw[i] * bpp + 7) / 8) - : 0); - /*bits padded if needed to fill full byte at end of each scanline*/ - padded_passstart[i + 1] = - padded_passstart[i] + passh[i] * ((passw[i] * bpp + 7) / 8); - /*only padded at end of reduced image*/ - passstart[i + 1] = passstart[i] + (passh[i] * passw[i] * bpp + 7) / 8; - } -} - -#ifdef LODEPNG_COMPILE_DECODER - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / PNG Decoder / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/*read the information from the header and store it in the LodePNGInfo. return - * value is error*/ -unsigned lodepng_inspect( - unsigned *w, unsigned *h, LodePNGState *state, const unsigned char *in, - size_t insize) -{ - unsigned width, height; - LodePNGInfo *info = &state->info_png; - if (insize == 0 || in == 0) { - CERROR_RETURN_ERROR(state->error, 48); /*error: the given data is empty*/ - } - if (insize < 33) { - CERROR_RETURN_ERROR(state->error, 27); /*error: the data length is smaller - than the length of a PNG header*/ - } - - /*when decoding a new PNG image, make sure all parameters created after - * previous decoding are reset*/ - /* TODO: remove this. One should use a new LodePNGState for new sessions */ - lodepng_info_cleanup(info); - lodepng_info_init(info); - - if (in[0] != 137 || in[1] != 80 || in[2] != 78 || in[3] != 71 || - in[4] != 13 || in[5] != 10 || in[6] != 26 || in[7] != 10) { - CERROR_RETURN_ERROR( - state->error, - 28); /*error: the first 8 bytes are not the correct PNG signature*/ - } - if (lodepng_chunk_length(in + 8) != 13) { - CERROR_RETURN_ERROR( - state->error, 94); /*error: header size must be 13 bytes*/ - } - if (!lodepng_chunk_type_equals(in + 8, "IHDR")) { - CERROR_RETURN_ERROR( - state->error, 29); /*error: it doesn't start with a IHDR chunk!*/ - } - - /*read the values given in the header*/ - width = lodepng_read32bitInt(&in[16]); - height = lodepng_read32bitInt(&in[20]); - info->color.bitdepth = in[24]; - info->color.colortype = (LodePNGColorType)in[25]; - info->compression_method = in[26]; - info->filter_method = in[27]; - info->interlace_method = in[28]; - - if (width == 0 || height == 0) { - CERROR_RETURN_ERROR(state->error, 93); - } - - if (w) - *w = width; - if (h) - *h = height; - - if (!state->decoder.ignore_crc) { - unsigned CRC = lodepng_read32bitInt(&in[29]); - unsigned checksum = lodepng_crc32(&in[12], 17); - if (CRC != checksum) { - CERROR_RETURN_ERROR(state->error, 57); /*invalid CRC*/ - } - } - - /*error: only compression method 0 is allowed in the specification*/ - if (info->compression_method != 0) - CERROR_RETURN_ERROR(state->error, 32); - /*error: only filter method 0 is allowed in the specification*/ - if (info->filter_method != 0) - CERROR_RETURN_ERROR(state->error, 33); - /*error: only interlace methods 0 and 1 exist in the specification*/ - if (info->interlace_method > 1) - CERROR_RETURN_ERROR(state->error, 34); - - state->error = - checkColorValidity(info->color.colortype, info->color.bitdepth); - return state->error; -} - -static unsigned unfilterScanline( - unsigned char *recon, const unsigned char *scanline, - const unsigned char *precon, size_t bytewidth, unsigned char filterType, - size_t length) -{ - /* - For PNG filter method 0 - unfilter a PNG image scanline by scanline. when the pixels are smaller than 1 - byte, the filter works byte per byte (bytewidth = 1) precon is the previous - unfiltered scanline, recon the result, scanline the current one the incoming - scanlines do NOT include the filtertype byte, that one is given in the - parameter filterType instead recon and scanline MAY be the same memory - address! precon must be disjoint. - */ - - size_t i; - switch (filterType) { - case 0: - for (i = 0; i != length; ++i) - recon[i] = scanline[i]; - break; - case 1: - for (i = 0; i != bytewidth; ++i) - recon[i] = scanline[i]; - for (i = bytewidth; i < length; ++i) - recon[i] = scanline[i] + recon[i - bytewidth]; - break; - case 2: - if (precon) { - for (i = 0; i != length; ++i) - recon[i] = scanline[i] + precon[i]; - } - else { - for (i = 0; i != length; ++i) - recon[i] = scanline[i]; - } - break; - case 3: - if (precon) { - for (i = 0; i != bytewidth; ++i) - recon[i] = scanline[i] + (precon[i] >> 1); - for (i = bytewidth; i < length; ++i) - recon[i] = scanline[i] + ((recon[i - bytewidth] + precon[i]) >> 1); - } - else { - for (i = 0; i != bytewidth; ++i) - recon[i] = scanline[i]; - for (i = bytewidth; i < length; ++i) - recon[i] = scanline[i] + (recon[i - bytewidth] >> 1); - } - break; - case 4: - if (precon) { - for (i = 0; i != bytewidth; ++i) { - recon[i] = - (scanline[i] + - precon[i]); /*paethPredictor(0, precon[i], 0) is always precon[i]*/ - } - for (i = bytewidth; i < length; ++i) { - recon[i] = - (scanline[i] + - paethPredictor( - recon[i - bytewidth], precon[i], precon[i - bytewidth])); - } - } - else { - for (i = 0; i != bytewidth; ++i) { - recon[i] = scanline[i]; - } - for (i = bytewidth; i < length; ++i) { - /*paethPredictor(recon[i - bytewidth], 0, 0) is always recon[i - - * bytewidth]*/ - recon[i] = (scanline[i] + recon[i - bytewidth]); - } - } - break; - default: - return 36; /*error: unexisting filter type given*/ - } - return 0; -} - -static unsigned unfilter( - unsigned char *out, const unsigned char *in, unsigned w, unsigned h, - unsigned bpp) -{ - /* - For PNG filter method 0 - this function unfilters a single image (e.g. without interlacing this is - called once, with Adam7 seven times) out must have enough bytes allocated - already, in must have the scanlines + 1 filtertype byte per scanline w and h - are image dimensions or dimensions of reduced image, bpp is bits per pixel in - and out are allowed to be the same memory address (but aren't the same size - since in has the extra filter bytes) - */ - - unsigned y; - unsigned char *prevline = 0; - - /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per - * pixel otherwise*/ - size_t bytewidth = (bpp + 7) / 8; - size_t linebytes = (w * bpp + 7) / 8; - - for (y = 0; y < h; ++y) { - size_t outindex = linebytes * y; - size_t inindex = - (1 + linebytes) * y; /*the extra filterbyte added to each row*/ - unsigned char filterType = in[inindex]; - - CERROR_TRY_RETURN(unfilterScanline( - &out[outindex], &in[inindex + 1], prevline, bytewidth, filterType, - linebytes)); - - prevline = &out[outindex]; - } - - return 0; -} - -/* -in: Adam7 interlaced image, with no padding bits between scanlines, but between - reduced images so that each reduced image starts at a byte. -out: the same pixels, but re-ordered so that they're now a non-interlaced image -with size w*h bpp: bits per pixel out has the following size in bits: w * h * -bpp. in is possibly bigger due to padding bits between reduced images. out must -be big enough AND must be 0 everywhere if bpp < 8 in the current implementation -(because that's likely a little bit faster) -NOTE: comments about padding bits are only relevant if bpp < 8 -*/ -static void Adam7_deinterlace( - unsigned char *out, const unsigned char *in, unsigned w, unsigned h, - unsigned bpp) -{ - unsigned passw[7], passh[7]; - size_t filter_passstart[8], padded_passstart[8], passstart[8]; - unsigned i; - - Adam7_getpassvalues( - passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - - if (bpp >= 8) { - for (i = 0; i != 7; ++i) { - unsigned x, y, b; - size_t bytewidth = bpp / 8; - for (y = 0; y < passh[i]; ++y) - for (x = 0; x < passw[i]; ++x) { - size_t pixelinstart = passstart[i] + (y * passw[i] + x) * bytewidth; - size_t pixeloutstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + - ADAM7_IX[i] + x * ADAM7_DX[i]) * - bytewidth; - for (b = 0; b < bytewidth; ++b) { - out[pixeloutstart + b] = in[pixelinstart + b]; - } - } - } - } - else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit - pointers*/ - { - for (i = 0; i != 7; ++i) { - unsigned x, y, b; - unsigned ilinebits = bpp * passw[i]; - unsigned olinebits = bpp * w; - size_t obp, ibp; /*bit pointers (for out and in buffer)*/ - for (y = 0; y < passh[i]; ++y) - for (x = 0; x < passw[i]; ++x) { - ibp = (8 * passstart[i]) + (y * ilinebits + x * bpp); - obp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + - (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp; - for (b = 0; b < bpp; ++b) { - unsigned char bit = readBitFromReversedStream(&ibp, in); - /*note that this function assumes the out buffer is completely 0, - * use setBitOfReversedStream otherwise*/ - setBitOfReversedStream0(&obp, out, bit); - } - } - } - } -} - -static void removePaddingBits( - unsigned char *out, const unsigned char *in, size_t olinebits, - size_t ilinebits, unsigned h) -{ - /* - After filtering there are still padding bits if scanlines have non multiple of - 8 bit amounts. They need to be removed (except at last scanline of - (Adam7-reduced) image) before working with pure image buffers for the Adam7 - code, the color convert code and the output to the user. in and out are - allowed to be the same buffer, in may also be higher but still overlapping; in - must have >= ilinebits*h bits, out must have >= olinebits*h bits, olinebits - must be <= ilinebits also used to move bits after earlier such operations - happened, e.g. in a sequence of reduced images from Adam7 only useful if - (ilinebits - olinebits) is a value in the range 1..7 - */ - unsigned y; - size_t diff = ilinebits - olinebits; - size_t ibp = 0, obp = 0; /*input and output bit pointers*/ - for (y = 0; y < h; ++y) { - size_t x; - for (x = 0; x < olinebits; ++x) { - unsigned char bit = readBitFromReversedStream(&ibp, in); - setBitOfReversedStream(&obp, out, bit); - } - ibp += diff; - } -} - -/*out must be buffer big enough to contain full image, and in must contain the -full decompressed data from the IDAT chunks (with filter index bytes and -possible padding bits) return value is error*/ -static unsigned postProcessScanlines( - unsigned char *out, unsigned char *in, unsigned w, unsigned h, - const LodePNGInfo *info_png) -{ - /* - This function converts the filtered-padded-interlaced data into pure 2D image - buffer with the PNG's colortype. Steps: - *) if no Adam7: 1) unfilter 2) remove padding bits (= posible extra bits per - scanline if bpp < 8) - *) if adam7: 1) 7x unfilter 2) 7x remove padding bits 3) Adam7_deinterlace - NOTE: the in buffer will be overwritten with intermediate data! - */ - unsigned bpp = lodepng_get_bpp(&info_png->color); - if (bpp == 0) - return 31; /*error: invalid colortype*/ - - if (info_png->interlace_method == 0) { - if (bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) { - CERROR_TRY_RETURN(unfilter(in, in, w, h, bpp)); - removePaddingBits(out, in, w * bpp, ((w * bpp + 7) / 8) * 8, h); - } - /*we can immediately filter into the out buffer, no other steps needed*/ - else - CERROR_TRY_RETURN(unfilter(out, in, w, h, bpp)); - } - else /*interlace_method is 1 (Adam7)*/ { - unsigned passw[7], passh[7]; - size_t filter_passstart[8], padded_passstart[8], passstart[8]; - unsigned i; - - Adam7_getpassvalues( - passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - - for (i = 0; i != 7; ++i) { - CERROR_TRY_RETURN(unfilter( - &in[padded_passstart[i]], &in[filter_passstart[i]], passw[i], - passh[i], bpp)); - /*TODO: possible efficiency improvement: if in this reduced image the bits - fit nicely in 1 scanline, move bytes instead of bits or move not at all*/ - if (bpp < 8) { - /*remove padding bits in scanlines; after this there still may be - padding bits between the different reduced images: each reduced image - still starts nicely at a byte*/ - removePaddingBits( - &in[passstart[i]], &in[padded_passstart[i]], passw[i] * bpp, - ((passw[i] * bpp + 7) / 8) * 8, passh[i]); - } - } - - Adam7_deinterlace(out, in, w, h, bpp); - } - - return 0; -} - -static unsigned readChunk_PLTE( - LodePNGColorMode *color, const unsigned char *data, size_t chunkLength) -{ - unsigned pos = 0, i; - if (color->palette) - lodepng_free(color->palette); - color->palettesize = chunkLength / 3; - color->palette = (unsigned char *)lodepng_malloc(4 * color->palettesize); - if (!color->palette && color->palettesize) { - color->palettesize = 0; - return 83; /*alloc fail*/ - } - if (color->palettesize > 256) - return 38; /*error: palette too big*/ - - for (i = 0; i != color->palettesize; ++i) { - color->palette[4 * i + 0] = data[pos++]; /*R*/ - color->palette[4 * i + 1] = data[pos++]; /*G*/ - color->palette[4 * i + 2] = data[pos++]; /*B*/ - color->palette[4 * i + 3] = 255; /*alpha*/ - } - - return 0; /* OK */ -} - -static unsigned readChunk_tRNS( - LodePNGColorMode *color, const unsigned char *data, size_t chunkLength) -{ - unsigned i; - if (color->colortype == LCT_PALETTE) { - /*error: more alpha values given than there are palette entries*/ - if (chunkLength > color->palettesize) - return 39; - - for (i = 0; i != chunkLength; ++i) - color->palette[4 * i + 3] = data[i]; - } - else if (color->colortype == LCT_GREY) { - /*error: this chunk must be 2 bytes for greyscale image*/ - if (chunkLength != 2) - return 30; - - color->key_defined = 1; - color->key_r = color->key_g = color->key_b = 256u * data[0] + data[1]; - } - else if (color->colortype == LCT_RGB) { - /*error: this chunk must be 6 bytes for RGB image*/ - if (chunkLength != 6) - return 41; - - color->key_defined = 1; - color->key_r = 256u * data[0] + data[1]; - color->key_g = 256u * data[2] + data[3]; - color->key_b = 256u * data[4] + data[5]; - } - else - return 42; /*error: tRNS chunk not allowed for other color models*/ - - return 0; /* OK */ -} - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -/*background color chunk (bKGD)*/ -static unsigned -readChunk_bKGD(LodePNGInfo *info, const unsigned char *data, size_t chunkLength) -{ - if (info->color.colortype == LCT_PALETTE) { - /*error: this chunk must be 1 byte for indexed color image*/ - if (chunkLength != 1) - return 43; - - /*error: invalid palette index, or maybe this chunk appeared before PLTE*/ - if (data[0] >= info->color.palettesize) - return 103; - - info->background_defined = 1; - info->background_r = info->background_g = info->background_b = data[0]; - } - else if ( - info->color.colortype == LCT_GREY || - info->color.colortype == LCT_GREY_ALPHA) { - /*error: this chunk must be 2 bytes for greyscale image*/ - if (chunkLength != 2) - return 44; - - /*the values are truncated to bitdepth in the PNG file*/ - info->background_defined = 1; - info->background_r = info->background_g = info->background_b = - 256u * data[0] + data[1]; - } - else if ( - info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) { - /*error: this chunk must be 6 bytes for greyscale image*/ - if (chunkLength != 6) - return 45; - - /*the values are truncated to bitdepth in the PNG file*/ - info->background_defined = 1; - info->background_r = 256u * data[0] + data[1]; - info->background_g = 256u * data[2] + data[3]; - info->background_b = 256u * data[4] + data[5]; - } - - return 0; /* OK */ -} - -/*text chunk (tEXt)*/ -static unsigned -readChunk_tEXt(LodePNGInfo *info, const unsigned char *data, size_t chunkLength) -{ - unsigned error = 0; - char * key = 0, *str = 0; - unsigned i; - - while (!error) /*not really a while loop, only used to break on error*/ { - unsigned length, string2_begin; - - length = 0; - while (length < chunkLength && data[length] != 0) - ++length; - /*even though it's not allowed by the standard, no error is thrown if - there's no null termination char, if the text is empty*/ - if (length < 1 || length > 79) - CERROR_BREAK(error, 89); /*keyword too short or long*/ - - key = (char *)lodepng_malloc(length + 1); - if (!key) - CERROR_BREAK(error, 83); /*alloc fail*/ - - key[length] = 0; - for (i = 0; i != length; ++i) - key[i] = (char)data[i]; - - string2_begin = length + 1; /*skip keyword null terminator*/ - - length = - (unsigned)(chunkLength < string2_begin ? 0 : chunkLength - string2_begin); - str = (char *)lodepng_malloc(length + 1); - if (!str) - CERROR_BREAK(error, 83); /*alloc fail*/ - - str[length] = 0; - for (i = 0; i != length; ++i) - str[i] = (char)data[string2_begin + i]; - - error = lodepng_add_text(info, key, str); - - break; - } - - lodepng_free(key); - lodepng_free(str); - - return error; -} - -/*compressed text chunk (zTXt)*/ -static unsigned readChunk_zTXt( - LodePNGInfo *info, const LodePNGDecompressSettings *zlibsettings, - const unsigned char *data, size_t chunkLength) -{ - unsigned error = 0; - unsigned i; - - unsigned length, string2_begin; - char * key = 0; - ucvector decoded; - - ucvector_init(&decoded); - - while (!error) /*not really a while loop, only used to break on error*/ { - for (length = 0; length < chunkLength && data[length] != 0; ++length) - ; - if (length + 2 >= chunkLength) - CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ - if (length < 1 || length > 79) - CERROR_BREAK(error, 89); /*keyword too short or long*/ - - key = (char *)lodepng_malloc(length + 1); - if (!key) - CERROR_BREAK(error, 83); /*alloc fail*/ - - key[length] = 0; - for (i = 0; i != length; ++i) - key[i] = (char)data[i]; - - if (data[length + 1] != 0) - CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/ - - string2_begin = length + 2; - if (string2_begin > chunkLength) - CERROR_BREAK(error, 75); /*no null termination, corrupt?*/ - - length = (unsigned)chunkLength - string2_begin; - /*will fail if zlib error, e.g. if length is too small*/ - error = zlib_decompress( - &decoded.data, &decoded.size, (unsigned char *)(&data[string2_begin]), - length, zlibsettings); - if (error) - break; - ucvector_push_back(&decoded, 0); - - error = lodepng_add_text(info, key, (char *)decoded.data); - - break; - } - - lodepng_free(key); - ucvector_cleanup(&decoded); - - return error; -} - -/*international text chunk (iTXt)*/ -static unsigned readChunk_iTXt( - LodePNGInfo *info, const LodePNGDecompressSettings *zlibsettings, - const unsigned char *data, size_t chunkLength) -{ - unsigned error = 0; - unsigned i; - - unsigned length, begin, compressed; - char * key = 0, *langtag = 0, *transkey = 0; - ucvector decoded; - ucvector_init(&decoded); /* TODO: only use in case of compressed text */ - - while (!error) /*not really a while loop, only used to break on error*/ { - /*Quick check if the chunk length isn't too small. Even without check - it'd still fail with other error checks below if it's too short. This just - gives a different error code.*/ - if (chunkLength < 5) - CERROR_BREAK(error, 30); /*iTXt chunk too short*/ - - /*read the key*/ - for (length = 0; length < chunkLength && data[length] != 0; ++length) - ; - if (length + 3 >= chunkLength) - CERROR_BREAK(error, 75); /*no null termination char, corrupt?*/ - if (length < 1 || length > 79) - CERROR_BREAK(error, 89); /*keyword too short or long*/ - - key = (char *)lodepng_malloc(length + 1); - if (!key) - CERROR_BREAK(error, 83); /*alloc fail*/ - - key[length] = 0; - for (i = 0; i != length; ++i) - key[i] = (char)data[i]; - - /*read the compression method*/ - compressed = data[length + 1]; - if (data[length + 2] != 0) - CERROR_BREAK(error, 72); /*the 0 byte indicating compression must be 0*/ - - /*even though it's not allowed by the standard, no error is thrown if - there's no null termination char, if the text is empty for the next 3 - texts*/ - - /*read the langtag*/ - begin = length + 3; - length = 0; - for (i = begin; i < chunkLength && data[i] != 0; ++i) - ++length; - - langtag = (char *)lodepng_malloc(length + 1); - if (!langtag) - CERROR_BREAK(error, 83); /*alloc fail*/ - - langtag[length] = 0; - for (i = 0; i != length; ++i) - langtag[i] = (char)data[begin + i]; - - /*read the transkey*/ - begin += length + 1; - length = 0; - for (i = begin; i < chunkLength && data[i] != 0; ++i) - ++length; - - transkey = (char *)lodepng_malloc(length + 1); - if (!transkey) - CERROR_BREAK(error, 83); /*alloc fail*/ - - transkey[length] = 0; - for (i = 0; i != length; ++i) - transkey[i] = (char)data[begin + i]; - - /*read the actual text*/ - begin += length + 1; - - length = (unsigned)chunkLength < begin ? 0 : (unsigned)chunkLength - begin; - - if (compressed) { - /*will fail if zlib error, e.g. if length is too small*/ - error = zlib_decompress( - &decoded.data, &decoded.size, (unsigned char *)(&data[begin]), length, - zlibsettings); - if (error) - break; - if (decoded.allocsize < decoded.size) - decoded.allocsize = decoded.size; - ucvector_push_back(&decoded, 0); - } - else { - if (!ucvector_resize(&decoded, length + 1)) - CERROR_BREAK(error, 83 /*alloc fail*/); - - decoded.data[length] = 0; - for (i = 0; i != length; ++i) - decoded.data[i] = data[begin + i]; - } - - error = - lodepng_add_itext(info, key, langtag, transkey, (char *)decoded.data); - - break; - } - - lodepng_free(key); - lodepng_free(langtag); - lodepng_free(transkey); - ucvector_cleanup(&decoded); - - return error; -} - -static unsigned -readChunk_tIME(LodePNGInfo *info, const unsigned char *data, size_t chunkLength) -{ - if (chunkLength != 7) - return 73; /*invalid tIME chunk size*/ - - info->time_defined = 1; - info->time.year = 256u * data[0] + data[1]; - info->time.month = data[2]; - info->time.day = data[3]; - info->time.hour = data[4]; - info->time.minute = data[5]; - info->time.second = data[6]; - - return 0; /* OK */ -} - -static unsigned -readChunk_pHYs(LodePNGInfo *info, const unsigned char *data, size_t chunkLength) -{ - if (chunkLength != 9) - return 74; /*invalid pHYs chunk size*/ - - info->phys_defined = 1; - info->phys_x = - 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; - info->phys_y = - 16777216u * data[4] + 65536u * data[5] + 256u * data[6] + data[7]; - info->phys_unit = data[8]; - - return 0; /* OK */ -} - -static unsigned -readChunk_gAMA(LodePNGInfo *info, const unsigned char *data, size_t chunkLength) -{ - if (chunkLength != 4) - return 96; /*invalid gAMA chunk size*/ - - info->gama_defined = 1; - info->gama_gamma = - 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; - - return 0; /* OK */ -} - -static unsigned -readChunk_cHRM(LodePNGInfo *info, const unsigned char *data, size_t chunkLength) -{ - if (chunkLength != 32) - return 97; /*invalid cHRM chunk size*/ - - info->chrm_defined = 1; - info->chrm_white_x = - 16777216u * data[0] + 65536u * data[1] + 256u * data[2] + data[3]; - info->chrm_white_y = - 16777216u * data[4] + 65536u * data[5] + 256u * data[6] + data[7]; - info->chrm_red_x = - 16777216u * data[8] + 65536u * data[9] + 256u * data[10] + data[11]; - info->chrm_red_y = - 16777216u * data[12] + 65536u * data[13] + 256u * data[14] + data[15]; - info->chrm_green_x = - 16777216u * data[16] + 65536u * data[17] + 256u * data[18] + data[19]; - info->chrm_green_y = - 16777216u * data[20] + 65536u * data[21] + 256u * data[22] + data[23]; - info->chrm_blue_x = - 16777216u * data[24] + 65536u * data[25] + 256u * data[26] + data[27]; - info->chrm_blue_y = - 16777216u * data[28] + 65536u * data[29] + 256u * data[30] + data[31]; - - return 0; /* OK */ -} - -static unsigned -readChunk_sRGB(LodePNGInfo *info, const unsigned char *data, size_t chunkLength) -{ - if (chunkLength != 1) - return 98; /*invalid sRGB chunk size (this one is never ignored)*/ - - info->srgb_defined = 1; - info->srgb_intent = data[0]; - - return 0; /* OK */ -} - -static unsigned readChunk_iCCP( - LodePNGInfo *info, const LodePNGDecompressSettings *zlibsettings, - const unsigned char *data, size_t chunkLength) -{ - unsigned error = 0; - unsigned i; - - unsigned length, string2_begin; - ucvector decoded; - - info->iccp_defined = 1; - if (info->iccp_name) - lodepng_clear_icc(info); - - for (length = 0; length < chunkLength && data[length] != 0; ++length) - ; - if (length + 2 >= chunkLength) - return 75; /*no null termination, corrupt?*/ - if (length < 1 || length > 79) - return 89; /*keyword too short or long*/ - - info->iccp_name = (char *)lodepng_malloc(length + 1); - if (!info->iccp_name) - return 83; /*alloc fail*/ - - info->iccp_name[length] = 0; - for (i = 0; i != length; ++i) - info->iccp_name[i] = (char)data[i]; - - if (data[length + 1] != 0) - return 72; /*the 0 byte indicating compression must be 0*/ - - string2_begin = length + 2; - if (string2_begin > chunkLength) - return 75; /*no null termination, corrupt?*/ - - length = (unsigned)chunkLength - string2_begin; - ucvector_init(&decoded); - error = zlib_decompress( - &decoded.data, &decoded.size, (unsigned char *)(&data[string2_begin]), - length, zlibsettings); - if (!error) { - info->iccp_profile_size = decoded.size; - info->iccp_profile = (unsigned char *)lodepng_malloc(decoded.size); - if (info->iccp_profile) { - CopyMem(info->iccp_profile, decoded.data, decoded.size); - } - else { - error = 83; /* alloc fail */ - } - } - ucvector_cleanup(&decoded); - return error; -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -unsigned lodepng_inspect_chunk( - LodePNGState *state, size_t pos, const unsigned char *in, size_t insize) -{ - const unsigned char *chunk = in + pos; - unsigned chunkLength; - const unsigned char *data; - unsigned unhandled = 0; - unsigned error = 0; - - if (pos + 4 > insize) - return 30; - chunkLength = lodepng_chunk_length(chunk); - if (chunkLength > 2147483647) - return 63; - data = lodepng_chunk_data_const(chunk); - if (data + chunkLength + 4 > in + insize) - return 30; - - if (lodepng_chunk_type_equals(chunk, "PLTE")) { - error = readChunk_PLTE(&state->info_png.color, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "tRNS")) { - error = readChunk_tRNS(&state->info_png.color, data, chunkLength); -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - } - else if (lodepng_chunk_type_equals(chunk, "bKGD")) { - error = readChunk_bKGD(&state->info_png, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "tEXt")) { - error = readChunk_tEXt(&state->info_png, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "zTXt")) { - error = readChunk_zTXt( - &state->info_png, &state->decoder.zlibsettings, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "iTXt")) { - error = readChunk_iTXt( - &state->info_png, &state->decoder.zlibsettings, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "tIME")) { - error = readChunk_tIME(&state->info_png, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "pHYs")) { - error = readChunk_pHYs(&state->info_png, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "gAMA")) { - error = readChunk_gAMA(&state->info_png, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "cHRM")) { - error = readChunk_cHRM(&state->info_png, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "sRGB")) { - error = readChunk_sRGB(&state->info_png, data, chunkLength); - } - else if (lodepng_chunk_type_equals(chunk, "iCCP")) { - error = readChunk_iCCP( - &state->info_png, &state->decoder.zlibsettings, data, chunkLength); -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - else { - /* unhandled chunk is ok (is not an error) */ - unhandled = 1; - } - - if (!error && !unhandled && !state->decoder.ignore_crc) { - if (lodepng_chunk_check_crc(chunk)) - return 57; /*invalid CRC*/ - } - - return error; -} - -/*read a PNG, the result will be in the same color type as the PNG (hence - * "generic")*/ -static void decodeGeneric( - unsigned char **out, unsigned *w, unsigned *h, LodePNGState *state, - const unsigned char *in, size_t insize) -{ - unsigned char IEND = 0; - const unsigned char *chunk; - size_t i; - ucvector idat; /*the data from idat chunks*/ - ucvector scanlines; - size_t predict; - size_t outsize = 0; - - /*for unknown chunk order*/ - unsigned unknown = 0; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - unsigned critical_pos = 1; /*1 = after IHDR, 2 = after PLTE, 3 = after IDAT*/ -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - - /*provide some proper output values if error will happen*/ - *out = 0; - - state->error = lodepng_inspect( - w, h, state, in, - insize); /*reads header and resets other parameters in state->info_png*/ - if (state->error) - return; - - if (lodepng_pixel_overflow( - *w, *h, &state->info_png.color, &state->info_raw)) { - CERROR_RETURN( - state->error, 92); /*overflow possible due to amount of pixels*/ - } - - ucvector_init(&idat); - chunk = &in[33]; /*first byte of the first chunk after the header*/ - - /*loop through the chunks, ignoring unknown chunks and stopping at IEND chunk. - IDAT data is put at the start of the in buffer*/ - while (!IEND && !state->error) { - unsigned chunkLength; - const unsigned char *data; /*the data in the chunk*/ - - /*error: size of the in buffer too small to contain next chunk*/ - if ((size_t)((chunk - in) + 12) > insize || chunk < in) { - if (state->decoder.ignore_end) - break; /*other errors may still happen though*/ - CERROR_BREAK(state->error, 30); - } - - /*length of the data of the chunk, excluding the length bytes, chunk type - * and CRC bytes*/ - chunkLength = lodepng_chunk_length(chunk); - /*error: chunk length larger than the max PNG chunk size*/ - if (chunkLength > 2147483647) { - if (state->decoder.ignore_end) - break; /*other errors may still happen though*/ - CERROR_BREAK(state->error, 63); - } - - if ((size_t)((chunk - in) + chunkLength + 12) > insize || - (chunk + chunkLength + 12) < in) { - CERROR_BREAK( - state->error, - 64); /*error: size of the in buffer too small to contain next chunk*/ - } - - data = lodepng_chunk_data_const(chunk); - - unknown = 0; - - /*IDAT chunk, containing compressed image data*/ - if (lodepng_chunk_type_equals(chunk, "IDAT")) { - size_t oldsize = idat.size; - size_t newsize; - if (lodepng_addofl(oldsize, chunkLength, &newsize)) - CERROR_BREAK(state->error, 95); - if (!ucvector_resize(&idat, newsize)) - CERROR_BREAK(state->error, 83 /*alloc fail*/); - for (i = 0; i != chunkLength; ++i) - idat.data[oldsize + i] = data[i]; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - critical_pos = 3; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - else if (lodepng_chunk_type_equals(chunk, "IEND")) { - /*IEND chunk*/ - IEND = 1; - } - else if (lodepng_chunk_type_equals(chunk, "PLTE")) { - /*palette chunk (PLTE)*/ - state->error = readChunk_PLTE(&state->info_png.color, data, chunkLength); - if (state->error) - break; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - critical_pos = 2; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - else if (lodepng_chunk_type_equals(chunk, "tRNS")) { - /*palette transparency chunk (tRNS). Even though this one is an ancillary - chunk , it is still compiled in without 'LODEPNG_COMPILE_ANCILLARY_CHUNKS' - because it contains essential color information that affects the alpha - channel of pixels. */ - state->error = readChunk_tRNS(&state->info_png.color, data, chunkLength); - if (state->error) - break; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*background color chunk (bKGD)*/ - } - else if (lodepng_chunk_type_equals(chunk, "bKGD")) { - state->error = readChunk_bKGD(&state->info_png, data, chunkLength); - if (state->error) - break; - } - else if (lodepng_chunk_type_equals(chunk, "tEXt")) { - /*text chunk (tEXt)*/ - if (state->decoder.read_text_chunks) { - state->error = readChunk_tEXt(&state->info_png, data, chunkLength); - if (state->error) - break; - } - } - else if (lodepng_chunk_type_equals(chunk, "zTXt")) { - /*compressed text chunk (zTXt)*/ - if (state->decoder.read_text_chunks) { - state->error = readChunk_zTXt( - &state->info_png, &state->decoder.zlibsettings, data, chunkLength); - if (state->error) - break; - } - } - else if (lodepng_chunk_type_equals(chunk, "iTXt")) { - /*international text chunk (iTXt)*/ - if (state->decoder.read_text_chunks) { - state->error = readChunk_iTXt( - &state->info_png, &state->decoder.zlibsettings, data, chunkLength); - if (state->error) - break; - } - } - else if (lodepng_chunk_type_equals(chunk, "tIME")) { - state->error = readChunk_tIME(&state->info_png, data, chunkLength); - if (state->error) - break; - } - else if (lodepng_chunk_type_equals(chunk, "pHYs")) { - state->error = readChunk_pHYs(&state->info_png, data, chunkLength); - if (state->error) - break; - } - else if (lodepng_chunk_type_equals(chunk, "gAMA")) { - state->error = readChunk_gAMA(&state->info_png, data, chunkLength); - if (state->error) - break; - } - else if (lodepng_chunk_type_equals(chunk, "cHRM")) { - state->error = readChunk_cHRM(&state->info_png, data, chunkLength); - if (state->error) - break; - } - else if (lodepng_chunk_type_equals(chunk, "sRGB")) { - state->error = readChunk_sRGB(&state->info_png, data, chunkLength); - if (state->error) - break; - } - else if (lodepng_chunk_type_equals(chunk, "iCCP")) { - state->error = readChunk_iCCP( - &state->info_png, &state->decoder.zlibsettings, data, chunkLength); - if (state->error) - break; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - else /*it's not an implemented chunk type, so ignore it: skip over the - data*/ - { - /*error: unknown critical chunk (5th bit of first byte of chunk type is - * 0)*/ - if (!state->decoder.ignore_critical && !lodepng_chunk_ancillary(chunk)) { - CERROR_BREAK(state->error, 69); - } - - unknown = 1; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - if (state->decoder.remember_unknown_chunks) { - state->error = lodepng_chunk_append( - &state->info_png.unknown_chunks_data[critical_pos - 1], - &state->info_png.unknown_chunks_size[critical_pos - 1], chunk); - if (state->error) - break; - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - } - - if (!state->decoder.ignore_crc && - !unknown) /*check CRC if wanted, only on known chunk types*/ { - if (lodepng_chunk_check_crc(chunk)) - CERROR_BREAK(state->error, 57); /*invalid CRC*/ - } - - if (!IEND) - chunk = lodepng_chunk_next_const(chunk); - } - - ucvector_init(&scanlines); - /*predict output size, to allocate exact size for output buffer to avoid more - dynamic allocation. If the decompressed size does not match the prediction, - the image must be corrupt.*/ - if (state->info_png.interlace_method == 0) { - predict = lodepng_get_raw_size_idat(*w, *h, &state->info_png.color); - } - else { - /*Adam-7 interlaced: predicted size is the sum of the 7 sub-images sizes*/ - const LodePNGColorMode *color = &state->info_png.color; - predict = 0; - predict += lodepng_get_raw_size_idat((*w + 7) >> 3, (*h + 7) >> 3, color); - if (*w > 4) - predict += lodepng_get_raw_size_idat((*w + 3) >> 3, (*h + 7) >> 3, color); - predict += lodepng_get_raw_size_idat((*w + 3) >> 2, (*h + 3) >> 3, color); - if (*w > 2) - predict += lodepng_get_raw_size_idat((*w + 1) >> 2, (*h + 3) >> 2, color); - predict += lodepng_get_raw_size_idat((*w + 1) >> 1, (*h + 1) >> 2, color); - if (*w > 1) - predict += lodepng_get_raw_size_idat((*w + 0) >> 1, (*h + 1) >> 1, color); - predict += lodepng_get_raw_size_idat((*w + 0), (*h + 0) >> 1, color); - } - if (!state->error && !ucvector_reserve(&scanlines, predict)) - state->error = 83; /*alloc fail*/ - if (!state->error) { - state->error = zlib_decompress( - &scanlines.data, &scanlines.size, idat.data, idat.size, - &state->decoder.zlibsettings); - if (!state->error && scanlines.size != predict) - state->error = 91; /*decompressed size doesn't match prediction*/ - } - ucvector_cleanup(&idat); - - if (!state->error) { - outsize = lodepng_get_raw_size(*w, *h, &state->info_png.color); - *out = (unsigned char *)lodepng_malloc(outsize); - if (!*out) - state->error = 83; /*alloc fail*/ - } - if (!state->error) { - for (i = 0; i < outsize; i++) - (*out)[i] = 0; - state->error = - postProcessScanlines(*out, scanlines.data, *w, *h, &state->info_png); - } - ucvector_cleanup(&scanlines); -} - -unsigned lodepng_decode( - unsigned char **out, unsigned *w, unsigned *h, LodePNGState *state, - const unsigned char *in, size_t insize) -{ - *out = 0; - decodeGeneric(out, w, h, state, in, insize); - if (state->error) - return state->error; - if (!state->decoder.color_convert || - lodepng_color_mode_equal(&state->info_raw, &state->info_png.color)) { - /*same color type, no copying or converting of data needed*/ - /*store the info_png color settings on the info_raw so that the info_raw - still reflects what colortype the raw image has to the end user*/ - if (!state->decoder.color_convert) { - state->error = - lodepng_color_mode_copy(&state->info_raw, &state->info_png.color); - if (state->error) - return state->error; - } - } - else { - /*color conversion needed; sort of copy of the data*/ - unsigned char *data = *out; - size_t outsize; - - /*TODO: check if this works according to the statement in the documentation: - "The converter can convert from greyscale input color type, to 8-bit - greyscale or greyscale with alpha"*/ - if (!(state->info_raw.colortype == LCT_RGB || - state->info_raw.colortype == LCT_RGBA) && - !(state->info_raw.bitdepth == 8)) { - return 56; /*unsupported color mode conversion*/ - } - - outsize = lodepng_get_raw_size(*w, *h, &state->info_raw); - *out = (unsigned char *)lodepng_malloc(outsize); - if (!(*out)) { - state->error = 83; /*alloc fail*/ - } - else - state->error = lodepng_convert( - *out, data, &state->info_raw, &state->info_png.color, *w, *h); - lodepng_free(data); - } - return state->error; -} - -unsigned lodepng_decode_memory( - unsigned char **out, unsigned *w, unsigned *h, const unsigned char *in, - size_t insize, LodePNGColorType colortype, unsigned bitdepth) -{ - unsigned error; - LodePNGState state; - lodepng_state_init(&state); - state.info_raw.colortype = colortype; - state.info_raw.bitdepth = bitdepth; - error = lodepng_decode(out, w, h, &state, in, insize); - lodepng_state_cleanup(&state); - return error; -} - -unsigned lodepng_decode32( - unsigned char **out, unsigned *w, unsigned *h, const unsigned char *in, - size_t insize) -{ - return lodepng_decode_memory(out, w, h, in, insize, LCT_RGBA, 8); -} - -unsigned lodepng_decode24( - unsigned char **out, unsigned *w, unsigned *h, const unsigned char *in, - size_t insize) -{ - return lodepng_decode_memory(out, w, h, in, insize, LCT_RGB, 8); -} - -#ifdef LODEPNG_COMPILE_DISK -unsigned lodepng_decode_file( - unsigned char **out, unsigned *w, unsigned *h, const char *filename, - LodePNGColorType colortype, unsigned bitdepth) -{ - unsigned char *buffer = 0; - size_t buffersize; - unsigned error; - error = lodepng_load_file(&buffer, &buffersize, filename); - if (!error) - error = lodepng_decode_memory( - out, w, h, buffer, buffersize, colortype, bitdepth); - lodepng_free(buffer); - return error; -} - -unsigned lodepng_decode32_file( - unsigned char **out, unsigned *w, unsigned *h, const char *filename) -{ - return lodepng_decode_file(out, w, h, filename, LCT_RGBA, 8); -} - -unsigned lodepng_decode24_file( - unsigned char **out, unsigned *w, unsigned *h, const char *filename) -{ - return lodepng_decode_file(out, w, h, filename, LCT_RGB, 8); -} -#endif /*LODEPNG_COMPILE_DISK*/ - -void lodepng_decoder_settings_init(LodePNGDecoderSettings *settings) -{ - settings->color_convert = 1; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - settings->read_text_chunks = 1; - settings->remember_unknown_chunks = 0; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - settings->ignore_crc = 0; - settings->ignore_critical = 0; - settings->ignore_end = 0; - lodepng_decompress_settings_init(&settings->zlibsettings); -} - -#endif /*LODEPNG_COMPILE_DECODER*/ - -#if defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) - -void lodepng_state_init(LodePNGState *state) -{ -#ifdef LODEPNG_COMPILE_DECODER - lodepng_decoder_settings_init(&state->decoder); -#endif /*LODEPNG_COMPILE_DECODER*/ -#ifdef LODEPNG_COMPILE_ENCODER - lodepng_encoder_settings_init(&state->encoder); -#endif /*LODEPNG_COMPILE_ENCODER*/ - lodepng_color_mode_init(&state->info_raw); - lodepng_info_init(&state->info_png); - state->error = 1; -} - -void lodepng_state_cleanup(LodePNGState *state) -{ - lodepng_color_mode_cleanup(&state->info_raw); - lodepng_info_cleanup(&state->info_png); -} - -void lodepng_state_copy(LodePNGState *dest, const LodePNGState *source) -{ - lodepng_state_cleanup(dest); - *dest = *source; - lodepng_color_mode_init(&dest->info_raw); - lodepng_info_init(&dest->info_png); - dest->error = lodepng_color_mode_copy(&dest->info_raw, &source->info_raw); - if (dest->error) - return; - dest->error = lodepng_info_copy(&dest->info_png, &source->info_png); - if (dest->error) - return; -} - -#endif /* defined(LODEPNG_COMPILE_DECODER) || defined(LODEPNG_COMPILE_ENCODER) \ - */ - -#ifdef LODEPNG_COMPILE_ENCODER - -/* ////////////////////////////////////////////////////////////////////////// */ -/* / PNG Encoder / */ -/* ////////////////////////////////////////////////////////////////////////// */ - -/*chunkName must be string of 4 characters*/ -static unsigned addChunk( - ucvector *out, const char *chunkName, const unsigned char *data, - size_t length) -{ - CERROR_TRY_RETURN(lodepng_chunk_create( - &out->data, &out->size, (unsigned)length, chunkName, data)); - out->allocsize = out->size; /*fix the allocsize again*/ - return 0; -} - -static void writeSignature(ucvector *out) -{ - /*8 bytes PNG signature, aka the magic bytes*/ - ucvector_push_back(out, 137); - ucvector_push_back(out, 80); - ucvector_push_back(out, 78); - ucvector_push_back(out, 71); - ucvector_push_back(out, 13); - ucvector_push_back(out, 10); - ucvector_push_back(out, 26); - ucvector_push_back(out, 10); -} - -static unsigned addChunk_IHDR( - ucvector *out, unsigned w, unsigned h, LodePNGColorType colortype, - unsigned bitdepth, unsigned interlace_method) -{ - unsigned error = 0; - ucvector header; - ucvector_init(&header); - - lodepng_add32bitInt(&header, w); /*width*/ - lodepng_add32bitInt(&header, h); /*height*/ - ucvector_push_back(&header, (unsigned char)bitdepth); /*bit depth*/ - ucvector_push_back(&header, (unsigned char)colortype); /*color type*/ - ucvector_push_back(&header, 0); /*compression method*/ - ucvector_push_back(&header, 0); /*filter method*/ - ucvector_push_back(&header, interlace_method); /*interlace method*/ - - error = addChunk(out, "IHDR", header.data, header.size); - ucvector_cleanup(&header); - - return error; -} - -static unsigned addChunk_PLTE(ucvector *out, const LodePNGColorMode *info) -{ - unsigned error = 0; - size_t i; - ucvector PLTE; - ucvector_init(&PLTE); - for (i = 0; i != info->palettesize * 4; ++i) { - /*add all channels except alpha channel*/ - if (i % 4 != 3) - ucvector_push_back(&PLTE, info->palette[i]); - } - error = addChunk(out, "PLTE", PLTE.data, PLTE.size); - ucvector_cleanup(&PLTE); - - return error; -} - -static unsigned addChunk_tRNS(ucvector *out, const LodePNGColorMode *info) -{ - unsigned error = 0; - size_t i; - ucvector tRNS; - ucvector_init(&tRNS); - if (info->colortype == LCT_PALETTE) { - size_t amount = info->palettesize; - /*the tail of palette values that all have 255 as alpha, does not have to be - * encoded*/ - for (i = info->palettesize; i != 0; --i) { - if (info->palette[4 * (i - 1) + 3] == 255) - --amount; - else - break; - } - /*add only alpha channel*/ - for (i = 0; i != amount; ++i) - ucvector_push_back(&tRNS, info->palette[4 * i + 3]); - } - else if (info->colortype == LCT_GREY) { - if (info->key_defined) { - ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255)); - } - } - else if (info->colortype == LCT_RGB) { - if (info->key_defined) { - ucvector_push_back(&tRNS, (unsigned char)(info->key_r >> 8)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_r & 255)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_g >> 8)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_g & 255)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_b >> 8)); - ucvector_push_back(&tRNS, (unsigned char)(info->key_b & 255)); - } - } - - error = addChunk(out, "tRNS", tRNS.data, tRNS.size); - ucvector_cleanup(&tRNS); - - return error; -} - -static unsigned addChunk_IDAT( - ucvector *out, const unsigned char *data, size_t datasize, - LodePNGCompressSettings *zlibsettings) -{ - ucvector zlibdata; - unsigned error = 0; - - /*compress with the Zlib compressor*/ - ucvector_init(&zlibdata); - error = zlib_compress( - &zlibdata.data, &zlibdata.size, data, datasize, zlibsettings); - if (!error) - error = addChunk(out, "IDAT", zlibdata.data, zlibdata.size); - ucvector_cleanup(&zlibdata); - - return error; -} - -static unsigned addChunk_IEND(ucvector *out) -{ - unsigned error = 0; - error = addChunk(out, "IEND", 0, 0); - return error; -} - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - -static unsigned -addChunk_tEXt(ucvector *out, const char *keyword, const char *textstring) -{ - unsigned error = 0; - size_t i; - ucvector text; - ucvector_init(&text); - for (i = 0; keyword[i] != 0; ++i) - ucvector_push_back(&text, (unsigned char)keyword[i]); - if (i < 1 || i > 79) - return 89; /*error: invalid keyword size*/ - ucvector_push_back(&text, 0); /*0 termination char*/ - for (i = 0; textstring[i] != 0; ++i) - ucvector_push_back(&text, (unsigned char)textstring[i]); - error = addChunk(out, "tEXt", text.data, text.size); - ucvector_cleanup(&text); - - return error; -} - -static unsigned addChunk_zTXt( - ucvector *out, const char *keyword, const char *textstring, - LodePNGCompressSettings *zlibsettings) -{ - unsigned error = 0; - ucvector data, compressed; - size_t i, textsize = strlen(textstring); - - ucvector_init(&data); - ucvector_init(&compressed); - for (i = 0; keyword[i] != 0; ++i) - ucvector_push_back(&data, (unsigned char)keyword[i]); - if (i < 1 || i > 79) - return 89; /*error: invalid keyword size*/ - ucvector_push_back(&data, 0); /*0 termination char*/ - ucvector_push_back(&data, 0); /*compression method: 0*/ - - error = zlib_compress( - &compressed.data, &compressed.size, (unsigned char *)textstring, textsize, - zlibsettings); - if (!error) { - for (i = 0; i != compressed.size; ++i) - ucvector_push_back(&data, compressed.data[i]); - error = addChunk(out, "zTXt", data.data, data.size); - } - - ucvector_cleanup(&compressed); - ucvector_cleanup(&data); - return error; -} - -static unsigned addChunk_iTXt( - ucvector *out, unsigned compressed, const char *keyword, - const char *langtag, const char *transkey, const char *textstring, - LodePNGCompressSettings *zlibsettings) -{ - unsigned error = 0; - ucvector data; - size_t i, textsize = strlen(textstring); - - ucvector_init(&data); - - for (i = 0; keyword[i] != 0; ++i) - ucvector_push_back(&data, (unsigned char)keyword[i]); - if (i < 1 || i > 79) - return 89; /*error: invalid keyword size*/ - ucvector_push_back(&data, 0); /*null termination char*/ - ucvector_push_back(&data, compressed ? 1 : 0); /*compression flag*/ - ucvector_push_back(&data, 0); /*compression method*/ - for (i = 0; langtag[i] != 0; ++i) - ucvector_push_back(&data, (unsigned char)langtag[i]); - ucvector_push_back(&data, 0); /*null termination char*/ - for (i = 0; transkey[i] != 0; ++i) - ucvector_push_back(&data, (unsigned char)transkey[i]); - ucvector_push_back(&data, 0); /*null termination char*/ - - if (compressed) { - ucvector compressed_data; - ucvector_init(&compressed_data); - error = zlib_compress( - &compressed_data.data, &compressed_data.size, - (unsigned char *)textstring, textsize, zlibsettings); - if (!error) { - for (i = 0; i != compressed_data.size; ++i) - ucvector_push_back(&data, compressed_data.data[i]); - } - ucvector_cleanup(&compressed_data); - } - else /*not compressed*/ { - for (i = 0; textstring[i] != 0; ++i) - ucvector_push_back(&data, (unsigned char)textstring[i]); - } - - if (!error) - error = addChunk(out, "iTXt", data.data, data.size); - ucvector_cleanup(&data); - return error; -} - -static unsigned addChunk_bKGD(ucvector *out, const LodePNGInfo *info) -{ - unsigned error = 0; - ucvector bKGD; - ucvector_init(&bKGD); - if (info->color.colortype == LCT_GREY || - info->color.colortype == LCT_GREY_ALPHA) { - ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); - } - else if ( - info->color.colortype == LCT_RGB || info->color.colortype == LCT_RGBA) { - ucvector_push_back(&bKGD, (unsigned char)(info->background_r >> 8)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_r & 255)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_g >> 8)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_g & 255)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_b >> 8)); - ucvector_push_back(&bKGD, (unsigned char)(info->background_b & 255)); - } - else if (info->color.colortype == LCT_PALETTE) { - ucvector_push_back( - &bKGD, (unsigned char)(info->background_r & 255)); /*palette index*/ - } - - error = addChunk(out, "bKGD", bKGD.data, bKGD.size); - ucvector_cleanup(&bKGD); - - return error; -} - -static unsigned addChunk_tIME(ucvector *out, const LodePNGTime *time) -{ - unsigned error = 0; - unsigned char *data = (unsigned char *)lodepng_malloc(7); - if (!data) - return 83; /*alloc fail*/ - data[0] = (unsigned char)(time->year >> 8); - data[1] = (unsigned char)(time->year & 255); - data[2] = (unsigned char)time->month; - data[3] = (unsigned char)time->day; - data[4] = (unsigned char)time->hour; - data[5] = (unsigned char)time->minute; - data[6] = (unsigned char)time->second; - error = addChunk(out, "tIME", data, 7); - lodepng_free(data); - return error; -} - -static unsigned addChunk_pHYs(ucvector *out, const LodePNGInfo *info) -{ - unsigned error = 0; - ucvector data; - ucvector_init(&data); - - lodepng_add32bitInt(&data, info->phys_x); - lodepng_add32bitInt(&data, info->phys_y); - ucvector_push_back(&data, info->phys_unit); - - error = addChunk(out, "pHYs", data.data, data.size); - ucvector_cleanup(&data); - - return error; -} - -static unsigned addChunk_gAMA(ucvector *out, const LodePNGInfo *info) -{ - unsigned error = 0; - ucvector data; - ucvector_init(&data); - - lodepng_add32bitInt(&data, info->gama_gamma); - - error = addChunk(out, "gAMA", data.data, data.size); - ucvector_cleanup(&data); - - return error; -} - -static unsigned addChunk_cHRM(ucvector *out, const LodePNGInfo *info) -{ - unsigned error = 0; - ucvector data; - ucvector_init(&data); - - lodepng_add32bitInt(&data, info->chrm_white_x); - lodepng_add32bitInt(&data, info->chrm_white_y); - lodepng_add32bitInt(&data, info->chrm_red_x); - lodepng_add32bitInt(&data, info->chrm_red_y); - lodepng_add32bitInt(&data, info->chrm_green_x); - lodepng_add32bitInt(&data, info->chrm_green_y); - lodepng_add32bitInt(&data, info->chrm_blue_x); - lodepng_add32bitInt(&data, info->chrm_blue_y); - - error = addChunk(out, "cHRM", data.data, data.size); - ucvector_cleanup(&data); - - return error; -} - -static unsigned addChunk_sRGB(ucvector *out, const LodePNGInfo *info) -{ - unsigned char data = info->srgb_intent; - return addChunk(out, "sRGB", &data, 1); -} - -static unsigned addChunk_iCCP( - ucvector *out, const LodePNGInfo *info, - LodePNGCompressSettings *zlibsettings) -{ - unsigned error = 0; - ucvector data, compressed; - size_t i; - - ucvector_init(&data); - ucvector_init(&compressed); - for (i = 0; info->iccp_name[i] != 0; ++i) - ucvector_push_back(&data, (unsigned char)info->iccp_name[i]); - if (i < 1 || i > 79) - return 89; /*error: invalid keyword size*/ - ucvector_push_back(&data, 0); /*0 termination char*/ - ucvector_push_back(&data, 0); /*compression method: 0*/ - - error = zlib_compress( - &compressed.data, &compressed.size, info->iccp_profile, - info->iccp_profile_size, zlibsettings); - if (!error) { - for (i = 0; i != compressed.size; ++i) - ucvector_push_back(&data, compressed.data[i]); - error = addChunk(out, "iCCP", data.data, data.size); - } - - ucvector_cleanup(&compressed); - ucvector_cleanup(&data); - return error; -} - -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -static void filterScanline( - unsigned char *out, const unsigned char *scanline, - const unsigned char *prevline, size_t length, size_t bytewidth, - unsigned char filterType) -{ - size_t i; - switch (filterType) { - case 0: /*None*/ - for (i = 0; i != length; ++i) - out[i] = scanline[i]; - break; - case 1: /*Sub*/ - for (i = 0; i != bytewidth; ++i) - out[i] = scanline[i]; - for (i = bytewidth; i < length; ++i) - out[i] = scanline[i] - scanline[i - bytewidth]; - break; - case 2: /*Up*/ - if (prevline) { - for (i = 0; i != length; ++i) - out[i] = scanline[i] - prevline[i]; - } - else { - for (i = 0; i != length; ++i) - out[i] = scanline[i]; - } - break; - case 3: /*Average*/ - if (prevline) { - for (i = 0; i != bytewidth; ++i) - out[i] = scanline[i] - (prevline[i] >> 1); - for (i = bytewidth; i < length; ++i) - out[i] = scanline[i] - ((scanline[i - bytewidth] + prevline[i]) >> 1); - } - else { - for (i = 0; i != bytewidth; ++i) - out[i] = scanline[i]; - for (i = bytewidth; i < length; ++i) - out[i] = scanline[i] - (scanline[i - bytewidth] >> 1); - } - break; - case 4: /*Paeth*/ - if (prevline) { - /*paethPredictor(0, prevline[i], 0) is always prevline[i]*/ - for (i = 0; i != bytewidth; ++i) - out[i] = (scanline[i] - prevline[i]); - for (i = bytewidth; i < length; ++i) { - out[i] = - (scanline[i] - paethPredictor( - scanline[i - bytewidth], prevline[i], - prevline[i - bytewidth])); - } - } - else { - for (i = 0; i != bytewidth; ++i) - out[i] = scanline[i]; - /*paethPredictor(scanline[i - bytewidth], 0, 0) is always scanline[i - - * bytewidth]*/ - for (i = bytewidth; i < length; ++i) - out[i] = (scanline[i] - scanline[i - bytewidth]); - } - break; - default: - return; /*unexisting filter type given*/ - } -} - -/* log2 approximation. A slight bit faster than std::log. */ -static float flog2(float f) -{ - float result = 0; - while (f > 32) { - result += 4; - f /= 16; - } - while (f > 2) { - ++result; - f /= 2; - } - return result + - 1.442695f * (f * f * f / 3 - 3 * f * f / 2 + 3 * f - 1.83333f); -} - -static unsigned filter( - unsigned char *out, const unsigned char *in, unsigned w, unsigned h, - const LodePNGColorMode *info, const LodePNGEncoderSettings *settings) -{ - /* - For PNG filter method 0 - out must be a buffer with as size: h + (w * h * bpp + 7) / 8, because there - are the scanlines with 1 extra byte per scanline - */ - - unsigned bpp = lodepng_get_bpp(info); - /*the width of a scanline in bytes, not including the filter type*/ - size_t linebytes = (w * bpp + 7) / 8; - /*bytewidth is used for filtering, is 1 when bpp < 8, number of bytes per - * pixel otherwise*/ - size_t bytewidth = (bpp + 7) / 8; - const unsigned char * prevline = 0; - unsigned x, y; - unsigned error = 0; - LodePNGFilterStrategy strategy = settings->filter_strategy; - - /* - There is a heuristic called the minimum sum of absolute differences heuristic, - suggested by the PNG standard: - * If the image type is Palette, or the bit depth is smaller than 8, then do - not filter the image (i.e. use fixed filtering, with the filter None). - * (The other case) If the image type is Grayscale or RGB (with or without - Alpha), and the bit depth is not smaller than 8, then use adaptive filtering - heuristic as follows: independently for each row, apply all five filters and - select the filter that produces the smallest sum of absolute values per row. - This heuristic is used if filter strategy is LFS_MINSUM and - filter_palette_zero is true. - - If filter_palette_zero is true and filter_strategy is not LFS_MINSUM, the - above heuristic is followed, but for "the other case", whatever strategy - filter_strategy is set to instead of the minimum sum heuristic is used. - */ - if (settings->filter_palette_zero && - (info->colortype == LCT_PALETTE || info->bitdepth < 8)) - strategy = LFS_ZERO; - - if (bpp == 0) - return 31; /*error: invalid color type*/ - - if (strategy == LFS_ZERO) { - for (y = 0; y != h; ++y) { - size_t outindex = - (1 + linebytes) * y; /*the extra filterbyte added to each row*/ - size_t inindex = linebytes * y; - out[outindex] = 0; /*filter type byte*/ - filterScanline( - &out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, 0); - prevline = &in[inindex]; - } - } - else if (strategy == LFS_MINSUM) { - /*adaptive filtering*/ - size_t sum[5]; - unsigned char - * attempt[5]; /*five filtering attempts, one for each filter type*/ - size_t smallest = 0; - unsigned char type, bestType = 0; - - for (type = 0; type != 5; ++type) { - attempt[type] = (unsigned char *)lodepng_malloc(linebytes); - if (!attempt[type]) - return 83; /*alloc fail*/ - } - - if (!error) { - for (y = 0; y != h; ++y) { - /*try the 5 filter types*/ - for (type = 0; type != 5; ++type) { - filterScanline( - attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, - type); - - /*calculate the sum of the result*/ - sum[type] = 0; - if (type == 0) { - for (x = 0; x != linebytes; ++x) - sum[type] += (unsigned char)(attempt[type][x]); - } - else { - for (x = 0; x != linebytes; ++x) { - /*For differences, each byte should be treated as signed, values - above 127 are negative (converted to signed char). Filtertype 0 - isn't a difference though, so use unsigned there. This means - filtertype 0 is almost never chosen, but that is justified.*/ - unsigned char s = attempt[type][x]; - sum[type] += s < 128 ? s : (255U - s); - } - } - - /*check if this is smallest sum (or if type == 0 it's the first case - * so always store the values)*/ - if (type == 0 || sum[type] < smallest) { - bestType = type; - smallest = sum[type]; - } - } - - prevline = &in[y * linebytes]; - - /*now fill the out values*/ - out[y * (linebytes + 1)] = - bestType; /*the first byte of a scanline will be the filter type*/ - for (x = 0; x != linebytes; ++x) - out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; - } - } - - for (type = 0; type != 5; ++type) - lodepng_free(attempt[type]); - } - else if (strategy == LFS_ENTROPY) { - float sum[5]; - unsigned char - * attempt[5]; /*five filtering attempts, one for each filter type*/ - float smallest = 0; - unsigned type, bestType = 0; - unsigned count[256]; - - for (type = 0; type != 5; ++type) { - attempt[type] = (unsigned char *)lodepng_malloc(linebytes); - if (!attempt[type]) - return 83; /*alloc fail*/ - } - - for (y = 0; y != h; ++y) { - /*try the 5 filter types*/ - for (type = 0; type != 5; ++type) { - filterScanline( - attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, - type); - for (x = 0; x != 256; ++x) - count[x] = 0; - for (x = 0; x != linebytes; ++x) - ++count[attempt[type][x]]; - ++count[type]; /*the filter type itself is part of the scanline*/ - sum[type] = 0; - for (x = 0; x != 256; ++x) { - float p = count[x] / (float)(linebytes + 1); - sum[type] += count[x] == 0 ? 0 : flog2(1 / p) * p; - } - /*check if this is smallest sum (or if type == 0 it's the first case so - * always store the values)*/ - if (type == 0 || sum[type] < smallest) { - bestType = type; - smallest = sum[type]; - } - } - - prevline = &in[y * linebytes]; - - /*now fill the out values*/ - out[y * (linebytes + 1)] = - bestType; /*the first byte of a scanline will be the filter type*/ - for (x = 0; x != linebytes; ++x) - out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; - } - - for (type = 0; type != 5; ++type) - lodepng_free(attempt[type]); - } - else if (strategy == LFS_PREDEFINED) { - for (y = 0; y != h; ++y) { - size_t outindex = - (1 + linebytes) * y; /*the extra filterbyte added to each row*/ - size_t inindex = linebytes * y; - unsigned char type = settings->predefined_filters[y]; - out[outindex] = type; /*filter type byte*/ - filterScanline( - &out[outindex + 1], &in[inindex], prevline, linebytes, bytewidth, - type); - prevline = &in[inindex]; - } - } - else if (strategy == LFS_BRUTE_FORCE) { - /*brute force filter chooser. - deflate the scanline after every filter attempt to see which one deflates - best. This is very slow and gives only slightly smaller, sometimes even - larger, result*/ - size_t size[5]; - unsigned char - * attempt[5]; /*five filtering attempts, one for each filter type*/ - size_t smallest = 0; - unsigned type = 0, bestType = 0; - unsigned char * dummy; - LodePNGCompressSettings zlibsettings = settings->zlibsettings; - /*use fixed tree on the attempts so that the tree is not adapted to the - filtertype on purpose, to simulate the true case where the tree is the same - for the whole image. Sometimes it gives better result with dynamic tree - anyway. Using the fixed tree sometimes gives worse, but in rare - cases better compression. It does make this a bit less slow, so it's worth - doing this.*/ - zlibsettings.btype = 1; - /*a custom encoder likely doesn't read the btype setting and is optimized - for complete PNG images only, so disable it*/ - zlibsettings.custom_zlib = 0; - zlibsettings.custom_deflate = 0; - for (type = 0; type != 5; ++type) { - attempt[type] = (unsigned char *)lodepng_malloc(linebytes); - if (!attempt[type]) - return 83; /*alloc fail*/ - } - for (y = 0; y != h; ++y) /*try the 5 filter types*/ { - for (type = 0; type != 5; ++type) { - unsigned testsize = (unsigned)linebytes; - /*if(testsize > 8) testsize /= 8;*/ /*it already works good enough by - testing a part of the row*/ - - filterScanline( - attempt[type], &in[y * linebytes], prevline, linebytes, bytewidth, - type); - size[type] = 0; - dummy = 0; - zlib_compress( - &dummy, &size[type], attempt[type], testsize, &zlibsettings); - lodepng_free(dummy); - /*check if this is smallest size (or if type == 0 it's the first case so - * always store the values)*/ - if (type == 0 || size[type] < smallest) { - bestType = type; - smallest = size[type]; - } - } - prevline = &in[y * linebytes]; - out[y * (linebytes + 1)] = - bestType; /*the first byte of a scanline will be the filter type*/ - for (x = 0; x != linebytes; ++x) - out[y * (linebytes + 1) + 1 + x] = attempt[bestType][x]; - } - for (type = 0; type != 5; ++type) - lodepng_free(attempt[type]); - } - else - return 88; /* unknown filter strategy */ - - return error; -} - -static void addPaddingBits( - unsigned char *out, const unsigned char *in, size_t olinebits, - size_t ilinebits, unsigned h) -{ - /*The opposite of the removePaddingBits function - olinebits must be >= ilinebits*/ - unsigned y; - size_t diff = olinebits - ilinebits; - size_t obp = 0, ibp = 0; /*bit pointers*/ - for (y = 0; y != h; ++y) { - size_t x; - for (x = 0; x < ilinebits; ++x) { - unsigned char bit = readBitFromReversedStream(&ibp, in); - setBitOfReversedStream(&obp, out, bit); - } - /*obp += diff; --> no, fill in some value in the padding bits too, to avoid - "Use of uninitialised value of size ###" warning from valgrind*/ - for (x = 0; x != diff; ++x) - setBitOfReversedStream(&obp, out, 0); - } -} - -/* -in: non-interlaced image with size w*h -out: the same pixels, but re-ordered according to PNG's Adam7 interlacing, with - no padding bits between scanlines, but between reduced images so that each - reduced image starts at a byte. -bpp: bits per pixel -there are no padding bits, not between scanlines, not between reduced images -in has the following size in bits: w * h * bpp. -out is possibly bigger due to padding bits between reduced images -NOTE: comments about padding bits are only relevant if bpp < 8 -*/ -static void Adam7_interlace( - unsigned char *out, const unsigned char *in, unsigned w, unsigned h, - unsigned bpp) -{ - unsigned passw[7], passh[7]; - size_t filter_passstart[8], padded_passstart[8], passstart[8]; - unsigned i; - - Adam7_getpassvalues( - passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - - if (bpp >= 8) { - for (i = 0; i != 7; ++i) { - unsigned x, y, b; - size_t bytewidth = bpp / 8; - for (y = 0; y < passh[i]; ++y) - for (x = 0; x < passw[i]; ++x) { - size_t pixelinstart = ((ADAM7_IY[i] + y * ADAM7_DY[i]) * w + - ADAM7_IX[i] + x * ADAM7_DX[i]) * - bytewidth; - size_t pixeloutstart = passstart[i] + (y * passw[i] + x) * bytewidth; - for (b = 0; b < bytewidth; ++b) { - out[pixeloutstart + b] = in[pixelinstart + b]; - } - } - } - } - else /*bpp < 8: Adam7 with pixels < 8 bit is a bit trickier: with bit - pointers*/ - { - for (i = 0; i != 7; ++i) { - unsigned x, y, b; - unsigned ilinebits = bpp * passw[i]; - unsigned olinebits = bpp * w; - size_t obp, ibp; /*bit pointers (for out and in buffer)*/ - for (y = 0; y < passh[i]; ++y) - for (x = 0; x < passw[i]; ++x) { - ibp = (ADAM7_IY[i] + y * ADAM7_DY[i]) * olinebits + - (ADAM7_IX[i] + x * ADAM7_DX[i]) * bpp; - obp = (8 * passstart[i]) + (y * ilinebits + x * bpp); - for (b = 0; b < bpp; ++b) { - unsigned char bit = readBitFromReversedStream(&ibp, in); - setBitOfReversedStream(&obp, out, bit); - } - } - } - } -} - -/*out must be buffer big enough to contain uncompressed IDAT chunk data, and in -must contain the full image. return value is error**/ -static unsigned preProcessScanlines( - unsigned char **out, size_t *outsize, const unsigned char *in, unsigned w, - unsigned h, const LodePNGInfo *info_png, - const LodePNGEncoderSettings *settings) -{ - /* - This function converts the pure 2D image with the PNG's colortype, into - filtered-padded-interlaced data. Steps: - *) if no Adam7: 1) add padding bits (= posible extra bits per scanline if bpp - < 8) 2) filter - *) if adam7: 1) Adam7_interlace 2) 7x add padding bits 3) 7x filter - */ - unsigned bpp = lodepng_get_bpp(&info_png->color); - unsigned error = 0; - - if (info_png->interlace_method == 0) { - *outsize = - h + (h * ((w * bpp + 7) / 8)); /*image size plus an extra byte per - scanline + possible padding bits*/ - *out = (unsigned char *)lodepng_malloc(*outsize); - if (!(*out) && (*outsize)) - error = 83; /*alloc fail*/ - - if (!error) { - /*non multiple of 8 bits per scanline, padding bits needed per scanline*/ - if (bpp < 8 && w * bpp != ((w * bpp + 7) / 8) * 8) { - unsigned char *padded = - (unsigned char *)lodepng_malloc(h * ((w * bpp + 7) / 8)); - if (!padded) - error = 83; /*alloc fail*/ - if (!error) { - addPaddingBits(padded, in, ((w * bpp + 7) / 8) * 8, w * bpp, h); - error = filter(*out, padded, w, h, &info_png->color, settings); - } - lodepng_free(padded); - } - else { - /*we can immediately filter into the out buffer, no other steps needed*/ - error = filter(*out, in, w, h, &info_png->color, settings); - } - } - } - else /*interlace_method is 1 (Adam7)*/ { - unsigned passw[7], passh[7]; - size_t filter_passstart[8], padded_passstart[8], passstart[8]; - unsigned char *adam7; - - Adam7_getpassvalues( - passw, passh, filter_passstart, padded_passstart, passstart, w, h, bpp); - - *outsize = filter_passstart[7]; /*image size plus an extra byte per scanline - + possible padding bits*/ - *out = (unsigned char *)lodepng_malloc(*outsize); - if (!(*out)) - error = 83; /*alloc fail*/ - - adam7 = (unsigned char *)lodepng_malloc(passstart[7]); - if (!adam7 && passstart[7]) - error = 83; /*alloc fail*/ - - if (!error) { - unsigned i; - - Adam7_interlace(adam7, in, w, h, bpp); - for (i = 0; i != 7; ++i) { - if (bpp < 8) { - unsigned char *padded = (unsigned char *)lodepng_malloc( - padded_passstart[i + 1] - padded_passstart[i]); - if (!padded) - ERROR_BREAK(83); /*alloc fail*/ - addPaddingBits( - padded, &adam7[passstart[i]], ((passw[i] * bpp + 7) / 8) * 8, - passw[i] * bpp, passh[i]); - error = filter( - &(*out)[filter_passstart[i]], padded, passw[i], passh[i], - &info_png->color, settings); - lodepng_free(padded); - } - else { - error = filter( - &(*out)[filter_passstart[i]], &adam7[padded_passstart[i]], - passw[i], passh[i], &info_png->color, settings); - } - - if (error) - break; - } - } - - lodepng_free(adam7); - } - - return error; -} - -/* -palette must have 4 * palettesize bytes allocated, and given in format -RGBARGBARGBARGBA... returns 0 if the palette is opaque, returns 1 if the palette -has a single color with alpha 0 ==> color key returns 2 if the palette is -semi-translucent. -*/ -static unsigned -getPaletteTranslucency(const unsigned char *palette, size_t palettesize) -{ - size_t i; - unsigned key = 0; - unsigned r = 0, g = 0, b = 0; /*the value of the color with alpha 0, so long - as color keying is possible*/ - for (i = 0; i != palettesize; ++i) { - if (!key && palette[4 * i + 3] == 0) { - r = palette[4 * i + 0]; - g = palette[4 * i + 1]; - b = palette[4 * i + 2]; - key = 1; - i = (size_t)(-1); /*restart from beginning, to detect earlier opaque - colors with key's value*/ - } - else if (palette[4 * i + 3] != 255) - return 2; - /*when key, no opaque RGB may have key's RGB*/ - else if ( - key && r == palette[i * 4 + 0] && g == palette[i * 4 + 1] && - b == palette[i * 4 + 2]) - return 2; - } - return key; -} - -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS -static unsigned -addUnknownChunks(ucvector *out, unsigned char *data, size_t datasize) -{ - unsigned char *inchunk = data; - while ((size_t)(inchunk - data) < datasize) { - CERROR_TRY_RETURN(lodepng_chunk_append(&out->data, &out->size, inchunk)); - out->allocsize = out->size; /*fix the allocsize again*/ - inchunk = lodepng_chunk_next(inchunk); - } - return 0; -} - -static unsigned isGreyICCProfile(const unsigned char *profile, unsigned size) -{ - /* - It is a grey profile if bytes 16-19 are "GRAY", rgb profile if bytes 16-19 - are "RGB ". We do not perform any full parsing of the ICC profile here, other - than check those 4 bytes to grayscale profile. Other than that, validity of - the profile is not checked. This is needed only because the PNG specification - requires using a non-grey color model if there is an ICC profile with "RGB " - (sadly limiting compression opportunities if the input data is greyscale RGB - data), and requires using a grey color model if it is "GRAY". - */ - if (size < 20) - return 0; - return profile[16] == 'G' && profile[17] == 'R' && profile[18] == 'A' && - profile[19] == 'Y'; -} - -static unsigned isRGBICCProfile(const unsigned char *profile, unsigned size) -{ - /* See comment in isGreyICCProfile*/ - if (size < 20) - return 0; - return profile[16] == 'R' && profile[17] == 'G' && profile[18] == 'B' && - profile[19] == ' '; -} -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - -unsigned lodepng_encode( - unsigned char **out, size_t *outsize, const unsigned char *image, - unsigned w, unsigned h, LodePNGState *state) -{ - unsigned char *data = 0; /*uncompressed version of the IDAT chunk data*/ - size_t datasize = 0; - ucvector outv; - LodePNGInfo info; - - ucvector_init(&outv); - lodepng_info_init(&info); - - /*provide some proper output values if error will happen*/ - *out = 0; - *outsize = 0; - state->error = 0; - - /*check input values validity*/ - if ((state->info_png.color.colortype == LCT_PALETTE || - state->encoder.force_palette) && - (state->info_png.color.palettesize == 0 || - state->info_png.color.palettesize > 256)) { - state->error = 68; /*invalid palette size, it is only allowed to be 1-256*/ - goto cleanup; - } - if (state->encoder.zlibsettings.btype > 2) { - state->error = 61; /*error: unexisting btype*/ - goto cleanup; - } - if (state->info_png.interlace_method > 1) { - state->error = 71; /*error: unexisting interlace mode*/ - goto cleanup; - } - state->error = checkColorValidity( - state->info_png.color.colortype, state->info_png.color.bitdepth); - if (state->error) - goto cleanup; /*error: unexisting color type given*/ - state->error = - checkColorValidity(state->info_raw.colortype, state->info_raw.bitdepth); - if (state->error) - goto cleanup; /*error: unexisting color type given*/ - - /* color convert and compute scanline filter types */ - lodepng_info_copy(&info, &state->info_png); - if (state->encoder.auto_convert) { -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - if (state->info_png.background_defined) { - unsigned bg_r = state->info_png.background_r; - unsigned bg_g = state->info_png.background_g; - unsigned bg_b = state->info_png.background_b; - unsigned r = 0, g = 0, b = 0; - LodePNGColorProfile prof; - LodePNGColorMode mode16 = lodepng_color_mode_make(LCT_RGB, 16); - lodepng_convert_rgb( - &r, &g, &b, bg_r, bg_g, bg_b, &mode16, &state->info_png.color); - lodepng_color_profile_init(&prof); - state->error = - lodepng_get_color_profile(&prof, image, w, h, &state->info_raw); - if (state->error) - goto cleanup; - lodepng_color_profile_add(&prof, r, g, b, 65535); - state->error = - auto_choose_color_from_profile(&info.color, &state->info_raw, &prof); - if (state->error) - goto cleanup; - if (lodepng_convert_rgb( - &info.background_r, &info.background_g, &info.background_b, bg_r, - bg_g, bg_b, &info.color, &state->info_png.color)) { - state->error = 104; - goto cleanup; - } - } - else -#endif /* LODEPNG_COMPILE_ANCILLARY_CHUNKS */ - { - state->error = - lodepng_auto_choose_color(&info.color, image, w, h, &state->info_raw); - if (state->error) - goto cleanup; - } - } -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - if (state->info_png.iccp_defined) { - unsigned grey_icc = isGreyICCProfile( - state->info_png.iccp_profile, state->info_png.iccp_profile_size); - unsigned grey_png = info.color.colortype == LCT_GREY || - info.color.colortype == LCT_GREY_ALPHA; - /* TODO: perhaps instead of giving errors or less optimal compression, we - can automatically modify the ICC profile here to say "GRAY" or "RGB " to - match the PNG color type, unless this will require non trivial changes to - the rest of the ICC profile */ - if (!grey_icc && - !isRGBICCProfile( - state->info_png.iccp_profile, state->info_png.iccp_profile_size)) { - state->error = 100; /* Disallowed profile color type for PNG */ - goto cleanup; - } - if (!state->encoder.auto_convert && grey_icc != grey_png) { - /* Non recoverable: encoder not allowed to convert color type, and - requested color type not compatible with ICC color type */ - state->error = 101; - goto cleanup; - } - if (grey_icc && !grey_png) { - /* Non recoverable: trying to set greyscale ICC profile while colored - * pixels were given */ - state->error = 102; - goto cleanup; - /* NOTE: this relies on the fact that lodepng_auto_choose_color never - * returns palette for greyscale pixels */ - } - if (!grey_icc && grey_png) { - /* Recoverable but an unfortunate loss in compression density: We have - greyscale pixels but are forced to store them in more expensive RGB format - that will repeat each value 3 times - because the PNG spec does not allow an RGB ICC profile with internal - greyscale color data */ - if (info.color.colortype == LCT_GREY) - info.color.colortype = LCT_RGB; - if (info.color.colortype == LCT_GREY_ALPHA) - info.color.colortype = LCT_RGBA; - if (info.color.bitdepth < 8) - info.color.bitdepth = 8; - } - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - if (!lodepng_color_mode_equal(&state->info_raw, &info.color)) { - unsigned char *converted; - size_t size = - ((size_t)w * (size_t)h * (size_t)lodepng_get_bpp(&info.color) + 7) / 8; - - converted = (unsigned char *)lodepng_malloc(size); - if (!converted && size) - state->error = 83; /*alloc fail*/ - if (!state->error) { - state->error = lodepng_convert( - converted, image, &info.color, &state->info_raw, w, h); - } - if (!state->error) - preProcessScanlines( - &data, &datasize, converted, w, h, &info, &state->encoder); - lodepng_free(converted); - if (state->error) - goto cleanup; - } - else - preProcessScanlines(&data, &datasize, image, w, h, &info, &state->encoder); - - /* output all PNG chunks */ { -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - size_t i; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - /*write signature and chunks*/ - writeSignature(&outv); - /*IHDR*/ - addChunk_IHDR( - &outv, w, h, info.color.colortype, info.color.bitdepth, - info.interlace_method); -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*unknown chunks between IHDR and PLTE*/ - if (info.unknown_chunks_data[0]) { - state->error = addUnknownChunks( - &outv, info.unknown_chunks_data[0], info.unknown_chunks_size[0]); - if (state->error) - goto cleanup; - } - /*color profile chunks must come before PLTE */ - if (info.iccp_defined) - addChunk_iCCP(&outv, &info, &state->encoder.zlibsettings); - if (info.srgb_defined) - addChunk_sRGB(&outv, &info); - if (info.gama_defined) - addChunk_gAMA(&outv, &info); - if (info.chrm_defined) - addChunk_cHRM(&outv, &info); -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - /*PLTE*/ - if (info.color.colortype == LCT_PALETTE) { - addChunk_PLTE(&outv, &info.color); - } - if (state->encoder.force_palette && - (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA)) { - addChunk_PLTE(&outv, &info.color); - } - /*tRNS*/ - if (info.color.colortype == LCT_PALETTE && - getPaletteTranslucency(info.color.palette, info.color.palettesize) != - 0) { - addChunk_tRNS(&outv, &info.color); - } - if ((info.color.colortype == LCT_GREY || info.color.colortype == LCT_RGB) && - info.color.key_defined) { - addChunk_tRNS(&outv, &info.color); - } -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*bKGD (must come between PLTE and the IDAt chunks*/ - if (info.background_defined) { - state->error = addChunk_bKGD(&outv, &info); - if (state->error) - goto cleanup; - } - /*pHYs (must come before the IDAT chunks)*/ - if (info.phys_defined) - addChunk_pHYs(&outv, &info); - - /*unknown chunks between PLTE and IDAT*/ - if (info.unknown_chunks_data[1]) { - state->error = addUnknownChunks( - &outv, info.unknown_chunks_data[1], info.unknown_chunks_size[1]); - if (state->error) - goto cleanup; - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - /*IDAT (multiple IDAT chunks must be consecutive)*/ - state->error = - addChunk_IDAT(&outv, data, datasize, &state->encoder.zlibsettings); - if (state->error) - goto cleanup; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - /*tIME*/ - if (info.time_defined) - addChunk_tIME(&outv, &info.time); - /*tEXt and/or zTXt*/ - for (i = 0; i != info.text_num; ++i) { - if (strlen(info.text_keys[i]) > 79) { - state->error = 66; /*text chunk too large*/ - goto cleanup; - } - if (strlen(info.text_keys[i]) < 1) { - state->error = 67; /*text chunk too small*/ - goto cleanup; - } - if (state->encoder.text_compression) { - addChunk_zTXt( - &outv, info.text_keys[i], info.text_strings[i], - &state->encoder.zlibsettings); - } - else { - addChunk_tEXt(&outv, info.text_keys[i], info.text_strings[i]); - } - } - /*LodePNG version id in text chunk*/ - if (state->encoder.add_id) { - unsigned already_added_id_text = 0; - for (i = 0; i != info.text_num; ++i) { - if (!strcmp(info.text_keys[i], "LodePNG")) { - already_added_id_text = 1; - break; - } - } - if (already_added_id_text == 0) { - addChunk_tEXt( - &outv, "LodePNG", - LODEPNG_VERSION_STRING); /*it's shorter as tEXt than as zTXt chunk*/ - } - } - /*iTXt*/ - for (i = 0; i != info.itext_num; ++i) { - if (strlen(info.itext_keys[i]) > 79) { - state->error = 66; /*text chunk too large*/ - goto cleanup; - } - if (strlen(info.itext_keys[i]) < 1) { - state->error = 67; /*text chunk too small*/ - goto cleanup; - } - addChunk_iTXt( - &outv, state->encoder.text_compression, info.itext_keys[i], - info.itext_langtags[i], info.itext_transkeys[i], - info.itext_strings[i], &state->encoder.zlibsettings); - } - - /*unknown chunks between IDAT and IEND*/ - if (info.unknown_chunks_data[2]) { - state->error = addUnknownChunks( - &outv, info.unknown_chunks_data[2], info.unknown_chunks_size[2]); - if (state->error) - goto cleanup; - } -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ - addChunk_IEND(&outv); - } - -cleanup: - lodepng_info_cleanup(&info); - lodepng_free(data); - - /*instead of cleaning the vector up, give it to the output*/ - *out = outv.data; - *outsize = outv.size; - - return state->error; -} - -unsigned lodepng_encode_memory( - unsigned char **out, size_t *outsize, const unsigned char *image, - unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) -{ - unsigned error; - LodePNGState state; - lodepng_state_init(&state); - state.info_raw.colortype = colortype; - state.info_raw.bitdepth = bitdepth; - state.info_png.color.colortype = colortype; - state.info_png.color.bitdepth = bitdepth; - lodepng_encode(out, outsize, image, w, h, &state); - error = state.error; - lodepng_state_cleanup(&state); - return error; -} - -unsigned lodepng_encode32( - unsigned char **out, size_t *outsize, const unsigned char *image, - unsigned w, unsigned h) -{ - return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGBA, 8); -} - -unsigned lodepng_encode24( - unsigned char **out, size_t *outsize, const unsigned char *image, - unsigned w, unsigned h) -{ - return lodepng_encode_memory(out, outsize, image, w, h, LCT_RGB, 8); -} - -#ifdef LODEPNG_COMPILE_DISK -unsigned lodepng_encode_file( - const char *filename, const unsigned char *image, unsigned w, unsigned h, - LodePNGColorType colortype, unsigned bitdepth) -{ - unsigned char *buffer; - size_t buffersize; - unsigned error = lodepng_encode_memory( - &buffer, &buffersize, image, w, h, colortype, bitdepth); - if (!error) - error = lodepng_save_file(buffer, buffersize, filename); - lodepng_free(buffer); - return error; -} - -unsigned lodepng_encode32_file( - const char *filename, const unsigned char *image, unsigned w, unsigned h) -{ - return lodepng_encode_file(filename, image, w, h, LCT_RGBA, 8); -} - -unsigned lodepng_encode24_file( - const char *filename, const unsigned char *image, unsigned w, unsigned h) -{ - return lodepng_encode_file(filename, image, w, h, LCT_RGB, 8); -} -#endif /*LODEPNG_COMPILE_DISK*/ - -void lodepng_encoder_settings_init(LodePNGEncoderSettings *settings) -{ - lodepng_compress_settings_init(&settings->zlibsettings); - settings->filter_palette_zero = 1; - settings->filter_strategy = LFS_MINSUM; - settings->auto_convert = 1; - settings->force_palette = 0; - settings->predefined_filters = 0; -#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS - settings->add_id = 0; - settings->text_compression = 1; -#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/ -} - -#endif /*LODEPNG_COMPILE_ENCODER*/ -#endif /*LODEPNG_COMPILE_PNG*/ - -#ifdef LODEPNG_COMPILE_ERROR_TEXT -/* -This returns the description of a numerical error code in English. This is also -the documentation of all the error codes. -*/ -const char *lodepng_error_text(unsigned code) -{ - switch (code) { - case 0: - return "no error, everything went ok"; - case 1: - return "nothing done yet"; /*the Encoder/Decoder has done nothing yet, error - checking makes no sense yet*/ - case 10: - return "end of input memory reached without huffman end code"; /*while - huffman - decoding*/ - case 11: - return "error in code tree made it jump outside of huffman tree"; /*while - huffman - decoding*/ - case 13: - return "problem while processing dynamic deflate block"; - case 14: - return "problem while processing dynamic deflate block"; - case 15: - return "problem while processing dynamic deflate block"; - case 16: - return "unexisting code while processing dynamic deflate block"; - case 17: - return "end of out buffer memory reached while inflating"; - case 18: - return "invalid distance code while inflating"; - case 19: - return "end of out buffer memory reached while inflating"; - case 20: - return "invalid deflate block BTYPE encountered while decoding"; - case 21: - return "NLEN is not ones complement of LEN in a deflate block"; - - /*end of out buffer memory reached while inflating: - This can happen if the inflated deflate data is longer than the amount of - bytes required to fill up all the pixels of the image, given the color depth - and image dimensions. Something that doesn't - happen in a normal, well encoded, PNG image.*/ - case 22: - return "end of out buffer memory reached while inflating"; - case 23: - return "end of in buffer memory reached while inflating"; - case 24: - return "invalid FCHECK in zlib header"; - case 25: - return "invalid compression method in zlib header"; - case 26: - return "FDICT encountered in zlib header while it's not used for PNG"; - case 27: - return "PNG file is smaller than a PNG header"; - /*Checks the magic file header, the first 8 bytes of the PNG file*/ - case 28: - return "incorrect PNG signature, it's no PNG or corrupted"; - case 29: - return "first chunk is not the header chunk"; - case 30: - return "chunk length too large, chunk broken off at end of file"; - case 31: - return "illegal PNG color type or bpp"; - case 32: - return "illegal PNG compression method"; - case 33: - return "illegal PNG filter method"; - case 34: - return "illegal PNG interlace method"; - case 35: - return "chunk length of a chunk is too large or the chunk too small"; - case 36: - return "illegal PNG filter type encountered"; - case 37: - return "illegal bit depth for this color type given"; - case 38: - return "the palette is too big"; /*more than 256 colors*/ - case 39: - return "tRNS chunk before PLTE or has more entries than palette size"; - case 40: - return "tRNS chunk has wrong size for greyscale image"; - case 41: - return "tRNS chunk has wrong size for RGB image"; - case 42: - return "tRNS chunk appeared while it was not allowed for this color type"; - case 43: - return "bKGD chunk has wrong size for palette image"; - case 44: - return "bKGD chunk has wrong size for greyscale image"; - case 45: - return "bKGD chunk has wrong size for RGB image"; - case 48: - return "empty input buffer given to decoder. Maybe caused by non-existing " - "file?"; - case 49: - return "jumped past memory while generating dynamic huffman tree"; - case 50: - return "jumped past memory while generating dynamic huffman tree"; - case 51: - return "jumped past memory while inflating huffman block"; - case 52: - return "jumped past memory while inflating"; - case 53: - return "size of zlib data too small"; - case 54: - return "repeat symbol in tree while there was no value symbol yet"; - /*jumped past tree while generating huffman tree, this could be when the - tree will have more leaves than symbols after generating it out of the - given lenghts. They call this an oversubscribed dynamic bit lengths tree in - zlib.*/ - case 55: - return "jumped past tree while generating huffman tree"; - case 56: - return "given output image colortype or bitdepth not supported for color " - "conversion"; - case 57: - return "invalid CRC encountered (checking CRC can be disabled)"; - case 58: - return "invalid ADLER32 encountered (checking ADLER32 can be disabled)"; - case 59: - return "requested color conversion not supported"; - case 60: - return "invalid window size given in the settings of the encoder (must be " - "0-32768)"; - case 61: - return "invalid BTYPE given in the settings of the encoder (only 0, 1 and " - "2 are allowed)"; - /*LodePNG leaves the choice of RGB to greyscale conversion formula to the - * user.*/ - case 62: - return "conversion from color to greyscale not supported"; - /*(2^31-1)*/ - case 63: - return "length of a chunk too long, max allowed for PNG is 2147483647 " - "bytes per chunk"; - /*this would result in the inability of a deflated block to ever contain an - * end code. It must be at least 1.*/ - case 64: - return "the length of the END symbol 256 in the Huffman tree is 0"; - case 66: - return "the length of a text chunk keyword given to the encoder is longer " - "than the maximum of 79 bytes"; - case 67: - return "the length of a text chunk keyword given to the encoder is smaller " - "than the minimum of 1 byte"; - case 68: - return "tried to encode a PLTE chunk with a palette that has less than 1 " - "or more than 256 colors"; - case 69: - return "unknown chunk type with 'critical' flag encountered by the decoder"; - case 71: - return "unexisting interlace mode given to encoder (must be 0 or 1)"; - case 72: - return "while decoding, unexisting compression method encountering in zTXt " - "or iTXt chunk (it must be 0)"; - case 73: - return "invalid tIME chunk size"; - case 74: - return "invalid pHYs chunk size"; - /*length could be wrong, or data chopped off*/ - case 75: - return "no null termination char found while decoding text chunk"; - case 76: - return "iTXt chunk too short to contain required bytes"; - case 77: - return "integer overflow in buffer size"; - case 78: - return "failed to open file for reading"; /*file doesn't exist or couldn't - be opened for reading*/ - case 79: - return "failed to open file for writing"; - case 80: - return "tried creating a tree of 0 symbols"; - case 81: - return "lazy matching at pos 0 is impossible"; - case 82: - return "color conversion to palette requested while a color isn't in " - "palette, or index out of bounds"; - case 83: - return "memory allocation failed"; - case 84: - return "given image too small to contain all pixels to be encoded"; - case 86: - return "impossible offset in lz77 encoding (internal bug)"; - case 87: - return "must provide custom zlib function pointer if LODEPNG_COMPILE_ZLIB " - "is not defined"; - case 88: - return "invalid filter strategy given for " - "LodePNGEncoderSettings.filter_strategy"; - case 89: - return "text chunk keyword too short or long: must have size 1-79"; - /*the windowsize in the LodePNGCompressSettings. Requiring POT(==> & instead - * of %) makes encoding 12% faster.*/ - case 90: - return "windowsize must be a power of two"; - case 91: - return "invalid decompressed idat size"; - case 92: - return "integer overflow due to too many pixels"; - case 93: - return "zero width or height is invalid"; - case 94: - return "header chunk must have a size of 13 bytes"; - case 95: - return "integer overflow with combined idat chunk size"; - case 96: - return "invalid gAMA chunk size"; - case 97: - return "invalid cHRM chunk size"; - case 98: - return "invalid sRGB chunk size"; - case 99: - return "invalid sRGB rendering intent"; - case 100: - return "invalid ICC profile color type, the PNG specification only allows " - "RGB or GRAY"; - case 101: - return "PNG specification does not allow RGB ICC profile on grey color " - "types and vice versa"; - case 102: - return "not allowed to set greyscale ICC profile with colored pixels by " - "PNG specification"; - case 103: - return "Invalid palette index in bKGD chunk. Maybe it came before PLTE " - "chunk?"; - case 104: - return "Invalid bKGD color while encoding (e.g. palette index out of " - "range)"; - } - return "unknown error code"; -} -#endif /*LODEPNG_COMPILE_ERROR_TEXT*/ - -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* // C++ Wrapper // */ -/* ////////////////////////////////////////////////////////////////////////// */ -/* ////////////////////////////////////////////////////////////////////////// */ - -#ifdef LODEPNG_COMPILE_CPP -namespace lodepng { - -#ifdef LODEPNG_COMPILE_DISK - unsigned - load_file(std::vector &buffer, const std::string &filename) - { - long size = lodepng_filesize(filename.c_str()); - if (size < 0) - return 78; - buffer.resize((size_t)size); - return size == 0 ? 0 - : lodepng_buffer_file( - &buffer[0], (size_t)size, filename.c_str()); - } - - /*write given buffer to the file, overwriting the file, it doesn't append to - * it.*/ - unsigned save_file( - const std::vector &buffer, const std::string &filename) - { - return lodepng_save_file( - buffer.empty() ? 0 : &buffer[0], buffer.size(), filename.c_str()); - } -#endif /* LODEPNG_COMPILE_DISK */ - -#ifdef LODEPNG_COMPILE_ZLIB -#ifdef LODEPNG_COMPILE_DECODER - unsigned decompress( - std::vector &out, const unsigned char *in, size_t insize, - const LodePNGDecompressSettings &settings) - { - unsigned char *buffer = 0; - size_t buffersize = 0; - unsigned error = - zlib_decompress(&buffer, &buffersize, in, insize, &settings); - if (buffer) { - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned decompress( - std::vector &out, const std::vector &in, - const LodePNGDecompressSettings &settings) - { - return decompress(out, in.empty() ? 0 : &in[0], in.size(), settings); - } -#endif /* LODEPNG_COMPILE_DECODER */ - -#ifdef LODEPNG_COMPILE_ENCODER - unsigned compress( - std::vector &out, const unsigned char *in, size_t insize, - const LodePNGCompressSettings &settings) - { - unsigned char *buffer = 0; - size_t buffersize = 0; - unsigned error = zlib_compress(&buffer, &buffersize, in, insize, &settings); - if (buffer) { - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned compress( - std::vector &out, const std::vector &in, - const LodePNGCompressSettings &settings) - { - return compress(out, in.empty() ? 0 : &in[0], in.size(), settings); - } -#endif /* LODEPNG_COMPILE_ENCODER */ -#endif /* LODEPNG_COMPILE_ZLIB */ - -#ifdef LODEPNG_COMPILE_PNG - - State::State() { lodepng_state_init(this); } - - State::State(const State &other) - { - lodepng_state_init(this); - lodepng_state_copy(this, &other); - } - - State::~State() { lodepng_state_cleanup(this); } - - State &State::operator=(const State &other) - { - lodepng_state_copy(this, &other); - return *this; - } - -#ifdef LODEPNG_COMPILE_DECODER - - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, - const unsigned char *in, size_t insize, LodePNGColorType colortype, - unsigned bitdepth) - { - unsigned char *buffer; - unsigned error = - lodepng_decode_memory(&buffer, &w, &h, in, insize, colortype, bitdepth); - if (buffer && !error) { - State state; - state.info_raw.colortype = colortype; - state.info_raw.bitdepth = bitdepth; - size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, - const std::vector &in, LodePNGColorType colortype, - unsigned bitdepth) - { - return decode( - out, w, h, in.empty() ? 0 : &in[0], (unsigned)in.size(), colortype, - bitdepth); - } - - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, State &state, - const unsigned char *in, size_t insize) - { - unsigned char *buffer = NULL; - unsigned error = lodepng_decode(&buffer, &w, &h, &state, in, insize); - if (buffer && !error) { - size_t buffersize = lodepng_get_raw_size(w, h, &state.info_raw); - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - } - lodepng_free(buffer); - return error; - } - - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, State &state, - const std::vector &in) - { - return decode(out, w, h, state, in.empty() ? 0 : &in[0], in.size()); - } - -#ifdef LODEPNG_COMPILE_DISK - unsigned decode( - std::vector &out, unsigned &w, unsigned &h, - const std::string &filename, LodePNGColorType colortype, - unsigned bitdepth) - { - std::vector buffer; - unsigned error = load_file(buffer, filename); - if (error) - return error; - return decode(out, w, h, buffer, colortype, bitdepth); - } -#endif /* LODEPNG_COMPILE_DECODER */ -#endif /* LODEPNG_COMPILE_DISK */ - -#ifdef LODEPNG_COMPILE_ENCODER - unsigned encode( - std::vector &out, const unsigned char *in, unsigned w, - unsigned h, LodePNGColorType colortype, unsigned bitdepth) - { - unsigned char *buffer; - size_t buffersize; - unsigned error = lodepng_encode_memory( - &buffer, &buffersize, in, w, h, colortype, bitdepth); - if (buffer) { - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned encode( - std::vector &out, const std::vector &in, - unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) - { - if (lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) - return 84; - return encode(out, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); - } - - unsigned encode( - std::vector &out, const unsigned char *in, unsigned w, - unsigned h, State &state) - { - unsigned char *buffer; - size_t buffersize; - unsigned error = lodepng_encode(&buffer, &buffersize, in, w, h, &state); - if (buffer) { - out.insert(out.end(), &buffer[0], &buffer[buffersize]); - lodepng_free(buffer); - } - return error; - } - - unsigned encode( - std::vector &out, const std::vector &in, - unsigned w, unsigned h, State &state) - { - if (lodepng_get_raw_size(w, h, &state.info_raw) > in.size()) - return 84; - return encode(out, in.empty() ? 0 : &in[0], w, h, state); - } - -#ifdef LODEPNG_COMPILE_DISK - unsigned encode( - const std::string &filename, const unsigned char *in, unsigned w, - unsigned h, LodePNGColorType colortype, unsigned bitdepth) - { - std::vector buffer; - unsigned error = encode(buffer, in, w, h, colortype, bitdepth); - if (!error) - error = save_file(buffer, filename); - return error; - } - - unsigned encode( - const std::string &filename, const std::vector &in, - unsigned w, unsigned h, LodePNGColorType colortype, unsigned bitdepth) - { - if (lodepng_get_raw_size_lct(w, h, colortype, bitdepth) > in.size()) - return 84; - return encode(filename, in.empty() ? 0 : &in[0], w, h, colortype, bitdepth); - } -#endif /* LODEPNG_COMPILE_DISK */ -#endif /* LODEPNG_COMPILE_ENCODER */ -#endif /* LODEPNG_COMPILE_PNG */ -} /* namespace lodepng */ -#endif /*LODEPNG_COMPILE_CPP*/ diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/MallocLib/MallocLib.inf b/Platforms/SurfaceDuoFamilyPkg/Library/MallocLib/MallocLib.inf deleted file mode 100644 index cfc97258..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/MallocLib/MallocLib.inf +++ /dev/null @@ -1,19 +0,0 @@ -[Defines] - INF_VERSION = 0x00010005 - BASE_NAME = MallocLib - FILE_GUID = D921CF8D-2DD3-4D62-BD45-9013E1F0F550 - MODULE_TYPE = BASE - VERSION_STRING = 1.0 - LIBRARY_CLASS = MallocLib - -[Packages] - MdePkg/MdePkg.dec - ArmPkg/ArmPkg.dec - SurfaceDuoFamilyPkg/SurfaceDuoFamilyPkg.dec - -[LibraryClasses] - BaseLib - MemoryAllocationLib - -[Sources.common] - malloc.c diff --git a/Platforms/SurfaceDuoFamilyPkg/Library/MallocLib/malloc.c b/Platforms/SurfaceDuoFamilyPkg/Library/MallocLib/malloc.c deleted file mode 100644 index 713ab29e..00000000 --- a/Platforms/SurfaceDuoFamilyPkg/Library/MallocLib/malloc.c +++ /dev/null @@ -1,213 +0,0 @@ -#include -#include - -#include -#include -#include -#include -#include - -#define CPOOL_HEAD_SIGNATURE SIGNATURE_32('C', 'p', 'h', 'd') - -typedef enum { - ALLOCTYPE_POOL, - ALLOCTYPE_ALIGNED_PAGES, - ALLOCTYPE_POOL_RUNTIME, -} ALLOCATION_TYPE; - -typedef struct { - UINT32 Signature; - UINTN Size; - UINTN Boundary; - ALLOCATION_TYPE Type; - - UINT8 Data[0]; -} CPOOL_HEAD; - -VOID *memalign(UINTN Boundary, UINTN Size) -{ - return memalign2(Boundary, Size, FALSE); -} - -VOID *memalign2(UINTN Boundary, UINTN Size, BOOLEAN runtime) -{ - VOID * BaseMemory = NULL; - CPOOL_HEAD * Head; - VOID * RetVal; - UINTN HeadSize; - UINTN NodeSize; - ALLOCATION_TYPE Type = ALLOCTYPE_POOL; - - if (Size == 0) { - DEBUG((DEBUG_ERROR, "ERROR memalign: Zero Size\n")); - return NULL; - } - - if (Boundary == 8 && runtime) { - Type = ALLOCTYPE_POOL_RUNTIME; - } - else if (Boundary == 8) { - Type = ALLOCTYPE_POOL; - } - else { - Type = ALLOCTYPE_ALIGNED_PAGES; - } - - HeadSize = ALIGN_VALUE(sizeof(CPOOL_HEAD), Boundary); - NodeSize = HeadSize + Size; - - DEBUG((DEBUG_POOL, "memalign(%d): NodeSz: %d", Size, NodeSize)); - - if (Type == ALLOCTYPE_POOL) { - BaseMemory = AllocatePool(NodeSize); - } - else if (Type == ALLOCTYPE_POOL_RUNTIME) { - BaseMemory = AllocateRuntimePool(NodeSize); - } - else if (Type == ALLOCTYPE_ALIGNED_PAGES) { - BaseMemory = AllocateAlignedPages(EFI_SIZE_TO_PAGES(NodeSize), Boundary); - DEBUG((DEBUG_POOL, "Allocated at 0x%llx\n", BaseMemory)); - } - else { - ASSERT(FALSE); - } - - if (BaseMemory == NULL) { - RetVal = NULL; - DEBUG((DEBUG_ERROR, "\nERROR memalign: alloc failed\n")); - } - else { - ASSERT(BaseMemory != NULL); - Head = BaseMemory + HeadSize - sizeof(CPOOL_HEAD); - - // Fill out the pool header - Head->Signature = CPOOL_HEAD_SIGNATURE; - Head->Size = Size; - Head->Boundary = Boundary; - Head->Type = Type; - - // Return a pointer to the data - RetVal = (VOID *)Head->Data; - DEBUG((DEBUG_POOL, " Head: %p, Returns %p\n", Head, RetVal)); - } - - return RetVal; -} - -VOID *malloc(UINTN Size) { return memalign(8, Size); } - -VOID *malloc_rt(UINTN Size) { return memalign2(8, Size, TRUE); } - -VOID *calloc(UINTN Count, UINTN Size) -{ - VOID *Ptr; - - Ptr = malloc(Count * Size); - if (Ptr) - SetMem(Ptr, Count * Size, 0); - - return Ptr; -} - -VOID free(VOID *Ptr) -{ - CPOOL_HEAD *Head; - UINTN HeadSize; - UINTN NodeSize; - VOID * BaseMemory; - - if (Ptr != NULL) { - Head = BASE_CR(Ptr, CPOOL_HEAD, Data); - ASSERT(Head != NULL); - DEBUG((DEBUG_POOL, "free(%p): Head: %p\n", Ptr, Head)); - - if (Head->Signature == CPOOL_HEAD_SIGNATURE) { - HeadSize = ALIGN_VALUE(sizeof(CPOOL_HEAD), Head->Boundary); - NodeSize = HeadSize + Head->Size; - BaseMemory = Ptr - HeadSize + 0x4; - - if (Head->Type == ALLOCTYPE_POOL || - Head->Type == ALLOCTYPE_POOL_RUNTIME) { - FreePool(BaseMemory); - } - else if (Head->Type == ALLOCTYPE_ALIGNED_PAGES) { - DEBUG( - (DEBUG_POOL, "About to free %p, head size 0x%llx\n", BaseMemory, - HeadSize)); - FreeAlignedPages(BaseMemory, EFI_SIZE_TO_PAGES(NodeSize)); - } - else { - ASSERT(FALSE); - } - } - else { - DEBUG(( - DEBUG_ERROR, "ERROR free(0x%p): Signature is 0x%8X, expected 0x%8X\n", - Ptr, Head->Signature, CPOOL_HEAD_SIGNATURE)); - } - } - - DEBUG((DEBUG_POOL, "free Done\n")); -} - -VOID *realloc(VOID *Ptr, UINTN NewSize) -{ - VOID * RetVal = NULL; - CPOOL_HEAD *Head = NULL; - UINTN OldSize = 0; - UINTN NumCpy; - BOOLEAN IsRuntimePool = FALSE; - - // Find out the size of the OLD memory region - if (Ptr != NULL) { - Head = BASE_CR(Ptr, CPOOL_HEAD, Data); - ASSERT(Head != NULL); - if (Head->Signature != CPOOL_HEAD_SIGNATURE) { - DEBUG( - (DEBUG_ERROR, - "ERROR realloc(0x%p): Signature is 0x%8X, expected 0x%8X\n", Ptr, - Head->Signature, CPOOL_HEAD_SIGNATURE)); - return NULL; - } - if (Head->Type != ALLOCTYPE_POOL && Head->Type != ALLOCTYPE_POOL_RUNTIME) { - DEBUG( - (DEBUG_ERROR, - "ERROR realloc(0x%p): Only malloc pointers are supported\n", Ptr)); - } - OldSize = Head->Size; - IsRuntimePool = Head->Type == ALLOCTYPE_POOL_RUNTIME; - } - - // At this point, Ptr is either NULL or a valid pointer to an allocated space - - if (NewSize == OldSize) { - RetVal = Ptr; - } - else if (NewSize > 0) { - if (IsRuntimePool) { - RetVal = malloc_rt(NewSize); // Get the NEW memory region for runtime pool - } - else { - RetVal = malloc(NewSize); // Get the NEW memory region - } - - if (Ptr != NULL) { - // If there is an OLD region... - if (RetVal != NULL) { - // and the NEW region was successfully allocated - NumCpy = MIN(OldSize, NewSize); - CopyMem(RetVal, Ptr, NumCpy); // Copy old data to the new region. - free(Ptr); // and reclaim the old region. - } - } - } - else { - free(Ptr); // Reclaim the old region. - } - - DEBUG( - (DEBUG_POOL, "0x%p = realloc(%p, %d): Head: %p\n", RetVal, Ptr, NewSize, - Head)); - - return RetVal; -} diff --git a/Platforms/SurfaceDuoFamilyPkg/SurfaceDuoFamily.dsc.inc b/Platforms/SurfaceDuoFamilyPkg/SurfaceDuoFamily.dsc.inc index bb394b7d..f92709d8 100644 --- a/Platforms/SurfaceDuoFamilyPkg/SurfaceDuoFamily.dsc.inc +++ b/Platforms/SurfaceDuoFamilyPkg/SurfaceDuoFamily.dsc.inc @@ -359,9 +359,6 @@ # ARM Architectural Libraries ArmGicArchLib|ArmPkg/Library/ArmGicArchLib/ArmGicArchLib.inf - MallocLib|SurfaceDuoFamilyPkg/Library/MallocLib/MallocLib.inf - LodePngLib|SurfaceDuoFamilyPkg/Library/LodePngLib/LodePngLib.inf - DeviceSpecificBusInfoLib|MsCorePkg/Library/DeviceSpecificBusInfoLibNull/DeviceSpecificBusInfoLibNull.inf ExceptionPersistenceLib|MdeModulePkg/Library/BaseExceptionPersistenceLibNull/BaseExceptionPersistenceLibNull.inf