2021-06-21 14:01:56 +00:00

134 lines
40 KiB
Go

//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
package document ;import (_e "encoding/binary";_ee "fmt";_a "github.com/unidoc/unipdf/v3/common";_c "github.com/unidoc/unipdf/v3/internal/bitwise";_ae "github.com/unidoc/unipdf/v3/internal/jbig2/basic";_cb "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";
_eb "github.com/unidoc/unipdf/v3/internal/jbig2/document/segments";_ge "github.com/unidoc/unipdf/v3/internal/jbig2/encoder/classer";_cd "github.com/unidoc/unipdf/v3/internal/jbig2/errors";_g "io";_ed "math";_de "runtime/debug";);const (GenericEM EncodingMethod =iota ;
CorrelationEM ;RankHausEM ;);func (_dbd *Page )String ()string {return _ee .Sprintf ("\u0050\u0061\u0067\u0065\u0020\u0023\u0025\u0064",_dbd .PageNumber );};func (_dcb *Page )AddEndOfPageSegment (){_defe :=&_eb .Header {Type :_eb .TEndOfPage ,PageAssociation :_dcb .PageNumber };
_dcb .Segments =append (_dcb .Segments ,_defe );};func (_bcag *Page )collectPageStripes ()(_dge []_eb .Segmenter ,_gdde error ){const _fbe ="\u0063o\u006cl\u0065\u0063\u0074\u0050\u0061g\u0065\u0053t\u0072\u0069\u0070\u0065\u0073";var _cegf _eb .Segmenter ;
for _ ,_gdeb :=range _bcag .Segments {switch _gdeb .Type {case 6,7,22,23,38,39,42,43:_cegf ,_gdde =_gdeb .GetSegmentData ();if _gdde !=nil {return nil ,_cd .Wrap (_gdde ,_fbe ,"");};_dge =append (_dge ,_cegf );case 50:_cegf ,_gdde =_gdeb .GetSegmentData ();
if _gdde !=nil {return nil ,_gdde ;};_fcc ,_cfgf :=_cegf .(*_eb .EndOfStripe );if !_cfgf {return nil ,_cd .Errorf (_fbe ,"\u0045\u006e\u0064\u004f\u0066\u0053\u0074\u0072\u0069\u0070\u0065\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u006f\u0066\u0020\u0076\u0061l\u0069\u0064\u0020\u0074\u0079p\u0065\u003a \u0027\u0025\u0054\u0027",_cegf );
};_dge =append (_dge ,_fcc );_bcag .FinalHeight =_fcc .LineNumber ();};};return _dge ,nil ;};func (_gcde *Document )encodeEOFHeader (_gaea _c .BinaryWriter )(_fee int ,_egcf error ){_ggbb :=&_eb .Header {SegmentNumber :_gcde .nextSegmentNumber (),Type :_eb .TEndOfFile };
if _fee ,_egcf =_ggbb .Encode (_gaea );_egcf !=nil {return 0,_cd .Wrap (_egcf ,"\u0065n\u0063o\u0064\u0065\u0045\u004f\u0046\u0048\u0065\u0061\u0064\u0065\u0072","");};return _fee ,nil ;};func (_db *Document )produceClassifiedPages ()(_be error ){const _fa ="\u0070\u0072\u006f\u0064uc\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067e\u0073";
if _db .Classer ==nil {return nil ;};var (_fc *Page ;_dac bool ;_cef *_eb .Header ;);for _gd :=1;_gd <=int (_db .NumberOfPages );_gd ++{if _fc ,_dac =_db .Pages [_gd ];!_dac {return _cd .Errorf (_fa ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_gd );
};if _fc .EncodingMethod ==GenericEM {continue ;};if _cef ==nil {if _cef ,_be =_db .GlobalSegments .GetSymbolDictionary ();_be !=nil {return _cd .Wrap (_be ,_fa ,"");};};if _be =_db .produceClassifiedPage (_fc ,_cef );_be !=nil {return _cd .Wrapf (_be ,_fa ,"\u0070\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027",_gd );
};};return nil ;};func (_ecd *Document )completeSymbols ()(_bcd error ){const _bfe ="\u0063o\u006dp\u006c\u0065\u0074\u0065\u0053\u0079\u006d\u0062\u006f\u006c\u0073";if _ecd .Classer ==nil {return nil ;};if _ecd .Classer .UndilatedTemplates ==nil {return _cd .Error (_bfe ,"\u006e\u006f t\u0065\u006d\u0070l\u0061\u0074\u0065\u0073 de\u0066in\u0065\u0064\u0020\u0066\u006f\u0072\u0020th\u0065\u0020\u0063\u006c\u0061\u0073\u0073e\u0072");
};_cce :=len (_ecd .Pages )==1;_gf :=make ([]int ,_ecd .Classer .UndilatedTemplates .Size ());var _aae int ;for _aaf :=0;_aaf < _ecd .Classer .ClassIDs .Size ();_aaf ++{_aae ,_bcd =_ecd .Classer .ClassIDs .Get (_aaf );if _bcd !=nil {return _cd .Wrap (_bcd ,_bfe ,"\u0063\u006c\u0061\u0073\u0073\u0020\u0049\u0044\u0027\u0073");
};_gf [_aae ]++;};var _dab []int ;for _gaa :=0;_gaa < _ecd .Classer .UndilatedTemplates .Size ();_gaa ++{if _gf [_gaa ]==0{return _cd .Error (_bfe ,"\u006eo\u0020\u0073y\u006d\u0062\u006f\u006cs\u0020\u0069\u006es\u0074\u0061\u006e\u0063\u0065\u0073\u0020\u0066\u006fun\u0064\u0020\u0066o\u0072\u0020g\u0069\u0076\u0065\u006e\u0020\u0063l\u0061\u0073s\u003f\u0020");
};if _gf [_gaa ]> 1||_cce {_dab =append (_dab ,_gaa );};};_ecd ._af =len (_dab );var _bbd ,_bg int ;for _dc :=0;_dc < _ecd .Classer .ComponentPageNumbers .Size ();_dc ++{_bbd ,_bcd =_ecd .Classer .ComponentPageNumbers .Get (_dc );if _bcd !=nil {return _cd .Wrapf (_bcd ,_bfe ,"p\u0061\u0067\u0065\u003a\u0020\u0027\u0025\u0064\u0027 \u006e\u006f\u0074\u0020\u0066\u006f\u0075nd\u0020\u0069\u006e\u0020t\u0068\u0065\u0020\u0063\u006c\u0061\u0073\u0073\u0065r \u0070\u0061g\u0065\u006e\u0075\u006d\u0062\u0065\u0072\u0073",_dc );
};_bg ,_bcd =_ecd .Classer .ClassIDs .Get (_dc );if _bcd !=nil {return _cd .Wrapf (_bcd ,_bfe ,"\u0063\u0061\u006e\u0027\u0074\u0020\u0067e\u0074\u0020\u0073y\u006d\u0062\u006f\u006c \u0066\u006f\u0072\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027\u0020\u0066\u0072\u006f\u006d\u0020\u0063\u006c\u0061\u0073\u0073\u0065\u0072",_bbd );
};if _gf [_bg ]==1&&!_cce {_ecd ._da [_bbd ]=append (_ecd ._da [_bbd ],_bg );};};if _bcd =_ecd .Classer .ComputeLLCorners ();_bcd !=nil {return _cd .Wrap (_bcd ,_bfe ,"");};return nil ;};func (_ggb *Document )Encode ()(_fde []byte ,_efgb error ){const _dbb ="\u0044o\u0063u\u006d\u0065\u006e\u0074\u002e\u0045\u006e\u0063\u006f\u0064\u0065";
var _ecb ,_ggf int ;if _ggb .FullHeaders {if _ecb ,_efgb =_ggb .encodeFileHeader (_ggb ._def );_efgb !=nil {return nil ,_cd .Wrap (_efgb ,_dbb ,"");};};var (_afa bool ;_gcd *_eb .Header ;_cgg *Page ;);if _efgb =_ggb .completeClassifiedPages ();_efgb !=nil {return nil ,_cd .Wrap (_efgb ,_dbb ,"");
};if _efgb =_ggb .produceClassifiedPages ();_efgb !=nil {return nil ,_cd .Wrap (_efgb ,_dbb ,"");};if _ggb .GlobalSegments !=nil {for _ ,_gcd =range _ggb .GlobalSegments .Segments {if _efgb =_ggb .encodeSegment (_gcd ,&_ecb );_efgb !=nil {return nil ,_cd .Wrap (_efgb ,_dbb ,"");
};};};for _efb :=1;_efb <=int (_ggb .NumberOfPages );_efb ++{if _cgg ,_afa =_ggb .Pages [_efb ];!_afa {return nil ,_cd .Errorf (_dbb ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_efb );};for _ ,_gcd =range _cgg .Segments {if _efgb =_ggb .encodeSegment (_gcd ,&_ecb );
_efgb !=nil {return nil ,_cd .Wrap (_efgb ,_dbb ,"");};};};if _ggb .FullHeaders {if _ggf ,_efgb =_ggb .encodeEOFHeader (_ggb ._def );_efgb !=nil {return nil ,_cd .Wrap (_efgb ,_dbb ,"");};_ecb +=_ggf ;};_fde =_ggb ._def .Data ();if len (_fde )!=_ecb {_a .Log .Debug ("\u0042\u0079\u0074\u0065\u0073 \u0077\u0072\u0069\u0074\u0074\u0065\u006e \u0028\u006e\u0029\u003a\u0020\u0027\u0025\u0064\u0027\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0065\u0071\u0075\u0061\u006c\u0020\u0074\u006f\u0020\u0074\u0068\u0065\u0020\u006c\u0065\u006e\u0067\u0074\u0068\u0020\u006f\u0066\u0020t\u0068\u0065\u0020\u0064\u0061\u0074\u0061\u0020\u0065\u006e\u0063\u006fd\u0065\u0064\u003a\u0020\u0027\u0025d\u0027",_ecb ,len (_fde ));
};return _fde ,nil ;};func (_ccf *Page )createNormalPage (_ecc *_eb .PageInformationSegment )error {const _dage ="\u0063\u0072e\u0061\u0074\u0065N\u006f\u0072\u006d\u0061\u006c\u0050\u0061\u0067\u0065";_ccf .Bitmap =_cb .New (_ecc .PageBMWidth ,_ecc .PageBMHeight );
if _ecc .DefaultPixelValue !=0{_ccf .Bitmap .SetDefaultPixel ();};for _ ,_gda :=range _ccf .Segments {switch _gda .Type {case 6,7,22,23,38,39,42,43:_a .Log .Trace ("\u0047\u0065\u0074\u0074in\u0067\u0020\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0064",_gda .SegmentNumber );
_bgf ,_ecg :=_gda .GetSegmentData ();if _ecg !=nil {return _ecg ;};_agf ,_eee :=_bgf .(_eb .Regioner );if !_eee {_a .Log .Debug ("\u0053\u0065g\u006d\u0065\u006e\u0074\u003a\u0020\u0025\u0054\u0020\u0069\u0073\u0020\u006e\u006f\u0074\u0020\u0061\u0020\u0052\u0065\u0067\u0069on\u0065\u0072",_bgf );
return _cd .Errorf (_dage ,"i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062i\u0067\u0032\u0020\u0073\u0065\u0067\u006den\u0074\u0020\u0074\u0079p\u0065\u0020\u002d\u0020\u006e\u006f\u0074\u0020\u0061 R\u0065\u0067i\u006f\u006e\u0065\u0072\u003a\u0020\u0025\u0054",_bgf );
};_fgf ,_ecg :=_agf .GetRegionBitmap ();if _ecg !=nil {return _cd .Wrap (_ecg ,_dage ,"");};if _ccf .fitsPage (_ecc ,_fgf ){_ccf .Bitmap =_fgf ;}else {_feb :=_agf .GetRegionInfo ();_bad :=_ccf .getCombinationOperator (_ecc ,_feb .CombinaionOperator );_ecg =_cb .Blit (_fgf ,_ccf .Bitmap ,int (_feb .XLocation ),int (_feb .YLocation ),_bad );
if _ecg !=nil {return _cd .Wrap (_ecg ,_dage ,"");};};};};return nil ;};func InitEncodeDocument (fullHeaders bool )*Document {return &Document {FullHeaders :fullHeaders ,_def :_c .BufferedMSB (),Pages :map[int ]*Page {},_da :map[int ][]int {},_afe :map[int ]int {},_dag :map[int ][]int {}};
};func (_daef *Page )getPageInformationSegment ()*_eb .Header {for _ ,_adcc :=range _daef .Segments {if _adcc .Type ==_eb .TPageInformation {return _adcc ;};};_a .Log .Debug ("\u0050\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0066o\u0072\u0020\u0070\u0061\u0067\u0065\u003a\u0020%\u0073\u002e",_daef );
return nil ;};func (_aa *Document )addSymbolDictionary (_eddd int ,_bc *_cb .Bitmaps ,_gbc []int ,_ega map[int ]int ,_aee bool )(*_eb .Header ,error ){const _egc ="\u0061\u0064\u0064\u0053ym\u0062\u006f\u006c\u0044\u0069\u0063\u0074\u0069\u006f\u006e\u0061\u0072\u0079";
_cf :=&_eb .SymbolDictionary {};if _fdc :=_cf .InitEncode (_bc ,_gbc ,_ega ,_aee );_fdc !=nil {return nil ,_fdc ;};_cgb :=&_eb .Header {Type :_eb .TSymbolDictionary ,PageAssociation :_eddd ,SegmentData :_cf };if _eddd ==0{if _aa .GlobalSegments ==nil {_aa .GlobalSegments =&Globals {};
};_aa .GlobalSegments .AddSegment (_cgb );return _cgb ,nil ;};_bd ,_faa :=_aa .Pages [_eddd ];if !_faa {return nil ,_cd .Errorf (_egc ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_eddd );};var (_fdd int ;
_bf *_eb .Header ;);for _fdd ,_bf =range _bd .Segments {if _bf .Type ==_eb .TPageInformation {break ;};};_fdd ++;_bd .Segments =append (_bd .Segments ,nil );copy (_bd .Segments [_fdd +1:],_bd .Segments [_fdd :]);_bd .Segments [_fdd ]=_cgb ;return _cgb ,nil ;
};type Document struct{Pages map[int ]*Page ;NumberOfPagesUnknown bool ;NumberOfPages uint32 ;GBUseExtTemplate bool ;InputStream _c .StreamReader ;GlobalSegments *Globals ;OrganizationType _eb .OrganizationType ;Classer *_ge .Classer ;XRes ,YRes int ;FullHeaders bool ;
CurrentSegmentNumber uint32 ;AverageTemplates *_cb .Bitmaps ;BaseIndexes []int ;Refinement bool ;RefineLevel int ;_cbd uint8 ;_def *_c .BufferedWriter ;EncodeGlobals bool ;_af int ;_da map[int ][]int ;_dag map[int ][]int ;_ac []int ;_afe map[int ]int ;
};func (_fdcg *Page )createStripedPage (_abg *_eb .PageInformationSegment )error {const _adc ="\u0063\u0072\u0065\u0061\u0074\u0065\u0053\u0074\u0072\u0069\u0070\u0065d\u0050\u0061\u0067\u0065";_bcc ,_bfa :=_fdcg .collectPageStripes ();if _bfa !=nil {return _cd .Wrap (_bfa ,_adc ,"");
};var _dccg int ;for _ ,_dace :=range _bcc {if _gad ,_ebc :=_dace .(*_eb .EndOfStripe );_ebc {_dccg =_gad .LineNumber ()+1;}else {_eadc :=_dace .(_eb .Regioner );_ffcd :=_eadc .GetRegionInfo ();_defa :=_fdcg .getCombinationOperator (_abg ,_ffcd .CombinaionOperator );
_fced ,_aefg :=_eadc .GetRegionBitmap ();if _aefg !=nil {return _cd .Wrap (_aefg ,_adc ,"");};_aefg =_cb .Blit (_fced ,_fdcg .Bitmap ,int (_ffcd .XLocation ),_dccg ,_defa );if _aefg !=nil {return _cd .Wrap (_aefg ,_adc ,"");};};};return nil ;};func (_cae *Document )completeClassifiedPages ()(_edd error ){const _eec ="\u0063\u006f\u006dpl\u0065\u0074\u0065\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0050\u0061\u0067\u0065\u0073";
if _cae .Classer ==nil {return nil ;};_cae ._ac =make ([]int ,_cae .Classer .UndilatedTemplates .Size ());for _ef :=0;_ef < _cae .Classer .ClassIDs .Size ();_ef ++{_gb ,_caa :=_cae .Classer .ClassIDs .Get (_ef );if _caa !=nil {return _cd .Wrapf (_caa ,_eec ,"\u0063\u006c\u0061\u0073s \u0077\u0069\u0074\u0068\u0020\u0069\u0064\u003a\u0020\u0027\u0025\u0064\u0027",_ef );
};_cae ._ac [_gb ]++;};var _ba []int ;for _cc :=0;_cc < _cae .Classer .UndilatedTemplates .Size ();_cc ++{if _cae .NumberOfPages ==1||_cae ._ac [_cc ]> 1{_ba =append (_ba ,_cc );};};var (_afef *Page ;_fff bool ;);for _efg ,_cde :=range *_cae .Classer .ComponentPageNumbers {if _afef ,_fff =_cae .Pages [_cde ];
!_fff {return _cd .Errorf (_eec ,"p\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020n\u006f\u0074\u0020\u0066ou\u006e\u0064",_efg );};if _afef .EncodingMethod ==GenericEM {_a .Log .Error ("\u0047\u0065\u006e\u0065\u0072\u0069c\u0020\u0070\u0061g\u0065\u0020\u0077i\u0074\u0068\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020ma\u0070\u0070\u0065\u0064\u0020\u0061\u0073\u0020\u0063\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064\u0020\u0070\u0061\u0067\u0065",_efg );
continue ;};_cae ._dag [_cde ]=append (_cae ._dag [_cde ],_efg );_ab ,_eg :=_cae .Classer .ClassIDs .Get (_efg );if _eg !=nil {return _cd .Wrapf (_eg ,_eec ,"\u006e\u006f\u0020\u0073uc\u0068\u0020\u0063\u006c\u0061\u0073\u0073\u0049\u0044\u003a\u0020\u0025\u0064",_efg );
};if _cae ._ac [_ab ]==1&&_cae .NumberOfPages !=1{_dg :=append (_cae ._da [_cde ],_ab );_cae ._da [_cde ]=_dg ;};};if _edd =_cae .Classer .ComputeLLCorners ();_edd !=nil {return _cd .Wrap (_edd ,_eec ,"");};if _ ,_edd =_cae .addSymbolDictionary (0,_cae .Classer .UndilatedTemplates ,_ba ,_cae ._afe ,false );
_edd !=nil {return _cd .Wrap (_edd ,_eec ,"");};return nil ;};func (_gea *Page )AddGenericRegion (bm *_cb .Bitmap ,xloc ,yloc ,template int ,tp _eb .Type ,duplicateLineRemoval bool )error {const _effb ="P\u0061\u0067\u0065\u002eAd\u0064G\u0065\u006e\u0065\u0072\u0069c\u0052\u0065\u0067\u0069\u006f\u006e";
_aage :=&_eb .GenericRegion {};if _eaa :=_aage .InitEncode (bm ,xloc ,yloc ,template ,duplicateLineRemoval );_eaa !=nil {return _cd .Wrap (_eaa ,_effb ,"");};_fab :=&_eb .Header {Type :_eb .TImmediateGenericRegion ,PageAssociation :_gea .PageNumber ,SegmentData :_aage };
_gea .Segments =append (_gea .Segments ,_fab );return nil ;};func (_dae *Document )determineRandomDataOffsets (_bea []*_eb .Header ,_dce uint64 ){if _dae .OrganizationType !=_eb .ORandom {return ;};for _ ,_cbg :=range _bea {_cbg .SegmentDataStartOffset =_dce ;
_dce +=_cbg .SegmentDataLength ;};};func (_gdd *Page )createPage (_bacf *_eb .PageInformationSegment )error {var _bdc error ;if !_bacf .IsStripe ||_bacf .PageBMHeight !=-1{_bdc =_gdd .createNormalPage (_bacf );}else {_bdc =_gdd .createStripedPage (_bacf );
};return _bdc ;};func (_cdg *Page )GetResolutionY ()(int ,error ){return _cdg .getResolutionY ()};func (_cgd *Page )GetBitmap ()(_dafa *_cb .Bitmap ,_aebf error ){_a .Log .Trace (_ee .Sprintf ("\u005b\u0050\u0041G\u0045\u005d\u005b\u0023%\u0064\u005d\u0020\u0047\u0065\u0074\u0042i\u0074\u006d\u0061\u0070\u0020\u0062\u0065\u0067\u0069\u006e\u0073\u002e\u002e\u002e",_cgd .PageNumber ));
defer func (){if _aebf !=nil {_a .Log .Trace (_ee .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064\u005d\u0020\u0047\u0065\u0074B\u0069t\u006d\u0061\u0070\u0020\u0066\u0061\u0069\u006c\u0065\u0064\u002e\u0020\u0025\u0076",_cgd .PageNumber ,_aebf ));
}else {_a .Log .Trace (_ee .Sprintf ("\u005b\u0050\u0041\u0047\u0045\u005d\u005b\u0023\u0025\u0064]\u0020\u0047\u0065\u0074\u0042\u0069\u0074m\u0061\u0070\u0020\u0066\u0069\u006e\u0069\u0073\u0068\u0065\u0064",_cgd .PageNumber ));};}();if _cgd .Bitmap !=nil {return _cgd .Bitmap ,nil ;
};_aebf =_cgd .composePageBitmap ();if _aebf !=nil {return nil ,_aebf ;};return _cgd .Bitmap ,nil ;};func (_gfga *Page )Encode (w _c .BinaryWriter )(_bfef int ,_gde error ){const _cdeg ="P\u0061\u0067\u0065\u002e\u0045\u006e\u0063\u006f\u0064\u0065";var _egg int ;
for _ ,_gcag :=range _gfga .Segments {if _egg ,_gde =_gcag .Encode (w );_gde !=nil {return _bfef ,_cd .Wrap (_gde ,_cdeg ,"");};_bfef +=_egg ;};return _bfef ,nil ;};func (_cab *Document )GetNumberOfPages ()(uint32 ,error ){if _cab .NumberOfPagesUnknown ||_cab .NumberOfPages ==0{if len (_cab .Pages )==0{if _gae :=_cab .mapData ();
_gae !=nil {return 0,_cd .Wrap (_gae ,"\u0044o\u0063\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074N\u0075m\u0062e\u0072\u004f\u0066\u0050\u0061\u0067\u0065s","");};};return uint32 (len (_cab .Pages )),nil ;};return _cab .NumberOfPages ,nil ;};func _fcf (_fd int )int {_bb :=0;
_gbd :=(_fd &(_fd -1))==0;_fd >>=1;for ;_fd !=0;_fd >>=1{_bb ++;};if _gbd {return _bb ;};return _bb +1;};func (_dagb *Document )isFileHeaderPresent ()(bool ,error ){_dagb .InputStream .Mark ();for _ ,_gdb :=range _f {_fag ,_ceb :=_dagb .InputStream .ReadByte ();
if _ceb !=nil {return false ,_ceb ;};if _gdb !=_fag {_dagb .InputStream .Reset ();return false ,nil ;};};_dagb .InputStream .Reset ();return true ,nil ;};func (_dde *Document )GetPage (pageNumber int )(_eb .Pager ,error ){const _fcd ="\u0044\u006fc\u0075\u006d\u0065n\u0074\u002e\u0047\u0065\u0074\u0050\u0061\u0067\u0065";
if pageNumber < 0{_a .Log .Debug ("\u004a\u0042\u0049\u00472\u0020\u0050\u0061\u0067\u0065\u0020\u002d\u0020\u0047e\u0074\u0050\u0061\u0067\u0065\u003a\u0020\u0025\u0064\u002e\u0020\u0050\u0061\u0067\u0065\u0020\u0063\u0061n\u006e\u006f\u0074\u0020\u0062e\u0020\u006c\u006f\u0077\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0030\u002e\u0020\u0025\u0073",pageNumber ,_de .Stack ());
return nil ,_cd .Errorf (_fcd ,"\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032\u0020d\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u002d\u0020\u0070\u0072\u006f\u0076\u0069\u0064\u0065\u0064 \u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u003a\u0020\u0025\u0064",pageNumber );
};if pageNumber > len (_dde .Pages ){_a .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_de .Stack ());return nil ,_cd .Error (_fcd ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};_cbf ,_efc :=_dde .Pages [pageNumber ];if !_efc {_a .Log .Debug ("\u0050\u0061\u0067\u0065 n\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u003a\u0020\u0025\u0064\u002e\u0020%\u0073",pageNumber ,_de .Stack ());return nil ,_cd .Errorf (_fcd ,"\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065n\u0074\u0020\u002d\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _cbf ,nil ;};func (_gebe *Page )clearSegmentData (){for _gbfgf :=range _gebe .Segments {_gebe .Segments [_gbfgf ].CleanSegmentData ();};};func (_ccc *Document )mapData ()error {const _beaf ="\u006da\u0070\u0044\u0061\u0074\u0061";var (_fef []*_eb .Header ;
_gdga int64 ;_fdec _eb .Type ;);_agb ,_dabd :=_ccc .isFileHeaderPresent ();if _dabd !=nil {return _cd .Wrap (_dabd ,_beaf ,"");};if _agb {if _dabd =_ccc .parseFileHeader ();_dabd !=nil {return _cd .Wrap (_dabd ,_beaf ,"");};_gdga +=int64 (_ccc ._cbd );
_ccc .FullHeaders =true ;};var (_ffa *Page ;_fded bool ;);for _fdec !=51&&!_fded {_fba ,_gag :=_eb .NewHeader (_ccc ,_ccc .InputStream ,_gdga ,_ccc .OrganizationType );if _gag !=nil {return _cd .Wrap (_gag ,_beaf ,"");};_a .Log .Trace ("\u0044\u0065c\u006f\u0064\u0069\u006eg\u0020\u0073e\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u0075m\u0062\u0065\u0072\u003a\u0020\u0025\u0064\u002c\u0020\u0054\u0079\u0070e\u003a\u0020\u0025\u0073",_fba .SegmentNumber ,_fba .Type );
_fdec =_fba .Type ;if _fdec !=_eb .TEndOfFile {if _fba .PageAssociation !=0{_ffa =_ccc .Pages [_fba .PageAssociation ];if _ffa ==nil {_ffa =_adb (_ccc ,_fba .PageAssociation );_ccc .Pages [_fba .PageAssociation ]=_ffa ;if _ccc .NumberOfPagesUnknown {_ccc .NumberOfPages ++;
};};_ffa .Segments =append (_ffa .Segments ,_fba );}else {_ccc .GlobalSegments .AddSegment (_fba );};};_fef =append (_fef ,_fba );_gdga =_ccc .InputStream .StreamPosition ();if _ccc .OrganizationType ==_eb .OSequential {_gdga +=int64 (_fba .SegmentDataLength );
};_fded ,_gag =_ccc .reachedEOF (_gdga );if _gag !=nil {_a .Log .Debug ("\u006a\u0062\u0069\u0067\u0032 \u0064\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u0020\u0072\u0065\u0061\u0063h\u0065\u0064\u0020\u0045\u004f\u0046\u0020\u0077\u0069\u0074\u0068\u0020\u0065\u0072\u0072\u006f\u0072\u003a\u0020\u0025\u0076",_gag );
return _cd .Wrap (_gag ,_beaf ,"");};};_ccc .determineRandomDataOffsets (_fef ,uint64 (_gdga ));return nil ;};func (_gec *Document )encodeSegment (_gdg *_eb .Header ,_dee *int )error {const _afag ="\u0065\u006e\u0063\u006f\u0064\u0065\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
_gdg .SegmentNumber =_gec .nextSegmentNumber ();_cfb ,_bga :=_gdg .Encode (_gec ._def );if _bga !=nil {return _cd .Wrapf (_bga ,_afag ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u003a\u0020\u0027\u0025\u0064\u0027",_gdg .SegmentNumber );};*_dee +=_cfb ;
return nil ;};func (_efbd *Page )getWidth ()(int ,error ){const _ffab ="\u0067\u0065\u0074\u0057\u0069\u0064\u0074\u0068";if _efbd .FinalWidth !=0{return _efbd .FinalWidth ,nil ;};_fefc :=_efbd .getPageInformationSegment ();if _fefc ==nil {return 0,_cd .Error (_ffab ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_dabb ,_cgf :=_fefc .GetSegmentData ();if _cgf !=nil {return 0,_cd .Wrap (_cgf ,_ffab ,"");};_gcc ,_cegfg :=_dabb .(*_eb .PageInformationSegment );if !_cegfg {return 0,_cd .Errorf (_ffab ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_dabb );
};_efbd .FinalWidth =_gcc .PageBMWidth ;return _efbd .FinalWidth ,nil ;};func (_dec *Globals )GetSymbolDictionary ()(*_eb .Header ,error ){const _fdae ="G\u006c\u006f\u0062\u0061\u006c\u0073.\u0047\u0065\u0074\u0053\u0079\u006d\u0062\u006f\u006cD\u0069\u0063\u0074i\u006fn\u0061\u0072\u0079";
if _dec ==nil {return nil ,_cd .Error (_fdae ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_dec .Segments )==0{return nil ,_cd .Error (_fdae ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};for _ ,_ebd :=range _dec .Segments {if _ebd .Type ==_eb .TSymbolDictionary {return _ebd ,nil ;};};return nil ,_cd .Error (_fdae ,"\u0067\u006c\u006fba\u006c\u0020\u0073\u0079\u006d\u0062\u006f\u006c\u0020d\u0069c\u0074i\u006fn\u0061\u0072\u0079\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
};func (_cgdb *Page )countRegions ()int {var _ffg int ;for _ ,_cff :=range _cgdb .Segments {switch _cff .Type {case 6,7,22,23,38,39,42,43:_ffg ++;};};return _ffg ;};func (_bca *Page )GetHeight ()(int ,error ){return _bca .getHeight ()};var _f =[]byte {0x97,0x4A,0x42,0x32,0x0D,0x0A,0x1A,0x0A};
func (_ddd *Document )parseFileHeader ()error {const _aec ="\u0070a\u0072s\u0065\u0046\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";_ ,_gac :=_ddd .InputStream .Seek (8,_g .SeekStart );if _gac !=nil {return _cd .Wrap (_gac ,_aec ,"\u0069\u0064");
};_ ,_gac =_ddd .InputStream .ReadBits (5);if _gac !=nil {return _cd .Wrap (_gac ,_aec ,"\u0072\u0065\u0073\u0065\u0072\u0076\u0065\u0064\u0020\u0062\u0069\u0074\u0073");};_bbc ,_gac :=_ddd .InputStream .ReadBit ();if _gac !=nil {return _cd .Wrap (_gac ,_aec ,"\u0065x\u0074e\u006e\u0064\u0065\u0064\u0020t\u0065\u006dp\u006c\u0061\u0074\u0065\u0073");
};if _bbc ==1{_ddd .GBUseExtTemplate =true ;};_bbc ,_gac =_ddd .InputStream .ReadBit ();if _gac !=nil {return _cd .Wrap (_gac ,_aec ,"\u0075\u006e\u006b\u006eow\u006e\u0020\u0070\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};if _bbc !=1{_ddd .NumberOfPagesUnknown =false ;
};_bbc ,_gac =_ddd .InputStream .ReadBit ();if _gac !=nil {return _cd .Wrap (_gac ,_aec ,"\u006f\u0072\u0067\u0061\u006e\u0069\u007a\u0061\u0074\u0069\u006f\u006e \u0074\u0079\u0070\u0065");};_ddd .OrganizationType =_eb .OrganizationType (_bbc );if !_ddd .NumberOfPagesUnknown {_ddd .NumberOfPages ,_gac =_ddd .InputStream .ReadUint32 ();
if _gac !=nil {return _cd .Wrap (_gac ,_aec ,"\u006eu\u006db\u0065\u0072\u0020\u006f\u0066\u0020\u0070\u0061\u0067\u0065\u0073");};_ddd ._cbd =13;};return nil ;};func (_bbe *Page )getResolutionY ()(int ,error ){const _fbf ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0059";
if _bbe .ResolutionY !=0{return _bbe .ResolutionY ,nil ;};_ebcd :=_bbe .getPageInformationSegment ();if _ebcd ==nil {return 0,_cd .Error (_fbf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");};_cccb ,_gaef :=_ebcd .GetSegmentData ();
if _gaef !=nil {return 0,_cd .Wrap (_gaef ,_fbf ,"");};_gdgb ,_cag :=_cccb .(*_eb .PageInformationSegment );if !_cag {return 0,_cd .Errorf (_fbf ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006e\u0066o\u0072\u006d\u0061ti\u006f\u006e\u0020\u0073\u0065\u0067m\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006ci\u0064\u0020\u0074\u0079\u0070\u0065\u003a\u0027%\u0054\u0027",_cccb );
};_bbe .ResolutionY =_gdgb .ResolutionY ;return _bbe .ResolutionY ,nil ;};func (_fffa *Document )reachedEOF (_dfb int64 )(bool ,error ){const _ded ="\u0072\u0065\u0061\u0063\u0068\u0065\u0064\u0045\u004f\u0046";_ ,_gce :=_fffa .InputStream .Seek (_dfb ,_g .SeekStart );
if _gce !=nil {_a .Log .Debug ("\u0072\u0065\u0061c\u0068\u0065\u0064\u0045\u004f\u0046\u0020\u002d\u0020\u0064\u002e\u0049\u006e\u0070\u0075\u0074\u0053\u0074\u0072\u0065\u0061\u006d\u002e\u0053\u0065\u0065\u006b\u0020\u0066a\u0069\u006c\u0065\u0064\u003a\u0020\u0025\u0076",_gce );
return false ,_cd .Wrap (_gce ,_ded ,"\u0069n\u0070\u0075\u0074\u0020\u0073\u0074\u0072\u0065\u0061\u006d\u0020s\u0065\u0065\u006b\u0020\u0066\u0061\u0069\u006c\u0065\u0064");};_ ,_gce =_fffa .InputStream .ReadBits (32);if _gce ==_g .EOF {return true ,nil ;
}else if _gce !=nil {return false ,_cd .Wrap (_gce ,_ded ,"");};return false ,nil ;};func (_cg *Document )AddGenericPage (bm *_cb .Bitmap ,duplicateLineRemoval bool )(_ec error ){const _gc ="\u0044\u006f\u0063um\u0065\u006e\u0074\u002e\u0041\u0064\u0064\u0047\u0065\u006e\u0065\u0072\u0069\u0063\u0050\u0061\u0067\u0065";
if !_cg .FullHeaders &&_cg .NumberOfPages !=0{return _cd .Error (_gc ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
};_ff :=&Page {Segments :[]*_eb .Header {},Bitmap :bm ,Document :_cg ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,IsLossless :true ,BlackIsOne :bm .Color ==_cb .Chocolate };_ff .PageNumber =int (_cg .nextPageNumber ());_cg .Pages [_ff .PageNumber ]=_ff ;
bm .InverseData ();_ff .AddPageInformationSegment ();if _ec =_ff .AddGenericRegion (bm ,0,0,0,_eb .TImmediateGenericRegion ,duplicateLineRemoval );_ec !=nil {return _cd .Wrap (_ec ,_gc ,"");};if _cg .FullHeaders {_ff .AddEndOfPageSegment ();};return nil ;
};func (_fdcf *Page )fitsPage (_cfd *_eb .PageInformationSegment ,_bceb *_cb .Bitmap )bool {return _fdcf .countRegions ()==1&&_cfd .DefaultPixelValue ==0&&_cfd .PageBMWidth ==_bceb .Width &&_cfd .PageBMHeight ==_bceb .Height ;};func (_bae *Page )AddPageInformationSegment (){_ebde :=&_eb .PageInformationSegment {PageBMWidth :_bae .FinalWidth ,PageBMHeight :_bae .FinalHeight ,ResolutionX :_bae .ResolutionX ,ResolutionY :_bae .ResolutionY ,IsLossless :_bae .IsLossless };
if _bae .BlackIsOne {_ebde .DefaultPixelValue =uint8 (0x1);};_bfd :=&_eb .Header {PageAssociation :_bae .PageNumber ,SegmentDataLength :uint64 (_ebde .Size ()),SegmentData :_ebde ,Type :_eb .TPageInformation };_bae .Segments =append (_bae .Segments ,_bfd );
};type Globals struct{Segments []*_eb .Header ;};func (_ca *Document )AddClassifiedPage (bm *_cb .Bitmap ,method _ge .Method )(_cdb error ){const _ce ="\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002e\u0041\u0064d\u0043\u006c\u0061\u0073\u0073\u0069\u0066\u0069\u0065\u0064P\u0061\u0067\u0065";
if !_ca .FullHeaders &&_ca .NumberOfPages !=0{return _cd .Error (_ce ,"\u0064\u006f\u0063\u0075\u006de\u006e\u0074\u0020\u0061\u006c\u0072\u0065a\u0064\u0079\u0020\u0063\u006f\u006e\u0074\u0061\u0069\u006e\u0073\u0020\u0070\u0061\u0067\u0065\u002e\u0020\u0046\u0069\u006c\u0065\u004d\u006f\u0064\u0065\u0020\u0064\u0069\u0073\u0061\u006c\u006c\u006f\u0077\u0073\u0020\u0061\u0064\u0064i\u006e\u0067\u0020\u006d\u006f\u0072\u0065\u0020\u0074\u0068\u0061\u006e \u006f\u006e\u0065\u0020\u0070\u0061g\u0065");
};if _ca .Classer ==nil {if _ca .Classer ,_cdb =_ge .Init (_ge .DefaultSettings ());_cdb !=nil {return _cd .Wrap (_cdb ,_ce ,"");};};_b :=int (_ca .nextPageNumber ());_gg :=&Page {Segments :[]*_eb .Header {},Bitmap :bm ,Document :_ca ,FinalHeight :bm .Height ,FinalWidth :bm .Width ,PageNumber :_b };
_ca .Pages [_b ]=_gg ;switch method {case _ge .RankHaus :_gg .EncodingMethod =RankHausEM ;case _ge .Correlation :_gg .EncodingMethod =CorrelationEM ;};_gg .AddPageInformationSegment ();if _cdb =_ca .Classer .AddPage (bm ,_b ,method );_cdb !=nil {return _cd .Wrap (_cdb ,_ce ,"");
};if _ca .FullHeaders {_gg .AddEndOfPageSegment ();};return nil ;};func (_fae *Document )encodeFileHeader (_ffb _c .BinaryWriter )(_dbe int ,_dfc error ){const _dbbb ="\u0065\u006ec\u006f\u0064\u0065F\u0069\u006c\u0065\u0048\u0065\u0061\u0064\u0065\u0072";
_dbe ,_dfc =_ffb .Write (_f );if _dfc !=nil {return _dbe ,_cd .Wrap (_dfc ,_dbbb ,"\u0069\u0064");};if _dfc =_ffb .WriteByte (0x01);_dfc !=nil {return _dbe ,_cd .Wrap (_dfc ,_dbbb ,"\u0066\u006c\u0061g\u0073");};_dbe ++;_fb :=make ([]byte ,4);_e .BigEndian .PutUint32 (_fb ,_fae .NumberOfPages );
_ddef ,_dfc :=_ffb .Write (_fb );if _dfc !=nil {return _ddef ,_cd .Wrap (_dfc ,_dbbb ,"p\u0061\u0067\u0065\u0020\u006e\u0075\u006d\u0062\u0065\u0072");};_dbe +=_ddef ;return _dbe ,nil ;};func _adb (_edg *Document ,_dfe int )*Page {return &Page {Document :_edg ,PageNumber :_dfe ,Segments :[]*_eb .Header {}};
};func (_gced *Page )GetWidth ()(int ,error ){return _gced .getWidth ()};func (_ag *Document )produceClassifiedPage (_caag *Page ,_df *_eb .Header )(_dd error ){const _afg ="p\u0072\u006f\u0064\u0075ce\u0043l\u0061\u0073\u0073\u0069\u0066i\u0065\u0064\u0050\u0061\u0067\u0065";
var _gbg map[int ]int ;_aeg :=_ag ._af ;_fe :=[]*_eb .Header {_df };if len (_ag ._da [_caag .PageNumber ])> 0{_gbg =map[int ]int {};_cee ,_ga :=_ag .addSymbolDictionary (_caag .PageNumber ,_ag .Classer .UndilatedTemplates ,_ag ._da [_caag .PageNumber ],_gbg ,false );
if _ga !=nil {return _cd .Wrap (_ga ,_afg ,"");};_fe =append (_fe ,_cee );_aeg +=len (_ag ._da [_caag .PageNumber ]);};_geb :=_ag ._dag [_caag .PageNumber ];_a .Log .Debug ("P\u0061g\u0065\u003a\u0020\u0027\u0025\u0064\u0027\u0020c\u006f\u006d\u0070\u0073: \u0025\u0076",_caag .PageNumber ,_geb );
_caag .addTextRegionSegment (_fe ,_ag ._afe ,_gbg ,_ag ._dag [_caag .PageNumber ],_ag .Classer .PtaLL ,_ag .Classer .UndilatedTemplates ,_ag .Classer .ClassIDs ,nil ,_fcf (_aeg ),len (_ag ._dag [_caag .PageNumber ]));return nil ;};func (_efgc *Page )composePageBitmap ()error {const _ead ="\u0063\u006f\u006d\u0070\u006f\u0073\u0065\u0050\u0061\u0067\u0065\u0042i\u0074\u006d\u0061\u0070";
if _efgc .PageNumber ==0{return nil ;};_efe :=_efgc .getPageInformationSegment ();if _efe ==nil {return _cd .Error (_ead ,"\u0070\u0061\u0067e \u0069\u006e\u0066\u006f\u0072\u006d\u0061\u0074\u0069o\u006e \u0073e\u0067m\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");
};_bac ,_gcg :=_efe .GetSegmentData ();if _gcg !=nil {return _gcg ;};_afagc ,_caef :=_bac .(*_eb .PageInformationSegment );if !_caef {return _cd .Error (_ead ,"\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006da\u0074\u0069\u006f\u006e \u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073\u0020\u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070\u0065");
};if _gcg =_efgc .createPage (_afagc );_gcg !=nil {return _cd .Wrap (_gcg ,_ead ,"");};_efgc .clearSegmentData ();return nil ;};func _bba (_fg _c .StreamReader ,_bgc *Globals )(*Document ,error ){_aag :=&Document {Pages :make (map[int ]*Page ),InputStream :_fg ,OrganizationType :_eb .OSequential ,NumberOfPagesUnknown :true ,GlobalSegments :_bgc ,_cbd :9};
if _aag .GlobalSegments ==nil {_aag .GlobalSegments =&Globals {};};if _gca :=_aag .mapData ();_gca !=nil {return nil ,_gca ;};return _aag ,nil ;};func (_cgbe *Page )GetSegment (number int )(*_eb .Header ,error ){const _cge ="\u0050a\u0067e\u002e\u0047\u0065\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074";
for _ ,_afaa :=range _cgbe .Segments {if _afaa .SegmentNumber ==uint32 (number ){return _afaa ,nil ;};};_bdf :=make ([]uint32 ,len (_cgbe .Segments ));for _ggd ,_dcf :=range _cgbe .Segments {_bdf [_ggd ]=_dcf .SegmentNumber ;};return nil ,_cd .Errorf (_cge ,"\u0073e\u0067\u006d\u0065n\u0074\u0020\u0077i\u0074h \u006e\u0075\u006d\u0062\u0065\u0072\u003a \u0027\u0025\u0064\u0027\u0020\u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064\u0020\u0069\u006e\u0020\u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u003a\u0020'%\u0064'\u002e\u0020\u004b\u006e\u006f\u0077n\u0020\u0073\u0065\u0067\u006de\u006e\u0074\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0073\u003a \u0025\u0076",number ,_cgbe .PageNumber ,_bdf );
};func (_fge *Page )getHeight ()(int ,error ){const _bcdf ="\u0067e\u0074\u0048\u0065\u0069\u0067\u0068t";if _fge .FinalHeight !=0{return _fge .FinalHeight ,nil ;};_bdd :=_fge .getPageInformationSegment ();if _bdd ==nil {return 0,_cd .Error (_bcdf ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_gbdb ,_bge :=_bdd .GetSegmentData ();if _bge !=nil {return 0,_cd .Wrap (_bge ,_bcdf ,"");};_cbb ,_eeeg :=_gbdb .(*_eb .PageInformationSegment );if !_eeeg {return 0,_cd .Errorf (_bcdf ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_gbdb );
};if _cbb .PageBMHeight ==_ed .MaxInt32 {_ ,_bge =_fge .GetBitmap ();if _bge !=nil {return 0,_cd .Wrap (_bge ,_bcdf ,"");};}else {_fge .FinalHeight =_cbb .PageBMHeight ;};return _fge .FinalHeight ,nil ;};func (_fda *Document )nextPageNumber ()uint32 {_fda .NumberOfPages ++;
return _fda .NumberOfPages };func (_dedf *Page )nextSegmentNumber ()uint32 {return _dedf .Document .nextSegmentNumber ()};func (_aef *Globals )AddSegment (segment *_eb .Header ){_aef .Segments =append (_aef .Segments ,segment )};func DecodeDocument (input _c .StreamReader ,globals *Globals )(*Document ,error ){return _bba (input ,globals );
};func (_gcaa *Page )getResolutionX ()(int ,error ){const _gfc ="\u0067\u0065\u0074\u0052\u0065\u0073\u006f\u006c\u0075t\u0069\u006f\u006e\u0058";if _gcaa .ResolutionX !=0{return _gcaa .ResolutionX ,nil ;};_eed :=_gcaa .getPageInformationSegment ();if _eed ==nil {return 0,_cd .Error (_gfc ,"n\u0069l\u0020\u0070\u0061\u0067\u0065\u0020\u0069\u006ef\u006f\u0072\u006d\u0061ti\u006f\u006e");
};_fcb ,_eccf :=_eed .GetSegmentData ();if _eccf !=nil {return 0,_cd .Wrap (_eccf ,_gfc ,"");};_ecbb ,_gdc :=_fcb .(*_eb .PageInformationSegment );if !_gdc {return 0,_cd .Errorf (_gfc ,"\u0070\u0061\u0067\u0065\u0020\u0069n\u0066\u006f\u0072\u006d\u0061\u0074\u0069\u006f\u006e\u0020\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u0069\u0073 \u006f\u0066\u0020\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0074\u0079\u0070e\u003a \u0027\u0025\u0054\u0027",_fcb );
};_gcaa .ResolutionX =_ecbb .ResolutionX ;return _gcaa .ResolutionX ,nil ;};type Page struct{Segments []*_eb .Header ;PageNumber int ;Bitmap *_cb .Bitmap ;FinalHeight int ;FinalWidth int ;ResolutionX int ;ResolutionY int ;IsLossless bool ;Document *Document ;
FirstSegmentNumber int ;EncodingMethod EncodingMethod ;BlackIsOne bool ;};func (_ggbf *Page )getCombinationOperator (_fdfb *_eb .PageInformationSegment ,_ccb _cb .CombinationOperator )_cb .CombinationOperator {if _fdfb .CombinationOperatorOverrideAllowed (){return _ccb ;
};return _fdfb .CombinationOperator ();};func (_cbge *Page )GetResolutionX ()(int ,error ){return _cbge .getResolutionX ()};func (_eff *Globals )GetSegment (segmentNumber int )(*_eb .Header ,error ){const _dgd ="\u0047l\u006fb\u0061\u006c\u0073\u002e\u0047e\u0074\u0053e\u0067\u006d\u0065\u006e\u0074";
if _eff ==nil {return nil ,_cd .Error (_dgd ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");};if len (_eff .Segments )==0{return nil ,_cd .Error (_dgd ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");
};var _aagf *_eb .Header ;for _ ,_aagf =range _eff .Segments {if _aagf .SegmentNumber ==uint32 (segmentNumber ){break ;};};if _aagf ==nil {return nil ,_cd .Error (_dgd ,"\u0073\u0065\u0067\u006d\u0065\u006e\u0074\u0020\u006e\u006f\u0074\u0020f\u006f\u0075\u006e\u0064");
};return _aagf ,nil ;};func (_ffc *Document )nextSegmentNumber ()uint32 {_dbc :=_ffc .CurrentSegmentNumber ;_ffc .CurrentSegmentNumber ++;return _dbc ;};type EncodingMethod int ;func (_fea *Page )lastSegmentNumber ()(_bcde uint32 ,_bdg error ){const _cebd ="\u006c\u0061\u0073\u0074\u0053\u0065\u0067\u006d\u0065\u006e\u0074\u004eu\u006d\u0062\u0065\u0072";
if len (_fea .Segments )==0{return _bcde ,_cd .Errorf (_cebd ,"\u006e\u006f\u0020se\u0067\u006d\u0065\u006e\u0074\u0073\u0020\u0066\u006fu\u006ed\u0020i\u006e \u0074\u0068\u0065\u0020\u0070\u0061\u0067\u0065\u0020\u0027\u0025\u0064\u0027",_fea .PageNumber );
};return _fea .Segments [len (_fea .Segments )-1].SegmentNumber ,nil ;};func (_ceg *Page )addTextRegionSegment (_gbf []*_eb .Header ,_dbeb ,_adg map[int ]int ,_gbfg []int ,_cfg *_cb .Points ,_fdcd *_cb .Bitmaps ,_gbff *_ae .IntSlice ,_aeb *_cb .Boxes ,_gaeab ,_gfa int ){_ggba :=&_eb .TextRegion {NumberOfSymbols :uint32 (_gfa )};
_ggba .InitEncode (_dbeb ,_adg ,_gbfg ,_cfg ,_fdcd ,_gbff ,_aeb ,_ceg .FinalWidth ,_ceg .FinalHeight ,_gaeab );_dcd :=&_eb .Header {RTSegments :_gbf ,SegmentData :_ggba ,PageAssociation :_ceg .PageNumber ,Type :_eb .TImmediateTextRegion };_dbeg :=_eb .TPageInformation ;
if _adg !=nil {_dbeg =_eb .TSymbolDictionary ;};var _dcbd int ;for ;_dcbd < len (_ceg .Segments );_dcbd ++{if _ceg .Segments [_dcbd ].Type ==_dbeg {_dcbd ++;break ;};};_ceg .Segments =append (_ceg .Segments ,nil );copy (_ceg .Segments [_dcbd +1:],_ceg .Segments [_dcbd :]);
_ceg .Segments [_dcbd ]=_dcd ;};func (_dad *Globals )GetSegmentByIndex (index int )(*_eb .Header ,error ){const _aad ="\u0047l\u006f\u0062\u0061\u006cs\u002e\u0047\u0065\u0074\u0053e\u0067m\u0065n\u0074\u0042\u0079\u0049\u006e\u0064\u0065x";if _dad ==nil {return nil ,_cd .Error (_aad ,"\u0067\u006c\u006f\u0062al\u0073\u0020\u006e\u006f\u0074\u0020\u0064\u0065\u0066\u0069\u006e\u0065\u0064");
};if len (_dad .Segments )==0{return nil ,_cd .Error (_aad ,"\u0067\u006c\u006f\u0062\u0061\u006c\u0073\u0020\u0061\u0072\u0065\u0020e\u006d\u0070\u0074\u0079");};if index > len (_dad .Segments )-1{return nil ,_cd .Error (_aad ,"\u0069n\u0064e\u0078\u0020\u006f\u0075\u0074 \u006f\u0066 \u0072\u0061\u006e\u0067\u0065");
};return _dad .Segments [index ],nil ;};func (_ad *Document )GetGlobalSegment (i int )(*_eb .Header ,error ){_fdg ,_fce :=_ad .GlobalSegments .GetSegment (i );if _fce !=nil {return nil ,_cd .Wrap (_fce ,"\u0047\u0065t\u0047\u006c\u006fb\u0061\u006c\u0053\u0065\u0067\u006d\u0065\u006e\u0074","");
};return _fdg ,nil ;};