From 6df492246251dfd8d204b187da0954e328f48153 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Sat, 22 Oct 2022 13:57:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3uos-x64=E4=B8=8A=E9=9D=A2tess?= =?UTF-8?q?eract=E7=9A=84=E7=BC=96=E8=AF=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build/linux/HGImgProc/HGImgProc.cbp | 4 + .../uos/amd64/include/leptonica/allheaders.h | 2771 +++++++++++++++++ .../uos/amd64/include/leptonica/alltypes.h | 68 + .../uos/amd64/include/leptonica/array.h | 109 + .../amd64/include/leptonica/array_internal.h | 135 + .../uos/amd64/include/leptonica/arrayaccess.h | 270 ++ .../uos/amd64/include/leptonica/bbuffer.h | 60 + .../uos/amd64/include/leptonica/bilateral.h | 136 + .../uos/amd64/include/leptonica/bmf.h | 64 + .../uos/amd64/include/leptonica/bmfdata.h | 636 ++++ .../uos/amd64/include/leptonica/bmp.h | 124 + .../uos/amd64/include/leptonica/ccbord.h | 62 + .../amd64/include/leptonica/ccbord_internal.h | 107 + .../uos/amd64/include/leptonica/colorfill.h | 67 + .../uos/amd64/include/leptonica/dewarp.h | 191 ++ .../uos/amd64/include/leptonica/endianness.h | 11 + .../uos/amd64/include/leptonica/environ.h | 608 ++++ .../uos/amd64/include/leptonica/gplot.h | 96 + .../uos/amd64/include/leptonica/hashmap.h | 134 + .../uos/amd64/include/leptonica/heap.h | 87 + .../uos/amd64/include/leptonica/imageio.h | 250 ++ .../uos/amd64/include/leptonica/jbclass.h | 142 + .../uos/amd64/include/leptonica/leptwin.h | 45 + .../uos/amd64/include/leptonica/list.h | 90 + .../uos/amd64/include/leptonica/morph.h | 225 ++ .../uos/amd64/include/leptonica/pix.h | 1094 +++++++ .../amd64/include/leptonica/pix_internal.h | 426 +++ .../uos/amd64/include/leptonica/ptra.h | 97 + .../uos/amd64/include/leptonica/queue.h | 77 + .../uos/amd64/include/leptonica/rbtree.h | 91 + .../uos/amd64/include/leptonica/readbarcode.h | 239 ++ .../uos/amd64/include/leptonica/recog.h | 264 ++ .../uos/amd64/include/leptonica/regutils.h | 141 + .../uos/amd64/include/leptonica/stack.h | 70 + .../uos/amd64/include/leptonica/stringcode.h | 61 + .../uos/amd64/include/leptonica/sudoku.h | 77 + .../uos/amd64/include/leptonica/watershed.h | 64 + .../leptonica/LeptonicaConfig-version.cmake | 14 + .../lib/cmake/leptonica/LeptonicaConfig.cmake | 46 + .../leptonica/LeptonicaTargets-release.cmake | 19 + .../cmake/leptonica/LeptonicaTargets.cmake | 99 + .../leptonica/uos/amd64/lib/libleptonica.a | Bin 0 -> 5100066 bytes .../leptonica/uos/amd64/lib/pkgconfig/lept.pc | 11 + .../uos/amd64/include/tesseract/baseapi.h | 2 +- .../uos/amd64/include/tesseract/version.h | 8 +- .../lib/cmake/tesseract/TesseractConfig.cmake | 63 + .../tesseract/TesseractConfigVersion.cmake | 46 + .../tesseract/TesseractTargets-release.cmake | 19 + .../cmake/tesseract/TesseractTargets.cmake | 98 + .../uos/amd64/lib/libtesseract.a | Bin 0 -> 7721782 bytes .../uos/amd64/lib/pkgconfig/tesseract.pc | 13 + 51 files changed, 9626 insertions(+), 5 deletions(-) create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/allheaders.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/alltypes.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/array.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/array_internal.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/arrayaccess.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/bbuffer.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/bilateral.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/bmf.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/bmfdata.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/bmp.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/ccbord.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/ccbord_internal.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/colorfill.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/dewarp.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/endianness.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/environ.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/gplot.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/hashmap.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/heap.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/imageio.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/jbclass.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/leptwin.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/list.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/morph.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/pix.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/pix_internal.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/ptra.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/queue.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/rbtree.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/readbarcode.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/recog.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/regutils.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/stack.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/stringcode.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/sudoku.h create mode 100644 third_party/leptonica/uos/amd64/include/leptonica/watershed.h create mode 100644 third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaConfig-version.cmake create mode 100644 third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaConfig.cmake create mode 100644 third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaTargets-release.cmake create mode 100644 third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaTargets.cmake create mode 100644 third_party/leptonica/uos/amd64/lib/libleptonica.a create mode 100644 third_party/leptonica/uos/amd64/lib/pkgconfig/lept.pc create mode 100644 third_party/ocr/tesseract-ocr/uos/amd64/lib/cmake/tesseract/TesseractConfig.cmake create mode 100644 third_party/ocr/tesseract-ocr/uos/amd64/lib/cmake/tesseract/TesseractConfigVersion.cmake create mode 100644 third_party/ocr/tesseract-ocr/uos/amd64/lib/cmake/tesseract/TesseractTargets-release.cmake create mode 100644 third_party/ocr/tesseract-ocr/uos/amd64/lib/cmake/tesseract/TesseractTargets.cmake create mode 100644 third_party/ocr/tesseract-ocr/uos/amd64/lib/libtesseract.a create mode 100644 third_party/ocr/tesseract-ocr/uos/amd64/lib/pkgconfig/tesseract.pc diff --git a/build/linux/HGImgProc/HGImgProc.cbp b/build/linux/HGImgProc/HGImgProc.cbp index 98e26031..58319482 100644 --- a/build/linux/HGImgProc/HGImgProc.cbp +++ b/build/linux/HGImgProc/HGImgProc.cbp @@ -29,6 +29,8 @@ + + @@ -59,6 +61,8 @@ + + diff --git a/third_party/leptonica/uos/amd64/include/leptonica/allheaders.h b/third_party/leptonica/uos/amd64/include/leptonica/allheaders.h new file mode 100644 index 00000000..8ec1c38c --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/allheaders.h @@ -0,0 +1,2771 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_ALLHEADERS_H +#define LEPTONICA_ALLHEADERS_H + + +#define LIBLEPT_MAJOR_VERSION 1 +#define LIBLEPT_MINOR_VERSION 83 +#define LIBLEPT_PATCH_VERSION 0 + +#include "alltypes.h" + +#ifndef NO_PROTOS +/* + * These prototypes were autogen'd by xtractprotos, v. 1.5 + */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +LEPT_DLL extern PIX * pixCleanBackgroundToWhite ( PIX *pixs, PIX *pixim, PIX *pixg, l_float32 gamma, l_int32 blackval, l_int32 whiteval ); +LEPT_DLL extern PIX * pixBackgroundNormSimple ( PIX *pixs, PIX *pixim, PIX *pixg ); +LEPT_DLL extern PIX * pixBackgroundNorm ( PIX *pixs, PIX *pixim, PIX *pixg, l_int32 sx, l_int32 sy, l_int32 thresh, l_int32 mincount, l_int32 bgval, l_int32 smoothx, l_int32 smoothy ); +LEPT_DLL extern PIX * pixBackgroundNormMorph ( PIX *pixs, PIX *pixim, l_int32 reduction, l_int32 size, l_int32 bgval ); +LEPT_DLL extern l_ok pixBackgroundNormGrayArray ( PIX *pixs, PIX *pixim, l_int32 sx, l_int32 sy, l_int32 thresh, l_int32 mincount, l_int32 bgval, l_int32 smoothx, l_int32 smoothy, PIX **ppixd ); +LEPT_DLL extern l_ok pixBackgroundNormRGBArrays ( PIX *pixs, PIX *pixim, PIX *pixg, l_int32 sx, l_int32 sy, l_int32 thresh, l_int32 mincount, l_int32 bgval, l_int32 smoothx, l_int32 smoothy, PIX **ppixr, PIX **ppixg, PIX **ppixb ); +LEPT_DLL extern l_ok pixBackgroundNormGrayArrayMorph ( PIX *pixs, PIX *pixim, l_int32 reduction, l_int32 size, l_int32 bgval, PIX **ppixd ); +LEPT_DLL extern l_ok pixBackgroundNormRGBArraysMorph ( PIX *pixs, PIX *pixim, l_int32 reduction, l_int32 size, l_int32 bgval, PIX **ppixr, PIX **ppixg, PIX **ppixb ); +LEPT_DLL extern l_ok pixGetBackgroundGrayMap ( PIX *pixs, PIX *pixim, l_int32 sx, l_int32 sy, l_int32 thresh, l_int32 mincount, PIX **ppixd ); +LEPT_DLL extern l_ok pixGetBackgroundRGBMap ( PIX *pixs, PIX *pixim, PIX *pixg, l_int32 sx, l_int32 sy, l_int32 thresh, l_int32 mincount, PIX **ppixmr, PIX **ppixmg, PIX **ppixmb ); +LEPT_DLL extern l_ok pixGetBackgroundGrayMapMorph ( PIX *pixs, PIX *pixim, l_int32 reduction, l_int32 size, PIX **ppixm ); +LEPT_DLL extern l_ok pixGetBackgroundRGBMapMorph ( PIX *pixs, PIX *pixim, l_int32 reduction, l_int32 size, PIX **ppixmr, PIX **ppixmg, PIX **ppixmb ); +LEPT_DLL extern l_ok pixFillMapHoles ( PIX *pix, l_int32 nx, l_int32 ny, l_int32 filltype ); +LEPT_DLL extern PIX * pixExtendByReplication ( PIX *pixs, l_int32 addw, l_int32 addh ); +LEPT_DLL extern l_ok pixSmoothConnectedRegions ( PIX *pixs, PIX *pixm, l_int32 factor ); +LEPT_DLL extern PIX * pixGetInvBackgroundMap ( PIX *pixs, l_int32 bgval, l_int32 smoothx, l_int32 smoothy ); +LEPT_DLL extern PIX * pixApplyInvBackgroundGrayMap ( PIX *pixs, PIX *pixm, l_int32 sx, l_int32 sy ); +LEPT_DLL extern PIX * pixApplyInvBackgroundRGBMap ( PIX *pixs, PIX *pixmr, PIX *pixmg, PIX *pixmb, l_int32 sx, l_int32 sy ); +LEPT_DLL extern PIX * pixApplyVariableGrayMap ( PIX *pixs, PIX *pixg, l_int32 target ); +LEPT_DLL extern PIX * pixGlobalNormRGB ( PIX *pixd, PIX *pixs, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 mapval ); +LEPT_DLL extern PIX * pixGlobalNormNoSatRGB ( PIX *pixd, PIX *pixs, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 factor, l_float32 rank ); +LEPT_DLL extern l_ok pixThresholdSpreadNorm ( PIX *pixs, l_int32 filtertype, l_int32 edgethresh, l_int32 smoothx, l_int32 smoothy, l_float32 gamma, l_int32 minval, l_int32 maxval, l_int32 targetthresh, PIX **ppixth, PIX **ppixb, PIX **ppixd ); +LEPT_DLL extern PIX * pixBackgroundNormFlex ( PIX *pixs, l_int32 sx, l_int32 sy, l_int32 smoothx, l_int32 smoothy, l_int32 delta ); +LEPT_DLL extern PIX * pixContrastNorm ( PIX *pixd, PIX *pixs, l_int32 sx, l_int32 sy, l_int32 mindiff, l_int32 smoothx, l_int32 smoothy ); +LEPT_DLL extern PIX * pixAffineSampledPta ( PIX *pixs, PTA *ptad, PTA *ptas, l_int32 incolor ); +LEPT_DLL extern PIX * pixAffineSampled ( PIX *pixs, l_float32 *vc, l_int32 incolor ); +LEPT_DLL extern PIX * pixAffinePta ( PIX *pixs, PTA *ptad, PTA *ptas, l_int32 incolor ); +LEPT_DLL extern PIX * pixAffine ( PIX *pixs, l_float32 *vc, l_int32 incolor ); +LEPT_DLL extern PIX * pixAffinePtaColor ( PIX *pixs, PTA *ptad, PTA *ptas, l_uint32 colorval ); +LEPT_DLL extern PIX * pixAffineColor ( PIX *pixs, l_float32 *vc, l_uint32 colorval ); +LEPT_DLL extern PIX * pixAffinePtaGray ( PIX *pixs, PTA *ptad, PTA *ptas, l_uint8 grayval ); +LEPT_DLL extern PIX * pixAffineGray ( PIX *pixs, l_float32 *vc, l_uint8 grayval ); +LEPT_DLL extern PIX * pixAffinePtaWithAlpha ( PIX *pixs, PTA *ptad, PTA *ptas, PIX *pixg, l_float32 fract, l_int32 border ); +LEPT_DLL extern l_ok getAffineXformCoeffs ( PTA *ptas, PTA *ptad, l_float32 **pvc ); +LEPT_DLL extern l_ok affineInvertXform ( l_float32 *vc, l_float32 **pvci ); +LEPT_DLL extern l_ok affineXformSampledPt ( l_float32 *vc, l_int32 x, l_int32 y, l_int32 *pxp, l_int32 *pyp ); +LEPT_DLL extern l_ok affineXformPt ( l_float32 *vc, l_int32 x, l_int32 y, l_float32 *pxp, l_float32 *pyp ); +LEPT_DLL extern l_ok linearInterpolatePixelColor ( l_uint32 *datas, l_int32 wpls, l_int32 w, l_int32 h, l_float32 x, l_float32 y, l_uint32 colorval, l_uint32 *pval ); +LEPT_DLL extern l_ok linearInterpolatePixelGray ( l_uint32 *datas, l_int32 wpls, l_int32 w, l_int32 h, l_float32 x, l_float32 y, l_int32 grayval, l_int32 *pval ); +LEPT_DLL extern l_int32 gaussjordan ( l_float32 **a, l_float32 *b, l_int32 n ); +LEPT_DLL extern PIX * pixAffineSequential ( PIX *pixs, PTA *ptad, PTA *ptas, l_int32 bw, l_int32 bh ); +LEPT_DLL extern l_float32 * createMatrix2dTranslate ( l_float32 transx, l_float32 transy ); +LEPT_DLL extern l_float32 * createMatrix2dScale ( l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern l_float32 * createMatrix2dRotate ( l_float32 xc, l_float32 yc, l_float32 angle ); +LEPT_DLL extern PTA * ptaTranslate ( PTA *ptas, l_float32 transx, l_float32 transy ); +LEPT_DLL extern PTA * ptaScale ( PTA *ptas, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PTA * ptaRotate ( PTA *ptas, l_float32 xc, l_float32 yc, l_float32 angle ); +LEPT_DLL extern BOXA * boxaTranslate ( BOXA *boxas, l_float32 transx, l_float32 transy ); +LEPT_DLL extern BOXA * boxaScale ( BOXA *boxas, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern BOXA * boxaRotate ( BOXA *boxas, l_float32 xc, l_float32 yc, l_float32 angle ); +LEPT_DLL extern PTA * ptaAffineTransform ( PTA *ptas, l_float32 *mat ); +LEPT_DLL extern BOXA * boxaAffineTransform ( BOXA *boxas, l_float32 *mat ); +LEPT_DLL extern l_ok l_productMatVec ( l_float32 *mat, l_float32 *vecs, l_float32 *vecd, l_int32 size ); +LEPT_DLL extern l_ok l_productMat2 ( l_float32 *mat1, l_float32 *mat2, l_float32 *matd, l_int32 size ); +LEPT_DLL extern l_ok l_productMat3 ( l_float32 *mat1, l_float32 *mat2, l_float32 *mat3, l_float32 *matd, l_int32 size ); +LEPT_DLL extern l_ok l_productMat4 ( l_float32 *mat1, l_float32 *mat2, l_float32 *mat3, l_float32 *mat4, l_float32 *matd, l_int32 size ); +LEPT_DLL extern l_int32 l_getDataBit ( const void *line, l_int32 n ); +LEPT_DLL extern void l_setDataBit ( void *line, l_int32 n ); +LEPT_DLL extern void l_clearDataBit ( void *line, l_int32 n ); +LEPT_DLL extern void l_setDataBitVal ( void *line, l_int32 n, l_int32 val ); +LEPT_DLL extern l_int32 l_getDataDibit ( const void *line, l_int32 n ); +LEPT_DLL extern void l_setDataDibit ( void *line, l_int32 n, l_int32 val ); +LEPT_DLL extern void l_clearDataDibit ( void *line, l_int32 n ); +LEPT_DLL extern l_int32 l_getDataQbit ( const void *line, l_int32 n ); +LEPT_DLL extern void l_setDataQbit ( void *line, l_int32 n, l_int32 val ); +LEPT_DLL extern void l_clearDataQbit ( void *line, l_int32 n ); +LEPT_DLL extern l_int32 l_getDataByte ( const void *line, l_int32 n ); +LEPT_DLL extern void l_setDataByte ( void *line, l_int32 n, l_int32 val ); +LEPT_DLL extern l_int32 l_getDataTwoBytes ( const void *line, l_int32 n ); +LEPT_DLL extern void l_setDataTwoBytes ( void *line, l_int32 n, l_int32 val ); +LEPT_DLL extern l_int32 l_getDataFourBytes ( const void *line, l_int32 n ); +LEPT_DLL extern void l_setDataFourBytes ( void *line, l_int32 n, l_int32 val ); +LEPT_DLL extern char * barcodeDispatchDecoder ( char *barstr, l_int32 format, l_int32 debugflag ); +LEPT_DLL extern l_int32 barcodeFormatIsSupported ( l_int32 format ); +LEPT_DLL extern NUMA * pixFindBaselines ( PIX *pixs, PTA **ppta, PIXA *pixadb ); +LEPT_DLL extern PIX * pixDeskewLocal ( PIX *pixs, l_int32 nslices, l_int32 redsweep, l_int32 redsearch, l_float32 sweeprange, l_float32 sweepdelta, l_float32 minbsdelta ); +LEPT_DLL extern l_ok pixGetLocalSkewTransform ( PIX *pixs, l_int32 nslices, l_int32 redsweep, l_int32 redsearch, l_float32 sweeprange, l_float32 sweepdelta, l_float32 minbsdelta, PTA **pptas, PTA **pptad ); +LEPT_DLL extern NUMA * pixGetLocalSkewAngles ( PIX *pixs, l_int32 nslices, l_int32 redsweep, l_int32 redsearch, l_float32 sweeprange, l_float32 sweepdelta, l_float32 minbsdelta, l_float32 *pa, l_float32 *pb, l_int32 debug ); +LEPT_DLL extern L_BBUFFER * bbufferCreate ( const l_uint8 *indata, l_int32 nalloc ); +LEPT_DLL extern void bbufferDestroy ( L_BBUFFER **pbb ); +LEPT_DLL extern l_uint8 * bbufferDestroyAndSaveData ( L_BBUFFER **pbb, size_t *pnbytes ); +LEPT_DLL extern l_ok bbufferRead ( L_BBUFFER *bb, l_uint8 *src, l_int32 nbytes ); +LEPT_DLL extern l_ok bbufferReadStream ( L_BBUFFER *bb, FILE *fp, l_int32 nbytes ); +LEPT_DLL extern l_ok bbufferExtendArray ( L_BBUFFER *bb, l_int32 nbytes ); +LEPT_DLL extern l_ok bbufferWrite ( L_BBUFFER *bb, l_uint8 *dest, size_t nbytes, size_t *pnout ); +LEPT_DLL extern l_ok bbufferWriteStream ( L_BBUFFER *bb, FILE *fp, size_t nbytes, size_t *pnout ); +LEPT_DLL extern PIX * pixBilateral ( PIX *pixs, l_float32 spatial_stdev, l_float32 range_stdev, l_int32 ncomps, l_int32 reduction ); +LEPT_DLL extern PIX * pixBilateralGray ( PIX *pixs, l_float32 spatial_stdev, l_float32 range_stdev, l_int32 ncomps, l_int32 reduction ); +LEPT_DLL extern PIX * pixBilateralExact ( PIX *pixs, L_KERNEL *spatial_kel, L_KERNEL *range_kel ); +LEPT_DLL extern PIX * pixBilateralGrayExact ( PIX *pixs, L_KERNEL *spatial_kel, L_KERNEL *range_kel ); +LEPT_DLL extern PIX* pixBlockBilateralExact ( PIX *pixs, l_float32 spatial_stdev, l_float32 range_stdev ); +LEPT_DLL extern L_KERNEL * makeRangeKernel ( l_float32 range_stdev ); +LEPT_DLL extern PIX * pixBilinearSampledPta ( PIX *pixs, PTA *ptad, PTA *ptas, l_int32 incolor ); +LEPT_DLL extern PIX * pixBilinearSampled ( PIX *pixs, l_float32 *vc, l_int32 incolor ); +LEPT_DLL extern PIX * pixBilinearPta ( PIX *pixs, PTA *ptad, PTA *ptas, l_int32 incolor ); +LEPT_DLL extern PIX * pixBilinear ( PIX *pixs, l_float32 *vc, l_int32 incolor ); +LEPT_DLL extern PIX * pixBilinearPtaColor ( PIX *pixs, PTA *ptad, PTA *ptas, l_uint32 colorval ); +LEPT_DLL extern PIX * pixBilinearColor ( PIX *pixs, l_float32 *vc, l_uint32 colorval ); +LEPT_DLL extern PIX * pixBilinearPtaGray ( PIX *pixs, PTA *ptad, PTA *ptas, l_uint8 grayval ); +LEPT_DLL extern PIX * pixBilinearGray ( PIX *pixs, l_float32 *vc, l_uint8 grayval ); +LEPT_DLL extern PIX * pixBilinearPtaWithAlpha ( PIX *pixs, PTA *ptad, PTA *ptas, PIX *pixg, l_float32 fract, l_int32 border ); +LEPT_DLL extern l_ok getBilinearXformCoeffs ( PTA *ptas, PTA *ptad, l_float32 **pvc ); +LEPT_DLL extern l_ok bilinearXformSampledPt ( l_float32 *vc, l_int32 x, l_int32 y, l_int32 *pxp, l_int32 *pyp ); +LEPT_DLL extern l_ok bilinearXformPt ( l_float32 *vc, l_int32 x, l_int32 y, l_float32 *pxp, l_float32 *pyp ); +LEPT_DLL extern l_ok pixOtsuAdaptiveThreshold ( PIX *pixs, l_int32 sx, l_int32 sy, l_int32 smoothx, l_int32 smoothy, l_float32 scorefract, PIX **ppixth, PIX **ppixd ); +LEPT_DLL extern PIX * pixOtsuThreshOnBackgroundNorm ( PIX *pixs, PIX *pixim, l_int32 sx, l_int32 sy, l_int32 thresh, l_int32 mincount, l_int32 bgval, l_int32 smoothx, l_int32 smoothy, l_float32 scorefract, l_int32 *pthresh ); +LEPT_DLL extern PIX * pixMaskedThreshOnBackgroundNorm ( PIX *pixs, PIX *pixim, l_int32 sx, l_int32 sy, l_int32 thresh, l_int32 mincount, l_int32 smoothx, l_int32 smoothy, l_float32 scorefract, l_int32 *pthresh ); +LEPT_DLL extern l_ok pixSauvolaBinarizeTiled ( PIX *pixs, l_int32 whsize, l_float32 factor, l_int32 nx, l_int32 ny, PIX **ppixth, PIX **ppixd ); +LEPT_DLL extern l_ok pixSauvolaBinarize ( PIX *pixs, l_int32 whsize, l_float32 factor, l_int32 addborder, PIX **ppixm, PIX **ppixsd, PIX **ppixth, PIX **ppixd ); +LEPT_DLL extern PIX * pixSauvolaOnContrastNorm ( PIX *pixs, l_int32 mindiff, PIX **ppixn, PIX **ppixth ); +LEPT_DLL extern PIX * pixThreshOnDoubleNorm ( PIX *pixs, l_int32 mindiff ); +LEPT_DLL extern l_ok pixThresholdByConnComp ( PIX *pixs, PIX *pixm, l_int32 start, l_int32 end, l_int32 incr, l_float32 thresh48, l_float32 threshdiff, l_int32 *pglobthresh, PIX **ppixd, l_int32 debugflag ); +LEPT_DLL extern l_ok pixThresholdByHisto ( PIX *pixs, l_int32 factor, l_int32 halfw, l_int32 skip, l_int32 *pthresh, PIX **ppixd, NUMA **pnahisto, PIX **ppixhisto ); +LEPT_DLL extern PIX * pixExpandBinaryReplicate ( PIX *pixs, l_int32 xfact, l_int32 yfact ); +LEPT_DLL extern PIX * pixExpandBinaryPower2 ( PIX *pixs, l_int32 factor ); +LEPT_DLL extern PIX * pixReduceBinary2 ( PIX *pixs, l_uint8 *intab ); +LEPT_DLL extern PIX * pixReduceRankBinaryCascade ( PIX *pixs, l_int32 level1, l_int32 level2, l_int32 level3, l_int32 level4 ); +LEPT_DLL extern PIX * pixReduceRankBinary2 ( PIX *pixs, l_int32 level, l_uint8 *intab ); +LEPT_DLL extern l_uint8 * makeSubsampleTab2x ( void ); +LEPT_DLL extern PIX * pixBlend ( PIX *pixs1, PIX *pixs2, l_int32 x, l_int32 y, l_float32 fract ); +LEPT_DLL extern PIX * pixBlendMask ( PIX *pixd, PIX *pixs1, PIX *pixs2, l_int32 x, l_int32 y, l_float32 fract, l_int32 type ); +LEPT_DLL extern PIX * pixBlendGray ( PIX *pixd, PIX *pixs1, PIX *pixs2, l_int32 x, l_int32 y, l_float32 fract, l_int32 type, l_int32 transparent, l_uint32 transpix ); +LEPT_DLL extern PIX * pixBlendGrayInverse ( PIX *pixd, PIX *pixs1, PIX *pixs2, l_int32 x, l_int32 y, l_float32 fract ); +LEPT_DLL extern PIX * pixBlendColor ( PIX *pixd, PIX *pixs1, PIX *pixs2, l_int32 x, l_int32 y, l_float32 fract, l_int32 transparent, l_uint32 transpix ); +LEPT_DLL extern PIX * pixBlendColorByChannel ( PIX *pixd, PIX *pixs1, PIX *pixs2, l_int32 x, l_int32 y, l_float32 rfract, l_float32 gfract, l_float32 bfract, l_int32 transparent, l_uint32 transpix ); +LEPT_DLL extern PIX * pixBlendGrayAdapt ( PIX *pixd, PIX *pixs1, PIX *pixs2, l_int32 x, l_int32 y, l_float32 fract, l_int32 shift ); +LEPT_DLL extern PIX * pixFadeWithGray ( PIX *pixs, PIX *pixb, l_float32 factor, l_int32 type ); +LEPT_DLL extern PIX * pixBlendHardLight ( PIX *pixd, PIX *pixs1, PIX *pixs2, l_int32 x, l_int32 y, l_float32 fract ); +LEPT_DLL extern l_ok pixBlendCmap ( PIX *pixs, PIX *pixb, l_int32 x, l_int32 y, l_int32 sindex ); +LEPT_DLL extern PIX * pixBlendWithGrayMask ( PIX *pixs1, PIX *pixs2, PIX *pixg, l_int32 x, l_int32 y ); +LEPT_DLL extern PIX * pixBlendBackgroundToColor ( PIX *pixd, PIX *pixs, BOX *box, l_uint32 color, l_float32 gamma, l_int32 minval, l_int32 maxval ); +LEPT_DLL extern PIX * pixMultiplyByColor ( PIX *pixd, PIX *pixs, BOX *box, l_uint32 color ); +LEPT_DLL extern PIX * pixAlphaBlendUniform ( PIX *pixs, l_uint32 color ); +LEPT_DLL extern PIX * pixAddAlphaToBlend ( PIX *pixs, l_float32 fract, l_int32 invert ); +LEPT_DLL extern PIX * pixSetAlphaOverWhite ( PIX *pixs ); +LEPT_DLL extern l_ok pixLinearEdgeFade ( PIX *pixs, l_int32 dir, l_int32 fadeto, l_float32 distfract, l_float32 maxfade ); +LEPT_DLL extern L_BMF * bmfCreate ( const char *dir, l_int32 fontsize ); +LEPT_DLL extern void bmfDestroy ( L_BMF **pbmf ); +LEPT_DLL extern PIX * bmfGetPix ( L_BMF *bmf, char chr ); +LEPT_DLL extern l_ok bmfGetWidth ( L_BMF *bmf, char chr, l_int32 *pw ); +LEPT_DLL extern l_ok bmfGetBaseline ( L_BMF *bmf, char chr, l_int32 *pbaseline ); +LEPT_DLL extern PIXA * pixaGetFont ( const char *dir, l_int32 fontsize, l_int32 *pbl0, l_int32 *pbl1, l_int32 *pbl2 ); +LEPT_DLL extern l_ok pixaSaveFont ( const char *indir, const char *outdir, l_int32 fontsize ); +LEPT_DLL extern PIX * pixReadStreamBmp ( FILE *fp ); +LEPT_DLL extern PIX * pixReadMemBmp ( const l_uint8 *cdata, size_t size ); +LEPT_DLL extern l_ok pixWriteStreamBmp ( FILE *fp, PIX *pix ); +LEPT_DLL extern l_ok pixWriteMemBmp ( l_uint8 **pfdata, size_t *pfsize, PIX *pixs ); +LEPT_DLL extern PIXA * l_bootnum_gen1 ( void ); +LEPT_DLL extern PIXA * l_bootnum_gen2 ( void ); +LEPT_DLL extern PIXA * l_bootnum_gen3 ( void ); +LEPT_DLL extern PIXA * l_bootnum_gen4 ( l_int32 nsamp ); +LEPT_DLL extern BOX * boxCreate ( l_int32 x, l_int32 y, l_int32 w, l_int32 h ); +LEPT_DLL extern BOX * boxCreateValid ( l_int32 x, l_int32 y, l_int32 w, l_int32 h ); +LEPT_DLL extern BOX * boxCopy ( BOX *box ); +LEPT_DLL extern BOX * boxClone ( BOX *box ); +LEPT_DLL extern void boxDestroy ( BOX **pbox ); +LEPT_DLL extern l_ok boxGetGeometry ( const BOX *box, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok boxSetGeometry ( BOX *box, l_int32 x, l_int32 y, l_int32 w, l_int32 h ); +LEPT_DLL extern l_ok boxGetSideLocations ( const BOX *box, l_int32 *pl, l_int32 *pr, l_int32 *pt, l_int32 *pb ); +LEPT_DLL extern l_ok boxSetSideLocations ( BOX *box, l_int32 l, l_int32 r, l_int32 t, l_int32 b ); +LEPT_DLL extern l_ok boxIsValid ( BOX *box, l_int32 *pvalid ); +LEPT_DLL extern BOXA * boxaCreate ( l_int32 n ); +LEPT_DLL extern BOXA * boxaCopy ( BOXA *boxa, l_int32 copyflag ); +LEPT_DLL extern void boxaDestroy ( BOXA **pboxa ); +LEPT_DLL extern l_ok boxaAddBox ( BOXA *boxa, BOX *box, l_int32 copyflag ); +LEPT_DLL extern l_ok boxaExtendArray ( BOXA *boxa ); +LEPT_DLL extern l_ok boxaExtendArrayToSize ( BOXA *boxa, size_t size ); +LEPT_DLL extern l_int32 boxaGetCount ( const BOXA *boxa ); +LEPT_DLL extern l_int32 boxaGetValidCount ( BOXA *boxa ); +LEPT_DLL extern BOX * boxaGetBox ( BOXA *boxa, l_int32 index, l_int32 accessflag ); +LEPT_DLL extern BOX * boxaGetValidBox ( BOXA *boxa, l_int32 index, l_int32 accessflag ); +LEPT_DLL extern NUMA * boxaFindInvalidBoxes ( BOXA *boxa ); +LEPT_DLL extern l_ok boxaGetBoxGeometry ( BOXA *boxa, l_int32 index, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok boxaIsFull ( BOXA *boxa, l_int32 *pfull ); +LEPT_DLL extern l_ok boxaReplaceBox ( BOXA *boxa, l_int32 index, BOX *box ); +LEPT_DLL extern l_ok boxaInsertBox ( BOXA *boxa, l_int32 index, BOX *box ); +LEPT_DLL extern l_ok boxaRemoveBox ( BOXA *boxa, l_int32 index ); +LEPT_DLL extern l_ok boxaRemoveBoxAndSave ( BOXA *boxa, l_int32 index, BOX **pbox ); +LEPT_DLL extern BOXA * boxaSaveValid ( BOXA *boxas, l_int32 copyflag ); +LEPT_DLL extern l_ok boxaInitFull ( BOXA *boxa, BOX *box ); +LEPT_DLL extern l_ok boxaClear ( BOXA *boxa ); +LEPT_DLL extern BOXAA * boxaaCreate ( l_int32 n ); +LEPT_DLL extern BOXAA * boxaaCopy ( BOXAA *baas, l_int32 copyflag ); +LEPT_DLL extern void boxaaDestroy ( BOXAA **pbaa ); +LEPT_DLL extern l_ok boxaaAddBoxa ( BOXAA *baa, BOXA *ba, l_int32 copyflag ); +LEPT_DLL extern l_ok boxaaExtendArray ( BOXAA *baa ); +LEPT_DLL extern l_ok boxaaExtendArrayToSize ( BOXAA *baa, l_int32 size ); +LEPT_DLL extern l_int32 boxaaGetCount ( BOXAA *baa ); +LEPT_DLL extern l_int32 boxaaGetBoxCount ( BOXAA *baa ); +LEPT_DLL extern BOXA * boxaaGetBoxa ( BOXAA *baa, l_int32 index, l_int32 accessflag ); +LEPT_DLL extern BOX * boxaaGetBox ( BOXAA *baa, l_int32 iboxa, l_int32 ibox, l_int32 accessflag ); +LEPT_DLL extern l_ok boxaaInitFull ( BOXAA *baa, BOXA *boxa ); +LEPT_DLL extern l_ok boxaaExtendWithInit ( BOXAA *baa, l_int32 maxindex, BOXA *boxa ); +LEPT_DLL extern l_ok boxaaReplaceBoxa ( BOXAA *baa, l_int32 index, BOXA *boxa ); +LEPT_DLL extern l_ok boxaaInsertBoxa ( BOXAA *baa, l_int32 index, BOXA *boxa ); +LEPT_DLL extern l_ok boxaaRemoveBoxa ( BOXAA *baa, l_int32 index ); +LEPT_DLL extern l_ok boxaaAddBox ( BOXAA *baa, l_int32 index, BOX *box, l_int32 accessflag ); +LEPT_DLL extern BOXAA * boxaaReadFromFiles ( const char *dirname, const char *substr, l_int32 first, l_int32 nfiles ); +LEPT_DLL extern BOXAA * boxaaRead ( const char *filename ); +LEPT_DLL extern BOXAA * boxaaReadStream ( FILE *fp ); +LEPT_DLL extern BOXAA * boxaaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok boxaaWrite ( const char *filename, BOXAA *baa ); +LEPT_DLL extern l_ok boxaaWriteStream ( FILE *fp, BOXAA *baa ); +LEPT_DLL extern l_ok boxaaWriteMem ( l_uint8 **pdata, size_t *psize, BOXAA *baa ); +LEPT_DLL extern BOXA * boxaRead ( const char *filename ); +LEPT_DLL extern BOXA * boxaReadStream ( FILE *fp ); +LEPT_DLL extern BOXA * boxaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok boxaWriteDebug ( const char *filename, BOXA *boxa ); +LEPT_DLL extern l_ok boxaWrite ( const char *filename, BOXA *boxa ); +LEPT_DLL extern l_ok boxaWriteStream ( FILE *fp, BOXA *boxa ); +LEPT_DLL extern l_ok boxaWriteStderr ( BOXA *boxa ); +LEPT_DLL extern l_ok boxaWriteMem ( l_uint8 **pdata, size_t *psize, BOXA *boxa ); +LEPT_DLL extern l_ok boxPrintStreamInfo ( FILE *fp, BOX *box ); +LEPT_DLL extern l_ok boxContains ( BOX *box1, BOX *box2, l_int32 *presult ); +LEPT_DLL extern l_ok boxIntersects ( BOX *box1, BOX *box2, l_int32 *presult ); +LEPT_DLL extern BOXA * boxaContainedInBox ( BOXA *boxas, BOX *box ); +LEPT_DLL extern l_ok boxaContainedInBoxCount ( BOXA *boxa, BOX *box, l_int32 *pcount ); +LEPT_DLL extern l_ok boxaContainedInBoxa ( BOXA *boxa1, BOXA *boxa2, l_int32 *pcontained ); +LEPT_DLL extern BOXA * boxaIntersectsBox ( BOXA *boxas, BOX *box ); +LEPT_DLL extern l_ok boxaIntersectsBoxCount ( BOXA *boxa, BOX *box, l_int32 *pcount ); +LEPT_DLL extern BOXA * boxaClipToBox ( BOXA *boxas, BOX *box ); +LEPT_DLL extern BOXA * boxaCombineOverlaps ( BOXA *boxas, PIXA *pixadb ); +LEPT_DLL extern l_ok boxaCombineOverlapsInPair ( BOXA *boxas1, BOXA *boxas2, BOXA **pboxad1, BOXA **pboxad2, PIXA *pixadb ); +LEPT_DLL extern BOX * boxOverlapRegion ( BOX *box1, BOX *box2 ); +LEPT_DLL extern BOX * boxBoundingRegion ( BOX *box1, BOX *box2 ); +LEPT_DLL extern l_ok boxOverlapFraction ( BOX *box1, BOX *box2, l_float32 *pfract ); +LEPT_DLL extern l_ok boxOverlapArea ( BOX *box1, BOX *box2, l_int32 *parea ); +LEPT_DLL extern BOXA * boxaHandleOverlaps ( BOXA *boxas, l_int32 op, l_int32 range, l_float32 min_overlap, l_float32 max_ratio, NUMA **pnamap ); +LEPT_DLL extern l_ok boxOverlapDistance ( BOX *box1, BOX *box2, l_int32 *ph_ovl, l_int32 *pv_ovl ); +LEPT_DLL extern l_ok boxSeparationDistance ( BOX *box1, BOX *box2, l_int32 *ph_sep, l_int32 *pv_sep ); +LEPT_DLL extern l_ok boxCompareSize ( BOX *box1, BOX *box2, l_int32 type, l_int32 *prel ); +LEPT_DLL extern l_ok boxContainsPt ( BOX *box, l_float32 x, l_float32 y, l_int32 *pcontains ); +LEPT_DLL extern BOX * boxaGetNearestToPt ( BOXA *boxa, l_int32 x, l_int32 y ); +LEPT_DLL extern BOX * boxaGetNearestToLine ( BOXA *boxa, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok boxaFindNearestBoxes ( BOXA *boxa, l_int32 dist_select, l_int32 range, NUMAA **pnaaindex, NUMAA **pnaadist ); +LEPT_DLL extern l_ok boxaGetNearestByDirection ( BOXA *boxa, l_int32 i, l_int32 dir, l_int32 dist_select, l_int32 range, l_int32 *pindex, l_int32 *pdist ); +LEPT_DLL extern l_ok boxGetCenter ( const BOX *box, l_float32 *pcx, l_float32 *pcy ); +LEPT_DLL extern l_ok boxIntersectByLine ( const BOX *box, l_int32 x, l_int32 y, l_float32 slope, l_int32 *px1, l_int32 *py1, l_int32 *px2, l_int32 *py2, l_int32 *pn ); +LEPT_DLL extern BOX * boxClipToRectangle ( BOX *box, l_int32 wi, l_int32 hi ); +LEPT_DLL extern l_ok boxClipToRectangleParams ( BOX *box, l_int32 w, l_int32 h, l_int32 *pxstart, l_int32 *pystart, l_int32 *pxend, l_int32 *pyend, l_int32 *pbw, l_int32 *pbh ); +LEPT_DLL extern BOX * boxRelocateOneSide ( BOX *boxd, BOX *boxs, l_int32 loc, l_int32 sideflag ); +LEPT_DLL extern BOXA * boxaAdjustSides ( BOXA *boxas, l_int32 delleft, l_int32 delright, l_int32 deltop, l_int32 delbot ); +LEPT_DLL extern l_ok boxaAdjustBoxSides ( BOXA *boxa, l_int32 index, l_int32 delleft, l_int32 delright, l_int32 deltop, l_int32 delbot ); +LEPT_DLL extern BOX * boxAdjustSides ( BOX *boxd, BOX *boxs, l_int32 delleft, l_int32 delright, l_int32 deltop, l_int32 delbot ); +LEPT_DLL extern BOXA * boxaSetSide ( BOXA *boxad, BOXA *boxas, l_int32 side, l_int32 val, l_int32 thresh ); +LEPT_DLL extern l_ok boxSetSide ( BOX *boxs, l_int32 side, l_int32 val, l_int32 thresh ); +LEPT_DLL extern BOXA * boxaAdjustWidthToTarget ( BOXA *boxad, BOXA *boxas, l_int32 sides, l_int32 target, l_int32 thresh ); +LEPT_DLL extern BOXA * boxaAdjustHeightToTarget ( BOXA *boxad, BOXA *boxas, l_int32 sides, l_int32 target, l_int32 thresh ); +LEPT_DLL extern l_ok boxEqual ( BOX *box1, BOX *box2, l_int32 *psame ); +LEPT_DLL extern l_ok boxaEqual ( BOXA *boxa1, BOXA *boxa2, l_int32 maxdist, NUMA **pnaindex, l_int32 *psame ); +LEPT_DLL extern l_ok boxSimilar ( BOX *box1, BOX *box2, l_int32 leftdiff, l_int32 rightdiff, l_int32 topdiff, l_int32 botdiff, l_int32 *psimilar ); +LEPT_DLL extern l_ok boxaSimilar ( BOXA *boxa1, BOXA *boxa2, l_int32 leftdiff, l_int32 rightdiff, l_int32 topdiff, l_int32 botdiff, l_int32 debug, l_int32 *psimilar, NUMA **pnasim ); +LEPT_DLL extern l_ok boxaJoin ( BOXA *boxad, BOXA *boxas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern l_ok boxaaJoin ( BOXAA *baad, BOXAA *baas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern l_ok boxaSplitEvenOdd ( BOXA *boxa, l_int32 fillflag, BOXA **pboxae, BOXA **pboxao ); +LEPT_DLL extern BOXA * boxaMergeEvenOdd ( BOXA *boxae, BOXA *boxao, l_int32 fillflag ); +LEPT_DLL extern BOXA * boxaTransform ( BOXA *boxas, l_int32 shiftx, l_int32 shifty, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern BOX * boxTransform ( BOX *box, l_int32 shiftx, l_int32 shifty, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern BOXA * boxaTransformOrdered ( BOXA *boxas, l_int32 shiftx, l_int32 shifty, l_float32 scalex, l_float32 scaley, l_int32 xcen, l_int32 ycen, l_float32 angle, l_int32 order ); +LEPT_DLL extern BOX * boxTransformOrdered ( BOX *boxs, l_int32 shiftx, l_int32 shifty, l_float32 scalex, l_float32 scaley, l_int32 xcen, l_int32 ycen, l_float32 angle, l_int32 order ); +LEPT_DLL extern BOXA * boxaRotateOrth ( BOXA *boxas, l_int32 w, l_int32 h, l_int32 rotation ); +LEPT_DLL extern BOX * boxRotateOrth ( BOX *box, l_int32 w, l_int32 h, l_int32 rotation ); +LEPT_DLL extern BOXA * boxaShiftWithPta ( BOXA *boxas, PTA *pta, l_int32 dir ); +LEPT_DLL extern BOXA * boxaSort ( BOXA *boxas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex ); +LEPT_DLL extern BOXA * boxaBinSort ( BOXA *boxas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex ); +LEPT_DLL extern BOXA * boxaSortByIndex ( BOXA *boxas, NUMA *naindex ); +LEPT_DLL extern BOXAA * boxaSort2d ( BOXA *boxas, NUMAA **pnaad, l_int32 delta1, l_int32 delta2, l_int32 minh1 ); +LEPT_DLL extern BOXAA * boxaSort2dByIndex ( BOXA *boxas, NUMAA *naa ); +LEPT_DLL extern l_ok boxaExtractAsNuma ( BOXA *boxa, NUMA **pnal, NUMA **pnat, NUMA **pnar, NUMA **pnab, NUMA **pnaw, NUMA **pnah, l_int32 keepinvalid ); +LEPT_DLL extern l_ok boxaExtractAsPta ( BOXA *boxa, PTA **pptal, PTA **pptat, PTA **pptar, PTA **pptab, PTA **pptaw, PTA **pptah, l_int32 keepinvalid ); +LEPT_DLL extern PTA * boxaExtractCorners ( BOXA *boxa, l_int32 loc ); +LEPT_DLL extern l_ok boxaGetRankVals ( BOXA *boxa, l_float32 fract, l_int32 *px, l_int32 *py, l_int32 *pr, l_int32 *pb, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok boxaGetMedianVals ( BOXA *boxa, l_int32 *px, l_int32 *py, l_int32 *pr, l_int32 *pb, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok boxaGetAverageSize ( BOXA *boxa, l_float32 *pw, l_float32 *ph ); +LEPT_DLL extern l_ok boxaaGetExtent ( BOXAA *baa, l_int32 *pw, l_int32 *ph, BOX **pbox, BOXA **pboxa ); +LEPT_DLL extern BOXA * boxaaFlattenToBoxa ( BOXAA *baa, NUMA **pnaindex, l_int32 copyflag ); +LEPT_DLL extern BOXA * boxaaFlattenAligned ( BOXAA *baa, l_int32 num, BOX *fillerbox, l_int32 copyflag ); +LEPT_DLL extern BOXAA * boxaEncapsulateAligned ( BOXA *boxa, l_int32 num, l_int32 copyflag ); +LEPT_DLL extern BOXAA * boxaaTranspose ( BOXAA *baas ); +LEPT_DLL extern l_ok boxaaAlignBox ( BOXAA *baa, BOX *box, l_int32 delta, l_int32 *pindex ); +LEPT_DLL extern PIX * pixMaskConnComp ( PIX *pixs, l_int32 connectivity, BOXA **pboxa ); +LEPT_DLL extern PIX * pixMaskBoxa ( PIX *pixd, PIX *pixs, BOXA *boxa, l_int32 op ); +LEPT_DLL extern PIX * pixPaintBoxa ( PIX *pixs, BOXA *boxa, l_uint32 val ); +LEPT_DLL extern PIX * pixSetBlackOrWhiteBoxa ( PIX *pixs, BOXA *boxa, l_int32 op ); +LEPT_DLL extern PIX * pixPaintBoxaRandom ( PIX *pixs, BOXA *boxa ); +LEPT_DLL extern PIX * pixBlendBoxaRandom ( PIX *pixs, BOXA *boxa, l_float32 fract ); +LEPT_DLL extern PIX * pixDrawBoxa ( PIX *pixs, BOXA *boxa, l_int32 width, l_uint32 val ); +LEPT_DLL extern PIX * pixDrawBoxaRandom ( PIX *pixs, BOXA *boxa, l_int32 width ); +LEPT_DLL extern PIX * boxaaDisplay ( PIX *pixs, BOXAA *baa, l_int32 linewba, l_int32 linewb, l_uint32 colorba, l_uint32 colorb, l_int32 w, l_int32 h ); +LEPT_DLL extern PIXA * pixaDisplayBoxaa ( PIXA *pixas, BOXAA *baa, l_int32 colorflag, l_int32 width ); +LEPT_DLL extern BOXA * pixSplitIntoBoxa ( PIX *pixs, l_int32 minsum, l_int32 skipdist, l_int32 delta, l_int32 maxbg, l_int32 maxcomps, l_int32 remainder ); +LEPT_DLL extern BOXA * pixSplitComponentIntoBoxa ( PIX *pix, BOX *box, l_int32 minsum, l_int32 skipdist, l_int32 delta, l_int32 maxbg, l_int32 maxcomps, l_int32 remainder ); +LEPT_DLL extern BOXA * makeMosaicStrips ( l_int32 w, l_int32 h, l_int32 direction, l_int32 size ); +LEPT_DLL extern l_ok boxaCompareRegions ( BOXA *boxa1, BOXA *boxa2, l_int32 areathresh, l_int32 *pnsame, l_float32 *pdiffarea, l_float32 *pdiffxor, PIX **ppixdb ); +LEPT_DLL extern BOX * pixSelectLargeULComp ( PIX *pixs, l_float32 areaslop, l_int32 yslop, l_int32 connectivity ); +LEPT_DLL extern BOX * boxaSelectLargeULBox ( BOXA *boxas, l_float32 areaslop, l_int32 yslop ); +LEPT_DLL extern BOXA * boxaSelectRange ( BOXA *boxas, l_int32 first, l_int32 last, l_int32 copyflag ); +LEPT_DLL extern BOXAA * boxaaSelectRange ( BOXAA *baas, l_int32 first, l_int32 last, l_int32 copyflag ); +LEPT_DLL extern BOXA * boxaSelectBySize ( BOXA *boxas, l_int32 width, l_int32 height, l_int32 type, l_int32 relation, l_int32 *pchanged ); +LEPT_DLL extern NUMA * boxaMakeSizeIndicator ( BOXA *boxa, l_int32 width, l_int32 height, l_int32 type, l_int32 relation ); +LEPT_DLL extern BOXA * boxaSelectByArea ( BOXA *boxas, l_int32 area, l_int32 relation, l_int32 *pchanged ); +LEPT_DLL extern NUMA * boxaMakeAreaIndicator ( BOXA *boxa, l_int32 area, l_int32 relation ); +LEPT_DLL extern BOXA * boxaSelectByWHRatio ( BOXA *boxas, l_float32 ratio, l_int32 relation, l_int32 *pchanged ); +LEPT_DLL extern NUMA * boxaMakeWHRatioIndicator ( BOXA *boxa, l_float32 ratio, l_int32 relation ); +LEPT_DLL extern BOXA * boxaSelectWithIndicator ( BOXA *boxas, NUMA *na, l_int32 *pchanged ); +LEPT_DLL extern BOXA * boxaPermutePseudorandom ( BOXA *boxas ); +LEPT_DLL extern BOXA * boxaPermuteRandom ( BOXA *boxad, BOXA *boxas ); +LEPT_DLL extern l_ok boxaSwapBoxes ( BOXA *boxa, l_int32 i, l_int32 j ); +LEPT_DLL extern PTA * boxaConvertToPta ( BOXA *boxa, l_int32 ncorners ); +LEPT_DLL extern BOXA * ptaConvertToBoxa ( PTA *pta, l_int32 ncorners ); +LEPT_DLL extern PTA * boxConvertToPta ( BOX *box, l_int32 ncorners ); +LEPT_DLL extern BOX * ptaConvertToBox ( PTA *pta ); +LEPT_DLL extern l_ok boxaGetExtent ( BOXA *boxa, l_int32 *pw, l_int32 *ph, BOX **pbox ); +LEPT_DLL extern l_ok boxaGetCoverage ( BOXA *boxa, l_int32 wc, l_int32 hc, l_int32 exactflag, l_float32 *pfract ); +LEPT_DLL extern l_ok boxaaSizeRange ( BOXAA *baa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh ); +LEPT_DLL extern l_ok boxaSizeRange ( BOXA *boxa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh ); +LEPT_DLL extern l_ok boxaLocationRange ( BOXA *boxa, l_int32 *pminx, l_int32 *pminy, l_int32 *pmaxx, l_int32 *pmaxy ); +LEPT_DLL extern l_ok boxaGetSizes ( BOXA *boxa, NUMA **pnaw, NUMA **pnah ); +LEPT_DLL extern l_ok boxaGetArea ( BOXA *boxa, l_int32 *parea ); +LEPT_DLL extern PIX * boxaDisplayTiled ( BOXA *boxas, PIXA *pixa, l_int32 first, l_int32 last, l_int32 maxwidth, l_int32 linewidth, l_float32 scalefactor, l_int32 background, l_int32 spacing, l_int32 border ); +LEPT_DLL extern BOXA * boxaSmoothSequenceMedian ( BOXA *boxas, l_int32 halfwin, l_int32 subflag, l_int32 maxdiff, l_int32 extrapixels, l_int32 debug ); +LEPT_DLL extern BOXA * boxaWindowedMedian ( BOXA *boxas, l_int32 halfwin, l_int32 debug ); +LEPT_DLL extern BOXA * boxaModifyWithBoxa ( BOXA *boxas, BOXA *boxam, l_int32 subflag, l_int32 maxdiff, l_int32 extrapixels ); +LEPT_DLL extern BOXA * boxaReconcilePairWidth ( BOXA *boxas, l_int32 delw, l_int32 op, l_float32 factor, NUMA *na ); +LEPT_DLL extern l_ok boxaSizeConsistency ( BOXA *boxas, l_int32 type, l_float32 threshp, l_float32 threshm, l_float32 *pfvarp, l_float32 *pfvarm, l_int32 *psame ); +LEPT_DLL extern BOXA * boxaReconcileAllByMedian ( BOXA *boxas, l_int32 select1, l_int32 select2, l_int32 thresh, l_int32 extra, PIXA *pixadb ); +LEPT_DLL extern BOXA * boxaReconcileSidesByMedian ( BOXA *boxas, l_int32 select, l_int32 thresh, l_int32 extra, PIXA *pixadb ); +LEPT_DLL extern BOXA * boxaReconcileSizeByMedian ( BOXA *boxas, l_int32 type, l_float32 dfract, l_float32 sfract, l_float32 factor, NUMA **pnadelw, NUMA **pnadelh, l_float32 *pratiowh ); +LEPT_DLL extern l_ok boxaPlotSides ( BOXA *boxa, const char *plotname, NUMA **pnal, NUMA **pnat, NUMA **pnar, NUMA **pnab, PIX **ppixd ); +LEPT_DLL extern l_ok boxaPlotSizes ( BOXA *boxa, const char *plotname, NUMA **pnaw, NUMA **pnah, PIX **ppixd ); +LEPT_DLL extern BOXA * boxaFillSequence ( BOXA *boxas, l_int32 useflag, l_int32 debug ); +LEPT_DLL extern l_ok boxaSizeVariation ( BOXA *boxa, l_int32 type, l_float32 *pdel_evenodd, l_float32 *prms_even, l_float32 *prms_odd, l_float32 *prms_all ); +LEPT_DLL extern l_ok boxaMedianDimensions ( BOXA *boxas, l_int32 *pmedw, l_int32 *pmedh, l_int32 *pmedwe, l_int32 *pmedwo, l_int32 *pmedhe, l_int32 *pmedho, NUMA **pnadelw, NUMA **pnadelh ); +LEPT_DLL extern L_BYTEA * l_byteaCreate ( size_t nbytes ); +LEPT_DLL extern L_BYTEA * l_byteaInitFromMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern L_BYTEA * l_byteaInitFromFile ( const char *fname ); +LEPT_DLL extern L_BYTEA * l_byteaInitFromStream ( FILE *fp ); +LEPT_DLL extern L_BYTEA * l_byteaCopy ( L_BYTEA *bas, l_int32 copyflag ); +LEPT_DLL extern void l_byteaDestroy ( L_BYTEA **pba ); +LEPT_DLL extern size_t l_byteaGetSize ( L_BYTEA *ba ); +LEPT_DLL extern l_uint8 * l_byteaGetData ( L_BYTEA *ba, size_t *psize ); +LEPT_DLL extern l_uint8 * l_byteaCopyData ( L_BYTEA *ba, size_t *psize ); +LEPT_DLL extern l_ok l_byteaAppendData ( L_BYTEA *ba, const l_uint8 *newdata, size_t newbytes ); +LEPT_DLL extern l_ok l_byteaAppendString ( L_BYTEA *ba, const char *str ); +LEPT_DLL extern l_ok l_byteaJoin ( L_BYTEA *ba1, L_BYTEA **pba2 ); +LEPT_DLL extern l_ok l_byteaSplit ( L_BYTEA *ba1, size_t splitloc, L_BYTEA **pba2 ); +LEPT_DLL extern l_ok l_byteaFindEachSequence ( L_BYTEA *ba, const l_uint8 *sequence, size_t seqlen, L_DNA **pda ); +LEPT_DLL extern l_ok l_byteaWrite ( const char *fname, L_BYTEA *ba, size_t startloc, size_t nbytes ); +LEPT_DLL extern l_ok l_byteaWriteStream ( FILE *fp, L_BYTEA *ba, size_t startloc, size_t nbytes ); +LEPT_DLL extern void ccbaDestroy ( CCBORDA **pccba ); +LEPT_DLL extern CCBORDA * pixGetAllCCBorders ( PIX *pixs ); +LEPT_DLL extern PTAA * pixGetOuterBordersPtaa ( PIX *pixs ); +LEPT_DLL extern l_ok pixGetOuterBorder ( CCBORD *ccb, PIX *pixs, BOX *box ); +LEPT_DLL extern l_ok ccbaGenerateGlobalLocs ( CCBORDA *ccba ); +LEPT_DLL extern l_ok ccbaGenerateStepChains ( CCBORDA *ccba ); +LEPT_DLL extern l_ok ccbaStepChainsToPixCoords ( CCBORDA *ccba, l_int32 coordtype ); +LEPT_DLL extern l_ok ccbaGenerateSPGlobalLocs ( CCBORDA *ccba, l_int32 ptsflag ); +LEPT_DLL extern l_ok ccbaGenerateSinglePath ( CCBORDA *ccba ); +LEPT_DLL extern PIX * ccbaDisplayBorder ( CCBORDA *ccba ); +LEPT_DLL extern PIX * ccbaDisplaySPBorder ( CCBORDA *ccba ); +LEPT_DLL extern PIX * ccbaDisplayImage1 ( CCBORDA *ccba ); +LEPT_DLL extern PIX * ccbaDisplayImage2 ( CCBORDA *ccba ); +LEPT_DLL extern l_ok ccbaWrite ( const char *filename, CCBORDA *ccba ); +LEPT_DLL extern l_ok ccbaWriteStream ( FILE *fp, CCBORDA *ccba ); +LEPT_DLL extern CCBORDA * ccbaRead ( const char *filename ); +LEPT_DLL extern CCBORDA * ccbaReadStream ( FILE *fp ); +LEPT_DLL extern l_ok ccbaWriteSVG ( const char *filename, CCBORDA *ccba ); +LEPT_DLL extern char * ccbaWriteSVGString ( CCBORDA *ccba ); +LEPT_DLL extern PIXA * pixaThinConnected ( PIXA *pixas, l_int32 type, l_int32 connectivity, l_int32 maxiters ); +LEPT_DLL extern PIX * pixThinConnected ( PIX *pixs, l_int32 type, l_int32 connectivity, l_int32 maxiters ); +LEPT_DLL extern PIX * pixThinConnectedBySet ( PIX *pixs, l_int32 type, SELA *sela, l_int32 maxiters ); +LEPT_DLL extern SELA * selaMakeThinSets ( l_int32 index, l_int32 debug ); +LEPT_DLL extern l_ok pixFindCheckerboardCorners ( PIX *pixs, l_int32 size, l_int32 dilation, l_int32 nsels, PIX **ppix_corners, PTA **ppta_corners, PIXA *pixadb ); +LEPT_DLL extern l_ok jbCorrelation ( const char *dirin, l_float32 thresh, l_float32 weight, l_int32 components, const char *rootname, l_int32 firstpage, l_int32 npages, l_int32 renderflag ); +LEPT_DLL extern l_ok jbRankHaus ( const char *dirin, l_int32 size, l_float32 rank, l_int32 components, const char *rootname, l_int32 firstpage, l_int32 npages, l_int32 renderflag ); +LEPT_DLL extern JBCLASSER * jbWordsInTextlines ( const char *dirin, l_int32 reduction, l_int32 maxwidth, l_int32 maxheight, l_float32 thresh, l_float32 weight, NUMA **pnatl, l_int32 firstpage, l_int32 npages ); +LEPT_DLL extern l_ok pixGetWordsInTextlines ( PIX *pixs, l_int32 minwidth, l_int32 minheight, l_int32 maxwidth, l_int32 maxheight, BOXA **pboxad, PIXA **ppixad, NUMA **pnai ); +LEPT_DLL extern l_ok pixGetWordBoxesInTextlines ( PIX *pixs, l_int32 minwidth, l_int32 minheight, l_int32 maxwidth, l_int32 maxheight, BOXA **pboxad, NUMA **pnai ); +LEPT_DLL extern l_ok pixFindWordAndCharacterBoxes ( PIX *pixs, BOX *boxs, l_int32 thresh, BOXA **pboxaw, BOXAA **pboxaac, const char *debugdir ); +LEPT_DLL extern NUMAA * boxaExtractSortedPattern ( BOXA *boxa, NUMA *na ); +LEPT_DLL extern l_ok numaaCompareImagesByBoxes ( NUMAA *naa1, NUMAA *naa2, l_int32 nperline, l_int32 nreq, l_int32 maxshiftx, l_int32 maxshifty, l_int32 delx, l_int32 dely, l_int32 *psame, l_int32 debugflag ); +LEPT_DLL extern l_ok pixColorContent ( PIX *pixs, l_int32 rref, l_int32 gref, l_int32 bref, l_int32 mingray, PIX **ppixr, PIX **ppixg, PIX **ppixb ); +LEPT_DLL extern PIX * pixColorMagnitude ( PIX *pixs, l_int32 rref, l_int32 gref, l_int32 bref, l_int32 type ); +LEPT_DLL extern l_ok pixColorFraction ( PIX *pixs, l_int32 darkthresh, l_int32 lightthresh, l_int32 diffthresh, l_int32 factor, l_float32 *ppixfract, l_float32 *pcolorfract ); +LEPT_DLL extern PIX * pixColorShiftWhitePoint ( PIX *pixs, l_int32 rref, l_int32 gref, l_int32 bref ); +LEPT_DLL extern PIX * pixMaskOverColorPixels ( PIX *pixs, l_int32 threshdiff, l_int32 mindist ); +LEPT_DLL extern PIX * pixMaskOverGrayPixels ( PIX *pixs, l_int32 maxlimit, l_int32 satlimit ); +LEPT_DLL extern PIX * pixMaskOverColorRange ( PIX *pixs, l_int32 rmin, l_int32 rmax, l_int32 gmin, l_int32 gmax, l_int32 bmin, l_int32 bmax ); +LEPT_DLL extern l_ok pixFindColorRegions ( PIX *pixs, PIX *pixm, l_int32 factor, l_int32 lightthresh, l_int32 darkthresh, l_int32 mindiff, l_int32 colordiff, l_float32 edgefract, l_float32 *pcolorfract, PIX **pcolormask1, PIX **pcolormask2, PIXA *pixadb ); +LEPT_DLL extern l_ok pixNumSignificantGrayColors ( PIX *pixs, l_int32 darkthresh, l_int32 lightthresh, l_float32 minfract, l_int32 factor, l_int32 *pncolors ); +LEPT_DLL extern l_ok pixColorsForQuantization ( PIX *pixs, l_int32 thresh, l_int32 *pncolors, l_int32 *piscolor, l_int32 debug ); +LEPT_DLL extern l_ok pixNumColors ( PIX *pixs, l_int32 factor, l_int32 *pncolors ); +LEPT_DLL extern PIX * pixConvertRGBToCmapLossless ( PIX *pixs ); +LEPT_DLL extern l_ok pixGetMostPopulatedColors ( PIX *pixs, l_int32 sigbits, l_int32 factor, l_int32 ncolors, l_uint32 **parray, PIXCMAP **pcmap ); +LEPT_DLL extern PIX * pixSimpleColorQuantize ( PIX *pixs, l_int32 sigbits, l_int32 factor, l_int32 ncolors ); +LEPT_DLL extern NUMA * pixGetRGBHistogram ( PIX *pixs, l_int32 sigbits, l_int32 factor ); +LEPT_DLL extern l_ok makeRGBIndexTables ( l_uint32 **prtab, l_uint32 **pgtab, l_uint32 **pbtab, l_int32 sigbits ); +LEPT_DLL extern l_ok getRGBFromIndex ( l_uint32 index, l_int32 sigbits, l_int32 *prval, l_int32 *pgval, l_int32 *pbval ); +LEPT_DLL extern l_ok pixHasHighlightRed ( PIX *pixs, l_int32 factor, l_float32 minfract, l_float32 fthresh, l_int32 *phasred, l_float32 *pratio, PIX **ppixdb ); +LEPT_DLL extern L_COLORFILL * l_colorfillCreate ( PIX *pixs, l_int32 nx, l_int32 ny ); +LEPT_DLL extern void l_colorfillDestroy ( L_COLORFILL **pcf ); +LEPT_DLL extern l_ok pixColorContentByLocation ( L_COLORFILL *cf, l_int32 rref, l_int32 gref, l_int32 bref, l_int32 minmax, l_int32 maxdiff, l_int32 minarea, l_int32 smooth, l_int32 debug ); +LEPT_DLL extern PIX * pixColorFill ( PIX *pixs, l_int32 minmax, l_int32 maxdiff, l_int32 smooth, l_int32 minarea, l_int32 debug ); +LEPT_DLL extern PIXA * makeColorfillTestData ( l_int32 w, l_int32 h, l_int32 nseeds, l_int32 range ); +LEPT_DLL extern PIX * pixColorGrayRegions ( PIX *pixs, BOXA *boxa, l_int32 type, l_int32 thresh, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixColorGray ( PIX *pixs, BOX *box, l_int32 type, l_int32 thresh, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern PIX * pixColorGrayMasked ( PIX *pixs, PIX *pixm, l_int32 type, l_int32 thresh, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern PIX * pixSnapColor ( PIX *pixd, PIX *pixs, l_uint32 srcval, l_uint32 dstval, l_int32 diff ); +LEPT_DLL extern PIX * pixSnapColorCmap ( PIX *pixd, PIX *pixs, l_uint32 srcval, l_uint32 dstval, l_int32 diff ); +LEPT_DLL extern PIX * pixLinearMapToTargetColor ( PIX *pixd, PIX *pixs, l_uint32 srcval, l_uint32 dstval ); +LEPT_DLL extern l_ok pixelLinearMapToTargetColor ( l_uint32 scolor, l_uint32 srcmap, l_uint32 dstmap, l_uint32 *pdcolor ); +LEPT_DLL extern PIX * pixShiftByComponent ( PIX *pixd, PIX *pixs, l_uint32 srcval, l_uint32 dstval ); +LEPT_DLL extern l_ok pixelShiftByComponent ( l_int32 rval, l_int32 gval, l_int32 bval, l_uint32 srcval, l_uint32 dstval, l_uint32 *ppixel ); +LEPT_DLL extern l_ok pixelFractionalShift ( l_int32 rval, l_int32 gval, l_int32 bval, l_float32 fract, l_uint32 *ppixel ); +LEPT_DLL extern PIX * pixMapWithInvariantHue ( PIX *pixd, PIX *pixs, l_uint32 srcval, l_float32 fract ); +LEPT_DLL extern PIXCMAP * pixcmapCreate ( l_int32 depth ); +LEPT_DLL extern PIXCMAP * pixcmapCreateRandom ( l_int32 depth, l_int32 hasblack, l_int32 haswhite ); +LEPT_DLL extern PIXCMAP * pixcmapCreateLinear ( l_int32 d, l_int32 nlevels ); +LEPT_DLL extern PIXCMAP * pixcmapCopy ( const PIXCMAP *cmaps ); +LEPT_DLL extern void pixcmapDestroy ( PIXCMAP **pcmap ); +LEPT_DLL extern l_ok pixcmapIsValid ( const PIXCMAP *cmap, PIX *pix, l_int32 *pvalid ); +LEPT_DLL extern l_ok pixcmapAddColor ( PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixcmapAddRGBA ( PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 aval ); +LEPT_DLL extern l_ok pixcmapAddNewColor ( PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex ); +LEPT_DLL extern l_ok pixcmapAddNearestColor ( PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex ); +LEPT_DLL extern l_ok pixcmapUsableColor ( PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pusable ); +LEPT_DLL extern l_ok pixcmapAddBlackOrWhite ( PIXCMAP *cmap, l_int32 color, l_int32 *pindex ); +LEPT_DLL extern l_ok pixcmapSetBlackAndWhite ( PIXCMAP *cmap, l_int32 setblack, l_int32 setwhite ); +LEPT_DLL extern l_int32 pixcmapGetCount ( const PIXCMAP *cmap ); +LEPT_DLL extern l_int32 pixcmapGetFreeCount ( PIXCMAP *cmap ); +LEPT_DLL extern l_int32 pixcmapGetDepth ( PIXCMAP *cmap ); +LEPT_DLL extern l_ok pixcmapGetMinDepth ( PIXCMAP *cmap, l_int32 *pmindepth ); +LEPT_DLL extern l_ok pixcmapClear ( PIXCMAP *cmap ); +LEPT_DLL extern l_ok pixcmapGetColor ( PIXCMAP *cmap, l_int32 index, l_int32 *prval, l_int32 *pgval, l_int32 *pbval ); +LEPT_DLL extern l_ok pixcmapGetColor32 ( PIXCMAP *cmap, l_int32 index, l_uint32 *pval32 ); +LEPT_DLL extern l_ok pixcmapGetRGBA ( PIXCMAP *cmap, l_int32 index, l_int32 *prval, l_int32 *pgval, l_int32 *pbval, l_int32 *paval ); +LEPT_DLL extern l_ok pixcmapGetRGBA32 ( PIXCMAP *cmap, l_int32 index, l_uint32 *pval32 ); +LEPT_DLL extern l_ok pixcmapResetColor ( PIXCMAP *cmap, l_int32 index, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixcmapSetAlpha ( PIXCMAP *cmap, l_int32 index, l_int32 aval ); +LEPT_DLL extern l_int32 pixcmapGetIndex ( PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex ); +LEPT_DLL extern l_ok pixcmapHasColor ( PIXCMAP *cmap, l_int32 *pcolor ); +LEPT_DLL extern l_ok pixcmapIsOpaque ( PIXCMAP *cmap, l_int32 *popaque ); +LEPT_DLL extern l_ok pixcmapNonOpaqueColorsInfo ( PIXCMAP *cmap, l_int32 *pntrans, l_int32 *pmax_trans, l_int32 *pmin_opaque ); +LEPT_DLL extern l_ok pixcmapIsBlackAndWhite ( PIXCMAP *cmap, l_int32 *pblackwhite ); +LEPT_DLL extern l_ok pixcmapCountGrayColors ( PIXCMAP *cmap, l_int32 *pngray ); +LEPT_DLL extern l_ok pixcmapGetRankIntensity ( PIXCMAP *cmap, l_float32 rankval, l_int32 *pindex ); +LEPT_DLL extern l_ok pixcmapGetNearestIndex ( PIXCMAP *cmap, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pindex ); +LEPT_DLL extern l_ok pixcmapGetNearestGrayIndex ( PIXCMAP *cmap, l_int32 val, l_int32 *pindex ); +LEPT_DLL extern l_ok pixcmapGetDistanceToColor ( PIXCMAP *cmap, l_int32 index, l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pdist ); +LEPT_DLL extern l_ok pixcmapGetRangeValues ( PIXCMAP *cmap, l_int32 select, l_int32 *pminval, l_int32 *pmaxval, l_int32 *pminindex, l_int32 *pmaxindex ); +LEPT_DLL extern PIXCMAP * pixcmapGrayToFalseColor ( l_float32 gamma ); +LEPT_DLL extern PIXCMAP * pixcmapGrayToColor ( l_uint32 color ); +LEPT_DLL extern PIXCMAP * pixcmapColorToGray ( PIXCMAP *cmaps, l_float32 rwt, l_float32 gwt, l_float32 bwt ); +LEPT_DLL extern PIXCMAP * pixcmapConvertTo4 ( PIXCMAP *cmaps ); +LEPT_DLL extern PIXCMAP * pixcmapConvertTo8 ( PIXCMAP *cmaps ); +LEPT_DLL extern PIXCMAP * pixcmapRead ( const char *filename ); +LEPT_DLL extern PIXCMAP * pixcmapReadStream ( FILE *fp ); +LEPT_DLL extern PIXCMAP * pixcmapReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok pixcmapWrite ( const char *filename, const PIXCMAP *cmap ); +LEPT_DLL extern l_ok pixcmapWriteStream ( FILE *fp, const PIXCMAP *cmap ); +LEPT_DLL extern l_ok pixcmapWriteMem ( l_uint8 **pdata, size_t *psize, const PIXCMAP *cmap ); +LEPT_DLL extern l_ok pixcmapToArrays ( const PIXCMAP *cmap, l_int32 **prmap, l_int32 **pgmap, l_int32 **pbmap, l_int32 **pamap ); +LEPT_DLL extern l_ok pixcmapToRGBTable ( PIXCMAP *cmap, l_uint32 **ptab, l_int32 *pncolors ); +LEPT_DLL extern l_ok pixcmapSerializeToMemory ( PIXCMAP *cmap, l_int32 cpc, l_int32 *pncolors, l_uint8 **pdata ); +LEPT_DLL extern PIXCMAP * pixcmapDeserializeFromMemory ( l_uint8 *data, l_int32 cpc, l_int32 ncolors ); +LEPT_DLL extern char * pixcmapConvertToHex ( l_uint8 *data, l_int32 ncolors ); +LEPT_DLL extern l_ok pixcmapGammaTRC ( PIXCMAP *cmap, l_float32 gamma, l_int32 minval, l_int32 maxval ); +LEPT_DLL extern l_ok pixcmapContrastTRC ( PIXCMAP *cmap, l_float32 factor ); +LEPT_DLL extern l_ok pixcmapShiftIntensity ( PIXCMAP *cmap, l_float32 fraction ); +LEPT_DLL extern l_ok pixcmapShiftByComponent ( PIXCMAP *cmap, l_uint32 srcval, l_uint32 dstval ); +LEPT_DLL extern PIX * pixColorMorph ( PIX *pixs, l_int32 type, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixOctreeColorQuant ( PIX *pixs, l_int32 colors, l_int32 ditherflag ); +LEPT_DLL extern PIX * pixOctreeColorQuantGeneral ( PIX *pixs, l_int32 colors, l_int32 ditherflag, l_float32 validthresh, l_float32 colorthresh ); +LEPT_DLL extern l_ok makeRGBToIndexTables ( l_int32 cqlevels, l_uint32 **prtab, l_uint32 **pgtab, l_uint32 **pbtab ); +LEPT_DLL extern void getOctcubeIndexFromRGB ( l_int32 rval, l_int32 gval, l_int32 bval, l_uint32 *rtab, l_uint32 *gtab, l_uint32 *btab, l_uint32 *pindex ); +LEPT_DLL extern PIX * pixOctreeQuantByPopulation ( PIX *pixs, l_int32 level, l_int32 ditherflag ); +LEPT_DLL extern PIX * pixOctreeQuantNumColors ( PIX *pixs, l_int32 maxcolors, l_int32 subsample ); +LEPT_DLL extern PIX * pixOctcubeQuantMixedWithGray ( PIX *pixs, l_int32 depth, l_int32 graylevels, l_int32 delta ); +LEPT_DLL extern PIX * pixFixedOctcubeQuant256 ( PIX *pixs, l_int32 ditherflag ); +LEPT_DLL extern PIX * pixFewColorsOctcubeQuant1 ( PIX *pixs, l_int32 level ); +LEPT_DLL extern PIX * pixFewColorsOctcubeQuant2 ( PIX *pixs, l_int32 level, NUMA *na, l_int32 ncolors, l_int32 *pnerrors ); +LEPT_DLL extern PIX * pixFewColorsOctcubeQuantMixed ( PIX *pixs, l_int32 level, l_int32 darkthresh, l_int32 lightthresh, l_int32 diffthresh, l_float32 minfract, l_int32 maxspan ); +LEPT_DLL extern PIX * pixFixedOctcubeQuantGenRGB ( PIX *pixs, l_int32 level ); +LEPT_DLL extern PIX * pixQuantFromCmap ( PIX *pixs, PIXCMAP *cmap, l_int32 mindepth, l_int32 level, l_int32 metric ); +LEPT_DLL extern PIX * pixOctcubeQuantFromCmap ( PIX *pixs, PIXCMAP *cmap, l_int32 mindepth, l_int32 level, l_int32 metric ); +LEPT_DLL extern NUMA * pixOctcubeHistogram ( PIX *pixs, l_int32 level, l_int32 *pncolors ); +LEPT_DLL extern l_int32 * pixcmapToOctcubeLUT ( PIXCMAP *cmap, l_int32 level, l_int32 metric ); +LEPT_DLL extern l_ok pixRemoveUnusedColors ( PIX *pixs ); +LEPT_DLL extern l_ok pixNumberOccupiedOctcubes ( PIX *pix, l_int32 level, l_int32 mincount, l_float32 minfract, l_int32 *pncolors ); +LEPT_DLL extern PIX * pixMedianCutQuant ( PIX *pixs, l_int32 ditherflag ); +LEPT_DLL extern PIX * pixMedianCutQuantGeneral ( PIX *pixs, l_int32 ditherflag, l_int32 outdepth, l_int32 maxcolors, l_int32 sigbits, l_int32 maxsub, l_int32 checkbw ); +LEPT_DLL extern PIX * pixMedianCutQuantMixed ( PIX *pixs, l_int32 ncolor, l_int32 ngray, l_int32 darkthresh, l_int32 lightthresh, l_int32 diffthresh ); +LEPT_DLL extern PIX * pixFewColorsMedianCutQuantMixed ( PIX *pixs, l_int32 ncolor, l_int32 ngray, l_int32 maxncolors, l_int32 darkthresh, l_int32 lightthresh, l_int32 diffthresh ); +LEPT_DLL extern l_int32 * pixMedianCutHisto ( PIX *pixs, l_int32 sigbits, l_int32 subsample ); +LEPT_DLL extern PIX * pixColorSegment ( PIX *pixs, l_int32 maxdist, l_int32 maxcolors, l_int32 selsize, l_int32 finalcolors, l_int32 debugflag ); +LEPT_DLL extern PIX * pixColorSegmentCluster ( PIX *pixs, l_int32 maxdist, l_int32 maxcolors, l_int32 debugflag ); +LEPT_DLL extern l_ok pixAssignToNearestColor ( PIX *pixd, PIX *pixs, PIX *pixm, l_int32 level, l_int32 *countarray ); +LEPT_DLL extern l_ok pixColorSegmentClean ( PIX *pixs, l_int32 selsize, l_int32 *countarray ); +LEPT_DLL extern l_ok pixColorSegmentRemoveColors ( PIX *pixd, PIX *pixs, l_int32 finalcolors ); +LEPT_DLL extern PIX * pixConvertRGBToHSV ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern PIX * pixConvertHSVToRGB ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern l_ok convertRGBToHSV ( l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *phval, l_int32 *psval, l_int32 *pvval ); +LEPT_DLL extern l_ok convertHSVToRGB ( l_int32 hval, l_int32 sval, l_int32 vval, l_int32 *prval, l_int32 *pgval, l_int32 *pbval ); +LEPT_DLL extern l_ok pixcmapConvertRGBToHSV ( PIXCMAP *cmap ); +LEPT_DLL extern l_ok pixcmapConvertHSVToRGB ( PIXCMAP *cmap ); +LEPT_DLL extern PIX * pixConvertRGBToHue ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertRGBToSaturation ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertRGBToValue ( PIX *pixs ); +LEPT_DLL extern PIX * pixMakeRangeMaskHS ( PIX *pixs, l_int32 huecenter, l_int32 huehw, l_int32 satcenter, l_int32 sathw, l_int32 regionflag ); +LEPT_DLL extern PIX * pixMakeRangeMaskHV ( PIX *pixs, l_int32 huecenter, l_int32 huehw, l_int32 valcenter, l_int32 valhw, l_int32 regionflag ); +LEPT_DLL extern PIX * pixMakeRangeMaskSV ( PIX *pixs, l_int32 satcenter, l_int32 sathw, l_int32 valcenter, l_int32 valhw, l_int32 regionflag ); +LEPT_DLL extern PIX * pixMakeHistoHS ( PIX *pixs, l_int32 factor, NUMA **pnahue, NUMA **pnasat ); +LEPT_DLL extern PIX * pixMakeHistoHV ( PIX *pixs, l_int32 factor, NUMA **pnahue, NUMA **pnaval ); +LEPT_DLL extern PIX * pixMakeHistoSV ( PIX *pixs, l_int32 factor, NUMA **pnasat, NUMA **pnaval ); +LEPT_DLL extern l_ok pixFindHistoPeaksHSV ( PIX *pixs, l_int32 type, l_int32 width, l_int32 height, l_int32 npeaks, l_float32 erasefactor, PTA **ppta, NUMA **pnatot, PIXA **ppixa ); +LEPT_DLL extern PIX * displayHSVColorRange ( l_int32 hval, l_int32 sval, l_int32 vval, l_int32 huehw, l_int32 sathw, l_int32 nsamp, l_int32 factor ); +LEPT_DLL extern PIX * pixConvertRGBToYUV ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern PIX * pixConvertYUVToRGB ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern l_ok convertRGBToYUV ( l_int32 rval, l_int32 gval, l_int32 bval, l_int32 *pyval, l_int32 *puval, l_int32 *pvval ); +LEPT_DLL extern l_ok convertYUVToRGB ( l_int32 yval, l_int32 uval, l_int32 vval, l_int32 *prval, l_int32 *pgval, l_int32 *pbval ); +LEPT_DLL extern l_ok pixcmapConvertRGBToYUV ( PIXCMAP *cmap ); +LEPT_DLL extern l_ok pixcmapConvertYUVToRGB ( PIXCMAP *cmap ); +LEPT_DLL extern FPIXA * pixConvertRGBToXYZ ( PIX *pixs ); +LEPT_DLL extern PIX * fpixaConvertXYZToRGB ( FPIXA *fpixa ); +LEPT_DLL extern l_ok convertRGBToXYZ ( l_int32 rval, l_int32 gval, l_int32 bval, l_float32 *pfxval, l_float32 *pfyval, l_float32 *pfzval ); +LEPT_DLL extern l_ok convertXYZToRGB ( l_float32 fxval, l_float32 fyval, l_float32 fzval, l_int32 blackout, l_int32 *prval, l_int32 *pgval, l_int32 *pbval ); +LEPT_DLL extern FPIXA * fpixaConvertXYZToLAB ( FPIXA *fpixas ); +LEPT_DLL extern FPIXA * fpixaConvertLABToXYZ ( FPIXA *fpixas ); +LEPT_DLL extern l_ok convertXYZToLAB ( l_float32 xval, l_float32 yval, l_float32 zval, l_float32 *plval, l_float32 *paval, l_float32 *pbval ); +LEPT_DLL extern l_ok convertLABToXYZ ( l_float32 lval, l_float32 aval, l_float32 bval, l_float32 *pxval, l_float32 *pyval, l_float32 *pzval ); +LEPT_DLL extern FPIXA * pixConvertRGBToLAB ( PIX *pixs ); +LEPT_DLL extern PIX * fpixaConvertLABToRGB ( FPIXA *fpixa ); +LEPT_DLL extern l_ok convertRGBToLAB ( l_int32 rval, l_int32 gval, l_int32 bval, l_float32 *pflval, l_float32 *pfaval, l_float32 *pfbval ); +LEPT_DLL extern l_ok convertLABToRGB ( l_float32 flval, l_float32 faval, l_float32 fbval, l_int32 *prval, l_int32 *pgval, l_int32 *pbval ); +LEPT_DLL extern PIX * pixMakeGamutRGB ( l_int32 scale ); +LEPT_DLL extern l_ok pixEqual ( PIX *pix1, PIX *pix2, l_int32 *psame ); +LEPT_DLL extern l_ok pixEqualWithAlpha ( PIX *pix1, PIX *pix2, l_int32 use_alpha, l_int32 *psame ); +LEPT_DLL extern l_ok pixEqualWithCmap ( PIX *pix1, PIX *pix2, l_int32 *psame ); +LEPT_DLL extern l_ok cmapEqual ( PIXCMAP *cmap1, PIXCMAP *cmap2, l_int32 ncomps, l_int32 *psame ); +LEPT_DLL extern l_ok pixUsesCmapColor ( PIX *pixs, l_int32 *pcolor ); +LEPT_DLL extern l_ok pixCorrelationBinary ( PIX *pix1, PIX *pix2, l_float32 *pval ); +LEPT_DLL extern PIX * pixDisplayDiffBinary ( PIX *pix1, PIX *pix2 ); +LEPT_DLL extern l_ok pixCompareBinary ( PIX *pix1, PIX *pix2, l_int32 comptype, l_float32 *pfract, PIX **ppixdiff ); +LEPT_DLL extern l_ok pixCompareGrayOrRGB ( PIX *pix1, PIX *pix2, l_int32 comptype, l_int32 plottype, l_int32 *psame, l_float32 *pdiff, l_float32 *prmsdiff, PIX **ppixdiff ); +LEPT_DLL extern l_ok pixCompareGray ( PIX *pix1, PIX *pix2, l_int32 comptype, l_int32 plottype, l_int32 *psame, l_float32 *pdiff, l_float32 *prmsdiff, PIX **ppixdiff ); +LEPT_DLL extern l_ok pixCompareRGB ( PIX *pix1, PIX *pix2, l_int32 comptype, l_int32 plottype, l_int32 *psame, l_float32 *pdiff, l_float32 *prmsdiff, PIX **ppixdiff ); +LEPT_DLL extern l_ok pixCompareTiled ( PIX *pix1, PIX *pix2, l_int32 sx, l_int32 sy, l_int32 type, PIX **ppixdiff ); +LEPT_DLL extern NUMA * pixCompareRankDifference ( PIX *pix1, PIX *pix2, l_int32 factor ); +LEPT_DLL extern l_ok pixTestForSimilarity ( PIX *pix1, PIX *pix2, l_int32 factor, l_int32 mindiff, l_float32 maxfract, l_float32 maxave, l_int32 *psimilar, l_int32 details ); +LEPT_DLL extern l_ok pixGetDifferenceStats ( PIX *pix1, PIX *pix2, l_int32 factor, l_int32 mindiff, l_float32 *pfractdiff, l_float32 *pavediff, l_int32 details ); +LEPT_DLL extern NUMA * pixGetDifferenceHistogram ( PIX *pix1, PIX *pix2, l_int32 factor ); +LEPT_DLL extern l_ok pixGetPerceptualDiff ( PIX *pixs1, PIX *pixs2, l_int32 sampling, l_int32 dilation, l_int32 mindiff, l_float32 *pfract, PIX **ppixdiff1, PIX **ppixdiff2 ); +LEPT_DLL extern l_ok pixGetPSNR ( PIX *pix1, PIX *pix2, l_int32 factor, l_float32 *ppsnr ); +LEPT_DLL extern l_ok pixaComparePhotoRegionsByHisto ( PIXA *pixa, l_float32 minratio, l_float32 textthresh, l_int32 factor, l_int32 n, l_float32 simthresh, NUMA **pnai, l_float32 **pscores, PIX **ppixd, l_int32 debug ); +LEPT_DLL extern l_ok pixComparePhotoRegionsByHisto ( PIX *pix1, PIX *pix2, BOX *box1, BOX *box2, l_float32 minratio, l_int32 factor, l_int32 n, l_float32 *pscore, l_int32 debugflag ); +LEPT_DLL extern l_ok pixGenPhotoHistos ( PIX *pixs, BOX *box, l_int32 factor, l_float32 thresh, l_int32 n, NUMAA **pnaa, l_int32 *pw, l_int32 *ph, l_int32 debugindex ); +LEPT_DLL extern PIX * pixPadToCenterCentroid ( PIX *pixs, l_int32 factor ); +LEPT_DLL extern l_ok pixCentroid8 ( PIX *pixs, l_int32 factor, l_float32 *pcx, l_float32 *pcy ); +LEPT_DLL extern l_ok pixDecideIfPhotoImage ( PIX *pix, l_int32 factor, l_float32 thresh, l_int32 n, NUMAA **pnaa, PIXA *pixadebug ); +LEPT_DLL extern l_ok compareTilesByHisto ( NUMAA *naa1, NUMAA *naa2, l_float32 minratio, l_int32 w1, l_int32 h1, l_int32 w2, l_int32 h2, l_float32 *pscore, PIXA *pixadebug ); +LEPT_DLL extern l_ok pixCompareGrayByHisto ( PIX *pix1, PIX *pix2, BOX *box1, BOX *box2, l_float32 minratio, l_int32 maxgray, l_int32 factor, l_int32 n, l_float32 *pscore, l_int32 debugflag ); +LEPT_DLL extern l_ok pixCropAlignedToCentroid ( PIX *pix1, PIX *pix2, l_int32 factor, BOX **pbox1, BOX **pbox2 ); +LEPT_DLL extern l_uint8 * l_compressGrayHistograms ( NUMAA *naa, l_int32 w, l_int32 h, size_t *psize ); +LEPT_DLL extern NUMAA * l_uncompressGrayHistograms ( l_uint8 *bytea, size_t size, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok pixCompareWithTranslation ( PIX *pix1, PIX *pix2, l_int32 thresh, l_int32 *pdelx, l_int32 *pdely, l_float32 *pscore, l_int32 debugflag ); +LEPT_DLL extern l_ok pixBestCorrelation ( PIX *pix1, PIX *pix2, l_int32 area1, l_int32 area2, l_int32 etransx, l_int32 etransy, l_int32 maxshift, l_int32 *tab8, l_int32 *pdelx, l_int32 *pdely, l_float32 *pscore, l_int32 debugflag ); +LEPT_DLL extern BOXA * pixConnComp ( PIX *pixs, PIXA **ppixa, l_int32 connectivity ); +LEPT_DLL extern BOXA * pixConnCompPixa ( PIX *pixs, PIXA **ppixa, l_int32 connectivity ); +LEPT_DLL extern BOXA * pixConnCompBB ( PIX *pixs, l_int32 connectivity ); +LEPT_DLL extern l_ok pixCountConnComp ( PIX *pixs, l_int32 connectivity, l_int32 *pcount ); +LEPT_DLL extern l_int32 nextOnPixelInRaster ( PIX *pixs, l_int32 xstart, l_int32 ystart, l_int32 *px, l_int32 *py ); +LEPT_DLL extern BOX * pixSeedfillBB ( PIX *pixs, L_STACK *stack, l_int32 x, l_int32 y, l_int32 connectivity ); +LEPT_DLL extern BOX * pixSeedfill4BB ( PIX *pixs, L_STACK *stack, l_int32 x, l_int32 y ); +LEPT_DLL extern BOX * pixSeedfill8BB ( PIX *pixs, L_STACK *stack, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok pixSeedfill ( PIX *pixs, L_STACK *stack, l_int32 x, l_int32 y, l_int32 connectivity ); +LEPT_DLL extern l_ok pixSeedfill4 ( PIX *pixs, L_STACK *stack, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok pixSeedfill8 ( PIX *pixs, L_STACK *stack, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok convertFilesTo1bpp ( const char *dirin, const char *substr, l_int32 upscaling, l_int32 thresh, l_int32 firstpage, l_int32 npages, const char *dirout, l_int32 outformat ); +LEPT_DLL extern PIX * pixBlockconv ( PIX *pix, l_int32 wc, l_int32 hc ); +LEPT_DLL extern PIX * pixBlockconvGray ( PIX *pixs, PIX *pixacc, l_int32 wc, l_int32 hc ); +LEPT_DLL extern PIX * pixBlockconvAccum ( PIX *pixs ); +LEPT_DLL extern PIX * pixBlockconvGrayUnnormalized ( PIX *pixs, l_int32 wc, l_int32 hc ); +LEPT_DLL extern PIX * pixBlockconvTiled ( PIX *pix, l_int32 wc, l_int32 hc, l_int32 nx, l_int32 ny ); +LEPT_DLL extern PIX * pixBlockconvGrayTile ( PIX *pixs, PIX *pixacc, l_int32 wc, l_int32 hc ); +LEPT_DLL extern l_ok pixWindowedStats ( PIX *pixs, l_int32 wc, l_int32 hc, l_int32 hasborder, PIX **ppixm, PIX **ppixms, FPIX **pfpixv, FPIX **pfpixrv ); +LEPT_DLL extern PIX * pixWindowedMean ( PIX *pixs, l_int32 wc, l_int32 hc, l_int32 hasborder, l_int32 normflag ); +LEPT_DLL extern PIX * pixWindowedMeanSquare ( PIX *pixs, l_int32 wc, l_int32 hc, l_int32 hasborder ); +LEPT_DLL extern l_ok pixWindowedVariance ( PIX *pixm, PIX *pixms, FPIX **pfpixv, FPIX **pfpixrv ); +LEPT_DLL extern DPIX * pixMeanSquareAccum ( PIX *pixs ); +LEPT_DLL extern PIX * pixBlockrank ( PIX *pixs, PIX *pixacc, l_int32 wc, l_int32 hc, l_float32 rank ); +LEPT_DLL extern PIX * pixBlocksum ( PIX *pixs, PIX *pixacc, l_int32 wc, l_int32 hc ); +LEPT_DLL extern PIX * pixCensusTransform ( PIX *pixs, l_int32 halfsize, PIX *pixacc ); +LEPT_DLL extern PIX * pixConvolve ( PIX *pixs, L_KERNEL *kel, l_int32 outdepth, l_int32 normflag ); +LEPT_DLL extern PIX * pixConvolveSep ( PIX *pixs, L_KERNEL *kelx, L_KERNEL *kely, l_int32 outdepth, l_int32 normflag ); +LEPT_DLL extern PIX * pixConvolveRGB ( PIX *pixs, L_KERNEL *kel ); +LEPT_DLL extern PIX * pixConvolveRGBSep ( PIX *pixs, L_KERNEL *kelx, L_KERNEL *kely ); +LEPT_DLL extern FPIX * fpixConvolve ( FPIX *fpixs, L_KERNEL *kel, l_int32 normflag ); +LEPT_DLL extern FPIX * fpixConvolveSep ( FPIX *fpixs, L_KERNEL *kelx, L_KERNEL *kely, l_int32 normflag ); +LEPT_DLL extern PIX * pixConvolveWithBias ( PIX *pixs, L_KERNEL *kel1, L_KERNEL *kel2, l_int32 force8, l_int32 *pbias ); +LEPT_DLL extern void l_setConvolveSampling ( l_int32 xfact, l_int32 yfact ); +LEPT_DLL extern PIX * pixAddGaussianNoise ( PIX *pixs, l_float32 stdev ); +LEPT_DLL extern l_float32 gaussDistribSampling ( void ); +LEPT_DLL extern l_ok pixCorrelationScore ( PIX *pix1, PIX *pix2, l_int32 area1, l_int32 area2, l_float32 delx, l_float32 dely, l_int32 maxdiffw, l_int32 maxdiffh, l_int32 *tab, l_float32 *pscore ); +LEPT_DLL extern l_int32 pixCorrelationScoreThresholded ( PIX *pix1, PIX *pix2, l_int32 area1, l_int32 area2, l_float32 delx, l_float32 dely, l_int32 maxdiffw, l_int32 maxdiffh, l_int32 *tab, l_int32 *downcount, l_float32 score_threshold ); +LEPT_DLL extern l_ok pixCorrelationScoreSimple ( PIX *pix1, PIX *pix2, l_int32 area1, l_int32 area2, l_float32 delx, l_float32 dely, l_int32 maxdiffw, l_int32 maxdiffh, l_int32 *tab, l_float32 *pscore ); +LEPT_DLL extern l_ok pixCorrelationScoreShifted ( PIX *pix1, PIX *pix2, l_int32 area1, l_int32 area2, l_int32 delx, l_int32 dely, l_int32 *tab, l_float32 *pscore ); +LEPT_DLL extern L_DEWARP * dewarpCreate ( PIX *pixs, l_int32 pageno ); +LEPT_DLL extern L_DEWARP * dewarpCreateRef ( l_int32 pageno, l_int32 refpage ); +LEPT_DLL extern void dewarpDestroy ( L_DEWARP **pdew ); +LEPT_DLL extern L_DEWARPA * dewarpaCreate ( l_int32 nptrs, l_int32 sampling, l_int32 redfactor, l_int32 minlines, l_int32 maxdist ); +LEPT_DLL extern L_DEWARPA * dewarpaCreateFromPixacomp ( PIXAC *pixac, l_int32 useboth, l_int32 sampling, l_int32 minlines, l_int32 maxdist ); +LEPT_DLL extern void dewarpaDestroy ( L_DEWARPA **pdewa ); +LEPT_DLL extern l_ok dewarpaDestroyDewarp ( L_DEWARPA *dewa, l_int32 pageno ); +LEPT_DLL extern l_ok dewarpaInsertDewarp ( L_DEWARPA *dewa, L_DEWARP *dew ); +LEPT_DLL extern L_DEWARP * dewarpaGetDewarp ( L_DEWARPA *dewa, l_int32 index ); +LEPT_DLL extern l_ok dewarpaSetCurvatures ( L_DEWARPA *dewa, l_int32 max_linecurv, l_int32 min_diff_linecurv, l_int32 max_diff_linecurv, l_int32 max_edgecurv, l_int32 max_diff_edgecurv, l_int32 max_edgeslope ); +LEPT_DLL extern l_ok dewarpaUseBothArrays ( L_DEWARPA *dewa, l_int32 useboth ); +LEPT_DLL extern l_ok dewarpaSetCheckColumns ( L_DEWARPA *dewa, l_int32 check_columns ); +LEPT_DLL extern l_ok dewarpaSetMaxDistance ( L_DEWARPA *dewa, l_int32 maxdist ); +LEPT_DLL extern L_DEWARP * dewarpRead ( const char *filename ); +LEPT_DLL extern L_DEWARP * dewarpReadStream ( FILE *fp ); +LEPT_DLL extern L_DEWARP * dewarpReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok dewarpWrite ( const char *filename, L_DEWARP *dew ); +LEPT_DLL extern l_ok dewarpWriteStream ( FILE *fp, L_DEWARP *dew ); +LEPT_DLL extern l_ok dewarpWriteMem ( l_uint8 **pdata, size_t *psize, L_DEWARP *dew ); +LEPT_DLL extern L_DEWARPA * dewarpaRead ( const char *filename ); +LEPT_DLL extern L_DEWARPA * dewarpaReadStream ( FILE *fp ); +LEPT_DLL extern L_DEWARPA * dewarpaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok dewarpaWrite ( const char *filename, L_DEWARPA *dewa ); +LEPT_DLL extern l_ok dewarpaWriteStream ( FILE *fp, L_DEWARPA *dewa ); +LEPT_DLL extern l_ok dewarpaWriteMem ( l_uint8 **pdata, size_t *psize, L_DEWARPA *dewa ); +LEPT_DLL extern l_ok dewarpBuildPageModel ( L_DEWARP *dew, const char *debugfile ); +LEPT_DLL extern l_ok dewarpFindVertDisparity ( L_DEWARP *dew, PTAA *ptaa, l_int32 rotflag ); +LEPT_DLL extern l_ok dewarpFindHorizDisparity ( L_DEWARP *dew, PTAA *ptaa ); +LEPT_DLL extern PTAA * dewarpGetTextlineCenters ( PIX *pixs, l_int32 debugflag ); +LEPT_DLL extern PTAA * dewarpRemoveShortLines ( PIX *pixs, PTAA *ptaas, l_float32 fract, l_int32 debugflag ); +LEPT_DLL extern l_ok dewarpFindHorizSlopeDisparity ( L_DEWARP *dew, PIX *pixb, l_float32 fractthresh, l_int32 parity ); +LEPT_DLL extern l_ok dewarpBuildLineModel ( L_DEWARP *dew, l_int32 opensize, const char *debugfile ); +LEPT_DLL extern l_ok dewarpaModelStatus ( L_DEWARPA *dewa, l_int32 pageno, l_int32 *pvsuccess, l_int32 *phsuccess ); +LEPT_DLL extern l_ok dewarpaApplyDisparity ( L_DEWARPA *dewa, l_int32 pageno, PIX *pixs, l_int32 grayin, l_int32 x, l_int32 y, PIX **ppixd, const char *debugfile ); +LEPT_DLL extern l_ok dewarpaApplyDisparityBoxa ( L_DEWARPA *dewa, l_int32 pageno, PIX *pixs, BOXA *boxas, l_int32 mapdir, l_int32 x, l_int32 y, BOXA **pboxad, const char *debugfile ); +LEPT_DLL extern l_ok dewarpMinimize ( L_DEWARP *dew ); +LEPT_DLL extern l_ok dewarpPopulateFullRes ( L_DEWARP *dew, PIX *pix, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok dewarpSinglePage ( PIX *pixs, l_int32 thresh, l_int32 adaptive, l_int32 useboth, l_int32 check_columns, PIX **ppixd, L_DEWARPA **pdewa, l_int32 debug ); +LEPT_DLL extern l_ok dewarpSinglePageInit ( PIX *pixs, l_int32 thresh, l_int32 adaptive, l_int32 useboth, l_int32 check_columns, PIX **ppixb, L_DEWARPA **pdewa ); +LEPT_DLL extern l_ok dewarpSinglePageRun ( PIX *pixs, PIX *pixb, L_DEWARPA *dewa, PIX **ppixd, l_int32 debug ); +LEPT_DLL extern l_ok dewarpaListPages ( L_DEWARPA *dewa ); +LEPT_DLL extern l_ok dewarpaSetValidModels ( L_DEWARPA *dewa, l_int32 notests, l_int32 debug ); +LEPT_DLL extern l_ok dewarpaInsertRefModels ( L_DEWARPA *dewa, l_int32 notests, l_int32 debug ); +LEPT_DLL extern l_ok dewarpaStripRefModels ( L_DEWARPA *dewa ); +LEPT_DLL extern l_ok dewarpaRestoreModels ( L_DEWARPA *dewa ); +LEPT_DLL extern l_ok dewarpaInfo ( FILE *fp, L_DEWARPA *dewa ); +LEPT_DLL extern l_ok dewarpaModelStats ( L_DEWARPA *dewa, l_int32 *pnnone, l_int32 *pnvsuccess, l_int32 *pnvvalid, l_int32 *pnhsuccess, l_int32 *pnhvalid, l_int32 *pnref ); +LEPT_DLL extern l_ok dewarpaShowArrays ( L_DEWARPA *dewa, l_float32 scalefact, l_int32 first, l_int32 last ); +LEPT_DLL extern l_ok dewarpDebug ( L_DEWARP *dew, const char *subdirs, l_int32 index ); +LEPT_DLL extern l_ok dewarpShowResults ( L_DEWARPA *dewa, SARRAY *sa, BOXA *boxa, l_int32 firstpage, l_int32 lastpage, const char *pdfout ); +LEPT_DLL extern L_DNA * l_dnaCreate ( l_int32 n ); +LEPT_DLL extern L_DNA * l_dnaCreateFromIArray ( l_int32 *iarray, l_int32 size ); +LEPT_DLL extern L_DNA * l_dnaCreateFromDArray ( l_float64 *darray, l_int32 size, l_int32 copyflag ); +LEPT_DLL extern L_DNA * l_dnaMakeSequence ( l_float64 startval, l_float64 increment, l_int32 size ); +LEPT_DLL extern void l_dnaDestroy ( L_DNA **pda ); +LEPT_DLL extern L_DNA * l_dnaCopy ( L_DNA *da ); +LEPT_DLL extern L_DNA * l_dnaClone ( L_DNA *da ); +LEPT_DLL extern l_ok l_dnaEmpty ( L_DNA *da ); +LEPT_DLL extern l_ok l_dnaAddNumber ( L_DNA *da, l_float64 val ); +LEPT_DLL extern l_ok l_dnaInsertNumber ( L_DNA *da, l_int32 index, l_float64 val ); +LEPT_DLL extern l_ok l_dnaRemoveNumber ( L_DNA *da, l_int32 index ); +LEPT_DLL extern l_ok l_dnaReplaceNumber ( L_DNA *da, l_int32 index, l_float64 val ); +LEPT_DLL extern l_int32 l_dnaGetCount ( L_DNA *da ); +LEPT_DLL extern l_ok l_dnaSetCount ( L_DNA *da, l_int32 newcount ); +LEPT_DLL extern l_ok l_dnaGetDValue ( L_DNA *da, l_int32 index, l_float64 *pval ); +LEPT_DLL extern l_ok l_dnaGetIValue ( L_DNA *da, l_int32 index, l_int32 *pival ); +LEPT_DLL extern l_ok l_dnaSetValue ( L_DNA *da, l_int32 index, l_float64 val ); +LEPT_DLL extern l_ok l_dnaShiftValue ( L_DNA *da, l_int32 index, l_float64 diff ); +LEPT_DLL extern l_int32 * l_dnaGetIArray ( L_DNA *da ); +LEPT_DLL extern l_float64 * l_dnaGetDArray ( L_DNA *da, l_int32 copyflag ); +LEPT_DLL extern l_ok l_dnaGetParameters ( L_DNA *da, l_float64 *pstartx, l_float64 *pdelx ); +LEPT_DLL extern l_ok l_dnaSetParameters ( L_DNA *da, l_float64 startx, l_float64 delx ); +LEPT_DLL extern l_ok l_dnaCopyParameters ( L_DNA *dad, L_DNA *das ); +LEPT_DLL extern L_DNA * l_dnaRead ( const char *filename ); +LEPT_DLL extern L_DNA * l_dnaReadStream ( FILE *fp ); +LEPT_DLL extern L_DNA * l_dnaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok l_dnaWrite ( const char *filename, L_DNA *da ); +LEPT_DLL extern l_ok l_dnaWriteStream ( FILE *fp, L_DNA *da ); +LEPT_DLL extern l_ok l_dnaWriteStderr ( L_DNA *da ); +LEPT_DLL extern l_ok l_dnaWriteMem ( l_uint8 **pdata, size_t *psize, L_DNA *da ); +LEPT_DLL extern L_DNAA * l_dnaaCreate ( l_int32 n ); +LEPT_DLL extern L_DNAA * l_dnaaCreateFull ( l_int32 nptr, l_int32 n ); +LEPT_DLL extern l_ok l_dnaaTruncate ( L_DNAA *daa ); +LEPT_DLL extern void l_dnaaDestroy ( L_DNAA **pdaa ); +LEPT_DLL extern l_ok l_dnaaAddDna ( L_DNAA *daa, L_DNA *da, l_int32 copyflag ); +LEPT_DLL extern l_int32 l_dnaaGetCount ( L_DNAA *daa ); +LEPT_DLL extern l_int32 l_dnaaGetDnaCount ( L_DNAA *daa, l_int32 index ); +LEPT_DLL extern l_int32 l_dnaaGetNumberCount ( L_DNAA *daa ); +LEPT_DLL extern L_DNA * l_dnaaGetDna ( L_DNAA *daa, l_int32 index, l_int32 accessflag ); +LEPT_DLL extern l_ok l_dnaaReplaceDna ( L_DNAA *daa, l_int32 index, L_DNA *da ); +LEPT_DLL extern l_ok l_dnaaGetValue ( L_DNAA *daa, l_int32 i, l_int32 j, l_float64 *pval ); +LEPT_DLL extern l_ok l_dnaaAddNumber ( L_DNAA *daa, l_int32 index, l_float64 val ); +LEPT_DLL extern L_DNAA * l_dnaaRead ( const char *filename ); +LEPT_DLL extern L_DNAA * l_dnaaReadStream ( FILE *fp ); +LEPT_DLL extern L_DNAA * l_dnaaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok l_dnaaWrite ( const char *filename, L_DNAA *daa ); +LEPT_DLL extern l_ok l_dnaaWriteStream ( FILE *fp, L_DNAA *daa ); +LEPT_DLL extern l_ok l_dnaaWriteMem ( l_uint8 **pdata, size_t *psize, L_DNAA *daa ); +LEPT_DLL extern l_ok l_dnaJoin ( L_DNA *dad, L_DNA *das, l_int32 istart, l_int32 iend ); +LEPT_DLL extern L_DNA * l_dnaaFlattenToDna ( L_DNAA *daa ); +LEPT_DLL extern L_DNA * l_dnaSelectRange ( L_DNA *das, l_int32 first, l_int32 last ); +LEPT_DLL extern NUMA * l_dnaConvertToNuma ( L_DNA *da ); +LEPT_DLL extern L_DNA * numaConvertToDna ( NUMA *na ); +LEPT_DLL extern L_DNA * pixConvertDataToDna ( PIX *pix ); +LEPT_DLL extern L_ASET * l_asetCreateFromDna ( L_DNA *da ); +LEPT_DLL extern l_ok l_dnaRemoveDupsByAset ( L_DNA *das, L_DNA **pdad ); +LEPT_DLL extern l_ok l_dnaUnionByAset ( L_DNA *da1, L_DNA *da2, L_DNA **pdad ); +LEPT_DLL extern l_ok l_dnaIntersectionByAset ( L_DNA *da1, L_DNA *da2, L_DNA **pdad ); +LEPT_DLL extern L_HASHMAP * l_hmapCreateFromDna ( L_DNA *da ); +LEPT_DLL extern l_ok l_dnaRemoveDupsByHmap ( L_DNA *das, L_DNA **pdad, L_HASHMAP **phmap ); +LEPT_DLL extern l_ok l_dnaUnionByHmap ( L_DNA *da1, L_DNA *da2, L_DNA **pdad ); +LEPT_DLL extern l_ok l_dnaIntersectionByHmap ( L_DNA *da1, L_DNA *da2, L_DNA **pdad ); +LEPT_DLL extern l_ok l_dnaMakeHistoByHmap ( L_DNA *das, L_DNA **pdav, L_DNA **pdac ); +LEPT_DLL extern L_DNA * l_dnaDiffAdjValues ( L_DNA *das ); +LEPT_DLL extern L_DNAHASH * l_dnaHashCreate ( l_int32 nbuckets, l_int32 initsize ); +LEPT_DLL extern void l_dnaHashDestroy ( L_DNAHASH **pdahash ); +LEPT_DLL extern L_DNA * l_dnaHashGetDna ( L_DNAHASH *dahash, l_uint64 key, l_int32 copyflag ); +LEPT_DLL extern l_ok l_dnaHashAdd ( L_DNAHASH *dahash, l_uint64 key, l_float64 value ); +LEPT_DLL extern PIX * pixMorphDwa_2 ( PIX *pixd, PIX *pixs, l_int32 operation, char *selname ); +LEPT_DLL extern PIX * pixFMorphopGen_2 ( PIX *pixd, PIX *pixs, l_int32 operation, char *selname ); +LEPT_DLL extern l_int32 fmorphopgen_low_2 ( l_uint32 *datad, l_int32 w, l_int32 h, l_int32 wpld, l_uint32 *datas, l_int32 wpls, l_int32 index ); +LEPT_DLL extern PIX * pixSobelEdgeFilter ( PIX *pixs, l_int32 orientflag ); +LEPT_DLL extern PIX * pixTwoSidedEdgeFilter ( PIX *pixs, l_int32 orientflag ); +LEPT_DLL extern l_ok pixMeasureEdgeSmoothness ( PIX *pixs, l_int32 side, l_int32 minjump, l_int32 minreversal, l_float32 *pjpl, l_float32 *pjspl, l_float32 *prpl, const char *debugfile ); +LEPT_DLL extern NUMA * pixGetEdgeProfile ( PIX *pixs, l_int32 side, const char *debugfile ); +LEPT_DLL extern l_ok pixGetLastOffPixelInRun ( PIX *pixs, l_int32 x, l_int32 y, l_int32 direction, l_int32 *ploc ); +LEPT_DLL extern l_int32 pixGetLastOnPixelInRun ( PIX *pixs, l_int32 x, l_int32 y, l_int32 direction, l_int32 *ploc ); +LEPT_DLL extern char * encodeBase64 ( const l_uint8 *inarray, l_int32 insize, l_int32 *poutsize ); +LEPT_DLL extern l_uint8 * decodeBase64 ( const char *inarray, l_int32 insize, l_int32 *poutsize ); +LEPT_DLL extern char * encodeAscii85 ( const l_uint8 *inarray, size_t insize, size_t *poutsize ); +LEPT_DLL extern l_uint8 * decodeAscii85 ( const char *inarray, size_t insize, size_t *poutsize ); +LEPT_DLL extern char * encodeAscii85WithComp ( const l_uint8 *indata, size_t insize, size_t *poutsize ); +LEPT_DLL extern l_uint8 * decodeAscii85WithComp ( const char *instr, size_t insize, size_t *poutsize ); +LEPT_DLL extern char * reformatPacked64 ( const char *inarray, l_int32 insize, l_int32 leadspace, l_int32 linechars, l_int32 addquotes, l_int32 *poutsize ); +LEPT_DLL extern PIX * pixGammaTRC ( PIX *pixd, PIX *pixs, l_float32 gamma, l_int32 minval, l_int32 maxval ); +LEPT_DLL extern PIX * pixGammaTRCMasked ( PIX *pixd, PIX *pixs, PIX *pixm, l_float32 gamma, l_int32 minval, l_int32 maxval ); +LEPT_DLL extern PIX * pixGammaTRCWithAlpha ( PIX *pixd, PIX *pixs, l_float32 gamma, l_int32 minval, l_int32 maxval ); +LEPT_DLL extern NUMA * numaGammaTRC ( l_float32 gamma, l_int32 minval, l_int32 maxval ); +LEPT_DLL extern PIX * pixContrastTRC ( PIX *pixd, PIX *pixs, l_float32 factor ); +LEPT_DLL extern PIX * pixContrastTRCMasked ( PIX *pixd, PIX *pixs, PIX *pixm, l_float32 factor ); +LEPT_DLL extern NUMA * numaContrastTRC ( l_float32 factor ); +LEPT_DLL extern PIX * pixEqualizeTRC ( PIX *pixd, PIX *pixs, l_float32 fract, l_int32 factor ); +LEPT_DLL extern NUMA * numaEqualizeTRC ( PIX *pix, l_float32 fract, l_int32 factor ); +LEPT_DLL extern l_int32 pixTRCMap ( PIX *pixs, PIX *pixm, NUMA *na ); +LEPT_DLL extern l_int32 pixTRCMapGeneral ( PIX *pixs, PIX *pixm, NUMA *nar, NUMA *nag, NUMA *nab ); +LEPT_DLL extern PIX * pixUnsharpMasking ( PIX *pixs, l_int32 halfwidth, l_float32 fract ); +LEPT_DLL extern PIX * pixUnsharpMaskingGray ( PIX *pixs, l_int32 halfwidth, l_float32 fract ); +LEPT_DLL extern PIX * pixUnsharpMaskingFast ( PIX *pixs, l_int32 halfwidth, l_float32 fract, l_int32 direction ); +LEPT_DLL extern PIX * pixUnsharpMaskingGrayFast ( PIX *pixs, l_int32 halfwidth, l_float32 fract, l_int32 direction ); +LEPT_DLL extern PIX * pixUnsharpMaskingGray1D ( PIX *pixs, l_int32 halfwidth, l_float32 fract, l_int32 direction ); +LEPT_DLL extern PIX * pixUnsharpMaskingGray2D ( PIX *pixs, l_int32 halfwidth, l_float32 fract ); +LEPT_DLL extern PIX * pixModifyHue ( PIX *pixd, PIX *pixs, l_float32 fract ); +LEPT_DLL extern PIX * pixModifySaturation ( PIX *pixd, PIX *pixs, l_float32 fract ); +LEPT_DLL extern l_int32 pixMeasureSaturation ( PIX *pixs, l_int32 factor, l_float32 *psat ); +LEPT_DLL extern PIX * pixModifyBrightness ( PIX *pixd, PIX *pixs, l_float32 fract ); +LEPT_DLL extern PIX * pixMosaicColorShiftRGB ( PIX *pixs, l_float32 roff, l_float32 goff, l_float32 boff, l_float32 delta, l_int32 nincr ); +LEPT_DLL extern PIX * pixColorShiftRGB ( PIX *pixs, l_float32 rfract, l_float32 gfract, l_float32 bfract ); +LEPT_DLL extern PIX * pixDarkenGray ( PIX *pixd, PIX *pixs, l_int32 thresh, l_int32 satlimit ); +LEPT_DLL extern PIX * pixMultConstantColor ( PIX *pixs, l_float32 rfact, l_float32 gfact, l_float32 bfact ); +LEPT_DLL extern PIX * pixMultMatrixColor ( PIX *pixs, L_KERNEL *kel ); +LEPT_DLL extern PIX * pixHalfEdgeByBandpass ( PIX *pixs, l_int32 sm1h, l_int32 sm1v, l_int32 sm2h, l_int32 sm2v ); +LEPT_DLL extern l_ok fhmtautogen ( SELA *sela, l_int32 fileindex, const char *filename ); +LEPT_DLL extern l_ok fhmtautogen1 ( SELA *sela, l_int32 fileindex, const char *filename ); +LEPT_DLL extern l_ok fhmtautogen2 ( SELA *sela, l_int32 fileindex, const char *filename ); +LEPT_DLL extern PIX * pixHMTDwa_1 ( PIX *pixd, PIX *pixs, const char *selname ); +LEPT_DLL extern PIX * pixFHMTGen_1 ( PIX *pixd, PIX *pixs, const char *selname ); +LEPT_DLL extern l_int32 fhmtgen_low_1 ( l_uint32 *datad, l_int32 w, l_int32 h, l_int32 wpld, l_uint32 *datas, l_int32 wpls, l_int32 index ); +LEPT_DLL extern l_ok pixItalicWords ( PIX *pixs, BOXA *boxaw, PIX *pixw, BOXA **pboxa, l_int32 debugflag ); +LEPT_DLL extern PIX * pixOrientCorrect ( PIX *pixs, l_float32 minupconf, l_float32 minratio, l_float32 *pupconf, l_float32 *pleftconf, l_int32 *protation, l_int32 debug ); +LEPT_DLL extern l_ok pixOrientDetect ( PIX *pixs, l_float32 *pupconf, l_float32 *pleftconf, l_int32 mincount, l_int32 debug ); +LEPT_DLL extern l_ok makeOrientDecision ( l_float32 upconf, l_float32 leftconf, l_float32 minupconf, l_float32 minratio, l_int32 *porient, l_int32 debug ); +LEPT_DLL extern l_ok pixUpDownDetect ( PIX *pixs, l_float32 *pconf, l_int32 mincount, l_int32 npixels, l_int32 debug ); +LEPT_DLL extern l_ok pixMirrorDetect ( PIX *pixs, l_float32 *pconf, l_int32 mincount, l_int32 debug ); +LEPT_DLL extern l_ok fmorphautogen ( SELA *sela, l_int32 fileindex, const char *filename ); +LEPT_DLL extern l_ok fmorphautogen1 ( SELA *sela, l_int32 fileindex, const char *filename ); +LEPT_DLL extern l_int32 fmorphautogen2 ( SELA *sela, l_int32 fileindex, const char *filename ); +LEPT_DLL extern PIX * pixMorphDwa_1 ( PIX *pixd, PIX *pixs, l_int32 operation, char *selname ); +LEPT_DLL extern PIX * pixFMorphopGen_1 ( PIX *pixd, PIX *pixs, l_int32 operation, char *selname ); +LEPT_DLL extern l_int32 fmorphopgen_low_1 ( l_uint32 *datad, l_int32 w, l_int32 h, l_int32 wpld, l_uint32 *datas, l_int32 wpls, l_int32 index ); +LEPT_DLL extern FPIX * fpixCreate ( l_int32 width, l_int32 height ); +LEPT_DLL extern FPIX * fpixCreateTemplate ( FPIX *fpixs ); +LEPT_DLL extern FPIX * fpixClone ( FPIX *fpix ); +LEPT_DLL extern FPIX * fpixCopy ( FPIX *fpixs ); +LEPT_DLL extern void fpixDestroy ( FPIX **pfpix ); +LEPT_DLL extern l_ok fpixGetDimensions ( FPIX *fpix, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok fpixSetDimensions ( FPIX *fpix, l_int32 w, l_int32 h ); +LEPT_DLL extern l_int32 fpixGetWpl ( FPIX *fpix ); +LEPT_DLL extern l_ok fpixSetWpl ( FPIX *fpix, l_int32 wpl ); +LEPT_DLL extern l_ok fpixGetResolution ( FPIX *fpix, l_int32 *pxres, l_int32 *pyres ); +LEPT_DLL extern l_ok fpixSetResolution ( FPIX *fpix, l_int32 xres, l_int32 yres ); +LEPT_DLL extern l_ok fpixCopyResolution ( FPIX *fpixd, FPIX *fpixs ); +LEPT_DLL extern l_float32 * fpixGetData ( FPIX *fpix ); +LEPT_DLL extern l_ok fpixSetData ( FPIX *fpix, l_float32 *data ); +LEPT_DLL extern l_ok fpixGetPixel ( FPIX *fpix, l_int32 x, l_int32 y, l_float32 *pval ); +LEPT_DLL extern l_ok fpixSetPixel ( FPIX *fpix, l_int32 x, l_int32 y, l_float32 val ); +LEPT_DLL extern FPIXA * fpixaCreate ( l_int32 n ); +LEPT_DLL extern FPIXA * fpixaCopy ( FPIXA *fpixa, l_int32 copyflag ); +LEPT_DLL extern void fpixaDestroy ( FPIXA **pfpixa ); +LEPT_DLL extern l_ok fpixaAddFPix ( FPIXA *fpixa, FPIX *fpix, l_int32 copyflag ); +LEPT_DLL extern l_int32 fpixaGetCount ( FPIXA *fpixa ); +LEPT_DLL extern FPIX * fpixaGetFPix ( FPIXA *fpixa, l_int32 index, l_int32 accesstype ); +LEPT_DLL extern l_ok fpixaGetFPixDimensions ( FPIXA *fpixa, l_int32 index, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_float32 * fpixaGetData ( FPIXA *fpixa, l_int32 index ); +LEPT_DLL extern l_ok fpixaGetPixel ( FPIXA *fpixa, l_int32 index, l_int32 x, l_int32 y, l_float32 *pval ); +LEPT_DLL extern l_ok fpixaSetPixel ( FPIXA *fpixa, l_int32 index, l_int32 x, l_int32 y, l_float32 val ); +LEPT_DLL extern DPIX * dpixCreate ( l_int32 width, l_int32 height ); +LEPT_DLL extern DPIX * dpixCreateTemplate ( DPIX *dpixs ); +LEPT_DLL extern DPIX * dpixClone ( DPIX *dpix ); +LEPT_DLL extern DPIX * dpixCopy ( DPIX *dpixs ); +LEPT_DLL extern void dpixDestroy ( DPIX **pdpix ); +LEPT_DLL extern l_ok dpixGetDimensions ( DPIX *dpix, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok dpixSetDimensions ( DPIX *dpix, l_int32 w, l_int32 h ); +LEPT_DLL extern l_int32 dpixGetWpl ( DPIX *dpix ); +LEPT_DLL extern l_ok dpixSetWpl ( DPIX *dpix, l_int32 wpl ); +LEPT_DLL extern l_ok dpixGetResolution ( DPIX *dpix, l_int32 *pxres, l_int32 *pyres ); +LEPT_DLL extern l_ok dpixSetResolution ( DPIX *dpix, l_int32 xres, l_int32 yres ); +LEPT_DLL extern l_ok dpixCopyResolution ( DPIX *dpixd, DPIX *dpixs ); +LEPT_DLL extern l_float64 * dpixGetData ( DPIX *dpix ); +LEPT_DLL extern l_ok dpixSetData ( DPIX *dpix, l_float64 *data ); +LEPT_DLL extern l_ok dpixGetPixel ( DPIX *dpix, l_int32 x, l_int32 y, l_float64 *pval ); +LEPT_DLL extern l_ok dpixSetPixel ( DPIX *dpix, l_int32 x, l_int32 y, l_float64 val ); +LEPT_DLL extern FPIX * fpixRead ( const char *filename ); +LEPT_DLL extern FPIX * fpixReadStream ( FILE *fp ); +LEPT_DLL extern FPIX * fpixReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok fpixWrite ( const char *filename, FPIX *fpix ); +LEPT_DLL extern l_ok fpixWriteStream ( FILE *fp, FPIX *fpix ); +LEPT_DLL extern l_ok fpixWriteMem ( l_uint8 **pdata, size_t *psize, FPIX *fpix ); +LEPT_DLL extern FPIX * fpixEndianByteSwap ( FPIX *fpixd, FPIX *fpixs ); +LEPT_DLL extern DPIX * dpixRead ( const char *filename ); +LEPT_DLL extern DPIX * dpixReadStream ( FILE *fp ); +LEPT_DLL extern DPIX * dpixReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok dpixWrite ( const char *filename, DPIX *dpix ); +LEPT_DLL extern l_ok dpixWriteStream ( FILE *fp, DPIX *dpix ); +LEPT_DLL extern l_ok dpixWriteMem ( l_uint8 **pdata, size_t *psize, DPIX *dpix ); +LEPT_DLL extern DPIX * dpixEndianByteSwap ( DPIX *dpixd, DPIX *dpixs ); +LEPT_DLL extern l_ok fpixPrintStream ( FILE *fp, FPIX *fpix, l_int32 factor ); +LEPT_DLL extern FPIX * pixConvertToFPix ( PIX *pixs, l_int32 ncomps ); +LEPT_DLL extern DPIX * pixConvertToDPix ( PIX *pixs, l_int32 ncomps ); +LEPT_DLL extern PIX * fpixConvertToPix ( FPIX *fpixs, l_int32 outdepth, l_int32 negvals, l_int32 errorflag ); +LEPT_DLL extern PIX * fpixDisplayMaxDynamicRange ( FPIX *fpixs ); +LEPT_DLL extern DPIX * fpixConvertToDPix ( FPIX *fpix ); +LEPT_DLL extern PIX * dpixConvertToPix ( DPIX *dpixs, l_int32 outdepth, l_int32 negvals, l_int32 errorflag ); +LEPT_DLL extern FPIX * dpixConvertToFPix ( DPIX *dpix ); +LEPT_DLL extern l_ok fpixGetMin ( FPIX *fpix, l_float32 *pminval, l_int32 *pxminloc, l_int32 *pyminloc ); +LEPT_DLL extern l_ok fpixGetMax ( FPIX *fpix, l_float32 *pmaxval, l_int32 *pxmaxloc, l_int32 *pymaxloc ); +LEPT_DLL extern l_ok dpixGetMin ( DPIX *dpix, l_float64 *pminval, l_int32 *pxminloc, l_int32 *pyminloc ); +LEPT_DLL extern l_ok dpixGetMax ( DPIX *dpix, l_float64 *pmaxval, l_int32 *pxmaxloc, l_int32 *pymaxloc ); +LEPT_DLL extern FPIX * fpixScaleByInteger ( FPIX *fpixs, l_int32 factor ); +LEPT_DLL extern DPIX * dpixScaleByInteger ( DPIX *dpixs, l_int32 factor ); +LEPT_DLL extern FPIX * fpixLinearCombination ( FPIX *fpixd, FPIX *fpixs1, FPIX *fpixs2, l_float32 a, l_float32 b ); +LEPT_DLL extern l_ok fpixAddMultConstant ( FPIX *fpix, l_float32 addc, l_float32 multc ); +LEPT_DLL extern DPIX * dpixLinearCombination ( DPIX *dpixd, DPIX *dpixs1, DPIX *dpixs2, l_float32 a, l_float32 b ); +LEPT_DLL extern l_ok dpixAddMultConstant ( DPIX *dpix, l_float64 addc, l_float64 multc ); +LEPT_DLL extern l_ok fpixSetAllArbitrary ( FPIX *fpix, l_float32 inval ); +LEPT_DLL extern l_ok dpixSetAllArbitrary ( DPIX *dpix, l_float64 inval ); +LEPT_DLL extern FPIX * fpixAddBorder ( FPIX *fpixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern FPIX * fpixRemoveBorder ( FPIX *fpixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern FPIX * fpixAddMirroredBorder ( FPIX *fpixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern FPIX * fpixAddContinuedBorder ( FPIX *fpixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern FPIX * fpixAddSlopeBorder ( FPIX *fpixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern l_ok fpixRasterop ( FPIX *fpixd, l_int32 dx, l_int32 dy, l_int32 dw, l_int32 dh, FPIX *fpixs, l_int32 sx, l_int32 sy ); +LEPT_DLL extern FPIX * fpixRotateOrth ( FPIX *fpixs, l_int32 quads ); +LEPT_DLL extern FPIX * fpixRotate180 ( FPIX *fpixd, FPIX *fpixs ); +LEPT_DLL extern FPIX * fpixRotate90 ( FPIX *fpixs, l_int32 direction ); +LEPT_DLL extern FPIX * fpixFlipLR ( FPIX *fpixd, FPIX *fpixs ); +LEPT_DLL extern FPIX * fpixFlipTB ( FPIX *fpixd, FPIX *fpixs ); +LEPT_DLL extern FPIX * fpixAffinePta ( FPIX *fpixs, PTA *ptad, PTA *ptas, l_int32 border, l_float32 inval ); +LEPT_DLL extern FPIX * fpixAffine ( FPIX *fpixs, l_float32 *vc, l_float32 inval ); +LEPT_DLL extern FPIX * fpixProjectivePta ( FPIX *fpixs, PTA *ptad, PTA *ptas, l_int32 border, l_float32 inval ); +LEPT_DLL extern FPIX * fpixProjective ( FPIX *fpixs, l_float32 *vc, l_float32 inval ); +LEPT_DLL extern l_ok linearInterpolatePixelFloat ( l_float32 *datas, l_int32 w, l_int32 h, l_float32 x, l_float32 y, l_float32 inval, l_float32 *pval ); +LEPT_DLL extern PIX * fpixThresholdToPix ( FPIX *fpix, l_float32 thresh ); +LEPT_DLL extern FPIX * pixComponentFunction ( PIX *pix, l_float32 rnum, l_float32 gnum, l_float32 bnum, l_float32 rdenom, l_float32 gdenom, l_float32 bdenom ); +LEPT_DLL extern PIX * pixReadStreamGif ( FILE *fp ); +LEPT_DLL extern PIX * pixReadMemGif ( const l_uint8 *cdata, size_t size ); +LEPT_DLL extern l_ok pixWriteStreamGif ( FILE *fp, PIX *pix ); +LEPT_DLL extern l_ok pixWriteMemGif ( l_uint8 **pdata, size_t *psize, PIX *pix ); +LEPT_DLL extern GPLOT * gplotCreate ( const char *rootname, l_int32 outformat, const char *title, const char *xlabel, const char *ylabel ); +LEPT_DLL extern void gplotDestroy ( GPLOT **pgplot ); +LEPT_DLL extern l_ok gplotAddPlot ( GPLOT *gplot, NUMA *nax, NUMA *nay, l_int32 plotstyle, const char *plotlabel ); +LEPT_DLL extern l_ok gplotSetScaling ( GPLOT *gplot, l_int32 scaling ); +LEPT_DLL extern PIX * gplotMakeOutputPix ( GPLOT *gplot ); +LEPT_DLL extern l_ok gplotMakeOutput ( GPLOT *gplot ); +LEPT_DLL extern l_ok gplotGenCommandFile ( GPLOT *gplot ); +LEPT_DLL extern l_ok gplotGenDataFiles ( GPLOT *gplot ); +LEPT_DLL extern l_ok gplotSimple1 ( NUMA *na, l_int32 outformat, const char *outroot, const char *title ); +LEPT_DLL extern l_ok gplotSimple2 ( NUMA *na1, NUMA *na2, l_int32 outformat, const char *outroot, const char *title ); +LEPT_DLL extern l_ok gplotSimpleN ( NUMAA *naa, l_int32 outformat, const char *outroot, const char *title ); +LEPT_DLL extern PIX * gplotSimplePix1 ( NUMA *na, const char *title ); +LEPT_DLL extern PIX * gplotSimplePix2 ( NUMA *na1, NUMA *na2, const char *title ); +LEPT_DLL extern PIX * gplotSimplePixN ( NUMAA *naa, const char *title ); +LEPT_DLL extern GPLOT * gplotSimpleXY1 ( NUMA *nax, NUMA *nay, l_int32 plotstyle, l_int32 outformat, const char *outroot, const char *title ); +LEPT_DLL extern GPLOT * gplotSimpleXY2 ( NUMA *nax, NUMA *nay1, NUMA *nay2, l_int32 plotstyle, l_int32 outformat, const char *outroot, const char *title ); +LEPT_DLL extern GPLOT * gplotSimpleXYN ( NUMA *nax, NUMAA *naay, l_int32 plotstyle, l_int32 outformat, const char *outroot, const char *title ); +LEPT_DLL extern PIX * gplotGeneralPix1 ( NUMA *na, l_int32 plotstyle, const char *rootname, const char *title, const char *xlabel, const char *ylabel ); +LEPT_DLL extern PIX * gplotGeneralPix2 ( NUMA *na1, NUMA *na2, l_int32 plotstyle, const char *rootname, const char *title, const char *xlabel, const char *ylabel ); +LEPT_DLL extern PIX * gplotGeneralPixN ( NUMA *nax, NUMAA *naay, l_int32 plotstyle, const char *rootname, const char *title, const char *xlabel, const char *ylabel ); +LEPT_DLL extern GPLOT * gplotRead ( const char *filename ); +LEPT_DLL extern l_ok gplotWrite ( const char *filename, GPLOT *gplot ); +LEPT_DLL extern PTA * generatePtaLine ( l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2 ); +LEPT_DLL extern PTA * generatePtaWideLine ( l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2, l_int32 width ); +LEPT_DLL extern PTA * generatePtaBox ( BOX *box, l_int32 width ); +LEPT_DLL extern PTA * generatePtaBoxa ( BOXA *boxa, l_int32 width, l_int32 removedups ); +LEPT_DLL extern PTA * generatePtaHashBox ( BOX *box, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline ); +LEPT_DLL extern PTA * generatePtaHashBoxa ( BOXA *boxa, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline, l_int32 removedups ); +LEPT_DLL extern PTAA * generatePtaaBoxa ( BOXA *boxa ); +LEPT_DLL extern PTAA * generatePtaaHashBoxa ( BOXA *boxa, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline ); +LEPT_DLL extern PTA * generatePtaPolyline ( PTA *ptas, l_int32 width, l_int32 closeflag, l_int32 removedups ); +LEPT_DLL extern PTA * generatePtaGrid ( l_int32 w, l_int32 h, l_int32 nx, l_int32 ny, l_int32 width ); +LEPT_DLL extern PTA * convertPtaLineTo4cc ( PTA *ptas ); +LEPT_DLL extern PTA * generatePtaFilledCircle ( l_int32 radius ); +LEPT_DLL extern PTA * generatePtaFilledSquare ( l_int32 side ); +LEPT_DLL extern PTA * generatePtaLineFromPt ( l_int32 x, l_int32 y, l_float64 length, l_float64 radang ); +LEPT_DLL extern l_ok locatePtRadially ( l_int32 xr, l_int32 yr, l_float64 dist, l_float64 radang, l_float64 *px, l_float64 *py ); +LEPT_DLL extern l_ok pixRenderPlotFromNuma ( PIX **ppix, NUMA *na, l_int32 plotloc, l_int32 linewidth, l_int32 max, l_uint32 color ); +LEPT_DLL extern PTA * makePlotPtaFromNuma ( NUMA *na, l_int32 size, l_int32 plotloc, l_int32 linewidth, l_int32 max ); +LEPT_DLL extern l_ok pixRenderPlotFromNumaGen ( PIX **ppix, NUMA *na, l_int32 orient, l_int32 linewidth, l_int32 refpos, l_int32 max, l_int32 drawref, l_uint32 color ); +LEPT_DLL extern PTA * makePlotPtaFromNumaGen ( NUMA *na, l_int32 orient, l_int32 linewidth, l_int32 refpos, l_int32 max, l_int32 drawref ); +LEPT_DLL extern l_ok pixRenderPta ( PIX *pix, PTA *pta, l_int32 op ); +LEPT_DLL extern l_ok pixRenderPtaArb ( PIX *pix, PTA *pta, l_uint8 rval, l_uint8 gval, l_uint8 bval ); +LEPT_DLL extern l_ok pixRenderPtaBlend ( PIX *pix, PTA *pta, l_uint8 rval, l_uint8 gval, l_uint8 bval, l_float32 fract ); +LEPT_DLL extern l_ok pixRenderLine ( PIX *pix, l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2, l_int32 width, l_int32 op ); +LEPT_DLL extern l_ok pixRenderLineArb ( PIX *pix, l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval ); +LEPT_DLL extern l_ok pixRenderLineBlend ( PIX *pix, l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval, l_float32 fract ); +LEPT_DLL extern l_ok pixRenderBox ( PIX *pix, BOX *box, l_int32 width, l_int32 op ); +LEPT_DLL extern l_ok pixRenderBoxArb ( PIX *pix, BOX *box, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval ); +LEPT_DLL extern l_ok pixRenderBoxBlend ( PIX *pix, BOX *box, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval, l_float32 fract ); +LEPT_DLL extern l_ok pixRenderBoxa ( PIX *pix, BOXA *boxa, l_int32 width, l_int32 op ); +LEPT_DLL extern l_ok pixRenderBoxaArb ( PIX *pix, BOXA *boxa, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval ); +LEPT_DLL extern l_ok pixRenderBoxaBlend ( PIX *pix, BOXA *boxa, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval, l_float32 fract, l_int32 removedups ); +LEPT_DLL extern l_ok pixRenderHashBox ( PIX *pix, BOX *box, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline, l_int32 op ); +LEPT_DLL extern l_ok pixRenderHashBoxArb ( PIX *pix, BOX *box, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixRenderHashBoxBlend ( PIX *pix, BOX *box, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline, l_int32 rval, l_int32 gval, l_int32 bval, l_float32 fract ); +LEPT_DLL extern l_ok pixRenderHashMaskArb ( PIX *pix, PIX *pixm, l_int32 x, l_int32 y, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixRenderHashBoxa ( PIX *pix, BOXA *boxa, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline, l_int32 op ); +LEPT_DLL extern l_ok pixRenderHashBoxaArb ( PIX *pix, BOXA *boxa, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixRenderHashBoxaBlend ( PIX *pix, BOXA *boxa, l_int32 spacing, l_int32 width, l_int32 orient, l_int32 outline, l_int32 rval, l_int32 gval, l_int32 bval, l_float32 fract ); +LEPT_DLL extern l_ok pixRenderPolyline ( PIX *pix, PTA *ptas, l_int32 width, l_int32 op, l_int32 closeflag ); +LEPT_DLL extern l_ok pixRenderPolylineArb ( PIX *pix, PTA *ptas, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval, l_int32 closeflag ); +LEPT_DLL extern l_ok pixRenderPolylineBlend ( PIX *pix, PTA *ptas, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval, l_float32 fract, l_int32 closeflag, l_int32 removedups ); +LEPT_DLL extern l_ok pixRenderGridArb ( PIX *pix, l_int32 nx, l_int32 ny, l_int32 width, l_uint8 rval, l_uint8 gval, l_uint8 bval ); +LEPT_DLL extern PIX * pixRenderRandomCmapPtaa ( PIX *pix, PTAA *ptaa, l_int32 polyflag, l_int32 width, l_int32 closeflag ); +LEPT_DLL extern PIX * pixRenderPolygon ( PTA *ptas, l_int32 width, l_int32 *pxmin, l_int32 *pymin ); +LEPT_DLL extern PIX * pixFillPolygon ( PIX *pixs, PTA *pta, l_int32 xmin, l_int32 ymin ); +LEPT_DLL extern PIX * pixRenderContours ( PIX *pixs, l_int32 startval, l_int32 incr, l_int32 outdepth ); +LEPT_DLL extern PIX * fpixAutoRenderContours ( FPIX *fpix, l_int32 ncontours ); +LEPT_DLL extern PIX * fpixRenderContours ( FPIX *fpixs, l_float32 incr, l_float32 proxim ); +LEPT_DLL extern PTA * pixGeneratePtaBoundary ( PIX *pixs, l_int32 width ); +LEPT_DLL extern PIX * pixErodeGray ( PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixDilateGray ( PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixOpenGray ( PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseGray ( PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixErodeGray3 ( PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixDilateGray3 ( PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixOpenGray3 ( PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseGray3 ( PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixDitherToBinary ( PIX *pixs ); +LEPT_DLL extern PIX * pixDitherToBinarySpec ( PIX *pixs, l_int32 lowerclip, l_int32 upperclip ); +LEPT_DLL extern void ditherToBinaryLineLow ( l_uint32 *lined, l_int32 w, l_uint32 *bufs1, l_uint32 *bufs2, l_int32 lowerclip, l_int32 upperclip, l_int32 lastlineflag ); +LEPT_DLL extern PIX * pixThresholdToBinary ( PIX *pixs, l_int32 thresh ); +LEPT_DLL extern void thresholdToBinaryLineLow ( l_uint32 *lined, l_int32 w, l_uint32 *lines, l_int32 d, l_int32 thresh ); +LEPT_DLL extern PIX * pixVarThresholdToBinary ( PIX *pixs, PIX *pixg ); +LEPT_DLL extern PIX * pixAdaptThresholdToBinary ( PIX *pixs, PIX *pixm, l_float32 gamma ); +LEPT_DLL extern PIX * pixAdaptThresholdToBinaryGen ( PIX *pixs, PIX *pixm, l_float32 gamma, l_int32 blackval, l_int32 whiteval, l_int32 thresh ); +LEPT_DLL extern PIX * pixGenerateMaskByValue ( PIX *pixs, l_int32 val, l_int32 usecmap ); +LEPT_DLL extern PIX * pixGenerateMaskByBand ( PIX *pixs, l_int32 lower, l_int32 upper, l_int32 inband, l_int32 usecmap ); +LEPT_DLL extern PIX * pixDitherTo2bpp ( PIX *pixs, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixDitherTo2bppSpec ( PIX *pixs, l_int32 lowerclip, l_int32 upperclip, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixThresholdTo2bpp ( PIX *pixs, l_int32 nlevels, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixThresholdTo4bpp ( PIX *pixs, l_int32 nlevels, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixThresholdOn8bpp ( PIX *pixs, l_int32 nlevels, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixThresholdGrayArb ( PIX *pixs, const char *edgevals, l_int32 outdepth, l_int32 use_average, l_int32 setblack, l_int32 setwhite ); +LEPT_DLL extern l_int32 * makeGrayQuantIndexTable ( l_int32 nlevels ); +LEPT_DLL extern l_ok makeGrayQuantTableArb ( NUMA *na, l_int32 outdepth, l_int32 **ptab, PIXCMAP **pcmap ); +LEPT_DLL extern PIX * pixGenerateMaskByBand32 ( PIX *pixs, l_uint32 refval, l_int32 delm, l_int32 delp, l_float32 fractm, l_float32 fractp ); +LEPT_DLL extern PIX * pixGenerateMaskByDiscr32 ( PIX *pixs, l_uint32 refval1, l_uint32 refval2, l_int32 distflag ); +LEPT_DLL extern PIX * pixGrayQuantFromHisto ( PIX *pixd, PIX *pixs, PIX *pixm, l_float32 minfract, l_int32 maxsize ); +LEPT_DLL extern PIX * pixGrayQuantFromCmap ( PIX *pixs, PIXCMAP *cmap, l_int32 mindepth ); +LEPT_DLL extern L_HASHMAP * l_hmapCreate ( l_int32 ninit, l_int32 maxocc ); +LEPT_DLL extern void l_hmapDestroy ( L_HASHMAP **phmap ); +LEPT_DLL extern L_HASHITEM * l_hmapLookup ( L_HASHMAP *hmap, l_uint64 key, l_uint64 val, l_int32 op ); +LEPT_DLL extern l_ok l_hmapRehash ( L_HASHMAP *hmap ); +LEPT_DLL extern L_HEAP * lheapCreate ( l_int32 n, l_int32 direction ); +LEPT_DLL extern void lheapDestroy ( L_HEAP **plh, l_int32 freeflag ); +LEPT_DLL extern l_ok lheapAdd ( L_HEAP *lh, void *item ); +LEPT_DLL extern void * lheapRemove ( L_HEAP *lh ); +LEPT_DLL extern l_int32 lheapGetCount ( L_HEAP *lh ); +LEPT_DLL extern void * lheapGetElement ( L_HEAP *lh, l_int32 index ); +LEPT_DLL extern l_ok lheapSort ( L_HEAP *lh ); +LEPT_DLL extern l_ok lheapSortStrictOrder ( L_HEAP *lh ); +LEPT_DLL extern l_ok lheapPrint ( FILE *fp, L_HEAP *lh ); +LEPT_DLL extern JBCLASSER * jbRankHausInit ( l_int32 components, l_int32 maxwidth, l_int32 maxheight, l_int32 size, l_float32 rank ); +LEPT_DLL extern JBCLASSER * jbCorrelationInit ( l_int32 components, l_int32 maxwidth, l_int32 maxheight, l_float32 thresh, l_float32 weightfactor ); +LEPT_DLL extern JBCLASSER * jbCorrelationInitWithoutComponents ( l_int32 components, l_int32 maxwidth, l_int32 maxheight, l_float32 thresh, l_float32 weightfactor ); +LEPT_DLL extern l_ok jbAddPages ( JBCLASSER *classer, SARRAY *safiles ); +LEPT_DLL extern l_ok jbAddPage ( JBCLASSER *classer, PIX *pixs ); +LEPT_DLL extern l_ok jbAddPageComponents ( JBCLASSER *classer, PIX *pixs, BOXA *boxas, PIXA *pixas ); +LEPT_DLL extern l_ok jbClassifyRankHaus ( JBCLASSER *classer, BOXA *boxa, PIXA *pixas ); +LEPT_DLL extern l_int32 pixHaustest ( PIX *pix1, PIX *pix2, PIX *pix3, PIX *pix4, l_float32 delx, l_float32 dely, l_int32 maxdiffw, l_int32 maxdiffh ); +LEPT_DLL extern l_int32 pixRankHaustest ( PIX *pix1, PIX *pix2, PIX *pix3, PIX *pix4, l_float32 delx, l_float32 dely, l_int32 maxdiffw, l_int32 maxdiffh, l_int32 area1, l_int32 area3, l_float32 rank, l_int32 *tab8 ); +LEPT_DLL extern l_ok jbClassifyCorrelation ( JBCLASSER *classer, BOXA *boxa, PIXA *pixas ); +LEPT_DLL extern l_ok jbGetComponents ( PIX *pixs, l_int32 components, l_int32 maxwidth, l_int32 maxheight, BOXA **pboxad, PIXA **ppixad ); +LEPT_DLL extern l_ok pixWordMaskByDilation ( PIX *pixs, PIX **ppixm, l_int32 *psize, PIXA *pixadb ); +LEPT_DLL extern l_ok pixWordBoxesByDilation ( PIX *pixs, l_int32 minwidth, l_int32 minheight, l_int32 maxwidth, l_int32 maxheight, BOXA **pboxa, l_int32 *psize, PIXA *pixadb ); +LEPT_DLL extern PIXA * jbAccumulateComposites ( PIXAA *pixaa, NUMA **pna, PTA **pptat ); +LEPT_DLL extern PIXA * jbTemplatesFromComposites ( PIXA *pixac, NUMA *na ); +LEPT_DLL extern JBCLASSER * jbClasserCreate ( l_int32 method, l_int32 components ); +LEPT_DLL extern void jbClasserDestroy ( JBCLASSER **pclasser ); +LEPT_DLL extern JBDATA * jbDataSave ( JBCLASSER *classer ); +LEPT_DLL extern void jbDataDestroy ( JBDATA **pdata ); +LEPT_DLL extern l_ok jbDataWrite ( const char *rootout, JBDATA *jbdata ); +LEPT_DLL extern JBDATA * jbDataRead ( const char *rootname ); +LEPT_DLL extern PIXA * jbDataRender ( JBDATA *data, l_int32 debugflag ); +LEPT_DLL extern l_ok jbGetULCorners ( JBCLASSER *classer, PIX *pixs, BOXA *boxa ); +LEPT_DLL extern l_ok jbGetLLCorners ( JBCLASSER *classer ); +LEPT_DLL extern l_ok readHeaderJp2k ( const char *filename, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *pcodec ); +LEPT_DLL extern l_ok freadHeaderJp2k ( FILE *fp, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *pcodec ); +LEPT_DLL extern l_ok readHeaderMemJp2k ( const l_uint8 *data, size_t size, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *pcodec ); +LEPT_DLL extern l_int32 fgetJp2kResolution ( FILE *fp, l_int32 *pxres, l_int32 *pyres ); +LEPT_DLL extern PIX * pixReadJp2k ( const char *filename, l_uint32 reduction, BOX *box, l_int32 hint, l_int32 debug ); +LEPT_DLL extern PIX * pixReadStreamJp2k ( FILE *fp, l_uint32 reduction, BOX *box, l_int32 hint, l_int32 debug ); +LEPT_DLL extern l_ok pixWriteJp2k ( const char *filename, PIX *pix, l_int32 quality, l_int32 nlevels, l_int32 hint, l_int32 debug ); +LEPT_DLL extern l_ok pixWriteStreamJp2k ( FILE *fp, PIX *pix, l_int32 quality, l_int32 nlevels, l_int32 codec, l_int32 hint, l_int32 debug ); +LEPT_DLL extern PIX * pixReadMemJp2k ( const l_uint8 *data, size_t size, l_uint32 reduction, BOX *box, l_int32 hint, l_int32 debug ); +LEPT_DLL extern l_ok pixWriteMemJp2k ( l_uint8 **pdata, size_t *psize, PIX *pix, l_int32 quality, l_int32 nlevels, l_int32 hint, l_int32 debug ); +LEPT_DLL extern PIX * pixReadJpeg ( const char *filename, l_int32 cmapflag, l_int32 reduction, l_int32 *pnwarn, l_int32 hint ); +LEPT_DLL extern PIX * pixReadStreamJpeg ( FILE *fp, l_int32 cmapflag, l_int32 reduction, l_int32 *pnwarn, l_int32 hint ); +LEPT_DLL extern l_ok readHeaderJpeg ( const char *filename, l_int32 *pw, l_int32 *ph, l_int32 *pspp, l_int32 *pycck, l_int32 *pcmyk ); +LEPT_DLL extern l_ok freadHeaderJpeg ( FILE *fp, l_int32 *pw, l_int32 *ph, l_int32 *pspp, l_int32 *pycck, l_int32 *pcmyk ); +LEPT_DLL extern l_int32 fgetJpegResolution ( FILE *fp, l_int32 *pxres, l_int32 *pyres ); +LEPT_DLL extern l_int32 fgetJpegComment ( FILE *fp, l_uint8 **pcomment ); +LEPT_DLL extern l_ok pixWriteJpeg ( const char *filename, PIX *pix, l_int32 quality, l_int32 progressive ); +LEPT_DLL extern l_ok pixWriteStreamJpeg ( FILE *fp, PIX *pixs, l_int32 quality, l_int32 progressive ); +LEPT_DLL extern PIX * pixReadMemJpeg ( const l_uint8 *data, size_t size, l_int32 cmflag, l_int32 reduction, l_int32 *pnwarn, l_int32 hint ); +LEPT_DLL extern l_ok readHeaderMemJpeg ( const l_uint8 *data, size_t size, l_int32 *pw, l_int32 *ph, l_int32 *pspp, l_int32 *pycck, l_int32 *pcmyk ); +LEPT_DLL extern l_ok readResolutionMemJpeg ( const l_uint8 *data, size_t size, l_int32 *pxres, l_int32 *pyres ); +LEPT_DLL extern l_ok pixWriteMemJpeg ( l_uint8 **pdata, size_t *psize, PIX *pix, l_int32 quality, l_int32 progressive ); +LEPT_DLL extern l_ok pixSetChromaSampling ( PIX *pix, l_int32 sampling ); +LEPT_DLL extern L_KERNEL * kernelCreate ( l_int32 height, l_int32 width ); +LEPT_DLL extern void kernelDestroy ( L_KERNEL **pkel ); +LEPT_DLL extern L_KERNEL * kernelCopy ( L_KERNEL *kels ); +LEPT_DLL extern l_ok kernelGetElement ( L_KERNEL *kel, l_int32 row, l_int32 col, l_float32 *pval ); +LEPT_DLL extern l_ok kernelSetElement ( L_KERNEL *kel, l_int32 row, l_int32 col, l_float32 val ); +LEPT_DLL extern l_ok kernelGetParameters ( L_KERNEL *kel, l_int32 *psy, l_int32 *psx, l_int32 *pcy, l_int32 *pcx ); +LEPT_DLL extern l_ok kernelSetOrigin ( L_KERNEL *kel, l_int32 cy, l_int32 cx ); +LEPT_DLL extern l_ok kernelGetSum ( L_KERNEL *kel, l_float32 *psum ); +LEPT_DLL extern l_ok kernelGetMinMax ( L_KERNEL *kel, l_float32 *pmin, l_float32 *pmax ); +LEPT_DLL extern L_KERNEL * kernelNormalize ( L_KERNEL *kels, l_float32 normsum ); +LEPT_DLL extern L_KERNEL * kernelInvert ( L_KERNEL *kels ); +LEPT_DLL extern l_float32 ** create2dFloatArray ( l_int32 sy, l_int32 sx ); +LEPT_DLL extern L_KERNEL * kernelRead ( const char *fname ); +LEPT_DLL extern L_KERNEL * kernelReadStream ( FILE *fp ); +LEPT_DLL extern l_ok kernelWrite ( const char *fname, L_KERNEL *kel ); +LEPT_DLL extern l_ok kernelWriteStream ( FILE *fp, L_KERNEL *kel ); +LEPT_DLL extern L_KERNEL * kernelCreateFromString ( l_int32 h, l_int32 w, l_int32 cy, l_int32 cx, const char *kdata ); +LEPT_DLL extern L_KERNEL * kernelCreateFromFile ( const char *filename ); +LEPT_DLL extern L_KERNEL * kernelCreateFromPix ( PIX *pix, l_int32 cy, l_int32 cx ); +LEPT_DLL extern PIX * kernelDisplayInPix ( L_KERNEL *kel, l_int32 size, l_int32 gthick ); +LEPT_DLL extern NUMA * parseStringForNumbers ( const char *str, const char *seps ); +LEPT_DLL extern L_KERNEL * makeFlatKernel ( l_int32 height, l_int32 width, l_int32 cy, l_int32 cx ); +LEPT_DLL extern L_KERNEL * makeGaussianKernel ( l_int32 halfh, l_int32 halfw, l_float32 stdev, l_float32 max ); +LEPT_DLL extern l_ok makeGaussianKernelSep ( l_int32 halfh, l_int32 halfw, l_float32 stdev, l_float32 max, L_KERNEL **pkelx, L_KERNEL **pkely ); +LEPT_DLL extern L_KERNEL * makeDoGKernel ( l_int32 halfh, l_int32 halfw, l_float32 stdev, l_float32 ratio ); +LEPT_DLL extern char * getImagelibVersions ( void ); +LEPT_DLL extern void listDestroy ( DLLIST **phead ); +LEPT_DLL extern l_ok listAddToHead ( DLLIST **phead, void *data ); +LEPT_DLL extern l_ok listAddToTail ( DLLIST **phead, DLLIST **ptail, void *data ); +LEPT_DLL extern l_ok listInsertBefore ( DLLIST **phead, DLLIST *elem, void *data ); +LEPT_DLL extern l_ok listInsertAfter ( DLLIST **phead, DLLIST *elem, void *data ); +LEPT_DLL extern void * listRemoveElement ( DLLIST **phead, DLLIST *elem ); +LEPT_DLL extern void * listRemoveFromHead ( DLLIST **phead ); +LEPT_DLL extern void * listRemoveFromTail ( DLLIST **phead, DLLIST **ptail ); +LEPT_DLL extern DLLIST * listFindElement ( DLLIST *head, void *data ); +LEPT_DLL extern DLLIST * listFindTail ( DLLIST *head ); +LEPT_DLL extern l_int32 listGetCount ( DLLIST *head ); +LEPT_DLL extern l_ok listReverse ( DLLIST **phead ); +LEPT_DLL extern l_ok listJoin ( DLLIST **phead1, DLLIST **phead2 ); +LEPT_DLL extern L_AMAP * l_amapCreate ( l_int32 keytype ); +LEPT_DLL extern RB_TYPE * l_amapFind ( L_AMAP *m, RB_TYPE key ); +LEPT_DLL extern void l_amapInsert ( L_AMAP *m, RB_TYPE key, RB_TYPE value ); +LEPT_DLL extern void l_amapDelete ( L_AMAP *m, RB_TYPE key ); +LEPT_DLL extern void l_amapDestroy ( L_AMAP **pm ); +LEPT_DLL extern L_AMAP_NODE * l_amapGetFirst ( L_AMAP *m ); +LEPT_DLL extern L_AMAP_NODE * l_amapGetNext ( L_AMAP_NODE *n ); +LEPT_DLL extern L_AMAP_NODE * l_amapGetLast ( L_AMAP *m ); +LEPT_DLL extern L_AMAP_NODE * l_amapGetPrev ( L_AMAP_NODE *n ); +LEPT_DLL extern l_int32 l_amapSize ( L_AMAP *m ); +LEPT_DLL extern L_ASET * l_asetCreate ( l_int32 keytype ); +LEPT_DLL extern RB_TYPE * l_asetFind ( L_ASET *s, RB_TYPE key ); +LEPT_DLL extern void l_asetInsert ( L_ASET *s, RB_TYPE key ); +LEPT_DLL extern void l_asetDelete ( L_ASET *s, RB_TYPE key ); +LEPT_DLL extern void l_asetDestroy ( L_ASET **ps ); +LEPT_DLL extern L_ASET_NODE * l_asetGetFirst ( L_ASET *s ); +LEPT_DLL extern L_ASET_NODE * l_asetGetNext ( L_ASET_NODE *n ); +LEPT_DLL extern L_ASET_NODE * l_asetGetLast ( L_ASET *s ); +LEPT_DLL extern L_ASET_NODE * l_asetGetPrev ( L_ASET_NODE *n ); +LEPT_DLL extern l_int32 l_asetSize ( L_ASET *s ); +LEPT_DLL extern PIX * generateBinaryMaze ( l_int32 w, l_int32 h, l_int32 xi, l_int32 yi, l_float32 wallps, l_float32 ranis ); +LEPT_DLL extern PTA * pixSearchBinaryMaze ( PIX *pixs, l_int32 xi, l_int32 yi, l_int32 xf, l_int32 yf, PIX **ppixd ); +LEPT_DLL extern PTA * pixSearchGrayMaze ( PIX *pixs, l_int32 xi, l_int32 yi, l_int32 xf, l_int32 yf, PIX **ppixd ); +LEPT_DLL extern PIX * pixDilate ( PIX *pixd, PIX *pixs, SEL *sel ); +LEPT_DLL extern PIX * pixErode ( PIX *pixd, PIX *pixs, SEL *sel ); +LEPT_DLL extern PIX * pixHMT ( PIX *pixd, PIX *pixs, SEL *sel ); +LEPT_DLL extern PIX * pixOpen ( PIX *pixd, PIX *pixs, SEL *sel ); +LEPT_DLL extern PIX * pixClose ( PIX *pixd, PIX *pixs, SEL *sel ); +LEPT_DLL extern PIX * pixCloseSafe ( PIX *pixd, PIX *pixs, SEL *sel ); +LEPT_DLL extern PIX * pixOpenGeneralized ( PIX *pixd, PIX *pixs, SEL *sel ); +LEPT_DLL extern PIX * pixCloseGeneralized ( PIX *pixd, PIX *pixs, SEL *sel ); +LEPT_DLL extern PIX * pixDilateBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixErodeBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixOpenBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseSafeBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern l_int32 selectComposableSels ( l_int32 size, l_int32 direction, SEL **psel1, SEL **psel2 ); +LEPT_DLL extern l_ok selectComposableSizes ( l_int32 size, l_int32 *pfactor1, l_int32 *pfactor2 ); +LEPT_DLL extern PIX * pixDilateCompBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixErodeCompBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixOpenCompBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseCompBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseSafeCompBrick ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern void resetMorphBoundaryCondition ( l_int32 bc ); +LEPT_DLL extern l_uint32 getMorphBorderPixelColor ( l_int32 type, l_int32 depth ); +LEPT_DLL extern PIX * pixExtractBoundary ( PIX *pixs, l_int32 type ); +LEPT_DLL extern PIX * pixMorphSequenceMasked ( PIX *pixs, PIX *pixm, const char *sequence, l_int32 dispsep ); +LEPT_DLL extern PIX * pixMorphSequenceByComponent ( PIX *pixs, const char *sequence, l_int32 connectivity, l_int32 minw, l_int32 minh, BOXA **pboxa ); +LEPT_DLL extern PIXA * pixaMorphSequenceByComponent ( PIXA *pixas, const char *sequence, l_int32 minw, l_int32 minh ); +LEPT_DLL extern PIX * pixMorphSequenceByRegion ( PIX *pixs, PIX *pixm, const char *sequence, l_int32 connectivity, l_int32 minw, l_int32 minh, BOXA **pboxa ); +LEPT_DLL extern PIXA * pixaMorphSequenceByRegion ( PIX *pixs, PIXA *pixam, const char *sequence, l_int32 minw, l_int32 minh ); +LEPT_DLL extern PIX * pixUnionOfMorphOps ( PIX *pixs, SELA *sela, l_int32 type ); +LEPT_DLL extern PIX * pixIntersectionOfMorphOps ( PIX *pixs, SELA *sela, l_int32 type ); +LEPT_DLL extern PIX * pixSelectiveConnCompFill ( PIX *pixs, l_int32 connectivity, l_int32 minw, l_int32 minh ); +LEPT_DLL extern l_ok pixRemoveMatchedPattern ( PIX *pixs, PIX *pixp, PIX *pixe, l_int32 x0, l_int32 y0, l_int32 dsize ); +LEPT_DLL extern PIX * pixDisplayMatchedPattern ( PIX *pixs, PIX *pixp, PIX *pixe, l_int32 x0, l_int32 y0, l_uint32 color, l_float32 scale, l_int32 nlevels ); +LEPT_DLL extern PIXA * pixaExtendByMorph ( PIXA *pixas, l_int32 type, l_int32 niters, SEL *sel, l_int32 include ); +LEPT_DLL extern PIXA * pixaExtendByScaling ( PIXA *pixas, NUMA *nasc, l_int32 type, l_int32 include ); +LEPT_DLL extern PIX * pixSeedfillMorph ( PIX *pixs, PIX *pixm, l_int32 maxiters, l_int32 connectivity ); +LEPT_DLL extern NUMA * pixRunHistogramMorph ( PIX *pixs, l_int32 runtype, l_int32 direction, l_int32 maxsize ); +LEPT_DLL extern PIX * pixTophat ( PIX *pixs, l_int32 hsize, l_int32 vsize, l_int32 type ); +LEPT_DLL extern PIX * pixHDome ( PIX *pixs, l_int32 height, l_int32 connectivity ); +LEPT_DLL extern PIX * pixFastTophat ( PIX *pixs, l_int32 xsize, l_int32 ysize, l_int32 type ); +LEPT_DLL extern PIX * pixMorphGradient ( PIX *pixs, l_int32 hsize, l_int32 vsize, l_int32 smoothing ); +LEPT_DLL extern PTA * pixaCentroids ( PIXA *pixa ); +LEPT_DLL extern l_ok pixCentroid ( PIX *pix, l_int32 *centtab, l_int32 *sumtab, l_float32 *pxave, l_float32 *pyave ); +LEPT_DLL extern PIX * pixDilateBrickDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixErodeBrickDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixOpenBrickDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseBrickDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixDilateCompBrickDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixErodeCompBrickDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixOpenCompBrickDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseCompBrickDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixDilateCompBrickExtendDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixErodeCompBrickExtendDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixOpenCompBrickExtendDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern PIX * pixCloseCompBrickExtendDwa ( PIX *pixd, PIX *pixs, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern l_ok getExtendedCompositeParameters ( l_int32 size, l_int32 *pn, l_int32 *pextra, l_int32 *pactualsize ); +LEPT_DLL extern PIX * pixMorphSequence ( PIX *pixs, const char *sequence, l_int32 dispsep ); +LEPT_DLL extern PIX * pixMorphCompSequence ( PIX *pixs, const char *sequence, l_int32 dispsep ); +LEPT_DLL extern PIX * pixMorphSequenceDwa ( PIX *pixs, const char *sequence, l_int32 dispsep ); +LEPT_DLL extern PIX * pixMorphCompSequenceDwa ( PIX *pixs, const char *sequence, l_int32 dispsep ); +LEPT_DLL extern l_int32 morphSequenceVerify ( SARRAY *sa ); +LEPT_DLL extern PIX * pixGrayMorphSequence ( PIX *pixs, const char *sequence, l_int32 dispsep, l_int32 dispy ); +LEPT_DLL extern PIX * pixColorMorphSequence ( PIX *pixs, const char *sequence, l_int32 dispsep, l_int32 dispy ); +LEPT_DLL extern NUMA * numaCreate ( l_int32 n ); +LEPT_DLL extern NUMA * numaCreateFromIArray ( l_int32 *iarray, l_int32 size ); +LEPT_DLL extern NUMA * numaCreateFromFArray ( l_float32 *farray, l_int32 size, l_int32 copyflag ); +LEPT_DLL extern NUMA * numaCreateFromString ( const char *str ); +LEPT_DLL extern void numaDestroy ( NUMA **pna ); +LEPT_DLL extern NUMA * numaCopy ( NUMA *na ); +LEPT_DLL extern NUMA * numaClone ( NUMA *na ); +LEPT_DLL extern l_ok numaEmpty ( NUMA *na ); +LEPT_DLL extern l_ok numaAddNumber ( NUMA *na, l_float32 val ); +LEPT_DLL extern l_ok numaInsertNumber ( NUMA *na, l_int32 index, l_float32 val ); +LEPT_DLL extern l_ok numaRemoveNumber ( NUMA *na, l_int32 index ); +LEPT_DLL extern l_ok numaReplaceNumber ( NUMA *na, l_int32 index, l_float32 val ); +LEPT_DLL extern l_int32 numaGetCount ( NUMA *na ); +LEPT_DLL extern l_ok numaSetCount ( NUMA *na, l_int32 newcount ); +LEPT_DLL extern l_ok numaGetFValue ( NUMA *na, l_int32 index, l_float32 *pval ); +LEPT_DLL extern l_ok numaGetIValue ( NUMA *na, l_int32 index, l_int32 *pival ); +LEPT_DLL extern l_ok numaSetValue ( NUMA *na, l_int32 index, l_float32 val ); +LEPT_DLL extern l_ok numaShiftValue ( NUMA *na, l_int32 index, l_float32 diff ); +LEPT_DLL extern l_int32 * numaGetIArray ( NUMA *na ); +LEPT_DLL extern l_float32 * numaGetFArray ( NUMA *na, l_int32 copyflag ); +LEPT_DLL extern l_ok numaGetParameters ( NUMA *na, l_float32 *pstartx, l_float32 *pdelx ); +LEPT_DLL extern l_ok numaSetParameters ( NUMA *na, l_float32 startx, l_float32 delx ); +LEPT_DLL extern l_ok numaCopyParameters ( NUMA *nad, NUMA *nas ); +LEPT_DLL extern SARRAY * numaConvertToSarray ( NUMA *na, l_int32 size1, l_int32 size2, l_int32 addzeros, l_int32 type ); +LEPT_DLL extern NUMA * numaRead ( const char *filename ); +LEPT_DLL extern NUMA * numaReadStream ( FILE *fp ); +LEPT_DLL extern NUMA * numaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok numaWriteDebug ( const char *filename, NUMA *na ); +LEPT_DLL extern l_ok numaWrite ( const char *filename, NUMA *na ); +LEPT_DLL extern l_ok numaWriteStream ( FILE *fp, NUMA *na ); +LEPT_DLL extern l_ok numaWriteStderr ( NUMA *na ); +LEPT_DLL extern l_ok numaWriteMem ( l_uint8 **pdata, size_t *psize, NUMA *na ); +LEPT_DLL extern NUMAA * numaaCreate ( l_int32 n ); +LEPT_DLL extern NUMAA * numaaCreateFull ( l_int32 nptr, l_int32 n ); +LEPT_DLL extern l_ok numaaTruncate ( NUMAA *naa ); +LEPT_DLL extern void numaaDestroy ( NUMAA **pnaa ); +LEPT_DLL extern l_ok numaaAddNuma ( NUMAA *naa, NUMA *na, l_int32 copyflag ); +LEPT_DLL extern l_int32 numaaGetCount ( NUMAA *naa ); +LEPT_DLL extern l_int32 numaaGetNumaCount ( NUMAA *naa, l_int32 index ); +LEPT_DLL extern l_int32 numaaGetNumberCount ( NUMAA *naa ); +LEPT_DLL extern NUMA ** numaaGetPtrArray ( NUMAA *naa ); +LEPT_DLL extern NUMA * numaaGetNuma ( NUMAA *naa, l_int32 index, l_int32 accessflag ); +LEPT_DLL extern l_ok numaaReplaceNuma ( NUMAA *naa, l_int32 index, NUMA *na ); +LEPT_DLL extern l_ok numaaGetValue ( NUMAA *naa, l_int32 i, l_int32 j, l_float32 *pfval, l_int32 *pival ); +LEPT_DLL extern l_ok numaaAddNumber ( NUMAA *naa, l_int32 index, l_float32 val ); +LEPT_DLL extern NUMAA * numaaRead ( const char *filename ); +LEPT_DLL extern NUMAA * numaaReadStream ( FILE *fp ); +LEPT_DLL extern NUMAA * numaaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok numaaWrite ( const char *filename, NUMAA *naa ); +LEPT_DLL extern l_ok numaaWriteStream ( FILE *fp, NUMAA *naa ); +LEPT_DLL extern l_ok numaaWriteMem ( l_uint8 **pdata, size_t *psize, NUMAA *naa ); +LEPT_DLL extern NUMA * numaArithOp ( NUMA *nad, NUMA *na1, NUMA *na2, l_int32 op ); +LEPT_DLL extern NUMA * numaLogicalOp ( NUMA *nad, NUMA *na1, NUMA *na2, l_int32 op ); +LEPT_DLL extern NUMA * numaInvert ( NUMA *nad, NUMA *nas ); +LEPT_DLL extern l_int32 numaSimilar ( NUMA *na1, NUMA *na2, l_float32 maxdiff, l_int32 *psimilar ); +LEPT_DLL extern l_ok numaAddToNumber ( NUMA *na, l_int32 index, l_float32 val ); +LEPT_DLL extern l_ok numaGetMin ( NUMA *na, l_float32 *pminval, l_int32 *piminloc ); +LEPT_DLL extern l_ok numaGetMax ( NUMA *na, l_float32 *pmaxval, l_int32 *pimaxloc ); +LEPT_DLL extern l_ok numaGetSum ( NUMA *na, l_float32 *psum ); +LEPT_DLL extern NUMA * numaGetPartialSums ( NUMA *na ); +LEPT_DLL extern l_ok numaGetSumOnInterval ( NUMA *na, l_int32 first, l_int32 last, l_float32 *psum ); +LEPT_DLL extern l_ok numaHasOnlyIntegers ( NUMA *na, l_int32 *pallints ); +LEPT_DLL extern l_ok numaGetMean ( NUMA *na, l_float32 *pave ); +LEPT_DLL extern l_ok numaGetMeanAbsval ( NUMA *na, l_float32 *paveabs ); +LEPT_DLL extern NUMA * numaSubsample ( NUMA *nas, l_int32 subfactor ); +LEPT_DLL extern NUMA * numaMakeDelta ( NUMA *nas ); +LEPT_DLL extern NUMA * numaMakeSequence ( l_float32 startval, l_float32 increment, l_int32 size ); +LEPT_DLL extern NUMA * numaMakeConstant ( l_float32 val, l_int32 size ); +LEPT_DLL extern NUMA * numaMakeAbsval ( NUMA *nad, NUMA *nas ); +LEPT_DLL extern NUMA * numaAddBorder ( NUMA *nas, l_int32 left, l_int32 right, l_float32 val ); +LEPT_DLL extern NUMA * numaAddSpecifiedBorder ( NUMA *nas, l_int32 left, l_int32 right, l_int32 type ); +LEPT_DLL extern NUMA * numaRemoveBorder ( NUMA *nas, l_int32 left, l_int32 right ); +LEPT_DLL extern l_ok numaCountNonzeroRuns ( NUMA *na, l_int32 *pcount ); +LEPT_DLL extern l_ok numaGetNonzeroRange ( NUMA *na, l_float32 eps, l_int32 *pfirst, l_int32 *plast ); +LEPT_DLL extern l_ok numaGetCountRelativeToZero ( NUMA *na, l_int32 type, l_int32 *pcount ); +LEPT_DLL extern NUMA * numaClipToInterval ( NUMA *nas, l_int32 first, l_int32 last ); +LEPT_DLL extern NUMA * numaMakeThresholdIndicator ( NUMA *nas, l_float32 thresh, l_int32 type ); +LEPT_DLL extern NUMA * numaUniformSampling ( NUMA *nas, l_int32 nsamp ); +LEPT_DLL extern NUMA * numaReverse ( NUMA *nad, NUMA *nas ); +LEPT_DLL extern NUMA * numaLowPassIntervals ( NUMA *nas, l_float32 thresh, l_float32 maxn ); +LEPT_DLL extern NUMA * numaThresholdEdges ( NUMA *nas, l_float32 thresh1, l_float32 thresh2, l_float32 maxn ); +LEPT_DLL extern l_int32 numaGetSpanValues ( NUMA *na, l_int32 span, l_int32 *pstart, l_int32 *pend ); +LEPT_DLL extern l_int32 numaGetEdgeValues ( NUMA *na, l_int32 edge, l_int32 *pstart, l_int32 *pend, l_int32 *psign ); +LEPT_DLL extern l_ok numaInterpolateEqxVal ( l_float32 startx, l_float32 deltax, NUMA *nay, l_int32 type, l_float32 xval, l_float32 *pyval ); +LEPT_DLL extern l_ok numaInterpolateArbxVal ( NUMA *nax, NUMA *nay, l_int32 type, l_float32 xval, l_float32 *pyval ); +LEPT_DLL extern l_ok numaInterpolateEqxInterval ( l_float32 startx, l_float32 deltax, NUMA *nasy, l_int32 type, l_float32 x0, l_float32 x1, l_int32 npts, NUMA **pnax, NUMA **pnay ); +LEPT_DLL extern l_ok numaInterpolateArbxInterval ( NUMA *nax, NUMA *nay, l_int32 type, l_float32 x0, l_float32 x1, l_int32 npts, NUMA **pnadx, NUMA **pnady ); +LEPT_DLL extern l_ok numaFitMax ( NUMA *na, l_float32 *pmaxval, NUMA *naloc, l_float32 *pmaxloc ); +LEPT_DLL extern l_ok numaDifferentiateInterval ( NUMA *nax, NUMA *nay, l_float32 x0, l_float32 x1, l_int32 npts, NUMA **pnadx, NUMA **pnady ); +LEPT_DLL extern l_ok numaIntegrateInterval ( NUMA *nax, NUMA *nay, l_float32 x0, l_float32 x1, l_int32 npts, l_float32 *psum ); +LEPT_DLL extern l_ok numaSortGeneral ( NUMA *na, NUMA **pnasort, NUMA **pnaindex, NUMA **pnainvert, l_int32 sortorder, l_int32 sorttype ); +LEPT_DLL extern NUMA * numaSortAutoSelect ( NUMA *nas, l_int32 sortorder ); +LEPT_DLL extern NUMA * numaSortIndexAutoSelect ( NUMA *nas, l_int32 sortorder ); +LEPT_DLL extern l_int32 numaChooseSortType ( NUMA *nas ); +LEPT_DLL extern NUMA * numaSort ( NUMA *naout, NUMA *nain, l_int32 sortorder ); +LEPT_DLL extern NUMA * numaBinSort ( NUMA *nas, l_int32 sortorder ); +LEPT_DLL extern NUMA * numaGetSortIndex ( NUMA *na, l_int32 sortorder ); +LEPT_DLL extern NUMA * numaGetBinSortIndex ( NUMA *nas, l_int32 sortorder ); +LEPT_DLL extern NUMA * numaSortByIndex ( NUMA *nas, NUMA *naindex ); +LEPT_DLL extern l_int32 numaIsSorted ( NUMA *nas, l_int32 sortorder, l_int32 *psorted ); +LEPT_DLL extern l_ok numaSortPair ( NUMA *nax, NUMA *nay, l_int32 sortorder, NUMA **pnasx, NUMA **pnasy ); +LEPT_DLL extern NUMA * numaInvertMap ( NUMA *nas ); +LEPT_DLL extern l_ok numaAddSorted ( NUMA *na, l_float32 val ); +LEPT_DLL extern l_ok numaFindSortedLoc ( NUMA *na, l_float32 val, l_int32 *pindex ); +LEPT_DLL extern NUMA * numaPseudorandomSequence ( l_int32 size, l_int32 seed ); +LEPT_DLL extern NUMA * numaRandomPermutation ( NUMA *nas, l_int32 seed ); +LEPT_DLL extern l_ok numaGetRankValue ( NUMA *na, l_float32 fract, NUMA *nasort, l_int32 usebins, l_float32 *pval ); +LEPT_DLL extern l_ok numaGetMedian ( NUMA *na, l_float32 *pval ); +LEPT_DLL extern l_ok numaGetBinnedMedian ( NUMA *na, l_int32 *pval ); +LEPT_DLL extern l_ok numaGetMeanDevFromMedian ( NUMA *na, l_float32 med, l_float32 *pdev ); +LEPT_DLL extern l_ok numaGetMedianDevFromMedian ( NUMA *na, l_float32 *pmed, l_float32 *pdev ); +LEPT_DLL extern l_ok numaGetMode ( NUMA *na, l_float32 *pval, l_int32 *pcount ); +LEPT_DLL extern l_ok numaJoin ( NUMA *nad, NUMA *nas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern l_ok numaaJoin ( NUMAA *naad, NUMAA *naas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern NUMA * numaaFlattenToNuma ( NUMAA *naa ); +LEPT_DLL extern NUMA * numaErode ( NUMA *nas, l_int32 size ); +LEPT_DLL extern NUMA * numaDilate ( NUMA *nas, l_int32 size ); +LEPT_DLL extern NUMA * numaOpen ( NUMA *nas, l_int32 size ); +LEPT_DLL extern NUMA * numaClose ( NUMA *nas, l_int32 size ); +LEPT_DLL extern NUMA * numaTransform ( NUMA *nas, l_float32 shift, l_float32 scale ); +LEPT_DLL extern l_ok numaSimpleStats ( NUMA *na, l_int32 first, l_int32 last, l_float32 *pmean, l_float32 *pvar, l_float32 *prvar ); +LEPT_DLL extern l_ok numaWindowedStats ( NUMA *nas, l_int32 wc, NUMA **pnam, NUMA **pnams, NUMA **pnav, NUMA **pnarv ); +LEPT_DLL extern NUMA * numaWindowedMean ( NUMA *nas, l_int32 wc ); +LEPT_DLL extern NUMA * numaWindowedMeanSquare ( NUMA *nas, l_int32 wc ); +LEPT_DLL extern l_ok numaWindowedVariance ( NUMA *nam, NUMA *nams, NUMA **pnav, NUMA **pnarv ); +LEPT_DLL extern NUMA * numaWindowedMedian ( NUMA *nas, l_int32 halfwin ); +LEPT_DLL extern NUMA * numaConvertToInt ( NUMA *nas ); +LEPT_DLL extern NUMA * numaMakeHistogram ( NUMA *na, l_int32 maxbins, l_int32 *pbinsize, l_int32 *pbinstart ); +LEPT_DLL extern NUMA * numaMakeHistogramAuto ( NUMA *na, l_int32 maxbins ); +LEPT_DLL extern NUMA * numaMakeHistogramClipped ( NUMA *na, l_float32 binsize, l_float32 maxsize ); +LEPT_DLL extern NUMA * numaRebinHistogram ( NUMA *nas, l_int32 newsize ); +LEPT_DLL extern NUMA * numaNormalizeHistogram ( NUMA *nas, l_float32 tsum ); +LEPT_DLL extern l_ok numaGetStatsUsingHistogram ( NUMA *na, l_int32 maxbins, l_float32 *pmin, l_float32 *pmax, l_float32 *pmean, l_float32 *pvariance, l_float32 *pmedian, l_float32 rank, l_float32 *prval, NUMA **phisto ); +LEPT_DLL extern l_ok numaGetHistogramStats ( NUMA *nahisto, l_float32 startx, l_float32 deltax, l_float32 *pxmean, l_float32 *pxmedian, l_float32 *pxmode, l_float32 *pxvariance ); +LEPT_DLL extern l_ok numaGetHistogramStatsOnInterval ( NUMA *nahisto, l_float32 startx, l_float32 deltax, l_int32 ifirst, l_int32 ilast, l_float32 *pxmean, l_float32 *pxmedian, l_float32 *pxmode, l_float32 *pxvariance ); +LEPT_DLL extern l_ok numaMakeRankFromHistogram ( l_float32 startx, l_float32 deltax, NUMA *nasy, l_int32 npts, NUMA **pnax, NUMA **pnay ); +LEPT_DLL extern l_ok numaHistogramGetRankFromVal ( NUMA *na, l_float32 rval, l_float32 *prank ); +LEPT_DLL extern l_ok numaHistogramGetValFromRank ( NUMA *na, l_float32 rank, l_float32 *prval ); +LEPT_DLL extern l_ok numaDiscretizeSortedInBins ( NUMA *na, l_int32 nbins, NUMA **pnabinval ); +LEPT_DLL extern l_ok numaDiscretizeHistoInBins ( NUMA *na, l_int32 nbins, NUMA **pnabinval, NUMA **pnarank ); +LEPT_DLL extern l_ok numaGetRankBinValues ( NUMA *na, l_int32 nbins, NUMA **pnam ); +LEPT_DLL extern NUMA * numaGetUniformBinSizes ( l_int32 ntotal, l_int32 nbins ); +LEPT_DLL extern l_ok numaSplitDistribution ( NUMA *na, l_float32 scorefract, l_int32 *psplitindex, l_float32 *pave1, l_float32 *pave2, l_float32 *pnum1, l_float32 *pnum2, NUMA **pnascore ); +LEPT_DLL extern l_ok grayHistogramsToEMD ( NUMAA *naa1, NUMAA *naa2, NUMA **pnad ); +LEPT_DLL extern l_ok numaEarthMoverDistance ( NUMA *na1, NUMA *na2, l_float32 *pdist ); +LEPT_DLL extern l_ok grayInterHistogramStats ( NUMAA *naa, l_int32 wc, NUMA **pnam, NUMA **pnams, NUMA **pnav, NUMA **pnarv ); +LEPT_DLL extern NUMA * numaFindPeaks ( NUMA *nas, l_int32 nmax, l_float32 fract1, l_float32 fract2 ); +LEPT_DLL extern NUMA * numaFindExtrema ( NUMA *nas, l_float32 delta, NUMA **pnav ); +LEPT_DLL extern l_ok numaFindLocForThreshold ( NUMA *na, l_int32 skip, l_int32 *pthresh, l_float32 *pfract ); +LEPT_DLL extern l_ok numaCountReversals ( NUMA *nas, l_float32 minreversal, l_int32 *pnr, l_float32 *prd ); +LEPT_DLL extern l_ok numaSelectCrossingThreshold ( NUMA *nax, NUMA *nay, l_float32 estthresh, l_float32 *pbestthresh ); +LEPT_DLL extern NUMA * numaCrossingsByThreshold ( NUMA *nax, NUMA *nay, l_float32 thresh ); +LEPT_DLL extern NUMA * numaCrossingsByPeaks ( NUMA *nax, NUMA *nay, l_float32 delta ); +LEPT_DLL extern l_ok numaEvalBestHaarParameters ( NUMA *nas, l_float32 relweight, l_int32 nwidth, l_int32 nshift, l_float32 minwidth, l_float32 maxwidth, l_float32 *pbestwidth, l_float32 *pbestshift, l_float32 *pbestscore ); +LEPT_DLL extern l_ok numaEvalHaarSum ( NUMA *nas, l_float32 width, l_float32 shift, l_float32 relweight, l_float32 *pscore ); +LEPT_DLL extern NUMA * genConstrainedNumaInRange ( l_int32 first, l_int32 last, l_int32 nmax, l_int32 use_pairs ); +LEPT_DLL extern l_ok pixGetRegionsBinary ( PIX *pixs, PIX **ppixhm, PIX **ppixtm, PIX **ppixtb, PIXA *pixadb ); +LEPT_DLL extern PIX * pixGenHalftoneMask ( PIX *pixs, PIX **ppixtext, l_int32 *phtfound, l_int32 debug ); +LEPT_DLL extern PIX * pixGenerateHalftoneMask ( PIX *pixs, PIX **ppixtext, l_int32 *phtfound, PIXA *pixadb ); +LEPT_DLL extern PIX * pixGenTextlineMask ( PIX *pixs, PIX **ppixvws, l_int32 *ptlfound, PIXA *pixadb ); +LEPT_DLL extern PIX * pixGenTextblockMask ( PIX *pixs, PIX *pixvws, PIXA *pixadb ); +LEPT_DLL extern BOX * pixFindPageForeground ( PIX *pixs, l_int32 threshold, l_int32 mindist, l_int32 erasedist, l_int32 showmorph, PIXAC *pixac ); +LEPT_DLL extern l_ok pixSplitIntoCharacters ( PIX *pixs, l_int32 minw, l_int32 minh, BOXA **pboxa, PIXA **ppixa, PIX **ppixdebug ); +LEPT_DLL extern BOXA * pixSplitComponentWithProfile ( PIX *pixs, l_int32 delta, l_int32 mindel, PIX **ppixdebug ); +LEPT_DLL extern PIXA * pixExtractTextlines ( PIX *pixs, l_int32 maxw, l_int32 maxh, l_int32 minw, l_int32 minh, l_int32 adjw, l_int32 adjh, PIXA *pixadb ); +LEPT_DLL extern PIXA * pixExtractRawTextlines ( PIX *pixs, l_int32 maxw, l_int32 maxh, l_int32 adjw, l_int32 adjh, PIXA *pixadb ); +LEPT_DLL extern l_ok pixCountTextColumns ( PIX *pixs, l_float32 deltafract, l_float32 peakfract, l_float32 clipfract, l_int32 *pncols, PIXA *pixadb ); +LEPT_DLL extern l_ok pixDecideIfText ( PIX *pixs, BOX *box, l_int32 *pistext, PIXA *pixadb ); +LEPT_DLL extern l_ok pixFindThreshFgExtent ( PIX *pixs, l_int32 thresh, l_int32 *ptop, l_int32 *pbot ); +LEPT_DLL extern l_ok pixDecideIfTable ( PIX *pixs, BOX *box, l_int32 orient, l_int32 *pscore, PIXA *pixadb ); +LEPT_DLL extern PIX * pixPrepare1bpp ( PIX *pixs, BOX *box, l_float32 cropfract, l_int32 outres ); +LEPT_DLL extern l_ok pixEstimateBackground ( PIX *pixs, l_int32 darkthresh, l_float32 edgecrop, l_int32 *pbg ); +LEPT_DLL extern l_ok pixFindLargeRectangles ( PIX *pixs, l_int32 polarity, l_int32 nrect, BOXA **pboxa, PIX **ppixdb ); +LEPT_DLL extern l_ok pixFindLargestRectangle ( PIX *pixs, l_int32 polarity, BOX **pbox, PIX **ppixdb ); +LEPT_DLL extern BOX * pixFindRectangleInCC ( PIX *pixs, BOX *boxs, l_float32 fract, l_int32 dir, l_int32 select, l_int32 debug ); +LEPT_DLL extern PIX * pixAutoPhotoinvert ( PIX *pixs, l_int32 thresh, PIX **ppixm, PIXA *pixadb ); +LEPT_DLL extern l_ok pixSetSelectCmap ( PIX *pixs, BOX *box, l_int32 sindex, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixColorGrayRegionsCmap ( PIX *pixs, BOXA *boxa, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixColorGrayCmap ( PIX *pixs, BOX *box, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixColorGrayMaskedCmap ( PIX *pixs, PIX *pixm, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok addColorizedGrayToCmap ( PIXCMAP *cmap, l_int32 type, l_int32 rval, l_int32 gval, l_int32 bval, NUMA **pna ); +LEPT_DLL extern l_ok pixSetSelectMaskedCmap ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 sindex, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixSetMaskedCmap ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern char * parseForProtos ( const char *filein, const char *prestring ); +LEPT_DLL extern l_ok partifyFiles ( const char *dirname, const char *substr, l_int32 nparts, const char *outroot, const char *debugfile ); +LEPT_DLL extern l_ok partifyPixac ( PIXAC *pixac, l_int32 nparts, const char *outroot, PIXA *pixadb ); +LEPT_DLL extern BOXA * boxaGetWhiteblocks ( BOXA *boxas, BOX *box, l_int32 sortflag, l_int32 maxboxes, l_float32 maxoverlap, l_int32 maxperim, l_float32 fract, l_int32 maxpops ); +LEPT_DLL extern BOXA * boxaPruneSortedOnOverlap ( BOXA *boxas, l_float32 maxoverlap ); +LEPT_DLL extern l_ok convertFilesToPdf ( const char *dirname, const char *substr, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, const char *fileout ); +LEPT_DLL extern l_ok saConvertFilesToPdf ( SARRAY *sa, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, const char *fileout ); +LEPT_DLL extern l_ok saConvertFilesToPdfData ( SARRAY *sa, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok selectDefaultPdfEncoding ( PIX *pix, l_int32 *ptype ); +LEPT_DLL extern l_ok convertUnscaledFilesToPdf ( const char *dirname, const char *substr, const char *title, const char *fileout ); +LEPT_DLL extern l_ok saConvertUnscaledFilesToPdf ( SARRAY *sa, const char *title, const char *fileout ); +LEPT_DLL extern l_ok saConvertUnscaledFilesToPdfData ( SARRAY *sa, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok convertUnscaledToPdfData ( const char *fname, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok pixaConvertToPdf ( PIXA *pixa, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, const char *fileout ); +LEPT_DLL extern l_ok pixaConvertToPdfData ( PIXA *pixa, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok convertToPdf ( const char *filein, l_int32 type, l_int32 quality, const char *fileout, l_int32 x, l_int32 y, l_int32 res, const char *title, L_PDF_DATA **plpd, l_int32 position ); +LEPT_DLL extern l_ok convertImageDataToPdf ( l_uint8 *imdata, size_t size, l_int32 type, l_int32 quality, const char *fileout, l_int32 x, l_int32 y, l_int32 res, const char *title, L_PDF_DATA **plpd, l_int32 position ); +LEPT_DLL extern l_ok convertToPdfData ( const char *filein, l_int32 type, l_int32 quality, l_uint8 **pdata, size_t *pnbytes, l_int32 x, l_int32 y, l_int32 res, const char *title, L_PDF_DATA **plpd, l_int32 position ); +LEPT_DLL extern l_ok convertImageDataToPdfData ( l_uint8 *imdata, size_t size, l_int32 type, l_int32 quality, l_uint8 **pdata, size_t *pnbytes, l_int32 x, l_int32 y, l_int32 res, const char *title, L_PDF_DATA **plpd, l_int32 position ); +LEPT_DLL extern l_ok pixConvertToPdf ( PIX *pix, l_int32 type, l_int32 quality, const char *fileout, l_int32 x, l_int32 y, l_int32 res, const char *title, L_PDF_DATA **plpd, l_int32 position ); +LEPT_DLL extern l_ok pixWriteStreamPdf ( FILE *fp, PIX *pix, l_int32 res, const char *title ); +LEPT_DLL extern l_ok pixWriteMemPdf ( l_uint8 **pdata, size_t *pnbytes, PIX *pix, l_int32 res, const char *title ); +LEPT_DLL extern l_ok convertSegmentedFilesToPdf ( const char *dirname, const char *substr, l_int32 res, l_int32 type, l_int32 thresh, BOXAA *baa, l_int32 quality, l_float32 scalefactor, const char *title, const char *fileout ); +LEPT_DLL extern BOXAA * convertNumberedMasksToBoxaa ( const char *dirname, const char *substr, l_int32 numpre, l_int32 numpost ); +LEPT_DLL extern l_ok convertToPdfSegmented ( const char *filein, l_int32 res, l_int32 type, l_int32 thresh, BOXA *boxa, l_int32 quality, l_float32 scalefactor, const char *title, const char *fileout ); +LEPT_DLL extern l_ok pixConvertToPdfSegmented ( PIX *pixs, l_int32 res, l_int32 type, l_int32 thresh, BOXA *boxa, l_int32 quality, l_float32 scalefactor, const char *title, const char *fileout ); +LEPT_DLL extern l_ok convertToPdfDataSegmented ( const char *filein, l_int32 res, l_int32 type, l_int32 thresh, BOXA *boxa, l_int32 quality, l_float32 scalefactor, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok pixConvertToPdfDataSegmented ( PIX *pixs, l_int32 res, l_int32 type, l_int32 thresh, BOXA *boxa, l_int32 quality, l_float32 scalefactor, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok concatenatePdf ( const char *dirname, const char *substr, const char *fileout ); +LEPT_DLL extern l_ok saConcatenatePdf ( SARRAY *sa, const char *fileout ); +LEPT_DLL extern l_ok ptraConcatenatePdf ( L_PTRA *pa, const char *fileout ); +LEPT_DLL extern l_ok concatenatePdfToData ( const char *dirname, const char *substr, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok saConcatenatePdfToData ( SARRAY *sa, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok pixConvertToPdfData ( PIX *pix, l_int32 type, l_int32 quality, l_uint8 **pdata, size_t *pnbytes, l_int32 x, l_int32 y, l_int32 res, const char *title, L_PDF_DATA **plpd, l_int32 position ); +LEPT_DLL extern l_ok ptraConcatenatePdfToData ( L_PTRA *pa_data, SARRAY *sa, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok convertTiffMultipageToPdf ( const char *filein, const char *fileout ); +LEPT_DLL extern l_ok l_generateCIDataForPdf ( const char *fname, PIX *pix, l_int32 quality, L_COMP_DATA **pcid ); +LEPT_DLL extern l_ok l_generateCIData ( const char *fname, l_int32 type, l_int32 quality, l_int32 ascii85, L_COMP_DATA **pcid ); +LEPT_DLL extern L_COMP_DATA * l_generateFlateDataPdf ( const char *fname, PIX *pixs ); +LEPT_DLL extern L_COMP_DATA * l_generateJpegData ( const char *fname, l_int32 ascii85flag ); +LEPT_DLL extern L_COMP_DATA * l_generateJpegDataMem ( l_uint8 *data, size_t nbytes, l_int32 ascii85flag ); +LEPT_DLL extern L_COMP_DATA * l_generateG4Data ( const char *fname, l_int32 ascii85flag ); +LEPT_DLL extern l_ok pixGenerateCIData ( PIX *pixs, l_int32 type, l_int32 quality, l_int32 ascii85, L_COMP_DATA **pcid ); +LEPT_DLL extern L_COMP_DATA * l_generateFlateData ( const char *fname, l_int32 ascii85flag ); +LEPT_DLL extern l_ok cidConvertToPdfData ( L_COMP_DATA *cid, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern void l_CIDataDestroy ( L_COMP_DATA **pcid ); +LEPT_DLL extern void l_pdfSetG4ImageMask ( l_int32 flag ); +LEPT_DLL extern void l_pdfSetDateAndVersion ( l_int32 flag ); +LEPT_DLL extern void setPixMemoryManager ( alloc_fn allocator, dealloc_fn deallocator ); +LEPT_DLL extern PIX * pixCreate ( l_int32 width, l_int32 height, l_int32 depth ); +LEPT_DLL extern PIX * pixCreateNoInit ( l_int32 width, l_int32 height, l_int32 depth ); +LEPT_DLL extern PIX * pixCreateTemplate ( const PIX *pixs ); +LEPT_DLL extern PIX * pixCreateTemplateNoInit ( const PIX *pixs ); +LEPT_DLL extern PIX * pixCreateWithCmap ( l_int32 width, l_int32 height, l_int32 depth, l_int32 initcolor ); +LEPT_DLL extern PIX * pixCreateHeader ( l_int32 width, l_int32 height, l_int32 depth ); +LEPT_DLL extern PIX * pixClone ( PIX *pixs ); +LEPT_DLL extern void pixDestroy ( PIX **ppix ); +LEPT_DLL extern PIX * pixCopy ( PIX *pixd, const PIX *pixs ); +LEPT_DLL extern l_ok pixResizeImageData ( PIX *pixd, const PIX *pixs ); +LEPT_DLL extern l_ok pixCopyColormap ( PIX *pixd, const PIX *pixs ); +LEPT_DLL extern l_ok pixTransferAllData ( PIX *pixd, PIX **ppixs, l_int32 copytext, l_int32 copyformat ); +LEPT_DLL extern l_ok pixSwapAndDestroy ( PIX **ppixd, PIX **ppixs ); +LEPT_DLL extern l_int32 pixGetWidth ( const PIX *pix ); +LEPT_DLL extern l_int32 pixSetWidth ( PIX *pix, l_int32 width ); +LEPT_DLL extern l_int32 pixGetHeight ( const PIX *pix ); +LEPT_DLL extern l_int32 pixSetHeight ( PIX *pix, l_int32 height ); +LEPT_DLL extern l_int32 pixGetDepth ( const PIX *pix ); +LEPT_DLL extern l_int32 pixSetDepth ( PIX *pix, l_int32 depth ); +LEPT_DLL extern l_ok pixGetDimensions ( const PIX *pix, l_int32 *pw, l_int32 *ph, l_int32 *pd ); +LEPT_DLL extern l_ok pixSetDimensions ( PIX *pix, l_int32 w, l_int32 h, l_int32 d ); +LEPT_DLL extern l_ok pixCopyDimensions ( PIX *pixd, const PIX *pixs ); +LEPT_DLL extern l_int32 pixGetSpp ( const PIX *pix ); +LEPT_DLL extern l_int32 pixSetSpp ( PIX *pix, l_int32 spp ); +LEPT_DLL extern l_ok pixCopySpp ( PIX *pixd, const PIX *pixs ); +LEPT_DLL extern l_int32 pixGetWpl ( const PIX *pix ); +LEPT_DLL extern l_int32 pixSetWpl ( PIX *pix, l_int32 wpl ); +LEPT_DLL extern l_int32 pixGetXRes ( const PIX *pix ); +LEPT_DLL extern l_int32 pixSetXRes ( PIX *pix, l_int32 res ); +LEPT_DLL extern l_int32 pixGetYRes ( const PIX *pix ); +LEPT_DLL extern l_int32 pixSetYRes ( PIX *pix, l_int32 res ); +LEPT_DLL extern l_ok pixGetResolution ( const PIX *pix, l_int32 *pxres, l_int32 *pyres ); +LEPT_DLL extern l_ok pixSetResolution ( PIX *pix, l_int32 xres, l_int32 yres ); +LEPT_DLL extern l_int32 pixCopyResolution ( PIX *pixd, const PIX *pixs ); +LEPT_DLL extern l_int32 pixScaleResolution ( PIX *pix, l_float32 xscale, l_float32 yscale ); +LEPT_DLL extern l_int32 pixGetInputFormat ( const PIX *pix ); +LEPT_DLL extern l_int32 pixSetInputFormat ( PIX *pix, l_int32 informat ); +LEPT_DLL extern l_int32 pixCopyInputFormat ( PIX *pixd, const PIX *pixs ); +LEPT_DLL extern l_int32 pixSetSpecial ( PIX *pix, l_int32 special ); +LEPT_DLL extern char * pixGetText ( PIX *pix ); +LEPT_DLL extern l_ok pixSetText ( PIX *pix, const char *textstring ); +LEPT_DLL extern l_ok pixAddText ( PIX *pix, const char *textstring ); +LEPT_DLL extern l_int32 pixCopyText ( PIX *pixd, const PIX *pixs ); +LEPT_DLL extern l_uint8 * pixGetTextCompNew ( PIX *pix, size_t *psize ); +LEPT_DLL extern l_ok pixSetTextCompNew ( PIX *pix, const l_uint8 *data, size_t size ); +LEPT_DLL extern PIXCMAP * pixGetColormap ( PIX *pix ); +LEPT_DLL extern l_ok pixSetColormap ( PIX *pix, PIXCMAP *colormap ); +LEPT_DLL extern l_ok pixDestroyColormap ( PIX *pix ); +LEPT_DLL extern l_uint32 * pixGetData ( PIX *pix ); +LEPT_DLL extern l_int32 pixFreeAndSetData ( PIX *pix, l_uint32 *data ); +LEPT_DLL extern l_int32 pixSetData ( PIX *pix, l_uint32 *data ); +LEPT_DLL extern l_int32 pixFreeData ( PIX *pix ); +LEPT_DLL extern l_uint32 * pixExtractData ( PIX *pixs ); +LEPT_DLL extern void ** pixGetLinePtrs ( PIX *pix, l_int32 *psize ); +LEPT_DLL extern l_int32 pixSizesEqual ( const PIX *pix1, const PIX *pix2 ); +LEPT_DLL extern l_ok pixMaxAspectRatio ( PIX *pixs, l_float32 *pratio ); +LEPT_DLL extern l_ok pixPrintStreamInfo ( FILE *fp, const PIX *pix, const char *text ); +LEPT_DLL extern l_ok pixGetPixel ( PIX *pix, l_int32 x, l_int32 y, l_uint32 *pval ); +LEPT_DLL extern l_ok pixSetPixel ( PIX *pix, l_int32 x, l_int32 y, l_uint32 val ); +LEPT_DLL extern l_ok pixGetRGBPixel ( PIX *pix, l_int32 x, l_int32 y, l_int32 *prval, l_int32 *pgval, l_int32 *pbval ); +LEPT_DLL extern l_ok pixSetRGBPixel ( PIX *pix, l_int32 x, l_int32 y, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixSetCmapPixel ( PIX *pix, l_int32 x, l_int32 y, l_int32 rval, l_int32 gval, l_int32 bval ); +LEPT_DLL extern l_ok pixGetRandomPixel ( PIX *pix, l_uint32 *pval, l_int32 *px, l_int32 *py ); +LEPT_DLL extern l_ok pixClearPixel ( PIX *pix, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok pixFlipPixel ( PIX *pix, l_int32 x, l_int32 y ); +LEPT_DLL extern void setPixelLow ( l_uint32 *line, l_int32 x, l_int32 depth, l_uint32 val ); +LEPT_DLL extern l_ok pixGetBlackOrWhiteVal ( PIX *pixs, l_int32 op, l_uint32 *pval ); +LEPT_DLL extern l_ok pixClearAll ( PIX *pix ); +LEPT_DLL extern l_ok pixSetAll ( PIX *pix ); +LEPT_DLL extern l_ok pixSetAllGray ( PIX *pix, l_int32 grayval ); +LEPT_DLL extern l_ok pixSetAllArbitrary ( PIX *pix, l_uint32 val ); +LEPT_DLL extern l_ok pixSetBlackOrWhite ( PIX *pixs, l_int32 op ); +LEPT_DLL extern l_ok pixSetComponentArbitrary ( PIX *pix, l_int32 comp, l_int32 val ); +LEPT_DLL extern l_ok pixClearInRect ( PIX *pix, BOX *box ); +LEPT_DLL extern l_ok pixSetInRect ( PIX *pix, BOX *box ); +LEPT_DLL extern l_ok pixSetInRectArbitrary ( PIX *pix, BOX *box, l_uint32 val ); +LEPT_DLL extern l_ok pixBlendInRect ( PIX *pixs, BOX *box, l_uint32 val, l_float32 fract ); +LEPT_DLL extern l_ok pixSetPadBits ( PIX *pix, l_int32 val ); +LEPT_DLL extern l_ok pixSetPadBitsBand ( PIX *pix, l_int32 by, l_int32 bh, l_int32 val ); +LEPT_DLL extern l_ok pixSetOrClearBorder ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_int32 op ); +LEPT_DLL extern l_ok pixSetBorderVal ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_uint32 val ); +LEPT_DLL extern l_ok pixSetBorderRingVal ( PIX *pixs, l_int32 dist, l_uint32 val ); +LEPT_DLL extern l_ok pixSetMirroredBorder ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern PIX * pixCopyBorder ( PIX *pixd, PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern PIX * pixAddBorder ( PIX *pixs, l_int32 npix, l_uint32 val ); +LEPT_DLL extern PIX * pixAddBlackOrWhiteBorder ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_int32 op ); +LEPT_DLL extern PIX * pixAddBorderGeneral ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_uint32 val ); +LEPT_DLL extern PIX * pixAddMultipleBlackWhiteBorders ( PIX *pixs, l_int32 nblack1, l_int32 nwhite1, l_int32 nblack2, l_int32 nwhite2, l_int32 nblack3, l_int32 nwhite3 ); +LEPT_DLL extern PIX * pixRemoveBorder ( PIX *pixs, l_int32 npix ); +LEPT_DLL extern PIX * pixRemoveBorderGeneral ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern PIX * pixRemoveBorderToSize ( PIX *pixs, l_int32 wd, l_int32 hd ); +LEPT_DLL extern PIX * pixAddMirroredBorder ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern PIX * pixAddRepeatedBorder ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern PIX * pixAddMixedBorder ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern PIX * pixAddContinuedBorder ( PIX *pixs, l_int32 left, l_int32 right, l_int32 top, l_int32 bot ); +LEPT_DLL extern l_ok pixShiftAndTransferAlpha ( PIX *pixd, PIX *pixs, l_float32 shiftx, l_float32 shifty ); +LEPT_DLL extern PIX * pixDisplayLayersRGBA ( PIX *pixs, l_uint32 val, l_int32 maxw ); +LEPT_DLL extern PIX * pixCreateRGBImage ( PIX *pixr, PIX *pixg, PIX *pixb ); +LEPT_DLL extern PIX * pixGetRGBComponent ( PIX *pixs, l_int32 comp ); +LEPT_DLL extern l_ok pixSetRGBComponent ( PIX *pixd, PIX *pixs, l_int32 comp ); +LEPT_DLL extern PIX * pixGetRGBComponentCmap ( PIX *pixs, l_int32 comp ); +LEPT_DLL extern l_ok pixCopyRGBComponent ( PIX *pixd, PIX *pixs, l_int32 comp ); +LEPT_DLL extern l_ok composeRGBPixel ( l_int32 rval, l_int32 gval, l_int32 bval, l_uint32 *ppixel ); +LEPT_DLL extern l_ok composeRGBAPixel ( l_int32 rval, l_int32 gval, l_int32 bval, l_int32 aval, l_uint32 *ppixel ); +LEPT_DLL extern void extractRGBValues ( l_uint32 pixel, l_int32 *prval, l_int32 *pgval, l_int32 *pbval ); +LEPT_DLL extern void extractRGBAValues ( l_uint32 pixel, l_int32 *prval, l_int32 *pgval, l_int32 *pbval, l_int32 *paval ); +LEPT_DLL extern l_int32 extractMinMaxComponent ( l_uint32 pixel, l_int32 type ); +LEPT_DLL extern l_ok pixGetRGBLine ( PIX *pixs, l_int32 row, l_uint8 *bufr, l_uint8 *bufg, l_uint8 *bufb ); +LEPT_DLL extern l_ok setLineDataVal ( l_uint32 *line, l_int32 j, l_int32 d, l_uint32 val ); +LEPT_DLL extern PIX * pixEndianByteSwapNew ( PIX *pixs ); +LEPT_DLL extern l_ok pixEndianByteSwap ( PIX *pixs ); +LEPT_DLL extern l_int32 lineEndianByteSwap ( l_uint32 *datad, l_uint32 *datas, l_int32 wpl ); +LEPT_DLL extern PIX * pixEndianTwoByteSwapNew ( PIX *pixs ); +LEPT_DLL extern l_ok pixEndianTwoByteSwap ( PIX *pixs ); +LEPT_DLL extern l_ok pixGetRasterData ( PIX *pixs, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok pixInferResolution ( PIX *pix, l_float32 longside, l_int32 *pres ); +LEPT_DLL extern l_ok pixAlphaIsOpaque ( PIX *pix, l_int32 *popaque ); +LEPT_DLL extern l_uint8 ** pixSetupByteProcessing ( PIX *pix, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok pixCleanupByteProcessing ( PIX *pix, l_uint8 **lineptrs ); +LEPT_DLL extern void l_setAlphaMaskBorder ( l_float32 val1, l_float32 val2 ); +LEPT_DLL extern l_ok pixSetMasked ( PIX *pixd, PIX *pixm, l_uint32 val ); +LEPT_DLL extern l_ok pixSetMaskedGeneral ( PIX *pixd, PIX *pixm, l_uint32 val, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok pixCombineMasked ( PIX *pixd, PIX *pixs, PIX *pixm ); +LEPT_DLL extern l_ok pixCombineMaskedGeneral ( PIX *pixd, PIX *pixs, PIX *pixm, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok pixPaintThroughMask ( PIX *pixd, PIX *pixm, l_int32 x, l_int32 y, l_uint32 val ); +LEPT_DLL extern PIX * pixCopyWithBoxa ( PIX *pixs, BOXA *boxa, l_int32 background ); +LEPT_DLL extern l_ok pixPaintSelfThroughMask ( PIX *pixd, PIX *pixm, l_int32 x, l_int32 y, l_int32 searchdir, l_int32 mindist, l_int32 tilesize, l_int32 ntiles, l_int32 distblend ); +LEPT_DLL extern PIX * pixMakeMaskFromVal ( PIX *pixs, l_int32 val ); +LEPT_DLL extern PIX * pixMakeMaskFromLUT ( PIX *pixs, l_int32 *tab ); +LEPT_DLL extern PIX * pixMakeArbMaskFromRGB ( PIX *pixs, l_float32 rc, l_float32 gc, l_float32 bc, l_float32 thresh ); +LEPT_DLL extern PIX * pixSetUnderTransparency ( PIX *pixs, l_uint32 val, l_int32 debug ); +LEPT_DLL extern PIX * pixMakeAlphaFromMask ( PIX *pixs, l_int32 dist, BOX **pbox ); +LEPT_DLL extern l_ok pixGetColorNearMaskBoundary ( PIX *pixs, PIX *pixm, BOX *box, l_int32 dist, l_uint32 *pval, l_int32 debug ); +LEPT_DLL extern PIX * pixDisplaySelectedPixels ( PIX *pixs, PIX *pixm, SEL *sel, l_uint32 val ); +LEPT_DLL extern PIX * pixInvert ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern PIX * pixOr ( PIX *pixd, PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern PIX * pixAnd ( PIX *pixd, PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern PIX * pixXor ( PIX *pixd, PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern PIX * pixSubtract ( PIX *pixd, PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern l_ok pixZero ( PIX *pix, l_int32 *pempty ); +LEPT_DLL extern l_ok pixForegroundFraction ( PIX *pix, l_float32 *pfract ); +LEPT_DLL extern NUMA * pixaCountPixels ( PIXA *pixa ); +LEPT_DLL extern l_ok pixCountPixels ( PIX *pixs, l_int32 *pcount, l_int32 *tab8 ); +LEPT_DLL extern l_ok pixCountPixelsInRect ( PIX *pixs, BOX *box, l_int32 *pcount, l_int32 *tab8 ); +LEPT_DLL extern NUMA * pixCountByRow ( PIX *pix, BOX *box ); +LEPT_DLL extern NUMA * pixCountByColumn ( PIX *pix, BOX *box ); +LEPT_DLL extern NUMA * pixCountPixelsByRow ( PIX *pix, l_int32 *tab8 ); +LEPT_DLL extern NUMA * pixCountPixelsByColumn ( PIX *pix ); +LEPT_DLL extern l_ok pixCountPixelsInRow ( PIX *pix, l_int32 row, l_int32 *pcount, l_int32 *tab8 ); +LEPT_DLL extern NUMA * pixGetMomentByColumn ( PIX *pix, l_int32 order ); +LEPT_DLL extern l_ok pixThresholdPixelSum ( PIX *pix, l_int32 thresh, l_int32 *pabove, l_int32 *tab8 ); +LEPT_DLL extern l_int32 * makePixelSumTab8 ( void ); +LEPT_DLL extern l_int32 * makePixelCentroidTab8 ( void ); +LEPT_DLL extern NUMA * pixAverageByRow ( PIX *pix, BOX *box, l_int32 type ); +LEPT_DLL extern NUMA * pixAverageByColumn ( PIX *pix, BOX *box, l_int32 type ); +LEPT_DLL extern l_ok pixAverageInRect ( PIX *pixs, PIX *pixm, BOX *box, l_int32 minval, l_int32 maxval, l_int32 subsamp, l_float32 *pave ); +LEPT_DLL extern l_ok pixAverageInRectRGB ( PIX *pixs, PIX *pixm, BOX *box, l_int32 subsamp, l_uint32 *pave ); +LEPT_DLL extern NUMA * pixVarianceByRow ( PIX *pix, BOX *box ); +LEPT_DLL extern NUMA * pixVarianceByColumn ( PIX *pix, BOX *box ); +LEPT_DLL extern l_ok pixVarianceInRect ( PIX *pix, BOX *box, l_float32 *prootvar ); +LEPT_DLL extern NUMA * pixAbsDiffByRow ( PIX *pix, BOX *box ); +LEPT_DLL extern NUMA * pixAbsDiffByColumn ( PIX *pix, BOX *box ); +LEPT_DLL extern l_ok pixAbsDiffInRect ( PIX *pix, BOX *box, l_int32 dir, l_float32 *pabsdiff ); +LEPT_DLL extern l_ok pixAbsDiffOnLine ( PIX *pix, l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2, l_float32 *pabsdiff ); +LEPT_DLL extern l_int32 pixCountArbInRect ( PIX *pixs, BOX *box, l_int32 val, l_int32 factor, l_int32 *pcount ); +LEPT_DLL extern PIX * pixMirroredTiling ( PIX *pixs, l_int32 w, l_int32 h ); +LEPT_DLL extern l_ok pixFindRepCloseTile ( PIX *pixs, BOX *box, l_int32 searchdir, l_int32 mindist, l_int32 tsize, l_int32 ntiles, BOX **pboxtile, l_int32 debug ); +LEPT_DLL extern NUMA * pixGetGrayHistogram ( PIX *pixs, l_int32 factor ); +LEPT_DLL extern NUMA * pixGetGrayHistogramMasked ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 factor ); +LEPT_DLL extern NUMA * pixGetGrayHistogramInRect ( PIX *pixs, BOX *box, l_int32 factor ); +LEPT_DLL extern NUMAA * pixGetGrayHistogramTiled ( PIX *pixs, l_int32 factor, l_int32 nx, l_int32 ny ); +LEPT_DLL extern l_ok pixGetColorHistogram ( PIX *pixs, l_int32 factor, NUMA **pnar, NUMA **pnag, NUMA **pnab ); +LEPT_DLL extern l_ok pixGetColorHistogramMasked ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 factor, NUMA **pnar, NUMA **pnag, NUMA **pnab ); +LEPT_DLL extern NUMA * pixGetCmapHistogram ( PIX *pixs, l_int32 factor ); +LEPT_DLL extern NUMA * pixGetCmapHistogramMasked ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 factor ); +LEPT_DLL extern NUMA * pixGetCmapHistogramInRect ( PIX *pixs, BOX *box, l_int32 factor ); +LEPT_DLL extern l_ok pixCountRGBColorsByHash ( PIX *pixs, l_int32 *pncolors ); +LEPT_DLL extern l_ok pixCountRGBColors ( PIX *pixs, l_int32 factor, l_int32 *pncolors ); +LEPT_DLL extern L_AMAP * pixGetColorAmapHistogram ( PIX *pixs, l_int32 factor ); +LEPT_DLL extern l_int32 amapGetCountForColor ( L_AMAP *amap, l_uint32 val ); +LEPT_DLL extern l_ok pixGetRankValue ( PIX *pixs, l_int32 factor, l_float32 rank, l_uint32 *pvalue ); +LEPT_DLL extern l_ok pixGetRankValueMaskedRGB ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 factor, l_float32 rank, l_float32 *prval, l_float32 *pgval, l_float32 *pbval ); +LEPT_DLL extern l_ok pixGetRankValueMasked ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 factor, l_float32 rank, l_float32 *pval, NUMA **pna ); +LEPT_DLL extern l_ok pixGetPixelAverage ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 factor, l_uint32 *pval ); +LEPT_DLL extern l_ok pixGetPixelStats ( PIX *pixs, l_int32 factor, l_int32 type, l_uint32 *pvalue ); +LEPT_DLL extern l_ok pixGetAverageMaskedRGB ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 factor, l_int32 type, l_float32 *prval, l_float32 *pgval, l_float32 *pbval ); +LEPT_DLL extern l_ok pixGetAverageMasked ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_int32 factor, l_int32 type, l_float32 *pval ); +LEPT_DLL extern l_ok pixGetAverageTiledRGB ( PIX *pixs, l_int32 sx, l_int32 sy, l_int32 type, PIX **ppixr, PIX **ppixg, PIX **ppixb ); +LEPT_DLL extern PIX * pixGetAverageTiled ( PIX *pixs, l_int32 sx, l_int32 sy, l_int32 type ); +LEPT_DLL extern l_int32 pixRowStats ( PIX *pixs, BOX *box, NUMA **pnamean, NUMA **pnamedian, NUMA **pnamode, NUMA **pnamodecount, NUMA **pnavar, NUMA **pnarootvar ); +LEPT_DLL extern l_int32 pixColumnStats ( PIX *pixs, BOX *box, NUMA **pnamean, NUMA **pnamedian, NUMA **pnamode, NUMA **pnamodecount, NUMA **pnavar, NUMA **pnarootvar ); +LEPT_DLL extern l_ok pixGetRangeValues ( PIX *pixs, l_int32 factor, l_int32 color, l_int32 *pminval, l_int32 *pmaxval ); +LEPT_DLL extern l_ok pixGetExtremeValue ( PIX *pixs, l_int32 factor, l_int32 type, l_int32 *prval, l_int32 *pgval, l_int32 *pbval, l_int32 *pgrayval ); +LEPT_DLL extern l_ok pixGetMaxValueInRect ( PIX *pixs, BOX *box, l_uint32 *pmaxval, l_int32 *pxmax, l_int32 *pymax ); +LEPT_DLL extern l_ok pixGetMaxColorIndex ( PIX *pixs, l_int32 *pmaxindex ); +LEPT_DLL extern l_ok pixGetBinnedComponentRange ( PIX *pixs, l_int32 nbins, l_int32 factor, l_int32 color, l_int32 *pminval, l_int32 *pmaxval, l_uint32 **pcarray, l_int32 fontsize ); +LEPT_DLL extern l_ok pixGetRankColorArray ( PIX *pixs, l_int32 nbins, l_int32 type, l_int32 factor, l_uint32 **pcarray, PIXA *pixadb, l_int32 fontsize ); +LEPT_DLL extern l_ok pixGetBinnedColor ( PIX *pixs, PIX *pixg, l_int32 factor, l_int32 nbins, l_uint32 **pcarray, PIXA *pixadb ); +LEPT_DLL extern PIX * pixDisplayColorArray ( l_uint32 *carray, l_int32 ncolors, l_int32 side, l_int32 ncols, l_int32 fontsize ); +LEPT_DLL extern PIX * pixRankBinByStrip ( PIX *pixs, l_int32 direction, l_int32 size, l_int32 nbins, l_int32 type ); +LEPT_DLL extern PIX * pixaGetAlignedStats ( PIXA *pixa, l_int32 type, l_int32 nbins, l_int32 thresh ); +LEPT_DLL extern l_ok pixaExtractColumnFromEachPix ( PIXA *pixa, l_int32 col, PIX *pixd ); +LEPT_DLL extern l_ok pixGetRowStats ( PIX *pixs, l_int32 type, l_int32 nbins, l_int32 thresh, l_float32 *colvect ); +LEPT_DLL extern l_ok pixGetColumnStats ( PIX *pixs, l_int32 type, l_int32 nbins, l_int32 thresh, l_float32 *rowvect ); +LEPT_DLL extern l_ok pixSetPixelColumn ( PIX *pix, l_int32 col, l_float32 *colvect ); +LEPT_DLL extern l_ok pixThresholdForFgBg ( PIX *pixs, l_int32 factor, l_int32 thresh, l_int32 *pfgval, l_int32 *pbgval ); +LEPT_DLL extern l_ok pixSplitDistributionFgBg ( PIX *pixs, l_float32 scorefract, l_int32 factor, l_int32 *pthresh, l_int32 *pfgval, l_int32 *pbgval, PIX **ppixdb ); +LEPT_DLL extern l_ok pixaFindDimensions ( PIXA *pixa, NUMA **pnaw, NUMA **pnah ); +LEPT_DLL extern l_ok pixFindAreaPerimRatio ( PIX *pixs, l_int32 *tab, l_float32 *pfract ); +LEPT_DLL extern NUMA * pixaFindPerimToAreaRatio ( PIXA *pixa ); +LEPT_DLL extern l_ok pixFindPerimToAreaRatio ( PIX *pixs, l_int32 *tab, l_float32 *pfract ); +LEPT_DLL extern NUMA * pixaFindPerimSizeRatio ( PIXA *pixa ); +LEPT_DLL extern l_ok pixFindPerimSizeRatio ( PIX *pixs, l_int32 *tab, l_float32 *pratio ); +LEPT_DLL extern NUMA * pixaFindAreaFraction ( PIXA *pixa ); +LEPT_DLL extern l_ok pixFindAreaFraction ( PIX *pixs, l_int32 *tab, l_float32 *pfract ); +LEPT_DLL extern NUMA * pixaFindAreaFractionMasked ( PIXA *pixa, PIX *pixm, l_int32 debug ); +LEPT_DLL extern l_ok pixFindAreaFractionMasked ( PIX *pixs, BOX *box, PIX *pixm, l_int32 *tab, l_float32 *pfract ); +LEPT_DLL extern NUMA * pixaFindWidthHeightRatio ( PIXA *pixa ); +LEPT_DLL extern NUMA * pixaFindWidthHeightProduct ( PIXA *pixa ); +LEPT_DLL extern l_ok pixFindOverlapFraction ( PIX *pixs1, PIX *pixs2, l_int32 x2, l_int32 y2, l_int32 *tab, l_float32 *pratio, l_int32 *pnoverlap ); +LEPT_DLL extern BOXA * pixFindRectangleComps ( PIX *pixs, l_int32 dist, l_int32 minw, l_int32 minh ); +LEPT_DLL extern l_ok pixConformsToRectangle ( PIX *pixs, BOX *box, l_int32 dist, l_int32 *pconforms ); +LEPT_DLL extern PIXA * pixClipRectangles ( PIX *pixs, BOXA *boxa ); +LEPT_DLL extern PIX * pixClipRectangle ( PIX *pixs, BOX *box, BOX **pboxc ); +LEPT_DLL extern PIX * pixClipRectangleWithBorder ( PIX *pixs, BOX *box, l_int32 maxbord, BOX **pboxn ); +LEPT_DLL extern PIX * pixClipMasked ( PIX *pixs, PIX *pixm, l_int32 x, l_int32 y, l_uint32 outval ); +LEPT_DLL extern l_ok pixCropToMatch ( PIX *pixs1, PIX *pixs2, PIX **ppixd1, PIX **ppixd2 ); +LEPT_DLL extern PIX * pixCropToSize ( PIX *pixs, l_int32 w, l_int32 h ); +LEPT_DLL extern PIX * pixResizeToMatch ( PIX *pixs, PIX *pixt, l_int32 w, l_int32 h ); +LEPT_DLL extern PIX * pixSelectComponentBySize ( PIX *pixs, l_int32 rankorder, l_int32 type, l_int32 connectivity, BOX **pbox ); +LEPT_DLL extern PIX * pixFilterComponentBySize ( PIX *pixs, l_int32 rankorder, l_int32 type, l_int32 connectivity, BOX **pbox ); +LEPT_DLL extern PIX * pixMakeSymmetricMask ( l_int32 w, l_int32 h, l_float32 hf, l_float32 vf, l_int32 type ); +LEPT_DLL extern PIX * pixMakeFrameMask ( l_int32 w, l_int32 h, l_float32 hf1, l_float32 hf2, l_float32 vf1, l_float32 vf2 ); +LEPT_DLL extern PIX * pixMakeCoveringOfRectangles ( PIX *pixs, l_int32 maxiters ); +LEPT_DLL extern l_ok pixFractionFgInMask ( PIX *pix1, PIX *pix2, l_float32 *pfract ); +LEPT_DLL extern l_ok pixClipToForeground ( PIX *pixs, PIX **ppixd, BOX **pbox ); +LEPT_DLL extern l_ok pixTestClipToForeground ( PIX *pixs, l_int32 *pcanclip ); +LEPT_DLL extern l_ok pixClipBoxToForeground ( PIX *pixs, BOX *boxs, PIX **ppixd, BOX **pboxd ); +LEPT_DLL extern l_ok pixScanForForeground ( PIX *pixs, BOX *box, l_int32 scanflag, l_int32 *ploc ); +LEPT_DLL extern l_ok pixClipBoxToEdges ( PIX *pixs, BOX *boxs, l_int32 lowthresh, l_int32 highthresh, l_int32 maxwidth, l_int32 factor, PIX **ppixd, BOX **pboxd ); +LEPT_DLL extern l_ok pixScanForEdge ( PIX *pixs, BOX *box, l_int32 lowthresh, l_int32 highthresh, l_int32 maxwidth, l_int32 factor, l_int32 scanflag, l_int32 *ploc ); +LEPT_DLL extern NUMA * pixExtractOnLine ( PIX *pixs, l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2, l_int32 factor ); +LEPT_DLL extern l_float32 pixAverageOnLine ( PIX *pixs, l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2, l_int32 factor ); +LEPT_DLL extern NUMA * pixAverageIntensityProfile ( PIX *pixs, l_float32 fract, l_int32 dir, l_int32 first, l_int32 last, l_int32 factor1, l_int32 factor2 ); +LEPT_DLL extern NUMA * pixReversalProfile ( PIX *pixs, l_float32 fract, l_int32 dir, l_int32 first, l_int32 last, l_int32 minreversal, l_int32 factor1, l_int32 factor2 ); +LEPT_DLL extern l_ok pixWindowedVarianceOnLine ( PIX *pixs, l_int32 dir, l_int32 loc, l_int32 c1, l_int32 c2, l_int32 size, NUMA **pnad ); +LEPT_DLL extern l_ok pixMinMaxNearLine ( PIX *pixs, l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2, l_int32 dist, l_int32 direction, NUMA **pnamin, NUMA **pnamax, l_float32 *pminave, l_float32 *pmaxave ); +LEPT_DLL extern PIX * pixRankRowTransform ( PIX *pixs ); +LEPT_DLL extern PIX * pixRankColumnTransform ( PIX *pixs ); +LEPT_DLL extern PIXA * pixaCreate ( l_int32 n ); +LEPT_DLL extern PIXA * pixaCreateFromPix ( PIX *pixs, l_int32 n, l_int32 cellw, l_int32 cellh ); +LEPT_DLL extern PIXA * pixaCreateFromBoxa ( PIX *pixs, BOXA *boxa, l_int32 start, l_int32 num, l_int32 *pcropwarn ); +LEPT_DLL extern PIXA * pixaSplitPix ( PIX *pixs, l_int32 nx, l_int32 ny, l_int32 borderwidth, l_uint32 bordercolor ); +LEPT_DLL extern void pixaDestroy ( PIXA **ppixa ); +LEPT_DLL extern PIXA * pixaCopy ( PIXA *pixa, l_int32 copyflag ); +LEPT_DLL extern l_ok pixaAddPix ( PIXA *pixa, PIX *pix, l_int32 copyflag ); +LEPT_DLL extern l_ok pixaAddBox ( PIXA *pixa, BOX *box, l_int32 copyflag ); +LEPT_DLL extern l_ok pixaExtendArrayToSize ( PIXA *pixa, size_t size ); +LEPT_DLL extern l_int32 pixaGetCount ( PIXA *pixa ); +LEPT_DLL extern PIX * pixaGetPix ( PIXA *pixa, l_int32 index, l_int32 accesstype ); +LEPT_DLL extern l_ok pixaGetPixDimensions ( PIXA *pixa, l_int32 index, l_int32 *pw, l_int32 *ph, l_int32 *pd ); +LEPT_DLL extern BOXA * pixaGetBoxa ( PIXA *pixa, l_int32 accesstype ); +LEPT_DLL extern l_int32 pixaGetBoxaCount ( PIXA *pixa ); +LEPT_DLL extern BOX * pixaGetBox ( PIXA *pixa, l_int32 index, l_int32 accesstype ); +LEPT_DLL extern l_ok pixaGetBoxGeometry ( PIXA *pixa, l_int32 index, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_ok pixaSetBoxa ( PIXA *pixa, BOXA *boxa, l_int32 accesstype ); +LEPT_DLL extern PIX ** pixaGetPixArray ( PIXA *pixa ); +LEPT_DLL extern l_ok pixaVerifyDepth ( PIXA *pixa, l_int32 *psame, l_int32 *pmaxd ); +LEPT_DLL extern l_ok pixaVerifyDimensions ( PIXA *pixa, l_int32 *psame, l_int32 *pmaxw, l_int32 *pmaxh ); +LEPT_DLL extern l_ok pixaIsFull ( PIXA *pixa, l_int32 *pfullpa, l_int32 *pfullba ); +LEPT_DLL extern l_ok pixaCountText ( PIXA *pixa, l_int32 *pntext ); +LEPT_DLL extern l_ok pixaSetText ( PIXA *pixa, const char *text, SARRAY *sa ); +LEPT_DLL extern void *** pixaGetLinePtrs ( PIXA *pixa, l_int32 *psize ); +LEPT_DLL extern l_ok pixaWriteStreamInfo ( FILE *fp, PIXA *pixa ); +LEPT_DLL extern l_ok pixaReplacePix ( PIXA *pixa, l_int32 index, PIX *pix, BOX *box ); +LEPT_DLL extern l_ok pixaInsertPix ( PIXA *pixa, l_int32 index, PIX *pixs, BOX *box ); +LEPT_DLL extern l_ok pixaRemovePix ( PIXA *pixa, l_int32 index ); +LEPT_DLL extern l_ok pixaRemovePixAndSave ( PIXA *pixa, l_int32 index, PIX **ppix, BOX **pbox ); +LEPT_DLL extern l_ok pixaRemoveSelected ( PIXA *pixa, NUMA *naindex ); +LEPT_DLL extern l_ok pixaInitFull ( PIXA *pixa, PIX *pix, BOX *box ); +LEPT_DLL extern l_ok pixaClear ( PIXA *pixa ); +LEPT_DLL extern l_ok pixaJoin ( PIXA *pixad, PIXA *pixas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern PIXA * pixaInterleave ( PIXA *pixa1, PIXA *pixa2, l_int32 copyflag ); +LEPT_DLL extern l_ok pixaaJoin ( PIXAA *paad, PIXAA *paas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern PIXAA * pixaaCreate ( l_int32 n ); +LEPT_DLL extern PIXAA * pixaaCreateFromPixa ( PIXA *pixa, l_int32 n, l_int32 type, l_int32 copyflag ); +LEPT_DLL extern void pixaaDestroy ( PIXAA **ppaa ); +LEPT_DLL extern l_ok pixaaAddPixa ( PIXAA *paa, PIXA *pixa, l_int32 copyflag ); +LEPT_DLL extern l_ok pixaaAddPix ( PIXAA *paa, l_int32 index, PIX *pix, BOX *box, l_int32 copyflag ); +LEPT_DLL extern l_ok pixaaAddBox ( PIXAA *paa, BOX *box, l_int32 copyflag ); +LEPT_DLL extern l_int32 pixaaGetCount ( PIXAA *paa, NUMA **pna ); +LEPT_DLL extern PIXA * pixaaGetPixa ( PIXAA *paa, l_int32 index, l_int32 accesstype ); +LEPT_DLL extern BOXA * pixaaGetBoxa ( PIXAA *paa, l_int32 accesstype ); +LEPT_DLL extern PIX * pixaaGetPix ( PIXAA *paa, l_int32 index, l_int32 ipix, l_int32 accessflag ); +LEPT_DLL extern l_ok pixaaVerifyDepth ( PIXAA *paa, l_int32 *psame, l_int32 *pmaxd ); +LEPT_DLL extern l_ok pixaaVerifyDimensions ( PIXAA *paa, l_int32 *psame, l_int32 *pmaxw, l_int32 *pmaxh ); +LEPT_DLL extern l_int32 pixaaIsFull ( PIXAA *paa, l_int32 *pfull ); +LEPT_DLL extern l_ok pixaaInitFull ( PIXAA *paa, PIXA *pixa ); +LEPT_DLL extern l_ok pixaaReplacePixa ( PIXAA *paa, l_int32 index, PIXA *pixa ); +LEPT_DLL extern l_ok pixaaClear ( PIXAA *paa ); +LEPT_DLL extern l_ok pixaaTruncate ( PIXAA *paa ); +LEPT_DLL extern PIXA * pixaRead ( const char *filename ); +LEPT_DLL extern PIXA * pixaReadStream ( FILE *fp ); +LEPT_DLL extern PIXA * pixaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok pixaWriteDebug ( const char *fname, PIXA *pixa ); +LEPT_DLL extern l_ok pixaWrite ( const char *filename, PIXA *pixa ); +LEPT_DLL extern l_ok pixaWriteStream ( FILE *fp, PIXA *pixa ); +LEPT_DLL extern l_ok pixaWriteMem ( l_uint8 **pdata, size_t *psize, PIXA *pixa ); +LEPT_DLL extern PIXA * pixaReadBoth ( const char *filename ); +LEPT_DLL extern PIXAA * pixaaReadFromFiles ( const char *dirname, const char *substr, l_int32 first, l_int32 nfiles ); +LEPT_DLL extern PIXAA * pixaaRead ( const char *filename ); +LEPT_DLL extern PIXAA * pixaaReadStream ( FILE *fp ); +LEPT_DLL extern PIXAA * pixaaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok pixaaWrite ( const char *filename, PIXAA *paa ); +LEPT_DLL extern l_ok pixaaWriteStream ( FILE *fp, PIXAA *paa ); +LEPT_DLL extern l_ok pixaaWriteMem ( l_uint8 **pdata, size_t *psize, PIXAA *paa ); +LEPT_DLL extern PIXACC * pixaccCreate ( l_int32 w, l_int32 h, l_int32 negflag ); +LEPT_DLL extern PIXACC * pixaccCreateFromPix ( PIX *pix, l_int32 negflag ); +LEPT_DLL extern void pixaccDestroy ( PIXACC **ppixacc ); +LEPT_DLL extern PIX * pixaccFinal ( PIXACC *pixacc, l_int32 outdepth ); +LEPT_DLL extern PIX * pixaccGetPix ( PIXACC *pixacc ); +LEPT_DLL extern l_int32 pixaccGetOffset ( PIXACC *pixacc ); +LEPT_DLL extern l_ok pixaccAdd ( PIXACC *pixacc, PIX *pix ); +LEPT_DLL extern l_ok pixaccSubtract ( PIXACC *pixacc, PIX *pix ); +LEPT_DLL extern l_ok pixaccMultConst ( PIXACC *pixacc, l_float32 factor ); +LEPT_DLL extern l_ok pixaccMultConstAccumulate ( PIXACC *pixacc, PIX *pix, l_float32 factor ); +LEPT_DLL extern PIX * pixSelectBySize ( PIX *pixs, l_int32 width, l_int32 height, l_int32 connectivity, l_int32 type, l_int32 relation, l_int32 *pchanged ); +LEPT_DLL extern PIXA * pixaSelectBySize ( PIXA *pixas, l_int32 width, l_int32 height, l_int32 type, l_int32 relation, l_int32 *pchanged ); +LEPT_DLL extern NUMA * pixaMakeSizeIndicator ( PIXA *pixa, l_int32 width, l_int32 height, l_int32 type, l_int32 relation ); +LEPT_DLL extern PIX * pixSelectByPerimToAreaRatio ( PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIXA * pixaSelectByPerimToAreaRatio ( PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIX * pixSelectByPerimSizeRatio ( PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIXA * pixaSelectByPerimSizeRatio ( PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIX * pixSelectByAreaFraction ( PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIXA * pixaSelectByAreaFraction ( PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIX * pixSelectByArea ( PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIXA * pixaSelectByArea ( PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIX * pixSelectByWidthHeightRatio ( PIX *pixs, l_float32 thresh, l_int32 connectivity, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIXA * pixaSelectByWidthHeightRatio ( PIXA *pixas, l_float32 thresh, l_int32 type, l_int32 *pchanged ); +LEPT_DLL extern PIXA * pixaSelectByNumConnComp ( PIXA *pixas, l_int32 nmin, l_int32 nmax, l_int32 connectivity, l_int32 *pchanged ); +LEPT_DLL extern PIXA * pixaSelectWithIndicator ( PIXA *pixas, NUMA *na, l_int32 *pchanged ); +LEPT_DLL extern l_ok pixRemoveWithIndicator ( PIX *pixs, PIXA *pixa, NUMA *na ); +LEPT_DLL extern l_ok pixAddWithIndicator ( PIX *pixs, PIXA *pixa, NUMA *na ); +LEPT_DLL extern PIXA * pixaSelectWithString ( PIXA *pixas, const char *str, l_int32 *perror ); +LEPT_DLL extern PIX * pixaRenderComponent ( PIX *pixs, PIXA *pixa, l_int32 index ); +LEPT_DLL extern PIXA * pixaSort ( PIXA *pixas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex, l_int32 copyflag ); +LEPT_DLL extern PIXA * pixaBinSort ( PIXA *pixas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex, l_int32 copyflag ); +LEPT_DLL extern PIXA * pixaSortByIndex ( PIXA *pixas, NUMA *naindex, l_int32 copyflag ); +LEPT_DLL extern PIXAA * pixaSort2dByIndex ( PIXA *pixas, NUMAA *naa, l_int32 copyflag ); +LEPT_DLL extern PIXA * pixaSelectRange ( PIXA *pixas, l_int32 first, l_int32 last, l_int32 copyflag ); +LEPT_DLL extern PIXAA * pixaaSelectRange ( PIXAA *paas, l_int32 first, l_int32 last, l_int32 copyflag ); +LEPT_DLL extern PIXAA * pixaaScaleToSize ( PIXAA *paas, l_int32 wd, l_int32 hd ); +LEPT_DLL extern PIXAA * pixaaScaleToSizeVar ( PIXAA *paas, NUMA *nawd, NUMA *nahd ); +LEPT_DLL extern PIXA * pixaScaleToSize ( PIXA *pixas, l_int32 wd, l_int32 hd ); +LEPT_DLL extern PIXA * pixaScaleToSizeRel ( PIXA *pixas, l_int32 delw, l_int32 delh ); +LEPT_DLL extern PIXA * pixaScale ( PIXA *pixas, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIXA * pixaScaleBySampling ( PIXA *pixas, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIXA * pixaRotate ( PIXA *pixas, l_float32 angle, l_int32 type, l_int32 incolor, l_int32 width, l_int32 height ); +LEPT_DLL extern PIXA * pixaRotateOrth ( PIXA *pixas, l_int32 rotation ); +LEPT_DLL extern PIXA * pixaTranslate ( PIXA *pixas, l_int32 hshift, l_int32 vshift, l_int32 incolor ); +LEPT_DLL extern PIXA * pixaAddBorderGeneral ( PIXA *pixad, PIXA *pixas, l_int32 left, l_int32 right, l_int32 top, l_int32 bot, l_uint32 val ); +LEPT_DLL extern PIXA * pixaaFlattenToPixa ( PIXAA *paa, NUMA **pnaindex, l_int32 copyflag ); +LEPT_DLL extern l_ok pixaaSizeRange ( PIXAA *paa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh ); +LEPT_DLL extern l_ok pixaSizeRange ( PIXA *pixa, l_int32 *pminw, l_int32 *pminh, l_int32 *pmaxw, l_int32 *pmaxh ); +LEPT_DLL extern PIXA * pixaClipToPix ( PIXA *pixas, PIX *pixs ); +LEPT_DLL extern l_ok pixaClipToForeground ( PIXA *pixas, PIXA **ppixad, BOXA **pboxa ); +LEPT_DLL extern l_ok pixaGetRenderingDepth ( PIXA *pixa, l_int32 *pdepth ); +LEPT_DLL extern l_ok pixaHasColor ( PIXA *pixa, l_int32 *phascolor ); +LEPT_DLL extern l_ok pixaAnyColormaps ( PIXA *pixa, l_int32 *phascmap ); +LEPT_DLL extern l_ok pixaGetDepthInfo ( PIXA *pixa, l_int32 *pmaxdepth, l_int32 *psame ); +LEPT_DLL extern PIXA * pixaConvertToSameDepth ( PIXA *pixas ); +LEPT_DLL extern PIXA * pixaConvertToGivenDepth ( PIXA *pixas, l_int32 depth ); +LEPT_DLL extern l_ok pixaEqual ( PIXA *pixa1, PIXA *pixa2, l_int32 maxdist, NUMA **pnaindex, l_int32 *psame ); +LEPT_DLL extern l_ok pixaSetFullSizeBoxa ( PIXA *pixa ); +LEPT_DLL extern PIX * pixaDisplay ( PIXA *pixa, l_int32 w, l_int32 h ); +LEPT_DLL extern PIX * pixaDisplayRandomCmap ( PIXA *pixa, l_int32 w, l_int32 h ); +LEPT_DLL extern PIX * pixaDisplayLinearly ( PIXA *pixas, l_int32 direction, l_float32 scalefactor, l_int32 background, l_int32 spacing, l_int32 border, BOXA **pboxa ); +LEPT_DLL extern PIX * pixaDisplayOnLattice ( PIXA *pixa, l_int32 cellw, l_int32 cellh, l_int32 *pncols, BOXA **pboxa ); +LEPT_DLL extern PIX * pixaDisplayUnsplit ( PIXA *pixa, l_int32 nx, l_int32 ny, l_int32 borderwidth, l_uint32 bordercolor ); +LEPT_DLL extern PIX * pixaDisplayTiled ( PIXA *pixa, l_int32 maxwidth, l_int32 background, l_int32 spacing ); +LEPT_DLL extern PIX * pixaDisplayTiledInRows ( PIXA *pixa, l_int32 outdepth, l_int32 maxwidth, l_float32 scalefactor, l_int32 background, l_int32 spacing, l_int32 border ); +LEPT_DLL extern PIX * pixaDisplayTiledInColumns ( PIXA *pixas, l_int32 nx, l_float32 scalefactor, l_int32 spacing, l_int32 border ); +LEPT_DLL extern PIX * pixaDisplayTiledAndScaled ( PIXA *pixa, l_int32 outdepth, l_int32 tilewidth, l_int32 ncols, l_int32 background, l_int32 spacing, l_int32 border ); +LEPT_DLL extern PIX * pixaDisplayTiledWithText ( PIXA *pixa, l_int32 maxwidth, l_float32 scalefactor, l_int32 spacing, l_int32 border, l_int32 fontsize, l_uint32 textcolor ); +LEPT_DLL extern PIX * pixaDisplayTiledByIndex ( PIXA *pixa, NUMA *na, l_int32 width, l_int32 spacing, l_int32 border, l_int32 fontsize, l_uint32 textcolor ); +LEPT_DLL extern PIX * pixaDisplayPairTiledInColumns ( PIXA *pixas1, PIXA *pixas2, l_int32 nx, l_float32 scalefactor, l_int32 spacing1, l_int32 spacing2, l_int32 border1, l_int32 border2, l_int32 fontsize, l_int32 startindex, SARRAY *sa ); +LEPT_DLL extern PIX * pixaaDisplay ( PIXAA *paa, l_int32 w, l_int32 h ); +LEPT_DLL extern PIX * pixaaDisplayByPixa ( PIXAA *paa, l_int32 maxnx, l_float32 scalefactor, l_int32 hspacing, l_int32 vspacing, l_int32 border ); +LEPT_DLL extern PIXA * pixaaDisplayTiledAndScaled ( PIXAA *paa, l_int32 outdepth, l_int32 tilewidth, l_int32 ncols, l_int32 background, l_int32 spacing, l_int32 border ); +LEPT_DLL extern PIXA * pixaConvertTo1 ( PIXA *pixas, l_int32 thresh ); +LEPT_DLL extern PIXA * pixaConvertTo8 ( PIXA *pixas, l_int32 cmapflag ); +LEPT_DLL extern PIXA * pixaConvertTo8Colormap ( PIXA *pixas, l_int32 dither ); +LEPT_DLL extern PIXA * pixaConvertTo32 ( PIXA *pixas ); +LEPT_DLL extern PIXA * pixaConstrainedSelect ( PIXA *pixas, l_int32 first, l_int32 last, l_int32 nmax, l_int32 use_pairs, l_int32 copyflag ); +LEPT_DLL extern l_ok pixaSelectToPdf ( PIXA *pixas, l_int32 first, l_int32 last, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, l_uint32 color, l_int32 fontsize, const char *fileout ); +LEPT_DLL extern PIXA * pixaMakeFromTiledPixa ( PIXA *pixas, l_int32 w, l_int32 h, l_int32 nsamp ); +LEPT_DLL extern PIXA * pixaMakeFromTiledPix ( PIX *pixs, l_int32 w, l_int32 h, l_int32 start, l_int32 num, BOXA *boxa ); +LEPT_DLL extern l_ok pixGetTileCount ( PIX *pix, l_int32 *pn ); +LEPT_DLL extern PIXA * pixaDisplayMultiTiled ( PIXA *pixas, l_int32 nx, l_int32 ny, l_int32 maxw, l_int32 maxh, l_float32 scalefactor, l_int32 spacing, l_int32 border ); +LEPT_DLL extern l_ok pixaSplitIntoFiles ( PIXA *pixas, l_int32 nsplit, l_float32 scale, l_int32 outwidth, l_int32 write_pixa, l_int32 write_pix, l_int32 write_pdf ); +LEPT_DLL extern l_ok convertToNUpFiles ( const char *dir, const char *substr, l_int32 nx, l_int32 ny, l_int32 tw, l_int32 spacing, l_int32 border, l_int32 fontsize, const char *outdir ); +LEPT_DLL extern PIXA * convertToNUpPixa ( const char *dir, const char *substr, l_int32 nx, l_int32 ny, l_int32 tw, l_int32 spacing, l_int32 border, l_int32 fontsize ); +LEPT_DLL extern PIXA * pixaConvertToNUpPixa ( PIXA *pixas, SARRAY *sa, l_int32 nx, l_int32 ny, l_int32 tw, l_int32 spacing, l_int32 border, l_int32 fontsize ); +LEPT_DLL extern l_ok pixaCompareInPdf ( PIXA *pixa1, PIXA *pixa2, l_int32 nx, l_int32 ny, l_int32 tw, l_int32 spacing, l_int32 border, l_int32 fontsize, const char *fileout ); +LEPT_DLL extern l_ok pmsCreate ( size_t minsize, size_t smallest, NUMA *numalloc, const char *logfile ); +LEPT_DLL extern void pmsDestroy ( void ); +LEPT_DLL extern void * pmsCustomAlloc ( size_t nbytes ); +LEPT_DLL extern void pmsCustomDealloc ( void *data ); +LEPT_DLL extern void * pmsGetAlloc ( size_t nbytes ); +LEPT_DLL extern l_ok pmsGetLevelForAlloc ( size_t nbytes, l_int32 *plevel ); +LEPT_DLL extern l_ok pmsGetLevelForDealloc ( void *data, l_int32 *plevel ); +LEPT_DLL extern void pmsLogInfo ( void ); +LEPT_DLL extern l_ok pixAddConstantGray ( PIX *pixs, l_int32 val ); +LEPT_DLL extern l_ok pixMultConstantGray ( PIX *pixs, l_float32 val ); +LEPT_DLL extern PIX * pixAddGray ( PIX *pixd, PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern PIX * pixSubtractGray ( PIX *pixd, PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern PIX * pixMultiplyGray ( PIX *pixs, PIX *pixg, l_float32 norm ); +LEPT_DLL extern PIX * pixThresholdToValue ( PIX *pixd, PIX *pixs, l_int32 threshval, l_int32 setval ); +LEPT_DLL extern PIX * pixInitAccumulate ( l_int32 w, l_int32 h, l_uint32 offset ); +LEPT_DLL extern PIX * pixFinalAccumulate ( PIX *pixs, l_uint32 offset, l_int32 depth ); +LEPT_DLL extern PIX * pixFinalAccumulateThreshold ( PIX *pixs, l_uint32 offset, l_uint32 threshold ); +LEPT_DLL extern l_ok pixAccumulate ( PIX *pixd, PIX *pixs, l_int32 op ); +LEPT_DLL extern l_ok pixMultConstAccumulate ( PIX *pixs, l_float32 factor, l_uint32 offset ); +LEPT_DLL extern PIX * pixAbsDifference ( PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern PIX * pixAddRGB ( PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern PIX * pixMinOrMax ( PIX *pixd, PIX *pixs1, PIX *pixs2, l_int32 type ); +LEPT_DLL extern PIX * pixMaxDynamicRange ( PIX *pixs, l_int32 type ); +LEPT_DLL extern PIX * pixMaxDynamicRangeRGB ( PIX *pixs, l_int32 type ); +LEPT_DLL extern l_uint32 linearScaleRGBVal ( l_uint32 sval, l_float32 factor ); +LEPT_DLL extern l_uint32 logScaleRGBVal ( l_uint32 sval, l_float32 *tab, l_float32 factor ); +LEPT_DLL extern l_float32 * makeLogBase2Tab ( void ); +LEPT_DLL extern l_float32 getLogBase2 ( l_int32 val, l_float32 *logtab ); +LEPT_DLL extern PIXC * pixcompCreateFromPix ( PIX *pix, l_int32 comptype ); +LEPT_DLL extern PIXC * pixcompCreateFromString ( l_uint8 *data, size_t size, l_int32 copyflag ); +LEPT_DLL extern PIXC * pixcompCreateFromFile ( const char *filename, l_int32 comptype ); +LEPT_DLL extern void pixcompDestroy ( PIXC **ppixc ); +LEPT_DLL extern PIXC * pixcompCopy ( PIXC *pixcs ); +LEPT_DLL extern l_ok pixcompGetDimensions ( PIXC *pixc, l_int32 *pw, l_int32 *ph, l_int32 *pd ); +LEPT_DLL extern l_ok pixcompGetParameters ( PIXC *pixc, l_int32 *pxres, l_int32 *pyres, l_int32 *pcomptype, l_int32 *pcmapflag ); +LEPT_DLL extern l_ok pixcompDetermineFormat ( l_int32 comptype, l_int32 d, l_int32 cmapflag, l_int32 *pformat ); +LEPT_DLL extern PIX * pixCreateFromPixcomp ( PIXC *pixc ); +LEPT_DLL extern PIXAC * pixacompCreate ( l_int32 n ); +LEPT_DLL extern PIXAC * pixacompCreateWithInit ( l_int32 n, l_int32 offset, PIX *pix, l_int32 comptype ); +LEPT_DLL extern PIXAC * pixacompCreateFromPixa ( PIXA *pixa, l_int32 comptype, l_int32 accesstype ); +LEPT_DLL extern PIXAC * pixacompCreateFromFiles ( const char *dirname, const char *substr, l_int32 comptype ); +LEPT_DLL extern PIXAC * pixacompCreateFromSA ( SARRAY *sa, l_int32 comptype ); +LEPT_DLL extern void pixacompDestroy ( PIXAC **ppixac ); +LEPT_DLL extern l_ok pixacompAddPix ( PIXAC *pixac, PIX *pix, l_int32 comptype ); +LEPT_DLL extern l_ok pixacompAddPixcomp ( PIXAC *pixac, PIXC *pixc, l_int32 copyflag ); +LEPT_DLL extern l_ok pixacompReplacePix ( PIXAC *pixac, l_int32 index, PIX *pix, l_int32 comptype ); +LEPT_DLL extern l_ok pixacompReplacePixcomp ( PIXAC *pixac, l_int32 index, PIXC *pixc ); +LEPT_DLL extern l_ok pixacompAddBox ( PIXAC *pixac, BOX *box, l_int32 copyflag ); +LEPT_DLL extern l_int32 pixacompGetCount ( PIXAC *pixac ); +LEPT_DLL extern PIXC * pixacompGetPixcomp ( PIXAC *pixac, l_int32 index, l_int32 copyflag ); +LEPT_DLL extern PIX * pixacompGetPix ( PIXAC *pixac, l_int32 index ); +LEPT_DLL extern l_ok pixacompGetPixDimensions ( PIXAC *pixac, l_int32 index, l_int32 *pw, l_int32 *ph, l_int32 *pd ); +LEPT_DLL extern BOXA * pixacompGetBoxa ( PIXAC *pixac, l_int32 accesstype ); +LEPT_DLL extern l_int32 pixacompGetBoxaCount ( PIXAC *pixac ); +LEPT_DLL extern BOX * pixacompGetBox ( PIXAC *pixac, l_int32 index, l_int32 accesstype ); +LEPT_DLL extern l_ok pixacompGetBoxGeometry ( PIXAC *pixac, l_int32 index, l_int32 *px, l_int32 *py, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern l_int32 pixacompGetOffset ( PIXAC *pixac ); +LEPT_DLL extern l_ok pixacompSetOffset ( PIXAC *pixac, l_int32 offset ); +LEPT_DLL extern PIXA * pixaCreateFromPixacomp ( PIXAC *pixac, l_int32 accesstype ); +LEPT_DLL extern l_ok pixacompJoin ( PIXAC *pixacd, PIXAC *pixacs, l_int32 istart, l_int32 iend ); +LEPT_DLL extern PIXAC * pixacompInterleave ( PIXAC *pixac1, PIXAC *pixac2 ); +LEPT_DLL extern PIXAC * pixacompRead ( const char *filename ); +LEPT_DLL extern PIXAC * pixacompReadStream ( FILE *fp ); +LEPT_DLL extern PIXAC * pixacompReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok pixacompWrite ( const char *filename, PIXAC *pixac ); +LEPT_DLL extern l_ok pixacompWriteStream ( FILE *fp, PIXAC *pixac ); +LEPT_DLL extern l_ok pixacompWriteMem ( l_uint8 **pdata, size_t *psize, PIXAC *pixac ); +LEPT_DLL extern l_ok pixacompConvertToPdf ( PIXAC *pixac, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, const char *fileout ); +LEPT_DLL extern l_ok pixacompConvertToPdfData ( PIXAC *pixac, l_int32 res, l_float32 scalefactor, l_int32 type, l_int32 quality, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok pixacompFastConvertToPdfData ( PIXAC *pixac, const char *title, l_uint8 **pdata, size_t *pnbytes ); +LEPT_DLL extern l_ok pixacompWriteStreamInfo ( FILE *fp, PIXAC *pixac, const char *text ); +LEPT_DLL extern l_ok pixcompWriteStreamInfo ( FILE *fp, PIXC *pixc, const char *text ); +LEPT_DLL extern PIX * pixacompDisplayTiledAndScaled ( PIXAC *pixac, l_int32 outdepth, l_int32 tilewidth, l_int32 ncols, l_int32 background, l_int32 spacing, l_int32 border ); +LEPT_DLL extern l_ok pixacompWriteFiles ( PIXAC *pixac, const char *subdir ); +LEPT_DLL extern l_ok pixcompWriteFile ( const char *rootname, PIXC *pixc ); +LEPT_DLL extern PIX * pixThreshold8 ( PIX *pixs, l_int32 d, l_int32 nlevels, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixRemoveColormapGeneral ( PIX *pixs, l_int32 type, l_int32 ifnocmap ); +LEPT_DLL extern PIX * pixRemoveColormap ( PIX *pixs, l_int32 type ); +LEPT_DLL extern l_ok pixAddGrayColormap8 ( PIX *pixs ); +LEPT_DLL extern PIX * pixAddMinimalGrayColormap8 ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertRGBToLuminance ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertRGBToGrayGeneral ( PIX *pixs, l_int32 type, l_float32 rwt, l_float32 gwt, l_float32 bwt ); +LEPT_DLL extern PIX * pixConvertRGBToGray ( PIX *pixs, l_float32 rwt, l_float32 gwt, l_float32 bwt ); +LEPT_DLL extern PIX * pixConvertRGBToGrayFast ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertRGBToGrayMinMax ( PIX *pixs, l_int32 type ); +LEPT_DLL extern PIX * pixConvertRGBToGraySatBoost ( PIX *pixs, l_int32 refval ); +LEPT_DLL extern PIX * pixConvertRGBToGrayArb ( PIX *pixs, l_float32 rc, l_float32 gc, l_float32 bc ); +LEPT_DLL extern PIX * pixConvertRGBToBinaryArb ( PIX *pixs, l_float32 rc, l_float32 gc, l_float32 bc, l_int32 thresh, l_int32 relation ); +LEPT_DLL extern PIX * pixConvertGrayToColormap ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertGrayToColormap8 ( PIX *pixs, l_int32 mindepth ); +LEPT_DLL extern PIX * pixColorizeGray ( PIX *pixs, l_uint32 color, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixConvertRGBToColormap ( PIX *pixs, l_int32 ditherflag ); +LEPT_DLL extern PIX * pixConvertCmapTo1 ( PIX *pixs ); +LEPT_DLL extern l_ok pixQuantizeIfFewColors ( PIX *pixs, l_int32 maxcolors, l_int32 mingraycolors, l_int32 octlevel, PIX **ppixd ); +LEPT_DLL extern PIX * pixConvert16To8 ( PIX *pixs, l_int32 type ); +LEPT_DLL extern PIX * pixConvertGrayToFalseColor ( PIX *pixs, l_float32 gamma ); +LEPT_DLL extern PIX * pixUnpackBinary ( PIX *pixs, l_int32 depth, l_int32 invert ); +LEPT_DLL extern PIX * pixConvert1To16 ( PIX *pixd, PIX *pixs, l_uint16 val0, l_uint16 val1 ); +LEPT_DLL extern PIX * pixConvert1To32 ( PIX *pixd, PIX *pixs, l_uint32 val0, l_uint32 val1 ); +LEPT_DLL extern PIX * pixConvert1To2Cmap ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvert1To2 ( PIX *pixd, PIX *pixs, l_int32 val0, l_int32 val1 ); +LEPT_DLL extern PIX * pixConvert1To4Cmap ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvert1To4 ( PIX *pixd, PIX *pixs, l_int32 val0, l_int32 val1 ); +LEPT_DLL extern PIX * pixConvert1To8Cmap ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvert1To8 ( PIX *pixd, PIX *pixs, l_uint8 val0, l_uint8 val1 ); +LEPT_DLL extern PIX * pixConvert2To8 ( PIX *pixs, l_uint8 val0, l_uint8 val1, l_uint8 val2, l_uint8 val3, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixConvert4To8 ( PIX *pixs, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixConvert8To16 ( PIX *pixs, l_int32 leftshift ); +LEPT_DLL extern PIX * pixConvertTo2 ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvert8To2 ( PIX *pix ); +LEPT_DLL extern PIX * pixConvertTo4 ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvert8To4 ( PIX *pix ); +LEPT_DLL extern PIX * pixConvertTo1Adaptive ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertTo1 ( PIX *pixs, l_int32 threshold ); +LEPT_DLL extern PIX * pixConvertTo1BySampling ( PIX *pixs, l_int32 factor, l_int32 threshold ); +LEPT_DLL extern PIX * pixConvertTo8 ( PIX *pixs, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixConvertTo8BySampling ( PIX *pixs, l_int32 factor, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixConvertTo8Colormap ( PIX *pixs, l_int32 dither ); +LEPT_DLL extern PIX * pixConvertTo16 ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertTo32 ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertTo32BySampling ( PIX *pixs, l_int32 factor ); +LEPT_DLL extern PIX * pixConvert8To32 ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertTo8Or32 ( PIX *pixs, l_int32 copyflag, l_int32 warnflag ); +LEPT_DLL extern PIX * pixConvert24To32 ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvert32To24 ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvert32To16 ( PIX *pixs, l_int32 type ); +LEPT_DLL extern PIX * pixConvert32To8 ( PIX *pixs, l_int32 type16, l_int32 type8 ); +LEPT_DLL extern PIX * pixRemoveAlpha ( PIX *pixs ); +LEPT_DLL extern PIX * pixAddAlphaTo1bpp ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern PIX * pixConvertLossless ( PIX *pixs, l_int32 d ); +LEPT_DLL extern PIX * pixConvertForPSWrap ( PIX *pixs ); +LEPT_DLL extern PIX * pixConvertToSubpixelRGB ( PIX *pixs, l_float32 scalex, l_float32 scaley, l_int32 order ); +LEPT_DLL extern PIX * pixConvertGrayToSubpixelRGB ( PIX *pixs, l_float32 scalex, l_float32 scaley, l_int32 order ); +LEPT_DLL extern PIX * pixConvertColorToSubpixelRGB ( PIX *pixs, l_float32 scalex, l_float32 scaley, l_int32 order ); +LEPT_DLL extern void l_setNeutralBoostVal ( l_int32 val ); +LEPT_DLL extern PIX * pixConnCompTransform ( PIX *pixs, l_int32 connect, l_int32 depth ); +LEPT_DLL extern PIX * pixConnCompAreaTransform ( PIX *pixs, l_int32 connect ); +LEPT_DLL extern l_ok pixConnCompIncrInit ( PIX *pixs, l_int32 conn, PIX **ppixd, PTAA **pptaa, l_int32 *pncc ); +LEPT_DLL extern l_int32 pixConnCompIncrAdd ( PIX *pixs, PTAA *ptaa, l_int32 *pncc, l_float32 x, l_float32 y, l_int32 debug ); +LEPT_DLL extern l_ok pixGetSortedNeighborValues ( PIX *pixs, l_int32 x, l_int32 y, l_int32 conn, l_int32 **pneigh, l_int32 *pnvals ); +LEPT_DLL extern PIX * pixLocToColorTransform ( PIX *pixs ); +LEPT_DLL extern PIXTILING * pixTilingCreate ( PIX *pixs, l_int32 nx, l_int32 ny, l_int32 w, l_int32 h, l_int32 xoverlap, l_int32 yoverlap ); +LEPT_DLL extern void pixTilingDestroy ( PIXTILING **ppt ); +LEPT_DLL extern l_ok pixTilingGetCount ( PIXTILING *pt, l_int32 *pnx, l_int32 *pny ); +LEPT_DLL extern l_ok pixTilingGetSize ( PIXTILING *pt, l_int32 *pw, l_int32 *ph ); +LEPT_DLL extern PIX * pixTilingGetTile ( PIXTILING *pt, l_int32 i, l_int32 j ); +LEPT_DLL extern l_ok pixTilingNoStripOnPaint ( PIXTILING *pt ); +LEPT_DLL extern l_ok pixTilingPaintTile ( PIX *pixd, l_int32 i, l_int32 j, PIX *pixs, PIXTILING *pt ); +LEPT_DLL extern PIX * pixReadStreamPng ( FILE *fp ); +LEPT_DLL extern l_ok readHeaderPng ( const char *filename, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap ); +LEPT_DLL extern l_ok freadHeaderPng ( FILE *fp, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap ); +LEPT_DLL extern l_ok readHeaderMemPng ( const l_uint8 *data, size_t size, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap ); +LEPT_DLL extern l_int32 fgetPngResolution ( FILE *fp, l_int32 *pxres, l_int32 *pyres ); +LEPT_DLL extern l_ok isPngInterlaced ( const char *filename, l_int32 *pinterlaced ); +LEPT_DLL extern l_ok fgetPngColormapInfo ( FILE *fp, PIXCMAP **pcmap, l_int32 *ptransparency ); +LEPT_DLL extern l_ok pixWritePng ( const char *filename, PIX *pix, l_float32 gamma ); +LEPT_DLL extern l_ok pixWriteStreamPng ( FILE *fp, PIX *pix, l_float32 gamma ); +LEPT_DLL extern l_ok pixSetZlibCompression ( PIX *pix, l_int32 compval ); +LEPT_DLL extern void l_pngSetReadStrip16To8 ( l_int32 flag ); +LEPT_DLL extern PIX * pixReadMemPng ( const l_uint8 *filedata, size_t filesize ); +LEPT_DLL extern l_ok pixWriteMemPng ( l_uint8 **pfiledata, size_t *pfilesize, PIX *pix, l_float32 gamma ); +LEPT_DLL extern PIX * pixReadStreamPnm ( FILE *fp ); +LEPT_DLL extern l_ok readHeaderPnm ( const char *filename, l_int32 *pw, l_int32 *ph, l_int32 *pd, l_int32 *ptype, l_int32 *pbps, l_int32 *pspp ); +LEPT_DLL extern l_ok freadHeaderPnm ( FILE *fp, l_int32 *pw, l_int32 *ph, l_int32 *pd, l_int32 *ptype, l_int32 *pbps, l_int32 *pspp ); +LEPT_DLL extern l_ok pixWriteStreamPnm ( FILE *fp, PIX *pix ); +LEPT_DLL extern l_ok pixWriteStreamAsciiPnm ( FILE *fp, PIX *pix ); +LEPT_DLL extern l_ok pixWriteStreamPam ( FILE *fp, PIX *pix ); +LEPT_DLL extern PIX * pixReadMemPnm ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok readHeaderMemPnm ( const l_uint8 *data, size_t size, l_int32 *pw, l_int32 *ph, l_int32 *pd, l_int32 *ptype, l_int32 *pbps, l_int32 *pspp ); +LEPT_DLL extern l_ok pixWriteMemPnm ( l_uint8 **pdata, size_t *psize, PIX *pix ); +LEPT_DLL extern l_ok pixWriteMemPam ( l_uint8 **pdata, size_t *psize, PIX *pix ); +LEPT_DLL extern PIX * pixProjectiveSampledPta ( PIX *pixs, PTA *ptad, PTA *ptas, l_int32 incolor ); +LEPT_DLL extern PIX * pixProjectiveSampled ( PIX *pixs, l_float32 *vc, l_int32 incolor ); +LEPT_DLL extern PIX * pixProjectivePta ( PIX *pixs, PTA *ptad, PTA *ptas, l_int32 incolor ); +LEPT_DLL extern PIX * pixProjective ( PIX *pixs, l_float32 *vc, l_int32 incolor ); +LEPT_DLL extern PIX * pixProjectivePtaColor ( PIX *pixs, PTA *ptad, PTA *ptas, l_uint32 colorval ); +LEPT_DLL extern PIX * pixProjectiveColor ( PIX *pixs, l_float32 *vc, l_uint32 colorval ); +LEPT_DLL extern PIX * pixProjectivePtaGray ( PIX *pixs, PTA *ptad, PTA *ptas, l_uint8 grayval ); +LEPT_DLL extern PIX * pixProjectiveGray ( PIX *pixs, l_float32 *vc, l_uint8 grayval ); +LEPT_DLL extern PIX * pixProjectivePtaWithAlpha ( PIX *pixs, PTA *ptad, PTA *ptas, PIX *pixg, l_float32 fract, l_int32 border ); +LEPT_DLL extern l_ok getProjectiveXformCoeffs ( PTA *ptas, PTA *ptad, l_float32 **pvc ); +LEPT_DLL extern l_ok projectiveXformSampledPt ( l_float32 *vc, l_int32 x, l_int32 y, l_int32 *pxp, l_int32 *pyp ); +LEPT_DLL extern l_ok projectiveXformPt ( l_float32 *vc, l_int32 x, l_int32 y, l_float32 *pxp, l_float32 *pyp ); +LEPT_DLL extern l_ok convertFilesToPS ( const char *dirin, const char *substr, l_int32 res, const char *fileout ); +LEPT_DLL extern l_ok sarrayConvertFilesToPS ( SARRAY *sa, l_int32 res, const char *fileout ); +LEPT_DLL extern l_ok convertFilesFittedToPS ( const char *dirin, const char *substr, l_float32 xpts, l_float32 ypts, const char *fileout ); +LEPT_DLL extern l_ok sarrayConvertFilesFittedToPS ( SARRAY *sa, l_float32 xpts, l_float32 ypts, const char *fileout ); +LEPT_DLL extern l_ok writeImageCompressedToPSFile ( const char *filein, const char *fileout, l_int32 res, l_int32 *pindex ); +LEPT_DLL extern l_ok convertSegmentedPagesToPS ( const char *pagedir, const char *pagestr, l_int32 page_numpre, const char *maskdir, const char *maskstr, l_int32 mask_numpre, l_int32 numpost, l_int32 maxnum, l_float32 textscale, l_float32 imagescale, l_int32 threshold, const char *fileout ); +LEPT_DLL extern l_ok pixWriteSegmentedPageToPS ( PIX *pixs, PIX *pixm, l_float32 textscale, l_float32 imagescale, l_int32 threshold, l_int32 pageno, const char *fileout ); +LEPT_DLL extern l_ok pixWriteMixedToPS ( PIX *pixb, PIX *pixc, l_float32 scale, l_int32 pageno, const char *fileout ); +LEPT_DLL extern l_ok convertToPSEmbed ( const char *filein, const char *fileout, l_int32 level ); +LEPT_DLL extern l_ok pixaWriteCompressedToPS ( PIXA *pixa, const char *fileout, l_int32 res, l_int32 level ); +LEPT_DLL extern l_ok pixWriteCompressedToPS ( PIX *pix, const char *fileout, l_int32 res, l_int32 level, l_int32 *pindex ); +LEPT_DLL extern l_ok pixWritePSEmbed ( const char *filein, const char *fileout ); +LEPT_DLL extern l_ok pixWriteStreamPS ( FILE *fp, PIX *pix, BOX *box, l_int32 res, l_float32 scale ); +LEPT_DLL extern char * pixWriteStringPS ( PIX *pixs, BOX *box, l_int32 res, l_float32 scale ); +LEPT_DLL extern char * generateUncompressedPS ( char *hexdata, l_int32 w, l_int32 h, l_int32 d, l_int32 psbpl, l_int32 bps, l_float32 xpt, l_float32 ypt, l_float32 wpt, l_float32 hpt, l_int32 boxflag ); +LEPT_DLL extern l_ok convertJpegToPSEmbed ( const char *filein, const char *fileout ); +LEPT_DLL extern l_ok convertJpegToPS ( const char *filein, const char *fileout, const char *operation, l_int32 x, l_int32 y, l_int32 res, l_float32 scale, l_int32 pageno, l_int32 endpage ); +LEPT_DLL extern l_ok convertG4ToPSEmbed ( const char *filein, const char *fileout ); +LEPT_DLL extern l_ok convertG4ToPS ( const char *filein, const char *fileout, const char *operation, l_int32 x, l_int32 y, l_int32 res, l_float32 scale, l_int32 pageno, l_int32 maskflag, l_int32 endpage ); +LEPT_DLL extern l_ok convertTiffMultipageToPS ( const char *filein, const char *fileout, l_float32 fillfract ); +LEPT_DLL extern l_ok convertFlateToPSEmbed ( const char *filein, const char *fileout ); +LEPT_DLL extern l_ok convertFlateToPS ( const char *filein, const char *fileout, const char *operation, l_int32 x, l_int32 y, l_int32 res, l_float32 scale, l_int32 pageno, l_int32 endpage ); +LEPT_DLL extern l_ok pixWriteMemPS ( l_uint8 **pdata, size_t *psize, PIX *pix, BOX *box, l_int32 res, l_float32 scale ); +LEPT_DLL extern l_int32 getResLetterPage ( l_int32 w, l_int32 h, l_float32 fillfract ); +LEPT_DLL extern l_int32 getResA4Page ( l_int32 w, l_int32 h, l_float32 fillfract ); +LEPT_DLL extern void l_psWriteBoundingBox ( l_int32 flag ); +LEPT_DLL extern PTA * ptaCreate ( l_int32 n ); +LEPT_DLL extern PTA * ptaCreateFromNuma ( NUMA *nax, NUMA *nay ); +LEPT_DLL extern void ptaDestroy ( PTA **ppta ); +LEPT_DLL extern PTA * ptaCopy ( PTA *pta ); +LEPT_DLL extern PTA * ptaCopyRange ( PTA *ptas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern PTA * ptaClone ( PTA *pta ); +LEPT_DLL extern l_ok ptaEmpty ( PTA *pta ); +LEPT_DLL extern l_ok ptaAddPt ( PTA *pta, l_float32 x, l_float32 y ); +LEPT_DLL extern l_ok ptaInsertPt ( PTA *pta, l_int32 index, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok ptaRemovePt ( PTA *pta, l_int32 index ); +LEPT_DLL extern l_int32 ptaGetCount ( PTA *pta ); +LEPT_DLL extern l_ok ptaGetPt ( PTA *pta, l_int32 index, l_float32 *px, l_float32 *py ); +LEPT_DLL extern l_ok ptaGetIPt ( PTA *pta, l_int32 index, l_int32 *px, l_int32 *py ); +LEPT_DLL extern l_ok ptaSetPt ( PTA *pta, l_int32 index, l_float32 x, l_float32 y ); +LEPT_DLL extern l_ok ptaGetArrays ( PTA *pta, NUMA **pnax, NUMA **pnay ); +LEPT_DLL extern PTA * ptaRead ( const char *filename ); +LEPT_DLL extern PTA * ptaReadStream ( FILE *fp ); +LEPT_DLL extern PTA * ptaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok ptaWriteDebug ( const char *filename, PTA *pta, l_int32 type ); +LEPT_DLL extern l_ok ptaWrite ( const char *filename, PTA *pta, l_int32 type ); +LEPT_DLL extern l_ok ptaWriteStream ( FILE *fp, PTA *pta, l_int32 type ); +LEPT_DLL extern l_ok ptaWriteMem ( l_uint8 **pdata, size_t *psize, PTA *pta, l_int32 type ); +LEPT_DLL extern PTAA * ptaaCreate ( l_int32 n ); +LEPT_DLL extern void ptaaDestroy ( PTAA **pptaa ); +LEPT_DLL extern l_ok ptaaAddPta ( PTAA *ptaa, PTA *pta, l_int32 copyflag ); +LEPT_DLL extern l_int32 ptaaGetCount ( PTAA *ptaa ); +LEPT_DLL extern PTA * ptaaGetPta ( PTAA *ptaa, l_int32 index, l_int32 accessflag ); +LEPT_DLL extern l_ok ptaaGetPt ( PTAA *ptaa, l_int32 ipta, l_int32 jpt, l_float32 *px, l_float32 *py ); +LEPT_DLL extern l_ok ptaaInitFull ( PTAA *ptaa, PTA *pta ); +LEPT_DLL extern l_ok ptaaReplacePta ( PTAA *ptaa, l_int32 index, PTA *pta ); +LEPT_DLL extern l_ok ptaaAddPt ( PTAA *ptaa, l_int32 ipta, l_float32 x, l_float32 y ); +LEPT_DLL extern l_ok ptaaTruncate ( PTAA *ptaa ); +LEPT_DLL extern PTAA * ptaaRead ( const char *filename ); +LEPT_DLL extern PTAA * ptaaReadStream ( FILE *fp ); +LEPT_DLL extern PTAA * ptaaReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok ptaaWriteDebug ( const char *filename, PTAA *ptaa, l_int32 type ); +LEPT_DLL extern l_ok ptaaWrite ( const char *filename, PTAA *ptaa, l_int32 type ); +LEPT_DLL extern l_ok ptaaWriteStream ( FILE *fp, PTAA *ptaa, l_int32 type ); +LEPT_DLL extern l_ok ptaaWriteMem ( l_uint8 **pdata, size_t *psize, PTAA *ptaa, l_int32 type ); +LEPT_DLL extern PTA * ptaSubsample ( PTA *ptas, l_int32 subfactor ); +LEPT_DLL extern l_ok ptaJoin ( PTA *ptad, PTA *ptas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern l_ok ptaaJoin ( PTAA *ptaad, PTAA *ptaas, l_int32 istart, l_int32 iend ); +LEPT_DLL extern PTA * ptaReverse ( PTA *ptas, l_int32 type ); +LEPT_DLL extern PTA * ptaTranspose ( PTA *ptas ); +LEPT_DLL extern PTA * ptaCyclicPerm ( PTA *ptas, l_int32 xs, l_int32 ys ); +LEPT_DLL extern PTA * ptaSelectRange ( PTA *ptas, l_int32 first, l_int32 last ); +LEPT_DLL extern BOX * ptaGetBoundingRegion ( PTA *pta ); +LEPT_DLL extern l_ok ptaGetRange ( PTA *pta, l_float32 *pminx, l_float32 *pmaxx, l_float32 *pminy, l_float32 *pmaxy ); +LEPT_DLL extern PTA * ptaGetInsideBox ( PTA *ptas, BOX *box ); +LEPT_DLL extern PTA * pixFindCornerPixels ( PIX *pixs ); +LEPT_DLL extern l_int32 ptaContainsPt ( PTA *pta, l_int32 x, l_int32 y ); +LEPT_DLL extern l_int32 ptaTestIntersection ( PTA *pta1, PTA *pta2 ); +LEPT_DLL extern PTA * ptaTransform ( PTA *ptas, l_int32 shiftx, l_int32 shifty, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern l_int32 ptaPtInsidePolygon ( PTA *pta, l_float32 x, l_float32 y, l_int32 *pinside ); +LEPT_DLL extern l_float32 l_angleBetweenVectors ( l_float32 x1, l_float32 y1, l_float32 x2, l_float32 y2 ); +LEPT_DLL extern l_int32 ptaPolygonIsConvex ( PTA *pta, l_int32 *pisconvex ); +LEPT_DLL extern l_ok ptaGetMinMax ( PTA *pta, l_float32 *pxmin, l_float32 *pymin, l_float32 *pxmax, l_float32 *pymax ); +LEPT_DLL extern PTA * ptaSelectByValue ( PTA *ptas, l_float32 xth, l_float32 yth, l_int32 type, l_int32 relation ); +LEPT_DLL extern PTA * ptaCropToMask ( PTA *ptas, PIX *pixm ); +LEPT_DLL extern l_ok ptaGetLinearLSF ( PTA *pta, l_float32 *pa, l_float32 *pb, NUMA **pnafit ); +LEPT_DLL extern l_ok ptaGetQuadraticLSF ( PTA *pta, l_float32 *pa, l_float32 *pb, l_float32 *pc, NUMA **pnafit ); +LEPT_DLL extern l_ok ptaGetCubicLSF ( PTA *pta, l_float32 *pa, l_float32 *pb, l_float32 *pc, l_float32 *pd, NUMA **pnafit ); +LEPT_DLL extern l_ok ptaGetQuarticLSF ( PTA *pta, l_float32 *pa, l_float32 *pb, l_float32 *pc, l_float32 *pd, l_float32 *pe, NUMA **pnafit ); +LEPT_DLL extern l_ok ptaNoisyLinearLSF ( PTA *pta, l_float32 factor, PTA **pptad, l_float32 *pa, l_float32 *pb, l_float32 *pmederr, NUMA **pnafit ); +LEPT_DLL extern l_ok ptaNoisyQuadraticLSF ( PTA *pta, l_float32 factor, PTA **pptad, l_float32 *pa, l_float32 *pb, l_float32 *pc, l_float32 *pmederr, NUMA **pnafit ); +LEPT_DLL extern l_ok applyLinearFit ( l_float32 a, l_float32 b, l_float32 x, l_float32 *py ); +LEPT_DLL extern l_ok applyQuadraticFit ( l_float32 a, l_float32 b, l_float32 c, l_float32 x, l_float32 *py ); +LEPT_DLL extern l_ok applyCubicFit ( l_float32 a, l_float32 b, l_float32 c, l_float32 d, l_float32 x, l_float32 *py ); +LEPT_DLL extern l_ok applyQuarticFit ( l_float32 a, l_float32 b, l_float32 c, l_float32 d, l_float32 e, l_float32 x, l_float32 *py ); +LEPT_DLL extern l_ok pixPlotAlongPta ( PIX *pixs, PTA *pta, l_int32 outformat, const char *title ); +LEPT_DLL extern PTA * ptaGetPixelsFromPix ( PIX *pixs, BOX *box ); +LEPT_DLL extern PIX * pixGenerateFromPta ( PTA *pta, l_int32 w, l_int32 h ); +LEPT_DLL extern PTA * ptaGetBoundaryPixels ( PIX *pixs, l_int32 type ); +LEPT_DLL extern PTAA * ptaaGetBoundaryPixels ( PIX *pixs, l_int32 type, l_int32 connectivity, BOXA **pboxa, PIXA **ppixa ); +LEPT_DLL extern PTAA * ptaaIndexLabeledPixels ( PIX *pixs, l_int32 *pncc ); +LEPT_DLL extern PTA * ptaGetNeighborPixLocs ( PIX *pixs, l_int32 x, l_int32 y, l_int32 conn ); +LEPT_DLL extern PTA * numaConvertToPta1 ( NUMA *na ); +LEPT_DLL extern PTA * numaConvertToPta2 ( NUMA *nax, NUMA *nay ); +LEPT_DLL extern l_ok ptaConvertToNuma ( PTA *pta, NUMA **pnax, NUMA **pnay ); +LEPT_DLL extern PIX * pixDisplayPta ( PIX *pixd, PIX *pixs, PTA *pta ); +LEPT_DLL extern PIX * pixDisplayPtaaPattern ( PIX *pixd, PIX *pixs, PTAA *ptaa, PIX *pixp, l_int32 cx, l_int32 cy ); +LEPT_DLL extern PIX * pixDisplayPtaPattern ( PIX *pixd, PIX *pixs, PTA *pta, PIX *pixp, l_int32 cx, l_int32 cy, l_uint32 color ); +LEPT_DLL extern PTA * ptaReplicatePattern ( PTA *ptas, PIX *pixp, PTA *ptap, l_int32 cx, l_int32 cy, l_int32 w, l_int32 h ); +LEPT_DLL extern PIX * pixDisplayPtaa ( PIX *pixs, PTAA *ptaa ); +LEPT_DLL extern PTA * ptaSort ( PTA *ptas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex ); +LEPT_DLL extern l_ok ptaGetSortIndex ( PTA *ptas, l_int32 sorttype, l_int32 sortorder, NUMA **pnaindex ); +LEPT_DLL extern PTA * ptaSortByIndex ( PTA *ptas, NUMA *naindex ); +LEPT_DLL extern PTAA * ptaaSortByIndex ( PTAA *ptaas, NUMA *naindex ); +LEPT_DLL extern l_ok ptaGetRankValue ( PTA *pta, l_float32 fract, PTA *ptasort, l_int32 sorttype, l_float32 *pval ); +LEPT_DLL extern PTA * ptaSort2d ( PTA *pta ); +LEPT_DLL extern l_ok ptaEqual ( PTA *pta1, PTA *pta2, l_int32 *psame ); +LEPT_DLL extern L_ASET * l_asetCreateFromPta ( PTA *pta ); +LEPT_DLL extern l_ok ptaRemoveDupsByAset ( PTA *ptas, PTA **pptad ); +LEPT_DLL extern l_ok ptaUnionByAset ( PTA *pta1, PTA *pta2, PTA **pptad ); +LEPT_DLL extern l_ok ptaIntersectionByAset ( PTA *pta1, PTA *pta2, PTA **pptad ); +LEPT_DLL extern L_HASHMAP * l_hmapCreateFromPta ( PTA *pta ); +LEPT_DLL extern l_ok ptaRemoveDupsByHmap ( PTA *ptas, PTA **pptad, L_HASHMAP **phmap ); +LEPT_DLL extern l_ok ptaUnionByHmap ( PTA *pta1, PTA *pta2, PTA **pptad ); +LEPT_DLL extern l_ok ptaIntersectionByHmap ( PTA *pta1, PTA *pta2, PTA **pptad ); +LEPT_DLL extern L_PTRA * ptraCreate ( l_int32 n ); +LEPT_DLL extern void ptraDestroy ( L_PTRA **ppa, l_int32 freeflag, l_int32 warnflag ); +LEPT_DLL extern l_ok ptraAdd ( L_PTRA *pa, void *item ); +LEPT_DLL extern l_ok ptraInsert ( L_PTRA *pa, l_int32 index, void *item, l_int32 shiftflag ); +LEPT_DLL extern void * ptraRemove ( L_PTRA *pa, l_int32 index, l_int32 flag ); +LEPT_DLL extern void * ptraRemoveLast ( L_PTRA *pa ); +LEPT_DLL extern void * ptraReplace ( L_PTRA *pa, l_int32 index, void *item, l_int32 freeflag ); +LEPT_DLL extern l_ok ptraSwap ( L_PTRA *pa, l_int32 index1, l_int32 index2 ); +LEPT_DLL extern l_ok ptraCompactArray ( L_PTRA *pa ); +LEPT_DLL extern l_ok ptraReverse ( L_PTRA *pa ); +LEPT_DLL extern l_ok ptraJoin ( L_PTRA *pa1, L_PTRA *pa2 ); +LEPT_DLL extern l_ok ptraGetMaxIndex ( L_PTRA *pa, l_int32 *pmaxindex ); +LEPT_DLL extern l_ok ptraGetActualCount ( L_PTRA *pa, l_int32 *pcount ); +LEPT_DLL extern void * ptraGetPtrToItem ( L_PTRA *pa, l_int32 index ); +LEPT_DLL extern L_PTRAA * ptraaCreate ( l_int32 n ); +LEPT_DLL extern void ptraaDestroy ( L_PTRAA **ppaa, l_int32 freeflag, l_int32 warnflag ); +LEPT_DLL extern l_ok ptraaGetSize ( L_PTRAA *paa, l_int32 *psize ); +LEPT_DLL extern l_ok ptraaInsertPtra ( L_PTRAA *paa, l_int32 index, L_PTRA *pa ); +LEPT_DLL extern L_PTRA * ptraaGetPtra ( L_PTRAA *paa, l_int32 index, l_int32 accessflag ); +LEPT_DLL extern L_PTRA * ptraaFlattenToPtra ( L_PTRAA *paa ); +LEPT_DLL extern l_ok pixQuadtreeMean ( PIX *pixs, l_int32 nlevels, PIX *pix_ma, FPIXA **pfpixa ); +LEPT_DLL extern l_ok pixQuadtreeVariance ( PIX *pixs, l_int32 nlevels, PIX *pix_ma, DPIX *dpix_msa, FPIXA **pfpixa_v, FPIXA **pfpixa_rv ); +LEPT_DLL extern l_ok pixMeanInRectangle ( PIX *pixs, BOX *box, PIX *pixma, l_float32 *pval ); +LEPT_DLL extern l_ok pixVarianceInRectangle ( PIX *pixs, BOX *box, PIX *pix_ma, DPIX *dpix_msa, l_float32 *pvar, l_float32 *prvar ); +LEPT_DLL extern BOXAA * boxaaQuadtreeRegions ( l_int32 w, l_int32 h, l_int32 nlevels ); +LEPT_DLL extern l_ok quadtreeGetParent ( FPIXA *fpixa, l_int32 level, l_int32 x, l_int32 y, l_float32 *pval ); +LEPT_DLL extern l_ok quadtreeGetChildren ( FPIXA *fpixa, l_int32 level, l_int32 x, l_int32 y, l_float32 *pval00, l_float32 *pval10, l_float32 *pval01, l_float32 *pval11 ); +LEPT_DLL extern l_int32 quadtreeMaxLevels ( l_int32 w, l_int32 h ); +LEPT_DLL extern PIX * fpixaDisplayQuadtree ( FPIXA *fpixa, l_int32 factor, l_int32 fontsize ); +LEPT_DLL extern L_QUEUE * lqueueCreate ( l_int32 nalloc ); +LEPT_DLL extern void lqueueDestroy ( L_QUEUE **plq, l_int32 freeflag ); +LEPT_DLL extern l_ok lqueueAdd ( L_QUEUE *lq, void *item ); +LEPT_DLL extern void * lqueueRemove ( L_QUEUE *lq ); +LEPT_DLL extern l_int32 lqueueGetCount ( L_QUEUE *lq ); +LEPT_DLL extern l_ok lqueuePrint ( FILE *fp, L_QUEUE *lq ); +LEPT_DLL extern PIX * pixRankFilter ( PIX *pixs, l_int32 wf, l_int32 hf, l_float32 rank ); +LEPT_DLL extern PIX * pixRankFilterRGB ( PIX *pixs, l_int32 wf, l_int32 hf, l_float32 rank ); +LEPT_DLL extern PIX * pixRankFilterGray ( PIX *pixs, l_int32 wf, l_int32 hf, l_float32 rank ); +LEPT_DLL extern PIX * pixMedianFilter ( PIX *pixs, l_int32 wf, l_int32 hf ); +LEPT_DLL extern PIX * pixRankFilterWithScaling ( PIX *pixs, l_int32 wf, l_int32 hf, l_float32 rank, l_float32 scalefactor ); +LEPT_DLL extern L_RBTREE * l_rbtreeCreate ( l_int32 keytype ); +LEPT_DLL extern RB_TYPE * l_rbtreeLookup ( L_RBTREE *t, RB_TYPE key ); +LEPT_DLL extern void l_rbtreeInsert ( L_RBTREE *t, RB_TYPE key, RB_TYPE value ); +LEPT_DLL extern void l_rbtreeDelete ( L_RBTREE *t, RB_TYPE key ); +LEPT_DLL extern void l_rbtreeDestroy ( L_RBTREE **pt ); +LEPT_DLL extern L_RBTREE_NODE * l_rbtreeGetFirst ( L_RBTREE *t ); +LEPT_DLL extern L_RBTREE_NODE * l_rbtreeGetNext ( L_RBTREE_NODE *n ); +LEPT_DLL extern L_RBTREE_NODE * l_rbtreeGetLast ( L_RBTREE *t ); +LEPT_DLL extern L_RBTREE_NODE * l_rbtreeGetPrev ( L_RBTREE_NODE *n ); +LEPT_DLL extern l_int32 l_rbtreeGetCount ( L_RBTREE *t ); +LEPT_DLL extern void l_rbtreePrint ( FILE *fp, L_RBTREE *t ); +LEPT_DLL extern SARRAY * pixProcessBarcodes ( PIX *pixs, l_int32 format, l_int32 method, SARRAY **psaw, l_int32 debugflag ); +LEPT_DLL extern PIXA * pixExtractBarcodes ( PIX *pixs, l_int32 debugflag ); +LEPT_DLL extern SARRAY * pixReadBarcodes ( PIXA *pixa, l_int32 format, l_int32 method, SARRAY **psaw, l_int32 debugflag ); +LEPT_DLL extern NUMA * pixReadBarcodeWidths ( PIX *pixs, l_int32 method, l_int32 debugflag ); +LEPT_DLL extern BOXA * pixLocateBarcodes ( PIX *pixs, l_int32 thresh, PIX **ppixb, PIX **ppixm ); +LEPT_DLL extern PIX * pixDeskewBarcode ( PIX *pixs, PIX *pixb, BOX *box, l_int32 margin, l_int32 threshold, l_float32 *pangle, l_float32 *pconf ); +LEPT_DLL extern NUMA * pixExtractBarcodeWidths1 ( PIX *pixs, l_float32 thresh, l_float32 binfract, NUMA **pnaehist, NUMA **pnaohist, l_int32 debugflag ); +LEPT_DLL extern NUMA * pixExtractBarcodeWidths2 ( PIX *pixs, l_float32 thresh, l_float32 *pwidth, NUMA **pnac, l_int32 debugflag ); +LEPT_DLL extern NUMA * pixExtractBarcodeCrossings ( PIX *pixs, l_float32 thresh, l_int32 debugflag ); +LEPT_DLL extern NUMA * numaQuantizeCrossingsByWidth ( NUMA *nas, l_float32 binfract, NUMA **pnaehist, NUMA **pnaohist, l_int32 debugflag ); +LEPT_DLL extern NUMA * numaQuantizeCrossingsByWindow ( NUMA *nas, l_float32 ratio, l_float32 *pwidth, l_float32 *pfirstloc, NUMA **pnac, l_int32 debugflag ); +LEPT_DLL extern PIXA * pixaReadFiles ( const char *dirname, const char *substr ); +LEPT_DLL extern PIXA * pixaReadFilesSA ( SARRAY *sa ); +LEPT_DLL extern PIX * pixRead ( const char *filename ); +LEPT_DLL extern PIX * pixReadWithHint ( const char *filename, l_int32 hint ); +LEPT_DLL extern PIX * pixReadIndexed ( SARRAY *sa, l_int32 index ); +LEPT_DLL extern PIX * pixReadStream ( FILE *fp, l_int32 hint ); +LEPT_DLL extern l_ok pixReadHeader ( const char *filename, l_int32 *pformat, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap ); +LEPT_DLL extern l_ok findFileFormat ( const char *filename, l_int32 *pformat ); +LEPT_DLL extern l_ok findFileFormatStream ( FILE *fp, l_int32 *pformat ); +LEPT_DLL extern l_ok findFileFormatBuffer ( const l_uint8 *buf, l_int32 *pformat ); +LEPT_DLL extern l_int32 fileFormatIsTiff ( FILE *fp ); +LEPT_DLL extern PIX * pixReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok pixReadHeaderMem ( const l_uint8 *data, size_t size, l_int32 *pformat, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap ); +LEPT_DLL extern l_ok writeImageFileInfo ( const char *filename, FILE *fpout, l_int32 headeronly ); +LEPT_DLL extern l_ok ioFormatTest ( const char *filename ); +LEPT_DLL extern L_RECOG * recogCreateFromRecog ( L_RECOG *recs, l_int32 scalew, l_int32 scaleh, l_int32 linew, l_int32 threshold, l_int32 maxyshift ); +LEPT_DLL extern L_RECOG * recogCreateFromPixa ( PIXA *pixa, l_int32 scalew, l_int32 scaleh, l_int32 linew, l_int32 threshold, l_int32 maxyshift ); +LEPT_DLL extern L_RECOG * recogCreateFromPixaNoFinish ( PIXA *pixa, l_int32 scalew, l_int32 scaleh, l_int32 linew, l_int32 threshold, l_int32 maxyshift ); +LEPT_DLL extern L_RECOG * recogCreate ( l_int32 scalew, l_int32 scaleh, l_int32 linew, l_int32 threshold, l_int32 maxyshift ); +LEPT_DLL extern void recogDestroy ( L_RECOG **precog ); +LEPT_DLL extern l_int32 recogGetCount ( L_RECOG *recog ); +LEPT_DLL extern l_ok recogSetParams ( L_RECOG *recog, l_int32 type, l_int32 min_nopad, l_float32 max_wh_ratio, l_float32 max_ht_ratio ); +LEPT_DLL extern l_int32 recogGetClassIndex ( L_RECOG *recog, l_int32 val, char *text, l_int32 *pindex ); +LEPT_DLL extern l_ok recogStringToIndex ( L_RECOG *recog, char *text, l_int32 *pindex ); +LEPT_DLL extern l_int32 recogGetClassString ( L_RECOG *recog, l_int32 index, char **pcharstr ); +LEPT_DLL extern l_ok l_convertCharstrToInt ( const char *str, l_int32 *pval ); +LEPT_DLL extern L_RECOG * recogRead ( const char *filename ); +LEPT_DLL extern L_RECOG * recogReadStream ( FILE *fp ); +LEPT_DLL extern L_RECOG * recogReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok recogWrite ( const char *filename, L_RECOG *recog ); +LEPT_DLL extern l_ok recogWriteStream ( FILE *fp, L_RECOG *recog ); +LEPT_DLL extern l_ok recogWriteMem ( l_uint8 **pdata, size_t *psize, L_RECOG *recog ); +LEPT_DLL extern PIXA * recogExtractPixa ( L_RECOG *recog ); +LEPT_DLL extern BOXA * recogDecode ( L_RECOG *recog, PIX *pixs, l_int32 nlevels, PIX **ppixdb ); +LEPT_DLL extern l_ok recogCreateDid ( L_RECOG *recog, PIX *pixs ); +LEPT_DLL extern l_ok recogDestroyDid ( L_RECOG *recog ); +LEPT_DLL extern l_int32 recogDidExists ( L_RECOG *recog ); +LEPT_DLL extern L_RDID * recogGetDid ( L_RECOG *recog ); +LEPT_DLL extern l_ok recogSetChannelParams ( L_RECOG *recog, l_int32 nlevels ); +LEPT_DLL extern l_ok recogIdentifyMultiple ( L_RECOG *recog, PIX *pixs, l_int32 minh, l_int32 skipsplit, BOXA **pboxa, PIXA **ppixa, PIX **ppixdb, l_int32 debugsplit ); +LEPT_DLL extern l_ok recogSplitIntoCharacters ( L_RECOG *recog, PIX *pixs, l_int32 minh, l_int32 skipsplit, BOXA **pboxa, PIXA **ppixa, l_int32 debug ); +LEPT_DLL extern l_ok recogCorrelationBestRow ( L_RECOG *recog, PIX *pixs, BOXA **pboxa, NUMA **pnascore, NUMA **pnaindex, SARRAY **psachar, l_int32 debug ); +LEPT_DLL extern l_ok recogCorrelationBestChar ( L_RECOG *recog, PIX *pixs, BOX **pbox, l_float32 *pscore, l_int32 *pindex, char **pcharstr, PIX **ppixdb ); +LEPT_DLL extern l_ok recogIdentifyPixa ( L_RECOG *recog, PIXA *pixa, PIX **ppixdb ); +LEPT_DLL extern l_ok recogIdentifyPix ( L_RECOG *recog, PIX *pixs, PIX **ppixdb ); +LEPT_DLL extern l_ok recogSkipIdentify ( L_RECOG *recog ); +LEPT_DLL extern void rchaDestroy ( L_RCHA **prcha ); +LEPT_DLL extern void rchDestroy ( L_RCH **prch ); +LEPT_DLL extern l_ok rchaExtract ( L_RCHA *rcha, NUMA **pnaindex, NUMA **pnascore, SARRAY **psatext, NUMA **pnasample, NUMA **pnaxloc, NUMA **pnayloc, NUMA **pnawidth ); +LEPT_DLL extern l_ok rchExtract ( L_RCH *rch, l_int32 *pindex, l_float32 *pscore, char **ptext, l_int32 *psample, l_int32 *pxloc, l_int32 *pyloc, l_int32 *pwidth ); +LEPT_DLL extern PIX * recogProcessToIdentify ( L_RECOG *recog, PIX *pixs, l_int32 pad ); +LEPT_DLL extern SARRAY * recogExtractNumbers ( L_RECOG *recog, BOXA *boxas, l_float32 scorethresh, l_int32 spacethresh, BOXAA **pbaa, NUMAA **pnaa ); +LEPT_DLL extern PIXA * showExtractNumbers ( PIX *pixs, SARRAY *sa, BOXAA *baa, NUMAA *naa, PIX **ppixdb ); +LEPT_DLL extern l_ok recogTrainLabeled ( L_RECOG *recog, PIX *pixs, BOX *box, char *text, l_int32 debug ); +LEPT_DLL extern l_ok recogProcessLabeled ( L_RECOG *recog, PIX *pixs, BOX *box, char *text, PIX **ppix ); +LEPT_DLL extern l_ok recogAddSample ( L_RECOG *recog, PIX *pix, l_int32 debug ); +LEPT_DLL extern PIX * recogModifyTemplate ( L_RECOG *recog, PIX *pixs ); +LEPT_DLL extern l_int32 recogAverageSamples ( L_RECOG **precog, l_int32 debug ); +LEPT_DLL extern l_int32 pixaAccumulateSamples ( PIXA *pixa, PTA *pta, PIX **ppixd, l_float32 *px, l_float32 *py ); +LEPT_DLL extern l_ok recogTrainingFinished ( L_RECOG **precog, l_int32 modifyflag, l_int32 minsize, l_float32 minfract ); +LEPT_DLL extern PIXA * recogFilterPixaBySize ( PIXA *pixas, l_int32 setsize, l_int32 maxkeep, l_float32 max_ht_ratio, NUMA **pna ); +LEPT_DLL extern PIXAA * recogSortPixaByClass ( PIXA *pixa, l_int32 setsize ); +LEPT_DLL extern l_ok recogRemoveOutliers1 ( L_RECOG **precog, l_float32 minscore, l_int32 mintarget, l_int32 minsize, PIX **ppixsave, PIX **ppixrem ); +LEPT_DLL extern PIXA * pixaRemoveOutliers1 ( PIXA *pixas, l_float32 minscore, l_int32 mintarget, l_int32 minsize, PIX **ppixsave, PIX **ppixrem ); +LEPT_DLL extern l_ok recogRemoveOutliers2 ( L_RECOG **precog, l_float32 minscore, l_int32 minsize, PIX **ppixsave, PIX **ppixrem ); +LEPT_DLL extern PIXA * pixaRemoveOutliers2 ( PIXA *pixas, l_float32 minscore, l_int32 minsize, PIX **ppixsave, PIX **ppixrem ); +LEPT_DLL extern PIXA * recogTrainFromBoot ( L_RECOG *recogboot, PIXA *pixas, l_float32 minscore, l_int32 threshold, l_int32 debug ); +LEPT_DLL extern l_ok recogPadDigitTrainingSet ( L_RECOG **precog, l_int32 scaleh, l_int32 linew ); +LEPT_DLL extern l_int32 recogIsPaddingNeeded ( L_RECOG *recog, SARRAY **psa ); +LEPT_DLL extern PIXA * recogAddDigitPadTemplates ( L_RECOG *recog, SARRAY *sa ); +LEPT_DLL extern L_RECOG * recogMakeBootDigitRecog ( l_int32 nsamp, l_int32 scaleh, l_int32 linew, l_int32 maxyshift, l_int32 debug ); +LEPT_DLL extern PIXA * recogMakeBootDigitTemplates ( l_int32 nsamp, l_int32 debug ); +LEPT_DLL extern l_ok recogShowContent ( FILE *fp, L_RECOG *recog, l_int32 index, l_int32 display ); +LEPT_DLL extern l_ok recogDebugAverages ( L_RECOG **precog, l_int32 debug ); +LEPT_DLL extern l_int32 recogShowAverageTemplates ( L_RECOG *recog ); +LEPT_DLL extern l_ok recogShowMatchesInRange ( L_RECOG *recog, PIXA *pixa, l_float32 minscore, l_float32 maxscore, l_int32 display ); +LEPT_DLL extern PIX * recogShowMatch ( L_RECOG *recog, PIX *pix1, PIX *pix2, BOX *box, l_int32 index, l_float32 score ); +LEPT_DLL extern l_ok regTestSetup ( l_int32 argc, char **argv, L_REGPARAMS **prp ); +LEPT_DLL extern l_ok regTestCleanup ( L_REGPARAMS *rp ); +LEPT_DLL extern l_ok regTestCompareValues ( L_REGPARAMS *rp, l_float32 val1, l_float32 val2, l_float32 delta ); +LEPT_DLL extern l_ok regTestCompareStrings ( L_REGPARAMS *rp, l_uint8 *string1, size_t bytes1, l_uint8 *string2, size_t bytes2 ); +LEPT_DLL extern l_ok regTestComparePix ( L_REGPARAMS *rp, PIX *pix1, PIX *pix2 ); +LEPT_DLL extern l_ok regTestCompareSimilarPix ( L_REGPARAMS *rp, PIX *pix1, PIX *pix2, l_int32 mindiff, l_float32 maxfract, l_int32 printstats ); +LEPT_DLL extern l_ok regTestCheckFile ( L_REGPARAMS *rp, const char *localname ); +LEPT_DLL extern l_ok regTestCompareFiles ( L_REGPARAMS *rp, l_int32 index1, l_int32 index2 ); +LEPT_DLL extern l_ok regTestWritePixAndCheck ( L_REGPARAMS *rp, PIX *pix, l_int32 format ); +LEPT_DLL extern l_ok regTestWriteDataAndCheck ( L_REGPARAMS *rp, void *data, size_t nbytes, const char *ext ); +LEPT_DLL extern char * regTestGenLocalFilename ( L_REGPARAMS *rp, l_int32 index, l_int32 format ); +LEPT_DLL extern l_ok pixRasterop ( PIX *pixd, l_int32 dx, l_int32 dy, l_int32 dw, l_int32 dh, l_int32 op, PIX *pixs, l_int32 sx, l_int32 sy ); +LEPT_DLL extern l_ok pixRasteropVip ( PIX *pixd, l_int32 bx, l_int32 bw, l_int32 vshift, l_int32 incolor ); +LEPT_DLL extern l_ok pixRasteropHip ( PIX *pixd, l_int32 by, l_int32 bh, l_int32 hshift, l_int32 incolor ); +LEPT_DLL extern PIX * pixTranslate ( PIX *pixd, PIX *pixs, l_int32 hshift, l_int32 vshift, l_int32 incolor ); +LEPT_DLL extern l_ok pixRasteropIP ( PIX *pixd, l_int32 hshift, l_int32 vshift, l_int32 incolor ); +LEPT_DLL extern l_ok pixRasteropFullImage ( PIX *pixd, PIX *pixs, l_int32 op ); +LEPT_DLL extern void rasteropUniLow ( l_uint32 *datad, l_int32 dpixw, l_int32 dpixh, l_int32 depth, l_int32 dwpl, l_int32 dx, l_int32 dy, l_int32 dw, l_int32 dh, l_int32 op ); +LEPT_DLL extern void rasteropLow ( l_uint32 *datad, l_int32 dpixw, l_int32 dpixh, l_int32 depth, l_int32 dwpl, l_int32 dx, l_int32 dy, l_int32 dw, l_int32 dh, l_int32 op, l_uint32 *datas, l_int32 spixw, l_int32 spixh, l_int32 swpl, l_int32 sx, l_int32 sy ); +LEPT_DLL extern void rasteropVipLow ( l_uint32 *data, l_int32 pixw, l_int32 pixh, l_int32 depth, l_int32 wpl, l_int32 x, l_int32 w, l_int32 shift ); +LEPT_DLL extern void rasteropHipLow ( l_uint32 *data, l_int32 pixh, l_int32 depth, l_int32 wpl, l_int32 y, l_int32 h, l_int32 shift ); +LEPT_DLL extern PIX * pixRotate ( PIX *pixs, l_float32 angle, l_int32 type, l_int32 incolor, l_int32 width, l_int32 height ); +LEPT_DLL extern PIX * pixEmbedForRotation ( PIX *pixs, l_float32 angle, l_int32 incolor, l_int32 width, l_int32 height ); +LEPT_DLL extern PIX * pixRotateBySampling ( PIX *pixs, l_int32 xcen, l_int32 ycen, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern PIX * pixRotateBinaryNice ( PIX *pixs, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern PIX * pixRotateWithAlpha ( PIX *pixs, l_float32 angle, PIX *pixg, l_float32 fract ); +LEPT_DLL extern PIX * pixRotateAM ( PIX *pixs, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern PIX * pixRotateAMColor ( PIX *pixs, l_float32 angle, l_uint32 colorval ); +LEPT_DLL extern PIX * pixRotateAMGray ( PIX *pixs, l_float32 angle, l_uint8 grayval ); +LEPT_DLL extern PIX * pixRotateAMCorner ( PIX *pixs, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern PIX * pixRotateAMColorCorner ( PIX *pixs, l_float32 angle, l_uint32 fillval ); +LEPT_DLL extern PIX * pixRotateAMGrayCorner ( PIX *pixs, l_float32 angle, l_uint8 grayval ); +LEPT_DLL extern PIX * pixRotateAMColorFast ( PIX *pixs, l_float32 angle, l_uint32 colorval ); +LEPT_DLL extern PIX * pixRotateOrth ( PIX *pixs, l_int32 quads ); +LEPT_DLL extern PIX * pixRotate180 ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern PIX * pixRotate90 ( PIX *pixs, l_int32 direction ); +LEPT_DLL extern PIX * pixFlipLR ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern PIX * pixFlipTB ( PIX *pixd, PIX *pixs ); +LEPT_DLL extern PIX * pixRotateShear ( PIX *pixs, l_int32 xcen, l_int32 ycen, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern PIX * pixRotate2Shear ( PIX *pixs, l_int32 xcen, l_int32 ycen, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern PIX * pixRotate3Shear ( PIX *pixs, l_int32 xcen, l_int32 ycen, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern l_ok pixRotateShearIP ( PIX *pixs, l_int32 xcen, l_int32 ycen, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern PIX * pixRotateShearCenter ( PIX *pixs, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern l_ok pixRotateShearCenterIP ( PIX *pixs, l_float32 angle, l_int32 incolor ); +LEPT_DLL extern PIX * pixStrokeWidthTransform ( PIX *pixs, l_int32 color, l_int32 depth, l_int32 nangles ); +LEPT_DLL extern PIX * pixRunlengthTransform ( PIX *pixs, l_int32 color, l_int32 direction, l_int32 depth ); +LEPT_DLL extern l_ok pixFindHorizontalRuns ( PIX *pix, l_int32 y, l_int32 *xstart, l_int32 *xend, l_int32 *pn ); +LEPT_DLL extern l_ok pixFindVerticalRuns ( PIX *pix, l_int32 x, l_int32 *ystart, l_int32 *yend, l_int32 *pn ); +LEPT_DLL extern NUMA * pixFindMaxRuns ( PIX *pix, l_int32 direction, NUMA **pnastart ); +LEPT_DLL extern l_ok pixFindMaxHorizontalRunOnLine ( PIX *pix, l_int32 y, l_int32 *pxstart, l_int32 *psize ); +LEPT_DLL extern l_ok pixFindMaxVerticalRunOnLine ( PIX *pix, l_int32 x, l_int32 *pystart, l_int32 *psize ); +LEPT_DLL extern l_ok runlengthMembershipOnLine ( l_int32 *buffer, l_int32 size, l_int32 depth, l_int32 *start, l_int32 *end, l_int32 n ); +LEPT_DLL extern l_int32 * makeMSBitLocTab ( l_int32 bitval ); +LEPT_DLL extern SARRAY * sarrayCreate ( l_int32 n ); +LEPT_DLL extern SARRAY * sarrayCreateInitialized ( l_int32 n, const char *initstr ); +LEPT_DLL extern SARRAY * sarrayCreateWordsFromString ( const char *string ); +LEPT_DLL extern SARRAY * sarrayCreateLinesFromString ( const char *string, l_int32 blankflag ); +LEPT_DLL extern void sarrayDestroy ( SARRAY **psa ); +LEPT_DLL extern SARRAY * sarrayCopy ( SARRAY *sa ); +LEPT_DLL extern SARRAY * sarrayClone ( SARRAY *sa ); +LEPT_DLL extern l_ok sarrayAddString ( SARRAY *sa, const char *string, l_int32 copyflag ); +LEPT_DLL extern char * sarrayRemoveString ( SARRAY *sa, l_int32 index ); +LEPT_DLL extern l_ok sarrayReplaceString ( SARRAY *sa, l_int32 index, char *newstr, l_int32 copyflag ); +LEPT_DLL extern l_ok sarrayClear ( SARRAY *sa ); +LEPT_DLL extern l_int32 sarrayGetCount ( SARRAY *sa ); +LEPT_DLL extern char ** sarrayGetArray ( SARRAY *sa, l_int32 *pnalloc, l_int32 *pn ); +LEPT_DLL extern char * sarrayGetString ( SARRAY *sa, l_int32 index, l_int32 copyflag ); +LEPT_DLL extern char * sarrayToString ( SARRAY *sa, l_int32 addnlflag ); +LEPT_DLL extern char * sarrayToStringRange ( SARRAY *sa, l_int32 first, l_int32 nstrings, l_int32 addnlflag ); +LEPT_DLL extern SARRAY * sarrayConcatUniformly ( SARRAY *sa, l_int32 n, l_int32 addnlflag ); +LEPT_DLL extern l_ok sarrayJoin ( SARRAY *sa1, SARRAY *sa2 ); +LEPT_DLL extern l_ok sarrayAppendRange ( SARRAY *sa1, SARRAY *sa2, l_int32 start, l_int32 end ); +LEPT_DLL extern l_ok sarrayPadToSameSize ( SARRAY *sa1, SARRAY *sa2, const char *padstring ); +LEPT_DLL extern SARRAY * sarrayConvertWordsToLines ( SARRAY *sa, l_int32 linesize ); +LEPT_DLL extern l_int32 sarraySplitString ( SARRAY *sa, const char *str, const char *separators ); +LEPT_DLL extern SARRAY * sarraySelectBySubstring ( SARRAY *sain, const char *substr ); +LEPT_DLL extern SARRAY * sarraySelectRange ( SARRAY *sain, l_int32 first, l_int32 last ); +LEPT_DLL extern l_int32 sarrayParseRange ( SARRAY *sa, l_int32 start, l_int32 *pactualstart, l_int32 *pend, l_int32 *pnewstart, const char *substr, l_int32 loc ); +LEPT_DLL extern SARRAY * sarrayRead ( const char *filename ); +LEPT_DLL extern SARRAY * sarrayReadStream ( FILE *fp ); +LEPT_DLL extern SARRAY * sarrayReadMem ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok sarrayWrite ( const char *filename, SARRAY *sa ); +LEPT_DLL extern l_ok sarrayWriteStream ( FILE *fp, SARRAY *sa ); +LEPT_DLL extern l_ok sarrayWriteStderr ( SARRAY *sa ); +LEPT_DLL extern l_ok sarrayWriteMem ( l_uint8 **pdata, size_t *psize, SARRAY *sa ); +LEPT_DLL extern l_ok sarrayAppend ( const char *filename, SARRAY *sa ); +LEPT_DLL extern SARRAY * getNumberedPathnamesInDirectory ( const char *dirname, const char *substr, l_int32 numpre, l_int32 numpost, l_int32 maxnum ); +LEPT_DLL extern SARRAY * getSortedPathnamesInDirectory ( const char *dirname, const char *substr, l_int32 first, l_int32 nfiles ); +LEPT_DLL extern SARRAY * convertSortedToNumberedPathnames ( SARRAY *sa, l_int32 numpre, l_int32 numpost, l_int32 maxnum ); +LEPT_DLL extern SARRAY * getFilenamesInDirectory ( const char *dirname ); +LEPT_DLL extern SARRAY * sarraySort ( SARRAY *saout, SARRAY *sain, l_int32 sortorder ); +LEPT_DLL extern SARRAY * sarraySortByIndex ( SARRAY *sain, NUMA *naindex ); +LEPT_DLL extern l_int32 stringCompareLexical ( const char *str1, const char *str2 ); +LEPT_DLL extern L_ASET * l_asetCreateFromSarray ( SARRAY *sa ); +LEPT_DLL extern l_ok sarrayRemoveDupsByAset ( SARRAY *sas, SARRAY **psad ); +LEPT_DLL extern l_ok sarrayUnionByAset ( SARRAY *sa1, SARRAY *sa2, SARRAY **psad ); +LEPT_DLL extern l_ok sarrayIntersectionByAset ( SARRAY *sa1, SARRAY *sa2, SARRAY **psad ); +LEPT_DLL extern L_HASHMAP * l_hmapCreateFromSarray ( SARRAY *sa ); +LEPT_DLL extern l_ok sarrayRemoveDupsByHmap ( SARRAY *sas, SARRAY **psad, L_HASHMAP **phmap ); +LEPT_DLL extern l_ok sarrayUnionByHmap ( SARRAY *sa1, SARRAY *sa2, SARRAY **psad ); +LEPT_DLL extern l_ok sarrayIntersectionByHmap ( SARRAY *sa1, SARRAY *sa2, SARRAY **psad ); +LEPT_DLL extern SARRAY * sarrayGenerateIntegers ( l_int32 n ); +LEPT_DLL extern l_ok sarrayLookupCSKV ( SARRAY *sa, const char *keystring, char **pvalstring ); +LEPT_DLL extern PIX * pixScale ( PIX *pixs, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleToSizeRel ( PIX *pixs, l_int32 delw, l_int32 delh ); +LEPT_DLL extern PIX * pixScaleToSize ( PIX *pixs, l_int32 wd, l_int32 hd ); +LEPT_DLL extern PIX * pixScaleToResolution ( PIX *pixs, l_float32 target, l_float32 assumed, l_float32 *pscalefact ); +LEPT_DLL extern PIX * pixScaleGeneral ( PIX *pixs, l_float32 scalex, l_float32 scaley, l_float32 sharpfract, l_int32 sharpwidth ); +LEPT_DLL extern PIX * pixScaleLI ( PIX *pixs, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleColorLI ( PIX *pixs, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleColor2xLI ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleColor4xLI ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleGrayLI ( PIX *pixs, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleGray2xLI ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleGray4xLI ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleGray2xLIThresh ( PIX *pixs, l_int32 thresh ); +LEPT_DLL extern PIX * pixScaleGray2xLIDither ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleGray4xLIThresh ( PIX *pixs, l_int32 thresh ); +LEPT_DLL extern PIX * pixScaleGray4xLIDither ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleBySampling ( PIX *pixs, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleBySamplingToSize ( PIX *pixs, l_int32 wd, l_int32 hd ); +LEPT_DLL extern PIX * pixScaleByIntSampling ( PIX *pixs, l_int32 factor ); +LEPT_DLL extern PIX * pixScaleRGBToGrayFast ( PIX *pixs, l_int32 factor, l_int32 color ); +LEPT_DLL extern PIX * pixScaleRGBToBinaryFast ( PIX *pixs, l_int32 factor, l_int32 thresh ); +LEPT_DLL extern PIX * pixScaleGrayToBinaryFast ( PIX *pixs, l_int32 factor, l_int32 thresh ); +LEPT_DLL extern PIX * pixScaleSmooth ( PIX *pix, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleSmoothToSize ( PIX *pixs, l_int32 wd, l_int32 hd ); +LEPT_DLL extern PIX * pixScaleRGBToGray2 ( PIX *pixs, l_float32 rwt, l_float32 gwt, l_float32 bwt ); +LEPT_DLL extern PIX * pixScaleAreaMap ( PIX *pix, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleAreaMap2 ( PIX *pix ); +LEPT_DLL extern PIX * pixScaleAreaMapToSize ( PIX *pixs, l_int32 wd, l_int32 hd ); +LEPT_DLL extern PIX * pixScaleBinary ( PIX *pixs, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleToGray ( PIX *pixs, l_float32 scalefactor ); +LEPT_DLL extern PIX * pixScaleToGrayFast ( PIX *pixs, l_float32 scalefactor ); +LEPT_DLL extern PIX * pixScaleToGray2 ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleToGray3 ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleToGray4 ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleToGray6 ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleToGray8 ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleToGray16 ( PIX *pixs ); +LEPT_DLL extern PIX * pixScaleToGrayMipmap ( PIX *pixs, l_float32 scalefactor ); +LEPT_DLL extern PIX * pixScaleMipmap ( PIX *pixs1, PIX *pixs2, l_float32 scale ); +LEPT_DLL extern PIX * pixExpandReplicate ( PIX *pixs, l_int32 factor ); +LEPT_DLL extern PIX * pixScaleGrayMinMax ( PIX *pixs, l_int32 xfact, l_int32 yfact, l_int32 type ); +LEPT_DLL extern PIX * pixScaleGrayMinMax2 ( PIX *pixs, l_int32 type ); +LEPT_DLL extern PIX * pixScaleGrayRankCascade ( PIX *pixs, l_int32 level1, l_int32 level2, l_int32 level3, l_int32 level4 ); +LEPT_DLL extern PIX * pixScaleGrayRank2 ( PIX *pixs, l_int32 rank ); +LEPT_DLL extern l_ok pixScaleAndTransferAlpha ( PIX *pixd, PIX *pixs, l_float32 scalex, l_float32 scaley ); +LEPT_DLL extern PIX * pixScaleWithAlpha ( PIX *pixs, l_float32 scalex, l_float32 scaley, PIX *pixg, l_float32 fract ); +LEPT_DLL extern PIX * pixSeedfillBinary ( PIX *pixd, PIX *pixs, PIX *pixm, l_int32 connectivity ); +LEPT_DLL extern PIX * pixSeedfillBinaryRestricted ( PIX *pixd, PIX *pixs, PIX *pixm, l_int32 connectivity, l_int32 xmax, l_int32 ymax ); +LEPT_DLL extern PIX * pixHolesByFilling ( PIX *pixs, l_int32 connectivity ); +LEPT_DLL extern PIX * pixFillClosedBorders ( PIX *pixs, l_int32 connectivity ); +LEPT_DLL extern PIX * pixExtractBorderConnComps ( PIX *pixs, l_int32 connectivity ); +LEPT_DLL extern PIX * pixRemoveBorderConnComps ( PIX *pixs, l_int32 connectivity ); +LEPT_DLL extern PIX * pixFillBgFromBorder ( PIX *pixs, l_int32 connectivity ); +LEPT_DLL extern PIX * pixFillHolesToBoundingRect ( PIX *pixs, l_int32 minsize, l_float32 maxhfract, l_float32 minfgfract ); +LEPT_DLL extern l_ok pixSeedfillGray ( PIX *pixs, PIX *pixm, l_int32 connectivity ); +LEPT_DLL extern l_ok pixSeedfillGrayInv ( PIX *pixs, PIX *pixm, l_int32 connectivity ); +LEPT_DLL extern l_ok pixSeedfillGraySimple ( PIX *pixs, PIX *pixm, l_int32 connectivity ); +LEPT_DLL extern l_ok pixSeedfillGrayInvSimple ( PIX *pixs, PIX *pixm, l_int32 connectivity ); +LEPT_DLL extern PIX * pixSeedfillGrayBasin ( PIX *pixb, PIX *pixm, l_int32 delta, l_int32 connectivity ); +LEPT_DLL extern PIX * pixDistanceFunction ( PIX *pixs, l_int32 connectivity, l_int32 outdepth, l_int32 boundcond ); +LEPT_DLL extern PIX * pixSeedspread ( PIX *pixs, l_int32 connectivity ); +LEPT_DLL extern l_ok pixLocalExtrema ( PIX *pixs, l_int32 maxmin, l_int32 minmax, PIX **ppixmin, PIX **ppixmax ); +LEPT_DLL extern l_ok pixSelectedLocalExtrema ( PIX *pixs, l_int32 mindist, PIX **ppixmin, PIX **ppixmax ); +LEPT_DLL extern PIX * pixFindEqualValues ( PIX *pixs1, PIX *pixs2 ); +LEPT_DLL extern l_ok pixSelectMinInConnComp ( PIX *pixs, PIX *pixm, PTA **ppta, NUMA **pnav ); +LEPT_DLL extern PIX * pixRemoveSeededComponents ( PIX *pixd, PIX *pixs, PIX *pixm, l_int32 connectivity, l_int32 bordersize ); +LEPT_DLL extern SELA * selaCreate ( l_int32 n ); +LEPT_DLL extern void selaDestroy ( SELA **psela ); +LEPT_DLL extern SEL * selCreate ( l_int32 height, l_int32 width, const char *name ); +LEPT_DLL extern void selDestroy ( SEL **psel ); +LEPT_DLL extern SEL * selCopy ( SEL *sel ); +LEPT_DLL extern SEL * selCreateBrick ( l_int32 h, l_int32 w, l_int32 cy, l_int32 cx, l_int32 type ); +LEPT_DLL extern SEL * selCreateComb ( l_int32 factor1, l_int32 factor2, l_int32 direction ); +LEPT_DLL extern l_int32 ** create2dIntArray ( l_int32 sy, l_int32 sx ); +LEPT_DLL extern l_ok selaAddSel ( SELA *sela, SEL *sel, const char *selname, l_int32 copyflag ); +LEPT_DLL extern l_int32 selaGetCount ( SELA *sela ); +LEPT_DLL extern SEL * selaGetSel ( SELA *sela, l_int32 i ); +LEPT_DLL extern char * selGetName ( SEL *sel ); +LEPT_DLL extern l_ok selSetName ( SEL *sel, const char *name ); +LEPT_DLL extern l_ok selaFindSelByName ( SELA *sela, const char *name, l_int32 *pindex, SEL **psel ); +LEPT_DLL extern l_ok selGetElement ( SEL *sel, l_int32 row, l_int32 col, l_int32 *ptype ); +LEPT_DLL extern l_ok selSetElement ( SEL *sel, l_int32 row, l_int32 col, l_int32 type ); +LEPT_DLL extern l_ok selGetParameters ( SEL *sel, l_int32 *psy, l_int32 *psx, l_int32 *pcy, l_int32 *pcx ); +LEPT_DLL extern l_ok selSetOrigin ( SEL *sel, l_int32 cy, l_int32 cx ); +LEPT_DLL extern l_ok selGetTypeAtOrigin ( SEL *sel, l_int32 *ptype ); +LEPT_DLL extern char * selaGetBrickName ( SELA *sela, l_int32 hsize, l_int32 vsize ); +LEPT_DLL extern char * selaGetCombName ( SELA *sela, l_int32 size, l_int32 direction ); +LEPT_DLL extern l_ok getCompositeParameters ( l_int32 size, l_int32 *psize1, l_int32 *psize2, char **pnameh1, char **pnameh2, char **pnamev1, char **pnamev2 ); +LEPT_DLL extern SARRAY * selaGetSelnames ( SELA *sela ); +LEPT_DLL extern l_ok selFindMaxTranslations ( SEL *sel, l_int32 *pxp, l_int32 *pyp, l_int32 *pxn, l_int32 *pyn ); +LEPT_DLL extern SEL * selRotateOrth ( SEL *sel, l_int32 quads ); +LEPT_DLL extern SELA * selaRead ( const char *fname ); +LEPT_DLL extern SELA * selaReadStream ( FILE *fp ); +LEPT_DLL extern SEL * selRead ( const char *fname ); +LEPT_DLL extern SEL * selReadStream ( FILE *fp ); +LEPT_DLL extern l_ok selaWrite ( const char *fname, SELA *sela ); +LEPT_DLL extern l_ok selaWriteStream ( FILE *fp, SELA *sela ); +LEPT_DLL extern l_ok selWrite ( const char *fname, SEL *sel ); +LEPT_DLL extern l_ok selWriteStream ( FILE *fp, SEL *sel ); +LEPT_DLL extern SEL * selCreateFromString ( const char *text, l_int32 h, l_int32 w, const char *name ); +LEPT_DLL extern char * selPrintToString ( SEL *sel ); +LEPT_DLL extern SELA * selaCreateFromFile ( const char *filename ); +LEPT_DLL extern SEL * selCreateFromPta ( PTA *pta, l_int32 cy, l_int32 cx, const char *name ); +LEPT_DLL extern SEL * selCreateFromPix ( PIX *pix, l_int32 cy, l_int32 cx, const char *name ); +LEPT_DLL extern SEL * selReadFromColorImage ( const char *pathname ); +LEPT_DLL extern SEL * selCreateFromColorPix ( PIX *pixs, const char *selname ); +LEPT_DLL extern SELA * selaCreateFromColorPixa ( PIXA *pixa, SARRAY *sa ); +LEPT_DLL extern PIX * selDisplayInPix ( SEL *sel, l_int32 size, l_int32 gthick ); +LEPT_DLL extern PIX * selaDisplayInPix ( SELA *sela, l_int32 size, l_int32 gthick, l_int32 spacing, l_int32 ncols ); +LEPT_DLL extern SELA * selaAddBasic ( SELA *sela ); +LEPT_DLL extern SELA * selaAddHitMiss ( SELA *sela ); +LEPT_DLL extern SELA * selaAddDwaLinear ( SELA *sela ); +LEPT_DLL extern SELA * selaAddDwaCombs ( SELA *sela ); +LEPT_DLL extern SELA * selaAddCrossJunctions ( SELA *sela, l_float32 hlsize, l_float32 mdist, l_int32 norient, l_int32 debugflag ); +LEPT_DLL extern SELA * selaAddTJunctions ( SELA *sela, l_float32 hlsize, l_float32 mdist, l_int32 norient, l_int32 debugflag ); +LEPT_DLL extern SELA * sela4ccThin ( SELA *sela ); +LEPT_DLL extern SELA * sela8ccThin ( SELA *sela ); +LEPT_DLL extern SELA * sela4and8ccThin ( SELA *sela ); +LEPT_DLL extern SEL * selMakePlusSign ( l_int32 size, l_int32 linewidth ); +LEPT_DLL extern SEL * pixGenerateSelWithRuns ( PIX *pixs, l_int32 nhlines, l_int32 nvlines, l_int32 distance, l_int32 minlength, l_int32 toppix, l_int32 botpix, l_int32 leftpix, l_int32 rightpix, PIX **ppixe ); +LEPT_DLL extern SEL * pixGenerateSelRandom ( PIX *pixs, l_float32 hitfract, l_float32 missfract, l_int32 distance, l_int32 toppix, l_int32 botpix, l_int32 leftpix, l_int32 rightpix, PIX **ppixe ); +LEPT_DLL extern SEL * pixGenerateSelBoundary ( PIX *pixs, l_int32 hitdist, l_int32 missdist, l_int32 hitskip, l_int32 missskip, l_int32 topflag, l_int32 botflag, l_int32 leftflag, l_int32 rightflag, PIX **ppixe ); +LEPT_DLL extern NUMA * pixGetRunCentersOnLine ( PIX *pixs, l_int32 x, l_int32 y, l_int32 minlength ); +LEPT_DLL extern NUMA * pixGetRunsOnLine ( PIX *pixs, l_int32 x1, l_int32 y1, l_int32 x2, l_int32 y2 ); +LEPT_DLL extern PTA * pixSubsampleBoundaryPixels ( PIX *pixs, l_int32 skip ); +LEPT_DLL extern l_int32 adjacentOnPixelInRaster ( PIX *pixs, l_int32 x, l_int32 y, l_int32 *pxa, l_int32 *pya ); +LEPT_DLL extern PIX * pixDisplayHitMissSel ( PIX *pixs, SEL *sel, l_int32 scalefactor, l_uint32 hitcolor, l_uint32 misscolor ); +LEPT_DLL extern PIX * pixHShear ( PIX *pixd, PIX *pixs, l_int32 yloc, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern PIX * pixVShear ( PIX *pixd, PIX *pixs, l_int32 xloc, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern PIX * pixHShearCorner ( PIX *pixd, PIX *pixs, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern PIX * pixVShearCorner ( PIX *pixd, PIX *pixs, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern PIX * pixHShearCenter ( PIX *pixd, PIX *pixs, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern PIX * pixVShearCenter ( PIX *pixd, PIX *pixs, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern l_ok pixHShearIP ( PIX *pixs, l_int32 yloc, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern l_ok pixVShearIP ( PIX *pixs, l_int32 xloc, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern PIX * pixHShearLI ( PIX *pixs, l_int32 yloc, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern PIX * pixVShearLI ( PIX *pixs, l_int32 xloc, l_float32 radang, l_int32 incolor ); +LEPT_DLL extern PIX * pixDeskewBoth ( PIX *pixs, l_int32 redsearch ); +LEPT_DLL extern PIX * pixDeskew ( PIX *pixs, l_int32 redsearch ); +LEPT_DLL extern PIX * pixFindSkewAndDeskew ( PIX *pixs, l_int32 redsearch, l_float32 *pangle, l_float32 *pconf ); +LEPT_DLL extern PIX * pixDeskewGeneral ( PIX *pixs, l_int32 redsweep, l_float32 sweeprange, l_float32 sweepdelta, l_int32 redsearch, l_int32 thresh, l_float32 *pangle, l_float32 *pconf ); +LEPT_DLL extern l_ok pixFindSkew ( PIX *pixs, l_float32 *pangle, l_float32 *pconf ); +LEPT_DLL extern l_ok pixFindSkewSweep ( PIX *pixs, l_float32 *pangle, l_int32 reduction, l_float32 sweeprange, l_float32 sweepdelta ); +LEPT_DLL extern l_ok pixFindSkewSweepAndSearch ( PIX *pixs, l_float32 *pangle, l_float32 *pconf, l_int32 redsweep, l_int32 redsearch, l_float32 sweeprange, l_float32 sweepdelta, l_float32 minbsdelta ); +LEPT_DLL extern l_ok pixFindSkewSweepAndSearchScore ( PIX *pixs, l_float32 *pangle, l_float32 *pconf, l_float32 *pendscore, l_int32 redsweep, l_int32 redsearch, l_float32 sweepcenter, l_float32 sweeprange, l_float32 sweepdelta, l_float32 minbsdelta ); +LEPT_DLL extern l_ok pixFindSkewSweepAndSearchScorePivot ( PIX *pixs, l_float32 *pangle, l_float32 *pconf, l_float32 *pendscore, l_int32 redsweep, l_int32 redsearch, l_float32 sweepcenter, l_float32 sweeprange, l_float32 sweepdelta, l_float32 minbsdelta, l_int32 pivot ); +LEPT_DLL extern l_int32 pixFindSkewOrthogonalRange ( PIX *pixs, l_float32 *pangle, l_float32 *pconf, l_int32 redsweep, l_int32 redsearch, l_float32 sweeprange, l_float32 sweepdelta, l_float32 minbsdelta, l_float32 confprior ); +LEPT_DLL extern l_ok pixFindDifferentialSquareSum ( PIX *pixs, l_float32 *psum ); +LEPT_DLL extern l_ok pixFindNormalizedSquareSum ( PIX *pixs, l_float32 *phratio, l_float32 *pvratio, l_float32 *pfract ); +LEPT_DLL extern PIX * pixReadStreamSpix ( FILE *fp ); +LEPT_DLL extern l_ok readHeaderSpix ( const char *filename, l_int32 *pwidth, l_int32 *pheight, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap ); +LEPT_DLL extern l_ok freadHeaderSpix ( FILE *fp, l_int32 *pwidth, l_int32 *pheight, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap ); +LEPT_DLL extern l_ok sreadHeaderSpix ( const l_uint32 *data, size_t size, l_int32 *pwidth, l_int32 *pheight, l_int32 *pbps, l_int32 *pspp, l_int32 *piscmap ); +LEPT_DLL extern l_ok pixWriteStreamSpix ( FILE *fp, PIX *pix ); +LEPT_DLL extern PIX * pixReadMemSpix ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok pixWriteMemSpix ( l_uint8 **pdata, size_t *psize, PIX *pix ); +LEPT_DLL extern l_ok pixSerializeToMemory ( PIX *pixs, l_uint32 **pdata, size_t *pnbytes ); +LEPT_DLL extern PIX * pixDeserializeFromMemory ( const l_uint32 *data, size_t nbytes ); +LEPT_DLL extern L_STACK * lstackCreate ( l_int32 n ); +LEPT_DLL extern void lstackDestroy ( L_STACK **plstack, l_int32 freeflag ); +LEPT_DLL extern l_ok lstackAdd ( L_STACK *lstack, void *item ); +LEPT_DLL extern void * lstackRemove ( L_STACK *lstack ); +LEPT_DLL extern l_int32 lstackGetCount ( L_STACK *lstack ); +LEPT_DLL extern l_ok lstackPrint ( FILE *fp, L_STACK *lstack ); +LEPT_DLL extern L_STRCODE * strcodeCreate ( l_int32 fileno ); +LEPT_DLL extern l_ok strcodeCreateFromFile ( const char *filein, l_int32 fileno, const char *outdir ); +LEPT_DLL extern l_ok strcodeGenerate ( L_STRCODE *strcode, const char *filein, const char *type ); +LEPT_DLL extern l_int32 strcodeFinalize ( L_STRCODE **pstrcode, const char *outdir ); +LEPT_DLL extern l_int32 l_getStructStrFromFile ( const char *filename, l_int32 field, char **pstr ); +LEPT_DLL extern l_ok pixFindStrokeLength ( PIX *pixs, l_int32 *tab8, l_int32 *plength ); +LEPT_DLL extern l_ok pixFindStrokeWidth ( PIX *pixs, l_float32 thresh, l_int32 *tab8, l_float32 *pwidth, NUMA **pnahisto ); +LEPT_DLL extern NUMA * pixaFindStrokeWidth ( PIXA *pixa, l_float32 thresh, l_int32 *tab8, l_int32 debug ); +LEPT_DLL extern PIXA * pixaModifyStrokeWidth ( PIXA *pixas, l_float32 targetw ); +LEPT_DLL extern PIX * pixModifyStrokeWidth ( PIX *pixs, l_float32 width, l_float32 targetw ); +LEPT_DLL extern PIXA * pixaSetStrokeWidth ( PIXA *pixas, l_int32 width, l_int32 thinfirst, l_int32 connectivity ); +LEPT_DLL extern PIX * pixSetStrokeWidth ( PIX *pixs, l_int32 width, l_int32 thinfirst, l_int32 connectivity ); +LEPT_DLL extern l_int32 * sudokuReadFile ( const char *filename ); +LEPT_DLL extern l_int32 * sudokuReadString ( const char *str ); +LEPT_DLL extern L_SUDOKU * sudokuCreate ( l_int32 *array ); +LEPT_DLL extern void sudokuDestroy ( L_SUDOKU **psud ); +LEPT_DLL extern l_int32 sudokuSolve ( L_SUDOKU *sud ); +LEPT_DLL extern l_ok sudokuTestUniqueness ( l_int32 *array, l_int32 *punique ); +LEPT_DLL extern L_SUDOKU * sudokuGenerate ( l_int32 *array, l_int32 seed, l_int32 minelems, l_int32 maxtries ); +LEPT_DLL extern l_int32 sudokuOutput ( L_SUDOKU *sud, l_int32 arraytype ); +LEPT_DLL extern PIX * pixAddSingleTextblock ( PIX *pixs, L_BMF *bmf, const char *textstr, l_uint32 val, l_int32 location, l_int32 *poverflow ); +LEPT_DLL extern PIX * pixAddTextlines ( PIX *pixs, L_BMF *bmf, const char *textstr, l_uint32 val, l_int32 location ); +LEPT_DLL extern l_ok pixSetTextblock ( PIX *pixs, L_BMF *bmf, const char *textstr, l_uint32 val, l_int32 x0, l_int32 y0, l_int32 wtext, l_int32 firstindent, l_int32 *poverflow ); +LEPT_DLL extern l_ok pixSetTextline ( PIX *pixs, L_BMF *bmf, const char *textstr, l_uint32 val, l_int32 x0, l_int32 y0, l_int32 *pwidth, l_int32 *poverflow ); +LEPT_DLL extern PIXA * pixaAddTextNumber ( PIXA *pixas, L_BMF *bmf, NUMA *na, l_uint32 val, l_int32 location ); +LEPT_DLL extern PIXA * pixaAddTextlines ( PIXA *pixas, L_BMF *bmf, SARRAY *sa, l_uint32 val, l_int32 location ); +LEPT_DLL extern l_ok pixaAddPixWithText ( PIXA *pixa, PIX *pixs, l_int32 reduction, L_BMF *bmf, const char *textstr, l_uint32 val, l_int32 location ); +LEPT_DLL extern SARRAY * bmfGetLineStrings ( L_BMF *bmf, const char *textstr, l_int32 maxw, l_int32 firstindent, l_int32 *ph ); +LEPT_DLL extern NUMA * bmfGetWordWidths ( L_BMF *bmf, const char *textstr, SARRAY *sa ); +LEPT_DLL extern l_ok bmfGetStringWidth ( L_BMF *bmf, const char *textstr, l_int32 *pw ); +LEPT_DLL extern SARRAY * splitStringToParagraphs ( char *textstr, l_int32 splitflag ); +LEPT_DLL extern PIX * pixReadTiff ( const char *filename, l_int32 n ); +LEPT_DLL extern PIX * pixReadStreamTiff ( FILE *fp, l_int32 n ); +LEPT_DLL extern l_ok pixWriteTiff ( const char *filename, PIX *pix, l_int32 comptype, const char *modestr ); +LEPT_DLL extern l_ok pixWriteTiffCustom ( const char *filename, PIX *pix, l_int32 comptype, const char *modestr, NUMA *natags, SARRAY *savals, SARRAY *satypes, NUMA *nasizes ); +LEPT_DLL extern l_ok pixWriteStreamTiff ( FILE *fp, PIX *pix, l_int32 comptype ); +LEPT_DLL extern l_ok pixWriteStreamTiffWA ( FILE *fp, PIX *pix, l_int32 comptype, const char *modestr ); +LEPT_DLL extern PIX * pixReadFromMultipageTiff ( const char *fname, size_t *poffset ); +LEPT_DLL extern PIXA * pixaReadMultipageTiff ( const char *filename ); +LEPT_DLL extern l_ok pixaWriteMultipageTiff ( const char *fname, PIXA *pixa ); +LEPT_DLL extern l_ok writeMultipageTiff ( const char *dirin, const char *substr, const char *fileout ); +LEPT_DLL extern l_ok writeMultipageTiffSA ( SARRAY *sa, const char *fileout ); +LEPT_DLL extern l_ok fprintTiffInfo ( FILE *fpout, const char *tiffile ); +LEPT_DLL extern l_ok tiffGetCount ( FILE *fp, l_int32 *pn ); +LEPT_DLL extern l_ok getTiffResolution ( FILE *fp, l_int32 *pxres, l_int32 *pyres ); +LEPT_DLL extern l_ok readHeaderTiff ( const char *filename, l_int32 n, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *pres, l_int32 *pcmap, l_int32 *pformat ); +LEPT_DLL extern l_ok freadHeaderTiff ( FILE *fp, l_int32 n, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *pres, l_int32 *pcmap, l_int32 *pformat ); +LEPT_DLL extern l_ok readHeaderMemTiff ( const l_uint8 *cdata, size_t size, l_int32 n, l_int32 *pw, l_int32 *ph, l_int32 *pbps, l_int32 *pspp, l_int32 *pres, l_int32 *pcmap, l_int32 *pformat ); +LEPT_DLL extern l_ok findTiffCompression ( FILE *fp, l_int32 *pcomptype ); +LEPT_DLL extern l_ok extractG4DataFromFile ( const char *filein, l_uint8 **pdata, size_t *pnbytes, l_int32 *pw, l_int32 *ph, l_int32 *pminisblack ); +LEPT_DLL extern PIX * pixReadMemTiff ( const l_uint8 *cdata, size_t size, l_int32 n ); +LEPT_DLL extern PIX * pixReadMemFromMultipageTiff ( const l_uint8 *cdata, size_t size, size_t *poffset ); +LEPT_DLL extern PIXA * pixaReadMemMultipageTiff ( const l_uint8 *data, size_t size ); +LEPT_DLL extern l_ok pixaWriteMemMultipageTiff ( l_uint8 **pdata, size_t *psize, PIXA *pixa ); +LEPT_DLL extern l_ok pixWriteMemTiff ( l_uint8 **pdata, size_t *psize, PIX *pix, l_int32 comptype ); +LEPT_DLL extern l_ok pixWriteMemTiffCustom ( l_uint8 **pdata, size_t *psize, PIX *pix, l_int32 comptype, NUMA *natags, SARRAY *savals, SARRAY *satypes, NUMA *nasizes ); +LEPT_DLL extern l_int32 setMsgSeverity ( l_int32 newsev ); +LEPT_DLL extern l_int32 returnErrorInt ( const char *msg, const char *procname, l_int32 ival ); +LEPT_DLL extern l_float32 returnErrorFloat ( const char *msg, const char *procname, l_float32 fval ); +LEPT_DLL extern void * returnErrorPtr ( const char *msg, const char *procname, void *pval ); +LEPT_DLL extern void leptSetStderrHandler ( void ( *handler ) ( const char * ) ); +LEPT_DLL extern void lept_stderr ( const char *fmt, ... ); +LEPT_DLL extern l_ok filesAreIdentical ( const char *fname1, const char *fname2, l_int32 *psame ); +LEPT_DLL extern l_uint16 convertOnLittleEnd16 ( l_uint16 shortin ); +LEPT_DLL extern l_uint16 convertOnBigEnd16 ( l_uint16 shortin ); +LEPT_DLL extern l_uint32 convertOnLittleEnd32 ( l_uint32 wordin ); +LEPT_DLL extern l_uint32 convertOnBigEnd32 ( l_uint32 wordin ); +LEPT_DLL extern l_ok fileCorruptByDeletion ( const char *filein, l_float32 loc, l_float32 size, const char *fileout ); +LEPT_DLL extern l_ok fileCorruptByMutation ( const char *filein, l_float32 loc, l_float32 size, const char *fileout ); +LEPT_DLL extern l_ok fileReplaceBytes ( const char *filein, l_int32 start, l_int32 nbytes, l_uint8 *newdata, size_t newsize, const char *fileout ); +LEPT_DLL extern l_ok genRandomIntOnInterval ( l_int32 start, l_int32 end, l_int32 seed, l_int32 *pval ); +LEPT_DLL extern l_int32 lept_roundftoi ( l_float32 fval ); +LEPT_DLL extern l_ok l_hashStringToUint64 ( const char *str, l_uint64 *phash ); +LEPT_DLL extern l_ok l_hashStringToUint64Fast ( const char *str, l_uint64 *phash ); +LEPT_DLL extern l_ok l_hashPtToUint64 ( l_int32 x, l_int32 y, l_uint64 *phash ); +LEPT_DLL extern l_ok l_hashFloat64ToUint64 ( l_float64 val, l_uint64 *phash ); +LEPT_DLL extern l_ok findNextLargerPrime ( l_int32 start, l_uint32 *pprime ); +LEPT_DLL extern l_ok lept_isPrime ( l_uint64 n, l_int32 *pis_prime, l_uint32 *pfactor ); +LEPT_DLL extern l_uint32 convertIntToGrayCode ( l_uint32 val ); +LEPT_DLL extern l_uint32 convertGrayCodeToInt ( l_uint32 val ); +LEPT_DLL extern char * getLeptonicaVersion ( void ); +LEPT_DLL extern void startTimer ( void ); +LEPT_DLL extern l_float32 stopTimer ( void ); +LEPT_DLL extern L_TIMER startTimerNested ( void ); +LEPT_DLL extern l_float32 stopTimerNested ( L_TIMER rusage_start ); +LEPT_DLL extern void l_getCurrentTime ( l_int32 *sec, l_int32 *usec ); +LEPT_DLL extern L_WALLTIMER * startWallTimer ( void ); +LEPT_DLL extern l_float32 stopWallTimer ( L_WALLTIMER **ptimer ); +LEPT_DLL extern char * l_getFormattedDate ( void ); +LEPT_DLL extern char * stringNew ( const char *src ); +LEPT_DLL extern l_ok stringCopy ( char *dest, const char *src, l_int32 n ); +LEPT_DLL extern char * stringCopySegment ( const char *src, l_int32 start, l_int32 nbytes ); +LEPT_DLL extern l_ok stringReplace ( char **pdest, const char *src ); +LEPT_DLL extern l_int32 stringLength ( const char *src, size_t size ); +LEPT_DLL extern l_int32 stringCat ( char *dest, size_t size, const char *src ); +LEPT_DLL extern char * stringConcatNew ( const char *first, ... ); +LEPT_DLL extern char * stringJoin ( const char *src1, const char *src2 ); +LEPT_DLL extern l_ok stringJoinIP ( char **psrc1, const char *src2 ); +LEPT_DLL extern char * stringReverse ( const char *src ); +LEPT_DLL extern char * strtokSafe ( char *cstr, const char *seps, char **psaveptr ); +LEPT_DLL extern l_ok stringSplitOnToken ( char *cstr, const char *seps, char **phead, char **ptail ); +LEPT_DLL extern l_ok stringCheckForChars ( const char *src, const char *chars, l_int32 *pfound ); +LEPT_DLL extern char * stringRemoveChars ( const char *src, const char *remchars ); +LEPT_DLL extern char * stringReplaceEachSubstr ( const char *src, const char *sub1, const char *sub2, l_int32 *pcount ); +LEPT_DLL extern char * stringReplaceSubstr ( const char *src, const char *sub1, const char *sub2, l_int32 *ploc, l_int32 *pfound ); +LEPT_DLL extern L_DNA * stringFindEachSubstr ( const char *src, const char *sub ); +LEPT_DLL extern l_int32 stringFindSubstr ( const char *src, const char *sub, l_int32 *ploc ); +LEPT_DLL extern l_uint8 * arrayReplaceEachSequence ( const l_uint8 *datas, size_t dataslen, const l_uint8 *seq, size_t seqlen, const l_uint8 *newseq, size_t newseqlen, size_t *pdatadlen, l_int32 *pcount ); +LEPT_DLL extern L_DNA * arrayFindEachSequence ( const l_uint8 *data, size_t datalen, const l_uint8 *sequence, size_t seqlen ); +LEPT_DLL extern l_ok arrayFindSequence ( const l_uint8 *data, size_t datalen, const l_uint8 *sequence, size_t seqlen, l_int32 *poffset, l_int32 *pfound ); +LEPT_DLL extern void * reallocNew ( void **pindata, size_t oldsize, size_t newsize ); +LEPT_DLL extern l_uint8 * l_binaryRead ( const char *filename, size_t *pnbytes ); +LEPT_DLL extern l_uint8 * l_binaryReadStream ( FILE *fp, size_t *pnbytes ); +LEPT_DLL extern l_uint8 * l_binaryReadSelect ( const char *filename, size_t start, size_t nbytes, size_t *pnread ); +LEPT_DLL extern l_uint8 * l_binaryReadSelectStream ( FILE *fp, size_t start, size_t nbytes, size_t *pnread ); +LEPT_DLL extern l_ok l_binaryWrite ( const char *filename, const char *operation, const void *data, size_t nbytes ); +LEPT_DLL extern size_t nbytesInFile ( const char *filename ); +LEPT_DLL extern size_t fnbytesInFile ( FILE *fp ); +LEPT_DLL extern l_uint8 * l_binaryCopy ( const l_uint8 *datas, size_t size ); +LEPT_DLL extern l_ok l_binaryCompare ( const l_uint8 *data1, size_t size1, const l_uint8 *data2, size_t size2, l_int32 *psame ); +LEPT_DLL extern l_ok fileCopy ( const char *srcfile, const char *newfile ); +LEPT_DLL extern l_ok fileConcatenate ( const char *srcfile, const char *destfile ); +LEPT_DLL extern l_ok fileAppendString ( const char *filename, const char *str ); +LEPT_DLL extern l_ok fileSplitLinesUniform ( const char *filename, l_int32 n, l_int32 save_empty, const char *rootpath, const char *ext ); +LEPT_DLL extern FILE * fopenReadStream ( const char *filename ); +LEPT_DLL extern FILE * fopenWriteStream ( const char *filename, const char *modestring ); +LEPT_DLL extern FILE * fopenReadFromMemory ( const l_uint8 *data, size_t size ); +LEPT_DLL extern FILE * fopenWriteWinTempfile ( void ); +LEPT_DLL extern FILE * lept_fopen ( const char *filename, const char *mode ); +LEPT_DLL extern l_ok lept_fclose ( FILE *fp ); +LEPT_DLL extern void * lept_calloc ( size_t nmemb, size_t size ); +LEPT_DLL extern void lept_free ( void *ptr ); +LEPT_DLL extern l_int32 lept_mkdir ( const char *subdir ); +LEPT_DLL extern l_int32 lept_rmdir ( const char *subdir ); +LEPT_DLL extern void lept_direxists ( const char *dir, l_int32 *pexists ); +LEPT_DLL extern l_int32 lept_rm_match ( const char *subdir, const char *substr ); +LEPT_DLL extern l_int32 lept_rm ( const char *subdir, const char *tail ); +LEPT_DLL extern l_int32 lept_rmfile ( const char *filepath ); +LEPT_DLL extern l_int32 lept_mv ( const char *srcfile, const char *newdir, const char *newtail, char **pnewpath ); +LEPT_DLL extern l_int32 lept_cp ( const char *srcfile, const char *newdir, const char *newtail, char **pnewpath ); +LEPT_DLL extern void callSystemDebug ( const char *cmd ); +LEPT_DLL extern l_ok splitPathAtDirectory ( const char *pathname, char **pdir, char **ptail ); +LEPT_DLL extern l_ok splitPathAtExtension ( const char *pathname, char **pbasename, char **pextension ); +LEPT_DLL extern char * pathJoin ( const char *dir, const char *fname ); +LEPT_DLL extern char * appendSubdirs ( const char *basedir, const char *subdirs ); +LEPT_DLL extern l_ok convertSepCharsInPath ( char *path, l_int32 type ); +LEPT_DLL extern char * genPathname ( const char *dir, const char *fname ); +LEPT_DLL extern l_ok makeTempDirname ( char *result, size_t nbytes, const char *subdir ); +LEPT_DLL extern l_ok modifyTrailingSlash ( char *path, size_t nbytes, l_int32 flag ); +LEPT_DLL extern char * l_makeTempFilename ( void ); +LEPT_DLL extern l_int32 extractNumberFromFilename ( const char *fname, l_int32 numpre, l_int32 numpost ); +LEPT_DLL extern PIX * pixSimpleCaptcha ( PIX *pixs, l_int32 border, l_int32 nterms, l_uint32 seed, l_uint32 color, l_int32 cmapflag ); +LEPT_DLL extern PIX * pixRandomHarmonicWarp ( PIX *pixs, l_float32 xmag, l_float32 ymag, l_float32 xfreq, l_float32 yfreq, l_int32 nx, l_int32 ny, l_uint32 seed, l_int32 grayval ); +LEPT_DLL extern PIX * pixWarpStereoscopic ( PIX *pixs, l_int32 zbend, l_int32 zshiftt, l_int32 zshiftb, l_int32 ybendt, l_int32 ybendb, l_int32 redleft ); +LEPT_DLL extern PIX * pixStretchHorizontal ( PIX *pixs, l_int32 dir, l_int32 type, l_int32 hmax, l_int32 operation, l_int32 incolor ); +LEPT_DLL extern PIX * pixStretchHorizontalSampled ( PIX *pixs, l_int32 dir, l_int32 type, l_int32 hmax, l_int32 incolor ); +LEPT_DLL extern PIX * pixStretchHorizontalLI ( PIX *pixs, l_int32 dir, l_int32 type, l_int32 hmax, l_int32 incolor ); +LEPT_DLL extern PIX * pixQuadraticVShear ( PIX *pixs, l_int32 dir, l_int32 vmaxt, l_int32 vmaxb, l_int32 operation, l_int32 incolor ); +LEPT_DLL extern PIX * pixQuadraticVShearSampled ( PIX *pixs, l_int32 dir, l_int32 vmaxt, l_int32 vmaxb, l_int32 incolor ); +LEPT_DLL extern PIX * pixQuadraticVShearLI ( PIX *pixs, l_int32 dir, l_int32 vmaxt, l_int32 vmaxb, l_int32 incolor ); +LEPT_DLL extern PIX * pixStereoFromPair ( PIX *pix1, PIX *pix2, l_float32 rwt, l_float32 gwt, l_float32 bwt ); +LEPT_DLL extern L_WSHED * wshedCreate ( PIX *pixs, PIX *pixm, l_int32 mindepth, l_int32 debugflag ); +LEPT_DLL extern void wshedDestroy ( L_WSHED **pwshed ); +LEPT_DLL extern l_ok wshedApply ( L_WSHED *wshed ); +LEPT_DLL extern l_ok wshedBasins ( L_WSHED *wshed, PIXA **ppixa, NUMA **pnalevels ); +LEPT_DLL extern PIX * wshedRenderFill ( L_WSHED *wshed ); +LEPT_DLL extern PIX * wshedRenderColors ( L_WSHED *wshed ); +LEPT_DLL extern l_ok pixaWriteWebPAnim ( const char *filename, PIXA *pixa, l_int32 loopcount, l_int32 duration, l_int32 quality, l_int32 lossless ); +LEPT_DLL extern l_ok pixaWriteStreamWebPAnim ( FILE *fp, PIXA *pixa, l_int32 loopcount, l_int32 duration, l_int32 quality, l_int32 lossless ); +LEPT_DLL extern l_ok pixaWriteMemWebPAnim ( l_uint8 **pencdata, size_t *pencsize, PIXA *pixa, l_int32 loopcount, l_int32 duration, l_int32 quality, l_int32 lossless ); +LEPT_DLL extern PIX * pixReadStreamWebP ( FILE *fp ); +LEPT_DLL extern PIX * pixReadMemWebP ( const l_uint8 *filedata, size_t filesize ); +LEPT_DLL extern l_ok readHeaderWebP ( const char *filename, l_int32 *pw, l_int32 *ph, l_int32 *pspp ); +LEPT_DLL extern l_ok readHeaderMemWebP ( const l_uint8 *data, size_t size, l_int32 *pw, l_int32 *ph, l_int32 *pspp ); +LEPT_DLL extern l_ok pixWriteWebP ( const char *filename, PIX *pixs, l_int32 quality, l_int32 lossless ); +LEPT_DLL extern l_ok pixWriteStreamWebP ( FILE *fp, PIX *pixs, l_int32 quality, l_int32 lossless ); +LEPT_DLL extern l_ok pixWriteMemWebP ( l_uint8 **pencdata, size_t *pencsize, PIX *pixs, l_int32 quality, l_int32 lossless ); +LEPT_DLL extern l_int32 l_jpegSetQuality ( l_int32 new_quality ); +LEPT_DLL extern void setLeptDebugOK ( l_int32 allow ); +LEPT_DLL extern l_ok pixaWriteFiles ( const char *rootname, PIXA *pixa, l_int32 format ); +LEPT_DLL extern l_ok pixWriteDebug ( const char *fname, PIX *pix, l_int32 format ); +LEPT_DLL extern l_ok pixWrite ( const char *fname, PIX *pix, l_int32 format ); +LEPT_DLL extern l_ok pixWriteAutoFormat ( const char *filename, PIX *pix ); +LEPT_DLL extern l_ok pixWriteStream ( FILE *fp, PIX *pix, l_int32 format ); +LEPT_DLL extern l_ok pixWriteImpliedFormat ( const char *filename, PIX *pix, l_int32 quality, l_int32 progressive ); +LEPT_DLL extern l_int32 pixChooseOutputFormat ( PIX *pix ); +LEPT_DLL extern l_int32 getImpliedFileFormat ( const char *filename ); +LEPT_DLL extern l_ok pixGetAutoFormat ( PIX *pix, l_int32 *pformat ); +LEPT_DLL extern const char * getFormatExtension ( l_int32 format ); +LEPT_DLL extern l_ok pixWriteMem ( l_uint8 **pdata, size_t *psize, PIX *pix, l_int32 format ); +LEPT_DLL extern l_ok l_fileDisplay ( const char *fname, l_int32 x, l_int32 y, l_float32 scale ); +LEPT_DLL extern l_ok pixDisplay ( PIX *pixs, l_int32 x, l_int32 y ); +LEPT_DLL extern l_ok pixDisplayWithTitle ( PIX *pixs, l_int32 x, l_int32 y, const char *title, l_int32 dispflag ); +LEPT_DLL extern PIX * pixMakeColorSquare ( l_uint32 color, l_int32 size, l_int32 addlabel, l_int32 location, l_uint32 textcolor ); +LEPT_DLL extern void l_chooseDisplayProg ( l_int32 selection ); +LEPT_DLL extern void changeFormatForMissingLib ( l_int32 *pformat ); +LEPT_DLL extern l_ok pixDisplayWrite ( PIX *pixs, l_int32 reduction ); +LEPT_DLL extern l_uint8 * zlibCompress ( const l_uint8 *datain, size_t nin, size_t *pnout ); +LEPT_DLL extern l_uint8 * zlibUncompress ( const l_uint8 *datain, size_t nin, size_t *pnout ); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ +#endif /* NO_PROTOS */ + + +#endif /* LEPTONICA_ALLHEADERS_H */ + diff --git a/third_party/leptonica/uos/amd64/include/leptonica/alltypes.h b/third_party/leptonica/uos/amd64/include/leptonica/alltypes.h new file mode 100644 index 00000000..f3a3823b --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/alltypes.h @@ -0,0 +1,68 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_ALLTYPES_H +#define LEPTONICA_ALLTYPES_H + + /* Standard */ +#include +#include +#include + + /* General and configuration defs */ +#include "endianness.h" +#include "environ.h" + + /* Generic and non-image-specific containers */ +#include "array.h" +#include "bbuffer.h" +#include "hashmap.h" +#include "heap.h" +#include "list.h" +#include "ptra.h" +#include "queue.h" +#include "rbtree.h" +#include "stack.h" + + /* Imaging */ +#include "arrayaccess.h" +#include "bmf.h" +#include "ccbord.h" +#include "colorfill.h" +#include "dewarp.h" +#include "gplot.h" +#include "imageio.h" +#include "jbclass.h" +#include "morph.h" +#include "pix.h" +#include "recog.h" +#include "regutils.h" +#include "stringcode.h" +#include "sudoku.h" +#include "watershed.h" + + +#endif /* LEPTONICA_ALLTYPES_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/array.h b/third_party/leptonica/uos/amd64/include/leptonica/array.h new file mode 100644 index 00000000..c3665d71 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/array.h @@ -0,0 +1,109 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_ARRAY_H +#define LEPTONICA_ARRAY_H + +/*! + * \file array.h + * + *
+ *  This file has typedefs for the following array structs:
+ *      struct Numa          array of floats
+ *      struct Numaa
+ *      struct L_Dna         array of doubles
+ *      struct L_Dnaa
+ *      struct L_Dnahash
+ *      struct Sarray        array of C-strings
+ *      struct L_Bytea       array of bytes
+ *
+ *  It contains definitions for:
+ *      Numa interpolation flags
+ *      Numa border flags
+ *      Numa data type conversion to string
+ *
+ *  Here are the non-image-related arrays in leptonica:
+ *  * Numa, L_Dna, L_Ptra, Sarray:
+ *    These have most of the typical operations of vectors, such as add,
+ *    insert, remove and replace.
+ *  * Numaa, L_Dnaa, L_Ptraa:
+ *    These are arrays of float, double and generic pointer arrays.
+ *  * L_Bytea:
+ *    This is an array of bytes, analogous to a C++ string.
+ *  * L_Dnahash:
+ *    This is a simple hashing for integers, used in the jbig2 classifier.
+ * 
+ */ + + +/*------------------------------------------------------------------------* + * Array Structs * + *------------------------------------------------------------------------*/ + /*! Number array: an array of floats */ +typedef struct Numa NUMA; + + /*! Array of number arrays */ +typedef struct Numaa NUMAA; + + /*! Double number array: an array of doubles */ +typedef struct L_Dna L_DNA; + + /*! Array of double number arrays */ +typedef struct L_Dnaa L_DNAA; + + /*! Array of double number arrays, used as a simple hash */ +typedef struct L_DnaHash L_DNAHASH; + + /*! String array: an array of C strings */ +typedef struct Sarray SARRAY; + + /*! Byte array (analogous to C++ "string") */ +typedef struct L_Bytea L_BYTEA; + + +/*------------------------------------------------------------------------* + * Array flags * + *------------------------------------------------------------------------*/ +/*! Numa Interpolation */ +enum { + L_LINEAR_INTERP = 1, /*!< linear */ + L_QUADRATIC_INTERP = 2 /*!< quadratic */ +}; + +/*! Numa Border Adding */ +enum { + L_CONTINUED_BORDER = 1, /*!< extended with same value */ + L_SLOPE_BORDER = 2, /*!< extended with constant normal derivative */ + L_MIRRORED_BORDER = 3 /*!< mirrored */ +}; + +/*! Numa Data Conversion */ +enum { + L_INTEGER_VALUE = 1, /*!< convert to integer */ + L_FLOAT_VALUE = 2 /*!< convert to float */ +}; + +#endif /* LEPTONICA_ARRAY_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/array_internal.h b/third_party/leptonica/uos/amd64/include/leptonica/array_internal.h new file mode 100644 index 00000000..355c59d0 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/array_internal.h @@ -0,0 +1,135 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_ARRAY_INTERNAL_H +#define LEPTONICA_ARRAY_INTERNAL_H + +/*! + * \file array_internal.h + * + *
+ *  Contains the following structs:
+ *      struct Numa          array of floats
+ *      struct Numaa
+ *      struct L_Dna         array of doubles
+ *      struct L_Dnaa
+ *      struct L_Dnahash
+ *      struct Sarray        array of C-strings
+ *      struct L_Bytea       array of bytes
+ *
+ *  This file can be #included after allheaders.h in source files that
+ *  require direct access to the internal data fields in these structs.
+ *
+ *  Here are the non-image-related arrays in leptonica:
+ *  * Numa, L_Dna, L_Ptra, Sarray:
+ *    These have most of the typical operations of vectors, such as add,
+ *    insert, remove and replace.
+ *  * Numaa, L_Dnaa, L_Ptraa:
+ *    These are arrays of float, double and generic pointer arrays.
+ *  * L_Bytea:
+ *    This is an array of bytes, analogous to a C++ string.
+ *  * L_Dnahash:
+ *    This is a simple hashing for integers, used in the jbig2 classifier.
+ * 
+ */ + + +/*------------------------------------------------------------------------* + * Array Structs * + *------------------------------------------------------------------------*/ +/*! Numa version for serialization */ +#define NUMA_VERSION_NUMBER 1 + + /*! Number array: an array of floats */ +struct Numa +{ + l_int32 nalloc; /*!< size of allocated number array */ + l_int32 n; /*!< number of numbers saved */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + l_float32 startx; /*!< x value assigned to array[0] */ + l_float32 delx; /*!< change in x value as i --> i + 1 */ + l_float32 *array; /*!< number array */ +}; + + /*! Array of number arrays */ +struct Numaa +{ + l_int32 nalloc; /*!< size of allocated ptr array */ + l_int32 n; /*!< number of Numa saved */ + struct Numa **numa; /*!< array of Numa */ +}; + +/*! Dna version for serialization */ +#define DNA_VERSION_NUMBER 1 + + /*! Double number array: an array of doubles */ +struct L_Dna +{ + l_int32 nalloc; /*!< size of allocated number array */ + l_int32 n; /*!< number of numbers saved */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + l_float64 startx; /*!< x value assigned to array[0] */ + l_float64 delx; /*!< change in x value as i --> i + 1 */ + l_float64 *array; /*!< number array */ +}; + + /*! Array of double number arrays */ +struct L_Dnaa +{ + l_int32 nalloc; /*!< size of allocated ptr array */ + l_int32 n; /*!< number of L_Dna saved */ + struct L_Dna **dna; /*!< array of L_Dna */ +}; + +struct L_DnaHash +{ + l_int32 nbuckets; + l_int32 initsize; /*!< initial size of each dna that is made */ + struct L_Dna **dna; /*!< array of L_Dna */ +}; + +/*! Sarray version for serialization */ +#define SARRAY_VERSION_NUMBER 1 + + /*! String array: an array of C strings */ +struct Sarray +{ + l_int32 nalloc; /*!< size of allocated ptr array */ + l_int32 n; /*!< number of strings allocated */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + char **array; /*!< string array */ +}; + + /*! Byte array (analogous to C++ "string") */ +struct L_Bytea +{ + size_t nalloc; /*!< number of bytes allocated in data array */ + size_t size; /*!< number of bytes presently used */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + l_uint8 *data; /*!< data array */ +}; + +#endif /* LEPTONICA_ARRAY_INTERNAL_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/arrayaccess.h b/third_party/leptonica/uos/amd64/include/leptonica/arrayaccess.h new file mode 100644 index 00000000..1a831bcc --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/arrayaccess.h @@ -0,0 +1,270 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_ARRAY_ACCESS_H +#define LEPTONICA_ARRAY_ACCESS_H + +/*! + * \file arrayaccess.h + * + *
+ *  1, 2, 4, 8, 16 and 32 bit data access within an array of 32-bit words
+ *
+ *  This is used primarily to access 1, 2, 4, 8, 16 and 32 bit pixels
+ *  in a line of image data, represented as an array of 32-bit words.
+ *
+ *     pdata:  pointer to first 32-bit word in the array
+ *     n:      index of the pixel in the array
+ *
+ *  Function calls for these accessors are defined in arrayaccess.c.
+ *
+ *  However, for efficiency we use the inline macros for all accesses.
+ *  Even though the 2 and 4 bit set* accessors are more complicated,
+ *  they are about 10% faster than the function calls.
+ *
+ *  The 32 bit access is just a cast and ptr arithmetic.  We include
+ *  it so that the input ptr can be void*.
+ *
+ *  At the end of this file is code for invoking the function calls
+ *  instead of inlining.
+ *
+ *  The macro SET_DATA_BIT_VAL(pdata, n, val) is a bit slower than
+ *      if (val == 0)
+ *          CLEAR_DATA_BIT(pdata, n);
+ *      else
+ *          SET_DATA_BIT(pdata, n);
+ *
+ *  Some compilers complain when the SET macros are surrounded by
+ *  parentheses, because parens require an evaluation and it is not
+ *  defined for SET macros.  If SET_DATA_QBIT were defined as a
+ *  compound macro, in analogy to l_setDataQbit(), it requires
+ *  surrounding braces:
+ * \code
+ *     #define  SET_DATA_QBIT(pdata, n, val) \
+ *        {l_uint32 *_TEMP_WORD_PTR_; \
+ *         _TEMP_WORD_PTR_ = (l_uint32 *)(pdata) + ((n) >> 3); \
+ *         *_TEMP_WORD_PTR_ &= ~(0xf0000000 >> (4 * ((n) & 7))); \
+ *         *_TEMP_WORD_PTR_ |= (((val) & 15) << (28 - 4 * ((n) & 7)));}
+ * \endcode
+ *  but if used in an if/else
+ * \code
+ *      if (x)
+ *         SET_DATA_QBIT(...);
+ *      else
+ *         ...
+ * \endcode
+ *  the compiler sees
+ * \code
+ *      if (x)
+ *         {......};
+ *      else
+ *         ...
+ * \endcode
+ *  The semicolon comes after the brace and will not compile.
+ *  This can be fixed in the call by either omitting the semicolon
+ *  or requiring another set of braces around SET_DATA_QBIT(), but
+ *  both these options break compatibility with current code, and
+ *  require special attention by anyone using the macros.
+ *
+ *  There are (at least) two ways to fix this in the macro definitions,
+ *  suggested by Dave Bryan.
+ *  (1) Surround the braces in the macro above with
+ *         do {....} while(0)
+ *      Then the semicolon just terminates the expression.
+ *  (2) Reduce the blocks to a single expression; e.g,
+ *         *((l_uint32 *)(pdata) + ((n) >> 3)) = \
+ *           *((l_uint32 *)(pdata) + ((n) >> 3)) \
+ *           & ~(0xf0000000 >> (4 * ((n) & 7))) \
+ *           | (((val) & 15) << (28 - 4 * ((n) & 7)))
+ *      This appears to cause redundant computation, but the compiler
+ *      should evaluate the common subexpression only once.
+ *  All these methods have the same performance, giving about 300M
+ *  SET_DATA_QBIT operations per second on a fast 64 bit system.
+ *  Using the function calls instead of the macros results in about 250M
+ *  SET_DATA_QBIT operations per second, a performance hit of nearly 20%.
+ * 
+ */ + +#define USE_INLINE_ACCESSORS 1 + +#if USE_INLINE_ACCESSORS + + /*=============================================================*/ + /* Faster: use in line accessors */ + /*=============================================================*/ + + /*--------------------------------------------------* + * 1 bit access * + *--------------------------------------------------*/ +/*! 1 bit access - get */ +#define GET_DATA_BIT(pdata, n) \ + ((*((const l_uint32 *)(pdata) + ((n) >> 5)) >> (31 - ((n) & 31))) & 1) + +/*! 1 bit access - set */ +#define SET_DATA_BIT(pdata, n) \ + *((l_uint32 *)(pdata) + ((n) >> 5)) |= (0x80000000 >> ((n) & 31)) + +/*! 1 bit access - clear */ +#define CLEAR_DATA_BIT(pdata, n) \ + *((l_uint32 *)(pdata) + ((n) >> 5)) &= ~(0x80000000 >> ((n) & 31)) + +/*! 1 bit access - set value (0 or 1) */ +#define SET_DATA_BIT_VAL(pdata, n, val) \ + *((l_uint32 *)(pdata) + ((n) >> 5)) = \ + ((*((l_uint32 *)(pdata) + ((n) >> 5)) \ + & (~(0x80000000 >> ((n) & 31)))) \ + | ((l_uint32)(val) << (31 - ((n) & 31)))) + + /*--------------------------------------------------* + * 2 bit access * + *--------------------------------------------------*/ +/*! 2 bit access - get */ +#define GET_DATA_DIBIT(pdata, n) \ + ((*((const l_uint32 *)(pdata) + ((n) >> 4)) >> (2 * (15 - ((n) & 15)))) & 3) + +/*! 2 bit access - set value (0 ... 3) */ +#define SET_DATA_DIBIT(pdata, n, val) \ + *((l_uint32 *)(pdata) + ((n) >> 4)) = \ + ((*((l_uint32 *)(pdata) + ((n) >> 4)) \ + & (~(0xc0000000 >> (2 * ((n) & 15))))) \ + | ((l_uint32)((val) & 3) << (30 - 2 * ((n) & 15)))) + +/*! 2 bit access - clear */ +#define CLEAR_DATA_DIBIT(pdata, n) \ + *((l_uint32 *)(pdata) + ((n) >> 4)) &= ~(0xc0000000 >> (2 * ((n) & 15))) + + + /*--------------------------------------------------* + * 4 bit access * + *--------------------------------------------------*/ +/*! 4 bit access - get */ +#define GET_DATA_QBIT(pdata, n) \ + ((*((const l_uint32 *)(pdata) + ((n) >> 3)) >> (4 * (7 - ((n) & 7)))) & 0xf) + +/*! 4 bit access - set value (0 ... 15) */ +#define SET_DATA_QBIT(pdata, n, val) \ + *((l_uint32 *)(pdata) + ((n) >> 3)) = \ + ((*((l_uint32 *)(pdata) + ((n) >> 3)) \ + & (~(0xf0000000 >> (4 * ((n) & 7))))) \ + | ((l_uint32)((val) & 15) << (28 - 4 * ((n) & 7)))) + +/*! 4 bit access - clear */ +#define CLEAR_DATA_QBIT(pdata, n) \ + *((l_uint32 *)(pdata) + ((n) >> 3)) &= ~(0xf0000000 >> (4 * ((n) & 7))) + + + /*--------------------------------------------------* + * 8 bit access * + *--------------------------------------------------*/ +#ifdef L_BIG_ENDIAN +/*! 8 bit access - get */ +#define GET_DATA_BYTE(pdata, n) \ + (*((const l_uint8 *)(pdata) + (n))) +#else /* L_LITTLE_ENDIAN */ +/*! 8 bit access - get */ +#define GET_DATA_BYTE(pdata, n) \ + (*(l_uint8 *)((l_uintptr_t)((const l_uint8 *)(pdata) + (n)) ^ 3)) +#endif /* L_BIG_ENDIAN */ + +#ifdef L_BIG_ENDIAN +/*! 8 bit access - set value (0 ... 255) */ +#define SET_DATA_BYTE(pdata, n, val) \ + *((l_uint8 *)(pdata) + (n)) = (val) +#else /* L_LITTLE_ENDIAN */ +/*! 8 bit access - set value (0 ... 255) */ +#define SET_DATA_BYTE(pdata, n, val) \ + *(l_uint8 *)((l_uintptr_t)((l_uint8 *)(pdata) + (n)) ^ 3) = (val) +#endif /* L_BIG_ENDIAN */ + + + /*--------------------------------------------------* + * 16 bit access * + *--------------------------------------------------*/ +#ifdef L_BIG_ENDIAN +/*! 16 bit access - get */ +#define GET_DATA_TWO_BYTES(pdata, n) \ + (*((const l_uint16 *)(pdata) + (n))) +#else /* L_LITTLE_ENDIAN */ +/*! 16 bit access - get */ +#define GET_DATA_TWO_BYTES(pdata, n) \ + (*(l_uint16 *)((l_uintptr_t)((const l_uint16 *)(pdata) + (n)) ^ 2)) +#endif /* L_BIG_ENDIAN */ + +#ifdef L_BIG_ENDIAN +/*! 16 bit access - set value (0 ... 65535) */ +#define SET_DATA_TWO_BYTES(pdata, n, val) \ + *((l_uint16 *)(pdata) + (n)) = (val) +#else /* L_LITTLE_ENDIAN */ +/*! 16 bit access - set value (0 ... 65535) */ +#define SET_DATA_TWO_BYTES(pdata, n, val) \ + *(l_uint16 *)((l_uintptr_t)((l_uint16 *)(pdata) + (n)) ^ 2) = (val) +#endif /* L_BIG_ENDIAN */ + + + /*--------------------------------------------------* + * 32 bit access * + *--------------------------------------------------*/ +/*! 32 bit access - get */ +#define GET_DATA_FOUR_BYTES(pdata, n) \ + (*((const l_uint32 *)(pdata) + (n))) + +/*! 32 bit access - set (0 ... 4294967295) */ +#define SET_DATA_FOUR_BYTES(pdata, n, val) \ + *((l_uint32 *)(pdata) + (n)) = (val) + + +#else + + /*=============================================================*/ + /* Slower: use function calls for all accessors */ + /*=============================================================*/ + +#define GET_DATA_BIT(pdata, n) l_getDataBit(pdata, n) +#define SET_DATA_BIT(pdata, n) l_setDataBit(pdata, n) +#define CLEAR_DATA_BIT(pdata, n) l_clearDataBit(pdata, n) +#define SET_DATA_BIT_VAL(pdata, n, val) l_setDataBitVal(pdata, n, val) + +#define GET_DATA_DIBIT(pdata, n) l_getDataDibit(pdata, n) +#define SET_DATA_DIBIT(pdata, n, val) l_setDataDibit(pdata, n, val) +#define CLEAR_DATA_DIBIT(pdata, n) l_clearDataDibit(pdata, n) + +#define GET_DATA_QBIT(pdata, n) l_getDataQbit(pdata, n) +#define SET_DATA_QBIT(pdata, n, val) l_setDataQbit(pdata, n, val) +#define CLEAR_DATA_QBIT(pdata, n) l_clearDataQbit(pdata, n) + +#define GET_DATA_BYTE(pdata, n) l_getDataByte(pdata, n) +#define SET_DATA_BYTE(pdata, n, val) l_setDataByte(pdata, n, val) + +#define GET_DATA_TWO_BYTES(pdata, n) l_getDataTwoBytes(pdata, n) +#define SET_DATA_TWO_BYTES(pdata, n, val) l_setDataTwoBytes(pdata, n, val) + +#define GET_DATA_FOUR_BYTES(pdata, n) l_getDataFourBytes(pdata, n) +#define SET_DATA_FOUR_BYTES(pdata, n, val) l_setDataFourBytes(pdata, n, val) + +#endif /* USE_INLINE_ACCESSORS */ + + +#endif /* LEPTONICA_ARRAY_ACCESS_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/bbuffer.h b/third_party/leptonica/uos/amd64/include/leptonica/bbuffer.h new file mode 100644 index 00000000..945cbb0f --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/bbuffer.h @@ -0,0 +1,60 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_BBUFFER_H +#define LEPTONICA_BBUFFER_H + +/*! + * \file bbuffer.h + * + *
+ *      Expandable byte buffer for reading data in from memory and
+ *      writing data out to other memory.
+ *
+ *      This implements a queue of bytes, so data read in is put
+ *      on the "back" of the queue (i.e., the end of the byte array)
+ *      and data written out is taken from the "front" of the queue
+ *      (i.e., from an index marker "nwritten" that is initially set at
+ *      the beginning of the array.)  As usual with expandable
+ *      arrays, we keep the size of the allocated array and the
+ *      number of bytes that have been read into the array.
+ *
+ *      For implementation details, see bbuffer.c.
+ * 
+ */ + +/*! Expandable byte buffer for memory read/write operations */ +struct L_ByteBuffer +{ + l_int32 nalloc; /*!< size of allocated byte array */ + l_int32 n; /*!< number of bytes read into to the array */ + l_int32 nwritten; /*!< number of bytes written from the array */ + l_uint8 *array; /*!< byte array */ +}; +typedef struct L_ByteBuffer L_BBUFFER; + + +#endif /* LEPTONICA_BBUFFER_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/bilateral.h b/third_party/leptonica/uos/amd64/include/leptonica/bilateral.h new file mode 100644 index 00000000..e5b5bbdd --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/bilateral.h @@ -0,0 +1,136 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_BILATERAL_H +#define LEPTONICA_BILATERAL_H + +/*! + * \file bilateral.h + * + *
+ *  Contains the following struct
+ *      struct L_Bilateral
+ *
+ *
+ *  For a tutorial introduction to bilateral filters, which apply a
+ *  gaussian blur to smooth parts of the image while preserving edges, see
+ *    http://people.csail.mit.edu/sparis/bf_course/slides/03_definition_bf.pdf
+ *
+ *  We give an implementation of a bilateral filtering algorithm given in:
+ *    "Real-Time O(1) Bilateral Filtering," by Yang, Tan and Ahuja, CVPR 2009
+ *  which is at:
+ *    http://vision.ai.uiuc.edu/~qyang6/publications/cvpr-09-qingxiong-yang.pdf
+ *  This is based on an earlier algorithm by Sylvain Paris and Frédo Durand:
+ *    http://people.csail.mit.edu/sparis/publi/2006/eccv/
+ *               Paris_06_Fast_Approximation.pdf
+ *
+ *  The kernel of the filter is a product of a spatial gaussian and a
+ *  monotonically decreasing function of the difference in intensity
+ *  between the source pixel and the neighboring pixel.  The intensity
+ *  part of the filter gives higher influence for pixels with intensities
+ *  that are near to the source pixel, and the spatial part of the
+ *  filter gives higher weight to pixels that are near the source pixel.
+ *  This combination smooths in relatively uniform regions, while
+ *  maintaining edges.
+ *
+ *  The advantage of the appoach of Yang et al is that it is separable,
+ *  so the computation time is linear in the gaussian filter size.
+ *  Furthermore, it is possible to do much of the computation as a reduced
+ *  scale, which gives a good approximation to the full resolution version
+ *  but greatly speeds it up.
+ *
+ *  The bilateral filtered value at x is:
+ *
+ *            sum[y in N(x)]: spatial(|y - x|) * range(|I(x) - I(y)|) * I(y)
+ *    I'(x) = --------------------------------------------------------------
+ *            sum[y in N(x)]: spatial(|y - x|) * range(|I(x) - I(y)|)
+ *
+ *  where I() is the input image, I'() is the filtered image, N(x) is the
+ *  set of pixels around x in the filter support, and spatial() and range()
+ *  are gaussian functions:
+ *          spatial(x) = exp(-x^2 / (2 * s_s^2))
+ *          range(x) = exp(-x^2 / (2 * s_r^2))
+ *  and s_s and s_r and the standard deviations of the two gaussians.
+ *
+ *  Yang et al use a separable approximation to this, by defining a set
+ *  of related but separable functions J(k,x), that we call Principal
+ *  Bilateral Components (PBC):
+ *
+ *             sum[y in N(x)]: spatial(|y - x|) * range(|k - I(y)|) * I(y)
+ *    J(k,x) = -----------------------------------------------------------
+ *             sum[y in N(x)]: spatial(|y - x|) * range(|k - I(y)|)
+ *
+ *  which are computed quickly for a set of n values k[p], p = 0 ... n-1.
+ *  Then each output pixel is found using a linear interpolation:
+ *
+ *    I'(x) = (1 - q) * J(k[p],x) + q * J(k[p+1],x)
+ *
+ *  where J(k[p],x) and J(k[p+1],x) are PBC for which
+ *    k[p] <= I(x) and k[p+1] >= I(x), and
+ *    q = (I(x) - k[p]) / (k[p+1] - k[p]).
+ *
+ *  We can also subsample I(x), create subsampled versions of J(k,x),
+ *  which are then interpolated between for I'(x).
+ *
+ *  We generate 'pixsc', by optionally downscaling the input image
+ *  (using area mapping by the factor 'reduction'), and then adding
+ *  a mirrored border to avoid boundary cases.  This is then used
+ *  to compute 'ncomps' PBCs.
+ *
+ *  The 'spatial_stdev' is also downscaled by 'reduction'.  The size
+ *  of the 'spatial' array is 4 * (reduced 'spatial_stdev') + 1.
+ *  The size of the 'range' array is 256.
+ * 
+ */ + + +/*------------------------------------------------------------------------* + * Bilateral filter * + *------------------------------------------------------------------------*/ + +/*! Bilateral filter */ +struct L_Bilateral +{ + struct Pix *pixs; /*!< clone of source pix */ + struct Pix *pixsc; /*!< downscaled pix with mirrored border */ + l_int32 reduction; /*!< 1, 2 or 4x for intermediates */ + l_float32 spatial_stdev; /*!< stdev of spatial gaussian */ + l_float32 range_stdev; /*!< stdev of range gaussian */ + l_float32 *spatial; /*!< 1D gaussian spatial kernel */ + l_float32 *range; /*!< one-sided gaussian range kernel */ + l_int32 minval; /*!< min value in 8 bpp pix */ + l_int32 maxval; /*!< max value in 8 bpp pix */ + l_int32 ncomps; /*!< number of intermediate results */ + l_int32 *nc; /*!< set of k values (size ncomps) */ + l_int32 *kindex; /*!< mapping from intensity to lower k */ + l_float32 *kfract; /*!< mapping from intensity to fract k */ + struct Pixa *pixac; /*!< intermediate result images (PBC) */ + l_uint32 ***lineset; /*!< lineptrs for pixac */ +}; +typedef struct L_Bilateral L_BILATERAL; + + +#endif /* LEPTONICA_BILATERAL_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/bmf.h b/third_party/leptonica/uos/amd64/include/leptonica/bmf.h new file mode 100644 index 00000000..328e2c0d --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/bmf.h @@ -0,0 +1,64 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_BMF_H +#define LEPTONICA_BMF_H + +/*! + * \file bmf.h + * + * Simple data structure to hold bitmap fonts and related data + */ + + /*! Constants for deciding when text block is divided into paragraphs */ +/*! Split Text */ +enum { + SPLIT_ON_LEADING_WHITE = 1, /*!< tab or space at beginning of line */ + SPLIT_ON_BLANK_LINE = 2, /*!< newline with optional white space */ + SPLIT_ON_BOTH = 3 /*!< leading white space or newline */ +}; + + +/*! Data structure to hold bitmap fonts and related data */ +struct L_Bmf +{ + struct Pixa *pixa; /*!< pixa of bitmaps for 93 characters */ + l_int32 size; /*!< font size (in points at 300 ppi) */ + char *directory; /*!< directory containing font bitmaps */ + l_int32 baseline1; /*!< baseline offset for ascii 33 - 57 */ + l_int32 baseline2; /*!< baseline offset for ascii 58 - 91 */ + l_int32 baseline3; /*!< baseline offset for ascii 93 - 126 */ + l_int32 lineheight; /*!< max height of line of chars */ + l_int32 kernwidth; /*!< pixel dist between char bitmaps */ + l_int32 spacewidth; /*!< pixel dist between word bitmaps */ + l_int32 vertlinesep; /*!< extra vertical space between text lines */ + l_int32 *fonttab; /*!< table mapping ascii --> font index */ + l_int32 *baselinetab; /*!< table mapping ascii --> baseline offset */ + l_int32 *widthtab; /*!< table mapping ascii --> char width */ +}; +typedef struct L_Bmf L_BMF; + +#endif /* LEPTONICA_BMF_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/bmfdata.h b/third_party/leptonica/uos/amd64/include/leptonica/bmfdata.h new file mode 100644 index 00000000..30e2b5ad --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/bmfdata.h @@ -0,0 +1,636 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +/*! + * \file bmfdata.h + * + *
+ *  This file contains data for constructing the bitmap fonts.
+ *
+ *  The fontdata string holds all 9 sets of bitmap fonts in a base64
+ *  encoding of a pixacomp representation of the tiff compressed images.
+ *  It was generated by prog/genfonts and pasted in.  This allows
+ *  the use of the bitmap fonts for image labelling without accessing
+ *  stored versions of either the tiff images for each set, or the pixa
+ *  of the 95 printable character images that was derived from the tiff image.
+ *
+ *  In use, to get the bmf for a specific font size, from the encoded
+ *  string in this file, call
+ *      bmfCreate(NULL, fontsize);
+ * 
+ */ + +#ifndef LEPTONICA_BMFDATA_H +#define LEPTONICA_BMFDATA_H + +#define NUM_FONTS 9 +static const char *inputfonts[] = {"chars-4.tif", "chars-6.tif", + "chars-8.tif", "chars-10.tif", + "chars-12.tif", "chars-14.tif", + "chars-16.tif", "chars-18.tif", + "chars-20.tif"}; +static const char *outputfonts[] = {"chars-4.pa", "chars-6.pa", + "chars-8.pa", "chars-10.pa", + "chars-12.pa", "chars-14.pa", + "chars-16.pa", "chars-18.pa", + "chars-20.pa"}; +static const l_int32 baselines[NUM_FONTS][3] = {{11, 12, 12}, {18, 18, 18}, + {24, 24, 24}, {30, 30, 30}, + {36, 36, 36}, {42, 42, 42}, + {48, 48, 48}, {54, 54, 54}, + {60, 60, 60}}; + +static const char fontdata_4[] = + "SUkqACYFAAAmoHICP///////////////////////kFcchgc45Bgc45AgcgxBY5DY5DY5Agcg" + "jkM45A8GocgxBA8M45BfCGgchhzOQxZBiNe/CDQRT6RQ+k4QV6BHcgvBBjCC+KoSjQI7wjj/" + "16I+EUPTpV0rI4LilVtAjjyPuR58jg3CRd6dJkcDMCj+v//qlVsMgQPVY6vugih9Lr/8RCF+" + "OqUUK6C/fHFV9RStf8MulG10fKcN6X+lXOBg+GexX71wxSPCf4/+kE0uR5zE0rtfCFg3oIp0" + "R+GF5DSmQaMS/oG1xen0X2wyh8WXwoI46VPt/kNYcf9J4h/pUHB///2H+t+lkCByDj/r9ZBX" + "H1BAtUr7u/IEOQanrS0eByO16tpVaSWtaEVsNiG66WrBgg05wM4bCYNWDCWIiDCER6HGhERE" + "RER3ZHBfXjaSQ7iOP/////////////////////////////////////////////////////+Q" + "JgK95DIDRZAjCDccgRMhn4g5yC9CD0IL+QxhuIfCCYQTC4IJhBiyLBB7J4QX4gvQgxxBehBi" + "yGDkPhdkEw1kPZY5cEHck5BIJOQc9aI+wjE7DL7RdsMu2GXoZehGDYaDCDQaDSCDQdIOGEEX" + "bDLzCLthl5ojzkeL0NMJhNNbVoJ6kclXuggyOGfugnw3vugv/0u+9IN7pBvdJ//brT3VtdLy" + "B4NxyGsOPRnv9R7xx3/9L+EU/3/f4jj/t+3TdDvkFZyC7hYdKkCCKHQI76SW/pD/6XCKdAin" + "29L9L6/9eEUOrD0kv8IIMNKkq/j/zD5h+P4r//99LfBKcDR9utK62NLxEIIhnmGGlpek3Lz/" + "jj5cv/ul7f+EvimH///0l6CENpfrHt/y9l7kr/4RT/f7f+PwRTkG7/tpav26XtrxoVI5/vSx" + "xsP/7ful7fdd1tv/7FRoj//DLgQZgQCFhlYlfv1kx9//28mPx/7ruu3/t9K3pEh/IKzkF3DL" + "g2BENDtBr9Jh4S12H/+3+17GwwltpbZBx0u0unr0v9IMjhrBYYpO0KZmDikMJsYTCDCeE2Gh" + "p6DTdiEE2KCdo8GcNj3pJsJofjiIiIiIiIiI4iIiIiIhhCIiIiIiIr1SMwyQbOkEiGQCvd4i" + "I//////////////////////////////////////////////////////+QVo7IEDkGwchpOQV" + "nIa0ENKCGhyC7kHchocgZschnHIMPtKk7oIP7ulv6f9Yj5DIDaH/3gjjr///+rI4aiIEXngg" + "RZBfCBEWQXsofKggu5DD5Y+Qw5UHghiCoIEYQw5VkCMIO5TkF7shhzOQxZ4IJZxy3IO5nIJZ" + "4IP//1iiPOGd0R+iPQgR3TQIIXZ3/S7BBnezui87MOiPbKHRHqftNNXvTTUjy/9JkcFjTpOk" + "9NsKmFTu+Etppw06VtMjhhO0OLCd3S+rSdIUvyDD+Iha8fQ//+K//3/+D/vbQRT7d9LsjhgI" + "7nH8Ivf/lw0bS/4RT////7f//pfq+lhr6/v/Yf/t//3/+D/sO2NNhpfiP66Xat8L/2//3S0r" + "XIMD/rvUEd9Isf/4Mp5wCDgYBlOzgO0fB3aem2mmnYTtipwCAZQ6DnAXDgynapwk20h/+IiI" + "iIy9ERxEREREZHDLiIiIiIjjj6kNWdP//qP/pMjhq8bSXwojsGkEwmliIiP/////////////" + "/////////////////////////wAQAQ4AAAEDAAEAAACSAwAAAQEDAAEAAAA2AgAAAgEDAAEA" + "AAABAAAAAwEDAAEAAAAEAAAABgEDAAEAAAABAAAAEQEEAAEAAAAIAAAAEgEDAAEAAAABAAAA" + "FQEDAAEAAAABAAAAFgEDAAEAAAA2AgAAFwEEAAEAAAAeBQAAGgEFAAEAAADUBQAAGwEFAAEA" + "AADcBQAAHAEDAAEAAAABAAAAKAEDAAEAAAACAAAAAAAAAAAAwBIAAAQAAADAEgAABAA="; + +static const char fontdata_6[] = + "SUkqAMoGAAAmoHVf///////////////////////////////IZAUfsgeBdyGdyDjkMgI+QPKC" + "GIO5AhzOgyGiCMcgYtUrIKHohowhschs4hnwgXcgRQhsgguQQXwhov6/QYQI7qgRUUk2QIfV" + "F5hQmmugqCMTCBHj/9F8j9JuknWm7rSbCBFPLtou2sjhlBSOKkE3Qf3+kv9fpcMQaXY9PTwR" + "T6WvpX/0v19aVbeQ0D6X7+v/X//QIQfj6xSS4QLS3xx69IVtL/EQy8CvbSqhq4I7//pJeVnT" + "Dr/+Niloufj9fpJLxalYrDtdr2DGk/etf6CDrkduzQkw21/w2prRfYZcNbj1+kQMQuL03hF5" + "sQRT+CEMMj7pAjuk/5DVDINfr+k9b06Stj+GXgW6pN9/kNsdL/XQg/+nSx/0v20vxSv0v/S3" + "/yDA/19sV/6WkQ0D5DY/6+lkDyf/SX9h65BRBDTdJ/StLILuk2lWkl399U2kw0Thpa0r7S0U" + "A7S20rSVtJL/iGrFMSPJv+qYoEaA+KBA4pikmKCWIiDVCINaQ0KiIiIiIoFhoRfSodbS1xbp" + "Id0hx8f///////////////////////////////////////////////////IHMFnMgTA0hyGQ" + "G45DLcg0jkQfyGQDNxBv5DLcg3QQ2EEHDIEaEHDIaDkMTJzIeZBJkEmTwh5kNmEPhB7ITCGi" + "ZDOghsmQ0IIbJhHUEMzPAh8jYOeIuRsEZFHCZEHBDhdoww1DLm0bOGXGwZccGXHCMDgwQMED" + "BAwQMEi4ZwQdAg2GEEbYYZc2EbYYZcwwjB5dmDgwQMIMJoNbQNqHuRxF6I7YQIN+6BBrDf+E" + "E//pf3oEG9tAg3vC9//126bQWlXh0gyODd+l7fXwv/0u1gio0m90m916x9uu60nXXyB4G7kN" + "tx6JwU9oEU/4944qP/pcEU8EU+37f7f4j/q6q2tpDXhYaShBBDer1XfJD5IdL/0vtf9L9L//" + "ergin9JukvIHk5BiAggw+kn1fSr///9L3r2/fS30of9r1exWqXp4QQYaWl9XH/a2vH+l9/t/" + "6X58mgN//r07dJe04QRDYGGGgvpVeXb/jj5gT8X7r7f+CX6CDD/bp6bXY/xEIIQw16Xq8N/y" + "5ZcvT/Lp/de3/j+2QMd/r/p0l6CDdf0h73//ZF7/w37r99/fuD/vVq9SP3S9hpd+lLj/6444" + "a/9v7r39L0tt/7Xq9b0vDDIbAwQQu2ElKHq/fr3f/2/dfb39/b/V6jjSb1Io/hhiEFbEECFK" + "r/euRR+//28ivxXt913XZBcf/jaevr8geTkCHDDCCIF3bEk9XpN6X7f/7f7+xtpbaW+l2l9K" + "3pfpqGGEErBhJfCTBk4wl+wf/7f9fsMJba7cMJbDSa9JvSX2sPCwxCQYQaFBikIQQwQMMYIG" + "CBggeCBsNCgg3CBhBuGKBA2KBA24hAgbFdOlYIGh+NCIiIiIiIiI4iIiIhxEGCERERERER9L" + "GHfVBF0Tgtg0dSBoDTYk+h40PiP/////////////////////////////////////////////" + "//////5A887IHkOQbLIE8EFaCGvBBmsgosgaDcg3HIbHwaIbIvVVIZTkGHVUtv9IOHRHBU+D" + "g5DJBx//QRTr69fr/+3X+I+v/pa//v/9N0Q2XnshsshsjIaMyGjMhlOQIHycZAhyDUOQy+IZ" + "xzWQUWUOQYc7kGMyGdyTkH41kH4scnZB4JwQxhrIYp/64hF56DCLzBF4aLzQNF8+DyuCguuF" + "Kw/ApXIvMFTCI7FhU0XmgYUL/ap0tow3/6TdN2XCTpB0rVJqJHmHD6BYbNhoDEjzSbDDLhJo" + "NnHSdQ4cMJoMJQ0DpBphVC//x9v/ScMEkwqf9Lpp6dJum18cQwX3V9XXWv/pN9OkKX/9f6X1" + "1/TpdX+6umrDdRSS2yBGFv4iQZu/9D//4r//f/58CP3XI/p7pL9F9peEYv/zAF8NL/hFP///" + "/t/utrrutN6SQYr0F//7Ff+3////g3/11dJ+l+I/+ld7ey4KP+3//fpX5DOOD/3sb8j+6X/9" + "en1+v/b//dLr//Vuo0rY0ib//aphKGYdtAinbLfROC//Yf/8NKGEmwvaUOwvtK3SX/7DPcUG" + "NjhsUEHhBwwg8JuEGEGEHDCDhhiopiCKcIOKeJHTd8JNuh/+IiIiIsubERxEREREZcNKIiIi" + "IiNDj+En/X/IbQdf/+Cj/9Npd6SXq3WLDSrwSEdigkEGCDrEREf/////////////////////" + "///////4AIAIAA4AAAEDAAEAAABBBAAAAQEDAAEAAAA6AgAAAgEDAAEAAAABAAAAAwEDAAEA" + "AAAEAAAABgEDAAEAAAABAAAAEQEEAAEAAAAIAAAAEgEDAAEAAAABAAAAFQEDAAEAAAABAAAA" + "FgEDAAEAAAA6AgAAFwEEAAEAAADBBgAAGgEFAAEAAAB4BwAAGwEFAAEAAACABwAAHAEDAAEA" + "AAABAAAAKAEDAAEAAAACAAAAAAAAAAAAwBIAAAQAAADAEgAABAA="; + +static const char fontdata_8[] = + "SUkqALIIAAAmoHcGf/////////////////////////////////kMgMsfUgeDaOQLjkHHIZAN" + "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" + "jAbFVthw+gsG4qwbbSsGKDYQQcMSPJRSBwd6dPbSfpL/6f6tdXqx1YVf6XTCevem168GYDR9" + "fSutLS/9WxeuqrV/9/wl/7pXXXQ/91p7pXjSW5DRhFH+sLuor///6C//33X4P91bl1pjdJKt" + "hovBr4iQPKn/x/X/F////7NAz/v0tavW9aYaXhG3/+YDM2l/zCf///+3+9e3TvSTeglDFegv" + "//bS/9v//+vw3/q3Wt6pf0PpfV3+xX/t//3635DNv9utb0R9t1X4/+vreyOGZ/2//+uvyGx3" + "/16elvVIjH//Xp3/X/2//3X3//WKjjSeNb/+10rtWyMfX/2//7q0rX6u1d2kraSr/3RdYaTD" + "LdsIv2GvJAZ/+w//2GErCCbCLr2EoNiR161b0l/9g0HI6FBimKg2KCB2CBwwQPBA2wQMEDBA" + "4MEDhhiFFBisETgwITTCg2vCTDaQ//ERERERZg2IjiIiIiIzAa8REREREccfwgg/9f6X+v+Q" + "ZK///0x/+m0sF0q9W0sW6XyGSGkOkI7YSr4rYhAkEGCDrFhCI4//////////////////////" + "///////////8AEAEDgAAAQMAAQAAAP8EAAABAQMAAQAAAFUCAAACAQMAAQAAAAEAAAADAQMA" + "AQAAAAQAAAAGAQMAAQAAAAEAAAARAQQAAQAAAAgAAAASAQMAAQAAAAEAAAAVAQMAAQAAAAEA" + "AAAWAQMAAQAAAFUCAAAXAQQAAQAAAKoIAAAaAQUAAQAAAGAJAAAbAQUAAQAAAGgJAAAcAQMA" + "AQAAAAEAAAAoAQMAAQAAAAIAAAAAAAAAAADAEgAABAAAAMASAAAEAA=="; + +static const char fontdata_10[] = + "SUkqAGwKAAAmoFQGz///////////////////////////5DIBocgZg0PkDwy3JvkFdyB4Qchl" + "DkGB7yB5OnZBQ5J8hmckQ0rBNUyDSOkQWnIZXkMqZBrghs0INDkM/kdkDfsLqqhGYKDEHp0k" + "G0HkFEwoQaaqCcWQzzCMMPXfwg0m0gi89KyCgekkYmCpppYQKgjc0m//0Yy8/16VtP0EGwqN" + "to22ugtBBtJv2vpLdJtJJ1SbTpJKwjnoOgg2swGmFLgiStb3+lXf/69v1bYLpuuR1pLVX//X" + "r/S60mwYorKXH/dfS69J/2vX/9UvYyGU699PXXpa/3//4+l1S2EcXqvXHX1qr/8RIMCP17SS" + "pwggnqvj1XpClpf1+3SWlS2l/v6S+btbr/IKbknv62KH2Fel/VJeEGlTDS/1W9tJKiGL8f/1" + "Sri83qxVr/sQ2K1JBpXel/RAuOFXm29On//YMUk/dhf+qEOuEHQtWG2v+w9GEwZuXj1/Uuw1" + "6bnzaSDtF1/wbSI+Sdx/X9IQ6WPCb0YbYr38MvvCMTVv8gqlyGsR/pX/ukkHaS8gqiMOkk2l" + "f/pfpOlvXSTYa/9/b2/yBO9f9cTQMzuu4/RBSgnHpJe2l+KX6Wv6ST1j//7f/2lpdf/pfkM8" + "el+xVr0/pEMofIZV16+v//9tda/pdZAh1vS+sge4/0kv3fyGbBBVeutK126dLtJLuq+ttJuH" + "+FTV/SOR19dJPSWqr6SX2gyx+ur7S0LbS20n/oJf8PS20mwjeNtf0noINYMJBBwwk2kk2kEF" + "texFJBiExCYXXTWwwkCBrEIEDimGEErDCQILERBgsQwgafFRSDEIRDCEMIMUIYhQWQyAaHER" + "bSrERER/0q90tfukqxbWh3odtLbSxH//////////////////////////////////////////" + "////yBTDMpkFsFhyB4YOQyAboILYFByB4hyB4vkMgCIK4iOQsFWQ07IZxyBEeQyQ1PINNLIZ" + "icEDIMeWcgoBkFy4IGQIIIoZByCDhkHIInkMEEDFCGyhBJkFzggyDcYCDINxgQMgwoIIGRDk" + "EIIp0O0MhjrIPyZDCj0GCD4aOEHEN3CPDDaDTQaapp6bwjxByc2EeIOTmGEcbw1TTT7ppJ1U" + "4B46aPGGmQabJeECIJZDPZEmDNhIM2JQIHBggwQMEDBAwSBAwQNo4DdkCHQIGyCiw2gQNkFF" + "htBB5cZwWGCIMOGCBhBglBggdBA6U2Ca5c2EbDvwbSayCZh8Ogg+/6C329JvbSb3SD777/q3" + "TdQq9INoIN/oL2/9J//S7W9IN9pBvv//tJ720m0tL/SbT3X2/9L/9L+XXSvdK90v//1p0nrS" + "+npuXX0vb66X/9Ll0176b/b///eu++1/yGQxyBwOOk63+++ONV/6X8uu3r+l/iOP2t6uk9Cl" + "4WHqR8e7r6SH/Uf/S+19v3/f/96dGF7q0kvCw0qCBAn6vpff//pe9e39/3pX/a9XTaTql5A9" + "wQ2QEmHWgmKer6X8iPkR1/9L7X30vSS///991bpL1TCCDBpKv76Vb/9f+l719+/W+lD/erXW" + "K0v7wggw0qS9K4YIL////QX3+3/pfpMoBq/a9XTTapfWCCIFy4MNL694g/44+P9fdL2/8Jfn" + "mzoGZ96dX+6S92ggsMNLS9bmyD///i/v9v/P/6BMP+/r22KS8RCBCGGl+teDf84POD82DH79" + "1//5HDL+Gw3+6/a/XhBBhpddK+/9PT//N7/r2/8b9yGpT/q1ek2l9BBuvS6vu9f+yDuRj/+3" + "9r7ff/2D/2r16MLpfT9+kh7/X/xf/t+9e39fW2/71q2qV6XsML+qV//jjkCM/9h/a+36+u2/" + "/9dU3peGDCCbdtalw/2/93/9v3r/f2/b/20r71frwwyGWXBBVbaL8JK/+l9//t/a+33X1//7" + "G+levhh4QIXYqKNFX7fWQR9v/9vIO+9e3uu2ltkND/rHUaTekQw/hhiEE2IpK+l6///7elx+" + "33X+313TXX6X5A9uQUQGGEEQa4tKr9vS/b//b/a9jbS20tvX16dJvS/TChgwgk2Gkr6TDILj" + "4S/Yf/7f/+2ltpfdbaX6Tfr90GwgtsJd4JNhcEtLb//b/r3YaWw0tu0uDBJp9fSX/B4WGeNB" + "NNCEGZkghCCGEGGZlCDCDCDwg2GhhN0GE3YYJBBsMEEEGw4YJBBsV00kw0Gh+1QeE0xCCDBB" + "hBMQkCChBsQggwQYQeEG2FBA8IGCBuGIQQYYoINuIQINr8JWCBr4qIiDCERBhCIgygDw1IiI" + "tCLhghBghEGEIMJrxER+hEaERDiIiPpaB/0g/SIGwCcdJFzOgGgr6jEGvGgamgH2EL4j////" + "//////////////////////////////////////////+QP6EDob+QPBoHIElkDw9kCyyBJBA8" + "F7INVkDYDEZDLjyGVCZBXmCqQZPIaUENEAoKlt5A8sTSfV00/S2/6BwdF3D+Dg//pr6Q/+QW" + "wbj//MKvrtNeC/9JN1/iP//+vr//+k3////9r///+k9ZeECzPy+IZY5BuP5AuOXhHhDKHL4g" + "tOXxBowscg3HLjIGByHHIG9CMci+Qzv/+3BEMyeEGQMUCGQLzyBimgwUgRmRewVNBgqDIZXg" + "qYQsFTIEUyGzAUgucuippgmRLIOcuhDFX/pYhPTChGHCNzROBBuKAXpgoLoLBU0wVMIwwwVN" + "Fzgqow2icEgoYIGCDBYMK0EGEDClxP/7YRtvl20YOgg6CDYVBNaMXfQXovNGK6MUIJt0XbCT" + "WqCDhX336B6apJL/0ug3bpB0nSsGbDZZsNghBsHB9BYNhiE2GIQbSbBsNoJwYkergzYN4P1p" + "9pXXX/q3vTaWrr6V1/pf9at02vTX/t7fTaT+l/9Y/rr0370/6XTT0/fr44/6WnuukKpdkFFk" + "K/pN+9DWv//6C//S/rq/7+XVJum9Kt0DXxEF9V///9f/991+ZgY+6Tf8VrQSww0YwaXkDwOE" + "f/H3X/H////sH/+k2k1dJN6SQYrwjj//Ng1dL/m0////9h/t1/tvpN6SQa9Av//ev/b////w" + "3/rpN6ekrelQ+v//sMJf+3///X4N/3t+lt6X4+l6V33hiF/7f/9+t+D/ulr6L70q////+XBp" + "/7f//XX5BQO/9/TdJNvpER//16d1fS/9v/919//1emONK71r//0rtb1/9h//3Wla/XrHWrxS" + "S//YRdbpsijtourZFfT/9v/9+0E2vrZ3hourW0k26X/7aWgwgmGFYaVsMJJzWBDtPTYaaYTt" + "O20oaTYRhUGnUUxV76V0kF/9ioOXQpigxUNiggbYQOGEDwg3CBggwg4MIHDYaCimIWEHDCCa" + "ah9OrDeP/2ENBoNMIQwhbERxkcMgYqbQTCxDEJpoX8RocfxEREUYE4jiOIiIj/2En/r/IG5d" + "J/1/////H69JtLIH9NJf3S6uq9ISh0CxdL8gt46iO2kl6FbYSCQIMIHWGISCTCbWIiI/////" + "/////////////////////////wAQAQ4AAAEDAAEAAACoBQAAAQEDAAEAAABCAgAAAgEDAAEA" + "AAABAAAAAwEDAAEAAAAEAAAABgEDAAEAAAABAAAAEQEEAAEAAAAIAAAAEgEDAAEAAAABAAAA" + "FQEDAAEAAAABAAAAFgEDAAEAAABCAgAAFwEEAAEAAABkCgAAGgEFAAEAAAAaCwAAGwEFAAEA" + "AAAiCwAAHAEDAAEAAAABAAAAKAEDAAEAAAACAAAAAAAAAAAAwBIAAAQAAADAEgAABAA="; + +static const char fontdata_12[] = + "SUkqAFAMAAAmoFsNP/////////////////////////////////kMgNpyBoLGQPBocjfIEkED" + "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" + "8RIHgYPv/DC//+v//7/ygDH/dbprVIJYbRuBhLwRmv/x9pf8X//v/7B/6V17vShh4QVBj8I8" + "f/4L6/5tP////Yf7fq2vfTeqQa9Av/5wNS2l/7f///+G/9J66vVK9KgYXpf/+w0v/b///r8G" + "/2+9+26Sf8fX6u/2K/9v/+/W/Iav/6WlaSL71S/H69f7wwv/b//66/D///pb0v//16vouGp/" + "2//3X/yGU7+rdOrGrd9EKP/+vttr6/+3//daTf/36xVJNukkv/66Xe3pf+3///Wv16sfpXGl" + "//aLraTbYRhYZCPp/+3/+2laTYX1u0XWmnV9L/+wl3CbIjsMJbDCXIwG//Yf/7aVoKGEbXus" + "zthLfqm2kl/9iFMwXBhJhhJiFMwzjIMEWQYRBkMEZBghhkEIIYIMRMwwDg2GlDCTELIMaQwS" + "ioqZgY7glB6H/7XL4pimlYVtp3fbV3dp2xCimF6EJ2uq92v/2hoMIMINCGEIbERxDBCIiIhh" + "TeEGsQwmgwhd6EccfsREREIwE4jiOIiIjX+Egf//1f9f8gVq6/6////S1H0vSb8gfo0v90vu" + "v0m4WLrXkFsGsdRHtJL7S2GCCr4rDFEDwUYQyQ0yCCqGlhgqXaxERH//////////////////" + "/////////////////////4AIAIAOAAABAwABAAAAYwYAAAEBAwABAAAAeAIAAAIBAwABAAAA" + "AQAAAAMBAwABAAAABAAAAAYBAwABAAAAAQAAABEBBAABAAAACAAAABIBAwABAAAAAQAAABUB" + "AwABAAAAAQAAABYBAwABAAAAeAIAABcBBAABAAAASAwAABoBBQABAAAA/gwAABsBBQABAAAA" + "Bg0AABwBAwABAAAAAQAAACgBAwABAAAAAgAAAAAAAAAAAMASAAAEAAAAwBIAAAQA"; + +static const char fontdata_14[] = + "SUkqAKINAAAmoCAz/////////////////////////yGQBw/kMgGYcgw5DJBpvIHg1wR3kCuC" + "B4NFhbrIHiwnZAxZFjIafUQ2+BJJshrRkGnyGtBBqmQ05kNqyBcQQ1YINyZBRMhpfhf1CMwz" + "S5hqg9W4aggwoIGCDCWC4QYIPXrwR1BQm6Wkm6pGzYKmn2EFQRsgwjhB/9UjeXg0m1RifVkM" + "t1VBNhUGE1pAtBBtBN//hBYdboJOkk2nVJNgj3R4s8b8JUk6TftfpYfdafV09VbQXCDcEHWX" + "BWCmAIraTf/9eldL0ld1VcLp6bRddKkqff91Vf9fXbDeqtwum0v9L11v/+v+uqSwxR+rx/3S" + "9LS+vfqtf9da7DHr+/pel/79f1/9dKr5Boha9Lr/9L1/a/8fXSqsI/ev/HS9Kkrrv/IZ0n9V" + "aSXYIEU467ePX6j2v+I/tqulSulfX+qX0ldf/e9U6Q9wr1X6pfJ+u2l/kFqyO/tJYr2vr/qv" + "BA9JhpX/XeG0qqtq9f1SS9NIl3DS1/pg8MQlyJWuP/9JfF4QaTFN//EMaVd36/SIZrhNLnCe" + "EGob1/2U4bUJ/cLX/iDXQQb06Ydr0uw6RvZCaePX6V106EwdK2GF38NqQnJOzgE/1/SkcbS2" + "nhBtQjc2JfX6kGrSgjDDW3/r+hDfi3CekEG2v62XmoQTdN/kDgCIKtS/pOl+2qQba/IHCTD0" + "rat//X6Ta/XSuGEl/htaur/0v9et91SbH/+l1evIH0a/pOhJAaf0t/ogtWRY3Wm9v/GutLX/" + "S0sdfpfbS/X9L/0t/r9L9v/pv63r19L8gXH//tL9ddKiDVn9fX19JfbFPXXWkQan+npekv//" + "99df0tLIbHW+vXIHjj11S6bf8hrWQJHp/Sb/rVfS01/rddu/BUH2lpaW2k9JNpJa63pJX3D6" + "6TX9IoZddrf+gvrvS3psIMk7/9N1odpbpOkraQS/70km0mGEcxWvWrpJqwwknDCCbSStJL+o" + "PCW2EmKDXWtUwwkQy06xCINQyKYaWGGEECC2vDEQkgxBMINN/TSsV9bCYhJMUCBYiJBppiGC" + "DC0hxoMIRBghYIMIQwULIZAHDiIvpKIiIj91X7qtfdUvuklXtrS4t0o+lC20h263SxH/////" + "////////////////////////////////////yBlyPyBmCy5A8NUMhkrQgaA6CB4NKCB4ZhyG" + "QBxZCDkHcg8EUcg3cgr35BbB5kGw6kNRQQ1QZAgwQaBogwBkGgGQ0VkPWQxWQxWQxWQShBes" + "g0oINBBDCCDcMhmJyGWrIaichmKwQMhoEyD1kEDIPUQQiPjIMTIaOIL0IKMIEDc8B4WCBggd" + "sMIMMgYZkOCDDQYQaDCDShoNwg7QQMMGEDYYQeGE0GEGg0mGk1uutMIPBnthGYRAzwIGQaMO" + "nIKMPWEZhiQL8DBEMrgYIhldOBlngbcEDZDKgIzEYM8EYRmIyGbhCURwJwZ4C5gFAIGEGCwY" + "QNoEHSr7CMxA03ISYQIgxjkGJ5BiMgvCBB6apqkqtK9AgYbg2gQMPBsIINTAU8FT70/T0G1m" + "A2L5gbRwF34dBB8N/4QT/+gv70E3toJveuv/XT20m6pfSDhBBhp7aT4b/pBV/6Xa3oIN7oIN" + "7aT/+3X7aTpaX02k/ul7f+k//pf+k/aT+v1/+qT1daX/TaML6Xt/6X/6XMJowswnre63vX/7" + "ave2rpaXi6Tffpff///hL/9vSb9Jv1//6/0m168hkA3H0np/r3xxS//S9tL2/f9/xHH/tGF2" + "6ehXwpA/foh7bW/Ue/Uf/S//b0r9K//20vtK0rSS8LDpIEzZ19Vv9f+l9pf+/7//+9e6vpeF" + "hrhHmR/at6r/r/6Xv+3r9L9X+2lq3t1aSXkDyggYgJMHSSCjf+vvIO+Qd//0v0vb6/q9f/79" + "LSbSr00wggw10mtJ9Kt/+v/QXt/t/ev6V//pPtpevqmEEGGlr/eEl//X/0v0vb1fpX6Yf7aT" + "98baSX3ggQYaSSXpPhAv///9L2/2/9L8JSQCr/+vadJL/CCDDS6r7j//+P9L9L//S/CTNYa/" + "3S1dJq+vpoIIg0AQYaWv1yXDZ+OP/0/b/b/wl+ZDIgNP999+6S+00EFhh116vOCB///xf6Xt" + "/5Z/4Jh//pe3el4iEFhhpaql3g3//OAX/ft/t/8L9wb/bSferYpLwghBg0F9aT7f84D5wH//" + "Ob/S9v/H9shr1f/1arpeEEGGvX97f1///t+3///7kFU/7pWr6MJtV4QINpeqST7////7f6Xt" + "9/f2Df9//7r8IPX1xfd6/9kNGn/t+3+39fW2//ulaSTel9+36Xu//7//t/17e/v7b/tpe+k3" + "pfDBf1pf+scchld/7ftr7fr2u7//1ev14MMIJvdUpgGH96/b/+3//919d/71a9U3peGGEE7d" + "yOqSX79e//7ftpe3v/7f/avuqV6+GDINYEEEO2EnCW39/9//t//t91t1t/09aV6vpeGHhArY" + "qKLtL6fSyGd9//28hoftL2/X12yDd69bX/Sb0iGx/DDwQTYaYSW3rel/f/7f7/t7dbdf/f8b" + "1V9fhhiEE2IpL9N6/t//hv+K9vbXtdv/V6qNX0vyB5QQy7DDCCINsWtPq3pft//sPXf/tLet" + "vS26jd0r1/TBIGGEEm2l3pN6X7f/7f9extpbaW3a9r1Svpfrhgwgk20l9JhkNj4S12H/+3+/" + "u2lsNL+uwk19N6S/dBhhBbDCVN4JMMJYIL9h//t6XXuw0ttLbhhLYYS/Svpf8PBYYMIJO0KY" + "MFQhIUmwYVNNPTbQ03TTdhhBJsMJJtwwkmxVNOraaH9JB4TTFEFAZDGqCDEIIIg0AZBisMUQ" + "z1kPWQxXkNlbBhSC+mQlRDGmGKIZVYZQwiGVWwcQiDTW0/QJQZDKrX2sPCaBgvRTg2BIhA0u" + "GS4KP+/te4YLDEL2Fhr+n/xoREGCERIKgYiJBVDERxERxEODBCDBCIMEIMF04iI+oiNCIkDw" + "1bEREfrCB/WEH60gf0qMMH6VIIGU4GoKfSIEsGKCDV9UQNA9IeNA1JAHnhD4j///////////" + "//////////////////////////////+QPkEDMFW+yGQBPBA8NSAmQZ4IHhqQQ2oIEoDFkGuC" + "GlHkDwN4ILMyB4NM1ILMyB4NMyGrNLYeQPF4g14kFC4UgqQQLwFCpbe9pEGbiB4NfIu5As5N" + "Mg34hr9X+qu6Qd1t3Xb+0vUf//9G1/S+vIGYZj//tr67TXhf/S6/xH1//bX///9L/X///bX/" + "//9Lr///9Jtf/////8l/kNTiHwg2f/+k3LhpGgZclMhqeQaJ5Bp/INU9BkGiCBeMgnZDLgIM" + "IMhmwgyDXMg1QSmQ1KE3IF4JYQUHyGbBBdyBGhJBDXchrcQfCC4ZGggwE//xCDwgwQMIYIPJ" + "OCD0wUF1yCj00wVMEDBUGEMFCgg8gY8h+8hjRSEQE1//9JsJ6YUKEcMMIYRsjqBFMhsOC6BY" + "KmmQ0HTRsgwUINSDB1RgcI6BiCgz4OCBnwSDBBtAgz4OCmARf/thGxvTCOFCODoINhJJrRg3" + "+gvRt0YN6MGwgg3phGxVqkGgvvvbh6dqkv/S6D6MDaCDoIHS9J9BByBjCDfNLIGJhtJyBfEE" + "HSbIKMRgVoIHIKMVJ1IaMIJnTrTaTpaX/7e8Qm0mknSbIN8VnAMCn/S6YpuKem4hB0uJdpcg" + "oz3+9tb//9Lq6DpaTr9XV/hBdV1avTaXQff+61S66pL/9t3r/6b1en/S6aenW/Xof/dW/bSd" + "dL8gpD+lj7aTrr//+l//T02vVj/1ownTaV0KSW2QzMv6b/xr///0F//39ff9r1r060luEDXx" + "ELuq///+l/+vv/B/vTa3TFeqWw0DS8hkBoI/+Gv1/xf/+/r7JAZn7+n2m6Sr0bMMJeQyAXmb" + "P/j7X/v////Z1Av90v19UmHhBJBj8I8P/8iAMXr/nE////9h/3tpN03dJN/QYXoL/+cBs2l/" + "7f///+G/3S/W3XfSSBr0vr/2GEv/b///r8H//W6+kr9ofS//9iF/7f///+Q16f39Poum3pfj" + "6X93+GC/9v/+61vwf90m10lb1S//9L+9mA1v+3///X7/39N6T3SX//07r6X/t//v+/kMt3/d" + "LX0rdVId//11u9vS/9v/+0tK//19jikm+q//16bbX1/9v/9/rX69YqnVtvS//tdL0XWyDj6/" + "+3//aVpNr39our/XFJf/6L+GgmGQo7aW2vf/t//t1DSsIwvpWW8NL6pJt0l/9sJcMJMMKwwl" + "sMLyXAv/2H/+2lDCCYaX2lFMVbTurdKl/7EKDiExTFScNAogRrDIMazQMHUGJAjVsg+pDGpt" + "JOCHUQ0DQGEopiFkCKoYSdqThlfBKD0P/60Y07WGFt/+wuv9iFCDXxCaa3pqnf/8MIWgYQME" + "DCEMEIcRHFghEREQwU5BBhYhhNBhDT4jQ4/iIiIhGw7xHEcRERH/0g/9f4Sf//yB+Bf+l/6X" + "/9f/+ra+PVfXWCf/q2uC6r9NoLpuq9RHHS/IGeOltpV9rtpJehWwwSIHg08EDCDrDEKECDIM" + "tVYYIfaxER/////////////////////////////+ACACAA4AAAEDAAEAAAATBwAAAQEDAAEA" + "AABKAgAAAgEDAAEAAAABAAAAAwEDAAEAAAAEAAAABgEDAAEAAAABAAAAEQEEAAEAAAAIAAAA" + "EgEDAAEAAAABAAAAFQEDAAEAAAABAAAAFgEDAAEAAABKAgAAFwEEAAEAAACZDQAAGgEFAAEA" + "AABQDgAAGwEFAAEAAABYDgAAHAEDAAEAAAABAAAAKAEDAAEAAAACAAAAAAAAAAAAwBIAAAQA" + "AADAEgAABAA="; + +static const char fontdata_16[] = + "SUkqAHAPAAAmoCQP/////////////////////////////////IZJx0QyQzjkM45DJA3vIHhr" + "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" + "/0/f+/8JfmIYP96un23SS9poILDDS6rSeeCB///xf6Xt/5ZH8Ew/73XXvS8RCCwYaX6XeDf/" + "88GX+H7f7f+wX7hh/69XVsVXgghDDrX0vb/ngfPA//57f6+3/j+2Q2hH717+6+EEGGl0l77f" + "++//7ft17f/+2QV9f7W19PS8IEGHX6S3v9b7//t/r//9bkFNH709NqjabSXwg2v/T93///+3" + "7de33Xf2G/7/6S9L4Qer1SQvf1/7IN6v/b/X2//9sP+66V9N9fa79V+/X+9/+37de3v7+2//" + "Xvrevwwv6pX/+OOQzJ/+3+vt+l6W//e2ukk+l4YMIJ7fVGwz/vX7D/+37df9/f2/7pdXpN6X" + "hhhArfRdUqf36///b/X29//b/7/f768MMhqiYIJrbS0Et/f+//7ft17fpb1t/7paWqT6+GHh" + "BC22lpU/vpff/7f6+339r/6X33SV6RBRHhh4QVsUxCJ2t9XrkG77f/7eQUPt17e9b1tkC8V/" + "exv76VeDB4QThhMJa9W+v//9vX/77S7S2/73Sr0m9L8MMQgmxGlf70tdv/9v+K99v39vS3X9" + "ikr6/IHhYINEBhhBEFS7S70m9L9v/9v9/b3S20v/umKrV9fwmChhggSbaVP03hLrv/9v+vY7" + "S7S29L136b0v7UMMILYYSW9WGQLvpft//sPS3/bS20tu67S90r0l/oMMIJNtL8JMMJYS1ww/" + "/2//3YaW2lt2lthWqpX0v1w2gsMMElbwSYMElIOfW2Gt3fbarbXuGwgrYaCu7CVsGEv0r6C+" + "6QPC2DCSpoQgxoQkNWDCqq6txrppuwYSUMMElbgwknFe6tpof1h4TQYhEDGpBisIIMIIIg1C" + "hBgQGIRDQIIIIIYEZBuIDBhSC9TRDjCD1OxCIZohiEQzRDBxCINYwNNNUCTBkMsQvtUHhNBh" + "eiXBVClWGrwZCAX/7r/4YWGFuGFhhf1/44iIMEIiDOoZIaDUGQEQiIuIhwYISCmGIgwQhgvx" + "ER9IRHERIHgrwIiI11hGgGwCzroO+qCB+loP9JGCNQGwGXpECYGYPSCBkuBsBt9Q0qBr0ooS" + "GciHjQMJHQDx6IGobv8IRx///////////////////////////////////////yB49PIZIsED" + "wZIIHgxxA8rIHgqWQVrIEsM2yGnZDUvyGQoIM8yB4KnhSB/MgeDZMhtTCWw8geCTIamBIFIH" + "g2IUgzEEFeCGXAKC1t7rXrpp+v9WpA+4geCryMHIHvk0yBfiCp1b7ql6Q/+vf2vr///o4tel" + "015AzBmj/6tf9prwv/q/64j4X/0rS//r/vf9f//0rX///+m////9df///6b////1dL///+rg" + "iGpTIvkG2ZDS/IaX5DUpkpkNOCGXGQf8hmOR+QTyGnBKZDXoQ04I5kNqhJyGVBLiBc+QanIZ" + "4IZ4ISCOCOCDa5BUwgvxBeCJBFciuQz8Qxf/q4gg8EDBAwgeCB4IPCBgoLrkC/BBhBgoQMED" + "BQgYIGFBQoI1gokMzgWOMg9VkKGQwdY44//qwnphQhhHDDR1BQbJnnpkFCCGdGlkM6EGgyDc" + "hMI4QZBuhNDIEIVGx0ageQqAZoGAQMEoMJuCDBBhL/6unphHChGxwgg2FCCY9P9AvCp6aCDe" + "gwjg1qEg0F9pphbCB0mg1MBhf/Vo2K9GyYQQcIIHScKrWjZMgY8go/QWQUejhsI4bIGPRsmk" + "2QL+jZNAg5BR/ThSBHkMe9PbtpPX/+r0H0EG0g6TpXLx4MtPEJ3fS2IJiE7EJ0m3QINhIO6p" + "Pu/6039aX/pXvEJtLSDpNj8+GWn/S6aenVuKDpcS5pXIF+9tJu1dJ1pL/6em6etf9J6b/QXT" + "TdNpPTa9P//61aXWl/63/q6Wl/1/pdV19/XQ//dft039Vv9Nj03/7evv+l7vuk9Nr9j+6ujC" + "aTpaQqvZBp4gQ/q/6Qpa///hL///S6v/q/7SvSrcINP6t9////9Bf/97/3+2vTdN06SSWw0D" + "S8RIHgrU9f///0v/1//ZQDX/3XVj9IILDDQa+QyAatP15OJ+v+L//39fmoMz91dfTdbegpsg" + "0vIZAZlDd/8ff/3////sH+66tpPqkw8JJBivCPj//KgDF0v+eT////2/+nr3fSb0kga8IF//" + "PBt7S/9v//+vwb/bW1bq7SSfqg16X1/7df+3////hv/r9b9K/wwvS//9hhL/2////8g2Eft+" + "l0rdfq0P/93+GIX/t//39X5BUn/pN7ejG9Uvx9L0v/Bgv/b//61/D/39apNvSX//7v3y4bf/" + "b//f6/IZkP+6Wr0t2qX//1d74S/9v//X2//19+1Sf0iGH//XX1vS/9v/+60v//bWK6Stuv//" + "+m219f/b//f1tfrtetjpvVJf/sLpdq3r/7f/9pXTa/+sbWk2xSX/9owtoJttGFhkHfT/9v/9" + "urQTa9pWSHbRftbS+lX/thBcNJhkOOwwlsMJcqwyv+w//20rCUMI2v9pwwl9aTbS//xXDCCb" + "CsQrY1hra6sGtrrbaUNBMQtbSYpit/VvSBf/ak4ZzCFMbUkBsRDPU2QYrlAOawzyBFbkHrIP" + "WauUA5rCFAbGlEINZAhPDCCpqUBmp2gSg9D/9hdNNBrDC2//YXX+xCnkmF8U01vXTtf/hoaB" + "hAwQaEMEIOIjiyOGQCwCwwgYWIMEGgwh/EccfoREREI2CPEcRxEREa/wgg///hJ/6/0n/X/I" + "HiiX///pdfT+n/+tpePX9fhfX1bSyB49NKvptL7/1IHg1wEYA1CxdKvSEdtJLyBmDU/2l/YS" + "2wkl8eGGEEQPDXcJBBhBpYYhMQgQMgUVwsGaAeCsF7WIiI//////////////////////////" + "////////wAQAQA4AAAEDAAEAAADOBwAAAQEDAAEAAAB3AgAAAgEDAAEAAAABAAAAAwEDAAEA" + "AAAEAAAABgEDAAEAAAABAAAAEQEEAAEAAAAIAAAAEgEDAAEAAAABAAAAFQEDAAEAAAABAAAA" + "FgEDAAEAAAB3AgAAFwEEAAEAAABoDwAAGgEFAAEAAAAeEAAAGwEFAAEAAAAmEAAAHAEDAAEA" + "AAABAAAAKAEDAAEAAAACAAAAAAAAAAAAwBIAAAQAAADAEgAABAA="; + +static const char fontdata_18[] = + "SUkqAEARAAAmoCq/////////////////////////////////+QyXe5DJDVchncgthMyB4NFk" + "TMgeJBA8FKE06yB9ad5DbxIgScCpNkFYdSGnQgrOQbKENqhA3ghmWQz2QVRyBxZDMoQbJ4XU" + "g0YQl4IHhBhUm4OggwoIGCBhYwQZBuJggYIHhf1CJwazjaSdJNpqEGFQaYWgSwmg9d6yGanQ" + "Qb10m+gjxMKEGEGlhAtHhhhHyf/4QaVpIw3rZBpelQQbCpp+EFSCDaCDe/XSOMwbSfSDpJN3" + "1TYKqMyraC0nQTfT/pYaW0gv06dKk4Iz8+K4Qb9BUk2k/+ugt9+npbTXVtBcINwnWYAnTNg3" + "77f1+v1aS+k3dVXC6em0YXSqkrSv99UvX/S8N6q3C6dJ/0tLff/r9/S6pJsN0RB6rH2/S9JL" + "XX/r0v//WwxRfqt6XvXpaX1fv9f+lqlThjrf+tfS//////6pbdf910vrS9X+tdf9LSWsKQ1L" + "pfr/9fuv/f/H+1rcIzH+v8aS9LS17/yGwU96S0klsEf2OvePpfj3X+I/2v0l4Svr/S/SStf3" + "/9JwkwqevXf9L+m6/rvdLihW6vpfpL8jmktpf5A8WyEu+6She16/rSXggekwwgr/XvbXr2E3" + "1/SSXgmpHPYaWv+3tpJNEGt/H1/0viHhBpMU3/SyGoYhaZCg/v/0gSS7oINWtf9ifDVCSC6T" + "/X+Qa9Pnx1Tph3/0yEAkpr3Ba/pQaXBBvTUMNtf9hpI4mD+PX9JpdBvRwnV2F/2HhBOQxhFj" + "9f1mBh/TxBB0gjiDYYRxL1wbSIP6Tdj/X9QgbSxdJtQgg2xX/kNVPhA6t/1/SF/unpINwvel" + "DMbSCOG1b/IM4vX6TaW9OqQOGvogzCmD6TaT/5BSEL+k6X7aSTbSX+G0km+/9f+r/r0nDBf+" + "/TpN/9V1paWRjv6VNj/+kt7deQPBe9f0nQj99XS8geWEJe/6t/61fpf+lv8Kv0qb7S/FX9LX" + "9a6x1/X2/+v0v/pXX/0v20v110t69fr6IZcf/vv9daVENXt+vX/9L7bS6/9SGo//S9Ja/1/s" + "Va6t+ldZAu6V6X1/+l9tf11069//pZA9RX6/T/5BWhddK63p0krSSwnr9JOtsP8hteQLMpv0" + "tLtL1fS7/177Yb1qmvWk3X7aXaSWv/SXTcHr0nTa6IGBDXbSvSeku+r0ttJhhFIBO/XXS1tL" + "tJ0u1CXroPSSdWwj3f/ptJNbQSbaTaSTaQQXXw8JbDCCiE1117DSIZsBBlusMJENSAg4YQTD" + "CSsMIIILetkNQgkmKDQYVr00rFRGrEKJrDOKYqmKCC2FqDEVgwmEGnodqmvhbCYShhAgsREh" + "phpCDBBr0hUMIRBhCGCDCEMKCyGScCItpdCIiI/6S+9VX2uvvSX9qlXvWuraSVYtpUO9Jdqw" + "ttIdtLbS2mFiP///////////////////////////////////+QEwate8gaApwQPArqIZINtZ" + "A1DU1IHgpaEDwZCCC3wQPA4jyC2DJMgpIyG0BkFdQQUCZDUKSBAuQ1CZAuDIYBkFwZDAMguD" + "IYDIMAyGpqQ19CGNCGYnINYMg1DRBUBkGsbBEYDchgQQwwQYLlOGCIBc1A5GAxIEVENnkMqZ" + "BihBp4hoK5OB4KJBbBU1IbYxODBEaDORcGpYIH//63hA4MIHBhBxX/+QXDUJrwsIMIPDYRoC" + "MMGHDhGgOGGCDBBggYQYLDBBuEHDCCMw4YYYRmHYYaPBA3DBBhMEGEwSYYV9112EGpBXoQiA" + "gQNEDFCD6EGs5B6EDByCUCBA5AxQhmUIZtCGbQhmUR8Gg0BSonDMZBrwIEDZBqOQiAgQMMg1" + "nIQgIINZBvQg0YDNAzQgYLIKMdHAb0p8C69MIoCB3QdBB6IaEMIhsthEM9oIGmmmmmqaurpB" + "NsIG0E2wgbSDzAOZg9qnp9yGUdIN1BV84NozBh7hsJB3BvfdBP/6W6tukGHhtIMPDaT/7v6a" + "Qbw2lST8INhAgbT3QT7f+En/9LvvSb2wk3vXX/dfuk/pekHSb+0vDf+k//pevpP9P6T9P/uv" + "aVpf/aCDae6Xt/6X/4QX96Te2k3t//7pd09OlpfTpN/r7f/X/6XazCek36Tfpf/3+rat1per" + "03ML9Vv/r/+lzCza7et7re//+62vaTrpeOk636X3/pf/pfaXt9P9P///dPe9XX/pXT+vt44/" + "/6Xv/et+t+uOP/zCpNpNpCl5DIBocgeDj9Ot/Q/6Q/+l917+/7/j+6Wt+rpJeFh6RDH3T9Lt" + "+v/pe6+3pfpf/9/vt1el4WDrCDNzrev/1/6X3Xt/f99f7q2l1pOlXhYapBH2//qv//9L3X2/" + "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" + "3rmI8DTd/Wm60qS/9Lp4p10nSfVngzQg/6XCYTwg6txTpcQnVx/6e90m66//b7ptL3W+rq/0" + "F003V03Ta9Nf+2utWlrpf+l709Ol/77/hL/3Xp66f/+r1bS61//bHq1/SfXr/S6p69utfHH9" + "906em8UktshpYQ2P6X7+v/+/6Xv7pe2vV/2lzH7S1S/CBw/2/0hr7//9Bf/7/X3/9+k2r1SW" + "2g0vS//1///CX//e/8H+2lpXvVqkltoNLxEgeBORvr/9f+v/6//shhp/991iulBAsGDRww18" + "hkArV+vx9//F//7+vynBo+3WldNN6QMPBAkgwYS8ETv/9el/3////sP/W999JJh6SQYrwjMX" + "/8pAy7f/zyf///+w//dLSt+m9Kg16Bf/z4K+0v/b////w3+3X3vapfpA16X1/7aX/t///1+D" + "f+tq9JvSvpYYXpf/+wwgv/b////wb/bp6tbvSv2h9L+7/Yr/2//7/vyCuR/r/oxvSS/H/1/8" + "ML/2//+tL8H/erSel36/9L6/vBgv/b//f/8P/a/apN2kl//+22r6MArf9v//+n8g1O//TpPS" + "Tb6//+l/4S/9v/+0tb//Vtb7VK70iC8f/r1drel/7f//9f/69R/vpJf//q2+3pf+3/+3Wtr9" + "er7T0k231//YXS7X1/9v//StJtf+1j40rikq//RhbQTDbRhWyBA+n/7f/7faCte0rtG1qnSb" + "df/20uGk3YS4YXv/2//20oaTYRtf7Juwwgt3pXpJf/sILgwgmGQsMMILYYXlIGZ/2H/+2lDB" + "BMMJfDSjiuvSt0l/9irMPFMUxVsUnDTtPTYaaYTtO2GEopiFoM0WEmqTenVukP/6jmEnakgC" + "6IaE7DIMDJIDBThokNCdyC6cgunLGSGCEYHJANxChMLIaBEQqakMGn0CTB6/+wtIMINBrYLf" + "/2F/+wp5INegmmFtNPW//4NDQMIMEDQgwhBsRHEMjhkhAsGEDCxBhBoGEP4jQ4/iIiIhHATi" + "OI4iIiP/hBA3/X+Eg///pf9f6T/r/ZA8OLf//+l16T1///a6/S+k9aj//a5Arq0q9JtL//wY" + "YQLdtKvSEcdV8gaIddtKvTS20kvj2GEkvrYYIIgeCsOEggyB6sIOtiFFEFsGRPE6AZgsLDCY" + "XsFkDYDScREcf////////////////////////////////////4AIAIAADgAAAQMAAQAAAIEI" + "AAABAQMAAQAAAIsCAAACAQMAAQAAAAEAAAADAQMAAQAAAAQAAAAGAQMAAQAAAAEAAAARAQQA" + "AQAAAAgAAAASAQMAAQAAAAEAAAAVAQMAAQAAAAEAAAAWAQMAAQAAAIsCAAAXAQQAAQAAADcR" + "AAAaAQUAAQAAAO4RAAAbAQUAAQAAAPYRAAAcAQMAAQAAAAEAAAAoAQMAAQAAAAIAAAAAAAAA" + "AADAEgAABAAAAMASAAAEAA=="; + +static const char fontdata_20[] = + "SUkqABATAAAmoDgf////////////////////////////+QyQy7IGwGXPIZILLkNA/kDwVrIW" + "3IHgvBA8FqE00sgeC9pp5BWhIFSvIHhpOQPDToQK3ILYb01TTINOELmCJwypBY8FVsgy2kQ1" + "6BSCocEDBSDQBEFfCBcWINJwQeF/qDCDSCD0m4eCBhSDZWEGFwTwQMIPC1VKQa6keMPTpJu8" + "IMKEGmuECwg0fIP3dcIGgg2kE9JukkeGwqDQaWECwj42EEG//wiRhpN6ON0lZDSetBBsFTXw" + "gqQQNoJv/9HnJetpIJ1201SSbCpo0JroLQTdP/+EFh6b1ekm060mwRp5mNwQb8JUrat//1uu" + "kk+laeklhBaBA6QdZsCsKcAwqdK/qukv3/pXuvbgum4TaMLpUq3T7u9KltVaS61bfpcLp6/p" + "Kqp1vr1/1/qlcNpJK2wvfdL0tf3//X/S+qsGMjvrHpuuvS6XS//6//SVWw0c6X/q6+lr/f//" + "/pfXhj1b/9L0uv3+mvX/9JJLyGtiX9PX+uvr+/VePpf7YR9f/XGkvqquv/1X+u0klwUi3pL/" + "/66Wvf+Qbi/uqWklVhGaY/Xj6XpD3X+I/37pVuCT/36SX6Vpf1/0lpQl6vS/qv0lbr/720u0" + "h7hX+/6XkWfVpfv+6pRVbXpL+kvggaqw0r/IHgmELd7aWwldq//SSrwg6qGEtfpW9hoJKu2v" + "S/0kvCakWisNL/Xg8MV5DNp43/9IL4h4QaTEJv/4wwSSkEUf6X6gklrhB0+v+yXBmprW//0Q" + "06l5mK0k1DDv/5JgUIJrvBf+lB1wgbwnTDbX/Yejyh1sdL/tLhPo8TW9fqgw0kmyC/Eu//0k" + "cGH9NxBA2kEGwwjaX6hvIYmleP6X6UEG0tp0n0cbYYS+lyGqESCDSd//+hbXF4TaQSBuK/8h" + "tJ8I8w0m/9L9J673VINsL3+YbSQQbSv8gflZA4Cf6TaW9dJBsNJeQPyjD6Te3//+k/+2lTtf" + "+G0ltW/+kv0rS+vScGC/9+nr/1+utcijv6STY1/6S3t1/SX6vEfuu6/7/q3+QPDZi7fpa/0r" + "/RA8PhC56VN7a/il+lr+tdY/+vt1//pf+krr/6X9/6WulvX/1//+2k9f1pUQ1/30vS6ohmv6" + "X22tr/6RBsH//9dV+v9uv0m/SC110vVf/pfsV/9aTrkDELel6X//9tfpfpXX06/pZA8Hj/SS" + "6d+sgy3uul+39JWklhB//utsN/BSB4b4lddNpeler6X1rpJX3DtcKn/pdbaTpVpJaa1f/TcP" + "+k0m0tItXaX16t0l+vpJOkw0GQg71r7+h2l2k2lVqEv+Hpba2EeRrn/S9patpJthJulbSQX/" + "D0km0mdWmKtfdJtJNYYSuGEmwkraQS/4eEttBMQg09de2kQaUiygwiGuTk5ptKmGEEEFtexE" + "JJimgwv+kmDBLWK2ITBgkrBgkCC2qwYWDBBhBp0hSDWGIXwuExCoMQgQLERIauiQhggwr8Ug" + "whEGCEMEGEIYUFkMkMyMgeC/EMu+qwZwMgMo4B4axwDg8B4axwG0LxEW1SxEREfetL9Uv26p" + "L9JfVvpL20kv+qSxbSUd1S26YW2kO2ltpb1tNYj/////////////////////////////////" + "5AWBqr/IGoNMEMgk5DJBaGEDYGKyB4FlZA8CjQgtgYghkJ/IGYMUIHCLIKgkCKsC5QCHQNcl" + "oaCWBqlIGYVAMFWGCoBcqwXKgCDoDBUBrmoFQ1Bg6g1EQGmVYaREwZCrDSIoCqDIGKEDGhDC" + "ghnGEMAyBCchgvZDRWQUYQzaENEyGlMhsBfBAyCuMWRYFYjYaBKcNPQIiYF//9reEHIuG0HB" + "hA4r//IMEZBcOuaAeGnCDBA+wg4Pwgf//94QcMIOGEH/+uE1tetMIOyDIKBFAPIKCwhpi5DK" + "FQigGEQzCCGaQQzCCGaQQzCEaBmkgFNokBlshpzCJwcMhpaEQgInBwyGloRA0fD8g3IINPkD" + "CCDTMgoRkDE7R8NDqvTCJAQNQzMEYQIhsoGZgQ2aBns0BiEaAXtNNNNIJp6baQIG2aAu0CBt" + "mgLsIIPtNO01YaIGEUQMISnwy9do0Ah3g6CD5BQG5BRbkG9oIO00000gmm0naCCDDcNhBBhu" + "G6DzYYNAxap91oNpN1BV84Kwggw120EHwb38JB//S/vSb20m90nrf+vVtJtKkvQQbQQbvcJN" + "Yb/0E//pdrekG9tIN7aT7/v970/pfToIN+2gvb/pL/9L+9Jv0m/S//tLWm1bS/90m19L2/9J" + "//S770n3Sb2+v/fb/SetL0m0E97r7f+l/+l6za9X3X6//3Xat02lpf6TaNr9e3/1/+lzac2u" + "3pN7pN71//rrTaT1pfT0336Xv/r/+l+v3q/q///71362vXjq6T+vt44pf/pe3Xt9X9X6v/9q" + "2u3Tpa/pX39ff//6C/X29X9X/Ecff5tV0m6FLyGQCm5A8ND9Pv0kO/pD/6XvXv9/3//1902l" + "apeFg9SGKE/tL////0vtfb0n9J//7XSfb3pLwsOqCe+3qvfr/6XvXt/fXfX+9P/pWlXhYapB" + "GZv0vqt/r/0vtfv//1v+1vbSbSdV8Fh1oJtb76X///S969vV9Vfr/f0v6bpLyB4eyDVYSDDS" + "0unSfS/yGeMhnhf/S+19+vqvW/+v9tdJL0GEwggw9JJ//S+///9L3r2/v++r/tdJtXSbWvWw" + "gQYaWsfTelW//X/pfa+3/pfpMP96b+rrpL7TCCDBpaXr4QS////oL+vvV/V9KH/f/sU2kv+E" + "EGGlpV7eCC//1/9L2/2/9L9JmoFn7paTf6pf4QQYaSX6XEwGn//4/0v0vf/S/CCkICn//0mm" + "6S/wQRDTKwYaWl/cgQZn8Lhf/X2/2/8JfkKdlICt+1dJvabSr6aCCww6+tJ4P+OP/0/0vb/y" + "xwQX5tWD/er/v196CCww0tf+Zh3///F+3/f+1/BMP+//bbSS9hBoILDDS6VJJvBh//zMGv9/" + "pe3/wX7Qb/dLSbS40vEQgWGDS//w3///37f7/8F+2Df/v/bVeEEIYaWte3hv6mYEZmBH/5nv" + "9fb/x/bIKYT9tbX09Lwggw0v0kvf/ff/9v3r2//9yCwn/66bSV18EEDDrpf+////9v7X77ru" + "tsgtB///zadJfCDaX9JN73r/3/7fvXt//9h/20tL0ndL4Qer0lj7fr/yGZZBI/9v7X3//22/" + "/fb1vr4Qff6T3//3i//b969vf39sP+2trpJN6XwwX/X/////2/tfb9L0t//rp+vX4YX3SSv7" + "6xxshpI/9h+9e339/b//96t6XhhhBPeqSNgY++v4f/2/v+//9v/bSdLpJvrwwYQVu3LrX/fX" + "u//t+6XvvW9bb//e2qXpeGGEE3elqrf+v3/+39/t9r37/7df+3peGGQ2ysIJp20sIKv2+v//" + "2/0vb+vS7/9dL0vXww8ECG2wk4SW+vX2//w37f7e37+3Xpe+2kk3peGHhBOGKiieU/t9ZDLj" + "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" + "v/b//f1v/7V6er0r9L//XSttb1/9v//rptfr+1jY0ntUq/+197X1/9v/+0rS1/9XqqVtiqX/" + "9bQVtowrZDYPr/7D//b7SYa9pW2jCxu6V6//thG/aTdhLbC9/+3/+6VoK1/yKPYS3rSbaS//" + "hhLhhJhkMOwwlw15AgaP+3//aVpMMEc/aVhOGEuulfS//iFoMIJhhWKthhJYd2urBra922lB" + "ggmK1tJimK/eraSBf/asqIpgwVqGwYJBA2GCDhhA8IG2EDBAwQODBBw2GlFMLCKcDDCVVBu1" + "hJh6H/7Cjm0ExQanQMoUQ2F7IEF50DBLhokNghyGC5DBcEDnQHIgEOgFwYIKE1kNgOUGE0wo" + "OtoKw9f/a6DQaDC2Cw//sF/+xCn0gwvimg1vXW0//hhDQMIMEDQgwhDYiOLLhkhlBYMEDCxD" + "BBoMEO+I44/iIkCThILGBHgTiQyQaOxHIHh+EREa/xFBEM58fH/sIJ/6/wk///pP+l/kDwIK" + "////X/3r+uvStf///8ev0nrC+v9pZA8WvSr0g2l//7aXtpfqJTgi4GwGeP16QjtpJeQNAanX" + "tL+0tsJJehWwwgklX2GEgkmg6wxCBIgZiCCB+DrDChfCyBtDOdkcDMMcMLEREf//////////" + "////////////////////4AIAIAAOAAABAwABAAAATAkAAAEBAwABAAAAcwIAAAIBAwABAAAA" + "AQAAAAMBAwABAAAABAAAAAYBAwABAAAAAQAAABEBBAABAAAACAAAABIBAwABAAAAAQAAABUB" + "AwABAAAAAQAAABYBAwABAAAAcwIAABcBBAABAAAABxMAABoBBQABAAAAvhMAABsBBQABAAAA" + "xhMAABwBAwABAAAAAQAAACgBAwABAAAAAgAAAAAAAAAAAMASAAAEAAAAwBIAAAQA"; + +#endif /* LEPTONICA_BMFDATA_H */ + + diff --git a/third_party/leptonica/uos/amd64/include/leptonica/bmp.h b/third_party/leptonica/uos/amd64/include/leptonica/bmp.h new file mode 100644 index 00000000..568c9901 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/bmp.h @@ -0,0 +1,124 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_BMP_H +#define LEPTONICA_BMP_H + +/*! + * \file bmp.h + * + *
+ * This file is here to describe the fields in the header of
+ * the BMP file.  These fields are not used directly in Leptonica.
+ * The only thing we use are the sizes of these two headers.
+ * Furthermore, because of potential namespace conflicts with
+ * the typedefs and defined sizes, we have changed the names
+ * to protect anyone who may also need to use the original definitions.
+ * Thanks to J. D. Bryan for pointing out the potential problems when
+ * developing on Win32 compatible systems.
+ * 
+ */ + +/*-------------------------------------------------------------* + * BMP file header * + *-------------------------------------------------------------*/ + +/*! BMP file header + * + * Notes: + * (1) The bfSize field is stored as a 32 bit integer and includes + * the size of the BMP_FileHeader, BMP_InfoHeader, the color + * table (if any), and the size of the DIB bits. + * (2) The bfOffBits field is also stored as a 32 bit integer and + * contains the absolute offset in bytes of the image data + * in this file. Some bmp files have additional data after the + * BMP_InfoHeader and before the color table (if it exists). + * However, enabling reading of these files makes the reader + * vulnerable to various malware attacks. Therefore we do not + * read bmp files with extra data, and require that the size + * of the color table in bytes is + * offset - sizeof(BMP_FileHeader) - sizeof(BMP_InfoHeader) + * (3) Use arrays of l_uint8[] to make an endianness agnostic + * access to the BMP_FileHeader easier. + */ +struct BMP_FileHeader +{ + l_uint8 bfType[2]; /*!< file type; must be "BM" */ + l_uint8 bfSize[4]; /*!< length of the file; + sizeof(BMP_FileHeader) + + sizeof(BMP_InfoHeader) + + size of optional extra data + + size of color table + + size of DIB bits */ + l_uint8 bfReserved1[2]; /*!< don't care (set to 0) */ + l_uint8 bfReserved2[2]; /*!< don't care (set to 0) */ + l_uint8 bfOffBits[4]; /*!< offset from beginning of file */ +}; +typedef struct BMP_FileHeader BMP_FH; + +/*! Number of bytes in a BMP file header */ +#define BMP_FHBYTES sizeof(BMP_FH) + + +/*-------------------------------------------------------------* + * BMP info header * + *-------------------------------------------------------------*/ + +/*! BMP info header */ +struct BMP_InfoHeader +{ + l_int32 biSize; /*!< size of the BMP_InfoHeader struct */ + l_int32 biWidth; /*!< bitmap width in pixels */ + l_int32 biHeight; /*!< bitmap height in pixels */ + l_int16 biPlanes; /*!< number of bitmap planes */ + l_int16 biBitCount; /*!< number of bits per pixel */ + l_int32 biCompression; /*!< compress format (0 == uncompressed) */ + l_int32 biSizeImage; /*!< size of image in bytes */ + l_int32 biXPelsPerMeter; /*!< pixels per meter in x direction */ + l_int32 biYPelsPerMeter; /*!< pixels per meter in y direction */ + l_int32 biClrUsed; /*!< number of colors used */ + l_int32 biClrImportant; /*!< number of important colors used */ +}; +typedef struct BMP_InfoHeader BMP_IH; + +/*! Number of bytes in a BMP info header */ +#define BMP_IHBYTES sizeof(BMP_IH) + + +/*-------------------------------------------------------------* + * Align BMP headers on 4 byte boundaries * + *-------------------------------------------------------------*/ + +/*! BMP_IH is misaligned, causing crashes on some big-endians. + * A packed struct forces alignment. */ +#if defined(__GNUC__) +typedef struct __attribute__((__packed__)) { + BMP_FH bmpfh; + BMP_IH bmpih; +} BMP_HEADER; +#endif + +#endif /* LEPTONICA_BMP_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/ccbord.h b/third_party/leptonica/uos/amd64/include/leptonica/ccbord.h new file mode 100644 index 00000000..675b92b2 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/ccbord.h @@ -0,0 +1,62 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_CCBORD_H +#define LEPTONICA_CCBORD_H + +/*! + * \file ccbord.h + * + *
+ *
+ *    This is the public interface for representing all foreground pixels
+ *    in an image by the border pixels of connected components.  It contains
+ *    typedefs for data structures and enums for function inputs.
+ * 
+ */ + +/*! A single CCBord for a connected component */ +typedef struct CCBord CCBORD; + +/*! Array of CCBord */ +typedef struct CCBorda CCBORDA; + + /*! Use in ccbaStepChainsToPixCoords() */ +/*! CCB Coords */ +enum { + CCB_LOCAL_COORDS = 1, + CCB_GLOBAL_COORDS = 2 +}; + + /*! Use in ccbaGenerateSPGlobalLocs() */ +/*! CCB Points */ +enum { + CCB_SAVE_ALL_PTS = 1, + CCB_SAVE_TURNING_PTS = 2 +}; + +#endif /* LEPTONICA_CCBORD_H */ + diff --git a/third_party/leptonica/uos/amd64/include/leptonica/ccbord_internal.h b/third_party/leptonica/uos/amd64/include/leptonica/ccbord_internal.h new file mode 100644 index 00000000..c84f6d74 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/ccbord_internal.h @@ -0,0 +1,107 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_CCBORD_INTERNAL_H +#define LEPTONICA_CCBORD_INTERNAL_H + +/*! + * \file ccbord_internal.h + * + *
+ *
+ *    This file is internal; it is not part of the public interface.
+ *    It contains definitions of data structures that use border pixels
+ *    of connected components to represent the foreground pixels
+ *    in an image by the border
+ *
+ *        CCBord:   represents a single connected component
+ *        CCBorda:  an array of CCBord
+ *
+ *    The CCBord contains:
+ *
+ *    (1) a minimally-clipped bitmap of the component (pix),
+ *    (2) a boxa consisting of:
+ *          for the primary component:
+ *                (xul, yul) pixel location in global coords
+ *                (w, h) of the bitmap
+ *          for the hole components:
+ *                (x, y) in relative coordinates in primary component
+ *                (w, h) of the hole border (which is 2 pixels
+ *                       larger in each direction than the hole itself)
+ *    (3) a pta ('start') of the initial border pixel location for each
+ *        closed curve, all in relative coordinates of the primary
+ *        component.  This is given for the primary component,
+ *        followed by the hole components, if any.
+ *    (4) a refcount of the ccbord; used internally when a ccbord
+ *        is accessed from a ccborda (array of ccbord)
+ *    (5) a ptaa for the chain code for the border in relative
+ *        coordinates, where the first pta is the exterior border
+ *        and all other pta are for interior borders (holes)
+ *    (6) a ptaa for the global pixel loc rendition of the border,
+ *        where the first pta is the exterior border and all other
+ *        pta are for interior borders (holes).
+ *        This is derived from the local or step chain code.
+ *    (7) a numaa for the chain code for the border as orientation
+ *        directions between successive border pixels, where
+ *        the first numa is the exterior border and all other
+ *        numa are for interior borders (holes).  This is derived
+ *        from the local chain code.  The 8 directions are 0 - 7.
+ *    (8) a pta for a single chain for each c.c., comprised of outer
+ *        and hole borders, plus cut paths between them, all in
+ *        local coords.
+ *    (9) a pta for a single chain for each c.c., comprised of outer
+ *        and hole borders, plus cut paths between them, all in
+ *        global coords.
+ * 
+ */ + +/*! A single CCBord for a connected component */ +struct CCBord +{ + struct Pix *pix; /*!< component bitmap (min size) */ + struct Boxa *boxa; /*!< regions of each closed curve */ + struct Pta *start; /*!< initial border pixel locations */ + l_atomic refcount; /*!< number of handles; start at 1 */ + struct Ptaa *local; /*!< ptaa of chain pixels (local) */ + struct Ptaa *global; /*!< ptaa of chain pixels (global) */ + struct Numaa *step; /*!< numaa of chain code (step dir) */ + struct Pta *splocal; /*!< pta of single chain (local) */ + struct Pta *spglobal; /*!< pta of single chain (global) */ +}; + +/*! Array of CCBord */ +struct CCBorda +{ + struct Pix *pix; /*!< input pix (may be null) */ + l_int32 w; /*!< width of pix */ + l_int32 h; /*!< height of pix */ + l_int32 n; /*!< number of ccbord in ptr array */ + l_int32 nalloc; /*!< number of ccbord ptrs allocated */ + struct CCBord **ccb; /*!< ccb ptr array */ +}; + +#endif /* LEPTONICA_CCBORD_INTERNAL_H */ + diff --git a/third_party/leptonica/uos/amd64/include/leptonica/colorfill.h b/third_party/leptonica/uos/amd64/include/leptonica/colorfill.h new file mode 100644 index 00000000..2d3a8679 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/colorfill.h @@ -0,0 +1,67 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_COLORFILL_H +#define LEPTONICA_COLORFILL_H + +/*! + * \file colorfill.h + * + *
+ *  Contains the following struct
+ *      struct L_Colorfill
+ *
+ *  This accumulates color information, linked to location, within a
+ *  set of tiles that (mostly) covers an input RGB image.
+ * 
+ */ + + +/*------------------------------------------------------------------------* + * Colorfill data * + *------------------------------------------------------------------------*/ +/*! Colorfill data */ +struct L_Colorfill +{ + struct Pix *pixs; /*!< clone of source pix */ + struct Pix *pixst; /*!< source pix, after optional transform */ + l_int32 nx; /*!< number of tiles in each tile row */ + l_int32 ny; /*!< number of tiles in each tile column */ + l_int32 tw; /*!< width of each tile */ + l_int32 th; /*!< height of each tile */ + l_int32 minarea; /*!< min number of pixels in a color region */ + struct Boxa *boxas; /*!< tile locations */ + struct Pixa *pixas; /*!< tiles from source pix */ + struct Pixa *pixam; /*!< mask tiles with components covering */ + /*!< regions with similar color */ + struct Numaa *naa; /*!< sizes of color regions (in pixels) */ + struct L_Dnaa *dnaa; /*!< average color in each region */ + struct Pixa *pixadb; /*!< debug reconstruction from segmentation */ +}; +typedef struct L_Colorfill L_COLORFILL; + + +#endif /* LEPTONICA_COLORFILL_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/dewarp.h b/third_party/leptonica/uos/amd64/include/leptonica/dewarp.h new file mode 100644 index 00000000..37bfb632 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/dewarp.h @@ -0,0 +1,191 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_DEWARP_H +#define LEPTONICA_DEWARP_H + +/*! + * \file dewarp.h + * + *
+ *     Data structure to hold arrays and results for generating
+ *     horizontal and vertical disparity arrays based on textlines.
+ *     Each disparity array is two-dimensional.  The vertical disparity
+ *     array gives a vertical displacement, relative to the lowest point
+ *     in the textlines.  The horizontal disparty array gives a horizontal
+ *     displacement, relative to the minimum values (for even pages)
+ *     or maximum values (for odd pages) of the left and right ends of
+ *     full textlines.  Horizontal alignment always involves translations
+ *     away from the book gutter.
+ *
+ *     We have intentionally separated the process of building models
+ *     from the rendering process that uses the models.  For any page,
+ *     the building operation either creates an actual model (that is,
+ *     a model with at least the vertical disparity being computed, and
+ *     for which the 'success' flag is set) or fails to create a model.
+ *     However, at rendering time, a page can have one of two different
+ *     types of models.
+ *     (1) A valid model is an actual model that meets the rendering
+ *         constraints, which are limits on model curvature parameters.
+ *         See dewarpaTestForValidModel() for details.
+ *         Valid models are identified by dewarpaInsertRefModels(),
+ *         which sets the 'vvalid' and 'hvalid' fields.  Only valid
+ *         models are used for rendering.
+ *     (2) A reference model is used by a page that doesn't have
+ *         a valid model, but has a nearby valid model of the same
+ *         parity (even/odd page) that it can use.  The range in pages
+ *         to search for a valid model is given by the 'maxdist' field.
+ *
+ *     At the rendering stage, vertical and horizontal disparities are
+ *     treated differently.  It is somewhat more robust to generate
+ *     vertical disparity models (VDM) than horizontal disparity
+ *     models (HDM). A valid VDM is required for any correction to
+ *     be made; if a valid VDM is not available, just use the input
+ *     image.  Otherwise, assuming it is available, the use of the
+ *     HDM is controlled by two fields: 'useboth' and 'check_columns'.
+ *       (a) With useboth == 0, we use only the VDM.
+ *       (b) With useboth == 1, we require using the VDM and, if a valid
+ *           horizontal disparity model (HDM) is available, we also use it.
+ *       (c) With check_columns == 1, check for multiple columns and if
+ *           true, only use the VDM, even if a valid HDM is available.
+ *           Note that 'check_columns' takes precedence over 'useboth'
+ *           when there is more than 1 column of text.  By default,
+ *           check_columns == 0.
+ *
+ *     The 'maxdist' parameter is input when the dewarpa is created.
+ *     The other rendering parameters have default values given in dewarp1.c.
+ *     All parameters used by rendering can be set (or reset) using accessors.
+ *
+ *     After dewarping, use of the VDM will cause all points on each
+ *     altered curve to have a y-value equal to the minimum.  Use of
+ *     the HDA will cause the left and right edges of the textlines
+ *     to be vertically aligned if they had been typeset flush-left
+ *     and flush-right, respectively.
+ *
+ *     The sampled disparity arrays are expanded to full resolution,
+ *     using linear interpolation, and this is further expanded
+ *     by slope continuation to the right and below if the image
+ *     is larger than the full resolution disparity arrays.  Then
+ *     the disparity correction can be applied to the input image.
+ *     If the input pix are 2x reduced, the expansion from sampled
+ *     to full res uses the product of (sampling) * (redfactor).
+ *
+ *     The most accurate results are produced at full resolution, and
+ *     this is generally recommended.
+ * 
+ */ + + /*! Dewarp version for serialization + *
+     * Note on versioning of the serialization of this data structure:
+     * The dewarping utility and the stored data can be expected to change.
+     * In most situations, the serialized version is ephemeral -- it is
+     * not needed after being used.  No functions will be provided to
+     * convert between different versions.
+     * 
+ */ +#define DEWARP_VERSION_NUMBER 4 + +/*! Data structure to hold a number of Dewarp */ +struct L_Dewarpa +{ + l_int32 nalloc; /*!< size of dewarp ptr array */ + l_int32 maxpage; /*!< maximum page number in array */ + struct L_Dewarp **dewarp; /*!< array of ptrs to page dewarp */ + struct L_Dewarp **dewarpcache; /*!< array of ptrs to cached dewarps */ + struct Numa *namodels; /*!< list of page numbers for pages */ + /*!< with page models */ + struct Numa *napages; /*!< list of page numbers with either */ + /*!< page models or ref page models */ + l_int32 redfactor; /*!< reduction factor of input: 1 or 2 */ + l_int32 sampling; /*!< disparity arrays sampling factor */ + l_int32 minlines; /*!< min number of long lines required */ + l_int32 maxdist; /*!< max distance for getting ref page */ + l_int32 max_linecurv; /*!< maximum abs line curvature, */ + /*!< in micro-units */ + l_int32 min_diff_linecurv; /*!< minimum abs diff line */ + /*!< curvature in micro-units */ + l_int32 max_diff_linecurv; /*!< maximum abs diff line */ + /*!< curvature in micro-units */ + l_int32 max_edgeslope; /*!< maximum abs left or right edge */ + /*!< slope, in milli-units */ + l_int32 max_edgecurv; /*!< maximum abs left or right edge */ + /*!< curvature, in micro-units */ + l_int32 max_diff_edgecurv; /*!< maximum abs diff left-right */ + /*!< edge curvature, in micro-units */ + l_int32 useboth; /*!< use both disparity arrays if */ + /*!< available; only vertical otherwise */ + l_int32 check_columns; /*!< if there are multiple columns, */ + /*!< only use the vertical disparity */ + /*!< array */ + l_int32 modelsready; /*!< invalid models have been removed */ + /*!< and refs built against valid set */ +}; +typedef struct L_Dewarpa L_DEWARPA; + + +/*! Data structure for a single dewarp */ +struct L_Dewarp +{ + struct L_Dewarpa *dewa; /*!< ptr to parent (not owned) */ + struct Pix *pixs; /*!< source pix, 1 bpp */ + struct FPix *sampvdispar; /*!< sampled vert disparity array */ + struct FPix *samphdispar; /*!< sampled horiz disparity array */ + struct FPix *sampydispar; /*!< sampled slope h-disparity array */ + struct FPix *fullvdispar; /*!< full vert disparity array */ + struct FPix *fullhdispar; /*!< full horiz disparity array */ + struct FPix *fullydispar; /*!< full slope h-disparity array */ + struct Numa *namidys; /*!< sorted y val of midpoint each line */ + struct Numa *nacurves; /*!< sorted curvature of each line */ + l_int32 w; /*!< width of source image */ + l_int32 h; /*!< height of source image */ + l_int32 pageno; /*!< page number; important for reuse */ + l_int32 sampling; /*!< sampling factor of disparity arrays */ + l_int32 redfactor; /*!< reduction factor of pixs: 1 or 2 */ + l_int32 minlines; /*!< min number of long lines required */ + l_int32 nlines; /*!< number of long lines found */ + l_int32 mincurv; /*!< min line curvature in micro-units */ + l_int32 maxcurv; /*!< max line curvature in micro-units */ + l_int32 leftslope; /*!< left edge slope in milli-units */ + l_int32 rightslope; /*!< right edge slope in milli-units */ + l_int32 leftcurv; /*!< left edge curvature in micro-units */ + l_int32 rightcurv; /*!< right edge curvature in micro-units*/ + l_int32 nx; /*!< number of sampling pts in x-dir */ + l_int32 ny; /*!< number of sampling pts in y-dir */ + l_int32 hasref; /*!< 0 if normal; 1 if has a refpage */ + l_int32 refpage; /*!< page with disparity model to use */ + l_int32 vsuccess; /*!< sets to 1 if vert disparity builds */ + l_int32 hsuccess; /*!< sets to 1 if horiz disparity builds */ + l_int32 ysuccess; /*!< sets to 1 if slope disparity builds */ + l_int32 vvalid; /*!< sets to 1 if valid vert disparity */ + l_int32 hvalid; /*!< sets to 1 if valid horiz disparity */ + l_int32 skip_horiz; /*!< if 1, skip horiz disparity */ + /*!< correction */ + l_int32 debug; /*!< set to 1 if debug output requested */ +}; +typedef struct L_Dewarp L_DEWARP; + +#endif /* LEPTONICA_DEWARP_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/endianness.h b/third_party/leptonica/uos/amd64/include/leptonica/endianness.h new file mode 100644 index 00000000..8cdc060d --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/endianness.h @@ -0,0 +1,11 @@ +#if !defined (L_BIG_ENDIAN) && !defined (L_LITTLE_ENDIAN) +# if defined (__APPLE_CC__) +# ifdef __BIG_ENDIAN__ +# define L_BIG_ENDIAN +# else +# define L_LITTLE_ENDIAN +# endif +# else +# define L_LITTLE_ENDIAN +# endif +#endif diff --git a/third_party/leptonica/uos/amd64/include/leptonica/environ.h b/third_party/leptonica/uos/amd64/include/leptonica/environ.h new file mode 100644 index 00000000..b3095b23 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/environ.h @@ -0,0 +1,608 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_ENVIRON_H +#define LEPTONICA_ENVIRON_H + +/*------------------------------------------------------------------------* + * Defines and includes differ for Unix and Windows. Also for Windows, * + * differentiate between conditionals based on platform and compiler. * + * For platforms: * + * _WIN32 => Windows, 32- or 64-bit * + * _WIN64 => Windows, 64-bit only * + * __CYGWIN__ => Cygwin * + * For compilers: * + * __GNUC__ => gcc * + * _MSC_VER => msvc * + *------------------------------------------------------------------------*/ + +/* MS VC++ does not provide stdint.h, so define the missing types here */ + + +#ifndef _MSC_VER +#include + +#else +/* Note that _WIN32 is defined for both 32 and 64 bit applications, + whereas _WIN64 is defined only for the latter */ + +#ifdef _WIN64 +typedef __int64 intptr_t; +typedef unsigned __int64 uintptr_t; +#else +typedef int intptr_t; +typedef unsigned int uintptr_t; +#endif + +/* VC++6 doesn't seem to have powf, expf. */ +#if (_MSC_VER < 1400) +#define powf(x, y) (float)pow((double)(x), (double)(y)) +#define expf(x) (float)exp((double)(x)) +#endif + +#endif /* _MSC_VER */ + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && !defined(__STDC_NO_ATOMICS__) +#include +typedef atomic_int l_atomic; +#else +typedef int l_atomic; +#endif + +#ifndef LEPT_DLL + /* Windows specifics */ + #ifdef _WIN32 + /* DLL EXPORTS and IMPORTS */ + #if defined(LIBLEPT_EXPORTS) + #define LEPT_DLL __declspec(dllexport) + #elif defined(LIBLEPT_IMPORTS) + #define LEPT_DLL __declspec(dllimport) + #else + #define LEPT_DLL + #endif + #else /* non-Windows specifics */ + #define LEPT_DLL + #endif /* _WIN32 */ +#endif /* LEPT_DLL */ + +#ifndef _WIN32 /* non-Windows specifics */ + #include +#endif /* _WIN32 */ + +#ifdef __APPLE__ + #include +#endif /* __APPLE__ */ + +typedef intptr_t l_intptr_t; +typedef uintptr_t l_uintptr_t; + + +/*--------------------------------------------------------------------* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!* + * USER CONFIGURABLE * + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!* + * Environment variables with I/O libraries * + * Manual Configuration Only: NOT AUTO_CONF * + *--------------------------------------------------------------------*/ +/* + * Leptonica provides interfaces to link to several external image + * I/O libraries, plus zlib. Setting any of these to 0 here causes + * non-functioning stubs to be linked. + */ +#if !defined(HAVE_CONFIG_H) && !defined(ANDROID_BUILD) && !defined(OS_IOS) + + #if !defined(HAVE_LIBJPEG) + #define HAVE_LIBJPEG 1 + #endif + #if !defined(HAVE_LIBTIFF) + #define HAVE_LIBTIFF 1 + #endif + #if !defined(HAVE_LIBPNG) + #define HAVE_LIBPNG 1 + #endif + #if !defined(HAVE_LIBZ) + #define HAVE_LIBZ 1 + #endif + #if !defined(HAVE_LIBGIF) + #define HAVE_LIBGIF 0 + #endif + #if !defined(HAVE_LIBUNGIF) + #define HAVE_LIBUNGIF 0 + #endif + #if !defined(HAVE_LIBWEBP) + #define HAVE_LIBWEBP 0 + #endif + #if !defined(HAVE_LIBWEBP_ANIM) + #define HAVE_LIBWEBP_ANIM 0 + #endif + #if !defined(HAVE_LIBJP2K) + #define HAVE_LIBJP2K 0 + #endif + + + /*-----------------------------------------------------------------------* + * Leptonica supports OpenJPEG 2.0+. If you have a version of openjpeg * + * (HAVE_LIBJP2K == 1) that is >= 2.0, set the path to the openjpeg.h * + * header in angle brackets here. * + *-----------------------------------------------------------------------*/ + #define LIBJP2K_HEADER + +#endif /* ! HAVE_CONFIG_H etc. */ + +/*--------------------------------------------------------------------* + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!* + * USER CONFIGURABLE * + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!* + * Environ variables for image I/O without external libraries * + *--------------------------------------------------------------------*/ +/* + * Leptonica supplies I/O support without using external libraries for: + * * image read/write for bmp, pnm + * * header read for jp2k + * * image wrapping write for pdf and ps. + * Setting any of these to 0 causes non-functioning stubs to be linked. + */ +#define USE_BMPIO 1 +#define USE_PNMIO 1 +#define USE_JP2KHEADER 1 +#define USE_PDFIO 1 +#define USE_PSIO 1 + + +/*-------------------------------------------------------------------------* + * On linux, BSD, macOS (> 10.12), android (sdk >= 23) and iOS(>= 11.0), + * you can redirect writing data from a filestream to memory using + * open_memstream() and redirect reading data from a filestream to + * reading from memory using fmemopen(). + * Specifically, you can compress (write compressed data to memory + * from raster data in a Pix) and uncompress (read from compressed data + * in memory to raster data in a Pix). + * For png, tiff and webp, data is compressed and uncompressed directly + * to memory without the use of the POSIX.1 (2008) functions fmemopen() + * and open_memstream(). + * For jpeg, jp2k, gif, pnm and bmp, these functions are used on systems + * that support them, and for those we define HAVE_FMEMOPEN to 1. + *-------------------------------------------------------------------------*/ +#if !defined(HAVE_CONFIG_H) && \ + (!defined(ANDROID_BUILD) || __ANDROID_API__ >= 23) && \ + (!defined(__IPHONE_OS_VERSION_MIN_REQUIRED) || \ + __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000) && \ + (!defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || \ + __MAC_OS_X_VERSION_MIN_REQUIRED > 101200) && \ + !defined(_WIN32) +#define HAVE_FMEMOPEN 1 +#endif /* ! HAVE_CONFIG_H etc. */ + +/*-------------------------------------------------------------------------* + * fstatat() is defined by POSIX, but some systems do not support it. * + * One example is older macOS systems (pre-10.10). * + * Also, dirfd() is required by fstatat(). * + * Play it safe and set the default values to 0. * + *-------------------------------------------------------------------------*/ +#if !defined(HAVE_CONFIG_H) +#define HAVE_FSTATAT 0 +#define HAVE_DIRFD 0 +#endif /* ! HAVE_CONFIG_H */ + +/*--------------------------------------------------------------------* + * It is desirable on Windows to have all temp files written to the same + * subdirectory of the Windows directory, because files under + * persist after reboot, and the regression tests write a lot of files. + * We write all test files to /tmp/lept or subdirectories of /tmp/lept. + * Windows temp files are specified as in unix, but have the translation + * /tmp/lept/xxx --> /lept/xxx + *--------------------------------------------------------------------*/ + + +/*--------------------------------------------------------------------* + * Built-in types * + *--------------------------------------------------------------------*/ +typedef int l_ok; /*!< return type 0 if OK, 1 on error */ +typedef signed char l_int8; /*!< signed 8-bit value */ +typedef unsigned char l_uint8; /*!< unsigned 8-bit value */ +typedef short l_int16; /*!< signed 16-bit value */ +typedef unsigned short l_uint16; /*!< unsigned 16-bit value */ +typedef int l_int32; /*!< signed 32-bit value */ +typedef unsigned int l_uint32; /*!< unsigned 32-bit value */ +typedef float l_float32; /*!< 32-bit floating point value */ +typedef double l_float64; /*!< 64-bit floating point value */ +#ifdef COMPILER_MSVC +typedef __int64 l_int64; /*!< signed 64-bit value */ +typedef unsigned __int64 l_uint64; /*!< unsigned 64-bit value */ +#else +typedef long long l_int64; /*!< signed 64-bit value */ +typedef unsigned long long l_uint64; /*!< unsigned 64-bit value */ +#endif /* COMPILER_MSVC */ + + +/*-------------------------------------------------------------------------* + * For security, the library is distributed in a configuration that does * + * not permit (1) forking with 'system', which is used for displaying * + * images and generating gnuplots, and (2) writing files with specified * + * compiled-in file names. All such writes are with functions such as * + * pixWriteDebug() where the "Debug" is appended to the usual name. * + * Whether the "Debug" version defaults to the standard version or is a * + * no-op depends on the value of this global variable. The default value * + * of LeptDebugOK is 0, and it is set in writefile.c. This value can be * + * over-ridden, for development and debugging, by setLeptDebugOK(). * + *-------------------------------------------------------------------------*/ +LEPT_DLL extern l_int32 LeptDebugOK; /* default is 0 */ + + +/*------------------------------------------------------------------------* + * Standard macros * + *------------------------------------------------------------------------*/ +#ifndef L_MIN +/*! Minimum of %x and %y */ +#define L_MIN(x, y) (((x) < (y)) ? (x) : (y)) +#endif + +#ifndef L_MAX +/*! Maximum of %x and %y */ +#define L_MAX(x, y) (((x) > (y)) ? (x) : (y)) +#endif + +#ifndef L_ABS +/*! Absolute value of %x */ +#define L_ABS(x) (((x) < 0) ? (-1 * (x)) : (x)) +#endif + +#ifndef L_SIGN +/*! Sign of %x */ +#define L_SIGN(x) (((x) < 0) ? -1 : 1) +#endif + +#ifndef UNDEF +/*! Undefined value */ +#define UNDEF -1 +#endif + +#ifndef NULL +/*! NULL value */ +#define NULL 0 +#endif + +#ifndef TRUE +/*! True value */ +#define TRUE 1 +#endif + +#ifndef FALSE +/*! False value */ +#define FALSE 0 +#endif + + +/*--------------------------------------------------------------------* + * Environment variables for endian dependence * + *--------------------------------------------------------------------*/ +/* + * To control conditional compilation, one of two variables + * + * L_LITTLE_ENDIAN (e.g., for Intel X86) + * L_BIG_ENDIAN (e.g., for Sun SPARC, Mac Power PC) + * + * is defined when the GCC compiler is invoked. + * All code should compile properly for both hardware architectures. + */ + + +/*------------------------------------------------------------------------* + * Simple search state variables * + *------------------------------------------------------------------------*/ +/*! Search State */ +enum { + L_NOT_FOUND = 0, + L_FOUND = 1 +}; + + +/*------------------------------------------------------------------------* + * Path separator conversion * + *------------------------------------------------------------------------*/ +/*! Path Separators */ +enum { + UNIX_PATH_SEPCHAR = 0, + WIN_PATH_SEPCHAR = 1 +}; + + +/*------------------------------------------------------------------------* + * Timing structs * + *------------------------------------------------------------------------*/ +typedef void *L_TIMER; + +/*! Timing struct */ +struct L_WallTimer { + l_int32 start_sec; + l_int32 start_usec; + l_int32 stop_sec; + l_int32 stop_usec; +}; +typedef struct L_WallTimer L_WALLTIMER; + + +/*------------------------------------------------------------------------* + * Standard memory allocation * + * * + * All default heap allocation is through the system malloc and free. * + * * + * Leptonica also provides non-default allocation in two situations: * + * * + * (1) A special allocator/deallocator pair can be provided for the * + * pix image data array. This might be useful to prevent memory * + * fragmentation when large images are repeatedly allocated and * + * freed. See the PixMemoryManager in pix1.c for details, * + * where the default is defined. * + * * + * (2) Special allocator/deallocators can be provided for ALL heap * + * allocation if required, for example, for embedded systems. * + * For such builds, define LEPTONICA_INTERCEPT_ALLOC, and provide * + * custom leptonica_{malloc, calloc, realloc, free} functions. * + *------------------------------------------------------------------------*/ +#ifdef LEPTONICA_INTERCEPT_ALLOC + #define LEPT_MALLOC(blocksize) leptonica_malloc(blocksize) + #define LEPT_CALLOC(numelem, elemsize) leptonica_calloc(numelem, elemsize) + #define LEPT_REALLOC(ptr, blocksize) leptonica_realloc(ptr, blocksize) + #define LEPT_FREE(ptr) leptonica_free(ptr) + void *leptonica_malloc(size_t blocksize); + void *leptonica_calloc(size_t numelem, size_t elemsize); + void *leptonica_realloc(void *ptr, size_t blocksize); + void leptonica_free(void *ptr); +#else + #define LEPT_MALLOC(blocksize) malloc(blocksize) + #define LEPT_CALLOC(numelem, elemsize) calloc(numelem, elemsize) + #define LEPT_REALLOC(ptr, blocksize) realloc(ptr, blocksize) + #define LEPT_FREE(ptr) free(ptr) +#endif /* LEPTONICA_INTERCEPT_ALLOC */ + +/*------------------------------------------------------------------------* + * Control printing of error, warning, and info messages * + * * + * Leptonica never sends output to stdout. By default, all messages * + * go to stderr. However, we provide a mechanism for runtime * + * redirection of output, using a custom stderr handler defined * + * by the user. See utils1.c for details and examples. * + * * + * To omit all messages to stderr, simply define NO_CONSOLE_IO on the * + * command line. For finer grained control, we have a mechanism * + * based on the message severity level. The following assumes that * + * NO_CONSOLE_IO is not defined. * + * * + * Messages are printed if the message severity is greater than or equal * + * to the current severity threshold. The current severity threshold * + * is the greater of the compile-time severity, which is the minimum * + * severity that can be reported, and the run-time severity, which is * + * the severity threshold at the moment. * + * * + * The compile-time threshold determines which messages are compiled * + * into the library for potential printing. Messages below the * + * compile-time threshold are omitted and can never be printed. The * + * default compile-time threshold is L_SEVERITY_INFO, but this may be * + * overridden by defining MINIMUM_SEVERITY to the desired enumeration * + * identifier on the compiler command line. Defining NO_CONSOLE_IO on * + * the command line is the same as setting MINIMUM_SEVERITY to * + * L_SEVERITY_NONE. * + * * + * The run-time threshold determines which messages are printed during * + * library execution. It defaults to the compile-time threshold but * + * may be changed either statically by defining DEFAULT_SEVERITY to * + * the desired enumeration identifier on the compiler command line, or * + * dynamically by calling setMsgSeverity() to specify a new threshold. * + * The run-time threshold may also be set from the value of the * + * environment variable LEPT_MSG_SEVERITY by calling setMsgSeverity() * + * and specifying L_SEVERITY_EXTERNAL. * + * * + * In effect, the compile-time threshold setting says, "Generate code * + * to permit messages of equal or greater severity than this to be * + * printed, if desired," whereas the run-time threshold setting says, * + * "Print messages that have an equal or greater severity than this." * + *------------------------------------------------------------------------*/ + + /*! Control printing of error, warning and info messages */ +/*! Message Control */ +enum { + L_SEVERITY_EXTERNAL = 0, /* Get the severity from the environment */ + L_SEVERITY_ALL = 1, /* Lowest severity: print all messages */ + L_SEVERITY_DEBUG = 2, /* Print debugging and higher messages */ + L_SEVERITY_INFO = 3, /* Print informational and higher messages */ + L_SEVERITY_WARNING = 4, /* Print warning and higher messages */ + L_SEVERITY_ERROR = 5, /* Print error and higher messages */ + L_SEVERITY_NONE = 6 /* Highest severity: print no messages */ +}; + +/* No message less than the compile-time threshold will ever be + * reported, regardless of the current run-time threshold. This allows + * selection of the set of messages to include in the library. For + * example, setting the threshold to L_SEVERITY_WARNING eliminates all + * informational messages from the library. With that setting, both + * warning and error messages would be printed unless setMsgSeverity() + * was called, or DEFAULT_SEVERITY was redefined, to set the run-time + * severity to L_SEVERITY_ERROR. In that case, only error messages + * would be printed. + * + * This mechanism makes the library smaller and faster, by eliminating + * undesired message reporting and the associated run-time overhead for + * message threshold checking, because code for messages whose severity + * is lower than MINIMUM_SEVERITY won't be generated. + * + * A production library might typically permit ERROR messages to be + * generated, and a development library might permit DEBUG and higher. + * The actual messages printed (as opposed to generated) would depend + * on the current run-time severity threshold. + * + * This is a complex mechanism and a few examples may help. + * (1) No output permitted under any circumstances. + * Use: -DNO_CONSOLE_IO or -DMINIMUM_SEVERITY=6 + * (2) Suppose you want to only allow error messages, and you don't + * want to permit info or warning messages at runtime. + * Use: -DMINIMUM_SEVERITY=5 + * (3) Suppose you want to only allow error messages by default, + * but you will permit this to be over-ridden at runtime. + * Use: -DDEFAULT_SEVERITY=5 + * and to allow info and warning override: + * setMsgSeverity(L_SEVERITY_INFO); + */ + +#ifdef NO_CONSOLE_IO + #undef MINIMUM_SEVERITY + #undef DEFAULT_SEVERITY + + #define MINIMUM_SEVERITY L_SEVERITY_NONE /*!< Compile-time default */ + #define DEFAULT_SEVERITY L_SEVERITY_NONE /*!< Run-time default */ + +#else + #ifndef MINIMUM_SEVERITY + #define MINIMUM_SEVERITY L_SEVERITY_INFO /*!< Compile-time default */ + #endif + + #ifndef DEFAULT_SEVERITY + #define DEFAULT_SEVERITY MINIMUM_SEVERITY /*!< Run-time default */ + #endif +#endif + + +/*! The run-time message severity threshold is defined in utils1.c. */ +LEPT_DLL extern l_int32 LeptMsgSeverity; + +/* + *
+ *  Usage
+ *  =====
+ *  Messages are of two types.
+ *
+ *  (1) The messages
+ *      ERROR_INT(a,b,c)       : returns l_int32
+ *      ERROR_FLOAT(a,b,c)     : returns l_float32
+ *      ERROR_PTR(a,b,c)       : returns void*
+ *  are used to return from functions and take a fixed set of parameters:
+ *      a : 
+ *      b : procName
+ *      c : 
+ *  where procName is the name of the local variable naming the function.
+ *
+ *  (2) The purely informational L_* messages
+ *      L_ERROR(a,...)
+ *      L_WARNING(a,...)
+ *      L_INFO(a,...)
+ *  do not take a return value, but they take at least two parameters:
+ *      a  :   with optional format conversions
+ *      v1 : procName    (this must be included as the first vararg)
+ *      v2, ... :  optional varargs to match format converters in the message
+ *
+ *  To return an error from a function that returns void, use:
+ *      L_ERROR(, procName, [...])
+ *      return;
+ *
+ *  Implementation details
+ *  ======================
+ *  Messages are defined with the IF_SEV macro.  The first parameter is
+ *  the message severity, the second is the function to call if the
+ *  message is to be printed, and the third is the return value if the
+ *  message is to be suppressed.  For example, we might have an
+ *  informational message defined as:
+ *
+ *    IF_SEV(L_SEVERITY_INFO, fprintf(.......), 0)
+ *
+ *  The macro expands into a conditional.  Because the first comparison
+ *  is between two constants, an optimizing compiler will remove either
+ *  the comparison (if it's true) or the entire macro expansion (if it
+ *  is false).  This means that there is no run-time overhead for
+ *  messages whose severity falls below the minimum specified at compile
+ *  time, and for others the overhead is one (not two) comparisons.
+ *
+ *  The L_nnn() macros below do not return a value, but because the
+ *  conditional operator requires one for the false condition, we
+ *  specify a void expression.
+ * 
+ */ + +#ifdef NO_CONSOLE_IO + + #define PROCNAME(name) + #define ERROR_INT(a, b, c) ((l_int32)(c)) + #define ERROR_FLOAT(a, b, c) ((l_float32)(c)) + #define ERROR_PTR(a, b, c) ((void *)(c)) + #define L_ERROR(a, ...) + #define L_WARNING(a, ...) + #define L_INFO(a, ...) + +#else + + #define PROCNAME(name) static const char procName[] = name + #define IF_SEV(l, t, f) \ + ((l) >= MINIMUM_SEVERITY && (l) >= LeptMsgSeverity ? (t) : (f)) + + #define ERROR_INT(a, b, c) \ + IF_SEV(L_SEVERITY_ERROR, returnErrorInt((a), (b), (c)), (l_int32)(c)) + #define ERROR_FLOAT(a, b, c) \ + IF_SEV(L_SEVERITY_ERROR, returnErrorFloat((a), (b), (c)), (l_float32)(c)) + #define ERROR_PTR(a, b, c) \ + IF_SEV(L_SEVERITY_ERROR, returnErrorPtr((a), (b), (c)), (void *)(c)) + + #define L_ERROR(a, ...) \ + IF_SEV(L_SEVERITY_ERROR, \ + (void)lept_stderr("Error in %s: " a, __VA_ARGS__), \ + (void)0) + #define L_WARNING(a, ...) \ + IF_SEV(L_SEVERITY_WARNING, \ + (void)lept_stderr("Warning in %s: " a, __VA_ARGS__), \ + (void)0) + #define L_INFO(a, ...) \ + IF_SEV(L_SEVERITY_INFO, \ + (void)lept_stderr("Info in %s: " a, __VA_ARGS__), \ + (void)0) + +#if 0 /* Alternative method for controlling L_* message output */ + #define L_ERROR(a, ...) \ + { if (L_SEVERITY_ERROR >= MINIMUM_SEVERITY && \ + L_SEVERITY_ERROR >= LeptMsgSeverity) \ + lept_stderr("Error in %s: " a, __VA_ARGS__) \ + } + #define L_WARNING(a, ...) \ + { if (L_SEVERITY_WARNING >= MINIMUM_SEVERITY && \ + L_SEVERITY_WARNING >= LeptMsgSeverity) \ + lept_stderr("Warning in %s: " a, __VA_ARGS__) \ + } + #define L_INFO(a, ...) \ + { if (L_SEVERITY_INFO >= MINIMUM_SEVERITY && \ + L_SEVERITY_INFO >= LeptMsgSeverity) \ + lept_stderr("Info in %s: " a, __VA_ARGS__) \ + } +#endif + +#endif /* NO_CONSOLE_IO */ + + +/*------------------------------------------------------------------------* + * snprintf() renamed in MSVC (pre-VS2015) * + *------------------------------------------------------------------------*/ +#if defined _MSC_VER && _MSC_VER < 1900 +#define snprintf(buf, size, ...) _snprintf_s(buf, size, _TRUNCATE, __VA_ARGS__) +#endif + + +#endif /* LEPTONICA_ENVIRON_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/gplot.h b/third_party/leptonica/uos/amd64/include/leptonica/gplot.h new file mode 100644 index 00000000..d2e4f7e5 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/gplot.h @@ -0,0 +1,96 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_GPLOT_H +#define LEPTONICA_GPLOT_H + +/*! + * \file gplot.h + * + *
+ *   Data structures and parameters for generating gnuplot files
+ *
+ *   We used to support X11 output, but recent versions of gnuplot do not
+ *   support the X11 terminal.  To get display to your screen, use
+ *   GPLOT_PNG output; e.g.,
+ *       gplotSimple1(na, GPLOT_PNG, "/tmp/someroot", ...);
+ *       l_fileDisplay("/tmp/someroot.png", ...);
+ * 
+ */ + +#define GPLOT_VERSION_NUMBER 1 + +#define NUM_GPLOT_STYLES 5 +enum GPLOT_STYLE { + GPLOT_LINES = 0, + GPLOT_POINTS = 1, + GPLOT_IMPULSES = 2, + GPLOT_LINESPOINTS = 3, + GPLOT_DOTS = 4 +}; + +#define NUM_GPLOT_OUTPUTS 6 +enum GPLOT_OUTPUT { + GPLOT_NONE = 0, + GPLOT_PNG = 1, + GPLOT_PS = 2, + GPLOT_EPS = 3, + GPLOT_LATEX = 4, + GPLOT_PNM = 5, +}; + +enum GPLOT_SCALING { + GPLOT_LINEAR_SCALE = 0, /*!< default */ + GPLOT_LOG_SCALE_X = 1, + GPLOT_LOG_SCALE_Y = 2, + GPLOT_LOG_SCALE_X_Y = 3 +}; + +extern const char *gplotstylenames[]; /*!< used in gnuplot cmd file */ +extern const char *gplotfileoutputs[]; /*!< used in simple file input */ + +/*! Data structure for generating gnuplot files */ +struct GPlot +{ + char *rootname; /*!< for cmd, data, output */ + char *cmdname; /*!< command file name */ + struct Sarray *cmddata; /*!< command file contents */ + struct Sarray *datanames; /*!< data file names */ + struct Sarray *plotdata; /*!< plot data (1 string/file) */ + struct Sarray *plotlabels; /*!< label for each individual plot */ + struct Numa *plotstyles; /*!< plot style for individual plots */ + l_int32 nplots; /*!< current number of plots */ + char *outname; /*!< output file name */ + l_int32 outformat; /*!< GPLOT_OUTPUT values */ + l_int32 scaling; /*!< GPLOT_SCALING values */ + char *title; /*!< optional */ + char *xlabel; /*!< optional x axis label */ + char *ylabel; /*!< optional y axis label */ +}; +typedef struct GPlot GPLOT; + + +#endif /* LEPTONICA_GPLOT_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/hashmap.h b/third_party/leptonica/uos/amd64/include/leptonica/hashmap.h new file mode 100644 index 00000000..9674d362 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/hashmap.h @@ -0,0 +1,134 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_HASHMAP_H +#define LEPTONICA_HASHMAP_H + +/* + * \file hashmap.h + * + *
+ *  Contains the following structs:
+ *      struct L_Hashmap
+ *      struct L_Hashitem
+ *
+ *  Goal:
+ *      You have a set of objects (integers, strings, pts, whatever),
+ *      and you want to store them in a data structure (L_Hashmap) that allows
+ *      O(1) to find, insert and count the occurrences of such an object.
+ *      The tool is a hash map.  This is not ordered, unlike the O(log n)
+ *      ordered map (L_Amap), which is implemented by an rbtree.
+ *
+ *  In slightly more detail:
+ *      Store the set of objects in an array, which in general can be
+ *      held in a pointer array (L_Ptra).  You need a hash function that
+ *      will generate a unique uint64 key from each object.  For our simple
+ *      built-in arrays, such as float, double and Pta (points), these hash
+ *      functions are in utils1.c.  Then for each object in the array,
+ *      you store the key and the index to the array of objects (the val)
+ *      in a list of hashitems in the hash table, where the specific
+ *      list is determined by the key (specifically, the mod of the key
+ *      with the size of the hashtable).
+ *
+ *  In yet more detail:
+ *  (1) The design loosely follows the design of a hashmap in "The Practice
+ *      of Programming by Brian Kernighan and Rob Pike, Addison Wesley, 1999.
+ *  (2) The L_Hashmap contains a hashtable with a prime number of pointers
+ *      to lists of hashitems.  The lookup function takes a key and a value,
+ *      which are both 64-bit unsigned integers.  The key has been generated
+ *      by hashing the input object in a way that avoids collisions between
+ *      different objects. The value is an integer that identifies the
+ *      object; typically it is the index into an array of objects.
+ *      The hashtable size is a prime number, and an index into the table
+ *      is made from the key by taking its mod with the hashtable size.
+ *      The index points to a list of hashitems, which have all been hashed
+ *      by the mod function into the same index in the table.
+ *      Because the key is expected to be randomly distributed in uint64,
+ *      the table indices should be uniformly distributed, resulting in
+ *      approximately the same number of items being placed in each of
+ *      these lists.  The list of hashitems is traversed, comparing the
+ *      input uint64 key in the lookup() function with the key stored in
+ *      each hashitem.  If a hashitem is found with a matching key,
+ *      return a pointer to that hashitem.  If not found and the op is
+ *      L_HASH_CREATE, make a new hash item, add it to the list, and
+ *      return a pointer to it.
+ *  (3) The count field in the hashitem gives the number of times the
+ *      key has been seen when storing key/value pairs.
+ *  (4) The val field is the index into an array of the objects.  When
+ *      the hashmap is initially made, it is the index of the first item
+ *      seen with its key.
+ *  (5) For the hashmap to work efficiently, the lists must not become too
+ *      long.  Because in general you do not know the number of objects
+ *      in advance, it is important to be able to dynamically resize
+ *      the hashtable as it grows.  The hashmap is initialized with
+ *      room for some number of hashitems and the maximum average list
+ *      size.  These two numbers determine the size of the hashtable,
+ *      which is constrained to be a prime number.  As the hashtable grows,
+ *      if the average occupancy exceeds the input %maxocc, the hashtable
+ *      size is approximately doubled and the existing items are re-hashed
+ *      into it, mod the new (prime number) table size.
+ * 
+ */ + +/*------------------------------------------------------------------------* + * Hash map structs * + *------------------------------------------------------------------------*/ +/*! General hash map */ +struct L_Hashmap +{ + l_int32 nitems; /*!< number of stored items */ + l_int32 ntogo; /*!< number of items to be stored */ + /*!< before resizing the hashmap */ + l_int32 maxocc; /*!< max average occupancy allowed */ + struct L_Hashitem **hashtab; /*!< array of hash item ptrs */ + l_int32 tabsize; /*!< size of array of hash item ptrs */ +}; +typedef struct L_Hashmap L_HASHMAP; + +/*! Hash item, containing storage for the key, value and count. The key + is a l_uint64, which is hashed by the mod function to find the index + into the hashtab. */ +struct L_Hashitem +{ + l_uint64 key; /*!< key is hashed into index into hashtab */ + l_uint64 val; /*!< number stored associated with the key */ + l_int32 count; /*!< number of elements seen with this key */ + struct L_Hashitem *next; /*!< ptr to the next in the list */ +}; +typedef struct L_Hashitem L_HASHITEM; + + +/*------------------------------------------------------------------------* + * Hashmap flags * + *------------------------------------------------------------------------*/ +/*! Hashmap Lookup */ +enum { + L_UNDEFINED = 0, /*!< invalid operation */ + L_HMAP_CHECK = 1, /*!< check if this key/val has been stored */ + L_HMAP_CREATE = 2 /*!< create and store a hashitem if not found */ +}; + +#endif /* LEPTONICA_HASHMAP_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/heap.h b/third_party/leptonica/uos/amd64/include/leptonica/heap.h new file mode 100644 index 00000000..d39b06b9 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/heap.h @@ -0,0 +1,87 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_HEAP_H +#define LEPTONICA_HEAP_H + +/*! + * \file heap.h + * + *
+ *      Expandable priority queue configured as a heap for arbitrary void* data
+ *
+ *      The L_Heap is used to implement a priority queue.  The elements
+ *      in the heap are ordered in either increasing or decreasing key value.
+ *      The key is a float field 'keyval' that is required to be
+ *      contained in the elements of the queue.
+ *
+ *      The heap is a simple binary tree with the following constraints:
+ *         - the key of each node is >= the keys of the two children
+ *         - the tree is complete, meaning that each level (1, 2, 4, ...)
+ *           is filled and the last level is filled from left to right
+ *
+ *      The tree structure is implicit in the queue array, with the
+ *      array elements numbered as a breadth-first search of the tree
+ *      from left to right.  It is thus guaranteed that the largest
+ *      (or smallest) key belongs to the first element in the array.
+ *
+ *      Heap sort is used to sort the array.  Once an array has been
+ *      sorted as a heap, it is convenient to use it as a priority queue,
+ *      because the min (or max) elements are always at the root of
+ *      the tree (element 0), and once removed, the heap can be
+ *      resorted in not more than log[n] steps, where n is the number
+ *      of elements on the heap.  Likewise, if an arbitrary element is
+ *      added to the end of the array A, the sorted heap can be restored
+ *      in not more than log[n] steps.
+ *
+ *      A L_Heap differs from a L_Queue in that the elements in the former
+ *      are sorted by a key.  Internally, the array is maintained
+ *      as a queue, with a pointer to the end of the array.  The
+ *      head of the array always remains at array[0].  The array is
+ *      maintained (sorted) as a heap.  When an item is removed from
+ *      the head, the last item takes its place (thus reducing the
+ *      array length by 1), and this is followed by array element
+ *      swaps to restore the heap property.   When an item is added,
+ *      it goes at the end of the array, and is swapped up to restore
+ *      the heap.  If the ptr array is full, adding another item causes
+ *      the ptr array size to double.
+ *
+ *      For further implementation details, see heap.c.
+ * 
+ */ + +/*! Heap of arbitrary void* data */ +struct L_Heap +{ + l_int32 nalloc; /*!< size of allocated ptr array */ + l_int32 n; /*!< number of elements stored in the heap */ + void **array; /*!< ptr array */ + l_int32 direction; /*!< L_SORT_INCREASING or L_SORT_DECREASING */ +}; +typedef struct L_Heap L_HEAP; + + +#endif /* LEPTONICA_HEAP_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/imageio.h b/third_party/leptonica/uos/amd64/include/leptonica/imageio.h new file mode 100644 index 00000000..d2362fe7 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/imageio.h @@ -0,0 +1,250 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +/*! + * \file imageio.h + * + *
+ *  General features of image I/O in leptonica
+ *
+ *  At present, there are 9 file formats for images that can be read
+ *  and written:
+ *      png (requires libpng, libz)
+ *      jpeg (requires libjpeg)
+ *      tiff (requires libtiff, libz)
+ *      gif (requires libgif)
+ *      webp (requires libwebp)
+ *      jp2 (requires libopenjp2)
+ *      bmp (no library required)
+ *      pnm (no library required)
+ *      spix (no library required)
+ *  Additionally, there are two file formats for writing (only) images:
+ *      PostScript (requires libpng, libz, libjpeg, libtiff)
+ *      pdf (requires libpng, libz, libjpeg, libtiff)
+ *
+ *  For all 9 read/write formats, leptonica provides interconversion
+ *  between pix (with raster data) and formatted image data:
+ *      Conversion from pix (typically compression):
+ *          pixWrite():        pix --> file
+ *          pixWriteStream():  pix --> filestream (aka FILE*)
+ *          pixWriteMem():     pix --> memory buffer
+ *      Conversion to pix (typically decompression):
+ *          pixRead():         file --> pix
+ *          pixReadStream():   filestream --> pix
+ *          pixReadMem():      memory buffer --> pix
+ *
+ *  Conversions for which the image data is not compressed are:
+ *     * uncompressed tiff   (IFF_TIFF)
+ *     * bmp
+ *     * pnm
+ *     * spix (fast serialization that copies the pix raster data)
+ *
+ *  The image header (metadata) information can be read from either
+ *  the compressed file or a memory buffer, for all 9 formats.
+ * 
+ */ + +#ifndef LEPTONICA_IMAGEIO_H +#define LEPTONICA_IMAGEIO_H + +/* --------------------------------------------------------------- * + * Image file format types * + * --------------------------------------------------------------- */ +/* + * The IFF_DEFAULT flag is used to write the file out in the + * same (input) file format that the pix was read from. If the pix + * was not read from file, the input format field will be + * IFF_UNKNOWN and the output file format will be chosen to + * be compressed and lossless; namely, IFF_TIFF_G4 for d = 1 + * and IFF_PNG for everything else. + * + * In the future, new format types that have defined extensions + * will be added before IFF_DEFAULT, and will be kept in sync with + * the file format extensions in writefile.c. The positions of + * file formats before IFF_DEFAULT will remain invariant. + */ + +/*! Image Formats */ +enum { + IFF_UNKNOWN = 0, + IFF_BMP = 1, + IFF_JFIF_JPEG = 2, + IFF_PNG = 3, + IFF_TIFF = 4, + IFF_TIFF_PACKBITS = 5, + IFF_TIFF_RLE = 6, + IFF_TIFF_G3 = 7, + IFF_TIFF_G4 = 8, + IFF_TIFF_LZW = 9, + IFF_TIFF_ZIP = 10, + IFF_PNM = 11, + IFF_PS = 12, + IFF_GIF = 13, + IFF_JP2 = 14, + IFF_WEBP = 15, + IFF_LPDF = 16, + IFF_TIFF_JPEG = 17, + IFF_DEFAULT = 18, + IFF_SPIX = 19 +}; + +/* Convenient macro for checking requested tiff output */ +#define L_FORMAT_IS_TIFF(f) ((f) == IFF_TIFF || (f) == IFF_TIFF_PACKBITS || \ + (f) == IFF_TIFF_RLE || (f) == IFF_TIFF_G3 || \ + (f) == IFF_TIFF_G4 || (f) == IFF_TIFF_LZW || \ + (f) == IFF_TIFF_ZIP || (f) == IFF_TIFF_JPEG) + + +/* --------------------------------------------------------------- * + * Format header ids * + * --------------------------------------------------------------- */ +/*! Header Ids */ +enum { + BMP_ID = 0x4d42, /*!< BM - for bitmaps */ + TIFF_BIGEND_ID = 0x4d4d, /*!< MM - for 'motorola' */ + TIFF_LITTLEEND_ID = 0x4949 /*!< II - for 'intel' */ +}; + + +/* --------------------------------------------------------------- * + * Hinting bit flags in jpeg reader * + * --------------------------------------------------------------- */ +/*! Jpeg Hints */ +/* The default behavior is now to fail on data corruption. */ +enum { + L_JPEG_READ_LUMINANCE = 1, /*!< only want luminance data; no chroma */ + L_JPEG_CONTINUE_WITH_BAD_DATA = 2 /*!< return possibly damaged pix */ +}; + + +/* --------------------------------------------------------------- * + * Jp2k codecs * + * --------------------------------------------------------------- */ +/*! Jp2k Codecs */ +enum { + L_J2K_CODEC = 1, /*!< codestream */ + L_JP2_CODEC = 2 /*!< file format with 'ihdr' */ +}; + + +/* --------------------------------------------------------------- * + * Pdf formatted encoding types * + * --------------------------------------------------------------- */ +/*! Pdf Encoding */ +enum { + L_DEFAULT_ENCODE = 0, /*!< use default encoding based on image */ + L_JPEG_ENCODE = 1, /*!< use dct encoding: 8 and 32 bpp, no cmap */ + L_G4_ENCODE = 2, /*!< use ccitt g4 fax encoding: 1 bpp */ + L_FLATE_ENCODE = 3, /*!< use flate encoding: any depth, cmap ok */ + L_JP2K_ENCODE = 4 /*!< use jp2k encoding: 8 and 32 bpp, no cmap */ +}; + + +/* --------------------------------------------------------------- * + * Compressed image data * + * --------------------------------------------------------------- */ +/* + * In use, either datacomp or data85 will be produced, depending + * on whether the data needs to be ascii85 encoded. PostScript + * requires ascii85 encoding; pdf does not. + * + * For the colormap (flate compression only), PostScript uses ascii85 + * encoding and pdf uses a bracketed array of space-separated + * hex-encoded rgb triples. Only tiff g4 (type == L_G4_ENCODE) uses + * the minisblack field. + */ + +/*! Compressed image data */ +struct L_Compressed_Data +{ + l_int32 type; /*!< encoding type: L_JPEG_ENCODE, etc */ + l_uint8 *datacomp; /*!< gzipped raster data */ + size_t nbytescomp; /*!< number of compressed bytes */ + char *data85; /*!< ascii85-encoded gzipped raster data */ + size_t nbytes85; /*!< number of ascii85 encoded bytes */ + char *cmapdata85; /*!< ascii85-encoded uncompressed cmap */ + char *cmapdatahex; /*!< hex pdf array for the cmap */ + l_int32 ncolors; /*!< number of colors in cmap */ + l_int32 w; /*!< image width */ + l_int32 h; /*!< image height */ + l_int32 bps; /*!< bits/sample; typ. 1, 2, 4 or 8 */ + l_int32 spp; /*!< samples/pixel; typ. 1 or 3 */ + l_int32 minisblack; /*!< tiff g4 photometry */ + l_int32 predictor; /*!< flate data has PNG predictors */ + size_t nbytes; /*!< number of uncompressed raster bytes */ + l_int32 res; /*!< resolution (ppi) */ +}; +typedef struct L_Compressed_Data L_COMP_DATA; + + +/* ------------------------------------------------------------------------- * + * Pdf multi image flags * + * ------------------------------------------------------------------------- */ +/*! Pdf MultiImage */ +enum { + L_FIRST_IMAGE = 1, /*!< first image to be used */ + L_NEXT_IMAGE = 2, /*!< intermediate image; not first or last */ + L_LAST_IMAGE = 3 /*!< last image to be used */ +}; + + +/* ------------------------------------------------------------------------- * + * Intermediate pdf generation data * + * ------------------------------------------------------------------------- */ +/* + * This accumulates data for generating a pdf of a single page consisting + * of an arbitrary number of images. + * + * None of the strings have a trailing newline. + */ + +/*! Intermediate pdf generation data */ +struct L_Pdf_Data +{ + char *title; /*!< optional title for pdf */ + l_int32 n; /*!< number of images */ + l_int32 ncmap; /*!< number of colormaps */ + struct L_Ptra *cida; /*!< array of compressed image data */ + char *id; /*!< %PDF-1.2 id string */ + char *obj1; /*!< catalog string */ + char *obj2; /*!< metadata string */ + char *obj3; /*!< pages string */ + char *obj4; /*!< page string (variable data) */ + char *obj5; /*!< content string (variable data) */ + char *poststream; /*!< post-binary-stream string */ + char *trailer; /*!< trailer string (variable data) */ + struct Pta *xy; /*!< store (xpt, ypt) array */ + struct Pta *wh; /*!< store (wpt, hpt) array */ + struct Box *mediabox; /*!< bounding region for all images */ + struct Sarray *saprex; /*!< pre-binary-stream xobject strings */ + struct Sarray *sacmap; /*!< colormap pdf object strings */ + struct L_Dna *objsize; /*!< sizes of each pdf string object */ + struct L_Dna *objloc; /*!< location of each pdf string object */ + l_int32 xrefloc; /*!< location of xref */ +}; +typedef struct L_Pdf_Data L_PDF_DATA; + +#endif /* LEPTONICA_IMAGEIO_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/jbclass.h b/third_party/leptonica/uos/amd64/include/leptonica/jbclass.h new file mode 100644 index 00000000..62aad60a --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/jbclass.h @@ -0,0 +1,142 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_JBCLASS_H +#define LEPTONICA_JBCLASS_H + +/*! + * \file jbclass.h + * + * JbClasser + * JbData + */ + + + /*! + *
+     * The JbClasser struct holds all the data accumulated during the
+     * classification process that can be used for a compressed
+     * jbig2-type representation of a set of images.  This is created
+     * in an initialization process and added to as the selected components
+     * on each successive page are analyzed.
+     * 
+ */ +struct JbClasser +{ + struct Sarray *safiles; /*!< input page image file names */ + l_int32 method; /*!< JB_RANKHAUS, JB_CORRELATION */ + l_int32 components; /*!< JB_CONN_COMPS, JB_CHARACTERS or */ + /*!< JB_WORDS */ + l_int32 maxwidth; /*!< max component width allowed */ + l_int32 maxheight; /*!< max component height allowed */ + l_int32 npages; /*!< number of pages already processed */ + l_int32 baseindex; /*!< number components already processed */ + /*!< on fully processed pages */ + struct Numa *nacomps; /*!< number of components on each page */ + l_int32 sizehaus; /*!< size of square struct elem for haus */ + l_float32 rankhaus; /*!< rank val of haus match, each way */ + l_float32 thresh; /*!< thresh value for correlation score */ + l_float32 weightfactor; /*!< corrects thresh value for heaver */ + /*!< components; use 0 for no correction */ + struct Numa *naarea; /*!< w * h of each template, without */ + /*!< extra border pixels */ + l_int32 w; /*!< max width of original src images */ + l_int32 h; /*!< max height of original src images */ + l_int32 nclass; /*!< current number of classes */ + l_int32 keep_pixaa; /*!< If zero, pixaa isn't filled */ + struct Pixaa *pixaa; /*!< instances for each class; unbordered */ + struct Pixa *pixat; /*!< templates for each class; bordered */ + /*!< and not dilated */ + struct Pixa *pixatd; /*!< templates for each class; bordered */ + /*!< and dilated */ + struct L_DnaHash *dahash; /*!< Hash table to find templates by size */ + struct Numa *nafgt; /*!< fg areas of undilated templates; */ + /*!< only used for rank < 1.0 */ + struct Pta *ptac; /*!< centroids of all bordered cc */ + struct Pta *ptact; /*!< centroids of all bordered template cc */ + struct Numa *naclass; /*!< array of class ids for each component */ + struct Numa *napage; /*!< array of page nums for each component */ + struct Pta *ptaul; /*!< array of UL corners at which the */ + /*!< template is to be placed for each */ + /*!< component */ + struct Pta *ptall; /*!< similar to ptaul, but for LL corners */ +}; +typedef struct JbClasser JBCLASSER; + + + /*! + *
+     * The JbData struct holds all the data required for
+     * the compressed jbig-type representation of a set of images.
+     * The data can be written to file, read back, and used
+     * to regenerate an approximate version of the original,
+     * which differs in two ways from the original:
+     *   (1) It uses a template image for each c.c. instead of the
+     *       original instance, for each occurrence on each page.
+     *   (2) It discards components with either a height or width larger
+     *       than the maximuma, given here by the lattice dimensions
+     *       used for storing the templates.
+     * 
+ */ +struct JbData +{ + struct Pix *pix; /*!< template composite for all classes */ + l_int32 npages; /*!< number of pages */ + l_int32 w; /*!< max width of original page images */ + l_int32 h; /*!< max height of original page images */ + l_int32 nclass; /*!< number of classes */ + l_int32 latticew; /*!< lattice width for template composite */ + l_int32 latticeh; /*!< lattice height for template composite */ + struct Numa *naclass; /*!< array of class ids for each component */ + struct Numa *napage; /*!< array of page nums for each component */ + struct Pta *ptaul; /*!< array of UL corners at which the */ + /*!< template is to be placed for each */ + /*!< component */ +}; +typedef struct JbData JBDATA; + + +/*! JB Classifier */ +enum { + JB_RANKHAUS = 0, + JB_CORRELATION = 1 +}; + + /*! For jbGetComponents(): type of component to extract from images */ +/*! JB Component */ +enum { + JB_CONN_COMPS = 0, + JB_CHARACTERS = 1, + JB_WORDS = 2 +}; + + /*! These parameters are used for naming the two files + * in which the jbig2-like compressed data is stored. */ +#define JB_TEMPLATE_EXT ".templates.png" +#define JB_DATA_EXT ".data" + + +#endif /* LEPTONICA_JBCLASS_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/leptwin.h b/third_party/leptonica/uos/amd64/include/leptonica/leptwin.h new file mode 100644 index 00000000..451da6b6 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/leptwin.h @@ -0,0 +1,45 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifdef _WIN32 +#ifndef LEPTONICA_LEPTWIN_H +#define LEPTONICA_LEPTWIN_H + +#include "allheaders.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +LEPT_DLL extern HBITMAP pixGetWindowsHBITMAP( PIX *pixs ); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* LEPTONICA_LEPTWIN_H */ +#endif /* _WIN32 */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/list.h b/third_party/leptonica/uos/amd64/include/leptonica/list.h new file mode 100644 index 00000000..d207e79f --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/list.h @@ -0,0 +1,90 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + + +#ifndef LEPTONICA_LIST_H +#define LEPTONICA_LIST_H + +/*! + * \file list.h + * + *
+ *       Cell for double-linked lists
+ *
+ *       This allows composition of a list of cells with
+ *           prev, next and data pointers.  Generic data
+ *           structures hang on the list cell data pointers.
+ *
+ *       The list is not circular because that would add much
+ *           complexity in traversing the list under general
+ *           conditions where list cells can be added and removed.
+ *           The only disadvantage of not having the head point to
+ *           the last cell is that the list must be traversed to
+ *           find its tail.  However, this traversal is fast, and
+ *           the listRemoveFromTail() function updates the tail
+ *           so there is no searching overhead with repeated use.
+ *
+ *       The list macros are used to run through a list, and their
+ *       use is encouraged.  They are invoked, e.g., as
+ *
+ *             DLLIST  *head, *elem;
+ *             ...
+ *             L_BEGIN_LIST_FORWARD(head, elem)
+ *                 data >
+ *             L_END_LIST
+ * 
+ */ + +struct DoubleLinkedList +{ + struct DoubleLinkedList *prev; + struct DoubleLinkedList *next; + void *data; +}; +typedef struct DoubleLinkedList DLLIST; + + + /*! Simple list traverse macro - forward */ +#define L_BEGIN_LIST_FORWARD(head, element) \ + { \ + DLLIST *_leptvar_nextelem_; \ + for ((element) = (head); (element); (element) = _leptvar_nextelem_) { \ + _leptvar_nextelem_ = (element)->next; + + + /*! Simple list traverse macro - reverse */ +#define L_BEGIN_LIST_REVERSE(tail, element) \ + { \ + DLLIST *_leptvar_prevelem_; \ + for ((element) = (tail); (element); (element) = _leptvar_prevelem_) { \ + _leptvar_prevelem_ = (element)->prev; + + + /*! Simple list traverse macro - end of a list traverse */ +#define L_END_LIST }} + + +#endif /* LEPTONICA_LIST_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/morph.h b/third_party/leptonica/uos/amd64/include/leptonica/morph.h new file mode 100644 index 00000000..34f665fc --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/morph.h @@ -0,0 +1,225 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_MORPH_H +#define LEPTONICA_MORPH_H + +/*! + * \file morph.h + * + *
+ *  Contains the following structs:
+ *      struct Sel
+ *      struct Sela
+ *      struct Kernel
+ *
+ *  Contains definitions for:
+ *      morphological b.c. flags
+ *      structuring element types
+ *      runlength flags for granulometry
+ *      direction flags for grayscale morphology
+ *      morphological operation flags
+ *      standard border size
+ *      grayscale intensity scaling flags
+ *      morphological tophat flags
+ *      arithmetic and logical operator flags
+ *      grayscale morphology selection flags
+ *      distance function b.c. flags
+ *      image comparison flags
+ * 
+ */ + +/*-------------------------------------------------------------------------* + * Sel and Sel array * + *-------------------------------------------------------------------------*/ +#define SEL_VERSION_NUMBER 1 + +/*! Selection */ +struct Sel +{ + l_int32 sy; /*!< sel height */ + l_int32 sx; /*!< sel width */ + l_int32 cy; /*!< y location of sel origin */ + l_int32 cx; /*!< x location of sel origin */ + l_int32 **data; /*!< {0,1,2}; data[i][j] in [row][col] order */ + char *name; /*!< used to find sel by name */ +}; +typedef struct Sel SEL; + +/*! Array of Sel */ +struct Sela +{ + l_int32 n; /*!< number of sel actually stored */ + l_int32 nalloc; /*!< size of allocated ptr array */ + struct Sel **sel; /*!< sel ptr array */ +}; +typedef struct Sela SELA; + + +/*-------------------------------------------------------------------------* + * Kernel * + *-------------------------------------------------------------------------*/ +#define KERNEL_VERSION_NUMBER 2 + +/*! Kernel */ +struct L_Kernel +{ + l_int32 sy; /*!< kernel height */ + l_int32 sx; /*!< kernel width */ + l_int32 cy; /*!< y location of kernel origin */ + l_int32 cx; /*!< x location of kernel origin */ + l_float32 **data; /*!< data[i][j] in [row][col] order */ +}; +typedef struct L_Kernel L_KERNEL; + + +/*-------------------------------------------------------------------------* + * Morphological boundary condition flags * + * * + * Two types of boundary condition for erosion. * + * The global variable MORPH_BC takes on one of these two values. * + * See notes in morph.c for usage. * + *-------------------------------------------------------------------------*/ +/*! Morph Boundary */ +enum { + SYMMETRIC_MORPH_BC = 0, + ASYMMETRIC_MORPH_BC = 1 +}; + +/*-------------------------------------------------------------------------* + * Structuring element vals * + *-------------------------------------------------------------------------*/ +/*! SEL Vals */ +enum { + SEL_DONT_CARE = 0, + SEL_HIT = 1, + SEL_MISS = 2 +}; + +/*-------------------------------------------------------------------------* + * Runlength flags for granulometry * + *-------------------------------------------------------------------------*/ +/*! Runlength Polarity */ +enum { + L_RUN_OFF = 0, + L_RUN_ON = 1 +}; + +/*-------------------------------------------------------------------------* + * Direction flags for grayscale morphology, granulometry, * + * composable Sels, convolution, etc. * + *-------------------------------------------------------------------------*/ +/*! Direction Flags */ +enum { + L_HORIZ = 1, + L_VERT = 2, + L_BOTH_DIRECTIONS = 3 +}; + +/*-------------------------------------------------------------------------* + * Morphological operation flags * + *-------------------------------------------------------------------------*/ +/*! Morph Operator */ +enum { + L_MORPH_DILATE = 1, + L_MORPH_ERODE = 2, + L_MORPH_OPEN = 3, + L_MORPH_CLOSE = 4, + L_MORPH_HMT = 5 +}; + +/*-------------------------------------------------------------------------* + * Grayscale intensity scaling flags * + *-------------------------------------------------------------------------*/ +/*! Pixel Value Scaling */ +enum { + L_LINEAR_SCALE = 1, + L_LOG_SCALE = 2 +}; + +/*-------------------------------------------------------------------------* + * Morphological tophat flags * + *-------------------------------------------------------------------------*/ +/*! Morph Tophat */ +enum { + L_TOPHAT_WHITE = 0, + L_TOPHAT_BLACK = 1 +}; + +/*-------------------------------------------------------------------------* + * Arithmetic and logical operator flags * + * (use on grayscale images and Numas) * + *-------------------------------------------------------------------------*/ +/*! ArithLogical Ops */ +enum { + L_ARITH_ADD = 1, + L_ARITH_SUBTRACT = 2, + L_ARITH_MULTIPLY = 3, /* on numas only */ + L_ARITH_DIVIDE = 4, /* on numas only */ + L_UNION = 5, /* on numas only */ + L_INTERSECTION = 6, /* on numas only */ + L_SUBTRACTION = 7, /* on numas only */ + L_EXCLUSIVE_OR = 8 /* on numas only */ +}; + +/*-------------------------------------------------------------------------* + * Min/max selection flags * + *-------------------------------------------------------------------------*/ +/*! MinMax Selection */ +enum { + L_CHOOSE_MIN = 1, /* useful in a downscaling "erosion" */ + L_CHOOSE_MAX = 2, /* useful in a downscaling "dilation" */ + L_CHOOSE_MAXDIFF = 3, /* useful in a downscaling contrast */ + L_CHOOSE_MIN_BOOST = 4, /* use a modification of the min value */ + L_CHOOSE_MAX_BOOST = 5 /* use a modification of the max value */ +}; + +/*-------------------------------------------------------------------------* + * Exterior value b.c. for distance function flags * + *-------------------------------------------------------------------------*/ +/*! Exterior Value */ +enum { + L_BOUNDARY_BG = 1, /* assume bg outside image */ + L_BOUNDARY_FG = 2 /* assume fg outside image */ +}; + +/*-------------------------------------------------------------------------* + * Image comparison flags * + *-------------------------------------------------------------------------*/ +/*! Image Comparison */ +enum { + L_COMPARE_XOR = 1, + L_COMPARE_SUBTRACT = 2, + L_COMPARE_ABS_DIFF = 3 +}; + +/*-------------------------------------------------------------------------* + * Standard size of border added around images for special processing * + *-------------------------------------------------------------------------*/ +static const l_int32 ADDED_BORDER = 32; /*!< pixels, not bits */ + + +#endif /* LEPTONICA_MORPH_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/pix.h b/third_party/leptonica/uos/amd64/include/leptonica/pix.h new file mode 100644 index 00000000..a2fe8e1a --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/pix.h @@ -0,0 +1,1094 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_PIX_H +#define LEPTONICA_PIX_H + +/*! + * \file pix.h + * + *
+ *   Valid image types in leptonica:
+ *       Pix: 1 bpp, with and without colormap
+ *       Pix: 2 bpp, with and without colormap
+ *       Pix: 4 bpp, with and without colormap
+ *       Pix: 8 bpp, with and without colormap
+ *       Pix: 16 bpp (1 spp)
+ *       Pix: 32 bpp (rgb, 3 spp)
+ *       Pix: 32 bpp (rgba, 4 spp)
+ *       FPix: 32 bpp float
+ *       DPix: 64 bpp double
+ *       Notes:
+ *          (1) The only valid Pix image type with alpha is rgba.
+ *              In particular, the alpha component is not used in
+ *              cmapped images.
+ *          (2) PixComp can hold any Pix with IFF_PNG encoding.
+ *
+ *   Contents:
+ *
+ *   (1) This file has typedefs for most of the image-related structs
+ *       used in leptonica:
+ *         struct Pix
+ *         struct PixColormap
+ *         struct RGBA_Quad
+ *         struct Pixa
+ *         struct Pixaa
+ *         struct Box
+ *         struct Boxa
+ *         struct Boxaa
+ *         struct Pta
+ *         struct Ptaa
+ *         struct Pixacc
+ *         struct PixTiling
+ *         struct FPix
+ *         struct FPixa
+ *         struct DPix
+ *         struct PixComp
+ *         struct PixaComp
+ *
+ *   (2) This file has definitions for:
+ *         Colors for RGBA
+ *         Colors for drawing boxes
+ *         Perceptual color weights
+ *         Colormap conversion flags
+ *         Rasterop bit flags
+ *         Structure access flags (for insert, copy, clone, copy-clone)
+ *         Sorting flags (by type and direction)
+ *         Blending flags
+ *         Graphics pixel setting flags
+ *         Size and location filter flags
+ *         Color component selection flags
+ *         Color content flags
+ *         16-bit conversion flags
+ *         Rotation and shear flags
+ *         Affine transform order flags
+ *         Grayscale filling flags
+ *         Flags for setting to white or black
+ *         Flags for getting white or black pixel value
+ *         Flags for 8 and 16 bit pixel sums
+ *         Dithering flags
+ *         Distance flags
+ *         Value flags
+ *         Statistical measures
+ *         Set selection flags
+ *         Text orientation flags
+ *         Edge orientation flags
+ *         Line orientation flags
+ *         Image orientation flags
+ *         Scan direction flags
+ *         Box size adjustment flags
+ *         Flags for modifying box boundaries using a second box
+ *         Handling overlapping bounding boxes in boxa
+ *         Selecting or making a box from two (intersecting) boxes
+ *         Flags for replacing invalid boxes
+ *         Flags for box corners and center
+ *         Horizontal warp
+ *         Pixel selection for resampling
+ *         Thinning flags
+ *         Runlength flags
+ *         Edge filter flags
+ *         Subpixel color component ordering in LCD display
+ *         HSV histogram flags
+ *         Region flags (inclusion, exclusion)
+ *         Flags for adding text to a pix
+ *         Flags for plotting on a pix
+ *         Flags for making simple masks
+ *         Flags for selecting display program
+ *         Flags in the 'special' pix field for non-default operations
+ *         Handling negative values in conversion to unsigned int
+ *         Relative to zero flags
+ *         Flags for adding or removing trailing slash from string
+ *
+ *   (3) This file has typedefs for the pix allocator and deallocator functions
+ *         alloc_fn()
+ *         dealloc_fn().
+ *
+ *   -------------------------------------------------------------------
+ *   Notes on the pixels in the raster image.  This information can also
+ *   be found in pix_internal.h.
+ *
+ *       (1) The image data is stored in a single contiguous
+ *           array of l_uint32, into which the pixels are packed.
+ *           By "packed" we mean that there are no unused bits
+ *           between pixels, except for end-of-line padding to
+ *           satisfy item (2) below.
+ *
+ *       (2) Every image raster line begins on a 32-bit word
+ *           boundary within this array.
+ *
+ *       (3) Pix image data is stored in 32-bit units, with the
+ *           pixels ordered from left to right in the image being
+ *           stored in order from the MSB to LSB within the word,
+ *           for both big-endian and little-endian machines.
+ *           This is the natural ordering for big-endian machines,
+ *           as successive bytes are stored and fetched progressively
+ *           to the right.  However, for little-endians, when storing
+ *           we re-order the bytes from this byte stream order, and
+ *           reshuffle again for byte access on 32-bit entities.
+ *           So if the bytes come in sequence from left to right, we
+ *           store them on little-endians in byte order:
+ *                3 2 1 0 7 6 5 4 ...
+ *           This MSB to LSB ordering allows left and right shift
+ *           operations on 32 bit words to move the pixels properly.
+ *
+ *       (4) We use 32 bit pixels for both RGB and RGBA color images.
+ *           The A (alpha) byte is ignored in most leptonica functions
+ *           operating on color images.  Within each 4 byte pixel, the
+ *           color samples are ordered from MSB to LSB, as follows:
+ *
+ *                |  MSB  |  2nd MSB  |  3rd MSB  |  LSB  |
+ *                   red      green       blue      alpha
+ *                    0         1           2         3   (big-endian)
+ *                    3         2           1         0   (little-endian)
+ *
+ *           Because we use MSB to LSB ordering within the 32-bit word,
+ *           the individual 8-bit samples can be accessed with
+ *           GET_DATA_BYTE and SET_DATA_BYTE macros, using the
+ *           (implicitly big-ending) ordering
+ *                 red:    byte 0  (MSB)
+ *                 green:  byte 1  (2nd MSB)
+ *                 blue:   byte 2  (3rd MSB)
+ *                 alpha:  byte 3  (LSB)
+ *
+ *           The specific color assignment is made in this file,
+ *           through the definitions of COLOR_RED, etc.  Then the R, G
+ *           B and A sample values can be retrieved using
+ *                 redval = GET_DATA_BYTE(&pixel, COLOR_RED);
+ *                 greenval = GET_DATA_BYTE(&pixel, COLOR_GREEN);
+ *                 blueval = GET_DATA_BYTE(&pixel, COLOR_BLUE);
+ *                 alphaval = GET_DATA_BYTE(&pixel, L_ALPHA_CHANNEL);
+ *           and they can be set with
+ *                 SET_DATA_BYTE(&pixel, COLOR_RED, redval);
+ *                 SET_DATA_BYTE(&pixel, COLOR_GREEN, greenval);
+ *                 SET_DATA_BYTE(&pixel, COLOR_BLUE, blueval);
+ *                 SET_DATA_BYTE(&pixel, L_ALPHA_CHANNEL, alphaval);
+ *
+ *           More efficiently, these components can be extracted directly
+ *           by shifting and masking, explicitly using the values in
+ *           L_RED_SHIFT, etc.:
+ *                 (pixel32 >> L_RED_SHIFT) & 0xff;         (red)
+ *                 (pixel32 >> L_GREEN_SHIFT) & 0xff;       (green)
+ *                 (pixel32 >> L_BLUE_SHIFT) & 0xff;        (blue)
+ *                 (pixel32 >> L_ALPHA_SHIFT) & 0xff;       (alpha)
+ *           The functions extractRGBValues() and extractRGBAValues() are
+ *           provided to do this.  Likewise, the pixels can be set
+ *           directly by shifting, using composeRGBPixel() and
+ *           composeRGBAPixel().
+ *
+ *           All these operations work properly on both big- and little-endians.
+ *
+ *       (5) A reference count is held within each pix, giving the
+ *           number of ptrs to the pix.  When a pixClone() call
+ *           is made, the ref count is increased by 1, and
+ *           when a pixDestroy() call is made, the reference count
+ *           of the pix is decremented.  The pix is only destroyed
+ *           when the reference count goes to zero.
+ *
+ *       (6) Version numbers are used in the serialization of image-related
+ *           data structures.  They are placed in the files, and rarely
+ *           (if ever) change.
+ *
+ *       (7) The serialization dependencies are as follows:
+ *               pixaa  :  pixa  :  boxa
+ *               boxaa  :  boxa
+ *           So, for example, pixaa and boxaa can be changed without
+ *           forcing a change in pixa or boxa.  However, if pixa is
+ *           changed, it forces a change in pixaa, and if boxa is
+ *           changed, if forces a change in the other three.
+ * 
+ */ + +/*-------------------------------------------------------------------------* + * Basic Pix * + *-------------------------------------------------------------------------*/ +/*! Basic Pix */ +typedef struct Pix PIX; + +/*! Colormap of a Pix */ +typedef struct PixColormap PIXCMAP; + + /*! Colormap table entry (after the BMP version). + * Note that the BMP format stores the colormap table exactly + * as it appears here, with color samples being stored sequentially, + * in the order (b,g,r,a). */ +typedef struct RGBA_Quad RGBA_QUAD; + +/*-------------------------------------------------------------------------* + * Pix arrays * + *-------------------------------------------------------------------------*/ +/*! Array of pix */ +typedef struct Pixa PIXA; + +/*! Array of arrays of pix */ +typedef struct Pixaa PIXAA; + +/*-------------------------------------------------------------------------* + * Basic rectangle and rectangle arrays * + *-------------------------------------------------------------------------*/ +/*! Basic rectangle */ +typedef struct Box BOX; + +/*! Array of Box */ +typedef struct Boxa BOXA; + +/*! Array of Boxa */ +typedef struct Boxaa BOXAA; + +/*-------------------------------------------------------------------------* + * Arrays of points * + *-------------------------------------------------------------------------*/ +/*! Array of points */ +typedef struct Pta PTA; + +/*! Array of Pta */ +typedef struct Ptaa PTAA; + +/*-------------------------------------------------------------------------* + * Pix accumulator container * + *-------------------------------------------------------------------------*/ +/*! Pix accumulator container */ +typedef struct Pixacc PIXACC; + +/*-------------------------------------------------------------------------* + * Pix tiling * + *-------------------------------------------------------------------------*/ +/*! Pix tiling */ +typedef struct PixTiling PIXTILING; + +/*-------------------------------------------------------------------------* + * FPix: pix with float array * + *-------------------------------------------------------------------------*/ +/*! Pix with float array */ +typedef struct FPix FPIX; + +/*! Array of FPix */ +typedef struct FPixa FPIXA; + +/*-------------------------------------------------------------------------* + * DPix: pix with double array * + *-------------------------------------------------------------------------*/ +/*! Pix with double array */ +typedef struct DPix DPIX; + +/*-------------------------------------------------------------------------* + * Compressed pix and arrays * + *-------------------------------------------------------------------------*/ +/*! Compressed Pix */ +typedef struct PixComp PIXC; + +/*! Array of compressed pix */ +typedef struct PixaComp PIXAC; + + + +/*-------------------------------------------------------------------------* + * Colors for 32 RGBA * + *-------------------------------------------------------------------------*/ +/*
+ *  Notes:
+ *      (1) These are the byte indices for colors in 32 bpp images.
+ *          They are used through the GET/SET_DATA_BYTE accessors.
+ *          The 4th byte, typically known as the "alpha channel" and used
+ *          for blending, is used to a small extent in leptonica.
+ *      (2) Do not change these values!  If you redefine them, functions
+ *          that have the shifts hardcoded for efficiency and conciseness
+ *          (instead of using the constants below) will break.  These
+ *          functions are labelled with "***"  next to their names at
+ *          the top of the files in which they are defined.
+ *      (3) The shifts to extract the red, green, blue and alpha components
+ *          from a 32 bit pixel are defined here.
+ * 
+ */ + +/*! RGBA Color */ +enum { + COLOR_RED = 0, /*!< red color index in RGBA_QUAD */ + COLOR_GREEN = 1, /*!< green color index in RGBA_QUAD */ + COLOR_BLUE = 2, /*!< blue color index in RGBA_QUAD */ + L_ALPHA_CHANNEL = 3 /*!< alpha value index in RGBA_QUAD */ +}; + +static const l_int32 L_RED_SHIFT = + 8 * (sizeof(l_uint32) - 1 - COLOR_RED); /* 24 */ +static const l_int32 L_GREEN_SHIFT = + 8 * (sizeof(l_uint32) - 1 - COLOR_GREEN); /* 16 */ +static const l_int32 L_BLUE_SHIFT = + 8 * (sizeof(l_uint32) - 1 - COLOR_BLUE); /* 8 */ +static const l_int32 L_ALPHA_SHIFT = + 8 * (sizeof(l_uint32) - 1 - L_ALPHA_CHANNEL); /* 0 */ + + +/*-------------------------------------------------------------------------* + * Colors for drawing boxes * + *-------------------------------------------------------------------------*/ +/*! Box Color */ +enum { + L_DRAW_RED = 0, /*!< draw in red */ + L_DRAW_GREEN = 1, /*!< draw in green */ + L_DRAW_BLUE = 2, /*!< draw in blue */ + L_DRAW_SPECIFIED = 3, /*!< draw specified color */ + L_DRAW_RGB = 4, /*!< draw as sequence of r,g,b */ + L_DRAW_RANDOM = 5 /*!< draw randomly chosen colors */ +}; + + +/*-------------------------------------------------------------------------* + * Perceptual color weights * + *-------------------------------------------------------------------------*/ +/*
+ *  Notes:
+ *      (1) These perceptual weighting factors are ad-hoc, but they do
+ *          add up to 1.  Unlike, for example, the weighting factors for
+ *          converting RGB to luminance, or more specifically to Y in the
+ *          YUV colorspace.  Those numbers come from the
+ *          International Telecommunications Union, via ITU-R.
+ * 
+ */ +static const l_float32 L_RED_WEIGHT = 0.3f; /*!< Percept. weight for red */ +static const l_float32 L_GREEN_WEIGHT = 0.5f; /*!< Percept. weight for green */ +static const l_float32 L_BLUE_WEIGHT = 0.2f; /*!< Percept. weight for blue */ + + +/*-------------------------------------------------------------------------* + * Flags for colormap conversion * + *-------------------------------------------------------------------------*/ +/*! Cmap Conversion */ +enum { + REMOVE_CMAP_TO_BINARY = 0, /*!< remove colormap for conv to 1 bpp */ + REMOVE_CMAP_TO_GRAYSCALE = 1, /*!< remove colormap for conv to 8 bpp */ + REMOVE_CMAP_TO_FULL_COLOR = 2, /*!< remove colormap for conv to 32 bpp */ + REMOVE_CMAP_WITH_ALPHA = 3, /*!< remove colormap and alpha */ + REMOVE_CMAP_BASED_ON_SRC = 4 /*!< remove depending on src format */ +}; + + +/*------------------------------------------------------------------------* + *! + *
+ * The following operation bit flags have been modified from Sun's
+ * original "bitblt" (bit block transfer) operations (from the 1980s).
+ *
+ * The 'op' in 'rasterop' is represented by an integer
+ * composed with Boolean functions using the set of five integers
+ * given below.  The integers, and the op codes resulting from
+ * boolean expressions on them, need only be in the range from 0 to 15.
+ * The function is applied on a per-pixel basis.
+ *
+ * Examples: the op code representing ORing the src and dest
+ * is computed using the bit OR, as PIX_SRC | PIX_DST;  the op
+ * code representing XORing src and dest is found from
+ * PIX_SRC ^ PIX_DST;  the op code representing ANDing src and dest
+ * is found from PIX_SRC & PIX_DST.  Note that
+ * PIX_NOT(PIX_CLR) = PIX_SET, and v.v., as they must be.
+ *
+ * We use the following set of definitions:
+ *
+ *      #define   PIX_SRC      0xc
+ *      #define   PIX_DST      0xa
+ *      #define   PIX_NOT(op)  (op) ^ 0xf
+ *      #define   PIX_CLR      0x0
+ *      #define   PIX_SET      0xf
+ *
+ * [These definitions differ from Sun's, in that Sun left-shifted
+ * each value by 1 pixel, and used the least significant bit as a
+ * flag for the "pseudo-operation" of clipping.  We don't need
+ * this bit, because it is both efficient and safe ALWAYS to clip
+ * the rectangles to the src and dest images, which is what we do.
+ * See the notes in rop.h on the general choice of these bit flags.]
+ *
+ * Here are the 16 unique op flags:
+ *
+ *      PIX_CLR                           0000             0x0
+ *      PIX_SET                           1111             0xf
+ *      PIX_SRC                           1100             0xc
+ *      PIX_DST                           1010             0xa
+ *      PIX_NOT(PIX_SRC)                  0011             0x3
+ *      PIX_NOT(PIX_DST)                  0101             0x5
+ *      PIX_SRC | PIX_DST                 1110             0xe
+ *      PIX_SRC & PIX_DST                 1000             0x8
+ *      PIX_SRC ^ PIX_DST                 0110             0x6
+ *      PIX_NOT(PIX_SRC) | PIX_DST        1011             0xb
+ *      PIX_NOT(PIX_SRC) & PIX_DST        0010             0x2
+ *      PIX_SRC | PIX_NOT(PIX_DST)        1101             0xd
+ *      PIX_SRC & PIX_NOT(PIX_DST)        0100             0x4
+ *      PIX_NOT(PIX_SRC | PIX_DST)        0001             0x1
+ *      PIX_NOT(PIX_SRC & PIX_DST)        0111             0x7
+ *      PIX_NOT(PIX_SRC ^ PIX_DST)        1001             0x9
+ *
+ * 
+ *-------------------------------------------------------------------------*/ + +#define PIX_SRC (0xc) /*!< use source pixels */ +#define PIX_DST (0xa) /*!< use destination pixels */ +#define PIX_NOT(op) ((op) ^ 0x0f) /*!< invert operation %op */ +#define PIX_CLR (0x0) /*!< clear pixels */ +#define PIX_SET (0xf) /*!< set pixels */ + +#define PIX_PAINT (PIX_SRC | PIX_DST) /*!< paint = src | dst */ +#define PIX_MASK (PIX_SRC & PIX_DST) /*!< mask = src & dst */ +#define PIX_SUBTRACT (PIX_DST & PIX_NOT(PIX_SRC)) /*!< subtract = */ + /*!< src & !dst */ +#define PIX_XOR (PIX_SRC ^ PIX_DST) /*!< xor = src ^ dst */ + + +/*-------------------------------------------------------------------------* + * Access and storage flags * + *-------------------------------------------------------------------------*/ +/* + *
+ *  For Pix, Box, Pta and Numa, there are 3 standard methods for handling
+ *  the retrieval or insertion of a struct:
+ *     (1) direct insertion (Don't do this if there is another handle
+ *                           somewhere to this same struct!)
+ *     (2) copy (Always safe, sets up a refcount of 1 on the new object.
+ *               Can be undesirable if very large, such as an image or
+ *               an array of images.)
+ *     (3) clone (Makes another handle to the same struct, and bumps the
+ *                refcount up by 1.  OK to use except in two situations:
+ *                (a) You change data through one of the handles but don't
+ *                    want those changes to be seen by the other handle.
+ *                (b) The application is multi-threaded.  Because the clone
+ *                    operation is not atomic (e.g., locked with a mutex),
+ *                    it is possible to end up with an incorrect ref count,
+ *                    causing either a memory leak or a crash.
+ *
+ *  For Pixa and Boxa, which are structs that hold an array of clonable
+ *  structs, there is an additional method:
+ *     (4) copy-clone (Makes a new higher-level struct with a refcount
+ *                     of 1, but clones all the structs in the array.)
+ *
+ *  Unlike the other structs, when retrieving a string from an Sarray,
+ *  you are allowed to get a handle without a copy or clone (i.e., the
+ *  string is not owned by the handle).  You must not either free the string
+ *  or insert it in some other struct that would own it.  Specifically,
+ *  for an Sarray, the copyflag for retrieval is either:
+ *         L_COPY or L_NOCOPY
+ *  and for insertion, the copyflag is either:
+ *         L_COPY or one of {L_INSERT , L_NOCOPY} (the latter are equivalent
+ *                                                 for insertion))
+ *  Typical patterns are:
+ *  (1) Reference a string in an Sarray with L_NOCOPY and insert a copy
+ *      of it in another Sarray with L_COPY.
+ *  (2) Copy a string from an Sarray with L_COPY and insert it in
+ *      another Sarray with L_INSERT (or L_NOCOPY).
+ *  In both cases, a copy is made and both Sarrays own their instance
+ *  of that string.
+ * 
+ */ +/*! Object Access */ +enum { + L_NOCOPY = 0, /*!< do not copy the object; do not delete the ptr */ + L_INSERT = L_NOCOPY, /*!< stuff it in; do not copy or clone */ + L_COPY = 1, /*!< make/use a copy of the object */ + L_CLONE = 2, /*!< make/use clone (ref count) of the object */ + L_COPY_CLONE = 3 /*!< make a new array object (e.g., pixa) and fill */ + /*!< the array with clones (e.g., pix) */ +}; + +/*----------------------------------------------------------------------------* + * Sort flags * + *----------------------------------------------------------------------------*/ +/*! Sort Mode */ +enum { + L_SHELL_SORT = 1, /*!< use shell sort */ + L_BIN_SORT = 2 /*!< use bin sort */ +}; + +/*! Sort Order */ +enum { + L_SORT_INCREASING = 1, /*!< sort in increasing order */ + L_SORT_DECREASING = 2 /*!< sort in decreasing order */ +}; + +/*! Sort Type */ +enum { + L_SORT_BY_X = 1, /*!< sort box or c.c. by left edge location */ + L_SORT_BY_Y = 2, /*!< sort box or c.c. by top edge location */ + L_SORT_BY_RIGHT = 3, /*!< sort box or c.c. by right edge location */ + L_SORT_BY_BOT = 4, /*!< sort box or c.c. by bot edge location */ + L_SORT_BY_WIDTH = 5, /*!< sort box or c.c. by width */ + L_SORT_BY_HEIGHT = 6, /*!< sort box or c.c. by height */ + L_SORT_BY_MIN_DIMENSION = 7, /*!< sort box or c.c. by min dimension */ + L_SORT_BY_MAX_DIMENSION = 8, /*!< sort box or c.c. by max dimension */ + L_SORT_BY_PERIMETER = 9, /*!< sort box or c.c. by perimeter */ + L_SORT_BY_AREA = 10, /*!< sort box or c.c. by area */ + L_SORT_BY_ASPECT_RATIO = 11 /*!< sort box or c.c. by width/height ratio */ +}; + +/*---------------------------------------------------------------------------* + * Blend flags * + *---------------------------------------------------------------------------*/ +/*! Blend Types */ +enum { + L_BLEND_WITH_INVERSE = 1, /*!< add some of src inverse to itself */ + L_BLEND_TO_WHITE = 2, /*!< shift src colors towards white */ + L_BLEND_TO_BLACK = 3, /*!< shift src colors towards black */ + L_BLEND_GRAY = 4, /*!< blend src directly with blender */ + L_BLEND_GRAY_WITH_INVERSE = 5 /*!< add amount of src inverse to itself, */ + /*!< based on blender pix value */ +}; + +/*! Paint Selection */ +enum { + L_PAINT_LIGHT = 1, /*!< colorize non-black pixels */ + L_PAINT_DARK = 2 /*!< colorize non-white pixels */ +}; + +/*-------------------------------------------------------------------------* + * Graphics pixel setting * + *-------------------------------------------------------------------------*/ +/*! Pixel Setting */ +enum { + L_SET_PIXELS = 1, /*!< set all bits in each pixel to 1 */ + L_CLEAR_PIXELS = 2, /*!< set all bits in each pixel to 0 */ + L_FLIP_PIXELS = 3 /*!< flip all bits in each pixel */ +}; + +/*-------------------------------------------------------------------------* + * Size and location filter flags * + *-------------------------------------------------------------------------*/ +/*! Size Comparison */ +enum { + L_SELECT_IF_LT = 1, /*!< save if value is less than threshold */ + L_SELECT_IF_GT = 2, /*!< save if value is more than threshold */ + L_SELECT_IF_LTE = 3, /*!< save if value is <= to the threshold */ + L_SELECT_IF_GTE = 4 /*!< save if value is >= to the threshold */ +}; + +/*! Size Selection */ +enum { + L_SELECT_BY_WIDTH = 1, /*!< select by width; 1 bpp */ + L_SELECT_BY_HEIGHT = 2, /*!< select by height; 1 bpp */ + L_SELECT_BY_MAX_DIMENSION = 3, /*!< select by max of width and */ + /*!< height; 1 bpp */ + L_SELECT_BY_AREA = 4, /*!< select by foreground area; 1 bpp */ + L_SELECT_BY_PERIMETER = 5 /*!< select by perimeter; 1 bpp */ +}; + +/*! Location Filter */ +enum { + L_SELECT_WIDTH = 1, /*!< width must satisfy constraint */ + L_SELECT_HEIGHT = 2, /*!< height must satisfy constraint */ + L_SELECT_XVAL = 3, /*!< x value must satisfy constraint */ + L_SELECT_YVAL = 4, /*!< y value must satisfy constraint */ + L_SELECT_IF_EITHER = 5, /*!< either width or height (or xval */ + /*!< or yval) can satisfy constraint */ + L_SELECT_IF_BOTH = 6 /*!< both width and height (or xval */ + /*!< and yval must satisfy constraint */ +}; + +/*! Boxa Check */ +enum { + L_CHECK_WIDTH = 1, /*!< check and possibly modify width */ + L_CHECK_HEIGHT = 2, /*!< check and possibly modify height */ + L_CHECK_BOTH = 3 /*!< check and possibly modify both */ +}; + +/*-------------------------------------------------------------------------* + * Color component selection flags * + *-------------------------------------------------------------------------*/ +/*! Color Selection */ +enum { + L_SELECT_RED = 1, /*!< use red component */ + L_SELECT_GREEN = 2, /*!< use green component */ + L_SELECT_BLUE = 3, /*!< use blue component */ + L_SELECT_MIN = 4, /*!< use min color component */ + L_SELECT_MAX = 5, /*!< use max color component */ + L_SELECT_AVERAGE = 6, /*!< use average of color components */ + L_SELECT_HUE = 7, /*!< use hue value (in HSV color space) */ + L_SELECT_SATURATION = 8, /*!< use saturation value (in HSV space) */ + L_SELECT_WEIGHTED = 9 /*!< use weighted average of color comps */ +}; + +/*-------------------------------------------------------------------------* + * Color content flags * + *-------------------------------------------------------------------------*/ +/*! Color Content */ +enum { + L_INTERMED_DIFF = 1, /*!< intermediate of diff component values */ + L_AVE_MAX_DIFF_2 = 2, /*!< diff average closest comps to third */ + L_MAX_DIFF = 3 /*!< maximum diff of component values */ +}; + +/*-------------------------------------------------------------------------* + * 16-bit conversion flags * + *-------------------------------------------------------------------------*/ +/*! 16-bit Conversion */ +enum { + L_LS_BYTE = 1, /*!< use LSB */ + L_MS_BYTE = 2, /*!< use MSB */ + L_AUTO_BYTE = 3, /*!< use LSB if max(val) < 256; else MSB */ + L_CLIP_TO_FF = 4, /*!< use max(val, 255) */ + L_LS_TWO_BYTES = 5, /*!< use two LSB */ + L_MS_TWO_BYTES = 6, /*!< use two MSB */ + L_CLIP_TO_FFFF = 7 /*!< use max(val, 65535) */ +}; + +/*-------------------------------------------------------------------------* + * Rotate and shear flags * + *-------------------------------------------------------------------------*/ +/*! Rotation Type */ +enum { + L_ROTATE_AREA_MAP = 1, /*!< use area map rotation, if possible */ + L_ROTATE_SHEAR = 2, /*!< use shear rotation */ + L_ROTATE_SAMPLING = 3 /*!< use sampling */ +}; + +/*! Background Color */ +enum { + L_BRING_IN_WHITE = 1, /*!< bring in white pixels from the outside */ + L_BRING_IN_BLACK = 2 /*!< bring in black pixels from the outside */ +}; + +/*! Shear Point */ +enum { + L_SHEAR_ABOUT_CORNER = 1, /*!< shear image about UL corner */ + L_SHEAR_ABOUT_CENTER = 2 /*!< shear image about center */ +}; + +/*-------------------------------------------------------------------------* + * Affine transform order flags * + *-------------------------------------------------------------------------*/ +/*! Affine Transform Order */ +enum { + L_TR_SC_RO = 1, /*!< translate, scale, rotate */ + L_SC_RO_TR = 2, /*!< scale, rotate, translate */ + L_RO_TR_SC = 3, /*!< rotate, translate, scale */ + L_TR_RO_SC = 4, /*!< translate, rotate, scale */ + L_RO_SC_TR = 5, /*!< rotate, scale, translate */ + L_SC_TR_RO = 6 /*!< scale, translate, rotate */ +}; + +/*-------------------------------------------------------------------------* + * Grayscale filling flags * + *-------------------------------------------------------------------------*/ +/*! Grayscale Fill */ +enum { + L_FILL_WHITE = 1, /*!< fill white pixels (e.g, in fg map) */ + L_FILL_BLACK = 2 /*!< fill black pixels (e.g., in bg map) */ +}; + +/*-------------------------------------------------------------------------* + * Flags for setting to white or black * + *-------------------------------------------------------------------------*/ +/*! BlackWhite Set */ +enum { + L_SET_WHITE = 1, /*!< set pixels to white */ + L_SET_BLACK = 2 /*!< set pixels to black */ +}; + +/*-------------------------------------------------------------------------* + * Flags for getting white or black value * + *-------------------------------------------------------------------------*/ +/*! BlackWhite Get */ +enum { + L_GET_WHITE_VAL = 1, /*!< get white pixel value */ + L_GET_BLACK_VAL = 2 /*!< get black pixel value */ +}; + +/*-------------------------------------------------------------------------* + * Flags for 8 bit and 16 bit pixel sums * + *-------------------------------------------------------------------------*/ +/*! BlackWhite Sum */ +enum { + L_WHITE_IS_MAX = 1, /*!< white pixels are 0xff or 0xffff; black are 0 */ + L_BLACK_IS_MAX = 2 /*!< black pixels are 0xff or 0xffff; white are 0 */ +}; + +/*-------------------------------------------------------------------------* + * Dither parameters * + * If within this grayscale distance from black or white, * + * do not propagate excess or deficit to neighboring pixels. * + *-------------------------------------------------------------------------*/ +/*! Dither Distance */ +enum { + DEFAULT_CLIP_LOWER_1 = 10, /*!< dist to black with no prop; 1 bpp */ + DEFAULT_CLIP_UPPER_1 = 10, /*!< dist to black with no prop; 1 bpp */ + DEFAULT_CLIP_LOWER_2 = 5, /*!< dist to black with no prop; 2 bpp */ + DEFAULT_CLIP_UPPER_2 = 5 /*!< dist to black with no prop; 2 bpp */ +}; + +/*-------------------------------------------------------------------------* + * Distance type flags * + *-------------------------------------------------------------------------*/ +/*! Distance Type */ +enum { + L_MANHATTAN_DISTANCE = 1, /*!< L1 distance (e.g., in color space) */ + L_EUCLIDEAN_DISTANCE = 2 /*!< L2 distance */ +}; + +/*-------------------------------------------------------------------------* + * Distance Value flags * + *-------------------------------------------------------------------------*/ +/*! Distance Value */ +enum { + L_NEGATIVE = 1, /*!< values < 0 */ + L_NON_NEGATIVE = 2, /*!< values >= 0 */ + L_POSITIVE = 3, /*!< values > 0 */ + L_NON_POSITIVE = 4, /*!< values <= 0 */ + L_ZERO = 5, /*!< values = 0 */ + L_ALL = 6 /*!< all values */ +}; + +/*-------------------------------------------------------------------------* + * Statistical measures * + *-------------------------------------------------------------------------*/ +/*! Stats Type */ +enum { + L_MEAN_ABSVAL = 1, /*!< average of abs values */ + L_MEDIAN_VAL = 2, /*!< median value of set */ + L_MODE_VAL = 3, /*!< mode value of set */ + L_MODE_COUNT = 4, /*!< mode count of set */ + L_ROOT_MEAN_SQUARE = 5, /*!< rms of values */ + L_STANDARD_DEVIATION = 6, /*!< standard deviation from mean */ + L_VARIANCE = 7 /*!< variance of values */ +}; + +/*-------------------------------------------------------------------------* + * Set index selection flags * + *-------------------------------------------------------------------------*/ +/*! Index Selection */ +enum { + L_CHOOSE_CONSECUTIVE = 1, /*!< select 'n' consecutive */ + L_CHOOSE_SKIP_BY = 2 /*!< select at intervals of 'n' */ +}; + +/*-------------------------------------------------------------------------* + * Text orientation flags * + *-------------------------------------------------------------------------*/ +/*! Text Orientation */ +enum { + L_TEXT_ORIENT_UNKNOWN = 0, /*!< low confidence on text orientation */ + L_TEXT_ORIENT_UP = 1, /*!< portrait, text rightside-up */ + L_TEXT_ORIENT_LEFT = 2, /*!< landscape, text up to left */ + L_TEXT_ORIENT_DOWN = 3, /*!< portrait, text upside-down */ + L_TEXT_ORIENT_RIGHT = 4 /*!< landscape, text up to right */ +}; + +/*-------------------------------------------------------------------------* + * Edge orientation flags * + *-------------------------------------------------------------------------*/ +/*! Edge Orientation */ +enum { + L_HORIZONTAL_EDGES = 0, /*!< filters for horizontal edges */ + L_VERTICAL_EDGES = 1, /*!< filters for vertical edges */ + L_ALL_EDGES = 2 /*!< filters for all edges */ +}; + +/*-------------------------------------------------------------------------* + * Line orientation flags * + *-------------------------------------------------------------------------*/ +/*! Line Orientation */ +enum { + L_HORIZONTAL_LINE = 0, /*!< horizontal line */ + L_POS_SLOPE_LINE = 1, /*!< 45 degree line with positive slope */ + L_VERTICAL_LINE = 2, /*!< vertical line */ + L_NEG_SLOPE_LINE = 3, /*!< 45 degree line with negative slope */ + L_OBLIQUE_LINE = 4 /*!< neither horizontal nor vertical */ +}; + +/*-------------------------------------------------------------------------* + * Image orientation flags * + *-------------------------------------------------------------------------*/ +/*! Image Orientation */ +enum { + L_PORTRAIT_MODE = 0, /*!< typical: page is viewed with height > width */ + L_LANDSCAPE_MODE = 1 /*!< page is viewed at 90 deg to portrait mode */ +}; + +/*-------------------------------------------------------------------------* + * Scan direction flags * + *-------------------------------------------------------------------------*/ +/*! Scan Direction */ +enum { + L_FROM_LEFT = 0, /*!< scan from left */ + L_FROM_RIGHT = 1, /*!< scan from right */ + L_FROM_TOP = 2, /*!< scan from top */ + L_FROM_BOT = 3, /*!< scan from bottom */ + L_SCAN_NEGATIVE = 4, /*!< scan in negative direction */ + L_SCAN_POSITIVE = 5, /*!< scan in positive direction */ + L_SCAN_BOTH = 6, /*!< scan in both directions */ + L_SCAN_HORIZONTAL = 7, /*!< horizontal scan (direction unimportant) */ + L_SCAN_VERTICAL = 8 /*!< vertical scan (direction unimportant) */ +}; + +/*-------------------------------------------------------------------------* + * Box size adjustment and location flags * + *-------------------------------------------------------------------------*/ +/*! Box Adjustment */ +enum { + L_ADJUST_SKIP = 0, /*!< do not adjust */ + L_ADJUST_LEFT = 1, /*!< adjust left edge */ + L_ADJUST_RIGHT = 2, /*!< adjust right edge */ + L_ADJUST_LEFT_AND_RIGHT = 3, /*!< adjust both left and right edges */ + L_ADJUST_TOP = 4, /*!< adjust top edge */ + L_ADJUST_BOT = 5, /*!< adjust bottom edge */ + L_ADJUST_TOP_AND_BOT = 6, /*!< adjust both top and bottom edges */ + L_ADJUST_CHOOSE_MIN = 7, /*!< choose the min median value */ + L_ADJUST_CHOOSE_MAX = 8, /*!< choose the max median value */ + L_SET_LEFT = 9, /*!< set left side to a given value */ + L_SET_RIGHT = 10, /*!< set right side to a given value */ + L_SET_TOP = 11, /*!< set top side to a given value */ + L_SET_BOT = 12, /*!< set bottom side to a given value */ + L_GET_LEFT = 13, /*!< get left side location */ + L_GET_RIGHT = 14, /*!< get right side location */ + L_GET_TOP = 15, /*!< get top side location */ + L_GET_BOT = 16 /*!< get bottom side location */ +}; + +/*-------------------------------------------------------------------------* + * Flags for modifying box boundaries using a second box * + *-------------------------------------------------------------------------*/ +/*! Box Boundary Mod */ +enum { + L_USE_MINSIZE = 1, /*!< use boundaries giving min size */ + L_USE_MAXSIZE = 2, /*!< use boundaries giving max size */ + L_SUB_ON_LOC_DIFF = 3, /*!< modify boundary if big location diff */ + L_SUB_ON_SIZE_DIFF = 4, /*!< modify boundary if big size diff */ + L_USE_CAPPED_MIN = 5, /*!< modify boundary with capped min */ + L_USE_CAPPED_MAX = 6 /*!< modify boundary with capped max */ +}; + +/*-------------------------------------------------------------------------* + * Handling overlapping bounding boxes in boxa * + *-------------------------------------------------------------------------*/ +/*! Box Overlap Mod */ +enum { + L_COMBINE = 1, /*!< resize to bounding region; remove smaller */ + L_REMOVE_SMALL = 2 /*!< only remove smaller */ +}; + +/*-------------------------------------------------------------------------* + * Selecting or making a box from two (intersecting) boxes * + *-------------------------------------------------------------------------*/ +/*! Box Combine or Select */ +enum { + L_GEOMETRIC_UNION = 1, /*!< use union of two boxes */ + L_GEOMETRIC_INTERSECTION = 2, /*!< use intersection of two boxes */ + L_LARGEST_AREA = 3, /*!< use box with largest area */ + L_SMALLEST_AREA = 4 /*!< use box with smallest area */ +}; + +/*-------------------------------------------------------------------------* + * Flags for replacing invalid boxes * + *-------------------------------------------------------------------------*/ +/*! Box Replacement */ +enum { + L_USE_ALL_BOXES = 1, /*!< consider all boxes in the sequence */ + L_USE_SAME_PARITY_BOXES = 2 /*!< consider boxes with the same parity */ +}; + +/*-------------------------------------------------------------------------* + * Flags for box corners and center * + *-------------------------------------------------------------------------*/ +/*! Box Corners and Center */ +enum { + L_UPPER_LEFT = 1, /*!< UL corner */ + L_UPPER_RIGHT = 2, /*!< UR corner */ + L_LOWER_LEFT = 3, /*!< LL corner */ + L_LOWER_RIGHT = 4, /*!< LR corner */ + L_BOX_CENTER = 5 /*!< center */ +}; + +/*-------------------------------------------------------------------------* + * Horizontal warp * + *-------------------------------------------------------------------------*/ +/*! Horiz Warp Stretch */ +enum { + L_WARP_TO_LEFT = 1, /*!< increasing stretch or contraction to left */ + L_WARP_TO_RIGHT = 2 /*!< increasing stretch or contraction to right */ +}; + +/*! Horiz Warp Mode */ +enum { + L_LINEAR_WARP = 1, /*!< stretch or contraction grows linearly */ + L_QUADRATIC_WARP = 2 /*!< stretch or contraction grows quadratically */ +}; + +/*-------------------------------------------------------------------------* + * Pixel selection for resampling * + *-------------------------------------------------------------------------*/ +/*! Pixel Selection */ +enum { + L_INTERPOLATED = 1, /*!< linear interpolation from src pixels */ + L_SAMPLED = 2 /*!< nearest src pixel sampling only */ +}; + +/*-------------------------------------------------------------------------* + * Thinning flags * + *-------------------------------------------------------------------------*/ +/*! Thinning Polarity */ +enum { + L_THIN_FG = 1, /*!< thin foreground of 1 bpp image */ + L_THIN_BG = 2 /*!< thin background of 1 bpp image */ +}; + +/*-------------------------------------------------------------------------* + * Runlength flags * + *-------------------------------------------------------------------------*/ +/*! Runlength Direction */ +enum { + L_HORIZONTAL_RUNS = 0, /*!< determine runlengths of horizontal runs */ + L_VERTICAL_RUNS = 1 /*!< determine runlengths of vertical runs */ +}; + +/*-------------------------------------------------------------------------* + * Edge filter flags * + *-------------------------------------------------------------------------*/ +/*! Edge Filter */ +enum { + L_SOBEL_EDGE = 1, /*!< Sobel edge filter */ + L_TWO_SIDED_EDGE = 2 /*!< Two-sided edge filter */ +}; + +/*-------------------------------------------------------------------------* + * Subpixel color component ordering in LCD display * + *-------------------------------------------------------------------------*/ +/*! Subpixel Color Order */ +enum { + L_SUBPIXEL_ORDER_RGB = 1, /*!< sensor order left-to-right RGB */ + L_SUBPIXEL_ORDER_BGR = 2, /*!< sensor order left-to-right BGR */ + L_SUBPIXEL_ORDER_VRGB = 3, /*!< sensor order top-to-bottom RGB */ + L_SUBPIXEL_ORDER_VBGR = 4 /*!< sensor order top-to-bottom BGR */ +}; + +/*-------------------------------------------------------------------------* + * HSV histogram flags * + *-------------------------------------------------------------------------*/ +/*! HSV Histogram */ +enum { + L_HS_HISTO = 1, /*!< Use hue-saturation histogram */ + L_HV_HISTO = 2, /*!< Use hue-value histogram */ + L_SV_HISTO = 3 /*!< Use saturation-value histogram */ +}; + +/*-------------------------------------------------------------------------* + * HSV Region flags (inclusion, exclusion) * + *-------------------------------------------------------------------------*/ +/*! HSV Region */ +enum { + L_INCLUDE_REGION = 1, /*!< Use pixels with specified HSV region */ + L_EXCLUDE_REGION = 2 /*!< Use pixels outside HSV region */ +}; + +/*-------------------------------------------------------------------------* + * Location flags for adding text to a pix * + *-------------------------------------------------------------------------*/ +/*! Add Text Location */ +enum { + L_ADD_ABOVE = 1, /*!< Add text above the image */ + L_ADD_BELOW = 2, /*!< Add text below the image */ + L_ADD_LEFT = 3, /*!< Add text to the left of the image */ + L_ADD_RIGHT = 4, /*!< Add text to the right of the image */ + L_ADD_AT_TOP = 5, /*!< Add text over the top of the image */ + L_ADD_AT_BOT = 6, /*!< Add text over the bottom of the image */ + L_ADD_AT_LEFT = 7, /*!< Add text over left side of the image */ + L_ADD_AT_RIGHT = 8 /*!< Add text over right side of the image */ +}; + +/*-------------------------------------------------------------------------* + * Flags for plotting on a pix * + *-------------------------------------------------------------------------*/ +/*! Pix Plot */ +enum { + L_PLOT_AT_TOP = 1, /*!< Plot horizontally at top */ + L_PLOT_AT_MID_HORIZ = 2, /*!< Plot horizontally at middle */ + L_PLOT_AT_BOT = 3, /*!< Plot horizontally at bottom */ + L_PLOT_AT_LEFT = 4, /*!< Plot vertically at left */ + L_PLOT_AT_MID_VERT = 5, /*!< Plot vertically at middle */ + L_PLOT_AT_RIGHT = 6 /*!< Plot vertically at right */ +}; + +/*-------------------------------------------------------------------------* + * Flags for making simple masks * + *-------------------------------------------------------------------------*/ +/*! Mask Generation */ +enum { + L_USE_INNER = 1, /*!< Select the interior part */ + L_USE_OUTER = 2 /*!< Select the outer part (e.g., a frame) */ +}; + +/*-------------------------------------------------------------------------* + * Flags for selecting display program * + *-------------------------------------------------------------------------*/ +/*! Display Program */ +enum { + L_DISPLAY_WITH_XZGV = 1, /*!< Use xzgv with pixDisplay() */ + L_DISPLAY_WITH_XLI = 2, /*!< Use xli with pixDisplay() */ + L_DISPLAY_WITH_XV = 3, /*!< Use xv with pixDisplay() */ + L_DISPLAY_WITH_IV = 4, /*!< Use irfvanview (win) with pixDisplay() */ + L_DISPLAY_WITH_OPEN = 5 /*!< Use open (apple) with pixDisplay() */ +}; + +/*-------------------------------------------------------------------------* + * Flag(s) used in the 'special' pix field for non-default operations * + * - 0 is default for chroma sampling in jpeg * + * - 10-19 are used for zlib compression in png write * + * - 4 and 8 are used for specifying connectivity in labelling * + *-------------------------------------------------------------------------*/ +/*! Flags used in Pix::special */ +enum { + L_NO_CHROMA_SAMPLING_JPEG = 1 /*!< Write full resolution chroma */ +}; + +/*-------------------------------------------------------------------------* + * Handling negative values in conversion to unsigned int * + *-------------------------------------------------------------------------*/ +/*! Negative Value */ +enum { + L_CLIP_TO_ZERO = 1, /*!< Clip negative values to 0 */ + L_TAKE_ABSVAL = 2 /*!< Convert to positive using L_ABS() */ +}; + +/*-------------------------------------------------------------------------* + * Relative to zero flags * + *-------------------------------------------------------------------------*/ +/*! Relative To Zero */ +enum { + L_LESS_THAN_ZERO = 1, /*!< Choose values less than zero */ + L_EQUAL_TO_ZERO = 2, /*!< Choose values equal to zero */ + L_GREATER_THAN_ZERO = 3 /*!< Choose values greater than zero */ +}; + +/*-------------------------------------------------------------------------* + * Flags for adding or removing trailing slash from string * + *-------------------------------------------------------------------------*/ +/*! Trailing Slash */ +enum { + L_ADD_TRAIL_SLASH = 1, /*!< Add trailing slash to string */ + L_REMOVE_TRAIL_SLASH = 2 /*!< Remove trailing slash from string */ +}; + +/*-------------------------------------------------------------------------* + * Pix allocator and deallocator function types * + *-------------------------------------------------------------------------*/ +/*! Allocator function type */ +typedef void *(*alloc_fn)(size_t); + +/*! Deallocator function type */ +typedef void (*dealloc_fn)(void *); + +#endif /* LEPTONICA_PIX_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/pix_internal.h b/third_party/leptonica/uos/amd64/include/leptonica/pix_internal.h new file mode 100644 index 00000000..ca20032e --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/pix_internal.h @@ -0,0 +1,426 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_PIX_INTERNAL_H +#define LEPTONICA_PIX_INTERNAL_H + +/*! + * \file pix_internal.h + * + *
+ *  Valid image types in leptonica:
+ *       Pix: 1 bpp, with and without colormap
+ *       Pix: 2 bpp, with and without colormap
+ *       Pix: 4 bpp, with and without colormap
+ *       Pix: 8 bpp, with and without colormap
+ *       Pix: 16 bpp (1 spp)
+ *       Pix: 32 bpp (rgb, 3 spp)
+ *       Pix: 32 bpp (rgba, 4 spp)
+ *       FPix: 32 bpp float
+ *       DPix: 64 bpp double
+ *       Notes:
+ *          (1) The only valid Pix image type with alpha is rgba.
+ *              In particular, the alpha component is not used in
+ *              cmapped images.
+ *          (2) PixComp can hold any Pix with IFF_PNG encoding.
+ *
+ *  This file is internal: it is not part of the public interface.
+ *  It contains the definitions of most of the image-related structs
+ *  used in leptonica:
+ *       struct Pix
+ *       struct PixColormap
+ *       struct RGBA_Quad
+ *       struct Pixa
+ *       struct Pixaa
+ *       struct Box
+ *       struct Boxa
+ *       struct Boxaa
+ *       struct Pta
+ *       struct Ptaa
+ *       struct Pixacc
+ *       struct PixTiling
+ *       struct FPix
+ *       struct FPixa
+ *       struct DPix
+ *       struct PixComp
+ *       struct PixaComp
+ *
+ *  This file can be #included after allheaders.h in source files that
+ *  require direct access to the internal data fields in these structs.
+ *
+ *  Notes on the pixels in the raster image.  Most of this information
+ *  can also be found in pix.h.
+ *
+ *       (1) The image data is stored in a single contiguous
+ *           array of l_uint32, into which the pixels are packed.
+ *           By "packed" we mean that there are no unused bits
+ *           between pixels, except for end-of-line padding to
+ *           satisfy item (2) below.
+ *
+ *       (2) Every image raster line begins on a 32-bit word
+ *           boundary within this array.
+ *
+ *       (3) Pix image data is stored in 32-bit units, with the
+ *           pixels ordered from left to right in the image being
+ *           stored in order from the MSB to LSB within the word,
+ *           for both big-endian and little-endian machines.
+ *           This is the natural ordering for big-endian machines,
+ *           as successive bytes are stored and fetched progressively
+ *           to the right.  However, for little-endians, when storing
+ *           we re-order the bytes from this byte stream order, and
+ *           reshuffle again for byte access on 32-bit entities.
+ *           So if the bytes come in sequence from left to right, we
+ *           store them on little-endians in byte order:
+ *                3 2 1 0 7 6 5 4 ...
+ *           This MSB to LSB ordering allows left and right shift
+ *           operations on 32 bit words to move the pixels properly.
+ *
+ *       (4) We use 32 bit pixels for both RGB and RGBA color images.
+ *           The A (alpha) byte is ignored in most leptonica functions
+ *           operating on color images.  Within each 4 byte pixel, the
+ *           color samples are ordered from MSB to LSB, as follows:
+ *
+ *                |  MSB  |  2nd MSB  |  3rd MSB  |  LSB  |
+ *                   red      green       blue      alpha
+ *                    0         1           2         3   (big-endian)
+ *                    3         2           1         0   (little-endian)
+ *
+ *           Because we use MSB to LSB ordering within the 32-bit word,
+ *           the individual 8-bit samples can be accessed with
+ *           GET_DATA_BYTE and SET_DATA_BYTE macros, using the
+ *           (implicitly big-ending) ordering
+ *                 red:    byte 0  (MSB)
+ *                 green:  byte 1  (2nd MSB)
+ *                 blue:   byte 2  (3rd MSB)
+ *                 alpha:  byte 3  (LSB)
+ *
+ *           The specific color assignment is made in this file,
+ *           through the definitions of COLOR_RED, etc.  Then the R, G
+ *           B and A sample values can be retrieved using
+ *                 redval = GET_DATA_BYTE(&pixel, COLOR_RED);
+ *                 greenval = GET_DATA_BYTE(&pixel, COLOR_GREEN);
+ *                 blueval = GET_DATA_BYTE(&pixel, COLOR_BLUE);
+ *                 alphaval = GET_DATA_BYTE(&pixel, L_ALPHA_CHANNEL);
+ *           and they can be set with
+ *                 SET_DATA_BYTE(&pixel, COLOR_RED, redval);
+ *                 SET_DATA_BYTE(&pixel, COLOR_GREEN, greenval);
+ *                 SET_DATA_BYTE(&pixel, COLOR_BLUE, blueval);
+ *                 SET_DATA_BYTE(&pixel, L_ALPHA_CHANNEL, alphaval);
+ *
+ *           More efficiently, these components can be extracted directly
+ *           by shifting and masking, explicitly using the values in
+ *           L_RED_SHIFT, etc.:
+ *                 (pixel32 >> L_RED_SHIFT) & 0xff;         (red)
+ *                 (pixel32 >> L_GREEN_SHIFT) & 0xff;       (green)
+ *                 (pixel32 >> L_BLUE_SHIFT) & 0xff;        (blue)
+ *                 (pixel32 >> L_ALPHA_SHIFT) & 0xff;       (alpha)
+ *           The functions extractRGBValues() and extractRGBAValues() are
+ *           provided to do this.  Likewise, the pixels can be set
+ *           directly by shifting, using composeRGBPixel() and
+ *           composeRGBAPixel().
+ *
+ *           All these operations work properly on both big- and little-endians.
+ *
+ *       (5) A reference count is held within each pix, giving the
+ *           number of ptrs to the pix.  When a pixClone() call
+ *           is made, the ref count is increased by 1, and
+ *           when a pixDestroy() call is made, the reference count
+ *           of the pix is decremented.  The pix is only destroyed
+ *           when the reference count goes to zero.
+ *
+ *       (6) The version numbers (below) are used in the serialization
+ *           of these data structures.  They are placed in the files,
+ *           and rarely (if ever) change.
+ *
+ *       (7) The serialization dependencies are as follows:
+ *               pixaa  :  pixa  :  boxa
+ *               boxaa  :  boxa
+ *           So, for example, pixaa and boxaa can be changed without
+ *           forcing a change in pixa or boxa.  However, if pixa is
+ *           changed, it forces a change in pixaa, and if boxa is
+ *           changed, if forces a change in the other three.
+ *           We define four version numbers:
+ *               PIXAA_VERSION_NUMBER
+ *               PIXA_VERSION_NUMBER
+ *               BOXAA_VERSION_NUMBER
+ *               BOXA_VERSION_NUMBER
+ * 
+ *-------------------------------------------------------------------------*/ + +/*-------------------------------------------------------------------------* + * Basic Pix * + *-------------------------------------------------------------------------*/ + /* The 'special' field is by default 0, but it can hold integers + * that direct non-default actions, e.g., in png and jpeg I/O. */ + +/*! Basic Pix */ +struct Pix +{ + l_uint32 w; /*!< width in pixels */ + l_uint32 h; /*!< height in pixels */ + l_uint32 d; /*!< depth in bits (bpp) */ + l_uint32 spp; /*!< number of samples per pixel */ + l_uint32 wpl; /*!< 32-bit words/line */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + l_int32 xres; /*!< image res (ppi) in x direction */ + /*!< (use 0 if unknown) */ + l_int32 yres; /*!< image res (ppi) in y direction */ + /*!< (use 0 if unknown) */ + l_int32 informat; /*!< input file format, IFF_* */ + l_int32 special; /*!< special instructions for I/O, etc */ + char *text; /*!< text string associated with pix */ + struct PixColormap *colormap; /*!< colormap (may be null) */ + l_uint32 *data; /*!< the image data */ +}; + +/*! Colormap of a Pix */ +struct PixColormap +{ + void *array; /*!< colormap table (array of RGBA_QUAD) */ + l_int32 depth; /*!< of pix (1, 2, 4 or 8 bpp) */ + l_int32 nalloc; /*!< number of color entries allocated */ + l_int32 n; /*!< number of color entries used */ +}; + + + /*! Colormap table entry (after the BMP version). + * Note that the BMP format stores the colormap table exactly + * as it appears here, with color samples being stored sequentially, + * in the order (b,g,r,a). */ +struct RGBA_Quad +{ + l_uint8 blue; /*!< blue value */ + l_uint8 green; /*!< green value */ + l_uint8 red; /*!< red value */ + l_uint8 alpha; /*!< alpha value */ +}; + + +/*-------------------------------------------------------------------------* + * Array of pix * + *-------------------------------------------------------------------------*/ + /* Serialization for primary data structures */ +#define PIXAA_VERSION_NUMBER 2 /*!< Version for Pixaa serialization */ +#define PIXA_VERSION_NUMBER 2 /*!< Version for Pixa serialization */ +#define BOXA_VERSION_NUMBER 2 /*!< Version for Boxa serialization */ +#define BOXAA_VERSION_NUMBER 3 /*!< Version for Boxaa serialization */ + +/*! Array of pix */ +struct Pixa +{ + l_int32 n; /*!< number of Pix in ptr array */ + l_int32 nalloc; /*!< number of Pix ptrs allocated */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + struct Pix **pix; /*!< the array of ptrs to pix */ + struct Boxa *boxa; /*!< array of boxes */ +}; + +/*! Array of arrays of pix */ +struct Pixaa +{ + l_int32 n; /*!< number of Pixa in ptr array */ + l_int32 nalloc; /*!< number of Pixa ptrs allocated */ + struct Pixa **pixa; /*!< array of ptrs to pixa */ + struct Boxa *boxa; /*!< array of boxes */ +}; + + +/*-------------------------------------------------------------------------* + * Basic rectangle and rectangle arrays * + *-------------------------------------------------------------------------*/ +/*! Basic rectangle */ +struct Box +{ + l_int32 x; /*!< left coordinate */ + l_int32 y; /*!< top coordinate */ + l_int32 w; /*!< box width */ + l_int32 h; /*!< box height */ + l_atomic refcount; /*!< reference count (1 if no clones) */ +}; + +/*! Array of Box */ +struct Boxa +{ + l_int32 n; /*!< number of box in ptr array */ + l_int32 nalloc; /*!< number of box ptrs allocated */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + struct Box **box; /*!< box ptr array */ +}; + +/*! Array of Boxa */ +struct Boxaa +{ + l_int32 n; /*!< number of boxa in ptr array */ + l_int32 nalloc; /*!< number of boxa ptrs allocated */ + struct Boxa **boxa; /*!< boxa ptr array */ +}; + + +/*-------------------------------------------------------------------------* + * Array of points * + *-------------------------------------------------------------------------*/ +#define PTA_VERSION_NUMBER 1 /*!< Version for Pta serialization */ + +/*! Array of points */ +struct Pta +{ + l_int32 n; /*!< actual number of pts */ + l_int32 nalloc; /*!< size of allocated arrays */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + l_float32 *x, *y; /*!< arrays of floats */ +}; + + +/*-------------------------------------------------------------------------* + * Array of Pta * + *-------------------------------------------------------------------------*/ +/*! Array of Pta */ +struct Ptaa +{ + l_int32 n; /*!< number of pta in ptr array */ + l_int32 nalloc; /*!< number of pta ptrs allocated */ + struct Pta **pta; /*!< pta ptr array */ +}; + + +/*-------------------------------------------------------------------------* + * Pix accumulator container * + *-------------------------------------------------------------------------*/ +/*! Pix accumulator container */ +struct Pixacc +{ + l_int32 w; /*!< array width */ + l_int32 h; /*!< array height */ + l_int32 offset; /*!< used to allow negative */ + /*!< intermediate results */ + struct Pix *pix; /*!< the 32 bit accumulator pix */ +}; + + +/*-------------------------------------------------------------------------* + * Pix tiling * + *-------------------------------------------------------------------------*/ +/*! Pix tiling */ +struct PixTiling +{ + struct Pix *pix; /*!< input pix (a clone) */ + l_int32 nx; /*!< number of tiles horizontally */ + l_int32 ny; /*!< number of tiles vertically */ + l_int32 w; /*!< tile width */ + l_int32 h; /*!< tile height */ + l_int32 xoverlap; /*!< overlap on left and right */ + l_int32 yoverlap; /*!< overlap on top and bottom */ + l_int32 strip; /*!< strip for paint; default is TRUE */ +}; + + +/*-------------------------------------------------------------------------* + * FPix: pix with float array * + *-------------------------------------------------------------------------*/ +#define FPIX_VERSION_NUMBER 2 /*!< Version for FPix serialization */ + +/*! Pix with float array */ +struct FPix +{ + l_int32 w; /*!< width in pixels */ + l_int32 h; /*!< height in pixels */ + l_int32 wpl; /*!< 32-bit words/line */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + l_int32 xres; /*!< image res (ppi) in x direction */ + /*!< (use 0 if unknown) */ + l_int32 yres; /*!< image res (ppi) in y direction */ + /*!< (use 0 if unknown) */ + l_float32 *data; /*!< the float image data */ +}; + +/*! Array of FPix */ +struct FPixa +{ + l_int32 n; /*!< number of fpix in ptr array */ + l_int32 nalloc; /*!< number of fpix ptrs allocated */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + struct FPix **fpix; /*!< the array of ptrs to fpix */ +}; + + +/*-------------------------------------------------------------------------* + * DPix: pix with double array * + *-------------------------------------------------------------------------*/ +#define DPIX_VERSION_NUMBER 2 /*!< Version for DPix serialization */ + +/*! Pix with double array */ +struct DPix +{ + l_int32 w; /*!< width in pixels */ + l_int32 h; /*!< height in pixels */ + l_int32 wpl; /*!< 32-bit words/line */ + l_atomic refcount; /*!< reference count (1 if no clones) */ + l_int32 xres; /*!< image res (ppi) in x direction */ + /*!< (use 0 if unknown) */ + l_int32 yres; /*!< image res (ppi) in y direction */ + /*!< (use 0 if unknown) */ + l_float64 *data; /*!< the double image data */ +}; + + +/*-------------------------------------------------------------------------* + * PixComp: compressed pix * + *-------------------------------------------------------------------------*/ +/*! Compressed Pix */ +struct PixComp +{ + l_int32 w; /*!< width in pixels */ + l_int32 h; /*!< height in pixels */ + l_int32 d; /*!< depth in bits */ + l_int32 xres; /*!< image res (ppi) in x direction */ + /*!< (use 0 if unknown) */ + l_int32 yres; /*!< image res (ppi) in y direction */ + /*!< (use 0 if unknown) */ + l_int32 comptype; /*!< compressed format (IFF_TIFF_G4, */ + /*!< IFF_PNG, IFF_JFIF_JPEG) */ + char *text; /*!< text string associated with pix */ + l_int32 cmapflag; /*!< flag (1 for cmap, 0 otherwise) */ + l_uint8 *data; /*!< the compressed image data */ + size_t size; /*!< size of the data array */ +}; + + +/*-------------------------------------------------------------------------* + * PixaComp: array of compressed pix * + *-------------------------------------------------------------------------*/ +#define PIXACOMP_VERSION_NUMBER 2 /*!< Version for PixaComp serialization */ + +/*! Array of compressed pix */ +struct PixaComp +{ + l_int32 n; /*!< number of PixComp in ptr array */ + l_int32 nalloc; /*!< number of PixComp ptrs allocated */ + l_int32 offset; /*!< indexing offset into ptr array */ + struct PixComp **pixc; /*!< the array of ptrs to PixComp */ + struct Boxa *boxa; /*!< array of boxes */ +}; + +#endif /* LEPTONICA_PIX_INTERNAL_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/ptra.h b/third_party/leptonica/uos/amd64/include/leptonica/ptra.h new file mode 100644 index 00000000..705d97af --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/ptra.h @@ -0,0 +1,97 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_PTRA_H +#define LEPTONICA_PTRA_H + +/*! + * \file ptra.h + * + *
+ *  Contains the following structs:
+ *      struct L_Ptra
+ *      struct L_Ptraa
+ *
+ *  Contains definitions for:
+ *      L_Ptra compaction flags for removal
+ *      L_Ptra shifting flags for insert
+ *      L_Ptraa accessor flags
+ * 
+ */ + + /* Bound on max initial ptra size */ +LEPT_DLL extern const l_uint32 MaxInitPtraSize; + +/*------------------------------------------------------------------------* + * Generic Ptr Array Structs * + *------------------------------------------------------------------------*/ + + /*! Generic pointer array */ +struct L_Ptra +{ + l_int32 nalloc; /*!< size of allocated ptr array */ + l_int32 imax; /*!< greatest valid index */ + l_int32 nactual; /*!< actual number of stored elements */ + void **array; /*!< ptr array */ +}; +typedef struct L_Ptra L_PTRA; + + + /*! Array of generic pointer arrays */ +struct L_Ptraa +{ + l_int32 nalloc; /*!< size of allocated ptr array */ + struct L_Ptra **ptra; /*!< array of ptra */ +}; +typedef struct L_Ptraa L_PTRAA; + + + +/*------------------------------------------------------------------------* + * Accessor and modifier flags for L_Ptra and L_Ptraa * + *------------------------------------------------------------------------*/ + +/*! Ptra Removal */ +enum { + L_NO_COMPACTION = 1, /*!< null the pointer only */ + L_COMPACTION = 2 /*!< compact the array */ +}; + +/*! Ptra Insertion */ +enum { + L_AUTO_DOWNSHIFT = 0, /*!< choose based on number of holes */ + L_MIN_DOWNSHIFT = 1, /*!< downshifts min # of ptrs below insert */ + L_FULL_DOWNSHIFT = 2 /*!< downshifts all ptrs below insert */ +}; + +/*! Ptraa Accessor */ +enum { + L_HANDLE_ONLY = 0, /*!< ptr to L_Ptra; caller can inspect only */ + L_REMOVE = 1 /*!< caller owns; destroy or save in L_Ptraa */ +}; + + +#endif /* LEPTONICA_PTRA_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/queue.h b/third_party/leptonica/uos/amd64/include/leptonica/queue.h new file mode 100644 index 00000000..fd380e83 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/queue.h @@ -0,0 +1,77 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_QUEUE_H +#define LEPTONICA_QUEUE_H + +/*! + * \file queue.h + * + *
+ *      Expandable pointer queue for arbitrary void* data.
+ *
+ *      The L_Queue is a fifo that implements a queue of void* pointers.
+ *      It can be used to hold a queue of any type of struct.
+ *
+ *      Internally, it maintains two counters:
+ *          nhead:  location of head (in ptrs) from the beginning
+ *                  of the array.
+ *          nelem:  number of ptr elements stored in the queue.
+ *
+ *      The element at the head of the queue, which is the next to
+ *      be removed, is array[nhead].  The location at the tail of the
+ *      queue to which the next element will be added is
+ *      array[nhead + nelem].
+ *
+ *      As items are added to the queue, nelem increases.
+ *      As items are removed, nhead increases and nelem decreases.
+ *      Any time the tail reaches the end of the allocated array,
+ *      all the pointers are shifted to the left, so that the head
+ *      is at the beginning of the array.
+ *      If the array becomes more than 3/4 full, it doubles in size.
+ *
+ *      The auxiliary stack can be used in a wrapper for re-using
+ *      items popped from the queue.  It is not made by default.
+ *
+ *      For further implementation details, see queue.c.
+ * 
+ */ + +/*! Expandable pointer queue for arbitrary void* data */ +struct L_Queue +{ + l_int32 nalloc; /*!< size of allocated ptr array */ + l_int32 nhead; /*!< location of head (in ptrs) from the */ + /*!< beginning of the array */ + l_int32 nelem; /*!< number of elements stored in the queue */ + void **array; /*!< ptr array */ + struct L_Stack *stack; /*!< auxiliary stack */ + +}; +typedef struct L_Queue L_QUEUE; + + +#endif /* LEPTONICA_QUEUE_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/rbtree.h b/third_party/leptonica/uos/amd64/include/leptonica/rbtree.h new file mode 100644 index 00000000..6977d336 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/rbtree.h @@ -0,0 +1,91 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +/* + * Modified from the excellent code here: + * http://en.literateprograms.org/Red-black_tree_(C)?oldid=19567 + * which has been placed in the public domain under the Creative Commons + * CC0 1.0 waiver (http://creativecommons.org/publicdomain/zero/1.0/). + * + * When the key is generated from a hash (e.g., string --> uint64), + * there is always the possibility of having collisions, but to make + * the collision probability very low requires using a large hash. + * For that reason, the key types are 64 bit quantities, which will result + * in a negligible probabililty of collisions for millions of hashed values. + * Using 8 byte keys instead of 4 byte keys requires a little more + * storage, but the simplification in being able to ignore collisions + * with the red-black trees for most applications is worth it. + */ + +#ifndef LEPTONICA_RBTREE_H +#define LEPTONICA_RBTREE_H + + /*! The three valid key types for red-black trees, maps and sets. */ +/*! RBTree Key Type */ +enum { + L_INT_TYPE = 1, + L_UINT_TYPE = 2, + L_FLOAT_TYPE = 3 +}; + + /*! + * Storage for keys and values for red-black trees, maps and sets. + *
+     * Note:
+     *   (1) Keys and values of the valid key types are all 64-bit
+     *   (2) (void *) can be used for values but not for keys.
+     * 
+ */ +union Rb_Type { + l_int64 itype; + l_uint64 utype; + l_float64 ftype; + void *ptype; +}; +typedef union Rb_Type RB_TYPE; + +struct L_Rbtree { + struct L_Rbtree_Node *root; + l_int32 keytype; +}; +typedef struct L_Rbtree L_RBTREE; +typedef struct L_Rbtree L_AMAP; /* hide underlying implementation for map */ +typedef struct L_Rbtree L_ASET; /* hide underlying implementation for set */ + +struct L_Rbtree_Node { + union Rb_Type key; + union Rb_Type value; + struct L_Rbtree_Node *left; + struct L_Rbtree_Node *right; + struct L_Rbtree_Node *parent; + l_int32 color; +}; +typedef struct L_Rbtree_Node L_RBTREE_NODE; +typedef struct L_Rbtree_Node L_AMAP_NODE; /* hide tree implementation */ +typedef struct L_Rbtree_Node L_ASET_NODE; /* hide tree implementation */ + + +#endif /* LEPTONICA_RBTREE_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/readbarcode.h b/third_party/leptonica/uos/amd64/include/leptonica/readbarcode.h new file mode 100644 index 00000000..358ff4e5 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/readbarcode.h @@ -0,0 +1,239 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_READBARCODE_H +#define LEPTONICA_READBARCODE_H + + /* ----------------------------------------------------------------- * + * Flags for method of extracting barcode widths * + * ----------------------------------------------------------------- */ + +/*! Barcode Method */ +enum { + L_USE_WIDTHS = 1, /*!< use histogram of barcode widths */ + L_USE_WINDOWS = 2 /*!< find best window for decoding transitions */ +}; + + /* ----------------------------------------------------------------- * + * Flags for barcode formats * + * These are used both to identify a barcode format and to identify * + * the decoding method to use on a barcode. * + * ----------------------------------------------------------------- */ + +/*! Barcode Format */ +enum { + L_BF_UNKNOWN = 0, /*!< unknown format */ + L_BF_ANY = 1, /*!< try decoding with all known formats */ + L_BF_CODE128 = 2, /*!< decode with Code128 format */ + L_BF_EAN8 = 3, /*!< decode with EAN8 format */ + L_BF_EAN13 = 4, /*!< decode with EAN13 format */ + L_BF_CODE2OF5 = 5, /*!< decode with Code 2 of 5 format */ + L_BF_CODEI2OF5 = 6, /*!< decode with Interleaved 2 of 5 format */ + L_BF_CODE39 = 7, /*!< decode with Code39 format */ + L_BF_CODE93 = 8, /*!< decode with Code93 format */ + L_BF_CODABAR = 9, /*!< decode with Code93 format */ + L_BF_UPCA = 10 /*!< decode with UPC A format */ +}; + + /* ----------------------------------------------------------------- * + * Currently supported formats * + * Update these arrays as new formats are added. * + * ----------------------------------------------------------------- */ + +/*! Currently supported formats */ +static const l_int32 SupportedBarcodeFormat[] = { + L_BF_CODE2OF5, + L_BF_CODEI2OF5, + L_BF_CODE93, + L_BF_CODE39, + L_BF_CODABAR, + L_BF_UPCA, + L_BF_EAN13 +}; + +/*! Currently supported format names */ +static const char *SupportedBarcodeFormatName[] = { + "Code2of5", + "CodeI2of5", + "Code93", + "Code39", + "Codabar", + "Upca", + "Ean13" +}; +static const l_int32 NumSupportedBarcodeFormats = 7; /*!< Number of formats */ + + + /* ----------------------------------------------------------------- * + * Code 2 of 5 symbology * + * ----------------------------------------------------------------- */ +static const char *Code2of5[] = { + "111121211", "211111112", "112111112", "212111111", /* 0 - 3 */ + "111121112", "211121111", "112121111", "111111212", /* 4 - 7 */ + "211111211", "112111211", /* 8 - 9 */ + "21211", "21112" /* Start, Stop */ +}; + +static const l_int32 C25_START = 10; +static const l_int32 C25_STOP = 11; + + + /* ----------------------------------------------------------------- * + * Code Interleaved 2 of 5 symbology * + * ----------------------------------------------------------------- */ +static const char *CodeI2of5[] = { + "11221", "21112", "12112", "22111", "11212", /* 0 - 4 */ + "21211", "12211", "11122", "21121", "12121", /* 5 - 9 */ + "1111", "211" /* start, stop */ +}; + +static const l_int32 CI25_START = 10; +static const l_int32 CI25_STOP = 11; + + + /* ----------------------------------------------------------------- * + * Code 93 symbology * + * ----------------------------------------------------------------- */ +static const char *Code93[] = { + "131112", "111213", "111312", "111411", "121113", /* 0: 0 - 4 */ + "121212", "121311", "111114", "131211", "141111", /* 5: 5 - 9 */ + "211113", "211212", "211311", "221112", "221211", /* 10: A - E */ + "231111", "112113", "112212", "112311", "122112", /* 15: F - J */ + "132111", "111123", "111222", "111321", "121122", /* 20: K - O */ + "131121", "212112", "212211", "211122", "211221", /* 25: P - T */ + "221121", "222111", "112122", "112221", "122121", /* 30: U - Y */ + "123111", "121131", "311112", "311211", "321111", /* 35: Z,-,.,SP,$ */ + "112131", "113121", "211131", "131221", "312111", /* 40: /,+,%,($),(%) */ + "311121", "122211", "111141" /* 45: (/),(+), Start */ +}; + + /* Use "[]{}#" to represent special codes 43-47 */ +static const char Code93Val[] = + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%[]{}#"; + +static const l_int32 C93_START = 47; +static const l_int32 C93_STOP = 47; + + + /* ----------------------------------------------------------------- * + * Code 39 symbology * + * ----------------------------------------------------------------- */ +static const char *Code39[] = { + "111221211", "211211112", "112211112", "212211111", /* 0: 0 - 3 */ + "111221112", "211221111", "112221111", "111211212", /* 4: 4 - 7 */ + "211211211", "112211211", "211112112", "112112112", /* 8: 8 - B */ + "212112111", "111122112", "211122111", "112122111", /* 12: C - F */ + "111112212", "211112211", "112112211", "111122211", /* 16: G - J */ + "211111122", "112111122", "212111121", "111121122", /* 20: K - N */ + "211121121", "112121121", "111111222", "211111221", /* 24: O - R */ + "112111221", "111121221", "221111112", "122111112", /* 28: S - V */ + "222111111", "121121112", "221121111", "122121111", /* 32: W - Z */ + "121111212", "221111211", "122111211", "121212111", /* 36: -,.,SP,$ */ + "121211121", "121112121", "111212121", "121121211" /* 40: /,+,%,* */ +}; + + /* Use "*" to represent the Start and Stop codes (43) */ +static const char Code39Val[] = + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*"; + +static const l_int32 C39_START = 43; +static const l_int32 C39_STOP = 43; + + + /* ----------------------------------------------------------------- * + * Codabar symbology * + * ----------------------------------------------------------------- */ +static const char *Codabar[] = { + "1111122", "1111221", "1112112", "2211111", "1121121", /* 0: 0 - 4 */ + "2111121", "1211112", "1211211", "1221111", "2112111", /* 5: 5 - 9 */ + "1112211", "1122111", "2111212", "2121112", "2121211", /* 10: -,$,:,/,. */ + "1121212", "1122121", "1212112", "1112122", "1112221" /* 15: +,A,B,C,D */ +}; + + /* Ascii representations for codes 16-19: (A or T), (B or N), (C or *), + * (D or E). These are used in pairs for the Start and Stop codes. */ +static const char CodabarVal[] = "0123456789-$:/.+ABCD"; + + + /* ----------------------------------------------------------------- * + * UPC-A symbology * + * ----------------------------------------------------------------- */ +static const char *Upca[] = { + "3211", "2221", "2122", "1411", "1132", /* 0: 0 - 4 */ + "1231", "1114", "1312", "1213", "3112", /* 5: 5 - 9 */ + "111", "111", "11111" /* 10: Start, Stop, Mid */ +}; + +static const l_int32 UPCA_START = 10; +static const l_int32 UPCA_STOP = 11; +static const l_int32 UPCA_MID = 12; + + + /* ----------------------------------------------------------------- * + * Code128 symbology * + * ----------------------------------------------------------------- */ +static const char *Code128[] = { + "212222", "222122", "222221", "121223", "121322", /* 0 - 4 */ + "131222", "122213", "122312", "132212", "221213", /* 5 - 9 */ + "221312", "231212", "112232", "122132", "122231", /* 10 - 14 */ + "113222", "123122", "123221", "223211", "221132", /* 15 - 19 */ + "221231", "213212", "223112", "312131", "311222", /* 20 - 24 */ + "321122", "321221", "312212", "322112", "322211", /* 25 - 29 */ + "212123", "212321", "232121", "111323", "131123", /* 30 - 34 */ + "131321", "112313", "132113", "132311", "211313", /* 35 - 39 */ + "231113", "231311", "112133", "112331", "132131", /* 40 - 44 */ + "113123", "113321", "133121", "313121", "211331", /* 45 - 49 */ + "231131", "213113", "213311", "213131", "311123", /* 50 - 54 */ + "311321", "331121", "312113", "312311", "332111", /* 55 - 59 */ + "314111", "221411", "431111", "111224", "111422", /* 60 - 64 */ + "121124", "121421", "141122", "141221", "112214", /* 65 - 69 */ + "112412", "122114", "122411", "142112", "142211", /* 70 - 74 */ + "241211", "221114", "413111", "241112", "134111", /* 75 - 79 */ + "111242", "121142", "121241", "114212", "124112", /* 80 - 84 */ + "124211", "411212", "421112", "421211", "212141", /* 85 - 89 */ + "214121", "412121", "111143", "111341", "131141", /* 90 - 94 */ + "114113", "114311", "411113", "411311", "113141", /* 95 - 99 */ + "114131", "311141", "411131", "211412", "211214", /* 100 - 104 */ + "211232", "2331112" /* 105 - 106 */ +}; + +static const l_int32 C128_FUN_3 = 96; /* in A or B only; in C it is 96 */ +static const l_int32 C128_FUNC_2 = 97; /* in A or B only; in C it is 97 */ +static const l_int32 C128_SHIFT = 98; /* in A or B only; in C it is 98 */ +static const l_int32 C128_GOTO_C = 99; /* in A or B only; in C it is 99 */ +static const l_int32 C128_GOTO_B = 100; +static const l_int32 C128_GOTO_A = 101; +static const l_int32 C128_FUNC_1 = 102; +static const l_int32 C128_START_A = 103; +static const l_int32 C128_START_B = 104; +static const l_int32 C128_START_C = 105; +static const l_int32 C128_STOP = 106; + /* code 128 symbols are 11 units */ +static const l_int32 C128_SYMBOL_WIDTH = 11; + + + +#endif /* LEPTONICA_READBARCODE_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/recog.h b/third_party/leptonica/uos/amd64/include/leptonica/recog.h new file mode 100644 index 00000000..44e6aa18 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/recog.h @@ -0,0 +1,264 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_RECOG_H +#define LEPTONICA_RECOG_H + +/*! + * \file recog.h + * + *
+ *     This is a simple utility for training and recognizing individual
+ *     machine-printed text characters.  It is designed to be adapted
+ *     to a particular set of character images; e.g., from a book.
+ *
+ *     There are two methods of training the recognizer.  In the most
+ *     simple, a set of bitmaps has been labeled by some means, such
+ *     a generic OCR program.  This is input either one template at a time
+ *     or as a pixa of templates, to a function that creates a recog.
+ *     If in a pixa, the text string label must be embedded in the
+ *     text field of each pix.
+ *
+ *     If labeled data is not available, we start with a bootstrap
+ *     recognizer (BSR) that has labeled data from a variety of sources.
+ *     These images are scaled, typically to a fixed height, and then
+ *     fed similarly scaled unlabeled images from the source (e.g., book),
+ *     and the BSR attempts to identify them.  All images that have
+ *     a high enough correlation score with one of the templates in the
+ *     BSR are emitted in a pixa, which now holds unscaled and labeled
+ *     templates from the source.  This is the generator for a book adapted
+ *     recognizer (BAR).
+ *
+ *     The pixa should always be thought of as the primary structure.
+ *     It is the generator for the recog, because a recog is built
+ *     from a pixa of unscaled images.
+ *
+ *     New image templates can be added to a recog as long as it is
+ *     in training mode.  Once training is finished, to add templates
+ *     it is necessary to extract the generating pixa, add templates
+ *     to that pixa, and make a new recog.  Similarly, we do not
+ *     join two recog; instead, we simply join their generating pixa,
+ *     and make a recog from that.
+ *
+ *     To remove outliers from a pixa of labeled pix, make a recog,
+ *     determine the outliers, and generate a new pixa with the
+ *     outliers removed.  The outliers are determined by building
+ *     special templates for each character set that are scaled averages
+ *     of the individual templates.  Then a correlation score is found
+ *     between each template and the averaged templates.  There are
+ *     two implementations; outliers are determined as either:
+ *      (1) a template having a correlation score with its class average
+ *          that is below a threshold, or
+ *      (2) a template having a correlation score with its class average
+ *          that is smaller than the correlation score with the average
+ *          of another class.
+ *     Outliers are removed from the generating pixa.  Scaled averaging
+ *     is only performed for determining outliers and for splitting
+ *     characters; it is never used in a trained recognizer for identifying
+ *     unlabeled samples.
+ *
+ *     Two methods using averaged templates are provided for splitting
+ *     touching characters:
+ *      (1) greedy matching
+ *      (2) document image decoding (DID)
+ *     The DID method is the default.  It is about 5x faster and
+ *     possibly more accurate.
+ *
+ *     Once a BAR has been made, unlabeled sample images are identified
+ *     by finding the individual template in the BAR with highest
+ *     correlation.  The input images and images in the BAR can be
+ *     represented in two ways:
+ *      (1) as scanned, binarized to 1 bpp
+ *      (2) as a width-normalized outline formed by thinning to a
+ *          skeleton and then dilating by a fixed amount.
+ *
+ *     The recog can be serialized to file and read back.  The serialized
+ *     version holds the templates used for correlation (which may have
+ *     been modified by scaling and turning into lines from the unscaled
+ *     templates), plus, for arbitrary character sets, the UTF8
+ *     representation and the lookup table mapping from the character
+ *     representation to index.
+ *
+ *     Why do we not use averaged templates for recognition?
+ *     Letterforms can take on significantly different shapes (eg.,
+ *     the letters 'a' and 'g'), and it makes no sense to average these.
+ *     The previous version of this utility allowed multiple recognizers
+ *     to exist, but this is an unnecessary complication if recognition
+ *     is done on all samples instead of on averages.
+ * 
+ */ + +#define RECOG_VERSION_NUMBER 2 + +struct L_Recog { + l_int32 scalew; /*!< scale all examples to this width; */ + /*!< use 0 prevent horizontal scaling */ + l_int32 scaleh; /*!< scale all examples to this height; */ + /*!< use 0 prevent vertical scaling */ + l_int32 linew; /*!< use a value > 0 to convert the bitmap */ + /*!< to lines of fixed width; 0 to skip */ + l_int32 templ_use; /*!< template use: use either the average */ + /*!< or all temmplates (L_USE_AVERAGE or */ + /*!< L_USE_ALL) */ + l_int32 maxarraysize; /*!< initialize container arrays to this */ + l_int32 setsize; /*!< size of character set */ + l_int32 threshold; /*!< for binarizing if depth > 1 */ + l_int32 maxyshift; /*!< vertical jiggle on nominal centroid */ + /*!< alignment; typically 0 or 1 */ + l_int32 charset_type; /*!< one of L_ARABIC_NUMERALS, etc. */ + l_int32 charset_size; /*!< expected number of classes in charset */ + l_int32 min_nopad; /*!< min number of samples without padding */ + l_int32 num_samples; /*!< number of training samples */ + l_int32 minwidth_u; /*!< min width averaged unscaled templates */ + l_int32 maxwidth_u; /*!< max width averaged unscaled templates */ + l_int32 minheight_u; /*!< min height averaged unscaled templates */ + l_int32 maxheight_u; /*!< max height averaged unscaled templates */ + l_int32 minwidth; /*!< min width averaged scaled templates */ + l_int32 maxwidth; /*!< max width averaged scaled templates */ + l_int32 ave_done; /*!< set to 1 when averaged bitmaps are made */ + l_int32 train_done; /*!< set to 1 when training is complete or */ + /*!< identification has started */ + l_float32 max_wh_ratio; /*!< max width/height ratio to split */ + l_float32 max_ht_ratio; /*!< max of max/min template height ratio */ + l_int32 min_splitw; /*!< min component width kept in splitting */ + l_int32 max_splith; /*!< max component height kept in splitting */ + struct Sarray *sa_text; /*!< text array for arbitrary char set */ + struct L_Dna *dna_tochar; /*!< index-to-char lut for arbitrary charset */ + l_int32 *centtab; /*!< table for finding centroids */ + l_int32 *sumtab; /*!< table for finding pixel sums */ + struct Pixaa *pixaa_u; /*!< all unscaled templates for each class */ + struct Ptaa *ptaa_u; /*!< centroids of all unscaled templates */ + struct Numaa *naasum_u; /*!< area of all unscaled templates */ + struct Pixaa *pixaa; /*!< all (scaled) templates for each class */ + struct Ptaa *ptaa; /*!< centroids of all (scaledl) templates */ + struct Numaa *naasum; /*!< area of all (scaled) templates */ + struct Pixa *pixa_u; /*!< averaged unscaled templates per class */ + struct Pta *pta_u; /*!< centroids of unscaled ave. templates */ + struct Numa *nasum_u; /*!< area of unscaled averaged templates */ + struct Pixa *pixa; /*!< averaged (scaled) templates per class */ + struct Pta *pta; /*!< centroids of (scaled) ave. templates */ + struct Numa *nasum; /*!< area of (scaled) averaged templates */ + struct Pixa *pixa_tr; /*!< all input training images */ + struct Pixa *pixadb_ave; /*!< unscaled and scaled averaged bitmaps */ + struct Pixa *pixa_id; /*!< input images for identifying */ + struct Pix *pixdb_ave; /*!< debug: best match of input against ave. */ + struct Pix *pixdb_range; /*!< debug: best matches within range */ + struct Pixa *pixadb_boot; /*!< debug: bootstrap training results */ + struct Pixa *pixadb_split; /*!< debug: splitting results */ + struct L_Bmf *bmf; /*!< bmf fonts */ + l_int32 bmf_size; /*!< font size of bmf; default is 6 pt */ + struct L_Rdid *did; /*!< temp data used for image decoding */ + struct L_Rch *rch; /*!< temp data used for holding best char */ + struct L_Rcha *rcha; /*!< temp data used for array of best chars */ +}; +typedef struct L_Recog L_RECOG; + +/*! + * Data returned from correlation matching on a single character + */ +struct L_Rch { + l_int32 index; /*!< index of best template */ + l_float32 score; /*!< correlation score of best template */ + char *text; /*!< character string of best template */ + l_int32 sample; /*!< index of best sample (within the best */ + /*!< template class, if all samples are used) */ + l_int32 xloc; /*!< x-location of template (delx + shiftx) */ + l_int32 yloc; /*!< y-location of template (dely + shifty) */ + l_int32 width; /*!< width of best template */ +}; +typedef struct L_Rch L_RCH; + +/*! + * Data returned from correlation matching on an array of characters + */ +struct L_Rcha { + struct Numa *naindex; /*!< indices of best templates */ + struct Numa *nascore; /*!< correlation scores of best templates */ + struct Sarray *satext; /*!< character strings of best templates */ + struct Numa *nasample; /*!< indices of best samples */ + struct Numa *naxloc; /*!< x-locations of templates (delx + shiftx) */ + struct Numa *nayloc; /*!< y-locations of templates (dely + shifty) */ + struct Numa *nawidth; /*!< widths of best templates */ +}; +typedef struct L_Rcha L_RCHA; + +/*! + * Data used for decoding a line of characters. + */ +struct L_Rdid { + struct Pix *pixs; /*!< clone of pix to be decoded */ + l_int32 **counta; /*!< count array for each averaged template */ + l_int32 **delya; /*!< best y-shift array per average template */ + l_int32 narray; /*!< number of averaged templates */ + l_int32 size; /*!< size of count array (width of pixs) */ + l_int32 *setwidth; /*!< setwidths for each template */ + struct Numa *nasum; /*!< pixel count in pixs by column */ + struct Numa *namoment; /*!< first moment of pixels in pixs by cols */ + l_int32 fullarrays; /*!< 1 if full arrays are made; 0 otherwise */ + l_float32 *beta; /*!< channel coeffs for template fg term */ + l_float32 *gamma; /*!< channel coeffs for bit-and term */ + l_float32 *trellisscore; /*!< score on trellis */ + l_int32 *trellistempl; /*!< template on trellis (for backtrack) */ + struct Numa *natempl; /*!< indices of best path templates */ + struct Numa *naxloc; /*!< x locations of best path templates */ + struct Numa *nadely; /*!< y locations of best path templates */ + struct Numa *nawidth; /*!< widths of best path templates */ + struct Boxa *boxa; /*!< Viterbi result for splitting input pixs */ + struct Numa *nascore; /*!< correlation scores: best path templates */ + struct Numa *natempl_r; /*!< indices of best rescored templates */ + struct Numa *nasample_r; /*!< samples of best scored templates */ + struct Numa *naxloc_r; /*!< x locations of best rescoredtemplates */ + struct Numa *nadely_r; /*!< y locations of best rescoredtemplates */ + struct Numa *nawidth_r; /*!< widths of best rescoredtemplates */ + struct Numa *nascore_r; /*!< correlation scores: rescored templates */ +}; +typedef struct L_Rdid L_RDID; + + +/*-------------------------------------------------------------------------* + * Flags for describing limited character sets * + *-------------------------------------------------------------------------*/ +/*! Character Set */ +enum { + L_UNKNOWN = 0, /*!< character set type is not specified */ + L_ARABIC_NUMERALS = 1, /*!< 10 digits */ + L_LC_ROMAN_NUMERALS = 2, /*!< 7 lower-case letters (i,v,x,l,c,d,m) */ + L_UC_ROMAN_NUMERALS = 3, /*!< 7 upper-case letters (I,V,X,L,C,D,M) */ + L_LC_ALPHA = 4, /*!< 26 lower-case letters */ + L_UC_ALPHA = 5 /*!< 26 upper-case letters */ +}; + +/*-------------------------------------------------------------------------* + * Flags for selecting between using average and all templates: * + * recog->templ_use * + *-------------------------------------------------------------------------*/ +/*! Template Select */ +enum { + L_USE_ALL_TEMPLATES = 0, /*!< use all templates; default */ + L_USE_AVERAGE_TEMPLATES = 1 /*!< use average templates; special cases */ +}; + +#endif /* LEPTONICA_RECOG_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/regutils.h b/third_party/leptonica/uos/amd64/include/leptonica/regutils.h new file mode 100644 index 00000000..2f1d5e4a --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/regutils.h @@ -0,0 +1,141 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_REGUTILS_H +#define LEPTONICA_REGUTILS_H + +/*! + * \file regutils.h + * + *
+ *   Contains this regression test parameter packaging struct
+ *       struct L_RegParams
+ *
+ *   The regression test utility allows you to write regression tests
+ *   that compare results with existing "golden files" and with
+ *   compiled in data.
+ *
+ *   Regression tests can be called in three ways.
+ *   For example, for distance_reg:
+ *
+ *       Case 1: distance_reg [compare]
+ *           This runs the test against the set of golden files.  It
+ *           appends to 'outfile.txt' either "SUCCESS" or "FAILURE",
+ *           as well as the details of any parts of the test that failed.
+ *           It writes to a temporary file stream (fp).
+ *           Using 'compare' on the command line is optional.
+ *
+ *       Case 2: distance_reg generate
+ *           This generates golden files in /tmp for the reg test.
+ *
+ *       Case 3: distance_reg display
+ *           This runs the test but makes no comparison of the output
+ *           against the set of golden files.  In addition, this displays
+ *           images and plots that are specified in the test under
+ *           control of the display variable.  Display is enabled only
+ *           for this case.
+ *
+ *   Regression tests follow the pattern given below.  Tests are
+ *   automatically numbered sequentially, and it is convenient to
+ *   comment each with a number to keep track (for comparison tests
+ *   and for debugging).  In an actual case, comparisons of pix and
+ *   of files can occur in any order.  We give a specific order here
+ *   for clarity.
+ *
+ *       L_REGPARAMS  *rp;  // holds data required by the test functions
+ *
+ *       // Setup variables; optionally open stream
+ *       if (regTestSetup(argc, argv, &rp))
+ *           return 1;
+ *
+ *       // Test pairs of generated pix for identity.  This compares
+ *       // two pix; no golden file is generated.
+ *       regTestComparePix(rp, pix1, pix2);  // 0
+ *
+ *       // Test pairs of generated pix for similarity.  This compares
+ *       // two pix; no golden file is generated.  The last arg determines
+ *       // if stats are to be written to stderr.
+ *       regTestCompareSimilarPix(rp, pix1, pix2, 15, 0.001, 0);  // 1
+ *
+ *       // Generation of  outputs and testing for identity
+ *       // These files can be anything, of course.
+ *       regTestCheckFile(rp, );  // 2
+ *       regTestCheckFile(rp, );  // 3
+ *
+ *       // Test pairs of output golden files for identity.  Here we
+ *       // are comparing golden files 2 and 3.
+ *       regTestCompareFiles(rp, 2, 3);  // 4
+ *
+ *       // "Write and check".  This writes a pix using a canonical
+ *       // formulation for the local filename and either:
+ *       //     case 1: generates a golden file
+ *       //     case 2: compares the local file with a golden file
+ *       //     case 3: generates local files and displays
+ *       // Here we write the pix compressed with png and jpeg, respectively;
+ *       // Then check against the golden file.  The internal %index
+ *       // is incremented; it is embedded in the local filename and,
+ *       // if generating, in the golden file as well.
+ *       regTestWritePixAndCheck(rp, pix1, IFF_PNG);  // 5
+ *       regTestWritePixAndCheck(rp, pix2, IFF_JFIF_JPEG);  // 6
+ *
+ *       // Display if reg test was called in 'display' mode
+ *       pixDisplayWithTitle(pix1, 100, 100, NULL, rp->display);
+ *
+ *       // Clean up and output result
+ *       regTestCleanup(rp);
+ * 
+ */ + +/*----------------------------------------------------------------------------* + * Regression test parameter packer * + *----------------------------------------------------------------------------*/ + +/*! Regression test parameter packer */ +struct L_RegParams +{ + FILE *fp; /*!< stream to temporary output file for compare mode */ + char *testname; /*!< name of test, without '_reg' */ + char *tempfile; /*!< name of temp file for compare mode output */ + l_int32 mode; /*!< generate, compare or display */ + l_int32 index; /*!< index into saved files for this test; 0-based */ + l_int32 success; /*!< overall result of the test */ + l_int32 display; /*!< 1 if in display mode; 0 otherwise */ + L_TIMER tstart; /*!< marks beginning of the reg test */ +}; +typedef struct L_RegParams L_REGPARAMS; + + + /*! Running modes for the test */ +/*! Regtest Mode */ +enum { + L_REG_GENERATE = 0, + L_REG_COMPARE = 1, + L_REG_DISPLAY = 2 +}; + + +#endif /* LEPTONICA_REGUTILS_H */ + diff --git a/third_party/leptonica/uos/amd64/include/leptonica/stack.h b/third_party/leptonica/uos/amd64/include/leptonica/stack.h new file mode 100644 index 00000000..4fa61141 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/stack.h @@ -0,0 +1,70 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_STACK_H +#define LEPTONICA_STACK_H + +/*! + * \file stack.h + * + *
+ *       Expandable pointer stack for arbitrary void* data.
+ *
+ *       The L_Stack is an array of void * ptrs, onto which arbitrary
+ *       objects can be stored.  At any time, the number of
+ *       stored objects is stack->n.  The object at the bottom
+ *       of the stack is at array[0]; the object at the top of
+ *       the stack is at array[n-1].  New objects are added
+ *       to the top of the stack, at the first available location,
+ *       which is array[n].  Objects are removed from the top of the
+ *       stack.  When an attempt is made to remove an object from an
+ *       empty stack, the result is null.   When the stack becomes
+ *       filled, so that n = nalloc, the size is doubled.
+ *
+ *       The auxiliary stack can be used to store and remove
+ *       objects for re-use.  It must be created by a separate
+ *       call to pstackCreate().  [Just imagine the chaos if
+ *       pstackCreate() created the auxiliary stack!]
+ *       pstackDestroy() checks for the auxiliary stack and removes it.
+ * 
+ */ + + + /*! Expandable pointer stack for arbitrary void* data. + * Note that array[n] is the first null ptr in the array + */ +struct L_Stack +{ + l_int32 nalloc; /*!< size of ptr array */ + l_int32 n; /*!< number of stored elements */ + void **array; /*!< ptr array */ + struct L_Stack *auxstack; /*!< auxiliary stack */ +}; +typedef struct L_Stack L_STACK; + + +#endif /* LEPTONICA_STACK_H */ + diff --git a/third_party/leptonica/uos/amd64/include/leptonica/stringcode.h b/third_party/leptonica/uos/amd64/include/leptonica/stringcode.h new file mode 100644 index 00000000..4510bdb0 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/stringcode.h @@ -0,0 +1,61 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_STRINGCODE_H +#define LEPTONICA_STRINGCODE_H + +/*! + * \file stringcode.h + * + * Data structure to hold accumulating generated code for storing + * and extracting serializable leptonica objects (e.g., pixa, recog). + * + * Also a flag for selecting a string from the L_GenAssoc struct + * in stringcode. + */ + +struct L_StrCode +{ + l_int32 fileno; /*!< index for function and output file names */ + l_int32 ifunc; /*!< index into struct currently being stored */ + SARRAY *function; /*!< store case code for extraction */ + SARRAY *data; /*!< store base64 encoded data as strings */ + SARRAY *descr; /*!< store line in description table */ + l_int32 n; /*!< number of data strings */ +}; +typedef struct L_StrCode L_STRCODE; + + + /*! Select string in stringcode for a specific serializable data type */ +/*! Stringcode Select */ +enum { + L_STR_TYPE = 0, /*!< typedef for the data type */ + L_STR_NAME = 1, /*!< name of the data type */ + L_STR_READER = 2, /*!< reader to get the data type from file */ + L_STR_MEMREADER = 3 /*!< reader to get the compressed string in memory */ +}; + +#endif /* LEPTONICA_STRINGCODE_H */ diff --git a/third_party/leptonica/uos/amd64/include/leptonica/sudoku.h b/third_party/leptonica/uos/amd64/include/leptonica/sudoku.h new file mode 100644 index 00000000..5abb7cbc --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/sudoku.h @@ -0,0 +1,77 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef SUDOKU_H_INCLUDED +#define SUDOKU_H_INCLUDED + +/*! + * \file sudoku.h + * + *
+ *    The L_Sudoku holds all the information of the current state.
+ *
+ *    The input to sudokuCreate() is a file with any number of lines
+ *    starting with '#', followed by 9 lines consisting of 9 numbers
+ *    in each line.  These have the known values and use 0 for the unknowns.
+ *    Blank lines are ignored.
+ *
+ *    The %locs array holds the indices of the unknowns, numbered
+ *    left-to-right and top-to-bottom from 0 to 80.  The array size
+ *    is initialized to %num.  %current is the index into the %locs
+ *    array of the current guess: locs[current].
+ *
+ *    The %state array is used to determine the validity of each guess.
+ *    It is of size 81, and is initialized by setting the unknowns to 0
+ *    and the knowns to their input values.
+ * 
+ */ + +struct L_Sudoku +{ + l_int32 num; /*!< number of unknowns */ + l_int32 *locs; /*!< location of unknowns */ + l_int32 current; /*!< index into %locs of current location */ + l_int32 *init; /*!< initial state, with 0 representing */ + /*!< the unknowns */ + l_int32 *state; /*!< present state, including inits and */ + /*!< guesses of unknowns up to %current */ + l_int32 nguess; /*!< shows current number of guesses */ + l_int32 finished; /*!< set to 1 when solved */ + l_int32 failure; /*!< set to 1 if no solution is possible */ +}; +typedef struct L_Sudoku L_SUDOKU; + + + /*! For printing out array data */ +/*! Sudoku Output */ +enum { + L_SUDOKU_INIT = 0, + L_SUDOKU_STATE = 1 +}; + +#endif /* SUDOKU_H_INCLUDED */ + + diff --git a/third_party/leptonica/uos/amd64/include/leptonica/watershed.h b/third_party/leptonica/uos/amd64/include/leptonica/watershed.h new file mode 100644 index 00000000..d6b20775 --- /dev/null +++ b/third_party/leptonica/uos/amd64/include/leptonica/watershed.h @@ -0,0 +1,64 @@ +/*====================================================================* + - Copyright (C) 2001 Leptonica. All rights reserved. + - + - Redistribution and use in source and binary forms, with or without + - modification, are permitted provided that the following conditions + - are met: + - 1. Redistributions of source code must retain the above copyright + - notice, this list of conditions and the following disclaimer. + - 2. Redistributions in binary form must reproduce the above + - copyright notice, this list of conditions and the following + - disclaimer in the documentation and/or other materials + - provided with the distribution. + - + - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY + - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + *====================================================================*/ + +#ifndef LEPTONICA_WATERSHED_H +#define LEPTONICA_WATERSHED_H + +/*! + * \file watershed.h + * + * Simple data structure to hold watershed data. + * All data here is owned by the L_WShed and must be freed. + */ + +/*! Simple data structure to hold watershed data. */ +struct L_WShed +{ + struct Pix *pixs; /*!< clone of input 8 bpp pixs */ + struct Pix *pixm; /*!< clone of input 1 bpp seed (marker) pixm */ + l_int32 mindepth; /*!< minimum depth allowed for a watershed */ + struct Pix *pixlab; /*!< 16 bpp label pix */ + struct Pix *pixt; /*!< scratch pix for computing wshed regions */ + void **lines8; /*!< line ptrs for pixs */ + void **linem1; /*!< line ptrs for pixm */ + void **linelab32; /*!< line ptrs for pixlab */ + void **linet1; /*!< line ptrs for pixt */ + struct Pixa *pixad; /*!< result: 1 bpp pixa of watersheds */ + struct Pta *ptas; /*!< pta of initial seed pixels */ + struct Numa *nasi; /*!< numa of seed indicators; 0 if completed */ + struct Numa *nash; /*!< numa of initial seed heights */ + struct Numa *namh; /*!< numa of initial minima heights */ + struct Numa *nalevels; /*!< result: numa of watershed levels */ + l_int32 nseeds; /*!< number of seeds (markers) */ + l_int32 nother; /*!< number of minima different from seeds */ + l_int32 *lut; /*!< lut for pixel indices */ + struct Numa **links; /*!< back-links into lut, for updates */ + l_int32 arraysize; /*!< size of links array */ + l_int32 debug; /*!< set to 1 for debug output */ +}; +typedef struct L_WShed L_WSHED; + +#endif /* LEPTONICA_WATERSHED_H */ diff --git a/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaConfig-version.cmake b/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaConfig-version.cmake new file mode 100644 index 00000000..60ed0465 --- /dev/null +++ b/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaConfig-version.cmake @@ -0,0 +1,14 @@ +set(Leptonica_VERSION 1.83.0) +set(PACKAGE_VERSION ${Leptonica_VERSION}) + +set(PACKAGE_VERSION_EXACT False) +set(PACKAGE_VERSION_COMPATIBLE False) + +if(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT True) + set(PACKAGE_VERSION_COMPATIBLE True) +endif() + +if(PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION) + set(PACKAGE_VERSION_COMPATIBLE True) +endif() diff --git a/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaConfig.cmake b/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaConfig.cmake new file mode 100644 index 00000000..7212d3aa --- /dev/null +++ b/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaConfig.cmake @@ -0,0 +1,46 @@ +# =================================================================================== +# The Leptonica CMake configuration file +# +# ** File generated automatically, do not modify ** +# +# Usage from an external project: +# In your CMakeLists.txt, add these lines: +# +# find_package(Leptonica REQUIRED) +# include_directories(${Leptonica_INCLUDE_DIRS}) +# target_link_libraries(MY_TARGET_NAME ${Leptonica_LIBRARIES}) +# +# This file will define the following variables: +# - Leptonica_LIBRARIES : The list of all imported targets for OpenCV modules. +# - Leptonica_INCLUDE_DIRS : The Leptonica include directories. +# - Leptonica_VERSION : The version of this Leptonica build: "1.83.0" +# - Leptonica_VERSION_MAJOR : Major version part of Leptonica_VERSION: "1" +# - Leptonica_VERSION_MINOR : Minor version part of Leptonica_VERSION: "83" +# - Leptonica_VERSION_PATCH : Patch version part of Leptonica_VERSION: "0" +# +# =================================================================================== + +include(${CMAKE_CURRENT_LIST_DIR}/LeptonicaTargets.cmake) + +# ====================================================== +# Version variables: +# ====================================================== + +SET(Leptonica_VERSION 1.83.0) +SET(Leptonica_VERSION_MAJOR 1) +SET(Leptonica_VERSION_MINOR 83) +SET(Leptonica_VERSION_PATCH 0) +SET(Leptonica_FOUND 1) + +# ====================================================== +# Include directories to add to the user project: +# ====================================================== + +# Provide the include directories to the caller +set(Leptonica_INCLUDE_DIRS "/data/home/luoliangyi/sane/code_app/third_party/leptonica/uos/amd64/leptonica-master/build/release/include;/data/home/luoliangyi/sane/code_app/third_party/leptonica/uos/amd64/leptonica-master/build/release/include/leptonica") + +# ==================================================================== +# Link libraries: +# ==================================================================== + +set(Leptonica_LIBRARIES leptonica) diff --git a/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaTargets-release.cmake b/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaTargets-release.cmake new file mode 100644 index 00000000..6aaca3d9 --- /dev/null +++ b/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaTargets-release.cmake @@ -0,0 +1,19 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "Release". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "leptonica" for configuration "Release" +set_property(TARGET leptonica APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) +set_target_properties(leptonica PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" + IMPORTED_LOCATION_RELEASE "${_IMPORT_PREFIX}/lib/libleptonica.a" + ) + +list(APPEND _IMPORT_CHECK_TARGETS leptonica ) +list(APPEND _IMPORT_CHECK_FILES_FOR_leptonica "${_IMPORT_PREFIX}/lib/libleptonica.a" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaTargets.cmake b/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaTargets.cmake new file mode 100644 index 00000000..ef92904b --- /dev/null +++ b/third_party/leptonica/uos/amd64/lib/cmake/leptonica/LeptonicaTargets.cmake @@ -0,0 +1,99 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) + message(FATAL_ERROR "CMake >= 2.6.0 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.6) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_targetsDefined) +set(_targetsNotDefined) +set(_expectedTargets) +foreach(_expectedTarget leptonica) + list(APPEND _expectedTargets ${_expectedTarget}) + if(NOT TARGET ${_expectedTarget}) + list(APPEND _targetsNotDefined ${_expectedTarget}) + endif() + if(TARGET ${_expectedTarget}) + list(APPEND _targetsDefined ${_expectedTarget}) + endif() +endforeach() +if("${_targetsDefined}" STREQUAL "${_expectedTargets}") + unset(_targetsDefined) + unset(_targetsNotDefined) + unset(_expectedTargets) + set(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT "${_targetsDefined}" STREQUAL "") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") +endif() +unset(_targetsDefined) +unset(_targetsNotDefined) +unset(_expectedTargets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target leptonica +add_library(leptonica STATIC IMPORTED) + +set_target_properties(leptonica PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "/usr/include" + INTERFACE_LINK_LIBRARIES "/usr/lib/x86_64-linux-gnu/libz.so;m" +) + +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + +# Load information for each installed configuration. +get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +file(GLOB CONFIG_FILES "${_DIR}/LeptonicaTargets-*.cmake") +foreach(f ${CONFIG_FILES}) + include(${f}) +endforeach() + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(target ${_IMPORT_CHECK_TARGETS} ) + foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) + if(NOT EXISTS "${file}" ) + message(FATAL_ERROR "The imported target \"${target}\" references the file + \"${file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_IMPORT_CHECK_FILES_FOR_${target}) +endforeach() +unset(_IMPORT_CHECK_TARGETS) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/third_party/leptonica/uos/amd64/lib/libleptonica.a b/third_party/leptonica/uos/amd64/lib/libleptonica.a new file mode 100644 index 0000000000000000000000000000000000000000..8bb7fa0ae32b5ba0befa2470dc00f0144a4cda84 GIT binary patch literal 5100066 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%0A;UJz7g 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 GMnB)zIQc3%3?Dl8 zjzxP2B@Z}K#hg8k^~l>!N%RzZmts%`lTe>;tj3LgO>&{e&9(WZSiQtYKXPSY9m^9j zMjb?*Owsh`xNsHYbC8e6QIR%X(_berI#sbh2l01iWRe=U207ngFliTRK6e{H|IXL= zV=lZw<75}|XwvxW62v*h6ed0NyYMSC&OS?|ts@TfC zpvy^Qcg|k-z~dhHXC64kPDsVy51e9Sl_MV=#vUnlLMr-WHT_mi&+|IuEAXH%^1!EQ zK8x^62haKNdw~aiwWc?*3C!G$VsLV7FFjV8Tc|M)J~wK5m@Xf$sUP1TJm??yz}IU& zJ2amX&1b8|1KI_dx!GG9U!!rJpCQjD9{m5K>2tIT#fKKuf539?|d>KG&;`jm?2yNncgv^q} zh^8ek3uHvGiQ^FkOQs_DmApipD|tCFnHVvtWGX^P$xFnE5|@SfNqGyCg11d9L=_Nt zisMxA8ONLA08|`pN(IQ`*i`f%$EOnE$O@QT@z9~jIGYMWrbCW#;49P~`Bk7Y6_88^ zA>&f{<(sG}_$ zK~p!sv8koj@YKklPnr7Vk%Ban#<4Bv0B+X^A#B)-E)Rc>_jgRGTxXXG<-j zd#MeZ0UJ5I#Ww)e)N-4sZZSu3k|{o}vn1kY%gArgv%B;dzIjIU3<7b$-T7!PZst8x z3B*A-?Q0nN=>+1SWe&~33_hDc9B%$sD0l$AM&s^s*9!b7oE!cRX`ITXhguA7_AK0d z-qZAiA1&zjXxuI5Fg>2S`Iz|<;l~I*$7*^vANh={)Ti0=AU*-X=UUB&>P2l~>h*IE z{C1CWAJVvy|3BbG2k%Mam+&9q&+y+T_=g1k9U{a*@<@D&!0B;#!{i!_PlLv(+{pr0G3p1}m5LRgc;3y(^R(a-7JS~-xLeNM8mAwUbB>l%#adT- zJ67uX{&x$&6hW8@#9 z+wod~=ZSJxi*hFm{C9$$^lA9qEAWwm{s9j@8w4)v^{mF-^1m+l%W`)JT-w9`2>w$3 zVR}AH$z?*$5dtUQZrbYvfuAYxDH?anNin7AaO15SH~Kez@JfMG9#ihG1Wxre^tTCo zl%Rh|W$D0C|a`t=h`9jc3 zK4wdb^ep9^sMlE}=UMnO`kW>3u)wd3qgpZ5ek z)ywed7r4|gOhnyY=%|4}6=(jhu}rgO0ZZ zJ{H$TKYKj*Wa@RUo6k^zOZ@}|PWm+EjuyDoPlLuuKM^6%Qh}c>@D&1=^Ol=6?$*zP z8aMLOJqkMhBJg}%8$CQJ_)97(Qn8i&wCzxWNbUR zuF2B-ByKtV0+)Iou5r?*lyjEArM=16cIOH?W19X%U{apDMY&Yp(fFg|PXZs0Yg6Bc zMY&QQ86!{fe_8O6{I?6dQ1IX3!GDj&-STG+BWV-!UL*fdfy;iKqj9%BErCbC&(wFJ zz$*nF)3{rnUuoR5ui>*!;8LF73I0-_4|(u^TJRx#8va`aPWP+~{)z{G6XVY<|9A90 zn_K?j0?!ltf2eV{K4%De`s{>}=X^nbfxw#uPVZ|O`egz?Q{dNY+%5k@9{2{0n|cig zFFKwT_{q37<@O1j^la!q5x8u}{Tg@6GfdwYbeDU$z$uR@m+s@y;nwGe3Lb!)eO@>H znR=b!#@7p6?vteH^%T)h#-EYrC=YzP2Y#goe!IY@2>x#iT$UTt^I^9ys5Bv>npKksE zlt%~IC;geDL!TJj+y{Etg`4|5J6yQAf1~baCit8CG;_2a8veVq9hm!Q1~>O(%)XGp z&Ha@e0&p1I++PX0aC3j9#D$ytDEGT?a~~z3%z@_5mP_IC!qbZ zj6F?h=03;&t#_;cUwLQxhuZ&fTu~mT{7tR`&87J*L8ess16on$KBwVr z>TmMXT7%BXrsUDC^IvTUb)sAUGzJq%zRZmC!TLdwfD1S5%x@La&AB8!Ugwt>ox5r2 zeluZi`SW!Cb}|lenED%N5l&LsPZdo@aIDn@lKmWtKa<})f0C+f%6GSZKxd`SKyI}- zMSgO_ZrcIm%cn^Ljz75)-Ss~VG%ga(w~r<%INH>Y^S?X){Q2{mnrrk6$ANEt=XgS4 zVSW+l0)cP;&at)CDPH%}65nCy$)WQ?=SI}S^87fx)qN5X&ZPGWi^5%brQNgALa~im z<{gky`=!wO{l|pX_a8N-JM)Oxjv?WZ+e-1G-r8`+oKC#j94g*_<@i$jxzdc_)k{tc z6@Pl=abf%2Qu{6cpI#5GKQL(e`~%kf?UA(o;jT$Hh3)O1zZCM{{#Nrbq1aPtrNytb z{(AOfq#u3=KXg%OuJdk2MXfG+{xCO|r*rmB?{?4D_)QX*omr1^g;-xzC7SI)0zUU!V_Z8-?$}4iz zbxt4Xk>QGfx(=A@JawICuJhG(zPT<^*G1;KL|vDtYg6v#Qesap@8I15`A*}vedjpw z4mnrM{)+j>_N7IG`VAp^V|fKJ$zE4_!6R#!no29**OLD1A@anM^HX}j7 zXU^NF=1ObHo)Vy%m?FYH-vIuCdH?V6P6f!FcLJRk;o>OWr`|ci8&H?hTOP~FT;;oO z*8HX%YyRTl#UC%nyHL||?GIs55j)sd&|}ZcNxY1q-}Tn-u&;kV!&?7NrmmNIk^Rya z<`3_hnbZIGq<1rx7qVeG_Q;c1dK;{d?~f(Fwy6a!QTNVLrgc!Ae335hZ=u+gzCp`b zN-jmegpz_YON!U>#&DLl=c!_n%+ZGBc$jyp7I&EIQvW$xM)gBcw3-R8tQMEp)`+mlX9%2)ctOFU?Als}ta<56$u zPc5_m1Eb?wc9rII_AEcLU_0~0tMJ{Ewpp>>w7wIt;wio`r|mq_&cyvkCxIWtIV zCH+CvlEk~F-?INGtNIUni`>q=%iHYFBJ)3fG60?lo44Ta=yiL%R29v~>y|7nzjm2n zb>X#lbB%Yh6W8{XVSKT93Xk7UW`QNWdvxh=CO2PEI2sMA-qYsSkV1c>)hz!PzYK3c z(YyXx1>02?=l!|1XWW|BJbU}^7wU!{$=~burdI5%M6ae7$FvWkm(1@$X%=3WE5Ykg zRyW)%>Z*Csw+YlKzNB!`9)Hs;pMPXUu-yM>Y0ipe!Ey{^)pbxy)uwQ;+UM_BNvw2J z%9j%_!aTv+91i9o9cAIfTCssdQAW=WJVD>~vPadBuYbLuyZ0b;ziM9=tT@HrxqvlT z5u8M7EXUh#YUJZuq0*BI4)pE+3Q9&T^6=`pzvBhcP**8BMihuWH4EZSLc%Kg-W2M< z#uobf5vYlJ2M`>VehChEdmr?hw58T|r(@znTi_oKS4@aE!4;7`8tT+tHvNcpxgwWlDZ&=U)G+cOeI);`NG> z2YEBg=D$|w|D=cNkYlag<3BO{JxKe>(>Q}HR@ZXnts%N<5qwR83pY(q(xUuBthN3} zAhP{J>>YnkJTvTnr3tbY5yWCS~-3G=l!Rw;ezb9O1qb*?Fso$+`ud+Bi{sH zS!`39{TlL?^nAjZOZ<;)M(&dK16k1@nvC}65UYo?h1$Q$YW-sj^+|);hZTo|0e|Nx zG$EiMLBUhe8vg56!lxNSi{FFx^R|Teb=Sdiw&!SsJbJ;{782=Sg0Jhy*WWi##as+ z)Ups>4nyd_mYVQK1Ay|O$!B7HX^ujj7QQl&)W9Y? zW1@U-w6ggS-;cLBesF7a}H1kNRFueUeSB(pJSg=R&%Yl7iWMHn+V z{1*nxIgp1XU62eMI-U2gum_hmc>7eVB%tId!(* zqPjX2CC)|kbpSg~C56Mth>2q)I7xZG*Ij@1!AVf}5dda^tMz0EW6EA%_3Kg_gN?93%^NfYir(uuvFYd}*^ ze3QXUm;9^NQ>W;G&nI%BJ~dD2?g-LSVg-Ipva*joz8R!!x8*Ab)zKq-Ap3Ejj(nOV#YgBM+Fqnt>w z=pElDlsw1>&-<}1t|Pd`a6bjRgdS9wC3FPuH-yz7jDQ{GoK9MzeY%LPye_ol@A#ZZ zyXcWMU+h#&(P_qEb*mhzU|bMC=c32CK=&zeU{Vra5S!Jj(M~B{Vtg^p2KD^VX`t0} zJ?W=8^r`us;G~NNU+wqg_c`3EDL)EdsFl%m1Gf)(&^J*Np_0`fdGW$v)qf(jm!rPb z>kmSE5Vg|!uuC^8=@+gSE8w)g6?+aG2p2a7gZ|F`EsMX)4EH8c})os8x zP*fAyz40s1voIf{DqFji!S15M$npOYZGlfIMeMK5OX^Q%BF(6WtZJX3rH4gmWY0IG zD4&d*Jm|^Tm7ugLvQNtKII+3%r44j0s8>Z$wCW>7@+twmw`-r#jeH0w)Dk4KX<#GRhY_u2pAf(WBN zh+&RUs^T{MIy2peb*J1+DO5n$xmn?^y3EcO+m7!qliyTOlvpN!qWGmNPa@8gfkwQz zE-m&%a2>d(wQjY#6g|FHRY4iv@OS(O0(70;6{Z2|VXk)fh#{fke=VOJ>1qsC_UG{U z)0+m!-!X!;fl)^IR8)`x}D$FmMOgsl&Q1%Zxph9{VJ%+e(jpoTh7kOORV1 zmD>Tqc#q=W)OutNk8v|zp_h5~rp+C}J3vGS=f)_w9e*$4!#6n?0xN>UXzKN*KkunM z{=+JQIsUw7aWY5G6`V=H6=o6;4lXfMy*>UM(BXe%gHuILaM2>p304A97x1^?pjqV8 zxmmW1Wn=p$v{!07H%(mYqFYgO_I8T3<_N&Uixb@>-IsOj4 z^lq?sCNL0s33OBh{9fQ_#x1yiQXpj*@I2!GEoH!vV(Py!W4Q>Bm{582z){0LK@5}G3wInD5LziNi!Il*DA zux zu>_nLn|kq4qSRy0JxGE7|2F(Uvn3VtI#1>^kfPf&F}_q|qLES-^rraDU$B1{=DNBP zt?xORIu(h$&ylEW-ofaHYWieFB}SnHn>Bkq#EdUNis?V#LmsH_*$>gsVh~;Cr4y>; zBhY|njT*2^L(Rc#qr?^$qE96hnR~D@&Y|g?5-5HM2tD^RVmp`c>+@u4SjNK?VhxH@}dY3F-b zf>Y^WGP+GLjzQ#av^ZbbU`c7)~gfz+wRaFjEwm-DnRu{Y+qob z^%@#D)xZ{Cf^O^bf0$q1>pjof82=f202+POUQ2Qb8{ym(O5Sn0--R;*5 zXf@8Cy2>wjx>OH5aM}5A-Gvy$zXLL81mmGUZ@tr|xX!igLR~tf*G1y2s_(h?skapd z<7uj%MwR$A7TPr|Sg^O?fNkal|E>7Z5;NDt1{W_{U4HMoP@`uPHE<${`XdrGA-*t{ z7ufSmpxO^?K=P`I`J!0AlK;Sb78`$9o6) zIn-z+>^34K3|$t{Wfh%aZAop0vw-S1XdR1MB(Lu(vJM((OS$dP%GfN%kc$Qfc~!y; ztgey(G)8DHqd37Rj@9j5Yu1m6gQrKlw((V{3!>8w0t97eVI6Doku z;u-%>R>1}rw%^x0xJWgX!qQrA1A{JyJOY;GYB#uZ`|=rBT?;<-VH;nRi(}Ro!j_+s z3|d3w%Hc^e!ofLaR+3Q>ti+TA^VAc!FkQHKPwNw;pFk+KL1hgW*93?8J7=S7QbK;; z$oF^$(4q;Qg&n|%zw=HQD{sdv5iVU(?|+x_nE_z=DdhSGY>GJP2idc^&1;||j-uG) z@yX({Xh|b1ZN<*J0Z@Z3vK~Xd4$!iU7B=nl`xw@q{QY{e#vX8&vO zLp5ScrKf7h8envhV3jdV3!7af!gl{c_UzaqomEizd31(Wfu$zfXHnlf{{zJ#0hZ&k zKT>QJQifTvHonUl+nldjd7%Bx(*4M>zkFkV^fol?j|Ry()R8Lti{J<3O_q&R5F6Xa zjx`XZyrHs-j$YCOz=IiYFYQ77&J5J(2zk`g^2xQrHyT5Z?N3|Y9by3z{(&jN_SX^n z-}q7@cEKHct|TLdJ$ILrA*Bd+e)fMf{>^xMfN5Wy`y{ru{udHZ+ecnz+kcN| z%Fhz@PqNx=)R-{J`T|%69NCk7FidWFGG3amv(Gsn<{V*1ho#+CLe+ixf}SU7A&y04 zDegIh?JvUMHAm&|QuF=C>5&m^xG-4Ob-MWl`*lc3rsZDKtu`M(aEB*>lfqkoZ&Qcq z?%-_+beBqGgC}1WY$I!jCs$h?v{=0XDFmWxbp$)~1#cI&>kITBz0pW5OBb~FqPh(( z*6Is#{*<3Lv@5CUtiG$>IdC9C{y)-%5_p)$0DwCJq{|+V@+LLc81B0B4esW27s{wA z6Es>O81i{*$D}!MQEIp(6>Lf^fdtsZ=cWvEsm@dfjarqI6{1pwb$Jel9O97EPBiHr}2n!R75 zh(3*~k^F}ui^&$nofj=ADhols=3PUa`oOF8VdY=#ZH8)n-!W;uv3Ju(_QLV_*^hCD zL`K{|ZCk0U3D4#@zwoJdu)6)%JrA!y+A8lm@}KN7D#-~|VhujW-?^5jNDuP@-|9|U zNE`45wJlAv3N?z8<<+Z?&||57KZNEfhq?EwZu90IU%Fg1qu((NLQpF~}ndI8?m1~pB7Ejj}zYs-wdAE285}o!>@^5!@wNW^n zTZ9MKS#WSrYy|h3Xkm5@eX7I)P_Bm78k$I*O&DyO3e=UKAkd$&H}|dJ=(a z!Cr5rzDRP8CD09(v5LM$Li?m(Go0$HhG%5~WOa%uUw1D_3u!A|m`dvX`ZrFJMW zyHpurqebKuOAJ>v?J%=RJb{6IC-Sq{-6HWa8iUI+ZV9&I6yxwl{5`7}p-!|ZO)ZjD z+WFD)S&lsrd${2zxXzfzIx|>Nh&5kl@8$(o#^@EHj1ku)l~7vzS?j}8gFG$}`;Wt^ zgAT`Z)$(_KpnGp+--WMp@2#T5DkRpx(W5&Q^za_#iBXb)Bk6EVSc}+nEp+vU~t_>nD{vq{ORIRe_H`~;i zp`R@pC`d%P8+=bnshY& z)xSCz-xW@_-@3BRJ6N_eootu7vW+@ew!@ulg|2L$q7gjn_9hawKTh&*``G4bkxHKB zYdlL!zN`{myMkKIbaCa|s;C>kp9LE9mUbi?|Hb{evhOLFF7;!wM72bq8HUV_##$tj2S@ zE580ESi|0MZnEJa8S26%pvJN$)IF7MXp!01FdvGsqV9c(%Pru-mz1^@7a=NQ6}?GL z)n5k$+Q~sz!jl&@YQ==*3j4Pl>J0e_LCa`utnwI{^|dvN zZV1Ei&&7$=eFKjq^o+&B+Doa?_wUX;C)9QBFnrHC)HOBB?p@!Hd4#% z+xo)3P{!0u)VJKf@;6i!dsC!aO&t2aQ%chkSVu=EQt&P8|IOUHfJaqbZ{w2-7=dQe zsue5#9Bt6xB_v!EMa_f>OfYB^R8%U2B#>xG(qy7RDPWUWrXfJpTCKK4Yt{B=D_&~x zQVk-Y)(c{_w6>O3Yl(QP7izunf7jZ3&%ARo2W|U3|L@z+Gjq;<_u6Z(z4rC&v(Da; z_&afIg`IeDC0#)VtatWyJdYl4JARL2wGn;WbMj8X)9)&njo=v(bxmtWnKH#3 zMd#Mg{7Af{6H3LU!)wI&=$P8h3!Qp(>9*kNop`i%x(LT#*nQwyOAs#I8thw-Q0QkL zTFK~m1{v*7YGspZ#fW4E)CBv|txL!34l}t?%T}?+G4ra(i4SU7f5Trr54)V`xF_9w z6i8p|Ug+pEH8BqZy^D`mw=3_GGPhMh42Y`3@t1agQRm;NBwZh%TC8!^;zJC6-g+Tz zN$bVqk}cRjBxd1Yij*C)F>Sf+TJu{ zn_Uk66AgR~E!M?HQOlrTx+&N<5ih)xiV!KkV*5)=6e&gL_fxd~NPLrDeTei;O|1`+ zcy_*&tx<`q6q0777Y!q!c%%om;nM!4g}bNObh(~@1y=f#HS5G1RB&5M(zMsuMwiEb zUq>A$xwyLiV&@xp{1VgVBhoJ0qw7h`m+;P`BL~x)*%|U!hpt|-UA!HKuW0@qZ+Y$t z_S}K`m|T`Nk5+DFnsMoX9WI@#87z=Wp3IZ-@RXAi?D;0lEahEjwWKN?swRk;q>NjS z$fTzaD`$~-Q+}Rw*>&vW}$7tW&{H226sdNSW=&eV< zZr&syudz+Gq%Z$AG6OY10m}~_kgX6+JHn%5Md|CoZrSWeB1&Gccm#6}_XLS7#4y!c z+VNcPs{9oQF0IP%?0`uaSw%Qn^F(GQ%sW7;d6ZrN1KjNVksy<3k0C^coSjJu45;D0 zj*R4}gdS6Ji_TK>X;^M>5yY|~bRVW#@ej6I^+L`b3nNSxawB=c#VS|{e+ z^MgI7{By6^Mb5@MAq?7R-7;Iv3a)+uwMCz4KLA3rYRDtYlbum4PsZewl()1bU(-}w zi**HnR*!k~tS9~5ICh>4q2kL3DWG8H@xAp$y4^tUE~foGs2PyZ3^ zHFT+>4E#hXBT^+b+opX7*PMhmC4OyuASAC*grBPz?x-B7c(A^&d~)yJfnJ|Ot zZ#o+g=+?&)#gZLdbFx+eeT`$^8roM}1NjIs&qtW5WDczS09`@f)Xafv(I?1QAL+X^ zW1tNvJhM|@JUSL5gn8&pF`$G3TiN|N@K(ONIzFa^;bx;)8{24E2Vy?>J zh*C(05?%`-F!8NkQu~rRTnUA7R-NC}rThTGJAM89Dg(ZLVV+~vHaF!tMX%UlvOzXe*7tvb!_+OWd9K^9q5>j*@Pi@Dq<*L zx)$qjNs8f`(YK}qn<+^R%8JFG4aYZ*`B!+%KO&_Av3s)c+9wN^+L9lYmuR4|P%aiQz^q7V5jrdrfG7rw`wjhU_su1)j@Fo*pU zG~(7jR^py|YHeeh^1xl_wUYVAO3JhHe4>?g*PC0VLfVdh$nv}Vo}hRCz_o7^@7|Pn z!8P(Fj$hn?3lNx?A0<-@u91aD-&p%x1Q~8vqW`A;Mm|13XM<-*%-c`V28nr#CeYhD z0PUlt}0z%J6I(f2K54=m!_swEum{_et{hNZ+A^cnN z=F>DJdAaOyH!1pJZd`iykPfg4VZ#YIo{m$8*K`6%1kZkc`^2D*I;Gl zz3gEWigZ*5+78#vqqX1t7vAkSYLrmE)DQGMT0&GLZ*)8>y}^M4avoTsKDbu9Y_2?M zbUlhuVkh+gjxNQ@$PM;Kr4;Yr?-I48K$p93O`* zu)69kB$-IB6;c_ko=~c}c&Io(4}JMuF{%E(1ooN75j4d)@PaQEaHO>KaYWl=r(inb z>o_l~;PzeOB(%S1?;Nanxo4WW(l5Y}y+@Oi7xEi7JT}+-s*N)w_QC2)#x^ z3!d9?W3<4yU$a#fiXIhWgA4+Rva@6e@U|c)#k4a*%^96#1)c1QO0Pb zFH#6KVDP-w@s!>zlv(XslLcbc}>3^N&S#ke3m-ufu%|_b^J?iWh^Q#OBMS zUzn+x%U`iy4Ah`)!HG$K6aw@w`8r~-=3`kUIVdS0%pDs7e|+ByhwALaqiA55S8Dd{8s?V%JQ)?9}Crf2Y}-;>+GD+r;CteNb~ z<9?w`(Wd5LzDI~X&`f$EmViN;{?}AgOhB~%{k}GQbRvWMUsMR~Z$@fw2>YMj$~>9D z_Bm030Qojxb2?Fa>)V|hC=??ljGi^mw!#neMBt7~H2qgnc zgL}4yYXS};SqTs@-e!Y)d0gV%!`!196Lk028mP^|CicFysEJw=WI!!Q~MZW997-d zYNlJVTKG#)R4WspLLKRA5QZIhh#kc0Q;`JF5qKsT85#3-{H4g4H{*{4?|7l>LkMsZ zLc2c1gh=*67ez|H7|GZZ$2poSAPW>?MhZ<`1rlLGdWQwX97!<;3y7nFJ@WogC5*^Ovl2kjWq`e;}a zQHpj|J)q+-8#jIjy_gh#D_;9bji-Tl;acF;usK8BlYwfsxg9xh4)UhuR=mA<&w#vd zw)%<0UxQF127aqhnT#n|Mcgy+sP)_MF^>$~1tf~5;4A8l_lsPK>EoITwEy%yn0&LH zpd7MnKXi9RzMaLFm5uvy$7p2|CpBd7ndPd@fj?S_%}{G%evGxNWYWuf()TYnNlcd& zyuLo)SGrD6(sX?-8hq?TF_RxU@GRa>)AQ>8xii8!J-dyKJQHk`>W-8n$@6YatV>(=e(k<9(Fh@Nwc8MYxX?LQg5e5V9y$7M@9vE_*F zdSdDKO_SW8C!zJ_D?blkBYYxKaLwsbUG|+=ayDxA8yP;Z=Rr4~B=fb8GwZ1U68evw zWi=~{P%%8yI!)vCvNfraw*+F9BjV|!B=6@lWLZQXGHpn5y}>=_7(FNI>mVgdS7Uhl z&}jQl=5P7F_SQk68Ghk&?w2i&?>p&8@ZQjJd`Zc~(&LN6XFs$EaCk!qVae@7FaRwK zwy3}|`oWmFW6;@-ZMB5<8bGZr<@E* z^D5rq3o#VR7KMWEgd7eR|JxqF*qL&;yt!w8$m18&nl0V=x)Z0PgB;_hv|qeP_^%-T z3$d0qSwQL46U64Feq(d2U4qt0P<)ks?g+m3!Yk9#!XratPlk2hIPsKD8QXsGLM#=Z z1mu*!!U$A&q)s4ihcwPK0<+s{)7a#d4W=lz1>mXEwn2IqBYj>}CdA`4%#udjI`V-s zL3j_M$OK`9h?Jd=f1UB524hh`UU%fHUBd)Cp`vhhz4$A%F9en81nNjg7VT|-2X(t# zJz}*c$x@1TfmT0~S~dsk5Auy?HK-S^rF8&fb0A-P7GScJj~6h;OxPI-CsqWK?44yW z-mrE2GLhLrN*V)J*{=QW!62HAEkd$ohmZqBnT7HM1|2 z%h@rwBQ8t*2d2IrqIHcj^?_wbU3oArpZ#_o(@yjIKxuT`aVWnXmni& zhepMee|tzVNZ>i+dr?!%f_*Xe(zmyMRt(MMpmdD7M-x+G@h=p1fh8Bpb+f4#;p1pES zJ(wOxh1G=?;^6L(91^bw)=OkL6kZ8MxDx^rrdVuAYkf#CWqLwr^yE5thnXZ2ku)S%DIE_7agh{)8acgWzpfy$_RWX^hSWV5Mq_??-gj%qmV_`B# zm5IM_F4Va)h}#puCJ49Dyj2B=Emk`XoO1<HH($09R8;Ds<~#dsar1XOBNgpjieAlLaB5bQBGBh)i;M?Qfq`N8D!3|GsH@3 zRp;7sq7+9L)g6al022}LP*N5D66w7H%FrCrcJ}mHu{IRqVBFE2nLOl9Q(Z}?9R0lMeShBq^>poSt6FN?9fgF?LLHwfU1R&~ zmg>gNsnQG_K}!4tol7@16_qZB2$w`JbUOOr{?6HI@M5{4x0%Lzi?Ail0+GRpF7ym`D;>u)MOGq zSwEJabC`JPKEv6#%1<07JP9ZM4EnhMFD`xw3j|i2g5Sg97dPdU&c#iki|gCk8(W%B zIe5L^HnvYWB69lF+2>YQgwP;E)n}DgRZa~ZdHmS1=Zv2^c5GyJ zBsA;n>7j8&aN~={hi1i=G|4m3*s&F-9T_^ZAr@;rVeHsTF1e)elJSKtZHvavK69)P zk1ZNM_MFJ^h-wtL|T3ecyENW>+hq9!p{-h((C$wBtfBYqlb+LvM zicd7&6Babp)LwMrkr*Tb)2B{7AyjZyOM9rKaC~7=;pF3skFBe#A7i|Uvl22cJu{He znU`_si2ZWp{lRSLVw7qm5O_hZI6;0*W_j+&)mfFfp}y?$+=5j@!ns9P42|ZNbnTaU z*|6NAX}JaExgpTF)8^}Pi^8c`pa86NksjB-3EvsHc~@lOg!-vKC z9#%aMsob0ya`Z_aesiP}!nuCqINUc`tVaT-=jN@Fd|#1;q`R^+ zPuHB6=jK!(AtSZ)c5(^FjG;bOh&_UF&rC$EU`isY`%$T}<|_u7n8bJt}|&%F)5^%?Vl zW<~+d0$2{P9N^giJA6{jycz-1(ukvV=N{<<;M!zvo2-}V^R_LsC2brs?*~n|8SF}Xvp1`ky(~D<*87z^vAnw8g;lAHy^)` zEjC{ClrpwtPQ!RIRR@>oa2Z?7{q*70xSy$m%c;X7iTl%2@N*rBq&pwql!#L+R$OIV zjalq>5|EN^8(5k#ZR&6gIEnF1k~L%6X_~CLpE11J!P;)zIW}9QeQQ~rE#vjf^nL!2 ztPek<-Hgf+0Rw?O@^^Y-?46Mty4YzXvT4g43}0DSWI~i_W;EWk1!b&Q1e(|cZEeZ5 zoP<%T6V+!2{(*VeV3(ycxpcVgz&t@&i5X!sK!%7+;-hmJVE=<(MgRq2S%u&icNBht zhdg+p#dq4VCj`H9S?=H)2jDshKS_6|#r|fmVO)j(ZI+Mp0nTNm%ybP}jf?QvCW?a7 zc@VC09+&Wul}K@RnJ3VQd!b)%ad&34%!P!$$dhiD#X}aCIxFr<{8VqY?{xE+9{?9V zE3G_E{@X3S!SWdazqkkR6FzyiPtv&zur2rrpA{Z?p11UGTY8w8hITE@yg(lbyJP&rV#$9b_(n3X3Ci>JGN} zY>Th6^bW7Jc&i5&vrN%XC}bGu7>e7trI+#-=gQ?;hvOC*f%f{2#n*c1GoTltZ}s4L7N2i%S8oruxXgRS z;d@SXg%-EofGfw7EI!f(=$F{`J`3rlb6J7(-B4B{wbWQy0av@dxU1bsTz367oAM+v zxjRE~JJ3+j*%m*RFu6V7;;vj>@O+D(=m2}IxA@r}{6dQ_^588Nzs!TjEPjgzUt)1F z0cE$$;;x>!ux^XXi)ME6wUj)`zr-N!P5T@g_{4)>W9eV_;5S(OP+M7kco11lcnL1t$4gAA{ z=U9A&#!JQ!D@~~nU-#e#T0F;tf5qa(9^8!6C@&9wl%*f#!Ob(=(17f}&rZIs5qVa7 z@Djyy2F)x^w)CbRB{@Yb{zDI+8Hx`HR3}OGuG-=&Jowp`&l4U#b1lBfgD_)bB=>q&({_o|lC5?p}+BJotkaFY@4zSiH=GKW1@nxj$|3 z`5yY;TD;YR|H0xbJorwFul3-sT6~=cf8FBiJ@`8o@Au#zC_XgMr`KfQrxsuA!LxO~ zI5cpX2OnnfpLp;*i+|UHOG;UZS#2`iFM~cW=}p`n=Yvo7!KeD*r}^OL`QVFu@FpL8 zsSm!=2bZ;wbossB2fx_|zrzO?bH{Z2AN9eX^TA*8!QTM>CCmg@;3}@iTmt{{p&x>I ze>!=-H-U>D`oC-{xULc7_BtQ>n|$z}``{1y;E(&@+kuNbfkTZvy3UN-0Uvr<3rkmC z`{Pk69e$7xemHPRcm81}U0q|w?Ia)ihz~x~2S3*bU*vKZuYInUzjOO2emmW|scA3hiR;NP@-*4hVMUBd>SYb;)LlHsrG(YU?MhmUOGo=!iH z`rt44;D7bO{|Q|5u)f^Lqiff=-5>q6>Swya>&zu^h{e}iT-Tft_Eq5N`rO%sT=ylB)w-@`+clqE~`QSJC;Ol{les<0@>FzO? zz^{GiAN9e-kO5{Hg|#ruX|6jB#%0DLp;`?00!vz9X;-r#&}pw^lh|N_LnapmQoIwC5T+bcYZs)1luStRPMD~KY0?^Bsv$`u zox;|dwpih0iaxmrl2Wo0OH!pMElCL-mqI+LC`FQq6H8NwC!~Zz|YVU(6I=gCFm zIqu}56eUeAnmj2`ST(gs{)**qy!?%mzX|d;QT~)BI`hqC;3;-6AZ4D@~^2()>I~IDw8$tWQ}XeYLeoUloIVh zVkw`=sD0C`PA?Bv%{zVCv{@Ci=gkh6S5?dt8!Ol9#Wd61!#I#`6ZdM|=mHkD)z=5A z>RV$o+ZWBMhgnb~3@w}BpVuCP6=s{Y---Zf2-L!ov!zy`sZA}-^=b!d8#>ZT-nm<2 z16a}4*3woTYYV_YP~x9fe+h159c|4TQrR5SrspIw23F^Yy^l>iTHm;+Ar@$wXUtEN z9Z2BPrp5(l!FXwLYg>JLI~pS_Noz|>=e4)j)-*2^`K(Z)7FdOqw{!+H`$<`WR>u^y zn1%yA4K|>PoBIXzP8V#;24R)0SgZz`(Mg})TrC}RW%HReup~tk7^`U#HBOU_i|d=k z_Nv_hH86OynQm>ecPaK|2%Or|+&mT8RFz973~S<;(8AU)h7{ecWDt2JT_%bh#OKww zwFsqH!?l+$nbz3UB=(e|9I%nN2s8{a#+ZA`t+BiVwJCkcnh-;LV7QxJ-?F$q)~1HK zv)gK#+ZVR9Efx(JdW=8`%S5siOs3B9g|p3M%zIyn0%K-LbH;#}{VuF;vqjn7+zNxy z7%GB+)gDyKH^JTc5~ZCI0#D`HHBBA$S`nO9EjQ~8H`mRoxwt+e#VGYrib-qZLa~lT zBQa^a$Rc=BV79+Z$x_m?Q}ox;9IJt~Ch`qmg)@deQ`&2Ly=r(#ZBt`yb-mH|446)* zYKRR%C7o0YRFt%95RIL)v_hf$i7sKuN|;*57E3KLac9FwTdcSRsceR1T0dvi*Vn;f zy{WvhxkhS6W2b2tEv<4dH4v4fy&f%7nvgNKOf|oiBxzVyvD6<}D0a&nw6IoqDFt;B z!az%2={*4^dcw50y+-W%UG-59TCcS`Hi5HSQoLNQj#&U!icK)7c0HC6*GvTQxT8*% zlgHv`-Zumi@BJJ;%B~moD|H~?@IT58+yVAIge*ICU#xT8iN2k1=HKOm_Yxi_K0mhjF~Gh}_}vzFdbru@LBEj!op>h@{maCE72$9B z@ITb@6aDlNeG%dEj?n2@-p`5?df8Ld;inS5mT=j`OPtVu2R}!D8R4AnbrzS4)D!nU z=SITi*~sxR@1YF;s|f$9tw&ycI=cfeUS;WBy2sh{W)Uv7A1+<<{v}yI9eoSYPbT^< zA9-#eddaVQuk~}n<=weU_b!WzKCdSHDWVrXPM+rpmq&QV=ZnGs&Z~!$EbjEsZR<^h z@DmWv@tNhrr>S6D+qtq&$X6bF5Sd`6XD!me&d6`Y;kYC-nF>Pmw6u?2z*F5 zx1(aLe~Ob}uAkEg=XP;6;nyIJ)6YV}zejiv;mm&n;ol|thb`{S*HadE`C2MBaL!gx zyt3rt% z|H;-gO62J#`qM3b46tt#UT<-ye>s&xTod78_+7rfPW*ZNy3~jNTH+(^)balw;XE$i z;KTnXKKvgbKFt3S!plkitv>vp^WndT=vkki_|WIt_ibK%9z^(5lIJTHm-1qL9!vC` zuW^J&h|gpnJ{J(ais&!2xVJw1l<0p(^p6n!zl0Zm0UkJ!|91RbJvoQ)pA+6q_$tD$ zwzyZGpAkLl|5t?ng7`d2IFG+i6MhHLzesow;cr;nmE$V8fqRee3iw@q|3!SbUmBjP z(FV=a4zswIe?H;m#D9#%MbFItB%+sk;^d4FK8^TP`tUj5;$HnPCO*tRM)-8%zr=_C zcL-lk^tW2vo9=zYU(#)|`tK(^N_;jGf7Z`)KK%bie3<|1gtPwt;ln>82qEC4T)2Mb z68;N>xq32{aISAN3BQBr>n-l;iPJ+9;at97CqAr)9}|8P@n28)orFJ4IG5LZgmeG! zg*-%t6FqSMa46wCukI%NF2r&AxruP@Pu?N?ZlbTY2H}z})~X=`T1f7;XEHWk8qw3++%TXJ9?VvxgPHD!T(A) z*XLo@z+3Xm_4Yu*??9L<$0G=5J||k-E9Z2Jd+YgWgjW*(vxt8$;kOXZ`hU*{j~|H0 zaFQ<`FRmh-^Rk^bf@ect>M z;pN2tV2gX}<jgLi8tE+?(!9;xFa?u}yb2;hgTd#GlK3G0`)h7~wo0TjIlKHR0Ue zuO<8r%GZx9?#iymA#X4ntbL>``> z54E_r91kUW=95o2>vN0`pOXn^y+sLUJuf5tmz3YD2)~K&+X%mx@TUp?72z*gT=Z}{ z;k$``1K}SNeg)w}?FVO~H*Tl-gny6d#}a-G;U^K!^WifI=lm`rob$Vc@cW2=uf@If z)}a@d(-_R@#l2^MtC))`x^1*biaQnh~Py358&te z=kH&Bb=W{P9~iD!&<^0B0jx@^E~;7 zgmXRIWpS^ba}EPjI4^#P#a+4IVEfw;;gb>1!fzz{Ef)8d8_gLIpzS$uN0q5m2JfyJV zXX4i7E6?IyK2r(rC;A493;&Y|@3Oe?*+}@cgg-*~I>NbMy@PP>hqn>Vd|vaxZ#*KP zPUPW!rk`-;^E)5>O&@&7kxBl{XAI$+K;rZ~op7fA5#e0l?jfA%ANRpuB>YiIcQ@gi z2|xa;N%^-BUPCyid%X|-Q^L0rp8>)jBiwAnYueZ2gddR)51f?O6Zkp3jUhZvc(D(D z0pTqFV!|ILK5Gg84dFLh+}nQd@xeD+JQF;mUzKMzaZeIH3x1ccXDyx$jQi)m5W!{~^(jJ{lf4$=4SAoIIyk-08vDQ_UiJ=CgqCt;FZY7WdYN zKM+0lGp`fQdj2QjtmnfDkQkiE|1JES{L=~FO899O_sUaiahKn!3`ByvknpqMcl=w3 zKi9*{eE6>=K3YF5|L+mbiKYsd-Z%2;d2nr>G@cTOZl>%!#@1aCO$0x*9bqC_%HC`-|54@kN7bEs|i1k z_+RJ4{|+Dij}jl|{~N;3C;r=f_+KE3hZDW=Jo8e*uRxg7^W}tdKXVJ=JU@JsaBh#E z5YBu?94pcoc^E&P@VgN1Wk|4?i9rI4LhqcN*a={}LbkD#Dr1PY7rEe@!^c|2*L=|KA8_ z`Hv`6@dwF&CgCjqG9UcAgtPp&63+5JOgPK`JHnraXs$l|op6?atTZ+_ul~;`oaJBV zgWpFu%l{j~S^k#^XZb%OoaNuIC@JSNxOMqDz~a*UzD;<(#a(~IEb2Q=G2|w8fKg$PSKsfjFEk5{CA3W}Z-$FRgyY42O z)9v@cpYp*!wz#)Gg*-nou&?yuGp&gJ_n!q*}lC(kE@b3Gp;nSm2IS)MZpXZj_C zGyRVUXZrn1l>Hz*%p#omT;qfP*y7&udWz_uLQ*cj@B7dXEj9AE@;%Ph!!Hod^XD&F z+*`iKTih#8Iq{MD>G)R?zJTOB&4+)j5C2Z$!~B;MUQ7JDefWQu=$X$AgiDb+ectH9 z=TC$`PxRwYfCtX2pKn@R^vTa1KOy{Hgt>I@BAo00bA)q!+eP>b#OEWzxxM6`2qHMI zoP`#5_2fxI7MMtQ9WW>76pKr~xWAe~^rC0S=M2JG&u0@K?pGIB+$(1*@nQa#5MEDm zF7@I60O4GYSyK=h&YSLZi%WjFTsjEna#>9{m&^b9@PE$YPXD*76oJ4W2ww=y>Hjap zpY{KS5C4ydkLbtSBEbz6V%{;#MR+z%LFxeH?9u< zL7AX~@yE&(R(V*@L&Hh@Pq=k_@(E}D#Xfks#l7{R+TyOgtTM?3&LO;t(w$5ExjrxP z;lGynNIiG_zeo5Y;{QY9&+TzN;hf)%7Wd}s8RF0BzCd^brTZfB=X||EIH&um#l7j~ zm4hjqSDyzH-iUBlj-xD|4UE%0hUi)TV#2w9nB>E!+~Qt2XA>Xhe?H;dkInbt-$pp= zr_18rbiYgdIo%rwpF{e&k@&NIb`sA0Ov_Y6h7)~0fS=Rz8p4_W2Ew_2*i1P0lY0s0 zek>S~R86|vkIf{U`>_iN=lo>PW)5zZyq4(_ch5_hU;4??zHi zpI7+c`O}i}FnzHPUT$%3Jvr0jnP4aNq{*-ioJ%2Y{6g?`ay~)$ zMT9?N@oZp!A^fj||C#Xj2>&bL!=v!PdG&d$4_;<*r{}pQdLT-;v=t|R9pRE+N8dzv ziry^lmFHTbXFlr)Urg!VX>rjH=XZk-|7VF0^Zz~J&BQ;e5*|3OoCjIl=_lWi1x69h zH{AI$=A)NEoZgH_*;Z`626!4C4?V*Dm-wK-%Igx`5jC6WrRlvUrP857MFVUcf#)`d>7$Q_~0-3 z;MKMR6#mR-4&gix`3B)U4_RYz$?rEvo^?dOk?^|+=X8JLgMa9Q=gtIEIIsMN5k7!$ zr~hLKe~s{{#g75@ZNks@p$Ir<*(&D1G6@-U~{tdzl z2#*tfqQ$-XndO6bTHKY_f#4->IpLh&t9voAVJ2J>!4&p|2Fia9;i`K6u8EBt6Tyl;$m* z?m8d*G&^2PGECp*gWuwV|JesW!j4nkeBJGX|IP=`nvu*e>%ZHUqgVd*KKOPYJY?AG zIAV)h5gCKT2`0at_=&sOToU*;TW?xU(b$mi06+htiUvhY0 zw83|I=-qzRB{m<9-t8N`(u2Ewqjz|4w-2=J4=>K~ar;28^x$qk=GQ%VnQbTTXeh_W z?Z;fVUn+mMzjCJscl#@E^WbhDWw(Eh}}b8T>UZS_qxg)!`o z87QoiZ4wI?V6)D`wifXSd2u23H)SujJ~du1CQ)Hi+w+_mnN9vEb;on z>8G8A1B7ubFvujm`i6N6+i;$_$@YK!9|8xd!dC4Ger5LV1=~JdK%Tp?*F$lYDpY3u z?y_x#xpVWZTzDm&90LbN+Urpkx7FODfxwqfPu!;5*yfhNj>Dbs{7>VH8Hn&4habC< zHvK7{1fBd2E<>br@n=^XZnt^_bMf3&l979Ec)0_}g4Wdv)dSu5C7ck%ulMiy?3!{ZIZ$TH@SQo(0^!2H3wc z8=o<`_tLJlm{)%;euGB=9)(9WS!x`LmAt2|?{}&OKF8*!Lm`LBJxN_@_Ut1e%XlyR5Eo>PZ z5?7@E=Fi-l|49=jC|Epx;>2-!H-FgjimGXu8A*;A_<|Dq-qrE!R zbd?MVu5JWHMe!@qu16cH;ycg(T6k{wYvBvR^EUNH@<(;;%0PtRw+;r;%$_%b-7(zs zg87ELqp<)Mf2-&5V8zCGB!8qbk8h1{h9^foQQVdFys>OTRc~E>Uh#{;!y^*q?_HZR zOgO|UE8ZTBZxPC;j{Xt@3qY}+V#P(i~q+mD1H&GaakFfA*$*Q(+oE)TpR!7 zVG%SOe@_J}-W!c?>iT4O@LPvMAJM)qNO8npi`Hg;Cz|ot-kodHCU2N-BEE&e!@DJ_ zE6TqmB5&v^SD?*ZpW6?o`6+N#6dme%OqAuGhc=BhW#{ZJw zCFPNW#CQKp`wI=Pj3?zYqA8VMvQqm$mwYATB^{)CjHup7bRsFHt-GjZ#7hq!uSSj5O68WVS?2BB0 zud1)k4y@q~=+~sl-Y3)2`(^(4&{y%NWf331Nc>O;UMcpGwtW}(+k(Onhj5K!k)`<~ z@2?XU@@FtqDl@4XcnDIs{yJs8SE5tAbJ3IZP1_rezpqoZ?cmT?{&D>IuALtRdzui~ z^LRM^q)ynP@sFZ?vqd1x5hKCKPE86Efsq-(o{flDyhmmg-3t**cT+Z^AP)t|se0mD z!|^Q^-dxeMXW3aY+J-7*WRlrc{8K$H802A0VGNs>|ZryUz)#3)ej?k`C_Ob)Zls*2yhfL0QX@1n`7(@&Ca`3~?OJZ*`_H}CFWm>BPFPo|tzmU+G6XuvkZp70@5a8C)|Puy34FGp|X`D@88_1K&m0urMhe<_mVRP@rY~ zb4eop5vBv-`1A3nR6#PM4<+**TrFsEKXg=JrxBPxg;7X*wSLIcOt`P&W33*4f~V&V ztsB9}uHrpmE&hK3O)dVB@qvg;bumCaqKQiRjMNf0UYS`_icnrRn562X!B-ziQ7Ip5 zO8n>tLI^SClU~2+`R#&k)6x%Y6Rm4IPc4s;1KCIkr%|+ru#gn0tH*&`^>uPQg#n5~ z3tC$Pjm;O=G&RJu?>j8}c9M4C5Y zUa`H7v)A$VI?-My+3RF?o!8b9GxsGfGHw_(tV-s&t6^C(&#)|+XIQ$}CG$#@UCF#s zdo@Xw%$uBGS~71!V62=4G!{a)2gb%0w9tA$ihW$bYk@DQUHJRnPBUfjY=Z5;S%X14>4GHHKT`@GAThg^(BzIlL z@?p6pk=&wiZUHDji5TU%IpN`ISJ7a3mB?ZwLi#c*a!0Pp3g?Ed$VQB=A(7nHbB5&> zL~=u67j^3J%t}Dh2|9InW^53Z$oiP&{|aRPOj%nqKTa!a0P(}4@v0X z1%KP(*E+ynO*suoymNEG*I0TP=-J(%o*{wz8N~ff7T@H-Z?pJsJoqmx{+tKD$Ko$~ zaFgDUz{?)I-_q~);9D&It_Oe8;vac%nXQUGvpnUp!{P^f@Ruxpqz8Y+;`JWE!A1!TWsh@A}~DeDGiR;J@_2`+e{&KKOPY{6!!9RUiBvA3Osq%IWkbXF^GRSZ{{_ z9dA+o$NA7t_Q9w6;Ai>Z^L=pHV>O+eoj$m{lSxN^l@BgwYNez9xeqR9U#Fwr2we2$ z&ic@K1oZZt5Bv98o!86bvdlHKsXF&>frEu2Q5tGKg62 zoIl)7sI8S5ztT;^lN!V=Uviq54+x>00chk;q%3d=MVe64T<83He(K_j>KfZLwmZ*I zjs^`R&ZLB_=3GGBSPGHf^WY)K**KMT;Sy75;!i0gc&be~c%E3$9FCVZ0hf*6Sp1xg zSE+z-$KY3lpTo^O#?Z^FNQZw9_u_=lIQ$&`D*@pIm${z9-F!sw355R<_u>SXS51!I zO~?hGM7SHb1(!Llqi;q(E>7?g{2bm%xa85{eAeIzgkMGUClY=u;mrR|!kPbO!kPb5 zgfsu0gioP#|4F#KgLCqK3H_Zo$?wVdIozF*C-^CZR}p;~;d3nRE%ys8E*CNTslrd( z*9n)GP%hnzEiUPX3GcDEm;d*O5A**a;bJ%7`2X04zdNf=f|<_)#77ot9iM(5K2H(O z^=h}pz4CuT{5johJ1>x683$du`&-bt zh|fskb1ucM{I>yR#~VKaUrW5&y3c|KIuW z`3vDQi2e=Yb131T5IyHNZzzc1y!rhf!dcFvEiUCK>zA(nOd@*D?{uO+jOfoGdaj>e zBl`a#`o%;)jqnwObGqLlK8F+iHAK&Reo8p=xu5uih|j}B&wREM&U{`bK1UFre-J(E z!P)Fexp4V@aX$cXqJP%Up%xcETZ2)xIEjsbT<>u&zsK>&ho!Rc$E0; zw)io?___E1yUygrkFdDZll|~pg`cjCUdI?d0!-n&`JHER z(KGXj5zh6ei*T+FKlb7OON+bwHmMZY=ZJ8AUfyVNZ@E8baj*P;BR*0enk@g<3FrFo z4~u*G4-p~YymF2poS&D!XmKx}uUgzI=S1Sea!w(f%RTJF|7^m!yo~fle#wJ7%Ua|U zCz$+3*?!7){|VfEvt`wj!0YV%*sWbVKJJ?|c}5fG@VcSKFV7(29G)YYhLgFmIEUY3 z@sOfPe5b|pJ$SbjyugDu*o+?M!C$v{$b(yNqP{qJ-200sJ@jsUeq@FTaP)3n{lELB zOFrVlB5C4FuK)i&*9sv!k|kSgCUf{Nvv+m2zPSKb51e0~r9{PL4zSlwThRTor~oJR zO44!l&eac@dkCI|AG@19>AEnhe&-EHc?-|~G`_6e3QrkR*}3#D^CalJ?kaO3xtIFD zE+m}=+)d_^`1k6s3?b?CS0bG^T*xLQ`jay9>Tf16A(1hd-6J;r5QDgPa=YuP!B4$l_tI={s?SFjgfGq7fFS?K7t*uENRKtK-I9_*el;?i5R1lw?5`07!d_OwJ4Sk_yDI)^@phAe5XvNx0j)?TXOi|DTk0-tQx5`rtKtUv94Se`nlH~p z^i=&ud$aS!?6+FK$~zieLA2|^{B;m05F018;(qA}_2a5{gJu!1{t;z>8*!{*+gx~ z()?)g)*Y3;acCYpAO=4 zr629Ur7-xm-{vHx3$D2Uuy34c8b|9vb!u;*-SR-QW>sf+U8O^UYrY72uOWIgKEizV z74037k2b^2Og205_-U^LsOZENp)LpHb#gFq4WUEn*6qEUG z(p1j>s5Z_yZ{Sz%TPdlnhIw)Sz=w*iKqCBA>JNZMdy^V`2L8{|;J|%Q35+6A?a$jA zFRc&7T3SNwi(zISsB3Jhi8Zz~tKE5HbLjlyP+?)=#IFUKVZ~u$juQj*32J~5T8P_3 zfST}&u}9LNU&Quxi(!{OwV}TDqWZQ4Ej4X*Q(M}a>)U35fr$cH#lB=PNxKPepI6sd zv#2;^uH$g6ZEI<77eH^kbNV!bgg=k9x_id;+N!StL-#!Up0s1NRga3TdPTxk9hT`= z42_7b`ZU<8XBB1V-j-3ByFMfHAGiqvg86pI)IsL!<-->NhoQU2tbO|MtXUb3#S+UR zO~x3Kj^zJ_Eq5N$6-WVshYE|R_eJGR_n z*I-s9ZDf0yqSqn%K9WPi77sCq`)L;Uz=2aOZXZb!!POR@kwDCivkAA&ASE=NE$(@s zU|U?Ri@@aBL(0JGdI6-vukpdx`QShE!SD6KH~HYt_~0-3-~&GRdp@|>Qm4!BVLo`N z4}OLZ{xu)`A|HII55C3+zupJ`UmyHIAN&a){7*jkfDisJA6#s&((2g+ zg9mD95Gkw`L&9d5Ber|3RoQsen2M^EshXXt6{#^v6%$o8B%LH4SejILj})(a%m@=_47@_ zxg4EMsPJcc`KCae;H&mvEadpl_Tk?`c!=m%SlpYhD~Z3P>-b+s zxV(;Z_)WxrJmF6gJ zkNgtuzuITjZ)4T}cizpr=X{r6@3WVT*;2>K9D%*gw+j)@CQjb1$`nafGR4W@2+JCl>3xA0e`=he+BN@ zh1i4pD1H)O`V4ku(kZ}+ZrM4%yUIF_#FsIJUBt!@F^GF7x4T|I7?al7_>9TDi|6om zi+S_kVB_EB2<_FXC4n~ME?xb}k%|T9>WS2!VfeZD4i|a6X#)!62{GIUR#7sSI|x5- zd=b-IcK`))WblJK+r!+Of2ro_;)ksK-%u{eKX3fnrkeKln$}jglj&!@n;$oE;v_@! z`QOd&n3qhyOmEAuh7#m`OfP>uij3-ZN3Vh+8h<{Dy*RtS1aafP6ipD5lFiEoVHMe&GtgI}!5&%u8rKYN!jNO^^Z*Odq@ z-d?;1cc8!qR`Ev-8Qz)V<(h64Y2JXz8$WxeJ6Orf755$<2~}V((jL5r)i)T)7j!lT z-gX#TyzQ8-Z;m3M^kiwx@%wt=l!rj~PAgRvYu?}2OQIbJH1T}jBmGj}Bk8-Wk;Qvh zP38?~IKDYt`e^Kc_?AfguXa~7yRlgXHhb+Xeo^*FE2}~-3#!caTW0^RrTInim-JPr zG7ZOfL}i<_cSLsu4@twpo@kbnY}46~ePVgPQF*ytppPJKms9sjJB(dpe%(;Q=_ud&6p23`i9dqgSHnuTr@01OLspXJK zvPW)6TT(QB7Uar?)yavPaKbbq(R&G*;o^)U<`nmzhZp!I)CHrnG5SlsOJ5cd8tuD@ zFd4plr(fT+`=;c^cz!f~=~I8u^?GM~cK!%49fHYMu=@| zd{k1h;Oe0W(%lC;Q+FR+xVCqdnr=j7yg?TzeVPt8A?+nhe{YA7234pIHweX0GxA}u z4aoMyYMi5HRtMU8ur$8`I~J-(c37+kn9_jJ6n11p)XI1On=l4f&qY1bov&ptYxKTN z*bEx|@O&W(4LlD1rr)(`FGu8|TKegRctsfks^S$9lLD|g614yudrB2HC~DCB#GO%#t4prF zxxRkRc^D2#=jI<6>o6j0kH2K1CN>H;MoF>JFad)V+yT;1C~VHaSAYzzkJ-y_f$^3Z zs0NKWl3>Rg9ls!}k#OJ>*dF-ovmD<%@MpDO!1$?)6tctmnkUj2D_Ge#58N@B-gl#H z)P#ZMhFf{HtaL##>+zc`Q85xadxl)ooAx~L*_n%DaW0_b6 z6;S)%B>HvbzWbhi&rf#WX2O&Fmaq5g3kH@TN7g1L+5W5Io1&M$E<#qJ3&0kt=%i1^ z%)B!GRMhm-+AB;}=u_?(ssX97)cfK1Z#9>)p=Ng};PB-i%iH8-C<@i1Zg5* zw9J#_VrMs6pQME3qgb)BdehbRXuMmy5jC#cAAF@zVZ+wB(%$B1+qDH}EXC}=s#|lS zTkp=_fK-$M9g93>Amvzo6Fe%F7GrmQzat87D8TLgNC$MQ@>j|gI>9F7ujf?8AGhS& z0N*FM(@x_;!#~>lVE(nh?0i|-zZ<+DlD{-q@R*Si;;aS5dFNK4nw6;8-Yt?P*lso; zE111um;MG&0MbdUZG{@Us_*7}Nf=c=*@}&crzD-oXGQVj;C0_#A?>{YW+?2IRyTjFy06 zT`lJXNiOG0hg?^M^BAJVFN$JAg0@!m-L8tM6suc2a)|18AdRX%qf!B}L+`5mbpXYa zw|miA=~X*z51PoqZ9)L$7FokkxzBOODjk$TVkek+8x;xk{Z_8bFwMDrO z7Aa$UUra=Fvab1VwIal13iO~>C@VtJC`&X%1(4itzgu&w98h{@3Ui+<9jXncnkm|v zC)G#kU@8ge$RN5~E1!m8%&CKj^IeV4lICI(UxzqZXgI-wjaJ~L`K_Rz>u7aYf|R#` zFiG^F`lUoWH5w)fYnEaz80}kXk!YWx(cl4@C$jN)q7T56X#_*N_H}qX6>6IDn0=*P ze=%hF4!?eEH_ib_^7QZTc3+>IABlwPkzN(DXa;IQ63s?D{Rq|!i03i(tVnoz6LzH7 zB)TLJ?0x}3iQWpKMJjaho|LjqX_OC|h6X*LGNZU5Jx~Jd zN3?|JG4`xTcoJ1);1w068zJs_DRC~1*ldfHePw)4RKBL@(EE?=SsW;uWN#XdZenKk!TOo>#2=dnE!Jf{kCAN2T}BX|Zh zvs?tvUKo6AihfDt)>^a;uqol|(Gb_MEi>;}3-htXsAO%Dn%5%w1o6Yf|n1bEE zayG?j;$80_Z(u1zO4-Lec}~&gua898isAlzTmv!$Mv&G>S);?bKJQ>I5$)~Pz)H*! zL|C&LD0?hc#^2WpG#B^b_zQAKPYohOM6CRt=>{*79{8qK2-zpObbhriRa39e72X)2(uk7<9L341wPVQwM`8~bq4|cDXo4)S+ zo#0s&Z^{ozjLRr+)t!iAX;5dE-tqVd;s zDwqPQr>}Z%qUMK7w=5qa)o}jS>}#c~Kw0xBV|nG>?S!a?~;f^suR-ULNjc?(EhO?j}qe>U>s z<>ufmSDTJf3@L!5LA6zZQ9qN^b^ZAk9?8}kX4Pa1#&)lAkV!dLm zaD$2-!!^F8qIi$$w0FeiXor|;n)#=AS0yJ~BJfU$2eJMrS2Twr?N^X8&UnD1e|hhe z_0rwnBKbnva}d&5er)!g`nB59jUOIfylu=j97B~CT=Pw(LA8%Sj%&eh+ObpCN8%rX zD84OH{DIPq46Zp(>FDd2NZc$(scf-MB%%h4UmRhF7OKk?|xu&vfOGcy=p92Ng$PqxUohsqLkInod zIa~x+=Yf}-(@IxPbK1oEN^$@0znFRf?cKhQa2z&Bi8xgdR4tOMUPe(8awXr%&6L25sKI@+vO z-)Xq1Lg7nUMtg72K0+U$k4FGjUV`2Ea)Wv$LnvyY86~yE@V)^(Ku&PYA*gw-f}$R~ zuTAmvC#}{kNn&ur{3uZ=Hb9odux1_(r9SjK7(<}a;sIDCJyQijE33o}RwApg6g4uq z`WzK}m5SF@ibaxX0MHpU$*id)+}Dh$+|2k(ec63rjG_23eLMz1bt;6urCTVFSFB9S zQG9=wwN)#;v_iqmm{nOD`2nhc`8R4zjy7_NqZT1ff6=4kVCkP?2PH}u!%tTURy6;Gnlm&0F6K2=_@FmOi$TNd+v^?C5vHGS3>R^QpjQ*tC)|B-^RB$$_IWkT?aS8XFxC6avL&$oTS( z57=pIX^F`v4JjZDky=}tajJ8B$ey?p7~Nhtx@baOU?IK%5c(5BquYmxnSAOue@8Xf z#F|ogwbj>k;1HVRcYl`^A2;qBgJQ~;f94<>@GPd!{Pe(^z}QRV0|Pzirna~cJA99= zZK!E8fSC5DB-xzmJ*wTCzvh}6lY~2F2*9{h7OnMdO*nxlG$m9VXl|?jy57{{JI0oU zp@lV#O&vHuM?O)kX*MSf1)2x3OyxKMs%-6ug_=7Sd(Y_+uC>b5u+%-gE9Ib~;uAuF zVQv?P!07RHu!hlqaR{&u3|ng!)whRE3XQHiF4Qa~lD6YFrHFAz=#kO5avrQwKX6!w(9m3!&5vs|78w z2IeIqD%~Z9PDH4wP0_SBy;wtAeS1SoQ(dUB9Vwm|T3oXvw7`5w+R(VD!CLs(%;Qqq z($S1hVDQyOecjBO7{1sM>!hTM;d7HJ6s3~LQRQ=zVR9!0QZp4b9%mv|N@m;3mz1}3 zCb)>q_REo3Ep0f+sJbQ=t8Wt%CUsD!e90qUz=Y+K(i+(_y}m8M0^!&mT!Iy%vagEisRV0noN(SO5BW-IqtUcZu2M8ApA9q**u-OUBh4=iupS9IU9&&XYunROUG63#p? zcYS6nuK3J2GiyXvT1`$Hu6vlf{m!#LyS(Mht*py3(sEOIt0C`g!Ut}Y7zgfK-s!p9 zGP8a&BrU%g!k#<$HPQMzxEjVoj>6TD13 zaPmEqIBBnfhr|Qt(!C1zf;)GhyTR4}8|)mSO5UbBPfJ3x5?V>p-lVrWH%@}MyVc@e z+uYkNesl_TAaJMpu}JE1@~yI*w{(IBf57799=zY;QpeeCR?pBt0fV@I!s1@~ZHf;G z*kK_N>v@aUBoK4+2fYjpbb9ce7Vr1qud08r{$ICvwuk;5i+f|3`Z^?VmxumS^$!W$ z?ZL%|imEq=2HA7yc)*JPmi)^TW}UAT|}OK_hQKKNTcxZinKBQUeqKEl*XmjVa$TzO(@_VBX ze!CAYCc5eP?C`-~_rc%y!81^P>G*%q2S3CIKhg&;1}^$3vfsS8{(g&AwNz&!(HXmHRtxZS&|Izj?@KIIQ{`lm9M8Qn7^p>`^jCIgNV@M!K z;)@JSV4?#=h>D6rNG2qjm&wFpMFLHtoW>BU*4oy#c&pX6w%S%(q&^4_LF)s2TeZ^G zR$|ZsT18a&f7gD@d~=v%d++`I&xhfh^WAH&z4qE`uf5McCwp!7z+dse-}1me_P~$8 z)GAfEqdf30dElpb;HP=u(>?In9{9x`c+3ND^T4n5z$Ly(Dm_SilT`R!9=Lownu>nF z1Ap2B|1)s0+wJCW_0)42?C?Vmdih)5ROKGyflC~dRP_14rQDrn;;)|HQ0@#5dimSk zRD3S+!0SEm4iCJ`1NSBWIE%M=nS_9Xw9U(;NyWo%OC}GyJ#FH!+tL!gEuJ(i`eE_p zVZ_Cy!)_-}99HgR5MvjahHdSoI(}YgPLR6s*b(BLDO3_3@)D%+`-Dk!?)bSXL z)Sfmv9%7LyR!3gc8{SM(oOOgm6B|)+PDDtAGzbDI|0`*sKe<*iOj4y!QuLGb&N)it z;zF!`@v2tpt#RBNu`EHLL%UK}ulDPyXbv~DVXv5$HoNUiB7EPl0xFst;wTc41}kMD z5SQWVc=f#Mt77I-2MZj&a}7AipYz4q?8Y!Um%XEXU}Reuoj5m!CFtM!+EeIwrRgFBB7y&1iC8u4jHvN&ML*bd+y9bMw)oQC8QR&25 zm8vhNU9Fa)6;eF|>yGhQb5%>F-R1`xPUN+^SS;(m_D0G{+^AJpo04M5(`+^*u`Go& zx&P5zdA|^orO;^&&DCvJPp@vTsjgM~0YQRr16F+7Q7dUn)2y=AtKV)YR_C-J;-v7j zrR$=Q+3aNmIp<=@Tk1Kz5g8BL*~fchZh*J<{B#vwx4Qhou)T*8nywHWEH~{ z-pOhT8mhg#qdh*ap%y(_?o+Pj>(>Byw-JviYd~cxE~swo(03y1Y}klO($|a8e|4r* z?+#Q-LLutKQH>@CnBbHk5OOI|$8T+lHMPg$dYb4fH0P6X4&i6_GPu&4e`(c$n~?6JAcZU0WCaGYH>I^fL*U4{qcT`Urkj&VLAqL+}dxEWSrT9D<*NpT*_R z_~dZcSN7DC1CL>9Z*;vLg#B>{|2)zxA3Glx{^t@dpS#N8=5P0?a`Rt6{QnF2EdOeQ zyZJ9AdYNKbIXemGJ-@m=_}of(l*+x6@L7bb*Uq>X`NtBzf#_!w{<6V^Ue<1Hz1|`E zIfNf2ggB(WmH1hD`S?W+ImueD#lK4QTy7!Z=MjAg;d2R}N%%a%R~X#gj_TVw(21PW zh<+>a;ePRF!p|rAJ%n?=I6ye}i=*%yDu&pCw%l=qFDCqC!fOa$N_Z{dKPLPF!XF?!M);oyuOpn}KQ1Bs0MWDkXPOsEQZL3w z6JAez#t_c-b{yespOXo1AU&^ z-{AO<5u$&9_=r7Q{tprURiYmt{*8n`XK=UtedUdh|gXR{uyTd)Xo3%26yYn z#u*cw$F<`Pz1RcGe_JA`@Oq}zM16TNI2WilZ3Os`kTSs^~yX7OmT>u_4wKL z9cyq~-`j);$2h{-{{)E-`;AEkKN)%1zlDj9w3p?7F5v;-R-Q_Oi=52=H-xtm{T~f} zGB7UpPX@R3T84Bv{zCZixVPo*GPsn>cAh>;a%sI?iL<3YneaBkO9^i$+{SYh{_>1v z`BWKtk@IVWR}+2$;WnP5@aZ7j##lo$nq~DddBMs zXMfV_fq%mTzlHEFlIK3cxnFE1ocqyJ2A6isB|fhceK+Cz2=5{MOWC-=A^N-yKdaBv z2)~~283vbfgM?QTJ@<+U7j(x+rNG6fsZzO$w|G$ z-&()-Il}Wu&anm;y`4+=2?lqUTTFbI{~3f!9;^Q{5B`@C&h~kQ2fow;@A1HIB%Jkm zn+JX$;p~4NC%l>JwU==AOGoE`2#4s?!O!YpGT}@gGPtzYDMUYm=-H25MmYPiI>K3> z&4jZauJXW_6V86`Hp1DS?|A_EjlJkgTaf3tj z#_f9r;q2!-3BLh(tbV>ncpu?w3Fqg#4TQH5{a*-QP57sTGrj+FAi^Q?GyTaPcroGZ zhogkE{BeW3{oywaZtZ7*k^+67@Kb?V{j4VbjfCIh!GAsRk*2f!2M8}9K970upFIXd zI7B~d@U!wP@W8)K__vAvS04BV5BvoW{4EdskO!`}&(!kYNb;vgnD! zU9U;9SeXLvC7kQ~0}uS?9{73>{G=}?%jN!iwg+D2fnVW)FD0Dye6t7s6N9_^`>P)K zZi8DtaHg(~?>)jN087}L!A1W(j%3K9Ee?0NV+`)*|7F4pkvqV{BQE$e>d@A{`V3-iTK~|!G9akGoNP&FD5?E zd+?bdizYZk|J>g%A^c{f+4idQz}r3W6(0C^3I8_nzsCbFJPt%SM9%NvXXTmdflvC1 zP;2_Daklhj9{4#Pc$Ejfzyq)Kz_0SaS9suk9{6`X@H;&4UwPnvAe{ZoHV^y-5B#ql z_p^JoK5s+68#*aXL&9l`m>1sQV;r7M9=!^^PvAF(X)Q;_n_ZM z^eq3&9`pgoEQjb{e)f>Lv>X<<-`%g%Z~|W|4TPgCO`k2j{oZ`73%B1{f8xUJ_tXoF z5SEYqzV#j#ZofbE{lAIfQGgGpiVE-nV_Qotz7@3Rf|~X?zHr1}(#xM5`wH+k_pySR zv(G=ZJziaN1*q_cx&^WNg>`NC<8-Zn|KtAw>8Q zBxMOiU+fX%$8qb|^jVhuq?{~$tKO;0rL08@o*_4MoEe}Sx-`w0K=N@VJpZ@(i;!1% z%G`wyTmDn70`09mmmyQC{5huHdzmS&ZT)TjIVQg`w*+<03Hnn1-B|)Y?AvB}HzmA| zO_Hdq+@JkBpO9>n~+4?M}srb3` z%j-I~?MaSBGFapImaAjA>n~$Rs{E0KD!Y0n)>ry}cm4^Jrr4bx)cN1V1Sy_aQe2`a z|MQq2fuAHLC{veZSewq_m>{xedpsD#&Sbf=YjXr!>&F+#7J~N)eMs-y9A6^)iwJ^! z`nM`ZvhVd5uwxE3Yz~`k)VuZv{N1-B)fIAMc|EpETuOUctx52YXIsXG>+oP5osW6# z&*I`}_EP*0sn^Ih>s7Lga6GsmxofH2@D5uQ>WxjY;m{)4`B44@(|_+4Y!s(Dn?&Gf z#Ep0`*#lIbN_>%9W#g9;Y^#TzXJqH6vPjJqd#!fUtQS=6p;;?evbP+zSy~_)EiMNG z*-y3vJFA7AU9%kQgZ-G=lLuSZ%eIzdqs~Wa=bLNwc0b5i54aXP#59)fbN2dYKT$g1 zpR+Ag`sA|lrThHR7fZMMqZ_eZRj~8(dE2msU49yFa{WKr;Q!r*G*l#%_HHzz5gSCF z0Ua#6C9N@7EPETt=JLgnG;DW-edHGTZ@3sc`vA(v)^^jeF` z$)CFe`%`b16txdpA?^mSIX?u~HiK(y1~vGh+NNfND66X^bNNU>vahLZ+80(|qo-Rq+WnL=moJhXt`MLA zjVD)QvGcG9LzYc@dMZDa$ULI+DbGDU#}574<{PF7v#I%zgFT9|Ke9I3N-^4~sw)hj z5(&}u0SKXMFLY}6Ye<(wB2K2-u2J?E#^#(V0hcy5h26wF?7WM87i;$DjCvpLMd~I= z@sFZIcDpmRiDlUA-ES#`h26=_5a>;Ot6hHX1BMk5fa8z&Uy^Dl|s4XT$O<%OStBM>cB8o#h-v z{fu6x_n!ItNbl&N?8hhjovE#2b96mx)SkAlU}LGwQ17xHY?+4gAxu@Mx42tw7QjEw z@5QcVh;6Yz<&iD@qMbiS5$IS!a74$42*F4i3XWo5>_T*&O8*Tpbe;&Dg;t_m)$1~G zrL~fDK5yw1yA2{JmMUcMM(H+YA2N8@_=KcQ`TIMh13jCf11TdNynylwk}!XN&!>2P z8q8OHtPJBp)Y%rgAQAc?takFhRW;2WY6C{uW$$IVKXRwPNB%T)mTWfsQw)F=Th&0R zdgL2Oz#e+5?gzf|<3phL_sjNmrfzzxRMk6WA3kl+OU0n$uoX?z^Gz|5A4wdX=7ky~N35md$}BLc4FflJvn_V?-zDmSA{zdN|XBq)Pl z2GSA$$x#NyB0!C9lL}`y>K?^@huc9Sd)C614GK5*ss>06{9OItG z15$H^mk3^O@mv^l9DNBcu>YrEJt%t_2!A;A6}SiOGT4KNUAo=b;h(jw^lAUBr%V6X z+34)Z+m|{Y9@1o(I3+MKE}U(HD)!UAyP2 zt}lOPAL=VR1lQ5EKmDpxlLh)$Um{%qrko3b(L%Vu^ld&>OLrjHc0@Ucb3m`11IBgBR@m7uMJ@^N z6NZrLHJF~bVLNe&_fw|&kc>-b%2gI(5}^spi{3>4SS^2!5_NXYay|k3q1lP?s7yA_ zJ`*y8yFO0$cYhxxgiE&}ijjZz_K-h1P`ckA-CBCUKj)>q?G=4vCWtXdy7pzPN*9wZ z_OITC92mDAlAeN%DECI4w^dcTK2GcSF$6dh)hHAG&SQBm=Izfr;Oq@K1K2iGw$3bi zI$X3Z?`dZMn?~;+7tVXUXk*^S(x;tm{#lQeZoGE2x}5!(nj{XbSkpHKJBJpRIy(ji z$EEFX_F-1EThnRHRFi{GpZQHRwZ@=@5^yQDxtv{5DgU-IZ1Euf- zJCpz@d7I)qc!KR;&RggPW75Rz1CV`8Gy|bCVD}~d{`-{Oqpei!245f6$Nc@9aql_8 z+^+g;@G4AIp8<)unCY%y$1cq4^EXJ1Uu$n?`Vs@`kOqCZN zHt`h0jvr$USv@J;CEPI1>xy%Kd0h+>rkDc?)n9U4{RP{wmIUJGCG&J{_ta6&(8HKN znrZil&bvN?@Mb&D5HpVqR-pBaJ);xC)O1J+Q`=3Z`%h=}w1TZl(Bu^tZBv({M6_^1Orx7ukHeZ$a=(%=ebq=YvS^ zm>~Mfz33*`OIj5S(lXTptAglv&eQ(cd!*NG^v~Le=c73<=4~(Cwd~87?ypDjE5gp; z!2S`>y^W{142Tpua!hwc*A|Q}jlsgs+hM!8nB~D_!8KQ&jU`4T3ep?5`g4&w#SOKG;Qt^NI6< z;wnbe^9?{NA&Q!7UH>NTBuq0ZGBB-2 z%geOB1PzX@yk*uf^hNO#$$o{{Tc}p9suuFd05?29#0p9B?0dOGj}Pb9dEaNy{xDf? z=PGZy!8Qn*B=z@Sg!|7Rmr0WD@5Ag*)`!O6!3&$vqv0f$g!YEdOS5Zlh?yqL2v6Z+ zbXCTL%u_eowOg$8FqbF`7**&jm1??SGFh);oT8&P(Js@8psgpjQcrHBO6>3hXc!&1 z=3mkj0nxX(m0CNNBczBi#zjb1uhEoIYQIt`_9x$&z`sPD{Sl1&3uZY8N43SQ!(>gD z`K9tOI(7-{a6!2Aubp$xs0xl*7RBu%T#fCVhW~Sy$?#l@tNdjX&$wAFopt7gosZU` z1bCYR&+QsGFv1y-$q*Kbo{b>3QsBtZYs|dS&TK0?dmsbc&vEJ@Q>^hgdB_Zi`w?rz z*7maJIz3u~Bm(2(V?|F0G zQTlpk&!Ke}n}L} z{PV-kh7hLFAHE&V+ZZl=+kZn9lK-!@hs>YXGMjjU&Kv&Rjl(pj)!d~1)nkxe7LjL$`8qd@SK3PP73(@l3QI|=1D%@XD1)KS)%){~r(`rO$x} z4`xIWELvO&E^_fi{Sll>-V>qH7vNoyj|Kga+z%_#ybl=cMv8eZ!%PEg<&iqr*LD!A zaQ(84VqdGeT#d`LZGEG2REdew;K8nK5EHasc<{sh#$SrxsDDuYz+%1pmx#`Gn;Li# zgflT#`@3hs$%=i*yeWih8E9ZzI-VCuq0FzSD%pZyv|bKR1^iL|OZQpj)RcR3dp2=l zc(F9xg}Hr|j=Orevl6pb1~0a)J(3~CyDsaFl!J1)C2sa}LfGc2U7)zDbyGk+3m=9MV zHubP{T)U!_4qk;pfZ?2vfZDnc_X>Hh6z_PSK5N$30CsJT!FlFLO7dY69 z?v~o~pg{)jMjuV#_%Ns3pyZXlJlLgXPQ%x~5MUUOa8eVz{Es?YLS{OSo;cQd4-b7I z=V>){w{z_*nPeD;IAVFboo93OdeiPbudb8jRyCZBmfq=)yeyOG-2gG6-szvP?dvsm zx_e!n3=#>(op*V8<)ItBQZRpHDH8Kd+ucJeKhZC(&P7q7(%1Z}r{Mxqe3>m{MG7M% zI%`P9HPTfs_s=<4lyE9)&;*4VGcj^vlpY;+4u&3vCsv`uUXpJIf*3vrq_&DIAb0p} zRKKu4e~+;x>!%3|^9A?q&v4d3PV|%nV_rN~$B)q8 zv8VuF(t3Im8ocW9cdvkIZFiSf=UAu3N`ZC;7{y*i{IK{ajwFs(7tYJ{@?8DA3<6{6nhag;pNyM=8s{D63!NdWO!!Q;f3*Pcs7t zMuwd2p*%cBlFDvFq*#4v7^B#cW8QIys+-Y-@gtv_8B^pY04Tqkr5_X4H=V#2KIN$&g7=A zVO<%JTB1@2K7}wdaqHRbLxlFVMb9cW{_bPJL#88TrZXh?MGV2uphh9cU601YfTmYn z%jI>V_%l>hRYj3RoLAP1+Eti1%?VvOQ1oizTDOICa6NgGEB81cn4U%rR;un%mauO% z5=o25f=N9zg9Q@^;Tv3_I;s-1aJ{&|VS@e;01H}J;k>Lyw)Ntum8B>N2WKe*mHwVe zBZGsglyE}p%EJ|^DBpTMiv~|9Fn3Vmb7}lD+P4YsE75=O7Dh*$r=Vbi5!+uRJ@@eR zPAiY?|5iVPQ7CTM`jz=OVjemRW*=zI2o{$LBY1Y{UX8vclixyV@?4)D9sS)KjAi6H z?}>ZBQhXIcCc`)Awm}AQ3;yfnBf`k~F`$-~i1>f9(ciTj<3-P_5&{+Ry9EyW=WN1? z5EjssesF2uwxG<)fHD}oa`AUJgZfe7r08Us17VuCmdk|dci>a*zxQ3lGK++JoAGH@U>>^zS3%C5io zL%m~ePJ8^hx4ZtD0U(_AK}Fie^1QuUGrubWm%e-L>By7Su{r8IEAKV^zdLs5CA+>e za3I6-87X`Q{*o??{6i1u_AXERa8}yx^3tvT8yX-@MAl=!>%%i<(K|{`MD6Q({ZOQ9 zLuRCOW5-^leaG|-QJOX)c=8kRwzTtjXh0#QyCnFZdI;${J=4Ehw&Yj*)Jjx}^?G*M z-$J!8f2ddOLGJ(2E-+N=@gxRiZ;>wsw}4o59d&B)bcSV%qF3P()ta-+02Wl#B)$zS zK^y2LYP|l@FG!qB^%Yc=c+V`EH;3`5fIKI!z8f^SQ`F!0E((zzUm`C` z0)ul@uUi2SUc^RqMgLSTPPYuyNE(#qZPh4BwOyx=_&1Z3N_1NHv&Rmeos?g21%IwW_J+6L^`R0%_Q11E_z|$^+6A{{Bz#zj%`c;!WnOWnXQ7c!~vM z6{rN?U@SjIZe-@!wI4IKGjIhixiFUnXsr3VC17DCYHfJ3BqzF#e(z$&nB=Qn@kk~3 zg3!jiRDMW5)+iUG`a;BfbCE<6FKSS>jnNuSfShtAaOFBS+3`i*Hyu*LVCaGh=SB0< z32&UbcH`p$_{-!BOIxXQEc?|rBj%AEpOD?W5tAkiy8fFtWNp;%-PPm6m68)$&8l$5 z$(s&*czR-}>(flcjz@+3tG|tO+>h{g{}cDPI>O&0Hm}AVe4VrNsPVo%89pcTCb`KR zzX1zxPWU@M`EVyaDrhU(Otje88uLiW#6gzkT&}FrFMAo(Jcz?mXk0?Q9db3 z${oK)FjHuzyU=Hc93@QG&O$Ba{>-kOqb>OnZt~{_FHG36lrwU?Y=wiIeVN~pvd8bl zgvaL2aOZw%@QcWu!n+TX-+Dzmz9i;viH@AyjdrnNq*_V0j_zh?% zQ@`}Coh4Sn5pD^e!^rS;=vb|1p$wMw67voFrJ)6(OGB517AmRhT;FpjtA1Qr+^6_> z-FZ&+GMNna{8p@`uUu^0fBlJY$*{cDZv&j(7j5#Xbq85*drp7Okyw5TXlITwVZMwB zmH3=RJq6fFqKpS<<*r?6-}~@mXF$dwd*{D*;Hq ziDu*nM`eCX(!v7F#|<2E_j~^Nc$zuJcLx6CVcDH{n~slBG4O%U81|E-v1dH zZdLO@JHO~$;Y~VtIqKvw-5ER{CY`KL&$C!Ek*NbbZ({WX>wxj5#OmL(@oGt1&^JR{ z>)jykI+*G2eghZFFYP)Amsbp%={g9H_c1Vxle>-@|A~-oOLx+7`&RnEuFNw3?+$77 znRH1=E7}lpO5n<6oJjWPxc2aReC#@i?t7QwxntM(or-0Slirv4FfM%qZ;eoxaPHcc z)AdYFlBv7BI`8KGYr3!THD#&ZL#s5YN~ZFfUE8vBRrIYcGOO#EtYnd>hY@W21|?}g z=QsjBSXEx3&jh-*1#BkaKXSaR$#iYY)YKURyV4c4LZ8W$1fwePFHyXr*5B{TAQy=q zxy|1#6Ud13sjShy5OSWJ9&>lf*WNi5HJ>Dh=nCfuk@V zJ9(RfXLK`V49eBmp;3wcia#fSM}U9BeAcnA4KM-3eZcwiEN55L`HLz^q#0Y$djzQS zF(=Fg0iMl9-)#~P#m8WRn2%JMR|hM4r>cZVUpZpV<5Pr=?<7}fiZ%=#XZnBAuKlZ5 zpbpBm;VL4-Ttyk|f7o+T=W8j9RTnrsZ<2rK9bQ?6`jhWhy=Yt_CH+I9U+V9Vyz&p` z!s86{PyYTKK%Vsb)xb*q-rv77^?XKEdvKekSAV#oXLm4^&*Rxk{Y@A?HBw~q40c>n zC(Fz52`NVIh_g%Udy^V*)32JJr0IOk!;fwm+U)iHree9}60lX{|E8pVWf?WAyl4Z) z<*@TtSzFW}$LTl!nGt-|Xb@OYX78E79g=Zz9=H^uGR#*z%#P79RG`Vcr!jDl=wr4cjCv` z7nR}~y6+a!q#dZgbMdxgH9qy?NpwW#pS)Us2%p+%|Ey-#GTX7m%ffxnQZ*zKr!`)j zTz0!g=1l$xvY68K3b@*t0?x~Vqx}=Me*I|wgtMg1{_B2*^k}cT33W}yB2f-JS*Yt^ znt!#d7voK})q?UV;QS_jui}U4)mCskRruhndagfL&ysMDS3w|^pi&+V3^H2_IEGx)cDf`ulLNLJ^qgbdC$Dj%s{@m^OR-+1)Up*Q% zkdNas(fXhBPf#MZWr>oJfD{Y?=LrdBF7Vam>P^yE#ZKIqon;LpIpcOrt_U?+&0c%ZtuHgIB1OJhr$zQ?{1f!bId!o}A@9+0&M2nw{csoO~t z1B+W*vEP4nTQj2i1R9zHZ{uWiyM{%>Xw`y7+*KJV4|jEy2gej^>Ku?3M|G38B5xfz)BIP2Xfo;m*g+b3!D|m z9bcQT{^cnKoS(9ZhT3AawGHj{hnGWi@s^fAZFSofR%{>hYiMb6dBJ7jGtUEsZM8g>9eV!S+}+b1T~!j23N!yuMWgp0%*5b8`RR!gvdmJW+hBQ z&n`YH5v>(mFupcW+fY{*YeVz5wKN4_ULDnqx;lnKd0QK*W~@aDZ>ny-+E8el zL37m}<+iJqX2{lF-PGDB#)fjVl^x|1#aA~<879P5pf!%-69(*(w=Q0fs@0=i$JYfK z+5;^e%AR0&O%Qakn1B|P+eK>%S*8?BuFDT7LlzEGlyQ^Q>IiINqPRpbsrEQJ z6Lh|$t@`S~*@20ZCrbw?Qawr2BHh|}{OVQ}dP?^@+c%P3qixAzslLkGWCD-1t5#E; z*40BT*QV;FjSWo*HfMqM>bM5LOS)bhO@Sz8UakOPysj{YS=}bpNaipmq7bWiw^poF zCCY6i%Q2`S)^^Rr{6KMjpd=sJuk~4@iB~Ufj14!K_J$>k8{%5^$al%aKtVx4;IvD9 zHL$Xlnm}E3L! ze68<9xG?yXVQNh%t_ktQ0*hlXra~xC`O`>sdjuX$c>=_!Q*Ji#-;!8-?#yX3&?|Ka zy{76bVgS@lm8hXTL8>mGP(%jreqO_p z=7ze48b~t}Hk!;X-A#hvDP(SJiHgr>^U4|Nv#Q&#n1kqcng$W@s5+c3oGaBJM-1Hg z-2_NieCO3S)Wt8XZ-~b#5d|=w;9%2d$e1iK5nYE(pH+<-#yikahaWZ_N<~ma;k#n$ zQ%^=Qi(K*Orhnai_BCUEb@ms2zXPv)R-EngZJ6rwEh-ZZb?W%X)K7l4_t{yCE6urZ zs&D4>=@<@RhOlYQM=k%vf%O1NrV_J5gFLPRU?hPYC*@f2~5y~#<8X3;MFDy+Sk3fNj84sl9r}TCM__P{+zmx)!?NBZ@RW3Fa zPT15;v8k0F;-%l4y)JDQTK#;SLqhrel$7Uq7}+@}e-T8GZzklB81Vnb#=_aH>5-I$ zL`J2@QzoEvu&p&^oS(w>l66+LH#2)pTKYWjntoV63Xe)3$i6jge)ih5g*b;m3Et9A zHyi$6O7Q=Teu_4KIdvOFMpdEU8HW`d8kI36b&lzyR6h+%xj5ugv45+>`_fXYDm=<} zH?prWyxx`eNM9^Y=N##%NdsZ0Q<=UgmCKpA>9HrDdit5x?8>f@*Bx=gh`!9#8U5+$ zYqPU-!lK~`^(m`eF)BTpT{3G^c46c(c(f4(dm2vdnd~g-8)vEo1fTD&|HO8n z_dTh#sQOwC_}yUm{mS%VY1_31`!rETD!*lX@CwiVTt2EPrGbV}$&?AwKg4ze>TRme zmn|}(zxK%(a6?8YJ8)el9DNu1Ygyw_*}38DK*)N0Fs;x~*h1%yO0OMG1a`OLx5DuM z@o?KoHn;Kzrf;lBORr5SZMjzmoHi<>R!Erf$f|t2)*=JbrfWhs&W0k>?sE*_G z$tSP8g?^{G|Drkn)Zp9A{n6(9fWhxG_mSfq1%v)b4?MN4X4n8wlr6wx!bKl4{HM6^nFeRO7m}#K^IY_@ z_$WJ?R=DsB4Ssnn7IOWN>T8Hd#Kh7J7Hf{8-^f_@1$Z=B#4}kMM1G;lD8S zZ@KVaD}02{&XaBO?+w04oh|C~$?gz7*xM=>F5e0Wt`$1eI=3LoKHtIkRKc?RF+ z!Y@+yNBE9#;R_93*M;Tz}>bfBoBGuqTf{X zFMHr`dEom!@C?*575}3>@UME{Cj*!I-iLDJP-_b~PxGKZ&jYXVz}r0VWgfWWfq&Nn zzsm#vtp~ma4nCFM)_Kqm02lq_m?2)Rmq0%|3|?kTNUeJS|C_-BW+JB6Fn}NM;4iVW zh5uT7F(`*xr@;BE1`n8tr&@0SUTpAIGhtNg2EZf0Q`PG-54_z2U*&<{t>fnVl?j1ApBEf7b*55V+{A@FcA_wRVNeOgtK;((@<}`~={_r}7ld zN3B8Oa;gXYEDwBv2j1v`UjtmqT_F$DIMjL-&Z`aHTBKmTHiXODJ^1{_1K(iy1d25u zyC$^V;M*r_T&)Y?@@)@3=^p;y4_w(T-XzGO)^~6|(S!bML%&l3h~QA`H8`K=LBGTU zU*>`Ld*Hqrc`t=e59Dn~L5*+W!n%&;nuQAsicXtYSUBu<(iFZent0l<+tW(;cH(KJ zd^>44t4Wh44NILedDv}f5#JUU4J)X)cz9|_F%wTdZ5Zdt#l!MWE*+j)IIKpKCl2F$ zTG13=L3DbN{5Mhln+oh(;Hh4McFjYOxHs(Y2ENM$Ngxr$UaR79wC z9?e{3nyB(mRFo4Hhe;aI^a_D&$U9N-oT#`>RD32XJ`)w6NeYKPNzNAaM;ecZ3&^=Zzgqi_0keAXN7ETtf}QH{lZre5~VV(`LxCG zqSx2l(NsONx~ZwUYVLG>6N^`bA-NW?8 zmS%k+UD&?RMEOdVlixhnH zP}MT6p}D$Ef#C*uWuBX_>sYLeK(2K|PHSm{ z0YJaa)6ptQakKDMz`UywKqwC7iE@QH)Lg3z>1d8u>i6D2(Ms*HdDV4EA*ZX>uZrQT z0I>ql%!|cCjg2~U(_(y4CM@w~f@C+vPMhXi+_JP95=gqdes8R{vb0|@4M{59+6Z#u zvw+mE`H_Z35w#}2Sx}}3>r-~G%T4tW0kX<>Hpo65p8%uiH65)DvD!H`@tTgs_)-JnaM=?DxDf6^6@olU=yvnTimo+k zrNo!oPrDiwtJio^(&?yh;u8#`5Z$Cce03K^>xAJ|ph(Fm+JRXow1bvb*MNN~J}p5G zt-s+dBjyHWAwU%rYMN?>?l((Z->Ya2slF$XeDhk`;_6eDP)EFFUaT=zli-(V&{UtR zfNQ87pWifBwakuH%SUgC8o9rw0jbjYw5#EF=T+-3(XaM@JD@_EGIcwF?= z5WdskZa!}jF7JjcpWOy`^T{#g3tmg~V+oHDuHPeQJ=77d*L5|%gz#k|AP%>FzHM-~ z{I?PwKt3z~4-GDI))W3B;g=J>m+&hHpMdoWIo$Fzdf?wMxUiGFDuVK2p z4KDgQ0Y6*rIHH%2qbzRMnIyS|a9RJ6!_6n;!Dlw%%;y3RK8uN-g{avD$(7J za|~|V@e||UFCd)#*d+!R{x!t^cEZ`N9x}MQ+-E%Sod$Qy^A_RbsodQLcgyoH5B^6S zh0HkI{EsI5M5J529cyqm|C5Mb{I=Cw0pTYRpGh8k%xC?FjXU2a`Uc|jTf%Dz-$FRs z+Y5xV{p=*1?dKiBnf?IbOux>2f*|@~d%MNFh!&jf;lB-jGVsMD|NREH?edzj!#@zt zcDRA~Hxi%ch+f*o^7#|txkUel2cJC#cgvZ6G&19G%XuW>Y@gW%7d zgkMhdmlMwOmSu!j6MaA7tp8gK?ylDp9{9@!xAk3S+T{(x^Qhc64eqY*dmjALvXL2w zn|~JJ-0nvk+|BM^)mKQ|CAZE5TEZQ{fBHb6Mr$@_$}9ezSM*LS2@oEQ1IzQ+;HdY(c!^O;6C z^Vvu^>+M|g;g8#HuQj;U&jMqg-Gs}l0jnR!;BNc*fd~Je5g+jSBG0aBMC1c{-X`<*3Ux1*-n-a&i?9J!r5QlOgP)g z9fY%;{F-pKlZOds`X>ly`q1aJ9;9AuS1%II{cgX(-S&2bc@J&%d8VMyXEOof7yHZ^H)FN6G+Zq7+mVR zjPL=XFC_deqQ92#Z1X{>yS;)2cgtB#^vj9QQo=h4|0dyWgx_s&tLNiP``$}9ubp${e|X3Q_&CC_bS4%)8`Y;{rYT!OMQ7=Vg}*G z#J`gGbQ69#;au)A;=}w`6VCi^B0kLjmxMF_M+s*=Y$crQ`#j-2B>yhLxn1@XejU;K z#aMBO{#l;m31@jq2xs~-!dcFU2YxZ(*Q0DZj@J^-e6As!%l#JNtBB7}2(KmlmxMF_ zmk4)=emCLYBK&>Ana?Qm0l8bB#}VF3eC8Y6?f0%Cdamye2%nK6!QFoE8Nw%% zJkJyV8p8K^@E`eQ5aDq1&nEmdq}%rWoWVsu?DtMExLXe;#79(a{pwW0rx5=z@n`wx zdGL=BALidkcnR^plK8XyKk(rH3*y84e?xdF@qf^Rf0p^f2hkh*`I8C1f%sfWIMZKk zaA_|d7giEJiTK<=d{z*C8{zC{eniT;m-vp;#6aJJ_mgNvLe5TEx5XMg(%@#!Y| zuY3hJINW^36V7~2Hn`}S`Aj98<)2A7%U?w}`{#PXS#L`TXaD>y!nxcV3FmUZ?}6V# zIQ!e*5zc(J5YB$}&xF@PN48(@BAodgD=)Wjh(6h`oaJ@_d1CmS;TSEYB3e zJ5h$MSD5fMgwG@V+k`J7oaI?c_>DyWEy6nqzmag}^FzY9UcVrm>-8|A9DhTa7ekA<7f38B>YywO9=lS;WdQU628>nZuxKW!0#}4I(SIEUc*n0 zUl1;)WaYfi;BLK52&!zVUJHqSy1|8inD9%9{`-Xggy_o&{}s{yfbdNQch~o2;=}cN zgK)Ou9yd5L@%tfuRzF`M{6~bJO882`&mx@XKNlEW^frU&FCqFL z6Mik>YYAUXe0aWhC(++d^uH#Y=OKUaz_)nd&v@Xkc;J8Yz~3i4PI8`jB5rVq{@3DX z^*_bnqBr)p^N9XtqOT|VnS?hHJ?nWT;VjQ>g#S13Sx5ZY4j&~vLiC%758L7EL|;Ml ze1Nw~owdSm)Agmb+*39m&StLKLZj}g9=@H)cZB>YaoU&_S|4v~lF zv40_){p5Ruv!6U@aJL^gB~P(G?0xiHgG;$A&ntv4L7J^^qcFzdmh&3Ie~NTVf0M!8 z^8C`^VxM9UPvR%X{e+*3d&}oRgG;$=4^I$1^VvZ-`|TG!`25x2a#~E~en@^XXQVR@Vg1mBb@t7G2z@_!h|#Z9KxBtnsBz~b`N|%;Xflezj`Wea7ew_ z{`(34Inr!>?=-k=-+Lr8j(Z3f6!F@-xwPdr8C>LHJ!~>oA}{wtz?mhgKC-%YsKrsb~|8F4TCYY9JPB5rWF z2n;{5;^cUK>65Kj*>!FT{uW?;@P-`5h1bzGA6$ z(hjYhBMG02bSr1J!KGc;U;V=1ZartnOA8!se2l@Z{*TjSzAqEb@)r^=^|kc)(?E3y zpLzIMIRo-C1Bb}T{iTZVUn0%Yw-Ejt!j}_%CE?#D{I`VvoN)Gg4-wAeY>vDX!69u zE>-G0%n#%l+_qPvCi4{%ej&+&zYSG~=u>E|p38~;izZD7ql9z2pXb4+oA6%~|62&J zCHyYJn+X3s;XHqPlJEzJ{tQ{v#v%1$eV%J@w?5lF@aqh2^=b9fNBDe{VeuOc?zYc| zJ@{`YK3^n0FA>gu;585a8M63}L*%>&KP%7Y3BQ=|uNmB}hmgTV{@)Y*rNoEl6*0nP z$g<@&5ubI0uOR$E!q*Uf9pSeT{(ZuKMfgg>A0eFiY$yC%ME?fi%Lvap6E`?SpIqMp zgNuIJ@w4?U@xZ5f;8DWY6Q3&#?rxV=26x+GKjGtu&&|Z2$BX+3j}!eL4el=YRS$fR z!QJwFNcbhh{}Y3|`-NX#qTq1zIiBzZNVj?}Fu3sH`O-|H=YBMg@Jor$WgdL4BAnaz z{Rzm7!!7^)=6S@8UtW}&K49ioZu&Dl@PKBc^dma5$69kCnEdSiPrF^X-S^0T*JVHwp@X!{UKs^?lrh+x?9)Gjw`_KA`XGUHJB|X?&XtxBIEc z{z!6IK6ZbUn_alwzocx$aC*Cc$r=}K_anK(h1>l|f=3MJv)zox-7ehjBjPJ)zq(2G z;4i@D0s35Tui9db)dg{Edf+Rlm5mSz7GqQS0_+KZ8zC<$z;+FMiya&Etvwgiw8yb& zgQ39d5Fcarc|G^aguVf^lf7Qz!ME_%*3Q3vbU>Tn_$e? z-um)!B|QJP`K4P6&x!c)vB8voj*GFC-^x*jOsVo871G?g#lY#X`RrNd>~ifQ^R1b# zGf7M)KHU13xu4`W-8MnGwp?EZ6NtVr-AlEZAhr0V%D>IzAFHz^{a&&GqB3_#Wxw0k zYKr?zfnvX-@w54@UQ(6~y0Nl|iDT6<`s~MPA%5=sM*?%1n98vBGIjF(z-G|53B8$H zpRiArf5m@mitkxMb9U>mM)p3bYiMjNs3~Zf5C{|ol83(5|DRS|tP+Y!i%Rs>qN6&? zqchUek{r|UhAw%REO-yKWtoD@u!ol4cfRwldCqeP)Rrr;S`mzDHhvdm?h+C~#z+uX z!Vm*&^eG5k=)8nTgjuIVgJT8`jY9yhoKp~>-8mR?HWs~@chGqTXvoE6y#2{h^K@0*j}_w}@{ooSJp4NR(c_8}6qNhD4?lG_;UfQg zA0qS`0@`+ce58MMK3I0`$AxT;5Jo({v0-PA|K2UmR)lUlPB(*-87%MlV7WwF7xNbp z60yDzf4sctP|rKd3w4aLu=63p{yBdNJO9v`5#F!p*-+Qkw21RqDDBS*43~b|@gkyh zk4`I3+YOOMmm*$e$Ni7Y2Xhtm*JOn%Y)s#fvjFib7X**1fHcU03N%7dZ-gKwBHBVi z+#?YcRhcDls!LeP1>duPvj+1D07bA$NjgJ`VyCzHPqVF1AFCZo)Uf(q)8eQKtx|&GRb;L!b z&Skjv9F_uG41GZ&!s*W*x4I)_MrzV#t|q)L=e4gw^Hb!k5k}m zK#91I=*T+`I6HI(IAKImmY|H?!Mkk^VIwyJzMKG2J-LaXCc+z`JBuDKdUlox+vwG( z5!6!1RT&5q*&W<~J5{(c01563o)0BqFHS{=B=>zbw=oly9k_55^N_ZZ;FJg;u3KDg zD&^)5lQLFr)|#6|a&sGQjD2W!;b6VsJAuz~J`@hEh{b)slCkKJ5~vm0}pD9Y42kBa+# z8@^YXUKm7rZ&Tt#oe!hv4FM5S`;SM&l`Cfpu2N}Lo(vy_VFz@Ng`N6Lr(U}sWvqs? z4d$vVD6t_WuH<_m|H+$e#80_-N}6G3l5bUTQPJZNLn6G^tFkKkW+E0WoV1E9F9j=D z`rW%wuo6Wf;od;Fw;r@xdm~vPL_R)L-q&#m?neuUo+x3N6Jcf}m>HBQBTmGbm8i*S zAc9}5=$n(}JceR*;LuRt`DuVgi_V-k;M{VJY;$tJBFPj|j{)5n)s1vGTTDfA0gWXh z9T<6xE=G@@Xb5R&)T(<0Iu~x=H@B}~&KXAg?8kk%L<}udz|Fx=6!5IS`}z!_xFIMr zs`8%4{oVga7oaaExCLhzg9JY9`2aD)F~*3LBD|PAov;3zhTSNjgG$Bh8VV|U>6v{zKx77>p;aMD7X?uwX8^%<3x1d z9Bvr?lhN&xl1bURKP3ml!2%ttR_RI!q`IMM5Vy^4cu%YAZ8Xi{QfX6#y8bVk>Q}8E zhMsKuDd+0diwcZHGgC^GtM!ClDA9~XtjyGU5?_iA6gAFB%GUmg^z`P(${wlx-u7<4 zTlQ&9{Ro*3*OX~LcvvggziU6;wRQW6Qzg01&~goHKM0?)0T1ofVts&4a=2K!0rgrMX-V5v1ZJPo1)3hH^<;V=4N-&t zg2T}B&MNpgxcU>JHfKN&v6wCE2+LajQAkS2Zw6tVUbI0`xaS3fLmvuv)xSM>{!+Om z*mVR>ZUg*)VkEN?>lU{Iv~E#)ana-J;gS(E8htow2_F&2WL*|qs%JA8TXp9b-oi!` z;6^4Xi5n@%WJQL-SJ8DMeR{f_oUtzmE*(7UUsV5L&m%JIsbSzn$Wh^7n!73NJXPMa zVR=bt<^F9bV0ke=io5|b6{H1EBa)Y%MroMekHCnT&`}DBd%(Dtf=3Yi6^U ziKz4nXD0fwifXQF>}h{4B-=qxy%M^@h4OrzvjbMURJ_k1&K{>@Pze=g+EGnk7rVv3Qu#h2tg%4?bqV zEie6h$6ZlifrMyfq28G}A^*KI$Ds6DRCD!Q43&1u3lT*sHM^BruZ(7^Oci9dB8eqJ ztc?WoUbzwGLb*cDxZf#fP%f35yUk5RZtgHQYQimcAY}7Zf2io~EL@LCjf9>rdPm6% zsKi3TUqF>00paUq!o3Oz9-p94!G&gLk|rK3QI;#o1Y)m6+2x?}qSzt=Ix76QhzgFM8HO z5$R55dIxD%AW+tJqP|#W= zfTeV_^#S~+xj9<~ZwCW%U;QCuQ0+W?u}0Ak<{=UDQ_u7xbvpCgi$TDX{uMPsz!i3u zsm@nqChvOWv7N$FD-f>-3%Uy)rh*}`Xu}}9&TR>T@Z3!44ofx{uQb^-+5}D zGc+(XE^VmmowUfx-M50%j*s!UTKM6scp@wA8d{+kV@X2FU1bY;G!s|SarA?Mvuj}2 zxU?-hKE+}smTr)Uhr2_ezL^*omdSc39t+i4YhP6`91^!ZIw)XO6pxhA2$Ikn(L17j z=osO?J69;~Rq&+mMDVZ~7#acnI$I*Wqp_kHb`IJ{e3{juFO4mF)*#7A??XyhHD;En z30+ug2wC8t;pWZ5G**{}-|ppGnb!rRW1tjq;}ONAHyo_eodd2c*^TbwM8Xb_9EO?)<&H^sV^i;zv>6ILz$v^1fJ_tOKnO z_I5=WMl4U{iA57kQ{q1eVOa&rRqG^572v)I)>Io`Aq{}FrFV-Sciu)JDitMl+=7LH zKxt#J5dIDZCq=@E<5?b!{HjqWxl3gZ3MMnqGbWT(jG5cX;ojO{al$_*oAsX<1(PjX z`dY`EsxaF|QkA4hi3Dh7vuz9-L^+U;A(X~%2!k8E~ZEUIz9smo+o9r)CKSbgWkNpJ}3kNKornUl$Jy(~F@cDXaNx2G>p89sUDC>85j9^2%2K&Ghwj@O3t zWhr@8jLOK!$ljJd7p0|t7Z;)I4bVv?Sk@c<7bN)4OcC09dUi?I$n&zdr)6A}nX-g( zyoUPBLyGzTGe+~#;Gga@mBF>L4I@#8PbxS37>`?t5iB~8gTEz76}!0@G(umfsC~ZA zne%jmn_HjAA;(<&gg!^z`Fvk8XF2`PV+|`8K^*jDhVO8#SF5DM>sx2=<6T^?Fu3_- zBazywuJ9_;b#$ov5kB?yl+xsz7WtxTK4Eg%sqRN8eQ;8@x;aAiEyf*nlf{s_mTz7p z=4^vHC;z)yT^`|Ek%ZKh{sv@(Z>bCavAQ4OlW$<$N2-|4cY?^aA=CfC1D8iViQ%=! z5G&t<>py$YzwLn^@W4mG#8b&5v2|170T28X4_snKr{Z&l2QD$7Q_)v>;0rzQX5gYX z`(cmrv(Ujx5BeKC@LN6bJ3MfSiJVG)c~h7Q-|T^J2QKoj&4AE2l<&v+bq{)pp__`o z#3oLKAM(Jn;m1?af5iirSiq_1<;7Ym{5%i*LJwSG@229j)B|7Pfq%;b|B(kSF>+It z`x_7Z4<7gv9{5Wh_}@Hmi9MJ~o;27;D%|gZf7t_m zz#Ba9r5<>X2mT!o{C41K{QA6jF`rM(3vvFv2mQky`12n4pFQy19{2$d{3uLuQrZ6( zJ@8x)+?RNKK_E+Y-HxbZh-ZZ$acziBr=Ei-z-1AF8}cn;6w>X)!ePN8i}07Ih-Rn* zGs=|;U#O!d%B_xaC|5daqe@oc4pp>69U~GkAybDkJUsGX@>$G0YvJh)vB6SDJ2Yv@ z@P;Z@oQ^VxOT$4x1S3PRI1YKHq6kWGuxdlrxUjZ4aRbg4cf~QJr$PI)2x5CFW!Y=t zVXsv|_C}Xv?^ImFR1p_dyMf6tMO3P|h(HliEpg4^042QI3`E#FH`dmS2#S&)@#b0@ zuac;W^J1;OD^!9l9qE4<_TLq`Fei|2m{?be7ubRDszKsKbE zi6hvI_MFqK#HwhXTiq@}>~t3B-`5(qD#aCm%D72H`|2=knpTG&6!Js@u1VmTvF2DC zVhGM?YiX*~kt~OYbmU-$I^5f|t0fShDUVpGg@VHu29(zDg>{Ocm!=L4m_|`?6;)h2wm@?YLn1MSsn{=2T+NKNNC-w1Oc1vc zXHo?))PVuf%tQ+;e!!%1Py*Nu&)umnCMR+{Ktd`34e|7@r3Us{6xaPfccpmBF{Q?sUQYCXBYXzo z9}>=Xm~EEyq+TmGRg zNF~l;^8A?alR#qaeRd+&iciQdj3{CuK6m+&^i zqlABpaPD8;au*1!nxehGT7h{`MKO&!nxdegmbw~gmby8 z2!TW2(|9b`(y`4w+gM`bwMyt;!2%ksz^Ms#5_}9#fKjB|R zc$jc`*Jt^kM>yAa5#i?(eGB0i5I#;G5^%W7E%Cq?5YF?8cET?NKPzVs;S&hIk#N?} zZG_J!`d<)!5#f0OpGv}6&y9p%LVS7&UqJYG4KDp_Ea8t6{iTGz zOZa7k+n9MG|3bpQB7-On!586Y>otY&YQmcd=lS+(!r2~fCwwvSxtH)7!XF}>_4$|w zzMb$w;`2V?lL#LpP6~(Am*?{*7~I_-OAIdhmm$jxTfV7;e-XIVTbTIQ5vj?v`^E@nQZPBk;?_|7H*V_YfW<`ri_N`5wpCcO%gk6aEb0b%ei0_!7c% zWiY@Y?ZVF;C4_T-oJn{C@>qHPKknWIysF}A13tL`(ZrlsX^WNCV~v<-#DoM$1T}}8 zz=;H*5)=gsF$tF%2$B;)1rkhx?1lhV+iKNMTJ@{7TD4kgFV=)RUgNFRS}SU+#CX9g zD7XJzYu22z&d%BBclp2P`TzY8&ff2=S+i!%%$m#Iv*s@f|AE4LJaBs!Af>DOyJYHY za1pNg9P5DxJn&Hp*X?nV!gYIGtng7t+ve+Tg~&T%?Bv{8@R*6|UC}E>^havsB@W6rXDquG{-Mg`cPBZ&vsf3g4h`-QWFD;nNiT zPKE1vK_fM0T$Eqk@3bj=G{USNe&&HcqVQrx|4)T$dHNKt_3){}b$JaWV}Xn0)Os%T zz(Wex`Mp5lx?HLiuH{^-aIJ?&J@9{d;Av!xaFP7Fo_|Z>y58m~Ts__fJiFl5Pax^zK{@pIzrf+{s5uPZ1K6Sdd zer|rE|J(fA_>&Pr_f-G%wM*h(ra|1h^?wmCiZ8?9D0S%D=9bDvU-sGl)*_JN=W8O| zhb4Z%g=b>#>SWKgynIkO;G~WN#c6oX!DzipYPz$9iNu%+;x{?^yJe2KHtaz=GXr3&Oc4R z62+fQgBx6H%un=xcYOXN0xz(|Ro0jK${JBPTD)d`bzfO6)1%3Yo=f55D@*(0X?=IP zgWXH)^8v)2r4V-Zhn-K$ovr1L zaTP$jq4JIMDDt1QJ&b)TIlGB;5~W1CDR=f@`%lPu16$_EH3gM-bW=%uD)5C8FUqM=k=OWH?2>i#=#-Y+s3ihUiQn05a zh`lz!&WqscfqaF)Ye*_a6+A^Qw?@u-w_+H#EBUg|`2u)Pu#C+UyK}8*MVhZquc^LnXD@c`IHI z*UZc=3fF86mF#bRf%e?MV@WMU|U?W%OGzINQJG z=luA=&X4?ATuQW+4EJnCKJuUT1ny4(i4XUiKJw3ec8)*i@sIo$@4z4REx_|WN1UA> zVekEuNw0zAWso3R9La}F;y=w)lu*)JpnDxOTkyv%6>NG^ZZy>h>Nor2pt8_7C-kVV z0)E5FOAh+i+>8{lM{4Q&p^|0UIV;{C*HQJT&*|}Rd>X|N>V9WP_wFosSxefHwCRyw z-*eABd*68Woz`XWlj3jBM7=_en;&vsqCEQV--MlbT^~#OA!ip5|NTY;>{Q)HM4AHF z9>EaPNDZu~w-Stb&vJ+w(Oa}{3H!J|pc12!Go{vk9(MXr#VzPk4bYUs%CXspkT3tb zt@z*6(o1;DCl^TTS*iYY=i!;$0gMC%D(l(wW2zYHes3N^u{R8U*=Puj+J!yDc%bnd zZ*1zF27=h$OKFeH_(KfPy%|4`&^i6v@9&PZ0re&X_G|I2M~X3rx1^S0SFFoUOgd7m zd`ib|V?$#NljE${WN)5z^Va(<YiH|1w)Op~9?oI1BiMDmC;3hY0K`V2HGX&v>gaOlfpC zH9R}QoxvOB&gWzv^Rb<8DLkKm_4lZ@!shjgz-ZQdH~kXYKAqL{+un6Zg!u+n9wd>Q z=LTCzwp!#qs!FtxDteAzj=$+TtQwHN9sAN&OvkywbT?V>UwU4p4gBoyjFYHCwHa!g+rl&%y z)3GHvjRyb+p_>Y9jc)%eGK8!4UgyPfXG^(bypK@LJ|iaLii^YBQ?n5TRXa7?)uo#J zW8WzaC9n@aT3?^=$P>2eJ`$DBo90F?$7qFup)aMLcPtS2te}co%*vRAJj|zkn`WDG zxwAXuyiRT}O#gu`zpR{8_6FeVSH38(6H$tua+uBN!>vA10ZVE8Fq(W8j)>*fzmB$Y zdUM|>aWdJuz+V=aX>9|!Z&G;E9?ioze_Z+nR%MYTm+ zhATUYvf*Tnl}XOlq}?J#vVH=?9p*N^MFPB4`6JY_%9>@UeK*k%0$Z@rw5fTX*EyDk z4b;O7reBOD$h`$TiC`RrF-u0J^C=u|0Y*wR9vh0y-((=Jg(ZQZ3}ZJr92smvRM@K$ z>`C^oxf2hd%%YJ2^{aLOVg?#^01_R1V8C(Y!N*fc+rQ%A)zx3wri39Sbc83GI0c{%)R4LnO33^n4!%|#N{U8U;8<_}hr$s1+m>g+w^NuOc-;RwASJj z%%f0uH&O6!zl(ez4(=isNFPG zmKx^CJobQJ2wLcf*&@X4do-3mL*Ke@kbkY8#h?VpmFE!ZnW@TBxX8WZSH^9wbJnl`{k0d8cCu$axmJDtJ8i@leS-&7*ZAXlWdpUhWj#ZtD+p z3Vnu}eujR%d9k3w{>h>2dbYG@6FG?H`6qXy*y}mv znDMX;Du%$=F%7L^-na=3l&7HNgy+Vtv`zkYcEd-#_PJ=pP}-spR`BMb!Ii@e6P9&q zp_~Xg?Hj^w@zWkT3;}2`QV-w%aFqP-Ff2KjiEn)02gOLr!W(n0kSv&uI-ar#$J6 z6iPb? zhMX>w5CX%Yqo}5L9YA zAN6a;G+Qm5Hq~cOX}+%&QYD44G?;_X{4sFdwal^8z-aG+Y@6=CcN`CZ?KIe^ z>W4h+O{~n`Zy<2JtPJFn)8w{hl-RsKY0h(W}qnqFwI>{pQ_N%Ap4Kh#Lz_kmitjC_ZjD}{`_l^UmFbhE$&0or~izHi7%+#GMmMLJ})( z3$hhJkKuF$b9aPtcNnsLp`;ysj#=+;uWMd|F5n0+H;iyGdz-L7DCR*=5}9BquGsbp z)D4^&F4-1;_QKIovVOgQT0i91Ck-@Wfq^fEfj=vixX&c+GE4#YZiNkPAk}%yDiw+o`mv+p~oO3*x8m%Ph@rsj=TK6 zE4g0yJAa1S$JTrq4M>eWFE9Bda=E{AI|q?fKg9MH#ujftBH#CSwsT0-wjYk#_FjHJ zWo&y+FsV;jc0a^GU-`rsyp(9Vj%v&hCu22|YWguf1e~FGIN0mRbVHc-!I1>3GSVyYw&~!p}|3o8ec?iMu z9bPyw-*esL4ws-d~tor72nZa)VRdc)k5%>3B!-wWQ`bN}vq z?Ci^Zg0#Si>~}sUt>kVldD`E;8#AfikMUpJf);Ek%H(ax2oJ#gj@N(Y4*zxkLFzk` z8>aud>+wJfxAaxGR*jElKs}Y358V*Zad2gEkvICMcd>h>N9Y zqc2yy<{jP9s7&+#nsv0agN~*w>INRy#q>O?td|lFfd%~sEzSU;@gLXSa+U?sW z57c^Pi3`0R)ktpKWMfRGOv^@lk6(G|Eo9S_X#Jpf2!gP&Ki&c6{Ds*0Kfg8*xoS}z z?cGn{>9T-5W5NqUb(~Mj$UJzXoEKQo)EEg|Ru>o>7%_6B&jp?n$S0-?`n%6GOv#Y| zGo8}_2b)A%8>m}4zcJF77r3k`5;*DX0LkR5SU9J_y26C}&Uxe+Gtv;KZ8+M<440T= z1H~+7;yj4A&KmghY^Vv$sh(dSm;*8G$5hOoN& zfOQ~>14e7ettCf?v(6c36aJ~Q!=D>?bV2N@{>hg6uFA@DbMPI&nF;pm?Q4UtzhW{b=r0PW%&5z83%arQH^Q#v|!cBG2U<$9RA1?)2UC;hUVxb(r&YLMX?dx)A<1==jMpR7jgNrE77E(JyeO zoq%#N?nz9j#=Yn-sGE!0+~`}`LZ_9tJchq>nRZu0DSiW4S&PiGZ;$-$`fvMWrEj9; zb5dVE^%O_;QyR)#pR_2U7twHfa#g~Baozzb_a!4rSwF|E@SjSb6+VnVy0&Aw_oZ?z zN)CfpeQ@byf zbA3|s+=POTXI^&;uUEc2&l6A<%M*$fPUk#+BD~JU6!}Z!nvmI*lsqvZv-8qR5xtb; z!L^NeqK>Q~AG)hjf|-HV)KKP>l%YvSX9fVlo9;Mx@J&y?UOgfT>B*ig{KQw3Czw#4 zPSWM(C|W~L=C#P5vEv{FD}2`8VLZaqwZ6XQy)hVt||`f)scWbAPfyZ<+R z>{7CceCZl|ApOK$8F(TexYma;kFkN#r}u;hNMKz2sRe#d!yn;$2*f2@7kwqTC%lV5 zT=Y#dT~r?ke~F)bQQy1foAp7y4T8&-6W<)6ZxP(utR}%{3vT71Q8V!`67Qs zK=pOJ;J?=(?oSkaoeMuj@aJ4O`TV7Ff5U|r2!7awj~3j>6$?CD@KgCWhL`a(d_cSK z3ZWn8!YA`{8t<=&aq;=43GS|0GZ;TAy0^#1sb+kD?|b}fQJ-(F&}YS<=v|7>J-YPy z7J#085DOKLWpIBr@I*YwAAKTxg9lE>Stp|J^1z?|_ z$nPf}^anif<1juTKI^5!&KHOd=_^y)-&f`70jcuyZ&SMJ-i{l>MzGO>u z=!l{?;t}K}cGjGxg*CHg4KElqqPRdm7UsvrEi4=z7dk4=rETHpIG47C#q6b)eb~DE z({cc|lZyM=5p>7SZQ1Lsc(3I+kPcx599Y0H3Ji_$d&`Up*yrsClMp+>9l>!&aNH3b zcLc{B!Er}$+z}jigrR2+g-lt+3C_=*obd>5G`)Gfz7kof270IiLkFgv72`Ykzuo=Phbo?!Wkxw{v=08a8=Da$eDi04~a9E$obxKwbME#Fv$ zFH!i}3cpq1=P3Lk!D&9H`9CE%x;@xk%vHsHn(@EcqfB!qyq)CBjQ`F4TUw;D_#WKT z<>s^3z>JfrxAX@Dr+jHXmrMGDm*UUT-=y%M!tYY}IE7zKg5aVb>Pjr1IuD%2GjzG> z9fi}J)$+O51GnoJ6s+n0E%cPHGR4RGIHlkd6uub!BVBHMl?VQg;O_E0py+k^rjQ`Q zpXS^)UulBVPe|cqg1h-o6P)DK{K;27U4(xdf0lo>;Pewxc%$HM{+)um`QNB;>iRAJ zn+2yIU9avE+|Bi&@geHx*h#f z;d{^q@cCXe5S<_-nnLu5dkG8l~`Yh-39RPT`t+#iF9{Bqn_&|AgLVWaiDc1v^aMD|a!pC~>KVR|D{HG~gkKZow;Qs?fulZb| zaNU0`ReW^$KB{nS_g)j+t)KT5e@gey_@nDnh3Deg)~hcRf32U>$XO9C(wk0qq{7cb znB_BB;nNg8*8^`*_=Sr8L4{wW@O^^2^LvaRM7V5yu=yRVaEfE)JV9{Em)7&?g1h-o z^uT8-{#ws93O`+?J5O**SL=DT!lx_x^$OQ|{)NIXR`hQvT)KAE)@#P-Vj9mh(!%tv>B~%5sHkeO@cL zyT1KI(bKKvbDP4oefWh3pN9l@%ehVQp$`%x<)7+-*9va+e=BqK`7T%Z8Nh75776ao*X;_|^8d~QKmO|` zA>yO!^XVS=*&g`a@?nEJzmE#;&es-&4_EoxDY!ddpDA3||3eDb_5UcUthk7euK&#n z*ZR3b;d(swyu!5|d&L9)w+H@-!gc*QnkG58-1<3I;kvziLvXi#CM#U$YmNuL%mY7* z2FJLFzt+P;g1gK2DZ#D$%Q!aLrNYkyX6x!;fT?@{>0iq9J!_$MCt3quhZ7s;>X{FmVF{C+OD)#pr(jsIvchl}uh z{MmdB5S;kye(gBH-TZSDA2NZK|CtJ>s%rTcdGNQsH{EhhR(y25t@7ZrOyOs%blViJ z+x0qyk5lx1d7nyp(B)gGa9yA0D_pnhD?IRPJn-uTckB5E!QJ}#nZgT{{6AOxLkho7 z;o5F|qHvwxbecTia_ix8g=;;u3htKwX2GreV+~v128E9RX6wmaivPI^Ul1@6iBF-z zmn*zT;dd!~q{7oq!UHbKmzMto!QJu~3vT5f%CWJ=uJBR7to&0w_{>-I)Ltx~MGDt? zSflXKivNuY*ZF!@aCg4=01w0`T-&{&-vxlno!>GK`~tzP9&COuR=6Hld|z-%SKE__ zqSxivqHtY~j^J)NZ&viAPb<#`h3j&;OK`V5I~A_$|GyPJNAcgQ@M?t*JQ)wTlJTeI zIY!~yj(tsVw>%+Lj=KIgdEfy`6c?pSfA)GrZY*xU9~+!x0xa%JGtaYKxc%PeUKegZ z)ZFL7?RPFA5yJAf-?^-I;r2V17hJggo+U3OUe4J8^IYk|?e{GIC%(!TH`L<5)8RFZ z5q#tEf9SXzS*Pri%H{P3?#xvxzb8n2lE;4E44r@gs%xc|Kz?s3F*l{sAJXy#r6biM z`h6p4AUp9UEUQ%E7(f*bqFj4#+*(Mf! zSE(ss55KZG4%YusrUxDdu!q{KD0Bl=-FQDQXh#_!R6Cks}PD zP8io!wxG;ozx>lON}~9?sAAx{+5ANRck8c)HfrHZoUiKpd}Lw4sQdt3U)}flyeFc` zi=K_|^J$$E4v^c^wANkwBO^K|u!mCYMdeq_1@DpX-HWi;?PCNE=! z?1&W(9L^-i!6%UK)sE$cJKUOaD&g&{aAJY@?1O+MZY@q-k;>1mJ@hOs=%RjJbIA8q z+j7Va{^pBe_WF7YA+6`aTgT_P>u5-;a6aiQKS1iqFb-V(*ZmS9!AJ3*&*|-GgtzkD z&+jVP6FE7y5!kAS9en=ZC0qS#{(*;%GIkbRj5;4G+3jCPhKn`;4~=8cF)<4s z3Wkz%hP0Ay|GG;MGwKNy?j2|0+o!0LN-0$FHNbNBmVscs^AR>u8(liR+EKQlIT18w zPqOk!Hh?&P7#e?Hn@{U$X5S4=$i3qwxjMI|so!dl%yQ2uX}ZaLo5ewEYa> z)^ZoA3LYdf$Y1q-Zknic8SPz7!&DN+nN;hRAqDTvK#PZ~pdcDOm%qz;ggR<6*nYrj zjO#2S_P%hK8ZAp13=V?x%L2^q^zuIw08S+k?HD`|3P>gwR?MajX{ zQ<8$K(}LSdQw}>5vI@H3pY-dLM=nj;`2T)_1|YVpg$UjBfB6#n;6B$)ed zdC7qlMW)=CCJ48O;sQ=QqL%tMzUbfhai#Ntf8!3ODKB}u={c}(nncFBlI%T|OYr-_ zS;}t1O&Gg*Cz`0rqg{=Sz=|;Gvo9(3fWzK7kRYel_cJN)f}I7=QJvgw1m!x_TY`dD zeGU7Dpbk(Rd~qL`X8OP--{&H6J}1k*?5fs7Nh>1a!!zi-+IjimVE4b#HEapyzFP1K z?2_{mjPJ_LhoLC=l7sJ+ZgGzVcXCZ{n5^%Lb_1o>zQCd0o~1hW4U4b0Lic+& z9Wgdsjc(Sv>YpDDF1h|?TpwJ01?u1TQ2&l9UmZ*_)epW5>3IVw(Ew zrN&tN<}NQ9Ri%x-wol+UkT5U*_3~|pC&e4PC&ByNja|XC?xyoGPKs0nw{z~clZh~U z+~L*caO8^i&z6>tS(3H9G~6)=b~@ad`hb7qqGV@;f8&%S=UD$nc*%o)DAPtivHYx< zsr3=Vn|FKVliI7I^VA2?dGX+(CHk)CA`4{DM?U<>R7A@gqpJ+KTY)Lq%_a#RS5motpk*3LQ@$}y%^MTQ7K;M6Uo;}N`uZxg z@$Kcg$mMW26q$n}j8wxNRAgq*6kFml^tWA)B1JjYQ8~``D#xs#gM(m7Q-V$s6=$r! zi`DN8U7iW#=Ekk`(BnnpD(Ab8L>DX1y14R84LfgCqFghmNX>|vi}b{p04r+TMT&70 z96M#uh#BRHVomKBYg{x&OEVU|xjTVe?s8oJ6=+oRHTG@>O5@a$C0Q#_|7@#TJtcW{ zI4QK+M?(jcfUO^Hd;C^{1X=O%_K%B-#v6$$V;ntN`9#R`O_JwpMxNDG52UaNv2kaV zU+;f0{XcvOJsG05-=l^~?Io*o4Gm_V4o<6Z4hE~>)NER%vvsPNN{qAxN~U|xoB9iAg!<{#Wt2zZAKp>^m>QyO|wy2c7L`?!!CEGD^ze zn(aRjCFH=%_B$cxE$ev>zvbc}nNFE76Y!9;&*l;XGVS|sMMjWEO?@wU*wfh9g9dY4 zX>|OA{Z-%N(R#@JV(>BQKrw4Kew^cHX4d~a9Yka6JFQh@k!c%W>1Jfv*?KPCV|u~C$wK73N_^(v%jjnd%C6TyCKFeL2Y20z%CqV{z`r| ze~LVBAISX)s`E^Eq5c%(3Ua+}=l;i`4xij|b;{wU;o;UzgHT@RTCeR(UyrBMma7jO zZu&;JWK+|JR0ebcR@5GBF9&Z7vn(Eyf5rcreb)7r9I6epZ7z*ETtSk z`J%FOLQ+M^{zz^moQbw9`y=%8R{PGT-OeHQpDV#lugA&*iz|`Ta)-|JdoPmWOhXfg z+tWz0Q%EX`4#@4e(%P}F?CUNnm@!D_3QmhzS2Z}jn zHNA&E@eW>>`E4Q{7qOxd&6m6`=aEHKdZ6c)y-ee~Ve&t4`P-?4`JR>sOVUf=8tFO?NePAI~3O5Z28 zcA_3G1PFh4mD#EAIoRbtvzz?y9fLCPT^YAt@g2~y>&mdIFBKE7zG``!AwvYhL98~h>1Te)WIbx9gxSNp_0BP zEDnG@A8Cb&Y-^v1M{!WRpxg`xkT?VpVU%J{ybHy=J+P1viPdfzeYTVCNVg{k?Ef89MtT1Wel;S1Yv5VqlY*ajY@!=O;{Q0uM5;xDYt z*_;P57B?Y)?R#u703^H~z%-_*52PWwa~uR40y`;@S4`lDc9lRD51yv-ik}bf@XBc4 zZ^RcP+@?~I*p+GVQH@&09UQw=wPC$KfM%8Tgx>A=6_s-(<v><(34|rsZl?ng4B}b?X zILn1k7mYQ?^*mzv8yKN)Mojbs$k}W3Y>!y$IFStSl1bzm`YAej;Zs{C7j%Zn-v2T6 zi)3HlQN|urINjqgZ0ktI|Dleg+z&#zI9L+rI~`8i4k)!Fl#8RCx{~&l^ejKB+{r{Q zpYCj`=nUeBshv&TGYYz-n#;Uf^@oFJa1)OYpP|e9Qdx~L4TVQIDt-}1@5lGZ^HOVax&y zI>cZIHKt(aU#RQqOEc}!=?t(YI~z_fs-Tu+j&Yv2_+0}DFeOZIOJCWYw80BUUh`=3kN6J!cJ(b^1M34imWxe2Qb=lAi@;E*WS5PV;Q<4 zDIq6753IIiCx`AyWs!jxGYxTYunLaiquw5K5g1V?@Bi+r=sVoNhDGC`HL)oQ!p@f>(IFZ04Mx#Hbbj zBLFYoKK6efkwKMa@u;ni}a3 zYspwp#`+5qO;KJg`7>@hX&=+ z959q*j-g+9kUGkyHp&e&MeSpA-25pAC7zni#h!})DHAk&3!oUN{QYO9X8W)E7I^s2 z#Jt0Q9i7caw`uC*l97xyDhfCxI=ZoDEG= zg~X8^{6D2UHroy#=sZ2LjpReczRlya6W4A)G?@?&r3vv6nh@h8gG137u;oFrQ>#E2 zDlev6m^YnpCPK!BG6tEZliz&um(Nw69L(cP6X#hjP?{>Q=^GNO zU(pN>STUH-wayVu%PUX!8!KBa`d)~&Gl=jUl7v6|nVjSt|Cv4hRbPV!tY>^ie%jRr z#XPSK6SR5wJ~Py@vo+heP&-OqMq06=_EMQ0;A8z zJtqBT9O|0)qpsO`KbBAsh))#g)Jt<*6rITVRPU9@v65{a9mwsW_^rJa2!tLz!*fk| z0)6};P9JIhwtWCvcPG;q0q9y;oiz1Z+vTa7QlGYIF1w#Z+ED3nv_(#J%5sIdSQ>Zi$P__3f)r@;pS^6Aqj< z3r)6xMF9+;@}iT12O2j)Rh@fb+~^7Y?n(*o*A1UG}QY&gnY?jnkAD z^>aDs+OkpoQR@R>!z*3IoCJ%dsEoaB5C(;cj$B{LjvF%pT=YOSncUUG5k zz5$U3Xg$lsjVaW>?$>Df2{q7r1DhMNPsmI!eH3QwhK|kOg(W&$zIPhY$BaAL8;`80 zTZ~K-B~kx`b|YV!KwN7jux90NTSi5X350y;sMf<)gxKy#h}Bn2uI617FPf|9$1r9B z5~cU15j$ktb2G-aU(WCU)A>u-S9~88Hdcg~h|%{AbR-Xd-{5aQjYbyqR))qW!HX)K zzg0Lm-tHs2V1@TgsGvDv^Af#c`yi^9VY8^rt2G6PSE1JQKc{d^`e5O4C<`B7%~gem z-{G3wF#MRQ$yWkcuf(7e%Npk7c!bHb`3lP{)T8}ScOfA-Pie#?2QM_udN8%HR65TX zH7NykucG7FAiw=AZ|`bO?;9ia-Pz&aSb1$S7C~0gO;XUQZ1?#$W?T!TjaKB2A~=Q6 zaA%m_nKt1C&6b?l%8l#&pnvTH5M0*460HB5aAMJa?o$elAC5d7nn3?*6CQQzyMMI9Dymhi~QQl!U*1JRqzk{aA7wTUKv<7j+PmwGJ|8&Zn$_31pd2 zA5r@-F{SC8^A^4LAY;Os%Kr@URgk--oKMDR4+RwWpzx$T$g)m zv`HCNR64K!F&8xE<(2yU+cN-+aOU>+a2U7Y6@C9mYe*O%IDfBnJ|m0Jk#Q4s=2@YR zRK7_QAVAMpZkQq>OuwY$(yZpkDxJ3;I~tOh${hWkhnkTbC0{YJIf-^|y6HY7}E6gc_^|ov`sV0Ar($59Ey`j`VC7 z`;jK^j#|LS%8$Zb5wf2>8G?TGk;ffc%BT&rLl2ZY+DO_FXcF`X&8xp8j;kH|*U@($ zUlPZh%}e#Zl`<)vGqwKb`B^^Pd@eEp-yGOaH_<`RM3>(u@G11>BVp8(g2VD1Gb);? z9j&J)i5Yh5X+;&=z8U;IJE}+2zhpUODoDy&XvOJt_75$mFG}9GhE?Oe^xl z=5y;Rq0b}7Db;7C)1ZemX~r{nlm4lUdf3j;Is@L*iWz}I>7$C2ikbu5OEX-7Z;Z;@ z|Fz-=w1@+J zvAQ+;oU>s4E3j;6>arOlCQ*^Bz!|_iiz}y(Km8p?qVF*DUi>Hrs+vXRk1Kz(e7X}Y z1*J>t0$0$<>L22Ht9Dlv^6gwb?^+ z_i|%t-JWW9C_>+lj16GLJLn9=hQCRjE0U!(q?U#|&oD9TQ&Nn5@NY~HJMWko3ypqY zj#4UGw-4g-!;5HI7I_D~35x6xQ=ut*PWZQR^Mwpm;^_`sy8V{!fTjy>n{XJ7ZNfnt zdZ@Cb&)?n%P0?%-tv2;V5;BZ4V7G+^9(4}=e>9ak-bcolI`!kaT$=yxE)&iMG}6}< z9gp#Pf+?Todpzma3w>O9gtAYi?qFBx7e**N$mR*d( z3>Hv!JVYn4VoB9f(X_P4e31)tnvc@T3$|{NX?)4Qn|>5q-Qtcc9BWD#V6-3$w!EMd zS=T{}?S`qc%Xns}ja`nA2W#rE;#`DC${Yln20gF2iEW$aN8>{3AH(jsx|jXyy%hB= z)?N|cyMOF0U|LstN0|4}mkZwY$BES+J}Q~43}-S{{=@$NUjAr5UHsKF^^xwfSLKd+ zVyi$@JMC|9@w>-||2O3yXAkIoBc{}B6&^y7*;u(DZ*t*xL+_QopE44z&ku<1JKHJw6uPMDJvWINRu*?BG!D zCcF>ag!iwZ+#Pr)h*#rz`$+#lx8ao{y+jNq?SpZUz#S5ZQ?>Eljp=(rNsqHwcwgvm zBYy|cmz3%=U8G*i9}|A&Kl2m+s%jK1vBKXg_@mdC_Wd8;4sJn$ANfzi2NU=oV>1#1 z?0dV= zmCGw~ZzTfb*VE(cgHx0Z!-Wrc(QW@0TC$~yuT)^x*HV=w8$FcEw4T;6P`mlPZx~h^ z-$LU%G`#=aja3G8yVhRw;wUc(c4TBz$-*l0+`*Ved@y3Zn8sYt6cXyh5K}Hx0myce zb~&uP>DWV|uPMkIkyn&gyxcd;oVHDeLfaFh z>CBe6!>1XjUQCB7yXg|2-AxgE3mb5-a$Q}3olgYn7Dg7&uWR(hi!mZEP=rI9m-}j! zWPvDZ&jMdqj}wjR8-2qT%wHH|VC5xjX`lh8b2rQhTt?@1gA&=o`Pf=qoNyfg+Eiy` zHV1qItnQBvGc0xNVNH$Im(|zBaU9mLsQQW~7q*ZOpVm=vB$m7zt>S1Yp&^OLMZ>o>r2U0ag>S}$KqOq>N zj!y;mEvdta+!3P!oIM^m=j;IF@llDHGFVVuTgQ)9O^X8~=p6F^j^a`H2s&T8hz~e# zj4ZCJUXV~St~rhKuQnW+g!x;!s8(F%n=`+@ZejI;ctt9%4U6g)A~Vd46pQ3)edJ6j zF3tEuxNRLK+M|8LOeNH%Vtt|nxMG{kvTVaHtFNxPe964|k$8cY!~|G^)3qXX3+cpn zBPI&REzU5?cAS92aJYLsu#kl?Y1`Udv#5rN3R%HEl&WnymiinVY(I(uOl;pN`6HJ4 z&@ybj85>woy%Z0=h1GMJ6=!Qe^b=Fg^x; zVN-qmNwn(ei&MKTS1u}Usb>XFf&Pz3w-EKPp(b!PD8~e9`4=&~`7R`$V*)A~B@joC zx(ahf2Je*Gz&U|pH@}=10VSIYnw*%-EJ7|z?c&Qc#uCnN4Ad=H6uD{)&V7fn=hp_7 z;5_$0^}?&Dr5qhE566>oWbQ~1g(M{yn1i-N5|J#DY<&D2A~r@zhBm;i-{8BeF`AW1zM93nTa=4vVWJ^BWpPVMk9fr;VK@ z1y3p=^E8HjO-o_QGV+B)u8l4@gYt@Ng1s3hH^KTv^Qwid?~Jc_S^857Yl$hY=v~4a zOFxVpGf{b&pUbS_a+jA&KXa=WET|4FXhN58SsiKaI&&dJwd&s+S~6CHwvRmhvUq^x`mB&@?h+e@UjM&`s&6=)dgj-FuIfQ36viS zjM1BO1H*Mo<042nj<~}ahiG?K*U?dUlj;^UpeKp(n`%R=8e(B8ysF`X3FE4$OON9o zm8Ys9NCTeeX?YjHMN>GRQsw1I^a-;M&si+!V9Vw&aJzUM@Wi9;`70gjgjhwHFZ@D+=hfE z7JhzRHM)lgB~d{`GDFZWT!j%uEF9@y-oFM(xci7lNj)0BqH!E`+rfpk7g5h04YvHx zZ&)~)M{6v5W5vQb4TeVeS2UVnOCPRoG`Wn)X9SmLoVUnk!qThL6k}=AT`WE-To9*V z$`y}WRMT_%u?YR*#mQGz5A734jPIoR3qyQ}W{i1UxCxBW$Bv`a5n|zSM^z&Ki4`vN zIJ%OB? zeJ*Rj8J~1Xco_zgkvenuWsJEy996is!8G=`cpRhUT%WIH?3jD*IS0Rw878}c;o8+u z%D=un=blkEwC{~k-+D}b&-G0xD?2NYGp(U9P&~YFc>eIwXB3=XTU(cF9)03c-jQ7QOuTxM2h^0>?)Yf^%l zfmNx&%$(K%q0A}C^+#vs009?Jj6>{nUp>elp@_J?0a-obmPQb@EHeP1P1FhL$rk~F z{84V<^!Wyf5|yQ2%p_63oPli5sCPJ3pKmsP$5Pt3jujc!C5JPItW7D;40NWB%gk9b zAefoIYG5$4xOLF@%+lm5kIpO(W#%Ji<1z!tsm;$+;OAxLhvV^y>FhIkgQW2^CB!-^ zck3uW`BGP|%F~l4#%qmzg1#%fY#y?RCq8ngi~J$eMHroXPM5}VTo{%0Si$Zj;_qc< zwI*M9bY@yb`uUk@<2FyH=Zeg<37eVcJfSTiT3nP4ZJ(fP7ypl?6a20hj9!nMIw$of ze>v)08CRf+bYxiWC#28AeL3UjrO&jt%>N(4>s`fvk6@eo@lP&|G98~jBYGcH35<&+ zK=O~JdW%cz)1EDAyUDQ#uNAs~5%EQtS!`nOvubnUJ+k`VKkn6YAN(IU{&gxl+NVYi27&YGv}-5 zWl{303G>f+DjwfYFTr%SPXT_7;qyK9)zX-jFpaYGz7CFKFlp#}P_nV8kd?~gNulNPV0&%b&Lz?EK#DV?58-s*Y{X0DuTWrdL~+rZ`VO`x2cK=O1-e${|AshufnlP`-WsRZvW!n=~>zbrFr4fQ#zs2^!fO@>K; z)j-EV?J2p1uvIB*k|FvKbWen*L+Bw8ItxOl-3b|&DXw|?q13FXJrmRb@%1ltxOfH{6=MhKSjMlmtHD(+7 zg(sopr=ZcNA@MWNC~OM;{w#9xdCBM-)={~MU0^wN|Fb?RWpz@*x;8OAc_{+=H-QRN z!hEEYO$p+rK{;Nvo8!F1yFg7Bh`7btD5m;Sskz(~M}@=m-0N8vwQ z`Co|_>9N05<>0jjJnDtl*QgKrGPzoks9R59uqUR^O^8oOzc?X|!N5(KtCJ>Xu1~rM zzroBF%1Raf4v0MTk~*%h4J=0MFoU`>vi)*jLFQk^edni#qW9;ePqDC%+GCY00Q~iT z%-83;8$9k5e&b1R)l{D7Qxf-o6EbHf?@QDk%S?NmojE(MJwjvs>pe8KG&3z>1T^|d zXq4fEjdBXan?i;g7k%bx>V3=>QRiHBbY`H8?KaxV`1E9qYGTjjq~HJsk)|n8y&=1P zr|^7_7{}T5AD|2XppPEUWdn85**5Xx` zglyV+NrP=U+l`q1Xk;U*nZVW381@Rj2RDp1!|Bv3n)?dspX7d0`uFUu8N2V3bViA8 zj%*{6f1j{v1t}j1Di8{QmM>-=ga2^t{VHiJNUtv(M3 zUMe`9ML}0OssiiB#phdsX9;fQ&lMbn&zHq%&O&_Fi+*grCI~*og#ph|k11>pV z72GGd9OdVuH6P-$3%_)I!~FR63*IHT)!WgCPxKoEx8-}h;4Lnk)`f_EiVGht_&mXF zd!aEL(eqprveGn*?La#Ngn(c z$Nzr8dkh>sJLfNgKOp$=^81wF>*e{|@=I$_#D9@I+jiO~_-w(mjI;Iwc}QTXS$@F_w+#)VH4`UhP2 zC4%?3@L7VFy7E;gIQPpc&gF~`@LixVy1hd1S{J@V@GD&Sa>1{2;jMy`r&E17fe#Pq#g6FyD z9}_-VXixguD)i^N=${aLstbQs@VPGhZ;bbEN3Sy8za70Pe0V&r1nL$1r!M{<2!4+X z|5Wg97rtNc=UsRb_a6g%ueRu`5=a<~PNs zzZ5dqsi6NFMmqLtmz$Bm-8O@QCVJpAJn$cQ;8y^rbk|FI{QesEEgtmk9{BabXOHmV zciXt%;6Z<{2j1m@KO_9@{KEE!uXxbEA@o!5OP6DQd>;wEOK^UNjj(|jq9xLEI&dx* z8B#tid`=X+M{vu3xZty;V<;5*a|GYu!Y>efmkYm4aJvqFr|@YKyhplP`(F84!Ly`l z?GpMQ3BE`0=LNqLc%uCN&hnR`@4G@z@0v&tT{86DEclCp+p}w}9^Mu_APW-qz3^Va zHwgYO;WG$&wqWH&yPIt4IcP|9{6J(_!Gcc4>HktL-O^8;4L!HxB2}-@F_BY zu=C4fQJf9$5ge`ngnadsZ#Ka|3;&r9aUK$nVH-+W|b0 z-qu?_CmH%K^W(e2gZ^Qm_kGt8+WvOC;62#}=XYJWeOd5brx={yTj91(@T^k}&hMab zdk}acIgdfRBE9A38v4JPAK&r76Vc~-;Q7KQOD16aP6)it^`M_B^m~M!-}!*PM)1-z zj3E4e1-FfY_Y5~UtwYiEL&3YwG|&7F1h=;VPbB|c9{9Z;_-}>(`U1nB--+P%F%NpO zQ>4$X5r*E@w_P6e9|(O`k)h}J6u3=-{USb7MjD*oE#UTB79VYJJI@#`cu%pxd95C| z6M-kv1HHQ={LATl%m(5&acHzkxn9zq#EraE{c{coZ(RRL2JFmVC1DPTSY9I1d~jo?@)2gHRq^gqWP!Er}$TX>l9x-P%Mr!L8FSgy zxdNK#m+(SjK9-Ns$H~WOV6z0OaZSU5MGcL0B*B#VOY7>bq#$ugMURLeEY)TJLEPH~ zz#(os0e|i;pR-F8{e`?h?oA4bHZ=&Td%uLhBzfF63v42*Hj4MrEy>Ze;Ig{K`~>Q$ z4U0um3MR36hX@DTswBJ-H|~>vf&1+gh>0R!`1jWYZzOS-O27RjF-9S5jn!LIVj;+F zbW@8(u|cJ(VSIIcW1S??uw;%cI@-NrH@MU-#g?TSDr(skBMdl}?4^l9vOTBBGKy}< ziMC<2Ai<%-)17dbKar!!n=0XBeE@r_J$OhS{Y|y6J zb|pyvjam|rc!!q+Mzu@Z!x|TgxDpuMOU6~U|HiWDMl=csr|7d4Y2N%fsPuL(n?}c7 zRYo>pA@*`oiPY8i+ZSiwC!U5e@GbZ|04ED{$+U-G@6u4aNY-s+8o+o^(NDrXU8(rH z4S$wTJ%PB~_^%Dj`0cp2^bdL9PYCXo^A*99@k?_4gA&4J=iP*l!=L4E-y6I6{8+~S z6#W;9{;vwZL*X9^?&iY>AcKz5C3&6{dFVYiUG!6iKP%6%f)m*Wg`cYEHJ^NihZOxt z4?YtGcgs0T@zMP4z6lC0SN!e!1h<^69{g|e;D5Wq$1DDK3Qqj*RQN+4{C6lmTK;Dg zK0)z$!Gr&s9{l$zKAQg_g@+aY6j`@+>*oZ)-TKcLoY-mpqZMAE_}jf7ZvD*g;J-le z(flI{KTq+$MsTs59;IZptSwjrTA$6=KZB*Za=-v7`U*SJj^p^_mPS?Em>TeH!srYF7Y2GIp z`u|k?&HJ1FdNc21V)=U4@)i3{`8{9pG4Epx|63J)ilQg|TRwRTpRDK$1gGRQpH{)$ zdbnBfA^vu64ZXLZi{zYwKdb+TJoxNX^qNnP!nGavI@ZDIA~|oypXFbo@LwrBahl<=A6#hNM=Lrw~Z+PHm4nkyH?)+Y=a4qLGg1hBhBe<3G zfYhrS6i(lgSbg5%!RKK`PvvF#{7Kvb0fp=OQ|Q5`LeY~v zmd_N0PXKQ7MeFZ$x#ek9^qeoTJ3myo=JSvTpUsM%`20ioJg#uf=VK2(DOk^?%j)Mz z;d8XYHJ_1!lN#^EpUp3=gVW{C?|Q|Do9{?tFC|4MJRQ{8quOKGz8UI}|<*@vNK=dGOhy=t)k?=Lv;t zId>^s)4#3o3st&<<^3U*3(*aqNlO9mH%=N`elM!J=BXHS`~hg;vF%v zgU`K+Uh{cK;kw-47M#kFzLm4(@`(rklaB!rE~3}vSSYw#KOw=be(d;iqQZ4KPEq`I zInGn`lrPJtLE)DGxAI3k_-q#3E$7RM5Ah!=<+w}XTK^w=@HtA}d)xe4K3NLa`Y#jQ zEziY@p5)08d1fnI%hTw=$5Hf}&w7Pxd7c!U%J*KS&q8@`@0RmC!EJsI&<(EdDO~ff z@!%6t^dzU{bB)4h5N?(Y4sRBmn%mTvvBL-WDmSZ zaI2q6(a#u#YyFf8PGol~d8R9R%9rIcOX2j*lFe7G2cPQ|uFLmL!QJ`7%V55&{MM(! zAcbrBj}zR@CtJ~z{Fcw@3je;6f2H802Q6p%aV$>1@j#B?R?a`u4X!g4uH{@SIPur> zyIT~l(|ujx46|U*iz6l~+qz6rZoZxQx za|O40&ZCI9@)fS-AF23jJx@~jUl8BwbEe`mTjBFP=zr^hZ&mn4#phWM{<{>tmgj)N zHJ{^#fGIAwe$Eiw>L)|=Q>1XMpAx}|OzWpz;o9zfEVw(}~P9~GSR@Q9N0RfTU;_{V~~<bk? z&sv`~g1hy0jR$_W;8vdp{vmpspzyhfYSXP0 zoYK8h;WIq=uU330UzYzmh3j&;(S!dT9{e9xd^G<*DSV!iv&)13n~Hw6q8|{z11`$% zZTPc#I4gh$T%@=8__O%A0X*O$`X}*c@reOE;3E1T;LqYy19-qixE^0!5g^p?xf#Ef z{;mL_2LB~~E&jEW80K^}{#}LNuIOhg{Aq>%K;b&w-3r(I7k}5J>#kR=f>XXOSNv}k zob+>-!XHq$wgbBquIuv|CnGX0;$MwFtA{ay6Mx;mPZiuPXOrSX_2UEpihhB@f2;6?3g02PTb@DLAj0L=&$k43)8`3JdeHJ0D!c(-Gwc));Y!7yZZ8E2*Y$a!!gYPVR^hsR-5|I--Ma+0<$kNw+j|wR z%jH4EUzht{T_me0Eij{vuN`_O|=>Zzoi{_TCF;3Q`g z{w$xf6#erGuNT~%-y1yeI~0GC-|m;VN8wj0{`U(`<)!uTl%m&sUQqZF#ph)YJ|8Rk zrHcNbqSyIN%>fZE($7`+v--&toaEH>-&DA6r&lZd*NV?AivQILze~|;{u>qkABz4_ z!QJKZjN-5L_E&{pqxig{_-p;|_uzj_E+XTy_1u>4V1+M3xYgV7g1gIitioSZ^py&K zPT?0R{I3dc6x^+c8$9s41h?|nN;|zz;mZ~OoeC#?TKZ=dzCzKzDY#pnPZho9b5P;U ziqBADfQ$6@68@|{^AxW2Gg{$VKT`##pIa24Mi0DQaI2pp(NCwsTNIyPDV*|U=^s?M z*3V|a=|{`+jH1_k{;KemD&1EFC;e9Z9+LD63&ILZIA z!dD6IF5i0<{k@9*sNs0PMSS!;;y4fd+a7qK;O=y%3m(lE-Qb#~@K!uqJ=7}xcPf0T zqNn=#uJCDAxYkdb2cH`RcguOF;-mThTH$R&Tm?sV5EK9pa}{|1G(D|v46;Qxifbv;bWM`T>?bWaxC z<|{+&+i42d_2EpxNk2MY6^dSuqoykQR}shRbFQM-nJwLI@A{56&C#|qc&@t_Ajr~r|1k$yD&u^#y8g1gIQoZ#+qsZhACZ|5uix?E~J z_+PE~P<^xIzEa_OT)N7G|2>L+75Lclyl#? z;8fq-ji^>w12I!nOXfbCEB1ey4ljKM>sN|A2|^TdeTaz^oo_RygI? z(*IoHTK^9T?v`h(qSt($Qn;hieba-_=ZaqQNh&fKp?vB36BL~EtoxVg3fJS7dlde# zl4qO3A5!?6g1hsZHWEa*te&4Vk3PS`wcZ8`PIBIfKdb+f1$Xl=QhZ1cmj4)q|4{KM z_2B;#5B^Undabv&6|VI*ZWI#3Me=LC-5|JI{<{UY`k^%Fx?kbC9zLx2YyE8Y;Qx~1 zL;A7&UsHGoaI5EkdGP<(gMZp+k~UVpmcL)&apfzxyL@vLy_WM#g|9(6R?Z?1J~t~| z&+DI7_^%b8HwAZ>3wAv7<;FvT+wvlr=$feT7Cc)yFZbZnqUb5Vmd|wx?^Jwl@ZfW| zqSt)xSNK}R=TU`g`Yj6Add@6CWL#8Ux}IbAIbWoQb@;RSy;#xjR`^N}{8t`$%2~|5 zU%xq6aI61%L*_d{;p||s`gaum zPleyB@cc1&z(w*uh(D|6GKFta_=O($d=I=`;Tsj78x_7;;SUM!ZWn(NoXTakqJKi+ zq|cf7qw6_^Uyo;-uQvs!{BBTq3Pr}{PB%wzTOTa{GZp?L#IyX11SkG?D!fc^H~%Wd zhi+%$kFFUC*Y<6;;BNkng1h;*DL!;Nlexp6k-~2PX60WmxSRhDg}pt>qo*j)(-@~TCGK@$QVEH6HtNY z|6hCWnUi4-dhh#t-uL`|$=Q4Dwbx#I@3q%nd+mMp_`v7;zki;pdkg_-qgS4h_$*?-L&SUOBn^9Aw7BdU^YCl?U#X zpa0Zww%Y>ynf7_tgYTsijsgjfY3I=@8u(gN1qiLj4L_!xH9Wsw-_!7X`mG+g zx1Hzv(Er~axVL?Fd*I%7IO2i75yU%hE9hE z?yXm+hyJaea<#e@es1!>GYIn`pX>2w=>KXMB6#xK|4ASCZ-?jbz4RX%Q5gP}k{sO2 z=L{cspAY;oAGkHLF#Vf+;Qc=EVJ8%(bDIx*hY$Q!A9#CdVfyCxTJqcf9v}RdK2ey? zr^^b%+kD_Z@qvHaDom%#2YzmOVf@k)3&X2@;I*GBj6e3Xh2isj;N3p((Vr_!C+Y*A z^!dX0vwh&JeBj%B;CE}qnBVWaec2 z-EE#`9UzQv8Ztj(h=>9Zx%)PR==E2vTr0DF(gPZ$ZOZ0qg=$QLm+wJPcOJgEPqkXl?}m=K z2X$>8+}wBiVIJJvYdTxo1BQ;d*Yvr3xb}-h^}KKJ&Aq0p^Wf(G(s%OU>nG`c)Z@U= zG53)^mj~~PD*V8>C08#<%()cr#A5ZHXF`kH+UJZ*;JUBCxYjv|Ie~GPE?E*7w|EgF zM6Vf#i~GD$-07#H<~^=uNdlMnX&gj=f!pI2@Sdn~3l}BY#!Wka#@BI4S+Ed8*zb&s^lRz5YXDlM5`9IBHgS@1vr)PxJW6B?+^_+p5^36MnghKfb zHmDp&@)$GqH~BBn`6-V>o^w@fs@9JtEx-LQLIP=NwQSG=4hiGQ$2Zk6?^fUx%0E-* zuM#S`e};eazC!1(&Y?)COXm;g!A-r*`x>O1uorc`&hLdWoR8b5VfpQ6^4H}xfZ^NF z{TBq-7EuGx@AaEiph~wt<(I0==-oQ3F(_{+~vwVx*>SUV>dmoS-ro+yP@YrtM_LNxO?s7 z-eB~-%|WZ@1pwkH@wM5>b3#^c6rGgZ9Bk-$uQOyPHwA0nbKJiR`3HcCGXL(lu}Has zutPPZQXotV+sVU0tNQ{ZI;mxm@|e5FeI2kOtDBdvAyjO2-w0wV2T&>ng?X#8uy7Vu zouypoxEq{QB2rDd8a0g)n6pG-A(~6jJOQR@AQaBx)#ts**irqCkowRHzI%#P=MJzu{H~S^<@o=MF`dtO{WaiCm~5bdTu|=;vs5%zd$G-RdJF;3ffx>=HL$NjPMrQ{ z9QF&@=zmx6bp3vW+_;l+Nf`D6rmC{-^nwaF9(51=9Gv;hK(mAq4n839(@T&VkXc@{4SP!ZQ8V1jo)l2MD>MFAba;b)&g7>FA@E>V7?OK|j27j#&{MSD4XFTxF zc<8+912>}2a=rMU(L;i8+RcWauX^Bg;~2R4?Hb~H;b;2b$9&-D`@m=Vz%SSE{Pr}z zIg<~kvB#$fe^HUn0PyZ_#&XT#|yvO2S1Fwe8{e5S>pe%&_ z7C?K3H1p9vZhqQ5q?zygGWn+=&HI@0%{z+3Lix=d%|G;JM%dKf1WhQ^2hf*-Bp|`H7cw` z!FPG!o)L(M>&gAIJ22+WbZO(Rm;Xpjpu)RHZgmg3hi&?z-XAzPYT)oEZ1<3R#CA8? z10RfB`BE29-9z@k`y=e+i&1;v(6E6c#j%kuHMq|`eh8qjgr7jDTtW{cRDzK0zJpLm zLWC6|+dCe9-85|)BKjyyWW~Qgw0=xDk zUkOfkUv5m#dZJ|RIFsI(I;SzYRe7%(>;K;QM%;Zlxw*J8xmm%IhfnPMlarbh*~ikI z6ueaq*BJ;WH&qVtPjwMG;~q-7<31vNbRjw=o|?6##NBA`dVhM$&I?i%yBbp8t!(Id zHc{&&`-90$v6DPFtn(>5HM!g^vQtGDyA1(ELf^ApzDsO3xG~4?A30{6RA|eXzfcs8 zIxR;LJD76H-4jyf7rQe8sU~JEPemnXdKz4j!>+1Km#(;n61Ho%JG`cUW43*q6fJV~ zv*^h)hpl+&USbV(3uTC*eL$Y}U-{}mqV^n3d>5|JM)zIEeX`MgY`VK?y8Ea!7d)b! z-(cr_BJRGSAti}rIse)6rawt>D>spp`^>TJnZsT2L;==>sJn6Se$$`F!MV{oIT|pG zIBqE7^z>WZw@V#fOI$e}6}e)1&x?un={@fyF00v2&uV&YWH%AgcSoMXTZ%Iz&gvGJ z)qMjovc5~JuL_Ple?Bs0$}yBZI*CGWAj};frbwkE_4F^lH0@yQCL&AW>rN>S zP2M>2vaon+trQeb-4y9Ue6ZMYcUZr#7(TFPxb0S~L~w)({>Vl+pu$Nf-4t}{2Re6} z?#G)=au-PK!(Ra5`|tuUyYWiy3t}Ync3@VyygR~G?P15gDY6YoTe~Co;Kj#r+aq-l zjfBQI5_el8P8?b{8VCF9fr8Wyr$y0@yNO6sJaxD5?+olNA_M)TgHp)|#jM&%cSl~; zk(rE;J*LcNfAp%d?LASE-QfNFWk--_!BCBV9xRXY53S zmsIr$N`HVVD`z^&G(PjN?(P;vs%5nlUelkx;%Luyt2Yf1W_e4QVHFVBTNEhvRu|rb zpUCNJ)nB@kuJd%#wG0P!=cx|c()oDuP|)ffivsTFIH`G-q{+V_o#FW->alv&QP%2z zf@Onp*=q;>TED|ehtZ8r3gd2iI&@28deUi*I}lHgt^z2LsvVPxM>_1{($j)l?BdWZ z?gr^z$gZ=$XQ$=tKn0y`wmShch-+cb%1*~3BQ*V(UUecH1x<)6-Ge^Si0FRt{8`58c&B5TczU~)3xJ*17PW9 z`%j=B=-F;t&Yyew@qc5_PW<0xyCv=j_oRlN*Ra1f0=(=)A(S0^;IQIlvo4it{nu!Z zSp6NErALOcw9o3j7U^seJ5@Rc4K)T_{Y-IJdkVNaMR@tyNATik(QuL*gHCdDC~Y6D zf5z(NnJno62aR19cbg;OhSb;_<0x-t+>K+uEj4u51!aSKo;`00mVc+ACRX=E!ZvHwf9@QU{)1gz?C#o+X9q5(N z&xqT58E_vsdQKp)@(}-97d(2ldT&|zz6v~LyQO1nH}o^;$Wt=k2ELXIs@sxuX<#~r zM!F)%(ZR8R;V~`+`Fjeb-9lCPGF%Y%ND)W)U-XW3!G1%3hc5a20k`%vlyM8nIxX`k zGR0DA6u{_UW;O2MV8W6I$9RWV&KAiP>YG%*pCkRA#-OraV}a0KYM8>L2G$Yy~!Jp18cxJ-N{x*T@A^ z^26cQb<y_pYTidA4AdEQGiOicz!-e8s*3wzppTL_K&` zZ+RUc0RXV(Ouk%#^>=9G zA&KsEYp+N959|pI>>bX$;2(vAg{tlD1S;14V5j0IWCs{sc&V%yMMX$2Ld;G4B;Y;; z?*UG)jC|8AUE?G-1f7-dlNGDyRLGzl+9>g~$lNuizUfk-?LLLd?hV=Qwt=HXrZT%p z0Srksx7h9u)F&JpiO@l*$Zn~~7B&xRlCG6TvsdmWm&k_N2=Wg5@q@^Tst65CSBQb} zEsF8v-YB>R|Dl5XUo8A*&cciKmEjxx^mMxR#K#W}94$s!U=+M3UqEvgViCOSwmujd zID&@TU6kBw7*Y&p`58DetN={O| z^erV*_qmZwKu*+ROAa08gG^m_^W9b*HHHxi9kKzNU!LC`MWfciY9 zUC_2@YPa-yX;!qc8^<_66OYJi*(X5ZLnu|HSD+ufy5M4cPAPk!Ni@scHADO_ZTiLd8Wm(@E1HO3sZa+4zAb)+bLlb+I* zJlJvN>|CZ5j}<((1Qk5^hn&jy;NRklf1MW}T*7yfUaJ;)>ANF$V3-QmZ(HSKBXg}c z`mNLUS=VkrWdVUfW}UX*y7s>ig$+Su%(}D%Y|*dQ`6{;ZP#-Xsf7;!4@5w!b-yAq} z@_|?A)P%Mevkm9+O8&?#=X>A5zXup{(rUTc#C8kE)2kz!05yEz2p!5^D=-9B%YyH1 z>pQVXrB(G;`#bh`5&4UC+D7ZTBCMw{Gm^2hzYi9yUbZo+u@f0(@{pc++d5^(+t&9t zSXJAk5XXgs2}|DH$hY!7$$kjI6`w?ewPOTpNf2=EIpOIqPvW1GoD_iobVtfjf&;6m z3&v;HIfPUaf_Io4bl+Tpm~l$-++jB>=cK-l|AFK`2ZmX_OGp{Z_x%Lnankn*FT$Ll z^!*v)?$@W8yJRf*oSkzwX4a_mT$#mI-;*>(3tA|D5{(lhkC2aJ8YuHull}l|7I+X% z9%!g}P2 z%xyT>SpRD0i?%p;w_u8dbN4p-e4=R6e=lVtX%7U%Lf0KjXp*XW4=~_aYGKtTS z_61zn0bJe>mY7gHRU1)5Vh2Et?p7A_F!N&x>>dzoNEjiA!e%a^Sxnp;Aw&m0fICFl zl1O!2Z4bfBkH(OTXinV-UfTmPEGo4+|9(@J@C7rDb-0rr)8~Bpf88)b0OT1cPa!2 zrE02Cp?@J%$>myUGJ>!$4Q)(DOM_UOv!E3>C&6tnUJNc$2*Ih!N?5CxU?Pq~SgQ5$ z$Qm4#?2d2(miEHfI~{mfphT)zUv?A`N`S!nZIih6BMB4epEUr6bizES)&$&Dr~$!T zHbrY*b5f-n5!_e;Qa1@^JhC)h8WmNvYd04(VXXF}W^uzJyNHJ(`}sy+Ic!G> zsF}^8r#jxYty9h~wNBe+{fHY9c4}I=y>%+}MBwbB_-FOb#H5hZ-&QZTCg_Bi{l_k( z-^+h-_vizBOPgYq#bzVQJS2#3K^Bd+d!-t)Xe_d5yTcLcm(bJ@f^1;hom!H@WM!wW zEVYvj6~P$%Wn*e1sZfLmPkaA2IJ?n4aKzory3onS&P09Cds2K16)tJSya{hgJ=!_( zrRf+rc5-v0IdOs*`OI0oJVReNiLG(_^?2&1Su zN@-$#N>k=HIeV<|v@#9|if_8)IgX1GUx!eXQg*934jWS^H72)|6i+U--G49|-L@Yb7aAgEfyb;zwqoZGv8gfId0mJKirDH}%psq^LFUi4R z&$G)H--t9(N>DX`HXF>*hGX(WFstDM{ZIb4|i7gZ*l07 zR+amAwgu%ua5$aen;HOb6_(jBq-OTE@Rn57_bQ9~9!Ed)jzrNksGsA$f{{d~3>-R= zghDGmix7DVt*{Vc$ngT?l#f zjhUGyJkPa)XHAm%#+%&VF1UQSg?>mi4?R_Gfx}Eg|2o})yp1#Q>Fim^- zfiP5OhG*&f%-zbPY5cdb&?7Q=dsi1$Mm9cKGY#jhQ(pM9YnR z4-Lsb@*jlZUcQC@%o%75jnh!mU$eaiJI(qlravJ&PX}_JTQ^g(yO zfdI~mSlxRG;j-Q8epZ6ZGKH&ZjmZ{FCy?=(0Hf=bX*Jz_ z+U(=60@#5zoX6g3qP}N4GvY8}rUjWVIN36#jw#RRNOgL&_!sHKh`X=n?c|pX*~!Ou za1uWveF<$mGl-&L@MCGl9icAL#4uLPWoGBq(oWe;`zo=SVZqS$LblbC&77xD`}57x zR^}9icZ2>qvq8T@Ht3&)rkw76Q1k3`_rP@b^$af&(evDcvTLX}CLc2!hEK1QeMIYm z18#gByx$er$xGZE;x_LHY}}v{Y$fcW?lGG$*k8BDJdyYoTe)OPx;8R7UGY`BIB`oT z1q#8(xl@UpRxc0Jf6PL$O^N*J86$dLLy2rn%Xvi?h&}W%PbQjJTqXBm)1}yOZT@*E zl|X5aVw3de+~2s*4=hfBm`bGP~*qZjh(Hd9?noR_{+i!b!n=pamJ1 z^)#fslH1TuEH!o=w!?2sjlIR_Y}x1TJjYJQBj>Q|>abt;ZhFQ!14s1c_`|L;37nSq z;PnQRjZeDT?a;CvTY&Cbu_{uN{(zlLZX|N{7&WPv80^=D6FnAQhjo*@!lFXB$_PdEIzXd5dpl1qYQGJ~G zjLcRsgZ~~iNhQyC@OX!mLs7_fQ>GdC)7^KcyGN$u)LUwF#Az9jF5!rmc26}Ie@LZN z(z7#t?m4N1id9;T4`FwhE&m?2hzUmP_k&SKT0cGY942gG!yg0`y|GCWcVfR4YvFB( zq|g~~3$2!($#sXa*Q8rUP5P1QnVX+t!_I=r!6_r^L8wFN9FSi{y6IRkCe{7LPVntj zUPoy}4nKvC&&_i2TeRwk50GPk^o;)n2916vQX zgd|JG%n!Kkx)W-9I**(xjg4kS_a)V242KZw&gO%62R?B)nrdF7i!JH|H#WM@$KAo{ z?vtsC+wIh{-(ZHpfRvs`hcCwd|66vd;tmWu^gaX#-G0$ILxY&xtv))EGGp1F z_~sp3KNoY?{D~RvyBFe|t#mo}e?Fb{KnzKo&h3I1a5Y=F1kPOH$ih9(x-~ zxaB>ZTE-cRyKEd}lGWI#&>!6*obir&&v&nUbsGqp{je&zcj0W&*szLl^Fp>ICgdt% z^`1uzm@XycMrKd!ijk0KTN>?372IDZPgq}IBEEWh4@Mga@n-85lTpC zB2S10J26v8yP=>eWJmiIuNa*_M1_X73rKWn45y$k-+A;Xts%Mw9+Z+z2UvYE^m%>* z3K7~*C7E$Z#@V;Sbk1CRE+U?K_mvz!?^`k9yiVLKW$HSjR@e*4}r4A-qabjhbwM_LL(Zs^(T-xuMW?4(P37R^8R%nnTSWpbH$}Se#+*iO zQlWbsxD@mR5O@DFc~s~YM%g3rmcKH}x^ZH#ld)lepdG9o5iBhZHV?yr$pb5{jk~+q z0FCZ*m=GG>*W&JBY!A_QPP4l@Uc4;QRKLaQI}-vIL)B(t=Lq~Q#$wEU zU%Ek-d~lhWRUE#|U}UBwvNh0wF9Xmt1R#-^UX4l?oCY^r45+|Tx}dlkNH0BFvz-$h zW;vX!98~*;I4qm0P4&FD{7Xbe*(~_0waW53f8-o6_pz z_m&McFUByrmb25Hn%5fKm*c6{NEFTs_73~!b{zda8OH$cuv5*y!NH}iK|59ZTPh&c zyD@jt?c8Xq$6|2Bju_zOpp~HcT}45}(hR#ut&!Ps!diBuV(tg*Pki0NszNt$dBjQ+ zxt&RjRZ+k4%x4FVzFECHNi5whQUk8z>2?Y&Hpb)WyCYp-b#Of7F!=%Qjmh_SKgQ~w zOdL4PHU(q#t&t9^cO?m;Da#?d{}y-O!n!WzzN9**r8y_D^wu%2-Yi^$px!K$;RHdZ ztOAt$AcXx7gp(hXSUrnH;b9EGW%pHfKQ`jtDmEweGTblZe3@1K`q~_`!O8~KN&=y% zmKo(z&PK>fHbO2WlKI^s((XcBD#*KWWHb)EkMdW>;A(5xdEjv;UHj8}fwCXAX7U9r zzl)N)tzEm3tYW)fIk5A~Cym_U4$o|X>Qw$LLyA~0Sp)BfK&NGA@&yYA8|92;IJg~k zd;oO&Nq2YguHEVQ*8{s=ci%kl_?J%@xy>!gTqVlA3pfFc(>mx2tYshsbxsgUh$FTN z#&5#vJ3{9SBp^&5V^ijtT)u*HSLTaA(9+#|74km7Vf)}a=xAve?UcC(K$IpUYZby& zt`1dSxJK)=-2C5=YW)ol4KKeyPHD&vz0l$y5L?{+J9joWx${D92X;GZ?{qt`or6Uh zb|3;kay#H0)kpJFH_6#j7A`|(--=t5-lAd(J1qxuvx=w!sk!(QFie0_hZ+plaa`a7 zs#H@cW&(`7REKdJO$ouRV!LCzg~gSJ`%ya@UiV3{0;Dsmr@!+-PK0+MSu~rpF(-`M z0C6y$*7J>dj~ILyW*Q%c*GniXe9bT*sg!E^w}zmqV5Mvg@k~TutGZ8gYY1I{oY1Jw z*;GEAPs2i4+7HoyntAm{p0lJj&?XF>7oIPKpf-0OkzfBv!EWQ?_;I zAv-v!!g04YSa%LI1VbkQ^rjt5d>TruiHpx0qy?$ymY+1VQK6)JzN06Yu#;BpopUF~ zFyY|D1N>+Fd@F{gTH1i6ZSOA-!-RrmAa$9T+IL7D;_e4=xYN6kP8|pNN2?5$;w~q( z*}Qc5?1oeb9+m!1oB_bf3jXt$`#L;oP$NsXVAQm5PS?%kU>ky@QWa>G)zXopD*l5| zrNNXW0JL%gTZAXX2Qiq*4@74@K;~=k8~ZZyzG35&sA^| z2wRL-#p&LBNz9`t?4xDBf--KV5pc-tj7TS)n{NIJQj~RMdWus8rz%Y3?6EZ{Zd7PU zkEuE5KT@G2)aINf~}8np`BKdo{;rOGMB{-{!>b7Vq7r;0M={8BA#oPkda zPKZ}aet<^9AU3DgS@3$+Q_pZRg)m!q->)HIGrv3dC%NH4brd%XhZsMwQFF#mJL}DL zM3dvbE*bC!M9Y;ZAprxXj4d8r0=}{_w6^X$_#Rf8H>=HmWuFW=kGKuoqN~)>>t3u= z8r=`wT|$>D&{I9@kKV~J{osWzu-57Vl|T|AgtHjG0ugAcDlwRPBiI1T(!dVX(o)2s zEt!MblPtkTb6?g~$-Y^WIswA*Lo5uPF1!Ga(zfX&VORpQSq|Q_`jLpYlq);7_We90 zdOww`&_UunLb%Dm`HZ=n2*BHk0uXoiqC*7Ns49R=-u4paL0>k>=`;b$?1-6(*8xsX zCpMLE1fw}SIDQ`pBZJI-*-wpej{V?PK(TPCf4%d0PAIn_!iHFnw^~>c!iUX7k@Zd< z3=_sjIKUuaKT{uqd;NR@jH-t5gj~QB>(i_h<=RlzX zG&&W1dlRDQTh_|d=vHFlxEK#`LYm0ehQ?HA)7#d}fZG((gDconf)KL@n@YuUP^}nj zDz`75$uGmYkcO>04C3G{SjtdoG?^-$AoLu*Sz*IjeP2NGgA@bNj*4?AxDG0~r7}Pj z%Y#>!+aiUYw}*`oFD! z?W)joQ>+r^5D-+ujL)if{iCy*EfgZ)6!l==M{bU3S9O*yNB zEY~3w76;cp`1~C0z_m}9AzAxG%_I}0+*00|R36h(D`zHyq={6DIF{lx6UY)4zr@W7 zJO;0v%nL;CPn$##-T^rT)Mx&}zz$M76lHr|!hUxwi7>TE6M_Eoa3~%`Y zS*@dT<0Loi+$nmPG}b>yeX2F4)~o7pu-6XPiuSlF)d=nowvAUxPe!ziu7SRVV#T@_ z^ZzoDRnfa-J)9Fpk9IXXqF$jRHdZ^cB2_ids(NBXbfH;f!LC#+?cP@bg5PGk`ys}s zKCf7c0c&(GR^<07jzvDR3RdYvt!MMquvhQK+=DUq5Hu>K6kpb0MVnQ>>$uY0W8wQ! zeB^j775V;M`+&{!GzT6(u;a_a_4;?u$PMmE7<#0k)ij3dW*jY>2`%l>*GOCs9O!Cl z?wQ}^d7Lf)tUjK%ftv$18P5#Ekic-S2Pt>i1LUX(xq=0RDOs8U3(aRi zdURy)J6dmZ>4^h#Q%Z1#f8cFv?0y3%b(d6V*bW0LcQ35eux;*nqcH+7iK~;*jmg6p zv9F`|&rQvG4OJ^2WsNJ1Tysn3FP!vwuyrr25FHCYX*@k;^uE#e;v~g+qf-}Frj}F; z{;u#a{x!_B?EHcXpPMd)^W)9pRi8u`KgmKw8Hj8ZhZ{oA;R0aGk`oj4dw=cZ!s2Bx^p zzhl(`*0@mQhr2+BmLU4bVIOTnAH7K!0i|vS`-rf|4XoU4VjmH<-E~F_yZHK_B?Jer z%g(QK-cW||#mRE5Brt&MRp!YLZbeNpJQS((eFil+k^ zH9VUy^I_|?SV`3%aSv&dk7|;=wNL{?KLi@??i%yw%xJ)!w30*Jz`1Gi`)~VAlT(pW z*a5Z>DQ1Ghs;|oG9RPdUETQK8Pcq#?+Yv(nT3K!k*w1xe*csSc1exvvMooXu&J|UI zOXjXg9xdrS5qq1mp=tg81UnT^2UeXx;|ODoxXY&}kA^y*b~m^K4es-BF=~(Ci0SFj zkD+QCQn=E4=dM?va^XS7M}B*(U3=UCC71Rth$PCKq@ccT1l3p?*r(1+hVQRXdw&Ju&z_WdK9=slB$0^B zl9vA%v%K7k{Yf5!gGpCqgv`D_3O+>uvogkcaJCUNyxXbYGpljzZOD36v^=k8zY^&V zZ^e4Y#k~>P%ZL&+9y6%-vk(m~RaS0dK6n>AJA_&Nko*7_a#+B`7sfEkrh_m-a7UjC z*vb$3k<;osZG;Sik|<(|edPtzmIjCIdL+@X-~i{7wMGD2FA$YZ)xbx$;Tv8Dri!pF zs)i&JqFfJxEtkC*LyV`wWNS<9lJH~zi_qSHC@wv+y4PbB%=7c>S+LdpV;vP%aei5% zT(hHHb+{VgALwvhKu)&de4CtXyO3aRyq(JcYQBoaL4i^Fc%WLTLD(Ej06T=k3obPx zuQc>V!O(+4!z{R^M#{|*)6RgJ?c5nDfoX(=WjoAt+_2?7!j_mfI2`K}eER;!ASlZ> zm@?zSlPhIlIUcm@w|4#w8oM0$aX1WPxXPxSgJPchO!_=TvEf1wT*<(0P{upv9v<_I z`)8ZhRTszxc*6GOm79+uD2MOe0e6FtkJTUUl-&UwvUr0h`buJ;TP|sUm^TX6i$nJf z*lYqu+n60s=#5n%%{{e)Y)4p%Cdqx-O)uYj*tKqOiMGmRa?b^W)%fEbsrqI)to0*dyne^h;6gv;if zmZ$77+hb?pyolBN1i1qD6tZ~BWAT=!IK5U))ehwK08brN`maQ}O;8?ZH0C};w{bF5 z4kHA@YzIp}6P$$g70r^`a!gwh48BTCO6R4UPlvGLvWHbCaBDPHuOtiK7a`T`nnFXq z9m9$c2C%H`RZ~N4bNYwOv8IqfX`q(J>kn9cJZ@3{nALj|gvNH?bXuOy)=ARHN)%IO zytsCaW{20?X4#3Z8lP$B?2|oDVfEbt+p3^J$9C*NBHEE#TYc0P_WdPbN){#P-4aGJ ze-fN71kt9@H=?h&OJuEuDxGAbL0W{%uI(c5(Qt|MRwlI4DvghH4?}8 zIFxx-;#ns)Ebb0*E6;{xb!@3Sz)3;!2+TDsR>st`HnUMiRZnjggUqDSAao?v@%yXZ&T>!9Su#b)5 zq^DpX`){3hi^elEM20^Pf&G!ZV`q{hi*vPVx>!~|MIQdm?+iQTK8-~5uXmhWbv*p< z(LV4Ds##*<6)+aFOufj4Hv0!2`yl!1OjswSa*pU-j9nNAQX9ImzvL;Rw-kd*uCkcv zu?Xk@X^u?dIUaaOl^%yDyG}mP>^%&650;=YYo1kYs(km(U}<*UhP9RZ7x(#e#oyTI z@W$~*g}u8GUb%<=t>14?K3bl9s64qn3_i!=I7u~Z^ID;|@&noB`=cotZ!>E^DNW+2 z7wbLVvQL)}btO~jFGN#t-Y~NakfYgMgJU8py8^4rSP(Ad#!oBi$inE}_!$^>*1_8d zKMW2Ij6F9!NzFZ&oOqI;mdCa*@4$Vb<`)>mbyziG9|zl4kQZp`KdA4D4J+2~nFEMsJHU6ejFT#!Xy!ezIQPuFhi8$qt#as)Pe<_UWzv3 zK{0jox8T6a+=Coq#L0Cy(igcXhR-n&<1BB(fJ*-714>A7H|)~gf5uGt!jAO|W6x82H3%?S+|o*mwn5GMC#s{jfu7HMVoFfd!JVTNXjHp6*6eDtACOJh9Z zd>i%&v5&BPLCtHlo3N$sq~LmmKakd^+WN}21iA`s6>pgpnT7>R+pn;mvnoU?w2qUWDWg&^qA~y;`x$!J2W$)Z5tLz&!QZ`lfsZPq|!mym3#7$k;1el`e$cU;>X9eEMnU)TJtW#0oV1xUJX@7_f7gzMkiFAoa ze_5n84oOx*H;4m!a5nIV+tf!hT2o+0<|(j3Z!b?NG%a7k?I&tqXk(m(c*}e0PDvaO zM$DG;b{NQV*e(v~gN!Ui1VvzR^$#$DP)TQ+l*-K^yGj=0J!mIIu1G@w$3nuf?tlP} zrNg*f-0(^izX(yJM--p+plN8o$}WgASdr6r%g-|k%dE`J#9$n5#seirtL``qm27CK zgk+Pe;B0E>58j+Rf5v?~9LtpzdO2pf|JnJyF3ej>e;QK0=l3c<#`(P(kTdp4A$vPh z&Uw{JN3O;5owb^HY4!ypLTXsjIg=<7v{DzF+VJTZK00AhlA{C8&< zZCA)7gEM}@r$jJqP#V)qu_vv!N!^X&;`#{-=CrYz0n8Zinm||3k)9pzLI-iPNrdSX z$nfs&BhlnRwENEhNL5hH%!KGSOAa-_Nn0ExNDJfSYfhFuLH(f*=Z~yv5iR{)a``i?d@5)ftG9>bs9dQi;ETc0Tl!a2rJ+!uTCm$s z=l5(m2#1qeatba%)q*}n1di?-VyPm`kBMthj*T0yRk<;+seBi4sLU!T|GOvGhmwgd z=#@!4t_IacCi;E|2?2~B;6sU^R&`t|JFxR-T792EV&)XIl6QO?dkXv9Fs6O%8;EV@ z93*?}FKjLzAK%Kyf7j366p_gM9m)RRPlPiMGCe!0;nX?E1~)@1tNgUv@*|YsVh~Fn z{G|1Ze(U$RSEz^6v>S?K&Ii**p47PzGx{LFliWH?uUd*XQ_5k;wBQU%JlztajXf*w zPNErL<6(f8xR_`9l+mK z*cC@0ewj~-7AUZ!&%Ex{dpNo9yr167Jc1O~?-=_YdyTP31+9T{S@~ZM z{l#N!@7nH@?w?_q2+L4&RuAvh;W7JH@lGBdZuQ-Zz&#ZlK|QZwU$I|qmy22F@54Ik z{J&!R0^$AEX`pWpdg)DKwa57cj5wgK@2*7W!54_VU>)noOw z;;u1U&w^+yyN$Gzf`C{;Xkchec0&(hn+(l}Ta~5MP8`1l_p~oy&Qh&6QLV>~0fAzh zkTWi>5#6*r&Pd5s&6vfYs?9Y%`zmK=beN?J#-!-i9HLR=WU#~5!UQzrFA*%%x{3RQ zbelWtrnfv#eFr}ttPrSss#vJ(=Nkw9QB>34P_y$-h-Q(hR^aRPne{8Er_oD;kARI&vzaiEn}Aa`dd@e{NVVpBwtmU*+;UCTrBNtK+b%HMSH6RUP=Ky*G@COX_D~g3tQ;G!?)Dg0l^3C&zbSkXrR6V$V)k*fe03+wYeQ zXj_6(JkBEtz2Bhy>Gf{q%dptYwe00;dRdO?H`7_f7>lz_)UPXV5Es>Gh~0N`g{`>3 zM~vYP>mK^s+We&57dg|6ROO#ivMyhqq8Fsb7?Dj906z|GDu*#?IJDqc)s}8Z{RGhW zq5Pc`?oB4|!BwcYmPj;yzT+3Udj}w9zg$ zPme2uJ1B!f*T0|c0FI~oe^YSXI`~t)KJnOZ$yb+(a~4WiZQ4}R#KK@vdi1LH^kjVK z@-)7NzS5lQFfvRRXs-=)Cxt#vZd&S5$ckUotCYeT+xOSCybnL|?HrF*Z-iO(co_VX zM-Lkyb@wlQ>pZv$g>+LouzFk;iFw?iu9mso9C7rJ7=fd{hP3n}PW?TP%*}-Is#8J> zeL~ImvE=3cR@4M;8 za)Jj^p!QXHj$HN@Yj!@!>-}h3!I=$*B?P{NHR2bf&AfAB9=%|b2FFPMTX*(bcjD(9 zwg>kI2kIYNK7uQ}68AADJsI}lLJV&6}|?Zw3bj*P}j$8_Fsy77Sj_a`ef)J3U)jxUryZ32 zeLR1>|8-m{Nu+v4RNrrpi#>zb$CYNeat!_M(GM$MUB{ZyZS@oa@`EDpy1U#*8uTe& zPIISunCP{j=%J8dgfeH`-S1HgTK~wV89!@FPdSp@eK>I%4rnA!(L|7!1OLH-je^~b z!C&G24f(x2eDs6ssO6%DSIDID-KqS_so_T>^L@^1+4lFa-)H;HhbTJpH6)^a@=D^; z+P9>4ux9p6d|DRN`Sb>km*rL@!VjNTN06z&mh#BkDl`BeC%rb(#W!Gl^WoIIlmQW7 zI8*64GaflPrieLUvy;kwbX3Af7jihR_U6ml{X=w_>~r2m4Vj$83)y7r8zYy$?)GDX zxgolW0k8%?hAIbF4Yyj;@sB!yN|>p$YPQ4S(JEYF7`8%3%*N=_z6^XyM}OaSAZ4h) z--nfw;Nv=*ocGTYR31q|R2%Ck(5xQ;H7k4WD9x5HQ_iAY!u_dQR9B2!F3qugg=TMT z!5a4OX7|A%EXomtwJPiYhT7FE0H(R-{{d+MI#2c)@cAZF%VjrIrvrTmE;g<8F?=F}hT-@AcSy~-A#7tJ#a@3(^|dT?sRVgh z@G`WZS|K8p(<2ZQGrun@*F!~}-MHahedoTXc;HY7hp_SENqqp~Oiyq-54L7_2K&ns zReTSAkz``#5)u2TkyDxYx#!Jct~;0tQWfi@?u&FGQ8A0iDig`B9weVQN=t9+N`JqA-8zZx= z)eA60xF_PsF!v7b^Nu%CYmS##fkZE*;PH@O1_Pd7^jRb7lRsdYo-F$AGs*W$5+~-! zEk7T(0#WbcCw$(sXEeB*c^T2eGu$UVml2gDq8x;IKZLpba&;?_{XP5p+23!?*Ee!M z5a`o`$ZJiFMmF#qCsrSCfbh#-=w2cgZ0Iz&_$1|pf~9zxBfFmBVu~v%PA)cwj$Z#` zyz=bCYl(A=bh#VTQE9mb&JcWBd^y?rMDyN?gNJirp^SL9PSgwRyN6Krv-@rC@M}X*FZzD3|4%jT9D)ggW`*5#DtbV_hz6C5g>##?@5^gcI8ydIzra?@U zmurLgx2(Re0;1=4IBl0tv{RpiG2Oil+3ocCxN6J}HM)=D{Oqd1lQbT;#Zw*l?K7*J z%RQ%lTj#5$&iI{|voVak{DpX9$2xBH346t4Z?*bBT-T{Se>c{~Z~G~k z!S&*Bc8A>x<=8hsnHPk7&3o92kuMbZg)(})vZjBq%&fms6)x@%h4bJOJlE^ic4MvT zhHl_xq4E0toqu=#PG2xt7h=$5VKNF6gl*-rt;lnFs<46e2$wPVJ`0o2kI>3bbBYxg zb2a6bQxY~A@aw_v(4B+(IPlH;lh6mL3DaE&KQA%HkjVN^Fk{RD`I(q6QL^5Es~;Wd zd|g)5e<(j6P22&*xGRS+f%d=HKjpZwP^;{fhgezalr zvX<@!xr!!@pp1kI%t$x_h>;3uN!5SanVOS%tB;2gIlubJer8ae2lnQ<3weC;c{UjP z*ZfFi5I$afB$BSZ0Uv?HQYT@UfLzl z+M6yt(S3!t;MiZHby8|dUA^jr3`bACKE@EiF3xtV`w{d2 zc5xi{&s!0K%u!K?5yYWyte)Yi!s$u4Nho3P>Imns1Z%_aCWmmQ*3-5e*a#^PhSV;yTe&yh9?FOs+R>H>(SU>N#8a8y} zHk0cW;+5l=Q#2<*KZwe#~QlAc=wH@9^uxgQ(8=TWO(@{W=&jwcX-OgAdp0o(WQ( z3iO?WmhzJmP6Qc`{`2M=@lpA>{buxGPS5u}2Jmsq^Zb6#-o>!FzGS>sd^;6b&4y}X4nMjjWik~}?4xYN4gNF)?ee@X+ zHJd7Uo1<>fUDebozaUkdpM~>U+=eKL`;6H`Xkx*`c^!)A_J?3{bGEq#8Msb_|OI9HGBK&W^$Mz=Tm=Ux(9RxszkBxSxWZq8LE(ah%pSaiO0Tr4`t-E3oZ5 z_@6a92k)4_@X9&u^IOC1ZCAFn2Ri02T@vnG*xELC{=&A_@S?@xg^Lp53FE_;c62bY z_1MI^TpDp(7R>4BXlo5HJg2=qTpLczxwO4)Nm$cVMa)^)8WwUyTQX-sTX@O*YuW-0 zix;EF`3u8eS#oCh($2Ya+Y|!}=Crn*5NNqVm|PNG(77ZLzO;>qKdc!$Zrr#t{yAIT zS5aK9uokees3kmi&iwZ9T#!bhVu0li;fMfT&z42)ixv+l<>H$0bz{ThYpcJfavKIr zhAUd;%#oHNqk+WYwzgcXC7b9euQiu0b&@EnGhuA)KL^+r0$JRa=v<7B2rL4TTo!bO zL~7YVbzcgYKD=!4oU2t61s2R%8m!x*wa#5qC!?e(Xw#4H3Edh|1JW`E02{dpPVLpT(tw9t@EjgeV8|td# z>e%qQ^A&`BH-2mwm9G2ez`XfO5{o3OFu&xg`H7Z!;l*ZBv<34Q&RsmGB{6i|w9Hw|ZZ~ar0u|mzJt*n?&IOmYExw?o zrL$vxTk8caiI&bw+m`5zNdH#bf<;%h%~;sEq^)&|j1Uh|q_ZQM7wLTQ8O@&507s2Z zao9GH%LP8^-|U>TFfn!Uq6JexFH0tue@J?k2GR>BXbhxJoxe0&Ey11Ew(wiiCMyJ{ zw_T;Gr5P2R>C6Nazx44Q`i1h>c+&IB=V&kw=pR$;Me`H$rlBW^qtc;Qge!DaUJoEW z26Xmcf)c!xnc0H6fJLf1r?n-fP;&C zw`fUQ80CR|52CO%|C;#=FAHNR%N!?~Q;(*6J{B)(X{oV9RhgfG3C8e>jpdqQOx zqQB-WSu+2!g(R(uMG03eUWB-0W{!*IEEWV1E-Lf1yo$~ z7tFb=?aXkiw2V|oW)x~76qHxal6i|d+glfYEfKz~EfIz|Vb+x=50A5p@VX>CDO`6} zcu89VVyBu)a`@xREHESo#(^#c{zR_I ziuw?`5Kg5c(NR*1V-;o||1!zQxC&#+MB9ZgWjRZ}q!{P#hu%4bKP~#m!|}5N)22*0 zGh8)e(UNf8xC!H`$4&ft&8e-eZDUka+Ec7hgo4+6D-c{-9{haih>|t1Wvc)iEf|3S z{XcSRr{IZgbTONMo(Z`CSWzpn_Ylp8MmJan6_Z2ml)lEI7 zhz5l_dnjtrKfuqiEi+|Q@rOlab<;PNRXbbIXb+>+9znA`igtU9%@LS|zlSxyU-%p% z$M1t_W&4YYrl73YF^o+cRkWwzZql%; zK7q(b)u*edsIg$%#YPpkmX@tTMb;E8z}qhC0^Kf<{7}=stL$UZ?<`2(8C6_SBxKhV z6)n~Di@!$@OT5NFS`4J-@$Z5KQ=C!r3&QPD-|>M%NvsQ=SGGQQ1>QD_RC*#o{_q^&6}KN%=l5BkbT9ITXz>oySh#>b;o{F7pEcI*IZpz5J6nx*OemU4Fd zddAR5?Av39zN6}So2IqB04>o)IsG~fw2Gz{Bo-S*zTVNazVOlYjFsKx*Jjg3ag0XU zhj?(a{72PsTG@`^H3eG?W5_NpdnP!!Y0m{GhD7x2U14GEE)4 zIut9bx^@_pcXD`3SrxQUb|PsM-8z#g*A819N*DJQHEt}cg7yhRbyh-kmP2)xba)YL z=%*@ZtuVA!7Q-2JL4kbBz)BsifZ@~o(e-BE7Ja{9f1Eq2XcH0&%nqaG70fWz$ksi& z{P#KLKU%hm3J+ZjBAVB_!I}UK&zGP-&Sx}y zqlPzWc%_DO51e%F(r{zfy`bUc8gA(C*YJK_FGGhNPCDx~{0oTlDMOs_t~~rNX!vXm zH|@ipNF#nU56&|Vgoic!i;8^UTn$H}Jcds?>!nRk8 zxS{_O4d1Qd_=#qD=+77ab^Ij#{x1y=>$s^eqs4)d8anh<94I`@iUV>*z!2mOpdTn8 z&uZIaSb(OA_fa)*?EkJ%gCGT9~`x^dM4x~aN$0Lu?D8mIlEO22Sol*^#`NKo&M1hwC zR(W6y^3I_^fqwj=rc<3qUp^TG|4Z`Vr)c{3keuhK*6@8E7=veMcsP&FBwg;DJosb{ zkLAG~O(&0h;Cz9PJVpaGYdUN5=5Hc>5IF z=kz={kE3D594N_yiwy|;OY`7&OMF=1ygazv3=cYWdGLOTk32?mY|(T&^6($l@UA@g zP7PP}CeP}5M#F!dhyT2WKb{AFQNtBqhDsptiiYpa!{4vr@8-eZ)9?{_CWKm}4GUD} z!HXn5EO1&LyhOu!7~K1mNxUR5FR$DRjo*@o|2YkB&Vz?Fe03iDs~Ub&9(=5ZUzG}n!Rs`f7hvQ+#euAQDx35T;29ex3q*i?7lMDs2R`2izSIZa?E}Bw2Y#y${4O6j zztJkh|0W;!P9ON+eBdwpz+d-)AMt^6t$iXag*AF&7GDwC|6~o{{VCNe;*&w}Ou!4( ztI-GkT_5-YANW!q_(~smpAUS!5Bzo?_y!;N4j=gQKJeFl;0Jx+C&2VC)Sh4Pfsgfp zbNyO~PLmIux3#n11LIWxZdR|rl^VW7!;L>Ht>ODMTzp!{!*zY3a_{zm-|qw8?gM`c zaPrwPNiitCE(Blq!9Sw$!{;e{@k=52c`S7b@i_r-(vM!K@WuCp;CVjy-_`g{7b$%4 z0U?+$a4yjBh(8DKULQI?_ksVLrc>P_WRx!l!OcGS&uaXR%M`wvrvriaeDH^3-Oc)j zf1vQiAA{iM058-&U-N;V?gO8q>F?M3PvWBi{fm6?FVpzt+Rzt24DeU@;Qy-+{ANvO z_LZt$#$LYD2Y-{s@3>0giys8RziN2kpA}sE6Aa4!#ueOCtr^!6z^)E<^|-r=eM0W< z;!H(LTYGymHtS+-OA?D0U9Gq7ree2a3b(SRAbDKJoW+T8HB4fr>@MOZm(1;4*mB7w z<7&>BSX0AIMW0Pb4`N;I_<$#R1~x%G(b|an(R;O}&?^iQ~uDdyyy9c&jjRLan#liQ`Wn8Xa2D z_@M<&7*fHBwG++=jEhgH=D!;L8_$2I^It9hP2fL4naEHb|JCzfjijJU7?!m0lC?(t zmn=1ktYjK5G{*~Myedg3jF)0+6itOAdB>|Su6OpLI*NJh~%wR^_6nbw1f+tTFHw(2Lyt^|B~x;p>Vq7Jzerb#F#31 z&rp~uuh2O|a-AW$&Jb#6NZvCb5!2!qOt#~fTrhR&g$>P@G~1Ko4VMJwVz30_I3zNC z$z>Pf)YRhniK_$Zq>gMeHmdz~jFOm~B*Czd5re_R4S5xf&0o;Aa0xc8muSF6^ILK1 zL?t?H^Dmp12&nx}4a2yN<4l&xJ|{89Wb9}UENENM(s4Bb+^ICB;cQJu;*uqa*0#lq zar~#ijy^I#5uiRY)Q4=tdn(kFSWMD_GnMB}cuW9*3&CL9%z|X$O;S}sEPqkQ)!%AcvZ%e&@JmSJLL7LS%ASxz5Et@5M6P2r1K*mn z@N)DbI|yA%9zFFU4(RHPEHl3esb;l)l{!%0qRKf`Y3Lz`F52g{WgAJts8c`!>e!76 zd$>?#3ZdL-kX#dbPkB&f3!)rm$(|~qK=62pBnh8#%!6DWb5w>$RWxxA4+T%m$TUze zWxTYc2q%xApaq+F>LR}ADk-zj@fmge1|?@1Wn0P-qJn(tBRwsP7U0AL53ooHMAiL~ zJAK4nmEI>WjDWGJHcw8OSfj|OsrQhhO&~}yXkH{4WC-g5q&3a)C6gDVr_W!Q)dtK; zS!D7t_(N(s1(?JtaP|sNbiCh*E&6Hsz-JNSho+aI zbG3%^#ckpbb$;XTApENye7WWjah6LH%h36=rjrln2iSb_%Pq!wun=7N6V&zs`FT$B z^LdR=a$m!rDOdRu6hD`H;K~nhES+;abgDe~F%2jGUOL8qK{)p~Ou2m?{DmI)4IcO+ z58U`E^4p=`!;iPVTRreG9y(@^I-k#fX#9No2R(GW^pASr%wy^mB4IrF^gpHH`Shza zoc-dZf0_q=D$)%7S`FvR+s;!w@D30Dr5-pIU-V{IeeTSfH5p32Qjphf6#I-|c~W<>W0Nc!(Rlcu2>KU#sDUA4C5<4bSJl#Rs0q zqhrn}{m=vdI?6WmQ$BR$8aLn>ehi%lJ#@x-=xow{y?p$KJ@C^!_$TU(OSXe|-ua@2 z=hyc_ANU*%H|4Ho0M9%Ryc%&+-vt`Za!TP z!Ee$V;^gOt9{73_g|58lKPp-5xq#`hW7kPxsK@;GypwzfXDK%RTr< zJaF$gJ^3?0!ozmpre}rVgdm(f|`K| zbYuc3aYaQXB*CD8L^4ryk%Ud6v|$Lkx~snEvY)!EyY8#|dRbIf6K(;oKos$gc*__R z2rf6de7{qdnUiK3_ucRRyzjrBXQsPGGsG;28=heHh8;$EpYY_I9aIIPw2AqrZpY zw=(=2hBq+0S-p^8=l__(iGL%be?j3|Z!75pVI{*a#I>$(8{=~a!~3ZPYU0oB(wPdk zmuDEG=l$pkh3oQYyKyzc^H{#uGd{dLTN&QO==-S`Q8a&D-%}XwWAvvhoa%KO!2$lFe95tU4 z2MSow*E9TY4CnK=R~_&-9PphCw-|rp>{!0MzGpL>*EfgZ_b@(%4Cne2Qg|=WaywJU z=sBO?F`V=Hn&Ee{eD^547cd$xbbmR>@QWC|`y5;#*!#=r3~xrfZkO{M@Zk*S?UL_+ z7dhay3fJWi(h0(RhI9M2kn!RD4Jr1~Q2uV%KncLN5g==~0e(^Jg z)2Wu{0LF*QGxvPKUg!gt+a(V81P8p>0l(e>uW-Pt9q@S$c#{Kuufpwm@`wX|3f)vA zkiJ#or{&gP;dVZw9PrB&uG{5lrRP^LoZlChI`9cG`b$}Pe#`KafNTDbGMwMvy})oz zzmnm6zL!CZ1qgOIWGdV)huazb9Hi57`ws{DXB4jGldR+P2g{P!|G zRA0^iFvIg%IeSrKAW(hzc;`{Ly}o!PEP}oKK8E{2q2+Li1OF)w{L2|1Uj9mk^Y*&M zfqxUD=X@43oa@QG4t%yToX>}MGMtZVZYmrC$&=$hbHE2V;L{n-=k3)D=kxYdTC72! zeCzSk^54gBejm|yIEWC4p7T#*IOl&Z!}&aX7{mEI{33?eArD=i%NWk*`QJ0ViP0~n zMnbUb;VOmO>w7URz910J?RkL%KFI;U+5w;GfY&(S^$z&WbhCkA??-bPJ_hkxZnrC( z>c#EALkwTa=)Yq4Eet>XLR=sapL_As{0kV)>E|(=x62}ib2&f4@cS75T@2^_=rfwU zBG}ujo8g?#DYUqt=zoKwF8_xN=jHjv0sp}PpFlTb2vi>X4CnPNV>p-FQigLmEN3{E!`~Us_4ykI+((md1S&t*&vzMKk2u|4 z{b*8xK=e!S)A#^|Q@^GzsPQF?p7+yMhV%aT7Q?w-eavuPFC!nBAy9cZ?$0Mw;=CW# z<_lQR^M2IGaL(r&hVynjz;ND_%c|ZCi z!@2yQV>p-pI}GRjXgkAsKk8;U??-MD76QqK>%)Z(_+p0he)JH-dHJ7WI4}Q%fXMb3 z{b^u0*Pllf-V4cizq_;`#-|Ray4|l}IJbvSGrWn>|DbT<&)fY+hUYSR*En1tkleUl zWh&fW&W9O2m-8PP&ddK2!+H4&$BS%5zP$Xc4CnppEeHHV2mBic{09g8Ofyy{eA71{u8U6sHpLH275J(Sa;iviB>VPkBz+YfEm;ZW( z-_7`MW%we7kDGuC1S$`oZ(O19LBMaqPnYumqv!UdPY^^1#E18nbO(Hp13uaTpTO|n zArD=icNxz0`CEo_`M8Uyl(L*$KFJK{@=0Sj@9z^C&inOW9q{`CpN zd4KG5!1pkm^D!rh>WX%$XZb#-aC`f%Rk-d)%hY)NCd2u7x{2}U{ixq$nXjGyK!w}& zf3O2S!U4b30Uz&x7dzl34*1Ou_?-&3%cqgyeB7}ZA1gW$0EUz4 z()`a;ILVpI=LUvXGWwepZqN52M$hf!a}4M9Euk1p5h!17-+spM8pP>x_GfsA;lmlu z?eIi~b9;C#!?}H~U^utWa~aOdQ^)WSE6>*quV?s_D{+Bfms`2Qb$iWM_OO!S+#cSd zaFQF>H;d7eUTHo{8J-JV%ku#TK5G<}8U7H;s_VN`;dZ&XucBJT*8Oz5Br%+pzBHec z6mDNyIx=R1P&=j}C`;YBQ8KjY8!s)pg*4%8{!p6@FT_y&b*J)frZd?Ulp zW94~I;dVKE;lO`4<3sh;{P#1Q_oKrO{C_bOi4pAe@+;h4ev{$(NT=JeNa6PKmos`^ z&Ps;!etL@opT9DE9?N$n!+Ae?+X3I^fOk9K!>&eV2vjd_=PzP7x09DKoZHED46g?- zEw@Lm!36^G=i^24wE{k7yttI%-2PwAaBlxg7|!i~CBwP>4>6qAtB&EkUMEeH<+STh zp2DeK_4w)fb~w;?GJ0;ub~)ht9dOrmvOJV8=X0V1p5}n}cfbcJ+}<$&)2wt zN-4`Z4@b@aG=?u@xR>F)|BiCN%NWl4VRk#V1iRc$Rk)ph2E+ON+Bpg*d2;@x4Ci)f9m5|+ z8ZDpC8Q#e7T@1gI;RhK$o8f)SaDhPOc>q7nKaJtMT{0QY?c1vizm@Sh!f@VRzH$&D zB;v>I-UNnoJ9aI@dHc?0IH#Y_aBjye2mH4V_+t#`cJEmSe5C_^^Gs1)QQtj1OH}*^M3j}h1=`( zz61W1!nK?aA#Vyh7+#EPEw|kYx7RnJLL@uJE}g7!JO6Zs^KtVmh1>ZD7|!QEQxtBm zZ#m;na@O^#WH>D$=z874`15vbV)UHPVutha?p_Bz&oZ3bnNIynN#pVQyL@Os2)xxK;gKQP>V6D|;l54Rir9Pm>e@XHy_ z_53=84+4KW)#Z7R(Q`R3XE?9dUl`8i@VdeW+4yf&xYpi%k!ne?fSe& z;e$X+r<%U^&A33Y^G{|t?=L4S+|GX@!+C$Xis1{9kIpy5@W&XwfZ>lb{6mJPxHT~icpFF8b^)SGMvxHUST+=-@w^}u2(?e_Ixb|{9%P_`L86V2!CKWEtP5he^j_# zpEo%0|CI5e`fC1PF`T!{w+{Rh=2EGS?Z2lg++O|+hUXxiF8@G<+si-PfxpT4@bXV$ zIPdSp4*bg*J?B%&aBe4Wap2RSaC`ec$oO#nzh^k_M~^%3k1(8%Uwaw;M<&k!GPDH>;AP& zl+NWkz;Lp)x?V>Ze{P=*8dMPMe16VwuK#B$oa)Q@3{tqgoTC{Z(tlmfu?)`xuFGjU z@W0)G|L+++x3|wb(7&f}UEhz9H-(QG&h2UfO;!->^*UAIc0L&l=k{$V!$}T0-;oTb zC3!7}W`&cSXEXc}hV%M9r*L~Y*E9ZV%Pb;%lOmORpUP}`~imdC1Zp@ z<)k4((`PcA+mmdD^L{#-;k>`!sBkT3UH)Z^p7*=Q6mFNp8xHu#4*b7hIB&;Jg;RaG ze3sr00D*8`p4AGsmuHK@sa~{%ujRIj@gb3Gd>^Cd?RYVDLIk_~CpqBD7|z!Z`~51$ zhq{8!cL2ki7(Sli+|K`z;am>SI^ZiD@YfV>m)ll_+x6iyhEHeZ{F3qK?X|~&f6{y; zMzHfY7*0#_T0UtCx9dX#!?_&74)_BO_;^}OL?HgWA6=txyL`@EAjprgSJ?{J^~#WB zt_vBS4@}ohX*6rwatadB1qEp3r0Q)_MUSL;t!1 zzD417xouaty#sUBEXYuK;9vZ{>{Av-y zX(-V0e1hSezRdyuT+MT+{G9#(!=GmS2eNUW)B7Fp8yNm1G~1*F;VFI9V_+wggczsH8FOIOf_r>f^K_uKGi72ayY z^Qj^T@5)28{7V(?QR#Gj_4hY6+Hn2-jck=p)9ddxEVkkLyA8{2xc+W~D?t`W^U>c` zXtd$_`w1Iuxc*K8eW!zh=A*xdu*QyGFX>Wy%cG{(-#3_U!}WIzp0?qhn`HX^He7#a zAke2LfBijy$8EU&KEUX{J?Zs#09M*?{T%?;(3;z4<5TuHhUUs+g+7~GURg3U1ee^d zp=IPweCUjt8rRUdRdhk*Iq>*DR1it5XB>Q|E7H=M5FDn%=Q2E+gBQL#Up{pF#4FFQ z3E|t@ibHwD4fsm8e%dPQ@c;7fL1I!lC8j8=e06rPJ_?Bw-S0GdCQhiy^EIH3seh3t zc~{C~3J#Qy?&rEco~Ll7W|A2H7cGpQ_Bc`9BZ>{d8S(sg)6-m^cn-sl2c5t6>#O5* z{`y#e2s$Ud=E2h>uh!Ti?DES8Sv>iff-AnSqL`BWsEzFMD*_g;{GGJuf^eTLf1O^J ze;R1$T$w{kBEtN85FFRb9pmVBU2;tOP_~Px;wt2eW4`NTd~L>TIvSeb zzw%WtFn{rtQ%vhevtdV4u(>KZ*nDG}*<6+J8gcKWG-mUZ#GqA?9JHpVnN~%HX-!Tv z8`dOUd!2up|GL%2fP9dgN|ZUR4HxxZ&};S5oXuull+F`$voME--D z$EP-5l|FcU^5Cn|8dkX*THVGotD3L!48AG@mpETNGfL0+*LD6B_nAvkKcn#*WaPif z|4aXsvWk1mroBevHlTs#+mexcp>-(W+hr_12&nnCv~cn%D1-H$74-fP4Bwn+g}j~3 zx20PF@2;FyTcedc7d) zLx0CNR;0-NVbFSy0P6!?p90^ey7K~7d&f5c_ffO-Xkj>Ql`JvARv`Qxjs#3_@7hoePc} zJ=)X?Q4>LP!0Tx?lbh$I2AZd*1)5EdHQ$?@^-iF903euq{ru-2pP{ZVXM2qx3%^^{qFZjG^yjPAu9?S z+T8&k>TZOoT?1BU06LWsXh!j@Rc+r6aIYfTyiEs36*o>c7I&cP{&0cY1XZf}V3)Df z1lv)?3lABK|4wn%TEDOD&TlDErrAykE7~DDdM>7N4SBtdB_m*h{jXAAHy5s<77bXt zm|_KdW!{YWFBX=rF~jq{lXEr{mA+@9nNraMl7&PkhDV=5Qq2#BuT2bCWnL4t@mp^~ zwt1$twmAfGh9J%=>KA!_3%%Fhu?^BJw7w5opA=ag1=cFRwM)w17nwg4!X`0qF-!Me z7EbIRbRRLpi4A5r^ny$GpM+G@82w|H?jQSW*A!VF`rYpqT3tcwpML9YA>DxGebQ`L z>-JTWaI1xIw?V9Vfo2qx$u?ihmcCNyhq}0_1x%El1e`+h^%dWB$Y}YSknb9Zw=1#? zdTusHW!dsPu3r|S>|y+rU}I7hy~`|Bie@Y>CO#0MsZ~{KF6n7Tc>ejWqS8+watOF4 z@v`vfGf2pJfp9)aS=*zKHxE+Im_LK0oL^uaBq?vVBBpgXV7>3Rx|M!Q`EKd>8bX!g zHQnEncnib1FUIV%mhU=}?<#2Qs@gTCwG;BS-coAojjC<(o%I20JHaM&HQ?U9>7bAF zv}GZ*3TQe+nJh#JDMFgbu+K`Kb=O(w%y;gJTz>fI(IDEy6SThRy#4?#tZyKV&M7$c z%N`vmwAT5-&XctXy)o;1-|o8Gt#0Za-J1@gI|Y25#*$?aKXr`)tIE@LE2NelM011d z&dwykbtiE>y#MG?C~&&J`O0L$wIJ0xV6DsAly$_n+i0PYJIdL8(6`Z8QUtzajjXFu zBO-czTjv1x`c3=yZH2bWK?`-sqwDOTmEAc5rBFBq zi}8t_my2Q@MWV#cuTZWa4I<-{IzPZUz@&nly^#{EL0Idl#L-;Cfxgj9Q)Q;fU6u(N zPiKE5HJhiQ?^_9xbCEVGgG7;mkimg{B-ty|0@mkJ1nE+)Uqh~=qP0hh2YlNWTrIjp zfpud#ij)@VkB$^a(Icmz6|EkUNsJaU9fj;_3xq3CMs zstc8^!tCTEvuSh46KQ~SU{_R~iBfW404b)E4F1WMS9e3x^aoR37uw<#Fc z_EYm0dy{BHOQn${T}&s^(en$f!`7Z6Yn_-E`K|Vb{T`#~C<;M$ix2+nx0$Jys7?<1K}Z;UKY-M z0sscqAN^T}G0Oxuj~ULT2U{-xN}8evo9`FJp{R6!)*)&yNHfU|T*#^M`XqSD2GYxD zT&+$Mjm8z2pBLn`Hf>%|v~)~!E^JU_LU?qqLg<;YrIE8(j>vxt&k|@@s&Ef#vb0Eq$^J({nDC@R z3)43G`l;FUozZwTPKuhoG#cqUsb<4UQ4;hZzqp+5&BXZ#b)JoL`kYKr(`MuTRYjQG z-`|?F%4j-OU>l6aWSj(>9~bpBo1YfK$k|J}-n>kREr@RHDYCYiRwO9<_J^WuqF_M` zP#&di$YIIJ{b20p9z{c1pA}l2Mb;NxCn$Sktv6mw?%VcxAHS9SYd_9i^89W(Pmt#e z&9Lb;*eq=n zJ1K#O$u}xi66o$tfBC2`-;SAB?g4PzuL<*qv zBh!*Hpg{ve1@2Og2$|4zwz%Fat{Y^z+{l^AXErYu@(tp8xwyVxh?s26dR!~(XqGM( z9V(|)$hc`k_?Dx_68iWj5t1qs1Jc?c7%s;V6N6}fur?YmruA*x4mqchoYP$LoaCJ5 zmgjew;mK0Y4F}xDl39Yal*%ilmhCXCI0&tU&1v+0tS+V&hQ~uR0dI9-c$_$y7qoU2 zSz8LNRgpTk%e55qjI&%t;b~{N3d5uOhZhY2NRqDyhhR7n6Nfnc@j;v86HjL7;vaJ6(g4A#VW_PSa~SpzE(;> z)0Z@k_YD~4He^p~<8M1e`TMih_!|zP1iymdh7xL~n9dzBIe zrCB4=(7jZJyw5Vt(#_4eODQLh3BxtjY}l2MzepOs0OnPrG3KGAp~j?9q~7@`5lYcF zoOT!pbbv~dkhQU4f0@zp3}!_Q`GnM;{Jz_q-8mhU>=0wZi8X2hmkTjVwPd<(pnXH0tE5KBV);}n72f`98GCN z|L;V00*;LvD8zDr(U{oK0GY|zgD?$(KpIZ#eR*LWRiI%1j${#*a}RM5S%;ZttbAl; z?+21|RN7VRU~}#Y4B%}C6CnJeaN>PGIeeq-2fn>;lY2|U=Y4T2)Ao5U8pvNo1$H%T zH$+q8Mih~V>GFBMoTL+8M_2I4v9|7>$jK;zyziuWgt5e}ug5fxrul?*P|YE% zEjaxe^9Wq4Da1~9cVOT^V`pR#cHiS+KSgT$`{z%!@cCdHHPKr8V^nElViB2z` zh%CdzTht%NW9y&zZ`9vF{oNaM^;;XZC&a36xHrVF{o=^aPyluR7@NNsEu*Piw)H#N zhF-+*l_sO*6i3?qdqLadHW&jzPwk72y{VCDLcQ}{Fhb}jKZiX-2Q?bs`jIlkXf!sQ z>?Lb7CY(6XpOAb;a~he(0Tee6o!0%CKOu0&AxhIyi!@6Maz1L>>^IDgrdIr~ZrXtV zH%tB@ZSZ38avjK;YqUCO+Q2KM6 z{F($+J#s;p?>Vl#OLzXqjw=MqaU~BE&PX5J!m0U3JkuOm56&3PFgQql0dLGSpHG8B zWCs|^by}LE+Xk07>0^V7OrL>bQ2L;?vB>Ji{UXh)o$qc(32o(5|_-)n;Ga*%BzMr6y~ z8_frs6YnOQ){3kb^??Al;>2|0_Cgj5GcL^Mp9FYkvYOaMNF$ABhmUv9_ zL7HMwr=({Ws7ktto3TYW&)FP6X(xwApBW5i^oh<-Aj12gAwTO`&o)s{>p;gg#Q)A( z8>^p+`9Q?n>+VF%EK~_gh;3Ntb+;Yv({b3{X+DTXziUw+pS|0E?dyMLJLb6Sd4pD*bl$84)@EU!OYk! zSq-Y3kMJ}BYlU0c4U_7hSjzdaVZYnB`(|Ylmi!k^#)bpuyTtQ}S81L%CY+oJ^-t~i z1}o_zC%RvvftHA0N&?A0=pNM!7kh_bIVO-5fu?#hI}Yb;5ahu0(XZ7j9S2r+S_^RZdI`pLe{&92L<`*8irfdVl-%916Qj?-op^lE*6}UP zT~fteY{&QR_XmFO-iLZNB)&q+a&>D1Zm*XnFX_!`UegV>qfqMkk4BzEn??1NiM%C@ zh`9D0Qj5$Lh5}W=Gz>T0SRrn??s)WLB)ucQvybI>(((9pV<6y}Z^N}C^Rwu(bPbxh|>Bnpl-)7_SK2?tL9v9 z$9CA>K=>xe)R5L}L6+iD}Sw6!_76G{i}YB<jfN z)-G7mjG*;-=QBIRDrTXzR&eM#8SA}KeOi!Fknf*Qon-RX)&FiglRR5^mIJ6Df5elF(%^FYP+}vm0ob_%LAIaF5mYp7AE%( zXgk=~Z*BBvwbJ9xmwy0b5<`HLWv^3$_|}4Tpk9E1X~~NfpwAKx3;rs8VE~=o*w^RJfwQ zeeBdfDA6jB$mM^H`e$SrI)Ipekmzwg&_wSfksh@);DlCvlZ5%Bn$aEiD`W-(SqEq- z@bz!6g@B9_Q{$}mR6CSL;YW+v^Pi<;lFqftl`B-yI?HVlP;`bd67{Q$Z z--q+Z_xC4%`~> zwcq(Np6`Lfov-?>4y3+w6(#grZAe?YM%=s7B4IYN_Kd>J#%P*@@q*?RlLJtsY2qQf z7_I1@H8X(fdT3QSRfv_Q7ap2DWzsW0EcC7pSQS`x&QA_lQ?WQd9nVG046DKu=?i7n z^^JDM?}W-cjR~St*NLJcCX&)7S~E-nqHk7}VNrTrWn2na0qK z-NxnXjk}YuP}Xe>Y4dG0CTh9@S2j;}a5vkE$wc=`dXH+ zsWo)A(uoa_8LnI!Gs4G0U_QHfBG1P2*w{gvGutE~mh%$GqW|Bg5W$PkPM#_+>(p)VH5iQfnvE__t zo1-CWUnLu#7cld;4K9yfLG6oSd* zEoi4_Y+PJUO{}a;o3A*=Sh|gC+9C^gL&SnqM|o zr};-!ryDKpNQtF>FP^G*e1k|ieixQb&hU?#>@iw?i+D%}{bncL9ohMj-`dmdHwM8V z9Doho;_vu^EqC_Hr`z^n3vggjn@n(vs!jeg7bU)RW z=uzV({Q(qUP;U&Q@DKU-9e_-;@v;k@(gVs)fzhiR*(62}z5249UiHarSS?Ks^$5KD z(=J3Fq4$5J+_a7amHn``Lg}7~t%vCT+avxq3_z+K3#eT}-lXT2nqq+ocyw;~uW^M*|812bIdt?qo{b2%_s zN6@IPCWe0xCUItXnzvF&3RSC+52b`$^#d6^>#R(yI}?ZM#JV&bLNL~Qpu|yq!=suY zwFJzHFz5OXmNBH~Ir6r4A=v$hmR)c<&Z@FUGeX){urSM7knVexRnv zkJ$&@5B?LAPX0VyD1v%#Or#RZ5P4hPoXP%Sn|~a_5<^^R(-ikJM512e^+7oXMD~fd z0I1z!qgTrqfIaUPa$04nGZCZpFFM+_WMWbhpFRaKnjS(GOrRk0mT7-4W623nXaXQA zSHpfZ#(q?;VL#nC887mCr^siBp!XGy)i0yv?}&?AYoTM22SrjTFJTL>g|d<2iN%YY zk3_MsW`i94EVJ7=l*D0!AF#CnRPeS7`>B1V* zqZr0_1n|~c#QM2-(-^=tTNwS=z4ber$P_d;hsT zn#k$sCf&x#dQOiK2B(qjqVv?FM7Sg0k?MbmX2Sjzq>(wBZ*spxZ|sV)V)-k5HG4aD z=F%SP8Hcfx$Rk@s@1x)~Fu_JFWt z(K3+$ytlW4=Gs^+7x%vbW8yYiq9}%aoAf@SJxxcETQaR(Of@F8({15S(kPJ!?oo<; zxN+0>**INzK;C9s>&1*+QdlSi;H!vSw-GSX+mc4h>_LGL`l5na95 zJ5S7y=Ih&R|FyWQ_FpF_GWxcf-kOW{f817QBtnk336OWH(1v_zm1u^K6>!1agiW4D z({!Yz7dG^G9p%%T)+4^edc-0S1g&lV+Iqwqy&lm+hw4^1=}*_A(RqooN4@J7IT1(b z_R+My&pE0`SJZ7P8m9Q=BoYBCS1l_CteVvom#C{8gQ?4ixV$LoykO}raUm8>UnA`U ztAKz&o&QojxWBrvzP_G#V)b%WxC#by1#LL6(2%PV-4WAxW}VsA`3v_}3ojS=-mm?d zmO`gu8Pixo@84b)PJ97e=mnr)ksPD2u#2IZ-gXQGF(^)hW%LpWtrp-NQIn!GNjb{s zES1itW6eR@EtIPmk8<$hKr@oyA$=jeXuKNZ6*?Fm(miKd-|Bau08NLarlCM(cv*Ot zF|iGA9>|>b5VEvR2PridAVW z@%R_6Bg62}zQfi!Or%!{CIR1`+HLxN6i0|#stA;@Y43tr!P1~NfJJXKO&)A=P%nO4 zTMO}|Rp~jIiJZ+?D9zI2Px5IbSmVVL8aISa#2OD?;N6?B2rt&I!i%*K>L-3o*Mjbi zLH9cWlH~lA)OVGlQ!kccLayoJEMj5^2;j~09)pOU0emWEpqO&?h>bJEyn>-WYimz3 zYn5iR7Hs6aJhqLXVMiv+Z|F?C3h1X-HMdxA1gy0MF&i8@JK9!|KJ6{Qi$o1;GMQ;v zDlBl*M^M%2STDh&#EG4-$18pSG1=p$%`0fviZKa&0i9xc!1v>VA&RTt`V6;eb!S;0 z_AIq3vy?X)ae;o$0#%~~84d|V{m_smEOHtdeXL;Ye3h~na`sL0rW!5Fa0wks!@QxG z)~Ti!Slj3>pj)hSsCNx})=}_{YvXLf5PD4SYKi=W4G+-bjxgi0u}Kx=;}oR@c(5WK za2#vTjg}>7w7B_3Zbi(kGpgo!=2V3|W#uzx%_%Q)Rm`dhRrNsTRC%gr%`300@ywdz zA$k`sYXr&gVV)V))vnUnCDlEW%$ieHKF=`QhPv(ge5$)pyUi@H!Es+ub0?2>t6 zkC9}Fa$GxX=+L3VMvT19RaF}*E3Xb!2y(>yDtk!IkYPh|hvePqiY2?mGwk|IO`7GZ zl;pa+b8ehla=T}=XP9e_$i_3+BOxRkF~U_iXJ(bI{JCYG+Bvl~83X$mMdS+CXl-}&Q*mLg4p~Gh)!C2aR6-!Vx(-W$wswvm)9wWS*_Gity zW7eD-sV-Dwdg|c1s$}jQg;C?iimilmY{>`4OE+r{+KtLsSyfd%%2QoF7uBrskZ@*} z-=<1KDSN0=aZlM@qrd~0TxR92#R<)IK&0IE-^Z1s`t=uA#} zS5#g$t7OjD+K@>dNH>f+B7R)?Z9>X5Q9>chA~aQ5kMscI-u-%qy#EJb6Qh56vEW;rTg(%gV~L zit&s~ZBl+1?S z<5RNdq-5gSpOQW%C3Q?nQo-tVZ@!fZ@~M;tVTwG6@64)7xC+4EH6bOnrPr90^d$*n zQas_rF)5jgd;3$e@9N`E$!qA_t0N^FSs)4|lC_^$zx~c6ioUDQ;@;uJB?&FPCY`uC zCHt~P+ku)|s<}K4=aw+K7Yfeh1duqxq_iP*k zAjN)Iu$)e1L^y~30x9W}Q#=z>lBD0o`6^D_PXAQit?phcQ`WnKDI47tI2NP;sE%8; zf_@2OdMVNx9LIoE_&(jC@_U`+cl`VUDbsI_+X!R&_1YRYVqCwgR)9v3okPW1Hz zBItfS66Zv}OQ0?n?YX8G5?m4=?Mp-S zUtr|Ig!pV!!A1A zZ&tWRH4Vv&!sqxA{c^fM=r0dKE`-;sYi)0-!3BRCAG#MNJYUhDrjB$kMz}{^>mywz z0FM_ETuKPG$OM-X!ZCP!T}=?X=z9{=%Ym*qdX=N_lY5f8Mk-v`0Twq(;K#OmzM>z& zXz5hyQE#DNJnAw<|4Rk$byq!pcoL;aa?-<+Yz=C)e0C*m5&fX>zlZde@9^TIZKhpsp1p&bt?eB&9iy~R8Wr>7>w=YO69p6h_; zJK%*5_>~TLxdT4e0k3z!mpI^$I^Zul;OiXltq%Anz)AkqgQc9$kq6gKg)djQd~|~z zjj2++_C4JJALxJ&bHM$;sXW;^vLMnPxm+a<^sZ9w)P>z<-f+Xr+Bu~++%Pof!o1<>ind|ErI}E*tz9c$Dp$* z<)P?u2t{BK9Whk2McOh!T%e>vNQL zY}FjdB~)CMhh@d`l4?~yaqcfGli(HQv#V|`m*?B|`O$_gm4q{cZcGcW6R|qm%Wl_N%LJ&xFb*s2yZaEe&E6XO$ z$)goxWFeND#8O>p2!j7*No8%hXj@TUtVhxU7wCR!;Y`$}292vab%|(rX`ix`y@Yvk zjlmDkNJP;0d4qtBWq3KxDPVXL_lzsWmAtRlINbwjKF_ImJD=4G*L-%U>(?31`E;mx zm7R~Ak4YckyqtR!z2^V1;`<}R2LRLMJe3F$?DQE7=jCyez!2=^DN?uGcAR#xQ_%e1 zl$Wkq4EF%j<(Z%+_;&g$7(S5EKc{eezHd0-A2U95FRRP*1;crL_cNT+A7wa~r(fOb zkeJ4?a^B1E@eKbH!%c>-WOyON-(>h@4F8zn6Bzy_!-EXp>wxz;5kv@7{v!NzyZqb% zpVE)0kJX1-h3j?{Yj2>N&+xNxt@$rhIOQ8)_@fLT!|+!e@U0H`KOJx*8B7rm2ycV)UF(HN($kd=@f3H1=sdd|55T+1tI{ z0e{y4|J(uZa=`!TfcH}OnfCIW=zyQ*fZxJ!ZlCKFZg2OG7(KTSCz5axs65=BpTh7U z;%f1x1ONYGd^rD?7@o!Wzv{rh&zT@X zAo+8>TF7v&Cr>iG7-_Wp&&wb#$MPAeaJzge7(KVoH4gNTC|v7RhME^X&Tz^@m**+Q zpX=324CnP4a+WB*kOQqvYd*OOr+f!9yiDQtdd+8iu444RaiD*K@uzmw^?I7&Ll~dG zG5)+>88rDrpmyZ-@-m$F>kAmp`}JKkDMTPXWAM{*Sgmk-eYYyy-Y%ap{CvjeOU9p< ze~$zIBo7iJ*!deC0Slb>_cVo5`8j_dqaTVmU9USCJ+JRBhEHYmy=fAUK>V-9PxJY? z!l|4WFxB?Zn&F)P zOosDv-obEQum5EDb;v{4_iKh<&+z>W=loqXxj~?I$-z(a3DRJRkci(6_-XuVhI6@v z7|!c;zXP63od?0LKW8YM%5yq?%ZLbJAj5~@T9@ZMg;O~L3~ylgbcR37a6X@Zlkp$U z=-*}ZoKJ+|oX?pwxFS$_czd10a4xsu3b)I_RJfMIe8JV_DrPvDQZ0w88UF%?*EsNB z#Q2b$wf%2lcrN2}KjY8k{5YfMa(hML_Ika+=y|@I8BWi1b-g}NILVXGx4Rtp|H$}o z{=H~Yfb1I1M$L&pnJkm*)!%=lwc|GDM(q z^8Pqk;aX30J6^?bdIv-2dp+aB<#`jM=W@G+;hfJr2R@4!J?GQH@C#Xa{@}pp6^74X z^q)H5I~ae;_Yi&*_AvZxTx&V(XMDK)`_g0!fuhIar|B~kuH~%xpTlt8zL^TA_Tv1n zVR$Lye-Fd2WcVhAk7M`x7YV=#)r=*zhwAK z#%DLf`T9TtO~MfD{Lfdomgi_m=E`L_rP1~BDcmm42@d?HF+QXZntv(7eT;vF1OHz+ z@V6Kr&VMPxFJk;3aNz%EhTq8O+Zb*#d?Uky4FALd-@))AMt{HoPo_yK0?By{ep>$e z8$^UxFg#3?P6Wca-ag3iS%}ko9%DGSt1l?rt|yxrJ-2&bIMAO)lS>3D52u%Vyd}=% zb^)X3^7%8vxjsMdfWOLcKEA)DaJ!zr%kWVstCr74j1RZZU5uXVTQ|eGT}`CP90JLK z^EpM~_VS$0aOx|%JZC%bxsu`BE|n(%MN z{{Z7da?||v$AKu{OBnyYG`U2u^FNQ_HzQt`XEMXf89rO#_IiaF&h6Xnj8A~^`7Oh_ z9sUc$xgCC);a4y|9SXO%%U24wmvaZhFJ*joE1cxR%Xtf~DcJFMBrI?~FHNEh5s04S z10C?X-h%uX`p%^Ic;X51agT(>JWypNkZCr&UR_t)@NMdPhYi>7pX&F_h&TQ8d!`j` znLy+EJ<}C7T)!Vg?{`tq^!ojvG8?YnXQ{X0`hAvNHeA1N^8fzrGxjO8=;zLCpFN9x z0}T}aKl=un(qk#*W8d|m6giq^~#W>;F6k9sbTc};PVuoAjzZu7Y&b| z_Bc^$5XERZMLhrA^knvkr>&YUo&WD_8R|=Y%y&q?m2L_V{-g=zWwibpo&=oEmHH_v zm#dy`A`pCZlK7>xkqO4XEQv8srePyycZ_D>|n(qfmxly!7i;`bGTyg#n9!}>F>cw zJpJ89g9Sp8%8>LonXU;$NSBAWc~jIpnyesrPLxLj2S0xH^kjZ*MHC4hBx8?ohi)i& z8I_y5#J9xar|+amGQvah5dF8yuasVwt0})xd;ksKHv6e>pyiCn$&+70``5pLHd*Nc z6(V1hBp>e#!arSXPcM8%!cf5L!Blux5PlY>iEo8ng6d$%+ZTW6Ke1hL?Gl1Hz77xvL&~T5(>Cjk8nX`!rxYBlq8{t*suBp1uaM9L;Hl z;RGK~Eomd}{oduNv=3ampf#<<-g>Yl?|k#%Tcka)53X*j==4S zqFIF}$cstEYS(LbFesJSX&)^<$|yagAqGD61Wp^co8Yq&+w8IT9_n3K`o8%f_U;RV z3dipcP#L7hzcO!jp|yiNZdPM^cEGegA^z~%0lwj@$Z^VKL5!{56aiOmqwj^kKQo*t znIIuPKS105!;Ri$#1>&7I%?a=Uk*MH1kW4R2Plu&QjO1L zh<1Scs-_@iDNitxqY+Npm zPd8HCtYwW9l_ASLi*+$JR79CgV>V~M}`k!!!&s^s0N5nEx6&O5M`ZA zPz7C?aHddfG+hodk_$XAmg4(9IUk80f>MzO%6UQM(=G^q2a8aa*tayu70vJc&AH1& z+b>EUZYv|iUA7}ZiIs>nPPs)x^)h8^;gL#LyJ_(&nSc-eyQ z)Cr#O@&b?5(aen{w1-D{7)WQ8Ah}>Kf1+u9owGrEbAWe@M0olU4k!dK>S#&A0h<9P zuO*>%a=w!>P{$;AcH{m;lC+nuu7R{?zu|D2(byO1$d?a1z^#V679kS2P=rSzq%XjS z?5y47i0W(dLDvkwUyysdHbezY--QN6Jyj&s^|w~xgJn{RWCrPmQW{y|OMu!rDUwFA zQrEfxjFv-Ad;ZC_P7kr<$M-QChmOg(g}(F_-={z$Vsv@LVok%HuEYhy$zy@+!MKLg ztZN+^j75y7kAr`PuIH6c4K`ji?3iZ>pT?mXP>(|LmhfIs`RPE5i5C3?!V_+!9>^A!eD7s<0u58f zi#hO=XS{fd^bF%WN*_8y78NwKV%X4rj$nk#gpqGfUOM#}eElhuWR`C7HzfYfJt3TS zo*3~?B=|XG?w)|E*z6mNT zBK@jl!}uCY_JR^F_Ky~Y=iims)lb_o2!?DrM4Gq<&MLfD*xj4t?uEaiW@}MoXP8&I)}0 zG@3%t1~T8WN;$0&e8Wlj^otraqh%H#Cwl|a$XhCE-~PMwObuG-i$PB5BcBU})cPnK zLT@-8{ofGj+=MV^c`l>rAZn=fAvVt5ay-6QBa(Ts>!I&bD`>kW^u5sf!Fo>!{1|<| z8x&gK^PKd3ozVA{AQc~wYY<%JeGAka9uj@u-T9i>YN{JsRJW%~A?P0b=)p!mPRU`T zQ^U1TEXf9n0yjwe2u>sQO%|n%IZhLoaK$fuW75nW-?BZZ9qp3QOvWAAUEu8U`@XCF zSbD1#sf3-!7yDp<#WfTYU)BCzmo$0=o=N_-tgm0f#68;ENi$_a;S@=*pfh=jS_4evyHqggx|?9Bex3_ipHwn9st3%lfjO_|EY(l00rk z>(fIYG3$jp*ER?iAA%^rhh_0;X6s!t#79LIG*KGLYP954kix}%!y3$r`Bw{KK9Q~O z>GlnNaU}=%uoLQaF_eHlpZNqB*c3=KY|dslbA^*N_#)Q649Qy}eg8py+fx}V45oro z`pJsi0yA~YJop+K$!yXzNoB2K)szERyi6h~sEI5$YlW6OpeOcvM23SD`=+FuEA5>MK$&nPrGeSCH6hQ8 za?jiwXL!W26YaHp4;F|2@ap60BSrXGedBbg=_er znp>mR3T?ii$P1M4)Fo&}!MWCLJ+tfKn@UR&ex+uY++6M{@q|idRKndE-g^wquD*cR z>;k>|mov0_&W*>3ANCXR!$mygK9-gfr%1WU&4U7|A>Ec+@M7^}E6YpfhzRwE^!^$+ zVVhH2HL<(|+xOHiNKIqoUp)8rv6axN^0~3}JpZ1Nps}TQ&7AqipY-cQti`k(N4syQ zATY5ShvO0&B98A12Y!Ei35OEmdbjcSL-Kj}RpLkCbXw3pKEFW9Vm^nkiWv?6eV;(eh(|fdlLQxO zVb4%6F2%Ei9uZCAs<(Ky!z1odILGLmo`J=lEQt&8cfa`WBi>_+q57FnZ`auz#QCG* zy0Hq6Sbc@`g=v66jOB_ zg?^!4yoe$$*AF=7x~HQ~MEZF6&mHh{9PnWd_@xdwJtc{kFTJ}F4=;1TZ*#yc2mB!i z{0RsAdEn$DWND(5m>4^8`i2Aj`wn=g15RIbi&tNI=o}9>9B_JPCmub$6B7>~1)S>j ztTGW|Tt>a7IM7!(;N%}L9{=As;12>9K46q76XP}V{i_2#d3BD*f1LyVz61V+1HRh< zPr^JUUcUVu@N*sT3mxzPaFWCHlcZjWc>_+TJJ5$5@LxILPCkAfSNZOumj)2ToB_w@ z9r(QFfV=ecerTzE?#t%RG1oOCb9y+G8JPnQE-ZFfHg_m9av1!w@YoUDk>tMV-5t<+E^i zb~VJDm)Jega5pZ@D~)nP6Ym~IR^VUpPQ!e$Akp!C)v&zDBM#`9Qiv2NlY-xN1^qsI+!QdGN|&*Nx>NbtNdt|1Z)-9oqD)Bi#qishwS-e8|u# z3AA?h4BXq%7207+)!dL^B>-Jc6I7R9*Prfp6;B+V>EmiXbXtLRBY; z0FtS%6ppwBSLs=Z-7`xMKeKNxnj2x}nUSIWY^S+@)c8=GXnJ~R9uKDnbQ-?^Cz}2bu)r@GR6dz#N+g%i6J{OF#R0{IrBKsdc8r|EqPrvtrisPQohxAULE z_;CK$F#KnX&kYKv1I?*5{|bfM`QOg?aQ^iSPh)(<2V-$<=l`6drvu-M^qRu$`F_vn z=~XRV&Z7*^WBBRfafHm*$M7tM^F19S8P4C~zf$4UE_9Ek^SzVNb3L&XZZH2sj1S3; z)*2}MABO)N*P8#I7=PaGs~z~i$M|smA2Xb{%jb;$XqN9`M$h@k*U6-Q(!H%N=Lu@w zN6o%W%6Xok~0vgYr1;6KHIe<`D<6>81rR>q&#>rRH#o&rt(YsQDy z>j6g3`7C2NtqEv8k1;;H9XlA#?cOei^L}wi;dXhR)EAi{Xn9guDWox+-hbBRIbGq@ zUcA2#R=A!23u3B=JrNfOgpa{b*K2?Sp5=fKcfiLgd=Pl^@wZsv z_Wp7$!~3)H%uqO$llR}H4CnoHnZgIz@?FE|d4KO@I3Gv486IHe8PX3I2vnW|{IuNi z89t8TlNdgp;ma9rGW>50FJ$-{hF`|;4;Vgy;omZxobnmhWDlgR|KjTx7*xD z8OP6N^t@if6+Q@jc)Obl*X>TWiNYj?b9=&lnsGZhkI_?q*L><2J^;9`Z==GgUYyTk z3b&VY1>?i{zs7KGm)1D&?{MJX$@p;oI~nd_<^REff5J&1LZEtaeLIEWyj=z>++N>& zh1=U@Ji`Yf4=v9i zub~VNB2L%qVunv<_%9jG`P4A{az@|4aBf%cV|Wpxf0*G{F#Nw5ehI@@GMx9vbqwe2 zzR>~yLgDsy*{^V|4_ZD)8Qx<&HBdMNd;iK*xSh`h3_ly`H2+)&K2sEKFJ}egLq*ek zsu<4gNyveJg9HBu86VF7_YCKD;Bg23FEX6B%Rdxuuh(YApXd7l!+C%Fl=0{N@pQH5 zN$tY>xF{#%A~{d}C^V;TL^4CnpgWrj~=^lvEKUd~SxuJvje z(op!4;k@1d$#9aVra#1Rem`~Q$%37j&!2-+tydm}lRS$VegUKRGCY^j(=#j0XDq`f zGyGbHb9vsx_@B$@s~A1!e<#Da{F@lg<$pipe;(ui5Tob(|DtevyZnRk;c{NXaDHED zF#e-iz8;)Yp!TJo4%O;Ji;8q zd;bTw^LkKs5e_CajKi>OPAAL-fHSB2(7euhCstI<)dy(qI)4p#|Tfr zkB5^~I*!q~YOW|e1ZTwa-%X#Rc+%XI2c7>%9K^ZKUmx=oW>4R#%ActT6(3!H4Np?( zmAWY^Jfk9`h48FAME~vbzX~zL%Py`~m7eSq5Bgdk%MeNFvpEsY*QoR!8?MW(kFyc4 z&pGLrDm};O+)n#zh1u)hsnS1bi_r4ZeDA~w)g@m8>WD{4A}m$cqGzcK1ssv=iGV!ygr`u_}?g4Twr<)Fhw``I2`cwC^k%)Ays{D(^RqW56zEteR ztu84om%DL)YA^1HYgVDGj zC!jGJJ8|NB-*0tT8v{nsX93@*1$Z;pDB9wC-lwFRv8wLh0k z6)$AfNIa>28>o)7twMj~oVHeMpg;QJ{U+4%RHDQ=D6WSDrgn52Lst1MSHSmvXaRCI z!cTx8YacPee!F(6%pN5Wz4wkXGA>wuYm$z@7Rd{Q$ZC=$>#3{3w$*ayw62c5yNpVQ z`ub(rWAEE8NEff-<9pFrTU4g&DATTcJ3 z+0*+fx+uCWL?i74MbqBepIIm8wEC@7zjbm{z6+1;LZor`m-OG*9~>xu5(cEL9h2p{RB<66Lha5 z&6nNApzVssdc?hlxQ`JBx~tdV_b!_AQ~cIJ_CMmdr8{5@K^qV0#(ufm&Yj}7R-0j( z^t&dOX8cE?`y>C+FXY|=kt_CeEXY-DVSDGhuG6_K@?B1GS}G)=93hKHFZsf?)K@Df zr}bLDl_zDK@3MTjF3>Vp*P;z_&<6Q?GRC1kK@$I$44oG)n;hS+E%b`D`PS_s>Du!llyDaxe}%ZnXG z>1r=g!1}t#+8?xb2d!`QjtbgUmP)(Il4z4zI`&s&W1GhiYy*<}DFTQZjf9{_JncWv z^*5}M`;Y>@uWJ7yHrbl7SLRv&QM*`06XB!lbz9;HUepXP-E$7Qzx0sDRN6|9y(xQ* z#&@B~wDrwnT6?gY0DHrH>*)L9LZ!vm-RX-NwjD=g-}ELY>odLY3p;Of8V-9x*aan0 z3$|3&HWMGckF$6ADdL0OKpym{KZtTnqjJc1_Ng#u=-o1uzu99qXb_V1(C(RB+W43q zZ{y=WvvjKv2??4u`oD$droC)vakTGzZ$7ppW{@_R;p9ieQMY%{gqwy;(t*)pGa2@t zVwWOzpVt;(iw1PTG{e)pfuOam$l6h8t)01aZ1emlAjlByg**_nx^>3+fJPTuokBOn z<~8dB83!K@C>R_Zq_=HPJz*oxgKgWBPS`ls3Os?0@@w1yAN(HF{Si4}e_@83wiITf z7#Y~2pKC0>8NEq1T+iKL(Yi_O~I3&-@?mZ*cA5FTQdL_M}22=xqx~%c-Ls#oiy^kx*7_C^VMbi^!nW zc}xecm#V3{MUVcLMg5KK)vtSv%u$@K_U9t(#%!b)8{vXOwxF$lnaG-19_m`z)U}3C z*OE!tk#((X>RJKPMl@Hd+4e=RV7LtZ1}&I}4wfuSKh2AFo(9EL^A$AB5cH=a+U%Q( zEu8-5zD3sO=qT8*OPe#X^Xt1)BxE!J>D5DEzX_dwkUnvPGf7MSigWRh&+t6 zOXKv1WX#=Z|2MWp7kj-JiAcP1R~?LCrYCeVvwcS64?4-=jRYiDn zfW*aZUe^mT4XumVccQ6gq)p9X=eWoml%DOArTJ4Fef%>i*uSoi_x%s+<9E<3yFRL6 z0j*(IO43K6hgt`g6FO_O+<``M)TWCO zd3q69G$fv+DpEXp>D@aKEo z2yP;qv?x_HZQW|otYjO6ksxa!j6~hT|7%U!bNtDq2}coj9+RJ+_X5^i0Spz%RK(D(r<{K}~JF9>`i{m>UD`wiQQlz3>428kWbItoPKB`c?~7Rb+x8C#=U&uyq;J-` zS$hf2+GiaZ6J9x3lY|p5vJSTG@7s28K-R`tt%9W8ENv&>T@|GNrEh2L!UWch{L>br z42{wJdm$QkJMe!+`D358o=IaekVbPX^nY?s5*@^0m&lb!s<_cp{b4nHZpdj|^v(z* zYS6bnGp$6~q%`cOV=kh*QPk-gc>Z7Z-Ud9X>e?HhApwI#PEc&qN-t4I8x$eoGpQ&U zn8-vYno7Vxqa=o4)Ceg|6qS;2lPITQlDxOtVz0Hd+G=~P*w%VcDTdF0pNL-|D)`M9 z6%+;hsQiCx?Y+;eImwCk_TK+}pZDo`o@CDX?X}n5d+oK>{yh880WLJ!39l@!dNI

<#u+^P&Ri*%eID$?zucqfV0(L0U1kY23sd}*w5HsuKyr2 z*fi+@fBl>5_h+Dob`($R{Pi!`FBIBOum7@t@Y((0szV|B)1ugtzxWP6(>n3w4?_dL zq!JW<2toMmiNvsBwQ6TO{l)(6#r{{&x(;nvW)9Ub$Jme|sba?K@XGz8G*c6)+JX*% z{rLs4^yU!n z`+v{A8vh>q%Ej3{Un=eY`u4@fwSbbLBW$!Ok%h21MUoJEV?=99lC7~l**Ji#OF1vt z8$o1qw?Spe=AK3)8GHl}Fu9@H2@h$cjZZTcVX+WpTX>2b%l!RxjX#z zyUFDCB%540o7`Bp$&F=`dthEiQ>Q=Tf4bQJJlmU1$3Z#e(?>`pY>tW$FZ!?AU0q*x zH(l9XlDOk5zK;DBV+0knKPj}k(4b+uCfy$DYR`rS;KjH(s}$yUcCY4_AZXa*XowxVpcOt6^1o|8wd^z1oNW({_!8iOkpI&} z3-@BfcOz9@BR(sNm1f{%s?=t*GPh`dm)ySPKh+QjSG_ReL$pCZMT2-OHArX-eX<>d z-=mX`UX^wN<^0Nai0$O$|0z59)!%C;uJ*~X6Ka$WsV3?*$5vkadu`=@CEsLwq4w#k z>}4hF#qCJqFF~`pz0>0{`;%a4k^RIB9IrQ>W(0VmXh-yza2GH1;q;+sT2WVO05ZXH z(eCJRs2{E_IzDD>LTPbu9@Pg%k=abziW}E(RF#8HdOP(|>bNkQb#w=P{PvfVB^1!7~;QXCXaK zG{HL;hYRw-T56VDO-qu7WvG*Vuus!=L4r6@24pzL=D;f!Regd< zD9kyf?rciEA5*qiL}<7Z;{lql#Z(3AVHiB@III0e8sRwyz&R5KaXQ+xSBFEH&yJ5_ z|7hm^Fy|A0h@7M8-~adN&!7J{^=HQa4f>-RXqb>%6X;cc<|g!K=sNpZ>%lG19~=qx z->E)#^;DmR#@{pEc8LQk>-|mOpRIuqN+|T7M^+6`d{k-Vmeu!-% z3;%WZqx*Q;{rt9f_oL+vM?n6k7VAfPzG3KU`x(-oIF>YVboYa=k$+F}G-+77Q0@-Z zkQ4$Rq$b4Sc;JJcD5`p)2xr6LX=_tz2i#CC+|cb>k1%DNa6^3dU@vay{JwSROaz;% zC&!c*|057FMnZeW`eZ*9oKa|RR$3Jyty=cpa*|Bz?SZZMMJMf`H3U z_R^Z7qqvAZ7gUJ8^mf&4aDmF_D4|k6s!3`^a`A0 zYS3)r>{#?AAA&+-9z`uWQnwvJ=4?}v^RZ^G!A{{*Iq5}zT4pPQHw)RdYLOGm5;$v{ zB4*KDIo)A4KNMI@cUbVG^V4yc(S1DnkwLV2)Y?t5n)AVpR^hT~)jJF3gwo_tTV2Ol zMFRYB^cF!Lg@eYOHh;wYf*cXeOC*qSV%`9@4yXQV+VfvS#6u} zgEQOpaPg+M@Tj+4;9y>?__v)&HtyaUP>@9AG1Bec%H`wz1I(=9KYQ<>CUe*IsrG)T zOmL^S*SPUY)CbRRB+*|0w0HVkO;4_ZjDA{d$w0sTIj`aIpn^Y+a1dVQg_`bqyzK!K^T)RVDO0k`ZM z@!bi1u5ba}VL<`gdFT#%f@nQ75W9!;wWV|M@#-l9c|M0t?81E^e5fEhcX#(dt#6n= zLegrt5C#-*-n?f>w<44+`kQ3GN>lO$Z0I=pla(A_DF~&E3K_8l$RP6J_eTOi zUXEHpdsCdwrZ)YK2Uuf-r+~qQ#gGa!JI}*ZdYAem2|Mj$KOOa_}|t-w^_8`?GyZ+rSLLr+Em-_ zfYIJJ`TRJZk4w;v#NwPumw9#Be(a!o3cKe%M(o45-;CeWbd0AGxhUTR9NcDMM`Iaq z+FeH}m0`Q+$o1GbNgEx5ywfq^50<9OeRRF}Mc&7lygxK~e`1zPo*8&%c^-osEl)Cn z-3b|xJj?r23387D)lxcx%EIMZN6rKy#+F0cqe@#5XNf(q<+P=6C$UC2t#3LagOEM~ zwi_6dV`1p(B0tqlOWi)gijTyu@_|_d0o=<-)Vm!b{t`B#&bwtYk%PBaGUP^fokUM z|Ni}f0cU?;K+QMN{=j%C_2ra26E)a=E>MrnfY}Jr^ca%#Qa`Rr$Lz5)wt!0TY!=7= zyX@_s`vL#CAMpS2{eXS7_cZ>J{im&X=Jx(k-01e6UhKd|dg?jhj(Ssv(Bzt)(+j4Z z2afjt3~HKp;t##2vX@O5o?ml4BYbvuf{%GYWXK2|pZ#@m9P0ZJpIN4d1^#8|F3diN zzW9(F+#I1BvoAl#^TbwMCe&iBuiYk(~{d)LiA|9^%y!MQ6SgVVLNTMeM-|{u~(t`%-jz+6v&avE}Wr zR1TD99Q_v4S9{6>1!gN8J)r-NEtxzD)*}+0t>K;2Xb<%aPA%PKn{fcXLxY}FTN_wX zR7_;QPkXL;rU-l1j}+VcX(PLlKlZc#6|%$-MYYrrN|woM1s=+a?E^G|;Ypt~h^vf4 zF&6^f2d7#?QrGf*&A};{?)$5cA8P3#^$}Vzp}C`yhTD)TB|_hX8;2GQd-73zC7P1Fm{s7?9+=C8+C}bbYy=wK2mTIpRi|bT3`?`Ue!L`$r4C!4i zS3lzKvuET2sd9on`v)~_--$0{q)7W-T1&Q_h4Qg&XTi2>l5D$?gRqembCmd`BR&VD zKac^f7>3?rB;hL>9_V$P%O=zPE1Hk!BYYW!L-lDa9pX6$ZTZ-F&Fh!SK;RtA)@o#g z{Q%S9LHmJ?&NC^caS9L9183g21Jg|POA~2h6llxOg)cRC3ub)rap`| z>1P-DpHwCfdk?E`t;I9QniKQuq#*;kj-i5LoFYuyY7UY;YxBmij!uE*q09)n!F;Q+ zWo5%^+b-J4-S~SyVY$ZGW}DX;(UR@L-@De$H05S?tXreMLwSHZ(|)0BuXPi-94mX{ zzMpMI?|C#k2`hW2b(78b=6wyoks1cpD=9|b*xo%%)e~9&x ziTFDmf8U1kr}6u3`_AOFIFgmU*SdKLoTTBR^ME%rRrt-!kKs*>9qK?!|s{NNUtJ=Xl$13E6Li*5g#O2^GaVB45*fbH2iUbGq4nduj9WZCPsb zOGs&1VS8=!&AJmZ2O~}FP-dGJuT^l{Znh?nJ>`%Kz~`9s@D)3xp_dpZBg8RuB(1)A zhKAkPQVALOW3U3pXv@!!rT>QH$RESiEkD|O{u(Yf{xEe|7`wAXyB~plFTf{L?IT6B zMHK3TaXQ&?>LX;vrD&YV$azSP)}F@A$d7Vn+-#TfY7~e}qh2N(^>S|1*O*2<(r_0g zL%lFq`bc~h4=x9GKeEW*Rpj4NK~z8wkDK zg(`v*Dh=Rpfec>P!2m<`E6|W+;GOVGgXK6sAkoKLI+Oy~hEy2)yI$;o9WBu+vP55l z`guwA@z3$+KgXYc=lGL0z&wX-RiEf>ov;Vdf&Cix0F9^V3iQ^OXnj{^5V2oFFI?C{ z*v0__dJk{HBK}A1;h*C*c(VW1@mdwV>)7jfEipbzzZYK&RRc9Xm_Uuz@J5m8VfHav zTl4itYgbVh?)c=<8tqSAlLjHF9frKfl#MmFi@F}o0!kB4L)FT<`tB+9SToh$UN?LgCK@dieT9nw1RE5+=!B(L)fWkwmnQ8D&CQlzK+Vm#Qai(>7}Fb z$WC5<@||9DZDsAqtkV~%pKI~MA7QMlt<5qYills>zEBZdp?)s+q^pZoW>wCgn|1p9 z%IJb9^SXQizOg8o5x?sdqk8q@o$g{qpviCWOt)6iRjMEF{LRyZ^EBnWUP-T<4?b7U z%_8X}zItiOfKNyC@@-8W%B80dTV6T8t`=uU`RJZLX;Fu7Q{vN<_}r!&s#$a`eU4&L z7Cx$3J@3l-ijd;z4{Mt2EUdob$_4Z1)mC2NGf;T?%&Z!G>T*F=^!mDLABmqL@<%ii zRltuXN=I?ii#-Kea2l~qxEn8U=Ts`AJ!6>T00Qkh&3 z9a9I*y%HbsT!dmM5vnhVax78)(MfR@Wi7h$hH6PqD%s~%wP60W)eEDMAij-4A3D*` z{H+v#Dlb!AM1mtqp+lW0BGhO2G5@kzv&}PZOBeLYpNPc81=cAzkwm!8F9*5vPpo>x zCn9mV^6yHWzr9I1sdF%E#!Mw9hXdk^aFzjxoM2O4C!)@;Lzqb4AxT8WT_W6xk`#`w zx59d^hj#OaSuU=ee?_$YKroIjU8^ion?dG#VtQaEt>&)$mg*8d3u7QrsH(z zD=~_jcR2Bqmpgt~@FqHhYgu!7XI9qMyUQcPr&mVn7gk1LB{~sT{BUw?<}d0C!uaa? z)Dlw(==yUa%K9Y2MEVYi&YAj2gmd{E-h(fA@dauI)J;)wS?|lBd4|kkgQSkc@cNAZqk+11=JYP=1i1PLgpB$OeIdkw? zfBMBQFD|%hZS*IZ!^$;XMM1?|+fUhTU!v&3V+z1^&qcplSn$nVPaU3aUtjRR)@#@O z^7vT=ch#M9?29Q^6-*v~*~3MrHWtj|>!r!R898-W_vw5zW z&b#H%fH^CVOs2=$clJzvxyH9(S?c~rIlrl2PUhgqZzg|qf63K9zwX}2@zZnD?j82n z>W-5I;S|90KvQ@0+zF*BoX^3>vUZ=TwCjh5G?1y`?FvFYKvmrecx z;wrwpV)Bhc@0<484N(e*EE@5b1^-bu)z`RSs?XPezsAWMGKWk$Y4oQBH=T3bxjx@# zz`|2kzB2vX<&7!luDNXC)Qflic&cyO)T!Ug%AT=cQC8llv7>TEO*||2%(-)`N2o{7 zZ}ny%VSaA~zt`Z8F2Z=;6~8yqq$92Z{9*c!uP+Eo$?y-(XzEusIBjFU#dKGA?BKKu z2Fd^D0XcurRQxXi0F$@cy1|zlFViZ8kV4WpM9bx(yHNcYd$g#aE0gkd$>zavfj(o&e6@9AFTGo`0|Qhv|}zc5&pX?{Wa{VIK~ z=oj)3E1%a--#4V|hhL8uOs$uXA%_PsuLGLb<6lQ^Uy-j#sVZOR_QH#G3ZG=YX+Vf{ zY8rH^UvaNWHEj^dYq{n{FMqh@_4o36PV*{scoh!LY)hFkI4hRQb@?^(Re`Kz(Vz|2 zcj%Yvk$DvouO9j8^!K~H*D{_zDCGzJ25kXJ`C{@%i**`5 zaO!AEave#3)ZxG0qhubwxM)y{$5+S6;Hiv9{(mTAIWI5&@AzD*+n06v*}87Y&JJj7 z;@6S;{hr^HXMLKK28Ot3Pc2=$I*9*`gERVVN0$L= zUV=UYrL|Uvm;8fik*v}N;vX(!2gHAv#{NnRb~_=Yx%lo@XAX4Jsd;6*Nyu&TBNkf3zMcZ>jow0A6{kk$DS# zb>7T(txo+1>xJrImCoB?Ew}c5)4cseMZXt%Yx*dv*F~z8>ih6$Z{aC4jn~VS((9?^ zbe6epctjjJJH4OaWBSrWlH$`2Sg`I4PBSwkLWX8^tBqVbJ5?Z@dH%%xD1~k*yv~Jh(Rhgqe_rEx8n^IF*PHmGbhBOfL5*j+a5~QEErC8&g8aMJR*LZ=8{%Vb{ za?#(Q@dL;UT_#=nraa{*%SFFZ<9nGpL4UW#5s5ET-Ul__;iBKH@lK5!dO9bX<=~=! zL*uJl^z==6qR(;B`%zDXS7_YGCqv^|F8bjbFVMKj4?U*%v{Th#<|oCcosa?aZ;CJ7 zg{a3A{^Cb+&?wfYfxfI{*f&<=F4(8^bs&FtL57{9>2=fR1WnPnk&g+Org2l>29Ic* z_c$96zu(t*roiZSrpC!9%d1@D1ro%4CF95T@Q7Dv+@1exH13w@B8|KAe?8+p{pV6m z@5+v^nelFHNE?j9m?_#79`V+OPf3tf1prf+xQTNppq`38*%euDA-J>;`P^ZB(Q)W175PA|R5 z>s5`DKbF^<8h>7bxPMpUZ@BOS8b9R14{7`a_yc);!T3O5nFMj)kK3n#j(;%0YP>(t zS7!kIJ6O{%ci}@d-r>T(t?^YZJWJy>F8p+jFLvQ0HQwmL$7uW>7oMl_l`i~T#{2u+ z{6m`lei!}u8eikWOEkXKh0oM@rwcFF_;we5xyE<8@EVQpb>Z_hzR!h6HGaf}-=OgW zF1%6W87@7!N#i`%CgQBnxM|l+(7$Os)5T{c+PZ z`b#G5^EA%y0vQm$5sl{wjBYR1_#_uz#(009+wO=gg}*kH9N{w19}nZI)38}Tm=8Q7 znUtTJJ@8vR@H;jC16mHe76DFwHaP2rp3?&Um^FQB%euf7=&jX(ioa(DW4=vNQTw63=hxF;<^#uH`^x$)kq1Rn# zp8p5^BOdgdJ<9c@2Ym!x_TJ>YN2hB#WV}v*bU)R2mL3T5d_VBP=;~2<4`^mQZx8%r z;JxwB_Q1z@;1fOYslX}S0^I@SIew%&Q{$a_AjtFez^~MJhaN!l+&gfZPwg$AO&)lM z2Y#mq{wEK7y$Ajna4Oe!n#jY&^ZNMRrSXj64EuPF9=H26UU9O*dA=RDfAipf4D_w!l+@EIQX91nb<2mT`ue5D6|w+H@+2mY7`{=5hNE^w;H#?w{3 zsPP8u-h&=fv%S{K$-r69M<_le+MncVyyFaooAxlMai4C0jsGdrxO%q{XRUF+-{-qp z<8^xAWa$4@zDn2hQ?Af>$=M1w z^KeTvzUmx>oBCa$@eG=f#AWDzrSXcO!q=-G-yb!eGerTWUN&jGE|g6FoW=_Z70z?f zxQ!e7X$n8Aete$-@2!6OquuHaAMSx;<5lf~g^ScjDSfq-m(Q8EVBvL@3+Ilit6Ufz zmE)T;XI}mMsyTB;0#!)(T=gjHNc&vC~xA5=AEhGUK8SYw$Fw25$zJCBlp-@k~FS>BlR2 z<}-omConzq5gaC{Se%my>OXUsz#JxU+=(g{bDO|?U>1lA&7%LzVIs$x$Q&jz+lI<5+o$1E-kBaiRX;oTuV4pM2&3uK*mTL;pEeKJ&>RZ+3M$TlnTo zi(E7%7@2d?dFM?pES*ytoDwOV@U-ga)CKj3CZFNr%=5+7i-l5(S_LLjI8m#%taJ7bwScZ;EDE71C z7QCHWn~o%_r(8e1@|wEZE9YN9{2}QGwy{I*ixhdymGh!bmZ#P(n9o^CB;aJhY}^Ht zp8I>Txn1W0!NIw6iy`W{Qx+_oTg~-*2{r^TxUPC`adqW{EMrrqMR4R zyRiP6%PC5<5)UO&-{lJyC-@>t==%AU*IZepHXS1=CcAPm@zj+%ZDHm0r3=ohtX-sP zQv{VRfC~fV#nsr%zc5_6sAkH7#leM_GYQp!&I=L^RWFJzT)=9^r6CJ)3e@WkXz+#T zrIr;guEXmV7gs~}Ra84wYEL_>5AE32&(1DvaBy2AktK@e#7w4?473m&NTx|U&0WkA z`_+{K(cX0}Z{Eg^vY%H1@zMh{=aM=oEp98xUdcQ)d$3WPnmJJCAsIvrrIsc>@f9{N zVNS!;fK0-@eV>ycP!r*{bU~s_;vE74H4#gZBB3BUs}3aj08HA;&&&x#JTi}ImDki$ zebX~)9>r14r81;8$d_JOTRpdEK3q!uHS^hVRhlw!&lBByzGxUjLlm4?%a>V?B0N{% z0o>C?I1OD4y_u&ZoQ5t2H}iIc)105db$6Nh(9pu*rMRby=qKRM;N=A3BAkXC20uU` zF2ZT<(BK2~c#3cuDj576fqzfn^tCs-h@OTJhJL2NsVoMcBXAm87`$EMG@Sf5fv*wt z=<55_dIeq$6F4?eJACL=Lb@nFG(<7{FCzdK{S@HO;8zJ;=KnTfS#wM zV9KZAf0D-Cnr}#7Z zuMqgp1l}m{4uRh;@Rb7JsByO(c4^$mZKTfkUV(=MpSLtlKR*$8F6Ia6a`P|MIMM$c zf2LgOBkQWX|1R(a9(j|4Pu`C~&FI+XXK5+3c^ReBL7Xq-#e{xYXyd8h6X5NaIF6 z=~_?B{z}3_g8vM`U+VMEJ^0hS6ayZ|EPnE!>KL1?cQf|K!xRn2+0{^W@_XUC9 zE%3O&?-BSxfy;U^ONAr{SucZV(>gA~CH*%9F6n=)agx96SNxm6&qkP$+noZJ{fgBB zm+ke-8mIiM5`2D;jt5+X{|% zY|`!0IORv$*NcK)@_AL@Qa|7D;By9_V5G_`^(SB8QhzQIxYVC{0+;%8y}+gZGznbl zLx;enKK#4DCH-#&F6jr;MqOO)`YqKsiCy+%=L%fv$?pUosSlep?ymRU9(Y{vr}|R+ zv#@_(;IiI7(YU+b`|EX1%D?23E^t}zLp1K@bH2c3z0VT3toH>1m-T*=z-7JPCU9Br zcM4qA%X)m%gU>gIaB;c3vfUr6ad)|2I z<8D3q4-fnyjT=3w)q2t?aH%JoHSX4vX9Yd!iQ)5-z@?t-@!*qkB9&H^SL(@$9{48$ zmwGbz8woyAPqG9q^<=!jrJhU^xYU!G9(a|&r9Le5z`y&=L_VdSjP}6u1upgEE`duu zc}L(@ttWW`mwIxJ#@%{yfuJWnF?=o-xYUzNJoqdWxYUzo z5BxjdO2}F2$pnE*JqZh3>dB=7mwK{5;8IVPdf=@BmwNJZ5B!pEC-N`#WR3@ZrNE`0 zEETxalP3iJb0lT_%ubEF_2h(;68U*R&}R$$F9JVX;F7*X;FA6-jgy*PAowg5^bZRB zX9Ab?^;?1er=af?xUBcb1TO3GMS;uu8Zit^ak=w3UgM3tZOw zEdrPI`)k3U>}#C1)87faNaW`}!RK~?cMAL=fv0~554fmYQcp59?$(p(f?n2pjlgBS z-zacN-yv{G|9g$Q<-bnQOFel};8IWC7P!aH%Ix3tZ~SD}q1iNkHq#n*x`55*K`=o_sEFsV9-)B%Pjm zQl@dYp8Q16%X+^@;IiHy7PzE;THumCu5q{g|0d|Ao_r&Vv(NP__2e{xOFfw^aH%In z0{{o#Vm3R?tiS*9%o(fFrZH=Ipd=?12Sn!E@@L4ACCj|W+0+({=68I)T|GL1XeBKkdl+U2k5g8Yi zOY%8Y<8Ha-Y1}Qh$pXI+yo}sJg1?m8bPxVDf=`k>1%8p>ANAn>wg>+~-$i6x?sA=^ zaZ|3B{fh1sftLU><@&D1Np8~Lj`iR_Rq&y58UE)Be2U z_?#f{-wFIQjl1i2q`;>O`dqm zW`WNU^t%LJA@H{ZF7v-%;8M=t3jRN%i7^sNGy`n*@* zQlHHWyp+#p1fO9!c)&%t)Mva(z?WM-vovnxGfC@7g}_6IY2;Ha_)C5My$Ap21ijSf zR|PKhYQG1cFEwuRdArVM|6Elr!own;$7eEkyX$48peK30$6PT-C-C`#PnX82UZh<->%l)`oMK4yQV)j9_p7xX_D__YH6t-!An_=5spEbt2^;sKXipKCO3%!~1HWJ3uL(YX6}YtD#{~Ympr4bE z2V5k#SMX=@bDhBN68NC+;Q<%P?MD0=`jZ5{MBt|i{6_*GCGe#J4+*?M;1>v7(oYw7 zqoA)9xTOD?z?TX7I|cr)0{;(zHwpaD0{?-)cM4pl8yC1N*8zb``Xd5w6#NIAjR#yL zf5~UCz#9=}>g808yY0O|(34%Pz#m=H1m28i!{-W(lb-Am_#zMf_Y3;Hg8oqt`X@C` z<)Zwo#UEYI3A_c*CO^9b|Jw!rzMz+UJ{I^*g8owvJ||295iTn4PW+j4vjr~O**t;2 zB9XNJP2iIMT!9A#{nY}O^fw7S zCg|_fxZA$g3i?Jtze(US|4#{A@_$p{lFxermwb4WG14=3v;_Bb9Wz<|5-$6t-_^L= zuE%QJT`u#*4x-8h59=O3?2W z^s7DS|Eh75&q;_w*Cv5qk7tw5ZGyj)+be>eEcl%3fnVr>R|xzy!RH!*OS`y1;I9k%C;7fC+QWnvR|@|?J0@)bVnHd zZPIuefw&C5M&s!UcJO;Op5ek*X?&;)|5)Q$E?htIyX|yu(xo{ax^#6p_yJu{)K{d- z&>ztJ4=C8def<@%T*ou?=3K=0T(~(G(dzMU@IoYxo7@-Y0(d40=WxH&KGfD11e zq4JSBK>Zp%=KQxz7jDjfTjIja`EOsiaC82fsUO4Nod34>nB;UD^?dZlF5H~|R-hHy z@GZfmw6!kWoRgNO_0I4& z=cJXnaC1)DT`s&%`%T}dMb}>wt-Kt+(S_=_#@sEeuB{vu#UVYuQFG}$kWrT}TI3tG zZ~;9KdG08jZX_RZz!Aq$m=jjDD4HO|15Q1{u|4=2DH!9Msnw&VT{z>cMbXNtt9AV9 znmO|pR$f!BMEDQ=&q8c6WvxyQuL6B{Mc9G(#`rCRo`f4RnF0go-{nix%_==^v+zji zXmxPTVLx5t+N@P1{J-0kt_jd?$2_u`5YPW=d|I9&p4uE7zW3<#zv)WQ^d5Sl-7DvrC}?h<;^)wVxc2GzSpuV5BRBKgATUXq z_I>%3xHs_(atm$3b8p*Q6=&+WMBP5x`N{1@x`Bl#bPKNH``zqhoB_kkbK zf2;|9L;YsprvrcP_~iavD#8)UXt4&@nXdf1%RdA(y~WRYl%w;zcj`|4cgLsm#VQw8 zkE$BAV00F)9Qvm(b+7(U7&ng5{4seG$M9Xnu?>Zh^ZNM{9R0p?o%)q&E}xg6Dd2zt z-w>Qm8N38v8Q+1wZNZrbgVq__gER1%@yCknPlBaI_80hC`m*_KDd7X|c_?}3x}(Sg;ROy};NTjHA~m9q*q}FfoxC( z0+4R>dlZ~z?+V8_!Q9SujYvmlFcL@$w<4F3827t4vk#Nj=pB4LR}VqBf;Mv_qM{Y*tEmPj2ZAe;n1V{;TO?v&1lai?mz`@8e3;UTuRU1V+9 zk6SmjV<1YkogQxGber;0md*(;+eCJp+xde_gXO_XgO>&8Y=oY}N=dhNlUUe($)3rE zW0Sz8`D%#Mi4Shr3|86iU@v zLMGgP4wXf#Ru@7VC&#;mwrS{J0Vz39IVdl|OM>=MxHRjGr;6;S*r{y@md==Ne~uDw zwN~#5H@%k`K{9DgNBveCO^3tf+0O;-zjc?A{qGDm?f2gnJbW~0Z{`EQLZomX$eOYD zIjLEzyO7k@ki9o(t=^2=PD&=&^f&*~2|=W=G{+jvl}~wtK-OP(2eg8X&>H>BwYiks z`;^?@f_7JTJ8}_jMcxYSQ6W1o+_WjvU2iHkoH3cD?yd9YjWV`m4KILy56%qEppv7& zHQ|qBV^ffm=bDcAuRSZ=%K7B9n!eZH zYTHY+O`B?jCPDbhewCtHrRP-01Wbw6hTFo5I-owwR z(IR`3zD3Ozx4daJ|0nYW<$ZJ$D^>ajP1{3CRm#+;&yrZl7fr8!ZZ)q4S<^m0wBNev zPKx6A(T3s4a@M{+QKH<=?h}*iXX!9yrOP%^K9i~ue%nia-A^ljCX&9(Lw~yOf}E+@ zV5^97lVf@LG)d7z>@SLGk1H87L8R?F+C zdOX$Psn%+F4o|_RP5#i?a|5MT?0J?l%$0i`A^RiKh?8Yzs%Hu+;JPB4&7zQO^a4=u z#T2C4NIWemw)chYIALjF`z2Gm6-c<;YQ7q65EStmR`r5J)%LgAOM!XSM|=`TNTLt) zMW3$dgH2md#%Q3-TCoL41epp4yN-e2&=kktfsyEXw)cdP_mYsc+Gr$H*?3WCDmq47 z5};vwBj2Kd491oYFSI`lT18)?zp?&k|6tQ=!=pnU$^!r38rq)}8nG?-?A{R9e#?%f zO+{7j6<582S}R)rM!)d-xB7+24XzJ1eK~yTS*<7JXIL$H$W`u+?hMl7Q0s_L{wS*@ z0IX?)Kisq>HQcm5HUGtiw+dUfMUQL!#@HdDmJL=*3J9n|BmUiC|GvWf=jwkOKLP0r zYwyt>p^u2>CJ13*s1ddgcJT}fj6JIR*Y@UcOJ{TlXR%9FZh=`%@eldv_Fo$ zz<=IPO4YO}uQ&e*16fCvkdP_VoF5=)((T(QG7KQIF!y~LG-Qz>z`{a-0Ci-CakusO z4rpSarL(>!*tFSSnEzh1np%;xV*3c%9O^DO-MpbNntbQH-XVtIi zUZ?cHQ~w4*may}#6v{RA|5R?{ANJJCG?04o*$8@3C&K?Wy;sKlgNJC;gbs-PxYIv~ zRutJEqq3shaKlAJ0~ta4d2*#gl?2fqqpju^_8kfyW=c5>W|vWaELkk>hDI-QYA9vt z7--o^TK|oUMZM8DQRTmBQ<=S8R&z(M?iXyHGwrRtA5M-FM-@|*@jdlEnj0ZGIK<4X z`s?unsV^iK(R4J`x@AMt5&Z8A+Ajoiw-j0r9?IJgEky`f8%i^>$SV9om8di@5*nD7 zD23HN0rGa|%Z3)12x;-LWC+|(FbaXp71>Iq(I*KH?6R8w54CSCodwn{UBxX&3#?nW z;K{mmeL*vfguZd#jLuslev#`yKFVP={|!$>)RIPZhK#~ft8oSOW#H;t3J^erJ;rLM z+uTE@WgvCVqmVSK{V>J0_e+C7M?7qI&FkPYkmlxrUXA*|Iuj3p{OwlrI^?^7ow6N}zhMN?aTJZe1n?AxK%^1#r-mfcIQEUtPk5=;LJN=uDl(fZfnQepUTsYiw{ zJ)?Dok9_L4QADU|dZ;x&lz*<(ax9*E_|x}|KmEvRiGy8`{ppht|MtTCm+OB=lF?GY zU6@O${6X%H_;w7GxF4X0d}z_EIvG>5I>)OpPSjBrcS4FI*7gF~lI9 zbaKYoLiQMR^g?HEIA_mMH{=_g97jWO7mm-Tc8{&3?IQ3_vYz-~At8~m_On3Yb_ARz za+ZTI@w(%jaJu`_(!@;(YmsMfdHzqCe9OdT7^KqI{&HPo`+YWWpH!}*`pzwIc~ zPHLRj#_vPP=5>(Slf0B@>@Jp9d;k?JX{@3> zp@iv3vc?2}WDR*fgy=6x<4du^3`7!IKvdBG`Y}KUE{EMSLX!jbCEA&^g zMSo>u#C{##Bv*}EDTSewlBy@=18GKq<{^**es*B)0nIG_mj*KMKN3hkXwAZu!>q?J zBe5P6b1AwA5WTuXie`3Uqo+TJ7eYIe^V?nm$jiUPPwYvb)ffF+&;jt5^>H*>sl`5v z#{1}el?Kovqq;xWWrzfZ5=c@f*(k?PX63Ix20ugn(FQHx-1nRE`Y$aa@rLbvJ><{9 z4XGvWQL=Ht-QfE;0Ij+&vv)x`$J zNCBYrVjjpWU07|j?+U$)=rORIp+Wl?TH6S~W26PS(#T28Aioq2J_Jg*K;|_k zSOyoCPBRRr0Vd9v{ca&^m&_mIXY~BI_dz3l)5R{uARmoNrdhtxt*#n(qn|d6(#+PW zwW_6^0;EslIqID_i)@@7$_qlw;+k3t(j-b6V3~um95N)TkEXkF-O*$5TePrxNnBSbFg2-1}9h#H=> zU{`8@GlR0{kcKILM7P@OARvze*dNht!XH68+67_!R6mCsB-(wOXppk3mKXpuNMxDT z&G*nl)6xFcO;6#@QP%zqqr9xW`&&KN4-)gvR4CId@~U6R%&+w9?DUv-?%%M+Gu1mW zelT|0zrnljDAxU?Q=q|sszC0wkkQnzYO*OJjF7qn0*Mi_SRpiOVVdSZBW@EQlQjpH z8!&7)2WZ;|+IIM$6zC}Fb{$!-N-o^`K%fx>ge)fNm3Ux&6hcwMt!tSd1+H=e@oQ>9E5 zER$s8Tx4qu8Qe-JFz%pL2E*h3lQ6m<>-S+1c}Qv?I4d~2uo+#ilgQ;89YGmhp{XWh ziv*^sIfi)@PMY9V4vdPQbxp-5J$}7 zIFNm2etBS+Rg8bQ$)cMqP9XP?UPz#)0{bOWU1z@uAoPd<#cmJqoHK&T6vsrXpw+n| zxmD1wU`FY3sE^sKb@Tkg`HTeOU}lK~eQ-F|%3Du&Hs1+?Wj8m18i} zPo?opABJNM@y)u7#HGCw?v(Q*Y_S&H+CU>R?mR4)59Fyh#565V=g+v=&iMP7A5rU* zrQ`ymff}ccza`KJ281o9?Nmu_@D}X`A7D4Af>(iBWkfr|_(z|4wZH?>*dtf&s?fQ8 zN3+qb`G2c-jvvQe(cXF!_anQ(ORyCpIJ3w;gqa8X$zUmVJ@61EVsC_^%{cXdZfp{cE0cfhH2>i9AmYS@i3uQkC1Z4nJ{fE zXY4?z?tBxYY_bx~9Cr!6SxySsVgP8hY(V^A(+Al5LCYq{KvuBn?ZZ~fkAWYB4HVh& zB70}Zj?+WPex2D|HiweQLVCJg$5S?kpwiRhRnRrP&O-$h*~^LtA((mIeWYyeqZ)%k zdE#dxLWfE`j`Wcqm93qe-t1ZNAA*3hqe|#xMb_05=rMcN)dMsonizZbSf8yaru{DLBp%Uhn@8DGGz16}3!7weVLLISo};(|&U5YxoV&g|M9NQLV7w1)rK4Z6 z0v|(wr#}1%fzUTdMN834SK2AvtAxEI_5&_^j~y(vQ1jrb&DN@KqlXS#b|%^F{gCHk zE(Cg&i_z9MliAQ(?-d~B)!)nL<}lzIjNs%D3e)a8#Zx>l4WY%f@BwS10*u`!0d%cDNB2J6BD zOty}muy;mlfKn0CWz+3YIl%TYYSY1OiFG0Vq4enhqWR5%MxiI(KfkV<5NvJMbI5z24Ma-?B8tf7UW}wtCIE+nOHH75RdTu&xZ+VHh zBlvdu#lWY4cP3%Qo5->#gx>0)2h4vr2k4bYddLX2PUekQG{VTCrc*0Arq{9v%WOTH z&LGYF0i$iJeKx#o$X|;+elX-3 z%1i|cT^9CZL=yJH1E6Nht@eX(c;T3;a#e|Vph{8?h*E+r(_|r{r-l9#s-^^>Xf7Id z&?rK7Fck}ktEBruvwp2-t#}^x4cKbJup7pD$B!@KW~4wQXSG$59-Dl`X(AYfEXPD= z8+92-e^B!D!rX1eRa;1{Aa)*y7FRtVv_FYd?W8>lw3bZm6Yc(r=k91Zx-`t=0()zb zeK_R*DB@oqZaR=s)O0u{;-@V!ldT7Rp%F)*_rdi?hlg^H;K5Wt1}dP878iZk7`C?1 z|6#=cJT`(A=0DkRNBpOdbi$vRd?(6pwYPzy4;j!(f@yCZYsF&GjoR?zKgJrdk#iqa zN`pDfq+n;ny1o`dOz+K;M{rl)^}Y-yEA z#cLX!R`cCJjIqF7aUi$4WP@q^$iB_&1k|n#tI-KswN7ZbQ?dT%LLY zoLC0L^Ot21HqmVS}2E%oqib1F09JKXv(&qL-Cfr44U_?QLo%Ez-qpgvvJw891SyS|H4&5 zFKBE+<-w5-nW1xzs#4AtRpPAU>$f`~FUX?)%!G`swv)iwbiMUH1WnzDO!#=|&FAZW z!q}6e=MCGu`X1d6B>ESLq#ADXq;Kwx-fFK#Eqld@7bDQspB~>A{daoO_wS4TeReY5 z>uFD_a8$^S_&mO6dFlD=X|a)k;G+<&X+BUZRClyn0o|Ka))zF7sjcI9AE>S}{X!7M z)ANG5bCSssj3ValSobk#lIG4kzp zH~b8QTSKKDzXUzTTRvr5^Edox4+!2QB5Tyk zc+X|y4gI3!m>PZ@&<=hhNN1|3sS74>#tYD9Y)sKF2qk4Jlz+r(zXnyNW0=L9Td8~O zyyF7C+q!=(9G0W6R{M!?yq@~>H)5k+eA*Fbp2_}&-j`9%#Tox@bk?ZRWo|-+sPV6H z*LV|84T7I6w4WyLs(mQLgC{{m+0mH+sg%HH+- zpx&{b8W)_QJqhqj~bhJ?Q$MW1*+h7dCKweCZe*C9qS1M+^NX)_C%W1vJp8&;nJd1M68(p8PAkL9)VUf zwaoS|>;{a@#Rwf%q1+xi!MxvziV)^kc<~Nru=Fa9TB0%sCM6WrS&ph>Tt=-hQKzez zWh!RVrYyD6g6<$*@puSXQpxI>51whLVOoS^>ly=!J@TQS7dzR&P&gV0II|VB8i~du zizYWPlcD(FodHO*Z7$M6Rb|mu(K6gyt2dA<#2-8acKzWMT($Se%BFsKAsUaKD>Cl& z0iw~lGpcPh)B8kW^m8zjS`p|ZC04rtw&K=jHMi)Iq;l+1&{bb zxQIl0*p}LdKOy=lF8aRw578e_^duUWT%0shtoD6yI~Yr&HTX!6DU)07xbBAtb420t z;`Gk1TGuglLn>bo|Gk4JMnANNw+~syuVUBNO!Z5ROK1EMNUleJ&}yewqWa=<3c~G| z@CrTIB$rv*RG;RESo9j%KW>S_?vx=W>`rSs%pdQqCEFbU54)p@5My_Zxc~35J7aCp z`JR>*4N*{?url3i+27gy(?okr`lTF7{906f2R*BT$EV>rVd3#h^rH#|4|o4(*?Tkt z!><;K@DrUc&O?qmMEfmSe{7cySq=L>x!>uDqT!XG$uQVJ=*83pj<)@mLzhfnk&VWRwF{K)jL2(&IX4mFi@iX{WR8EPppUs-2?B$p&{(yKeEcGC$QrqYxed~e%xw5ABu*A>ip$_ z5~x)P&Fw=GFc*rJi0%sLE(hnjwC_RHl9H50S|N1GnNDRr%{)A%rYkPnZe=3}dbbZ! z=F;J;5>6fwb|dMXv<+xjAU+mO#;I>QWFcg~i~5eVrUxKzYxT1cI}o7kMyj60BzM)0 zNG!DlWT>BUJgJQ#R?D`f=U_Axv7gG_(Gj)}6xp9s*8DH2`N@NrpL`+We-YD@n58@^ zG-9Xf`p`=cW!v)~Tk-^|so4Ko#J{;P|AU4>q7>BYa|DNbjNJF;9xaT` z#(Fc}C0dFNMBT@l_S=3Y92-i9$Y2)gqZI4GN<7yGQ(;!Te9_S5bq49kMit#ecl?i2vn!zC#Up!QoBZ0mOe0Sfie> zTK~wJec7&DBy`y`h;tJDX85{?Bs|g5p|0^Mzjxu~Qfc-}wG|)>LGH6hCRHK+kG) z|Ahs~wcq^(RAhgtbOsGcI(hswn$hQhhEgVz$6RtB z=vm@F)__>C%)vtxO(`P0$7AF{KC(vc!rwk-9fCK=2*FVfeK-yE7E3)TIAT*Qbe1nT zV)K;Pq*JHFqG$Q?Kd>U7_z&gpu_B-QkE$&3S{vV@6*4pTxrg8b$Ued^6t=txH26?D zxZ;J&k7*j@D&JMK{UV1}i^surFa$jRS}>7(bDBoKu1Kd28u}7}d&$(7%BB;N6gmz(=1LrV6U2I?DJ#&oojuV6g=Fo?ZHR zsA9@P1)W`kEk`&W2IE}kNSYejoVW^dB?LW*6@f2x=%U>Y1km;bkL%2vgG$ zI@n>HBahkIk7Kq93_H9F#Zw{Fxlr!TKNmYjT4>Zu z>J*?}7FtqN!UvEdRU1#3Jp3<682O~)z-=qBFe_Li?E%L;iI7OL`(!#(NG&`XMqt*1 zgPc@M0-TyAq#=e#h{l^eQ(Ma`)JztRCGAMXKnr?T1hc_5(nM{LXT|t25-552r$}Jk z7?X+ zB(YI#0J%o3!e%!E^19q45WgJ@r0(&L)!qoS5C0OMhj936XC6X%5xJ@m{~btZDY^_v zp+^EMgOMs>kr9#2v_C-uO$Y^(S&%TBDhcf$6&cQ;fyfS7qqf{Iz5e?o0cErC{piJ7 zEf3?rsdUFFr8K;VIG9e8tM%rfG8hZmN3~Sby_zef1ft(c^XRG8%`{Hx=I+*4N9T=z z+z-+3zw!Q3jG$?M=@T>T=ci*g9U2hQK-GZoKGVd@kLYc}QK5n{Gq9a*tmfA-TB2RV z^k~*Ou?}%H=-8+pM>tOz(>W4mfJSRO&5Zz15p8uKC8wY?sp&PqL3ps9O~!Q~46dan zgX%Vq(r>*buoFLU#qBmH1pmAfH|!8hYUDUGd3}^l0}8VqXrC6+FDbjkOF50^PrCrJJ4k*5{khiMCY*piq=7v$1&AD-4_;ogauN6a*D z6r+Fx9I*k>Y2Z#dPts>qCOYg0uaDCfP^3wH4JxEQMur?fnC2c%Ey8!xEq*L+5n__W!1j#;-;2;-T)J66-uzE$YP-Tpw=8rx~h5k>xz+ zPGtngVX1Qo923;R#9345c`?RLLp}@!33Q zNe#=1;6_%4j!!(D(UAB1Pw^TwSKO~kxUtN5Hlp?PpVZ^=${LR_UF%a{=Y3t&a>Cy# z6BMhs@mly&F*>0B7A>1V0nSrCfeuf?yT*s21L7zDKI#44rRgkl{a$o0`Q}p*gxGtV zZ&xQL$nmmzzn9NgWdBC*)4{*Nxn;uY*tx0kVH$c&7#N`%hDm3~Z`c*-H|(%6-fE^^ zL6JHNiv8IxJfj-R1DVQsZM^OVYxH-hQm^|Vxw15?i5glukOc?0?6%sDAcF1*pXiha zJ>i@*pN~7j;8u&*d`53xwAdPb7IC`vM-E~ChBJE+4(oOIH)Q{|tq$oJJ*L76J$B}c zkQ8es3XV0n_$91e(7z;nnDGR>wG=vBgSimpdz7ajy{0V7fzh3YYYrNwwZIp z5mcv%DwO(yl+ncWM{}SAJk|j7*>RlJV-;@1`)k3Obedxx`N;wd2(lnr+O>$-X`t4! zX%5inj1-6hsCXEotH!j*PE|WVO(-SGq0ixlr2_`&8(a0XE= ziPKTLo%(?%VYl*w+2g9}id1De@QAI(SrPjI-n1F9?+TD!bf0DP5h@YJlxJSpk7EMy zP=?=v@Y(30TFnb!xM6fwb0``x z;-{NcP*PSKOm2=-=(M1FU>vIkrAW&7^_{MhWSvOWV=yyVZ!;{_4}y^ zbsP^{$*V-a{}$d*OWIG#*dIh<^=1^O5(~#}2|U3;Iu9!XWB}ME1W}>#uvHuT*2sOl z3^;77!EOG=hLhsMQ6SYm7U8@@%(sT}4`PCfi%GMTB-W69sL=kHSsRhoKXXCTq{F@_ z&azgs-zImURe3i@Kcd&00bcIK4d+YV!9qUlIKtN4J* zx)L7QHF;~(euzF#7?PtPKG#$ZKFMMdBEW-i_i!%g5cB-}oizN!#NtCkN#geYhqvOl zh7R^7$z%o}8h~eY+&AY4%|QS!S5Z$3{WmfE<*tLw0LdnP|6!&R=G?vykf)#CjzF>p zIz%on7N({+N=l%_-0h7jWR?Xy_Vq!hS6f; zn>&sbl*Jg%i=_#|Vd}Ibbz(g7qZTM=j+|zoj?<)BM2a0ZG-y?w07VM(&V;3AQ5EBl zR^2-Bw}ZZZa6Ph(c>!7m1KBW;@d_5m=wk@jn|sDfL^kFBWA5GKqpGex?n%NW3TCiS zOO>aNHBzVu8Lo+-AE>s17y3!)M_+L0PXI zI}6|Qk>>-8r3wk{8Xa~SNG2@$axdI=kF?ktluc|9Zo5|Hhbuh0UYf~oCgMgqKjb5| zN35AG`AxL>spZ$q<*Jz|pexP98&~AYV+JDdM&zk36_KU9b!8kfl^V^#!rV-RZ8QB6bSY5wa(nVyG3k|yE$c^E7A zmEVg^KTn#`yUP2X?0rAZTmWU{|8L)m^~D9LBo&>mA1>V0b&r~>twuG)@wRrY$sG6K zG+hs=(`_P-{$MXZ&=Sg^(u01gd{g|P>mD8Fq=_*(!_9KJ7pbS_+A+HJ%QdGR4@6FX z&90l=Es$Fu4<40vhs);M{63jUSEj#tfLjekGkkoFA^)o&6reQa|?zqHP!vIcJw|qE?kKnSryxhPZbmHQfF|D zwGlgVD+Gp8*{a(jQm7(R3amq6SqptnzkN<;bz?yjK>E>M&Ut*>`#-yhDadOGD8g6QSxxG zC3rAA{i)$k#Db?w@CDvy@O8N-W5b_CcPt$KLD}%fVYvAw3oZmOWQMPP7((qg6v_`UVS#qd0?47);4ZJ4P2Pn=an==j zM8qqo+6q@g`5yd9Ng!vXvHCJsN$YP}njusYT$7yu?y&+zkv4=^sRs}+?qS?lL*&|_ zC=epmqbSsBh(J=(LsESqhDXT}T2e;IC>EyiD?!Kh6?5QsgO0+Es=$VRdW8Jaj#x5V z?1Vx!>R)8erXO>Xv)gf2t{X%O-M8a*b#++LahsZV?*Ub(MNEc%eQ~KUULIc&ycWD9 zsdtE&zW*ebfF{`{{gM}RKK-=rCY6OG6IogB)fXT-6%J$vmQbyPuM8~|LqDvST5v{P z0CwV2%XjE!$I}N=l=MNmFxDV;{m6P>1uiIdBZXXO>{p++tL(K)s_?f)h93qU#rfqRhPM<7G5ZhaTD;KtA2{_9m?sXdelIL!FL~0x^3;nl5K^GMeQ2uh&FV_|KDx0!>89LW4w&ZvbixrR`oUd{|K2Y9Zmt#Gh8D3ybV zIY`LCFmo_d4vNje962a82Mgj@Y^&?~Av$P!ec~Ra#JsgfM7TMxSDjL)%tK)MX{-;z^Y-AH?eF2M>kwa%>s{-I=-ja*tA_X2o~|sw$O8ihjJ-6dWD8(PqY%WVo#( z^)MI6b21`olt4ET(}~9|z$tahV>5P8PdpQ&=bLi5DNYsJ+zbE9%XX2mNN0Wv$`&Pa zPY2i9_T~?)r$Tw=CXf|Z)sQ-2Dd{0yC-ibEqs}LNCT&f*TpSkTo9>y3NM_zqYRrUd z$@HF?rX&5FG+UtdFAUio!B$>V#^Uo~}_gOivq`E;tsg>W9`emXqt z(XO3p8Ko4CVakL1HPXXnfW(LN#jbBc2J*X%@M^G7yklvOzRuGQg+L-^O*gYRo?-G6 z9g4@U_(FWI<*}|7xyCT_LTiWcy8rl|Ta-I=ZrZ3UodciO{>46qF%!-LxJ=;>F#n~#X`}r#3Q`f2+MgTtczxnn@0}POr#96 zKLwKY5P}R9`mwGy8tkB~Q66*zwI$_rWw6L~k zdZr08Y=^F{8$VM1ZfBxmo=)Klz-4+{gxqD5eQ8J8WWu&?27K6hi_A;$%YFk8_q+jP zH2l+%|Bbk8CN@bNpzE{NxA9~I-e1)p-2k_y<(5h2vCLX|EK`5I5sxCuYUDtOVZylY zYkD2DBQC$}_;6}5zPW`9T3hc^C32)*GnbL-=kVr(B;Ut~1L2~=c+d9O>p92Cj)7B|?iW+8inmBDdy0X4)!p2ku5@t4eG zL%yQHLn^+UY-*sMlPTWUXMLg_s}|~YmV4EycFe0MT@ybgU%v2Ne#Id%Ukfg-@csD2 z6%WXf$^MZ;^J*!$1;jRZlC96X$Wh4|gTRGA0hMYr?VD%w6(J z6D%G7O6id}8{6_$zA|W8@HysS`M6t@@pUvd9=%vy5geax3r{n2y$)ZM^#l8BjPg*c zRNsE90FL@OYM1uVa9h5#a_hVK_@#{$euObIKJ6AOIG$u3t_$Zvi7j}o9o#*5Ry~e< zz`TdfJk|MDP^OKJYb*1N5GL8^lPed)_=n0dw^mti*_}VFV^gnu^b7s6k&atJXbaU| zxF@gULHK|2#3^7B+=j$A1iss;+q2~FEpJKyla73zv`S`a#d$G0?4{}FS$$7_95&q-9_Hh^_J{!QnPglq3TknJ#zsn5hC37z6j~b z>?bdvhZo~AECQ9`wU^?5b4D&m<;RC{DYc?7jtk~tQi&WiWR3cDr-{gaY=t~F9mh?| z1QJ41kx7hUeNbU*r`*WL4{xrPl=2;cVysb)J@IyxSsp@?j>nTbh766VcNY%8I)5Y< zynt9XNS1PoBn;?f&-2g2qoON^+Gzs5HGxOGQBx^5#D|GwB5uB6rDh=U@Tgve-#bFS zIEH5nMxaP|>oBg7l=>noq#8t`wRDeh3qfIoYv+tF)S<;d*b&&+H`AnuBuNvV8-WA^%21U zIU$Z_TuXLwqDY_6K8Nqk=nFB}W=J9Q55|){NH$E8;YJziEhfxYowI9z9GV-i9rNt7 z9%5p3{yw==YMwvRSCF`)BQ78h8|c@}%g8ZD{kpQfV~h5jqi@ls2OfT^(OiGR*>oOV z1t^1Yr;Zh&ob>(6IDT|V9=GFwCto@A8@DTl)2iT7s{F2y%nIy$RQmfg`2pZ*SX9OD zPdttnFa;lC?N&|vGOt?x;I2K_U z0b_u?Voh7u&gJYcx}d4_0}xWWh?#RJC=a)zzy_J0fzjU+F$ZmGO;OcNZh#Iz8>sbk zJIhjcL32<9nWD<n(lu`39S#N`)UaPT_YF%)9+ig^ftM@4C#KP39qZtDhA> zk>nRfF`JPI0o0B`NF2Tw8F2)iZE8?^ke&S zfK@sDK))O;Q0A9)y46rDk*^32B0&$2x;`k+$Cb)=oQ-MKgg*V_IJ%aGIflaIDP3i( zA7z`#R7rksM*k9I>t}iTC+N@{#K0)_wMo zBs(2!{R|5)%hAD6aP9u^4tYQgU)n`G$wOZo3Mij zRHshKJfFH7qt|yM7^vpTG z>!Qp+)*kBWjiQ#Z_`vk*fNd2zEwCnw6HSrlir7tWP1ysMONNQFY12)Tru)rH!fDy5y+F zx`x!q6KX~_)-Q&>rB#cQkrQeTuc>WLNv7jQjzPZ7)eTT&4kh1nn`%?F^@}5^hDZ-8 zMK^L@+*GxEWMj>up7V8tL~AHizf5we84;;pZgzByFCDc+j>nE1E!wi{UENUE(6qFw z(Nkp+&$83PhSZWstyC0NZm9oGDzc>Nd&!7Z(@lS4?XpM>OtvIa-;k0Rn^wDpt;eu)eZIEOE#rsx7bK3bB3~Wjx;o>Iv2~1)~UtP zb{T~e$~5AT*3yk)8NG4&ln=rxkVKMX-AR|$HYX#sHSplt>Z&?r@gC%DhiPa@HMXQ8 z;?~WPOKa=uA`6p|#mV|4JSkbDQoH>?bq3@&Up&@!1ywKN`J^PyU!{QNRMt}e0NKMqliki`C z2N^WCENre?+E^zsY7q(x_ggC64z6(8sgY=w{@Qx+7Znhs$6UIkHkCAP5<0i4sa|xL z&|I(di&SkrELU4|N~AfNvXO9XcDZ%rI$=@dG{o*xkf?D<13D5CrmrMQ)u_;{Of}nB;e;AQ;ia{8P=KmRAV=Ejx~k@8 z9Kcv=98rUcwy<{`8Kp$4n$!?dzu30N(1i^q(8^vT&wWC;i02N{(`25r`SPD0!vo#3kk^zccFT*ShGqtMq=Yw9r0O>3P}uxs`#Ik6=bv$ zn|EWk(r{0KxEbtq&_6shv=QCWRf%Cboq3k~gF2&iRE6uIjViKr)5E}y06IllzZ3uU zS?h&jq}1}pWXJ*;oD@hmuhTZ^kwTA1A?wKNJvFr)HyU$jw5k3TTIqhCnL%c zBzT7;txvBSfkI6fffqL=ll7s67zVnvof^)SWqPWowOQ>lRTyq!6S4*A0SxK2E2$}h z89mcV88$CdBU|%wWpveSry*cl%PFhXL{3EzAFm{uTN)c1nlQ3U>Fwy5$+%u7S1H7S znq+8bX58Y!4mIN!w{mEy8Sm1gMx-cIUnQfYQAQR|50|d7)rlUVnr#oYp^{4@wa{~S zq1t-NzRjsBOlSlyYG|piF}2AmbPWQp3MsbK4K>Ov&Dq@;Su|&NVe%8{+eWSKQ%&{s(^kSCYns>+s1($>^2O=2F` zP@jq1(%Bs+5M(dBLdqAiBfCm6^itIdL-los>It^k(jr{!Oh=^w^#lyfL-oMJ4u&do zQn6h&fa~k2h@`^sJ-29NQDo%Ek&)=gq6*LCX$+);{YN$1y)MULZ?uuKi^+N@s>0eLgcrrQ62{x#wrg z;6e&;z7qa1rJ-rIp3c{%meXm`Z;Csss{Z0kK2|1kUYbA+LRNn2BnV~BOZ&OUGn%k$ zVO6QmjQph9`l_a^vWNiA$8mv$WfLh&cNvvFJ>~B4{MpUP=E<1gPL|~)o4E{lWwN+p zf%$|!g{5~$BImS}Cw)F9D>_PG_38L1#UDObO}_oX?@Yj9=^uXo`_n?9)ssV^%i^J& zl~Wfj`pxMLUu!-2iN_xoE`Rr{_~d3oFO z4lgL4Tu>A%7&fUOGO1uN(o8DIkK=*-Py&C}mN{}4;SAANCi==n-xSdoOY56fFf;cL zK5eqHycvJ8U7w5pRN0WQa5a`$-SwsF4xq8&YawT^r&n~zXeDxzpWIVRYGR_IY3n43h^QM1Myv+G%ZG ztRQk#FEmCgd}wBF-QfkpKw=q>L7|6DArkACy9j79p-KHjf2Ywezj)`>e;$&?DQUdl zVol;U$FhD#CQT;y3(bMbh_oX%c}1D%zfOF%Bd@F=vbI;eVAxgC2U`0~MJ1*juABw+ zNPGU&e!1JaQ`H}&FUULdWed{%OZ5lk!)59I6_@^XhWN^ldTilXzr0&=3byB*S+FB# zHa;goG;gVpvkZxWtVKR=oBRgk<3P2w$`5tv=+!O1J9BfN?J>V8{qmm3DcGDlr=T-; zy7`=8J{#~kso>7syqj|!2`iZbk3nJuim*cJjV&kLSG?t!TF{vLlOBtM4mq>O6I1%- zeo(M%TEXg^@`7bCq;KXUiASHC{GUtb|J5-h*<(JF`$?=!s9QsL1&w@ubw8R~us#dk(H$n; z`Dvf(sZPqL;sp!xj>thVy7%WP{VwdWc!_?M$YZR;3T#J6-}~yiB9GjKUj6(^qrCtp_Z0zP-=Ocz=%Rf3(mh5EdI zTKQ&@N50|<`F-&pwvWEjZf308k)sBI?wL$czEEj&tuglLkeIO+ZHJhLn9CKW8fcrdGA zCI-DCWXK^&g}$Px*$`eQHjwWc%64Mf{yq7Q9q)5CT)B z@i|FmCTC!03cx}GlK7m80*-fwAlc&4wyFA}lQr#zSHu`S) zzr>l}{7lchve#~8A&R^=OLK?;T&DBD1Xe|`$x3FN? z83mDY3y`18P3DPVu)UQ%zBuD;x@Pyx*j+O0_KqXQx5uGJM9M zN7dN>pP0W_=>0=IN#up(Z1*iMBnIrhQYqvMTcXje*to7r}mG_zs8v#qc`~xA|@}e6`_W9Lu%~e>t$HwW$64hvI!hjYhse zgt5JgKasba-TPGWzM=I--r7xGPA=tNV7SC|*#;ZF+cf>r8i&4Pc&U;9rs3laMso}?%&uYoj8BrlQ)_0X?RR=j(@rz?J#np3bcc@I&jhw{jmQ-!;lrYqhjWc!0i$u`^Y;rcNB z|9Oh{#*3!1xA}%&lZ``3!|!zX#fI;8_$7+>2^Bf~Qp2Y?{QE{v)?z1Qt~A^c4_$3| zKKzI`dBGEA&lCytS+y<$?%GXW4i!RtE^_qzLh(MK%XRYf|Gzf8BTe+q9}NG6!{s}U z;t#bBzgzL%s=xB7dyV{7hS-;%my>cXaLW0Jk(VE=;O!~H|HTmd&l)cAmA97-m$=BA zyo6cu-R*Gsriaw)6ZxR+9V6fA$ji4xM9*OLnMv?(!)+Y4XAT*@+L7}R-&Tu;p+HZyNp+haYRWyy1_x6AXXA;U_8%|5u-x z6j8%BIDCTP+Z}$Y;rksvSsnKYt#$G(S3Ey`Z^Y&-Ulo%0{E8!gw&CwPe6HcW)u+`G z3RM|C$>EC)Kgr=s4L{o9&4yPx{4#aiJER|T&*XcBkzeG=o;30ihd--$ zpU_Z8|0{-1a`+pH_YTc;_+G;s9sa)JhlPeY`5rX-UHLdc!|+^tTv(lq0`FarlG7TaEnb z4!_pOH#+8ld!#5e;?C`%So*#0r zBep8uJJjjOKce_y-P(PJkw56jKd*S7&{Gb7)$kuU{GUe8O%8wC$iL(84~_gV=hF34 zBj3;AIV$~O-RhgKc%M+jkq;YQ;&AOB@CS$gmy+)tTITRVqvv#otF?N>+j@tOHhOMy zc!|-o(&43s&vW=x!++uM>4tYW{A|VZLlN>d*_~(PA9m!c4gZV7FH#)-P91maM;TMC8eHzWupL!Mswml^*%4JpJ(p9{FE*_#Ga8pNH@C@K?c=znKei_1q82|DH$wfRSHd7Q)rDJdp2= zhUlpskMi(udH84#pW@-?dANLwtf%tGcTIcZS9Ia0at!&Zgi+;l3=$7 zJo3+ZxZKwjJ?e%X(yM2Q@cFsn1HOv`Z0Z>weD=q!g`VnrtcQ>A@bMll&usLhf0lVmNH%5Qs7_DDDPlVn3J@U^P`8&sIdG#C-cHj2M|J%b4 zL%f!H4Jgri)U!g^{g&a8Q#4o4`e1hqcu#gK_waK)yxPOR@8Li6@S8pS_u#5tlXUsj z^FrADi$`95%UH=z)$;0@AnZP5_=a-L)w4a={kuocTOR&z5ATf|my&PMnOeWTP6&mL z0q@DqCwh3XhsQm9hKDck@QXcsxrbln;Tt^sPaeM6!?$_(D<1y7hkpq!_Fr(8w!eA~ z3cCYv!>}j&ALrrYJUs5e(sm-t3Y8t%u)j^z1MVqMn(8o*f?f*FF4Wqo?swT^{wk6m|!|m_6C^ctEkw z{$*NTJ?n(s@gDiJJp4irU+&>+JbXR4lxMd*V2n*Y8->r`d*tu+@LeAMnuj0o@LqWE z2B*4h13dg#54T@z8d+`k_$y8$@z#~p$Y@b${`^Jwe%Ac?BcsJdqoX0bgrr7&188bf zZB5*ML$P@zUhmPIYQ*=jMn=a_nh9gajm|n8oqagIn9q)xkaak=I9s?R>+HC!!c7=A zt|)}EC6|qiP8c_q%ROOSiG1nToEo2{bKK}Go#UffXD1Y8pB+7xOFMpiRxabSGo3JY z0t-)=FpdvP#*}0oj?Pk5G9fE%aYF=tdfdK?$Bcr|eRqCQj3k(e{sHgm|WJYUorCpa}w9+zKrNa9qAUQ^#RT{=9`7uh*7^P>7 z(lbU&>Jq55V^r>F4`@IW%Ku7otkN)6r5&sEphe}ZN((E?zDflb$No4aKTb)GQ@M;& zl4t-qtK{LMvafW)xY&me$^VMLHDzDvLBq(t(lcJ^L01u?w2fD3Cn)&|N`8XUFhOa9 zt3eWOA^$5q6O??hKC3jKr{Qd|N>!|6ij^L8IpHd8v63v-l1f8~(tz#+nG!9j@+whj zOOzfstDIFDN^~lvp+sqm;(Zx79W7ERqD4wov`FcS7O6zhA|t8PMT?ZaD7vCbr!+>b zo9T22IdU$l6Bs8m{-m8P8r8|QdquT3MbYado%WuncC@JWsIfX%?P}4{I#=yrQSDDr z?SN73t5NN&QSEn8?QGF8xm!7-sTDIO#VY2{ zm@;K{S>^o7*rbZG`SRk5s;a3;eABq4KBc}BKfh^dO>L9jU3#(Xip*quWjd7%EnK?D z?Ae6VaZ*X(6*K3^%Zk)N83wu~(;Dz{DtzrTRfYFnC>*P)fjr*O5^An*#0!;Di$aU# zd*b*KYhztz89yHq6AAv8A~3-TP!bxv*ui)Whaefn?K~7thAKU2uN6dWnkuN-1>9 z_e;~($sFVBuQ9xwBh}JWuiijY4%^{u`YWaCE2jXn}s286JNL#d6j%Fp7qJdRj@(o*^G%hbI=tFU&ZR9v-*2C! zzc;+J>f+=~F~aPYrIl3+RYuA;6>JVI!rM?pMXX+ZX}SBCim6p*rj+T#l*Vb1P>$d* zX%oS1xe7C@;FXp7^*+<8nlF~TX16R%$s4tFwbU2aO=)p*j&2|G?P>LGX(`^qX8O`K z!1;KYm!wDQ#o%aoxt(aoH?PGp0nPiq@NMnIx~ojCt8J`ofMX?_iR@gYPt z*53!uu=IDzGqp{ls_N=YW8eVwkb+@vT1y?80yAE7JOv)1JRaw4g>>OErpXewgpDKi4Azt*Hac2Iy|JLKVX?~3yyHRjxt`vpASH$S)~QCB z+|amuR zbP>e%I)xc{7Q>>d-=!Tux3^@7av?Cys89DxRq!nD%zDcN>LML^R?e}7ij8L5Lrc>nynm({sl6{-shhvpl}7p9SG%bCr{8`t8?S^( z&R$ZxNM4$?2VvDdyoB{KjU?~ID|XC-S|s*@5qb%;?OYde4WOw~a4bunsAhIi%F*DOjk)WRW^ zBGvo!yv(e)*!4+yT<$ge;U~M)w#uA$`Avq)W4EJ7{uYvdo%n5ryYjyy`8P=ZF5+(z zzt6*;BK}X3-)p$!TSWW>^BlU=>tDp}bNVhni{#%T`5F)Z9`QXSZ|`47d7{K`GV;Pl z6W>5wZcW*Cd5H9P5x4h|rTon0drh*5ez|33_4F2iP2|N^mLFxfe2gQ00?F?qK8pC; z#7jI}f4@bSXFSPoBzZ26{a%8U^Bt0ZkmTPb{=A2G87?0aNWQOm?%1_MA@TP}K1zH) z@so+aPke^qlCL}iXzhFs$$vn63CXkHHV~IvhE|V#M~0ODL*mzv{K>>SDBq8W+vm-t zoO0{Y>i@Y%ek1XZN&dfyvp?M9;kyl&+t3F{&+$?rY%U*VxRg`Qy&^)`#uJ~2V_Sax z{JQpYwzGa7UHc*HIfwMfkE&TcOAMC})??q%A^c5}x6e7ae2jUHNy?8G7^U?W8}90t z-yxMv(C`6Kas zm29Gid9~qgzVcj}Y_@%EKeW$#3XkE>mgoDVpWEenkN&@T_~V{@cM+dN`MzMd)az5? z`#kzTCp}VUTdzDk=OmldYcl?9z48rr^+!ma^?ZkTob<@=Ma$;uNsv72nL)e^>1=r_ zJ$mdrCPe?|B>yTmkdFNmLkysdq1BR$++_YmiC|1rbe zdhI6ta?a-a7V$GF-?vFW=Q|nCH^?UT;ka?Whs*OEvbp7H_wYX(ZtXMA*ypdrE1=KX zN1o@9P0GXl^m*d)9dRrFhKG;9a|W`B9{CQml|RLBxBO=s?v`^F@oCUy^;|&uxtuBD z?6<2t{2AhTR8DzLLN+P?;l#gYZuSfBNBlVA@^hWGoTEH^0r4Y9KIP#z5$E~&uRQ#A z;#{7;diZwY98aF}@HdEaJlXHz|9zxbQ`?ive~*XnGTil(J%+n}@*eT&$j93MBht_P zF8^z)IO*}r_KPs_8Kh^B;nMD`XA)U^lv84^N^=J z{7u8%`sRH@tk->hGSF~q=f{nmk0xG;bk+{X8ZLG|irW2Dl9#-#o;dNdNl&>)&nn{I zApL8J%R8cMd45Cuo5VMH_=6t)oQJh=c&hw4G8SeVYJ0AI?zp1LF>c!<5Nu2xpB;xG1>kYU5cDwPn9}_t?w0eUW2CmazC6!A)o@pS zy5Y87D~vy!P5gZ5v-LWk^nXgc+M_>3dL(bF|8n9yj;!|Rzuu#NBk5uNcM#_|zsaM2 zJIS-2r-;v``aa{)^Coe&f3G1(jLo(GHw|~~A0a*u>8$-vFx>U$sNt^uDWr$%HH|p? z?JSS}3rYS0Do-`Zzd?K%@d)*=Yl$C6{AY%{<$sRkzfJN7J@Q}wFBAfs*oW6uzGJx9 z`9l0zdyXaf<4J#pKNRQ-Uw+o5S2ekT=q-QVjW|Ch({4(NI#IGQ}koZ-kU+#h0 zd~YQAYLdT| zJfUwv2%G5Ub*jTX{5azB3&gg*wZz%qnu&AVzMA-nq~~XbyZ!oC#FHqi&G&bthp#XG zhdAfEg*f-Gour@p`-{XEQNFuL59hn&SO{Sgd-8a+(!+mkxZ8jK$8c+hI@!T?FY$Re zwszP``gwfW<;NiD=_+LEyQ4jxz zhlh>}sZHv|{(Q8DPw?=wi1YYT?cpsR{xief_WBpebA0Ik?M(TZkMZznhUX$#E&gnK zEjHZE_iEC^@)wi*W|HS| z`3aJ*Bl(>k`L{@ZDapU>kv~A3$9?;PIB72)_xltAU~}#Kb>j6nZ|(do;-bs)6ATx| z_CJZ_dE7spapOjk=Xt^g5C6S~-|gYsJp5@7f6>EV^YAVY?>$tkrtQY_tK&Sp)Wa(c7rRMp zO^>t07lB*$RVFlIryd>EU|SeFs9= z#6Ppe*}?V(@dg}QJ$nq7^6)(ELy!Jm!$ezV9%%LV zBi@MfR{sFQUHvB-?$)c6^vF4@e=2dFr&W0LR}ts?7tJ1iC2?+-bsqj3;(Q-u3vs@m zvV%DL^GhE7CUGv$`yPJcaA_6oSI1I3JcT&tTjt>lh;#Xu8SeVkD&l;7(MEdMuYN$B z?e-VqBdGij5$E#n@bKpicm3*Z!`s`|mstUuw8pp6fmQ zHp6W>=b8Td2jWwazb)sThP(aiDUbf$q(^qG{0$kM5HBbF zn>_ko_vrtG^sxRfiGPpu=Z(MtHrLKWi1YY(I&r>ko$cX^J-m&0l=}5AJ^Vfof06i? zsE75RJ;Xh(GCVzOtSQJM0~cVw*J#)#(6-+!+o z{sq$8a;`Ak&G%Z;FXwE&KOnxG^xR1LIp05c^zR`(Y_}Dop%j~2p6d*E?eHVwJTCmy zaA`*_&nDt*hZl*zk2Kak|MKv640p?U$Z)ruea1+w^!)!ad|Lhe40p@L5W%Q=nou>MNoD@gx&9{mCF3DjSHPI|a~e?#&UN&YXyxxa5E&T(TWagH0W z5NADa8t(SfBgdkW*u?&C&6f2bpQ z$=m8_CeCqSnMY5X;coeVNP1ZRPl$8>`ngAc?l`HPwkP|;V8dPeM@XLi0q;;s>*031 zhd8&_Lms}zaJRn4kJtKLj(5hW&9>L)Cf=Sxob6m{xU?6K%d${}l06r2iR@{x>}O50W0%e~38yVXq0u z44Z5J!G^o-cr5YNNN4R(=+T4MbE!@ATtM=(Nd67tONjG*gyqEfKEi6!e+B7TOZ-aW zKOsG*QT+TR$#cBDgLo_H*+hDHz4~5~ZzK7wB>w^N$BCa#<#~=c_tSrn{xziMO_FE* z?~wdeB>#a&K2;1MY|>s=;DbOv;IGNF0PdzXU?qr2L=DpXtB9BYrB`e}~~>hk)ciG~6xcz>^__&EQM0T*9 zNSxzIk>PHCOprY5nL(W6YNba{wc&0#Q>2IWUrzj5l-t^EwMYN;9{n3h59_~!csuFe zsd~m^;|`q_1r+5uOoi$;V%=P zO!fVe_z2=hotm)^%NG-8`B}u{q^E{>8Sxh4Q;4r2K9%^5#QFK&+llk~zxDBoVE;{cnR??A)d`VKSPt=A~x>!8opYph5AWRLziq=(BtpZI#x zU*pmLJ>u*qt3CW`!`=G++;F$Pza{_0h zu;M?&uC;%E!`=2BW4Nn7VYsV*2J!1d8U2-pyZSF8o}l>9L7eZeZ6MC_TZyy$E5tdD zy+fSi)fdD$UKPYbYLoJFyecIACC*uUE+)=?b%}>B_wXw`{5cQ*mxq7s;k_nh>c!=p zLi}^8*I9VjjXZ3v7@Lph?@5#jZKEf0aKZ`iuN0{f~)61mvdYt9^2#Y-Y3B#pcKf|9b z|0z>Mi}uf(@o9P7@LphNkliXs{uYuyLoTkciF|*OUq+ncLJ?m8~XI}dHX zg@(I&CKzt*X3KvX@n1uq)l)|L+0SQt^e-VjY@Y_=zajl8($Dr;Pn`YyDdMxJzMm8S zC+Rhc)LtYI zP`;CizfF3kdHA`+IsUX8F6HNS`^iT{oGABcC7p7Tlnc9OrH zwzEo`GlK0Grs2 z>pQ`4$(QwG!>E+EeHt2*KpB)^h4uX|ia zoaghuCBBgK+(rC-l*!ijQR3Ak|DuP#N4$pQd(RdtX!|q&8u28_4<)`I>1=t%dHAV@ zyYX{A$uA=P^~72KGU9B9)gFE=aqjOo5NAC<_wc_FpGoE1NqjN!SBWnno>!^Ntj59r zCcAyjaPhaj#D|dlpNSt&@*fZ%Px3{?r;_}K#Lptm_L)nZ?Q^l=ZhyJi!~bZw?Z47D zWZOi16OOI_{IB6|{Ct2o`{ARc=K|9649W9+=}nTqjpRdT;{cmm&c4L|g7dbV{S9}^ zIfOW`Cyz1QwOhh)H{Th=c^+Fy`gwe*_UK^Up&; zut|Bk@Mp{UZ4W=)aH-edNPY^*bG>F8?)t+L(!>7HK>QxkpCbL--&;NUZz4Uc{};sX zCH=Q~^lv74)^k7c`$*3=kDgtIyLQ+^dRYH^#5a)sk39O1J|9BZq#fCB#~Lo}bwB=W z`<_bj4df3;&xH^+(bI?cY~p;qyuxs|UOyyxzV7&ihi@m&^X=z}52W%OBF^PJYMv^7 zxAI@&;Xn28J3PFLcrBHuNCsVOVmG$W6vM^-o%pl%Kab?OzuZNf*A=%A=XLC-iSs)4 zyM{}?TPWYph>s?|;zAr?lkzuGy;=;DT#59?n{d>it% z_NgQN9N#V{&i=oSIQRG8k^cKh|DQ;n`}Ci;24@uLMoyI;4yzCdB6KSk|+L{-mx9dW+SeS|oV zo4bg!A08skdP){%@?|}fiL;*TiF2H}g*acQ{LOIJ58v?cj||U6u_TT7kZhk3m!%+U z|4_9$t?bGEInZ!7-$KJ({U;LNK>CY3`X_tz&mlcr{`ti3CjB)Y{mV$6^{gWP5b0_2 z=-Eb`uXo-cJsc0;CHXf<|KJ)NV3U6FCH}1aOFbMvPN+85&KDEsIMzsdxZhn%oXh_^ z;(WasN$Pxi;e*$IMtS%d#QDD40uTQlakj%+55JK(_oEFSewX25w_oAU+WCw{nR zeZuk!JiOI#*Z+TFxNVmeT5V_paqeHgCjH#M9`NXYk@QI3R{w6|4^zGV>Cyk8NBX!*;kbR$5+ueZ`kCKFoa60N9)5s0`|T06 zO1;w0{3PNn{Vx6z})i~lmB)*;aj}4c0-$(o|;(Lg1Aw5yzJBg1b{u1#=h==QN zfKBr4!k?|ziNrY`&LYnCyqq|%C$IPLUlZR?`QGp04;e1@e3axLBl&lTzfPRX(?xn7 zBl#ni;sBf2VK4ry9g2v*M|=`-F8|qvOF6l}*O5H0doL%>dafeQ{pflR-$0z_OMfE% zHkE&~hi~=p$36Tx58v(Kdx>+sKJxHE^(ZtpX%}7>ih6j0cyEdi^F4eGalQ}!3lIMr zalSwPl!w1zxcI|H{8_(xpXB+zdG7`YVRPk=F5@93K`E=lF0DagGnS z8vb46djNm7{JT8-P0}N2?!ljI`-soLvDLHRaH$uMr+JN%s{8fMAj8Eztp6C|kK>%x zA2Hn3KgOd!L3&vK4B|ZBuJq_%Lh`H!zsjsODgQ%M&Xh;b^@fWMw*Lzx{}$=l@8SI} zfe=lTCt#CaU~gNN@j+%10>$#dL0K>U3w ze_j&~uu1uuA8oj6hvCHkgf!L;BT3H(#4jfKBI2uvKS4YoJ$#?;CX#=W2L&RT$4r{j&En1<}>vC$xlMQ$KY0|@+4Y%c-XUcgQ@uw)?RfbEx z{5(_;@s|)#JSyTJp2!ayLPzOa9hras??#-HsZUeoO?+BO7gdZ9-g~QE0lWi z^Icep_FwXB6>sNdH*FrTm`~ zpKQ3RzmoLGIjesz@pFkU@aW%9obQi(PI`FW)n^5iVv}<6ylVjQE6G0JCeHW8#uzU4 zc@BTJ{Be@sOZ*(-d_QXeah`Wwh! zRGt$&JWibT&-L)pt1|lex_-KcUre08AG*@RUn9PX%Ad1Z=PUm30{*N&4>Vlbk;lg| z#IGei3F2QTzKA&Yqh-X|K5K|`zxbht-|XT4CeHK5K39a)CiP-oK%C>rQ63)g@H2_C zovRIZ`(wL@-)y+;r$cnHL$?wy2ea+9(Qv63_tU?5^zR})QYNeaCE|CJ{(pG%_q!58 z*d*WfoJ@JX>)|otYe{~dhhJ{EYq#}==OSM&|Bs1J#W`!An+ z&oErd(?RWZE^+QhNyFXtIxq+du!)|&q^G}3Ca}5fQsm)JUz(BUdG%{%ekFRCN3^)I zzqEnf8qJO{`P(50vE8FT((=1|YalUMHY>k6UmtI9cw>Lfdzs9ve5gS4nGWA?>{8?K z(ATy6Hixf2O7p@z{b}_#4%Wx39lqdb&G$Qe|F?|1skhY=`i|xyQ*X-$NP}XlaQOa{ zG{4#5jbk)_#^HC4)x5Zm{!HsH(Z}l@9yvwx{(T+!N&0w>%cav}+vxBO5-hO|FzsgZ zEjm;4c@AH2mgcuRyz^|$I~`tX{55`bYk2g4cM@sXz z9o}gA!-9U@#x6n?8B%%w4WoZn^R-?012uamM%@!LuY+MDmilM^s`TDPE}Q33@OPj zxn%yLrmCe$Q@a1p9}#Gfu4&vUt*_MVHJUhOPYkd-=JObQO4leg$M$1@1Yc~OSL;vd z){>8Lhmh%pp`nJGZl{Iu|D8_0_Jj!|_AoR8d!o~q-sWc$m~LzjLs9IB&e3V2cWnOO zbQIV_TaHqQ_muvTcCDwvCeVjUR(5TASxb|B=?A<;ZqP?fPQ_gNp9?Wb|20mG{TqI) z!9<7K`rFSMobM_94wJsrNpGuTKQA%qW$ff_z)kun!Vvqm-uCk{Vk}x@(le8No6hoe zhPn2$>F1bn#>(4r+v97oBep2Dz@WT+s%(1ezar)4Eh?_LP5uvsW}cuw z!}!>ZKR3OEJEw_3aEi^7tZu;tm`g%m1#*x({ z8%9MUks|!rP4Daf$B!MW@aWOw#*9~c3l3jZRxu?vC!;YZbXvFek(?8infy!DZfPit zfj+V3P`FJRFm_Jt>{#X5vn$#!9WZUpfz*_W;DJQ&M0xN`dGPTbNs(C7nVQ%>pd$Dr z5j+$N&JMND>=g?J6}HdppEomK9rq6g&b=TuFLpuf!Y)a&Xnmqx4XUlhy;t_Pryd9& z8=9Nw7$*`JL_1^i5*???emWV>Q@UOvZ^Vscv{R`EkDY4^o@jkLKhZv~u(SgIB`Vr0 z3uh+UB?DvOX~)C@{Cg}`a(G#I`q5><(XrsslKgmh z+JJa4AlM$y>0H)3Ub21Vz(nh|d|UX~d=#fNRMEZ)W;&FbQ679*5gdvK4+Kxdf@fmJ zR%<%L*9FKErjz=J;MrL4kT0MW>s_vCpDKBW-OLtpNmS(P)*x+J^Z-gREFSF7WQ@vb`&x71Gl&=VH@dLb zUQswG9=_wjH7}P}??`k^T;DPK*l_u-EuZ#IRDTd}A9Qy`NB_S_4a?T-47dFVJF(!U z*p^R^jcwU`%%qO716%)fY<&200*8MPYu$QmykytPBlk5JyR<%#6DxUX#e$L-SI!Gw z-SQ>09*DOOxjT6EljmaLTR&`mH5Lphj0Hb8k7T zlt8F`Md9Gq2Xji^3tv|OQc+z|*uNrptbEIBxv`uVrd4-N?-;Ur%_A!>off?lE8dpz zI;bd|r`&cchQvhhMS1X1uuHW{>%pAxn%hCAt$8!tHn3MHRNlIxa6l;BHUaz5N5rWc z#iQ#I!FwtNjM5l~W7owy8Vw+@6{ zqT}|$wWv>7&=tJ&a9iOu*x!Iv+C)%Sn22qbNCvvvQ0$7ZY}nOZD-=3A(a~189!v@v znVIO=R4D$J2vUWSbAneB9rqN9$r8be!s2r)g17ek>E9}bM$q}@A>*@Sn_=uj!Arrb zhmZuW2O-(RU-6zRAdCTKMR0TBZP0>`4f4@ec)R}Ch!1r9NTLHmQi5T!H&6D8WN(@5 z70X^q_DZDyND`820rEgTm-$y>cU(6>&#|2S6lN@@lxPZ;!IgFCcF1tCn#;Gk+Kq?Mz&; zO&W~iXpjAR-}C8s6+G584Oyg*V;!>&mAn*QC(k1wDq_gPJR!U`M_e@65f64Mvvo6C zxb+`M5NwSHPwy)fyTwffm0fYr{te^1d60_-F9!SL9p~kU<&N7C^eroSwFT3IN6Uf_ zE6g^1h1Hs1}UpIj!*1QvLJF}Pc{_jh8ZNx5zS3BnG@LFTT zYrOD~o&^k3)xmyw@Q~U?32k&;0R8A?!@_IN!Jb6d>G)L9wG2DKc8vE32PU%Kguoi( z$a)-PBq*B5N^w<(R0%|p{}@*hN$)Xnbwy$1Tp0G05iWmw3L*dhD!8hUs)DNusVcaZrh_YbS*mbm9An3bvf!WP!P{`hbg(@r!wou= z3bsW!Bf+*+;^PnFToxa7eyf0-hR|4FQ@_UAqg&B!NHDN6>JeQ z`m}y=sAXsLWyx3K)h0-wK+8%#4zDXkx6(c^9(yJbaWh|e3o_OHvtx2j$%o-}M?f%E z@?f~Fm!#MlYzZEKi+u8Qq8f9QK{tkPeYE-6Q!vtm*Ui!8-J+{wWKi52+mC`&xV0GP zW5JGK%f92)_^}r?g47OZ5~+B5A3c6tudDQFM{Uloy`SuiAGb9)DpvAN%aa&of_J2i zgI9yCCMtAXkYigu4%=67z=B6E+w*m4hE3X~5FOwdb4uO~cf5<9DhV;GO6$rfGC@=n z;!j1sC*IG})AdIcWe~?QF=OSBp2itF-|I1!?0YIbzF@p5htBk|D&5{3H~t}j_fWb~ zQo6QG47^B{ZZ#Z>$`@WY50&n*99?mo$%@N~plm?bY893xVoHGMTFvGAe;Z$4N8*gF z!s~Y6xaYELmTcAse;2O}c6CigFby7T-ILQ5!inI8t{f`KeWz!mK*hEy%toUtePWU?&cl z>svR8mFVGmywjE4w{y|@xQw^2S4esPp~{OK{C7&6PSnll{u6aOT!+b8NM+dST*%GG+=( zBwrV|h<3J~+WJl?hON}8C zZ9z+gCW5^3;6Zgxt~!R4p|)%Kp|;TjHe5$BME*-js6833^k|vDrOYrj&o9Dy7GjUg z2HNDQ4x2Q1Sm%l)33c)~(R`?)V?|-1K7&}Bh+;sWG(hLDQ%%cd42dLyUWKw#EGWNA zyieN^fu#`XBC%kP8Zcyx&?Um)t+KgH3IkdS6Poc{3BhNgJ59zb3Nh^9usqnN2r4Ot z3ARdh#aal2*;k_P^5l_-r2^t5jo?5!@DuVg?8e`YKLN>8muc zY6PV%OtkmMA4)ncI2aEOsB|)W8VUa^@A&>;tw;)eA4;#At2`(hToIhOuUw5|85aw$ z`w4n-kN(khh4gVper1L2DoQsd&=_Ws3Fal%bh1}u$^hR`lQT1~q$R9EC|{qw`Vj3@ zsrKE1Om(~yRi#>$?V#x^itxJ2P~RRkbS=Oc<plB=HU(YE`x==pa~>o4e+RVX~vF6K}66>|ch3fiJfE02Bw681dxDy){F%k_i9NUy3Z z9F*voSE##^%&vxY>spb06W62v48q9)rvD5RuQcu_+HR4ofZ)-#^GHbtAju#lIt~3U zcrk8*0%GrNhiskH=HI} zMU*wWWRb@4`|!GjUjIq>&g}aG4F=+mvP6$jAk~**|0!5_meC;iLS-%^=CBxol^QPV z6Kh^horN(ffd!A?J@Gd)wylP3XUGz->55-qSLd_R&4tOK&T1q3+4cTa zcY1YDo#^_i_3b5Cyqc&MuRc~|+?US9)jvSh#nowY8KW<*=Bg_iS?q_WS41DdqO-CB zKI83mGL^)n-4YeO%Q}+!q7}=OvS9Kew8lza39sFO9r)wKSjVM@aJf(5Wc z_rvS%!meCjiQnbpGTA3 z>E)qHwLBziCMePzS@D?+7gtt389SM4mbBTf{2Fpo*W)7nbtV1xa9jT#rPcaSS;;eK zGi1?y;U-;?aO)jXP_=HOu2<~3jY#maO@-3aZQ17UEl;Xtn|vj8nYZJyPkzW_IR^$kXqzK zEMG#ix4)vC7%A1gGt)7ZKR9BU{)pt6d9S*8wOag##+RFXI`_3MTAvR7xQ_S{9tgwr z%@7^@^!TdR(^d_ZwX`m}UXk^m?OByp{lM0F%|FE+Si{=)kRCVnI?SA|r!lD8b(m|A zUe;kGLmQtx@#5=<0=OrID43ZChu0jE4uUS;cA<(Fm&;Jzy(VDD z2?-ceaqj;fF!Xha1dP*>kqQqgYCxF|9H_$JJs-ZN^OHtVK|=yY@T?9Qt?yu=|WttN!c{IFkqKX7Cwpvxzt0!2pxH>S_yRr}}Gk5UfSV|~)BD}6Ql9eH- zw|y>77`zYyI8B+@m*f;okd|ABynkQetwaJ`qQ z7xvT3zA2?dSB#c@pON_SSXuD8xQXfeF9q+K`0)=39f%+E5I>q<*FBKA!>a7c_ z<4Gn+VkI_s*Hlw#I13IccB$-|f&}S!fPl0i>v*r2A$YdyJ{3t`ieZtiYb7LN!M?7q zOI8_Y!94K)y#5ew`yIljS%awM%YL;Uu>vP;nD)%C2F+Cg-8>&*uETqXy;*89?YFA4 z2ibi)&2>>$qOAKStFGxO-B0a0y?N{dS1d&dxsxpGc9=;ff?W@zV@doxlsdxR;FpV- z6Ea0wd6pfbifsOvJ+78ycK(?CX##{sk@1}<`nNZ2ag}#o_=eu3Uh(5WF!8$|&7c=$}0@pFJ zKoH%z??g4fN6Z=whZ|BB?AAe5E>=`oTJz9Zkq{C?)FsTcV1GhZi{4eIajEh^=28Vy zJALmza}9whM*pr~D%Z}s&Iqsjf0%n0@TjV@ZFnXL7)i`TrAjNUQ;jxJgaiU4iZzo= zV1g5gf{GP|kOUG9NlYe)mI9hYnT7$ZzE*2reb(nc(GaJ4B_xr!=U)Pn)-uHgiy`J@~<6dj+wfG9-W~X?&@*&!HtPDAv z{5g1-3^bWoz7_t%dCSH_n!UQSv%S;b(&j&<>rB5|B*(%ko`{>SCcQXUJTIjmajz)EeOYBCo+thD*3;46A?c+5 zQYD`ZU&*&&DejcEx|Rh^tu<{I)OSUiI#oFKAHu6*rsDy(@+!8N3K(%>MiXZT64 zld7uD^cP;(-sLYFIc8+>$nj^CoZi^jRHSbe#ZW`!z4ii+cR{}Qgxn*tSE7n*1U}q6 zdyK#5=H)NXsLUG{%dE`vFUtz#72Yr?kXPI@I3qA*OJ8ienfc~qMTp(OkVcHoVs+%O{dtTm7{O$7A zMZlXK2@AfX)30#Mv#_3&^Z>9H|wE9lU$*4*DpgJe>GH>2( zNa#C|z;}DA^X|tr>j1{ZpM`&L=bJnjW7%AmiGqCt>wum?!Ms^>wAuk%(kH8+SojlA zfMsnu{y5i9_c;F{F3U0?a|8K$vVJrqZ&*Op6=BvM!>ZKv#GC-GC+FqYFQXdvOFKCzLirbGwsT5u01ye$l)OqOzB*v{a{Kw%*Azv;8$%T zu;cOP^&H`ugPb8#|4Jid+jnk3Mx6PCj%)qtSZ;_{@CMG}{kSH+gdm*N^FMJ-d?!IT zs~2DXh_6>@QvM->?=`s9f1Sbo20zODzF=^3>#_L13|?#=Se_3Je!s!xrwEzQC!Ndm z9GMPAE-@cuiKjXp26_Af<7GB8Vw!w%l)_D+ponq&uA5&lN&Sc%Z*V_vgd1+~2?FEg zcMX1?13%T^mpbs%4c_Izixoad^)uw7u}1#a62$dc2Jds=0fXD}U>{F1_>&eezdTQo zc2Hvg;@MP#enkT3%<|==L~o{o?Bh;U%TLca=|$Oa12UD zzNvy#Uk-Y1a*==81%KNG-{*pJ!6w5UFm1vt^P3MmU3`bT;HSIbT;`OHrxG~B^_z-N z_1h3%_8*8ZF`iW42>48c-(d=d>fE|#~W%gg2Mm~rFeZE10-yd6_IM&6Dt9iMWW>UZ?$RI1X{ z+wm#kmX0nS;5l1uDbUGd-dF}I?%uN8>l!u!-BDGy} zr#8)R>cmKprxo`zyCRKEot;K%QWJ(QFn-}_sBdj;Z}6lW@4y%Z#DXpOgt)7vy{(Ib z762~pXf;;XwG!QnD^$6{+fMs*f~r6w6!*0*>T} zTYYDTP3p`rN`2Db51KmLwTDPuePd-yM5$cW-f@l5Bh=I~w>iSVtS?@|VwLR+C{oqh z(s2RC&+6Oewl)!%-rmU{JphD#GjUDvx)voKY{Hk>*iDKg^4f-&0Ch515s=tOq(+JK z3FFC|GI_)6L&l!Ir;DNLDRX-OOi3u$VDQuMJ4)c}Ptu`!@~|qH!5g@x`bXg>;M(&1 z%-~L*dxX5?`Ln=TrC1)_f6(8_mI%B7?IRs~`ci)m^ zqsE`%*U7U=@JRjl8=QLbJ8v7W8WO+}m+`t#;4)r426x8mP8a+y2Imj$Z2Q%Z2wdvP z_KVJ`=i5SF^1LT-X}2KidCS9hA{$?>+NX2s-z(%fxo_oH3VfWv$525yCr`D(sTTEI zMj^Pcz`u=q%YVMX`7>VNdxX5?`B32B5%Qn7@VssMWqizSGi%sn1@4e^>B)WN@cGlT3e?xJ<_d0+;D{ ztH5PC{z~979X~S#ll(FrbIc37GhSm2ZsSE;&`l7yOvix1o$?hJRU;HMoH z;*ah{fuDqXYlk;ncm^G8wC zf3Dz>@of{hv~!=}FBANm1TO8o-Qdo6Wtz=HocOT@xAA=mVbFa`;L`pl8r+%B&k*vA zm*puHxU_${3(wU8uKxg3^1V=ka z{CI&^x9M`1!I>^n&*ueRD&*f5_&9+d z6!=(yKk!Z5z>&WMe>U8kPat}z9Ud~cwZm{N=J_9i7Xq_9YYk5R@dE$13xBR5bn+i7 zaKGRgW^gC}$pSx1$Ui4=Y0p7?Ifo;UwCC{xm-Z|YxU}cL1TO9Q1~UhoGhb!<6`bgw zTf6xLF6}wg;LiA-Yj7w348g-JVEG#a&P$6o8{Em?C2(oaZ?jVlM|o+_27^2GS!!^b zz9W=xk7tFzWqj{+;dwyFGhUYGQGuTX+{SB%3(vbkUh?c0xL@#`Mp8Iue8(Bw8Q&%s ze7?amz{PO?KvK9L37nT!|LYCzOqbh)yyW?%z@LNrq>vQX91J( z`T_3gh>ygdmA{D~9C6uRKdjJ0aqf>#=j7q1YZjM0KcwPtPWe>=m-74s$;wOon`Rt< zJhC7Ak?0ScgJ(8gXE2fAobpuyufuaIf0e)`|AnSLALPcY<;WhMqaYdPTV9n zA>|f2!nL@`UiQ{?596=vpM5NHj!rP@izO!fRtIkNw|Z3Ic{=~^8vnUg(D2w>`^&b5 z*UXx9|`%$d z9w5(pcFN(p9S@!HXLH~XQU2Dml7?HXe-i(l{zr`+>zD4U_7EOBdaT|;*#GtS5MD1b zO@-2=LhT_ezRA7rU4AsKKH(pX=!AOyUT_DK)Ytnx+{P;L6(07;eG1=^%`fTsG%GSf zd~me<0Z8f(%C1{W8v9L|`f54Iolf^W^Z>|$_!!f7-ma1j)qMjG(P+NVmg>F@0bk7q zgvYOGvwgu{b%EU&dB2O=^80!0po0&;o&*#!Uwm;B06@C{JxVFx@?XHV{JOS+Tf^uL zUw9j$fAw`fz5v5k81Z3{(|bJFkH_%sS6RR($`3yHd!ws%7e7#pmqB^^Aocf?x^MfF{#l|r8y&FGQo0WK4$c-GZnSlbV zdHCHgc9UGD635rOhSrIFgVFy7OCUa)Gdrp9o3^?~Xye3(bTEqEPk~zKt!{W_0^qi? zuS6~*GQDJL^c76znzg1V22pyQ^d^emsN^rDLkJU^AjMUioo5D7*id z{A`n-t4&wL*avzuKJzr+9P)EO5sQ>4WQ!=o%do@)-$*8P<0doQ^-q5@YjA9I8vilC zmExY;EXsR+@xIdaTf9=GTgtb1!vVR8i)KXifS% zJ$|a@Ii+jVDP1EYEpyCON84OxG`O~Q|GfH0L$mU&JmEXSNOO}PVPG*)d*?M;?&A8+ zHp-Z<46%l%wXyAc5kFQyHToGEK0aifZXK4=Vf|JF->o%uO=~aVr-7cY@u`?+s3CBE zD;5TBx^*({zsf`vvhnfPq&7>%;1hLg_<9x zyy@~NDgLWeS59gDINjRqNqEGyqSmQAgB!lHiYC-PR^Ke7!E_jOze!UBRy9<7=3(hsa ztf*9lIkF*jJ*-;dsusH@*S@Ott$L{|*S?zNv1zKi^ow4dt6S$bMW(iQMw%My>Lbl< zIMAl6rY)GLdb{d7JL|7WtaruYNiJ$t3sSj|vbDWUt@PAuXsg;=+dJpgtA(CZ(I7NU zg5S~w;hJg9olRZMTzY9&advgIwqTiQq&a{kvbLTVVD*BCUN`IMYU@CY6PZKb7h^qc zlV?t6QxjSkquA649?#{|3(yjzEY{UBHc0BLO?|2_5D6-fZQ^30(5b5;)s2D?d-*oG!5V)h_sTF8F^4T&@YUYf7mn>w3$- z-pHe;slF$(_%^}g7xHm|e^=mgO{vuXb0L3{kUxR}!ciZIe_P-uaJDa2&xpaD`uDi--zIn@|1Sm3@c_$zmka-c0+;#ZF@rnp zwpH-Ua9i~wsG@!F%P)tMO#_W8g-1m$>dvAX!E1eye`hV-+Z4A?f z&-oqcZ20!K0uOoZ90Ofo^gmB}#`v<9)+zkC#5_Z z{~ad$Y-0zu9emey`ga?{T)+o#k2xajxK-c&I`ba=g^d1RHHOKKYH#C+@h-J*Rfj4~EZ%bD;0Wzf$Ir z3|NB32&wJ-eno)@Hhx-IF!T{WZj=`cfT^*^F%Yy{Qggs6x<)+)RAYw`qwj|sb}E#+ zp$+GzXT!Kz;?RH^D*P@OaFy-r{Vm9Gg#pLEBHfdNIg3Z7?ht9WMII)`(Codg$b-*Gh(0mp{*QSY$#jc{zlHcD$Z<%g{@k0HEN?I`ylwK6 zN|zu=bo>Hp;y_1mgpDAMO*0XUBZ8x94!j7@y^Jz)+6&k#xad8`@7udaugnbo__NHc z<);Uie-_R9aVQo*%6t&{Rw%lvKdV2~x1sx$%FL`G(G2sX`z@USL&qaRwEunahtOS1 z+E3Ic*S))x0rH@|f1n0d2XY0XPjiz!oFx}Y9=oNAJod4VWJfSKKZt7bWWVKpTymc~ zRgLmY!+e~BL{3p&vCHZ5onYsl`OCNAf>lRrEb9br7}*glAMh=^255pd3+JxkK7a!m zg3*ChyG{&v2LiFcmw_z@1JPB%@-+e9l0TRy2Sf4bT?BG3j zsgrsOR`mb`L1ip`Ue0iJt)3*OR^X`>H59DS5y07c3k!1Lt1eLVYOrW8t}3dL9?M@r zR}XU$%U{4RY&FOC{s#PQMO|A5nNpOo{l0v@T6*^TPFr6U3yuSD+Gac(<||ya-*?IC z{l3e$W81{#0n}ay3+E|>3qm~NDHuHvM5xpD`SO(^4s46np$>uOLF_F(qb9lmdw&)N zi}nR$SvlC-JhWXMQ0NB17sP6!h<;LSxk;c$QuOFf{nm3?16M77W~4CfBe zzM6Hu`_^!?)@eBA3+j0fmhbgVdBT7*6qw8N8S$_*9NiFzP5-hwHUWkP+j+6lY%_;a z9UI|`zM{BM@T$xI1$zu2>EHD}?F;P<_3T4IU*)ZB*n{%|v5o4Vt4`1QeN|@GJ%Q7+ z{<1&hJ8b|)S+n2wgMod%>1+4-Mhq;?Ktbxh8|6Qo87}Y#GZCS)78Z=~^_8Qh=I-3n z5DDyf3ZpRdF1=VaWw2tnp|v0wi0+8}kg0G6qf65btB&rS6e}1P=FaaM14U1wl02}z z=*5~<|H=qF%mJ8KX&;4q;u*fek3tRDX0bIp!^Dr#@fE%vg^{=H4?th+@R$Mq%Xjwe zSWqX*FH%LzzE~68h(sT#LEHnr2Q!%Bd_pW3U61&#Wt@GZcFoV)j|kH~fu$KW0R}rmeVh5HEK_%P0C0LFOyr{9J z;Tf3XY-Nhr&=W%5Ew(-b*^VIcq#}(z&8Ypersrd7JlJX)^j(gmfw}?TB?G=u2erOD z@+z=&FxAEpk=+jlVin%7_nm-ue|7mexOU?3I9K*(m?7&%n*B68a#=!)|*kbl^6+PsJDkPp0~ zGZ;>JMa~K!!|~+2q1Pji1&W?E*{qjl!Ra7}#MWZ z(!n+58@vCma@Vv(?kZ9HhexrY_WOn`&n;Um&8sP2-Tkc2RhNof6)V-5iuyA@u{s>k z1>lur0niyA+387}omM5XQ_p+M{mf0}`@0`z`x5rPUhUmoUH*ix?=57aKy1FZ948y% zkVBOS(+Yyh^tBDIYU{$_s>%NYTg|H1Gol9%yy`1_18ES59*n*kK+Q7cd;*bJ z?Hje-7GIn$y0qF8F5lPv2+CM(Y($Q>(;4)%9uPyM^shp*!+J+<)D!Pq6$c^o8Q=`uq*vc(xzU6hOr>G*9D1|4HBiS$N`zao?n=(uZe}X&H#la~NajxA^OGEs+I|GCJX|3cEi($!C zBq<*B(hFvyV%0fFbccrh0~XS+pFBl15kf^GgbI4FYf(`DalHplzDq3Z04H7y^(!g^ zC`o`9LHk$cwGg`(TpCB+`lo>=eSsWUEreSFQvbO4R`Fb*Wmt>K(i|Y{tt(u>5h9 zo?U^SINmeX<2@tjU5{6c@+X46DSKI#9)%|c()(xn#v5_0+lw9^76aiB1eG#KNBv^J zc_X`Qi|K_UPteoVLWtZjkFR$tM39BEk%P06V=wGEGyl9s0+v7J2U!b87Te2k!!FIl z=QhieignJ7P^2n0ZJgJ;r?vqN5_+1x`?iG|_ONZLF4+-^mEMg55JTQ~LI+;vVcp1G zq1bRv$S2PU%fhSom~brXtdgxbNcv>+9^0RL6NW;v0;lJ$JUx7CRy22I2uEq)RNAb? zZv?OoD(u}B_P!AI?h4|_$Lz&_QyEoh8n0HFM)x-o>43`gG`HLbJH+#qC&b3|$D+88 zkHf!Yf9xICvYExQnH@h~aV%l%aH^0gS0w)n-p4gh+T2f(m4~izx)zYD{4BoWC$sE| z+QSKtp>VQF65ftGoVU;T>YnVIv;7tC?>+D0yg0nP{|Tj_CVGI!-EUH*D_l^@B38^I zHbNx{a$#vU#&ePZFFzI|qM>zJ1mpGDQ*NG@?v5UUkauA1nPT6G;7PPe}XggWZIt_bo z3odFIp<8ib->cPo`w7rB+rnx$g3O56(41ftLsst( zOpcWnSsyr9YRV_bD<<4<4InuVIBgvDnlVrU3u#5pbwPi(hvf_*iN(no!xQe%@ zHqoN~xbEG%k==sGSo&8(`{J`gR*SqJ(uCd zLSIHVqP6yJ#MPEh%b)j6dB*@-J`I#VhuY(H)*hdsc(ZQm-H!{fS7VW}_x1x&6AP#@ zf_Qu2z?bFg7vnISfmm(E?FaBiy)I$hti}Fd^wYEnV(Y)^^7j^>Mb!f6ywJZgm#s&$ z7N3Z>^9gAgbUuUEuXeBSnxap%0A{H! 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 z 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�HY#8G(LNS*t{2ThktjENUU*Qld+#8^= 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