From b91be078fd95e1560329e752e16032291f28d354 Mon Sep 17 00:00:00 2001 From: Maikel vd H <ma1kelvdh@gmail.com> Date: Tue, 11 Dec 2012 00:25:21 +0100 Subject: [PATCH] fix red alert 1 video stretching for my patch and add GDI renderer video stretching --- Makefile | 8 +- build.bat | 2 + ddraw video stretching stuff.txt | 2 + ddraw.dll | Bin 0 -> 186880 bytes ddraw.rc | 24 + ddraw.rc.o | 24 + include/png.h | 2699 ++++++++++++++++++++++++++++++ include/pngconf.h | 1540 +++++++++++++++++ include/zconf.h | 428 +++++ include/zlib.h | 1613 ++++++++++++++++++ lib/libpng14.a | Bin 0 -> 210758 bytes lib/libz.a | Bin 0 -> 95182 bytes main.c | 11 +- main.h | 1 + render.c | 22 +- render_soft.c | 48 +- 16 files changed, 6392 insertions(+), 30 deletions(-) create mode 100644 build.bat create mode 100644 ddraw video stretching stuff.txt create mode 100644 ddraw.dll create mode 100644 ddraw.rc create mode 100644 ddraw.rc.o create mode 100644 include/png.h create mode 100644 include/pngconf.h create mode 100644 include/zconf.h create mode 100644 include/zlib.h create mode 100644 lib/libpng14.a create mode 100644 lib/libz.a diff --git a/Makefile b/Makefile index 519c26b..80b8ef1 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,9 @@ -CC=i586-mingw32msvc-gcc -WINDRES=i586-mingw32msvc-windres +CC=gcc CFLAGS=-DHAVE_LIBPNG -Iinclude -Wall -Wl,--enable-stdcall-fixup -O3 -s LIBS=lib/libpng14.a lib/libz.a -lgdi32 -lopengl32 -REV=$(shell sh -c 'git rev-parse --short @{0}') all: - sed 's/__REV__/$(REV)/g' ddraw.rc.in > ddraw.rc - $(WINDRES) -J rc ddraw.rc ddraw.rc.o - $(CC) $(CFLAGS) -shared -o ddraw.dll main.c mouse.c palette.c surface.c clipper.c render.c render_soft.c render_dummy.c screenshot.c ddraw.def ddraw.rc.o $(LIBS) + $(CC) $(CFLAGS) -shared -o ddraw.dll main.c mouse.c palette.c surface.c clipper.c render.c render_soft.c render_dummy.c screenshot.c ddraw.def $(LIBS) clean: rm -f ddraw.dll diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..24c19b4 --- /dev/null +++ b/build.bat @@ -0,0 +1,2 @@ +make EXT=.exe +pause \ No newline at end of file diff --git a/ddraw video stretching stuff.txt b/ddraw video stretching stuff.txt new file mode 100644 index 0000000..0acc13a --- /dev/null +++ b/ddraw video stretching stuff.txt @@ -0,0 +1,2 @@ +0x00665F58 = InMovie +0x0065D7BC = IsVQA640 \ No newline at end of file diff --git a/ddraw.dll b/ddraw.dll new file mode 100644 index 0000000000000000000000000000000000000000..3f58943f711bd7887ba30aac29e80451289eae87 GIT binary patch literal 186880 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�PcX;oy!J?d<LCRReG(Wfrk`V_N`A-7 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 NxDVE4y8WT+zX1Di5DEYQ literal 0 HcmV?d00001 diff --git a/ddraw.rc b/ddraw.rc new file mode 100644 index 0000000..aa063b5 --- /dev/null +++ b/ddraw.rc @@ -0,0 +1,24 @@ +1 VERSIONINFO +{ + BLOCK "StringFileInfo" + { + BLOCK "040904B0" + { + VALUE "CompanyName", "Toni Spets" + VALUE "FileDescription", "DirectDraw replacement for C&C95 and Red Alert" + VALUE "FileVersion", "git~" + VALUE "InternalName", "ddraw" + VALUE "LegalCopyright", "Copyright (c) 2010, 2011 Toni Spets" + VALUE "LegalTrademarks", "" + VALUE "OriginalFileName", "ddraw.dll" + VALUE "ProductName", "DirectDraw replacement for C&C95 and Red Alert" + VALUE "ProductVersion", "git~" + VALUE "Comments", "http://hifi.iki.fi/cnc-ddraw/" + } + } + + BLOCK "VarFileInfo" + { + VALUE "Translation", 0x0409, 0x04B0 + } +} diff --git a/ddraw.rc.o b/ddraw.rc.o new file mode 100644 index 0000000..aa063b5 --- /dev/null +++ b/ddraw.rc.o @@ -0,0 +1,24 @@ +1 VERSIONINFO +{ + BLOCK "StringFileInfo" + { + BLOCK "040904B0" + { + VALUE "CompanyName", "Toni Spets" + VALUE "FileDescription", "DirectDraw replacement for C&C95 and Red Alert" + VALUE "FileVersion", "git~" + VALUE "InternalName", "ddraw" + VALUE "LegalCopyright", "Copyright (c) 2010, 2011 Toni Spets" + VALUE "LegalTrademarks", "" + VALUE "OriginalFileName", "ddraw.dll" + VALUE "ProductName", "DirectDraw replacement for C&C95 and Red Alert" + VALUE "ProductVersion", "git~" + VALUE "Comments", "http://hifi.iki.fi/cnc-ddraw/" + } + } + + BLOCK "VarFileInfo" + { + VALUE "Translation", 0x0409, 0x04B0 + } +} diff --git a/include/png.h b/include/png.h new file mode 100644 index 0000000..805be12 --- /dev/null +++ b/include/png.h @@ -0,0 +1,2699 @@ + +/* png.h - header file for PNG reference library + * + * libpng version 1.4.4 - September 23, 2010 + * Copyright (c) 1998-2010 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license (See LICENSE, below) + * + * Authors and maintainers: + * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat + * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger + * libpng versions 0.97, January 1998, through 1.4.4 - September 23, 2010: Glenn + * See also "Contributing Authors", below. + * + * Note about libpng version numbers: + * + * Due to various miscommunications, unforeseen code incompatibilities + * and occasional factors outside the authors' control, version numbering + * on the library has not always been consistent and straightforward. + * The following table summarizes matters since version 0.89c, which was + * the first widely used release: + * + * source png.h png.h shared-lib + * version string int version + * ------- ------ ----- ---------- + * 0.89c "1.0 beta 3" 0.89 89 1.0.89 + * 0.90 "1.0 beta 4" 0.90 90 0.90 [should have been 2.0.90] + * 0.95 "1.0 beta 5" 0.95 95 0.95 [should have been 2.0.95] + * 0.96 "1.0 beta 6" 0.96 96 0.96 [should have been 2.0.96] + * 0.97b "1.00.97 beta 7" 1.00.97 97 1.0.1 [should have been 2.0.97] + * 0.97c 0.97 97 2.0.97 + * 0.98 0.98 98 2.0.98 + * 0.99 0.99 98 2.0.99 + * 0.99a-m 0.99 99 2.0.99 + * 1.00 1.00 100 2.1.0 [100 should be 10000] + * 1.0.0 (from here on, the 100 2.1.0 [100 should be 10000] + * 1.0.1 png.h string is 10001 2.1.0 + * 1.0.1a-e identical to the 10002 from here on, the shared library + * 1.0.2 source version) 10002 is 2.V where V is the source code + * 1.0.2a-b 10003 version, except as noted. + * 1.0.3 10003 + * 1.0.3a-d 10004 + * 1.0.4 10004 + * 1.0.4a-f 10005 + * 1.0.5 (+ 2 patches) 10005 + * 1.0.5a-d 10006 + * 1.0.5e-r 10100 (not source compatible) + * 1.0.5s-v 10006 (not binary compatible) + * 1.0.6 (+ 3 patches) 10006 (still binary incompatible) + * 1.0.6d-f 10007 (still binary incompatible) + * 1.0.6g 10007 + * 1.0.6h 10007 10.6h (testing xy.z so-numbering) + * 1.0.6i 10007 10.6i + * 1.0.6j 10007 2.1.0.6j (incompatible with 1.0.0) + * 1.0.7beta11-14 DLLNUM 10007 2.1.0.7beta11-14 (binary compatible) + * 1.0.7beta15-18 1 10007 2.1.0.7beta15-18 (binary compatible) + * 1.0.7rc1-2 1 10007 2.1.0.7rc1-2 (binary compatible) + * 1.0.7 1 10007 (still compatible) + * 1.0.8beta1-4 1 10008 2.1.0.8beta1-4 + * 1.0.8rc1 1 10008 2.1.0.8rc1 + * 1.0.8 1 10008 2.1.0.8 + * 1.0.9beta1-6 1 10009 2.1.0.9beta1-6 + * 1.0.9rc1 1 10009 2.1.0.9rc1 + * 1.0.9beta7-10 1 10009 2.1.0.9beta7-10 + * 1.0.9rc2 1 10009 2.1.0.9rc2 + * 1.0.9 1 10009 2.1.0.9 + * 1.0.10beta1 1 10010 2.1.0.10beta1 + * 1.0.10rc1 1 10010 2.1.0.10rc1 + * 1.0.10 1 10010 2.1.0.10 + * 1.0.11beta1-3 1 10011 2.1.0.11beta1-3 + * 1.0.11rc1 1 10011 2.1.0.11rc1 + * 1.0.11 1 10011 2.1.0.11 + * 1.0.12beta1-2 2 10012 2.1.0.12beta1-2 + * 1.0.12rc1 2 10012 2.1.0.12rc1 + * 1.0.12 2 10012 2.1.0.12 + * 1.1.0a-f - 10100 2.1.1.0a-f (branch abandoned) + * 1.2.0beta1-2 2 10200 2.1.2.0beta1-2 + * 1.2.0beta3-5 3 10200 3.1.2.0beta3-5 + * 1.2.0rc1 3 10200 3.1.2.0rc1 + * 1.2.0 3 10200 3.1.2.0 + * 1.2.1beta1-4 3 10201 3.1.2.1beta1-4 + * 1.2.1rc1-2 3 10201 3.1.2.1rc1-2 + * 1.2.1 3 10201 3.1.2.1 + * 1.2.2beta1-6 12 10202 12.so.0.1.2.2beta1-6 + * 1.0.13beta1 10 10013 10.so.0.1.0.13beta1 + * 1.0.13rc1 10 10013 10.so.0.1.0.13rc1 + * 1.2.2rc1 12 10202 12.so.0.1.2.2rc1 + * 1.0.13 10 10013 10.so.0.1.0.13 + * 1.2.2 12 10202 12.so.0.1.2.2 + * 1.2.3rc1-6 12 10203 12.so.0.1.2.3rc1-6 + * 1.2.3 12 10203 12.so.0.1.2.3 + * 1.2.4beta1-3 13 10204 12.so.0.1.2.4beta1-3 + * 1.0.14rc1 13 10014 10.so.0.1.0.14rc1 + * 1.2.4rc1 13 10204 12.so.0.1.2.4rc1 + * 1.0.14 10 10014 10.so.0.1.0.14 + * 1.2.4 13 10204 12.so.0.1.2.4 + * 1.2.5beta1-2 13 10205 12.so.0.1.2.5beta1-2 + * 1.0.15rc1-3 10 10015 10.so.0.1.0.15rc1-3 + * 1.2.5rc1-3 13 10205 12.so.0.1.2.5rc1-3 + * 1.0.15 10 10015 10.so.0.1.0.15 + * 1.2.5 13 10205 12.so.0.1.2.5 + * 1.2.6beta1-4 13 10206 12.so.0.1.2.6beta1-4 + * 1.0.16 10 10016 10.so.0.1.0.16 + * 1.2.6 13 10206 12.so.0.1.2.6 + * 1.2.7beta1-2 13 10207 12.so.0.1.2.7beta1-2 + * 1.0.17rc1 10 10017 12.so.0.1.0.17rc1 + * 1.2.7rc1 13 10207 12.so.0.1.2.7rc1 + * 1.0.17 10 10017 12.so.0.1.0.17 + * 1.2.7 13 10207 12.so.0.1.2.7 + * 1.2.8beta1-5 13 10208 12.so.0.1.2.8beta1-5 + * 1.0.18rc1-5 10 10018 12.so.0.1.0.18rc1-5 + * 1.2.8rc1-5 13 10208 12.so.0.1.2.8rc1-5 + * 1.0.18 10 10018 12.so.0.1.0.18 + * 1.2.8 13 10208 12.so.0.1.2.8 + * 1.2.9beta1-3 13 10209 12.so.0.1.2.9beta1-3 + * 1.2.9beta4-11 13 10209 12.so.0.9[.0] + * 1.2.9rc1 13 10209 12.so.0.9[.0] + * 1.2.9 13 10209 12.so.0.9[.0] + * 1.2.10beta1-7 13 10210 12.so.0.10[.0] + * 1.2.10rc1-2 13 10210 12.so.0.10[.0] + * 1.2.10 13 10210 12.so.0.10[.0] + * 1.4.0beta1-5 14 10400 14.so.0.0[.0] + * 1.2.11beta1-4 13 10211 12.so.0.11[.0] + * 1.4.0beta7-8 14 10400 14.so.0.0[.0] + * 1.2.11 13 10211 12.so.0.11[.0] + * 1.2.12 13 10212 12.so.0.12[.0] + * 1.4.0beta9-14 14 10400 14.so.0.0[.0] + * 1.2.13 13 10213 12.so.0.13[.0] + * 1.4.0beta15-36 14 10400 14.so.0.0[.0] + * 1.4.0beta37-87 14 10400 14.so.14.0[.0] + * 1.4.0rc01 14 10400 14.so.14.0[.0] + * 1.4.0beta88-109 14 10400 14.so.14.0[.0] + * 1.4.0rc02-08 14 10400 14.so.14.0[.0] + * 1.4.0 14 10400 14.so.14.0[.0] + * 1.4.1beta01-03 14 10401 14.so.14.1[.0] + * 1.4.1rc01 14 10401 14.so.14.1[.0] + * 1.4.1beta04-12 14 10401 14.so.14.1[.0] + * 1.4.1rc02-04 14 10401 14.so.14.1[.0] + * 1.4.1 14 10401 14.so.14.1[.0] + * 1.4.2beta01 14 10402 14.so.14.2[.0] + * 1.4.2rc02-06 14 10402 14.so.14.2[.0] + * 1.4.2 14 10402 14.so.14.2[.0] + * 1.4.3beta01-05 14 10403 14.so.14.3[.0] + * 1.4.3rc01-03 14 10403 14.so.14.3[.0] + * 1.4.3 14 10403 14.so.14.3[.0] + * 1.4.4beta01-08 14 10404 14.so.14.4[.0] + * 1.4.4rc01-06 14 10404 14.so.14.4[.0] + * + * Henceforth the source version will match the shared-library major + * and minor numbers; the shared-library major version number will be + * used for changes in backward compatibility, as it is intended. The + * PNG_LIBPNG_VER macro, which is not used within libpng but is available + * for applications, is an unsigned integer of the form xyyzz corresponding + * to the source version x.y.z (leading zeros in y and z). Beta versions + * were given the previous public release number plus a letter, until + * version 1.0.6j; from then on they were given the upcoming public + * release number plus "betaNN" or "rcN". + * + * Binary incompatibility exists only when applications make direct access + * to the info_ptr or png_ptr members through png.h, and the compiled + * application is loaded with a different version of the library. + * + * DLLNUM will change each time there are forward or backward changes + * in binary compatibility (e.g., when a new feature is added). + * + * See libpng.txt or libpng.3 for more information. The PNG specification + * is available as a W3C Recommendation and as an ISO Specification, + * <http://www.w3.org/TR/2003/REC-PNG-20031110/ + */ + +/* + * COPYRIGHT NOTICE, DISCLAIMER, and LICENSE: + * + * If you modify libpng you may insert additional notices immediately following + * this sentence. + * + * This code is released under the libpng license. + * + * libpng versions 1.2.6, August 15, 2004, through 1.4.4, September 23, 2010, are + * Copyright (c) 2004, 2006-2010 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-1.2.5 + * with the following individual added to the list of Contributing Authors: + * + * Cosmin Truta + * + * libpng versions 1.0.7, July 1, 2000, through 1.2.5, October 3, 2002, are + * Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-1.0.6 + * with the following individuals added to the list of Contributing Authors: + * + * Simon-Pierre Cadieux + * Eric S. Raymond + * Gilles Vollant + * + * and with the following additions to the disclaimer: + * + * There is no warranty against interference with your enjoyment of the + * library or against infringement. There is no warranty that our + * efforts or the library will fulfill any of your particular purposes + * or needs. This library is provided with all faults, and the entire + * risk of satisfactory quality, performance, accuracy, and effort is with + * the user. + * + * libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are + * Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson, and are + * distributed according to the same disclaimer and license as libpng-0.96, + * with the following individuals added to the list of Contributing Authors: + * + * Tom Lane + * Glenn Randers-Pehrson + * Willem van Schaik + * + * libpng versions 0.89, June 1996, through 0.96, May 1997, are + * Copyright (c) 1996, 1997 Andreas Dilger + * Distributed according to the same disclaimer and license as libpng-0.88, + * with the following individuals added to the list of Contributing Authors: + * + * John Bowler + * Kevin Bracey + * Sam Bushell + * Magnus Holmgren + * Greg Roelofs + * Tom Tanner + * + * libpng versions 0.5, May 1995, through 0.88, January 1996, are + * Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc. + * + * For the purposes of this copyright and license, "Contributing Authors" + * is defined as the following set of individuals: + * + * Andreas Dilger + * Dave Martindale + * Guy Eric Schalnat + * Paul Schmidt + * Tim Wegner + * + * The PNG Reference Library is supplied "AS IS". The Contributing Authors + * and Group 42, Inc. disclaim all warranties, expressed or implied, + * including, without limitation, the warranties of merchantability and of + * fitness for any purpose. The Contributing Authors and Group 42, Inc. + * assume no liability for direct, indirect, incidental, special, exemplary, + * or consequential damages, which may result from the use of the PNG + * Reference Library, even if advised of the possibility of such damage. + * + * Permission is hereby granted to use, copy, modify, and distribute this + * source code, or portions hereof, for any purpose, without fee, subject + * to the following restrictions: + * + * 1. The origin of this source code must not be misrepresented. + * + * 2. Altered versions must be plainly marked as such and + * must not be misrepresented as being the original source. + * + * 3. This Copyright notice may not be removed or altered from + * any source or altered source distribution. + * + * The Contributing Authors and Group 42, Inc. specifically permit, without + * fee, and encourage the use of this source code as a component to + * supporting the PNG file format in commercial products. If you use this + * source code in a product, acknowledgment is not required but would be + * appreciated. + */ + +/* + * A "png_get_copyright" function is available, for convenient use in "about" + * boxes and the like: + * + * printf("%s",png_get_copyright(NULL)); + * + * Also, the PNG logo (in PNG format, of course) is supplied in the + * files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31). + */ + +/* + * Libpng is OSI Certified Open Source Software. OSI Certified is a + * certification mark of the Open Source Initiative. + */ + +/* + * The contributing authors would like to thank all those who helped + * with testing, bug fixes, and patience. This wouldn't have been + * possible without all of you. + * + * Thanks to Frank J. T. Wojcik for helping with the documentation. + */ + +/* + * Y2K compliance in libpng: + * ========================= + * + * September 23, 2010 + * + * Since the PNG Development group is an ad-hoc body, we can't make + * an official declaration. + * + * This is your unofficial assurance that libpng from version 0.71 and + * upward through 1.4.4 are Y2K compliant. It is my belief that earlier + * versions were also Y2K compliant. + * + * Libpng only has three year fields. One is a 2-byte unsigned integer + * that will hold years up to 65535. The other two hold the date in text + * format, and will hold years up to 9999. + * + * The integer is + * "png_uint_16 year" in png_time_struct. + * + * The strings are + * "png_charp time_buffer" in png_struct and + * "near_time_buffer", which is a local character string in png.c. + * + * There are seven time-related functions: + * png.c: png_convert_to_rfc_1123() in png.c + * (formerly png_convert_to_rfc_1152() in error) + * png_convert_from_struct_tm() in pngwrite.c, called in pngwrite.c + * png_convert_from_time_t() in pngwrite.c + * png_get_tIME() in pngget.c + * png_handle_tIME() in pngrutil.c, called in pngread.c + * png_set_tIME() in pngset.c + * png_write_tIME() in pngwutil.c, called in pngwrite.c + * + * All handle dates properly in a Y2K environment. The + * png_convert_from_time_t() function calls gmtime() to convert from system + * clock time, which returns (year - 1900), which we properly convert to + * the full 4-digit year. There is a possibility that applications using + * libpng are not passing 4-digit years into the png_convert_to_rfc_1123() + * function, or that they are incorrectly passing only a 2-digit year + * instead of "year - 1900" into the png_convert_from_struct_tm() function, + * but this is not under our control. The libpng documentation has always + * stated that it works with 4-digit years, and the APIs have been + * documented as such. + * + * The tIME chunk itself is also Y2K compliant. It uses a 2-byte unsigned + * integer to hold the year, and can hold years as large as 65535. + * + * zlib, upon which libpng depends, is also Y2K compliant. It contains + * no date-related code. + * + * Glenn Randers-Pehrson + * libpng maintainer + * PNG Development Group + */ + +#ifndef PNG_H +#define PNG_H + +/* This is not the place to learn how to use libpng. The file libpng.txt + * describes how to use libpng, and the file example.c summarizes it + * with some code on which to build. This file is useful for looking + * at the actual function definitions and structure components. + */ + +/* Version information for png.h - this should match the version in png.c */ +#define PNG_LIBPNG_VER_STRING "1.4.4" +#define PNG_HEADER_VERSION_STRING \ + " libpng version 1.4.4 - September 23, 2010\n" + +#define PNG_LIBPNG_VER_SONUM 14 +#define PNG_LIBPNG_VER_DLLNUM 14 + +/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */ +#define PNG_LIBPNG_VER_MAJOR 1 +#define PNG_LIBPNG_VER_MINOR 4 +#define PNG_LIBPNG_VER_RELEASE 4 +/* This should match the numeric part of the final component of + * PNG_LIBPNG_VER_STRING, omitting any leading zero: + */ + +#define PNG_LIBPNG_VER_BUILD 0 + +/* Release Status */ +#define PNG_LIBPNG_BUILD_ALPHA 1 +#define PNG_LIBPNG_BUILD_BETA 2 +#define PNG_LIBPNG_BUILD_RC 3 +#define PNG_LIBPNG_BUILD_STABLE 4 +#define PNG_LIBPNG_BUILD_RELEASE_STATUS_MASK 7 + +/* Release-Specific Flags */ +#define PNG_LIBPNG_BUILD_PATCH 8 /* Can be OR'ed with + PNG_LIBPNG_BUILD_STABLE only */ +#define PNG_LIBPNG_BUILD_PRIVATE 16 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_SPECIAL */ +#define PNG_LIBPNG_BUILD_SPECIAL 32 /* Cannot be OR'ed with + PNG_LIBPNG_BUILD_PRIVATE */ + +#define PNG_LIBPNG_BUILD_BASE_TYPE PNG_LIBPNG_BUILD_BETA + +/* Careful here. At one time, Guy wanted to use 082, but that would be octal. + * We must not include leading zeros. + * Versions 0.7 through 1.0.0 were in the range 0 to 100 here (only + * version 1.0.0 was mis-numbered 100 instead of 10000). From + * version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release + */ +#define PNG_LIBPNG_VER 10404 /* 1.4.4 */ + +#ifndef PNG_VERSION_INFO_ONLY +/* Include the compression library's header */ +#include "zlib.h" +#endif + +/* Include all user configurable info, including optional assembler routines */ +#include "pngconf.h" + +/* + * Added at libpng-1.2.8 + * + * Ref MSDN: Private as priority over Special + * VS_FF_PRIVATEBUILD File *was not* built using standard release + * procedures. If this value is given, the StringFileInfo block must + * contain a PrivateBuild string. + * + * VS_FF_SPECIALBUILD File *was* built by the original company using + * standard release procedures but is a variation of the standard + * file of the same version number. If this value is given, the + * StringFileInfo block must contain a SpecialBuild string. + */ + +#ifdef PNG_USER_PRIVATEBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_PRIVATE) +#else +# ifdef PNG_LIBPNG_SPECIALBUILD +# define PNG_LIBPNG_BUILD_TYPE \ + (PNG_LIBPNG_BUILD_BASE_TYPE | PNG_LIBPNG_BUILD_SPECIAL) +# else +# define PNG_LIBPNG_BUILD_TYPE (PNG_LIBPNG_BUILD_BASE_TYPE) +# endif +#endif + +#ifndef PNG_VERSION_INFO_ONLY + +/* Inhibit C++ name-mangling for libpng functions but not for system calls. */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* This file is arranged in several sections. The first section contains + * structure and type definitions. The second section contains the external + * library functions, while the third has the internal library functions, + * which applications aren't expected to use directly. + */ + +/* Variables declared in png.c - only it needs to define PNG_NO_EXTERN */ +#if !defined(PNG_NO_EXTERN) || defined(PNG_ALWAYS_EXTERN) +/* Version information for C files, stored in png.c. This had better match + * the version above. + */ +#define png_libpng_ver png_get_header_ver(NULL) + +#endif /* PNG_NO_EXTERN */ + +/* Three color definitions. The order of the red, green, and blue, (and the + * exact size) is not important, although the size of the fields need to + * be png_byte or png_uint_16 (as defined below). + */ +typedef struct png_color_struct +{ + png_byte red; + png_byte green; + png_byte blue; +} png_color; +typedef png_color FAR * png_colorp; +typedef png_color FAR * FAR * png_colorpp; + +typedef struct png_color_16_struct +{ + png_byte index; /* used for palette files */ + png_uint_16 red; /* for use in red green blue files */ + png_uint_16 green; + png_uint_16 blue; + png_uint_16 gray; /* for use in grayscale files */ +} png_color_16; +typedef png_color_16 FAR * png_color_16p; +typedef png_color_16 FAR * FAR * png_color_16pp; + +typedef struct png_color_8_struct +{ + png_byte red; /* for use in red green blue files */ + png_byte green; + png_byte blue; + png_byte gray; /* for use in grayscale files */ + png_byte alpha; /* for alpha channel files */ +} png_color_8; +typedef png_color_8 FAR * png_color_8p; +typedef png_color_8 FAR * FAR * png_color_8pp; + +/* + * The following two structures are used for the in-core representation + * of sPLT chunks. + */ +typedef struct png_sPLT_entry_struct +{ + png_uint_16 red; + png_uint_16 green; + png_uint_16 blue; + png_uint_16 alpha; + png_uint_16 frequency; +} png_sPLT_entry; +typedef png_sPLT_entry FAR * png_sPLT_entryp; +typedef png_sPLT_entry FAR * FAR * png_sPLT_entrypp; + +/* When the depth of the sPLT palette is 8 bits, the color and alpha samples + * occupy the LSB of their respective members, and the MSB of each member + * is zero-filled. The frequency member always occupies the full 16 bits. + */ + +typedef struct png_sPLT_struct +{ + png_charp name; /* palette name */ + png_byte depth; /* depth of palette samples */ + png_sPLT_entryp entries; /* palette entries */ + png_int_32 nentries; /* number of palette entries */ +} png_sPLT_t; +typedef png_sPLT_t FAR * png_sPLT_tp; +typedef png_sPLT_t FAR * FAR * png_sPLT_tpp; + +#ifdef PNG_TEXT_SUPPORTED +/* png_text holds the contents of a text/ztxt/itxt chunk in a PNG file, + * and whether that contents is compressed or not. The "key" field + * points to a regular zero-terminated C string. The "text", "lang", and + * "lang_key" fields can be regular C strings, empty strings, or NULL pointers. + * However, the * structure returned by png_get_text() will always contain + * regular zero-terminated C strings (possibly empty), never NULL pointers, + * so they can be safely used in printf() and other string-handling functions. + */ +typedef struct png_text_struct +{ + int compression; /* compression value: + -1: tEXt, none + 0: zTXt, deflate + 1: iTXt, none + 2: iTXt, deflate */ + png_charp key; /* keyword, 1-79 character description of "text" */ + png_charp text; /* comment, may be an empty string (ie "") + or a NULL pointer */ + png_size_t text_length; /* length of the text string */ +#ifdef PNG_iTXt_SUPPORTED + png_size_t itxt_length; /* length of the itxt string */ + png_charp lang; /* language code, 0-79 characters + or a NULL pointer */ + png_charp lang_key; /* keyword translated UTF-8 string, 0 or more + chars or a NULL pointer */ +#endif +} png_text; +typedef png_text FAR * png_textp; +typedef png_text FAR * FAR * png_textpp; +#endif + +/* Supported compression types for text in PNG files (tEXt, and zTXt). + * The values of the PNG_TEXT_COMPRESSION_ defines should NOT be changed. */ +#define PNG_TEXT_COMPRESSION_NONE_WR -3 +#define PNG_TEXT_COMPRESSION_zTXt_WR -2 +#define PNG_TEXT_COMPRESSION_NONE -1 +#define PNG_TEXT_COMPRESSION_zTXt 0 +#define PNG_ITXT_COMPRESSION_NONE 1 +#define PNG_ITXT_COMPRESSION_zTXt 2 +#define PNG_TEXT_COMPRESSION_LAST 3 /* Not a valid value */ + +/* png_time is a way to hold the time in an machine independent way. + * Two conversions are provided, both from time_t and struct tm. There + * is no portable way to convert to either of these structures, as far + * as I know. If you know of a portable way, send it to me. As a side + * note - PNG has always been Year 2000 compliant! + */ +typedef struct png_time_struct +{ + png_uint_16 year; /* full year, as in, 1995 */ + png_byte month; /* month of year, 1 - 12 */ + png_byte day; /* day of month, 1 - 31 */ + png_byte hour; /* hour of day, 0 - 23 */ + png_byte minute; /* minute of hour, 0 - 59 */ + png_byte second; /* second of minute, 0 - 60 (for leap seconds) */ +} png_time; +typedef png_time FAR * png_timep; +typedef png_time FAR * FAR * png_timepp; + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ + defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) +/* png_unknown_chunk is a structure to hold queued chunks for which there is + * no specific support. The idea is that we can use this to queue + * up private chunks for output even though the library doesn't actually + * know about their semantics. + */ +typedef struct png_unknown_chunk_t +{ + png_byte name[5]; + png_byte *data; + png_size_t size; + + /* libpng-using applications should NOT directly modify this byte. */ + png_byte location; /* mode of operation at read time */ +} +png_unknown_chunk; +typedef png_unknown_chunk FAR * png_unknown_chunkp; +typedef png_unknown_chunk FAR * FAR * png_unknown_chunkpp; +#endif + +/* png_info is a structure that holds the information in a PNG file so + * that the application can find out the characteristics of the image. + * If you are reading the file, this structure will tell you what is + * in the PNG file. If you are writing the file, fill in the information + * you want to put into the PNG file, then call png_write_info(). + * The names chosen should be very close to the PNG specification, so + * consult that document for information about the meaning of each field. + * + * With libpng < 0.95, it was only possible to directly set and read the + * the values in the png_info_struct, which meant that the contents and + * order of the values had to remain fixed. With libpng 0.95 and later, + * however, there are now functions that abstract the contents of + * png_info_struct from the application, so this makes it easier to use + * libpng with dynamic libraries, and even makes it possible to use + * libraries that don't have all of the libpng ancillary chunk-handing + * functionality. + * + * In any case, the order of the parameters in png_info_struct should NOT + * be changed for as long as possible to keep compatibility with applications + * that use the old direct-access method with png_info_struct. + * + * The following members may have allocated storage attached that should be + * cleaned up before the structure is discarded: palette, trans, text, + * pcal_purpose, pcal_units, pcal_params, hist, iccp_name, iccp_profile, + * splt_palettes, scal_unit, row_pointers, and unknowns. By default, these + * are automatically freed when the info structure is deallocated, if they were + * allocated internally by libpng. This behavior can be changed by means + * of the png_data_freer() function. + * + * More allocation details: all the chunk-reading functions that + * change these members go through the corresponding png_set_* + * functions. A function to clear these members is available: see + * png_free_data(). The png_set_* functions do not depend on being + * able to point info structure members to any of the storage they are + * passed (they make their own copies), EXCEPT that the png_set_text + * functions use the same storage passed to them in the text_ptr or + * itxt_ptr structure argument, and the png_set_rows and png_set_unknowns + * functions do not make their own copies. + */ +typedef struct png_info_struct +{ + /* the following are necessary for every PNG file */ + png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels (from IHDR) */ + png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels (from IHDR) */ + png_uint_32 valid PNG_DEPSTRUCT; /* valid chunk data (see PNG_INFO_ + below) */ + png_size_t rowbytes PNG_DEPSTRUCT; /* bytes needed to hold an untransformed + row */ + png_colorp palette PNG_DEPSTRUCT; /* array of color values + (valid & PNG_INFO_PLTE) */ + png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in + "palette" (PLTE) */ + png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparent palette + color (tRNS) */ + png_byte bit_depth PNG_DEPSTRUCT; /* 1, 2, 4, 8, or 16 bits/channel + (from IHDR) */ + png_byte color_type PNG_DEPSTRUCT; /* see PNG_COLOR_TYPE_ below + (from IHDR) */ + /* The following three should have been named *_method not *_type */ + png_byte compression_type PNG_DEPSTRUCT; /* must be + PNG_COMPRESSION_TYPE_BASE (IHDR) */ + png_byte filter_type PNG_DEPSTRUCT; /* must be PNG_FILTER_TYPE_BASE + (from IHDR) */ + png_byte interlace_type PNG_DEPSTRUCT; /* One of PNG_INTERLACE_NONE, + PNG_INTERLACE_ADAM7 */ + + /* The following is informational only on read, and not used on writes. */ + png_byte channels PNG_DEPSTRUCT; /* number of data channels per + pixel (1, 2, 3, 4) */ + png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */ + png_byte spare_byte PNG_DEPSTRUCT; /* to align the data, and for + future use */ + png_byte signature[8] PNG_DEPSTRUCT; /* magic bytes read by libpng + from start of file */ + + /* The rest of the data is optional. If you are reading, check the + * valid field to see if the information in these are valid. If you + * are writing, set the valid field to those chunks you want written, + * and initialize the appropriate fields below. + */ + +#if defined(PNG_gAMA_SUPPORTED) && defined(PNG_FLOATING_POINT_SUPPORTED) + /* The gAMA chunk describes the gamma characteristics of the system + * on which the image was created, normally in the range [1.0, 2.5]. + * Data is valid if (valid & PNG_INFO_gAMA) is non-zero. + */ + float gamma PNG_DEPSTRUCT; /* gamma value of image, + if (valid & PNG_INFO_gAMA) */ +#endif + +#ifdef PNG_sRGB_SUPPORTED + /* GR-P, 0.96a */ + /* Data valid if (valid & PNG_INFO_sRGB) non-zero. */ + png_byte srgb_intent PNG_DEPSTRUCT; /* sRGB rendering intent + [0, 1, 2, or 3] */ +#endif + +#ifdef PNG_TEXT_SUPPORTED + /* The tEXt, and zTXt chunks contain human-readable textual data in + * uncompressed, compressed, and optionally compressed forms, respectively. + * The data in "text" is an array of pointers to uncompressed, + * null-terminated C strings. Each chunk has a keyword that describes the + * textual data contained in that chunk. Keywords are not required to be + * unique, and the text string may be empty. Any number of text chunks may + * be in an image. + */ + int num_text PNG_DEPSTRUCT; /* number of comments read/to write */ + int max_text PNG_DEPSTRUCT; /* current size of text array */ + png_textp text PNG_DEPSTRUCT; /* array of comments read/to write */ +#endif /* PNG_TEXT_SUPPORTED */ + +#ifdef PNG_tIME_SUPPORTED + /* The tIME chunk holds the last time the displayed image data was + * modified. See the png_time struct for the contents of this struct. + */ + png_time mod_time PNG_DEPSTRUCT; +#endif + +#ifdef PNG_sBIT_SUPPORTED + /* The sBIT chunk specifies the number of significant high-order bits + * in the pixel data. Values are in the range [1, bit_depth], and are + * only specified for the channels in the pixel data. The contents of + * the low-order bits is not specified. Data is valid if + * (valid & PNG_INFO_sBIT) is non-zero. + */ + png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in color channels */ +#endif + +#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_EXPAND_SUPPORTED) || \ +defined(PNG_READ_BACKGROUND_SUPPORTED) + /* The tRNS chunk supplies transparency data for paletted images and + * other image types that don't need a full alpha channel. There are + * "num_trans" transparency values for a paletted image, stored in the + * same order as the palette colors, starting from index 0. Values + * for the data are in the range [0, 255], ranging from fully transparent + * to fully opaque, respectively. For non-paletted images, there is a + * single color specified that should be treated as fully transparent. + * Data is valid if (valid & PNG_INFO_tRNS) is non-zero. + */ + png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for paletted + image */ + png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for + non-palette image */ +#endif + +#if defined(PNG_bKGD_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + /* The bKGD chunk gives the suggested image background color if the + * display program does not have its own background color and the image + * is needs to composited onto a background before display. The colors + * in "background" are normally in the same color space/depth as the + * pixel data. Data is valid if (valid & PNG_INFO_bKGD) is non-zero. + */ + png_color_16 background PNG_DEPSTRUCT; +#endif + +#ifdef PNG_oFFs_SUPPORTED + /* The oFFs chunk gives the offset in "offset_unit_type" units rightwards + * and downwards from the top-left corner of the display, page, or other + * application-specific co-ordinate space. See the PNG_OFFSET_ defines + * below for the unit types. Valid if (valid & PNG_INFO_oFFs) non-zero. + */ + png_int_32 x_offset PNG_DEPSTRUCT; /* x offset on page */ + png_int_32 y_offset PNG_DEPSTRUCT; /* y offset on page */ + png_byte offset_unit_type PNG_DEPSTRUCT; /* offset units type */ +#endif + +#ifdef PNG_pHYs_SUPPORTED + /* The pHYs chunk gives the physical pixel density of the image for + * display or printing in "phys_unit_type" units (see PNG_RESOLUTION_ + * defines below). Data is valid if (valid & PNG_INFO_pHYs) is non-zero. + */ + png_uint_32 x_pixels_per_unit PNG_DEPSTRUCT; /* horizontal pixel density */ + png_uint_32 y_pixels_per_unit PNG_DEPSTRUCT; /* vertical pixel density */ + png_byte phys_unit_type PNG_DEPSTRUCT; /* resolution type (see + PNG_RESOLUTION_ below) */ +#endif + +#ifdef PNG_hIST_SUPPORTED + /* The hIST chunk contains the relative frequency or importance of the + * various palette entries, so that a viewer can intelligently select a + * reduced-color palette, if required. Data is an array of "num_palette" + * values in the range [0,65535]. Data valid if (valid & PNG_INFO_hIST) + * is non-zero. + */ + png_uint_16p hist PNG_DEPSTRUCT; +#endif + +#ifdef PNG_cHRM_SUPPORTED + /* The cHRM chunk describes the CIE color characteristics of the monitor + * on which the PNG was created. This data allows the viewer to do gamut + * mapping of the input image to ensure that the viewer sees the same + * colors in the image as the creator. Values are in the range + * [0.0, 0.8]. Data valid if (valid & PNG_INFO_cHRM) non-zero. + */ +#ifdef PNG_FLOATING_POINT_SUPPORTED + float x_white PNG_DEPSTRUCT; + float y_white PNG_DEPSTRUCT; + float x_red PNG_DEPSTRUCT; + float y_red PNG_DEPSTRUCT; + float x_green PNG_DEPSTRUCT; + float y_green PNG_DEPSTRUCT; + float x_blue PNG_DEPSTRUCT; + float y_blue PNG_DEPSTRUCT; +#endif +#endif + +#ifdef PNG_pCAL_SUPPORTED + /* The pCAL chunk describes a transformation between the stored pixel + * values and original physical data values used to create the image. + * The integer range [0, 2^bit_depth - 1] maps to the floating-point + * range given by [pcal_X0, pcal_X1], and are further transformed by a + * (possibly non-linear) transformation function given by "pcal_type" + * and "pcal_params" into "pcal_units". Please see the PNG_EQUATION_ + * defines below, and the PNG-Group's PNG extensions document for a + * complete description of the transformations and how they should be + * implemented, and for a description of the ASCII parameter strings. + * Data values are valid if (valid & PNG_INFO_pCAL) non-zero. + */ + png_charp pcal_purpose PNG_DEPSTRUCT; /* pCAL chunk description string */ + png_int_32 pcal_X0 PNG_DEPSTRUCT; /* minimum value */ + png_int_32 pcal_X1 PNG_DEPSTRUCT; /* maximum value */ + png_charp pcal_units PNG_DEPSTRUCT; /* Latin-1 string giving physical + units */ + png_charpp pcal_params PNG_DEPSTRUCT; /* ASCII strings containing + parameter values */ + png_byte pcal_type PNG_DEPSTRUCT; /* equation type + (see PNG_EQUATION_ below) */ + png_byte pcal_nparams PNG_DEPSTRUCT; /* number of parameters given + in pcal_params */ +#endif + +/* New members added in libpng-1.0.6 */ + png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is + responsible for freeing */ + +#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED) || \ + defined(PNG_HANDLE_AS_UNKNOWN_SUPPORTED) + /* Storage for unknown chunks that the library doesn't recognize. */ + png_unknown_chunkp unknown_chunks PNG_DEPSTRUCT; + png_size_t unknown_chunks_num PNG_DEPSTRUCT; +#endif + +#ifdef PNG_iCCP_SUPPORTED + /* iCCP chunk data. */ + png_charp iccp_name PNG_DEPSTRUCT; /* profile name */ + png_charp iccp_profile PNG_DEPSTRUCT; /* International Color Consortium + profile data */ + /* Note to maintainer: should be png_bytep */ + png_uint_32 iccp_proflen PNG_DEPSTRUCT; /* ICC profile data length */ + png_byte iccp_compression PNG_DEPSTRUCT; /* Always zero */ +#endif + +#ifdef PNG_sPLT_SUPPORTED + /* Data on sPLT chunks (there may be more than one). */ + png_sPLT_tp splt_palettes PNG_DEPSTRUCT; + png_uint_32 splt_palettes_num PNG_DEPSTRUCT; +#endif + +#ifdef PNG_sCAL_SUPPORTED + /* The sCAL chunk describes the actual physical dimensions of the + * subject matter of the graphic. The chunk contains a unit specification + * a byte value, and two ASCII strings representing floating-point + * values. The values are width and height corresponsing to one pixel + * in the image. This external representation is converted to double + * here. Data values are valid if (valid & PNG_INFO_sCAL) is non-zero. + */ + png_byte scal_unit PNG_DEPSTRUCT; /* unit of physical scale */ +#ifdef PNG_FLOATING_POINT_SUPPORTED + double scal_pixel_width PNG_DEPSTRUCT; /* width of one pixel */ + double scal_pixel_height PNG_DEPSTRUCT; /* height of one pixel */ +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED + png_charp scal_s_width PNG_DEPSTRUCT; /* string containing height */ + png_charp scal_s_height PNG_DEPSTRUCT; /* string containing width */ +#endif +#endif + +#ifdef PNG_INFO_IMAGE_SUPPORTED + /* Memory has been allocated if (valid & PNG_ALLOCATED_INFO_ROWS) + non-zero */ + /* Data valid if (valid & PNG_INFO_IDAT) non-zero */ + png_bytepp row_pointers PNG_DEPSTRUCT; /* the image bits */ +#endif + +#if defined(PNG_FIXED_POINT_SUPPORTED) && defined(PNG_gAMA_SUPPORTED) + png_fixed_point int_gamma PNG_DEPSTRUCT; /* gamma of image, + if (valid & PNG_INFO_gAMA) */ +#endif + +#if defined(PNG_cHRM_SUPPORTED) && defined(PNG_FIXED_POINT_SUPPORTED) + png_fixed_point int_x_white PNG_DEPSTRUCT; + png_fixed_point int_y_white PNG_DEPSTRUCT; + png_fixed_point int_x_red PNG_DEPSTRUCT; + png_fixed_point int_y_red PNG_DEPSTRUCT; + png_fixed_point int_x_green PNG_DEPSTRUCT; + png_fixed_point int_y_green PNG_DEPSTRUCT; + png_fixed_point int_x_blue PNG_DEPSTRUCT; + png_fixed_point int_y_blue PNG_DEPSTRUCT; +#endif + +} png_info; + +typedef png_info FAR * png_infop; +typedef png_info FAR * FAR * png_infopp; + +/* Maximum positive integer used in PNG is (2^31)-1 */ +#define PNG_UINT_31_MAX ((png_uint_32)0x7fffffffL) +#define PNG_UINT_32_MAX ((png_uint_32)(-1)) +#define PNG_SIZE_MAX ((png_size_t)(-1)) + +/* These describe the color_type field in png_info. */ +/* color type masks */ +#define PNG_COLOR_MASK_PALETTE 1 +#define PNG_COLOR_MASK_COLOR 2 +#define PNG_COLOR_MASK_ALPHA 4 + +/* color types. Note that not all combinations are legal */ +#define PNG_COLOR_TYPE_GRAY 0 +#define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) +#define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) +#define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) +#define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) +/* aliases */ +#define PNG_COLOR_TYPE_RGBA PNG_COLOR_TYPE_RGB_ALPHA +#define PNG_COLOR_TYPE_GA PNG_COLOR_TYPE_GRAY_ALPHA + +/* This is for compression type. PNG 1.0-1.2 only define the single type. */ +#define PNG_COMPRESSION_TYPE_BASE 0 /* Deflate method 8, 32K window */ +#define PNG_COMPRESSION_TYPE_DEFAULT PNG_COMPRESSION_TYPE_BASE + +/* This is for filter type. PNG 1.0-1.2 only define the single type. */ +#define PNG_FILTER_TYPE_BASE 0 /* Single row per-byte filtering */ +#define PNG_INTRAPIXEL_DIFFERENCING 64 /* Used only in MNG datastreams */ +#define PNG_FILTER_TYPE_DEFAULT PNG_FILTER_TYPE_BASE + +/* These are for the interlacing type. These values should NOT be changed. */ +#define PNG_INTERLACE_NONE 0 /* Non-interlaced image */ +#define PNG_INTERLACE_ADAM7 1 /* Adam7 interlacing */ +#define PNG_INTERLACE_LAST 2 /* Not a valid value */ + +/* These are for the oFFs chunk. These values should NOT be changed. */ +#define PNG_OFFSET_PIXEL 0 /* Offset in pixels */ +#define PNG_OFFSET_MICROMETER 1 /* Offset in micrometers (1/10^6 meter) */ +#define PNG_OFFSET_LAST 2 /* Not a valid value */ + +/* These are for the pCAL chunk. These values should NOT be changed. */ +#define PNG_EQUATION_LINEAR 0 /* Linear transformation */ +#define PNG_EQUATION_BASE_E 1 /* Exponential base e transform */ +#define PNG_EQUATION_ARBITRARY 2 /* Arbitrary base exponential transform */ +#define PNG_EQUATION_HYPERBOLIC 3 /* Hyperbolic sine transformation */ +#define PNG_EQUATION_LAST 4 /* Not a valid value */ + +/* These are for the sCAL chunk. These values should NOT be changed. */ +#define PNG_SCALE_UNKNOWN 0 /* unknown unit (image scale) */ +#define PNG_SCALE_METER 1 /* meters per pixel */ +#define PNG_SCALE_RADIAN 2 /* radians per pixel */ +#define PNG_SCALE_LAST 3 /* Not a valid value */ + +/* These are for the pHYs chunk. These values should NOT be changed. */ +#define PNG_RESOLUTION_UNKNOWN 0 /* pixels/unknown unit (aspect ratio) */ +#define PNG_RESOLUTION_METER 1 /* pixels/meter */ +#define PNG_RESOLUTION_LAST 2 /* Not a valid value */ + +/* These are for the sRGB chunk. These values should NOT be changed. */ +#define PNG_sRGB_INTENT_PERCEPTUAL 0 +#define PNG_sRGB_INTENT_RELATIVE 1 +#define PNG_sRGB_INTENT_SATURATION 2 +#define PNG_sRGB_INTENT_ABSOLUTE 3 +#define PNG_sRGB_INTENT_LAST 4 /* Not a valid value */ + +/* This is for text chunks */ +#define PNG_KEYWORD_MAX_LENGTH 79 + +/* Maximum number of entries in PLTE/sPLT/tRNS arrays */ +#define PNG_MAX_PALETTE_LENGTH 256 + +/* These determine if an ancillary chunk's data has been successfully read + * from the PNG header, or if the application has filled in the corresponding + * data in the info_struct to be written into the output file. The values + * of the PNG_INFO_<chunk> defines should NOT be changed. + */ +#define PNG_INFO_gAMA 0x0001 +#define PNG_INFO_sBIT 0x0002 +#define PNG_INFO_cHRM 0x0004 +#define PNG_INFO_PLTE 0x0008 +#define PNG_INFO_tRNS 0x0010 +#define PNG_INFO_bKGD 0x0020 +#define PNG_INFO_hIST 0x0040 +#define PNG_INFO_pHYs 0x0080 +#define PNG_INFO_oFFs 0x0100 +#define PNG_INFO_tIME 0x0200 +#define PNG_INFO_pCAL 0x0400 +#define PNG_INFO_sRGB 0x0800 /* GR-P, 0.96a */ +#define PNG_INFO_iCCP 0x1000 /* ESR, 1.0.6 */ +#define PNG_INFO_sPLT 0x2000 /* ESR, 1.0.6 */ +#define PNG_INFO_sCAL 0x4000 /* ESR, 1.0.6 */ +#define PNG_INFO_IDAT 0x8000L /* ESR, 1.0.6 */ + +/* This is used for the transformation routines, as some of them + * change these values for the row. It also should enable using + * the routines for other purposes. + */ +typedef struct png_row_info_struct +{ + png_uint_32 width; /* width of row */ + png_size_t rowbytes; /* number of bytes in row */ + png_byte color_type; /* color type of row */ + png_byte bit_depth; /* bit depth of row */ + png_byte channels; /* number of channels (1, 2, 3, or 4) */ + png_byte pixel_depth; /* bits per pixel (depth * channels) */ +} png_row_info; + +typedef png_row_info FAR * png_row_infop; +typedef png_row_info FAR * FAR * png_row_infopp; + +/* These are the function types for the I/O functions and for the functions + * that allow the user to override the default I/O functions with his or her + * own. The png_error_ptr type should match that of user-supplied warning + * and error functions, while the png_rw_ptr type should match that of the + * user read/write data functions. + */ +typedef struct png_struct_def png_struct; +typedef png_struct FAR * png_structp; + +typedef void (PNGAPI *png_error_ptr) PNGARG((png_structp, png_const_charp)); +typedef void (PNGAPI *png_rw_ptr) PNGARG((png_structp, png_bytep, png_size_t)); +typedef void (PNGAPI *png_flush_ptr) PNGARG((png_structp)); +typedef void (PNGAPI *png_read_status_ptr) PNGARG((png_structp, png_uint_32, + int)); +typedef void (PNGAPI *png_write_status_ptr) PNGARG((png_structp, png_uint_32, + int)); + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +typedef void (PNGAPI *png_progressive_info_ptr) PNGARG((png_structp, + png_infop)); +typedef void (PNGAPI *png_progressive_end_ptr) PNGARG((png_structp, png_infop)); +typedef void (PNGAPI *png_progressive_row_ptr) PNGARG((png_structp, png_bytep, + png_uint_32, int)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +typedef void (PNGAPI *png_user_transform_ptr) PNGARG((png_structp, + png_row_infop, png_bytep)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +typedef int (PNGAPI *png_user_chunk_ptr) PNGARG((png_structp, + png_unknown_chunkp)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +typedef void (PNGAPI *png_unknown_chunk_ptr) PNGARG((png_structp)); +#endif +#ifdef PNG_SETJMP_SUPPORTED +/* This must match the function definition in <setjmp.h>, and the + * application must include this before png.h to obtain the definition + * of jmp_buf. + */ +typedef void (PNGAPI *png_longjmp_ptr) PNGARG((jmp_buf, int)); +#endif + +/* Transform masks for the high-level interface */ +#define PNG_TRANSFORM_IDENTITY 0x0000 /* read and write */ +#define PNG_TRANSFORM_STRIP_16 0x0001 /* read only */ +#define PNG_TRANSFORM_STRIP_ALPHA 0x0002 /* read only */ +#define PNG_TRANSFORM_PACKING 0x0004 /* read and write */ +#define PNG_TRANSFORM_PACKSWAP 0x0008 /* read and write */ +#define PNG_TRANSFORM_EXPAND 0x0010 /* read only */ +#define PNG_TRANSFORM_INVERT_MONO 0x0020 /* read and write */ +#define PNG_TRANSFORM_SHIFT 0x0040 /* read and write */ +#define PNG_TRANSFORM_BGR 0x0080 /* read and write */ +#define PNG_TRANSFORM_SWAP_ALPHA 0x0100 /* read and write */ +#define PNG_TRANSFORM_SWAP_ENDIAN 0x0200 /* read and write */ +#define PNG_TRANSFORM_INVERT_ALPHA 0x0400 /* read and write */ +#define PNG_TRANSFORM_STRIP_FILLER 0x0800 /* write only */ +/* Added to libpng-1.2.34 */ +#define PNG_TRANSFORM_STRIP_FILLER_BEFORE PNG_TRANSFORM_STRIP_FILLER +#define PNG_TRANSFORM_STRIP_FILLER_AFTER 0x1000 /* write only */ +/* Added to libpng-1.4.0 */ +#define PNG_TRANSFORM_GRAY_TO_RGB 0x2000 /* read only */ + +/* Flags for MNG supported features */ +#define PNG_FLAG_MNG_EMPTY_PLTE 0x01 +#define PNG_FLAG_MNG_FILTER_64 0x04 +#define PNG_ALL_MNG_FEATURES 0x05 + +typedef png_voidp (*png_malloc_ptr) PNGARG((png_structp, png_alloc_size_t)); +typedef void (*png_free_ptr) PNGARG((png_structp, png_voidp)); + +/* The structure that holds the information to read and write PNG files. + * The only people who need to care about what is inside of this are the + * people who will be modifying the library for their own special needs. + * It should NOT be accessed directly by an application, except to store + * the jmp_buf. + */ + +struct png_struct_def +{ +#ifdef PNG_SETJMP_SUPPORTED + jmp_buf jmpbuf PNG_DEPSTRUCT; /* used in png_error */ + png_longjmp_ptr longjmp_fn PNG_DEPSTRUCT;/* setjmp non-local goto + function. */ +#endif + png_error_ptr error_fn PNG_DEPSTRUCT; /* function for printing + errors and aborting */ + png_error_ptr warning_fn PNG_DEPSTRUCT; /* function for printing + warnings */ + png_voidp error_ptr PNG_DEPSTRUCT; /* user supplied struct for + error functions */ + png_rw_ptr write_data_fn PNG_DEPSTRUCT; /* function for writing + output data */ + png_rw_ptr read_data_fn PNG_DEPSTRUCT; /* function for reading + input data */ + png_voidp io_ptr PNG_DEPSTRUCT; /* ptr to application struct + for I/O functions */ + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED + png_user_transform_ptr read_user_transform_fn PNG_DEPSTRUCT; /* user read + transform */ +#endif + +#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED + png_user_transform_ptr write_user_transform_fn PNG_DEPSTRUCT; /* user write + transform */ +#endif + +/* These were added in libpng-1.0.2 */ +#ifdef PNG_USER_TRANSFORM_PTR_SUPPORTED +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) + png_voidp user_transform_ptr PNG_DEPSTRUCT; /* user supplied struct + for user transform */ + png_byte user_transform_depth PNG_DEPSTRUCT; /* bit depth of user + transformed pixels */ + png_byte user_transform_channels PNG_DEPSTRUCT; /* channels in user + transformed pixels */ +#endif +#endif + + png_uint_32 mode PNG_DEPSTRUCT; /* tells us where we are in + the PNG file */ + png_uint_32 flags PNG_DEPSTRUCT; /* flags indicating various + things to libpng */ + png_uint_32 transformations PNG_DEPSTRUCT; /* which transformations + to perform */ + + z_stream zstream PNG_DEPSTRUCT; /* pointer to decompression + structure (below) */ + png_bytep zbuf PNG_DEPSTRUCT; /* buffer for zlib */ + png_size_t zbuf_size PNG_DEPSTRUCT; /* size of zbuf */ + int zlib_level PNG_DEPSTRUCT; /* holds zlib compression level */ + int zlib_method PNG_DEPSTRUCT; /* holds zlib compression method */ + int zlib_window_bits PNG_DEPSTRUCT; /* holds zlib compression window + bits */ + int zlib_mem_level PNG_DEPSTRUCT; /* holds zlib compression memory + level */ + int zlib_strategy PNG_DEPSTRUCT; /* holds zlib compression + strategy */ + + png_uint_32 width PNG_DEPSTRUCT; /* width of image in pixels */ + png_uint_32 height PNG_DEPSTRUCT; /* height of image in pixels */ + png_uint_32 num_rows PNG_DEPSTRUCT; /* number of rows in current pass */ + png_uint_32 usr_width PNG_DEPSTRUCT; /* width of row at start of write */ + png_size_t rowbytes PNG_DEPSTRUCT; /* size of row in bytes */ +#if 0 /* Replaced with the following in libpng-1.4.1 */ + png_size_t irowbytes PNG_DEPSTRUCT; +#endif +/* Added in libpng-1.4.1 */ +#ifdef PNG_USER_LIMITS_SUPPORTED + /* Total memory that a zTXt, sPLT, iTXt, iCCP, or unknown chunk + * can occupy when decompressed. 0 means unlimited. + * We will change the typedef from png_size_t to png_alloc_size_t + * in libpng-1.6.0 + */ + png_alloc_size_t user_chunk_malloc_max PNG_DEPSTRUCT; +#endif + png_uint_32 iwidth PNG_DEPSTRUCT; /* width of current interlaced + row in pixels */ + png_uint_32 row_number PNG_DEPSTRUCT; /* current row in interlace pass */ + png_bytep prev_row PNG_DEPSTRUCT; /* buffer to save previous + (unfiltered) row */ + png_bytep row_buf PNG_DEPSTRUCT; /* buffer to save current + (unfiltered) row */ + png_bytep sub_row PNG_DEPSTRUCT; /* buffer to save "sub" row + when filtering */ + png_bytep up_row PNG_DEPSTRUCT; /* buffer to save "up" row + when filtering */ + png_bytep avg_row PNG_DEPSTRUCT; /* buffer to save "avg" row + when filtering */ + png_bytep paeth_row PNG_DEPSTRUCT; /* buffer to save "Paeth" row + when filtering */ + png_row_info row_info PNG_DEPSTRUCT; /* used for transformation + routines */ + + png_uint_32 idat_size PNG_DEPSTRUCT; /* current IDAT size for read */ + png_uint_32 crc PNG_DEPSTRUCT; /* current chunk CRC value */ + png_colorp palette PNG_DEPSTRUCT; /* palette from the input file */ + png_uint_16 num_palette PNG_DEPSTRUCT; /* number of color entries in + palette */ + png_uint_16 num_trans PNG_DEPSTRUCT; /* number of transparency values */ + png_byte chunk_name[5] PNG_DEPSTRUCT; /* null-terminated name of current + chunk */ + png_byte compression PNG_DEPSTRUCT; /* file compression type + (always 0) */ + png_byte filter PNG_DEPSTRUCT; /* file filter type (always 0) */ + png_byte interlaced PNG_DEPSTRUCT; /* PNG_INTERLACE_NONE, + PNG_INTERLACE_ADAM7 */ + png_byte pass PNG_DEPSTRUCT; /* current interlace pass (0 - 6) */ + png_byte do_filter PNG_DEPSTRUCT; /* row filter flags (see + PNG_FILTER_ below ) */ + png_byte color_type PNG_DEPSTRUCT; /* color type of file */ + png_byte bit_depth PNG_DEPSTRUCT; /* bit depth of file */ + png_byte usr_bit_depth PNG_DEPSTRUCT; /* bit depth of users row */ + png_byte pixel_depth PNG_DEPSTRUCT; /* number of bits per pixel */ + png_byte channels PNG_DEPSTRUCT; /* number of channels in file */ + png_byte usr_channels PNG_DEPSTRUCT; /* channels at start of write */ + png_byte sig_bytes PNG_DEPSTRUCT; /* magic bytes read/written from + start of file */ + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) + png_uint_16 filler PNG_DEPSTRUCT; /* filler bytes for pixel + expansion */ +#endif + +#ifdef PNG_bKGD_SUPPORTED + png_byte background_gamma_type PNG_DEPSTRUCT; +# ifdef PNG_FLOATING_POINT_SUPPORTED + float background_gamma PNG_DEPSTRUCT; +# endif + png_color_16 background PNG_DEPSTRUCT; /* background color in + screen gamma space */ +#ifdef PNG_READ_GAMMA_SUPPORTED + png_color_16 background_1 PNG_DEPSTRUCT; /* background normalized + to gamma 1.0 */ +#endif +#endif /* PNG_bKGD_SUPPORTED */ + +#ifdef PNG_WRITE_FLUSH_SUPPORTED + png_flush_ptr output_flush_fn PNG_DEPSTRUCT; /* Function for flushing + output */ + png_uint_32 flush_dist PNG_DEPSTRUCT; /* how many rows apart to flush, + 0 - no flush */ + png_uint_32 flush_rows PNG_DEPSTRUCT; /* number of rows written since + last flush */ +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + int gamma_shift PNG_DEPSTRUCT; /* number of "insignificant" bits + 16-bit gamma */ +#ifdef PNG_FLOATING_POINT_SUPPORTED + float gamma PNG_DEPSTRUCT; /* file gamma value */ + float screen_gamma PNG_DEPSTRUCT; /* screen gamma value + (display_exponent) */ +#endif +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_bytep gamma_table PNG_DEPSTRUCT; /* gamma table for 8-bit + depth files */ + png_bytep gamma_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to screen */ + png_bytep gamma_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */ + png_uint_16pp gamma_16_table PNG_DEPSTRUCT; /* gamma table for 16-bit + depth files */ + png_uint_16pp gamma_16_from_1 PNG_DEPSTRUCT; /* converts from 1.0 to + screen */ + png_uint_16pp gamma_16_to_1 PNG_DEPSTRUCT; /* converts from file to 1.0 */ +#endif + +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_sBIT_SUPPORTED) + png_color_8 sig_bit PNG_DEPSTRUCT; /* significant bits in each + available channel */ +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) + png_color_8 shift PNG_DEPSTRUCT; /* shift for significant bit + tranformation */ +#endif + +#if defined(PNG_tRNS_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) \ + || defined(PNG_READ_EXPAND_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_bytep trans_alpha PNG_DEPSTRUCT; /* alpha values for + paletted files */ + png_color_16 trans_color PNG_DEPSTRUCT; /* transparent color for + non-paletted files */ +#endif + + png_read_status_ptr read_row_fn PNG_DEPSTRUCT; /* called after each + row is decoded */ + png_write_status_ptr write_row_fn PNG_DEPSTRUCT; /* called after each + row is encoded */ +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED + png_progressive_info_ptr info_fn PNG_DEPSTRUCT; /* called after header + data fully read */ + png_progressive_row_ptr row_fn PNG_DEPSTRUCT; /* called after each + prog. row is decoded */ + png_progressive_end_ptr end_fn PNG_DEPSTRUCT; /* called after image + is complete */ + png_bytep save_buffer_ptr PNG_DEPSTRUCT; /* current location in + save_buffer */ + png_bytep save_buffer PNG_DEPSTRUCT; /* buffer for previously + read data */ + png_bytep current_buffer_ptr PNG_DEPSTRUCT; /* current location in + current_buffer */ + png_bytep current_buffer PNG_DEPSTRUCT; /* buffer for recently + used data */ + png_uint_32 push_length PNG_DEPSTRUCT; /* size of current input + chunk */ + png_uint_32 skip_length PNG_DEPSTRUCT; /* bytes to skip in + input data */ + png_size_t save_buffer_size PNG_DEPSTRUCT; /* amount of data now + in save_buffer */ + png_size_t save_buffer_max PNG_DEPSTRUCT; /* total size of + save_buffer */ + png_size_t buffer_size PNG_DEPSTRUCT; /* total amount of + available input data */ + png_size_t current_buffer_size PNG_DEPSTRUCT; /* amount of data now + in current_buffer */ + int process_mode PNG_DEPSTRUCT; /* what push library + is currently doing */ + int cur_palette PNG_DEPSTRUCT; /* current push library + palette index */ + +# ifdef PNG_TEXT_SUPPORTED + png_size_t current_text_size PNG_DEPSTRUCT; /* current size of + text input data */ + png_size_t current_text_left PNG_DEPSTRUCT; /* how much text left + to read in input */ + png_charp current_text PNG_DEPSTRUCT; /* current text chunk + buffer */ + png_charp current_text_ptr PNG_DEPSTRUCT; /* current location + in current_text */ +# endif /* PNG_PROGRESSIVE_READ_SUPPORTED && PNG_TEXT_SUPPORTED */ + +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +#if defined(__TURBOC__) && !defined(_Windows) && !defined(__FLAT__) +/* For the Borland special 64K segment handler */ + png_bytepp offset_table_ptr PNG_DEPSTRUCT; + png_bytep offset_table PNG_DEPSTRUCT; + png_uint_16 offset_table_number PNG_DEPSTRUCT; + png_uint_16 offset_table_count PNG_DEPSTRUCT; + png_uint_16 offset_table_count_free PNG_DEPSTRUCT; +#endif + +#ifdef PNG_READ_QUANTIZE_SUPPORTED + png_bytep palette_lookup PNG_DEPSTRUCT; /* lookup table for quantizing */ + png_bytep quantize_index PNG_DEPSTRUCT; /* index translation for palette + files */ +#endif + +#if defined(PNG_READ_QUANTIZE_SUPPORTED) || defined(PNG_hIST_SUPPORTED) + png_uint_16p hist PNG_DEPSTRUCT; /* histogram */ +#endif + +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED + png_byte heuristic_method PNG_DEPSTRUCT; /* heuristic for row + filter selection */ + png_byte num_prev_filters PNG_DEPSTRUCT; /* number of weights + for previous rows */ + png_bytep prev_filters PNG_DEPSTRUCT; /* filter type(s) of + previous row(s) */ + png_uint_16p filter_weights PNG_DEPSTRUCT; /* weight(s) for previous + line(s) */ + png_uint_16p inv_filter_weights PNG_DEPSTRUCT; /* 1/weight(s) for + previous line(s) */ + png_uint_16p filter_costs PNG_DEPSTRUCT; /* relative filter + calculation cost */ + png_uint_16p inv_filter_costs PNG_DEPSTRUCT; /* 1/relative filter + calculation cost */ +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED + png_charp time_buffer PNG_DEPSTRUCT; /* String to hold RFC 1123 time text */ +#endif + +/* New members added in libpng-1.0.6 */ + + png_uint_32 free_me PNG_DEPSTRUCT; /* flags items libpng is + responsible for freeing */ + +#ifdef PNG_USER_CHUNKS_SUPPORTED + png_voidp user_chunk_ptr PNG_DEPSTRUCT; + png_user_chunk_ptr read_user_chunk_fn PNG_DEPSTRUCT; /* user read + chunk handler */ +#endif + +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED + int num_chunk_list PNG_DEPSTRUCT; + png_bytep chunk_list PNG_DEPSTRUCT; +#endif + +/* New members added in libpng-1.0.3 */ +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED + png_byte rgb_to_gray_status PNG_DEPSTRUCT; + /* These were changed from png_byte in libpng-1.0.6 */ + png_uint_16 rgb_to_gray_red_coeff PNG_DEPSTRUCT; + png_uint_16 rgb_to_gray_green_coeff PNG_DEPSTRUCT; + png_uint_16 rgb_to_gray_blue_coeff PNG_DEPSTRUCT; +#endif + +/* New member added in libpng-1.0.4 (renamed in 1.0.9) */ +#if defined(PNG_MNG_FEATURES_SUPPORTED) || \ + defined(PNG_READ_EMPTY_PLTE_SUPPORTED) || \ + defined(PNG_WRITE_EMPTY_PLTE_SUPPORTED) +/* Changed from png_byte to png_uint_32 at version 1.2.0 */ + png_uint_32 mng_features_permitted PNG_DEPSTRUCT; +#endif + +/* New member added in libpng-1.0.7 */ +#if defined(PNG_READ_GAMMA_SUPPORTED) || defined(PNG_READ_BACKGROUND_SUPPORTED) + png_fixed_point int_gamma PNG_DEPSTRUCT; +#endif + +/* New member added in libpng-1.0.9, ifdef'ed out in 1.0.12, enabled in 1.2.0 */ +#ifdef PNG_MNG_FEATURES_SUPPORTED + png_byte filter_type PNG_DEPSTRUCT; +#endif + +/* New members added in libpng-1.2.0 */ + +/* New members added in libpng-1.0.2 but first enabled by default in 1.2.0 */ +#ifdef PNG_USER_MEM_SUPPORTED + png_voidp mem_ptr PNG_DEPSTRUCT; /* user supplied struct for + mem functions */ + png_malloc_ptr malloc_fn PNG_DEPSTRUCT; /* function for + allocating memory */ + png_free_ptr free_fn PNG_DEPSTRUCT; /* function for + freeing memory */ +#endif + +/* New member added in libpng-1.0.13 and 1.2.0 */ + png_bytep big_row_buf PNG_DEPSTRUCT; /* buffer to save current + (unfiltered) row */ + +#ifdef PNG_READ_QUANTIZE_SUPPORTED +/* The following three members were added at version 1.0.14 and 1.2.4 */ + png_bytep quantize_sort PNG_DEPSTRUCT; /* working sort array */ + png_bytep index_to_palette PNG_DEPSTRUCT; /* where the original + index currently is + in the palette */ + png_bytep palette_to_index PNG_DEPSTRUCT; /* which original index + points to this + palette color */ +#endif + +/* New members added in libpng-1.0.16 and 1.2.6 */ + png_byte compression_type PNG_DEPSTRUCT; + +#ifdef PNG_USER_LIMITS_SUPPORTED + png_uint_32 user_width_max PNG_DEPSTRUCT; + png_uint_32 user_height_max PNG_DEPSTRUCT; + /* Added in libpng-1.4.0: Total number of sPLT, text, and unknown + * chunks that can be stored (0 means unlimited). + */ + png_uint_32 user_chunk_cache_max PNG_DEPSTRUCT; +#endif + +/* New member added in libpng-1.0.25 and 1.2.17 */ +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED + /* Storage for unknown chunk that the library doesn't recognize. */ + png_unknown_chunk unknown_chunk PNG_DEPSTRUCT; +#endif + +/* New members added in libpng-1.2.26 */ + png_uint_32 old_big_row_buf_size PNG_DEPSTRUCT; + png_uint_32 old_prev_row_size PNG_DEPSTRUCT; + +/* New member added in libpng-1.2.30 */ + png_charp chunkdata PNG_DEPSTRUCT; /* buffer for reading chunk data */ + +#ifdef PNG_IO_STATE_SUPPORTED +/* New member added in libpng-1.4.0 */ + png_uint_32 io_state PNG_DEPSTRUCT; +#endif +}; + + +/* This triggers a compiler error in png.c, if png.c and png.h + * do not agree upon the version number. + */ +typedef png_structp version_1_4_4; + +typedef png_struct FAR * FAR * png_structpp; + +/* Here are the function definitions most commonly used. This is not + * the place to find out how to use libpng. See libpng.txt for the + * full explanation, see example.c for the summary. This just provides + * a simple one line description of the use of each function. + */ + +/* Returns the version number of the library */ +PNG_EXPORT(png_uint_32,png_access_version_number) PNGARG((void)); + +/* Tell lib we have already handled the first <num_bytes> magic bytes. + * Handling more than 8 bytes from the beginning of the file is an error. + */ +PNG_EXPORT(void,png_set_sig_bytes) PNGARG((png_structp png_ptr, + int num_bytes)); + +/* Check sig[start] through sig[start + num_to_check - 1] to see if it's a + * PNG file. Returns zero if the supplied bytes match the 8-byte PNG + * signature, and non-zero otherwise. Having num_to_check == 0 or + * start > 7 will always fail (ie return non-zero). + */ +PNG_EXPORT(int,png_sig_cmp) PNGARG((png_bytep sig, png_size_t start, + png_size_t num_to_check)); + +/* Simple signature checking function. This is the same as calling + * png_check_sig(sig, n) := !png_sig_cmp(sig, 0, n). + */ +#define png_check_sig(sig,n) !png_sig_cmp((sig), 0, (n)) + +/* Allocate and initialize png_ptr struct for reading, and any other memory. */ +PNG_EXPORT(png_structp,png_create_read_struct) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED; + +/* Allocate and initialize png_ptr struct for writing, and any other memory */ +PNG_EXPORT(png_structp,png_create_write_struct) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn)) PNG_ALLOCATED; + +PNG_EXPORT(png_size_t,png_get_compression_buffer_size) + PNGARG((png_structp png_ptr)); + +PNG_EXPORT(void,png_set_compression_buffer_size) + PNGARG((png_structp png_ptr, png_size_t size)); + +/* Moved from pngconf.h in 1.4.0 and modified to ensure setjmp/longjmp + * match up. + */ +#ifdef PNG_SETJMP_SUPPORTED +/* This function returns the jmp_buf built in to *png_ptr. It must be + * supplied with an appropriate 'longjmp' function to use on that jmp_buf + * unless the default error function is overridden in which case NULL is + * acceptable. The size of the jmp_buf is checked against the actual size + * allocated by the library - the call will return NULL on a mismatch + * indicating an ABI mismatch. + */ +PNG_EXPORT(jmp_buf*, png_set_longjmp_fn) + PNGARG((png_structp png_ptr, png_longjmp_ptr longjmp_fn, size_t + jmp_buf_size)); +# define png_jmpbuf(png_ptr) \ + (*png_set_longjmp_fn((png_ptr), longjmp, sizeof (jmp_buf))) +#else +# define png_jmpbuf(png_ptr) \ + (LIBPNG_WAS_COMPILED_WITH__PNG_NO_SETJMP) +#endif + +#ifdef PNG_READ_SUPPORTED +/* Reset the compression stream */ +PNG_EXPORT(int,png_reset_zstream) PNGARG((png_structp png_ptr)); +#endif + +/* New functions added in libpng-1.0.2 (not enabled by default until 1.2.0) */ +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORT(png_structp,png_create_read_struct_2) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED; +PNG_EXPORT(png_structp,png_create_write_struct_2) + PNGARG((png_const_charp user_png_ver, png_voidp error_ptr, + png_error_ptr error_fn, png_error_ptr warn_fn, png_voidp mem_ptr, + png_malloc_ptr malloc_fn, png_free_ptr free_fn)) PNG_ALLOCATED; +#endif + +/* Write the PNG file signature. */ +PNG_EXPORT(void,png_write_sig) PNGARG((png_structp png_ptr)); + +/* Write a PNG chunk - size, type, (optional) data, CRC. */ +PNG_EXPORT(void,png_write_chunk) PNGARG((png_structp png_ptr, + png_bytep chunk_name, png_bytep data, png_size_t length)); + +/* Write the start of a PNG chunk - length and chunk name. */ +PNG_EXPORT(void,png_write_chunk_start) PNGARG((png_structp png_ptr, + png_bytep chunk_name, png_uint_32 length)); + +/* Write the data of a PNG chunk started with png_write_chunk_start(). */ +PNG_EXPORT(void,png_write_chunk_data) PNGARG((png_structp png_ptr, + png_bytep data, png_size_t length)); + +/* Finish a chunk started with png_write_chunk_start() (includes CRC). */ +PNG_EXPORT(void,png_write_chunk_end) PNGARG((png_structp png_ptr)); + +/* Allocate and initialize the info structure */ +PNG_EXPORT(png_infop,png_create_info_struct) + PNGARG((png_structp png_ptr)) PNG_ALLOCATED; + +PNG_EXPORT(void,png_info_init_3) PNGARG((png_infopp info_ptr, + png_size_t png_info_struct_size)); + +/* Writes all the PNG information before the image. */ +PNG_EXPORT(void,png_write_info_before_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +PNG_EXPORT(void,png_write_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the information before the actual image data. */ +PNG_EXPORT(void,png_read_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif + +#ifdef PNG_TIME_RFC1123_SUPPORTED +PNG_EXPORT(png_charp,png_convert_to_rfc1123) + PNGARG((png_structp png_ptr, png_timep ptime)); +#endif + +#ifdef PNG_CONVERT_tIME_SUPPORTED +/* Convert from a struct tm to png_time */ +PNG_EXPORT(void,png_convert_from_struct_tm) PNGARG((png_timep ptime, + struct tm FAR * ttime)); + +/* Convert from time_t to png_time. Uses gmtime() */ +PNG_EXPORT(void,png_convert_from_time_t) PNGARG((png_timep ptime, + time_t ttime)); +#endif /* PNG_CONVERT_tIME_SUPPORTED */ + +#ifdef PNG_READ_EXPAND_SUPPORTED +/* Expand data to 24-bit RGB, or 8-bit grayscale, with alpha if available. */ +PNG_EXPORT(void,png_set_expand) PNGARG((png_structp png_ptr)); +PNG_EXPORT(void,png_set_expand_gray_1_2_4_to_8) PNGARG((png_structp + png_ptr)); +PNG_EXPORT(void,png_set_palette_to_rgb) PNGARG((png_structp png_ptr)); +PNG_EXPORT(void,png_set_tRNS_to_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_BGR_SUPPORTED) || defined(PNG_WRITE_BGR_SUPPORTED) +/* Use blue, green, red order for pixels. */ +PNG_EXPORT(void,png_set_bgr) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_GRAY_TO_RGB_SUPPORTED +/* Expand the grayscale to 24-bit RGB if necessary. */ +PNG_EXPORT(void,png_set_gray_to_rgb) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_RGB_TO_GRAY_SUPPORTED +/* Reduce RGB to grayscale. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(void,png_set_rgb_to_gray) PNGARG((png_structp png_ptr, + int error_action, double red, double green )); +#endif +PNG_EXPORT(void,png_set_rgb_to_gray_fixed) PNGARG((png_structp png_ptr, + int error_action, png_fixed_point red, png_fixed_point green )); +PNG_EXPORT(png_byte,png_get_rgb_to_gray_status) PNGARG((png_structp + png_ptr)); +#endif + +PNG_EXPORT(void,png_build_grayscale_palette) PNGARG((int bit_depth, + png_colorp palette)); + +#ifdef PNG_READ_STRIP_ALPHA_SUPPORTED +PNG_EXPORT(void,png_set_strip_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SWAP_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_SWAP_ALPHA_SUPPORTED) +PNG_EXPORT(void,png_set_swap_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_ALPHA_SUPPORTED) || \ + defined(PNG_WRITE_INVERT_ALPHA_SUPPORTED) +PNG_EXPORT(void,png_set_invert_alpha) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_FILLER_SUPPORTED) || defined(PNG_WRITE_FILLER_SUPPORTED) +/* Add a filler byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(void,png_set_filler) PNGARG((png_structp png_ptr, + png_uint_32 filler, int flags)); +/* The values of the PNG_FILLER_ defines should NOT be changed */ +#define PNG_FILLER_BEFORE 0 +#define PNG_FILLER_AFTER 1 +/* Add an alpha byte to 8-bit Gray or 24-bit RGB images. */ +PNG_EXPORT(void,png_set_add_alpha) PNGARG((png_structp png_ptr, + png_uint_32 filler, int flags)); +#endif /* PNG_READ_FILLER_SUPPORTED || PNG_WRITE_FILLER_SUPPORTED */ + +#if defined(PNG_READ_SWAP_SUPPORTED) || defined(PNG_WRITE_SWAP_SUPPORTED) +/* Swap bytes in 16-bit depth files. */ +PNG_EXPORT(void,png_set_swap) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACK_SUPPORTED) || defined(PNG_WRITE_PACK_SUPPORTED) +/* Use 1 byte per pixel in 1, 2, or 4-bit depth files. */ +PNG_EXPORT(void,png_set_packing) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_PACKSWAP_SUPPORTED) || \ + defined(PNG_WRITE_PACKSWAP_SUPPORTED) +/* Swap packing order of pixels in bytes. */ +PNG_EXPORT(void,png_set_packswap) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_SHIFT_SUPPORTED) || defined(PNG_WRITE_SHIFT_SUPPORTED) +/* Converts files to legal bit depths. */ +PNG_EXPORT(void,png_set_shift) PNGARG((png_structp png_ptr, + png_color_8p true_bits)); +#endif + +#if defined(PNG_READ_INTERLACING_SUPPORTED) || \ + defined(PNG_WRITE_INTERLACING_SUPPORTED) +/* Have the code handle the interlacing. Returns the number of passes. */ +PNG_EXPORT(int,png_set_interlace_handling) PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_READ_INVERT_SUPPORTED) || defined(PNG_WRITE_INVERT_SUPPORTED) +/* Invert monochrome files */ +PNG_EXPORT(void,png_set_invert_mono) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_BACKGROUND_SUPPORTED +/* Handle alpha and tRNS by replacing with a background color. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(void,png_set_background) PNGARG((png_structp png_ptr, + png_color_16p background_color, int background_gamma_code, + int need_expand, double background_gamma)); +#endif +#define PNG_BACKGROUND_GAMMA_UNKNOWN 0 +#define PNG_BACKGROUND_GAMMA_SCREEN 1 +#define PNG_BACKGROUND_GAMMA_FILE 2 +#define PNG_BACKGROUND_GAMMA_UNIQUE 3 +#endif + +#ifdef PNG_READ_16_TO_8_SUPPORTED +/* Strip the second byte of information from a 16-bit depth file. */ +PNG_EXPORT(void,png_set_strip_16) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_QUANTIZE_SUPPORTED +/* Turn on quantizing, and reduce the palette to the number of colors + * available. Prior to libpng-1.4.2, this was png_set_dither(). + */ +PNG_EXPORT(void,png_set_quantize) PNGARG((png_structp png_ptr, + png_colorp palette, int num_palette, int maximum_colors, + png_uint_16p histogram, int full_quantize)); +#endif +/* This migration aid will be removed from libpng-1.5.0 */ +#define png_set_dither png_set_quantize + +#ifdef PNG_READ_GAMMA_SUPPORTED +/* Handle gamma correction. Screen_gamma=(display_exponent) */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(void,png_set_gamma) PNGARG((png_structp png_ptr, + double screen_gamma, double default_file_gamma)); +#endif +#endif + + +#ifdef PNG_WRITE_FLUSH_SUPPORTED +/* Set how many lines between output flushes - 0 for no flushing */ +PNG_EXPORT(void,png_set_flush) PNGARG((png_structp png_ptr, int nrows)); +/* Flush the current PNG output buffer */ +PNG_EXPORT(void,png_write_flush) PNGARG((png_structp png_ptr)); +#endif + +/* Optional update palette with requested transformations */ +PNG_EXPORT(void,png_start_read_image) PNGARG((png_structp png_ptr)); + +/* Optional call to update the users info structure */ +PNG_EXPORT(void,png_read_update_info) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read one or more rows of image data. */ +PNG_EXPORT(void,png_read_rows) PNGARG((png_structp png_ptr, + png_bytepp row, png_bytepp display_row, png_uint_32 num_rows)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read a row of data. */ +PNG_EXPORT(void,png_read_row) PNGARG((png_structp png_ptr, + png_bytep row, + png_bytep display_row)); +#endif + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the whole image into memory at once. */ +PNG_EXPORT(void,png_read_image) PNGARG((png_structp png_ptr, + png_bytepp image)); +#endif + +/* Write a row of image data */ +PNG_EXPORT(void,png_write_row) PNGARG((png_structp png_ptr, + png_bytep row)); + +/* Write a few rows of image data */ +PNG_EXPORT(void,png_write_rows) PNGARG((png_structp png_ptr, + png_bytepp row, png_uint_32 num_rows)); + +/* Write the image data */ +PNG_EXPORT(void,png_write_image) PNGARG((png_structp png_ptr, + png_bytepp image)); + +/* Write the end of the PNG file. */ +PNG_EXPORT(void,png_write_end) PNGARG((png_structp png_ptr, + png_infop info_ptr)); + +#ifdef PNG_SEQUENTIAL_READ_SUPPORTED +/* Read the end of the PNG file. */ +PNG_EXPORT(void,png_read_end) PNGARG((png_structp png_ptr, + png_infop info_ptr)); +#endif + +/* Free any memory associated with the png_info_struct */ +PNG_EXPORT(void,png_destroy_info_struct) PNGARG((png_structp png_ptr, + png_infopp info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(void,png_destroy_read_struct) PNGARG((png_structpp + png_ptr_ptr, png_infopp info_ptr_ptr, png_infopp end_info_ptr_ptr)); + +/* Free any memory associated with the png_struct and the png_info_structs */ +PNG_EXPORT(void,png_destroy_write_struct) + PNGARG((png_structpp png_ptr_ptr, png_infopp info_ptr_ptr)); + +/* Set the libpng method of handling chunk CRC errors */ +PNG_EXPORT(void,png_set_crc_action) PNGARG((png_structp png_ptr, + int crit_action, int ancil_action)); + +/* Values for png_set_crc_action() to say how to handle CRC errors in + * ancillary and critical chunks, and whether to use the data contained + * therein. Note that it is impossible to "discard" data in a critical + * chunk. For versions prior to 0.90, the action was always error/quit, + * whereas in version 0.90 and later, the action for CRC errors in ancillary + * chunks is warn/discard. These values should NOT be changed. + * + * value action:critical action:ancillary + */ +#define PNG_CRC_DEFAULT 0 /* error/quit warn/discard data */ +#define PNG_CRC_ERROR_QUIT 1 /* error/quit error/quit */ +#define PNG_CRC_WARN_DISCARD 2 /* (INVALID) warn/discard data */ +#define PNG_CRC_WARN_USE 3 /* warn/use data warn/use data */ +#define PNG_CRC_QUIET_USE 4 /* quiet/use data quiet/use data */ +#define PNG_CRC_NO_CHANGE 5 /* use current value use current value */ + +/* These functions give the user control over the scan-line filtering in + * libpng and the compression methods used by zlib. These functions are + * mainly useful for testing, as the defaults should work with most users. + * Those users who are tight on memory or want faster performance at the + * expense of compression can modify them. See the compression library + * header file (zlib.h) for an explination of the compression functions. + */ + +/* Set the filtering method(s) used by libpng. Currently, the only valid + * value for "method" is 0. + */ +PNG_EXPORT(void,png_set_filter) PNGARG((png_structp png_ptr, int method, + int filters)); + +/* Flags for png_set_filter() to say which filters to use. The flags + * are chosen so that they don't conflict with real filter types + * below, in case they are supplied instead of the #defined constants. + * These values should NOT be changed. + */ +#define PNG_NO_FILTERS 0x00 +#define PNG_FILTER_NONE 0x08 +#define PNG_FILTER_SUB 0x10 +#define PNG_FILTER_UP 0x20 +#define PNG_FILTER_AVG 0x40 +#define PNG_FILTER_PAETH 0x80 +#define PNG_ALL_FILTERS (PNG_FILTER_NONE | PNG_FILTER_SUB | PNG_FILTER_UP | \ + PNG_FILTER_AVG | PNG_FILTER_PAETH) + +/* Filter values (not flags) - used in pngwrite.c, pngwutil.c for now. + * These defines should NOT be changed. + */ +#define PNG_FILTER_VALUE_NONE 0 +#define PNG_FILTER_VALUE_SUB 1 +#define PNG_FILTER_VALUE_UP 2 +#define PNG_FILTER_VALUE_AVG 3 +#define PNG_FILTER_VALUE_PAETH 4 +#define PNG_FILTER_VALUE_LAST 5 + +#ifdef PNG_WRITE_WEIGHTED_FILTER_SUPPORTED /* EXPERIMENTAL */ +/* The "heuristic_method" is given by one of the PNG_FILTER_HEURISTIC_ + * defines, either the default (minimum-sum-of-absolute-differences), or + * the experimental method (weighted-minimum-sum-of-absolute-differences). + * + * Weights are factors >= 1.0, indicating how important it is to keep the + * filter type consistent between rows. Larger numbers mean the current + * filter is that many times as likely to be the same as the "num_weights" + * previous filters. This is cumulative for each previous row with a weight. + * There needs to be "num_weights" values in "filter_weights", or it can be + * NULL if the weights aren't being specified. Weights have no influence on + * the selection of the first row filter. Well chosen weights can (in theory) + * improve the compression for a given image. + * + * Costs are factors >= 1.0 indicating the relative decoding costs of a + * filter type. Higher costs indicate more decoding expense, and are + * therefore less likely to be selected over a filter with lower computational + * costs. There needs to be a value in "filter_costs" for each valid filter + * type (given by PNG_FILTER_VALUE_LAST), or it can be NULL if you aren't + * setting the costs. Costs try to improve the speed of decompression without + * unduly increasing the compressed image size. + * + * A negative weight or cost indicates the default value is to be used, and + * values in the range [0.0, 1.0) indicate the value is to remain unchanged. + * The default values for both weights and costs are currently 1.0, but may + * change if good general weighting/cost heuristics can be found. If both + * the weights and costs are set to 1.0, this degenerates the WEIGHTED method + * to the UNWEIGHTED method, but with added encoding time/computation. + */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(void,png_set_filter_heuristics) PNGARG((png_structp png_ptr, + int heuristic_method, int num_weights, png_doublep filter_weights, + png_doublep filter_costs)); +#endif +#endif /* PNG_WRITE_WEIGHTED_FILTER_SUPPORTED */ + +/* Heuristic used for row filter selection. These defines should NOT be + * changed. + */ +#define PNG_FILTER_HEURISTIC_DEFAULT 0 /* Currently "UNWEIGHTED" */ +#define PNG_FILTER_HEURISTIC_UNWEIGHTED 1 /* Used by libpng < 0.95 */ +#define PNG_FILTER_HEURISTIC_WEIGHTED 2 /* Experimental feature */ +#define PNG_FILTER_HEURISTIC_LAST 3 /* Not a valid value */ + +/* Set the library compression level. Currently, valid values range from + * 0 - 9, corresponding directly to the zlib compression levels 0 - 9 + * (0 - no compression, 9 - "maximal" compression). Note that tests have + * shown that zlib compression levels 3-6 usually perform as well as level 9 + * for PNG images, and do considerably fewer caclulations. In the future, + * these values may not correspond directly to the zlib compression levels. + */ +PNG_EXPORT(void,png_set_compression_level) PNGARG((png_structp png_ptr, + int level)); + +PNG_EXPORT(void,png_set_compression_mem_level) + PNGARG((png_structp png_ptr, int mem_level)); + +PNG_EXPORT(void,png_set_compression_strategy) + PNGARG((png_structp png_ptr, int strategy)); + +PNG_EXPORT(void,png_set_compression_window_bits) + PNGARG((png_structp png_ptr, int window_bits)); + +PNG_EXPORT(void,png_set_compression_method) PNGARG((png_structp png_ptr, + int method)); + +/* These next functions are called for input/output, memory, and error + * handling. They are in the file pngrio.c, pngwio.c, and pngerror.c, + * and call standard C I/O routines such as fread(), fwrite(), and + * fprintf(). These functions can be made to use other I/O routines + * at run time for those applications that need to handle I/O in a + * different manner by calling png_set_???_fn(). See libpng.txt for + * more information. + */ + +#ifdef PNG_STDIO_SUPPORTED +/* Initialize the input/output for the PNG file to the default functions. */ +PNG_EXPORT(void,png_init_io) PNGARG((png_structp png_ptr, + png_FILE_p fp)); +#endif + +/* Replace the (error and abort), and warning functions with user + * supplied functions. If no messages are to be printed you must still + * write and use replacement functions. The replacement error_fn should + * still do a longjmp to the last setjmp location if you are using this + * method of error handling. If error_fn or warning_fn is NULL, the + * default function will be used. + */ + +PNG_EXPORT(void,png_set_error_fn) PNGARG((png_structp png_ptr, + png_voidp error_ptr, png_error_ptr error_fn, png_error_ptr warning_fn)); + +/* Return the user pointer associated with the error functions */ +PNG_EXPORT(png_voidp,png_get_error_ptr) PNGARG((png_structp png_ptr)); + +/* Replace the default data output functions with a user supplied one(s). + * If buffered output is not used, then output_flush_fn can be set to NULL. + * If PNG_WRITE_FLUSH_SUPPORTED is not defined at libpng compile time + * output_flush_fn will be ignored (and thus can be NULL). + * It is probably a mistake to use NULL for output_flush_fn if + * write_data_fn is not also NULL unless you have built libpng with + * PNG_WRITE_FLUSH_SUPPORTED undefined, because in this case libpng's + * default flush function, which uses the standard *FILE structure, will + * be used. + */ +PNG_EXPORT(void,png_set_write_fn) PNGARG((png_structp png_ptr, + png_voidp io_ptr, png_rw_ptr write_data_fn, png_flush_ptr output_flush_fn)); + +/* Replace the default data input function with a user supplied one. */ +PNG_EXPORT(void,png_set_read_fn) PNGARG((png_structp png_ptr, + png_voidp io_ptr, png_rw_ptr read_data_fn)); + +/* Return the user pointer associated with the I/O functions */ +PNG_EXPORT(png_voidp,png_get_io_ptr) PNGARG((png_structp png_ptr)); + +PNG_EXPORT(void,png_set_read_status_fn) PNGARG((png_structp png_ptr, + png_read_status_ptr read_row_fn)); + +PNG_EXPORT(void,png_set_write_status_fn) PNGARG((png_structp png_ptr, + png_write_status_ptr write_row_fn)); + +#ifdef PNG_USER_MEM_SUPPORTED +/* Replace the default memory allocation functions with user supplied one(s). */ +PNG_EXPORT(void,png_set_mem_fn) PNGARG((png_structp png_ptr, + png_voidp mem_ptr, png_malloc_ptr malloc_fn, png_free_ptr free_fn)); +/* Return the user pointer associated with the memory functions */ +PNG_EXPORT(png_voidp,png_get_mem_ptr) PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(void,png_set_read_user_transform_fn) PNGARG((png_structp + png_ptr, png_user_transform_ptr read_user_transform_fn)); +#endif + +#ifdef PNG_WRITE_USER_TRANSFORM_SUPPORTED +PNG_EXPORT(void,png_set_write_user_transform_fn) PNGARG((png_structp + png_ptr, png_user_transform_ptr write_user_transform_fn)); +#endif + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +PNG_EXPORT(void,png_set_user_transform_info) PNGARG((png_structp + png_ptr, png_voidp user_transform_ptr, int user_transform_depth, + int user_transform_channels)); +/* Return the user pointer associated with the user transform functions */ +PNG_EXPORT(png_voidp,png_get_user_transform_ptr) + PNGARG((png_structp png_ptr)); +#endif + +#ifdef PNG_USER_CHUNKS_SUPPORTED +PNG_EXPORT(void,png_set_read_user_chunk_fn) PNGARG((png_structp png_ptr, + png_voidp user_chunk_ptr, png_user_chunk_ptr read_user_chunk_fn)); +PNG_EXPORT(png_voidp,png_get_user_chunk_ptr) PNGARG((png_structp + png_ptr)); +#endif + +#ifdef PNG_PROGRESSIVE_READ_SUPPORTED +/* Sets the function callbacks for the push reader, and a pointer to a + * user-defined structure available to the callback functions. + */ +PNG_EXPORT(void,png_set_progressive_read_fn) PNGARG((png_structp png_ptr, + png_voidp progressive_ptr, + png_progressive_info_ptr info_fn, png_progressive_row_ptr row_fn, + png_progressive_end_ptr end_fn)); + +/* Returns the user pointer associated with the push read functions */ +PNG_EXPORT(png_voidp,png_get_progressive_ptr) + PNGARG((png_structp png_ptr)); + +/* Function to be called when data becomes available */ +PNG_EXPORT(void,png_process_data) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep buffer, png_size_t buffer_size)); + +/* Function that combines rows. Not very much different than the + * png_combine_row() call. Is this even used????? + */ +PNG_EXPORT(void,png_progressive_combine_row) PNGARG((png_structp png_ptr, + png_bytep old_row, png_bytep new_row)); +#endif /* PNG_PROGRESSIVE_READ_SUPPORTED */ + +PNG_EXPORT(png_voidp,png_malloc) PNGARG((png_structp png_ptr, + png_alloc_size_t size)) PNG_ALLOCATED; +/* Added at libpng version 1.4.0 */ +PNG_EXPORT(png_voidp,png_calloc) PNGARG((png_structp png_ptr, + png_alloc_size_t size)) PNG_ALLOCATED; + +/* Added at libpng version 1.2.4 */ +PNG_EXPORT(png_voidp,png_malloc_warn) PNGARG((png_structp png_ptr, + png_alloc_size_t size)) PNG_ALLOCATED; + +/* Frees a pointer allocated by png_malloc() */ +PNG_EXPORT(void,png_free) PNGARG((png_structp png_ptr, png_voidp ptr)); + +/* Free data that was allocated internally */ +PNG_EXPORT(void,png_free_data) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 free_me, int num)); +/* Reassign responsibility for freeing existing data, whether allocated + * by libpng or by the application */ +PNG_EXPORT(void,png_data_freer) PNGARG((png_structp png_ptr, + png_infop info_ptr, int freer, png_uint_32 mask)); +/* Assignments for png_data_freer */ +#define PNG_DESTROY_WILL_FREE_DATA 1 +#define PNG_SET_WILL_FREE_DATA 1 +#define PNG_USER_WILL_FREE_DATA 2 +/* Flags for png_ptr->free_me and info_ptr->free_me */ +#define PNG_FREE_HIST 0x0008 +#define PNG_FREE_ICCP 0x0010 +#define PNG_FREE_SPLT 0x0020 +#define PNG_FREE_ROWS 0x0040 +#define PNG_FREE_PCAL 0x0080 +#define PNG_FREE_SCAL 0x0100 +#define PNG_FREE_UNKN 0x0200 +#define PNG_FREE_LIST 0x0400 +#define PNG_FREE_PLTE 0x1000 +#define PNG_FREE_TRNS 0x2000 +#define PNG_FREE_TEXT 0x4000 +#define PNG_FREE_ALL 0x7fff +#define PNG_FREE_MUL 0x4220 /* PNG_FREE_SPLT|PNG_FREE_TEXT|PNG_FREE_UNKN */ + +#ifdef PNG_USER_MEM_SUPPORTED +PNG_EXPORT(png_voidp,png_malloc_default) PNGARG((png_structp png_ptr, + png_alloc_size_t size)) PNG_ALLOCATED; +PNG_EXPORT(void,png_free_default) PNGARG((png_structp png_ptr, + png_voidp ptr)); +#endif + +#ifndef PNG_NO_ERROR_TEXT +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORT(void,png_error) PNGARG((png_structp png_ptr, + png_const_charp error_message)) PNG_NORETURN; + +/* The same, but the chunk name is prepended to the error string. */ +PNG_EXPORT(void,png_chunk_error) PNGARG((png_structp png_ptr, + png_const_charp error_message)) PNG_NORETURN; + +#else +/* Fatal error in PNG image of libpng - can't continue */ +PNG_EXPORT(void,png_err) PNGARG((png_structp png_ptr)) PNG_NORETURN; +#endif + +/* Non-fatal error in libpng. Can continue, but may have a problem. */ +PNG_EXPORT(void,png_warning) PNGARG((png_structp png_ptr, + png_const_charp warning_message)); + +/* Non-fatal error in libpng, chunk name is prepended to message. */ +PNG_EXPORT(void,png_chunk_warning) PNGARG((png_structp png_ptr, + png_const_charp warning_message)); + +#ifdef PNG_BENIGN_ERRORS_SUPPORTED +/* Benign error in libpng. Can continue, but may have a problem. + * User can choose whether to handle as a fatal error or as a warning. */ +PNG_EXPORT(void,png_benign_error) PNGARG((png_structp png_ptr, + png_const_charp warning_message)); + +/* Same, chunk name is prepended to message. */ +PNG_EXPORT(void,png_chunk_benign_error) PNGARG((png_structp png_ptr, + png_const_charp warning_message)); + +PNG_EXPORT(void,png_set_benign_errors) PNGARG((png_structp + png_ptr, int allowed)); +#endif + +/* The png_set_<chunk> functions are for storing values in the png_info_struct. + * Similarly, the png_get_<chunk> calls are used to read values from the + * png_info_struct, either storing the parameters in the passed variables, or + * setting pointers into the png_info_struct where the data is stored. The + * png_get_<chunk> functions return a non-zero value if the data was available + * in info_ptr, or return zero and do not change any of the parameters if the + * data was not available. + * + * These functions should be used instead of directly accessing png_info + * to avoid problems with future changes in the size and internal layout of + * png_info_struct. + */ +/* Returns "flag" if chunk data is valid in info_ptr. */ +PNG_EXPORT(png_uint_32,png_get_valid) PNGARG((png_structp png_ptr, +png_infop info_ptr, png_uint_32 flag)); + +/* Returns number of bytes needed to hold a transformed row. */ +PNG_EXPORT(png_size_t,png_get_rowbytes) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* Returns row_pointers, which is an array of pointers to scanlines that was + * returned from png_read_png(). + */ +PNG_EXPORT(png_bytepp,png_get_rows) PNGARG((png_structp png_ptr, +png_infop info_ptr)); +/* Set row_pointers, which is an array of pointers to scanlines for use + * by png_write_png(). + */ +PNG_EXPORT(void,png_set_rows) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytepp row_pointers)); +#endif + +/* Returns number of color channels in image. */ +PNG_EXPORT(png_byte,png_get_channels) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_EASY_ACCESS_SUPPORTED +/* Returns image width in pixels. */ +PNG_EXPORT(png_uint_32, png_get_image_width) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image height in pixels. */ +PNG_EXPORT(png_uint_32, png_get_image_height) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image bit_depth. */ +PNG_EXPORT(png_byte, png_get_bit_depth) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image color_type. */ +PNG_EXPORT(png_byte, png_get_color_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image filter_type. */ +PNG_EXPORT(png_byte, png_get_filter_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image interlace_type. */ +PNG_EXPORT(png_byte, png_get_interlace_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image compression_type. */ +PNG_EXPORT(png_byte, png_get_compression_type) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns image resolution in pixels per meter, from pHYs chunk data. */ +PNG_EXPORT(png_uint_32, png_get_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +PNG_EXPORT(png_uint_32, png_get_x_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +PNG_EXPORT(png_uint_32, png_get_y_pixels_per_meter) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +/* Returns pixel aspect ratio, computed from pHYs chunk data. */ +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(float, png_get_pixel_aspect_ratio) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +#endif + +/* Returns image x, y offset in pixels or microns, from oFFs chunk data. */ +PNG_EXPORT(png_int_32, png_get_x_offset_pixels) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +PNG_EXPORT(png_int_32, png_get_y_offset_pixels) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +PNG_EXPORT(png_int_32, png_get_x_offset_microns) PNGARG((png_structp +png_ptr, png_infop info_ptr)); +PNG_EXPORT(png_int_32, png_get_y_offset_microns) PNGARG((png_structp +png_ptr, png_infop info_ptr)); + +#endif /* PNG_EASY_ACCESS_SUPPORTED */ + +/* Returns pointer to signature string read from PNG header */ +PNG_EXPORT(png_bytep,png_get_signature) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_bKGD) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_16p *background)); +#endif + +#ifdef PNG_bKGD_SUPPORTED +PNG_EXPORT(void,png_set_bKGD) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_16p background)); +#endif + +#ifdef PNG_cHRM_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, double *white_x, double *white_y, double *red_x, + double *red_y, double *green_x, double *green_y, double *blue_x, + double *blue_y)); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_cHRM_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point *int_white_x, png_fixed_point + *int_white_y, png_fixed_point *int_red_x, png_fixed_point *int_red_y, + png_fixed_point *int_green_x, png_fixed_point *int_green_y, png_fixed_point + *int_blue_x, png_fixed_point *int_blue_y)); +#endif +#endif + +#ifdef PNG_cHRM_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(void,png_set_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, double white_x, double white_y, double red_x, + double red_y, double green_x, double green_y, double blue_x, double blue_y)); +#endif +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXPORT(void,png_set_cHRM_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_white_x, png_fixed_point int_white_y, + png_fixed_point int_red_x, png_fixed_point int_red_y, png_fixed_point + int_green_x, png_fixed_point int_green_y, png_fixed_point int_blue_x, + png_fixed_point int_blue_y)); +#endif +#endif + +#ifdef PNG_gAMA_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_gAMA) PNGARG((png_structp png_ptr, + png_infop info_ptr, double *file_gamma)); +#endif +PNG_EXPORT(png_uint_32,png_get_gAMA_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point *int_file_gamma)); +#endif + +#ifdef PNG_gAMA_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(void,png_set_gAMA) PNGARG((png_structp png_ptr, + png_infop info_ptr, double file_gamma)); +#endif +PNG_EXPORT(void,png_set_gAMA_fixed) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_fixed_point int_file_gamma)); +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_hIST) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_16p *hist)); +#endif + +#ifdef PNG_hIST_SUPPORTED +PNG_EXPORT(void,png_set_hIST) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_16p hist)); +#endif + +PNG_EXPORT(png_uint_32,png_get_IHDR) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 *width, png_uint_32 *height, + int *bit_depth, int *color_type, int *interlace_method, + int *compression_method, int *filter_method)); + +PNG_EXPORT(void,png_set_IHDR) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 width, png_uint_32 height, int bit_depth, + int color_type, int interlace_method, int compression_method, + int filter_method)); + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_oFFs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_int_32 *offset_x, png_int_32 *offset_y, + int *unit_type)); +#endif + +#ifdef PNG_oFFs_SUPPORTED +PNG_EXPORT(void,png_set_oFFs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_int_32 offset_x, png_int_32 offset_y, + int unit_type)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_pCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp *purpose, png_int_32 *X0, png_int_32 *X1, + int *type, int *nparams, png_charp *units, png_charpp *params)); +#endif + +#ifdef PNG_pCAL_SUPPORTED +PNG_EXPORT(void,png_set_pCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp purpose, png_int_32 X0, png_int_32 X1, + int type, int nparams, png_charp units, png_charpp params)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_pHYs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +#endif + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(void,png_set_pHYs) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_uint_32 res_x, png_uint_32 res_y, int unit_type)); +#endif + +PNG_EXPORT(png_uint_32,png_get_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_colorp *palette, int *num_palette)); + +PNG_EXPORT(void,png_set_PLTE) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_colorp palette, int num_palette)); + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_sBIT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_8p *sig_bit)); +#endif + +#ifdef PNG_sBIT_SUPPORTED +PNG_EXPORT(void,png_set_sBIT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_color_8p sig_bit)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_sRGB) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *intent)); +#endif + +#ifdef PNG_sRGB_SUPPORTED +PNG_EXPORT(void,png_set_sRGB) PNGARG((png_structp png_ptr, + png_infop info_ptr, int intent)); +PNG_EXPORT(void,png_set_sRGB_gAMA_and_cHRM) PNGARG((png_structp png_ptr, + png_infop info_ptr, int intent)); +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_iCCP) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charpp name, int *compression_type, + png_charpp profile, png_uint_32 *proflen)); + /* Note to maintainer: profile should be png_bytepp */ +#endif + +#ifdef PNG_iCCP_SUPPORTED +PNG_EXPORT(void,png_set_iCCP) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_charp name, int compression_type, + png_charp profile, png_uint_32 proflen)); + /* Note to maintainer: profile should be png_bytep */ +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_sPLT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_sPLT_tpp entries)); +#endif + +#ifdef PNG_sPLT_SUPPORTED +PNG_EXPORT(void,png_set_sPLT) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_sPLT_tp entries, int nentries)); +#endif + +#ifdef PNG_TEXT_SUPPORTED +/* png_get_text also returns the number of text chunks in *num_text */ +PNG_EXPORT(png_uint_32,png_get_text) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_textp *text_ptr, int *num_text)); +#endif + +/* Note while png_set_text() will accept a structure whose text, + * language, and translated keywords are NULL pointers, the structure + * returned by png_get_text will always contain regular + * zero-terminated C strings. They might be empty strings but + * they will never be NULL pointers. + */ + +#ifdef PNG_TEXT_SUPPORTED +PNG_EXPORT(void,png_set_text) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_textp text_ptr, int num_text)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_tIME) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_timep *mod_time)); +#endif + +#ifdef PNG_tIME_SUPPORTED +PNG_EXPORT(void,png_set_tIME) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_timep mod_time)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_tRNS) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep *trans_alpha, int *num_trans, + png_color_16p *trans_color)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +PNG_EXPORT(void,png_set_tRNS) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_bytep trans_alpha, int num_trans, + png_color_16p trans_color)); +#endif + +#ifdef PNG_tRNS_SUPPORTED +#endif + +#ifdef PNG_sCAL_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_sCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *unit, double *width, double *height)); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_sCAL_s) PNGARG((png_structp png_ptr, + png_infop info_ptr, int *unit, png_charpp swidth, png_charpp sheight)); +#endif +#endif +#endif /* PNG_sCAL_SUPPORTED */ + +#ifdef PNG_sCAL_SUPPORTED +#ifdef PNG_FLOATING_POINT_SUPPORTED +PNG_EXPORT(void,png_set_sCAL) PNGARG((png_structp png_ptr, + png_infop info_ptr, int unit, double width, double height)); +#else +#ifdef PNG_FIXED_POINT_SUPPORTED +PNG_EXPORT(void,png_set_sCAL_s) PNGARG((png_structp png_ptr, + png_infop info_ptr, int unit, png_charp swidth, png_charp sheight)); +#endif +#endif +#endif /* PNG_sCAL_SUPPORTED || PNG_WRITE_sCAL_SUPPORTED */ + +#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +/* Provide a list of chunks and how they are to be handled, if the built-in + handling or default unknown chunk handling is not desired. Any chunks not + listed will be handled in the default manner. The IHDR and IEND chunks + must not be listed. + keep = 0: follow default behaviour + = 1: do not keep + = 2: keep only if safe-to-copy + = 3: keep even if unsafe-to-copy +*/ +PNG_EXPORT(void, png_set_keep_unknown_chunks) PNGARG((png_structp + png_ptr, int keep, png_bytep chunk_list, int num_chunks)); +PNG_EXPORT(int,png_handle_as_unknown) PNGARG((png_structp png_ptr, png_bytep + chunk_name)); +#endif +#ifdef PNG_UNKNOWN_CHUNKS_SUPPORTED +PNG_EXPORT(void, png_set_unknown_chunks) PNGARG((png_structp png_ptr, + png_infop info_ptr, png_unknown_chunkp unknowns, int num_unknowns)); +PNG_EXPORT(void, png_set_unknown_chunk_location) + PNGARG((png_structp png_ptr, png_infop info_ptr, int chunk, int location)); +PNG_EXPORT(png_uint_32,png_get_unknown_chunks) PNGARG((png_structp + png_ptr, png_infop info_ptr, png_unknown_chunkpp entries)); +#endif + +/* Png_free_data() will turn off the "valid" flag for anything it frees. + * If you need to turn it off for a chunk that your application has freed, + * you can use png_set_invalid(png_ptr, info_ptr, PNG_INFO_CHNK); + */ +PNG_EXPORT(void, png_set_invalid) PNGARG((png_structp png_ptr, + png_infop info_ptr, int mask)); + +#ifdef PNG_INFO_IMAGE_SUPPORTED +/* The "params" pointer is currently not used and is for future expansion. */ +PNG_EXPORT(void, png_read_png) PNGARG((png_structp png_ptr, + png_infop info_ptr, + int transforms, + png_voidp params)); +PNG_EXPORT(void, png_write_png) PNGARG((png_structp png_ptr, + png_infop info_ptr, + int transforms, + png_voidp params)); +#endif + +PNG_EXPORT(png_charp,png_get_copyright) PNGARG((png_structp png_ptr)); +PNG_EXPORT(png_charp,png_get_header_ver) PNGARG((png_structp png_ptr)); +PNG_EXPORT(png_charp,png_get_header_version) PNGARG((png_structp + png_ptr)); +PNG_EXPORT(png_charp,png_get_libpng_ver) PNGARG((png_structp png_ptr)); + +#ifdef PNG_MNG_FEATURES_SUPPORTED +PNG_EXPORT(png_uint_32,png_permit_mng_features) PNGARG((png_structp + png_ptr, png_uint_32 mng_features_permitted)); +#endif + +/* For use in png_set_keep_unknown, added to version 1.2.6 */ +#define PNG_HANDLE_CHUNK_AS_DEFAULT 0 +#define PNG_HANDLE_CHUNK_NEVER 1 +#define PNG_HANDLE_CHUNK_IF_SAFE 2 +#define PNG_HANDLE_CHUNK_ALWAYS 3 + +/* Strip the prepended error numbers ("#nnn ") from error and warning + * messages before passing them to the error or warning handler. + */ +#ifdef PNG_ERROR_NUMBERS_SUPPORTED +PNG_EXPORT(void,png_set_strip_error_numbers) PNGARG((png_structp + png_ptr, png_uint_32 strip_mode)); +#endif + +/* Added in libpng-1.2.6 */ +#ifdef PNG_SET_USER_LIMITS_SUPPORTED +PNG_EXPORT(void,png_set_user_limits) PNGARG((png_structp + png_ptr, png_uint_32 user_width_max, png_uint_32 user_height_max)); +PNG_EXPORT(png_uint_32,png_get_user_width_max) PNGARG((png_structp + png_ptr)); +PNG_EXPORT(png_uint_32,png_get_user_height_max) PNGARG((png_structp + png_ptr)); +/* Added in libpng-1.4.0 */ +PNG_EXPORT(void,png_set_chunk_cache_max) PNGARG((png_structp + png_ptr, png_uint_32 user_chunk_cache_max)); +PNG_EXPORT(png_uint_32,png_get_chunk_cache_max) + PNGARG((png_structp png_ptr)); +/* Added in libpng-1.4.1 */ +PNG_EXPORT(void,png_set_chunk_malloc_max) PNGARG((png_structp + png_ptr, png_alloc_size_t user_chunk_cache_max)); +PNG_EXPORT(png_alloc_size_t,png_get_chunk_malloc_max) + PNGARG((png_structp png_ptr)); +#endif + +#if defined(PNG_INCH_CONVERSIONS) && defined(PNG_FLOATING_POINT_SUPPORTED) +PNG_EXPORT(png_uint_32,png_get_pixels_per_inch) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXPORT(png_uint_32,png_get_x_pixels_per_inch) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXPORT(png_uint_32,png_get_y_pixels_per_inch) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXPORT(float,png_get_x_offset_inches) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +PNG_EXPORT(float,png_get_y_offset_inches) PNGARG((png_structp png_ptr, +png_infop info_ptr)); + +#ifdef PNG_pHYs_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_pHYs_dpi) PNGARG((png_structp png_ptr, +png_infop info_ptr, png_uint_32 *res_x, png_uint_32 *res_y, int *unit_type)); +#endif /* PNG_pHYs_SUPPORTED */ +#endif /* PNG_INCH_CONVERSIONS && PNG_FLOATING_POINT_SUPPORTED */ + +/* Added in libpng-1.4.0 */ +#ifdef PNG_IO_STATE_SUPPORTED +PNG_EXPORT(png_uint_32,png_get_io_state) PNGARG((png_structp png_ptr)); + +PNG_EXPORT(png_bytep,png_get_io_chunk_name) + PNGARG((png_structp png_ptr)); + +/* The flags returned by png_get_io_state() are the following: */ +#define PNG_IO_NONE 0x0000 /* no I/O at this moment */ +#define PNG_IO_READING 0x0001 /* currently reading */ +#define PNG_IO_WRITING 0x0002 /* currently writing */ +#define PNG_IO_SIGNATURE 0x0010 /* currently at the file signature */ +#define PNG_IO_CHUNK_HDR 0x0020 /* currently at the chunk header */ +#define PNG_IO_CHUNK_DATA 0x0040 /* currently at the chunk data */ +#define PNG_IO_CHUNK_CRC 0x0080 /* currently at the chunk crc */ +#define PNG_IO_MASK_OP 0x000f /* current operation: reading/writing */ +#define PNG_IO_MASK_LOC 0x00f0 /* current location: sig/hdr/data/crc */ +#endif /* ?PNG_IO_STATE_SUPPORTED */ + +/* Maintainer: Put new public prototypes here ^, in libpng.3, and project + * defs + */ + +#ifdef PNG_READ_COMPOSITE_NODIV_SUPPORTED +/* With these routines we avoid an integer divide, which will be slower on + * most machines. However, it does take more operations than the corresponding + * divide method, so it may be slower on a few RISC systems. There are two + * shifts (by 8 or 16 bits) and an addition, versus a single integer divide. + * + * Note that the rounding factors are NOT supposed to be the same! 128 and + * 32768 are correct for the NODIV code; 127 and 32767 are correct for the + * standard method. + * + * [Optimized code by Greg Roelofs and Mark Adler...blame us for bugs. :-) ] + */ + + /* fg and bg should be in `gamma 1.0' space; alpha is the opacity */ + +# define png_composite(composite, fg, alpha, bg) \ + { png_uint_16 temp = (png_uint_16)((png_uint_16)(fg) \ + * (png_uint_16)(alpha) \ + + (png_uint_16)(bg)*(png_uint_16)(255 \ + - (png_uint_16)(alpha)) + (png_uint_16)128); \ + (composite) = (png_byte)((temp + (temp >> 8)) >> 8); } + +# define png_composite_16(composite, fg, alpha, bg) \ + { png_uint_32 temp = (png_uint_32)((png_uint_32)(fg) \ + * (png_uint_32)(alpha) \ + + (png_uint_32)(bg)*(png_uint_32)(65535L \ + - (png_uint_32)(alpha)) + (png_uint_32)32768L); \ + (composite) = (png_uint_16)((temp + (temp >> 16)) >> 16); } + +#else /* Standard method using integer division */ + +# define png_composite(composite, fg, alpha, bg) \ + (composite) = (png_byte)(((png_uint_16)(fg) * (png_uint_16)(alpha) + \ + (png_uint_16)(bg) * (png_uint_16)(255 - (png_uint_16)(alpha)) + \ + (png_uint_16)127) / 255) + +# define png_composite_16(composite, fg, alpha, bg) \ + (composite) = (png_uint_16)(((png_uint_32)(fg) * (png_uint_32)(alpha) + \ + (png_uint_32)(bg)*(png_uint_32)(65535L - (png_uint_32)(alpha)) + \ + (png_uint_32)32767) / (png_uint_32)65535L) +#endif /* PNG_READ_COMPOSITE_NODIV_SUPPORTED */ + +#ifdef PNG_USE_READ_MACROS +/* Inline macros to do direct reads of bytes from the input buffer. + * The png_get_int_32() routine assumes we are using two's complement + * format for negative values, which is almost certainly true. + */ +# define png_get_uint_32(buf) \ + (((png_uint_32)(*(buf)) << 24) + \ + ((png_uint_32)(*((buf) + 1)) << 16) + \ + ((png_uint_32)(*((buf) + 2)) << 8) + \ + ((png_uint_32)(*((buf) + 3)))) +# define png_get_uint_16(buf) \ + (((png_uint_32)(*(buf)) << 8) + \ + ((png_uint_32)(*((buf) + 1)))) +# define png_get_int_32(buf) \ + ((png_int_32)((*(buf) & 0x80) \ + ? -((png_int_32)((png_get_uint_32(buf) ^ 0xffffffff)+1)) \ + : (png_int_32)png_get_uint_32(buf))) +#else +PNG_EXPORT(png_uint_32,png_get_uint_32) PNGARG((png_bytep buf)); +PNG_EXPORT(png_uint_16,png_get_uint_16) PNGARG((png_bytep buf)); +#ifdef PNG_GET_INT_32_SUPPORTED +PNG_EXPORT(png_int_32,png_get_int_32) PNGARG((png_bytep buf)); +#endif +#endif +PNG_EXPORT(png_uint_32,png_get_uint_31) + PNGARG((png_structp png_ptr, png_bytep buf)); +/* No png_get_int_16 -- may be added if there's a real need for it. */ + +/* Place a 32-bit number into a buffer in PNG byte order (big-endian). */ +PNG_EXPORT(void,png_save_uint_32) + PNGARG((png_bytep buf, png_uint_32 i)); +PNG_EXPORT(void,png_save_int_32) + PNGARG((png_bytep buf, png_int_32 i)); + +/* Place a 16-bit number into a buffer in PNG byte order. + * The parameter is declared unsigned int, not png_uint_16, + * just to avoid potential problems on pre-ANSI C compilers. + */ +PNG_EXPORT(void,png_save_uint_16) + PNGARG((png_bytep buf, unsigned int i)); +/* No png_save_int_16 -- may be added if there's a real need for it. */ + +/* ************************************************************************* */ + +/* Various modes of operation. Note that after an init, mode is set to + * zero automatically when the structure is created. + */ +#define PNG_HAVE_IHDR 0x01 +#define PNG_HAVE_PLTE 0x02 +#define PNG_HAVE_IDAT 0x04 +#define PNG_AFTER_IDAT 0x08 /* Have complete zlib datastream */ +#define PNG_HAVE_IEND 0x10 +#define PNG_HAVE_gAMA 0x20 +#define PNG_HAVE_cHRM 0x40 + +#ifdef __cplusplus +} +#endif + +#endif /* PNG_VERSION_INFO_ONLY */ +/* Do not put anything past this line */ +#endif /* PNG_H */ diff --git a/include/pngconf.h b/include/pngconf.h new file mode 100644 index 0000000..41b13e9 --- /dev/null +++ b/include/pngconf.h @@ -0,0 +1,1540 @@ + +/* pngconf.h - machine configurable file for libpng + * + * libpng version 1.4.4 - September 23, 2010 + * For conditions of distribution and use, see copyright notice in png.h + * Copyright (c) 1998-2010 Glenn Randers-Pehrson + * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) + * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) + * + * This code is released under the libpng license. + * For conditions of distribution and use, see the disclaimer + * and license in png.h + * + */ + +/* Any machine specific code is near the front of this file, so if you + * are configuring libpng for a machine, you may want to read the section + * starting here down to where it starts to typedef png_color, png_text, + * and png_info. + */ + +#ifndef PNGCONF_H +#define PNGCONF_H + +#ifndef PNG_NO_LIMITS_H +# include <limits.h> +#endif + +/* Added at libpng-1.2.9 */ + +/* config.h is created by and PNG_CONFIGURE_LIBPNG is set by the "configure" + * script. + */ +#ifdef PNG_CONFIGURE_LIBPNG +# ifdef HAVE_CONFIG_H +# include "config.h" +# endif +#endif + +/* + * Added at libpng-1.2.8 + * + * PNG_USER_CONFIG has to be defined on the compiler command line. This + * includes the resource compiler for Windows DLL configurations. + */ +#ifdef PNG_USER_CONFIG +# include "pngusr.h" +# ifndef PNG_USER_PRIVATEBUILD +# define PNG_USER_PRIVATEBUILD +# endif +#endif + +/* + * If you create a private DLL you should define in "pngusr.h" the following: + * #define PNG_USER_PRIVATEBUILD <Describes by whom and why this version of + * the DLL was built> + * e.g. #define PNG_USER_PRIVATEBUILD "Build by MyCompany for xyz reasons." + * #define PNG_USER_DLLFNAME_POSTFIX <two-letter postfix that serve to + * distinguish your DLL from those of the official release. These + * correspond to the trailing letters that come after the version + * number and must match your private DLL name> + * e.g. // private DLL "libpng14gx.dll" + * #define PNG_USER_DLLFNAME_POSTFIX "gx" + * + * The following macros are also at your disposal if you want to complete the + * DLL VERSIONINFO structure. + * - PNG_USER_VERSIONINFO_COMMENTS + * - PNG_USER_VERSIONINFO_COMPANYNAME + * - PNG_USER_VERSIONINFO_LEGALTRADEMARKS + */ + +#ifdef __STDC__ +# ifdef SPECIALBUILD +# pragma message("PNG_LIBPNG_SPECIALBUILD (and deprecated SPECIALBUILD)\ + are now LIBPNG reserved macros. Use PNG_USER_PRIVATEBUILD instead.") +# endif + +# ifdef PRIVATEBUILD +# pragma message("PRIVATEBUILD is deprecated.\ + Use PNG_USER_PRIVATEBUILD instead.") +# define PNG_USER_PRIVATEBUILD PRIVATEBUILD +# endif +#endif /* __STDC__ */ + +/* End of material added to libpng-1.2.8 */ + +#ifndef PNG_VERSION_INFO_ONLY + +/* This is the size of the compression buffer, and thus the size of + * an IDAT chunk. Make this whatever size you feel is best for your + * machine. One of these will be allocated per png_struct. When this + * is full, it writes the data to the disk, and does some other + * calculations. Making this an extremely small size will slow + * the library down, but you may want to experiment to determine + * where it becomes significant, if you are concerned with memory + * usage. Note that zlib allocates at least 32Kb also. For readers, + * this describes the size of the buffer available to read the data in. + * Unless this gets smaller than the size of a row (compressed), + * it should not make much difference how big this is. + */ + +#ifndef PNG_ZBUF_SIZE +# define PNG_ZBUF_SIZE 8192 +#endif + +/* Enable if you want a write-only libpng */ + +#ifndef PNG_NO_READ_SUPPORTED +# define PNG_READ_SUPPORTED +#endif + +/* Enable if you want a read-only libpng */ + +#ifndef PNG_NO_WRITE_SUPPORTED +# define PNG_WRITE_SUPPORTED +#endif + +/* Enabled in 1.4.0. */ +#ifdef PNG_ALLOW_BENIGN_ERRORS +# define png_benign_error png_warning +# define png_chunk_benign_error png_chunk_warning +#else +# ifndef PNG_BENIGN_ERRORS_SUPPORTED +# define png_benign_error png_error +# define png_chunk_benign_error png_chunk_error +# endif +#endif + +/* Added at libpng version 1.4.0 */ +#if !defined(PNG_NO_WARNINGS) && !defined(PNG_WARNINGS_SUPPORTED) +# define PNG_WARNINGS_SUPPORTED +#endif + +/* Added at libpng version 1.4.0 */ +#if !defined(PNG_NO_ERROR_TEXT) && !defined(PNG_ERROR_TEXT_SUPPORTED) +# define PNG_ERROR_TEXT_SUPPORTED +#endif + +/* Added at libpng version 1.4.0 */ +#if !defined(PNG_NO_CHECK_cHRM) && !defined(PNG_CHECK_cHRM_SUPPORTED) +# define PNG_CHECK_cHRM_SUPPORTED +#endif + +/* Added at libpng version 1.4.0 */ +#if !defined(PNG_NO_ALIGNED_MEMORY) && !defined(PNG_ALIGNED_MEMORY_SUPPORTED) +# define PNG_ALIGNED_MEMORY_SUPPORTED +#endif + +/* Enabled by default in 1.2.0. You can disable this if you don't need to + support PNGs that are embedded in MNG datastreams */ +#ifndef PNG_NO_MNG_FEATURES +# ifndef PNG_MNG_FEATURES_SUPPORTED +# define PNG_MNG_FEATURES_SUPPORTED +# endif +#endif + +/* Added at libpng version 1.4.0 */ +#ifndef PNG_NO_FLOATING_POINT_SUPPORTED +# ifndef PNG_FLOATING_POINT_SUPPORTED +# define PNG_FLOATING_POINT_SUPPORTED +# endif +#endif + +/* Added at libpng-1.4.0beta49 for testing (this test is no longer used + in libpng and png_calloc() is always present) + */ +#define PNG_CALLOC_SUPPORTED + +/* If you are running on a machine where you cannot allocate more + * than 64K of memory at once, uncomment this. While libpng will not + * normally need that much memory in a chunk (unless you load up a very + * large file), zlib needs to know how big of a chunk it can use, and + * libpng thus makes sure to check any memory allocation to verify it + * will fit into memory. +#define PNG_MAX_MALLOC_64K + */ +#if defined(MAXSEG_64K) && !defined(PNG_MAX_MALLOC_64K) +# define PNG_MAX_MALLOC_64K +#endif + +/* Special munging to support doing things the 'cygwin' way: + * 'Normal' png-on-win32 defines/defaults: + * PNG_BUILD_DLL -- building dll + * PNG_USE_DLL -- building an application, linking to dll + * (no define) -- building static library, or building an + * application and linking to the static lib + * 'Cygwin' defines/defaults: + * PNG_BUILD_DLL -- (ignored) building the dll + * (no define) -- (ignored) building an application, linking to the dll + * PNG_STATIC -- (ignored) building the static lib, or building an + * application that links to the static lib. + * ALL_STATIC -- (ignored) building various static libs, or building an + * application that links to the static libs. + * Thus, + * a cygwin user should define either PNG_BUILD_DLL or PNG_STATIC, and + * this bit of #ifdefs will define the 'correct' config variables based on + * that. If a cygwin user *wants* to define 'PNG_USE_DLL' that's okay, but + * unnecessary. + * + * Also, the precedence order is: + * ALL_STATIC (since we can't #undef something outside our namespace) + * PNG_BUILD_DLL + * PNG_STATIC + * (nothing) == PNG_USE_DLL + * + * CYGWIN (2002-01-20): The preceding is now obsolete. With the advent + * of auto-import in binutils, we no longer need to worry about + * __declspec(dllexport) / __declspec(dllimport) and friends. Therefore, + * we don't need to worry about PNG_STATIC or ALL_STATIC when it comes + * to __declspec() stuff. However, we DO need to worry about + * PNG_BUILD_DLL and PNG_STATIC because those change some defaults + * such as CONSOLE_IO. + */ +#ifdef __CYGWIN__ +# ifdef ALL_STATIC +# ifdef PNG_BUILD_DLL +# undef PNG_BUILD_DLL +# endif +# ifdef PNG_USE_DLL +# undef PNG_USE_DLL +# endif +# ifdef PNG_DLL +# undef PNG_DLL +# endif +# ifndef PNG_STATIC +# define PNG_STATIC +# endif +# else +# ifdef PNG_BUILD_DLL +# ifdef PNG_STATIC +# undef PNG_STATIC +# endif +# ifdef PNG_USE_DLL +# undef PNG_USE_DLL +# endif +# ifndef PNG_DLL +# define PNG_DLL +# endif +# else +# ifdef PNG_STATIC +# ifdef PNG_USE_DLL +# undef PNG_USE_DLL +# endif +# ifdef PNG_DLL +# undef PNG_DLL +# endif +# else +# ifndef PNG_USE_DLL +# define PNG_USE_DLL +# endif +# ifndef PNG_DLL +# define PNG_DLL +# endif +# endif +# endif +# endif +#endif + +/* This protects us against compilers that run on a windowing system + * and thus don't have or would rather us not use the stdio types: + * stdin, stdout, and stderr. The only one currently used is stderr + * in png_error() and png_warning(). #defining PNG_NO_CONSOLE_IO will + * prevent these from being compiled and used. #defining PNG_NO_STDIO + * will also prevent these, plus will prevent the entire set of stdio + * macros and functions (FILE *, printf, etc.) from being compiled and used, + * unless (PNG_DEBUG > 0) has been #defined. + * + * #define PNG_NO_CONSOLE_IO + * #define PNG_NO_STDIO + */ + +#ifdef _WIN32_WCE +# define PNG_NO_CONSOLE_IO +# define PNG_NO_STDIO +# define PNG_NO_TIME_RFC1123 +# ifdef PNG_DEBUG +# undef PNG_DEBUG +# endif +#endif + +#if !defined(PNG_NO_STDIO) && !defined(PNG_STDIO_SUPPORTED) +# define PNG_STDIO_SUPPORTED +#endif + +#ifdef PNG_BUILD_DLL +# if !defined(PNG_CONSOLE_IO_SUPPORTED) && !defined(PNG_NO_CONSOLE_IO) +# define PNG_NO_CONSOLE_IO +# endif +#endif + +# ifdef PNG_NO_STDIO +# ifndef PNG_NO_CONSOLE_IO +# define PNG_NO_CONSOLE_IO +# endif +# ifdef PNG_DEBUG +# if (PNG_DEBUG > 0) +# include <stdio.h> +# endif +# endif +# else +# include <stdio.h> +# endif + +#if !(defined PNG_NO_CONSOLE_IO) && !defined(PNG_CONSOLE_IO_SUPPORTED) +# define PNG_CONSOLE_IO_SUPPORTED +#endif + +/* This macro protects us against machines that don't have function + * prototypes (ie K&R style headers). If your compiler does not handle + * function prototypes, define this macro and use the included ansi2knr. + * I've always been able to use _NO_PROTO as the indicator, but you may + * need to drag the empty declaration out in front of here, or change the + * ifdef to suit your own needs. + */ +#ifndef PNGARG + +#ifdef OF /* zlib prototype munger */ +# define PNGARG(arglist) OF(arglist) +#else + +#ifdef _NO_PROTO +# define PNGARG(arglist) () +#else +# define PNGARG(arglist) arglist +#endif /* _NO_PROTO */ + +#endif /* OF */ + +#endif /* PNGARG */ + +/* Try to determine if we are compiling on a Mac. Note that testing for + * just __MWERKS__ is not good enough, because the Codewarrior is now used + * on non-Mac platforms. + */ +#ifndef MACOS +# if (defined(__MWERKS__) && defined(macintosh)) || defined(applec) || \ + defined(THINK_C) || defined(__SC__) || defined(TARGET_OS_MAC) +# define MACOS +# endif +#endif + +/* Enough people need this for various reasons to include it here */ +#if !defined(MACOS) && !defined(RISCOS) +# include <sys/types.h> +#endif + +/* PNG_SETJMP_NOT_SUPPORTED and PNG_NO_SETJMP_SUPPORTED are deprecated. */ +#if !defined(PNG_NO_SETJMP) && \ + !defined(PNG_SETJMP_NOT_SUPPORTED) && !defined(PNG_NO_SETJMP_SUPPORTED) +# define PNG_SETJMP_SUPPORTED +#endif + +#ifdef PNG_SETJMP_SUPPORTED +/* This is an attempt to force a single setjmp behaviour on Linux. If + * the X config stuff didn't define _BSD_SOURCE we wouldn't need this. + * + * You can bypass this test if you know that your application uses exactly + * the same setjmp.h that was included when libpng was built. Only define + * PNG_SKIP_SETJMP_CHECK while building your application, prior to the + * application's '#include "png.h"'. Don't define PNG_SKIP_SETJMP_CHECK + * while building a separate libpng library for general use. + */ + +# ifndef PNG_SKIP_SETJMP_CHECK +# ifdef __linux__ +# ifdef _BSD_SOURCE +# define PNG_SAVE_BSD_SOURCE +# undef _BSD_SOURCE +# endif +# ifdef _SETJMP_H + /* If you encounter a compiler error here, see the explanation + * near the end of INSTALL. + */ + __pngconf.h__ in libpng already includes setjmp.h; + __dont__ include it again.; +# endif +# endif /* __linux__ */ +# endif /* PNG_SKIP_SETJMP_CHECK */ + + /* Include setjmp.h for error handling */ +# include <setjmp.h> + +# ifdef __linux__ +# ifdef PNG_SAVE_BSD_SOURCE +# ifdef _BSD_SOURCE +# undef _BSD_SOURCE +# endif +# define _BSD_SOURCE +# undef PNG_SAVE_BSD_SOURCE +# endif +# endif /* __linux__ */ +#endif /* PNG_SETJMP_SUPPORTED */ + +#ifdef BSD +# include <strings.h> +#else +# include <string.h> +#endif + +/* Other defines for things like memory and the like can go here. */ + +/* This controls how fine the quantizing gets. As this allocates + * a largish chunk of memory (32K), those who are not as concerned + * with quantizing quality can decrease some or all of these. + */ + +/* Prior to libpng-1.4.2, these were PNG_DITHER_*_BITS + * These migration aids will be removed from libpng-1.5.0. + */ +#ifdef PNG_DITHER_RED_BITS +# define PNG_QUANTIZE_RED_BITS PNG_DITHER_RED_BITS +#endif +#ifdef PNG_DITHER_GREEN_BITS +# define PNG_QUANTIZE_GREEN_BITS PNG_DITHER_GREEN_BITS +#endif +#ifdef PNG_DITHER_BLUE_BITS +# define PNG_QUANTIZE_BLUE_BITS PNG_DITHER_BLUE_BITS +#endif + +#ifndef PNG_QUANTIZE_RED_BITS +# define PNG_QUANTIZE_RED_BITS 5 +#endif +#ifndef PNG_QUANTIZE_GREEN_BITS +# define PNG_QUANTIZE_GREEN_BITS 5 +#endif +#ifndef PNG_QUANTIZE_BLUE_BITS +# define PNG_QUANTIZE_BLUE_BITS 5 +#endif + +/* This controls how fine the gamma correction becomes when you + * are only interested in 8 bits anyway. Increasing this value + * results in more memory being used, and more pow() functions + * being called to fill in the gamma tables. Don't set this value + * less then 8, and even that may not work (I haven't tested it). + */ + +#ifndef PNG_MAX_GAMMA_8 +# define PNG_MAX_GAMMA_8 11 +#endif + +/* This controls how much a difference in gamma we can tolerate before + * we actually start doing gamma conversion. + */ +#ifndef PNG_GAMMA_THRESHOLD +# define PNG_GAMMA_THRESHOLD 0.05 +#endif + +/* The following uses const char * instead of char * for error + * and warning message functions, so some compilers won't complain. + * If you do not want to use const, define PNG_NO_CONST. + */ + +#ifndef PNG_CONST +# ifndef PNG_NO_CONST +# define PNG_CONST const +# else +# define PNG_CONST +# endif +#endif + +/* The following defines give you the ability to remove code from the + * library that you will not be using. I wish I could figure out how to + * automate this, but I can't do that without making it seriously hard + * on the users. So if you are not using an ability, change the #define + * to an #undef, or pass in PNG_NO_feature and that part of the library + * will not be compiled. + + * If your linker can't find a function, you may want to make sure the + * ability is defined here. Some of these depend upon some others being + * defined. I haven't figured out all the interactions here, so you may + * have to experiment awhile to get everything to compile. If you are + * creating or using a shared library, you probably shouldn't touch this, + * as it will affect the size of the structures, and this will cause bad + * things to happen if the library and/or application ever change. + */ + +/* Any features you will not be using can be undef'ed here */ + +/* GR-P, 0.96a: Set "*TRANSFORMS_SUPPORTED as default but allow user + * to turn it off with PNG_NO_READ|WRITE_TRANSFORMS on the compile line, + * then pick and choose which ones to define without having to edit this + * file. It is safe to use the PNG_NO_READ|WRITE_TRANSFORMS + * if you only want to have a png-compliant reader/writer but don't need + * any of the extra transformations. This saves about 80 kbytes in a + * typical installation of the library. (PNG_NO_* form added in version + * 1.0.1c, for consistency; PNG_*_TRANSFORMS_NOT_SUPPORTED deprecated in + * 1.4.0) + */ + +/* Ignore attempt to turn off both floating and fixed point support */ +#if !defined(PNG_FLOATING_POINT_SUPPORTED) || \ + !defined(PNG_NO_FIXED_POINT_SUPPORTED) +# define PNG_FIXED_POINT_SUPPORTED +#endif + +#ifdef PNG_READ_SUPPORTED + +/* PNG_READ_TRANSFORMS_NOT_SUPPORTED is deprecated. */ +#if !defined(PNG_READ_TRANSFORMS_NOT_SUPPORTED) && \ + !defined(PNG_NO_READ_TRANSFORMS) +# define PNG_READ_TRANSFORMS_SUPPORTED +#endif + +#ifdef PNG_READ_TRANSFORMS_SUPPORTED +# ifndef PNG_NO_READ_EXPAND +# define PNG_READ_EXPAND_SUPPORTED +# endif +# ifndef PNG_NO_READ_SHIFT +# define PNG_READ_SHIFT_SUPPORTED +# endif +# ifndef PNG_NO_READ_PACK +# define PNG_READ_PACK_SUPPORTED +# endif +# ifndef PNG_NO_READ_BGR +# define PNG_READ_BGR_SUPPORTED +# endif +# ifndef PNG_NO_READ_SWAP +# define PNG_READ_SWAP_SUPPORTED +# endif +# ifndef PNG_NO_READ_PACKSWAP +# define PNG_READ_PACKSWAP_SUPPORTED +# endif +# ifndef PNG_NO_READ_INVERT +# define PNG_READ_INVERT_SUPPORTED +# endif +# ifndef PNG_NO_READ_QUANTIZE + /* Prior to libpng-1.4.0 this was PNG_READ_DITHER_SUPPORTED */ +# ifndef PNG_NO_READ_DITHER /* This migration aid will be removed */ +# define PNG_READ_QUANTIZE_SUPPORTED +# endif +# endif +# ifndef PNG_NO_READ_BACKGROUND +# define PNG_READ_BACKGROUND_SUPPORTED +# endif +# ifndef PNG_NO_READ_16_TO_8 +# define PNG_READ_16_TO_8_SUPPORTED +# endif +# ifndef PNG_NO_READ_FILLER +# define PNG_READ_FILLER_SUPPORTED +# endif +# ifndef PNG_NO_READ_GAMMA +# define PNG_READ_GAMMA_SUPPORTED +# endif +# ifndef PNG_NO_READ_GRAY_TO_RGB +# define PNG_READ_GRAY_TO_RGB_SUPPORTED +# endif +# ifndef PNG_NO_READ_SWAP_ALPHA +# define PNG_READ_SWAP_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_INVERT_ALPHA +# define PNG_READ_INVERT_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_STRIP_ALPHA +# define PNG_READ_STRIP_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_READ_USER_TRANSFORM +# define PNG_READ_USER_TRANSFORM_SUPPORTED +# endif +# ifndef PNG_NO_READ_RGB_TO_GRAY +# define PNG_READ_RGB_TO_GRAY_SUPPORTED +# endif +#endif /* PNG_READ_TRANSFORMS_SUPPORTED */ + +/* PNG_PROGRESSIVE_READ_NOT_SUPPORTED is deprecated. */ +#if !defined(PNG_NO_PROGRESSIVE_READ) && \ + !defined(PNG_PROGRESSIVE_READ_NOT_SUPPORTED) /* if you don't do progressive */ +# define PNG_PROGRESSIVE_READ_SUPPORTED /* reading. This is not talking */ +#endif /* about interlacing capability! You'll */ + /* still have interlacing unless you change the following define: */ + +#define PNG_READ_INTERLACING_SUPPORTED /* required for PNG-compliant decoders */ + +/* PNG_NO_SEQUENTIAL_READ_SUPPORTED is deprecated. */ +#if !defined(PNG_NO_SEQUENTIAL_READ) && \ + !defined(PNG_SEQUENTIAL_READ_SUPPORTED) && \ + !defined(PNG_NO_SEQUENTIAL_READ_SUPPORTED) +# define PNG_SEQUENTIAL_READ_SUPPORTED +#endif + +#ifndef PNG_NO_READ_COMPOSITE_NODIV +# ifndef PNG_NO_READ_COMPOSITED_NODIV /* libpng-1.0.x misspelling */ +# define PNG_READ_COMPOSITE_NODIV_SUPPORTED /* well tested on Intel, SGI */ +# endif +#endif + +#if !defined(PNG_NO_GET_INT_32) || defined(PNG_READ_oFFS_SUPPORTED) || \ + defined(PNG_READ_pCAL_SUPPORTED) +# ifndef PNG_GET_INT_32_SUPPORTED +# define PNG_GET_INT_32_SUPPORTED +# endif +#endif + +#endif /* PNG_READ_SUPPORTED */ + +#ifdef PNG_WRITE_SUPPORTED + +/* PNG_WRITE_TRANSFORMS_NOT_SUPPORTED is deprecated. */ +#if !defined(PNG_WRITE_TRANSFORMS_NOT_SUPPORTED) && \ + !defined(PNG_NO_WRITE_TRANSFORMS) +# define PNG_WRITE_TRANSFORMS_SUPPORTED +#endif + +#ifdef PNG_WRITE_TRANSFORMS_SUPPORTED +# ifndef PNG_NO_WRITE_SHIFT +# define PNG_WRITE_SHIFT_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_PACK +# define PNG_WRITE_PACK_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_BGR +# define PNG_WRITE_BGR_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_SWAP +# define PNG_WRITE_SWAP_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_PACKSWAP +# define PNG_WRITE_PACKSWAP_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_INVERT +# define PNG_WRITE_INVERT_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_FILLER +# define PNG_WRITE_FILLER_SUPPORTED /* same as WRITE_STRIP_ALPHA */ +# endif +# ifndef PNG_NO_WRITE_SWAP_ALPHA +# define PNG_WRITE_SWAP_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_INVERT_ALPHA +# define PNG_WRITE_INVERT_ALPHA_SUPPORTED +# endif +# ifndef PNG_NO_WRITE_USER_TRANSFORM +# define PNG_WRITE_USER_TRANSFORM_SUPPORTED +# endif +#endif /* PNG_WRITE_TRANSFORMS_SUPPORTED */ + +#if !defined(PNG_NO_WRITE_INTERLACING_SUPPORTED) && \ + !defined(PNG_WRITE_INTERLACING_SUPPORTED) + /* This is not required for PNG-compliant encoders, but can cause + * trouble if left undefined + */ +# define PNG_WRITE_INTERLACING_SUPPORTED +#endif + +#if !defined(PNG_NO_WRITE_WEIGHTED_FILTER) && \ + !defined(PNG_WRITE_WEIGHTED_FILTER) && \ + defined(PNG_FLOATING_POINT_SUPPORTED) +# define PNG_WRITE_WEIGHTED_FILTER_SUPPORTED +#endif + +#ifndef PNG_NO_WRITE_FLUSH +# define PNG_WRITE_FLUSH_SUPPORTED +#endif + +#if !defined(PNG_NO_SAVE_INT_32) || defined(PNG_WRITE_oFFS_SUPPORTED) || \ + defined(PNG_WRITE_pCAL_SUPPORTED) +# ifndef PNG_SAVE_INT_32_SUPPORTED +# define PNG_SAVE_INT_32_SUPPORTED +# endif +#endif + +#endif /* PNG_WRITE_SUPPORTED */ + +#define PNG_NO_ERROR_NUMBERS + +#if defined(PNG_READ_USER_TRANSFORM_SUPPORTED) || \ + defined(PNG_WRITE_USER_TRANSFORM_SUPPORTED) +# ifndef PNG_NO_USER_TRANSFORM_PTR +# define PNG_USER_TRANSFORM_PTR_SUPPORTED +# endif +#endif + +#if defined(PNG_STDIO_SUPPORTED) && !defined(PNG_TIME_RFC1123_SUPPORTED) +# define PNG_TIME_RFC1123_SUPPORTED +#endif + +/* This adds extra functions in pngget.c for accessing data from the + * info pointer (added in version 0.99) + * png_get_image_width() + * png_get_image_height() + * png_get_bit_depth() + * png_get_color_type() + * png_get_compression_type() + * png_get_filter_type() + * png_get_interlace_type() + * png_get_pixel_aspect_ratio() + * png_get_pixels_per_meter() + * png_get_x_offset_pixels() + * png_get_y_offset_pixels() + * png_get_x_offset_microns() + * png_get_y_offset_microns() + */ +#if !defined(PNG_NO_EASY_ACCESS) && !defined(PNG_EASY_ACCESS_SUPPORTED) +# define PNG_EASY_ACCESS_SUPPORTED +#endif + +/* Added at libpng-1.2.0 */ +#if !defined(PNG_NO_USER_MEM) && !defined(PNG_USER_MEM_SUPPORTED) +# define PNG_USER_MEM_SUPPORTED +#endif + +/* Added at libpng-1.2.6 */ +#ifndef PNG_NO_SET_USER_LIMITS +# ifndef PNG_SET_USER_LIMITS_SUPPORTED +# define PNG_SET_USER_LIMITS_SUPPORTED +# endif + /* Feature added at libpng-1.4.0, this flag added at 1.4.1 */ +# ifndef PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED +# define PNG_SET_CHUNK_CACHE_LIMIT_SUPPORTED +# endif + /* Feature added at libpng-1.4.1, this flag added at 1.4.1 */ +# ifndef PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED +# define PNG_SET_CHUNK_MALLOC_LIMIT_SUPPORTED +# endif +#endif + +/* Added at libpng-1.2.43 */ +#ifndef PNG_USER_LIMITS_SUPPORTED +# ifndef PNG_NO_USER_LIMITS +# define PNG_USER_LIMITS_SUPPORTED +# endif +#endif + +/* Added at libpng-1.0.16 and 1.2.6. To accept all valid PNGs no matter + * how large, set these two limits to 0x7fffffffL + */ +#ifndef PNG_USER_WIDTH_MAX +# define PNG_USER_WIDTH_MAX 1000000L +#endif +#ifndef PNG_USER_HEIGHT_MAX +# define PNG_USER_HEIGHT_MAX 1000000L +#endif + +/* Added at libpng-1.2.43. To accept all valid PNGs no matter + * how large, set these two limits to 0. + */ +#ifndef PNG_USER_CHUNK_CACHE_MAX +# define PNG_USER_CHUNK_CACHE_MAX 0 +#endif + +/* Added at libpng-1.2.43 */ +#ifndef PNG_USER_CHUNK_MALLOC_MAX +# define PNG_USER_CHUNK_MALLOC_MAX 0 +#endif + +/* Added at libpng-1.4.0 */ +#if !defined(PNG_NO_IO_STATE) && !defined(PNG_IO_STATE_SUPPORTED) +# define PNG_IO_STATE_SUPPORTED +#endif + +#ifndef PNG_LITERAL_SHARP +# define PNG_LITERAL_SHARP 0x23 +#endif +#ifndef PNG_LITERAL_LEFT_SQUARE_BRACKET +# define PNG_LITERAL_LEFT_SQUARE_BRACKET 0x5b +#endif +#ifndef PNG_LITERAL_RIGHT_SQUARE_BRACKET +# define PNG_LITERAL_RIGHT_SQUARE_BRACKET 0x5d +#endif +#ifndef PNG_STRING_NEWLINE +#define PNG_STRING_NEWLINE "\n" +#endif + +/* These are currently experimental features, define them if you want */ + +/* Very little testing */ +/* +#ifdef PNG_READ_SUPPORTED +# ifndef PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED +# define PNG_READ_16_TO_8_ACCURATE_SCALE_SUPPORTED +# endif +#endif +*/ + +/* This is only for PowerPC big-endian and 680x0 systems */ +/* some testing */ +/* +#ifndef PNG_READ_BIG_ENDIAN_SUPPORTED +# define PNG_READ_BIG_ENDIAN_SUPPORTED +#endif +*/ + +#if !defined(PNG_NO_USE_READ_MACROS) && !defined(PNG_USE_READ_MACROS) +# define PNG_USE_READ_MACROS +#endif + +/* Buggy compilers (e.g., gcc 2.7.2.2) need PNG_NO_POINTER_INDEXING */ + +#if !defined(PNG_NO_POINTER_INDEXING) && \ + !defined(PNG_POINTER_INDEXING_SUPPORTED) +# define PNG_POINTER_INDEXING_SUPPORTED +#endif + + +/* Any chunks you are not interested in, you can undef here. The + * ones that allocate memory may be expecially important (hIST, + * tEXt, zTXt, tRNS, pCAL). Others will just save time and make png_info + * a bit smaller. + */ + +/* The size of the png_text structure changed in libpng-1.0.6 when + * iTXt support was added. iTXt support was turned off by default through + * libpng-1.2.x, to support old apps that malloc the png_text structure + * instead of calling png_set_text() and letting libpng malloc it. It + * was turned on by default in libpng-1.4.0. + */ + +/* PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated. */ +#if defined(PNG_READ_SUPPORTED) && \ + !defined(PNG_READ_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ + !defined(PNG_NO_READ_ANCILLARY_CHUNKS) +# define PNG_READ_ANCILLARY_CHUNKS_SUPPORTED +#endif + +/* PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED is deprecated. */ +#if defined(PNG_WRITE_SUPPORTED) && \ + !defined(PNG_WRITE_ANCILLARY_CHUNKS_NOT_SUPPORTED) && \ + !defined(PNG_NO_WRITE_ANCILLARY_CHUNKS) +# define PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED +#endif + +#ifdef PNG_READ_ANCILLARY_CHUNKS_SUPPORTED + +#ifdef PNG_NO_READ_TEXT +# define PNG_NO_READ_iTXt +# define PNG_NO_READ_tEXt +# define PNG_NO_READ_zTXt +#endif + +#ifndef PNG_NO_READ_bKGD +# define PNG_READ_bKGD_SUPPORTED +# define PNG_bKGD_SUPPORTED +#endif +#ifndef PNG_NO_READ_cHRM +# define PNG_READ_cHRM_SUPPORTED +# define PNG_cHRM_SUPPORTED +#endif +#ifndef PNG_NO_READ_gAMA +# define PNG_READ_gAMA_SUPPORTED +# define PNG_gAMA_SUPPORTED +#endif +#ifndef PNG_NO_READ_hIST +# define PNG_READ_hIST_SUPPORTED +# define PNG_hIST_SUPPORTED +#endif +#ifndef PNG_NO_READ_iCCP +# define PNG_READ_iCCP_SUPPORTED +# define PNG_iCCP_SUPPORTED +#endif +#ifndef PNG_NO_READ_iTXt +# ifndef PNG_READ_iTXt_SUPPORTED +# define PNG_READ_iTXt_SUPPORTED +# endif +# ifndef PNG_iTXt_SUPPORTED +# define PNG_iTXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_READ_oFFs +# define PNG_READ_oFFs_SUPPORTED +# define PNG_oFFs_SUPPORTED +#endif +#ifndef PNG_NO_READ_pCAL +# define PNG_READ_pCAL_SUPPORTED +# define PNG_pCAL_SUPPORTED +#endif +#ifndef PNG_NO_READ_sCAL +# define PNG_READ_sCAL_SUPPORTED +# define PNG_sCAL_SUPPORTED +#endif +#ifndef PNG_NO_READ_pHYs +# define PNG_READ_pHYs_SUPPORTED +# define PNG_pHYs_SUPPORTED +#endif +#ifndef PNG_NO_READ_sBIT +# define PNG_READ_sBIT_SUPPORTED +# define PNG_sBIT_SUPPORTED +#endif +#ifndef PNG_NO_READ_sPLT +# define PNG_READ_sPLT_SUPPORTED +# define PNG_sPLT_SUPPORTED +#endif +#ifndef PNG_NO_READ_sRGB +# define PNG_READ_sRGB_SUPPORTED +# define PNG_sRGB_SUPPORTED +#endif +#ifndef PNG_NO_READ_tEXt +# define PNG_READ_tEXt_SUPPORTED +# define PNG_tEXt_SUPPORTED +#endif +#ifndef PNG_NO_READ_tIME +# define PNG_READ_tIME_SUPPORTED +# define PNG_tIME_SUPPORTED +#endif +#ifndef PNG_NO_READ_tRNS +# define PNG_READ_tRNS_SUPPORTED +# define PNG_tRNS_SUPPORTED +#endif +#ifndef PNG_NO_READ_zTXt +# define PNG_READ_zTXt_SUPPORTED +# define PNG_zTXt_SUPPORTED +#endif +#ifndef PNG_NO_READ_OPT_PLTE +# define PNG_READ_OPT_PLTE_SUPPORTED /* only affects support of the */ +#endif /* optional PLTE chunk in RGB and RGBA images */ +#if defined(PNG_READ_iTXt_SUPPORTED) || defined(PNG_READ_tEXt_SUPPORTED) || \ + defined(PNG_READ_zTXt_SUPPORTED) +# define PNG_READ_TEXT_SUPPORTED +# define PNG_TEXT_SUPPORTED +#endif + +#endif /* PNG_READ_ANCILLARY_CHUNKS_SUPPORTED */ + +#ifndef PNG_NO_READ_UNKNOWN_CHUNKS +# ifndef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_READ_UNKNOWN_CHUNKS_SUPPORTED +# endif +# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_UNKNOWN_CHUNKS_SUPPORTED +# endif +# ifndef PNG_READ_USER_CHUNKS_SUPPORTED +# define PNG_READ_USER_CHUNKS_SUPPORTED +# endif +#endif +#ifndef PNG_NO_READ_USER_CHUNKS +# ifndef PNG_READ_USER_CHUNKS_SUPPORTED +# define PNG_READ_USER_CHUNKS_SUPPORTED +# endif +# ifndef PNG_USER_CHUNKS_SUPPORTED +# define PNG_USER_CHUNKS_SUPPORTED +# endif +#endif +#ifndef PNG_NO_HANDLE_AS_UNKNOWN +# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# endif +#endif + +#ifdef PNG_WRITE_SUPPORTED +#ifdef PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED + +#ifdef PNG_NO_WRITE_TEXT +# define PNG_NO_WRITE_iTXt +# define PNG_NO_WRITE_tEXt +# define PNG_NO_WRITE_zTXt +#endif +#ifndef PNG_NO_WRITE_bKGD +# define PNG_WRITE_bKGD_SUPPORTED +# ifndef PNG_bKGD_SUPPORTED +# define PNG_bKGD_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_cHRM +# define PNG_WRITE_cHRM_SUPPORTED +# ifndef PNG_cHRM_SUPPORTED +# define PNG_cHRM_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_gAMA +# define PNG_WRITE_gAMA_SUPPORTED +# ifndef PNG_gAMA_SUPPORTED +# define PNG_gAMA_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_hIST +# define PNG_WRITE_hIST_SUPPORTED +# ifndef PNG_hIST_SUPPORTED +# define PNG_hIST_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_iCCP +# define PNG_WRITE_iCCP_SUPPORTED +# ifndef PNG_iCCP_SUPPORTED +# define PNG_iCCP_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_iTXt +# ifndef PNG_WRITE_iTXt_SUPPORTED +# define PNG_WRITE_iTXt_SUPPORTED +# endif +# ifndef PNG_iTXt_SUPPORTED +# define PNG_iTXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_oFFs +# define PNG_WRITE_oFFs_SUPPORTED +# ifndef PNG_oFFs_SUPPORTED +# define PNG_oFFs_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_pCAL +# define PNG_WRITE_pCAL_SUPPORTED +# ifndef PNG_pCAL_SUPPORTED +# define PNG_pCAL_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sCAL +# define PNG_WRITE_sCAL_SUPPORTED +# ifndef PNG_sCAL_SUPPORTED +# define PNG_sCAL_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_pHYs +# define PNG_WRITE_pHYs_SUPPORTED +# ifndef PNG_pHYs_SUPPORTED +# define PNG_pHYs_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sBIT +# define PNG_WRITE_sBIT_SUPPORTED +# ifndef PNG_sBIT_SUPPORTED +# define PNG_sBIT_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sPLT +# define PNG_WRITE_sPLT_SUPPORTED +# ifndef PNG_sPLT_SUPPORTED +# define PNG_sPLT_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_sRGB +# define PNG_WRITE_sRGB_SUPPORTED +# ifndef PNG_sRGB_SUPPORTED +# define PNG_sRGB_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tEXt +# define PNG_WRITE_tEXt_SUPPORTED +# ifndef PNG_tEXt_SUPPORTED +# define PNG_tEXt_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tIME +# define PNG_WRITE_tIME_SUPPORTED +# ifndef PNG_tIME_SUPPORTED +# define PNG_tIME_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_tRNS +# define PNG_WRITE_tRNS_SUPPORTED +# ifndef PNG_tRNS_SUPPORTED +# define PNG_tRNS_SUPPORTED +# endif +#endif +#ifndef PNG_NO_WRITE_zTXt +# define PNG_WRITE_zTXt_SUPPORTED +# ifndef PNG_zTXt_SUPPORTED +# define PNG_zTXt_SUPPORTED +# endif +#endif +#if defined(PNG_WRITE_iTXt_SUPPORTED) || defined(PNG_WRITE_tEXt_SUPPORTED) || \ + defined(PNG_WRITE_zTXt_SUPPORTED) +# define PNG_WRITE_TEXT_SUPPORTED +# ifndef PNG_TEXT_SUPPORTED +# define PNG_TEXT_SUPPORTED +# endif +#endif + +#ifdef PNG_WRITE_tIME_SUPPORTED +# ifndef PNG_NO_CONVERT_tIME +# ifndef _WIN32_WCE +/* The "tm" structure is not supported on WindowsCE */ +# ifndef PNG_CONVERT_tIME_SUPPORTED +# define PNG_CONVERT_tIME_SUPPORTED +# endif +# endif +# endif +#endif + +#endif /* PNG_WRITE_ANCILLARY_CHUNKS_SUPPORTED */ + +#ifndef PNG_NO_WRITE_FILTER +# ifndef PNG_WRITE_FILTER_SUPPORTED +# define PNG_WRITE_FILTER_SUPPORTED +# endif +#endif + +#ifndef PNG_NO_WRITE_UNKNOWN_CHUNKS +# define PNG_WRITE_UNKNOWN_CHUNKS_SUPPORTED +# ifndef PNG_UNKNOWN_CHUNKS_SUPPORTED +# define PNG_UNKNOWN_CHUNKS_SUPPORTED +# endif +#endif +#ifndef PNG_NO_HANDLE_AS_UNKNOWN +# ifndef PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# define PNG_HANDLE_AS_UNKNOWN_SUPPORTED +# endif +#endif +#endif /* PNG_WRITE_SUPPORTED */ + +/* Turn this off to disable png_read_png() and + * png_write_png() and leave the row_pointers member + * out of the info structure. + */ +#ifndef PNG_NO_INFO_IMAGE +# define PNG_INFO_IMAGE_SUPPORTED +#endif + +/* Need the time information for converting tIME chunks */ +#ifdef PNG_CONVERT_tIME_SUPPORTED + /* "time.h" functions are not supported on WindowsCE */ +# include <time.h> +#endif + +/* Some typedefs to get us started. These should be safe on most of the + * common platforms. The typedefs should be at least as large as the + * numbers suggest (a png_uint_32 must be at least 32 bits long), but they + * don't have to be exactly that size. Some compilers dislike passing + * unsigned shorts as function parameters, so you may be better off using + * unsigned int for png_uint_16. + */ + +#if defined(INT_MAX) && (INT_MAX > 0x7ffffffeL) +typedef unsigned int png_uint_32; +typedef int png_int_32; +#else +typedef unsigned long png_uint_32; +typedef long png_int_32; +#endif +typedef unsigned short png_uint_16; +typedef short png_int_16; +typedef unsigned char png_byte; + +#ifdef PNG_NO_SIZE_T + typedef unsigned int png_size_t; +#else + typedef size_t png_size_t; +#endif +#define png_sizeof(x) (sizeof (x)) + +/* The following is needed for medium model support. It cannot be in the + * pngpriv.h header. Needs modification for other compilers besides + * MSC. Model independent support declares all arrays and pointers to be + * large using the far keyword. The zlib version used must also support + * model independent data. As of version zlib 1.0.4, the necessary changes + * have been made in zlib. The USE_FAR_KEYWORD define triggers other + * changes that are needed. (Tim Wegner) + */ + +/* Separate compiler dependencies (problem here is that zlib.h always + * defines FAR. (SJT) + */ +#ifdef __BORLANDC__ +# if defined(__LARGE__) || defined(__HUGE__) || defined(__COMPACT__) +# define LDATA 1 +# else +# define LDATA 0 +# endif + /* GRR: why is Cygwin in here? Cygwin is not Borland C... */ +# if !defined(__WIN32__) && !defined(__FLAT__) && !defined(__CYGWIN__) +# define PNG_MAX_MALLOC_64K +# if (LDATA != 1) +# ifndef FAR +# define FAR __far +# endif +# define USE_FAR_KEYWORD +# endif /* LDATA != 1 */ + /* Possibly useful for moving data out of default segment. + * Uncomment it if you want. Could also define FARDATA as + * const if your compiler supports it. (SJT) +# define FARDATA FAR + */ +# endif /* __WIN32__, __FLAT__, __CYGWIN__ */ +#endif /* __BORLANDC__ */ + + +/* Suggest testing for specific compiler first before testing for + * FAR. The Watcom compiler defines both __MEDIUM__ and M_I86MM, + * making reliance oncertain keywords suspect. (SJT) + */ + +/* MSC Medium model */ +#ifdef FAR +# ifdef M_I86MM +# define USE_FAR_KEYWORD +# define FARDATA FAR +# include <dos.h> +# endif +#endif + +/* SJT: default case */ +#ifndef FAR +# define FAR +#endif + +/* At this point FAR is always defined */ +#ifndef FARDATA +# define FARDATA +#endif + +/* Typedef for floating-point numbers that are converted + to fixed-point with a multiple of 100,000, e.g., int_gamma */ +typedef png_int_32 png_fixed_point; + +/* Add typedefs for pointers */ +typedef void FAR * png_voidp; +typedef png_byte FAR * png_bytep; +typedef png_uint_32 FAR * png_uint_32p; +typedef png_int_32 FAR * png_int_32p; +typedef png_uint_16 FAR * png_uint_16p; +typedef png_int_16 FAR * png_int_16p; +typedef PNG_CONST char FAR * png_const_charp; +typedef char FAR * png_charp; +typedef png_fixed_point FAR * png_fixed_point_p; + +#ifndef PNG_NO_STDIO +typedef FILE * png_FILE_p; +#endif + +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * png_doublep; +#endif + +/* Pointers to pointers; i.e. arrays */ +typedef png_byte FAR * FAR * png_bytepp; +typedef png_uint_32 FAR * FAR * png_uint_32pp; +typedef png_int_32 FAR * FAR * png_int_32pp; +typedef png_uint_16 FAR * FAR * png_uint_16pp; +typedef png_int_16 FAR * FAR * png_int_16pp; +typedef PNG_CONST char FAR * FAR * png_const_charpp; +typedef char FAR * FAR * png_charpp; +typedef png_fixed_point FAR * FAR * png_fixed_point_pp; +#ifdef PNG_FLOATING_POINT_SUPPORTED +typedef double FAR * FAR * png_doublepp; +#endif + +/* Pointers to pointers to pointers; i.e., pointer to array */ +typedef char FAR * FAR * FAR * png_charppp; + +/* Define PNG_BUILD_DLL if the module being built is a Windows + * LIBPNG DLL. + * + * Define PNG_USE_DLL if you want to *link* to the Windows LIBPNG DLL. + * It is equivalent to Microsoft predefined macro _DLL that is + * automatically defined when you compile using the share + * version of the CRT (C Run-Time library) + * + * The cygwin mods make this behavior a little different: + * Define PNG_BUILD_DLL if you are building a dll for use with cygwin + * Define PNG_STATIC if you are building a static library for use with cygwin, + * -or- if you are building an application that you want to link to the + * static library. + * PNG_USE_DLL is defined by default (no user action needed) unless one of + * the other flags is defined. + */ + +#if !defined(PNG_DLL) && (defined(PNG_BUILD_DLL) || defined(PNG_USE_DLL)) +# define PNG_DLL +#endif + +/* If you define PNGAPI, e.g., with compiler option "-DPNGAPI=__stdcall", + * you may get warnings regarding the linkage of png_zalloc and png_zfree. + * Don't ignore those warnings; you must also reset the default calling + * convention in your compiler to match your PNGAPI, and you must build + * zlib and your applications the same way you build libpng. + */ + +#ifdef __CYGWIN__ +# undef PNGAPI +# define PNGAPI __cdecl +# undef PNG_IMPEXP +# define PNG_IMPEXP +#endif + +#ifdef __WATCOMC__ +# ifndef PNGAPI +# define PNGAPI +# endif +#endif + +#if defined(__MINGW32__) && !defined(PNG_MODULEDEF) +# ifndef PNG_NO_MODULEDEF +# define PNG_NO_MODULEDEF +# endif +#endif + +#if !defined(PNG_IMPEXP) && defined(PNG_BUILD_DLL) && !defined(PNG_NO_MODULEDEF) +# define PNG_IMPEXP +#endif + +#if defined(PNG_DLL) || defined(_DLL) || defined(__DLL__ ) || \ + (( defined(_Windows) || defined(_WINDOWS) || \ + defined(WIN32) || defined(_WIN32) || defined(__WIN32__) )) + +# ifndef PNGAPI +# if defined(__GNUC__) || (defined (_MSC_VER) && (_MSC_VER >= 800)) +# define PNGAPI __cdecl +# else +# define PNGAPI _cdecl +# endif +# endif + +# if !defined(PNG_IMPEXP) && (!defined(PNG_DLL) || \ + 0 /* WINCOMPILER_WITH_NO_SUPPORT_FOR_DECLIMPEXP */) +# define PNG_IMPEXP +# endif + +# ifndef PNG_IMPEXP + +# define PNG_EXPORT_TYPE1(type,symbol) PNG_IMPEXP type PNGAPI symbol +# define PNG_EXPORT_TYPE2(type,symbol) type PNG_IMPEXP PNGAPI symbol + + /* Borland/Microsoft */ +# if defined(_MSC_VER) || defined(__BORLANDC__) +# if (_MSC_VER >= 800) || (__BORLANDC__ >= 0x500) +# define PNG_EXPORT PNG_EXPORT_TYPE1 +# else +# define PNG_EXPORT PNG_EXPORT_TYPE2 +# ifdef PNG_BUILD_DLL +# define PNG_IMPEXP __export +# else +# define PNG_IMPEXP /*__import */ /* doesn't exist AFAIK in VC++ */ +# endif /* Exists in Borland C++ for + C++ classes (== huge) */ +# endif +# endif + +# ifndef PNG_IMPEXP +# ifdef PNG_BUILD_DLL +# define PNG_IMPEXP __declspec(dllexport) +# else +# define PNG_IMPEXP __declspec(dllimport) +# endif +# endif +# endif /* PNG_IMPEXP */ +#else /* !(DLL || non-cygwin WINDOWS) */ +# if (defined(__IBMC__) || defined(__IBMCPP__)) && defined(__OS2__) +# ifndef PNGAPI +# define PNGAPI _System +# endif +# else +# if 0 /* ... other platforms, with other meanings */ +# endif +# endif +#endif + +#ifndef PNGAPI +# define PNGAPI +#endif +#ifndef PNG_IMPEXP +# define PNG_IMPEXP +#endif + +#ifdef PNG_BUILDSYMS +# ifndef PNG_EXPORT +# define PNG_EXPORT(type,symbol) PNG_FUNCTION_EXPORT symbol END +# endif +#endif + +#ifndef PNG_EXPORT +# define PNG_EXPORT(type,symbol) PNG_IMPEXP type PNGAPI symbol +#endif + +#define PNG_USE_LOCAL_ARRAYS /* Not used in libpng, defined for legacy apps */ + +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. + * + * Added at libpng-1.2.41. + */ + +#ifndef PNG_NO_PEDANTIC_WARNINGS +# ifndef PNG_PEDANTIC_WARNINGS_SUPPORTED +# define PNG_PEDANTIC_WARNINGS_SUPPORTED +# endif +#endif + +#ifdef PNG_PEDANTIC_WARNINGS_SUPPORTED +/* Support for compiler specific function attributes. These are used + * so that where compiler support is available incorrect use of API + * functions in png.h will generate compiler warnings. Added at libpng + * version 1.2.41. + */ +# ifdef __GNUC__ +# ifndef PNG_USE_RESULT +# define PNG_USE_RESULT __attribute__((__warn_unused_result__)) +# endif +# ifndef PNG_NORETURN +# define PNG_NORETURN __attribute__((__noreturn__)) +# endif +# ifndef PNG_ALLOCATED +# define PNG_ALLOCATED __attribute__((__malloc__)) +# endif + + /* This specifically protects structure members that should only be + * accessed from within the library, therefore should be empty during + * a library build. + */ +# ifndef PNG_DEPRECATED +# define PNG_DEPRECATED __attribute__((__deprecated__)) +# endif +# ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT __attribute__((__deprecated__)) +# endif +# ifndef PNG_PRIVATE +# if 0 /* Doesn't work so we use deprecated instead*/ +# define PNG_PRIVATE \ + __attribute__((warning("This function is not exported by libpng."))) +# else +# define PNG_PRIVATE \ + __attribute__((__deprecated__)) +# endif +# endif /* PNG_PRIVATE */ +# endif /* __GNUC__ */ +#endif /* PNG_PEDANTIC_WARNINGS */ + +#ifndef PNG_DEPRECATED +# define PNG_DEPRECATED /* Use of this function is deprecated */ +#endif +#ifndef PNG_USE_RESULT +# define PNG_USE_RESULT /* The result of this function must be checked */ +#endif +#ifndef PNG_NORETURN +# define PNG_NORETURN /* This function does not return */ +#endif +#ifndef PNG_ALLOCATED +# define PNG_ALLOCATED /* The result of the function is new memory */ +#endif +#ifndef PNG_DEPSTRUCT +# define PNG_DEPSTRUCT /* Access to this struct member is deprecated */ +#endif +#ifndef PNG_PRIVATE +# define PNG_PRIVATE /* This is a private libpng function */ +#endif + +/* Users may want to use these so they are not private. Any library + * functions that are passed far data must be model-independent. + */ + +/* memory model/platform independent fns */ +#ifndef PNG_ABORT +# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) +# define PNG_ABORT() ExitProcess(0) +# else +# define PNG_ABORT() abort() +# endif +#endif + +#ifdef USE_FAR_KEYWORD +/* Use this to make far-to-near assignments */ +# define CHECK 1 +# define NOCHECK 0 +# define CVT_PTR(ptr) (png_far_to_near(png_ptr,ptr,CHECK)) +# define CVT_PTR_NOCHECK(ptr) (png_far_to_near(png_ptr,ptr,NOCHECK)) +# define png_strcpy _fstrcpy +# define png_strncpy _fstrncpy /* Added to v 1.2.6 */ +# define png_strlen _fstrlen +# define png_memcmp _fmemcmp /* SJT: added */ +# define png_memcpy _fmemcpy +# define png_memset _fmemset +# define png_sprintf sprintf +#else +# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) +# /* Favor Windows over C runtime fns */ +# define CVT_PTR(ptr) (ptr) +# define CVT_PTR_NOCHECK(ptr) (ptr) +# define png_strcpy lstrcpyA +# define png_strncpy lstrcpynA +# define png_strlen lstrlenA +# define png_memcmp memcmp +# define png_memcpy CopyMemory +# define png_memset memset +# define png_sprintf wsprintfA +# else +# define CVT_PTR(ptr) (ptr) +# define CVT_PTR_NOCHECK(ptr) (ptr) +# define png_strcpy strcpy +# define png_strncpy strncpy /* Added to v 1.2.6 */ +# define png_strlen strlen +# define png_memcmp memcmp /* SJT: added */ +# define png_memcpy memcpy +# define png_memset memset +# define png_sprintf sprintf +# endif +#endif + +#ifndef PNG_NO_SNPRINTF +# ifdef _MSC_VER +# define png_snprintf _snprintf /* Added to v 1.2.19 */ +# define png_snprintf2 _snprintf +# define png_snprintf6 _snprintf +# else +# define png_snprintf snprintf /* Added to v 1.2.19 */ +# define png_snprintf2 snprintf +# define png_snprintf6 snprintf +# endif +#else + /* You don't have or don't want to use snprintf(). Caution: Using + * sprintf instead of snprintf exposes your application to accidental + * or malevolent buffer overflows. If you don't have snprintf() + * as a general rule you should provide one (you can get one from + * Portable OpenSSH). + */ +# define png_snprintf(s1,n,fmt,x1) png_sprintf(s1,fmt,x1) +# define png_snprintf2(s1,n,fmt,x1,x2) png_sprintf(s1,fmt,x1,x2) +# define png_snprintf6(s1,n,fmt,x1,x2,x3,x4,x5,x6) \ + png_sprintf(s1,fmt,x1,x2,x3,x4,x5,x6) +#endif + +/* png_alloc_size_t is guaranteed to be no smaller than png_size_t, + * and no smaller than png_uint_32. Casts from png_size_t or png_uint_32 + * to png_alloc_size_t are not necessary; in fact, it is recommended + * not to use them at all so that the compiler can complain when something + * turns out to be problematic. + * Casts in the other direction (from png_alloc_size_t to png_size_t or + * png_uint_32) should be explicitly applied; however, we do not expect + * to encounter practical situations that require such conversions. + */ +#if defined(__TURBOC__) && !defined(__FLAT__) + typedef unsigned long png_alloc_size_t; +#else +# if defined(_MSC_VER) && defined(MAXSEG_64K) + typedef unsigned long png_alloc_size_t; +# else + /* This is an attempt to detect an old Windows system where (int) is + * actually 16 bits, in that case png_malloc must have an argument with a + * bigger size to accomodate the requirements of the library. + */ +# if (defined(_Windows) || defined(_WINDOWS) || defined(_WINDOWS_)) && \ + (!defined(INT_MAX) || INT_MAX <= 0x7ffffffeL) + typedef DWORD png_alloc_size_t; +# else + typedef png_size_t png_alloc_size_t; +# endif +# endif +#endif +/* End of memory model/platform independent support */ + +/* Just a little check that someone hasn't tried to define something + * contradictory. + */ +#if (PNG_ZBUF_SIZE > 65536L) && defined(PNG_MAX_MALLOC_64K) +# undef PNG_ZBUF_SIZE +# define PNG_ZBUF_SIZE 65536L +#endif + + +/* Added at libpng-1.2.8 */ +#endif /* PNG_VERSION_INFO_ONLY */ + +#endif /* PNGCONF_H */ diff --git a/include/zconf.h b/include/zconf.h new file mode 100644 index 0000000..b234387 --- /dev/null +++ b/include/zconf.h @@ -0,0 +1,428 @@ +/* zconf.h -- configuration of the zlib compression library + * Copyright (C) 1995-2010 Jean-loup Gailly. + * For conditions of distribution and use, see copyright notice in zlib.h + */ + +/* @(#) $Id$ */ + +#ifndef ZCONF_H +#define ZCONF_H + +/* + * If you *really* need a unique prefix for all types and library functions, + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. + * Even better than compiling with -DZ_PREFIX would be to use configure to set + * this permanently in zconf.h using "./configure --zprefix". + */ +#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ + +/* all linked symbols */ +# define _dist_code z__dist_code +# define _length_code z__length_code +# define _tr_align z__tr_align +# define _tr_flush_block z__tr_flush_block +# define _tr_init z__tr_init +# define _tr_stored_block z__tr_stored_block +# define _tr_tally z__tr_tally +# define adler32 z_adler32 +# define adler32_combine z_adler32_combine +# define adler32_combine64 z_adler32_combine64 +# define compress z_compress +# define compress2 z_compress2 +# define compressBound z_compressBound +# define crc32 z_crc32 +# define crc32_combine z_crc32_combine +# define crc32_combine64 z_crc32_combine64 +# define deflate z_deflate +# define deflateBound z_deflateBound +# define deflateCopy z_deflateCopy +# define deflateEnd z_deflateEnd +# define deflateInit2_ z_deflateInit2_ +# define deflateInit_ z_deflateInit_ +# define deflateParams z_deflateParams +# define deflatePrime z_deflatePrime +# define deflateReset z_deflateReset +# define deflateSetDictionary z_deflateSetDictionary +# define deflateSetHeader z_deflateSetHeader +# define deflateTune z_deflateTune +# define deflate_copyright z_deflate_copyright +# define get_crc_table z_get_crc_table +# define gz_error z_gz_error +# define gz_intmax z_gz_intmax +# define gz_strwinerror z_gz_strwinerror +# define gzbuffer z_gzbuffer +# define gzclearerr z_gzclearerr +# define gzclose z_gzclose +# define gzclose_r z_gzclose_r +# define gzclose_w z_gzclose_w +# define gzdirect z_gzdirect +# define gzdopen z_gzdopen +# define gzeof z_gzeof +# define gzerror z_gzerror +# define gzflush z_gzflush +# define gzgetc z_gzgetc +# define gzgets z_gzgets +# define gzoffset z_gzoffset +# define gzoffset64 z_gzoffset64 +# define gzopen z_gzopen +# define gzopen64 z_gzopen64 +# define gzprintf z_gzprintf +# define gzputc z_gzputc +# define gzputs z_gzputs +# define gzread z_gzread +# define gzrewind z_gzrewind +# define gzseek z_gzseek +# define gzseek64 z_gzseek64 +# define gzsetparams z_gzsetparams +# define gztell z_gztell +# define gztell64 z_gztell64 +# define gzungetc z_gzungetc +# define gzwrite z_gzwrite +# define inflate z_inflate +# define inflateBack z_inflateBack +# define inflateBackEnd z_inflateBackEnd +# define inflateBackInit_ z_inflateBackInit_ +# define inflateCopy z_inflateCopy +# define inflateEnd z_inflateEnd +# define inflateGetHeader z_inflateGetHeader +# define inflateInit2_ z_inflateInit2_ +# define inflateInit_ z_inflateInit_ +# define inflateMark z_inflateMark +# define inflatePrime z_inflatePrime +# define inflateReset z_inflateReset +# define inflateReset2 z_inflateReset2 +# define inflateSetDictionary z_inflateSetDictionary +# define inflateSync z_inflateSync +# define inflateSyncPoint z_inflateSyncPoint +# define inflateUndermine z_inflateUndermine +# define inflate_copyright z_inflate_copyright +# define inflate_fast z_inflate_fast +# define inflate_table z_inflate_table +# define uncompress z_uncompress +# define zError z_zError +# define zcalloc z_zcalloc +# define zcfree z_zcfree +# define zlibCompileFlags z_zlibCompileFlags +# define zlibVersion z_zlibVersion + +/* all zlib typedefs in zlib.h and zconf.h */ +# define Byte z_Byte +# define Bytef z_Bytef +# define alloc_func z_alloc_func +# define charf z_charf +# define free_func z_free_func +# define gzFile z_gzFile +# define gz_header z_gz_header +# define gz_headerp z_gz_headerp +# define in_func z_in_func +# define intf z_intf +# define out_func z_out_func +# define uInt z_uInt +# define uIntf z_uIntf +# define uLong z_uLong +# define uLongf z_uLongf +# define voidp z_voidp +# define voidpc z_voidpc +# define voidpf z_voidpf + +/* all zlib structs in zlib.h and zconf.h */ +# define gz_header_s z_gz_header_s +# define internal_state z_internal_state + +#endif + +#if defined(__MSDOS__) && !defined(MSDOS) +# define MSDOS +#endif +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) +# define OS2 +#endif +#if defined(_WINDOWS) && !defined(WINDOWS) +# define WINDOWS +#endif +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) +# ifndef WIN32 +# define WIN32 +# endif +#endif +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) +# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) +# ifndef SYS16BIT +# define SYS16BIT +# endif +# endif +#endif + +/* + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more + * than 64k bytes at a time (needed on systems with 16-bit int). + */ +#ifdef SYS16BIT +# define MAXSEG_64K +#endif +#ifdef MSDOS +# define UNALIGNED_OK +#endif + +#ifdef __STDC_VERSION__ +# ifndef STDC +# define STDC +# endif +# if __STDC_VERSION__ >= 199901L +# ifndef STDC99 +# define STDC99 +# endif +# endif +#endif +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) +# define STDC +#endif +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) +# define STDC +#endif +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) +# define STDC +#endif +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) +# define STDC +#endif + +#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ +# define STDC +#endif + +#ifndef STDC +# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ +# define const /* note: need a more gentle solution here */ +# endif +#endif + +/* Some Mac compilers merge all .h files incorrectly: */ +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__) +# define NO_DUMMY_DECL +#endif + +/* Maximum value for memLevel in deflateInit2 */ +#ifndef MAX_MEM_LEVEL +# ifdef MAXSEG_64K +# define MAX_MEM_LEVEL 8 +# else +# define MAX_MEM_LEVEL 9 +# endif +#endif + +/* Maximum value for windowBits in deflateInit2 and inflateInit2. + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files + * created by gzip. (Files created by minigzip can still be extracted by + * gzip.) + */ +#ifndef MAX_WBITS +# define MAX_WBITS 15 /* 32K LZ77 window */ +#endif + +/* The memory requirements for deflate are (in bytes): + (1 << (windowBits+2)) + (1 << (memLevel+9)) + that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) + plus a few kilobytes for small objects. For example, if you want to reduce + the default memory requirements from 256K to 128K, compile with + make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" + Of course this will generally degrade compression (there's no free lunch). + + The memory requirements for inflate are (in bytes) 1 << windowBits + that is, 32K for windowBits=15 (default value) plus a few kilobytes + for small objects. +*/ + + /* Type declarations */ + +#ifndef OF /* function prototypes */ +# ifdef STDC +# define OF(args) args +# else +# define OF(args) () +# endif +#endif + +/* The following definitions for FAR are needed only for MSDOS mixed + * model programming (small or medium model with some far allocations). + * This was tested only with MSC; for other MSDOS compilers you may have + * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, + * just define FAR to be empty. + */ +#ifdef SYS16BIT +# if defined(M_I86SM) || defined(M_I86MM) + /* MSC small or medium model */ +# define SMALL_MEDIUM +# ifdef _MSC_VER +# define FAR _far +# else +# define FAR far +# endif +# endif +# if (defined(__SMALL__) || defined(__MEDIUM__)) + /* Turbo C small or medium model */ +# define SMALL_MEDIUM +# ifdef __BORLANDC__ +# define FAR _far +# else +# define FAR far +# endif +# endif +#endif + +#if defined(WINDOWS) || defined(WIN32) + /* If building or using zlib as a DLL, define ZLIB_DLL. + * This is not mandatory, but it offers a little performance increase. + */ +# ifdef ZLIB_DLL +# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) +# ifdef ZLIB_INTERNAL +# define ZEXTERN extern __declspec(dllexport) +# else +# define ZEXTERN extern __declspec(dllimport) +# endif +# endif +# endif /* ZLIB_DLL */ + /* If building or using zlib with the WINAPI/WINAPIV calling convention, + * define ZLIB_WINAPI. + * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. + */ +# ifdef ZLIB_WINAPI +# ifdef FAR +# undef FAR +# endif +# include <windows.h> + /* No need for _export, use ZLIB.DEF instead. */ + /* For complete Windows compatibility, use WINAPI, not __stdcall. */ +# define ZEXPORT WINAPI +# ifdef WIN32 +# define ZEXPORTVA WINAPIV +# else +# define ZEXPORTVA FAR CDECL +# endif +# endif +#endif + +#if defined (__BEOS__) +# ifdef ZLIB_DLL +# ifdef ZLIB_INTERNAL +# define ZEXPORT __declspec(dllexport) +# define ZEXPORTVA __declspec(dllexport) +# else +# define ZEXPORT __declspec(dllimport) +# define ZEXPORTVA __declspec(dllimport) +# endif +# endif +#endif + +#ifndef ZEXTERN +# define ZEXTERN extern +#endif +#ifndef ZEXPORT +# define ZEXPORT +#endif +#ifndef ZEXPORTVA +# define ZEXPORTVA +#endif + +#ifndef FAR +# define FAR +#endif + +#if !defined(__MACTYPES__) +typedef unsigned char Byte; /* 8 bits */ +#endif +typedef unsigned int uInt; /* 16 bits or more */ +typedef unsigned long uLong; /* 32 bits or more */ + +#ifdef SMALL_MEDIUM + /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ +# define Bytef Byte FAR +#else + typedef Byte FAR Bytef; +#endif +typedef char FAR charf; +typedef int FAR intf; +typedef uInt FAR uIntf; +typedef uLong FAR uLongf; + +#ifdef STDC + typedef void const *voidpc; + typedef void FAR *voidpf; + typedef void *voidp; +#else + typedef Byte const *voidpc; + typedef Byte FAR *voidpf; + typedef Byte *voidp; +#endif + +#if 1 /* was set to #if 1 by ./configure */ +# define Z_HAVE_UNISTD_H +#endif + +#ifdef STDC +# include <sys/types.h> /* for off_t */ +#endif + +/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and + * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even + * though the former does not conform to the LFS document), but considering + * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as + * equivalently requesting no 64-bit operations + */ +#if -_LARGEFILE64_SOURCE - -1 == 1 +# undef _LARGEFILE64_SOURCE +#endif + +#if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# include <unistd.h> /* for SEEK_* and off_t */ +# ifdef VMS +# include <unixio.h> /* for off_t */ +# endif +# ifndef z_off_t +# define z_off_t off_t +# endif +#endif + +#ifndef SEEK_SET +# define SEEK_SET 0 /* Seek from beginning of file. */ +# define SEEK_CUR 1 /* Seek from current position. */ +# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ +#endif + +#ifndef z_off_t +# define z_off_t long +#endif + +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 +# define z_off64_t off64_t +#else +# define z_off64_t z_off_t +#endif + +#if defined(__OS400__) +# define NO_vsnprintf +#endif + +#if defined(__MVS__) +# define NO_vsnprintf +#endif + +/* MVS linker does not support external names larger than 8 bytes */ +#if defined(__MVS__) + #pragma map(deflateInit_,"DEIN") + #pragma map(deflateInit2_,"DEIN2") + #pragma map(deflateEnd,"DEEND") + #pragma map(deflateBound,"DEBND") + #pragma map(inflateInit_,"ININ") + #pragma map(inflateInit2_,"ININ2") + #pragma map(inflateEnd,"INEND") + #pragma map(inflateSync,"INSY") + #pragma map(inflateSetDictionary,"INSEDI") + #pragma map(compressBound,"CMBND") + #pragma map(inflate_table,"INTABL") + #pragma map(inflate_fast,"INFA") + #pragma map(inflate_copyright,"INCOPY") +#endif + +#endif /* ZCONF_H */ diff --git a/include/zlib.h b/include/zlib.h new file mode 100644 index 0000000..bfbba83 --- /dev/null +++ b/include/zlib.h @@ -0,0 +1,1613 @@ +/* zlib.h -- interface of the 'zlib' general purpose compression library + version 1.2.5, April 19th, 2010 + + Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler + + 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. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + + + The data format used by the zlib library is described by RFCs (Request for + Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt + (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). +*/ + +#ifndef ZLIB_H +#define ZLIB_H + +#include "zconf.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define ZLIB_VERSION "1.2.5" +#define ZLIB_VERNUM 0x1250 +#define ZLIB_VER_MAJOR 1 +#define ZLIB_VER_MINOR 2 +#define ZLIB_VER_REVISION 5 +#define ZLIB_VER_SUBREVISION 0 + +/* + The 'zlib' compression library provides in-memory compression and + decompression functions, including integrity checks of the uncompressed data. + This version of the library supports only one compression method (deflation) + but other algorithms will be added later and will have the same stream + interface. + + Compression can be done in a single step if the buffers are large enough, + or can be done by repeated calls of the compression function. In the latter + case, the application must provide more input and/or consume the output + (providing more output space) before each call. + + The compressed data format used by default by the in-memory functions is + the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped + around a deflate stream, which is itself documented in RFC 1951. + + The library also supports reading and writing files in gzip (.gz) format + with an interface similar to that of stdio using the functions that start + with "gz". The gzip format is different from the zlib format. gzip is a + gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. + + This library can optionally read and write gzip streams in memory as well. + + The zlib format was designed to be compact and fast for use in memory + and on communications channels. The gzip format was designed for single- + file compression on file systems, has a larger header than zlib to maintain + directory information, and uses a different, slower check method than zlib. + + The library does not install any signal handler. The decoder checks + the consistency of the compressed data, so the library should never crash + even in case of corrupted input. +*/ + +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); +typedef void (*free_func) OF((voidpf opaque, voidpf address)); + +struct internal_state; + +typedef struct z_stream_s { + Bytef *next_in; /* next input byte */ + uInt avail_in; /* number of bytes available at next_in */ + uLong total_in; /* total nb of input bytes read so far */ + + Bytef *next_out; /* next output byte should be put there */ + uInt avail_out; /* remaining free space at next_out */ + uLong total_out; /* total nb of bytes output so far */ + + char *msg; /* last error message, NULL if no error */ + struct internal_state FAR *state; /* not visible by applications */ + + alloc_func zalloc; /* used to allocate the internal state */ + free_func zfree; /* used to free the internal state */ + voidpf opaque; /* private data object passed to zalloc and zfree */ + + int data_type; /* best guess about the data type: binary or text */ + uLong adler; /* adler32 value of the uncompressed data */ + uLong reserved; /* reserved for future use */ +} z_stream; + +typedef z_stream FAR *z_streamp; + +/* + gzip header information passed to and from zlib routines. See RFC 1952 + for more details on the meanings of these fields. +*/ +typedef struct gz_header_s { + int text; /* true if compressed data believed to be text */ + uLong time; /* modification time */ + int xflags; /* extra flags (not used when writing a gzip file) */ + int os; /* operating system */ + Bytef *extra; /* pointer to extra field or Z_NULL if none */ + uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ + uInt extra_max; /* space at extra (only when reading header) */ + Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ + uInt name_max; /* space at name (only when reading header) */ + Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ + uInt comm_max; /* space at comment (only when reading header) */ + int hcrc; /* true if there was or will be a header crc */ + int done; /* true when done reading gzip header (not used + when writing a gzip file) */ +} gz_header; + +typedef gz_header FAR *gz_headerp; + +/* + The application must update next_in and avail_in when avail_in has dropped + to zero. It must update next_out and avail_out when avail_out has dropped + to zero. The application must initialize zalloc, zfree and opaque before + calling the init function. All other fields are set by the compression + library and must not be updated by the application. + + The opaque value provided by the application will be passed as the first + parameter for calls of zalloc and zfree. This can be useful for custom + memory management. The compression library attaches no meaning to the + opaque value. + + zalloc must return Z_NULL if there is not enough memory for the object. + If zlib is used in a multi-threaded application, zalloc and zfree must be + thread safe. + + On 16-bit systems, the functions zalloc and zfree must be able to allocate + exactly 65536 bytes, but will not be required to allocate more than this if + the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers + returned by zalloc for objects of exactly 65536 bytes *must* have their + offset normalized to zero. The default allocation function provided by this + library ensures this (see zutil.c). To reduce memory requirements and avoid + any allocation of 64K objects, at the expense of compression ratio, compile + the library with -DMAX_WBITS=14 (see zconf.h). + + The fields total_in and total_out can be used for statistics or progress + reports. After compression, total_in holds the total size of the + uncompressed data and may be saved for use in the decompressor (particularly + if the decompressor wants to decompress everything in a single step). +*/ + + /* constants */ + +#define Z_NO_FLUSH 0 +#define Z_PARTIAL_FLUSH 1 +#define Z_SYNC_FLUSH 2 +#define Z_FULL_FLUSH 3 +#define Z_FINISH 4 +#define Z_BLOCK 5 +#define Z_TREES 6 +/* Allowed flush values; see deflate() and inflate() below for details */ + +#define Z_OK 0 +#define Z_STREAM_END 1 +#define Z_NEED_DICT 2 +#define Z_ERRNO (-1) +#define Z_STREAM_ERROR (-2) +#define Z_DATA_ERROR (-3) +#define Z_MEM_ERROR (-4) +#define Z_BUF_ERROR (-5) +#define Z_VERSION_ERROR (-6) +/* Return codes for the compression/decompression functions. Negative values + * are errors, positive values are used for special but normal events. + */ + +#define Z_NO_COMPRESSION 0 +#define Z_BEST_SPEED 1 +#define Z_BEST_COMPRESSION 9 +#define Z_DEFAULT_COMPRESSION (-1) +/* compression levels */ + +#define Z_FILTERED 1 +#define Z_HUFFMAN_ONLY 2 +#define Z_RLE 3 +#define Z_FIXED 4 +#define Z_DEFAULT_STRATEGY 0 +/* compression strategy; see deflateInit2() below for details */ + +#define Z_BINARY 0 +#define Z_TEXT 1 +#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ +#define Z_UNKNOWN 2 +/* Possible values of the data_type field (though see inflate()) */ + +#define Z_DEFLATED 8 +/* The deflate compression method (the only one supported in this version) */ + +#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ + +#define zlib_version zlibVersion() +/* for compatibility with versions < 1.0.2 */ + + + /* basic functions */ + +ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +/* The application can compare zlibVersion and ZLIB_VERSION for consistency. + If the first character differs, the library code actually used is not + compatible with the zlib.h header file used by the application. This check + is automatically made by deflateInit and inflateInit. + */ + +/* +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); + + Initializes the internal stream state for compression. The fields + zalloc, zfree and opaque must be initialized before by the caller. If + zalloc and zfree are set to Z_NULL, deflateInit updates them to use default + allocation functions. + + The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: + 1 gives best speed, 9 gives best compression, 0 gives no compression at all + (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION + requests a default compromise between speed and compression (currently + equivalent to level 6). + + deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if level is not a valid compression level, or + Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible + with the version assumed by the caller (ZLIB_VERSION). msg is set to null + if there is no error message. deflateInit does not perform any compression: + this will be done by deflate(). +*/ + + +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +/* + deflate compresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. deflate performs one or both of the + following actions: + + - Compress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in and avail_in are updated and + processing will resume at this point for the next call of deflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. This action is forced if the parameter flush is non zero. + Forcing flush frequently degrades the compression ratio, so this parameter + should be set only when necessary (in interactive applications). Some + output may be provided even if flush is not set. + + Before the call of deflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating avail_in or avail_out accordingly; avail_out should + never be zero before the call. The application can consume the compressed + output when it wants, for example when the output buffer is full (avail_out + == 0), or after each call of deflate(). If deflate returns Z_OK and with + zero avail_out, it must be called again after making room in the output + buffer because there might be more output pending. + + Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to + decide how much data to accumulate before producing output, in order to + maximize compression. + + If the parameter flush is set to Z_SYNC_FLUSH, all pending output is + flushed to the output buffer and the output is aligned on a byte boundary, so + that the decompressor can get all input data available so far. (In + particular avail_in is zero after the call if enough output space has been + provided before the call.) Flushing may degrade compression for some + compression algorithms and so it should be used only when necessary. This + completes the current deflate block and follows it with an empty stored block + that is three bits plus filler bits to the next byte, followed by four bytes + (00 00 ff ff). + + If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the + output buffer, but the output is not aligned to a byte boundary. All of the + input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. + This completes the current deflate block and follows it with an empty fixed + codes block that is 10 bits long. This assures that enough bytes are output + in order for the decompressor to finish the block before the empty fixed code + block. + + If flush is set to Z_BLOCK, a deflate block is completed and emitted, as + for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to + seven bits of the current block are held to be written as the next byte after + the next deflate block is completed. In this case, the decompressor may not + be provided enough bits at this point in order to complete decompression of + the data provided so far to the compressor. It may need to wait for the next + block to be emitted. This is for advanced applications that need to control + the emission of deflate blocks. + + If flush is set to Z_FULL_FLUSH, all output is flushed as with + Z_SYNC_FLUSH, and the compression state is reset so that decompression can + restart from this point if previous compressed data has been damaged or if + random access is desired. Using Z_FULL_FLUSH too often can seriously degrade + compression. + + If deflate returns with avail_out == 0, this function must be called again + with the same value of the flush parameter and more output space (updated + avail_out), until the flush is complete (deflate returns with non-zero + avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that + avail_out is greater than six to avoid repeated flush markers due to + avail_out == 0 on return. + + If the parameter flush is set to Z_FINISH, pending input is processed, + pending output is flushed and deflate returns with Z_STREAM_END if there was + enough output space; if deflate returns with Z_OK, this function must be + called again with Z_FINISH and more output space (updated avail_out) but no + more input data, until it returns with Z_STREAM_END or an error. After + deflate has returned Z_STREAM_END, the only possible operations on the stream + are deflateReset or deflateEnd. + + Z_FINISH can be used immediately after deflateInit if all the compression + is to be done in a single step. In this case, avail_out must be at least the + value returned by deflateBound (see below). If deflate does not return + Z_STREAM_END, then it must be called again as described above. + + deflate() sets strm->adler to the adler32 checksum of all input read + so far (that is, total_in bytes). + + deflate() may update strm->data_type if it can make a good guess about + the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered + binary. This field is only for information purposes and does not affect the + compression algorithm in any manner. + + deflate() returns Z_OK if some progress has been made (more input + processed or more output produced), Z_STREAM_END if all input has been + consumed and all output has been produced (only when flush is set to + Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example + if next_in or next_out was Z_NULL), Z_BUF_ERROR if no progress is possible + (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not + fatal, and deflate() can be called again with more input and more output + space to continue compressing. +*/ + + +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the + stream state was inconsistent, Z_DATA_ERROR if the stream was freed + prematurely (some input or output was discarded). In the error case, msg + may be set but then points to a static string (which must not be + deallocated). +*/ + + +/* +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); + + Initializes the internal stream state for decompression. The fields + next_in, avail_in, zalloc, zfree and opaque must be initialized before by + the caller. If next_in is not Z_NULL and avail_in is large enough (the + exact value depends on the compression method), inflateInit determines the + compression method from the zlib header and allocates all data structures + accordingly; otherwise the allocation will be deferred to the first call of + inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to + use default allocation functions. + + inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit() does not process any header information -- that is deferred + until inflate() is called. +*/ + + +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +/* + inflate decompresses as much data as possible, and stops when the input + buffer becomes empty or the output buffer becomes full. It may introduce + some output latency (reading input without producing any output) except when + forced to flush. + + The detailed semantics are as follows. inflate performs one or both of the + following actions: + + - Decompress more input starting at next_in and update next_in and avail_in + accordingly. If not all input can be processed (because there is not + enough room in the output buffer), next_in is updated and processing will + resume at this point for the next call of inflate(). + + - Provide more output starting at next_out and update next_out and avail_out + accordingly. inflate() provides as much output as possible, until there is + no more input data or no more space in the output buffer (see below about + the flush parameter). + + Before the call of inflate(), the application should ensure that at least + one of the actions is possible, by providing more input and/or consuming more + output, and updating the next_* and avail_* values accordingly. The + application can consume the uncompressed output when it wants, for example + when the output buffer is full (avail_out == 0), or after each call of + inflate(). If inflate returns Z_OK and with zero avail_out, it must be + called again after making room in the output buffer because there might be + more output pending. + + The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, + Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much + output as possible to the output buffer. Z_BLOCK requests that inflate() + stop if and when it gets to the next deflate block boundary. When decoding + the zlib or gzip format, this will cause inflate() to return immediately + after the header and before the first block. When doing a raw inflate, + inflate() will go ahead and process the first block, and will return when it + gets to the end of that block, or when it runs out of data. + + The Z_BLOCK option assists in appending to or combining deflate streams. + Also to assist in this, on return inflate() will set strm->data_type to the + number of unused bits in the last byte taken from strm->next_in, plus 64 if + inflate() is currently decoding the last block in the deflate stream, plus + 128 if inflate() returned immediately after decoding an end-of-block code or + decoding the complete header up to just before the first byte of the deflate + stream. The end-of-block will not be indicated until all of the uncompressed + data from that block has been written to strm->next_out. The number of + unused bits may in general be greater than seven, except when bit 7 of + data_type is set, in which case the number of unused bits will be less than + eight. data_type is set as noted here every time inflate() returns for all + flush options, and so can be used to determine the amount of currently + consumed input in bits. + + The Z_TREES option behaves as Z_BLOCK does, but it also returns when the + end of each deflate block header is reached, before any actual data in that + block is decoded. This allows the caller to determine the length of the + deflate block header for later use in random access within a deflate block. + 256 is added to the value of strm->data_type when inflate() returns + immediately after reaching the end of the deflate block header. + + inflate() should normally be called until it returns Z_STREAM_END or an + error. However if all decompression is to be performed in a single step (a + single call of inflate), the parameter flush should be set to Z_FINISH. In + this case all pending input is processed and all pending output is flushed; + avail_out must be large enough to hold all the uncompressed data. (The size + of the uncompressed data may have been saved by the compressor for this + purpose.) The next operation on this stream must be inflateEnd to deallocate + the decompression state. The use of Z_FINISH is never required, but can be + used to inform inflate that a faster approach may be used for the single + inflate() call. + + In this implementation, inflate() always flushes as much output as + possible to the output buffer, and always uses the faster approach on the + first call. So the only effect of the flush parameter in this implementation + is on the return value of inflate(), as noted below, or when it returns early + because Z_BLOCK or Z_TREES is used. + + If a preset dictionary is needed after this call (see inflateSetDictionary + below), inflate sets strm->adler to the adler32 checksum of the dictionary + chosen by the compressor and returns Z_NEED_DICT; otherwise it sets + strm->adler to the adler32 checksum of all output produced so far (that is, + total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described + below. At the end of the stream, inflate() checks that its computed adler32 + checksum is equal to that saved by the compressor and returns Z_STREAM_END + only if the checksum is correct. + + inflate() can decompress and check either zlib-wrapped or gzip-wrapped + deflate data. The header type is detected automatically, if requested when + initializing with inflateInit2(). Any information contained in the gzip + header is not retained, so applications that need that information should + instead use raw inflate, see inflateInit2() below, or inflateBack() and + perform their own processing of the gzip header and trailer. + + inflate() returns Z_OK if some progress has been made (more input processed + or more output produced), Z_STREAM_END if the end of the compressed data has + been reached and all uncompressed output has been produced, Z_NEED_DICT if a + preset dictionary is needed at this point, Z_DATA_ERROR if the input data was + corrupted (input stream not conforming to the zlib format or incorrect check + value), Z_STREAM_ERROR if the stream structure was inconsistent (for example + next_in or next_out was Z_NULL), Z_MEM_ERROR if there was not enough memory, + Z_BUF_ERROR if no progress is possible or if there was not enough room in the + output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and + inflate() can be called again with more input and more output space to + continue decompressing. If Z_DATA_ERROR is returned, the application may + then call inflateSync() to look for a good compression block if a partial + recovery of the data is desired. +*/ + + +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +/* + All dynamically allocated data structures for this stream are freed. + This function discards any unprocessed input and does not flush any pending + output. + + inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state + was inconsistent. In the error case, msg may be set but then points to a + static string (which must not be deallocated). +*/ + + + /* Advanced functions */ + +/* + The following functions are needed only in some special applications. +*/ + +/* +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy)); + + This is another version of deflateInit with more compression options. The + fields next_in, zalloc, zfree and opaque must be initialized before by the + caller. + + The method parameter is the compression method. It must be Z_DEFLATED in + this version of the library. + + The windowBits parameter is the base two logarithm of the window size + (the size of the history buffer). It should be in the range 8..15 for this + version of the library. Larger values of this parameter result in better + compression at the expense of memory usage. The default value is 15 if + deflateInit is used instead. + + windowBits can also be -8..-15 for raw deflate. In this case, -windowBits + determines the window size. deflate() will then generate raw deflate data + with no zlib header or trailer, and will not compute an adler32 check value. + + windowBits can also be greater than 15 for optional gzip encoding. Add + 16 to windowBits to write a simple gzip header and trailer around the + compressed data instead of a zlib wrapper. The gzip header will have no + file name, no extra data, no comment, no modification time (set to zero), no + header crc, and the operating system will be set to 255 (unknown). If a + gzip stream is being written, strm->adler is a crc32 instead of an adler32. + + The memLevel parameter specifies how much memory should be allocated + for the internal compression state. memLevel=1 uses minimum memory but is + slow and reduces compression ratio; memLevel=9 uses maximum memory for + optimal speed. The default value is 8. See zconf.h for total memory usage + as a function of windowBits and memLevel. + + The strategy parameter is used to tune the compression algorithm. Use the + value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a + filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no + string match), or Z_RLE to limit match distances to one (run-length + encoding). Filtered data consists mostly of small values with a somewhat + random distribution. In this case, the compression algorithm is tuned to + compress them better. The effect of Z_FILTERED is to force more Huffman + coding and less string matching; it is somewhat intermediate between + Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as + fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The + strategy parameter only affects the compression ratio but not the + correctness of the compressed output even if it is not set appropriately. + Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler + decoder for special applications. + + deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid + method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is + incompatible with the version assumed by the caller (ZLIB_VERSION). msg is + set to null if there is no error message. deflateInit2 does not perform any + compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the compression dictionary from the given byte sequence + without producing any compressed output. This function must be called + immediately after deflateInit, deflateInit2 or deflateReset, before any call + of deflate. The compressor and decompressor must use exactly the same + dictionary (see inflateSetDictionary). + + The dictionary should consist of strings (byte sequences) that are likely + to be encountered later in the data to be compressed, with the most commonly + used strings preferably put towards the end of the dictionary. Using a + dictionary is most useful when the data to be compressed is short and can be + predicted with good accuracy; the data can then be compressed better than + with the default empty dictionary. + + Depending on the size of the compression data structures selected by + deflateInit or deflateInit2, a part of the dictionary may in effect be + discarded, for example if the dictionary is larger than the window size + provided in deflateInit or deflateInit2. Thus the strings most likely to be + useful should be put at the end of the dictionary, not at the front. In + addition, the current implementation of deflate will use at most the window + size minus 262 bytes of the provided dictionary. + + Upon return of this function, strm->adler is set to the adler32 value + of the dictionary; the decompressor may later use this value to determine + which dictionary has been used by the compressor. (The adler32 value + applies to the whole dictionary even if only a subset of the dictionary is + actually used by the compressor.) If a raw deflate was requested, then the + adler32 value is not computed and strm->adler is not set. + + deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent (for example if deflate has already been called for this stream + or if the compression method is bsort). deflateSetDictionary does not + perform any compression: this will be done by deflate(). +*/ + +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when several compression strategies will be + tried, for example when there are several ways of pre-processing the input + data with a filter. The streams that will be discarded should then be freed + by calling deflateEnd. Note that deflateCopy duplicates the internal + compression state which can be quite large, so this strategy is slow and can + consume lots of memory. + + deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +/* + This function is equivalent to deflateEnd followed by deflateInit, + but does not free and reallocate all the internal compression state. The + stream will keep the same compression level and any other attributes that + may have been set by deflateInit2. + + deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, + int level, + int strategy)); +/* + Dynamically update the compression level and compression strategy. The + interpretation of level and strategy is as in deflateInit2. This can be + used to switch between compression and straight copy of the input data, or + to switch to a different kind of input data requiring a different strategy. + If the compression level is changed, the input available so far is + compressed with the old level (and may be flushed); the new level will take + effect only at the next call of deflate(). + + Before the call of deflateParams, the stream state must be set as for + a call of deflate(), since the currently available input may have to be + compressed and flushed. In particular, strm->avail_out must be non-zero. + + deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source + stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR if + strm->avail_out was zero. +*/ + +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain)); +/* + Fine tune deflate's internal compression parameters. This should only be + used by someone who understands the algorithm used by zlib's deflate for + searching for the best matching string, and even then only by the most + fanatic optimizer trying to squeeze out the last compressed bit for their + specific input data. Read the deflate.c source code for the meaning of the + max_lazy, good_length, nice_length, and max_chain parameters. + + deflateTune() can be called after deflateInit() or deflateInit2(), and + returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. + */ + +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, + uLong sourceLen)); +/* + deflateBound() returns an upper bound on the compressed size after + deflation of sourceLen bytes. It must be called after deflateInit() or + deflateInit2(), and after deflateSetHeader(), if used. This would be used + to allocate an output buffer for deflation in a single pass, and so would be + called before deflate(). +*/ + +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + deflatePrime() inserts bits in the deflate output stream. The intent + is that this function is used to start off the deflate output with the bits + leftover from a previous deflate stream when appending to it. As such, this + function can only be used for raw deflate, and must be used before the first + deflate() call after a deflateInit2() or deflateReset(). bits must be less + than or equal to 16, and that many of the least significant bits of value + will be inserted in the output. + + deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, + gz_headerp head)); +/* + deflateSetHeader() provides gzip header information for when a gzip + stream is requested by deflateInit2(). deflateSetHeader() may be called + after deflateInit2() or deflateReset() and before the first call of + deflate(). The text, time, os, extra field, name, and comment information + in the provided gz_header structure are written to the gzip header (xflag is + ignored -- the extra flags are set according to the compression level). The + caller must assure that, if not Z_NULL, name and comment are terminated with + a zero byte, and that if extra is not Z_NULL, that extra_len bytes are + available there. If hcrc is true, a gzip header crc is included. Note that + the current versions of the command-line version of gzip (up through version + 1.3.x) do not support header crc's, and will report that it is a "multi-part + gzip file" and give up. + + If deflateSetHeader is not used, the default gzip header has text false, + the time set to zero, and os set to 255, with no extra, name, or comment + fields. The gzip header is returned to the default state by deflateReset(). + + deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, + int windowBits)); + + This is another version of inflateInit with an extra parameter. The + fields next_in, avail_in, zalloc, zfree and opaque must be initialized + before by the caller. + + The windowBits parameter is the base two logarithm of the maximum window + size (the size of the history buffer). It should be in the range 8..15 for + this version of the library. The default value is 15 if inflateInit is used + instead. windowBits must be greater than or equal to the windowBits value + provided to deflateInit2() while compressing, or it must be equal to 15 if + deflateInit2() was not used. If a compressed stream with a larger window + size is given as input, inflate() will return with the error code + Z_DATA_ERROR instead of trying to allocate a larger window. + + windowBits can also be zero to request that inflate use the window size in + the zlib header of the compressed stream. + + windowBits can also be -8..-15 for raw inflate. In this case, -windowBits + determines the window size. inflate() will then process raw deflate data, + not looking for a zlib or gzip header, not generating a check value, and not + looking for any check values for comparison at the end of the stream. This + is for use with other formats that use the deflate compressed data format + such as zip. Those formats provide their own check values. If a custom + format is developed using the raw deflate format for compressed data, it is + recommended that a check value such as an adler32 or a crc32 be applied to + the uncompressed data as is done in the zlib, gzip, and zip formats. For + most applications, the zlib format should be used as is. Note that comments + above on the use in deflateInit2() applies to the magnitude of windowBits. + + windowBits can also be greater than 15 for optional gzip decoding. Add + 32 to windowBits to enable zlib and gzip decoding with automatic header + detection, or add 16 to decode only the gzip format (the zlib format will + return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a + crc32 instead of an adler32. + + inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_VERSION_ERROR if the zlib library version is incompatible with the + version assumed by the caller, or Z_STREAM_ERROR if the parameters are + invalid, such as a null pointer to the structure. msg is set to null if + there is no error message. inflateInit2 does not perform any decompression + apart from possibly reading the zlib header if present: actual decompression + will be done by inflate(). (So next_in and avail_in may be modified, but + next_out and avail_out are unused and unchanged.) The current implementation + of inflateInit2() does not process any header information -- that is + deferred until inflate() is called. +*/ + +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, + const Bytef *dictionary, + uInt dictLength)); +/* + Initializes the decompression dictionary from the given uncompressed byte + sequence. This function must be called immediately after a call of inflate, + if that call returned Z_NEED_DICT. The dictionary chosen by the compressor + can be determined from the adler32 value returned by that call of inflate. + The compressor and decompressor must use exactly the same dictionary (see + deflateSetDictionary). For raw inflate, this function can be called + immediately after inflateInit2() or inflateReset() and before any call of + inflate() to set the dictionary. The application must insure that the + dictionary that was used for compression is provided. + + inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a + parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is + inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the + expected one (incorrect adler32 value). inflateSetDictionary does not + perform any decompression: this will be done by subsequent calls of + inflate(). +*/ + +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +/* + Skips invalid compressed data until a full flush point (see above the + description of deflate with Z_FULL_FLUSH) can be found, or until all + available input is skipped. No output is provided. + + inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR + if no more input was provided, Z_DATA_ERROR if no flush point has been + found, or Z_STREAM_ERROR if the stream structure was inconsistent. In the + success case, the application may save the current current value of total_in + which indicates where valid compressed data was found. In the error case, + the application may repeatedly call inflateSync, providing more input each + time, until success or end of the input data. +*/ + +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, + z_streamp source)); +/* + Sets the destination stream as a complete copy of the source stream. + + This function can be useful when randomly accessing a large stream. The + first pass through the stream can periodically record the inflate state, + allowing restarting inflate at those points when randomly accessing the + stream. + + inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_STREAM_ERROR if the source stream state was inconsistent + (such as zalloc being Z_NULL). msg is left unchanged in both source and + destination. +*/ + +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +/* + This function is equivalent to inflateEnd followed by inflateInit, + but does not free and reallocate all the internal decompression state. The + stream will keep attributes that may have been set by inflateInit2. + + inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL). +*/ + +ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, + int windowBits)); +/* + This function is the same as inflateReset, but it also permits changing + the wrap and window size requests. The windowBits parameter is interpreted + the same as it is for inflateInit2. + + inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent (such as zalloc or state being Z_NULL), or if + the windowBits parameter is invalid. +*/ + +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, + int bits, + int value)); +/* + This function inserts bits in the inflate input stream. The intent is + that this function is used to start inflating at a bit position in the + middle of a byte. The provided bits will be used before any bytes are used + from next_in. This function should only be used with raw inflate, and + should be used before the first inflate() call after inflateInit2() or + inflateReset(). bits must be less than or equal to 16, and that many of the + least significant bits of value will be inserted in the input. + + If bits is negative, then the input stream bit buffer is emptied. Then + inflatePrime() can be called again to put bits in the buffer. This is used + to clear out bits leftover after feeding inflate a block description prior + to feeding inflate codes. + + inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +/* + This function returns two values, one in the lower 16 bits of the return + value, and the other in the remaining upper bits, obtained by shifting the + return value down 16 bits. If the upper value is -1 and the lower value is + zero, then inflate() is currently decoding information outside of a block. + If the upper value is -1 and the lower value is non-zero, then inflate is in + the middle of a stored block, with the lower value equaling the number of + bytes from the input remaining to copy. If the upper value is not -1, then + it is the number of bits back from the current bit position in the input of + the code (literal or length/distance pair) currently being processed. In + that case the lower value is the number of bytes already emitted for that + code. + + A code is being processed if inflate is waiting for more input to complete + decoding of the code, or if it has completed decoding but is waiting for + more output space to write the literal or match data. + + inflateMark() is used to mark locations in the input data for random + access, which may be at bit positions, and to note those cases where the + output of a code may span boundaries of random access blocks. The current + location in the input stream can be determined from avail_in and data_type + as noted in the description for the Z_BLOCK flush parameter for inflate. + + inflateMark returns the value noted above or -1 << 16 if the provided + source stream state was inconsistent. +*/ + +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, + gz_headerp head)); +/* + inflateGetHeader() requests that gzip header information be stored in the + provided gz_header structure. inflateGetHeader() may be called after + inflateInit2() or inflateReset(), and before the first call of inflate(). + As inflate() processes the gzip stream, head->done is zero until the header + is completed, at which time head->done is set to one. If a zlib stream is + being decoded, then head->done is set to -1 to indicate that there will be + no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be + used to force inflate() to return immediately after header processing is + complete and before any actual data is decompressed. + + The text, time, xflags, and os fields are filled in with the gzip header + contents. hcrc is set to true if there is a header CRC. (The header CRC + was valid if done is set to one.) If extra is not Z_NULL, then extra_max + contains the maximum number of bytes to write to extra. Once done is true, + extra_len contains the actual extra field length, and extra contains the + extra field, or that field truncated if extra_max is less than extra_len. + If name is not Z_NULL, then up to name_max characters are written there, + terminated with a zero unless the length is greater than name_max. If + comment is not Z_NULL, then up to comm_max characters are written there, + terminated with a zero unless the length is greater than comm_max. When any + of extra, name, or comment are not Z_NULL and the respective field is not + present in the header, then that field is set to Z_NULL to signal its + absence. This allows the use of deflateSetHeader() with the returned + structure to duplicate the header. However if those fields are set to + allocated memory, then the application will need to save those pointers + elsewhere so that they can be eventually freed. + + If inflateGetHeader is not used, then the header information is simply + discarded. The header is always checked for validity, including the header + CRC if present. inflateReset() will reset the process to discard the header + information. The application would need to call inflateGetHeader() again to + retrieve the header from the next gzip stream. + + inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source + stream state was inconsistent. +*/ + +/* +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, + unsigned char FAR *window)); + + Initialize the internal stream state for decompression using inflateBack() + calls. The fields zalloc, zfree and opaque in strm must be initialized + before the call. If zalloc and zfree are Z_NULL, then the default library- + derived memory allocation routines are used. windowBits is the base two + logarithm of the window size, in the range 8..15. window is a caller + supplied buffer of that size. Except for special applications where it is + assured that deflate was used with small window sizes, windowBits must be 15 + and a 32K byte window must be supplied to be able to decompress general + deflate streams. + + See inflateBack() for the usage of these routines. + + inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of + the paramaters are invalid, Z_MEM_ERROR if the internal state could not be + allocated, or Z_VERSION_ERROR if the version of the library does not match + the version of the header file. +*/ + +typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *)); +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); + +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc)); +/* + inflateBack() does a raw inflate with a single call using a call-back + interface for input and output. This is more efficient than inflate() for + file i/o applications in that it avoids copying between the output and the + sliding window by simply making the window itself the output buffer. This + function trusts the application to not change the output buffer passed by + the output function, at least until inflateBack() returns. + + inflateBackInit() must be called first to allocate the internal state + and to initialize the state with the user-provided window buffer. + inflateBack() may then be used multiple times to inflate a complete, raw + deflate stream with each call. inflateBackEnd() is then called to free the + allocated state. + + A raw deflate stream is one with no zlib or gzip header or trailer. + This routine would normally be used in a utility that reads zip or gzip + files and writes out uncompressed files. The utility would decode the + header and process the trailer on its own, hence this routine expects only + the raw deflate stream to decompress. This is different from the normal + behavior of inflate(), which expects either a zlib or gzip header and + trailer around the deflate stream. + + inflateBack() uses two subroutines supplied by the caller that are then + called by inflateBack() for input and output. inflateBack() calls those + routines until it reads a complete deflate stream and writes out all of the + uncompressed data, or until it encounters an error. The function's + parameters and return types are defined above in the in_func and out_func + typedefs. inflateBack() will call in(in_desc, &buf) which should return the + number of bytes of provided input, and a pointer to that input in buf. If + there is no input available, in() must return zero--buf is ignored in that + case--and inflateBack() will return a buffer error. inflateBack() will call + out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. out() + should return zero on success, or non-zero on failure. If out() returns + non-zero, inflateBack() will return with an error. Neither in() nor out() + are permitted to change the contents of the window provided to + inflateBackInit(), which is also the buffer that out() uses to write from. + The length written by out() will be at most the window size. Any non-zero + amount of input may be provided by in(). + + For convenience, inflateBack() can be provided input on the first call by + setting strm->next_in and strm->avail_in. If that input is exhausted, then + in() will be called. Therefore strm->next_in must be initialized before + calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called + immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in + must also be initialized, and then if strm->avail_in is not zero, input will + initially be taken from strm->next_in[0 .. strm->avail_in - 1]. + + The in_desc and out_desc parameters of inflateBack() is passed as the + first parameter of in() and out() respectively when they are called. These + descriptors can be optionally used to pass any information that the caller- + supplied in() and out() functions need to do their job. + + On return, inflateBack() will set strm->next_in and strm->avail_in to + pass back any unused input that was provided by the last in() call. The + return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR + if in() or out() returned an error, Z_DATA_ERROR if there was a format error + in the deflate stream (in which case strm->msg is set to indicate the nature + of the error), or Z_STREAM_ERROR if the stream was not properly initialized. + In the case of Z_BUF_ERROR, an input or output error can be distinguished + using strm->next_in which will be Z_NULL only if in() returned an error. If + strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning + non-zero. (in() will always be called before out(), so strm->next_in is + assured to be defined if out() returns non-zero.) Note that inflateBack() + cannot return Z_OK. +*/ + +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +/* + All memory allocated by inflateBackInit() is freed. + + inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream + state was inconsistent. +*/ + +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +/* Return flags indicating compile-time options. + + Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: + 1.0: size of uInt + 3.2: size of uLong + 5.4: size of voidpf (pointer) + 7.6: size of z_off_t + + Compiler, assembler, and debug options: + 8: DEBUG + 9: ASMV or ASMINF -- use ASM code + 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention + 11: 0 (reserved) + + One-time table building (smaller code, but not thread-safe if true): + 12: BUILDFIXED -- build static block decoding tables when needed + 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed + 14,15: 0 (reserved) + + Library content (indicates missing functionality): + 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking + deflate code when not needed) + 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect + and decode gzip streams (to avoid linking crc code) + 18-19: 0 (reserved) + + Operation variations (changes in library functionality): + 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate + 21: FASTEST -- deflate algorithm with only one, lowest compression level + 22,23: 0 (reserved) + + The sprintf variant used by gzprintf (zero is best): + 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format + 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! + 26: 0 = returns value, 1 = void -- 1 means inferred string length returned + + Remainder: + 27-31: 0 (reserved) + */ + + + /* utility functions */ + +/* + The following utility functions are implemented on top of the basic + stream-oriented functions. To simplify the interface, some default options + are assumed (compression level and memory usage, standard memory allocation + functions). The source code of these utility functions can be modified if + you need special options. +*/ + +ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Compresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer. +*/ + +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level)); +/* + Compresses the source buffer into the destination buffer. The level + parameter has the same meaning as in deflateInit. sourceLen is the byte + length of the source buffer. Upon entry, destLen is the total size of the + destination buffer, which must be at least the value returned by + compressBound(sourceLen). Upon exit, destLen is the actual size of the + compressed buffer. + + compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough + memory, Z_BUF_ERROR if there was not enough room in the output buffer, + Z_STREAM_ERROR if the level parameter is invalid. +*/ + +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +/* + compressBound() returns an upper bound on the compressed size after + compress() or compress2() on sourceLen bytes. It would be used before a + compress() or compress2() call to allocate the destination buffer. +*/ + +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen)); +/* + Decompresses the source buffer into the destination buffer. sourceLen is + the byte length of the source buffer. Upon entry, destLen is the total size + of the destination buffer, which must be large enough to hold the entire + uncompressed data. (The size of the uncompressed data must have been saved + previously by the compressor and transmitted to the decompressor by some + mechanism outside the scope of this compression library.) Upon exit, destLen + is the actual size of the uncompressed buffer. + + uncompress returns Z_OK if success, Z_MEM_ERROR if there was not + enough memory, Z_BUF_ERROR if there was not enough room in the output + buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. +*/ + + + /* gzip file access functions */ + +/* + This library supports reading and writing files in gzip (.gz) format with + an interface similar to that of stdio, using the functions that start with + "gz". The gzip format is different from the zlib format. gzip is a gzip + wrapper, documented in RFC 1952, wrapped around a deflate stream. +*/ + +typedef voidp gzFile; /* opaque gzip file descriptor */ + +/* +ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); + + Opens a gzip (.gz) file for reading or writing. The mode parameter is as + in fopen ("rb" or "wb") but can also include a compression level ("wb9") or + a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only + compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' + for fixed code compression as in "wb9F". (See the description of + deflateInit2 for more information about the strategy parameter.) Also "a" + can be used instead of "w" to request that the gzip stream that will be + written be appended to the file. "+" will result in an error, since reading + and writing to the same gzip file is not supported. + + gzopen can be used to read a file which is not in gzip format; in this + case gzread will directly read from the file without decompression. + + gzopen returns NULL if the file could not be opened, if there was + insufficient memory to allocate the gzFile state, or if an invalid mode was + specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). + errno can be checked to determine if the reason gzopen failed was that the + file could not be opened. +*/ + +ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +/* + gzdopen associates a gzFile with the file descriptor fd. File descriptors + are obtained from calls like open, dup, creat, pipe or fileno (if the file + has been previously opened with fopen). The mode parameter is as in gzopen. + + The next call of gzclose on the returned gzFile will also close the file + descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor + fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, + mode);. The duplicated descriptor should be saved to avoid a leak, since + gzdopen does not close fd if it fails. + + gzdopen returns NULL if there was insufficient memory to allocate the + gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not + provided, or '+' was provided), or if fd is -1. The file descriptor is not + used until the next gz* read, write, seek, or close operation, so gzdopen + will not detect if fd is invalid (unless fd is -1). +*/ + +ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +/* + Set the internal buffer size used by this library's functions. The + default buffer size is 8192 bytes. This function must be called after + gzopen() or gzdopen(), and before any other calls that read or write the + file. The buffer memory allocation is always deferred to the first read or + write. Two buffers are allocated, either both of the specified size when + writing, or one of the specified size and the other twice that size when + reading. A larger buffer size of, for example, 64K or 128K bytes will + noticeably increase the speed of decompression (reading). + + The new buffer size also affects the maximum length for gzprintf(). + + gzbuffer() returns 0 on success, or -1 on failure, such as being called + too late. +*/ + +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +/* + Dynamically update the compression level or strategy. See the description + of deflateInit2 for the meaning of these parameters. + + gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not + opened for writing. +*/ + +ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +/* + Reads the given number of uncompressed bytes from the compressed file. If + the input file was not in gzip format, gzread copies the given number of + bytes into the buffer. + + After reaching the end of a gzip stream in the input, gzread will continue + to read, looking for another gzip stream, or failing that, reading the rest + of the input file directly without decompression. The entire input file + will be read if gzread is called until it returns less than the requested + len. + + gzread returns the number of uncompressed bytes actually read, less than + len for end of file, or -1 for error. +*/ + +ZEXTERN int ZEXPORT gzwrite OF((gzFile file, + voidpc buf, unsigned len)); +/* + Writes the given number of uncompressed bytes into the compressed file. + gzwrite returns the number of uncompressed bytes written or 0 in case of + error. +*/ + +ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...)); +/* + Converts, formats, and writes the arguments to the compressed file under + control of the format string, as in fprintf. gzprintf returns the number of + uncompressed bytes actually written, or 0 in case of error. The number of + uncompressed bytes written is limited to 8191, or one less than the buffer + size given to gzbuffer(). The caller should assure that this limit is not + exceeded. If it is exceeded, then gzprintf() will return an error (0) with + nothing written. In this case, there may also be a buffer overflow with + unpredictable consequences, which is possible only if zlib was compiled with + the insecure functions sprintf() or vsprintf() because the secure snprintf() + or vsnprintf() functions were not available. This can be determined using + zlibCompileFlags(). +*/ + +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +/* + Writes the given null-terminated string to the compressed file, excluding + the terminating null character. + + gzputs returns the number of characters written, or -1 in case of error. +*/ + +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +/* + Reads bytes from the compressed file until len-1 characters are read, or a + newline character is read and transferred to buf, or an end-of-file + condition is encountered. If any characters are read or if len == 1, the + string is terminated with a null character. If no characters are read due + to an end-of-file or len < 1, then the buffer is left untouched. + + gzgets returns buf which is a null-terminated string, or it returns NULL + for end-of-file or in case of error. If there was an error, the contents at + buf are indeterminate. +*/ + +ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +/* + Writes c, converted to an unsigned char, into the compressed file. gzputc + returns the value that was written, or -1 in case of error. +*/ + +ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +/* + Reads one byte from the compressed file. gzgetc returns this byte or -1 + in case of end of file or error. +*/ + +ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +/* + Push one character back onto the stream to be read as the first character + on the next read. At least one character of push-back is allowed. + gzungetc() returns the character pushed, or -1 on failure. gzungetc() will + fail if c is -1, and may fail if a character has been pushed but not read + yet. If gzungetc is used immediately after gzopen or gzdopen, at least the + output buffer size of pushed characters is allowed. (See gzbuffer above.) + The pushed character will be discarded if the stream is repositioned with + gzseek() or gzrewind(). +*/ + +ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +/* + Flushes all pending output into the compressed file. The parameter flush + is as in the deflate() function. The return value is the zlib error number + (see function gzerror below). gzflush is only permitted when writing. + + If the flush parameter is Z_FINISH, the remaining data is written and the + gzip stream is completed in the output. If gzwrite() is called again, a new + gzip stream will be started in the output. gzread() is able to read such + concatented gzip streams. + + gzflush should be called only when strictly necessary because it will + degrade compression if called too often. +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, + z_off_t offset, int whence)); + + Sets the starting position for the next gzread or gzwrite on the given + compressed file. The offset represents a number of bytes in the + uncompressed data stream. The whence parameter is defined as in lseek(2); + the value SEEK_END is not supported. + + If the file is opened for reading, this function is emulated but can be + extremely slow. If the file is opened for writing, only forward seeks are + supported; gzseek then compresses a sequence of zeroes up to the new + starting position. + + gzseek returns the resulting offset location as measured in bytes from + the beginning of the uncompressed stream, or -1 in case of error, in + particular if the file is opened for writing and the new starting position + would be before the current position. +*/ + +ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +/* + Rewinds the given file. This function is supported only for reading. + + gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); + + Returns the starting position for the next gzread or gzwrite on the given + compressed file. This position represents a number of bytes in the + uncompressed data stream, and is zero when starting, even if appending or + reading a gzip stream from the middle of a file using gzdopen(). + + gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) +*/ + +/* +ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); + + Returns the current offset in the file being read or written. This offset + includes the count of bytes that precede the gzip stream, for example when + appending or when using gzdopen() for reading. When reading, the offset + does not include as yet unused buffered input. This information can be used + for a progress indicator. On error, gzoffset() returns -1. +*/ + +ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +/* + Returns true (1) if the end-of-file indicator has been set while reading, + false (0) otherwise. Note that the end-of-file indicator is set only if the + read tried to go past the end of the input, but came up short. Therefore, + just like feof(), gzeof() may return false even if there is no more data to + read, in the event that the last read request was for the exact number of + bytes remaining in the input file. This will happen if the input file size + is an exact multiple of the buffer size. + + If gzeof() returns true, then the read functions will return no more data, + unless the end-of-file indicator is reset by gzclearerr() and the input file + has grown since the previous end of file was detected. +*/ + +ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +/* + Returns true (1) if file is being copied directly while reading, or false + (0) if file is a gzip stream being decompressed. This state can change from + false to true while reading the input file if the end of a gzip stream is + reached, but is followed by data that is not another gzip stream. + + If the input file is empty, gzdirect() will return true, since the input + does not contain a gzip stream. + + If gzdirect() is used immediately after gzopen() or gzdopen() it will + cause buffers to be allocated to allow reading the file to determine if it + is a gzip file. Therefore if gzbuffer() is used, it should be called before + gzdirect(). +*/ + +ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +/* + Flushes all pending output if necessary, closes the compressed file and + deallocates the (de)compression state. Note that once file is closed, you + cannot call gzerror with file, since its structures have been deallocated. + gzclose must not be called more than once on the same file, just as free + must not be called more than once on the same allocation. + + gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a + file operation error, or Z_OK on success. +*/ + +ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +/* + Same as gzclose(), but gzclose_r() is only for use when reading, and + gzclose_w() is only for use when writing or appending. The advantage to + using these instead of gzclose() is that they avoid linking in zlib + compression or decompression code that is not used when only reading or only + writing respectively. If gzclose() is used, then both compression and + decompression code will be included the application when linking to a static + zlib library. +*/ + +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +/* + Returns the error message for the last error which occurred on the given + compressed file. errnum is set to zlib error number. If an error occurred + in the file system and not in the compression library, errnum is set to + Z_ERRNO and the application may consult errno to get the exact error code. + + The application must not modify the returned string. Future calls to + this function may invalidate the previously returned string. If file is + closed, then the string previously returned by gzerror will no longer be + available. + + gzerror() should be used to distinguish errors from end-of-file for those + functions above that do not distinguish those cases in their return values. +*/ + +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +/* + Clears the error and end-of-file flags for file. This is analogous to the + clearerr() function in stdio. This is useful for continuing to read a gzip + file that is being written concurrently. +*/ + + + /* checksum functions */ + +/* + These functions are not related to compression but are exported + anyway because they might be useful in applications using the compression + library. +*/ + +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +/* + Update a running Adler-32 checksum with the bytes buf[0..len-1] and + return the updated checksum. If buf is Z_NULL, this function returns the + required initial value for the checksum. + + An Adler-32 checksum is almost as reliable as a CRC32 but can be computed + much faster. + + Usage example: + + uLong adler = adler32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + adler = adler32(adler, buffer, length); + } + if (adler != original_adler) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, + z_off_t len2)); + + Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 + and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for + each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of + seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. +*/ + +ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +/* + Update a running CRC-32 with the bytes buf[0..len-1] and return the + updated CRC-32. If buf is Z_NULL, this function returns the required + initial value for the for the crc. Pre- and post-conditioning (one's + complement) is performed within this function so it shouldn't be done by the + application. + + Usage example: + + uLong crc = crc32(0L, Z_NULL, 0); + + while (read_buffer(buffer, length) != EOF) { + crc = crc32(crc, buffer, length); + } + if (crc != original_crc) error(); +*/ + +/* +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); + + Combine two CRC-32 check values into one. For two sequences of bytes, + seq1 and seq2 with lengths len1 and len2, CRC-32 check values were + calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 + check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and + len2. +*/ + + + /* various hacks, don't look :) */ + +/* deflateInit and inflateInit are macros to allow checking the zlib version + * and the compiler's view of z_stream: + */ +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size)); +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, + const char *version, int stream_size)); +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size)); +#define deflateInit(strm, level) \ + deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit(strm) \ + inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ + deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ + (strategy), ZLIB_VERSION, sizeof(z_stream)) +#define inflateInit2(strm, windowBits) \ + inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) +#define inflateBackInit(strm, windowBits, window) \ + inflateBackInit_((strm), (windowBits), (window), \ + ZLIB_VERSION, sizeof(z_stream)) + +/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or + * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if + * both are true, the application gets the *64 functions, and the regular + * functions are changed to 64 bits) -- in case these are set on systems + * without large file support, _LFS64_LARGEFILE must also be true + */ +#if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0 + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); + ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); +#endif + +#if !defined(ZLIB_INTERNAL) && _FILE_OFFSET_BITS-0 == 64 && _LFS64_LARGEFILE-0 +# define gzopen gzopen64 +# define gzseek gzseek64 +# define gztell gztell64 +# define gzoffset gzoffset64 +# define adler32_combine adler32_combine64 +# define crc32_combine crc32_combine64 +# ifdef _LARGEFILE64_SOURCE + ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); +# endif +#else + ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); + ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); + ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); + ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); + ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); +#endif + +/* hack for buggy compilers */ +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL) + struct internal_state {int dummy;}; +#endif + +/* undocumented functions */ +ZEXTERN const char * ZEXPORT zError OF((int)); +ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); +ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void)); +ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); + +#ifdef __cplusplus +} +#endif + +#endif /* ZLIB_H */ diff --git a/lib/libpng14.a b/lib/libpng14.a new file mode 100644 index 0000000000000000000000000000000000000000..3ce34d79355fb530c009d6ca38a151a33ec9cbce GIT binary patch literal 210758 zcmeFa3t&~%l{bF!03yaFYSgHxM+FNN5s)GXXh4oaB^Z(TEQXNWJTNbldkI(~7ZNl# z*JwJUt)0QvPHo5f810OX)WJ?bO3<NgY-tOEZK~8Jy{V=)qfw*z|JGW2?{m)0O~AG@ z^ZmbXq9kjtz4qE`uf6u#?|sglUszjIcKP^=ZU4`VnRBPlymap8r(bH@(>cof+qN&A zJ!6)nSUujdlCHF@bH4Il|8HT5W&Kb7tEsT8|G)oh-ep<;!~c@9gVtZ=-{&%|r2o_Y zeRaE)^lASce#1)A|9*3ml@$N)t$VGc|H6OC=iO%gkN<n6%t}u5@6h8`@~8Rt<^@*r zNdJD{Z6*KL|0}4eDlMoB1PkiQOAFR)2nOmbK_OUFStEfv3o9zBixgZ^8wdzk8=!<m zwJN5lu%akbQ5Xz(P_+RHmsgck7t{r7Lq$PJSsXy9dc*JtrYx^24;EaaC<}vy1(ap2 zgb6Gt22z4dueb@O6e5*Z7t{n*0%lfTEs;glRqFz^!Gd6QL2XIVj2SakE|jRKx@JRd zd1;vvkx&)oYe+pv;_@yF6cz_+N5a*WS62ybSz%RiMWCRtt{_x(dsTJ4LW|DsMDYWK zl|orqR1~PIBaW21pej_kMrSyC)*7gyrnb7+sII6iP;`4i(UKLp1tsO{1I4Ofj9t29 z@d^o3#jLsJ>cwt|QussO^h95}Fn6I#L7{kxvZdFrbSeC~RbO?LHXZP)xpLt$m$J?m zs#$Wghca*3O2<RFXsIWMx)oP1^28y;LKZ-^tN}N!{K_ly+)yyEUezL%i$Vo6J+Vu3 zJvjzfEWh53tAjXhNYz|HQ5hhQ%szYpnnq#J)O$^!wi0z#3A-tQ@rO|1F2macff{WO z!??mCiVH$@FfPuophTGrm7%t}-ovJ-y0Qj**<99yN=lHVuKZ5bDv7+jYF%MPxv~vH zFx!f9Nakfj#VRN&gh>@t7Or>2l>95X)w?m&B0Ov<2(dgqLt#`76e_PQEDaRYmlp@i zgu9C@3;5d_8G3P`#!FaKT~S?I5Zq9sN=AuG$}55>t{+)m1zbg8Q6LWQ)ssKP`hprX zo{G8xR98V|0LfkXHjENCaw?8NbFT>$K`&$wF30r+)g>iV4VC3ZwbfM~1#K8H#-x!f zU1lapd_)mkP8G`JlESA~u?e~;*C~)TU8kT!-X>2t*D2^wJcZjxiNbA&6mpvrg<SVR zA=iCS$aNnSa@_}oT=&6o#(hx8bstP=+y{kRH^3p&>^WqbJ%xM?+M~eQ(lyjql-3q* zK>r0*dg44S)pRz*%WHJQ8YgE)O`O|=zilx?X%_wnX^wI2l(XUnoT#0m2PAnt4F?$E zQ&m{$L5I+G3ND!;2EralsHB?{G<x^~igH6G=vC`flcv}}ZEdw`LB#>B0Lf1hsov17 zbA@oLPg6L{Ri~v8t^q1UovCAmaE(|~m~KNMT%*(!#?32)+Y2a!+fEe1HC}~qyD^1u zO;}TyZciaxLsp2Ou}O_^Zc;s$LfpAB4pAPDP`0ZoM@9#17j8wPM%I*91;||sSuw^x z)Y}-xDQLzi4{K-@k}BL~z(`ma#!`lm9Nd~xWd;<et1naoND9>y7TsQ6RVq1YgrB6Y zth~h2aU1ChSQ);=kg`HMZDLkfTwG9CQB$VIg*y9q96ClC|HV-%Y-M$oa@x?3;EcLl zK@mqq@gXprE3cux$;bpMpDws@2Wtzf>Po6>D|z56yp2b2BaJ($D_j>SkQS=PFNEPH z>qRihjM>7lzP21gZn%DLkQ?<d1o?<srEp0mjo%$#d$EBk<pBigwq*&sO<Bb+UZ{pr zDr{P|gx!YihP{1@VBOwD!fsPm@unrKu<;HOcAbM89-fQa{DsPG{StN?zYM=`4{WHf zuJx%SXj-l$aT~6L-F7Qs*IP)~?eZk-`U(|qx;+WIu0zrL8>1k_PrFSNRw)stX?bk| z)Wu}PW;CRk5GGLUvMECIhm9#G;7;p?<Mp_kNoles`Ef8*13Qz+p<tCiVaG%RM-Q!W zGMo}2)e#HdIAUX{dYZ{p-uWjZeA7m97>bO#c{BKC943JtS=`o994ILaRj7n6+VIjN zc+sOvpwq?UODaOTSJfmQ6tPt`qGkpX;yLh|0Q^e8GaPc`M05!o)##aUNo{qdnwl2` z)r8a+7c8&Duv&Pi`W04QeI|&|H7~?&jVZa@Dl-I<2bI!OXo>Y8be&3sR|vrjt5vT- zGjo|ilm$Yy<#oaGB4tSwrAIC_4X+5S3skrwd7~-=m7_&NCfIf9hQx{M(a5Un3ozXo zA!E!&%Bq!XajTq0a~`vFBjP$1zsVWH<<eoGR#@cDR0+2RJy~gObx6B*!a;s?X1Y6Z zF>#&d9ihUipl{Y$T3A`>>3;+3YcNrFwNO)75eTBe)8b3%8W%5gGRU4$FtcD5QOt4U z$vG1$E`J`B$Mf<G*j)x5q}TOR$+&rsph8|bVgl1O^E}_{dQ6O`M~9OgITa#9RWyDO z@i^!i_8?qTR;@-&nh^~(yrtLp;e#0+6E_kWrYfRyr#2$WnoxN~G1o#JR`LQE<ZyKv zIpa+QJUkVSkgCV{bY3$6mEUYsrert;!NN5a%IA}OYJ6H-$n#tyhO}~{cW;d#l~1#N zy()(>T$d7&P?<Uk*?FW;-p=cLd?@Yuw5#$G`f-{P3O5U^GM$t1s;Qmo3<T${zsg#u z^g%xQ`odbz+7Y=c?G|XXNnta@^vv8Sl^J8pK+qE_2p<hKpo;3M(zTTs`+73uR0cy? z3dUrL1x;S^bbCaNsjEhB<3Xc8RNb;3&(;`}XH3gTnuyljUalICL3!t@jHJd<ATx8( z8e@5^Jq(LgwjlMZ2_i6kT55*4T7JUB%dg}7V;Cihe_F-JVN*fIic2wrOfRK7)O0E1 zaEhlp2z4praEj75t5lis)I$&9T$~wGxF}Opl)aQ!Dv@^BER^iWOTb0chD2uLjU?l- zE{@;&^=||Z3tcixZT#A+$ID{=j9CR0g%_b;oK}5tJPPt8z(SA&*xFFAydnXf9a92) z{Rs3_<^<%m<<$wW^@*`G;Y&bWOR^-u*N=dQUr0dBO*a7^3(z9@#j@FMbZ>U!q52uq zrz6(<o=w#;=ks%C>)rTeNvRh7+;^sB&15JwX&Nuvae#k4a*|~|3n(jFa5v+RZB1W2 zjopOcM*5v&O>dvJrmk+Jc#RJeU9F#CJ49P~vZj!~Io9f&{K#(`d(#>l(yZW|#)kB? zyG};1jN*qvY2Ea<ad&3aNsl;#jSYj=hH)LvAYohb2cu3}bKCSJ%X;}G=90a~8Hnt0 zKFHhSe7Jm%^U>9NoWT?JI3JJS<9u?)9%pELV?$=zy5l;W%rr2FWguvU5bPboPwXn> zK8|7~cxlwhOmWg12h!FZzn$nWBpFDO*8G8_UHF^gq&4=Y4uvvT<Y_r0PH)ud)#5<D zh|?d%|2Z`gXMoDc*^&6Mn(dV93k1I(%ADt<*G-^;Pegbq)UO#r8ls3TLVg)fJDJde z;<sz_E0&dMAr#50K~6|K6dLqM(ihD~-UE?Ei0$(UmZr(m4Y?AT3bfXu|Fi%Rlr$~U zmgUhhDgYtmoYoSy0Zkf0sIkl5+8#U;NECLGm10>7=vU|*Rb8=Dbrf_7N?naqr@;#- zE=+ldLWe@GWC;ZDE7GCFZ8^y-Q8c_50JyBkTbpdkKuQ}#rdgz661mlZrpS!hwg!FL z$yO4xN#?;QtRNJY9<`JO2Iq^a$vmGLr&xF;SfV9BeP|KDpaa>trb<E^j*B-pq@M$^ z>Mv;QP4}ci$X|+lNHQ2nM)|lHYhfxT3sZ&Elx`)tL&>r0VdF`m(@FmDc4Qyfb$osn zLXkEK#bzNoIfPnEk1`_aWWC>cE*ZBX;KsNFq@Kp8GMY>Z%4m9QEL1?5jp=z9pvmcc zCv%dOLv@|eL|SNU$QsIMY6e6kIdcf#sX|NUAmi4otq5AJsXwPbQ#xBylcG7PMD|^T zDbXlosFFO7h@(+=<gk;B-Jsjn=|iF3G7=SLM?B6(yM$c~QCo(j)8{$8n+}W6!?Wqg znM2|tx+7=0f<)D<0Go|{I;UQiDD^U(CMPYjtMQF@KpDwnd*k|ICa??`?}^L=RN=S& zJpol1j7V9(!(XBdKLTKQj?wUw3Gp3Fk0>q*6RAKn{0txnu&Kl8BV6oq;@?JCc$S@A z$*rl$(L`DKNyPq#oIa#(2|tI_>^SB*eVd+Ufr;U8fjc;RL~*G|OX0UZ0)3p88oM$f z;;qbRcS1(d@ZN;@jxf>F4-$7UkqSg5w*+;<-Y%o*B=T5n*HK9x4etj))$qPTv=IW< zy|XKIL^b(Ia>$j(8?&E{sFKPWhtEkvZdR;;)o=hHbW+ga^fUHU^eby^W#n@Qm64;5 zfUywmJf~mmoC`5rhz`aRD^?UGp&v>wiuyG`t`<1+Ae<mFpTwS>0>k*Fbuf`;;hH<A z%xL-<Vo15c+gQRK2$EvyFCm&4$j^#&!UB`%7dwnZ%1cPvp>$Qv+}oLZa7~9Z0LY5L zCk)_FlJN=SKT_%%Fy!-`flUXEXv2yJQz8lJ2Sgp=b_PXuUDn2~H0VgY!^Q+0ayF{u ztl-8s6197b0Z7qvNs^pQ%_M7p<)xf+K;YI=;~Vb-DUGM3BPT0fpd8ZigDOFolmX`T zx)Ya{PgwLrqqTe=iEjDmg&||=JZEsz^8_+`EirhikzNPmDa`cT;x~!VWDmaXD%0Ox zolPlJPnJ39*DnqY`QmjK397Y2WkZ`Ri`&^nA1GzPZYPS}&SbltJc8X4UgU!jQwsV) zLDbj+gO}4p|0=^&Jz^Oo!q{=dJm)4J%MA(%_1VWose4b4EV^kGjc0GX;rhnj37j&$ z!=WzJ>IuW)uw+>*X6Q_0y7nwj$EQb2hz6^cC1ZJj+5AeRGpU^$Nm6HISIN%br#0`L z+}YWk)Y-hN{r6*<^Z(G|`~fcNbM!ko+4)2BE0cEt`)`zM%c?&xuQ7%fD2Z80QfJA| z?li^X?H1>4)rU7DGIesNFnPNr_wCKUp)q3Q$IK_y!v`!#u-2>}Qcf<v)aLwmTAX*1 z+LN7kkdbhDrzQ6t#VPj)Se0M|)v@_^L*Pw}bCS73Y0Vqjo=&;#glqWlocBLq4>2Z8 zDCvB1QkanX+jERIG1j{NhM~}r8;3%DE6S)ZT6>lr9;1cQ_!LTwINedFyEV{%>um*G zOWQj^DNq!Z6AwM0agDv%JfJ+82b3o;L$S3@H01yjD+X7T7HuZuBA|_;m3M<{YwRAw z2BT~g^NH9@8m(gjG6<i}_JL8$*7gv_cY}@XsV$c1c~>OAH<mS&JJ47;IHs{-zzXeE z8M;#yo`2EYWbhN33Y~)d8{5}IC0YYA@epI({^(>?(8gXHlsgA9Cs7?loUV-LY05)& z<089(#LNkUsUw)d^l}|^MRsL8oexwuP)E=)qBt~`P@GaQZE*%Op3m<?TKJjF<2pIn zpeEpHRTt8BCt-F)^PJ2`W;7o|i>yc{w<xroiE!pnKROZ2yU>IVkdk}W0!4MO{&O__ zyK5p`inadi#)fQbJ!)uzwf>~W2HRSn-q<kFT0ge2VY0R13~JiDk<Qc5R7bJ>k-L*H zGo<-j1CvpXBa&s$bFzf&MAYqwWcEB~f{>9dj7T<lo-<L%7A7Q%=4VHp$&sB?UX9Y2 ze?sJ?DL;$6*6Q@-wL1NI*RANj43$k2Ac~zRbVy-qx^B?*65UCf4tnmLyDK!2HQfz} zi~PmJxl<h;h~ocM%E$G(Gb>CNIO&7&NqJ_;^Ky>=Ucz{49pTl8g4Sz~!`vxnQHHgS z6LgN8pqLY6Qi4o3!N3R!(zmutz1x_@`l>)pe$mo|V17aZNOjlH&^haP0`)~d2}~|2 zI1|5<gH!Q4HFyDjrv+{N&J1!f?)4`?yA(r)k-|K)lY%hM>@h)@XZF~;IK_8HN|6!* zRaV+27<YCur%RP|A<A#uCQiM3gwzv~g!{k<@wO%MPQa8Zk&@8ORZLPN6mk{O@GR&X zBMMdvO~gE@sKo_?hN`g(lfU4(z~)ew?_m|9(kGL?vd2pPclbFeefbgz;r$5-u?UeA zVv(Nm$G`ki+sf){yRxuqgUu&1ZEOqMdCRZ1-LrsjDtXnx05<OmE9`2VhbgJ3uD8pp zY&z>KN4+Ocv8;SKwrtZbL#<s?Sc`LGI0v8!X|YTl%qBPG{(PaZ%DO7B#>y?MwHDUY z;_n9Q3!y6ftFRV^O0DYyHP*E_2)?{}owYbnWKAlzC)L^Xd-}}c%gitPLaZH52V1pD zYpe6o_Kaz>rp>Z1vcV@9prg|E%uA-)GpEm(KK@F5gxj86G{v4VckY~v2yb6q5vZ!N zS70|1XRI&E3zXH?RaXtCo_!ILTxu_@D#qGooxQlcqBKxDob2;NHru{Bw83_2%Zu#m zaqzMN=Pak%S7Rr&#-25Es=c(TXxey-MJ3JHviN)~Wxx$3%UW7mRb7j{7`qS~rj<28 zJ6LUFb=s~9lw!kcUBE6X!@fPhqVnJd8;5d30c)w8`L*f9i(OxaHDSA^8s|Lx5je+@ z2#rPh01RL_{Ti@V_)+BIJaOvI#@2CRRcS@Qt}hRk*>?tNtL;K4(^^XV{XpU%uw7m! z5wJKuLnLu>@Nrlqbm2)FSYH$f6xZ3bV+)<)I5U|eb5V4P%_xLgPkc66i=;(SI+Qpq zlFq@hZqx+`qLEb;)}l<*zEtg^lGI+0t<L7^ys+DE^WkPAu8!d|&NdxRHc_N!U6*tM znqx0^S;#&LZ+v>w==N%k_SkZgAQ6q{G{Z2eTsRATa-AyAuBr~&v_Dx7(}A`N*_}}H z$G#?AV$d1OL5p~Px+tT^QWe^={(dUTe?I<=wa&)x8TglF?ZI#I1zA=G`W1;i4ba7m z%L6oxp-q4;V(1}2QyDrP4qPDW_b+7JuK|6Ip;ORNz}bQGd4MoZ1hfdyXBqkypz{HZ zwVnVZxh;psl{}s^(4Pzx7^7nw4Ag0$Q?cMEX$uTgZ=m-Lbmlls_lSY|40KbPj{S*& zPCQQIUNKM_e2L`tn1QZ7UhAq1a}FunR}A!ZKo@Yy+YRm&1MN4^uMD*01YI+a0Gh;U zAN!2v{0tz`+D{Dbmj?Hq!F^(IXJzQLlK@HD#Rj*`;C30@D+c$m!Hvn(Y0m;ArJQ7N z%MI=ZgWF_q_ZZwG2KSi3?KHTT4ep4+^%~qMC+d990(3F!<!Xbw*5I}pT&ux-+u)uu zxE~taj|}c3gG<34ndIRBlJe#nT$RDCGr0Q<?kj+1uzb_dMgxH8=M&72N|R`xv`7%1 z-!OLmNwRD!8SO05&uKtjg?~)L1QYR_R?1z>bcCvq-o?xVrrC%20x(bdFsp#M2<_KR z6$0j7ALc$_{^-Me1DI=4ys4fB=2;)+2f$RJrMR3sf%&x$(*;a2+K@~02VlbZM_K_p z{3Jo%Q++h21G58d#!WR9m_0sB4ltcQ%t~Nh^I<B0IpV`K0ux5db2)znn5TW1?*a3D zABN_JE79iMRIdT^7TS+synC>Suu_t~0V|=MSNF%e{|Z%u#*NdEckh*SlaR)<@5(w% z`gi&>?C1A}Kdg>pd9ut9Vdz{7#z-oirb!l3U^V8HVVEhyFjx36bf58(nToODv(iUH zv9}Gwto30?Lb_8aKU$u8AI%no{@=NiSyxt#)A%@dA1tezcFC+uXQ)%{`UEN+@B6>@ zo+i%i(rwulbc@z1sH>{Mh(A~&weLGmCMf^Ou|zm?nhe7-x&pu#ZZ*<9Hs(EG<~z?N zr@bzoG1vC~9PK>Ej2Uw;ox=%MkJslpvM`Xkl+Aqjd5+?9<UGeS=Se$g!5{m-;XKDf zXj$2|<f(t>SUKMF9Mjb%^kl3DHn!hFtCiz%T*9m=0xcUGuV8I}_9WDDc^)n2(Sl$W zuXtwj+TR3T^RsyYb|Nn)PR4>`)S1fbjnjFpX;#F+M(v!4(;0Q<N1XjpCnw_UjXH}X z&c3L#B;vG3on;YcH?0U}G<^UMsCKU32Kc%&aB$U*gU$}fa`2%r%JjO^=fN~FrrU#Q zW=xj{b1!2Kcra~@>GWV8V9Z_*<{`$kdobG=Gw}MDFtq%umtP;#On-MCY<Qt0>b&r5 zdP&6Dez0=;p;gZwtb8Gw|17Dm4V?{%JS<T>T`JRcAC)eR>AH?em(Fwtj!Kuwbe%_~ zqjMmyJA02xm(6tTN2QwpI@i=veWu0>-x*DJf<&1@HGy;rW9m?7@=$2vP{<w%O&AJg z4~4Mzl<BTlO{bl*g~U5QoeXvh>7U`O$QIHu!`YE7q(_D)M7EHw7`7u@NFNMOjBKGY zGdwx6h04Y7)W{Z+{g9KX%J{*-Rf7lVFpDzKLrzwL7&6pDPIiJAGT1}Tgak2UxQ84& zK@1u2A!lNO7&7ET&g29!WYCA4sR?4put%y3xCu0S?608N_evA}3CLBw><0L{1FLOA zQ#knYYdyd2dT+NAOpZ;W)p<mEmlC)4Ubp@17oHo~kM=(h$sdfNhPtEq*nFT6xAY?i zd7t9oO_LE+l6o528)#^6a6{`lSlM-G)!~DcZ$$IqUC_`5k(pbFB*NvT5!1ItuJ92j zJeUK~cu5gw@w}obA1Av(4a!4?Xvup69{`)`C)Yc#V_7+ahnzuItGx&Lhzg3p<}w)B zl29@_VkN7aqll8x^f5A4x_(y|FslShu+Sa+bXLg%D`{OeDSMe;#GaQB#+fmkKjZT= z2+>Y1R}1ROZ84c@cajF0yv$1gHmpt|(v5zmu{(6h&n40}Ni&GeLYz**pA;t(+kYjI z<RNYkkdODEXm9x^o&>0wjc!%tNL3L+orY?BC5>>rWz03hyRKMYrVgS7;wg>LN(d`C zGm^}Ivm%S&NwS;itW<LzwoN7|5NE9>D)0<!zbFt3*tP;EAVo{gnY^{y{1OMwXx_E? z4a^X&$S*hyUMl=c4xjGs<Z(D#g%OA@A%_;VuD<~rm%S^l^Bf$pCGGr_5H_6C_vD<F z6gy8)>cn0$Dpy6N#KtKa9|f(zXE5fh);u!w=Df2gD8F;Eo1IvT6U%sdmnz%Y*jwRk z53-q#oOCjU*j3En?D^x?(K)o1oU_}z^#&|90W%}{eKBZ?B3Ldu=GfRiF0yOq?^6(m z7;HC1^3pw<u2en2*{bbKQ}wc_SXWG$TQL=soKL6xShZ8$p}oGbH%scc5EiQH_yz*W z^JjLG+%REykAB!D&dtObF)Zd0kP!1Q0We~28IJ<?koKg2r6I!jhdFr$K-6=fx1eM! zJbH`A2-eor_AG~#>9jqE5KB1mSR{Os(?UW5w1oQrdnGL7wy21-gcChOG&=_;0-yws zVR1W#3ZBs!5TG;Yi_3s}MTfai^G8lZjht4jwM;f@H?@bB6>w%1Ii@(1=}eis0Zny5 z$yKgI(>j3!i>sZKcp^HSrkxCRv!2q&;N*2?<Oh7r<xm?{*>y(FAsUqq%yaCFd-JhT zPD#YL)Tn|G%Cm%D2_qz)#oYqU<lYTTFsMa8jzKL9+$J+4lfF)w^inu`X;E#5Nh7&1 zlYwadU}SR_f{`yD(MUSu8`(_85czU1A&o#el(`;JCu}Y?y18J>P5ZI+hJi?*m&VNn zT9(!l*GFIj(OQrF)GVsxyKrI}jrer<8+PdP;&jaoBo5g_rn%NCqb<S&y$9AfJhi2I z4;dce+*eY2YZmm0O+`YHMfoQe=rx#@6v29j`K6Ua+GIS4ST!&#iR5Kbxpl?;7{t2b zls;8Aq4lZGtNZ6Siy^_<F@6#B{3e+=>eN&lICjA2bI}>7n$DX_GKe*CpJa4@lj#07 zDx@5=y`EKzu_*VqkMVic^z9ulbYD*M0%v<`@x+1GCt&Ex@!xolxA{Aq9ru5a^)wXP zp`z}1Uqy9YaHnN;I7gbo^rzeUkpA>`bEt1RRs?Z~aP{x$&%i^M(VxK@EJ<#^^o&Q4 zW&8GLY9GVj-P_0i^870><J$hxe^Pkg_P_hu*YLL!e@_Q~KmA4c!1nuhg%)70#;q5p zR|dEZ_n`wD3U%WQ&QPdJ33y{a2{`?rbNHZh;GnbrpwoHK*>}*{d(hc^&}l#T6IIlM zKhnT|Xy9c9jP^(6a`zu8mnGhzSw_=kO5Yhxbj5%MXc<ixFqBP)ozEmNzPA|EB{DY` zxM}xW(ml`$q{pCperc)tfDTZb=F~rP!JNaxWq?oaOyL-BZv;eHIF2o9jhcg=whZXb z0%J67GoawpcGLl3T0*@7yMzA778+<XJP_HkmtZGL`Jzq^nTFE%%J7B~md2w^z1Pf| z*b>hL19Yo!eSGYnhsRI)g;#aJhs)`-0#4u4`2{|}L%z`Jp)Db9D$^soQur`?G-uY_ zT^aYy1}Bc-v*p{BusK*1=ob1E95Uy#)seheLMUgIkUswKIn<ix)j#!Ik-RyYedsK% z2pFoVq7LUU^0#{Sq>>cfeui|oCi04;7Dsi&^eMwQ#o(E<8h42kAVEDR%RjxOIQS%j zUBrT!+6(_Uhswkw-wvk>qFX)h!{L&UbkH8YXu7`;d?cT{t*-b8jK<Yj{qHf05eU5f zxts$_#0b6hrjym7Wj!$12Jxa!VzyZrq<(J1NPnLFF<d<9r^1euAbT`!=)>F*2_}=o zZD2HRbiNm73=<2U)?ziahvu5ocnPVXjk}J=l&6FGSSyytAUyt13>RM#rl14lUMYJ= zphN2&#Hl%_H^u2oar$xS4yOha82(@+55t>5u3$PxC+74kZfyw#(B$lc`rO-5#DwDd zaNuvxh&6x$XWaK9*N{ujvkwS@jyiFch=7E+-~+eUAD1QK`gN9Ise+ni_DC!d0hXw8 zupEeEiMRm|OBK{C(_&MQmQPnxF#%<Zkqj>o23EaR@ZynVfD?cWbS;Z!cgANBmONRn zD+AdH&TS&Ebk2*e$Mr@QWyVe>Vk~{+!PO%cBQ27Nn>SDCB6-t?Xd$%=hZ8gI{TK(` zQN==ZSb1X}{ROXJZ;XTHauf?w8yI(TY%-WNw$F!%v;yFn+?e5vZ}cPQU^AN5z<$(l z=0*lHtzan)1?_}GL6CTyEzcw(dCRCA^cy$S?qw!f)?MeR@#rSZHnXTBTY-x=sqp5R zD|APQgJbB-zaxrh$;tjc6}NfkcCfI1*2ON4MzUy}xO9_Uf(kH;3k#4X4RVu1nATDh z4jp6WPU{Zm2_n@XRN}E3Ay*qa{Y7Ez<&pNVHlA&2nEO0<7n-r4y0W;$7^$905kb;9 zj}=uP?71<7`!PSZ5$##iXzb<gG^1%Y&2VK1d7+w_wjB`uFeIGWj&J?64%e#&FSPaN zse+y!NJe7t-4V>z-=H~=T!2AoRzTssTHl@sU$+Xpd#Oa-F6yCimxr&o3&@s2XNUXw z#t~rIAQ%`nM@%pRL*Ly`ey*SAfjkYd<H|xSSTw~FDu|Cm)!x=N5Y0)C>{5rZliK6e z#5qtM;HD=$eh3G%aTma!2j?G`5V#KH47Uzn9+yXCC!sV`h;*G_AZpII`ib8IE#y@D zoAXlna#bI<;}>vdmq&5EkuCeVbeP?$y5`%f5f##N4z?Me9W~0fjJr0b&ah`R(cUrH zQASf2Ll~Zo>G`>;x3+f9E-OjvE5Z7K)7RM0r|fE(Ur#-)UOr0YV4)Tdc7VAuuRfo7 zNyKpTB0T-5Zoh{Tv3a!vAg29ZLD3b`&J$+UbfbuGOt7uNnZk(<Am_DX@{AvW?)Tsj zE5&g|aCMM(qyh6lGtD~Ty>XN{MAf8k9AVLcuyM9Pq6}b;h~HvF=a3P_DTleRe~+QQ z2BS;BS9$_U<TsKbYApS14C%C1K|}q%$QIHEmEWx<gd!^B8674wdON746QEh^T<!rb zp}Eldi;NQIIhl81jAO23WxBd+&BCf%R`a4vwTuvV5#~IkGFLIiup6iI!PLX>L1Fg9 z=JdEsgYVN8R|a8HXmXIA96}!lwbzjE3lp2Xni!m~LcO&~P()8xVFgXsr;{iv5ckYw zn^O^Q3=MsPr5%p2IX9a6ovKLqzK;loVY;!M_}Zj(9h8C&@S~Uf0xjN%MNvJgh~ai@ zBI4{A*Nli0{UB4#X{XB-c1yMI>wis_6xp5%=cxv(q?>dy(f(%Kavf-N`k{NQYGrNw z9e0_7<RH+c(ghU0lLWJ&>{;+^0HkNQ9FS1RwU2D3##R{lK6RUE%LKsQRiq%+GkEPI zk1c2bWrBum6M#7dPr_6+M@`PD(0oe)_6ycTPX_3@4@-6KF0ZJ?nPQe!)*AiVlv`F? zXlWI-=Ff#|N3U#RiHOp3L7N1Ksufujy%`v{=%-Vmg0MpjNYIAOy)?awL(NCjlOEZ! zTB`@;p=$}E9wNb7H&TP7EHSzZnXY<i86DN7^UVBW5S?b8Ib+tPv!>0t1joUHZp?z| zmO+@a&L#~VCw9-qs&|HPu>H=!RGVJt<5Q~g7PCzc!PMY&Y@)Bj6UjI!jT7%UoLX63 zyMYhwateM!Mh>2iL`M(v*)^fsn(8_}95*Um2v3*en*OLXe3ZWK7-;xeVtsyA7Z*p_ zOM_)2l*@AhnI1~SF>$=(a*VV%y3FVQ63Gs}{0@$--sYeuxrDi0hLiHuq2NW;B^Tkj z5gdrFE3B-k2-LBT-AA35<5GgFdwLfbR|@!nDSFl5+ECE0F3}V?yp9v(>L@i?4U_A# z9EBDIrq|X@(ZOB)tR2V^sOt*aZKciDi9pQ8zbtDxyd|9j9&6oTAUazoIJzk(&=Usw z7X$swK!*(Uk%4GSMbe&cAR5dH?ivGKZ=gB@eaS#?0{T2ldLtGrB<&priW=zK2Ksjc z9W>CN40Hk(SA<KUfz}!5E<m$5x91IxPUT686S1Hr(CL7LF2~@O7+jITZ8OlLCiYE( ziy2(<Sj)PE^F0L+9l6W0<^Yo1asWwgO*jiJXI6ihrq3V021rtT3`kOpIZmgT1W0PS z6cF4DIBx_bDZT+{3UFhse*`3XbO4eRuLBY~3ui%vj?PvK9qxIkv$xj)63*)ZNs5O7 zNs4a+k`%uHB%F`K&`4rW1T>AMI@{nb03<1BiY$7$9?(Thw;7OdNyXVtf&PRuogzUR z&T@(b697pb69Eao1%M>Qazj@JXex8A10*TF1V~am07z1N2aw1zJyX-o0VLA@7?9-q zM?k{wb2z6gY3BhF+<HJlckW4A<_8V*rhy_S>(~xJk|HZh^Sj4DuNmmJQ*><dsT#Tl zkjQ)+pbNQ_51ZI?u`?j$odQV8n*(Sz)BO;T<a^N2{l?Ipkge$^0g|$X08Qt#Er2BL zw*g5WPXUrV_5qSSdJWxir)#<s0SVnCK*D(yAW3o78JhD9K*D)0AW2aHNa&gXN!s5U z+zcG65UG{}lC(DflC)a@N!p<aT355q(zs=Sgx?l}yABsMM7w_nNMfG{BzjJGsvJii z;}4d@z3@+xg_E)Ho{4@=0`hYFV;Ux~@%y{*jV^{t@p&+FF^hmX4?f1l+yKl|K1?w% zJK$ejnp$8A;YnOf7?^+XVeSLwbl*wuZNRkoFpmTCst>arn67j$=RLrj?K`2pADCPp zrVp4G(Y{@IJ^|)9v@#b%r?nRPFtla(6SN4I=5xSIIMs`p156t%+NHS)m;<mi7ekwQ z`(YU_<}P5eVIeN&tH7-EVV(u1A9mu>&|=bQuniYO>#_|#%n&f|_%NBM;gfN0)J-)B znAtwe<-p_`%<vQJbndhT8gqaC>rSxKS<~S^HyNxx`%PnM`O%oFVVFC8nBk|~>6|YH zg>ihg`chFOU0s$Ro!57UVV)a?+2zCV3HF)|9zF*UZ_cZ`&t{{2dp<6qL-DV#x=(-; z1%=`%+=sV`!hLd_LhcLN6ms9srjYx3HpiK_vnk|0RL+#<!Eg?lPY3AG|9)|XG~u~0 zsNTZ-@A%@3_oTXee%<?6svKEo1C*E9T@z7nr@C*U5(m%QoW7&)l9;ZsDhs@L)(qSG zbF@?NvuDhnEA(^<9>Z+>d<LF)9z(-V!LP?C>R!a9f`)$J@+{l>>%VHq?+o%PRuC)k znDJwYk5*8l`I+b9p^ZV>5F8`{ur8-IPlWnJrp87dsME20G$J9+rGf2dh>+jG8I3lR zX~z?-H5#2abF2f6oH<UVBJ-2L5W6BTP&t}MEtQwvJ*0SS{LlQ9{3m=$`ZJD!9!r@h zFE3^0q)iH=yjY5&M}%5(*3VB0(t{|ZgcxarA8{PHXrGQ%aI{*ulBJ@ZCRmo1YMPcR z#3n~?J|a3ech{$qGM`yr>t~(A!5S=6kHZn>RfDlv!kZPiBJbBzC*lkZElWWKe%!C< zM0#utr^3N>pT+wXLM_thwqm$$i$_z)r(;$2=dx<Taaezi|JhOvXEmx+-gb1>G1#r! zpc~t9dT?Z`yol@jvr^xU{6^;)yn0GIqm8?6p(WK!l-VXLAHjEJH0?$#G0JEn*)%g8 z4wknWnIU<sgW)j8XTFXCVVhELO^nMTT(-tFGcKEO6Eu$eH%=oF4)2Oc+BU}7gu~+? zf_s2*6A3q2;~rw%WWr6=xNVG^`Z_&3lM47RFJF}J*s#t_`J!!n*8@AW@W!fq(Kf#G zfkU3asq#hJ`0fWzTLGua7j4T#v!DZ@z^U>@`K?uYkOw$bK7EjJGT~JD^zp^1Tz{jL zFBoS8Nia@r1gNu|$tVyj39^i+q~LV6B%HG$r_|U*OwQtpKaEi8PJ|fKsC@X?wtDj} zZIXrgAKU_7dBKW44#~suPF41=O_NAQs=8n`OI0pX>6d11VQwqAI+k+<EMXaUvq8{H zQ6%wR4xx%Tw2wom9E4iJod_8*P_yI}FtQj?4D7F?A32Zn#gR^MrwJ#QfI_lGe(cRO z2P$!EC`wltM6)^II!p-n%0dwDSV0an0%#Kt1)&Mz2px<PyJQpi2wg82SUrElFOmy| zRob8(WR#N%Z#sS)XHXd3wbNNau~Zo%=q}c^R>AA8ot~cpJ*-{ux(jEE=e+*RYY=^L zg8HvP^!cwr;CvNXB%PLV-)+Ng86Ua6i8Z!@w1K`>^-}17p}+;Kz)M+yGl(Fs*wt5= ztFH=UDbN>L3UV7(Nh-gLCNd1lGo$GhRST3a+An$2=Q)zL8=qnb4|Ftriy=C&@->Dg z0J@(c8_-sU;5#<4x7a{(wmkx*5w-164oU4s+aBYPs@d?f2pRFU^*`rD!Z$I`CpjIw z5{I7Q5Nemo3*kp9Z?KT{%kQ#MIdizVF9VO3@L_K@x>X(_#^EmdotqU&id>h<`H|g5 z!`+O|W;A7-lQ3hJ36xyF#hgDsA&UINK%;G4D-DD=(>MxwZ_XX0IIeNB)o5OjE7;)C zh_H1`<3gh@=ukz+5B767)60kt`ARwj2p<fS;*OY(1*qcY;9L)G`V3KZiJO758(Eog zj-2lAXg5K<`C{e^#n2+dh&2MUhL51b`Z(c<Lt`Qt&rIlmD<oqr2x7W6bI{T_LyjNe z(omKhT%lUPPrL#y<~(o+PFfY@i4%3c7S%#r0#Utnn9&qP7Q`{5X)|XgYRv>s)Dr51 z?i|1cL&0=eiBE)4F>(h{6ja;{9_!?>KZ{LdRE7s7bV!V1WlFJF131)&Cnj@F^;HoO z$Cq}v_us){s!9&GBQ)9|jh<U<2~UM4lx>YRk;E7XrvzwIeKeLrMXmejRJ0p?bShd~ zJ319@TOXaOYXrHtX!P_5Z-^r_#)dCl^-^2gQ^#4>Wk{7}C0zfek4h9F+Vcaa#6P^o z2`-6#um!^VEKI`$lkodS{Btq165r^<EJ5fAALcfM$gjJp?m&pfg)W91^(-Ie?|>=x zVg4DI2YeVBmhARn$OmRXMJ{K`=N2F4Y+z{Z(WRk7bvBk!T+B*fZuep6?U;Y{VeSEj zJ}Kd*dIXqdKFmJ@v(bn7Au!+eVQ5G9_dd*TfO*BYWALBAJnq{upq<`#e3;XKxfFYq zt~`@~+3Lew0!%u*s7phyV=nVyt_9}HKFlg$_Q1y6RJQ{&8#{|GW&<!6_;w!d0p=S% z46O>EneI*XEnw<=7<$x_UZ{0B|2r@fe7h4r0;b4^IRwmj-+slPfcb(ClY!c+_hCK@ z%)>s+5@25PVO9gv<HKwKCIc&Ku7rOB%;$ZWCxN-uhxq|8<pwi+$6y`D!F<inUu(yJ z82%i&%MY!`{}v%$#-#7w{O?z`NBTB5zpMAZU)grQf=cG{zhBudDZwYT=^&WfhWMj? z|0jH9TecQ>Ut;{lvoEo|KW10q^PaCH$rqFOTS=G9zI3L1EXjRar*{i_VRjtDcNGqx zW2Z6H#v1V~`_M=ISL`ape=DgEYYq1nSXL0S(GNNcE618HZ|l&ov_-z1L8tC1n4`jY zDVxuBH?}7mOq#-^C=3qzV}OPsEZ#5X3wV@)=Ul%#xCLjNJEh^+xgfy=c5NCx9POdS z@kxy-<V&b@wGSAaHpMx{&AV*qi_)dKN2YN#$-_Vo@q{R0gq+<x(E%s=4wRB;AtZ7o zP2;KFWN_hol-?W?;nXrUl`qOOU{(lrWd`Un3r>AfopU5jbHRZwGo*EYS&E2kr{Ih> z9he=g@1$#)^4TMOuN{|#n0$?ps{((OIMMU$8BJk;;NBAd@g&S$=mhd4ni64ZGcf^8 z=t50{(G+MV&>8Xbz|W&PwcHUqKXDw0dBW980M<mbGBA@vZ6y>;USIw+Uv+|%VmX_^ zk}Fr+3FQhs@cqwKEl$5W{tY_@h0l)Jj(m2^7@r-Z8c>B<5FB6Q$at{b%%6H`P8nCk zn>0p!W?{WLt-J`!Yezro3mSeBKh5)O0pDTt+DkJ^7kPEc&d6TA_uI!SZ+%Ij>l+*T zt-Er0TDcJOP<&Eo-CSJC0yw3UE*#K7{egzD_)DQ&E|)rdjO%%Ht<87+qd$pm=Ja7g zypWFeL)-dOA@T3_gDNS6xjgR9JlPY5c&xED05Bh!B~pOqY`M|gzDVw4jSY`|6hw=9 z?Bn3^v6EmHQxPAd3HfRQXp?|afDg~kVC#cxXSF)p&DABqV8=(Raj)5PLH0=`L%Ju~ z<nRQ?N-QJbwD&r`>F^@reAHP)-Sb`4El>To)&t_F>NEMNdaAN!v=s1wOG7K8ua?R4 zC!fLHm&V;TKN1G>=mH-Ub{dqxC-zwbgj_OrS1n%$qPd$V@19wlX)n}Er+d`JBqT>o z<e*$$7s&P856YLogE^B>>~*q0XRdTZOx&@Iyfj(~aAWFvDZ#RjRSEheS0u%mCfwhE z;e=*;vhm5n_KX|cq843PEK~LT3c`^)_{3jOt|RYl^4J2RqE{0<>WEFo8TqmtAlJ@p zbzU&_3{nbuC{f7a`Wavsc_Z6Cdy=qEL*{n+sHMVPbSagu)=4Myk%KHe%45DVfVF<O z(F)n3;2y5fUmh$Jogfd;*ZCtPAwCQ83U007`bPzMt`l0FUve4$M!ph*QqyPG(z>^s zu%=igAAP~4a$wL0f|OG_8sFXG{8}8I)7#>7DX_1_`HcemTbwr(IMCv}sX*L3O2gMP z^fi6J-H|PwY;V1EjRRjnybvWp$D~4^<xrmrkqx7}Qla_WX8Kj=iyT5<L`24W?rm(? zJGTC^Xzt!<YHKrMhPsf;p71n){D_c(Q~0ZXf=`a&9D>4Q%{Hw?$pqe%tl8;kaXQpX zK@j*N;D{<r0G<Y--Y(j<Pa2V6%`-u-W<0$&lDjW9X*dmQ2wdF<gZ2?o?!HJfEiZHD zE3Zqy74>-@nDC4dri(w?+&dAIMoP`bqo0g<6!LjYJa&Voptq6eJ%+Lu{S-j)C?u`> zEAqNV&oogo^QARgHcGlK=iw_{$@Y=~!uIf6YK4o~*oA~4&W<)SJPF<GKC80(cM#wm zCJUvh|9mtzbNdsIKmPdpzlr?p)mY@=ZhZGEx|M$84K4l~d1cD3$b*Dwe35=z!KEhe z`6*Jw6H$VMdH##MEz)xh@+4iv5k^;KMjk!_rX5?m@cV}R{QM|G?>|M@$g9z<^mpgL zIg$UE@>1jgI#hK}uXSr55nxERkXm6%>()OY%+2XI$+P7_!jNHSwmkT@0`rnu9(+f` zcpI$0(HX#tK<HijHa-slrRjeBpX6RMVG)uI*m~@NMwy~|EGy$>HmsIc)3P!x<<pw; z8pM}G+h~yu9=T-hu65^8(I@+LgebmDga>DY5^KqM_y{H^;2tk8VFJAE2r}c%(AbSZ z2Klo=WSy`*dC_fSJP#r!D}q;K4@QgPY;Uc8O4n@q_=y$yY7TCAdh(NZeCRl^r|uIp z06Ns@p>SD0D6D&E1yl1i4dAu7RHSEIgB3l~_VOGFs6Apa{&(XNnYQ*hmDSB;hz*&k zVz=Ya1`<m4(Vy4?ddTgOeWmL0>5~#+Oy#E%#<+beb)J9uh?U=Q;ZX;<8;@{3Unhq} zS}?njSfYfzUAehopyO#gu!NVE2A=sB05izmXd%y&{F_K^HMXPwrRNID!iY6Jb?mA` zc%5(zJ*UnmcDO&mbAhW-dK}wPFXZ?ef$;I;^jrbo)`ccMYIZ(saXxHzK4@`1Xr@7| zu~e~~2mBHyu$-s-6t3mm`mWSZ6C~7pjph6>E*0qvgCemUqGCV!dK{H8l_7rZC$nd= z@HS1I&i){c#aBnA*D@V2ec@@4zNC|xx{kTOI}-PAD(<wq%R0n_SSEzmNsKYAdI^(h zJq%(LGv46`XSU>%TASO#khLZM1BN#<{2{|z82*T1(p7A}PC>V=G%TrwlcW|{QVUn5 z=`lnLx#L`-s`>TE$lpDF1`|<_6(*?T&-y9cI<D`NI(`8A0Gh9<<16A)`Md*ly>k+H zhnwOOnJQ0LSxrG!s6$&Uq;e$k*WVGzJ_G@DvDR*N9^$U&K8Y|@_^gDf3V#gR7Uv<c z7+RM>nz;GwLviaeplEFO&u1BhPq+ElG`5d1%Q;x!VVbc9g9RSOjEh^~8Q>?8@onS7 z9F50j;+P(1SZJo>4MsCP-ph1=8Tl5U7;}P2rWt+4U^Jr)FC#2JLAovsSb3}rEo7=_ zUeRKvCmI%-=}88onV#%rD$->QV|0p1rWu`TFq+Y6UPdBaH%r&cvSbfqdb(kunVw-V zn(3KdrXt;hVT{f)$uy(04MsCM$ID2h!@Ll>>pz4?(TrQ)eh9Cmnb3|yPL~^MKja*7 zL%R<--EL^_A*a_3?K^~5uML;ZLr%XN+Ao{%*TF^jT3<%f<v?w2IIv(HHjeJQAKnas z&)kK;{aZM2`0qEO-`cRb;c!KhWo@e2+|YH}d%%<e=>8a(+cq~G86ui|0G&j$Y;!~R z)!0Y93;kbrHZDnQx@>bpZ~a@q%mA?DZD1yEZs>b@HZbP^2wx7&shb=6@4>$AT_*sz z2{&vq?&H}!I?Q{~LOrfZy&&h{$?xq4|KpnwQ@YPI)g2y8{D559Zm`ikD;}ovJW2N{ zm~?rW^!yF-_HmNO?L@Snz}sk%{-RgzxP-g$)C}e)nDqB~W<y;=p~FL=1HRr~rbUTH zgmjwHqsRn4{}lLH4~6UV8-FjJ^$CpQhWY%9;!=^%_q%!V+fE#var2WD_grv?n@<w* zTSg*(uSbMAo5<njlUkkk+0Fl>L>M>!BMFn6e;0<{;=Hd02DG-3au<*0*7<Ykc^QN} znk&>J6B^TE$qUB;2T>JRBHP?BsK<4KJg%FK9OK7zq@}hwkkGZz)D>kd$W0p|7E|eH z%wlAyvqA@%(R7JIge?FIq-n|-REWShX`us<hQ&%HI%=pH_Z{)!sLf{FFDnj6ONUz* zQ1i{WZ-=I19JS<(`ybOd%4`8O>Wupy@ZqR^XWSpwI64HofSY;^%fVr8@vAvZ>$?lM z;pe$wZvQzPruC`?>;|U0VfF?#hw0MZ0(J_SZkT+7JjfL17kJQyH3RRAPz`^|^a^tP zDCi&km7kzRwEHRC7I6o@UyHeD&zCTu9M&QZ#HI4J2#n_SShp{Z&a{Y=75B3gceVEB zUp90yb07~}KB|P4=hZV9vgC$M9U3l1-E}(|&u)H;CFi2_QfvQ?ARrWu2^)GJW8gcO z4`tLt=O>6#E##UP)l^zM+!#w4qSqU{`K7#mhJEBq<~iN<xG8ZAxl!91gX1I~ztl69 z1pxPE=S?sVH@s;DPb0z!e!@M@n^<XtAX+lD#y`kQW-a+|Vxg(kISdtInP~v;(57{t z&OQSMc=$r@ssYT!h7qO^{VAV9;$?n8dRD@gJt`aI?Ytvc9rTVY5cCW^kHZq-5#P{L zVf4^beO(ue%l&oOg6PA*0>2T;xSMWxno`FZ3Gi-RlG4`uWknZL_7G6CYW%qCtZ3Ev zaj&tVH!6Gf80ca+MQSP^Z`6FBY^WvoO|N|P_#Z8ydm1mQ;25k!weUISJx8P|gLS}| z;gnRMaUdylDoU!>_x|-wX}T5Y4-E}IKMgq2Mu`oQ67saM)2||z*ILEPR=j*`kbm^2 zit!GBS_hIoZamIFc?{d-dy?Y2_b+n*7<C#Y(&K1ce_@<lrM)~-2pncw_qPRc><(b2 zl1e!MvgSP=gTw5A9DtZNUgLuU0IUQdA4LfoyOZZRN9vB<37qHGRnJpgQ)ocV&H-f5 z;vATtM&H8T2d(pd*FGErLtXBp?Y?}E0OABl4BEuQeoHT2X2KW88~P%h(7~}wL}%JO zwbyedN#x<i&oeIg+Sk5zx_p4)x;Xk6I|Y1HTfGc5{DnIDF3w>r8uC!3EH3$zNUonp zTR^OG54$g*;g#*wBzR&`%NN<xsEq>n<&p?qkdpfGBJ;5HngELj>Jnhb0^9TVtYWVh z!^)@eVswUq@@jOBB(nr&Dw}{RFZtNWQjd*n?6Hxh5gEU^hKDr!Gwy$$9^f;!>g=b{ z<$k|s!f3=as*!t1R2*8E*I}}++T2US9^&A075Dn<Hdd=CXw8IO(6{{*uB-Unuf&}l zk4DKOSF@%@tKOXU#gWoJq0;_Dyq+v%HDSEG8TE>xc(SDb=}75sSLyFZdK!u+w{HCe z3gl9sE^#PGNk^F0(vz$fj&+SdsCA#m&zE7{{UOk*XDaoAesadvBO=k*qeyh{b<xJh zV8TPf%+{>~TBN%r(k~LldPSmeyhwioZo<dykZH{$O(S)mtjq9#CxLfe$RyB9LplL{ zudt_|TazwyO2$^&UDuX?H8$Bic-vna6d$IsvU;ynK9x=r1zGYOvGV@uu&C;%qFGD2 zx^Y;&_Bb`y&NeCXZxJ~k*=gNs;TQu~_Ed?a>j7x<^jtsHc<cfsFSAGDc#$NEtpt_q z@SG_a*e#uLP<8`8GqLo&c~=`)5<1G}#Kpw`ZbhDv!#jLXBZF*Gk8W!0M!(<}r-!c1 zXd=_viu^>b7B(CbrDaPOXjY+3-%i!UjqXb$v6!t`{G1vMO$|(gwRMAiV5GDkz9!j! z&D&t<Q!!WshjuL9Y#p{9O|iOH97IZ#mlnpQDSdaOyzWzZT_lYg!-rPqJ+AG`CB{@+ zv4m-&O{busO|6%Vt#2W_mi+gCYi^ql5oOj(o1HYN!}p13&if34EzWzUFX9M&%ww-# zz@CRWZCbRMJgJ+CzATZ{iC(Wo?}#H$7$U84QT>ico|9zqCHkDB(kJ`q7lFR#9WkPK z&4*S)K96&8-i!AvGX2N+SOE}#7?S8w1Gz$J=~TI5cOH#Dl^)d=@3sgN@3W}jOzL-7 zL>lj{l!#-vLKE*gpraF0@VCC6xXOG?6vsrS^(Es-e?lMh(J#gPRsNjHG`KTHO7%mP ziWWBf4K7DFxJyP#8&PRx6(#f4Zau5^c-(;yZSlDtcgaZ1<|}56C^VWRe&aJss^5GM zXNS0P{pJ^3#%S(f%T_{q%!k9;f-r_Ii8SR7fP_D$HHf2Vwf}6|WT&u^!DA}=DdF#N zk$UfVGPMrvBKaFI#r^`sa9v9%Obs>oDO~?}vt-+|RO?!=1cp&qt?dU#N`0nEeLSbm zJWf2+<0Fyx{#?xAFnE(1k85>etiy*T!YJb<36q0*2DJG2mC-6Td}3Oqd=M95x3%o- z;?;a$bZg<6dp{F-+X=C8+lk94Zo>yOz6~E77y6TkLPzgVIkXVL>%5+dvQ=L;yrSst zi>IL^sHk82Dcp*BX20m}{rHL^JJuET{z$27RqF5iDk>c_E{`~FW>+fm79#gnRR7Od z3R6*M2q9I}ZJ<R(HMMV8{1?~Pf!LzIoJZ8bK^If=kn5VimK7Y1E&Z#p!n^}6>eHAN zT4-GRpX{&41ZK6+PvO?|%|8{hieW*7eXVZ)a#va!^vxrsK2xQBN-xdOQYM&lqejD( z!{no{d#bsao;A~_%sn>Qvw~TVv^ZM)s^1=4B#icOjBBIxwkYZISl345X!&SzcVl}x zPCnK0sm_RBexgsj8thrs>#1ZZy5ZMgrZ^Wykn8af_Ifz%U@}H~IQDsr(GHG%-rm^N ze<emy2j{G@vH>YDu%L#d;W!yx=c#4X&eN4K&AZFGFGhuR{jj=e0nDdo6{VG<E@p=< z_h#oU2C>)P?BKm^usj}%N8yIItkBqS!|#$q69FeNoD#|goUGt<z$u|CL6eHN2{0ep z_UF{--@_Xcqjh{LY;QaZoD+{*bf@PP;Xi+u=ox=}whrI6I`)OGcm3J*d<Md(@k`GZ zWWx*mgZ$cmN<J2$yCcbZ2LN_lj|<vZtH(kh4$gN2v2Ho3;m<K__A}m-&pkAh!th6z z7PFd+`ztXb;vsrV{_oUkGb+!t8}zJTfsbzT_sVGX-_zGl_YlUp9Zv%rCdY_9bUN;t zdfZO}S31d0!K^bW$!C5fuJn)O1ASXaIc^WVV5HQY`y}<h@F@IPT_(?5SB}JUqvBa0 zJo)~OQL9;BwuK4>kxBhk5<Yexs^*Z|hsG~2=U{yq%v+r<RNay8{WPZ7o%#BzZhQ=f z%uHHY*k6cas@9&n!OKvNw2bXp_2w09$Wr$0KPNYuzj_M7gI+2~pRXW0{v6hN;m9v* z?b-Mg^TD^}Bg|uhne?S}6H1O<MkRUU&&V!zol#ngmGOgiULJDKD)?KNZD^4lqRdSb z;N6WW)u8Zk4D3>P+9%XA5XHtOzLKCn3Y}=Bho>?9{-VS#_qQS#u^#89r~6tdXUc7` z<z;C_yWwU?ZoPXWpQ+#@yJ^7FrGtjdaY0`1I(H;y3xrwhP8tG_Yjr;0(*JR<f5>r~ zP+|PCqQx0%cHV1oK52ITv&H$i*}+AF!Di=Ae2DX19N#qkC0fG=x{v3HA%9q+)#>x= z-c0$-*VNE_kG5ZSw+PsCH@A9~VD$Ymda2t}v#vfbQ@k!yy!5nFE`0b?jjnHsO*{}f zR$s@ffgAmK_I#5)z(~VGr$g5j_aSNBYXx!azHOo3!=OhTz!#Eu_Y8e_A9b5({(anC zq9>(D^q4_HLyK!Cc(jTxzp<ek{Wv1Zw)x93vUWUetmj#_>h2C&#>JOr;6U-|u~c-@ z<{M~$vOxsf2ZWOgfQYOwvIs2`&9bkXaO&tmH$J4ZHi^Fl>TR+9Zervn&sNgyDWLnc z$=&|ad3)QVns3Jsr3vdzOHMGl`S$s<bItcliq~6-%=bh*{NR!Pzr}o~`t$6eBUH2q zpZMs<-Mh8<O3(bHgpb{N-&WQ;;_RlE3>Ze;s}0yU6XHGJ-g-9JJip|}X0TPrU-L&l zg9by_De;;TT0ohfp}PJ@)O2A}ISYNulNMWAog?s$Sa5--@1u%4iyN~IW+S(=Hh(UL zF%p4U;=Zhh-Un0d2K%5!C1@{4Yiuqtf87Tu@MbMGV@GUi^5JuDD>^0-X+j_uPPY3C z$W86~#@<<;GgL=yaw~U9le<Pw<Ee`oy~%a?vvr$Xn&LI2Cf2?lBMI-H__aPt4?VIX zK2?t~!JlVO2@8fM2X}3{Bn*b-%KgbZ{Y`GJgpa++(Onpi&6qD@YJ+wTQ<I}}0@CCd zHYP^ojom5poWs)U=KF>BNIZ)9HnCFye{OQ!IyVmWO6VwKWfB8p<-b4%nG+nrjGT(w zrAEkfv;?rPxbvJY$>+L1r>wO39L;B*Ji5>h1A|VZ@dMQD;u%eHA)RRTSg?f)=_Nya zjjh#=;W1((6rGO)tvO1CFKZ8XF*u{WUv=eWe~#Q;;$jv>o&EIIAGW(_>5P5FfymG3 zk{*B5ZGR*$+Y<}3iHpSpvz^3)Uc1|`KT7JB1rcyrZqaDz2)H!r_V@b->g1eh@D8-s zEsii~^9)ParSpKWElv~WdL7<|rQ@&MFplbt_Pi+GXbYP$YVqjasNJ8j>y7SIyy%mh zqz648n2rG7tEZuTYT0(AH}#FSK76_W`j)ttBtr9DCcf6#IFLdgT7%>^vc<%JmGgVQ zj1*6=P=uL+GgRamO?ODQ%>wdHdIk89q`r?L;udfX@Gu%oY4C}&^+be=h#`96q9Yun zIQ+yeb=5&(_uMH_u$Tn!959pn#EczW0iF_MG|{a&LbOql0E`ilxZFcOC7#$2X&AKR zv6G|>pP#3Q(0ZgAroxMfm5t&;MsI&iDjY#;ob%cwP<schF+3Y7LJf;TM3l7=mk013 zE#X8a4Z~Phe9G>Me`77^i7j@&Tdesx8FxRynxMd)8TW`<C~(U<TpJ}|b;jMzLV^k2 z{G4@n0Zq`I_1KnU=$3W3!_Cm@b*lmK;w~sx8u-roB?i7_UAlo+uY=)&9!tNVpJ?Da z>)|C7{+4y;7<hF(EAbS6b#Re3_dWzEae*1HVp<tn!z?l?C<B#&i{f}f6P3Nsi}ha= zZ!N<dL_Or<BjY))_pbPZM9G!V2X;ARXwMOfYEVx{ddAAoL-OZEz~-Hi)(Vg{zDU25 zGn(?qOgNC5(X@n2mIFz_F+EqPPB+XsM7Gv&j_HxDK>!_2Q&`Fo4U?o1r;Vh^2~MIj zPH63Cb!^=TIz(ZWG>p?aR>#)$Kp;OWcBVu!)(HcnA`y=p-jpulG<P`nQcTY_{DK{w z?=*oe?qHJ~YP~y}+x)Wuyp|Ag9*DA7Et%ViX=LYxxy{=*ZNev!2hQCkQO%i}1gWCV z13&A+QDRPn7^iuj6Aqnb@*d(`hB!KQTvQ}?nj0IMlIWO8Qy7`VQeJIn8glN9I`__V z+A_A>1i5<tRyTi9n)49MCgN=CaGs<jTw$WF?S6Hg*5Nz?0_f^dI;7I!JO)Nq>=d9S z{HVk}hJ#tC_eUbmGaU|1U9FzY_{I8p68gC+>O5qW^9(5`CF1OeI@_QbVnmvGX8RRa zD9t$AsPKr4<~|d3cCbza_sl%!(GU(GQBFh7LqpEC7+UjVNzOBk4NtNXxJ0CcCx@J8 zqt3JQob4G~>PQLqp^{zOj5zJAgxwv^{xHi5*C9&i8m5H3AVBH&!E*7Zlm3tr_DYyi z5qgl7fDM!b>U-a=684J{+KmzpkP<R5Hj6sDp#)+?N;t5cUI}FLaCVat5E;!qfD@Xc z1jZeh=j<aTP)<Wm`;fDnl+c;vVDz(}mB1w;CG3|mAO>Da2@z!ERRUHFU<ot}llEv@ zzWUs%Xk=iIGZa<}Q?Z3=MStjghmJAI7vlSPZNc+>>b@kpW`N(=h#A7>3vr00bYcTQ zeMNVm_Ic%<4v0)+=(bE`YaVM6m7yB=N(r}w>2|TKs%<5smP(3j{UYGT7l{g2cEYfx z#uteN0(A&Pg&$fOr%By98Ty6Gifmm?JUF%`=XiB&DDvQR=0?BahUjWi<BJr48@dIK zM*`%A{)ie=ysafWyHirOk_3^h#rPd%-d-%bMXv-ACmdzTwPU(UGs7u_#;$RZt>g)X zk;c>j)4^@u^;^&!oD{hx`iU*^aCyITI3I;`IZ1l*fWnhFq0q4AW{T>04ZosXC~djy zsM)<WJNGDO7~2rtN=0=2Tq|Yaadi|6bJkSEyT!RD%4Fj5GzBG`$DS>eC5}*h{E+lQ z>EaBN#1kqv7tXl%OGp-FrNt*EMGm!6y~Ipn#yQPeTl1XejC)Q2MbE3$yNJn9wI-`- zMK_}B)S%$oJtl?6p!^j&PqRT64tJM?6_JN@eQE?8Z~{LXTi{7bH5QlHpeQ+M((j!+ zoM#Bx^8kKDoi<%>xeu}1ZFZjTaJT`-@F>Cq9{;<|<9{C@*F%xSsl|Cdn!8Q>4@Ybx zCyW=c;Domg<vyT1@U|fby~p->&XXIz19$JzJT#QsrfA@>pV5Vz=RA{f&#k0%elkZZ z{nc)*^Bqd(E~Y(B<%j($pQ~Btp!20IPiMEVFyXzf52upB^^?zz-Qi7$L4110)>*)_ zn;$PQkw+Qp<0`~+Jj4Vu@q+|K@+nISt8N2XN~b|iPgl|oQ%SqITfp6^4(A9FP$ji{ z`iH%q{-K>Ji6V&*ZyVupA*m#e*gMbZq)OTsarO@7wo?V{PXfsI1+eHqm9*QX**%oI zL(%LWat>&P%ySN?O5%kw?JnJ3qFYlg$#~i^RoAPk&Wr1dt331V?CW_xf_1Up)~!pR zGc!BW=kU%I0u}37*~Vhq6sJ!gvFqRXOGaSbV?axVgLn0hL?6rpTM-HGTIoVy=zE?C zm=f*Ec=|!=8X^zQ$M4wrhC&T?*$<e<k(fwj#xN$~s#hZiikHz-GwykTM_<{nNK9~P ze2xJIj?t#_=oF8wAJ448bLRktMGv6mrO*TggEai!hG4|GH+BXMp-|!5S}dB`KSUoI zN0UQ~QbWDkU-hizjD+>0ocb|(%FB6DISOL(7%_QLm^?;IFiv`G$aw_K8BG>U=mBU> zi_sI(qD?~zjMat-+AgKI(1B~iD2lyKYyyT{l*9HGtFxN~eU|drj<FaueFx*W_S(am z81MN%+mgn_=G?As3;Z4U?sJklUmf7(5zS|Zht=-dAM~t4cf}&^V{tnf-p??GO~Zsf ztcAu=tS*e;sO^wi_L0z?qLzIma_5k<Z^+q;Q5G6Y?XMJRPZ#LXl2n7m_-)8RW=JR_ z69-Fh5aECc!x#_nDt9;CXu`W=7-}6+FBA^q49th;L^>~_>x_L<^82u<WKej{p??aU z*uXxM5Y7ODfhqKS3Ed>z1ij(!z+E`~L{A-VLR;^S@K69#1MC(tsHP6wpAz~=gh81) z@a_*6oL8{9*rv=FFlJE$I33gEvc>*cC3L(;f2v*HH{uUTwC3?EZ*ASIBg`o^5Z({W z++7)4rqQU0hMM%A8ZNUmm2vH1a!#c5!(&rAG%C!Z;a<RK|0_I?L^1~&4GK+j8^H!S ze{9A*bWoBwxwBd`c#NiQ-GS1OX+jP!`T)?frYP&-{#Z(cZM{e*Tk88EoHp*33#^eg za@CYwPLN*}GgItnTc^bMSv4ij|B+Gir$i&=PwJ)o!z2hD+J6o6F;hM$<nHIVQPVP1 zBYm<eW9yATv^pPQK`FAONs?oS9{@BbW!Xq%QxWX>JD^|%vN3h?<GfaaDxoKy<aR&e zX{`w~8uRF5OvN`&BK%Dz-jnpMHmbECddrrUA-8^)Q$T7rqHH4yZMp-@HF$}mAISKH zOS<4r1<xl(PZdv-PyiA7(hq{<oH)4N8ygK%Iy^VV55=laN9i<@Qolhf57u@`v6u%X zB_L<x6tX2LB>?rNX_Ap!mdlbteA$+DjFR9RPm~nn2Y!N#1<?f@pE<06@&p;0Jfy4O zq&4&=nazlr7(P`qXaz5!h;SQ<3QlxOM*^7M@!PF7*z%eeFNcGQ>WrzV-l?`zVK&s< zKeYhhBGyA(nWa=n2&-RGOsTqA!%D{5au?v4+<SIIt;tQM9OOmTVTR;-lUG&lsvU;# zFf8i66WDJqL(WONzFCGprj0Xlv^GUwDO3yqMARp!fT0l`FmcVAvlxbc#GB=?*d~e{ z#jV7!@;90Y#`(w#kE$0!w*j@o8_}(REY9>onCtv;^>}QyKh3CVl7;N4-8`ZTM9;V3 z($cv|qb_sd77%^Juipkq>`MT$37}h$a-{}`2l277{&AZ;tUXDWz8dI{EjHBilSBAW zj+gi3oq_&jx*eN;q{Hdv2MwL>_bZR!DMRN7y<<qPDWdCBWm3!NL41Hn2_Sc@M7|{k z3$d~xR@x?#9i_BlQ*|NEH$;#I-{0xCnTQKWg~$OlNT9$;7GTnkOs2eIv&$d~)?f(Z z9!U_U1l*|AMXOYnBh$^|8kI$C5zBXuE6rG1#gl?u0Du*JR(v!`NA0<PIslz3q(C)I zCEA=aGnPW2Tn$@yac7T<DE)U~CV=q<tCJVJczprG4LrTlKkhDggnq1NVB|iKL!JZM z75x;T;c0gYp@5LFDh|NVX@>lP#$D4%kZ>5C3cC5bNdQJH0|E|(9XxQ#;phe%JP)Ir z#`fuP6spspv@!c=6ejmb8|7|tZOubch{O`KXJD;OdFeiqO^d7&#RVxH-&?`v0QWdM zP{;8-j(3bgyRhg*uHzhKz!G0(;h2-SsFZ}$x=bT&vbC#38GST_Zk>9A9Po(b)x3<a z`{XUZ+74CKm6uipitX~MV4yTmYgdPYc6EteTUb>Zu&!Kjr7a&PUKFCQ6G#BGw*Hhd zQWh5m3-R^tKw%|COscbs%0gAQL)yiN_%tb&RuR{VKrnC&?8~e8`y!GVz8qc}EJK!- zv%V-0D27z@9R<6hys|uK*O!%71nj{2n!>8$@~ToLUrkkML3ve4MIo}Qs4gupQYE#l z<<&tuP*oi&Ewd{FmDRNy>|nKB9MDBJ<;$<Sy{fvt%D!{uO+h1Zd3BW?+)xv+Cly=Q ziY{v^3X1|Ze>-8Rl9~dB58X7STb%dcAHjdC!r#E(-153Ql9>~%36xaV25kQHx8_6v zyRamP%2~R2;Yw?9sHUR4hzi9qx-OQMR#n#$BNt1xRa#rPp$?y-2KDl*EzPqAh#=L1 zROHIqP!%{*>T*<3ZEc_^Xa`p;zg`Gzt^I^_P;qqv;^ozLd1YZ~fP^SP^&oG}d8xB} zv7d7yCGc0*wZIhcD#53Cj+COf%JCrGoL!_TlhK<euD(22W|tOLRu(QG_i7m$S367% z0}TaWeSs>w4qs%q%j@jIin?mMrZ!L)s0v!l!d_rco>YACjOp|<C1HKn(Z}6&Q7JHD zQ8_Zcs2-$SR2Qj>nn=m?DRGlC1-v=y1Z+{tG&zB*WlkdUxLLbMopoXzGTqU1SigS3 zq>`z2{RaM1E1_BnjkiiAR4Q?6B(z52wD8_`MU`Yq%Qfa{S3Z;C$YFY>I*u=_OQ{R1 zy#~jS*M%i`42R9iV-e#MngoA3N1Fr%ycOdUl_TRt^&oQ#E8tWrsRtl7Lg}&Ts_Lpc z1GUw|{TmvtCq-UuH8o>#yCvm;iekG`xvrAhYV-^q=BB*_#j)tTYlMddS6fk73#>v2 z(*^dVijY-U6buzsm>6+AXhReSpHf#tt`?$kIqagsqOyRE^4a`#p@fwV^K~m70k0-2 zjdCcxQjQDSWrcP2n!;jTwVs$@bv1gGs#5X~9&~Nsj!-$8KYEmEyE0UydzgfkOfJ@l z#{Sl0k8UG#Ju!&26LpbVI9+&ebLAXvq3TtNbdy1DH(*zxODwFYsIEt?u=^{ls3|Li zLJF&@0u>3RUvtgXi;eUY@G3TuFr2_G7AJ{sPA*axi+qPEwI{l~syMLTX7`a$yt1X& zyY)_iqlw1}T=6(bym&5Bi>C|f^)od~Zmu($p@27QHwTW1&%s5GmP7SbSGhS*AaM>H z6Q6^N94&{MD;F+v%YZ=Q9EeOc8?;U}nxgi|5jCOOn(8|0`(-T0NE%L3oqA9;g|&s1 z7#7ynaa%?k!e~T|vrzx}RTz;}msVlKS8V$tnfxd+5bwH#CQ|1uBLxzdkz+)QmLBq{ zlFG;vZmcLE!#E$U>s|N@Up5BOGRCq!WNJ`_l6jDp<)$qQl$VwT6DQVM<fN=vU*8a1 zn(L_Aam~(ybQ_k7)J6flkLGWK&P~CDO63Sn>yE9Jg6v>mJqFS|=u9{UPe8Y{stz-g z@}hEdquRbOT2DYZy1X=oPbe=(#Mi5*MrH8NGP_mfL9%_yJV8$&wCPem<)s|8%pSrK z%3K$u$$^J%wE8I@sk|I9Lj6#jsvozk9;9b1;ZhQ>1oJ6fL!RWLmdi^=^PHpDA7-FD zHxp|zq1y5wCPx*j5InV|TA<JDDO|aCUdb~#3)3+EhkXgU1#e*@&;PIr=8pYo7*JST zSQ9K?hY?441x?6k9tfKG`S>Kr3d{N_{+)I`zIcj%JXb@U=1qU&`2)p2gr^_MmwqT; zoi08N#nDfqG=%rmh0MR$D>&<ewdl<;`^MO$4!(x5i_MgmEY_*5t**uV+Dl1z@z+|O z|E_YZsIKSH7muR~t2WqcHUxQC#lsYy|Ds;S#ZbAeyqB&<HCUJ8-&kuEey_p5EQ^jh zp}PUJ1HV@@^a_3#F!UyV-^LK_aR^-wAi<rA3K4$vlrizlvSu0_U6K1D<6Z(JX(Ko} zax3Ggf>tv$70@jVtpg<dHW{edK;Hm#Gt>Pmpqm&vY+{cX+)ZONm(_rT?p{DQa*AgG zt!5}22cK?WXdxiUcPSuAaf^v9HL=wucB8@F14yL$nu&c9kmU9YK$6?rfFw71by0G= z0?-<kAkW}#GPn>-N$B#9Lm$s{K|q4r2uRX?#o)dUNTlCqaQhA27+ivvv?l-(x(x=m z+2H=c;2sAgd8|I(vdHCRSq}peE_7vBxcu1QeqnGYrE9t~0121*2DccHqzxGyZip+o zuNvGp4Bd|m?&k)Vj5{|X%XmP-Z-&9mHMk!e+%F971e`vXw5I@)v}XaDi&BoYE;O+- z0Kr|M<X0G601#Xma2o(!$I#Oz_IW^3-d7FoARx(O9QNfTUpm7mxQh&qzI80PsKNcM z!PQ}fHIH-qTR_6)?*U0}&l%i{fP_oT;QnNA_K7;}WI#f9t-;-BaHnQzx`_swX`mbf zEjQ2?4Ybxk>kV}IDVpC^fF$290uqgHHL+1ZqVaE<*jG$!r-{A%RE$bk8>N7jGjtCi z(aZgSL@(bpxbFdye1C0lzcaXTr|GmAfP`+g!Ch`}+YIhegZr(){lVZq0VHJ`pRGA( z0+O=baJt6b21s(N1(eI>_?n6RCLk%tzZu+1fF#8q4ekSjJN*pJ`CLFkcP*eBnDZJy z%NY7MgPVdk$t89npi2=u)>;Zk(yleQT7x?TNK*XC#C~LA@0p-uzX3@2{UadZ_s<6R zBA}aDmY<l|*G%khP3-$7_TsZF>l#jRH6W2-7a+;w6+n{5fWcX3YyF)8Na)T3By@Rz zgi8@1(aR2ln|6+ly$X<|T@Fanwwu@kCbrAOrrA10CLl>M6VQz!y@|cn#J+qkzN^l$ zzX2ptS?6i!d_W?>g@D8&9D~aRBzbH$xQM~+G`N=y?)vjJzgq!G+G{6j+>L+)cbCE4 zZE#N++;avuWN_mq>9kdVmU4;i10>Ra1<)GC{foi<8z9N;J%jti;AUQ+(_RKh=)P`n z-!Zr=KC9`j1|)PnlkvGt&Mke4j?Drj63j5Txqu`^slinn+_wzw34`l1xB-Lv^5-n; zYR>I@fTX<N2PC=u%-{|IlH5+bP}7|bNN_m@x5VHsn`&8CG3Q$V3FkF{g!4v&YXT%( zUNE>_2G?V7e>Au+Ps5&($P7ry3`ograEAaXnJ?CKrvnn))quoeZvk{8^J_44TMgYW z4IS+qNNx@w;j#*laLJgdV^0Glu@?i9*cB%B78BbHNb>!zq1$QbUN&^6UZOdl4M;f8 z1|*zU8t6NK7IQg%U~q>GGzdtfPo1T8bv7WuT>wZpf6?HI4XzcCNcxP4-ELyf{JfSW z1W5Qb01|!=n%Fl@Y|O-_%+_fy2PA2)0wif~GqF#Z*yl{_k4$VD5?;wAw*lS2&{cqn z7+Mbq|D%Tp<BwR$KN#HOfF!qf4DNk{Yno$Oi<ry1fPe;<4*^Mv$#XSsIw0X(0!Sp- z0O&?eyUox&3P{qvZ|L$a({#mvB##O}Le~UH_`MEjA@dsml*7=;^K|SC11$n1T)qHE zxO~sxzHe~9Gq`sEiS(1^YkqS8iS)Mu5`IO1gx_<9?vw>O_AEdW`*}bjbBT$qGO^nM z3Fmz#cE5@31te*UF4v{32PC-r4fGTsk?J`>BK^cGG;S&&k>wVHTLVbw9s(r%o&Y4W z{MgX_0+6Jg3?&O)6p-Zhw}2$}2@{)vYLVE}07>k{fFy0biQQykziMLB7U^0&6OhPq zF(Bc0DIno@Eg<3d4j^QWv3v@QUT|j`Xf7a0yAaSCru%1udjXK}d)MFw0HMg>Hy7>$ z$^>)+AmMTwpf57+>ws1>^ctXL3@w5q7P>D061t6mgv-4q_5l<76d+VF^4M#jE<jR_ zSJ7n%zk`5;Uj;fS$@jWzH1sYYp$kF~ft=+U+J3EuLf2{ND}aQ{^9H(Og^vAfzJ@La zBpUiBKrnMi`ky8?9b!supEFR%K=&HxaRXg-qh3k415g3;`vxH4@@+t(`)3Vq2Oz1p zRS@J>PVpchN%1fsk+0X_J_IBwPQ6*voefCnstvB*;39x-Va_iALi0x{dkkHlfj%+N zGLVY|MF!ezpxamJ8f*o08S{G@kXXqDx9POg0EwgpfS@GgyB?6x?EoYiZ%(qT8HgQg z-D{vW1JP6O5=(Cf2(-;Wj~Iv!<x6aZfocpCG|+kjP2+<N$QVDL3|Urb63(2|hJxi4 z(~1Nuzf)Bp$+E3v<d^8@6d=p-k7<}-Dt?~~Y8OMAqIY{;%ol*UA=!&T6<Bjq1cN{L zDZ#&&A%dG~BQW+jFQyfkn~(Eiz7EXW$9pkP19Mxt7t;>Rmd|)GuL83XGjTVsH-M=* z)r<KPFkd>|i=iujtIqObP66h)^Sqb~fT^G4#as%^yBPnvc`X6v?=bdsG4$EmE1^gi zvzBNu)^jmm0_L|E?+B&<n>4}dVrw?cmoTD3va3Rcfx7WSkDRy8(WwaYPrzJ{#^G|N zN7R3Cxfjz3481)-79pIwfXThmOVbZb2K<@JXFRfe!-t_Sna~|Zm(Rt(gyHAhR969W z1ALZ?xfK{XOzoz+9T+-O?qb5g&>3_W^HpHz+`Ef;0vI|c?_zcWb2<E;o7XRZq2snL zO$-=1dFx`5p#nPk>S9g>hK|a*n5n>g3q~!Rr_l})DH}gfla-S63wVKj1e%{|vS7_& zWC<D*Wq|*Wx_5z(s=E3>Pe{Os(WEviD(a}9-~)L>3hIbVMGG1g6fGJ82_zVjn9LBc zJOasRh9Nd>wWTd>X=_`**0y{tT5Q1rQlgeBK5Ef|rbsn0QDaSOR5bVhU;A;+nVCRr ze_!vt12b8B?X}l_t-bbp?Gf{;tBnH@q^7BI8A*E5I*~FofP_zw4D^TbA>S5*_AZ#& zK1>0Yt*eVoJ`7EbkA}g%?87kB{Kb{R&v8tsANy$_z1Znbpn1ecL(g4FnCFr(ElHTS zlQ8nIuf%53Gmu5)!wgEooR@?dn}nH?gt;~evnUC(G6}OT3G=Na%rAVHf(4b>rVUeV z;$!l))kj00r;;%Hk}wC8Fz+Q{oc`p-kBMub4`U87`e_FFXz0gBc-6=7nVf{V&W90+ zs$7;3>UJLuJr^fomijPj;40v8%Z0_^f(Xj4V9Y3mz@gEi0@<P~C;?bprO@-M<`>Y* zbuB0@FRd<d-Re-PFx6)`m7jY`Q?XT8oKh(&D=y#}3?G6=VSET4J@g@Xj?ahSxj7#~ zPP|D%bSymA<)h%yCm(|6fqV!#hU4WSM`64OIeg+p$QcqZLXLcR5j^(bi-m^(d<bsp z`w`r<_wwLovJb&sScTvQ=7=%l$BxbO5$K&(g~Q>i`FH60EyoECjjdQbue7|lpsJ!q zAu0>2t0Ben!EVAhEg3}>A^|{SBbDc86{!e}+Ff<StE5aAHD;uT-!fr1VbtjHUSxH+ zuqr%a4AA2|XhS;IgL5gzD6Ec}a_B}aN!L-0#+X0~PazG1(c`@-P*IH@?~UH2)CrKN z1gl~yC|z7xP*6}>F;7J>pGUFgD;NzUtcnU7v*p!1%O{6ps+BkTkpf*Osv<OA3u|Gu z@pZ}BhZc<XxUHCwnJYzfxk5&lD}&<4V@^^abh#2tmn-0Ox$;k!+dSxUTMv%B*jx)8 z8d?DxXaSmcf!hx0M_0ju(xt^(hZvlj9=9RWPuL{TyKSEouCAcVRV53minVO2^cB<; zR+X!02;o4FQ&3&5y9}eNZ@>Xy-Hw#@^XM~$uwkh;QQz|;Jg8m(&8T?u2r;thI-y8q zJR$|I*%g@4>Ln8=1iYV7qw_|No{%?g<hVe9Cyzb9XwiYd*s)_LD*Cwtr>Chd>Fd}# z3`k#)k>(v|5w#0*gU$H66g2#BAP{gy&h?J9#3RK|&>6YiJKjn`BB)x@dB$9VL_|vm z`a=Yrxxrbnzt^qEbhO>BFz-Fct<(JQZI2s2ns{4VD>t5UB4TeVD1^N27V{GFTA3z1 zrsi}waOZ~{GZZ0ych~ZGK&H!^H=}G2UagWKtDoYiRE2VB$zF5JRDSUpFcO&+?-yGg z1>3b#G8$IL0H`1x8Im*FW3pFda5dSm=%-lVRy-zfas}uxf+Etx>XIBvCA&T<7!{=U z=~^8tY`pM}BAzB1jUar;Ir3RyjC&)sPbsQOUiCphq7JT-fR*^wx0w3LRleP|mmoY# z$KL(oMMhH|G<Jm&BTYZI6o!foKC$4%>zQ@CvOr}^&C#`I^C0)ttarbpLiLq-W|Ft3 zx&w&ER(A)lD6I`<;$B!D?tsfH2S`N*u5dSpT2N|EJ2>yh8v;Aue+~fefbUo43}GIz z>QLJQs${`paz<o|Fgq5{T22&Zt&$}$>(s_L+fT-IY{RUz0q-of;t|CT)FF)qR~>Ah zt&#&?*J@rl5nPi)!sKQa6Lwge(&HV#F2kz}Rv%_{A^t8{8hd|l1GskK-NkNHN;gdG zSG}NbOj6d@29KSb6Ui5@olK!Z4s`E?b>kkH<Q;e7VA;4Kgxj;7LEeS$WIUaCo293L zk1*DSI+1o>G_U$|LJY^$EF$k<MmkfE>**4&*daPBypeoC^^>>I&`ul?HKr~jGJ;kf zFjZ1nZ-+P`tCB$6duKwBVb^5P-`uzn7xHAv3zsNW%$bw>g{A$Yo(5z`2Mg<*p<D`$ z;v!#`xRIQJlQXiTpCBzdahciC?NY-zLu>IDx9P4&$)+RU8Au`M96l1;>840qgSIJ5 z;RebWr|7QQ*?yHVXfZwo?a_F97$L>GgU1cREw&gQR%^^f5+LUpZ9^nCCjHs<YmjK9 zAMa>(4KR6Fc(i!_Q-2DIo7S(iFEyE7s6^<~mEfmMjVESRN+WeCrJ<zM#X_-?xjQ&8 zz3qBa`%ns2W*`-Lx*Uzn3^#NGC*!rt(~XO*|4x`f7^>xExXCG+zCV{fIXKvUz9mc{ z2W}1ysvMxhK<CjNo08G?O;o5S!YLF^RBk_0x#&6k5huF+mGf--M3a*9`%*b>(w<dG zgW$n92V0P`J&IC=HaCq;x@f4&hMjc>KLSldex`1{LAc-{tz215s2Ag|&?0EZd&C!| zn;qp+q@u-5-78@`2W}wH==ZiGvoO2S5c(_r(ySs9vzIz+Z{5y*YeRpf)_S2Xv^PB- zdI9#*s-A5dXDUt<11(T!#V-u^lOfeVpOD$F8KM`6&)P2x-yp-5y3l?oTD(U~hKEe* zpk=e8FB%s#P-LF9$&9qN%F{Pw{T@1ny6qWEEBXYOkEq+3f%l*qpj!D35D8|rLbrnm z&+h<DivB_YYuV^SaCaB|$DXQRwo~V_FB%Y;Yb~xKt}e#K&Vrg8_jDyL)n`at(B{BP zTrevy{fLdLOX3oJ-wm;%)Ja^b);Q=oOJp%CHl+yF+^`c#Xvi;ttrZQHddD$J*`rWs zcLd!-k-CA*+o?`%aC>0m+?JfC{JkSLRd!}JOnYM3gC(tl*3aHIam&)~jQXj&hCEPo zDEGdZFO1zB?#fy>ea}S?m30i>FlYbdt;-MhTQg<nIX{?p@Wij)@Z9KMRsCb&+H0P= z;HQh;JndVzzWll0-u2;tyFb7CydN)k{p7FT^y2tOmi+64d#`<Z#4pO<KJ&Y`zjE1Q zD?dqFeZ`KmzhC&b&wS<jXGi_-o$nqSyZXuD|5Ms_>NjtBDeuu`AM}rg{xI}M#eYBP z{#kz>_i*H&$2ZRS)5Sku{MH%Yx$VHE+g5y>UU%i==l*d1YoGnvjn9wyb@hA4#lP^! z3x9S;`|02Q;$J8I?n@sXbI(=H=l^8k8>f8Z=D$q%P0jn+U%u{{OMY4L&RO3pc=ht% zuj+AvwcB&@oAw6gZfqG@xv4W_YW=R<nfJXgr09V|W5b)fGN&~>F=+PseZxu~Y@N7t zOLx}vb$bTS*|7hjvWGe*FW-7N?TXbqK6Cw7o;|zp`+pmC=l{OjKNS7LNwe<%^U&fS z{e4{I;eQ@`b?nJgZ~5j+!%P3CEpOSQ9~?iU@lR*m_MHP4FaG&km#*0Mala{RcAj{{ zSD!m)-VY9ruKLwK27LbR-6!Al^%u`u@Z;CVFL~r&1Fu>8)M>YV>*Wg;{q)Vx-SyiK zPq_Bpr_a3oyRVEW|Ha#vt$gg0^egKg|Ll!ld;Z+{KYVRW^{?MM=Bj&|Pr3OUe>s2Q zPu`eN^PBgN`$GJWr+@L=f4%UIpS4f=((gXXzV6G<oK^6>S1+mf<vW+J`hAa+6BrrH zpIcemv~kn+y)B(-pE-Nf71tNux%w;L|KA<Y{_Wj<C!RBU$_?|X)_nB`zuNiS!GENG z_S`X7-Z;Oy?rT5%_2bXK_FhKrkg-!|7KQ8Ydtmdf7Y=pxKWXT=(5&J}^!^_`{D(jP z{htF)K5zWzZ(6YA?yvv&k=-x8{;y+BIe)@cH!rNY=NmuyP4i#gct3N{u!+-Vmn>~q z|KOG<_O*5&d+PAKt8Xb?7W?M^Jo@BIZ66Fg?Sju;bL*nJ)_&`!zkTZEH$Ob?^b03_ z;fr^CDgN!B{qB!{ZT~21@I{lS&na8JZo@-c_w4UDeEb;~UpnKq#VZ=W^Yd+gI`G!V zC!9IrvTJWIUwQ9$fAQGUue|+9_F0!)eqBMusxN=<m%o4J)pvS+fw|3@Xc+^X9Ts}Q zLMiu_WCh^U?=5`>u?)snt)T;O&cZk3!;FM$sSh&+E)I9yP}jrt7awLZTqi?^x-=_* z`Kb@n1kB4m47q;b!~7N)K1b^Ec?OuVKFlk?oQv{tY1)C|Cj(!2;3Gp#aCR}r!^M%M zi#ZFJsE^M`rUe8p=MXTz_wA5zm=N*pkd*`TJ&W<qnBjpPg`MzIsbb3b@y?c!q}00( z|JKe#LPX%rmmKZd%)Etq;gxF&)is5ct{3i8-XUukT!)}H5q^^DlF|iwF@pql#jZfs zn0$e;a#v;+c}ZJXR8$~03Ec?EI}wLF8O2qg=AA>AQezialvgMu)(jQSI#og|%8Tb! zRuT>u&MU)eO}M7Qk62I<sq$l(UGVeg76{(as>I5Yn-3s;<;S}u1$HftD?U1Tvij}! ztPEE<my8-UD&YAXZEa@s#F3*$3%zG;W-fM@QLB*Sq_vr8)79Ec5jV*3c?;kF#@b8? z<oht<{xOd!;4=u{pcCZU48~GBS_i4|00uaj7|Z~X!=X$j#!=$R)GiFovKrJv0rB05 z!Mc6Hx_b%MiUB4EA|^J?v94p#Zj73D<0+@zp%1U!9s201-J!$B?+$%DaChjF(_oI4 zixtha>(CreMEc=aTT697g@i?bEx4oLz);%`>mkF{*v`gKcN$&^$hbbqstH3+?pLE$ zAYjC(_GvXUE7QZ?Oj+I;FV+lmwN3N$5sR44!m|{><<QK?uMJMtOx{o~%>y=VxXg1e zkT&_}z=5DhSbpm=nsC|$J6tfVk|9RA5Ro-SMFjm4lI~jE@)LWlt{Yx{J1DCBrXT^n zJdTy;yhhMOeR!DU7a2?7=B^4MG|Rx7!!V5mDdub73rD;*7sZ?37&@HadLJH4MkXam zM0nC9Okh!RW;`^gImkLhU_i2YD-d>a6^?(ECwmC2ilO`m$7c<KEW%3UEY#f~nbzdQ zLJzi$01YVmtsI7WDk1%%(T$-;JSB^AeZ-p*87k+*rYz@zA7@BQnG0)}tf>J!1hYv2 zu=t_?Z9vR5e1;i>JZk}Si6{nks#u+ng+Xy7*pz7(lQr!0J;fp+86(y}qU_?3xi}uI z!EZ1NCVSSYnHF7Q;RirwBWKDe0;C>JntGn2AX#`JDJ)thM9wKTf}rd=8gsc8DG>!> z8ZP4o81D2ImwwrYG^l)9`Z*d)q?nb0q#@$Q!B8eB4z5inCIX5DuWZnVz<O1{{?Hly z;s};;{f#zBinAEnK@LzfeX6WDZMdOGmBBq-bs3hauDa~#Y$<c3*HpqiN2vs?0y3vZ zs06Hc9j(N=Qd9zzgf4Rwo4k->t@8c<vJ%>ZXdG$b|DbU&e0KCwRfVR7vhZmqJVYIi z_b#<CiM-|Qtd`9J)0kDQD!X!N3_z6;$A9-#6eyKAo9#ISu(*qM0tB0d=#1?jQlsUx z9Yi!{O=gBiinB!Y`Hm}ItWlCH;TlvpGGp8D5cmvG$;u7l&BO}vDx?fx77}xkK(yQF zQ(UR?d$G4YsQeB`9w5+cT{a)xA4opnk!;wnx%L4H9zLR^Z@vj?`XX4!g}qK5c7rq{ zd-2+7{h+y8plfq#VEZgra7BUx*WI-vK$_O}PjEr9OD@7+kD6;cK>Ui_%<!pXpo|XA z^wU@_>21G+k64P`Q@3JI2E**hpdHmc)9Sj@YEEuPhrK5=+z)ocZOrW}8Ex3lvb{7h z&JBJ78@?Z3y7VXSiC#!Elp^o&d)KWPtRGd&K|y%3-W;OJ7ll{L*^{#U$K5Ktgk!AK zorvP@7aqVukKi{D3<vP58IDP07$C#C6+;|S4M|gPxy?+Z;;J)CQH{cyxa)?h)GnG6 zjE9D37uVe4p@4QxMk?c>!P+H8z`4?y6<f219Q9K-dxbm3W~_L<abY97SQx^S0PH!_ z3ZHU#?K#iNip|>Ft_<ms&~U*kD#yUy?wjfGW;xB;8*AFHqO&F*V@>;X0(8zY8=ANy z$cUPlBmfOf-0{Kyr!n+ee(U>PdIa_wMqn7^<hTA^VOU0?c9soo=nZZNy~VN!z0L9o zy|d_ehA!cFkhS{9f0~BWT)Q4Peh^i2EhUQ|DIXYb-AI_Z<|;Kdw?>MC<vuw*OxvPn zbFM~7G08I9)kYm*?wVlJ4;Is5ws5%RG&wV@-WH;Gg3M_rujX1h`7xpTX=8`YwOfG2 z_8yiU6~7GYvkN|%o-mo#XFISsO=!7ckRhfMn`^fMYr<?|q-48=oCq{+*FXd5h>_^y zw`JBnzI4&Vk_b|K)6F+rpMPU3{4u@=V9X+qSKW@^50zEF<skAjAb5PDJT@nJ99AA3 z2_Db{0cs}yD_YjrtQpXmE(I1u8&q;#Rfx1V2g|_MX)Nyg;_U@`1r>u(<Vm$-Rty>| zhSJC44Ifs<5_WcaV>Ue^59)66r=wk7P)$I#>Ecr%-PLy(s6<X)@N;PUh9osdHchZ` zJQ(p}P|O`Cnf~OLJg5T{y(gmTU4=f}J`SA`SE2vOzri%Tl`BBMhS2-yEEc6VhW;si zPO}OOlkIh(!x*<=#W|<yac$$ZLwT|+lmT20`CtIo4DzvIOCM2n+0n&JA<KoT1jePK za|D5hn$*mVt*!%xAnUp_v!hCLbPVmJcyw20-^2WIV?6urp^8tuma6B{9vr*RzUMOr zN7bZpA4>sYps7`q)fqlrMa`m`pjJCO>$Yc$fz2H<j_%menjw3>G^!cfu>}!1&$nPV zvwc9%jIL)FqkYoMcMa;k8wbsunl{)FuRDmw*|no3<5(C*MYgiIqtG#NXSfW1s8F*o z9iEYO1psX3ZfZGuZ$p}OL$*4g_6}0lVk1D3m9`VMSGhFkv2VS%;pJgF8?d)>RzsTV zi*m83<q>u@gDc6>*g@|am8EM7(+Ad;I|_mc=|xUSNYl4=CeR}fwsz|}h9P+vKFeUL z1CL`L=sz3F4zE0Up#NO{-SN_j*B8V?uW!y;fGzx&79V<b#lDvozYg2$*s;M@1D+3+ z3316gj3txCs=M<`uF-LqskqIQ6H%#|<>y@L!}%rGY3j@T)R^3+uasHV98G|N<0J-b zu<x=ctufS-UounsrTGF6)1x~SHv{QyBK;z&-jC96KcJm7hWJ#aOq{=yB~d^y>Q;1P z1>kE+UiH(U>--797{iIcMl2U*Ak~A?S6+$U$20`gJ!Bx))cuZ@oMRy}x$-udNW+en zOpU?oV}hZasYl-~psv{LkB&P{{xM`*7a~Sihw<hL3DJ7g5Ib#%m11+Ahlf4F2K5mO zVfAB>!>w9qtgOaaEwl<R>n544{iT?p=aIER>0JK6+%zM<q+Un-*xOp#x@3ySmmhai zqrrGBv<lL%N8;l}0&*mx6Ok+RmVIXHIO)VOR+iehK~W`VTuT&%cWp2OJH)W)yMF+( zMw7k!d7cToi_+dX28UtYE;+c673UPWG1QTdX>w-kCJ;iNbf<+U`9%HTC4f$ot!s4Y zyz!RG7LICAyO~^6n%rWHBg;U1L@%@T7K_GQ05#giJ1I7)UqBfzh(l=~6d(v?{hER@ z8u)AoJc9!oLRjM?lo{K(`XJvrX$&1iBsb)@-q9gVt?fR^C0PxnKU&to{MKugr{?Sn z+Yezc@p@x=l)yU2>pj5dJpiHKZI_r+B`g!(&na(|4&HucYFHLCRLP;+!C)vWK8@;- z%O5Z{jX4L;3p8e=L4LFE`Ky>kmwLZd7dMOAH)(P;Nsivp{yItl9ZI@bVqYuA$S}-n z&)6M$Cv$D+9oe8o--M$FV_5^v=R!R-7f4;C0T)mZk({Ni4fX>PQxif!E|D&KroV}_ zsc{l`;W>I0UOHfgK?jTu8g0R8hoAtH4t_WTmbEsYt0gLZ6L&6=!9)Vz_G%RZT)~4K z6qK@>UnpJ~mKRn2k$GX49VVl**4~iOFtb12h=q;iZmPMG>vU$GeN!Y_3RJyZh}b>v zkl;;{O=#jVzV0?y=GkcU4`C1;3vG;thQ&e;#6uU!>nS7U^^~#l%*sT0SY<LE@Qa6n zcuyrBni|6!T%l>PQ2l|>mZZ*Q+e!>&7sR9d!!AZ%(|GCUd>`x8ZI$?a>F4xP@BYQ_ z4+F-7A_qd7k~keD%%KCJ2S06?)&rr9pEeA-(Dk1-Oy_}6)29v7bs*I6X~T3M2-SYt zFnlIlo(P8kb;(*{hde=ds3+3mb{ivk=Idu7u`SR;+w)szzoAsctV3`ry%jR3RzXo? zj5eqaL1h7TmO*t2DhH@6gMv~4uUw!$cwMuHPy;mxsMie&0}`MH1NFQ@EeZgWUvj6G z{J#i0vks1Rb7T<9%|m)30jx~-L<X5H0#QZC6#58H204Uj$#1PO(dEFYGFW6#xq@N_ zuQ#Ycf?@_QGpNCWVg@fXC?piTn885?HAGO%V1I)eCMag`AAgr(U<O<AOKAOyb@DGE zG#O-Po*tROvC2w0jathwxO5qlLb)qM!__8exSOTF%H^P_<V)IbqvF~&34ZLhBTJy3 zyd9M2B(6(5$}(#(W9+=0%O#FY332e2qUK=wuMhKE@6|c#*BJUR-^M*e$NhU&2G&-x zqd%~r`*}j=tI&$Ar+fPl{W*$jl-JwSy}_Fu>xsr&&m=IcIB)H&57&kcAG>pH=#yjj zLjQ{5?(}D+{lY~9e94UnqZ~DwAKBkGz%o4;`>Y5wKIWgS4?O=6;lSKG8y(I5z-*Mc zlzBU=q(JBR8MjT9N|SEsLk^Bnem859Lx)7!x1B8{rtAEXlwlU?&|8LCLd$L%9?50+ z)@!QeiFa}tK5e|+G8~>*hDziTQhzrRql?j`dW1@Kd$~%B9SQX=Xi_`d{hZq`(ZPr6 zQ4*wVm`dd$C1obQ#{_HJjV*BrhzauwVV{X%rmOjK+A$Z*N!yM=Pksqbnuyn<iji4i z#=zrn+IAe<^$gWM$Z!22hIM*-4e9tmMoVX@ESn>MIm>tHk?=I-p`~Y<W{s$uQEqG$ zSx)#Ap|vjnW6D~$qQi-t#i_)2f2x~9T+wm#D`Xuq-1QB#xE_(ichqyZp00RIPtD_R zO73Ku4Qd{ao6i%G&g8R};AIyAE0<u7OkiWpL;+;BlV1`B$3;+QyS$qvbb1OHga6%5 zfJ<rap-Y_i#mEZ`u@ZNm5Kxuy+;s;g92jhLs^|g{nH8<~C!7n-ox4$0Gdg=_bZE*j zmJB8JHs}zR+xCQ@19-^P4fL*Ej?p>4-b6f@^T&w)jH({iwPXE{g%QA%b4CZM5(Oy7 z;@u3ISNrtIRp#@@DxdNMk<5w@`I9DfjbR@Wk}zmyKC+MTNiB%4TQZa$L;M~p{Pycm zJeV|JhlFt%gAdbfwVI1FDDG`b|5zrQ#F#_LyfwRCkH@i!23Ar*n40BM*xElM@|mO8 z3K1k1(_tJx4@%>ip%b#aMRZks)?ti#yX{n~|K9}7Zj2i$oX4S`7D0Jah0rbKOhqVR zeIl*XkEMZ6xh4?9>y<K1lq}+*=;V3$JIJ4`9b&;qaxJU>J&_AR%Ll#GGw@qE!{Pcx z(mbA9BuS+M1p9T*hy?F<NnSA&*JWoWsyFD;yX;j@>ABPGW{pmY8AJSr&_{Tp4CN{B zyl1w4ThT%|RP33p8<q0W1-wo9yQ)YRCs*(xH2c+`7WIdVcE}kdrWF~<VY~j^N4hw> z@DdJ|ST;fYg`xu#I2@4KI>=DSVlv)6f}GCr%c*}wN5&(Nvu?(w<!q2EXIRS_jI(7% zA1gT=?E2%qz^uAAv5<lC-pi!{ENfvPnAv)YWEG`-7%es(_Y~xrK%C@7deOV;Bt3ON zmpRY*w!%woHs1J(prM-6C=F;W19pdAcQ`eDJ#BaB4Q84>(Cf%{X6sNzO$x+?xzlzu zJZN52!s~eWk&lL=9ilsc*l+KN>|&UAb;R<9&=XP!ihK{rF?ZV|<WKZO_K<w1BA1HY zE0H!!7i3mj4jFdHgRkWv>I96{1uJsX)EZsAzkXz!=KcKEd;ZEoK&sxy7)!QkA_{}1 z&qcgr`IKGBDjj(8ekn5Hj%`bvZ^4?HD7#I5_Q+RbXdm(*I;gc<f}zlma$o|sYIm~c zv+v(7{SCSXS;p;1=gIGZ(n}1+B1A&o(196Ax*A#p1hL1{Z$p1WFg-Mc`qe$_!;W(B zG%Ou^W5HZs5qHI%G;|oeG=nAg!OMRs71CMqQ=OeJOJP7G>=O^Rk<8Z9R4Jge8bhz- zw@!Uo7vU>Xgt?eDDU7sTEX87v>kR~7G?3(E@RH#g5Uy-jnXS7F5>feT*JKvGl1VfY z<jJg-=Q_o}&CD}kB(p+$vO#NzZ|kV+zI+L^qO2icRpB9#%#E_DfHedx<!)^ZZ4FA$ zhk7Cpmb{9xS#-G>5nyT~p2nR6jfeKQC5V>Jr`*wYG2z?F%@Wl713i(A!r*#CAMp4a zTuxeuVbIR=OJ3GBvEwCI^l+#R{frju4!`6X!LHe-YsCt7vBLNS`wbm<zMng?jm4tL zSv4}mmqn*xf=i!#Rt?r&^}-Q!JfMupr_^xmY;ADB<jHE~Xi%oFH*fzUy#0gA&zr<B zB4~KUvw@0?EE_@}3(&tI^oamiaO_!h42Pj5Cu-)u6c%bYeDh7KJDO19jVty&b|3r? zZ$ZXT{_p*$amCihmL^~}J~k%-Q~wwbiMgR<2+!?YeGE|C-0+o#iUT2a-N&rN1ww55 z$SyUPyN*Pzc6x#_dAGe?4yp7lVD>L}m?zgHtbPk!`bocRv!P>au@m`bx@rkvlq4zV z4zHxVt|bQtK1K=wJ3@%HudQh&YS|u42<(=-nQCWQm<(+JmMbc+;crqK(=0mRml$`T zFLASvl=KnU?et4z66_0;!-ffg-Huw@R9oZAj+%S!tx5_A?AG^O%~Q3HYtH&{$?WJl zjnI$0*7Hf(jrMWLc&J`ITyJ*N9_Ff{LdEYVjF^(1l-x=t`#emx_Js)tIPKRk<>tZJ zB*utJsD|`~N@zB#?AbkQ_Yu{mdU!P!ckA71ZxhVm$zWd-Z1pv-#uXbM+mnE)e{7Qv z!`S=yp707RXoK9`md>uf23x;C_}>%OH6}+U)svmF1%z`O!%)v{>bf78(B<_J&P4J_ zVRb|aC2X5LeWY2$r$(jTGz)|CR%3!!pKFz6Vd~WT+UV4%h+6_%uk<B&eJWwp1r|An z(brOL*y#6Rk|2l|G@@A{RJvG3x@gp+%?xq?MI@zoBo+Dpnnq>jsI52_d6+Bso;Rl3 z&QVEEaiUXZ2a#K(C>m5zMEREp_e9_(#aNBFXUK3JgBMWH1Asm5Ys09P#^a1#|KV}Q zE*xhJDh-o-a<Pvm`M#xw{YdGNPV)J+z;<M<aT`nWvB`c#ux&Px0Ur|6(*D_B-l&^! z@HpM$#_pd6+PZE0?U!9oyK>5rkzKzWm7*MJ;r?y9v2$hTL5vl!!_yqv0CLRr)^ikq zv0c1gI!|m0@xtT-=#Ax)dQ&{q<XOOc;C-C)ulw6EvAxfC;~*3_l4h)jGJn41*wBW$ z73-bI8J6V+9<R8MchXI4?dd(FW?al=8aJRGm=t=j>RtprCcFM5(Mcv;+W@7anCe}U z>P^j|%~&x(s<$xl-c)brBHs2Ltr*=Sdl;ZT<Vp4R_xIMdq&H^a%m$O4&c%=!o3S3k zWN)ckv00KWtmC0AO!g)w8_`KT?HP58H}~_VdpqKq6xvm_4q*pm*WV^Bzyxf&Ry7Ew zyG7Eyr#ZA2>&-|v6@o9_``elXv;WyvN%<4;&=YIT@_VdtI*N&xY~{>ZR&z8TZgOfL zs9<3iCDmFy#op7y>}AJrvSY?x^p4El3w0~@O7<iLxZ=y~sR!(Ja+tln8Q$#eN0gI7 zc-OuNED=5<ywVLQ4;nLXoszd!$o<;jarP7;SM^+B>S&*gnI|{zC3lA~xrU91aIQ>h zuo-m-J5jC7gj!QclT$2KJg~4QHXycA9Y7~o!9f;m9M2Bl5qm=3p*P;K=v1WJjwZw* zsQCSasZzj<sm4LbfadMX#IxDId?MC36U6OuE>x3Cf5nllISqL~NytEGW79I+R=&Dp zpArK#Dr|_>NFRWW^Nd(@sp$_s290pVwyE+*sszCyZFf4xG>TN|-&nNBI5~EWMd#8f zzp-cu;O1x<e(_l)lDk%7t!u$K!tDCz5LfLsCL=Su{ts|8N9*BW={H9kG!z#$7=_mY z(SBoG{+i=3(RD!9ZR78%m7m?hvEPM)i$zD0JS*;T#RZopar6lP9$^+2c#@Ps)%REr zwOl==!2lkR&Hjyqh(+%M$GE^dS_cl@j?-naXcKVF(e?Ocs@t)Bg>J&3nh+#b2V}W& zw%{`?o(B~AnaNf5FNO7v)=V7-dGt=pD20|lk3^#)n<O=sy>2PcjIWjkGm;`f4N68* z5Gc+dAh3EHf0@fAXy&XJd{(ue6c^teEd$eqPfWa2vBadVRgLCkN4H8nK8TPk8(WVX zfRN;Io`QOP0Pgm4;!)yp7Eatyc2NfG5p0j(;)0nZ@>jLjvfIeuqut<iuXTp)OwEYC zes+}nDyUDC7Zao;xb0-<G@rm?3YJ~Z`>4&)EeN4<MA42#xdMyuuGH`ZFQkU}SadIa z1$L!o4{*)VC-6%?KB*y6q-JtjL`hAiNDc9cQbX1v2@(gTrgvIKDYOK7B<{HUCP_^W z;=_7~M{ra;kP8z}Z8DAG4;liixAE7=4$A=_ksTqU?2wfzy5{J1z^Xt?06`=k!XH~B zaBqUUy)-U(iU{2}B`JTcD%b^N-8TNZs(`LobS!?U3S3uQaA{JNJraM9Fz*qTalvRw zi&;tA3^r}|AfawTh*HA#DU&qOmn6F4QU0nV#U){rL~3d-@F$Q_`jfd7nCvwRfleib zTi_du?#Hj<>Pq20;F_Z^;5SJMiA*Jh#3xE2S&L*z9Ih0mqGgmqOQ1*Mj>~T!q)^2J z2{ZAekV3^DGz3;}<FApzEsRl1p^#Au$tos=ZHl}M7~BvNoYH4j5S40B>Mf8RU5ip{ zj&^|FC%Y{`NRV!zA-jj@mR=H$Rye4vNJK%VTgeZ}sP)LNNBn!lw?{J|UUyMSS&_X~ zR^P!m+^4LtW|Lii53tSA!w9F+$DGBY4%nv>6XIjhT>1))D<(O>HAl1XOFlkjMWhmw zem-SIe4?0;wN$;t;fhHrT1F|f1bQUyxcv4aCK(=OrQ(4In0U09cxe=W&=6R?jlV`r zSPuAzvJx_i30bM4YmR0BRt2h+RVT{TTj5=Fn+orSL+cFEvCfH7bxumEG5)n`ER)d- zswc`IJrba98}Y7UqbnAj41X#%*A*9BnpAsSekVzF)(q;Al*i>)2~zJmgF+LF1`vnh z;R?fG;F_a@@S7wIMEZq6jbVsS6b7=E3YIu1487AbN}(mtBXP&&H%S;c-obW;M;KH* zsAv<9jEVd-ia%%wtlq|7BMdADd_)+8jKV-xF<$|*Wl?9SVx!B-gI8w+v!gt-+Z-JW z4n7eY0)zzN$|uysFuIKhT?9w_*m#sglpng+I(u6=#33QI2LJX5MUVLRNF3<pfY$xk zW40d~31s^%nqj74Xco<*^w!dt#sjsjXQl0Zw!7h}Bge;3{#ciy9IC!)v!!*_+{A$u zmWHwRCj+Z#V4=!I>8j~)BYe`pig>W2ugo-E@tgx(vrOfa#B(;hlz685bQST5;z`yb zauSEDt5VT2N}(mtBXP&&H%UCzplN_dJXJgpJrj@CRbCp!A2bA3Z{x2KPnH8dBA!A< z@g%F56pMF4u65N!c-k6)piQRR2wD)1_Ag-^g1;0rx{aWbkgAG*t*V*{M~|R-Bv6k8 zsoO@ptE%XVMT3wAsw&ro2!KnAvetWK9U(5iN?x<qR0C~gmeb_6U!YQT@*uV<c~)#m z(VN(Qiq!YWygYRtruy<gS3JsJm4~?GWRes;)os3{pT9=kGR3LnnI(X+hR_ps<+%i| z=4cUqljNC5k!Kv^@lG#^Pn2h}78#W|Ty>j@mQe~VfgXt)5&|$uo|U@w%BqS7vTEYd z>efr6_=ASP>TUcr@;nVNJ|fRTMtLTym=vukV54qH?ir#{cY4)rZFcl0RJWmemYtQP zN`#Uoz{LVIfiT^s2`q&JXZxZgViTZS_0=S!rsdxr@$V7eo=`oui?oj2ZDPUkbi;Bv z=-WP$6ew<LbtSY;g^$bWbkn3lO+Dg{hiWaVp$FV%HN`{gVA3SCQNRX*8?elY%U~a# z727)oQ0Ttlv+j$BHdxdKoTMK<3(K1u(ly~Ih8jK#0q>g>TE8k&{%%-#K|Hj6QfLFO zPp^aOpp@gFRg(gtVu3&nXmo=DQ5i%dJ*Kci8`(poC?{P)><_Zn{0qOf_;sJqj*+Tb z7{b-R*a41P^?Ir-D9A}MPcQH{6lV5sLR(=;5G$s(v4pUw`2?%F{dPv6R$)R<D4m}X z`Me-yf*g7xp@D?Z%i&H9*qJ$WGRYnx+0zr^f~aZ>%fBHxQF=Yo)$3%3C0${sHM-Xq zoZ!1>^@=?r_&7qe6*964+A*|;>nb7C($?nCcIL$j)B_Tgl36U7Yv~F-)P4h2tRbpg zUPk$c9)y+-J!pkzS5N4{p3nn5p@-^L>{_)lM=g<scEzIkx;`}s-3vroXiE<d32oN` z{X-l7W*g<Ewg6g=M5sl1AJ}7s+C~c7yPM*n&DQ-w4=#Mn+K=^LifxC0FA&61Ew3{w z3C2mJmf^Enupnzut+*aId=}Se(={O_xOMm}1cV{SLzH0rZKVVs!e2`8zF2g&&f0zj zqB{m67M-clFDMXw5z)MZDFxWkd+{Zf-5kvcWk)bBzbHGb)lUj-tvS(@p%VFLN#Y&G zXaU|L*T=TF0*oU<TtxK?aHn5@Wt<%9Ocda5k<M-r;9f|&gap@iI&l`vC%{UPdqouN zAfm!ft8lL`IKj7T^@=Vdz*~#}<6<iWxLfZ0Y?&m@x0;vH<FyoB)!upf;NiI_6rLbj zfc(l*I~q9Go^c$0ra8SjOtRx}{R?MnvasPnK5)w7`e7-UhBSSySr$K+|H&H!8}hOe zO>>;)aGBh_hZW4F!YmUps%_&~{&HaSmZ8^v56<~@JO7D^5{XD{HfklbnGKtH;eH}E z9@IwTp`BR2;z3U6AbJ4kZKIJi%6JX?Kw-trP#m&ALjYeo<a{AmQKEzuk&^qvu{A{M zb5;L()ka%OOE<bWng|OsT8#kbA$0h$xHNEr<^q1KMwD{-9px1@<pJ|*J>Q}aFRLsL z3@vi*Dl45AP)6{@QvcQEOA5<MivsgX!-1mW%5X^l?<52kRuwL*hHd@gK<VPbg~ec; znhx&_Xo}SSm0%GL7Z+JJz3{Q|T_~39j>r>nUXjdC(uo|GA@!2i>dNBzr3*^&%z=$F zsXSa7lYI4nMiK{?hqd9CNHc20=n>-_RlW-fOUsbya7BP`P?Vy8?<%&nfdpQBaR6rf zs#!0pD*7G{R`!Yu7u#Tcjt@^D*+3!#M@b`v=?j^-eTqHjyYY83z8`A$P~ge|7wE5n z`PY2uXW&$S=`RmQcx0<QvUpx`RiI*ls>f=SUO-EbbM?aV3Op{fFi=%|XQa3~%)+gy zDh(G03IpU5kjEhy!pc%0|Jth@zJS8Km<pD>dj(-}ak!+SD1cg7P*%85;*>D*;Eg<V zAwTkVjfW52NJ}|h=3%NR7Uki9D^T({2k3iki%2PHRJvhP6j?7Sg3we}RX_-f19*&T zAzGu4EKph<C@)@!S4@_$P4*ThTu~7yE38_G*6WL8W>utoJ^~}XCKi-p;rwu<uq<VK zjyyOb?}3=|qeCkSH?#7>i2TTVC5G0mPciyfS%~rqo4R#FyLDR#U9q^*Q@3QNYqla1 zzPMt+#dygD`J#@3#wrkvb%gMv#$Qau=3!G)Qe5r^Wr0p~t}HA+KdhxmNNY+_@`dFA zrHtmoT4#B2nIkW=n7qw{vCoB76_Ik(m{M{m?4shOsFtIrhn#e_Ql-brdQy3K0v@3} z<UtvxL+f_89!g59!xd;C&;{i%*I8Wck=VP6s~|Q?>h36BR#Q<0)#+Rp39~^$eN<E} z3)GZQG$B0mi>oO{E?udPOJk6`!YW7>n)Aq|Lr0FD&2oVhl$J4AHH?QM?kX@{0+C-( zRk7H^$|=JGS4ShmOFUJD((I~AAq+?2cx$SRnRMz5FOEQ^%qtFz3S1nRkmshp+6nXJ zCwc8jUU&*YK9`|&l`o8-V+^2!DMRmuW`^gVRFyjN*3Yc+s^a+-3(KMTivkh!0;<2D z;L=}{$|FJ05guBoH+iMVr6-Z5mnVjXjv75;)aYVI9=h^{^~Xbh9Zue}vholvU0m!| zyfh{fXj)}B2<ll32w_o>JFXn@$rpd*LmWTE^Me73&@)_O82a&(Dh%-^u2f;^&rhnb zCfvUp-=_^H30c$~l)p~P<-F<2v2(8TEo6}zIal7YRJdk~`!k>-@ofb(U!ZeQaEfjM zAcb3QaczKTGkSp21!$gx7?AEbg#zURnk&#sKm`KD0jUsQv$&4{-7dc8BC9HWV*%YJ zxN89^-&zYjV(E_SZ{ny0r05<5q_{i^NO5`I`t~1S=q3SDbl(P~()S=BmA*|D_f?!S zQ(S&;p<Gnz97$gYkP2~&g{mxc7a+y?>lXK2i)*vEcP(xpMlFipiGWntaTa%}#m%(1 zITp9r;%LcQ)xu*Ix7*?lSzL$3U3r{|_ltn|&hP-I1kkMl#j=d=eSq*>CuPXu9s#6M z+H7&pSX_(6wOZVJ7Wa|GeF<+*shrmVQv8}MZapBCqiq)V2a9{#;##r|msUWE%fBq{ zyd2|OV4;N;`hkV^TIgL1eE>+M;P}rNE_YdI4It&)W^wOYTsn*oD;YW+(DhQL=K@k8 z##!GP)_0cmz0cwfTe>?wYq)gf8qSq?Vpwrr3P^E&!s7N?T<*z+ZZIH4cd5l~wa_jL z4LHSwIKe`nv(OX^m0M_ug??b6pIYce3%z2YfrCsOCtBz-3w_=~>j2Fb`I~U639%TE z!VNmj;BK(ct$<W6%PsB^3q59i-?X^ZryDLYKq~AvE$$Z<dc^u3GuVX42Bbn<U~zx2 z(4VYti^ZLFh6#H<AQd*>;#OMdZtMF^iwm4-UWp$INY(yiK#I$4fNqkqT55f3t?yG7 z_h&##d%t0QN1bK(<pEOs$}BEyamNG<T{a*^HyqGy67N{+JK6fqu((+kw;j;U4z<dQ z)_3IDhD+Q+f3(mmfK-Uwb4&_CfK<Hyw78D}6$<BJ=b8}HEYtu<mD-{qChT$x-496l zeg}}^@|?wWS?I9!J$I;yV>Y1MCEmL&?r}hh-?Z~gY+tj`tALd68-V6X*!KacTn5fJ zzUKo{zLNkc-x=1o+(JtLsWku0;`$9UTm}MCz6BPy%0geU&<`#2u!Smyo4jqd(EEU9 zNt#DqV0<GM`jv(HU1U;_YoYTjG|@u4MmP?q#JSD^Kyw9JbcxaEHGouEt+KdR0L>A) z<3<|afQ619V|x3XFBpE80V<FXUjU@|-Dq)_Pse-T;ybM$Rv7>daHd-*-$FAjG}}Tn zPN+i6wNR0TN-R`np-KydEwt1^9CImtwHB(kP=kfmS*XcE_gQGYg*I4dqlF%@P|CMS zYW}@<@6m}k6Yx!Q0(uk<VRXuUm^`>*KFl<@PD}HK;+W%hAEpu*KJDgmz8jbza^YgW z4NO#H(gEWYcYIGeM$stDpMYVSGVoQH1As2b^zwNNm<PefrTG|`5JnwtT*o6Vw36u3 zoB_<D6TCDuNJ-0xF3qLDoQ{!&%V!2Kv|#Ac+y=}vAI)N5uJh5X0Or>|8rlw=>7)4} zFn{yW{2G{gAI;;yocS4VdY%V{r!L&|yar5vj6mEpzX!~9KALot*2fr|xHO*yhDMNF zKIZ~+Ed<1+83PRM2)Q&@0y7Q$yGwHmFtiHf(v$)-9KE+ovkVy8RdH!z!2BNlwM+9& zV9=yJH2(uk;Tc|<M}hg+huH%RZAG}8_XD#m;0@IQ3@swKG>3u7JKIY`N#PBCmu4_9 z4d-}iE&^tik7hD3(IH-%>A>(hx66m-Dqr)_lmWww#xBirV1ACi#Vw6>!0@`TOS1u( z+t2sXJOm7{=ejgof!XS#*#itO+qyLSfZ>H)7jp<0UfOjroxt#7uZuYhOyw|d?4N-r z?-05)X8`0qLl-j~Anzi&m~jAkU(v-}0r0&Gy_|0bhPRenn)v{Exyi*;0Q>+wj9X&& z0P`w(6&LeeU=ChmFv%|l@g)~(68H0e_hL{9Qjei>!iO_w^`SQA`|x<h$Acl*?4u#( zc^`&P=wLmH9{3ooe#l2dpAVBT$D&25j|r8Vgb5^JMkHY-CSj)fFj#QKDtWlrAJ=t0 z8v4<MmHL?UEJ(sE^I=$G^DCDnglh27tcOdz%v89fxFCWx_kuCzHEv>(5JECaKQb=6 z1qIcmcy*dj7%8Xh8YCf55qJze8SOqJ?Fn6gO#nqI&x4!21z+fj#g%xLy1H1sL|uTj zTjk9yxDjK<jvuApc2{iOC$zb<0e}1UyYhD*+*a?qkDV}4zpt*tbI(IE$xRG|pEyoG zMX&vVRsP)Cpuc&DUHQAudmH}=`cZb*-}i(#_Cm;IqOJ@@B|9dP3hr~zKX0tJP~7Ls zxyu0mym7u<cpf{)p2LVS<3^g7={0{~6+iAg(0`(Sk6!u9euTuY{YQ=UNdmFnTyW(d zTt-dsaUoX4!nJq!j~?ywmrVhQg{$uLpD@vzOZRd2`6b2k?<g=U<`RT!%Lp=NqOW*m z#aaBh><s_0qkIJ`i_zlGMQ8f^GbZcQ;?I?4_>UVo(wijrEqbmj)8F4jJTKR4|A{{F zbl<t>3NylwAL;X#b!nA9tSZyrFW#~kU2x@yiFx!Ji@XD#C@=&B@C1QT%z(!W?90D2 z&Vs6n8WQA<1;GT$C*Uyx3zNLj0t=J8Q3CszEWpleb&2J|DDmjKaAA~rV|9zc8)izJ z?8dLRD8Z$OPo80)!;dBgtz8o7YMTXRk?Imfh|Tq~3jJdJVu1_zu)X#aQSl0>*1K0@ zBVlxbBD!lqRWV*{Blo*BGfj0vG5a3zacNW}3ad7qg@BP_uf-{-F0aH+W_W?3K=S5C zsObylSLswjf#F>`>r|y88u5}*W5xwMpQF9gHfqB7vEzl_eW&e$(T?*K(f-NrwC%(A zZZrHcFs|Z<4~6|V-f3Hkk<vPh8xM_A@nR6?1f7w5rw!+4aA<_~*l7g}#;tO+$s%@G zcrU?NItuIKL~^wi21o}lN^2!EoYN31)?Kg!mDL=&kGQr7;)4yb=GwU!)CQ+yD+gz{ z*1-ubKU?^N2WXjyVEzq;Cr*M`TR1o`(qHgkX-%M7UqR}0TckX&cDuG41XDrjI57pI zj#-Nw69J8s(DwIQXX4|0;i4;^U%C1z$LZ(9@+*6x#DT*5x5K&+4$1zkJuwVf1S^M< zLllS5_aj@9irF~ok`OoJj0A~yCXb51nhuT%^-G{3hGeHIvXSbFkS28|Ph7Q9xDUs% zrxF(7qWs3tMw@>rP}sEE=qph-_xU9g`w|9uf_#)zg4VKz96)MOqn)VnD?!mLPa#2$ zoj7e!b*ZPgR0`baV|AM(6ub!_EbO3bPGGSfIDUlR1_e_r;Et`?C?1F}JNh+6BS)(; z@W97U;I>J_5mnr@KOBZ-!}W((;nAM;ABHb(pN7Amgz0j^H`DTt<mu<$fI21Z6Se2> zQ+eX0Ckgpn3QsAG@KjK!>?P(N9?g<(gk>I0D+<`O>!#Cwsmios6I)YHdMO4~tg$r> zmIIrt4G*Sb+4?^Bl?9lH;uC>SV**R-o00x)j{~GU$@_+rkIBA=d9jG0J#gXT`<6`n zy)e`%?OH#+hv`1jkyW=dfUKg~NCvvZY!`g=p}XC}7sn`JY(AhUyl=gs9bb#bRnlwl zCP-IZYlh+nI<V=qEgw{3#gt|Sc&1OYSEg#``jOz4>X}9VF*0@ZP@Xo#F*ZcED5Hdy zXklE-Fo!g<70MGLnMi==<woR}Z&9dVS0@F-3k5J52h-DH=1r%y?MpaFr$Sub#}HRb z2pB7aVLzK^>X9~<ZZB!J$*g-S!zME+H7fMyk`e;TpUiP=XWdgg42ev(J&tpfy+oEB z{joZEDutAW5`#X?EV)P6+7!1HVnzpM=1rRHXud*7D7+Dr9laa~hTNDC@_fOwa*~sp zx|C1qJ++ZLRpyjs36ZCSl(y6SiAiRJwQQ28p7=>fo}6{;j;+Z-sueBEO_zGx9q8{= zx$$jzzhI?K`z;@vlI9qoFCosiA!xz6FCqSU*u-&OA45EDL!8pb5MQw&PV8fd0vjT| zk0CC$A-I0pmz;m}k;ysF<n|@RlQzT$XmEWA@eLc|>^{a(Y(sp~$2i8=5M6x?k!C}@ z)5j3c@Z~^JFmLuT#CL3nzxOf39X13liT9;+^Hhi=W!4sehdzFdE<Mu;!)`O0Ze?9d z5IV^i3PrluC#g<jtHfz_6qJu&UHjO{dya-(@`2>o-(mH0i0W8(V;Jp?Jb@Zsu068v zV7M!^Vf`uyw_${W*28|w^fv5_&DvkLVn6I>RnT+B{&+?scNBVB7*Z^u)wLYMPT@LW z#h5RwDI*fHkj^`v5e?8wx>OA0J$d%^Pgy$UF3$+;U?Yw_EVu5A?0en<%l{;XpQ@3D zO*NU;uQyEjsIT$LK!5vhW+UW}Bpm|a%|^fMd#L#SlWe?(S&%2K>2=-45*43e^JW8m z+rOKQmHtTZ>PzGVPi>^t%>Pfaz|~Su7T9ycUae0YKKAs{s1DTuPNn3z5=0j6@&9_r z2{87(#dF2`kQZxACc&Uk5SMY<)scT6iO8%nID|_eq#~PHEv~6SbuZy{@NNGh+AXK3 zy~wmSI;s0-8SN>pHW~S_qhwT)80#%g&Ri{n!hgMFg|l=3>LQ1Gg~I=Kb6mpY?OY<4 zQkrz!I*eQaNw}2(rh2FxH`KU#F&tA-+|JO!^{tUKn`Vq(acd+k0u!oeG#vh;ieTa! zS`SYS%QJ~8AtrNQO3s`b=3!*cVV(r7<oG2Zh|2bB<XXxYdYEUWl>{~+He8$Hn^lLt z0=A+%Vb#i3f&@`%%8p*6Mu=;hXtM@B4NX}Jh&Snak2Pf|jOWeF6AVVZ7>ZEr<`H~t z)5QvCXv)@@S^_X@rG&}w60DK8m{_-((b_(gX|wSOjYr^cEsXDdwvuQ@Ypj6-1;S!A zRbFGl+}1iDWz9A05KITa#@T7sH;A#}>YYprnibxWmWR7YkJS?);!;54Gznl@kh)a^ z0lgltdMH}CtK)gGRgF(6y_17#d@4!v#+K<$uNhG=3~>-qly!(8rTIvGl5WHZCw)@5 z228XK$Nn`50Y9Av;#&`emYeCCGDLtl+w*Fl_KET|#K|a(5>7z<z7ns;ulG((ih2WT z0lB_}js`kxB6JrkR4j2sCpV>fp5-+uYX^Fmo->2O*nh+N7M`hSb;4Lk=y1YQ^s9V) zwWC!G#npu{m&MILw3M#8P)7z>o2Q5}Tc3I#!>e5|w|7Wx73Nkw*&Y^d;|!m3G@ovS zqk_X^GPCt-Di~S2L0@dolO&As1eItxtHr2FsmIwSC~!8`7xf@V@)y3--vOwJzIx}9 zhVS^|Zf9)G3n&C*dK+CG3=baGM(z2A?qPX-THf8uY(4ZZ$tB)UL!7t+DR%AtY7B9A zE#IM|*Gm$^&?g;5oy&be|D=5wW?6k1J3g8r)r*<rnSBhweOgg%iL-BNHdaeU$+=0a zP?UH-L$x<NtQ-)@liuZGp|v_vDkouyKruZvk!g06o7xmo|HS-tV0%jk9+K{BIxz4R z=|Zm954C;SvQ0`!B=x-YHX9-rP+w}}LK`Bxk0Cx#dIE($u#X{{ZHWGT3~|2=@h?Dq z$;W&f;@v)m7-d5o>|=-?=|m`QJRj1RRQ<_@c%zRYzHLM7>tl#g8-j<Q`jV;%HpGEG z#?jw~c)pJzp0`c&={|<|z76qYQV4c2Nt4a?D%Iw8^^yEaMgCDA$#YZ1soK6+Y0s{2 zbtk)c6ovy2DCAD{hbsa`J?nQvWIoJ69=jrWS}D8!ub^V*R67l+lBH0<L4omD4Ekx% zXQ^(CQyRF`J3*2*Y`1jwL^@izIuCt;<yI#=dQne_6Qmr77ktD^Iv^>*PIo|))l6^9 zz`DHQz_r8BNHoy8P)l6~ha{MA=x@*Pkl0|zqaxA$%2LS+o=r)Z+RN}kp}ivq7LmR$ z?K6Ha_~|GdFv?FH<+Auw;Tw9P?-Y?v=F`;+zN8mC9|cbpZ)Gp|K}gR~Cr7%YL6W0E zN1%-DtbP3*P{o=UPLT_PfQP}lqcC_inSoek4XgOOj~Kk};QRjIVUS}GcLx*GGzSjZ zkcjOV{_GYw<WX$ANhQ+Kex4991V&MK{RCSRNv})w&@==L^L8wMj?}fJPF0{wfj>&T z)~JGtmmx4z>NQ?5ju7h7@sc`KyvvUsF9u%S$hxER%Mj`Tl+^j{h9_RE)$x)#RlK<= z1vlBsH+G(S;n12Aj|Pja+{Vy)-_#~Jm4=&9{z1Hc2J;;Nrt2BM)=h^Hu!M(_ebamy zjqZz0nJU2k*pz7kw8W-N7vNBA4OJUpiI>sZy(Fa_xJsBMv{|t=8<6DN9>>Nv*70)n zI-V*AJ@MFaNQSc1iouLau`P4?5*gG@mA=mo>Y${sxc~zb2@@s3b1^6to_kBF@HxO= zjv`U-!|VC2*_`03c^QkKzPz)hUKj;>!3TlAjBNTPu{j^;#!x5JotHnPI!R=5hSov^ zQ^qjVL9zDYgVOEA2czy@d;+O_kRYANkK3e<umKuOOm<ehmMw)lO==B?)rba~kQ*)+ zWyP9EYMK^SezW3&u}w?$F*1!I8@!=Z^D?Pww;&uBP=dmRuI7+*$nBgc87{D2(ywta zqxPpVF)iuxSfGlbYt>^C15;+`ru@SdNxU&x`*ba%&4<7n#^2KvoX0jbHC<6zSysvm z@)hNQnnK*2#j!mx<RJIKanNQ2tYh%5GHhtTb@9*<qeoUFLT@<UC=cMCJrC6cY`FO; z!(Cm@7!cn)T&h+)tz8IQDK7LRrx5qdK~Ys$waihLCd80|zLu@d^9aUoSHf5y5HC%I zGh>dNYLjzVa@b6c>Z!Z_IPvAkg?~B4B}c*JyqFv+lOua_qD_tn$_YC;04FCB#bSc8 zoq%JF&b1ZcKp|}~;F5G%F^b7CFbcM+DpE<iAoG?5uDJ2atFH#CTqoU`QCcmR%XthE zcd~J1x;P+gjR#}%d4RXQGp{a&^HdZJWfT=eDse=KM?)7>3>zNcsjEo=oXQH!i!4}x z%jxAvB<Oe+3uHx(Qwv_1_%`5s4!%Fdm$z?ZjRk+RHH_oQf-`=SK;X=sd(YK<rbFVC z!%{4k;_`~fLfCeoZIysvLvo$noE=5M2zDy2kgJoUUQ;2?gU8{O7<_Nfa-7HU9g5o$ zYw>NxR}KgMH>!7LMMYq7Vfiwtnrd7khbaW+U-E=TKqC|-rN|{rOeli^)wVsTszDtM z8;&5(<@j>RG}o!eZzH|~9G+OYS8(6M@0SJo8GhFZv<<&;fp`>Stw2;HF@es6R#gxO zdkVVGLcEuKCFlk?w0+Nd&UO9{=pKRoVd*}ybbN9`(VYrN(VY)Sak<#yiU8d$T<!%F zl{mf)h`Acz>;$AjJOQXq=s4$5xU_V`c@Q9l<2sCrZJfnTvbcGG)(Dq+K&u7X1*le_ zPzG)|2(%E;N`V?Jv;okSzzuL70JK7U|JUNU5~Ogi09r1-A6VZstU`TBaC`w-apAdf zh06zYm-x=JzKg8y8bCbbo$K%{_fmm=Zs{Jjbguxa5#M&}`=0eZ4I5Z0-g5w{c&Aw0 zHGov=ms?!D#eLo4z6(f&eFV@FiR}sNyVv@5SX>t%#rgDOObX5gq;R~KqEdA$AjP=~ zP((QM8Aav0&iXz8C@j8@Sl`F2?~8!gyW~2p*0<C8W<p6-iSKEEbZG!m@qP}_o#H#) z`p&ezWq>Nhcct~EjUN@3x9BUxmv=%GXHF%Q?_NN>p^)nww7zdz-+sqB&SLS+1*F0b z2BgA{1ym-!pSQl(THghL?hxOl*0<LBt_QS8e1B?ve`S520#qu#`>pRG>w6ebiTIu{ z(4^{QKq^%u04)^Xp!J<*edhvNAih=B_b%)ERY1k!`!hgFVqXGOB)HcBsWNyQ&^?0d z0W@ErVbI`;?j{TU0FVmtyoC+|nkOMT0Tl`~4q9K)O$DTUZvdoxzh!;@$NK)p`X08v z$DzMaVNV65!WIHjoGY#GO6&W3>-)6z-EVz+EHoH*^AwjMfK>Z<1khYb{VqUCs~oa) zZvs;F@qxvqp|e$CD*+Wq*zW>Tw|`#*q~dtR(p`-CyTVNZq{7~cLwL7I*t-GE5$JJ1 zUliy~K(`7+s{ywNbOj*AB_EI~p>m5`VR7HK&~GgC2SBPM(M0s!`6!^d!ue}}RL*|^ zNX798AeHl{0V&<tVtre!uXB>oohJiQy7NLnipv;4ip$LwR{%(rK{X&Howe4t0gwvu zYm57x#l32AZvawUx&f(t48+|+74M0F6qgGCDJ?qL`cAdJa{xu849czV66<>}ps@IE zw7w5o-|c{uCVbBNzHEK}0jNsCW}ISDl?6zpY6ze^#do~*z0CUF1W0MZ66;%OeH#E( zNZ4;#-yc}t-vTNZ-#ym%1?$@ZXtDTyVtoe;GO0QfP?`9S1f)uGqV>%ObcguPv%ZV0 z?;1dh#P>eyyTSTy2Bb9MZtMHB^?e<X(uCdC*E!XsY7ii$3C{<lQgw;-y$X=hgg05= z+pX^sKuQy?15_jFyYe)1i~eRns|EKZi~F+0{mMcw1G-7*-nG!Nr<-xk*%r#P(DfE7 zwGgdLtPw7>Euo<Qwa}9mdJj;&(2X5z=&CLBs)hQUVSI14&|MaK#zOzF(7-cIh{1qn zsW>cdx`he>%@N=40GcV#OBQ$0S*8}o0$L%y(*fNmP!XUT1X>R0dVzioC|{sI0J=_~ z1Awj-=tJxK*#Pd^3T`N%=>lC2=nDef0_YlnssUXsP$Qse0{sNgRRTQ)=w^Z51N3=; zD$m9}Y=Kq*Qn&~EInJfP4R9W^&?XCQw$K&}ZMD#L3#Gg}&$-oz`QYt-GBlXx;O=3X zi}ymPS}gXO`=s<4kMG~{W$1K#RodUgUl&8ke8-1jd+73EmcaFa4|6wMpZG9ehbtW^ zb2<MQ7#^i?F^>Sl1061AH!wUc>SA65h9^#4%<I4m_F?`73{P6RGy~w`0WTMGGF&`G z;$rAO(uWxj7f<QBG@plyXO3OWO>pt#wu@N+*Hj;730yo6?$X>1*GnjJsV}6~aqb7^ zQH+yZ%+G+y#OTMx>>v-whRf$gV0etr#k>OyPlC7@?i7yl@i`v;$A8w#c`z_<`7jp& zv&+YaT)7+Oa_062chp?W9JshE=VHp>;_jh~Sq>NX`drL9xVZ1>Vm83VT}l`85L_KT z%vQL#zv|NLfs1>zE@nSmoNu}q@}RK0n8UzuFWALo!NvV#7c&?x?n%3ti{RqEwu_kz z7x%_p%yhUopLH>F;NtNB7gGioPb;{X<#3f@1mxEHT3~*R9>&G|5SU%)EnLjQz#N1Y zbuoVe<^zjKzCZrwvz5Gy_{q=z-TiUi@;b(iNJD=GR(;Hk>9>+FA0%N;U{T4(gc_2B z8J&drd=loyB+R@dOl1-#nuNJO3B&aTe+vCK<>~iFA5H4J^9Ou14Aqu|`6vl9us<pJ zG39e!66Vq*%&k65>YM3Rej2PVCf|#{$4A3d+@FN`Q4;32Ntiz-VGbo>x|1-+4q%M@ zn7nh{M12hA!X(V(B+QH?%<V~-iX=>J66PyOm>(ozew~Ebm4x|o66W<J%=<~0Oxxs4 z-cL=!T#$shED19!3A4b55ouY>IR!r^t{NW=eeO-dd@~92<0Q<(Nf@4{S05AC{v^!n zNtmuAOivQ#IIQaUIS)?43{S$0Ny1!}grPl0mvcekyb2gw@M6j;$`>v&g=q3s>JL?b z+sH{Y*t7KT`6^s;$$378iP!|-V39U9BJ=g_=wy6>z9g=0-j5wSQQw?b#sS8TouIFU zbMFKu3t)Lc#h`BT!>vsia7RV_waEc(;sBN$6g}_Ii$5-_bFYG1F5=e41=P)Y@YCs0 zH}&DxH|^EUez<k|lqCQd0?_HxCKtwz*XdKn3E;2Orwu!dHHIIQi3IrT^eJNpaO?DO z%Z2G1uhXXuON<?_)29tlz><Z^k2Y*EcDzoX6g@X#l(#rNTQj;4Xmvx?k}^9lMN?T= zU0txau=)<fKi-tDAd9LiT@PK*Iw9jtK}$^b8oqH=dy?UaO50l)Im%b-FrVP7b+~=C z4!5t?;r7)!+`d|e+gIyw`)VC-U#-LKt97{jwVs#ful2k<f34@``D;BdPp41UdS0Ht z*7J;^4qfYcdH!0@%k$TIUY@_!^YXm4Zq1_<!EAd~#j@mPD7B(}wIsmOfM8+kAsneL zSfC9f2oCK<Q7t4@Ma{fr;bL8(ULyyzRzO?u1>uT<s)h4h#xPY~3^^0y-Y&Mfrm)iQ zN~D;#u*ySFQo2BE5hg>nOjS#UOUJOdqFl>6(^9;&61%vH1B1xB3ob*L#J(dT4Y1H% znV1L^A&@lKp@$qH!;`HG_Iad?6<ZpAD3FarPs(7Jq72rz3t-f|h{m`TDa>3**(O-I zFle#gj*ZyGvN^5`+jt^ORbgf6QkY1Wc!ZHMis2f-fZYg*L6Oj<EO7XOxF$KM6S4O> zue2O$o0dL^5XLqsvZw3u@R$W5vE&aMzufMY&>G=dPtge1!izybxBG&)23a(PYnnzQ zTw6AV0{Y*_!xa!s;aW*CLAdqqO{r^#MN_zjTQtHoE~62y<sOZYEqX6gkG&cSKyiU= z-Fqn_>h%y`QVOdJQlVwX-y7DoTqJcR)|CoM(Cr%gC?3lru*6g_ADz5}7jnO-DlyUx z-{=n2dz)TbSvS!Qfwob4H;qD(NV2oii}4e-PL=2aXbP1;X~9)h6;)Oj5rgv=KDQpY zSezbU*i>IKYTU$t=VL9Uz#PgbsCCcp__1T@nm9_4yOvV8UWQEze3C7t90qnXzWJQl z<AX&Mj6p}v_0DF+BgGFan`|F3ubK<(NBq>1u1f04(rpB^Da|?s06%RhMNX~F#F-^p z<%kDo;^>q$n9{QsCuG%yQ-<=K9`)XR2*dUPLe9o<tDHq?I2P1OVuZxy3f!rf6v|N- z)UcqNf<>mB@V!HyWt%cvj<+5s&Yakkne79?yg4}YG6a@r@{!b$g5z2$&l8ml^D`!j z>-V1IlD;-ymjRCxU5QgAJp6F&tm)Hv#su#i;Q0+6E^=<5D@17mkE_GySM#w6X&MXw z!3xZ)zzY<%Q9zzRQKX)z5RFa@jtGTIiUVNbR2R~szl>}nRmCF$0Wkq2FMYUndKgBh zhhZ+pHw)hZ&N%$$;F~KuVc1Lq#2Jk8U21)Q4u})00nU@w_gO&LutSLb7I(<vQm@&T zRwOLh%8CyHIkIAtAV<XWgC#kKRU|Y-I2Yi%8efG;Ue);!ery5m$J-8M@he4K-ZsDm z7p~MMe!TL}MThjX?<A6ldy>U+7E=IyRaj(DW?nPRARJ<Dge#RsglVV3NSPiL9YIlA zl}3f9wC%u4MoolfaX&}ZI-@6yR@AQ6;i?}N;_yk<I&)A$)H)AntwXu_Z)lzS5KoSd z6QFz&v<{oH(mMJ7cUp(L2_8+L6_?y75RHH|<WjMSL){@0wdd1tr-<sAEw)y0q|_Q& zG2BFlt?EUG<!c?5&jwPrBG(C@Ae6bWHB?FM$6M|6QxHf@)W=H6&1Av#qU7en%a=8u zRukRgs<oTtJtn2su24_;;3V6p(r6Af+7YywPbC^<MomT?q%;}zgwkXu3Peq&e5uKl z?`}ZsLvx*v@QY;vgyp`8f+hk|A%cLEX8eN1-Dq(swOh@<r`_1L{MzjzU{>Rs<`_*e z0WQ{`i@64_XDlXJ1F~hZHM*bwI}OOznEaVzQAz_U6L<=#Fd{^n%H)(g*y=+}7@+7x zw=Yv}qZAYI9y@!6#Dn6%O@%Pi$`nfTlF=iz4pf@(s5*1p=y4dZ;p6Je$402rBdK)e z-gA}CJbb>&=Xdevzo9c})2@C9_F0fNe%RXwoghbQH{XQA{V)PX>sMESOk2O=UXExC z+}1>2$0Opy>FYCwU<lAypjUVaJ1&>9;RsN*Fe;B8fq%336OU8bYlDM-N3h{>ah%?; zbM?U<xMMGh`!wtRi?~nytq{ZVM~k=zX*V44X}DC3n^`yBbaPLn<%a7$_mKkh2xhAL z2Ryd^Qg9eg@fQv0J}`KQFLk6FN^OAjp9adc!HeWNHnQSjh`Z;CP~{rh6ldJ`Fxj~B zj^pf402JIV0KDaXgTD96)XOz@l^))EI2(j(gQu!X-?SJu6-o16ir10VwPc_M>bZrC z5HHnkFu-~PupNq5lL6Klpuqt32B-z_(lbb#E`^u=WPm>!;7JV}>5p4@`I6!7V9R83 zw_Ffg0pN078@IJ_uP&h+aeEq<<kGV1zoxv`26JFEus&*Cs_<J-P?2f`hrh<4Fe11z z4@|no1b{h-_R?sc5OW6F7EEJ3!h~H%JeUP<xtKB*%-v+8bUWhHvV;V-G&-*L6+Nz} zqXW;1H!vFnnzjRo?ZrifH2ySZq~V@a_C4p|-ivApylwzNq}_<d;;t{=ULcoeye(`F zM$)>4T~E+nN~ogUCcZ(cgd-D4$F(Uqa${^2Xcppv%^v+|DU!me5O0@LgeIq}49*7H zmqEo3mu9l-?}eWvG>p>8Wa)%#;7R6^7)3IkKOL9A<lR>T)A-~2d->)o?uTV9hzCy| z%0%($-=`H5w>8o?wqy0*B-OWN)jcla5u6Tzy8$*I+~frq7uzPPFS#w;+FM%)f_jJq z^%u_a#KKYR&3zjf&Ou3)x#^5gD-nt!pTf{}pw(Wuh$NdfNzrA+w>+ePwY3ieunGxR zw6fOLZgx=&)bOAVwEh7N)NTYo6}3NQIShqPX070MQ&xO^D+6un;4hp_Ed&}4Dd*bS z{Q#8gcVymlBP?SimFm!1kbs-Y_EK-Q!{ivOOr32Etr3dCSGRp~LX&mHTwB2tMo^jo z2?QZx0v+0~L6Tnp2ty7#S~A24qECs6wFM~7eW2lc(ogH4ZCu1)=xGxXv@w_3z-i3* zGye?VizXLG>ay>B3C<%@&Bj3d2uvz*+42b9OQqrWnuK76T*f;B1Ga3{86{RsZ%msV z*sSYmqb0{9CXLyT>W-lILOOExDvw+^L0IL;x^a<nQ{U4LV>Uf)Up-o-z+6^Oq~eI# zJ4(F;VfDkSL8P%Bxk$C71xG^6vcLR&lrj@gyB&$8QhZ7$y4G}7UlBwvomIF>x*c>> zVdxG|m&D%uCLe~K)KtM7wUdGl@A%LAp{q~_y>vT2x1%{3NvN)(4jFZ|1}>~;Iob6^ zLP@PW6k~9dka~VPh+&{OBPXHsk`;sQJ$$XVwNI@#C6y}$DZSm+o6_5Dy(ztYtv4mb zky~%7ASqgJDl$=C4c^w9lFGK;l)i53P3e8a)|)Csvy;?%Q<34SxVQDDBsogG_1bz< zF;hjV#v5_A-qsYYm%XqwXWe?+SD`5-bXt0x8J??}Cz`Imp>nMCUu~$jcm|AhPeB)R zzzCJ=X^ftB%<Kho8=J~-Rs*C9Vrqbrqn?Xz$VX2Mf~*Ey(#>qhPZw9Fc4dewL%aIZ z1=EQ_I6%gxbse<y-57EWh+`=V>rhNeEs|NcE7LAT;YKu$p!2@DwjfTT{-^+t<?|wa zwHG6?p2(mC%jccAC=I0u%jcZ7IBiks>N}e~me1iR0+yD~w~!`23s<XoL*8CfM{?~| zc~qP+cHWuF*g23Xjh)Z=G{(+5Kc%sAWb*$l+vXclVu`lRc{RN;)VpnS4#18YM%{2P z$-&^n7CvekPKYGxj3Zx;0b#2e6+AwE8>`ybHfIXl`ZKo8;mtuc$YC!}b3$OYMC~PY z?+Ga}F$_O&7#Z{01sB1hwXsemt2VVl50m!zmqttApUD!r1saCX<M?l_nu*!1@MtR{ zH09Nfg#)qSrN*$UkO0iRaMztiyu^M)PSpY5!tQPU_6%b(x@ELukld+qkb*NNW{PvC z;*15Ay+BP0b=LevF1~l+Uj6cI-l($cd5#)wS{VsNfnExSvP}o;m?P=K?mI&YTV}!2 zP;nk*<4>vtJ|7gEjNgI3!oZkfy;UI;dprN>hFL9`V&&s&@fqDP#aas}*%a#;!1^O= zJHwlHvDoS}OA70%oChTYY8AzyGmJoDFm-z}-F81+3Y(|#<UsL+Krmw(UYL-8g?<{C zwn(r-IzA!5_=EtcCDeph<G1lWH<o=0gOF^a@bVahyhK$)Lz6WKd6B_bgOCQOB~3%< z{k5U@VLw!<|9`_s<l(*<iNww<j6@!GjYKx_iUX0#BqQhO*vj=ZOvtJdH?d-4jVj*G zFvi^C^>8SkM^P5Wx+L3?*T!Q87H}voY(f%a2BJ<;)M{c*?oc>MHb#)rv8W3fDa)ef z+S<u*_tCOsf5w?G0+F<Al(cAbi*(p5*{QjaXs@|N-PAK=C+IBn;M^-(aoAY~wRxC% zjn86{$C_q>rC%@beMd&!Bufdb0nW(tc4pU2RX*B$YCl^U;H~u@qu}Bh0yQBJ$_Xo? z+L4euwU566EIm3!h#MqiWQHVyeS}~)0iYCkW|vZ1P4oaotf^j;Ht8_R#w}8YIIw)y zjWxr|^cc#JC}XdAJHwQexF0JvV~q`~PaiKBHrLK()QsKNXia$^)zDagslr;Q>KAE) zN6d?%rwa;<DuuZ)jQfE}>FY5*)+Hvw7D<S!U|_5V-I21P>B>IX3;|<Q8!WrRF$@k> zZJi#XW+779!gwvow3szXhO}KMIqz&ehlK$1W+`o$`3;TDMy69)NKyjeTMlCJh<-?r zEx~gQEET@17kqawcs7?*d>qtmDtxXjG>;`Cq|@mIpV13Gvlo0;FL>^5C#MG`E|#J; z+1AR!p`|DY6#!U@>Jk8!qPnHrlpxXGX)l(dI*p~ME@LUG+gOS^oM<U(ldD>_)XM>z z?D{_-wGy4HG>^wxLXhJ+46=|FE-XaZt!6(G;@KVOmSbwZNWGPD|7@UpT9Dh42a^=Y z?%LtNWwu`i_6p8vA8p})*!NQSU^}&wf@|AhjyXqnb7UZi>qJ7h+;fUb?OI{2HxIBl z9_E-SUQ3BWe=$-V`{4*C)PuI1O*$K3x043g$1wnoON4;32#%%VpdiC>5wrV5Qg#)G zhMjc>Uj=nT6Vu*))TA&18`Exw>$1M21Z`3%{wb5vafGD&{!=7{5lB)9>~=5})k&$} zzD$({TUyE_u&Mcb54SWhrSEfTFak*ef!z+q<~9itbe>v7GF6xLIe(-^nXA1}UMGX( z_FE}Ww=DIOwtYkSIwItV3ZyyC(kwZIF#y5R=#c|FQe$NCV@aEys5c#ki-EH5-6?pj zS5P{zr49A!Q;%BgsCaa*-;Q-S^mD{uYJ&Ck-A+%BITpA4H7Nt?Bk)7{<)m#-&5<NW z@TTT65sD->5rYWRw#)7iQlK~xk<o8KGj`n;#GM5(>=WrDddr{C4BDQS(m1@MB|SZq zd%$_=?U&nLZTZ)(P`ID8>Uf`dx2+aVh}@<o4T~C<^MU?zQ9Z9bd7ys@|L%Bc#oG(w zp|>|@Ex=~vON%@HdRyyDi{Hi$*Mb<Eizg4M*t~1m_(R$pX0JO>4@PRK(NW?N6!xNl z9(mUFrxkuGFY0`MNfYBMX@*t^Dd|kdmNXP<#>%HmIlqh2sar8fh7+nx2Bj+PzVdJ5 zAq7*q<kb4old9(Whx@x#VcEH52;u|%D_I3@86K@FY$j8&aceZGDp&;B_x49csAfz% zhFDfdzbMB0S<iT@P9LONvjtgF>t6|UR2Uw*UA@s!<9q0yuylAKkSy<n4#-|9Zz-)u zwRuFL{Zx1zvr6XSd;DJT$c&uE&cQ*UdBUJ0Jyt5gWJj$T+U#tHr?*oMk0&d2IQAkx zE4N5;{8`v)c`*If1ms32r^J#9V@n#_COMD_6hhdXPMfP&6!o~ETojx<r8b|S-Rf>@ z(Ocax3K>A}lr#YYJ_!6dYAI9M+gIBTI3D5Ci`0}n8j*sB+4W84ZtT6%q%aqQJO$m3 zm(6m_5s(w<FYBG2;olMMI-)vLrbXFzO_dT^lu1s#+JC7Pc9;}kyUIJJz5gvKK(|Cs zcwG=rK0bqX_i*bC$ANLW7#8$s>5g{pYH%cv#s$SP9}kk^*l=;-V$`{FGtTePY~fwS zRTUTGA?k%VgRGDJ2h>B!*t0GyD=i9C7M2y`fFDjM-x(>zL#HtRR%MW2PaAO6FaW4+ z!|||HxR?i)abiy!1N7QV{Qt16MTf^|)nPH-uMxA5<;A!aAf^P7ac!T_CF5-sd<t;* z@NRs6hwp3n4#L61$@nhD*JF**nWb)9h<!kHXGY3$adEh$q9`!Zxw5eQd{kUfQD9aj z%MRCf0)-3sEB9S^fyYC01yV+vf~g5zUipRK-wTyV(fmkt7`84oE0rL}`Sxj!^Ami3 zjqmUA{Ug2&p05e5gOwCVs!FTFrSk)t!FA<j%K~1jhBbIXx1y#xF!|EJn9+9xsw0(^ zxDLvaT}BaQS@s&{vP%P_$Bj=J=1Py@L=^=sbIvQKe9KF=JeN8S4=bnQuS<U-gQQ9j z1Iec{sQ$KGuKoss69E+Bo9h(d_iTIzh)tcjf;)g;;&UBZZogfi5rA$JXfdEU0@2$1 z7X_LEO>(P1O90&>5G_5N4QPNvoBwkKcQTawY=M3UNLgih4v?aI8PHAQy9|0}mOwuN zG*h5`fNm7%1Z?8mAkb<+*9-IvpnQS)<DAlU0u2Xrtw7a)W(ZV*U8(5;4aqc?WPS&T zXH;{YbJ1<7)PEO{O6kXdRQmc4H0hfHNO3+7b~+S4T0r}Pa9M_Fq~iAqAjR*h;|;&B z0=io0vQ9A8YKj3-h;p6p0GbL2R%if)1h)my=LMoovMU985zrKY+5uf5(DB)r017n0 zLQ5^Q!9vdf(j^XvLXqpd1!%57A6mL}Ob8U+34j#c*?<(?CDwPG#gzf#`QTjV$AD-} zC)arb&}4yL1H`)qxz0QsYyO--?*meC^Z-(|e>^l%p7`DZNcr9ch*F#D{L(^yu}~KD zmGT{Fp+XDQTWEQ%<M4cPuJZz*@dCXANQKQh3D#o-cQv4~0?h?9MxbL)cAU`yT?R;{ z^b3Gg`fjwiHGoD5-G>&+JH>HE3T`i;O9c8SAXP#q4>Bcmm4#?YYlP6zl9r<TmW6(0 zp{Fc#&_W+t=)_Y^*b6K)#X`4QsLDcXE%XBm{RWUKwf6vBEUCH#+En4z08(YJ&O-MA znk#e{obEUm3G^jEimncj@_pF)4j62FPXMHRgMd`nnDzaN^?ls>eqwzGoMCEaI3N|< zC_swe_W>z>?^)=?GYxJZAQhs;LT8<2aOYd75Rl?Ri&hGnA24)xSm>t~`jv%>5P^!L z41eZ2ltfyfQn-68ZoS2Aw7AzSuHE7q&w))O;qoY;3j}%=&~Sm;0Sy!A*mE7{e1V2r z=t@B63GOyPLj{Te8Y0k_0pUN=SDWTIs3vHndJ8pJh_44I-zE#)XQA~L;<}lln`5E5 z7Amq(iG}{3=Dr0!?xNa%^JtqwWg}Ltf)cPOFR_#&Ev*s?KP^fyJc1}-`byehA2Hbl z>ZLSv6U=5?i~?G@JSz4oa#4D@6@ySrOC=R523oa+fVoh(SvG3aC{Zi<f4}F<%<uQx z-J~r7|GS@L_sp4@GiT16dC#0#;-Gp5#T=CXRs*kggl}!3(~wU=1ZVWYO}<YVkn@Xz zHx^h|_n_UESQ6z-e197)w~x6DnAbv>7%(41YwU+v3(TiOn7e_AqNVf0bO7_25a#E= z{3L|g4a|R_CGunaFECGsFhju1Mw{Y?p&hQzp)K$+#{x4Qb<@YtT2>Ub!N>3_&acaY z7;dV*7Q(av^TDHoVYnK4ehBk(V15z8yadeKj|s+l4VdFXn4?g_l@618SA;hb?m$lc z&zpBwgtrjT8D@P>28a5w_dw3c!CaDqp@xTJeJKZXeGY~%8HHngHwW{h9L(b(Onys6 zzYc|A8nox7ADb_Z;KCSM-tsZH$DhZZ&;&@$4?~Fdv-D#r^R`A9^Z5{F1Zzg2FpS@t zgSkBi^I#6<i5$%T<X|#6n0+~zv9@uE*nGV=2Xj&gbD&maW`$$rwIWj)4zp-!tZr#d zmQ-s(Vdxpp!5oNvtpCV~^`jij&vG!o%E7#pgZWDiW(-F1`ms`dXAb7r9L#AsnDQJ9 zt$v3o&&$DFlY?o^!O$vrn9kifn2sFG_8iRa9L!50%phEW8)afTLuc{<dkFrtKN!}T zGtn0dVz|`1e5tW2R2^HYK|_Ajo@!%+!WaZl(t2Ur#K0m9OcVt@td#@BVO_!4-7tJ{ zktN8OGn2vlZGr1<8a#lowiJSC1qp?0hzK!RcF-Wc8zvIW+}`j-ufWW{dI{D^j7gAe zFWOBQ#T$ZwFcz)wlMK?;>3sG4y4VN_o23RRV5V#{8Zss0d&C=S8mfJ>BJNTkhdiX= zbCKV2OdiWEAzLybyD?Z7SrW7<L6a}pHeN{3S!N-hjlQuNI&;j+ShF{#*Kj6bvJAik zbU;NyV@bi1he?)&u*<?lCPl-<i-yd$@!~w3+_EggxM*r_CM%V?#>Ku_7gszq{$y>v zXg>2BtMQA@mX%d$tx>k(sCf`B&4ny~G%l-eKz?eKr#H{oN1%c64W(#ieTy>c_KngQ zxjCyfMmVt25)`34-4dYh8<R2Noh=!4`=(^n?OT#jw{J*B-M*C=b^A7Q)TBTlY2SW~ z2GxaP31Do{WE+n$;pSXe5zLZrAV>XulRD~_H);au`lfEw-#0xIy3K1M*DZ>CWa?B{ zS@A#nyU{ys>WtG)m*D=5-gm9n^@MykdI!E?tRQ?#d$0t4-ijN&-1yz_%}8Xc8N45Z zbju@ijqMfP!k&TIfIBc&6vHLoeMPIVJF~Aac4?-LJ7%$y@I5BBEF<q_bE~ZB<v*K! zA+vX8Z#33t=GeWXJYjH$lKWwq$+CL|UILpcd7|MI2#<^kPea1fPyu-QGH}Av(3se& z%o0DMoN&YTo#V;uzhyq>P%r0%;rRpdq*i1kZ#iMizF_9<Idtr4fRr~$&eI$z2UmDY zx*gf$&OI)iVylh|7J<xW;z9{qWKEAZ2?MxnS2AW6ih|oo*cA4UK0fCS?YUxbj~v_C zvyS!$u=`{Vu1pgb_WNS;Iwfp7jOQUUVEMlI020N)zy3q31~d(S(^GT8^vzY&n7@68 zTWz|7$nCpw-M*_A?~AVQ-z(W-26teFEg?Zgp6%i;Ut;Bvk@!X2a0_q2*%L9~tgEFQ z`>$jz!?PBtb{^|a2@<=x^4nTCEWhf41)pnw4U#jxiP0MqSnuVwHSPmroHk-Yl~DYy zmUF@h5t$Ms6QU;*;;*`FLUWRWO#cNucD2lbKR5(*o*|ch2u@*LDH4x!4Q+bWvY@lb zn^c?P<}0jvAW2@qkhnQvBDFKNH0q;_S(I8^E+ShLPrzq_97M=Nw3V8km0H2pHX+hl zsCfX-kzwIOxtS@MjIKEq2_-f&m(bPWwLx)AjIP~>TR$w+X!D(t>C$A&#RwXZt(@60 zTr#qsOBC3(7Y?sw_&`qR424<Qle&cwlidZK1>MOlMHLfLw=k4JY%Qw7RpLS%7ipVa z*m_o0kxh)Q`8R}3b1DmUNVZ%Gm(N~$FkDtS97fmdpkUTAT7XMBbGRfjo2eE)Xh_Cd z&IFLUB@jk)63AM1PD1%sPa%gBCv8Hmb+(kasUjrpYpyV>b%#mNg8{Nt8uIxk$}k|2 zqgf67ikC+se`AdtDMYemv1F9rDvTmrYqqzX(UX{ZkbLU+Ey?Z4ty}(nRPw1)@YHDP zmT;8vf}cS0a?=Pmt_$RtU2^B~k0y6Zq*J<&?=IMq6R9v5sW4w8T>nkBTn_HKTIS+g z>+V88Oie0vHqpp~!Uz&$gg~a0{Nu-OO?Ho(5jF@kP>~hiX6hM7fSFo*WI;9q<%J_~ zP;PSQvmg|Ti;^u%z-mgqXG(5YPEwcVJtcWhwlLqr0xO1%=o(h)tn#J$Fl@H^lt$Nd z%Vk*8ykxcOpaRQgP$+)Vy=aoVTCN2dI!A1rFBSzHp^M;>byrKhp^=#`d`b*Kl23ZJ zYQ<n^Mfe`W5<szR(l@gME}jtTfRkR6G#1x@R98z3-*cG(uCMrsr)eTb>69nE=CoX= zxP_?)RKylsRdWETdh>+SWm^Hlamx#=-UK6$qBL32ozjG&kEk(TYszb#DVbfh5Hh(E zPhGk*D@iG~#AYeH*k=(EwkwJtrP7r6;69<s9r9<G)=C_LYQ`|cxNvKbF_LJ-noNws zVXqlsX0}ks(KTDylNkE%v1LTBIWvWF^s8U<Lqwau6Vik9YFE&PFPx!?HrM80lir&2 zOk&x5siLiED=(G;3AE?R(^{^CheM7TA>=Mm1+uF)VsHe=(M@{o;?lTD@8-;rA-DP} z5AYpcOEQ6E+l4XHuBjH8UXTF|BD?R9PPyef&{}&@G9`7+4ye3!q$;BjBL_`p`j+@H zlD2dm2&IDx6Xs@NMTZmG>nI%^+GtUZ7GKk#0g!dLE{EC|T~lW=+p47j{<P9EZ+?lO zrT0tBQX#5ULTCF)DVaD~<P7tgT05HsrW9%~h=7OJ4y^d1RlM$Slo>BytVyg~gOlhF zvDI^)ldQtB3ThpS-naxo{MI6~SZj!{pRtdJF-h+>-j2Ersc3EEVYk}?mC#fi@3zFs z+amE_1!H%ia5;Ws`qyvfcLW2T>((T+@p7C-zdGw5&{0xu3Q~pun<%K<_B+)?QRU)s zn+14&Pz+rXNF5WCc+j5oCZSH?9IHD8NH<$mNER26+mD1(hmPL{p)T)k?&@@T_m;`e zM*Z2upH#)&9SAJ%kar009Rc3W++l#^n6HqZw*eC-;1;vX8IEu0!w+wsbb0FurN<-b zRMq-G+uYfwmKKuU_K-(;f$y^;>{ICbba#0V3*m1|W*?sEZHMMmZBKa*^Evh8+9@cS zOlhj>;gq*M`RMUGleZI-YT<X%+l6pjdJn<7-CbU%(D{_m>7429Ae|j4uT$wvGjuvr z-VUWhOsa+7^4fP#k++KmMyhrtZ#j-$6+OwdClR=v&Kb88UO6GvLRYdyd~V@)vT83< z+0r}aP;YnA>+ABi2_yI8JLPRV)a%1s62MHan;dlmRF0-2E_1dm<#j7Z#H3pI&Fdvq zdy}`65mPacTsxV-?R3t#oiG`pE7>AGx9~ezg{vsNMc!Z$@7LlsN`H~J!Hgbpf%UpF zVA!E-z};C>f2jn(vhuFSP{ji;V02S-&1}#c_BxTVncl|entRZd40|X86wtlVH5Z9< zJt9eyltIN6RoW0xv%uY6Sq=d|yoQqUpzi}RzsHp-9D0pmLf%s`u&3|&^q&8DZVYc| z*rU!KPov^0!3n@g3#E26XkpPlJsuCtypcc7nV<6p_FU1whe9vevu-Zp%9P(>76RkX z+|hu@e4mGFOXVU557!chwTr|HKNXrfT^Du_Hav5{^#rU8u$GTV+y>h}8#ZLqljWlk zO!OZo67Lg<Ll{_5=}mc9QQ7;P*SF`2o;_aAb7Q(844&EF&0n0^e+FmvpOG{ByZ0>J z{p=M(dzL=)oYy--aE9225F!~|`q#T`a={iuSGF5=K}XldrXdwkhW^CL{=(Q~d>6&0 z;ky9W5ttj16xT`SA{>R4IU$HGw^&_Mfm9i`%wQ2RpIR8P%Uu!N5}6oTaab)*?N2`f z-><b@mRSY?6?vr}yA!Wtt(py)ZRw3-cJj&?m{<AP=dXpu;=Wg3fB~|;ak$Aq{T<E! zwaihd35(|<_kp?)OivDO@2gF&<`z605cq3wO`*%%_v-H26TR2gwnv&!-=*1~3J+gh z^>n?-c=lQF%k8StCTV+uH76-uugcOM(*A(<a&pu={x0!bLOtam2evWN38jKEIkpKP z4q0o(fFU!KBYLVDORrpfFM+c*)&6lQWb|j{0BUD!jq@g%kFQNN%{Crdmx5`ALnhnJ zm07Z&X-1pR!JNXTTgr5!&8HA08I-(4Tln@C!n8G=h?ML=@RmxnVTsNBE{%TWpXlyW zg2H_`E-spj^Gwkif1}m8lH)N|C0jl-mMfr`6Xn@L$#!O&3|auetVo!RNCZ}kqAe?# zK0-CE8#zIG2_*x7(l=a!7D~3?Y=ap9!M+Yu`n@)Z>^#Ae9u)kAV*Zf(H#lo|sq}NR zmYeRsn8WEdrR*HOSy|(Q=6Opkkl??Vr-imOnI|nBt6M3jZzF11nuntjn>ivcindHL zv|0^-JN3ZW3L)!*SltOMHc=O>vhF8RV7ZC0tk&-@mcQP_SSDvuztuS6Vv5(*lQ_2; z&|<tFY>VkbEHwBlB6?4=ou~J7sBb4<0gN-DC{qLtHq&dm_GhUI7@sUjt)@hh*MEXE zRx=aH>tzVJn&PibUVlD*oIHPk+Uqk^%eLoMMeS)a<+i73E@C|Y^Wb>KzjC*{%WFjh z4BMOelbOccY6iS!nZ3bK(vdmHS;H~xKk&R_L>2);BAMwmuj)vwY>foQLNEUoH0)Rd zjZWEIX(&I3DFZx|$34H-aaPk_uW7J6dP`?w046n}Ez>lRHl8}{GMf);z9fA**>inD zwE1vsTsR5+XNjbslNn6@7`BNs7gKueK(sY+95Aae+VU%8h#}e+0|5XfP3@DgI&*G` zLz9C+v|9;=xGF1z>0p9EuC_tyM@*+7D@blSjaeb`q{D@;^zXFU)m+-TCJXS1%@-p; zVQi`bMX^g1;OOTXWKxyrxhvN3G$pI)z?n&JeX?pp=F8$s&4OP25h0x0MH7{S*ZK@C zKkR9mo)wtxJb}xCX{}3E-4=8+?dQDp`E{APYYME@6_a%Otu3ZZjEGuWSODoObA?~| zZ1H3myDffhOfNj2{~KnU!}0aT{H>jP8c%<ey15qQYEv!z;aF8xTKD{5A)LRx{R{Zs z^8*utjx6RxFW#DT!%}z)6E^y8N@s+Gu~M?`jh3{nMWP08VY;Sn2CHOl5x*H3W{vOi zZf1Q=^WL-83D;fC^lpyc_<$Lun08**1ZNFLn{UtO0jowIOjX_NFH^38rn424T`ZO? zcCpgDjfAvPt<s{|;6+$O)tRz%>#g41vYg&laW}(;(wBxk`9$=--EA!_HM{Pf9nLgh z9b6BpJ-$17-<Gw-MTx#9%!Tg3)a4#KRwi7#rLRN^9c}lPp^{eb`+i2Sc_*Dg`w~=i zX=B>F?`s<`o2|JSF$?zxl@sd0>&VHyDeqpJ5rD5VA7_n}5#2&KsEkmrUPnfLh+_Dm z%?aVxo0Y;ej=5lZYW48ZqAR5MTBWD9=xlu}I*<sVay`4?fT9E?csAClZcceO&-B`( zYu4=3;eo8Mys!#t?nXVB%7%wQkPB7|idk<EDE(esjR2_Q93$%vC?}Rp=ZMx{SozzN z*gKUxcg4nFuh@~SdN}CrOmYp+3~OA6e<?~Zv6<h};S-P!p8z|2?(^FYzayJm=2G$X zJNypkcF}By-<dg4aDIocf%A6wod}w0;@CFSI`_mk4#ywHx^Gs8&{MI|tqqOR>ppw? zT;xi7UELS86H5-CM@e$qaJ=)4PSVbs@~lMgP*UEN2oAY@4;2uWE~3p3X*-**Cw<do zHpj}W{4FacT{Y)$jx(~iMm5gUY>p_}H$yk<+%|W7BBl9eB*{V)?HWO}Z$_Fd#Pk`u zPzJR&l@Rl7BlDC6fO19epk%w%z}L6ZmF~nq$ju1<TSrB9Mz~#CgTRb%N0--)MmLha zRXUt*Gw?x&BSB4vW6(w3_Rs(a9nStE<a9U(5GA|A>Bc4v_LQP)K97cuS&$CL_Alut z&2TI*EoRH%gz!VxjJTm8_N+t{lTcQ&0p(AomYX!pWU5}BrgFBnd<pI@Z<h#dvPsyC z?RJ?p1P&p0`9sJa3?WHWhLDWTA>_-dn08pGQ8_IA1wCx^BCn^-o#*ifhZ;IKh$Q{o z5sQW!Wf1v-ONo2*VAOjdFn)O<d;Egog2@*dD=!!+#UN*t-$>y`;cTx<N;t#A2$nH` z*?eK_7h=qvB^ga*EQ!~_*vl>{E3%g@XAs}ZIjmv4v@7N9n(6KK4<F?nF9nB3s^elq zCEENgXoS;cSzO~Nf|VH4fL9Q-t*HqPD@?2b;n@h;_Jq&%d3**W&gwiq*c9xKT!Vd@ z{*vpk=G9Lvr_n{C1_UL?aA}Q^s6j#TP+|m|ELbr}_W~sIW+AfAibiV#4~vcL$+b|? zoK!{s&Y@PGWq!SMOrwL%TM)u1_g|o-ZBeRXkdz8*#W;Ik?M&~L=<0VsgZz!w5~jkn zQ?oB}lZXO`0r^l(IXuyXu>HZpC9Pft)>&iYu`Tyl`FqA@#wk!JKa)UlLTy($OaNrg z4aYAF$Hz7-(}5km$BO~BR^lZ<ASTTkcePRskTNlwz#SNw<zl|@4;NF@OyT6JTcSPd z^JabatS_X@;_O-TEfZxz>S#LKIcNr<WaV+<)IEX;$@YCB4b3#VMkK9FPnuO4_jy$R z@_@f&it><58KKSf<J13ze+K;%Vo3=`6GileF>E0UG&YW7PN+ECbq^$8Vv>K4=o^ji z76*Jo0@R|^!g^mp<`^X`DytToj8~B<$M=ci$-_+Lev-nmFKiGs6qqiaasspOTZ>cH z%(B^VJT}rKJfCf{;xdKh3K;&*8v}QwT|UB^VT4#pmZmdyCDpO5eDU<HjS~n}E|$cB zg&$dHE3b2Yb>auC`XTK}t=>P{ynh%&%itPv2KxQ8#$Cl=ICLjYckJY;=zZIh75iv- z%6W<iKq1jNj=R4_Nm}@wK%>fYCdmG)yePFq3lOS={Z9x3?b~sFD<+;?wuIT%3o941 zi@tK|TJI5SJhTjZ!*m9=h8ZPLWw#=VP@Mp(sI`GwXB#rcXtj;-Iu0KsSvHI1sd< zj}-$&2Jq_BC4I#eaBM4+dmVx5Khvfw+mW%8up4symi92Ms*>xsDlIYb{P{{!Dy7m< zhb6f{5ZHIWu<xT9Mu_t@Fj2Zw0?y=?rk^+ECy-@EnnH=pg_xtwO-L($9DO=$G7JWQ zGn^|C^Sl=$>|;$QVPvG*uY^8EZuAWnwgh>K0I4BR+311Fr5ZrxQEag9j;;=hP?ncF zTG7A%9m1Lfx7+B^=IxpxzdYi6I5qpAOSE~thD)_yZc3*0S_7=R#sC{*2Iw$*8>yxx zz=(Z)6cd+ga83@?$8d`a+X)0`35at*C1Y6TN$+lercCAZWr-NnPI~u3iTHHZIyqRk zUY6(Y9*(yU$M5aibqupMg)v!HWg?jCjI#-xqjFD%Gmy)<aAxN+{%MDtRfHpcAm?Y- zW^NtxK`*0sIcomI*<?n_fy`+8F3ucHWwA7(+@LX}$o94ztX@Dz>!3+z9oy(Yf>zN{ zr!MRpzR1OHDnU4CfLIos3^+%x5@K#|WL6-kAS-+q<pimXE%`aX`8?K?)yQHX2W+`V zPNNZZArKhbe4_*oF@!oOFZzv4J1cm(lzX^-jFQ;bO9PzQPUdt9eoj5Up*vF{hUBBy zzsN)IBNa&hAt5TdlRPrZr()&Li32$-q^gb_{8zBM<$@=AX}Eagz**wJP>e0uD?pR^ z^2-tVgOa_=^JE5PD=pgaQ<@%nL=+WzWbF}QkoRq>6zC3}2f9Oe9A-RR2=f5JH`}~# z{wog<Y&@_B2sSb|6&v*dg1|dEiGK9&=)K3!8W;V_4x`a%aCR%!%ovhY+Y>9d7e<?# zAtyk^(Pj?(0Tsa7={$+Hd(M_V*sz5q{+^V#8vsmi_X0wH{c1O!qrkZ~Gb!e-Iwq}V zAio!*W(?5K74){^xvjn9_!Q1w7SnJ=Po@YDl?_+)x*1Z#w)CIi1-eKM2lkO%pG&S^ zk}G0zMFpMcZft^BSL|~Ma=?!SF_`OTf&*ijAiGN>*q13zcmsvQ75#pSkEWYUicj@P zf`cx>AwcCgAddzH7ZG=$%F9JW-mn6TJ8&G$asVk0Iu7<J2hf`#a<H$M9I(>^2ZOxH zxQ~>ED~5a~I#C{vm5(oxVmU-a2a~~iEwb{^05-WbdS4YwFIibE!y>+9yHEm@%qqfZ z04(=(d7GFRCS;GO+M~dkKwCMshv1<@)fK6VO@bV6v;ar%Ocu<wrE}J981^>h3ub0l z`wypcr%<@ead|14Q_Ol{%A_1*nJsMonC2!zFlLu0EBcwEQ(i~voR$qOovUzawWA9l zC6gIT*%aU~M+dMtaC_}<Y7;9TiA0-s+WKvUlB~KpvGV5P*iwG4Iuzf9vG=F%MKFLR z(Po~W22>htJ_NY*O&UMN=hk*${F?N(b$J|aL^#;p)`sh0-I%a%YvsY?w!%bjl^pvW z#^G&mI~KSao=H~<3B>G1=?J0SsfrC9)L`n>#(|@^(v4FhaF6e9^?qxW5Di<mQ^E}l z3<Oi^ZYw;-`z=%I_Eqlb^vfV2JmS<fRG|~?lpLUz+KIzGSM;_Owem?*giAgtVfH4U z5^Z_)kIC-Tc`X}~tZk^osKI-&EQ9yT8n&lzv~*EnH%0Hm5pZwNRKd(rR7<O6I0FZT z?=LrQtes&w;}NW(JmNYW@->j1=I)(CHXs*Um`zmmVXvQ2eb+G0IS<VA1{+d|Z3{2^ zg0a+Fs!ESp=Ss;u0zufQ^d+39ppt0y6JgkgK{69TsSVzPOa~7jp$%b_p_$&k24sBn zx|>C}8{uv3P4t&DVN}p<l6J|gvC$U2!Y-|LN&HLnFE5ssiAn;!vgLj5a0M|?DsSg- z#SY^Fmpj1a{@pm9-{$S4R_sb~d1_n3eQ9&5(I$w7250Jfy1ZT#X(atsd<|C+$uzh6 z;G<~EjSI>5F!?v!-ByKiR?=-%k1EI>s27|^SJz-ACcPW{88H?|Td>)vuJN-<;^zm% zNKF+*mtG-r{BQ*^%+epwMHm<I(Z_uBrK<YcygyJ(1ENmb8h)9<gP5*Rpaz3D?r&Q7 z%xBQXOJ~sPb^72Iw)W})!sr(AxZA2atyf#s76pw#`E3o~Hz&EvnKIM`jSJgzs>{Y; zJ~?5vrPqz>k2@M&9_13r96emIYq)|)HbbvIjY3EFw6q&NC4&ufP_UbA&~MW3am|?M z9eVs8^!E0l+tb)%R}g6lp=-~FODydft5I$9u%qG8G@DGrJxb|^*2PjfFTi~t3IJ=E zw&C~?J8hH(dwS)bb>871RcQkTq>OenJSAJWRuWldgbdiyFtkD?;^Pua2Me`$t>JrQ zz?4KKc|}Q}3n^tQ<UInQ)%&StjVJkNhE80_TD0XilF^CBHsKe28Scq<h;UKp06L|o z*aW$wrx>o-#_qxUDYUL)+i(Sfbh7n9x4{nC+ceYbXm}<N3aLC+eh65_&!Gs|v34R; zMk|y4A;uauDYO<yN}CWFA~30(c0<|)ChaFR3jOnizBE>)(Ux*?*-T>PS~A^1BLdo^ z38-4BnVkWx#DaPoT5e=kLCLq(Rb&Tx>g%p?JLZ0BV}%KXSS}Nhw162a7QSTxq+tx2 zFQ7JdDjG1h-!?2&)ngd%5ile*YJy)XxhzZ+7NiyzMq9>Omne%qb>_?Q7II$Ip^NAu z%U&tVUKw_)BtOoUt7@-N8xE_{I8tr)QhfVyJ8}LbKt(f9EI)_lX5b>~cZexePbipH zTa_Z1veg!x<g2o|{;=_(neds~4<|Gei6ETkKnWibmoK~*gTgZ<K440GK*lC2z!hwv zs|HPpDk!QrI9!47ZU9j62D@!GqpNB9AwLr#0hELJwG)39P-j`uvPEICIApRoB=Zz4 z4rFm38b5R{RE&L8j5pkkH;#-5_X!xR6q?1+Gh^D<=?KO475$79?6~L+584JbFpr70 z@M^V$DPg0V);dmAD2ZQ+-Uqd1j!ad1C>O0T+97^8R6j;`$OLt_bdEg@Poy`BdI>dB zhR*lMC0SK_C5?0QeUz{&JREaEu8?CSFVovODjb`bKDwvj&a`>uiGzURXv-0P4Je6U z36?|&z#bG=U{!SG?qj1WbI3E~KsE3=cqsin5w&KXl7L#NLp4s*T5(XihQJ~Y)yz=T zQM~eKwByrh90vAl`EGDYYb7>>*z9t*Oc5nS81(p7?};`KCo|2fk!JdRC^j=>mAL#+ zw~xWOcu%rwhdjj9R(`12!|;0iO$?6H(4pG#K1>eXEmFgq#A<n@OKe_fRmPr4P_vs~ zJ5)3qt8l!mCdY!3Y7GKJn|Ni-;CNgS330j3M_waH(&SnHhB2fCm-H_MT4!{znk!`H zZOv3uJrs!uZd77GqgT5L@a6}Pc$3w%sb#5l2G?61{w$6o>6T%=@Bv0g40FQ)g!zhw zY4cjn@NS5g$nRHhaDVL*up;{ltz2*KAXo6@@`#wUFo+wX_sNa&f~^Me6(A@W9+B;f z@=Pe|R};roO|XY0Jc|M<YFKitrbK3np_u6EF^HX>EaMyqrBy_;CLkJ4l3+c8LipOS z7^xumbsxM5V4L@~GrX@eKlr^V_9>Ge!{pbpv+?!pY}^#e2IstMn1?ld2Ch{ypzeGb zsAdKh=x`&|#2pQm_s6Y9aA$*v4+{cWyjiliE|A54u+Y7mO^M@@9*-N|Z0GUgyD>Yz zE#cjax;1K;I}RYsdJS_M_S^4>zZ2F50IbIyeE>=CuJosclakar-I%#e>O=H_Zq~Zi z%i)>q-Z_NU8Hc7h3%|`B&d{g3_-dE8fq{hp)(`F&l>!6gBk^5FBIT_gl>+?p5x6_$ zZIF1b<dM{Om6Fxqly|p9_!<oU?~%k=Y>0EusHrnRzU1#R`Un5J=ud@OM}=BPjPJ^) zPJhPj^Ylb12Pn(EqAVK&%0eUKIMf|hmU~0WvMJ%+3uPHK%mW7yrbEMQf{r{8ACGww zfR5NW*H~=I5%B|7qHIBV4Zp)8LL&YN#PAa<n2i+7Mq(%!b>$PxIFOVUS7zzAhT7k> z(OcOpWNmx5McDRttd;1)BGJx(M0bfqZNut49Bz4kCWZn=@_lSn-!AyJc|SYDdyGvJ ze!BwFLyZbFwLf#3Y8tJ_vfHSxP#a~M+D;0u6NU`f?y3W6<`dt0*-S08?d*1u!j6Cx zw4IgJucvhVl<n-(KDZNLoA=Zi-qXwses{Xe7?z*P&coB$dDt1s1Iv2{Gk{)wJ2RjT zq?0cL)y%+mvfJ4&WVf>www>K2S==4S;t}GtD_nJUg{n?Z!rO(aGisRU4<JmhhUr0# zd7kYofnK(=J!oNG$ZltQMr~yn$zDYXw6l9%BZ<26{HPQdARmdB9SMxqN2LJ&d<6P1 z8<u#k<dM|NO380$`z#{V2w>eF{e)>}Ul}!Z5Pc<I@-O)9tQ@VRLhYtP?M93jd>0E8 z>ZM+~J{xl9Q@5RLho{+AqhFM1AfQa+#LF(en@-y;zDuV)nDF|cOrwVR>j8wp0y*gn zLWlm!c9_7Bt9)?h6v1Du#BDn~WD%hv_&db(cM6uG8ld0?i1A%y9)eRZ><DDL^9k;M zVNFHaY0M8^10eGQ4x9ahWhM0I{D9-<)|StrX1B?=nI#|&HtFEWS;A2Y1!oCrDo~6m zX3Est%oSu%>81-30{+JCB8-yB?BM!soHSf!HZUgQox@19`DyJ1utbW(nuRoK+h0gS zw=m{WnmHf8#j)e?T@ss`DaRrzni6ab4s!UO`8eEYSm~~!`((IF)r}WJumH(LSEvj8 z@g2z=Mz{Lw&yfDeo@VBpRMn7w))`I4K3KQOLCwYq-RxkqvBro=<6r@oxv`fraP20U z{9~510V%M)VU|P<pxuyY^W38a>Cck5DL4tiILE=}XF2@kdD-TVx{!8@TWlF7HuItk zHo7k@K}dD1I!u8`Y;yX7GK<C*_`bJU$5`0E#X+L<RCr5jZg=n&&WIA5`3<8MhtpqB zFlsReqN7oZ32NI=ug#A`w$wl$fJpi-d}$GzHa@kM*64Ps_R|0krZ}awDNYMfaxms` zo(W#sK~l*rCrX5lRjargh@C;v7wq}TFRQ{t7u(S89q&RJ`*rcdeddNGVrJ~H&>fb^ zQ%b&#;k(u6fx+}~M^VzWqsrsOS((InjbJ7zh|x2N9f(jSFR<))kd({hnP<M9Os3a^ zM&9&sjG)z9Eeg_Bwc3mcR%5m>-p&@`C=NQtj_)q=j%<r`_KlUuiGyR*B$3!}Nif@{ zB*rCvK$U=*SefL9isHLyxze}e;hoV7;5#D;z%;{hSRzyazLvcK1(2m>2bi}{Q_Z#< zY1M2|u9`^;Ch|c3BI%R&t7bTm5z3{nW+dg*EQ+o5gRe{J8%C0HqBq*=H5)Z+HagHu z&9cf=EJ0eFG93^*hEU6Xm5J2C%2b?BnL4RVl}F?#Q<j+buT0ru_Lb>?@^w&6)&b^C zlqvRJRi@arf$G9a1^GlW7uzPnbQnfgXh7*5h9wL$O!JBbKW$*K0EftI6HJqfF^Q<8 z3Ov|yHr$c^(|bbFb!ktx)N<3t8F^{J{j^7<|C99BK|itbIJC-o;LUYCHYGLn9b}z` zh)OhhJFn1l7&lk}%*49ehYS~H=w+mkx`m5yvn_{(nTx`NQWeu=@ukQ+4vR0rR0Feu z8!&*oAunBeU{6rQnUL5pZ^@k4p6FCI5qC_=FH>B(B6p@=9Wk4&el}a<Fo-3>&dZL= z=7=0MtVx#&H?m)WE#FtrBxx^sWVrcq<?%ack7YDe_=Qxw<xZX<zhe3sStmMSs6FI6 zmcBR<$D9=UY7;7~VvNwF@Df`wPG`umt%aFOEGM~2ZDWf}t)fU*7^Eb=!jYp83723| zxC9GWf<3t2lBY(dWzW+TVkn0qo28@3#x(3B$mZ17A)8>CXXW8@%)=z)L2KS3nX~8C zJh=yRKq}d$IrHThP~Jpmk-yr5nfV$Uwm4VO6P;s1VQ*AbFT`Z5E!wh<nkW5XF%WB_ zEnjhnu|V7yhs_&Np;0PBVX*Kebg_hX%7uX)X#~`**r;1L+!%vxEld}=ZrrNb0W~A- zFn>D&r(zbDZGkVmJS2T_2O6jLKrK=7!K?)cTS@07Y|ADeVaOwkFk}J3L4_L|t~3vD zqW?Y2NAgvgDNcO33SkAR4gA-w>e!baMp3hyZCIO?P*|IJrTYzE&AuLOxyfl2)$HbI z%W8+9ntdZ4|No+9qlotrj)UeLPVw4y`~#@diItPluYO2c^fEy26NodQcTnVZnkN8n zyar}@&oaxQmJ>C1UG4QN*WrzdqtwTgmKjNqKx?U-x5L5Ib+{6vQsTOY+AS}|n=8TA zq{y4h<<DEqsPNY0mgs#I>tJ=XHdR@o)?-fe)?v8<>#%A*<~D4H_;;H8oe}Pg(Rj?i z8&dyX<dt!BqdWx#2PGvktew0PnI4a2gi%Gp_S}i2)w{E4<(<P=cGMiX#N=c)yz=IM zk<Gv98w|U5Cb4F_TQWYUM7-Ln?#yRCXFaxJ{QUd7GA92{(EH8tH0Jo-SU=GY;BTTB zCqXg(AkY**FYQl7e!u{dd%qnD)v<81e;2gkuHm@pux-80)A$&*3bZ^Mu+wB4N-ffq zY?xvgw*k#>DHtK~Nc;q&aw7z0yIz6_zYUh8bo)LVQ$`;4eHWv<?^^K#zDwt#uI$Q7 zl012g(KS77zz!m;6{IndCd}Hn<8<$qzS1K3M#Z|@?vrIPa}qZI?`Cc!senktkW$`k zBJF#^ZE<lzbUte&dKTM^i7>=Bs?wi!aD{w7%HjUu`1|>UQsMBA*n<uKh(*>1k@H4O zx*NX?bijpmCnDHtBjO3@nAIX}#d*rmN*z+Tf3)Jc-v-QAJRR6mlj7kwisu1PdtfAC zKX4$zevrcc-UJHUHqf1z2WkVoUYcq)(BBY<4fGm7qZW)9*Eh8f6|L3V+_ZA@aQw26 zs6tJ%tuqqIO3sakSx6jNXH{t9pMDB@fCM7(>89`VTXjp<A2wN9g25<VuNVkr*Jnu6 z|A=Yq9x)B!=0HQJRzKUSHs@;yJFyXGOAw%|A+{s<sUi5&P)DGd^RvER9*PZrd3o3h zt=MXrAe_sE5lxU8OfGU|ykADfj>gC~oU*li033-8lx`Ly!EVAd5?K?4TRCp~!}$H^ z;`4z<LUggKX=T@N{9{HJUEgRm#cCjj;#OCDy@S525N+#vo!U0jvE!zhCgWX3zt9oP zvHI1OPrtVF*2327Utrq}Fk7Uqqjef3<<n}{V1wyc9m<=|<Egb2z*$hA$8CCqvlGPg zWjY)1XU=)DWVIx3Qad!M#1_n+ci6N5<|MU$tte${wg-#(I(qnpv}7DTJSq@J4-Wzw zwf(xD0ZgXG=8pTZy=0Kuwm*qJ<H_M@3-8W4p=b4$qpa9;<Guhhny1z3_A8_vu=t|^ zN75hS1UlhvUwsXEr_j8h;1jm9jl6`5a|b+*Fs53{w<C<H76_+L#vVOI63LnKQlGGy zVh2bv9}ZTu@SInxUvSQ=7$nS?V?}7e#03ime!vdOR^+UL7-bCgG_?C^t9^i<%<iNM z17oNsZNPk;G{(!jrIY42I%yn5*d@fWn2|BmE~n*z;`=qy|8-uipod?2xoY7um{%?K zo5$h<&0`Nwr*fRg@7I?{r=l*it~86n+00eaKsNIz>3*|0_CT}Qi<1wMO@9At*(}b@ z<`~Upuvsh75pmWc#Zo-mlP;9QFJ>)FS}<0Kz|8oUPVp0+2hec6j9U7#84-`oJ0iXk z1R3c6TUC~WT~d{E+hIFc(pLBt+hQNU`b)nJYgH#OZqHuk`#p;26<gT>>**H1vn~&| z3eIv>zE)uX2Ps6A_zhL+!#Vc6RUCNKaK3J%y?nk@gY|UOR0nY&KvLzmr0T{sCV9Wo zNy13&_oJm8tU9BnJcL6Ck}|)8DWd_`jJuT4b0Ew6uLeh9%%|rQq$L&8Leb`RoQBD% z1s*YhB_NzhFA)TepfJ2SqV7(lw^XCvw8?kAbLlv7f|*e0T>357AVyNoo$$m7y@dmF zp3OgT!bdFOZ=P_(iIXe#nF|=xh{gmPorBJ^t{y8d08cV*+_agD&0Ia2@m@fJ*EN^c ztvD8+Sh=Gxb~3+LMe&W1%tkZ_=|A8kB%C;5@mJJVKsa9UWei2qzm_ACnpS)v+Y1lx zQ}MK8gzqrhyUlnkh6fwEdHjcC5mV6)1Z}Un?rzwaUaSW){WQ{hrC7RcHBD7aGTT=Z zxpZLD33PhTL-pjG8iqpVruA&1S_>0iH!8&cMN&=#(bc6W`t&>*TpFP-3JV>kVQj7s zM7kq{4&6HcL3+S+3a)I^&mXMZ*~giN$ci19*CF+{f>3cl;_srw|G-YqRH-;@tpwHl zh<q}nGC3j*&!yFxWiT3UHy?zqy#O6`#}84BU?6~M`+^A2XSd;=^f^AOh0zu@eiBGG z{Rb^MQv;9fgcBDM{X8Ukr%1P9wJ6bx*f^BuyNl$8(%vmYcx&@ezT^fFM{eX-PTQ1X zJ!b31&eo@n#+B$k9L`}l_C$!naQKyj6bRSZ2ZIVz#v>ehBD}AIUmoVcD?5i)A<=%u zz>y0Hi6a*i7;=Ci$Fiftc?^)lF9IFv4VZ9a$8R^48)}R*vLGs!9OW8_DaGP=W4ILY z-l)ytu{<~@<^?PUXFcSq)F2o?l#j)MA7j=5-A^xYLzYKacK}P;(3vy5up-&;?ex7O zcT;JxpBX3<-bJ!Wk&bIAeGPg(v)ne}d_yW2`QQ}kHE7LiSrw5et%-hu_n01KGLmJF zg42HBok#XsR!eIjIe~?m?{G#cRl}?SB&&K7D|>KYkEgu>q0{)gLbObCg#_Q{EYl3& z?4e%w!ysZG`Z!~m29E*`Ayy=FCJNXnYpSAe=a4>rimrF?u}DD%YJguP(<er1WSJFL z-e{x-Rsja(tfE+acrg7Us38ewq$WFM-$;#18z$ef(uVF+Em_8}D}iLiRE<lvIN|l- zN^~II&3r6v-yCD7CM(U}0#*(_fT(%RO%Hk(PEQQegwiVxr-!mIR%vjrT;A*P_9bVd z4zR#<L^D)^f_NAOq2qwRs$jGf$RU_AMPe9Be?x*;S<Lh%U5m4`5Ik?bX5Q^fsmPm1 z?WM^LT24R&s}%Bb5|x|x`9}4}@yXHr9eKIg$nhTxdPG-$LB~XX*2|EQwG&&wIMoxE z`9v@!P#E6uE;c3&jPBv-$bIgjHm*g&_KB7V>e^eDiH4hmH?b&$vYTXhT00S0_A>zS zF#|=Wex3s->nF5?^^@0W|BU*{QC|%9bL8+G#>J1Q{T$hvc?9l1NpLYSHO+Mxwydf; z6DvDWf$xUw0HFd`in4UF0{<Q$8jL^b!Ud1Jnm6B+YQL-5y{IRuMtcGIH5>1aivF@@ z_qv)512L{<?}cKqX5$y>@0Oaqn+1tmy{y^0c{N_9HZ#5ch6mG^WwTU7mi(vFe9qK7 zRW@gS&3C+2<?x1@FUt|VJfP$Cu;anaS?PfAi++!2T-yi3(k3{D(I)Ihn-JjmJL&Hu zGa(^H$uV9;v#gr-BFw38*J>L^fMVBb8^yx)Z$9U$V#TmKORQ)_l=Wg|J;16oCyrIv zx!O(2A#OK{!db1<7Ns98ik{lmTb0rol*H?5udn&jF!(VAPxkGlW|$gN{xE#9{NXgg zpW<jqSkOo_gL?-odw>iBwRdI^{Nmn{{!huWB#HUV?Ql_)(x-WUA=v8um9?Ur7I;vZ z!37;TjC=u!%xR09;r)e1X2H`LxcV^BapQo@;Q_Wr;BRDpZx!*CX!9fXKF|)Utq-|@ zfP9Q}Pq`mP-m>p0vm#;qLu0GknXjttv>0-St;2F}xE(Gnof|A(ZV>-i1ji<!u+@9j zoFr=Haem^)wt9cd5*x>2rV88At3yr`eOUiE!+VuRJXL~2yniGT{M&(*XSTeu-F|t0 zHT`*1Z!pGd&?xWo#3h-~BLBO|h`KN{m&~XOqZX6hf0|IO9`1{n?8+oMpe4vI&E-L5 ztg@!{#s+eX)xk5ozsD=VXrd2GI%jzQq%m7KusnK(_mB8T#UX-uEq**4qFVc$Y7M_p zss+-as&TMxC)()hV{E7Cx<!?<-)|m(isoFU52)x4QBil5UQHXayFz<}0u^oLB`4L^ zfBF@>B-)}A6^?Xeyz6Wt!5mq)={8WeL+c4BxGXo!FCcpFmZ73V?@^pL;6f0lD|F%c zX)_t23sVjmX_@i&F0NEK`$|0xDe(JPc?mWO*!g0J0^0*<t+48Y=4+HH3{wL+RXAX3 zAW((X2Db<W2BHpDDD^?13}gub!%+yq7aEKhb_;4CBp1wX0&*Er7v+LlgmIG0OS0wC zDgt?3a>>z~fLwgN$$VPmi-|}4EDl#=7$ZwlP!flcWSs{|{}rA@$uLxAVY?-#Fp|~N z@VwqsO7zDNv(?+sv~oj9^ea``Mw*9(#`HlQ{nxY$Gq8qjUVju|A-wG~LLHgX4ydes zc94%8@g-wk!wT56O=4V7l9cxvjg`j?dLCT%U5s!zva$Ba!e_lr{&RkL-W1At&Tr*i z=;!W|N2k~CS-SqWSKPQ~DN#4lu-~TZS8l?-ZREOdF&WtQZHmkl^8o*aElbG+bxmJI z<XiV6Fw9%cVTOr$a~U3)8(w1;-dO<8<&+Y-X!A6b$ya8A%jt7hbcFMvwBAg?r$1rV zR)Y_*;}PT7W#Fn!UVf0Nm|3Zn2Ok81wSwz#e*j^4Nh=hFPd~UYlO>EpfeuVzFj~Tf z0t!RX$aQb)z%jSTi8Kn>O+%(UfJ8}BF(Mf3fvLA8R(2P!q94{*(H3{h3lZHV>WHlH zV|AM;0^%pd<a7rE;TldwcLx&2J7BUAX<zBeDW*{>Q)jp`=?h`IFaUv01g*cD>J&qA zCKpYTi)b_JleOH5lW?eE8fZI+ppuDhp{@t3CTa_sU|8|ob?uXT`g-D>&t1{!E>3Po zh9c<)@%5~?{W<gA`*ULkkj(Rcd+v(9;W!^68jkl5$NOYxi}PL2UD1oxCfw8&LAmG9 zdMbMNWY^i1?WnUjILz1Fyg_*^!f*^>vi|NI`hcu$Vectb>I)h((w%(;owR(gJ&EP8 z?J^TXlH<4Iu^MagaPX@8khkksZYQPajc1^z&z#{4<$#jlrdJn+<3f{}!gbH9ACeVB zBj>bQ$U7iWqX$YAx2%WsScKcLDYB)n7$X5#=>?0C%qpKdPl}A$#sLj1-XB?rU!;$X z;ILeu8#5%Op+%APESmB3A3@D3foHF{O-cY}NuUQiu3x!BWyPBwPA{Ts-UpY}G}DkS zwq1tbkakM3kD#oybdn=6A|Z!Sl=HwO7NGNgOJXDSsM&3GXQ-_nRgk>NpCd>j-v~hl z==@(2q}$w^0xiUtS^5C62OVuTi?5+AzxXv8ZdM^JVDG|WP$YxdnH^bbx4w(hd}AY4 zhEYA4X;{$U#G<FXEyBhHc3V>wJ#t<OBeO#5g+`&Z0M>({?*$yj!<OrAm;g8CN6jSd zP$?2gQn^5P7~+DL-M}1s4>PkAF7~E>1`LMic7QKe-MqbENwRH5>3jWiCmhq4AcB8U zgkc5*6W)1e7<<NpVYoh7<n^P=D*$m+eOclMYA}ex*cV&NJUGS02-s?z4Fq=1tM(?g zVotx0e(J*hGH%h!><W_Ei){`*AGP`;Xg+@aX#3gomVGEzwy>^o!MuirWeXbWVs#7V zEh$?#FE+1i`LeRJFFd=frlDbZ1F|1EtG<2-d}DR+SQ>APl{LnJSy48x?2F5mU%jks z{=5ZWT-2~UzHDLHqIpY~&SRXqMaz~q)Gb?7wmcpyTV7k%FmKtSnzDvP^Q&Xas~0uQ zTT!-Pc};C?-GaKBWwFLcWE1WkKK9N?<W}5*B7E(;^_MXJD<_5B7H@y)e}2_@=an@q zzq)LGytcNcp{#a!gE)^}vhbv``gx6wWydZgZ}rO-RWDp#9b~3fxL>w>nXp!0cTLR_ z7w${(dCOvTUk3Lzv3SF>nuR1fe?_dO@ncgWcU%*R{QISm$W@<<2>je-`b#|jPxwOE zZSnSZLNz(c{cw<UH2!DfzZw6f(BL^}<}0BL1GrsmKev91pYNY3?kk7N72m7w-sR<M zfA^#HuRgZ%<BG2r|K8z0l#}L(_#YctgYPr&KQZzpq@g$-_*C3~0Gc7bJQp)vpq&ny zjS6$R;OYUX?^*}_9neR`_s~Nkk<$cfheZU9@rr{Aaq3-h?{(030cqT=fRysHfTjtR zx8ZV##`rWK<@qPLZ==vw2c;eKM+d!qq7C;RK$^==Xr9JB;=LC7UtAnl+}XGuuh3@! z%@hviI^1FhJ>;NYx^TN4uGc}+-f!v60i^UUaJbJo=m!qk;=(=da8Env*rP1H8Gw}D zY=`@lgYIz9{Vv=?4)>^oo}O%}JP$~7?j37!7XVV+*biFV;eZsk!r@vR?spFNH;0?| zAscroAdS1r;d&iz&T%%}#eg*2yQf;{7(k~=c}xR@KWOo}K%64beSkE^j{#{(?{c^v zKpJBl6ivfL0V!@4peaJ-7l1w@&^|yX3v?(H^1}k%a;c3waHXv&g;!bVTc})0`9(mg z#fPu8xDNu-()x(Qo$jEU0cng!9qu=PG)Aw(^*QL68*Pj;0cpA^2i*xs<KFFX8y)mA zc1JbF)OK6*t^=eT+z&{7f8wBSKuRzDH5+aSkcOM{bqie%NW;}Q+)@Yq77)aWay#NC zOXUPWO6AKAx)G34`KH6&>7a~*j=R~?TL?(GZv>?D9(B-f04cp*hwF0?vKE1wqjdzz zK<gZIn}gOnXoG|9cF?^J+UTH74(f2w!w%|n&^8BcchC+8bvtMd+GpjI3(*QyI_P2t zUFx9A9mLs!#^54`LY%ZJ#8nA}I7Cy36Ig{fI8}(_eTAAF)a;;E2c2A7x1<Jq^Yhwp zB(kUg{cuAJ1A~(nC|19VjiVq^7AZvRe4j}`(r%-KkpL&*o7d)i%*TOwCweL$a}hAy zUGy>J=RN2_d`t|O{|;fAfq5~6Vfnw~@L(*KV0j3$6PPPQm_A^>7Q*}!m?Pg2q%#RQ zm_IRynGQ@_2=iHBR-YUU!}59Ilptm;Fz-gU?dR(@VE%?C(8t^h%yAHsk9iQ7ABQl! zX7qA-FiZxR`q@FuFfiSp3}W5^8Gr9nLClAMNnaAg@L13<J{!b*7MKfG1Ti(hd}mb< zb1g7uCxVz1Fn>x0F}DG;9z0QxIN69qcsBlOw7-5%w*hl9i~}g<<XFu$EO&koF;Z0U zhi_orN!<49WR8rD1CbHN`uM*m&u?tBE~cC}OoLBII4r>1Rgq(CH22%XMC5~7AiwDx z%-?e`v;eOk8|$4pm=kg^r-d-pOKX-k)>wI1I%kH$FpbI_%;h<l+7O167u2JO<zp!~ zgu~P?zuE-A55ug2e>I2fV5)jS!-DF03pf+;asKqf$2G<p>guac`Div~-je#o^L(To z+WQ!tz_|2kuBo55Y@zR6KW|A*ELOuw45kl0Uc<@6ruvlXsnydMV!H1iyYT#rh{{Tz zvyB{Dfq98fAb_l{#q=b=Q$x+Xh1K!KnucmNrj3~OEUm6J@~K-^7ps;4&QIoXjY>J} zQ(d>LcDZ_RdPK5$W5F}NtR9m-7dF1EadBO3%()jVUS97ULa6cTdG*2E+XU*CT~*T% z%jbjcVo6Pdqmm=4@C;7F&5zeDStzA|dF_&#YExW}NVckgMxemqGUb>ZFQ^6x6;>Oe zP#q9};eu1)>e#&b==DUO$S`GEw+vF%DW=6!IxY|;8$!%q<cmS&<-)3-2Suf`_UguE z^_YIgYBl82c}tcoUr>GZyauBekPZ;)S=&%!IMiT@WmwGLBZqus>S<HT0-sZ+&X_Xw z^ckm3IlZjxlqpl-=e|EWZCY8`v{O%;uEFOXa$bQ}?#B+}2#=rQf?#V)ObPtZI7e>A zFF#}OUly4%H`wBeN1m_p$dt}ttD7f?pqdb_D)|zY+!HHHaESahwBBY76;o^OIdCy6 zRX!Kc2MNuY%kP|rC&O?1$(BWvY+1m%k$LYhPo#X$q8`kXjQW}|wimIVaw0f?ka=pw zQhPoQnb^??^!lDVl-I%!==I8@P_ix!jQ{rY0^_)G;ov0{dRg8q@O95|xZ~=m>p`rM z15+G<z-6OSHi6A?wM!{fwP$}GdQ)*7GOHlkqPEOSVGAI!@@||xyOU|Gyc=iF_-Fzk zo;~}%Q6ntXZIkuFjq<$-Z^tzue3!>@A$~gflfh2$#<mC^eH@GX?Bijv*xQ&`*->!a zn5R~DWR5U#VAhyxdz-l54?03XtQ~jqb*;_UuN2DBW-(Rg!lsY%Il&qzwxO|&gm1j_ z)jd{N*hLoXGfs1`Jlz%%^MfyP8UnNTFQzKGclM6=c450M5`UkGhecI#qc)1|J&IyH z_=I)E?e2Yq2IQj~H!yAmB|k<wB~CdFh$B7V25XS`#_7_2j(ps{)*u{mI|Hk%V#RLQ z@HEUf+`-cTY>*015)aFy<cTk9k=B6322cGsc8=o~SVkR$saWy^^QAamVMF7X4dda6 z1P@C1Z?rkIe{zD`g52vtDE~%`zBqj^AK`PJvIvZwBmWT8z4WcPH#tY2R>aGS^+HFC zi|#|6>GC)kR80%5o&S*73TO}&@+S;Kc1!KbvwfRzeX0s!9QvGF+M!4J;$=UuXd_zu zC^561Ty!xFUSneWE)TcmS&uNfxCU=hWhQOzX@NCAtzwa{d-~DQGWY;3IXSvl<O&tr z#6sZviJg>GdC{zbxR&O4Y(k8E%=>ATlp-sBF?}RVk@&nlQw;xM^ZH}DNl0!og@DtL zkD+cp#^PI#I+nQ@@0&)hI}*4yoZ<2wlXd%4#dc^d$_|w{a}xbvLC1T{-Y-MlOKy2} z4__5%-HJzwj_z)K#)QW1>+!6)?XTi|$o6aR!sC+if>y^&uQR%u`+#ZA(NsnFAlTzJ z$8tagIoSwh#Fn?&R!@J6{?wQ5zypYK0&$0*rDssVB}=_{=MvfK$y|VA@{+9`lC5V< zwt6&MXbt$H><-D+Gk&&uT(%@X2!`DlkVKxiFGGm=>bdsYa^43lcVnYFy81Ha>whFC zQn54-{n})h-I(-`Y)<-;JEd~G`sbwCSg|!EYi~xcNd6VibfSSlGoYCp%AA>4ITX1L z_oh9y7@evZ+Syw>9$Vf=5a;J-$mWNhN&s0wQ$|vfm7#0@8?B8T?L%?%a46fjLDpM! z1kSddiCiYO)msb9m8Mm|*{Y8Pij>ztq{YOWpPk4u7>7PTj9vk+#Boo)gSJJU&{s#f z1@<r#MOV^6uTkAqFw6f0H-r$n6Gl4pwMMQBm?UvxS9%FavYR^N?GXD>ENi6tfEcY8 z@W%#3f_k;&O>nnWJz%M~RsGn4?na1tudzpD#MXpQ7(HoSe7UL8<O`hyTLu+nFEo)V zjuVl5dJxYw%2{NJu9u?30Y1FL)@z<?47^GD%S_DBvoCszoY>u9e=qYHs0Hb5(gP0! ze`G+A9wccTdmCV=pu3H)ld5l9)sHObUlR$w*~mOXT{Z>t$kS-tZAC}VbwbS}#v<F$ z_GOMvc%3*Q*eRovPOu~|Hf|#?+n@vXOaWhO42~bnC_%Ef3;j6{>YRoPWMf4ofa$iR zc99fLC3fe-`NM-p)18)QDW&_Zi=~9?LXrc#(#RDu%>ioBUNln~46EJYQg-evJ)5|# zVJM?M+1%{Mi;bTjt&EU~fkKpk?zLJvp|UYDayY*v^vy=}=Tne`-+AE>RkV4%Ux^?d z_TR|ZziBw#_U=Z{AKGwUiYREMbs$6~){O7Y;5hnjs>p8aF&~G91P1(56}x5I8xLj6 zwl}?6cOLg>>u&CRqiyXj;0@azw5APP(rQain85MmF}88R*;ekq%WyEb|IVrbbcy@~ z>Ph;i!V|=;ov^m9y+~Tz+_8q(dvkWafw2Y}7zWKaFj+g_zyx=`aoYvK`i}25+unFK z5AFfyMw5$++_LA5I*Qskn-vAS+`Y2rE&Ji>!k#xa!=)95OrR}zP8dDRY0~yiLEGEj z-hLhOg+*7)M}L5CEXV@lx+|7=0X+k#RG@K~4{)P(VkGa%_0?P&Irx?9V?ePKlnWwu z{fm1`4bTH0^D$tOC=efmrPD|U_E3Gymw=f)!D51QYGeQ_k7F>K=1kiE1n1LWAph#* z0jyw>Vw)ptbHR~@ek|rcEW+iK^<F<V%%c_|VRpl1S46JHi3BXO*#)iOq7~LrLW@s< zl^1wv#5~JQ>XCQ7$$I6i%Ve##1Q%jLD>OMvHlcNyk4!xs>mvSVe=8`bOh4^34b2r4 zHW4^Hi=QI|%3VR3i^he$!ek8^!Q2`0eB)P8P7bVHlNG5aCQZ8eDUVDkH!Cf$ITyK7 zjyF;fF+rC(H(sxU_F)-DnxnxosB7l^a2Bw28st@xOth=zau_`zIWdXO$0}kKYg-lq z$<yCe`!Hlrt}Z8?{*vMN;BXw63B%n;1BYffzKgvBChy?G^oOKhkp+UGq)^VBn&_VZ zU+Zx|kx~-XtQ(ZjqTXn^i^OIL+sCbKSuz6K;M}pDIZQYzu^gFXCQ1IlYDwQ@l_Bz< zSh>&UZvykT&ql(59~TeHTrt>Mm=K{@`zgxI7uh#9apMIOt|OhpC1K>ZFEi1h`euYu zjUU5U<@H$Z;i6d_LdI!rd;(`!!Gzvi7>$*8OKvAv#`Q>lD4HzP#V}S!4hq>Rf_0vM z0qcB1Q5}v?VLkJ9=k5z?9I#yVi@nPbQ&GFbgM9kJD%YF}XUsCD1(<A=qL(g7R@VCo zt%dC^Rl8JG3G+U?9(_<SD@=N_cur8A6&U)<k`Q=eay7GN-e$o?wh}3|eUz-6MNBnO z*Hub5yY(48QdLp2ba}%Hg!vl&-;4i=k$dp{9)U2SGq_o(Vcaj(^F11lmnL!K1^e57 z1@vz5JpoB*-0uO>7<qd>?Bay`J>6>q5$&HqG2e%&F!h3nZT(Mz>-i9-9Il}dhCQDL zihiv5z^n{mmH|@&p8YVZfjKjT;R-X2IQn7k0A^zdb008=pe^;oa11oVVRC!fYWT6W z^*?V^FB@!Y*~AtVphM5|>2^3uwOZElElMzEO<!?}$==_47M{}YF2Mc-dR=s0@daix zCxoh=YWn9I1X;c!6mVe(XF~?}8G^eDW<z3OP3^q+5|fm_4?(Cp<Y&VB8yMUSgd)0) zu0_UOA2WL;x(|Zgiy0p+3w-w5_s*D_)A#al>i+uPIi??EDZLea?=++{(WI$m8|r)6 z=*U84`8jAYCrV>>j%&4~xpb~RHbl02PV`Ue@}%XFHWL%D32l*CABf{Ur+uh&=$z5W z;Zh=yWwG&i(jL9hVb^6O@MKA54ibDXp~^WL6bbRd#PHKdgEJ3CH@H4FI-#TonHhV{ zpA8$Hd;+ny=E5>0uTv3kAEsqUxBR-p@%`mh6Y%}{>pqL`xvMU~)ByA!i(IBl!O5*f zRTGe=7}0>ajJ75wz&XMoLRw!eJBK}l#1#mX!BorzlV})T6h&{W;gkZG+IhWH6U3WX z7Cb|#3z0GhbI4FW951c3-Cn9{LSid!oeyHE3hlM&h!#ux&#rYiE<OM8+Qno(Btx1B zYrP-J{gcNPjc^u&V>RrHMxyin{B&05(D@4nEIu9Sk2sbnEstR=p}kVnbZE2LPuh-2 z$9><XfD@hN%I#tf5?zjczmm!;53zC(<xy=dx7u1s!pPf|1(l*W5;kuFNAEuYl?dy^ z5ti@sOfNhePmiJBo|v3HCx8FT&4N_<c{YzzPMLb@w9`I%`t%uR%|81a?-NVv=HqOF zo|QhM?AXSLL744RK^+6lod_<+MraCEA)c$%zBqv@@GkNF8X)!kCLryL?{vOA#iBj+ z9zfbZ?{&U^0;F+=0BKwve^JVZ0n)g6dvs|l!+pAKTBI)oulYWl9doYg_m@YSV2q6< z@xeh(d0ClZ6mteJn?cc!^=V+nfNLM~1z`B7rH^R<hNpjgIxWCF7sA{M%)60@AM0LV zKISmF{r6n>h5OYvum7F~UUEMiVb~A*@A`Obfptr7J#YT<hFAzwYj*YpX?yhWxtb^7 zCq2434Z!0wc0*rh*maBQY`2T^BJ*O^dS>2?0~W`ZeX%+acYz>66xabT!Fl;Bm)5&Z z*mT*!m=={2SE##~?7kHv9e8yes8(0kEuW9`2d7RwsPhM>%$PQPMj1c;?D+wx=~9tb z?(Df^iq4+pfI7l(MD<qm;5S3}mYjmLScULmZ3@hu*;>gI64Re)(w0s{-@%F2OIW>P zR~ne^a1{$EHdRgCs9Ttuy<oZlnfpYWe~1v`y&K+W%+OiFSdwhfVme)nvv8Qj_4=Jo z6WmN>g^#L5OrmPdRP{TCk4yX@Hyxuv&h}BioUEuRK5E$sih7?R^z_@*4f`-9UBW-P zG5k*gvaM+f(l(v{kX$`Hk&`S;pG}5gbEgsAym8ToeQOz}V(42%di$i)JQq?{LAAA$ zCPoIlTU63&ToV$VWf~mo2Cmyer&P&q|LW5a9_AL5IKqME(1o@eL#THmlZ(s1d|*PH z`3R9vvJjFZB+V9{`_zoHWbhZvc&dEKvBY7Kx#ipNayd*4jk_8{1Q{RvT=SIv;soRk zV~papo@VxPG;PQ%lD8O;AjaHT?F3~*!+3!Hm@>hFj0h~pBXs$d{FE<AZf$y!CJ2(1 zOF{$|KY-W)A=35)!|Ndv-VZjBQBJv$AIgdhI}0dY;d$t7T;C~K+=(CoNxJ}R#k!JK zg&A9~vVvN#@<`7<)JReVz>JC@L5<Q$zg_)(Ni6;^_yjX@<^Ga7%_Q}kLq<&sWV)JI z?qiv>8}Y3>Q5k8~*oKji<hkvjXF!ZlM#%HMTDQ{Yhe)Axa|*|mN8<5f@TG-m1TLB$ zlo0|1#KUejD4uswJk*QC<Aq8py&2QwaHK5dh_>9SK}10c(1LOCYw<3S4is@Zu7TR* zB0H_WEeyosW=zXPKrrU-vSQBEfTOT|9@!QR8$p=WtYJ`)0+Xg{V~%jr+)dd}W_dE7 z$+0#tv(j>8Wj6C+gs?fKaT^VeT<XeORt~LyF&d(BbsQThlg>cOR=B0!@Ya?MT!O$- zm-twGK+yDWXZ-+>Y%g`(vP^yTQ02uSETFvi9VbFUytbwfBOcnf4+yor2<EW%X=9vM zD9379M&^#~p&-)U>*1O$eMJmKGFAP__Ex2oY9CM_+1?BweI?GAAxNNvZwET4nENf^ zm8d2x;iHt)Na~;dJt}NCsV^UFQiq$QHYuqQlS<?yb=Scr^*vSz<m%l0BsD1~srrLW zYL-drd91*)xJIfXKT!WbS>1H7Nj(KMX096dlho{-q`r8tN!6O9O7@e~Z;G?k;_`z{ z>K}SgGJU&}8c~2ta+3Pq!6wyilA5}oq__nYR`zuVo7Ax;sV)q9M^lS$sDD5$Rvm0o zKY<ccEqEJYw4_eVNh*1;Nqxp7^+&XTqb1d;{()RIA8b;4p?S=ev7k1hS{Um=fu!OG zo74)E)Dip16`v*ztHr#7P3ka{)JD_4jMQ4J%1NsBV3Ya|l$ZkKW<tKQnuYxk`cKSB z>az!%)O3^7Gl-ZksWL3ZFsbjWf1s>x%u4DLE_&981cQ1Rj{O2k3{sf}7f@#<;&~;O zW9WH~^BjT7R}7VtT)+U8|9!tup_dHxUw#cBMu###1E^yFP|(dRY;tXb2+d*|XK$${ zA~^8qumag`5Nxs-qMacmD1ByZZ9L4y!``gf1EUvQ;zNZ2kDR1s4O%3z<kk~q**NJF z?q+O<rpu-0qnQNJ?W&MNGB->bSH6twLImb4HzV}P%E&&G5qjClYX@M-h)&rc4;Go9 zdvMHIZk~)N+GRwDy3lk<Mo8aIa+B@qav6!!c$rR<5}4gurMiYZL2ocWFVPKrpDitI z1aQ+-uHIryDe2&>B9_%b(iSik+976orB`9Cm3#F2D^j;Lj~V>&9^^4pU?~5q<*26p zIM@)rC@2=->L9{rbiYLwVAM#G+VpzMM(Wf>iGCRk8zIKNKt_EX+ystiY>i=a#mHHX z)b9oVnj@;N87nt2EKeuC1BOp|sBC}-_Hd4_UydT;a8zHzOG4c$eiP*(TAym#Aqhoq zc*#(14+R<%f%mK3I=wDgd?Z|1H8C6>>o5|<YKXEnB$Hko;BY4&%-RIKC5Hqs;h8J} zhXMgP$15K#RmMcsx-htslS4&T{|A$+nORA1m!ub~rlXY(0_$wWX(v$$M`7sN(ghc} zDF%JQ*)}bR5nY$a*A|r}<{B7(@ykA;VYVw)Kg?vgQGs&<mMPH>?qIRGNVeOSpk2Ze zL#Bi6a9}a%k5*e4E4Y|+t?vD#PiL2)i%Emh#76hYrVs?U)>90#fo9@$EhcGKl7H1` zAy{$}#q<=GOid>P4-tNOeWJGvwYG&jCe(vE_yklVy}}G#a%Zqjr3lIjKWHVuq9Ni% zgK(2wkuRF?k4Sklp6z`I<Bmz}Xr|o^M<DI}wQNq&h3ZB`4)kM>(rKE1NzipzbV-bE z0Dgx>m!O#oA8pjlwi-G87^#JXpjw|#2=vJkf-bv~29{k%69VHNKu1SC4fKJJs9yO} zcMU3&3<=@&wzG~lT9!&jG1v#j{x0gCnTjIL?gPW)AV$}<E>ur9Fv31Mdm3{FOIBF8 z<rh#CQ?+MbW9s$nYt!Gf`QriySmUVfEnY-Hiiyr^nCU`S2T_FBE{Mdg#CJh#p=1~b zq7sjnNrvl*Xz#Q2iHlfJ7_MozH64c>%^G`^Eah>G7s$U{`CtWlISc=DLrE5ONL#L9 zqRW$%M^EU3Bv^>rA4rHKc!10Co6+T4BV>E>?qVd1y2m`mbuBa)M~GaD*2s8i1Jryz zHqV`xlyX@(aoeL$L#Vd)6SRO^+b1ZHvMXN6_F~1fwVPGl*7n0JhIc*@y|rCmPXQgS zs|hA*!ZZ=UN}CKE94*1xmA0f_VB5vJJ18%ko`eZ3wHagHyBMfqSF*K4Q_w<a3*9~K zhs4%i%9a1zORp2qE28JMtsONb)zrfXb0mUYx=S^Y3Tpoa7dm}o*zy?kA7@QibjNaI z45GIsg$SmVY-{3c>Ud<J`8}9PYCL0#&Meg!6&!PQzR1+hpO6~gnxc8qvC*%*ipd)e z+^34yPG?E>n#&^@vEZo}f}vy5CBAQ>YK%_B<gv|d9A70??j5(v*MHpjd=#u1P7326 zvn1JlXxp+=x6;g{ZiUVtl~PfF(yYSR4xdtSTyB3fal<k(RD5+Fy8jlUdvuU)L6B~7 zkS^|+{0Y53rD<tLztSt?0mJU(5ZTA+h3V{O{93c@d8G9RY*Mm*skCm<NVvPfw^D+< z6ojM|ZJ`YbOV*dzw?ouE8KhPe{pwV>eL)q*wx`R43Uw`#uP84Jk>e2xu!?aqE|F#x zz@zp!t<TFlLy;dEC33LzqAfg+m`kne?Lj#$4N@zJe)Uqg{hSpeXP*!%TnW#cvui@+ z-fzj_PVGP_XGKA=7sK2+>V~~t>u2?Z5H*fIL{6jz<{pAO%p7k>%LTmr%spEg%<J`* z++bqmV3vMD>>RO0aH+{wnma;~&lx3hK<rTNcQT|U^0^QZo;jx~{|UeL$(1~+JUJBU zag8Kr(uP88j|s{YDgQe|+LV8*+qR}Yv?!4bZw;B&6d|RVc_0*!3(8>87xUQoCmqdH zDCjAMrWhv(H(m2X0kOI*G@WTrj$~3z?9$g(%FeFqbsf;8{d{zFfz?Rc6c0eYh~Fjg zL4pp`_6srB<X?EDKhAgg(F9xD*)}^QF7WD#&<=7sRD2cZ1g1eP3V9V?b%gIVCN4Wq zO&Y7<YB4)1W0L%-jJqlrf*pG{ALt<7u8gJHN!6t#Jt*u6%Nb*yC{XS!ns*+OPaVG{ zxm{mp4Er(?23bipXZ>m%C+PK-1152t*n=E8MD5sGzGe{Z-TBhzJM=Q=45v^(YWj>c zQu-`rrr$(HIA^%f40%KWh&T%fb67+4#%yWwxgW5N{moLl$G8pY_+tX-aA~<!auBBq zn#p9Jm9YY)dO(u&+KpGTy`N#sl(;tl@71`vP=y}PE>s;SxnPq;rf-0UW=jyU6+)c8 z4(nF$h~*yT1m|VfSIC3RT>5jCA;|_OWc`SQQZ$5>YrH~36)|}b;ldwmwa{dgq{1{g zAHkSX)^hj$PUa)&7bqu1{rf9|lHinz%uaDCW{__Z@pLPVO~iFQjshy;(^P|3(UT3v zk%5vB3$+7cTYETFHGt(dJg9@^qONibamW!Mo;ZZS;W?O`jdPj9@qzHU2~HDugduB@ zM#9-~Alof84B&<znN`TBd3RVd4osaQ=+gt4cnj1CgG^PYi|iWR>({5AkUsTDF*<$f z8Bw1YFh`$yM$)JGr~pDaTc2*us6L&A07joa-IuLTeYlkgvmMl@y|_!6qff9Xy!UE0 zv4J9`2J{6=CH-5Ll8YbPU+|44I3IGvZ2B5<->UT+7~K9p{?X*_<m1On1**K3-t8Mv zEDY^tjP08&hLb!PM`lcEeo;M~;SsiI9Dq?9)9;1`f`*y=7P!d>syfYf>iL9EgS zncxBd(^Y;gNfGjOJ6jM^H}(c4^D|8{)uc1g*da^;qXh7SDMTdN@*O3bvf0s)DgxMr z&S^X;Wr)LM-h@WB1*<~BS@pf)*_O0lSb;^M?PZT|Mi;3jlHu~AwjkuuiV$r8>{9cU zth7?yYgWdxl9sY6@&@uSDygCYL1W=k&1pUMn;UWw&Q1O($?XMl_g<NnlAIh6%7~gH zA!X!Ij=6ud<yowbBAzHoJ`IrY(-7jI^k6eYJ9-?s4v*S62t(evZFev3Sa*R2H63uD zwB5a~?FMApZg}oBZFg^W+ubkH57t~kAe?Kvkvq9~Sh6^)xwfm-h(W22JODWSEpM@L z?%<6Y0Q80$Y{(LWBG+K|j@V!`U`~VGJ5qyvH7dVQ&Tg<@d`TPZOV~Q-0N~aa@;BJ> z+$ig4Zi9{I!SHAX#{lXdeWVi&99)XX89eAf!mfMkD57r;hY^RdSHNcMP;Mev8fOaJ z+sPVb?8Wh|#8#XM+?%BBdZViZ29mQU3I>A<yfg_6h9J<Uy<O!KsM(TbcaxXH#J$PN zQjS8<qy|qWa_F2>|ANh~Kj@eo)<!ev!2PEorU)u+O=Xa_jNud9aEQ+W(rnj<PGe%E zW{jC}`40hQP;*|GK8ux$Sxq_u{gRfnki$6k`mIY46^+@IV_^S`4CpNHu_lh)-AMNu z2I9RVu8nmy#ps7m=5(p8rGeUNhSChdlqIONx}`a)s!T_lc_orz+lc@$Mp=@q$}JoY z@vsuSLbA6YoIQHzTMyY%;|9t|QX4@~k}~i9gvvI<tH1fZ$hOI1sAPZ-NC_rPxch9z zsIz{{`co1dY&LB`sbISDZlOnq$dw8vm*zrY?+u2fW0bIWYgpM!YNZ1S=oHN?KuUrv z_X|y?ho6E1*!1Lz)Q4q9fwTGW<n9_21WGnbSfQwA*qIWuBrq-=3mcq4O-im-_KO$a zQ_3-QutFI+S=W;FTGXXd+i>d~b~QKz`YQhK!hZ(;_v8O(`2Pp~cjN#3<*~APWtHcD zvP=y@Tc~Wo@`i?ZeXM3-+58n{XI*smx#t2!v!IPM^ZMnBFO5ZLJ~a|Mx5A6WJUAOG z&$~F%c;P2!M;gyQ>%2(g>~k-U)X(``W2BzW<)8ROW2BDJ>drp9GP3yGi!P2VI;-NW z$bvZ+Rz&81`jh8G5Z{ZO>z#j2<lJ-4x;S#~oO3RWoV)C*c}waRmeEnRq-NQo*y2b< zU1K93u@Kz+8kknCDU%r1gM`Y09v3fPUbb}JvK11n5l>LyRSaxrE|1}vi#j~8u^joT zU4l0%@Fqs%ysK*Ly_*QqZ^W||`XELbuD0TCx4d8x3?*q(kTuJe#}_SzoR-!%)HF6i zc4Ago!Zz})3Y!jm>Xwz^{tv><TZlps#`K+!<6t1PrePVllB+kzM<N$D#Fycr4@AnM zOd^u_IW^XYuYpKB=jUAm0~#a74Er*+T0;IRuGVfoG7|ax`(T|LXN{i1f9p}uLj0FN zZ|pxNDq_=_Egt{vhj@N04hlYE9QyH-FAnkMW_|sVc?)XFMAh<_OKf>rV~ol`%h6?W zJ1QJkv^GRd6f$2KJ6a53XyN*mysYBhWzi&@xM}Uz1dVXb603Rgd#d@ZGQU^h_v84- zD<8=E5<n9p_d93{Aocw@ARdaH82PosJ@0UrL$p_lZyZpaKsN$fEYN=dS|rdDfRx@- zfOtZ0Vx$CZlj05oq&S|uRNSe6G~F))s*xDH7p1<p0@4^S0YWtby`xZc3j|sWNW(1y zq~Y!WG+%uG+xb4|eES^k_YTJsh)U&MfRvXx4#(G46nCY=)dSMh9s)E^Qu~$jeb)K@ z!{Lg?S}G?1($uCp+|>@Z%Hht#uvNod2&h)lxE;`3fqv|KH#^@FRFi7)JqD1*Jr0n@ zZ3OfM@#X6*>U)#(eIC#i;ydJgUvs|aj*mpR=sYp90FcJ51EiEU0lG|lpLD*vobORM z<NkT^odHPWo(V|fwgLK__-=5%_c-6b0J>CsqlenK?*ycA=K|uv%!!dNJKrYf`vjm% z#P=oVn{mD$#fXwMWMZTekaBeiAf^0mKo^VeL(X@L^PPbEG#82Q2LWl^lK^SluQ}W| z9d4h)@tqqDHw_i`LZR|c2i=UG_X5F<dpmjzfi^nm0qikpYL5W=qWBI0`iwwFV?*wI zfldOX;idu7aF+m5dW&4RA35CjC)(P*6;Pc}c^1%OfeLUeR_TocWVm-Y9-7rOHac8~ z!~G8+&E=2YWvOfiq%mFwq`vEL9#(U{2au-rKY%n`3X|6g;bjjX;|u6K!Tr(U{su^6 z%*OR+4fiQP8t$hK*X3}(d@o*+5Gwxwq!Ky?z0s!xR}JV~fs%lf-XF^F3X|X-IojfW z<)A-1=;Oy&-zo<+I_Oyky$DEo{wttQ3gw4BU}e8_vc=sG=o8}m7$7a_-#F+mfRw*~ z0@D1RaID2m1*B<sfHaLmKWNj~4oK;}>Y&ySS&4rikSFOr1xUla;Gk2Fv-Ii!sr*(t zsK@#K+2M+hw^U9Cq%r;zkfyQ6`M%<yx1C^P91rM|!VB+@sx($R-<uq?0gy`LUO+01 z9*5ftNTu;AAf@;4iB=jrPqMi8eK-<1M^c*(NK^Y9AeF(DfHaK;K$^x60BO(kxbuA) z(Ah#|%*i&tX93c57Xex<zTXF=^!^Kw#&{8s()+XX{fG0N_z`^@Y+~di4*DdZ^M&5j zDVE+@fX))!b%3S=8XHLhDi<8S46fKgB@UY4pi&2+VK6aJ-3)}mn}MbmT4<Jo${lo$ zgJ|wZc{$HPl@7{lqd>;52XCVQjf~Xif(UQQ^MfLZ98wUp5>O5d`x45a2>)7A?DKrg zT)5_iF!gZNhA>TVQMde9?Qk)ik68~_JcQW@*Ox<>PPkTuFx_x9hcLZxB}142xNZz# zBFN=UAxtSS>p~bVaPXF#&*2nc?h0Ybf%#qtQwhwyA<SH0{wsv32j+ngrU{sbLYQ`7 zicl<m>F|);J%<G`JRP__g!u)-lm^4R2+V8fD}6eA3+NCitB*Mx=_~}+&*?G1REENQ z6qrZR^Z2o7g`yihhL2eQ3^z=DI$V?CB8`vvDqP&u^)cUpi<`hc=0Uhtl?5sDUA-S4 z6U3x}x#$By%s+t{i+0@S=N(YlyF!=`0n>rj%@0Ex7#E|J^D!3y^KYmMKITeb8qtFI znCpPKGlcmXFi(Uq8-U^ZgP$)R1By-w(s>4$PlYhA0`ql;$+gSzBlvYgQ~b}HXP1NX zji{fHfl8Sn`Pg=Yr>DXg-kS?!J{7{yJ{A@dvcg;z3PaDj91Kr@>4&N3f03sp6o#R1 z%fWE&qaT}#Cqo#%__74^{cxCPLt*ImQV5g(9iP93!Z6m@G5qGorp{A(`mvZ3axgP< zFz4l9uE@bG%fYP5!L;XKzMX@)KL_(@4rW&l=A|6WUvn_y#%AZ8*KNbnI4K8nb`Iv^ z5Jt*kX?+%*not;e{#y<vnS)uEgZX|AhPRdV!xG#Am)Mi3Z&<zn>rmCQq!Yq4E?){; zZhSmT(ecK``V3BE-6BPCt>olWr=2?E6m@g4Pux?C8|!{_PoH7jSOOHceP0QSaN<5) z{kbqGZu|NZ76rw9n(@bSp}421n=6OnKGnEwcw_C3>xtrT_~SZ_xD9_?Wu*Ib!ygwM z#clZG+M~D)e_VzXx8aW~lHxY}aZOR&hCi-TiretVbvSVw{<t_PZo^-_6S1xu`Euv$ zS&d(;GfxdkIHGFtN>t-wlX*twdqQ?$(vKZni1e{oe&kA6D7fKp#uSr7pCegA)W}9- zh{@Iut4(-k*Kmc$d#hK}En9H%si#dn&E`{(jj?$RC=Q@aaqyvEv}+P{nkf>&xscOL z!N_Y&!kbE<+E0&CSd5py@P?Eu0|xWUXR){n?c+>HS@iR<LOu&;Lds%bR>&-z329aW zLy2M4*ng=@_+QMG<Qn@>nUC@_M4>Eftgl`=uknkJ*6CA?@<7y!xPn{<0$ACdU$?Br z7XxiP1p`Qq?9*a2*%b72mKPZ-6f!Seld)>iQS%&`z}9+{>6$LA0X@w=33I{K8kY<j zlngwsRnx%bTa9ATc@0S`lXXk52=3=OWT?tFNtt7SGP~j|n73p>oP8<ZsMEx)0&(9$ z3fmxL(;|qFZHpj6wlIPS+1&^tWLG1IkbR9HLiS982-!6WB4m3ch>$InAVPLbf(Y4a z2_j@;C5Vu%l^`Od!A1h}8u5ahEOCbfBRev|xUw-Lhy{yl7JN~arFz-CrKWgU2rNaV h0zHO?IPp_K<JjV;KGifBvV5*V(fL#_K(~3w{{!MufQSG9 literal 0 HcmV?d00001 diff --git a/lib/libz.a b/lib/libz.a new file mode 100644 index 0000000000000000000000000000000000000000..c7bb1e86f981015d9f577507df09fa2b9e1ec79e GIT binary patch literal 95182 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 literal 0 HcmV?d00001 diff --git a/main.c b/main.c index ff6fcc2..16317a3 100644 --- a/main.c +++ b/main.c @@ -488,13 +488,10 @@ HRESULT __stdcall ddraw_SetCooperativeLevel(IDirectDrawImpl *This, HWND hWnd, DW GetWindowText(This->hWnd, (LPTSTR)&This->title, sizeof(This->title)); - if(This->vhack == 1) - { - if (strcmp(This->title, "Command & Conquer")) - { - This->vhack = 0; - } - } + if (!strcmp(This->title, "Red Alert")) + { + ddraw->isredalert = 1; + } return DD_OK; } diff --git a/main.h b/main.h index 636839a..1351246 100644 --- a/main.h +++ b/main.h @@ -81,6 +81,7 @@ typedef struct IDirectDrawImpl BOOL vsync; float sensitivity; BOOL vhack; + BOOL isredalert; DWORD WINAPI (*renderer)(void); } IDirectDrawImpl; diff --git a/render.c b/render.c index dac6f0a..6bfdfd8 100644 --- a/render.c +++ b/render.c @@ -168,15 +168,17 @@ DWORD WINAPI render_main(void) return 0; } -static unsigned char getPixel(int x, int y) -{ - return ((unsigned char *)ddraw->primary->surface)[y*ddraw->primary->lPitch + x*ddraw->primary->lXPitch]; -} -BOOL detect_cutscene() -{ - if(ddraw->width <= CUTSCENE_WIDTH || ddraw->height <= CUTSCENE_HEIGHT) - return FALSE; - return getPixel(CUTSCENE_WIDTH + 1, 0) == 0 || getPixel(CUTSCENE_WIDTH + 5, 1) == 0 ? TRUE : FALSE; -} +//BOOL detect_cutscene() +//{ +// if(ddraw->width <= CUTSCENE_WIDTH || ddraw->height <= CUTSCENE_HEIGHT) +// return FALSE; +// +// return getPixel(CUTSCENE_WIDTH + 1, 0) == 0 || getPixel(CUTSCENE_WIDTH + 5, 1) == 0 ? TRUE : FALSE; +//} + +#define DECLARE_VAR(name, type, address) type name = address + +//DECLARE_VAR(InMovie, int*, 0x00665F58); +//DECLARE_VAR(IsVQA640, int*, 0x0065D7BC); \ No newline at end of file diff --git a/render_soft.c b/render_soft.c index 4abee4e..ef7c890 100644 --- a/render_soft.c +++ b/render_soft.c @@ -20,6 +20,35 @@ #include "main.h" #include "surface.h" +#define CUTSCENE_WIDTH 640 +#define CUTSCENE_HEIGHT 400 + +static unsigned char getPixel(int x, int y) +{ + return ((unsigned char *)ddraw->primary->surface)[y*ddraw->primary->lPitch + x*ddraw->primary->lXPitch]; +} + +int* InMovie = (int*)0x00665F58; +int* IsVQA640 = (int*)0x0065D7BC; +BYTE* ShouldStretch = (BYTE*)0x00711015; + +BOOL detect_cutscene() +{ + if (ddraw->isredalert == TRUE) + { + if ((*InMovie && !*IsVQA640) || *ShouldStretch) + { + return TRUE; + } + return FALSE; + } + else if(ddraw->width <= CUTSCENE_WIDTH || ddraw->height <= CUTSCENE_HEIGHT) + return FALSE; + + return getPixel(CUTSCENE_WIDTH + 1, 0) == 0 || getPixel(CUTSCENE_WIDTH + 5, 1) == 0 ? TRUE : FALSE; +} + + DWORD WINAPI render_soft_main(void) { PBITMAPINFO bmi = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256); @@ -73,8 +102,6 @@ DWORD WINAPI render_soft_main(void) tick_start = GetTickCount(); } - EnterCriticalSection(&ddraw->cs); - if (ddraw->primary && (ddraw->primary->palette || ddraw->bpp == 16)) { if (ddraw->primary->palette && ddraw->primary->palette->data_rgb == NULL) @@ -86,11 +113,19 @@ DWORD WINAPI render_soft_main(void) { StretchDIBits(ddraw->render.hDC, dst_left, dst_top, dst_width, dst_height, 0, 0, ddraw->width, ddraw->height, ddraw->primary->surface, bmi, DIB_RGB_COLORS, SRCCOPY); } - else - { - SetDIBitsToDevice(ddraw->render.hDC, 0, 0, ddraw->width, ddraw->height, 0, 0, 0, ddraw->height, ddraw->primary->surface, bmi, DIB_RGB_COLORS); - } + else if (!detect_cutscene()) + { + SetDIBitsToDevice(ddraw->render.hDC, 0, 0, ddraw->width, ddraw->height, 0, 0, 0, ddraw->height, ddraw->primary->surface, bmi, DIB_RGB_COLORS); + } + } + if (ddraw->primary && detect_cutscene()) // for vhack + { + // for 800 x 600: + //StretchDIBits(ddraw->render.hDC, 0, 0, ddraw->render.width, ddraw->render.height, 0, 200, CUTSCENE_WIDTH, CUTSCENE_HEIGHT, ddraw->primary->surface, bmi, DIB_RGB_COLORS, SRCCOPY); + StretchDIBits(ddraw->render.hDC, 0, 0, ddraw->render.width, ddraw->render.height, 0, ddraw->render.height-400, CUTSCENE_WIDTH, CUTSCENE_HEIGHT, ddraw->primary->surface, bmi, DIB_RGB_COLORS, SRCCOPY); + } + LeaveCriticalSection(&ddraw->cs); if(ddraw->render.maxfps > 0) @@ -102,7 +137,6 @@ DWORD WINAPI render_soft_main(void) Sleep( frame_len - (tick_end - tick_start) ); } } - SetEvent(ddraw->render.ev); }