From e44d549caf0c670394a30339604b10b785a6ce75 Mon Sep 17 00:00:00 2001 From: Crayon2000 Date: Mon, 5 Apr 2010 02:00:45 +0000 Subject: [PATCH] [CHG] Deleted the lib version of FreeType --- GRRLIB/lib/freetype/Makefile | 34 - .../include/freetype/config/ftconfig.h | 477 -- .../include/freetype/config/ftheader.h | 780 ---- .../include/freetype/config/ftmodule.h | 20 - .../include/freetype/config/ftoption.h | 708 --- .../include/freetype/config/ftstdlib.h | 173 - .../lib/freetype/include/freetype/freetype.h | 3868 ----------------- .../lib/freetype/include/freetype/ftadvanc.h | 179 - GRRLIB/lib/freetype/include/freetype/ftbbox.h | 94 - GRRLIB/lib/freetype/include/freetype/ftbdf.h | 209 - .../lib/freetype/include/freetype/ftbitmap.h | 227 - .../lib/freetype/include/freetype/ftcache.h | 1125 ----- .../freetype/include/freetype/ftchapters.h | 103 - GRRLIB/lib/freetype/include/freetype/ftcid.h | 166 - .../lib/freetype/include/freetype/fterrdef.h | 239 - .../lib/freetype/include/freetype/fterrors.h | 206 - GRRLIB/lib/freetype/include/freetype/ftgasp.h | 120 - .../lib/freetype/include/freetype/ftglyph.h | 613 --- .../lib/freetype/include/freetype/ftgxval.h | 358 -- GRRLIB/lib/freetype/include/freetype/ftgzip.h | 102 - .../lib/freetype/include/freetype/ftimage.h | 1285 ------ .../lib/freetype/include/freetype/ftincrem.h | 349 -- .../lib/freetype/include/freetype/ftlcdfil.h | 172 - GRRLIB/lib/freetype/include/freetype/ftlist.h | 273 -- GRRLIB/lib/freetype/include/freetype/ftlzw.h | 99 - GRRLIB/lib/freetype/include/freetype/ftmac.h | 274 -- GRRLIB/lib/freetype/include/freetype/ftmm.h | 378 -- .../lib/freetype/include/freetype/ftmodapi.h | 445 -- .../lib/freetype/include/freetype/ftmoderr.h | 155 - .../lib/freetype/include/freetype/ftotval.h | 203 - .../lib/freetype/include/freetype/ftoutln.h | 538 --- GRRLIB/lib/freetype/include/freetype/ftpfr.h | 172 - .../lib/freetype/include/freetype/ftrender.h | 234 - .../lib/freetype/include/freetype/ftsizes.h | 159 - .../lib/freetype/include/freetype/ftsnames.h | 171 - .../lib/freetype/include/freetype/ftstroke.h | 716 --- .../lib/freetype/include/freetype/ftsynth.h | 80 - .../lib/freetype/include/freetype/ftsystem.h | 346 -- .../lib/freetype/include/freetype/fttrigon.h | 350 -- .../lib/freetype/include/freetype/fttypes.h | 588 --- .../lib/freetype/include/freetype/ftwinfnt.h | 274 -- GRRLIB/lib/freetype/include/freetype/ftxf86.h | 83 - .../lib/freetype/include/freetype/t1tables.h | 504 --- .../lib/freetype/include/freetype/ttnameid.h | 1247 ------ .../lib/freetype/include/freetype/tttables.h | 756 ---- GRRLIB/lib/freetype/include/freetype/tttags.h | 107 - .../lib/freetype/include/freetype/ttunpat.h | 59 - GRRLIB/lib/freetype/include/ft2build.h | 61 - GRRLIB/lib/freetype/lib/wii/libfreetype.a | Bin 980206 -> 0 bytes README.html | 16 +- 50 files changed, 8 insertions(+), 19887 deletions(-) delete mode 100644 GRRLIB/lib/freetype/Makefile delete mode 100644 GRRLIB/lib/freetype/include/freetype/config/ftconfig.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/config/ftheader.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/config/ftmodule.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/config/ftoption.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/config/ftstdlib.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/freetype.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftadvanc.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftbbox.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftbdf.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftbitmap.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftcache.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftchapters.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftcid.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/fterrdef.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/fterrors.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftgasp.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftglyph.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftgxval.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftgzip.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftimage.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftincrem.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftlcdfil.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftlist.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftlzw.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftmac.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftmm.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftmodapi.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftmoderr.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftotval.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftoutln.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftpfr.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftrender.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftsizes.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftsnames.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftstroke.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftsynth.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftsystem.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/fttrigon.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/fttypes.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftwinfnt.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ftxf86.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/t1tables.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ttnameid.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/tttables.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/tttags.h delete mode 100644 GRRLIB/lib/freetype/include/freetype/ttunpat.h delete mode 100644 GRRLIB/lib/freetype/include/ft2build.h delete mode 100644 GRRLIB/lib/freetype/lib/wii/libfreetype.a diff --git a/GRRLIB/lib/freetype/Makefile b/GRRLIB/lib/freetype/Makefile deleted file mode 100644 index 0a0158a..0000000 --- a/GRRLIB/lib/freetype/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# Quick'n'dirty makefile [BC] - -ifeq ($(strip $(DEVKITPPC)),) - $(error "Use export DEVKITPPC=devkitPPC and try again") -endif - -ifeq ($(strip $(DEVKITPRO)),) - $(error "Use export DEVKITPRO=devkitPRO and try again") -endif - -OGC := $(DEVKITPRO)/libogc - -HDR := $(shell ls include/*.h) -LFT := $(shell ls include/freetype/*.h) -CFG := $(shell ls include/freetype/config/*.h) -ARC := $(shell ls lib/wii/*.a) - -.PHONY : all install - -all : - @echo -e "\nWe must track down the svn repo for the source" - @echo " and add it as an SVN Vendor Branch" - @echo " http://svnbook.red-bean.com/en/1.1/ch07s05.html" - @echo "...For now, all you get is precompiled libraries" - -clean: - @echo -e "Nothing to clean" - -install : - mkdir -p $(OGC)/lib/wii/ $(OGC)/include/freetype/config/ - cp -rf $(HDR) $(OGC)/include/ - cp -rf $(LFT) $(OGC)/include/freetype/ - cp -rf $(CFG) $(OGC)/include/freetype/config/ - cp -rf $(ARC) $(OGC)/lib/wii/ \ No newline at end of file diff --git a/GRRLIB/lib/freetype/include/freetype/config/ftconfig.h b/GRRLIB/lib/freetype/include/freetype/config/ftconfig.h deleted file mode 100644 index 5bed6a1..0000000 --- a/GRRLIB/lib/freetype/include/freetype/config/ftconfig.h +++ /dev/null @@ -1,477 +0,0 @@ -/* ftconfig.h. Generated from ftconfig.in by configure. */ -/***************************************************************************/ -/* */ -/* ftconfig.in */ -/* */ -/* UNIX-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This header file contains a number of macro definitions that are used */ - /* by the rest of the engine. Most of the macros here are automatically */ - /* determined at compile time, and you should not need to change it to */ - /* port FreeType, except to compile the library with a non-ANSI */ - /* compiler. */ - /* */ - /* Note however that if some specific modifications are needed, we */ - /* advise you to place a modified copy in your build directory. */ - /* */ - /* The build directory is usually `freetype/builds/', and */ - /* contains system-specific files that are always included first when */ - /* building the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ - -#include -#include FT_CONFIG_OPTIONS_H -#include FT_CONFIG_STANDARD_LIBRARY_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled to suit a specific system. The current */ - /* ones are defaults used to compile FreeType in an ANSI C environment */ - /* (16bit compilers are also supported). Copy this file to your own */ - /* `freetype/builds/' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ - - -#define HAVE_UNISTD_H 1 -#define HAVE_FCNTL_H 1 -#define HAVE_STDINT_H 1 - - - /* There are systems (like the Texas Instruments 'C54x) where a `char' */ - /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ - /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ - /* is probably unexpected. */ - /* */ - /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ - /* `char' type. */ - -#ifndef FT_CHAR_BIT -#define FT_CHAR_BIT CHAR_BIT -#endif - - -/* #undef FT_USE_AUTOCONF_SIZEOF_TYPES */ -#ifdef FT_USE_AUTOCONF_SIZEOF_TYPES - -#define SIZEOF_INT 4 -#define SIZEOF_LONG 4 -#define FT_SIZEOF_INT SIZEOF_INT -#define FT_SIZEOF_LONG SIZEOF_LONG - -#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ - - /* Following cpp computation of the bit length of int and long */ - /* is copied from default include/freetype/config/ftconfig.h. */ - /* If any improvement is required for this file, it should be */ - /* applied to the original header file for the builders that */ - /* does not use configure script. */ - - /* The size of an `int' type. */ -#if FT_UINT_MAX == 0xFFFFUL -#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) -#elif FT_UINT_MAX == 0xFFFFFFFFUL -#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) -#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL -#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) -#else -#error "Unsupported size of `int' type!" -#endif - - /* The size of a `long' type. A five-byte `long' (as used e.g. on the */ - /* DM642) is recognized but avoided. */ -#if FT_ULONG_MAX == 0xFFFFFFFFUL -#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) -#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL -#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) -#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL -#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) -#else -#error "Unsupported size of `long' type!" -#endif - -#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */ - - - /* Preferred alignment of data */ -#define FT_ALIGNMENT 8 - - - /* FT_UNUSED is a macro used to indicate that a given parameter is not */ - /* used -- this is only used to get rid of unpleasant compiler warnings */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - - - /*************************************************************************/ - /* */ - /* AUTOMATIC CONFIGURATION MACROS */ - /* */ - /* These macros are computed from the ones defined above. Don't touch */ - /* their definition, unless you know precisely what you are doing. No */ - /* porter should need to mess with them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Mac support */ - /* */ - /* This is the only necessary change, so it is defined here instead */ - /* providing a new configuration file. */ - /* */ -#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ - ( defined( __MWERKS__ ) && defined( macintosh ) ) - /* no Carbon frameworks for 64bit 10.4.x */ -#include "AvailabilityMacros.h" -#if defined( __LP64__ ) && \ - ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 ) -#define DARWIN_NO_CARBON 1 -#else -#define FT_MACINTOSH 1 -#endif - -#elif defined( __SC__ ) || defined( __MRC__ ) - /* Classic MacOS compilers */ -#include "ConditionalMacros.h" -#if TARGET_OS_MAC -#define FT_MACINTOSH 1 -#endif - -#endif - - - /* Fix compiler warning with sgi compiler */ -#if defined( __sgi ) && !defined( __GNUC__ ) -#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) -#pragma set woff 3505 -#endif -#endif - - - /*************************************************************************/ - /* */ - /* IntN types */ - /* */ - /* Used to guarantee the size of some specific integers. */ - /* */ - typedef signed short FT_Int16; - typedef unsigned short FT_UInt16; - -#if FT_SIZEOF_INT == 4 - - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; - -#elif FT_SIZEOF_LONG == 4 - - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; - -#else -#error "no 32bit type found -- please check your configuration files" -#endif - - - /* look up an integer type that is at least 32 bits */ -#if FT_SIZEOF_INT >= 4 - - typedef int FT_Fast; - typedef unsigned int FT_UFast; - -#elif FT_SIZEOF_LONG >= 4 - - typedef long FT_Fast; - typedef unsigned long FT_UFast; - -#endif - - - /* determine whether we have a 64-bit int type for platforms without */ - /* Autoconf */ -#if FT_SIZEOF_LONG == 8 - - /* FT_LONG64 must be defined if a 64-bit type is available */ -#define FT_LONG64 -#define FT_INT64 long - -#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __BORLANDC__ ) /* Borland C++ */ - - /* XXXX: We should probably check the value of __BORLANDC__ in order */ - /* to test the compiler version. */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __WATCOMC__ ) /* Watcom C++ */ - - /* Watcom doesn't provide 64-bit data types */ - -#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ - -#define FT_LONG64 -#define FT_INT64 long long int - -#elif defined( __GNUC__ ) - - /* GCC provides the `long long' type */ -#define FT_LONG64 -#define FT_INT64 long long int - -#endif /* FT_SIZEOF_LONG == 8 */ - - - /*************************************************************************/ - /* */ - /* A 64-bit data type will create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable its use if __STDC__ */ - /* is defined. You can however ignore this rule by defining the */ - /* FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ - /* */ -#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) - -#ifdef __STDC__ - - /* Undefine the 64-bit macros in strict ANSI compilation mode. */ - /* Since `#undef' doesn't survive in configuration header files */ - /* we use the postprocessing facility of AC_CONFIG_HEADERS to */ - /* replace the leading `/' with `#'. */ -#undef FT_LONG64 -#undef FT_INT64 - -#endif /* __STDC__ */ - -#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ - - -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - -#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER - /* Provide assembler fragments for performance-critical functions. */ - /* These must be defined `static __inline__' with GCC. */ - -#ifdef __GNUC__ - -#if defined( __arm__ ) && !defined( __thumb__ ) -#define FT_MULFIX_ASSEMBLER FT_MulFix_arm - - static __inline__ FT_Int32 - FT_MulFix_arm( FT_Int32 a, - FT_Int32 b ) - { - register FT_Int32 t, t2; - - - __asm__ __volatile__ ( - "smull %1, %2, %4, %3\n\t" /* (lo=%1,hi=%2) = a*b */ - "mov %0, %2, asr #31\n\t" /* %0 = (hi >> 31) */ - "add %0, %0, #0x8000\n\t" /* %0 += 0x8000 */ - "adds %1, %1, %0\n\t" /* %1 += %0 */ - "adc %2, %2, #0\n\t" /* %2 += carry */ - "mov %0, %1, lsr #16\n\t" /* %0 = %1 >> 16 */ - "orr %0, %0, %2, lsl #16\n\t" /* %0 |= %2 << 16 */ - : "=r"(a), "=&r"(t2), "=&r"(t) - : "r"(a), "r"(b) ); - return a; - } - -#endif /* __arm__ && !__thumb__ */ - -#if defined( i386 ) -#define FT_MULFIX_ASSEMBLER FT_MulFix_i386 - - static __inline__ FT_Int32 - FT_MulFix_i386( FT_Int32 a, - FT_Int32 b ) - { - register FT_Int32 result; - - - __asm__ __volatile__ ( - "imul %%edx\n" - "movl %%edx, %%ecx\n" - "sarl $31, %%ecx\n" - "addl $0x8000, %%ecx\n" - "addl %%ecx, %%eax\n" - "adcl $0, %%edx\n" - "shrl $16, %%eax\n" - "shll $16, %%edx\n" - "addl %%edx, %%eax\n" - : "=a"(result), "+d"(b) - : "a"(a) - : "%ecx" ); - return result; - } - -#endif /* i386 */ - -#endif /* __GNUC__ */ - -#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */ - - -#ifdef FT_CONFIG_OPTION_INLINE_MULFIX -#ifdef FT_MULFIX_ASSEMBLER -#define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER -#endif -#endif - - -#ifdef FT_MAKE_OPTION_SINGLE_OBJECT - -#define FT_LOCAL( x ) static x -#define FT_LOCAL_DEF( x ) static x - -#else - -#ifdef __cplusplus -#define FT_LOCAL( x ) extern "C" x -#define FT_LOCAL_DEF( x ) extern "C" x -#else -#define FT_LOCAL( x ) extern x -#define FT_LOCAL_DEF( x ) x -#endif - -#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ - - -#ifndef FT_BASE - -#ifdef __cplusplus -#define FT_BASE( x ) extern "C" x -#else -#define FT_BASE( x ) extern x -#endif - -#endif /* !FT_BASE */ - - -#ifndef FT_BASE_DEF - -#ifdef __cplusplus -#define FT_BASE_DEF( x ) x -#else -#define FT_BASE_DEF( x ) x -#endif - -#endif /* !FT_BASE_DEF */ - - -#ifndef FT_EXPORT - -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ - -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ - - -FT_END_HEADER - - -#endif /* __FTCONFIG_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/config/ftheader.h b/GRRLIB/lib/freetype/include/freetype/config/ftheader.h deleted file mode 100644 index b63945d..0000000 --- a/GRRLIB/lib/freetype/include/freetype/config/ftheader.h +++ /dev/null @@ -1,780 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftheader.h */ -/* */ -/* Build macros of the FreeType 2 library. */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -#ifndef __FT_HEADER_H__ -#define __FT_HEADER_H__ - - - /*@***********************************************************************/ - /* */ - /* */ - /* FT_BEGIN_HEADER */ - /* */ - /* */ - /* This macro is used in association with @FT_END_HEADER in header */ - /* files to ensure that the declarations within are properly */ - /* encapsulated in an `extern "C" { .. }' block when included from a */ - /* C++ compiler. */ - /* */ -#ifdef __cplusplus -#define FT_BEGIN_HEADER extern "C" { -#else -#define FT_BEGIN_HEADER /* nothing */ -#endif - - - /*@***********************************************************************/ - /* */ - /* */ - /* FT_END_HEADER */ - /* */ - /* */ - /* This macro is used in association with @FT_BEGIN_HEADER in header */ - /* files to ensure that the declarations within are properly */ - /* encapsulated in an `extern "C" { .. }' block when included from a */ - /* C++ compiler. */ - /* */ -#ifdef __cplusplus -#define FT_END_HEADER } -#else -#define FT_END_HEADER /* nothing */ -#endif - - - /*************************************************************************/ - /* */ - /* Aliases for the FreeType 2 public and configuration files. */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /*
*/ - /* header_file_macros */ - /* */ - /* */ - /* Header File Macros */ - /* */ - /* <Abstract> */ - /* Macro definitions used to #include specific header files. */ - /* */ - /* <Description> */ - /* The following macros are defined to the name of specific */ - /* FreeType~2 header files. They can be used directly in #include */ - /* statements as in: */ - /* */ - /* { */ - /* #include FT_FREETYPE_H */ - /* #include FT_MULTIPLE_MASTERS_H */ - /* #include FT_GLYPH_H */ - /* } */ - /* */ - /* There are several reasons why we are now using macros to name */ - /* public header files. The first one is that such macros are not */ - /* limited to the infamous 8.3~naming rule required by DOS (and */ - /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ - /* */ - /* The second reason is that it allows for more flexibility in the */ - /* way FreeType~2 is installed on a given system. */ - /* */ - /*************************************************************************/ - - - /* configuration files */ - - /************************************************************************* - * - * @macro: - * FT_CONFIG_CONFIG_H - * - * @description: - * A macro used in #include statements to name the file containing - * FreeType~2 configuration data. - * - */ -#ifndef FT_CONFIG_CONFIG_H -#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h> -#endif - - - /************************************************************************* - * - * @macro: - * FT_CONFIG_STANDARD_LIBRARY_H - * - * @description: - * A macro used in #include statements to name the file containing - * FreeType~2 interface to the standard C library functions. - * - */ -#ifndef FT_CONFIG_STANDARD_LIBRARY_H -#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h> -#endif - - - /************************************************************************* - * - * @macro: - * FT_CONFIG_OPTIONS_H - * - * @description: - * A macro used in #include statements to name the file containing - * FreeType~2 project-specific configuration options. - * - */ -#ifndef FT_CONFIG_OPTIONS_H -#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h> -#endif - - - /************************************************************************* - * - * @macro: - * FT_CONFIG_MODULES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType~2 modules that are statically linked to new library - * instances in @FT_Init_FreeType. - * - */ -#ifndef FT_CONFIG_MODULES_H -#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h> -#endif - - /* */ - - /* public headers */ - - /************************************************************************* - * - * @macro: - * FT_FREETYPE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * base FreeType~2 API. - * - */ -#define FT_FREETYPE_H <freetype/freetype.h> - - - /************************************************************************* - * - * @macro: - * FT_ERRORS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType~2 error codes (and messages). - * - * It is included by @FT_FREETYPE_H. - * - */ -#define FT_ERRORS_H <freetype/fterrors.h> - - - /************************************************************************* - * - * @macro: - * FT_MODULE_ERRORS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * list of FreeType~2 module error offsets (and messages). - * - */ -#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> - - - /************************************************************************* - * - * @macro: - * FT_SYSTEM_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 interface to low-level operations (i.e., memory management - * and stream i/o). - * - * It is included by @FT_FREETYPE_H. - * - */ -#define FT_SYSTEM_H <freetype/ftsystem.h> - - - /************************************************************************* - * - * @macro: - * FT_IMAGE_H - * - * @description: - * A macro used in #include statements to name the file containing type - * definitions related to glyph images (i.e., bitmaps, outlines, - * scan-converter parameters). - * - * It is included by @FT_FREETYPE_H. - * - */ -#define FT_IMAGE_H <freetype/ftimage.h> - - - /************************************************************************* - * - * @macro: - * FT_TYPES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * basic data types defined by FreeType~2. - * - * It is included by @FT_FREETYPE_H. - * - */ -#define FT_TYPES_H <freetype/fttypes.h> - - - /************************************************************************* - * - * @macro: - * FT_LIST_H - * - * @description: - * A macro used in #include statements to name the file containing the - * list management API of FreeType~2. - * - * (Most applications will never need to include this file.) - * - */ -#define FT_LIST_H <freetype/ftlist.h> - - - /************************************************************************* - * - * @macro: - * FT_OUTLINE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * scalable outline management API of FreeType~2. - * - */ -#define FT_OUTLINE_H <freetype/ftoutln.h> - - - /************************************************************************* - * - * @macro: - * FT_SIZES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API which manages multiple @FT_Size objects per face. - * - */ -#define FT_SIZES_H <freetype/ftsizes.h> - - - /************************************************************************* - * - * @macro: - * FT_MODULE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * module management API of FreeType~2. - * - */ -#define FT_MODULE_H <freetype/ftmodapi.h> - - - /************************************************************************* - * - * @macro: - * FT_RENDER_H - * - * @description: - * A macro used in #include statements to name the file containing the - * renderer module management API of FreeType~2. - * - */ -#define FT_RENDER_H <freetype/ftrender.h> - - - /************************************************************************* - * - * @macro: - * FT_TYPE1_TABLES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * types and API specific to the Type~1 format. - * - */ -#define FT_TYPE1_TABLES_H <freetype/t1tables.h> - - - /************************************************************************* - * - * @macro: - * FT_TRUETYPE_IDS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * enumeration values which identify name strings, languages, encodings, - * etc. This file really contains a _large_ set of constant macro - * definitions, taken from the TrueType and OpenType specifications. - * - */ -#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h> - - - /************************************************************************* - * - * @macro: - * FT_TRUETYPE_TABLES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * types and API specific to the TrueType (as well as OpenType) format. - * - */ -#define FT_TRUETYPE_TABLES_H <freetype/tttables.h> - - - /************************************************************************* - * - * @macro: - * FT_TRUETYPE_TAGS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of TrueType four-byte `tags' which identify blocks in - * SFNT-based font formats (i.e., TrueType and OpenType). - * - */ -#define FT_TRUETYPE_TAGS_H <freetype/tttags.h> - - - /************************************************************************* - * - * @macro: - * FT_BDF_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which accesses BDF-specific strings from a - * face. - * - */ -#define FT_BDF_H <freetype/ftbdf.h> - - - /************************************************************************* - * - * @macro: - * FT_CID_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which access CID font information from a - * face. - * - */ -#define FT_CID_H <freetype/ftcid.h> - - - /************************************************************************* - * - * @macro: - * FT_GZIP_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which supports gzip-compressed files. - * - */ -#define FT_GZIP_H <freetype/ftgzip.h> - - - /************************************************************************* - * - * @macro: - * FT_LZW_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which supports LZW-compressed files. - * - */ -#define FT_LZW_H <freetype/ftlzw.h> - - - /************************************************************************* - * - * @macro: - * FT_WINFONTS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * definitions of an API which supports Windows FNT files. - * - */ -#define FT_WINFONTS_H <freetype/ftwinfnt.h> - - - /************************************************************************* - * - * @macro: - * FT_GLYPH_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API of the optional glyph management component. - * - */ -#define FT_GLYPH_H <freetype/ftglyph.h> - - - /************************************************************************* - * - * @macro: - * FT_BITMAP_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API of the optional bitmap conversion component. - * - */ -#define FT_BITMAP_H <freetype/ftbitmap.h> - - - /************************************************************************* - * - * @macro: - * FT_BBOX_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API of the optional exact bounding box computation routines. - * - */ -#define FT_BBOX_H <freetype/ftbbox.h> - - - /************************************************************************* - * - * @macro: - * FT_CACHE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * API of the optional FreeType~2 cache sub-system. - * - */ -#define FT_CACHE_H <freetype/ftcache.h> - - - /************************************************************************* - * - * @macro: - * FT_CACHE_IMAGE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `glyph image' API of the FreeType~2 cache sub-system. - * - * It is used to define a cache for @FT_Glyph elements. You can also - * use the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need to - * store small glyph bitmaps, as it will use less memory. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * glyph image-related cache declarations. - * - */ -#define FT_CACHE_IMAGE_H FT_CACHE_H - - - /************************************************************************* - * - * @macro: - * FT_CACHE_SMALL_BITMAPS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `small bitmaps' API of the FreeType~2 cache sub-system. - * - * It is used to define a cache for small glyph bitmaps in a relatively - * memory-efficient way. You can also use the API defined in - * @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, - * including scalable outlines. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * small bitmaps-related cache declarations. - * - */ -#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H - - - /************************************************************************* - * - * @macro: - * FT_CACHE_CHARMAP_H - * - * @description: - * A macro used in #include statements to name the file containing the - * `charmap' API of the FreeType~2 cache sub-system. - * - * This macro is deprecated. Simply include @FT_CACHE_H to have all - * charmap-based cache declarations. - * - */ -#define FT_CACHE_CHARMAP_H FT_CACHE_H - - - /************************************************************************* - * - * @macro: - * FT_MAC_H - * - * @description: - * A macro used in #include statements to name the file containing the - * Macintosh-specific FreeType~2 API. The latter is used to access - * fonts embedded in resource forks. - * - * This header file must be explicitly included by client applications - * compiled on the Mac (note that the base API still works though). - * - */ -#define FT_MAC_H <freetype/ftmac.h> - - - /************************************************************************* - * - * @macro: - * FT_MULTIPLE_MASTERS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * optional multiple-masters management API of FreeType~2. - * - */ -#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h> - - - /************************************************************************* - * - * @macro: - * FT_SFNT_NAMES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * optional FreeType~2 API which accesses embedded `name' strings in - * SFNT-based font formats (i.e., TrueType and OpenType). - * - */ -#define FT_SFNT_NAMES_H <freetype/ftsnames.h> - - - /************************************************************************* - * - * @macro: - * FT_OPENTYPE_VALIDATE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * optional FreeType~2 API which validates OpenType tables (BASE, GDEF, - * GPOS, GSUB, JSTF). - * - */ -#define FT_OPENTYPE_VALIDATE_H <freetype/ftotval.h> - - - /************************************************************************* - * - * @macro: - * FT_GX_VALIDATE_H - * - * @description: - * A macro used in #include statements to name the file containing the - * optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat, - * mort, morx, bsln, just, kern, opbd, trak, prop). - * - */ -#define FT_GX_VALIDATE_H <freetype/ftgxval.h> - - - /************************************************************************* - * - * @macro: - * FT_PFR_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which accesses PFR-specific data. - * - */ -#define FT_PFR_H <freetype/ftpfr.h> - - - /************************************************************************* - * - * @macro: - * FT_STROKER_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which provides functions to stroke outline paths. - */ -#define FT_STROKER_H <freetype/ftstroke.h> - - - /************************************************************************* - * - * @macro: - * FT_SYNTHESIS_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs artificial obliquing and emboldening. - */ -#define FT_SYNTHESIS_H <freetype/ftsynth.h> - - - /************************************************************************* - * - * @macro: - * FT_XFREE86_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which provides functions specific to the XFree86 and - * X.Org X11 servers. - */ -#define FT_XFREE86_H <freetype/ftxf86.h> - - - /************************************************************************* - * - * @macro: - * FT_TRIGONOMETRY_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs trigonometric computations (e.g., - * cosines and arc tangents). - */ -#define FT_TRIGONOMETRY_H <freetype/fttrigon.h> - - - /************************************************************************* - * - * @macro: - * FT_LCD_FILTER_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs color filtering for subpixel rendering. - */ -#define FT_LCD_FILTER_H <freetype/ftlcdfil.h> - - - /************************************************************************* - * - * @macro: - * FT_UNPATENTED_HINTING_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs color filtering for subpixel rendering. - */ -#define FT_UNPATENTED_HINTING_H <freetype/ttunpat.h> - - - /************************************************************************* - * - * @macro: - * FT_INCREMENTAL_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which performs color filtering for subpixel rendering. - */ -#define FT_INCREMENTAL_H <freetype/ftincrem.h> - - - /************************************************************************* - * - * @macro: - * FT_GASP_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which returns entries from the TrueType GASP table. - */ -#define FT_GASP_H <freetype/ftgasp.h> - - - /************************************************************************* - * - * @macro: - * FT_ADVANCES_H - * - * @description: - * A macro used in #include statements to name the file containing the - * FreeType~2 API which returns individual and ranged glyph advances. - */ -#define FT_ADVANCES_H <freetype/ftadvanc.h> - - - /* */ - -#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h> - - - /* The internals of the cache sub-system are no longer exposed. We */ - /* default to FT_CACHE_H at the moment just in case, but we know of */ - /* no rogue client that uses them. */ - /* */ -#define FT_CACHE_MANAGER_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_MRU_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_MANAGER_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_CACHE_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_GLYPH_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_IMAGE_H <freetype/ftcache.h> -#define FT_CACHE_INTERNAL_SBITS_H <freetype/ftcache.h> - - -#define FT_INCREMENTAL_H <freetype/ftincrem.h> - -#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h> - - - /* - * Include internal headers definitions from <freetype/internal/...> - * only when building the library. - */ -#ifdef FT2_BUILD_LIBRARY -#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h> -#include FT_INTERNAL_INTERNAL_H -#endif /* FT2_BUILD_LIBRARY */ - - -#endif /* __FT2_BUILD_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/config/ftmodule.h b/GRRLIB/lib/freetype/include/freetype/config/ftmodule.h deleted file mode 100644 index b729977..0000000 --- a/GRRLIB/lib/freetype/include/freetype/config/ftmodule.h +++ /dev/null @@ -1,20 +0,0 @@ -/* This is a generated file. */ -FT_USE_MODULE( FT_Driver_ClassRec, tt_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, t1_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, cff_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, pfr_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class ) -FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class ) -FT_USE_MODULE( FT_Module_Class, sfnt_module_class ) -FT_USE_MODULE( FT_Module_Class, autofit_module_class ) -FT_USE_MODULE( FT_Module_Class, pshinter_module_class ) -FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class ) -FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class ) -FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcd_renderer_class ) -FT_USE_MODULE( FT_Renderer_Class, ft_smooth_lcdv_renderer_class ) -FT_USE_MODULE( FT_Module_Class, psaux_module_class ) -FT_USE_MODULE( FT_Module_Class, psnames_module_class ) -/* EOF */ diff --git a/GRRLIB/lib/freetype/include/freetype/config/ftoption.h b/GRRLIB/lib/freetype/include/freetype/config/ftoption.h deleted file mode 100644 index 759b3a3..0000000 --- a/GRRLIB/lib/freetype/include/freetype/config/ftoption.h +++ /dev/null @@ -1,708 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoption.h */ -/* */ -/* User-selectable configuration macros (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* USER-SELECTABLE CONFIGURATION MACROS */ - /* */ - /* This file contains the default configuration macro definitions for */ - /* a standard build of the FreeType library. There are three ways to */ - /* use this file to build project-specific versions of the library: */ - /* */ - /* - You can modify this file by hand, but this is not recommended in */ - /* cases where you would like to build several versions of the */ - /* library from a single source directory. */ - /* */ - /* - You can put a copy of this file in your build directory, more */ - /* precisely in `$BUILD/freetype/config/ftoption.h', where `$BUILD' */ - /* is the name of a directory that is included _before_ the FreeType */ - /* include path during compilation. */ - /* */ - /* The default FreeType Makefiles and Jamfiles use the build */ - /* directory `builds/<system>' by default, but you can easily change */ - /* that for your own projects. */ - /* */ - /* - Copy the file <ft2build.h> to `$BUILD/ft2build.h' and modify it */ - /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ - /* locate this file during the build. For example, */ - /* */ - /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ - /* #include <freetype/config/ftheader.h> */ - /* */ - /* will use `$BUILD/myftoptions.h' instead of this file for macro */ - /* definitions. */ - /* */ - /* Note also that you can similarly pre-define the macro */ - /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ - /* that are statically linked to the library at compile time. By */ - /* default, this file is <freetype/config/ftmodule.h>. */ - /* */ - /* We highly recommend using the third method whenever possible. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Uncomment the line below if you want to activate sub-pixel rendering */ - /* (a.k.a. LCD rendering, or ClearType) in this build of the library. */ - /* */ - /* Note that this feature is covered by several Microsoft patents */ - /* and should not be activated in any default build of the library. */ - /* */ - /* This macro has no impact on the FreeType API, only on its */ - /* _implementation_. For example, using FT_RENDER_MODE_LCD when calling */ - /* FT_Render_Glyph still generates a bitmap that is 3 times larger than */ - /* the original size; the difference will be that each triplet of */ - /* subpixels has R=G=B. */ - /* */ - /* This is done to allow FreeType clients to run unmodified, forcing */ - /* them to display normal gray-level anti-aliased glyphs. */ - /* */ -/* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */ - - - /*************************************************************************/ - /* */ - /* Many compilers provide a non-ANSI 64-bit data type that can be used */ - /* by FreeType to speed up some computations. However, this will create */ - /* some problems when compiling the library in strict ANSI mode. */ - /* */ - /* For this reason, the use of 64-bit integers is normally disabled when */ - /* the __STDC__ macro is defined. You can however disable this by */ - /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ - /* */ - /* For most compilers, this will only create compilation warnings when */ - /* building the library. */ - /* */ - /* ObNote: The compiler-specific 64-bit integers are detected in the */ - /* file `ftconfig.h' either statically or through the */ - /* `configure' script on supported platforms. */ - /* */ -#undef FT_CONFIG_OPTION_FORCE_INT64 - - - /*************************************************************************/ - /* */ - /* If this macro is defined, do not try to use an assembler version of */ - /* performance-critical functions (e.g. FT_MulFix). You should only do */ - /* that to verify that the assembler function works properly, or to */ - /* execute benchmark tests of the various implementations. */ -/* #define FT_CONFIG_OPTION_NO_ASSEMBLER */ - - - /*************************************************************************/ - /* */ - /* If this macro is defined, try to use an inlined assembler version of */ - /* the `FT_MulFix' function, which is a `hotspot' when loading and */ - /* hinting glyphs, and which should be executed as fast as possible. */ - /* */ - /* Note that if your compiler or CPU is not supported, this will default */ - /* to the standard and portable implementation found in `ftcalc.c'. */ - /* */ -#define FT_CONFIG_OPTION_INLINE_MULFIX - - - /*************************************************************************/ - /* */ - /* LZW-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* `compress' program. This is mostly used to parse many of the PCF */ - /* files that come with various X11 distributions. The implementation */ - /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ - /* (see src/lzw/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. */ - /* */ -#define FT_CONFIG_OPTION_USE_LZW - - - /*************************************************************************/ - /* */ - /* Gzip-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* `gzip' program. This is mostly used to parse many of the PCF files */ - /* that come with XFree86. The implementation uses `zlib' to */ - /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. See also */ - /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ - /* */ -#define FT_CONFIG_OPTION_USE_ZLIB - - - /*************************************************************************/ - /* */ - /* ZLib library selection */ - /* */ - /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ - /* It allows FreeType's `ftgzip' component to link to the system's */ - /* installation of the ZLib library. This is useful on systems like */ - /* Unix or VMS where it generally is already available. */ - /* */ - /* If you let it undefined, the component will use its own copy */ - /* of the zlib sources instead. These have been modified to be */ - /* included directly within the component and *not* export external */ - /* function names. This allows you to link any program with FreeType */ - /* _and_ ZLib without linking conflicts. */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ -/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ - - - /*************************************************************************/ - /* */ - /* DLL export compilation */ - /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ - /* */ - /* FT_EXPORT( return_type ) */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* */ - /* */ - /* FT_EXPORT_DEF( return_type ) */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* */ - /* You can provide your own implementation of FT_EXPORT and */ - /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ - /* will be later automatically defined as `extern return_type' to */ - /* allow normal compilation. */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ -/* #define FT_EXPORT(x) extern x */ -/* #define FT_EXPORT_DEF(x) x */ - - - /*************************************************************************/ - /* */ - /* Glyph Postscript Names handling */ - /* */ - /* By default, FreeType 2 is compiled with the `psnames' module. This */ - /* module is in charge of converting a glyph name string into a */ - /* Unicode value, or return a Macintosh standard glyph name for the */ - /* use with the TrueType `post' table. */ - /* */ - /* Undefine this macro if you do not want `psnames' compiled in your */ - /* build of FreeType. This has the following effects: */ - /* */ - /* - The TrueType driver will provide its own set of glyph names, */ - /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ - /* */ - /* - The Type 1 driver will not be able to synthesize a Unicode */ - /* charmap out of the glyphs found in the fonts. */ - /* */ - /* You would normally undefine this configuration macro when building */ - /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ - /* */ -#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Postscript Names to Unicode Values support */ - /* */ - /* By default, FreeType 2 is built with the `PSNames' module compiled */ - /* in. Among other things, the module is used to convert a glyph name */ - /* into a Unicode value. This is especially useful in order to */ - /* synthesize on the fly a Unicode charmap from the CFF/Type 1 driver */ - /* through a big table named the `Adobe Glyph List' (AGL). */ - /* */ - /* Undefine this macro if you do not want the Adobe Glyph List */ - /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthesize a Unicode charmap out of the glyphs found in the */ - /* fonts. */ - /* */ -#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - - /*************************************************************************/ - /* */ - /* Support for Mac fonts */ - /* */ - /* Define this macro if you want support for outline fonts in Mac */ - /* format (mac dfont, mac resource, macbinary containing a mac */ - /* resource) on non-Mac platforms. */ - /* */ - /* Note that the `FOND' resource isn't checked. */ - /* */ -#define FT_CONFIG_OPTION_MAC_FONTS - - - /*************************************************************************/ - /* */ - /* Guessing methods to access embedded resource forks */ - /* */ - /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ - /* GNU/Linux). */ - /* */ - /* Resource forks which include fonts data are stored sometimes in */ - /* locations which users or developers don't expected. In some cases, */ - /* resource forks start with some offset from the head of a file. In */ - /* other cases, the actual resource fork is stored in file different */ - /* from what the user specifies. If this option is activated, */ - /* FreeType tries to guess whether such offsets or different file */ - /* names must be used. */ - /* */ - /* Note that normal, direct access of resource forks is controlled via */ - /* the FT_CONFIG_OPTION_MAC_FONTS option. */ - /* */ -#ifdef FT_CONFIG_OPTION_MAC_FONTS -#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK -#endif - - - /*************************************************************************/ - /* */ - /* Allow the use of FT_Incremental_Interface to load typefaces that */ - /* contain no glyph data, but supply it via a callback function. */ - /* This allows FreeType to be used with the PostScript language, using */ - /* the GhostScript interpreter. */ - /* */ -/* #define FT_CONFIG_OPTION_INCREMENTAL */ - - - /*************************************************************************/ - /* */ - /* The size in bytes of the render pool used by the scan-line converter */ - /* to do all of its work. */ - /* */ - /* This must be greater than 4KByte if you use FreeType to rasterize */ - /* glyphs; otherwise, you may set it to zero to avoid unnecessary */ - /* allocation of the render pool. */ - /* */ -#define FT_RENDER_POOL_SIZE 16384L - - - /*************************************************************************/ - /* */ - /* FT_MAX_MODULES */ - /* */ - /* The maximum number of modules that can be registered in a single */ - /* FreeType library object. 32 is the default. */ - /* */ -#define FT_MAX_MODULES 32 - - - /*************************************************************************/ - /* */ - /* Debug level */ - /* */ - /* FreeType can be compiled in debug or trace mode. In debug mode, */ - /* errors are reported through the `ftdebug' component. In trace */ - /* mode, additional messages are sent to the standard output during */ - /* execution. */ - /* */ - /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ - /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ - /* */ - /* Don't define any of these macros to compile in `release' mode! */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ -/* #define FT_DEBUG_LEVEL_ERROR */ -/* #define FT_DEBUG_LEVEL_TRACE */ - - - /*************************************************************************/ - /* */ - /* Memory Debugging */ - /* */ - /* FreeType now comes with an integrated memory debugger that is */ - /* capable of detecting simple errors like memory leaks or double */ - /* deletes. To compile it within your build of the library, you */ - /* should define FT_DEBUG_MEMORY here. */ - /* */ - /* Note that the memory debugger is only activated at runtime when */ - /* when the _environment_ variable `FT2_DEBUG_MEMORY' is defined also! */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ -/* #define FT_DEBUG_MEMORY */ - - - /*************************************************************************/ - /* */ - /* Module errors */ - /* */ - /* If this macro is set (which is _not_ the default), the higher byte */ - /* of an error code gives the module in which the error has occurred, */ - /* while the lower byte is the real error code. */ - /* */ - /* Setting this macro makes sense for debugging purposes only, since */ - /* it would break source compatibility of certain programs that use */ - /* FreeType 2. */ - /* */ - /* More details can be found in the files ftmoderr.h and fterrors.h. */ - /* */ -#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS - - - /*************************************************************************/ - /* */ - /* Position Independent Code */ - /* */ - /* If this macro is set (which is _not_ the default), FreeType2 will */ - /* avoid creating constants that require address fixups. Instead the */ - /* constants will be moved into a struct and additional intialization */ - /* code will be used. */ - /* */ - /* Setting this macro is needed for systems that prohibit address */ - /* fixups, such as BREW. */ - /* */ -/* #define FT_CONFIG_OPTION_PIC */ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ - /* embedded bitmaps in all formats using the SFNT module (namely */ - /* TrueType & OpenType). */ - /* */ -#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ - /* load and enumerate the glyph Postscript names in a TrueType or */ - /* OpenType file. */ - /* */ - /* Note that when you do not compile the `PSNames' module by undefining */ - /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ - /* contain additional code used to read the PS Names table from a font. */ - /* */ - /* (By default, the module uses `PSNames' to extract glyph names.) */ - /* */ -#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ - /* access the internal name table in a SFNT-based format like TrueType */ - /* or OpenType. The name table contains various strings used to */ - /* describe the font, like family name, copyright, version, etc. It */ - /* does not contain any glyph name though. */ - /* */ - /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftsnames.h'. */ - /* */ -#define TT_CONFIG_OPTION_SFNT_NAMES - - - /*************************************************************************/ - /* */ - /* TrueType CMap support */ - /* */ - /* Here you can fine-tune which TrueType CMap table format shall be */ - /* supported. */ -#define TT_CONFIG_CMAP_FORMAT_0 -#define TT_CONFIG_CMAP_FORMAT_2 -#define TT_CONFIG_CMAP_FORMAT_4 -#define TT_CONFIG_CMAP_FORMAT_6 -#define TT_CONFIG_CMAP_FORMAT_8 -#define TT_CONFIG_CMAP_FORMAT_10 -#define TT_CONFIG_CMAP_FORMAT_12 -#define TT_CONFIG_CMAP_FORMAT_13 -#define TT_CONFIG_CMAP_FORMAT_14 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ - /* a bytecode interpreter in the TrueType driver. Note that there are */ - /* important patent issues related to the use of the interpreter. */ - /* */ - /* By undefining this, you will only compile the code necessary to load */ - /* TrueType glyphs without hinting. */ - /* */ - /* Do not #undef this macro here, since the build system might */ - /* define it for certain configurations only. */ - /* */ -/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - - /*************************************************************************/ - /* */ - /* If you define TT_CONFIG_OPTION_UNPATENTED_HINTING, a special version */ - /* of the TrueType bytecode interpreter is used that doesn't implement */ - /* any of the patented opcodes and algorithms. Note that the */ - /* TT_CONFIG_OPTION_UNPATENTED_HINTING macro is *ignored* if you define */ - /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER; in other words, either define */ - /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER or */ - /* TT_CONFIG_OPTION_UNPATENTED_HINTING but not both at the same time. */ - /* */ - /* This macro is only useful for a small number of font files (mostly */ - /* for Asian scripts) that require bytecode interpretation to properly */ - /* load glyphs. For all other fonts, this produces unpleasant results, */ - /* thus the unpatented interpreter is never used to load glyphs from */ - /* TrueType fonts unless one of the following two options is used. */ - /* */ - /* - The unpatented interpreter is explicitly activated by the user */ - /* through the FT_PARAM_TAG_UNPATENTED_HINTING parameter tag */ - /* when opening the FT_Face. */ - /* */ - /* - FreeType detects that the FT_Face corresponds to one of the */ - /* `trick' fonts (e.g., `Mingliu') it knows about. The font engine */ - /* contains a hard-coded list of font names and other matching */ - /* parameters (see function `tt_face_init' in file */ - /* `src/truetype/ttobjs.c'). */ - /* */ - /* Here a sample code snippet for using FT_PARAM_TAG_UNPATENTED_HINTING. */ - /* */ - /* { */ - /* FT_Parameter parameter; */ - /* FT_Open_Args open_args; */ - /* */ - /* */ - /* parameter.tag = FT_PARAM_TAG_UNPATENTED_HINTING; */ - /* */ - /* open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; */ - /* open_args.pathname = my_font_pathname; */ - /* open_args.num_params = 1; */ - /* open_args.params = ¶meter; */ - /* */ - /* error = FT_Open_Face( library, &open_args, index, &face ); */ - /* ... */ - /* } */ - /* */ -#define TT_CONFIG_OPTION_UNPATENTED_HINTING - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ - /* bytecode interpreter with a huge switch statement, rather than a call */ - /* table. This results in smaller and faster code for a number of */ - /* architectures. */ - /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ - /* */ -#define TT_CONFIG_OPTION_INTERPRETER_SWITCH - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ - /* TrueType glyph loader to use Apple's definition of how to handle */ - /* component offsets in composite glyphs. */ - /* */ - /* Apple and MS disagree on the default behavior of component offsets */ - /* in composites. Apple says that they should be scaled by the scaling */ - /* factors in the transformation matrix (roughly, it's more complex) */ - /* while MS says they should not. OpenType defines two bits in the */ - /* composite flags array which can be used to disambiguate, but old */ - /* fonts will not have them. */ - /* */ - /* http://partners.adobe.com/asn/developer/opentype/glyf.html */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ - /* */ -#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ - /* support for Apple's distortable font technology (fvar, gvar, cvar, */ - /* and avar tables). This has many similarities to Type 1 Multiple */ - /* Masters support. */ - /* */ -#define TT_CONFIG_OPTION_GX_VAR_SUPPORT - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BDF if you want to include support for */ - /* an embedded `BDF ' table within SFNT-based bitmap formats. */ - /* */ -#define TT_CONFIG_OPTION_BDF - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ - /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ - /* required. */ - /* */ -#define T1_MAX_DICT_DEPTH 5 - - - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ -#define T1_MAX_SUBRS_CALLS 16 - - - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ - /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ - /* */ -#define T1_MAX_CHARSTRINGS_OPERANDS 256 - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ - /* files into an existing face. Note that if set, the T1 driver will be */ - /* unable to produce kerning distances. */ - /* */ -#undef T1_CONFIG_OPTION_NO_AFM - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of the Multiple Masters font support in the Type 1 */ - /* driver. */ - /* */ -#undef T1_CONFIG_OPTION_NO_MM_SUPPORT - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** A U T O F I T M O D U L E C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Compile autofit module with CJK (Chinese, Japanese, Korean) script */ - /* support. */ - /* */ -#define AF_CONFIG_OPTION_CJK - - /*************************************************************************/ - /* */ - /* Compile autofit module with Indic script support. */ - /* */ -#define AF_CONFIG_OPTION_INDIC - - /* */ - - - /* - * Define this variable if you want to keep the layout of internal - * structures that was used prior to FreeType 2.2. This also compiles in - * a few obsolete functions to avoid linking problems on typical Unix - * distributions. - * - * For embedded systems or building a new distribution from scratch, it - * is recommended to disable the macro since it reduces the library's code - * size and activates a few memory-saving optimizations as well. - */ -#define FT_CONFIG_OPTION_OLD_INTERNALS - - - /* - * This macro is defined if either unpatented or native TrueType - * hinting is requested by the definitions above. - */ -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER -#define TT_USE_BYTECODE_INTERPRETER -#undef TT_CONFIG_OPTION_UNPATENTED_HINTING -#elif defined TT_CONFIG_OPTION_UNPATENTED_HINTING -#define TT_USE_BYTECODE_INTERPRETER -#endif - -FT_END_HEADER - - -#endif /* __FTOPTION_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/config/ftstdlib.h b/GRRLIB/lib/freetype/include/freetype/config/ftstdlib.h deleted file mode 100644 index 30ec14e..0000000 --- a/GRRLIB/lib/freetype/include/freetype/config/ftstdlib.h +++ /dev/null @@ -1,173 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftstdlib.h */ -/* */ -/* ANSI-specific library and header configuration file (specification */ -/* only). */ -/* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to group all #includes to the ANSI C library that */ - /* FreeType normally requires. It also defines macros to rename the */ - /* standard functions within the FreeType source code. */ - /* */ - /* Load a file which defines __FTSTDLIB_H__ before this one to override */ - /* it. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTSTDLIB_H__ -#define __FTSTDLIB_H__ - - -#include <stddef.h> - -#define ft_ptrdiff_t ptrdiff_t - - - /**********************************************************************/ - /* */ - /* integer limits */ - /* */ - /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ - /* of `int' and `long' in bytes at compile-time. So far, this works */ - /* for all platforms the library has been tested on. */ - /* */ - /* Note that on the extremely rare platforms that do not provide */ - /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ - /* old Crays where `int' is 36 bits), we do not make any guarantee */ - /* about the correct behaviour of FT2 with all fonts. */ - /* */ - /* In these case, `ftconfig.h' will refuse to compile anyway with a */ - /* message like `couldn't find 32-bit type' or something similar. */ - /* */ - /**********************************************************************/ - - -#include <limits.h> - -#define FT_CHAR_BIT CHAR_BIT -#define FT_INT_MAX INT_MAX -#define FT_INT_MIN INT_MIN -#define FT_UINT_MAX UINT_MAX -#define FT_ULONG_MAX ULONG_MAX - - - /**********************************************************************/ - /* */ - /* character and string processing */ - /* */ - /**********************************************************************/ - - -#include <string.h> - -#define ft_memchr memchr -#define ft_memcmp memcmp -#define ft_memcpy memcpy -#define ft_memmove memmove -#define ft_memset memset -#define ft_strcat strcat -#define ft_strcmp strcmp -#define ft_strcpy strcpy -#define ft_strlen strlen -#define ft_strncmp strncmp -#define ft_strncpy strncpy -#define ft_strrchr strrchr -#define ft_strstr strstr - - - /**********************************************************************/ - /* */ - /* file handling */ - /* */ - /**********************************************************************/ - - -#include <stdio.h> - -#define FT_FILE FILE -#define ft_fclose fclose -#define ft_fopen fopen -#define ft_fread fread -#define ft_fseek fseek -#define ft_ftell ftell -#define ft_sprintf sprintf - - - /**********************************************************************/ - /* */ - /* sorting */ - /* */ - /**********************************************************************/ - - -#include <stdlib.h> - -#define ft_qsort qsort - - - /**********************************************************************/ - /* */ - /* memory allocation */ - /* */ - /**********************************************************************/ - - -#define ft_scalloc calloc -#define ft_sfree free -#define ft_smalloc malloc -#define ft_srealloc realloc - - - /**********************************************************************/ - /* */ - /* miscellaneous */ - /* */ - /**********************************************************************/ - - -#define ft_atol atol -#define ft_labs labs - - - /**********************************************************************/ - /* */ - /* execution control */ - /* */ - /**********************************************************************/ - - -#include <setjmp.h> - -#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ - /* jmp_buf is defined as a macro */ - /* on certain platforms */ - -#define ft_longjmp longjmp -#define ft_setjmp( b ) setjmp( *(jmp_buf*) &(b) ) /* same thing here */ - - - /* the following is only used for debugging purposes, i.e., if */ - /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ - -#include <stdarg.h> - - -#endif /* __FTSTDLIB_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/freetype.h b/GRRLIB/lib/freetype/include/freetype/freetype.h deleted file mode 100644 index 9e74f11..0000000 --- a/GRRLIB/lib/freetype/include/freetype/freetype.h +++ /dev/null @@ -1,3868 +0,0 @@ -/***************************************************************************/ -/* */ -/* freetype.h */ -/* */ -/* FreeType high-level API and common types (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef FT_FREETYPE_H -#error "`ft2build.h' hasn't been included yet!" -#error "Please always use macros to include FreeType header files." -#error "Example:" -#error " #include <ft2build.h>" -#error " #include FT_FREETYPE_H" -#endif - - -#ifndef __FREETYPE_H__ -#define __FREETYPE_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_ERRORS_H -#include FT_TYPES_H - - -FT_BEGIN_HEADER - - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* user_allocation */ - /* */ - /* <Title> */ - /* User allocation */ - /* */ - /* <Abstract> */ - /* How client applications should allocate FreeType data structures. */ - /* */ - /* <Description> */ - /* FreeType assumes that structures allocated by the user and passed */ - /* as arguments are zeroed out except for the actual data. In other */ - /* words, it is recommended to use `calloc' (or variants of it) */ - /* instead of `malloc' for allocation. */ - /* */ - /*************************************************************************/ - - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* B A S I C T Y P E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* base_interface */ - /* */ - /* <Title> */ - /* Base Interface */ - /* */ - /* <Abstract> */ - /* The FreeType~2 base font interface. */ - /* */ - /* <Description> */ - /* This section describes the public high-level API of FreeType~2. */ - /* */ - /* <Order> */ - /* FT_Library */ - /* FT_Face */ - /* FT_Size */ - /* FT_GlyphSlot */ - /* FT_CharMap */ - /* FT_Encoding */ - /* */ - /* FT_FaceRec */ - /* */ - /* FT_FACE_FLAG_SCALABLE */ - /* FT_FACE_FLAG_FIXED_SIZES */ - /* FT_FACE_FLAG_FIXED_WIDTH */ - /* FT_FACE_FLAG_HORIZONTAL */ - /* FT_FACE_FLAG_VERTICAL */ - /* FT_FACE_FLAG_SFNT */ - /* FT_FACE_FLAG_KERNING */ - /* FT_FACE_FLAG_MULTIPLE_MASTERS */ - /* FT_FACE_FLAG_GLYPH_NAMES */ - /* FT_FACE_FLAG_EXTERNAL_STREAM */ - /* FT_FACE_FLAG_FAST_GLYPHS */ - /* FT_FACE_FLAG_HINTER */ - /* */ - /* FT_STYLE_FLAG_BOLD */ - /* FT_STYLE_FLAG_ITALIC */ - /* */ - /* FT_SizeRec */ - /* FT_Size_Metrics */ - /* */ - /* FT_GlyphSlotRec */ - /* FT_Glyph_Metrics */ - /* FT_SubGlyph */ - /* */ - /* FT_Bitmap_Size */ - /* */ - /* FT_Init_FreeType */ - /* FT_Done_FreeType */ - /* */ - /* FT_New_Face */ - /* FT_Done_Face */ - /* FT_New_Memory_Face */ - /* FT_Open_Face */ - /* FT_Open_Args */ - /* FT_Parameter */ - /* FT_Attach_File */ - /* FT_Attach_Stream */ - /* */ - /* FT_Set_Char_Size */ - /* FT_Set_Pixel_Sizes */ - /* FT_Request_Size */ - /* FT_Select_Size */ - /* FT_Size_Request_Type */ - /* FT_Size_Request */ - /* FT_Set_Transform */ - /* FT_Load_Glyph */ - /* FT_Get_Char_Index */ - /* FT_Get_Name_Index */ - /* FT_Load_Char */ - /* */ - /* FT_OPEN_MEMORY */ - /* FT_OPEN_STREAM */ - /* FT_OPEN_PATHNAME */ - /* FT_OPEN_DRIVER */ - /* FT_OPEN_PARAMS */ - /* */ - /* FT_LOAD_DEFAULT */ - /* FT_LOAD_RENDER */ - /* FT_LOAD_MONOCHROME */ - /* FT_LOAD_LINEAR_DESIGN */ - /* FT_LOAD_NO_SCALE */ - /* FT_LOAD_NO_HINTING */ - /* FT_LOAD_NO_BITMAP */ - /* FT_LOAD_CROP_BITMAP */ - /* */ - /* FT_LOAD_VERTICAL_LAYOUT */ - /* FT_LOAD_IGNORE_TRANSFORM */ - /* FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH */ - /* FT_LOAD_FORCE_AUTOHINT */ - /* FT_LOAD_NO_RECURSE */ - /* FT_LOAD_PEDANTIC */ - /* */ - /* FT_LOAD_TARGET_NORMAL */ - /* FT_LOAD_TARGET_LIGHT */ - /* FT_LOAD_TARGET_MONO */ - /* FT_LOAD_TARGET_LCD */ - /* FT_LOAD_TARGET_LCD_V */ - /* */ - /* FT_Render_Glyph */ - /* FT_Render_Mode */ - /* FT_Get_Kerning */ - /* FT_Kerning_Mode */ - /* FT_Get_Track_Kerning */ - /* FT_Get_Glyph_Name */ - /* FT_Get_Postscript_Name */ - /* */ - /* FT_CharMapRec */ - /* FT_Select_Charmap */ - /* FT_Set_Charmap */ - /* FT_Get_Charmap_Index */ - /* */ - /* FT_FSTYPE_INSTALLABLE_EMBEDDING */ - /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING */ - /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING */ - /* FT_FSTYPE_EDITABLE_EMBEDDING */ - /* FT_FSTYPE_NO_SUBSETTING */ - /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY */ - /* */ - /* FT_Get_FSType_Flags */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Glyph_Metrics */ - /* */ - /* <Description> */ - /* A structure used to model the metrics of a single glyph. The */ - /* values are expressed in 26.6 fractional pixel format; if the flag */ - /* @FT_LOAD_NO_SCALE has been used while loading the glyph, values */ - /* are expressed in font units instead. */ - /* */ - /* <Fields> */ - /* width :: */ - /* The glyph's width. */ - /* */ - /* height :: */ - /* The glyph's height. */ - /* */ - /* horiBearingX :: */ - /* Left side bearing for horizontal layout. */ - /* */ - /* horiBearingY :: */ - /* Top side bearing for horizontal layout. */ - /* */ - /* horiAdvance :: */ - /* Advance width for horizontal layout. */ - /* */ - /* vertBearingX :: */ - /* Left side bearing for vertical layout. */ - /* */ - /* vertBearingY :: */ - /* Top side bearing for vertical layout. */ - /* */ - /* vertAdvance :: */ - /* Advance height for vertical layout. */ - /* */ - typedef struct FT_Glyph_Metrics_ - { - FT_Pos width; - FT_Pos height; - - FT_Pos horiBearingX; - FT_Pos horiBearingY; - FT_Pos horiAdvance; - - FT_Pos vertBearingX; - FT_Pos vertBearingY; - FT_Pos vertAdvance; - - } FT_Glyph_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Bitmap_Size */ - /* */ - /* <Description> */ - /* This structure models the metrics of a bitmap strike (i.e., a set */ - /* of glyphs for a given point size and resolution) in a bitmap font. */ - /* It is used for the `available_sizes' field of @FT_Face. */ - /* */ - /* <Fields> */ - /* height :: The vertical distance, in pixels, between two */ - /* consecutive baselines. It is always positive. */ - /* */ - /* width :: The average width, in pixels, of all glyphs in the */ - /* strike. */ - /* */ - /* size :: The nominal size of the strike in 26.6 fractional */ - /* points. This field is not very useful. */ - /* */ - /* x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional */ - /* pixels. */ - /* */ - /* y_ppem :: The vertical ppem (nominal height) in 26.6 fractional */ - /* pixels. */ - /* */ - /* <Note> */ - /* Windows FNT: */ - /* The nominal size given in a FNT font is not reliable. Thus when */ - /* the driver finds it incorrect, it sets `size' to some calculated */ - /* values and sets `x_ppem' and `y_ppem' to the pixel width and */ - /* height given in the font, respectively. */ - /* */ - /* TrueType embedded bitmaps: */ - /* `size', `width', and `height' values are not contained in the */ - /* bitmap strike itself. They are computed from the global font */ - /* parameters. */ - /* */ - typedef struct FT_Bitmap_Size_ - { - FT_Short height; - FT_Short width; - - FT_Pos size; - - FT_Pos x_ppem; - FT_Pos y_ppem; - - } FT_Bitmap_Size; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* O B J E C T C L A S S E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Library */ - /* */ - /* <Description> */ - /* A handle to a FreeType library instance. Each `library' is */ - /* completely independent from the others; it is the `root' of a set */ - /* of objects like fonts, faces, sizes, etc. */ - /* */ - /* It also embeds a memory manager (see @FT_Memory), as well as a */ - /* scan-line converter object (see @FT_Raster). */ - /* */ - /* For multi-threading applications each thread should have its own */ - /* FT_Library object. */ - /* */ - /* <Note> */ - /* Library objects are normally created by @FT_Init_FreeType, and */ - /* destroyed with @FT_Done_FreeType. */ - /* */ - typedef struct FT_LibraryRec_ *FT_Library; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Module */ - /* */ - /* <Description> */ - /* A handle to a given FreeType module object. Each module can be a */ - /* font driver, a renderer, or anything else that provides services */ - /* to the formers. */ - /* */ - typedef struct FT_ModuleRec_* FT_Module; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Driver */ - /* */ - /* <Description> */ - /* A handle to a given FreeType font driver object. Each font driver */ - /* is a special module capable of creating faces from font files. */ - /* */ - typedef struct FT_DriverRec_* FT_Driver; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Renderer */ - /* */ - /* <Description> */ - /* A handle to a given FreeType renderer. A renderer is a special */ - /* module in charge of converting a glyph image to a bitmap, when */ - /* necessary. Each renderer supports a given glyph image format, and */ - /* one or more target surface depths. */ - /* */ - typedef struct FT_RendererRec_* FT_Renderer; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Face */ - /* */ - /* <Description> */ - /* A handle to a given typographic face object. A face object models */ - /* a given typeface, in a given style. */ - /* */ - /* <Note> */ - /* Each face object also owns a single @FT_GlyphSlot object, as well */ - /* as one or more @FT_Size objects. */ - /* */ - /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ - /* a given filepathname or a custom input stream. */ - /* */ - /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ - /* */ - /* <Also> */ - /* See @FT_FaceRec for the publicly accessible fields of a given face */ - /* object. */ - /* */ - typedef struct FT_FaceRec_* FT_Face; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Size */ - /* */ - /* <Description> */ - /* A handle to an object used to model a face scaled to a given */ - /* character size. */ - /* */ - /* <Note> */ - /* Each @FT_Face has an _active_ @FT_Size object that is used by */ - /* functions like @FT_Load_Glyph to determine the scaling */ - /* transformation which is used to load and hint glyphs and metrics. */ - /* */ - /* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, */ - /* @FT_Request_Size or even @FT_Select_Size to change the content */ - /* (i.e., the scaling values) of the active @FT_Size. */ - /* */ - /* You can use @FT_New_Size to create additional size objects for a */ - /* given @FT_Face, but they won't be used by other functions until */ - /* you activate it through @FT_Activate_Size. Only one size can be */ - /* activated at any given time per face. */ - /* */ - /* <Also> */ - /* See @FT_SizeRec for the publicly accessible fields of a given size */ - /* object. */ - /* */ - typedef struct FT_SizeRec_* FT_Size; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_GlyphSlot */ - /* */ - /* <Description> */ - /* A handle to a given `glyph slot'. A slot is a container where it */ - /* is possible to load any of the glyphs contained in its parent */ - /* face. */ - /* */ - /* In other words, each time you call @FT_Load_Glyph or */ - /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ - /* i.e., the glyph's metrics, its image (bitmap or outline), and */ - /* other control information. */ - /* */ - /* <Also> */ - /* See @FT_GlyphSlotRec for the publicly accessible glyph fields. */ - /* */ - typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_CharMap */ - /* */ - /* <Description> */ - /* A handle to a given character map. A charmap is used to translate */ - /* character codes in a given encoding into glyph indexes for its */ - /* parent's face. Some font formats may provide several charmaps per */ - /* font. */ - /* */ - /* Each face object owns zero or more charmaps, but only one of them */ - /* can be `active' and used by @FT_Get_Char_Index or @FT_Load_Char. */ - /* */ - /* The list of available charmaps in a face is available through the */ - /* `face->num_charmaps' and `face->charmaps' fields of @FT_FaceRec. */ - /* */ - /* The currently active charmap is available as `face->charmap'. */ - /* You should call @FT_Set_Charmap to change it. */ - /* */ - /* <Note> */ - /* When a new face is created (either through @FT_New_Face or */ - /* @FT_Open_Face), the library looks for a Unicode charmap within */ - /* the list and automatically activates it. */ - /* */ - /* <Also> */ - /* See @FT_CharMapRec for the publicly accessible fields of a given */ - /* character map. */ - /* */ - typedef struct FT_CharMapRec_* FT_CharMap; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_ENC_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags into an unsigned long. It is */ - /* used to define `encoding' identifiers (see @FT_Encoding). */ - /* */ - /* <Note> */ - /* Since many 16-bit compilers don't like 32-bit enumerations, you */ - /* should redefine this macro in case of problems to something like */ - /* this: */ - /* */ - /* { */ - /* #define FT_ENC_TAG( value, a, b, c, d ) value */ - /* } */ - /* */ - /* to get a simple enumeration without assigning special numbers. */ - /* */ - -#ifndef FT_ENC_TAG -#define FT_ENC_TAG( value, a, b, c, d ) \ - value = ( ( (FT_UInt32)(a) << 24 ) | \ - ( (FT_UInt32)(b) << 16 ) | \ - ( (FT_UInt32)(c) << 8 ) | \ - (FT_UInt32)(d) ) - -#endif /* FT_ENC_TAG */ - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Encoding */ - /* */ - /* <Description> */ - /* An enumeration used to specify character sets supported by */ - /* charmaps. Used in the @FT_Select_Charmap API function. */ - /* */ - /* <Note> */ - /* Despite the name, this enumeration lists specific character */ - /* repertories (i.e., charsets), and not text encoding methods (e.g., */ - /* UTF-8, UTF-16, etc.). */ - /* */ - /* Other encodings might be defined in the future. */ - /* */ - /* <Values> */ - /* FT_ENCODING_NONE :: */ - /* The encoding value~0 is reserved. */ - /* */ - /* FT_ENCODING_UNICODE :: */ - /* Corresponds to the Unicode character set. This value covers */ - /* all versions of the Unicode repertoire, including ASCII and */ - /* Latin-1. Most fonts include a Unicode charmap, but not all */ - /* of them. */ - /* */ - /* For example, if you want to access Unicode value U+1F028 (and */ - /* the font contains it), use value 0x1F028 as the input value for */ - /* @FT_Get_Char_Index. */ - /* */ - /* FT_ENCODING_MS_SYMBOL :: */ - /* Corresponds to the Microsoft Symbol encoding, used to encode */ - /* mathematical symbols in the 32..255 character code range. For */ - /* more information, see `http://www.ceviz.net/symbol.htm'. */ - /* */ - /* FT_ENCODING_SJIS :: */ - /* Corresponds to Japanese SJIS encoding. More info at */ - /* at `http://langsupport.japanreference.com/encoding.shtml'. */ - /* See note on multi-byte encodings below. */ - /* */ - /* FT_ENCODING_GB2312 :: */ - /* Corresponds to an encoding system for Simplified Chinese as used */ - /* used in mainland China. */ - /* */ - /* FT_ENCODING_BIG5 :: */ - /* Corresponds to an encoding system for Traditional Chinese as */ - /* used in Taiwan and Hong Kong. */ - /* */ - /* FT_ENCODING_WANSUNG :: */ - /* Corresponds to the Korean encoding system known as Wansung. */ - /* For more information see */ - /* `http://www.microsoft.com/typography/unicode/949.txt'. */ - /* */ - /* FT_ENCODING_JOHAB :: */ - /* The Korean standard character set (KS~C 5601-1992), which */ - /* corresponds to MS Windows code page 1361. This character set */ - /* includes all possible Hangeul character combinations. */ - /* */ - /* FT_ENCODING_ADOBE_LATIN_1 :: */ - /* Corresponds to a Latin-1 encoding as defined in a Type~1 */ - /* PostScript font. It is limited to 256 character codes. */ - /* */ - /* FT_ENCODING_ADOBE_STANDARD :: */ - /* Corresponds to the Adobe Standard encoding, as found in Type~1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ - /* */ - /* FT_ENCODING_ADOBE_EXPERT :: */ - /* Corresponds to the Adobe Expert encoding, as found in Type~1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ - /* */ - /* FT_ENCODING_ADOBE_CUSTOM :: */ - /* Corresponds to a custom encoding, as found in Type~1, CFF, and */ - /* OpenType/CFF fonts. It is limited to 256 character codes. */ - /* */ - /* FT_ENCODING_APPLE_ROMAN :: */ - /* Corresponds to the 8-bit Apple roman encoding. Many TrueType */ - /* and OpenType fonts contain a charmap for this encoding, since */ - /* older versions of Mac OS are able to use it. */ - /* */ - /* FT_ENCODING_OLD_LATIN_2 :: */ - /* This value is deprecated and was never used nor reported by */ - /* FreeType. Don't use or test for it. */ - /* */ - /* FT_ENCODING_MS_SJIS :: */ - /* Same as FT_ENCODING_SJIS. Deprecated. */ - /* */ - /* FT_ENCODING_MS_GB2312 :: */ - /* Same as FT_ENCODING_GB2312. Deprecated. */ - /* */ - /* FT_ENCODING_MS_BIG5 :: */ - /* Same as FT_ENCODING_BIG5. Deprecated. */ - /* */ - /* FT_ENCODING_MS_WANSUNG :: */ - /* Same as FT_ENCODING_WANSUNG. Deprecated. */ - /* */ - /* FT_ENCODING_MS_JOHAB :: */ - /* Same as FT_ENCODING_JOHAB. Deprecated. */ - /* */ - /* <Note> */ - /* By default, FreeType automatically synthesizes a Unicode charmap */ - /* for PostScript fonts, using their glyph names dictionaries. */ - /* However, it also reports the encodings defined explicitly in the */ - /* font file, for the cases when they are needed, with the Adobe */ - /* values as well. */ - /* */ - /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ - /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ - /* FT_ENCODING_UNICODE). Use @FT_Get_BDF_Charset_ID to find out */ - /* which encoding is really present. If, for example, the */ - /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ - /* the font is encoded in KOI8-R. */ - /* */ - /* FT_ENCODING_NONE is always set (with a single exception) by the */ - /* winfonts driver. Use @FT_Get_WinFNT_Header and examine the */ - /* `charset' field of the @FT_WinFNT_HeaderRec structure to find out */ - /* which encoding is really present. For example, */ - /* @FT_WinFNT_ID_CP1251 (204) means Windows code page 1251 (for */ - /* Russian). */ - /* */ - /* FT_ENCODING_NONE is set if `platform_id' is @TT_PLATFORM_MACINTOSH */ - /* and `encoding_id' is not @TT_MAC_ID_ROMAN (otherwise it is set to */ - /* FT_ENCODING_APPLE_ROMAN). */ - /* */ - /* If `platform_id' is @TT_PLATFORM_MACINTOSH, use the function */ - /* @FT_Get_CMap_Language_ID to query the Mac language ID which may */ - /* be needed to be able to distinguish Apple encoding variants. See */ - /* */ - /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ - /* */ - /* to get an idea how to do that. Basically, if the language ID */ - /* is~0, don't use it, otherwise subtract 1 from the language ID. */ - /* Then examine `encoding_id'. If, for example, `encoding_id' is */ - /* @TT_MAC_ID_ROMAN and the language ID (minus~1) is */ - /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ - /* @TT_MAC_ID_ARABIC with `TT_MAC_LANGID_FARSI' means the Farsi */ - /* variant the Arabic encoding. */ - /* */ - typedef enum FT_Encoding_ - { - FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), - - FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), - FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), - - FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), - FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ), - FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), - FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), - FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), - - /* for backwards compatibility */ - FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, - FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, - FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, - FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, - FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, - - FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), - - FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), - - FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) - - } FT_Encoding; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_encoding_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated; use the corresponding @FT_Encoding */ - /* values instead. */ - /* */ -#define ft_encoding_none FT_ENCODING_NONE -#define ft_encoding_unicode FT_ENCODING_UNICODE -#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL -#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 -#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 -#define ft_encoding_sjis FT_ENCODING_SJIS -#define ft_encoding_gb2312 FT_ENCODING_GB2312 -#define ft_encoding_big5 FT_ENCODING_BIG5 -#define ft_encoding_wansung FT_ENCODING_WANSUNG -#define ft_encoding_johab FT_ENCODING_JOHAB - -#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD -#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT -#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM -#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_CharMapRec */ - /* */ - /* <Description> */ - /* The base charmap structure. */ - /* */ - /* <Fields> */ - /* face :: A handle to the parent face object. */ - /* */ - /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ - /* this with @FT_Select_Charmap. */ - /* */ - /* platform_id :: An ID number describing the platform for the */ - /* following encoding ID. This comes directly from */ - /* the TrueType specification and should be emulated */ - /* for other formats. */ - /* */ - /* encoding_id :: A platform specific encoding number. This also */ - /* comes from the TrueType specification and should be */ - /* emulated similarly. */ - /* */ - typedef struct FT_CharMapRec_ - { - FT_Face face; - FT_Encoding encoding; - FT_UShort platform_id; - FT_UShort encoding_id; - - } FT_CharMapRec; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* B A S E O B J E C T C L A S S E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Face_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an `FT_Face_InternalRec' structure, used to */ - /* model private data of a given @FT_Face object. */ - /* */ - /* This structure might change between releases of FreeType~2 and is */ - /* not generally available to client applications. */ - /* */ - typedef struct FT_Face_InternalRec_* FT_Face_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_FaceRec */ - /* */ - /* <Description> */ - /* FreeType root face class structure. A face object models a */ - /* typeface in a font file. */ - /* */ - /* <Fields> */ - /* num_faces :: The number of faces in the font file. Some */ - /* font formats can have multiple faces in */ - /* a font file. */ - /* */ - /* face_index :: The index of the face in the font file. It */ - /* is set to~0 if there is only one face in */ - /* the font file. */ - /* */ - /* face_flags :: A set of bit flags that give important */ - /* information about the face; see */ - /* @FT_FACE_FLAG_XXX for the details. */ - /* */ - /* style_flags :: A set of bit flags indicating the style of */ - /* the face; see @FT_STYLE_FLAG_XXX for the */ - /* details. */ - /* */ - /* num_glyphs :: The number of glyphs in the face. If the */ - /* face is scalable and has sbits (see */ - /* `num_fixed_sizes'), it is set to the number */ - /* of outline glyphs. */ - /* */ - /* For CID-keyed fonts, this value gives the */ - /* highest CID used in the font. */ - /* */ - /* family_name :: The face's family name. This is an ASCII */ - /* string, usually in English, which describes */ - /* the typeface's family (like `Times New */ - /* Roman', `Bodoni', `Garamond', etc). This */ - /* is a least common denominator used to list */ - /* fonts. Some formats (TrueType & OpenType) */ - /* provide localized and Unicode versions of */ - /* this string. Applications should use the */ - /* format specific interface to access them. */ - /* Can be NULL (e.g., in fonts embedded in a */ - /* PDF file). */ - /* */ - /* style_name :: The face's style name. This is an ASCII */ - /* string, usually in English, which describes */ - /* the typeface's style (like `Italic', */ - /* `Bold', `Condensed', etc). Not all font */ - /* formats provide a style name, so this field */ - /* is optional, and can be set to NULL. As */ - /* for `family_name', some formats provide */ - /* localized and Unicode versions of this */ - /* string. Applications should use the format */ - /* specific interface to access them. */ - /* */ - /* num_fixed_sizes :: The number of bitmap strikes in the face. */ - /* Even if the face is scalable, there might */ - /* still be bitmap strikes, which are called */ - /* `sbits' in that case. */ - /* */ - /* available_sizes :: An array of @FT_Bitmap_Size for all bitmap */ - /* strikes in the face. It is set to NULL if */ - /* there is no bitmap strike. */ - /* */ - /* num_charmaps :: The number of charmaps in the face. */ - /* */ - /* charmaps :: An array of the charmaps of the face. */ - /* */ - /* generic :: A field reserved for client uses. See the */ - /* @FT_Generic type description. */ - /* */ - /* bbox :: The font bounding box. Coordinates are */ - /* expressed in font units (see */ - /* `units_per_EM'). The box is large enough */ - /* to contain any glyph from the font. Thus, */ - /* `bbox.yMax' can be seen as the `maximal */ - /* ascender', and `bbox.yMin' as the `minimal */ - /* descender'. Only relevant for scalable */ - /* formats. */ - /* */ - /* Note that the bounding box might be off by */ - /* (at least) one pixel for hinted fonts. See */ - /* @FT_Size_Metrics for further discussion. */ - /* */ - /* units_per_EM :: The number of font units per EM square for */ - /* this face. This is typically 2048 for */ - /* TrueType fonts, and 1000 for Type~1 fonts. */ - /* Only relevant for scalable formats. */ - /* */ - /* ascender :: The typographic ascender of the face, */ - /* expressed in font units. For font formats */ - /* not having this information, it is set to */ - /* `bbox.yMax'. Only relevant for scalable */ - /* formats. */ - /* */ - /* descender :: The typographic descender of the face, */ - /* expressed in font units. For font formats */ - /* not having this information, it is set to */ - /* `bbox.yMin'. Note that this field is */ - /* usually negative. Only relevant for */ - /* scalable formats. */ - /* */ - /* height :: The height is the vertical distance */ - /* between two consecutive baselines, */ - /* expressed in font units. It is always */ - /* positive. Only relevant for scalable */ - /* formats. */ - /* */ - /* max_advance_width :: The maximal advance width, in font units, */ - /* for all glyphs in this face. This can be */ - /* used to make word wrapping computations */ - /* faster. Only relevant for scalable */ - /* formats. */ - /* */ - /* max_advance_height :: The maximal advance height, in font units, */ - /* for all glyphs in this face. This is only */ - /* relevant for vertical layouts, and is set */ - /* to `height' for fonts that do not provide */ - /* vertical metrics. Only relevant for */ - /* scalable formats. */ - /* */ - /* underline_position :: The position, in font units, of the */ - /* underline line for this face. It is the */ - /* center of the underlining stem. Only */ - /* relevant for scalable formats. */ - /* */ - /* underline_thickness :: The thickness, in font units, of the */ - /* underline for this face. Only relevant for */ - /* scalable formats. */ - /* */ - /* glyph :: The face's associated glyph slot(s). */ - /* */ - /* size :: The current active size for this face. */ - /* */ - /* charmap :: The current active charmap for this face. */ - /* */ - /* <Note> */ - /* Fields may be changed after a call to @FT_Attach_File or */ - /* @FT_Attach_Stream. */ - /* */ - typedef struct FT_FaceRec_ - { - FT_Long num_faces; - FT_Long face_index; - - FT_Long face_flags; - FT_Long style_flags; - - FT_Long num_glyphs; - - FT_String* family_name; - FT_String* style_name; - - FT_Int num_fixed_sizes; - FT_Bitmap_Size* available_sizes; - - FT_Int num_charmaps; - FT_CharMap* charmaps; - - FT_Generic generic; - - /*# The following member variables (down to `underline_thickness') */ - /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size */ - /*# for bitmap fonts. */ - FT_BBox bbox; - - FT_UShort units_per_EM; - FT_Short ascender; - FT_Short descender; - FT_Short height; - - FT_Short max_advance_width; - FT_Short max_advance_height; - - FT_Short underline_position; - FT_Short underline_thickness; - - FT_GlyphSlot glyph; - FT_Size size; - FT_CharMap charmap; - - /*@private begin */ - - FT_Driver driver; - FT_Memory memory; - FT_Stream stream; - - FT_ListRec sizes_list; - - FT_Generic autohint; - void* extensions; - - FT_Face_Internal internal; - - /*@private end */ - - } FT_FaceRec; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_FACE_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit flags used in the `face_flags' field of the */ - /* @FT_FaceRec structure. They inform client applications of */ - /* properties of the corresponding face. */ - /* */ - /* <Values> */ - /* FT_FACE_FLAG_SCALABLE :: */ - /* Indicates that the face contains outline glyphs. This doesn't */ - /* prevent bitmap strikes, i.e., a face can have both this and */ - /* and @FT_FACE_FLAG_FIXED_SIZES set. */ - /* */ - /* FT_FACE_FLAG_FIXED_SIZES :: */ - /* Indicates that the face contains bitmap strikes. See also the */ - /* `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec. */ - /* */ - /* FT_FACE_FLAG_FIXED_WIDTH :: */ - /* Indicates that the face contains fixed-width characters (like */ - /* Courier, Lucido, MonoType, etc.). */ - /* */ - /* FT_FACE_FLAG_SFNT :: */ - /* Indicates that the face uses the `sfnt' storage scheme. For */ - /* now, this means TrueType and OpenType. */ - /* */ - /* FT_FACE_FLAG_HORIZONTAL :: */ - /* Indicates that the face contains horizontal glyph metrics. This */ - /* should be set for all common formats. */ - /* */ - /* FT_FACE_FLAG_VERTICAL :: */ - /* Indicates that the face contains vertical glyph metrics. This */ - /* is only available in some formats, not all of them. */ - /* */ - /* FT_FACE_FLAG_KERNING :: */ - /* Indicates that the face contains kerning information. If set, */ - /* the kerning distance can be retrieved through the function */ - /* @FT_Get_Kerning. Otherwise the function always return the */ - /* vector (0,0). Note that FreeType doesn't handle kerning data */ - /* from the `GPOS' table (as present in some OpenType fonts). */ - /* */ - /* FT_FACE_FLAG_FAST_GLYPHS :: */ - /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ - /* */ - /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ - /* Indicates that the font contains multiple masters and is capable */ - /* of interpolating between them. See the multiple-masters */ - /* specific API for details. */ - /* */ - /* FT_FACE_FLAG_GLYPH_NAMES :: */ - /* Indicates that the font contains glyph names that can be */ - /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ - /* fonts contain broken glyph name tables. Use the function */ - /* @FT_Has_PS_Glyph_Names when needed. */ - /* */ - /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ - /* Used internally by FreeType to indicate that a face's stream was */ - /* provided by the client application and should not be destroyed */ - /* when @FT_Done_Face is called. Don't read or test this flag. */ - /* */ - /* FT_FACE_FLAG_HINTER :: */ - /* Set if the font driver has a hinting machine of its own. For */ - /* example, with TrueType fonts, it makes sense to use data from */ - /* the SFNT `gasp' table only if the native TrueType hinting engine */ - /* (with the bytecode interpreter) is available and active. */ - /* */ - /* FT_FACE_FLAG_CID_KEYED :: */ - /* Set if the font is CID-keyed. In that case, the font is not */ - /* accessed by glyph indices but by CID values. For subsetted */ - /* CID-keyed fonts this has the consequence that not all index */ - /* values are a valid argument to FT_Load_Glyph. Only the CID */ - /* values for which corresponding glyphs in the subsetted font */ - /* exist make FT_Load_Glyph return successfully; in all other cases */ - /* you get an `FT_Err_Invalid_Argument' error. */ - /* */ - /* Note that CID-keyed fonts which are in an SFNT wrapper don't */ - /* have this flag set since the glyphs are accessed in the normal */ - /* way (using contiguous indices); the `CID-ness' isn't visible to */ - /* the application. */ - /* */ - /* FT_FACE_FLAG_TRICKY :: */ - /* Set if the font is `tricky', this is, it always needs the */ - /* font format's native hinting engine to get a reasonable result. */ - /* A typical example is the Chinese font `mingli.ttf' which uses */ - /* TrueType bytecode instructions to move and scale all of its */ - /* subglyphs. */ - /* */ - /* It is not possible to autohint such fonts using */ - /* @FT_LOAD_FORCE_AUTOHINT; it will also ignore */ - /* @FT_LOAD_NO_HINTING. You have to set both FT_LOAD_NO_HINTING */ - /* and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */ - /* probably never want this except for demonstration purposes. */ - /* */ - /* Currently, there are six TrueType fonts in the list of tricky */ - /* fonts; they are hard-coded in file `ttobjs.c'. */ - /* */ -#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) -#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) -#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) -#define FT_FACE_FLAG_SFNT ( 1L << 3 ) -#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) -#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) -#define FT_FACE_FLAG_KERNING ( 1L << 6 ) -#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) -#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) -#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) -#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) -#define FT_FACE_FLAG_HINTER ( 1L << 11 ) -#define FT_FACE_FLAG_CID_KEYED ( 1L << 12 ) -#define FT_FACE_FLAG_TRICKY ( 1L << 13 ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_HORIZONTAL( face ) - * - * @description: - * A macro that returns true whenever a face object contains - * horizontal metrics (this is true for all font formats though). - * - * @also: - * @FT_HAS_VERTICAL can be used to check for vertical metrics. - * - */ -#define FT_HAS_HORIZONTAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_VERTICAL( face ) - * - * @description: - * A macro that returns true whenever a face object contains vertical - * metrics. - * - */ -#define FT_HAS_VERTICAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_VERTICAL ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_KERNING( face ) - * - * @description: - * A macro that returns true whenever a face object contains kerning - * data that can be accessed with @FT_Get_Kerning. - * - */ -#define FT_HAS_KERNING( face ) \ - ( face->face_flags & FT_FACE_FLAG_KERNING ) - - - /************************************************************************* - * - * @macro: - * FT_IS_SCALABLE( face ) - * - * @description: - * A macro that returns true whenever a face object contains a scalable - * font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, - * and PFR font formats. - * - */ -#define FT_IS_SCALABLE( face ) \ - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - - - /************************************************************************* - * - * @macro: - * FT_IS_SFNT( face ) - * - * @description: - * A macro that returns true whenever a face object contains a font - * whose format is based on the SFNT storage scheme. This usually - * means: TrueType fonts, OpenType fonts, as well as SFNT-based embedded - * bitmap fonts. - * - * If this macro is true, all functions defined in @FT_SFNT_NAMES_H and - * @FT_TRUETYPE_TABLES_H are available. - * - */ -#define FT_IS_SFNT( face ) \ - ( face->face_flags & FT_FACE_FLAG_SFNT ) - - - /************************************************************************* - * - * @macro: - * FT_IS_FIXED_WIDTH( face ) - * - * @description: - * A macro that returns true whenever a face object contains a font face - * that contains fixed-width (or `monospace', `fixed-pitch', etc.) - * glyphs. - * - */ -#define FT_IS_FIXED_WIDTH( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_FIXED_SIZES( face ) - * - * @description: - * A macro that returns true whenever a face object contains some - * embedded bitmaps. See the `available_sizes' field of the - * @FT_FaceRec structure. - * - */ -#define FT_HAS_FIXED_SIZES( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_FAST_GLYPHS( face ) - * - * @description: - * Deprecated. - * - */ -#define FT_HAS_FAST_GLYPHS( face ) 0 - - - /************************************************************************* - * - * @macro: - * FT_HAS_GLYPH_NAMES( face ) - * - * @description: - * A macro that returns true whenever a face object contains some glyph - * names that can be accessed through @FT_Get_Glyph_Name. - * - */ -#define FT_HAS_GLYPH_NAMES( face ) \ - ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) - - - /************************************************************************* - * - * @macro: - * FT_HAS_MULTIPLE_MASTERS( face ) - * - * @description: - * A macro that returns true whenever a face object contains some - * multiple masters. The functions provided by @FT_MULTIPLE_MASTERS_H - * are then available to choose the exact design you want. - * - */ -#define FT_HAS_MULTIPLE_MASTERS( face ) \ - ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) - - - /************************************************************************* - * - * @macro: - * FT_IS_CID_KEYED( face ) - * - * @description: - * A macro that returns true whenever a face object contains a CID-keyed - * font. See the discussion of @FT_FACE_FLAG_CID_KEYED for more - * details. - * - * If this macro is true, all functions defined in @FT_CID_H are - * available. - * - */ -#define FT_IS_CID_KEYED( face ) \ - ( face->face_flags & FT_FACE_FLAG_CID_KEYED ) - - - /************************************************************************* - * - * @macro: - * FT_IS_TRICKY( face ) - * - * @description: - * A macro that returns true whenever a face represents a `tricky' font. - * See the discussion of @FT_FACE_FLAG_TRICKY for more details. - * - */ -#define FT_IS_TRICKY( face ) \ - ( face->face_flags & FT_FACE_FLAG_TRICKY ) - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* FT_STYLE_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit-flags used to indicate the style of a given face. */ - /* These are used in the `style_flags' field of @FT_FaceRec. */ - /* */ - /* <Values> */ - /* FT_STYLE_FLAG_ITALIC :: */ - /* Indicates that a given face style is italic or oblique. */ - /* */ - /* FT_STYLE_FLAG_BOLD :: */ - /* Indicates that a given face is bold. */ - /* */ - /* <Note> */ - /* The style information as provided by FreeType is very basic. More */ - /* details are beyond the scope and should be done on a higher level */ - /* (for example, by analyzing various fields of the `OS/2' table in */ - /* SFNT based fonts). */ - /* */ -#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) -#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Size_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an `FT_Size_InternalRec' structure, used to */ - /* model private data of a given @FT_Size object. */ - /* */ - typedef struct FT_Size_InternalRec_* FT_Size_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_Metrics */ - /* */ - /* <Description> */ - /* The size metrics structure gives the metrics of a size object. */ - /* */ - /* <Fields> */ - /* x_ppem :: The width of the scaled EM square in pixels, hence */ - /* the term `ppem' (pixels per EM). It is also */ - /* referred to as `nominal width'. */ - /* */ - /* y_ppem :: The height of the scaled EM square in pixels, */ - /* hence the term `ppem' (pixels per EM). It is also */ - /* referred to as `nominal height'. */ - /* */ - /* x_scale :: A 16.16 fractional scaling value used to convert */ - /* horizontal metrics from font units to 26.6 */ - /* fractional pixels. Only relevant for scalable */ - /* font formats. */ - /* */ - /* y_scale :: A 16.16 fractional scaling value used to convert */ - /* vertical metrics from font units to 26.6 */ - /* fractional pixels. Only relevant for scalable */ - /* font formats. */ - /* */ - /* ascender :: The ascender in 26.6 fractional pixels. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* descender :: The descender in 26.6 fractional pixels. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* height :: The height in 26.6 fractional pixels. See */ - /* @FT_FaceRec for the details. */ - /* */ - /* max_advance :: The maximal advance width in 26.6 fractional */ - /* pixels. See @FT_FaceRec for the details. */ - /* */ - /* <Note> */ - /* The scaling values, if relevant, are determined first during a */ - /* size changing operation. The remaining fields are then set by the */ - /* driver. For scalable formats, they are usually set to scaled */ - /* values of the corresponding fields in @FT_FaceRec. */ - /* */ - /* Note that due to glyph hinting, these values might not be exact */ - /* for certain fonts. Thus they must be treated as unreliable */ - /* with an error margin of at least one pixel! */ - /* */ - /* Indeed, the only way to get the exact metrics is to render _all_ */ - /* glyphs. As this would be a definite performance hit, it is up to */ - /* client applications to perform such computations. */ - /* */ - /* The FT_Size_Metrics structure is valid for bitmap fonts also. */ - /* */ - typedef struct FT_Size_Metrics_ - { - FT_UShort x_ppem; /* horizontal pixels per EM */ - FT_UShort y_ppem; /* vertical pixels per EM */ - - FT_Fixed x_scale; /* scaling values used to convert font */ - FT_Fixed y_scale; /* units to 26.6 fractional pixels */ - - FT_Pos ascender; /* ascender in 26.6 frac. pixels */ - FT_Pos descender; /* descender in 26.6 frac. pixels */ - FT_Pos height; /* text height in 26.6 frac. pixels */ - FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ - - } FT_Size_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SizeRec */ - /* */ - /* <Description> */ - /* FreeType root size class structure. A size object models a face */ - /* object at a given size. */ - /* */ - /* <Fields> */ - /* face :: Handle to the parent face object. */ - /* */ - /* generic :: A typeless pointer, which is unused by the FreeType */ - /* library or any of its drivers. It can be used by */ - /* client applications to link their own data to each size */ - /* object. */ - /* */ - /* metrics :: Metrics for this size object. This field is read-only. */ - /* */ - typedef struct FT_SizeRec_ - { - FT_Face face; /* parent face object */ - FT_Generic generic; /* generic pointer for client uses */ - FT_Size_Metrics metrics; /* size metrics */ - FT_Size_Internal internal; - - } FT_SizeRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SubGlyph */ - /* */ - /* <Description> */ - /* The subglyph structure is an internal object used to describe */ - /* subglyphs (for example, in the case of composites). */ - /* */ - /* <Note> */ - /* The subglyph implementation is not part of the high-level API, */ - /* hence the forward structure declaration. */ - /* */ - /* You can however retrieve subglyph information with */ - /* @FT_Get_SubGlyph_Info. */ - /* */ - typedef struct FT_SubGlyphRec_* FT_SubGlyph; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Slot_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an `FT_Slot_InternalRec' structure, used to */ - /* model private data of a given @FT_GlyphSlot object. */ - /* */ - typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_GlyphSlotRec */ - /* */ - /* <Description> */ - /* FreeType root glyph slot class structure. A glyph slot is a */ - /* container where individual glyphs can be loaded, be they in */ - /* outline or bitmap format. */ - /* */ - /* <Fields> */ - /* library :: A handle to the FreeType library instance */ - /* this slot belongs to. */ - /* */ - /* face :: A handle to the parent face object. */ - /* */ - /* next :: In some cases (like some font tools), several */ - /* glyph slots per face object can be a good */ - /* thing. As this is rare, the glyph slots are */ - /* listed through a direct, single-linked list */ - /* using its `next' field. */ - /* */ - /* generic :: A typeless pointer which is unused by the */ - /* FreeType library or any of its drivers. It */ - /* can be used by client applications to link */ - /* their own data to each glyph slot object. */ - /* */ - /* metrics :: The metrics of the last loaded glyph in the */ - /* slot. The returned values depend on the last */ - /* load flags (see the @FT_Load_Glyph API */ - /* function) and can be expressed either in 26.6 */ - /* fractional pixels or font units. */ - /* */ - /* Note that even when the glyph image is */ - /* transformed, the metrics are not. */ - /* */ - /* linearHoriAdvance :: The advance width of the unhinted glyph. */ - /* Its value is expressed in 16.16 fractional */ - /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ - /* when loading the glyph. This field can be */ - /* important to perform correct WYSIWYG layout. */ - /* Only relevant for outline glyphs. */ - /* */ - /* linearVertAdvance :: The advance height of the unhinted glyph. */ - /* Its value is expressed in 16.16 fractional */ - /* pixels, unless @FT_LOAD_LINEAR_DESIGN is set */ - /* when loading the glyph. This field can be */ - /* important to perform correct WYSIWYG layout. */ - /* Only relevant for outline glyphs. */ - /* */ - /* advance :: This is the transformed advance width for the */ - /* glyph (in 26.6 fractional pixel format). */ - /* */ - /* format :: This field indicates the format of the image */ - /* contained in the glyph slot. Typically */ - /* @FT_GLYPH_FORMAT_BITMAP, */ - /* @FT_GLYPH_FORMAT_OUTLINE, or */ - /* @FT_GLYPH_FORMAT_COMPOSITE, but others are */ - /* possible. */ - /* */ - /* bitmap :: This field is used as a bitmap descriptor */ - /* when the slot format is */ - /* @FT_GLYPH_FORMAT_BITMAP. Note that the */ - /* address and content of the bitmap buffer can */ - /* change between calls of @FT_Load_Glyph and a */ - /* few other functions. */ - /* */ - /* bitmap_left :: This is the bitmap's left bearing expressed */ - /* in integer pixels. Of course, this is only */ - /* valid if the format is */ - /* @FT_GLYPH_FORMAT_BITMAP. */ - /* */ - /* bitmap_top :: This is the bitmap's top bearing expressed in */ - /* integer pixels. Remember that this is the */ - /* distance from the baseline to the top-most */ - /* glyph scanline, upwards y~coordinates being */ - /* *positive*. */ - /* */ - /* outline :: The outline descriptor for the current glyph */ - /* image if its format is */ - /* @FT_GLYPH_FORMAT_OUTLINE. Once a glyph is */ - /* loaded, `outline' can be transformed, */ - /* distorted, embolded, etc. However, it must */ - /* not be freed. */ - /* */ - /* num_subglyphs :: The number of subglyphs in a composite glyph. */ - /* This field is only valid for the composite */ - /* glyph format that should normally only be */ - /* loaded with the @FT_LOAD_NO_RECURSE flag. */ - /* For now this is internal to FreeType. */ - /* */ - /* subglyphs :: An array of subglyph descriptors for */ - /* composite glyphs. There are `num_subglyphs' */ - /* elements in there. Currently internal to */ - /* FreeType. */ - /* */ - /* control_data :: Certain font drivers can also return the */ - /* control data for a given glyph image (e.g. */ - /* TrueType bytecode, Type~1 charstrings, etc.). */ - /* This field is a pointer to such data. */ - /* */ - /* control_len :: This is the length in bytes of the control */ - /* data. */ - /* */ - /* other :: Really wicked formats can use this pointer to */ - /* present their own glyph image to client */ - /* applications. Note that the application */ - /* needs to know about the image format. */ - /* */ - /* lsb_delta :: The difference between hinted and unhinted */ - /* left side bearing while autohinting is */ - /* active. Zero otherwise. */ - /* */ - /* rsb_delta :: The difference between hinted and unhinted */ - /* right side bearing while autohinting is */ - /* active. Zero otherwise. */ - /* */ - /* <Note> */ - /* If @FT_Load_Glyph is called with default flags (see */ - /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ - /* its native format (e.g., an outline glyph for TrueType and Type~1 */ - /* formats). */ - /* */ - /* This image can later be converted into a bitmap by calling */ - /* @FT_Render_Glyph. This function finds the current renderer for */ - /* the native image's format, then invokes it. */ - /* */ - /* The renderer is in charge of transforming the native image through */ - /* the slot's face transformation fields, then converting it into a */ - /* bitmap that is returned in `slot->bitmap'. */ - /* */ - /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ - /* to specify the position of the bitmap relative to the current pen */ - /* position (e.g., coordinates (0,0) on the baseline). Of course, */ - /* `slot->format' is also changed to @FT_GLYPH_FORMAT_BITMAP. */ - /* */ - /* <Note> */ - /* Here a small pseudo code fragment which shows how to use */ - /* `lsb_delta' and `rsb_delta': */ - /* */ - /* { */ - /* FT_Pos origin_x = 0; */ - /* FT_Pos prev_rsb_delta = 0; */ - /* */ - /* */ - /* for all glyphs do */ - /* <compute kern between current and previous glyph and add it to */ - /* `origin_x'> */ - /* */ - /* <load glyph with `FT_Load_Glyph'> */ - /* */ - /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */ - /* origin_x -= 64; */ - /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ - /* origin_x += 64; */ - /* */ - /* prev_rsb_delta = face->glyph->rsb_delta; */ - /* */ - /* <save glyph image, or render glyph, or ...> */ - /* */ - /* origin_x += face->glyph->advance.x; */ - /* endfor */ - /* } */ - /* */ - typedef struct FT_GlyphSlotRec_ - { - FT_Library library; - FT_Face face; - FT_GlyphSlot next; - FT_UInt reserved; /* retained for binary compatibility */ - FT_Generic generic; - - FT_Glyph_Metrics metrics; - FT_Fixed linearHoriAdvance; - FT_Fixed linearVertAdvance; - FT_Vector advance; - - FT_Glyph_Format format; - - FT_Bitmap bitmap; - FT_Int bitmap_left; - FT_Int bitmap_top; - - FT_Outline outline; - - FT_UInt num_subglyphs; - FT_SubGlyph subglyphs; - - void* control_data; - long control_len; - - FT_Pos lsb_delta; - FT_Pos rsb_delta; - - void* other; - - FT_Slot_Internal internal; - - } FT_GlyphSlotRec; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* F U N C T I O N S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Init_FreeType */ - /* */ - /* <Description> */ - /* Initialize a new FreeType library object. The set of modules */ - /* that are registered by this function is determined at build time. */ - /* */ - /* <Output> */ - /* alibrary :: A handle to a new library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* In case you want to provide your own memory allocating routines, */ - /* use @FT_New_Library instead, followed by a call to */ - /* @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module). */ - /* */ - FT_EXPORT( FT_Error ) - FT_Init_FreeType( FT_Library *alibrary ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_FreeType */ - /* */ - /* <Description> */ - /* Destroy a given FreeType library object and all of its children, */ - /* including resources, drivers, faces, sizes, etc. */ - /* */ - /* <Input> */ - /* library :: A handle to the target library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_FreeType( FT_Library library ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_OPEN_XXX */ - /* */ - /* <Description> */ - /* A list of bit-field constants used within the `flags' field of the */ - /* @FT_Open_Args structure. */ - /* */ - /* <Values> */ - /* FT_OPEN_MEMORY :: This is a memory-based stream. */ - /* */ - /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ - /* */ - /* FT_OPEN_PATHNAME :: Create a new input stream from a C~path */ - /* name. */ - /* */ - /* FT_OPEN_DRIVER :: Use the `driver' field. */ - /* */ - /* FT_OPEN_PARAMS :: Use the `num_params' and `params' fields. */ - /* */ - /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ - /* */ - /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ - /* */ - /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ - /* */ - /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ - /* */ - /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ - /* */ - /* <Note> */ - /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ - /* flags are mutually exclusive. */ - /* */ -#define FT_OPEN_MEMORY 0x1 -#define FT_OPEN_STREAM 0x2 -#define FT_OPEN_PATHNAME 0x4 -#define FT_OPEN_DRIVER 0x8 -#define FT_OPEN_PARAMS 0x10 - -#define ft_open_memory FT_OPEN_MEMORY /* deprecated */ -#define ft_open_stream FT_OPEN_STREAM /* deprecated */ -#define ft_open_pathname FT_OPEN_PATHNAME /* deprecated */ -#define ft_open_driver FT_OPEN_DRIVER /* deprecated */ -#define ft_open_params FT_OPEN_PARAMS /* deprecated */ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Parameter */ - /* */ - /* <Description> */ - /* A simple structure used to pass more or less generic parameters to */ - /* @FT_Open_Face. */ - /* */ - /* <Fields> */ - /* tag :: A four-byte identification tag. */ - /* */ - /* data :: A pointer to the parameter data. */ - /* */ - /* <Note> */ - /* The ID and function of parameters are driver-specific. */ - /* */ - typedef struct FT_Parameter_ - { - FT_ULong tag; - FT_Pointer data; - - } FT_Parameter; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Open_Args */ - /* */ - /* <Description> */ - /* A structure used to indicate how to open a new font file or */ - /* stream. A pointer to such a structure can be used as a parameter */ - /* for the functions @FT_Open_Face and @FT_Attach_Stream. */ - /* */ - /* <Fields> */ - /* flags :: A set of bit flags indicating how to use the */ - /* structure. */ - /* */ - /* memory_base :: The first byte of the file in memory. */ - /* */ - /* memory_size :: The size in bytes of the file in memory. */ - /* */ - /* pathname :: A pointer to an 8-bit file pathname. */ - /* */ - /* stream :: A handle to a source stream object. */ - /* */ - /* driver :: This field is exclusively used by @FT_Open_Face; */ - /* it simply specifies the font driver to use to open */ - /* the face. If set to~0, FreeType tries to load the */ - /* face with each one of the drivers in its list. */ - /* */ - /* num_params :: The number of extra parameters. */ - /* */ - /* params :: Extra parameters passed to the font driver when */ - /* opening a new face. */ - /* */ - /* <Note> */ - /* The stream type is determined by the contents of `flags' which */ - /* are tested in the following order by @FT_Open_Face: */ - /* */ - /* If the `FT_OPEN_MEMORY' bit is set, assume that this is a */ - /* memory file of `memory_size' bytes, located at `memory_address'. */ - /* The data are are not copied, and the client is responsible for */ - /* releasing and destroying them _after_ the corresponding call to */ - /* @FT_Done_Face. */ - /* */ - /* Otherwise, if the `FT_OPEN_STREAM' bit is set, assume that a */ - /* custom input stream `stream' is used. */ - /* */ - /* Otherwise, if the `FT_OPEN_PATHNAME' bit is set, assume that this */ - /* is a normal file and use `pathname' to open it. */ - /* */ - /* If the `FT_OPEN_DRIVER' bit is set, @FT_Open_Face only tries to */ - /* open the file with the driver whose handler is in `driver'. */ - /* */ - /* If the `FT_OPEN_PARAMS' bit is set, the parameters given by */ - /* `num_params' and `params' is used. They are ignored otherwise. */ - /* */ - /* Ideally, both the `pathname' and `params' fields should be tagged */ - /* as `const'; this is missing for API backwards compatibility. In */ - /* other words, applications should treat them as read-only. */ - /* */ - typedef struct FT_Open_Args_ - { - FT_UInt flags; - const FT_Byte* memory_base; - FT_Long memory_size; - FT_String* pathname; - FT_Stream stream; - FT_Module driver; - FT_Int num_params; - FT_Parameter* params; - - } FT_Open_Args; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face */ - /* */ - /* <Description> */ - /* This function calls @FT_Open_Face to open a font by its pathname. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* pathname :: A path to the font file. */ - /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index~0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See @FT_Open_Face for more details. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face( FT_Library library, - const char* filepathname, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Memory_Face */ - /* */ - /* <Description> */ - /* This function calls @FT_Open_Face to open a font which has been */ - /* loaded into memory. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* file_base :: A pointer to the beginning of the font data. */ - /* */ - /* file_size :: The size of the memory chunk used by the font data. */ - /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index~0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See @FT_Open_Face for more details. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* You must not deallocate the memory before calling @FT_Done_Face. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Memory_Face( FT_Library library, - const FT_Byte* file_base, - FT_Long file_size, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Open_Face */ - /* */ - /* <Description> */ - /* Create a face object from a given resource described by */ - /* @FT_Open_Args. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* args :: A pointer to an `FT_Open_Args' structure which must */ - /* be filled by the caller. */ - /* */ - /* face_index :: The index of the face within the font. The first */ - /* face has index~0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. If `face_index' is */ - /* greater than or equal to zero, it must be non-NULL. */ - /* See note below. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* Unlike FreeType 1.x, this function automatically creates a glyph */ - /* slot for the face object which can be accessed directly through */ - /* `face->glyph'. */ - /* */ - /* FT_Open_Face can be used to quickly check whether the font */ - /* format of a given font resource is supported by FreeType. If the */ - /* `face_index' field is negative, the function's return value is~0 */ - /* if the font format is recognized, or non-zero otherwise; */ - /* the function returns a more or less empty face handle in `*aface' */ - /* (if `aface' isn't NULL). The only useful field in this special */ - /* case is `face->num_faces' which gives the number of faces within */ - /* the font file. After examination, the returned @FT_Face structure */ - /* should be deallocated with a call to @FT_Done_Face. */ - /* */ - /* Each new face object created with this function also owns a */ - /* default @FT_Size object, accessible as `face->size'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Open_Face( FT_Library library, - const FT_Open_Args* args, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Attach_File */ - /* */ - /* <Description> */ - /* This function calls @FT_Attach_Stream to attach a file. */ - /* */ - /* <InOut> */ - /* face :: The target face object. */ - /* */ - /* <Input> */ - /* filepathname :: The pathname. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Attach_File( FT_Face face, - const char* filepathname ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Attach_Stream */ - /* */ - /* <Description> */ - /* `Attach' data to a face object. Normally, this is used to read */ - /* additional information for the face object. For example, you can */ - /* attach an AFM file that comes with a Type~1 font to get the */ - /* kerning values and other metrics. */ - /* */ - /* <InOut> */ - /* face :: The target face object. */ - /* */ - /* <Input> */ - /* parameters :: A pointer to @FT_Open_Args which must be filled by */ - /* the caller. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The meaning of the `attach' (i.e., what really happens when the */ - /* new file is read) is not fixed by FreeType itself. It really */ - /* depends on the font format (and thus the font driver). */ - /* */ - /* Client applications are expected to know what they are doing */ - /* when invoking this function. Most drivers simply do not implement */ - /* file attachments. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Attach_Stream( FT_Face face, - FT_Open_Args* parameters ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Face */ - /* */ - /* <Description> */ - /* Discard a given face object, as well as all of its child slots and */ - /* sizes. */ - /* */ - /* <Input> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Face( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Select_Size */ - /* */ - /* <Description> */ - /* Select a bitmap strike. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* strike_index :: The index of the bitmap strike in the */ - /* `available_sizes' field of @FT_FaceRec structure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Select_Size( FT_Face face, - FT_Int strike_index ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Size_Request_Type */ - /* */ - /* <Description> */ - /* An enumeration type that lists the supported size request types. */ - /* */ - /* <Values> */ - /* FT_SIZE_REQUEST_TYPE_NOMINAL :: */ - /* The nominal size. The `units_per_EM' field of @FT_FaceRec is */ - /* used to determine both scaling values. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_REAL_DIM :: */ - /* The real dimension. The sum of the the `Ascender' and (minus */ - /* of) the `Descender' fields of @FT_FaceRec are used to determine */ - /* both scaling values. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_BBOX :: */ - /* The font bounding box. The width and height of the `bbox' field */ - /* of @FT_FaceRec are used to determine the horizontal and vertical */ - /* scaling value, respectively. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_CELL :: */ - /* The `max_advance_width' field of @FT_FaceRec is used to */ - /* determine the horizontal scaling value; the vertical scaling */ - /* value is determined the same way as */ - /* @FT_SIZE_REQUEST_TYPE_REAL_DIM does. Finally, both scaling */ - /* values are set to the smaller one. This type is useful if you */ - /* want to specify the font size for, say, a window of a given */ - /* dimension and 80x24 cells. */ - /* */ - /* FT_SIZE_REQUEST_TYPE_SCALES :: */ - /* Specify the scaling values directly. */ - /* */ - /* <Note> */ - /* The above descriptions only apply to scalable formats. For bitmap */ - /* formats, the behaviour is up to the driver. */ - /* */ - /* See the note section of @FT_Size_Metrics if you wonder how size */ - /* requesting relates to scaling values. */ - /* */ - typedef enum FT_Size_Request_Type_ - { - FT_SIZE_REQUEST_TYPE_NOMINAL, - FT_SIZE_REQUEST_TYPE_REAL_DIM, - FT_SIZE_REQUEST_TYPE_BBOX, - FT_SIZE_REQUEST_TYPE_CELL, - FT_SIZE_REQUEST_TYPE_SCALES, - - FT_SIZE_REQUEST_TYPE_MAX - - } FT_Size_Request_Type; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_RequestRec */ - /* */ - /* <Description> */ - /* A structure used to model a size request. */ - /* */ - /* <Fields> */ - /* type :: See @FT_Size_Request_Type. */ - /* */ - /* width :: The desired width. */ - /* */ - /* height :: The desired height. */ - /* */ - /* horiResolution :: The horizontal resolution. If set to zero, */ - /* `width' is treated as a 26.6 fractional pixel */ - /* value. */ - /* */ - /* vertResolution :: The vertical resolution. If set to zero, */ - /* `height' is treated as a 26.6 fractional pixel */ - /* value. */ - /* */ - /* <Note> */ - /* If `width' is zero, then the horizontal scaling value is set equal */ - /* to the vertical scaling value, and vice versa. */ - /* */ - typedef struct FT_Size_RequestRec_ - { - FT_Size_Request_Type type; - FT_Long width; - FT_Long height; - FT_UInt horiResolution; - FT_UInt vertResolution; - - } FT_Size_RequestRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_Request */ - /* */ - /* <Description> */ - /* A handle to a size request structure. */ - /* */ - typedef struct FT_Size_RequestRec_ *FT_Size_Request; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Request_Size */ - /* */ - /* <Description> */ - /* Resize the scale of the active @FT_Size object in a face. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* req :: A pointer to a @FT_Size_RequestRec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* Although drivers may select the bitmap strike matching the */ - /* request, you should not rely on this if you intend to select a */ - /* particular bitmap strike. Use @FT_Select_Size instead in that */ - /* case. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Request_Size( FT_Face face, - FT_Size_Request req ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Char_Size */ - /* */ - /* <Description> */ - /* This function calls @FT_Request_Size to request the nominal size */ - /* (in points). */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* char_width :: The nominal width, in 26.6 fractional points. */ - /* */ - /* char_height :: The nominal height, in 26.6 fractional points. */ - /* */ - /* horz_resolution :: The horizontal resolution in dpi. */ - /* */ - /* vert_resolution :: The vertical resolution in dpi. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* If either the character width or height is zero, it is set equal */ - /* to the other value. */ - /* */ - /* If either the horizontal or vertical resolution is zero, it is set */ - /* equal to the other value. */ - /* */ - /* A character width or height smaller than 1pt is set to 1pt; if */ - /* both resolution values are zero, they are set to 72dpi. */ - /* */ - /* Don't use this function if you are using the FreeType cache API. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Char_Size( FT_Face face, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Pixel_Sizes */ - /* */ - /* <Description> */ - /* This function calls @FT_Request_Size to request the nominal size */ - /* (in pixels). */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* pixel_width :: The nominal width, in pixels. */ - /* */ - /* pixel_height :: The nominal height, in pixels. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Pixel_Sizes( FT_Face face, - FT_UInt pixel_width, - FT_UInt pixel_height ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Load_Glyph */ - /* */ - /* <Description> */ - /* A function used to load a single glyph into the glyph slot of a */ - /* face object. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object where the glyph */ - /* is loaded. */ - /* */ - /* <Input> */ - /* glyph_index :: The index of the glyph in the font file. For */ - /* CID-keyed fonts (either in PS or in CFF format) */ - /* this argument specifies the CID value. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* @FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The loaded glyph may be transformed. See @FT_Set_Transform for */ - /* the details. */ - /* */ - /* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is */ - /* returned for invalid CID values (this is, for CID values which */ - /* don't have a corresponding glyph in the font). See the discussion */ - /* of the @FT_FACE_FLAG_CID_KEYED flag for more details. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Load_Glyph( FT_Face face, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Load_Char */ - /* */ - /* <Description> */ - /* A function used to load a single glyph into the glyph slot of a */ - /* face object, according to its character code. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object where the glyph */ - /* is loaded. */ - /* */ - /* <Input> */ - /* char_code :: The glyph's character code, according to the */ - /* current charmap used in the face. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* @FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Load_Char( FT_Face face, - FT_ULong char_code, - FT_Int32 load_flags ); - - - /************************************************************************* - * - * @enum: - * FT_LOAD_XXX - * - * @description: - * A list of bit-field constants used with @FT_Load_Glyph to indicate - * what kind of operations to perform during glyph loading. - * - * @values: - * FT_LOAD_DEFAULT :: - * Corresponding to~0, this value is used as the default glyph load - * operation. In this case, the following happens: - * - * 1. FreeType looks for a bitmap for the glyph corresponding to the - * face's current size. If one is found, the function returns. - * The bitmap data can be accessed from the glyph slot (see note - * below). - * - * 2. If no embedded bitmap is searched or found, FreeType looks for a - * scalable outline. If one is found, it is loaded from the font - * file, scaled to device pixels, then `hinted' to the pixel grid - * in order to optimize it. The outline data can be accessed from - * the glyph slot (see note below). - * - * Note that by default, the glyph loader doesn't render outlines into - * bitmaps. The following flags are used to modify this default - * behaviour to more specific and useful cases. - * - * FT_LOAD_NO_SCALE :: - * Don't scale the outline glyph loaded, but keep it in font units. - * - * This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and - * unsets @FT_LOAD_RENDER. - * - * FT_LOAD_NO_HINTING :: - * Disable hinting. This generally generates `blurrier' bitmap glyph - * when the glyph is rendered in any of the anti-aliased modes. See - * also the note below. - * - * This flag is implied by @FT_LOAD_NO_SCALE. - * - * FT_LOAD_RENDER :: - * Call @FT_Render_Glyph after the glyph is loaded. By default, the - * glyph is rendered in @FT_RENDER_MODE_NORMAL mode. This can be - * overridden by @FT_LOAD_TARGET_XXX or @FT_LOAD_MONOCHROME. - * - * This flag is unset by @FT_LOAD_NO_SCALE. - * - * FT_LOAD_NO_BITMAP :: - * Ignore bitmap strikes when loading. Bitmap-only fonts ignore this - * flag. - * - * @FT_LOAD_NO_SCALE always sets this flag. - * - * FT_LOAD_VERTICAL_LAYOUT :: - * Load the glyph for vertical text layout. _Don't_ use it as it is - * problematic currently. - * - * FT_LOAD_FORCE_AUTOHINT :: - * Indicates that the auto-hinter is preferred over the font's native - * hinter. See also the note below. - * - * FT_LOAD_CROP_BITMAP :: - * Indicates that the font driver should crop the loaded bitmap glyph - * (i.e., remove all space around its black bits). Not all drivers - * implement this. - * - * FT_LOAD_PEDANTIC :: - * Indicates that the font driver should perform pedantic verifications - * during glyph loading. This is mostly used to detect broken glyphs - * in fonts. By default, FreeType tries to handle broken fonts also. - * - * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: - * Indicates that the font driver should ignore the global advance - * width defined in the font. By default, that value is used as the - * advance width for all glyphs when the face has - * @FT_FACE_FLAG_FIXED_WIDTH set. - * - * This flag exists for historical reasons (to support buggy CJK - * fonts). - * - * FT_LOAD_NO_RECURSE :: - * This flag is only used internally. It merely indicates that the - * font driver should not load composite glyphs recursively. Instead, - * it should set the `num_subglyph' and `subglyphs' values of the - * glyph slot accordingly, and set `glyph->format' to - * @FT_GLYPH_FORMAT_COMPOSITE. - * - * The description of sub-glyphs is not available to client - * applications for now. - * - * This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM. - * - * FT_LOAD_IGNORE_TRANSFORM :: - * Indicates that the transform matrix set by @FT_Set_Transform should - * be ignored. - * - * FT_LOAD_MONOCHROME :: - * This flag is used with @FT_LOAD_RENDER to indicate that you want to - * render an outline glyph to a 1-bit monochrome bitmap glyph, with - * 8~pixels packed into each byte of the bitmap data. - * - * Note that this has no effect on the hinting algorithm used. You - * should rather use @FT_LOAD_TARGET_MONO so that the - * monochrome-optimized hinting algorithm is used. - * - * FT_LOAD_LINEAR_DESIGN :: - * Indicates that the `linearHoriAdvance' and `linearVertAdvance' - * fields of @FT_GlyphSlotRec should be kept in font units. See - * @FT_GlyphSlotRec for details. - * - * FT_LOAD_NO_AUTOHINT :: - * Disable auto-hinter. See also the note below. - * - * @note: - * By default, hinting is enabled and the font's native hinter (see - * @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter. You can - * disable hinting by setting @FT_LOAD_NO_HINTING or change the - * precedence by setting @FT_LOAD_FORCE_AUTOHINT. You can also set - * @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be - * used at all. - * - * See the description of @FT_FACE_FLAG_TRICKY for a special exception - * (affecting only a handful of Asian fonts). - * - * Besides deciding which hinter to use, you can also decide which - * hinting algorithm to use. See @FT_LOAD_TARGET_XXX for details. - * - */ -#define FT_LOAD_DEFAULT 0x0 -#define FT_LOAD_NO_SCALE 0x1 -#define FT_LOAD_NO_HINTING 0x2 -#define FT_LOAD_RENDER 0x4 -#define FT_LOAD_NO_BITMAP 0x8 -#define FT_LOAD_VERTICAL_LAYOUT 0x10 -#define FT_LOAD_FORCE_AUTOHINT 0x20 -#define FT_LOAD_CROP_BITMAP 0x40 -#define FT_LOAD_PEDANTIC 0x80 -#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH 0x200 -#define FT_LOAD_NO_RECURSE 0x400 -#define FT_LOAD_IGNORE_TRANSFORM 0x800 -#define FT_LOAD_MONOCHROME 0x1000 -#define FT_LOAD_LINEAR_DESIGN 0x2000 -#define FT_LOAD_NO_AUTOHINT 0x8000U - - /* */ - - /* used internally only by certain font drivers! */ -#define FT_LOAD_ADVANCE_ONLY 0x100 -#define FT_LOAD_SBITS_ONLY 0x4000 - - - /************************************************************************** - * - * @enum: - * FT_LOAD_TARGET_XXX - * - * @description: - * A list of values that are used to select a specific hinting algorithm - * to use by the hinter. You should OR one of these values to your - * `load_flags' when calling @FT_Load_Glyph. - * - * Note that font's native hinters may ignore the hinting algorithm you - * have specified (e.g., the TrueType bytecode interpreter). You can set - * @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used. - * - * Also note that @FT_LOAD_TARGET_LIGHT is an exception, in that it - * always implies @FT_LOAD_FORCE_AUTOHINT. - * - * @values: - * FT_LOAD_TARGET_NORMAL :: - * This corresponds to the default hinting algorithm, optimized for - * standard gray-level rendering. For monochrome output, use - * @FT_LOAD_TARGET_MONO instead. - * - * FT_LOAD_TARGET_LIGHT :: - * A lighter hinting algorithm for non-monochrome modes. Many - * generated glyphs are more fuzzy but better resemble its original - * shape. A bit like rendering on Mac OS~X. - * - * As a special exception, this target implies @FT_LOAD_FORCE_AUTOHINT. - * - * FT_LOAD_TARGET_MONO :: - * Strong hinting algorithm that should only be used for monochrome - * output. The result is probably unpleasant if the glyph is rendered - * in non-monochrome modes. - * - * FT_LOAD_TARGET_LCD :: - * A variant of @FT_LOAD_TARGET_NORMAL optimized for horizontally - * decimated LCD displays. - * - * FT_LOAD_TARGET_LCD_V :: - * A variant of @FT_LOAD_TARGET_NORMAL optimized for vertically - * decimated LCD displays. - * - * @note: - * You should use only _one_ of the FT_LOAD_TARGET_XXX values in your - * `load_flags'. They can't be ORed. - * - * If @FT_LOAD_RENDER is also set, the glyph is rendered in the - * corresponding mode (i.e., the mode which matches the used algorithm - * best) unless @FT_LOAD_MONOCHROME is set. - * - * You can use a hinting algorithm that doesn't correspond to the same - * rendering mode. As an example, it is possible to use the `light' - * hinting algorithm and have the results rendered in horizontal LCD - * pixel mode, with code like - * - * { - * FT_Load_Glyph( face, glyph_index, - * load_flags | FT_LOAD_TARGET_LIGHT ); - * - * FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD ); - * } - * - */ -#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) - -#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) -#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) -#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) -#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) -#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) - - - /************************************************************************** - * - * @macro: - * FT_LOAD_TARGET_MODE - * - * @description: - * Return the @FT_Render_Mode corresponding to a given - * @FT_LOAD_TARGET_XXX value. - * - */ -#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Transform */ - /* */ - /* <Description> */ - /* A function used to set the transformation that is applied to glyph */ - /* images when they are loaded into a glyph slot through */ - /* @FT_Load_Glyph. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the transformation's 2x2 matrix. Use~0 for */ - /* the identity matrix. */ - /* delta :: A pointer to the translation vector. Use~0 for the null */ - /* vector. */ - /* */ - /* <Note> */ - /* The transformation is only applied to scalable image formats after */ - /* the glyph has been loaded. It means that hinting is unaltered by */ - /* the transformation and is performed on the character size given in */ - /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ - /* */ - /* Note that this also transforms the `face.glyph.advance' field, but */ - /* *not* the values in `face.glyph.metrics'. */ - /* */ - FT_EXPORT( void ) - FT_Set_Transform( FT_Face face, - FT_Matrix* matrix, - FT_Vector* delta ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Render_Mode */ - /* */ - /* <Description> */ - /* An enumeration type that lists the render modes supported by */ - /* FreeType~2. Each mode corresponds to a specific type of scanline */ - /* conversion performed on the outline. */ - /* */ - /* For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode' */ - /* field in the @FT_GlyphSlotRec structure gives the format of the */ - /* returned bitmap. */ - /* */ - /* All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity. */ - /* */ - /* <Values> */ - /* FT_RENDER_MODE_NORMAL :: */ - /* This is the default render mode; it corresponds to 8-bit */ - /* anti-aliased bitmaps. */ - /* */ - /* FT_RENDER_MODE_LIGHT :: */ - /* This is equivalent to @FT_RENDER_MODE_NORMAL. It is only */ - /* defined as a separate value because render modes are also used */ - /* indirectly to define hinting algorithm selectors. See */ - /* @FT_LOAD_TARGET_XXX for details. */ - /* */ - /* FT_RENDER_MODE_MONO :: */ - /* This mode corresponds to 1-bit bitmaps (with 2~levels of */ - /* opacity). */ - /* */ - /* FT_RENDER_MODE_LCD :: */ - /* This mode corresponds to horizontal RGB and BGR sub-pixel */ - /* displays like LCD screens. It produces 8-bit bitmaps that are */ - /* 3~times the width of the original glyph outline in pixels, and */ - /* which use the @FT_PIXEL_MODE_LCD mode. */ - /* */ - /* FT_RENDER_MODE_LCD_V :: */ - /* This mode corresponds to vertical RGB and BGR sub-pixel displays */ - /* (like PDA screens, rotated LCD displays, etc.). It produces */ - /* 8-bit bitmaps that are 3~times the height of the original */ - /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ - /* */ - /* <Note> */ - /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph can be */ - /* filtered to reduce color-fringes by using @FT_Library_SetLcdFilter */ - /* (not active in the default builds). It is up to the caller to */ - /* either call @FT_Library_SetLcdFilter (if available) or do the */ - /* filtering itself. */ - /* */ - /* The selected render mode only affects vector glyphs of a font. */ - /* Embedded bitmaps often have a different pixel mode like */ - /* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform */ - /* them into 8-bit pixmaps. */ - /* */ - typedef enum FT_Render_Mode_ - { - FT_RENDER_MODE_NORMAL = 0, - FT_RENDER_MODE_LIGHT, - FT_RENDER_MODE_MONO, - FT_RENDER_MODE_LCD, - FT_RENDER_MODE_LCD_V, - - FT_RENDER_MODE_MAX - - } FT_Render_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_render_mode_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated. Use the corresponding */ - /* @FT_Render_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ - /* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ - /* */ -#define ft_render_mode_normal FT_RENDER_MODE_NORMAL -#define ft_render_mode_mono FT_RENDER_MODE_MONO - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Render_Glyph */ - /* */ - /* <Description> */ - /* Convert a given glyph image to a bitmap. It does so by inspecting */ - /* the glyph image format, finding the relevant renderer, and */ - /* invoking it. */ - /* */ - /* <InOut> */ - /* slot :: A handle to the glyph slot containing the image to */ - /* convert. */ - /* */ - /* <Input> */ - /* render_mode :: This is the render mode used to render the glyph */ - /* image into a bitmap. See @FT_Render_Mode for a */ - /* list of possible values. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Render_Glyph( FT_GlyphSlot slot, - FT_Render_Mode render_mode ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Kerning_Mode */ - /* */ - /* <Description> */ - /* An enumeration used to specify which kerning values to return in */ - /* @FT_Get_Kerning. */ - /* */ - /* <Values> */ - /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ - /* distances (value is~0). */ - /* */ - /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ - /* distances. */ - /* */ - /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ - /* units. */ - /* */ - typedef enum FT_Kerning_Mode_ - { - FT_KERNING_DEFAULT = 0, - FT_KERNING_UNFITTED, - FT_KERNING_UNSCALED - - } FT_Kerning_Mode; - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_default */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_DEFAULT */ - /* instead. */ - /* */ -#define ft_kerning_default FT_KERNING_DEFAULT - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_unfitted */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_UNFITTED */ - /* instead. */ - /* */ -#define ft_kerning_unfitted FT_KERNING_UNFITTED - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_unscaled */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_UNSCALED */ - /* instead. */ - /* */ -#define ft_kerning_unscaled FT_KERNING_UNSCALED - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Kerning */ - /* */ - /* <Description> */ - /* Return the kerning vector between two glyphs of a same face. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* left_glyph :: The index of the left glyph in the kern pair. */ - /* */ - /* right_glyph :: The index of the right glyph in the kern pair. */ - /* */ - /* kern_mode :: See @FT_Kerning_Mode for more information. */ - /* Determines the scale and dimension of the returned */ - /* kerning vector. */ - /* */ - /* <Output> */ - /* akerning :: The kerning vector. This is either in font units */ - /* or in pixels (26.6 format) for scalable formats, */ - /* and in pixels for fixed-sizes formats. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* Only horizontal layouts (left-to-right & right-to-left) are */ - /* supported by this method. Other layouts, or more sophisticated */ - /* kernings, are out of the scope of this API function -- they can be */ - /* implemented through format-specific interfaces. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Kerning( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_UInt kern_mode, - FT_Vector *akerning ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Track_Kerning */ - /* */ - /* <Description> */ - /* Return the track kerning for a given face object at a given size. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* point_size :: The point size in 16.16 fractional points. */ - /* */ - /* degree :: The degree of tightness. */ - /* */ - /* <Output> */ - /* akerning :: The kerning in 16.16 fractional points. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Track_Kerning( FT_Face face, - FT_Fixed point_size, - FT_Int degree, - FT_Fixed* akerning ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Glyph_Name */ - /* */ - /* <Description> */ - /* Retrieve the ASCII name of a given glyph in a face. This only */ - /* works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* glyph_index :: The glyph index. */ - /* */ - /* buffer_max :: The maximal number of bytes available in the */ - /* buffer. */ - /* */ - /* <Output> */ - /* buffer :: A pointer to a target buffer where the name is */ - /* copied to. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* An error is returned if the face doesn't provide glyph names or if */ - /* the glyph index is invalid. In all cases of failure, the first */ - /* byte of `buffer' is set to~0 to indicate an empty name. */ - /* */ - /* The glyph name is truncated to fit within the buffer if it is too */ - /* long. The returned string is always zero-terminated. */ - /* */ - /* This function is not compiled within the library if the config */ - /* macro `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is defined in */ - /* `include/freetype/config/ftoptions.h'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Glyph_Name( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Postscript_Name */ - /* */ - /* <Description> */ - /* Retrieve the ASCII PostScript name of a given face, if available. */ - /* This only works with PostScript and TrueType fonts. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Return> */ - /* A pointer to the face's PostScript name. NULL if unavailable. */ - /* */ - /* <Note> */ - /* The returned pointer is owned by the face and is destroyed with */ - /* it. */ - /* */ - FT_EXPORT( const char* ) - FT_Get_Postscript_Name( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Select_Charmap */ - /* */ - /* <Description> */ - /* Select a given charmap by its encoding tag (as listed in */ - /* `freetype.h'). */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* encoding :: A handle to the selected encoding. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function returns an error if no charmap in the face */ - /* corresponds to the encoding queried here. */ - /* */ - /* Because many fonts contain more than a single cmap for Unicode */ - /* encoding, this function has some special code to select the one */ - /* which covers Unicode best (`best' in the sense that a UCS-4 cmap */ - /* is preferred to a UCS-2 cmap). It is thus preferable to */ - /* @FT_Set_Charmap in this case. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Select_Charmap( FT_Face face, - FT_Encoding encoding ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Charmap */ - /* */ - /* <Description> */ - /* Select a given charmap for character code to glyph index mapping. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* charmap :: A handle to the selected charmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function returns an error if the charmap is not part of */ - /* the face (i.e., if it is not listed in the `face->charmaps' */ - /* table). */ - /* */ - /* It also fails if a type~14 charmap is selected. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Charmap( FT_Face face, - FT_CharMap charmap ); - - - /************************************************************************* - * - * @function: - * FT_Get_Charmap_Index - * - * @description: - * Retrieve index of a given charmap. - * - * @input: - * charmap :: - * A handle to a charmap. - * - * @return: - * The index into the array of character maps within the face to which - * `charmap' belongs. - * - */ - FT_EXPORT( FT_Int ) - FT_Get_Charmap_Index( FT_CharMap charmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Char_Index */ - /* */ - /* <Description> */ - /* Return the glyph index of a given character code. This function */ - /* uses a charmap object to do the mapping. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* charcode :: The character code. */ - /* */ - /* <Return> */ - /* The glyph index. 0~means `undefined character code'. */ - /* */ - /* <Note> */ - /* If you use FreeType to manipulate the contents of font files */ - /* directly, be aware that the glyph index returned by this function */ - /* doesn't always correspond to the internal indices used within */ - /* the file. This is done to ensure that value~0 always corresponds */ - /* to the `missing glyph'. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Char_Index( FT_Face face, - FT_ULong charcode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_First_Char */ - /* */ - /* <Description> */ - /* This function is used to return the first character code in the */ - /* current charmap of a given face. It also returns the */ - /* corresponding glyph index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Output> */ - /* agindex :: Glyph index of first character code. 0~if charmap is */ - /* empty. */ - /* */ - /* <Return> */ - /* The charmap's first character code. */ - /* */ - /* <Note> */ - /* You should use this function with @FT_Get_Next_Char to be able to */ - /* parse all character codes available in a given charmap. The code */ - /* should look like this: */ - /* */ - /* { */ - /* FT_ULong charcode; */ - /* FT_UInt gindex; */ - /* */ - /* */ - /* charcode = FT_Get_First_Char( face, &gindex ); */ - /* while ( gindex != 0 ) */ - /* { */ - /* ... do something with (charcode,gindex) pair ... */ - /* */ - /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ - /* } */ - /* } */ - /* */ - /* Note that `*agindex' is set to~0 if the charmap is empty. The */ - /* result itself can be~0 in two cases: if the charmap is empty or */ - /* if the value~0 is the first valid character code. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_First_Char( FT_Face face, - FT_UInt *agindex ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Next_Char */ - /* */ - /* <Description> */ - /* This function is used to return the next character code in the */ - /* current charmap of a given face following the value `char_code', */ - /* as well as the corresponding glyph index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* char_code :: The starting character code. */ - /* */ - /* <Output> */ - /* agindex :: Glyph index of next character code. 0~if charmap */ - /* is empty. */ - /* */ - /* <Return> */ - /* The charmap's next character code. */ - /* */ - /* <Note> */ - /* You should use this function with @FT_Get_First_Char to walk */ - /* over all character codes available in a given charmap. See the */ - /* note for this function for a simple code example. */ - /* */ - /* Note that `*agindex' is set to~0 when there are no more codes in */ - /* the charmap. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_Next_Char( FT_Face face, - FT_ULong char_code, - FT_UInt *agindex ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Name_Index */ - /* */ - /* <Description> */ - /* Return the glyph index of a given glyph name. This function uses */ - /* driver specific objects to do the translation. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* glyph_name :: The glyph name. */ - /* */ - /* <Return> */ - /* The glyph index. 0~means `undefined character code'. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Name_Index( FT_Face face, - FT_String* glyph_name ); - - - /************************************************************************* - * - * @macro: - * FT_SUBGLYPH_FLAG_XXX - * - * @description: - * A list of constants used to describe subglyphs. Please refer to the - * TrueType specification for the meaning of the various flags. - * - * @values: - * FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS :: - * FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES :: - * FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID :: - * FT_SUBGLYPH_FLAG_SCALE :: - * FT_SUBGLYPH_FLAG_XY_SCALE :: - * FT_SUBGLYPH_FLAG_2X2 :: - * FT_SUBGLYPH_FLAG_USE_MY_METRICS :: - * - */ -#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 -#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 -#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 -#define FT_SUBGLYPH_FLAG_SCALE 8 -#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 -#define FT_SUBGLYPH_FLAG_2X2 0x80 -#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 - - - /************************************************************************* - * - * @func: - * FT_Get_SubGlyph_Info - * - * @description: - * Retrieve a description of a given subglyph. Only use it if - * `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is - * returned otherwise. - * - * @input: - * glyph :: - * The source glyph slot. - * - * sub_index :: - * The index of the subglyph. Must be less than - * `glyph->num_subglyphs'. - * - * @output: - * p_index :: - * The glyph index of the subglyph. - * - * p_flags :: - * The subglyph flags, see @FT_SUBGLYPH_FLAG_XXX. - * - * p_arg1 :: - * The subglyph's first argument (if any). - * - * p_arg2 :: - * The subglyph's second argument (if any). - * - * p_transform :: - * The subglyph transformation (if any). - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The values of `*p_arg1', `*p_arg2', and `*p_transform' must be - * interpreted depending on the flags returned in `*p_flags'. See the - * TrueType specification for details. - * - */ - FT_EXPORT( FT_Error ) - FT_Get_SubGlyph_Info( FT_GlyphSlot glyph, - FT_UInt sub_index, - FT_Int *p_index, - FT_UInt *p_flags, - FT_Int *p_arg1, - FT_Int *p_arg2, - FT_Matrix *p_transform ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_FSTYPE_XXX */ - /* */ - /* <Description> */ - /* A list of bit flags used in the `fsType' field of the OS/2 table */ - /* in a TrueType or OpenType font and the `FSType' entry in a */ - /* PostScript font. These bit flags are returned by */ - /* @FT_Get_FSType_Flags; they inform client applications of embedding */ - /* and subsetting restrictions associated with a font. */ - /* */ - /* See http://www.adobe.com/devnet/acrobat/pdfs/FontPolicies.pdf for */ - /* more details. */ - /* */ - /* <Values> */ - /* FT_FSTYPE_INSTALLABLE_EMBEDDING :: */ - /* Fonts with no fsType bit set may be embedded and permanently */ - /* installed on the remote system by an application. */ - /* */ - /* FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING :: */ - /* Fonts that have only this bit set must not be modified, embedded */ - /* or exchanged in any manner without first obtaining permission of */ - /* the font software copyright owner. */ - /* */ - /* FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING :: */ - /* If this bit is set, the font may be embedded and temporarily */ - /* loaded on the remote system. Documents containing Preview & */ - /* Print fonts must be opened `read-only'; no edits can be applied */ - /* to the document. */ - /* */ - /* FT_FSTYPE_EDITABLE_EMBEDDING :: */ - /* If this bit is set, the font may be embedded but must only be */ - /* installed temporarily on other systems. In contrast to Preview */ - /* & Print fonts, documents containing editable fonts may be opened */ - /* for reading, editing is permitted, and changes may be saved. */ - /* */ - /* FT_FSTYPE_NO_SUBSETTING :: */ - /* If this bit is set, the font may not be subsetted prior to */ - /* embedding. */ - /* */ - /* FT_FSTYPE_BITMAP_EMBEDDING_ONLY :: */ - /* If this bit is set, only bitmaps contained in the font may be */ - /* embedded; no outline data may be embedded. If there are no */ - /* bitmaps available in the font, then the font is unembeddable. */ - /* */ - /* <Note> */ - /* While the fsType flags can indicate that a font may be embedded, a */ - /* license with the font vendor may be separately required to use the */ - /* font in this way. */ - /* */ -#define FT_FSTYPE_INSTALLABLE_EMBEDDING 0x0000 -#define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING 0x0002 -#define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING 0x0004 -#define FT_FSTYPE_EDITABLE_EMBEDDING 0x0008 -#define FT_FSTYPE_NO_SUBSETTING 0x0100 -#define FT_FSTYPE_BITMAP_EMBEDDING_ONLY 0x0200 - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_FSType_Flags */ - /* */ - /* <Description> */ - /* Return the fsType flags for a font. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Return> */ - /* The fsType flags, @FT_FSTYPE_XXX. */ - /* */ - /* <Note> */ - /* Use this function rather than directly reading the `fs_type' field */ - /* in the @PS_FontInfoRec structure which is only guaranteed to */ - /* return the correct results for Type~1 fonts. */ - /* */ - FT_EXPORT( FT_UShort ) - FT_Get_FSType_Flags( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* glyph_variants */ - /* */ - /* <Title> */ - /* Glyph Variants */ - /* */ - /* <Abstract> */ - /* The FreeType~2 interface to Unicode Ideographic Variation */ - /* Sequences (IVS), using the SFNT cmap format~14. */ - /* */ - /* <Description> */ - /* Many CJK characters have variant forms. They are a sort of grey */ - /* area somewhere between being totally irrelevant and semantically */ - /* distinct; for this reason, the Unicode consortium decided to */ - /* introduce Ideographic Variation Sequences (IVS), consisting of a */ - /* Unicode base character and one of 240 variant selectors */ - /* (U+E0100-U+E01EF), instead of further extending the already huge */ - /* code range for CJK characters. */ - /* */ - /* An IVS is registered and unique; for further details please refer */ - /* to Unicode Technical Report #37, the Ideographic Variation */ - /* Database. To date (October 2007), the character with the most */ - /* variants is U+908A, having 8~such IVS. */ - /* */ - /* Adobe and MS decided to support IVS with a new cmap subtable */ - /* (format~14). It is an odd subtable because it is not a mapping of */ - /* input code points to glyphs, but contains lists of all variants */ - /* supported by the font. */ - /* */ - /* A variant may be either `default' or `non-default'. A default */ - /* variant is the one you will get for that code point if you look it */ - /* up in the standard Unicode cmap. A non-default variant is a */ - /* different glyph. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetCharVariantIndex */ - /* */ - /* <Description> */ - /* Return the glyph index of a given character code as modified by */ - /* the variation selector. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* charcode :: */ - /* The character code point in Unicode. */ - /* */ - /* variantSelector :: */ - /* The Unicode code point of the variation selector. */ - /* */ - /* <Return> */ - /* The glyph index. 0~means either `undefined character code', or */ - /* `undefined selector code', or `no variation selector cmap */ - /* subtable', or `current CharMap is not Unicode'. */ - /* */ - /* <Note> */ - /* If you use FreeType to manipulate the contents of font files */ - /* directly, be aware that the glyph index returned by this function */ - /* doesn't always correspond to the internal indices used within */ - /* the file. This is done to ensure that value~0 always corresponds */ - /* to the `missing glyph'. */ - /* */ - /* This function is only meaningful if */ - /* a) the font has a variation selector cmap sub table, */ - /* and */ - /* b) the current charmap has a Unicode encoding. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Face_GetCharVariantIndex( FT_Face face, - FT_ULong charcode, - FT_ULong variantSelector ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetCharVariantIsDefault */ - /* */ - /* <Description> */ - /* Check whether this variant of this Unicode character is the one to */ - /* be found in the `cmap'. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* charcode :: */ - /* The character codepoint in Unicode. */ - /* */ - /* variantSelector :: */ - /* The Unicode codepoint of the variation selector. */ - /* */ - /* <Return> */ - /* 1~if found in the standard (Unicode) cmap, 0~if found in the */ - /* variation selector cmap, or -1 if it is not a variant. */ - /* */ - /* <Note> */ - /* This function is only meaningful if the font has a variation */ - /* selector cmap subtable. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_Int ) - FT_Face_GetCharVariantIsDefault( FT_Face face, - FT_ULong charcode, - FT_ULong variantSelector ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetVariantSelectors */ - /* */ - /* <Description> */ - /* Return a zero-terminated list of Unicode variant selectors found */ - /* in the font. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* <Return> */ - /* A pointer to an array of selector code points, or NULL if there is */ - /* no valid variant selector cmap subtable. */ - /* */ - /* <Note> */ - /* The last item in the array is~0; the array is owned by the */ - /* @FT_Face object but can be overwritten or released on the next */ - /* call to a FreeType function. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_UInt32* ) - FT_Face_GetVariantSelectors( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetVariantsOfChar */ - /* */ - /* <Description> */ - /* Return a zero-terminated list of Unicode variant selectors found */ - /* for the specified character code. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* charcode :: */ - /* The character codepoint in Unicode. */ - /* */ - /* <Return> */ - /* A pointer to an array of variant selector code points which are */ - /* active for the given character, or NULL if the corresponding list */ - /* is empty. */ - /* */ - /* <Note> */ - /* The last item in the array is~0; the array is owned by the */ - /* @FT_Face object but can be overwritten or released on the next */ - /* call to a FreeType function. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_UInt32* ) - FT_Face_GetVariantsOfChar( FT_Face face, - FT_ULong charcode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_GetCharsOfVariant */ - /* */ - /* <Description> */ - /* Return a zero-terminated list of Unicode character codes found for */ - /* the specified variant selector. */ - /* */ - /* <Input> */ - /* face :: */ - /* A handle to the source face object. */ - /* */ - /* variantSelector :: */ - /* The variant selector code point in Unicode. */ - /* */ - /* <Return> */ - /* A list of all the code points which are specified by this selector */ - /* (both default and non-default codes are returned) or NULL if there */ - /* is no valid cmap or the variant selector is invalid. */ - /* */ - /* <Note> */ - /* The last item in the array is~0; the array is owned by the */ - /* @FT_Face object but can be overwritten or released on the next */ - /* call to a FreeType function. */ - /* */ - /* <Since> */ - /* 2.3.6 */ - /* */ - FT_EXPORT( FT_UInt32* ) - FT_Face_GetCharsOfVariant( FT_Face face, - FT_ULong variantSelector ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /* <Title> */ - /* Computations */ - /* */ - /* <Abstract> */ - /* Crunching fixed numbers and vectors. */ - /* */ - /* <Description> */ - /* This section contains various functions used to perform */ - /* computations on 16.16 fixed-float numbers or 2d vectors. */ - /* */ - /* <Order> */ - /* FT_MulDiv */ - /* FT_MulFix */ - /* FT_DivFix */ - /* FT_RoundFix */ - /* FT_CeilFix */ - /* FT_FloorFix */ - /* FT_Vector_Transform */ - /* FT_Matrix_Multiply */ - /* FT_Matrix_Invert */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulDiv */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation `(a*b)/c' */ - /* with maximal accuracy (it uses a 64-bit intermediate integer */ - /* whenever necessary). */ - /* */ - /* This function isn't necessarily as fast as some processor specific */ - /* operations, but is at least completely portable. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. */ - /* c :: The divisor. */ - /* */ - /* <Return> */ - /* The result of `(a*b)/c'. This function never traps when trying to */ - /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ - /* on the signs of `a' and `b'. */ - /* */ - FT_EXPORT( FT_Long ) - FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ); - - - /* */ - - /* The following #if 0 ... #endif is for the documentation formatter, */ - /* hiding the internal `FT_MULFIX_INLINED' macro. */ - -#if 0 - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulFix */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation */ - /* `(a*b)/0x10000' with maximal accuracy. Most of the time this is */ - /* used to multiply a given value by a 16.16 fixed float factor. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ - /* */ - /* <Return> */ - /* The result of `(a*b)/0x10000'. */ - /* */ - /* <Note> */ - /* This function has been optimized for the case where the absolute */ - /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ - /* As this happens mainly when scaling from notional units to */ - /* fractional pixels in FreeType, it resulted in noticeable speed */ - /* improvements between versions 2.x and 1.x. */ - /* */ - /* As a conclusion, always try to place a 16.16 factor as the */ - /* _second_ argument of this function; this can make a great */ - /* difference. */ - /* */ - FT_EXPORT( FT_Long ) - FT_MulFix( FT_Long a, - FT_Long b ); - - /* */ -#endif - -#ifdef FT_MULFIX_INLINED -#define FT_MulFix( a, b ) FT_MULFIX_INLINED( a, b ) -#else - FT_EXPORT( FT_Long ) - FT_MulFix( FT_Long a, - FT_Long b ); -#endif - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_DivFix */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation */ - /* `(a*0x10000)/b' with maximal accuracy. Most of the time, this is */ - /* used to divide a given value by a 16.16 fixed float factor. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ - /* */ - /* <Return> */ - /* The result of `(a*0x10000)/b'. */ - /* */ - /* <Note> */ - /* The optimization for FT_DivFix() is simple: If (a~<<~16) fits in */ - /* 32~bits, then the division is computed directly. Otherwise, we */ - /* use a specialized version of @FT_MulDiv. */ - /* */ - FT_EXPORT( FT_Long ) - FT_DivFix( FT_Long a, - FT_Long b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_RoundFix */ - /* */ - /* <Description> */ - /* A very simple function used to round a 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number to be rounded. */ - /* */ - /* <Return> */ - /* The result of `(a + 0x8000) & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_RoundFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_CeilFix */ - /* */ - /* <Description> */ - /* A very simple function used to compute the ceiling function of a */ - /* 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number for which the ceiling function is to be computed. */ - /* */ - /* <Return> */ - /* The result of `(a + 0x10000 - 1) & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_CeilFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_FloorFix */ - /* */ - /* <Description> */ - /* A very simple function used to compute the floor function of a */ - /* 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number for which the floor function is to be computed. */ - /* */ - /* <Return> */ - /* The result of `a & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_FloorFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Vector_Transform */ - /* */ - /* <Description> */ - /* Transform a single vector through a 2x2 matrix. */ - /* */ - /* <InOut> */ - /* vector :: The target vector to transform. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the source 2x2 matrix. */ - /* */ - /* <Note> */ - /* The result is undefined if either `vector' or `matrix' is invalid. */ - /* */ - FT_EXPORT( void ) - FT_Vector_Transform( FT_Vector* vec, - const FT_Matrix* matrix ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* version */ - /* */ - /* <Title> */ - /* FreeType Version */ - /* */ - /* <Abstract> */ - /* Functions and macros related to FreeType versions. */ - /* */ - /* <Description> */ - /* Note that those functions and macros are of limited use because */ - /* even a new release of FreeType with only documentation changes */ - /* increases the version number. */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @enum: - * FREETYPE_XXX - * - * @description: - * These three macros identify the FreeType source code version. - * Use @FT_Library_Version to access them at runtime. - * - * @values: - * FREETYPE_MAJOR :: The major version number. - * FREETYPE_MINOR :: The minor version number. - * FREETYPE_PATCH :: The patch level. - * - * @note: - * The version number of FreeType if built as a dynamic link library - * with the `libtool' package is _not_ controlled by these three - * macros. - * - */ -#define FREETYPE_MAJOR 2 -#define FREETYPE_MINOR 3 -#define FREETYPE_PATCH 11 - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Library_Version */ - /* */ - /* <Description> */ - /* Return the version of the FreeType library being used. This is */ - /* useful when dynamically linking to the library, since one cannot */ - /* use the macros @FREETYPE_MAJOR, @FREETYPE_MINOR, and */ - /* @FREETYPE_PATCH. */ - /* */ - /* <Input> */ - /* library :: A source library handle. */ - /* */ - /* <Output> */ - /* amajor :: The major version number. */ - /* */ - /* aminor :: The minor version number. */ - /* */ - /* apatch :: The patch version number. */ - /* */ - /* <Note> */ - /* The reason why this function takes a `library' argument is because */ - /* certain programs implement library initialization in a custom way */ - /* that doesn't use @FT_Init_FreeType. */ - /* */ - /* In such cases, the library version might not be available before */ - /* the library object has been created. */ - /* */ - FT_EXPORT( void ) - FT_Library_Version( FT_Library library, - FT_Int *amajor, - FT_Int *aminor, - FT_Int *apatch ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_CheckTrueTypePatents */ - /* */ - /* <Description> */ - /* Parse all bytecode instructions of a TrueType font file to check */ - /* whether any of the patented opcodes are used. This is only useful */ - /* if you want to be able to use the unpatented hinter with */ - /* fonts that do *not* use these opcodes. */ - /* */ - /* Note that this function parses *all* glyph instructions in the */ - /* font file, which may be slow. */ - /* */ - /* <Input> */ - /* face :: A face handle. */ - /* */ - /* <Return> */ - /* 1~if this is a TrueType font that uses one of the patented */ - /* opcodes, 0~otherwise. */ - /* */ - /* <Since> */ - /* 2.3.5 */ - /* */ - FT_EXPORT( FT_Bool ) - FT_Face_CheckTrueTypePatents( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Face_SetUnpatentedHinting */ - /* */ - /* <Description> */ - /* Enable or disable the unpatented hinter for a given face. */ - /* Only enable it if you have determined that the face doesn't */ - /* use any patented opcodes (see @FT_Face_CheckTrueTypePatents). */ - /* */ - /* <Input> */ - /* face :: A face handle. */ - /* */ - /* value :: New boolean setting. */ - /* */ - /* <Return> */ - /* The old setting value. This will always be false if this is not */ - /* an SFNT font, or if the unpatented hinter is not compiled in this */ - /* instance of the library. */ - /* */ - /* <Since> */ - /* 2.3.5 */ - /* */ - FT_EXPORT( FT_Bool ) - FT_Face_SetUnpatentedHinting( FT_Face face, - FT_Bool value ); - - /* */ - - -FT_END_HEADER - -#endif /* __FREETYPE_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftadvanc.h b/GRRLIB/lib/freetype/include/freetype/ftadvanc.h deleted file mode 100644 index b2451be..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftadvanc.h +++ /dev/null @@ -1,179 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftadvanc.h */ -/* */ -/* Quick computation of advance widths (specification only). */ -/* */ -/* Copyright 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTADVANC_H__ -#define __FTADVANC_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /************************************************************************** - * - * @section: - * quick_advance - * - * @title: - * Quick retrieval of advance values - * - * @abstract: - * Retrieve horizontal and vertical advance values without processing - * glyph outlines, if possible. - * - * @description: - * This section contains functions to quickly extract advance values - * without handling glyph outlines, if possible. - */ - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* FT_ADVANCE_FLAG_FAST_ONLY */ - /* */ - /* <Description> */ - /* A bit-flag to be OR-ed with the `flags' parameter of the */ - /* @FT_Get_Advance and @FT_Get_Advances functions. */ - /* */ - /* If set, it indicates that you want these functions to fail if the */ - /* corresponding hinting mode or font driver doesn't allow for very */ - /* quick advance computation. */ - /* */ - /* Typically, glyphs which are either unscaled, unhinted, bitmapped, */ - /* or light-hinted can have their advance width computed very */ - /* quickly. */ - /* */ - /* Normal and bytecode hinted modes, which require loading, scaling, */ - /* and hinting of the glyph outline, are extremely slow by */ - /* comparison. */ - /* */ -#define FT_ADVANCE_FLAG_FAST_ONLY 0x20000000UL - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Advance */ - /* */ - /* <Description> */ - /* Retrieve the advance value of a given glyph outline in an */ - /* @FT_Face. By default, the unhinted advance is returned in font */ - /* units. */ - /* */ - /* <Input> */ - /* face :: The source @FT_Face handle. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* load_flags :: A set of bit flags similar to those used when */ - /* calling @FT_Load_Glyph, used to determine what kind */ - /* of advances you need. */ - /* <Output> */ - /* padvance :: The advance value, in either font units or 16.16 */ - /* format. */ - /* */ - /* If @FT_LOAD_VERTICAL_LAYOUT is set, this is the */ - /* vertical advance corresponding to a vertical layout. */ - /* Otherwise, it is the horizontal advance in a */ - /* horizontal layout. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ - /* if the corresponding font backend doesn't have a quick way to */ - /* retrieve the advances. */ - /* */ - /* A scaled advance is returned in 16.16 format but isn't transformed */ - /* by the affine transformation specified by @FT_Set_Transform. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Advance( FT_Face face, - FT_UInt gindex, - FT_Int32 load_flags, - FT_Fixed *padvance ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Advances */ - /* */ - /* <Description> */ - /* Retrieve the advance values of several glyph outlines in an */ - /* @FT_Face. By default, the unhinted advances are returned in font */ - /* units. */ - /* */ - /* <Input> */ - /* face :: The source @FT_Face handle. */ - /* */ - /* start :: The first glyph index. */ - /* */ - /* count :: The number of advance values you want to retrieve. */ - /* */ - /* load_flags :: A set of bit flags similar to those used when */ - /* calling @FT_Load_Glyph. */ - /* */ - /* <Output> */ - /* padvance :: The advances, in either font units or 16.16 format. */ - /* This array must contain at least `count' elements. */ - /* */ - /* If @FT_LOAD_VERTICAL_LAYOUT is set, these are the */ - /* vertical advances corresponding to a vertical layout. */ - /* Otherwise, they are the horizontal advances in a */ - /* horizontal layout. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and */ - /* if the corresponding font backend doesn't have a quick way to */ - /* retrieve the advances. */ - /* */ - /* Scaled advances are returned in 16.16 format but aren't */ - /* transformed by the affine transformation specified by */ - /* @FT_Set_Transform. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Advances( FT_Face face, - FT_UInt start, - FT_UInt count, - FT_Int32 load_flags, - FT_Fixed *padvances ); - -/* */ - - -FT_END_HEADER - -#endif /* __FTADVANC_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftbbox.h b/GRRLIB/lib/freetype/include/freetype/ftbbox.h deleted file mode 100644 index 01fe3fb..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftbbox.h +++ /dev/null @@ -1,94 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbbox.h */ -/* */ -/* FreeType exact bbox computation (specification). */ -/* */ -/* Copyright 1996-2001, 2003, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This component has a _single_ role: to compute exact outline bounding */ - /* boxes. */ - /* */ - /* It is separated from the rest of the engine for various technical */ - /* reasons. It may well be integrated in `ftoutln' later. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTBBOX_H__ -#define __FTBBOX_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_BBox */ - /* */ - /* <Description> */ - /* Compute the exact bounding box of an outline. This is slower */ - /* than computing the control box. However, it uses an advanced */ - /* algorithm which returns _very_ quickly when the two boxes */ - /* coincide. Otherwise, the outline Bézier arcs are traversed to */ - /* extract their extrema. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source outline. */ - /* */ - /* <Output> */ - /* abbox :: The outline's exact bounding box. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Get_BBox( FT_Outline* outline, - FT_BBox *abbox ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTBBOX_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftbdf.h b/GRRLIB/lib/freetype/include/freetype/ftbdf.h deleted file mode 100644 index 4f8baf8..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftbdf.h +++ /dev/null @@ -1,209 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbdf.h */ -/* */ -/* FreeType API for accessing BDF-specific strings (specification). */ -/* */ -/* Copyright 2002, 2003, 2004, 2006, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTBDF_H__ -#define __FTBDF_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* bdf_fonts */ - /* */ - /* <Title> */ - /* BDF and PCF Files */ - /* */ - /* <Abstract> */ - /* BDF and PCF specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of functions specific to BDF */ - /* and PCF fonts. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @enum: - * FT_PropertyType - * - * @description: - * A list of BDF property types. - * - * @values: - * BDF_PROPERTY_TYPE_NONE :: - * Value~0 is used to indicate a missing property. - * - * BDF_PROPERTY_TYPE_ATOM :: - * Property is a string atom. - * - * BDF_PROPERTY_TYPE_INTEGER :: - * Property is a 32-bit signed integer. - * - * BDF_PROPERTY_TYPE_CARDINAL :: - * Property is a 32-bit unsigned integer. - */ - typedef enum BDF_PropertyType_ - { - BDF_PROPERTY_TYPE_NONE = 0, - BDF_PROPERTY_TYPE_ATOM = 1, - BDF_PROPERTY_TYPE_INTEGER = 2, - BDF_PROPERTY_TYPE_CARDINAL = 3 - - } BDF_PropertyType; - - - /********************************************************************** - * - * @type: - * BDF_Property - * - * @description: - * A handle to a @BDF_PropertyRec structure to model a given - * BDF/PCF property. - */ - typedef struct BDF_PropertyRec_* BDF_Property; - - - /********************************************************************** - * - * @struct: - * BDF_PropertyRec - * - * @description: - * This structure models a given BDF/PCF property. - * - * @fields: - * type :: - * The property type. - * - * u.atom :: - * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. - * - * u.integer :: - * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. - * - * u.cardinal :: - * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. - */ - typedef struct BDF_PropertyRec_ - { - BDF_PropertyType type; - union { - const char* atom; - FT_Int32 integer; - FT_UInt32 cardinal; - - } u; - - } BDF_PropertyRec; - - - /********************************************************************** - * - * @function: - * FT_Get_BDF_Charset_ID - * - * @description: - * Retrieve a BDF font character set identity, according to - * the BDF specification. - * - * @input: - * face :: - * A handle to the input face. - * - * @output: - * acharset_encoding :: - * Charset encoding, as a C~string, owned by the face. - * - * acharset_registry :: - * Charset registry, as a C~string, owned by the face. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with BDF faces, returning an error otherwise. - */ - FT_EXPORT( FT_Error ) - FT_Get_BDF_Charset_ID( FT_Face face, - const char* *acharset_encoding, - const char* *acharset_registry ); - - - /********************************************************************** - * - * @function: - * FT_Get_BDF_Property - * - * @description: - * Retrieve a BDF property from a BDF or PCF font file. - * - * @input: - * face :: A handle to the input face. - * - * name :: The property name. - * - * @output: - * aproperty :: The property. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function works with BDF _and_ PCF fonts. It returns an error - * otherwise. It also returns an error if the property is not in the - * font. - * - * A `property' is a either key-value pair within the STARTPROPERTIES - * ... ENDPROPERTIES block of a BDF font or a key-value pair from the - * `info->props' array within a `FontRec' structure of a PCF font. - * - * Integer properties are always stored as `signed' within PCF fonts; - * consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value - * for BDF fonts only. - * - * In case of error, `aproperty->type' is always set to - * @BDF_PROPERTY_TYPE_NONE. - */ - FT_EXPORT( FT_Error ) - FT_Get_BDF_Property( FT_Face face, - const char* prop_name, - BDF_PropertyRec *aproperty ); - - /* */ - -FT_END_HEADER - -#endif /* __FTBDF_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftbitmap.h b/GRRLIB/lib/freetype/include/freetype/ftbitmap.h deleted file mode 100644 index 9274236..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftbitmap.h +++ /dev/null @@ -1,227 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbitmap.h */ -/* */ -/* FreeType utility functions for bitmaps (specification). */ -/* */ -/* Copyright 2004, 2005, 2006, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTBITMAP_H__ -#define __FTBITMAP_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* bitmap_handling */ - /* */ - /* <Title> */ - /* Bitmap Handling */ - /* */ - /* <Abstract> */ - /* Handling FT_Bitmap objects. */ - /* */ - /* <Description> */ - /* This section contains functions for converting FT_Bitmap objects. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_New */ - /* */ - /* <Description> */ - /* Initialize a pointer to an @FT_Bitmap structure. */ - /* */ - /* <InOut> */ - /* abitmap :: A pointer to the bitmap structure. */ - /* */ - FT_EXPORT( void ) - FT_Bitmap_New( FT_Bitmap *abitmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_Copy */ - /* */ - /* <Description> */ - /* Copy a bitmap into another one. */ - /* */ - /* <Input> */ - /* library :: A handle to a library object. */ - /* */ - /* source :: A handle to the source bitmap. */ - /* */ - /* <Output> */ - /* target :: A handle to the target bitmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Bitmap_Copy( FT_Library library, - const FT_Bitmap *source, - FT_Bitmap *target); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_Embolden */ - /* */ - /* <Description> */ - /* Embolden a bitmap. The new bitmap will be about `xStrength' */ - /* pixels wider and `yStrength' pixels higher. The left and bottom */ - /* borders are kept unchanged. */ - /* */ - /* <Input> */ - /* library :: A handle to a library object. */ - /* */ - /* xStrength :: How strong the glyph is emboldened horizontally. */ - /* Expressed in 26.6 pixel format. */ - /* */ - /* yStrength :: How strong the glyph is emboldened vertically. */ - /* Expressed in 26.6 pixel format. */ - /* */ - /* <InOut> */ - /* bitmap :: A handle to the target bitmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The current implementation restricts `xStrength' to be less than */ - /* or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */ - /* */ - /* If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, */ - /* you should call @FT_GlyphSlot_Own_Bitmap on the slot first. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Bitmap_Embolden( FT_Library library, - FT_Bitmap* bitmap, - FT_Pos xStrength, - FT_Pos yStrength ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_Convert */ - /* */ - /* <Description> */ - /* Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, or 8bpp to a */ - /* bitmap object with depth 8bpp, making the number of used bytes per */ - /* line (a.k.a. the `pitch') a multiple of `alignment'. */ - /* */ - /* <Input> */ - /* library :: A handle to a library object. */ - /* */ - /* source :: The source bitmap. */ - /* */ - /* alignment :: The pitch of the bitmap is a multiple of this */ - /* parameter. Common values are 1, 2, or 4. */ - /* */ - /* <Output> */ - /* target :: The target bitmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* It is possible to call @FT_Bitmap_Convert multiple times without */ - /* calling @FT_Bitmap_Done (the memory is simply reallocated). */ - /* */ - /* Use @FT_Bitmap_Done to finally remove the bitmap object. */ - /* */ - /* The `library' argument is taken to have access to FreeType's */ - /* memory handling functions. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Bitmap_Convert( FT_Library library, - const FT_Bitmap *source, - FT_Bitmap *target, - FT_Int alignment ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GlyphSlot_Own_Bitmap */ - /* */ - /* <Description> */ - /* Make sure that a glyph slot owns `slot->bitmap'. */ - /* */ - /* <Input> */ - /* slot :: The glyph slot. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function is to be used in combination with */ - /* @FT_Bitmap_Embolden. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot slot ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Bitmap_Done */ - /* */ - /* <Description> */ - /* Destroy a bitmap object created with @FT_Bitmap_New. */ - /* */ - /* <Input> */ - /* library :: A handle to a library object. */ - /* */ - /* bitmap :: The bitmap object to be freed. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The `library' argument is taken to have access to FreeType's */ - /* memory handling functions. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Bitmap_Done( FT_Library library, - FT_Bitmap *bitmap ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTBITMAP_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftcache.h b/GRRLIB/lib/freetype/include/freetype/ftcache.h deleted file mode 100644 index 0916d70..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftcache.h +++ /dev/null @@ -1,1125 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcache.h */ -/* */ -/* FreeType Cache subsystem (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTCACHE_H__ -#define __FTCACHE_H__ - - -#include <ft2build.h> -#include FT_GLYPH_H - - -FT_BEGIN_HEADER - - - /************************************************************************* - * - * <Section> - * cache_subsystem - * - * <Title> - * Cache Sub-System - * - * <Abstract> - * How to cache face, size, and glyph data with FreeType~2. - * - * <Description> - * This section describes the FreeType~2 cache sub-system, which is used - * to limit the number of concurrently opened @FT_Face and @FT_Size - * objects, as well as caching information like character maps and glyph - * images while limiting their maximum memory usage. - * - * Note that all types and functions begin with the `FTC_' prefix. - * - * The cache is highly portable and thus doesn't know anything about the - * fonts installed on your system, or how to access them. This implies - * the following scheme: - * - * First, available or installed font faces are uniquely identified by - * @FTC_FaceID values, provided to the cache by the client. Note that - * the cache only stores and compares these values, and doesn't try to - * interpret them in any way. - * - * Second, the cache calls, only when needed, a client-provided function - * to convert a @FTC_FaceID into a new @FT_Face object. The latter is - * then completely managed by the cache, including its termination - * through @FT_Done_Face. - * - * Clients are free to map face IDs to anything else. The most simple - * usage is to associate them to a (pathname,face_index) pair that is - * used to call @FT_New_Face. However, more complex schemes are also - * possible. - * - * Note that for the cache to work correctly, the face ID values must be - * *persistent*, which means that the contents they point to should not - * change at runtime, or that their value should not become invalid. - * - * If this is unavoidable (e.g., when a font is uninstalled at runtime), - * you should call @FTC_Manager_RemoveFaceID as soon as possible, to let - * the cache get rid of any references to the old @FTC_FaceID it may - * keep internally. Failure to do so will lead to incorrect behaviour - * or even crashes. - * - * To use the cache, start with calling @FTC_Manager_New to create a new - * @FTC_Manager object, which models a single cache instance. You can - * then look up @FT_Face and @FT_Size objects with - * @FTC_Manager_LookupFace and @FTC_Manager_LookupSize, respectively. - * - * If you want to use the charmap caching, call @FTC_CMapCache_New, then - * later use @FTC_CMapCache_Lookup to perform the equivalent of - * @FT_Get_Char_Index, only much faster. - * - * If you want to use the @FT_Glyph caching, call @FTC_ImageCache, then - * later use @FTC_ImageCache_Lookup to retrieve the corresponding - * @FT_Glyph objects from the cache. - * - * If you need lots of small bitmaps, it is much more memory efficient - * to call @FTC_SBitCache_New followed by @FTC_SBitCache_Lookup. This - * returns @FTC_SBitRec structures, which are used to store small - * bitmaps directly. (A small bitmap is one whose metrics and - * dimensions all fit into 8-bit integers). - * - * We hope to also provide a kerning cache in the near future. - * - * - * <Order> - * FTC_Manager - * FTC_FaceID - * FTC_Face_Requester - * - * FTC_Manager_New - * FTC_Manager_Reset - * FTC_Manager_Done - * FTC_Manager_LookupFace - * FTC_Manager_LookupSize - * FTC_Manager_RemoveFaceID - * - * FTC_Node - * FTC_Node_Unref - * - * FTC_ImageCache - * FTC_ImageCache_New - * FTC_ImageCache_Lookup - * - * FTC_SBit - * FTC_SBitCache - * FTC_SBitCache_New - * FTC_SBitCache_Lookup - * - * FTC_CMapCache - * FTC_CMapCache_New - * FTC_CMapCache_Lookup - * - *************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** BASIC TYPE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: FTC_FaceID - * - * @description: - * An opaque pointer type that is used to identity face objects. The - * contents of such objects is application-dependent. - * - * These pointers are typically used to point to a user-defined - * structure containing a font file path, and face index. - * - * @note: - * Never use NULL as a valid @FTC_FaceID. - * - * Face IDs are passed by the client to the cache manager, which calls, - * when needed, the @FTC_Face_Requester to translate them into new - * @FT_Face objects. - * - * If the content of a given face ID changes at runtime, or if the value - * becomes invalid (e.g., when uninstalling a font), you should - * immediately call @FTC_Manager_RemoveFaceID before any other cache - * function. - * - * Failure to do so will result in incorrect behaviour or even - * memory leaks and crashes. - */ - typedef FT_Pointer FTC_FaceID; - - - /************************************************************************ - * - * @functype: - * FTC_Face_Requester - * - * @description: - * A callback function provided by client applications. It is used by - * the cache manager to translate a given @FTC_FaceID into a new valid - * @FT_Face object, on demand. - * - * <Input> - * face_id :: - * The face ID to resolve. - * - * library :: - * A handle to a FreeType library object. - * - * req_data :: - * Application-provided request data (see note below). - * - * <Output> - * aface :: - * A new @FT_Face handle. - * - * <Return> - * FreeType error code. 0~means success. - * - * <Note> - * The third parameter `req_data' is the same as the one passed by the - * client when @FTC_Manager_New is called. - * - * The face requester should not perform funny things on the returned - * face object, like creating a new @FT_Size for it, or setting a - * transformation through @FT_Set_Transform! - */ - typedef FT_Error - (*FTC_Face_Requester)( FTC_FaceID face_id, - FT_Library library, - FT_Pointer request_data, - FT_Face* aface ); - - /* */ - -#define FT_POINTER_TO_ULONG( p ) ( (FT_ULong)(FT_Pointer)(p) ) - -#define FTC_FACE_ID_HASH( i ) \ - ((FT_UInt32)(( FT_POINTER_TO_ULONG( i ) >> 3 ) ^ \ - ( FT_POINTER_TO_ULONG( i ) << 7 ) ) ) - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE MANAGER OBJECT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Manager */ - /* */ - /* <Description> */ - /* This object corresponds to one instance of the cache-subsystem. */ - /* It is used to cache one or more @FT_Face objects, along with */ - /* corresponding @FT_Size objects. */ - /* */ - /* The manager intentionally limits the total number of opened */ - /* @FT_Face and @FT_Size objects to control memory usage. See the */ - /* `max_faces' and `max_sizes' parameters of @FTC_Manager_New. */ - /* */ - /* The manager is also used to cache `nodes' of various types while */ - /* limiting their total memory usage. */ - /* */ - /* All limitations are enforced by keeping lists of managed objects */ - /* in most-recently-used order, and flushing old nodes to make room */ - /* for new ones. */ - /* */ - typedef struct FTC_ManagerRec_* FTC_Manager; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Node */ - /* */ - /* <Description> */ - /* An opaque handle to a cache node object. Each cache node is */ - /* reference-counted. A node with a count of~0 might be flushed */ - /* out of a full cache whenever a lookup request is performed. */ - /* */ - /* If you lookup nodes, you have the ability to `acquire' them, i.e., */ - /* to increment their reference count. This will prevent the node */ - /* from being flushed out of the cache until you explicitly `release' */ - /* it (see @FTC_Node_Unref). */ - /* */ - /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ - /* */ - typedef struct FTC_NodeRec_* FTC_Node; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_New */ - /* */ - /* <Description> */ - /* Create a new cache manager. */ - /* */ - /* <Input> */ - /* library :: The parent FreeType library handle to use. */ - /* */ - /* max_faces :: Maximum number of opened @FT_Face objects managed by */ - /* this cache instance. Use~0 for defaults. */ - /* */ - /* max_sizes :: Maximum number of opened @FT_Size objects managed by */ - /* this cache instance. Use~0 for defaults. */ - /* */ - /* max_bytes :: Maximum number of bytes to use for cached data nodes. */ - /* Use~0 for defaults. Note that this value does not */ - /* account for managed @FT_Face and @FT_Size objects. */ - /* */ - /* requester :: An application-provided callback used to translate */ - /* face IDs into real @FT_Face objects. */ - /* */ - /* req_data :: A generic pointer that is passed to the requester */ - /* each time it is called (see @FTC_Face_Requester). */ - /* */ - /* <Output> */ - /* amanager :: A handle to a new manager object. 0~in case of */ - /* failure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_New( FT_Library library, - FT_UInt max_faces, - FT_UInt max_sizes, - FT_ULong max_bytes, - FTC_Face_Requester requester, - FT_Pointer req_data, - FTC_Manager *amanager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Reset */ - /* */ - /* <Description> */ - /* Empty a given cache manager. This simply gets rid of all the */ - /* currently cached @FT_Face and @FT_Size objects within the manager. */ - /* */ - /* <InOut> */ - /* manager :: A handle to the manager. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Reset( FTC_Manager manager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Done */ - /* */ - /* <Description> */ - /* Destroy a given manager after emptying it. */ - /* */ - /* <Input> */ - /* manager :: A handle to the target cache manager object. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Done( FTC_Manager manager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_LookupFace */ - /* */ - /* <Description> */ - /* Retrieve the @FT_Face object that corresponds to a given face ID */ - /* through a cache manager. */ - /* */ - /* <Input> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* face_id :: The ID of the face object. */ - /* */ - /* <Output> */ - /* aface :: A handle to the face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The returned @FT_Face object is always owned by the manager. You */ - /* should never try to discard it yourself. */ - /* */ - /* The @FT_Face object doesn't necessarily have a current size object */ - /* (i.e., face->size can be 0). If you need a specific `font size', */ - /* use @FTC_Manager_LookupSize instead. */ - /* */ - /* Never change the face's transformation matrix (i.e., never call */ - /* the @FT_Set_Transform function) on a returned face! If you need */ - /* to transform glyphs, do it yourself after glyph loading. */ - /* */ - /* When you perform a lookup, out-of-memory errors are detected */ - /* _within_ the lookup and force incremental flushes of the cache */ - /* until enough memory is released for the lookup to succeed. */ - /* */ - /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ - /* already been completely flushed, and still no memory was available */ - /* for the operation. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_LookupFace( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_ScalerRec */ - /* */ - /* <Description> */ - /* A structure used to describe a given character size in either */ - /* pixels or points to the cache manager. See */ - /* @FTC_Manager_LookupSize. */ - /* */ - /* <Fields> */ - /* face_id :: The source face ID. */ - /* */ - /* width :: The character width. */ - /* */ - /* height :: The character height. */ - /* */ - /* pixel :: A Boolean. If 1, the `width' and `height' fields are */ - /* interpreted as integer pixel character sizes. */ - /* Otherwise, they are expressed as 1/64th of points. */ - /* */ - /* x_res :: Only used when `pixel' is value~0 to indicate the */ - /* horizontal resolution in dpi. */ - /* */ - /* y_res :: Only used when `pixel' is value~0 to indicate the */ - /* vertical resolution in dpi. */ - /* */ - /* <Note> */ - /* This type is mainly used to retrieve @FT_Size objects through the */ - /* cache manager. */ - /* */ - typedef struct FTC_ScalerRec_ - { - FTC_FaceID face_id; - FT_UInt width; - FT_UInt height; - FT_Int pixel; - FT_UInt x_res; - FT_UInt y_res; - - } FTC_ScalerRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_Scaler */ - /* */ - /* <Description> */ - /* A handle to an @FTC_ScalerRec structure. */ - /* */ - typedef struct FTC_ScalerRec_* FTC_Scaler; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_LookupSize */ - /* */ - /* <Description> */ - /* Retrieve the @FT_Size object that corresponds to a given */ - /* @FTC_ScalerRec pointer through a cache manager. */ - /* */ - /* <Input> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* scaler :: A scaler handle. */ - /* */ - /* <Output> */ - /* asize :: A handle to the size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The returned @FT_Size object is always owned by the manager. You */ - /* should never try to discard it by yourself. */ - /* */ - /* You can access the parent @FT_Face object simply as `size->face' */ - /* if you need it. Note that this object is also owned by the */ - /* manager. */ - /* */ - /* <Note> */ - /* When you perform a lookup, out-of-memory errors are detected */ - /* _within_ the lookup and force incremental flushes of the cache */ - /* until enough memory is released for the lookup to succeed. */ - /* */ - /* If a lookup fails with `FT_Err_Out_Of_Memory' the cache has */ - /* already been completely flushed, and still no memory is available */ - /* for the operation. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_LookupSize( FTC_Manager manager, - FTC_Scaler scaler, - FT_Size *asize ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Node_Unref */ - /* */ - /* <Description> */ - /* Decrement a cache node's internal reference count. When the count */ - /* reaches 0, it is not destroyed but becomes eligible for subsequent */ - /* cache flushes. */ - /* */ - /* <Input> */ - /* node :: The cache node handle. */ - /* */ - /* manager :: The cache manager handle. */ - /* */ - FT_EXPORT( void ) - FTC_Node_Unref( FTC_Node node, - FTC_Manager manager ); - - - /************************************************************************* - * - * @function: - * FTC_Manager_RemoveFaceID - * - * @description: - * A special function used to indicate to the cache manager that - * a given @FTC_FaceID is no longer valid, either because its - * content changed, or because it was deallocated or uninstalled. - * - * @input: - * manager :: - * The cache manager handle. - * - * face_id :: - * The @FTC_FaceID to be removed. - * - * @note: - * This function flushes all nodes from the cache corresponding to this - * `face_id', with the exception of nodes with a non-null reference - * count. - * - * Such nodes are however modified internally so as to never appear - * in later lookups with the same `face_id' value, and to be immediately - * destroyed when released by all their users. - * - */ - FT_EXPORT( void ) - FTC_Manager_RemoveFaceID( FTC_Manager manager, - FTC_FaceID face_id ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - /************************************************************************* - * - * @type: - * FTC_CMapCache - * - * @description: - * An opaque handle used to model a charmap cache. This cache is to - * hold character codes -> glyph indices mappings. - * - */ - typedef struct FTC_CMapCacheRec_* FTC_CMapCache; - - - /************************************************************************* - * - * @function: - * FTC_CMapCache_New - * - * @description: - * Create a new charmap cache. - * - * @input: - * manager :: - * A handle to the cache manager. - * - * @output: - * acache :: - * A new cache handle. NULL in case of error. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * Like all other caches, this one will be destroyed with the cache - * manager. - * - */ - FT_EXPORT( FT_Error ) - FTC_CMapCache_New( FTC_Manager manager, - FTC_CMapCache *acache ); - - - /************************************************************************ - * - * @function: - * FTC_CMapCache_Lookup - * - * @description: - * Translate a character code into a glyph index, using the charmap - * cache. - * - * @input: - * cache :: - * A charmap cache handle. - * - * face_id :: - * The source face ID. - * - * cmap_index :: - * The index of the charmap in the source face. Any negative value - * means to use the cache @FT_Face's default charmap. - * - * char_code :: - * The character code (in the corresponding charmap). - * - * @return: - * Glyph index. 0~means `no glyph'. - * - */ - FT_EXPORT( FT_UInt ) - FTC_CMapCache_Lookup( FTC_CMapCache cache, - FTC_FaceID face_id, - FT_Int cmap_index, - FT_UInt32 char_code ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** IMAGE CACHE OBJECT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /************************************************************************* - * - * @struct: - * FTC_ImageTypeRec - * - * @description: - * A structure used to model the type of images in a glyph cache. - * - * @fields: - * face_id :: - * The face ID. - * - * width :: - * The width in pixels. - * - * height :: - * The height in pixels. - * - * flags :: - * The load flags, as in @FT_Load_Glyph. - * - */ - typedef struct FTC_ImageTypeRec_ - { - FTC_FaceID face_id; - FT_Int width; - FT_Int height; - FT_Int32 flags; - - } FTC_ImageTypeRec; - - - /************************************************************************* - * - * @type: - * FTC_ImageType - * - * @description: - * A handle to an @FTC_ImageTypeRec structure. - * - */ - typedef struct FTC_ImageTypeRec_* FTC_ImageType; - - - /* */ - - -#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ - ( (d1)->face_id == (d2)->face_id && \ - (d1)->width == (d2)->width && \ - (d1)->flags == (d2)->flags ) - -#define FTC_IMAGE_TYPE_HASH( d ) \ - (FT_UFast)( FTC_FACE_ID_HASH( (d)->face_id ) ^ \ - ( (d)->width << 8 ) ^ (d)->height ^ \ - ( (d)->flags << 4 ) ) - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_ImageCache */ - /* */ - /* <Description> */ - /* A handle to an glyph image cache object. They are designed to */ - /* hold many distinct glyph images while not exceeding a certain */ - /* memory threshold. */ - /* */ - typedef struct FTC_ImageCacheRec_* FTC_ImageCache; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_New */ - /* */ - /* <Description> */ - /* Create a new glyph image cache. */ - /* */ - /* <Input> */ - /* manager :: The parent manager for the image cache. */ - /* */ - /* <Output> */ - /* acache :: A handle to the new glyph image cache object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_New( FTC_Manager manager, - FTC_ImageCache *acache ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_Lookup */ - /* */ - /* <Description> */ - /* Retrieve a given glyph image from a glyph image cache. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source glyph image cache. */ - /* */ - /* type :: A pointer to a glyph image type descriptor. */ - /* */ - /* gindex :: The glyph index to retrieve. */ - /* */ - /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ - /* failure. */ - /* */ - /* anode :: Used to return the address of of the corresponding cache */ - /* node after incrementing its reference count (see note */ - /* below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The returned glyph is owned and managed by the glyph image cache. */ - /* Never try to transform or discard it manually! You can however */ - /* create a copy with @FT_Glyph_Copy and modify the new one. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the glyph image, after increasing its reference */ - /* count. This ensures that the node (as well as the @FT_Glyph) will */ - /* always be kept in the cache until you call @FTC_Node_Unref to */ - /* `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the @FT_Glyph could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_Lookup( FTC_ImageCache cache, - FTC_ImageType type, - FT_UInt gindex, - FT_Glyph *aglyph, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_LookupScaler */ - /* */ - /* <Description> */ - /* A variant of @FTC_ImageCache_Lookup that uses an @FTC_ScalerRec */ - /* to specify the face ID and its size. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source glyph image cache. */ - /* */ - /* scaler :: A pointer to a scaler descriptor. */ - /* */ - /* load_flags :: The corresponding load flags. */ - /* */ - /* gindex :: The glyph index to retrieve. */ - /* */ - /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0~in case of */ - /* failure. */ - /* */ - /* anode :: Used to return the address of of the corresponding */ - /* cache node after incrementing its reference count */ - /* (see note below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The returned glyph is owned and managed by the glyph image cache. */ - /* Never try to transform or discard it manually! You can however */ - /* create a copy with @FT_Glyph_Copy and modify the new one. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the glyph image, after increasing its reference */ - /* count. This ensures that the node (as well as the @FT_Glyph) will */ - /* always be kept in the cache until you call @FTC_Node_Unref to */ - /* `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the @FT_Glyph could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - /* Calls to @FT_Set_Char_Size and friends have no effect on cached */ - /* glyphs; you should always use the FreeType cache API instead. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_LookupScaler( FTC_ImageCache cache, - FTC_Scaler scaler, - FT_ULong load_flags, - FT_UInt gindex, - FT_Glyph *aglyph, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_SBit */ - /* */ - /* <Description> */ - /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ - /* structure for details. */ - /* */ - typedef struct FTC_SBitRec_* FTC_SBit; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_SBitRec */ - /* */ - /* <Description> */ - /* A very compact structure used to describe a small glyph bitmap. */ - /* */ - /* <Fields> */ - /* width :: The bitmap width in pixels. */ - /* */ - /* height :: The bitmap height in pixels. */ - /* */ - /* left :: The horizontal distance from the pen position to the */ - /* left bitmap border (a.k.a. `left side bearing', or */ - /* `lsb'). */ - /* */ - /* top :: The vertical distance from the pen position (on the */ - /* baseline) to the upper bitmap border (a.k.a. `top */ - /* side bearing'). The distance is positive for upwards */ - /* y~coordinates. */ - /* */ - /* format :: The format of the glyph bitmap (monochrome or gray). */ - /* */ - /* max_grays :: Maximum gray level value (in the range 1 to~255). */ - /* */ - /* pitch :: The number of bytes per bitmap line. May be positive */ - /* or negative. */ - /* */ - /* xadvance :: The horizontal advance width in pixels. */ - /* */ - /* yadvance :: The vertical advance height in pixels. */ - /* */ - /* buffer :: A pointer to the bitmap pixels. */ - /* */ - typedef struct FTC_SBitRec_ - { - FT_Byte width; - FT_Byte height; - FT_Char left; - FT_Char top; - - FT_Byte format; - FT_Byte max_grays; - FT_Short pitch; - FT_Char xadvance; - FT_Char yadvance; - - FT_Byte* buffer; - - } FTC_SBitRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_SBitCache */ - /* */ - /* <Description> */ - /* A handle to a small bitmap cache. These are special cache objects */ - /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ - /* much more efficient way than the traditional glyph image cache */ - /* implemented by @FTC_ImageCache. */ - /* */ - typedef struct FTC_SBitCacheRec_* FTC_SBitCache; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_New */ - /* */ - /* <Description> */ - /* Create a new cache to store small glyph bitmaps. */ - /* */ - /* <Input> */ - /* manager :: A handle to the source cache manager. */ - /* */ - /* <Output> */ - /* acache :: A handle to the new sbit cache. NULL in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_New( FTC_Manager manager, - FTC_SBitCache *acache ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_Lookup */ - /* */ - /* <Description> */ - /* Look up a given small glyph bitmap in a given sbit cache and */ - /* `lock' it to prevent its flushing from the cache until needed. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source sbit cache. */ - /* */ - /* type :: A pointer to the glyph image type descriptor. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* <Output> */ - /* sbit :: A handle to a small bitmap descriptor. */ - /* */ - /* anode :: Used to return the address of of the corresponding cache */ - /* node after incrementing its reference count (see note */ - /* below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The small bitmap descriptor and its bit buffer are owned by the */ - /* cache and should never be freed by the application. They might */ - /* as well disappear from memory on the next cache lookup, so don't */ - /* treat them as persistent data. */ - /* */ - /* The descriptor's `buffer' field is set to~0 to indicate a missing */ - /* glyph bitmap. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the bitmap, after increasing its reference count. */ - /* This ensures that the node (as well as the image) will always be */ - /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the bitmap could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_Lookup( FTC_SBitCache cache, - FTC_ImageType type, - FT_UInt gindex, - FTC_SBit *sbit, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_LookupScaler */ - /* */ - /* <Description> */ - /* A variant of @FTC_SBitCache_Lookup that uses an @FTC_ScalerRec */ - /* to specify the face ID and its size. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source sbit cache. */ - /* */ - /* scaler :: A pointer to the scaler descriptor. */ - /* */ - /* load_flags :: The corresponding load flags. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* <Output> */ - /* sbit :: A handle to a small bitmap descriptor. */ - /* */ - /* anode :: Used to return the address of of the corresponding */ - /* cache node after incrementing its reference count */ - /* (see note below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The small bitmap descriptor and its bit buffer are owned by the */ - /* cache and should never be freed by the application. They might */ - /* as well disappear from memory on the next cache lookup, so don't */ - /* treat them as persistent data. */ - /* */ - /* The descriptor's `buffer' field is set to~0 to indicate a missing */ - /* glyph bitmap. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the bitmap, after increasing its reference count. */ - /* This ensures that the node (as well as the image) will always be */ - /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the bitmap could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_LookupScaler( FTC_SBitCache cache, - FTC_Scaler scaler, - FT_ULong load_flags, - FT_UInt gindex, - FTC_SBit *sbit, - FTC_Node *anode ); - - - /* */ - -#ifdef FT_CONFIG_OPTION_OLD_INTERNALS - - /*@***********************************************************************/ - /* */ - /* <Struct> */ - /* FTC_FontRec */ - /* */ - /* <Description> */ - /* A simple structure used to describe a given `font' to the cache */ - /* manager. Note that a `font' is the combination of a given face */ - /* with a given character size. */ - /* */ - /* <Fields> */ - /* face_id :: The ID of the face to use. */ - /* */ - /* pix_width :: The character width in integer pixels. */ - /* */ - /* pix_height :: The character height in integer pixels. */ - /* */ - typedef struct FTC_FontRec_ - { - FTC_FaceID face_id; - FT_UShort pix_width; - FT_UShort pix_height; - - } FTC_FontRec; - - - /* */ - - -#define FTC_FONT_COMPARE( f1, f2 ) \ - ( (f1)->face_id == (f2)->face_id && \ - (f1)->pix_width == (f2)->pix_width && \ - (f1)->pix_height == (f2)->pix_height ) - -#define FTC_FONT_HASH( f ) \ - (FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \ - ((f)->pix_width << 8) ^ \ - ((f)->pix_height) ) - - typedef FTC_FontRec* FTC_Font; - - - FT_EXPORT( FT_Error ) - FTC_Manager_Lookup_Face( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ); - - FT_EXPORT( FT_Error ) - FTC_Manager_Lookup_Size( FTC_Manager manager, - FTC_Font font, - FT_Face *aface, - FT_Size *asize ); - -#endif /* FT_CONFIG_OPTION_OLD_INTERNALS */ - - - /* */ - -FT_END_HEADER - -#endif /* __FTCACHE_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftchapters.h b/GRRLIB/lib/freetype/include/freetype/ftchapters.h deleted file mode 100644 index 7775a6b..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftchapters.h +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************/ -/* */ -/* This file defines the structure of the FreeType reference. */ -/* It is used by the python script which generates the HTML files. */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* general_remarks */ -/* */ -/* <Title> */ -/* General Remarks */ -/* */ -/* <Sections> */ -/* user_allocation */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* core_api */ -/* */ -/* <Title> */ -/* Core API */ -/* */ -/* <Sections> */ -/* version */ -/* basic_types */ -/* base_interface */ -/* glyph_variants */ -/* glyph_management */ -/* mac_specific */ -/* sizes_management */ -/* header_file_macros */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* format_specific */ -/* */ -/* <Title> */ -/* Format-Specific API */ -/* */ -/* <Sections> */ -/* multiple_masters */ -/* truetype_tables */ -/* type1_tables */ -/* sfnt_names */ -/* bdf_fonts */ -/* cid_fonts */ -/* pfr_fonts */ -/* winfnt_fonts */ -/* font_formats */ -/* gasp_table */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* cache_subsystem */ -/* */ -/* <Title> */ -/* Cache Sub-System */ -/* */ -/* <Sections> */ -/* cache_subsystem */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* support_api */ -/* */ -/* <Title> */ -/* Support API */ -/* */ -/* <Sections> */ -/* computations */ -/* list_processing */ -/* outline_processing */ -/* quick_advance */ -/* bitmap_handling */ -/* raster */ -/* glyph_stroker */ -/* system_interface */ -/* module_management */ -/* gzip */ -/* lzw */ -/* lcd_filtering */ -/* */ -/***************************************************************************/ diff --git a/GRRLIB/lib/freetype/include/freetype/ftcid.h b/GRRLIB/lib/freetype/include/freetype/ftcid.h deleted file mode 100644 index 203a30c..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftcid.h +++ /dev/null @@ -1,166 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcid.h */ -/* */ -/* FreeType API for accessing CID font information (specification). */ -/* */ -/* Copyright 2007, 2009 by Dereg Clegg, Michael Toftdal. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTCID_H__ -#define __FTCID_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cid_fonts */ - /* */ - /* <Title> */ - /* CID Fonts */ - /* */ - /* <Abstract> */ - /* CID-keyed font specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of CID-keyed font specific */ - /* functions. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @function: - * FT_Get_CID_Registry_Ordering_Supplement - * - * @description: - * Retrieve the Registry/Ordering/Supplement triple (also known as the - * "R/O/S") from a CID-keyed font. - * - * @input: - * face :: - * A handle to the input face. - * - * @output: - * registry :: - * The registry, as a C~string, owned by the face. - * - * ordering :: - * The ordering, as a C~string, owned by the face. - * - * supplement :: - * The supplement. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with CID faces, returning an error - * otherwise. - * - * @since: - * 2.3.6 - */ - FT_EXPORT( FT_Error ) - FT_Get_CID_Registry_Ordering_Supplement( FT_Face face, - const char* *registry, - const char* *ordering, - FT_Int *supplement); - - - /********************************************************************** - * - * @function: - * FT_Get_CID_Is_Internally_CID_Keyed - * - * @description: - * Retrieve the type of the input face, CID keyed or not. In - * constrast to the @FT_IS_CID_KEYED macro this function returns - * successfully also for CID-keyed fonts in an SNFT wrapper. - * - * @input: - * face :: - * A handle to the input face. - * - * @output: - * is_cid :: - * The type of the face as an @FT_Bool. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with CID faces and OpenType fonts, - * returning an error otherwise. - * - * @since: - * 2.3.9 - */ - FT_EXPORT( FT_Error ) - FT_Get_CID_Is_Internally_CID_Keyed( FT_Face face, - FT_Bool *is_cid ); - - - /********************************************************************** - * - * @function: - * FT_Get_CID_From_Glyph_Index - * - * @description: - * Retrieve the CID of the input glyph index. - * - * @input: - * face :: - * A handle to the input face. - * - * glyph_index :: - * The input glyph index. - * - * @output: - * cid :: - * The CID as an @FT_UInt. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with CID faces and OpenType fonts, - * returning an error otherwise. - * - * @since: - * 2.3.9 - */ - FT_EXPORT( FT_Error ) - FT_Get_CID_From_Glyph_Index( FT_Face face, - FT_UInt glyph_index, - FT_UInt *cid ); - - /* */ - -FT_END_HEADER - -#endif /* __FTCID_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/fterrdef.h b/GRRLIB/lib/freetype/include/freetype/fterrdef.h deleted file mode 100644 index d7ad256..0000000 --- a/GRRLIB/lib/freetype/include/freetype/fterrdef.h +++ /dev/null @@ -1,239 +0,0 @@ -/***************************************************************************/ -/* */ -/* fterrdef.h */ -/* */ -/* FreeType error codes (specification). */ -/* */ -/* Copyright 2002, 2004, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST OF ERROR CODES/MESSAGES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - - /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ - /* including this file. */ - - - /* generic errors */ - - FT_NOERRORDEF_( Ok, 0x00, \ - "no error" ) - - FT_ERRORDEF_( Cannot_Open_Resource, 0x01, \ - "cannot open resource" ) - FT_ERRORDEF_( Unknown_File_Format, 0x02, \ - "unknown file format" ) - FT_ERRORDEF_( Invalid_File_Format, 0x03, \ - "broken file" ) - FT_ERRORDEF_( Invalid_Version, 0x04, \ - "invalid FreeType version" ) - FT_ERRORDEF_( Lower_Module_Version, 0x05, \ - "module version is too low" ) - FT_ERRORDEF_( Invalid_Argument, 0x06, \ - "invalid argument" ) - FT_ERRORDEF_( Unimplemented_Feature, 0x07, \ - "unimplemented feature" ) - FT_ERRORDEF_( Invalid_Table, 0x08, \ - "broken table" ) - FT_ERRORDEF_( Invalid_Offset, 0x09, \ - "broken offset within table" ) - FT_ERRORDEF_( Array_Too_Large, 0x0A, \ - "array allocation size too large" ) - - /* glyph/character errors */ - - FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, \ - "invalid glyph index" ) - FT_ERRORDEF_( Invalid_Character_Code, 0x11, \ - "invalid character code" ) - FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, \ - "unsupported glyph image format" ) - FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, \ - "cannot render this glyph format" ) - FT_ERRORDEF_( Invalid_Outline, 0x14, \ - "invalid outline" ) - FT_ERRORDEF_( Invalid_Composite, 0x15, \ - "invalid composite glyph" ) - FT_ERRORDEF_( Too_Many_Hints, 0x16, \ - "too many hints" ) - FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, \ - "invalid pixel size" ) - - /* handle errors */ - - FT_ERRORDEF_( Invalid_Handle, 0x20, \ - "invalid object handle" ) - FT_ERRORDEF_( Invalid_Library_Handle, 0x21, \ - "invalid library handle" ) - FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, \ - "invalid module handle" ) - FT_ERRORDEF_( Invalid_Face_Handle, 0x23, \ - "invalid face handle" ) - FT_ERRORDEF_( Invalid_Size_Handle, 0x24, \ - "invalid size handle" ) - FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, \ - "invalid glyph slot handle" ) - FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, \ - "invalid charmap handle" ) - FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, \ - "invalid cache manager handle" ) - FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, \ - "invalid stream handle" ) - - /* driver errors */ - - FT_ERRORDEF_( Too_Many_Drivers, 0x30, \ - "too many modules" ) - FT_ERRORDEF_( Too_Many_Extensions, 0x31, \ - "too many extensions" ) - - /* memory errors */ - - FT_ERRORDEF_( Out_Of_Memory, 0x40, \ - "out of memory" ) - FT_ERRORDEF_( Unlisted_Object, 0x41, \ - "unlisted object" ) - - /* stream errors */ - - FT_ERRORDEF_( Cannot_Open_Stream, 0x51, \ - "cannot open stream" ) - FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, \ - "invalid stream seek" ) - FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, \ - "invalid stream skip" ) - FT_ERRORDEF_( Invalid_Stream_Read, 0x54, \ - "invalid stream read" ) - FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, \ - "invalid stream operation" ) - FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, \ - "invalid frame operation" ) - FT_ERRORDEF_( Nested_Frame_Access, 0x57, \ - "nested frame access" ) - FT_ERRORDEF_( Invalid_Frame_Read, 0x58, \ - "invalid frame read" ) - - /* raster errors */ - - FT_ERRORDEF_( Raster_Uninitialized, 0x60, \ - "raster uninitialized" ) - FT_ERRORDEF_( Raster_Corrupted, 0x61, \ - "raster corrupted" ) - FT_ERRORDEF_( Raster_Overflow, 0x62, \ - "raster overflow" ) - FT_ERRORDEF_( Raster_Negative_Height, 0x63, \ - "negative height while rastering" ) - - /* cache errors */ - - FT_ERRORDEF_( Too_Many_Caches, 0x70, \ - "too many registered caches" ) - - /* TrueType and SFNT errors */ - - FT_ERRORDEF_( Invalid_Opcode, 0x80, \ - "invalid opcode" ) - FT_ERRORDEF_( Too_Few_Arguments, 0x81, \ - "too few arguments" ) - FT_ERRORDEF_( Stack_Overflow, 0x82, \ - "stack overflow" ) - FT_ERRORDEF_( Code_Overflow, 0x83, \ - "code overflow" ) - FT_ERRORDEF_( Bad_Argument, 0x84, \ - "bad argument" ) - FT_ERRORDEF_( Divide_By_Zero, 0x85, \ - "division by zero" ) - FT_ERRORDEF_( Invalid_Reference, 0x86, \ - "invalid reference" ) - FT_ERRORDEF_( Debug_OpCode, 0x87, \ - "found debug opcode" ) - FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, \ - "found ENDF opcode in execution stream" ) - FT_ERRORDEF_( Nested_DEFS, 0x89, \ - "nested DEFS" ) - FT_ERRORDEF_( Invalid_CodeRange, 0x8A, \ - "invalid code range" ) - FT_ERRORDEF_( Execution_Too_Long, 0x8B, \ - "execution context too long" ) - FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, \ - "too many function definitions" ) - FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, \ - "too many instruction definitions" ) - FT_ERRORDEF_( Table_Missing, 0x8E, \ - "SFNT font table missing" ) - FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, \ - "horizontal header (hhea) table missing" ) - FT_ERRORDEF_( Locations_Missing, 0x90, \ - "locations (loca) table missing" ) - FT_ERRORDEF_( Name_Table_Missing, 0x91, \ - "name table missing" ) - FT_ERRORDEF_( CMap_Table_Missing, 0x92, \ - "character map (cmap) table missing" ) - FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, \ - "horizontal metrics (hmtx) table missing" ) - FT_ERRORDEF_( Post_Table_Missing, 0x94, \ - "PostScript (post) table missing" ) - FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, \ - "invalid horizontal metrics" ) - FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, \ - "invalid character map (cmap) format" ) - FT_ERRORDEF_( Invalid_PPem, 0x97, \ - "invalid ppem value" ) - FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, \ - "invalid vertical metrics" ) - FT_ERRORDEF_( Could_Not_Find_Context, 0x99, \ - "could not find context" ) - FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, \ - "invalid PostScript (post) table format" ) - FT_ERRORDEF_( Invalid_Post_Table, 0x9B, \ - "invalid PostScript (post) table" ) - - /* CFF, CID, and Type 1 errors */ - - FT_ERRORDEF_( Syntax_Error, 0xA0, \ - "opcode syntax error" ) - FT_ERRORDEF_( Stack_Underflow, 0xA1, \ - "argument stack underflow" ) - FT_ERRORDEF_( Ignore, 0xA2, \ - "ignore" ) - - /* BDF errors */ - - FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, \ - "`STARTFONT' field missing" ) - FT_ERRORDEF_( Missing_Font_Field, 0xB1, \ - "`FONT' field missing" ) - FT_ERRORDEF_( Missing_Size_Field, 0xB2, \ - "`SIZE' field missing" ) - FT_ERRORDEF_( Missing_Chars_Field, 0xB3, \ - "`CHARS' field missing" ) - FT_ERRORDEF_( Missing_Startchar_Field, 0xB4, \ - "`STARTCHAR' field missing" ) - FT_ERRORDEF_( Missing_Encoding_Field, 0xB5, \ - "`ENCODING' field missing" ) - FT_ERRORDEF_( Missing_Bbx_Field, 0xB6, \ - "`BBX' field missing" ) - FT_ERRORDEF_( Bbx_Too_Big, 0xB7, \ - "`BBX' too big" ) - FT_ERRORDEF_( Corrupted_Font_Header, 0xB8, \ - "Font header corrupted or missing fields" ) - FT_ERRORDEF_( Corrupted_Font_Glyphs, 0xB9, \ - "Font glyphs corrupted or missing fields" ) - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/fterrors.h b/GRRLIB/lib/freetype/include/freetype/fterrors.h deleted file mode 100644 index 6600dad..0000000 --- a/GRRLIB/lib/freetype/include/freetype/fterrors.h +++ /dev/null @@ -1,206 +0,0 @@ -/***************************************************************************/ -/* */ -/* fterrors.h */ -/* */ -/* FreeType error code handling (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2004, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This special header file is used to define the handling of FT2 */ - /* enumeration constants. It can also be used to generate error message */ - /* strings with a small macro trick explained below. */ - /* */ - /* I - Error Formats */ - /* ----------------- */ - /* */ - /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ - /* defined in ftoption.h in order to make the higher byte indicate */ - /* the module where the error has happened (this is not compatible */ - /* with standard builds of FreeType 2). You can then use the macro */ - /* FT_ERROR_BASE macro to extract the generic error code from an */ - /* FT_Error value. */ - /* */ - /* */ - /* II - Error Message strings */ - /* -------------------------- */ - /* */ - /* The error definitions below are made through special macros that */ - /* allow client applications to build a table of error message strings */ - /* if they need it. The strings are not included in a normal build of */ - /* FreeType 2 to save space (most client applications do not use */ - /* them). */ - /* */ - /* To do so, you have to define the following macros before including */ - /* this file: */ - /* */ - /* FT_ERROR_START_LIST :: */ - /* This macro is called before anything else to define the start of */ - /* the error list. It is followed by several FT_ERROR_DEF calls */ - /* (see below). */ - /* */ - /* FT_ERROR_DEF( e, v, s ) :: */ - /* This macro is called to define one single error. */ - /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ - /* `v' is the error numerical value. */ - /* `s' is the corresponding error string. */ - /* */ - /* FT_ERROR_END_LIST :: */ - /* This macro ends the list. */ - /* */ - /* Additionally, you have to undefine __FTERRORS_H__ before #including */ - /* this file. */ - /* */ - /* Here is a simple example: */ - /* */ - /* { */ - /* #undef __FTERRORS_H__ */ - /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ - /* #define FT_ERROR_START_LIST { */ - /* #define FT_ERROR_END_LIST { 0, 0 } }; */ - /* */ - /* const struct */ - /* { */ - /* int err_code; */ - /* const char* err_msg; */ - /* } ft_errors[] = */ - /* */ - /* #include FT_ERRORS_H */ - /* } */ - /* */ - /*************************************************************************/ - - -#ifndef __FTERRORS_H__ -#define __FTERRORS_H__ - - - /* include module base error codes */ -#include FT_MODULE_ERRORS_H - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SETUP MACROS *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#undef FT_NEED_EXTERN_C - -#undef FT_ERR_XCAT -#undef FT_ERR_CAT - -#define FT_ERR_XCAT( x, y ) x ## y -#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) - - - /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ - /* By default, we use `FT_Err_'. */ - /* */ -#ifndef FT_ERR_PREFIX -#define FT_ERR_PREFIX FT_Err_ -#endif - - - /* FT_ERR_BASE is used as the base for module-specific errors. */ - /* */ -#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS - -#ifndef FT_ERR_BASE -#define FT_ERR_BASE FT_Mod_Err_Base -#endif - -#else - -#undef FT_ERR_BASE -#define FT_ERR_BASE 0 - -#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ - - - /* If FT_ERRORDEF is not defined, we need to define a simple */ - /* enumeration type. */ - /* */ -#ifndef FT_ERRORDEF - -#define FT_ERRORDEF( e, v, s ) e = v, -#define FT_ERROR_START_LIST enum { -#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; - -#ifdef __cplusplus -#define FT_NEED_EXTERN_C - extern "C" { -#endif - -#endif /* !FT_ERRORDEF */ - - - /* this macro is used to define an error */ -#define FT_ERRORDEF_( e, v, s ) \ - FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) - - /* this is only used for <module>_Err_Ok, which must be 0! */ -#define FT_NOERRORDEF_( e, v, s ) \ - FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) - - -#ifdef FT_ERROR_START_LIST - FT_ERROR_START_LIST -#endif - - - /* now include the error codes */ -#include FT_ERROR_DEFINITIONS_H - - -#ifdef FT_ERROR_END_LIST - FT_ERROR_END_LIST -#endif - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SIMPLE CLEANUP *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - -#ifdef FT_NEED_EXTERN_C - } -#endif - -#undef FT_ERROR_START_LIST -#undef FT_ERROR_END_LIST - -#undef FT_ERRORDEF -#undef FT_ERRORDEF_ -#undef FT_NOERRORDEF_ - -#undef FT_NEED_EXTERN_C -#undef FT_ERR_CONCAT -#undef FT_ERR_BASE - - /* FT_KEEP_ERR_PREFIX is needed for ftvalid.h */ -#ifndef FT_KEEP_ERR_PREFIX -#undef FT_ERR_PREFIX -#endif - -#endif /* __FTERRORS_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftgasp.h b/GRRLIB/lib/freetype/include/freetype/ftgasp.h deleted file mode 100644 index 91a769e..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftgasp.h +++ /dev/null @@ -1,120 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgasp.h */ -/* */ -/* Access of TrueType's `gasp' table (specification). */ -/* */ -/* Copyright 2007, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef _FT_GASP_H_ -#define _FT_GASP_H_ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - - /*************************************************************************** - * - * @section: - * gasp_table - * - * @title: - * Gasp Table - * - * @abstract: - * Retrieving TrueType `gasp' table entries. - * - * @description: - * The function @FT_Get_Gasp can be used to query a TrueType or OpenType - * font for specific entries in its `gasp' table, if any. This is - * mainly useful when implementing native TrueType hinting with the - * bytecode interpreter to duplicate the Windows text rendering results. - */ - - /************************************************************************* - * - * @enum: - * FT_GASP_XXX - * - * @description: - * A list of values and/or bit-flags returned by the @FT_Get_Gasp - * function. - * - * @values: - * FT_GASP_NO_TABLE :: - * This special value means that there is no GASP table in this face. - * It is up to the client to decide what to do. - * - * FT_GASP_DO_GRIDFIT :: - * Grid-fitting and hinting should be performed at the specified ppem. - * This *really* means TrueType bytecode interpretation. - * - * FT_GASP_DO_GRAY :: - * Anti-aliased rendering should be performed at the specified ppem. - * - * FT_GASP_SYMMETRIC_SMOOTHING :: - * Smoothing along multiple axes must be used with ClearType. - * - * FT_GASP_SYMMETRIC_GRIDFIT :: - * Grid-fitting must be used with ClearType's symmetric smoothing. - * - * @note: - * `ClearType' is Microsoft's implementation of LCD rendering, partly - * protected by patents. - * - * @since: - * 2.3.0 - */ -#define FT_GASP_NO_TABLE -1 -#define FT_GASP_DO_GRIDFIT 0x01 -#define FT_GASP_DO_GRAY 0x02 -#define FT_GASP_SYMMETRIC_SMOOTHING 0x08 -#define FT_GASP_SYMMETRIC_GRIDFIT 0x10 - - - /************************************************************************* - * - * @func: - * FT_Get_Gasp - * - * @description: - * Read the `gasp' table from a TrueType or OpenType font file and - * return the entry corresponding to a given character pixel size. - * - * @input: - * face :: The source face handle. - * ppem :: The vertical character pixel size. - * - * @return: - * Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no - * `gasp' table in the face. - * - * @since: - * 2.3.0 - */ - FT_EXPORT( FT_Int ) - FT_Get_Gasp( FT_Face face, - FT_UInt ppem ); - -/* */ - -#endif /* _FT_GASP_H_ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftglyph.h b/GRRLIB/lib/freetype/include/freetype/ftglyph.h deleted file mode 100644 index cacccf0..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftglyph.h +++ /dev/null @@ -1,613 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftglyph.h */ -/* */ -/* FreeType convenience functions to handle glyphs (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file contains the definition of several convenience functions */ - /* that can be used by client applications to easily retrieve glyph */ - /* bitmaps and outlines from a given face. */ - /* */ - /* These functions should be optional if you are writing a font server */ - /* or text layout engine on top of FreeType. However, they are pretty */ - /* handy for many other simple uses of the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTGLYPH_H__ -#define __FTGLYPH_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* glyph_management */ - /* */ - /* <Title> */ - /* Glyph Management */ - /* */ - /* <Abstract> */ - /* Generic interface to manage individual glyph data. */ - /* */ - /* <Description> */ - /* This section contains definitions used to manage glyph data */ - /* through generic FT_Glyph objects. Each of them can contain a */ - /* bitmap, a vector outline, or even images in other formats. */ - /* */ - /*************************************************************************/ - - - /* forward declaration to a private type */ - typedef struct FT_Glyph_Class_ FT_Glyph_Class; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Glyph */ - /* */ - /* <Description> */ - /* Handle to an object used to model generic glyph images. It is a */ - /* pointer to the @FT_GlyphRec structure and can contain a glyph */ - /* bitmap or pointer. */ - /* */ - /* <Note> */ - /* Glyph objects are not owned by the library. You must thus release */ - /* them manually (through @FT_Done_Glyph) _before_ calling */ - /* @FT_Done_FreeType. */ - /* */ - typedef struct FT_GlyphRec_* FT_Glyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_GlyphRec */ - /* */ - /* <Description> */ - /* The root glyph structure contains a given glyph image plus its */ - /* advance width in 16.16 fixed float format. */ - /* */ - /* <Fields> */ - /* library :: A handle to the FreeType library object. */ - /* */ - /* clazz :: A pointer to the glyph's class. Private. */ - /* */ - /* format :: The format of the glyph's image. */ - /* */ - /* advance :: A 16.16 vector that gives the glyph's advance width. */ - /* */ - typedef struct FT_GlyphRec_ - { - FT_Library library; - const FT_Glyph_Class* clazz; - FT_Glyph_Format format; - FT_Vector advance; - - } FT_GlyphRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_BitmapGlyph */ - /* */ - /* <Description> */ - /* A handle to an object used to model a bitmap glyph image. This is */ - /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ - /* */ - typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_BitmapGlyphRec */ - /* */ - /* <Description> */ - /* A structure used for bitmap glyph images. This really is a */ - /* `sub-class' of @FT_GlyphRec. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Glyph fields. */ - /* */ - /* left :: The left-side bearing, i.e., the horizontal distance */ - /* from the current pen position to the left border of the */ - /* glyph bitmap. */ - /* */ - /* top :: The top-side bearing, i.e., the vertical distance from */ - /* the current pen position to the top border of the glyph */ - /* bitmap. This distance is positive for upwards~y! */ - /* */ - /* bitmap :: A descriptor for the bitmap. */ - /* */ - /* <Note> */ - /* You can typecast an @FT_Glyph to @FT_BitmapGlyph if you have */ - /* `glyph->format == FT_GLYPH_FORMAT_BITMAP'. This lets you access */ - /* the bitmap's contents easily. */ - /* */ - /* The corresponding pixel buffer is always owned by @FT_BitmapGlyph */ - /* and is thus created and destroyed with it. */ - /* */ - typedef struct FT_BitmapGlyphRec_ - { - FT_GlyphRec root; - FT_Int left; - FT_Int top; - FT_Bitmap bitmap; - - } FT_BitmapGlyphRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_OutlineGlyph */ - /* */ - /* <Description> */ - /* A handle to an object used to model an outline glyph image. This */ - /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ - /* */ - typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_OutlineGlyphRec */ - /* */ - /* <Description> */ - /* A structure used for outline (vectorial) glyph images. This */ - /* really is a `sub-class' of @FT_GlyphRec. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Glyph fields. */ - /* */ - /* outline :: A descriptor for the outline. */ - /* */ - /* <Note> */ - /* You can typecast an @FT_Glyph to @FT_OutlineGlyph if you have */ - /* `glyph->format == FT_GLYPH_FORMAT_OUTLINE'. This lets you access */ - /* the outline's content easily. */ - /* */ - /* As the outline is extracted from a glyph slot, its coordinates are */ - /* expressed normally in 26.6 pixels, unless the flag */ - /* @FT_LOAD_NO_SCALE was used in @FT_Load_Glyph() or @FT_Load_Char(). */ - /* */ - /* The outline's tables are always owned by the object and are */ - /* destroyed with it. */ - /* */ - typedef struct FT_OutlineGlyphRec_ - { - FT_GlyphRec root; - FT_Outline outline; - - } FT_OutlineGlyphRec; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Glyph */ - /* */ - /* <Description> */ - /* A function used to extract a glyph image from a slot. Note that */ - /* the created @FT_Glyph object must be released with @FT_Done_Glyph. */ - /* */ - /* <Input> */ - /* slot :: A handle to the source glyph slot. */ - /* */ - /* <Output> */ - /* aglyph :: A handle to the glyph object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Glyph( FT_GlyphSlot slot, - FT_Glyph *aglyph ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Copy */ - /* */ - /* <Description> */ - /* A function used to copy a glyph image. Note that the created */ - /* @FT_Glyph object must be released with @FT_Done_Glyph. */ - /* */ - /* <Input> */ - /* source :: A handle to the source glyph object. */ - /* */ - /* <Output> */ - /* target :: A handle to the target glyph object. 0~in case of */ - /* error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_Copy( FT_Glyph source, - FT_Glyph *target ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Transform */ - /* */ - /* <Description> */ - /* Transform a glyph image if its format is scalable. */ - /* */ - /* <InOut> */ - /* glyph :: A handle to the target glyph object. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to a 2x2 matrix to apply. */ - /* */ - /* delta :: A pointer to a 2d vector to apply. Coordinates are */ - /* expressed in 1/64th of a pixel. */ - /* */ - /* <Return> */ - /* FreeType error code (if not 0, the glyph format is not scalable). */ - /* */ - /* <Note> */ - /* The 2x2 transformation matrix is also applied to the glyph's */ - /* advance vector. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_Transform( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Glyph_BBox_Mode */ - /* */ - /* <Description> */ - /* The mode how the values of @FT_Glyph_Get_CBox are returned. */ - /* */ - /* <Values> */ - /* FT_GLYPH_BBOX_UNSCALED :: */ - /* Return unscaled font units. */ - /* */ - /* FT_GLYPH_BBOX_SUBPIXELS :: */ - /* Return unfitted 26.6 coordinates. */ - /* */ - /* FT_GLYPH_BBOX_GRIDFIT :: */ - /* Return grid-fitted 26.6 coordinates. */ - /* */ - /* FT_GLYPH_BBOX_TRUNCATE :: */ - /* Return coordinates in integer pixels. */ - /* */ - /* FT_GLYPH_BBOX_PIXELS :: */ - /* Return grid-fitted pixel coordinates. */ - /* */ - typedef enum FT_Glyph_BBox_Mode_ - { - FT_GLYPH_BBOX_UNSCALED = 0, - FT_GLYPH_BBOX_SUBPIXELS = 0, - FT_GLYPH_BBOX_GRIDFIT = 1, - FT_GLYPH_BBOX_TRUNCATE = 2, - FT_GLYPH_BBOX_PIXELS = 3 - - } FT_Glyph_BBox_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_glyph_bbox_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated. Use the corresponding */ - /* @FT_Glyph_BBox_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_glyph_bbox_unscaled :: See @FT_GLYPH_BBOX_UNSCALED. */ - /* ft_glyph_bbox_subpixels :: See @FT_GLYPH_BBOX_SUBPIXELS. */ - /* ft_glyph_bbox_gridfit :: See @FT_GLYPH_BBOX_GRIDFIT. */ - /* ft_glyph_bbox_truncate :: See @FT_GLYPH_BBOX_TRUNCATE. */ - /* ft_glyph_bbox_pixels :: See @FT_GLYPH_BBOX_PIXELS. */ - /* */ -#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED -#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS -#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT -#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE -#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Get_CBox */ - /* */ - /* <Description> */ - /* Return a glyph's `control box'. The control box encloses all the */ - /* outline's points, including Bézier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bézier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ - /* and arcs in the outline. To get the latter, you can use the */ - /* `ftbbox' component which is dedicated to this single task. */ - /* */ - /* <Input> */ - /* glyph :: A handle to the source glyph object. */ - /* */ - /* mode :: The mode which indicates how to interpret the returned */ - /* bounding box values. */ - /* */ - /* <Output> */ - /* acbox :: The glyph coordinate bounding box. Coordinates are */ - /* expressed in 1/64th of pixels if it is grid-fitted. */ - /* */ - /* <Note> */ - /* Coordinates are relative to the glyph origin, using the y~upwards */ - /* convention. */ - /* */ - /* If the glyph has been loaded with @FT_LOAD_NO_SCALE, `bbox_mode' */ - /* must be set to @FT_GLYPH_BBOX_UNSCALED to get unscaled font */ - /* units in 26.6 pixel format. The value @FT_GLYPH_BBOX_SUBPIXELS */ - /* is another name for this constant. */ - /* */ - /* Note that the maximum coordinates are exclusive, which means that */ - /* one can compute the width and height of the glyph image (be it in */ - /* integer or 26.6 pixels) as: */ - /* */ - /* { */ - /* width = bbox.xMax - bbox.xMin; */ - /* height = bbox.yMax - bbox.yMin; */ - /* } */ - /* */ - /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ - /* @FT_GLYPH_BBOX_GRIDFIT, the coordinates will also be grid-fitted, */ - /* which corresponds to: */ - /* */ - /* { */ - /* bbox.xMin = FLOOR(bbox.xMin); */ - /* bbox.yMin = FLOOR(bbox.yMin); */ - /* bbox.xMax = CEILING(bbox.xMax); */ - /* bbox.yMax = CEILING(bbox.yMax); */ - /* } */ - /* */ - /* To get the bbox in pixel coordinates, set `bbox_mode' to */ - /* @FT_GLYPH_BBOX_TRUNCATE. */ - /* */ - /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ - /* to @FT_GLYPH_BBOX_PIXELS. */ - /* */ - FT_EXPORT( void ) - FT_Glyph_Get_CBox( FT_Glyph glyph, - FT_UInt bbox_mode, - FT_BBox *acbox ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_To_Bitmap */ - /* */ - /* <Description> */ - /* Convert a given glyph object to a bitmap glyph object. */ - /* */ - /* <InOut> */ - /* the_glyph :: A pointer to a handle to the target glyph. */ - /* */ - /* <Input> */ - /* render_mode :: An enumeration that describes how the data is */ - /* rendered. */ - /* */ - /* origin :: A pointer to a vector used to translate the glyph */ - /* image before rendering. Can be~0 (if no */ - /* translation). The origin is expressed in */ - /* 26.6 pixels. */ - /* */ - /* destroy :: A boolean that indicates that the original glyph */ - /* image should be destroyed by this function. It is */ - /* never destroyed in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function does nothing if the glyph format isn't scalable. */ - /* */ - /* The glyph image is translated with the `origin' vector before */ - /* rendering. */ - /* */ - /* The first parameter is a pointer to an @FT_Glyph handle, that will */ - /* be _replaced_ by this function (with newly allocated data). */ - /* Typically, you would use (omitting error handling): */ - /* */ - /* */ - /* { */ - /* FT_Glyph glyph; */ - /* FT_BitmapGlyph glyph_bitmap; */ - /* */ - /* */ - /* // load glyph */ - /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ - /* */ - /* // extract glyph image */ - /* error = FT_Get_Glyph( face->glyph, &glyph ); */ - /* */ - /* // convert to a bitmap (default render mode + destroying old) */ - /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ - /* { */ - /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, */ - /* 0, 1 ); */ - /* if ( error ) // `glyph' unchanged */ - /* ... */ - /* } */ - /* */ - /* // access bitmap content by typecasting */ - /* glyph_bitmap = (FT_BitmapGlyph)glyph; */ - /* */ - /* // do funny stuff with it, like blitting/drawing */ - /* ... */ - /* */ - /* // discard glyph image (bitmap or not) */ - /* FT_Done_Glyph( glyph ); */ - /* } */ - /* */ - /* */ - /* Here another example, again without error handling: */ - /* */ - /* */ - /* { */ - /* FT_Glyph glyphs[MAX_GLYPHS] */ - /* */ - /* */ - /* ... */ - /* */ - /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ - /* error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) || */ - /* FT_Get_Glyph ( face->glyph, &glyph[idx] ); */ - /* */ - /* ... */ - /* */ - /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ - /* { */ - /* FT_Glyph bitmap = glyphs[idx]; */ - /* */ - /* */ - /* ... */ - /* */ - /* // after this call, `bitmap' no longer points into */ - /* // the `glyphs' array (and the old value isn't destroyed) */ - /* FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 ); */ - /* */ - /* ... */ - /* */ - /* FT_Done_Glyph( bitmap ); */ - /* } */ - /* */ - /* ... */ - /* */ - /* for ( idx = 0; i < MAX_GLYPHS; i++ ) */ - /* FT_Done_Glyph( glyphs[idx] ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, - FT_Render_Mode render_mode, - FT_Vector* origin, - FT_Bool destroy ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Glyph */ - /* */ - /* <Description> */ - /* Destroy a given glyph. */ - /* */ - /* <Input> */ - /* glyph :: A handle to the target glyph object. */ - /* */ - FT_EXPORT( void ) - FT_Done_Glyph( FT_Glyph glyph ); - - /* */ - - - /* other helpful functions */ - - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Matrix_Multiply */ - /* */ - /* <Description> */ - /* Perform the matrix operation `b = a*b'. */ - /* */ - /* <Input> */ - /* a :: A pointer to matrix `a'. */ - /* */ - /* <InOut> */ - /* b :: A pointer to matrix `b'. */ - /* */ - /* <Note> */ - /* The result is undefined if either `a' or `b' is zero. */ - /* */ - FT_EXPORT( void ) - FT_Matrix_Multiply( const FT_Matrix* a, - FT_Matrix* b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Matrix_Invert */ - /* */ - /* <Description> */ - /* Invert a 2x2 matrix. Return an error if it can't be inverted. */ - /* */ - /* <InOut> */ - /* matrix :: A pointer to the target matrix. Remains untouched in */ - /* case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Matrix_Invert( FT_Matrix* matrix ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTGLYPH_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftgxval.h b/GRRLIB/lib/freetype/include/freetype/ftgxval.h deleted file mode 100644 index 497015c..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftgxval.h +++ /dev/null @@ -1,358 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgxval.h */ -/* */ -/* FreeType API for validating TrueTypeGX/AAT tables (specification). */ -/* */ -/* Copyright 2004, 2005, 2006 by */ -/* Masatake YAMATO, Redhat K.K, */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -/***************************************************************************/ -/* */ -/* gxvalid is derived from both gxlayout module and otvalid module. */ -/* Development of gxlayout is supported by the Information-technology */ -/* Promotion Agency(IPA), Japan. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTGXVAL_H__ -#define __FTGXVAL_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* gx_validation */ - /* */ - /* <Title> */ - /* TrueTypeGX/AAT Validation */ - /* */ - /* <Abstract> */ - /* An API to validate TrueTypeGX/AAT tables. */ - /* */ - /* <Description> */ - /* This section contains the declaration of functions to validate */ - /* some TrueTypeGX tables (feat, mort, morx, bsln, just, kern, opbd, */ - /* trak, prop, lcar). */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* */ - /* Warning: Use FT_VALIDATE_XXX to validate a table. */ - /* Following definitions are for gxvalid developers. */ - /* */ - /* */ - /*************************************************************************/ - -#define FT_VALIDATE_feat_INDEX 0 -#define FT_VALIDATE_mort_INDEX 1 -#define FT_VALIDATE_morx_INDEX 2 -#define FT_VALIDATE_bsln_INDEX 3 -#define FT_VALIDATE_just_INDEX 4 -#define FT_VALIDATE_kern_INDEX 5 -#define FT_VALIDATE_opbd_INDEX 6 -#define FT_VALIDATE_trak_INDEX 7 -#define FT_VALIDATE_prop_INDEX 8 -#define FT_VALIDATE_lcar_INDEX 9 -#define FT_VALIDATE_GX_LAST_INDEX FT_VALIDATE_lcar_INDEX - - - /************************************************************************* - * - * @macro: - * FT_VALIDATE_GX_LENGTH - * - * @description: - * The number of tables checked in this module. Use it as a parameter - * for the `table-length' argument of function @FT_TrueTypeGX_Validate. - */ -#define FT_VALIDATE_GX_LENGTH (FT_VALIDATE_GX_LAST_INDEX + 1) - - /* */ - - /* Up to 0x1000 is used by otvalid. - Ox2xxx is reserved for feature OT extension. */ -#define FT_VALIDATE_GX_START 0x4000 -#define FT_VALIDATE_GX_BITFIELD( tag ) \ - ( FT_VALIDATE_GX_START << FT_VALIDATE_##tag##_INDEX ) - - - /********************************************************************** - * - * @enum: - * FT_VALIDATE_GXXXX - * - * @description: - * A list of bit-field constants used with @FT_TrueTypeGX_Validate to - * indicate which TrueTypeGX/AAT Type tables should be validated. - * - * @values: - * FT_VALIDATE_feat :: - * Validate `feat' table. - * - * FT_VALIDATE_mort :: - * Validate `mort' table. - * - * FT_VALIDATE_morx :: - * Validate `morx' table. - * - * FT_VALIDATE_bsln :: - * Validate `bsln' table. - * - * FT_VALIDATE_just :: - * Validate `just' table. - * - * FT_VALIDATE_kern :: - * Validate `kern' table. - * - * FT_VALIDATE_opbd :: - * Validate `opbd' table. - * - * FT_VALIDATE_trak :: - * Validate `trak' table. - * - * FT_VALIDATE_prop :: - * Validate `prop' table. - * - * FT_VALIDATE_lcar :: - * Validate `lcar' table. - * - * FT_VALIDATE_GX :: - * Validate all TrueTypeGX tables (feat, mort, morx, bsln, just, kern, - * opbd, trak, prop and lcar). - * - */ - -#define FT_VALIDATE_feat FT_VALIDATE_GX_BITFIELD( feat ) -#define FT_VALIDATE_mort FT_VALIDATE_GX_BITFIELD( mort ) -#define FT_VALIDATE_morx FT_VALIDATE_GX_BITFIELD( morx ) -#define FT_VALIDATE_bsln FT_VALIDATE_GX_BITFIELD( bsln ) -#define FT_VALIDATE_just FT_VALIDATE_GX_BITFIELD( just ) -#define FT_VALIDATE_kern FT_VALIDATE_GX_BITFIELD( kern ) -#define FT_VALIDATE_opbd FT_VALIDATE_GX_BITFIELD( opbd ) -#define FT_VALIDATE_trak FT_VALIDATE_GX_BITFIELD( trak ) -#define FT_VALIDATE_prop FT_VALIDATE_GX_BITFIELD( prop ) -#define FT_VALIDATE_lcar FT_VALIDATE_GX_BITFIELD( lcar ) - -#define FT_VALIDATE_GX ( FT_VALIDATE_feat | \ - FT_VALIDATE_mort | \ - FT_VALIDATE_morx | \ - FT_VALIDATE_bsln | \ - FT_VALIDATE_just | \ - FT_VALIDATE_kern | \ - FT_VALIDATE_opbd | \ - FT_VALIDATE_trak | \ - FT_VALIDATE_prop | \ - FT_VALIDATE_lcar ) - - - /* */ - - /********************************************************************** - * - * @function: - * FT_TrueTypeGX_Validate - * - * @description: - * Validate various TrueTypeGX tables to assure that all offsets and - * indices are valid. The idea is that a higher-level library which - * actually does the text layout can access those tables without - * error checking (which can be quite time consuming). - * - * @input: - * face :: - * A handle to the input face. - * - * validation_flags :: - * A bit field which specifies the tables to be validated. See - * @FT_VALIDATE_GXXXX for possible values. - * - * table_length :: - * The size of the `tables' array. Normally, @FT_VALIDATE_GX_LENGTH - * should be passed. - * - * @output: - * tables :: - * The array where all validated sfnt tables are stored. - * The array itself must be allocated by a client. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with TrueTypeGX fonts, returning an error - * otherwise. - * - * After use, the application should deallocate the buffers pointed to by - * each `tables' element, by calling @FT_TrueTypeGX_Free. A NULL value - * indicates that the table either doesn't exist in the font, the - * application hasn't asked for validation, or the validator doesn't have - * the ability to validate the sfnt table. - */ - FT_EXPORT( FT_Error ) - FT_TrueTypeGX_Validate( FT_Face face, - FT_UInt validation_flags, - FT_Bytes tables[FT_VALIDATE_GX_LENGTH], - FT_UInt table_length ); - - - /* */ - - /********************************************************************** - * - * @function: - * FT_TrueTypeGX_Free - * - * @description: - * Free the buffer allocated by TrueTypeGX validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer allocated by - * @FT_TrueTypeGX_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_TrueTypeGX_Validate only. - */ - FT_EXPORT( void ) - FT_TrueTypeGX_Free( FT_Face face, - FT_Bytes table ); - - - /* */ - - /********************************************************************** - * - * @enum: - * FT_VALIDATE_CKERNXXX - * - * @description: - * A list of bit-field constants used with @FT_ClassicKern_Validate - * to indicate the classic kern dialect or dialects. If the selected - * type doesn't fit, @FT_ClassicKern_Validate regards the table as - * invalid. - * - * @values: - * FT_VALIDATE_MS :: - * Handle the `kern' table as a classic Microsoft kern table. - * - * FT_VALIDATE_APPLE :: - * Handle the `kern' table as a classic Apple kern table. - * - * FT_VALIDATE_CKERN :: - * Handle the `kern' as either classic Apple or Microsoft kern table. - */ -#define FT_VALIDATE_MS ( FT_VALIDATE_GX_START << 0 ) -#define FT_VALIDATE_APPLE ( FT_VALIDATE_GX_START << 1 ) - -#define FT_VALIDATE_CKERN ( FT_VALIDATE_MS | FT_VALIDATE_APPLE ) - - - /* */ - - /********************************************************************** - * - * @function: - * FT_ClassicKern_Validate - * - * @description: - * Validate classic (16-bit format) kern table to assure that the offsets - * and indices are valid. The idea is that a higher-level library which - * actually does the text layout can access those tables without error - * checking (which can be quite time consuming). - * - * The `kern' table validator in @FT_TrueTypeGX_Validate deals with both - * the new 32-bit format and the classic 16-bit format, while - * FT_ClassicKern_Validate only supports the classic 16-bit format. - * - * @input: - * face :: - * A handle to the input face. - * - * validation_flags :: - * A bit field which specifies the dialect to be validated. See - * @FT_VALIDATE_CKERNXXX for possible values. - * - * @output: - * ckern_table :: - * A pointer to the kern table. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * After use, the application should deallocate the buffers pointed to by - * `ckern_table', by calling @FT_ClassicKern_Free. A NULL value - * indicates that the table doesn't exist in the font. - */ - FT_EXPORT( FT_Error ) - FT_ClassicKern_Validate( FT_Face face, - FT_UInt validation_flags, - FT_Bytes *ckern_table ); - - - /* */ - - /********************************************************************** - * - * @function: - * FT_ClassicKern_Free - * - * @description: - * Free the buffer allocated by classic Kern validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer that is allocated by - * @FT_ClassicKern_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_ClassicKern_Validate only. - */ - FT_EXPORT( void ) - FT_ClassicKern_Free( FT_Face face, - FT_Bytes table ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTGXVAL_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftgzip.h b/GRRLIB/lib/freetype/include/freetype/ftgzip.h deleted file mode 100644 index acbc4f0..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftgzip.h +++ /dev/null @@ -1,102 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgzip.h */ -/* */ -/* Gzip-compressed stream support. */ -/* */ -/* Copyright 2002, 2003, 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTGZIP_H__ -#define __FTGZIP_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* gzip */ - /* */ - /* <Title> */ - /* GZIP Streams */ - /* */ - /* <Abstract> */ - /* Using gzip-compressed font files. */ - /* */ - /* <Description> */ - /* This section contains the declaration of Gzip-specific functions. */ - /* */ - /*************************************************************************/ - - - /************************************************************************ - * - * @function: - * FT_Stream_OpenGzip - * - * @description: - * Open a new stream to parse gzip-compressed font files. This is - * mainly used to support the compressed `*.pcf.gz' fonts that come - * with XFree86. - * - * @input: - * stream :: - * The target embedding stream. - * - * source :: - * The source stream. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function `FT_Stream_Close' on the new stream will - * *not* call `FT_Stream_Close' on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream. - * - * In certain builds of the library, gzip compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a gzipped stream from - * it and re-open the face with it. - * - * This function may return `FT_Err_Unimplemented_Feature' if your build - * of FreeType was not compiled with zlib support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenGzip( FT_Stream stream, - FT_Stream source ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTGZIP_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftimage.h b/GRRLIB/lib/freetype/include/freetype/ftimage.h deleted file mode 100644 index 2fcc113..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftimage.h +++ /dev/null @@ -1,1285 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftimage.h */ -/* */ -/* FreeType glyph image formats and default raster interface */ -/* (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* Note: A `raster' is simply a scan-line converter, used to render */ - /* FT_Outlines into FT_Bitmaps. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTIMAGE_H__ -#define __FTIMAGE_H__ - - - /* _STANDALONE_ is from ftgrays.c */ -#ifndef _STANDALONE_ -#include <ft2build.h> -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Pos */ - /* */ - /* <Description> */ - /* The type FT_Pos is a 32-bit integer used to store vectorial */ - /* coordinates. Depending on the context, these can represent */ - /* distances in integer font units, or 16.16, or 26.6 fixed float */ - /* pixel coordinates. */ - /* */ - typedef signed long FT_Pos; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Vector */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2D vector; coordinates are of */ - /* the FT_Pos type. */ - /* */ - /* <Fields> */ - /* x :: The horizontal coordinate. */ - /* y :: The vertical coordinate. */ - /* */ - typedef struct FT_Vector_ - { - FT_Pos x; - FT_Pos y; - - } FT_Vector; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_BBox */ - /* */ - /* <Description> */ - /* A structure used to hold an outline's bounding box, i.e., the */ - /* coordinates of its extrema in the horizontal and vertical */ - /* directions. */ - /* */ - /* <Fields> */ - /* xMin :: The horizontal minimum (left-most). */ - /* */ - /* yMin :: The vertical minimum (bottom-most). */ - /* */ - /* xMax :: The horizontal maximum (right-most). */ - /* */ - /* yMax :: The vertical maximum (top-most). */ - /* */ - typedef struct FT_BBox_ - { - FT_Pos xMin, yMin; - FT_Pos xMax, yMax; - - } FT_BBox; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Pixel_Mode */ - /* */ - /* <Description> */ - /* An enumeration type used to describe the format of pixels in a */ - /* given bitmap. Note that additional formats may be added in the */ - /* future. */ - /* */ - /* <Values> */ - /* FT_PIXEL_MODE_NONE :: */ - /* Value~0 is reserved. */ - /* */ - /* FT_PIXEL_MODE_MONO :: */ - /* A monochrome bitmap, using 1~bit per pixel. Note that pixels */ - /* are stored in most-significant order (MSB), which means that */ - /* the left-most pixel in a byte has value 128. */ - /* */ - /* FT_PIXEL_MODE_GRAY :: */ - /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ - /* images. Each pixel is stored in one byte. Note that the number */ - /* of `gray' levels is stored in the `num_grays' field of the */ - /* @FT_Bitmap structure (it generally is 256). */ - /* */ - /* FT_PIXEL_MODE_GRAY2 :: */ - /* A 2-bit per pixel bitmap, used to represent embedded */ - /* anti-aliased bitmaps in font files according to the OpenType */ - /* specification. We haven't found a single font using this */ - /* format, however. */ - /* */ - /* FT_PIXEL_MODE_GRAY4 :: */ - /* A 4-bit per pixel bitmap, representing embedded anti-aliased */ - /* bitmaps in font files according to the OpenType specification. */ - /* We haven't found a single font using this format, however. */ - /* */ - /* FT_PIXEL_MODE_LCD :: */ - /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ - /* used for display on LCD displays; the bitmap is three times */ - /* wider than the original glyph image. See also */ - /* @FT_RENDER_MODE_LCD. */ - /* */ - /* FT_PIXEL_MODE_LCD_V :: */ - /* An 8-bit bitmap, representing RGB or BGR decimated glyph images */ - /* used for display on rotated LCD displays; the bitmap is three */ - /* times taller than the original glyph image. See also */ - /* @FT_RENDER_MODE_LCD_V. */ - /* */ - typedef enum FT_Pixel_Mode_ - { - FT_PIXEL_MODE_NONE = 0, - FT_PIXEL_MODE_MONO, - FT_PIXEL_MODE_GRAY, - FT_PIXEL_MODE_GRAY2, - FT_PIXEL_MODE_GRAY4, - FT_PIXEL_MODE_LCD, - FT_PIXEL_MODE_LCD_V, - - FT_PIXEL_MODE_MAX /* do not remove */ - - } FT_Pixel_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_pixel_mode_xxx */ - /* */ - /* <Description> */ - /* A list of deprecated constants. Use the corresponding */ - /* @FT_Pixel_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_pixel_mode_none :: See @FT_PIXEL_MODE_NONE. */ - /* ft_pixel_mode_mono :: See @FT_PIXEL_MODE_MONO. */ - /* ft_pixel_mode_grays :: See @FT_PIXEL_MODE_GRAY. */ - /* ft_pixel_mode_pal2 :: See @FT_PIXEL_MODE_GRAY2. */ - /* ft_pixel_mode_pal4 :: See @FT_PIXEL_MODE_GRAY4. */ - /* */ -#define ft_pixel_mode_none FT_PIXEL_MODE_NONE -#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO -#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY -#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 -#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 - - /* */ - -#if 0 - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Palette_Mode */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT! */ - /* */ - /* An enumeration type to describe the format of a bitmap palette, */ - /* used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8. */ - /* */ - /* <Values> */ - /* ft_palette_mode_rgb :: The palette is an array of 3-byte RGB */ - /* records. */ - /* */ - /* ft_palette_mode_rgba :: The palette is an array of 4-byte RGBA */ - /* records. */ - /* */ - /* <Note> */ - /* As ft_pixel_mode_pal2, pal4 and pal8 are currently unused by */ - /* FreeType, these types are not handled by the library itself. */ - /* */ - typedef enum FT_Palette_Mode_ - { - ft_palette_mode_rgb = 0, - ft_palette_mode_rgba, - - ft_palette_mode_max /* do not remove */ - - } FT_Palette_Mode; - - /* */ - -#endif - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Bitmap */ - /* */ - /* <Description> */ - /* A structure used to describe a bitmap or pixmap to the raster. */ - /* Note that we now manage pixmaps of various depths through the */ - /* `pixel_mode' field. */ - /* */ - /* <Fields> */ - /* rows :: The number of bitmap rows. */ - /* */ - /* width :: The number of pixels in bitmap row. */ - /* */ - /* pitch :: The pitch's absolute value is the number of bytes */ - /* taken by one bitmap row, including padding. */ - /* However, the pitch is positive when the bitmap has */ - /* a `down' flow, and negative when it has an `up' */ - /* flow. In all cases, the pitch is an offset to add */ - /* to a bitmap pointer in order to go down one row. */ - /* */ - /* buffer :: A typeless pointer to the bitmap buffer. This */ - /* value should be aligned on 32-bit boundaries in */ - /* most cases. */ - /* */ - /* num_grays :: This field is only used with */ - /* @FT_PIXEL_MODE_GRAY; it gives the number of gray */ - /* levels used in the bitmap. */ - /* */ - /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ - /* See @FT_Pixel_Mode for possible values. */ - /* */ - /* palette_mode :: This field is intended for paletted pixel modes; */ - /* it indicates how the palette is stored. Not */ - /* used currently. */ - /* */ - /* palette :: A typeless pointer to the bitmap palette; this */ - /* field is intended for paletted pixel modes. Not */ - /* used currently. */ - /* */ - /* <Note> */ - /* For now, the only pixel modes supported by FreeType are mono and */ - /* grays. However, drivers might be added in the future to support */ - /* more `colorful' options. */ - /* */ - typedef struct FT_Bitmap_ - { - int rows; - int width; - int pitch; - unsigned char* buffer; - short num_grays; - char pixel_mode; - char palette_mode; - void* palette; - - } FT_Bitmap; - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Outline */ - /* */ - /* <Description> */ - /* This structure is used to describe an outline to the scan-line */ - /* converter. */ - /* */ - /* <Fields> */ - /* n_contours :: The number of contours in the outline. */ - /* */ - /* n_points :: The number of points in the outline. */ - /* */ - /* points :: A pointer to an array of `n_points' @FT_Vector */ - /* elements, giving the outline's point coordinates. */ - /* */ - /* tags :: A pointer to an array of `n_points' chars, giving */ - /* each outline point's type. */ - /* */ - /* If bit~0 is unset, the point is `off' the curve, */ - /* i.e., a Bézier control point, while it is `on' if */ - /* set. */ - /* */ - /* Bit~1 is meaningful for `off' points only. If set, */ - /* it indicates a third-order Bézier arc control point; */ - /* and a second-order control point if unset. */ - /* */ - /* If bit~2 is set, bits 5-7 contain the drop-out mode */ - /* (as defined in the OpenType specification; the value */ - /* is the same as the argument to the SCANMODE */ - /* instruction). */ - /* */ - /* Bits 3 and~4 are reserved for internal purposes. */ - /* */ - /* contours :: An array of `n_contours' shorts, giving the end */ - /* point of each contour within the outline. For */ - /* example, the first contour is defined by the points */ - /* `0' to `contours[0]', the second one is defined by */ - /* the points `contours[0]+1' to `contours[1]', etc. */ - /* */ - /* flags :: A set of bit flags used to characterize the outline */ - /* and give hints to the scan-converter and hinter on */ - /* how to convert/grid-fit it. See @FT_OUTLINE_FLAGS. */ - /* */ - /* <Note> */ - /* The B/W rasterizer only checks bit~2 in the `tags' array for the */ - /* first point of each contour. The drop-out mode as given with */ - /* @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and */ - /* @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden. */ - /* */ - typedef struct FT_Outline_ - { - short n_contours; /* number of contours in glyph */ - short n_points; /* number of points in the glyph */ - - FT_Vector* points; /* the outline's points */ - char* tags; /* the points flags */ - short* contours; /* the contour end points */ - - int flags; /* outline masks */ - - } FT_Outline; - - /* Following limits must be consistent with */ - /* FT_Outline.{n_contours,n_points} */ -#define FT_OUTLINE_CONTOURS_MAX SHRT_MAX -#define FT_OUTLINE_POINTS_MAX SHRT_MAX - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_OUTLINE_FLAGS */ - /* */ - /* <Description> */ - /* A list of bit-field constants use for the flags in an outline's */ - /* `flags' field. */ - /* */ - /* <Values> */ - /* FT_OUTLINE_NONE :: */ - /* Value~0 is reserved. */ - /* */ - /* FT_OUTLINE_OWNER :: */ - /* If set, this flag indicates that the outline's field arrays */ - /* (i.e., `points', `flags', and `contours') are `owned' by the */ - /* outline object, and should thus be freed when it is destroyed. */ - /* */ - /* FT_OUTLINE_EVEN_ODD_FILL :: */ - /* By default, outlines are filled using the non-zero winding rule. */ - /* If set to 1, the outline will be filled using the even-odd fill */ - /* rule (only works with the smooth rasterizer). */ - /* */ - /* FT_OUTLINE_REVERSE_FILL :: */ - /* By default, outside contours of an outline are oriented in */ - /* clock-wise direction, as defined in the TrueType specification. */ - /* This flag is set if the outline uses the opposite direction */ - /* (typically for Type~1 fonts). This flag is ignored by the scan */ - /* converter. */ - /* */ - /* FT_OUTLINE_IGNORE_DROPOUTS :: */ - /* By default, the scan converter will try to detect drop-outs in */ - /* an outline and correct the glyph bitmap to ensure consistent */ - /* shape continuity. If set, this flag hints the scan-line */ - /* converter to ignore such cases. See below for more information. */ - /* */ - /* FT_OUTLINE_SMART_DROPOUTS :: */ - /* Select smart dropout control. If unset, use simple dropout */ - /* control. Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See */ - /* below for more information. */ - /* */ - /* FT_OUTLINE_INCLUDE_STUBS :: */ - /* If set, turn pixels on for `stubs', otherwise exclude them. */ - /* Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set. See below for */ - /* more information. */ - /* */ - /* FT_OUTLINE_HIGH_PRECISION :: */ - /* This flag indicates that the scan-line converter should try to */ - /* convert this outline to bitmaps with the highest possible */ - /* quality. It is typically set for small character sizes. Note */ - /* that this is only a hint that might be completely ignored by a */ - /* given scan-converter. */ - /* */ - /* FT_OUTLINE_SINGLE_PASS :: */ - /* This flag is set to force a given scan-converter to only use a */ - /* single pass over the outline to render a bitmap glyph image. */ - /* Normally, it is set for very large character sizes. It is only */ - /* a hint that might be completely ignored by a given */ - /* scan-converter. */ - /* */ - /* <Note> */ - /* The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */ - /* and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth */ - /* rasterizer. */ - /* */ - /* There exists a second mechanism to pass the drop-out mode to the */ - /* B/W rasterizer; see the `tags' field in @FT_Outline. */ - /* */ - /* Please refer to the description of the `SCANTYPE' instruction in */ - /* the OpenType specification (in file `ttinst1.doc') how simple */ - /* drop-outs, smart drop-outs, and stubs are defined. */ - /* */ -#define FT_OUTLINE_NONE 0x0 -#define FT_OUTLINE_OWNER 0x1 -#define FT_OUTLINE_EVEN_ODD_FILL 0x2 -#define FT_OUTLINE_REVERSE_FILL 0x4 -#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 -#define FT_OUTLINE_SMART_DROPOUTS 0x10 -#define FT_OUTLINE_INCLUDE_STUBS 0x20 - -#define FT_OUTLINE_HIGH_PRECISION 0x100 -#define FT_OUTLINE_SINGLE_PASS 0x200 - - - /************************************************************************* - * - * @enum: - * ft_outline_flags - * - * @description: - * These constants are deprecated. Please use the corresponding - * @FT_OUTLINE_FLAGS values. - * - * @values: - * ft_outline_none :: See @FT_OUTLINE_NONE. - * ft_outline_owner :: See @FT_OUTLINE_OWNER. - * ft_outline_even_odd_fill :: See @FT_OUTLINE_EVEN_ODD_FILL. - * ft_outline_reverse_fill :: See @FT_OUTLINE_REVERSE_FILL. - * ft_outline_ignore_dropouts :: See @FT_OUTLINE_IGNORE_DROPOUTS. - * ft_outline_high_precision :: See @FT_OUTLINE_HIGH_PRECISION. - * ft_outline_single_pass :: See @FT_OUTLINE_SINGLE_PASS. - */ -#define ft_outline_none FT_OUTLINE_NONE -#define ft_outline_owner FT_OUTLINE_OWNER -#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL -#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL -#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS -#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION -#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS - - /* */ - -#define FT_CURVE_TAG( flag ) ( flag & 3 ) - -#define FT_CURVE_TAG_ON 1 -#define FT_CURVE_TAG_CONIC 0 -#define FT_CURVE_TAG_CUBIC 2 - -#define FT_CURVE_TAG_HAS_SCANMODE 4 - -#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ -#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ - -#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ - FT_CURVE_TAG_TOUCH_Y ) - -#define FT_Curve_Tag_On FT_CURVE_TAG_ON -#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC -#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC -#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X -#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_MoveToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `move */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `move to' is emitted to start a new contour in an outline. */ - /* */ - /* <Input> */ - /* to :: A pointer to the target point of the `move to'. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of the */ - /* decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - typedef int - (*FT_Outline_MoveToFunc)( const FT_Vector* to, - void* user ); - -#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_LineToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `line */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `line to' is emitted to indicate a segment in the outline. */ - /* */ - /* <Input> */ - /* to :: A pointer to the target point of the `line to'. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of the */ - /* decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - typedef int - (*FT_Outline_LineToFunc)( const FT_Vector* to, - void* user ); - -#define FT_Outline_LineTo_Func FT_Outline_LineToFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_ConicToFunc */ - /* */ - /* <Description> */ - /* A function pointer type use to describe the signature of a `conic */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `conic to' is emitted to indicate a second-order Bézier arc in */ - /* the outline. */ - /* */ - /* <Input> */ - /* control :: An intermediate control point between the last position */ - /* and the new target in `to'. */ - /* */ - /* to :: A pointer to the target end point of the conic arc. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of */ - /* the decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - typedef int - (*FT_Outline_ConicToFunc)( const FT_Vector* control, - const FT_Vector* to, - void* user ); - -#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_CubicToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `cubic */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ - /* */ - /* <Input> */ - /* control1 :: A pointer to the first Bézier control point. */ - /* */ - /* control2 :: A pointer to the second Bézier control point. */ - /* */ - /* to :: A pointer to the target end point. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of */ - /* the decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - typedef int - (*FT_Outline_CubicToFunc)( const FT_Vector* control1, - const FT_Vector* control2, - const FT_Vector* to, - void* user ); - -#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Outline_Funcs */ - /* */ - /* <Description> */ - /* A structure to hold various function pointers used during outline */ - /* decomposition in order to emit segments, conic, and cubic Béziers, */ - /* as well as `move to' and `close to' operations. */ - /* */ - /* <Fields> */ - /* move_to :: The `move to' emitter. */ - /* */ - /* line_to :: The segment emitter. */ - /* */ - /* conic_to :: The second-order Bézier arc emitter. */ - /* */ - /* cubic_to :: The third-order Bézier arc emitter. */ - /* */ - /* shift :: The shift that is applied to coordinates before they */ - /* are sent to the emitter. */ - /* */ - /* delta :: The delta that is applied to coordinates before they */ - /* are sent to the emitter, but after the shift. */ - /* */ - /* <Note> */ - /* The point coordinates sent to the emitters are the transformed */ - /* version of the original coordinates (this is important for high */ - /* accuracy during scan-conversion). The transformation is simple: */ - /* */ - /* { */ - /* x' = (x << shift) - delta */ - /* y' = (x << shift) - delta */ - /* } */ - /* */ - /* Set the value of `shift' and `delta' to~0 to get the original */ - /* point coordinates. */ - /* */ - typedef struct FT_Outline_Funcs_ - { - FT_Outline_MoveToFunc move_to; - FT_Outline_LineToFunc line_to; - FT_Outline_ConicToFunc conic_to; - FT_Outline_CubicToFunc cubic_to; - - int shift; - FT_Pos delta; - - } FT_Outline_Funcs; - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_IMAGE_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags to an unsigned long type. */ - /* */ - /* <Note> */ - /* Since many 16-bit compilers don't like 32-bit enumerations, you */ - /* should redefine this macro in case of problems to something like */ - /* this: */ - /* */ - /* { */ - /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ - /* } */ - /* */ - /* to get a simple enumeration without assigning special numbers. */ - /* */ -#ifndef FT_IMAGE_TAG -#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ - value = ( ( (unsigned long)_x1 << 24 ) | \ - ( (unsigned long)_x2 << 16 ) | \ - ( (unsigned long)_x3 << 8 ) | \ - (unsigned long)_x4 ) -#endif /* FT_IMAGE_TAG */ - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Glyph_Format */ - /* */ - /* <Description> */ - /* An enumeration type used to describe the format of a given glyph */ - /* image. Note that this version of FreeType only supports two image */ - /* formats, even though future font drivers will be able to register */ - /* their own format. */ - /* */ - /* <Values> */ - /* FT_GLYPH_FORMAT_NONE :: */ - /* The value~0 is reserved. */ - /* */ - /* FT_GLYPH_FORMAT_COMPOSITE :: */ - /* The glyph image is a composite of several other images. This */ - /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ - /* report compound glyphs (like accented characters). */ - /* */ - /* FT_GLYPH_FORMAT_BITMAP :: */ - /* The glyph image is a bitmap, and can be described as an */ - /* @FT_Bitmap. You generally need to access the `bitmap' field of */ - /* the @FT_GlyphSlotRec structure to read it. */ - /* */ - /* FT_GLYPH_FORMAT_OUTLINE :: */ - /* The glyph image is a vectorial outline made of line segments */ - /* and Bézier arcs; it can be described as an @FT_Outline; you */ - /* generally want to access the `outline' field of the */ - /* @FT_GlyphSlotRec structure to read it. */ - /* */ - /* FT_GLYPH_FORMAT_PLOTTER :: */ - /* The glyph image is a vectorial path with no inside and outside */ - /* contours. Some Type~1 fonts, like those in the Hershey family, */ - /* contain glyphs in this format. These are described as */ - /* @FT_Outline, but FreeType isn't currently capable of rendering */ - /* them correctly. */ - /* */ - typedef enum FT_Glyph_Format_ - { - FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), - - FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) - - } FT_Glyph_Format; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_glyph_format_xxx */ - /* */ - /* <Description> */ - /* A list of deprecated constants. Use the corresponding */ - /* @FT_Glyph_Format values instead. */ - /* */ - /* <Values> */ - /* ft_glyph_format_none :: See @FT_GLYPH_FORMAT_NONE. */ - /* ft_glyph_format_composite :: See @FT_GLYPH_FORMAT_COMPOSITE. */ - /* ft_glyph_format_bitmap :: See @FT_GLYPH_FORMAT_BITMAP. */ - /* ft_glyph_format_outline :: See @FT_GLYPH_FORMAT_OUTLINE. */ - /* ft_glyph_format_plotter :: See @FT_GLYPH_FORMAT_PLOTTER. */ - /* */ -#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE -#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE -#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP -#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE -#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** R A S T E R D E F I N I T I O N S *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* A raster is a scan converter, in charge of rendering an outline into */ - /* a a bitmap. This section contains the public API for rasters. */ - /* */ - /* Note that in FreeType 2, all rasters are now encapsulated within */ - /* specific modules called `renderers'. See `freetype/ftrender.h' for */ - /* more details on renderers. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* raster */ - /* */ - /* <Title> */ - /* Scanline Converter */ - /* */ - /* <Abstract> */ - /* How vectorial outlines are converted into bitmaps and pixmaps. */ - /* */ - /* <Description> */ - /* This section contains technical definitions. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Raster */ - /* */ - /* <Description> */ - /* A handle (pointer) to a raster object. Each object can be used */ - /* independently to convert an outline into a bitmap or pixmap. */ - /* */ - typedef struct FT_RasterRec_* FT_Raster; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Span */ - /* */ - /* <Description> */ - /* A structure used to model a single span of gray (or black) pixels */ - /* when rendering a monochrome or anti-aliased bitmap. */ - /* */ - /* <Fields> */ - /* x :: The span's horizontal start position. */ - /* */ - /* len :: The span's length in pixels. */ - /* */ - /* coverage :: The span color/coverage, ranging from 0 (background) */ - /* to 255 (foreground). Only used for anti-aliased */ - /* rendering. */ - /* */ - /* <Note> */ - /* This structure is used by the span drawing callback type named */ - /* @FT_SpanFunc which takes the y~coordinate of the span as a */ - /* a parameter. */ - /* */ - /* The coverage value is always between 0 and 255. If you want less */ - /* gray values, the callback function has to reduce them. */ - /* */ - typedef struct FT_Span_ - { - short x; - unsigned short len; - unsigned char coverage; - - } FT_Span; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_SpanFunc */ - /* */ - /* <Description> */ - /* A function used as a call-back by the anti-aliased renderer in */ - /* order to let client applications draw themselves the gray pixel */ - /* spans on each scan line. */ - /* */ - /* <Input> */ - /* y :: The scanline's y~coordinate. */ - /* */ - /* count :: The number of spans to draw on this scanline. */ - /* */ - /* spans :: A table of `count' spans to draw on the scanline. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Note> */ - /* This callback allows client applications to directly render the */ - /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ - /* */ - /* This can be used to write anti-aliased outlines directly to a */ - /* given background bitmap, and even perform translucency. */ - /* */ - /* Note that the `count' field cannot be greater than a fixed value */ - /* defined by the `FT_MAX_GRAY_SPANS' configuration macro in */ - /* `ftoption.h'. By default, this value is set to~32, which means */ - /* that if there are more than 32~spans on a given scanline, the */ - /* callback is called several times with the same `y' parameter in */ - /* order to draw all callbacks. */ - /* */ - /* Otherwise, the callback is only called once per scan-line, and */ - /* only for those scanlines that do have `gray' pixels on them. */ - /* */ - typedef void - (*FT_SpanFunc)( int y, - int count, - const FT_Span* spans, - void* user ); - -#define FT_Raster_Span_Func FT_SpanFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_BitTest_Func */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ - /* */ - /* A function used as a call-back by the monochrome scan-converter */ - /* to test whether a given target pixel is already set to the drawing */ - /* `color'. These tests are crucial to implement drop-out control */ - /* per-se the TrueType spec. */ - /* */ - /* <Input> */ - /* y :: The pixel's y~coordinate. */ - /* */ - /* x :: The pixel's x~coordinate. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Return> */ - /* 1~if the pixel is `set', 0~otherwise. */ - /* */ - typedef int - (*FT_Raster_BitTest_Func)( int y, - int x, - void* user ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_BitSet_Func */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ - /* */ - /* A function used as a call-back by the monochrome scan-converter */ - /* to set an individual target pixel. This is crucial to implement */ - /* drop-out control according to the TrueType specification. */ - /* */ - /* <Input> */ - /* y :: The pixel's y~coordinate. */ - /* */ - /* x :: The pixel's x~coordinate. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Return> */ - /* 1~if the pixel is `set', 0~otherwise. */ - /* */ - typedef void - (*FT_Raster_BitSet_Func)( int y, - int x, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_RASTER_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit flag constants as used in the `flags' field of a */ - /* @FT_Raster_Params structure. */ - /* */ - /* <Values> */ - /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ - /* */ - /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ - /* anti-aliased glyph image should be */ - /* generated. Otherwise, it will be */ - /* monochrome (1-bit). */ - /* */ - /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ - /* rendering. In this mode, client */ - /* applications must provide their own span */ - /* callback. This lets them directly */ - /* draw or compose over an existing bitmap. */ - /* If this bit is not set, the target */ - /* pixmap's buffer _must_ be zeroed before */ - /* rendering. */ - /* */ - /* Note that for now, direct rendering is */ - /* only possible with anti-aliased glyphs. */ - /* */ - /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ - /* rendering mode. If set, the output will */ - /* be clipped to a box specified in the */ - /* `clip_box' field of the */ - /* @FT_Raster_Params structure. */ - /* */ - /* Note that by default, the glyph bitmap */ - /* is clipped to the target pixmap, except */ - /* in direct rendering mode where all spans */ - /* are generated if no clipping box is set. */ - /* */ -#define FT_RASTER_FLAG_DEFAULT 0x0 -#define FT_RASTER_FLAG_AA 0x1 -#define FT_RASTER_FLAG_DIRECT 0x2 -#define FT_RASTER_FLAG_CLIP 0x4 - - /* deprecated */ -#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT -#define ft_raster_flag_aa FT_RASTER_FLAG_AA -#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT -#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Raster_Params */ - /* */ - /* <Description> */ - /* A structure to hold the arguments used by a raster's render */ - /* function. */ - /* */ - /* <Fields> */ - /* target :: The target bitmap. */ - /* */ - /* source :: A pointer to the source glyph image (e.g., an */ - /* @FT_Outline). */ - /* */ - /* flags :: The rendering flags. */ - /* */ - /* gray_spans :: The gray span drawing callback. */ - /* */ - /* black_spans :: The black span drawing callback. UNIMPLEMENTED! */ - /* */ - /* bit_test :: The bit test callback. UNIMPLEMENTED! */ - /* */ - /* bit_set :: The bit set callback. UNIMPLEMENTED! */ - /* */ - /* user :: User-supplied data that is passed to each drawing */ - /* callback. */ - /* */ - /* clip_box :: An optional clipping box. It is only used in */ - /* direct rendering mode. Note that coordinates here */ - /* should be expressed in _integer_ pixels (and not in */ - /* 26.6 fixed-point units). */ - /* */ - /* <Note> */ - /* An anti-aliased glyph bitmap is drawn if the @FT_RASTER_FLAG_AA */ - /* bit flag is set in the `flags' field, otherwise a monochrome */ - /* bitmap is generated. */ - /* */ - /* If the @FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ - /* raster will call the `gray_spans' callback to draw gray pixel */ - /* spans, in the case of an aa glyph bitmap, it will call */ - /* `black_spans', and `bit_test' and `bit_set' in the case of a */ - /* monochrome bitmap. This allows direct composition over a */ - /* pre-existing bitmap through user-provided callbacks to perform the */ - /* span drawing/composition. */ - /* */ - /* Note that the `bit_test' and `bit_set' callbacks are required when */ - /* rendering a monochrome bitmap, as they are crucial to implement */ - /* correct drop-out control as defined in the TrueType specification. */ - /* */ - typedef struct FT_Raster_Params_ - { - const FT_Bitmap* target; - const void* source; - int flags; - FT_SpanFunc gray_spans; - FT_SpanFunc black_spans; /* doesn't work! */ - FT_Raster_BitTest_Func bit_test; /* doesn't work! */ - FT_Raster_BitSet_Func bit_set; /* doesn't work! */ - void* user; - FT_BBox clip_box; - - } FT_Raster_Params; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_NewFunc */ - /* */ - /* <Description> */ - /* A function used to create a new raster object. */ - /* */ - /* <Input> */ - /* memory :: A handle to the memory allocator. */ - /* */ - /* <Output> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - /* <Note> */ - /* The `memory' parameter is a typeless pointer in order to avoid */ - /* un-wanted dependencies on the rest of the FreeType code. In */ - /* practice, it is an @FT_Memory object, i.e., a handle to the */ - /* standard FreeType memory allocator. However, this field can be */ - /* completely ignored by a given raster implementation. */ - /* */ - typedef int - (*FT_Raster_NewFunc)( void* memory, - FT_Raster* raster ); - -#define FT_Raster_New_Func FT_Raster_NewFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_DoneFunc */ - /* */ - /* <Description> */ - /* A function used to destroy a given raster object. */ - /* */ - /* <Input> */ - /* raster :: A handle to the raster object. */ - /* */ - typedef void - (*FT_Raster_DoneFunc)( FT_Raster raster ); - -#define FT_Raster_Done_Func FT_Raster_DoneFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_ResetFunc */ - /* */ - /* <Description> */ - /* FreeType provides an area of memory called the `render pool', */ - /* available to all registered rasters. This pool can be freely used */ - /* during a given scan-conversion but is shared by all rasters. Its */ - /* content is thus transient. */ - /* */ - /* This function is called each time the render pool changes, or just */ - /* after a new raster object is created. */ - /* */ - /* <Input> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* pool_base :: The address in memory of the render pool. */ - /* */ - /* pool_size :: The size in bytes of the render pool. */ - /* */ - /* <Note> */ - /* Rasters can ignore the render pool and rely on dynamic memory */ - /* allocation if they want to (a handle to the memory allocator is */ - /* passed to the raster constructor). However, this is not */ - /* recommended for efficiency purposes. */ - /* */ - typedef void - (*FT_Raster_ResetFunc)( FT_Raster raster, - unsigned char* pool_base, - unsigned long pool_size ); - -#define FT_Raster_Reset_Func FT_Raster_ResetFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_SetModeFunc */ - /* */ - /* <Description> */ - /* This function is a generic facility to change modes or attributes */ - /* in a given raster. This can be used for debugging purposes, or */ - /* simply to allow implementation-specific `features' in a given */ - /* raster module. */ - /* */ - /* <Input> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* mode :: A 4-byte tag used to name the mode or property. */ - /* */ - /* args :: A pointer to the new mode/property to use. */ - /* */ - typedef int - (*FT_Raster_SetModeFunc)( FT_Raster raster, - unsigned long mode, - void* args ); - -#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_RenderFunc */ - /* */ - /* <Description> */ - /* Invoke a given raster to scan-convert a given glyph image into a */ - /* target bitmap. */ - /* */ - /* <Input> */ - /* raster :: A handle to the raster object. */ - /* */ - /* params :: A pointer to an @FT_Raster_Params structure used to */ - /* store the rendering parameters. */ - /* */ - /* <Return> */ - /* Error code. 0~means success. */ - /* */ - /* <Note> */ - /* The exact format of the source image depends on the raster's glyph */ - /* format defined in its @FT_Raster_Funcs structure. It can be an */ - /* @FT_Outline or anything else in order to support a large array of */ - /* glyph formats. */ - /* */ - /* Note also that the render function can fail and return a */ - /* `FT_Err_Unimplemented_Feature' error code if the raster used does */ - /* not support direct composition. */ - /* */ - /* XXX: For now, the standard raster doesn't support direct */ - /* composition but this should change for the final release (see */ - /* the files `demos/src/ftgrays.c' and `demos/src/ftgrays2.c' */ - /* for examples of distinct implementations which support direct */ - /* composition). */ - /* */ - typedef int - (*FT_Raster_RenderFunc)( FT_Raster raster, - const FT_Raster_Params* params ); - -#define FT_Raster_Render_Func FT_Raster_RenderFunc - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Raster_Funcs */ - /* */ - /* <Description> */ - /* A structure used to describe a given raster class to the library. */ - /* */ - /* <Fields> */ - /* glyph_format :: The supported glyph format for this raster. */ - /* */ - /* raster_new :: The raster constructor. */ - /* */ - /* raster_reset :: Used to reset the render pool within the raster. */ - /* */ - /* raster_render :: A function to render a glyph into a given bitmap. */ - /* */ - /* raster_done :: The raster destructor. */ - /* */ - typedef struct FT_Raster_Funcs_ - { - FT_Glyph_Format glyph_format; - FT_Raster_NewFunc raster_new; - FT_Raster_ResetFunc raster_reset; - FT_Raster_SetModeFunc raster_set_mode; - FT_Raster_RenderFunc raster_render; - FT_Raster_DoneFunc raster_done; - - } FT_Raster_Funcs; - - - /* */ - - -FT_END_HEADER - -#endif /* __FTIMAGE_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftincrem.h b/GRRLIB/lib/freetype/include/freetype/ftincrem.h deleted file mode 100644 index 96abede..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftincrem.h +++ /dev/null @@ -1,349 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftincrem.h */ -/* */ -/* FreeType incremental loading (specification). */ -/* */ -/* Copyright 2002, 2003, 2006, 2007, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTINCREM_H__ -#define __FTINCREM_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************** - * - * @section: - * incremental - * - * @title: - * Incremental Loading - * - * @abstract: - * Custom Glyph Loading. - * - * @description: - * This section contains various functions used to perform so-called - * `incremental' glyph loading. This is a mode where all glyphs loaded - * from a given @FT_Face are provided by the client application, - * - * Apart from that, all other tables are loaded normally from the font - * file. This mode is useful when FreeType is used within another - * engine, e.g., a PostScript Imaging Processor. - * - * To enable this mode, you must use @FT_Open_Face, passing an - * @FT_Parameter with the @FT_PARAM_TAG_INCREMENTAL tag and an - * @FT_Incremental_Interface value. See the comments for - * @FT_Incremental_InterfaceRec for an example. - * - */ - - - /*************************************************************************** - * - * @type: - * FT_Incremental - * - * @description: - * An opaque type describing a user-provided object used to implement - * `incremental' glyph loading within FreeType. This is used to support - * embedded fonts in certain environments (e.g., PostScript interpreters), - * where the glyph data isn't in the font file, or must be overridden by - * different values. - * - * @note: - * It is up to client applications to create and implement @FT_Incremental - * objects, as long as they provide implementations for the methods - * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc - * and @FT_Incremental_GetGlyphMetricsFunc. - * - * See the description of @FT_Incremental_InterfaceRec to understand how - * to use incremental objects with FreeType. - * - */ - typedef struct FT_IncrementalRec_* FT_Incremental; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_MetricsRec - * - * @description: - * A small structure used to contain the basic glyph metrics returned - * by the @FT_Incremental_GetGlyphMetricsFunc method. - * - * @fields: - * bearing_x :: - * Left bearing, in font units. - * - * bearing_y :: - * Top bearing, in font units. - * - * advance :: - * Glyph advance, in font units. - * - * @note: - * These correspond to horizontal or vertical metrics depending on the - * value of the `vertical' argument to the function - * @FT_Incremental_GetGlyphMetricsFunc. - * - */ - typedef struct FT_Incremental_MetricsRec_ - { - FT_Long bearing_x; - FT_Long bearing_y; - FT_Long advance; - - } FT_Incremental_MetricsRec; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_Metrics - * - * @description: - * A handle to an @FT_Incremental_MetricsRec structure. - * - */ - typedef struct FT_Incremental_MetricsRec_* FT_Incremental_Metrics; - - - /*************************************************************************** - * - * @type: - * FT_Incremental_GetGlyphDataFunc - * - * @description: - * A function called by FreeType to access a given glyph's data bytes - * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is - * enabled. - * - * Note that the format of the glyph's data bytes depends on the font - * file format. For TrueType, it must correspond to the raw bytes within - * the `glyf' table. For PostScript formats, it must correspond to the - * *unencrypted* charstring bytes, without any `lenIV' header. It is - * undefined for any other format. - * - * @input: - * incremental :: - * Handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * glyph_index :: - * Index of relevant glyph. - * - * @output: - * adata :: - * A structure describing the returned glyph data bytes (which will be - * accessed as a read-only byte block). - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If this function returns successfully the method - * @FT_Incremental_FreeGlyphDataFunc will be called later to release - * the data bytes. - * - * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for - * compound glyphs. - * - */ - typedef FT_Error - (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, - FT_UInt glyph_index, - FT_Data* adata ); - - - /*************************************************************************** - * - * @type: - * FT_Incremental_FreeGlyphDataFunc - * - * @description: - * A function used to release the glyph data bytes returned by a - * successful call to @FT_Incremental_GetGlyphDataFunc. - * - * @input: - * incremental :: - * A handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * data :: - * A structure describing the glyph data bytes (which will be accessed - * as a read-only byte block). - * - */ - typedef void - (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, - FT_Data* data ); - - - /*************************************************************************** - * - * @type: - * FT_Incremental_GetGlyphMetricsFunc - * - * @description: - * A function used to retrieve the basic metrics of a given glyph index - * before accessing its data. This is necessary because, in certain - * formats like TrueType, the metrics are stored in a different place from - * the glyph images proper. - * - * @input: - * incremental :: - * A handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * glyph_index :: - * Index of relevant glyph. - * - * vertical :: - * If true, return vertical metrics. - * - * ametrics :: - * This parameter is used for both input and output. - * The original glyph metrics, if any, in font units. If metrics are - * not available all the values must be set to zero. - * - * @output: - * ametrics :: - * The replacement glyph metrics in font units. - * - */ - typedef FT_Error - (*FT_Incremental_GetGlyphMetricsFunc) - ( FT_Incremental incremental, - FT_UInt glyph_index, - FT_Bool vertical, - FT_Incremental_MetricsRec *ametrics ); - - - /************************************************************************** - * - * @struct: - * FT_Incremental_FuncsRec - * - * @description: - * A table of functions for accessing fonts that load data - * incrementally. Used in @FT_Incremental_InterfaceRec. - * - * @fields: - * get_glyph_data :: - * The function to get glyph data. Must not be null. - * - * free_glyph_data :: - * The function to release glyph data. Must not be null. - * - * get_glyph_metrics :: - * The function to get glyph metrics. May be null if the font does - * not provide overriding glyph metrics. - * - */ - typedef struct FT_Incremental_FuncsRec_ - { - FT_Incremental_GetGlyphDataFunc get_glyph_data; - FT_Incremental_FreeGlyphDataFunc free_glyph_data; - FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; - - } FT_Incremental_FuncsRec; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_InterfaceRec - * - * @description: - * A structure to be used with @FT_Open_Face to indicate that the user - * wants to support incremental glyph loading. You should use it with - * @FT_PARAM_TAG_INCREMENTAL as in the following example: - * - * { - * FT_Incremental_InterfaceRec inc_int; - * FT_Parameter parameter; - * FT_Open_Args open_args; - * - * - * // set up incremental descriptor - * inc_int.funcs = my_funcs; - * inc_int.object = my_object; - * - * // set up optional parameter - * parameter.tag = FT_PARAM_TAG_INCREMENTAL; - * parameter.data = &inc_int; - * - * // set up FT_Open_Args structure - * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; - * open_args.pathname = my_font_pathname; - * open_args.num_params = 1; - * open_args.params = ¶meter; // we use one optional argument - * - * // open the font - * error = FT_Open_Face( library, &open_args, index, &face ); - * ... - * } - * - */ - typedef struct FT_Incremental_InterfaceRec_ - { - const FT_Incremental_FuncsRec* funcs; - FT_Incremental object; - - } FT_Incremental_InterfaceRec; - - - /*************************************************************************** - * - * @type: - * FT_Incremental_Interface - * - * @description: - * A pointer to an @FT_Incremental_InterfaceRec structure. - * - */ - typedef FT_Incremental_InterfaceRec* FT_Incremental_Interface; - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_INCREMENTAL - * - * @description: - * A constant used as the tag of @FT_Parameter structures to indicate - * an incremental loading object to be used by FreeType. - * - */ -#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) - - /* */ - -FT_END_HEADER - -#endif /* __FTINCREM_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftlcdfil.h b/GRRLIB/lib/freetype/include/freetype/ftlcdfil.h deleted file mode 100644 index c6201b3..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftlcdfil.h +++ /dev/null @@ -1,172 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlcdfil.h */ -/* */ -/* FreeType API for color filtering of subpixel bitmap glyphs */ -/* (specification). */ -/* */ -/* Copyright 2006, 2007, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FT_LCD_FILTER_H__ -#define __FT_LCD_FILTER_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************** - * - * @section: - * lcd_filtering - * - * @title: - * LCD Filtering - * - * @abstract: - * Reduce color fringes of LCD-optimized bitmaps. - * - * @description: - * The @FT_Library_SetLcdFilter API can be used to specify a low-pass - * filter which is then applied to LCD-optimized bitmaps generated - * through @FT_Render_Glyph. This is useful to reduce color fringes - * which would occur with unfiltered rendering. - * - * Note that no filter is active by default, and that this function is - * *not* implemented in default builds of the library. You need to - * #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your `ftoption.h' file - * in order to activate it. - */ - - - /**************************************************************************** - * - * @func: - * FT_LcdFilter - * - * @description: - * A list of values to identify various types of LCD filters. - * - * @values: - * FT_LCD_FILTER_NONE :: - * Do not perform filtering. When used with subpixel rendering, this - * results in sometimes severe color fringes. - * - * FT_LCD_FILTER_DEFAULT :: - * The default filter reduces color fringes considerably, at the cost - * of a slight blurriness in the output. - * - * FT_LCD_FILTER_LIGHT :: - * The light filter is a variant that produces less blurriness at the - * cost of slightly more color fringes than the default one. It might - * be better, depending on taste, your monitor, or your personal vision. - * - * FT_LCD_FILTER_LEGACY :: - * This filter corresponds to the original libXft color filter. It - * provides high contrast output but can exhibit really bad color - * fringes if glyphs are not extremely well hinted to the pixel grid. - * In other words, it only works well if the TrueType bytecode - * interpreter is enabled *and* high-quality hinted fonts are used. - * - * This filter is only provided for comparison purposes, and might be - * disabled or stay unsupported in the future. - * - * @since: - * 2.3.0 - */ - typedef enum FT_LcdFilter_ - { - FT_LCD_FILTER_NONE = 0, - FT_LCD_FILTER_DEFAULT = 1, - FT_LCD_FILTER_LIGHT = 2, - FT_LCD_FILTER_LEGACY = 16, - - FT_LCD_FILTER_MAX /* do not remove */ - - } FT_LcdFilter; - - - /************************************************************************** - * - * @func: - * FT_Library_SetLcdFilter - * - * @description: - * This function is used to apply color filtering to LCD decimated - * bitmaps, like the ones used when calling @FT_Render_Glyph with - * @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V. - * - * @input: - * library :: - * A handle to the target library instance. - * - * filter :: - * The filter type. - * - * You can use @FT_LCD_FILTER_NONE here to disable this feature, or - * @FT_LCD_FILTER_DEFAULT to use a default filter that should work - * well on most LCD screens. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This feature is always disabled by default. Clients must make an - * explicit call to this function with a `filter' value other than - * @FT_LCD_FILTER_NONE in order to enable it. - * - * Due to *PATENTS* covering subpixel rendering, this function doesn't - * do anything except returning `FT_Err_Unimplemented_Feature' if the - * configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not - * defined in your build of the library, which should correspond to all - * default builds of FreeType. - * - * The filter affects glyph bitmaps rendered through @FT_Render_Glyph, - * @FT_Outline_Get_Bitmap, @FT_Load_Glyph, and @FT_Load_Char. - * - * It does _not_ affect the output of @FT_Outline_Render and - * @FT_Outline_Get_Bitmap. - * - * If this feature is activated, the dimensions of LCD glyph bitmaps are - * either larger or taller than the dimensions of the corresponding - * outline with regards to the pixel grid. For example, for - * @FT_RENDER_MODE_LCD, the filter adds up to 3~pixels to the left, and - * up to 3~pixels to the right. - * - * The bitmap offset values are adjusted correctly, so clients shouldn't - * need to modify their layout and glyph positioning code when enabling - * the filter. - * - * @since: - * 2.3.0 - */ - FT_EXPORT( FT_Error ) - FT_Library_SetLcdFilter( FT_Library library, - FT_LcdFilter filter ); - - /* */ - - -FT_END_HEADER - -#endif /* __FT_LCD_FILTER_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftlist.h b/GRRLIB/lib/freetype/include/freetype/ftlist.h deleted file mode 100644 index 93b05fc..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftlist.h +++ /dev/null @@ -1,273 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlist.h */ -/* */ -/* Generic list support for FreeType (specification). */ -/* */ -/* Copyright 1996-2001, 2003, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file implements functions relative to list processing. Its */ - /* data structures are defined in `freetype.h'. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTLIST_H__ -#define __FTLIST_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* list_processing */ - /* */ - /* <Title> */ - /* List Processing */ - /* */ - /* <Abstract> */ - /* Simple management of lists. */ - /* */ - /* <Description> */ - /* This section contains various definitions related to list */ - /* processing using doubly-linked nodes. */ - /* */ - /* <Order> */ - /* FT_List */ - /* FT_ListNode */ - /* FT_ListRec */ - /* FT_ListNodeRec */ - /* */ - /* FT_List_Add */ - /* FT_List_Insert */ - /* FT_List_Find */ - /* FT_List_Remove */ - /* FT_List_Up */ - /* FT_List_Iterate */ - /* FT_List_Iterator */ - /* FT_List_Finalize */ - /* FT_List_Destructor */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Find */ - /* */ - /* <Description> */ - /* Find the list node for a given listed object. */ - /* */ - /* <Input> */ - /* list :: A pointer to the parent list. */ - /* data :: The address of the listed object. */ - /* */ - /* <Return> */ - /* List node. NULL if it wasn't found. */ - /* */ - FT_EXPORT( FT_ListNode ) - FT_List_Find( FT_List list, - void* data ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Add */ - /* */ - /* <Description> */ - /* Append an element to the end of a list. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* node :: The node to append. */ - /* */ - FT_EXPORT( void ) - FT_List_Add( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Insert */ - /* */ - /* <Description> */ - /* Insert an element at the head of a list. */ - /* */ - /* <InOut> */ - /* list :: A pointer to parent list. */ - /* node :: The node to insert. */ - /* */ - FT_EXPORT( void ) - FT_List_Insert( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Remove */ - /* */ - /* <Description> */ - /* Remove a node from a list. This function doesn't check whether */ - /* the node is in the list! */ - /* */ - /* <Input> */ - /* node :: The node to remove. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* */ - FT_EXPORT( void ) - FT_List_Remove( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Up */ - /* */ - /* <Description> */ - /* Move a node to the head/top of a list. Used to maintain LRU */ - /* lists. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* node :: The node to move. */ - /* */ - FT_EXPORT( void ) - FT_List_Up( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_List_Iterator */ - /* */ - /* <Description> */ - /* An FT_List iterator function which is called during a list parse */ - /* by @FT_List_Iterate. */ - /* */ - /* <Input> */ - /* node :: The current iteration list node. */ - /* */ - /* user :: A typeless pointer passed to @FT_List_Iterate. */ - /* Can be used to point to the iteration's state. */ - /* */ - typedef FT_Error - (*FT_List_Iterator)( FT_ListNode node, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Iterate */ - /* */ - /* <Description> */ - /* Parse a list and calls a given iterator function on each element. */ - /* Note that parsing is stopped as soon as one of the iterator calls */ - /* returns a non-zero value. */ - /* */ - /* <Input> */ - /* list :: A handle to the list. */ - /* iterator :: An iterator function, called on each node of the list. */ - /* user :: A user-supplied field which is passed as the second */ - /* argument to the iterator. */ - /* */ - /* <Return> */ - /* The result (a FreeType error code) of the last iterator call. */ - /* */ - FT_EXPORT( FT_Error ) - FT_List_Iterate( FT_List list, - FT_List_Iterator iterator, - void* user ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_List_Destructor */ - /* */ - /* <Description> */ - /* An @FT_List iterator function which is called during a list */ - /* finalization by @FT_List_Finalize to destroy all elements in a */ - /* given list. */ - /* */ - /* <Input> */ - /* system :: The current system object. */ - /* */ - /* data :: The current object to destroy. */ - /* */ - /* user :: A typeless pointer passed to @FT_List_Iterate. It can */ - /* be used to point to the iteration's state. */ - /* */ - typedef void - (*FT_List_Destructor)( FT_Memory memory, - void* data, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Finalize */ - /* */ - /* <Description> */ - /* Destroy all elements in the list as well as the list itself. */ - /* */ - /* <Input> */ - /* list :: A handle to the list. */ - /* */ - /* destroy :: A list destructor that will be applied to each element */ - /* of the list. */ - /* */ - /* memory :: The current memory object which handles deallocation. */ - /* */ - /* user :: A user-supplied field which is passed as the last */ - /* argument to the destructor. */ - /* */ - FT_EXPORT( void ) - FT_List_Finalize( FT_List list, - FT_List_Destructor destroy, - FT_Memory memory, - void* user ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTLIST_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftlzw.h b/GRRLIB/lib/freetype/include/freetype/ftlzw.h deleted file mode 100644 index 00d4016..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftlzw.h +++ /dev/null @@ -1,99 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlzw.h */ -/* */ -/* LZW-compressed stream support. */ -/* */ -/* Copyright 2004, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTLZW_H__ -#define __FTLZW_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* lzw */ - /* */ - /* <Title> */ - /* LZW Streams */ - /* */ - /* <Abstract> */ - /* Using LZW-compressed font files. */ - /* */ - /* <Description> */ - /* This section contains the declaration of LZW-specific functions. */ - /* */ - /*************************************************************************/ - - /************************************************************************ - * - * @function: - * FT_Stream_OpenLZW - * - * @description: - * Open a new stream to parse LZW-compressed font files. This is - * mainly used to support the compressed `*.pcf.Z' fonts that come - * with XFree86. - * - * @input: - * stream :: The target embedding stream. - * - * source :: The source stream. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function `FT_Stream_Close' on the new stream will - * *not* call `FT_Stream_Close' on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream - * - * In certain builds of the library, LZW compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a LZW stream from it - * and re-open the face with it. - * - * This function may return `FT_Err_Unimplemented_Feature' if your build - * of FreeType was not compiled with LZW support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenLZW( FT_Stream stream, - FT_Stream source ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTLZW_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftmac.h b/GRRLIB/lib/freetype/include/freetype/ftmac.h deleted file mode 100644 index ab5bab5..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftmac.h +++ /dev/null @@ -1,274 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmac.h */ -/* */ -/* Additional Mac-specific API. */ -/* */ -/* Copyright 1996-2001, 2004, 2006, 2007 by */ -/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* NOTE: Include this file after <freetype/freetype.h> and after any */ -/* Mac-specific headers (because this header uses Mac types such as */ -/* Handle, FSSpec, FSRef, etc.) */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMAC_H__ -#define __FTMAC_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - -/* gcc-3.4.1 and later can warn about functions tagged as deprecated */ -#ifndef FT_DEPRECATED_ATTRIBUTE -#if defined(__GNUC__) && \ - ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) -#define FT_DEPRECATED_ATTRIBUTE __attribute__((deprecated)) -#else -#define FT_DEPRECATED_ATTRIBUTE -#endif -#endif - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* mac_specific */ - /* */ - /* <Title> */ - /* Mac Specific Interface */ - /* */ - /* <Abstract> */ - /* Only available on the Macintosh. */ - /* */ - /* <Description> */ - /* The following definitions are only available if FreeType is */ - /* compiled on a Macintosh. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FOND */ - /* */ - /* <Description> */ - /* Create a new face object from a FOND resource. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* fond :: A FOND resource. */ - /* */ - /* face_index :: Only supported for the -1 `sanity check' special */ - /* case. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Notes> */ - /* This function can be used to create @FT_Face objects from fonts */ - /* that are installed in the system as follows. */ - /* */ - /* { */ - /* fond = GetResource( 'FOND', fontName ); */ - /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FOND( FT_Library library, - Handle fond, - FT_Long face_index, - FT_Face *aface ) - FT_DEPRECATED_ATTRIBUTE; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFile_From_Mac_Name */ - /* */ - /* <Description> */ - /* Return an FSSpec for the disk file containing the named font. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font (e.g., Times New Roman */ - /* Bold). */ - /* */ - /* <Output> */ - /* pathSpec :: FSSpec to the file. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* face_index :: Index of the face. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFile_From_Mac_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - FT_DEPRECATED_ATTRIBUTE; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFile_From_Mac_ATS_Name */ - /* */ - /* <Description> */ - /* Return an FSSpec for the disk file containing the named font. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font in ATS framework. */ - /* */ - /* <Output> */ - /* pathSpec :: FSSpec to the file. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* face_index :: Index of the face. For passing to */ - /* @FT_New_Face_From_FSSpec. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFile_From_Mac_ATS_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - FT_DEPRECATED_ATTRIBUTE; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFilePath_From_Mac_ATS_Name */ - /* */ - /* <Description> */ - /* Return a pathname of the disk file and face index for given font */ - /* name which is handled by ATS framework. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font in ATS framework. */ - /* */ - /* <Output> */ - /* path :: Buffer to store pathname of the file. For passing */ - /* to @FT_New_Face. The client must allocate this */ - /* buffer before calling this function. */ - /* */ - /* maxPathSize :: Lengths of the buffer `path' that client allocated. */ - /* */ - /* face_index :: Index of the face. For passing to @FT_New_Face. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFilePath_From_Mac_ATS_Name( const char* fontName, - UInt8* path, - UInt32 maxPathSize, - FT_Long* face_index ) - FT_DEPRECATED_ATTRIBUTE; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FSSpec */ - /* */ - /* <Description> */ - /* Create a new face object from a given resource and typeface index */ - /* using an FSSpec to the font file. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* spec :: FSSpec to the font file. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index~0. */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ - /* it accepts an FSSpec instead of a path. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FSSpec( FT_Library library, - const FSSpec *spec, - FT_Long face_index, - FT_Face *aface ) - FT_DEPRECATED_ATTRIBUTE; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FSRef */ - /* */ - /* <Description> */ - /* Create a new face object from a given resource and typeface index */ - /* using an FSRef to the font file. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* spec :: FSRef to the font file. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index~0. */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* @FT_New_Face_From_FSRef is identical to @FT_New_Face except */ - /* it accepts an FSRef instead of a path. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FSRef( FT_Library library, - const FSRef *ref, - FT_Long face_index, - FT_Face *aface ) - FT_DEPRECATED_ATTRIBUTE; - - /* */ - - -FT_END_HEADER - - -#endif /* __FTMAC_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftmm.h b/GRRLIB/lib/freetype/include/freetype/ftmm.h deleted file mode 100644 index 3aefb9e..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftmm.h +++ /dev/null @@ -1,378 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmm.h */ -/* */ -/* FreeType Multiple Master font interface (specification). */ -/* */ -/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMM_H__ -#define __FTMM_H__ - - -#include <ft2build.h> -#include FT_TYPE1_TABLES_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* multiple_masters */ - /* */ - /* <Title> */ - /* Multiple Masters */ - /* */ - /* <Abstract> */ - /* How to manage Multiple Masters fonts. */ - /* */ - /* <Description> */ - /* The following types and functions are used to manage Multiple */ - /* Master fonts, i.e., the selection of specific design instances by */ - /* setting design axis coordinates. */ - /* */ - /* George Williams has extended this interface to make it work with */ - /* both Type~1 Multiple Masters fonts and GX distortable (var) */ - /* fonts. Some of these routines only work with MM fonts, others */ - /* will work with both types. They are similar enough that a */ - /* consistent interface makes sense. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_MM_Axis */ - /* */ - /* <Description> */ - /* A simple structure used to model a given axis in design space for */ - /* Multiple Masters fonts. */ - /* */ - /* This structure can't be used for GX var fonts. */ - /* */ - /* <Fields> */ - /* name :: The axis's name. */ - /* */ - /* minimum :: The axis's minimum design coordinate. */ - /* */ - /* maximum :: The axis's maximum design coordinate. */ - /* */ - typedef struct FT_MM_Axis_ - { - FT_String* name; - FT_Long minimum; - FT_Long maximum; - - } FT_MM_Axis; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Multi_Master */ - /* */ - /* <Description> */ - /* A structure used to model the axes and space of a Multiple Masters */ - /* font. */ - /* */ - /* This structure can't be used for GX var fonts. */ - /* */ - /* <Fields> */ - /* num_axis :: Number of axes. Cannot exceed~4. */ - /* */ - /* num_designs :: Number of designs; should be normally 2^num_axis */ - /* even though the Type~1 specification strangely */ - /* allows for intermediate designs to be present. This */ - /* number cannot exceed~16. */ - /* */ - /* axis :: A table of axis descriptors. */ - /* */ - typedef struct FT_Multi_Master_ - { - FT_UInt num_axis; - FT_UInt num_designs; - FT_MM_Axis axis[T1_MAX_MM_AXIS]; - - } FT_Multi_Master; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Var_Axis */ - /* */ - /* <Description> */ - /* A simple structure used to model a given axis in design space for */ - /* Multiple Masters and GX var fonts. */ - /* */ - /* <Fields> */ - /* name :: The axis's name. */ - /* Not always meaningful for GX. */ - /* */ - /* minimum :: The axis's minimum design coordinate. */ - /* */ - /* def :: The axis's default design coordinate. */ - /* FreeType computes meaningful default values for MM; it */ - /* is then an integer value, not in 16.16 format. */ - /* */ - /* maximum :: The axis's maximum design coordinate. */ - /* */ - /* tag :: The axis's tag (the GX equivalent to `name'). */ - /* FreeType provides default values for MM if possible. */ - /* */ - /* strid :: The entry in `name' table (another GX version of */ - /* `name'). */ - /* Not meaningful for MM. */ - /* */ - typedef struct FT_Var_Axis_ - { - FT_String* name; - - FT_Fixed minimum; - FT_Fixed def; - FT_Fixed maximum; - - FT_ULong tag; - FT_UInt strid; - - } FT_Var_Axis; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Var_Named_Style */ - /* */ - /* <Description> */ - /* A simple structure used to model a named style in a GX var font. */ - /* */ - /* This structure can't be used for MM fonts. */ - /* */ - /* <Fields> */ - /* coords :: The design coordinates for this style. */ - /* This is an array with one entry for each axis. */ - /* */ - /* strid :: The entry in `name' table identifying this style. */ - /* */ - typedef struct FT_Var_Named_Style_ - { - FT_Fixed* coords; - FT_UInt strid; - - } FT_Var_Named_Style; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_MM_Var */ - /* */ - /* <Description> */ - /* A structure used to model the axes and space of a Multiple Masters */ - /* or GX var distortable font. */ - /* */ - /* Some fields are specific to one format and not to the other. */ - /* */ - /* <Fields> */ - /* num_axis :: The number of axes. The maximum value is~4 for */ - /* MM; no limit in GX. */ - /* */ - /* num_designs :: The number of designs; should be normally */ - /* 2^num_axis for MM fonts. Not meaningful for GX */ - /* (where every glyph could have a different */ - /* number of designs). */ - /* */ - /* num_namedstyles :: The number of named styles; only meaningful for */ - /* GX which allows certain design coordinates to */ - /* have a string ID (in the `name' table) */ - /* associated with them. The font can tell the */ - /* user that, for example, Weight=1.5 is `Bold'. */ - /* */ - /* axis :: A table of axis descriptors. */ - /* GX fonts contain slightly more data than MM. */ - /* */ - /* namedstyles :: A table of named styles. */ - /* Only meaningful with GX. */ - /* */ - typedef struct FT_MM_Var_ - { - FT_UInt num_axis; - FT_UInt num_designs; - FT_UInt num_namedstyles; - FT_Var_Axis* axis; - FT_Var_Named_Style* namedstyle; - - } FT_MM_Var; - - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Multi_Master */ - /* */ - /* <Description> */ - /* Retrieve the Multiple Master descriptor of a given font. */ - /* */ - /* This function can't be used with GX fonts. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Output> */ - /* amaster :: The Multiple Masters descriptor. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Multi_Master( FT_Face face, - FT_Multi_Master *amaster ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_MM_Var */ - /* */ - /* <Description> */ - /* Retrieve the Multiple Master/GX var descriptor of a given font. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Output> */ - /* amaster :: The Multiple Masters/GX var descriptor. */ - /* Allocates a data structure, which the user must free */ - /* (a single call to FT_FREE will do it). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_MM_Var( FT_Face face, - FT_MM_Var* *amaster ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_MM_Design_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Masters fonts, choose an interpolated font design */ - /* through design coordinates. */ - /* */ - /* This function can't be used with GX fonts. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: An array of design coordinates. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_MM_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Long* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Var_Design_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Master or GX Var fonts, choose an interpolated font */ - /* design through design coordinates. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: An array of design coordinates. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Var_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_MM_Blend_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Masters and GX var fonts, choose an interpolated font */ - /* design through normalized blend coordinates. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: The design coordinates array (each element must be */ - /* between 0 and 1.0). */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_MM_Blend_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Var_Blend_Coordinates */ - /* */ - /* <Description> */ - /* This is another name of @FT_Set_MM_Blend_Coordinates. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Var_Blend_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTMM_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftmodapi.h b/GRRLIB/lib/freetype/include/freetype/ftmodapi.h deleted file mode 100644 index 3c9b876..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftmodapi.h +++ /dev/null @@ -1,445 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmodapi.h */ -/* */ -/* FreeType modules public interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2006, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMODAPI_H__ -#define __FTMODAPI_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* module_management */ - /* */ - /* <Title> */ - /* Module Management */ - /* */ - /* <Abstract> */ - /* How to add, upgrade, and remove modules from FreeType. */ - /* */ - /* <Description> */ - /* The definitions below are used to manage modules within FreeType. */ - /* Modules can be added, upgraded, and removed at runtime. */ - /* */ - /*************************************************************************/ - - - /* module bit flags */ -#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ -#define FT_MODULE_RENDERER 2 /* this module is a renderer */ -#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ -#define FT_MODULE_STYLER 8 /* this module is a styler */ - -#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ - /* scalable fonts */ -#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ - /* support vector outlines */ -#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ - /* own hinter */ - - - /* deprecated values */ -#define ft_module_font_driver FT_MODULE_FONT_DRIVER -#define ft_module_renderer FT_MODULE_RENDERER -#define ft_module_hinter FT_MODULE_HINTER -#define ft_module_styler FT_MODULE_STYLER - -#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE -#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES -#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER - - - typedef FT_Pointer FT_Module_Interface; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Module_Constructor */ - /* */ - /* <Description> */ - /* A function used to initialize (not create) a new module object. */ - /* */ - /* <Input> */ - /* module :: The module to initialize. */ - /* */ - typedef FT_Error - (*FT_Module_Constructor)( FT_Module module ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Module_Destructor */ - /* */ - /* <Description> */ - /* A function used to finalize (not destroy) a given module object. */ - /* */ - /* <Input> */ - /* module :: The module to finalize. */ - /* */ - typedef void - (*FT_Module_Destructor)( FT_Module module ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Module_Requester */ - /* */ - /* <Description> */ - /* A function used to query a given module for a specific interface. */ - /* */ - /* <Input> */ - /* module :: The module to finalize. */ - /* */ - /* name :: The name of the interface in the module. */ - /* */ - typedef FT_Module_Interface - (*FT_Module_Requester)( FT_Module module, - const char* name ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Module_Class */ - /* */ - /* <Description> */ - /* The module class descriptor. */ - /* */ - /* <Fields> */ - /* module_flags :: Bit flags describing the module. */ - /* */ - /* module_size :: The size of one module object/instance in */ - /* bytes. */ - /* */ - /* module_name :: The name of the module. */ - /* */ - /* module_version :: The version, as a 16.16 fixed number */ - /* (major.minor). */ - /* */ - /* module_requires :: The version of FreeType this module requires, */ - /* as a 16.16 fixed number (major.minor). Starts */ - /* at version 2.0, i.e., 0x20000. */ - /* */ - /* module_init :: The initializing function. */ - /* */ - /* module_done :: The finalizing function. */ - /* */ - /* get_interface :: The interface requesting function. */ - /* */ - typedef struct FT_Module_Class_ - { - FT_ULong module_flags; - FT_Long module_size; - const FT_String* module_name; - FT_Fixed module_version; - FT_Fixed module_requires; - - const void* module_interface; - - FT_Module_Constructor module_init; - FT_Module_Destructor module_done; - FT_Module_Requester get_interface; - - } FT_Module_Class; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Add_Module */ - /* */ - /* <Description> */ - /* Add a new module to a given library instance. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* clazz :: A pointer to class descriptor for the module. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* An error will be returned if a module already exists by that name, */ - /* or if the module requires a version of FreeType that is too great. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Add_Module( FT_Library library, - const FT_Module_Class* clazz ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Module */ - /* */ - /* <Description> */ - /* Find a module by its name. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* module_name :: The module's name (as an ASCII string). */ - /* */ - /* <Return> */ - /* A module handle. 0~if none was found. */ - /* */ - /* <Note> */ - /* FreeType's internal modules aren't documented very well, and you */ - /* should look up the source code for details. */ - /* */ - FT_EXPORT( FT_Module ) - FT_Get_Module( FT_Library library, - const char* module_name ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Remove_Module */ - /* */ - /* <Description> */ - /* Remove a given module from a library instance. */ - /* */ - /* <InOut> */ - /* library :: A handle to a library object. */ - /* */ - /* <Input> */ - /* module :: A handle to a module object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The module object is destroyed by the function in case of success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Remove_Module( FT_Library library, - FT_Module module ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Library */ - /* */ - /* <Description> */ - /* This function is used to create a new FreeType library instance */ - /* from a given memory object. It is thus possible to use libraries */ - /* with distinct memory allocators within the same program. */ - /* */ - /* Normally, you would call this function (followed by a call to */ - /* @FT_Add_Default_Modules or a series of calls to @FT_Add_Module) */ - /* instead of @FT_Init_FreeType to initialize the FreeType library. */ - /* */ - /* <Input> */ - /* memory :: A handle to the original memory object. */ - /* */ - /* <Output> */ - /* alibrary :: A pointer to handle of a new library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Library( FT_Memory memory, - FT_Library *alibrary ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Library */ - /* */ - /* <Description> */ - /* Discard a given library object. This closes all drivers and */ - /* discards all resource objects. */ - /* */ - /* <Input> */ - /* library :: A handle to the target library. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Library( FT_Library library ); - -/* */ - - typedef void - (*FT_DebugHook_Func)( void* arg ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Debug_Hook */ - /* */ - /* <Description> */ - /* Set a debug hook function for debugging the interpreter of a font */ - /* format. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* hook_index :: The index of the debug hook. You should use the */ - /* values defined in `ftobjs.h', e.g., */ - /* `FT_DEBUG_HOOK_TRUETYPE'. */ - /* */ - /* debug_hook :: The function used to debug the interpreter. */ - /* */ - /* <Note> */ - /* Currently, four debug hook slots are available, but only two (for */ - /* the TrueType and the Type~1 interpreter) are defined. */ - /* */ - /* Since the internal headers of FreeType are no longer installed, */ - /* the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly. */ - /* This is a bug and will be fixed in a forthcoming release. */ - /* */ - FT_EXPORT( void ) - FT_Set_Debug_Hook( FT_Library library, - FT_UInt hook_index, - FT_DebugHook_Func debug_hook ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Add_Default_Modules */ - /* */ - /* <Description> */ - /* Add the set of default drivers to a given library object. */ - /* This is only useful when you create a library object with */ - /* @FT_New_Library (usually to plug a custom memory manager). */ - /* */ - /* <InOut> */ - /* library :: A handle to a new library object. */ - /* */ - FT_EXPORT( void ) - FT_Add_Default_Modules( FT_Library library ); - - - - /************************************************************************** - * - * @section: - * truetype_engine - * - * @title: - * The TrueType Engine - * - * @abstract: - * TrueType bytecode support. - * - * @description: - * This section contains a function used to query the level of TrueType - * bytecode support compiled in this version of the library. - * - */ - - - /************************************************************************** - * - * @enum: - * FT_TrueTypeEngineType - * - * @description: - * A list of values describing which kind of TrueType bytecode - * engine is implemented in a given FT_Library instance. It is used - * by the @FT_Get_TrueType_Engine_Type function. - * - * @values: - * FT_TRUETYPE_ENGINE_TYPE_NONE :: - * The library doesn't implement any kind of bytecode interpreter. - * - * FT_TRUETYPE_ENGINE_TYPE_UNPATENTED :: - * The library implements a bytecode interpreter that doesn't - * support the patented operations of the TrueType virtual machine. - * - * Its main use is to load certain Asian fonts which position and - * scale glyph components with bytecode instructions. It produces - * bad output for most other fonts. - * - * FT_TRUETYPE_ENGINE_TYPE_PATENTED :: - * The library implements a bytecode interpreter that covers - * the full instruction set of the TrueType virtual machine. - * See the file `docs/PATENTS' for legal aspects. - * - * @since: - * 2.2 - * - */ - typedef enum FT_TrueTypeEngineType_ - { - FT_TRUETYPE_ENGINE_TYPE_NONE = 0, - FT_TRUETYPE_ENGINE_TYPE_UNPATENTED, - FT_TRUETYPE_ENGINE_TYPE_PATENTED - - } FT_TrueTypeEngineType; - - - /************************************************************************** - * - * @func: - * FT_Get_TrueType_Engine_Type - * - * @description: - * Return an @FT_TrueTypeEngineType value to indicate which level of - * the TrueType virtual machine a given library instance supports. - * - * @input: - * library :: - * A library instance. - * - * @return: - * A value indicating which level is supported. - * - * @since: - * 2.2 - * - */ - FT_EXPORT( FT_TrueTypeEngineType ) - FT_Get_TrueType_Engine_Type( FT_Library library ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTMODAPI_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftmoderr.h b/GRRLIB/lib/freetype/include/freetype/ftmoderr.h deleted file mode 100644 index b0115dd..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftmoderr.h +++ /dev/null @@ -1,155 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmoderr.h */ -/* */ -/* FreeType module error offsets (specification). */ -/* */ -/* Copyright 2001, 2002, 2003, 2004, 2005 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the FreeType module error offsets. */ - /* */ - /* The lower byte gives the error code, the higher byte gives the */ - /* module. The base module has error offset 0. For example, the error */ - /* `FT_Err_Invalid_File_Format' has value 0x003, the error */ - /* `TT_Err_Invalid_File_Format' has value 0x1103, the error */ - /* `T1_Err_Invalid_File_Format' has value 0x1203, etc. */ - /* */ - /* Undefine the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in ftoption.h */ - /* to make the higher byte always zero (disabling the module error */ - /* mechanism). */ - /* */ - /* It can also be used to create a module error message table easily */ - /* with something like */ - /* */ - /* { */ - /* #undef __FTMODERR_H__ */ - /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ - /* #define FT_MODERR_START_LIST { */ - /* #define FT_MODERR_END_LIST { 0, 0 } }; */ - /* */ - /* const struct */ - /* { */ - /* int mod_err_offset; */ - /* const char* mod_err_msg */ - /* } ft_mod_errors[] = */ - /* */ - /* #include FT_MODULE_ERRORS_H */ - /* } */ - /* */ - /* To use such a table, all errors must be ANDed with 0xFF00 to remove */ - /* the error code. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTMODERR_H__ -#define __FTMODERR_H__ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SETUP MACROS *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#undef FT_NEED_EXTERN_C - -#ifndef FT_MODERRDEF - -#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS -#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, -#else -#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, -#endif - -#define FT_MODERR_START_LIST enum { -#define FT_MODERR_END_LIST FT_Mod_Err_Max }; - -#ifdef __cplusplus -#define FT_NEED_EXTERN_C - extern "C" { -#endif - -#endif /* !FT_MODERRDEF */ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST MODULE ERROR BASES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#ifdef FT_MODERR_START_LIST - FT_MODERR_START_LIST -#endif - - - FT_MODERRDEF( Base, 0x000, "base module" ) - FT_MODERRDEF( Autofit, 0x100, "autofitter module" ) - FT_MODERRDEF( BDF, 0x200, "BDF module" ) - FT_MODERRDEF( Cache, 0x300, "cache module" ) - FT_MODERRDEF( CFF, 0x400, "CFF module" ) - FT_MODERRDEF( CID, 0x500, "CID module" ) - FT_MODERRDEF( Gzip, 0x600, "Gzip module" ) - FT_MODERRDEF( LZW, 0x700, "LZW module" ) - FT_MODERRDEF( OTvalid, 0x800, "OpenType validation module" ) - FT_MODERRDEF( PCF, 0x900, "PCF module" ) - FT_MODERRDEF( PFR, 0xA00, "PFR module" ) - FT_MODERRDEF( PSaux, 0xB00, "PS auxiliary module" ) - FT_MODERRDEF( PShinter, 0xC00, "PS hinter module" ) - FT_MODERRDEF( PSnames, 0xD00, "PS names module" ) - FT_MODERRDEF( Raster, 0xE00, "raster module" ) - FT_MODERRDEF( SFNT, 0xF00, "SFNT module" ) - FT_MODERRDEF( Smooth, 0x1000, "smooth raster module" ) - FT_MODERRDEF( TrueType, 0x1100, "TrueType module" ) - FT_MODERRDEF( Type1, 0x1200, "Type 1 module" ) - FT_MODERRDEF( Type42, 0x1300, "Type 42 module" ) - FT_MODERRDEF( Winfonts, 0x1400, "Windows FON/FNT module" ) - - -#ifdef FT_MODERR_END_LIST - FT_MODERR_END_LIST -#endif - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** CLEANUP *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#ifdef FT_NEED_EXTERN_C - } -#endif - -#undef FT_MODERR_START_LIST -#undef FT_MODERR_END_LIST -#undef FT_MODERRDEF -#undef FT_NEED_EXTERN_C - - -#endif /* __FTMODERR_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftotval.h b/GRRLIB/lib/freetype/include/freetype/ftotval.h deleted file mode 100644 index 027f2e8..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftotval.h +++ /dev/null @@ -1,203 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftotval.h */ -/* */ -/* FreeType API for validating OpenType tables (specification). */ -/* */ -/* Copyright 2004, 2005, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* */ -/* Warning: This module might be moved to a different library in the */ -/* future to avoid a tight dependency between FreeType and the */ -/* OpenType specification. */ -/* */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOTVAL_H__ -#define __FTOTVAL_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* ot_validation */ - /* */ - /* <Title> */ - /* OpenType Validation */ - /* */ - /* <Abstract> */ - /* An API to validate OpenType tables. */ - /* */ - /* <Description> */ - /* This section contains the declaration of functions to validate */ - /* some OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @enum: - * FT_VALIDATE_OTXXX - * - * @description: - * A list of bit-field constants used with @FT_OpenType_Validate to - * indicate which OpenType tables should be validated. - * - * @values: - * FT_VALIDATE_BASE :: - * Validate BASE table. - * - * FT_VALIDATE_GDEF :: - * Validate GDEF table. - * - * FT_VALIDATE_GPOS :: - * Validate GPOS table. - * - * FT_VALIDATE_GSUB :: - * Validate GSUB table. - * - * FT_VALIDATE_JSTF :: - * Validate JSTF table. - * - * FT_VALIDATE_MATH :: - * Validate MATH table. - * - * FT_VALIDATE_OT :: - * Validate all OpenType tables (BASE, GDEF, GPOS, GSUB, JSTF, MATH). - * - */ -#define FT_VALIDATE_BASE 0x0100 -#define FT_VALIDATE_GDEF 0x0200 -#define FT_VALIDATE_GPOS 0x0400 -#define FT_VALIDATE_GSUB 0x0800 -#define FT_VALIDATE_JSTF 0x1000 -#define FT_VALIDATE_MATH 0x2000 - -#define FT_VALIDATE_OT FT_VALIDATE_BASE | \ - FT_VALIDATE_GDEF | \ - FT_VALIDATE_GPOS | \ - FT_VALIDATE_GSUB | \ - FT_VALIDATE_JSTF | \ - FT_VALIDATE_MATH - - /* */ - - /********************************************************************** - * - * @function: - * FT_OpenType_Validate - * - * @description: - * Validate various OpenType tables to assure that all offsets and - * indices are valid. The idea is that a higher-level library which - * actually does the text layout can access those tables without - * error checking (which can be quite time consuming). - * - * @input: - * face :: - * A handle to the input face. - * - * validation_flags :: - * A bit field which specifies the tables to be validated. See - * @FT_VALIDATE_OTXXX for possible values. - * - * @output: - * BASE_table :: - * A pointer to the BASE table. - * - * GDEF_table :: - * A pointer to the GDEF table. - * - * GPOS_table :: - * A pointer to the GPOS table. - * - * GSUB_table :: - * A pointer to the GSUB table. - * - * JSTF_table :: - * A pointer to the JSTF table. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with OpenType fonts, returning an error - * otherwise. - * - * After use, the application should deallocate the five tables with - * @FT_OpenType_Free. A NULL value indicates that the table either - * doesn't exist in the font, or the application hasn't asked for - * validation. - */ - FT_EXPORT( FT_Error ) - FT_OpenType_Validate( FT_Face face, - FT_UInt validation_flags, - FT_Bytes *BASE_table, - FT_Bytes *GDEF_table, - FT_Bytes *GPOS_table, - FT_Bytes *GSUB_table, - FT_Bytes *JSTF_table ); - - /* */ - - /********************************************************************** - * - * @function: - * FT_OpenType_Free - * - * @description: - * Free the buffer allocated by OpenType validator. - * - * @input: - * face :: - * A handle to the input face. - * - * table :: - * The pointer to the buffer that is allocated by - * @FT_OpenType_Validate. - * - * @note: - * This function must be used to free the buffer allocated by - * @FT_OpenType_Validate only. - */ - FT_EXPORT( void ) - FT_OpenType_Free( FT_Face face, - FT_Bytes table ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTOTVAL_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftoutln.h b/GRRLIB/lib/freetype/include/freetype/ftoutln.h deleted file mode 100644 index d7d01e8..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftoutln.h +++ /dev/null @@ -1,538 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoutln.h */ -/* */ -/* Support for the FT_Outline type used to store glyph shapes of */ -/* most scalable font formats (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2005, 2006, 2007, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOUTLN_H__ -#define __FTOUTLN_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /* <Title> */ - /* Outline Processing */ - /* */ - /* <Abstract> */ - /* Functions to create, transform, and render vectorial glyph images. */ - /* */ - /* <Description> */ - /* This section contains routines used to create and destroy scalable */ - /* glyph images known as `outlines'. These can also be measured, */ - /* transformed, and converted into bitmaps and pixmaps. */ - /* */ - /* <Order> */ - /* FT_Outline */ - /* FT_OUTLINE_FLAGS */ - /* FT_Outline_New */ - /* FT_Outline_Done */ - /* FT_Outline_Copy */ - /* FT_Outline_Translate */ - /* FT_Outline_Transform */ - /* FT_Outline_Embolden */ - /* FT_Outline_Reverse */ - /* FT_Outline_Check */ - /* */ - /* FT_Outline_Get_CBox */ - /* FT_Outline_Get_BBox */ - /* */ - /* FT_Outline_Get_Bitmap */ - /* FT_Outline_Render */ - /* */ - /* FT_Outline_Decompose */ - /* FT_Outline_Funcs */ - /* FT_Outline_MoveTo_Func */ - /* FT_Outline_LineTo_Func */ - /* FT_Outline_ConicTo_Func */ - /* FT_Outline_CubicTo_Func */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Decompose */ - /* */ - /* <Description> */ - /* Walk over an outline's structure to decompose it into individual */ - /* segments and Bézier arcs. This function is also able to emit */ - /* `move to' and `close to' operations to indicate the start and end */ - /* of new contours in the outline. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source target. */ - /* */ - /* func_interface :: A table of `emitters', i.e., function pointers */ - /* called during decomposition to indicate path */ - /* operations. */ - /* */ - /* <InOut> */ - /* user :: A typeless pointer which is passed to each */ - /* emitter during the decomposition. It can be */ - /* used to store the state during the */ - /* decomposition. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Decompose( FT_Outline* outline, - const FT_Outline_Funcs* func_interface, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_New */ - /* */ - /* <Description> */ - /* Create a new outline of a given size. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object from where the */ - /* outline is allocated. Note however that the new */ - /* outline will *not* necessarily be *freed*, when */ - /* destroying the library, by @FT_Done_FreeType. */ - /* */ - /* numPoints :: The maximal number of points within the outline. */ - /* */ - /* numContours :: The maximal number of contours within the outline. */ - /* */ - /* <Output> */ - /* anoutline :: A handle to the new outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The reason why this function takes a `library' parameter is simply */ - /* to use the library's memory allocator. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_New( FT_Library library, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); - - - FT_EXPORT( FT_Error ) - FT_Outline_New_Internal( FT_Memory memory, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Done */ - /* */ - /* <Description> */ - /* Destroy an outline created with @FT_Outline_New. */ - /* */ - /* <Input> */ - /* library :: A handle of the library object used to allocate the */ - /* outline. */ - /* */ - /* outline :: A pointer to the outline object to be discarded. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* If the outline's `owner' field is not set, only the outline */ - /* descriptor will be released. */ - /* */ - /* The reason why this function takes an `library' parameter is */ - /* simply to use ft_mem_free(). */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Done( FT_Library library, - FT_Outline* outline ); - - - FT_EXPORT( FT_Error ) - FT_Outline_Done_Internal( FT_Memory memory, - FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Check */ - /* */ - /* <Description> */ - /* Check the contents of an outline descriptor. */ - /* */ - /* <Input> */ - /* outline :: A handle to a source outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Check( FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_CBox */ - /* */ - /* <Description> */ - /* Return an outline's `control box'. The control box encloses all */ - /* the outline's points, including Bézier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bézier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ - /* and arcs in the outline. To get the latter, you can use the */ - /* `ftbbox' component which is dedicated to this single task. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <Output> */ - /* acbox :: The outline's control box. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Get_CBox( const FT_Outline* outline, - FT_BBox *acbox ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Translate */ - /* */ - /* <Description> */ - /* Apply a simple translation to the points of an outline. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Input> */ - /* xOffset :: The horizontal offset. */ - /* */ - /* yOffset :: The vertical offset. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Translate( const FT_Outline* outline, - FT_Pos xOffset, - FT_Pos yOffset ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Copy */ - /* */ - /* <Description> */ - /* Copy an outline into another one. Both objects must have the */ - /* same sizes (number of points & number of contours) when this */ - /* function is called. */ - /* */ - /* <Input> */ - /* source :: A handle to the source outline. */ - /* */ - /* <Output> */ - /* target :: A handle to the target outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Copy( const FT_Outline* source, - FT_Outline *target ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Transform */ - /* */ - /* <Description> */ - /* Apply a simple 2x2 matrix to all of an outline's points. Useful */ - /* for applying rotations, slanting, flipping, etc. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the transformation matrix. */ - /* */ - /* <Note> */ - /* You can use @FT_Outline_Translate if you need to translate the */ - /* outline's points. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Transform( const FT_Outline* outline, - const FT_Matrix* matrix ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Embolden */ - /* */ - /* <Description> */ - /* Embolden an outline. The new outline will be at most 4~times */ - /* `strength' pixels wider and higher. You may think of the left and */ - /* bottom borders as unchanged. */ - /* */ - /* Negative `strength' values to reduce the outline thickness are */ - /* possible also. */ - /* */ - /* <InOut> */ - /* outline :: A handle to the target outline. */ - /* */ - /* <Input> */ - /* strength :: How strong the glyph is emboldened. Expressed in */ - /* 26.6 pixel format. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The used algorithm to increase or decrease the thickness of the */ - /* glyph doesn't change the number of points; this means that certain */ - /* situations like acute angles or intersections are sometimes */ - /* handled incorrectly. */ - /* */ - /* If you need `better' metrics values you should call */ - /* @FT_Outline_Get_CBox ot @FT_Outline_Get_BBox. */ - /* */ - /* Example call: */ - /* */ - /* { */ - /* FT_Load_Glyph( face, index, FT_LOAD_DEFAULT ); */ - /* if ( face->slot->format == FT_GLYPH_FORMAT_OUTLINE ) */ - /* FT_Outline_Embolden( &face->slot->outline, strength ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Embolden( FT_Outline* outline, - FT_Pos strength ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Reverse */ - /* */ - /* <Description> */ - /* Reverse the drawing direction of an outline. This is used to */ - /* ensure consistent fill conventions for mirrored glyphs. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Note> */ - /* This function toggles the bit flag @FT_OUTLINE_REVERSE_FILL in */ - /* the outline's `flags' field. */ - /* */ - /* It shouldn't be used by a normal client application, unless it */ - /* knows what it is doing. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Reverse( FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_Bitmap */ - /* */ - /* <Description> */ - /* Render an outline within a bitmap. The outline's image is simply */ - /* OR-ed to the target bitmap. */ - /* */ - /* <Input> */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <InOut> */ - /* abitmap :: A pointer to the target bitmap descriptor. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* This function does NOT CREATE the bitmap, it only renders an */ - /* outline image within the one you pass to it! Consequently, the */ - /* various fields in `abitmap' should be set accordingly. */ - /* */ - /* It will use the raster corresponding to the default glyph format. */ - /* */ - /* The value of the `num_grays' field in `abitmap' is ignored. If */ - /* you select the gray-level rasterizer, and you want less than 256 */ - /* gray levels, you have to use @FT_Outline_Render directly. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Get_Bitmap( FT_Library library, - FT_Outline* outline, - const FT_Bitmap *abitmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Render */ - /* */ - /* <Description> */ - /* Render an outline within a bitmap using the current scan-convert. */ - /* This function uses an @FT_Raster_Params structure as an argument, */ - /* allowing advanced features like direct composition, translucency, */ - /* etc. */ - /* */ - /* <Input> */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <InOut> */ - /* params :: A pointer to an @FT_Raster_Params structure used to */ - /* describe the rendering operation. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* You should know what you are doing and how @FT_Raster_Params works */ - /* to use this function. */ - /* */ - /* The field `params.source' will be set to `outline' before the scan */ - /* converter is called, which means that the value you give to it is */ - /* actually ignored. */ - /* */ - /* The gray-level rasterizer always uses 256 gray levels. If you */ - /* want less gray levels, you have to provide your own span callback. */ - /* See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the */ - /* @FT_Raster_Params structure for more details. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Render( FT_Library library, - FT_Outline* outline, - FT_Raster_Params* params ); - - - /************************************************************************** - * - * @enum: - * FT_Orientation - * - * @description: - * A list of values used to describe an outline's contour orientation. - * - * The TrueType and PostScript specifications use different conventions - * to determine whether outline contours should be filled or unfilled. - * - * @values: - * FT_ORIENTATION_TRUETYPE :: - * According to the TrueType specification, clockwise contours must - * be filled, and counter-clockwise ones must be unfilled. - * - * FT_ORIENTATION_POSTSCRIPT :: - * According to the PostScript specification, counter-clockwise contours - * must be filled, and clockwise ones must be unfilled. - * - * FT_ORIENTATION_FILL_RIGHT :: - * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to - * remember that in TrueType, everything that is to the right of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_FILL_LEFT :: - * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to - * remember that in PostScript, everything that is to the left of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_NONE :: - * The orientation cannot be determined. That is, different parts of - * the glyph have different orientation. - * - */ - typedef enum FT_Orientation_ - { - FT_ORIENTATION_TRUETYPE = 0, - FT_ORIENTATION_POSTSCRIPT = 1, - FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, - FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT, - FT_ORIENTATION_NONE - - } FT_Orientation; - - - /************************************************************************** - * - * @function: - * FT_Outline_Get_Orientation - * - * @description: - * This function analyzes a glyph outline and tries to compute its - * fill orientation (see @FT_Orientation). This is done by computing - * the direction of each global horizontal and/or vertical extrema - * within the outline. - * - * Note that this will return @FT_ORIENTATION_TRUETYPE for empty - * outlines. - * - * @input: - * outline :: - * A handle to the source outline. - * - * @return: - * The orientation. - * - */ - FT_EXPORT( FT_Orientation ) - FT_Outline_Get_Orientation( FT_Outline* outline ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTOUTLN_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftpfr.h b/GRRLIB/lib/freetype/include/freetype/ftpfr.h deleted file mode 100644 index 0b7b7d4..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftpfr.h +++ /dev/null @@ -1,172 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftpfr.h */ -/* */ -/* FreeType API for accessing PFR-specific data (specification only). */ -/* */ -/* Copyright 2002, 2003, 2004, 2006, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTPFR_H__ -#define __FTPFR_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* pfr_fonts */ - /* */ - /* <Title> */ - /* PFR Fonts */ - /* */ - /* <Abstract> */ - /* PFR/TrueDoc specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of PFR-specific functions. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Metrics - * - * @description: - * Return the outline and metrics resolutions of a given PFR face. - * - * @input: - * face :: Handle to the input face. It can be a non-PFR face. - * - * @output: - * aoutline_resolution :: - * Outline resolution. This is equivalent to `face->units_per_EM' - * for non-PFR fonts. Optional (parameter can be NULL). - * - * ametrics_resolution :: - * Metrics resolution. This is equivalent to `outline_resolution' - * for non-PFR fonts. Optional (parameter can be NULL). - * - * ametrics_x_scale :: - * A 16.16 fixed-point number used to scale distance expressed - * in metrics units to device sub-pixels. This is equivalent to - * `face->size->x_scale', but for metrics only. Optional (parameter - * can be NULL). - * - * ametrics_y_scale :: - * Same as `ametrics_x_scale' but for the vertical direction. - * optional (parameter can be NULL). - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If the input face is not a PFR, this function will return an error. - * However, in all cases, it will return valid values. - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Metrics( FT_Face face, - FT_UInt *aoutline_resolution, - FT_UInt *ametrics_resolution, - FT_Fixed *ametrics_x_scale, - FT_Fixed *ametrics_y_scale ); - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Kerning - * - * @description: - * Return the kerning pair corresponding to two glyphs in a PFR face. - * The distance is expressed in metrics units, unlike the result of - * @FT_Get_Kerning. - * - * @input: - * face :: A handle to the input face. - * - * left :: Index of the left glyph. - * - * right :: Index of the right glyph. - * - * @output: - * avector :: A kerning vector. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function always return distances in original PFR metrics - * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED - * mode, which always returns distances converted to outline units. - * - * You can use the value of the `x_scale' and `y_scale' parameters - * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Kerning( FT_Face face, - FT_UInt left, - FT_UInt right, - FT_Vector *avector ); - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Advance - * - * @description: - * Return a given glyph advance, expressed in original metrics units, - * from a PFR font. - * - * @input: - * face :: A handle to the input face. - * - * gindex :: The glyph index. - * - * @output: - * aadvance :: The glyph advance in metrics units. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics - * to convert the advance to device sub-pixels (i.e., 1/64th of pixels). - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Advance( FT_Face face, - FT_UInt gindex, - FT_Pos *aadvance ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTPFR_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftrender.h b/GRRLIB/lib/freetype/include/freetype/ftrender.h deleted file mode 100644 index 41c31ea..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftrender.h +++ /dev/null @@ -1,234 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftrender.h */ -/* */ -/* FreeType renderer modules public interface (specification). */ -/* */ -/* Copyright 1996-2001, 2005, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTRENDER_H__ -#define __FTRENDER_H__ - - -#include <ft2build.h> -#include FT_MODULE_H -#include FT_GLYPH_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* module_management */ - /* */ - /*************************************************************************/ - - - /* create a new glyph object */ - typedef FT_Error - (*FT_Glyph_InitFunc)( FT_Glyph glyph, - FT_GlyphSlot slot ); - - /* destroys a given glyph object */ - typedef void - (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); - - typedef void - (*FT_Glyph_TransformFunc)( FT_Glyph glyph, - const FT_Matrix* matrix, - const FT_Vector* delta ); - - typedef void - (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, - FT_BBox* abbox ); - - typedef FT_Error - (*FT_Glyph_CopyFunc)( FT_Glyph source, - FT_Glyph target ); - - typedef FT_Error - (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, - FT_GlyphSlot slot ); - -/* deprecated */ -#define FT_Glyph_Init_Func FT_Glyph_InitFunc -#define FT_Glyph_Done_Func FT_Glyph_DoneFunc -#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc -#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc -#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc -#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc - - - struct FT_Glyph_Class_ - { - FT_Long glyph_size; - FT_Glyph_Format glyph_format; - FT_Glyph_InitFunc glyph_init; - FT_Glyph_DoneFunc glyph_done; - FT_Glyph_CopyFunc glyph_copy; - FT_Glyph_TransformFunc glyph_transform; - FT_Glyph_GetBBoxFunc glyph_bbox; - FT_Glyph_PrepareFunc glyph_prepare; - }; - - - typedef FT_Error - (*FT_Renderer_RenderFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_UInt mode, - const FT_Vector* origin ); - - typedef FT_Error - (*FT_Renderer_TransformFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - const FT_Matrix* matrix, - const FT_Vector* delta ); - - - typedef void - (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_BBox* cbox ); - - - typedef FT_Error - (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, - FT_ULong mode_tag, - FT_Pointer mode_ptr ); - -/* deprecated identifiers */ -#define FTRenderer_render FT_Renderer_RenderFunc -#define FTRenderer_transform FT_Renderer_TransformFunc -#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc -#define FTRenderer_setMode FT_Renderer_SetModeFunc - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Renderer_Class */ - /* */ - /* <Description> */ - /* The renderer module class descriptor. */ - /* */ - /* <Fields> */ - /* root :: The root @FT_Module_Class fields. */ - /* */ - /* glyph_format :: The glyph image format this renderer handles. */ - /* */ - /* render_glyph :: A method used to render the image that is in a */ - /* given glyph slot into a bitmap. */ - /* */ - /* transform_glyph :: A method used to transform the image that is in */ - /* a given glyph slot. */ - /* */ - /* get_glyph_cbox :: A method used to access the glyph's cbox. */ - /* */ - /* set_mode :: A method used to pass additional parameters. */ - /* */ - /* raster_class :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ - /* This is a pointer to its raster's class. */ - /* */ - /* raster :: For @FT_GLYPH_FORMAT_OUTLINE renderers only. */ - /* This is a pointer to the corresponding raster */ - /* object, if any. */ - /* */ - typedef struct FT_Renderer_Class_ - { - FT_Module_Class root; - - FT_Glyph_Format glyph_format; - - FT_Renderer_RenderFunc render_glyph; - FT_Renderer_TransformFunc transform_glyph; - FT_Renderer_GetCBoxFunc get_glyph_cbox; - FT_Renderer_SetModeFunc set_mode; - - FT_Raster_Funcs* raster_class; - - } FT_Renderer_Class; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Renderer */ - /* */ - /* <Description> */ - /* Retrieve the current renderer for a given glyph format. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* format :: The glyph format. */ - /* */ - /* <Return> */ - /* A renderer handle. 0~if none found. */ - /* */ - /* <Note> */ - /* An error will be returned if a module already exists by that name, */ - /* or if the module requires a version of FreeType that is too great. */ - /* */ - /* To add a new renderer, simply use @FT_Add_Module. To retrieve a */ - /* renderer by its name, use @FT_Get_Module. */ - /* */ - FT_EXPORT( FT_Renderer ) - FT_Get_Renderer( FT_Library library, - FT_Glyph_Format format ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Renderer */ - /* */ - /* <Description> */ - /* Set the current renderer to use, and set additional mode. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* renderer :: A handle to the renderer object. */ - /* */ - /* num_params :: The number of additional parameters. */ - /* */ - /* parameters :: Additional parameters. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* In case of success, the renderer will be used to convert glyph */ - /* images in the renderer's known format into bitmaps. */ - /* */ - /* This doesn't change the current renderer for other formats. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Renderer( FT_Library library, - FT_Renderer renderer, - FT_UInt num_params, - FT_Parameter* parameters ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTRENDER_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftsizes.h b/GRRLIB/lib/freetype/include/freetype/ftsizes.h deleted file mode 100644 index 3e548cc..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftsizes.h +++ /dev/null @@ -1,159 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsizes.h */ -/* */ -/* FreeType size objects management (specification). */ -/* */ -/* Copyright 1996-2001, 2003, 2004, 2006, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Typical application would normally not need to use these functions. */ - /* However, they have been placed in a public API for the rare cases */ - /* where they are needed. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTSIZES_H__ -#define __FTSIZES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* sizes_management */ - /* */ - /* <Title> */ - /* Size Management */ - /* */ - /* <Abstract> */ - /* Managing multiple sizes per face. */ - /* */ - /* <Description> */ - /* When creating a new face object (e.g., with @FT_New_Face), an */ - /* @FT_Size object is automatically created and used to store all */ - /* pixel-size dependent information, available in the `face->size' */ - /* field. */ - /* */ - /* It is however possible to create more sizes for a given face, */ - /* mostly in order to manage several character pixel sizes of the */ - /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ - /* */ - /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ - /* modify the contents of the current `active' size; you thus need */ - /* to use @FT_Activate_Size to change it. */ - /* */ - /* 99% of applications won't need the functions provided here, */ - /* especially if they use the caching sub-system, so be cautious */ - /* when using these. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Size */ - /* */ - /* <Description> */ - /* Create a new size object from a given face object. */ - /* */ - /* <Input> */ - /* face :: A handle to a parent face object. */ - /* */ - /* <Output> */ - /* asize :: A handle to a new size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* You need to call @FT_Activate_Size in order to select the new size */ - /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ - /* @FT_Load_Glyph, @FT_Load_Char, etc. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Size( FT_Face face, - FT_Size* size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Size */ - /* */ - /* <Description> */ - /* Discard a given size object. Note that @FT_Done_Face */ - /* automatically discards all size objects allocated with */ - /* @FT_New_Size. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Size( FT_Size size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Activate_Size */ - /* */ - /* <Description> */ - /* Even though it is possible to create several size objects for a */ - /* given face (see @FT_New_Size for details), functions like */ - /* @FT_Load_Glyph or @FT_Load_Char only use the one which has been */ - /* activated last to determine the `current character pixel size'. */ - /* */ - /* This function can be used to `activate' a previously created size */ - /* object. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* If `face' is the size's parent face object, this function changes */ - /* the value of `face->size' to the input size handle. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Activate_Size( FT_Size size ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTSIZES_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftsnames.h b/GRRLIB/lib/freetype/include/freetype/ftsnames.h deleted file mode 100644 index f20b409..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftsnames.h +++ /dev/null @@ -1,171 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsnames.h */ -/* */ -/* Simple interface to access SFNT name tables (which are used */ -/* to hold font names, copyright info, notices, etc.) (specification). */ -/* */ -/* This is _not_ used to retrieve glyph names! */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2006, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FT_SFNT_NAMES_H__ -#define __FT_SFNT_NAMES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* sfnt_names */ - /* */ - /* <Title> */ - /* SFNT Names */ - /* */ - /* <Abstract> */ - /* Access the names embedded in TrueType and OpenType files. */ - /* */ - /* <Description> */ - /* The TrueType and OpenType specifications allow the inclusion of */ - /* a special `names table' in font files. This table contains */ - /* textual (and internationalized) information regarding the font, */ - /* like family name, copyright, version, etc. */ - /* */ - /* The definitions below are used to access them if available. */ - /* */ - /* Note that this has nothing to do with glyph names! */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SfntName */ - /* */ - /* <Description> */ - /* A structure used to model an SFNT `name' table entry. */ - /* */ - /* <Fields> */ - /* platform_id :: The platform ID for `string'. */ - /* */ - /* encoding_id :: The encoding ID for `string'. */ - /* */ - /* language_id :: The language ID for `string'. */ - /* */ - /* name_id :: An identifier for `string'. */ - /* */ - /* string :: The `name' string. Note that its format differs */ - /* depending on the (platform,encoding) pair. It can */ - /* be a Pascal String, a UTF-16 one, etc. */ - /* */ - /* Generally speaking, the string is not */ - /* zero-terminated. Please refer to the TrueType */ - /* specification for details. */ - /* */ - /* string_len :: The length of `string' in bytes. */ - /* */ - /* <Note> */ - /* Possible values for `platform_id', `encoding_id', `language_id', */ - /* and `name_id' are given in the file `ttnameid.h'. For details */ - /* please refer to the TrueType or OpenType specification. */ - /* */ - /* See also @TT_PLATFORM_XXX, @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX, */ - /* @TT_ISO_ID_XXX, and @TT_MS_ID_XXX. */ - /* */ - typedef struct FT_SfntName_ - { - FT_UShort platform_id; - FT_UShort encoding_id; - FT_UShort language_id; - FT_UShort name_id; - - FT_Byte* string; /* this string is *not* null-terminated! */ - FT_UInt string_len; /* in bytes */ - - } FT_SfntName; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Name_Count */ - /* */ - /* <Description> */ - /* Retrieve the number of name strings in the SFNT `name' table. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Return> */ - /* The number of strings in the `name' table. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Sfnt_Name_Count( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Name */ - /* */ - /* <Description> */ - /* Retrieve a string of the SFNT `name' table for a given index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* idx :: The index of the `name' string. */ - /* */ - /* <Output> */ - /* aname :: The indexed @FT_SfntName structure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0~means success. */ - /* */ - /* <Note> */ - /* The `string' array returned in the `aname' structure is not */ - /* null-terminated. The application should deallocate it if it is no */ - /* longer in use. */ - /* */ - /* Use @FT_Get_Sfnt_Name_Count to get the total number of available */ - /* `name' table entries, then do a loop until you get the right */ - /* platform, encoding, and name ID. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Sfnt_Name( FT_Face face, - FT_UInt idx, - FT_SfntName *aname ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FT_SFNT_NAMES_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftstroke.h b/GRRLIB/lib/freetype/include/freetype/ftstroke.h deleted file mode 100644 index 3afb87d..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftstroke.h +++ /dev/null @@ -1,716 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftstroke.h */ -/* */ -/* FreeType path stroker (specification). */ -/* */ -/* Copyright 2002, 2003, 2004, 2005, 2006, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FT_STROKE_H__ -#define __FT_STROKE_H__ - -#include <ft2build.h> -#include FT_OUTLINE_H -#include FT_GLYPH_H - - -FT_BEGIN_HEADER - - - /************************************************************************ - * - * @section: - * glyph_stroker - * - * @title: - * Glyph Stroker - * - * @abstract: - * Generating bordered and stroked glyphs. - * - * @description: - * This component generates stroked outlines of a given vectorial - * glyph. It also allows you to retrieve the `outside' and/or the - * `inside' borders of the stroke. - * - * This can be useful to generate `bordered' glyph, i.e., glyphs - * displayed with a coloured (and anti-aliased) border around their - * shape. - */ - - - /************************************************************** - * - * @type: - * FT_Stroker - * - * @description: - * Opaque handler to a path stroker object. - */ - typedef struct FT_StrokerRec_* FT_Stroker; - - - /************************************************************** - * - * @enum: - * FT_Stroker_LineJoin - * - * @description: - * These values determine how two joining lines are rendered - * in a stroker. - * - * @values: - * FT_STROKER_LINEJOIN_ROUND :: - * Used to render rounded line joins. Circular arcs are used - * to join two lines smoothly. - * - * FT_STROKER_LINEJOIN_BEVEL :: - * Used to render beveled line joins; i.e., the two joining lines - * are extended until they intersect. - * - * FT_STROKER_LINEJOIN_MITER :: - * Same as beveled rendering, except that an additional line - * break is added if the angle between the two joining lines - * is too closed (this is useful to avoid unpleasant spikes - * in beveled rendering). - */ - typedef enum FT_Stroker_LineJoin_ - { - FT_STROKER_LINEJOIN_ROUND = 0, - FT_STROKER_LINEJOIN_BEVEL, - FT_STROKER_LINEJOIN_MITER - - } FT_Stroker_LineJoin; - - - /************************************************************** - * - * @enum: - * FT_Stroker_LineCap - * - * @description: - * These values determine how the end of opened sub-paths are - * rendered in a stroke. - * - * @values: - * FT_STROKER_LINECAP_BUTT :: - * The end of lines is rendered as a full stop on the last - * point itself. - * - * FT_STROKER_LINECAP_ROUND :: - * The end of lines is rendered as a half-circle around the - * last point. - * - * FT_STROKER_LINECAP_SQUARE :: - * The end of lines is rendered as a square around the - * last point. - */ - typedef enum FT_Stroker_LineCap_ - { - FT_STROKER_LINECAP_BUTT = 0, - FT_STROKER_LINECAP_ROUND, - FT_STROKER_LINECAP_SQUARE - - } FT_Stroker_LineCap; - - - /************************************************************** - * - * @enum: - * FT_StrokerBorder - * - * @description: - * These values are used to select a given stroke border - * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. - * - * @values: - * FT_STROKER_BORDER_LEFT :: - * Select the left border, relative to the drawing direction. - * - * FT_STROKER_BORDER_RIGHT :: - * Select the right border, relative to the drawing direction. - * - * @note: - * Applications are generally interested in the `inside' and `outside' - * borders. However, there is no direct mapping between these and the - * `left' and `right' ones, since this really depends on the glyph's - * drawing orientation, which varies between font formats. - * - * You can however use @FT_Outline_GetInsideBorder and - * @FT_Outline_GetOutsideBorder to get these. - */ - typedef enum FT_StrokerBorder_ - { - FT_STROKER_BORDER_LEFT = 0, - FT_STROKER_BORDER_RIGHT - - } FT_StrokerBorder; - - - /************************************************************** - * - * @function: - * FT_Outline_GetInsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `inside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_RIGHT for empty or invalid - * outlines. - */ - FT_EXPORT( FT_StrokerBorder ) - FT_Outline_GetInsideBorder( FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Outline_GetOutsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `outside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid - * outlines. - */ - FT_EXPORT( FT_StrokerBorder ) - FT_Outline_GetOutsideBorder( FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_New - * - * @description: - * Create a new stroker object. - * - * @input: - * library :: - * FreeType library handle. - * - * @output: - * astroker :: - * A new stroker object handle. NULL in case of error. - * - * @return: - * FreeType error code. 0~means success. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_New( FT_Library library, - FT_Stroker *astroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Set - * - * @description: - * Reset a stroker object's attributes. - * - * @input: - * stroker :: - * The target stroker handle. - * - * radius :: - * The border radius. - * - * line_cap :: - * The line cap style. - * - * line_join :: - * The line join style. - * - * miter_limit :: - * The miter limit for the FT_STROKER_LINEJOIN_MITER style, - * expressed as 16.16 fixed point value. - * - * @note: - * The radius is expressed in the same units as the outline - * coordinates. - */ - FT_EXPORT( void ) - FT_Stroker_Set( FT_Stroker stroker, - FT_Fixed radius, - FT_Stroker_LineCap line_cap, - FT_Stroker_LineJoin line_join, - FT_Fixed miter_limit ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Rewind - * - * @description: - * Reset a stroker object without changing its attributes. - * You should call this function before beginning a new - * series of calls to @FT_Stroker_BeginSubPath or - * @FT_Stroker_EndSubPath. - * - * @input: - * stroker :: - * The target stroker handle. - */ - FT_EXPORT( void ) - FT_Stroker_Rewind( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ParseOutline - * - * @description: - * A convenience function used to parse a whole outline with - * the stroker. The resulting outline(s) can be retrieved - * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The source outline. - * - * opened :: - * A boolean. If~1, the outline is treated as an open path instead - * of a closed one. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If `opened' is~0 (the default), the outline is treated as a closed - * path, and the stroker generates two distinct `border' outlines. - * - * If `opened' is~1, the outline is processed as an open path, and the - * stroker generates a single `stroke' outline. - * - * This function calls @FT_Stroker_Rewind automatically. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_ParseOutline( FT_Stroker stroker, - FT_Outline* outline, - FT_Bool opened ); - - - /************************************************************** - * - * @function: - * FT_Stroker_BeginSubPath - * - * @description: - * Start a new sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the start vector. - * - * open :: - * A boolean. If~1, the sub-path is treated as an open one. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function is useful when you need to stroke a path that is - * not stored as an @FT_Outline object. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_BeginSubPath( FT_Stroker stroker, - FT_Vector* to, - FT_Bool open ); - - - /************************************************************** - * - * @function: - * FT_Stroker_EndSubPath - * - * @description: - * Close the current sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You should call this function after @FT_Stroker_BeginSubPath. - * If the subpath was not `opened', this function `draws' a - * single line segment to the start position when needed. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_EndSubPath( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_LineTo - * - * @description: - * `Draw' a single line segment in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_LineTo( FT_Stroker stroker, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ConicTo - * - * @description: - * `Draw' a single quadratic Bézier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control :: - * A pointer to a Bézier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_ConicTo( FT_Stroker stroker, - FT_Vector* control, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_CubicTo - * - * @description: - * `Draw' a single cubic Bézier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control1 :: - * A pointer to the first Bézier control point. - * - * control2 :: - * A pointer to second Bézier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_CubicTo( FT_Stroker stroker, - FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_GetBorderCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It returns the number of points and - * contours necessary to export one of the `border' or `stroke' - * outlines generated by the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right'. - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_GetCounts instead if you want to - * retrieve the counts associated to both borders. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_GetBorderCounts( FT_Stroker stroker, - FT_StrokerBorder border, - FT_UInt *anum_points, - FT_UInt *anum_contours ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ExportBorder - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the corresponding border to your own @FT_Outline - * structure. - * - * Note that this function appends the border points and - * contours to your outline, but does not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * outline :: - * The target outline handle. - * - * @note: - * Always call this function after @FT_Stroker_GetBorderCounts to - * get sure that there is enough room in your @FT_Outline object to - * receive all new data. - * - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right' - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_Export instead if you want to - * retrieve all borders at once. - */ - FT_EXPORT( void ) - FT_Stroker_ExportBorder( FT_Stroker stroker, - FT_StrokerBorder border, - FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_GetCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It returns the number of points and - * contours necessary to export all points/borders from the stroked - * outline/path. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0~means success. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_GetCounts( FT_Stroker stroker, - FT_UInt *anum_points, - FT_UInt *anum_contours ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Export - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export all borders to your own @FT_Outline structure. - * - * Note that this function appends the border points and - * contours to your outline, but does not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The target outline handle. - */ - FT_EXPORT( void ) - FT_Stroker_Export( FT_Stroker stroker, - FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Done - * - * @description: - * Destroy a stroker object. - * - * @input: - * stroker :: - * A stroker handle. Can be NULL. - */ - FT_EXPORT( void ) - FT_Stroker_Done( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Glyph_Stroke - * - * @description: - * Stroke a given outline glyph object with a given stroker. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * destroy :: - * A Boolean. If~1, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source glyph is untouched in case of error. - */ - FT_EXPORT( FT_Error ) - FT_Glyph_Stroke( FT_Glyph *pglyph, - FT_Stroker stroker, - FT_Bool destroy ); - - - /************************************************************** - * - * @function: - * FT_Glyph_StrokeBorder - * - * @description: - * Stroke a given outline glyph object with a given stroker, but - * only return either its inside or outside border. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * inside :: - * A Boolean. If~1, return the inside border, otherwise - * the outside border. - * - * destroy :: - * A Boolean. If~1, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The source glyph is untouched in case of error. - */ - FT_EXPORT( FT_Error ) - FT_Glyph_StrokeBorder( FT_Glyph *pglyph, - FT_Stroker stroker, - FT_Bool inside, - FT_Bool destroy ); - - /* */ - -FT_END_HEADER - -#endif /* __FT_STROKE_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftsynth.h b/GRRLIB/lib/freetype/include/freetype/ftsynth.h deleted file mode 100644 index a068b79..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftsynth.h +++ /dev/null @@ -1,80 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsynth.h */ -/* */ -/* FreeType synthesizing code for emboldening and slanting */ -/* (specification). */ -/* */ -/* Copyright 2000-2001, 2003, 2006, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********* *********/ - /********* WARNING, THIS IS ALPHA CODE! THIS API *********/ - /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ - /********* FREETYPE DEVELOPMENT TEAM *********/ - /********* *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /* Main reason for not lifting the functions in this module to a */ - /* `standard' API is that the used parameters for emboldening and */ - /* slanting are not configurable. Consider the functions as a */ - /* code resource which should be copied into the application and */ - /* adapted to the particular needs. */ - - -#ifndef __FTSYNTH_H__ -#define __FTSYNTH_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /* Embolden a glyph by a `reasonable' value (which is highly a matter of */ - /* taste). This function is actually a convenience function, providing */ - /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden. */ - /* */ - /* For emboldened outlines the metrics are estimates only; if you need */ - /* precise values you should call @FT_Outline_Get_CBox. */ - FT_EXPORT( void ) - FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); - - /* Slant an outline glyph to the right by about 12 degrees. */ - FT_EXPORT( void ) - FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); - - /* */ - -FT_END_HEADER - -#endif /* __FTSYNTH_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftsystem.h b/GRRLIB/lib/freetype/include/freetype/ftsystem.h deleted file mode 100644 index a95b2c7..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftsystem.h +++ /dev/null @@ -1,346 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.h */ -/* */ -/* FreeType low-level system interface definition (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2005 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTSYSTEM_H__ -#define __FTSYSTEM_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* system_interface */ - /* */ - /* <Title> */ - /* System Interface */ - /* */ - /* <Abstract> */ - /* How FreeType manages memory and i/o. */ - /* */ - /* <Description> */ - /* This section contains various definitions related to memory */ - /* management and i/o access. You need to understand this */ - /* information if you want to use a custom memory manager or you own */ - /* i/o streams. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* M E M O R Y M A N A G E M E N T */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: - * FT_Memory - * - * @description: - * A handle to a given memory manager object, defined with an - * @FT_MemoryRec structure. - * - */ - typedef struct FT_MemoryRec_* FT_Memory; - - - /************************************************************************* - * - * @functype: - * FT_Alloc_Func - * - * @description: - * A function used to allocate `size' bytes from `memory'. - * - * @input: - * memory :: - * A handle to the source memory manager. - * - * size :: - * The size in bytes to allocate. - * - * @return: - * Address of new memory block. 0~in case of failure. - * - */ - typedef void* - (*FT_Alloc_Func)( FT_Memory memory, - long size ); - - - /************************************************************************* - * - * @functype: - * FT_Free_Func - * - * @description: - * A function used to release a given block of memory. - * - * @input: - * memory :: - * A handle to the source memory manager. - * - * block :: - * The address of the target memory block. - * - */ - typedef void - (*FT_Free_Func)( FT_Memory memory, - void* block ); - - - /************************************************************************* - * - * @functype: - * FT_Realloc_Func - * - * @description: - * A function used to re-allocate a given block of memory. - * - * @input: - * memory :: - * A handle to the source memory manager. - * - * cur_size :: - * The block's current size in bytes. - * - * new_size :: - * The block's requested new size. - * - * block :: - * The block's current address. - * - * @return: - * New block address. 0~in case of memory shortage. - * - * @note: - * In case of error, the old block must still be available. - * - */ - typedef void* - (*FT_Realloc_Func)( FT_Memory memory, - long cur_size, - long new_size, - void* block ); - - - /************************************************************************* - * - * @struct: - * FT_MemoryRec - * - * @description: - * A structure used to describe a given memory manager to FreeType~2. - * - * @fields: - * user :: - * A generic typeless pointer for user data. - * - * alloc :: - * A pointer type to an allocation function. - * - * free :: - * A pointer type to an memory freeing function. - * - * realloc :: - * A pointer type to a reallocation function. - * - */ - struct FT_MemoryRec_ - { - void* user; - FT_Alloc_Func alloc; - FT_Free_Func free; - FT_Realloc_Func realloc; - }; - - - /*************************************************************************/ - /* */ - /* I / O M A N A G E M E N T */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: - * FT_Stream - * - * @description: - * A handle to an input stream. - * - */ - typedef struct FT_StreamRec_* FT_Stream; - - - /************************************************************************* - * - * @struct: - * FT_StreamDesc - * - * @description: - * A union type used to store either a long or a pointer. This is used - * to store a file descriptor or a `FILE*' in an input stream. - * - */ - typedef union FT_StreamDesc_ - { - long value; - void* pointer; - - } FT_StreamDesc; - - - /************************************************************************* - * - * @functype: - * FT_Stream_IoFunc - * - * @description: - * A function used to seek and read data from a given input stream. - * - * @input: - * stream :: - * A handle to the source stream. - * - * offset :: - * The offset of read in stream (always from start). - * - * buffer :: - * The address of the read buffer. - * - * count :: - * The number of bytes to read from the stream. - * - * @return: - * The number of bytes effectively read by the stream. - * - * @note: - * This function might be called to perform a seek or skip operation - * with a `count' of~0. - * - */ - typedef unsigned long - (*FT_Stream_IoFunc)( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ); - - - /************************************************************************* - * - * @functype: - * FT_Stream_CloseFunc - * - * @description: - * A function used to close a given input stream. - * - * @input: - * stream :: - * A handle to the target stream. - * - */ - typedef void - (*FT_Stream_CloseFunc)( FT_Stream stream ); - - - /************************************************************************* - * - * @struct: - * FT_StreamRec - * - * @description: - * A structure used to describe an input stream. - * - * @input: - * base :: - * For memory-based streams, this is the address of the first stream - * byte in memory. This field should always be set to NULL for - * disk-based streams. - * - * size :: - * The stream size in bytes. - * - * pos :: - * The current position within the stream. - * - * descriptor :: - * This field is a union that can hold an integer or a pointer. It is - * used by stream implementations to store file descriptors or `FILE*' - * pointers. - * - * pathname :: - * This field is completely ignored by FreeType. However, it is often - * useful during debugging to use it to store the stream's filename - * (where available). - * - * read :: - * The stream's input function. - * - * close :: - * The stream;s close function. - * - * memory :: - * The memory manager to use to preload frames. This is set - * internally by FreeType and shouldn't be touched by stream - * implementations. - * - * cursor :: - * This field is set and used internally by FreeType when parsing - * frames. - * - * limit :: - * This field is set and used internally by FreeType when parsing - * frames. - * - */ - typedef struct FT_StreamRec_ - { - unsigned char* base; - unsigned long size; - unsigned long pos; - - FT_StreamDesc descriptor; - FT_StreamDesc pathname; - FT_Stream_IoFunc read; - FT_Stream_CloseFunc close; - - FT_Memory memory; - unsigned char* cursor; - unsigned char* limit; - - } FT_StreamRec; - - - /* */ - - -FT_END_HEADER - -#endif /* __FTSYSTEM_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/fttrigon.h b/GRRLIB/lib/freetype/include/freetype/fttrigon.h deleted file mode 100644 index 6b77d2e..0000000 --- a/GRRLIB/lib/freetype/include/freetype/fttrigon.h +++ /dev/null @@ -1,350 +0,0 @@ -/***************************************************************************/ -/* */ -/* fttrigon.h */ -/* */ -/* FreeType trigonometric functions (specification). */ -/* */ -/* Copyright 2001, 2003, 2005, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTTRIGON_H__ -#define __FTTRIGON_H__ - -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @type: - * FT_Angle - * - * @description: - * This type is used to model angle values in FreeType. Note that the - * angle is a 16.16 fixed float value expressed in degrees. - * - */ - typedef FT_Fixed FT_Angle; - - - /************************************************************************* - * - * @macro: - * FT_ANGLE_PI - * - * @description: - * The angle pi expressed in @FT_Angle units. - * - */ -#define FT_ANGLE_PI ( 180L << 16 ) - - - /************************************************************************* - * - * @macro: - * FT_ANGLE_2PI - * - * @description: - * The angle 2*pi expressed in @FT_Angle units. - * - */ -#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) - - - /************************************************************************* - * - * @macro: - * FT_ANGLE_PI2 - * - * @description: - * The angle pi/2 expressed in @FT_Angle units. - * - */ -#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) - - - /************************************************************************* - * - * @macro: - * FT_ANGLE_PI4 - * - * @description: - * The angle pi/4 expressed in @FT_Angle units. - * - */ -#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) - - - /************************************************************************* - * - * @function: - * FT_Sin - * - * @description: - * Return the sinus of a given angle in fixed point format. - * - * @input: - * angle :: - * The input angle. - * - * @return: - * The sinus value. - * - * @note: - * If you need both the sinus and cosinus for a given angle, use the - * function @FT_Vector_Unit. - * - */ - FT_EXPORT( FT_Fixed ) - FT_Sin( FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Cos - * - * @description: - * Return the cosinus of a given angle in fixed point format. - * - * @input: - * angle :: - * The input angle. - * - * @return: - * The cosinus value. - * - * @note: - * If you need both the sinus and cosinus for a given angle, use the - * function @FT_Vector_Unit. - * - */ - FT_EXPORT( FT_Fixed ) - FT_Cos( FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Tan - * - * @description: - * Return the tangent of a given angle in fixed point format. - * - * @input: - * angle :: - * The input angle. - * - * @return: - * The tangent value. - * - */ - FT_EXPORT( FT_Fixed ) - FT_Tan( FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Atan2 - * - * @description: - * Return the arc-tangent corresponding to a given vector (x,y) in - * the 2d plane. - * - * @input: - * x :: - * The horizontal vector coordinate. - * - * y :: - * The vertical vector coordinate. - * - * @return: - * The arc-tangent value (i.e. angle). - * - */ - FT_EXPORT( FT_Angle ) - FT_Atan2( FT_Fixed x, - FT_Fixed y ); - - - /************************************************************************* - * - * @function: - * FT_Angle_Diff - * - * @description: - * Return the difference between two angles. The result is always - * constrained to the ]-PI..PI] interval. - * - * @input: - * angle1 :: - * First angle. - * - * angle2 :: - * Second angle. - * - * @return: - * Constrained value of `value2-value1'. - * - */ - FT_EXPORT( FT_Angle ) - FT_Angle_Diff( FT_Angle angle1, - FT_Angle angle2 ); - - - /************************************************************************* - * - * @function: - * FT_Vector_Unit - * - * @description: - * Return the unit vector corresponding to a given angle. After the - * call, the value of `vec.x' will be `sin(angle)', and the value of - * `vec.y' will be `cos(angle)'. - * - * This function is useful to retrieve both the sinus and cosinus of a - * given angle quickly. - * - * @output: - * vec :: - * The address of target vector. - * - * @input: - * angle :: - * The address of angle. - * - */ - FT_EXPORT( void ) - FT_Vector_Unit( FT_Vector* vec, - FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Vector_Rotate - * - * @description: - * Rotate a vector by a given angle. - * - * @inout: - * vec :: - * The address of target vector. - * - * @input: - * angle :: - * The address of angle. - * - */ - FT_EXPORT( void ) - FT_Vector_Rotate( FT_Vector* vec, - FT_Angle angle ); - - - /************************************************************************* - * - * @function: - * FT_Vector_Length - * - * @description: - * Return the length of a given vector. - * - * @input: - * vec :: - * The address of target vector. - * - * @return: - * The vector length, expressed in the same units that the original - * vector coordinates. - * - */ - FT_EXPORT( FT_Fixed ) - FT_Vector_Length( FT_Vector* vec ); - - - /************************************************************************* - * - * @function: - * FT_Vector_Polarize - * - * @description: - * Compute both the length and angle of a given vector. - * - * @input: - * vec :: - * The address of source vector. - * - * @output: - * length :: - * The vector length. - * - * angle :: - * The vector angle. - * - */ - FT_EXPORT( void ) - FT_Vector_Polarize( FT_Vector* vec, - FT_Fixed *length, - FT_Angle *angle ); - - - /************************************************************************* - * - * @function: - * FT_Vector_From_Polar - * - * @description: - * Compute vector coordinates from a length and angle. - * - * @output: - * vec :: - * The address of source vector. - * - * @input: - * length :: - * The vector length. - * - * angle :: - * The vector angle. - * - */ - FT_EXPORT( void ) - FT_Vector_From_Polar( FT_Vector* vec, - FT_Fixed length, - FT_Angle angle ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTTRIGON_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/fttypes.h b/GRRLIB/lib/freetype/include/freetype/fttypes.h deleted file mode 100644 index a57ffa6..0000000 --- a/GRRLIB/lib/freetype/include/freetype/fttypes.h +++ /dev/null @@ -1,588 +0,0 @@ -/***************************************************************************/ -/* */ -/* fttypes.h */ -/* */ -/* FreeType simple types definitions (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2004, 2006, 2007, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTTYPES_H__ -#define __FTTYPES_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_SYSTEM_H -#include FT_IMAGE_H - -#include <stddef.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /* <Title> */ - /* Basic Data Types */ - /* */ - /* <Abstract> */ - /* The basic data types defined by the library. */ - /* */ - /* <Description> */ - /* This section contains the basic data types defined by FreeType~2, */ - /* ranging from simple scalar types to bitmap descriptors. More */ - /* font-specific structures are defined in a different section. */ - /* */ - /* <Order> */ - /* FT_Byte */ - /* FT_Bytes */ - /* FT_Char */ - /* FT_Int */ - /* FT_UInt */ - /* FT_Int16 */ - /* FT_UInt16 */ - /* FT_Int32 */ - /* FT_UInt32 */ - /* FT_Short */ - /* FT_UShort */ - /* FT_Long */ - /* FT_ULong */ - /* FT_Bool */ - /* FT_Offset */ - /* FT_PtrDist */ - /* FT_String */ - /* FT_Tag */ - /* FT_Error */ - /* FT_Fixed */ - /* FT_Pointer */ - /* FT_Pos */ - /* FT_Vector */ - /* FT_BBox */ - /* FT_Matrix */ - /* FT_FWord */ - /* FT_UFWord */ - /* FT_F2Dot14 */ - /* FT_UnitVector */ - /* FT_F26Dot6 */ - /* */ - /* */ - /* FT_Generic */ - /* FT_Generic_Finalizer */ - /* */ - /* FT_Bitmap */ - /* FT_Pixel_Mode */ - /* FT_Palette_Mode */ - /* FT_Glyph_Format */ - /* FT_IMAGE_TAG */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Bool */ - /* */ - /* <Description> */ - /* A typedef of unsigned char, used for simple booleans. As usual, */ - /* values 1 and~0 represent true and false, respectively. */ - /* */ - typedef unsigned char FT_Bool; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_FWord */ - /* */ - /* <Description> */ - /* A signed 16-bit integer used to store a distance in original font */ - /* units. */ - /* */ - typedef signed short FT_FWord; /* distance in FUnits */ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UFWord */ - /* */ - /* <Description> */ - /* An unsigned 16-bit integer used to store a distance in original */ - /* font units. */ - /* */ - typedef unsigned short FT_UFWord; /* unsigned distance */ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Char */ - /* */ - /* <Description> */ - /* A simple typedef for the _signed_ char type. */ - /* */ - typedef signed char FT_Char; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Byte */ - /* */ - /* <Description> */ - /* A simple typedef for the _unsigned_ char type. */ - /* */ - typedef unsigned char FT_Byte; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Bytes */ - /* */ - /* <Description> */ - /* A typedef for constant memory areas. */ - /* */ - typedef const FT_Byte* FT_Bytes; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Tag */ - /* */ - /* <Description> */ - /* A typedef for 32-bit tags (as used in the SFNT format). */ - /* */ - typedef FT_UInt32 FT_Tag; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_String */ - /* */ - /* <Description> */ - /* A simple typedef for the char type, usually used for strings. */ - /* */ - typedef char FT_String; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Short */ - /* */ - /* <Description> */ - /* A typedef for signed short. */ - /* */ - typedef signed short FT_Short; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UShort */ - /* */ - /* <Description> */ - /* A typedef for unsigned short. */ - /* */ - typedef unsigned short FT_UShort; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int */ - /* */ - /* <Description> */ - /* A typedef for the int type. */ - /* */ - typedef signed int FT_Int; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt */ - /* */ - /* <Description> */ - /* A typedef for the unsigned int type. */ - /* */ - typedef unsigned int FT_UInt; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Long */ - /* */ - /* <Description> */ - /* A typedef for signed long. */ - /* */ - typedef signed long FT_Long; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_ULong */ - /* */ - /* <Description> */ - /* A typedef for unsigned long. */ - /* */ - typedef unsigned long FT_ULong; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_F2Dot14 */ - /* */ - /* <Description> */ - /* A signed 2.14 fixed float type used for unit vectors. */ - /* */ - typedef signed short FT_F2Dot14; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_F26Dot6 */ - /* */ - /* <Description> */ - /* A signed 26.6 fixed float type used for vectorial pixel */ - /* coordinates. */ - /* */ - typedef signed long FT_F26Dot6; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Fixed */ - /* */ - /* <Description> */ - /* This type is used to store 16.16 fixed float values, like scaling */ - /* values or matrix coefficients. */ - /* */ - typedef signed long FT_Fixed; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Error */ - /* */ - /* <Description> */ - /* The FreeType error code type. A value of~0 is always interpreted */ - /* as a successful operation. */ - /* */ - typedef int FT_Error; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Pointer */ - /* */ - /* <Description> */ - /* A simple typedef for a typeless pointer. */ - /* */ - typedef void* FT_Pointer; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Offset */ - /* */ - /* <Description> */ - /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ - /* _unsigned_ integer type used to express a file size or position, */ - /* or a memory block size. */ - /* */ - typedef size_t FT_Offset; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_PtrDist */ - /* */ - /* <Description> */ - /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ - /* largest _signed_ integer type used to express the distance */ - /* between two pointers. */ - /* */ - typedef ft_ptrdiff_t FT_PtrDist; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_UnitVector */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2D vector unit vector. Uses */ - /* FT_F2Dot14 types. */ - /* */ - /* <Fields> */ - /* x :: Horizontal coordinate. */ - /* */ - /* y :: Vertical coordinate. */ - /* */ - typedef struct FT_UnitVector_ - { - FT_F2Dot14 x; - FT_F2Dot14 y; - - } FT_UnitVector; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Matrix */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2x2 matrix. Coefficients are */ - /* in 16.16 fixed float format. The computation performed is: */ - /* */ - /* { */ - /* x' = x*xx + y*xy */ - /* y' = x*yx + y*yy */ - /* } */ - /* */ - /* <Fields> */ - /* xx :: Matrix coefficient. */ - /* */ - /* xy :: Matrix coefficient. */ - /* */ - /* yx :: Matrix coefficient. */ - /* */ - /* yy :: Matrix coefficient. */ - /* */ - typedef struct FT_Matrix_ - { - FT_Fixed xx, xy; - FT_Fixed yx, yy; - - } FT_Matrix; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Data */ - /* */ - /* <Description> */ - /* Read-only binary data represented as a pointer and a length. */ - /* */ - /* <Fields> */ - /* pointer :: The data. */ - /* */ - /* length :: The length of the data in bytes. */ - /* */ - typedef struct FT_Data_ - { - const FT_Byte* pointer; - FT_Int length; - - } FT_Data; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Generic_Finalizer */ - /* */ - /* <Description> */ - /* Describe a function used to destroy the `client' data of any */ - /* FreeType object. See the description of the @FT_Generic type for */ - /* details of usage. */ - /* */ - /* <Input> */ - /* The address of the FreeType object which is under finalization. */ - /* Its client data is accessed through its `generic' field. */ - /* */ - typedef void (*FT_Generic_Finalizer)(void* object); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Generic */ - /* */ - /* <Description> */ - /* Client applications often need to associate their own data to a */ - /* variety of FreeType core objects. For example, a text layout API */ - /* might want to associate a glyph cache to a given size object. */ - /* */ - /* Most FreeType object contains a `generic' field, of type */ - /* FT_Generic, which usage is left to client applications and font */ - /* servers. */ - /* */ - /* It can be used to store a pointer to client-specific data, as well */ - /* as the address of a `finalizer' function, which will be called by */ - /* FreeType when the object is destroyed (for example, the previous */ - /* client example would put the address of the glyph cache destructor */ - /* in the `finalizer' field). */ - /* */ - /* <Fields> */ - /* data :: A typeless pointer to any client-specified data. This */ - /* field is completely ignored by the FreeType library. */ - /* */ - /* finalizer :: A pointer to a `generic finalizer' function, which */ - /* will be called when the object is destroyed. If this */ - /* field is set to NULL, no code will be called. */ - /* */ - typedef struct FT_Generic_ - { - void* data; - FT_Generic_Finalizer finalizer; - - } FT_Generic; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_MAKE_TAG */ - /* */ - /* <Description> */ - /* This macro converts four-letter tags which are used to label */ - /* TrueType tables into an unsigned long to be used within FreeType. */ - /* */ - /* <Note> */ - /* The produced values *must* be 32-bit integers. Don't redefine */ - /* this macro. */ - /* */ -#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ - (FT_Tag) \ - ( ( (FT_ULong)_x1 << 24 ) | \ - ( (FT_ULong)_x2 << 16 ) | \ - ( (FT_ULong)_x3 << 8 ) | \ - (FT_ULong)_x4 ) - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* L I S T M A N A G E M E N T */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* list_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_ListNode */ - /* */ - /* <Description> */ - /* Many elements and objects in FreeType are listed through an */ - /* @FT_List record (see @FT_ListRec). As its name suggests, an */ - /* FT_ListNode is a handle to a single list element. */ - /* */ - typedef struct FT_ListNodeRec_* FT_ListNode; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_List */ - /* */ - /* <Description> */ - /* A handle to a list record (see @FT_ListRec). */ - /* */ - typedef struct FT_ListRec_* FT_List; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ListNodeRec */ - /* */ - /* <Description> */ - /* A structure used to hold a single list element. */ - /* */ - /* <Fields> */ - /* prev :: The previous element in the list. NULL if first. */ - /* */ - /* next :: The next element in the list. NULL if last. */ - /* */ - /* data :: A typeless pointer to the listed object. */ - /* */ - typedef struct FT_ListNodeRec_ - { - FT_ListNode prev; - FT_ListNode next; - void* data; - - } FT_ListNodeRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ListRec */ - /* */ - /* <Description> */ - /* A structure used to hold a simple doubly-linked list. These are */ - /* used in many parts of FreeType. */ - /* */ - /* <Fields> */ - /* head :: The head (first element) of doubly-linked list. */ - /* */ - /* tail :: The tail (last element) of doubly-linked list. */ - /* */ - typedef struct FT_ListRec_ - { - FT_ListNode head; - FT_ListNode tail; - - } FT_ListRec; - - - /* */ - -#define FT_IS_EMPTY( list ) ( (list).head == 0 ) - - /* return base error code (without module-specific prefix) */ -#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) - - /* return module error code */ -#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) - -#define FT_BOOL( x ) ( (FT_Bool)( x ) ) - -FT_END_HEADER - -#endif /* __FTTYPES_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftwinfnt.h b/GRRLIB/lib/freetype/include/freetype/ftwinfnt.h deleted file mode 100644 index ea33353..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftwinfnt.h +++ /dev/null @@ -1,274 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftwinfnt.h */ -/* */ -/* FreeType API for accessing Windows fnt-specific data. */ -/* */ -/* Copyright 2003, 2004, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTWINFNT_H__ -#define __FTWINFNT_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* winfnt_fonts */ - /* */ - /* <Title> */ - /* Window FNT Files */ - /* */ - /* <Abstract> */ - /* Windows FNT specific API. */ - /* */ - /* <Description> */ - /* This section contains the declaration of Windows FNT specific */ - /* functions. */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @enum: - * FT_WinFNT_ID_XXX - * - * @description: - * A list of valid values for the `charset' byte in - * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX - * encodings (except for cp1361) can be found at ftp://ftp.unicode.org - * in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is - * roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. - * - * @values: - * FT_WinFNT_ID_DEFAULT :: - * This is used for font enumeration and font creation as a - * `don't care' value. Valid font files don't contain this value. - * When querying for information about the character set of the font - * that is currently selected into a specified device context, this - * return value (of the related Windows API) simply denotes failure. - * - * FT_WinFNT_ID_SYMBOL :: - * There is no known mapping table available. - * - * FT_WinFNT_ID_MAC :: - * Mac Roman encoding. - * - * FT_WinFNT_ID_OEM :: - * From Michael Pöttgen <michael@poettgen.de>: - * - * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM - * is used for the charset of vector fonts, like `modern.fon', - * `roman.fon', and `script.fon' on Windows. - * - * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value - * specifies a character set that is operating-system dependent. - * - * The `IFIMETRICS' documentation from the `Windows Driver - * Development Kit' says: This font supports an OEM-specific - * character set. The OEM character set is system dependent. - * - * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the - * second default codepage that most international versions of - * Windows have. It is one of the OEM codepages from - * - * http://www.microsoft.com/globaldev/reference/cphome.mspx, - * - * and is used for the `DOS boxes', to support legacy applications. - * A German Windows version for example usually uses ANSI codepage - * 1252 and OEM codepage 850. - * - * FT_WinFNT_ID_CP874 :: - * A superset of Thai TIS 620 and ISO 8859-11. - * - * FT_WinFNT_ID_CP932 :: - * A superset of Japanese Shift-JIS (with minor deviations). - * - * FT_WinFNT_ID_CP936 :: - * A superset of simplified Chinese GB 2312-1980 (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP949 :: - * A superset of Korean Hangul KS~C 5601-1987 (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP950 :: - * A superset of traditional Chinese Big~5 ETen (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP1250 :: - * A superset of East European ISO 8859-2 (with slightly different - * ordering). - * - * FT_WinFNT_ID_CP1251 :: - * A superset of Russian ISO 8859-5 (with different ordering). - * - * FT_WinFNT_ID_CP1252 :: - * ANSI encoding. A superset of ISO 8859-1. - * - * FT_WinFNT_ID_CP1253 :: - * A superset of Greek ISO 8859-7 (with minor modifications). - * - * FT_WinFNT_ID_CP1254 :: - * A superset of Turkish ISO 8859-9. - * - * FT_WinFNT_ID_CP1255 :: - * A superset of Hebrew ISO 8859-8 (with some modifications). - * - * FT_WinFNT_ID_CP1256 :: - * A superset of Arabic ISO 8859-6 (with different ordering). - * - * FT_WinFNT_ID_CP1257 :: - * A superset of Baltic ISO 8859-13 (with some deviations). - * - * FT_WinFNT_ID_CP1258 :: - * For Vietnamese. This encoding doesn't cover all necessary - * characters. - * - * FT_WinFNT_ID_CP1361 :: - * Korean (Johab). - */ - -#define FT_WinFNT_ID_CP1252 0 -#define FT_WinFNT_ID_DEFAULT 1 -#define FT_WinFNT_ID_SYMBOL 2 -#define FT_WinFNT_ID_MAC 77 -#define FT_WinFNT_ID_CP932 128 -#define FT_WinFNT_ID_CP949 129 -#define FT_WinFNT_ID_CP1361 130 -#define FT_WinFNT_ID_CP936 134 -#define FT_WinFNT_ID_CP950 136 -#define FT_WinFNT_ID_CP1253 161 -#define FT_WinFNT_ID_CP1254 162 -#define FT_WinFNT_ID_CP1258 163 -#define FT_WinFNT_ID_CP1255 177 -#define FT_WinFNT_ID_CP1256 178 -#define FT_WinFNT_ID_CP1257 186 -#define FT_WinFNT_ID_CP1251 204 -#define FT_WinFNT_ID_CP874 222 -#define FT_WinFNT_ID_CP1250 238 -#define FT_WinFNT_ID_OEM 255 - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_WinFNT_HeaderRec */ - /* */ - /* <Description> */ - /* Windows FNT Header info. */ - /* */ - typedef struct FT_WinFNT_HeaderRec_ - { - FT_UShort version; - FT_ULong file_size; - FT_Byte copyright[60]; - FT_UShort file_type; - FT_UShort nominal_point_size; - FT_UShort vertical_resolution; - FT_UShort horizontal_resolution; - FT_UShort ascent; - FT_UShort internal_leading; - FT_UShort external_leading; - FT_Byte italic; - FT_Byte underline; - FT_Byte strike_out; - FT_UShort weight; - FT_Byte charset; - FT_UShort pixel_width; - FT_UShort pixel_height; - FT_Byte pitch_and_family; - FT_UShort avg_width; - FT_UShort max_width; - FT_Byte first_char; - FT_Byte last_char; - FT_Byte default_char; - FT_Byte break_char; - FT_UShort bytes_per_row; - FT_ULong device_offset; - FT_ULong face_name_offset; - FT_ULong bits_pointer; - FT_ULong bits_offset; - FT_Byte reserved; - FT_ULong flags; - FT_UShort A_space; - FT_UShort B_space; - FT_UShort C_space; - FT_UShort color_table_offset; - FT_ULong reserved1[4]; - - } FT_WinFNT_HeaderRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_WinFNT_Header */ - /* */ - /* <Description> */ - /* A handle to an @FT_WinFNT_HeaderRec structure. */ - /* */ - typedef struct FT_WinFNT_HeaderRec_* FT_WinFNT_Header; - - - /********************************************************************** - * - * @function: - * FT_Get_WinFNT_Header - * - * @description: - * Retrieve a Windows FNT font info header. - * - * @input: - * face :: A handle to the input face. - * - * @output: - * aheader :: The WinFNT header. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * This function only works with Windows FNT faces, returning an error - * otherwise. - */ - FT_EXPORT( FT_Error ) - FT_Get_WinFNT_Header( FT_Face face, - FT_WinFNT_HeaderRec *aheader ); - - - /* */ - -FT_END_HEADER - -#endif /* __FTWINFNT_H__ */ - - -/* END */ - - -/* Local Variables: */ -/* coding: utf-8 */ -/* End: */ diff --git a/GRRLIB/lib/freetype/include/freetype/ftxf86.h b/GRRLIB/lib/freetype/include/freetype/ftxf86.h deleted file mode 100644 index 8c68afd..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ftxf86.h +++ /dev/null @@ -1,83 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftxf86.h */ -/* */ -/* Support functions for X11. */ -/* */ -/* Copyright 2002, 2003, 2004, 2006, 2007 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTXF86_H__ -#define __FTXF86_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* font_formats */ - /* */ - /* <Title> */ - /* Font Formats */ - /* */ - /* <Abstract> */ - /* Getting the font format. */ - /* */ - /* <Description> */ - /* The single function in this section can be used to get the font */ - /* format. Note that this information is not needed normally; */ - /* however, there are special cases (like in PDF devices) where it is */ - /* important to differentiate, in spite of FreeType's uniform API. */ - /* */ - /* This function is in the X11/xf86 namespace for historical reasons */ - /* and in no way depends on that windowing system. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_X11_Font_Format */ - /* */ - /* <Description> */ - /* Return a string describing the format of a given face, using values */ - /* which can be used as an X11 FONT_PROPERTY. Possible values are */ - /* `TrueType', `Type~1', `BDF', `PCF', `Type~42', `CID~Type~1', `CFF', */ - /* `PFR', and `Windows~FNT'. */ - /* */ - /* <Input> */ - /* face :: */ - /* Input face handle. */ - /* */ - /* <Return> */ - /* Font format string. NULL in case of error. */ - /* */ - FT_EXPORT( const char* ) - FT_Get_X11_Font_Format( FT_Face face ); - - /* */ - -FT_END_HEADER - -#endif /* __FTXF86_H__ */ diff --git a/GRRLIB/lib/freetype/include/freetype/t1tables.h b/GRRLIB/lib/freetype/include/freetype/t1tables.h deleted file mode 100644 index 5e2a393..0000000 --- a/GRRLIB/lib/freetype/include/freetype/t1tables.h +++ /dev/null @@ -1,504 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1tables.h */ -/* */ -/* Basic Type 1/Type 2 tables definitions and interface (specification */ -/* only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2006, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1TABLES_H__ -#define __T1TABLES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* type1_tables */ - /* */ - /* <Title> */ - /* Type 1 Tables */ - /* */ - /* <Abstract> */ - /* Type~1 (PostScript) specific font tables. */ - /* */ - /* <Description> */ - /* This section contains the definition of Type 1-specific tables, */ - /* including structures related to other PostScript font formats. */ - /* */ - /*************************************************************************/ - - - /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ - /* structures in order to support Multiple Master fonts. */ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_FontInfoRec */ - /* */ - /* <Description> */ - /* A structure used to model a Type~1 or Type~2 FontInfo dictionary. */ - /* Note that for Multiple Master fonts, each instance has its own */ - /* FontInfo dictionary. */ - /* */ - typedef struct PS_FontInfoRec_ - { - FT_String* version; - FT_String* notice; - FT_String* full_name; - FT_String* family_name; - FT_String* weight; - FT_Long italic_angle; - FT_Bool is_fixed_pitch; - FT_Short underline_position; - FT_UShort underline_thickness; - - } PS_FontInfoRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_FontInfo */ - /* */ - /* <Description> */ - /* A handle to a @PS_FontInfoRec structure. */ - /* */ - typedef struct PS_FontInfoRec_* PS_FontInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_FontInfo */ - /* */ - /* <Description> */ - /* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef PS_FontInfoRec T1_FontInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_PrivateRec */ - /* */ - /* <Description> */ - /* A structure used to model a Type~1 or Type~2 private dictionary. */ - /* Note that for Multiple Master fonts, each instance has its own */ - /* Private dictionary. */ - /* */ - typedef struct PS_PrivateRec_ - { - FT_Int unique_id; - FT_Int lenIV; - - FT_Byte num_blue_values; - FT_Byte num_other_blues; - FT_Byte num_family_blues; - FT_Byte num_family_other_blues; - - FT_Short blue_values[14]; - FT_Short other_blues[10]; - - FT_Short family_blues [14]; - FT_Short family_other_blues[10]; - - FT_Fixed blue_scale; - FT_Int blue_shift; - FT_Int blue_fuzz; - - FT_UShort standard_width[1]; - FT_UShort standard_height[1]; - - FT_Byte num_snap_widths; - FT_Byte num_snap_heights; - FT_Bool force_bold; - FT_Bool round_stem_up; - - FT_Short snap_widths [13]; /* including std width */ - FT_Short snap_heights[13]; /* including std height */ - - FT_Fixed expansion_factor; - - FT_Long language_group; - FT_Long password; - - FT_Short min_feature[2]; - - } PS_PrivateRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_Private */ - /* */ - /* <Description> */ - /* A handle to a @PS_PrivateRec structure. */ - /* */ - typedef struct PS_PrivateRec_* PS_Private; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_Private */ - /* */ - /* <Description> */ - /* This type is equivalent to @PS_PrivateRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef PS_PrivateRec T1_Private; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* T1_Blend_Flags */ - /* */ - /* <Description> */ - /* A set of flags used to indicate which fields are present in a */ - /* given blend dictionary (font info or private). Used to support */ - /* Multiple Masters fonts. */ - /* */ - typedef enum T1_Blend_Flags_ - { - /*# required fields in a FontInfo blend dictionary */ - T1_BLEND_UNDERLINE_POSITION = 0, - T1_BLEND_UNDERLINE_THICKNESS, - T1_BLEND_ITALIC_ANGLE, - - /*# required fields in a Private blend dictionary */ - T1_BLEND_BLUE_VALUES, - T1_BLEND_OTHER_BLUES, - T1_BLEND_STANDARD_WIDTH, - T1_BLEND_STANDARD_HEIGHT, - T1_BLEND_STEM_SNAP_WIDTHS, - T1_BLEND_STEM_SNAP_HEIGHTS, - T1_BLEND_BLUE_SCALE, - T1_BLEND_BLUE_SHIFT, - T1_BLEND_FAMILY_BLUES, - T1_BLEND_FAMILY_OTHER_BLUES, - T1_BLEND_FORCE_BOLD, - - /*# never remove */ - T1_BLEND_MAX - - } T1_Blend_Flags; - - /* */ - - - /*# backwards compatible definitions */ -#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION -#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS -#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE -#define t1_blend_blue_values T1_BLEND_BLUE_VALUES -#define t1_blend_other_blues T1_BLEND_OTHER_BLUES -#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH -#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT -#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS -#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS -#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE -#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT -#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES -#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES -#define t1_blend_force_bold T1_BLEND_FORCE_BOLD -#define t1_blend_max T1_BLEND_MAX - - - /* maximum number of Multiple Masters designs, as defined in the spec */ -#define T1_MAX_MM_DESIGNS 16 - - /* maximum number of Multiple Masters axes, as defined in the spec */ -#define T1_MAX_MM_AXIS 4 - - /* maximum number of elements in a design map */ -#define T1_MAX_MM_MAP_POINTS 20 - - - /* this structure is used to store the BlendDesignMap entry for an axis */ - typedef struct PS_DesignMap_ - { - FT_Byte num_points; - FT_Long* design_points; - FT_Fixed* blend_points; - - } PS_DesignMapRec, *PS_DesignMap; - - /* backwards-compatible definition */ - typedef PS_DesignMapRec T1_DesignMap; - - - typedef struct PS_BlendRec_ - { - FT_UInt num_designs; - FT_UInt num_axis; - - FT_String* axis_names[T1_MAX_MM_AXIS]; - FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; - PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; - - FT_Fixed* weight_vector; - FT_Fixed* default_weight_vector; - - PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; - PS_Private privates [T1_MAX_MM_DESIGNS + 1]; - - FT_ULong blend_bitflags; - - FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; - - /* since 2.3.0 */ - - /* undocumented, optional: the default design instance; */ - /* corresponds to default_weight_vector -- */ - /* num_default_design_vector == 0 means it is not present */ - /* in the font and associated metrics files */ - FT_UInt default_design_vector[T1_MAX_MM_DESIGNS]; - FT_UInt num_default_design_vector; - - } PS_BlendRec, *PS_Blend; - - - /* backwards-compatible definition */ - typedef PS_BlendRec T1_Blend; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceDictRec */ - /* */ - /* <Description> */ - /* A structure used to represent data in a CID top-level dictionary. */ - /* */ - typedef struct CID_FaceDictRec_ - { - PS_PrivateRec private_dict; - - FT_UInt len_buildchar; - FT_Fixed forcebold_threshold; - FT_Pos stroke_width; - FT_Fixed expansion_factor; - - FT_Byte paint_type; - FT_Byte font_type; - FT_Matrix font_matrix; - FT_Vector font_offset; - - FT_UInt num_subrs; - FT_ULong subrmap_offset; - FT_Int sd_bytes; - - } CID_FaceDictRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceDict */ - /* */ - /* <Description> */ - /* A handle to a @CID_FaceDictRec structure. */ - /* */ - typedef struct CID_FaceDictRec_* CID_FaceDict; - - /* */ - - - /* backwards-compatible definition */ - typedef CID_FaceDictRec CID_FontDict; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceInfoRec */ - /* */ - /* <Description> */ - /* A structure used to represent CID Face information. */ - /* */ - typedef struct CID_FaceInfoRec_ - { - FT_String* cid_font_name; - FT_Fixed cid_version; - FT_Int cid_font_type; - - FT_String* registry; - FT_String* ordering; - FT_Int supplement; - - PS_FontInfoRec font_info; - FT_BBox font_bbox; - FT_ULong uid_base; - - FT_Int num_xuid; - FT_ULong xuid[16]; - - FT_ULong cidmap_offset; - FT_Int fd_bytes; - FT_Int gd_bytes; - FT_ULong cid_count; - - FT_Int num_dicts; - CID_FaceDict font_dicts; - - FT_ULong data_offset; - - } CID_FaceInfoRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_FaceInfo */ - /* */ - /* <Description> */ - /* A handle to a @CID_FaceInfoRec structure. */ - /* */ - typedef struct CID_FaceInfoRec_* CID_FaceInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_Info */ - /* */ - /* <Description> */ - /* This type is equivalent to @CID_FaceInfoRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef CID_FaceInfoRec CID_Info; - - - /************************************************************************ - * - * @function: - * FT_Has_PS_Glyph_Names - * - * @description: - * Return true if a given face provides reliable PostScript glyph - * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, - * except that certain fonts (mostly TrueType) contain incorrect - * glyph name tables. - * - * When this function returns true, the caller is sure that the glyph - * names returned by @FT_Get_Glyph_Name are reliable. - * - * @input: - * face :: - * face handle - * - * @return: - * Boolean. True if glyph names are reliable. - * - */ - FT_EXPORT( FT_Int ) - FT_Has_PS_Glyph_Names( FT_Face face ); - - - /************************************************************************ - * - * @function: - * FT_Get_PS_Font_Info - * - * @description: - * Retrieve the @PS_FontInfoRec structure corresponding to a given - * PostScript font. - * - * @input: - * face :: - * PostScript face handle. - * - * @output: - * afont_info :: - * Output font info structure pointer. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The string pointers within the font info structure are owned by - * the face and don't need to be freed by the caller. - * - * If the font's format is not PostScript-based, this function will - * return the `FT_Err_Invalid_Argument' error code. - * - */ - FT_EXPORT( FT_Error ) - FT_Get_PS_Font_Info( FT_Face face, - PS_FontInfo afont_info ); - - - /************************************************************************ - * - * @function: - * FT_Get_PS_Font_Private - * - * @description: - * Retrieve the @PS_PrivateRec structure corresponding to a given - * PostScript font. - * - * @input: - * face :: - * PostScript face handle. - * - * @output: - * afont_private :: - * Output private dictionary structure pointer. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * The string pointers within the @PS_PrivateRec structure are owned by - * the face and don't need to be freed by the caller. - * - * If the font's format is not PostScript-based, this function returns - * the `FT_Err_Invalid_Argument' error code. - * - */ - FT_EXPORT( FT_Error ) - FT_Get_PS_Font_Private( FT_Face face, - PS_Private afont_private ); - - /* */ - - -FT_END_HEADER - -#endif /* __T1TABLES_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ttnameid.h b/GRRLIB/lib/freetype/include/freetype/ttnameid.h deleted file mode 100644 index cbeac78..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ttnameid.h +++ /dev/null @@ -1,1247 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttnameid.h */ -/* */ -/* TrueType name ID definitions (specification only). */ -/* */ -/* Copyright 1996-2002, 2003, 2004, 2006, 2007, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTNAMEID_H__ -#define __TTNAMEID_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* truetype_tables */ - /* */ - - - /*************************************************************************/ - /* */ - /* Possible values for the `platform' identifier code in the name */ - /* records of the TTF `name' table. */ - /* */ - /*************************************************************************/ - - - /*********************************************************************** - * - * @enum: - * TT_PLATFORM_XXX - * - * @description: - * A list of valid values for the `platform_id' identifier code in - * @FT_CharMapRec and @FT_SfntName structures. - * - * @values: - * TT_PLATFORM_APPLE_UNICODE :: - * Used by Apple to indicate a Unicode character map and/or name entry. - * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note - * that name entries in this format are coded as big-endian UCS-2 - * character codes _only_. - * - * TT_PLATFORM_MACINTOSH :: - * Used by Apple to indicate a MacOS-specific charmap and/or name entry. - * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that - * most TrueType fonts contain an Apple roman charmap to be usable on - * MacOS systems (even if they contain a Microsoft charmap as well). - * - * TT_PLATFORM_ISO :: - * This value was used to specify Unicode charmaps. It is however - * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding - * `encoding_id' values. - * - * TT_PLATFORM_MICROSOFT :: - * Used by Microsoft to indicate Windows-specific charmaps. See - * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. - * Note that most fonts contain a Unicode charmap using - * (TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). - * - * TT_PLATFORM_CUSTOM :: - * Used to indicate application-specific charmaps. - * - * TT_PLATFORM_ADOBE :: - * This value isn't part of any font format specification, but is used - * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec - * structure. See @TT_ADOBE_ID_XXX. - */ - -#define TT_PLATFORM_APPLE_UNICODE 0 -#define TT_PLATFORM_MACINTOSH 1 -#define TT_PLATFORM_ISO 2 /* deprecated */ -#define TT_PLATFORM_MICROSOFT 3 -#define TT_PLATFORM_CUSTOM 4 -#define TT_PLATFORM_ADOBE 7 /* artificial */ - - - /*********************************************************************** - * - * @enum: - * TT_APPLE_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. - * - * @values: - * TT_APPLE_ID_DEFAULT :: - * Unicode version 1.0. - * - * TT_APPLE_ID_UNICODE_1_1 :: - * Unicode 1.1; specifies Hangul characters starting at U+34xx. - * - * TT_APPLE_ID_ISO_10646 :: - * Deprecated (identical to preceding). - * - * TT_APPLE_ID_UNICODE_2_0 :: - * Unicode 2.0 and beyond (UTF-16 BMP only). - * - * TT_APPLE_ID_UNICODE_32 :: - * Unicode 3.1 and beyond, using UTF-32. - * - * TT_APPLE_ID_VARIANT_SELECTOR :: - * From Adobe, not Apple. Not a normal cmap. Specifies variations - * on a real cmap. - */ - -#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ -#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ -#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ -#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ -#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ -#define TT_APPLE_ID_VARIANT_SELECTOR 5 /* variation selector data */ - - - /*********************************************************************** - * - * @enum: - * TT_MAC_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_MACINTOSH charmaps and name entries. - * - * @values: - * TT_MAC_ID_ROMAN :: - * TT_MAC_ID_JAPANESE :: - * TT_MAC_ID_TRADITIONAL_CHINESE :: - * TT_MAC_ID_KOREAN :: - * TT_MAC_ID_ARABIC :: - * TT_MAC_ID_HEBREW :: - * TT_MAC_ID_GREEK :: - * TT_MAC_ID_RUSSIAN :: - * TT_MAC_ID_RSYMBOL :: - * TT_MAC_ID_DEVANAGARI :: - * TT_MAC_ID_GURMUKHI :: - * TT_MAC_ID_GUJARATI :: - * TT_MAC_ID_ORIYA :: - * TT_MAC_ID_BENGALI :: - * TT_MAC_ID_TAMIL :: - * TT_MAC_ID_TELUGU :: - * TT_MAC_ID_KANNADA :: - * TT_MAC_ID_MALAYALAM :: - * TT_MAC_ID_SINHALESE :: - * TT_MAC_ID_BURMESE :: - * TT_MAC_ID_KHMER :: - * TT_MAC_ID_THAI :: - * TT_MAC_ID_LAOTIAN :: - * TT_MAC_ID_GEORGIAN :: - * TT_MAC_ID_ARMENIAN :: - * TT_MAC_ID_MALDIVIAN :: - * TT_MAC_ID_SIMPLIFIED_CHINESE :: - * TT_MAC_ID_TIBETAN :: - * TT_MAC_ID_MONGOLIAN :: - * TT_MAC_ID_GEEZ :: - * TT_MAC_ID_SLAVIC :: - * TT_MAC_ID_VIETNAMESE :: - * TT_MAC_ID_SINDHI :: - * TT_MAC_ID_UNINTERP :: - */ - -#define TT_MAC_ID_ROMAN 0 -#define TT_MAC_ID_JAPANESE 1 -#define TT_MAC_ID_TRADITIONAL_CHINESE 2 -#define TT_MAC_ID_KOREAN 3 -#define TT_MAC_ID_ARABIC 4 -#define TT_MAC_ID_HEBREW 5 -#define TT_MAC_ID_GREEK 6 -#define TT_MAC_ID_RUSSIAN 7 -#define TT_MAC_ID_RSYMBOL 8 -#define TT_MAC_ID_DEVANAGARI 9 -#define TT_MAC_ID_GURMUKHI 10 -#define TT_MAC_ID_GUJARATI 11 -#define TT_MAC_ID_ORIYA 12 -#define TT_MAC_ID_BENGALI 13 -#define TT_MAC_ID_TAMIL 14 -#define TT_MAC_ID_TELUGU 15 -#define TT_MAC_ID_KANNADA 16 -#define TT_MAC_ID_MALAYALAM 17 -#define TT_MAC_ID_SINHALESE 18 -#define TT_MAC_ID_BURMESE 19 -#define TT_MAC_ID_KHMER 20 -#define TT_MAC_ID_THAI 21 -#define TT_MAC_ID_LAOTIAN 22 -#define TT_MAC_ID_GEORGIAN 23 -#define TT_MAC_ID_ARMENIAN 24 -#define TT_MAC_ID_MALDIVIAN 25 -#define TT_MAC_ID_SIMPLIFIED_CHINESE 25 -#define TT_MAC_ID_TIBETAN 26 -#define TT_MAC_ID_MONGOLIAN 27 -#define TT_MAC_ID_GEEZ 28 -#define TT_MAC_ID_SLAVIC 29 -#define TT_MAC_ID_VIETNAMESE 30 -#define TT_MAC_ID_SINDHI 31 -#define TT_MAC_ID_UNINTERP 32 - - - /*********************************************************************** - * - * @enum: - * TT_ISO_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_ISO charmaps and name entries. - * - * Their use is now deprecated. - * - * @values: - * TT_ISO_ID_7BIT_ASCII :: - * ASCII. - * TT_ISO_ID_10646 :: - * ISO/10646. - * TT_ISO_ID_8859_1 :: - * Also known as Latin-1. - */ - -#define TT_ISO_ID_7BIT_ASCII 0 -#define TT_ISO_ID_10646 1 -#define TT_ISO_ID_8859_1 2 - - - /*********************************************************************** - * - * @enum: - * TT_MS_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_MICROSOFT charmaps and name entries. - * - * @values: - * TT_MS_ID_SYMBOL_CS :: - * Corresponds to Microsoft symbol encoding. See - * @FT_ENCODING_MS_SYMBOL. - * - * TT_MS_ID_UNICODE_CS :: - * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See - * @FT_ENCODING_UNICODE. - * - * TT_MS_ID_SJIS :: - * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. - * - * TT_MS_ID_GB2312 :: - * Corresponds to Simplified Chinese as used in Mainland China. See - * @FT_ENCODING_GB2312. - * - * TT_MS_ID_BIG_5 :: - * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. - * See @FT_ENCODING_BIG5. - * - * TT_MS_ID_WANSUNG :: - * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. - * - * TT_MS_ID_JOHAB :: - * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. - * - * TT_MS_ID_UCS_4 :: - * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to - * the OpenType specification version 1.4 (mid-2001.) - */ - -#define TT_MS_ID_SYMBOL_CS 0 -#define TT_MS_ID_UNICODE_CS 1 -#define TT_MS_ID_SJIS 2 -#define TT_MS_ID_GB2312 3 -#define TT_MS_ID_BIG_5 4 -#define TT_MS_ID_WANSUNG 5 -#define TT_MS_ID_JOHAB 6 -#define TT_MS_ID_UCS_4 10 - - - /*********************************************************************** - * - * @enum: - * TT_ADOBE_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! - * - * @values: - * TT_ADOBE_ID_STANDARD :: - * Adobe standard encoding. - * TT_ADOBE_ID_EXPERT :: - * Adobe expert encoding. - * TT_ADOBE_ID_CUSTOM :: - * Adobe custom encoding. - * TT_ADOBE_ID_LATIN_1 :: - * Adobe Latin~1 encoding. - */ - -#define TT_ADOBE_ID_STANDARD 0 -#define TT_ADOBE_ID_EXPERT 1 -#define TT_ADOBE_ID_CUSTOM 2 -#define TT_ADOBE_ID_LATIN_1 3 - - - /*************************************************************************/ - /* */ - /* Possible values of the language identifier field in the name records */ - /* of the TTF `name' table if the `platform' identifier code is */ - /* TT_PLATFORM_MACINTOSH. */ - /* */ - /* The canonical source for the Apple assigned Language ID's is at */ - /* */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6name.html */ - /* */ -#define TT_MAC_LANGID_ENGLISH 0 -#define TT_MAC_LANGID_FRENCH 1 -#define TT_MAC_LANGID_GERMAN 2 -#define TT_MAC_LANGID_ITALIAN 3 -#define TT_MAC_LANGID_DUTCH 4 -#define TT_MAC_LANGID_SWEDISH 5 -#define TT_MAC_LANGID_SPANISH 6 -#define TT_MAC_LANGID_DANISH 7 -#define TT_MAC_LANGID_PORTUGUESE 8 -#define TT_MAC_LANGID_NORWEGIAN 9 -#define TT_MAC_LANGID_HEBREW 10 -#define TT_MAC_LANGID_JAPANESE 11 -#define TT_MAC_LANGID_ARABIC 12 -#define TT_MAC_LANGID_FINNISH 13 -#define TT_MAC_LANGID_GREEK 14 -#define TT_MAC_LANGID_ICELANDIC 15 -#define TT_MAC_LANGID_MALTESE 16 -#define TT_MAC_LANGID_TURKISH 17 -#define TT_MAC_LANGID_CROATIAN 18 -#define TT_MAC_LANGID_CHINESE_TRADITIONAL 19 -#define TT_MAC_LANGID_URDU 20 -#define TT_MAC_LANGID_HINDI 21 -#define TT_MAC_LANGID_THAI 22 -#define TT_MAC_LANGID_KOREAN 23 -#define TT_MAC_LANGID_LITHUANIAN 24 -#define TT_MAC_LANGID_POLISH 25 -#define TT_MAC_LANGID_HUNGARIAN 26 -#define TT_MAC_LANGID_ESTONIAN 27 -#define TT_MAC_LANGID_LETTISH 28 -#define TT_MAC_LANGID_SAAMISK 29 -#define TT_MAC_LANGID_FAEROESE 30 -#define TT_MAC_LANGID_FARSI 31 -#define TT_MAC_LANGID_RUSSIAN 32 -#define TT_MAC_LANGID_CHINESE_SIMPLIFIED 33 -#define TT_MAC_LANGID_FLEMISH 34 -#define TT_MAC_LANGID_IRISH 35 -#define TT_MAC_LANGID_ALBANIAN 36 -#define TT_MAC_LANGID_ROMANIAN 37 -#define TT_MAC_LANGID_CZECH 38 -#define TT_MAC_LANGID_SLOVAK 39 -#define TT_MAC_LANGID_SLOVENIAN 40 -#define TT_MAC_LANGID_YIDDISH 41 -#define TT_MAC_LANGID_SERBIAN 42 -#define TT_MAC_LANGID_MACEDONIAN 43 -#define TT_MAC_LANGID_BULGARIAN 44 -#define TT_MAC_LANGID_UKRAINIAN 45 -#define TT_MAC_LANGID_BYELORUSSIAN 46 -#define TT_MAC_LANGID_UZBEK 47 -#define TT_MAC_LANGID_KAZAKH 48 -#define TT_MAC_LANGID_AZERBAIJANI 49 -#define TT_MAC_LANGID_AZERBAIJANI_CYRILLIC_SCRIPT 49 -#define TT_MAC_LANGID_AZERBAIJANI_ARABIC_SCRIPT 50 -#define TT_MAC_LANGID_ARMENIAN 51 -#define TT_MAC_LANGID_GEORGIAN 52 -#define TT_MAC_LANGID_MOLDAVIAN 53 -#define TT_MAC_LANGID_KIRGHIZ 54 -#define TT_MAC_LANGID_TAJIKI 55 -#define TT_MAC_LANGID_TURKMEN 56 -#define TT_MAC_LANGID_MONGOLIAN 57 -#define TT_MAC_LANGID_MONGOLIAN_MONGOLIAN_SCRIPT 57 -#define TT_MAC_LANGID_MONGOLIAN_CYRILLIC_SCRIPT 58 -#define TT_MAC_LANGID_PASHTO 59 -#define TT_MAC_LANGID_KURDISH 60 -#define TT_MAC_LANGID_KASHMIRI 61 -#define TT_MAC_LANGID_SINDHI 62 -#define TT_MAC_LANGID_TIBETAN 63 -#define TT_MAC_LANGID_NEPALI 64 -#define TT_MAC_LANGID_SANSKRIT 65 -#define TT_MAC_LANGID_MARATHI 66 -#define TT_MAC_LANGID_BENGALI 67 -#define TT_MAC_LANGID_ASSAMESE 68 -#define TT_MAC_LANGID_GUJARATI 69 -#define TT_MAC_LANGID_PUNJABI 70 -#define TT_MAC_LANGID_ORIYA 71 -#define TT_MAC_LANGID_MALAYALAM 72 -#define TT_MAC_LANGID_KANNADA 73 -#define TT_MAC_LANGID_TAMIL 74 -#define TT_MAC_LANGID_TELUGU 75 -#define TT_MAC_LANGID_SINHALESE 76 -#define TT_MAC_LANGID_BURMESE 77 -#define TT_MAC_LANGID_KHMER 78 -#define TT_MAC_LANGID_LAO 79 -#define TT_MAC_LANGID_VIETNAMESE 80 -#define TT_MAC_LANGID_INDONESIAN 81 -#define TT_MAC_LANGID_TAGALOG 82 -#define TT_MAC_LANGID_MALAY_ROMAN_SCRIPT 83 -#define TT_MAC_LANGID_MALAY_ARABIC_SCRIPT 84 -#define TT_MAC_LANGID_AMHARIC 85 -#define TT_MAC_LANGID_TIGRINYA 86 -#define TT_MAC_LANGID_GALLA 87 -#define TT_MAC_LANGID_SOMALI 88 -#define TT_MAC_LANGID_SWAHILI 89 -#define TT_MAC_LANGID_RUANDA 90 -#define TT_MAC_LANGID_RUNDI 91 -#define TT_MAC_LANGID_CHEWA 92 -#define TT_MAC_LANGID_MALAGASY 93 -#define TT_MAC_LANGID_ESPERANTO 94 -#define TT_MAC_LANGID_WELSH 128 -#define TT_MAC_LANGID_BASQUE 129 -#define TT_MAC_LANGID_CATALAN 130 -#define TT_MAC_LANGID_LATIN 131 -#define TT_MAC_LANGID_QUECHUA 132 -#define TT_MAC_LANGID_GUARANI 133 -#define TT_MAC_LANGID_AYMARA 134 -#define TT_MAC_LANGID_TATAR 135 -#define TT_MAC_LANGID_UIGHUR 136 -#define TT_MAC_LANGID_DZONGKHA 137 -#define TT_MAC_LANGID_JAVANESE 138 -#define TT_MAC_LANGID_SUNDANESE 139 - - -#if 0 /* these seem to be errors that have been dropped */ - -#define TT_MAC_LANGID_SCOTTISH_GAELIC 140 -#define TT_MAC_LANGID_IRISH_GAELIC 141 - -#endif - - - /* The following codes are new as of 2000-03-10 */ -#define TT_MAC_LANGID_GALICIAN 140 -#define TT_MAC_LANGID_AFRIKAANS 141 -#define TT_MAC_LANGID_BRETON 142 -#define TT_MAC_LANGID_INUKTITUT 143 -#define TT_MAC_LANGID_SCOTTISH_GAELIC 144 -#define TT_MAC_LANGID_MANX_GAELIC 145 -#define TT_MAC_LANGID_IRISH_GAELIC 146 -#define TT_MAC_LANGID_TONGAN 147 -#define TT_MAC_LANGID_GREEK_POLYTONIC 148 -#define TT_MAC_LANGID_GREELANDIC 149 -#define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 - - - /*************************************************************************/ - /* */ - /* Possible values of the language identifier field in the name records */ - /* of the TTF `name' table if the `platform' identifier code is */ - /* TT_PLATFORM_MICROSOFT. */ - /* */ - /* The canonical source for the MS assigned LCID's (seems to) be at */ - /* */ - /* http://www.microsoft.com/globaldev/reference/lcid-all.mspx */ - /* */ - /* It used to be at various places, among them */ - /* */ - /* http://www.microsoft.com/typography/OTSPEC/lcid-cp.txt */ - /* http://www.microsoft.com/globaldev/reference/loclanghome.asp */ - /* http://support.microsoft.com/support/kb/articles/Q224/8/04.ASP */ - /* http://msdn.microsoft.com/library/en-us/passport25/ */ - /* NET_Passport_VBScript_Documentation/Single_Sign_In/ */ - /* Advanced_Single_Sign_In/Localization_and_LCIDs.asp */ - /* */ - /* Hopefully, it seems now that the Globaldev site prevails... */ - /* (updated by Antoine, 2004-02-17) */ - -#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 -#define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 -#define TT_MS_LANGID_ARABIC_IRAQ 0x0801 -#define TT_MS_LANGID_ARABIC_EGYPT 0x0c01 -#define TT_MS_LANGID_ARABIC_LIBYA 0x1001 -#define TT_MS_LANGID_ARABIC_ALGERIA 0x1401 -#define TT_MS_LANGID_ARABIC_MOROCCO 0x1801 -#define TT_MS_LANGID_ARABIC_TUNISIA 0x1c01 -#define TT_MS_LANGID_ARABIC_OMAN 0x2001 -#define TT_MS_LANGID_ARABIC_YEMEN 0x2401 -#define TT_MS_LANGID_ARABIC_SYRIA 0x2801 -#define TT_MS_LANGID_ARABIC_JORDAN 0x2c01 -#define TT_MS_LANGID_ARABIC_LEBANON 0x3001 -#define TT_MS_LANGID_ARABIC_KUWAIT 0x3401 -#define TT_MS_LANGID_ARABIC_UAE 0x3801 -#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3c01 -#define TT_MS_LANGID_ARABIC_QATAR 0x4001 -#define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402 -#define TT_MS_LANGID_CATALAN_SPAIN 0x0403 -#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 -#define TT_MS_LANGID_CHINESE_TAIWAN 0x0404 -#define TT_MS_LANGID_CHINESE_PRC 0x0804 -#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0c04 -#define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004 - -#if 1 /* this looks like the correct value */ -#define TT_MS_LANGID_CHINESE_MACAU 0x1404 -#else /* but beware, Microsoft may change its mind... - the most recent Word reference has the following: */ -#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG -#endif - -#if 0 /* used only with .NET `cultures'; commented out */ -#define TT_MS_LANGID_CHINESE_TRADITIONAL 0x7C04 -#endif - -#define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 -#define TT_MS_LANGID_DANISH_DENMARK 0x0406 -#define TT_MS_LANGID_GERMAN_GERMANY 0x0407 -#define TT_MS_LANGID_GERMAN_SWITZERLAND 0x0807 -#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0c07 -#define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007 -#define TT_MS_LANGID_GERMAN_LIECHTENSTEI 0x1407 -#define TT_MS_LANGID_GREEK_GREECE 0x0408 - - /* don't ask what this one means... It is commented out currently. */ -#if 0 -#define TT_MS_LANGID_GREEK_GREECE2 0x2008 -#endif - -#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 -#define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409 -#define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809 -#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0c09 -#define TT_MS_LANGID_ENGLISH_CANADA 0x1009 -#define TT_MS_LANGID_ENGLISH_NEW_ZEALAND 0x1409 -#define TT_MS_LANGID_ENGLISH_IRELAND 0x1809 -#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1c09 -#define TT_MS_LANGID_ENGLISH_JAMAICA 0x2009 -#define TT_MS_LANGID_ENGLISH_CARIBBEAN 0x2409 -#define TT_MS_LANGID_ENGLISH_BELIZE 0x2809 -#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2c09 -#define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009 -#define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409 -#define TT_MS_LANGID_ENGLISH_INDONESIA 0x3809 -#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3c09 -#define TT_MS_LANGID_ENGLISH_INDIA 0x4009 -#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 -#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 -#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040a -#define TT_MS_LANGID_SPANISH_MEXICO 0x080a -#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT 0x0c0a -#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100a -#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140a -#define TT_MS_LANGID_SPANISH_PANAMA 0x180a -#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1c0a -#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200a -#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240a -#define TT_MS_LANGID_SPANISH_PERU 0x280a -#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2c0a -#define TT_MS_LANGID_SPANISH_ECUADOR 0x300a -#define TT_MS_LANGID_SPANISH_CHILE 0x340a -#define TT_MS_LANGID_SPANISH_URUGUAY 0x380a -#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3c0a -#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400a -#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440a -#define TT_MS_LANGID_SPANISH_HONDURAS 0x480a -#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4c0a -#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500a -#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540a - /* The following ID blatantly violate MS specs by using a */ - /* sublanguage > 0x1F. */ -#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40aU -#define TT_MS_LANGID_FINNISH_FINLAND 0x040b -#define TT_MS_LANGID_FRENCH_FRANCE 0x040c -#define TT_MS_LANGID_FRENCH_BELGIUM 0x080c -#define TT_MS_LANGID_FRENCH_CANADA 0x0c0c -#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100c -#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140c -#define TT_MS_LANGID_FRENCH_MONACO 0x180c -#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1c0c -#define TT_MS_LANGID_FRENCH_REUNION 0x200c -#define TT_MS_LANGID_FRENCH_CONGO 0x240c - /* which was formerly: */ -#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO -#define TT_MS_LANGID_FRENCH_SENEGAL 0x280c -#define TT_MS_LANGID_FRENCH_CAMEROON 0x2c0c -#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300c -#define TT_MS_LANGID_FRENCH_MALI 0x340c -#define TT_MS_LANGID_FRENCH_MOROCCO 0x380c -#define TT_MS_LANGID_FRENCH_HAITI 0x3c0c - /* and another violation of the spec (see 0xE40aU) */ -#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40cU -#define TT_MS_LANGID_HEBREW_ISRAEL 0x040d -#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040e -#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040f -#define TT_MS_LANGID_ITALIAN_ITALY 0x0410 -#define TT_MS_LANGID_ITALIAN_SWITZERLAND 0x0810 -#define TT_MS_LANGID_JAPANESE_JAPAN 0x0411 -#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA 0x0412 -#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 -#define TT_MS_LANGID_DUTCH_NETHERLANDS 0x0413 -#define TT_MS_LANGID_DUTCH_BELGIUM 0x0813 -#define TT_MS_LANGID_NORWEGIAN_NORWAY_BOKMAL 0x0414 -#define TT_MS_LANGID_NORWEGIAN_NORWAY_NYNORSK 0x0814 -#define TT_MS_LANGID_POLISH_POLAND 0x0415 -#define TT_MS_LANGID_PORTUGUESE_BRAZIL 0x0416 -#define TT_MS_LANGID_PORTUGUESE_PORTUGAL 0x0816 -#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND 0x0417 -#define TT_MS_LANGID_ROMANIAN_ROMANIA 0x0418 -#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 -#define TT_MS_LANGID_RUSSIAN_RUSSIA 0x0419 -#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 -#define TT_MS_LANGID_CROATIAN_CROATIA 0x041a -#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081a -#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0c1a - -#if 0 /* this used to be this value, but it looks like we were wrong */ -#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101a -#else /* current sources say */ -#define TT_MS_LANGID_CROATIAN_BOSNIA_HERZEGOVINA 0x101a -#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x141a - /* and XPsp2 Platform SDK added (2004-07-26) */ - /* Names are shortened to be significant within 40 chars. */ -#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_LATIN 0x181a -#define TT_MS_LANGID_SERBIAN_BOSNIA_HERZ_CYRILLIC 0x181a -#endif - -#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041b -#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041c -#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041d -#define TT_MS_LANGID_SWEDISH_FINLAND 0x081d -#define TT_MS_LANGID_THAI_THAILAND 0x041e -#define TT_MS_LANGID_TURKISH_TURKEY 0x041f -#define TT_MS_LANGID_URDU_PAKISTAN 0x0420 -#define TT_MS_LANGID_URDU_INDIA 0x0820 -#define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421 -#define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422 -#define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423 -#define TT_MS_LANGID_SLOVENE_SLOVENIA 0x0424 -#define TT_MS_LANGID_ESTONIAN_ESTONIA 0x0425 -#define TT_MS_LANGID_LATVIAN_LATVIA 0x0426 -#define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427 -#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 -#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 -#define TT_MS_LANGID_FARSI_IRAN 0x0429 -#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042a -#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042b -#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042c -#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082c -#define TT_MS_LANGID_BASQUE_SPAIN 0x042d -#define TT_MS_LANGID_SORBIAN_GERMANY 0x042e -#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042f -#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 -#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 -#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA 0x0432 -#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 -#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA 0x0434 -#define TT_MS_LANGID_ZULU_SOUTH_AFRICA 0x0435 -#define TT_MS_LANGID_AFRIKAANS_SOUTH_AFRICA 0x0436 -#define TT_MS_LANGID_GEORGIAN_GEORGIA 0x0437 -#define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438 -#define TT_MS_LANGID_HINDI_INDIA 0x0439 -#define TT_MS_LANGID_MALTESE_MALTA 0x043a - /* Added by XPsp2 Platform SDK (2004-07-26) */ -#define TT_MS_LANGID_SAMI_NORTHERN_NORWAY 0x043b -#define TT_MS_LANGID_SAMI_NORTHERN_SWEDEN 0x083b -#define TT_MS_LANGID_SAMI_NORTHERN_FINLAND 0x0C3b -#define TT_MS_LANGID_SAMI_LULE_NORWAY 0x103b -#define TT_MS_LANGID_SAMI_LULE_SWEDEN 0x143b -#define TT_MS_LANGID_SAMI_SOUTHERN_NORWAY 0x183b -#define TT_MS_LANGID_SAMI_SOUTHERN_SWEDEN 0x1C3b -#define TT_MS_LANGID_SAMI_SKOLT_FINLAND 0x203b -#define TT_MS_LANGID_SAMI_INARI_FINLAND 0x243b - /* ... and we also keep our old identifier... */ -#define TT_MS_LANGID_SAAMI_LAPONIA 0x043b - -#if 0 /* this seems to be a previous inversion */ -#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c -#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c -#else -#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c -#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c -#endif - -#define TT_MS_LANGID_YIDDISH_GERMANY 0x043d -#define TT_MS_LANGID_MALAY_MALAYSIA 0x043e -#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083e -#define TT_MS_LANGID_KAZAK_KAZAKSTAN 0x043f -#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN /* Cyrillic*/ 0x0440 - /* alias declared in Windows 2000 */ -#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ - TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN - -#define TT_MS_LANGID_SWAHILI_KENYA 0x0441 -#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 -#define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443 -#define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843 -#define TT_MS_LANGID_TATAR_TATARSTAN 0x0444 -#define TT_MS_LANGID_BENGALI_INDIA 0x0445 -#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 -#define TT_MS_LANGID_PUNJABI_INDIA 0x0446 -#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 -#define TT_MS_LANGID_GUJARATI_INDIA 0x0447 -#define TT_MS_LANGID_ORIYA_INDIA 0x0448 -#define TT_MS_LANGID_TAMIL_INDIA 0x0449 -#define TT_MS_LANGID_TELUGU_INDIA 0x044a -#define TT_MS_LANGID_KANNADA_INDIA 0x044b -#define TT_MS_LANGID_MALAYALAM_INDIA 0x044c -#define TT_MS_LANGID_ASSAMESE_INDIA 0x044d -#define TT_MS_LANGID_MARATHI_INDIA 0x044e -#define TT_MS_LANGID_SANSKRIT_INDIA 0x044f -#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 -#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 -#define TT_MS_LANGID_TIBETAN_CHINA 0x0451 - /* Don't use the next constant! It has */ - /* (1) the wrong spelling (Dzonghka) */ - /* (2) Microsoft doesn't officially define it -- */ - /* at least it is not in the List of Local */ - /* ID Values. */ - /* (3) Dzongkha is not the same language as */ - /* Tibetan, so merging it is wrong anyway. */ - /* */ - /* TT_MS_LANGID_TIBETAN_BHUTAN is correct, BTW. */ -#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 - -#if 0 - /* the following used to be defined */ -#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 - /* ... but it was changed; */ -#else - /* So we will continue to #define it, but with the correct value */ -#define TT_MS_LANGID_TIBETAN_BHUTAN TT_MS_LANGID_DZONGHKA_BHUTAN -#endif - -#define TT_MS_LANGID_WELSH_WALES 0x0452 -#define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 -#define TT_MS_LANGID_LAO_LAOS 0x0454 -#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 -#define TT_MS_LANGID_GALICIAN_SPAIN 0x0456 -#define TT_MS_LANGID_KONKANI_INDIA 0x0457 -#define TT_MS_LANGID_MANIPURI_INDIA /* Bengali */ 0x0458 -#define TT_MS_LANGID_SINDHI_INDIA /* Arabic */ 0x0459 -#define TT_MS_LANGID_SINDHI_PAKISTAN 0x0859 - /* Missing a LCID for Sindhi in Devanagari script */ -#define TT_MS_LANGID_SYRIAC_SYRIA 0x045a -#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045b -#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045c -#define TT_MS_LANGID_INUKTITUT_CANADA 0x045d -#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045e -#define TT_MS_LANGID_TAMAZIGHT_MOROCCO /* Arabic */ 0x045f -#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085f - /* Missing a LCID for Tifinagh script */ -#define TT_MS_LANGID_KASHMIRI_PAKISTAN /* Arabic */ 0x0460 - /* Spelled this way by XPsp2 Platform SDK (2004-07-26) */ - /* script is yet unclear... might be Arabic, Nagari or Sharada */ -#define TT_MS_LANGID_KASHMIRI_SASIA 0x0860 - /* ... and aliased (by MS) for compatibility reasons. */ -#define TT_MS_LANGID_KASHMIRI_INDIA TT_MS_LANGID_KASHMIRI_SASIA -#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 -#define TT_MS_LANGID_NEPALI_INDIA 0x0861 -#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 -#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 -#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 -#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 - /* alias declared in Windows 2000 */ -#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES -#define TT_MS_LANGID_EDO_NIGERIA 0x0466 -#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 -#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 -#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 -#define TT_MS_LANGID_YORUBA_NIGERIA 0x046a -#define TT_MS_LANGID_QUECHUA_BOLIVIA 0x046b -#define TT_MS_LANGID_QUECHUA_ECUADOR 0x086b -#define TT_MS_LANGID_QUECHUA_PERU 0x0c6b -#define TT_MS_LANGID_SEPEDI_SOUTH_AFRICA 0x046c - /* Also spelled by XPsp2 Platform SDK (2004-07-26) */ -#define TT_MS_LANGID_SOTHO_SOUTHERN_SOUTH_AFRICA \ - TT_MS_LANGID_SEPEDI_SOUTH_AFRICA - /* language codes 0x046d, 0x046e and 0x046f are (still) unknown. */ -#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 -#define TT_MS_LANGID_KANURI_NIGERIA 0x0471 -#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 -#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 -#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 - /* also spelled in the `Passport SDK' list as: */ -#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA -#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 -#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 -#define TT_MS_LANGID_LATIN 0x0476 -#define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 - /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ - /* not written (but OTOH the peculiar writing system is worth */ - /* studying). */ -#define TT_MS_LANGID_YI_CHINA 0x0478 -#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 - /* language codes from 0x047a to 0x047f are (still) unknown. */ -#define TT_MS_LANGID_UIGHUR_CHINA 0x0480 -#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0481 - -#if 0 /* not deemed useful for fonts */ -#define TT_MS_LANGID_HUMAN_INTERFACE_DEVICE 0x04ff -#endif - - - /*************************************************************************/ - /* */ - /* Possible values of the `name' identifier field in the name records of */ - /* the TTF `name' table. These values are platform independent. */ - /* */ -#define TT_NAME_ID_COPYRIGHT 0 -#define TT_NAME_ID_FONT_FAMILY 1 -#define TT_NAME_ID_FONT_SUBFAMILY 2 -#define TT_NAME_ID_UNIQUE_ID 3 -#define TT_NAME_ID_FULL_NAME 4 -#define TT_NAME_ID_VERSION_STRING 5 -#define TT_NAME_ID_PS_NAME 6 -#define TT_NAME_ID_TRADEMARK 7 - - /* the following values are from the OpenType spec */ -#define TT_NAME_ID_MANUFACTURER 8 -#define TT_NAME_ID_DESIGNER 9 -#define TT_NAME_ID_DESCRIPTION 10 -#define TT_NAME_ID_VENDOR_URL 11 -#define TT_NAME_ID_DESIGNER_URL 12 -#define TT_NAME_ID_LICENSE 13 -#define TT_NAME_ID_LICENSE_URL 14 - /* number 15 is reserved */ -#define TT_NAME_ID_PREFERRED_FAMILY 16 -#define TT_NAME_ID_PREFERRED_SUBFAMILY 17 -#define TT_NAME_ID_MAC_FULL_NAME 18 - - /* The following code is new as of 2000-01-21 */ -#define TT_NAME_ID_SAMPLE_TEXT 19 - - /* This is new in OpenType 1.3 */ -#define TT_NAME_ID_CID_FINDFONT_NAME 20 - - /* This is new in OpenType 1.5 */ -#define TT_NAME_ID_WWS_FAMILY 21 -#define TT_NAME_ID_WWS_SUBFAMILY 22 - - - /*************************************************************************/ - /* */ - /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ - /* */ - /* Updated 08-Nov-2008. */ - /* */ - - /* Bit 0 Basic Latin */ -#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ - /* Bit 1 C1 Controls and Latin-1 Supplement */ -#define TT_UCR_LATIN1_SUPPLEMENT (1L << 1) /* U+0080-U+00FF */ - /* Bit 2 Latin Extended-A */ -#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ - /* Bit 3 Latin Extended-B */ -#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ - /* Bit 4 IPA Extensions */ - /* Phonetic Extensions */ - /* Phonetic Extensions Supplement */ -#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ - /* U+1D00-U+1D7F */ - /* U+1D80-U+1DBF */ - /* Bit 5 Spacing Modifier Letters */ - /* Modifier Tone Letters */ -#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ - /* U+A700-U+A71F */ - /* Bit 6 Combining Diacritical Marks */ - /* Combining Diacritical Marks Supplement */ -#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ - /* U+1DC0-U+1DFF */ - /* Bit 7 Greek and Coptic */ -#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ - /* Bit 8 Coptic */ -#define TT_UCR_COPTIC (1L << 8) /* U+2C80-U+2CFF */ - /* Bit 9 Cyrillic */ - /* Cyrillic Supplement */ - /* Cyrillic Extended-A */ - /* Cyrillic Extended-B */ -#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ - /* U+0500-U+052F */ - /* U+2DE0-U+2DFF */ - /* U+A640-U+A69F */ - /* Bit 10 Armenian */ -#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ - /* Bit 11 Hebrew */ -#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ - /* Bit 12 Vai */ -#define TT_UCR_VAI (1L << 12) /* U+A500-U+A63F */ - /* Bit 13 Arabic */ - /* Arabic Supplement */ -#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ - /* U+0750-U+077F */ - /* Bit 14 NKo */ -#define TT_UCR_NKO (1L << 14) /* U+07C0-U+07FF */ - /* Bit 15 Devanagari */ -#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ - /* Bit 16 Bengali */ -#define TT_UCR_BENGALI (1L << 16) /* U+0980-U+09FF */ - /* Bit 17 Gurmukhi */ -#define TT_UCR_GURMUKHI (1L << 17) /* U+0A00-U+0A7F */ - /* Bit 18 Gujarati */ -#define TT_UCR_GUJARATI (1L << 18) /* U+0A80-U+0AFF */ - /* Bit 19 Oriya */ -#define TT_UCR_ORIYA (1L << 19) /* U+0B00-U+0B7F */ - /* Bit 20 Tamil */ -#define TT_UCR_TAMIL (1L << 20) /* U+0B80-U+0BFF */ - /* Bit 21 Telugu */ -#define TT_UCR_TELUGU (1L << 21) /* U+0C00-U+0C7F */ - /* Bit 22 Kannada */ -#define TT_UCR_KANNADA (1L << 22) /* U+0C80-U+0CFF */ - /* Bit 23 Malayalam */ -#define TT_UCR_MALAYALAM (1L << 23) /* U+0D00-U+0D7F */ - /* Bit 24 Thai */ -#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ - /* Bit 25 Lao */ -#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ - /* Bit 26 Georgian */ - /* Georgian Supplement */ -#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ - /* U+2D00-U+2D2F */ - /* Bit 27 Balinese */ -#define TT_UCR_BALINESE (1L << 27) /* U+1B00-U+1B7F */ - /* Bit 28 Hangul Jamo */ -#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ - /* Bit 29 Latin Extended Additional */ - /* Latin Extended-C */ - /* Latin Extended-D */ -#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ - /* U+2C60-U+2C7F */ - /* U+A720-U+A7FF */ - /* Bit 30 Greek Extended */ -#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ - /* Bit 31 General Punctuation */ - /* Supplemental Punctuation */ -#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ - /* U+2E00-U+2E7F */ - /* Bit 32 Superscripts And Subscripts */ -#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ - /* Bit 33 Currency Symbols */ -#define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ - /* Bit 34 Combining Diacritical Marks For Symbols */ -#define TT_UCR_COMBINING_DIACRITICS_SYMB (1L << 2) /* U+20D0-U+20FF */ - /* Bit 35 Letterlike Symbols */ -#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ - /* Bit 36 Number Forms */ -#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ - /* Bit 37 Arrows */ - /* Supplemental Arrows-A */ - /* Supplemental Arrows-B */ - /* Miscellaneous Symbols and Arrows */ -#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ - /* U+27F0-U+27FF */ - /* U+2900-U+297F */ - /* U+2B00-U+2BFF */ - /* Bit 38 Mathematical Operators */ - /* Supplemental Mathematical Operators */ - /* Miscellaneous Mathematical Symbols-A */ - /* Miscellaneous Mathematical Symbols-B */ -#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ - /* U+2A00-U+2AFF */ - /* U+27C0-U+27EF */ - /* U+2980-U+29FF */ - /* Bit 39 Miscellaneous Technical */ -#define TT_UCR_MISCELLANEOUS_TECHNICAL (1L << 7) /* U+2300-U+23FF */ - /* Bit 40 Control Pictures */ -#define TT_UCR_CONTROL_PICTURES (1L << 8) /* U+2400-U+243F */ - /* Bit 41 Optical Character Recognition */ -#define TT_UCR_OCR (1L << 9) /* U+2440-U+245F */ - /* Bit 42 Enclosed Alphanumerics */ -#define TT_UCR_ENCLOSED_ALPHANUMERICS (1L << 10) /* U+2460-U+24FF */ - /* Bit 43 Box Drawing */ -#define TT_UCR_BOX_DRAWING (1L << 11) /* U+2500-U+257F */ - /* Bit 44 Block Elements */ -#define TT_UCR_BLOCK_ELEMENTS (1L << 12) /* U+2580-U+259F */ - /* Bit 45 Geometric Shapes */ -#define TT_UCR_GEOMETRIC_SHAPES (1L << 13) /* U+25A0-U+25FF */ - /* Bit 46 Miscellaneous Symbols */ -#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ - /* Bit 47 Dingbats */ -#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ - /* Bit 48 CJK Symbols and Punctuation */ -#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ - /* Bit 49 Hiragana */ -#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ - /* Bit 50 Katakana */ - /* Katakana Phonetic Extensions */ -#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ - /* U+31F0-U+31FF */ - /* Bit 51 Bopomofo */ - /* Bopomofo Extended */ -#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ - /* U+31A0-U+31BF */ - /* Bit 52 Hangul Compatibility Jamo */ -#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ - /* Bit 53 Phags-Pa */ -#define TT_UCR_CJK_MISC (1L << 21) /* U+A840-U+A87F */ -#define TT_UCR_KANBUN TT_UCR_CJK_MISC /* deprecated */ -#define TT_UCR_PHAGSPA - /* Bit 54 Enclosed CJK Letters and Months */ -#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ - /* Bit 55 CJK Compatibility */ -#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ - /* Bit 56 Hangul Syllables */ -#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ - /* Bit 57 High Surrogates */ - /* High Private Use Surrogates */ - /* Low Surrogates */ - /* */ - /* According to OpenType specs v.1.3+, */ - /* setting bit 57 implies that there is */ - /* at least one codepoint beyond the */ - /* Basic Multilingual Plane that is */ - /* supported by this font. So it really */ - /* means >= U+10000 */ -#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ - /* U+DB80-U+DBFF */ - /* U+DC00-U+DFFF */ -#define TT_UCR_NON_PLANE_0 TT_UCR_SURROGATES - /* Bit 58 Phoenician */ -#define TT_UCR_PHOENICIAN (1L << 26) /*U+10900-U+1091F*/ - /* Bit 59 CJK Unified Ideographs */ - /* CJK Radicals Supplement */ - /* Kangxi Radicals */ - /* Ideographic Description Characters */ - /* CJK Unified Ideographs Extension A */ - /* CJK Unified Ideographs Extension B */ - /* Kanbun */ -#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ - /* U+2E80-U+2EFF */ - /* U+2F00-U+2FDF */ - /* U+2FF0-U+2FFF */ - /* U+3400-U+4DB5 */ - /*U+20000-U+2A6DF*/ - /* U+3190-U+319F */ - /* Bit 60 Private Use */ -#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ - /* Bit 61 CJK Strokes */ - /* CJK Compatibility Ideographs */ - /* CJK Compatibility Ideographs Supplement */ -#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+31C0-U+31EF */ - /* U+F900-U+FAFF */ - /*U+2F800-U+2FA1F*/ - /* Bit 62 Alphabetic Presentation Forms */ -#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ - /* Bit 63 Arabic Presentation Forms-A */ -#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ - /* Bit 64 Combining Half Marks */ -#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ - /* Bit 65 Vertical forms */ - /* CJK Compatibility Forms */ -#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE10-U+FE1F */ - /* U+FE30-U+FE4F */ - /* Bit 66 Small Form Variants */ -#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ - /* Bit 67 Arabic Presentation Forms-B */ -#define TT_UCR_ARABIC_PRESENTATIONS_B (1L << 3) /* U+FE70-U+FEFE */ - /* Bit 68 Halfwidth and Fullwidth Forms */ -#define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ - /* Bit 69 Specials */ -#define TT_UCR_SPECIALS (1L << 5) /* U+FFF0-U+FFFD */ - /* Bit 70 Tibetan */ -#define TT_UCR_TIBETAN (1L << 6) /* U+0F00-U+0FFF */ - /* Bit 71 Syriac */ -#define TT_UCR_SYRIAC (1L << 7) /* U+0700-U+074F */ - /* Bit 72 Thaana */ -#define TT_UCR_THAANA (1L << 8) /* U+0780-U+07BF */ - /* Bit 73 Sinhala */ -#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ - /* Bit 74 Myanmar */ -#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ - /* Bit 75 Ethiopic */ - /* Ethiopic Supplement */ - /* Ethiopic Extended */ -#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ - /* U+1380-U+139F */ - /* U+2D80-U+2DDF */ - /* Bit 76 Cherokee */ -#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ - /* Bit 77 Unified Canadian Aboriginal Syllabics */ -#define TT_UCR_CANADIAN_ABORIGINAL_SYLLABICS (1L << 13) /* U+1400-U+167F */ - /* Bit 78 Ogham */ -#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ - /* Bit 79 Runic */ -#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ - /* Bit 80 Khmer */ - /* Khmer Symbols */ -#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ - /* U+19E0-U+19FF */ - /* Bit 81 Mongolian */ -#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ - /* Bit 82 Braille Patterns */ -#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ - /* Bit 83 Yi Syllables */ - /* Yi Radicals */ -#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ - /* U+A490-U+A4CF */ - /* Bit 84 Tagalog */ - /* Hanunoo */ - /* Buhid */ - /* Tagbanwa */ -#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ - /* U+1720-U+173F */ - /* U+1740-U+175F */ - /* U+1760-U+177F */ - /* Bit 85 Old Italic */ -#define TT_UCR_OLD_ITALIC (1L << 21) /*U+10300-U+1032F*/ - /* Bit 86 Gothic */ -#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ - /* Bit 87 Deseret */ -#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ - /* Bit 88 Byzantine Musical Symbols */ - /* Musical Symbols */ - /* Ancient Greek Musical Notation */ -#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ - /*U+1D100-U+1D1FF*/ - /*U+1D200-U+1D24F*/ - /* Bit 89 Mathematical Alphanumeric Symbols */ -#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ - /* Bit 90 Private Use (plane 15) */ - /* Private Use (plane 16) */ -#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ - /*U+100000-U+10FFFD*/ - /* Bit 91 Variation Selectors */ - /* Variation Selectors Supplement */ -#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ - /*U+E0100-U+E01EF*/ - /* Bit 92 Tags */ -#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ - /* Bit 93 Limbu */ -#define TT_UCR_LIMBU (1L << 29) /* U+1900-U+194F */ - /* Bit 94 Tai Le */ -#define TT_UCR_TAI_LE (1L << 30) /* U+1950-U+197F */ - /* Bit 95 New Tai Lue */ -#define TT_UCR_NEW_TAI_LUE (1L << 31) /* U+1980-U+19DF */ - /* Bit 96 Buginese */ -#define TT_UCR_BUGINESE (1L << 0) /* U+1A00-U+1A1F */ - /* Bit 97 Glagolitic */ -#define TT_UCR_GLAGOLITIC (1L << 1) /* U+2C00-U+2C5F */ - /* Bit 98 Tifinagh */ -#define TT_UCR_TIFINAGH (1L << 2) /* U+2D30-U+2D7F */ - /* Bit 99 Yijing Hexagram Symbols */ -#define TT_UCR_YIJING (1L << 3) /* U+4DC0-U+4DFF */ - /* Bit 100 Syloti Nagri */ -#define TT_UCR_SYLOTI_NAGRI (1L << 4) /* U+A800-U+A82F */ - /* Bit 101 Linear B Syllabary */ - /* Linear B Ideograms */ - /* Aegean Numbers */ -#define TT_UCR_LINEAR_B (1L << 5) /*U+10000-U+1007F*/ - /*U+10080-U+100FF*/ - /*U+10100-U+1013F*/ - /* Bit 102 Ancient Greek Numbers */ -#define TT_UCR_ANCIENT_GREEK_NUMBERS (1L << 6) /*U+10140-U+1018F*/ - /* Bit 103 Ugaritic */ -#define TT_UCR_UGARITIC (1L << 7) /*U+10380-U+1039F*/ - /* Bit 104 Old Persian */ -#define TT_UCR_OLD_PERSIAN (1L << 8) /*U+103A0-U+103DF*/ - /* Bit 105 Shavian */ -#define TT_UCR_SHAVIAN (1L << 9) /*U+10450-U+1047F*/ - /* Bit 106 Osmanya */ -#define TT_UCR_OSMANYA (1L << 10) /*U+10480-U+104AF*/ - /* Bit 107 Cypriot Syllabary */ -#define TT_UCR_CYPRIOT_SYLLABARY (1L << 11) /*U+10800-U+1083F*/ - /* Bit 108 Kharoshthi */ -#define TT_UCR_KHAROSHTHI (1L << 12) /*U+10A00-U+10A5F*/ - /* Bit 109 Tai Xuan Jing Symbols */ -#define TT_UCR_TAI_XUAN_JING (1L << 13) /*U+1D300-U+1D35F*/ - /* Bit 110 Cuneiform */ - /* Cuneiform Numbers and Punctuation */ -#define TT_UCR_CUNEIFORM (1L << 14) /*U+12000-U+123FF*/ - /*U+12400-U+1247F*/ - /* Bit 111 Counting Rod Numerals */ -#define TT_UCR_COUNTING_ROD_NUMERALS (1L << 15) /*U+1D360-U+1D37F*/ - /* Bit 112 Sundanese */ -#define TT_UCR_SUNDANESE (1L << 16) /* U+1B80-U+1BBF */ - /* Bit 113 Lepcha */ -#define TT_UCR_LEPCHA (1L << 17) /* U+1C00-U+1C4F */ - /* Bit 114 Ol Chiki */ -#define TT_UCR_OL_CHIKI (1L << 18) /* U+1C50-U+1C7F */ - /* Bit 115 Saurashtra */ -#define TT_UCR_SAURASHTRA (1L << 19) /* U+A880-U+A8DF */ - /* Bit 116 Kayah Li */ -#define TT_UCR_KAYAH_LI (1L << 20) /* U+A900-U+A92F */ - /* Bit 117 Rejang */ -#define TT_UCR_REJANG (1L << 21) /* U+A930-U+A95F */ - /* Bit 118 Cham */ -#define TT_UCR_CHAM (1L << 22) /* U+AA00-U+AA5F */ - /* Bit 119 Ancient Symbols */ -#define TT_UCR_ANCIENT_SYMBOLS (1L << 23) /*U+10190-U+101CF*/ - /* Bit 120 Phaistos Disc */ -#define TT_UCR_PHAISTOS_DISC (1L << 24) /*U+101D0-U+101FF*/ - /* Bit 121 Carian */ - /* Lycian */ - /* Lydian */ -#define TT_UCR_OLD_ANATOLIAN (1L << 25) /*U+102A0-U+102DF*/ - /*U+10280-U+1029F*/ - /*U+10920-U+1093F*/ - /* Bit 122 Domino Tiles */ - /* Mahjong Tiles */ -#define TT_UCR_GAME_TILES (1L << 26) /*U+1F030-U+1F09F*/ - /*U+1F000-U+1F02F*/ - /* Bit 123-127 Reserved for process-internal usage */ - - - /*************************************************************************/ - /* */ - /* Some compilers have a very limited length of identifiers. */ - /* */ -#if defined( __TURBOC__ ) && __TURBOC__ < 0x0410 || defined( __PACIFIC__ ) -#define HAVE_LIMIT_ON_IDENTS -#endif - - -#ifndef HAVE_LIMIT_ON_IDENTS - - - /*************************************************************************/ - /* */ - /* Here some alias #defines in order to be clearer. */ - /* */ - /* These are not always #defined to stay within the 31~character limit */ - /* which some compilers have. */ - /* */ - /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ - /* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ - /* If you get a warning with such a compiler, use the -i40 switch. */ - /* */ -#define TT_UCR_ARABIC_PRESENTATION_FORMS_A \ - TT_UCR_ARABIC_PRESENTATIONS_A -#define TT_UCR_ARABIC_PRESENTATION_FORMS_B \ - TT_UCR_ARABIC_PRESENTATIONS_B - -#define TT_UCR_COMBINING_DIACRITICAL_MARKS \ - TT_UCR_COMBINING_DIACRITICS -#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ - TT_UCR_COMBINING_DIACRITICS_SYMB - - -#endif /* !HAVE_LIMIT_ON_IDENTS */ - - -FT_END_HEADER - -#endif /* __TTNAMEID_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/tttables.h b/GRRLIB/lib/freetype/include/freetype/tttables.h deleted file mode 100644 index c12b172..0000000 --- a/GRRLIB/lib/freetype/include/freetype/tttables.h +++ /dev/null @@ -1,756 +0,0 @@ -/***************************************************************************/ -/* */ -/* tttables.h */ -/* */ -/* Basic SFNT/TrueType tables definitions and interface */ -/* (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004, 2005, 2008, 2009 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTTABLES_H__ -#define __TTTABLES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* truetype_tables */ - /* */ - /* <Title> */ - /* TrueType Tables */ - /* */ - /* <Abstract> */ - /* TrueType specific table types and functions. */ - /* */ - /* <Description> */ - /* This section contains the definition of TrueType-specific tables */ - /* as well as some routines used to access and process them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Header */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType font header table. All */ - /* fields follow the TrueType specification. */ - /* */ - typedef struct TT_Header_ - { - FT_Fixed Table_Version; - FT_Fixed Font_Revision; - - FT_Long CheckSum_Adjust; - FT_Long Magic_Number; - - FT_UShort Flags; - FT_UShort Units_Per_EM; - - FT_Long Created [2]; - FT_Long Modified[2]; - - FT_Short xMin; - FT_Short yMin; - FT_Short xMax; - FT_Short yMax; - - FT_UShort Mac_Style; - FT_UShort Lowest_Rec_PPEM; - - FT_Short Font_Direction; - FT_Short Index_To_Loc_Format; - FT_Short Glyph_Data_Format; - - } TT_Header; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_HoriHeader */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType horizontal header, the `hhea' */ - /* table, as well as the corresponding horizontal metrics table, */ - /* i.e., the `hmtx' table. */ - /* */ - /* <Fields> */ - /* Version :: The table version. */ - /* */ - /* Ascender :: The font's ascender, i.e., the distance */ - /* from the baseline to the top-most of all */ - /* glyph points found in the font. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of the */ - /* glyphs found in the font (maybe ASCII). */ - /* */ - /* You should use the `sTypoAscender' field */ - /* of the OS/2 table instead if you want */ - /* the correct one. */ - /* */ - /* Descender :: The font's descender, i.e., the distance */ - /* from the baseline to the bottom-most of */ - /* all glyph points found in the font. It */ - /* is negative. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of the */ - /* glyphs found in the font (maybe ASCII). */ - /* */ - /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Line_Gap :: The font's line gap, i.e., the distance */ - /* to add to the ascender and descender to */ - /* get the BTB, i.e., the */ - /* baseline-to-baseline distance for the */ - /* font. */ - /* */ - /* advance_Width_Max :: This field is the maximum of all advance */ - /* widths found in the font. It can be */ - /* used to compute the maximum width of an */ - /* arbitrary string of text. */ - /* */ - /* min_Left_Side_Bearing :: The minimum left side bearing of all */ - /* glyphs within the font. */ - /* */ - /* min_Right_Side_Bearing :: The minimum right side bearing of all */ - /* glyphs within the font. */ - /* */ - /* xMax_Extent :: The maximum horizontal extent (i.e., the */ - /* `width' of a glyph's bounding box) for */ - /* all glyphs in the font. */ - /* */ - /* caret_Slope_Rise :: The rise coefficient of the cursor's */ - /* slope of the cursor (slope=rise/run). */ - /* */ - /* caret_Slope_Run :: The run coefficient of the cursor's */ - /* slope. */ - /* */ - /* Reserved :: 8~reserved bytes. */ - /* */ - /* metric_Data_Format :: Always~0. */ - /* */ - /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ - /* table -- this value can be smaller than */ - /* the total number of glyphs in the font. */ - /* */ - /* long_metrics :: A pointer into the `hmtx' table. */ - /* */ - /* short_metrics :: A pointer into the `hmtx' table. */ - /* */ - /* <Note> */ - /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ - /* be identical except for the names of their fields which */ - /* are different. */ - /* */ - /* This ensures that a single function in the `ttload' */ - /* module is able to read both the horizontal and vertical */ - /* headers. */ - /* */ - typedef struct TT_HoriHeader_ - { - FT_Fixed Version; - FT_Short Ascender; - FT_Short Descender; - FT_Short Line_Gap; - - FT_UShort advance_Width_Max; /* advance width maximum */ - - FT_Short min_Left_Side_Bearing; /* minimum left-sb */ - FT_Short min_Right_Side_Bearing; /* minimum right-sb */ - FT_Short xMax_Extent; /* xmax extents */ - FT_Short caret_Slope_Rise; - FT_Short caret_Slope_Run; - FT_Short caret_Offset; - - FT_Short Reserved[4]; - - FT_Short metric_Data_Format; - FT_UShort number_Of_HMetrics; - - /* The following fields are not defined by the TrueType specification */ - /* but they are used to connect the metrics header to the relevant */ - /* `HMTX' table. */ - - void* long_metrics; - void* short_metrics; - - } TT_HoriHeader; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_VertHeader */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType vertical header, the `vhea' */ - /* table, as well as the corresponding vertical metrics table, i.e., */ - /* the `vmtx' table. */ - /* */ - /* <Fields> */ - /* Version :: The table version. */ - /* */ - /* Ascender :: The font's ascender, i.e., the distance */ - /* from the baseline to the top-most of */ - /* all glyph points found in the font. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of */ - /* the glyphs found in the font (maybe */ - /* ASCII). */ - /* */ - /* You should use the `sTypoAscender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Descender :: The font's descender, i.e., the */ - /* distance from the baseline to the */ - /* bottom-most of all glyph points found */ - /* in the font. It is negative. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of */ - /* the glyphs found in the font (maybe */ - /* ASCII). */ - /* */ - /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Line_Gap :: The font's line gap, i.e., the distance */ - /* to add to the ascender and descender to */ - /* get the BTB, i.e., the */ - /* baseline-to-baseline distance for the */ - /* font. */ - /* */ - /* advance_Height_Max :: This field is the maximum of all */ - /* advance heights found in the font. It */ - /* can be used to compute the maximum */ - /* height of an arbitrary string of text. */ - /* */ - /* min_Top_Side_Bearing :: The minimum top side bearing of all */ - /* glyphs within the font. */ - /* */ - /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ - /* glyphs within the font. */ - /* */ - /* yMax_Extent :: The maximum vertical extent (i.e., the */ - /* `height' of a glyph's bounding box) for */ - /* all glyphs in the font. */ - /* */ - /* caret_Slope_Rise :: The rise coefficient of the cursor's */ - /* slope of the cursor (slope=rise/run). */ - /* */ - /* caret_Slope_Run :: The run coefficient of the cursor's */ - /* slope. */ - /* */ - /* caret_Offset :: The cursor's offset for slanted fonts. */ - /* This value is `reserved' in vmtx */ - /* version 1.0. */ - /* */ - /* Reserved :: 8~reserved bytes. */ - /* */ - /* metric_Data_Format :: Always~0. */ - /* */ - /* number_Of_HMetrics :: Number of VMetrics entries in the */ - /* `vmtx' table -- this value can be */ - /* smaller than the total number of glyphs */ - /* in the font. */ - /* */ - /* long_metrics :: A pointer into the `vmtx' table. */ - /* */ - /* short_metrics :: A pointer into the `vmtx' table. */ - /* */ - /* <Note> */ - /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ - /* be identical except for the names of their fields which */ - /* are different. */ - /* */ - /* This ensures that a single function in the `ttload' */ - /* module is able to read both the horizontal and vertical */ - /* headers. */ - /* */ - typedef struct TT_VertHeader_ - { - FT_Fixed Version; - FT_Short Ascender; - FT_Short Descender; - FT_Short Line_Gap; - - FT_UShort advance_Height_Max; /* advance height maximum */ - - FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */ - FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */ - FT_Short yMax_Extent; /* xmax or ymax extents */ - FT_Short caret_Slope_Rise; - FT_Short caret_Slope_Run; - FT_Short caret_Offset; - - FT_Short Reserved[4]; - - FT_Short metric_Data_Format; - FT_UShort number_Of_VMetrics; - - /* The following fields are not defined by the TrueType specification */ - /* but they're used to connect the metrics header to the relevant */ - /* `HMTX' or `VMTX' table. */ - - void* long_metrics; - void* short_metrics; - - } TT_VertHeader; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_OS2 */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType OS/2 table. This is the long */ - /* table version. All fields comply to the TrueType specification. */ - /* */ - /* Note that we now support old Mac fonts which do not include an */ - /* OS/2 table. In this case, the `version' field is always set to */ - /* 0xFFFF. */ - /* */ - typedef struct TT_OS2_ - { - FT_UShort version; /* 0x0001 - more or 0xFFFF */ - FT_Short xAvgCharWidth; - FT_UShort usWeightClass; - FT_UShort usWidthClass; - FT_Short fsType; - FT_Short ySubscriptXSize; - FT_Short ySubscriptYSize; - FT_Short ySubscriptXOffset; - FT_Short ySubscriptYOffset; - FT_Short ySuperscriptXSize; - FT_Short ySuperscriptYSize; - FT_Short ySuperscriptXOffset; - FT_Short ySuperscriptYOffset; - FT_Short yStrikeoutSize; - FT_Short yStrikeoutPosition; - FT_Short sFamilyClass; - - FT_Byte panose[10]; - - FT_ULong ulUnicodeRange1; /* Bits 0-31 */ - FT_ULong ulUnicodeRange2; /* Bits 32-63 */ - FT_ULong ulUnicodeRange3; /* Bits 64-95 */ - FT_ULong ulUnicodeRange4; /* Bits 96-127 */ - - FT_Char achVendID[4]; - - FT_UShort fsSelection; - FT_UShort usFirstCharIndex; - FT_UShort usLastCharIndex; - FT_Short sTypoAscender; - FT_Short sTypoDescender; - FT_Short sTypoLineGap; - FT_UShort usWinAscent; - FT_UShort usWinDescent; - - /* only version 1 tables: */ - - FT_ULong ulCodePageRange1; /* Bits 0-31 */ - FT_ULong ulCodePageRange2; /* Bits 32-63 */ - - /* only version 2 tables: */ - - FT_Short sxHeight; - FT_Short sCapHeight; - FT_UShort usDefaultChar; - FT_UShort usBreakChar; - FT_UShort usMaxContext; - - } TT_OS2; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Postscript */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType PostScript table. All fields */ - /* comply to the TrueType specification. This structure does not */ - /* reference the PostScript glyph names, which can be nevertheless */ - /* accessed with the `ttpost' module. */ - /* */ - typedef struct TT_Postscript_ - { - FT_Fixed FormatType; - FT_Fixed italicAngle; - FT_Short underlinePosition; - FT_Short underlineThickness; - FT_ULong isFixedPitch; - FT_ULong minMemType42; - FT_ULong maxMemType42; - FT_ULong minMemType1; - FT_ULong maxMemType1; - - /* Glyph names follow in the file, but we don't */ - /* load them by default. See the ttpost.c file. */ - - } TT_Postscript; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_PCLT */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType PCLT table. All fields */ - /* comply to the TrueType specification. */ - /* */ - typedef struct TT_PCLT_ - { - FT_Fixed Version; - FT_ULong FontNumber; - FT_UShort Pitch; - FT_UShort xHeight; - FT_UShort Style; - FT_UShort TypeFamily; - FT_UShort CapHeight; - FT_UShort SymbolSet; - FT_Char TypeFace[16]; - FT_Char CharacterComplement[8]; - FT_Char FileName[6]; - FT_Char StrokeWeight; - FT_Char WidthType; - FT_Byte SerifStyle; - FT_Byte Reserved; - - } TT_PCLT; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_MaxProfile */ - /* */ - /* <Description> */ - /* The maximum profile is a table containing many max values which */ - /* can be used to pre-allocate arrays. This ensures that no memory */ - /* allocation occurs during a glyph load. */ - /* */ - /* <Fields> */ - /* version :: The version number. */ - /* */ - /* numGlyphs :: The number of glyphs in this TrueType */ - /* font. */ - /* */ - /* maxPoints :: The maximum number of points in a */ - /* non-composite TrueType glyph. See also */ - /* the structure element */ - /* `maxCompositePoints'. */ - /* */ - /* maxContours :: The maximum number of contours in a */ - /* non-composite TrueType glyph. See also */ - /* the structure element */ - /* `maxCompositeContours'. */ - /* */ - /* maxCompositePoints :: The maximum number of points in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxPoints'. */ - /* */ - /* maxCompositeContours :: The maximum number of contours in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxContours'. */ - /* */ - /* maxZones :: The maximum number of zones used for */ - /* glyph hinting. */ - /* */ - /* maxTwilightPoints :: The maximum number of points in the */ - /* twilight zone used for glyph hinting. */ - /* */ - /* maxStorage :: The maximum number of elements in the */ - /* storage area used for glyph hinting. */ - /* */ - /* maxFunctionDefs :: The maximum number of function */ - /* definitions in the TrueType bytecode for */ - /* this font. */ - /* */ - /* maxInstructionDefs :: The maximum number of instruction */ - /* definitions in the TrueType bytecode for */ - /* this font. */ - /* */ - /* maxStackElements :: The maximum number of stack elements used */ - /* during bytecode interpretation. */ - /* */ - /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ - /* used for glyph hinting. */ - /* */ - /* maxComponentElements :: The maximum number of simple (i.e., non- */ - /* composite) glyphs in a composite glyph. */ - /* */ - /* maxComponentDepth :: The maximum nesting depth of composite */ - /* glyphs. */ - /* */ - /* <Note> */ - /* This structure is only used during font loading. */ - /* */ - typedef struct TT_MaxProfile_ - { - FT_Fixed version; - FT_UShort numGlyphs; - FT_UShort maxPoints; - FT_UShort maxContours; - FT_UShort maxCompositePoints; - FT_UShort maxCompositeContours; - FT_UShort maxZones; - FT_UShort maxTwilightPoints; - FT_UShort maxStorage; - FT_UShort maxFunctionDefs; - FT_UShort maxInstructionDefs; - FT_UShort maxStackElements; - FT_UShort maxSizeOfInstructions; - FT_UShort maxComponentElements; - FT_UShort maxComponentDepth; - - } TT_MaxProfile; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Sfnt_Tag */ - /* */ - /* <Description> */ - /* An enumeration used to specify the index of an SFNT table. */ - /* Used in the @FT_Get_Sfnt_Table API function. */ - /* */ - typedef enum FT_Sfnt_Tag_ - { - ft_sfnt_head = 0, - ft_sfnt_maxp = 1, - ft_sfnt_os2 = 2, - ft_sfnt_hhea = 3, - ft_sfnt_vhea = 4, - ft_sfnt_post = 5, - ft_sfnt_pclt = 6, - - sfnt_max /* internal end mark */ - - } FT_Sfnt_Tag; - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Table */ - /* */ - /* <Description> */ - /* Return a pointer to a given SFNT table within a face. */ - /* */ - /* <Input> */ - /* face :: A handle to the source. */ - /* */ - /* tag :: The index of the SFNT table. */ - /* */ - /* <Return> */ - /* A type-less pointer to the table. This will be~0 in case of */ - /* error, or if the corresponding table was not found *OR* loaded */ - /* from the file. */ - /* */ - /* <Note> */ - /* The table is owned by the face object and disappears with it. */ - /* */ - /* This function is only useful to access SFNT tables that are loaded */ - /* by the sfnt, truetype, and opentype drivers. See @FT_Sfnt_Tag for */ - /* a list. */ - /* */ - FT_EXPORT( void* ) - FT_Get_Sfnt_Table( FT_Face face, - FT_Sfnt_Tag tag ); - - - /************************************************************************** - * - * @function: - * FT_Load_Sfnt_Table - * - * @description: - * Load any font table into client memory. - * - * @input: - * face :: - * A handle to the source face. - * - * tag :: - * The four-byte tag of the table to load. Use the value~0 if you want - * to access the whole font file. Otherwise, you can use one of the - * definitions found in the @FT_TRUETYPE_TAGS_H file, or forge a new - * one with @FT_MAKE_TAG. - * - * offset :: - * The starting offset in the table (or file if tag == 0). - * - * @output: - * buffer :: - * The target buffer address. The client must ensure that the memory - * array is big enough to hold the data. - * - * @inout: - * length :: - * If the `length' parameter is NULL, then try to load the whole table. - * Return an error code if it fails. - * - * Else, if `*length' is~0, exit immediately while returning the - * table's (or file) full size in it. - * - * Else the number of bytes to read from the table or file, from the - * starting offset. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * If you need to determine the table's length you should first call this - * function with `*length' set to~0, as in the following example: - * - * { - * FT_ULong length = 0; - * - * - * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); - * if ( error ) { ... table does not exist ... } - * - * buffer = malloc( length ); - * if ( buffer == NULL ) { ... not enough memory ... } - * - * error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length ); - * if ( error ) { ... could not load table ... } - * } - */ - FT_EXPORT( FT_Error ) - FT_Load_Sfnt_Table( FT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ); - - - /************************************************************************** - * - * @function: - * FT_Sfnt_Table_Info - * - * @description: - * Return information on an SFNT table. - * - * @input: - * face :: - * A handle to the source face. - * - * table_index :: - * The index of an SFNT table. The function returns - * FT_Err_Table_Missing for an invalid value. - * - * @output: - * tag :: - * The name tag of the SFNT table. - * - * length :: - * The length of the SFNT table. - * - * @return: - * FreeType error code. 0~means success. - * - * @note: - * SFNT tables with length zero are treated as missing. - * - */ - FT_EXPORT( FT_Error ) - FT_Sfnt_Table_Info( FT_Face face, - FT_UInt table_index, - FT_ULong *tag, - FT_ULong *length ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_CMap_Language_ID */ - /* */ - /* <Description> */ - /* Return TrueType/sfnt specific cmap language ID. Definitions of */ - /* language ID values are in `freetype/ttnameid.h'. */ - /* */ - /* <Input> */ - /* charmap :: */ - /* The target charmap. */ - /* */ - /* <Return> */ - /* The language ID of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, just return~0 as the default value. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_CMap_Language_ID( FT_CharMap charmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_CMap_Format */ - /* */ - /* <Description> */ - /* Return TrueType/sfnt specific cmap format. */ - /* */ - /* <Input> */ - /* charmap :: */ - /* The target charmap. */ - /* */ - /* <Return> */ - /* The format of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, return -1. */ - /* */ - FT_EXPORT( FT_Long ) - FT_Get_CMap_Format( FT_CharMap charmap ); - - /* */ - - -FT_END_HEADER - -#endif /* __TTTABLES_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/tttags.h b/GRRLIB/lib/freetype/include/freetype/tttags.h deleted file mode 100644 index 307ce4b..0000000 --- a/GRRLIB/lib/freetype/include/freetype/tttags.h +++ /dev/null @@ -1,107 +0,0 @@ -/***************************************************************************/ -/* */ -/* tttags.h */ -/* */ -/* Tags for TrueType and OpenType tables (specification only). */ -/* */ -/* Copyright 1996-2001, 2004, 2005, 2007, 2008 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTAGS_H__ -#define __TTAGS_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - -#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' ) -#define TTAG_BASE FT_MAKE_TAG( 'B', 'A', 'S', 'E' ) -#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' ) -#define TTAG_BDF FT_MAKE_TAG( 'B', 'D', 'F', ' ' ) -#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' ) -#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) -#define TTAG_bsln FT_MAKE_TAG( 'b', 's', 'l', 'n' ) -#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) -#define TTAG_CID FT_MAKE_TAG( 'C', 'I', 'D', ' ' ) -#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) -#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) -#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) -#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' ) -#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' ) -#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) -#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) -#define TTAG_feat FT_MAKE_TAG( 'f', 'e', 'a', 't' ) -#define TTAG_FOND FT_MAKE_TAG( 'F', 'O', 'N', 'D' ) -#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) -#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) -#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) -#define TTAG_GDEF FT_MAKE_TAG( 'G', 'D', 'E', 'F' ) -#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' ) -#define TTAG_GPOS FT_MAKE_TAG( 'G', 'P', 'O', 'S' ) -#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' ) -#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' ) -#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' ) -#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) -#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) -#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' ) -#define TTAG_JSTF FT_MAKE_TAG( 'J', 'S', 'T', 'F' ) -#define TTAG_just FT_MAKE_TAG( 'j', 'u', 's', 't' ) -#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' ) -#define TTAG_lcar FT_MAKE_TAG( 'l', 'c', 'a', 'r' ) -#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) -#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) -#define TTAG_LWFN FT_MAKE_TAG( 'L', 'W', 'F', 'N' ) -#define TTAG_MATH FT_MAKE_TAG( 'M', 'A', 'T', 'H' ) -#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) -#define TTAG_META FT_MAKE_TAG( 'M', 'E', 'T', 'A' ) -#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) -#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' ) -#define TTAG_mort FT_MAKE_TAG( 'm', 'o', 'r', 't' ) -#define TTAG_morx FT_MAKE_TAG( 'm', 'o', 'r', 'x' ) -#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' ) -#define TTAG_opbd FT_MAKE_TAG( 'o', 'p', 'b', 'd' ) -#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) -#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) -#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) -#define TTAG_POST FT_MAKE_TAG( 'P', 'O', 'S', 'T' ) -#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) -#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) -#define TTAG_prop FT_MAKE_TAG( 'p', 'r', 'o', 'p' ) -#define TTAG_sfnt FT_MAKE_TAG( 's', 'f', 'n', 't' ) -#define TTAG_SING FT_MAKE_TAG( 'S', 'I', 'N', 'G' ) -#define TTAG_trak FT_MAKE_TAG( 't', 'r', 'a', 'k' ) -#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) -#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) -#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) -#define TTAG_TYP1 FT_MAKE_TAG( 'T', 'Y', 'P', '1' ) -#define TTAG_typ1 FT_MAKE_TAG( 't', 'y', 'p', '1' ) -#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) -#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) -#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) - - -FT_END_HEADER - -#endif /* __TTAGS_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/freetype/ttunpat.h b/GRRLIB/lib/freetype/include/freetype/ttunpat.h deleted file mode 100644 index a016275..0000000 --- a/GRRLIB/lib/freetype/include/freetype/ttunpat.h +++ /dev/null @@ -1,59 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttunpat.h */ -/* */ -/* Definitions for the unpatented TrueType hinting system */ -/* */ -/* Copyright 2003, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* Written by Graham Asher <graham.asher@btinternet.com> */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTUNPAT_H__ -#define __TTUNPAT_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_UNPATENTED_HINTING - * - * @description: - * A constant used as the tag of an @FT_Parameter structure to indicate - * that unpatented methods only should be used by the TrueType bytecode - * interpreter for a typeface opened by @FT_Open_Face. - * - */ -#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) - - /* */ - -FT_END_HEADER - - -#endif /* __TTUNPAT_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/include/ft2build.h b/GRRLIB/lib/freetype/include/ft2build.h deleted file mode 100644 index 6a3b8d9..0000000 --- a/GRRLIB/lib/freetype/include/ft2build.h +++ /dev/null @@ -1,61 +0,0 @@ -/***************************************************************************/ -/* */ -/* ft2build.h */ -/* */ -/* Build macros of the FreeType 2 library. */ -/* */ -/* Copyright 1996-2001, 2003, 2006 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This is a Unix-specific version of <ft2build.h> that should be used */ - /* exclusively *after* installation of the library. */ - /* */ - /* It assumes that `/usr/local/include/freetype2' (or whatever is */ - /* returned by the `freetype-config --cflags' or `pkg-config --cflags' */ - /* command) is in your compilation include path. */ - /* */ - /* We don't need to do anything special in this release. However, for */ - /* a future FreeType 2 release, the following installation changes will */ - /* be performed: */ - /* */ - /* - The contents of `freetype-2.x/include/freetype' will be installed */ - /* to `/usr/local/include/freetype2' instead of */ - /* `/usr/local/include/freetype2/freetype'. */ - /* */ - /* - This file will #include <freetype2/config/ftheader.h>, instead */ - /* of <freetype/config/ftheader.h>. */ - /* */ - /* - The contents of `ftheader.h' will be processed with `sed' to */ - /* replace all `<freetype/xxx>' with `<freetype2/xxx>'. */ - /* */ - /* - Adding `/usr/local/include/freetype2' to your compilation include */ - /* path will not be necessary anymore. */ - /* */ - /* These changes will be transparent to client applications which use */ - /* freetype-config (or pkg-config). No modifications will be necessary */ - /* to compile with the new scheme. */ - /* */ - /*************************************************************************/ - - -#ifndef __FT2_BUILD_UNIX_H__ -#define __FT2_BUILD_UNIX_H__ - - /* `<prefix>/include/freetype2' must be in your current inclusion path */ -#include <freetype/config/ftheader.h> - -#endif /* __FT2_BUILD_UNIX_H__ */ - - -/* END */ diff --git a/GRRLIB/lib/freetype/lib/wii/libfreetype.a b/GRRLIB/lib/freetype/lib/wii/libfreetype.a deleted file mode 100644 index a4a5b806086ca50a1a85f51dd90e14eac9fd9e62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 980206 zcmeFa4QyoBbtd?VtnMzVD>maWPG!uI%P}Jt-DQO>)1IP1sVFzqrrfkmtEq%Zdc&ef zc9S-nWJtD51!TJ3ren0RnxHinX4(t3%wRM|2hr?Ev+_WL)!OpF2;_+u5U^fB0~qVh zjAo&k7+D)|5@jr@_WRB~=hc0$UXg71XOcx4qWJE;=bn4+`Mc+yd*9=`hG*7h7w)>{ zSBmj}$M5*S2R?Ae&<8&_P%Pp<{PX``ELH{v?r=S7w**1v*Mi`kpKbp1e>@26r~FC~ z*v~)e34*`>`FkGx9o2!%Zg-IRa>@PtZ<9eL?dRJs2O0Z$`IR8^UwebhU);XuPsc6) zV-WlK+5b7{==n<e&#jLI9sKFL-TmD0V9;SdANnUj$B*OZpWPR9@aK!4ZT@@-WBxJd z{8#@z_LE(FdvNH3Z;O5okN=zC@E`qd^mAn7uHeYE|2sJH!atCoTxl(kpBKLr<PPw2 z%ZF|Y_WL>d3;#ZlpC|rFa8!Tt@A!{F>}UB;g8WbW=lj1D{LC%?y7i}gIQW@^{`~nL zoSd9Ky|FewbAI|0tMkhNiXWf<%=E|R&#$aK#M0=>^1Kz#ZcNY3KXBpP^y2d31{){W zW@hK7KQg~DePZRpa-!<vGw0_Cboboc^yvKAnF~uB(;r)zyRbCB&gy%CWBTOU{QTrY zs{$t@`4u0#ur#{(AYnPe-E$AlEYAw0R}@s^D>HM`A6a^6b%DV5ft0zEi<^8tF~7K^ zk0+N_R@U_S^lz_iy#EdYxG|<bzT&!Rm4ab(efrqU#@ga0p*I#+mxM7|b?@?n^J_Bm z1kCj5*_oyJIb!_P`Pq$?HF9ft{p`xxd9R6-U<|;4xw9*4%kyi~D{G7M%NsKriz~}s z?c)0M*`*m7Nv6t40~pdG(E0iE(=$s;E3+KWZ@+K;GmFbYMZ9)>e#82mg%Fb6D2!y? z38=}&{5_i+YctjrHEDyMSeT#v^u)^I@`lLAA6c4CUwA<3T3RR8=2vIdT1JKnwGgwi z`jC!*>95bPJ-7%}Tv}Y;n1-M~ePNX(J~*?qI5$Jyi^j%k)-DKln;`RRYb$FUM(u%| zZI);qO{-84YO4oxVrgZ4p5vaQF0L=FY)q54(+@0eoSzYbnhoH8YQ6B&S};7VQFwJ4 z=s1>`Nv!5HP(`{$kWXCLSXzYH3a?p_R6y3<H@{5%5lk$L5uI3=5f+F^;~7>uH!qen zPR^cOTn0yf$H|9Q|FN0X>66fCr<bJlBs_x90DeUUHaO-*RUE;2141i5@0*{Q8(&#I zm#8|uu;NTi!A^gAan%EvSP?z4#`*bAdyPcN;(ar-v-9ig;!4I)H@|l8^4XPS%jnF; z%qPyCg>VFA)ae4c5>~jN+Q><rR%STgrBlCqV`FA^0nAzwPH54Q7a;*Fg)YH(AKdMO z0xXCOD?AGDNQpZB(DKH@{5nRQrpsA`dx6=*FU`8?&o9BvfXz|Oee=H!x?@$R9gq!R z5LTupQ3axTv0?)5X-R5i918B#{Mz!O6BCPE20raq>M%q_#ixK3vldOiP;9E0Xp=b} zDS*Z7Oz4w~YnY0!pC6y!Y*tY12uFZlompF)S>A|LH?3`5S0tjhcJ1egUs;pcCfe3N zan?w%7M4-1osC>Be$AP20%B;>wkWa&db_bcySBKx5vx9Zb{Q<4dBACpm}R`GS;7cT zhlx%&Ha@d_?!wGDj6F(H?w;LPd=O4M66m=2Mm7HV$kv@RaAk_hFN=oWFH-b<2FBii z8q6%oI9TJG*6h^Ts~~x<+4VY0OMyzCmvCVE9GcaG6B!L_eDQ&`85e=*Bb?aUI+sL1 zh?RICBzaUKlQGPX5FBxG?Scds)AuZ&qdSy9gNC$m;Q@??^_HqmgIXssQT3`QysKAK zwqQjJHy1lPKf7{%m2Mx9R>=wY+_8EgJFP+W+~7`NZS(P&O<21~`@<{Zm#t0~0K^9| zLhhS~r-;+$MCfBDwhy}%%9}&#f^yIK2UeEmT$pGBv->B!hy^(A-k4dI=<4p}b4&Bn zql;(Ha=;VLPwQfIa&6^2Okk<G;D}y};Y86Skw?|U;Vl$*%W|j{lWPx|r`H;ZQ)V|# zu4x!*)zsQ#<$Z9AGwbuNntF+7>bIlF#(HipwqOH&<_{DKHOb}5s>bi}W`Ih!(8TK! zs~@0P6YI%&CI)4djM@U&G6q3YQJ!3!Uz&3($)Xt9<c$1Maow*WzZUOXL4Yc{rWND! z%jY&E{?-Z+Etf~*=bFZfTAp(u8d<%*u@*1Qu0AAVi|e^}8NNYe?TU~ehX$I3#d8a* zE1z+yW^w2z@3tpQ)gC|TJzLP`EAWTan!xYr509Rdb%q|oc~PsKSX)^IDPo(>VkG>A zT58D*SBt*6L=e$_L2JyoqmXX;6Q5c343dMNxOWsT`5Z#9wTEDA2wt%IPM^N8y1F!f z9(x7qkip%%9{HZ7hotAJ`G?#-#6ZOK+<Fu(l59J9nl5ts<kHN!XsQ3m%(_Ib4~U0w zk?r*C(hTAuNMJ=H&2tQRwVJd@(YPUQPpXX0W<daBzQ*+xQcWlhXvJfSx%Q7tP5-Kk z@kJNCYLoH_lDas{h$RN<*Bh*@G+0i?XR(D`f~pzGvh|z(*vz_L_c5Rp2rfV$`xw@s z^~H0`aC9qca|o3;+)kH`fZL-LT|c~pc)VTD)JE<|L|#4zqDq^SgekHSFy>5vF5Q?( zBgngdc~vUs=f<#S^CG*6llS=%C8ffuMEu7pZ+q?;7HoHMZvMkyhvTHzgvWRr9O%lY zbw}$wy%a&7x=1ND_p=6X24v-Nto4%;*;~ztmF30RMAd}{l2spufh}X92Y<wmS?_z6 z=Td6H3O6lTtDN7|381O9@}A9AY+{<6h_Fk&Kf?*clk>_b(LPas2cIlA@rl`Rk2w8_ z2bLBQ_(z~p>AND4;%V&L5NBEdIX1ICJ#pF#QX>a|T7jHclSop~LJfXxarxxOC#T(3 z$||RhA9ujIC)_~72;Cr5=P_8;OwhTtnbiesUEuub%_p%#yRZy(;S=L0$ZP`vez0*o zj$-!g+38ts8|Ig1S72o49O~({`Pm?9y8wBw%*`j7;-nm(U7U-fUOfvsiCTyijI7c< zmPM#heH`839dTsHx-gE90j<s|?T#BP#@Zj4i?y>DYX|#C-+)J;R^8EBHP~A9!Pcru zYt``-{Kr!UIR5^WzW%7|WPpbFZpJg1(1r8oADY%}PgIM*b#b|+cJ@=BZmGkzd2zO- z_MF(r0-V=6M_8R+b;&0T*wVB<e~xSBdXUyQKX(pJ8!a;zHdf9qZou1{-~+9SPib`> zVF-tv!D9SSu)59?I>qLVl@e;cJU6p8H@)VT5LCIR<4`DOVj?4nT0W4{0<(E&-NUhd zer082Aq7wymS!<x3;t%~gUQyDlP9psEn^G0hLjK!X<Q_*)`RIxJuEQ~<mA>0DtQEg za)Z|n)NOW}qp1IGR@^tgF3HK+>17)69C8?ID-61P5GG7WnM7zOkiZ4x{mX0f+-Wr7 zbh|54NU4wLb!LyOjrt5h!VUEasWXzBH4d?`<$)Q*7t@R9x$8bVbAAy~m*Wo^;Wy4E z@ZZZW@d3Ol9f4H0)JkfZfrqwDr(n^#7DCq%$+e?X+LC0RMxYwU->mV7Ojdd{vME8L zR~6x~%^hQykNgf&e6WP2-}#Iz5K#g*s+ePj+J{(Ewek8`6kx|2<G=B1u+ZrZCRe7< zURXxv3`Jy|vBS_Z)|&?|EMk-ERm@?N->jH9d%mShbJ>9R017EbCNJs$Lz|77<~O;K z@cpOunZ2;SfqijnkJcq^b$#Z-X57!Lt}kP^yB@DRyRrTdqSo`bueft~J$?VcKN>0) zKQM3{2km#r@%!<Cfe#K2qBO|=^Iz?ji}#G5%yeXe=wBwlDSO~mWG_kEp!~lS91U`h zzN_)dR<7eqS298G=l?9|*{UAhymB$fUHM{=ufH?MZ*_KVjseG3?H!wZ9=aG5>PLg@ zR<83)zxU^j*S2SVbMxc%pa?uS6i*-U^!j+Nd^PC4@|~au_`2&CF-EopXR!^=_Ox9L z@}z4IdQ$s>hTK+H=VraDIXBh~6@y^wXy@i5$7J4qIh$w?_89X8<-s6$P*xrkz{_6n zpa>rH0awAszk+e4jB&$b^4xpzb3t(TW8m>SgI@3|M_yHSgMf2Ixmc;=_g8`EJ3%fX zmw`4sd`W34gQh;8CXW3p^&l8|EXY@apagu+V~pNmsK)^64ZqTv^I$V*+aZ0RCjfmN zgk{<K$Q(IW$J49_>*j*Cu!{LLdCqdLmb*!tClle*oy8y+>d%ZT4E3qt>VlWFu7G(2 zs;8wk{AkhBN-gL%y8XFA4igx|*M)#(9n<th^h4{$y!ja1j@EGwIi>BU^xgQ{PVd$p z2!fBCIPsxkX>R_(PcLpvOq?jLxg=Tfc%{EMc>Cb($Ai1UnV&nid_nxd(QGD{$!CJw z*B?3$2aDeuYwq`gJpsea?Gn}Bj#Igr;PwZQMYw%!#TAf9m0ZT{z<B%2297ZvxWFCs zP5dhYmcHq*_JLRG{JK8#S5}|j;XUIqw}fs*JaplQ{Rx-H&uv=n#BcoTeAWGq{!du` zE8{1JpZ(yD1BQJ%@PmJXPy0xP(Km#W;U?S<@xONqg!`YheR!qO_{(N}_EtR8KifZp z`&m?Y<7DqZ`91@}Z-e7+rH!qJhtX8W18!jjKZ76A*Nq?Y$-{T#S(N`5{MbLkXJz{x z)n|jo_pOq@fh=m%vWH*VO(tv}1CfOPc|PN3Qp-g=@8D-x%OyO&gr5y9--&MHC_k!Y zJi31v?2tY4H_E0%QjPKvJbXe5_#c^of4}N}Mdja0lxGv=PbJE$iSmP>?*@Ll-{$7` z`-%4dDN%j|;`$!yb`<`Lp!{K!D^iXY{#nLJE*HwpMKce3mgm=OLz;$JSjI`Sc8Kj) zF0KUU9fGL0bXDMWp1A^<J8C`c-6uJVj499A=a=N1h&%h{DY_&EwJ0;|gPKv-_-``^ z-eS+tuea(m#olet*Ms0^?HMp{)8~%2LuFNd9sdB&YF8b-Fb{))-dNv`38<3QZ+P|4 z=?>tb&UE~1`~Z(U|2tPt-Rk%gSI_6pT$BFJ4=N1k?fj6!@cE-!kMTQklaV;7!=2C_ zjz#_Ld_e2@eBI`Lc0(@TSQuB_FOI8xP%lv)D2~e%Fm@2YW8z;47JeA<*Y~i#=efRP zo#;-)W>H%O9dr#!!n}h1QT*q@6?|MjfrX}JjrlRGEnG9Ge5zN%sRfknpXylfE>sW> zE<^r7hOvKa<G=UdCx@T?;JCI}A3TbGdp95SpS67;z7_;uMf(BPg5duI+&zX2zYQOM z!%f=1jyj%p@k5&F3pro9!Ngk7Sw!7k__2S6&&u{Ysz1P5;L#xrGoA@96pZ&)rY}FL z1NEwJ{6&;u|3ROY$=4D5l+;%`;}TbSvzOe?B6+pA5gF#bmU+hqZf1woL66?F%zV%V z%S?^HhXFQ#A4Z&G47eE`x}8aYh_B%9k^sZqSPt-6i%<>LMdgjJ!|K~bys6`3Oxe{L zJ}<gIg0?Y6o%JsU1rJVkgoHz6%$=M>`)KEG#dbB~UDyY8vU|K)x`<21@OMkXC-Oyb z>)4)`N}W5{`{VofQwy;fc>fsV>>wzD3AA9(8)mjV#+XGWBkd;uvxFb6w(L*1JbrG| zvRZcLNtFG6<}J#o%;9H0IIO;cUp<H58}|?zeT>NM8IN6D1z*As>7y4h`smS&20p%q z|GgVO_Rrcr68FL#?*zaByl}_+0f+Y-qJM^uzdi4l1@Ag&;z#jA&rABc^;vm>QgC<& zaBt<4{xf`5w%<|x0lct>Uj*RsP0Hk#Mp3~y5VIWpLualU(La<a$A4%QoCN;8&;4?f z!ZRXv_fOjqF~!O=iSk;a{CkP=KTDLaC(8deQU23J`9`ArSMhR2$u#;i{fYLIiSk^c z{Fy}gVJ+9)s+IZYiT0;ZuH)ybw*R|C`wNNkcM|2lfG$(#=d^z#)~*YiE{g67w>#KC zmNRj<m3B}UKfOvnaf`zo^cXGHtL309<>bj7=fpFkZ4YbOpUnK&&sz?f#l?wun~U_U z{+L{(!+`(}bQ9O=<6AD4yo+=G4h)^8$eRPPJNX7r)xd7*koo*u@oYW-p+~RT{?#D3 z)t;XVf_K{Uw}YT)&p!x)cj$9wA_#uTo~Jw*4A*7;3FF*i&+r>Z?KzL-!=7P#KV#4E zxo@#&==WRgxfhmc&qeI??70uSM|&<It7Xq+xNmzNz%J3A2ZP}4_FM^qU$AHJp<vG= zLGX+AJPOvy^Vtm?3C*|0iWTJG)3WhHcf9`tZXb7mY<y+_^TR(-hkqrktc(?#8RV}8 zCG5!BWs&<PgClQD28Zv`Scw^2ZcShCVzDW<X?C{{ZBL^O{SN<?_9^<X8c+5x)&y*C zN?SMEI1Xb*z({s<GU)zLh|KN9Z*(vto3rv(S4WS<sN8WPmdqnlJc52M?u14X9)ijc zA8;^3T0{nX<nEoub&jJu)n;b<PaCiLyU`fG+VjfKa=#nnzlw1zUhNhdk!_c8ugUzF z4gQt~Q#0P^?=$2B+VjfChe<c&@fGDa<Kf~~@Yz+=Q9c>SV1e+AU%`i7@F9Z?ezD#_ zM!u`_OCPUi-^CLa@&Ry`X)h{#pTVDMy#8l|1AT)EcLcGx><v(7@G<<T7k;<!GJbmV zjGhvVL+3{Il%Rx@i!x3w25@pQc%>0kO!gSNq;sV{fTtq+lJbXo(i2vLGT;WN2Pk)I zxrcln*$Mhk?nZmr$y?xAcI}ZIGS8xJz#9uXp1F>?60_>a@Hb`S%9M@lN7x6vSq1E1 zLN<d5*^C3G0A80Mn=(#U1|XY3$fnXxHg`XkF*$ks&vbkI!I;4%rGY%+p6Yv~rH0TH zG!7~(ZS6|vc$FuwNC)?RpkvTv2Y4Hg_PhZ+d9}03cE9i*<3)B&+co}7DxXGyi+oAe zk6b}yN_=XE`LHVbG@y34fPT3eY!NV`m$LW6GwO>{@Ay_RzMX3P@J{cva11g^J1vZ5 zn<Csh;&*s*f(^<?dj^7f06yM|v3kj`T321@*b2rbSic2-r+OXBQo%1A5Pzc)$KPm> zmLCB>br?QSXzp>if*1Co^(EL`bTX%U(LIcWhswQx-?S&et@dPc5_`G(n%EP^%aeA6 z&&&8~e|YYm3|{?Rv?-0>`-<XMf793{jPkRT@Uzc>#^I!20DNgO$le7!+^ggH5}%8B zE^9q?5zkUz2&)3uyVaF>5pbN7?(wC}IT607?KzZ*3%**~yHWP%WIV{JPsw9J=gDM_ zJOnI!yYoH30eiW0S8HAUR?tB_j&}~8bV-?bp<}mA2LJCHiM|7b(UZNP4j(1$dfJJc z$4G*IFQl#I<^#~5GUoic@vLiL03Ep4s0ED%=JYUNi-4gYfE;tfgvT@HCC}tb?_}^+ zp>w;~$+aYjuNW$R)e-3r8|M0}{RJ0gfOWai(D6(^E^|CvM-uaU>GOYx8w6hqik>dZ zEdrkY6CZgM9&^4%eNtdCgSKS_zw_f+^=r}(J|wtU|DMX?uiv=%N8<Bj?f(2X1ZOvK zeEyGvEb~pj_s5MN{9bFU@SLu3qwREA{WaxZ1}*e~5<lU&gmtIR-^vrLb#JV07dtk$ zx&qo;34JJ=GV2tkoPa4S%zy`j^)ZHL05B!$MJ@PpmgB>=Yp5$H>c&ww0DbSM1^?<h z3RkIvX3k;cTEMYND3`bUGcU4!D|pMQ@)Tos(*7`~;ELC0GrTDCC|4lo?b+Yl-0nNI zxpk;>^Hk%tjOr@a5W$81J>YeI2zJm4|N8fVt2?Z^wIqS-FE!TT_>qp29^iJmwj(-I zg6+LPdq#ap^=_oideV%WQ{q7Mx11tnD?Y}PEpm#P0m7)<;BR6wq2D46y`J3Q!(uSK z3RCo8;KyPxv_H9_;K_Cbb#85I%A2}ZR5?l?lzUZ<z$vn09<=7cje*~!v$s_i|Lq=6 z7R9(Mez>TzAU<Cfl(R33f+vfD`G7XEh^=S5{Q_Ju{zGpw3I3D6<Ujpx8vj{u{Fmpg zqu^}~_IFh5PsTw1Zo=Vr9>2Sf)pN9;N(eo~nB5q21mzOSghRZQdGXFztRd?Z<Nq`4 zuWJ}->z?eobQk-m9P*P#r40X+c~R{Oby>nl-JLbYFu$QO%%!`$wWvpA>vX)^<7>OM z_j&bO!|+>!{u+$2=#MzpG=Ic;^GEWW(8n^{g_g&H9$RaGkFni#!HGSLwiC8A*;T)l zedtR#ABp!_?&|!f+HckRp-ed;CXhAOVq?ll`lG!7|IrQqQGm{N$My1Wo`TNygjJDK zIo|f_msMve7ukbhKS6mSZj1bd-L$E+)6wWwRD8{n+giY-`kHwf&%NXUV*V#t@2z8U zTZwDa_PgOH?N;0GzGKsa<C<o0xfmR8)ZHra3Hg+UHyeX*k2fEKYvLtO3@>?QbnHbh z^~B)X(My;#ynE5><84Q;&=_JpA&+qrFCZ-_%i4~z@Dk;`wi~>}2)wyRA65$_50c|= z#sZQ2TjPP|xmZF6Fs`37IE?kd#i`90M&=LP@wv3h$lzLe8GMg%17*}r{n9)Q#tNR{ z_+ndK*gLu0NpwSPyQn!H$0PE@U`6M#hiwN-ei<zH7Lgn|50rD*d-BZB^<Ql2vB=^g z;M3c<zqMS=Ui@yxUtbF<ZDOzi^%tbIM83f8zJ+J;Q+R%X^_~ru`Rv;u_M!A&nJp&^ zgC(B~Hj+gI+q4<3d)9~gXMG~wj{3C6AL&E{+r&>>H~gHV;g4)G>J!ILSsCnJ^i!YG z@b5>zkAE-v1um>Q`&Sz+qii-Sd`8)9R_2IuUTrqbMw>BRtBp3}x;FXHI$|YHXDrV6 z0qWInOWwu&mH3o>bjDyg7xRU!{A<e8_p?6!Ryno$2gAP~&kNw8@swk*Y&^}T_`SVy zrqBCvgcsL~y<zXLt97EQ^ie2VY}_;1)%_uikJ#uJzM}g~!lB&#A@yek-ILOm<k`zD z5jHPz*iKLkp*JjB&Vuj?%f4xQ&^lo>{;VYSpiTdhlB-}26MZe-DdXAs7Z*DW(*MEF z*HDlAVDN&LCkzh$nSGoe+7Y_34~pPQXdBQzjBy6lr?Zdj$?kUJlpT!Zpb-aI|KJsa z({ZFf`j9`e57K_mv8>NeBStEPRpb)E!+4DJ7oS8M?Q#HZJ&Cptpk8#Aa)7)kU&+Bk zk7}_t&|J|x0NO^;mahX}N<Y%kY>W4k^?@{_udGp6mzy>p&qJr?nN)V1H}!%%BwySb z?f5GD6K(h7>mKEC59niG#H>+Hi1HF06<M|7p-ym|gW$^p{{UbShYS9;cmX#EIK<3R z>~|3SIrO8<u>X+UM{c_~M%_frd)q4H5n!H@r?P!=!Zw<*j+blX-i*4#bB0PCxpeIH zW$lD-!`vw^7hgXnc{<V{zES-?W3!z4^?<NCb~6Tu%Qlq;^rOwoxsyIuZ0w;T=7shB zsbfJ0@q1+%&&r@jXd%q@F~s7yM+Kek^Yxzdip7Hmq)p?nC>N`12hR)S?F`~2-5xC> zd+is!#gPI>KVk70&u-e`D|&FHJ>W_n+~6K?)IXoza-z(2&u^z5_+`<TH_J~K(}}Iv z+#PQ(Ht%*J&SX9!$~o;NH>_n*?woYC(<RC+bbAO{H+PQ)9b3T>oSPIXW>c!moWH;T zUTlE%2A_b9+5t=dXSiXH#GM;Xz!OI1eYuNkW^{f#C-sg-%F*y7X*ByA_uwhN{op6a z!-Mz)!K?QW)edFMI?i!8AF(ZrNBx4&$l+`<*uL%5X5|KKHP`eXqW_#L<^=ncIq8}> z#xY<o8Mb}lm|KhZ3?35B8!wWL;VEO>!l}j^T{36)Mp|2cbCbG3I}<))uE?dA1{1O? zrtomjm;?Aq<VigzXXcXU15Y_lN%fSzg3t7MJ@8q<Rm4)L6CK&@ayqKK?Af{ndU%V~ z`S}-FOQ>5C`%_kwU04;Jbmt@2Wbedtz9Tq~;&_D5AFE$%AO_$XeGATUp9`na@1nF7 zNPAccvREVNpL!|p?R!pdZl6VN_&xBmY4Qe*kGwaa4Y?fVV;u`AICCD(%mH!cJe*vY zWv-Wx#_Z@@sLzR>f(|^(`3QAO;N5&m-q`!ir$nA(KGaK{Pv&94)znvv0X<!mby?&M zo)I2&MEdKVy_~wP2ZBFz_#Ga%zRTQTH)Y5rqdHLvtI$u(;StD0XmEC#qpVRbsD6m= ziF5{Z?jB`)aAa@`F^AUU48Z9OaiXv4Nbo40sUw}x5ytZ=Iuh)p$TRQpwBvyCByQzt zFw!zl(2e=$F3a8`@{?RoOQ#zDtqc5%<$8$AVjt>1_>_D@b<aF1`C4~&TA&?b?p&YE zPD!iTDS0h^B1GJQ=bZLMj$U-YkL~PE1oJE1VO8Qu$wR~DE~78<!$AhT=6PNZ_}b09 zr{H(GS_EG?XU1p6efTOgfoJqDviHSaLVOL!RlT9#Cjb63_?N3;o`kjiR2#nS6}MTe zmK!R@Vl}_aF`_c)llh!#ym}Ak1zLW6kM%uOX255;p$$HRhm0R%z7+MM>+qqX`{Y0B zWF6VnwI6kqYs}Y9c1aFj@)-ula{$_l`+a24@I2+>QtR*5{CIy?*S<e_BQ%9hmt<VX z!F0*iJzG1N+hVLBaOgw&oxcNpA><q`%6WF~{(i(B$3EKghy7Te`;QFXe=K_!+Vl7K zXYXRY{6;-}BjzD8qAr3bIlxiJ-FeAQ<5B7i#+9>m>I~%7F0Y;{FWw^pKAsb7LLP6Y zFTyy~^RoIZ?9-%<?-lSKP7m^6Q63Ypl&$7uGn~K4obxZM{GDB54Df*dF-P3+t$c>; z;EP-Ruh}vC3Vi(*tZ|yp2Ms-(H`?-~oxC+T;N>%7IPkd@Z`#_l1$f~>O6=#>fltZ0 zAw1DFp&i}gS3r;BtD7gE+rh&YL~mujs<+)y9r{1@Ug!XLf2#3=e+fKMjs?1y=1Wt3 zg6t=uA7)q7CE&_2?!&#IB|KYBt_Hr2u}#(^+NjHO_mbZ{-(es4FUs9u7}GF+*vC4^ z+}1s74_u$d6KLOWFM0#9VY{ys<U-g9?E=0^>;h%Wy@_6-EcS<XnV<PSl=HBSVj|9t z-9=(PMg48^&Qe>RVm{p0bSpm#7+>;+91m@hQ^EQ``^@ZjClc^Qk6!UV%4^1e??Mjj zI$&)5U>(mt9z~t_xjJM;IbdC)t>!UqDJ5^9XBwGF(ib-Q$@Q|=WS+RgIv{P}JNz2? zY`IZ6m$17CoFjgoPT=_+&H*|$;`Ng~N^~ygavEF%1h4r{l{0-!ErIjd6r3_IjKh5h z&qL&_0X%Yh*yh|sR=_Fz1HU+~_2v54(igDwhe=))!z$#fx(JwD4Pz0P>QFP!dw_gK z;w*j`cub}|Gbf*A-;H{czvMY?Vn3eh|A9~Z6?7-dxxlB?FdpaY;?XWyzsVz8|7hFf z9r;QhVCx<A!eZk9I!OB3>7cF`a>u0<Hu<<C_+0EP`6bYUdxnRepuFL8sH5aXKA}6_ z8YFrK|B1PD1tY2_^uOXKfNuo-IcNWFFL`V7dsF@u_)T6rI_4Frb3ENqdazHA-3_PT zl{f-)Wff*l<lU^F0=@0>PgDN5VKpd({n!Ka2ig1kaVOB}CeI)!Pd`sIwMSg{ik`o> zesu<P02kL>-xi3gAoRD!^?UkF<B95BbKXvNJ6fOQ*?>3aJ$VCKOCIb_=<#Q!-{m;q zr?aTHTx-tvWnAloM(|E~Nq+CQex>q{GBn;{y$~IPf94ljieCK^eTUXteB;OG6Byqw zk0;8Lei`|j-}1|t>s+F|kSNy^<x7e3<wW`6MEPo>JeDX|5@q^1e?GJszx?RU>K6K& z9s2&P8};TBET3)uz+x4NBjGbf)qd$~B-Vg#k3xRLD?WqIDl;3)Y@Ylxyn*Vs@4q;I zvv>0e5?@95)L#r0-JT6H<C+qUvxhI(*~6w&eZR*3x?dAtZfik}Jb=Ho7^4p~h;Iik z4zxZPA429yKtJftCvD68oQ@^B6IP=&M7~UPs_{4X+C4b(L1oiNKH!~;*NHc|)`OR; zMlZ$}n^61Bu^waCy3ICsZul7XO?dX&@IHf!`E^X{L)n)L+H<u)<>T_5?e<=&eh~O< zKCkdO;SZC1rk>het-QcHU9ojzlKccsS3=B>?L2#e3>Wb1pB0(@(eLH3Rz$o&U(Qj= z;2UvRtS#}!sm5#n82s)|#vIBgi3_B^^WSDyvd0*Ctg*D0etPHL(O0>EOZk)eCZD&C zU`;;~)KzbspKv)h(rs~($otMB{JYB!W=WGLH_pqIf$x#`xHw(l9WMF`?qRs6;htxh z<q&H`i1<3Z7wg5M@GVbz9yua=u+2xtz&DQfsfcI9(@U7}JppOx)m#+L2Rk=a=Le<U z?Gb}vtgR|DnGbaqa*(_8tVe8H1bj~U&|B+rYq92!*vE2q#Ovnhc+eA-T})758FQpB z<oZ)$IjrK`pY!Vvf=6J7k4y*U=V|wt!%IgbhA8TM=#z>%pRCOX^a&o-W75a7LC2T( z3NOW8pa;qO0kM0jTlIHuUIo9<mwT%MXzWI=5qW>hHD;*)=FfAJUBMkvc5};lZOoTe z6YZ|A<1P8(`Rfkm{Hn<L-GMQEIP%NjU~e%ve>~j5h|%KkJ9{W3+8j>T))Q9YAKkgJ zjH7<v=2$?xohw^A;<^m=%3yAOY{vsfKc4GHvF60*=JOzW23(f+LX=Pb{NJ1`)L*pa zfuob-xA4H5e>Y@TOz@aCX#D9-Y44>^O5_A~HU6E0PdcM_ddIL<j^lla3GREKn`Ph~ zqYcY`6VIyiQ(8yaj%oZl$vRz2-#r!_UX?aCXZmcO2M?ZV{N*>iKJ@(+lq<F-pge%` zfa1K4atUR~;LxXZOwM(p7UY;GoN#Tiy$0<G?ZGWx`!o8iF+gTX`#tMu&YW@OtooJA zILbzozd!p6M?;2uNo&{ro7k=K3c1nj<I0;Kpr7%pu5-3Ei#{*emeqd4d$jGQv<Xhg z>=N3*yTeZ_o<5W-%3D8f6W&60au0`chp!xCUwcmx{A1rf;K=|lpJTKlpE%g`TM|$4 z%%}{1R&Lg3C|m0Xz8n$$17DqEp<GcqS5Y?p+J1Z@tOjFPlcw-{Vy1tDxx&Hix!>e_ zisL;01wZ}0E_pVr_{iHqU1!FIg9jFC!N$5<YckX!lNHxo>W}4pn3JH6_j>Cp+bw=H z-H`PK^+l5@&QMAr>Fp1un43i`F}VH9r#A6k=Q!T$oJgUy7x1?K;(Gin@TKzrIA!j5 zH->Wu&NO^F_l}o<$D8}g1<ZX(*WW3&!C%OJ3}Z^(6LTI$z4fPlQ8pqg=m=#`ow^G@ ze?>Z&qd@%n%jlnj-38ii?|4(@gC74zSXNmK+B4Pxz8^}vvNqbiJfltecsNGU1{xx} zdK_hwA@$0CFa5H#Iln)Jx$+#0>y?dD!E=w=M0Cdz`_&QQhr5GpbP(41kw?}q%GbB) zM_AB%Nc<0Y=+jG`>qfh+yS>y|v5AX(|F*WR`+_`R%&uvhwvRI!%3&4nGAtsl;qQLT z@uKV*2Dj&NR-SGjgU5?5j|9F%bLYH)U*#{f+ME-%Bj<-++w4j$I4^g>K>reOP;V?R zdWL1spX5;1m|1L&^89~v?%a=cfG>>42W{V@d>96O$#d6X%|+H^&2G)lH1F{4@orXg z?GoST@{x?k-5PdAY2zMG-k}%$uzPB*E(d!oTKzux(Hpw{_NAQzfHx*z;Su=RD|Jqf zU2f3!>C_#KuT+mkcIeZGJ}qt33-dqTI3?8k`M11hZ_)-i@a!W4*#wY{oHMlHcj`Vc zk^6nl@Bn8GbcpW@^_~vz@-jx#d2u|>8T-DI?`sF^(Muo1nAqMcHQeL}@BZSQti~0= z<M_t;^;)i#^&T$zA-~)Qdd1J}vCrF2-)x=Wx<Naz^+xtfkQ@D-ol$ItRqV<7gAF+o zRGEW@q6afcU88J_HV>!9WsPsK4)(r;{Z}v$+`ZtPF&6kO2=*t8H+QZNMu)pY?DWv+ z9T2{m9$tiweo^j5N$yl-H>h?){mrR<G8QCWmuKP_F7{oJ@l?kd^ZD=CZQ-sm-!C@0 zQ|NX5olNUGF4q*Jw~le6@7l56o2#^eemVcEI2~u)-0plMJ^zV09<K!j^7wf1#Hh>} zds8{n_0DL)?<h}dI?jDH;QTyVLHfJ-^qGu7Q`<Z=d`avsqT(*mUV+PEP5Rf{u&=s| zI<XDdai4zA0lq=*<&eJTz40a1fqiC&gA2>GU~yJsh{uyKyGMB+Aj|KLbZWeii{=Q~ zqWu<azXiJPc;x0NV|e|!pGa%B{@Dn>(;wQs#ZYG`L(D<w!@K0K(bmGM*qhw{AK7X2 z3B2+*W&UF_H>Z#7=1&}=*WgXs_|o2H{KqK=T_=+Jvs54I(My?1+(13owTtt8)`Kyb zVhxDy=h?YnUFbHx<M(b?Bsb!lOldd1A3{50x29ax|8R{4J#RrfW2~qhbSWPs-xQMr zzO}PSSs5Sd+;_LG;m_!Lx##y`9zonfT;z@Z&Vi1S>L2|r=_;uoV(yMMCNUJ`*H?j0 zppQt&;gZ)9n~gk{;eABA6IDq$dsevMW%TI|p>rG$aV&YxvW$;%P0OaUb6PGd`~u3h z2AcmR-!0~&|1HC3btCR*_stmkU8Cm=;JfjCl>d+tQ%ZaR+1&=4<Xjmi(-+cz4u@42 zpMqxUSfK_U<99L+lX1|0gX6fh;IID@{cR5ZT3~bFTEG}3I&(lj@r{xEAP>$F<5}!M z`i6&!v9klaLpIh%fA+j5n|L>e{*muNR`8qoQR<Mq^Pw~`2IL)1iI<G`q>p@6J#P1Y z$$|8k<9T*XT1GIo+>KIN=+F87i0OHfra`PRl>|-gc(b3cX~x3p3o(B`R`lZ|@qt54 z*<?ZIUhRAbyWRciwDX)OZw{ID;hRt;;`ey<F3focb*A$s%gd-Md2|V#wl0B>2fR;$ zd==&neeAVZA9!;iz9XYHOMg;A*=(M6lB2z#-tJ7aJ3qOuKJE<G@k!0eRS-81BPTb4 z`Ho_~WAJg~s)qx>X*mLkk)f0H2^G*c4Ejdygd8g0IQ0YOvvFtrsT8{}>U_AbGW!|^ zUdH;*VjS+nXm8ZDB7TpN*RXN=bJ{<BDDUBL%rWB7G3ZOBo^ds38HGNMd+mNaLLW1( zJ~;@h!8qdG06(}xc<8$Fl|F&89<Vrw&!pYrc8@1^c0JX`7aY_E2NL??=P@YHinZem z+U|msj2@5IqMzUy=ZrJej>}<{=N%gl)q>UIE)OL+vktT^fp22VKAtDxL)lk(Z+J#9 z|5BwczRLJc{Y%0X^c_0NF-|k|67mCYGv7`d7i}^Y$Hkg{Nyp<|i<a@wK9`0=Y>aYq zYasb%_R9ALTjr|pl2_n*WAIJ>WyV6`--&x`!6?5~MB0`B$J{u5r0A>JHugMkN1H$X zV6(09U(x1|MgG`(AspNJ;ho?z^$YX<W+-D%{(3E#5ZPhuRlv0yoAPKk_A6*hjxBK} z^$Be@w)l9A&AfJ0k9RYB!>Y`+tUREvBaO5Zo_oo9u?yYNJH@<XkG=03(1+j;be(Fq zCLG8{7;j-Li?66l%sVlEZ2Hj+|K2-P#a|9$4jFCm69Z9BO8nAmzpb_s=`MJBL+6Hl zBJQ-KpKlMUk6*{wvX@pp>Pd;)eEsFRKz~OX@`<?3AA2jjD85c&F5HvPk*}YFkH5bk zXLIBsVkG)j<k@Hod3|P%f_I1WoZr^rPI*Tq1dnjX{FiNxfS2#q;di?@iuTa~9t?n9 z`q0?iX|Jfayb$L{-^e<<)74I<H?zJ_cNlB>>&rk`4aVq8e0>Al7~pJOAU()i9-1Q0 z&_-S3?-FRNqphU-tP#oYG~<b3U%ooF#ET=3WnYGT87C%TIA?=-9?#VI!(kPCaQhv~ zw4`=WLVXG4QLzE+Iq+P7Z|G3m11Y*w28`jSjhBatjXM39*(Y%iCHw{II#3t0W7Kt~ z)MZoZ4*7Kz%m=*Sds(s$<2QNPi{F$_pO(Sfjw_%q&RgBvrSOe%)p>Pty-DM($kEwZ z=T;gF_wb;h=;1npXXM=)Z=jz2VVft(w?5UELRdxIgf^8A_7`%mw;T0k*0G&7=J8nk zs^7lde{wYirXvpX*)*8WILx0UVTxP9$yLnx5We#<SqI+@J|TB`X9jcZ0gUvaEbuIQ zCchv0i_h@p<M-u$wA+Utit9}b7Py2*KP{N;etDOOcbJD$Y-14gaQ-GsKDV*8*B9uY zYS3N4^q`;4BW6qO=GxhYcYj-ShHDdJ-!j(|#JD&kL4NfH_5_G&@h-#r==U-IF`55G z_;kRcY_T?<OKijM{nmv+U9*3rxHe_Yraz%y$w4-i6#rgfJ!CiNe5X6#h3&qCx{CVq z0ot#{Rcae8>o)4?FYKIs6@Eq5<Am?0O&H8%h!`h96Y|_Rv%e^7Ex(srsXT}H`v&$5 zvey3fJ-XILW5J%OpVTqlw~MW(uy@9fuPH6eVRxs*211X<phd{)+rTGlGvEse_-I_< zeS&ZpBa1kKclISWJW$7+b|rR@I7w+>{3bbkl}Da)M}NuNGUgE7LfnAyd0#5Pe3*w~ z%u&$uWw|%y`0#z(?~&ev>X^O5*e-@RP+SO_{g{y7SmQSuCDy0@LuLbVCW-hDv{|gk zHN)mA&ye%wa2h@Xd;^YNl@aG#ws#TltWA7k=G^JY?UMWMLK;5EVFSG6+CzPF{c#@8 z7!Bv~gWy-?RO7GyO!bCilds*TmnsigyHr+uuFyAOj~NUV-JU`BD|yiH!v1uxpPf0k zys;16mq0i5X>hxC>c#D2_r9p#`=qV5n-6^t=JUhv-}HPmX5g5do6TpRy~2d%EuKc+ z;t9=LTt(hu2YHKK<SiZt{X3qH->>$&Q-SSy@}jQOR$z}A-lwJi*r5zyEA=*TdE7C< zJ7@0B9OS%(@^5+NC6v#4<ufS%yp>^7<5oUa58j1uGY+GC+S-AScUS~o;<_sG4eIA` z=LPRe+g&}|zXz89e~$H&UC+G*&kOR5ZxC+xcW$D*=*lCvYxz?w>vxPq=P}Mj+&LS- z?>c=lcyJZ^z5|=dVSU+!zCMmSst@V9(o=&U0B>^qP5!B@o@|r*sHm*I30ZwzWpy30 zdIGX~60&+4Ii_cT=ep<1x&LJRDf>(O-bMQ})Q|9#oCEj3HY<=9ee!kC`h?l0|Bk-e z5cVn=#^E?4>i!V=2|qE{NgGe~<hy`p?zNr*YxmUy!a|0Oy^{D4m%ui=gg4YHp%*-1 zjP@|bt%KfO(wh?7M1BbJUka--Ux)u9=sha;B4tlc+xKxmK2JhEPh-F5=h$~C6Vr9j zVm@vFa!cmWqkTK)g!$!0uD$UslW&uU!4}&SJdEb7d>K!LQJ)36Bmb5LH&l$}*Hh?f zP&PIf>W1hD>r@AyZ=-_;%j?4DLzg7a3cmKipM637S<cZbw#R)k^9lkBKM?>{{;mP; zB;B6|4}D=Q0NzRe`_X?G<!HU~?yN+3VS7c=0NLXG)YtxZAFs}}T~7Ck+S>-~ZAtBI z3ifse_Ev+v&8bXB^!KR#9so^qlq2Y){?_E#eIx3O)|2Nr8#uCr_A{pMc2^7YEK0qT zxA;}mu}>6ZTz#j!w=e?!O@Y^E5^)UqGVI3c_yL}$Yz)}Ypobf0*6!{e@V_SY&h~oP z7j>_Au-x-7mW=WWwuS;n?B160p{T!mJ-iq%`db6E{WFS#cc|T*-S|AW=nbnlJHfsm zbF9$TA<LTTh}=~_)%Z{ULgnerm+xJ7d>dmIfrGj6TrH4qx{ttz%biC59s=?mjD>l> zjAPQjO&LuZA49+73>NoCWX~Jvo6X;N8|OpjjLzTkDAZj!Kcw%$SmdQA`?h>3cyOe# zCrsx{0Xi<<YB<&SkN-Hy7sSzD_s2Jybq?|#u*9WxcaMVoo&LyO)M2%`KY&he0MCf; z7d_Z3Y@<$c?N@mTU5IPuPBs2~K1mmS0Oyk?8{mTcvSa+M<I`tQf4N`f8dE}F%8Ypm z{Oy-F<{<BOxjDn}N$53o&&nMrQ#MwnUs**tIgdH;_YBsD*Kd9fotHfPoC9@&K9~9# zTSvk+yci2Q2dKx!C$&%7)+qXn^2}wXKP$N_#D4rn&M@RKh_x%3FQtDn-|#&9qHKBY z9G*v2H)`Oq<R#%>xZd$@koYp>uWJJ5t&Ocb>DUN?8+45M_Lc%SNnC&(qb`E>DZ%ah z0DOJSx6ogX5^ncs@KJvEL39*<6Gm~2{$YRcQGT;xyFYk=zX|))vEZX|oYB4Nh=0~k z;XfXSkM29asy59t?Qa<^q5E!1_heA~p!$kD+GI`NMI7VNNnMo~2=q(+7WNy_w-g+$ zf%UE9UWd-FZ2jOn@ZCPli~abUd{Ug0yVqCNcYNQPe%0bGyu%T^U}eCQPXGKvc#HXv zFZ_lF@7oEFR3}_qi#7Pp=DsNl*xXPtiaAJwU*;G-e0QRqw&%ms-^uz3yDWszA(mA) z7%vZ^JWBsVoy1Qc?E=4JcI3n0+3uOHf`4guRMO%a`5Q*)TNW8a?;7H}m>3VXOB;^e zF@U{AcMC`xb$y>0<0XwT%7`(d`(KDL$a6bu<GTNDtUcr_^5c+qm%QUBI_A;#OBnNI zz=*6N!z^sChqlL9ED;}22D)Dht^@xO%!hRrhuZx{#LO7)XfVZbAP?#x;(noFDy+&r z&)vDvdmw7x-O`3NT>D!LLp!xP#vacq-dJoyU+?=2%qvG3qp$6eN^Rtr%1`nS^P`># zPce^OJ{vEUhKKz+<p=M#kl#EjC%<Vc<`bFAvHXYVyyBt0`f%7c!FOIn|1Y-Ok6~Q_ z>m=^>{9nHhI;mHrvq$x&-8|dstKuL(iHmfVNEg-|)1w{K`8v(G<}%@YekeS2DzilR zp<-m;ltTm?(d+cY^5WJ$hj!X?H}wEIN&8@aCheXU`P-|sK4);1*7b{XGPtXF&WBYO zSHYi=w!BAc31yREMdd>s6ndaTyc0s5_uoIE?HT?Gp37m?*_7hXd1cbVSVZ2#F!`cR z`is3_u2vt(#MLp^l+ikw`#!!RRpuPulP_gS|7iTD4iL9n3z|CMY~9JMW-|2fK<>eJ z(a-Y2a#uuYr962@+vbcjtW-Oojrnk92fSY<&k;WWr}{C4J|#VK8fX8Zrrxp5{L_-k zlJd2+ZOLp^err8sHU$}T%o6OZ=Tzf`yFo8)p-*+w&R*N?16%(7($?;=P3-^ruDU&o z`4Pq{&w4zB&+ecsB7dheb8P%gw+`}=cd6-LL_W|L`VND4?@c$$n0w|$@V)QOV&y;0 z^#8#S-pBl>+x@q#ZUt}PXKVuVqFfCp*CtnXayB3A#!$beys|N2D>pTU`9<q5@4aCj zv@xT@#V~F!%sZ^qd!H}T2mYp*>;pWayE+g0)S|xADf;V`$y4#2!2LMz6jYyx6FJ5x zE~CBXjOWtdy$>tz7Jvron5}utn?&zxN-TtZ0^)Db5akZbfbUbe_JmdO-FBZWAWfi0 z;&#CK=VV47eGR{f%{Xfu@V}rwU?B0%XYBoBiw|@j7J~>*_%vthJ8}oX#vvc&4hhaO z#_()9%bXf*u_AR&Ph5ZeT{s^utTOJDzYj<FTn%$WyZK4lVXhZ;b!YMH*_r;c=bUc7 zJ<?5#BQcH2g>o=@yX9}fU~i2+6IKtqB|q6m#@*`T-=LEHxAa3h?WaH(;zT*^UD;PO zzH0qe4DrGScDsU;$v7H3jNS{wTxE@iF4%k8;%_jX@KkY(9R!EI`)mEF!$yPbWkjA$ zf0jmr>7(K3@o<c%&=7k!jIo)g(}sihI189_T3nnOPbKt^xfALU`C<Adw%o?<#ICl2 z53cInCZXf0W1>$n+f0Gs`}(H4$-Utv;RSRdbo(HoWf$K@;e7``p4@Wp2HO0yUcYD# z2k6KAKG*g<zVq<~=n2Q?eImJo2K^vjzwCUEqmSd*`0_kdjN&U_FJzB6*)_oL2N=AQ zd2^mtf3x>-ZGTfzKVovEU0I$g!Q<?A&Clv@x!*?FYngK_E4~2dGTFPYWp?>@ABN#C zpeGm$XU&fGAXevMFzSua1G^Nt0XO-<bpv@lx!WPMK|a3STAi~)=coLB^dkZT-59p# z`cd5BbFk#8wU5{{+AG@5{r*c*?|g>X8fh}vgU|yUj{?4|^QV58FXOY-N4^m{<euGH z?XQz&XFhBeF~w!UscSper4f8X*~Y=#{W0OkJEqVkxnAT6$S-_LQ~s_5=jHZ?t{y&G z>Iq}=^<x&H9sIJG#mWbbSqvxFGTMXn_hS}=aX!L>Ibh5Z^~V_Gn~h;H%lEh!fIUOc zV8ijhVdUiF@fESj!+_5Lp1P5QclaGV&${?N)higYMQ-Go#Jkrd{;~FioNzXk(w9C) zbt<)=&WG=qxH-Z9bMEL<+lO|;$9c%J_%k=(<o8t>&n0s&#%nw0TLK=lQL$@X>jXD> z5cAKDPU=C-7bN<$tdA;J?m3Fy+96{+rRz(Zwhr)vcMA%q8h`zNU_QK8SE#^#a4v<r zZj$>f+!^=nemRFVwB7z;&oz`b3SDxsk?L3LK0@*pZcpj{&augd{rLCC5kHC#=KCfa zA~T1pMqdN|HuE{Ieon_71Z+-W=E5rCDfgX*-srou-rg9vxi-lD-M?S4Pp)F$`D?C$ zIj#!vD{b_{wuf*wx+D1~tCM{Na?wJQzvdvu<$6S3IGZzGxZmW3thw69<+R<M-MrNa zFZc}z%b&&ha0Rr*;t<k|c`PLAWj_e{P9UGbJ4cKc_&3%A-d~|!X}*kh=H}z}Jhag= z>ZFhHny{$n-3r0O{#<wW;r}xl1Mm6%9mXo_9O&cu&PW;f$=d;~C(p{LAHZ+DgDPuA z1$Bc8D>)X*lQ5{KJc+le`Z+?ps3T6l&d13+vt!y<aQm?Z>WQ25kxq`mwTf_ZM+tn6 z-YX%$lsE0}MD6)*8Svf=PYjm2$2-0@Ps_crZXm46cliVSZRR&%xAr%bSmxhME~8!Y z%Wc{%_e_1kS>}L!2Wmi{EgmBexgXw(C+*&IOUpC0yt}3NDGSM|Hf^{=;wRG?z`+hX z$P2R<=9@@=X{Z>*yg{PO_0O&I_`a+9r%B?(Ip(+1+RP@f*73Zb>xQ4xBb|9iQ)UOx zeR#&XU*-y)E$$-?wjNFCnBB2;$;AW$kM&S!CR~VhIHj-T-Xq(M_a!`Oz&Cj^!b9~t zGVU(+@Z7T?elEan#`dDoV2w`rmS3b_(D=ot)%b5?yrs<;Epx#b0=v%`>?i9r@>z`a zZLjLnVC~tIcJ{aXC+*hKJ-^SuoSf<<eM3So<(+u)-0YF-!_$N_pAWtC_c68>1lnF? zU-)vanJsP5KkoH{%I9#_6xTiR?Z8bx<zj7@heZxha9NHuNa%210uSe8=O699ZEzE7 zZEyqlEPrF`<u}7>(3|*9fUGyC8ejb%bp5%Ge#WyBd4{sumhkU3%<GcCxY(ml?@@qf z(f0`^*hl#)XVz*%63f7s^hvw!6Ac$^PVQ6yzqCV#WWNwrg$DUMBzPyC=UIpMSrc!D zPtVHuE_P@)->Z<F#EIk)^n~xx8&9{4{(Abi8ff2n^&|8tKMo!|c@Q4>XO3z&j5|iX z`I>A>s6#G5zwP45MPg6=rU2x@HIDjj`eFSkFMWrt@i@lF)dJ1;;2amR^UZ!kf%zt} zanm8wLoLrK9d`C(u~jeVi0Wu>W@C8fUQW*RlovOhPXX?d^AQ~beAe$zx^=k86Vhhu zGxm;|mjNs54s3vY#ytY%v;JKfnG^8IKJhX6#=Z|<&~f_k{!Sz6>-3dlJ9$uMr!=SQ z@b(?AH5xKD$|3&lke<2qVBeEXy9X-q6!9v(ut(CXJ|x3f&+Za%Pxz?euIGZj<3$<E z^6cb~KL@^h6ww}5vG%)foicwuvJWixEG6{8-zVw*5dS_&*pIkE`=c-SgVam6&N|%{ z|KavcjWdGZc;e_3+Au%D8Gp~j<skmNFa)1Z+of-U4&jdB>-T_W&d+$^^wjZ~`1D@I z8|0DL!5(|ZgRXa6TV%b%`ouA8tz!IMG(DtlHvN*^2a|U&xn6@mq_bPUWkVf}_yxZu zYasN4YeBp3B<tFip-$w&s(h<8fNc1^RwqwPSieD=Ri5P(R(OoRP36XPy6g6Q&bP?l zr@}XOvTCQ?1N!luzqWo;=0Sds2`|jvq3^Pf?<PM&r|&YK1L(W(MgNwUt>H`2I1A2h zML)W5j|22ax(L7W$RfWfq+`49-BLypi$Gqay)UHBJ3ZnWz<iC}YY`pcym9yJznGss z)o47YYuru80*XU;O`QM@lNi%{_8F~ncIRYqM*WDz<hFM69W(mPq&$e*V!3vA7}~DE zHpc_gdC}!+z%$!V%lMoJ^quc7lTOL!B<{gb|HOY$4q;XF&(4!5hul7K#Gdx4^xK}y z=eLUql()+71=0dOQy;|t!0uZ44jn<gyq81X%N_W*Ektw2ocK&#${8&vn{VJa#SnA$ z^lrcS@*wjS`gKl^V~nI;U6DFBk24%Q#QrG}b1qR{ryBp}%UpBRH$`~VH(73&ddl+w z@g>9u{+NE!zNw#i><fE&cR0;&>|;m!%vtvB;^TGByl(*7zx+2!yDyJn&?;xH_?@&R z?$yPXxQ9*9>3p+`m2S%3Rqnn_=9Io)_jqf(98+G3uBtz?Sju>6znKS=J532%Io5vn zm-e%LpWX#W@6&&jLhtxZ&|5TmsS7_Hn*Z0o{1Iv9dkn(kH%W6^E=SJ&R4*7GXv~_S zZrc7FvHqbaoIYo`R>>Y7c2!rM;6A83tjhbH%wy5dnxEr&2<={U3iVgL{>=TP@3EcT znr|9JAJa35uQ0aAPxsiP3HgcblO`JrKBaCns2?O<@Pl~Az00lFfEQg=yXE|CFK)3% zN$MPJj6F*5CFR7}<l%mIi1y4gB5yGWdGLDy#Kqhw*W@Ce2lbhB4h$7ttf}8HFu9!x zkyAvw$w=eN%&644HO7~x5BvXTd2;?H&p`P&Aazcj%(sX<VO#PIwmsx}Gr7`IifwUR z%|~UZQ)Xv%U9XDN-SB4Y$;q|Vo^)<%r*V5qw9&VyJxwI$ezW#OU6nI>{Fe9_`pb1W z$$#pe<#UDqiE+9A&ea0R4eV!AH?xL3gK;f>;GKqw>cg&A-^xqJ;~<rni8hay3yC@T zytH+eI$-+}`V~3PN%Rxnv`_q*=HFX#^_-*5x7V9*#0T9Iz8k!M(rf>z@k7UFK9qK1 ze4%~_Ul<P|cI)Fid_IqqH*Y#ud=q?m`oA+@20gyyhN`j;k9foP@xhx|zIdOQHcfBD zFR7kz9Woy!zEfqye9SlfHeGW~W<M^S+3@9zG0cX<CP<@4kH2mQ;EkMlCHF--FNr<q zV?>@Vo^Gc<Z<0ri#@{X;2|YK-Bk4mP*|#~{@hEmLl|1!i!}FC1;j{WmlcT3&lJh`p zS4;Gx{^df*Qun4)TvN>#Cho?z+|S1Qx%Td9-e|&l^nyprj_R$gkBnD~x)zJR1D?K; z`!IPIUE8wO&tfs;{b&<&fHfP)**w_?aVY0vIeo5wHYRns7*^2_aKwW$`!X+B!n5JC zF*TlUTt$0M*GS8;wA>d?d#?yMZ4HcY>bz<?Pu7!Xk`sVj9=EwrKHy0oY4ql0d5SST z2O!-x#u(Q`o`3Sb18BC~4E1Wiyh`fY&h=n8z~8~hZY-tXEQD1@8+iFR&lEs^+MU+6 zcJ1+iGPAh_-~qpZ!u>9D<H`3ay8&xC@Nqob8Bydvm4|tcKFZ$sNS;~_M)Y3!+b45v z{>_i8(#PpzMdfDul&!S3u!{F5@OL&zchVn%ChE7+9V{jLLvJ}Rql>Ye(MuUy{V1Nh z!>ZeRfbW!T0r~bF+A8)+ayO20!#7Od=jpBG+_<OfF*uEzWuK<{y|4c{fS${mVRnpp zb6&iQZ#2r8PfD()&bg@Ua@v1b?O+gXR%bD8MPYhE=pl06!*X7(xw*ucv~j)@#`jX> zS?A6?CEihaJ+p`YzS8zi`$g~{_<Y+?pIK;Q3w!3ayz_MW1mCy63+Gn8{^(g}CMo~u zOjP-9IRWMhxZma6Um$Kz9!_VVn>;HB->Wv?v;)eMwr+Xa$5A$)dI`_W?a*iU=vfBu z2=QEV5^a*3$C(6uZJ*-L;+c23d-*qs_$?;%_s<qMcRSxM;<?DPD&Ul7>I43E;B`;8 zBcJ?ccy2a;ab$k5!?DEQJsMXSIYYck+GDV>zY|1THGfQBE^<`g!8MS%;j-T!eooH& z#b4mNXlOUTO&QC3qNt<4vHZ*^c*h)-eD8zb^GfiK_GbH@2|nxlGe3tIZsaD$&gfiK z7V-@f(<grW2m6`WdpQD!HH$umv9j0&>EoR6V{7PsIq%f9$lif)@{i8?E0~Y*JF9x= zudUQG+9==ojBLZ=nl}29I=(j!V+QirU$2~;ogHvZ7rRusn=EL*MytDL*z{F)UQXRG zzki+Zn(Lzt=7x$c9|gZJZ8~4e*TvrNr3`R>^+|6`AI|@Nh?@)6k5i4E`vGryW@`rN zw)li=GUp)nif8&$@#ktIH+_Z=xpK~uThl!Td|j5dUXIH;OCFbXt>*XLI%@b<sPM<# zKgHeb&R5J<p>IzBo@;}AyTZ=t;rDEQj5E0YM{-o$l%0$N{b;%KtTc@p4EzP@is3*% zId|7Pn1?{u1bD^Vm+%U-mC(n3Kdq!=lODdGHiGxlIEEk7^y=Km8-d3-1>9MCC+^?U zzw?e}QSUbxpZHEX?Xfq-zi=$^<M@Ucc~uC(E7Ae|%4*qsK6%1+!Hf2Q<vsLId;q=^ zcSzTH(rjamx9Mwt|BAX^3agH%d+55a!>hy@*`@6v_#3vWb0S`g@jY8`d3WeuneEUI zo&oem_Xyp2m`A_9Q{u+3JkJ37n$B=P9N9?g{BdugDc3@HF(@4`^6#^|yA+5Y^QbF$ zXV@ka>P`+iPu@e$!E1cR@8r7xX>##-HG=-+74<f<1@Z{`1RoOdgZg3Z(cjczUxPLI z+x>a?{t3lReaR_YdJN~rt0)fIX=@AzIhf6uf5AC?R{eL|J#t!%%JoBWh`*y9gI+$1 zpQG==Gh?Bv_|5o;XTz*BeirCM!YX+Z-K(2IyYYzYu-m)3-?HZd{n5I^F)@zMSNb51 zN&Vuz8QBkV43zDD-7cPO&1|>FN?o&L&Af>5JQ^^b$VTT+-)?cW(I1^(znOK?<1_6| z?ISbH=ZHT}_7+3Zc3RqKL!=vh{Me8<?LNpWUO)1UvZVc*-0YhJX>xlMuzBidc+B}S z-A}Jdy~$B+Lg_Yo$E`2zB{`=Mvcp~^;9g`O`um8djm+nu6FJ&9VBYlEF8U_+5W%ac zvvpng=kd#AkjAekNUO&$%dcGK7|Mf!-Z>Nh0KZK=$GfNQ?@3`kW#Zs`Jv@R_*OPX< z_$KiT6{FZEpnt~N^6Ru`;N6RljNO0fN7Q55i_b^q*}jW))$X`_J>`yz#lm^c8Su|? z4q+9%f==mtF{cq(hfsd9i4S$&K0tU&8+H9e4zykPk#XV#UplmnW3epXfd)?61ItIX zowm~(RwG;ictidbYxu49#(i6c_39^VZ`IE4q~-#>eXN~Pb1!2!ZOt46J*GR&`=!q2 zc(%p)SUcY#q8v<jZ7#O9(@xAj*;WjzPG6PRZSQ_z-+$m-p7Nb@;eLDv;~0IM8^^V^ z(c<}D4~BaY!izsse$e+5Pj^_AH7DC9P9-nIR(zj>b@vU@gmr9;?XWG$pHQYK+xlxh zO4cLF*Kc!kYJ3azxf*1Iw)j0t$Rj)^w#;*G#-)>h9R{4u9cyKy5vI}aWGT93@s!_B z$9_iY9PAU|QI8KhRE+HY3Bq~hCkYE58{2=7ulv~h4cx=-)$dE@uwLbnzZP3jUXEZK z+p|$e^N6uK5zCkO9KwFUXS@sK?hMnPp)S%x=u<I~FHc>YP5!`X_Hc&!fqe}Q<(e^r z+JX6#3SjaIQ>QF7zNBrK&QTAeH68sqxBcRWXEbKo@13=1KcYUrrgmxLS#GYTyxi4! zQh)g_8)@M_g*3`t3yr%fs3Wf{PAA0n?R_?bWBz3fa23KSJYl%buuNNPp<}2je!7&* z$5P)tT^WO2rRA>oyhnoZZk8W&K0oXoGT^cI$?Tpwzja2R@}tbD-5rYOp#Q_F|1D?N z_~w22k*d5CC;39qX8QR9KJ)Kmh3{dGY&QBE#*pDl(&p~@*73~vfbZHpC-p9`c!~9s zL21z9XOzW9!N1V&6p8zh_sDaOcZPR!0sLY1E?om9e~3H5gtdOu`%<!B=<YR_<?geC z9|)^hf4ksk??p~v5qsHw_yCS~1pWeJJ%Xfzz<<i&#=7Brt~;|FN!awN+RLNh<-^L$ zP56>6_!7>4Q}v(vzGXTMnId*L@-XYvez?vF4A*GrAlErtD<d61pDb|_2D~C&;A3uB zzU_cmb+-$1z_$s}x9JCVju6iJus`y3g^Kc?zRYh!%;(y4i~#R0WT6Kmk4($AB1Zt< zjc+^-;CEiX(J&IaZv`gnM-#ZCaTB-)fO`-)h%<>}0QK|-$$G+%grEtuRnVX7Q0hFu zi?Y{7zF@s_-<8F)<fZXla_o2c_t}qp1@Jwn=iUPEDITIe+dktuo^1@_ukqdQkA4~0 zL0^dZfWATF9r_~w)OZ#6OYk|PXeTcR1V``|e6J_-DB6sdVjK2-9@GoG&R6(_zGcP7 z`N=ydfa}Bamg*4C<VSS>QMY&_nTNRhu`Jf{><x!c&OsHQyt_esd+~@d$0axCjxpje z+2T1VGrv8X(mswlvxh8bAKRby&P$-3H10Jn*9mJ+8+SOYy4<7qs+|n!0B>)K7luDT z-{ia}_8ET??bI>q%_yFY2l8zL@L|Hf34q-79&+qJ9MH)%Q1!L5FNAHNJdx0`Db&+m zCKL5%P?sEg>L6p|TPKeK=LGa~@)5O1oI5^|f^TFme0X1({3{<XivQw!SBNt^YN&&L zBgTP`OV}E|>Dw{FK4_;8HQnVmenl@}Bj4LYCyASOWH4#^F{d!E?ty0^0h5MjDXcd2 z3~}Vc?6U{XRj)k_-v-)EUiqQvpoW-p0s6AKed6?{ovGpe)*d<&Fou7*4W5zx@SyKR z4e<$n$8wLMKhK>XUia|RuJ`pxu!C{*VSLT^$Eef2`rM1>P3nQIb+UfCI0N6}c=ct* zOQ2^!>B{jp`V>*ut93D20dIMgD{W%Gea~uv-}aT=c$PQ`bKv@obzZ*l**8>-_Ai0= zob{f$N4Gpc-g_oaS?B8)<z1Q_&zboh3;z9{3i!mh1@n_Vfbzq>g-5-S{Q&6s7V#*K z%uV3Pc{r|U{|@%&dmRU$A@B94FYMLtE(?uM9Sitvv0|c*GLv<uj##bMC3{tyljIU8 z<Go-=C-#JW<O|?r&&xf28yVlwIIb^kPl!B54{^Xp+x<7}`(+<!`wZD@Vm!X@(ha`! zMDlQPW3kP+&ttqnjT=iCqr@@v+XS+wfSz|~Oh-E?(O>Kyjp97gW%|Z;i&Z3c1P#we z?bm{5qV{XS6a4#7ur10)axRs?<z>)^K2gRAU5tsiEj7l>hgIn>_udiXPifhmRqnW4 z1jeBLnl0x5Lw$1JUfgM1#k1uL?HyI4JzoP&pv&GVuOwpc)cv&Nx|Ju0O*j|J6-{z1 z^&K6mZ*tdR_ZG)vtT&WzS>TM%T}K9qgL?wNNqkK>;3l24?@Cy8K1%y5{h6ZlgRkPd zn1a*of1+m_moc}ki<a~A`jTJr9wzQ&M9<cDkA9S`^^2Zu4wPwXU$_6jU4bL~n}pGL z7+d@h^-pt(uw(31V4wKDBI60+5%y&f9P~$IzugZwubsNKPj06DT^qGS@c+BOY59;F ze2(aef4hE5+T6T&=R5jN4eN)BpvBFJaxoloU%<;h`EcZk!7=yS4j*~$_q%DoPd>pO znV&ElD75h-`|?ZIBl<1sWsBcJy<0z=ziKy5%wNIQ%D`nli?%Fh_3&R0vp%vl>`B#k zmN+NqRiFMY>Tf%fLk=%Poe}@TxdN6xE{2Qt5>~NpyL}wtqjwts&lrJcKYdc~bd-1s zC>QXX^XHj6?{CmgUlBN`AEYfGR>iNmzrnc^`N%%4cV`~BYk+?Aog5Feh%IoO9N?%U z?(ZzS{v4~Q_0B)K{;Vfm5j}w6d|i%pr?G(NGU{yY3$*N?$FsfY=`hO$E$6Z3CH-b< zt{!+Tzq7+<e?FAalb9=bbp~ygb0ICg+x_x4FQra%?AA_uDkj=l$F+d-&g}vx<2vHz zvwoLUXx}~B^vU?P$io;rR|6ef!xQVkGgw1Mbq%cme?`|&i3Kr^=orR8EFj+<s*pD! z);5gU$GlRT^^I~hSec9EMu3wt^V<-gML8Af6y+xKz&MseDIrf$W_<`5Bmczr^Ue1J zk08&2wjQ*VLcpo~te)r4o~}q9fv}=GvQOG+P>+o!(Lc{V{CfCp$$wCuQ|Qx8S#w`? z6*56N&#^BbMNXva@Lkf5vcCJ4|6J9{U(5a(0c7c7im)nvpX)jPHcVp|I4piI?t<qk z^FBVS%!NM4yt%&ayg}M3s)yYRUBVxM<ND+2!&pKe_Ker5%a~^#xGiqtdJVsrp}Z|t zpihx=q-Gp1f2Yap;&JEzc~u~<>PPW+`ye~^39DEKQ3o2c!25HkC#@T3GoL#GnCOlJ zVn)Qiv9oQCZRZYSeD?0`@o&b-J;6JRD;H+^HkK@2u>3#9<b6HPPvh0bWy6QL4C1~X zzHt@Z*XuJltfz8c1@y@N!tU#_uddbYV&^9{cAkVCj+-4~Z5T!lbOilJXpbHr>#QUH zC=2q3W!1sADQ(ETN!~A6kH0f4{x(^E82E*6HOyadUPSH#G=N_@pGP{E3CJuh&)<wG zzZMiRpVYq%0vcWh&890i@GN>jTW7uML?HK&aStEz&usnfJ2pKy+PcBDe1miAR%f3c zypK0`K)m@F9KXru@QU7sRcGhwvkNGj56^<$*d7@^w|VaSr;S$=_SWQCdw#8QzSINo zZb|0VTrb5IDgRyF>*)H97%RG8!+opVbtNy+pX&zwVIFjguB)&4_MWu=dE>S1ncv*} zcs(dS`mV-h)!Qw|c|-Mf0eVaN7UDYFc?oq(UOtvEOCAj3w9Xo6To75iyJ7{v(8uua zPL+vM=O{i-c|qTUJw&I(L-<V}WPS;E8yjE390!1tXMMlHXTjrq4r2|zzf2pl_z7!V z$I}J_eI#$N#-;Ax=&xkm3Xx+cuc^1xVL#^&7<|WH;;l3o$-Se$<>Du>#!V70XhP1V zBS2e`IAm|+zKxH2-1wk$dz@pyF^)O+czC4_<q6=jZ$nR^%&~^`9O4Yh^p_J_uAw}R z@}!pMP@Y2hOwukuYZ+}dw9Tcol_1wLd<paRcFrok#`J+c#cQK|!S_}hJSzrX__^mY zoIk&rs`5Gmm@^o63jM}_e~EtA!$G-WU5>uJU*2|c)&S=+gn5uo^oiby0sMl>kG`d7 z@kn?PdD&{PwEby(pNakOohDtMf<5|7dVS7#eX^*J<#|ya3n8yZP_MEV`BMI9E7nc+ z*Is{>&y+pdsOJ&~;JFXaG25V>uw8g|?RC*{_1j!))BN_P+VaD&<x6VIo8)yZsM9{q zc+XQ6S2wA$n9$$Ul})uv(g&RINjVpXO1-;Z3|l|^u(UUQ*r=4TzpvjSdx9~<6W6^l z2XxG`SBJfj(8l?1da@hSam7!V95IIxz>OX+y7f~0-L*`Kb!e+Vcb>#^Mc=KUYzNfl zdZga@4Dw<?%9vYNlJ%-AaMvV$v3QGcWe;B#&+a>DI||qIL8PHVnt_jSZr>EgM_<Kx zR@84-!m6B2jBp+!*BWCelddyLGxd*Up$%)sD9Rki>4b|7cz=L)RKjoCbsv6D;y3v* zf!`zeO+S*WK@U(K!`M6*7-O5#F^cC+<r!^G<gk0x#i5cTadyY|>~I$G#z0tY>XOjv z@<7muEOmD3AL8B>eou-&4c@+r@oMNp`n2vXteaz5VW&LU1=YnttOd_`x`I87=!*Gy z(kgj7{N}j_W!!_`1^gbz?_vC&z;Eb92YKYnXOMSRu%=_Zm%qz9#rZ>T1I`D$9t8Zb zr;n}hkaa!h;IX!GtU>;*0pg^uz}@93?rrcJe!g`qp55dAuIR&o$JtT3nmM#qx>Uzy z9y=Mz_Q3N-{_>{g4d4D<!SCpyehJUupMve$81>K52mep`Lf@v;MjWi;d3L)fu#QeB zk>GLs&29w~(b-=V!@BR;4x7w~8*<Kt7zceV=g^C1#z#fs!*A*Z@5c0m4$g8Iv~j`_ zo^ag?$Gu@J2Gn}WI%&h>w2hH#ukWBuVi)Mpt9Z6O4Ebd7G3O_LD;4^a75mu{dzA0I zA;-ve*?-c{OS`*omE`5zP!To?KH=MSu)W~2jM3B$%Lf?_+I+X?qw>l>qoIWMv@z^& zig1j+HZUDV2iqZMu5Z*O=Da#auDwQ{F;?WBrW|4|MtN0q)P4Jm<qesuyL-NbvC4$e zKE3F(nt)ja4B`s#z~$>MlV70YONrS0s;-MmSQqDXT^vJ<JC42C1kN=k@wdzAn<fy0 zj9b35^^QQ02TTz@sT=z#z84{|I0NF|)?y;+n%%ur_>LRcZzBGT{<ixs%X9N@yWi%@ z(cgA|56j#A@Gqcg+xgxpi&ucF<l*X1;CgQY*D)WL+DR{P;Lct|&-)TMZcpI&6~R&L z+=NVNLqbb<OxBZv(&uc+$+DMpn=B!p4#WZ9MjiJr2jFk!NznIxj!8Y@Z|vnyfainO ze}A55mM|`Lkax&rFHAi_nKn(n<`F-NPhy;fypQk$x@Kn@gzbsJ!LK48RMvbDbBeNd zP%fy)9^&v_s?Xfdus{8X<n}l&pMn3aSm!U{+0LlQPw^3&8vw5m!+=kfdMp+$V*W*& zzv&zEcEBw@&u9le=&1btdDupy5tl<S8CJ#5$=s9pfGb6RT|NhRb1Lge(?!lxZEvBC z?Y#n<>rtDN`=!KVdqDqhFzp`Y{i7^-ID)?i10KqEASwrfcQI)O^Y;BgA>jvh)ep>l z{%gS$=sKfxRV+^fUoZ+^Fot`763b(3KNh4ujDTmu2_G?l`T>vs*sFG4hr9-ouqrS5 z&?G!{GTIBM{*-}dJPi-zL>m(v(3{CL7#)l9G`R8}aMZ&DO&u?XPFEQBA$KKv>f-UD z<Q^tW2LQvq$VJH-%xC7%4#1-h+JWGqFHzd~jRVQOZR5K#JXhzsV*0MSo}_bF`Nh5I zH-QuWQTFP&i{I$rw-Zw3@Z_!HzmzwbtE3rY)BentM{>nGf%P;zpocbYIOY@wb4O`7 z#(mnzudo_)-{0SHm+~^pc3nHU7Dv2cz4(@E5-;K|6V`?<@CLt!G1fqEgFKh-al$v| z?C*Q{I6VGld2gW&f9a=mKEdN2Uq?v;<Jho@*u>FZy1yTM=D7UsF~7B24Mx3va=<?O z%;yQfj0;ZqQRd-vOy+w^HTW0&mUlAnJN<8~Uxc6jqVtv7m;R9b`|!K0<Cif;8Rb6V z<IZbO05+q(s}}jL*1X<z^%-a2GbZ3OCin6gkVP;MWS+p<AZMc(qc3^BY&2p`q(8|i zPe;kqp(13ed_dc<`V`V_aO2cz)id(O=^1pHeDdK^@I^S-W;(<%;6vztqIMZW%R^PS zPJ)kF(gt1yA?o;!CS*UVITcr)#(l;2ew6e{-Wm5mMz+u5y9Vz`eAmFyo2!9e99LyT zxiMd#8@cwzE8yYO9&&kJ<uVMJ*xiwq``eJmp<3{Eem8))`x5+>T&%9UpA`OGgzx$y zeCt=i%kQ91gZZw*i;M+TS1J)r@jU9y(8Ji^N1*4>fB13H1D+I24}_+RpzDi4QS^8> zczi6#$=ub?b*rv0z8L|(CLw3?i+|$_d^+-w#>{!(WvoNJ;(E{*!q1srqo4RH_QP{V z?LlIt9|w;?Q;~R;7V_DjBWcSWF9wI<52>g5ly|{Ni^ONxs}P=NnP=D!@O;O=X!}ss zg`6Ah340LXTOEJXe3$ubStnz22YkubLC*cBIOn(h1n2xD=KQvw>YU?prEGlN{rXsN z=wGJjqv>u5vY>2apRMOVKN;EVP3N~j=b^s?blyN(M*arN!F)mI`II^R^nJnJynh+- z_2-mM+WbELt>X(n;W;&9jXmNF^_R$ny8SGEGoPD-ZI@sJ$+(*_P>H@+eHr|8=4t3X z>qjLPa=BZ?y_uahI2czXajbHzN<EhQpiL#=#?o*;>Gm&4*xp^#bKl~vGo&l4b1lHX z+(^TR`7@SE;0wMPR;51Y_AkL)o4%C2^u>C$&<2L<fWeFdFZ+zynnwC$jc`24(GRMw z_&lNhga5%`&B5pR8+E+b!W>0mm-Fw+^1g}OkHY(<%wKfq8qti0;<3k`cMp_zIC}|r z{=j)iE_4XK4|6R;j+K-(FbBAtr#GC_NQf93eYl^JK3MmMxz|9PG=g`~&F0y+Oq!t| z<cojzxZRzD=QN%hMVwthOlR-pm9RH2BTq;A88?xKyuZd60{dg|nRf~<O1v*T_s;hv zu4H@znhEdTd-UEX2OjE;<!iY%kY2ubTL$gFBKX}ocH|#mM^oSf%VnNJQg(pn9;9q> zL9!iX#M{mIK5=h|IVtYv%POB}A0TiJH}^9(4&ljDyR+YXx3P8q63f4!kI8g^&l>w7 z?vK7nO#W(qCNo7_#8`XfRGM;2ms#Sw;vF^M7dyK9v5rYTx6;rt%zBlL<gj;-I$8u4 ze1bhA*N%M<d4N4hcr3Gk=W;LKV*sDgSL8)_+^4|&oKL}>OwL<kQN;1;?=$4R(J`ko zDCu5j0cGklV!S3UKC4dUp(mMk`)Q@uVqel^_Zn6WC-(8N`?KmdM9<X^jtZ>IQ|E=} zU3`y;^MdZlzTb2&*&q5!ehU2<s~hln%U`j6s2J@zg=bcN%6(7K=8b!B;+F=<7qroD zSzAY<jqfs8TQ<>__1X?6+73%wbDlC5VzX5K1J>HbZXqY(nfl76O~id=+xOkWcr2Jh z+2lr=bH*2?$1fKX?bJ)Zo!<dVz6bw``nz8Ex+p)&e(H0nr)Hn#pQxu%9pw)FlJ6$~ zf1%C3^d%jqjB#T3xajLtw{3r9d!7-DBWG2>$vu+niK*k2=OpJ8eS=169R#lXi3`4> zY<<IH0r|#r0p@eLju}j@7Px&s`(w=&9~@SrJA;(By{po^a}}3kD*v!naD8)oPst$% z_k*UA;B$IK+>*Z%{@J~>=Kj7NA6xvW*fxBN>RU3`d_(!3`Yw&o10Mo=lzj{B5o>84 zIS1Jj(}opqyLV>xyx-}4bA<fx&mBb`IJc$EkT)+#yQ9VAKWKe?`D;#u?;}O>SD8;4 zyvdyFBHO~M*e-K!eE*%a@O}biU^LN>$X#5>qo{n4_z8VQ-?#h4&kH<l5B2QtaH@=f zQ{=8ZYj;O;PoBl>p{Xlo2U*qQmoRqHUg%#9t_SoLLj27!+706>@Gb3c|8R~A)=&9n zIC2U8@jTo3S4`nwvme$zj4R)3!??mnZw&G+m*gkti0tu4;UDLV7%2L_m(nTz3^pF| z2y>;sw7dG0e_^N?twC(_%YCGIAG+H5IO0+tHNj`KS<~}~raI2=lwNzEC%}CCcUpQq z8bxRQGW>5lKh>5t)i<uW3A!?zv&mHG3SkR~H@J4Uto1S{g@=8RHj8U^eB8jnzg0;4 zp?-3H1@HY>&fB-^Jm6?k=D(d!aDF1m8(&@l=0!j6=H={2WUPB7k*|x{L=Sos`WVd} zdP058C)%mg&!b-WqcFxRv(a**JvIhp?cm&ZB867q-0=ED^a3_%FE>knY;5{3&))1# z`AzAL&>8pFX?korwWq9z%hO|-n^*4JORxQSg1USacIxpk;uCmizIwo;UF`pJ(AWF> z58w5Ls^nz3rx96#Pet4TfFC@vp|;=hH(Hb9KWXDT-q26Vnt)tygx8~G3}f+Zp1Bi& z!+RTV(3bcP2*;faMsC;lBLUZFP-o?R5S;UG7dtm?ys#SO5R1Ex=E0vL&5b>1e&Z)W zGx+7?+{$Oh{bq|M^P2Lx)8q5&F`B#Tw>lW`-{Ud)zuk|xNaWPYf1@Mx_zzfHEB4hF z>rYw`hxz)#yNk(rY&klj913;fwfH=qdy9i<ydIxN{Z?-tf7j+1*RQT<j){51=9rj& zOpdSlyrCVL9Kr+2aj*T1`k>@mZNAXf{ZUW8E%Dk=6+R!|VaHyF-`a@QM8pvp=6>M6 zFI)f6tx={cw*Jg{?SVaWE!jeRW;&zyn*8;^@bG*p@>yIn=nDx?zl8DS8xFwBdEQTc za^0s7Hot?h((b|S7mLU~`blTs?RXfYjpJxs{Hn~;*^=>j+?%`OGvW{MmvKxKdw|b) z4?V_bzAM6SK=Mv6b6tK+(85o`U>w==K|Vh=zfL)Ee+F4ZevPu&rH{e8yrioJp5u3p zzd^&_%fsc~_LE24r^MIUm|yYN*}pCFP=B?TeMI`ww2usVlJr9dwU5q(eRRS;zWyfd z<0rlzdvc1_QQ8gWPha;_v6%zND5A}iQRzpJQ8po?EM&y9syE}q{=3E+p8T@H54XPj zz5FyL46)W4U!Xg(rYF{*H2KAS-cK-&`U%T#zw;jM1AD=rGU6qkIWrF+=RL3o#uvC3 zbBO!ElG4ezyTI55zl-eW$A^ru@x9rfzx!I}4Zd453^?rBejsra^pdiO)wwvr;lcX7 zi+5@DjHF~|9(q1P7=5=rTgUi(Uz~K?xsT9AdN3Z(O>x$kofP_j7kfmxmyY^eSVi6o zzco)`{oVejnPVuTzwm|g<{p#r9C%a!Uj~4KJdwHY;+qeonR5hwo(=JxU;fP&`p=Aw zr|lfuqp|Zzlx3Z<F@U3ob(n{oF=MVgKSiFoV^{0B2PPiCwC=%l56rffJuu@S(#kP_ zm%fg8$5QY{`p<cLd+U}lx#p+i&3sSsQXWQcv<DNs&aQ|vu?LCvCoSW7`^?li>fETG zm|JEkg@*Xtnl!{>nMr-$L;0MbFWMuKhO|8r`KvSpuP6=NQyU+mJ+<S5?5W@ET=^~( z&mrn5<0R&KpmAbz)jc2QW8-iRrLgMu+=vxmD*<I)_HBjVVp5x-Unv5fdfmNU<o826 zH{J8$0m=()?d_?FS8NzI*a3X>S6Te#om+l`k~-XD?|RTD@hl#6ji5dc{5|*g!$wj6 zl&ddUz3s;UOZo)X>QIhs^;F}B_*-i~l=sW9zmxYzFt)p=bJ4wL4fvw&>DrxVwtV*m z^CvBpt*$p#w~HN{TV3uQNY+gTmuRcpPvKeYwpa=7`F+&&Qom}!zx^+GE`(L_g*fZU zyofUSN#9l6?$5l4JHM0{zQvPyQGHN1+F4g5ypF+n=TX;vu|CH0zub25l<f6U-;H`X zg9C0p<J%sW?n1qt-E%zF^WKh}9pbs?&LZ~X!AI#6$yffa;I~^_b_5>p#0M{c?>W?0 zlyAxJqP*ni4FP8{Ic<x0Z4XW#LmF_u0DN5R*xWugHi0tEgi)@6uSfB2mdjt*`ExGB zoE;zay_;*oH+&=bv#Y>Ie(+8T{UmARp0$B<G4d8LCw&;&hQZ*SA%nTiharsy)7gZP z_ib$~xf`ZqWtuSZ{;k1qT_7Hw)w}~|gQI*d2EjX6A6A7gSl`5^gg>y+0QDlHL_Obq z7-xU@vHu+Je|P}(Dg9&hj5)Et4qh;tET@rpmnZcbTpClDENv|oS%R)IaQ7%~%KHD~ z?rp&9Dz0<k*|KaOg8)I4L?KFY5)?QFVPp_Q&J~fsf(R@?*A}Tl)JU>^EP*U3(lIfu z9P6a?)@f;L8rnLo%%da@aeHa&q)tk|OIx?4t#3n9l5%r>@8>p7N)kw&)NM#hQb6DP zu32mEIos#Rf{^rU_oJgdKWo;kS+i!%nx8#Wt!|d1;o7V_tn$@RXmt%dccLGCCS(w2 z7Azh;WBUHZ&RKT{<x<nTJ0$J?#m8IFw(wm5zey&a#Wq5l=p_x^Ycef(o9tK7&2O#? z;IFO&lD;aWCC#umq3d8jARhWrYy_5zawYNrI(y(pn-Ux-udKxu<Mru^@j{oup7nTr znj*Z~|FE4K{X?LEIBIvTl{$>efN*I`yRxeq3G*_`(I4aYc;d30hW}-hXAX3mO++_j z|26nFkGe5O{DID<Ki&(1HIe3}WRdBuj!<XhPbi0`E7<1!I^DeJ<4_i%3q<~_AUB7B zgRs;U4(*rt>NLJCC08D%SguUZvfgm!(P?r;TadC5$`$a7%rM__as?U%rWkKh4+-8x zuIf}?i}0#kQC^IGldBq)tGEn>R-v_~gj^;0CGDeJIZUn$Ph6JM@V|`mpd5C-2g}5{ zP?IZv_7BcKK{(F>LmPEXtY5TQ34_j+Fsom{g|g?=U#GHJSwa>|&hfUm%AS7ro{uB1 zjPjd%KV_|iV+-7k_$lCq-W{3Z8SJKWp$|&UBbVHJb8Xh$;c;|yF+IxU_hb5Rv&-$P zdAam*93*m^KC9*ow3o~e`-Ui!wl`1eLfV@jv(oNsWIXwYH`nB2{%u<P*WWT;!k+ss z;?HzXP)Yvj-lfd7*~*@QweR_Opnt->WR=_lfI6$%wD{Z$$SZEQvuj4C#E<sI{yB)l z+*DB<<>n>Thw&$+*Q76}jDR1MbuZr!Mp?LRFFo~@t_MWiqb_US*eiUGj>E}E3FF=o zlxZ!~vJN*be)p{kBRDkdd<{$V#eP}4=X%`Y2H1$ZFdkq%6<S4CW_GQW{X@{Nu-m-5 zO7%);ix8i|qMs=XOZ%n`u(6KTe1P*b`$%X^g_HL$eZ3!bT0ouZnN(FcV~9NQ`qF=6 zh5eSGS?zt$xDWAG2b5=g=aSg1i0A%Qk<(3!&wfjJ%KFi;?_Dlwq#nMr-|7lsem{>t z(@EN&@Vy^=?{|&LU)cJq8j(j$p;h}9^k=M>GqlYm_h%t*sjnsYK%PjMF^=Q+x>mk( zPA}hcw*Xe-|M?Hn<--|OG418bg0j`^^>!HZjrTL5+!@%7az-cHMv3z%&bT)axWn&~ zO0|EE&v{RGx&47f;~chM(hE9kwcn;5gRc4P*#m3)e{WZ|<5yUByDt0lDUqYKJzck7 zwy*Z~G2X-30eAMAU1L369P_9S^m5?OK?0s=RBdOryG#r07TUhBSEOBCn|*Pg#WP=% zgOnY$Wc{-~xo${3k=pCbvRGT7{pP>x-0%BT>dR)>PL>ArQEub<g4^i%LG}%rT}N6h zf9eSvUs7*-+Jm*uB3?e|a_F1e5XLo6>QIlz@13>#%0;#imo1<iVIQG9Emwx4x^BMY z_p-e2NbLjJzerx&zE6G&i#o`pzQ@mj7B369uK+ZW|Ni`){jLRmDF^2T;LcITFn=I0 zyZU>&01I0t`V#x_R2`9zG9RjaSx(E>T&7LE)bdd-{W&f3(k}en1%4jE_+AZOkni~Z zGjf0r?>F!;JcrZQYmV(vc}MpXEpGQ>|C+@`mT}kG6<=a{X%ol;aA$eEa(A`PL(4p{ z$S>zvz-!riUE<pu;-4x6yrs;*FKNkZ_{l$$J!>~Smp_9&#yRxk@xBJY#(ER;UZjmO zh%!q%sfIfT+~n6wsgI>>9BHeZ!voHY+7z-6ns$xRwuFtcq@Lj3XV9B9eNlpc<c;YI zk<TljA3zWJP1{Ojp7jYl)D_{m(?5`|04|Xm<i+oi;=QsQhax|-&BM0G`r>?OXiJxC z<0ZdsK-zYemwc8r0e_xxhPp$)L*f|E=73;FiJRrdxyEvqvB(G3VUqbH!{yg7u!mpH zH;(%$#hc_Qdso~O-R`^>wH>Fwhd8ajLjESdoX^Ri98Cxlx?uyb4(-e#(#m+szsZx$ zjj3*0Jj%9Nrr%jAZ^IL=_g6CSLaV36Y;Bbx+FBXJ#bY$k#kNx$gi)7-ez6Htec@6x z2|s`%q(NxfkVP2-`=2zSO_Qdg{FJ7U&NNN5UzXfMr(*()=~u{n6zYieAmyfxW}U%r zZJjh!6%wA&jyAqXotEKa+{Xp*7PefzEtkf9X&T`d`H}YO>(%n+n9%6Auu^pp+pNG9 z%LLr9Y!?z)Ijs(mhxGR)>S9S97~)4gP^VL7Xjil&4r2wWGpi%^Vg6i$;(mekX?l{j zqpa63y_c)SM~ptgox%QCl3wa;;D~ubnt^+Wc~PEKo=A_;Zu8@&Pe~ukk%j)wpr4Ds zQ_(Q7mz59HXPi$B`n^TgeYh7|>LO@Ql(lktx2UZW&-$$N`?VPJG$S9j1GAAxXKg7x zL>RzgE@trv&ShSbUnrCRCJSlIuATK~BEDjF?T;c4t#{Uy=n&=!J1|21`EO=$CuNb% z>C5<v^~XPg{Fk(YtlZjnG(ZMKmq6ar`}V5>S)^_*Ie&v@?gqz(T>hS^;q`Fe*4=%Z zgpG{2{Pd1thSQJX|55x-I(JVFzbX74xodcOVr*iY+ctjB)ad0yV}p4ZnUgd5nZfC? zsr=<5lN0&NCkD1l`k4`U@&jAP;mhYQAKX4LHAAeH$K}Hl+r}m|D@Fv*x<2Qwn4Xy) zMA#MU))D2<$mH~07B)RRGr41WaCqGa!T__*0^oTo{nt%RjSsg^?m+I0cTv?|7ge|8 z2Q$68(?#dZ<F^2J4}QIHAH(msi_UGvuLZw-_yOj;di-+u9m4N0V6*rk>>R+I)8bku z-|a33{tNeh(w)2Joo;nDaw|Ukb1wQzsFAPX^w#NL#VEfM+i@Rq?%XZTtzPTgieCmn ze~DCI!;d`KfZrSNI~Tvz_*LRpfnVg@*TMI1!1;~6&OOuP+|xtOeG~Y;`K)vQFpq21 zr`$U?ZhU(-H#B_rU1RyKu8rC0;ql>tnc?jE=C#?TbxrHmyX%19Rof<Z5TQG}GRj0% zky|%&&vsM~-uY?&9yJ#*46Mr!@65Y(Lj(B%w{Gjq40(*u=}8|lIJtfM@B{#WcHKZe zKRvc}M}Al;7<nx7$pVffty1_V7hS$b-F%S`d|r>AxshT^3ySk3!f+C=q-R_eeiy5M z1>T6c{84!)|Ckq_2K+MkoeAz5z%UK#Lh(gUh}-`&n%IoY4Y+O9_;(0lq;I9hk-m4} zXEeZd#eMK!gr7YY_s+@1#qU}m;C=`0n%JM<I3HoY42+Df_*4A<F*@}zd`TG?5v_mT zx$};|1r6fb@FVS@*<q$C#CIL|cm4+uW{=@BzrEw|O1Jn=7RWb<i{sRv(Cg!wH~EAo zY6PPR{}zbEJ~-Rdj~2H27{X7e|Lv&0N8mr8emMOD<mC58^+rHOe>a*}Bk;8-{QI1H zQzycQ)PFxj;t1k9)c<kk8lm%|QT2b;x%GSDZ&3eH=ib%}vA9qDUw3YS^?OA9ix?@6 z!hhWRBg9?bj`U9bXzP0(NBn~NuL8-8e@gvr&fS3g-2>{s4Sv)`^tk$moO|aU_^Z|b zLF_sKzbe|)e;-bbhJJAS)W3k`c7(Z8>i@KJx6C5FmM=niZhZ>1Rj=`IZ_Xh8N$;<~ zYs+!4@`U<d=iIwNPlfWY0=(_b!e68Dkn{I8A^pSZzuCFI6NtZ8{Ugq8MH$>l_2-@2 zQ3H6TzXH5oAb)x_{-ARo%^_aPUxB*+7|Zvp#(&PaPaZ>jkNW>F;()`|`1-Ga0zFX+ z|9w7w1%ji8;jj1cE2_Mnb$d1b66e0v4tkr_4|$>vj^p3!^|4d_tUwz%)t2N>{r->O zuX{|>|B=_*M(+ynlDa(hKj(G2JLusn(JraqWB)~7*IRy-;4k#Pi~a9G-ktFG`|?yy zx#;|z2-Egd`9T+503Jq175^{cSV5#W`K>(YqSrj1_<>2E6}~?*FWWQZqVfn-MKACj zzX1Q>|4ZhDUx)ht4{#y>iYfI!gD&oAwCR)T|5v1e-}QU{N}yfY5%|#$t~>~Tr^a6h zKlyP${q;~?&B*UQ^}h}3|1tQx)PEhiQp!`e`Zqz}je?#^^`rjIA4j~>w{p_C3s5H& zO&b3p=U!bMq(9)?Yle{jF^&I}bFXbd{A23>3+K=zAb;vd`7i82z`g1}>7r~q{QK1Z zJ;WnFH}Czc&VySXWQu3iYtZGf{<J)+E^|>mqk0t{<*hpk|ET&=zBi&g?u7bBT=eFJ zz`q0f?hxAd!y3OAaq?(>`_K)sKASZj`mX)~0L-fYuV7UHG&-dI6X<G>!2h)RzmMY+ zSYJoHfA#rr%j5B{u61rL`0vIw{!;j#gg>YL{{sK>@T>f+zEu+ApQeA8bC-gDR)4Ee z7tb=kJ(~WW6#O3O^A3dV)c9X@?z@ffkE;KZ&aKP9ul!nl1pcStS9xP!b43&U&no;s z!!3`}gZjJjQIvnq$7jyMv{MWGS@qXBcXco5b?Qg|^%&z@)Q|T2*N?-m@|M{Q{ndjE z4BuAg+Q^>=6dv;V3(R^!{RJ0YnuY(k`hUr}{awIUul`RscQeXh{K-IG2NA#eq{jat z`iFkR8~!gi_gnkm*Yak*?4ryl@EuY3e|FJ|1Mu(l{xz`I{$&dA+J4r&8vYaTH)=fe z)pv>SnEJ1D?q5lNzxvTW{lh@$k`5GQ9`dR3wg%-tf&40!KWld3>SdHC()P3F7hH7l zqe!UqulY6Swx2}2(!b^*_$v|rwC4A_&fNw6n>?)f6Zj7UzDwi(2Kd?#Z~32a(Irp8 ze?a5^(YeVJfLD21^SpEK>p}f$`#uZxKXV-M%^v=&wa(q$4gXQ~L%w&`L5C^+vmoEQ zz@Nxz{Es{L0s80Eza64b3xA#ZKY&$T$YWHa{`;N#Ab3_Wul@z78qjO<ch+Z|`)??J zl+$?Vr=Mwnzf%2Qf@n0Ne3t$nocj>;M}@YJvz~MA=OBL-Egt@C;QEC_fPYN=&`-aZ zhyRrNFG1Hh1i$kC?2XRd-vj?ajUROGm*91(f6m?w|HJSf*7%P&_u>A)kNSF`2K4UH z_&;;*m*?SEc{=-lJNK)|KbqC}Z$q`7O3GISR3CX3{yHCD^(yCny*lt;jG~ht^%{@% z_#n%3uljF;A3QLAS3w>>{xsrMKU7UaG@1~fS9tWVxjl$~TKzxo+$Rnq{*d}1kH66f zc~<^b9d_;z;G;H;NBMsHKBPB%f9u@uz-#5N`i^s-Itstm$2k?w{VwXnJ?Yb*gZB5k z#}I!){cm;dGmjvCO8w|BKAVI8fcm$<|2W`l)qkgRzxPyt?}N@gg7i_l#zTMpK4gCN zQ|f=%xj#OEc=JEz++TFV->C7R|4$KS?d_bC&i&a=#2?pq;5vFQ;*}rgR>2P#>rc<k zI`@}{5dVaSKlf_qJ~sz>tX6-AbAPoL@LIle?|?o9xO-gVr<{XILm|}v)9|A_D=Z%J z_P>z-YAye{7}sBT5b*aZ{2#dJO~7yRdG6<2^twIp4{7`t5#JE_zX7*A)$;$`Z>d-N zuXCSG`B8rVc=+=wQ~tA^`=@;f>-YJc_ZIk{L-`M>|0?KHl+pT+^V*$z?g0EMPv@b( z{N7VYzfa+zPyVeoY0u}Oe!oA9_<4>0h>Nnv;eSm1=pSD|ea7+s1O8L+&uRQ$IqZFb zU)%3_C!AZX5B%SS{}}v7J$yC3gmDY-tGrad-bK;9f&U5@Rg8jumGA27U9_?Z{=J&M z$3?3iga3f~x4Y=99Q;SrkM?)=)6lO5|Es7k$dk3#>IYH3&G4(dRDZ%nuV?*f`KwX? zuRjWWvx@J}T=a%^_?`N{<f1piZ|%GK85g}}4)K=X_n=C~6MW}ay6CML_!Zyz7r@W* zKI-wE|7P?rUGP7ker)?)OMV_we;fLD%1F2RF<*5V;Z^?5za9R=fxiz!Q`E23&-r)4 zzc29LjkyrU`|^+Ew_<u|-Jt6m$@h&63=a3r3=WJB_YDl)JuoqdIUEFU-!Yz_yrzlH zp|QKKY1(?vRad$jyZf#i8bWB_(D2qB+xoT-Z|@u0v3>hJjCm)g1Un}OhK8pBb?1(m zd|%h(*hGG&OyrgwTV)nevh%L-$$a0~#8{rWCLx2E&6+L_8k)qsVG+=_>9L`{kueZH zjH#$WK{`G;dDo69kEw5Zcmk9SPrIRE%yLcM(>F8r6T`7*aCBf=<|l!a6P10;0kq^X z-#IWIgOORTT@kcTkKGM?BV!XoeLE(`1}BGx`xK84ynA4JY+xeaH-q`O!TjWO96LER zJRyvC;NavmXvt3x4{Yxn9G{#Sb`!(zCufsz7sL0BOiym_+qz?9gc;}iw1iz-Kx!Z7 zTNP7~0&$WkjJ;)Guy6D5z))Y;ZCkqG@^h&!4i?xr_@)^|6#K3pn;4kB$Bm=5y#OKm z;q6<8hlYlS`ldNi>*KZ~BjFinogT)N;S}Zwy|fL5H8nE~w(pom9T83|3TXz0fG+S) zgDrOtCqY&fw@eQ0z%=v3j`8un$sPG|PAfCZfkBA#OyA7pH1Uq~ZM~-t6W<%xH8owi zZo}Ik(FU<?2jK=dX^g7ptZ~VxZNn48kgk$(Gnf}YE!oh(^!ve^9V0V+!#k%yMx1o} zz+J--SmY=3<;8@c06TUnA-?*`L23r0BQsOuJ7!|+zC0QUfx3Gn9e4N0KthZM_qh%Z zOr_9-)Rc^x7|vssc>FH%9IbC#-@x=>eqf@{PySor(B%6kMA5`xQ>fd?>FtSsW_ZWY zWZ(28&`AXfvMC=rH93y<gf<IZbIXqL_OZJ~u|RUJ^Li`g6}>}!<TVpxH&5=E7`kz6 zC*2!|$HvupBbw2)y0^S<I`1`|&!g|wNuP{q5TszpU0t^ffXJPU%8yNrizd{dn<k(h z@{+C?rf&<??GR($<rPEs^uWXnn$7kgij*J^z=45-lhcsAzRBq^G?9V)*yKbIIyTcc zGLG5=zEBC@I{bbDQArPsk53M!<2MgOG>52y2B%Kb;Aro|qKBD$WO`WG9%65&3Qpy? z5n3!ie8bNC^nm4zkWzVX9339KOS=c;z*c=4GJ>F!kW5eOM7pMjrv|1^ON8#}G(3}2 z_h?Sw#?0{a-DBwS#>db<dG+a_eFwKsk>a}t#>cR{0ab0?P!ck|LwKG93{Ou_PD9U4 zY`YVw!HO+ji<9q(?>6ZATSS|u0t4@j%3npWQMv(;lk|bCfxfL{d2~&rGl`()EEO(X zw-|7kwF#m?o0pL-=xZ6kYAg=f0*tXd667|oQ2V6L7?2iPhHVxtoisIRcpK5HGV+~3 zNq65(Q0>zCI?4VU(Tj|0ix!Yu(DB}gR^VlswBE=Lmo%`)G!G*@OXDCW*G>S?%13r_ zov0on2!ghZQV%C#TkaYQtFLQPgiRA{86LhXfF(+4F}}t(YX`&ZI}kNIebdCqB;muD zb|}Z&Mn+Htf;o<2pF>z-hDt8Wwncd&bz_CTE}tJ590kwN#~_V*J(V#Ma8%@9Fm9I4 zl5v8_utGZlkNDUg?wQDs4$~IuqqZ7@W{Nvzq}(E=3%Ko#Duiqvejn%tx04_RvJ4Eu z{1hmu{V<>lnr&RD@J$;qn{;g%nUJ55!NI%2K+T4z*bIa^k6FDULq0Z<w2c%hQ&!>u zi<y|vH;zrCD503%ibc;jfV?Lh0p8_}xmbcr#m%%2j|`wAAbN|}be{OhX(??gZsxWT zBf(<mN3bR~a&N^lcv3PJK$K%2!wm-FtE=%v!CPn?cFSTsh?CY?9F+KwgO_39C)w9I zFtKgNz&7OF&TOt5%#Ym-MIQ@lr#G~{4uEB<+ztH{g3vD#db`wOs5+3hn%v9>)?d=7 zy*LK}B+p0tR3p?C5b5n=4EAk9v}$`2#D>*5wso3zE4=E2E}NcVZ;BvkB>@OYZkKUR z2g+xK>c$R<ZtRfgyFqp@^wG^+XYxC?B0qH1s5%*3$QUFJo)Up)LyHC8I=7hNrfJ*7 zROVO!WLY2!5OT-Dh3rxhD(42b5&d9@&)S5=OKo32DeBq6q#uB3QAEh*VQ7kC+I$s; z*op0W-(Lk~DA}*vuzl;~_|UM_fo06(w*|%ya9jtA(hostXZN*_VY>=~H+prgebS8_ zA9c}Ebnm0p&%S*esPUQ}9G&KSg4Pb+gK9A$Cy{+=TpM8_O7kTFaWM1Q;yZVC0M~`R zNB8tS(kUb$V*d>0Z=BXvsVQ%uWTyi+`>h&2n6e9N>wU4sWGQ!!orVqcna)rsgrs{m z3+lWfC;<X}XH*=P>L>xlkfM|<XDU+$Nv@{>o|XqeOQO7SY<PS~8pW0|5rXakd1;m2 z&Iti<SG}A4;2;U;#5SV*XaFJA&o0#XIjuIR`iFLi4MkSZ<fn^$kPXRO)YDB9&>xbw z_oDuETrxVgZFFk#{azf+zWuM)nF~cV=YI{{V&-8M2J>K8-@%#zp9;*gU9axSYU~40 z_jyO0yUE;`+cI}G=5b<oTj0k0Q5=rBpV*Cgt=N4kai9Na;08Sgb3q-}jx=9h)fBt; z1nvWg`&EFkvb-uExDN*IClhx~CU7?e?$N;gK;nM&Y~T)XzWR6){+a;ig_vjCqV&JM z7bnM>`!Ke~m>X%$T~`^nF((*@cL(l=F%_q2-+(%Mm$|DFm^VJ=+#MR8MPBB9GiZz5 zpe=Tv#B#2}zvWmG&g(r5=HhwmqfnSjARF&7_jppSOTa5D<0YWM+`0O|jj~wy+Dh!b zP&}7Hen!mwXu`M4kakqVFY9q`%-krK@#iwglDQl1#d?~;G=OFcza03jE-nY1n-yjq z;0@*q@Mm1ZuUH7ef#1?LwkI%+y;zG=_{MzVz7qT~JXiMPcmsvGa&Ln3s?G%GRY6`? zBdyVM?ekd6)3mLqUz6=t&|vPiN-WhVOdHzT4s~DG;N1Jo4R~wI*8|@0U!P6fSSE|Z zH-i7~)3h7E4!y9-?;+awO}LSs`-wJ!ww(&o{;+d*n)~Sl&kaFdH{9&;aBtBKSaT#E zagQf>ZU7&QR~;?b<Ec1r0#A(pH#H~joA)Gn-8`STHzDm$YT8XtB<{|}1m+g-({SE` zaFelHzUb-Xo~2u`Hc2|gjq)1bZf(Pwsp7x2Kf!<N!9@0MeI$XutpjVS3V+*P=XRSL zFmvke$|NvdxgfkV2%k;dn}M^SX*Yv!A2j#Tq+FX%Irmc<zGWTOwo#7`<=Jv2+<1%o z?HZ2!w_xp2!s!M-4QKaU;69Mha654+{@afyFj(@5%loeSq`W=Zgr0ZbnB@EJo0ELs zJ(}?Cj-CYP9YNXeIGKdMC#c8wv?Tc7Gotvbp{wpx{B%!YX-#Q<&&L#|7U2&m4Bfx2 z;dO9-TEpS)MH~NVP22kz*0t6B<24D*KMp$M@TZdS_ad$F^S$#4o&6}|&nTY$=bhW8 z?t%WKO$|U6P4<SsbAuUfN?=BepP+N(=7i=E$dBpRk(~(*BTpo0w>=QJk0<U?)R)!o zDCpUvwBgfPH)ZYvSg%+2ouKn))qNNE7`yjkyPJlO*C+IkA4~Guo_Fr&6=wT9*7(hR zFe&@QBMChdCldGMo`kl^g#>=`aN?c<&4zypG#mb@LkY}|p2YUp0UFE>*>OB^-wmEv z`1^B-?eTu_$Ly1xCRd2xX>vvPXH~A~{(rQN;QmR}k){1f&}r^j<Yjt(wmArg49DR| z6MAN!Pu#nDlm6%f;O#FdKX-#Cd(C|U%YNp57W*F5U8u$$2X%iC^=0m#LK&^>KQ*7Y z??oFldhQKq`|1Ct<!wQ``B^P5+&^<~qT4^zk?{X#f#2+n`#`hF-p_X>;lEg!^lQJ^ z;M{`J`M@_duXdCPdoV<g!Tl@b^D5^Y-Pmhn;rmSQ0rx)BdvJfmXdZ>zXomaOens)n z{cDN`?q4@uLAU7&xaa>;;ZctH&nrCK`$-$=q5Gec@P!5JyU?;MJe#;b3Vs?NKDIBB z^N$@#`1Wz|)MWePhZ5QT_@fETf$9Y30pKzC1CL`rhvxeb<lks`=*h(WN$~lQ!hG_u zbDviCZ=l{yFa5@;M9=&tWc9GZ{N^JG{r~-`#O`_+WwgHjx5g7Zzm2?1U;Q@9V*Tu= zLBH|g)BS<_Sd#WI@-m(CnWlt>&j8-&{LFoc`?GgwUDRO@%6qjg=mxyy``HgD%pAh8 zS3%^5?tAgmGXBY)L_YuI@x=Y7Re^f}`&1PEv07|TRQI2EC-(54gEq5`|NLm;{tJ}L z=>LloiTh|Ka0A}(e;%}1J%0XpQg?rS5ZfR$-zVym_WML<;GPZK2NL%erV=~zi>Qmo z70=&1iv2I<MqR}2lg@o!!=D75e{F8$W%}(&(D{Uh|KIUMha7(*>8G%LC$?e!t}zM! zyL=M<<(|Y|`ZDM=`|8U_68IC4H|u}Dl1*T~GMd;bU%4*`Kb*L~iu$s&U+quo^sC^f z<@MFa6B@pHD#7{p)k*l@LzZYubN~0>LzZY;iu(cV2~s}%J!m!^_!RhK_5L-)Q*T5M z<5Qh;y&Q@=m&nQ2b|!Rw<BKY{sKal3N#z#qr<)U;Pw#c^i<<A#k0ovDY4FPA@EOh5 zp{&nnzT&P4U_htgdFGJ>&ofU4FfS@Shp?Z#Lg}G9lfZoQ7Ze7xeDjwS2JU~jM#G<k zn|iy_VZRyNf2ZLm;Qp$H!+o+nDdS1%Wa`_e5dK+(f%{vi1LN(tzz4I>zXiOp`}w5q zz70NGU4I*VHkfZ84&28Q_dixAY5(zPV)LA;OKhG~z+-$nb#LGXUrg7X0?xnDI{K$7 z6x-ZG*f(bGsl@#q<ZJTtosL8vzOyH3FW&*pR`!2E`!(7A*G_DcRh-XtCH3;XeTn<~ zpyB^jnC~A?@cdiexxdx$e|s(of8jvvj;ij|x_H(_RTEklbeoQ)+jK152jje=b4Ftt zqVv0*`#Yak^y;^GocQJ-diBK~C*808i6s2B#9xWFgYXM$VqFw*enxds^d`{%EybBl z$`WNkgO2f|H=n{bQ-yg8cxB-i0k`rqx@ah_yQuy^%#*18$%Ov5Hpg`xy|o|v=@jRs zfHyps%_Vp)dn&=x0Q_3NQ3Jw_p38gVwAjlI-Etvp%%hO|26dl=yV1M(4W(;R_Y~Zq zhw%420{64x<~NGi$miYoR?)fV)!hL;!V7qQyNG?f-i>b<u~A#y3vgE{Ob^`E>IRKb zjlvv*yH?%D;jZ&;eDmm{th!s^u2=UyxIs7b#kY{yROa3ICQ`olVEB26k9@iKjielJ zBH@SO1}>o)xT7|8Gi|$fpTm4nHp1XrO3||wDCpP0p9r|<=GMvxxWv5|?nk`)nI5<w z^=^I>86EL%ej6D*rtW9qKI+~4Rx*0ryH8GG3*6Spo$DsA$ogmfl~-SV^_3g0Zf?wG zuWnqAz$@X(X4f}1UenZsu&bKHpUw84wflz78zYiqPvmOg3<9b%64fOCbFRv*!MEB) zcSGtqZgSQ^;U-sESc}bqdM3mDo1ENbt>1sA?~E*UHeH7JaQ|^NzE!T-yC~;4@O$!V zf3|3HPL=o{bjJ&=E{<=Tm$O^=-Mrj^jdQKK5ij4-Yx+)9(!)hz^Kx!al4ieaV0wI; zF6s1pcKLoDX{Y+Z3cNFXE1t}*{*JELo$csC`l>gyExt%RyKb)Fxe3*?XW_i5!T0P; zpU;AH89k#)zRzcVh9BwlzF+hP2$%D8{25a<k}f&>B0P6Ncm-bAc@1`!r<`$tZ>?X} z8C|T?!ev5-ol#&s=2-@IP6_F>cu&WEM}EjT28A`g9D-|;xaG_g+|wuN)@OZPHsW)c zT`M;3+||Bi=dNM!?BY#3XYp<Pro|WjD#)uc$g4`~*PktFw1n|B%Da#j#(P-EDcnYj zqysHd|DdI&3@z6&{{rOe402!Y%(6pzMpZZN0Pny#&7HHYXYbsLb4btz<PLDOfhM$p zW}H*ia(}C9Lw*f!$ckJw>e+KR+epsD<#{KR+nmZ0>pllrqD(bkF$e2-zdH<=W+*Dx zk8^H>U;Etx&LC*U84}HqIXQDj<sIi`XIc<f6W=4?&mySa{XZek{yYZCsXwRZje2%J z=nUjU>O{{(YeC+2ZV2nT?KC(quWcb5zWeWr<@NNtz8_Kkb%K9w;9vVv{6n72L7q94 z2cFZ?j68FU<C!cd6ZsgH!^3*|SdJK$X#<>1DV$A9;PkKw&KQ>Xfmh;jHg$*kc?Y<I ze-?hyXYqNBZ`Am4_#1=xp$@lVUST{AuM-m-^RB%J$GmF_akR~^Xai5O{g4~HYxP~N z?+o9_uMu*|^En&p@Nt65W>YMq{_Na(#+Q-bEb=5xCckx*Q<X)Wmyw+Hs4|UnKa%qu z5mtrtl=Uh-qnvJ>gHx2Q6pWsqSTV%(=(u-l+u;4PL%@+i`?s^Aa8~VeA7K7z*z5K$ z9zz(*m*M$|fT@Q+8~9niy1>t~uvmA@v(@rM{q_^4IL}N=kY@~wvzvoF<qXguPw@wN zil6z*nQk~EsT*#89^8Y`6xwqgbU+p~`Sy%~^{hJ=lb+E7$eZmwhxi7ZQ__g@xtee` zUQNNbn--h_y8#DLGy{fb(Rdsmc>PZJ>)~fP73V3QrO5W?@2H)RoVh_yo2IW%;N?u{ zGvxjKKLGrrNLy>^m`9;icwb9hNZSK+yi~lyF%Ib0mx<%eplQi=1O3*qgnnD{+)Ua> z;Ggw%<fYgOz-Rrk$Zw#ZEZ%IXcBB!Vto^#hTl)Gk@z$?XR&fS8`1?%Iub&<C>o@s+ zoiN(R*Pvgey;cJmub%z;|FUyeCHnar(9e&cpT7kCe1`q}_umQ_D_f=H1O1G$SwA0^ zEsU>GJ=l&kR<<zS($|-Xm-J}+VcD48(*oN`(y=_Sb>a4Q&6v1Zwkm|NY&GS}_Pv`3 zQ$X8)nRdfI?f1sf=M8C}*8`iO7kGQ6uaEB@S}}yMo*)e89IohM811Qr)vkhf&oCZm zeo;U4kpBxA*zgv<-{akoMc7&BBQKTu>s7g8UG@^!{g+5x_X-?v+>g<M#34=LQg!=2 zR>lOlH|MC)F}K?BY%b9a%zqB~!(Wg1db~*&&!BF?o9Bl&;B9ATF<lOR+B#Xhvv@b- z&2y+435U9%EnkcNBsv7XLs$9qplc2zXT-6u5c`>J5&o(|tK?~N&T{Zv$U20RCLfNw z*fqQ!;mliP3$nv-ju)~BCv865!!w*=!vDf0a=#+(Kk)Y-vFv+Lc7JEk>OVxi@NSkN z;AudbG(8OnCr{G!G$EX2Pt((gaPlTi55r<UEqM7AUeVpXrt%$#?_u3zwM67a+SvSy zj}|<i8oXcZ2J**j6XQ#x##825_GbFQr@e(f+#Ru7&H-gPnsLr^`~A>~_qV!E@Tm)D zVbKQdxfZh5j5P7tU;VG&iTDiC*m-s2IqlIr-o5CX+JU<RxH}82u1n-|HPTZqaWR$1 z@twX+!{)0(I`V+&8j!9L>Bz(8Go_=AqGQ`p$`0^96rO8{Xnmq5F^4p2zW-F`9J%u_ zml8jf>Uuri=7zI|?t}Pot}4Qh{wn-1=O+FYc;h**UtY;S!t!Ar8T`%!hq+$ChdE+C zg0I%Q<-gIi9zJu!S@SUdK~)HSD>beP?|0y5G{AY@PW-zFKYJ{$_?#nm-me3Ib1C*1 z-1!L5GBE1A-@(5hqe~xy<6FzXnDd_o8C`Ikjo*3rk@jl**5DW5dlg0UbNJa~_{?wb zIQ$1Y=g4({NaA`eejRY?xil^ZH)KA_Ydq>@1>@V)56hr(4}K@qe}``$6}9R&I$1c@ z$EXI>A~X8q2k~gx$pe1|zV}-QnS`g{U!G}j|6I!d%PIfI!0I{B{O|=J8gZEW_mAMy zNw-0FJ+>KR>o&gR>z?$Ujg$C*68rA)$xj%7Xq+j=Zv(d?8e8-60pNfFNKlwU0+50; zd;Zf+*%6MNqRHoCrM}=wKC}X8xB;1Da$l*1CEK!5D9&4+=jV{!ieuoAxt~qkm1qkV zzWO-iQDHLKB%H$*gUR#<F#B*Ojln+>gg>9S&%GP`<~j?Wb20bMa~i}whi0T{>5nHX z5g)rz-*i*ns8i@(Gm0u28cC)_vuBzYU4ONoCtcpW=!zy%<NW^|T4e_FqG!A-5`7l! z5ZW9Z-^y9r=y!5g%sJX$N9fiw68iyDrLgSh;&T!;UdL|I|DP6zKC>$BGmFnSl|B== zY4h0K0UdNJUZ=FMKel;1Ie&2j`}*BD(|ibaI_?Vx{6n|SRlZs85~u-ugQl%1w2Cd) zVDle{YYgIO&ou^dGQPrCsN9`zOP&oH@G-j~i~d;Wagc`}XFlj2q5I!~uWiWJ_*$vu z7dwtL(p~^R<y=#Yt8tgyY5X+4lstzO(v73jepKfrzLG~JI@FTrRBi8UMHN#Bv&Z`7 zlnt@+2mqjCq|c*HCLH_dlnqgF0Ab-nSUwH-v2Q>Z!KW-7Z3Cu3SHwr)j3x${djs5t zn{Ws5?;`x{vAFAt&Ome(p94UR0pV?MDchjp%ZS@t0xqD9v6UzBZvj8*NtTcFv71WS z1}pDF7|z>>AImomP)8j8GHrtx9~hnPtF6uj2J!5>NhcmVbIiSoZv6b2CSH;IZ+`hH zPWz4WRU1E0@*i>G0}l!9n#Sn@)A@S@8P@+-T3){bx7Jzo%_KbfwuK`L`M}4zi!=2V z%~xM_rC)7Z&Klb5ecskrlvqQ9p2&o{D{xl^?hvLb2(J#@H9RXf9D|&xUqarw*;UX- z;Fk7Fd~-b8!0`{p<}!XRw8|J%#&Q^wO5cPrJoQ<Fj@j+(>|TU%tl7YMA*}gSVxA*| z`JXE0v-j)J(VQ>9m|w?Z86A&R0j9dJ7IP<nyMF|_)6Xl&U9cFpvwswwj<qfJUzp#M zIl@}Fg@!`TISKc7La<M2RK0KKvM)%OAN#XhaX+Xys}(21rH?9HCODzT<(`SELaVDn zoS$cU(9L1IScUPT&kJ-HE(UMNzuoBL=WtI@YHq6og3Uft=wcqej4}oV?ix#*UMGy< zb#4WCGW`&B&|>##%)=d*7iD8#|BBXw;*&d3bbhCibyx87JJR2yU#qe^%FwT2zQskP zQOC*U`uM#%r<KQ?)_6Flg|*;*%ykX{N3Yf;=V)ZS&b;TK_26%kc;BzGUTM>Gu+P<c z?a+E<xZuIv5EpQs1v@2HVcz|b;J$6x3Yhct<#H|HF*+R|=KJVuGs=WK+6tH>0KR_0 z17>x%d-_F$x1-EcfZ<)FX_yt=?$jSDOebJimNZPH>kPz`0}RVk1f%KM1~0&T-Y94o zlCnM+^@FB%_&a3IWq;H~cQ?#Vq-j8$(5ve*Z7S0_gy#S!^Ehqu5oNhIs8_7Xym5+U z1P;#c*xVo6L5GHC;m+aCVy=(K+70f4aR{s1m96A@2-_&<?kEoj;jV|9ZOq>*gS&I! zMjI=-v!j;vvnz|cd;J|ASVPAh9+&#|2!68;stc`xhj;Ms?%XW=qy_C5>+rjA7XW0y z=8X`JdXhUnSjG;(Vr?ld7yYoq#7`Xl9=H9A-QY6@w-qdplpQkev^@?Ho^G_;PUP3a zcH6uF8o%t?n@<1^?Uijn?c_$_=ww~N-Y5UCA0Z+?Ot$^G`TN~`!Pk}4Q6O8QcTw&Z z;Oqqq`8Kp`t?V&qXMG~95%>2N)gg3L2jE&}&%)h99=0mI7lHB0Q{uEbW|>>OEG<5O zJogq#)0H8Ql&)^TPzGCG0zH|RLC-w$Fuw85pB`JQX849Icn^8Od^Pz@UfGyK{HjYl zzkPqwt~!FW6TV&3OW9O^O`+~jo99CxyBz%$&ckDEXw@F(qq4yEA@k_yZ>=9?U9SRM zKjQjPH`!Tt%@lY{*rCABy7v8|zxzbwHtC~RQI`E!$d}W{V?J8(d%5;=&w);i#si($ zBywJ?6MdNKMC2j#?^*5jD$2D2G&D#!aHDUoBpt*9+E>iF*Vy_Z@2bcNoW~!+MZr2` zHQHDc>w)cwZq_;0_IlaA(ca|Fi=ds^n3MJ0*x^?44kCePdgh1u-X^q-X7t}Jg;wlI z@ODYrd1An|1Fl2hwn4}EzL+|#4fx384Cb{P!B?@Fv|P1yC@<>`e%4)$`k5}%k9LEw z9?B!v$bes9*dACm8EeC?z+I7lTfS_SEx;i<8~q{ku7lrntLH8H#scQLQ3l3gtuMaM zya9ADJ?@Vcdy4T=mxW7w+fn<@t?&2udxdFHR<Re+5A_m<>Q}6{Rt&*kUw|DbvZK0v zALcTUhPpckm{?EY>mZRm@Q`aBkA-Q0qaJiO?7Hmcnh&kTPRO<B7cN_!{}61k+b><k zyVP^LZo0K`*V@(jU1OVe@=X|yv-NH!zwW(1dSE$tncs%Bi;IwrhFzBid0x6{C-Zvq zTCDTm)Ny)#ke`oW9Sl0XkvNc->}NokaHn=e9w+?p?M>Etr0#bcd`}n4I(xRaLHN~_ z^n+e+i(XzhoBiABCh}U>Qkp{C$h-HWYq5uF?dm4-fn^bX#PqpGQ}D(7y$n3<6Iye- z)^>HB#s}1c;6oWck`wt&%4K~x@4$i^`G{ODoK;LS`oE??{&U**<Ul*+wbqyGg{J_M z-fL2CGR88Hw{7z;>{FS7++j}>^YrqbAq@K=%636z5wd6f6=YEMLNMP9<rME6_@9Yo zjl5u3S{5K@Ay4N}*QqkdeO<Uq{Q%-Xv&cO8R1d$dGcWeQ-K*^@gE(m`ppSYpt7)<V zqq>*jzCV7RvTWt7gu8Z^$%r3QFidbm_fp5y#PPmgbZon4=-0Z`E<X&r{9(1r_hGGh z9(MTx?D7NJ{`Ua?KB)^oHbnoHd6;3^&r(O+3;#U(RBP+3N7&yhuiGCn{espRX<Z;3 zb(z|zvk05@buISZtm-O;FKozSUDCJp3*eVL3f@i>oO;)mg_AE9Ua9oYA?$$Q-!Hby zywY7+Xmtm6^>3nGbzs+JH+^Y#job-J_&LHujwv$-=-0h>j0^LcQ@&fC8N^HZLK<OL zWOl8McyHpYwrS!i4L2rm7RT}Cp1Ixb-e%}djJamRy%dn|C>U=V4eS&5DE(QwVP`xK zUT{tt?$g?w@S}LlwCZSJA9S(pu+CVf7RVK3*M}wcf$@}U;M5CN$Momvw|e~4Wm3lm zPuZD5Ur`SjuKSMToyU6=Z{aiKq>^J4gbh*mB7B_ku;*;AI}zTGuzu*####4{sct`> z7$v<ro)~3YE3~?PwCU+xYp<D-ww?4JjIYr6!@Jh5^YO*$S7`jd>{@$qsq~a3;9uRm zYwa6LrC+J>Ke21=Yf7bGrSXsMT6^wk>DOo7>N#J=cVHa$;y%o(!B4tr50F>mEF;|H zAM8gN2My6Ja<Ko!$KjqQ-yn;XI+ly$Vb=%_whOse5&9jtdLb+ANY}drZxJVZ*m?mc zd{%l&(6IPOKtra`>UL7D0Pp36{mB}+Z!oXnl$$9n%M{(dEH50xGJj5Rc|F2$Hg&C) zk22Q{|AMx2`nv*n@~l(hJwNF0pnpR)a+I4-U8*wb<0+%<%8MSf#V*)x-NCrCv(O5^ zFAMYSfM42&=G(4iATQf}8F=5^3i99D0cmW5KWsNG^rPKWvffIxn`X3!1Au8m+9tfY zmyqovXg9B6yP*wu2;ohsc0(RwT)*l{jy<&9$efS1n?}l10sSM|%V$f-J>%JK5Wo8E zv0NwZ245(+6`BX-_77EVVcUqTl4jyy{gLhl<x>OQ$|u&7)hp$e^DA+@%576hZfPfw z*Y!)34RO_P2d;X+NjaCGAuYEUw~O5R`by-sMZ;Nd&03aby0s1VpuVQyxB6k7XW<vU zjdn?Y9sQ_tnGY!;hqb`LG+Dsb;LW{L)p(m6L06v3I_I1t^Af#nb|%6z2+M#k*UY+$ zt<GgFP;KdI)EUQ5gkhb%L+gy=I_ekZSq(SmznE{8ma~d(t+V^!j_Co87l}*aa4$6C zifHO~UwMbhUPy<f&lFmV=54HfFuYFrO`c(oljyu!x|QF@;ohS*&>`wQ*kVO{crdmv zb=NX!%z1hvM>ofW7%$=Ak*#C>E<YoE_=D~#iG!UymnkkU({h}HzFY2+L|u@lIq5_1 z6y2QzpF0_!o*U6|U<U9qf1z_p8Q|DS92nPD!CtL~9a~dq#h9D+;A(td!0~Da^bXqJ z{dYniL1(}=>H%CG;IcZd6`K+ByZywa`f(odIn2$^<5xMb7B&TOTw3&fPjeam9a9^! z0XAg4+K{!dA*D`~4;&N1W)$1qk6YtCjE=HWt8`G$vfOprPjTKS6U_V6p<OsF7v(MV zyCAMIaAyK{Rp2gKS7~;!t(+@WPDGb^Dp9Nzk3ofD1!%=7yle4m!>=7ncGXz^I)*pG zGAHnR$}i)ch4sPLV!f{VIouC7h2_F#+}qO#H_YBw&Hd=seSZY^<hj>988EI=-Kn+T zH)YT~x)663ei43ztHSSM^<ycK&xL?1dI-y>0YAo_2@d;|1b+qIcm&_LcgugHFSUOx z+k@EW@gsd)^ECQW`^PTKBkm&n>@oUM`^PT)RRBN+;>X}pYs44+cR>7D4CQI3m+)E! zdh4D-5czjDex#A~RpSRM(Rc!vdt(#+eSt20EMN26I}U$^)`(e`d~AOg+QSOaS9t`5 zi1Q)<DzMakuSUk<8Q1+<<U8uELho5{w@57hvCw#a+`nS~T`B)`%I{Z|5vb{Z8e}|y z;nFe9Zy)w89Rxco)&H9)%1MChJu2?^(VibhQT)9Y@q+W9Kk3~sKl7MB@9G<vnb|Ro zbCUh}_}IC1y)01k>`(6FQr|`%gjwcnKs|dAX9Mz-NW8FMZm@O=wxS7-t&B0pM}BLF z9kMCswDQd5zT4hEVFzOhvm(fU6=e%gMT2wam>YaJSKTXqP1oO9zYpsAJKet>gnv2- zUy1f&d(&2)O7O4Ro8VlX4cxt`A<ZjeI3d#+!%6p_XkK*xx#k7;nl>~IO}nNi*|WB0 z4mwxEtH%=>sz0xIx{&7=6%XBC4Z^>kgug1_Lv2lxS8WTLrQ&~GcS64dU+_J#WB=jm zyqo=q%W61icJ&$#-ng8GBOUdfq-}${QQhruBMrmZ@3>~~X8*$>yM!}sn|HH6a!A8) z_Dh)7^e}L`PIaRk4rL|``zr_f>1My>dc2$cmqWcUT$b|ty_@}+8&a5AxJT7JH<HJ# zzP1^I-!7lwo96W!HoS!W7?lT+*Gt;F$L}zkkp#9!xPOoSEW*?K_>RKvFuSQAFtlyV zZmCkc#i>2>O77$9LcY~zCtWcob5ku6reo9%eYo=*w%!KVda#>vMc>z+zW>aRul)QL zZD!0#i@ivD*Va~OU($}VwKc}s_auzV(jTO=J#FRo0hF}0`8}-hnY`SGdH`Ovzh!^l zzX!kDK!fqSQu*B=VV>WW;4{~pa<Z4BJb!EVpgcOh5gzL}%Xn4Ju0GR#Q;|!Ry^vpz zl6NX6KT7%Jc-#18<CeyNUm4>U=1v;Q>@f}Hj%5nv&iGYQwl-q3*pJR`{$cNzTtR(o zPo+9iHuLH^ghOYGjYk`ba8>xFY-Wx}iXOAK(1(OJb6Ggr!b}5GjgP<?O%fo%{%&x? zO*r&vC2ir<e#y#Kz_FjP$8e-<;mR!l*la*}8(cseV^{U#-y!_i=VtIDt=0IYY~j@m zo5If?!)Jbb$KkJ#Eo^vc>#mADaH#D|I`P<@dJg=L_TblWfiE-r;KOh>ir;sp@%~A) z0~}w!4YyX{wx-*ranS>A`{~=VgBJ$LHRv!exucSBH_gQ7w2$8-A)AKp@z=c=h#XVy z&+hjZ3V<-$bw>Bc)c!$m#kom%1xQ<|GO_};y1}ow-oi)nBQtrNNN;99Yy;p(lTzoJ ztiSSYFTn<=V7o}$044h#>Ppq^CsdbmPOH5B^mBcs`}b5F`i7UXPrqMurN?3YO=lQp z`ZL|%kbcZHWf$1b;9Em2Pqq2MjDGf0&2x^7k@X_jEu6>md!Qb4v?FTRXDmSa_)Q>r z5uYRBza6#s4A-Wa4{(KhXG->CQ}HbimyhwbhW|V|I@(DQ)5r8-N=H{diTHZ_*rusR z2v<T!M-L-Bd`#!0baYv`l#UiS>Nk6gzSN%f=urS%WI%XZz9}6Yaj*I^baeC`z%4^Z z3popbJ%f&}B+Qlg*<<vX-`;Wfk4Q(e4)NGMyDlqU{1c|f$}LvQH*S%uIBpyt*p}R? zk=%45sedBTlkNkiCy_@6;v?h7k^HuSnJLql!MLf6&fL(fDsx$9K}E-eiYED=gT$`F z-1xEdoNlw9W2f%$bL<bglXR=Si8X`Oey!s{_awuiXQ)rbE?ihsadDuZ4qN!#nu;99 zQRX)|uFn)&F@NsYS~&mB@dnl#9M_Ag7zaPkGvMA(>Q6c2M|7BcbB%d<%n>sl`!qOi zv-k?qp*qlL!+Ma{ozSJUJ@MVPtTl!ExXcF4g?sRS2s$l~PYB&Q-0(Hv)@{Y*OY3kY zp>*HtwoU9<H;~6IM_X}2;fz$)GXGIGv7K1ojhc>fL0Z!hZ&o;%BYdJ>|BnA#Tf<H$ z2ic_A!lx`8b(p0wxKcXj>f-NcqTK*qj?Vco;BLUr9?OewwOJXpq7DD%@FUHfV`O>R zTvK-8iX#Yn4Sx0*KJ(i<4qt}O3Fr`pDbGAAc#QWF0RKujbk0cc#@5CkYm|3F6=1?o zE?A3I!kMh7x2=CEGbyj~+&7Kjzie4@wTG=;ttj7`v9oaw@`iA~s#9VW4XayBa{*g4 zRyI8xR<a5?H-uIwtDsnkqQ;R`p~7XdQ=wYEBDq*vY8_X$=2l|`&acE(rdAwhiKoDs zjAw9S0CxD`i<NHd#_Z8ARwO-E(6YLMR<A2)Il%N5*5V5QlmlO^$QLs>34^2BI?ZdI zcmX3TXSc8AE^NPY25m*FiYujcwyTxt)??Mr!eNzV(qDp*4~UmlL(JxsT#ce;UTW3N zW{FrIz(p-goLng;e`S^md?Zih<P)qC(rw|?eilx56=<$w7|Q~htJ5^=3hPUv75I!U z(aLjZhen^~6R-R&#fNkcrFdD+jPe1eTr^$@zsL{D>dXxu&@E-1JKJTuUE`Iz)>g!_ z2G|e}W^sz}2v0ft1w3>co;tzfPYSd=D_MrH*C@C0%-JyDVvlIEk)+3ZSn`N<ik%W} z9B$^z(>=J0hP28I6X?N8_2dq$RF89|I%s3;&87es_k^_OW!5qYa}vgph~kzyw=aXy z7J%clQ3QHTp5|1A*&X)O5q_C|s4?KMUbEx~p`0u;Z!MGX6=jmTVp;7AB<8b}Y%JAA zfLrPrZ}L+{H-QY=Xy-Kne=Mvf;1An3%bkh8oG#`M>&JHdXPM9XtmG@{!g3Jq4DIL% zEl(3<z9C#`$8JsHHh#$pJL+88G3g^-)Qg<f1-NilI<vlC=*d!V6)qJXi+c{c?$SFG z!0VD<E0?Q7+XZ0tn5Jc^x?7@M*Ik>P+%d2=Kdya12g+1eXodVggB=lTTrKo_9dvhA z_4~N)keE{ao>%?86MDN|XRl|8gYf9DX1mvj?)Lq{C2p2|n$=CJ4WF@20$og5$Zp62 zS2ELXeVS{g9HRZCb*u8O`ieOj<#z%{24$5KjZ~M>AL|*!8_r6?YF^Y0S-_c}ZK+zz zRIX0TmJMlb7YF-p&P22CZeVz-d^Sp;ESe6J*$wE6Agwzk@jA1vWtK9s-IF(LE7UFA zb+>8p#SiH&nXr8w1di$gc!T=qm!?(sx4JA&9jZTyvXc+Tu)`{b!7l%RH`Z4OpV4+$ z7Kxw3ZhYWm-PERMURZ9x`CU)cf67zUf0Rk;7ONXh*P2eWwqB0+C1<O2rG$L|^Ocz^ z@R2J}Zw3GFV^|<>q(@eH6b4@#MWX`a`>gbCrkWPWIohb;2d(49ut|SHU7vz&3-ay& zujFJ=ekn&@l-SWkzKA^$@=#@hwjjUuc?9*&6_y&*dzG*E=kHfsOmA(1<*qHX$_}Qs z+t+qos`W}9S$KO8&a`H8u<g{UY>{{2sTXk`kO$uf>(@!3jde?zmj0IQ5Mfrg)~?F+ zcV*iZ^*HL%?4aee9rm@<U2)qoewyub#hmp29e}Yiv%jike}LWOSt~Q*t>4HIALKw} z)cOtN!{uGp4fC|JW?rri(LPK2qUad%40R*xPTFk2+g9RMd(6T!27_?wIt!28svnh) zQ4ya!Ut~9Ccsd+$nl7+(-4f<?6XlV-OY<$FjRiRJkYC0zFT!v~GiFpB?N2KMb+5%$ zrs6#9J{{XfYbxHC*~fDxBppw_k%o#CJ^O+@-RzocrpnQiiYuZg6<0({DvrBPbN!HI zytDeQ)pxbNGklk~DPDZe+dEO!hrbe4s=f0xbl^$I&Z*fWSMA*QCikqi7aMmTN4cIx z`C;=`9HiUoz}khzJ%BhF@62IWC}q0Pif!zmhx*Uk%oQx3u4Gn>(yh3(om6x~KZ$MC zjQpVM7Eo4xxp<guLc?+vhCB`hd9saDrx;Gs&};FKdG>k7sh6(J!VMeV>%V_3q5nju zpYr7b&fVw_Ko8pXDdrvI!JPpTU!ot2bsc24Aw@@QZv*E^;xrwMmF;J3XD`xqBAwB} z{@|4He%60^ctXOokJqrLP|g!ZbFib{bUW+mIPm~3reo9MKi*?BAl_gp)5i;~m>Ep^ z|L4&EKac+ZIqUyJn$bqM!<4d0K1n`!Kdt@88D$r+k~i?wF}>CSd3l^Npm?=Ez}!ZO z9mxGI={q3Hw56&yEiN7`XHx^W^$X*4$2?YDgY?t^7A~?4zsZ@|Dx^0KqfP@J>HEkJ z=(k$Zu5F9EN=lCHL3-2HG29j}PX%Wb_o#cXf4kh|j{G?0ygD(-)s5f7nA}3uud2mw z^oKBWI?X+;r%j(q==3YOY@bE>I0G2Wre093W#-Ff^inHAykR7|5AmGcV|v0>;din6 zG5N>mf_DFo|J!V1141(Roe3_r(^c@b#n=-1xN>B)!uk3I{M(5i>EkS<(T7!Bp%*Vc z7u<_~7m3sVGx}0HT`%|~qEY7fF}T#~{ssR75X;!<TJtO>br%48Hh!<dkMxo6=w*#3 zaJkn$065Md+hh5f-`;WfGG=j==RPSs%$s!JiS}TMm$<TY<NdJuuLd1W@b{|!X874Q z9#ub_{sBJnyU(|kD5LQ^kWDwjd({7P@S_d6C)EE@-=5sO`XBXe%XO*$i_*@VJE;DD zz~ndibzJ>$`Um-QRy=;-r<^@!0baNxlXqb{%KGY5e7*X!s9=;QdV4DVrj-BPDgRi? zkCib0X#Sk-mq-1SuPlF>-ycdO{%QQ@P^^=nWA+04!{7hGsf6Q*)}6!AHy}Er2tTgz zkT3uE^cCRA+3g59>EpS}u_%5Wnr|cOv_<3Fuv-=QS2*==Nx|Qd@~iGtdTl~~kb8Nd zS+@^N^~n@J&WRk84ZcNzgStbwC~#<ULar1q3glUn#7S*DHZhz+S{!N!ibE~0;?Vr` zz{JeR<n;E_k(bVLYI=BTU|I;A7=FK}BiQp?Vh41xAzC&mrx`Oij@{JZ>6eP)HZ7^_ zq6QB0+fHZmcgH0NfFy97m#7DUvMGi~ZJx$QPXmH^S9^S=y5Bcr`7_@>2_jD7iani^ zlXvZy!oHme?AIBdmiX~|rbhdUXw!S;i^6;sF=0gP6HeORZQUA<7>`~7ZkoU)@e>2% zEDMR2J>w9~s3qAA%@sX6owEYXA$I4Tdo}w9JeAN9uQhiLyW-8g*SXiJdnLjRW@S$T zv+@YOz%ZES(f6o(RVRkm>Ryeu^hR~B0iLY6zludV)kSN*4mWi%p0ltE=?xlw7MkE2 zEF3!cEt;06j~bq{q2KB?{M-QNxdG1evd&$iFy{eJ?7lmp;XJI~8x6c&>LP`&MqW8{ z4+Y`J5*p5j{xEvZKk3|Bg{S_FPeHBnZs|)<7jh!%9u&A%!@+L{{xF=jmTT~C={ta* z;nHt_e!6Lcxn}RCEham}5xxp1t8UwQ_rUnF*A&;k?dofme_Gy(e&m(jnYHA62zF=J z)1JLzPUb&3&bx><atEeK5H9lvI&UPlGs1TgUhU$3v4>&PLa;G;efoS9;yDhpols45 zn@vr-*yc%a0u4@@D4rieUYvVdO?r^d=6%Y|=`Cl?ZV0$C$Tws2F2K*RVqG~K9OHx~ z`A1%q;N5))FU7k&;mh!jYezQrld*A%ca2C}l6U`q<Xe7v$1rywZrgb|#C;5VEry-w z@v*_Xpc<3FAKf73hde&1*a=axNA;phjZaolFZAO_dm8#6w*N0yKg>ct6%YG&{GYIV zpm)OYNm)3KJD3J$C?A1a>)rC-=u7QbtN34ty(oaQd{aBtDxL#OO$oTvxMM{XU^bV4 z3ut5P%3Az8fgg2q20zjVJ)9nQtYp4Fg`Yh}pZV<_hri5mhvDI%hvSC$fnWPS9|S*a zSR1FrU#z{w60i_>n(=!YzaDS5x=jq^qwyG<MQ!k&(0FX+tjNOe;jPn<?J3=8S={dS z&Yr$^S<9lCF*&qj9F`|6pPAw5yT=B_xC(%8oE{dtFt$fvv}~kxH#WElEiyrt3YT;s z#oY;3SlK7wHW`{iHEEw3)qxe}en{aVC(&;zJl&9OgRkf|_>uhh;Lyle+%cYUuMMwb zlxI1o$hzY!0KebDW4rH8yNMB%v|8uei%x<4A*iU+rci!3JJ3X5NTKo1>g&yLvwc8x z<>}YAy{zqAf&jL~Gr>_OSsLQ#$L}IK^s%_q4m4@Ukcap&xRefY{F?WM7%It&@T%V! zThWexbNG>Fwn>(^gbt~A4B_?o*<<;d-`;WfGIU5lhcL`|Cb-}sE%5_CbqaMOAOGb+ z+yJDJcaCkH9>6ySTZZ$UgF`otjbl84!Nm6MvEc~WKT{jIvgw-U<+qVltjDB{_*40p zvZ+e0MZ;F4&2|yiLUVY_S5$$`gB`3ZzfF7Tx(6e!ec0O2oZ3Y7wDk(DT)SR;k?RC% zd(uXuO?m)nY(AQ6E|y;GP%2r#(RQ-6ILEnW%nR!}n4|r9S{&zOug&T@K(P&Kb{OqX z$*XXgn}gftr8yT&y0BA!@x{Gs<kUC9#%t2z*12O}Zs8B<6uVgUP09J+a&y$&_ksC( z&aKz-^aiZgzdOAK48FB1|BLvcG~_^6%m=f>Q+A}3{gt8bh2LK$eKvm{(kJDlz5X)j zThewf=HUykE<s~Q2_D+lBMku$m%5E0<YT$9%S)j1`R&W3(_}QHQ}$Wdm}?1sz5;aq z+n+6yPF(}kbur&oI7W-dhCgIF-|+86=k^`r`LWBl56nQhW1{ju;(Zj*n$q{1T?h+n zWk15~v3@T#4q9^`0BZ3&!#HT=1BOW7)+e*C3T%_IaH(;Sz+nz6evH1<IB4a^08z?@ zNsWV6{u$twVZ*G%y!dj)L93qv+$sEMLz6e8uY?Vgc@p8D!OtG!i}~#xhcCm1S&q#@ zp5uw;VDQAa8G^(n1N72Q8|+Pl#d|@=HCO4l#{Ad8e+2OdHU7OwIU4veUan;MEq)*T zkHmg4h-5OKS3JqsXZ!YW_`|7N-1U?n>$^o-navH~atnq#G7}5~s}H{R;hC{*6MY*e zC#Q$TCNNncbKZ;u+!C=!di^*imdm9)Jrcy@`L>RY=>BIN8^OMt%$J-S#D_*DzuLU& z8XW{JXAD%)!_49_Q2ASz<a8<SAL85~ZqUx*2JMFXTOH@0O3igWj_}aFst;@o*+Zx6 z_p(<`_sujCCN-~kFY!ayb5D=hbF|A^Kyo8sVPh>dH^%)CCFjOCuZSCWd8$`K0cA+_ zCA8g2%`ukz3VtbjETH`*&oScWl?l$3{Rf{E%c82N6HE^@!Mg{3dra4+`hu190BFST z41IxoO=-CJHvN<83(CT!`T~K2+KC^dFVz=Bp9jP;`hw`60Jn_3pn_w+&2g?tIar=x z94UJ52*TJGWbh+>CHjKOClDU5gTifmfwSm|!(XAkAVywB_n++n^h<i@vX+2_z=J&$ z5$oON#NH{P_$TqE3}rZc8(N5b;(6v7uNd^S`7WY=DA2n$C&loGlR2qqD4CO*LQgP} zw=s7--Y%n$uey4}OIWK}GtZ1u`nc?PyBVPSIA&D4IM9b2Z<?)7T?Snl9SZbO7GupS z=)Nk1*@=$WV;cGWaL~7QA}w_C4&3I_jQ9KS#pjcFw?SWb$$P)t{_*|G=H$d_u2oQ< zUx)Z{;NqC*&~@|fdAxrQr-mND`;UN&``I1^O%Z7a9LGZZ-bwb&@yk)<^EAUC2oZI^ z(E>kDKE)VSP6Fi~vWH8gJzOSj#8Y!q>Bkc~WDGCk-z2}q%_;a6;x49Xv4eO)8&4|^ zX=5Eo83JC*m$TQ+zc>%ttNW#1T!wGfA;Kc;mBUxCIO!dG*_K#;dPKiV>BKi1?Yd91 z8FK)nuUY%cQRJIt-Q!)yx5!Eo&;Hc*a8eHBt6cQ6*sCi2ZP<UG76*E(%gm1u7f)5K z#anCx$iw4Ghn!x3xO(%W%$<bOJTo{^sh;KD(2B9&Zr6-)X{PALr{cMoI;7>EU7nIk zIg)*%upw#+t*#z^xoM^C!Nr9jj&?x~xU+W3rH=K8%hJ=$`~_yy;`6%*L;j`ervvjy zrA|0KsP)r}`svpC=>X1-pl+IgAKwFvO!Zf8+m88~%QcS%<k67q@m#@^Bmg%x-CsF8 z1-O-E;8-rh&$=}pXA#bIRM{6@qHa%%Lw@yIx0Lm8e?D<hcjWL^JFemht;<H7DE<J$ zEicp|Z=3Ew9X6IYeTY16fllDQVSeM-#5oAI0j-Z_#8dCUCakDzhMO>{I^%qq!bH>= zeoc8^=Ja@aE*9f6q#>Oy#*I10PUs*h1L~J^Ax+J5{(HL9>4@$FebQb_(W76uQ~s4E zcMQC-{h(E;Z)B+-D7!q>m$J)vNr(2ra>a4TlXZ*uRnwkdalGJ0JnMz=VnZXn;pQpZ zireN`#kQsH6_}-XgLcHZRpLGD>tQke4goS+Z8D1d?p+37s1J-Uz04Q&UAt-Vdv7i+ z&u$JloBN@+@NU$1PTyI5*Xp}im%gd!bZKi7UWXx$eav<HU+5v<mcnE0P<3%nnYLcC ze`cEikIDO5t+NKYwQYo_Hc0=yY4P9wO8JmMzKB0#A5e5s#O&Nf)K8}8!+gif<l8Ob zelA?*+R^Xflo@|&^epzrc4Pk9%Aj-Rb02DTbvT*)9antFxm{Uz@$G9DUt}CkSZhkt z9e%ergQGVt&kt-JA9gOEzkJ*HJtO}yXSck~O1n82(`1gqZ;y=`Qe&EPU_-it_?=-) zlX>0{>Dz4d)R?9$Txv`saN!ul=u3@h)>I?EWsGUoTm`rgpV4<d!eRE?vxc_&GR8D# zcSGf80n0JX+4zw@(n3B3_^R^oV~!+#EZ;al9dY=}9Me>JJQX!1=Ce3Xy96p5<&PFL z{(6vk7{8Mx;7vvZB?`m&uXlU=I;L@MBIW;J%71^#|A~|zd9PkT*iH;wS@tiWi>k%@ zkoZUPI$#-eeR*7$&U@7Re9#QGxb|T$=C<L|QNFn{l}x1-CFQKy7Tmc$u)XgFZfv}9 zdSJWkF0jCzWBGL0mf_*Mf^?gQ2ZpwcPEO~8uq}6uP0@QJ=kDYNciXMdCBrV6f|E$h z!`(jN%P~CEF*cFMscR@S9<-BqzrjgN<xsBhR6K|#tMyUwF}SrItmscp)~&>zLV<w{ zRAL{rz|egvfmw;Vx6^l5b_S>E?hM=q5|~w^N%*QqEgaP{GHrv%aNV}dIP%KI^)F!@ zDW_m9YaAK$4RfmF8(=e37g}G!daJiBX>-b0(`*jKS86<A-+{$(um@hL^;Y(?)u4ek zlzc0;#5k(dH@~ONb+Rv4eA1W0E@C<PZErj1h7I%LC)8G?O=aV5+L-aUiEy-U`TeKO zKc;MJj-O8<jf_EHQ*rzv_QJv%*G}6~YzM@Xulk*(jnT@%#@|1-KsRW;&?cmfYPLv^ z+9ypC=IwzVwNuDP4_h2=XJ6R7E_q#FXvO$9q0Q!b8J9zxef#aeJKDTq{k*L2c2oOQ zwN6~#*U1a#Yn{**vh_rkF{5QGTAyW|r0Rq73-w{WH6L*mm^bE4CpJbQZ_e~x`I76n zp4R7wOVHXF(7M#xC+U>3Yh5i#546tZ+lO(O)!@v3BKwPb;^W8co0R>v8oF2Z_?*H1 zszg&Mdd!|^Kq&K3o1`pU%Kj2K^da$M^rh@CIhFjP7|QqM^rqGqEAK)W`k?qR`cn2+ zCBMa5hW)kbKEOSJANxu2hV+%NzgG7m9BXm$WBJAb>WIT%ru`M;1EXngktRG*DSNDx zef1i`;%DoLYoTsnBe}=aK8ov?g~YQ7Rf@jb?KOJ|9kVPTqOEv)i53Z$4ZCjK+;@vM zo*;-@C24(VP|C|h*A3l0FfoXs51)rh&o{4tE#d8!kvz_loxJPxlUmE!23K9v>=*r( zv*ve8tx(Y<|8uDI)#cW(sG9;^7wgek9UGouj<V#qxD?LWH7`!>%2w>;O@P4tM7KNd z#WUb8+NbIDWProZofhraWEsQrZIFiNEo2L=IKdq^dln!iLEptV>nGUv%Xk`LwK4pd z+$@{nt(Lq!4mS-xVCl7gVLItMiHqs<Hrg|#vAlTOP!-aZgr7T|ez~zs&t(YdxA`ZA zh4fdJ!Ch(nV+s0~lV&;empYqk$<x<S-kj74?2E!>&Z%E+ufn{H)0-m2)(GG#Q*gMc ztD_6$;#^dY^%daC&>!I9{G`Dc9)mGFlpmbY;ctz-PUju3m~#=<IdX`@d17%K^Q8UA zIQG|aUKidXCxFG=O$<vrg?6Cf!90E(M?AFqO5q{zZNJ<s+-CRCmT26NEs}9L>0Qeo zo~d%I09pW_4bRG&9ee#w;xHLEcZu}-5NG+e7r-C*<-C`8?soaOI+sWv(+rs9&@1pt zuatvzT~tQQ@l)?$F7Bgd&jWWgI*d2i$;`L??bFw%^k3P10VVWJBk)n*)Sf}#nBIux zJJ3NH;!s^u73!b+!E40T1a-tVFLEe(me5&9Q_V738n~G^bYBI|TswDa)<q8>@0cFw zB<8W4e6xTh?lf#se#pz~C6Bi{ERWHoFd^@j(sePdOpiJa^`G&MdMr&>$UC<8H1C)u z6VjLBo!~^eAB1<7?{au&u(etzrFd6L&mPjXscy(;XSjBV{XK0MQ?;WE&5#?B32iU* z+rDbkwQO@C9O((+VjZdBqB{e8f}d?rb#i?Q&hQzW;mZ+@bsOL^y==G|0vN+%FouWn z^h)Sl$}`s5V*T8Nyg4p5-JJ{KsJl5XE~UGxfTtmVB_6J)8=l4>j(E7%QwmQ8aWV(N zy;N|kE{@1I>l-@YZcFtCZ2?c)gSIDb<#mgNWA5Xy<%7A3(E@k?f38TMdOa_Ab-p6Z zBgTcatgprrX=6G#*8;e5dOpNej*b`?@(Rlo(+6Ak1mcWGEK|As;xvH&0m|g2mdIl{ zWs2zlo-^_gv<gnGOG(T2SH$<Y4}5mN_JNeOu#CdHCDPek2K6bg;)?rD*gaw|rNWAA zp<vys3we}UTQ4<dm*Y8opfhLZ5u?wl5r3j58g$=Cwc1>@ppWf?H^;ZN?T=_va$c)S z()n|Z<$O=b1?8Zsd(Cqn;G1};9|>D%75HjdQ=DHsUg$&rxI4j7$l*H>^d%VgWSZwv zdl`_2jjzP!R(lg|C4+oyu5q*kPTo*%IHRKd5#@2RT!vG4L)zth&YYu;tkp4Ba~Zxr zg8m}jYohCoElAg_;|20AD}J@3;g|NaJ}Y~B^i+7zjWmVU<ZL$V8=yX_)7xa3hVgZ# zYv@<qM84q6;9BHaLHTNi9h4#L?Q3hB**D`Hs>;x|x_^_a#JXgQt!rYvzc-B!b&0(} z9w%rP`hxs~t{|TCw4=Zw{bAuUj02I!{m_3n_bSJ5&{L8Q#F6HD)Mw7hM*5frG;m&) zc|*1qpM#sQ;#b+)i#X#0>oQBaO{P<ELbJwkey|7eG8fIgO}eIAMH=KrcYk}k^s{<X zRu$HHrN2}^&(7uiG209FG|8>Mlzs6leG4fXvOygYHp}|?5XRYDKOVrXw|tWZ%_A&Z zOh3}Gj+wr0!`j8g6pl<9$A;|UqVkq9-fVpw@~Fl-Ku5SHjX8m`bF;GxmvKEE<1QJW zv7EJ(bMP<R_s}lkUdK>2MJA{l$s?1Q0%$KKm#CLR&<nND3lYW~Yi-N{Jl21+&P~pW z@EdN_31z`xVmE2f`e!=fUnv?8mjREWpdO^0bC8qu2shl?f7e1TvI<L{oay|9viy~^ zD1F&0HZ6W%_CBe6S=k@6ywS#fSY_w_yi5UQT7ow&;0^cWL`(3i!e};rh4S}<@=Mk` zJkM5aT72$%CFJEf%m3ezXXI%$cv`;%Pb*6BG#ys41fO}sy~zB_<nulq1C4+9k6l0d zwISQ12Rot@ve^Y*cjG&Uo@U?v*@x%YKVl893u}1Y?6*<I9O&p|S%UVKLwG|Fj`=j% zugb6<$ap>8-FUOF^lNYP@=e1Xz=`uP7au|#=3S%Xh_8pct^oZ3o9PbdS%-bJoR7GJ z;egk;#fKzL@JM=w6Tj{4r7pBv>wWv07u{Vwi}_aI@@*O8eY#QB#-Ob1?^xDG;7FIX z5#dcixRsTA8~GhYL>cXVWA)oZe;p>=ug$s@v+ic@ed^l%*mri?Ig~2X)K{b*x~QUN z1Ns2ksNlVvNv!lVBR;3RZ3cV`{AS~|z|S(*a%_q8Z6(sTA-+-5w*j8Iyh;7-=qs9; zj=TVk9pPE?*bn+{rIUI|##b0?G0(<ApKH1wasgYQ0e;qXT`;~i8%fqp+a7!|i?U?; zA!Ed&_SYz6$=ki3TYN6nUp=jITL+n~QJKv^W~(H<Ux&9nklf2io6~Jt{FfUfK9*C+ zEAxXN?T36~A7FY;(vjCZOB#CSZ&_BQtv06ZAFwHQ;5|EUopV|Aqeb)aMo*y?_2u)Z z4f8;r!Z*tkexX0`3qJyXrB7efw}&+Ite*6Ie-TZo{1yL8!dH4dLu3^EToc~~U^W2P zY~%YhkbiAZ9+uzwS$@l04vu^Y(~<7bPrkrkRE{_vHqTOL7#)EOwWtiq_z8Lsa|~kd znB61$3852Me`sq`PR>_TX2gbtJkV~X{;+uN{pOfX)=ePa2N0Lon%G~6eXc)o#T@tj z%J{(A&vB%YJqk!ed^&I89+&jq_Hwl2gMG5KmJeWPLo+>Tr47BPbi$UD@H&Lkjx~DY zz4?SEJ=iDS1GmxB3wLfqHnxqJzM;@sG%lh33;Ut0wv)E7-S&eQER(*ay(`@@e{ufo z0kor~#<mT5Uj*yCf$eJHY*)d1F=z|!8k0LzatcHF689WdbtQiAJv+mD4kTXn0r->^ zzpr1`pOiJgRg|CVNUjaeBOSlNkH67K?Qv#ZP#z=V`pBiihjvMWyk+d+>+?~S2ZOH& z;6;xEhv_G_0gQd5eo1#&zo87s-Wb$rKVVEY6WIkl;0?=4S(EY=ydDxhFMw~Jx0x0# zFWX|wheMDPl>c6Y#p9}!Y_gnHA8ke3MqZyn+3AP;aqmlrOY)(N&aPSA1Q^L*;X^r& z$6yP{oA9Io@Fu%EC2c4dxK$EifgErTQ3bv);al?p{HHE+73}ZI==PF&4?3PQV)F@X z@7NFJ_Ao5a6P%}De^P~hDBZ`CcC+<c;La41wv?wIWo%MAqze1Q_iI>p5cVO2)ghhr zW#qAqNnXnN8PbPB|5d~8tAX7|IV3$*+J7~uU&hGjuPAqnx3!jf^_wo>_a&5%rS8fp z*_RWKwgtgyJV5!^GY)<!KljbE&wD9#hV)Wj(7S9CR!@1B5qLyjGd#%i9QA9S&%Hpu zwMFoOd#!kGp6nBV3=l`zv#Zab->i+w{zJvZc9L746&tgm+vUtYqwF+vui1Oy?b+(L zbKgMsn(Q^Svu0t>UfbsGn01?JYsLK(+BRjw+CpV|&XaT(T4lcSu-MXm?!2asXSg6v z>0rKsqj0C-L;XYVf(O*C7#GMLY1ku%J%Qh``BRo5v{k5YY>!sCHn*U5-Vple-t^c+ zc|#fO(6%P)!LUK8b2<vGu+yP)aEBYq+<9%kJG?7<2YJz<;oSSi?{d1ZchSxcfh}5b zN?^P^5NAc(gVDVR1Aoi#I!j*POkPtT2!7~Q)**S;p>@|4)Ll&h^dU~hCa|#^)HbiR zF#vQ%y|(dM@U)Zd2x-_J1V4B$^-tcbZmvgsE{G@38-w^9aiYxe9Vwd@zr9jzc=A#E zis&ie@wEAI!?J0^oNt5WkMctw71M_J#vmSgC5|sa+qcGyHjD#%C0$Y{uv4NAge|8| zC~IMzkT0d`BvbI^Mqei5t)>#=r6$4U>BuPGn~<(q!nHru@MiFvV?eQM{W#*}FI$-a zul#niNKbxa94h0qA4a}!uzVp$MK&1eP<ySvj2?YN+hNJ?ELFBKw;byw`{s`F*|Ll_ z!#2{)Hd*j(wOMs>DgDHLj`IMae&YHB=K<KZG0u$F>)94VyfzPzMV*A-*ik+#Pn+L} z$L+vfg*?TUxBU-T!<h|mQ|5g>ce+Zr(f>hyc4HkdWp4rx+o$Da@{>b&j05dP)>e=& z!|JV{;oL3Cn3we4Mr~025Yk!$Tx`oWXCP~l&~Y`UR}k-M@UnV34PLfm8X&{$$LqOo z#mn$BUr<?M{n~iF+&7@*=9qe5JM|)ckIGMPAV1U*J*v}njsSXfH|Fn=24nF**8Cef zTxFNQ`m#{pvh2NOWv-uk`VQ)8@*vCuV~F@$FUmttAdfvSK^~cZ4)`g1hF|Of)Lj$8 z(()PRQ@3laj$fdEfP-sWp`22_jTVzrnU_+2Q2$HYGdaaPnaJ%v=oYO11atP$vjKgq z-=gn;H()-?Yy<Q?V%GpS=@)uMw|g3!5Ki4^beY^VUz?SA^ZMOKI=aGgP-ZtR{_h(| z^X@;zoEPK@ypcJwG#%gp+aC2pPIYoi37y=6c(aLG0N)0Gv+7{ZUGdx3#zcO<VSD1) zzPPu5eaW*(=kxJ8_!Y?K>%U=g8szf;+*aq*73p$igLcYt8DFiPTKTLVjNj>UVlCzC zww8i+5_x&|ZQJxlC_9|nZC8Dg3F^Gv=nd+;z0eA~DWT11=pc?_UVrTqr}Mz=Gn~-( ztOL&vuRAfHBD%A^gzogT6!*OeEyaCrnilZmYp*j}AaCWqnHAnZcP};nSaK|=_9%5n zE%k-k+Tv!vYVFBnow5yB+h@_Q>8VpC4Cg<v?aEvbc*^f)GSGcHv<%G0#*O4*CJR`? zQO>cJ^dW;oe(C=HOk=~P=3ivK3uTkG1Djg(Dfm^Lt}oDJuq>0<RHD<8aF*X}*E+&C zLPr9IvMB5NzAWFg_8RjGHva5s_|a}l;`iaip8@{t>G+@dl=6!Ba|QIptUrwFYUoe( zznOmL=P=Y}DmQj1yN_4vnYbk%l@s9=<Rqi><kUqLUr9Q&5317mx<aeytGY6BWxQuS zRR#4_Te6<~+*Qy&NS~jB%wf*qg@021kY+!x{-A4CokD)Wju(D$Je9+`z*o}nsIOCy zL*t#*Gxwm_T<3kjZRK@v*Q)+ze`?|6gV}KPkP+H()vDLgzQ3}eM80!^%dhW{r|5rW ztw-fS=FdbvRW{hJ{M_gK;uPFr`AC<@hpp+|-|8B%#?f?C##wUDC+9oT?X5;-rOY1L z7x#GkI-33PA4gNTb1v`4x)E%osCVxlMW!1XQ07L^c?vSjexBzS@VwJT_;a4NsNZPQ zI&r$Uf;`U@TBF`2;;RwggZQdKa!0A8$C!BD%Pqe3dsEcD_f1h-p;hv%=e`H%s<sWS z5&9s+?}purc>wlfn-;&Yo^|5;Sh3+CAAh}zw1S>$(hb~guuX7xwg2WG^D;xsi)BMz zZGeFcL}E*&_8q_`jA#>Pv2WlOt$Xx!93!I~t?}L($Ys<6op_VM6hJFr+S6?(7(3K@ zm{<-W`<{lM`k&B!(6h)#Y?ibQ1A4{g!W*&>vHfM1VUL3MqHlEU8Fid)=g4?h>QQxp z?rn%VKx?P+G^2642FY;H?favK!fw_d+KlwEQCC_Q08bb3r0{nkygLXt+z5-ze#co2 zxhBrPLk`gQ7USNu_;)WD?}0~cE;(x`13B=0oNsqg+x{1yU|yKprkv*}--T9}Q#q>v zEtEki6LhpIj(?$-ae#^2!Tqh#=>2`s_|Z2-qb%1k=-5CPX@4Ja?yt;x<BL7oJ|9N= zTtNH$|G0Y};JVK1KJea$C-OmrZ8(LMXB&}TY*>CEAsLh*<xz$7pa@nV6YC%`l)woy z1SL=gWQfF)kPUZ$@V%PNKrPcD*K|vzr29BSr*zA7s9kQByQ6sIR+*JI>V(axUb)rA zoK#KJmQ9tGPUM&-_V+vAIro0|zWeZpk~~c?L%w^zKj%B&Ip;g)eCPXf&*=DE#`rvf z@p<&<cf;dud<2~H5BB2-I&kMY62~a}Fo^d7^lJdP9d9uP2Xu@cT_wL0^^dHQPq|&r z9>Z<RI)<lfpasV8EPiM4I|cd@H@Oo8V|ir9p>PU(oCY6fA?pLlb>Bbu-PD*K*tv4) z{p=g?=UjYXBxvi#m@a!`dQQhQ^i(*7G8h-(vaXr<c86nn8DqL{=gMDvQDp|UM#l6q z@Dy7BzH>}3V@=omp$gisI6aelr4HQL4sE5IZ~Q<1hOoTx-Gegh|Fl;|`~a^EY^=h; zT*pf<Y5FW}l$TxvJn56_i0F)LhK}fzvXI9w{hsKPXr7l**4HOT(9hQTB#uL3oXA{Q z{44NsPW4G=JiiF%0E;}6cs}Ic^vN9hH=oM0F+UHu=%@4B0CyonPc3L&(?te%0dN;n zc?K8hpk1t|z#FvT^i(ZFPt^z~rKf6uf7nYm*hmYPx4Zbc(^C&~juFlgf5>=k>A_Dg zBxU^HEt%{Ap30T1>tyLGrQ^!$lzoo%dNmmE^cCey`lkBI%fE)Y7_XjAfWA5beRUH0 z>V&7S(mqAS`4r*V)_N;()=$=UbU$Aw`ovhg?RS%R;LPur%D&NK;4%D~Zum7af1%D~ zou{i#RuGGNFW=XwBkR)Y`;`5)V61^;#uWYiw2({A1<Girg6DBOOKbzb-AL<ESqbbJ zbii1YIY0?%F1C6qH^gW9ByKM82j5b@5{BF{fP1wl&t-+je#$e)gSWrXFVo?dQ9rc{ zX@(PF$TMO1dmw>3X>H{QCs9sebwJ;}iM(PR^fsOlKgy5#bC`4Mdb8WNim~GMkV5Zz z`+Q}+06HLEo1P1T{|>laC$P5>?M$MbL_XH8?}g2Z?qB*?Ey%+s<DG99JL01i;LnpU z(x$CnPviXkcnTMk!FsLi<7L0G?(6o<;+gAf+=D>6VtrS9fL1ibS}oT0dnGm|d(7b@ zyoP!`8Y2|^<y~onXX7X3qoj2ujWlFF<lolPg(v<y=u()34~lZ#D!;Abo0)q%Y3tB8 z_6PGAq5XS3Tlf;w(Pzpx+m<m#S)pI4^BL?p`VZn?DjZ$k4qsuJN{xGEul<h7GTX8I z=LxS~#lMHKCftj03_F0a+=H=PqKxQR7QC=ur;F=ijEN@Oe(mpMz@{(IiMD~;rSHSH zT`=71+eANDKZ?3`*yH6>)-9iV;JNRmk7=L-=larb&^@Ei!8NOkb{tI|pYvWid1dg| zinUBDe>hH8iM9Mmdov9J_Bj=6`H!}?;_(5oYS*^`%8%pM@Bgl*jcXd{`1{YI&;67& z{Fe2%q`$3VR5qWyp>Gi!{cfa3&94v{{8&wR!sl+>WePuB?#1MHO6V_Fi2HVDLort~ zUmtTF$gpppcdq=~-%`4fzM_YzKkBeAd^bIYXNm1=o{T{+&(;-M^|57q#oNEd_yWfv z+bwUO3<h>oaZVZiNaFh)o0|~d#J(rg8Alz?u}i5sW=H%w{dK?x42w~8;=PFXlBd_x zcDxT|Y(E8Mm@q7!!gr%Xi`YTyz5Ad;3H9wB9nx3MQbTtS;W@!e#ZUU8`pTb=+g?b_ zv;Xa0#QIwCBy%r^?1Mby_Fy8eOxwmdCHG{8_70du=)bIUPIJ2UcpQ5Gj_4kM1;AWX zU#5n>EPAqQu?EUE_Tt=h32n*xg35x)1Y+MeO|mX!4tj+$0z2dOIgthp*hlVtqWpX1 zsB>TkqjNH)dR6k>*(clu%zU+HSeMJck*bTij;pKf+PRqubo5}VY}8JwtnI6<)KLfe zU1CtFx=}m8pL*E($-Y=DR(v4kx9utXhK?8N#oPm5&6B=PM}9Rpn}Q>266yM=7edB* z>Q%(bcFX<v*0+-S0wu`6F!HHW%9K5C4pl)q>Cl%-A7pv$uk;^fdK4b}Cue1VdpE{w z1-?p+_LjW2SQO<>^%BQq(aB63<gx9zgC+im!V-VP(FgKjJ`Q{%pFXr<<F3D9gD^-7 z*i`DAA$dn#$~E4Hp+km<5AAz4F1cCYLjL%0`crTQ>Q&)q$;~gqJo6!M^rf0{cfLoO zx8{GE?2SP7MgfO>Chw>x`+@Js+Vl&bNBnMF>++7;3E)SZM^gM7L;3*HM^ow4uWXBJ zgsbujYjm#w#z-Bw9#fgezMZRDztXBc{FDmX?SbtgZG~<RoRV|9vS%_we!1VrWP&kD zqbv6;QYI*OZ=}ZL1ZcQR^WIG5O(JiqUXA&N{R5;~nh%Im1+&nF6X??<XfiE*n!=vd zk0749sg>LW!;q&-UOh*P7WGiJto}v97A5dId5wBY#t7s=@W_%`<gp)-zQeQc%P*3) zrblILAYXjHQ-3M3D8Mw|CxHvwMqZcVS>P}9xA{FsTiA-0K7rZ_#^dPE*na6Qv;#dO zV|E_top>)}3}9T#J@L^z5P2-CYacS!W$pvJAs1U=`~}YE4G)8F+^Zmatg>k)dzp9+ zMPTBWwugISyYO5<-9E1Maj!*o{orNDM+xopu&l4&h@<u=ppQv7gkkA=Uq%V<J-$Cv z`>rdO){o%t9Lh3QAakW>u}3!b&N++V%XXl5`@MM%^(^$e&{yzLT*~#Tn>%tYhP1Is z&=0@DXVQ-4)LwJm8NmcT9E;K1P3t$wj?URy`Ap~4r)awSVe#wR78alX_`);QVCckc z!2>EU(f)L_J?O~``6sa<$jh62=D3G!Qvb8>YGdS1Zkd~8$jeLMBjXe4`H$Eh$|7{p z8NezTO#D(#xewapMR=^d>j1rmJRXo<X20qCFxE~V%zS^IyBN%nH?RHR)g91Xz_YAn zJA8e_e)>H2WKPmm=7evn$eiEaJYcRRbHup={-g9AeSW~}GihJ(aiTmitzLC=#1?W# zonvxW^kJ&pRcsuzkUNVNj6nvPeAyq_SIpjq52j)`mhdmcKf7BFH>HhE;@$r2{=U@x zg1@*6_qvr)sDOX0&vLx??{<A}!!Q0ukGtRKf0pH6AO5lKTIKA1LDs>a!27U!mj4aj zz57>Iz89yD{vUYmir)oCzNYRC9Q{3{eKMmQ;pXD>Pn|^<ss7>h1^A|y^tV&rwGVg; ze*P6?)%m1<hM&FLZ<Kz6_Xd*I=kad<ND|hM<KJs|Z0I}qkUNZjm-M{~evRY(guZ_Y z_b6WhuFvZ`t`qJ!hx!ZpzJ$Abdr<ymeFq;q-$eeTzN74qP2jy>-+wm<{>C!ir}h00 zLH;*T|DwKwH$M&<2HJl3E`)=I@P6Fohu~@PWxS8+`@KQ%ezYGb{^1zjuL8c6pACW! zqP?8GqpziD<d?PnSAyUtk3zhb_5Dl`e58o-gZlp4xY`=@$ZP+?Z$Tu>Xz#M-|N9`g zqX2lr`hG14cA(ANi|!pI^$*Oy$)5R(cZ{VR+LFI<cMoIk<N6+S%0mwHhr1pGyEGp= z?A@Q{A56VRGNt+GTcZ5eQt#kTBL9C&z5h<?9sPHI3jb0N+}e$lON!rjQ~6hrkAK0k z=Klc0Vjl0>pEmIKHoyo@xcs)CNY-z|z2ffAwbzDme&;CY=Dr0Sv^@xyaRJoSdoA03 z0iq6?<}WI|8F-3>e^TE;pTPmtKd$fiX7c?nBL6jg|6hZk3YvrkegD6MVCVw!kLWx4 z_rMU|m0xXthWF!OrQ(yvxc`~w0l)0Z=iiUA^5^gu-Qd69ui47)JoznuTK-p3@1F~T zhhGPLcdvPLDW<!cbN|8JdmcTA&*SZWZ2!KQ$95l_o1K}DUuO>PKKSIG+1cHD_w9e` zv(u9C)T4=V@|sc3-MzW{QGE4p?}6Q)J+S`^tes4KY<B-a`EYtNd3I*s-ue9*#ff5O z29e0h*mEE=`N{pC&un03pX+=QodbIh?iHFOlc)CY%fOu<iGOVWQ~TzHsL2|87v^|P zdqjo<yHoh#p42^ae*Vn9gELcJD+hM(e`-FRG<RVCV|x!CM6(C>$)~K9$_I8IeCknL z?LLk7J*jr5rgk6L`+0mDb?@%ky^qV)@jv_2JPFSmS|65Xe_B|_>sY<4-9LL^2H)-4 zGe5I`Un&cwh+16jf%!fA?qZ<__I-AC@9yE5#~)|sp4|H+8i!Qvmk*Hr!d~#`!0v|* z?0<6i*#24lcI1pee{jFtRFCgW4$pkv>OOv8@7@4F9-I3jfqz;qc|EZEQ+q|i2t9&r zdAQ}?FZ%O)zc90J%1;?4GXV@OJv6hxCp4%}24ob}8Q<^MdXNH{N}?zxlYV;dXJ__( z`l&~8_5QS9`xE=7GEzZ)N5Kc36nQ;FR&(MfM5tn-8@4XpZ*Oc5*sZK&`p?XMac)}4 zN80XJ0l-H^kp9^0o`XVsSM0(4j@l*)MlgFP^+`3*(E(1kpcp#k1pQySS@qOh{G2ZZ z!G|<GKkGe1zeefM&Gvj#9-rFK@;8si={Fzso-caOug1??V3Q5bmMQP~i1&Qndww~7 z?tuNab~}dR=XWh)n~CD{F5qd;?;C)Rpy{`ukJ0l4+*(VYhTmY%%LuX9GjNE?zY#yb ze=-Pqwaoib-kv{*GFvtMR?x6dpKn83cj|L#I4)nh7UTaR^xfL}P$Pc+aM^nvjGueF zzVw`k(?4=DhWQcTWBt0l6Sh}zxE=UgTem-lTXHP@wK%=p7sDw7zQHM9jN$Y`1`K9z zcU-p@@Qt>;i!uCO^f4-bAuhkwtGm^s!`7>D-EF|%aNc$@e(nSBOdjqSjnnUZK9-p~ z0mtfYzZRFjt3U47T|;qOcX{yX;#u8$#^dt$KyHn0_td=fqh9)zxb9DZ?*`|m&c@I8 z9S(xKl>Ya<9OL!?`n5yTA6W37UyWty!OKB#x0V^6jp2Nv6a*jF^iP1E(eq33^FwFg zduf@60Mnj-26gYz^bz>$_rdSw-w1r4`||n>I^1t%jt9ZtwCCsHzuEIE@Xhr3VN@Hk z=b<3D*Pf@~kJ&TuwC7Jg5x4uveQ~>=JRG<C$>%T^(7HQ;m*KE;AP9cS(nn()cFxB* z?1T&(ZFi#Y*6t|axM#R(U)(o89ev$ot#4%B)j!aWPoUs$J@=RA(LVlwDgNyK^2~kv zh<lVFq}b;t@o(D~F)|qJe`+$ApLKD|pfU(2n6aS>0OA+-IZyJJ_v|pei1-g<MRJyL z1ZntJm_%8`ohw=Kj#lTKiI2r*2v^?YbrQzZGI7LO3*(kv-lH?X|DeM^_X_eP_KA42 z|D6zt(*nN<jm>qX_x#>h+WJrT^#0R-wp1GV2TQ%T;I7~6_$T{_BrXdaxo+UKo1`1_ zNMDV&GPY*xOpMdvyKx2X{fuBC|3ng=-w!$0fI7ilR>#Evg)c*zhIK*7XRNrKYERFE zgqIYrQIwI`BG+0|abAfdI{4T}#y+}O?GV#IZ;9FIS_ap%I+olX9H9kbU`(?*!x?pk zkzYvFVVcpByidc7<e`pxTQcf1&FT}sG<+ZDat3^+S^Yld+u9@eKW2I88}qDOKc3U= zFwOD@GV+;b`50>n9y_{0=F!J#)?EzlnM=`W8hp*%|Iuo^{nd{zLUqP}_L7P(Zidbd zppqm;7~+@ZI`9v1Es1v_%)-CC(~Rzg|FbOr`tYxSe`}RX#TNzMhY3Lc3|=a}nEyrO zcUd9)TDeqwQNCaD$&7L=k5H2R@j8*<GX5dXAm2@6e>?SE`+&D#a~b~~=ac?fyY_Cs zQTh$W7Yz;xcvJL(2fWkHZ_zaO9T7|p^j+f}!QFU=f73SS;wAj<i2Gxw@b`%Oah=37 z;yLb5^XrLsGqN%jm8s6BXZO$V{@F)oXa47>WJ+i=oN;{O?cn444?G#oY^3BTo_uuw z?9^VFuEw)RtK{c;(7&*6_fOBvKZ(gc=1lHscT^Pk%|gV~e+c{WNf~=ywr`t2EZ&6J zYI+X5dzU;vKF_b+Z(q01u>Gg*-oW?J+Aa(2+{h?{Qw7-Q%(INV*9Lw7*Gg%RbsbB- zS1mpP)6`Z>(k7|TP(XTz*>?T4{a@6FO?j|Q>-pZ9*fiLqLBPP?6|AvgG^o9yK9AC9 z>##0_{a1<a^|BAPc3iGytj)BdL+lHQPeglZv^dXa#pOpygNoN*|Bf7^0eu4E<$tgE zhWr0lKn`SW6SCpU0sYh)l7qSZ2j>qyc3@_1{*IY_kMI9$^lh*<RiB~(TG-Z2v>&uL zv^BI7Eo^JsF!KCAvneUt+OnM4R<(0dE(^cZx53)R(P)+pPJJ7!?F%T^<soSJrEGB9 z-$R+7&nU<8o(;a~1m4f%A9ZvA|40|&OFDTrSZwtu((KRLwRiiC(%&H)Z0!)a&3I9p zY-=0=)+s~uBMj6A!zSnW?$$ue2sxX|4}N`m_e1;l&F_AgLjo3WWY0mSxya(D@WoRX zX!J^s9hmt%zEny)ehqGd&i{kIi)WR+kk6VP{{1*T$7fB?{V$gO_&g%M_;#`x#%M16 z@lxsT{_U7E-z9VB?fw1t4B#VR+qdt)SHk$Wp1E|cM+la*i<xt2=)*qGF4|rp+69{j z)pVZ8Gr67h>bk!lYW16KiS8*;Ta&b>sl0XCQ=6C6XiL<Na(;^as@QkLyT00G4<Glw zaXw}?k2=<D9{2t5e0bj~wk9(!Ku$uMu#WjN4?cKrsXVp!^PiiU9~*nHbYSo7-aQBR zmbO=VO9OWf+_^n?0F3z?pWXMAXrnFpun=~H!JP-c_#{5ci{JSJ?swXr0AbIa^LrQO zgFC18%<l>Ad=x?OI}hx4FK^4nh!RlZ_%)e^)P%e6ZhtD@L2BNTKZ*iH{98k}hAij* znXX9b)|TZ`x>d@tP5U$aQo1#K1_jokTSLyj)}dR&ODMMv-P-ml%CXOD=vJ;L1V4#? z_Gfglcl(Xfe?+>q!!;bb_3cPeMauIRXZAhxDd<dm<{7Jd?(ZA1jtl-ptm76QuiRrA z4m#|vyYIgHt{rz*TIsm{k8i;D50|Csq>jt<{nh97ecd^4+&Akd+u!GYllm!@w@&@E z>is07(j8MUFnbT&v5%kI{%fO0f{Q92{IPMG(j#qGk+%*#5?t|M@zKUbN{_TGm(n9r zj{cMV8Gb1}68sPa)}u#CD7PLxLWy0E9vMQpb?A{c>ZSh?^$7JJ|J**7$LB>EL|SBG z`*!DpJ%k9xo_SX^_*<SH`Bl>+^9P>V%P4|rl1PuhFUt0n?%J_kyrp&cO5ve~v`wyX z-Jv6B$J{yd3?%1{JcGpZX4D^y6W~{40CK+>;{`oCN^Wm4_f)3d^LV#8F5?FU^?_>C zBb?_Wrj4^zI@fjI*^)i=ghf53`+!@WSIRnr9Nhs9ya#XxF6Y~2#T|D{-*k@t(jwxG z<M5MC04L-lebb+-A9a}R()WWeHC3-l9JzA|=gqO7v@pJ9)BV^>+l951TiA!CVVpbP zi~aq#V}Ji<?(cu!lYob_JDvBUZiQzhPFI6l9_hth#qjl%M%??$H5u_QQC{wCc;Mv9 zakN=mNBdmM`9OC2T{|+`|G;|N_h{bgylhLq8ts}7O!~<>0DiF!6~$h<>Y%66fi@{B zuRb@{MK)je_5sshjmx<G@O_{W&!1tB`4`?#9-)lv&933D0klUM<$6vBp2=H_S)D)~ z#uWOv=Qxr%+$n)_w3X&ZORUAai=KFzJ<IfmTdk9Eu0dQ<G>H4-e1G=&IhDO-me(;t z8oKc&<)ZOM+!;SR4mm7R2G}Rr&u!zVxliOpm)|GQjq5P1ujlHo_j3O^(#L%qbWP0B zoVX?DD`|f53^MrgR9*M73te>#x1!y8br1Q%GZ%zua~Ph>B8~Lyw8Sw#f<C;7G+jrN zG~VO!8qzG*RN}MJ(Z$`cKOgImL;6iy1_CaiOpnK#VXqGQoj;>IBR(wmm%ydRJ?G7b zlDtVw&Mj{)$cI{QfMt=_u6c$}1RHzSll2eb{U0Nq3!RB|K=kP|ayJv|Q_k(2X)9fs z=_^vlqpnZSu0f2~{z;50<be+UTBwZ?(wzE{^UtU*`7Cv7!4a>X$guW#6y>d-xKl*r z*qwm@{#u4(-ejETR-590fQ>nBWE)z=gR^Wy1^s0V8hV*+hu7-R(K~u`FQA>ueUqP^ z-81#Y$3fpg(dWtWB)kQVe;<6|c=FB?<X!+y!YlRxXXr-!HZV?k?gH><_wSi{Y|k3- zxo*pI9!Dt`IGabCD)=_qgFoPTR;AMj%22LK=tCKFZ__(N@eM$!FXstycJ6uR0|xF; z$oC5@u|v7bz<C%jXon0&*aF64D;Nf^zAbmzo)MqtSz4aK5;{?5WaRVCF^*F?b5qCN zxOgrtmE<lo%B1orI0^hBIE^jA3EulZ9+d8>S1Eg<7pZp!J(<IvheIpu3+i$`pK@pC zcQ{t$o@V6nS>z5h>jpf&cgTJO+}+4L*2gdJIFMKh$`BWxfg6IoK8JVWDs`YcNN2;_ z^osQFn4=H%R~dDrTz`;zjd=U#zf^BhUlk?;=TE8rY-Nux;aqi}o~tgJ&&KhAwn$Ur zP2H*e7e2{142MqTYLbqzkd!UCE6mDMZ{jRD@28LKtDh&&u)UYPGD1ht%=9zw4Y|fK z$M5#hzK^#*|8Br#`VT1|@%h}^txLTan=bEqGH>WkFHgRYXZ4m!ZM5U;C-n*Y-LbtC z<ndc@dObYqVE)K)f}WId;L{BBOni^S&-3URl`(p9yi*=Yx9bUd219r1w=kI3L>u=F zko^4_G?Mdxjz+<l(&+7Ihdhw;_}V6XV%bL{F-ppIy()atu_QW3>gYa>=$;9T1?pa- z(F=r|F2gh(C;h2=iZbn<z!Mt~OanjC7h_z;W3)etX*)_bx5-_`zKvG4W;LI<k9>l^ zX1<I1P~kQ8-^%w*KKA)NQ}ZR*g}w~CBQmWzzaKc2J)BOa-WxjZ;e&<4#9zPlDs4gs zNqL7)?j(OPkD%`4oiMpd1K-faJf?CPeQx>v)m#H`&EI;N?HfGu7qI$L=i?*%VK>i7 zdGR504VC3Y{d$%Df%A32_ddeIulOL+4rHG?;n{7X8zJjr13Op`u-#Zcx$=_LllIWh z<@Vf*iFpNi3BP$HeB^1>xu99gdp}$Gu9>ox^r?i;vYvV0<l}RDrat>5_}rbrXUd@Y zK;*M8dq-36N0iSzJ6Wl_zRUOkkB`_p<oPJ*(4Aplq%9pUtz>$GeVaRg_~_gX^zB5d zZ*~u3R^N_$edB!YM*Fs!Z)oR(IbKV^twMRLZ4o}IA2&U<XX;6QCuKE15q_ZPw=(YH z*{t&lEY9Yxpburj1%F;gA2RJf^5t$F_>zYO2hkz9*KN!IMl?>4AB_X|4BL>fsq3~4 z;>*~WieSn3QM<h{J43vF)ILBbXaoOm<+|_7qA##NV*fhvEO+XFKeQ`d;Li&9Q*`wL z_`pF(d#HYN8)y!HEToQM+=plOOVF3$8v0V?2IKKfw4uBVUeIyNbIOx|N1fHV)SIJ@ zR6j-Tppd%onORqST$Z(O4wJXIzmN7)>id2f=q-DFkyk`r^HWctJ@Y3k%p(lo_6D9s z7WMrK>M&pLGs<1{>d_~~v{3YJB)g{TS<kaeSMVLUOKbS8nfe8A&|k5aw9D+D==<6h zv7gjinh)9>!aPy$Vqv=1zR*p_SBI5Z#eT2lLtC3y6(^w|eBReVZ_W{9K8j!3kec8K z`YQjhry2L-cw<QInB1WT8Kj-Yy*klcjyi|)3C@qk>X13UFZG7sW;wz_8s^7hBk4=^ zBi+BVLvTaeZ!q2Ybt`ioA1#)(9zQ9%a}u#s`JUJb$SdIL{2cv4Kf#-m<ORk=0G-G^ z%3b_+6#6N9m=HI`*o*Fl9*FCQm({Ofp9_T5*b@BFxclCl^n-SO6~1N3(5g5uw})j9 zmx{FuUfR7I))%?kD%}^Ox5=9NAwmz#p@uhrd#223tli>Ald3Oh3n?dv4HY>)u|Lkq z0lybtryb-s<7Y%Cl=$q%vy9b(>VyL7$@meOIJt5G@I)^m-muYj@_^OjwUY;|mhFIl zX<1uW%un?I*B!Vgt^j|n1UgteN^}F|NA$SMr;cjMNB^WO@*;lM-M8;l4+bw1f6@%; zJ$SbCmq>q`S3u62?u2Ny?@(YkJr?0l+*Xri%;S4(9`DtEF{yKcmxLbB3ENA-&BR-6 z758w`@4tw&W`98S59WdM<7?S)_f16`f1;06KM5WEx#zmzA!emI&*(}Tzcn12VV2(k zn0@a6OzP`mz3S{5)`MR3WGsEh?y}x<vk2MHZwknHgJ~Tbl#N}0H?4Y@vN0j=PWHG4 zGH&_MttG|*kT&L(VVr10^-K}zW2%#<@jR|N8TY$IJhZfmOH;jxdP}|H$4EZLipeGA zhj)XG(>~bU)w<STc5@PCCf!&rP=3d?f5X6yvNFcGWgR+4?ViB=SnWO6A2?Nblljzf zT4tBxG2v`q;T7cXQu!sV@Z8crW?ob5<UIUEwjubr`vH4SQwKv|sQ&L!_|!iqGu!j* zzc>Ce+tWCXtb-bS(gXGd>z11b*!EKI<^l9CcmUr&2k+>EOpXMbm(jM=1Fr+cJHo9F z`XS$~bDUh+r92-(n)QwHj`A+HWbKi*fX{M6A{!?+57lwM684#06CB(fQzjR;WXQ_B zDOnjJAGf>soXJaG^%!v+LYsNY41G8H*{0X=n;|osj-bvs>QsQ|D4s`EeoV)ZFM~*T zeRF;W)*s~Cu@Sw9Bl|OSaua3072Tdgo{hi4juLnRco@gTAuF9c*@eC`&ZaWCi9Qr~ zFFxNc_uMj`mn|c}75p7W-4Q1n;jNtCoUR7LT<cX@QZ{Y@O&}XL&DN`;8+I{v)<9jB zcl{L^vT}rJ`UHNPTbqQ9ot1Q_R|==KovgmstHE@=H)zy*qdU_{1EWoYb?V!~<%Z&* z_s{P#-C*f}vrET2X=FU5tdp0N!9mThfWKFeMmqDJD5Z1$Jk!`7<HYb?@5cM!)79W^ zrg09%ckqGoO_<~fpLfA$y<6hc!RCs{{8xp)Y4{TYU&l7!)3^0ua9_dwb>OKwsiJ)8 z$GxH)Pc3ml`vcTPgvn>~S@9j{mk1Aa1s2vII`C|?;ar>cWk~(Rex*;JltG`Vm)Tbx z`(>mT>(yYF;wN+)Iu(xL9?OQ7=|UOM*~RYZ{{tWK=S?=?Uy(m4+O$!QBH9ywv`bh% zeH4z{djT1voWRz|_kB2*T8!I@%1mop-guHV4Z>yIT5vHP#`Ok_Yv1QVxn>>Du}}P{ zUnT?bqe&ag31ptd=l(k8$|~=H;WZZo{{`uTyo;S>fCK4E9t^514I-cKedPTEC$FEw zv)Q*nExT@h!M__-zL4)eU!wco!58~3eFk5`=TI-r7sB%Sf_VnNPrvB`WncM%bC$vv zuBVYN=`tC731xh|4SZpnK3_Uo@FgGPwfTB|<9vZ#5}PneKEw7>#>P@<<nuIO3k{+7 zUj%NQlo`Vj`I9<l;CO4AGicc%{jKP)#8v>KtnVfLE$VNg4afl3xh4^3IgU9<W;_#k zRMZZ>sB%_ezkn0{MCt^~r=M6>xhf%@@d)m*k-Z_n$>vnlZ?gV8^wmvMc*f5CAdg=s z+ov|o<5|W?eVf>tlJ`x}9_0CZ#VB)Pdr>xe20aT%=Q!e6=D5LgOWVl2CV!1%S?A&A zLlMWf4iolL=&5)E*8nuLwKBQ$7d}(otxqTRF?FJS^F^Y*HXs{X)@%&*V^j`w=lDs% z-E@Fs5<1t)N_-V%$xriT6z-;eEo<#lH+9sjLe~z}`O3Te^UZA~`fwik%`}8O(YB^^ zY)ihR=(j4bZxAMRg~+DaEb21CYSA|By~x=b<;gepU&;@<U-E$CkY_FZ_4Z;0Ese+2 z$#0pCTx(~$fW>tR*sUCC*-BO#Z*!Z?_^W@gUY;rbj8}|h;H`2S4*U;_H^<Z4MFYyp z+XajA*i*;+Q2i9*$#;vpSiXI)K;#tpU0R;<B)T6mMLUp|C-n!ue;IjY)U!4EalD%? zNyNK2&qq1&Lv{T1E#htteHMEJJ$jb)r5yB$+SCH=9?}O^TSs6SjCU!EG59{<jc=K) zyab#0I$|bW8c*ZcDBM><EV;Kh=lUx9sx<BWhc(SB_rVjI#&NIZKJvV#k*-#EP}A~= z?G;md4=w|TZo>iV!X4O8-N{%w>cfYTIeiXe#_SdRVb~bZN9|XEu%C4{(aK8<K=Zqz z@?x9Bcd<H*4a(XH>?_*??C2XjQU-Kp->eL6WL6pW)yhy_vdXyr09Uj{8g{B}v36Kb z@UOM&FLV~;HK}rxzs^+OOQ35hMc2&xpHttST2%d5;lAwJW?Qoej!<8soo@X;IQu8# z1@;&|ZT^1v6xX6}Jh-~l?d${hftAMFgS+@lK3Tfj*^0n&d=*$K=h9Z~X3*us*e8yd z2G&W6mFM{#o<I3M>d1Zy*z_T(k2dR{72YIqM0x}La6SWgnff+8>Q=N*4S5DXYVa|3 z%!J+W)6QXhG<}m9{_-I0qvAg=^<1AD7%w5=9orhb>cMmAD0A$i0rfyP`-ruNW}2>n zFUIY#z(sw?MWbGY4(JW?_}8D+u9rVRo<{8h$NE-TmrC>ThsH<L?FNpW{5_3tqdtNd z$&TKYA9DRf)=qk<8-mg!y}?}yJE*a5tzoaM0ei)Roln8$SW}*dFXP#CC;f2ILDKHc zNavW^iFqFS3z-;_-;V~v$Dp6_t%06n@X?P|<qRijID-290*`n<5jZ(OUC4jK^(9<p z+mxM3Eoh7H0so&)>pmFK2`Ufr4Bui_U^;nfJdJr3@p$H=xwx&Z(pLA5ncyhp0kW33 zpB}uH`@7j6$Ru>g=Id+&bIU$~?QqPqF4pLJJelOWhTK(!U&e4aUL!e&`~udd`)yo} z1ixV4)bjh`+EDz7`|{@8cE1h4gx?q*#&5Y^4a&CGzO-%gJl-jnjAxBM(u?mV^=_Wu z13BgI(#*~U{yx$R9}_fxW~<mN;T!zo=uUIo0pA1I-O4}qL1e3Ob5iH1KCIX`<G|Y? z@Ok(}#B@kIeEW-IW;Hk>^Xq^!x&|Da!-(v~YWQ4S1CET7b>Q<n`Kz`*^Zs?%^h~{v z_WkkGM>rS<Wu*5(Uo$35+V_w@ptsmtq?IHMG=<H|;~8^R_g$Yl`Ta1yQ_>p@ljg9K z_RT(l0bL{IITuLP8ABb39jsC(m#Xs|>Reo-owih+7f?riktW=zKV+Z4juPkz{58&L zxJy29UqozcjWW4)lxfQ-Lm!g!QqtIX6OjJPH~ahW#P^r60-b<(yx4&$)T19DW4wk_ zb*yJ_)XtQ4z^6=q^K&G;`(f2#<bB!GVP(WKmsKvf_vSqEjUMD>(W7q<+Q`?dK{3+b zGl&Q7miV7b+lsYz*b8s{o3>&j@bVe(@*X_Fi97-=io^x*xo(5?o|O?i_aipbZTniZ zUrrZ08dAT?nIh=dX_T*QFUh@hG9FA<a$UvwAm958%aG2n8Aqe%trGK=bc~zB&NpJr zqJ{4PSxf5n@Oi+JIYg~p<bghdPp4?ip`X-=CJSN*P^Ta1)Z-=#dCD`|V62vVA|{cC z7%kG;At&y980Y`tqB~32#XiA*A%A3!gSvSw$NK4Vq&xT0Fiz4{uR6ck#cfwkAg_n* z*HvGbpSTX)HY{~X-$-|?Y(!5dXvTP$@W8FNuBDsPb=R$rfwPTWU!Ddf9eqj2gxj+t z{KI_ZFyylW{{sH))kpj>xrTmk=z90mm%kZIVD7X_=T0M-JB?!QG={m;INFyrFYuiH z(h%OoHiEaDdlEmyae-fZAZw9Gs~}DEas&Jq{~6yo#roxoOQoQaUSokDK8Et+s0Y0v zYdU4pyAHocc|8gliF|p=5z6z-A;)VO<*0vbedYx`k19T{?RadyE_qI-DRVtmR{K_} zS0xSeWm$*l!Fvg1uzn!#mOn1*N+(5TnXhfj*|+z>e|s5eLL<m7bxDuuJG4n%>*x7n zl4ZrGM!f*fMIC>bgUZ~8I>++!UVdKl`_MMWuk;^%Vjo#YcmaNqfAq~H-UD65_WG!| z@l3xDbNd{>;}WfZ;Y<<rM2em_nXbQTuz{~D=V+VY)#9&yaKS6rWzWE;>2A@*TXS-* zKy-yWR~eN@8>F4}rQ7tXlufq5ep$I<q8wmmw83+4{XFaEwM(7P?=*4GpT*-zI~xnW zPklntUEkBXbVPY*>7q-uJ*PWeKdn8dCtVubOOB&>t%<VBI2Pnb?lvW#X>aV^=QDXD ze8yNCs8?ltjxUu)#*jWPW9<;;7}%3%w8DJ3AA9leP5D>8MY&KtG6|l!^_AaSc{3Fw zX!$KM=n>*pR=d#w92vtUU&UTPufgxxJmBqbI49*DJtdA|x<z0R7W855W)~-EYzfl) z9b&kM^>FNNck3o)<wb|qw>=QlVUh<K>qy{*`oK5(K5mP>5tKK(^N01}^R&GnaL@<9 z<XBDMWcr{E-POYPmGWx8#FnC;;!6V`-w$T}EI)X)`o2%h`dL2lYW3Sv_-FaYR=;3$ zF#O4n9VO>y>ikXm2Rga3&elbJjmm?T>RY#j4cf#$G~lcQewIINvP%0#eww_U#kh_3 zH>;hEcn=*~u7LOHGUr{4AtfK-8G-9$Tzv6Hd$gxS;w55ZPKjQ=1#{*32H?<^CiS&^ z8_)1-IDbj@dPrH~l5rj-!WsHN<u&AZw0;-rluO%F0y@H{TlVnfeiXq`{k<d1!x&ri z%E&nP^hqD|N&n83|MV*;(+9dzuZ~K2z=xb4$Fs#Tr9beEC5?KC{j#%%b3yPYy8hqE zu|QY?$N3<KNh8%0`i<F@lhzJ&jpU<VUgMrJ?$w7X!-v9m!vFJo$y?QVt-gsjqQ28} z@S85E-*f_g(@E&N2HHEJ`i^sB_Va}49=wlGr@{~7d0^&GBENxi5&VWUb*0+d@Izi- z8tQX!j}hbUyGDZdye4Ix40URsPm2HS&Ls0JD$6~`_UqN)Byqr8nY=dqd^=W=bO+Du z73TyK8R@iR<KQ9BuagH8`a8}(oxd%Z(%;ARcUpg+@L-{BcR$F|WN`Z<pIf<(dFB+x z&@|+B6t?%If7b`Tq5iLucsJF39Ce?_uKTY)(Ev`2{VSb>AE3nm(x*K-TY3fQk7txW zkMt)p%3r7{O|b`N$YNd434Ki8QGyQvx<Y>qp?+3-v_U5zm;4r{^qu>&cCP%(W2$Fp ztBq&wJk2Rt$1%AYSG{2S6T$a)y?{FE3+94)6*4drjN^A~>2sJ<^SxKvJCUGu@*Msy zz}V$rzpDfuhLl^R8C>oaCtm*jsa~Cqt0<em8#<?3(m)T`gc51&;J3ZRbkHhLIqgZk z8!auroXY3e5qiLuNL?Ls1M2G-Z;8L(&WKk}^0Z!MsaN*cT0I%Z9)7|T@BN|&=e#}F zwjg$rg!5dg{pYPL@RmGn|3V7y7o?oczd^s{Es6Nfi|Kr{&G^nxA|3THP9~|F$#=>b z;u86h@WWqJS@Za}WzfTow3$@gf>fU(x}guGr<Kd6%K5Y=Jtraag%&V{-pm6`(%LVZ zhAX_#vg8BH%DO9PkjB;L6Y1@jO~Z}&0UXFDmMylx*XJX7<(Eyvm3)kyp;TOH67_7n z_`3Owq=Odd&#=Z+CS-2nVlO76jt@>oMpr54XzR*7r{$>6Ek<MTT>o9U7gj0v0(1jy z8T3xO&$k{A@4t5A5c85)f1L^z&{v&z=6D8q6}`Cmij)<)=D7DdDoZ+wjz!wemDiV= z$K>XVC_h48VGsIcp)cSFE^Z#R0v`Z#`pr|w8=<T=wnVWRj%S&}qI?&1FL+iFTtv2V zoC`;|WVG$e*ICpZ@akswLv2O!On6&YTu*cq<wWqRwaeb}{EjO8qC@Hj*!R4{TmMZn zPMbKMrJoq16ZVX8((mnuEBo+)x2;=XZ?M==@dH7pM9c`bY993@53mdML*lCeF4iv8 zFGV{6>8N^6%EGTGc=bA3)I;2+sa^-_ab8cKs-H0MT*7m?UX^$5A7fnF*LTA$;HUMT z<DJu|BQ5Hr^;AM%TOHz;ra?;2`#NB3m3ry+{C-{Z>bW_qNApyBlmXFM;L~%f)JwOQ z(C=P7H^*(=UP9NeQZL=!3&4|d-SgK)?+e|XeV{-81bsP-8{Q=$I?DKhae_TOkL};n z`=ss(VtyNaO4^Mg%5i@-^+Kcv@ZKr!&hFXzgxN>i`y}lsoD$~BuUQ?)!T@-~F;(Jt z_4EPTGkF=tn*YeLYA}nn-#IUR6zO9~pGW$FmwplH&mnyg=`}C?d8EI9^utJBM!M-) zi;H(7t!Tc3&O;g;OVqhGPv5!nXJ2d9ap9{1&yC&H`cx!b=yug(ZjOX`$YJ7HM<46x zBXB$m9M55$`z-O%b#CU*BYz<yU&b@?7m;7f$iJxY4<mm$BcJ0XO^+_XBfsTrw#*Aa z2l%8#-t~ZZK{xj6{0j7QVG=TeawXM^CDbe7-OcY$UMCFVUSMCKdyD!$pzmk-F7$4f zy%4rmcNFQuk4B{TZ~9Y}-$lS9+(DUlpMo85xD5ig3S$Joi*sDYGU4+C6T}g}WBNOy zzi(;ZIb!j{HkZ_Slg+ylwibBqqHl)1TNg3Tn)bkBE&r^>D|R7XG48MPpe|w=@GA?^ zI=+oRt{;%jBPz38WA4^@evenr_fv(RN^8=F<uLZdhaVXX9@{?|JUJ&e%zdA%w7nF} zVm{Jmu_Dlr`%fwczdqvDG%<HA6VG}X`)?e+{gB~4?8)grR+TkMSI6lh>JrL<*kjx$ za#{J>Z*b9H>MOaQ6yw8{bz|p`IKS8Wlr@nN$W;Z;eW+hz`^U<1hZ5VA{vki232@|i zF}e-wJkIKskymy!a(JPA>K!XjdYX(*AibOIH46MTTK;~>p_~(d9FFc>`NsdQx`K4K zeQm^}i|~0Khw?Mt-p@UBhG)4Bdf~k<g;x>j>`#A`?#2`Kme78=5SBf8JSXWwv+z^I zO=)}_>CzYI-{<g*v#Z#H>eh>+Gvn%ec1l^tSC%yzydW~-;#jl~Tr0WSs%#c~<ss`m zSJ!@Jl~X(lfGvG&6v8>i25C?9P7~TQ(o1-TIPGt<j_{9ZpiyH>cu~^aIvv}joGHBE z)#mcSANu8iUkA$LyJnzM@NRrhFFcMulQxvU4wbh-yxZ9H#~f`f@2ZSwD|Ko2l4)$i z#v;eH$YZSlJhjaww<ctA(#JCOD(2Bn-q|OIkCO|m*}(U8dS{}A-dS~B2<yuthpI2A zU%JqS#Cv&1gwjA{8S{c^yt5BBub&2P<$8NC2b(j1=RWL*8^yeVG5D^f{Da*0*}wGA zrx$QPM#s|hFE5}SKTbuSyZZ>g8qVUmZ%4_+o}S$n>`T4RLKnZ^8%up^Tex0|{VdTK zv-EDHe*iq5*Rf~mC8U2aBfSUdxTmfOP8sPxkx{-6>9=O2_aptb3^+pP`$~__?CG69 zsJM@yk6i1uyO=B1mddu_JY{XA(x)NkJTEEzOy#kT^fQ${O`5CBw2H0AGV{%#0(&*6 z_9}7LG~o0LY`52iI#2eCKn^J<CF)7U^8>8eT>_rmGl0IDUd;{Ry^r;=|M3pei@FPX zxQu#zBf$s0lA%{AdsriGqudB>mbZjGRu?*gvMVraxc3BY7V&O4O)9Qs;MR?F7sGYy z?$2P|{Q}Yk7K2}#1CIAka~*5T^|__V+`{4(oQcC(!13Tcyg!?=-OX_g*#@2;{SINd ze&lu$m!~2B+#jhn_8jw>MxH;jEobM@x&AVTJn0AY^i@1Vr*z(X=vxx=)V()y{~XfY z-H2=lzNO4}r9WC9G@tP8x6tlZ@!9+}8f)tfwne|{fm16rNALIUC7!My;TZb?I$+;T zv{#zCaA4A%|Dr6*J_yj?%8I=N5Blm=@lgW!iUIdx6DIUj(_U=CbM0*EXPp!6x$Q_R z^I6A71Ml+8^V7`J^fP$wk^bXOTj1YwUkP{F_Q+kfCGPP;p08&pH@pkk?y@bLo`KK6 zm>c`UeA*c)i?lO<i@6Nqaa@Z+AH4R*@ocg$YdWAmZ6ssy1=eBNdNuNgJMhdl4F68N zbG+DlfcHM{J<n&P^=p3%`fhfi=;{4<3^(ry2%OIu<}rq^=@@<;Yh+ijM)n4D|5d=f zvbYI-+a&wdWDkn;<F?>+-Mc%7eE|~B0&Rv-{wm}`&URs}4xqoUV=P?3Sa<{Tg{wPP zzHjR##94K_?QLnJZ^Qbw7n(G9owjYc5X_pa0WR@?EtPSO^7%)NH%P}_)wws|uXd_G z^E%qT;@bX!?T3uoR(^sfIr=tN?knwo3i@|e*G)&5=E*`WdIwF8-5xA@?YzOg2Rm2( zz1^P}wShb9sAsMyy%Ih)`ocbo|5z`JPjW@uW?L%TA{)X7w0RivbFPjtK$x}vh&@j2 zK@ocdxSzj7ULE~oe7hHWx{qxR=EN@;!Cfg_BYq-SsP{U32f1EkedX=qc>7KNN#0rS zqmm~+O`{N;r=JF%n7`YPa<Y~M+L1q3I6q(-b)e}O+lPU4@>A=E0p8DZtU#y#obeNI zUXXO)Si3nS>=0>}<QM*>^0piOUc_@AdE6g$6MjdKHjTPhI1Vtz7AFz!m3QS2@{h>7 z+fUDY;(tZ`rA6cu_bX0UNc~QEcWdg4lYz_`MGm|+$XnwFVU*=PZo}m}pN#nh!trHg z=gNP3FY5TRPC0m;ctC%@n>5FI^N-^mKGz?i4e=8iN`IAyYO9f+J+I8V6O8gGafljh zg^p(#i`Y-bzKAUXJg#-NxKmE#&tTBzwJPVg#n^SLa-_S#V{E=vxel)!?`myTu8ZYt z?809pPXs>bThP4)(of{&Q)PKp%&)u2e+S)HyMyhL&f^E5Q=@yR7oYy{!eV3F0(5HW zS&ZHD@C|``N&O$07od$&z3OPsHX0cJlmnD2qFjMvisO~{(L$CAlwru0Z+}exlSbw@ z_q+u-<caC%SKk60^1|R8Pr(T{&@al8!5IY{`q#8Eq>tR!yH5I0cM2Tn5Xxj}=gPJ3 z=r}H&27fr#DHm)*WkqO<G|Gbc#~b>#0P4veBeh?QMNPt9$@s(b@F1SImp0u)_}xM9 z-o<wKdFY$Pq3LHp?}-nBdW^wPH$?Z$@frD>hEA<qBwY33Tis`ybw@(Nf7frt$X+18 zR=+u3H-_HexGxg#{^U0f$Zw5x<mi8ipAURRR#A`i?`B_M8!xh~>R-mpcn@(W=Y_D@ z1DF?9kmvhqe%-^UD|5~Iw%|DM;60_JPbHO}({$3yD?fi=GI(k)^MJ=L<XImJlkJ5- z-rYQ!y2I_s#Xb0>E&PQ+q#54y>o$OQ__EiQ?5Ewi^22}S@t1gtFAg0HTuMn?4oNJb zymRHO`7<6(!kPygd(09(I_af!7v3=@0XV1rgUkmKeDU+oY+pV9H`~|9|6MQNY|F*P zcFdnjm_M~A=1-B233(X;zUYJOHHRFyeP-ZwFc>_wZ!(zM<9H`L;l3Bqdm4i-)T^TN z^$shMxlYO%);TZ4zQ;-f^I*j7qWL9hX|%8HC_!drUM9Y5=gyUX@qcpMO^OU;f6tyY zMwxCcQ{XRThWBD1UcU00j>}fxFKB76QQsR^;RxC(>bT(^5@$c1A7pVDl~0M&P=+mT zBmNl1Nspv~Cbjn5bM-2G$==*W@!@pLA>Z^Q=~B@4XrBpN#wDM3uAKh5`~CV34`u^t zou<E-4tfTpC+^y9q~1^RUGM0Q_Hb(23BXCDd2o)T;2h_>!!!3%)P8vLZ>7q;1Re=* z5R-4EBVSZoJ_uVrU@;EBkvOCJPP9ofPfNubT)NOUWK02Z3H6yAkNkK;#8<Tqh&P0< zke(QyTx&tB;>V9A@ej`>--Z9A?~tRftVenD4lgIm%Nksi|ID`Vb>`ov@(%tC@Ev36 z72wWs#pkPdrW|z`{b3J-)I0A8it^#d(6{p6S-;@bPrReN_#81F(zfUf+~Io^bya`l zj*vc;S`fx(cHjG7G%Yt0{McT7Zo@OrbLm*g9r;*IY{aP5cXO5ZzE^b=+m|^9ctILi zd*@l+WZuexr(G3{Z;n5cC$Bzz3-S>B`@jQC*RfxLUe8(sYB~0G+(|ozQ--{0A4T36 z<K~#PSgbE^<fp_lJb4=gu8c?1_F{kh`+kyTj8Dh5iM)C5!l&q6<wtF6?nK;f?l|Fs zPq~;+ouAM&@TT*3q^#3H$CWozR>$$?Jx?jUMOIh_c#oo<@W!VD(g!_w<XK0GXPE0p z_tWq>agS8Jit)yN&jjbTmqOlS(;SxqOpeQup!g)pnlIQ&hqUA=Wd`+4hm*I$7mi=Z z2X#98t2QeU$E4ow^mtSD-@yyXSDCpA8u)W0ubzu3#&8g$(e|L*=(n}1cg=4PI^a#d z_XnZ)oLC?Kbq~(sDsUFPa?7ifTlU+7j+jrqFQndUsrSRF_amuy>XnEtpkH6={f<>^ zM3x_2LH!E&M?O@%v0K8s%p;V)9G@l7jq56ug&y!i{SCo^?_w{3(;dhcS-||Yi}ON( zi#kr<%l-$;za=A|G>G6S4gGi0%zr11{CCnwaEBf~$vka0k{RIjV>(xoJe3RH8#-dL z9rq{r2w-^nBe=cd^eD!a)4TPm-2H`p67E||fRnfSz@K)9_m6NN7RM~-R&AL3yohIw z{RRu95$4KVGw6m6>ZCqd<(n?nC(32n>6wtSZSW4?AUw*i!8_~0dm{xezfSzFdhjL; z9_at3@!jk5dSPDkVCL~`vebDVw!eXYq(7h89>@CWYS8rv?hPSrxi^NmbN;<^<xhX8 z`nrs=+Hd*RO%Ll(Zl2v17V6cYXAnFGT&x2G=Y$qn`j&Dh_8~F%EC9CoqZcG!<rBWk zdE{xG+<CPZGEd!J61fpMmU4%Jo}DXy{(i$3vR9Y{KBzBv!$+pCi~S^jNx!zdZr}Zz zK?y!%bbq<ZHpjT=d&EEcyg3K;M3Jy}uKeIx^DU63en^h`#B80n7M64M9Bm|ypzYB1 z&sm+iTRXxWCt5oykOvsY4U|E8%e5o*eOj&^@eC2iAMKWuMO)Md9hjHN+L4D3+tM;2 z%cEU)zeIXWJKS29p==r)(sM01t;!Hi5`WMUdj~MzjC8B@L(T)SpQf7}j<Au^zSB>s zeq_Lo$0zG4jV{!y8beuY92^RYJ6FE<|24~pn^&NHvmJMMa%?_l?4LBR1HIzQDsbbz zy$<Ca$C;<6#V+~pv`gN*#MANa?xBR9rW{5-QtC|VYQ9l4zWuSH;}LZD^RE-G(H!S? zW>>M%neAx*M0N!Zbk{St3;so}pWu$5$lr#XGY%#=)xj^UyL4dPr4#Ee{LVy?dJpR^ zfv&sIw_i9mf_}SomkwK>sdN1WWsf}s{mQkL&q5!vY*}oW=ribX><NnY>U0bJ00(E| za+a=s`#;1Q81u#NZfuFxYGnNlvHasw7wt7RIheZFLE6UMS=hUl_wEXU{J66U5?cmN z93zI4v>nxV__VGM{Q};TUY+bO+JA_#TGi79rEkI3iy*HO8w8#0J~6|A{4rZJl7QjX zL{^94@SqMbJU*F#;rP5d496eZJ;P%(0mI=Dok7m*i^GF{N<rxnsIMfn0562Tq7zQa zog>o!y5m7n*92+nMR$YOR$pZA+1us(P4PbJ0Ls-z<&2NOXcQdmi1v<mB4ecgU=4L} z#z^pX{1^QS{*5B-h~ZqnUHB<u1MnR#ppC$H_gx5{&u$f5VmxDgYJHc!wro4b-}T4Q ze-wDQH5uUl%+^r!j@owehItmNo5g#F+Ui*E{pXcyOM8BK;ZwDsg#DJ8I)QLxoF8)Q z^whQ5MhEl-;xg{O{kH^L$5gF7@-fP2SLjvS;(QFmmpT8A^c#3lUPZsXu5qev=<&oI zkLov_)L)sOnS5#=ifA({7LoZq9?}Q%;^*+&jeA$*?i9vlO*g7t6yKcBh#O2v-<*$< zR~c0K3dyHpz3S!_C_An1vi^d1Sszh6)8EWl^)5-`2DqJd@DV!Y9y<$x=MIOLi(6^A zu8eY`Q$cseZfz|keeYu8PEFot3H)LArR}&~(1-0pK4mUPn5&eF=Ao&!(|2jMlwaj_ zL3!fF40r*b`y%OUc;Nm2;=7h#a}C$(0WTSEu3mT{HE)mLgMSzN_V9i_^?ojHANzN} zD=${;!&y$%JDhwMJLQ!JeF4kGXz*P+@DH>o^7lr@E%-_sOF31!bb1i<(0PRGm(qhV zr)aK8UBAkDt&IcHsi1o1h~KwXJWKN;ewRD@d|DKJc;G>bmLiLO`8??a9nm$3U-SjO z)(^iz{MMk|iy5)<==;l9_wK=ZBK2I4%BAgj;aDis?&14x?7QuGVLIk;;kRk~>d+A^ zC-0DDJez&wS~%xuMa=KRrB8f%Vd?Q-URe4l?iGdI5M5_JjkCcr_DE~-B~ce;NTY7F zQC45fAM>qZwX60Q@QQ%fExz9ELSyJliStlLFt4O`nm$&^;gj3NXW~#VON>kHen`4# z>_y@{V)KvPF5hq#IQ5U}clN|qh9{&v>9$qQm6)8Jlyt}>Z22Od)s~B&Xzhx8IDaE- z)T=_966WVux0mEzgmT6`tI{9%#C`CI`{C;jz$dP-@9>FVk$!H*9&6$@5?ofF_%)Op zM7bgO#KS_Thuoer_{6q9=MAqPGA`7nobmc`)a%Dt$}Z%KvG{SMch;Q^V4Ntj0nqg& z+&}tb(S3Fg<J@3xkUs|g^Sr`~lr!M^3ik682I_K-+sS9}DTf%-S->sg9dv1Zmn`$y zuiB<S;yidadXx4>@2ipyULD&iYq!E@_;+urf2jVQtQi}xuSp%p>sRU#F2M!ZX3B2X zU8APwX{)=WKE?yiLlyW8-m*U(#23Cg_Dl2LU-a(~_Gv$eF*SwzQ5(2t2j4>`Ke1oJ z)=LU#-@$W!8=pm&>G(p7JuI^g(zI3x4@d38Cx8rS`=Xb`Hlyz!VEd`I!?^7qd`0KL ztn0@@ZCubkq;SA~P2eDU5_mrQQJiD4ci{DGIrxowRcKIztdD>mN3-bYm6=^fnVwc< zqPCqc`#R-T^=m7A)8vm4hV!>XKbUQr_tM!%ORst9q=ltN;|hCd&wA<Xzr>VuEEVci zIbRDshBz-{H`xD=u~fuZy2l$!ofu0U7)x>=FUFF{GtRH&0Xw}{MaGiX_q30f>Er0V z*4?V}+ZcC5T;%6GnMm<I+y&ez-{fseo_J;6691(gor}PJPo&;|DfPa~y$=QCCCcBf z`SxDsdmZ@Kd&ApR|831k`;gYN7|@;mJM4ZX_1>@V(hht&>Nn31ko7*(8Bzx4J?Pso zE!vN>hEI^mKenSjXXK-@U!40uH&EwVep!8@U9j<7OD$Atxyfj*in*DVxAod#l;PT3 z0r8=`GvZ`@gk7&ja{!^O;(|3==kwsVFbUcB<g(Qq@<o4N0Q|&0z$Q$b+sYBQZalj_ z;Jb8uUc??*q)Qp;n@h(x03@CG;r!NNJKKh5Ip;>5O4wL`4!^B^<~!&l?_!&@UIArs z9-ww>e*h(hXO!z;n$FWY>|K2>*7e6_$9VgfzrnQe;OGaIO0eOiJ^Dg?AHe=6Jk!29 zn84fgRw}l49<&+NJrfnsW)OSIhu{Yeqkctg+mPbV{#6#+e{BxGmPQ((|Fv6%KhX1v zKXHK{C}nX!0`?H~iXLKm*P*|M`ay8}c<^7ZYkB&OgWBG(*WRGQu(Vd~v7cG(F+Hoj z?s`?|g>`2)FUC7@=vF+1KN)xyQ3iMDU!McLd+^+YdWgLVj4nKrM)D2Gr4sI9>iw_R zS%&$@gB(aX!ieVL%Kt=NqfM#~?ETRX7@fz1FMor4SH6y=_?kJUZH@%o*}rc5c3{lP zoB^^DaxA_zT@eOO7q}RK>WhFlC--xS-zRnv`vUH?H5T|H<bm2tS@)J_=tazRLekdq z-n3_zCu`fHkFYj?@oRS>tp+c6L0|wk)VaMyopd`#({+>|f){k-Rg0BY8bh3)2~A07 zub$wSs`qA#dfc<9y7KxR8uyK8VlZpiZ@vcKUXNl=-wZml;!h3iC7>Q#ycIhB5OwqQ z_fZ}W{mcI@-+r*ZXghH{s(GCvE8e1OS>ij(8W+cc&;W6CgPD@ymN-L>Nzaxrzw|8^ zTfm%H{EZvvLuTBnRhxC_5@+*e&v`ojbXjTNgZqJtpncP~RkGm9`7z<cwO=P6z>{c? zp4d#B3xn@ng3P(NU^5>!+J{1YCaj?^9gp;O-Yegin2~P^c6xVwOPeV^#k%Hn(2YL& zYpMnE3O0p$zlmRZMy@H{WaCR;H$MJA&g-OUu=o?ur;ZM>?f+*hSHILui-b%HE)weu zr{Vi^FPvKg+A4a>@R_o7oOhW<yijZv`D}M6@|(EP`T*zgPiPz!&sqoHd2{<=tq%Jp z<BaPp?#ypGX4o``0R6-^iEhPN8{kDdk9`y_=Cz{~99H>b{F{5uUq+eLW5Ck?K=pM5 z=kKQA91$9z&-HCV9?$X}Uc`XtGtm$IQmQ=tWTl_PQ%qMmTDmry;>&esd#&s=VIxiF zKC8x;<M__$pbxUw@A-NX*V6MGJ?DWt;Zo;7-*2V9S379)kc-HdHqqD42FjC9oI|Oc zX67Yi6@4FXuiYx`h_8(OnTIgX$G!{SA2zx5+ACUngjYx3xn6l1ba@1OH#q+6+a7y* zd1olT+X47kPYnRW`UL;<ZSNC#zL7q$ywPbRed_f41ico|ud~PV+sXHN59f|XYrZG) z-Xh;u<JnuqXTv;O2fdqYiH@r-j4SFRi3#br!Mw(e8<ph_$a3dt*htE96oYWKrOUT1 z9vsS!!0}*kJP3@{#sh6)%09glxaaHe^*!84bECmVa8Jwqjp9z(%%XdT(QGxkzXh6Y zq}?W(Wwg7h?Zdpb0=m=oV9mkJ+wkn>yzX4H=yKSnA;tx$-(d^mI__Q(&V5`t*iWxq zVvjM)sC`byyVk;StnT56I9y5XjN#eiwO{13-aTKK1kS+M$9({>#P;(}6T)IyjYIhT zpxu}L65b8sJ%qL*+OnMt+(!vt{E(CG{$-^x>qdC8ZYfx~to?o`X+7%Wyg@n-8qGlS z{xtsY5RKEaQQaWUtI0<79h8kU-ks~fTl}ka$Taj8@9dD++S@JDhas<GYcWT@Oj*&p zd33%WzP8jW_jHu>*V1v<5YEY$WPdnuvau`URps9wbAB5Z52Ef_koLuY4qvlp-lL^> z7(OlAUxO~mc0K)egF4`-;3$6j#^|-w+xBg*f3Io`@2$|z@$Lp_mxasQOvl80Qr9{< z?2IDr1lWu_0j`X<ciuY)z1$zPjnZDxXNQl3bCF(}i_=qg7Vg7(#E#y7^s<{%<tmV$ zvvK;#1uva^((+$D?xj=SH2u_TUize$-tVQ4#OeQd)JyM=(;Im&UF6^4d3wOoVaL;R z*e0J#V*nWIo9@E+8A7aYM1GTZN6aCuhP)yCK9Aoq(13GF#A)A+7_#n_1RW9gdlh*@ z#Is(twE{`&WBKv+!XWb;j*{M$E{k{K^V?{vQ`_tW-(;Nv?>rxR0(m7o6W4zHP9cqQ z>FxOnFC%SE+H&ItvVTh&SC$dm>0(|X$~5(dWy(IB?jXQ-HJV{Lyf@ojOFe#_?by>R z?~X>V0p@^}N8UBdgAS50y4Zee8dvHm=rF`E+F9nIbpESe{^gAP%U=F#8Tqee_<eDV ztW|sr_+Z{HaazGmdE3|$N<0<wY&jQa=htxO<wv}Db{r>5?k`+#yC34*I@N9u)0*4; z<KJ3OyDj2?wjXlMd4P>4)${4{3H=oF1F=@brtm#O?`*ZKA<8%bEj124#It*mTv@#2 zV>L;)7*m1%(>T6KCh*-FIoC6zvGJ^1Cw1@0e|D?vG4S)bM(XEt><TWab%9}~JH7Lp z&$)dsa<*U7o|#o$<mt2DcumW3f2`;Ut$#(!ihgiuzaigBIkq+D)&EDkv|Kc9K?jio zr9*cHPD5x*V6ZOeDKe5#UhfaevAm~Ke{)#d6nuA-9KW#VB*0!%H!dCAt&}~58|e%i z9~y(wm}YJOZJaT>0w;+RWz>~%lu>uutD78u;A!J#7fXX~ru{cLa%&vGRnlBJX?Jl8 z_KLw4(l%OoJ;y9M$NG>#vxx608cSOl<&DOJNg99cC7=Hs(?4pyI+^<id6iF3=KkTe zgv^0%^{u&q!C)xBIxxrNve68D^ku-a*BA?^my~6U1+fP?js+P@+HYSLWbCbbJVdx% z!~LFmr^iXTw@G9G=aztX+e&oz=P9=~dS3~9C>(yYOOY<%I$nk!k$F!K*D)Cr$2xUS z9X|aa_VRi-Tw)q^lh^ihNGqkvon>08-0>QGea7`Mzv1}Cd|RGN(DS@65O>i0(br`C z1wIDy{qxxzqdcFDeWgPI&S!JaqFYnN_XJS3hdg+88)CMHc&E^+Wpcy|Yo1rUcJGMV z&1ggL&47#aQoSmD>E;;4UZ4{DW#bU}?1#*6G_K#h=;mUiA@A#GM?Yk)!)MloFBE9m zl9nYMS(bC2UBq3V$Fyzv4lL?)u`R?ExL1$<RVU%;`<i$HR>xrQo=B#!$L|bav}j{x zCE13&ud|I#$WGPWmxngs*SC9X)WkWW5%LhfN!+g((L~Cnc~9CW(}dSHU#r=AUeZr_ zUe^$Z;WtG0czX9$^<&@ez_Zn$@BD26ZE)F*?_i#>*waX7>{a)Y^hmzgkzh>o@3efx z*eI(~A8Yph_r}S)@{UsQYfhJlOmMB~C4+~#%|rw3`|)4!fbvyl9po<}zb}<vKz@hj z2Y43!0XhVXd7(b-qvhwl{JiE9um02>I+Stlu^_K_R)l3bRaUu&p7#Lp&W^4c?k~c5 z&SxmI%7geW#v~8obx!ZhsP3tdebTjp#NcARpzCwgci7`geZupE96Rh2*Uutaf{w2+ zP4^W`zSMid)mscEz$<r#k+dRx&@a+%%{ogn65~jg!+y&8h`}CXY%wH!jf2Sf2zh@D z`?S6FD{0U5$KmL3(Q_sazj_rslzp$O-ochQ&uDZ69y<4s{>fNFn#@79&!Vry7jKVf zK%G*Mc7YGiWB^a5<&hSx%`*+}B1<d-ds9xW6*T+J(${!hxV9ynR~lul8Be1PNyqx{ ztmC!wd7XTRQ(peG#ROz+IO#{vNjdZde()Ui%Y7x_+nYliA^7L;{pO|r+7|r7c`Hx+ zKIZhZOLOx$u5*W8+kzYBy31CtzD;4UzfJ4duwzZ@*x|Q-GP!mh;Q&}Z9b$TktT?)G zp3N}_xtBYbhzG{Qmz;0lbc>G1bZlYuaVY(b*0s;04LSSFwrG<u_HkC?`uk~1K_}i} zc^qv^91Uk!h1N))Kzb3spTTbhzaQi~a2-Y2=*%$Q2l-Ao&@I@{w!*uGX#=TaWej1A zM*6@nle8Nvv#66;f1qqa-m}hpwd}w4Rr~lu*;`56fctohJ~Gz9KC*Arnb96Y;^W@M zZWj2AvhYF0<`yPF&l|zf@Tj%R-Rz`|#axe!2c>)JRg6!}4^+2xd*ht@8OtbdwtzVC z{^J1nE4>58r8@`%d9n`=-}t$NdV;T)PG8#51TqPEJ%aLv$5Glz*g@0LM>uw&FW}FG z15(b7sUte3q#pd&BY-b5t$yba_Ge_kkhAwv2klM*UZjuk+)3N0W82c%PmA-~IJUez z>to#5nM(HCV4op8_67E47oR=YhBN)AVX1>YdGdb;XgUmjKaF3?cOU3Q`$e1ebWD$+ zhjQS?)L+W|aVQIZteiKRzeO22C-7oAE_-diW_UxE&S~7s`gKn79B(h!b8Sm_jxy%S zm)V*^GH&MVD*7sWs&TK&0$@aCi4%Csu`lfrZb}x|zRrV077edy(527Iqn$E;hxaNL z&DQQ*`FG#HLE8Carpv?ejN;fOGI1)rYI%^u<9Notq=+_7j+~rZJ?rZcjyaVFk;A$> zLr%CHi=>sw>v7e8QQh<y2R*1~peviluFf%<+JFwaRFB6v+6?;%gX0F@>cIX&^T$K# zG-(@sjAR1*Ixo1!WBhN&aut#%R;QKh5N9jHG3@&o)^{7LmdCN$X=4@ogyY)!CV7T~ zz;?9Hk}Io2Jmr~oA}KrH;eB1vIRVNq=v<x*#NH<CjFyZ1&>NLG@Xzh*az5EAa+mXI z_g7u+Mui8>au?}_4ai*&U`1os=@_|R#pLYmmPOmAML9AVeFtUo|Ls*-i*zbvvVT1? ziE;&&yFuBs@z_Y|q7xaq$mtQW8!|qHMi^fbe_O-Pc+v2zd%7v*XPh7nIL@Ji+&89U z9rWuq{^4g#NjawjPNZxLVI<^4eU%7T$j*xAd-!mv*Q2`BlN<CkOcts0MEB@iEA4|s zZ76)}^I2zm0`@N|<KZFY;7gqaEr(G?c=y))lK&=gGmfYA`Xyg(p5MzE-}+YNi{sxk zbY3WPI5++S_T&6*!Oac)8~5(oz&F^PKE&Lrb~ED;6Efc>Ej&Ndvq8a`3Sa{k=MuXB z4>2a5_2gX+o%hzOq@6ocf<4<)c*nN|!s*jh_dWTgt)J||dB4!#C#UnOfUt-+Ve^@I z;`e64cf47lPF6k#CCgjt%|(5{ckD|Xi>bMDJTFP^0hfKa0@KZ<oov7JG(0P9x-mps z%zfT=R(l%s4V1q8cDc~kXsdhgF;D#0-;$Us_L#HGYIMUq<2k}l`HU(z8FWPdF?NKG zwBLxA{AR|!^{g04VoX3Le(r6OxkXRr7{}YN%-x{8owy-ck}>Dz>!88IZxam;lZT?S z+U0BjV<sDvncx4)TalTBjcY!~5Rb8D9Tn-*qtMNQH)O1_#l?V4&x_8nxr@*+5#ueg z9%MN32cdtia;yL*b<rzEAJfUHxGU{~>iXPJy$ZcFgYTKZ9;Wu6@>?izI`kFK_KOdT zGwia4@10-Ows%?ExCeVsVK26T9jC7YHsE#xj?BYo&k{V?NDNqXjngZDDReOUp9Xv{ z#!f#&$FWcUu!reM`iD;M3hcPw1}}rIi;29o`|o7M!5^uEXFDFo_f27AU_<iYUx4S1 zrQV6L(}&Q9&$(}1EDhtnfxX}r?;5Z>#<fpaPsKO1+}&tN|0h^zK#rJa_X@H-w2{Oa z=N%v)dB}wLisZ?$ok1S*SD1t>uEL-AT!42MIAY6vHLN>8e@Al^=!;vJ=6o^X8R=Z+ zIKf#sS)({zb$4fqT|6l<rZUTer(^5`@^A5YI%xG%>n0piiFFgK6He-wLQE?+9M^OD zEH$QR$E01H?H;UG@lC0jVBoakmg0XIbelk);3avE|H0DC#F*5@y&s9X%qOi0w>?$2 z?8fC%@7Nf|W|{X(WQ<MpLC*CFj&*$BvmvpBn8&J*ET8_2+<j{@!0}zvKBE4s_FUT% zTn6nKYgmvpC!^FWJX1iq<eebaH{RdJe#ku`YvCNjLwkqdljZdu8pMTx5Bel`q55;} zg2{^R-Bg|guiDv7)UorP<hj+&<Js!wQ*|$A)a{OOgAP4}@qw|p8vRke4`pl)$MI1C z?XqIW8yO!TAYAJ+#*4_Yjt`T6d?PP&UD4JZKVbRrbE)%Wd?m+6Zj|XsohN&HOkTzt zXxrBr;Ex-t7>ke>>J+()#FM8^z>M}=;#p_|n%J6RkC#vWSiY?(mXM~nW{yebmw*R( z#k-RDZfnAXUB*2^A0p4N&d6^J${jO1SH8QQd88@uo@g}ptHaA*M1Hzo9497M0iI2+ z{C-(}Lhf{}^zG=^?alrA!_OGrLSu~6)Oqh+mY>?!g?$A>TmvdlAJ(fu`8>|%Nm+rB zI2$f|5M0?IE89n0cCLJf-;p-k&`S1SkIq1Q_wT_rkmeFQthKv!Bh2%;F2Z$_e!v|E zUZi_L?<KhaT$}FhLAi-kxuY%0aU2NWmbdt}A7hqnBz><k(jwf(-JDYDVsG7q*XJVW zo;BXzjy{iI?zEmhv)nt~=U@5}^?7!keP+3Ly3f0QM1AgAXP;SaqkX=ZA=_u`@wlSw z^kj_}uMBCOS!T5{vPvHB_-Qq^)<g5Gxw-5)khvCg3G4!OOB9#GyXbG|7Oo%BMsaNo z_bZ8Q%$N@Zizt(t56IoevK9;dB)UuCYJK-DSL`vGm;Q0DKoGpiJp)TP&!XuC_ujU^ zU){qi^A)TWjCu0b6ywQ=jYacL#=jI7;<p07jXneMxBHHM4!+_Ar0H66ly5O%<{wAC z2lJ*sCB4ws0m4%M+uc<`e-N<fBVs>67xVqLQgGZ_BED^FaA1q%Tht1Ft@=-BIln&a zv#m9)*?xIF{eUbO9uZBF{mB1u1|C`cXjT7AM*XaQMD;n}O2zsT`(!e0sJkP;e38gk zL2P#%@S65?WXP598h#STi991_-Y@fklcC8~o$`SBA=l<dq@2tVf^J>Um3qjhpJwo+ zuKKmu>#2LHTs?^iTG_^y0BZy?&s)dbJ(y&@l>NS7u+WdQ4ah3t#j)Gq?CGk;Y`ru7 zGl<>#=izNU3M|1h>`(SDq@Pll3}oMv=mD&W_Y0p-UBAM5HZDMa`X5?G$C=Uwbdq>v ziq~uEx$}r017@V>@J>A^ZD1~KG`!j70$A6jk1YJyAdQc*UW&%G2HHcL+;2N>aFyOz z3vQw}Vo^<ZDkSI)cpd$i%Mm7@>38ARkCC4=dS{G{_0!9(2egv8W_p459zC0767X=g z!{4*HK6*)9UgT5g<;VK5c0svybWH65gYFwV0Xz2=>2+59@?FpY<5_o+VQ(wPHf&eC zM<o>_sW2bB=v>7|s5sjZ-m0=P;MEzaWcc*fCgNEol?9oHo~|;U>E^wd*A7cL=%JK9 zPd#4oWfkuuco)6;>^2-shm1jQy@+%<_pt+W_!fAKoJO0(pY;gW`51@?9STa!BR+{( z(C(l+k?zNVcBkrC3<zU5Q70MyskDgyaI7mnu5X}&cfLs0`iyt}U0-F?8>~bBsSanq zhKxSYMVuF&Wf?z>W&AoQa~Np?AAFKC5qgG2_>Gtu&uA5FUk%FJ_Y(%acCEgghgfI* zA*&Cb+1}xaTJ}85*9isg+vfQ#oL}f#y!<y8o(2D~Z;*D$_85tbB<UD(4lVhJz58@L zBk3-tz?gxIRf~nxL0^rpHp>X)&AY=Qz@9|NxA`-<2@mdJgR8cSFb|(rx%1b3_N4Bo zL41?8S9lDayb=8J^=k5tjU;~I^B&xd;Fq{_1LJQ|;D~OuGd1FGHaz$n!8-untI#z* z9|n4C1aIj3#JxWv3y^s|!y`DKzd@YWptXKS!pYc1a8A*>d5>$#*T}L3Bk(Ur(XSDX zH_)upo@0Md#twC>w{8_q?bsa*z$R3nS9#B2KlH#zV%<XSNdA6Z_X2Z{aRu@~|9(X0 zaOOu!+t5jrWy6ExRh}{CTltZa-_SL<(-@1M-RQS=lJQWnC#k*!C+bz1|5Q#Niq>F8 zB7KbepmBeF$a4(lml$mNf$A%29}>Qz_S1aD73y-fE%P<?6(d>*O|;LT1%1U<`ffEo zjw)^G_q@A-fAp^eU+@>S`VGuU2k5tP-9_WZf<ux{;j4<P&-0hTbNT^;VoPrW%?@Sp z{4eBAJ^IH(Uky(Z2e#?n-5y@`5ylL!`nKSlmBV^7_F*Ky$Cc{CdGR}Oeucm0OJ>1Z zFC5@QA6w`EAJF3Kk&g&E4H<lsH}(fIT}sy@{)7ivk(er<8?YPr<r?pFy{dJ<kJ^@C zQP*I)QAYT3I+kO???d@Y4R(5U*?jYds9#W86!=V<;n(-8m(hM=f8tw}G2F!vYJ5fH zKk1`MtRXel!XxX`8{d=fdaDd^-l4ontbLL$2_3Kwp3KK}B3PlWqZ<D|AIYm*%a=AF zqswvKK+0svYMS@-Up(GNIxfZge#-LcX5Nb*y$bJf@AqGXjklNgtL=lZc|PrgJkw54 z?p*9ZY(;7gse4joZk_4Fk|#y#t(5OY9Ujeld0vI*I(M#oP4vsr+ng@JFXI!lq%+f` zj<prn`Hbuvab-D{1ul3RNZX<toqu9$hG<9bIEY|6`{<V!-ykl3=6i7)vd$`fs<ppu z@e<QZX*;L1OUz9N*{`I{4wf6#3y?GD?IPD?v3AypGkP7)zFp;a-3ybTqtHZX7}+=B zbuzvY*)`f~w&mNksPAgmw0>$&){X7|=n(vzJ+rmaXwHcE2Yn1_AO2gn+74;IvBm8@ z@N8cO?Q+yNDca?RJ(#~l8amyidv=^`a4j`GKj8k0{(2SnP4<S}kNES*j6E3E2KL~L zvd)f&gAx3?y&}Cq06oyL<{lA;3)erha2Y>cP0eRl$77IqpbryG^=4#Ek$a5>SSHaw ze?H9mZr?;aN3uCF^V&1&C+Eh+$QMiPTdLjW_zZfHPDy$>{0h3aW^KAb-qZ5(?6y$u z8)e_=ALG4bZMN8>Mg3m%%JUqyj49aK4WBs!tSDB0-s!f49HSk%vvGBK4rxPD@*MUs zO?B=Z=cTEbPebz2XWbV=8Q|U)X)h5A0o^GBi9E;u)%KjZF)TVJSE&<5ZzyN$u%_RU z*azdjUDTm#?DV0;uYz7K2#yYh<3GM_VR%r-ncP6f70_4tW&`W6jPld?W$(9ch+o-z zantKmU1&41V-X)k-lDxw5g(zyoQw(W!$sAfa;^yLFtmwTI%|sQNqz71nAC62agR|E zwCyrFn5{B+ko^fyue~JcPM7pIAbZSX+(Yl{HT^0vA;9jSJ=wW(>dyo&_Vli^zSvN& z{<B&?@6{jh+xO!8{ioCNxISH$lvVDB^K@AP=Gt-`$zTh8FkOf4s6kdKzl&S&t%jN0 z!qT>pF{H^@hW|7qzSAjJ4syNzvElYp`Q_a>co=tgfG23%^k3&%cH{I$$3*k~*^3%$ z9!0Eq*pD@%uY*nw#TTZ0S2+G)kIjC|UCh*DYQHNi@9ASJ-$yz0^qrJT&RuVsApGQ5 zxM@V%bTA`1$NY-pUtx#7U8nw&^!m17ym4E6Up3_qJmQ$Pe2z(jfmlUiZ(gV5IUO}r zN6bxSjo%2ey>+%nkZF0{Th}Tc40|HqiL$nLHJWjwJXk*GNUd<A>{_{3?YWlR7bx_F zeI@Se-51yrcWFatA^QTmQ~LsGE6<@!)4C>b3UqIu;EVUHeSx%TR+svtKp8_>+ZSkc zv-Sm+W8Bc!Lvr^`8G30QeF-_{us^M7d~18*u#9iquZuR^U6<}$lF~LDfjqJAMZv-8 z{SoXdxWshB%hNA^i@qmhSLEFFQEX`C>E3XTam+`0H-7_ts9=xrkbQ3e&$6GBeS#h6 zPS{wdN9+u~j;UyG-Z#*{3g&o2ww{Y;qb<)T3q0PzzH{ZDoKm~u`T|~ic=N13@t*hS z5RIMsHs`0PE*!Of*V@AY(1ExON}8k30QOs4!h2C^>vW39R%rK~vX1y(aXs1NTTy>j zbWX~bsi;3&Iqm!FNq?4Q=nu#BV}G`y{%o>-(w|+2Oo=~R*+KswcDr8Xw{v8VcuDnm zB@t_leH-CjT5qZ!TOrQs_eAuH`LpTIl|LeLURmFV9pQMA^EAo1TYQJk>0kig3aG#a zM0e@f9&yhGu#G;*QFQkRV+iCk(#uZwN47!cP2e+a1LdOZWIkME9f9fOfOi7)#r31P zpOkMj&;6vGl<jzt^;5RvBGPzY1@}sG4Uut%F31*TS71Otj@7I1zj|>$<RR?k=AACd zxeD!tmKA-`m7y=JU%tNR5}r7H5!KiB9j%i3B5DUR;Mp^Yy9@lfvuBZ=Qh(0!T%Q25 zu?6(=Y#He+-wa_tT)z2!UC#IWvcx~U?=Kik+Rq5q2HT?^xAx3ewD$fEb&a+cl|%m~ z{Pxsew0-^SnS&coY4ccb{4~a2V(#wzMV<%fXPH%W1<NGs$GU=N0-Eb5bw#Ul0kqwQ z=b++Aozx1?fpy@Ste?cQx&Hd_>@Yl`X9nZ-Pxoyv<aO~oaWb~tci=EC#O^schMd_Q zJ(!=G-Me5gA>$Jo-!T~xnHQUYyJgU4!pZWzrM&sxi0>0mev8kwD|SR|YB^<7%Pnjw z_o8=Y*i@c%a5^h#3u#l!&|j@=s=#wLwIQ)^;MNHoh3B!(-t5~{w{OwT0)TdEQ+ZDb z_e4f`)SOKvZnUXJivhK%uDqLvn$8(ezOYVV5;`!hC$_4rwyG2T>QGzNt+uM%!d3}v z@UYwGq1vicKO@^D{5cIdS35>KQuf|Uh9BZB@m*ut-#OWEoSSrntn{JHqO(yE?nS2) z{rF;d$;u^dOpdfm&DFy<tn6Ei7gLT67n@r}u~A*`6Wo(Hg;_Z5igAk0#!*MaalF*r zxegn+iZ1+7#{mmVy}_l^hgOf7n!Ln)ZH{?ol@Ysq>N>|1dAY9Gx4~H@78tMXelr;J z_H5ZYy}!QOkG4m}hl=;Q@qR+46`YSG^KHs2)1v*@=Wh#m4uol)JiCr_^IW6i9B9Os z<I~k(EA1ZSp1#*%$%h_m#Ao=*UjCHi1773i$ajnGK1BUt55CD}pI5)fgKujc{g$t? zJ3@Su`|$FwvR=|>%fDo};BLTy2KtupWkffM4ik9ThsQEoqcXY|ueJs2Rqmd|&UL`c zM`c>WvolZ}r>^a-;;%?t!}b-C2k>J!CJjIOH1XY!&G^w5TnnC$Un_WqAN8!kOVS4M zj~l?Rv<`S1!H;_1@Z+ADe)3Lzy%G3qhfh}nk)723DV(WG?DIif8S}_P(3yx|;ycPi z7^C6hugW(8yI|8hqcr-Ow@U1Xa@w=lj#wUi7u*>*23=4cIwd;P;FU7q@s8Upc#L}& zkjFbSd!&6gAD6v#^ea;76|e8yJ0*QL*{N4CXLRc|GWJsQ+W~)1+6}_Vqm7CO2WN+6 z|D5q-qd1M|d|GsY;A`{k&mlI;{<!r8(M7A|i!Ms!!#*wbx;y?Uv)uRi7W&)@&-~Kr zc&78yc;-pV6rTQh><Q?hmUmca%(V};qDNz{b|;9xcJyxa+pSB04%BPV_tZgA8JkC| z{ulkMdY^VCv8ItKn~uq5`4<C#k@k5wj-)K+&x7?U;v8;`sg-|0-{al12MHd#v)8r; z71xdDFI;0x)=kb`indOKe#PJQ4&FVti1RY=yE)e~JV%Hp&MI=xu;4=7VfEANOhTu4 zZL$Y-H{_G7;wP*YYp>8o!tT*#SqxIoc1V21#l}$vcg<k$#3tGfDTg_~9~&pnD(nM% z^eC1P#mvRdM|)@(8{xVf?<_88jKqg~>p1o!2|TIi`^geVk@l1Ohi+PAd9mvet~bph zO=2;?gK{bLU@P6T!|B$@j=NYr=LCITS?W)r5$@M-D(jVV{m+I;`(rd~*|%sd17i-f zEv0A>jWPH(ybqjlrLz9Y-H#(dUd9dV3*)BC)+W|uhw4?#ZxNf|FMRGe771N~^Z@B4 zZ;gR5%jUB27-8A9)*i~B<6*(U&5sR-T^qomx$FjU@Y)|_yR>zywBMbgL37!-eU@E| z2C&b$hTs6Xz!-~U96Ggo`=opyMr7-lyIWdhgn1S_cRInv5DgCeW$||<4>1VpU0v(V z7#A{sOpS}&IAGbhSP;0P=OZ~;s8@O4MzKO$(?UMtGBHioBNvPb%uAa|xu~t9&A7}4 z+w|HqIathSFU|kBOx)gj_)c5NbL$+319-OchP*qX6FwU6A>jB38I!~>ZAJ%e2cG@? z3ZhSSzY62~vx4)s{QY&5#WP|jLtLxRjPDcfB=iJeE1YPq>SS(f80kdBw)BkJ4=Edz zm(bl)=9f|XPk4}L-aTe*!1lC?_50^7vV0Bhr7fx-A-=)sYT)msC5~cGlQD?k0@Fp` zJ70}w&Tv=T$_mbJke*Tpwn)FtA-w2xcRg?Zd{oBiT8R}azpTuFUj{Z~u%Y{7y*&kk zrxjO@6ZtOiwoUgxO}jlaQt{^w9-Y$XH#5IsiSsDV-*I{)kN)(S&+g5qiekH;5FWey z=D8ke;bMJXmHlVkkTcS14C$`^)`0Lk41T>TzEvK-@Q)HYpy2uOl&cQJ1h@{<!LoSo z5nXh0<t(2q?;UE3-?6|N&dOQHUi!PBC)CfK#oE#&eBCMabtNu>^FCvs?>Nq~O#tsv z;5z1XXxm{tOH2d&W`D+A8*S8Ae)@!_PkHI2^SIH_)7u>XR+nYqGZir&F)tSVC%V1A z?#>iAzw4Cf46b8#qkKPp34?s&SQy7|5x*1o9mg-fsW5?GYlD2r!lN%$CJT?USB5eX z!@)QKO$ZxfMZN{mlPVj-i_4a^Y^m<|@2j$IKMK4nkc}fA9Kx?;(5DOayO7rhy7PQ_ zQQtAIcKa&;$I9TF9xe^#jVA0%1ebNa`5o7)DZ>?{S5Qu50dh6Vy%XwR$vPhN0cAq* z4u|n<@LS<s08H}S$D8klH}(BXTBa<0!`hv`TR&LlEc6z}r#lY@-+2^x@f$B4C`+D| zmU?jq<stD~d-#2TrP9b4-YGAL#ZQcJ-|=7#IvwlofG2hbeeOj4K9uRvbvEk{ag6BY z=^Mbpz6I=)W^BUXXq<y}tbUr_g|+E@{Q}?>X|M2`K6fx(Ydxo3eQqQ35qFNo>Gw9u zk@`u|o`vg1TiEL%(6#{DmZY2;qbETt%DdD9E)Bes?rK+qGkEU<-Xo~n8P&x&K-rU! zuY6SB!E0!mgW<}Z(KPZy;5PKUHtO~RF6ZDjSL!faFeZ5x25VM4r;|DdBQY-Epm;a7 z1m`90<;HIj>GV0MV-oGDU&*}^^eZDAQU3(%qYn2<bh5sV9m*kbvN{|`LMz~RmgP*} z;ZE>i9N*V~JeRP31R1k4jw=_EFv3CBLtEq*e-rJY{liG#U>g!s<~<+u%Q!Z8M*06| z?tS3nzOFja`x}kyQLH3N5oG`+ofNf<6UC8JB^?Jjl5540V<k~zB~@D`l48l064_Sd zaiSDC(X^(htat0Qrt7e>Q4&*3>#`1*U9*_tLf{!NtP7?Xo}n&l-ZQ%fynO)-xYqlA z&pr3|yYthG<TT~;o|2#E+<)hud+s^sp8Mx_f4o-`?U<d#I8t<%5a#DKle4CJ-RwWV zQHq8_OVnoAi#)=lQSM%cj%ISybE_+L@b}Whw{G?_??>uGz8dn9{NwM67Ss(L<vO6t zi@Ix3_ua&)G_x;ig;vcEJ*=ZnE3M35IRkkh-oyAse&G@NPTu8uwS{X6i<_*i`OY!W zlA_Md<G-EIv9uZEXp@ekSv{j6`)-ryQ|fo|JF?P04Q`C1Y@!cIPgd;-<xcJk!MvBU zm|c-E-W?K&J@LG>X)aFR|8w=*bt%Qo_u(+_>O$VIe$<_Y4$;ozd`g0{Ds)U@t_9u( z98(w<qk;Vy*0DS@d)1W->$hW_lx4e!&-Uq@yDTWjuI)wnOU(5``p|FAC&qlt?X3i) zi{rsPUFKWV$B<69*NZki3mNAeWDLL5SK6~0(8lj_&~~#7!<n!==*PN42W?5A1$#Yq z9Ie6p0{417zjnf&t*)W$K)#P!8W!^|<jcT8nyqfxz4_2KNWQAZyYMURM;#Bdjum~l z7rD<gLPox!<(1dEM{Lh$OS?&fw{8Y|V%Of#jwZniyBeDxP`=oo-aCm_))6m#ggWaA zEn@$~Znf_F&P9g{GCfD8pd&f-Z>jT4|6l3IgwShcQ1t0->PR!n`#QpPCF%&|MZQUK z4LTBB_IdVBbOiN&S2}{Z>x7P3{#uC0Qn5^k-o#`g$btTabSba8wEcUdOWVE^(<SyJ zX!tkLrEcnu?hE;PBX%G4rfIL(=Y<xrfpr}BTlZb14;R`#<*&#C?dv?cFlW9Gnc`X{ zZGX6b5PN@wYaTxm=CO9vAkQ(_FOJn5_tK;R_RYUvi8hSwm@HA&o&WL6{!rv^i2Xy^ zAfhd-chQl#^(K1emaPfP7Fz5cI(WmeG(N|l|LlnPgux8j!1ko=I1<3ul5a3MJB&Gd z(1mn_G0s%+on86fujF^<o~&&S#MWDWMe_!Hn}vNK`3rCN8!V_3_uC(l@|NC1#Q)gR z%spHacp2?qo)KS4@W1TgM_u%HQfwFb<KY<6GA@lWmx9gK^ARF5@~%zcb|YzugJX@0 zCq98`n<4AocYE@ySQqe#f1=-BX=HxLyo`f|7U6j{Wq#H4)dQM;($&MhEMxP_tub_~ zymtaux700bWwPJfO}sNp%o$zV@8<dq)^q=yJ|O!JvfjpWE5U;mOJ6=`=|~7J8~3?` zcI{348_oCmDb3f7@vzk^zgP46<$E+QWyzJ#Xg=DC?sc<2@etFP54Kf&bjI6ro0Bg~ znygC&175zNxR3Ahy>eSH>hd``MO#XJLr?gj-_UdQ=c$YE5%Yq>%AS)O$?v}Jw`$+b zjjkTZoXt-<?KkvX-XYq%dA^}HhX&vpa&19fdCs+6J>buX^xM9=V=j;Gr3w9Ed;8Gd zXW&~cF~3MVLcfi_I$mp?;)`gz!|%YRi5GHIuzkd}ySfoqKlFm*zLcN3&dz67&Z%p$ zoOKYpq5Vo5?#h8)3rm07{REu<bM<~Qs`rQAQd&em^;=w?jEfH_^n)%b&$5%(Mf(}B zaUG6!@&<F|2Qe3Xki5YC0H0m8?+32%d(_Pa2c}KMh{%-48V(=&an}FKxUzOU8GY|z ztU=7+88WS$FRyXwz+C|!znyiz+Jbco;KVo3->=~{ly#gX<XGXSzc-eS{T#UmvRiF% ziEp^e_uX9I`*#Cjj4Qfdw;T8CO8wSO7u_QydjO~_#WIB!!@OD77B?=!2anUsb6TX| zwTEjG^ew(u^a}oKq?h*r!<H1V$NO&j)g90~`OY@v!E{|G`@7Hw+8BhFNLc7}a~LPD zxWAeA9CsI;3zhp~rnYncMC`-<clWTJg%&(ZgZEpR#l6pnb9Gp{i|)gcGRzCzS*WjU z+d(hnHkMb`to**xwog{JoA19Awq0!3+iv@9rQ80KFGOwse$PIYoQvCbqJHo;Mtd2V zEXk8O?c_U8=;N1eMmtksJGD=te{D0oPYrWD=zTNOrBAV55KEIW%k?vS)mE&5G*93z zoprOH`V7kb|EynMyrbRJ(!N=l)_z5sa%gW(+sm=2L+u~i>!&rbO=z$5E!x|J_BPt~ ze)1KjeUD_;+LvpSS?$XmxcBw@*jMw}jBwnas|!W))Ug|VO+LWSOA5{f<cj&*&AW~{ z9?UF(E<=9Q76?DF?<hEFPYNxtcT0mT*R;qp`j;p_A?3AStbP~i{l78&H(l}Qm;J{D z=x->d|0di1^7QvO{0s2^ZI3a;TL4cz8!9roZuZAlw40misqc{2j&-wt{1XV%4~lHK zJ+mXe2*y^dv(?aFD3^|R=W9;Slb%8Pk*K~`{{Z0wQTVkt5Z)7oU;k-@cShj@FCd)v z@v9$6y`|5x(~c4Jr)ubv2%Yd-C|k}4Y($#)l*q4hk|4))>x)m1TO5fT^3ncTUr6N8 z&$q8J%6H?rGIcezn;YMZ=>N%|L->f$0(|O&hW5nwK{3}7`|su&@VCcNcDzhItw^K% zlxlAq(pp^_$K{Et$47+*=q>#6cBE&RuDaJzSZc=`t9LhwjypQ+`G6Z_{B!mU<3NKe zPoBW{B)^3gof|sb4cb4@=Nk?Q4Z;VRuZ4C1X}eu{(hK}qgyp;ieAqfEXX_y>du+Pi z%)av025)Hh@`{WIefC@q_A!gU`L1%})4_AOsvCv=c60sZDEy7jAbcST|NZ|)_)HZ3 z%fCSQL=@h2E5b*k@MrcRd@u@s8spFPd!z8wDukz^@UIcycoaU*@K6*!{62)cqwpI{ zZ;!%9mLr^t!vE!FgtJljPoaC)r=#%E?Fgr$@X0@EH`SNPPw+Tl?Xs^AKdXGB-c<8E zwesy4%N>uxyWu-lACAH=FGY9;cte|l{;rpPgRR6_kJFq-tF5(X5%xv%9REE4_|B}m zOUhdPIs+JIDD1j@p~ZCI-7WjwBawZME7ek0vD{SGpj_zJfFA0H*bkf+^y!iF3Ydd5 zN;>NF&oAOTx(A8J(;d{e#Mgh)mvQu!(jDaANgU3{0xhBZW8Ui4NM(HwbXYp)(vbn4 zW}#8WpF~%|<AwG`(fi=YUmdGA)E}>2w>Ma({Z~u0|GKdKIK#+uPLz{0+Go$*+WiPm z2e0$&|L35C*X1MG`TW-r9*Dv}&GasY*Udh;S=VDjJA^cmf24glObg}UI^iq&%FTnD zkv~PAx&DI<MqJff8uydxn_#S|Iw!pHY#(i@vyWU$*pV^se{AXBbFay3Tb1yK`JC;M za=^p+6w5vG7Z*Nc%gR2L*Osaghs)X9(slk*yv`;mH(#A+&y}e&Mg150=dV*~4SAb7 zK3|>k4h8Q;=}U}bEv0h;?_+eC8?P21qt<s!O`^Q|uJTT%j8W`ozGsd1Gccw_=eDu# z@FM(z)*`+|w6Oi^i(fM??Z0@t7GH>D@5SG3H;bvyp&bJaT>GPaDVkGgJl6wY3+?`Y zA#Cg7J%U4JfO%opD4P}s`i*1a0ysJahx(e#TbdV(J^TNyzXko&@sNIe%fj*sw7~c4 zz&UZ-|4KtF{b8hs?Jp(I>fd-WyvWKw@RyP&T}SiuWzl#kK7c=@n|k^a>R&)77j?L{ zl%xgw@;S&zcy`9w9kk8*J&UaUD@U8|>xb_Kx$?-*xlFsMJn8CZe@$Em`Cf~Ae{Pfg zZjT3*2PB{N75eFvgd;rG{wvSBstosBJ)Tq!`1QaBw3Nuxiaf<KKWt2)#dLp0?+d}b z1$zs<;NeoeF9c^}z57DC-9BxoXLH&s@8C(hl;1L5y7f!!C-1@8CCrcYeP^6!0xWw3 z<d4&3`@ZvrkIuEv$qB!m7zb;mO~SWu9CUky8A$^Vi~WPkX+2Lbynz2ryHd;XSI<gW z9gF&0c@`wyIS%NnJ!ggct=dh6r~iNX6@<@3_TXDzL->TytbNNg-d}0k`1DHB2$@}E zWj4q$yb|Njils9$cD#H$eJMG=7>@rI#~rIIj^Te+9E<1Tcva`lf`k2E!Uk1P#-*PM zx5<1X)ctTSB68@>MIeWE&n0oO6wcQDiR148=U$ctPb%lO=Rcjc<1O2h7>)RR9&^G( zpO%xgNX%(GUhd!Hm6Lejub7K}-+3=zO@#kvejE5jKJ6TN`oq|>yA-AGdlunyQTTuS z4Z^3Q@Lu@!xJ&&d=MR4tetB>>3jY=6guzS{{v_tS!R{#h9OmdEr*YW~`-*-7-aQnX zFFrsdzn+~5=>N@+V>+NtmCR#pqPZN=^~w{_1yBCJ0KVWXa@fwl`WC_`-1;`w>c5G( zTWys7tMJ|A45Zs9_>JQ9U;Y)OPkH74YjOHdu0;Bfm;RrN(?5;*5cUQldPrZc&roko zqyA>~H>1BL∋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 LSEAFprd{XL413Upbjah?(H)t@_(YZA z9*Njx+5yNp>4=xfH1}0pfUHx0?fD$@=~2FeguLR*zHz&uPRJgOj;lM7Cg*wma;PhV z_<Hg!7GIC}Y>D_R;$<B<mcJ44O(pU-!PatZv!MW9Ay3%12(u0sP9aR(E}TTT!3&co zunV6a#jn_L9V6k#7sVx^TjkCxAJqQufv$GxIM|MHumd<dKw}QSIZw~nrgm%Nf(vYe zmrlLQ`F^XHM!n;B+Jv}9>K)Fhi98keeQE;fpg($-$LS*G2b9Go*6s8Z^6>H2{qlZO zJ7hGEI>@gM=ndy^BD+d^_%7UDE4wA|80=RCq_ZA+6KFoycBivB)=xe|&RCaAuP?;f z?#=mKp3?k@^j`SVI=#3Dc(cIg=DE~)8CMFZ7jTEt(1-D*S?5Lx`X{jQ^<~a$OL^J^ zly6o&n)J%c-0B+2Q{P?rR={rDFjgi&18e~FpdMpRI;Qu{t}Mr|LW_)7j-SxmMU%8w z;6MCa)2jXm`;m1z8-ukK!Jpxn2HQek!>y5KXfIhFxHBlD^OxD94lm-$_C>o%9`n*g zUJ;JV$pGfr#LYd(3jAuHCCJw%*6+(M_>A|yf=ilK^j-?mHX`k`rWL(Yg0u|$s)J!# zvCLnOv|VAErz<FT9nwa_wBmAANTY2fo$>mrkw#s&X~pH>dj)l2T5)}MBF%(p#pSZ- z=ksA&ak-^PI}xT8mup7ap)jqu+<i#f9i|nR`#93_VOnvyCy>@1rWKd_aimc;OYvm~ z(xktIXT{~-hq0*Em4n<h!RHp*VlwcAmyhzvd_yef+cMA2)#6=B?By@I5B*8rpDGTE zK4gH0V_h5YIGHYIgD9IWPhBBqr@XXsGLQB9Ad7rWkog3DRpx_Q;0pDubvj5g4|RZT z1e`;<v{A<;M?(hj<;DrSm%TsH$MVjmke>)Qh36$adjMQK#~G+ysD@o=^4FTwM+@zY z;3d8)-8bJKTtS@pT(GZcz_PC5&y5fVJ5&7r6yidA(+9hSzUYhfQwQ?oFusZ2)Aqu* znP!}{2X|Q%7UV-P1iUHYmvWFl^>63$4{16+==l1t?1OgHFYgZGogmtUqCNpVlnwUl zP59M*#hCw+p^t)zgBiiN!nFkPsVI-?e-W>?D;P!kn~LYgGI%C|=Y}$P<Xkf8L;8f` zc~==cyMgDXGI-SQ6+9w;pz$>wE2%3P@)5r!=UDKOy20C0X8;!Rku#vR8UBa!m$4@% z@+Ce8(o~McU#daarBfF(F@H(s1lo@RgC;jmIqa2{@wV6x61(VdQ?};fwsgJSdh6$@ z7k0JcEYrd3aNdD)-sinC^>JF%H>&mW%tx=<gbK=r<4LJDG+Vw0?wnOS@{8{e9vbZv z=bzM;@K4yzdMo3J3y>41caEnrmr}hr06DDi<q+dU9m+Rbn`LRhd8b{l^=E``%lrA- zS&mO!zvJBt^nEhXzS5;{k&mPo^>93Kbk0|Yv#+g^Ke8v~WW{gu!FZct3z|JV^VPdx ze}RA1)K9!;&N0;4{zKBfY4I^64!S|#fajxl=FZ<EYb{tl@jd%FcQ{~7N}-(gZ%~80 z4a9@IDaTXxC*o?H{vuD9o|~!ppNJP<Q{p`ubzI^Y8TzTn!*lY7Fegsw`vt^B-?-Yn z!|U*ca|O_ibgpX#Iq-rs1I`uUeM#nx3**wZuG;^dX5gS~H-n~HYY&4Q;#$dX{ED0- zjd?`B>{zv+y(~AUjLtyB&OZQu586c8>w%we3NYn|@HAky6L63OO#9vH`T^lagu7L@ z+`QAJr;yG$8~K&y?_N8{Yqj|e^{Umkv&!!};MB9D)n~o>R7a{$A+ASp?4=w+-cKNI z&YY*vg7t`{W)b?gnX&}i!u7gnz56}lr?pueOO7vqBX<orc9z0{`kQjtCtINYPUTg` z^*wMoUe=*4MZEIT$lol|Dd(J9VePDP25=Vs1Lr~-ml$On`n2dhc(mQkX>1zoA?~6v z>gT#SO{sEjPE)F!o70pk=jJq}%DFjBsd8>kQ>vVs)08Ub<}{_sxj9X#a&Asjs+^nC zlq%=uG^NV9IZdf@ZcbCG9OpEL*?*LK&%eODSMJ(inG$ncYfF(<VvcL)D^~X57ZG=H z-}7!1+5wBZxZW*D%V=8By$!%O0N;al!RdLXP+oRbr>m006>A&jH&?DO9&$|kFLI3a zDL1yX;WfpBOlRAv1Av{r7_m{rY0q-kV61M(Slt0#Y<1(xy4k<EI~uD~Qz&0#SE8}+ z3i;#a2MvW5yzgS?HaUz7T=U2l&28-akZmZVwq@~zl(%z%G~kRor^hy9>@<kO_%>%Q z6YrB{;Cp9TT-KK{D>E3JhH=IXd!4W){v1JkJGIAdElusWabr63)Pd)fq|=V)GR{jr z9p~E_U)&dqX`{&FHt@L7@z~XmIyt9Nek{r(ZwJEd$QwVa<?MJ3@wxQaINy%4A>G=? zj8k7z#^P=r=c{#`C$47pSDA5M=%yb)n$;E)=J*%keM#<|TNqc^*2>)|AI?eF&HhV6 zpONvsXm1{QdI~M!IKQ`e&RRj<Ir&TL*jKin;dh=zep#=@e46q~pC_&F3KEw0?Z6L? zOQtM8!ZsvN$M7|K_z3&>f@{FHD~6AEn502xI()BwSl(CVeJhkJ8*ksO;#`4rC$6EM zhFCp(FR)ZS&GXb#v2Z;VCsB{<pN2xO)WLTi9nT3n9_9S|V#@m?6_daj$(@H2wkN55 zDR?EkRMvQ#uMs!-64Bd&Jpj-OJgFF7dG8kd&Rv_Fh}=aqM|j=)$BtgPvjTXVuMzJq zt22p9zFuI>_iQtCsnIMEouD1nF(mnNi|K^F*=5sZ-ys!~g?FeE3EFI5$KIh%1V{Zo zaXiP^lJeKn)kpTmmVo0{$a9QyJXdV_YWMjn%gdOoJI|2=Uj`r-)HfOD7S@BH+NY%u z^?zA;o!1_R_QxCp-X0m#tIS^Y2V|_qoM<m>^cgE3X0QJ4*54`poz&lP{T<ccA^q*s z-){Zw)Zcdfb#t<uh8y)atG^ljP3v!s{-*c~KCr*UAJRG8HI>8KS9Hd>cn^O@_Xh{C zKiK2%58~aIPTYgrh5EQp=*}8ubpBO`_$=t@q@I8l%5WFMx}WX#qo^y{6&b5fq?uvm zzs&0-3>=eoUti9>I5}%KOIp4BGXFzZbX0uTsztn$c~E={-gSvI^ywn}+P$Iua)#cI z!<;5K&wTLpD9`>J#m!%A8ffzTV>f>(RnE;{N|kf-mr~{2{H0VmH-9Nr&dpy+m2>l# zQsvzIrBpdLe<@YY&0k8DbMu!{<=p(GR5>?)DOJwRUrLqZ{6*G(#2!!LUgDYfJ&RS% zA|tMEt&D7l$;fpjWW>e!GE$}EfYEuZFC$ek`SE2WUe1@1csXB2;^ll9iI?+bBwo&! zk$5>@M&jjs8HtzkWh7qCmyvimUq<5Pd>M(C^JOGn&X<vRxtNSp@tkIrn?Kw+$@SF5 zX^|19<5ou2sEiCS4R+*)5;EfAAR`HpGuV;qV{+ij$n`P#@ns}l&X<vRIbTNN<$M{5 zm-A&LUe1@1csXB2;^ll9iI?+bBwo&!k$5>@M&jjs8HtzkWh7qCmyvim%E$!#k+iiV zRXZUg*ZVSp^d9to2m5xiD#&-4#aE*}TUoP^a~hLN<g6R_P4(PHkO%C>I0HGlUcx#~ z;v53!-DzKD+}<$GqqQ>)<88*3!MK<ywAk~YDC5pTIQ+Wqk>tDBoQLE6t%^&6-^sS! zXMPmz*~NI!<HkqGu$*_KosF;gw6Xp0k?XuRcaSE~l5t}`e8h$v*KS_|eOMQ@@1LDn z>efPlgJ;w#K+_TYa^05n&1pY$@{R@RD{jxkHPY7v`ncce(f6mHDM6pS|7Ph+92Wk$ z@x$^DYe<Pc<sbXnt%Z^&!awvGZ3_7#{)zfTuAi=<4-?}oPu`->-MUj+*Cc9@X5U-d zXYUsT&%Ph$eUG~`oU;H{x`KmtzLGc#x@r*b_B`lA(N7Y&!Px_`b)k)d9b{S<M%%4T z47fKX>lx&o=mhA|G~(y`l-%2>rVPaN=n~S)=@I24f&3}TFKDB`D0_NnPX=&mN5<Z( zfHgF>)yH!TJb-;eKG0_MIKe$;f1Qf&`L=_u4$OaQ*3JIWNA<jb^H0eO*GI||xktqH z1I`M_IgQsKZ_>XjJYN=dwff}|K8Y~TyVsNN*z20=gWMy&q(2|&gk2xizRwg|7Seaq z<;qI^R%Yr-mP48^8>^<@I$Vw(!6o(%{fP6Cm^bu67EA4!mp@<s68aMTlA8%c4uCV| z@oaA_+!qUv#=>V~;e*BDpgk6*EQa;HV$Vc`VVpsbbI4`dbVlbw4VVjs_wfNA?J?z2 zZ1!Z8*`sn-@5dFO_gMEB@b{sj^g!MpfvkFE0;6S4l`dmWmZ;~XmYFVHCTN;lCTOx{ zf@GO8BPGg=Xqo1sGU(fNv-@9$Tx3i0@M_NTFgS_#@!quaNv=l(N1+ot!N<l)JgOfJ zjMwp%dw$#l&)M^|!BKpRWFOO``-&3KzoKxR4ZFFeoZD-FtSzP<!TwT~7}oPKa(0Yi zJ&$6NHvL97|3AX;%8dEZ{-rar{sSB%qzSY&39VL_h8zqY48XoLxv>xDE3@lnU->z^ zwh|mhzQg2g>;6j0t(=uA*t_ZlM)^+g65~^Fl<$S}JoUsP-urV&znxNqV}y0VmZ6S) zUoTNdmsdv!qmJ$}bySwXK^rIQ=GePS(e~kKE?}JBi*VHLgp5UyXUhw*8TMTh_(L-) zPaTrqODo8|#prXfS1!LvavT9J=}#*U(f)<K>)6RjSZ|w8i!EcEj%7-uC2c=o>;tdY z%^v$_KabKoo`bDMU*mmT?kQM03%AQVPxW<r7Y$^$ll3|NDBc>y`zp#(#=Up#irb6+ zr`*Xnjk`jpr5@#x(y`0cjr*eIeKPQ7Jjy3)kbWC8q$dYigM4IQd*!Sz_mN7U6}I%e ze0u`6$jT@1t8PWQ1V60?{eB9xHd=iO*gum>V~6EcFj;5`M!h^JBmS=|lSCNp331dS zyxR-2UhCJWuecjDDQ@P4%!OrB2&3I$xE^7&Aq-~=Epo@QtGgQEi(a~{U7>$ZYd_mG z;k~(tcHu6~1n-@q42VC7U+xhy%zF`L94_?X6~OR~c?WeQt8d&cKA6-GSvNKh?j%4S z*cIOGJfOD86k6o{J>anEPKHreHOi?k5;&UEkgKpQz)e1c_uzVEQ;>n8yQbJ*@Ldid zztUAqJLtfkNb)|?H6Q)RmvXc>gC|(H9Dps7vn;eDtOs&5fP9b>^$l^C7T`MaQ{!ty z*QaG2vktmMpRWdO%ORidM>`%8S6a&Kn@u8L(RwIxD~>wgKg6)jd$k*IBjWTtjJ$Wx zaE-R%GT^<;qv1=yJ@4A98=Kb6{?ng9W)EBcC^!N8TFO5v>q~fjRfGD~FHdB(-<^+P z{r@V{r}>ktPxwArwFk6{kBc(Y5BL6D8(@_i;b*n0OZ$ep62?JJQb-TaumC50a5)cF zete%@s9jmDi+cxY_`m;b$Cx5INr%W1cn6)v-qzAN{%(3j#@Qmd$D)kCQJNmrS=eNu zVY|}c>6Q2bA+ME>GVcLR)J@W4u$M=9POTU=2UkFr-228dPJ6tg45LjoY`e}AYK8aj z3Fm@YrmIi=w%USsb?R(8ioVSj(r*1F`;8~m;bftmu#=sF<MD0l#swah@7u7AMQ!5y zul_rP*B}o??*MvrPJ8`V4|$5e`?ruB@r+n4@QMCn9Hf4PJcgZ_K$_!$_;cvDg>=R5 z|7MgITR{B<f2kLtE~q>>{L=-<fZ7Q;hxXm{Bk8reQ8D7tKA`QQ?W2E88fE<eZLU{c z>WK1V%zg=U>v;^uM||dZK5v-wWa#8Ce<zlYe6H3uJDK5LonMbPhmtYQ<s<LP<x2vu z%g1r4Tt2a3Dy#6%%H|_)96suHIee58wR1r>majVE7t*49alZQb$XADtJoM}J^Knde z`M4fZE}!t*wl_%6lP~Szi}Ts9mwa~h#`)~$BcENqIG_D|<g@03uTZuf;zu}qae49a z84urudGK98KGnH^{+P}QoIV5>qq0Bz)65(7rPvBTOn)iWXXFm$a`sm5k1-RN@9W($ zM(**#-e({7J_mNs%32W4tVVNJ=t%?W?m^uF?~&Ad3f+0HKBQCTvN~4Jcw;r?s2=G# zmM^qmt}EqbKQb)uY_>Pv9}yh?FLCb!UFTKZiJmK6NmsT=6c9nA0^byoT*V^DL4j+k z<X$I=xrr4JiAX)gt*>G!k%%k{Sxyy}gzv|=)XcbjGI&}uBL}79c6s{zx}5dgx7>N| z)V!6x=jrpC=e91GjsZhmYG&N`OlyJxW4+&RpMAdX+)wvP4rSgb%em*zKKtym_dfgV z^Y^oNk+*0W@=D9dy@PIvTVJ-Q?^`bQ85|CoAJ>r1EtqRQspBJUqTc;$xQ1|1WH8@w z)rIvuHsAcjnd62FtP^4CeHZHt?&BOGTpwmXOpA;xpQxvZuew8RDfO|F?ZsRQzO1_s zCHUkGNW9OVD&k#S4=2m${(U$XWc?nz_}y-e+SVboiEVZ1?1MgS>}!&T@j&Oc@{JOq zuY|cT+G*PcT%fB3ahB2Z#fefDKG{KxSCG{Wrn8N1j~el^ZvoIpg`YsWeV;e<Wr5>F z84k;vG{!yB(55_ddy-r`XM6ne)5J}gxbF`@macrXe{S)*@*yp#Ka2LbbJo%)y|cWe zo%)sza-hY^mi>+T9kpBKnSc4_HRMTO^v~R&Ed#`1=S7VtJv@1&i(d{|ToxU)-wRb8 zlkd2Mas=-9oIvKokeQ6PptS&eox~5hiI0Z5$@@;qD8Sp%q{FLUbRncm`ijWf*B9DI zDIe*J>aFdAP0(AOHFbD>ct^v8;IQ!G8>-EC4Q&e7ut6*BO-R3I7tZ)_s!vXbSwHtF z{Q52ZwmqWDUf(1?l;??p-Y<7$DQlP47t70fdHvv7V#Yktg8eLfLuJpyV#^{LdOX;H z6=10Y(w2qQrgy+3<*uaaIoeTsneuw|KAA_lHs@y=8$>TPZ==Hj8D(R6)QK|uZCKxV zDE-`XgB{O3KbtQ6)@;X}6Eo%}{uQv^Q-=2muj~^uroo=w(snMaG8-igd=@y+iL`>G z;Twa}_wD@G)i3b+mVxlx!L!}0Uw$18z>9ghrNQbB)*#C0>%&|%Pup(&#D?!KweO-+ zdFqnWp&7iV5aO|Q^dYZ_c7XO?+JgEP8qE_SoRz_cktcltvbrml*YD+Ftpn{Tr}Zi1 za|~f0%-X)5*n_aHV<*T%w^mA<%YMXrcfFvi_89hq@SDKzhkMMf@uC^shCIr)i8>J6 z2l@faHSBB&^GWPYagM__qg;cQXZtu#IGaP?qlWzsZ|c-wPnP{Pf%q889Y?qp;l21x z;<pQF3q58-Z_#|@5!Ow90WW!?zLD^c>m-=J6Yi166i(=Nw3b#G&UpyeuW*klTuq3N zI)yp2!okNF8!VcsbqYs*`1OW9J!qvb#l6~I=!NXh_`E=!aU0sBa~#%JX?>$?-p4j8 ze0-i)23KJocv1IU+TnvO`Nj==u$CYvx{(rjej;(0{E{^@e#6J|!^j>5=0w=z<M>P2 zI(pJo=&v~c<XoF&!B6gWa(t4p66<YIy;#drAI<8`Zj8xaDqjbKouZx+2W_|iW}?Hl zz;s>Ln)m3f=Bt+R5oL8Alo-1ezVqFyASXKBRQj&j6EvE=Slif#^O<wpZ<zZI_|*Vk zwn1b)y&o4M$nX81KsoGp0rntZ=YtNjK=}RjnA;HkLztiAZSegg*4Kb9Ec|<;G`-Sc z4pWv~fAn~<tS$jAQLP@;sY-8urND=#*|nRd*QL!7;CL<mHo0Ga72T=2_t^v8=_;<8 zfId+6GKM=EtKeEu{~_y^^=Zfl{Mirw#NtWBoi4aJQ@f-|-$-0x{iKKc-`Jl*|G4Yx zUK^|RkJHM-9`ws@Jr~-_{(-p>eT7!azXW|jU!m>hp0})D5I53jPg?`<I%rIE1&?D7 zax{?*Iubor&+3YzH-)+(t7mm1wtaPDVY$Z>y@1c}&za2rt)}xd=2a|vzM+nOQxn6% zy$QB8T0@5}1{vXz^IgcVCgMgP&XmDQd4;78+i!Ns`WgB!$2*;i)}0A*@O4LJU69}C z;at2m+^<`@Zj@4)XRFA(y6pk2#0`11*|Rh^U-H*a6>k+A@x!ZDX7w#!_*Q+Bm07)+ z`%*o0q~54}S{SzW%iUM6Psa31*Q71q&;}E1tvBESzEhJ(2RVd0u;&4Pr{^MU?ceP= zHuo)@)6nnN;vAK{qc{6J_A@i~`?2fu(BE=C(f`!Blh{h`uh4dI4)q*$2){#sQCpk9 zm|r&~ajVzx1?uP<xP0u<*Ud=VB)<mp?7FK_TWivYUqigCt*Wb>yA*+|bv@+l#uBVu z|1;%1Y1OqmxkFMQ9_kc%BmUeW8K=T@?Wf^<%FzuS6kKZe=a3%fbuy$u`9&J7-0Pbw z>(dX_hSaxz;mh@{kiCwhR`zp$QlFapW_{D#BFaa406NO_pcQeRb$R{0CGi#99a4^` z9K+<>BSEen^hWz#&K^OxxR28k<Twwlm-h_tzT+9v4!Q0@dF@L}bgJ!Vs8eWPIKOLR z7<F?`Bd$|2f5w?Ur&BU#Ev-&CopSlNq*JOx<kMd82Yrn?2_BW{(v3H%E`>D0#&i*u zz6|-Q?=TlAYv8hD2Ym9mcZ$E7_F><E3?@ANiERCnx0HWaQrocy`ZJ@pqX^qE1pOI- z{=hER7d@Mw2R(VUDOrZ?H$uX-sBZO<=!15V2J~m@QJ(f5zOL2#HT5It3;2$Q?6Y!R zsTb=?tZQt*)O|vAk$O8;gug$BUxbG=9rf1Berh0dcuU{@d$|vYbUPMMAB!@^+-Ht~ zukDP>+!Os5`b$_F$9RCU#~5FqMxR6ZS2JcjjN7@6($;X3G(d*zN1(Mq&Z5!pLt7K5 zhkD00_gMTpcHvu9V>*VzPGGKq`Y?VPjLZ4bH|vK=i}l3-Yl0Xr)A-E?kMrAR^<%Rg zpPl$vN5jMPS+ZX;h0o<o&&N9IAMPo__HKji9mM$m&)+pYb9n9a%%8q*dgeR7Fg@Gw z==5v>-x~PD$ERa<w-<Hm-O0M^q}9sB@_VKM^WBRz(=!b?<AD471LpRd$o~zL$*O$W zXXYg?b5H3r3lbN(CfH{VBc8YRk#@Kqwgqu%FYRzW-w?$8&U!gpRQgi=h#l*G@Eh7k zd>Xd|TkDPlyX%eyxjM+E?)d(#_3it2*Jt+U>N|m}3+X2Sa}x1x<WU#9EUofAt%84k zNoCRr7{>!c`KT;r1{xb~O5FMbGZMCQ?3tphLx#G<JYPpo3alLy=Ap+K)G<=lm*vgA zP)F0qpQxB`>t^{(u%^BpV{azdUEdkx>P2VZqc^dA@X?#qM|XSN<Z}ja-6)d<KPJGB zsncufC)mF84b)Y+i<4mdi}!NQQhSzkqaQ<VvVK>ACY*({G&NVHnRA8v4EtkI$Hn>e z>_b`)%87jlGIAeBZ9w9zU0eC=1oGRpZ;-}zmJ9BczE#w^dx#s~Vzd3o)`xzy)D|qP zHn(w|0dx1a!LESMk$j7d2`g`vZ;-2RhtF=m?}hm>;$48}*&NrmGuqG5_WDk>JD{<? zxGv4JVfF3KU!cuKx~yBk4iH|~Gpx;7SL8R;>bsd9pL0l?t)8KO)yvsV{BB;KLpW9k za0~!P_bhxcDQ9`1=Tw+yc?n;kZ5bS!g${=U{D$pgyJ*YQwk1F-_Cw&O;Wzf}E%4OR zdldPg199p9<{0A5Sm*8W*7Ly&GpBr<6I|#gkW<YJ*3JN*2Jgm@?&cKY@4yF^xxAj& zZB;#h{6b$s_BQ~BaUSEP-P@2gZ|GtYaA~eX5<km8$GL98K4Q;Q9a<zUqIckxtiQ(U z6g>oANWb)fQVM*q^C`d1b{$`Qy^u90w@(}7>ifW>UaTwjyE^GRAszAhLYQvlkVHCd zpzC)j3x~Lsb(6zE8DqZC?$y%+d}7Z)_g<9COWf-FKJck*od<I2^yEZ7b*WtGhnCq+ z<n^-c>vz|eP;V0Q_`TSBzE$VNDC^e3+PVJZ=w-Ut2|E_I$Kn~U9NSr~9QD)3!#&y* zWGQoS+I+~J-&tv`LibAV5M#`e^AfVQQG`y3|8B>6t|f|}%Q_G~3|g9L%i!yipG_6c zccqXn^GvMCjWA63vb`b~#~zB>BChA!vsU^hv8Hnmk8N#*AAvcP^&7RXQBO!yCx4;; z^wF8-=o7w4TMjMukxy2>@JlPp_q=~DTF#}QKLIE05NwU~6P=G?@vKq4&+XRelCx>7 zGr9V$?Qk$c59?HzRFD%oWgdY&$0pE5pDJCJF5hWfTtvF~T1tB+rjy5X9b*8r_vt!D z7PR+Z9V4&0LH=M39sXFOw1axrqvIH5PrY>c@MpxH@R$7KIZv)RGu(zTLH1n0)4cAL z)*!DFcYbD=PZ@-=hHM8+{(fB#FWWaGA7~pnj-fpHi#-+d<{$_AgSmxQAK%gA+Zynp zleBHN4z$JX*WF4T7%T6{AF4gC<!^KNQD@mZq63YmZc~`DcVPJK`PmNe&(-hgFY9-C ze%sl`AP3u}?Lk=hDf;+wEoHC_KWizopQ^1QXZj<c5jI%rK|3iY){i|T(SwYgm*M*c zc8nArm&>%~h`<96bXWWYyq7^92<`y5vz+tn#%~Gpn+3d&QT0r2NDp;Q{0y8$<@oF9 zp}w^`+^o;hr~IR>!5){;z6G%A4}|+Sv>j6d1A0jt!Z_bu`Rplqvw(dD>K|-L1N<4b zgLn7ErmCM#87QrZxgzWb=G%sNspp^}<<-Y_u|FG}d7c3+=Mjf4M|w*9Zd@RKm6NQO z>pH^{d9P3=$vS);MxVkxzNpVp?s1)Dzl+t)cKByYXhZ2wz*iHQu#P0cZ9z_S$o9wi zMasnO_41q#`DgtG`>v12KfFyD=?!_M^CvwQX}>knOkcI@)E7p;Kib2L<@xgGR)Nd; ztv!O*>Ilc-jN>=c*Qa6sZJ&_(y*PEHQ|)U%bg$Cbe?skS#dqfE&ttC3F@oo++1I*& zGYh`$L701VU7)80{Y1WN$@Y2cC0%wrtG$9UJ@f<Nha~~u<LFmd;&ia55N-}Ij$l4r z!1{9^)|vXTo;*NWD(!P<+nZ6&tt}4_hx(ng!MdlI=#zBIEB48(ZJ(@tFz(h0FEXt3 zy0kNrW@RA0D%L_wki*-3_I(<@E0dOZ2flFwopS4{Ro=|-+AQ~7sFO0M=`x?sBTU(G z4Tier{A)*33O-(&KR@>P7>A`lSOyDx<aG^f1N*Y9>qEvIFWFy0Ibm$6huu7mG_ebQ zpGRIT=4b~sua5q$JFlW+4a>+{t9y&V8*7+XOWyCrItu+*Z>(Wn4SDaryF1$fy&+w8 zo+5WnKs)_P_RAjbkKk;#-m4M)R9#App<GjtgFaym0CM8nHhg!+?twMnyafI0LZVOn z^G_uDtu7_3{#f0|cMoNrn^k@422Qv3i~SqTv;KWn@}OVnYfW5ZpD`bdpQ&(o*ry$y z=7;ixeQGJJ)z!SfT6$U@VjnY)0Ja3)@vMfNA;_`~I9I{56V5MdjcAC$qTN^{D|j^M zI0&AyUszuA3>WLpY9FJ1WCQS1`r^HbE9!^wOefBj$+?+k_IdcnOlzUt+_d<Qub^C) z+Mz-fJ9G+uUXS{D8Tfgf@bkK`k4%1ds!!VG`Jx%I^^I~auN5#E(g@rcdxj<be$a`v zYw@{gyH6ob8zJ{{XUsh~A95T1B@PUjGT0WttmF%)fQ!74ePHM!c_#jHuvXH$m0!k7 zZ$j9mCqYj!h;Z;ex6}*Wm$3=?q?P(`75%aquxummV8B0JWPRP9oo79MoZpqm$NcGK z=Stu+#}2hGi7Tv=^;!EZzDPZMgv}~%_!5aO=2K4s>>VS_@34Vy!f*0M=0@NLY2&!c zb(t%Y4&4jvo}JwJfQ?B@y2Zt^ZcT}Ew3A*L^3ax<FDpY@{W5!98ICsr?O(CbFKM<8 z!l%@}<DRnSk*<QBzi3{v;y1AEJWlr6F$Sd6&-Ck06^*pJeC}r3&9>_Kft#nu&*kQB z@4mbL>Gy0H+VSl0#vS8R#=QG({tmn}F^tD^hNp+Oq5Llnk3K(wyk8t0ni@g;BNJ1j z+Xly;9{m)6a0L?o4jA)+efS4<e&9IbOz*?LG5p(i|M-rnq2cGu(^G@vLxYn;kBx8J zF*G{<Jb=t&(-Xs!Q&Gy}Pk*FuaB6gXU6f>oc1@UxT~p@8;mMt&JI2k2cc6Y$y>Zvr z*oOzVlL)hMaQo=kOE&iS)Zp0YwhiOYj}4pAof}7|hllz{r?!!F^Re-v;mNVl@!|d* zJ4dI8%}W~?8Qu26`0&o1!1uJ}!N<l&Ke=o8@m`i48y<iB8T|GQjz7O^@cH2nP3{0? z#!L+E-1)0JCWi>~$k?vor@<T&CE=0L=fFA%Z`}2%PdS)p1_6kAJ~A~jJV`*-DQ&P3 z8}@Sz_%~GeMIgZMGyHvWbbRCR;MA^3RQB}L@b;(22PYtaFicv(-@$QmZR6m!sU4GM z<BrK~!;kD3Be9gU<6r;as1v)S+tw4;<c=4Ht>g*+$Rj(ZQPh06_Zjmj{`C&;9DRQL znPEY$IG-Gxnj8g`Cqnb|u4gCFMDys#;3RND`a4bk<miioQ^VlR@c58L<fKASKmEx; zFk0X?Opop)ae%OT8P)yBuF<g}R<L1ma_}W$Fh}vP7XRuP;a}4Jxc?^*fWDT&BrCw2 zjKQQTz?_c3G*y6UkHIuofH|iyHTdOUO9hyVNN2l9KmS@?z(ytgD#C<uc<yq62qr<) zK1^E$m{!FRW`zNZ2vsN22ohJA6{8t-Bsya-aXzDLqB{n2B8G=By)l@R6=3=m#$}DU z0MhwKJX`R~WJmKv1sK{4A7-io47)dzQ~1ZfCPjD~!c1dbCH(p@8HIs|ZyFV5Uks+l z!$UaYIT(Z4?BQ9hFw}X!u4#pFDndNec^~Fe6=10IKFleF(I26QI`6}jG_wimGx&#S zg8J;k{A&+pR$(qG40Vxz$63JpBOdBAlU+ML?E(r%m>Zg3uW6TKcu=H<GGS3ABheYd zLztEr%zG-pq!mVKPHd@A7j>St2eT0SR{<ug`ASbsYYYbIH9awywhAzLz_4xnhrdKo zVVV(MU;^;4Uoao~^b2kHjsFp53lbIPp=vNA5zNMX90}s2c_M<@#BltNFf&Nhy4GXF zSn@}D_Czq97nVTScFjjH@4a3HhW$e8x^Jus%*hDmeG64!&O|Wpr=G<BRF3iF^7yu~ z9Xp4g8x=o+<7)5dq>P~)wkCFtU@#t@WQmC#JEwMTn;e~(de64)gA+0?PV5}qMP@xU z{QR!5!AYaTImXAqZ7;Bp*^PFTy7BLlF>fsx^R7N)?ml8n+ZB8=um`IOpgTZ3xNOX4 zpdViv^XhpH<h*BG{i^53UYZzr&(P?$DI8LMF8luX3}Mh7o(%Ij6sOmf(K$N)+z#`? z@Z>mMyzRTjrbgeheQ+n*BgC6kDVV$qP{A~Q&*8Td|MK`(K>QkhH{)Lt|B8rTH2OD% zdQc7i>ev-C$UoxuVze0)?w&_`pldb2Y54EBF)wC~nVd6b#|``&Gv<>>`{WGr^zU=M zD09-7FGA0L9cdG%nei`w@U1u9W<K=jqaRFXhK65!VRWj$|Izg1@YwL+PBb{%k?y{~ z`~G!i17P3s{P-@RWpy%<N;D<R{X1XUJ~j9(ey1kw?}!Tl!{Gf>!_!md{-MFCL397J z@HX$4)X5z-W!sMJ+lS$c-w(9+4^F{ZdUn?o{hc@Pmj*2P<m_O#F|V|H<-uS1`#JpI zg%SK?$Y2%tNc$k=nb(AW_h?*g-7An$*&plTA9<d_zm?$L4;YrwzCwJf-+{RMb2L%p zE{x#+0Xfw%PWot99eocY>}Wvn=q~*4UHIqzT;7LvEG~ZEB?9gs!Yxre#Bm4Gv<=KX zdKCYo%kBOgKCcbT`h!a__5BENEPfLINFVx_jPV}6{{`}Bs8laN%l=$FK(zQhKL^Od zJf<V=;g<;Orf<Q&>tHnD?_?N3`WEr><Yxy&0@`ZNX#NLOg<jM66NtYCv_~}lD`+12 zRPutx(f4R?5@Q<QgDQ`+KWhB*a8)k?o<0)m|F_mAB~NPnRcogbhc*6XYrAT$YWy#( z{W30o$(VbgbG3QR{|94e+iNClJc0Ie%&2YCIP{p~L#@)Ez)~0Oe9e^Rf7BSU>8|`B z;%Gz7HO>DdZjDZZZmln|8}Sop%8=&6&Tw3<!GCOD;&+VU7~0sbakOt^9;(}=@ju2_ zZ@{xRDZdl{H&mw;_-W)IkHlXC7wE6YS8yc$9b^7k53k;6`R`$tJ_Y!5Hje+B=g9wF zjo)s}^ZTG{DUE}c@dE%luW|H4+C(#_@kgzlG)fQs1+j<6HNU8~Q|qt67)5((RQ?>R zX=@#SYxWzne=qV+X!%#HJ#OsL_#YVaYp@rI>l*)4YsU@!V>G$uoVDpDt?|D>{3P&A zYaD%<<D5BW<F)X!IHs7C<yS3i3dcaB{H}$raO^Qj&Celz5%Cs{Z?<EjIiUE!8;+As z-nD@pGaY@kzir1)Q&f1ghhvy&R(xNEsY)X5>H}?G0?vf;qxQSVhx|=e;n5zBU#8FE zOQKJ6Y%&Km4tc)Zgz{Qn5+^`8ex+32NwkmSSaPqz_t-J5#^v`J^UnuRev9Vsz&6V< z;NPtAPaEtFAYb{P{FlajVFdXq|K!WY9B6|oj#zl)=pP6TeOx9X4!I_O-{m(;Ao(9+ z@xP44za5MJAQrz_9<O_IEPi(^et#^E{%-#)J#~-A;-QV#{H?M4=VS2~WARcfPKQGN z6d(FSS^Q8eemE9~KG{Dl|A(<SbwmC%|IcFaugBv5SRSwEI3<6!eEr*EagO`)r}^OD zs$)nPxkKzxJ;ylt)BK@Wd?pr;wZH!NV)_3*7XMGN_}|CkH_GD;x0S`kX}o`%nH(M* z+B)&vvs<SIpEuh^hPS=2RkF4|w_|eq;FK9yxAnurzq+-5aB?TSZp1c@j$;Y&Q^Q`; zhlZ!N>VnnQUb@3m>$VP#jqTWm6|Ak#as`V83H2mh-mOoH%WJl8-#UmDtF61n;k`5V ztFoBt5?qldw>|?$9<is1;K{AB)aAwP>X=Ia?A9oycgOg!7MNfQEH$=THghKyD5K;d zS+Ls*e_xhAD`t{ZTgFnm^+mhBr+B!`whhZ{WWm@Du=a)Fmt_6Z=1=Ido^btHaB}jc zt>W3*Y)&t>g6mu&v?;@GJ=jKf%2J^Xvl_V0vRwG+{SUmq`~LSo@ZbZiSnG83%M1m{ zqvNAfLKFmv=n#2B8m(MEGBG^96)T~`!bu940{hU|j%NqQc5dCcYkb?zFo$dnBaZ`Z z7<p<KOTs%P{vl3}o*vsVwbg+~DXt9b3$sO7PY$C=wkpYVkdN-zj&<%~=+5-k4MQ&u zj$1-|Wy-bHL1|PfL=&G!3uKnIRpxA(!Z4UIG(1f<K&@ZIlDWb;Ua{oF&ajvRs*ohJ zI0((o;(!n^EG@E>`Ccpy6P(FG)(pUrK>(9aQqxXN4U0Q<@yJ9Whtv_}=92@qj}1&> zs=IZQPBNpSJI#kc*5jN#KSwb$=Ag8w7wx0+ioht_r)VWS(XgyaLA0V@dXa!{-7t=V z$meSFR=b`}6dnkh`8*)33^1pILJvc0C&#x=431(h>}u@a_@vo5KqSM1+l7dyM|Mn3 z#nSqAj6dJ^n3wqU@bC*>^f5Mh<0NP8+lRMr+dkpvO^;65tf-!+Ul^S*&!Hm@!$8rD zdGKU}%X@Bec-YIr`n*AZ9A^b6x_!rs!wwSUJ3O#}y`wJ@PzgZ-wqc0psU5q<hZrW6 z6E86dpiBTXtSHlW!lgwz`TOLKp<P%bVL{vJLIII>$rLWDnv@sw^Z*DR#U299yrY-Y zO}sSDs8h1B(Va9NJ6^!H4#a1dI<{^b!~TwdP3?LXuv1%UmA3AL`6y4Gz)sVcrlZ1- z?3&_6(^lx}_)d;Aq^>M+jJqF5v|AXJ0Y%HW=|VbR8pn1KD~3g$lubAY(ApB9;n+ci zr1?fP)X&Go4197YwF-am0iWdjnSTq|$<c5kjom00h7TEr;gj^c^b5v()P=8O1xmxU z7<U`$fe(MR@W~pI8h%96;U3g()O3c&BK);yqi_-gKCL*DsCU4HFJYHX!*yqjc}Bza zJzf~ThD&c~$8=p`8i3#7<hG4#R|;hv{?wHS|EkX`&28{?eoJX)cph%D;%wR*mAyTS zIhm$6qb`S&pDO+(O}}HG7Y2+=e>3p9aLaTQe%ondKCWe3`=jtXCL;W6o>e;0)-}&5 zoeYl{vqj6U`7?#-L^^yakqg71!NH^-P?&Cma|#N>Fxur{e*UO2zpOaleJrBq9;E+@ zrr&!w;(w;q3+KHsXmc{^NPA((Jxsq6h41squDubpy%Tu0YQ5_&M11?eo!S<Z`@mh= z7KZQh((jMbf8nYzMa9#T@xmw*rf>Gb;D4CDHwr&|J)$88zB!rZ;Ll3G7&0b@xsUK4 z;m1Cx>0<~#tmzE*MmqM`XB4J{^v@~`!}~m#KU0`Fq&xXCd@h11Jf$#@PvIHG!|;{} z=5hATdSlEHV;+A(VHoa@V2~W@_7j~E|DQM>$?K!PqIl58k5WIAD8%qcq)Q*Y9N~GY zCBpO6e1zv|M-R$A?dV|`^f;Y-hUuW0>m|>8*w!WCPee34Gak|K@gHe=8}t|RNTCg3 zZriwi{VVUZFpbmD>z}tU63#?0#YYro59CieQNEGkz6fR;bq}<0?PeQs0!G4+@!%@( z1b^EOM7DGYX#zh1cHO4%3^zyZ9R`1%)v_<NM>;n4`?f6kJoX2+EW_Ku7sspZFGeui zKjp!cBAD_2$HFv%uJM1cFcQ87TD9I!ra+U1C$)`)nbbB)I32-HUXNtDv*?BQdf{VU z_<R(e0*{<cm;(R9aK9IZoWk@4FMQeyUyZ`Mz!L|*EANFzyzrbCJ`sgq{MX7K)brxY z${&XDZ&-Qq;x`oLIMTnZFbrS9x}3uND)kDwL0<jpJqp7x+UQ_j`rj1hq%kl3?+SzP zr+z6)|J1K|>HkU7UjxivXgb5^BKdymb%i;D^dBh<!#5(BS@6W!^G|nU?NDjnjdT|- zHDmg(>7~6<+0Q`#olXACZ`!)Jw)L6M+qxut(3nvz`)i*@p8y}Y{`6~~K{#o{zYh9c z`mcW_O5cmNINJUN=yx#x;${T153+DD`%XpS-x%=1Q&IRgLH~B8=QjaA?!s5F4yxh* zq00+jh{nM=(Cfy;xqdGUoea}K&xGRHpTb(H3wwIC|7xUTpKtTRpuyRSFEmBA<+o7Q zjW54Ffxf3WfBUR4J2iX|w1weg5zImKaq^98dI!<R$#V%`!xaE6`^9`j!xzDG=g&a> zLqG7}+-dQA9<cxBE{liZL!iO=gbT+bKfxfc25>wpW_mSz0O5iS^XwS?Qo`^Ind#Rs zaNr24EsLPptYN^KEgBv}xTs;^p`C5Oaw^aMU=`Aafv2`z!zU3&9RhRO`l1p>el6&e z@HvE0M#2{nKCj`c2;Z<_o}EdiHQb6Y+C}&T(vl+@?nD?gNqRTJ$21JsB<hfKv^9BM z!)Q}on}&g-F0bJ!goiX-LU^x+fx8av6g&qJKC5A*)m_u@aqJ&}K7m2o=`%|hZLcqC z7_`*y(eOotk7yX}tv{pT8wexLvOGh<{VNIcH>=?^ez$126ThHUV3>bc!>k{5OL`u^ zS2PShG+YO6;O8Dns#(*4FNHYMxtEga*7OmCQJ(1=@tfML=@STpS4`*LN@_;a@tfLf z)47L}TF`W~I|Y6bo_j^9*ED?|;j=cKdq%0tnhx01HJi@8rp6{sKZ$UwO@AM7H+E_I z8H9UmI`@{iKf$`VkI{JEhPj8qeF>(QE+Kr;hPjv4h&a=^hu;Vq7{2=m!dGmVd-{!6 zZTKG4!~F-saF4$cbW51<H#7_!?CMPaOf$ks8|J<QZ8YV=J$mi~Gc0@c)0&<}`i!QZ zL%5{roe1yIa30~k8ZIEbPvJq=syR*HjPL;sqyAL~HC#k^Ug0kyd_vQYAbi@=$$kD+ zXEY4hRcEy=pnVm}uwC5qU!{EGe$=YVHl1exR$bBX7{XU=n0r{OKp)HUY{07P#=L+q z|5l;Qn1;DrP8jaFtOnh}!;=W7Y?ym5tD9_?OaH5zZFu7Jw&$L^f5&^%;orIk9(?e@ z2i8BBeK4JVuxlOCALwG{x~{JGcXy}LA6WOm2ObdU;;P+`^=(YBD)*O=J!>!F@;S-s zmj7o=6P$~?7jNl2HqK%5%(LFX4bN7$uTSFum%SUn^VNPliMYF?%CqzO#*``HJU+iK z(1!aGX`G$6Z)V%G%;DK(2xi&y$ZwEt-W!s0^6xESlg{3|eRsi_eU3(?$=U59jXT=G zw#2^I#yg}&@wj$%0#5E-25ZqHd2ZdF{deCZVVQTKo_1|>ifzUlTI~h%<?nm<ljQC= z&dOK2H@oaxT0Aq4cZM@cALWGm2DpRJXa<zt_9C`P*)E0QJ%l+&FKFK!?3T0hxUW&e zcc)X{_h{Pjj?uqTT15wxheIgetak`A?(Dhu{txdF$l3eSYPpkP&$?UwWaqHs&hlLt z2tikKkQ4s9dvCm-mVzt@<Gv%61)fUx#!l(IvEF6wZRj11niJ#!aJoAhLx`s(ZuwP2 zobPApx4^{laQDdME&=l8euVOXcO-cijr^o8iT(y_lSdHlbl>)%EEdq-V~`7B)}_tB z0>Zo->E3>TUbGa<`@XDv<~;`YwiV0BofYjf-KZ-88q<t3tTL6m<)j7hPM`8scy?l$ zyLRplsN;>?xxriV<Q?_Bv&$qG5Y8a%U~h$Q(x;Sf(wA^|!_kbk%l9=zE`hzf(o%_k z3(B{(rNn1(U!#lk`26fLH(zo*Etqxs4J6?cX&3o`CoQk!>^Dm)++Fi|-w!_bI6k}n z8l!>tGMC5#b-6n$ln2|_rTUD!G@|p=BYE=_?Pb5>xA1TW`{oVGbA>xfRo-&MecQ&m zqqAwe!P98^`Sy<DiNAwb$)3nvC(x1M`;4V}k$0=pEu`!H!^9Pa?R~|R+||nKH<G(d zT`%;4?aJuA73vV%ruHb+j(7@pHF;;QDO-a5_rCRqJn~BP9(R|MEJxYmw?*%P87Eux zmsG)Y?bkOu<er({@r}wzJMbm|-frbRPc8GyVHw`zyw{Z1gS#=M6yA3%FVhj0!Mz>4 z4MJNG)njd1b9tHfem^Y3_b%_Td<fg4cj#hez8sbT9s4uF4{3W~?>4!1iVdQi_SVCW z*l#Y%T{yhSLwg}_YN8z&U*%4o+>gSYyt^dN(%Y`@1veAVtM`cgZw+$pPF;%q+ub>x zVVE)vGLqhjH$aVlmytMDcmuQ<_a5>7pW!z{+6ceg8=&Yf&i>1LDHt28+5fUPC4^3~ z<)XiollmQX@?ALKiNEi#Y+ry*IvYj4%6)T;s~k(M3@k5;I^HH#hdbA&%lslgPJMGe zgB@qk-{oHW%jUo`dDG}KyuS^jCvOJ3amgRAvK$Z8PD$HoZ*d2*C*ni+jWf#Ejn4+S zGq7`=p+9Etm$S{SYD22=e?|XMZ3y|Lc0gn!<CLW@(ThCz0%AXCFGSBvtF662T;Ja` zCE{}Lr_g6ZoNvCtz9#4^xG{4`aEKnH^nC%j8`-S=Pw-(JD3$lW&JAJzgIxEoO?5h2 z0vi^&shzQJ0O5O8UR`?Mw_;s;%IjMDSFyS{mPxx&7sF}auU0v7Y;wHVi*V>KBiypw z{XO{0W&MP2uc%xo2VXAaf7|-B)!#3!wLX}qN4QHUa<Y93e8TuuCKu=%WlbFNR*B+p zK1sa)orT}lsrPNe_hFT`Wpu_Ypbn=qRcR^L5i`az<g1Rkyu-;mubv*6LIfjz9Nvbt z-)M7woW7|-J~<sAo#`NFWuy8L$|H9F^}PCCW#0&OZ{c`$gd2}^8V<+&57yhH@{ln4 zJatfI2p<`5ELE@*UVjt6$=&%jS|{H;YGz%&4WJ#SEL69uyc@fCQQOoGSyp_58@N*# z@A*yF1==Xkn?heCO=5%ajm85E2O$p=2Q{u^USeM3a=)28hAofYqx`RnH)aPvKK)_% z6qR%xW%<sK@PO@gZ`&Y^JPhX{s&~{U^0*E9Q)E79<-0thFZgEi38qnxqBjM?H$eoK zpXc7<L0!ble4R5SHY3h@-hq1Nn1_0j_;vL#U*zQI)i({6)Zx8pAo%_I2cq|Lm{;rP z={<HwmyBPK&neVPx?acI3e;`%`NdtNA9;s0??=e%Cw-uq@>H7n9;U!I4m9TPXTDz_ z?`4CAF^?BA{{!B>3b;myD{ah=E8@a;4M5j{I4+b)Ieqo}UeU;Wu2p}V^*6;|C-+T@ zi?2a{7F3^ypwC;>HWkoE`|uV(Kjzy5sH1>-d$e3ye`%iwz&DP$<lDgdbmRvpOqc$4 z>aUx(yScgZxmz@!wuy4#yiaHaUj4QK^dB^UpX6arkTX4q_gR}(PrdH(bzS;7%Fd?i zyRf#wccHR?=>~~{AK@%$zfEl>ai+l!_RH+rl4-<zi)|vzDzp!8%;G(ioayW_O=pVc z%>PLrMqyf&CVVSwk-TCVuDh`Rbuzr+WqCWGY%bJ>MKq-`tM~UiQNE>UL~bemqWmqi zy{;8-J>_}_zkY?bvyISc!Z~`|5f*wuJ8`02@*be*5NMkUV(rJ<L~JkTekp{de<&}c z?N!>?scmDuO{j~qC;vG{uU0uRZ#D9czcD>XQf6;h4?KD6d`x`KEO50~Xao6#Z_U+S z#+wjWyQw|N_>3`UL3?|U6FY(NiSN-O-M-DhGTK)po&0g{HZ&8?i!)4~*1`5t=OL5b zi_o<!#+A-2^btI9es7nSZRXpc>#S`Wpe}ICD43e_C=XgiSLZcc2V5NI>OgOkmTzKt zrJsFC@F7lHnR+OV@uwqEh`)b@vhbl3UjbYv;2fO=hO2!WMq%4kPp~#9??6eL9Sxq$ zv945lC(3jI=K$&peL(cb8%TqVU;Od%^woYv`PZ-TH<rMIU!~RPZ@bYR{Z^pPD_Aeq zuohXD$Jaz@rMj2F_2U?>?jR?&#_0<6rWr8MDUk`o(3P7Lv+0^?u63wxkhT_)?Yzkg z40Nzs+k%|TcSKeQD^B}P3(8X8XwQZiUV=mB7MKGo4)PPW<3vT+Wq1j>Qa7Mm73eIh zqg<y@*8s}-y5M|Kw!4e?s3X8H>rVL1(8l05t-lq=K`AS5bi(hcyxw|Q$Hua6W1yT{ z-<SOW=NEy8?}W`FP2%STYsH4ApzBHYN$QxJ7iAYP4xhqq+~W0sy2kGbk^WmLyJ_)t zc^_TJ{nno$?LD_re?<Ea{*<(X?(SPDw`uYFA0s^b^iM-Od=lEG<#>Nf^kZ$T$@2aO z@=bTpPyJd^W}6nT{VScvHa!HzTK|IDMDN==w1>CQzFV0WRnjfCPxf6@x9EFR)Gh40 zv_VhaZRL{~yOnZyGwKfskG@1cH(9%xppV9}g8nea#HHf_bX)1sH+IBVquz5|moWr= z13uN_Yrv6WpCq0YY&ZAcobB!-yxL)ZU4l54+H<ufu)$5fJxATNZ^T0z9LH029I1e( zjpf&;BYzk1CQt6w=8hHD-%wWfY!dU}m*58Px)5$<JqY(A+@j$;!nEHRq&FkX{e@TX zOFn04X97FFWPXPJ@rL=tMZj<!FBRmhY>`Jlm~RQDolV-b_>)o9Z_zQg_M`SS4gA*b zVhusV^pmF%ZpD}(>mORC)#DB6S`zo*scS7BJaxm5ClPN(euy7qe{&FP2VlH*{MfB6 zyLK#TcMRUGtvmSS3it<Od}>+&ex1UH^Lf_q^lH=MkMD@(v(0JnsG{Gc^9EfjuzgAG zX|_~(9II$=P=~Igh~81ZI7gu$NcqyX#Pv&UkE~xXU-vN08Ndq<*5i9W`ym_BvuW{% zv$Q7+qwgiOjXvF#$~?YI8S<r4nYS)eCPhADoc-Q1FziFpKY%}+PyZ8md8_<uwf$4Z zp9<~zf%Oe&&*(RyZ=-)r+4lTkSlUybH}T)89d<orUcNJ4p&hUPQ3YB{m1X(5eAgnT z<9lqIU;kuGhxWdK_8wDTuHxI)prr?TAFfv*j(IuwZudVjjIT>ezsOoSNFT@sIXm}; zT&SCj=T%O$dwxFN@2jJq(M7y&jSF?QBdr~C(7W=75_yI(R<7Cba-y5%iL10aaX|Tz zWuN4{;Ju~9?hS|PER4{ZI1uE3+v<n`twN7SEAi4l-3z>3z{9b*i)9ec+jW#WmMNoe zz<ldrz7^`|1diK*gT4TL5vkAlzq-yM?eXAR2<Pg<I>H>@_jc{%nxo5?cW#mA%5$C2 z<#DWnf1e~z$*b4#{`PerFXrJ_5LcNk<=2e4a{@RxwuU?nauL6f-j4h<e?dFfC9(*I zbQ2bF<x}k?=J|3gVoyfPJNySxCar6Z=^ogZE|VY)t)P|dXr*idt2eZxSTm|2Ue|_s zmASyd7Qycg=WA-WWq+$4>r=Ehx*t?aI$aq9Ue#|nRI_=YvH63Rh6e1D+HXOkZc~<K z&nJ-wR?ozS|HDt%cR@Gz^(k{N?;j6&d1d9YB~uH3dA-XQnylW#Pm*s}*MM%WH}Sim zJ@`$4=LNvEgnPW;5BF10FZHE4$eEVe4!k#w^jB?q#-%&G2P}0)V579eUZhpyD|jh< zZ6XZ&7uxE}hxo+4<?VZ+j`!ia@=CAlRgqq`N#xgAluZRWlhScf#+FTs-}`su3)0;h z5bF@UunYgc^Cw<6=)yXDsB7>)WgSrbQpgE<y4Z=fbxS$O0=mg}XUSiCzRl`OC-Ny@ zt`Bo=j<qsbCu#+cc}A_()k_;|@!q%sm{bvc1$o(ZF?;LfRqU4==6`gUb*e8^@$GHm zhJ3h>%JtTBvG{9@yLvphqgW?jat;N3i|ZiNL7fw=HkJ0zh>tp<biJ|jDbX0jwQ<@Q z>Z$nou)Crwcx#&Ha+=*aHq__V2dP(fjR<?UTHej$nslEbg}o)reXUIZPMmYAf7pBT z7jvv|9w+k@r=x10+&lHh$oqgg4V}<=z)I)Ys_v)HEUcYAXzelg=-js^sAsLPE!bO= z@8EDRrWJKYbGhBocRhUj$?+L;9iI1V^XG)e));=HL3xxov4FU~;}5+}9H~?WbWsMb z%mls*<NB=Zg}6BMBZ>JD<;HL6z#b$v3;xFB!zeE{8gz-R`CQKKr^0?TIU2}!w!z`k zwN~FYC4ooA1@x6#4=2AVBs2xEJ@gmi?It~dce-(0+u2IqU>>+#?KbOjFb5Hqv!Jlk zUYpDwrmKw*+5*;Tb)W@wq}AS&HyOZ6|0g}ze@(^CMA2r_uFz*MlauA2skV+MG;%y4 ze$^N06HeAlU!M-=>$E-Lo;B=OrL&eR%$dToC2W5<-hxi*hMpZ3I~U3e^|&(|V*4Op zIUDBF=+W+fzo(q`-Q|4%{r3&6H>e$G2c5d^Aa;f0x17TuooEN`z021#z_qrFwfU{q zX4f`5INAmD4Yp0}6Y!*<mkH<q&VSb9&2(AUrQU^josL8Qcy722eLKnZ#bv(zA-K_R zSdZP?c)4buhcgMBwZN5jd{td0?GAnm^Pzv#H)kvTeEK=A4ctqo4B<D49ZDlk|AOsy z<9Cy5BX~l;<~97{yXT2Ke)%o*Jo^4wz{?!Y`OAV2xIKH>OnwkQU}<;h_olQiuB~A$ zXYnL(9S~f!4H!GgTkd<i^KZga$jH^>_T*{Ts?;fa^vl$F0CiG7;1}3B<=Y_kn?*u1 z+u-Vp?ZGeoW(fJXwB0<5zFfQaKvwfU4bpD=jhzZKgx}a<UKtHB`pVA;bX25`a#)VG zG3pa_3G|7MsV#DPPFob(Gr(kGwy0fwgKFzH71s^19`5$l{k|&e#@dJ3M>@T_=vRd_ z+5Ri*P#LU2{gw6;;?jN4#FW6>{;oD4G34P8-+(%S{!3fNvAJshr7nB8x!+4&cWW=~ zi|1W^f$iTo7ro@0JCuXnud?$Vey^h$Ww!)5k&*Nh`09jnd3lz>y6+->UB9+xkmsW_ z@~D&aNjk=DvEwRtp(Dtlufi|JZw6;O+wj}GzGHE5cI^|s&m(JQ#G`%L+B@*D4FCM1 z$VPA?kNy(ckSZGSeOEdMy5c<mwehS&&Mo6xOGg=IKUF$9WzK)7hPK4%1pP~Q7K80~ zyi!}Q^078R{0p@wZXcNZb9E#U7Jh*bw8t$mdraCCZ%rHYhkZo8v4eTz->WWCh7N|h zD{@EQqMqPvzUWV9tn8~=R^+ETUa{>svjAHvXOSGuB9rBG4s{p(x)ENftWO8W7za;Y zi3~u;F;Dhk8-twapniYCoObcqH2gW7@9@SACqL(3bRyr?!~P5#2tDnnp)Q7NM5uGj zgOh$m{U+@4@-owb(x$$p$QJu*oaedm)RV6%P_L24e%KYWN8NrLFtiJtpJAP({QHY2 z>(1v^yX#TWXN#RTRNE$NJ<eC8-qYvgw*lpz$s6^lXp4oH9NRD^Q#K{*M>+e(?*}zQ zS2+if^T)IA##w!w4d1kQW1Z@(&$Aie6C0xTmHnfs!W@r!<oaiKfI3)?ZSi55hCJzy zj^DCY0o@=y?3=jz^kwke*&w$LUTsXOI(Nglu{7$U9F2E=S@;0_$3aV*-f2lQ%zG@L zLFXPfUm-65w-0%;--P*wD?3e`YLlHmX6JO}YY$B*i~UPkd!WvRau$1Kzgx(=8Nw&X zyeT#h5gyVOqO3d1TkXDD#WMo2y=omhVdJ1@uv@Yx;p`#PoJ=qdkoGW68ToPKC!w3I z(5*^ymStr!_f7G!>G!sSzpkH3zbCK2=j-4J^`XpnJ_ufd1~=xOL%8*Gxp2Np`uzC` z=Y0NrnC0LLOTXGn*Z{hrwhL?Grngd^dhVFI?dsi(FfTpVuCwP;-TaxfNf_grgq6Q( zU;o{Bg8DeViLZ%pstA2z9qNBolksVsjqLWnlSDlPUuav!_BubDd_-Gao3T!ocuiou zahEohddM=w0hk2`1GzQ_In${&UTiqhtWPp8`s3<r)w0$fv-ZY)v)7FWO~3`+m$f|V zGUwj(^~KJ>&flaQe7{}i5P(};^z-~V1j-X{C-CW<#9Sb5uT9h`)<yqL>-w40o6>si zw@&9x0lL=g<bXU`gGC=952-s%J|B@z9%P`qG7m%F;uym*nS2voA*_DkBK>*M57dEk z@tD8bvqD+_oGsP`m+f<Euf(T1hI)YC*&@~J#Dv1ohaHjp=$lMfi_`P?kki6y&h?TH zzk;@XtRu;9-SRwtW~DM(ugsCqPV$EG(LKAxxdqTgSrLw5-j&K)+n9zwU$eq|+<im3 z2{_$a(P84J4xv8warWJ^J}Td^`h=B{v{Ba|T^n7y1IUzZB|PqQv9I!cw%}!${VhMg zcz8kSMw+t=qJu#Ww#MFL<NTuR95i58TmwSCZ};zOsI06UA(H^Q20V6u;E=9A*>v)w z+I<R^cjIgPj>xTyCvp$!R>lwZg=NNz<@_ao-Ie22E5?l!*31V%yYRS#^&O;FTc;8p ztxtz*Zt-z~<5;zIs}s6c>wh1!?E7@M1D>5Vk8+K;2lU8Z9Q-a>w^A9Uk<PQ+HP|cM z6XaxFF{?hX*j0|DfN{1miMDh(p6Yl(9O{GAagNI~8)YzdU8{Cl@Idas$#%Ljy#ef` zmgCyiN`1-EMcyfn<Qc(j{mRfUc-7Y9XgBN!9Cz4W?Dy@3u3tep-G51LCLKLy_agl< zjtA^t@wT9^dhJba0Uv3<*>AZ29{TpM6U__wCw9Wn$NS0O$=a0Fe>d-78^U|dufXPT zJR#k{mqA`dIHxb#zHkm5<ivK{`O^I2l%ofGsila{#7rd_fnJV5%Fo(;Qn&i);2Xcm z*;T2W`XKDbQWpH}Mtu{NVP%gzgw4NPi?QFNir~)z>W}kE_XX&OV4SIK3t;D{w;nIs z%gU|($z{-ibK0Bx?K+@olYEQ^<k?`yPyUW`G2jd58>qhzWh(Odm7MLv%4f0vC@V74 zal3{1bzEo-JpOYZ6mi1J_>Xga^M3w@`I|HFX)dEZ+P)h0(F|a+>i4nVWx;!{jV?fE z6C1EzLs?+W6l1d7f9gc~-<I<!aSb^BiTz1%`#kAnU*H+Ihrq||=Nfw4TmW>mgHF=% zdoeo3eg<^30rxU=G}cFS$hs%#_{DNM%%y)i9fErqI#xa9(cye&=&Ttj8e`xa_0R@F zcC<eO=$A6L#aaN*pZ=}0qkzv69=~t&jJE50dxT$V2T@P8^;GJmvx^)jtHH6aX4rRB zCuz6+ICa#I6K`65zyij;O7pKJd&DvPDKAd^ew_QT@x9?AIu34uA2OhRNEUO;9?Y@x zn9ucM94zd|Jt*`w&WpQ&Q|`ZDER;E??$xm$!ge+EC>(7QZ9`{(KIwcdM;mMcc_Vo^ zvl8xU$Me-rbP^W2i90Hb#}MvAIFUb;ya3z<#&ygs>-#zn=a}0Y8*|x)Zt7G1<@$ZF zwcT+TZ_IT#DLYqYbG0(yL6--|a8~Ky9?GXxhiQjkmlD_~uVH(-)}>`#-_=E*rx(6Z zI36nBwf?$!l<8HxY2>BBbB?3r`9b8#9-EtUA-$bx%FA?+6CYB~8JR7}YiAmL;9xh; zr>H#CUshQWhTp<YSy<RJtVzGpffszWoXEJmOt^l^G9|Rrt_Lp`**?&kfc-nAv~&E- zI{EL%Iyus*Z)j6uU>Sb1ZOWHqRapWLZJ~o3Lzrit$up)4-{EJo|M}-|vOz9fM_?ZJ z>FBG>A-x50$HNhXd1j1fH5@-%9A9pMpMbq3eulmZ>r?tE7q+2Q`+%KW9s-ZSJB49C zBY)v<%RIdm@lYNZOAjN@>1hh<X1u3EzCs=eXS;Z&!`Wu~C<8^v$16wu?y~w_+p>(j zy#7&hEt0Xhu}m3H#x<ua!5xDg1uZIH*@qxsLc8-y&W?lBWv!EQVd_B-ZL`WgnhRqL zSde{BnG0tqOXx1wugEvzZeC8lz?}wMd_FAtg8kKf$n$06%i;#~{W|jd%58<oApIcH z(Ldp%VV$4{{O4j)cA<u29{Q5h8OwiDn9s6)|3ci^5bmq-U7kG0;Z2MG?|vOqJv*5w zMzTs!?wx_hU-EEaHP_^lJjdyH%s%7RNV&GmI&e<<dvdo3aLjk>mh3mgDeDf)*df2K z3J=Am%uB!PT$e7lqu@zF@kVwHeZcX-ABQT9Q7E5MJrCtYe0D6l30cXwsAHeW6BcPd ztsl~@WB+D|wZhncv(=8(i7Q|DR^pN!s}rZ^zLYpK_a}+7bKgvyn_Enr-@hht!OALe zytD@SkO6<8H%Bec6Q|e1e$gMzmYNM^UixO@!luPP`5a`_ggGS7J{?6nxYykDP<nA* z{TJ#q;^qO3vtKrWm$LT_n@v4tzPm@kzV63+Ed0;QJPq*FXO_p@!mb4(jk*<2OIAn| z-HMe(JC~Ggu8>CC9j{}iLRzUp+MWt&N7m;OINy{wQQDn2Q~FZkY_#w4?LTts!YHTf zaXb^9I3Da4`JCXnIQV5Pv)evC?beewE&ll*x^lpKoOtQOY+C%=Ai`7AM_SZ=l_>LQ zFQg_bdDfSmu(l+z*}+4<rZlY=GIwuDjHt}%Gd8G<PooUuPNrvU+{r6J8jyec77L#k zU>rJd?_kG*8#`Wu&6ahrY$<K{Zj{xxKYly)Qt6*S_&moawDnxfU!x3_cL~S|Wo)~q zR)FmX>^a2`-L+w~y?rUa&pzh(O`OUHC$DR46YF$q@EGfQf}BYm#26uYuzxs1zs2%Y z_Kuxgq+L2Tr$`IoR&FQH(6i5C9UrzHI&}_xGO=m#t8O39<B1s(p2#>>)8@ka*Vc41 zye`c>S;3W!?qPl74%c3^HB*G{;5V(m)y}}_9!BDFW&5<a+`6J02YSG-CfBY_i|2pB zxRob#c6ZrYpY&0yS2bDAU8>Z3Q0FjXn8OU|9H#7jiJ6PPz;!(8f1kdkX3wAPHUrk) zrQp+uy&DK}fU)bjlr7_JmIgyRG!VYaw%hcvjPjA=TVD_O*j2jYFm!yt%Y*K@wW0b9 zagc_+DSHkUI>U46kQLIcj=h=l4~#Lj@WUWaq=TNltIS(8-JSX5K1;e_6er{lpI^#i z{rU#!iS;9oj=Ceni!nj<3**=V?+Ty$b8U|gOB(>#<aw)$A?)u~fSp&o12Nc_D!`&| z2n|ynEOh+blNDfl32Wa>i+G}M#|_wiW&0@LxPE2ei#Ne0a-W}V>6gAapFBZ4>xy-P zZ(TZho_W6QEq&AUl@_swh&M@ar|UPC(vqA(8F>>f$cPWwYWwqY{7%9a2@g+rZ3Vyo za<BsaPQeeE<DI%PyN)w9Dan(*E^jv7Lfy5OV1MQO7yK`k^Iv>-X}z_t0XKb{G~R`n z2y!x>3(xmw8cNKgegYTQsIk^u(^GBV20W*I()G|pC&wnFHK9-Bk=_K{P4DQa>4Bfu z%y}e!p<juMaxMnrA@nlo^+DJRnX9oJd1Lnk4=tYX@Qx_n2oJ^*!6P<T>gU;rcF^9; zet|yPR4(h+Us=i%Gfliz>Yqa%bSWiv!Rlu66w<726wG0Sv3FGyj_s(k&z{G)_(!fT z@T8)>buxpFd<}Tq8Wr|(Wo#e7m~1SM8cM*CDuTySw{7nj^<CFy)K1he-}NEtu-KLT z_to`CSaeG0SDDjqMElaX4~Spby?iu&e6@m|NbD0lc5GIApCAtR=3-2jO&iwsHq)j_ z-?V2iIFFIJ|3QqoQhz?VAb9y+;)u{>`I|9AD4$~a*+-wAo*nu)W!eXsw$9#*b1#73 zwD_I3J3a%4>Z9yiRHO;~+G6W82jsWt)r}XPktTJQQf9=}Nng+Dk*)K}|5TyQlHg0r zx<P-$#|v-O`-V;yS+svMWr^Q@{VnM4KXrcL))q&qjHBmu94&iG4RpiCpuaTASz+>^ z75zbMHvH6wG%ofY@%Pxc9V-xjhvv7??jimr%@;ekY4I$_|5j_i8%nANd$nJ4&4Id^ z3UaJd?St#rmL`M#EO+oXE&hPMvA@qCc!RZKyJSBf=irV@eNwi8drndo^>D7!Dt!w5 zVE<a=*>)bVbpMynF^=(qx~TL<Z*6Q^{2TbPq!HsvNYCrvvt?4W4;9K>=#X@w#lHQD zHNoBpHs#is!!|lPEx%Hkh+gUYDkqe)HX!L}3Cn3+UO7vfrn_<U7Rs@2#_Nmk8Hf2^ zeWE{BpF%o$9;i$XF5fH1@g&3-hmYXwJF8m0a~Zf!4`0_Za9t5xUA{UT@<RIR=*O0| zC!(*8er&Zp>6Q8)$IuqkBWHU`jnTWG+Fq^&d;G=tAaXTD{q^25yq)$Xp>~S0bn7tG zKj*7w8P>8!`)0eJhIVpZ6yC`LPO;tWGt0E|wAz^-|I8EcW<Y-%e%-kMwzm~=mAkZ; z?RWix@YD;Lr*WST^k7furW;$y3)hxC3~O6xPnv@c?Y~Mt@|CX*CE%s)5ngy@aL00S zkv_}EI+{O7zlC=$E8u|*lJg@WUvZ!D1o)ACBX-xFDTS@&x()jX_xHIr^P2YO@UDd3 z50!Ze&K$8`;UVU$GCs0BS&S+8r4J_U0uP!hwgvZJk#5hGl&|Oeeh_(UZR)((R7Xo9 zMoXhdOC!hX7%hFsZ*sJNpE!#X^0rBMtMq^mc6~OYiS4XL(^2F(nrdP+twNsT&#GIX zsnw&&$~&T|wZgu~t<Y2(qiMBA)9PEGsokR~&ZkU_rj_|5zMpwbXpr$w<~6cT7pyg> zz4Qr$UHTa>eM-`;y*WG3DEALVAF;+tA6jGqAL3jr?^7-hx_UmwlNrGeoXDHG1)g*- z!;^fBCkD80MNVIf(KPGPG+TkD0`Uep+qa<4y^f}sE*E0-P$#R=a}0T^%Zc6?J)f35 zkzb-8VYgOs!b|V-(w8|Cb@RHeFE?R*IjQR?*HQL5`mB3TGXpz>Z&>{BV{soBzRLl^ zy72;KtSuK`L~J*0d6=)h#t`5*FC*S&*tb3IEP&z{d(W{4@8XlU@WJYMp0_jdp?~yc zq`R})CdirV<Tc($A3~UGtDU~D?vGcfJA<+ri{D&DSjQR}186G`BMowa-Op9<L8WbC zS9#W({)U`Y+qC#2`oYy{8pXH)9pQN5^y3ZCNjVEmpudS>OaJ0#;3U7Ulebt)XWQD> zr`=ku><?F*YXUA~$LvI^${2M*$Lv0g*}eWb0hG;xjxPLm1=u6jx;vTfbb+|B_Ru5a z)^5`UU;V8rU&3`--vaCBEEDlmWMgrN{<M4f9Q)IV<4r@(P3ra_PJQdt^5kzCIzWBM zV&A%1emk(vu5(4s+xSLX_M-Sn;=`c4;uHDvoDg*ue!a*ad#<rLNJK07uKokgO+cqn zAL-%U8lGDzA}st+S|rb3cOq|;CzPp!ZE<+2z|v3g`Qq+|Io|UPi4^epd}&obCLQXY z=f`l54)f?#1>OiBfKPa0b?)XR`W5Q$6{_e?r86e7J`1`Ez?bE3s4JGI@LL*ATD`zG zj=X%pi>_HY%YL@#kd{BN9y*AA*u}Lj*@yA`Q^iO6u@_p_FDMU|E7*OOpUC<+<bTz# zTlHAheF2-rJu<ge*$p_^e})}AA!Q=nsHDdQ)zfNvEO)QS&mhv{g6d8I_U*r?9*eAQ zQI8$$t?IGki_>GL7fz3TzWle+<IPp{c*)r-)w%g-ekXfN@iSIc=Q~=ScYmc%sZO6j z+_NXCG~&(BDL2oVK{%Y_D~_VGd(=_84^cM9qfK#hp&sJWay)Cqc~LlrLtV5N8O@&$ zav0N~%NS3@2hhI$hUYREAGtojGu~~nF`o7D9xZ7M&#YIGL6?q0=P(YP(Q)Vq=1NC# zUhNpps~yLAHTFNwndV@d5(n3qfHn%hv?E9Dw{|cm#`<6>C2LwUplinRtnAFyKEUs@ zHsj5g5T0|q2JUH;Q9jFBowMCjfSW@8-Uw%z9JuCmg!4Gh-XB1j1J<6txxhNPu3K7V zxPEg4{F;M3K87{M<Jgxt5tEfyR{Xy?wlBEX9OyA0!5N)_k8u3Szx-y}$YWB+ygi>$ zFmI+EwQ2SZ5$=^7D4090D&NSjIm;)!g}mF$J(M099&8^R0zF4KK2)bg&P9;tT$9_U zJg2Tnd$@0~QhP9F!e6*!$SY4DaSr@AQoY_gc&;Z^G_oEhyeKs|+8^CG*uF8n678rL zdx6bYNNaUDH6No+S$>7}Io+a9I|6+_030LPQmQ+q?-OW~%Db82xgcjI$mji;niE*l z4mhts*%`J~Wj{e4Vx7_XO`hDFyMbc@IQH26fK*!Jdu_i>(LXqf{A0wS-)NHhp#OGF zg#E(qc{a1G?s1MGJVqQr?3*OqS3urg+c$1MFL1zJYA|`L$EMr0L*uk>qDu=Y)5~*0 zlvCE!UJi2jenF$`3yoop-v!=nAwGnA5#Fp}`cwl5WA7aG;2n^eRd}yDUo$<kO5T&~ z2cCZP;e_?K66Ar~7Zm>lyzF;<PH-^a^1}#TYY)m{?RONnC~qvB`X}lOSey>d;-fv= z;_ORBILqs#z*&59rYoee9A6XQHY>hL^lkR&+w6}6F?^dn`A7H~KRY4#Elq4=gu~@6 z(HrrPi#P{JJuIq!484i@$5vMCCw+i(dPN&2d+e}rqA%!k7m?=1{yg>|alTh{qK`CF zuQaVw%34|FgPfr+l;2${<N=?WO>de;UEIs(-Y?I0vTqdDrNw9Lqkg%0Bl;ELxbEMF z{9eLU%U7MttKJmIZ_*yeMgLu4`gF|9qmF6T5s=nK%#j{9-SC~Vpu0!p(SZ9t?E3}W z|D+5)Vdp>?Z#hoea*s<pd-vzesr_5cYp2(kQ!IPF!P3nzY<`~b){fXP+XEi3ZEQRH zlfWR%{zUxl3}C!JWrLi_di`kxurjy9xa@S0dsQ;-X`5|(?iJhHLpp*CHgEt_G@o5S zzod-11dr;)x^&`Nk7<6kXrBB_ygPsAK;xhP2g#3gu~+rEyiVIcdWC<szFzGg;y*y| zEo~0Y;$y#b_+%}730$P-4xj6nmGCtIUw#?-@*aJ8rLR)GdF{Wn2N6Eo_bTIXdA40F zCw&kyEi!Cv?u`-O25)$|!L0#P1`|qmN@XWw7sdvIyfKwsiDR5QQ-(g;F6Bga$zx$T zO9RK<bc8o~D$KV$ZFYDu=Jd~4`rVkrJ}To3bPH!-#2z_%vR=8(52c}R<_YZU<3lKB zk9%v#;h{b|JX?A$683{jVcFL*(htUjMvOhWCMkGu2bBHgsPYGWUcUJ!^t^hn*(iC| z{$P%+dEf!c(XL6kh1GV9Yl9uC_MM8bEcgSwPdL07AD@^pc!QFB)^T}ZmDwn194nZH zG7Al`mxQzTwQxsO=>~1UA@F{?fJ5Lp_VON={5tx97wfd7VT`z8Z`1r<Ku9BSzM3)p zl5hJiz8&G^+x9<&{E2mTkNcRjjhhz#*u70Hyn$V7acw|7E!0(<YoT3d*#W7;^0&$1 zfUVvOJm2%zjG*fo!DH#+{LrmYQV++}M!Pu^Wg6kPV{UT{|9-{K@@Y$#VINNuH-6nZ z)ft5K4W`6ttPxPRGvwRe24i%6ww-+lXS{eW-klvM-tgQ$%fJqEjLM+z5U0$!+!;gE zpGKc+lXUPG=f4CO(%%FBi#+tp??b$uI_vIzc;(we+CYm}KBNWp_ept=X29|M2xT6p zi|bk33mt*|#Jf)a@FwM37w~ind^x?qbMqqd;&-DRk9l^ExYB@0s9&Adv`#OL;Vr-) zm*bIgIsUKzQRyM?+<P^Y-_ZbTa^wZ<TuTLdy4Ys4tyN*|xSY{D{GbtI83wT1d4~P% zdTztnp4O~M-2qwhOiGC|S6tMMp(1=;<{>Qh2{OXI(Gr-X!jR4(rPJALTh{gq*CvOX zI>h{lFW^7?la_M6{QFmxFKnN@=YqBtz~@$N7kMJ%xzbJ<xICOYit^O|XS;Z|Xh>y+ z_0mv&tYgTn;Q@XIac5Iq-SjEMmcb6Rdg~S~m>(wn`aoxwz}oivux)^?^I@0JX5~Jl zV{8-fhzu&sY1ls<J*i@2jd68iyrAzOHYHecCeL)0kFzoky0!vOv&Ccej(8@}?+<`) z^ik;>bL_PILHmM?*fs2RE_s)XeO}Hj!IoovG)Wz+MSH2|E$sUkcd(x+>AYXY_Owus zFjhEt=(pIbX0<)kp`+@X*tKuaLthPNW%%x>%tb?e0PW;sa9`bPzHflNnG?i=wj4xy z?Xfjx0lx|S{!WkCHC{BM+mJUeby?fnjyU&y4q{9<*-`u}feE;az;y-6Q(!?mbVJTn zqn%r-&}!`w+aa{Y_=ox+YhMOifIn`Fnv@6b9K;o`Jq>IR;_m!FlKcQY8S=okaYJv> zeB=?fQTh_n5$4)FX>QW7h~;?Jm*tc<EceJ`70PietBG(w@@O1}yhFcB#rcLh-{}3< z11Qs81kG{2kOtIy0B<r}&~?AFrHXe`7SHRt+>*0nC@*@eI&={HXjQ*!2zk^$(OrBK zonturr(36_UOS$1?U4H`Zl6Z?T4Y~{eagv=YxsCW;%g6jcuycr&U~VM)T{9R56;M+ zKw64z$NpQjb2(+}zLdH0BEHUB1_ylc{7UP<;Wt{bcG<4y)H9$lJd1|&9C?k)9Sp=b zFdlF$gKop0N@`rjf5gcT$%Ec=TxeA|_5t^H<VA*64)e^1T&c6<KXEr{8IcG4GRn~5 zq0E|)mi5wbZ$r+OkiQ}AprsIt_rj)Rys>XH@|_>h$FS1GeG!o>=|DS3yQ`l#%V<Y_ zyO-a~@cK05Wckw?i&L-s{B$fXxV-Y2SbisDn+3m;uo=G>d#k7HyTB~R^S-5e8ULj{ z+7J3A5B4p%SNcGz$~VBpAK%}g>w^WHyM&Fy8o@Ny59AyMcsxVhU5SphrQ}y}CcYW^ z`vQ3jz3&Qgcuy1hTr_)Lur{ChNtaJp<dwvhf!=U!K33N)={4?<cVa!5ywvku+IM%$ zo1Qq=R7*cNL7JS7(0_qn*arVUjrC&jWAT>V9|<j@7jkx4^`bWErRNcL=~j1To=_|E zZ=4bPmiliF#_4^h)tTD#GBRHFZA{cl-KCCcJE14izrr&Ra!wR5E#xnL*`L%VhG$^U zFs;j^+<F1_%>U=F(|-dG`4%wVR>vB#wz0Ijp(OId8yCRI`-t!<5*7}AW{|6JcEQe@ zSU>qA_5wQHtNO{lsPi4MKb?NRl=>}R_!ZVqfj=Sb)V}I$6Z@*z_dxC=VJ;zkvX=eX zrPGeMbn-&x8>Pltv9ow9{6UqKgJC~%WhpmJuet1{TRc)%%@w3KtIe+VuH$7LzskPD zr*G`J@n|3L*!2>wKLhu|YICQ|!O2VJiJZf{58AvMJ61tv<@dlW9PJ2YhqbXzhXXuh zyTbV|_e<C}D1VMu)EhSjv3vzPRPj6DGpF81{js((nm1eh1MQfXZ18OJJZNxdz1X)T zj5gP>T?6R0y!QhAA*~LMvMGa87^b5?$l8t@Tc`uD_ho5G=vKQ&gRJ9fn`?qxc;~K} z`nb?&X`wHxYZX%Wt7}aS`fpdvPMuX5cVq8x$v4t5ezn4v!u_M4d|&5Dq*?q5_-ve` z%HAby5qwm@-8{s6l|!|6{i^y!+MgW%#18rVN1a{3Fa8hOX~=W0ox(%3(@+=C*JTV- zoK81eJlz!h&=r@Lb-IahT*ho)cL8VLzq8+-aQ>RCh0@=IKJuPMnLa`fe15U7xVnUP z+7;+{ze^8P$F(16`?#)W-=hn1rs<UqQ#0GqfOCC#gGkOwB_C#-W!Uyx;SXS(jH>x} z%j$*NXtquGfc2TY(@)5#!1VRtA!!m{4SE9IXsn<^ZN3gc&pzqHte{7y<7cHk{Sp7h z+U*+JQjs<KspGrbOObTtdl?MYQ*S!HYrj%?h@9OTMCbzox7YyGN!(Xmoxn{yfj7BA z+Ys6o&2#lidAp7q!qSd78ZE!UQ&$&ZJzL`Jjnx6bmC#<;QO?VXz~k~skLV%tX=j<A zN1E7iZ>>${Wv>46I%SPl=%QT_7;AeRf2r56#mlb4`68t8Jr34My%+t7`ZC*7hMR41 zFd=_pFg56Rn_XRj?L&^IDzmaa)Vfk1qHQf2ng3*C_Ohbwa_7>m{w0q<2iQK?>BU9h zIs)44`V@Q-4fEU5E`Kl6sOy^+zjz1r{}^PUeT?TV`=Yibi3@K^==+q)bFOc^k_+Fb zl)4FrvYq^;jnpy8=@RwI-5ESgI<>F;RQ7=LG~iR47|lO%Ki1vt4E@zji@)<nY~u=j zds+LlQeB%Ce|I~_I_h@?KVVMByeZg^u}XKNabAY{Q~=M|u7cVXu0_(W6lmA>uC9%b z$qU%~y%3{~bHEn(>jSWDf2y{PYluwSj5N3YNZ;7b`63<R{sqT+;@yLMx0d~gv$a^a z>XCHow{Sg``X&7wZJ$@V?HqPDaFq=Eii}Z!%>XuIb+uOXf$c)M&B#k3FBRnAiy&?P zS{YYT>(e#zt_AvhlKHUlZayjSUYz(+(7UvU%lW_T(=6-b>QkRb{6*A9d~Q$7r4eVd zD+ibo;$p{wwX&xz?M6Czh3{!^+cDU&eM0Fk5Y{U@fVi74%NS0+1iMXoJ<dvIxhK3E zcP4RvGJ3b-hWjR424$6R@^)+icy+9+Z4Xc$`7B>>Z&$z<`IgF_WeG2Q`{LT#_6S#E zj^$Xt)ZLEzn)3F{jqf8}WRG^HgH5J=f6jDb&%4V@&mg@M>D@@@c-QXg06)^PIO`;x zeaai^G~@jmZv!9Ns`KH;&KLYC_+Y-aG9TpI02TP~<G)urI|H;GZ7rg$L#MH~OS;dm zw(Ueax{;r)kWYGjzDT=0K5;#Ng|pyh0{x?cO}Tl|+LS~)?g_M6o03T39hxS*LxVnv z@EUW8zfzy9d)Hjkxav;LRqz~dfhSU!6X8yI0`Dl-@a)EQ(0zTT@tFz!GEd^>_vG93 zwEYey8h3W?v1y4^kVBmvkge32fWP9>5;7KGz3(v7a89KaWv((zSey}~AATNnT~a&J zi}*Rl9na|70YCfYRo$C0HlAn(ou~`x)_x=%4A!n`M=!fP=(KTp*n>(*II?F~vPRYe zz$?&U?Gx#|C~=`v-k+u2J;(NMczNwvhMmn0a^_snQGTzjVAdW5%oWni{mFxCWUujx zj+0j~-#SAZi}N*Wus+1M)g=!6_;zMZ7BulJ?&<P$@v*Mx+~Km!U+35Ek$TV`=T~{( z43hfTCbvK7-unjb*H{kpaIN_Y><9N998Ir-Cawob96sPK!ULwyrGf4r0j3{qzXCjt z7QP$l$~5YC=t3T_z4Rqf=a^SN{RY%;uDY_|!6NpaVz}=+>hfXQejMWV+Q$8L(0ZT( z?gMNq_{MLkDXsSnG0n+`v<=vA4lUsszyCek0euBL`Bhd1-)Hjj%D*|3u4UhHe5Ou1 zT|4df0nsD$1JaMS|H+0!_e}>mDR+7{EoX^<1APW<#W%qDZo_N)NBIqD*a_`(1=E2s z0WhN1(yvYd$0??P=6>SVZ>648eLw5?X?3u+XCVBRDBcx<oNRr@^q_xq8BMc$0cqfP z3)*uQenS#r_G5%=t|QEKFoxMywwd9J2=iO>44*@oXI>dTjc|j8N!NoKK8El*4If7M zeHuQ9HhKD%IYOB@c`Vb%-i^04_Id5QP@#P`Eo$G}ZJmiB)ZeM$%?Q6o!+i+fui-qx z_i4Br;kz`PLHOr1+=ejUzd^ebTrYfwhRMIRHVoTr%sVwq{=HYj<lp->O#Xd9!{pz) zG)(?+4HWnd`PZRg@{i}yn0^r9H5%TBFnuScmk_>N!&3;~tKkuZ+cmre;dg7eAK`m6 z+>7w-8qOkon}$0PrVS(hG{W4cXP7n{{YdWWvfsn5m{Z8_*8JlLzgfda5dL`$&m;U+ z4bLI`HVyAVnD&~urxB(-VR#H-+BSxZ2;ZsU0fbj+xPb6#4fi1YCJlEX%<+_E+Yx?1 z!>tH6X}AgDMuyRzvvyp#C(ZCfFi`6|Zinw@{(yD`Fei|H0%1MtkmyAGB+KC2&=`;G zc(}Kr<|^SWE}7q-Mc-_No!z@0{vUDE9z2vzTpz?5%}iq<`(8WG?Hp*V{Ur@|VgLVw zild+P@H_x$IF7ayG=5X#S*4>6_O@BWoRhO{Tx&|<m%csAGEKsOJFfWqNPCdOztNg2 zLC&0)aj@gF6VbP`xIP@V?|ZI&`Ip-lSfA>_Ny4Cw>a*5d)w+~#4Z=g<2b?*<x&4Ou z_UjDGI=C@sk%zNyvMx%yCvdcRpq*jz@dFzUy^FR3_hj8Slbff+4#0+DKS=GIrl}nO zypH+e^Pi)w0c;b~#XhbU--7agi}H}+x5jxWd(og}#@seBgYW#YEO0<Jd}kSJ`Dg>~ z8Q^>=-mR&9bb7WIZ>tP{T)rcO@kRGvLtbAC(8k%0+a_i^5(k9WG7iw+Gw0FfQw8&` zHsYt8unw>nVb_k$4BK%+?#!Ok`+6R}P16DJe+*}3<*r%>_zRq~nJ47_Qx-T$+w47< zKUhB9?didCv^g5~fd=yFZMsI|=xIj1j-E@<CBAhlYmu{SNfX-NQFG0|ONjlcD~<-} zXt%TtynqkbBDgS4hUN6FKddE(Wk@$=T571dhH<iC#=LU^<&ZDBM4hJ2sL$~8>_5ui zyH8>cb!pS$fBibrE=9U4>s+Ux*VipxxeIww@m&Ng^KK~rL7S0r2Qs_h;VvrfpbG9A z9_~uzIsYeZ8*ZVzPn)(aeUas{esB@I!W)(U<zt*vi7vf-H+4VMW5U_Hd*695f=Q## zi|%2a@^0!|nVtu^sINk1%tzma3>qu(3O)||%4*4r+Un6~_XWQ5Ys3Q?(r%w}at-cH zv@o5%GS1c<L|EIn<_5yl!8-K4dj_x;i*m=1rhO)Tq?`xe{ixSI-l-vfPU3CIhobZ~ zS0nsp8sTH)8SFwD;fifU``J%Vt<*-msU&M!Rt9UvSO#sSe}%T1V<UFl1N~N?W9=p_ zuH8w5*~Ys3p*3fMoH^NJ?)&|s`ThTKcGUdVZ2Bhb)8_s*_-M4B%vU>lw45K8H$?4z z=XKyb>TFx26PNDxV9pW7**f3_Kdik556HKQ{9!uVxe|YPereO<CH5E50k3~tEbn_* z&xv%cnm!R1&$19#vsZT<mz?v0tts!vOLX&ZzN@%eL)}zgp6RNa24R)aJBkQXMtF<x zom~viG~Ow;p7t1ig)f&Q0b~T2Bb1Zq2hJNX4%+Dp#q{_)pNnMjj!wc=l8H@k!2U$& zkI=Tt{ReGtoEJ_PQLp%RM~H)S4vu%wCw?nZZN;}`pN6!eZ(yuyJ0ZAlNiN^!{$E@t z;<TtuUsf)V@wY#!xNb!!u=n_FjB{2eC`agRs%SX=qt7jsC*`K{{JA-VRi14l3@;<k z!-19O;g~!Rt2_^v_rpt`UHG{n;67YMo=9I-o>5;={;F+3y&})U#9djQ7uP$Tvhuu( z_WzXE&m#Gh_YKJ4;{Qe1SRaqzZQd=)^P=njzC0sb<#j`z7oGe$Pk96KeEX?#8T^em z_Pw2LS6Sb+hv8*pJs((E&&Omvud<#;`S~jHM43u`>l^Y8p4fqx@8Vd^F|N@Y;}$Ug zJWsszL(p#4v7mjC>6QC<Iqx91Z@!hVBDbjDM!a@%TY2mTu5bKD#nt55ZC@YfK_BNO zX@zUP1>J&tzwt@*QI0z+j<0t7_y+wY+a~KnnjmMEwkc|FMB@_ve4T6R#O3xu<G7Z# zDXOy?UbN}!&i;wcqK*X}`xg)<&e{!!Znh(=w&!j1f2fZQ`9rNqhB@be+z%jp06Op^ zH*O=1XInkL@8U1Jew}|=@Ek;YJUf2D^8xO>MtqfY6*3q?-l>W*bNpUePtf)YuMiJt zP#@2L9<faak$zBg*!p;tb=cK)OY*zm#(%Nx>VL*{p|ZYuJhXcCpWXOhS#K>}vfj3` zpZlLFf0gZ9vk0qf@8o#H`8565eL>FbTfwi}N1Fp)a*bpk%I;&?htl``{$K}u!F1ub zW(<8nnM2Q&>%})7i}a%92FlKHd?zl#+4;a<zuSYMUD;PfH(35>Ag{j;{r_eBwOf?e zU#}-kXwT0;USH#$5^=SH&!-TcQ=O$xFsC|e2;<qlxSl1wzO#&N_!`GQ)s46C+>6(j zFYJ%x@fO}cxs)xLdb|Zb>!nkNE`ZLxLQm8um(sJct%6-Y&$l?Gzk2k?arySKTHA>0 zcNJH2MLv0LMW2JMIKNBbTPoIF4p01#DZK1iRq5|?k7)&eAGp5yL&cS@SU30!9$)a~ zV`={Cmr+jTcgGe#f79Y$|9K>*JN8EM`^q1C=@TeV`O)w2$GnK=OWOU_CzV#&OQ_=8 z>%PKD{`6N9ip!U2wYnjrul%{f--=AZ*RMGHUs<MTcLlz(+^E)5S+?aoAzkeMDu>&- z-p+MTt}XL-s$4E#3w_`G%eP;R<nmXZ{gbyEE~0D+cqyM5(u3a-;N-r@7{<tcq>XsG zjkPtIA5SwK_QSUUQ<^uWc^nTpuNYI?GRCmlmZJ#UwHtfxV;a8TS-=zT6k%`%q?ut& zp9*p|kL#>R!`jFXIHpW^w6fmH`epmOuS-#%wlvjRoQpSoKHB%W&r$#V@x4-eXqzUa zZMf4TbVTEMq-)?YXubfx(ibWrd{JN{n-<ZvME>VI`M>F$Pbd2J<57RR%|!D4OK%SF zrpw?J_qc{oKgZTLZrf27ZA|K#GQ&&O<vBO^X|p{1%URY3eQ`e0km>||Fyg`4twq`i z)$b<yZS*1d-Gc*eE{l6XmqC9qz}(j2Ta^9x;6t+B4g8DOXxs3nf{a~=hwGhs&W14I zIwkKd`|H}Wc8oCucI~goPt*lExV~-ATHwsUW$^Aa>b_=a4)-6fvCZhC!^rd3lVxol z_KP^qkuLm}uOYi{z37^CB*!N91y{aR$~S8H$7LOvcnZ-PbZvS`Tf%j4_&;`R4A1-k z_qBp)Vn00P#sg{7ysitXPR^!fFG+L-=M<E$c8#xKR`*GHzy@ohJZCRvJLD{c^hun@ ziI-*n7QBIn*ZE2C^=Nyl)Vu23vi0Jw2>m_CDxvoUs?e~itRIAJMSGUgyQ+vfuR|xc z;CIV=OS^fNk!{!lz2=%0(@zCCy!QfLlUE2|N80s=il77Qm+lU(&}H>Y@>Q3J>w1^T z>;x{Rv%kptRlzh~V%)ChM0^bSe9P@^oEJRmCrQ27hk;$-p5bQ6Q@e%ufUA>!2hT0? zJfFwY0or@EopUw7_Xjvjg)#%O7iRCGZq_>3wtnKo{Xx+=!a6<yXAAOAtxwy%wxzsJ z+4d{lz$1D`{`fp`_=t;nsKcH0a=It>r(jYC2;=xiI{=&oq!ol-j6L89$JGL8Ye)LY zb!m(Zh_h`vHo19?l*9OOopXsG2fX0Ra&!SN)^$?kN!a(4hF+$*b_w4tZF!{I`#APn zCe$~=_Ews|1fT(V=Vc9dK6M=7JlnNlKGBQz9Ar7zL7cDm=#6;Wqxl?Pvw&yaS<2am z4{|2UbzhwOI3?fh=qQsN;AIY+Wm(J9#gho1Lb)DKPI-l69hSyJiyWVh5Z2ix(9x~( z=u&#HpB&K+oLx9~l30eGF47M?UBKH5S@JwKzd?y_!^oS}OZWkt-Q{#j`H0SW`L3ey zAFv{G;D=o6*=DDIr(mNEbz!Ma*IW5VeD8GST)R~#GDw$mmmB8m&bqM>cc^YKUG(u# z-6=^2uHfF9>r5BDfF1@p``#z(FPOTr{{R1R_deip9#_5ayxNttvXyw<s)?G4WYa3i z+L2v3Rl+(|BRNqVIaX6OR$2pYCB>2>C9<W;a;pTn-lc9)iYanyijyj?0N;Lw8@MhQ zFkn)**KiFOFs<9qaC4~(`M9R|a!oPCP&c~2-<dP-JNs%SCu!h$?zfLtduHa$nKS2{ zIrHb8cSh;gt86pKS8wfvI(O^GQck@shhrP}EJw<zcjY*qAp_Dmj&d`l>s?-pbnWNM zt4XiWg0Fp6f1LY=D6^gJc|Gd1_clJSFS3Vo%JYj6t>kgyu<ckqBo9j-?Z>2E_S_oV zzEtiSAKzP0hrD$ztr@lhyGyamLJP*oRgn+YvZUQQ889E#1xdq}Rm?-YEXt$ym6w$` zOS;Z?F&})7dsaw4TJtJs?NJ`}SwUE@a7}`Gf6xCof3H^t?KZ7-6kR)i<;DPByYcjq z5L_oCJ07z(mS3E}Tu$Z{Vh_w;xJ}**)H}ZuV}%yGN0a+Cx&HI^e6VZHbBR9iauI14 z)YeiAgCFjPxft1Mf;?A;whDbHuQGnL;~Ho07MK1a#20=<HgooM>e$7_OZmQTaGniq zRMJsqQed?`@jnO3j@dTg_KcPt^l?y+3lg^dGHn}U(BKT>WIP~!guFLr+hx8of#(b& zOYjobiRGqHUTf=fWw}C2DOr|fSq{=JsQ%{4QskDPjfL-eT3r>%#&~iU+#*@dmA#e8 z+;}TX9gkR>mc8N&$TApt^|F-v_0;|;d%Gvt$|^t`wsM7EJ&5<tE?GOXcvjD42d%9^ zf0kE{F|5u|C+J6YCi~4Qp}Sm<k#{&_=T68xL&v+=PYFFh&a%g2&GeZL_@Aui%joZX zd$uvIH)j;5M}If!Z>RpY>u;<6I-XwDc@gl336wSP??k%*+SR0ua(=?THxpzi&$;im zT&cDD&=VIv^R2{7b{~4;<kaUAxDPdf`%n{TFNu@dE~$?W$X3qB%ctbMoi_S*?A2^X ze49Nxr1)GD%z3*cO>~-k-r6Jk$;4@eB^~en%-FGV;`I92r&ic`Wa6~LL%+bWOa<m% zCxxE%E!9k?&2f*jrXNzdrud8WGhL?qaV-n}EI}P(U#qR#yD}Ju<IEVGPXilHoRl!n z2UyOrRN|E8Ya&b=hA$!wkqP`C^PFP-LY8B3#LvlFmUDUOb09<19cR>uFB5;$EMa>t z&j8XbzCDMff$v&be-~T?UNd<BojsPX06voStF&Xq1Hmc5v3_!((2_WX^Ahp?L*fkJ zldA_!$LbcGH@OSvdMEG0U0;dQJJ)U)$6mGE&H?OC^XAgvqZ72yU$9RO#!$}5)fx1e zp#8<$%(gHLzHzSE(Bw^tpXC}xS5@O3Oj9{v-+2Phk-T{Dk1-YQElc2;MCDkB54w<N z2Jt^v6mNA?kNEvXbgZ1Sh<~OC-_mbD{If;zmVP7RKUYM@(x-l*`$q?RmyK;#-eJ>} zZN+!h26C<}@mH*)Eeq#W*|NfTTh;*DA<l5M^$gQ&dCVjA4C8Hm1}JkoZ)MrZN40E@ zePH`l)Nh-$0e8*;eK+SN?wkX*pV5D2`$4-zy?_sX@|AMFKk9FqSpPx`^Tf^?1#kHj zbZq@`D{KIATmT<D<BTjBr{jI1MwU}}4C8;$L3_yAa!vEz?!?62U5WhOmc(wfyU7J< zIvyZfw6!+SZAZR6pfLrW8&RJI+a9={WZNOiJm}KqobfN`R|3z<UD`P7hc%@`SIuK} zatN~L8Q7fDZbbPa|HAt6F<amAaa-T=36*m`USG*0GAW-dw3qL3^#Q#Ud=Y(=ZCfZ0 zXCOvx3o`iP?Pkc@VdcxVEpmJ;ZJz6V^6n=2BQ5;W7q26|cV&imz?O%|6WW#7GUqMu z75A*(WxAejG3y>#hI{|8j)wJ#4)}so`EMppM)&^x?p9k)`9F9z2stF~*K$4!UoxG$ zDKSHTlK(t>3GRci>z02I=sKY1L(GdgtYfH;KSkfOe)f0&wFKUg0_dXb8S?4tbN%ce z{b7WUbmGyMh3~%oKA+XVu9HV$yIH_l>IOFL<_Xka*7j2}&&XOGnp%{1TE?xs8_DJ| zoMZ1?#<jT6pG}glu+7@`zsJ>U{p@e^xs&?L3e{8C_pnZ`FP#Q|^@SGR3mMvGrqGgT zmaw%u@?T%LDKP>6oiFT4>_+;e=(7_05WpkOyG@I)dfcAn0l$iRkZxiR@=U?b&cYU7 zJb6>%Ec4;4Tks_Bv;_=5gZHN}w-p{R)~p3j$^+)0q@U#-97R0kgg?|9ebDskjO`Cd z2XtjzFqsN4hYt6d0Uz;bZ!=ZFLwc^7+e6tw-t&tBkr&1ZMe{q@G4Hml^JwL1cZY9E z9Mj(ygtqVkouNKhFP>h#D{%~V@dE84m&ZPP_HkRVznS-0YX3F^8t5CEtR7KU+eT^; z{{ndo<E;$%p5K&Lj}e{;N*=s(U7<JB6ZM%{6#S+~Th`HL76(Ter)#sWJkquDK{+!i z>>ZAHQd;J(it<@|qYi}z=1_n``vDJLySFyf&N$JN%{zgx8`Dsir&#xyN^>pijeYgk zV;q%X9&G~?Jyn7DC$Y2TeAb0DtAC`Kq=c>fCJHTyiDvjB`e%&S8W5iJ!gavStItXU z-mQLx@h4Yh@Qw#;-CyfPyo_@|i}+KDUoZGQW~cx=XT0wtAX7fK6#GTHPfy*HI6__F z_bBWFcgz=;0UAd@V~=g;$Y<rI>zGVKoUL!&0yK^aAL1*lZs2oSFZAKoZ^OR%USNA< z&jICs676mX?XCvpIKRVjHtTy*?6ArlM7UbQ(q7CVgj1lkE}|vt>HAf-v{hM0ozXKU zfL{x_3?V+P?ZmB1S5scP)}Pik4}FJwCEVFb@Dm=Ml@WAr@AV;l=0ROJhXe2GZ=ahb zFHU}Peh~T^zf9K_n8)c%&Ncv^U#8QGZz~6VTPd_8o`;MMhHcE+yFvV6#2*Udt*s^z zf6$f5vneeec(8S=j`<$w%GLv868bvf8~!Hk_FIMYt<R`|yud5)>{zM}{wU*~tsuVB z&dU<#;YUl%%Vy`EfoAD&{y<r!txd`t47OpaA$z_nN#0Vpuby%GzOG%9x8=<_<E-es zJ?8a%MH>BY{QSKlzIcv>ZCg@q9sI{E{6~W;8?qv=@ZodMpK!d+!`FP}2tAc4Wx;yZ zc|6m0tHH<1;A5OH<iho9k&E)T3GpHu<qvBzCHWIMtIwf**A-gq`BZjISZqG!=;Qg! zOb`4F@Z33BbIy~~b0mt+cPu^&MD!`Xfb(JSO&)YFS*l*^E4o)ZTu8Qj#-!sd)c;Ec zXYOwPM~<JI%;&SctMh64M5eny7dAlOpmtCPo0;!S5cDZ!UziHaoI6WBeNxV~8fF=k zg@#2oq7#)3b+3E6L^jm1+bf(>U#RmYS+{WeUeNY2u35)(#Z9n!@T+I#ciGqSXrnx5 zBfIl{ysxEW2D~f9^257*RCc*nBfF>$GXE#v)!L_6Ifiva`H-pSCu%+07Fl><w$J%w z{R+;V5ne=|R^E{>vEfjrPHucpM$YdlA&>t^KB`|WA0xxt$F^@C9UK{3v3YCn$aXYS ze9Dev8R!zW?BL5!`4Rh@I=+3&wlTtEMfiAlVHUOG71Q%rUdxYf$=$W0Z*=g({i7?k z^=|Da{(WoL8n3LuZCi%@@Rs3iV<GNiLr;zjtmqrujFRqK*T(E!_zvJZgl`?b6ZkgZ zyAR(QeA&c^ID;>moc(OxvIRhSfPch&(GV)bS3ZR^c=B=uufmR?uFZ&oOEAwHv$Y4F z>N2+S9y6x99z}xw6E8{@`|oH32M3KAMEaJqh$D5(_)Q<^K@PX2P4I~sv*g}Zv;VXC z@_+u8dFQi#gk+O6Ce2?0@ek8TCs{geDe+UK)6%S2^*m__q^0LcV{}c4v~s-4OkQgF zFZMxMOIcoBiF{0Bd6{|A7+qf?4aF=)nI=0=S_RS?N~BdHAHMEWmv<0;K{I^~emhF% zOS3%v+z6eAAM%nysHa3e(p-YHzIoE9+<|%0sKB8TY2ZKo2BhgH)8-)jk{8<ec!_+7 zTKXoWO_WHZTyBi$+*}>OLh~ks_ms%T@-j%9nkVgMr0tt0?X5`LKTq1*kTyL}T0PQc z=1IE+X$MQBA!_NZNIO&_4Yrb@z4-0uT7>yw8ttXo%g1($dP^Gh?(3HMXzR>JN9Wgp z`Dp9--psTU9!&)01G+a8@8mpbi;;G!bXtb_PS2CZd}m6efltx(i(VSr0DTnG00+J= zVA@~ci?(nx>Ke3B5U~&He=}@8X!mG36xI(mACziiOoPn_oh9;-CTu?FDv`!~Z$#S0 z(rFo{ZJH+yZ6%ne-Dc2M0$;bT4h#I=)`{aF(0|<0f$tE$IegJy+{!i?z%mjh3E5Q` z?8q}!=mBsFrn$ykYnH&xFEwv4Z$uCECUc#+-qe~mn;Xnq(1ZPuxzS(-WNtQZHE%QZ z<`#3Sxy@wFGPB&=j^1j8S!v#m9%+@i!@R>ZnLEv0=7-VCtu}X?cbaDNE_07*F|B5e zx!2r>p6`CM);xfoZ=HG2tT!Fz-R2?l9@A;wYaTWm(0e{&-e=x#HkuzXKWcu=Y%(7( zA2i*j$Ml*<&1Upi{bq}K3_a|idE7jKUUsY5X3#;K51CQ3-He$X=ELSAX52h!o-#j< z-gl?@sM%%mreJ=;e9Y`NA2**cKWQe-)8>=rr_3Jn)8<p=XUvq@Yd&p0gI@Y)&1cQe znf>M&^Q`%tnKsXv1LpH)#{9hb1@nvMp!rYc3+DeZhs-aTUpD_4z3{J?Up4>595!Dx zzh-{j95KIPe$)JxIck2}{EqoubIkmndBJ?i95-J!UorpHoG`y{{=ob<bJF~w`6Khk z=9Kvp^QY#|%xUxI=Bwsw=8XBe`G)y_(E|R${H6Kt7zz9j^H=7Z=A8MK`D^nx<|WbO z|7ZTz{7-Y<{GIu>`FnH0{4etls>jXdf18WuAI*2nKbcGBpUrp8znIIS$A2~dX1-^x znD3jH&1_(TASeqGK{6;0DuT)&6;uU_D9d1RP#s(oTpKJ2(!tW;4Z$0On&3^rb;0#P zZSdychTtthUGPJ}jloSpCb&6xYw)(9KDZ^gHMlLv2Frrw!R<jqup(F)ygg_PRt0wi z?+BWLJA=D|9}aTC>fr9+ok4T(uHYU>^>gMIgO;E*SQFeE+=sS&f3Oy^KWKg_cpzvG z)&&m+>w}Kq-N8e_dxFm3y}`r5hM+5WBzRx&{$OM9Bf*abKNf5XJ`j8`=ni^<-r&(- zbI=#`2U~*2f`MQ#cszI_7z(xq+k)X>B=}G;8f*{7f*rw!gO3E`!IQyLB1_8g)yeRc zN-(XGSjAdveSd)3F3|8_S<?UA9^jSLabc{5y@(0@h?(O_415X4^2Of7h(9r*M_IUZ z1CL|ibKJ-I9v8+qM!~)E>-<ra{)0h*q2DmC*>jl4cUVROjx~()A_9viL7eAH5PBWF zi7oL5`)@sx@ELj~aED$p{Lhxkko8dnO({>s=>KSMHL`tRaNAh_D9e7h|FIoIy`$#d z;h{c;?;Yyh`~-ooeEG|n@N-RN)#Ch5;FHgrpscJ64nW*~8C-udfpA$epi|&yI&aJ~ z<M^G#?;d=o@qHd&%q^ceg)ion&s@OwiZRbt<6CFU=Pm;uW6){fOd~vf0^de_Tk*wM zWV#365qv>=8n!(>gYRK{kK=n0-!u54N1MI`dR?G*1mB~8hwz=icMrlR@jV6jAihX{ z7G*qp24CcR_7c*P_}1WCk8cycZTMcncO$+7_>SX?I(=?G$|2tK_<~>3{M?K9UO;>U zzK!@IztpD|zgc{95GeA@fR~@I!|yr#_8IdF9r$({^NaZX!U+uPLHk!w{(naJ&_QGV zQ_7eli2EY){+Er${2JnZ13Vl!gzxkCLIwwp81wlte8*7+<nvo;e7o@7hwm9<j%M&h z8AneW^V=x<E7SNQ|8Ikb-)X}4m@&st#xa!td(B8g_$$Yac>!rJpuDe~GUiLQ_zvKE z)|fA65r?vV?=rp@0bc?h=yOft&y)BL;fpf93b^D4w7v#9XHd@9+wcYbxgTUsrUH}3 zcPYMaz!&3Rd>**(zPmHozWxtCF*w%Qd0%F<f2hBAdw*tCZds;jWz))47$4&Ny2rNd zkjc&BBt|6Ffmylz$*p6(kK%W1)cy`Q2o!o(j`fd^nU#ILW4&hOquaNel@dETY-2VL zZ{6CDMWB@+yRvs|Y;^F^9b^5va3pNKf`1v{V2scCh<qU5Z*(clA1AN3crbGS=bAj? zI4@#;;#K2&tA;rj!{-~5_BZ@bTz(qxP2qbryt{zIJhmANy`|7m_;LKLLX3lv<C-%d zzYlTbk82B#zk2{X9sr(i!@sxT>pm{+f#KQNe|C|;dkk<*6b@-{9YO2B)bs2|-%m(C zj-FQsrhNMdSW5%o+;Ie7^2adet{%NhCwN>O;@rp4b7A)z#wX3}Ke|Z%f>@ZQVUNC~ zv+PQy;d2y%CjRw=@x7qow;J<b(T1+sui-|Z9mKaz!$7qk5U0G?*tN@`Nz=P<gkT5o zQySiik}n~AT*G-BH`wN-e+D!tZ!|HX_sjT!%uK7|e;HxqFFU2-Zy>D>UoP6Q{BI-c zar`>`e*;XLOWO1R^J|Ja(DWdK0Ll;3?}mO_k$%Y1M{g)=sz&P{Ji_%=;9t~q_FL`v zqE)l};3ok?J|?H(eRh4*oKgHQ7{hf>lhyEVB76nmjE4Wfu7AGKl?Pm|g_;*N{jae! zf_6}*@((WBHPV2Kk0>&D*{+v5{gqYg+G)<Fm)&63OUq7b_;$N?TGp&#j1#V<Jf<|f z9%1lMrt&KL0Lox}v$lR^16Tv9ff*@3Wgo$EC2YhT)BGPt_<|SyS!3RO2;p;@{ydJb zoCM9w8a@Ga=270bhW`@BRHFVthlc+Fq9T9Fe*!YU8Fh5}NWgxB5vby@<u9=u>5y-Q z@}F1@UYmjQN1FZ+?4g46HQWpRKMZ=ms^O<>Q!S%#QC4CK`b2UVhOV=qXEs{?5-%XU z58*2shU}IhPuaAF{|4sRfb<g@{tm(yL09XOgmE^a{gtUclNlTdc@pWh7C#C8?>vY6 zeHsR@xh{nFXt*C?qzB4Ra@?4^bD*dCNq!Q`Zom&-RQz8w=AK66AJg#fA&feiAq{`c zn3goc`!)O$!q8vEQ4PaauI)j3rwy0GpR7F$89%S#HyiWNCN!@Z4MQIfLmy^b!?3pv zW593M@H*HN%jcRm<XsNhKY9%H&ujWNV?IcEpV#oy#`H9S{-lOKkM@IP)1%>E#*v}* z2y1&Rhkkyd4)uRY)BlW<9eiB=a|pv8UH!}9Q+HoN_@c$Hz|Y4agFxGJ#dXH~B=luY zYx>(jiuPQiVd(4WX{4)sD>^Y<f;@wRnm&N3(-EY*a2~4M2z@#HXN~#PDWqRk{NFL= zXHFnIqTxS5Q$_vFCJlcJ;VH<YOT+(!rDE{AQtMZVev9KGGhovzvv!PR8a3Qv$4g=Q zCLKGS(RA3;SI;8<Aq{^D<EK2r8#N67#_^O<`BomYV=E`$%CFjSRv1QmmNA#|hn)IB zf8zQki9tApKRR#uK#2IHZjvAT)9}hz`0iMEO)UHn?5zuNSqKL9mU<lF2`~Kd7(V+a z`Dl5tFLMsx0nPurl8Aqrj{4e<hQA#P!@i2rzgHZt3T0sPSHa$V{Hpp`I2Q}Uf7_4d z|It|ZL$NSy*M1cL=VD>#w<tYU-zv1HqICAp@=<!Q#iH=P6o(hlm&?cEFS;=nhP~R4 zro(>}g*U{);tUw4__6venu_7Gt;$F7e=Qb9d$S)+|NG+bVl)Fkees)O;h4QHX4{pI zrMDRVuPBWEwkTYzFFasfx!K@<_hbEI-B0w7ZX4Y8nCTeq?dyJk&u}Ga`_S-M_YmSj z#NNIS_io#aDTB)?4}81jQ8A+ixApap3(4(+echOvkgCHamc@{$2sg~Wy?^w>gPZ%i zEme7p%*-R(y9au=Yb=p%`G_X-d;krycq&a?M*@jq9I+6dQ;Z)+96m;mayd$KQy4Qk z90_4?d-vwSNJxOYw~P*NRfeUWMZ6IqWKN6msBuwaOYi1>$zvbJ1ATDJ5BCjkv*|>P zQY93oZ6AEfOOsHPM%{)~Mbl9l^Nsd@Xh;8cTc~8+jw$M98y@K$1=~?}2_rbx{}|R| zMutCv#IgQuswN_XT<?%nz~XM(vDFK0865Ao^0TQD?%uw+cc?^k-;+?}pfz4arv+^7 zg|&_QL>c?&qr-mO2(~u#j`ep(rX|c#Ax@!N2K$HlU~k*{hWban8jN<2?${>e2e+e1 z3_sf6y?KDStw{RENBT!$LUW?F?|2kAMG4!-K)rXgue*QS=HWiqM3h2N94)OhwrxF- zYG3#8mMxA88yl+C21C8tARDyivDLHDENWy}R@D6H-py$4+q<EASvrUs`Ig~PW^oDF zCDPpnqwHSW*1f@63ZulML{ZGX1&%=w*m^~vDzt8_PmEwef{n?t5GFuBW5eB#38zI_ zwv6_dzz=Ke2!u||Nw+&h31dPWXiR*{oQN<_aq<9^0D~99*}n3wyH+;}i-HtpktRfe zJvKD_Xz$SW?kzjEZML=C+WSO*_Z-WF^V~f0q)_S|eQXD%4*~7iHfA$Dx?^yNrG~n8 z5n+i=nt1!iX6fsPwfR|G#K>qr8WQ};K>y|^tPvC!(%aW(qlFz;QW(2xPV{E9z2P0B zMe(p>G!QYdqWH~2!|)G&j-lb<Cw7de`+W3Cw17S;lH5y9D@OEE-LkGFMnyZ&ZiA~| zj2lLa>>V2(g}L=wcM(?DwtBWz>7s0H#r=oo5DK<9Iub8Cix8XqK^N%#r0C*2lDLga zb7YG>BaNBetk)+YR*X3oFO+s{8)W4pWf#R3v*d6~aa5Eh3~hnq9PZmO1mV%u*#6fr zwtp-8Z<ydV7bJUzaa%`RRPWHxuoZ2r#zVbu8l(MQT3B|Nw6?4J0TlXfDW4Qwk2^HD zo#PG~fk;gIz|G7lcw;*r1+sOjkmpkv5HP!o9zl09r17W+og>O>8~pHEbP#|ZMl<SD zc*7Wc=+^Fs(T16%!A|t<QHY5f28Kt4jF;g)DBVNb@WkMV7rcLbY_xat*xFI<qw|T$ zO0SJpL4ySmWQ4V$zyAp@)BPM1#3|iBKB&}DN&1RNZGDhjL<~|c#r|6Mbhe(>AHTaF ztpQF6Ip4iw2=XHIupI|<dx??Oy4Qt+6=sqyn0dzrM~0s4-e5a$q`VI!2Q<X4(cW#_ z(Q#~bNwB7EG$)|k_inVOhx$K4_yM*Jb{+6m5BGlr?J6F7A6-=^yDMSW&mc(~c04L^ zb5c9i*TqU%(<eoMb+wE4>=+vwM0XalOb&`7hcJ*}WV~)ZA|-X-y%>VfJfGY)HqbBq z0Jc|-4MI3*Wme)?r?|ncCvnW4z}%&Zb8W&IOxYI+XcCz3f5^edjTu!qiM1TAMe&n- zUz9hwG0Izx`OkL6FYk!*R_w+SgT`0=gfTmmPSqy>D-Tr%jQOyO{{_G<9&;Qiw-LX; zspS$rYRpF*%|B8c%rC3{RB;HOj(EEU^o7nrtdW7f)Sd7lEcYm#YyMJkK>wP*QXInP zqOz_X!y{?MuQ`cRLlk}!=JK*u*N*F1?y-5f7WpQnDX`Kcd>!&R{Ohib@UP28G_Rwa zArry>Q4a?^xN@)iTMy^k5zh6?qxkEw?!fwz&h;M6>phy+do-{Al$ZC@QQjLKisEme zJt)n$JQ&5lg*Yz$vtInOUc4uhw|Fvn%jKwEb#IOG*4-NAt!s^NZdBV~y>3+7Abb<n zNInYr@^jN+4}K|vGpPu!|EQKVf~}{pPvIZ%EoC;oG6NWTV7$QBdGR+y@!1dB_{AtU z`>2f<_&jchReqM8j_hX{;`1869BT^&2e)D!P~qEA=EoeoAM1S%Mmr7TAvf1f8?Z+3 zam8r>P8feCDtE<EY@bk^6_>C^sPM`ftPd*O*n_n}2k(yPtQwE<z60?t@10E^+!yhA zS2p73F02(gKX4a#{-n~+LB2ob;C&JPYRJUV$ACAK$?AiVtX6}LlgYc<Bi`;g6Y<=# zDS}(UkE7WNALZoSigKMy*3?FFSOZ<`QQp=-cTOg2E=D}u3z|-M_jW}z?|Uht*{1f) z_5C)rXMr0cIkXLV_`hsziS57bSFJ4xe8j`Q6ye{0hsEdff&1^W_yVImC+GXmL~^+Q zN(4VJ9m(W@;}QQ4fWDJYduJq*b>P{_VI6esaMtaK;Po{g481s<^&^q2I<{G!*+x1> zEzbhO#vIQbpRzdD5a-htN8tSt&O@gn+wKJa&Og7mBdXVXLDSjxdrwCEKim}IYyh9G zy=*uZ(b)i9yLQT@YwCf|0lM%@pCE9xF+Z(#(zP#Yo9{!qv$yx<Bl!KOkF&QQI~tX{ zsmFs+N5{{m(-HiEln1wZFl6iSKj7v4z;Q4Bd<1_m?ZIEL_2Sm`57PF)x4_RweP7Q& zB$Ix~%C+UkGI$Q4bsvDe{fvWw@8Cg{JEieYfVPW&qA`MpJ{j>aM7=8yLsJnCTN@%@ zvGoOu&v!Gne#PPoe8QN$TGrO@C=Tki^}C8g_;NHh*!BjC!}@NcZ`X3S)kbu-p<JiO z;WH6DQWweLLo-p|^r2H8d?|uQf$#e6(KZhr@?hAH!`Xh=m``h6wx2fUGY-BI$!+Xn zgukQDgZFsw5f6Sbf;rA|WqlZRbnuV2Mz-<eT^{_`DywR2&-+`I72t{A(fAs`)C*-u z_;@rXocM;~Kn4>W0}zKW_;KULozQ`^;hpzJG<U9zXzuL5b0d|*PW2(AvvV|}xpO?i z*>zVmw%m1hG`8FY8~$0Pldp)zrEKeNT$;bfiw8ep{G(p{7B4;@(JahFb@>?T^;s?J z<E^N(!jqef`8kC@c_D)LPT{ep#((+{_JAq;%tI;@<a_2}tuJBlL%+0yF!&MK0)BR- z#=i*o4vi=5WJ`E$6hHlG#jnR+tj}sZ-~*5$>8Hm4Lx!X;@Pl4FdDHmcoCaOx`L}jQ zc6GE4`@b~)C}@T7*$C$(^y~b?NyyW|f0_bMn)gp3!{;141fCp>_Tu0_8;R)u*?tdx zDS}T|dvFu>hAExX=Zu+A_-jWZJ)VKRl|c@C&Ugm)R)+ct{9zmaHSl}pDH~7t>)_eh zv#CKm9vzn*H+Y6@VeU8K9udZK?+AALTNq_>ZwTX4#{sulSROILZW+I*74aPw=DT&+ z(J%4UdB6vu3*c~16n4&AcmVM83J(E>tON(;V;8-JCjcK+80BL(y^Y@o__)F~fKMo# z1AJ0p@QB^@7JmltX@%PXpI7)rz?Utbve)E_!uTb-tQX(83(^+e+5;HnF`j!(f?5l6 zpGi<>VZMhKWGu}0@dAX2&-e0ztT9iKFg^k5^WzR~v^cD5(4;VNnk_8*h*~YoclZL- zjWoBM#V_hbxGs;mbIQWp2a?!l;S6y3jvsNj|D!Sk_y)Z5*9n-s0p>d+e7-Gk2VjH+ z9s*3>h?4_M-Ux%QN`wjD3Vztm2~UHEB|R4AUeYCf8b1kmK;!oS23_KFkLi*Tg`WpJ zrtmSq$S*jj08c3VB4Csu@fQH^R`?2Fl)-rJO<l4_;X1%m7Uo{nC6o#IOab1n@G-#C z3KM@u;S+!lDhwGcIizqa;O7<Y1bkRw)O*Phg+~A%RT%s(K^ao+6yW0u&j3al5)T?n zPAZJ_C8rd=2>7(ZX8_|X_%8uItMDbjFIt#;XqTL`F!$0f0Uq(Wr*_GC#Tf#8LE#C& zD1$iMYr6!r1RuOCxvVgFS#m{jAdj?B81(sSmgGGFIHm9zz|{(){4_EM4rr%qEX+N- z=~{&mm#$N|9&kqCCcp>_KW%`s3WJw)gTfmDH!3^;7<mML9B@wINx;nt?+4s!VeSP^ zgRbB|54c_7V}LspJ_Wc_;THjSDSQDi%4S~f9Zqjj7`&u=6ej<D3a0>rKf$jBJfv_I z@QA|Tmwgy<zCzx{EzG^gIG#e{xd%C&*Z6aQcWXS#Nl#k%7dim%Q5d|Zr!4%7jNfPB zFPs3p-@=FRo1V5X_b{htEX=*k>4S=c-}E61b8mC{c?)xobNaA_zet{sSeSdB(?>1L zz0c`m7Umx4^l=MwFLe5Z!l0KvsW9lJPbmy~>C+bGUg`81g~tJ(weVLUkMxTc<{s)a z<U$#8FLnAQh4%qIuP|t&FIf0!2Jl6NI{{x(7-gm}TbO&V(^o9~m1)ecjKbi5X;N`e z=F*gfxi@=hwZg{$gD3LCz1mA_6h^(5)>@c*x0lvgn0vUFf+w+o<ACce%st&pvkD&s z+@Ls+)6zx@bFcSO;4v@vd@s!@d=@auVEmUsV`-~}xfgtCn}xY2d}+JF7Xf!D&LzN| z7Uo{@r5gdGAK|{JrJEEU0^FnUG~hl9b07KAyoI^XY3XhYbN~3#Negoy`O-ZKpBj5| zq<<A2g{~ZayS%}$>W(|_yz`FLcjoTQWbSNSg}6H!nXsy{@vf#Ogx+!2>N^CpXVI?v zJJ#Z*1`~b)j&GzB*Qf^|8+`2ltf@9t`)+=D#-3#n^nK>b!N$*gE7)Yu&J5b8J|A>U zeJSXi`ex9T-xajy^4J(RBX>vOT%rJHzbAM%s&@xw(9Uyg6wl<p8Faey6@cGfXbI#D zDV#Zidwzlr2-}^l*1$0G-Q>kJ;%te=x1-F~1Lb4LFK2I|ybRB+Xht;}Ek9u%;_BI3 zWjJr6(UsxRX#)LJ5Ax>lb`EgTIPZ-2d*d92B7U+`9?sqQ*dLpupEhAG@(g=9gT?Y@ zoh-|1H_3AaoX3IkQoHi)yx%yrGqZl2<sdFiIyjS~dZJwKC9voJd-Y6C6AyHG_6*P5 zNf%mp4oF$e>I`Nm;OCj!G3r7*&U5>&O9TBnR}a+h6w>AFkVy<p^<1S5tp_M`Q>}8# zK#x^U)>@A&>5<L^&Q=!P@_adzjmAY;Wr2T`v=I)-%jDva{`MIC2GFl~74$2W{zgY1 z;cD`OaGjiqIz8JUyxBVlszHAd=|hilju6w7Pv*(uJV?f8*U!G310CoSXQ10V!|GKJ z4URwHc{)fy?m;_fbtqo_{Q4@pNL<pVJYd&dfa@8j;Z6q^ZU?<6KI!0CJalXGBA$A# zw`X~U^k8>E`)ZtBuk?EaKRQndXU<sM{9>MeXWOIS2DQ!N{GWN#C^wwX@&nW1`B@@M z@(O-PH-oc}eV(gnduX#h-#oV)Z7JA?`pcP9F+1kjHkk$NxQAz|XnGUuq}=J5Wx-B) zeihHO(zC)s*~0b!TUpM>J9Ux~`v;!K7wsSZCgiJ>{mWp?){X7xwaVAjfCl7cGWfN6 ziu4bi^UOQfW?tUUa-1!PXYp7+#P;m`Z)pE(4*c6oh_CH2rOv0uxu|G=t9L<%?yRpr zp1u6Bzn{Ibv-iiwAIh7|zME%Dp4S7O+*wE+s&lqU7uSxuz_#UO0JOW}bAwbTwS^W_ zE9a!?8Ac188T6TNnR?rgp^W_7cz!JXsVk4Rn98A!_^n2L+mME{;agWS3^+xbb^Z<I zR`1Lt=*K0E`e%NgtHyIRN!veT4fhxwVOhv0ba=)V!gB8pd5+2JxSl1|2A-Rh=Pb_B zYMA<x_@xGv1wGTJnLWxwqq9@UauIAVhxA5mXVoY-OF5yhsR7;>9?B<gMmk~k*KA)n zLoe9l<w=508QNj{?fk`^HmW0@ht&l*fi&KQP>x^rp{>YEI-D@f5C(5NbCcmIgz0~C z8qRCF3y&b|c<Es|t@f^!8OxWsM10l-KJcL6TK~~ghxa7d9|4cH;$%SHlaN6gacsBb zLG(lzaX2?obnoQD^R!ad=Y%vER|OiZSA)v2t+2~9tZp%Ndai6E&xFk#$JpT<`eN@K zEzswggw2xI%DDB_<VC((J&UU~Y*)o?>ZsaC2W+HGZ6pU9VVRUG>)WjQ6`A6mmqSdm zats<JeXbluKG5A+)&V%2NS+5wdvo-fP?u&Whg{xNs2mbb2EfHQ;pLH?nX+--0gn7U zUn`Z%C(c7I;$xb7@ayhl!nlX$jv}Av`HMUoxdjK;0awpM-i@^4vlH!DiEUWMf3WS8 zqmA-1h_9y%WAXKfZzvJpfOzp`G5kjI0D9R1^bQ<%?w~=KWw>w(VbXTtB*IxQOno%y zePeRwo%#US>?cN$=Him{L8|-qd30a$tU3Az&~ZM2x`Pg+eal&M>f2ZcXV3M87SrJS zPd$H_HsJi?L1~W%%+Va%%q~*{eP2Nzim^P#xwLzn3F+i6<wY_$2s(0K3fj>aX`(zi z-w$=4@q8_9R^+DbySlEpUGv;VnNuKN61eW%L(0_Un_;}z3hwR!KdBxgK2~f7KK50e zX{YBF))luOLp^DE(thgHFU0+j%O^JD=0C1&=y{~BA2<z~0;BFBjCvmN>|nn0=N9ZI zroL&KK%0F<J$|Wc@po!>O$^(yB-#o50OC``gREs<fiUIUsBMY(7<-AYr45muoPDbF z>Qz>Ch_Cl;in!M2Sbf;ByZ96KmHz<x^p#VBr{fmH|8I>SN4%8d`d--MEwCrdKi$}> z>NM<;6Ls+`YOk!j+JDd>adP&r<pu4kXH~}VEL~Uk9+m@N$F`m+wAi+-^NhUUDQ{l7 z%tKnI%hHYx=rZqB>)$#ZobzbPm>2gDoI+f@u5U;DG~>Z<8Gg0QV3Ki;U%*cO?1!w( z?A)dXX>#{Z>vNd1Tlh_Do(tOH*G!|4drHW^v`g?W;~#`|93C)#H0G|tJ&x+5oj%y+ zppO@!500Be2g*Z@rX7bZ%lHWC?Z}@hw2&swwFa*;X0~)w=vUzX5f6Ke(Weckw7$%r zLRjdpnVvlix+%8z;&_?gX5r5pa6V{y{p@#tN!y;&IqloYP3tQ@RMH^}Hx6VUSP#8} z#>;0}jw{d0Pq}5*&t5stbcwfps~h9Z*N^YlethUNUp77H%lou1-v}BTQ7*@KZG^Rb z(U-SMSm<L-2K_R91%4a#x52}oM0^(EHf@75@Z+5Kx5AI7=*M}#<vf0TqxA~`{d2pt zp##Z*h<4Bn+D%$!4r?8aUO5K==R7}7{W)1DkuM`*E2E1D*CJfI%C<?~!G=4D3}wKV zfs<W$2^BbL*hgcbMb>Cs9g;iyasD~#fO|d~{JseIl!Nk}xCEHvKA*=!h;zEWM0<o> zn*A{e@Y_8aM*uq>UB1f`Rlzr|l5Ya}+}J4tnjI=Lj-^Q-=iJJ@bq%}z5IjUYUFKR1 z##tTWPcc?nKl@LsrH{VR`clY-?TS9P4*6=W+-47xAJC?Mt97)cy+PiE+a<3X1K{u; zxi_8VQq}?O%(Ic?Rcxfm+K5RazskC758x)!`Pd(tWT6FP2FejO=k78fZ(coIzAof* zc1qnuJYH2dWwakD(_epddO`cQ^LsmH^mH1WgDymd;AsjpLS4k<CG$Fw<u3ANeH8tr z%8$N8WC8h77D9(K3N5Ay_i<1Tb+{{PmiH0L-H3zYuc`^F4CyyePDz~(AT7f-xMn&W zJJEi2yFByg+195t&ne_}W5jg9<1^%O8T^BtH^Nt>zYU$bxnoH_;fu#WvkA0hoTOue zoYpDFG{BsbH34?Io&lU=U$N%7?;S^-_^>GQv9KHZaN3OL-`aJIJOCZoGsa`<4x|CP z>NkUCk==pW!;!x-=Ota*g!nkT2w$5My|WL+I=0PY`mTmY{m~X^<IaCvEzjyqIL@+s zF2Khtq3hA3{rNI4A?I1@K9o(Iency1MxU3*8qRs`r|Qs0)o34;!Z;c0<eb;ZbASQr z2xINqP$$K6)_K=~U=K1sTtEB2zRvZK()nLLY<UQ}@Jyn^@_;pk&!ZpuQqYQL5^Y%9 zYSVsl05r4U4gG)6O1^Y%Q;&MrQ?IQD679g}Tp7M2XfDuZ(Owazzv8$#16=xRo&(Q2 za`^CwchF!xq3k^HnXYTm<`B#B%Ar5V(k==*XHh>vxu<OT@|<7>^y@+IB;#+-2l9-7 zYuKw>(0_sE9G?k%;A$Pp_Jq88<%<kBPJ?eRfKRO#`-o^PhrR{l?9*7^slxh>)Rp|Y zaTn82*Ee8Yh;6zkAM*5|e`b3w8m}ULOGwL&?QA)pS6bN;dDz!mT3#N|S{u?T=IakF zEsQy1d_k@mtm90?%Rqb;;`>VAUxWCL68MV{PajoOZ_uemyp^NJlj^gE`0DF2u!R#P z^5288a;@6Y8`Q42KE<_QwFPqwYllm{`!8^Bn0Z5&$=uat$I0Sb`P>KjC^y(`G>#@N z^&Q70p7Mr!%gj=^AF*k`cz|#3v;l9lt*{OSv<ZYc&Td^Z{eAM8>OmVI|JH6}z8ZFE z{c_M*x(&|`s2`bzAK9mVWD<UaV}?m>yBy=DVApcj0DS-C`q}Rl7)CtX)g<q+C_HWk zLU_68R^qWUa1!mNdS@TTh2fn|f1`KqnQ`P9xB3c>1FqIKN*kyqUF7eC55luKGg(aI z;$HP3K8@YTw}<qwzLp1%<H$#UnDw6#X?vVxS$l5}+C3h+q+HwIY!o^NWF0_wDJ(Y| z9nH8Oh|z5GXeI%REDMA5iMC#(<zUpY=<X@3<v_;&_VcWtm5rfn91ZeoWxhP32O1ko z+)XpNI^+7afa}73UJFA8u#ExUQO`QSma=g=g_cO4dzS}I)W!PQ?|j|KA9OQ4utEHm zd@kW^XZ`HI{xo=ZcS7u+$0q086QXuF9n}TvBD?0^7oxUYbms-illI8*1MHPPLB@Ca z#pt78!w9>zbo!|fm$m`^dbI2$+fg&>*qE>4^B32D(f-|BwVAXuAD&4=&&6xdDUbei zp(T9wP|x<O<EMH0+N(aZVf&Z5Sbn8$<jvK`Xg#i0AMz;uA^fV?s<wd~;^mn&<Y+Xm z-j8ED^Xm&4$@81nS}*l2j{mHd*-5!#3?z4p0LSN-{K(oJ^p+~LV109$ea_<eLVB%d zL)rPqHnSzybdf)cGCBUBylcTr9eC;2b|AK;eC{W%$~@8yY^rd(tW}0~;?2p$mb6Z? z7DHL19$D1GV9wIFy2WJlSw~8IX|a9PvVJU|eHvitD}@j7a~OLeUG<Thr|p#-6YBb_ z(}mb7`T@>&WKK((>u10J0hNQVlXjFzyO8mFp+$AFeEqn<gR*~udaBuZAMQcXJ|g}M z=M}V%1@#3UWZiqsfdqBLxf0iLL|=ew0kiEmeX+lz{B%9p%~i|=)jQXrW?VY-$##!t zlXkA6`U~r<_Rt3$XPZf97qFjNZ+;S{dp2q$pUN+e@8KoMgN`R?N8;lOSl4H~oy*O3 z0@k%~@LXJWT|`Ujlb(mibc84KIfqAo=hwx@BX16m^NRWKXg3az^O*VYSU-oyalw3e z)TwJn2V;2QejUt-4-(I-7iH%1aSrLz_wlG3hZpD9$FusdI*jw{<B1J=e9%6#Uf9~C z&_Tan%$KjfHso`9ZeIYeoj$q;z6^eFK7UZ^xn}t6o6j_+W@XIlo@+FK-$3s*qkP=D z9M?VT$d~%3R!Orm>CthX-^X60Z&823eD#GE+a95>$tbV%bCiqodzP*pH}<%`nEt6m z-_3laTWk3ZS|O_}#)=%rxUw_Ak#!#IaT`E-J^Wtd`q@kFZcsm+?MwE<t(h+G2w^<; z&f$PP)E{$@@*Lvp=kY%}E-};6_AuvFInpjDS7XPkGAC##wBY%Xy+1B#(^E?|J#0r< z%g1_Sct0k26`B|;rg|_QlCbR?Y#xr|m&=%5*7_i8+F--GQ1<F&RhP9q%1zSIhsd*x zH3uNOs7-P`i8k-ba{B??GmJLK_Y%@&tS|FhecnL&eB+Qj(`TU{BhTS;2Ig@-4m1uI z(XjR8e3SMP-(R-^v{)BE{|Le<zf9Ps%P+pz&Ak!t@`t>j{6@(S8}{}Yk>?@AQ$I3i zz}?<_p0){bQGLVt-OE>yM%g((;>K1D5@+>c0EhYje(`!7(!@4^i?S$pH?~mShz#+p zTl(N?=$(DGvn?Orje{wd(7#4)XHnQL*oGlz@+f!0!k%PqXxrGL@VURXb?VUB3(Mzo zGrxS_wy8V6KFsUdMNXg1ySz<a8rJjWxxGtcJ9GJ3VZXtIc@X;~XJ@<2Zg=OZ!)^9( z+pdC3T}fSL7MnJA$E?~G_)eUsJ$-SxjGbMbTPLb2$*Yuyw6%@~+7Iefl-BOj9Q``% zm3dcY%a-0{TOQk)Y5(lbW!H^Nn3wV89?+t^4|;hY^zL_+a%UEqwGzj9jq-xHc8N0^ zJEgr%M|`7v!Pk8tj)vgNy|pOc-e0RcfbJJ>H{?NVXQs;B5aX{?(trorSO@3bw?+Iv z4BIX_e?-2Fj$7Lyvr>0h7R?#qZ{2(<ey3y+Ua2`G)<MF3X(-o?c{yIBk92dREMc}O zukGX6u#6)^A0asCdpOUC?I|nbgX^}17NK9A|2y0-UWNO@*O})r=0D6kuBZMM_2FHj zl~Q-!#Vmen@8if<WsU&%C~%JzmYL(k-&+A45dQ(R0p1Zh;QBZ_cTrg`C>x)rpI;W_ z*tbBxveq<D{?m|MgRUXfa?XJLaT$ye>LCZNbvYU8SX}(H_}PNp+aTj@^f~l*_SuT{ z<qjv!c<tkeBWtee?;Q?(yo@<W$FqaRnEdCv^OHJu{E-&NRkD{__jRYV?s0vVtUJqB zyK(g)%}gO0%dj4fW}L@)*Z9TH_AHvfSR{JJZ|$shp7x>d5STvbNZ%hY?a)yN%5T?u zdbvJAzsYA6)D?YJj`ovJ$#d-ntxv1|vJJq0Nx#B5ldNOlHzV=zgXkCBxUY$NgP!*x ztx3z<uj}9(Pc*TdLKf@xgl*oboy+jNZkO<gHP+x8#K#z{!OfX;eAtRSt+ua8h^_IC z)rIlOt{{)|&l&K{KEUy{kK+%_wVR{oykCE>mc>3_c+IEG{t|f06tAX${DN!ivQO)3 z;~)#@sYL!Wf5-ef{;Sbv6dBe9zLEX5<8elD<k>vd<vGTzLOojX?1J)Fdn+^GBZKuf zj&1AXYnH&L4pnx+i$Xur1I8qgyz$I7i*?Bi`Iswr-OGr&7M9EWvC*3kbBs}~`Zs{Z z-uB*B-X-z2JdQ=%srS9h%Qq5UjWMTf>*bpemU<U%let<W`ot?LPx^%RLJQUrs?1sV z!585N&%qDAWc_7%kNCg#@;;&cc=>?R918QTGZ%n=es7EE+}mxsPV&BF_|CJH<s-lm zKZ<fKf8cd*w!D*ht=*S*irr1ywJyjrC268_n}+AZv`M!&jq^Y5fx-J7MbB@w4VIrO zpdWzEXLmmFU`?T0d_`*KvQDmhwY&8Zlr7JFLp?yZpefJ0T-#irFKtyH7VQx)dM@~{ zQ+6G-V(c^Dsu;5VyrOgJ^A%lFU#i$R_00<C17X_KO^B1WQz0_Tqklq}e#5m9w*LkR zTR&mPl{ZyvlxG;$ZaFu?ew7N?L&c^pQ~o$*3cn8BR&46Qi@{U)Wm(i=VY&3NtyYh; z2gE~P&`}M_X%&5oAF1dR8$uq8xwZk%hHXCv{j)54Upo5jIt?GQegyB?z|JAV6y>>J z_Ni2KzAH1lqj%ZZkl5C3vX(A;T;L1Bwb4RLMJMbqiQi2-mwjU7k!6+laBY1xp07WR zIol)4D(-1Mhra25HnvTD3-2E#?i=6PwqZQ~CDi|$6`kDsgG0v6&c}a@e!$nW_-4yr zx$;~7_(Ubfg6FWWw-R=X_s6@;l9$2n(`fT;)N}sx6&vv^!L?bB2Hu70E<ae<Req?@ zQvQ7Yrt-skyDKt#cU9EyZK=pY<_(BH0-U1=HzJLCjn_B1y2Z2=?=K8(VWO+5@@2@i zQ*|;Su(gAU9+`h4P1-!45f<tGnBZDJISu=upXy_Mod2=oeOuPv+oaDKDw!^AR`O>H zH&tW`-4*qPT@~3vOGShA5zrlR+R@g@%j0(5fbj$SCE_(APZMO&0~z$4ys4tc`Ue@m zWMN|g!_VBt{mzLg@{RtJYl>|5C3wR4#PS6DE|nh21iAvOG7wwVa*)sUm!|~=-{@;k z+Bt#DgWMPhc7pP3`v44jw(MrYp*>q2v;((U+aAmAV%al`&9xk><N5FP_W7@sIodjO z7{H&0G$#nJ%9x=X<m~!R>PzB#%uoTc1l$yVz9c-Ve}LV!v(4eRV|5GQ7%k8MpB0Te zF*cBVmUs4l%)>gkHK)1-Xmki4jt1ld8=`zXpAgXA>E93!{|&jJozuV3E-<G<xXK(v z*!mr-gF^_X@eCLJU%2i<J<Bsm_?ao8W#wANxfk%+rw$>$mU@C*W$prhZudwHzGYm} ztlrpv)@s?ZUIsiq2iA9`!f}2QczA9+J4^b^1Di|%ChvA^@Z2nUak6sHcKtHNZXg%( zFE)$%yFLGYnf2O+DL<$GoUi{vO9lIi9Okc`u1t>45#NUR<}lvsfxZ*=XUp81<+B{( zA#8PB?Py>O#Xa!#ZafG%#Mef0wy&!g0q&f6<1IILZdkE~heoe>$I8ac!~NTFI_~EF z6}TgNEsn~?O%^yCw~Yta;+YpO>fVlrqwW3UcpSrfw2AW&j}cY)eK?tVa2ThZXt)cn z3iA#$oSQoOB(j+IjN<4_9xRQ|h8-g#dU~^YWL?|6xMqs^aNOp5?7`8%S=)B+le`J) z0sTe#eLQQJ`EgjK6!y?C&aCVQ?v9}$VTSo|68F%PHuV1f!N&%WW8GNq(BS4Z+a4S0 zH-p=8oMwMt=iu1p0n&N|C*+RuTumIXIyfd(h~l~i1~)&k4W~_m?gpun>FmV`pB6L} zf`X{iqoaNWHYneWcZ?79Z@ZU=B;SWqTGxz@_EIowhaq)d64x~_+P{53Zi~Z#uES6C zzkjfAYyi9r;?#3{aXIp@dmr+2^lp1>NAF|(4~!1uR8^czg;QuhGCbM`5ckaO=$BJY z9Xv3&g+gQe+8s|l<#68DiwM-~Jvae$l!>gP$j$~V?5FZ}lfL%%g8+Wt$KQ7kZd=>m zJGKJ{H6yNn>xON;Be25|Ca+=r1l~4wFV7w&+-4;}8QN1?aT4A52u@>#4%Xt7+F=}* zgZGyB51$JAgAKS2h<;flKV|mEBun6I)HH{aDuE;N175k}R+qq`xcPB7JYXaK!B9j# zuB@68IFm7)Qg<Ow#c-xd(3y$h>??tDD27w&PVK`noaqvDjsYiuud910U7U#Fl+p#x zL@1(DN*8BiIHh#)QVge*E-om}Lb|xDI01h7DRD=AkU~7`?&#d$0A{eCpbo!24(}<7 zeS$_rFgi>Mfe<su0VFRj>5OA6M3M7_ig3PO0;e-Z=h9rA20byH%O!9IVmKE|;LyeR zJfA3mLz^cKWyH_P5;)U{_i;{@z@a@e+R3Mc9R^2YI3?^bpgsF^j+Q8kw(8>?D}h5> zWwc8gascA=6TAd~(T?Yl5;zxQIAbMnt|$)ek)LWMcr9R!E8{P-I-IQH@O(1ts^F)r z2LF7VW{(c>@F~mSpO3?Pk@#WyVu4Iq6MlW1amDe>v8*|U^Hd3(wiwQF#nB&@Rz`dF z%gSqFHR30T0h~?v=i@x<;p`L?Q#PPDj>nHWz^3zm8SR;VF1)jdM2kOVd4!1rc`Tm6 zZ;4OYBq9~3>R<^3M3wD}aH{FAUeo86HEr*?7vrsM>`>bVH?so%eY7Lndv}Z@Zr*!o z&59voR-D28T9l7|RvyCWuM6LU<6Clft+2=5ufT05{Y1c+EW`0nW);dB-afW{^XTBn z*orOSAjI+F<$@XHLC!_+gNpzxf=(Bu@kN=7YVZY%i|Vy-GseSaBv4KjWs!EU$jg`& zz+KS+{w~99;MagI&#b!@_V6~O-3&2gUNq(=<h}8tkdl8*BN0sKt*ARb|G&Be^_^@B z?vqsDE%<dXz=w}uXjKh>ZJIJ>8pF40Sbg<7rx5l(uE{hYGKKHe@a_T*^JsG<y~WUX z_;EbJl6?L)9tY`Dh$DY&M~=UH06QK4u04o<Z^PGpTw3f7)V2Q&2!6Q^kB3HS9Y|vB zf5$%#aoxw^@z?W7>p&|>yP`i_fiL+><4Zs5(R&E-$-{_qA4kuH-ESEG8t*`LbXYj$ zMP1@k(FvwW8~U&4#P4nmV<uX024TJ9(A*7|mq!)rHGMs*0@(&vH2eYU>)aidW(Y-G zK>lNz{xReQeq{p+WBEU8&&*Gp&~&6NMV^X78vb<*x2TUc4SxmUjR?1D_|FmE4^g`O ze}i)rVb^8*H2oj7UFS4BYukEw$0!be&Or9&tW6K#2j~yn9gqR+l0L%SNf@-LFF30B zk61sF*r?&n*0(tRgAYON^~ldY7F7-k)*pp;pzcK&^>ud;2EPPTrhT|OTz?Pgl)u&| z_^SF}t$%PH_>_;{2^(BN`XPi>U+nAYpWU66W!KYJBg})R!4Laq@uzyHYuP%4Cy?&$ zJjE1^zSDFl{s0c(8i9T;Xc)MSkV&$^hJmS{gx5DR3Ssb4_ERpMl|=Z{vG7bR{2Q?_ z<Y7OWANnr}pNoah$HM<o98PdtBp*vJ@y1wqc`OWh*^lDi7Yjca3x_^J@nIkKqv7#b zcvmd^)3NYOEPON;{!%Rb4e0ZE#Oa-liN7mOPr9HuCFrr%MOgll%VOa>W8qkRlijg& ztQy#l($g`Pb%H1l_V1;SxdY^I3lDA=lDpDIySL$r6)$Kn4?^-|xT?h6B!(a_zrwwM zPs&Qi+-ue}rmwqKR#t2fH<;NKg>KwK$0Y@pWA9VLRX|uW!97ck5xs&9L0o==8^N$} zvmHYax#CC)$3=1ol06q>-T_=Mh|7~69o*K7l`f&r3-EB&6Yge1x_6PC3)zdD7~-{d ztY+*AE|(OFLJ*6yg}31W8I{8ga&iHm3x&u<*YzP)!yz_{j|ORa{Sz6`n-9Y)2@waF z=p5idEWF<^7Kt0BMsd|uarO|CdF4_&q!V_x6lzdpH|Lf@j}{R^V#=RYpim1h{*m(C zO_BCmE8$5jNN%$-(IrfJdlHuacukImyxWbifaxv-a*5$BM^Og3tqDZ84u9CcS}A^M zl79gcE&?0!ihLM19$_Igyi!Rohl<_D1a7bj=<ZdrcQh%AT!s~K^d1=CyZg5e!zlGK zCZs(8sq5`l2))valu)SNu;q-xzYj}B>CUWP(~VdW(-h+xxzx(P5v%BuBVN|zUuY!P zAuV+C(cBx9D24l8(H%$z{lN;3J^4XjxYEH>=r<kwI~eM?^~o0iJEwaBeW$}YXUr;v zgX)M5$0LqrfWG1mhw~k!nL#)HU8PAF{lBAG_ORkKpr1uQF69#5<l!7M<{e7240)Rr zPN3X76;3+-K|ksEC+zW`{7Wqh@<{%bmPPobsI25=WA0L#<sNV49&hCyZ{-(_`C*6e z@m4V%#V_i?(_+P0G~&SrJ@}XhpYh-e5xh7V!PVe<wbH!yS8cs`_tUk%X6q#|`dugI zCEvC<9M>-S2a7{E-Hf9kl+IG{?`Xc^cm%%@<vN+a5%|t#-gq*yhZ@M*<*n&6=ABBj zW+uv8b2hS#>-J+=Tyd^%^WbR@20spm#|=6gu7!LYKW|37v%NQirn9{_AB*CDs3YR% zhro~H?Z%uj?@}Ia%;TPQg>U+l%JU_R!#}O^B)kuItt(FEgAq>V(FiAlx;vb=PGbt7 z_-{jgSC{%45AN~cNe@2k!Dl1*7URLNe@F9{P7n6z+~U!>#iMg;Cc?k9-GjfQ^}2{T zg0|Tz!k4k5L+f(egHhdYdnl?q&w3AW#v&bMKcV=bk^Q9N175E2B)eSW1>S=vJp>r9 zw!J6?SZ!P2BN0yHb(TKo1dTUX`T}RLx}$Vf)kgfRYK?684$yTz?T)U<Htv|hLW<^X zf<JO{zVjRKP4JVPPuvNAQkJyv52x|gf#UygqX(bxVAz1e$sNZNJ;l$RGv+~sdH>UT z2Sc7Ad<D}Rjla9zgGW4gzXyZ<yA}VPSz{hjm~CFxp_;+_Nrl@1Ur=}>W<jWn;Pe4* zQW)hVkS6hva{^z1CjrkWJO%iK!iY<pSNIToEb1lrhXFS#d<-yTF7e2h99Q@h;Aw@= z0!Cc~=Ow`S3QT@e3SY)=gN6Bwqr6k$I{c0)%rf^YoWn25CLPX|%g-r{d=*KBdjMw@ z9st~-Fz8i`C_D*xpTgj`;;6!h0Kcg45j(|{vQTDay~d-CmF)_j1w5oM>Q_0X@I}DL zFL|#31|DI~mn#t#xCT?!jKcU$u|7IyP7NsBjQBkYBRzFk;ZDG36y5~*vckw$Rj2S6 z;8un6fFTDSfW3GIaG%Cc0v@sPTxY35Sa{e67+>OZeT8cVgt?Z$^#Fm-0Isz#*K9e@ zXFS&j7G*8WwSh$q3WGk|HtEayD|iyP4dLAiqh5=Y2U(Zhqw%Car7+50v`^u2!21<O z`HPMy%(70{a=AXT=%m6OfKMquklCUaEzI@WMdvKcb=yTRS@`BLz~?Q@b(=*OEX?)X zMHem1b=^gm@bnn<;%5=)u66Jgi^DaI#nl#m>(I!SQFny7oK7B|V}4iZbIjk7yYn5d z{2cR-WrU3;`LE}gFMMVR_ObBHXhYA|j>|h_AMC<=ny-4^UJk`$&kOhOWOdIB!`uT? zyDDSkJs7(WG2mVpImf}h^8-BY>*2l`o=1dtc!EaFC-1LlzKxO(dx6}00Knz`lrW#9 zW516_m-}hL^g@g9Q?2`%8k8>g`Pg^K4&cHPz@VFQzmO023%Nb-#7!d~-#y~~CwVU+ zkNtJnM_OBG!PyHq(+K-yYPtUx`*@pT`wC@$)7$e#-su7DF491~xnGE7hV+PovvVhb zlj?zNL7TF~-bXp7g|NJ1gM5^oJ?HMg%clTm3&7Pqo8;G>16lGMHt3CI<K61nlk=Td z%=ZgWr@9<?0zYnlqws6_#Q6$HZw8-@z(KvC!;*NSSMpZ4-PD6O;WNM3w0D{Ojj9*N zJJa2M{dwQj_unBwU3jhs`4So^0~<Oz*Y=o)xp$j7Yn3#+pDc-ec1i5BYjF7BqZ)Cm zaV87p>-K)(J(O#BCJOhda(^n%I!<xVnceR+=Y5mYdNx8+sdqHAoyfbnXovD%x9%;b zt;&00;Ij#PN{ilKB@XunLRYkThex<tZ6{M`v39EOb;v$5ybsfedd=C71zlhDebb3^ z@8nt0Iq0?lyz)#7r~3@bmA!4P2P$|DkL;Uwd&4|lY3~lN5ByR8?%W{CvjTgOdl1Kc z=H)EMr-6F;<<u`w4rQn1lwT=@2U=_=4(BXjwiCM#bvbO-hUGmr$dB(>v(9#po;^Fw z<E4DRrrW)FbJNE`&%FnjLD}^vi}s8?+0uTgw|e-+Yw*i=##`4sC-1S=!xvx=w%`Ju z{XX~M@jXrKUmWYI%HPO*h<}-F$oV;*)xC3Bf@Lyo*5#p%YJ67x0o%shGSsKeDMQO9 zojGNA<%eZ>dj{v!L-AjyGN|vl^>}^DpuNbR&8Oi<xR-oyOW2pV_ix14U~l_V^n>sb z?a1T5lZJPKD|4Dgp5tjRFb(b9rBU}vv*Np&kNzo^ui{84nuQjz8@$6H`*qc>$}S;4 z`EWd5(6HmH17XUN_k_?!0mHt0n}B`k`-4m?wy#WL96F_Ms4bv;*Eg?TW&+5IcAuT9 zl5qifaP=L~GK+2f_0=Eif-*xnvVAb@WLLW0J`X>5z3DSp=BVl`3*S`FeuHB$oXh$n z>ia$4B4eL=_=a-iRUO*6IXY5aUHiP6j_iA&;wPLx$f6ADzE}^cd!g(5oY&?L8qi<n zNK0kV#WGPpjtRAXrW3G?8}Uw&@I)W>H2gB#-6P8|HsCutu%*372frLA*2CsfJqErT zzM6d#Xk_rq{plRj;7nSKgYCF>zIRy{9M^(gqwYoLST>`5H|;75{;8h^_1%+<Q#q1< zsf%k1$Xl!F<lClux<ee>zpEG1rQAYR-epf~dv2r;M_=B<GBHNk7sq4YLLR#8nXxHJ zhb}Qb-9&j}jB4Ysza6yuXp4|t2IIQ=o%iERm@POr>^7WDg>=f3wn;xAbWk?>#Xi7# z{$6r~@r4$QIqZJ<9+i7F;$icZFMB#?{lfDAG+o~RvF{$uNprrcR6ggoN~DEtJ)S1A zD_H)WPB&r9fpdAKKdwVPBoEKD1)Noxt9}!QRQDJUB-)gJzkZ#FqyFeaMZdlejkQnU z**j}o|IPa}=tJ2)A$R(MEM+>G!UO^BhWw~M%>u52KQ+LijGYYsqsvbUkDi}UJ8|z7 z)6RT*Ca+GXJ(@<J<7D-HzrH%op`7L$=U5qfGNKG2JNk5%`vdEtVC7r`dgR^N-2Y9y z)8~NquuYV<5l@C3<7ppa<?H#V*I=U@`_muM=TVM43#uM4+Zw~1N8@b8D@Opk_PL4i zp}(_!WfSyj{XBe+`tyb6vi0!$XEDEdCG#-0d3$yj+7x)JE<o>ytJU{`X~*&&Jp8VG z|MY;_jkwgRj0xaBIY+CGzw4`Q!M#6Exx4uqVTp$?BAnv8I~WVpx-%2w>GV&lGZ_Cv z7kchxnth%pldH}17VP8Hud&XJ!nc(J>+SlR4))tPi(hP?^+uZd#ejXo)%rTNAI@8~ zEq#k{x}Y|o{#R`^)r|O<?+t1YR|{El4I+iUD#^90QfIeQf8eLi@@tL)ZbV*r9~ylZ zeM60&746o5q>e~yg*-=)KCkbPdCMzkAF6v-rub?4d+^3OvJd2YZRE4o@;SQ)Wyf{; zO4n>?=dVS-Jm;74<ees=?de#Qe5wq~$$u6)r@wb&oiyXZIi@{NNY-0mpVBX&j^Q{5 za7kZWQl8%UQv8iQvqWfr@pe-o<+?t{m5V&jESIqub?3@;{)Fpt>|+|qZ+;QZUB&q; z>R;SCljs6%EJ2*T%cJ!p^v~tC?=Bk4WI!)m8-i@OMycmomCWn<=y*Q1qf+_spapA7 zcHAZD;5#+XxP-n)>H%IQA8iU}?=?CeF$OJBhu|>Mv#>+9^OWjHVf4A49=tvQc=L~2 zK#O)UmzL9)t|4guVrhBh`2CBvkF<^haNb|itz$Tyu`H2Ip;%uc1L0H0aq3@6*YmaU zR=S>EUpYr+uf3jJf4bu9igw}6D;zJhd#R(ZJC!4K;?iGtnf^QSBmIT+eYRcF7r8!Z zPoX7jJBF}JgD>ABF!I1Q=CluO`{EDK)^|g`T)V7c9}GCq{*Z90$H+K)L0?=dFKD<m z^%GYchw#iEEwe^{sZ;U4m>V?_rac!}UyKEOd22r>_}a&?AIBIR_mB19oC1tlCX79& zfcByEt5LTe(gUtMPw;7C{re`&Ewe@Go^8`_OS$%*I*ys}F22lJ!ucKY(x>V=@9ciS z?kuMP#?u~ICi);gE6K#iPoT*<=`#(i8Sg?E`oVJrSuZcNNO~RRu{u*UHgY<vCyuUp z(r#*W+&JG__}NnD8Ow8zn<#hm9k|O4eAK!1Y0&h~x9wzD@wyhk>+<mAnaMo#HhOp+ z3()I`@zEX&x5mQF9^JkL==R0(ZHk3^JUaOW=;UMh#$(|LkIv8nbcSO2Xh%-olk{`2 z!A8W%xC>)-u}jk9IvdhlyQW>TZSq&nNW?R?Q>5kW2>xR-7TyyJ@8%g}D5KOfl^M08 zIcGoNd@kG_EzkQp)J||_f}uXz3pl^XvsH#WHJoI6jJI}-ImlzX;_N{^d6#l0>#1Wn z>b=$ahieXMde=PZyMfz5T9}h$Ji7ZN-r9Z!ytWl^{s`i_v`?kH+rY~b{OZ|A*U)a; z(7rk5BQD^%b9fyCFir06Ewv6JGK%V$DoNMt3%x$~)zGCK%;on7r%V4eFWuPKcV2#D zGGKrBdef}^cc5AK??97w*+v_E`u6ZyOs>#^wzJFRuqIs3K1FRV=hm9=TxE#)V51zP ztBo!?!nip$sycs-y2*kj%B^T*n`6I?zO7By`FW3~X`C@*IMb_r{p?@;#@seqB|L%8 zgvY0|O|Fx<w)B14gd6|q_!xDW+s1Y-L!Tw}oZH4guL)^Qme+)ogSdu5i<Hyk#z=N; zyK1+K*LL5AbI(p7e*^eU;<wG>l^tiC%C*75;LGPXnm+??E?<zntbu};dgQOiSR~Q< zT-i{eMZ!&54*MeLd-i3-;~A^0-%|dsSJ|{RJ|`}N9=Ya&`+ftCc>=6~P*3%%GP76k z+m5=juW!)39?d)t63=v&#`TN*IHw}Tc0rkue%97S)>Ozh@03@WiSL{vznERlE5De} z`1hbmzdx_6Un8HiN7CdyCk^PQIuQ2d%&}5T&X;~EE@$jTID)+KwG_^C8wxFA^Yyx} z7utX8f$!&#C)I;CiZa`vAI{6wS5&Z{jr*Ni(4ya|h2I$f&*FCw*9Kgyb)}k%+fPLs z(zt%riaInew0;%S-4N($A6`DKV|R{!8Q+F-T^}ps0QB9AujBd_+XTvN!<}m{KfMfV zWy>nZ9$AJx0=HK-Y5XkX`D|_H;QDc-%bAfF`%nflK8MWefJ>W|yY+Ct*&e`@5Bp-3 z56<aEobQ);{#pU@fow*cY!<*7^Kra7p?>rF4yL`*aRYVY%j)%_n|r<JLe3m3v=^fJ ziui4{1sRv+aknb%R^#0Il^g#}Ft2A{>G{@2WA>FtxoTgDHrSV2mt_Cx)~v`|wd$xE zaM-tc&+TZ3F3mkBDUmOH4pA!Y2>dJi&7w5as}1c;;&>)$al0zJplt$cBxOC|&9wv8 z3+ud@yR>hhz4~?PMEG^F3A9D}f;QJ5>oYpG_mn=P^X1jCP`NR`Ij@b=zkyD>=(0-Y z=`1UWIF{whpLO)cM4|jk*Wa7tztXYvRqC&D5BFP8N95^sAJ2e~1!Zg3aKmR?^U9X% zj0LMZ+H?5q3UM_Er=`!H{{DW}oBaiKp})5Oz&s3b0q0x%)jM}xJDmaze=fHVIIiDW z@SITCIp?gcc&;^r^`v>vDn_|{K4Q@Rxi^CSSPHzmXA$(}snwZqy@cytGB?J2wiZ67 z)O@z&x(MjFxwkuO)y}u0c<ygZ&9k;ayYT1Rl(iqGEj#+P3(%>J<)e;#I&3F?So$)* z{tL|GPh#(8lb)}g1s!?Dg*70~*-3|eq~4#1G~0GEv@`3+g8eL;ZFB}_@N-<tJ_~vM zH9lF(o>?q=`(!MRb+=~8XXoM~7t(e(q`~n8{hHF|zCfO9m@Y&%%6k-__vlcb>DU>; zQg*>UuYs>Dx=%;!1!)HPQY=3Y9%1|3r`ClymrlAaJ*nwUh?`Syo$pJTc#gxl7}}PV zN5SKJ&9t;*$&Y<Nw*FRzQcu?Tk!2WPVUIQXg_@mDR5pEa5OXWGwc=+*<UQ-_+O;+4 zJQq8kyy$#*<SS|;Y#TBBl5HZkR!BRcJ<^BJPQ(`DcEWvs+P2vaFB4z&dL8vjSmLY= z+->8^YF1^WZOdL&=!UZAejxWeFJS-A_RsM#>y0wlJ}FOK^O804w3a3IiFCG0Su<6; zz#eC77X^$1<(yrN8CeI86Zft+Vpj|UpLy|&O4eijGu(^H@bo0*s4cjA!slC4Tk!cN z*3@Woe)|-^pmL`U=Cn^w?%2N@OaRB(tS@)hK7F}!elGDbx!1z)Cgzblb+6C=1Hz&= zm9fAxi>;4v@>X3rJj%8R&l}fN7g{j4;Tgztb;EI63h9jtq|<LS&6Cb{P)7Z_^Z2R1 z5^-gS^L6fQSnP^@D)M1ZT6hPA)J1jg_AZp%&w;+~m9{mx6AEW9uY;`U^Bq4Kgz=0+ z{IIWE@nMj=uUqz)67O`2cLUnI{5T^%Y?Cg3F4iVp{*>1yt6>{#lR=3#DedO%dGW36 z>uRx%i+3@;_ngjcZM(9280TvrCC3BoH*p8#YVePC2|t3qi|bM3VS)aBMAxtPq5s>X z{ogoz+XU9H^EvBBIzV%r`?c~sqt?=<e`!bj#45-hzj@Yw&2v>p8AluP*6rN5l<ls~ zt(mnRs2WiEt@_Kp5b5E*u};#8(cdWa!OPRxa9t36t&Dp~AL~i7_oUUrviGDJGMGe| zwB0<1J|spvb%k*;-djD|%<u03EJefCznH&fN2Aap@1sb64*4<vxcXE2R$1?Aot9^q ztWzcSb+RwX3Z9jJlFxh57lv^KoZ*YPAfFkvbFJYj`#PmO`12HK>OP;!Bcxwwf!{<K zI1`w>IKGJ2$~A_a%gSmb-r~r+G2pFHb=RQ3SX&7ifXBJXN7c?t$f<G)IB{7wIyoT? zXFM0lx{vs)?7FVnS|#mr0(m$erS1V^4FUXdA0^u9m^ZIsTFEs8<ZXa`(Dq2*v*n5l zj3Yf~Ymj>b$0B>-gFRk-S)tzHdW@Xs4ta8Hg8E$kDCGq>r+IUQ7L!BRu5(VyyIiy} zH>cy?@d;g1&aa<6`9ta>SZ~!`1sa~g8sxvMQ2BQujpu52f_7)2+jN1~0o=VXggT~r z(4G~q7I?AxmY1^sj8{*LccpFBAur%>@!aytHO~dvuB!Ci&7ck3X&I|RX0S_B6lc%d z&uICW!v~ZL$4#|}<GdAdxGw@@55%`xe<JV5i0`4D6W__#^F#C#L&)ESyhU}6$};<q zM!L<GZjyB!Kpy6G`l|*U(MKKfDH%sCM7KF-7Jo|Xz<Dm~kj<HEZ;!=s9>DdM8kQkx zC>y_SF960RiA_kWg^c;mM1ZxCNys<A7@1=Uu1&wB?@7k=mSmq5Z%b|sXQI$zSTB`l zlCUpN?6tA>s(y$%saHS1G39B5Ssusm+U^o(7zbS!w>$I;To-wz?N0PpT$XF&UK>md zuq@vvb8T~POZa{a>qnfF`X`_F8cmaTdN_s!9^`xRg;y`*vUA8=<O{$<T*hi!Wru<5 z+f*cDZ5K#)JS9uZxNL;w&5<$kzZ%~blQGLGA>*>7)XnR&OUQT#IB^-19%an5us(ow z>?>`n2DY2T_*-lgcI4?c*aO_SOx?S?6G+2c%FY>4P8wn8PWp5DE-9}7ofa@JfiA?y zF&;AG+DSd&G+_FbbfHD^>)q~Grjh3SS2@Ofc+W2MU&l)LFB_-+%lg~z?gUSh@Xy>M zGR}36^|Sx@7tTK;t+P1opWWR>9Y|}!cudkE5BA-i;4@7+;T<&cT<JUi>ga)A@%L*E z{97w!K|hY)6n~kfdtIhDjz!!3f<J#%+>HK~T*rcMqRcw5-gE?G@WVPL?82C^L&t<U zj0u}DCTvxo+Jtg*^b_!r^k<C-H+nv~0pVuUkNQ^MBkz4S`)zq|OZXhO8F=+>Y`Eq? z1?e&T0%+G+xTs%j)_xIdWM3{<Iguy3u5zIK1YpM>pE1=IS`6)`PW?oVd_Z1e6PQcy zap}}Q^nv+{xf}VaJvucy_6p+)S$WRW1l=`Y>{WY}v6qwyKSVwppS05)%C`5UWTk%) zJlHnzYU{A}NS?q8`W5MqGVLaLT48^EDJJjaMdWYx$1i&$ze#y#-v#|p4(c2Ej<b6Q zafo@LKl**wcg!#jvZ3E+e!%mNx0qIPywz2exeIySSd;ea^N~cDd>nz_;PZh}d{8d0 zHy>JV*!Q|VcL427>Rl|0#J-X|l<ouPl?CL;@j@$Ufxg#P613$a-O(q@8kik_(njgq zs0YZas872J?`3CSC*Cn;DaCu)_&mI)b?of?ve;mu#jbVeoFt2ITE`!3XS4<PF69{M z7VDvmICE`5^?<zhcyoYx^<dX3;143Zq+Z0vi}eyrvpnC2>GMy%rx?>oxHn|C^3Am* zZA(EH<Df&18KoSwm++k^8AI9kFv;_L??l=9=$L?YwR`Bb9=2UmM<ZIk*Otv0Ex%-2 z{sH8c2Hl+Y18J3=^LtEl^N9@LEb7m@oTzh#b^qx1vfw%1$2Dmm*EwGwr+rux`mi(T z!}e<*HiSN`Px~;rlhN(V!`<2&QEn&7?V^8$5ASf#FSI`qz0eP}9!R)7bsNE(tg|}3 zX*zZ6_W5z|Tn@Bzh})>Xo9%g{^=XMLV3CR22S<Gio#_Paxn1SQezhK9j%n!sDWi7n zw`AW0cy7n~QI6-1te?HSF60|^A)ml+w){z(m%Qj#sD}pK7vcJpMm$rUaP-;taITAR z<HX{!8m|u$9g;uyoCAE-0?(}@GhJZli83XB9pJB%@9*#qruDNg_lJB&{Lu$G{$6p} zA}5rub*XV>gMZFF1I+dK45QAAPr7*YE$0yL-p!)_$M`aQF5=cVxc}lH(qx^FbR8|! z&-nK+>9apqcQ;m+eA>S{8Z67<B^RJkz0<C_I2z1X2V0=uXPsod7jSi<MZz4*80_2V zQl8xynfmeTmeR3<+gp;NO~vZw_?I*{K2SWLf5)T4i}RQQzZ_epVm$5vPmNlaMx-?& z%so=z|N9f*pJOV|w*US|LYq<B22R{Z$e0jg>jCIy&Nz6UwdEAXwbk$mX*^e`flr{U zQm*~c=b#+6qtxn5_$-8D^%U&78g`w=9>1DA@?j14r^%!GsrlA!i|)o%J+RHl^9Zcj zhR<zethrpDE2=LCUbV*0NFE!{F(7S%`|<}Q-o6XL_5k_w8KT`A;py4FON0CPh$HD} z=jvOGtdZFL{?r}&5c(|YQp)klAn&sFz2>>uNx*J>KYoYrywBWVTf&1cU+8eoGdTG1 z@a||ndsEpluag~pB6*!EwAlF`{X$pO<&Odf&nRRJP5)Y}a$sJ}&5QPp_-%px5&Z}2 zD06+#ZU-F4X~mkY&{Fwu?7(t(PEWdk@eN?zOE5b?zMYNu^EB9J(KBe&(XFYntv9Gm za*d5T;F=k2g|xG(H&_3oD3d(P9k(UwFZgKhSF1nwfwBHM&|+Q4hkH+jc|%`>`W{Ev z&E3%!X8REK<s^H`UWJ@mwSH`mj$f%0Z4>jgPA{Ik#P|QOzx4Ud04L-ZuxsO#A<Jke zv{<`PUnkE_V2AN%$7gk1(cs%7@^c&`I%j{&wL8YC&U#co;s+VOI`Spt-4BzO>Q$M5 z{EFX)FY9xC#QNDkk>_1Xm-{*9+jD_AqDl1_ocy|L-gg&X(HIGQbf9jH_@%$zP1}X< z!@lNU|9$nzO-R%EY^vVJTR(e5?sle3*p8r6jyIdIH<tdSQSZ*&k2R1S{k?lH2>E_x zF73+G$di-0gD0IM7{qmo%%>}l0`9Q>QTpjl+Ar33ST66uMY)xSS?;P<a}nbk+EB=Y zz;-?3RH=JkcixA4WKr*({Wvot9LtpCGbd&Ahz=XcXCWKV7WJLfpq6)Z3awi(CX%(D zKl$ys^{u$fJdGycc(MU-M*-ti+7fJ({jA)viaRaG=@VjdNfRG-7Em61#}zW5t#fQm z{u<N=<^gA&57av{-JSuK$uT<p4fQ3@GqC0{&Um&%`23^J&LrLTJ1(6%r+t$Tw~rtt zc=j$%tnb)oeZZr=i%#<?*sa~)Cc4!3bA?~D1?KUe!O`A2lyBw>>F{n#@MgmpucB{d zy2!=JM0kNbL3fk3TZ?b`BR=O$&ekmNme%efeAJuo>;k`4@U4!*x)yFTT^=2giMHVy zZ5!6dTlvv0J5<la6+MH-Mvq1<VUerVFZ26ymU<Lg;Mc0KM!W9+aQ8mYaaP%#;QLA? zt7KP$pw-=?QPV|Qq03m%G6+&8GLk_yqAfs!MYp=!iAz{AQX_0d613<e2UX(aIIJhf zOgvd9#}MU&$$ER)IcCS3WwM@*lXzy_8PATh>t#8!?1bKs87Id{NR}k@gjoCg-FNTz zz4}xoizKsWlRD?C@BO*&zWeUG@4ox~ez4~!v8Q7r>|K5bw8?+t7T@J92`|1LpGPA7 zCRh34=Is5%OBsH>D08^h58)1lrf!Kt{;%Kec1SwUOXxj~Ltd}@Z#fH&r5x8_v-e{> zk>6U_w{LXgzNZcr27dP7#!pT!IDBha_Pkc%{i5Unyh|J07cow<Ju*_~OHFQvgfU;G z6L}0s7|wl5|8+v>9wfh)nmv46F3`TT-owir0PTfj--6V^>zf>DFrKKK$UO+1<O}3= zH`<4n8!sCZ<SFEV<G0od#<tLJv}bwt{#tu=t=@@Gb!z4VDVvu`>H;q-KJPL3%@*i@ zyq^WE^*dRuhj!9~I&u={>&V4%zK$s8ZCak}u<N=@^@*fK8>GGwy9sT@RmD@D@O|cM zq-WpAaV&KS+bsKH+AAyz?S>APqtYvJ1<@@hmP_z^zJg}xJYR0lhfsGApVdV%mOWo) zj)RY??ql0GJu;8{NR!p;BK*`B{Rqo>oh@ai-NyZOY=>qua2=1hU=zyv1o6-|W_id5 z)t}36z>WP-Rq{NDFsWmaXN&W7@TkP0Uag%hVEt{4?IhM2z}rvx?s10?m)+r?T4;8k z<hn_fT>JbUXMUg=YnZO#6!u5p9pSyB$345h>?Zdjt`D-?vlaTgG|7$wdc3h=Uhk3R zxXAc!`q0zi+d-laQ5V$X;BQyi$=XFx->a@m0Kd)qe3UU=8`7CQW^DoM(rA;-(g#W% zp}v;XmchQ6OD|JK%r1wFuXX%rc@ZaNKyU)zKVQY}I;uA09Bjxbotqkgy}ujd&@#rM zW56{6-cuH-Tl(myov^shQT9soBd;mAyWlRf4}r}|nJlYJmf^O21Z+1YZ)?eTvMlW@ zv5T-jCVLz(W7D`4nz+y(7oo5EVWae6j9VUX-*<=FCq00ZIi+o{WSPep<mySwA3UU; zMSKI2CupwR7A?VDHX8%+>^DZ@@1uMDLHMpM1=NA>Yp9RBKha$>XNI~t100=*?}r^n z+$Hj+vQNgo-M*aCw&gqS(9b#AZd_YKSvnKj?T`N?T_())9R)t}mhw}C8|7=d%JQKt z-ZqT6*yE5b=1rZ7`v%Uy-L?4p(DTjEUk{^?okSlCdXD}_q+!{bM3&~!*XFdZ&7&W- z^-|VZm)0%rYLK~Lu}SsY;9@_b3@v4E6WKimOebeKQ16t7-Lx0b_EX=JPjLJ1$$NWO zaTkr>u$73<`+Zxb%ybhc+X8q&9V>iZTo-l0Ul2dax7ZYQ!rxx;x?0A}pox1^J0L&p z;5o-4HfQSbNZ%Fpr))X$wFo@+EppCJQSbUN-v<btQs1`;%_G9&&kGM^O{r3pequy; zeY^0}m&>OYd{S=I(Mz|vHr!Q+xv_X3H)+^SoUp59JS~3T*K$lrU2p50<crzW9P>{h zPU;wazvvQ_pYsuRE<nb^I=;+loo7`C<*VR)o5%v6ttm+V1G%&@q{zim4wJTtP2}hQ zUS3{6I`o4m1MFSJAJQRr`9L3gUivzg@h<2M=_ry$@TeVqzyRvA%jU-`7>6K_0oZPQ z7qt!?!iV7>jKje<$W|8NY~Pk|PT^!+Px*@BeSV}NS9W5r*qq)p;h-C;*0wQcvQ}L> z2;Ic-59t`xF;zd@V<HP)HeAY2{@b{KyxOh0bvNAgbZ)<ntL6#s?U=?ZaEIYu|DI^P z6ofAl-gIQpSM{Y}Vm%tb^Z=$$&j$CfpXWLd%1XT;`GR+c;qQijMAJ>c-vvIC2hz?f zeqErXeM5T?PT7-i%-?iKc+!^=r`o9;3pP5fH`5*5ryI+S>RZ;qfbVCr7Y!fw4rSR6 zg}y}hz~+kHyatXVX&fk9r-XUgW}9Ju)+uew-`(6%@wO(~N%SV-3-B|Iofl>Kt)0{6 zre2UTVa+DKUkQD|CnOyF0R0wz2I1scyYCk>Bb8p!Ns<@but{VtvIV;56N&C|lz|qs zakDSsUjC5sWa~u3&1bLkFjy-L!{sh@w0B8gcfFAKR;<aRY;13o1Ln>78Ol0gtIu-# z^~kz7D!rl`DJQT+GP?sm=0~GplofMyre}peael~O^OW&{xXE+ucVj&ibnhhVi1mQ6 z=SSe5uN%j_|L*WFqI~92R%>^ysj|1hUqHOh!(4qEZrUtslc~RhJb_Jmf^tIrg17V! zDVgd64=~=6wwT_BNLiD;F4mUp{xR^3;}XhMoR+e}aD+*lU)tc-1^sMJ*X7382BklT zjsp&khX!;EQLn$csJ4I2Zw0{ir+#HUvhFdyjHr8fwoc9o(3Zk_6YjhGUNhpw)_@I4 zSg|dj=ViPK`|AwCaMvw#0>(UE54k}Jquu&->06;&B|fh@*KC&-&QIE0EX$>9n;mg^ z6WrOqW!zcz)5^mxl&4moe-Y!RP8~P3aV-erCbk8Uf28Lagghyv`gYaFGJlEr2N}Cl zzsP<?@NA6knCHsV$|eubei8EklriBo!WZGje&MRMwJgG9O__4RvXB;&SH#)br>@l6 z&l@TigD6|SmaWJ&Ae60(XP&S&Swi|E@KIJVXCkt}e#XYQBO)v4`?OA2wpP{|XeB>n z?nCX*t{O1ZyIoetJ*ao!<45TD78%ntQ-BlMS!(9`Sr&S=>n_U+b=G3*6(T#nza?%< zBV&{`q+y<7TcB=O&hAPt+NiZT=tiZ7aV5m%EiRCu0nk%RhAu0=+rjTv<+rQ_qr8}; zi1;lC)|-r5R36*v;Ccr*+Cv-*OPlx|4VGEgYd!yrz95`B#>NGd9fPOa!U<#HE(n)8 z(Q#;u2Q=mnZiLOm^nNVIJ^|-JecuZ`y4!G6HmM%)Iw8)V;}>r$#Aoo07N5V@8?f8m z#UP(7<~#~1xjqZt^rYn(X^N_QXq!=<i{uSxXM5p#_9A7^+K;|-m0p?eki9G1s{xpT zrA1lDZ_XV$U1zjBIF2J6?1(0w!N9mO>Jxu+6W4}qowoySX(QH00G2%NWZwaIC)|+t zcwbj*rC0ih7PYsfo_JnY(}Cx5=7V&hy^6k(wkvXrea8sT4f}gdrJd@zJEL28W4r*Y z@JQ>-_?6YZNc`HiExqxQZ}xF4v*<d=KzFUYEidCYV8ZcdLCYY#^kulpeug*~(MDOe z73G0U^rd9t6l7w>zG9>;rDVe9d#oH)G7-SDev6=4=9ZQAPJMUjyP)x``!|r*`hufy z%l-DCzg+2cJ@EI5u0P@T%~37`d0-v)s5}rhx8QD@R@uNl3OOHRd5SzCj`JV3M}uKq z48yx1JbYz&5%IY)^bW#|7RnZ7&tyy7Ymg_b*{tK5O(;)Qd<7qbkAM;WsyrF5O`gQB z@?`0)9{8qi>?3_FgUZv2ye%)S1D2t#JW;kPy|^0^W7lDK{Z-`A4tT6TO1ml2E&O`< zYCqhe%&o{5GB=cxxwYt_R^}1tA?hFUDzEgj?yYT6<~k5gnWJoxC)|@lKgTT#fNk^j zE9a7^JGxY^$hWkfVOc{xQ<zZP2v=EMJ`>1^%8slriQcK!L85n*-@-qZP1YKD-T`iF zr_!HN?^qe}mNEmz%1S*H^X4P!AI>|mytby?y~e!7UPr#vouREJ?n*EA@h5UZy@RzS zDJR>PZ$mF%U4)zYrgc+X=4<Gt753LlX!|eqN_lY3lzWStI3LWm%`rRY62mdB>U}R0 zpap5-^QX1q?0X4Saau10q^I71{&F8y&`#iQ=Qvn(LLOnPZ`gwVdloiEM!4Y9enRi` zb{A5#4kK+m9{29l_&>SJ4R9;x5jZ}gEeIOf*RURHji=&z1znU|oiA`>fuH-SNOK;z zs5@CMy4wLG<z_qDcH-)Xh|8(o?AubnxFN9(dqO|j<Fvwsbx;Q0zm+oU_^HqG2VGsn z&2YObC=H`|Q(v&Gq|54mO5?aUoN?rLt$P3&UT<$W<ErO+Hp0Gw{021c)_m&E`K+<d zwQMo&8u~Zv^Xs-NoKx*rd8hoC{t?{@fBWWwjImXQ*BxRQ%ftQ|?eJFmwQsilfwnfz zHcC9PE>}No<6E^Y+quhQ&>0c;4dKmoHMF_RFx(lq-@=>s1I{C?ZzWBQ?+Hyoy@M{1 zS)&X270_1ZXgBZ;ny5D<Y?x!o>Nu<`L~m(6Tobc9`43Azfo)>A7;bq9OhAjmP?yIr zz)!g#Z?kwC{-VNAHrO`-K9M!z3C>k8u3FZhn*r0!vem?+G<^g-Twl3JT%eQR1yDM( zi;ACZ#psONis1M2mR0oo`i{S$SCjsL_Wu&NTNAl^@7t8!#2=qQ>RTy?(NUGdLtYNu zCE6Nk*+$re@=Dg|MPI($Kpl@hBhg8<WYhD8`vou;@8vU3`P4R|`aPoVW?cj_nR#FE z2QmpBQg?&D(g#ZYg!v<0@K`+R_>|%eWHEC>anzJWt4rI@Qco7OZ!&tSaRoeCi(Fej zm(*F^I^-NhN|!{O)1WTdt#x=B^+g@Q{vGyGB<&Nt4eCzT?W^j}+78o%JO&RhDG!6X ziAGlAq2am~4?TTiKeFz5o=MxG`#|ykmuM?2Uw5S!woTH%m*AH%j*d}!;E(5j0N)3H zE`aZcKb|`Z>rLbw^^Y_o0elhg(zhu74xIz48dsp*(KhDyhu*<j<f?Oc3uo`1=Nul| zT(`DY%6>eyf-G>K(W^mNR>O{NLD@hvYy_O~^4||CaUagk<v;uhz;^+T_XTvN?h7bE z76wabgQOkvSw-%D*tz^i&mg>KW%zrO2<JCfQ}BQKFA>gulXXj)?Hj%I=GG4D+}Z-h z`Exq=Q^s8880Io3kiIPT0@nM0uM_@G&QoE|X#)Nt{W`bV0k_OKW6VK4KOz02U;ANu zvH9&Wq>KA|&^m@V*|&zdaR;}|(=TCOjO`Y>(C=?aV6p*>%uNyo{Olnf=%x<hhZ}P^ zu`Mrq6o7v>!@Yi8J^~)$`?ihQvXk)?%O`D_a<#aD=PauBu2QbU@vyXS%-0j{4C@{= ztc3BrB8=IKX&B)d@;j<_neYPq#n?d3xfN|4U)N*1KnG<Ae382(MDD?JmKo<JWc_uu zG|b=IYTprCN7nfl|3Jn79@hrnH<KRhk)aG>4G-=~>`(8NyR%CRzj^ok!n;2>f3Wev z`GY&KU*{>TK@_n+8gM(8|8x>-AVt(Ib)wAsV$Ol%bI$c+?WN&};Pkv9-}~V=*&%&W zU*JLB>K6OIJq+7E=CPGm2Dfqz#Lr{*S9&E~S#?DTxW||_o(td5cPGLMIxkDvx+YG* z$b0~Jeg<yralKYONuS6)^Q+WLhC0n`=mK~$EPnFnw@^3Bu(f~94R67iV9OrY2b+BW zbwPd6U-|{yO;SNS|D{dy3+GTTzlVBRhkAJk^)m6bd6sSG^82<YjPlc`{KG!mjLb7& z3`d>uDb^3-RlcIP;Vy42JUKbKac)+5IDoJLO<&eI>mh^z7iguv@OpocaA<=~3(dDo zOE~DjJ{Fd%yaoLw;V_r+!-UiI1;f{du)#RY<D-1{#9<y6^$PY<$a;q5+kvqD1^3Bm z<XylXEv|JKUg|4>LwmzHM0ata`MQuc>NnEnv<&3Mn92t8vOL(o^@!ioF$Q-PPgA^@ z5Lhp}!wK(YFGGvOd7aPs7u$QqytN)MCuQ;gUf>Rm4z!0M#CHm=W`09P<~Pn%dO`n2 z?CEJh{r98(asGk(g81D~tV4b*)*(sz?9#rHI&a0=OBVMkwBRqFby++)Jb64Vcv|ta zwPsyAo&ww*co*?>!rg^;H=a^1>w56?;pxXSfM*clLwJVqi~x2w!peBY;GTdg<}Y$? zLlN(cb2lJ&*WlcZdA#BN_!YeMS9%Sa`wX5-&`hZA(s?`=;68>2aa*VGpqjTX;yHxp zRXit=xXrnT@&4ixo_Czvc@AMUe&c7I+x-E$s4LU^X6|@qd~RlP@2s2OSGxC(v6;!| z#%J!>Kl;o#6AtZo9RE>{ZoFIZ6ulb<y7$d63}tc%i~3nQmaO{s6uYZ85Y~wY^gP<_ z+#?eS%$GpNm&X$Smr=gGClkNA9(wS>`wGRe@#mhNoEsW?urM<|H9k5!Uf5jPSm?g9 z`_9d78z4Xa)c$9Mj1Ac+7v&>&=j`*(%#A*Y_uPzsPnZiBM(>;(pPzGgj*ZTZx;vko zoppCg=*$5hviHC<&y4Q}0MOn!ItMmA`Rv^I><Z#m4JaU%oLQ$(DE}hL82_^Bx*2bC z!+Ep^-Z?n13MT0pm&bFP`XM{~ExseK<d1prM}Ft<Tnp}Azyvi%e9<X{+0SU&i~w`P zc?>YoB{)c5qsEcG`|%hJaQ@g){Cy6O{VeXG1Ix>QW`ThFXK=SB{usv%2-7k!_Q(D; z{=Q6?{tRDG2FCmZp2lhXZNPIM9@5@|rx{Ox??u2g{uaXQXZXx-?>Ic`mjA>8`3AB$ zPW=IXiD%wTjKgmTO@#36bi;XB{fv_z5|f{Isdo;*^!KB2mGC~L@Wb$5hX0uQ$B`3s zf;*}Hc@((=*=E)MqSrl*Z>#@XUI#@v_5Ulci=ubb|9f61H7<F7MEWU@MNdyuaPFof zp#N2k2fa6Ufu;fVgWk`8hU>=E|0U-(y^Zu!>Ic1@1Mq*Ke&D{N5BRRAAGp6j8SYa5 z3HWy-ep>zi6j2x8|4{wE4wjvVzeD~1n{#(xLHa@Ue;3EO!N2vb>i-Lf>L8lsIq%P0 z@7#9CM^@uA-v?a^{<%XM5BaBVHF`6>UeCHdjeo@JT=%Z}N4@?v{$x--(R&v({>Qv7 z%vt_Noue)^{$yTJy{P=myaqp>MlDa~SDpLj5zt>yeE-ht^mQs9nRmS&jrukIed>GQ zzvTT5S?9*jCj4w@g}W2+ZN7dRZgq~j+xXXj@;?RnirO_j>UZKe>Rb8Mu*bQtgTBn1 z#y{`eGX?mI>i-$%4xqjpM$`}an^^+=%CCmsaPIj-z;E)1to;w|!P<@lz@G!2|HI-@ zY4|n#$CUpstNmHjum5@Y>@6w(-6=n4^*@D&>{a=nPWd70Rq-#R{Qp(T|8pt-Qp*1; zDgSS${HS05Q~Lf0zDszDH;BGyL^b-Kk8k`~%Kxd9e^bi;11bMD_&>yxSNvZ|#ZRN| z$g>HJucYE3EB>eSoT~D}n7DH<O^Q9}k!MEtOwNrzGrMQ@>B;F8fzzWiv*QvvF+Msr zKC@@v<oMLsY#1_iV00|>@0}Rm`?Lg19e8Tbz61N`_Ut|IEP8fk7zf3v5)u$OI=1J@ z$+>4nr}s?m-*-S#q~itQq|Y%OH;aPoncY7+?FmdrKRrIPe{%m*d!|PxXFSC8#PgoQ z1k^{2K0CjMcA3y5bi|-z2lji8#36B6o|<}odIF?R`oel|4DY>rrw+`HgCqOr4m>*} zn0@%{+~`c0Y-)1<_?|h>15Nqt%yX%rXAY!8#`k;H_$0#7*~w?7r##6)DD16iRLctJ znQ<=~38)ac*H?;`Onh;{#J6{1bOuEq8=p_$C2T)<D?$54_m1z06NxWo)$G)PxrA}z ziy_4q^EmdYq$H@H8lT&vRV;zE{G(&fjqcy8%mBRE<CM+W@tNl)_rm0)hlw>n{1D4; z%%GvLjLL*0Xl#7%fwA#DPd-nBm8n-m%}kANt{Zcg#7rGH@bt6OCjVj-`xcWlijdl{ zu^_uyw_|wEuDO}<(P#GT8Xtc;@IH=~yTdoz1crgTCJsR4lCWLW0Ew3%kL}wxJ08Mp z-wz(_nBkBmf!sbnIp@Rnk)_Y<0U1+M2lhJkdJiJ@PCsv9`)0;N6hjAQ9RM`5huDw? zp$@?B$H%_`v0`pv=!4WULkA}J`;v!I+r|X?k!PoNOoqZZH99*B%Jve~gO5PRJUadj zx&hcf`5ax3Jv%4O?jcnEgAW{-C#@5cPfbi8_{Lp~2biJMsxTQ5ynt4b*)ugcI|tpt z8kNfRL%ltFNdvLY&OQ4ifT0@MY-T6F3Bd`2rzhvfr;>1Kj3W8MN)vr*^$hyT`__B? zp7|!aZyoz&ew6m8hNG|lL4|36-C*zy7cniY;n|TSJPX?+4nK?WuEC%mwD86}Y&s2Z z98A(SPC3`B;p<@s^{G4GkJ(Li-+=!60dv3M+=J@A@x275wL5{isRWZ;VQ!jB+@D5T z!}IC46FfJU6PTM12X6F(hUezD5;v!OExdg`aHH%N{+X7*{XtURTiTNH-ujP}|Df^K zpH=?D{r$+-%3cH>b8iBljX#@EN87cGomuC0n7h-ths=E>p`r6q;_d?cfWmABPIKRV zJaKoo!=_f4d*L=3N<XPIpTNAwi%K)yKOcm{J{DO*_|_d7eg^I@YB=3r4Z?po3GW3B zme=+`PPPYfvZFQO!$XU(?Ul}l&L!@F_Y#<gcPBh~)Fph_1v)IRFFlDdfwqM&?SmUU z;_pkSk3q%%)g_D*)cv&+NnT$I^4;B$gzpCZM%!-C|EQ+@;a3xR_~FZmJnSht_n5-$ zJ(SQt2Kp`Eu{RR;KJaQt;rCrg+)ts9Y}Xt!JoUKet++>=dtBicx)T}}CK4JJK#$4T z!E%z<!P9~J?IbPKM%;cE+rclzzj!#o<L04vVDrlS+M;*M92;O5F7s?hy<6tmz}w8H zAycmb`I5TNzzx1h_$9bcdN=3b9N;AUJlv<$4SqP#%y7=lIq*%~#0gw<bFR*vRrdni z=hVFjH*g6I>cIh*xRJlRsBYx%-hvzS%h>a6@BZQv!rxIh-tJxRmifL9y<5h1h+<mK z^+j3l<`|Im)P!)(>qRKrKY*LRs9VEZ;V!AW2=|b>`{ADOcsMqU=DnM9dJ)RTyg0^< z4tqDpv(XXn<{V#i6t^~5Uf|ag=02`4uL0(Sckewp_x$vD_g!}$_(H+|Hs5v6J@?$T z<(|^Lg~B~un-O?d7h^Veb=}+D4d2~cx=I3CUjM@O!5tCFv0o%}OF_UFTO<mU<5zTf z*L>{OtGZ?wVa+hoHAC)Uh$c|jLs&z=JbN^ubJJt+V@@7^%v~>Th%Up=J2qtAdGQyb zi2-;2|42W=J4>I9%2+4qC@o@*2WzGSC@ANw{hYbS@zSQ~3h<S`un4JsrJ+B_YXWII zxn72~(+-@y!G5$){g9vY2HqqM*B5LJhwBvL#{BmX)>XO|Ux+5cyPa|E%Ac*ok>T2i ztk)cFj_%<6JLtKcYk&|4>{p1&*mHCSFlTkXU-x`R?V!W26~AKZv{4ypu-_@lR(fS^ z-e7Z;-iYf1=I?-?Yn0|M0{&d!&%^KOk~Nd4;PJY1`i^PF8rl`mi*Kf8(tEB*zwF_{ z-i9T^UD@P5gd68){P(T46#N>=>lh6uFcIB=@psg31q{|AY%RrAdflsGyvm2{^Fp}n zImKQrqZ#{h9qQSawX!KHz>TxtdjGv&OJQ1`x5{I^JZG|ka&gU=c?qA=v{$e<;fam- z-VJ!P8vTIF={k_>0Z+QhC~GPo)b|+RP^WS?HP15S;cf?Ats3snc=>y6Xskqt<2p|X zaN!!Y(n|S|HEP_2wVVZ93$k^1=lCXW#nBG@C+L?o(wDD}z)g9ueHQPl-}X^_0RQ1? zS#<9KZ|ytAwS5k_AN=pxZu}Y%_MX*PBf?&adEG;B<Y&H%JI8uA%pb+Qj@Uymg*^n* zI1e?4y%h7vpLbwDH@GR)6CH4OAdGc8B{C&v=_Arkf5iJGa3-DQo>F-!1D^L4v`d{V zCiRZ+Ho);*8Q0FHD!tG#vOX8RE9pi5U=7dT7a(W(6$kbVBCpAtg+`xebXn4foQclr zM4nT)H?mRJ(7F-Ny+M$*b!Xt7rhD6ob#Is(`$O24xaQqG;MTo{a9LZf+%9#jZCLgU z_&X2$Jp$y3_v?9l@6X(zYppr>3zSRjqYUms5FX0e{>3K9iobtC?pOf-d>Zhg;?Eyi z-mS!~?X*Mh1t1S4-C|DnpughJ-zfi+{pG;7xL)qMrH+zyWVGLY@RIc>awump{27N9 z;y;WTO6p3=EZQjR9eZDWn_wDsbN}Ee!2urd8w#pl3utd_AK2%R?27~6?*J~AB}_jJ ze+zkb7*<d!y|f8CClaKOX+i#!p(>hvUArlS7c0G>!PgJ<)NX{OX+rsA&vPH*Y)`>u zk&#zir-Y#np_?dYb|(YNoo?@;EU@g}FLEts8K_VC5k95;>lOG1#4mCly$Amw{BxQ& zdEO6Q(xU0Or<L^2<6V|?C>QF!Odey;N0wpO<MTfD8}!>*Q+`X0>&l?l)~kc|&~QfZ zh<rrvd%Cb+E4iO_in37oytMNo?qcCL&PvFur?L_2=xhh8-+3nKahJ*atb--qQ|9kJ zlf5jj-(JO!_la+bcaQn|n?$x>FUlQgs#Aamv@Y>(F@r(fpl=BIXnB1xhCv$S#rwvL z_m&s-LNt*dmKXV-&g;<_#^=TRq~yLg(E8~(4&?)_LlTGjSi*P0xGyS>_cZWsC@&Yl zg*|Y2!v$TS?NarFuiHHI1NY_#zpy8R@Kt3%I_$rS_cc*wOeZic_bRTIHi!0hI*>O@ zOTFZAfo|lR10LDq0KIVp?oOX3TBKX$#_n+`LOx5-rwyk*E8n$<@O~h;`>F?N@?NfB zR{@rL?@G|g;T>2=-=yii?ZCF_c|v=L`#d{0@$L7MbD!Q6WSnKeK5};$?=0Tf!{nBF z+%~kM#~uJ(J;3WokI*1}hS*TFN#;G=1KSl&=oUEe0Q!^rp9nXka1Sb6CdP+4MZZhE zOSoc>n;I><xy=eke)xQ)z027P@-^pq>Gx})@5-fl0bDivex$W~ybjmt@88n?e#O12 zK2NcYY1?ot&;oqaHIy;zX+v3>v9}QPiC@YVy|1)N|LtMWCKG*;S6SfqvvRf{4(an- z3W<G5zv9oX0!MvjaI_uk;Uj$p$9qxg!LeKhCwEQPp-=drWh<uewIt<;iohplQ5Kt{ zj#c1jCm3A%ZrKnY+nd3q%NxS6yatypZwSZoDjdcH)qDxyWV~Sb()AX=MJ~X1c@=z@ z0jKhV@n3bmZ2|wTBybtpY+=0xaEJrGBwdDl5By?Jgnst(xiZ>0#)!p_+Ad5kDbs3m za#7#<PV!#H8o=uWmSy$2yjVh>-u|weZ`FO>pl`)}-1XY4(nVbuw^Qb)?Nizv#$NA3 zpSISxCm>gW9Ynq<t>kHI&~9z-@kinp?}!kburC%da~A6kuirWY{CTgty{^F6%-ivP z@2BvTdIh%O1o2gRargel=>5t@H-bCh@~}HvV0W~_?r5VegFE1)|A6h$BDUQC%EEr? z>qx72#UX8n+_SX<dzNXZJcT|R{ReDpw#WZZ%8UDn-$!2Uwd#X3{9PzB=(N6|O7;-0 zx;}b;b3trvku9`~&eh6`KDij+3}qy2!<~PVwp*u-$XEjO4J+SChxP}MOSIw2CfW09 zZDa}UzGUV62yJT#X|5$-m$jW&-IF2de80P7ZHGDnG_Tn2iLrcb9548BHgTa}ZzCSs z6Bq{+sK+#XDhTIT#=-}KaOzPBPjs&vWBS0)_8R(W4~G6jDgWV=|47PzJmnuq`B@(! z{+?C%v(`I-s82Z$l*e223v^kQIs>+KS#3_*v^m6Ee=7BZZ>}69J=8t04~HtfqNkSd z&O=vq;@vU2vFe`8g4~nozj=47&QDM;w|be(uzW4lTb0`!<){t%uMPT--wiJSr|2~3 zzc$fnP0(%BX#;*=JoH}&V2gn51Z)>{V7KVNbr=Is2R;N_o$wPj-{Ls-v39Yf`H}{Y z-{1czI(9LKJ6KW9iog5O+6ZlVp%*+`VjdNLFLj&hTGpS8?UByPGX)x_LE{`~ls(TV zkBk$c&!@FKbE?nhQHBNWvlc9`fH#A{H3VG4z%@epfoo8CGo-kN71s!0b^~8oc(Tvm zM~OQ-%YxUBEv$@`b1Ng==`v18yzfuwPUOP#Xfa4ncRD@Wh4F~)bo#?Vdb-o;*={U7 z-O`t%E!4f+N%c+L`?1uPU>mUWKUwk}y2n*|U7L;3IG@1zde|es{ODr#R?>lZJJU5l zf1n?RQvSivk23|su>0DnpQvlJJ&*>OWA1we{ilz=p-%iIz}oqq0(F<S*&42Z&NvO* z7Wy5Yo4|ZO+BtBlZnJ!jT!W4&$;b0U#(_b;+IHn$6FcMM0{EQX5n%EpJgD?~I}&pM z#v?mtAv_7^uT?h*ttiJK(Ec{;JeH$CxRvWKvFtK0Eu%XLx6puoj^P|*v{&6n=Iyb3 zkY<i)Dgmv?J6Cox&l}>hvSkUceW{dF+b;QG;jtUCHI(8_4sce^eo2G=5NG{|bzYD* zVyEFk`a$v_7{`UO$Nck@iB;M~-SM&7+Z+#*CZQekkSpo%{Wa;RGky_Xn+-)?N?Wq_ z1KR4@-0@g}?czA-z*$Ak*Kqxc^Q*l3(frNu_Xqxu!QUPD*Tdft`1A1dthA*kU)eq) z)-QE|@-00+c|-L`c%Pbl!xTK?{Y-6mmoNu;8gBM$bf1HpeJt;lqHGy2x+^b0SM)*# zaW5Wpz`BF@Zb#`XHhm|$1?zTKrw<k~^SEz)2<dY@<%Y{)+gNZvIjwVwVvk}ju)op^ zIFv=tq*1@xJ-qSS6L4|tB03|)hwuWz<y>kiyaVB4ucpE&kGe)$wZ_p!8i21@K^XyK z>pc#B=3)LE{KRekEd0g5Po8xyH2>r@-nK@>Hq@00<2_*mXcM(;#gkfZyRq&wtm{4l z7{9TN41&fI-X)cJ&R=!GKj8JhuBjyP?Ui0XXBX6yrR5l*8}Z#pFZc3nJK<#leL{ok zf;`q(-a$Oh<0WeYIA4Ad^Lfo!iy^PN2^-A&f35G8##a%Jb7~Ri!O5RN*tfgkCcNd( z_S#1IMSG$A)xg6|^AYLnpu8)brFR(1(B>_f-a>m|UKZa`NtIpuEY_dF)aH*LUr4<{ zE^!x2<5}QhI$Psm9ONB+E>3jF8)Z~FMhII%8-t!{LtDwPAEqr?dIzwuLqMnWpPJ5a zQg(XS|Dk;!PT|O|5eM6@;pm4OvZypB_5tU=q%XmGejDP&Hc;O5SbFFj>OcC8zmSFO zCDs?}qkuB>qs=(ftBp0SZ|_7p&Yf8vEzlD=%Ln)hNW->P5IEE=d5mxNoi^N(r>A>G z{otG{`DFDcG7NuOcE-p<hC@bpM&It8nqwIACtvJd8t{A^@FN<RNy+m*#E}n7M|~Hk zqu$-Q{GVm*lJ!PCZEz?b)+aOb^r!Is5bzls`9QcKfeUa4ZH&6V)%sM->7T6ji@q)Z z59&wOXr#WNTk6Sw$iEf*1s&Jo?H6F{39rCgu30E=qrnR6UF#F~9aH{<*DNF4CBzFa zU`Mh2SU!{kSyu>T#NyN*$_xm+$}sBy{%(FN2e@-^hq9N${)mY32i?!_6LwdP<NSJb zEYpIQ_;CK&w>??cHrucb@mRCb{Sk>?fIMefw-nHx5vF$*#&V5%7!2^Pp?thcr|!Ce z)o1OxN@!9Y{^7gGdjPcQcdaA#MOD1V9u&#|+r|xeTif7S>TYS%i#TMur1$p2p7DHf z<OT6c`@nvoY0!L5@myaAPb=_T2RPApDLgV}Q9KKZ=f*mCI)JBYjDR*|^k`ot^oX2+ z#-RUlg)($hJ^rE}9;wq0AJ=|(3jOey_QUdx641!LjPl)2eZGiqQ^4ORelJVxmrEt& zi#Pf(d3Wkt?rA_@M*918K7w`IFLQB;Jtep+Mc-C@KO}3X{UZPDcQAhasoSxWZR5K8 zCpWsU@qKWkyZFS$>#x$ixh(yo;K4kC`vUd{Ku5KJ4&GxifWCb$pm_xiN^h&a*$1;c z1$|?^uJJ=j?|Hzu9{77g9f>-pzUvS;KlkDwckH+OwZBB&tjkI|;0g96^dQ}P0_S<k zc2tu`;J>!r#y0|Z>z8||C*)2XcOCAVijIL!_Rj;5_dfK`5p;yyDUJI8WRAw<6>#mq zH{j*Ak@ZL$MCuK+^vGNV_%C^S-PBpx1Do~**RiD+=f(Z^^4jftdFcPy@7P$pgS<pq z+H@Vr^9tPZy>sJ%^#NEny$GEj?n?>kFndb!_dM#Tq<9qAJSMAa;A8egfYYJhV?RY+ zh`eHch-L0zxQ+?qx)d1HV<@+<D?@sjwq12W5RS2e;FLQsq0jLxR+K5|qisBiIgjh6 zalh}eCpL25oP7Hbd+wwk1Wna<ATk{Frt;o!NM*MOJA!>M=L4`F9ksxojYuc_Sg+0; zL!V4~c%RG$@Skm6zNdnHMyw~;^O@EPY=6{sJHP4vQyYCd4ElpE<r~^bhWs4yx+1!Q z@N8JN;pW1<hJSIr#5aaE1M>p^MgH(6-M9y*a4+!W;qL?uorWLl7*|5shThB{+=qKa za92SM+f%<0BV|%K&kR?3WlSOW8e#99FT3<J*C;#c{pY;C3d$ZWDbHIV<CN8qkGLOL z%F(7}WM3|8b~c{S?-g)<T=uP5+Zay1_rSOe+oJ7B8pfS{2RA}50~g|?FED(1M=1Nh zJmZG3(Yw-1J6U*4KF0f%5Z(fRw~S3sEDxX@oRcE|M-b=dXNwVal+?%OK1aNrLM!!w z)_J;44sORC5+A8f+<D~JMcm$24rN+-`q!)<;4G3}l&gq5ity7O$DTW}Bdo7!M_f(a zTiwpT_kPmWYTGlwGk`oqk8qC+WFl8azmn2#96$8Iev`RBl^?nV7Jc?aoj&_oW9J^^ z&9Uftl((dA_6ObS{t#~RS^6;8gzVQT6XE!}BZy}|Z}%=qKZ*W<GSkEM3mVC{o>ads zag|M?L%GisW1qM_p_iIJ4DgG6X|fyi2ZI3&b$(SI)cMpefUz;@(EwiO?4kwabzZ_f zt<qlx`WF3fG^o6%Tw9sge^lj{#@+Wyv!`!09{B!B><QHCYII<{A#INBm2yg%3Gt`t zz8~<NplJ|v$~+Us8&ZDwWsfJvACx)ZSqNxfL%DJuezkHTuDWiQQKxc0F8d(3bM4Gq z@?8NN%0binfI(k}dZexA^K>Y~U}Yo9^8&_99XsWFZh#5L@NC1yFD!B%p=tOUIJ(z> zqpcPW<lhC`DGS?)a}0IzU-z!c57#HtdoZny)ovq!e4xw)&>(H4??gin+)|I$E>KpE z-zo2f%>^0nE3B-67AQC5V<6l60Z%=|xb%3Ra|e_k#?=__|G_8NzC3?3Z`7dWe%KEu z5pLyMgIukX{K7sT_#yXKFA_h>M0>f0u4t5amJhN;9$B7d`xb&RvW&f<lV~rrRWR?W z<K%ArE?}+o&OnwLiC=I)z9|#Qxq(EEYmSRkyuTCt9jc2<>wRkh>)?}+dz?Fg>_iFA zMHg^CI`u8>@fP4R-E>V^3Sd|0O^d5;zhRrqmIcPzB;VkBz+)S$r+Hjj8;={#0iWRb zh&&F@Jc!Om`lG<5_ws#s6g;fAFOhn(jj~5QiGDczPKMdew3o+#Pv(K4j|6^k15TLL zsi$qPG>})YlSO}ZB9Ct9tv0OdI(73~%-q99J>qPPR9}~5PNndb0(^9b_@Xu7n@Hj7 z25oE?txs%hxsNt|Oe^;(S@`V;Pw399A)j0-AMVMnl}`z4<Mr}sxOP4fb&k~!$DysD znfnTi=X4v7y6qmbs<|=fHTF@!qy0y;8*ZD6tHKH0kyZW(Uh#Xrl-7uwd`ak4T7f5* z!kbfmcdt!O+#6LiCwRHfgR*DzV&9s`Uui9PF>i7lZKzy!VmFNFdr02{`tH+rN#9-i zF6z6W?|N;q2lU130myGn=~kJ;T6JHI_RXw^g0|D#7Z%-m=;u-pmIqC;4oZ96+9%@a zmU&ai490d*Hb}#>c--6FhIb?0+>g$E;Isp1Yui3%?q}*!|EtvL@E5#4x}bjQ_ZS{y zTaJbE2n%V>5qB!A8Rh6fn9<o^>BU&x-yK_k-IB-Nh@7m+RNF5cr?UK(u5YdBkf!At zYuKlBPH`A>iYvbVf-_zHz`?cIBI<_aBrl4{zfbkEgP-N-JGe2^$~X;Y9Tv9~yqyR= zPX5^X6vrqX1`C}{9a9X)Bv{vB9T+@q@^<*!Q})OXj0Y|-9QMdfc+0vC=K0@%4%c&I z*%Ia(J_h~;{dIIaz+I@M@($uw&=tgyCe|<eeU1ZPgF8*%(<-;5uMzP|AIhH4Hvsw? zL;4^$b3s0<(Wi5a4N@oMO)XvqxP*_DUg4#!aSbBx9Cbh#jyaaHr1LmeqoD-bt+=HZ z`!?<Sbjf^TH`^R|;N`-%P2(G7$ohDUdoq*<k?+7J=DN-~hJ$}x*RlF#zZ;*Agqyg8 z_Z&yjuX<oLx@~RciopAFnvL47_7my$`*U8FH4C~wvF+t(%F<MPen!`B)n9C{9{{H1 zGX>Yt1KwiY8D*3CoIJwwN*{T_c0wJ;dGOP4Co<&E(^btqaUKNx<X9_bG9$P^r^Zos zS}9-LXAth~VID}!{Xr$f^-$knt?)<mJfyW-(r5hBak<u?=Ml%c7t1IU-qU;oK0QAr z-}}P)DPaZ!d~2u=H-<Fz`XZsRu8f1eus*h(_{+1a;?llC_2UrmW-%X`{+4mgeX`j5 zkY^pRpDry$UC4*yp<JNvj;8!0DgQ*ue<|f(LLb^zho-kwXRkPyqw<8gOXz}TcSPli zZ7U9|pxwcy*&XWJApV0IX+F?2=j)_7S0l|iO>?Yvny7PSny6FLd{~tReBQbI@BcCQ zQE#u)JIap^^kG%s{KL8A7W84Qz{@^c_S#my9=!^;Uqju1Iel&WlBd5@fPH?%wyd&I z_$c+ja}BBo*jAXA=sD~GPx6H>Na=vJwEID8*Q75Pe|86XoQ%sB<iT=S8oWCRqhoZo zccX8K;nX8IlP>dYTK;-`kN2429JuH)U#3X*hf{u2-}|b9XB(>YO1eDuDIdaK+`|}e z9Dz-IRQKXK-HXe1$$iRFf7qwYGabhOdmOMQU^C0!<CoUK*75t4{h8eflnZn4nA4T| z(6X$VreECXUZrfjz6otSk%d*$11_qUkIHD(o_*0HkW26(e{j>zdGvE9f#Y1<m+IXZ zVg7Ywv96wy{->Nh1D#KK6uB`PYvH<c|AD!&@qKRk!0g=Y-kHhixjT4!+$>n&re|^M z9^Q|SKlSX?=!~12d3K!lk}wYUB+pJB*zX=aFo!GJa68hoQ&W%Xy~#U9pP8I`-uu2h zj_bPSaD&U-=+xxiZTp|X#dnjlxU_40Y-n<B?*wr@flKOUc+VH^9GjdY)*x(nVsh`( z`^Rxhm)o&xSaRQiyZS7zp;6p8=7Sx>)#-5a+JUFXzdSiMHzDB<@b)nL2=mA&E;EL2 z`+nRKhx-Q^{vfXXLK^sH-RwSIVkSRUMFXBj@5REIIg)oDoFPoM1`MjA3I<nWulQjp zs0s#GXRr8`Q!u>7JN+Y1Nl!*2a3%MOA8JHkB8}m_r|I7z1cZ1#Z3qLv<0%;4kDC7B zUK^n$j*1-#<Y_ob0#1g>?{W>A&mx8}nmp>PLGy(a%pEmg-clHrjn3UQ@_H8$tn(&9 z@K*!oJp>a5HxaZC5vIoPLxd^JEx8);2#Of4Fn9FVfoV-(zW-=#m}`fA|E)v2?ifZR zW+P!kK$2Z^qx;83XU4*|uzh}dd}b~Qd3e`jgQIhk`!^>+(vJEkae3d|ff-zO>z>|! z;2UhWusTnoM=9VQI6mOZ1K{O@9e4)i(!4vyCif!aK;P^GCGnl>LAcyFTI*hRl3(b? zmCG(Wg$H?L(VDX(c)*+NZahnPC{yyA1H6Dcxfiwzaqotb<lOabc#!r%$Z7`hFyZAc ztZWOGxZ%A16z<UK#B&MvLLV2T^4H4x4SpO7+)#3VukLGq@PnX$)(mb&n7QG60=#bQ zh68OuILkOP?l$#nTk8i8tA5rz8P0ZaEx6Qu?ZnqO9AGq>HY3d3aDMeN>U9AQ(#N)D z^xY4)(E#Vei}?E-9{X8b>b~}ee+dAs286f4;rd@I17jclpYZo(y7Xsod<SZ9=X)Rv zvgS76xdRXBqrVxC@&qpT5AbAPr%Qi^&;0g|!~dH1wHqF0uDXdq*%lB@+-NVor16;g ziwHvfHMFU}gcH^8B56VW4*?$SCbIP43ENiFdm2CP#U)OU?w4)S&1?LR`}XM!-_Q6q z>5gmsFM?eIfH!>qgS123S)=j4;oEO~Km0}CmYv=|?tWL>wcZ!*{v7_dL9gZ)L2lUA z8}c4s^clppqY5vA8Q@QJyYB;{H#EM_IqLhS!|LCKYVAk$YWbr{+(CI1@uxK&D)i<8 z=s%%;SmigLfnWI>;qJ;3<UBg6@&AnzJ!|}le%0&T$Z7n)1%HQ-KBx4dE*>EME{*>l z;z!`m`uNO^URPUwna_K@9pCT1)$4Gl_nBuv%Y%bRU-tMiQ$V#F{uafz2tVo9`|>mY z(Cb#aPaQG(gM7t(EQ8<&-!i{o@emUHGOwll|19PIPRjq?l>d)X{=cmDH^emf{CFR{ z|Ea%_^52>A-<R_5O!>c-@_#+$|3=DxIOYHOls{Ge2Gqa*DZMFvH2jBD{O_gwkO%+s z>9eSVD*vZa{##T2u9P3`-~SX}Z_58@%8&Npe+vKAl>bK{PgfA8_p4`rEEWHARes;$ z<4X16?z{FpHa)(7&kkI5?dIU)EzRS4XEgnCpL*KAM{JY;T&}(*GUD0uFfW{ref_+C zoW6efdQ1|l{y2UYE)`B<#rOF5k32g*>yb&oE_~Sq<`L0}KTa(7DevN?+;Q$nkU-5L zO>!;qUVI^DM(`wHyuVqP@bvie-#9RXTjQBVIN&c`f5s1tlF)G*Atgb3F;K!+WMrU} zg!&;<?4R-1iqk)di|nUE?&C^u$z3w%t=>YkT<#tR$xZM6?sDR=OPoDqTscfUJ?lwl z3Q2CTD<TlU1hh7BWjHRg7ixn*xpLk@Cq@w?x5pE+aw-6xMrDuAt;jM)tYpmkDnPyu z^PX<rv2OQm`#ZS7%DvA_OW1+2XQ#%i?m5Q|*Sz`q5g(Ia;LX^vRP!2ah@i+z`X+6O z5ZT9F*1QMYF8NN-G70Y8j+1ZOJ0~TJ15`$1zZcQiJIIT*cj$%SL=?-LT+mI*k`PcK zOqH9nNsC>ao!m5zL3oWT(}P>id22a12C@}2x$Ha%t8sI>kmK(QS7z9y=%|DJM2Yv* z_<pM&_;5S=em6RIV2U@P>s9F{U*Uz~l%&7Oh2ma$p%1--_9=cD*b|L97S5orX{4>i zaM)0H8Vqcd80J4GFz7*JnCy!R1AU(TX@#NtD0bs3p6vgkFtBH`|Et2#eF^4*!Zb3R z^mO3;rozCT%R9GOVR(%4E_JVe1K*!f_l9$cJC8DUYk2;UbN870wZM&h<M0m?_s5W* zg@0@?aL)zq6M-A~#_(4X_jTyoE&Mvr9J|K?_mRMTI&okBfbyXe_U8`e1Kk78-K%9` z5B3A*2F)dN9}3){bBl)G0QwE)2Gon)1%KmWa!34)CllU&e7B45eE;}a?0```AO9e^ z|GgDN*q!gK#lYQ{xZ7TX4XJ6{F2H^?x5`z+71;DDS9ITma@pPPH?_l_Q}~;@6FfJ8 zo_-5Q8k6TwcP4kKe;VP&^P5q2bGN^p+_C<d*1(OlcK7;c`U5xk5QhVgxjzg1c0YTe zD{%jc)*Z@GfW2gGs^di;o<(?vwh?h3!>X5-r9<UE3%WW~{>2TN4d(klt#~?M+u!2x zXX(acFrPn?&~y7l;@<RO;=ZFT;mO^w%dL&y{Yj4#WV*ZClQ!PXvZ$`;{&oV>eJ+8y z?>9V5wgmb5R~|;(7ZTcj@JWS%EdSs>g`s;Yf#Ln~%!^~6t&e&baW7%4tGwEJK9Q5& z&P3k&P)56}9XpO=9kuNu?t<5}4<1hLf`9P0l%6w?HR`A=bQ0Z{l6%sbx6J9FTv4C8 z@s7sS4f=T>x4;a;{hGSVa3fy{pMd*)b<aV^g8veJ2<{$rABP)hBpf(0h!gi|xKFD4 zEZi5=jd$ifb-#sCO{==!g&VX=TEsW>0}ewb&L1}H*6<JE22Bj-7_wo}hjX5=;fN3C zShC?&4F~RqQ$CzyN{;)Omh*7gVej5nfP2KdAD|m~5r*?~*|NGpTXxL5IbWAm8aU1) z-$}E~x1Cit)1FiJJlyBijeN4o2bqt%sNu+yeTv{&g8MCXpN9K=b%O@hGil@azY%2? z_ffd>O51C2w|h6|5E@Y)!XVl;b}0NQxQpJ+dAmkDgyH;MW0!Yx9*=WYk0G4D#uBb; zG<T1O;h4X1(7QRm&^YAXH<a)R6s!`g{eJe%ca^&2!uG;i?q}}+?f8K@{PceI<+|&@ zy0$om^<b`h+TO?s`2BjHUmre{+JCSBSlMrYb)h9)pXDAGo>^JK+GF1Kz6zYjaT4Jz zVfdCpyyr*axDNr0lJ!(upAKLSAud-&p;lSntyxa4v$AZUEgP59)5JZT?M4&VNfF-) zSihI!m2iI$_W5ItnDo_v;~Ku)nXrUeINrzlg~bf_X%r<Kc`Y?tc!Ql|l=C>)dp1nk zxPFMVXmm{5;1)3dIqa6NVvjJt9ga0<xsQWs^AI+i@sj&9o>M+a-jz)*3tTy@%i`R> z?ETd|<Sb$f>pGz$<M()g?tsUOq}Tjd&ped!|76O4IOTtle$A(!Wl4WC8?+luy8&zR zc8z+FeRg3PS(lWvTKCFG{as@{x~OZcZ~x4%yNlQha7oX|o`<Yl0A1&`U9cT=iQk|9 zWIO4k-*|+5M2A3!>;n#DgX`?v(*z!`FJa#w&nI_nEx=mC>|D6l2KYi))-Czdy@WJg z7QXrj&ZL}$|33POCnc{z`sNGBi+49zUaj@>YF-NR>hXDPe-z(OC|X`pkDqm@L*6ee zdy<Ms<4$3J72lw<z`W3IvBx@Y7a=`8z}4r|L-q_8&a_^m99hO2PULr6%6|)R-QsC> zY!k1h;@c%2cR-WQvRh=Epu7(tyq)xi@S6*c?MCi~UtI6cX9WI^1vfIJ<u8Dy9*OgN zhzi6<I@-~ZLM9`gx7YoRde^)w>|9>%FM|%t6KOgE+NpO7URL7$`rX*V;0*3F1@|0a zx^(|ZR@%3}OP=R)0NZp)VEvuf=k0875O%@u)e!u8|9lhoa9m)%+fFpiLvFf3UuS92 zy%x%hv;(#WlviXOaGuttL8eE!{T?;h(~5nasJHs^x$XnTBae800qF-G#kuY+xTWp= z_;-A}G8qVD2zoJl|G@&j4+2YB;L$dJ{I}Kw&wVw<#{%k|dr{(gvicF6DDUD1e7gYq zVIbdK_*V8mQN0g-H(p*sJM(q8eF%5PyaoRn+UGia&&2gJpREPa1)U+UQ@mi=`oFM9 z{GtyAe16d&{2j<|(EHsx@VCPMsK#$Vd$6+)r1cHp@%qZ|adFy)SqFolXC$DfT%VrC zu}ZHS0<N;ilBY@b2BAIWk^dK&|1b8sJinzu8O6T7SCN;>Xk(YOfzRUnBg$W2MjCUV zX)2&;u|7@Nw?PkewA{r*I<OzO17U5b+ZND-ev^Gr8_oe-OE$Adk?)Bh-=$UZ9YY@8 z?n%x+g4bELiKSuZeiSq<ReDiYyj6F!hW^!gkj;XYg@Be-c+l{c*5`WcjeQ^awQAYd zuf6OI$B>`sP?gJ7%HF^-o%DJml(PoP#z`&vNiFM1EqhDoU%l)Ntp6ixD|_Z`Ej#SS z=p6EI(X!{(UiQp!<o8;T-zsI#OtFlj|ElUeGmP*P2+v_3au>>a3V!UPyq3&m+L8C^ zAn#N4WiEOTI7JV`&ZBM+osPEuDsZf>yM4PqgfyyWqb0*d9fy6{6O~?f`ry+zAJps0 z2REX>Q(aL7*X!QU@K?j|L`S|~F&&9`%Zs#{J>^h8-2WQ(Q5-WwXuG*3JiKEK@8hgL zv57zHe%`w?vTu3YiL30}*K3;fbZeT!L7Eq<(|mXZaG|csYnu5W%{Qyl{N<TN<u`cb zq|U4Ks_c80a#U_l>I3&J@NA#<v93pTp6~*Cxf6ALe&_O^{s?q$fpK`(+r!+gHtbu- z-|sj6H_IQS_DQ}4+qFY&SB}4I?=Ee#Jp6Kom~{+)4*nebbL^X+;CMp&cCo?Hx3>iG zlj(TiXyIOWtv^d6=f=&}UX3=6!Pr)n4x_WB(u?tzzYD1y`3v64CK-eIbFi>;5N><; zeHr{+i^VnO$G*_`Vdr8T<tL`a+j3HV-*3s;m6%5I5;zFY@!yEiNuGfITyTamq~DLj zUY0SSg-af)6InkZ`^3vK0+*fnW}C6|I4jCoZ%;R66f)-N^W$5NS8|ZKww=p={8zv! zbbxN!?e*@FED&x>As(Ca%u22d9<DO(u61{T+}DVG)qOl0gzr5K0B?`Tod4bfY3PA% z)yMXrdZPm{9oE+1?vpZ|XzJ7O4D{VO=sVi)1=x|bY*oA4hWbu%HBoMQP$s=sO4_T@ z!nQ%#YnL)7dap$N16j;6F4lW50QMJL3H<!WHE1pZR%i~s_0$3Wv3|8I>jJvgl@QJ| zQ*66EYTuKdR`}a0y*NAN=^+iQlN;3zXL)2_IL7m1)Mera?9zI-k9v$Y8h9mjsd()h zP`20E<3Jg47X3@X{DM#8<;T7YV`(U}vJZY~gZnD;*|ga3S(G)MhG%f%G(ml};0%*1 zoy8o_JCHBz)dp|;K4a#`G@u8%i1@Vb8bvQi-FaTbdV+EcUU{03UU<QN!+&chPu{(L zyPO9yn#(C(;ht4Lw)O9(ZsaR%@byh1BgSK~ZHJq??vnVVP7Lp(r_c{Au`dEXm0#+N z0fr-u;TeSA_j4=ZSRX<&`jaehi49|C4Zybn;g!Dw&h&)W@mg2VX@%it7t-kCy&QW! zc^N5_&SBSem&nP>qBE>4KCZf~Rd_<$&;|!$o5g5L_#<?(4Iz#2rfzwB8qWjJi@K$5 zOqVAIo>G^0@(o^g>6>Nd`MM(BQVz)UZk1`wpSZRjH#$>x&+ON<5!3bn2W15JA{~Z| z%DF<6$FV$+QTEL?*Vh5ODvz0C%uCypghA&r-ujE8$0_n-^1NH<LOr4H4f|I4o&@gx z@%^#yUwzy0?SOhiU?3B7;#S^hKV{=Q=$K3h8@FxnaZdXu#?wBItUadhWLA4X^21q( zlYrMUM|6t};~a%|3*RsYr}QnZcXJ0f!rnz5=`#re<7JR(F+ZsH4+6)}dD}_q478r4 zEn$3TA1!=NcyQ8aM?LZGvzArvA`+a?B|$mdWuq7TWVqE2>2BLvKp(d;I-)w4I@#(O z<H-2iS3?r6Z7wyxDY{AV95Xy9&xrv4lIl2~CuUz@a>G2X26}ibNOLm4HB@#Yo2%Q8 z=v#L#|Hc1~JXVK89jpB|0{+)J*H&{*J)qlcD{1S%aR~L6MLWxdFwBE(i*<`|Svy$5 zz1pIOysojjAm7DKg+7;fl}k&5b`714wxasj(vkO;?#UW>WzN!U)jDN8ueMbW?CNf{ ztBbH*JAu2XwhPM}%7&GfG8Dt8ekcHzZS+%kQ-|`t8J@S}U2U}0`Xx-;w3f3|)1sY3 zZ-SQ{TMMP%9o_iTTMiZme)izT+ol)XRXhVj;3eC%;pACq@?7-hg1dKG{f1A*Fvyd6 z^E+mkuW-~$GG7mxI6f*YG~YW-9BMxdsJ`V~(E!4&kMMQCvLvuJCrnt{`b{h|X;gX5 z@eO!8D=K{o<6+AccP{_c&(WUJ`YF|^pCzrIG1Sj)tsl8x8g}Lo?95@{9}McL8~$$P zC+#ZfFYqoQd;sN@`wI!9^}%}Pd4JXoZIEuOFRhy)(YwiaJWH7Kxd6B!O+y(N(tG?^ zKa>-hZ$y9eb+&EfP5seDe30*2>pksQ?`aS80PTo%z{S3g?W$-vE1TR>4cKD}`&?y@ z-0?Sb@atcBbHRNT`a8ZSt`lYFIs?lK_wq97;d$x>*EBbbJLuGgV%$~o&+aSY9dv;4 ze4*|@9CU0pMaQDYEA+0&gJsjZ@mAmu?#5%>Uxj&-u7evz<{0;37^ipR6;O8a7xA^r zCwZ@-eAFM{4`o2=54>jE;(6shjPb4CMg3=3{|2)}n1Ig%A~&dK(h8X#15V0>-Hnw6 zolOhw7PeK&PDiEJw=wXP`I(%EO(wV!o;$*CDfm7T_xSSuS*Z`u$~e?_^rogMXy0se z-!eAEPKvM`*)To&S*}^N(MF)nj{7EB>)7lj19_w`u^nIz?6lybet=#<**I=KYWTqi zSLvnR5_x1fc~>2Eh1Z8Fi^Kk0yYwr1PciG2<8aE9@h}HmdBv3{Uc_nnmPtn|<y-mN zqUl>0E^YSZ<texaw0=$)KPl4;hhOe5gMSQutB)b+gIGRIi}(q;w-%n99NjoKOMD0$ zK$y{))&5HILR=^ZE)~bVtX{ez^9krG(64efk;2o#xXlI4%gdmn-EVd{crM>!C_9mv zlIq_w>S)cjfUU194b-!&6X}ojtZKFd8z^lTBFxTB*F86^`hLY(*dC<qDo5{NEKa%c zV@N+Q)K-i3EX4A<40fX3hn*Z52N#qn_D4wA_c@1m1`mQH{DT|eq94z?o3K3u@7zsD zh4=cK_5(-O<?*!KG{F=e7f-R=gmehc#qlk1d<()DN1Qq0!IQ^xou+3RiC2FNk8r`K z;m43h;4r8mo_;(#@C@MjBA!7!kK!4^0glJ<?7}k)|CjI{!TYOtcEkO{c$e`!3HKPD zaXkC*JcY0c<T-_B8qXY_d4w<Ey@<F&czzPkVes+Awib89m(aC2_p!IU`?@)B>Rk;_ zy`r+634Y+f)L6kE?saq%P`z*!25Oz(`!aS5ANa;>VFy;bxQ_-qvS)n;(P@amc|4c! zobqA(=iVJxlyJJF<{56k!W(cM$Af)7ZpoV~*I$6U&hOL6BmCV2+^C7aSLgO_g(Sv5 zbEnSjb)JRPPXKB?9&(m&XesG)d$*Pl7XAp!ANifb(?E}Nb>Z$sWKeU2%aoZye@5SC z_{|OHX4H#&3lHgQ#AEc`54X_(=jT}WpTlE6i%Xr```rHwfK~&-+u&}1Tg$-M&;2|6 zt>N6>Z76#~8L;RL-K}^?AGHOnun^xy@VMa#gxSyXHNU;%@W0)2d#)9T$v>>NOZj=; zoBq4-unxP`KLB?bPeJ{A;9d;;&%(WgN6&e=m*8eQHGKaR?(=w#Yx>`Wo4?CwvIug& zO*iUZ&yl&`0bjtc_2)JI&s6`|IXKh_^^lwP@e$4;iB3{{5oR8uGUAIqzX<2lqQmg( zxwdE!`v@<<Z|CT~>UBfY+lp^O+P!mE)ISgHUj&XN^<xH>x}tGW{g5-7r!hU>0xZjK z`TYy{-+^EG5#b!3=%zuR9x?hu!J5p?H~cwGE5Q^Z`2Rv)`1Ae@!2D1B*dJWw|9r~N zb|OE8-<9%Dr2NmN{4b{b|8>g$%PIe<l>bc1|C=fQZ>9Wir~H3e?QcMNqYn_K=fE0n zOU0x9{ZGoPn>6>bmwD!!dnU%^?AN}@@hO~rLKx1btO%PPzx%E_p|d!eh1)6iBnYO* z_sq=B?8SMpnL454`{!n!uN5~sH@YVsi5;b>tQjIFmd1F>EcWpfoA>cN8jm%NO-%`) zgz^RtoN=0*OME=Gg`lzV`Bd0`9D53arbcIH_uyE6D#)R)_J`l(tXb@n!)Ww{r`KY? z9dBa*51;vyK+@-<TqN7G-$Lwc4fFSPXGg!Jx>$TBQn26%(Bn8ZH#$4MV}_@|Qb(Qi zl+dp6@u#a&jE?Q_f{>gV+CD!wGrD)qqX~j}bSoW*6I8n<4$RCAZV#~H0+Ya(986M@ z{E@HJ=_BOx$g@-Zlg}~bgO8x*aEi(f9O;oH(jq4V_dGI=vv+%ES;*Pv_s>m?&+=3u zZezhUETdC6<CR2@&pd~#S@whnm6WM}^Rr6Oleezdrgqf1?=$yni96~*KdRx;1JI#3 zH^9Cj+5tEFNxGq*I}|2^v<9Df7w0B4ya77O!W&*xJV@T~(~5`gV+o!H*p4y$pDR52 z{D%Lm@NhGG%a?oJ4L*AUrjO>EeZ#rWn;W#o?#qe0u?=01!ZaRnZlk)_bvt*vx#tr6 z>y9P(*FiTL&UIH3cT;DArzuF=^s`zP#5euCmWA%6q%1k;L*a87-O23=Lw8pIb3CCZ z_p1uO2$*jxJl*FK_-3e5<4-f}1;M`r69+b()Fa(J0X%pZ!xJa#9XOkRBf;Mcej5MR z=M(t#cP9APGcQ&Y@UJfg@B#hn1Nzqo^sf)--;hi2Zy--d4{&Z^UW$JM>dWZaa43NP zWraTl_-`pZ-FRa7_maA9X;0+8<((w_M(|{l%EQM|_D*%Tjs<R%%fdhLX`e4`nNNJ5 z&sW^wgPp1RWFf)-$%W)R%_l*do$dSN<s{!vY1yMAn9A0&i+e`%f^2>Y{XcmU(fy)^ zgIAx@wieN?bsC+7TkDkWHsH1Mg0~DM`4+$vJ0n;CUOT^7cvJC%PlbQ4`O=NY&Jjl7 z566BSlSWhCO?xn!R`<JbgGW455|#0w?1ZO{76FfhpN1Q7;yw@eWp!VI`--}m&L!cQ zHpTM>-bL@`6nLi7yJ=Hq`n=if@XPe$%og$$H}WP8v>P)c-c6e_v)jAddZzd8OAd|{ z3Wd#g-E+@9cWt?+^aF*$Jzbj-a+e$x+1%B2Z+AC*h`$%1g*BZWdGH+}qg(#tvm=;m zkM|gHt_MWEig_hjx3W7pIp>2gtXY5Xqtngq3GdGJfZ5;Dxmk^W@7svK+sC)uhxiNC z@!!SVa1-}409WB&&evAO`#C{b^U*m$><yCnJ<d1rTma_>Ik%?Y=~*7(zLjh36+)TH zOwTzimg%@JkKl{vnOEj5@jun;*Ruk8u7U=mhx6=0k9?=+<>eD=q~~NEdXjI#)TXB) zMUO8-jdE3b<$lM^Pi<WB{U4^ur0|f>{Kklti)#^9t_Iu#I9#J#Z|MA8&F{D(k2e%w z5AWk!Y?AqL?jbLg7OU3ZImcP>bIX|DMSKrLv<om;1ExIMI(-a>^&8o<g}dKRA+3BH ztAdu)<EHnP-9GtdEA|C+OPpWJ&i1&b<uYVR=lG>;Ixn2nyos{`ICo1rPji+sgZXmq zXKDrAvd86M{cmQ<cd}k8y0ca$rL_-uvk0?&NoUDl<j3_!&YyGNxRtvF<>vbFigNe8 zlHoi%>yLBlEJHZwE&G_T_RV}+d^wk2lRW+0a4OG?<<GSz(t)|w=se)DR$aKa(#!UO z`zihR*z*i$`;)jA5XU<+vBzf--#BAl*eCSvinQPz?q`(y8!J!AoHM__l~Z}hzqH47 zyoC1q66W=he^)v^XvpJ^(&&kepa*%%-S=p}z?sEf1>V1&m%AP@V%EDMv$B@{b>C(& z4_{5UmZ^gI_ljRX>qH)1*TMn*Q14L3)#8nWuf`j!DN&}X(|WnArqB3Fo<HSj7k=*n zzt_k7#-79xS*rxkDYMOx73veIAJ!w>RkFbK<jsZUWx{y5xXN~J_YITp)pF$JC97#v zmj3Dz^2wDUE0h<wyXi(+Yu{(tMr`jt!?zT)UbH>v`olo2Is9X{F0bWIcq!X3j0J78 z1IP#KsZHOcA8oBgbO*=-eR*{krS8C6tS98qw!{d~{e4_txQzDAb?UaQpciMjCgMF$ z{>-4%k>>XX)<Wew6wsH8ew|46mC1KsUf(3&i@JgRTAla|(%-mBJl9%3zDoQ$#J8>z zPgyJo-%*F42j>QSogw^M-!ZSXKcbB`0oLCOSby)pKF{JySf4}v^V|nzk9vdq^IL#l z`t(XKWRH3S`B%UXg!5i(?pJ&VZt2?*PC7mO3xH4V-!)yrwaZ=11N5JZVXJYoUIZWH zN%rZo4o&{7egR{95<;BQb#Rg{*;4`CLE3ATiTbsuYk+ZEAS`tN`BCYW^7-}T6IU-I zuG8v7@mgKf+Y7;Si=DRj+v*_Ux9eekReCz%x7@o8ezShK{?}21HvMML@)_dPcG;D- zqqKjox?j3_JuqrVdC6DWRDnFm+GwsFZ4kV`9uzMRs3*w_?J(}wzpyB>A+!=lNGseb zFA@7Xzi$P5@X-dKOYO|;^6_fF*f6Mz<>fGcwu7Lo_0}X4o95SDAL^iA>p=E9Gd;>% z1TEH&%bLH2vkk~T-^xzu{{;s9)R`^l-=Jf<AfNF!NJ?k%jY|FY;m+j`e?sMzHjAFE z$X-Djp8Y7LWV$nexd?Y>q7Sp@y+786g*rH>19?8B7XCtjf3br8vB#Bux9om;3%+Uj z$>HV?eiZQ{+j<U}dy{xR>L_5DR(OE#=eE(Wd9;;qE|7Z-YS~W8Q!BTeJ3ts^<OJ}c zd~tdD;BVJ@#eOU~gHzgC5WRgorMF{VqF?BT{q^1|X%E#)i!-xFC_7~*`oPXAw4-e7 zL$!@B@1`4cew*^l{LBy1XiF2ey+&PzG@5<_FB_OXEVuD7Eeoxy)MG1fC{HsNE2u~K z3*cQd_L>dB%`-Q4mR##Fa{+LzL7hdb)L9E~82)*d4egq?D`_&@H7*})*WJKv<+zqS zP-hu#%6kve>RyznUE3SvBYF*SRq~+w6vUoIoY(y)<nH%8{JzY7k599g+vu$TN5>1_ zk$tZD3iQ^&jhUDi>HV~NK2>Rqj)piWmq_3K8Q7<=TZ{S~)-1n$%zgu7$!q{Ga;#%h z>=`q?=0cnv25H&Xf$kjAd;86ojs6;Ca~}rzSlM!wYnP4qq->C7?1OTrLp-(02U|R+ zeIo3EYqgiFgIb4>bvIIWVowg~dqCfP`Y!3aOW#F(7xdkxZ%)L}F7<5{wgBX@2!9mo zZ6C(*mW7E7udqv3p2ezV8_C{L#m)Z7_G+?EFdatxVozwFATZh|Q2%mVS+ws`p-;#r zeZrsHxf$Z-_ll@jD8m>VW=<e&8`Gxx2I?7sMSGiu8@92xm64Wl>W>5$XvcUrGn9l& zUp(mjvCd_it(6yTv#C|$6mN{DqZX|0#Urko`B*$?ih1Daj*eG)g&%6KMeKXx^1}Y< zM0}yged}9g_pSfV_g$B-0>;~zC*-@uv|Wch+=UBecj4c9xc9ytz)>#~PUH@-c`e6U z<^zm2>a&pkK9rYwM`b4JfXs*;#kP&OG33MgG8?&tHnPYH_Uy5*!nvy7R-1wHVYZ;y zT3ZURv!E+rYl^&3cEAtPkhW3%c<{vXG34pnO+qJicT6Ah4##$#Ngh#0m{!|TJ-c=- z_7%%r%f6ycs%Kwyp-#k>3EEOFX-ogl_bacY4FqioeMkfEt0=)fA>Xavss&dhTmaJr zdb$GJgl!~@r=DS*RfU<~r;Xbt?O(RVb5_R14Ux==VIQZrsW6wa*c@U1Dc+D3j;W{* zG~JO3bUJuI8-smoc9nj+73pRERP_mXkTHGCb~uOluv{!B?ClnQkGhrpqvlg>i`*i* zw{xwqgwyd-9(XCIexBjP@*%i&em6Rb^6A`^^g$tAr62ztX^Yi%70xMr`E1L5n6E^C zl)?T`KZfAA3uWv6sA&RPNF($AHhHn77x>Z73x25^KNbc|TrRpXFWk`gvV5c4%5j|G z#!up4TV34X&mp6}r&h!(ey#g%KZheWrf(0MBDQVdEZnPoGr#4?ejfKVpx*Yl)`R+e zNZKNSZis0mEO1yIl;LN+n=Q|Nx>o-xww~6J$kiJ9(pu+9WuL#|q23u(JC1#6mxi<b z50ZB6O9e*zQr^SU1KA%4+J7Nw|9@=lpSaDgVR=!mhAT{mHgg@yXzjli+&RJpFeRkN zJw9>&HkOL#Ty_Xg{So>*QhwS3alF>Gl=t;bQ5W(phw<Rc-zt8??aQ=6FP*RS%DA`F z&n3DDb}jXi+@HgC%>C$~$;Omj)Th)zi@$@gchDaN=RpA{yf;0J`bB@383R7_-#Mwr zlwA|o2kaW|H)dOkZ7lHST~Bvh7u3ZuF98diNpx{l7|Mh>a9I<eE<FYuExb<z;rWA; zV#5~^CS_(B5#D-mW5b&W!~X3|>+t%%I}sMcY%VySe`-DGcD{MA`0$$tH@YGC(TAdq zWB&Fi+Bp1i9@<vhp1_?dl<U|1xFDR1rGDX@QY-RlMOx0=;7*@q_A62r$UXbLkl!se z_|3MXV-<J7_y?X)*I+(T$}IYf`8=@^{ulTyBL7WU)fc3FRoGv|w^vhTNz?E9trN>f zfNKzW!LFg55|M}W>lh-UZ1e6Z_D5!`=K(`K)Kf<N<DKJM;c@{S&&1bEtGa0fy0+H- z_qEJFOC6w2&Y@1o({@=Oc}V7a{5sTx%=genlsRS7M`#CuKKcVYUrv0jYzL5Qhcv9$ zT635R6H(5g=i~Ot^y-gzHsgZ#$L)Y~PHjElQ`aKqUw^I2#)<QW?1Qh-=>Yb%da%f2 zI_5p|_Un|iD}{C&C+}Royjg9oI3J|#5&Due)PZeDn*a1yHPW<Hm(fvAg!xkbLmdBn zB@TBfm8L(H<|ix-%Jv#ya}~%UzAx5_wI+V2nBONZ=sHoit~Hf(tx5Yx*B7MgK)NE* zbt0XuFZFA>0Zk{m9d^kO^8D+KaUm}%(_M9B`nb;FPT?-RGUhYKbUt%LbpYGl2xPef zZ#$F1KDVIpo%*&uxLf_~`#QE1f^o(RZp6!3)Vg!|_y48xGq9s0)+5#iWDP!?=lDRv zy$u8%<k#qR9^^5|ChNPMdIDuk#~(m^|0?khBc5femwpoCqIty2+!FBHoe1H%C!u+< z+3O}dD~C2q+B|M=pNZ}Y;tv3~u17_j%hdHK8S7DIjbEK;E2a+uez`+J_ey?Etx}!` zVw!66>q(A_Q{|O!s;Z7R8cUD?>JFn3_jvrLKUrC)?noUP=T@PSeeLin@sA?DdzJY8 zh;I$!L2D_XbqKU>|Nk+q)~3vUp>1*=<!MWeE4qXB#lANkZ|&92{?21;(^eDC%Yv-E zATP0T+0IhqBsojVaZ(K&5?AqYa@N%B62hum^49SV>reYEe-{J3eOpF7QT95ivy2Xe zu}|nRe3f3Af2OTmuztZ{Ni$%rZ8E<i`%cJ1o^JGEQxfmnBkzo`ITi3Y;&^5y50y87 zC608wKMULJ?M=knTH+<i2Wi0*(qZHA0^O)LSr67dLy0~20&Id`Kt8|b=g0wTb3)XO zbn`pOW2$3m(+pI4kp}&d*pOZqIMs~>z_y3+$oCGmW6d``*CX@8upLin8mUL}2>Im7 zun~|?jk>&g0pTo@%qc1EqV_uz(3#$rS~+K$%=N5o9gVgC*AQ^G!T<SBwEePwk~;2t zW!-B@{JUSN5q}J@(ifvn&YBzaow4(f_(reWx%__%?&Ij=ux^Mo8$aI;UdsFq^T)U) zvvc{+Oy7kxP|qlhzyF6dXy6!5<NxpzHR5TTYW#cOTN&T@UPu$<I-rTP|Je`KNOO*5 zMLkO2fqDw>L29>pL%Yrbj{bk7x;`g7@-p?WjSt9^G934pWt?v|KX8zK-aYZ()}Vtn zRgc;L6FZl``|AoLdO_Q18Mtg8UT6ahNVsoLyd#k1?x@rLg*MQ_KET>P`q%75(ixPO za}y@lI-eL7HiJKeQy#EwF^%zz<5$TW<JW85XJk0YFO|_O%VG9H0d*oe{uK6nl+eEL z=9qx<#`s>ev^&z$Ls}rG7xexj^I!D)OEAvlof!V!BbmE-eUprPjMsBJm*07!2Cw^o zTX;>|1^TsdYhmBM(T)3_!ulWXn)qaV*F*|;27IGVhJKKH40vxqH^=2$3r{>Ty77rG zF}>YWkxm=Pz@eSXzw<9@&@~*=HQYQ>e4@a4D~CHj@Wx)Ht!2~)?lkCf|M2r$3->jT zZv3HN@-#muG{Ze4^nq_8*NNO6MV=4W$g?BNQ_AD-B}wMO5*#Ohqp=1K%3I7&)@e}I z*LE)dhj2dL^tw;u>o+I$uY5(FNM8cIGht<c-eOyeX<CB3kXCIwtWSvp9Peb6IL^D& zx<e$zBf{Sp;No4$A?{KNx4<6U7`<t52mQQ<(Z;@s`X;8w+|&`2^`q!3^({I>^}?B* z%m0_@j(otsiwJ*7c}~4#{p^QyQx36jH`EvJB0Q&jd5dngA=us_%vlQuzpkZIq|Jf$ zQ%Iw2*)77IC*F^c{xtY9P)7Oj{+q2|Cc2G$<bJCnY14kU-X6NDJ0oqc4(kGGO?Fu~ z<gxG!>kLJ;tE8;p0d=CpRW?PPa9g<OGR=S0J=e_3^4L;{$B1kTxxn9oIr=o7^BAM9 zxSI#K3P|hMJ}@SSzg=a^WQ=``#dB{gb^ozSuh?c{=Wy>j!dW((e}kUJyc}c;ZBcjv zc$U}h$Dw-#?2^b~7W?~TUXJrqJwZCzPr-CbgXE{MZGa=4W`~Wz9q$86?Y*kU2kJ4i z`^g9LrBnM4r}>!8YrJ7QwKTGCSb4*6$OQWr;SKA@=J&wMWL*OJ<SM;hE;#=PokiYM z!}`7g?XQYACxUdw8`8}&4|!wrgYAG5dSq?m#Io7Igb{lmZIEueH?*H_owxL~CiN(A zRdHy;OQIVR+K|4pf-;eJka-7xy}Ed-);>7EQ^tj7UJqrCBh2K9b0|_iUpHt+FCee1 zANLS0X$R8AG+jg+xE>tq-r#Kg?wqy*>f<Ge7kw3xm$Ltk^$1$>@S9GZqTA#?m0v!g zOL?+V_p<IqCoFCddoZLoOfNb{Ws+{~D<ZZ5X=6B7FeKqpcc8g`*;yXr?b-TpV)vV# z<9uXDTU$^z)|<g`t)LzpX*D?7_VwV{4voH3DY&4nrGGKF)2qOpmVABRGeO+o;~{N( z-R8G(wB+q!U$b<O=?Tb0j(rjJEb6M(oOi9YxSDsnLWVk2)@+Q^fjtPH(LS5y_v_W% z=L=g3dm6ukuny8qIx(&)fgYKA04~-i+OLegnzp?nZHIeFLp-Hb(o4Mr>C1p+dyLa# zK7E+!E4|o1>DxGY)3LcA^J>=LleaoHkh|t>e223A$+mRafRl1;bA_joALYn&>nZp} z_hM|BN4U&?Y<or8x84aCkv_IZ;xU`W#`BXHdr7-hd&j~bhQ7T_c(x^$C75HJ)$y8- z^KI4A?LxX!nl6({$9YrI!gQHbevcvDyvEV)p#8>=_+dgYBkM8bi`RMB=bOZ_&z1UR z9B@!hjaR2A1B!!lp&=amsYrR&f&7XpXPtbX!aStD?@I0SE%dl&_m|z|UZf#xgTh95 z-^Fp<)&j;^lXyT6_sn2_740&UL6H@;XGUtZkFpc^di%>D<KO!|<jXT)1$+nOG|n*8 z>?_O;Go1^b+xn61U$5F1P2MXk?o5|^X$1~#nsRS(`32`Lrs8Ayft^we#yOT=+OU?n zo=#X(8Bk`*enP+Re+vj_8?ZYO+kO96btj^Yk9|3y2MmT|8Sti~)_8{FLe!n~?ZzAA zCG7}l3c;O-hR^0j!#fejKr{A8iOt8o53n7o?nE4-tN}0O-1kjhuU<ep>AxT+7Y}Zf zJ)&kOnqFiY+NEo~8<G7}8)XysBYuZ%>KgTOR_%~}*vLJ)jw5>zaXzE#=<i5-!&<YH zjb$(!ne|jeS$Q9#@K4(=<zLPTEv{Fdpsk7hmE3`dHk~~xaNq;VJ^>t*LAyth_`0~) z9^qYv4|nd;R_Pkn{V0f|J`|f_X@grwxfD7XhI3F$>mkz!Q@&Q)WGD}0Ia4Ez%uDDv z*V1H>Ps^49+BopyerVF?{h%Lnm%K+$<uAgVM$@+md$1to$v`LauEz}T0K}X3Xi`_5 zhC2)QZoG4NFCc7*c$o)ymj!Q|7MgFFmN4Xlc1nBfkobLl5a#*?ciZ%EGxj%VTHM1+ zxZReHItXx|U2t~-uI0WI9QCP`Q{j3k^TW*$p=x~8rw!Oo@wUNNK##$IUZ;CCsMm|= zmq~-^M9PZJ+sj?ZX6JFNo?e#@VW$MYwkw0JzlNM44^;M~9!lUX`;2zM<7G|kaniSQ z`8U5J@Pc39zqzpf>h!_B%>2T7Hzaz{U4K>AqP6{dyfxuqcN{Ea=7TxU3BfP<GTpjg z8Ft^jKP4NK3CaQYJ9?gLdD(82&YwV>FN2qjungZr9_W)++#x8oIAmPpS=)u&GY$C| zLz-Ic#^Oo0#b*P3Z}G(-Uhr#wVe!-fmR{OrD!wC#uiFNxo8xp|{;4BO&)WTmmM8gB z+*}Yn;?F65-BG`qF1pBld#l`IXlvemYzJ6V|K-%!dDVR!luguC`_AQmbF12SY#TP0 zG*36{AT{4a-Bu92;>+g*4sLB*vfhJspGEz5Dy-OC2&)T=b}IW=@Ls37zur3jJJ9*< zs`GQOC-Ttw)NMLXBX*wDV=BMXfHB?Zn4jiTNb&5l_APbpV$Ae|XR+<4INECQKZ`L3 z?h;(fU5EMWGf;}Sn-NbI&pJFgJaPvHP~<;`csv<ASv>3T<nUO0BknD9cp^L*JPmk| z%<-@J<M^W=@0^9*pka7hSSw&w;6NC0ue%9xOphmzr$zBxGY#?M$>WhUy9T%6Mnim2 z^vS8oA9;2>z6bHk+aG>t0AE?(_Q>}5j>KKthrj%A|L}kh#oA_n|DIjLUm4u40d~LQ zj%|-TJoptKxa~{ZAK&)S_C1mi`3ybwFmGOZ_^aFDet2a2pt>L5zU#5UCx#z>?9n|V zEKA`33jGfbY<nE}?|FRtLl5s7e!MDd`=bv&*8lLM4-pQ(HrzLI5!;X;?sp!=&eh{S zxcYxHuBpIfFxXsu&lbk;5<h(R_aweYed)=ueXiCWkV6md08FNcr+|m|YV<k%;eHIb z?9Ru`Zio7Dkdf+NAL=#&T@Gn^pG!Ahn>+AV=eOmx>WES+zSBMQ_v_BbK8m0H&<f;t zGycsD=VRbQ(-An>zQ|d|<?;N#<h>7gl-GGD`prm)0R~4&6nE^%&csoi!Hn_X%I@F_ zYcK+Y5uk#c$O(-kkZj=yP?7A)Srld(nx!e*2RFW1+KW@A*Eh?(*X_k!x68I}mv(8F zc4^n`b+feVCT_~+`f1bD?K-_AA?W^o?|I+vJM(EqA`bcU+{^QbdC$N1yyyLQ-gCb5 zo$q!{H{cilN=Myq_&@9NUmkzpJ+G|ezq<9P5}xE(FL_>?xc`hMs*Aw@KS1|&34f$- z5&n$6`vDsb0N3~8zxUwJ{#jY<&d2o=r~p}q|E%6yk)vZ^+4_Hp|2{xS|5-i$dfK<) ztRpK}hJ4(kBlOY!F|+&l9z2VpzeAq=Gklh|-!T78-uZ}I5#-;?Ad<Ll#NW&KJFe;5 zkUfm_MNI>A|1fy+_byG^osQ%)$76RoZpZLDFqU3zzYAqK{AJM@+waF;x0gNwcocuF zTK-u~d(gK;S=*n6`as_j$29$)z&iSsBbvrtKml>IX#1}MX1S&lO;C+iq~CD$6B*pc z1bUk?n#N50R?yebt?3^{({a$>sOc>j+9c8^H2vei^&I}%U4IFV=T$HL@gTSb^d^<R ziKh^{qrB;mw*OyYI^fCTNlpJ-=QD#TP5-X*pMlZyUz{&Zq_q5RoL@D5B>vg?v83Kn znS}nggPaECe-d{f!f#=3!L?7`2G0xqPUv`&Ka8C~jAv0!%O9X0Mt!9}2_2_z4hFUS zF^nyXG^a?&Gx<^cbs??tPr@$fYlCaN!!mgib>$y~f`7^XLw@j|rq9OG;D`IC<^L^~ z{@YmkAFI<1&<FR=wQsm7mWD1=mD4ZDKdt{@EIk-Y^UhQGr}gn<q$>SC$I}02Ed6`2 z^nZ<|zYt4@K12Kar&#&dA?r)X%fW#`UX7HE{B!jiVGmVl*h5u%Z7jVxmi|yI9UFh+ z)3I{MH#vwry_2)?#aQ|ORh8!DS9^j7_D*g;I6QK2^L}1k81((*fd`(P9NGDkL*v25 z1CJjJ6R15fd0>y-6Di4|-D4wu#z9=`IncL#J#GbhL@z+}i`|uo1N$a+`?-4#>>EEg zGBGhST%!punRLwr=LD{f1Qi35((~k#<0FziIy4c_8b5eo9OHS??<vfSQSb<E;~cO; zLC9`3WADgBm}Pf5a(Jw=d+#Lf_l(L%_U}0`ym$YjE@x=Zo{=%Xf0q&KoOq-_dfCeh zF2N4mDLMJ%m>V6h7<D&_vft=N(J&=9l7=boe$nbYxnC5~o_Bj_n3CH=neuNB4byge zC^I&VJvlxqcZh~;L1by%dNRx;850=C-eJkI3q=`)k}OR-PU$U}2S*UAPk;g5&7Jix z3yodgsmVtUj*R%tKeBf`z}205_CcKyp-)0Z_YLfTp7tEr|7g{Xp_Un|XP1})$?)TG zBy#U)tijy7NH^5EwR8>%n?@#?=OK(PE{&*1t$4qdg#qb3rOFO>&*{FAeS5~A<V~iK zh_GL@Xb-QL^*UQWc3{G1-uCg4{hK}t21b1|tLK9sU`}{JDof{FiTWtjWMb?9lzVIp zZo`?%o4hQQ3iBP_l!~pC@V>+3FJg+-xhnY?z?j$hFZnFyf5y7_*MND~?oe#_d94q( z-tcLyPZ;y7)o<!Yte|b1KCkt=5t|@}68wa}r1_W!o4&01gfB;U79*w*+C~w_+^BU3 zw?=hR7o&R_mttH$to<%StkG`p>$nF|;WT0<%TJf1ai#xA`#OPT$De3lgb}0IxR!%Y zLeCNG3;>^ug)qh+)|ravS$-z!cRBD_zc;i;{oc?Y1otX!Hyn@h--0?nqWR6hAHtU+ z-Zo#3;J2QS@V^ahZM<*m_42`=qT=M;pKBDxl~193ThP{I_YU-XpVoN?@_*D|)bB7D z@(A-W_O+J(l?dmJ&>y4c#_@=r8()g@f2c9a&!E21aFa*FO&$$5frk6FubYNFc+!K9 zc<|F6`~qT4YkSUvU-sZj9{ffG-wb+ej5lK}W*0ZlM7+BB)u^wVy|(W>8?}8W>R8*> zXQT19UhrVlF+SV^d71v)^0%soD8B{k5Ya=z=*#r*R@w{g8g_8&&02?WHmZ}|;p!w> zuxxt2t3&wRk7#}?;Kwwd@IlRQ1N?;M6aFd9&jbF1<^#S>X-E_SD-8nQuJudEzeDR2 z{xi+*1^ju<2mBt4tEBR3BRv>bVi1q&uqNWz1wQ1}Ifb1ot^Z!+KcH}qV`N+CZ0>{F zmN4p@eXS@&a#>Nv`dizs_&seqiF=U$K-&VogLsJZ2;dKEK4JP0<{t;lagk2IE8nL1 zCjpZ`%qP52^C6>^4{AQ(JjX~pF9Ih2S)cGHH2)>QpVWN9SE8}p*%863L96M~>XQ+C zciMw{JotnMpY`C^BKU`!Js2`J{67rYgz!-hJ{JTVl%MV6L9o%_(?PIF;d@uPaV0_5 zy?48D3EUp}_In@HIxVQPP3sWu_3DsU;9Ig4`A=va!thZxN8I}*Tz!c;{CDq{0fV;! zzk#g-rRPVU#+PFh?nni}g9f)pb7;pf+H3y((4{R3mu^=Yx}ckPC=G-QShi}N1o+84 zMeb+v-e1Dp*G#;w@NvMPhxy#+<eHc;*UHH@2Xh_GwK12<vUiF00<$h;DsUcfufiq3 zqYCc=T*e>Tay^|ye}pl-Ao;X|xqq2Nf7_7Hf4mcYyTPYj9j@(@XC2ISfAXAzf20>t z?zeTXaC`ebKYZ=?3LnE*@sH%fkg;R9WTA5qcpfZgN%6~P7<L|j-xA|926?vDw<Ooj zXBYlCW;^$yXWH1dr2yd&A7OoNW9MJ+JaP7n;Fsrmcvi&cb;LQi<<rwEH-BEvoV$B1 z@C?p<uMGX4Kpi_{A@984IR~GoSNGxF&uet)`7EAeYr*r93~+_#T=3kmpLp@CocHXe zDxLC7*6yO=b2j4xo&nF!>irNQT|$!^hn#D`*mePbY7k79GCYHv=bTsF`-{*vCwy_= za?40s`9(V6ROBpyR}bGhlV{jDp4;FvFTX7Qj)2O~>XKH0D`<x^I^<QpSgwCxiOS5{ z^BjTR4H7)3v@uW4VuByzfbD#po&V^PJmsB^)y~`S+m!b1gy<8;1lmYv_}mO|cuxj# zLFXE&50%b<eY>-aCufgxEGBoQjXGd5YSrgv#d7WEmUYkF0M|cyvXJqj@07>?R2{zC zxgU<lKmW+{@O-A<YP>Ih5wd<2&j-DG8kF~jgZ<hW**A4|=&o|WclAz@7L^0}DC5yH zK=c8ob9^t2vI}jI^m=D#Q){xI*Xf|hOML<52s;xQ(axBro$=m;7XVw|GJX%A&!6-> zwlweaWt_v|8D2hP#+k5heBGWgt3C*Arh__mdk^GA$b|0)wLvDS*nNcL5zim+j0E|| zarw`C(@2|~$P1?B9E94ZJfDVMr%)y^bTDu{5qh(r7iS*7`4>tr>9qbz(#D;2NUhFd z!(MR!H_wjHcUAR=yyn3`Hvdicn-_S#U03&&mv~<P^<ObwqQ6il6mLC!tovLWcvIlB z{~nglQ_8>Q^X+<b8)ypkiaJahRo{8mB|Im`e(UI5z_I!?&7*^L{ki!a^qHeAS8@UU zbDrnAN+*NMlJ8_GJ`Cv=z0(tZQ|>cjKHgh@*DUW#R~;4q3!M@BtaQp;C^iLs<axgm z>e1JoKpAyM-*FHhY4*oE!l}o^(Oelo*<q<`bn^ZSp2enI8mBkxoSNtR-!>nJUsJn~ zxr_bFJqs8&=rR4vEaZD}zM|?o2%yv6;d-60+N{a+67uW}{;N{%<_*f--L3l!#)5X9 zkD{%dVL8TcK92EDpVwY&mvcX5QRxhL_e6l-6z_4WaUY96FVW{Q79tIzZ))$HpYUDV z*^{ySR-K#8Z;-x>+HIBnQV(P2MQYwp4E#JJ<NIXeq42`zA@qjl)bM~XQDq;VZ!{i> zFT%KZzW9PS2J#B$gdDHDcI0VC1w2E!+=mA^UE@0l(R<m@N#&jBCvoBYj~_>J-e^(Z zXSOVSg-zvSeYJY`e3C}LA3t98W#sJTnb|fUm+?~Hxz3`@k4aMIQ)9B3(X%|m(CM1r z(I($jPr9uS`f||P=X_Qp`P>`l!@AEjk`F!V*IEg4{<Zj5?U4SUiTH7L^ayM^OFGrB zWg#1GKv+!KqjEh9T=DpQC3Gaue9ERyKh$@g(VUF8?+aeL%JY4d&Y;C)|Imupu2MG8 z=ak;bnt5ntyw2i}ttsJ5=;rPM>rU_8GG%S-o^r^8`s~Y6&-x>tojVS$L+p$&+x3Fx zP^U>B^7?fB0o_e@Asy-r#%4ZDWbgA@*A#Nj&h*vBy$1SEoXR)cYk<3Fb^YV>5@%pP zHl1z4S>44~om^*+p#N^xQU4)u88Iv41<0gb$~7LKY~ZuIIj3Qc-s{iNP9Kt#O*i|d zFEhA|canL=b^0T?V`>2N0r+tElie~$5XQLEYqQuPU9t2KbTd%f6IxVP<sCcVGe3L+ zZL&!7ys!8mwVRNaESsy-?%uCzo;ckJdFcGXHSy5SltSiHpr=@;&w1&rbVhS1=FGNQ zIMjdgpp*GY>Xz^X?Wt3?wsbl<$4<ZX9P0RT&P=b6bM3yoOY2Ss9r1e9t7^IbKR+>7 z?g914{C`Ps)YAdnGq!dRvi=BU4IQZ=YopWY55@w0#GR+k_nW+_C*Vib+=YJ4PuBbH z^|ks-+N|g?beD6u%wPEB*u*D7Cg%G}@O`lPM*6w-N+<4`Wxc~_Q-=SWse2DP`zSfP zX}CzdXx{;UNk1pLWMidnBcJ%Q`Wv42*K`KIY*#1-3D(PLKJ}@<KHxw40B0)DH<f(` zF<CpmFG8D+-@gDHZKz8<!#hv1Ut;?>?2COAP?p7SE9z0lIj;qnBYT;TJlLOm=hpm{ z`lOutmK^I*w}1oVa&*Hdo<e^7?sdc6#j+50wVp4<7&+dk+}X0t?aN`Or_i<)bp#*u z{SClvjz7tEz*#4cpp1I$9H)Ip2)60TTk7KMc&Y=mr^rXt=Q=x-`}D|%rg;B-c@})| z*4e1<$vyEJ`fNuY`K<S{2YtZRf^?Q=tx?7?2|rbC^4_Q~FO;_thqi0eb|x?CjOYg9 zuO8Hm_~Y>p?K%I3Woxokezm4N!K?Rx=SR^lD)(@r{AQGof-dsheXHUb*&FLXUY2Wu z=`ENO4okn;=@tFG{LValamVy}tO<rcG==vHips}c=+Ec2l^fr!{-*?-YCrP+eo=L) zi2QII=qDeG(M-3psFw$gOVyT_g9q3ny7H3dLtjMZOEv$D=_u;p4u~tK2B9DH$^1nd z%B{$`rKWF!Kft=1`y3V%i5_TNSI=M7i@nX)lCQE}F&o2pIB#3LeFWvyX}-(CHGVUG zxpr&o0L_J98SR*Bft;pGnx>6&+*!@1ou{O)YWWt>*DmIh_p$kQ3Vo5suB^IUKiV-) z;v8muNZ(ptzO{yO(#IITs{(yNS(^7$u#P{6>wHo^v@G~l7yE?oK}+AjLHnxWlf_QJ z>&H&wE7VU__2I`(-n>5sycUztW~q15jyiy}?V-iLxAL9Jl{$Le<Z65d&Z;p(U+#pQ zgm-FNHqWG`Znb}{)`e<$SL;G`yKhGqWS_9oDLxeb;+l1Vw)TD31@M#eFloVkEWu0A zYuZ$}Ulv>2eWyC|72v+EI&vENOg{RyS5HU6y4AA&uImW;<=xJG96Rq=nnBv#sg(G< z-nmpoe=Xm^`ozPrn%>K}y|G*;|3Tkb*MER^y!RX43Dko04b&UvVT`=z2Wh-t>7ED0 zeaw9K!^plA`j&m=ihHh;qFfPcyS3j*&LOk2=%+AmJ@;L@aBZTr%-KWIeTsJMQ_T6+ z74T;nBb8I7qsKANs6Ubzs1TH%MtmyoBidb~v?JUvdq&zpCgmli<MMtc@yHlT$7Mbu zthg(=(lNwmd=Hm<j?D|~ISQVqR+f&Ty}l!v==E_4tbO(Q@4g<ExIfx!2JPTsf-#Hg zQga3V%cG_48bRlwwC-_oK2cg^Z%p1L#QMaZZ)FfGNqm8NY4qVg6G*Sgq8@mR?^V+0 z$oMKNOUF6CJKisy(m0>~$@GGKB1SJg&3pA2zwlWFpC4_R{qld;IE->Kx;g~6ljZT% zS^xP#={We19YlZlt-1F|Jf_RkL(mm}->?3&1K6ti*H+-En(LjuSWFb0L^)zWU$6e} zeL5EUH+x2-F;p<dJhKhzr|?YlZs}B|Q=SQO?Myono`bK)q>ktZ>OkkX&N4mW_)!;o zBH4RcuMjN4S`%xf`Jd~~`z#9hGER<FHbhwpFQ6y=Y9r$RVDtSb!#nYAeJ|rv9F<(q z2mR#pDcVY60b3D#h<E67?K#q<(L-DU3ok%}TTAkJ9OL0u=xmnuQR$SqMd*R9F6CH$ zAty1^9C}r+WW3PlezZ?fuh{?m`g2vEr6f8&_16i#dn$qV>JxeOIk1g{+zEzxx=2`T z5H_Z|g|!&++*pEGyvw-T)`*Cy6X1c>6`A0k@Px=1<4$jx{qH}9@;q@t7SKCa7kq^N zM*VU;<d5$^IL?*jVAflcvcE>d0ow_%hHA09FwHNl=}ho@9+JN{i#>&(SvIKl+zj9P z>uLk^5Ay5-<Cy_Y&QEUvd;&1{g7U@_(r$Z{ILGkYpy^J$PcQGYJH1{uEPCz67*yrC zwOp1oL*D9dWq%iTBzd;~%{^b?3F^rlMIM>Vji*~?FUhy6o%|C;@Sv9esP!yu&UY^{ zex5N9Uw~iQP`1(u-NHB+*Q0Od&HEey`qR!jK99i1Eb{4}#CLmZwk6n`IL-MM{k7C+ z$G9;UZ)bJEmw^4q9_V4v_DfvHe&f$go)zeV_w57v9y|wZy5IWIy;FPM1(|@);@<*( zFPV2Es4q-Ru?=}r=@cJ^b1dOntGS8})Uo+a`4y&tqt@Om`4!*y2ES&{*Qmb)`KN2t zzl}D?eCr!<Tcxu~b{rpM7e4QFbEEPPbt!lGHVW*k!|KLtopikzmZ7cL0r*AQX08zr z>7AFJB5mKz3-xsR?0k2HfJS-d8jG!{gXY`H@Wpwzr~m4R>I`*IpK~N!UEFa{xkL8$ z>~54so6n#RVk>U`5uM@v8YjSu2K>H29m1Wy!Y|b;`hWk~xRU|;z&!}WWqX#rgkv^D zTi`cfc%CQ)T`&0OCj>v}AuX62h)d#Y^xp+N>_M9X<}}7<OSjCv{^TKiLkM-`ZW8v5 zI=SjPU!4x?IQvJPCOorfqMqe6j!^!6@x5{WLB3tUmq(uo_+i-P8(-5p<g3!Qh`JoZ z^@YFiaM^S79@f*lNV?rVY65c-@<1DWUN?Bnd8pg?gMJsf+g5OcSLC&=MGkcbiwc6* z`GIbY9m0NSU(zT02Cpk<@AtVt%wYFJgngFqyb-)l4F)ogOFtESFF|OKcrxg&(znC0 zIGc1Rt*f&VcUm9az!B;!bTz|y$my!YZyE5B@f-b*w5i-NCw|NL@f-agXr=rz@feO} zMl*S0ILk|eo+|oLkNm?J1Jp5nB`kN%z}7IIBj4#9VcACpPR`G!uY?5;WKUmByDQ_D zc6SoLusgR_5Z@fxgxS|gv@gVb8|{m0rTOhEvQ^WWLG0aMskWWJziF=Rz^7K(;NRU6 z)=~Pv+uG{`*b!w{C<imJ-^HjWaS_Hzn#pUKSM}MW$`UrOI$BNz<>@`xm)Gy=xpmB6 z+P!w3Jthm%#_3Z}OrPjOjE)yT2Yp6Jhxv1rE&Y$#R~urqSE9CwcC=kqv#s;BuC0@Q z4sB<=wxzoLI$LyYos9BmI~=ub?27XaYw0fGo%12K{$VW3JK+#(CFo;BN5R8*>@p7C zyK?jgJ&(scz2FIB4#s&Y^~;RkUJ{&+$D+?iaY|eFR`-QCl_s`3nhMLedN{>i;Jb<Q zkUx%Cn>``U+I_AE&JLy1k4JNZ&^h2<XzgleKI`38b3*6ou}?+cW|429;eMB1oF(kT zH`n{YbMASQj(+kUzw)gi@SS_`GA}znCu<6>(You|1jaLo_C1JozK*uEgKqe3-dUCh zoTpFscupH)e|h?Lt;4pAN!eEKT0*Rjcm(rq9`jib?oPCG03F>y%SEXNS%F^4l5;=z zYQ`fv({0edMc`*>Gw7GP_HWS-aXd{Ng&-^UAG@)o*;hC075)9ya-A2+qYj7v?N_8< zk!u$7C}Mx7i?TOT1P$mD^Zl2fS6?IZ0b+UDc?<QVlGF9Ovl;qZ8!!DT=TzZ6bhxBC z%(m`MBlv32iD%LBeKDSE;COg02IG1AIqAdcvG`i}R{FqZ&_!O<{7$yUF+v;W<|1&| zSZPakemodlBJrcp0ULmxzP-=mbz!cp%X(bKkGY3<r4Puf-PVg}<DL(ledh_v$?vak ziRh-+-`g&E{S|BU*Ut9fo2*gX`WEz?jx1^VoZxqS2mNmo`AclEOmyfV`41f-t?s*9 zIo@~YzU2nFFn%_Ew5i-hX6rul);B!b=rfo2dI!BMNn0nI_}#FMX3z=#3(xE8<X=8H zS0~?ECT?p3Stqv4{@0&o-s)^N2OTJq-^kB0e%&&A@fQ?_*rw{7`C#bLTMwaak+w<Q z@N{UQ{X>%#$DlgY{1wuna}@IhukP{XEuNM-Dktcf<5egp;0S$Bx(B@FbHvc55zig7 zJ`kJG7l<4oFOG@#sbWmcr&z~$1RH`8`nLWT@1Dz7m<?$cy42R4Kabh^rDxREZT$3Y zX49fCpd<c#pYt8*YL5EQnD`{_x@CLUS1a%Bt8|j~=xhpM>K|ga!0!uVzq)1+`)Gqf zVLBTWRiAULvnD$`tNw)awZKmFKEu)x@N>+^V|`Xu1g+C6(EnkyUlE-bC9G#i`3*Ck zO}uL7+jzE(^+S5y_fl;>cJ%7lguasr(uZ#u%6MqQ7DMyiNczL$lIQfJAa=((4o3m~ zl*ERahdS`D_T5hLdkd@&q+j?m%35{yhHjsR)$qgCKkSpfSo+5J*+$wU7HPjFi*JkI z%+XWWuRt66GV}f7my|ZzK!#(W4+U(tL7CV-qs$57$6P(^>nD8qv^kxWI2`^eL7c`v zN2~KQ9X0sZ5#wJ6_}3WYUzca|ZP&=ZF3_O-TTY!e8Fqjd9FNT}9UiT0WA#d{L3sX$ z<1zmm=T}%?d<uAtvt5lLzaf9fs04k^3l66vwf(K~mi2_!;2GwOuy4#$xMMKjH@nTQ zLwV89z)zKpPV|ZSB+c<iUD%~RZ#bO+e$0bz%ubg}jCuTVE8Ql`BJkOG+v9buZ=n<S z?>JjezUa}A0xWylGt1nwNnL+Zzr%Ua+2FEa$#eV)hL@DxSR*}k{sLooekJ|IvVOts z#v$KVg+I$m9@=31As;KFvW^s;hn+y*6L?2X_VU8BV;J}8N+;qj?4j8{uI+OHFYQOx zHWrt2eXIM5?KPjPx;;l(m;HjXvo_Tco(<wV3&h#R^QpQH;Ji=z8PhQ)%@H=e(0$7` zEo-ZEy0cP_pR=S}Y<C807WWLeVG4Po3mCJ+_%q8&p9r51<9saopk7q9b21bikv#_4 zw{>GFxN)YzKRmwyk1d|2pI2VUUIu9eeWXdAanM&7-+;e>akf{LL*}+Wyf!OmW6OAl zQO>t0J;Y^W!TcILz<l^+(r@z|bf)BV#@Qg@syW81n^IYb4#IXYpD*FPvAVuU_hXK4 zf=+mId~inEtA0Xevag_X{I7$Tm`hXVSf~CR|EFu`&he>9!3%ztm+Bl39jASB?NP)y zK?~yfzx->q4WH{{jL*CM5u2ys4-#(tz~$oORJ%8(!MS5fq~@phrGGV--o+P$UZGLx zbv78McXbuLpy~NLf~8Sg#z~95s&X7ezUkpoPk(K0bNfE(!{Kk>lM<h23<rHl47J@< zvN*0rpE5?7U%=DBCCMrs=?)fq>&o;fc+^lW_eJ7I>dW-Mglj^KLFb>Q(=txc73Go0 zH!jn^T2e)?__iP|ZH1@O)}Bwq`1{HqSG9Hg<v9+u2We~j81c69O(I=)iC=_lnqzHc z501XQS`S}&i2cUe^8V?_&*LnLq%j8gqqoWZy*Ot=zv^VWn7+^YZSmSl-9tS0;l2wd zIsrYu5p_h*XO=j8mChjZ*%kb5HO_=A#U0x#7q=h&WIxa3rlzx7K%ev>J_BQO_hW;< zn1@<OkG8*Y!S>G19F34C`o}kVb$sCY4DT2RJ~yta@rfLsU#YY^UPxW^-3r<l?%T;U zlnZE=Gcrnh^BmfriH+US?)1sgeuFpmx$SH7&eJKe+2_<|v*pNUt9TN#bBh)AxpLx^ zv~%=)$F_bNdvzW@oSkpH|FfMz`k@t#_cQiHY+7VF^EhXLw$L9`@NCsvTOUF_+aHj) zs4w`7k5xMHKHrL<v}VQZ>_aP%K8!hKMJj9WtzjL~sOu1~-kh}vo+YQUa<1R4MP$$B zDcQr2b&uE%e14;@dot*=QP(}_FR0a@)Ty!V;dATizMuz;4>3M(u4r~?@Pu@5?6Mvc zA5=Obb<vLYKe(i^sxH<7+}pLea;(O@(j)C<ju4%BOm&9q;oop`W#R<tn9skam<8in zd?>heJoG(oTyEWhaUkY%u(R{<EFAhvRXW{StJuEPzf)SMLpY-n`7QXItkCE56#S(B z`nL8WY>mbFL+1s#U*C`Qoi2ua#-=@Gq%y%gGzos`Iz1R23}kP1P=EXNw^x6=^|z$I zMg1-4Z%%&~+S~2WXRxE9k8{r@6?Jd-0`_*#>D}F@aCi4}*xNmgz1<hEw~O=RvbW3e zasPup><oVSEc8?d%CPq_3B6g4F?ump;v(wFo_iU4eWb(HP2ddRJKxQDNA>7Asps@7 zTY+uEUb3HE!86mC50H;_RIUn_(+TmPYdY}_UKcyyTuAx|V~3tUSp8F^#qh#6WU&VI z>LuFU-ql}ElMd<>>gw5%<Ym9Fm>ty`57vh_|JXH*=LT;)dA|>iaRzHD`tvtA9*LRo zjm=-FF`k0oSDo=-Z7OrDJ-4IoHX|OxyKQ&MIsh`jnly3Qllf7|{2ji`;h!%=<#V5P zA-*mH?<w$`w#~Dgv?uQEaBpAoXqUErpnhO|A^D(N_F=gmL4B^Nm@o2x&!*l8F8?_h zzLEKi@dLDXNPX2aykD6CuUknko(Vi>@4Xya%stIlB&O2-8Q(0_&plB;!ON^)BgQ<1 z=Ky&B;`bL>UDQ*Zle2xo`|>h8KL8J4Gkl)HF@?B_W$wlPF2B)`UhVc`<xCXvbuacm z+B1f0;LR5*Mh9fLkRP%4)6UoNBd64l?E2L22EFhled<f*e5Xr&3D4tmeALY@{L;R= z@!N)9tl4G!JOgg>w{J9I4azckhQxiCqVp*=b?sTf<>YNRh2QHwvy{3J;&lBiB`w&$ zl4njV=ic&ydg<vR+wz%H6>j=H=oilm;#*9g|C;i=&>bxG$BOlnd$$$e@5)BBWsAV) zjWaz1o2z;j0Q=xPd>ZwDbID6=3tO>o1=Eh1wr3a)xAGTl=obs%W2RUxJ?pQ#ScbN` zE?z=?YOBE4sy_~CtgOryQKtE&qpTP8=gN52MEQ`}GW+j;+jxMwia&J@W1v2?h&=I_ z4KU9t^rMb{-XQCp>1`psuqojDt+&>|Ifb^2pXe(X^Yd&K-`i<sA5M?t9EE$Y{p9Qk z)DfNd_<#2Kg8tEu`MKk_iVriog)gSBx-Kn8V?FbybLm?Ay7Z$msC0s_E9B37Zxv42 zXNL~M|Kd43+J-uxeh#|u7Nd(gjORj}$FQ$7=NV)Xe1iU+{h1o{j2b;3|3i_v+J&xl z9i0Kk1V5wu7k?!4H+a!qxnK9$9F2{&aUm84o=DfAvop1y9|C7Da43J9=u6FZxkuV8 zY1bEZJGVB=Icj~Q>Luo=CeA_X7t$}*;L#-?C+zN{j(1{5zXtt)9W{v_*XQGZST~oC zO$DQk`V;k`d~|*&#>WePPCSf9Pv08U;oW@u1{eM(uYJ=z{p;KkU;kfti0#q0=nZ95 zLkF5wzvHyuq;0tm6#CMN(`UwSO%JVXyx&VNW&Fdn9G`2*uf}&+S2JceIcMW-rdRNL zW-b;)U9MrRE_K4ut~!Btnmzd^GLU~`%tq)_=CP6A9^tsC2dJld*tpAY13SPx{F^_) zJe`O0)z3tK>!%e5ZMoIcFUJ4Suf`nPdi>7QPsMB`F^`Q<_m#GW^McFim-u1CyDS%+ z`fRk-e3;cm9jBwNT^sAUvy^`-I#oUXhB0ZUz5qN=8XgxHHuQTocVRBilV|<*u(=mK zo;>e((m)?Qk6eCB_Q<N~O1@%rT)WNvzLW2*>Pu?te4Tx|-(Mkey;bIuaIT2Pru%d? zZT;NeYuk)hpE6tozdbn5IP9EU%>K^Hb9d)EN}q^uy194;&j(H;zT~`$UpWVj-=(mH z(hTz1F7~{F?`17z-KhNX$B2XZ)K9jzGAF;;Gf2yNA7|(raE89s(ue^P(^-CBukn8L zNjms#`Owdlxh4dkNGI!jwv*3;WuJ#<8o53)8?RT7v0;~A&*4aQ5D#(V+0rM_cbi{_ zba`c|LGZ^br$2Fi810>I2Zunr+HEk-`oKA=zu)ckdx7&V)++sB-2I<tFUQ}v)Y!Wn zv3Cx!_ni0Cj(;)yE-vR!d4~>Tl6VVqvc6lE?JysqzKcFt-;Y}KqSmMUEG}nx7Q9Gz z02lNlsC43t{StSkZcX;EoDaa>3+ts(rh6e06NYOV#>QJ_f9+eKgM0TG&gaFS+0=u0 zIen;!Yq8&6r1a1~7(K^`lX3)Kl%9s8lIQkc{B;6pmi@xAK08Aj`eeRap7YyOI>Wt( zM$sX+$C#Bm=nFoRx?%h9S?=vr9t+yzdFZFa=W1@xQrD?UtLPtSd_E`pa<-pf=YMox zRi3+s<J0H!?at=JZ(BQ|f&H-z-zYv}w9YJZd)YE~E6p=J1BpEby;G}-C#a8e@wU$@ zad$Y*3i$Hb6}*1~^S7JRnNElEIqpC3_~m#s|9FM&8Gci9Nwn_(8iYROTZhkAr9t}i z_I^Vi)#0o41AbNYBhM!0>E~@6oAx96Yr3{TKR3ksk>?ZI&v1?L=ra%5%Vt~?jz`BU z<zf6IdLz%>Lir0lqNl1);5+!}p1p9sj$|*iOs`1Nj^eU!@?>AKHf5aMR62wop6rD# z%G_c(<rQO48-uKAz31V+ouJIlSW4W@{Y1Q*kl;Def3I+l;BqmC`J5|~hw(<X?A{xc z{3_cI`khV4`6n6g$NxxeM|D%}s-Lv`eW|SbB_?BC<stdOHWl}tq594G?-^n((}%X| zvy=`U5Bsd#A?3y|!HquTT|>w<U>%+}fRCjQGCVEd5$7ZDD@Y9nGJgq<ip6xGk<SSH za^(eM+R*oInf;Z&K-#@ieHe4|FS#?}z|XmXdf%e+PxQ^l*!;u({eE<<kYzjMuL<#! zhblMt`MK}VfX|q3`Hkwn`R=cD<7hkwycyS5D1UqI62$OlgqIF~5Ve!{4J?MRwq?={ zKHxp!|BbxSKCtGmrrF0?_UiS`Q?F0?%6$#aRnjM9)(g0qXHev<iqj9C1LZpq)Svn4 zaSz_-WzD+Y_$gEW9W$%n&3yPN-oZF3eL6aN<M=&Xy*3`NKKHBmUcnghOt0he2;W;{ zd?oc<U)<;N$Kuyx%<R(*9hSR;I361V{fmv^NDbP!&-neKt>n`tG`leuV`KL9s_50@ zyI4MN{CZtA#ya|a9P4<Uv5w9&2GKchpAh!<xrd|imyTgP^n3J6v>)1>on?#bSIe4g zxZg?rYEhqLHkJ3<#_h*%8@CniC363;Md*S*so)+0z@~E?xA~-F^~YK|2KrO<n~3Y{ z-3feAWBNSe`FeN0GCnf@)b0GD#Iv&BV9!lBm)Y4j)`3rvwIFEd_uA9H$-UKEX8(=s z>tLKIl<R)E;59p=ze?#GiI~y(Eslxu(fOk8xN40DeUaA|(@@6JxAt+2zwnc^Z}BPc z8_h-o@+kw$7acJgV(X-;dqvPDWBqvgLfNLgbTefX!*d>E(0A|yyn`=m)f{kT(N@<T zK?~A2j}WcBk){u`a?vC3?CDCU<U>b!-sCdR@o{XJ4>CoR;TgZXi>~aR2c?il{pG!` zlqKOgb!V`KWjx3D<urJMemcB%Jg+EypfAP{0<$h@L_N}Jd*Z`0Xir?q)8aMqq767~ z{Z3wFl^5(QuX5#@k$s9j;<wdnL;m2Lvhaub(DRT#lo5C(`~g3~ALvJUnfM0shq~nR zr@AiuZj3+lCnvpj#vjs68c4G}M`%Sop-1M*le5Dd7sr4)vL6I}WPQ0`8Sm3{5w4=u z`F(3sU50VY=sHYgC;UR6rr*Jg$h)pQPN?4)!(PB3^mJIC!}Tkj)R%tHo5Qa?XB<YF z^6EExLt5m8--5Pl*WaT4cCh`LZ0Kj{N3*gIP;SiQj&|E0C$H2WC1@XZW<`B*f_$?x zpYr}5{MKc!o{Zb`U)xbWJWu%nlnc+*=f~S`Mmfi7bi~W|!ltHBZoEkkE|GHt_6*$7 z>tq;jOWNkceE_)S*;64%Ux8lfzRB`N@R@Od@^4XqI}j4O=i%{B?tnGAZ7$<H80X*E zJmY&{0UCF!Pw~gkz20#AZm(xK?^57-RFgUHzTaAd=93;RM)T1cG*5c<;(TR{-ZxMA zHk7x|Q@$VN^cluG($4qTl=c93h+LNE{mA$E?PzztrJ8n?zs|Xic2`g4u-N$pM|<t^ zi1ym$5$#$I8qFqUu0z^>>8s9RoEe@?Thoa-8om*Jr0Cfx<Dq!D$y)cGg2|76QRaZT z^&AZ{$D^+V-&6X)S@d<7@qp`#K1AdCc>5yD;2%kY%y;VlDVvPKoO?3dOD;V#TVy?r zSqiFm^vMO}%f6`4;GWf#kXJH%l}_*k^9*F%X75Z}UGWQ%KC{2P%8|C6#~uXj$9TdR zfzQ|Jufg90`;L!GY(wWC;)s_Q)fW*5$7+7=W$DN9gmf^Dq^@TPLuRt?t?vp%YoEiI zUw#Sm&3}-&n`fLdN<Zfc!VR!to0s@*TX&^X<|NSv(&Fi77Ij<wa`byA<)r<ll&73m zQ^0R=!D($HawLz?Pihc+LY*42ym|ro98=)o&TC8&olT4FEzGwMfIi7<<z<3C-{MEk zXQWm92;_2%{cM^2hhOpP9EWcB>nVS&dEBdaWS)9Qyn6huPCa}_QP1LZ*)yv1Z4I#l z)s^^K*kA97jcC1WtY5z#^~iV<Uyu0Xy_WUJl*Sdu5K|n{m|_&M?-<Srj^p{lB+dy= zshzZ=-!aI5wo*_!DU-aGbFLdLmSx|_<~g>}{q3d4P>*q8hyIqd9oM-j<afijb-=y_ z4{RYn{a!q~lxGEB{+iA~hVL}a`iy$Gi<M5aBVEo<u`k+X4tZm1vhLZC`Y)zMUy*Lq z@}Jjs)UP7-N@Jd`Ewle*^B-~L)F#gpRvy?K@`B`{f9R(9f*G$~eE!=CpD;X6Iqw{x z{#!rs_UlpJHc$B;_yFq4n9`X-%p>EiJ=Wj~-kl#(KKo<c<@cfE@0L90<8Y6d#0>d5 zK6y<0Ye5^)1<>7!_i)G?Ul!56=i#8RW%g^!V=~9ODAkWP=64J9VKO$3(aD{@(wBFu z(FVO-=-wH_L7u73E`FW(lz&<1QycZ_^t*!F^p|$pMxDpAar#R7ZJ7_D1G&B>a#q>W zd0B7CdWYwf<++8dEuLQ~{?*ev?w9_<pVyE@3HU>O!1x!f%|7zT(27SM#j~GJPp`Of z{7`Tef8D(?{7KN(fwr=C!#XK&??a?I;@|G7)mFw7+C&0p9sglX4caK1khZ=h{key- z+(QU@c_$6=;@z~wq2PmvUH;Yk)@JWpGPL5y{})I16GAuOUZK&+lIJ_9-$rv%XkJpd z+ph!I<6B~8%j{R}Y^blp)pmksWqs9nIOlkH8ej`weW=D5sl(wIsRz~V8q;WZOWk(r z8_<qAX6tD26|mJ&$#XVEI~Co4kK%KC+`S&&yGk9fHECFOXi4JpYqQ0_8CvmkYaCB+ zuf<c=zs<wd9m7o@>f@HWyw}+3O|NL+eb+`C<B(QMSM0oxlV1w?W~<ykW<9e7nLj++ zOw~IRqxNln{Wx%_ZOYl5g6GShrA?wA#>;0=PuhScwn6Nc0WI#kMz`=>-eJ76j`K<t zyu+csBbcv^JO{<NV5^i(rWLwb>EznO?Ngv1=G*w%bRUOxGWPxo{2ukEz&!2qS)~2A zO4<Wgf%&o*fp}TRW$OWnTTdVcKpjtKgJWA}|L(J@d+f(AL!9(?c6O;5Wi8H+C#L{6 zD?G-0^>sR@C27-kPQ~)Nym~s%$^ArD&+;g5$)jGFtn17XA}i?n5wubHCd<-~vxjSK zf7EMFJFz(BDD;B*i1kd>zUf}hMUr0~KW~OTzQ%l+W2)OspiMR`t8TXw?M`c1GS(OO zFsxmYeD>n??Py0?us=Qn<a@3u7lSOvTnWF4^-wtXMrAlV8kGS@J8%du%gYeYg+6;Z z)<0GC($J}d>QDjw^{9^Z^7k~p9iYGOKMFnbp7mxsg2(p{27C9Q4eK^&-2{H$4;lBY z&0;Rxi@!4F7@V&yo~@1tLB}c5i1z&*!Md)&VEY4rcLCR8;26|?cLP`dLb!m(=H@o# zO^@V3UKqcu-=KSe<w3u8q5s@qAT(w5xAxs$&_mR1VI9a~Y|HHb*b3T`y0$qA{I%}$ zoOgd;ZA)TLwCA%A>ZGk9Wc`h}SLBU+(N&H^=PL6V87YJQl$T)774Koj%0qp|JTLpj zv2uxFbR6~e^Uv$L0Qb_)-4nNQfPT^<bb(IBNAx>39*&Q`>WA=4UzMjlpq~00iEZ<W zD<!{P9nNR4g|=FA8e<8_hJGw;k3Ph{(FSwnz2lm;K5Y+#ee?cM%61s-&EN64Bleu{ z9Y>z+F^esbcGT@fzWK78!5B+^dPS0Bwl>0BZNujTe9wUGaTk;5TuSr_d7y)P0^|$J zxqi&iX7Ei|IY+PZDWZ>BdN!l-sr#KZ;O&Xa3ABWB2+F%L<{r`q*kpK&ZDy9ZvwJ8b zPj#*k-(`F9%_^^6H%Ez_dA}55;3VgVUXBm`$mxgE)n`#|a_iN1D#+KUZ|FzG-2v6x z3fXgR#U7OG?}3+X{yRY6Sz_j0!5uE9hF)PDI;V0kJy#>Y5p`TV64mASxZm0Bt=;)- zED70^<QI2m;g>o?yPO2v2)Kw}o-^x0-XQy4lZAf;{n%f58}jIfnAhOt6*W)d4XxLv zc`{cp&!rRMBM@s)$Gg{NckdlqF*%{*W6TD-$2lhQ73G@GXF7!%`J>3co%~QgVD)o` zCzhWzJh6PCRdovAVU{@Da8b@_EyFu!Rb})?-K(>z3(f}|Bh53*f+nFWDBNx5lqpx# zw|leeeuqZ&zux`*p%0=R(Wh>i{gTB$;wK<K+TR)UWqy|Njme$&RSqM~vl_=yCu{P> z9K!iT+CW!nJ6YvF*DJfUuE=wNx&^H(Ix=6~!2t6q{(wKNaFhCn=={##&0d)v`q0$2 za*)OT+N<!}t-7C+!hTK~`#IDlqx%Tp&|bX!qkzTFkskJ`{bXa$2VYbEx1ygGzn>1Y zDGV;}<6b6Z$+$&vWXd&s8LB7r4?nP}uC9TdeGm6+7}&OM>juc^{Tp_y+q7Ze1Dm`0 zfDh?S1MAoIZth#xQ<c}V{R10ztY5d&YNF0S_lC`zx^WT7`tEf*c5dh!SiileXT$ow z&D*!_4D&W@Tfe<)^R`Xw-0JPvuxazoz8w!s-uA6qH*D(*)^G29c!xt5bZywU?x7yw z176nY+OV^4^R{(F4EX(<*KZiuxP4onjvxp&Y{Qs(*R98Jf{pmGf{p98Zti*5r8aKf z^w16?p7nr$xcN&?40uEd@^w4clP-ZlfFz{;L)*GQ`o@QPdaNHZYxDYnb=x-ekc43C zy8e)!t(&)n@V4zcwpwD__CAaQ6W`|k4Lt)pH-C`u_RScTgMaLybzLTa9qT?YpyUJs z$7JU6=E}|T<FaGEFF&Sjh=hH9G9Bj~^ZYSN+8Za+{#cpz$0=!VtYNtux{OhH;icpJ z*tvBb1i(?aO2h%3+Pr1M_J{gHZUurX%C}K!{zDJ!T)$&;ukl=Pgn9k0ZJ2&o)4dyZ zRJAf(QGP#kz~PGWsO-#x_H5YEvw7Qwf!^&qH;YQg^830suivt5!_J+O-yd2T+HdHA z5xjrH0F2G-HO%{fGsYboc5d%^Nb!d707*i7D;p5oGc=~hJA2lNQN(#m+oB0ad^Bwg zyu66FJ42p1*+l97Ac7wT9Pvj*U6n_o{W>JN7XPBWh<D14!2P-r`n(+2`Vf5J18`^} zjO`mYf*Zi^@<Xn!-@X-c5~~iHQSAHDEYeBM!%u*4uPWUYOLI7W{b8hid{eRXu~>R0 zmOd3rzkqau=HVwe7fZjSW$csxF5%Co=XIogdahKb6RGO@iA=0K8%wvx>X%~a-dKI| z$Ll{q{&@5yCS&PxEKPp-^-mz}<C}?<KNm}%iKWRuA0PSWr(^s}kY8STvL%*oi=_*( zbSakZi=|`yNXGb)JQAz_bS(XBEd4?(eJ+-MIhKB{I!#sc$J;=C@W$VekEI#9_~kvZ zbZmSLQ?c@xd>dlpX?QVK{{qsUJv6);OH<!{dMH1yeq%b8ZbjPDr^b9N-Hx<}udypu z-V-YyjHM@I=_9f9@mTs~EPXnbJ{wEF6iZ)<r7t7xjeil6{&*LWAKv&D#pJ!HP+cDE zB!X}IUn1GixTtAy3eQmF-_m92<u|;gKAMHfrR8k>_O4u%xqhYDhL53;fAN2JO2%!a zAh-?ky6q_bj^Pioy6tKFoxmUDblVL6p2goG{5^+1$V&3h;P*xRoyFfd{GG?&1^hu) zx555yyNJJ6@b@bIF5wS0c-vR-_d5RGz~5#3UBMsPzo!v@Dg34J*Nndw{AKXhioY!W z+FafD<N+6$KU+Tg>g$)UT$Q*y2!bruB#8YaG{&!l-#h!(?da1$+>hmVY5>xuzYjdn zA3U(RZ|k~V!O^>8JLdMj%^Ro$?;RZu2KqPd*s!5^@4%*>hkLsRb|6@mGQlrBGL}GJ zUQ1>_upP5If{zEbBX*D|83^&c0L;{r_yZpXi$O5dCAqQxw(lO>`xB3k1e+&^#`f;P zg^35ohFN9D$fJ*s4IK<t7w&Dp7wKa0o;A#0&HsXF@bO<<+CBV8F!f0B-aCg6?tNn9 z;GO%2_KmRgfv%1Ce>wVG4jwM=z#m3z|C00%IVmSZYpMD-&Hhi}4>Aa5g5V?g-TN%y zI{&6FRTunZR}egLDA=@q{e9Wo@W>M%**n?WyFPnxWNc(;VkEn|xFXxWs(sb!U>(}M z{n7o8ivcfdOr#R&M6hb&$$gVUyYV}D(EW}Y1Pnu~CP$_wgH^*rlS9F(-4heRD#<-~ zz~$^Yuy5bUepCS3RYQ}L2lwuNd~#%>n!trpSyUirnzUj&_<dSo{xmB5P7en7uP+3_ zTfpmJDgM}=_0sseUDIm6(=mQYT~rZ%!#2df;iqmrs)Hvv)?5BE^6a0{M^!Nx;J*Rx zCg`HjN5{!B(sw`ph)@6h>=^*>u@ru-Y}0|+*{?<UKl|SR!+yhmR`0FI@qE?K{sYn< z2x~?7yfLu!=b)2|N&uGOZ!P{vUo-ybWj%bK8b#3_<k>&#*V6VI<~Ihj|7e-~1+uVA z(;j{)_xL7h@@p~c;$JfwGmUZblL3ngntnG}JB9p4P2a=H=;}C33|Z9o#BuyRtLd%4 z4BZOOX&O9gxQz5AO%DOpE2!V6>3xu20p<OgeiG@UNLxAJCe#m(X!*Ye$%AO$tLanN zS~-n$LDP`)l2?&Fsp<a&`VXOfLh1iwhyv+FR{yUs^yfg+X|4bFs9#3?vepNWDY_u5 z>8~T5jnYKBtmLI3*LUnfcNZPL1a#?#z>j2`rf&^`oBEM1X*w4K?>vF_$25()t!*gp z)^v9e+&YHxE1Jeq>|LY4-=*otKpN;z(&d4c#K$q$F#WQoA)EJ>!Lw7E{$-d)EAXY< zcoM%F1b2dlcf6wIXR%uZJ!!Q5KOY1iK8gA^p05PKrXKQ8>wgPg{XAr({UyPyhf#l# z(v!T&%@={zPrlF19f9IcLZ3K~B+?FFa<iLLOuv%g<?fe(|0OLScYZr@RMQ9z=*yS& zYWkS?=^!|-Y0yI7otV+|uLJ>odxO#UBIg{GXSMuK-8>WwY8qvnZ;W5bH<0c_I^+1) zfFGG#dR%>!=sy^r*_PxWokG7iT6wd}y(N~$SlmA?2XCs<8)9k5qN@DEvGhnRJr+xU zG?uQ!(*H7+ekzv!1?Usx6XfVPFuqf<@_!dg|HoMR&tqxWpZn*=FKYqG(DZx2e~w|) z_1D<0)y1hoZ?{yX5lpPw6Aa*I;K2CggoDNp9vB}vIJp;7=)nHR_erUjH##&iI<Wik zJs%mF3<N$n!XF3k-M?3JA2~QOVtErl=ispe2R`!nxa((Z@5JPQG>|SNIecLMh*vtY zf8z0je#XS;-bW_A3XdJwyFVD&H$M5KmpL&$1}X&U!I7b1gc2h|`+}jn_XY=s_ddE8 z;~duCQT>&=Lz4#{A9KwBM$kmC`^kZk{d>@O|DyqUwFd|%M+THBPfFgSBa=~v!#6xU zV6lm0OrXl}$Rk6Kk4+9tj1TQ0Iw{yYF@PTTY2RoTV&1=Z_wKQgfqg?0A91DQLkA~D z1|A)Ia(vXpB{`meNFk|t<iP$oNv`$8<PhY+YGVh6hNYgQD6%NEXW!7c6ORm;DUnW? z+A}(I5EX_;rW{jPL-O`BTw}Gp`zJ>ZjvoXq6O&JljW9+X*f_LjWT1;;4pW<{G)(Q> z`_YksoroFtc<CJ@2$d&X#wLz?pa)b7evXp;gzRF1nIwbU-s|c?|DM>3Zc!}lG!4O` zzKf#=4!Uke4hGPdJ^RLkM<xgMjqF4I(Ae04J(d);)*@GcO6V%sh|OA2w1K{ZPws%) z1t{1v{v^?jjqJDfNDadPScX1+V&VWKfu>s@AM4utL@+Ua5Il243jg<v4I$o*aPJ%$ z`3RHiw}RQ*Mt)L?gkb|)M-ch$nP5jwJ;n}z@8r<lNr;B|6Ho4+937b;m$7u1+`DIJ z3}XzN8Jols)lxkUIa-Kj^6}k*S)@&L(rcJKzISS5Y{2Ei-Ee<yE#qVSOJc6MUtxIs zpwr;9QGVlKl;3zdf*E&}w0;xv*D1WXEvmB^_$@z$dC2<WoNoCyJP22eIG=IP4ch=W zI=C4zw&ge97v;aT5aD_2OIT@Xzi-b)`EM^HF3|jUpuUak9lz;tGDdpG?>L+S|B>dG zkpCx|Pxwokp9TD7%?Etr#;E>{q#rahuDbCPE}t>kjh}S+gn#JgwSEBj(^{YKFKd1Y z@aHt2u+f<XY;*$7;5iq0!oD)^kLqU>Kl{oke!@5XhSm=N6DR2;{09-9n>co*|E4c! zein5&cIE@V`H86h%^!{G-~4+npMBj-oTyK@^?W3YTRd6c(uSvWO9T0Li>D8_9FOF6 zi{YFKf?Jd}#`L%Tv-U;!s`dr=T{lPh@4C&)f57EaPv5oC<qP~qL|e8i>i6Bl5pC~2 z<>i|!27}<;CJVr~X}`<R?zUSUet}oHeg(ce%D=r7>EZ21vHPKXc;5>VJ-M6*ABk)v zr*b48a!P~1f9d)X_)D%Y!YiO7)Dw<(1^S^}1b!{*_l|?EPB0S$cTm2lBQWf6qtbTA zH?$6DyhC{&0A7i@R%hkCu1=yI`S&?I0%N>k9qlWDyp`IQz+PV~f7RjPe(1_yb9e+k z6XCh@6Rr;Fyz`T;j=<0#>uZ(rKiw7ttCar&7ri>W9iBAe*Hw==JcRG+jrf1pFKQk5 zkGnpjbqGHj;kgU^PlC@}6W#R%z~GC(uVUSyJS>p^sFOzjg&PzP;g$$b;d5FC{3-nJ zT8Hpyug=Sn{uKUM>x1S3WrTi7|LUhB`d43!bolP1*6#^|yFrW8C!CJ(-@PrudH0S8 zCy!{E-@fN)1mD{g(NnzHwOv}qF4?WFE#WoRFMPln>zD8&QT;WKdG){S^3(mO^S3Tv z;MXHM@1snCi{rhIx~F5m?>9An5c$8O`Gn7TZD}LcmVIg4ADzLe4#<iBeiU+)I-`JD zpLGbo7UAgt4#U%dc7~_(ScGTY+qBLY?D$5lLm1;XU40-M@pJuyT7MF9qb%4j;l8N; zdfE>9rhTpdsH-FJpK048$p5^yCH!g-Y}RqDr=D2bt5I8SR7!pc{*N@EU)pBZFT4CS z@N|97<qHg*G@M<3<hA{isO^T^on3IPzTpmM7Xsg}IFBO#0mVtUI~wDL54$?F>kYeI z9f3!qIvXETJkWuS`xOu1O-c{zZ&G>$emQE}{cGA5b-I5;+Y){;s<Sy0#WtIN(bcE_ z-253=UtsbO{G`8q5WnP`!0-_k7d`kpu1@+n)cHMEN8s~OUk`p+>wx|T|5ob&-f}$B zjV%}#{S5aywqRWJGXj4}+k*Bj#Dn}a;jcvadsapGduThX1N>XHEuYVB)wTkAZMQ9r z+HSicYP;=)h_-ESfELu_zwPhW`WFCyQ0o&OjOf|^%Ms4)pNnwr^mx8=o2x^dJ9oG` z0z($$1NU@xLKfr$;r?9_Jr4tq#d{AQ@!(4l{K29JgEp)G!IvWVLy)88e`wN!Pe$;r zW)Jpo?t<*B?XEK(d?kW^yv>6Tc`$U<+J4x>|6%CA<?m5GH|B$2kMf!D@JE%m=x6w2 z%3H#paQVx@ui;O+e1Sjh@)v=*!{9A-gYd|GE`NC%@ck}d;0IlPV=MA0Bh)AS2xLNA z;I_si)EVRxezXMNp}O&?+THRN<g48Ye9o)$dSpAJ$Tz)uEESFYv4RKpdvMu<PkHc5 z9(*~1KXL?iqO^_KxVmt)l8p=SzI%0C;Nd><q!HsHjJ6iP?FZj&e%ya3irMzl-pP|} z5bXa0Z43Cohh2W+Il#MJzQEtm{2An5)qKF?54ijW^gF)M<qP~#m(M+?ag{aUpMY;M zdJg`xs}mdxf`i0Q`T<Y8P4lM!->CV7!8aS%#A^{e`6sUa@>U$Z{WDizVCbr?B`5z@ z>$IWHSG5jd$kggQuKh002f^doufQ3v&QCdi3QB{=KLMCD6Mh=Uc~xGIgC6=^$p<}Q zomZnePn?5a)A~<hET&5z?Fa(;HU9e-XW^R^o<_fv7xzo2(Jy%=F!<H0b?EmOVGotM zy{KQ|EPh87hHfqbAEizgevc~5x+fGK#_uVGS@(>>=x5P+g=g@4QDN47P2m^tds$(O zuPLQ4bi65}@Fl=Gg~9u#qQcN0ex{AIaSx!WUtzRs8dVr$X_`{F9q>_wOMp)(+za@W z!obmVMq!Mr>Ab>|fG;Xs2K<`B7-Q3Ag->A1Ii)bhyEvopbAWRSp8;G{7~@^stuV&B zxL;w6ck!sg7~|q82lHIb;-d<;0Y0H{0q`k>F|NgD6z&6jUSW)7@kNC(mc_3rd<5`i zg`dV2c}n4D0cR9`0dP*?bAXEqzYMrrVc<*kJGdbLJgP8oq^1<k13s!SbT)ND;U2)J z6b7BCGYX?!>b%0>bLyhPr0q3@Uj%$v;R|^7lv4Orz!`<1GfQ#`gP%)^4yJG6rxB<> z^!ZEr70v@5Rk$7Sl)_zrk1E^)_=LiPfKMqr3HXe{M*yE!_&DH;3ZDf0n!=|6Usm`m z;;odzF9FUdd<k$)Vbon(bTH>NUe8SW7hx<*`xQpJrK1WLu-`F^xZ-B4=}Ul-FED6Z zHm2}Vz~c%Z1B@|9o#TL~6n+};A%#x>E-Q?&ECVj7KLZ%J1b!AUa0!fd%YaMZ=Kuqj zz^4HNm%zk>KY`Bx1}=eL1PojPp9OqM;d6k2OY+YH1}=dw0DeK?mjDBo<i89UxCFik z7`Oy}1u$?4{3>AJ68I8e;1c*Xz`!N&R{#T-z^?-aE`i?w3|s<V1`J#RUjYnU0+W8= zBK)34z`!MN3NUa9oCXYB0yhH&E`eJB1DC)V#JhpQt$=|`^0R<}OW-!Zs6?3OWYWMT z`FX&=C2#>Sa0yI27Xd?;c)le4io&2P&9NYVun3rA0X)=&xdiPA^W4btb_erW9_JY9 z<Z{$s-mfs~F5jha2jD@4djX@ru>LW{IgI?14(9X4<ueZEnUUo$;F%}z^WX9_h?@<5 z(beJe#pM?q%x90wUvlshhbA7`Ke_6_U0M6L`tEz~x##XR_Y{lS>^%kC%%8oxz_Qf^ z9FS?xX4e$fw4(_B2A3Y*(6ceY;o84M&;l^ZNUR!@qIUTow^#>DcpnMgW0-RvpT5s> z(tk&4W?68;y|a?Nx6;XXUgR6Kbg*6aPDN!U9*n<B?h4~OP+7@$??A=h`)Xqun9h6A z(iPxCn(va~uJqX#AQ*f9B7RrhOY^<|f_ppK@J>_4z4tQvUVSH+xUK&l!1m50-_MbE zK|nX_*t^{vgT2$k_ffO<j+El#n7O(1bD&+`safEilru_m4|v_B?~KTIgg8#%;QMm& z{<i-5@2a`?w(wm?@G33xI2?5N@0cKuyp%EFTRX#wBa6Fz&f#6s9O%bg2iPV0nZ+k# z_o0XF@Xk*TII{X~8s(Pt?{Ih??|1{>)0IwnKf7Ju{p;ZSKV`hz;@*Wzbf6u-eZ{*@ zT2VLG5sZ!u21COr=Q~Fkm$!R#Fc^_M=*W4{%ldqes(ocSxCeLc^W91EwheurKtAug z;C*ZzF*$_v<9h?+7%OETuS5ALZxTJ|Kh+Toyk#)x_?pt>_mxLo@BoKTaBl-((eWBM z!+tR)zSs8#@M5exHxCBeHW4qzMZ6qW3(5<weCvk6pl_X)Q|2tkdxLY{krWzGMmdQ5 zXY_qmeeX@a(Y)@NtE8hfE~j{#yUHOwNyk&MSGi*ebkYXwJx9X!jw<P=PC^Fq?xe~i zNDU$%_1aYDyD5L%A^o}7ds6egN1Ipw!h4!|M}8iC$oo<pv&u0alQrKpH63q99lkf3 zSG|^R<aszk`M@4htV>#9Gx;sER~}az_Ua@q&OrZ^k2&fz^!-Go6Mevb^c}aS1(tV2 zogd^Fl-A~A8S<XNOmq8|sp6~fUAV8>=uw#&o|C|1`Zx-hvZijw$LrJA74N$bca$#B zhVQ&dpOBCEag`^1*Eyf(N?-I&oF|W1S>rtI=qE!t#@f-hnxCaT3Jki^>PPa`enj{l z&JCc~bWZLhfR3bQC@;L%sr|@1$hha3_oE37XcK?$*z~pDd&RZ%HG}sDTk-y2mh%ek zgQAbLyJ&ZzFP&#D+xNd@oSwbWW@!HxY|NFFGGE9YpVW29*ZGm-LS5RRy%#(x<Ad$9 z4Ec5k6W^aS*~<IfYR9<>{F~})KzRdSpV!Xmv+IwxO`Kt0NK<EcuTL{=5BIUPmA@!7 znQgMY-Jf2MkMqvY(x3F7xT5^aqMz2{S=h{yhR<y)H@-VQXJc#}FYgMO5t<JNtsNL! zp}e?&w&a=7mj-OQl3rj=uKOM*=#qQmW$s!uG>rS(?<7r%ujad)h@-9nALhM9Bfxj{ zudV^#QH>c6A!eBL?<WH<MhihgbVB$LG+mNA{4sdy3%(smf6P1mQ~WLC8yQax1kFz! z4qBe-lskeQ|AMAB@Qyij5q=DJB*ot`XFpE=L{_6~v-^gI+NQ?A^RfBml{g8%NWVU& zdQ>GN;FVYmbM_&?sWn;WFQ3l^{MLd?J0DE_^vn5OF29`i=9lw(6Mi}M*)Qii=6*T# z*)QjJy!~><B!2nLVcOA0TlLFtWt#Q}I~V)Y@A(F}H<vu2Z7sl)U|euOZZr6fJbj${ z6Qi|6{Ft94P5Gi;Gv_YaJNo-3;)@dc%RAa;zp3>ZXVkmz!)#@$Tzf9B8^5BD4yPmX z%>{{9pqsm3r{W7MohZjQ67UUY%A!bG%F7a0)^ti-T3kE0e`siU-w1T7gL5Zv`98p# z1CzYpu*0+UR;HaFXnFzdY5V2}{C0!r*JAm`Te3oz++75J!h0JiWBN_WL%Ibp^W<Jg z@R4!QQ^-dglw`hr^MUrqF{MR+F|MZ&BcpAz#st}78FAChyfJ~`0&mDGiwRx;+}yfw zynBp&JATT#05+E3{A@fqAM=eKPcZ*ePht0nD{)B3=@?>J_MOu2c!>N2eoW>G+{v44 z(fQiu7}oLYyL+2XioZ5H2<yz?+c@k?aTtGd#NqK!>Ps4W^E|$X4!KgVIQR3eRHox| zd$X=vC=ZEWOP{%VxzZ_ghdkolDTkKaINlLlxG)%8_+#F)BD$+Gg&c%`)Fa@rcDV0B z@3Iqm68$y$x7eayEL`($9Q0v#H4Lg8c^4$@8grf4kc>y|%dPz|KCNppfxC|c>qGhp z$nY5G>+|TRA8xT&n)x2DtMnH>Mf|Puk}zX1@?2!%{Lt(v<cEF6a5sCn*~U*d`f2nP z_-WWq3Ug7tJ9%pIkFgnWC=U}?DzMu%D-xGMQ)cZT4i63wajt5u;a6mw>Q{ROhxlx? zb-aHAI9lWPby4?FZr=}(zN7IbE`#r>!9d1k-xjVjo~xJL+@45(>aP=xI=5fOc&>;) z!*dAmLU>#Zg46MN+0|(}%I`W?Ho3X8GKx8$>G#1NqdEU9=KOO{bq41_`vq-xg8Ech zf_5D97H#(^+PU`Wr`{F3gm~d)w7rP7uShI03VNXbl{=tIs8?PbWKjMp$}a);Yv2pU zg#47m3YXVrx9=QkyX$W7|H=Zf0&V*;^j+>P(zxNu{Bc9@2IU~U2Q5#%FQ5#=dH5-O z%P34cAJQMDF=puA2g5YlKmWd9SD3~a5Qls?OuP1+L&TrWEQ4`H{*vpzv(S}==<SjA z=xYWi{@EV;90|-VMYMmZUVG@%0`qkuRcF4Q*IvNummxFia%ekZGuiP2Lv0h2w3+#2 z1|LJ)=6uWhYF#W@Ui4gSzL7e#F|U3K`W)`-y*b*G`P#Jit{-aa>05|)tR>n!n#bZa zdp2w_Q5_qeJ+JY32fj;CK#U&$eulrtL7$#;ep~D#w>JAIV(AI`r+f`wGtSWc8SH;y zO<OE;|1FGf{PHr(t*m+vBgwJWE4$swgf@u<l5L)D(k^r6-=1HYydARR{FFhQ!FeO+ z;)mqzY=iuCr4xIiC<opa(pxX~G5M+gWh{bw_L}b_JvLA28qgbOaFTtZ4~;#NIqDK{ zF|MV3<C`JP_p$u&A0}mQDC7y~!}ow?zFD9SzYBm^!tKiem&}ihr?DqJWBdZ%c>Iyk zwP7*T>AClQA6I>ugszOK&+muN-*sqa<<tq>|A)SJ>0Hl!u`b*{IOyF!_yWrNVY|I3 z%PHIkm~mad>DHRgpa*pJuN`~>^WP-b@Vjcvf8A))?fBm~F6~AB3EVLvvh1jIVvia3 zsPzS}|BkLF$O}oMPnPvZx{=t1bPoCL_-(^)0X#a*I^g9Mq^V1!o$_iW?8YhU0Ht^I z8tH8~Z|xDge&fy28+-#evPv&`U5IcdBt{kbFiysdC@-PBqcxblqWL|C@a#jsZBs;9 zNqBiuo(XV_CD=hX<j`eyfPIvXI{Sj{lpW$9>Zi&i`MTFWNjpOOQl0j4=Vh!tc~8FX zirJGV_vBI3F?}O1@<<CU&|!{&w%4Kdf_Xxo^>8nXdYFe?xtGi~fM>6gFLtMAUr<`5 zcQCVTmgBSUolIvNrg%@A`YG9a!hFoJ*TsqYlMCW>cS;*R+HnRnGDgl+I%O<&&wm%n z3Qqr=|3EqATRdFu<~lt!o!v6khsOlSM+_$8=3F<3I&*2%v3(mfO8l;4rmrC%o7ore zr`6Y-K-$s7X9>>)M^MIl_Xtk`7MWKZ--_fh=_Rck7wjT9?dEsCUdig9KaM90Jk6g~ zf4TrY7pY5VlZg2w+H!}=Qhd<!D-+vLkM<PH559r?dhtxR`p@yue^%e=R#xA61itf- zzZa&y6Kgtj8Z62pZWbP3Zs>`}&7ghU^QZlwk^5*CPsH}Ro){f!8ySNCthLugS?M}6 zcos0{Me?+VIGt|Up4sTN;u&`I1Q&@5_Rl%Y_KJwx_BQ;!i)iDo=h|ZF+&nzDdj`vO zczy=Fwr7>OL*@5OVIRDJeeibdgBMRY+s`TgGUyku(B1+*=RH2BQHGd7;!Un4g?`o3 z+fIXbGx(z)r+y<=<e0=pK$q-^AdlnHc%#Zc7sOuNURN=ikHnv}`)TMy02<zqzTA3V z+QOb_*S4N@_macD==aR_Q7(G{Gs|!XuJbeEC)H+TZ;3V+?i08*2Ky^}xE=jE*2-bt zSJ~fdHc1}|{Mf&hyYYSeRkR8H;FYs^N29fk_s=n_U3JHv&AkTMR^43)I#ZQSH_oSU z_oml26KlJ`+Cuyp<6VBIhrUhWx^o2T)tMt)EYb|Rs9(*~D-hQqe&BeivnqShr<LWz zB0e{U&9q|9<sK3Da9Y*R+nRj}d7Kxx?`O~0X<L2BZ}I0Tl&6@7y7CNHaG~GIN{M~l zIfbY{#-Orir1h!uX{_;P@y(x89xv;yCFVPW!SfNMrIq+FM%n_Ou{TvZ5euu&x49Q| zRIRb%vV+{~o%LWpK7Sblh#ugVXC0U}o(TWYR}nO@jm(qewb7w<jqf5O;z1kE8DWe~ zSow4YaBC&f!2s!SALZK_2YADIUwF1A>-IUI(~W}9qtS~gxVI>G*v^Slpo5}A)FsFt zcw}E+?J9mY<&@4-yTIo@ou|4H<8xl<Mjy0?65x{0E02!Sd~~2KW0G#P?@(LlsbLEp zE6Yi<g&xlq*gxe~K>GseP?@&tZxOONP1<}qVVm`0JJg%kZmFk;lVPjaW7hqSEb_3% zT>LTh^|V)?MwGpF6|}WgIz`Xhb?rfW;<}<8zle9lCX0kscgWuo%JcYbXSsf#5NmLW z-*U(oUR9hP<ODCj8R_*O@geyl@m(iAaLm^W7j365u2>9;dbQ;PKGA0D;^Ev~t&_F! z=-Mj-T=qT0Nx*TLQ{S@cyE2tdi96w!lP&PsjAyH4fV#5pvF<Yo$`ZbM_A1)IUPO+~ zfSZvo@>_RO*1`DRq>I&Q6PQ=UKKQIcb;t1YAT52g*^K$7bI3Cs)(`#E)5yPGJfbhM z{%FJGzxZzDA<I=i=gcp(51C)kj=saz2*aQ;H3+|qywE04hjyWM^Q{i*wEC)k&Y9Sw zopVkHzN%{PO6{N(xblSYOmWuDwF&C7#CFgj${q0UaqoxYVf;t`BJwHVogu)qTRB^V zeYZite1^fX;_OD%`igBN&awH!(?6Lj{JGiIkm^IGz=xyk=X&6zJo?<chPY02E>-Ci zn#p%L!{+gwaeu3qZdG0vWAoJ+ofqbu{{!7c^^u%^ZBL8)b~&6^>cClnA>9ij@3U^q ziHn5UH-523Z=wt+55@(YW0(&Zz8iCv&1oJ_Syp>p?qV*=b1tshbLT?1DBHTYVm_-b zE{ut~B=KAg9U=a@^EcX3hU8C+?&oAQ&F>TP+ql#pv(H0-aTYAq!93~!>WaTIzSfz$ z7ovgvt8bG%364khRn!M?zFg=z;=J*Nr$<G#VVm0vz-@jnAg?f%Jf3GCgPs-LxwvnB zUG*%7x;dw3$z6m|S7=k+Qn+qh(6)eXQIAna^z=K$MLn;JE2dj@>B9IZ8(I6+&@JMh zPq%0*<`b#wdX_TLT5)rgoYjPmu@Bm87*oS<P`B6y-|dinM(RXbbr1U(qI>c!2$ey; zZ%MEUbtK+K9%LBIAYGRSvAMi154?HE?4VHT6q@~csvUi`tKTKv+&kf3Z$IF)>J`Vp zeKOIpN~g11nLkd>_Ith(JPTIoo^T%Zs^*%~Gv68oo*v}O9v0(nq}vym%jR82fhK=l zVBaZd1YV3WTDy3D@_MZcYSM+V*_wj9r2pWYnR>JIa6g)I6hA=U;?^s)x6GQX^Y`GR z_@On~a9t#4&+DvbYJL~q^E0$ReXb?Cjs0QSSEl?I>wIj!Q~IsLXRgWX+L(?<`T_lU z^eO9d#czAl*9$-WpT!b2amV~hUD{)G7Z$=Bv(>tI)mEu9Evq3{{N`PJ7CZ-7_=I(i z#1b02@jUu*ugteKmQ6~TTdQ%MpGG=O{lR|68wTUt)@6%{kZ0$_i-aM+WCi|W8ZkK1 zvOj{@Ui1UHCbEU>3OX+}qptWtqYrz0UBsilrG>bdW`Fb<Y=^wu@g+e!@^gUms^4ua zLmkc~zTXi&aen7p<NOX?o!BgTj_bw2?8A+p->{Py_^RV^lKPQT8xR?RU$il+&vNJU zb^KbF^Jv!de^MVYc{}o*9XbBfr*iC8&b2!EA$II&Nc5uI&LLltx~?txB6CU1_NXi2 zvjzv(jSW$6-q=udL*>+s{wQyWl~phOa^V%~*mq)NTu6&<K_3u1C+L5(w14u4b&-~H zWY|0F0l$Wk$3C*ug&Olzy*^T^AB@ju*uG95&!WuaDRVtzZ$3BMGW$*0bC<E6lyy}N z8DABB^ks~gy=~CxWQxDUAM?LRNB$SjEQ)p3W>dOu@V`+!h5e*Mz&S;m1J6bQk5<EV zV>8s7SGM-<P&aT6W6k~+-BUee`$&~edHyu4c7BLFChgQq*n0`>4k<4zj^O$`Y%k^7 zM(SZ48v6{RjAP;)cs<9|<I|-3P;JQT!9LVg`droJIGrfJ{4vnN_C4fp-;xY{9p78x zSmX7L7rNJ#IEuR0OD<j45f^22z3A$wbc)~Z;F^2^es(E8IToy0g}2te$N4qcyXn&S z*X5lI+QUBF+`@d$S@fAD*imA7h3si|F(30tTrSk98z9F))TbQrtV#ABrsz+Qzl-^r zw@dT-yu3cm>-X~dHIIHc)OXdb@k(dV(-9n=<=n=4ihEGoh;GwvYOKpCm$`8eo(Xy1 zQLP#u=O&Cn=6d{6uX*;GycxtV{VmUk(0}&h*VZ0bH#BlQ+;bp3j6JLO4Qj{3s5h_w zpnY&oBrf(1xUMf^*?fBt^s9{Xh>P?Cj&Q|dFqYNCg|=C=ojdo{9^XQ9U!hX9zgDel zTGpnzJdS?z>RW~ZhkBxUe7+m{Ma)qpw9lblQQNm5O?lcLIC;>G`GoUiH|jTQn*8Yo zTyS_3U#Vctq%jNk?O+p$i^!v#3!V;!{z~cT(>m_EhR*KV(WXfMOubY+9-W3AVxM&i zWy9V+E6+#y<9Qn8J*%@}d`g?mqYv4eu(%I-8RW@6h2_D9`;kX_uZb4av$5Db#4~6< zEh+FVka{jo(zz)i;{*TF8Y9g0i*@a^w!YPfPw3;QgIHr$#V<m0jpvD^d(QJj;79|9 z=mO57aUFdKc~x=-FUhk|&*+aZf0vN=X5~<ikNl=}j`ZM{I+~|`0H%EN>`!#~<Tqyk z+u4qzbz+<u>_6}FpOxvEj$Y!?Sb{z-d`DVvx)_3X&3K^&d2;Tf#{La`$XuVwGe~Z) zw*&2qXkXMhiL#P?R`64vdv*s6&*Dr2p4D5d&_LQ`zmIgGoILJUT1gY<8`9LRYY5tE z5&5=nV}6+Ll$=9ZT|XCF6V~-}s&@t8V*m6B>=SV0Gh?_|R?}xHuJ%f&%p<CE$!1N< zxruepBm>~bnB@74jjKuybA5DeIe^w2aI<Yu{Zkd57~S*A6S$~<S@k>Si=PJmDjx&c zmXQ~?pE0yGIbQ2J*nB*BPdnf`xP?9vX<G-kz#r2-Y@QZ7srJ#bb~ju{frE2+JAJRl zLwWLsxUU0`GQe$n(e$;n<qYwv>@)B$U7Ft-%g?JXm9-Ma)P{QW0q&jjlizAbTk*Hm zHX|{b^a<XxerP{vFSf1zAF=h77h-K`lSVK3+QT-wzM~%6`P;$RbC+-D%q`_D`k*=_ z=h@)1XixMp<WY_`Uc<-aP-h_@(}(tboNFV$vW&F%so!Y_On(~AkAQo?2mcH(ZMwj| zP-e7tXuDE(u;fUkQ_kkfb4<lc-zH<JxNqvx56Rw~>d~7X7wH4;KH#IygEtaSe<%2Q zfroY^^FH>>IbO~+7+dO;mdV_L^%wPkV<9g(P<|BU?Azk?Dmr4msII(#t7|?yF<(>{ zkJ?c;=xJA9WO3coz~AfJzWSn`SRQ>5))`n|FOe9ZHY4|w=$@Rw-kuz7q+4S-^03?F zGVOek?Maz0>SBKwFKM)XVE>C>bU2zOkuSWjbOzlq+9;Qj@}Bxt0v_(=oCM5$F3QH& zIof&?<HzfuBbkcR5#1va9pO3-XB`uic?R%zLobQ@2THfVhbp<q+E@JQ>@0XdxyX7A zFy|84FT{J1gMdq`vvL-KIthQ&&<<RzQ_}T97hqq0l=Tm?&-j6p4SA_DFgu}r9E<Ul zc5%J<N}If%zBpZRc9wRrd~gZ)xnDrr;yI39l>fl-9W=#lA`N=^j)&TV%onYwM}61W z_Uf3$EUe4881-34e4Dco@iT%4F?)xWwW__)rhI$(L7!uP;N%AWXTj6B?9O{~vAOLi z>T!PS^<rbh>=GMaj~FBm+!lvZ$LR|t_SQKaduMVElliir;^nuYeh2dDNAb?sKTo1= z)w^P`c<u`7_CwcFXvZ;GY(x22Y*R!T^^m&i#g1}^5AP`{Zkhek!#um8bAKD^8vQ2# z??U_V89L}WiahC0<L8W5pD@ep*&2M7tf#8$9}ZGmW-t9A>uP*LyYTr&8szy4Vou`R zWwAQ&rF8v}*XMEd-uZY<pMA7qf1v8DI_Q&id9+@zb-JA6HkugA`1||3S1OHtp%kC( z@SUnHv;XkZ<Qr&eom=)lexGGZV+QMhT4(3xI}0!C6O2F5*h!urB5u_^h2T8+f;E@K zcXMb3opQGj=uB*x{i@s-10Hjq>KNNmXYd>L0a*AAIvE#HPr5kPEwg{~ZYgv9P)_uR zY1I|#sxPN-O@)4V2F;`4pMG7>2ayJo;X?1o);#y1W9GWbKabI<I?`zL)>vny(5CJ> zOYkaB@N7}|UguoHd~(aI&f<eAiidKiE$j21R(lSH@(gJ4_NINf?w$+wF6P~HX;!>E zSI8I|^{)%wbfr`5uvymvB4-;L_6S?iR~mgS(!GY}I%CFOfat3|+dB?jDA%O3_P*&t z<M(trL0-uIi9UlQ@4bCdnWIBpE`4V95bez5&9Pm}Sy%LdIYY+8*v8*ulr>9TIlQ^? zaZJ}!rg`9N*5{}6(d3`RYgjw?0k&sd*KN;8`5Qmqy3jcxIimqyW<it8Es#$DedF5Q z=Q;P3!u{Oqr2E&K=T&=E(9M^@ciNA$8N35bnB%g1lMnLe$fK_PKqqVXzlH3FbFJ-@ zaoqIxS@h9P*!WF46t2=4JXhdcXudsP=?u?p1ZZP>Y;oCtJ3hYYd+6imJ#&rmbM7Hu zinvvmyy_rr<`dQ5cX<B3-D?Bby$c@7XvtaLJ;wZR5l{4Nw|wjL3gC5RbIxOXWpno8 zK_BfKdnV$a8s!)CQlAvg(@*0)2-2TlS<c#d4WDktkzB78PzQU5S?>98+;hj{)BW8U zPY(U&T0u{xGicYjXkNbS9#ymc;(1BK$(pqL_VV4KoxW=>&%XQp(zkp+`prN_95dIr z7XSEqW$)%@wVwDtovZzNroZ;g^*rj+PqnK2v(wq`UZhnI5)O}hH;Z^=&PN;aLC&_R z?`mNhXNYgTt1Ra}F2Z-6b9qPjJ_P+R%H=)_nHTwPS%qsMtQBcLX1i)jX{;AMwq`IW zPY*T~rnCCKy*p3hj|V>7!{gbE;z9W};c3x*1{sHriTu|0WoC;Q4|N^yCWT|<T`wUm zC?AiFv6{BIW2{M=o|y^pl7<CnJ4U*|WBQ%=b0B>;>&h-K9_xOS@mN;vUStp7ML#BU zocdyg;fp;v^f~)Sd|uZVv#g#kW?3y?jB}`o7cgFw%iIz5?eY1$)HnJ3{pgoA^!@0U zaY-J1n=k0mwA+h(M)rzm(|PqF76Ws?f_o3X{;EA)<(V0aZR)<Kg}ny5^Pq@xmK~~p zIp8!uW^t<@(-t*$khl+Z5o^t(tKWTnp-&+Vq$dNteF^FBhaCU^sJGO=_*$T?;+~P4 z{<dqnS?50NS;@0g`hR`L&-qr!56`t^?yIHKw2=<r%2EHg=fU>6MvLG1uuz=NJqOxU z>zb_F69T?Qq-8(N=1TQ%bM|5Sf-ufynY>#Q#lWRi(<>wfW?6&pt2MvX==bJ~_`CJ< z?%AkMrru{(XJzk1aK_^KRxh3hKgEx;4S9Qo^LK2V%&!;Ev#j16!m?U(h}i?}Qv3a$ z(?FlzDzOUg6_;P|%v)2K&*hxUJ)xxw?g>Hnz~_bcgna%+cSP0X6`t3(d$F6yvc_3C z%JX}@C&U<}w(RD{Am0uB0nYEe&Qx?hrk>DGAWdKKgSgj3A3EP2Qx^QIFGF8PT^#xU zB^lDD<8xChWGVS3ThzfiLC(mB`-Yf<CXr9w^Y*;o^gg%5&Rn<QIYj|@uVruQh!?-* zNwduvX#ZySru;c?sp9)Vn)4RCrwL=HkETA;ucvFwVJxqDX5!7&EUPzHv#i!!EzgS( z8!#qLAy$xkgnwbBdrwYdkNBNYHQ%vAe9ibJw>s<gugL${e4Y2^>m2Ceo*m;Wt~oup z=G=`sb?0uD)tkFnR%`C2Um*?T_4kVg+9{qzgHO@io%7~yJ%cIs+}a9SmA7{Gi|>wv zJk_;LN`J9VNK%L9@^<dLcD;Ga`E+i-bA9pk?w9e{_oLr*rBh-E=ZoFDWT9L@lkMSW zwVwYR%&%v<V6j&b^(jMp&et;S_SSShtlC>69*dnAk8(ce8j;UrGQdM0Eqj0KPJZhv zUR++JjV|<T4Q*vjQo%c((Ys5@G0AuOYd)Vckh;LzhQ3L^J(H6(^pdm~KGsiDw?S*O zzivXBK7n?MIliV(V1B)Lo@MoX0?TUo1ll9YzUTdtA9x>j&U%Hk)bsT$tLN)kR_*KY zJ|B45Qt1@m?Dl|9N(><Tewd3#QAWEpU2FB@2i=n`qC7_&I=7NvOxqkHJ{9S-mScZk z-pAwF0P0~g+oFx0^_)Epm~v;C(-Zh6=va>V@+{<;Z*d>k_IYyt{KWTcW9P$9>lu?i z?ECcSJ1Da6qwk=U)HfD@zxe;M_deipUge$WnLoBiwvs5I1knnZ6anK{m~k=*<5tN` zh>{8{QZ*4>Z|kk4SaRe<v9-2BMOUsh;O;uNF6%7WuKTPU#C_a8E)89$&F-dcS{w*% zDCw@*o6^wh76b0yTnNFTZfk;L-QVv$@B4jczL}9t2+h6sSv}9EIe*{tp7-B*&!6vn zYIlhn$ADg>iC#tXT<<UT5<m7QN{{Ep%xlF1<~8F1`xdP|p<RwW1@)cuEJ>!sG}45+ zhTm?SGs1nZ_P&Z=OCVmXuYDq2S%>SI&(%Dg#oyC&<D{>wYk|Hjo76e!KVVYlG~86@ z(65#{$GlcL$Gm1bN0}k5{;AvT28~F2KbHDEH<?F3-i~OV?Uhh3+Lhk4vHK7gTb)>6 zU_V|>S?K~Ev<*GFE-L#a;7<`am@aqvJ;U=I2^o1F^~xxl0}S@l`cgpH`qGZPcEq{H zAD%^f6lwGYr7!da8An+;qYht@de3;I=ZMSuitzu-{+!ZxpI{laX}BLOl3mJ{*b9sg zdF_kAvvY0S<2Iew_aJ?n)I-QG%lD~`aco=t)FHrZHkP$Kd)9bP?0fR<H}iX2z*}<d z3Vk9?g*L?1#!Jw~&Wb%L`QF}#wAmNdL)g~5obqP^v~Az8cy_!+{XVM?yh+;};^s>X zSRQdgIGS&P*7oj64&lT(v6nuj=fs$2Jc;h{L_5vs{r#*>nha%$Ym+gMYmBXQig~T< zFZ1f{?`rtjLBDA?mCwnw$^SJ^n~Uz;<s6B&nKtCL@U6wC01p2@o~Pk%@n*CQeGc!7 zyxQ|6j%%+4Pw9WW7VUDpW1nB`d0GK5#dp*-ZQB>J`T51p%gzNh=?9sY4FVsVbA2E4 zGWlNC|C*P<SK<99uzB=*UW<7d{Rf$s)q?pF&f<`-d^au}*ULyNu$=ls9NQURYED)~ znaBrZdG)I($2RXe8;tj_*1W41@RRc{wkhpL^DA%bIPSC>_nFsf+-F|>xbJz%@hhBn zaa_@FG@4(QA?<oVUz>MzC46eyEt!*}jGbi>TZTC2UB_$R|GZ2351cv1YPjjV3;k+2 z?_yr7c^C7V&AUWSUW0bKKqJ!L)*whfn|B@1JbM?Ew%X*BHgpPcv1^HW7kU0_$_n2J z>I5#t&E{8yge*LdJeyy!KZdjD5b>cL0Y*FWcyGbQ%&+WTHS#9Mx~kKZU3mv6m|uOD zWiDcV#l9Fk8KW?N3+Gq%ZjqExJHT)_zp{6GUXA(HU;KdY;dGI%z)xtyxy%n?esxIT zH_p%ctX<4|Uak3+yqAPN{jla&m#7T=ziEEebp8z5+WS+q!8yjU1|j=Vw&uWfGMsPZ z_+@47d`+*U!Dl9KxCUY0%1XfDH-%b#x8uU!I``k=<k)QcER@BrKyS>h%`v?OTgUHc z;v1Gdwaw7!J)(<UOsf?zhESIG;CIetci(cy%<io}H?#X4_--=tp|^5hp{!GC8`NFE zwfDV54^WPN3ft<|wy3}ME?2R|9Q|VFxO{)Z>s#acwAg0$JsP{?wNd7^8l#z4KSukx zx%n*Y57(dScpt=N?6ozT#2WBHT?3xP8t|B|0n2y!0COX8LVt!49!8jBu7;bAxhT_e z%w=AyF_(GG#@wOTsNF%dyGi6I-e=qx>@yDeHAIokLF~n>TIb)HlXQJ|ViRPPHY$ZV z3dgp7{PNv{fdRMdp!O>h(6fGDrfrVjQhy~hqpqXgKRK^x>tBm@%e9JQ+n)CG;)j$i zF7JlyaS<<2mh|Z-|Kxs^AP?zP&`o%SaG$rGsbi?Kk#XH?D<ND``f9kTE}%?HU0_}- zU0_}_U9dGr`b+YCF5qSFkZht&q1}>x`Tf+W&nkEHYfdTdlsm)y<@z;5k-JxdAAPP; z2n%h{_5zmBv;=%vCeO9`KF9aM{dYBz`l99J9DR~U27|m%xTHs~hI^6Ui+IuN=VB+q zWzWZS7xKtQ%%|k6DQ!OI`m|{p1|LJ)?B`V|(~^(OYsE+AHRGe)r;Ik~E8{y0`0lH| zA1>n#`3QXYZL}qL$+=Tm@h2}0|7N^=B{*{YLOrql2D{aFkec>0Jil10xb_S1o9%V9 z&`B9Hm0o6(ZH=D17uj!eHj?sh>qsUmoxp`MA#;zL=FcBPctB-m0C@w54|>^oX@q*C zW9G!g`UF9p<Qbr5{zLovc+7UMpzfuVSNJ&eRRPP(8{$jBdJ5xw-S=)#_n%^pm}mdM z$1b$Txd7#g^H7<`!#16%RV1&Q`l)-c<Q2m5U1Q)VdP}|G9yH}%!_dz<UrTHl%Cyu? z<~7qzk;4!c+Q?~p92Yu(BkhZ<`RM&zTwmgQ7bWDees1^bH1Y0Ld6qt?jNy!ttevFr z+lBI^h4{aC_cR;uKe<o;TJa2XMd2CyKp&p?20TkS^nrPpTSPn)o^<0~dgK|;NEh*8 z0Yk%0d4@7AdB(hEJj<aS@<h%EDNpph4>wYm=kH9T?2wnRq2deFpBaqLWsBVj#{>KB z63=BT|D^BUUYtMs|2_V>r$L`q{9A>**P4I57vP`BQX?-GdzawFl5<vk-<3X!&6O!D z%Q*(%o|zupYrkIic16bNSHyeNslBMj^0a4Wmzwz#v_18{emn<cUMqisdClaXG{8Bq zhO<z_rPUfA^IFX{nO8s8%*)z7?V!!0M}$Tgdun<%hWf8`%5PZw?jh32`(5H^!lr|U zZGH_3V`+P>g7;tFx`A}%e!*|vHkZAMb->F$z_#(dH_=Y6zMYr;Z>=M13p!S}n!hi} zcWKAt$o?D8(U)_#H0Sx^B7CqJ)MNSAgy#+IHkE-_Rn|foC?|LWI~vJA_lCuP{PjQv zus`59<_(~Z@itjM<Spud_mV_?hx*_%bO8E@HK|s7Uh=H9j$x+XTpOkRll>IPC3(40 z^;djGtTlCUT@2sB?%lBXt;?I>^t8~y%MSe-_LY7P=l*lZ6Ma&cc&|Ww8KG6J;yTu^ zUVQof)y{oj_3|4(ux9Sfnsz=)Ta9<e?%6P->5G=WdmGlgyzl3<4W8wv-N~U39N#!D zl3%(WzeriFYkz${S}!6DTmNdck9thkiTdF`_USrNfoItHU2N3nS-L!aW&aPlPTGo( zM?3@CcA*UC7Adad#kBpV+^?iILuiO|uQFd$+d<mOSv}O}IbHgHgoSWI#{Jp}(_7h6 z<~6gWq#t2ZpAGi8CbqS)&De&&l6GmsUyF7_eHI>)S50hsal_)@ecogrV_s;Z2Z6io zhl>0Kb^!JMUhJpxmGaS9gWLzQOFbjKsfRL`M3{18_jNM8Ga;)cWA?6R74mh#b5(%z zTF^MM2im^KEo?)T@lduz&Y`2EAN2!tAb&!f#Ro<@<weF~-23!6!qNG%#M<t~=q&HJ zhiyAA`%HjM9`-6vdVRR*`WDJ0^e)x`=C#s2<~7qj@|m`hcEM~e<mdkieF?P-Dbbg} zF7Qsa<BB)wYk1fDS>7(Z65Pm#y7Q~bAEOm{#Wve(74Raq%aJW+p3;=Kqn~n4nf2wH zU*O}D2!rpEE;8@^%SC~kkbfJ$E+qdK^m%}{>YeDI=pArqX7i|<_4JJS&Ae9p7M&(d zY|lf_ib&s;-<>)Rz~A~?IX_uH4!EaDn}FZZUXqTnXhX&W;*WbwWQ-L(s#WklcjFk# zv}R*0(_4+PY=e6t(gyKHnEV!g`Z=JCv32by_-1<A%6D1NF?I}NY~42@Fvbp{Zv#pL z>WTTNLmL)f`~+<?@S#nqdbzPP8o7f^LwVX*$rt_x{LpvWQKlt-nb(TH%xk94rKasR z`lzpVyG67s-{{0R#WCE@S*z_>u`kGH*@0lpE7JDD{tT!*4#NMJ^UVWp1?g|FlJ&6e zovioLFOw&zM;rz~d+KpRTgsC#U0@-ddI{Pj`1Zr6AI~#);>@(|vs2!~F`722nSEe- zEBnB_R`SEVX7W=&yLR5_BIy0yD?GiI9YH<y9mFpUY1@RqFa5RFo2tQ9uuU6(IWER> z@Ku3dZ<m(!p}dR>@OSB-GLHU;EfO2vKodU(y%Kte??nB#vpi_ectcxc_u6*=2g(h{ zLDTnozIYs{cddBByk<P1EE6{EV706^5Wk%7lxr37|GRgumi146zGvRax)|~~A0j^Z z&WzaSKGGTc`+3yM?OyY~&S2auqYd_{jPlVK%5sS7dl`$5AuRp^%5@-*{gyqWn+~P= z5pLu|K)c}|A|K#OodrH!z`@>?q3+lB8~H8zOFtnTTX+_#inEL}fYHd;#y<VPd<FjH z5%3iJ%JCO{;TUIlJbkf!LH+#+oRc)DHW{0l)@*EMdaJQHl$S_8(ROoM&M!`4?PjD_ zFEjE@iXVoYf)1yE%WEc&s-ORK`Zw?QT|+%j_(6TThBMN9-gbVU_k&WiANy)*+OIXF zCg$Ffn(+Ql>J0b<`-(XH7=8l;yo7%k?GMSGOkCcL_;NCqQkJ{d<y{uPe$Ub0Ne%jB z9%G)`H`-Q&VIxBwi}weZ*I*;L@2O)1^<U}(SMH+_{>E1WzTOLiy`(hd>IcS`@Q%WE zzKXD}ChgJhyvkmW!ln;ubZzECkY4p;)eknu;CP|yjj4xYc}SgImtQ>3Jny%s4%8q& zjH?XwA}nV=ZO#&W6CLx%`gQeiUkLpxVz1lbyY9~*T!NjUyuqh~oVNLK5^;O4lr-mA z1@0p}tF-D{Uy*gvUapU;|ItxCCiXaGeOPEqVJ(k$JEk_`Oxyr)>Yz@+*2oz+odXoD zE$CS<#@b%O-n|89=6V1-Sa%1m^j(Iv-jvi^iM1eKhv)99yKlyMyD`*#8|p4^XsaJ} zs<ldV4wn0CC8U*r8~H9_ql0hf{BtN%_k94C$AdKwnFmvc>@EP&r*(Pp0aR~a4)#p3 z7T;nGNas|&m{axWx@8yEEh&fb*;vmXo~ss_Q9O%Wi@+X5cStL>U9HYU9?|wTp}k>k zZvgELDt~+Rm%P{cT<RS7($9Iv4I}rAkB;r!j`ilj-EVK;Q5AJ`ewTd|;eLGMFvB}X z0rR84y^8Oe9;p$Q$V4Uwn1jOWWih{4E`T#_<-I?Wp}Z<y8LlZ)F8WbM{58bOi1&e~ z^Z}Wd2siqav-p0iFW1~&sy(Bu7SW$P&I56-Mt|DQJVB2#l*!WiJid3EcSYoN5+>wf zIeyFDN6L&a4SAH61YRM&Ep0mLEQw>j5$-F7MfuC4zsswK(no6*!5QnCGKO_&T>3?N zpln(Dh5Jxfd=UDRsy>t+KssqanN=F3mDaCHe`&W#N1kczt9cyzcn<Q0{MDZvUH!@5 z#{C+<HtWt$;dcmS=_5Mq!55Y)%ld%VgEF+UxT8b%7a7(&byMUu+oj!58EZP{B)?jX z7tCulzhPd(*p0SGXSQpy&G!d+p8(GhJ^UKsl&e*Qzy8e0A+e7kj?_`&-E2*92zcj4 zFdi{qZF?u+6%aSNGfX>3I@4Bj?omP+$`QvV+^>CZUlTh$z%ptxI#8BzeP1Hesqup5 z!&hmr^HsH@8^0gB4Y;=UN&h0pc+rWSYjJ*E>{%D=hMtYi5Z5qHT*G+R66f6yz@|^C zO_wv$SeF}tt>XN57{8?5AmDBE<A>PK0f~#BnrW|9Xj?_c)kceq4>YOEGc4d=_F2>) zKv--xe#s|}_mok>Mz~SV)#fs<LC%A-d9>w?u$ue37lK83d9`4f-7nNC(r;T6qYYyJ z`ze=d7yFea8!2nGH6nY17$fxDXJ(9et@AdrPsfRkOlzRwE9-Z!!lI2FsCoPbmavgL z7iKn6c-gG1+DO92S>Mmx=yf-J1o2I}b}^!MlQ!D=-i2_`_f%D7ljBw|@WVN^R9CIy z*J&t+dd`mZx^QM|Ir2<CsTZ8H(gtg|sSQS%mNuAqt!yy!8e|h~bpQwIs2@xGyDOO6 z`E@VI?sVXb6TiAMF6N5^P62%_2e5eFTXdauke`Q5YDYV?ecdQW8tGZQ^CwZ4`bL^@ zZ|Nk$lo!&%bgtR_1!Y>&f_bfI!MtX)$N{e$+74+Uz8Tj56SN?HOVGlvKckG<4XlmG z*hU)IULwyivVV}d6{<geT@C#nMqV%Q8Ag6VZ5Y$KMqvN&oAl%9hY{A0wljqAAn#Q~ z`XJLO(|9+DvNy2K`*Et*-y{Erb$pmg>}f7}zC-<X+D_6<#-9b;%}O7WvaY_S$##n6 zF}LaFT5ov{0<+*8{qFKf&^LIe2=IuftSbX&-Ai!CRlg`B2a%ss`m$|=!SCiag?SD9 z4(u}f-vQt7Epj&Ahxe#oTmdc}wTj>qog?A-5!yf8J>yU}x$b3WKt{Bltd*?K`!P}L zM0ZHG7>{2u-GT3`MeoA_y(iJnTu5Kig=y3Sgvo;+1`YTB05oj6zc)Mg)*0^a9rb!4 z`i-@MG4!FN{VnS+#zoQD9{tVhue{TV@?9F|UVuC3=`ldLz#19-r2^B@PA}}+UeE`6 zoS9i@<F{$EH-4hx20ySmd!vj`52dK1b^7D=HB}1gIo3mZ3Od2}Wm24r`f@VXaP1|H zJf>yvI{`g8vw-$Z4-r2Vw3AhMTo36C%F!-89<-Yd$}I%tXwx68K{rST_5*F^r5<Pi zJ0S3f-LgLhK5b}YA_)^Zw-S9ATA%mx%qf@6Xn#0X8@=k_%sTh>Vdy&Py%6_}K5uRW z^ky1ml5{5wgt<OhKv;OQuqw5Y{rN=2^(y`0bDtkWKIgza`1N+je_M&?u)%-vIopxv z*GJ}Mt=-R`FwWuK>yF?KsVS6`w(y<=`^>RkY=Gin{fg*{_og03zf-h7_+1G)k_YpB z=tt50{!!FxXWx*vFHA#x2Jj7!Vxrxiuw7s84-15adR3H_Zxx_z%2<eRXJb8&1L_Hl zQN92?!SB>C!g@|MHNbSrIP^*6vieX;#v9d%Nwl4_GSCAVCs-b10`KK2l|h46V}igX ze8?8wxuETlF%xn{dRx2EHy44ctj(d#a!|Hk$^u5s!w`52I%WZfT$A;is6O~o*GJ;a zHAA*VxR7IeCzSX_@kiD~@8cFxmO4T_3s~!duN|Mq1+L`bP^}VwLlg0`j?FFB?-v{H zvjVSO(Pih!YqkX)*h|`@ZOWs)o9+<iz9IFWbg}d-!t~9k&)s3V={fC%q<dZyF7<}( za80khR*`mfy?5~d^~cunTKX4HxFY6zP2ZJ)JW&tXW^X{_y@~j~M0`JKOy1~ujdsWx z&tDacXPQo4dA)|O!7$eP`)d`~L7h=LO#1lr^oZNCRns>5w4WLtal=2QX<Bc3=ZL#+ zT+@nL_d_FYYMrLh2PXWq#_8jvF-|-^hd$nrpPn9Fy=AM)`d+OcwGF-MWjXSd{kZ{h zSH3^Hf3|+zk-C@YS89^=2p96dU+K|Vo^#m?=$)=LxC2dKvK`x(-_L!hCNyq>i#tiV zP`NAzc(D!GhK?WK^LaVv5%ciP;%|jMN7NVA5n3L?UbXTayq_Ul&_{fA*bS2ri`UU0 zq@UWGCHgITZ2dk^gUl<xM6Xod%X79){)NS}3E6*4*RBU4_x2r_=#1}yuej2IMX_Dh zM!2sgx*$0E^^FenQ*Ex>i2n1PPZ*Qbxj_EIGL*Lr<W1xOxa%2FIZGg6$OrqO{g*qy zB0Q+$XoK$=qK$MmXd}lufS2>MNQ=I~&f(1CIXTmTy3J(a6zUZ@reNME{yxeTt$oTW z^F4nhe>vJb8sr~fK4pe;B~KUN->B=&+NMpEK7&`(r(WR8@g#arq6N-L{7hDaZna8e z!?S>I{(h@(Q|TV8!yc^DJy?9J`QvUA*SsJLV~_>nxhddzFL2$|=kA&u$$n_-hQ;!4 z(4Gkm>4!<)&9{zZZ^b#k^8J<vn@;-j{eT?x4}R1-{Vl?eS!aF>Z2S<~lRkkivR8$= z^vg^RhS>&a#r3z4R@7w~n`dKRjj+KVf6pdhmjXC~>r!y44_)#g%1htjH~enkk9Gj} z9QacnaF;wRFk#z(uh6CiOvAsh1pZd0d=X_zOO)Y0LaDy*+#8K($n#%9L)za~bky<L zaN2hfbv}wZ8$p|odD;js$rGmc3oZQ^@L->d$13E(mycya>vDecZ#A47K|bmWf2$9* zQ??DSurHkJH<byrF%Z-V`?6FW+Ph8b)sFxAnpDAXfJ}C17=2qc8^Gp%;*#=-y7{0k z@j@GZt>BS0vM*wN+fThhd5^o7G5Qx5f=_#+bYFRzv?Uz_9EUCfMu6kWM?H?_XQq1t zSc6NzvVIIKQAYL4?{$lv0X=j~BaJP8YPc<XBm1Iv3Xm@6Bp-Ca{OTz66Z5_olx8QH z$9WjrF3-W%!cW<-czRU*ugG3hA8LEf+JVm}^ApGm?QB>-rS-3BQvZmS<+#JPF85`> z{r64EQdXpYuoqp#6@Jx$ME$hZ|Ibb8_hI}TOW<~emY4IW%4^k?wsvXH`^>HSrnLF? zEsgEvo(}MBRbOfI?PX2s?@#pYN{{OcUv5%%B*0Z^6Y(KI+ZW{Bv--Z~D6<LLirkZr zR$poR!ar|pf5l0TPa}{q!U608er=9Nd*2g`RoI&q8_<LDT#M>KS%$gR%y7x`R$vHD zn3q2T-zB5IH)R{;)6`9t*D*GAQsr0kWj)&GL(ccDN)>E8QyauKZ4E(TWQ0#aepTAo z6OP-(Z?XT{mgr}n+xo$g?C8!7i^VSnc{bi#p2%c9jw$Oyp;n3R!<KQL?Ivg@x<Wn2 z`Icrny-#RSuhU$opuW={NAw1-L`M~t>i>%KP3U9%5kADWV)>&AcT(YU-JJLHM{<a9 z|7mYmn!=UxF}_jR#}zK^aENaXyrOJ{bZV!~*s%EQi)yFyXn&ezbiPzTIG^+}foC_; zyIE#I*AdiqTG~qDZRd+%_kMbI+mFsz9n49xgbTeOZKyZa9%YSZTHQ^D7QL+!+mYs4 zCF!rSmG*W8?Zb{uNZWqCOu1D$yWc(f7RPT!n+@NIc>4m<%$EXBBiROD8sq^wChMH6 z2l}K4uU0`C$Fn^+69c<`fjOk~3;ksu)h1@1S6XAvoysBI`pz<4!!Ccl?tL)N#;}9y zx$g&F!N2R0^HD8*jm(3nH#F<6pVB?r9QlOx7_JkxGY!9e!k^WtFCi@Su)T}jtJ7Q; zl{C=xO9>cht2^9Qyk-vbPaP|BNXPhxF|a<J^lp|;{$pQV_}^8l$o$Cebv%u{$nK4_ zxwOR52hcHxvXld(E9EdMi#;WgeejLrtCWF!U|zlAJaq!;Ue<IC2e4%g%leRj73gxh zA9*HMPjVkc<=yZoNxs+>_a{yAiI2*md#Xu(Uy%Q2P4cTj{_oNkL0sAfUp;QV?Gwr` z%eytG_cw{W0fFJ`-O4sYxX^3tG5c=>a<5qPj0Pv8Jj^}G_XO<s1?_&VN&cYa?`x|Y zQ^-$kBXzyh0}ilBp64Fd_p$9-#TAaWx!Z#BCxSj0jK5*pth;n-)}<bdaAtoRaUL?9 zFg7G<bvtmVjyPG5wzKO+jTiJcufMJKD{W1aHmm8oq|MF|0w?iBZh9y~TV-ccXb)-Y z<c$B^Dmm{#o2cv3uoI%|u#atSnz9dDN7~AI4cecEEg>wKuLNZeG%0(at}N;exLY1! z+J?mwe}uY*6U%kjIwRB9=gnvLYiL1ye^76JiF)%P9LV~?pdR;|Xd_`qQfC08#rYh$ zL)&mXw?td#V%RCJqqOJ?^0dzh*&UN~8Iw|+<Fu+zIa7SFm(aT0Fv}UubpEIH(uLOb zkQdZ@WKH_*h?`t^8Gs%^E;ybLp2>jGh;x<}xQiZIIr_A%%5}wkgw1VTPR2azBkViz zvpybcT`zqs?BfG#(w)%H9QALBvsDdy27uAc^O1O;hjP@-yVBqzV;><69I&PaUe?y& z!jLe{(@XHi__aV8MBB%S58}^iT=3%<k&qG5S;#B)N2C1_)<3}dY_FLgqP{fcd@50I zqi<Kvf)fsHI?H7h4~{!V&tBDS#UY)<!PX#23ww_=`5lgshB>U&wPUTW18a4iSgRw? zWj$7HO*jv*`4rpWI_9I&hPUSjy)A}JLQdiP@m(aA`zXrMPUMsiv<2<v9~p0u7QXAh zR9W^bd<Sf)vb3eb56GkgF0J-*mVEyibm@VwNFUpu@s_=c8{V&TKcO>u0>7lYRuSK% z-F#-8&*of!{)zFT)jPdQo|}Liz=w^_;n+H{UpLovXS8#~Xajl2`eL-V&2cxX16U>_ z9jG&czR?D7PfzCX1Fr91HtAadFj!9Bb!4AxeusWj7742`0va={K4C|#B6(gO<`)kJ zJSb!QYBqj0y=Rv7fOiS7H;T{JmOiF>z`n`3HjJOgaA&HWap+Tem9=ga_?@$|m`6__ zT<wncw~L75y-&_5{W%A~Uyi;#F6pAv^g-nu1IOXRL3yX?8I<n}%BMA*^L&o`24BxF zWO=rLGFnC7!g>ae^?bU=%ivMgJUow=!V?)Zc(fT+<wF%=p&NW6IYS^cM82P+oqxWD zc}XlU=^-f(*x(U;lwOM~-TDH$Q7*)H2i=4|HU~jHJAcrRGX042SA5z9oo}woW8a+V zkgF#9*W`D<*R71l0d$yaOL0G*w!4JiZi5M2d7g{*%jOc)S-CsL<W+G{m?BSg_$*Z( zJRc*T&=dNysX!*{_RHD+`h4UwkspRn2kQsERag%ClO9Cb=*|-M1?|iuO>CIGW8~@K zCYetD`tiv@W|rTmXTiunp9daVJ^0Puhn$x+kNUc8%Q+Y6rajhkUfn7?q_3TCr_8Y) z*DOe9IlqBBDMnb=`YiQ9chU%R<C$8;K?ltiiQcIWi)=;utFl!NWUB*kJ5(n{w$QHG zt^wo?AkJUz-`g2Iu0wUUkfi~o-6_;jn<284vv%N5QD!0^RPCU&rFH4E<tPKN?L3cS zd-PEmkrUu;^uX9d8HnQWf5Y}D6LPNwVTI*TPx6xThH^c%ipVb30n(k;4(X1(oZ8@x zEJJ?6uQ~>}CEeF;bw}xvcfdeL=}+o@eR_!NuLJIeKW{QlOzT)_WyiGaCz_Nc&FEjy z&QaIt-!fbP?&N*6FNrwit?2tB{S+Sr{3k7KY;AeJPqR6hz1t<W5chWzmiUMxpx4Lc z9Fy?Y&VRtZG#jr@V&Ah{&-&N-Qf22>Xx)5b|Ga6PCCWG42^*B{O2Dow3qLxUza*dG z>y!YSV=d__=bA}(#Nkg!x~!!kPJWbb$nRMk#rxLA7s?3uFZu)hfStVjW%6C=(275G zIMW~f0s8l9(ANCKB<+rZ*Y^F>=)A-1v1?~|-r)g^;SW??^&sd1+L+Dfnm@-X8D}6v zJZD5Znun~*`Tn4+yDBd>0AoPvOSOu>V?xW9XWQO9Rof%}Kz?>r3Tt|}7a=G^{u~8g zj8A||zXIp+GV~#O5T;I%m$XM^ju%){`z7GJ3hV2u@~|BUuS6d8a7Fb{YKCE)K|ZT> zIx)VifM3sXN^~<CTR1L5mkDEc9{c53+gboFJZFE@%L>o@aGki9<q#%axJHS!Qtr8Z zM%EY6ej9NK*5CJ{yo>>Ip9RJ#<hKp4l3yvedt|xn&$F#zKaR;<LdP-jMQgAp>sPy! z+>5tn`HlBiT-yh(mfw{;6TSPr14a48eR<&-Y1mWZ+tB_}ZJ}R0--&)z*J|JS4g+b( zu`Z;i%;&4~=a2Ywp$U28(+{NvY879Hej3h~c)EkucDIN6aX&EKvF<m$9-E?UoAjiw zFzeh|{(_%n{(?8O2|`=pyXQsjVtE0+tyKPSKEVF;6CULP{Y>&FcQO1~Af5d>YCGjl z>D>-^o%(JJ&$yNXc@q1@a)F-YQC{wI0gtGg@O@;iMc>DtsXcV=7;NcK!qz_9a$MPi zclp&0a$FZ1=yk;AqvW%`b1wSGd4CmY^shMXci#YID&L=Z)Q_K$pFtkvX508KWqM|| zje7*{_^`X|`~}9T_{`QPT;Io@a8=l{y0csQE$1TO+kOSlF6PjWhIt>-Da*PZka`f| zLX9*Rf5Y+nUZRt<aqx#WGEd>;$`?MfC$<v)59x1hlo7@nb;pmRZTelbWr)jrBEs(g ze){{^&#^U)6QDVL`_QNBiraUOtGsZYyASDtW6kdgbr26d^T+iV;WzEtQJnir(1JX+ zy6hk7>Ulw?Lq<OGThKG$62h5%6V`_P8N%e;+TPiivO1*Ah^zAj8_#h4_Trh3G@k2= zeS=T95@e(d8L7L&6ZnR*LHbBv7T_DPzZf5u-E=5D60gB!u$PfsgVVHl4Nm%v`J>Ha zQ;=ypD^Gd1Hqwc`4Vfo%tqHb-{t53g!g!ZDEp<Rkz)TY_wUY)%>d`*vm_%8wlV8N; zoiWNe_=mYi^qpn;COkLDy=l&aO!m4#|E}*-w#ByK>_)X#5gULtn$(xbN1G$6&m7qy zlr{g0ayTjdgw8<@Tgp-bfBNx}Yyn1HTxfM+S=(<gP=7DNTsy)!$(LR<d<8d6hc2cz zEPk&R<P8ON<lZ#$4Si91Ko8@(4t4EJ33w}exyomkqnxu|gMZmvzGE9$Z~w~hIkEmB z{w?iapU8{fi|$3dygqO9`Scj$J|AaG_qg&6`CHyI+B0}F{M|m@zk$5){21ZM`B2!w zQe)jaCr5jBY`IX~>O<Mb(H73_MB@P0<NF|Q95=+?fQC_9DF0xhJm;-peV%!fc&*|J zeUN1tlW~p?aap$szq<n3kmg0aXS`AJ*%sso?H4a#Ys)$Zoj~7(4#15(D-(|91vE`_ zKZvqGf0g#7ryEQ8#5JK4QC~sV<M460&(Mc{pm4STdQw)J&_&MPa&4o7<!=CAasIq7 zF~&x)F&CW!4lGaozL@fqZNp<~2|Nmbi?Lq(4EB?4&^Kq_bxc~6ezPA)6FOpzlk}mz z5`P|RMjU%>ZP(^)w&y|HiMfQFMQ=$z+z+uggfUDrhCZ~SH_8u7d2e?d#$Dn`StwjU z7R*1$qQ1(4oX<A=IS1$XOPdnOs`+=66|9}OCGvR2psw#aCP%P#-zewAW&afZMGwm3 zOuq1dwBkBafjBUoz6;j2W~@DdO&_i;njcGBa~S&+?^A@KwnOx*H4RfDf1p_l{dK3U zUE0kA4YEt*Ef4bq7vkjoGWr!l3;edjX7}O##!J*LhcZ9K{$GGDlv(&9Lc0#qM&*~X z>GvfbdU*o8EQ~-W@q3|t^`hGF_?&s8f6{c11nt>edklOaUNX)Hx}y2%v2N&CtwMc~ zy>`Kye8&4=91~BYZXHi0t~^KG0_w_|8`=?h@paua>W-kS&>8X|zJT$b>GAj>`fV~o z8!mSkqds*!ESG28<gr%qGD%+t-+(!YyhvvfFgk;_sAplEb~oY^U<$7kCi`P_nn=J5 z)~VAIEEl(t9>ct-)n3j?ogeiyTO$J;S+}FlO}jDo75^P3%A?9cp1OtitA8^w?>Y{6 zz2O~A*uNybWNuYkBV)9GN8j&3Vy`kqxv+fpp_{Uxa=^als4JLP<DFByBTb&ucACwJ z^WWJdpLWOUcW|z(=clAT?2OnGg@1XIe9EEKzmoadeva*9uKhZ;xqG$PE=zlZFNbqG z{;Za@#ePb-=G&Dp=-9D4KQLr@z)Ac_rE~FO=*xXj)bA#4@T&`fU(I*%u-}`eTz1dm zKCp$A?&^m8`7~)Ndko|&bcpgN@Mu$2zZ!HC<4qppTp!AIDs1n+dmd@q;`58{F088a z`F;L;>Nx7#T0uP=%ma=>*91Q3jrze{CiPe_mpMauAr7^x?L0xor^Ry_%kN$QOwu4a zcL~_FHR7-K5XJ+50lB2yhGUkmf4AeAJE_mLKIOgoOJYx-gHI;oJ#5D@f#LBYJj_>e z@L~PD3;jvbi~EOjQpfYs=3QA`hmZQ;Vd=X`P4O4I*A#!&ZGk&|>hN7SYmc()-@QDv z2wzk7cJejYDILEY`;2t)Kh!pMG9UHiuD6@!Up|5S<oq`;_DX4vvOTf=g8zrJ3@!Aa z*?1#&!qMJPAF%FQz`8H{(<M6FmY&ctVOG+FW@3;09j}M5hgffi@^yA-55|X&V{G{} zbnPqh?%91hK2tvZx}ZM;R;X1-UpY@{bm<!beNe8he~1V6TJn2a^uLuIU-Ene=x2VX z*@oqmd#nYt@k|cdO6|_O;uQDnx$gInduGa|mMfi}ga61qx2_xV;)}N@d~vbOEQ`4> z*Ol6J4KYt0`gQ0K(k_Y8Ko6|@rjT|i*EG?0E0;#vWl@?hmqA)bRM*4fnCa!kmsu9Y zeLnAz3-eb%-srD(^??q>xy+;B9qd&!_n?1Ao*QjU*V34`(APJ6Y3a*Ap90&cRdAkU z8`fJXw|C=y-PMsEaQ#8nJMh~+f_72f_P|=5FKK$N0`uNYsJqe2uIx?F&Tgb!&B1QK zMh^t}T(hq#zx&bl1oHZjR>p6&R^hx^{3`B`vkx+7u{{FMLxER@?s6}nj5@4aQXhmi zntS@hp<m1Nqf9^I11RI*`y2r59Qz!mSLc_}Cis2*L-4H=ebTa3-B;<OJ+18#T>5v9 zY~;9DrL6)V`@+3rq{|spTkl4^U&eo)J@tDHlCOIWn@C6a5E(zl%bt2%Ui=D?Nvo3) z_`c5ai>yQW6aMH}(y!yXq+whqUC6V3UH|s{13yuoHe_Jk$RgMIrN7EATl*kSsWaqh zk!5NzPw5|%r|_Aij~G*;cOpsqqVlVVI;_k4tLUp9N4PqRHEN`rd@RM^y~bbEQ-12Z z6zIdn@B!_#>c1n*B)yPUC;wVMk`<*<0eG=red?1*|H(7T^-c5g{(DHTKEPo=3rdHl z5Wd)UNHfzx`bl}j$rFx`GS1lk56Ag~up!V%>Shmcq^;o|LUhLy^0|hIwQ}zFef~V< z7V++2537rPq73_T9;U(3c5w#8w^6HzAL!rjm|uL5<?e^AG8l+2MF+}|(ILAoFS2N| zn?;`KP@1%ret0`>IzwOE$}DS9hBn*Eq}XrHQxp2i`BsF7@bJ*fX9L-b=pW2+B~A4R ze*T-MOn+)#=8`f)eZ%_xieJJQIJY~$ya--!Jg6cax}bWb`)C*=WlvUc!MQNnIFvnx zvd!peXX+k9euV21^!z^Pu$V==18kqLfx9DbVOz+bFrLiMX}-uF<mq*o8@4)ca#ZJr z!<fr8?5Xn{!tBYPn6W+eqkfF(723?py(vaN>6eUOusO8rz@b2V=itZ7m~lwx?bl%a zoiSF|>oE9$I>kg?$GW`N2D-&N`!J@bj-Z^?m3EQdEoo+(AZyf@T1D1+yE)z<E@vme zd;0X?vG_*ZM}Hc$Ro}=RR^Mp<lymP<8F(15O9<0fDBw5CHDvtqj7$}ITr*rjIYb+j ztCFT+{JGN7@|uP{l}jy+aw&UzwTjpj%smB9&Iwb*6R^t2W8X^F2QAydc+hSq%C@6k z2EY4Jp8E+^Tl-Mol{onG4iAYfhn`?Odaw96y=-ImYK*<4Z9vES_qg^C+=DT6k1Oo% zzk}b_>)5>&_e#G5-?`IqXv5;)+{^aRHqM&4oXTuo{rMrvK$G=@X1-7rzED5>`T@w^ zApH6v$lmY+6}Rz$&Eg|%;yrJ3IiXt*aOK|7An2a2dEFnREdVZ?5`Cw=Bk$n9F5}uI z-~H-GU#2!Jp7|}MPf#X%3gu-?fxmkgVb~b46QP{ToL=>Dig@kI`SX9O2bS+pzpD9b zb-bo5jR2oC<d5rgypyXNv^$9~<!c7NIs6_*+S8~{UpLZc#+43PkpY}Zku+}~D1!@H zC&O~TUU09IeCinX_fRJ@+jeEL&ZO2MubS1t*}hAYb;?>NT~`Nqz&_JX37!uWL@!i6 zGlCms3}r|g>x;=h<=yZ1Ka?3`82lP)&CkpL%Jh@w3wmbQ&w1Q4fnNVl)$9Cl+p>pE z$L$?+=<zUUMn2c^N%`1MTo+b3nNI<iJY;7Wva@kF@BChYen38I6~6oV(j$~5tdnq` zXj2({1zg+zh~x`=r7gMxatnVZ%{yecFH|S9N8chmQ<+Uq0FKfxJ+gp2u0?CT9<-Bf zwdRjDy3j9!lV@GP=GhpmXZdxJWZT3mt|Ri#ccE!xrdZbcr0e0G<ozQB@G{6#+R2&$ z#-Mc5JTGS%;38|-#0%|mZB*8!m`)s_3((ueeFg*R(g&0^yq;%0l>xub0-mj}U_S)5 zo_FYjXH~lkf5YPQztO1k?#bF_xp$v3Eq#JMi~pm28P>7M@-p;$*msoQh;g(NaxlF< zhcn5G*hBiN%RP{iIdxU-<^b*H9BkU|g4`89gZ3yh-)(|Rb>ZS@!ZD)xJ92yAAAVfU zE~g-CoI~;)bAANjmUX~)wb`xwg(K=Og!knaVY5rH*=5-5KG^IkY<B+xu*dK_dcXsI zkAON{1U_ZxP07X&(r&}z3s-6XDW`VM<T-?kLff3|?-u?3Za?*|+GKw>steuX_?xJE z=h$e^==6o^!q#)2Nyah7sS`ZPV~*NW^W(6>b;IEG0Qj3*4|<Z%_PqtP(P?&pd9Xna zFsk@Q?&VGTNqNsxzA%?~7v;&%59;1ge_YByo-yx|b#0YLv73-lS<BXWCgBYzJU>=p z&KJG2>3#SC+B4`R{qq6R*v73|h42T4T9oIUx1$?&=!X2(t)r{A-i0~bukBua<rMFf zXFc`p1t!Lv6)2B)qnGcb{(>*Gas7~i0r330OUR&|liAq9Z-`~^2{#14weGtOXcInw zjC1s@N-FyW{pCAE+*ch8#}nEZlr5re+1ncIW0N*w_v`L6kvpWS@i~_=_Ph@&%o6Od zoO!~UVX?`bw6v)PUu2Z?#w0GlgZ9VD(dJWk;rEJM=UJy#!F=}f;^zz^UB(yof#;l1 zHxK(McLAVW9&vx~)jYmgiGH&@VIGB_uCVEM$T(}T=|ho*7*EBPqJ7n`6z`a%uZX$r zdET|(wE#Fe4*0tO{k@l6gpYFcjfqQlP4!3S0+_E_y?}O0jbS~2r8G&MQT#a`oomid z@&Bm{R;M5BVeak6yBg-sLO-#wpdb1g;E`%MmU{XsOm{j7Q|Jbnf!uN|6d8j(=rA6E z4gqi7(N^`<FM^L>|6T#hlb)b0&+KB)NzV6TuT1WN#X8UVGjotzymL8&w%QRcDsN;@ z^pQ0pAMKy0VBZdSBF=eydkyl$xcah;+a5=bv<Ci<Db49yZd|}TC#0px3w%rVJG#@d zS-JK3XddgBul?bj2f4=nEFMIAxe?$%xUd~uTe0!1N7LX#MQIHC@}RYjWw9N($h~Zg zXO!LEz>aWjhkD5KlX<jTcQ%Z)Kpu5O=T|A}lhAZwRh|719k~hi1NmL=noFg1Zp(8$ z(D77J;dj$_)cx45CbpzAZp)plRb=m_i+F|WraIox2H3psQSAq1as=retZV$^dY1S! zw4cahy2_F4c>wQDl&4&IUH9{H#ocXW9o2Wjl|HJzA4Fb3<ub?mDwjExLx;2+>ewDr zmUse3@|b%u)OF)K!^UHqW0vQd&oQ4>f2HnwLTq1o%X2(}C-InDCB6psK&Ez#_Uxj+ zAm4IA+3+kG`)_+dhhtd&y<y<XyG&@W&F>G(&!Uffzs1gZ(J$irtR3(VRx7`3-Y?}w z+?-zn;XXxF_T~2mWo2HVeCmRJ={zw#4IGktaQ5B!LJN95rS$5<xEkH1iar*UUSnvd zn{n`R8ez(O7ikynFW?-<{<x0Ng>usw_d7-T<@zZ7e9~XevlA!s+s0<5qd(!gR}`l$ zql_E{FVN2kgHgkKT?<Gv`((1Mwy6#_@orW=Xp=UI=Rat3$w%mfjEiZ)|3n3ABdg8! zF3w55$dQ~Ku4^lRN%;@^kp}*oYD%Ag-vcOTG-4ghk0GO&zb9zKy}gh|QC#gkWkT|~ zw!FkSkz>mHe(=8TyfJ+HBHGtEq|8I#ih1h^rg?hQ**L%F;Lm)(&ZHleazdB1%-0a_ zeAgW3bOH-|cj*HxqcTPL68{5z?cfC=Xv6EDzxOD5|4iTtO+?1JY8Bc4lRI|-yAS!j zYvxk8=R8dr6WanA<C!no_NFj_i&HqNqbbs!evHW~))U2Fhi??^y>Lt@;Ee18jW#zm zkNP6t3#;nR00^D%e$QUZhb(3h#(1vh2E43^j4!B6`~HX@5%uR2Du?pEd&_>M3PC%O zj=+yQADxZx@<n>jpln2E$mjDlPup}LpU<L<(M4#~nl3MWsF5!2LDU!f-<&RvI7q(H z#dO)mDc}S?${5v)vJpL&=I_#T;If0f;oE%BlUDD^wH#CMZ6nS(XeZj07P8+%S;zcm z0_kEa=Wx#!%8_PLj<!k5&@R@!`^vcKulZ*|Twnz8cHrI0wm+u&9o`o#XRgskS#jqa zt$^{%!S~>L0pAPfIq>og`S<jX_S~AsnApef32r$5^|vWcdr)8BK{lOpcyCS4_>nJ! z+1JD`iR$TknC_jWA7&l3&GZX;cdy1=N7IxBHXg~`2zi|I@I8RM4>x|hMekHXxh22l zLEF;^E714gdo~w>)upg#Hw>?Hp^oUc+zF@EchQ*F>N_+|+ecfZ71vL(KOwe7-WSyO z2r++HJUiTW`j1h@&SZ@s+_?^Z1Af(Zrv?!&)S&a^187eB8S<nv!IK=ylGmMB6Bx3x zsMjuGZ&x~iTLcF>;J`EToV1bmZ)z2;g?OJ6vNwfv^bu=tE$NSSY~W|U2lrCpzn0V= zr*7oBom&aG(6h*wB~0UqtUD@RdR}&MKk8XuMZe&~Vs7P1Ooy)7Iy~vzqqbrI{b|_a z7=bNe9m;>?)9gv;m#0C`hQ-B4AG~VusOo6AA16ABF}Mm?rl-WEOuE2!Yy|$rGTOo~ zc~BL5!1F3NmxFjoX%yKajE%*h{si@#_+k8#@2e{u+2_N10-FQ|;LWX+yB(;v0yE%Y z0ckxPM`{)N1VZaPaN?dFaq|0q4`oTSK5y%?InsqTM(qf7&)z*bi*=Rf5Qk47dQJEU zxBNyA^A>qVXWvS{2a}Km>S80TKz0JXz7Q<-LB_^~Rngsk9IO1C$e$<TyovWklKy#w zF)z(<Z0ENzD32!Rd8A=aU(Rnw_7H2`m}jT0|JfGu&;Bf1qR-Sd=+*Ln@bpekA}(@m z`l9xSa8e<h;rKhgLbFiENT=Pa#Xn$PCag!Aqp$632YJiu>a`u?{gF&x5!Okxm8+{$ z-&R{#Put1?rpRK=+Zx%Ahpn5FbjSnFh!P*XmnwEi&Lbm#B&bIi?P||TY@>#ApG=!| zIFr<5>>@p3TPd$RSHS&=G{&$a*mp{EZjU&>pYtSS`)tq-VamBmjE&Doy2p?0=c4w- zPX<2to-oJZ@Eo4!qwMWb$AxF1j)MjvtSbA0e3?sA4}s5vXp42zq%-WZt5u{<v$7Lf zR%|TGGS2c%;L4dtz|X17lg}$D_o&lEzF!X4X?oR$Hr*$N3UxX6mNWRp-&K3@JnzHJ z{?oMo*rUh^>Z~4fZq38ZN+T`p+*=2oTl+M^Wq4sI%fH(WI`>n3KHTs>>)dto&JArs zPSDQnz-zd_p|np}j`HZk&s6K{Y?^g$b9;+AIh23axzXq9>x?71^=OMauzq(Q!F2cp z@_U`z20Zz9Und^zn@<V;qy4*)_rbkLL!DpHK74rExeq@XlnaBG;L{kW_mNXbEI9YC z@$5Z}YsUKUOyJu1)6V_-=bZZw$DPAYfLqv)a+f;yZ}9U`l)JdUU0b&U2RH&dc1`cv zvUA(i^gFlQJ36(?*ZwkS^H<3KEAafwXYiZTIC!@L;V<t){AuU@PtfATh;x5E;oPTA z-aK&A?RVTVy!rN9e)7F{4B!6G3Cq%Mx$Wkk>VNNTKk4Cr?W9ZPPZEcBPLJL>39<)x zY~6w6?W6aS8Tf+2ho&apIks&Ju(@+=tDCOFGd%|}E8zhR(gS$V|8x}(c$l8S^C+G{ z7ylvsbM4OkX_s?fDmeG`$9;cJA$|(wa%Y|E28<3oZ3msZ9Id|o8Enh+ICt3?%FN<9 z;@s~HId?@FuWBAZIkbD~Dd+xnlXKrYgJtt`E_KNq;`?0cjhkHR4I>Dn&fh+Z>*RXj z9&L2)4HM3N`$^~iey?-?Si-a4xi@zynw`$200S{-5dNLkbo_k%@hp(cArDWgE#=a9 zG6-k!yA02Agje|T-v-QYji8+#{Ib1%JY&G|G3Q<a9xoyM654+0FrFh>jCal85>`jn z<u3QX47W24ZShH=j^KcBgag7W@Z|8c;aQ1i73;L8T>;P4sMCw*op{zF?_JD8`?<@r zE{i9}IR4U$_`7fWwk?bVVN%A8?!0$9eliU2`p~_1YIvoVXL>3Kr+3}Gjk3-3%w2cp z^BT_Hx$Um&G`#E=Mz>p;<#+Fx7zIu}=&!pZ?Xq~5<H-U4mH2JPb19w<Jg>vkiRVf@ zU3h*3PdA=7<H@7^j{!dWcRgX@$s$eQ;I|#mrFc5JI$UR0&h>OHcfFv=HF&NCeM)$U zAM59>KH%o?tVFyWPY0e(JY9IYwd`$xNxakeWqX1<>)^R4+|h0x&sBJS49{Ef^x%0L zp10$92c80+)o8O9PZ3WEPZ?=_cy7RRBc2M{uHtzQo_@4_E1m&7??ZeL&uxlt4t0m{ z3~QWtZp8DmD6<LA&*K@<yyXbHcG6L0MdCqU5ziq{<P>yU4w<6t;lI%FM-V2A1|A^o zb$B}QT#2U(56gDr!R}N&4=Ja3$iEIeuS2*KPZyqUJbB>WgXisd3V5zYnO;0=5ia7n z1`l*kU=k1E5q<?HO($PPUhqr$NPpZ<-hA_q=L=)wAG~MV^w7}F`JLmF<D<LA^Xtm1 z^QE<=wd>qXsQ>!Aw%;cvWK|X_+73m7lEBpBcY3G)ov;ufjINy?pP6=R$3~||-P${M z?Q&}+b>|MBvSr7;_l{%0SPQUgN2jNEZoBio>2Vz_i0;Mw<xz;bi}70iN-p)bGaBZP z@CUy?8iY~f{Uflw14zU8EA?59w0OJ5#Rj<4+Y5+?e_|()(2IvQ<wE7IM;X?EbTLGD zD;|}w|7ZBEL)5}3x9JGFG><gmw@mYh-;H<-2ZY{v0`a%vu|LcE$sLP}e{YE>w}^0O z6pvxh1p7WPGqv{h`2Wus)IWn4_kkIy;vg)+9743gpTtAlJMds-EQEK%)1dReLz?{= zJd4|Jl%92qFIpmhfn1cQ@fcs9&$h`6{v8FOS^iB7<9Sr$MI?`b4QDi71s_P?E)*tx zH=zp{L(^7&C-V0O`M-iV+DHv(ebmhjA^(WRG5)PU8*W(PeF6Dr5g*e0zxHE#6#q8j z2hrYspPxdt<)=`-!`DxNuFEOMeHy<4;@JagRJHs&kWV@4)O^Ur@~05**7(nO-y&t@ zCjj~|@{eo%U-W)RdPL*s-?C?se^l%Ld%)X=xZ(40#DQ-F|F^sk;~v-ge~9`IBfnSc zgYWcXj6SKqLH;D-Rn15L>FcD6zJ40X^k0_sX&iD$pD8u1@wXu_kNShYej4LDeVfz? z&A(aa99AE^;oKrMtoe8Pxrm$4_y=`f@|4E!*Llc6A4g022VsMJr2nIzcVtzb(w`DH z8ZxEzpLCA%mbA)88nombCX?6vZ|a;y;iq5LxyxfdKLdUjyHWp?#xXWr3k=fp8t?UU zn4IN<-#5-dW;ba*boM<bppK7ge9F&>++mIH_4A{Y;*<FgIv-MeGT<lYJE^l;9{l9| zD78`J{~e;;kN7!_e@*8`Rv&da_gSXxWnqswS4to7<+DHH=S}Go8h@wGla6V;;^#qW zZ7+MfbK~fL>Zs=5<>yf8UXA}NoikbekLuh>`I$ZB=SUf)SN5oL+XsM;@-O>o%nr_h zeq9Rh%YM#f`k8&f&%cab%TP?_TiV_-=%dWLw7q3LetwmC#=~3oZs-2hNwoK%#&31* zm!{F4)A$JHYKU8V%kJ}Yx2QeHqs-N;y?H-hb4u@JzwO*F_o4pt3h!}0r*qG0{0n~W zwxUnt&_B-goYHUE-}!l;)BNS|?`57h=*uq$zdm{z^jCT<hprwtjJV>n9P_Y$H-`9r zEf0C)9Ma@xIq>IvGWDG1|E8Z?nmjH4eLv4Mek}i@bN}%K$}4@Af5W+X#NmK3(XGJG zL(ErsSONRaIci%@^RGkRGw5Hz+lLjmIQLr*g5KJn6~OmXCy_s;<?r_Mtz`ompLOo{ z4kBOqwF2_QdDXJLn*YB$e3ut(%xL@x=l-yOc)!L0`|(M%r~O@lG3<$9z<b>1=d#F~ zM|`ixFL$MLpXosV&S^gETNeE>d&{E)oKw=(X8&^={QUB=4vqh;pKE4DG``KHy7!{~ zV;Z0H^J&8`_iz2&I%V}?&pF3+@ZxCSa{txOyPfto_XU|}x=cageZ|R~Jf-x`L4MLz z)Q3CH`fadZoUboa`m}W;ANuC9n!gV5!65!V=e~9l@e>|?+s`}9-BG_&<I^ZVgM5Sk z%ZMLCyr}R#=I7aNla_~kalY+J8h;XTwpY~nNyNcplmE7VMEnTid7r=XQpBG^T=~Cp zjh{oijhc_~g>!MMzY_GvTs*G-Fa3Pn+FSW6er_I>{|(>|{csB&|CNvWdA-qd<)6wN z-=&_^_D=Zuep>ml@{FJJoBdt2($Dpm9rNW^f!==){+oWRTI=WkDV2{^p!fgGf*s0# zTmk7az`^uo)r523=tTTsg*S)zG2q;z@n3_fIfeL1jf39V0?MoZu?l6geTbKQ|5ia> zvQvnwKe7t+KKne{RQYL#y~(!6`R(s;?mS>DKj7iFU+YrKhS1)u#`|4r#nX_FM>Rg| zQk=<{ez$LNsZNwnDSqucUFymr;>!Q_54+TxfM4dYuaB1X592#<iT@DKK`nmWQaU8i zek2k9qeT38A`W}&|Fr(M>f@NH)#YD8+RL9We+g+D#@8p})kJ(S5#N%C!{70L3Lo}a z{z{jN{$4VVSc#9u{}aL!LHsiaOBv1o3&h!HEB_p54Sq!NbBLGY_@!tzH5tTv5MK!5 zEGvH=ze^#nb@880#Q#MiKAnhvBoRN5h$r}Y=^rQZ|2z?YCK3N8WQj0)JUuRbxjz3g z*hBy4`*Ydr6LI)Ib@`CZy7*8cerF;Mf5HDL{Mkf2(f`X}kAm`CBwf1&>z<ppj&2#> zJh@}XJ@-v*_N%6rc-M~U9h$UdVtmUzKD>Es+fFA18QP5b`_2z--nwmka%|VyQt|rh z0+^#?o4M*LHFj*>x@&w|L0Iv1rEBVok8b}^eZpPi+sAiq+p>9Ld~|Glr}IBibJvuL z^~ITApK|BKcp~NA(U~cC^V)0Py|#4CyVo&PW+;J)tQ7NK0_AIq*EvbvIlg7bPIORv zer@sksNt<U$HzAd03+q(4$y)t;ZYe$*|F;yv|qY@ZK+gT&k%4btt&DFoJ#A~)feY# zwk&B!t(LAWCyH#DL=pUpi(Hq0a@Xjt1R4|fPS4bXnE)YyMH!e~4;ooF?g9tz9mhJ& zmR(F^hc<89zHQnf#myfao!o}So$)wj%f#qT6dD_sCRnAoS<<$1ZAhUMHxu->?OS(P z$~6t3u8}gk?gK|f7PRU$9$H-snijU;YlkhA>QFCjrg-ig-F{buduekBpwxg+$+t`* zOm5pgJ_@z)Gzl{9+_rsmr^qyWt{HW>YFd3$Nori*(D?ODx~*v;sOuXDTW$bVZURcv zLQv%fQ0p4`jig3~TVe<eX~|BmyQYpKh$f{8Np&!k&*VTop;5328coCk1sl+~wjPaZ z8_~G79*t{#V@=S|oH~ZD)5N--T-%67Y4g~Q?U699E5X$6x^HKg5UL*X8>rPx+)%DT z`;gW^1TDrsjg4<jk~hfRz5}}5q`+2m8Yu1DHi{KqRSat!$)Isy66!K`0p93+uw!v8 zg%eqwpgiG+=|o0)xMjzEbuF`tmKj!Hx^{x~!Ypl8;6>@1w@i-i+J$9mpeKXpo%d~< z^wwR{2v04eH)lG+Vg$HneCPJ48o67a!kR3yZTnp;CBuv#Uq^Rs*|u%-)}1@<-F)Bl z)^#$}G|%2KJ%Mr3P?NrK&y(Xlh6J!=eEXIiW7>j+cdcDte)o00(2l9`?J{fwh>g28 zn5-|aFZ)syJ?XuV%4o)Z`lxhGqK1eJiP&k~JhgKNwu6b6pyWM{I0&%-(ImcWeCG$Z z!8eIBeLCyP{%!pb%jBtDK254v-&NA;VEX#9{~ML9t89&1BKl!Tgd6iWsxGpFtZlKo zA@sIR*LRAW&LKv-;=XO$K0Us(j(9>{DXsp`uIc;kjCd@$aK*;AOz(gz)|fXjcJEAm zvT&m@nIqt?JHc4&;cUAHln<LpWY#yYwF0c9iN<6>mZYL#se>;S>T;yV_0*sM3(#%% zj{1Sx(}qX~j!CR>^@Sx}8dAQ-N-S{3@0^T%VkuXb;@k4HvDWUKB)!nSlcqFT6~+zH z@4MqYD01_T?YpKozh9lFIQ@2d9LODmK}n>#hz+AVBY$q)y5jZgd|Pxntk<TY%r08R zaZpSBQ>I_zL?8uE@90Qy*S({YlZ|k$z3v*f1<DH3KMiID$lU?!fx{Isw(k{YOtP<A zcYw3go3AOly6AO2N(WXnG(mUMkzMZA;mvnU?;Ib!ck><N<M#y7+u`)xD!z6iac~E$ zWn67&$1b;(!f@|qfSH`!u_eg7g{pPyP8!6x#!rq<Ct%z%vu!$AitXPt?ErVn)Q7AE zibw$ImYM0DqgxuPqJcXmcI=#HEghqGVB)lM=Z?r@gxADD1t^RB(Y(M}NhV>`O(wzR zOD4f}OD53)Ye;L-09})Ya$&1=JrMT;X5sF8r$~gG-w&0(ZTuGkg52(Rk(<%dNEopQ zRNDOh9b@-Rj&FW%WC6)ZpGK>z7TBsnJ;00Yl=dw^0cFiZPi}*p`8ln(s|rLqNBrJD zI=y9L^BvoMahx2zcgF|ESzShjU6VVeHw#uK`LU?nanCmCs){IO!gDq*f^OUl^HxWM z(J@IvOQ06fog5dew-aqj)C4vg@t5kwRw~x@B>Z>~{)Tf`FUK;~Jj!5S;%cn3NcfC% zzpdqYCduk@@9AMp&jc{D`>+PC>Dh(2OcrZ90)H>o)BZ%^GyHT6f7vFimuuZ+Sog5D zmObg*f3oy**gn+o@~$9U3c^^|h{|A1<q<8P>v8UPE&K<HPZ3LTSeKFhGK{vYzio;$ z_e|RqX9>UL>vHe3?Yytc@JitGdkTLg*0l`Is@XW)el(^}yTN}HYk>xz;eaNWOvN<0 z<Zw)fOTMHyJcT{-zfv3+J{h-lS!dk$%bv$xgW|^5JS}`VX!4&m{c`M~lSka6y&P+? zq=|%qv-Rup|Dx^gLmAQ#Ww?iXIb{ZQxqo~4cQhU0*Fgr14zC{y!Uy7T=dHdj_jWtq z=j%#1DBr0x=l*V|(wyNd(7wUH0`*N!t^h6mi}ve^Q*ro82)@a~m8fs>cIAU{-78PT z<==qv2ImdMxb7RL<GODI&kW8R(U#%R-5Zzh{xj`k9?RALP5a33b1`k-bR_Oe9z6K3 zivLvuarmu(Z|Obz;_%yYaro`~gYffl_#J?6b*~3*QFt;AzZ)`R>F@53!{xCc4Ek7^ z^^eElp9t{$iM??;u6u~e_nnNxH$XlN&W(jQ{L`g4e0z|7`_VZ4pY;Uc0H2NXar(~& zaDH}EkbXE0|6D+apPLTSAB)4AI^yu1XX5Z!Ul4vW4&NQXzvpb6e(!-G9KhcW88bS} z494LPEyUq}RSv=<LHJ-C{$=24di~2!$1=GuD1ZO+aryr(7lcp7;a>^x{FR5}^!-8j zSLfpNUkzyfs{x#cf5yu^_e>xDSugVv2An5UwjVx@JxUFK3iSM}hJOcmnqB%mlzCFq z{~#at>koma>D{NV!9EV`5BE<$eLcci4a2rX>F*2Df61qFfA!NJ_URIaeT&M&z8Rcj zkR@yD*kn959YbF}r??$^Hm3g*cl*9`KlTYQn0Auk&p^g(eEiJ*czpaU=>z<;Nc-&1 zYk7vpVw><;v}HJa_H=A#o`h`Jc=zOFY;&H39R7*o_BrAJ_&A^IJ_lET_(&M|{Hc}s zAHEFx{JAgrG7?6=p3*XZG86axi@?F~`O=xV?|<1Fgr{QO{pG<R{a73Z_(*P_1wTxN zpB)Lpj|bsXarn#aLAXB%|E~6>3wzYyDf^pd_)miLKa0~(^f~u=?c-l}IQM57{tD=6 zH2ey1HlO4x0sT*+yy1LuC=P!WGGk-SS09Vvd=<1ZI9~%!CO=;ri|c-EE)IVkxR7^g z!2bHBiZjEIb4f?Num8BFGyDxr2fkl_LDLyVyI;_LeFOb9|Lq$e^yRr%`;A}p<s}Rp zY;64|Y=xEo=19!<Zvw8#z&D?dW%7B*fQ_5aPY2;6F-^Xu_-9VwoVVgH;rA&%OutR> zLHGsWY;C;&m^RM7a6Fd(7f!})eY-Pm>-4@@?@rIhbx(sYraPyf3c}CEbzekZtlbv@ z$J%}IlO9j*QNQ>*9#08_jz+f^|4PdM_ZR<0%P@Q@F7qAmM06kN-%<W@pZhz&-{5=) z_D#x6A)R!~!d5Vha#5Mt80YVxFD7H(IUD2rcjdS*e+L>GkN)mJ5C%_;CTCm>^9<TD zm}fS{Fwe}yb<aE)gpUSro{r)C18^{X`G=7pd^iXLXDjoM6VCm)%I!;OPlpT;dkH#0 zI!O4+ApJ+;^q05#be;ov`EH*sVbIR#cK+>J_feb=xLWHnT#U;sqP_p-aY(HwMSV}L zScv+S%Avf{C&i-wUCXZotm762-@mBgRk2*9R)G#GSE*I|A{wSvfhPaM${&lvI3;ej zC3Ok#QCg)g1+8>^Np%dxZFK+#mEly!iMXxHJL9%4?~h?#emXAyy1aA$hvM)$@Y>+K z?y<;rrC$GVj6)}IGkiL`g7ASDpDREggL4Jwpf)gd#ksirm4In<d&Bc_de=Y@M!&4B zH+IC~Zs4yzL+VXa&OM{}zv;=yuSn%VPb-r@9+$c58Rz~&%lFLT43vc-lYi;MP(IjW z97B<J(As^N@1gO0GSjaDzC6FpFwclOJPiLB@Z~#YQQfK!uO35szYoiMX(K-T)<L8r zkLBfkv`HU+7t2rkFyBjaGd?Wur#<Myd>_prk9Fm}v;`j)oR9c0&tJNSeVAu2-BVir z48l+Q@Xu5ce#VETF64(WdG^ws^kI2l4ZLGI&uHRD!hBCHmGfcNO(}iGk)P`H>3nZ3 zrS!QIc%@1{o$srq`h1x0tfiDbd~c0cXtJ&QK!+3_hWWl)YQl$kjxsgn!#qQoQu=&& z8sS-={^2JPR{HS0wG`SQ9G;0x9rodWT|gK(F?}!6Qc5eHb4&qmrt{sl)T2Hu=Mx|E zVL6-lxDWH4x70Bo=DTkxw9UE;`w><;{~OW-<pd_%dIm@BP=<dg(De5$e8Rauu<%Ko z5w!3r90j!SbI$#dg`aosk1c!}{;q}3ICo6L^o`Q6n|yyR-R;ACk1n0pa1p;fKFs&( z(&z)r|5XmZy&7hDmSg%s{Fd+lKF_qL%RbEa@6w<h)A=4=y6VGxA1~eS!zV`YJK)1S z@0T9*;ZL2!?~D)gTwi)t!g8iBeGGORFw=8*p42ege@esq5k`AbhOj|r2_HuI84Xtv zM*k)KD8j%=!fX@mN%&EOPidHVoyJ2NviunzmNS)SeVFg-rO){=-`mTeD9iKxy-e1J zNuLZJrk_IjOuL2wKhxpEJm;V3^kJS^&k!!kcQD-T!#wMs$@?(h|I76FFy8~rplz0y z^ZmU(eAyV%i$2VAi<y#!k04z3VZJYz>GNTprO#A-nCI>@{XWe12s3yD|ECZpUC<WK zGG<VpVZL9O8TMhkXXr8;B`oh7W>8Mb??d{CPsjU*E(83Ko_Yh)G80<n2*Q&Zeiq>= zALcpQ%(M?@0Xs9}!#wYwne}15x0sppVV+~m;9<Lbk1>O`CA=SDJPh;ff99a)HRnp1 z!^-#52p{!jgpVf>hRpN5#mq?`{uXgQrRhBgKd0%$=Xp)<M;NfA?ij*ne3<V!X3qLB z-*?QQZI<DCk6EW-;G9K7(hnn?)9{he`=)nn-8Q{;$Gh_Kx9*zjuDkA<_1Bfx=kwPU z*CFkiA~V(%i`SP*NW1>}vLxh3R_?iF@YWQ&Zht9xpC?H8EO5ggTE}0(wYxUlPx0)> zzKT09DywD=?7`i;AD3?)@P0=wG@in{-n`?3_i;UjFz(=z`yg;%lK%!$ZH?nQ<ox#b zqU7!2_X>R898S2&U2%up{)W2#o(tY@!S~zi;MOX*A7}OA;s;ivEx_Bo=6#*D)z0q2 zs&B7?_J9lO$UOu4PP^bkyb1eVbB=cn_oENF5p*1B9Yq*r_7U}Xr-I&_ve?PHb`sz0 zdJ6Q3?oH!8f@NP9G)eUmKKp<$;qq>hcEIcv`rsbcT0z=_bGf)Ed3%sY`rtkOId~&V zAKo3%Sa$+__V)?M{oQjp+&{d>bv#hPi!;DESqJUrNVhkw1`cRP==NUR2e8d$LBAaD zg?#`-kazv>#@#0Vz5uyjAi_^^uWbfx_Q>6UT^Fjy{u38Z=kw<RI?Fw4$R|z63;kxt z`KLkWa)QoH?=k|dDI?+CCUz%^+;<5X+k|}HNnm%U$elwHNB<z7#I4M}qHI?0VAx}K zFyJnT-adEV_L1ziEx_CEEn$0lzX|RuQyg%A$Bc&a;P;~_lfNO4`_~|w$@{i|6ZvCz zLuE-D+@UumX<qhuUk&a(O!Xtp?zv*$<SsMb9~j_MLK%LafOk$!B5Zw?dqkMW`)qIr z#Sp`_3iMg^)9wX9-936oOq7pu`46ndH~Byt-Xn+hI!2uQ=J<<yqDrI>aWQ)7y)GSW zNAa0KSnvm}vk2?=!rTbLE%02NXZ>1BJQw$d`6yS1C+^jmKtAq0lDmdF8P<Dq<j$?? zL+6hMGMHCg&!b!;zr0*nJ>I!f1P{7Ve@^?(u*n5w*x#Fp`{fZ%_D}CB@!#NOS+Pxf z<gV#<>f`;871DehdOEs#aW14k%13wWGQ4Kat*;(hoK=~Fjd24=&((}>kR#rkrgzqn zzr4RB%3q&{lcl_6y3!$su;_#Gi}#nfn+`1=(f;xt58fNq_}$QNE}q*x`g1e4&AB|s z4ZYW>?jBB#AE?`<{1^i*Ni)*}+FjUdxto`A-rnR6G2*B9Hi@jWKT=<9yM%!|WzcLs z<u11_@B1IwwLN$#X7PLWEeMtuxX>YfPlEKk!Dx%T?ph^+Cu4-(VbbdEwWj?C9NYmb zx=#5pI>^`s`$Kw|J>i&o5@p)aZkO2)&<8RDTLr$VejR0*20Np23wWegPV2}WjObrU z(tMdtz~^|-#qpFf2z%Ae@ie?!kZqt`Q#?Scj_9tdCgmV!iLqJ6R?!v6a0W6gG7*#` zzoI)V!B_SnjPq{b4%i(o7NnF%T}#}9x8yyS{N|0qARa~D@1uNJM)}k{+6TLX&g`n* zohCf9Z`GVaIr>Cm-<3xahWt@)#0K0n54%Zt-~nWn{qsISptI21UotpL@VArgu^s3) z!;!6HA0)1_P^-8?GdV&z_FM1aO7$QtctIZhy^w7pm&DP=A(1D&w>Z~CM+q;lI2|YK zTE*8@9W@-yR?Y>mDQ5-BA9&m?u<d?Jd}jl=k`DqKay%gQygrz0vu(qZdQ5xro43tn zuR=HnnGt(!{D%Bc7YrX)OV9{$_^bZjB$UmKIPup?VLIyDoy4u~k9-b3VyF7hIoLqT zzUidNl8p_N3$a@&7cxdrf6bOdE{ep3eNY?JmGG68ly~iWm;O>_Ob(re!F&G=r+KkK zk=(0HiO=8X(jOdg@3<3bxmv~BTNx|-UHMg{Q$J4vW;?%&1lyHGIq47b$Y;`l{s6w? zCcdQ5g>m>Q5@tD+G5m6nIl1$?JO{pg8f|_BV+6iSL?0Aw$v7;wPV1QMP+1%zEVipW zrJa$!!3U;%TR%na;U|}94<CT+s_qINl;J=Yihw8brm}6{GH4|W&HUH`=MB7bm$nGs z(<qyK8m|O5Z!02tfJa6<(%5h(Z>aaiqfd^wPks_<t#|}|NWGdo;(h77x0>HZC|)Fw zD1&Byl00HxtZ$sxMDmLMw|B!ItC9Zx{z1yyL6pZG%8SP-2McY`5x1hGGC_MyS=$$t z0ZkWHHI`9d$>fgq+kaER`*i{z?RM>6<G<?yJ{9@Rna~zm8^F1XWfAX0`}kh-;t24p z^QDnzeQZz2ntY=bwB-G))O)$JQ|~qvU*{3XBkC9R8>^BAfBlj`M$2s9>=?>+FLj3{ ze78D#g>f}$Uw+X1hBXD?N4qWeDS|)44DZgn<HS{Xb_m~;!6FFdm}&T>T<~sb`bm>z zf1e`rx@NJlp!sq)FY*VO-UJ@!_);fP9(VsQp4Ys(wg87RcPa9yhq&YU{M7Dk>6zVY z28Ng?@sae*>?${;c+-F2T#oJ7w_=lP2=Vt#f^VCk{D8<UzKxFhRf+qtT*mQQ1>dgn za^Hu$CO0A<aqk<Vd>QdFeoOjW)L*Voa2`o~EWd<!FXC*6<!tVpXL_w7d7MLHewlt& z^1W`su1C6M_hb4rd>aOJ^Fi55o0RowzHI0-khfwFZhB~O8sQ>f74Tb7{7hGRm|m+$ zp5aG2)#E~%pd95Nx*p=!C1rhILj0_3h#&2a`0lU`#83T=#YxyYejltGwyq1~5x-Sn z^Ffx=ImKc>+XBAi2j!Nup*>^2Nq72P><{^X`ML0s^zW%vBv1N>wkc00xAM)7s87D1 z!n-KV)0X`dn6QUoKdtP=^mA;9eo`0Ims{)uzU;S*^E&QMA`biH?J@7_9dT)=--8fd z#WpPJcM))ks3$fX>vP8hhT7{TV3-UWE!#mu;*+GgtViAS(D}XKSJD<&>8qe#6*y3y z`owO}pId+}+&I_d-e1~Go$q!x_<DQbt9ko9OW6Rt9N@xMc)ybNwFS%z%^@EItY{8N zT4N1qPSU)cpq_{G$;X(7@r87y9h0?Dl%Xw%z9FD~Oc<x1lvA1H9lqgwFD#dYL%9g^ z$p?c&-@FwZ>RPlm$T0eb?+}R&S$}y)d00Q3A5w?HICU$G7Z^7kTLMl#QBTIG^?CRU zo_Ex%5H7#9&}u!PZp^efKrNPoDZmn$sI3v3kkd9MnvB0ADr<)!Yx6p<*aw*VXBXDY z9DIvApf-L6F!#|np38|mPe|O`7V5>A#J#L=U34TU-+}n1pgd)1BjZ8;Ne>_A+Hpbb zaF|ay3-kM;xToJ>6!-NBf4|uYju&W?wqqY@0Ue=EPt_`tHbtGpJb`_jguZ5mo%?Z? zuWd$|Jz5WNYX$ixAiwjr5qg;2eajs);rHmwUW+_vThIZ@(2TcVD<0N1g_h_i<;n0& z6Hl~H-z3D9_NEoCZNQadZ!=u^?L5P^aFMuDP7T*w0@to2u8Dq<hx;ib3%NQ!SZEG9 zP*=!9`Q9h`KH%g2PJQHaT-a|k6g_=N=z}`AyW8_s>tI~;d>6T^RosN;X9*MWG0kt+ zIOJU9DyQ*Hn%}{=$f3`lj^Z9ZWy0j1W2oe-zN=rc>^Ujp<*FODuu!YGY4xXukS8=z zy&06a*Bk1|0OHg5?U!^9qdlZy0$vs6swm&5dRf-`!<c)WMR-tg!@P4v3Grd}^AUf) z^&sIAk3=5t*0wxZ2Y?SUA$;)POc~j|I!!w&u)rtMY?!d14?gT^McNyjEawG)GZw(v zlz`)5dN?6`@@RnY?c0J_NBd(xCW#Nk`?9(A(n~zRJCOzSk#p&SriqO4yP`-F*urB^ z3&%3G3hvcM8>)kSh+F@t1H+^-(-5xGUxmLkjc^(INuP;y-_QCc>nK~6a`Q4r7)Ckz zm=RxLiz$oc==&@|-BvtCd4oed1_6^YLm3)SJO*kWN6r!W4L9~}pUMFJmy*Q2T$!(r zIjr2VUqqht0Wv`wF8=&c__v_hrUm-But$cQ@~)(M!*+VZ{?m^lPW&Yd<kObX_aP3w z2-B|h)+!R`92oe@{tV^6N9CDwGma1T&9pAW38ND*SPpWY9tMnI#Cw!4`x(|g)2@?$ z&HUNC;v4$yv{}vk**yEXfIIqSu3^6K9*n0ScU>D6U%X%Ur-)Y`eIu`X5XSn!ifR0c ze&7TTzmYerxY2%4Uoh7b*x{T<%0rey+$b;h&8X1V7CBAeMqjEOxM3gS^tS@slK5l{ zAFgMRSAlL}?$_YIT3b?f1bffwYYV=rUke5k>x%d`wDuo;#GW9>v}xs2Rmyq2&M+N1 zorOPs0JsZXG4E-|yodWGGVf8H@54SE?Xb`hZ3s-EDbsvA0&f=cb+(1MUbqKO*(RT< zJ6(i>U&=_NTeXVFlj_jRhtYo52;{H{J!W*hV*x%y!#6vcopC@rk$;GGDKD~qg8DXA zfJdT_lnvRln!|UxP?r3cHDi<|?xf4pNb6*uYu*k=zJHL;HY}Ys8So)*F~862J|6dY zNspY_M%|mG%}UmJTzO&Tqy0YM#P$fozHQ=IUv)xoL74cnKhfS`ts?b0)DHC0-%YGN zKL($)UwzW(TSM#ooTCqR$>tm-z%8kcu^rmA5@`gwIg~4*EzB8(#=XevV_#s;Pa-Vq z0qDaqgl#Q=@<Lsf?-GGV`z6oAD<F@uWMye%NfWN^P^QH0fHxe&#D?g2nGbmY*{Z4@ zNg0k^wTjgD>sAj*Sn5C)XgBiEfx{}3IsO8E0dy@PuYkI=x18V7rk2s46NuOM&EwC$ zktept;rr(O5%!Hdk~Is^j(uZ4SckG{a>q2WVdxuSnT=8#;pVh&Qbzm6`hNe{_f6_( z-|+pyi|-rcWFR3Y2XziJ`LQS52xMkVWo9GhF`LltMwJcHaY*9+OpNK@kjlm&^Hjbz z1@bk3^Z}KpPQajk3@A)nH||#$Rpf0_`Qm)Jit@CpTx*$QxK@$+^eL*<`Rp9Z4<Q{q z%Z?#j=9!rVoY$dkmNrmlciz55n<byi#ARWX+3#g9usz6WUh?X6ec8i4FLM@o#0%eb z62HmXk#Pm>Q)dJ&_)Z<_1<t-L4^PIWsGO%CZB#GniJalLA91gXil2;~lr5CuH=dCn z>(#vKsXuo_nKGTtV$Rje@24nDu~wZvj{GXu;-faSpKPO6`GMh2fj<tg^MFMj_7mUP zwzp69Vb25m9=|=?miiL%sr%iaWA3IyseY}~0b2DTo!_@EqQ1z2>3c{6j!o5hp+WLo zm|vToUwj;}a;o3;@Ki1u;Q2XHeOa&TVhb@Zc#ycUZ-Bi3{MZNBmUJh-)s1x8udWbx zq<KCDG)7t{>QYWRwI3a<hjjYl<+{8>Vi&NtA-*!(WgGH+9Gpc{yxcj|q0Cy}ClH1& zCFj>7Is!gzQa*tn<weFg$gAyHQ-9?9GPSF{-BO*+>GyjikGdr^B#j6oq$^}j&MM%0 zR=_zm>*qf<ma@NCi_FY?<nszYs9S>#)^;Mi>R@5ddG^hb-)%O6bP?LgS-Gp_ELLZf z1{~GKmQ9}2w&G>k?2Y`6k;X-zAGx}z&%!wiZ9Cg31NNXFC%*R}Z0Q8(=lz(*?;9V7 zE$vlXD(5w^uSkB$m{nUNJe4qDbgO=oFS;J;<`JfRa9@RTBXmJM%3p5xYME0SZAk~N z(-F`1TE+9+<GJ`0@*o#J?-jzLjA4yu@hQ|7{X*Z1iE$*}>wdzO(f5Y$m~u}QxD>@M zx5=1KUYT6m{*J6eD}A72V)rP+{`*i@3*9=5UbS%SK9t^zIAPK+qK~o{VbX*;M)@{> zkZpCLEa@itc+;UM4jC0W;~r+GmdRNfVK7bQjrDmJOxi#?c_V%VX!Ri16p$9<Gw;qI z-|%?`;qMn8_K$5!|FA#TrSS+q;5>qSp)vH#@;i5r$i7%e!y@|tdxHJAfuY)F^-<i= zP;&p2^C8tew(a}xbxYzc`riXw&Z2yMf1&^ITSEH#zQpto`(pj|Jc|1p^2qlWefh|r zz2^Nj-H6W|G}?t`=MEzOTy=xK7JUQrDa_aERXHq3o~I@K%$}gEty5rLE^<tp(}yva z`Y@qBmB=Y|06eN9U*=TMIT@2^_hC25TT9Pc80oCbv59=`s#T<%o)=zx4DiO(S8LS< z^+Dh!+Mw;T^d;LsIrbU2%XtY|e}GKU|A=s&^J~=77ScNuPs$PY{Zj{}EzoZP^#Wh9 z+k8cx+ll>US-{}@k+h8Z4!`^1FkY)j`_cyd6!K5XhW@7T7dm9^=zf~OxAN>q2n)7p zjCs)*7W=jl9N^0_f@do!8)$d&SsOpGE|9~z0M=bz`WN(#fcHjU#`6&I2bo^0_;Fcn zC(rlrY+onW74VJpb>yv<u|AR>oRb!Gy^>|w7R$egvb5W34+SrbQH#$KF3%|jWj_bl z=C}0#9)05;)bBz4yzp%PJb7z!JV3al6Y5ESNn;%|Ool|3Tgd5g)a$<p7$QHdU~n!4 zIcv6#@!V2-kf15(^S2+O|EudEU9I3?9IZRA7S^dBf4_Iyx0&ty*jKad-tWkqJ@E0& zxdWfhy1BPx&Z%t~TVKJP2;VsL-yQwh7m;^%eLmVtgB*qN)Z^F(c}#hNy}r!3xsPYL zwqtwiCD5@%`*PDmnXJ#pnWF`HdC<y~QKsx|Q2I=O%dqOkcKVc(e<=M7+aq1dfLUJ1 zRM{4BQv7?s_Y>sZ4SBz20y{$6(W^2Lg^`|RdeAq@gq4fJC?|4StAIw{_JLk?^(Y4+ zoG#*6PsgwSR@g7lYck9SJ)n1A|Dvuf2J}chOP-=nn5Xewh0NJ?UWbd_F10_f_lUc0 z!o;~?jPGLGZQYmn6~p!h-0R=iq^;@3azFa#NRxFJ$Y2h5P^TlCiZ)BNil6TwkABo~ z<eT5h`8@Sf&SSs^9bs7cK%A(%9Cr@XDpF2#8GD6u%u{>D^+><|q;(hkx@Sp!Jo3rU zQE;A-;aT8-b{XdPl`n&REHYe!F9>|aHvs+H5w~>~@{?<7+<Oqb5a!xX9%a~H@o%yA zLtDaip?27)POl$d0AFQ|NY-yu)`|*??G_=o*b_fL0NONN_l)`L{vY<<Ke*2Gy6=21 z2$Gi;>|Af*1Z`parbX<_2(dvGazGdMg<`};DmX^hP{Jf=2wI>7+7O9QkORA5h&yHy zx}(`rTW*KhQZ&<5UD{<Ex>ZtUt3>KVnNhdQtftjunU1?wr_Pp1)kH~TTec}-Ki~75 zbMJF6?<Hj?ndu+p40xX(=Q+=L&adY@Ki>Df)I+|~Kj_9M?rO&WqSNAg<f1hIb7IQ| z80Q@u#ZRtous&rR()sdxs`uS@VE29Z6VLtqW4qr#9e1LL?E(+9Us1YIXPuYy{8{D0 zKG?r}j(nG~ZOu;Ldu5Y%Z~ebt*?YXd(!*bs-S1t;Z@uJepKI(Ry#U^8W9T=uE|Gr0 z$2w1b(fPAFQ|$cmB(|`pYU_km#`t>I^99;0NG`zdbNF@tU1RU(q|#^bLxR)T;&~e6 z_(I%?cYBxxW;Xe&{xQ|#k7qml)iN;4$zSzL4vVg<nV;&HZ&_4d@Iw0l6MpwC_BCdl zzA68WGsjVft9iNX{xNWA|7Rp{Hg31`bnd{HC&dHr-`3v1)f(tJu$o)Bqg$FGy_&{k z@tM+n*ki@ZxA|H~bEftaB!g*#KWliZ^Tp6agY~WT#hB<{<C{tN6AW#qDQkyKI;;6w zG*sO#!mbn-LZ8+`X7k@(|4!qdrhmpJ+U?8>z9_yFEmQm|j-7<Q@*+B<ypLg&bZ!eK z>+`o2E1AC<)A;Us^i|<@ewJ302B-Rnb&k^7vxFDse^@ixcc<k~2dJA2_+D~wUpUyP z7lY`}H?7~Z=DV~Py&WH@I`uPc{hZr+n7n-Rq~*ESO<M7&e4yec^*g1s%Kw!83P-bF z(#9)vXpOX;Gf011_vY<9T6?Ku9k9f>N!L4Jk=X$DQj(lxH?sAU{AFh`<KSA;a}~^k zwuWS^k2UIP?-}1G*{=Ec@foJC>mBfG9q{W8zYcs?-wsasCGm8DwhQF<!Eg4aO%@CJ zxMgos=f1fQ7{4Q8_PM5V-RGqJ8h-X-D>i%j^^~nsw$Up4jjz*wX;0N+AiJlrd0TN6 zUuk@X4(Z<tzw`QqwgJ+b1C~S!^UGD*>h7Dhg)di02R(vY)4rzWl@8uK=JUGvIOp?6 zGmWg3ws=mwhF?zzR~obRzup7y+P8>z3B0cbSCbae(WCFzJSKQtn9ZFl9=CBOUMg;r zk2QV>hWtRIZnkCn8XJ6va=!T5tLSSPxLf(?HXZ*odaUOTk8jTCd}1>2CL4Lf>apFW z)8Nd<X=#^5E~Ayb)n<GzTfG$>RbW<JUxpSrGq!w+8KS-B6wN_7Tz?KHTU{(nFIL?~ zR;gFt+ov9VS<i{R49~i)pPunJVv;zb^O<hh{u|{B_|+NF7(5@OuS@a^q;;0BXJJ(q z>ks)lzZc6Mh<sjx8JIX<-nOx0o9x?Qp-u7XEWYK9nQy5!>gFfo49=cYQ~$J+@3-~4 z)AUBldijbx2372;=SF8~UqjXws}h4%;mbr1zI45ZN_-XfJ*12H0kiW3>7wP4+xgpy z>1>}P*2uAb(B6jVAcoX)(tVG|^J$LDo&oEKqtsVL{6aS;)YfGzJ--o8ij(~L-K{h9 z7rJ3M;5lncc&xFUFOG0WWKZPp-ulYtTIpAQm$dFXC?+mR=DvpRb>H*6>(UaswBRx6 z3_P1<KYk8c=UnE}<yjxE;u(!;*5f<*&~f@3$zZfr%3&&kp?(JcDqM5f`fZH-Sn_kF z6Qt8!rxb@o`AN#hlaJ|_?;LB?)BfKhw_6+K$CKYJ33kTg>4+mkmO6Ws?;izT>mi#L zkj+aWOYW?E(&Z*QuR-q@1s|}CLwmOxgYF$^ZW|Sx`{}DH*Br<5GiOQ1Iscl{4kNt_ z-j!qSlDs?ySHFrC*{dw>0RM2K-du-CpNxOds2D-dFil7=*e|MPIK=ymN9JcT9u@LM zxol_XV<Pd-e6jM*PqSmmHiyv|av0(+^DpA>GIe9{O)%oyfP6CJ7$R@`bj-7H7jVL8 zPG@0ZccLxU$;~wLW?A?$p1W?Oa_9L;VB!qrS?NB!Nqw+S56|BIq5pX82aZ*Xx81XQ z>s5or_Izz8e!$bdSaUI!KIyE+(y0T3l-s(a$5_UX?Y1+hLFcK)Vd+L%J4Ct06nF;O z=uJH7#8b)eG}G`Vr)Ow>S1}oI)QRuWcM)lPDCh2+LwE29ISH@)&KP^awFbVInEF|> zy|bkpm*i`B!NuCEc@`yqpmEupLaZlz<&Cs2q4`J8w>D+susYX!D{;E!ESsm$3+b@R z>y!^G&AQ-4Y+@W8sHz<>8aL%ycbTp9?zhF~euLjt+(FxRIiL&3M>xtI@@wNSbG~B4 zXe*v{)61(WPkQ;v6VO^-WNge|i}0)4yxx0X6kfXTu<^Q1soyA<Tw~vYeMaLk^SAcZ zzVYTPUn2i{Xc+22!-UTVSC|i;_W9s4^T89~zl<G>@%u#P3s+Shz7v_Oxcrv=cg^b4 z{5DGcQU)JqF~r{H9~Ox{><-+-ruH^%PGJr^CVe;~e8d#%v|rWup&wtOJ)FMvja_!n zWq~@)>-z+=x7v*9#G5D3BgHPKNe8{sp?S+Ed~uF6@AS+evpMR?+gXU+Q?aqO;!4RN z>g~QuN4@lR9(~g~dcIM&{^m?4&Td^`Z{`a1IX$zMZ>NWO*Z8A7G|^-8@cH&<q-;KM zTaWsj-l!Knvrf-!qi%7H_Azv~OY}@qA8R4;eVY8V^LvDRwqIj%VPEG{f*S{yU~L`G zUiTN37BB4HCigKro<UrYKS3U64gam-)&!^i!;YdI{#SH0>11zf8+#C4`(y5uyrxY? z>F(P!_=Xx8?VLH;UAXAa^-g+k=PNwB^sM1<9i;D3+K*BeceDpcOV=m7+~OAYHllo- zdZVGq8^xq)Z7iM)(yqzNsdJ@8>ef`|cCWtH8pjR)xSsvie&(^=>=Q%N7jC!p$eNGQ z;*#^X5%lcpe=qF}hvnmr2fx`p-4X9=?bEx{J6;a#E=nEmcM1M!|3+gO*I3og^`z!~ zt6uX*jk=sSvIX%*<vDLuE_@p6L^hs&FB{Lwc6iy^FYYdOsQjMW``=4D<@+tan>#GK z_s!j7zfIoQ{s{fVexvafTxtJ_c#5?R`-(f>oBTydYX_~Rn({|JF96>zzxL;AL${yq zgrnbm__#Iv@hWrRirz<b_tvj}-Q&Jx;C)|poBA_;?ya-O!JOB5??Cm9da;kO8XPf< z=A@8~)?DIcQ#Qbc{)q23?lyg@H}^coG-mNA!zW)kefQS&>x=l|%m$b6C0Y+Gfqx13 z#pFxA`2^|k(^?CRSYCQg?8p2u4*ZDwwJLS8VfLN+1lQCf%7!hU+R3Jd$mjP$2FVX) z`c`Swt<8}93%2?MdBNCz1F^_e($QXh$|hqDRbM*0)jhgt(&CZyiCCbiUwY@vaASXg z&2bk5yEFa520QhP_Cc3;*V#{^=h2dlw`)H?WO0AxR{bE0FVk17Yc-}ad5Z-a={`al z)1y7dRBoiczSS{x_7gmwr~hueD?9IA%a}T!b=BUablLENznb*ymFF^DT=uo@GsFhn z;;Re9H1qiy7d$h2QcN?O#Wa(YPr6P?cjenA-M5AAPPp!l3x~sozK>|XI6HrmEsuHp zVS8BMRM`#fhKuiFZ?So9B|kp_Yz@0uC2f9{IiqCrTbeV1F4K3`F2WmYQQ5hr;fI}t zu#YPH5l+^yr5AhP9MM>rN4=ju?V&R->HIaFeV*5I66qPRm|yy|?{BvAXzAg=YjBj) zpV_$ZGWQrPWy6hRt5sh+h&DSb^)<uLMp`qd+{O;Re)U7!K`Tr6c6eEZGJJ}~Y6fR= z37h5)mDQ&<Ii6@^c)U&Ma^9xdPlGiPxSIFx$jiRR%;%gf9wsl@4IJCO?YH^G4_N#r zdkNWyAGTjcTp%A%Yt)<ZyXurTIr!Sn(%5rnyOEA|%3B}N&h19!>PIrtvs`8Drqjl1 z4y(RvE!bC1l6F0`{d1GW<}Q0LfN;hh$F$OtF?5=Ij34Pvcx`XB8IP;34Nh%5cI`pK z*2An>_O;*X*jn|q%IUxNi^U1<=byyBA9nj*XU(!fKkIJa8<~BtGQTNiT~WQsn>mU6 zvgM%#ds(HOctE@6J%c6ks}3)}uxR-NAAW(eP?Pn7>asCQKQ`P4X#CM{zvN)~ghy-V zxeQkRqE9}KU(Lz$S)J$$JOdMp#M^PVIK6{P>jkyf*k*uT5}z5{6<_mfeG_|5v()R{ zx1u<eHrlV7B~F<oPU(bOq;4NR=`qJGx$hHSuus<c&HD;kR}^=h?GxYjdEaK=zK7M; zW`0*$es=~rZS!`vk4#^R`5&jw{HyEM6mVnCYqbkp=37ig?z7L|ro9PhO8XNNz)qMP z(!K<K+U`qCH0tK(XVo|UM{qU=;BPr+-??Uez`yW|2A9r|C!ta62+3m#8<L!+NC&-= zeOebix+PleEEIoQCf!cA<l|+zpO2XF*b?vV`JTJixkI+Ru~V_*ul$(Dj?(3oq+i=F zkzSLGC-B>>qsJs?l{M-~4%nJ#&GVy?|Ha)!pW+?K>kGH1b3wIZJy4=NV$Iio>d9j5 zQ(v+(%=R&){iK%8yoGp#zf*56`srhzaJju#plhD8Y2}ftXlmA3xyOBZ8<l5y?KgJ% zv3>5xtS{gdkK^-RQD0%dgUD#y^5QvrVbUk?j=N5cQKxxE_@%$2ZueTF>?6NVyhe{r z_h>ijW0I_mANWVvkYKGY#+USF>x#;uQ|B|IYENGCht}bzNqgVho^>0m`R|DTR{eKa zcsgklEpf+#wO#&9-XQSuvC>iE3iCZ9o*$vkXwP+zvU%6_WM|;Urt-PcWJXz<bFs4q z`_<0JDt$}@Ui`zY+Sz_Qv}s(y$M6|5R+i*7<YSI=EAg-CV_csGDD$}IhV${E48O%U z$Wn7_;26yDYfa9&kb3}WUC6p(L%7usx}&w0_!{&|w<_)MHunZ@!B?z((r>Mk)jsIB z6u9AO@?C;cypedH`!kI(-)Cjd$NZVfjUITO`^1XlNM*?<$`5IuRen!&HTP;8#3bYg zO#bQ4ZYB64nvt#KWH{l2<}Q_$7mK3k7{7F96nr)Y{EylhkI^;Wo4w<`wCS7QwL^Op z2E%%G09@ir-Y%EhP3-IXb+y}DO)-aXk+0bpA8qbEr28)E{*2jBMoY<QF&TUNu(M&| z@j0xi172qIM!!DJ9(I0R_Gi3;wiREyoPv*O?eb5yUi#FH_v3q>aWYri`QY7KzyBVe z6IycBb6m~(KmK|v{ncN~VV#CvXN5Ptn~x8fMgHTA1s{sOrucBo^2tuZ$Hu%pO5J3f z(~*w2Qt=AwlfEZ1A7|^F#_h$(WO3!nVsYiS*z^6)`Qmqe#$y@ao3V^^L_VYHu}l?w zLyil7l-5Xl(wR;bzaKuwY|v@P)_1;|WNPaq(@A8b@+b0rXW83)@g2Iu@J9L_lYQZP zUr)@jX1K(UG=5v70neR>Ey2r2yit0_Z$&mBJHxk}Fg)-O+r7d5p@Fj2S&L|NyKUM2 zarFH&c1{`b-9V#mHjvhd>AsWfRlJhFl0709Xm@+;m^WUeK78$$4VE#TH(HwUUht^U zIMO)((C&6*<1DwvX?wr59&#{RdW@fO{;9_=U*8-*x~sJAo0aiH1$9-*G)D?f?{Vc$ z#w%AyhwV#O#v1jsmxP^Lo;I4#RW7~P+@rW-lC?{(yYRj3nZ8^XwZA4?)>-dRx_A34 zKc>9&s*&QRA*G?CKP#7gMY*+4@V1VR@_`n7>2d~NvGQccF~3<G^luq@DsE3|uX!u( zQ!1^yFKRykFU7-dFua?g38Qy+1WXCP8f`W1DDTVQwf2f~!AnME=M{5FTf8G&iVsDH z(nF1U^WO8a=Lej3D;m=+eBe{8F>iQwk9HpczidhJkF#*;(;8(uR~n#S{99kd6*e}? z#;6Z{Zu#r(^Kfpv;(_{;-b(klGihTS2B&N}#XV=Y<V$p~rt0UT73$Te?FruH&kOIV zTAA%%;4`fryjnNZfUWGQZavFys!zT{K120kFY%uBsg5;zw>jg6_sD`feE%wVN63#r zlltcVKy&>qIg7t>pGV^#Mc>$`N<Ni3@gnxTR?vmG%ORc+lbU~ft`*0b9x;w>=czZ_ z#+RBL!TGHBCEZb3#Am{l_wfWYL_A<HtnHpKm}Ebq!{!poAESJNe6$g+z*`|L8lIeb zwC^R-;~lyzSk-@s^Kh*PrbHhy5MNaO{gg}hv{%#S%cS4ft;Klk0d4?qykL&@GTZxz z=N2lBI=&_OSka`r05Qi@oG(%ScKRI6@Kw||dC~LEyB_V+ylXOJ-VHjRq|HgeActQE z-o_nwUA(_tzzj8@LwR3IFs9NMy<T?(LhoOf##?&I>+a0z-sN?Vb-{HCc-c+ZhVY9w zipS+&s_3Bo2LIx&4tH&ac_;r@Ja!U|A;U4XXY6(CNIE0@%<btO5BR0KF1M1#9eOVv zv3&{rSrZ52ke>}XKkxW5dW$RGAG~h%H|5XXO9w7`{c-A7y*+VL^Inl?zoq{HMtbrc zjA>5r;;C>Y8QZyn#+mm!uKIS~7FGOk0ZqN`|HV2_d_n(`{aKnlg`3Qw&-y;#IKKIY zXUci5+WbkH`-*<>g`TrsZN?Gd8<;=%mWb>YAEY+Ka#j{GGqN8z_BNgmv;CKEes>l> z8(!vP^W(>M_ennu2lH|n`p2-rZs!uuL-(-nTb9|k9N_Mqcwp}j@b?W=^gMEd@7+W> z&n81Z?-WS=*c#0Hsdo6_8RyRv?2%rgugATw3-l%ZxPYFI@q2N&6$_sy&)q=yP`3E+ ztmTtGi#YzQ+vOQ_v_K~w_FvidMRbF^RCX3{mbz2u{wn3CG>((6OFTvA%|8P-X?4j@ zX>K{;xHhdk(V;kGgZv3_%ioGerzqP*r>047c=?3V9uI_FN(VOlnQp_cyxQ_B9KyTl z?Jtu);rb$3Zi)}Q%PpnT9AY}L$l0f_6E}tX7rxj0MbI%v+YR>}J}<Cebe!kF#P=uZ z`%A^f-CM8RWpL@;Rh@W^X2<)m=pzmq23|Bj%(y%EzD{9t^0%iN_2Lw8XHpFMs$}AF z*ztne=epgJ!;Yt{uElTJ!MgV=eLe|(&4(vviXCTE*TLthY<$|MJjI#u0mGTeJ>#3v zk=FV<W`OfC_6-<r=xEdm>AdMp(s{GlH7m>P(`|NLvf|x-VY9*OwU*6(?E$yh6>zLD zHtuTL`moBl_EENv-vxN9x%6#H^ZS>)PVoD=7bjgXny^pNm+sJ~z5iA6tC{axZq)7B zhvj2cd){o-?PdwMCF5<1_m<q}Edjqw9s4)-O)$;`ZOn_5EoShG4!;PzaOvz_^YjpT zwO{ad%NmQ98BWHc`jxo%uR5pA<RL#o{VDMh{wuxWer8>I{s`|t0q2OpB%AHG@uoX< z*3Rw4^wi+G+l}$i^t)vjr_dYrw!g8P`$*%oeK@nlMANeI{9(6e^MlUQdEnO_zTf&y zx*Wb<HaWMk>kX38ytkP(xQxE0E@e8K>GfPom%bAIe+C@ZZ_F2AQ~0Tx)wOsz)8uuN zmwgw3nQ`5ced~@^%=6P;m+R>mWwP_}Oiy)QB0U{z)NLPT+WVRHaZb`^GSi<)*Plt? z)yJ6NNYA?7Oi*SqiSIAuXC=Zlk?EV-#~F*xLWHM@6Pj!cnZ5;WxxURvF8<uc^szLr znLSIFm_JU^hsoUM#Q)B8;ZNS=enq;VJAZBRbDfKE1&?ng6X`O#+LzXE$+l)(HdE9Y zzxbVUUIotADmVF9$*L?IjXHA*>jBax6OUtNI^|&XnXR<>a`f5fsy185U`(F8yK+GN zf$Oa1C*sOvgR~FXa@Y4+pF7hzdD^FCextl)OXfe^AC>8+5Pk5z%N+Q1^?62piicg^ zzjd0ri)J6^`bJ5gCcVSs45bISUojZv%)>R|LbnBbmOd9rTN&x6NNZ0r@}ei;UTndY zE(wnIaW9~sw7vV3xGQ{Cm9i1}I-hG|?HTpMje1%Gx^4^sZ?Ux7ZGMkJ<vW?bW({YH zkE4eFqbC2F_)GugVfHEQJCEofbZYEDhxBCdSenn8F>c_bt@RJ@G-kVB!CG^uQRlrC zyZJq2@0K6b{k)h@fO8(3F2K*yCh%wX?&dd#XTI_I37Ec0g5fuZfqtKVtnb*<%=FO4 z;ks({6PpLk@~tDzgC@<N=6hrJ@Vwap?icD;bbI@gNoOn`_4vi^zk0m2?J4k?O?A!< zQ|Gpwp5VKz@U~(wiSJrhDZZ7@JmvA#a3+7lWowBP7pU#c*67+VkdB$ZL^j$-yr6wV zVo>6<KWX^d+-bM9K=j)_uQO)Zns7lg@n`9p(y~eNI<JwuZ9nbCu^J5n0o$k-1HdNx zKf85BeyGEK6=MirS+a<jF6LG2Ph%>(t(U<kx;)-(;iJ6S5Bps&d;XO9owLQYydCy( z)$^(T(c+m+_205R8=H7<b6?tf9O&VXuF%%tKlN|juQHBCif3(Yx5*mL-#ukxq)uaq zy0Y6>sv{V(x}+o6e)o4#9ec0&sN63~k6u#@1uwN%G44L!^em4BLk5{0HRHENz0IGi zPix=sSTg+fCVs`^2Klw*&l7(&_O?Fvq;;vu6xpmKc;b{U`hdO6TKf!_bfaw!Vc#sr z;rz~d)v1H08fjdvSJx+4$6q$vD{uR3m-9L1roPXfDivM#BCxx7hL7hk&iyBk7o?v9 z$%oiFc*t#j8C~~%Lv)?C6Zi$*lk!TJcEXXjdm`b(mQy?W`_I35V>_N}N;FmP-um)) z`<h#JcLsd6H|Xol9Jil~87~E+=g<~<^e;WoGe3TA@rMt!=P!JsJ^%Sf+VlV7kCaD_ zT60Q2Qh$$bEjiun!+rMmptskal08#(lf9R#F0XFi|BUmO1@GI=Th8}*Rup=MJHNpz z8K9R#&^^4j%GpAiyR^2f2K^J~9~!%R>t7y-{M}nm>l=W2hEsAVNhY^Alj!v>#UboR z`d-cU(8WWYXK5c{LUd(orLxmkWaZMUDDQ`!@vP3|(WQ;%qh=fNzGFY?n)Cd|Z_v=L zA%FdQyl;!Up4>|=Gp`Tm8RS#{AMp@-ZjbCt^8w$0Hb42uM|pqQ5Ak=1H3zYUU>|uu zcL)S~KY4rwv4G}0J$L5MM7{c3SsvSX_1B<tsA<>j--x~J^v<$(Htl<7&3DqdkD45A z?VX9|v9GIhni0#Vb#ejRIAbI(v6xDFpyxMv5BdM~vu>Zmz())q{%c=aWxCrvgbc2e z4tuOornoH5=0?ej|8~xFp7Ucp*Nh+0K6~;J(81hH`3}l=Og8Gp&>7&syBX~^)3Y(c zYiGLXe2zzQcYkGlnV&$<=fR~m6`vc$2cwht%lcbHpMAf~=w;tWx+WeCw71<_hn_O< zsvpAs$AK9FMz-X4zhAwc*+#GP)eA1W1!VVH?taT(O}qaUT~n5Cm)(@hZZd<_-lXhl zM)rUntvZg*yWpe1%)T?(pLiAUvMtGtH686ag9l%YJDpFV8#U_U9A7-0qK<Wc-!r7` zZb2iR0mnT9zw^|0%Id)f|2ZRT-bYC5_H%vfj*IiJzPU!-;y$~>%^A^n;6_*Swl<%( z%HnQ#UqA3;q8**<%kF?0P3TW5OYy4gVMIK*>uf2FA+;l>Y2Fo&c00UG`XBfW&iIsc zLGO)`UKnlkmE(yvhR53sd;F2NY4+2o<14@$Ybo-A^YheXhx5Cbik<h!x{6Kja-1ua zk94WusrtLpdrv}U;=_=)Gk!PZ7tkMKuBz~pH#;FOSmkYu<Oj(|KM~{PbgcEL&*`vs z=uS?Dbb5?_aypdH=}_LrAUZNT9dkQX{n#dZO^i+VA1+9@Wy=}txWj5p;~A{lxqfdm z9=JWk`qTE&(a$deHz-~~zj$GK%liC^m4_atXB0x0Ob3nMkJ^4)$U*(ok{tTZl2-q+ zi6zpZKk>Z74Y*iKztl)$u=8>5@4OK0uw&6(A#dw5>aHrC(QR!w|BxM2n)Z|Ew(+6Q zO}ep{3&4$cz?mF#IOcZwnV18DcI!8XgPuj;LJtzZlmC*B#jZ*-(Vymo`CXNF2mB^_ z?=b2scqv^neAJI%7k-z!c#LxKRcpi(qz5v&mK$}8?VJ}DvkYYMlH@x8jPV1V(;PVN zZDOubzunpxU23Cx*E!)DAn*FQwFbTw@`D|HT7M1KFSkqS`-bZ>?%8yD%ztbCd#iKK zUUqUC+_!4m!)~riuiS3zc`(xv*FV{mJ%7X;{e;pQ3-TG>Q?+~HmWM~fQ5R#Dd}(u% z^6?Jd<T_)vgKw(|&UIV56#Z27zLaEN=GUUF*{$<cGEHr;UFe3kt*yY}wDlPK)*!Ll zKE~7SY<1D+|HpVn<TU4>XNUvNdJK1x^UsIr<0O0#j~>oqxHZKV=<BNLU00Qto}6_4 zt<p|ord{)n$};&ihgbZtWckGJ!ehTBj~`@vYZ+gqld%UQ-bB9<8$`c~4favL?ES>^ z9Q)v5#0m4%&ojsBd5&QeRqv{8s|QwnEc;llfKzRj_+@>vEzWZ1#D~T7KDJrs$qe!6 z%fPO=tc6F<ZQv^{rky5lF%)q}JUg)<*oYfU7tWRBYZo+z^X)Oiv|!KQhM~2d+n54& zN-+cb0P?5YHL&{uQ;oXCXz7mn+0wk{XOq5_M2q#|wlGQF&Oq>eWzyCcx}!LH!pA3F zm~h_8e~*(NSKrveX|;Fy!mpanLvPbh!*k)7>@v1CSj8B~VO03Lz_$8n@nNh{H{3p6 zO9!nLjR9QEF#+qb-WKy&QC>ur9qp^Y%Wur89lxTdbFQAjZ)*KL15C(Vx;kV2;n7#5 z3v(u$#M5?}O7~p`c^t|!E&6`oTJ}uKO1e|=saOZC(rz{3-7Z<>?}pHL^i0coqmF#( z10PZA$cwL5|BD^Zw0!ExV*OKJqW@0)OV6&f?4<qKm4&RYO5px<$8#~zC7qiSO^rlT z(5E(Yu2-WSxaP9F=w5*5TJu<+<aM@7EOmW_bodwPreIAb=y2T2;GVkKq4=To;0QFy z53%Mn-zr^SAiv-`Et^n35%Ucw@37J-!CGC6C)uw(!!iP$W9mcgfzw<7o%Rfi_q{Fb zs_OPNZ1_585x-jN(zZLC@-J1_!K(C={IKVRD`<`Vd*h$*!4r#Hp<820_x*2tSK?5H z!{STgr_Sd+E~|auWW1s&`n4FZ<9P@1!sIR*fEUfd|6y<Mv8=sMz;K_x&3&GDqxg+6 zG|ST3N#jUs@8kyu+z&QoX1+AVj}>p<>6hB=GxgO5oB5?yOe!CgU~OE`Wq5s^RBogg zZoqWoPyeil^vTBWbN`_F#(%{9m|o9{<n3~~-b9aIIRQ^c_EzCN{Pt%((jHlQRzyD1 z){GwGm>e@&Vo$?l=<S=bb{mr|HucBLq(jYqeVje)>H1UXeOdmSHmklL*!oV~xBaZh zfBPQab1H*3_ItBuMgHJl<D>n#lCS=94tt9|$(!!03TL{<{`1=J9Twjk$ydfYvp*}B zJx96dbog)U9=q(&aBZf0>;vwTgjZ{{xW}$^++!EtWB<7mChoBdM)%kQPuycyx$b&L zdE8@Hx#B~W>z=$|WWz%Z)+XWy`mpTzvgcPs>n-^HKkldh`QK01oTIf<jo;BM_LslW zTsY`DC0!eR=ce}0n)lNs<C^4&{;gzZnJOoy>H9LjX%1??hc2AbLE$w2Pb?}rYCca3 zm!0`gF1pejajvv#Fs=UL9{N7YV-Gp@Z%yBvwn_v4d#pM`{J-@(^6B`#nXHY~%l9+B zxC0(`C0{Gwrg3mDxpWQMjW2#)ta9Da9uZ8nDBhLb3&PK*y9U5M;W)T2Ub?8X-xn{Z zwB2D=KcYYGi(5X!vF`P6qCcaFxIy>DS;v<ayl%Jd|267XU(VW2dVSm{*F7BFCs*5Q z7kIN@^um6fkInZxa@IbmyO8cfMN7zWjI?+XcgEFE+!@z?!{hKzF}l(hfX!t-K|8HW znm8Cs+!+_V#xH!V!4tnITk`(m&baDXPucg{)Mnc2b!U9Y+sB=8)tlTpaCWX4<R?W} zMeRLCG5)*%>a|~g)AQ3m=eyir$>z8JUhi^uJI}DQDDI3;!Jp|<Tg8m)i|i!UhPkgf zN%^GolX%<WDV;OxJji7>Lp^64t$3@WzDE5FusZjZu6;kcsk6#4(tA8D9m!$d<K>!f z|GLuF2Q)D6_mehy@QLi*+g;ajE6Zr`*mEkUn>a#eXEWH=c<WB)H@?s1D4Q_6-iNid zKJYR5T|>9|QQ*fiUo`5p)Eag3sj<JIvGMLgdv-;!A!j_6maSB)$yVi?hdiCn2NqYd z_i$PDiQlD*jkKmOo1cBu?&1ko+7CTjI!V3Z^Lp8o)({o^&?@P;-=+K_dHKUSwmVHb z(Pwz4&X$xHp2&}rS3i*-Auk(^ywZ&MU8}m2dC%^#JN!M1@^A88Z>10MMmSU4|7h_% zdEt!wv*?BBEjup;sF&<{zQg2PC2#FLKkW64$?6Bm8$Qnuk=K|~JdUp;U3LGWwt^kZ z_!PX+Scn^WU*w^_^<%f&J#5w&<QI8=<ZZ=V*2a08=8MGVqP$pG?A^_t#=$Lr_XhTT zWDjrfHlm08)*lNu`&Q`w)*q{m@|xPX-YMNxPrcok>eWWNPh415nzFHDyX~%z>9xw? z^=L<(;Z+^*Q>qIb<SXur_nA%TK1=(#_Zi<i?fLE7Jyn}`7KU4A-!tHy(V6>ZdTwOe z@>(~tb^~q<8m4{RQ}9ZAs^k7E|DpUSZL}9Pfj-ZXw(n1Nd1hq9>QZc@HMV$CLk{*1 zMbdiiUNO@se7W98Jkx&I6td8B3j6RK3;2%O=9h{IzRC5ohA+EYwAgyS!)VZbKX6?F zPJ1Vc@g@6l@3ZDOCxmn2DIUao-rm3Z!SF}4)jb6DYcTXXwz*X-=&rl^hF0O5$bDQJ z4bY~$v%pvkkgY-EIh0!5OQf$dZ42Rp4~oAg8g=?b55xoB0d;}=6!~e{R+sy*lhoNB z5$9@~q$e3?+=o?K_hFZ#oVh^!m)s<mY5H6wUG?-+q`AkCV4R+Sd$9#)_hE-=6Z3CB z>9~s-bAxO=zYl4!ro-(%gSf+dNCkL{M||%%e}>U;H)`fLZ0&6}cdm5GXh?U-)SvdB z{CujkX8otR%V^2!_IY1%$96co8<_6SraQJ(w~@{}wqu67b%$;2Sk-(LzAM?j)hGMP z_q&FD9Wd0W^Io;x#Ixx>EIy*`j;+fr?f3c}+v)6%ZGvz0g&ggUEilbHwh0Cr{En^l z-9;BoMt(=u=to9Da~h|QBWV8g?w)sSM`dH2`@X>V-8a}?e4DLg>nZ8wg!6bfwY4*o z@ZV;Keg_uY|LPAJJbVv7(`I+@!}oRYDfVp|`IPd_?Q3fZoI$s2$>}zqZM4OG$`;*r zpH_aL47~OS<ZonGc3v7h4tV^J_6`bQWXGL%YxT_;eBIX5)XNU-9&3y*aA3Ex!_IrO z?jvrvN9#E4`3})&aKskljk@`zsMj|n<mbxxLiqa<cl1gXV47`MPX^3@!~7<6O1`$= zasD>;I?_I--LE}gCeI#ZvQHb2-T(6E1xyco4!i&kYxAjRtUr@E`=Zv~<49|J-oMxU zTJPWn4f3(kN3-na_i=6h=y*<{hhKi>%kZIXJ;nLvviY~}cTO*V8~4(*XDzwMUPR2z z>|6T1wB+wKmr8fSZnTbQt`*$p%cp29AbchVXwCN{6!VuDQ(5yn?>&*v9HD>agFfkP z_%5AGbnLs^H-T**7@VrF0I&W;*R-|8HXA9vu{~^bKrj`_Su)rCw?)AH{l^CLh1;7p zV}7Zl{a}~&o1N`}F}i50cqQ&3$gkO6HStdDgG3*)V~b6B$29(<G@*9xx2qZ(-x?JU z175ZgelzAi&HaI2{18m=W0thp4m61e10Ek*ne&DHjjnt#80X7OhDW^U#G|rKJi(tP z9$<3*q&0=_Q}~!~#vjEB(i7_kUWz|u_@lmc_M>=axKX#YLp8-SuUy7XW;$Zno9-vz zqlWNN`lbr^s(<QldYmR6+ujWKawN|or?<y_>}$W!rCrg{?g`h~xW~<%(`&I8l=W9U z>oKrm`7_|qT28vInCJ#N@c+^&!F&sMuwPQFncd0$=D%*wAA5a!{^uT09-hY@c<Qh1 z4)!MwN?zER=At&=McZ55!R~z@_&9WaM&E<|cRwZ``+8+)v-@3-*MR5W|13K4r)d9Q zcE1KXp7(Xr2!8p-=lXq2%z4=RE2aZJuIjflt_k!5{k;s|bsjD`8NU<XR`gCPl}X+M zigyI}8phD`{3i4hyh9D_&*M_*d-(A+vlr=WiX;04>o!!@Se;g@*O*<$_X!SK`=NC> zoewR9jmXc1EhL*veqXqQhP6rbZ%=jSL{_%0cFy10x58hw3try6^|3cAzqd*Zk;bI) z=6TT(zA7JM4x@KK^w7OmUrahv;`_uU|2}bXjr&P2u&?(b`+6_2ulF*2T+{vb%^m4| z3zp}e`zCkd@rNfZpJM8h<WDHCF_7LQ{jkemp8N)Rd$$13Ae|+zyBH6nGcTf-FNKa! zehRo#Nj{Zpq}Mfm_6^H^kK5?^g}2!~s%yHxadKzzaJH9tnKsuNb?#xX{=ea#{tlk^ z(LMbS6sHxdKeAk$QEWw=bhg><hxiUH?_7VRUMe2hU+RD6ttFGe)!T~mf)PI&?@xFd z_a{7!8h8?)&OWlgIQ_`+;>;sFOUQW6bMNGIri0h^R8v{J+r@QrLv%IXZvJ({Xsg-U z*?30GIZodjt_zcvPW{cir+V*^1G^tsP2Z*4apgVLBM%+ey|$wK)VbTv7|l2G$?)x2 zwEJcFG5W6g_!Mitu6V4=`~R)~^S2d;6(_T|bX~DAbHW0BoYeTw?<l_0?oes}MP>AR zerNISROauZ(m3dkIM%-3s`w9{NS{wyoXaz6HovC#$3&ki!Xdq&KaDB+W6j;XClLKj z^ytrUc#IN#DNfMyz|-K2zKkyPxZnNChL6qKqqirIjqpAezNHX)%df?n?fUx$`3<89 zJxMZ4d|tJ_;4|w1>r3x%@4{~zW8*%jE$N5&8vHYQ^iA5XZIJ<M@~P+x9a^(=l9Tn@ zrJd;^GBX(ie^RpgLaop}+zs)A7<a|jNyfu3e6Q*0rgXEB;$pLrN8V;<N1LwK722Dg zv4+2BxEMb))ks@g`O4fTHq!T~Hr=kuE;qCJN8WCGV)mXC^fuv6cKo>Eh8EM)rp}aQ z-zOYbA)4@E!>&)Vg%cX*W?5@Mez_0Ys23;sw)X_`-juxYQzxkV><@4De>d<iI4+%| zu`kyro!mrc6eli{Ui3b+?vZ_PFVygB&AjFNk_*y(>i1cF>Q`|f-><g22KJ5@Y*BGw zythW<xaPdRM0%go5%IcYyx@KJgIl_`;C;(yuQcjr^YM<4Wy6tVQ6|k?YBVj8UWJzL zV$WUtU54(LX)pM-tbB<v3$NgT(VcDk&Xv)~8sGxuf@zhbf9Qs2H(BEI1hZnkB;Dgt zzk0@^YA}g!7r3AMl;xA0)utOCEbfQqQR+o!3r~{yr9D-%iO|JFM;gCy#(PP^*PgO| zpt+G~Uh@4hvlI02^kShH)b6btPITx3{Ft|PNv4;`&yk;R<3np4b8Y2mzE5<eenr=O zN56?Kc!T~6cCJ~U@Sese$rg-9*p_ITwLCbP&qdP=`LIvv&8%eKMhp0{SM_hYh`q}H z%-jIio#xplP4FIGb<!N~C9ye<Iry}Et9&Yt9=}LGCIe{SgjV^n@cA~!P$t_vNenTi zHohiOA09uHFIyY=&HK&9%x}W46O>QQ7qxERxH;LVa~7F+C>frVtwDqAdeURjY3P%F zCI9?3o((u|{(V~SE)ZU~p>bfEI^Os|aq*FQ@fh)e_-VQ#*)?X0$0@%^x#W1#eQb<T zHZbn<V)9LIEnY@OCB}Y@vA^K&XMagH&%UCq7oauc!_LG9#?iR_rnHXBmoSI-r)T)K zUzGhY-%fn1<3JvoPp>r?Z-eo6iKUDO)L*3jQd>PVTtz==-zo1J@HNV-8)=_?g!H(^ z&3t7vuNK8KPV;iK$8Lwz#=en~eA_U2&QR?e>#QNn-wi>t;e)pocx&qc=@qbA|I5c| zPEcDtL!~>X&yjBHA3q)I?w71C`7X5`w7mOx@|8y2$|jEOw*6V#Q{cQ{kn#$!BdHHN z-+PnfIa6%E?sZkCS#UN7W0yndp!#4xOghN-VA8k-3?|85Fp?#EQf)A0%Iuj}cvX-t z`~1QFrJZMtS$*;~{Z@~CFfYZNqrK^~l#gdIK+N0S=X7Mo{LA{qcrX0pnxn7>(HryL zK-YL6*(3W{)>d|?=Ub4k-8T^~ox?@GWv4sXACfQlKw29T8x2d}8FTfKw_=0)i_66A zPdrjDp7QZ)&+zF+y^#In`lI}aV$4f#Eq;ag{&B_k*y0#5f_NdF;T*&EFQ#cfP2Tsn zzj=jvozL$~GA+uQKd67%=Bji3($(-&qCM73q4QU*EXh-2wb*oXhv+d`eX&uuZ%&=? zF*NT3i7xk%SAqE=Z6oGs=X3g&hw87%7jXuVudgO3Ke?xBx^|5*p2}sUHY(c-4V~rg z!!Edenp^^p``8N`JYx~<v`6N=wEp1pGg0T|&$!H=q2DW>zC!w0XsCPsS@O?i`R5w- zLS@f1=O%Q3cw~t3=P19@EJs(EvxX@bev=7vVb$Sc&KmLhtI|i0eIj-kb=WVq)usND z?2;YyM|{?b^E^gL{-WRY>&3gb=6*{ubRMoj*9q~JGZyr-d7oy1a-#u%Uo#l`L`T|n zA;s4b#|Uo2_8Zcif2x^JbD`pisldy8Sj*&S@jiBRiF%vwu<Z*?J|=vIU$o+@#(_KG zGH=(tpegZ4a7G{aYRE8R$dE<CnRqnbR-b5Ad)q&NUc1NYdb92^vz1}D7IWMfKiK|; zy?3+mcC*n9-V-p$zQT}wzw8k65OngM0DF#v_XMm;j=U#eP2=P}0qg7|*d1)*;0=u> z*5+!5&doqiP4>@k)qi{KX`Ye}>^)wpFc#@c=iP}*z6UtZ9^h>L&Vab5MgNoT6ZYYI z2FUxKvwf>#2WKNSY-~{d_#U73#O2E-fgcpS>uH6&-m_cqTeb2e1FdC-y?li7>G|S> z-UaYp%4=S(?}|^rbKXDj!t0&q6<{mUC-%S3J6xGEJHtX>`k`w~wokh$d~8|#yL;>I zySlVrY}D<J2=gF3zTIRv=Ho7ce%D>;$C$783inSH=EyPp*I;vP>}x)FA-fuDzzbp) z&86}URpCbVX2Zz7?6QwL)fHezfUN;LYOo)G$I_E!=Aopg!{D7>EXvyN)?5MKc3$@M znA=I=V~F$Y8Q{izJh5h#51ZI~$evvt>!kliUKyXJHCD;Q*SJ&SZMsMDU;ksYVeDn; zCw*3u9u{*w^pLpL-bd5+t_|9i_oO+a?BnT=afMI6d+YZ;t^OQ;kA2Inp7^nU(_Owt z@r%9pJ-52;GdJIX%f9Cz`<_Ea@1pB`@>%_q4Fylp!NH`1*K?Y??)SpBoBbPUuiSHy z9p#tiXMXU<KlHx8`C+RgJ^P{e-IFr+9s20UmOiqa8m)iw=#hgD-rFU!`cwCR^b>8E ztK^RJcb>m3%$lDP`O+qj5qyZhIsSf$zf1g4zm58BNBCRik9<G*etx&}yZxO-@n(MC zO#3%)^7kZvPw_|nTPS}Ezi;LDt^8K`t%9ctp6X}#JI~+$T@>F<f8YIg3Aq>f18$Vx z(c?w&eb4hp{<Bm30soJy{E`1=!QYOe^c*DrKjfSLG>{X}IED9s$oD^;Y8EeZ75QXQ zyknC;;NMB{JHN#C48LP_{-*f*41eeOqka$NdjQ%4z#iz@L;0R3`Fo1LKjiO4{(!p! zxI6g$YyAE-e#iO!AaEZ9?t|oinEYq>{W`zj;P+MVz4{?zd9n3}MIXg|pZ!wN_cFiV zcq_U1M@@<FN8|V;F7R)o2m1GSPr-*FUiU!y_26s%LqL7g3H~2H!8L8hu74LOyYO&I z$Nx`WKJd`mk^2s<tsOjSWrDpz`xAw@Cz|Zvll1fCx{?naK6LMaqYoUuYx+Y!uySBc z%qfZwyzhPQuGW?ge*9yH*5>BkS3P=g<=}w_4_5a~?5>W#WBeU^io1aN3-=#>$k5)_ zUn-XdO2s=K{KNxm2R_2@+R^m894Rmyc*oko^|j(1O9$2t6z}-RgAW$(u+pPPQpvqX z9(ds3VE{n;jst6JM-P4Ep|yh#8bPo5zbcR#DW@3r51~CZ>S_Hr?~1>irAhuaJleiQ zf?FHbUT_2au}ZSMjD&wrE!t1(KlP=5>Z8oxt>E4TOeP88>wAW>_!sm^4v{ALMRco# zt{8nX%%JbRq=N>Mzft4Azsg_yi@FaS+1mO_6asfQ>A_aMiQ|ow`509D8~ge1N0st_ zfiD|_YJT&KmN_JD<4^8O^i}wiGH3XH3;K5bAC$$vz!&-WZI<^JTYnUV`UP3D&hr_5 zt5@HmgMX!}jE%&1Db3%q=P646Xe@q8&iXe9u=4P_?<CkRIs76jMOjHEBz$X(SNVrM z&*@0{Y1(Xh{vScYG;ph)|8??@1Ao@@SF!Oq;2-lmen*dGlqxA-VhnFwqW`BoPgMFQ z$#&lJf1Nx&q;$pe_?_>Xp?=o$_mMvhujf1uZ1u~)M?JFoD`WIu^ZGB~oA)vFeV%`= zD0W{0-;19APet*)=b<Oyq4)cqA^+u6-&etBUIc!|^CRS6B0uW+z4+29YH`BzKZ28i z-trec|M8-jqs_KwJ^%M;JI>z^CwcV!V;+xr4EVtR8%6Qn7Z}fw!$aRxKlyRbe~qy{ zPJ5T<Hf;GW<hA|bRKE>=zW-_Jot|yj(TAb8{F2xI1R>xx>Nh<9$)fmMOVH>1-*&br zH1Cuyc|E++R9zbLJh<;Y!+4iG|9ny0e;s^Jd7epb`3driDc}F5qBt~M6yLGp`Q2$w z3;g}E^Ar4CP5kKpn`!PSo_6?y<b~hq>His@S0WETHx{7p35Q4CKQqL53(sFEil0;d zy6683^U)yqeEi${)BIFgPxafsvnU=Zx5m4@Ruup11pGPW^*>M)|JyUP_wjCrpMU=( zc^~ig2gzT9KR({=KVKC8U>=*g;O&2*DE=Yi**5I?f1c*X(qo?gP5Ryd--X1F?Y~Xz z@C13+kL~D&&686Jeg|f*`7-Kv;16u>ob&oo^hNcRgl|Wk`Y)1S^Li%x&&`p4!Sg>^ z6rZ0Y@A|Xj0rF2_v(I`x{D0yUI8S;W{%g*S@$dMo&%Z(6uadt^z4u4T|3Uc9Nb8q; z8DI48NJ>7{H=4iN0WV7nS^ib}9%<!w{!irLZ@}-Yk+y#rF8_AE(|-8R^LKURKirXD z>c}I{^v~OGcH|%K$p3?m{69qZU!trEp@?ATuR)28&-4F*{CHL`So@dyD{J1)^WW2v z?-*aXV|-=JhxX6$-P4i3w<CYFBmc7<`Hu0Gf2pJXsgC?}9r@pD&+qE*$fLjMU!r%{ zogMkV(UC`A(?5q_M<3QGsU-c`^}momMSjHc9z?$5-r~T0`yV`VbZ!6Ykq4XUpFXs- zww$u}9zC?Ww*TIh0}nn(qz3SP2kt$%|NfODA33n{;C>>yRYJJ^4?5V9j~_gG;QoU* zz#TsL(>Ijecl6+mfcGC<+yB5pBEx%c?Cj8k`<D*ge`rmZ4y=<~K6H5P!TsRg|KP#< zEwa3^=HOByXX((<gZHi-I&wH@7MA;0KC!y&XksXb4&S$uAdP|?<j~>Nd0w`3<gkq* zFFVRQ?!Zcy;*}!@mOA@=@W97!fIP5r=>Eg|MLJ^9AUhi+07CC0hwslo4n4HG|H0)$ z_Zf?nq3yw=tKD1w^uYrk%i1nI^uPn3a9+ef^Rff0t1F)nCe{##4u_EF;n3RtmcFFQ zB$(i+3&#eL*RLEp{IQT+R{4>YhYs$)clp54tjtv+^(KHWb@whGy!T^CL%P)3kW%jl z58r!a>CoZ(AAHB1W8-(;I3yDuh#u%s)hccur{tCOoGO<NuAxo)?>l&4?IHA{S6dr& zR|Fx8MEiq>53DA3w=gyNyms(`&bp*1;`G5KQ>a!m*P(+)58c;MBg(Dl268);fTiWp z1BZRo_kQ$aZCat8^0GFz-cS+H?JUhzM@>@g4T{sM3SKl>*{bRyiB@HBStac}R!Lxe zu#Lm2>B`?$#e;3!HNGA`a`b@%EBl2iA9IV}t=1h5KoyArO);pbO$dh$FCDt~1~Igk zHl0%{PAG!`d0DfYRM^&$T-m{+W{{>*DT{_5H0R^h;T=7zpZ)h|@TovvScR>fjV9i# zC~##(?ah<7im6C5mi1)rs<Tv#>nuy7Y%6`>-~$@a`{(z6m<<x__<i`L2M(;N<O57q z%I^Q6!%GL(qvVI#0kPuLsMX>=O>7UKFe^vyEj(jWpr?->OjQ8gyK0U$pHdjxYUZqO zsLBoHhRS3N^mFf#qlXdNk)wy$hJi0f4vWeUJ+y{J9kc;`sJ-fg53Ria(7MR=rp&tc z;fd62`q0N!M+zu1O3g~ZA24~66Nm0v`uKsv_a0QGl?wtAewcuuqv(G=_|r(BvvgYX zE07;NKv1v_uZb|M`yW9ZM~?2F#{oTfA2ubR7>N}^<_+DxPjkdvno>Kuzia7+z76`r z4}HW4fAEG5I(s#R_<<uy6~qG{>-&zZe!}}~S8}|=#}C09*XaEZ99ep3g}KjEmr$+m zI$JXy_iBB+FVa6i{JbMYd)wYm+G9tpS%1u7`dRP%c%=Wh1>gVG7W{VB4*|bpuqb}Q z;dh*5ZS3itpKrC@`OjKy%i#Z84pTngO7HqREqKM8LEGzq51g+f7LK+97mMO29nTx) zTIug#t-0UJzk|3n`0y9TS$BK+;BYJbCfWwfcTyhszms)LGyPbWexa2f`f{t^zery} z&tGB<wd8&M<x53zFw!r#(pAQFpO@Ewxj)j#F5pLr#h1PO`<7ejJLoI;f5+qO4>-&n zw2iU6>-U|XjQd@G;QS>0{Zp;B-_IDMZJoNnSzj!Qk2=n&k0w0YGnqP^@K_pIhh9zn z^9<%!S}=DFwshkMo^FlnedX3z-uFbSe7c&Y!5@5>ezukV!RagwO#$<PtF5umzSz=% zdj?v(y$9V0_<I;*@cc*VH~99Wr&};T+22a<A8Mr+v-D2`6EgZFatWS%5_-Zee&+dB zUq8>-gNC24waP#JQj3PaGuMLohtL!FKSy6d=jYI$kGYIKcZpZYdiwMH_F?1NgZ%s( zNYlpB;CaAd{t5U)?ia_4;;@%roGpqYk$#aaN>BeYX#S~4!?&=ne|9!YKi5kC5->5w zf3Z*$N4@R8I8_u6MmmH4<!h~e|0VQ9+kd&*N?#ss(R2CntQ<ZE{I3qOP2%`}75>Cn zes#Ik_E$GK*>ITu^Ql(be>I<_FSq#lubwT6k30Mm&>8$M`1fJ<BkUhMo{u!Vx+l^D zMe!q%hMqpswii0)>6h5jSVTU8IYAma1!Mb_D=DqL$kJL$+rHv@O6y#!ua??szpKx2 z>fESrJi+MvsBbc*b%xY8mC~Ob;&)$atG%th#Z<0+vc9F1)*e}()1dvazEv-OnBUEm z*1lBV8OL*i^kYTw(;5r^`Yt$(`Vt+KKe@ijDpO0#cN}?VRsZ(fap#?P-m&-2iM`e8 zonw0_xns=A$Hv|@K3=W<wTZDiCR9*eeBJRMoPB>uXyRYV_PMfx&8t?$==sMjvSQci z@9ut9%rh>!`@r2Z?!@eBe@;o|d#h}4rn>{WgOKNS{+;LhZ*tE3te=B-|1Jw>$$oaP zJKCaWnBVdQ#PeHe)S-)Ve>P!V{UYR@^PE8luCbpp{^JH?cp7}iXM%Q{$BXI&?@2iJ zgCAZ$cHd8|AA38`DR9?d21T;7b&Xklx5nr9E(+c6(EWk3-Azc}42rY<Uf+?u=@?@y z{;ToCGg%s=-9KSWy7Qp4(bTxT&^fz}Tkm>dJbGSI&ujDDl~@01+(!T==w8m+8qfTG z{ea&OR9P;w8)Vo~Z*(^5+;vGj(%qc$B60z)O1a%%;9iOHx8hINy9$4n`Ueg9*arSA z^fBq#wO3s(y8DXWS-zKk>Tc7wqMxO2LqF|KhJWY4be_9-(v@4vfcsE`ejm#2c{Gr% z=#Bd)e$Q6Vj7!#2QHL&?K5Z0lS(PsNUC2WB?96wdr`*%|nZ1iVAF{ZE_hxWk$?j+s zLmkfqUxkJdr(p>B>)w#={Fu&faw=(dp1wB~cA&m_XHn`~Hg9xczud=k8g{M;CZ~Zr zscRcW@v?r69)A6~IU6tUlxXTRx>D<)^R?Ks`Kotra&mUIc&gE59F)(9F4?y1*WY=; z_nuxk=Jsp0FC08)d?H|-r{SAqUw>*|9II|y7caW-pt6|cUDhvs*)y#0q?fO|>i)dj zcbmemg)a}e>fX1WtCk<rbH(_uZ~iy+B_HMXCA-mmI@7hp6T4R)IQ1NDeiwacZ?$cH z%JasvtX}g|*E>nfjW?CG@t%2Ovs}cO{w(LG%C}+ve_r#G*}d~Wcy4nrJg7*Asnh+$ z&_(k(Zm%&vRXXOUT)+2aZ6#xHZf(sM)pxzd`AN7mFUPwkn)XY1mGXQ(x|I&!ROUWU zTYnxKi4W#?+*U_C#?YKRtmhw@lOGM6M$bn?tNg0_PIS9%tcq*I%WBN6q;Ey@Ww*Qh zTUa%G=qUGE$GERI&V9WJr+pau^nI%u^i3rCw&ISd{H;Cj#~sr}qaoedA4hh)FXrX{ z<m1TUrUcihr{@}c&L7iUNZF{%PxBIG%mY>Cf$9!DCnR0v8I2TQN`IhllivY&^c;02 z%Xs&A%q8;M^4ZRF)5Vsrx43Ok^^yh8<P1WC`3(6uZxhc*8-DqE`WlS)Y%1+?6wP|> zUAjHww29^cht2g@uuVINaZtv6Yx7~_N+-NqHOANJSBHI0oME2pc5k`s`-8z*%k*e8 zvzKZ|9lUSal4O_jU9=DTJRi^CM19zJ)GI&Gs9S7M;n`_D6I?!4z1w)pxE8_HlF6<e z?<H^V8woi|HrXBgcn8f%wF_RWji<$L*~iNvyW2PQo!qUnDt9?WOfoGT(i78%oAm9v zR3;|bQcMy$<uaJ+nD5WKZ7mU>EO>k}gKf=XTXWdfJn|M_YK?j^3k~+pLii#+&r&|B zGJaL3ckj<Na=5d7rv<06+;z53e3)t8!%piE$Je)Fb<8&n)-h_6$y7dNM)#z-2d=ug ztWLUM_v;ly(SMSEdZt2o({t<pT&disTVC&Rlx!FA6C?PEA?$yi_eF*M*T8AdHsB|o zC9Qd{g8bE&)>k9xJrQ61KILP6Xw=gjkz&cMtJGC}eJ8yeAkTY_uwmAl<TVcIM8ws? zzd)JY9Y4vAgU2hj25ITnw)JKl!x(>o+e&KVGzcegMRPr6^NeVx+}BE5=Sf%hDt>_1 z#LsG<^64JB=$vu8Q{CJK&lI_xOJ9@!c+{T1w|nnAOJ%qk%h)zF@tlOMABh_Vc%EvE z=c&dYshdxmR9}0lMi0-YRo?|KtNC;E!msj1T{g^j;qj}D{r0@#1ZDQ@0{83_?KAWz znt8XK&n1a=m;IiqeamMi#tDDRi|8_a)Z7*pd-$WCah}_P$<AfTZDR9*lHW;i2hZi_ z_c1=rlZp*^pUgM^qUM*Ri^Q0zPV3qV?_?w{y#A2SKf-VJkB=V#kNB3yi|Lt-vs;g4 zV~T#8vc`|B36GDpR}6U5^(neEr1p#f`oE&*K%{FnU#GH{6w6v4DgOtL5O4OpxBvID zb(q?j9{L))BQIIz^+Uqj;k#~FQ_&{kH@$yEIE+{Daop-sTp~R-erA5ec;2X|xq^9K z>*#N3ZRGMqj$4P+SH`C*F-bYaB47C_$=GGmYn}0o`{YUZHJ+~-@yS(u@(A%xjpr3d zoBAl8e}<Un$zqiLf2>oFSYwTK&@>Ee6}=nbU7)o2YQ%6_tAw3|?o9NslW!$1)ANq< z$I{O+*#OVEYEDzEVDWXMu6H?a{a5^_)`V5B)AtQ3)QytoIi2*pr{mI?nz4}5d$D=< z1<B5nzg54Iuf-FLMgBLQQIeg`QfDzh<9728qfUe7k|^&dZSUelm(*|WXSL3iz703( zrgQc_5uOdc7`$vRFBZw`IjdoRo@qSk#tXmfa%=h7bHye465i2lT*})sLFlRIQa;uO zHqJd&p65ab+ws4&y$k+*wACCr5YOPC7vpzt{o&WUz{-Y#-=nmXeN6;ijCBZE7W{U` zfA&lc_S7r>drkW8GFP8r<3ldj$XChB53d4adqUU*_V@?3?`b-B&SJQzV?W}*{jSF8 zb*7K*??$NmH(6Z`oVJ$nKJmA<X0NC`wcmQUl}`Q!ISe6(ip!yv<orhuIBzwUc>ZpU zbkHT+tU-6o2RYn)23K{s4|c&PSp~ikhx?v@yNRq~E!NBCpLgFhf^X{io-y7ne31S% zSH%3md&ge>oced)*XzAwUFTkKg^a_N<zHibyrb{ydj&(;xXVvv-=ng<)#hG_Y$eYZ z^6@=<Tkm=CIQ#6Ih2DR*4?fzQ*uWOT4y30(#-8(_^RVstINuYtd5LvEiM{U`=*{Oq z(O=H`l3s|%#s~QOi=H<gkmpfETaOFJ4yW%19PpqQoj2Vp&^$zcA(wcc+I7m(J9W~x zqLk)cHs;UqrLA|Lvo3jdzW5I9F%M^W^6|^}4ehDgoH0DiSls_dtQC7~p%b<aa34Mb zUz*PsGB;Nu&ScIjPdu-8FMj>5um}2yI6=N}sL_&VKRlG}S3S<tyd>P3Lp1*M&8Bl( zYw)qxeEyWndzx=SPGC2aKBqVLFx<Bdg0JRrrSr42VP(WE=&8mjnUBifu*WLjqjd0> z{RsG5?OWG7^E3XA3WxKNZ^yLwnBms=^*+aIPK)Az)6}<~jU^70zMBod<>%yM$8sJ^ z=bQDrtiC*dTjkxFhc=2I*Yl;7<4^y|y1%PrKx>7&x4!mkE(47{_9lc|dabyi?EQ$} zV=9NvzNtsImK(=SPSPFi_f+DWetIU8n1*=u>*jB0*Tk(j5E>PW>`*!B@?w$J1dV!H z%WF=hyloCcwo^?%@o%?Y?u<iSzBlX(J1-@(PCL0^Wi7dCoB<QESX3E&2tTKJ0l)T@ zPju=na+`A4@P7e&!`#rp1I0hVgHFBg<UucA+0ySWx{aS0hqeyAE}mDJ#^&;g*i1Su zy|%L!*2<yt+B3=5`Q-*S3S9ZvZhLo%#b)r~6uL0TystgIGPXXT_?C4f^Uq764`$=& zk>X78E#daPK>T_kACa}Qm>s&B?GyuMe5*l=`6Abyu5nPC4z+*t;HLb8zCUl?MZ6ol z8*?5E$WJET{Yk_uO&)aNo!)&i5dPKM-RZj8Z1-o(yRPwq&ez~u*ptpLq*HNTyp+|2 zewm#Cr?VD2r_osOPj7Vk^Y-%l@=qfkYsl7s{p#=LupR^SvYD>&h48A~1iqNQe+QlU zw&rH=H1{~${BrSgt2RcP&zK*5ebfae`K)9UdRK7?Kkn~b_}cG5SFgFQ`?%mKV^Yi% z?~^FMr&<(ycUR9uTryd3JEr<p`GwfeDW|gP)vRnFmHnj?Sy?5O4NI=kb}*HhZ;vwD zLumT(b{p(Yx9}x-^yz*5H<8Dj&jF7!$6sKMzvy%P8FcY1>-O{b!N;KQy!h|)0&z@f zPBc??UUm2+eLGouzVeIbWB$O`EK<)|bLHI)-lwHFC}c;z5^>R|zJ&c9w>40jr<sR; z^r_0bp&K69d)=CGs_>!1nqwvF^YgpPlPc5Nm%XFYS>MY6+o-cI!nbGd*`076yZvtr zk{{qbN`>mId_O+<d%b*jQRrI`qWdN^XpP^EhKHHs&wy9&PqlY(;MdP8en{_K_{st5 zG;f~Q9wj)GPWxt$zIu`VE;VI+<DA`H-p70C>0hbcT2KFq_!PS4div&ECtXk9B0UJW zZ&gp9aXriThAfT*r((Q*eih?gah(_;KLT&6{5E|8d5fEnzkH+lW_}eX#T@%IdHK8) z%bzQ$efZOOXO80VlE0&~IsavF{os%H^+dg7Bwwrj67|d8iS3`tFI>vnw)erh5qRl{ zowrD?4fL&3?(8Xv=JEz>3*bW^^i4U70VB3{TtkK<?LUfdvWIT;HfaQ=jrJ5nY|Wx; z6HQ%f_bc)R^X>~KHa7q2I=)~EUtr%%V-Iik4DZ$f?~KK*+}wn=QS!5KPC~whEtY^| zFSzfr?2_~V-~JtmvnJ+ZeZycf^31Ud;L!WW`n3OjzRa4Gca?!la-0?)&J$ay%y=T* zNH!$Bn5CWcLOiSSJLG-RKYQA0&%XP4&M0!6))%}ye_KzyGZ|i;6$!7#WpX7ieYy<( zig?j@oB3|N6Ho8&99U%B&F>eabA|%gRDaIiNm}vq7SS%*r?cL(c6Oz4rSAcpHJ@8) z)Y-pCXCB1+r5WX$FprkTNhcWB4`5_V$lvr;x~n~)s_0g^>%uf+IIX<i0okZ0-^}mO z-rZYU_w1(ZIBOOBChw6dc#l*+?~y9wKkeOnyhqC3@zd>HLcmsl9Rzl$!Mmx&qepgt zA71b->u&E8%4rSymZ44K%Fo}^IEC+RML&APJkxxSm~>#2acZ6zWo*(P#qG*>JL{Fs ziT~5UO~EUz@28Ybdm68(T)a;2K}zRWv*c@WPJ=D&>sVi%a-X+`Ev>jMwVhG2AHEM; zT6m;x^W>srfenaObgp0X>qJWLkl)c7Q1Y8;mG_Be$$VmO6&WO%OTWh3^2hnkA-IY6 zW{Gp>SR+gj=dxdV{Vy`_s;)%cJazk8b>DnNcw@e%pE2Q8ANY*0_p~SesJ*vu!g*K& zZVdQY=zW~@taykm%#oH1Oooly%}#875<a(M>8h1c-%ncal9U}up0!3j`FY<z4mge1 z(v-_4qg?GRE&RUT3b-<L_zSa%S;2`eXcq0W?}S%;cVvdN_9@i=RnpuWFddP6<OjNq zFCSYq#+r>!wi+;^&%Vuv|JV4c4cWHaZ3d_DSsTVDy7Tsy&c+vT;zK?@qXn8pdp^F9 znedv-<lBH7!fz}EEZ<<19+pKLauM!@W7QeS)5@IhW!Dwyt;W;rA3b<Zuo*w3&$8bN z<=peIILPqk@f>`gigv&b9J~DutH(Z8I!$^|zQ}oHv7yry^k^SwLU6QSaM?HOC^K5* z(}1C#?|vn|iw3KMKJldIn5YXr*1*xLpU@fMGM(Y~M*nv9)id~yRpi+1p2;QmBVFH* zhrG-dp<!~e=wrV5p<i{InWZnc-*QFoReevj@{t3(KltyF-QPd9oBNrC_T5a5lWKFU zTD<L^-Cujv+QE-sxV>D3kK^Pg-&`$@Mfv7!316$tAGWp0`qg{&%->RmjhVgGly<w) zx5aelX_9^{_NTl`9RHkfH0oj3Wt+>v#r{R<1a<N|`ljHB`DfxM^7<aR=K3+U1y+9F z(tMXqelq3(bl!Zc^3p%@=3hriYt9hth|-zwlka_rvWPR|>^RY#-u*b`dS)=#glwI? zU;HKCbI^LMInM6zLm7O;kvGFH+5>;QXETQnI;5KcXLG;5>oe+w2R${}NY*2=Q|Ce4 zkCOgs-&DRqJRO7Y+om3Ub=~z(ayhATlWY10k7VHdHGU7kL-7QDn>@VEcrUvXZQ{Lr z6l+7{n{->gNMjiAdf_mem*1ma`=QTL7JgCw()_6E-M5JTbl%k&YahqX+x1W1gIx|B z_?4#5cA3W6s^k^^R_Q3$xT0L?DAyRGTr}6nvxjGVSDnsd#dr1Rd&*nV$svca{v1X; z^4RFrYot46!+iUy_V(v`_>``9*L=^jJ$ArWC5w~0%2mZz&?jD6d@UN}H$x7}yNo33 z=g1F){x|B_Q}XlTNiDT2594zryNY}Xe7|IE(mZ4RG~v>IsqOi3hOh`+l4pF|-P)AJ zql7EnNl)v9U2H_`vNJD>Uy!48B<2m#6XnFz7IWotk={uz($SDhw-^%tW_m3enrlw! zr}BHM7S9;o>^<u(KDEX?*2X8ZgPZb6bY=WBf1b|#byw^bd}5AW0Vd~DpXH(FCVaB_ z6}S#QZ9RW0KB1GHclo;Rg@W7k8=rns>C7KUFNU)CR&i9Gmp*0r(%JU>w)5@z?T@wR zcV6(lRQwM6hiQJ*9$c?I(VOmrPvB2A$4zYRdP?W$!s+|1Rr(!C{&Jh_yxOQE$F!a) zlt=HhA0YjK&*mGYt2QsO4qn&0?u{?<mo0h8k6L^sSkjx|kWP*Y_sJc_hTHKlw9HU$ zyak`Fi*JEX_N{#{;mh|I(wg<$*5jT10AF&P5wFGA<m;uo;nyWsqw)NX;*;6fB5qSV z#bz3t!IJ*pJH~eGHH@tnzHeo0)=xGz^CfOC)v@PI=Yrp5(PV3U#<yq6#%wa=PV6qL zLv|Ybo~q3W)^2kL?_&PXe|`N}|NGWEpE;23-@WxmIyZ0iWj?xiT}NM&##8Wf7xT7` zzV=xiI&q7>*wg=`I|C2%q5OrtKl+ik?YfwiuV&?!vhua8{Ib%S?LO1YC%wPY%$q)! zPB-&bUphm6tWj^yqtXdG&yZi~G1qn5d$ebn@_T9EiMdO<m8VT#828hZr}bKzbD~^h zuyrcFYK(NbQE#r})JFM;wVuHj46)uue!s6fi0Y@g=O-KXeqw(}u|VEW&F0B->5c_> zBc6zUYVHT3A7uCY`c^mnl+Jn#>i2K{<a6?EDuZ_uJ$QGGy^H2EXrkpk=-%GlcV5i= zjhF46^|JmJ-1rM#X5Vw`*dJ-b?e|DxtY+(KE4n<cHX9?aXU=qwK)P*Z@J#SgAMl1N zgO7Xdc8=lW?!24Xb$`7{TZ&1CkYV%tfEsJ2&qEz~`R=?v$ur^6nMW@?@{7&2=S|?G zt2ut-eMXP*G0Rtw^^kaqKk9rBd)vKK@aA)_=!sZQ>wC@rGZ~GQ`CU6@+s1SJU`6Td zUZePepSM`o#)jV8b6F}+bKutFnqxb3q-$)@JSR=|A|B|TO?(eUJU3chFZ|wosYZF6 zKd~NeewRwL+1vzQD#VH6Va!z;NARJ-xKrNslDx(;nDJL}{XWX_^^4ACb+*qPh*w^( zxnJYOS6IJ|dXs0dCdl~|Ya;a<e0q#@j8C+NTx1t~!<s!lr<pz1oPNH0UwOCoP1yGs zeB_YMEiERt_Q*`J?`yp~(aopYdCmkrMRT(MN*1w>mfnb-$P2FQaEgOhMR(E#J4-Mg z#&bl#3YYkyHE2ASG}Nf4_?mUZg!8omzqO~p+4d{{S~&gLAn{wVhT0F%&h$_`<Id~J zoA|)XzW;L5=eWR~k4t^AmtLM!>_ZHweU1tIe!uQ09DCc{_MUph1dQ9_L64Ebe~UJc zsrpu+RrfIihkb+hHQ+G2Nc`-R?i)QCe+NyK*GQAb<TRD8lCFuaY#uP$u{qIBU+7v| zv&EPs`&woz(%n2S`Q~}~N?Utwre{x*E+yMDU2>hV*w<}6>{fm+%5!^GI?BbLfHynI z*4c`;<)1?5BA#~rv^%r5*MS``gJ;a-m*~{^$9(QGTOco9Ss8YwJ+)d(N3Z`f^~}%a z8$(CsYmARcep}B8hj21Z<6Gd*;(_2*Zh!LAvB!r0`NkK(qZnE?P=+S)AifFpMbfu= z=Iw&p!a{aFXlEL3#}ocL4zAgZCu5dRvJ-tZhtt|<hC6RR>-kakdL#?8WzGjjNgHo7 zKOo%A{SMk~f^VWxw|&Zq%nw`wZpL}0aq4_I=7=i!I9JZ*f?~tzknXvzn|v+K%I1fN zyF_dBA)T{tU$LeZjZrQ+a^_ii_XhVL8m*Yk;9V9Yz)ZNGnjk&u<)grh2a5afQ?}PL zLs`U=(uEo4v#pDuU$WKO^*QRy4uL0@;O<3>|Dro|PV>%5@;t+2_cRi0icush(Vxdz zW<T&E;;;p^6}@@;2L4t3`I@K=H+6<1>Rk5+g~#;$?A97Il^2;yD1**4CfbQl(pTN} z7{O=ngN|;o%(Lj{sGqr6tiN&o_I1u|C3nenioGVyAybTxb#O_1jCsCHKfJ%7{cc8& zGy1oKr<S)BKJVk5)G6j1%gUalOuXjZ2RnY9@^VVs_rKImds@4I8EQa-@{(JkvALJ? zR_eto?H9hz>!!W!omt(xysp*-SF~qOFZIp&sqOEH|M;{U>eZje%wwG~8oX|MM+C5v zS?f-MpYK42{F~WeUVki|LF7C~cQ~6k)VF@@_Bdy1-N8=sPkJdm0cSk((-}W@JA>Uv z{J6l{Z;}1ZCE70RNqcjP_=hXbZ}D^5*6iitY4|v0`D7E%ke?*K&+SS6!~NCv>sHRZ zzFAIdE8>tTXpH+N!~-Tz+4w%U+t|BLaOuv-IQ4cOj1QC^EU7Qn@atN`yNqfM6W_C6 z61^wO#U}!Wwi?I2MjhXhY*D;Y-o9DKbCj~}phK~*)jKTr8n(;#w9}FLV1FjjK_59C zBfu|dT=?t19Wdxq+u95MjRB{79l|eqM!iqL$>+@Y?=1DR<mdPm9U8037WPcp9?L$B zxluDe5%TCqZ=}D?I%21pWAEd=LQA|?sCf_Tn$EXpz^QX1&E?zpo%B8y8+Gev)OFKv z<FA-c`<|dq^ca44sIm*qGUv0mpKG><PVpPq4Qrcp$<D{f*XUPvcU5WeLUT<^udtir z7Sk?pPQS=G{SvXQo)f8M<BxXznnzsEB#(fRYy-xgmv<QX#3rvSo%+x53^$TL8j)Z0 zeS}<Jho~2xp<}y^_v1!Gvik|)q<%uQieH{@%A9=YuI)`GUX+AS=TGw0*FF7K=2qz& z`_*q)<#$43a37}FL;idmd;7A(>+Jrb;LP77UpLr*7S*e5R$if8dc!=N&ZBcU(iJZk z{b?<h&XVAz?coeip3WpX&X{Oxb?&z+z)9{C&^bw3v7XXnq;on|rr2#7A2O~Ooj7T? z?;Vd*KB01Ax`y9nn{eJYbrpQ#dv5C<vzAOIS$vlAN$!dx<bT9_orT3bDZYw7;~CEc z7dA8nylm(yzp~S5`j)MZci2G4e>`j+ycd9Lqm{DL&9Y=u;^8<x<tX@NE7I*7^gy&Z zKTUsfJ;~_Scuhweb-o{#=AWiLQ<rG*exaqjSh$Zthw<$<_)21tUg!7Edd%GQeQL}> z8plv33ym}K@`Z}w_1yIU^46Vgd;S$&ko^<O+q%JYlJRNHV!9?Cafjs!bdB|hk-En6 z?sw6>Z6lr*?mU*Ah;OvU{FTmv`<}Z6oW>%33BNx|UOI1nKs1scZ7>%I#%$%By?epx z8@C&uVqIl^2zbdj>T9H<zUH<%Oj$MY!uB34roZc4TEEd=ZE8+O&Br4;YmIvHGfszi zV7Q%*@S{P;P*!g^-G>JqgVg)l(de)^7dlQL*Q(2P2*0jaJkE#YCn`zTw-$sSy2L*{ zKdN!dhiH7_qjYG5U-2%^`o+(YMm^by#(_=RJWRR9V`~T>Psku2Pt<EXQGcuPY}{l# z(o6H3jC&rsl&|QyFO$z%yZagI=mFn{GoCZ=3O4FAt})u1?xb;TJ!AFmzq+&yT?-z` z$BDn4yfpuP*SS|OB8RTe!_Y=PT5Bx%kg$t>l|u`2)pgliuXV{)_XTawT!{|XJ<SD@ zjpFBNpJ!RO|6V+sZ!tLfqOyCeT^h6Y7|VLUhxA9~d#l8s$$uF>$FDu-UU1@Z-md7# zYm9ll_L6&@iMH(}Yrhs>BDpy&t>^t*4y*~<%1l?@TunM+GCrI9q}jt+)8jtITISh% z-PM$jlx<YJjXe**noV|+Y~I>zZKXD8|AV?->xLWX*Vvthv5wYwOozN&ds4<jxBc+l zmuWkY$wO`Oe3M4(Q#w^qd+bvDA8;AUzN1`ni1J#D+uP)Id7B(pjrN`MhJ1@?*Z!*Q ztqI2L^4!+6<osIJd>J1SUy^Rdp1b&!^C!yHA98Ho<#~?2O=j>zv=ZOh_s$0tuQlr2 z+1uS*FBFVl<GdM+cv5lNh^cpc)pY1wAs-}t98}!Ip17s;yoq=j@2=UnZRZ*=L67`r z)pcm<*y6Tz?vk%*opWZF$xHkbFExJK6CpiFdMK0WVDb}N!(I4#>-8$WWrDe#cyJRs zWb3vzbbX1~PyO$UF+;;F`32E%{x%jMet({I(H#C@7JT;X+)ehB1Fv{Am-J%$vxbv( z%z4J%1!wsd`^te+IuSTGGMr61DGONX@q)&c_nFoAyB^J0Sz2RBza|4_^ESIbptXYR zbBev6eTFmHoM@R!`}XNsrRc|f{&b^mYw8(~FUEnN8Aj%mPkQ`4AwFwwi!#+mUV5mQ zT5FQ0NjKX`uc2j(GVY;oZFS&_IZ$I)KY>p^Z(e14s@68()Q|Q@1si47)^$_;wBaF7 zOmA_d=oO7T$G>%fbdyFOTi{b4ng_*O`K)Pv#q%l3G&fF>HkqN9f}Kh_|LPelZ^>np zyyoT_zowtaM}8t=Pi)O%z-DY_I<0s_>(E_qTb(RE|M|t@^Z#UHSLwHDr+6r0v;JGa z4n?2PSSHPWaFTiKHM9PHHR-z9aBXju*euCbdQx@2M7))J26)70_V(~s#}!|ta>f+* z5C?m-6OX#J>vuiVnU>BF^*)M!q&48iF7rz^R^FE<yzKRwpX{V3(b=6IjiXyT(bKJ6 z(4%-m>k;CRm*3Qdo;T4xWX5wDJ73NAf<~+kKEfBpdAe_A<4~N3PH#qA<iH%!8Ye!P zk3{ZVvv}Z~owHgWz*#x6>SxZ-nS$|(wURy8D?gc?yH=yWZv9hNbsaW1w;AbY=(A*8 zP5S)GvdSCvq`S~BIVf*FnY{LG%wO|d>_1id?yW!mv|zXgBwbzHvuJb0;+|^C(_gJ~ zuZm|fX7Aqm&!6zM{~YbyUz*Jc*R<o3{R-EVe!(@{1K0NjE_hR3#1{&u@9*|n$3DY8 zZ@ky3=KhoW)}=4g*5ubnaXM!mLla?3o6HT^rSa0|K<Qj3jJ-F4=L|NftGXR)Eh`(1 zbGRY3M`pq|)TmpX<iK9QHrcP$Lxc3o?%V?F_j0zLw)*6E<X^;l;T2thKacAM8+DVV z<1bzW&gyT9ANso06NgHFdbX#2899jV-Z1ICD#Xd~fM=?(n<?OJoakA_(%JYLbsM8% z4ebLwlgT;8X?#?l;s@_TeOY>t!Ra2je7Wcf`Sz2xGp@THeO0lLa7YI(WH6G&h~_Zq z0QI6x>l(>D);D=P7W+9TsJFNlxe4z;qn_F%8J9+*9v+LI71sy96J;_kJAWkOGVMi6 zx(|HL?(dgf2Ya=*{=4BvM$_Qx*`7IFd}@vh`AC<IM#%@hu9NSL|55X2z44#*wLw$< zrJ@6Wuk~s-IjU{QafUc_q9eXPiLI~s`B~d}3D2x8(>7vDt)pixpKMcnpW)o#IoA#G z%;Gh4c7!_VY|Qh`SbXZ-cJa#K%;)3deePaPvTwx)%mF+v)T-ZL?=|VT>3bUv`kRLD z3(;rHA6;?7*O*75KEo|PWON4(;ihbwIS2n!dcIM&ywS@Xbk)bN=P@n=H|b}ioQbCx z1Aa)yC#ahUzXpz}h$~6UmoM4a@DHTfN42~1Q8rIm@K*jnc4joXKgjC(B=5GmM!gwF zR+HWL%T^}c<|nD2BtJv{x*tQFyzLtKWv5{}@qF8}K2DzhD4wBytj9QIyQBFykEK1= zD2uqF)~K7TV~oqRt9|?9?(a5k>k}UNxVMRKikIc<#^`^He2klM^}R^G$;;OMbKh0U zmyv%T@*aW@o3yV^6eY=3cdG|IO_|kc&M_I_U({!naoM?{_RO7+_)^msyD!kF>kdVm zzDN(7^C0!1FEL-`d>gzu-@59A;TCV`r#a?M-AejW(s-J_1zP0)f^X=Ho!R8$)w3Qk z-siLNJ}o>w^hSINKVQ(tl<Q5Dh2F$m5#wK?-9X3q=P1j@)KxdaU*B~6j7{~u#xA>! zeq!(WVm97QwQU=3E3PS17jr;CTI(k6I+)+g%Pq}3*?(-eowp^pvlbIAG?@2fYmy_h zj;X(x%c;xdr2WFSJAc3uH`-cok@N!Xw4bq{a{0QcbKj^jU#xe`7hTU1*!R=iFtaDc zwzI>;wjL8qQ9k8!b=<9qb$VyH`AO%WcsrZuXggEZGYJ~!jN=@l&wjzuXPoKhKIm!S zYZHse@iX>(V(ht#H+m-HEzIYNZ{7l&$|m%jA!W~HeH5Yt+kJ|%N%w7<4@IN=sA3)Y z|I=2V=55ti8+Fqk&Y$d@QFfH}mr{&3BV70h>B2blM;xWK#1!;S-o5o7KA|?AAJTIr zoE_+$sAH_hevrDV)4>|uWT|<kNfT)s4{Ln+SJ`CTAqf77=Y!N4E$EqKBU|j0jn;uv z>Aljw^Se%u-WxpFqUUS6-<IPY=)kLej3vs-p%2bi(Hwf7#R|r|fQ@-C^j$RO_h)t2 zP5LWd#{F46Yr9Xj!+CV)9q6_-4*HvPCdtnHI(TBv5>Gg<*(SZSz08PRpkH?i=B*rA zTFk;aR(sWE&uO1G+QiybZK_$DH)-t~ZKlrkosE8o9Ws9OJsfQqlVU9KpvJH1vh!55 zYwnOAP>d$O@G|+Zy@5s@Kb!PX@~NeE&F9Yi{W_-q*2eX-mh>LD<cH$fyAy#Uo*R@* znJ1;|)~0d0J*$`So;6+tUeRf56#SR?Z+z02eIANBjWe%n@{V?@;|#@gU-+twTQ(t> zp+w78KRhTe7Pj`S`LlandA29{62q50yVu4;=ST2R`qs(AvitHciypV}#B1~a;<ep% zN<4hjzAs}qZoxyti*J&?1zzzv`1EJULwmljlZU<59mCFlqs8q|KE?Oa?VPN0-SLc{ zk4^GEs<C{(!EMob+I*fee`k>T8FoJ`|1P-)eE2ih*W}NL?Zp3Bvq?Xc_cO}URjV`E z$lkVJl-{_F4rD$$Vg}t^J(=NCn~!=M`G~xYrLot6up8l%zJp^r`bDRtj{#e_eM+~| zIc2(MIv`v9)W5;U9p~>ecK6ffvt#eI*dU{?xEA=p-7h?@ll!uA;g3ECj{h6OVSQkO z{f#<489(7?lS9~0uf8@6Px76%zk`m>1@2G%+vJloJBU8}HI8`i=}quU-qxmRd(K13 zL#FZ>(%0aD`3%=f>0;Y?P4Ww`yr}gsvPtv9jql)Eb{##7j-EnCPy0IgBs%&qI8W-H z(`LD;qYq~>$OQH5jZweL?iG$3Jn!?_e4WJ$V;<*>`fttZlMZUWkv;_eLa{-kuJeA| zXVEz2|F!n`|Ji#V=(w-zzVkQ0h#Fe3gScoqZIOE9z%pnd3g|#CC_@5l!!{f;HX1_- zW78oh0upIMBuYXy?UE)YQM&S3Z7a1pTX_%3z+N@0w%R?^R_&@=wNbiiS8kOpvvquw zth!NJC6!Y-ksH~OZA#eB_r807^JX{zNy%-`=@#dZ^Zwj--+lMr`}=!Ocn7_nvadjQ z)qZ@P&2@wu8@2v%usLbIS?gVz?>!;7q`OxfP?+&gznukQ96=rEX)!?=-3P8c|Iu;Q zUN_qB5j;4KC;ncc`H<{U^#{G@2;03z;zPDa_aN!RK2{#_c1q`@uky#|-QEj72Pggn zo+0TrIyaTWqAP{seiqHb!UH|^=44SPPv4lckH5Y~J+*mg6+C%y?~>vr4>OpJc$u}c z_c_Xjk1E?ab*A?LOHX>E_43CO@3|LL@aRi6wy3h+Dcdr7cyoh3Fzr!_7qLEJZ9mhy zC&R1yY^}}v;m{A&_qkMGZ_=Bjk9~a8^<68U>?+p#v_?NoI_2!VxXHzJzVP=>k{puW znjFv_rFDLPGwk~INXADWr`dVuk-&?5q`PL<_&Vv6wV$_DgxBmFn;pu0lg_K<zG={9 zj_xL(CO^>DhGdszUqPK}>rA4%12*xfaQ~Iso8*_;o6a8OW6>CYmThfLT7M%RXl%6H zwVrmG2E^ZA_~+h!_=`TPZo5YdpR;-UDSPibtdEiJYnNY=mD(;o8?S_qc+K!r)_I-A z8`)SD8j?I{Kj%B;8y=xdf2Iq08Ix6)GOJb(?REKDTk!`&P5PV@^J#1(88)dSXd-_k z#!Z$t)5(w7*%SLY_dCS>i`n=0-ZzF#C;Af)qR$9@(b}!A6>WGXXan0nKY)LfpOjD0 z*kM?{l0I5Is)Vm6+%^ZN|G6Js-l+e%-}|2>`k#6FpM`v#7QV#VY~9DLd$Rs#7x}x~ zXKIWj-QMN>#FNCQt$gBx=BiT}zAAC%v%N2nHWhxCv~i0kJ*|45WcxqlMSm9iMe;9k zH;?KbaXj)(kGRj1KBs+h&Z`LqJStcET%~!xHPW0kT^Myga#nDftK)ATQW%_?+p7GS z+UdGA=JndQ<H&<G>*Onr7cb6IpZE}T&NfpWekRdy;q$ByZ!e$j^_liDowd#9FdNbP zAin5M(dK;A??}+9@fPt>>K`Rd=gZKco>{`9UHI0obl^D?y#BcQE!tG`{);sPqu20t zFTegY>BbjqQ!<D;!hi3!d~Y}Pn4Fvr$!IXjczN?hq&Kp3wJpB$P(MCrdF?o(-oTmD zl;e!_Hk=d4kviqG(%Ku}(qMCXXGZh2Sm#l`>4WoFI6@bPC_m7gwDpguPrOZMG1ZTq z#7BnCB$?Bf+89jz#R6popY{&fw;?Xx)HRllysV#U>E53!aoFAP)S<PJ_;#eM16(8E z=@aimzcTqMPwkOSXzy=WVcIlC`WRu;qp35m+z0N^j|m?WPmn)_ZE372+n<n4PMtZg zvwjCwH}*-R?vuWXKYGgj(W8uqALBcl$2sHt1b$HVr1~Edt!wQ2>&%ew;}^xB$JCy+ ztI}DbRIjbUp~tMzpQJ4KSX+9OwWY^d1N#l%!ycvVXo9yj`H(B)L$e>XKkQv;=b%Hn z8*{@ah)YN9yen-~T=Zx@Sm)RFhvlp9PkQxu;&o-s=Rg{7hhCYUPzPrx?7ONy%KLn> zxTl%)BCUCxDOSO$dqg#F8>DUardEb)5O|fh^?<2UCey}^jlb~k_ig*dx6tQthubyF zy2DMn1Z+dU-j=exPNVL87#x3`b7RlyJA%h__r%za26V%7&W{}Hh--cE33#eCDYZ%A zUi_%WfEDSD_~CE5SzX}xT$eIBkFi;qzoaq;z?q-_JdTX?#zu3p7~@=Be3Pj@^Lf{U zk)7*b`-H+f*MD1QW5>3qHD;{`47>j=d62ykG=lC>=G^TqJYUy(=?LvpKOuQPp52uJ z?7#m;3-%B9wZh;0PAmL!hVN^?%eQnj`m_8ytx_jr-mEp!mOTF9Cqx5!Bi|+4P4t{z z9}utS;kD}8x&E*8J^QF|V2|fYdu+eE_j$L)ws%@6S3}-5Ud3lf-g*2!#i`%kJleVb z#qHp)Z-D<|XPD(Xq_?s)?f=WyTG-ppcllrZSx;M1+RpWV_(hM~J3Bkqzx)@Qlc}8h zIMFK{_a*oTzSEI^pY+lBveB93w);lFr}kR?YHP=SMmN}a1L#s<jm}QIMR5|haB`J@ z4=o=(aPZK|;t|M>zq17TiVFYtMAGL^6~*W2()jz}``&j$V|Zcl)1NxHGCTXe#*xLP z#eGK?8{5aXHO8(RyKZ~&9-#ijZHMkK6jxO%wMt*5xbEm@Z(rGW3%@Hz((i!?fnncu zD~rcgit85kt?VnVyXEN7;yOz`ayX^zKYaV`i-!OJ?REQBR*oFJ<&Krbqejpr|JMLg zt=i%x#%TZ39@bCQ!+$ml6TGL7tPuj-*lgtmM_O@>$9wtZZ&hjepX$<|%GUUIF}QaD zlX2bfC7zSPU(mNb3llVzL!L(86`m(rZsK3iKyVckE`Ef6@fUd?JiNaCtw;p!Q-lXv z@e;=mlICqtE}oz$enuhx3w&7{l=JhC!g5r+xQc&2%|ErHpMP8Vm*KnXd7ksUnzZ-} zd=Zb|GQC=?e=`#G3$ilL;~9R-57{aEIO;9<w<yfN=RA&HROb2D@Hl+yStb8&kKYU? z@%LqqFVH06z0>1&5WkD~gC75HisA~|Um5iH-+&*x$Uo=tzfHRbiAVjvlGLTr@A>}< zR*7Gac>MQ>KLNgHJ^l);eSo;Pr}Aft;*AYx97y?<>tHu+DqisT2a4hc$uE{XzMJ^n z#AiMJN#f5CU-tNFQM_679`N}6#2+E<?W_D<%zY0$n(_R9Q51ht^gQJ8=ZfM_%>qB~ zadhoZoh5!(iuWKR9a|{&cpN>e-`B$5gM9w<1o#|(&yN<xpSiQu{vPyvaDjN?<v&ss zKdkta$M>>*`T+3>kK^m!@+|lt^?0)=8nmeh_`gd0Y2x>L{^_E)dO3rCxG3H_oWUcn zw;llhS%?3>I6_y?;QtNrb6NiPa2>12XF9?6(%x-PpfldS-nSLSb$!I=JpbJc;pXA5 z>t8SJ8+!r#k9+?9qPYGc@U3|qx3~j&MSFW0ecvE`bpH0P5r2;OeGX51-hGVtd5`~7 zmQ+`={NFB$8*AWme)J;0o4^tJRP8T{$-89}seE;)DBcS{dmi-ody3-yQ<QgotD-9( zfZpPi=YNh)Wd@sY`>8_jPd-Jy*H=Y$A6@|eio^etqWBAv&+{Jt^`iKx$B8>Xs=red zA6=!shUfn=Bg8f0yHos%Hx|XsFH@h_f5jlILEm~`@O=F6Jmt5HdVF_L+={;TJn3=l z``|I)S3Q0YrUbs82R!~rQ5-%+`N)5|C_YUcRp<8=$lv<X`2@d(entIj=;M|@o%-iu z#Pi2eUtPw3Lj5-Io=?dCFeLo{mU)lT>nh&*Bmc@)j24)q*;00+2$H`oCj-Xgf2AY- z-*?2ZkM!s8f2$}ycNXk-zZs^3@6nF@f6@{EmmTrn?T914^q25o3C^~-`jtBWhJH}( zjRDPd`w8yV;ASu5jitrC3x^Lab|ftxI(o;E&cuC7ONXuO?fZ^?sw`!Z7Q96nfvoJk z<=~32TEc#YLPy$CjxM%Cw3Cvs7<HYfEwP=HRCa0K(N={i$tyWp(vgylJR95{UEJSU z=Jv%Sw^_?G8Z2!ul?u_qK}K9h4<0^LvY?f6@K9=WD`oM}g0Y~z<dH>@rW)GQBUP+2 zs#}QmEiCL^*?x3o@%Hv2O5cC@4jZbrQAf>!l%OFxlkw5LL1xN3yu5g*1sOG@yj0_l zx3X8Z8|_)bJEIw1;++{aDQW-G;iHSi%66y4>MLVbUm3ggjzjyMzLj^j!ADH+M~gBu zD}aLUy>036E&G;^?mfDHADaD{g9|GM#K!}BZ&|uykz~03IaqOY?`XHwJk1aoY@T{( z-|}APP^+>9)cwfe&l+41aA@%}ZE@9XM75=MP%n1vJ^bm#BTM_14bBqUOyfYC<u2~q zzjE-?`&Oi|Z8=94_a8nY`FBYTy=%*Im1s)~<gEfNb^MEW>^rn_@N<iMmrQxQ+|l6A z-lGQ>@GOf<Oj}AK_AMQ}O`6tTi4v2fE$g<W&n_Q8qi<hkB7>&hx`d5lZApwN*R{C? zws7!BR(R>~zJ<NZho$&g>d}3lUc4~1Y<GLTOuCLN-k#B(gmCLY%vr)dblZifE}khR zys(^kqUFO&h;c*QIn1HMM{eJ@v^k!`D+d;jv_Oo%B;;;@Xf)oi@4XEb4fQp}6!ThH z*l4%ZcXp;)iCg#WUo39L#Vy{x_tqneW%$Tqa^0lgj-nU*Vj0B;=Jx&+K5XFwj2}v$ zwQqTO>9flE$vc*m;ph?qB53#_8gcl@L1w`Fq$2|H)PqO&-U>%meEQ(0RXiag(rVW2 zhZpX^P3))Zh`xT5sTku9{Z;yy#(B7heml~88Dm8HmUFH2E3@<;AiUel*5`}jXFdF9 zXN%%v5ngVEuVx$>=~s_rVa8uk_Ubc?rM9Fo`PE-0T=nq(lG5MuEaUP2HKkja@r1!Y zP5M7`c!j@~(luAO`nOWLg?~S#YtC@>AEa~(zgiR@r(XTNm7&+isn^0Ux9A+2Xwf<J zfrLkMfuWyBcr45uSM-Rsp^v3>3xCq#50HMy;T8UTO4poa=;u?qh5uSg*W6`@F_-vY z;a_giIrO(%biQq#aqJt6<l=2lw8GcD)C&I?@(P$Ad!`j0?aRWnF<`c@w8Gcl)zX3M zDf<bp>jsyX<{&q?yeupk!3WJnZut9&ehdGzl&(3<4gWl)EBx*UTlnAoVk<mRZ-pm; z3!T*VKp9?bg+F+%Me_%dU9{yVz#rj{oG*%>bNXkWYK4D_wuk=z6!M7hPY<``{?m81 z>iX%YTj7t-7R6r2dD}8`2oE2cYSnw_p;q{CUs3FHnB^y1c#h7rU{<p59eY~vcRbgk z?K7E-KJ!Sc>}PkkX!z`dS^A5u@aLc*c=DIdW?}dfv`M3S7;|gQP-{09UL{=fFl{Ot z%)vA+2cOovEKIN%O)xgU8T0VO5r(jfN3J{kV~zB;{hilefBidmT)$(q(YT(kh#QS} z5^6NIkB+`;Y>e3W*pI)<K<D3Z^8LF$P!S37SFyFKEMY(O@R$DQrmJG>eOIryt)sFZ zl<$X(YYlcsquj?TQoIst)B~RXPG1Aoexde{R3_d9_cH0+BkS5xrYFh>-uK1|%2iHm zv%S<fFI>&?tGX-b#I}m9g?o9eU6<vzH`a9?Cdz7GB=V{!(ziL0*VnoB3oo8!Z>;U@ zdB2k|$Kz-0ZC})Iu?C;^np^em2^yN$+PVCwb3UVIWP8K*v?5P?3KphJ83wnXzbUle zCBEL`?bg0M`#hEBGn{+K57|hL(e^yu`0xDA)AKg&X-@KOUh58roX2^YTsC>S(HeCK z*B7=GkKVkEJNDClXy};U2hyIc_OKSvo%?f|orXQo(YJ3~DO0^qsIv&McXND`GL5JY z-18mfc5PD5&cC3m+AAIw9DE&U=X<d{k13H~({F}rf%e2X>X7Fi%TH}zP`Jsyq2oKC zIQV0q?_(Y}IkIQ>apWBPCXJ3gkhVKe^adn*mEwKfc^`Ti-y`i&o#<3LA6op-vhM?> zb5EyIS!mhc-d6i|G{Ky%%x3uaG+XWHhrfIuU&>`Uhx2-MjxD|~l8y(R!c#}iA?r^5 zZv<D$H^&wGSzc!w50I&35%|Ie<D05Bn&3m&l58W&1g&v)M7Ck&v0LE|dmfB3Yg>!m zdMg8mUzyuly(!=yzBZka6rGe!btn1cHeZL14x6_<P^EX%k;}OUChnBT+b|ULp(ots z#+|sV$NSj{owG7O;b#$4E}e5u-%qorYUd3(1K57wf}M*wZFfKg{GBSh89e*x^VBDO zYlll`QFIQjuQRVXiT_S^CY#jxD9M3+MElO5q<8An`a?=LTRmlOB!_&5=|j$w7dkN< zVPsT>;f<d`Ep4V#Mxr}#YVX_bd~({<M~2R{@q19`W#L^jYsYxY{x6WN?<04;t4exz zHu1>ng64VI#u{nT$7@#$zL%<;f|ewcGnISjPmZ<c+u5<`N766wZd>@_@(%IPdwsKE zeN5;lHdj?0?vrvKFk$IQ=d}-=`le(LWf;0mpInC0LE9U5yJ?5xe1+_+#FcbKxJ_@H zoEdT%l;x1C=|!|j^>k^M&VcBQ(g1IA{?Bn&1?LeYKb=vpC_jB?b^gDLeEPLGTQQUI zKxe#64yx-c@>p}3q`u=-ZAgl~(#GN8e69!Zq}#VqZT*4DLsz3Y37&0sCsX({*@p5$ zCbA{*Kxy?7{-E8DQ`36{C$^<=m-DW0S%wW7E|v55x-V8H>gsQvv^xa4!aF@V{Z+4D z`jpde{PeV({wg$e!_7F7elVTglMl)1zmzhULVuO<<puW2__Dl*+3OvJM#)G0-)8a& zI<0R+{<+L*!r{E{lf1ykIQmV?_oDCQh0cfEhs!!M8E0ks$&Ws`AZ&hCeo1=ncc7Q_ zAVbx0DfKph74A;hw)$3+JnD|OKW|UypTp$5+e|k~THVHTeF@%4?wxeyybGPnc~|Pn z2D~$z(2AYCX5K};m%_V%-HdnL^m5Jnkp=W~kDm=3XD&F=`KCDfGz*`mY14$CWs?kM zh);QZgs{#=>AQ|0&)a4FKX2#~pCW%&aq{hZ1<nqB)zb}*et(YmF5nC&esxrSmGfA3 zCR@Ih{0Z?CzokB8Jp7T$ooH+sC4E@_lHUftblhN4KO=pf3Ye^Hm41JnIC*vsvH_gh z6|@c;YzxP%<A{5(bjC2%<Kq*R516cM)I*-tGe};XgWW?J)sw!9NqtAb`Qt~TJbjg9 z+&IygndNtsx$xKc)fo3{&32v)%T~n)=u$h3M|`95@obDfYU!y>jD>C7GwwDfIgUpk zu6YP?`z{c=d4qO6dr#K#0{_P{{D#AA&f4a<2Rd+ntT}1@=&*Fi>8=Y#@U&TYxC5&k zYgjryFdrw2){Ze)<v8Wixzp1&HV=H_VH@w@lhNe$S-$QoYfkd*!u-zkd+mq5c6@80 z^PBzXmUue~Zx_JThF9a|TrP@t#c$*4&FZi*t7ODoYUTaaq3b$(t+U6+$ge@?g!8sg z93GmFQ#$d1uodEc#BDr9d4+9W_a5%<^gQY+@77k?(I`upezN>t*S^u^8>~A?AE#{1 z>mQNb`8mINWYle(((OIQI{s!bfA5WV*GKN1w6&nR>>J(vn4j-$oS5QlCAxiL-hM~X zNyUv%K296dn|%7l{lsm2TQbbICE(b({yn=34Ln;r&Vb4<)zt>R&nk78@ty3^>Sw$l z9gcY_V<P57z%w=*09Se^FrE9{=$*R<-OuK4vs~b3sV`)#^Vt2wxtqrBjWfCFn;pKX zk$gp4j0Y4S%F3F4G?QITC;waRBd#(tX+G9_-ryad^Kgh?)jJ66V8F^(E39;Wr}?du zFI<KjpDj9-E`R$H;oK&Mr9<vt$Af<9wAa-Lc<D=;D{Bm{w==ICBM-lD<(Od4COd7Y z{x#{fpHD|ltA-=#N$%r>Tk}7CKUfot`83-6#dnzBYUge8H-*ZGPQJymaM+X80gUKu zPO_$%`XJR|GLw#G{%_pU6My#rKdvzz<C^-3gC8CZ-4RSilYF6g?B6Ez%thRNzVVg% z3-vAXl|F~Ao!Hisd|0Y4eB+4lgQK)h#i{QWZ=bIt_6V*Y9<k<CdCXzT^#$d5A8UHn zOnPNBGKZ{_-_FNGgJ6dpcDRFnyY~#gqk5;XS>gZX53g3Q?!*NS=6n_D+68qqlYG*5 zY@ak)C78Y7djo3_iH_pL{O;N2UR!TPm-yc7Q~2Gz(dW$0B8#s%|AJ4QayPuvS=wWE zD7v62Y_&}v<d=byJtiKVv2_gby&{@i_sn*i*ZTS)>6f8zUFi{R)T!?m_(s@lSh|_s z#610~#!t0*{4;4uCsLiJBhp7`87HsAo$C~|jgPl{`)+iwn{R*8ecS|N$+(N~0^d#@ z;Zx;n`iS?be&NK<&qdtV4*JmZT62;+nOO(MhN_wGtqPX>e$Ut4!=3pWxAbT{>acZ( zl`rpvHM+9C2E8?Uh9vvwTNsNrPVh$D@hjD*eAnK5_<r{(qBU%;lP4Yh&G-hgc-Cbx z)VZ%gKPx?{`M0|V;16r@l@YB8p*OxJUwNLfxqOk?1iG<{aD3}>SCnrKTe`s*9W7rU z_^aX_GLvov9OHBw!v;)EebPssdG@`)UNgr%EbzKE4n6uNbm#i-Ew<KFdKS<__C9*= z34Cp|o$e8xfj7q6t$Krw^eym4_4cHCfA<@$dMoF>-g@_XE6=^&dei#R^QKS8MEeMP z3}>2Cyxz84owa2uwZ(arY(JB4MYdu*{EsQ$)ZTx$Bk1yeJlD5Uj_PZD3=y(y*Q+GY zmR==)vXOjUubz8j)XiF5?5T~<7q++4@LwI^U>?@~4RG*hwPttB<$GC6z{-c&`daft zHvdYzJm9vHzLB2IaLh^HPfYU$(&EQ8Ztdf)sQ%Wt^~FzQbS@{^+1&%*$2wj*nAKr( z9NICWwu{at{@2GWGam2v@AY><PmK8+8~CC}-4|W#jZW6z`G!zqKIDi0m(O7QNZ+v4 z?z8TPj$!=vjOUBCZuz@BU;RU#uXc=VP*!;{E^8}Cx_zq#J#F=oZsRfUr}BENZx=7< z-(*X9Ua7z2HS#>s<z?h|%QBv>^$hi0!e@Ot-%!gJ4Uw*~pT2|C`gnx(t32^c^~9KK zz~jl6pKj-I`hM%{x)aP~06pW#q(9=43FEPsz){kH-L|z6JAJVO{)smD^gaYW+`d!n zfkur1tiI;8c9*8cF#7KFCDJuV)wh4UGngvjq0A=)t+`Ja@;)Z=F7O4^pX*on*CFq# zHZ14!(2$S%PtiIQb4qM^IQh1JQ`+s+nMyU!*Y~8UkNNE{gx%4`=d<?8&Vnbi5k?;J z6~pw6JvU;U<9}!CQ?0ScH%|vH=-Ea49*A=A^%8M>`^LZlJ@b+g)g--7{e<z1G1p@n zXHK1ZrKUQXlWG2pei+@vV=vD919%37hu?nxHN5g=zFsgx+q#V@FKc}gTBNV?Az_=M zH^%AX&|Pn0w;evDTYm0C^89|v=j$z<c~hD1$@6NIo6dYsXWmS=a+C==B!jXH>6*95 zN6Hq;bhS_E;w5%9+L4$0rIC)jT2^j2&&$$>x}@7WYcs9Y#9ah+;Is}aKPDffvq9mH zl%_n%K{O1TttVfmbqm1_^BcZQVWlZgyjM8+zqF>@Pu$)dWsKh@>*ULRPxraUyji*- z+DhGUUnV}qx@%h-@nz3<z(3J!Z>!d^JAIkq$L0=Db|YUFFp}SB=F5WC+?TP&W#i?@ z+sK!N9)vF&bzin&Irn8zuA46#PrmG5-`nyFZN5zJ+_^9Nt$);lxxkl2duM~6=%{?z zIKHem`Le5)TE6UsUk_ZFFS|?}-~5Y#qr;a49@7_W#(mlOM@3tc{?cu0#^ZMP0Je6i zzHFnl&v_pQJ;0poRNPB;{0l#FOlQrwhvA-wCyTq!zNPpp)O(kYd+tK-=hsNnnwYNz z&P!iN-%a}6o#~<--IKq#%WZcMJ&=w^ymmaT^R8@CUV0hu8<p32feYxmjQSTgDSs*T z%f9aM{&$S<3Ovy~<`};#{O;oS7{3erN|p!sUEp_y-viCbVx_saICk%3v2^d=VtK6# zFM-<wyzv2^-W@Q`|2gvJBq!Dk3a$OM?&`Aj(K+#gHD%BH&CmOt42F+=73o`NdA&O< z8=0kDJ?}ZQ<slDiKB#a`i}7BxbkOjRDXTHlP?NVVXyXCexI!Dni`}e;zDymv@yXNV zi%$!NL+_FnmHWtBAziQsI?|5`-g&kFKJkB#;}f6e2(MFqPH@DHR*eaW3tz+;n_O`h zamw0VCSKO|Rpv<Fj3*jvolWiQd0sd!L*J$|_$pze2S2oteop}t`lWtrnzl{wJH@YX zP4KJr%e(M_)2s_k?OgwZay<8*Gu3-&XC1i9p>ZjLzZ4pmfzN4Nf~IlOmiZMft+6dP zCryucr!iYavbbE{Urrmwgx}?IDQ%E%%G)po%_F2~oFH84`vo)WdOg;}W{EG0_i=Za z?hZ+JEPu1?tGJ7gJ34yr^Rn1b?}C>d>(K4vq>Go<7pM1e%@$VC_a)Zt#lz#|uUefx zS8w%K-~8cLU(+j@s|})2ZCK|0jvUVl>BqX`dC~68p`GY?&nfnQp9Xdh<CYq~CcpQb z?s<SPw#L}G-S^1ux$nN`PL(0QpSt%rtmavBDSiFL%dnZ@jxv`b&mk}K@@3T1=qPh3 z^$e=aWz-?L1pKAo9{@h|au?xYc-YUc#<b##_^Y;RPpXe!&B4`<K7K`8onOgqfM3;J z<9DDr*|J6E@MF>g{Kqi<V+b8?pu>aBG(P6M*&kIxukd@b`0OVsU+Pb1xz?J|fA~sP zZV%<|@p)I<{Hu+YQ{R=2m$<{Oc+2wd1upuOX>hgS(E1N)V~)S3-&K6;jz)R*XtYb2 znD?#Wf4j~5y53`>ePVFe!EJY0vM(`T#_4PQtU{U3UW?9D*QF!WGqk<2{;b8*-iKtE zV9BSS8ne8#-qbofoM2@~foD&1lKG3y$frEXxWw}?XM4pHWUX~H{o;dq&XzE#%z-kV z>Ruq;U!D;Lruj)*<Kykb+C;onwssZmX5Uj|KJ=y@GD2^7Bj{US3OS)GJ}<F*$?Kw% z{jz(gBjMASfqDa<e2M54O%5x4kM>s8ub*HKR({FHA>H8YybOB?cW;1a&gXhdmY?`+ zXXc@Ica&j&d%<m5Hf8mYW_F7V`}8JloF#`A*<0Pm%5jdx%Agw~mX~C|hxR3Wsop(m zCwTKSsWTaT%%P(GT|Sozo?I{o(_9KYH@SA>q52#2Pv?vRXFkUZys?HIFkS1(){^|( z>A(Eug|hdv&8hvtXR{xtPde8pUZeX;A8<VwFdE_0+ScMu>6`JF{3O3u#-)4QcXgsm zor&j3-*WzIo<EiE@%XyWCEo{SHlJuMx_rOWcK$W|gzI#_>xXPnIxy(|Kyk@zJowPO z)_j-o9N#>uba+zT08jcZ;>`LJ;0V7r*qkhRsy?QlxYY-bMfaxXLNmHWXY2t6ox8v# zUt{YZuKP8&71b58ls^{l<1EkxxRjS{dHw9gXaY9u%lHRw`4OuNdyM+!^UL}p3_nG0 zz~;6l|D^NcHQrD-e`1@RUx@OlOtRB{x0%S3j|#p>F4i`0%My9&a|IJ?T_N*y*6B>~ zOh<Xi|4~arw?h7*AMUS4m49(PDAdocs_rIoa=Q{=f=9WG6s`dm?NYo&dun^|J9I1f zsCJ7-Aw%`a2Gd2B=U8hP@wJ9>FJ5)IO{@eivvc;Y{M?QCBl@y6U<U<@FR;Fce&C$y z_H%9qhi>0r(v#NVEFFF-J$&2J_IdMv@S_rEF7onuANpmL3!8_I2WZ=9$2U-q(za=D z+pxZYVsCqtb(AsQK^x}`*~Hm2j~LEu#K!loQ<lD}@keWqI?@V1zbSjxxFFWxBEQ<P zzhG;S_zdZu#(`S%l-|TX0r1ARv5x(PsHYBWI#+k9XDZ6UbIxPvEEIiJ*!}6AhQg-v zX)i^3BL8i)tzFetCg@7}Nsfk7eY)rruH(g@WA1;Y<}Atgx8l|w`rFSV3&sFjM(O9? zNEyy#TG~maY3&0ZzD%C%G3fYmXWzjZt?C;n&vs#R$X2p8KGEI>vNCbrKxOdZejY59 zc_8XR#}dCtN0#@S?WzvF?@FIbn`CEd2WQ6Ye51ns#=q01-!<{q)^N6Nxrx5@jVBtt z$9%1(CVY%53zc!6X>EFhxcsZeO=gQb=-a!&MqQkjJQrn}lYIBbIsGqe<JP5Xx7_pv z{J@EWJCDV8lB$n7#s#0#_Jxzh8=<d{vybEAc{e(-lbP3SC#m0-FWT5n8n&h&nOvyb zDbI8WzVy>hlehfn)ajn5C^MdoyFTx{Gkrmhs&~Nq0@GXO>&7!=r9JlJ_KS`2t92mG zUH3jim^=5)9<I<hlC&p<NA<J5zXA=T#K)uyl3(^6@vzfU^E!<VbSU|Q)E41Td83;# zwCrfY+T-WCOyBrU$!I#=b|#(vF5WZm6))QTNE&~pvBs&MmxWij;DhQI_d0ef?Blh8 zHT;?E!}BIAFX_GN@;kbF9%*h~*D1=W@6Z}yKVj#Ut<!DHt5i>mSBd^MUd<Qw-H>p) z{LCLP|1ld;|CaP7;VPiB?tWJ3b@`#QZz<lC!kXt?`FY~<DefC>4aW4Y!#Ae-PTTsf z$rV{8zaX9dWO4r*c+I!CUl6ZjZPxlX>QVlV`C|3N{1*Iu%y%lfaG-6@3q7IxYD0hC z2GfI6m1%>a?zJ~u=#M!!IYj<u?QQd+Uz#l5bYh#!oqaFiR+{wU;di+Iq&;g_CI8t5 zfBFLW2UOm5ZBrgKC)wLQSWMaPhl=|H?}>NtT^QdQh5sVGPxS4Wf_ESK@TmM)7k@S? z{eYLl{=4ZJn=XE=?Y@Fl`9|7|z1$yR+P@|lx;<OI#wOsZclg8$zW3L;IN&<Jv%aJ; zMzho2l73gsPES=9pfC7cCH%U4D|N|MY%a#R0`)zCduq-7L-gnJdGdowPy0mHXRmrc zp89HyEg0K1!F!<|7Y}Cmmk5WQ-IJxSC|%!7Fa|i+#2&ofL|ekYBD<jfmwz#OSFb9T zI>uou{@q0_D^IwsZ)W~~Vc*<ES1w6zK?^!`DRPlt4!duS=UV-t#(e{{UvSQ+Udd`) zdP;jW|LNA})m>kGUT1GOn19}&&wCkOcJ_JCsZP~@(LOKHQu8`P7P%i64#~;rhBs<Y zd!LtN+TQ1tZ7ln|k!E+h@IJ3ser)4D4}8?!z0XVa=Y5{^ZVY^#<MilXA0;pE^PE?g z+2^G;w(&~7jJnm9n3r3B<$a!XBG((i4!WJC^wiGRX1l5Eit6rSfBmF~zFv;~h5f3$ z%`;fjn>JjjKKX&v*7U|1@SQfA#;0cUXDS!08E3d&Tf39|jqe#RgVv`r{5h?UXX*bj zdDev=rO&c;2_N5oU;D!@ecb(i-e8G&a`_I;ID41rY|IO%3D0==Uc$RP{EP5uw`5Ac zFpvJqu6BE0I~!sAnay3*-=5VzXbWa8!W}R-VH1)8V{yZ+b&OGqC%YN|&s($n0bdUv zbN|Vm1DXr>u!gNWHPUxNlo?ukOTql}%CRp^7H`eQN&2?_t>oXt@090rzR$-|eAh(! z5c#5A?=6(yU<Z%bU(p)_f0O*!i?lZ}c(-GMwBV7anVs(jkFBjU?(j3kTM|D~n;%3@ zH|?0D&XdLN6AOHw_BQ)IExv!5z6V<1(~M|xJ{cd@yp6^K=CO$v@KJE^kNVWtL>ci` zatnGNQF+=rF^<3Dcbq(vDKbhhr>plx8h&>u!pe`kDO?8%;SxX7Jfyl{u&I4x-lrRG zXre7uwI$lMMmVRjls|RW!8<OzzP8e>T{aJ3-ZI-Rqu>7rhBxVv`q^>$9{SHZaHiu) zmS6u(c&m4xOxHc_pHj9{zI&qF&h_8_X228vU0_Y_jEfVGyxo%34{u{FlW}pAdHuta z#SNXjpnW$;r}<6mIxa`agFT{Imra8@bVg-_U!7qYrayjy@QCX}+j<Z3QM}%yUjZh@ zXA0YRL}}zJuCbtWB=k1MF!V<@r<cDEJFlvoY%OmCb>)3uUvtv%QQpp{g+AH1m$k4* z$QMrQE0Dzl#QTUFjl}Qs{B%YxeWR1t-|u4-%SYx5lnox_V=49PJsK-1ADrcSJMm%S zb+?Z~`Pir3w<LR6W4~5wIA{4qFXRV;HxGSjvY3#sFgxXaGWKT&*=MV>KRd$ytol{6 zS<2Psu_@tp`N;MpyK-zrd|3I?$*D81j;~Rl^jz`xoUYtSUex=D>I>Y!O*nlM3LoEk z<ru%*%Tvw;2U~jj{D)e4`uvUE;NNrVm9^ERTk<h#Z&zDH&S`z@jM++NKmYD8P^QyX z9wSY9dO0{V`}@6Dy5WSr&N+AR$oclYhky}ZL+>`@UHE^KsrfDLB$B;><B@rO!P8-L zwvQPyP3sS7pHey$eMN3hXPcAg#z7ko>N|zvOMB6wpKu+@&Wv>G5OqgA7tx({&XT<H zRo^>nz4_Gs#!T0}^SC3-&y>`Yu2!qiTt~-V)VHLvciGC?RmB$Rn89GLN|Wt(tohGD z_r>twFD{B_*6>hA^IG4}C5(N_hRQtv;-jp64r<*K8}WV5-~P?k9%SXA7CrXu|1J0g z-v_Up@5I%D-H-=W{6gO)z-<BU4QpCIO7{7N)Mj|;XX?nW<#@3BE%?Vl%GA7!tv#jn z0_(T4c2}z^i_VqfiWV;2Lr`g0++<W`ufC`>C);KErOC8b@^G5xmNMG__6?FZuv=R7 zRI9>q^S0_uJGQN_>sP*!b5Skb(Yjifa@+B@hR0-D)t=w(7T&_{R76gCdyzfmZ~bIT zo;Ifn-J_j0W+`d+e#w1%;!)_d`Poyi49dRURyNva?rJL;efRNB^dGeJ?V(?bwxFx( z+r0kN_on&_%CyEGf<bmY;tk{eM`?%pDQ|~hW4>&CsbK9s8;2e6^5$=p)=~D6)Tfvq zG+J2Gd{j0f+4>%arC(S!y_rqlA9s2LoW@f18}V^Fw*C3%L^rngU@L9>aZfXQOK|Ug z-qX&u;HJ)c+9OJ%UG6hWeYW_+*Y-Z4eCOR#KDL)_Sf1%s??21nmVItuG^48%0f$_U zMHsp@&aRKI>Rq+(eqFjnKP6k#m_g%1*|+w9U$!!g;n)ZI2jZXSKNGluucT|NVKk?< zPo2MzNAHO<;~9_M`^<$r`e5+#a(J}7DUVWnD?8V}^PNrF%f9<XZKG|y75G2lw$!<n z+6LEU9@^E${H()ZOD`~R`P)Q)J%10@W#;EC(%xHhva~(j&sO7I&CepMLDFl^XZ7iQ zuhaf@X3y|5SJ0krMSLTzPCGa9DI4y&yH3eQ(ptqCJ8#DwKz&!THhMtm-qykGjcV#M zlKrVIjpn4*d9<%de+&(3C;f7vea*Sz#ebZqqx;rxP$u}%2mNMGInRYBi$`DMw#s++ zCokA{ztpw!P33-k3$$-3G~SUP9n|;qtGvWQ-1=PS)rhq-ecxMnTHVspysN4-<_7BL z=Na4FNnVUyl{P@yveL9y!d^^|`ew&7XzB29?JDsw#^Z4}RnNHPCpzQ&i0bZlTJyS9 zkK|?F#je#-JuZ*9qeAWKSG(7?r20l}4a3j((f&2sFFNGAH5Tyk3%Gr3llY+XrK$^E zfM;8EM`rmZx!U|EfIm)t*o*U_BK_*~Jx`+@{Ay2}D>42$FBunC)c!t~QztI*uGXAH zc3)?_%YAx$>s({(Yw-8{9_Pkr&%IZ2#vYpQohj~Cz4vmak#VuDfuW!GIgY*!a4b2F zWyi7NIF3<|?s^yyZTH?<95=YP+u57C-)oTWDTGEV^9~zVnjO$Tr16sLpX?^PU#jM~ zhM+Cp*%p6a&H99a<Zr(FJMypCl-@tZ|NOC?lYO23M)n}tMt_)Wo$sGR*6_RzuP68w zzaO&SZN=FW@8kRNj`bvT;bP;Ti{BHGbgYw(KCgE|?|0%G?R`{ev^lZ(;(XZXoA7hK zHaXVqd=h7P;%>F1=jaamxihORpBHNgI%B&<JVOri<l{@zx)0$&>}W}JK%eIK8ix*f zzWm_e_IW#_KO`LizkIBPSGi-U^IdZCYTl+%d~UZh%bWA^B<F#lZG6qXZ4@nLcj%+q zWx5I8w0`4unbFTVgrb5k-iV*8&d)pH=W#z1b$~v0iG9sw__;zIOX@GYz60KObn+2C z_1+KcGJMiFXPB_TQf^=ZeS)SUt^3*fCcdV3X%iU9M=&$<loJhV6Y`S(SaDg5DD1Qe z#=`KTid_xH8E3Vh@xhSN^i5*OlMDFY2|n5Du!lwS2=z>QT=;cgQp87_%+pC5Qonh; zc-J!J>!gj6#vMUr+5mCUtF?_j!Uw_ziPx0pJUr#;)eb)~3rzS{jcaNd-F-V6*e3G8 z4+{5^<2cov<a?8C#VP((Z{AjZYpi~mabNQD_-OfN&AobQ;|<W$Ph2=-p7G`sulN|- zbWVIxnID)deur<>Y7<$xxP$!7&B<1upfLn-@xj_bydZ9MIqfy(fCEZHHVw5=J_sEz z^li-ev$PTaFIkySNaL2krFNUWvX5OS+?5CWI49+Gi3dX`(m6Wh#Cf_7{UBd`;~2jh zM~$O<8c$3pUHoNi|7Q2&J@8QNn3#t)hY6dQYEJTf;K5>I$7C^9`hm>10p9?|bgl~x z-lk#~_?K>M+;VW=ww0sah8fa^j&FU}vhqA_f$(TY+5vdhx&GB~|FbIFfUm!tpJ_OJ z$I24#UmW1gjNMGJY5H!O_A}M=uEcgYQS|T+v_-wBc#I$3N?EZV{!2JM@l?Tad)_jc z<(IcDiX!2-Uctbz=W=oUm-R;OzH?%R{~3=6|5^S;nBdYhs`UbaH}Fp!S6(0guJL#; zzx>^jm9YfD>TiU9HU3=;?p?rS5;c5lq{Uz0ml8yn;2~T=@f`m|-xd5*p6I)Ye?bGm zTOQ!QAK_p8MPA1nxwrhE01N~WzX8V+gwY1&-tzzO-_I!Ie*vdo>6ia4f~)sgB3JS6 z$N4Av`uVq&f6fy^#etWI{-i?w7x*F`zh(Msd?QzU;;+&Nk;3)E3PZBLaayqA+xr;t zA<xHPu6P!hXFUEso|;sCzsGq8Y3ozuuX+4dnz}^3zwucdDT+7I=IXNNe~ve1WvefH z{7$-7;H%GhoHr@!*lgu)kN*$65&I1J5&tr8CE*{c6Q2Kfc+=?t;!k<}k)n9}GBk~N z{0VydQ{+o1YVZHe^pSYsZ-5s6FLCIPH#&>o<;_)SiZ@h?7mDItb&3Z5Zx+R$e~x_T zM+Kc5e;l3-C;S!O_<Z;C)aP%CR(R8P>MZcPJpVn!&l3-Lbm%=p;D6NfZ|99wwb%Jk z`32rk1%J`-{4WxJ78yAIDi3h$*wfVS?XCQ8ypdWZKIrgI;7=QrkNUnwT>dlgJ(v7# zyxCfzeLq9_!r!Q^tS4VwJe%<KyeawRz}EwA`RI6)n3Dd7a>JXRQTNUFc=;*!$HzQA zm;7|`RgWJ`K0DrU?m0mm`BbYZKd@6{*Edgl{%Sz<Tc8Jir9Y4Vaz~uEtn9Cjfs5XM z+L8ZT9q~Wxh=031-YffR@NXjF>m4Gzkj3Sf?9b@&2b1;}ALZ@3nS-|-*gMP1hX?gK zXYt|1&k#F&>%pbP;{80^7vT>bI=XmdW$(}Kox9`6q2dDv5AiG^?-+Xa-Z?!mT6}bQ z>EO!V_Z>cT5Zozz$1Q|+9XzzS_vYpFJAL>whl=+ue(oTz(2?dLOEtK;!-ZkktAL6t zFwM)1w=eS`=HB<+afBD}fZ)N$mAxO-yNAVxctCV7g+H~pK=>$apuo~cmKKVS9zL>C z{4|gU_w)GQM?bT;xV%@;ooOFk-gl@oZTiUJ<<7K^t}HGWGd!Nh8<#8X7%xaQoEM}T z)(cV%@AQ#<pGh<pKgBzw@aLlk58cL7d$W3J&y!M%BXVTlXPpN;;&;o^zWtv{&l8q0 zy{K76>><N4mYyUnqk3zTr~T~F!G!6E5uxHf6e@8?JTDVzD@XPnI(jRwE#?LFO5*-o z4%>5t0qE#kFAP$VUOp_JD$JijJi4;)(89hW3r>pOCHx5EHYwIzSz%|Q9*4{xON;^^ zgqZiew;M6AJUwezw)y(KiOf7lbj6d5W>s%GOE>F%+|~aCduEkN{ZqUjsPJ1!i}bew z+k?MT`Ze@DN>~4N&0kCD7N*ZA)A65zSNhyrQ@Z+txoc9og&E5TUj4${4JqBiKatYa zKg@kNrCa#tQo8zyxm!}Y!Z&}w)9Ej6R$1y*-*NNDQo8z$n^l%{3m;19>OXEilF}{w z^C?~Z$jyH_r7Qf?5775HuYP8Xe$T^uUZjun@FzxSM}&{Fn-XE@yTQXhM|<B*d-eBo zwD;Z6V`1o=h;-<jh;+&Z&Yyd{g=g=v77g?8_eRG*f35|;kNzUc(y14EFi!IYjWHG0 zyg}nXg*AWBSj)omga;f(bPN~8wZJfs0AWhEImAo~tIsKRrLg7^#jL0E%T*|b)8-Y_ z_b%blA2b`zJ%lNvdJX5@URF5o@v_2spQj7w{hlt`P6f`Rw;$#q)XR8JZ~OLl*#mox zOL<T41Lvs=6|n!~J-x2$;>_)8&B>TQU-6>HeGT-Amz1ZpG#9+$WrcS%%C&)!j`(Ot zTyxzVzR?la998)-haT1%Qa*3w?Yk#gGm86qwMH;J%DW8AaWyB8bx5sC4p=;`m)knJ z-$%sSU^-_W@M~LHhiI**?-tIiO=|D3+RK_!8D?#v)&Zyb0<H`Lr*CqeB+vGn!BGSp zc_qFsxC3762!<E<5-;#&Sak^hD7K+?quA%HzO)t^dlZImmAN=DM!UC3;dExnzrARd z@^6C^tqIP*>B!*nc8C@`$IKp)(FmODi_w|$D8aSx1)R#2?V-Hl`o504qSuEB$2non zBiPzR@F%q^wVQLTZF!<A%Jspk$&UQghE!H{cjgbEi{l--*mci{dO{Dyd(mWjU&u^4 znzuRNbmlFCGrNlYGS=zRSr=f`20O32%B+&O$>hgY3+=s3lV@vH)FT~BXUR|7+Tn%i z{%tYs)EZPj`;iY)Cg>cCF#0lTdpoC+eT^2?7qzZ4zH0Z#rLz+7jP<7xE0g#)ruD0v zw>93S^M&`KPusESz=^&Je_wO5)C<v@uQ7@jd0aMNKFHgaugUd;C*oQ#s?Fo(RNmL0 zHrn^RnCyndSJvI`0$1>*5n=ek+FtK5=luffYMcjo#qKqLpQ7J%8G02CSvLHPVCZ=c zr#1#0=YH)Q^MJFraH#Wwbu_&N>TBsk_{Fw2LCd?dlT5^?eytZv-Wh$SL$*eq>=2vk z)jpl{LU~35b=N4*xu5jr2I*;!&A#ciZ*xmn+HCyyb$6|u2QN&HrcY;zDN9dv1+Q)0 znfr$pm6!Qo@jZ_ZDc%%4X-!)7DIR-uRfUzNd}!C1PVWD-b^M@3wistQ`^K4=OLzD! zC|kQ{D}4Zc&uiv+tG~#7W>?<AFX=(}VDk|!1HRd9@%Cc;h%(U6cSkd`;Iy`4Z^j?b zH$CXcH@VDhow_b7Gox@;r_MapV($!H|H3BxdC+xo)AvL8=6x5ms-CG#uLyrYdmQo+ zGaeo#JT_NMT?c%?j*vF$X~3CY4wFAk`YzYKIyCFf$5GD1PVgSyZ?Lzs0*r8*U&Fo+ z5Z^_7+Hpv?#=URUTUM%P_{68o9yupd-UVPV@K(AR@G2X&8~H=jDgKXK-KgkI4X<nW ztiFMvode@VMZR2nPw{<r*w%Q{X>)mvw91(Or;O=G4gA<<dV7a50~Y74CGd)-0n+#m z+ujH2JJEU{NVKQ*|5MhEA=kGd;FZTdgpHN*HU>}nUk^{fFBxDDhF|BFC8x0@r|<nJ z`P1aH_h9+c4xjp>GnHM$jgQV3gOe_ZpXBB3m;c$Q{j#-mMnAQmJy_%CAUMoFc>Q(a zi62SN8u*GwDXV>(;1zv&$t&Y2-yt<R%TWd%o1BLThu#SHkmx_L&GamEC+EB1FVL-K zcRp>v*YErW@Z!7c{`wSg*GIFTPMU_d&sPfI`%myL3BRvN|M3&MH}IqPxSv>|?^^PG z;N9#4@1gISr@r0pv%(L|kv8u>LG<i)JDrX&^@J}_yEtcLK7%sWKKYu!skSrWv-GK~ z{50tSuf4cAWGr1!zbQQu4YTH7()d>C$`{-Kzd@72X@C55^}#H?pRnIeRK2H}<Ktd` zgG+s)eRG3N%;{_yXZd$=4to!0`DZvA_$9tmnR9<3{hmr=mC93AKJ|I{N%NzsFKALb z`^6Kr+xJxI`^^80kT+p?7zcn`K54}Li|j%9yPRLcgafDiK_Btq%r{z|`^JEiZVkJB zNB&SVwcpN(QQsVXU^i{<#}CYLM&)hft6uz`-G?BWhDl5HCI6|j6bryaJq^OOj(U_9 z`LBVFZ=a^lmfX**-v_>#?Tz(<U!zTQWp%tRo^Uqn7`S$+zu<Sueg0_3DU*B1YqXi{ zID>7MA9yCbf0zJPdNzS=secgNDnH@<!$j6UOp`b5Iw2l1*Eats87L1N$v+bg{!R(b z)5k4+V|^Y+pGT1MuQxmOK)w<El|JYkLehtC{Yi&2`_nrx;Gc58uQufE61^L>OFCd@ zYZwy>uHo%!fJ1rFt|8*7oykw=+t3FE?|P`bvX3HcymG(aR*pP)XMSJ26JLTyV}wT< z*r4nF9Bm!9b8PFySmMvO9|mTOI>#w1J#5)aS3dpGHykecsWa=dl-Z~b_bK20NnmzU zZjX<tB}c{QJ+Ai5`WP|ncLv|Syn%0TyW@<qI?Eyc{?|8t+utazdLO5C8TmEwsU|)# zr>^o_(;T|vUE{n=&C6`|MzPHwJJv2PweQ8J{LnIW%<J44XUz)tt)?f)o<&m5gtq$E z8TS|cl%X%SG3gB9=y#_(@KrnTvEEVQlg@?z5kAJ~hHtt#Y4e6@>xY?xDi8k6xNlUy z?e$fk7p(ib8SGd6C3O9e<`|;OzF8xzGDbUhA3dvd+EL-Vm&Xa0ZP!{1u%nii`dM3_ zAx*w$x1Y_E?TmJ`3qJMVU~R)^s(!z}dN?bm_KtLvGyGl3>1>($O1q17=lZw*p2s!U z!KZ%vZ!+%~5N`BIXTs!X2={875@(G>r+mtUpF1sxo4uP{xAxyae5^}eb*??HDmd5M zJxxv)+`Nr7EBNDc&peNFV&v(3?K_Gn*AET5DL2(oCeo(^p1x7M$LIIoK$-F5;$@P9 z#s-q1$&EW})HYj(Vl6|qCAn+7-cY(|6;7R<B(2`W-bhbx;3a+1nq0%v<Ng4%Psb%3 zw%#EB_Zo3Dj&G%pLoQBBx+mpSaVKf`c+X4i>zA(6w;VvueCPe$F9BmTP`6||1wEQS zs@)}jT$jj8Z^biK8`oW9{7&rn6!%L>4xdcx_mVm59tAe?lyJLW5?`f9rU%Zie&Tt5 zkALbhn2fK<FSP5r_!s4*>-}BICHrqLr*9gh>pHi~+2ud_ipK|tvv&DM`Uc3_=<SCu z>n{dhl0SOosd>h<m)T#9Hqi_2KC4ToGu<>Fo$<%?BGU))tOiZFFE7Bw+`Hw=@10C@ z)egMFWt|7pT2x1we)40T%WzUp&Fr9cCw@r}avr$EdNpPh?oJxp>Z2~TsqNkFj=rgI zn4EW2Z=>uz=bh}Pq}A<MX`Q^QcA-n{GTX<;1m2u?D$~|?!tcB-h7)>T5AUMhOW|F> zZpORI?x#5`y+9kHZ;ifs!Trf*ef2EmX0yJUv&Gi8Dn0N;Umf^1>#KKBZdZnnxuW6Q z)toGZGp)%b->Uw|>gRVRt8Zia@l)K3CfzFgV)-%ddU!>;ANaER+uM_T=*I225I;KG zhX1v;Z@O(vVsunrfG6dcq}6^Kt3ad8%QV**CNCeWF#h>-8n;Z7-fi6SRnpTOgzv=# z13xr|d6sa<5WifGVHU#XJZ%KH?qiq>`GY^y-6s7v401#(`5)cOY3~q-?%dC}#xx0! zY$4=meBJ<0#~9}uzurE^`Npp@#(79};ge#F6KyIw#wgOA$lGlEGQY|AMR^;IUp5-| z^f#GPZBS0*j&9?gNH51dsf`<q-OwqGvltuQ1KgB&3Eng|N^|edvC%Q$^8Wn7u~D*@ z*E+6AW202}>%mcfony4t_$sw0##d_ppw<`UFIr=&Ki1t2qFrOZF~Z-^G1W`P^OigY zERH=~>X^#?U*c^lXExZy{`$b3+usG_EO5yNb6jSJU2t`by?*~E+s9tNe<OH0$6n6| z|B^p`Wof?HeC*}xz$2^!59RkiQx|Uq{F|GpqaNce_f=|Ry~BUiNbB=)bIsR}%5QRZ zu0Qu7@&}uYaeO>7<?+}jldrzmH)zj0t%J}y;I!6Qvlcy!C6Fg$X!kvaSMvkWOk4Wm z`yk$_xFV~oE||`5BrdwQ%Xp13ag8x>-_G?Hw`cfX)4nBR34JR#5I9+LW^Db(%}c<0 z(eLBn4f`Iw(u;n==^N8`7|-H+Q^^i_rh6H^PnV6v9IKXWwW7YPKlr@8VRv*J4(tg2 z^Ip2fg=tKnZ&A+z-;lidCcb+ATZ%s2N!<EAvLauApWu5|&H?FL^=nrPecwD|>DbvC zYaTiuB)lgM_6%5g?q1IFtz7x-4eRyv-Rvh<<X5fkwX0e<oHn)hf_mwzpO@}TpojRO z!unP9neX6KU7nV{?`eRe_Jv9G85rIVQ6I;iak-C}@@PBvDRj^K&sVP8YZD)!S>Hvf zJ%c9a)35GguC~#)i%+@@UhM7mq2tAeHC__0O@CPLmHy!yY;2lz&TO{#x%ghq&(iQ6 z?G>-K%2sqAsPwVcD0*yuhm6M)Uh??%5IfNw<=T%hxzLVvmC4d;^T?1g;kWvmlhOej zzp705xEkrP#%q1^kFB136<qAqoKzk1VT}pG^UUjgue(3u<VXFS3#z<ic&-1do+Hov zCg1Ce51fNqUmt|`PJ^Y1|J1b><(k)4pCO#qM$&m0vp?*`?80o(?G!yvwy@3C1Jb(5 z8C$cqGJMm9FXaAp@f=<`?PG+^&aFImjuGekNWVWX#V!BgYl|N2D)EXob<h^{zXkg5 z2Z!^s`c=~@-kBvW?X91-brP3D^{dTE=CmKGKBM0q2dk0`bN=en`c7Hv4tnca-v~l? z+<jNy(V+d%aPPI%bKtF0#%!JVGxC|iYtBsd6V^AeqK|voP1hAh#&%~&w5=d**zXF7 zv>wuGem9DxVaw{fqiyH5H}bPp)pOX*_y+w+H@g|8?;26PCX=n{em&mvvNUTWKH}bY zRL^;v>hS+AgE#(P@v>-9|7O0*`#;(ndx$#MV7#FHf*p{rl0PFHXI?a)v3n4(y>W%- zw$7;j1pCPZd%R!|`XqBA<UyZTH+k^g{?7I9ebZn~$BSxnQvHM3l<_;qWqm|it1f*4 zbxvgE3)7WTHus_*N&UI%^?j&1{bG%8MY*%&d%DBJXaukPwbtMIGF&=CC7&^1Hg#rQ za_iR4bO-n+i#qw7<JhpBTglh@iRuyTu=KBa?G@*hZtH`mUp-*yMt7<A3zi1oSKm-Q z=k`4t<yWsV{U2^_HT@sP4$d_vIscUGfV;u4gWmTYi#OkMJ3ywjdE~o^&UHO!=Q<%7 z(4KUr5L^{~cbj-s$S083Yxjp)-?xfi`;~OBiQwRY#-^ORd-{6H>I~PErIEh**}qqJ zr~aez&|m+Z$^&T(SGj-nWaWO|31VHfaz8XlXGaxIJT|$GDvWKVZ_4fd_A*~>iTpU@ ziC&la(u2rPcWv7pf@QvRHS*0an3t$c%<Hy1k>SbfNpz%hZC18<t!yRXWKIZdSNwk0 zx2=gsIdrou2Q6he>2uJP+QnU9kw$%G9n=SGSuSsH*m+*Agryv?Ww|mPKG#k(bdIg0 z3!N|F$}+(9cfe6k<^COw(jPzX@qYK$FS!1V7`|lVItNr|{8iQgUX4ZS^d*wbh}&If znPXkb9P3)fY_$q4+T&^I7X5|Mm-MXqLYI8fF5YhJ_*wiFd-}RhrE(nF<E|O}MVWRD zv`Met?rGvv^kdIu{GiXOtVX@?f;G0vU5RfM#<#s+jXe6`X9=$+pIf<;@bNS*uN*U< z#J!BoNlU-W`g`gJ<}UCFb`?7t<M&Q}$N4UweQv#B(3|9Lvbo|#^TVYcsL!daxLrzb zEewrCyB^3d!ncIuyw4jYOU}Stc~kfb;}ddk(r=K**l=bRSzDiN<;~`=cnSDEV4&UZ zM(0jhJ3FMdL>*42=AhR9WV#e>h&_)aPjr7I>S+2Mg7Ap5s+D=_%F1)jg!+yb*DSa5 z!u2TW@F;Dmu=h3M`mJvP#9Q}a)>qq_o#<=H-TK!7*YAN09{$ByrS->@o|Q4Y#LI6r z$Pbz1J_w$c>5`Sv;x-@fo5&Dfb5ef!JO99a{vb5j96@7l;nTcQFzTO~ul}&=V_f@k z(xXbv;iu^5>+nVMvX%M5_PJ{MHTn|&<nx6y^hs-1L&#wW9K*){t#4YkaFTC>yoTbY z*RA^-2S^8x&WN}Cm+aH*!OomOuhm(7ZaX|wJKQ%tm*}@M0M@_5E29zl)Kp)BD~xAZ z++c_g<@qWjJ~SsQE3&PmTjw97j$=vQn*Yl7DyzUKd_2*3o;J5=M6YW2jd4ped#FB3 zT0dzy9RBA`%O|!~?h814+q3Z8*HkJGVx!&GIl7J!7?+x?{Z1#zLiYLnxO;00=jY&G z=iOVqFDgyr)3wXGd#m?RD|g9vZ}r|~@Z2@B_I<y5s~3O5+#ub(B_CEJ&OC#0OLq4b zwzEKbnhPbpg(p2~|7F~{)$_Q)XYB^B`WE4O!0Ju+q%oJi@>TRD`Xlbx>ABPL6P?O` z%=34Xp3a>k2j(5<b$$-r<YxDFHLsBk;IDOe*W2y>xjwbKIc)yS@6xL39=ZFit~7R2 zU7u53_=72xZ%#6w-pXG8hp_d7oG;W{sk*CcOSLfEAFN7ekKKEqn&X^S*&U75=sTTG z;wpQM(MkTv^^Cq07p~!|`Vm{-Zl<|VU3M$`U`$(UtrI@^vrgj%cb73fw!6!Eu_5rz z^gbi~z4w#7&(aPb@AN*GXvGeVHXB=u$CX5z`6|;Hcqe^{c0OB{gEpV%4!S*-GV?i` z*=6(X)<4#amf`AGDL?4*J=wCavsRx*CdU+Ssz3dDw>#N-pZ9jX;O%<R+w~GM%I;I^ zeL1zE_q^r^+Z#i>te(VU)vr3DJx`0bJJ(;bdB)~*g!N5*61;P{vj~LEXdW`Y%3RRb z{>u4D%f^PB7LzkRy-#$JHt7CZ`ty3fS<-w{b0U4G!92aF$oG==n(lw3oaw0B%2T4% z!}k#8jQbn4zICV4-OpH?yglZtw>P$=cA5T|T{fDN@<%;sZml*ay=N_nGs#<vcY!a~ z=c^V@zKeCEue_SZK4rev+QtNv%cCQ1II?`bo7DL>V^>*&$Jbcwe2-)m@mLoa55L-+ zWc>JF@44%|pH1?ahi~YL`P({S)_pna|NoDB?#6wc`YHB`p76b*2N~Bq#P<zn*>8D- zw?7|s8{GqM&cdhO<6KHGSFCI8dBW4GS=u;h56NbjFU$~r(Cw#__wzHw6}y|0#aUn; zwJ}}lo9TP6xLY_R2kKD0kGOnB6n5OQTMK)iv?ux`^DFG7<7f6{cf>95vApiKTcF$l z4<8`BL_Kkr-4gNTEWX^FER?p8<~DY>ooHSr?Ld|`M_lx3kAIr*gJE~Xr-<+7cNf2N z{LTv2d2-6(@EvV;VhU#3VdT4~vUW^ozM{`?CI54(Im!K%-S4_n{gTCm^RYpA_aNsY zNZ+k6wD-ajogEe2xWn}mo^v?0ae;jKvjhB&D(?6FjS%K+h4E*&Ihigz@U{Obtv`@9 zCq0TZpX1-cJbI0?YEypK9`TCxUk~%`xbO)^{GeZ|3Re~{h>PaPuMy_Wlj0n|qv)mX zwQJK2ho944ocK@wI4>UO`lJ5QWYfYcUeAj!Q)hbaBm9udu8r^e+V9t!hEFTN?&0?s z?bo{KapIvLQ_acZLB<QZ8*ioDpKHGxZyxxN+lz#C{zhYE^`%3^XZdZQ^G||H@!hSt zz3C(GdZs>5dntmkz71Z+dySMIpj@5&SI8g8-%a)OS2su(zHacZfU{27d=Jg~X5RWa zMtVcEh;GV@<{771Ve`enjS&t#lq^lY_>?}*0nQPh^>4mrY)>}Lcl!;l#UIH`{E?qu zMaF%MJM`_&jC@3M(#8)_x9se7<%3W42R?<_>$G-CC)57knf2q+N9fSEgt~{HxpnB3 z`HqLW+;R9&bCNNC(*FhE6_2_10dREQZMetncM90>o#N*st~;zlnSGT0vzwg&KksAE zC*@-q=eFIEc(MI|+pkY^SiOy^d6&j|{j|UQPM5uk0ro1mPyRc1n9b4eGXB}<e89!` z@lT?6zr?)!SHSVx+<W_M(F^WBosD;04yN<EFZ~Mfl|8GUqrI^%ztO(#YpK7wbN%Hn zZc_i2ORb-77w>b;3jg--Z<>E2{2M5Wx1HzTbKEDy{VqQOn}6g1{=Edd?JwO!NlS|x zYAIz5xE+tAJ6$ZLhyPKdVz#L8zhd_H?!E{m9Pb0~1ocfk&)qtwl$UV)=+gcLgA6?P zZH{MJI5xoZX(0+c&s+r0eVusz%eoiy{qU&#t9q#8Ud)dmhsrE@?C=@41Sh#&<MCd8 z`Fp?QoBv7D`WxY&^x|T0+^v*LL-;B~q{Uy*x1EFt6P$ekxW@>HzAHRW^xee2pn>2A zmiX^S_!obX*KsfA2mUGmIbQ;fYwn^ALh*tBk^i{Uu>1=+{gxVz+CM|FRno5FA1fV3 zdq2ON9?0?S+Cy}TwD=2r5s%+8{q^08S>6NrXF&WYB;O6u!i~Ior^Qo`zdNzD@OvJM zUBsUxf5r2;`|8RG;th{~5^>X(s^7y{oJ3vjq>SGqse7T`JP-Vu!+$BU`--?{^Y3yG zCj2Sy)qH}hS|4OdE$+?yTJl51Ltg&hCZAL+dHluXpNd(Jzv{kfcZyfgjUn35v+Vga zIsKua=ud@vLa%uY9*jHua8Yb~33zXBMR%Jv_*aKnf`2b8J3#zChyOV7^YFy)fvj*> znfzfj@|*ZZm5=zn@|DEry!@AwAFcR3kQMUGPX@mK!+oRQD_Mab@^x{qWaamh|BQPj zE3a_B*aG~UO89$zs3_!T3vYkV+lxZ}vRL(eWI26bD^AG&;Lnv2)-UlIeEDdkNvVm` z{`BYZTRP$gJK~@3i2t`8@xMWwKBtI#EB~jCd}NjWyuM%Wi2rU!`~~8>`4{(A%4e)) z@wXCwzKr|DWc!QTbnW3mUHZ6xacSvjitB>NJ60CcHG>9m>p?EC6hs2xj?2SbAlORK z?S)xvWgizxw&LmDzr9EI?>nSx1_OuP%h*adYS&!uw<|BLQZJUJIEdYZ*#^=|x&82` z7x%6lPIcI&h7mD5W!8SX4>R(DLfu_yh!13R>8i`();kXEhfynwM{eD>-<tqNyE^kW zU7bnhp~WMqbX$fuci&OU`W1+6NxD}uH70@B)slHadAnqiT6uM(NAsH_J*n;DNKeb} zjr1gM^=*p~&fTKi)Yz7BLBd`QSURDUxcAe=(&0n5ee(9@xFZsx6w9uWEbko^h7B*L zRJ)H}{>_wGJ>`{@)Ukj0vlq~tUq9*1RSOa?x@Ug6GZ()%O}D4MnZLKqb8ldTzg!eQ z<aZ{%?UxBx4WxM6-_O$j_g4A{K54|uj&PT)m2HqFc$HNcU+|+2Gmc->-IVh6<G)21 z7=?H2DT?bHX2)|y@nasIxQo^E2tUD6j)!l=HwMi&&b02_ya_)UFgJlW?&6#TK5$Oq zX98yGc&py`&eJD2{`anC;k7J`4~nwy117=+e?9cs*N|4wCJV0+u6daDX?$ks(}Z!0 z79JrCZ5HOYsHd>T_Qjxw;fMIB`y4gaFNRWBWBy{;!w(P!mtbrTFp<JLC|69Su+0PD zm0;BOY0RLo^>g#ci!gHm`k<6<{o85^Ti<kN3R}N+mxrGR9$dm>bAx+0aV9+ad(d&- zNBB{P=_CAP3S0m7l;cs`&v{rlzv}R(2tS?Se9>_}Lmy9;)eFu_e+sLQtbj}DqO(%> zFgPpXr_)(!1kPJm_V3$&V6nX9a{D{4zyA7n?znyj7g=6Ey1mh8ywk3<+&((`uCcL3 z<Hvve$G5+e)W#*<arwz%h=kqtf824|b_ap)C)Z<+&RkjR7q$n=9+uX?Y~Mk1ajj`6 z-qc=&uZt0{W$}XeAaN^`_UJ9{dt5vujQ%)G;D|C2uaaK}N5plGZn)z+{fo6>fbs*X z$JcltP*^m3JG4#``@dQrP@DUk?R2Z1zE@a?rr6&IK6JKQbq39X7as<kPtnGb59Ghz zHl{YT+N3t*Z3<aMouWZBhis~Z2bCrsu~t$iT$jZL&61VF*mu^zh^L~v#CZ|f*f$`$ zb5H9stm~@|?Xkw5YtUrxaoziN<8#Wly-L$Jqq+NjDDts=UifVLylL<F-cQ2&a-Wwq znbhv|*3>m7YvHW>KJQSMHgx@-1%4R6+*WK)F|CpJd`opidRnhte;T~?4c4%_;@27# zcTWD|CgnC=3xbBQ;~}?I+gEK~%RpXvt}Do!J3}ieEv;KtMKkvPLIxM@k-kf}qP(rC z0z0R)QTiC)x8i%7^9Kzs;gtS!UYxQg`S(k_1C+g!?rT%hVL$s@k(@g5>D#ktQ?b2a z-?hYEaZZ2ir5!N%)XqjTtKZhyeT^GAPG@-gB{$aNZH=&VJwALxl4)@#Woz?A8$V?a zm)uTlXhn6m^X<F0XY|m{LhG|-JE^mCtyOIcI~E`Mea*D%8e&Orl1uPvIO;%0H{?~U zn?gfnoOX*J=;$izuwD0uqd&>o$G2+VyWZ+b^=~G}HoX;Hu9t~cr=PY5zteYY@%;hz zBR$J#9h7Z@r`tO6rP>l_#q2wU2E5QZukMAtB5RN36L&qfJu0`6^>d_iRuA3!CC;d2 zdn`$x*3V|;mK1g$Vtl3@Go*2DvR8XAN~<|O+0zC1uu18#XhcS@?gLh|^))BWe%*(! zpM@t~^#qx2$`hA=>UZ$FoNFo1d33QG(dz5o74<cJvN63i7yF7`)~BDNjOnsuNI3el z7>`V_4<la`=Vz)GhL+VUIUls2?@@T?z4N>YxaPStDwRvTtm@p1l}*0F`m?}AyUI3# zci@6^{?sS>I_Zc1($kXu;1{rM_S>8^{0%$1^A7VR7uy5a)Yc?p>J2@S%uC)wll-st zqV)FMMz(M<{KgNjrytu+XKJWNeM<9MYeS3^)A{=|70D*@6^{IL&i+gxSx3I;jr<so zJYo4sUMBzJOmK7tz`y$mcz$19J~7{O?D$m$XMu}zbHxw5s_&^zG<uG;zG*bS8+}@w z@te+QP#XhhjCZE8e2sk~KYcTO#>N(5vnE6F8M$+wHr<=+et9FlZ)$JUSBK|0?;9@L z{^lfd{d%`EV$hhzMEyP{vTt!16Y1`(?2H&TB)GSyHppK~PvkpfKlto#NxwJiS1#r+ zHlshz%L%`D2JC-|HeG!QZR$F=aNRG@bh+Nk?o3}pH$&bX^OeW_%*!-qUMBp^i+y9p z*mx8iI-?%vKshH`ksle|(P)jui4SKmZwE#;rTg>lhBklK@eO>BV0Y%Kuh3XK<}B8q zxIZ#m6E1v%#v)<Mu}3=6*-rsC(wsD(lD@%7{fvDRy>tCP+yM^x9QC_13g`V*UXK0s zQ{)eCZxnaZ7YzElqa#V*zV$Zur=nZmoroVAZ`+&-A0xW$n;V~3)}7Z=ueE;{--KU0 z<5#vNc@8uu@!|M2>M>q<d(M*H$9cBGe$%_H1Kfio|JvW}JFw3Ff%Z%YzvByEvfE|R z=$4n+$M>U;2>q=|2Gkcc)Fg`=(YNt0ys?qw@$KKSeD}W@9r?LJ>vu9et!>uFTyT#; z@^8WsbQwJ^>;K$#wIKbNC|Ic}`j1IR+<yKO+0`HN&BkTh)t(FO>YKlI5xWxqFUPLB z`Lepk{rIv5^ZX&^`NP~}K63A*y)P@@BRdM4)|rf}@n7<L<=hS!8y{jzedDW~8M*Mx zu#K;=p%*FV=X&gXM-OG?C;SYLrD@J8dm3^-!gt_B?|kvbDbj~XuQexI^DB>=?&++T z$A{bph(CfK_V`(kk9hnc#qq;?WFw|8tBi+!1)6@FcCTwJ{s-T1m^(XQbY3K2z5>i> zb25#I<l{7km@jN>74y4|d|lV^8~BXpeD6M|aQNlqZz?mEmd3y0SAPbhvwQkRz<fj# zUeUg4e9uhS#%=iBkgbjL=_gcA`2P`&C#W-h8;*};Y+>WjydUa@JM$+6_!!qRzGEzR zd~5soj<S6_wym$<%dgr*|6=XT%I~JUXg9tihc9^CWJO%xDz~k9b;R}Ef#|MljN)`F z+%}%y#OHNi=YdB_21yrN^nFA0mAbTZ{TrVJ_eN_-7m<1KRkg)sZu3Bkr}27{b&|dM zbk>6k>2b`n9#q)Nnr<{FO+TXlA0XfQNcFwa(@dr|9$w>}-t7G#jV($(QdabchL|&} zU$pfOeE)^ConF_vOI@~b8NA<gYz@7-TO)kBY&>k`Ny0vVuRKQB*B~lqjmGp{k9bnE zc$$0e=6;kP;C!j@EekLHZB=+Q24AhEKL66zn9MHwnv?LuzV)&3q2gw9_=Pd>Dn7Wu z_<!Ry(XEWJKg9Uvpsk<SH!JsUVI4v9fDdv;Q){RP@N=o&k*LT0T#^y(=Nlv0RhnnK z-R>rccGl&;!{)u;$>l8C<69Z6i<Gd0ZSH}5!_MS?$~srKa3|QwqQ1S6?i$nmkBq(a zc6Hyq2lb7MubHJejp&QDBk5|RIZ0h<O<6uA{OLyPAYE-M*0wU65^lf8!1^8O=Y2}c zZO3gx?b%~>`x=DnP&a#tH6!yol<C7q*gXo(NwW`|f8uW&<e4pz-bYyb9oX{vDe9`p zUPyaQ-_Jx_sn>iZeX{jwJJ(<MO4z!~r$*fu_7ACz_KhR{les~E6I$fk)Q)63$rnjh z8tZXpd;O8kd}+74rQDCs3Ws=(-{CuE-H~GJJ2Af9E&NmI{)&Jz|D?0Be&2}M*TdHq zZ<f#Pn7?iQp3uppyY%_G&&1Y+)X#%wqcf#veLgrxn|Aqpa2%dbFov393^h%ACR~Tq z$I6B#WQS|`TeXig>7K#R<}IF9M>gW`pv$P?ze79F8~o2Ob~fH+jZC@|zF#=3U-#c( z+N8Q{{DZ%bK7Y!2ue_<|Wa*!zbLqZC`^MeY#NwQMu8*_e>b5SsneFL28R@%p&U7f& z6L+rv+ilbv>xBc`8@_%B&+wUgr);A&nAcd}bNkxsv%QJf|J$s-M_u;2ko|PX9$e$z zSBSqFqmE}jq|uyA<5`_qcN-csnAC@-b=Fgrr(I@s;Dw{%efz4xroM=~1WcX{;jufk z(^{y<(;d|T-(=Sqy%|Ms2JivZ6Yu}%u@kql&iZ!NS;1H8d$PB2?<=HFzNXRha*m7e zP>ds?W0?4GrswK&Mx<Aa^B1gK@)0_JZ|%|jnu+dow@y?2WXrDy&osZ)9YH~l^rhqn zeqaf@<)=qfR&69~?LW~d&;O5GeyU%(Hk{Qn(p0@kx0E+RTk7l!j42F#($Qh!R;PFj zJzC>38Q(ixR2AOQXsz$CUN74i>VV^n`YX>{xfUJi{;1QH2b<m||Bk`>S?aDZ7U8?} z%00s8ynM)TwB#?EyUJf}3RsuD-XW@8rtHU3y%qU}&};4&efjeiPkb{Th^MQyLgT3+ zWTG|<`S%Oroyo76-h^z^8({0?n@lKQ1kWwa`<_I@`ZFDP=pT~qP^aXce;;i=PIE7% zn|!+J*7~b~6Ik(byooGAKiCHyn=fpvy3v?*<~8^}(>LdZ`5EDmzIr=ioy=&r{w}?9 z*tMK=Qo7QmyzwOCk?B=tqiS!=Uyjpm#qB#gY<5mz=@4`(J=W1gQ$5pn<%O@7t;#mS zcWND)J;U$*CNgdq4wt9PSo?3w;_qwp=|P{`*~!O5SE64u+qi^r{RrW%<vRG7mluA% z2k+3e7H-4m`qS5(Ed7b<&3Mz+uQ+eM^N%j6?Y~+yx~;iMmN8DEUiGP)&FzhrU-*jI zrj3!%JKc$?ea3Qrud)7##*4E?d$RA?i$s<$pALBZnXPNNKE<ADiKney|6={+j&WG` z`SeL!SFrVCA9r2$oZ0D7-zXX8x*EEBrTcsNE#-%9*XSQ@k4-*ue2q2K#~Euqi*Ltw zpu=fAnEJ<%xpd=V<MJncoG|g%f3+Azj&1Mz%D4HtPV}Fn(5^9o`7rEHbjO&jnvEOc z4m!;(&Ib(eqN$$g>jicX{5`;g4ycba9dEO1WTEjsZ*BZ7U~}CGTBJLI5#6>n)Kzyx zd$N1!NE<wOW6vUud(NyckrwT4Yez<#$x%KJy6eqJ>pwJ)V!rh1dFr6Q{`MmJH;#U% zap{Hn_q5BT?M`0mj&&C6_n4R6X=&I2xROqt)cD}lAI)G*XJRj0=^3rohAbXBSDwx4 zfbZ1Vu{JyU_v`0R?ECn!53d#t_UtyaA^hsql-tO5TI(slS`4F)BR+O5*M6a?(Zrv) zomd-OhU0#JV?%ilr!}5Nw2%0k;eP|2fJfhbzuM;IH12GON4#h8bxTh?m9DGJ@*Bt8 zH<@k0Z|RreBCn-iH}z;NV!DgZm2O)Yy)VO*jkPfKV>(|UKk4&C>^R*^8Ep{FoY#6m zYlt1N<(#sFg|Dr(h70wo+nRd0KgfJ=j5@*|)OM{iY0RWGg|@XwgG)T>XU<pmJvP06 z(`Ij!6+dk40)4&9!&CI($7z?=>a=eC9bdySUMHW!z3r36ds_=+%~iV2-NCg9(L<i( zp62uE4nFgf@LBa4f2U5Z?<O4k=GwE=nW7oef}U8HlaJCkPwPs<(BylCuiVk3ZKRL6 zuF19s-1l#^M!umxW!^nP`JBHoe^wpgS1$0U&|S{2q4S9hRy@eZtHx{KJAJC)eC^u! z!`RpSlg7d;fe*d3wKBE8Q;sf^ap4g!;Im{EeUoVJYr-q%lk(&{HCH*Na5kno0NfC1 zK4)AXgN9SYbp}D@%+^-9FG=Nzo1Oo{zpyq1?=H=^p9G)v5ikBCc%p1KKOcE9Ml@OY zn928(*5{=g-1Yspu(8Yb-LcL^n<R@EcZJUuowBiVO_Dk`T1VK_hSg5zo92qrhf()& zs!MA#w&pj!TCx3C)#<ipbV<(G=KYkjGsVc+Wb1M@{c`!MuZX=Y$tl(%8H;{}voqtP zS$^ob_GOe_YfhR@Fh}COG1eM(aOP5Y@zJU;U%#s{&pbJGdi^QV>ni882yXBqw)i~# zN83H|__MIz&b7C58}v2OOWBk5j>V%kKO<VO8$XNW>#oT@#FJPTjI&4+k(S#J<p*`& z2KY_?)!vW%>*wEl+|MDwGu!v@wszj1vl-ncQ^y;2D;aj%^X|mkwf{zsh113qH#Qi9 zeu43)o#XjE^Whg67q9xb=1zEh-23$d;9O!oa+&@|zUTn-&LAhPPfhsm80pKVo9TU2 zjjhH!Z<)Lq%k%H>xnJ%Dhu2=oi-dihz|Mj#QC2#*%&+PT`%rzmEUtAb-X;@H`Yi1o zRrr;!l%E=Pnae-TI-WW5)(FqY*4XzD{!#63G&y&N&F$Xc%-|GovA$_{2tfO2Gu;VN z))Q-w)S>z7Zt)m@!9AVHcDZNdym-OyOXRD4YKPh<`d0XzQ~KQ2=e3@&G*^s|p4irN zOfZ8*@vjIE2rk|6WOrwd6Q7}+{Iur%jS29N7T2969JV~={GSG9$lEHP&^VFS3Z(zG zx9vVebN4CaA)MUPK^yEo@^a0py<Fm*bS<AN3=@}s8_{pr9`QZI_qe=XR@muLdG#~$ zX``&|?P07U-VBC3=;uUBIev3J5<m8MpQZJ+`-qQ(Je4P$=!E3AM|8M7$DWpa)1Kxe z=b5&ZYj5&-qSNs3{+?irKiK~$ZBU(BbCh27E9~{jCzSOyCoOMJ=)}(TU;6}lFsyc= zXM5<QhR}_Moq=Z$jk(4f-M<^H;Fi2h=cdk79wBUN=JG+{UXdS4{x<fRDr=;xjJ=10 zT@1oU;C9<Rt>M4LgSD&pkT~rbOi;#bw{=H;#qP+V{t0m9c4Bz3lL6?T54m)l%Mk5B zv-r47eBR|hWO{X~IP3Z-e$Bgn?V&#DfW3D_9m9l|WA2&hk8ldk{33E~5DuRqx!7GH z@YT*0Wbx7l)vo5H;jn%l9wwe9J1BV%j)|MMRc}HMQs2lrwDjO%^aVM0j=?9~->xFR zZhIWh;%5il&z9fFK)>1>V>h+W+An@E=8@gTm^sEn0jqOYjgGaFu5;BG@3<T^_O5|9 zpL<%pZnLt<n!{43twq_q$;V)2p4;aj@PpeMW`B03EY02i<!@{<ZrZFrOWy)T`%l`q zQFDd2fv>&+Z(mct>pB<Xff3pf{j&IOZKl2$PpD5Q&-mKg4Qapca{6jJ&!_RF){JP= zhvW|~(oc6gn;K(Q&A%i|qqTXh*-DK2<+pMfo6MV&=wRY)pX75X`XfBlBYd`p&iwcG zY@8Z%8R<>vYS7iceLm@h`%l?&yiqe2{zbgtOq88r*t!0dzX#04*2%i+IptdO7G$$? z{SUX2rt#~Pc)WA{pP$%7C!h84&`>u!Z6<%B_08-~(tmw#CclmLeY?^cHVI$l>q4Gs z4x;uWBXrNtq?oUavpF`-_VGvBuSoKg9U9-zFV^DDYyI_d<}#bwq>poChub%?!;8&_ zVtl7|4${YH{x>+z8dXOhBl~N(e|eCw<SHLE5;p7lIO2Xv<3;f?#%auBY)sQ2UF+vM zx2(4^*hl!T)^5VK2bz=E$hI^ObC}WmT?f~5>8;U2f24H@t%HxUw)bn^&xzh);d0w5 z1n+je(b`07ZLRydn%Zo-;cd|OKYHV;LA_th^scqW)V}8TBzjz~AER$0q7htmr&;`r zH8;(tl6@z=tHs@5Cs$`QwyNLQIDE&xZ7WM2pGN<VQ@-D648NIlFyUZ4m3^bZ9eCKG z<UT;zDKDFR7qVi_?T2)B?1vkL*{t}u#=4%;Vq8Oc(J#6+Hj`{E?0g>Y@MRa{Z`hp1 zc;a*NW9eNa-X5`ck&OSM1>Y)}VuKal6-Z|h&|mq3M(5cI(>?K)a`c(PVQ1bL_eutq z4!#mMcHS3bNaP#in%8w+DR|?2l5As5K(fy3HlKq`GzJR)-MLQPzoSu(ovl6KmF$I= z^(4D{PU+qktUqe?rMZ#zf_@M_$rnlXv97Y&d5KH(MX$cHi7&d8^ETtOVFX&kj|>nW zCO#qAAs5@D&hqQcN$zj7yX@0GH86hu%Est?$I<&7@Z;MX))$Ar(p$G&{IGj=u4ueV zYb?|wpEB%zO1zZql<VWJH=(2T9h0mFpM<tw!ghY8nCRl8MkycXFU}JlbKG;_4x8CU zIO#&t>6wY*mV@)f%F#40>v@WDp(j()9lvW+vb8lR+B==4%YH*=m~U*+8728b8>2Rp z&G<fX&q@Z%-s1(ZRq_LNCWEcv16Dfls@{MV--2fD2`yn`&1|6sTX`{q<zCebU=L)l zPY}irB$(!;waeGPxxXJD(2-~J73OhwlNUVU{DZ%b2fzL8xya*f#I`)GCq$m%c0UsP z30uf-wR7v0;-}?-SLa?L?*Mxid0sDh_^q}y@sDwQTblf?)z8~xZ|<N?vavk;bU*FJ zCvRb1#9Qj^ZMZ`I5FORsmqYZmC%pfZZpQhrX~MC0vPHP8pE%fa?8LP*vz7<1xHFV< zN_rnH-JPoP?oZ{1P0#6<)J}z`2p_<=bk51Jr?i&oyf5vGxcFVhWpCau=Clr|-puz| z-QM49be3&XzXQH0x63hfddTaPF9@Hbv5a&&#xU|hvZ<;6kG;2nuIsw)JMRM@$VUm1 zARCfl8@8Tf*aj__0v*@^ZO8yENQOdKhAl{jV<rGZKmsg~KmgDI9WcaOWwMwVrbD)D zhiM_1PSp&jWjgdKJBw+Rgy|?P)2c0#kvp75v6)0o<yML1L{6BP66W{cXP@`(yL=#N z$xXXv^^phneD1T)-uvvc&&NI2byAG4jDJB_HI;felc(?L>}L;1@5H9oQh?D23>$}_ zmGY_%z4NGZ;M#l9+2}TCc#d&RX9inqtV^5Da=Yv}<y(f5<inIJ08j9d+xRV*q=B^y zeHTM?jdp_BL~h5hAMvu@ktkBu><4%toFaY7`+&$&3;XNLm;UktE>CUbYZD%_O<d-B zxqmaBQx%?Fz_tDX+(h}W!MAJK3s<wpY+c9Uf6w+9xTWnd$(+vCioftBr>AU!1H?!D zVB;)pAC7VKOY2MIm9AdPmWln_`_{Te<y9Xm^++GsxFp?xePv_1aM8QJajdt!I`;om z&gQa=zgfHMTJj&qT+I>1N9~QY@{D7l<X`-=^*F{5;m{Vx<1kJ!7Aig1_{}Bw>|=5q zZ*5HG%wN@<{TTAfH%pP(^&bnelY0g@?OVcFZS^s}X{=`4s~W4D$rpL#HjaJ!&uqDP zzcDaZIiE30-Y($=PqO>SU24ZywfCKpbK0x^x7OaS^?T^hLBCX=Xjk8+PZae&E#LWh ztM>`fDek2nbbn@V_qX2RdBx*+o@+-5-V^?>vA1jOJ$_@PLwS!pO^1lHXpo3U$a*{Y zl=T4knO?JZnR}8By$9f9L1X0SHTw2d=l0Z9UYCKc%n@I`TXb@mYtHMLUsZpj85x0> z>VLAaji$oWWjM|`qn#jq8Rt!subA$9u)UI)F1;Aj<9q7ot-Q~3CC|)R((lU0{Lm^j z4_o_P`Q<D;<|`VjBM$1L5vJQ-wtgSe+fwQ3e_H1kA7i@wv3%SIsOq0K-iI}{?7GzT z=w{I~&TUL*61F*%#v9hGep%sC5B&Ki;}!Rs^Il9NGG%uJ9sWa}dXHoS{aoii`&pA= zt(SM`^*tQDN3Z*Ztj`^}556n!W9X%DR<vERdky`6t#u%if0vtRKWiOc`|IJ(lj`>) zC1<XSf=w?OfaZ$Vcp-kpbkhy4FQv<^|2w{G?QLI`=6dH7_>y<gy%8N6alK+bOrA8Z z!{m>)s&u_@vG$^S+eguZv{!S*mdu(^8iv}_TIvb%<l}o>GhA!@z3SRjJZ}R&Mk~fV z&Cyh6hxcLW-*~ph?n{8iIoGE~1E>E*%EYlEw$JpH+UISvGc9YBKTdhZV#el;$&lAw zHBV#Q4}I;5JTrTk%T0UV>o+(-{|te9OI%}Eqh8TddZyELtM)i_ZqVMD!(V_m3F&cN z;*G3piN@-yqFa=ONbjgGl*e>k)N70l1@t{<8shj(`Tg+g%UTorPxUeF8vXEUYYR2@ z(!cr5)L76A4{Po14Ex$K-%(BcJF3Y+*4z%Umwp)8I?DUe$D|`@^APPi>awCfFZvGh zEs}1<Z!MPBSw!n&$|rkW{!H2-ml4i+a+ejbQ{TK$A3FqG$w0sO3ErxE)WYP)Hen8K z?-Y&4JjZWL;yXo?F&{Fh^)a1k?IZ3`238pd@(4~$R~f;G=?#JbjyfwaEnIod`g4JN zqrM+Ln%WN^_r37R7VaB%|FqLhayt8t(d1n`7f8Qbcfm+T1=I5`5`TyL4=)AVc7Xf` zsk@K<FwC>JoBSQg{X_Ug|K3thayZIAVXbxalh%b__G&!mFi6;JJm{mgba-3ZiLaWQ zlBPJV-Lxa8vT3UJx8ZGjsmJnksNWKnOm~sDef#SFaT8@_A1~21@v_}{t~#sA`8^wb z=;2=4wxqsp_1Srlul|bbDdD|jFlei{Gf&)Lplh9EGumCUN81RuInU$%qlMAA1=2)I z@nV2ybD-r9P2-o|5RQZX6kOYPD&3i=zUF=5T!Q+4j5pl^4dS_kxb}sdmd_>BD%SuE z_Gimy?u&$r)ZMCQieAfvm%Tq-l3(otAC-^xjLs!2Zw+TYn&SSH=AT)<G0v(_E+Ze3 zb@Y#&ONet8wPo4)*_*0MG)vD(mrFg2W7X#pgr~vraV^rJgL;H(JijMcQCG@euCK(n zsBqNx+gDHi2J)kG3B$<7GV;}eY&2KSC46m9N<NmUNBoNOvA74E=6g9U)gMjvRIXC* zSAUDJ%a)zDh~t@L=4h&)MLnl}cC6GB#yxNUka&o`%Fd+>)>p$^YS4B53H03S*3aBu zu@dE0c(|-cMh|&AqrM*CY|t~xv$cr64(}g}=PO=Dvaw=m$e6d|kn)u_ke~KoQ|2xF z7-PNS`CcIP?>I7&j2_vaj34RYyH7zrZC_M(k`brAH4E&+JQsNGaJ{)Br8h@i=Z&NP zqTZZL@oC!irp_DH(wow!QEwh~z1dG)QEy6D*3z44ey*iA2Y}P1_R=2dhyO}?^MC&u z^+<1OOc3tvsXE(BJr#YM(VL6adh_H@d%qCgi>6De_2xjJtLx3su8Q7-&l*3`$y#en z_n)XY`@yl6-W*8DVf>!t_3KT?;|=M}3Xhh+eaYoodUI(Fy}5*bk>0o-y}5LS-lRVI zfcnr<N^i!xq|d^g1)isLrQQ^tVO|#UT(90N*9T11V`FDH!}7oVoa;^5&pIQY(VORO zod6z6K9+cDd~I`CtF1Q!U2W}!F+_T>hTc5+^TfMsncf_9nk)Y?!RHRQw7!wvTq*T% zS4u_S3@YF84Oi$*%j0@;;2L_f_Suu5msG#4f4P1$dZVY!uJpbV(<Qqx-E7QEy4h{e zuOa4BzacDsVDE4EDc4`UA-w+2Tpp#H8%C2x=@OMCZ~Y&8n(~rnaCFYAGaU|j*GF5e z+0$g7DsO>uYM;v6x}4`fU0rXYdx*T=^>djt*&q$29!rmOsCDLM?fJ-l+W+Nn7X3Qr zAlEZrxAP=gBS62fSBX6f%_IZV!#?e6+NW){INra}8YAa&TJ>HVd2O!y{heDq|8v*T zuJ2`TrT!PkZH>X%Ia8c>dHd@%He}~qanABT=2f-rgQ|JeQ1W~1(b>Mi0JMxY!W)@e zX$<)*m|K12tJEVK;SJ8Mo*Hu-L3l6Kun~r&7x<Q=(%<0R>VE0DIJX+AvJrw#zJ41a z*e3sDZWZY82If{@o<cWXWo~sY?$3z-%kVGQ2xZ&Q&ex`G!|R+|J*7K1UAB@%{Dat; zMLlH$Fb~o`*5SC1<#U3xjUM%+#>r!)tnC1PHRfDp+aWbZ4qd~BxGw#jntMr)Tse=b z*gO$$js0<6=K4H;UTyjR!@Mh{S2adOz4}JxUXr`Ng1Ohq=cwoVF!%cMM%SytyVl&R zdd(`>)vt5zRi#(snw8}6f6TqYI^TbTx!2#h)%EHcbFY8?>nZur+)MoWKFqzoth*}W znw9kGfa}$PlwLiW(W|xQWYVjelUX^RBMq!EC$l`7lcn_Pwbr!$JDN9q`~Q6-^9H6` zt$enVZztWzcbysr_$20O;u`tCm?Ss9h@amr7x<>vFyGEPfIG#vwI(?xaEXLoieFBW z_jTj%NLb5Hk{>>c-+!OX^PQ-pxK}u;bTLUDnC2FlB@!v$)rLFo8Ecf?PF(|?eA5*C z?!~WfhpPPD&s|ae6ZhQnkz(8U#1|i*S{NL>r#Lq;Jux;vQQXqCso1%>bMuyD8)e@7 z*zP?^4$qDGTp`zxOE%B%-L)|G2+xJN@SKc3AdGEZm{?p$Hjj@jj3t{NnV(NKTkPCS zh~cw?yC!y%0kE6L78d5F9^os5^WLEAd=$wil=w!P{b=vxarf&1{p|PllppU>A4x?# zH{euW`5JKV^)R1>)NfL>O8=Bszjj;!cddLMCXdS0;rJQ6XM*4UM*OxAihjJy;}m-u zkMPsC9hD~hK8A}p;GH_gpLgTpFQ#R_2Rrr8$j}rs@r?Oy#qVuU>eRpE&vkqccAB<t zI8NRhai7EqzeXH8N@;lWCm_?`Auj%6y)hi0<@ne6Jy_wP-!l+eu<no_7r(c<nP_k+ ze=l|$EE!cE&;J?FZY4bG;qkD<kev1KPmq3qbpM`ea*#0mDSvMkK5T#{xhBtlns&Dk zKIY+n?Rp`?|9a3FIsg7?@=DMjvA*1fpiAQSP^sB}FbjFeA<s7ziHhG_?Q&i7a;Pu2 zJ?Na|xQBl%=%aG}g(SJ{9B_)B&hFjqFVdcF5C1*BUn_dN<YB%~_<r<N9sfk%+`r+| zQpZX6@2}>*ktFXB|6}-12`?iSEg^qho-4FhDA(`dxAJYi7s!9v!}O<C$$PJdKN|F6 z{622o5A)r{6O{Mw&DQ;h>rCfg-4xRpibwv`EfR(%xg8GgXZZf@QNrUMKIZy&)WiQU z=;vI!hkqsL>LiALJLv5wKXuSbIy@N;`Pb3D4;>)v@YlVWFnN*_o=*Ede3<Z{hiRYm zd2-0Z^r0V`PNk0!7CojteJ1GpGQ9n+`<?&m{ujoDR`N%Dp7e1d*8fX<k5}n^4iDHL z0sq+Eb^j`iGg1E6T?k`N&iTFWn_O*+j3yVo{A)grJRidOn@~-sD)93ygvp<G`Oe?T z_j+kx?u_T(8pfqqU;Yzej7nbg^x-gG)j7ZOUtnwme3ak(QWz_9PM`eW@^RDUArC(_ z{w1dz-oFTAVRGKXe}LM`gU_UgSHsvC`%C>hljKJvKh9589e(sb`ex-vxImYLpW&xY zK)64If>I<rgzs74Exd_8gdfkOqhG?$%OA{y|86FHG86t~4>zIE(GT_X&zlxf^}UeE z|82reav}eE%DkzU{6_<R>u+PYe~$1m4>K;_Ci&dqVQBO2i-e!|FwA+IP(R_}M+l!G zyyW2@=lj>4ga<wRvxMPKuEoP&A<cfF{p(K=Xu}m9zu%z0oh3Zv`TrlxCGfAG_3%ri z+0V-(pXu<15KUC@Y`7zn{(($bxZ2P2e>@ZZ6k+k$zvsL`v>C;<27EWbzfUy~c6>L$ zzfX}~e>~v3;j2mV5Xtpj9)@3^Um>F3!@oyZJUigwOY-Ad0{jAPPmbffzQSFwW|FYi zSJ+0FK3;z|lrKD-B#+Q%>W4l2<4N+^bL98>3c%J;6|XOT<Z~xq^u1@~lXH6>m>HiK z8JwG#o!C8I759)n`di8JnF)Q6IYtdk%`c4H&)24_B0e+0*Mc)KSCs0T;lt4m*}y!& zXOq+6P}74Lsyi2^W_I)4-<|s6^faIJot~L_e9!F2{M45wLNuO{-D-h-YuR#^qxA9X zvAJwUeIh$kHhz|wYO;k#^o{5#eJgpVc|&Do7)s65Ux|wKTieEVk3B{M?g1yNn-2~4 z$j?kX2016@?$PI0t5WWp-ZMY>fJIs2NTAJqRC|A)A!Uu<HMeJk&s;xV9kWN@=nirA zVOPF=Tqc|qn;e^;97*M>L|Q@N9cnd3iv$6VHNTR24>O86t2!hbD=Nvx?@HmZ@gQaa zGQ58P_Jz{B#%2RCADx@XM(Nwy2Be(nCnlyIn+&YnS&ob}ug*GWvKx6R)IOnFD*_yX z5AB{ep}TKv*VOc0qk2dvH{mfOQLLl_NNkm;DJGN-u!Y8BDWavqWh#B5ObKh?lvQCA z5VZRZ(fdS@N>DvUphDhAnh;8nW&RO;4Sr^J?+6}9WM$^7;Xhb`FNh&^dS)yzDWt~g zLSn2ggwoX+<TP<Y@kkuOe`IWaN<B#g2DM5Dtx72Ouc}!4?)l6f=9O1K62j?5R+Y0v z`?7ngU==5$WEf3%(NRYh_Rda>JUTbCYh-46d}MrL-ae{c`(x+g%O|}n514{d|Abv5 z5N_l_=_>r&P-b5oTbL+EJUFp1GB~w3F>Nu@2qTKRXL4+=oJWEe0>&I^r)g>4ozr6( z9TF;zm03B%Lgh>)tx-<AO*g<qJslBry1*EFA;rSnOz0f3(N#)GWlg3Y+C4Y%Xcg>$ zBOS!3lO<Ygr+rd>ZenbDdPYP?>8N*yPE=|4J)az#t#lk!T8Rnu1cGW1F`7#LA+dc_ zUL?MM_xQwO$WxWUNcV~9y|a^ve|Mfz1Cp;0=`cb-=mlAuGO>w*ZS2V=W}9%oid45D z6;*BoI-ru#*=(bs(bm#jO-Ej);~Y!{7gGvr;29K#Mxm61J^1mdg=#D-F)1Xokq=gI zR8j`TRFuQOLP_ee3qPrK5q|5jLm!BK?4{^0jACzjd;wc*F#1m<$)}_L#U%NR`#1I{ z$%D~9i5V6B*j>?oBQRsxhNG4EoBjjy;`L!Zf793T=Y#*2)0I4p%qNuRrXm*T4}?7C z?`FBh>$>%WA&=G#Z)M#`aO8i}$x3_Qj9onp9R1$>D1P#o|7Wl#WBmVw-{YH>D>S(+ zMXTG1-{JMX<xmBF^YKdlx1OrxdHZOEo-GYY^01eE=U|eIxxYA2@xN!b;(s5sihTJ% zXUcz~Qtw@Vh<)n#-}RsIJN{d+Nh2S(3?<2g*R^FlNgj><-wt%sy6TpHALu53XJ4gk z=LPIt&)@lCrR;}*ALF+^hYjp`K9W@M{74GVyC*9+-%TA;p8sR;F}Cqz&@=k`dMo+2 zKU=|P0KP^V4m_PCUvM~|9InKF@>nJQfyN|x-1B@2Ioaj3`V?}q%W3s#mocp&f7)eC z{?B|N&`0YFpV=MgBmcw92_%!s^Dyfvk~jH3`wNx)pZ{?DIHlHHEO4rn_Q{ePXS zKOLVPe*?ec^J8DC!2hwIs=y!l7ak9dNB)(^<KO9g6b?I`kMd8%c9CZywhRAbmy%?U z<G}0i$rs(Pwa7Z=*jkg<++2RG&1?Nsey!1K8YsW5)i(#f`dWfKDBjlXTZ3O~_nM0; zUTgST`;}j7`C79#KeCW?2EVNfbp?N1<5wQ7^Cx{F-q!oUL-A^3G8p_nd=~$X;Me+u z=9J2#J%D7~{jcCh4i*35i}<I5Uu*lxZ1CG20qs#9?GxzrI`f~$zf2M0?RPN58xDtp z-*7k<{I-U&68zdr(413nw5O0f<^BWsPXxdA7?P90Z}>nL<+nYDGr@28Jneqrb2drl z4WCCB9{bYN?B<!fis85AgCF|Phd#LVLtD2Liy!LXPw|5tO4-uU@!`(SV)4VBUHsK= z^oITS4&0YhRq>az^^H`-t<aU9S|NVkm=vz{Jy`a?bS8nbe|B$51L641zwnNF^*e2L z-tTpvF-x77LwM{=;8pGiIp^=}bf@phVIQllYuOei?7W-K+kk)5UBq#>!+Fle*}cR% zAIiN|`F<8)d>=BM?*#86aaW?fr*sGB?YaoR)x-ZY;Wol=^KgN1GvT)@jO$cgdJlv) ztW*7bS8Ukv(wV(-eU&mBzT{;F!B6iCwh6zO*WdHed5PE#(OK`AROPE~Yw|)0ewV}7 zy+4J~gdS0|9=p?{p;AwB6n}%ta?bi$m8-xkpW(b7n8Md_xAWY7el`np!_$tZ?k^A@ z>mm&T9j~|_BHlmS#d(=p?+sk_OeHw!J^cn?>->r2O?Wn!dXRU{;IQXw=dlQ<-}#8| zyXY)$JQr%^_~vN;mSSU4i7)ExgXJmRS@9pav#7o9=B-7PlGRh}CtRd{-6zaB&R6Zb z2#!xYYkW>=ksg`zw|(8<zXf=}v3E+qz36eXskm1BY5Zf}Hsz_{6WUE%gjdYN3o6iQ zdG*_Z+i@HjI-7Jwe1eS7x0FAejY>RD=iSr~^iFGGl(OWBcMq)fu4m16Z7CP|r8~g{ zPv`OrDZHht(qXkX9acNjVZ$X=Ub3G~7yr{?^}!V1g1n^43tl=skN#Tg{oFO%80iPi ztUf=t&_|ma(|Un);p_d=?##UweN3K_6Y;g+GM=S@)#<#Cc~lRu-;jLA_j|u*dUziV zv~byqZPz>A%QuwoP0$%VlUMXXQ>lmZ+f#P8iSCH&m;CM<=Q~*M*}m9ywo&i#l;7o( ze2OM6vxkt`hmf!H1~1&7E80ca@tzbbbLVnn67ET{bL?q2(kp^<kh0BA_XfL5@eAHp z1OCvtt|`8E#kp;h?NooUdQ0IfPr=Uu8XWGvRece5V~VGZr5<>!ci`X8H%{nxJ}$p* z`U{5Bo%&2Sxc&?JOm(B@q}w7MlAFe@=tRd$-`YE6>4A@SFErz45#Dg0%&V{ZSe%yY zW0HHu0&O<Lu`|**N7?>ZAM`Of4RuxYZCdv(-&h>b`zb0X-l#pm?FEMM-pB12-<HC) zG04WM#=Go2MXyV?b%$i6DKMjMY!3auIA~9JtM&+QzniB}g0J9Zccg6NjuiP_e&bj( zKwOlQT09cXvg!S$9($i9%C^Qgd*1+>v^sx&H_M-GPp<MVT^aXl(c!A&vF;>rdW60n z<Vm<%Tj^siCx7`HSv;`qhRGM(Un#SabXmN~ThZDmI;uU=rMxpSQ3IB2!B+8``(Pxq z72X71T#Gk$kFxWowalA<!vJ;L_fcX$F9jRB;OFp*gw_5SPSfJ`^3}#cmmm4PZM-vW z{qAyomIm-u?Jkbe=Xo~!Gb{J;E`jfP9QQHKY%lO}886GRjcLeT2l#Pk>7Rd_XZc;4 z*k@F3YcbkT*e`33wbzt8!y)J-;biuO-l>W2(4d>{6^*Vjx2ZX%JHCZf9eOt^=qlHP z+}CtjyhxAlLEmuqH##(%<}zhE2|88mS75|<j;Jr%S!?P1nsX?>Yc#&AF5RLz6YsPC ziM{VbxU3s^FT(CMlzwJD)rPFtyOO1zz*Fo{-4iRjwz+G$IFz{)MExwj)1*GByCB-2 zId#2a^iJ1BI}Hwbs_vm=esvl+ZPeN1<BaZs0LE)S?sBa@<h07Ql23Cp78bs|s`u5m zJ&|j)IL9-4A1FAOj&*)KFFe&=@N8KAhVC2s?k2CN037i--tlu#dAF~AXA4j9r3!EI zwWZ}(Vams`Q}#wWU2v6NvB#^^Ma#Ck=?_~sHSBOYG{X;#pN22|k<G4q*!DU;8vAlC zpHYUyTj1<p9pgLg4yPtADcog4#=2kdGHc-zb*bHhOrNbeciXc0gPVUaN&d=CWquzI zWWoWRZ%LoWY&=Fd{_^g5JJ0CH`<4ZYUBt5yr}9c`z`fVQ>v;0h8JenJT;FLYwt%}< zzAfZYnK~RlgSS5T?Qg`1^GTM^lNwo@ta;Az<1?$P-|<X58s%@Qgv&5Ewh?ht>aA+$ zXXNu=Y)1+=rMwwfb)$H+ws{*)_%-5G-rI^VxlQzYRX+bkcrhHG<@ncm&N8mC&O$)J zYR1jt`aS#}{Aa+q)x!kC4`l1{v9MnEJVpH+STaD9juQWZ=l?OXEt1~oVa}<nKS+4l z!&t8c_#DsmCBFbE#t9cZ{hvXqX~Hji_+KMNJAi-C!xss^K-kZHC4a)63^>GdV)*<A zzG=A-u{rmZ6YcF6Jh^vd!kaSTu1uJ7ZsF(US%a?%gL_q&bADCfpUZ?fS5%e$i<$60 z&V>JICj8Gc;jclD%kXIBO*EGOFJ{ueRTcIHTif>5((Opxj~%g)pU?;a_6v7DJ~BBm zHa?+qAf97tdV&KAcGxBrGp^G=Re9p+n^dMpr>3VVJG)0){n_}LJquSP%s&o>wGyUg z$`IJMo*3K3#^%g?1p|*vWz#8xJ-c-@LFaTP#^Yfl+m<d9K_>zHjK;`=0q}zp6OY?| zatM9~a-@O}f?+DC)CVVL<`xF-&BSW|KNU4NGoMWDesr3X13HEC!I2ocm*ZNV5Vq)j zx7y=UAXL}D%<jihQJ><p*C*hrwzzd<3o5HcKOWi_1fdVz6LkXp`1a_(fKGS6sfp-E zSG+a)S2!aW{m)e5wGZ`nkFOg}`HxrftUJY4jpxzXRqbQxx9;EKr@Z;U?(x*Q?)N<& zf1W+Fg6Gepj|!eY-^-b0hnasmN#5!H`qP!R)IXmjcX<4UV@XnUf8iwOo85ooawWb2 zJR?nRf<BQZHxd5>p8uv4t!^G<pUC5HUf|4g^q;A~xuvB-^IK?7gntWTl;|LRcZ=_z z$=?VuVxGnaJkJZnGyaHH(ua+YRLV9!>hU`sU6}sTPgJ&Jir3nY>FWHU4_^O%%-g!f zrSg8v4ao-fV`|PJWUqBC*IWb9T87@SlFe)L2kgAMeiT=<NwLl1x>h^u_YJ;pp?!@e z!Z&&N37<#UTCK`lW4-9Ab1KTSUikf7TTjlg<|I4Q*E1T=Mt|wfivP%+jZZ6nYcb9X z8_y7qYwO(e^x9Wy&_#PL`aVNZbi+j(HPT?M`EAX2xTvq7wu^p(r*H)yn;)dZYEwF_ zHRI;x+WQ%`WkWOx^T@D1M_aBYE7WJaN#UpP8=-Hc(^~V)HSu;CvH2MDEX{G6w-gic zEb`g-Dg5A(t$%kNZ%nTRhIzED6&ddve0?;Qmz=~ka$Aq}dR`aKsWm&zZ=CLpXRFuh z8lU#H7MoX+FS}NkTGKI{8#6dtn>CL@wnd9<`k7J>b7A7W9_<Sq?n2LLu1cECS2efQ zx-|JThc`Nj-r~FDL-SY3XY3D@6a966ZEtV5Q(WtynzQy2Z}fD0vNVqPaNoY&A1>T{ zUT@!dj{9_L$;VZ7N$qt(qf1;DT*=_qvM+q&!Ej!_5q@ahjy6b+^zLVv_uJZWY*(4) z<Udo|&psLXYVoB6?ZX_m@eH)_HOb2pPDjz%<t;aq#mi~iW%1T$sY~#x)+As3=^C&k zGjUB)e2Y3Nws9>PEC648y<$z0_#*LDvL#w&_aVrqx@)XQn(SuQk%RtC$!<1X?QJ!9 zL006?tVe$Lx3cYLJyLR598LavSdaY6jp(BP#_N%n|BYzmWAs|%Q%$`q9R|(qKBwi4 zt{e7i-}%p@+=<`5-;rFBT_JseT@ly!noB+9bttXxX?>D0r}3H0`kv%2!qNJkXx5D0 zQC+|8JTBMe>wET{BzT?cg4fd3_!ohrI;-|0YphYF#(k6dbXenT^W8<Qk8Mb=QN_6Q znpx~yaeaF&y;YOGs>jFU{9Vv3*j0QiJ4s%#H0>vTA$dxE#yZic+4nKa-&D)eu|(S~ zA9_q{s<BMz{h=>a>nV#fn51`-S9g~8?kgtmeQ494>$|0<GvfIMvrWQ2VRKBw{@|Yd z=C1O%7WOGSrKixLd{;f_)1U_ppJ-z;##&no;-Aas>!n|(#-9{U@xE%KFW)&Sy6q|( zxI5-61^R?F*zk>1*YUm=q_N<}q}#@Tm7I->L0{EMPo{yZ?^Wq;F~g<QQ(k8lZ6oZm zAJ}cK=S9yZ=$nJ~9jx)oZVBxP_8M_X4tULnH&*cHdj#cnAv^uhapM|wmtk)yu9|#1 zKa3W}SK7+AQsVyVr`6{qlZ@}qr(Bo#1pG$uP+#OeXTFnJ&0muXmsM<zcg`vgWkfsf zZr$)xDv#gJe!!PRd~q0!`-<yzKab>Bcc0oFZ7Nq}4D)iTn{S1g?I8Lz-MO4>z;+o_ z8MP^XqoD$mZ_v^w_7&GH)`Cqv5w^aCafv(z*ZZUFnOe9uZ5@SIqsFV%eVa@k7$4b( z0{>K9ugi7>MzijlFSXg7fIe;~qd^Xn7h?KyAvxi6iF#y|u-O&f*22)nOFt!?#0T1{ zdsE8#0r?*mEaJz3t-fLU!sH>`cR%brZzzpmFYfoU0XN+-tND=j+;jWxeQ<H#qnw#| zAK#-PU3%HZooe||eRjSprRz*)N<H8h>Ks*_uUj7g1G?z`oJQ(ubb3Vkh+ZaNCfj!Q zuFh;>@D(1+d0+ljaDnGRZfSQT?GAlEv|Hc&Rl5tcd)+nL9rWb@u(R!6ATIKDz~z<t z3*GxR)rGzv=posTIy(4;$7CXy<?q#|Y%%S}YA)GaQaeKZL)Ssms_(W_zG|+S35!<g zbjeLQY<eUWX8bTa&g3eLOFKOOM%P1~>GI@HG`G!s=db1*8XHCH8RCWPj+5T@LP>28 zb!q&J=VA;`k3W&AQ}isi0USi@ba+VNEyZM9Plqw=d3rrODqMua8<?918KwP^kAj`; ztMs3C>W*?fta{^~u;Np+7LGCBz*X|8{poVD!=gQBbfryejn7y8=7MC8ey2G^o5}gc zq>r$8(WbUB4)zk3OvUtm!s-JZK@ZozlFF;|f_xi3_X4^<$Jq(ljdk0e%%A6O{fj9W zPx<_{PIN4fXHTy0im;&RQ}pH5*msa0t?9(PoEci*z`9qf#wfmjCVR;6MK*M<H^z6Q z;>DBLhBkO$<GGKyv24g6#`QMZ(75f1`bCu^f4V<JIPJB*>r(3B8<`uEI3|l$2A?){ zMn80o_C=cZoe{5;oe}vE?F_;0hW~tr{m-tj^|!6$&r^qVt9Tgp{kaP)@XEgPB{~$P zLrXnL%R`$O<Kc7sHXGxO#`Yp<!b|tzvyPBA{tGwnONrNC@AiKKdBb^+mHe>$z>qG- zp3G_Nl1?ep%yH>g95Ca#GUI)$!|ff~_?@p@S;xA|={j5<3-D{T_lcb8fHYsBbypal zbKQnV=(7Q*AmefTZVv6bWbHCMSJp{KMgFO6ksmuW7BK#_JoNbbkNy0Vo!zx_6HX(+ zm#r(E^Nf`Xay1azzpgjJLN2a?%b)L!{bSq8I^%=jQ>GR!ZKdtWAUGAaKE9gl`@)Yj z{p{l$kXswS*e>Z8);m|R`3l{V4e5g8W&_&yDU6q*@3tpa#is)8YPmlA|Lm75_}7(j zUIYKD(NeNf7v&F{E?fP9raR#GYQzT}AbLib?=1D0K8`Zq#(C0V;@V1^k{$Yv)z5B% zM%V5KI!7kGUl>JaT3ueZ_{rJ&1&a&35sjjpcptJelab!(^dYw$UH1O$*DLhOwMID5 zOFW7&yCR=TJxTLJoATC&zj~+R6>!iPS<b&ke~*2#i?K5;yTVU%gJ!{qeG<BI?&Pwy zA39{uk+lgI=a0!YVP9iQ`UHn?JlmtbUvxXN<~M9aW9n%0=e5?1gyXs>8+-?1;jiq} z37e;H{Q9q?NON;I_Py-a$sXYW_v^v_mi;p4P40M_VmnAF;8b4u8gTFRFx&n5z4c6Z zmj5cRe(gAwy;i<>-b7{i8N7D~zx|EyK2m*-<gLF$YEzATnR6s>{T6wCxJEv~t*gYp z{aJ!V!e}OgtM)c}*xNuTdB;nT<KM~WzldK9$7ebIb)F*;9{QaCNx^!D{CM*o-i-ew zaq*l<5BRqbj^{=`P53#&r#=4^tT;#+zYi!W!O~aA6VG`Z=J<yA9nXP0Mfe56G5w!F z8tTjSI=pk7BY_rm7d-sCoQrsd^eztr`{v7p{r)8&`43|1oJ;vf7}?A<#0U|cu;kHx z9)3UUc$tWEe(vI<oDq`jJ?G&8(gz9q{V_St$-L<hpf7p)E(69NhqsUkFC(tN$c=jb zzmZA*`Aqm1GvRVSaQOeSDm`oz+c6M!j7PFZJru`jjmk-nazs4nQI05|^C-vIF^|fr zjdFbEG)Fl;oYGJ*dzK>=SI#uQpxYL>gMh;%I^aN_5Ebr`uuDfOktA`3<*~UL-K<fG z<`BrEQ;Q*97c{JW)FWLg9(yTQnIc9+%a2`@vw*js;PAs3nd2oovN7-@pUs@u2nRMQ zm<`SCwSy-PW6rNp0J7b~Bi0sC6MptU!$~~jkz1~uCCHtxoM)&*wqpLeS(Y8V?7B8| zp8NB}NB{c6m9rlkPF2o$6pmNUU=-+Y@eIbsLM6|}N9dRIDfQotkK)g}|BD_^Ki~Kz zkH>#QLsCAoaWnAanT=bHRs4-DmGc|7Hdk=Cb*0jlTd6O$>rLc|XH?$QoAT4fc!uQ7 z?G>85c{t)QJ3qE(@q0K^(b=`t4^>>xJFZ8bP4w%uzio_Y8?W__EA~V)_C>rSS8Juk zuH_`pyfIn+2IrSAvIc?OT66s?tmVkoiR<4ld{5=WI*#n&SpF%;C)z)a3g2D)`Y(-b z`qgjww?i~%3Um5Ue^WUe;K{~J&-rD8hj6%uJFoEFMeT(o3E$F8^gSbcS85Y$D$28g zZ?On=KX#yCet~cBU>jn`X`XAime(r6-OaK=?Y#y%i>*^_1-`HS8GYPlTXV0f*7sO_ zT_N#xG}|Y|wltaupXD2Eo@Dg!y!I`zlGcfsi})O>51ehSi2U|mBDlB4IP7E5EAE3@ zKG~~E?_dxGMnegBgl!*X+sf)`t(j!jv1;xG`CeOGrzr{+aN_!))=vt^mhGRhH&*q{ zOmB0viw(!SmTf;t@*<fnM7x!+)(59~M&1l4kJ7z;vCe|lMX0L~_n6?D&ZhH?)z|jn zzheK5daORLtI(BPa~=1Z`}yD&-Yr_Gzy?q8ReSo$w(#9?-j~i@AkOxO!=6Q=xMzrq zZIdjwYCav~;IZ+E{ezb+F3hzw?`$a1&r|sl-*YGsZ+*mN%K6N@7vVeFnum8%u3>27 z%fG6pWDD7ddl|^dy44{r2vr^AEsR2=SP$(=<7nqAm<yj49ML|!hxDq=-6$^_*q*7@ z(&Y!<b36lItLddW3NGj6c2S@D8~b<Rn|h@lWCiQco|}?<>if%S9L3{wne;d8BCX5$ zp>f`6ZtHBwPq8ddSK$r)D*Z0vn!3Q>?Qc)(1n|3RKO#NKzGxfs=GBj4AIrYmu~r{r z-D%NaT-kr}Yxke;-kmBVo*Uh0v)(7VqF<4&wKnm$YCe3G_1Ky^#_9<&F8xxLW8|Qr zJNf!AjV8bPE%hndbSRZq>u_tWEeAdan9}QO<&&I6I_uq>wep$%u<-zTLXWGxt5xfp zRk04!m(Z)1dQJDmeL?i%P4t&8iwEzx2TA-5#1|Fs{WbP=Ka;h3Mr|nd1bEW>uT!^2 z+|C&ev@?ZU5geYf_-fpQvv`tii*R13k$)rcJ8I-_Ail3gew{sNuaW;f$U^qpQ9rAE zYtX18>a-GcB43niqm^_4<NPmX#=~>zdpQ^fg-2X760Mpwj__>asWYeagWPO{E!rIe zAB7z!-LX;d{r(-`|3az9^jy1*7f<H;t!#?EtVv#A-En}iq;F_r<43xw4_Md|tWkQu zu8IrqgG*M*b&isswqI~urP~Lx^-#xMj5Q}LKE-$9e~7w|rQzXE?}0avr;a>}rAk|R zu`iBO&v>f6ZM3(EvT@AOS*X5L`X=!+q_3`urt%~Ew)g9}OV6}<dkT71*ZJB((k-5{ zZA$a;J|P^>!E|MKTvH!qY##AAzFVeo^fbEI&LGO(VNLMwQ&$6ZgtL4r$!Yv%gT?;i z^py@_+^zI&;<rNg@f!Jc?y*+>`-m5vvhYWV@2vs<QFzm)c$dM3Qcnd}_|z3?mX60x zu`;4xYy-Ub7=2OaT;p9B8t1cc(=>lwXADI9D69S~P)}NaN)9d(XYU!N@aqP@gW%as zo11yQhwxFJZ9Io4a~%Iqstr8%@zi?up>!JvFNLtlpm=KgI>_dz>T?>Z{w0manhyjS z`0m$ypGNZ0Rh{<g6R9*iYgQ@u7hfZPL9(2NU+O8_k#>%iG`9;@%Q%6*WYT!y`QI?@ zsi%t07Dfipk7j#Dex%yRyUl+g`8Qe6T7K`!x=G44rsW)Ze;#}#&sm=RsOyCkZP&He zDF2h>D^}NAwl|@9-K83^rE@Z6{_+DAUerBPqn>WcNQXCWDcT$`o+Vb_G8{8~Lit-` zn#O>%Uwj3(9o2Y$H@<@`ybW%KRv!cAP#R9DCr#g)bj<Y4+>7b*J_pJ2<Sy<Ucq)@m zx<1Pz#{OK0Pw6gr%GjS<u92UyKUYfz82fXBHS#m|=ejJu8ou_NiZ$}zMZ9!Ewms_S zFW1PwiTDdO@=ITwt&v}}JW(URWcYB6{69+kVvYRLHKR51OZW8G$S-}>q4<=ZG2Ku~ z@qgROYojThVST=IXV4#RBbW68u$n0w=hzJnr>rNgVyD+U(;`^FG<ebp@qB{zse#o@ zTrE55YGZ86)*{Lj9b<D0#?Vwap{{f|kA2P^E2|U4UsX?mXCryM@7A5ipOqEy@-#9m z9_`?XuE;5$>WllV1&0&Yv9yL3bv}CUJHHqAD!D_TF_Sk>-xdyn7x(6_0q@ecEAVpX zu7sD9tX9G63iEgIMD@3DHbVBH=JXMtGOq*eUfV?8D%v4Sr&K<p*FKL9k_}e2r^z>L z`KtS<^mlK_XJe*t31d~TJIb<L>M@=~TIPdpOkVQ%44!{67Vv#_FYv1H_54vUpRn{W zMujsNPp)=?>ru}a>ys>HWdQwWV<^004GX$aMl{r17dgB1yD8YR0maXVOSB8xDWmvU zk6<->+p6ZomIvB#Ufs@AQ@6&Aw0vjfz2LCRv=N?yeU*ND%GVu+n7a%t_1w64nEMH^ zsk#sU8fTflVRNj$t(+I|bxp~%=Eq%O4d?Ph;8dhPtfM~+;P0~a1>}nMOCGxXoVV-& zwY!^V1JB+T_FhXpvTwthC2`F@hIV=Xw)Xj1g)XmO_R=gk=zbo@;k&;@*?4|IdbJyT zG!N_+e8OREY{lkdI{(?qnU6No+6^WEeZ4oI(krr4<6SLQcd5;EX1P7GU9g82BaOYT zZmq8^ZM=Q9JNXCyU^Mv$|4{cx8cq0acB)-n<Zp^J1xJM&{fuJ)ehsdn8!PA2em&`e zXWh=THqAHTSqD7p1YUaHsrjbKqv|A0^GED18;fmT=yT7Tl<ye)VV)J=kyO8y4gaHx zr>!liG}%}hJN9{*_@1T4VbMJ`cgsm`?42m=U+yXS)>o==NiHjY+OGLoc&BqFK1K=e z6g;!%ZLOR5PUm+MFePI;Ly|BjIh9Il#&2g#$<w+2H|sQ?EPV7E%*j)DY5$`?+4&vm z)urTTW|xu;ou}Sud>3rVk>;1s!*rMI`eDJ1IuzQZXkd2*TK}VLneL3omnc^ph1NW4 z_I=OamXen^AFZ7K_}8nKGIP^2-j@gd=C3Ec$VOi+**LsvYev^2AB(i@zm|OD1>5N+ zUR+A^Vf*SImC`hWm#-Kusj=i5@^L}=(KQ-h){+m61u@O#qwyo9tH=lM@i6}#3v;*c zyIk1260cV-`pf#_O1Ze!`l78>(1%5<26XT`o^fsBpyDKlsd@7PePCAc;$OPY(huiI z8}c->i&EwGkk;jC>oVmgNNYit<RTuxuGd(BY@AjZ@RH0#ypAg_gV&?LFnnv^HAdRB z*PX>{nzTVr%i=XpTBoPk_>gLkaJDtQ6wd2?d}}WC1pKtVie9jFJl_w@?xQVwzdb~s zJ>Y$I5`8|6KA%OOFVJTf=^tH;d6Qw>eMPoLZ_s=B=S4T_?cgar-%eT=&pw_SZ-xJ~ zjX~Hdl-U5@hlraL{g4}#X|r&!H#Anu)`;iaET7szT(^(MF;07VI*T3gx>s;YJ>e{! zmr*$GtrSQf0tf7cbuYqO>1(w^VfEPs{EQ!Y#V>$|+N8FrO?~1kezmKUwN9=3VY{u9 zEVOIyr___o+FEC5N8Cf5_I6^=nXREYexI+YbZ%e$=53TO(}y*-4cnercdW90n(MrB z{nX=p{j?h1<s-gkpm&rtmoL{9#+M)cTdDN!O!~V1<VW|U(zX6mF5jQ*_)1KRIJ55G z<ZHy79XC5DFWUz?#=9b0IP?86@)t!1om~bm(Xd$R(V6DTc}U_#XNy-}@sBv^#!Q^X zPn)kyx?E{rrwMqHwLaftY$R;Fa(m->(!}dL@>j&qxEaP#m5IEiKIsVMtMh#2G%xcS zb!qICU841@e%33_kY??ZJX6-}KZ|o&Kt`KV?-dlc7R&R<MENpd8`IS`=-;oh*?lzX z6<zvO7q+jpn|!vn$v7eWG(S)tle-8%o*h?OipI~7uL#VBt<a1*hkehj6Pd{`tp|^b zI!}7(9nOFCBbzrdHm2xcHqWqRTlFtZy?v2<rYF5G?pPx&PrlJL(p1;@8fodh-wx+z z2l?BbpOPng_o4U6%RAtgbPfDU3ZwW*>la+?-Gk-v>%XjC-Z%F7#RrzJZX*H9c+dR) z>7(y@tvTq>+)ID+_i`@;9hy6L_{+Ix5C2;3{NZopo;$pni+dXAmfW*j_vcoOzg)hu zZzu12wer4~-|Y_Uy2E#9tt<CzN^fc}3Vsq7^k&qhzJ8K>3f^H)vi7w<cTVu&T~WN_ z9>JfdoP7u0`SlCX0U5~+E8gm;z-_kv@`P;0a{Zi**P2@HoYyTnHdwf#v*A-UZs6OW zf)UOi*m#yZAK_%`Zjr7l_2iDF&v+w`I-4&$Z3&*0_mZrB*AuCDWGUc@%rQRXRzwf= zy=8c@3@?H#|HVe?IeGAo+^O*Hq;zxcBxR2UIkGiG*@&8li55mb&JipNeknD+dbr^I zN%HFUGV7YP*O+RqSJ8ht6Y@tN0=8fnJj$2Xt@@MCzDxbjWp=Igt8+e{r|;=+);<N} zd6DtFb?M?q7mqRKdVlcsgO`4VI^%kQ^Ec>-5_BXjtYJKnyof!~<~m<`PP&JAbY-6i zouswOs24P6KBGL|Cy|=~S8YRP8{)d0-c#rNSFu0&d}ya+3tPbHDmx}!??8l;!LLnq zW$?+YH`m-_O6$X@AL5=+7r541E3C;!XsvT5@bbS*mDb=TZAEuIyzx5tdC~dVihb7N z_E|x7z)ziHQa#f3HDyNiKvV9_eEHr~UBxxpbJe<#9eZDM`|5u_a;^H7S9K5PxBuw- zQs*62?+;3T3e+FR6^$JV+nS*Id?sCbUg@ScNS9qui2Kl6r-;`$%Xy=$9%fuvi%wPV zc#<#sj^%atL2zr{T12s-r;ohX)+QCs=}h3yzt8NKX7FwCwHmcm;nuiTL)g~x=mX<Q zb2w^qyyN4v{DQZ<Az2Ze<${faqLX07JIjr(TZ+<kp?`{2_zT2!SzN%;WPm=MBhJon zmfmOmi7}8iv|*1^-r5w-M)qg=Z7b>4r;))G;ahsI+563Y*0R4`KEP`(hbw0{1N@-- zi{<oypWugdovU=*44(k6UFmm2bDhOp{-&MB%yS;Iz?rQE;dA&8lR-a|Ib?0>PlkPs zZU<*K8_C;5-e%rOYB74R$97R&pTJI09h1yQ0<P1@##*|gYF;dy1Z#P{?OmD-%eF(0 z4q6)Up|kO04V<SP=UK;j!Es&$&)7GXz$ZKZTU&?S;qM8?Gc(f18$-W4eq(aG)~CYw zT^_5fPm=bLkXF9epkd!8J1-c=G|LD7^KNU1Cze(UcgmN?gfM5JKQQhgbLq2?YmI+b zJqx*X_6IfgnT#0j%wJ>+8I6%A=GT3xvF#-BMmzAzM?dYWQ~Sbw9X6+Hh-u^#@2pJB z=kq>|v#IZi{LC!*q7Kv9Fvh*m&ZUi2X?gmOy(8=LAbU^m*NPT(CHn8Njb_VY=i7UL zhMUIPrHvajHXANqy)&tU_iLU1yDH7Vt+{JC$#Ez5*Te_tRhCb!K`3443K(mOU1yb# zbFJcMu&vjs^Ma3SYn?e1Uqn|Mm(zTq&JN;jj6Y7>#fwyXji$6Wfj-P1bEY4h*HJ#X z`=Ttn27md+vRrpX*+uV3$5o}1FP?R6v$WVJXe%_*yYu2rmAq!?b;xi>){qawU3}#{ z%wUW!c^{D76Z6O>O}$6h@RdzT-M&p5IyHaZ%DvHgDy%YUyTJ<buqJ)T6M3}O`{-Ad z3+QX-Ie-)GMqf)Y+fO#6Y`-0r4qnhM&a3+sx3yT_YwVQ_Azx-MWay=Hj%E2G&qHY$ zyoQWbor$B)xb7_3vT;SU-}Yo(7~fL#CO+q9l#Kt*6Z5Bd@>=AH_q{T$y?=@Z<?)nq z);AsY%aJa?mTqAkMfd-hK55LP#d^JOOBTv`%Y6hm>X%pKE$g3(E(`Jzc#`<O!YF0a zx-PAwweQeNdO__>o%PfjPv{4Mc4hor_ZTkHJ%(3G9z}QP`%D(!Ek%1bxXE!+pD@{~ z^mFzCgI<fU)s~oN&HCZTaI6bDm1zb~oM%=2tNB{}OZ**8Y;QArMsH0Udg=I`i>IJ* zsmJ)#uy4xV>$mq2wvI5*yNA19{Chdr?Dk$re=>MKdV4K9w5AT#TrbjOd1Jlqh){dO z{G0U}_w)X}_Rs9@sF#R~{BA1sus1qowjt|t+@r#K*U*FauF)~P%YY1|zvH8Mp2;~h zIS3r%OX<$~0sP2xI1}&s*K`8$wswSVqdYe5+q!mGCo~z1>)b8}+HcieX11=S{%`UV z&g*Mkpj~xo3`qAkaFCvnEb+~O)k(G0^~GBH?zoRh<IJ^o_*|=MKbp1h{v%p*W_>#J zh58FAdqHFKan^*FEj{$FVyP$T^**RRWaZ$?Kx~7T(K>b)ZR}_KjNdn~y>8+Lh`Y`8 zp6L^n-4=M+WN_?$DXUw$q)X!fG`zQhTTXh|>n`8bWVBwE9Zug|W-K*X*^gYX{s~=e z93xKhWb(t=kwf^StPGPTol_|F1il}+)5e~{)?%IQbI|vN4`KQlIFWAoQ{e`s!@FV% zR-CJ;Z>ww>7WIgRVV^s$GipsF*i0r%R>%INFXEp`Q+<sQCV7_$TYJz8WqXPE1Il-I zap%m~rd_j+yX2`MRdxvb;xKWMu6E8=^(u~hb_d7L-&ucwu<<gi0pIZ*=cVYXd`273 z=XB1s8(e4xUPbPTXg$)C6pxIAy%FI<yzY=_C%%n%%O7EZe=!Z4aBInFx3AbQy=pQ- zyvD&U()zrO5vMfnn)BIthyLV_t=GmqS#+4i68M7OAovZPyMuWZcwgYYHBWCNUHE6y z+mxPai{Y3G%Z{$OcTKtYor_WAy4IRaulMn1=;Kd&A3uT4Jjr^>DaxNXd`EJiE3v*X z>(6P{sg8A#wr^9N*5ps_E7r*lK1TjyOB)}a)l+E}PJVG#>HZx_%Twv=^9Q`#iBeB; zf;s4{%^}~L7YvWfhq>GP>m}<aI+FYXWe(#%kfMRo4)~n0pY(C%4gI+OInxipPClV| zVCnt!=Pe!jFW*@Iob<AExop<B?p*3gPLk(vz$eLj_!RAu&N=LJ+JgBFj_Hwuu?+M0 zd@5g($|t>Y$Z2_$_=vaGbwxALa@pd89@1Sn3xw6~C7$Eno>uvV$MOw^-*|~}DLp2s z4(4~0{mI*#$$KKuCqE0EQLjJl0}PXXDCqETe_p94IRrm)M|e`-jhrKqy?P_(vnP43 zXS{mFo}6jtxsLEzdp==jw7E+uc?#WMBu;x^r+C)$JWZU=Uls5_YtNPB3{S1+pW~@_ zPo8Bz>qY#x;lFH8&ZF_v`zp$F)3%kI^!&|)pW%6n;wf_)|2y$tv}eHMcI6>W>(zJQ zKhJZOwt!om<XU@WJHY7_{x`Y*Df~CP{}_JVf2cg-nf8?BU&eov`xo%v=zhjk+bdTd z(e`$aAH*;ID!vatdm85N!mn{!@$LBE=Kdo78{DrmLmS**z^^rU^4DF)ul-^9UlzaM z;lVJzzcug^**M7C-x~MQ{A6GCUE7{`Yj<T|weG0KWY?ofH*(XFcwF39<x=}lS29k$ zZ+8DM{#)HYfM0VU@JV{{=iT3lUvmt_x8c9d{Vn+4;{HbbZ<T+Px@k|5wj5&4sXpXw zYF<&CWcVO&pQ}wn8_(XXIN3Vt2eGX~$?`k*ZK7X<w5l@(LrL%ERNA^UJilYnXa`K; zFPaYDwY*R7gf^9W659LM!W>~GX=N>9GTIc_{tdK2XC@{?8*)3U({s{M!@>=?!;F>P z0YBOB;Euf^Sn%eK-Y4F2rks{)7ioV69_shBnR4izXd4pV6X4qZg3(0ymwM82@s>$1 z`&zo)!2L_$_Lb98_yBj~(8k`)<vLUNNM@kZwAZWl39r{Oc-2>xPw`LXi^=Lym9M6i z*;pxBRllQ1J=64K&6!l^4)AXlUA7j@*4UvtGrN=AS@@9KS4_GrZ`gy8?wv*s3*u3_ zPIQClx<h&KH@m+HzxZl;G^WGrfl`m14`)1L%;KEkUCZmZW9s%s@{E!e)=1xP_TQ+> z(kN*f(?&&~BX{O!`;*(2iBp}o^*&kXQkwEqU?$u{di!zWfMNHDD&61(U9S1s&q$vS zDPD3UyVc_cOBr}e$?db22irq)iES&l4^VE<<|RpTUirln;KlKwJm!;c2s*cHdt!s+ zWT>J$*4aK~7*`Y59UfPCrw#fTU0DO!AR3(zuhfPk@3njC6b@%U-(SCkeRTjkf0;G3 zrR}SK{IiugPSc{&7^l~>?_z5og4_FK(`bLP{ycC~^{hXkdV)@?Upms03}`&_IyH_C zSlK7mA8`NrZBMKhKNPR=OnAz_KK5<NjbuUnG>xNRg3sRq2cxH#r>*NHQ_&7tRDIi? zY&vIg^rPh)>X(S)3{cZ);A%`jCe{~7S35L@0;B#SX&NJDiTAO;{-XS98+M)a(zw54 zeE=Ik^HW<7EAQd>92Hn6DQEH}9ut;Mb-SSc3~~L0`vabDR$GSfzllD?-Oa1It8ggv z`PDxqujHUV@*RI)>U^!qSMQT=77bZLw(~$ywz`NLrM$)k^~YZ5dX_j_ucJMR>+m*r zlQvFTmuQSlmB{b?NpM2_U$D7$x5+WzvUR!yTPXD{^HNXJ;qu)<*>2#7uF}K(Dfrz! zM?OS+r<H+Me8*OGYi(8ILMQ%SFW*a^Uc!A=j`#B9Cl9>L3%1E1cBbgtM%Z}U`{b>c z@yo73CT_iie^fXuGq!pEZ6~hX(pPT1sJtm!x9{6zc4&nCT)_F(v*a^=mfmYNuARlw z+DfYYLGycEX8UH&Twsf+PY6$)V?qYk?I1jwsz2zUAb*MDV)(OfmqdA`oZ6p;BRtlI z6Xs$y;MBcR4X5tetHRN`OyqkwcT)@I@d&f`$;QKiC*DRK8u-$<{C%iL@(^`^WT2R; zSMnem85wAlt_V1oZYaxv;=}&sN@JnaW8+j6-+NbXk^H3j&K^nm{)JJ^3&cCgFm}fY z%WJ$dnQSKPGI`4x{LKNMTTbK8%47?1EtbA=%Sx%o#%Y^Vq03AL!A1Qh>fQ6oA8|?b zF_Qt|Q<0UNbcOKHd;ytDUL-7f6oL*fkEOORseYm{3>!f7EYpoU=M#lhhWUI7zRhO^ zU*o&rA0*!~_#v5OKCxeGfWjfYb~ak-VNaaCBDuzYjPzr7k1~$v`y6RG3wuG9t~wYq z1dH=CZS&Njd4%b3>TM%_kT}^PE&a*OXGRk{+n0UkWL9*e&Zsv>DR;uc#!J}`H}w*? z<L;vNZ|gV@;_HjvFR7zZ`Be@&nw^re0UAZWZ7VkqlFoU2%4Tc;!Dh^V+qNfeIxBx_ z%s(tW8u{4`{@g(l;^LUkIK6%KKm8o#;(S$dG4499P`b`Bt1|ZAG>|IaY~?o^PY&1~ zbWftOZ(!e@+ZRbYQQB1h^uBfXEbi-L9eIK?W$&%5)dDBZxyx%*@Q1!(bsX4QgukJ` zh`tA0{)+g^{lRtK0ncY?raz#43Au}PAUEQ-V8%Y!o`Tt&hAEoDvt{Czc`jPMVAE+0 zV2SV&&jpJIKju64#rem!CvUhA+R$*2^Cl<AV|}1>W4YhtjbHbb!v*O&*$v7I?&W^v zYlMnxbbi^GwDbobUEG(4rkQ)$Ik)>Y@u@#)Xb^6%lYWuT6+P%<REE|uJ*^jvpHA!0 z7U<);z~G__0^Na$9TDhG9@b8h6x|~Z(sP1iG_x@|@J2j1Ai6PMOVNJgc%c1_)_%zZ zaC^}MvLjWO!Ns;woX*nfOced&g<WNOffx8=3vJwywk@}>{z1zA-8e41;uuxxNtPq- z==Fn^=50!+5g*43vq70_JWX8e1HuWNxKU%Qcvlx?zdtFQug2x~U#;}V!b?i)qK(^E zzy6!4_~(FQvL{=vl)^C$i@kBq(0*e~dDC>R${*59PM1SpU-I@=%@G`y&W@LPFTMh6 zt^DlEfBio)7kN32)ArThw==z>2Q;#N5pBsDc$H;it$JwRKZ$hN_T+{^>N_JGYw=I< zMu!UjD!5<4zYRgoLjQ376}o|u;U9A?cvP87{odUXpWY`ov{(4|yBkyS8V_spFX9;L zy&8St?eG4yw<*oPvb=hleM{gPyb`Rfo<Hu<RLfPs%f=)1)zVe@{`?;?@3~Y>my7SI zw12(U_g$`kC-q)${bk{h;$4M5DH;b^d|vn2WcitGyXi0QBUgiUx5FyyXWCbRRb4l7 z{rpX|Px~t=zJJ5cI|jL~?^vrHoG0kBwCj?={9*EDbV&VK#Z~K&{2_x`85gVidzB3p zZFTDR`IhBn%o~+{4QttX$$42meXgYb&|rFOrG65BoYOL2MHiD6Y{mM4QjhH&U=Ojc zVCy!?uW?s?BY6&!cF1*KqA>kYYprUh=}-1hhw<}Xq1##X1I7}|>*ew>FY`UE>&Vs= zO>G~6ydj<TmA+8FqYNuOXWiuc3t>EvovQZOenaW~Uf%4xdb4FY!)|L5K1P=JD+~|S z^ZtM{ZON7KuJ9t}FJ$UC9PMX|5B)tK+OzH@!7la0JrLWMvHZw#Tr)Me^hK>tA7nlE zAZ2Dv{_HG$GRu0F-WkG%t(zuo+F>7)-_sOd=0EvF#}iwMdD%aQHQ(jFl3Dr5|BCYo z8x(#sRuDd<G#`r%50x(oZ`yz4&U(h$+{?tdeVRKbzuP+v<Qvz#$@hhFtVOBs+g?BA zq{m}9;T+2~UZdP{s@x=gvnO4K7M+LXxsky&UfcWGX?*nk#56u_DY(t}7ioVX1HVuM zzUW&h^(3RLjp@v1g1?ZtqfdF%F6C*g$`fQ%@;~l$&$d5<r`fi#Z^{<o%uMby<<skb zI@>rrn%JCZ(4YPO?Dc1tKRf){=Fg%(*V+#~p>_oR=V$RtM#BEW$_p2%cdc?q;knn9 zD}*|7iPv?>pD+9KMSouO=LLVB_vbl(p7rM$f1dK^34b2<=P`dC_UA!=F8g!QpR@j) z^yjEQhy6L|&whXQ`m@WQ9sX?dXVIU{{%rJTK~MDYam`=XNc)PPEjcTlz!}`^{cKk| zXY2L?W66Fy=c2QX<uf)8w|Nb?XMI1rkNxcUK7Q5v9-LWe<IGC?zT);p_Tf7jQ#z<e zXF55rSpPh2%4w{j|1=^ScGi5kVC$8#*}2n@x$g41%gQI4!TXu?i}E+#1sq>5-awvn z#5I?Cm`B-|R^NwTcgb~V-X`6GZDwahIpbvK(zmak*BuIWj-56(TE7B@onvmZGdzN4 zYk^1JZ|8~>wzX4q+S8O(INYbuR)5CBwoXd^vkKo`4ClR>Hz)MxJbJDW&PmrlV|ad{ z{+#Q`XGIIAdG8uDugOd5vGbJMSAY9GoY`87UsdP6tIui~4;p~u=WB8=IIZoh>+;6j z@iJ{ppHqkDE!~-WO6~M9ti^B%W1ei=7%zWV%kukDT!*nHW4w&^ndqr+<TcWcE6$4} zXHD@v6xFj8+IqdhCml9CQt7Hcoi6y-^X^0&bZU1QRUPfD(XjWFT*BX`x=Z0*1=fCR zeiKFYT0ZzGTem6Qzo4=0cS)Y1gY;vBDg47ak=A}H<E+M+g5(}sXHb6OkUGO={EPdP zW{2sV<o?jNV?XkKV||Fan~85zeX?7G3;u|Q+N`xJonsrv-|X_)wT67Ic`ndtC>d*s z?eY3#cbQ(GfAUVzYkR$~n>;$M!mkkX%P&6kKCx<j2Al<>FiQUs{8CS#i`FCw+q#qF zX$_of_o@BZdeE7B3x89%UqcsO4F>as%RhY`Fsk||csEBn(LSR^N0M7mTS+s%TYG}d z9s8Mh7w3TCDLBXoc^m!wRm^LB!ev<SV|;T8*EiA!4VSIOavyD~(dVk#ES;pfy^V%X zDfBP9|A2ls6!G-<*tRCOx57OMPuTiXEH4>mUA$)h473dI3uN267H(BC9Ql!w%~-Fs z-)!e6{49Ft$2tcic^yc#MK~7Lz|nZ`{Xk{P{U9at={mDCvG)e(zegi&Q{~p|E15f1 zs@^+;Pr}J$(Di?1p60qL_LmHtn)<=$P|<OsTNsNsCgadbb$PfvE=3v7mwK?1H|36N zEjo;~Bg3*C&?U`rEn4s0mI92dZL^k6xE?%>FW$F=r(`MiS$kJ4?u#it-48Nh8|$nu zUunD5#AD5|+h}+NjqE*J**@v9$NBR;wf}ppS2mozKk>cP%NXD4W4!613|(#AfxRQ8 zeH1x<c@%w-lIPeDr1xV#F!^Wht} ?t;r9%io8lQbV;J|;MR$C2p;`dpFkksqg= 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≀~SrV^GcX6d~69ZUfQB$zOMz8e~%LB=1$(eopRm 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 O!u1Z`^8-wsH~$aERWm^V diff --git a/README.html b/README.html index 6d8d191..25f211f 100644 --- a/README.html +++ b/README.html @@ -89,13 +89,13 @@ Installing GRRLIB This guide is for Windows. If you are using Linux, I am going to presume you are smart enough to convert these instructions. -GRRLIB is supplied as source code. -libjpeg is supplied as source code -libpngu is supplied as source code -libpng is supplied as source code -libz is supplied as source code -libfat is supplied with devkitpro (Ie. preinstalled) -libfreetype is supplied as a precompiled library +GRRLIB is supplied as source code. +libjpeg is supplied as source code +libpngu is supplied as source code +libpng is supplied as source code +libz is supplied as source code +libfreetype is supplied as source code +libfat is supplied with devkitpro (Ie. preinstalled) Because of the way dependencies work, the libraries must be installed in reverse order. @@ -123,7 +123,7 @@ Next up the list is libjpeg *2 Next up the list is libfreetype *2 c: cd \grr\trunk\GRRLIB\lib\freetype - make install + make clean all install *2 A Windows batch-file and a Linux shell-script are included which will install the libz, libpng, libpngu, libjpeg and libfreetype libraries in a