2021-10-22 10:53:20 +00:00

50 lines
13 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 mmr ;import (_b "errors";_c "fmt";_gf "github.com/unidoc/unipdf/v3/common";_ab "github.com/unidoc/unipdf/v3/internal/bitwise";_e "github.com/unidoc/unipdf/v3/internal/jbig2/bitmap";_g "io";);func (_gca *Decoder )uncompress2d (_ceb *runData ,_db []int ,_fcg int ,_fcc []int ,_fgf int )(int ,error ){var (_cdb int ;
_daf int ;_bbd int ;_eag =true ;_dfg error ;_dfd *code ;);_db [_fcg ]=_fgf ;_db [_fcg +1]=_fgf ;_db [_fcg +2]=_fgf +1;_db [_fcg +3]=_fgf +1;_dbf :for _bbd < _fgf {_dfd ,_dfg =_ceb .uncompressGetCode (_gca ._cf );if _dfg !=nil {return EOL ,nil ;};if _dfd ==nil {_ceb ._bfe ++;
break _dbf ;};_ceb ._bfe +=_dfd ._gb ;switch mmrCode (_dfd ._dd ){case _cec :_bbd =_db [_cdb ];case _dfb :_bbd =_db [_cdb ]+1;case _dg :_bbd =_db [_cdb ]-1;case _ef :for {var _af []*code ;if _eag {_af =_gca ._ea ;}else {_af =_gca ._bab ;};_dfd ,_dfg =_ceb .uncompressGetCode (_af );
if _dfg !=nil {return 0,_dfg ;};if _dfd ==nil {break _dbf ;};_ceb ._bfe +=_dfd ._gb ;if _dfd ._dd < 64{if _dfd ._dd < 0{_fcc [_daf ]=_bbd ;_daf ++;_dfd =nil ;break _dbf ;};_bbd +=_dfd ._dd ;_fcc [_daf ]=_bbd ;_daf ++;break ;};_bbd +=_dfd ._dd ;};_dfge :=_bbd ;
_abg :for {var _afe []*code ;if !_eag {_afe =_gca ._ea ;}else {_afe =_gca ._bab ;};_dfd ,_dfg =_ceb .uncompressGetCode (_afe );if _dfg !=nil {return 0,_dfg ;};if _dfd ==nil {break _dbf ;};_ceb ._bfe +=_dfd ._gb ;if _dfd ._dd < 64{if _dfd ._dd < 0{_fcc [_daf ]=_bbd ;
_daf ++;break _dbf ;};_bbd +=_dfd ._dd ;if _bbd < _fgf ||_bbd !=_dfge {_fcc [_daf ]=_bbd ;_daf ++;};break _abg ;};_bbd +=_dfd ._dd ;};for _bbd < _fgf &&_db [_cdb ]<=_bbd {_cdb +=2;};continue _dbf ;case _fc :_cdb ++;_bbd =_db [_cdb ];_cdb ++;continue _dbf ;
case _gg :_bbd =_db [_cdb ]+2;case _ggc :_bbd =_db [_cdb ]-2;case _eb :_bbd =_db [_cdb ]+3;case _ggcg :_bbd =_db [_cdb ]-3;default:if _ceb ._bfe ==12&&_dfd ._dd ==EOL {_ceb ._bfe =0;if _ ,_dfg =_gca .uncompress1d (_ceb ,_db ,_fgf );_dfg !=nil {return 0,_dfg ;
};_ceb ._bfe ++;if _ ,_dfg =_gca .uncompress1d (_ceb ,_fcc ,_fgf );_dfg !=nil {return 0,_dfg ;};_gebg ,_bda :=_gca .uncompress1d (_ceb ,_db ,_fgf );if _bda !=nil {return EOF ,_bda ;};_ceb ._bfe ++;return _gebg ,nil ;};_bbd =_fgf ;continue _dbf ;};if _bbd <=_fgf {_eag =!_eag ;
_fcc [_daf ]=_bbd ;_daf ++;if _cdb > 0{_cdb --;}else {_cdb ++;};for _bbd < _fgf &&_db [_cdb ]<=_bbd {_cdb +=2;};};};if _fcc [_daf ]!=_fgf {_fcc [_daf ]=_fgf ;};if _dfd ==nil {return EOL ,nil ;};return _daf ,nil ;};func _be (_eg ,_ca int )int {if _eg < _ca {return _ca ;
};return _eg ;};func (_ed *code )String ()string {return _c .Sprintf ("\u0025\u0064\u002f\u0025\u0064\u002f\u0025\u0064",_ed ._gb ,_ed ._d ,_ed ._dd );};func (_fec *Decoder )initTables ()(_gfe error ){if _fec ._ea ==nil {_fec ._ea ,_gfe =_fec .createLittleEndianTable (_bf );
if _gfe !=nil {return ;};_fec ._bab ,_gfe =_fec .createLittleEndianTable (_gae );if _gfe !=nil {return ;};_fec ._cf ,_gfe =_fec .createLittleEndianTable (_cc );if _gfe !=nil {return ;};};return nil ;};func (_aab *Decoder )uncompress1d (_aeg *runData ,_ccf []int ,_feb int )(int ,error ){var (_bde =true ;
_fdg int ;_cdc *code ;_gbf int ;_dgd error ;);_fdb :for _fdg < _feb {_gd :for {if _bde {_cdc ,_dgd =_aeg .uncompressGetCode (_aab ._ea );if _dgd !=nil {return 0,_dgd ;};}else {_cdc ,_dgd =_aeg .uncompressGetCode (_aab ._bab );if _dgd !=nil {return 0,_dgd ;
};};_aeg ._bfe +=_cdc ._gb ;if _cdc ._dd < 0{break _fdb ;};_fdg +=_cdc ._dd ;if _cdc ._dd < 64{_bde =!_bde ;_ccf [_gbf ]=_fdg ;_gbf ++;break _gd ;};};};if _ccf [_gbf ]!=_feb {_ccf [_gbf ]=_feb ;};_gbg :=EOL ;if _cdc !=nil &&_cdc ._dd !=EOL {_gbg =_gbf ;
};return _gbg ,nil ;};var (_cc =[][3]int {{4,0x1,int (_fc )},{3,0x1,int (_ef )},{1,0x1,int (_cec )},{3,0x3,int (_dfb )},{6,0x3,int (_gg )},{7,0x3,int (_eb )},{3,0x2,int (_dg )},{6,0x2,int (_ggc )},{7,0x2,int (_ggcg )},{10,0xf,int (_cb )},{12,0xf,int (_ga )},{12,0x1,int (EOL )}};
_bf =[][3]int {{4,0x07,2},{4,0x08,3},{4,0x0B,4},{4,0x0C,5},{4,0x0E,6},{4,0x0F,7},{5,0x12,128},{5,0x13,8},{5,0x14,9},{5,0x1B,64},{5,0x07,10},{5,0x08,11},{6,0x17,192},{6,0x18,1664},{6,0x2A,16},{6,0x2B,17},{6,0x03,13},{6,0x34,14},{6,0x35,15},{6,0x07,1},{6,0x08,12},{7,0x13,26},{7,0x17,21},{7,0x18,28},{7,0x24,27},{7,0x27,18},{7,0x28,24},{7,0x2B,25},{7,0x03,22},{7,0x37,256},{7,0x04,23},{7,0x08,20},{7,0xC,19},{8,0x12,33},{8,0x13,34},{8,0x14,35},{8,0x15,36},{8,0x16,37},{8,0x17,38},{8,0x1A,31},{8,0x1B,32},{8,0x02,29},{8,0x24,53},{8,0x25,54},{8,0x28,39},{8,0x29,40},{8,0x2A,41},{8,0x2B,42},{8,0x2C,43},{8,0x2D,44},{8,0x03,30},{8,0x32,61},{8,0x33,62},{8,0x34,63},{8,0x35,0},{8,0x36,320},{8,0x37,384},{8,0x04,45},{8,0x4A,59},{8,0x4B,60},{8,0x5,46},{8,0x52,49},{8,0x53,50},{8,0x54,51},{8,0x55,52},{8,0x58,55},{8,0x59,56},{8,0x5A,57},{8,0x5B,58},{8,0x64,448},{8,0x65,512},{8,0x67,640},{8,0x68,576},{8,0x0A,47},{8,0x0B,48},{9,0x01,_ff },{9,0x98,1472},{9,0x99,1536},{9,0x9A,1600},{9,0x9B,1728},{9,0xCC,704},{9,0xCD,768},{9,0xD2,832},{9,0xD3,896},{9,0xD4,960},{9,0xD5,1024},{9,0xD6,1088},{9,0xD7,1152},{9,0xD8,1216},{9,0xD9,1280},{9,0xDA,1344},{9,0xDB,1408},{10,0x01,_ff },{11,0x01,_ff },{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560}};
_gae =[][3]int {{2,0x02,3},{2,0x03,2},{3,0x02,1},{3,0x03,4},{4,0x02,6},{4,0x03,5},{5,0x03,7},{6,0x04,9},{6,0x05,8},{7,0x04,10},{7,0x05,11},{7,0x07,12},{8,0x04,13},{8,0x07,14},{9,0x01,_ff },{9,0x18,15},{10,0x01,_ff },{10,0x17,16},{10,0x18,17},{10,0x37,0},{10,0x08,18},{10,0x0F,64},{11,0x01,_ff },{11,0x17,24},{11,0x18,25},{11,0x28,23},{11,0x37,22},{11,0x67,19},{11,0x68,20},{11,0x6C,21},{11,0x08,1792},{11,0x0C,1856},{11,0x0D,1920},{12,0x00,EOF },{12,0x01,EOL },{12,0x12,1984},{12,0x13,2048},{12,0x14,2112},{12,0x15,2176},{12,0x16,2240},{12,0x17,2304},{12,0x1C,2368},{12,0x1D,2432},{12,0x1E,2496},{12,0x1F,2560},{12,0x24,52},{12,0x27,55},{12,0x28,56},{12,0x2B,59},{12,0x2C,60},{12,0x33,320},{12,0x34,384},{12,0x35,448},{12,0x37,53},{12,0x38,54},{12,0x52,50},{12,0x53,51},{12,0x54,44},{12,0x55,45},{12,0x56,46},{12,0x57,47},{12,0x58,57},{12,0x59,58},{12,0x5A,61},{12,0x5B,256},{12,0x64,48},{12,0x65,49},{12,0x66,62},{12,0x67,63},{12,0x68,30},{12,0x69,31},{12,0x6A,32},{12,0x6B,33},{12,0x6C,40},{12,0x6D,41},{12,0xC8,128},{12,0xC9,192},{12,0xCA,26},{12,0xCB,27},{12,0xCC,28},{12,0xCD,29},{12,0xD2,34},{12,0xD3,35},{12,0xD4,36},{12,0xD5,37},{12,0xD6,38},{12,0xD7,39},{12,0xDA,42},{12,0xDB,43},{13,0x4A,640},{13,0x4B,704},{13,0x4C,768},{13,0x4D,832},{13,0x52,1280},{13,0x53,1344},{13,0x54,1408},{13,0x55,1472},{13,0x5A,1536},{13,0x5B,1600},{13,0x64,1664},{13,0x65,1728},{13,0x6C,512},{13,0x6D,576},{13,0x72,896},{13,0x73,960},{13,0x74,1024},{13,0x75,1088},{13,0x76,1152},{13,0x77,1216}};
);func (_afd *runData )uncompressGetCode (_bbdd []*code )(*code ,error ){return _afd .uncompressGetCodeLittleEndian (_bbdd );};type code struct{_gb int ;_d int ;_dd int ;_cg []*code ;_ag bool ;};func (_dae *runData )fillBuffer (_ebe int )error {_dae ._gbgd =_ebe ;
_ ,_bad :=_dae ._dac .Seek (int64 (_ebe ),_g .SeekStart );if _bad !=nil {if _bad ==_g .EOF {_gf .Log .Debug ("\u0053\u0065\u0061\u006b\u0020\u0045\u004f\u0046");_dae ._cceb =-1;}else {return _bad ;};};if _bad ==nil {_dae ._cceb ,_bad =_dae ._dac .Read (_dae ._fca );
if _bad !=nil {if _bad ==_g .EOF {_gf .Log .Trace ("\u0052\u0065\u0061\u0064\u0020\u0045\u004f\u0046");_dae ._cceb =-1;}else {return _bad ;};};};if _dae ._cceb > -1&&_dae ._cceb < 3{for _dae ._cceb < 3{_ccg ,_gab :=_dae ._dac .ReadByte ();if _gab !=nil {if _gab ==_g .EOF {_dae ._fca [_dae ._cceb ]=0;
}else {return _gab ;};}else {_dae ._fca [_dae ._cceb ]=_ccg &0xFF;};_dae ._cceb ++;};};_dae ._cceb -=3;if _dae ._cceb < 0{_dae ._fca =make ([]byte ,len (_dae ._fca ));_dae ._cceb =len (_dae ._fca )-3;};return nil ;};func (_bbg *Decoder )createLittleEndianTable (_gag [][3]int )([]*code ,error ){_cbg :=make ([]*code ,_ced +1);
for _gaef :=0;_gaef < len (_gag );_gaef ++{_baf :=_ce (_gag [_gaef ]);if _baf ._gb <=_gbc {_bee :=_gbc -_baf ._gb ;_bc :=_baf ._d <<uint (_bee );for _bdd :=(1<<uint (_bee ))-1;_bdd >=0;_bdd --{_eda :=_bc |_bdd ;_cbg [_eda ]=_baf ;};}else {_aeb :=_baf ._d >>uint (_baf ._gb -_gbc );
if _cbg [_aeb ]==nil {var _fde =_ce ([3]int {});_fde ._cg =make ([]*code ,_fg +1);_cbg [_aeb ]=_fde ;};if _baf ._gb <=_gbc +_ec {_ffa :=_gbc +_ec -_baf ._gb ;_eab :=(_baf ._d <<uint (_ffa ))&_fg ;_cbg [_aeb ]._ag =true ;for _aa :=(1<<uint (_ffa ))-1;_aa >=0;
_aa --{_cbg [_aeb ]._cg [_eab |_aa ]=_baf ;};}else {return nil ,_b .New ("\u0043\u006f\u0064\u0065\u0020\u0074a\u0062\u006c\u0065\u0020\u006f\u0076\u0065\u0072\u0066\u006c\u006f\u0077\u0020i\u006e\u0020\u004d\u004d\u0052\u0044\u0065c\u006f\u0064\u0065\u0072");
};};};return _cbg ,nil ;};func (_aag *Decoder )detectAndSkipEOL ()error {for {_cfc ,_cfg :=_aag ._ge .uncompressGetCode (_aag ._cf );if _cfg !=nil {return _cfg ;};if _cfc !=nil &&_cfc ._dd ==EOL {_aag ._ge ._bfe +=_cfc ._gb ;}else {return nil ;};};};const (_fc mmrCode =iota ;
_ef ;_cec ;_dfb ;_gg ;_eb ;_dg ;_ggc ;_ggcg ;_cb ;_ga ;);func (_dc *Decoder )UncompressMMR ()(_de *_e .Bitmap ,_bd error ){_de =_e .New (_dc ._cgf ,_dc ._fe );_efa :=make ([]int ,_de .Width +5);_aec :=make ([]int ,_de .Width +5);_aec [0]=_de .Width ;_bb :=1;
var _ebg int ;for _gfb :=0;_gfb < _de .Height ;_gfb ++{_ebg ,_bd =_dc .uncompress2d (_dc ._ge ,_aec ,_bb ,_efa ,_de .Width );if _bd !=nil {return nil ,_bd ;};if _ebg ==EOF {break ;};if _ebg > 0{_bd =_dc .fillBitmap (_de ,_gfb ,_efa ,_ebg );if _bd !=nil {return nil ,_bd ;
};};_aec ,_efa =_efa ,_aec ;_bb =_ebg ;};if _bd =_dc .detectAndSkipEOL ();_bd !=nil {return nil ,_bd ;};_dc ._ge .align ();return _de ,nil ;};const (_fb int =1024<<7;_cbb int =3;_gdf uint =24;);func (_gba *Decoder )fillBitmap (_cce *_e .Bitmap ,_ddc int ,_bdda []int ,_bce int )error {var _ad byte ;
_fga :=0;_ged :=_cce .GetByteIndex (_fga ,_ddc );for _ggd :=0;_ggd < _bce ;_ggd ++{_bbc :=byte (1);_gc :=_bdda [_ggd ];if (_ggd &1)==0{_bbc =0;};for _fga < _gc {_ad =(_ad <<1)|_bbc ;_fga ++;if (_fga &7)==0{if _da :=_cce .SetByte (_ged ,_ad );_da !=nil {return _da ;
};_ged ++;_ad =0;};};};if (_fga &7)!=0{_ad <<=uint (8-(_fga &7));if _eac :=_cce .SetByte (_ged ,_ad );_eac !=nil {return _eac ;};};return nil ;};func _fa (_daa *_ab .SubstreamReader )(*runData ,error ){_fdd :=&runData {_dac :_daa ,_bfe :0,_edb :1};_bcd :=_f (_be (_cbb ,int (_daa .Length ())),_fb );
_fdd ._fca =make ([]byte ,_bcd );if _gdc :=_fdd .fillBuffer (0);_gdc !=nil {if _gdc ==_g .EOF {_fdd ._fca =make ([]byte ,10);_gf .Log .Debug ("F\u0069\u006c\u006c\u0042uf\u0066e\u0072\u0020\u0066\u0061\u0069l\u0065\u0064\u003a\u0020\u0025\u0076",_gdc );
}else {return nil ,_gdc ;};};return _fdd ,nil ;};const (EOF =-3;_ff =-2;EOL =-1;_gbc =8;_ced =(1<<_gbc )-1;_ec =5;_fg =(1<<_ec )-1;);type mmrCode int ;type Decoder struct{_cgf ,_fe int ;_ge *runData ;_ea []*code ;_bab []*code ;_cf []*code ;};func (_bg *runData )align (){_bg ._bfe =((_bg ._bfe +7)>>3)<<3};
func _ce (_df [3]int )*code {return &code {_gb :_df [0],_d :_df [1],_dd :_df [2]}};type runData struct{_dac *_ab .SubstreamReader ;_bfe int ;_edb int ;_agd int ;_fca []byte ;_gbgd int ;_cceb int ;};func New (r _ab .StreamReader ,width ,height int ,dataOffset ,dataLength int64 )(*Decoder ,error ){_ae :=&Decoder {_cgf :width ,_fe :height };
_cd ,_cad :=_ab .NewSubstreamReader (r ,uint64 (dataOffset ),uint64 (dataLength ));if _cad !=nil {return nil ,_cad ;};_geb ,_cad :=_fa (_cd );if _cad !=nil {return nil ,_cad ;};_ae ._ge =_geb ;if _egc :=_ae .initTables ();_egc !=nil {return nil ,_egc ;
};return _ae ,nil ;};func _f (_ba ,_fd int )int {if _ba > _fd {return _fd ;};return _ba ;};func (_gda *runData )uncompressGetNextCodeLittleEndian ()(int ,error ){_ac :=_gda ._bfe -_gda ._edb ;if _ac < 0||_ac > 24{_cgfe :=(_gda ._bfe >>3)-_gda ._gbgd ;if _cgfe >=_gda ._cceb {_cgfe +=_gda ._gbgd ;
if _babg :=_gda .fillBuffer (_cgfe );_babg !=nil {return 0,_babg ;};_cgfe -=_gda ._gbgd ;};_dec :=(uint32 (_gda ._fca [_cgfe ]&0xFF)<<16)|(uint32 (_gda ._fca [_cgfe +1]&0xFF)<<8)|(uint32 (_gda ._fca [_cgfe +2]&0xFF));_adg :=uint32 (_gda ._bfe &7);_dec <<=_adg ;
_gda ._agd =int (_dec );}else {_dbe :=_gda ._edb &7;_cff :=7-_dbe ;if _ac <=_cff {_gda ._agd <<=uint (_ac );}else {_ffab :=(_gda ._edb >>3)+3-_gda ._gbgd ;if _ffab >=_gda ._cceb {_ffab +=_gda ._gbgd ;if _abgd :=_gda .fillBuffer (_ffab );_abgd !=nil {return 0,_abgd ;
};_ffab -=_gda ._gbgd ;};_dbe =8-_dbe ;for {_gda ._agd <<=uint (_dbe );_gda ._agd |=int (uint (_gda ._fca [_ffab ])&0xFF);_ac -=_dbe ;_ffab ++;_dbe =8;if !(_ac >=8){break ;};};_gda ._agd <<=uint (_ac );};};_gda ._edb =_gda ._bfe ;return _gda ._agd ,nil ;
};func (_ee *runData )uncompressGetCodeLittleEndian (_def []*code )(*code ,error ){_fbe ,_ecc :=_ee .uncompressGetNextCodeLittleEndian ();if _ecc !=nil {_gf .Log .Debug ("\u0055n\u0063\u006fm\u0070\u0072\u0065\u0073s\u0047\u0065\u0074N\u0065\u0078\u0074\u0043\u006f\u0064\u0065\u004c\u0069tt\u006c\u0065\u0045n\u0064\u0069a\u006e\u0020\u0066\u0061\u0069\u006ce\u0064\u003a \u0025\u0076",_ecc );
return nil ,_ecc ;};_fbe &=0xffffff;_defc :=_fbe >>(_gdf -_gbc );_bdg :=_def [_defc ];if _bdg !=nil &&_bdg ._ag {_defc =(_fbe >>(_gdf -_gbc -_ec ))&_fg ;_bdg =_bdg ._cg [_defc ];};return _bdg ,nil ;};