unipdf/internal/cmap/cmap.go
2022-09-10 15:35:04 +00:00

141 lines
41 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 cmap ;import (_ga "bufio";_fg "bytes";_a "encoding/hex";_d "errors";_f "fmt";_bc "github.com/unidoc/unipdf/v3/common";_fgd "github.com/unidoc/unipdf/v3/core";_eb "github.com/unidoc/unipdf/v3/internal/cmap/bcmaps";_gc "io";_dg "sort";_e "strconv";
_fe "strings";_b "unicode/utf16";);func (cmap *CMap )parse ()error {var _ec cmapObject ;for {_bbf ,_cff :=cmap .parseObject ();if _cff !=nil {if _cff ==_gc .EOF {break ;};_bc .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0070\u0061\u0072\u0073\u0069\u006e\u0067\u0020\u0043\u004d\u0061\u0070\u003a\u0020\u0025\u0076",_cff );
return _cff ;};switch _edc :=_bbf .(type ){case cmapOperand :_aadd :=_edc ;switch _aadd .Operand {case _aaca :_cdee :=cmap .parseCodespaceRange ();if _cdee !=nil {return _cdee ;};case _aae :_bd :=cmap .parseCIDRange ();if _bd !=nil {return _bd ;};case _ffe :_bee :=cmap .parseBfchar ();
if _bee !=nil {return _bee ;};case _bae :_gaf :=cmap .parseBfrange ();if _gaf !=nil {return _gaf ;};case _acfd :if _ec ==nil {_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0075\u0073\u0065\u0063m\u0061\u0070\u0020\u0077\u0069\u0074\u0068\u0020\u006e\u006f \u0061\u0072\u0067");
return ErrBadCMap ;};_acga ,_gccd :=_ec .(cmapName );if !_gccd {_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0075\u0073\u0065\u0063\u006d\u0061\u0070\u0020\u0061\u0072\u0067\u0020\u006eo\u0074\u0020\u0061\u0020\u006e\u0061\u006de\u0020\u0025\u0023\u0076",_ec );
return ErrBadCMap ;};cmap ._dde =_acga .Name ;case _ecd :_dbc :=cmap .parseSystemInfo ();if _dbc !=nil {return _dbc ;};};case cmapName :_afa :=_edc ;switch _afa .Name {case _ecd :_gbb :=cmap .parseSystemInfo ();if _gbb !=nil {return _gbb ;};case _bgg :_gfb :=cmap .parseName ();
if _gfb !=nil {return _gfb ;};case _fbcd :_fef :=cmap .parseType ();if _fef !=nil {return _fef ;};case _fcb :_acf :=cmap .parseVersion ();if _acf !=nil {return _acf ;};case _ebaa :if _cff =cmap .parseWMode ();_cff !=nil {return _cff ;};};};_ec =_bbf ;};
return nil ;};func (cmap *CMap )NBits ()int {return cmap ._bcd };func _aee (_db string )(*CMap ,error ){_gb ,_eag :=_eb .Asset (_db );if _eag !=nil {return nil ,_eag ;};return LoadCmapFromDataCID (_gb );};func LoadCmapFromData (data []byte ,isSimple bool )(*CMap ,error ){_bc .Log .Trace ("\u004c\u006fa\u0064\u0043\u006d\u0061\u0070\u0046\u0072\u006f\u006d\u0044\u0061\u0074\u0061\u003a\u0020\u0069\u0073\u0053\u0069\u006d\u0070\u006ce=\u0025\u0074",isSimple );
cmap :=_agg (isSimple );cmap .cMapParser =_bfg (data );_cc :=cmap .parse ();if _cc !=nil {return nil ,_cc ;};if len (cmap ._fa )==0{if cmap ._dde !=""{return cmap ,nil ;};_bc .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0063\u006d\u0061p=\u0025\u0073",cmap );
return nil ,ErrBadCMap ;};cmap .computeInverseMappings ();return cmap ,nil ;};func (cmap *CMap )parseWMode ()error {var _eee int ;_afc :=false ;for _eegb :=0;_eegb < 3&&!_afc ;_eegb ++{_ebe ,_gdf :=cmap .parseObject ();if _gdf !=nil {return _gdf ;};switch _gba :=_ebe .(type ){case cmapOperand :switch _gba .Operand {case "\u0064\u0065\u0066":_afc =true ;
default:_bc .Log .Error ("\u0070\u0061\u0072\u0073\u0065\u0057\u004d\u006f\u0064\u0065:\u0020\u0073\u0074\u0061\u0074\u0065\u0020e\u0072\u0072\u006f\u0072\u002e\u0020\u006f\u003d\u0025\u0023\u0076",_ebe );return ErrBadCMap ;};case cmapInt :_eee =int (_gba ._aefb );
};};cmap ._ca =integer {_dff :true ,_gag :_eee };return nil ;};func (cmap *CMap )Name ()string {return cmap ._fca };func (_efac *cMapParser )skipSpaces ()(int ,error ){_fdcd :=0;for {_dgad ,_aabg :=_efac ._fbed .Peek (1);if _aabg !=nil {return 0,_aabg ;
};if _fgd .IsWhiteSpace (_dgad [0]){_efac ._fbed .ReadByte ();_fdcd ++;}else {break ;};};return _fdcd ,nil ;};func (cmap *CMap )parseSystemInfo ()error {_bdg :=false ;_dbe :=false ;_bfb :="";_cfe :=false ;_fba :=CIDSystemInfo {};for _beb :=0;_beb < 50&&!_cfe ;
_beb ++{_bfd ,_bac :=cmap .parseObject ();if _bac !=nil {return _bac ;};switch _fefc :=_bfd .(type ){case cmapDict :_ggg :=_fefc .Dict ;_afad ,_beg :=_ggg ["\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"];if !_beg {_bc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_gfg ,_beg :=_afad .(cmapString );if !_beg {_bc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_fba .Registry =_gfg .String ;
_afad ,_beg =_ggg ["\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"];if !_beg {_bc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gfg ,_beg =_afad .(cmapString );
if !_beg {_bc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_fba .Ordering =_gfg .String ;_fff ,_beg :=_ggg ["\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"];
if !_beg {_bc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");return ErrBadCMap ;};_gee ,_beg :=_fff .(cmapInt );if !_beg {_bc .Log .Debug ("\u0045\u0052\u0052\u004fR:\u0020\u0042\u0061\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006ef\u006f");
return ErrBadCMap ;};_fba .Supplement =int (_gee ._aefb );_cfe =true ;case cmapOperand :switch _fefc .Operand {case "\u0062\u0065\u0067i\u006e":_bdg =true ;case "\u0065\u006e\u0064":_cfe =true ;case "\u0064\u0065\u0066":_dbe =false ;};case cmapName :if _bdg {_bfb =_fefc .Name ;
_dbe =true ;};case cmapString :if _dbe {switch _bfb {case "\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079":_fba .Registry =_fefc .String ;case "\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067":_fba .Ordering =_fefc .String ;};};case cmapInt :if _dbe {switch _bfb {case "\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074":_fba .Supplement =int (_fefc ._aefb );
};};};};if !_cfe {_bc .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0050\u0061\u0072\u0073\u0065\u0064\u0020\u0053\u0079\u0073\u0074\u0065\u006d\u0020\u0049\u006e\u0066\u006f\u0020\u0064\u0069\u0063\u0074\u0020\u0069\u006ec\u006f\u0072\u0072\u0065\u0063\u0074\u006c\u0079");
return ErrBadCMap ;};cmap ._c =_fba ;return nil ;};func (cmap *CMap )BytesToCharcodes (data []byte )([]CharCode ,bool ){var _fbf []CharCode ;if cmap ._bcd ==8{for _ ,_bfc :=range data {_fbf =append (_fbf ,CharCode (_bfc ));};return _fbf ,true ;};for _ffb :=0;
_ffb < len (data );{_fd ,_feg ,_dc :=cmap .matchCode (data [_ffb :]);if !_dc {_bc .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0020\u006d\u0061\u0074\u0063\u0068\u0020\u0061\u0074\u0020\u0069\u003d\u0025\u0064\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d\u003d\u0025\u0023\u0071",_ffb ,data ,string (data ));
return _fbf ,false ;};_fbf =append (_fbf ,_fd );_ffb +=_feg ;};return _fbf ,true ;};type charRange struct{_eg CharCode ;_gf CharCode ;};func LoadCmapFromDataCID (data []byte )(*CMap ,error ){return LoadCmapFromData (data ,false )};const (_fc =4;MissingCodeRune ='\ufffd';
MissingCodeString =string (MissingCodeRune ););type cmapHexString struct{_efc int ;_eggd []byte ;};func (cmap *CMap )computeInverseMappings (){for _ggf ,_cb :=range cmap ._bg {if _ce ,_eab :=cmap ._dfb [_cb ];!_eab ||(_eab &&_ce > _ggf ){cmap ._dfb [_cb ]=_ggf ;
};};for _bcf ,_daf :=range cmap ._ge {if _aggg ,_ebc :=cmap ._ac [_daf ];!_ebc ||(_ebc &&_aggg > _bcf ){cmap ._ac [_daf ]=_bcf ;};};_dg .Slice (cmap ._fa ,func (_ggb ,_gab int )bool {return cmap ._fa [_ggb ].Low < cmap ._fa [_gab ].Low });};func (_gfa *CIDSystemInfo )String ()string {return _f .Sprintf ("\u0025\u0073\u002d\u0025\u0073\u002d\u0025\u0030\u0033\u0064",_gfa .Registry ,_gfa .Ordering ,_gfa .Supplement );
};func (_cgfb *cMapParser )parseComment ()(string ,error ){var _aabd _fg .Buffer ;_ ,_aebf :=_cgfb .skipSpaces ();if _aebf !=nil {return _aabd .String (),_aebf ;};_dagd :=true ;for {_cgfa ,_fbae :=_cgfb ._fbed .Peek (1);if _fbae !=nil {_bc .Log .Debug ("p\u0061r\u0073\u0065\u0043\u006f\u006d\u006d\u0065\u006et\u003a\u0020\u0065\u0072r=\u0025\u0076",_fbae );
return _aabd .String (),_fbae ;};if _dagd &&_cgfa [0]!='%'{return _aabd .String (),ErrBadCMapComment ;};_dagd =false ;if (_cgfa [0]!='\r')&&(_cgfa [0]!='\n'){_gbda ,_ :=_cgfb ._fbed .ReadByte ();_aabd .WriteByte (_gbda );}else {break ;};};return _aabd .String (),nil ;
};func (cmap *CMap )CharcodeBytesToUnicode (data []byte )(string ,int ){_egd ,_dfg :=cmap .BytesToCharcodes (data );if !_dfg {_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0043\u0068\u0061\u0072\u0063\u006f\u0064\u0065\u0042\u0079\u0074\u0065s\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069n\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u002e\u0020\u0064\u0061\u0074\u0061\u003d\u005b\u0025\u0020\u0030\u0032\u0078]\u0020\u0063\u006d\u0061\u0070=\u0025\u0073",data ,cmap );
return "",0;};_ef :=make ([]string ,len (_egd ));var _dga []CharCode ;for _dfc ,_ged :=range _egd {_cdd ,_ddb :=cmap ._ge [_ged ];if !_ddb {_dga =append (_dga ,_ged );_cdd =MissingCodeString ;};_ef [_dfc ]=_cdd ;};_cac :=_fe .Join (_ef ,"");if len (_dga )> 0{_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020C\u0068\u0061\u0072c\u006f\u0064\u0065\u0042y\u0074\u0065\u0073\u0054\u006f\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u002e\u0020\u004e\u006f\u0074\u0020\u0069\u006e\u0020\u006d\u0061\u0070\u002e\u000a"+"\u0009d\u0061t\u0061\u003d\u005b\u0025\u00200\u0032\u0078]\u003d\u0025\u0023\u0071\u000a"+"\u0009\u0063h\u0061\u0072\u0063o\u0064\u0065\u0073\u003d\u0025\u0030\u0032\u0078\u000a"+"\u0009\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u003d\u0025\u0064\u0020%\u0030\u0032\u0078\u000a"+"\u0009\u0075\u006e\u0069\u0063\u006f\u0064\u0065\u003d`\u0025\u0073\u0060\u000a"+"\u0009\u0063\u006d\u0061\u0070\u003d\u0025\u0073",data ,string (data ),_egd ,len (_dga ),_dga ,_cac ,cmap );
};return _cac ,len (_dga );};func (cmap *CMap )CIDSystemInfo ()CIDSystemInfo {return cmap ._c };type cmapName struct{Name string ;};func _agc (_abe string )string {_gbeb :=[]rune (_abe );_gfe :=make ([]string ,len (_gbeb ));for _gace ,_cdb :=range _gbeb {_gfe [_gace ]=_f .Sprintf ("\u0025\u0030\u0034\u0078",_cdb );
};return _f .Sprintf ("\u003c\u0025\u0073\u003e",_fe .Join (_gfe ,""));};func (cmap *CMap )toBfData ()string {if len (cmap ._ge )==0{return "";};_ffd :=make ([]CharCode ,0,len (cmap ._ge ));for _dfbd :=range cmap ._ge {_ffd =append (_ffd ,_dfbd );};_dg .Slice (_ffd ,func (_cgf ,_afd int )bool {return _ffd [_cgf ]< _ffd [_afd ]});
var _efae []charRange ;_egbf :=charRange {_ffd [0],_ffd [0]};_eac :=cmap ._ge [_ffd [0]];for _ ,_fdc :=range _ffd [1:]{_aca :=cmap ._ge [_fdc ];if _fdc ==_egbf ._gf +1&&_ffda (_aca )==_ffda (_eac )+1{_egbf ._gf =_fdc ;}else {_efae =append (_efae ,_egbf );
_egbf ._eg ,_egbf ._gf =_fdc ,_fdc ;};_eac =_aca ;};_efae =append (_efae ,_egbf );var _acac []CharCode ;var _dee []fbRange ;for _ ,_aec :=range _efae {if _aec ._eg ==_aec ._gf {_acac =append (_acac ,_aec ._eg );}else {_dee =append (_dee ,fbRange {_ad :_aec ._eg ,_ag :_aec ._gf ,_gcc :cmap ._ge [_aec ._eg ]});
};};_bc .Log .Trace ("\u0063\u0068ar\u0052\u0061\u006eg\u0065\u0073\u003d\u0025d f\u0062Ch\u0061\u0072\u0073\u003d\u0025\u0064\u0020fb\u0052\u0061\u006e\u0067\u0065\u0073\u003d%\u0064",len (_efae ),len (_acac ),len (_dee ));var _aad []string ;if len (_acac )> 0{_ddg :=(len (_acac )+_aba -1)/_aba ;
for _ggfc :=0;_ggfc < _ddg ;_ggfc ++{_aeb :=_gdcd (len (_acac )-_ggfc *_aba ,_aba );_aad =append (_aad ,_f .Sprintf ("\u0025\u0064\u0020\u0062\u0065\u0067\u0069\u006e\u0062f\u0063\u0068\u0061\u0072",_aeb ));for _abd :=0;_abd < _aeb ;_abd ++{_ade :=_acac [_ggfc *_aba +_abd ];
_afg :=cmap ._ge [_ade ];_aad =append (_aad ,_f .Sprintf ("\u003c%\u0030\u0034\u0078\u003e\u0020\u0025s",_ade ,_agc (_afg )));};_aad =append (_aad ,"\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r");};};if len (_dee )> 0{_dce :=(len (_dee )+_aba -1)/_aba ;
for _dfa :=0;_dfa < _dce ;_dfa ++{_geg :=_gdcd (len (_dee )-_dfa *_aba ,_aba );_aad =append (_aad ,_f .Sprintf ("\u0025d\u0020b\u0065\u0067\u0069\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065",_geg ));for _egca :=0;_egca < _geg ;_egca ++{_gcd :=_dee [_dfa *_aba +_egca ];
_aad =append (_aad ,_f .Sprintf ("\u003c%\u00304\u0078\u003e\u003c\u0025\u0030\u0034\u0078\u003e\u0020\u0025\u0073",_gcd ._ad ,_gcd ._ag ,_agc (_gcd ._gcc )));};_aad =append (_aad ,"\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065");};};return _fe .Join (_aad ,"\u000a");
};func (cmap *CMap )parseName ()error {_bec :="";_eeg :=false ;for _cbaf :=0;_cbaf < 20&&!_eeg ;_cbaf ++{_cag ,_gcf :=cmap .parseObject ();if _gcf !=nil {return _gcf ;};switch _ggbf :=_cag .(type ){case cmapOperand :switch _ggbf .Operand {case "\u0064\u0065\u0066":_eeg =true ;
default:_bc .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a\u0020\u0053\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076\u0020n\u0061\u006de\u003d\u0025\u0023\u0071",_cag ,_bec );
if _bec !=""{_bec =_f .Sprintf ("\u0025\u0073\u0020%\u0073",_bec ,_ggbf .Operand );};_bc .Log .Debug ("\u0070\u0061\u0072\u0073\u0065\u004e\u0061\u006d\u0065\u003a \u0052\u0065\u0063\u006f\u0076\u0065\u0072e\u0064\u002e\u0020\u006e\u0061\u006d\u0065\u003d\u0025\u0023\u0071",_bec );
};case cmapName :_bec =_ggbf .Name ;};};if !_eeg {_bc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0070\u0061\u0072\u0073\u0065N\u0061m\u0065:\u0020\u004e\u006f\u0020\u0064\u0065\u0066 ");return ErrBadCMap ;};cmap ._fca =_bec ;return nil ;};type CMap struct{*cMapParser ;
_fca string ;_bcd int ;_egb int ;_df string ;_dde string ;_c CIDSystemInfo ;_fa []Codespace ;_bg map[CharCode ]CharCode ;_dfb map[CharCode ]CharCode ;_ge map[CharCode ]string ;_ac map[string ]CharCode ;_fcaf []byte ;_eea *_fgd .PdfObjectStream ;_ca integer ;
};func (cmap *CMap )parseBfchar ()error {for {_ffbf ,_ebb :=cmap .parseObject ();if _ebb !=nil {if _ebb ==_gc .EOF {break ;};return _ebb ;};var _eec CharCode ;switch _dda :=_ffbf .(type ){case cmapOperand :if _dda .Operand ==_gbf {return nil ;};return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_eec =_aga (_dda );default:return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};_ffbf ,_ebb =cmap .parseObject ();if _ebb !=nil {if _ebb ==_gc .EOF {break ;};return _ebb ;};var _dgca []rune ;
switch _aabf :=_ffbf .(type ){case cmapOperand :if _aabf .Operand ==_gbf {return nil ;};_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0055\u006e\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020o\u0070\u0065\u0072\u0061\u006e\u0064\u002e\u0020\u0025\u0023\u0076",_aabf );
return ErrBadCMap ;case cmapHexString :_dgca =_aaba (_aabf );case cmapName :_bc .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u006e\u0061\u006de\u002e \u0025\u0023\u0076",_aabf );_dgca =[]rune {MissingCodeRune };
default:_bc .Log .Debug ("E\u0052\u0052\u004f\u0052\u003a\u0020U\u006e\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064 \u0074\u0079\u0070e\u002e \u0025\u0023\u0076",_ffbf );return ErrBadCMap ;};cmap ._ge [_eec ]=string (_dgca );};return nil ;};func (cmap *CMap )parseVersion ()error {_aef :="";
_fbc :=false ;for _eddf :=0;_eddf < 3&&!_fbc ;_eddf ++{_efb ,_aac :=cmap .parseObject ();if _aac !=nil {return _aac ;};switch _eeb :=_efb .(type ){case cmapOperand :switch _eeb .Operand {case "\u0064\u0065\u0066":_fbc =true ;default:_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0070\u0061\u0072\u0073\u0065\u0056e\u0072\u0073\u0069\u006f\u006e\u003a \u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020o\u003d\u0025\u0023\u0076",_efb );
return ErrBadCMap ;};case cmapInt :_aef =_f .Sprintf ("\u0025\u0064",_eeb ._aefb );case cmapFloat :_aef =_f .Sprintf ("\u0025\u0066",_eeb ._eaf );case cmapString :_aef =_eeb .String ;default:_bc .Log .Debug ("\u0045\u0052RO\u0052\u003a\u0020p\u0061\u0072\u0073\u0065Ver\u0073io\u006e\u003a\u0020\u0042\u0061\u0064\u0020ty\u0070\u0065\u002e\u0020\u006f\u003d\u0025#\u0076",_efb );
};};cmap ._df =_aef ;return nil ;};func _dceb (_fgf cmapHexString )rune {_bgd :=_aaba (_fgf );if _gde :=len (_bgd );_gde ==0{_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054o\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065c\u0074\u0065\u0064\u0020\u0061\u0074\u0020\u006c\u0065\u0061\u0073\u0074\u0020\u006f\u006e\u0065\u0020\u0072u\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023\u0076",_fgf );
return MissingCodeRune ;};if len (_bgd )> 1{_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u002e\u0020\u0045\u0078p\u0065\u0063\u0074\u0065\u0064\u0020\u0065\u0078\u0061\u0063\u0074\u006c\u0079\u0020\u006f\u006e\u0065\u0020\u0072\u0075\u006e\u0065\u0020\u0073\u0068\u0065\u0078\u003d\u0025\u0023v\u0020\u002d\u003e\u0020\u0025#\u0076",_fgf ,_bgd );
};return _bgd [0];};func NewCIDSystemInfo (obj _fgd .PdfObject )(_ee CIDSystemInfo ,_ff error ){_dd ,_eba :=_fgd .GetDict (obj );if !_eba {return CIDSystemInfo {},_fgd .ErrTypeError ;};_ebad ,_eba :=_fgd .GetStringVal (_dd .Get ("\u0052\u0065\u0067\u0069\u0073\u0074\u0072\u0079"));
if !_eba {return CIDSystemInfo {},_fgd .ErrTypeError ;};_ae ,_eba :=_fgd .GetStringVal (_dd .Get ("\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067"));if !_eba {return CIDSystemInfo {},_fgd .ErrTypeError ;};_gac ,_eba :=_fgd .GetIntVal (_dd .Get ("\u0053\u0075\u0070\u0070\u006c\u0065\u006d\u0065\u006e\u0074"));
if !_eba {return CIDSystemInfo {},_fgd .ErrTypeError ;};return CIDSystemInfo {Registry :_ebad ,Ordering :_ae ,Supplement :_gac },nil ;};func (cmap *CMap )CIDToCharcode (cid CharCode )(CharCode ,bool ){_bga ,_dbb :=cmap ._dfb [cid ];return _bga ,_dbb ;};
func (cmap *CMap )WMode ()(int ,bool ){return cmap ._ca ._gag ,cmap ._ca ._dff };func (_afdc *cMapParser )parseString ()(cmapString ,error ){_afdc ._fbed .ReadByte ();_gcbg :=_fg .Buffer {};_caab :=1;for {_bdc ,_bba :=_afdc ._fbed .Peek (1);if _bba !=nil {return cmapString {_gcbg .String ()},_bba ;
};if _bdc [0]=='\\'{_afdc ._fbed .ReadByte ();_efe ,_dgce :=_afdc ._fbed .ReadByte ();if _dgce !=nil {return cmapString {_gcbg .String ()},_dgce ;};if _fgd .IsOctalDigit (_efe ){_acef ,_ffa :=_afdc ._fbed .Peek (2);if _ffa !=nil {return cmapString {_gcbg .String ()},_ffa ;
};var _eeef []byte ;_eeef =append (_eeef ,_efe );for _ ,_gbdb :=range _acef {if _fgd .IsOctalDigit (_gbdb ){_eeef =append (_eeef ,_gbdb );}else {break ;};};_afdc ._fbed .Discard (len (_eeef )-1);_bc .Log .Trace ("\u004e\u0075\u006d\u0065ri\u0063\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0022\u0025\u0073\u0022",_eeef );
_babb ,_ffa :=_e .ParseUint (string (_eeef ),8,32);if _ffa !=nil {return cmapString {_gcbg .String ()},_ffa ;};_gcbg .WriteByte (byte (_babb ));continue ;};switch _efe {case 'n':_gcbg .WriteByte ('\n');case 'r':_gcbg .WriteByte ('\r');case 't':_gcbg .WriteByte ('\t');
case 'b':_gcbg .WriteByte ('\b');case 'f':_gcbg .WriteByte ('\f');case '(':_gcbg .WriteByte ('(');case ')':_gcbg .WriteByte (')');case '\\':_gcbg .WriteByte ('\\');};continue ;}else if _bdc [0]=='('{_caab ++;}else if _bdc [0]==')'{_caab --;if _caab ==0{_afdc ._fbed .ReadByte ();
break ;};};_faf ,_ :=_afdc ._fbed .ReadByte ();_gcbg .WriteByte (_faf );};return cmapString {_gcbg .String ()},nil ;};func (cmap *CMap )parseCodespaceRange ()error {for {_ced ,_abc :=cmap .parseObject ();if _abc !=nil {if _abc ==_gc .EOF {break ;};return _abc ;
};_aaf ,_fag :=_ced .(cmapHexString );if !_fag {if _ceda ,_bbc :=_ced .(cmapOperand );_bbc {if _ceda .Operand ==_afgd {return nil ;};return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");};};_ced ,_abc =cmap .parseObject ();
if _abc !=nil {if _abc ==_gc .EOF {break ;};return _abc ;};_caa ,_fag :=_ced .(cmapHexString );if !_fag {return _d .New ("\u006e\u006f\u006e-\u0068\u0065\u0078\u0020\u0068\u0069\u0067\u0068");};if len (_aaf ._eggd )!=len (_caa ._eggd ){return _d .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");
};_cee :=_aga (_aaf );_fee :=_aga (_caa );if _fee < _cee {_bc .Log .Debug ("\u0045R\u0052\u004fR\u003a\u0020\u0042\u0061d\u0020\u0063\u006fd\u0065\u0073\u0070\u0061\u0063\u0065\u002e\u0020\u006cow\u003d\u0030\u0078%\u0030\u0032x\u0020\u0068\u0069\u0067\u0068\u003d0\u0078\u00250\u0032\u0078",_cee ,_fee );
return ErrBadCMap ;};_gbd :=_caa ._efc ;_cbd :=Codespace {NumBytes :_gbd ,Low :_cee ,High :_fee };cmap ._fa =append (cmap ._fa ,_cbd );_bc .Log .Trace ("\u0043\u006f\u0064e\u0073\u0070\u0061\u0063e\u0020\u006c\u006f\u0077\u003a\u0020\u0030x\u0025\u0058\u002c\u0020\u0068\u0069\u0067\u0068\u003a\u0020\u0030\u0078\u0025\u0058",_cee ,_fee );
};if len (cmap ._fa )==0{_bc .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u0020\u0069\u006e\u0020\u0063ma\u0070\u002e");return ErrBadCMap ;};return nil ;};type cmapOperand struct{Operand string ;
};func (_adbc *cMapParser )parseDict ()(cmapDict ,error ){_bc .Log .Trace ("\u0052\u0065\u0061\u0064\u0069\u006e\u0067\u0020\u0050\u0044\u0046\u0020D\u0069\u0063\u0074\u0021");_gfef :=_fcef ();_cda ,_ :=_adbc ._fbed .ReadByte ();if _cda !='<'{return _gfef ,ErrBadCMapDict ;
};_cda ,_ =_adbc ._fbed .ReadByte ();if _cda !='<'{return _gfef ,ErrBadCMapDict ;};for {_adbc .skipSpaces ();_bcge ,_dcd :=_adbc ._fbed .Peek (2);if _dcd !=nil {return _gfef ,_dcd ;};if (_bcge [0]=='>')&&(_bcge [1]=='>'){_adbc ._fbed .ReadByte ();_adbc ._fbed .ReadByte ();
break ;};_agec ,_dcd :=_adbc .parseName ();_bc .Log .Trace ("\u004be\u0079\u003a\u0020\u0025\u0073",_agec .Name );if _dcd !=nil {_bc .Log .Debug ("\u0045\u0052R\u004f\u0052\u003a\u0020\u0052\u0065\u0074\u0075\u0072\u006e\u0069\u006e\u0067\u0020\u006e\u0061\u006d\u0065\u002e\u0020\u0065\u0072r=\u0025\u0076",_dcd );
return _gfef ,_dcd ;};_adbc .skipSpaces ();_bbde ,_dcd :=_adbc .parseObject ();if _dcd !=nil {return _gfef ,_dcd ;};_gfef .Dict [_agec .Name ]=_bbde ;_adbc .skipSpaces ();_bcge ,_dcd =_adbc ._fbed .Peek (3);if _dcd !=nil {return _gfef ,_dcd ;};if string (_bcge )=="\u0064\u0065\u0066"{_adbc ._fbed .Discard (3);
};};return _gfef ,nil ;};func (_fae *cMapParser )parseNumber ()(cmapObject ,error ){_bcdg ,_gbed :=_fgd .ParseNumber (_fae ._fbed );if _gbed !=nil {return nil ,_gbed ;};switch _aacf :=_bcdg .(type ){case *_fgd .PdfObjectFloat :return cmapFloat {float64 (*_aacf )},nil ;
case *_fgd .PdfObjectInteger :return cmapInt {int64 (*_aacf )},nil ;};return nil ,_f .Errorf ("\u0075n\u0068\u0061\u006e\u0064\u006c\u0065\u0064\u0020\u006e\u0075\u006db\u0065\u0072\u0020\u0074\u0079\u0070\u0065\u0020\u0025\u0054",_bcdg );};func (cmap *CMap )CharcodeToCID (code CharCode )(CharCode ,bool ){_dae ,_dgc :=cmap ._bg [code ];
return _dae ,_dgc ;};func _bfg (_ebag []byte )*cMapParser {_fdce :=cMapParser {};_bab :=_fg .NewBuffer (_ebag );_fdce ._fbed =_ga .NewReader (_bab );return &_fdce ;};func _aaba (_gccc cmapHexString )[]rune {if len (_gccc ._eggd )==1{return []rune {rune (_gccc ._eggd [0])};
};_ffec :=_gccc ._eggd ;if len (_ffec )%2!=0{_ffec =append (_ffec ,0);_bc .Log .Debug ("\u0045\u0052\u0052O\u0052\u003a\u0020\u0068\u0065\u0078\u0054\u006f\u0052\u0075\u006e\u0065\u0073\u002e\u0020\u0050\u0061\u0064\u0064\u0069\u006e\u0067\u0020\u0073\u0068\u0065\u0078\u003d\u0025#\u0076\u0020\u0074\u006f\u0020\u0025\u002b\u0076",_gccc ,_ffec );
};_fddc :=len (_ffec )>>1;_gge :=make ([]uint16 ,_fddc );for _efd :=0;_efd < _fddc ;_efd ++{_gge [_efd ]=uint16 (_ffec [_efd <<1])<<8+uint16 (_ffec [_efd <<1+1]);};_cbc :=_b .Decode (_gge );return _cbc ;};func (cmap *CMap )String ()string {_acd :=cmap ._c ;
_dfe :=[]string {_f .Sprintf ("\u006e\u0062\u0069\u0074\u0073\u003a\u0025\u0064",cmap ._bcd ),_f .Sprintf ("\u0074y\u0070\u0065\u003a\u0025\u0064",cmap ._egb )};if cmap ._df !=""{_dfe =append (_dfe ,_f .Sprintf ("\u0076\u0065\u0072\u0073\u0069\u006f\u006e\u003a\u0025\u0073",cmap ._df ));
};if cmap ._dde !=""{_dfe =append (_dfe ,_f .Sprintf ("u\u0073\u0065\u0063\u006d\u0061\u0070\u003a\u0025\u0023\u0071",cmap ._dde ));};_dfe =append (_dfe ,_f .Sprintf ("\u0073\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f\u003a\u0025\u0073",_acd .String ()));
if len (cmap ._fa )> 0{_dfe =append (_dfe ,_f .Sprintf ("\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0073\u003a\u0025\u0064",len (cmap ._fa )));};if len (cmap ._ge )> 0{_dfe =append (_dfe ,_f .Sprintf ("\u0063\u006fd\u0065\u0054\u006fU\u006e\u0069\u0063\u006f\u0064\u0065\u003a\u0025\u0064",len (cmap ._ge )));
};return _f .Sprintf ("\u0043\u004d\u0041P\u007b\u0025\u0023\u0071\u0020\u0025\u0073\u007d",cmap ._fca ,_fe .Join (_dfe ,"\u0020"));};const (_aba =100;_edd ="\u000a\u002f\u0043\u0049\u0044\u0049\u006e\u0069\u0074\u0020\u002f\u0050\u0072\u006fc\u0053\u0065\u0074\u0020\u0066\u0069\u006e\u0064\u0072es\u006fu\u0072c\u0065 \u0062\u0065\u0067\u0069\u006e\u000a\u0031\u0032\u0020\u0064\u0069\u0063\u0074\u0020\u0062\u0065\u0067\u0069n\u000a\u0062\u0065\u0067\u0069\u006e\u0063\u006d\u0061\u0070\n\u002f\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065m\u0049\u006e\u0066\u006f\u0020\u003c\u003c\u0020\u002f\u0052\u0065\u0067\u0069\u0073t\u0072\u0079\u0020\u0028\u0041\u0064\u006f\u0062\u0065\u0029\u0020\u002f\u004f\u0072\u0064\u0065\u0072\u0069\u006e\u0067\u0020\u0028\u0055\u0043\u0053)\u0020\u002f\u0053\u0075\u0070p\u006c\u0065\u006d\u0065\u006et\u0020\u0030\u0020\u003e\u003e\u0020\u0064\u0065\u0066\u000a\u002f\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u002f\u0041\u0064\u006f\u0062\u0065-\u0049\u0064\u0065\u006e\u0074\u0069\u0074\u0079\u002d\u0055\u0043\u0053\u0020\u0064\u0065\u0066\u000a\u002fC\u004d\u0061\u0070\u0054\u0079\u0070\u0065\u0020\u0032\u0020\u0064\u0065\u0066\u000a\u0031\u0020\u0062\u0065\u0067\u0069\u006e\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063e\u0072\u0061n\u0067\u0065\n\u003c\u0030\u0030\u0030\u0030\u003e\u0020<\u0046\u0046\u0046\u0046\u003e\u000a\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065\u000a";
_edfa ="\u0065\u006e\u0064\u0063\u006d\u0061\u0070\u000a\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065\u0020\u0063ur\u0072e\u006e\u0074\u0064\u0069\u0063\u0074\u0020\u002f\u0043\u004d\u0061\u0070 \u0064\u0065\u0066\u0069\u006e\u0065\u0072\u0065\u0073\u006f\u0075\u0072\u0063\u0065\u0020\u0070\u006fp\u000a\u0065\u006e\u0064\u000a\u0065\u006e\u0064\u000a";
);func (cmap *CMap )CharcodeToUnicode (code CharCode )(string ,bool ){if _cec ,_ffc :=cmap ._ge [code ];_ffc {return _cec ,true ;};return MissingCodeString ,false ;};func (cmap *CMap )parseBfrange ()error {for {var _age CharCode ;_ggba ,_eff :=cmap .parseObject ();
if _eff !=nil {if _eff ==_gc .EOF {break ;};return _eff ;};switch _ebg :=_ggba .(type ){case cmapOperand :if _ebg .Operand ==_agggd {return nil ;};return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065d\u0020\u006fp\u0065\u0072\u0061\u006e\u0064");
case cmapHexString :_age =_aga (_ebg );default:return _d .New ("\u0075n\u0065x\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0074\u0079\u0070\u0065");};var _fbe CharCode ;_ggba ,_eff =cmap .parseObject ();if _eff !=nil {if _eff ==_gc .EOF {break ;};return _eff ;
};switch _fcae :=_ggba .(type ){case cmapOperand :_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0049\u006e\u0063\u006f\u006d\u0070\u006c\u0065\u0074\u0065\u0020\u0062\u0066r\u0061\u006e\u0067\u0065\u0020\u0074\u0072i\u0070\u006c\u0065\u0074");
return ErrBadCMap ;case cmapHexString :_fbe =_aga (_fcae );if _fbe > 0xffff{_fbe =0xffff;};default:_bc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_ggba );return ErrBadCMap ;
};_ggba ,_eff =cmap .parseObject ();if _eff !=nil {if _eff ==_gc .EOF {break ;};return _eff ;};switch _bge :=_ggba .(type ){case cmapArray :if len (_bge .Array )!=int (_fbe -_age )+1{_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069d\u0020\u006e\u0075\u006d\u0062\u0065r\u0020\u006f\u0066\u0020\u0069\u0074\u0065\u006d\u0073\u0020\u0069\u006e\u0020a\u0072\u0072\u0061\u0079");
return ErrBadCMap ;};for _dag :=_age ;_dag <=_fbe ;_dag ++{_bacc :=_bge .Array [_dag -_age ];_cdc ,_ffca :=_bacc .(cmapHexString );if !_ffca {return _d .New ("\u006e\u006f\u006e-h\u0065\u0078\u0020\u0073\u0074\u0072\u0069\u006e\u0067\u0020\u0069\u006e\u0020\u0061\u0072\u0072\u0061\u0079");
};_dgb :=_aaba (_cdc );cmap ._ge [_dag ]=string (_dgb );};case cmapHexString :_dcea :=_aaba (_bge );_feaa :=len (_dcea );for _bda :=_age ;_bda <=_fbe ;_bda ++{cmap ._ge [_bda ]=string (_dcea );if _feaa > 0{_dcea [_feaa -1]++;}else {_bc .Log .Debug ("\u004e\u006f\u0020c\u006d\u0061\u0070\u0020\u0074\u0061\u0072\u0067\u0065\u0074\u0020\u0063\u0068\u0061\u0072\u0061\u0063\u0074\u0065\u0072\u0020\u0073\u0070\u0065\u0063\u0069\u0066\u0069\u0065d\u0020\u0066\u006f\u0072\u0020\u0025\u0023\u0076",_bda );
};if _bda ==1<<32-1{break ;};};default:_bc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a \u0055\u006e\u0065\u0078\u0070e\u0063t\u0065d\u0020\u0074\u0079\u0070\u0065\u0020\u0025T",_ggba );return ErrBadCMap ;};};return nil ;};func (cmap *CMap )parseType ()error {_fbfa :=0;
_afgb :=false ;for _gedb :=0;_gedb < 3&&!_afgb ;_gedb ++{_gff ,_dfea :=cmap .parseObject ();if _dfea !=nil {return _dfea ;};switch _fgc :=_gff .(type ){case cmapOperand :switch _fgc .Operand {case "\u0064\u0065\u0066":_afgb =true ;default:_bc .Log .Error ("\u0070\u0061r\u0073\u0065\u0054\u0079\u0070\u0065\u003a\u0020\u0073\u0074\u0061\u0074\u0065\u0020\u0065\u0072\u0072\u006f\u0072\u002e\u0020\u006f=%\u0023\u0076",_gff );
return ErrBadCMap ;};case cmapInt :_fbfa =int (_fgc ._aefb );};};cmap ._egb =_fbfa ;return nil ;};type CharCode uint32 ;func _agg (_be bool )*CMap {_aa :=16;if _be {_aa =8;};return &CMap {_bcd :_aa ,_bg :make (map[CharCode ]CharCode ),_dfb :make (map[CharCode ]CharCode ),_ge :make (map[CharCode ]string ),_ac :make (map[string ]CharCode )};
};type cmapString struct{String string ;};func (_dgac *cMapParser )parseArray ()(cmapArray ,error ){_aced :=cmapArray {};_aced .Array =[]cmapObject {};_dgac ._fbed .ReadByte ();for {_dgac .skipSpaces ();_babf ,_eeee :=_dgac ._fbed .Peek (1);if _eeee !=nil {return _aced ,_eeee ;
};if _babf [0]==']'{_dgac ._fbed .ReadByte ();break ;};_abcb ,_eeee :=_dgac .parseObject ();if _eeee !=nil {return _aced ,_eeee ;};_aced .Array =append (_aced .Array ,_abcb );};return _aced ,nil ;};func IsPredefinedCMap (name string )bool {return _eb .AssetExists (name )};
type cmapFloat struct{_eaf float64 };var (ErrBadCMap =_d .New ("\u0062\u0061\u0064\u0020\u0063\u006d\u0061\u0070");ErrBadCMapComment =_d .New ("c\u006f\u006d\u006d\u0065\u006e\u0074 \u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0073\u0074a\u0072\u0074\u0020w\u0069t\u0068\u0020\u0025");
ErrBadCMapDict =_d .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0069\u0063\u0074"););func (cmap *CMap )StringToCID (s string )(CharCode ,bool ){_bgc ,_fed :=cmap ._ac [s ];return _bgc ,_fed ;};func _fcef ()cmapDict {return cmapDict {Dict :map[string ]cmapObject {}}};
func (cmap *CMap )Bytes ()[]byte {_bc .Log .Trace ("\u0063\u006d\u0061\u0070.B\u0079\u0074\u0065\u0073\u003a\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",cmap .String ());if len (cmap ._fcaf )> 0{return cmap ._fcaf ;};cmap ._fcaf =[]byte (_fe .Join ([]string {_edd ,cmap .toBfData (),_edfa },"\u000a"));
return cmap ._fcaf ;};func (cmap *CMap )Stream ()(*_fgd .PdfObjectStream ,error ){if cmap ._eea !=nil {return cmap ._eea ,nil ;};_egc ,_gae :=_fgd .MakeStream (cmap .Bytes (),_fgd .NewFlateEncoder ());if _gae !=nil {return nil ,_gae ;};cmap ._eea =_egc ;
return cmap ._eea ,nil ;};func (_bcfc *cMapParser )parseName ()(cmapName ,error ){_bfgg :="";_dddf :=false ;for {_cbe ,_gdb :=_bcfc ._fbed .Peek (1);if _gdb ==_gc .EOF {break ;};if _gdb !=nil {return cmapName {_bfgg },_gdb ;};if !_dddf {if _cbe [0]=='/'{_dddf =true ;
_bcfc ._fbed .ReadByte ();}else {_bc .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u004e\u0061\u006d\u0065\u0020\u0073\u0074a\u0072t\u0069n\u0067 \u0077\u0069\u0074\u0068\u0020\u0025\u0073\u0020\u0028\u0025\u0020\u0078\u0029",_cbe ,_cbe );return cmapName {_bfgg },_f .Errorf ("\u0069n\u0076a\u006c\u0069\u0064\u0020\u006ea\u006d\u0065:\u0020\u0028\u0025\u0063\u0029",_cbe [0]);
};}else {if _fgd .IsWhiteSpace (_cbe [0]){break ;}else if (_cbe [0]=='/')||(_cbe [0]=='[')||(_cbe [0]=='(')||(_cbe [0]==']')||(_cbe [0]=='<')||(_cbe [0]=='>'){break ;}else if _cbe [0]=='#'{_dge ,_ege :=_bcfc ._fbed .Peek (3);if _ege !=nil {return cmapName {_bfgg },_ege ;
};_bcfc ._fbed .Discard (3);_aega ,_ege :=_a .DecodeString (string (_dge [1:3]));if _ege !=nil {return cmapName {_bfgg },_ege ;};_bfgg +=string (_aega );}else {_bbe ,_ :=_bcfc ._fbed .ReadByte ();_bfgg +=string (_bbe );};};};return cmapName {_bfgg },nil ;
};type integer struct{_dff bool ;_gag int ;};func _gdcd (_cbaff ,_bce int )int {if _cbaff < _bce {return _cbaff ;};return _bce ;};func (cmap *CMap )inCodespace (_acdc CharCode ,_ba int )bool {for _ ,_bea :=range cmap ._fa {if _bea .Low <=_acdc &&_acdc <=_bea .High &&_ba ==_bea .NumBytes {return true ;
};};return false ;};type cmapArray struct{Array []cmapObject ;};type fbRange struct{_ad CharCode ;_ag CharCode ;_gcc string ;};type cmapInt struct{_aefb int64 };func (cmap *CMap )parseCIDRange ()error {for {_edff ,_aab :=cmap .parseObject ();if _aab !=nil {if _aab ==_gc .EOF {break ;
};return _aab ;};_gcb ,_ceg :=_edff .(cmapHexString );if !_ceg {if _aafg ,_daff :=_edff .(cmapOperand );_daff {if _aafg .Operand ==_bgcg {return nil ;};return _d .New ("\u0063\u0069\u0064\u0020\u0069\u006e\u0074\u0065\u0072\u0076\u0061\u006c\u0020s\u0074\u0061\u0072\u0074\u0020\u006du\u0073\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");
};};_cdge :=_aga (_gcb );_edff ,_aab =cmap .parseObject ();if _aab !=nil {if _aab ==_gc .EOF {break ;};return _aab ;};_ggbg ,_ceg :=_edff .(cmapHexString );if !_ceg {return _d .New ("\u0063\u0069d\u0020\u0069\u006e\u0074e\u0072\u0076a\u006c\u0020\u0065\u006e\u0064\u0020\u006d\u0075s\u0074\u0020\u0062\u0065\u0020\u0061\u0020\u0068\u0065\u0078\u0020\u0073t\u0072\u0069\u006e\u0067");
};if len (_gcb ._eggd )!=len (_ggbg ._eggd ){return _d .New ("\u0075\u006e\u0065\u0071\u0075\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072\u0020o\u0066 \u0062\u0079\u0074\u0065\u0073\u0020\u0069\u006e\u0020\u0072\u0061\u006e\u0067\u0065");};_afca :=_aga (_ggbg );
if _cdge > _afca {_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a \u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0043\u0049\u0044\u0020\u0072\u0061\u006e\u0067\u0065\u002e\u0020\u0073t\u0061\u0072\u0074\u003d\u0030\u0078\u0025\u0030\u0032\u0078\u0020\u0065\u006e\u0064=\u0030x\u0025\u0030\u0032\u0078",_cdge ,_afca );
return ErrBadCMap ;};_edff ,_aab =cmap .parseObject ();if _aab !=nil {if _aab ==_gc .EOF {break ;};return _aab ;};_ace ,_ceg :=_edff .(cmapInt );if !_ceg {return _d .New ("\u0063\u0069\u0064\u0020\u0073t\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065\u0020\u006d\u0075\u0073t\u0020\u0062\u0065\u0020\u0061\u006e\u0020\u0064\u0065\u0063\u0069\u006d\u0061\u006c\u0020\u006e\u0075\u006d\u0062\u0065\u0072");
};if _ace ._aefb < 0{return _d .New ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0063\u0069\u0064\u0020\u0073\u0074\u0061\u0072\u0074\u0020\u0076\u0061\u006c\u0075\u0065");};_cgd :=_ace ._aefb ;for _bbfc :=_cdge ;_bbfc <=_afca ;_bbfc ++{cmap ._bg [_bbfc ]=CharCode (_cgd );
_cgd ++;};_bc .Log .Trace ("C\u0049\u0044\u0020\u0072\u0061\u006eg\u0065\u003a\u0020\u003c\u0030\u0078\u0025\u0058\u003e \u003c\u0030\u0078%\u0058>\u0020\u0025\u0064",_cdge ,_afca ,_ace ._aefb );};return nil ;};func (cmap *CMap )Type ()int {return cmap ._egb };
type Codespace struct{NumBytes int ;Low CharCode ;High CharCode ;};func _ffda (_dgg string )rune {_cf :=[]rune (_dgg );return _cf [len (_cf )-1]};type CIDSystemInfo struct{Registry string ;Ordering string ;Supplement int ;};func (_cede *cMapParser )parseHexString ()(cmapHexString ,error ){_cede ._fbed .ReadByte ();
_dacea :=[]byte ("\u0030\u0031\u0032\u003345\u0036\u0037\u0038\u0039\u0061\u0062\u0063\u0064\u0065\u0066\u0041\u0042\u0043\u0044E\u0046");_bbd :=_fg .Buffer {};for {_cede .skipSpaces ();_ddbc ,_fde :=_cede ._fbed .Peek (1);if _fde !=nil {return cmapHexString {},_fde ;
};if _ddbc [0]=='>'{_cede ._fbed .ReadByte ();break ;};_egf ,_ :=_cede ._fbed .ReadByte ();if _fg .IndexByte (_dacea ,_egf )>=0{_bbd .WriteByte (_egf );};};if _bbd .Len ()%2==1{_bc .Log .Debug ("\u0070\u0061rs\u0065\u0048\u0065x\u0053\u0074\u0072\u0069ng:\u0020ap\u0070\u0065\u006e\u0064\u0069\u006e\u0067 '\u0030\u0027\u0020\u0074\u006f\u0020\u0025#\u0071",_bbd .String ());
_bbd .WriteByte ('0');};_fcgb :=_bbd .Len ()/2;_fga ,_ :=_a .DecodeString (_bbd .String ());return cmapHexString {_efc :_fcgb ,_eggd :_fga },nil ;};func (_ccb *cMapParser )parseObject ()(cmapObject ,error ){_ccb .skipSpaces ();for {_ega ,_fdg :=_ccb ._fbed .Peek (2);
if _fdg !=nil {return nil ,_fdg ;};if _ega [0]=='%'{_ccb .parseComment ();_ccb .skipSpaces ();continue ;}else if _ega [0]=='/'{_abg ,_ffcc :=_ccb .parseName ();return _abg ,_ffcc ;}else if _ega [0]=='('{_aadb ,_fcg :=_ccb .parseString ();return _aadb ,_fcg ;
}else if _ega [0]=='['{_adeb ,_aag :=_ccb .parseArray ();return _adeb ,_aag ;}else if (_ega [0]=='<')&&(_ega [1]=='<'){_dbee ,_fdd :=_ccb .parseDict ();return _dbee ,_fdd ;}else if _ega [0]=='<'{_fcec ,_gdc :=_ccb .parseHexString ();return _fcec ,_gdc ;
}else if _fgd .IsDecimalDigit (_ega [0])||(_ega [0]=='-'&&_fgd .IsDecimalDigit (_ega [1])){_dacd ,_dcf :=_ccb .parseNumber ();if _dcf !=nil {return nil ,_dcf ;};return _dacd ,nil ;}else {_afe ,_aded :=_ccb .parseOperand ();if _aded !=nil {return nil ,_aded ;
};return _afe ,nil ;};};};func LoadPredefinedCMap (name string )(*CMap ,error ){cmap ,_de :=_aee (name );if _de !=nil {return nil ,_de ;};if cmap ._dde ==""{cmap .computeInverseMappings ();return cmap ,nil ;};_fgb ,_de :=_aee (cmap ._dde );if _de !=nil {return nil ,_de ;
};for _fb ,_da :=range _fgb ._bg {if _ ,_cg :=cmap ._bg [_fb ];!_cg {cmap ._bg [_fb ]=_da ;};};cmap ._fa =append (cmap ._fa ,_fgb ._fa ...);cmap .computeInverseMappings ();return cmap ,nil ;};func _aga (_cfea cmapHexString )CharCode {_bddf :=CharCode (0);
for _ ,_bcb :=range _cfea ._eggd {_bddf <<=8;_bddf |=CharCode (_bcb );};return _bddf ;};type cmapObject interface{};const (_ecd ="\u0043\u0049\u0044\u0053\u0079\u0073\u0074\u0065\u006d\u0049\u006e\u0066\u006f";_gggc ="\u0062e\u0067\u0069\u006e\u0063\u006d\u0061p";
_gbdf ="\u0065n\u0064\u0063\u006d\u0061\u0070";_aaca ="\u0062\u0065\u0067\u0069nc\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0072\u0061\u006e\u0067\u0065";_afgd ="\u0065\u006e\u0064\u0063\u006f\u0064\u0065\u0073\u0070\u0061\u0063\u0065r\u0061\u006e\u0067\u0065";
_ffe ="b\u0065\u0067\u0069\u006e\u0062\u0066\u0063\u0068\u0061\u0072";_gbf ="\u0065n\u0064\u0062\u0066\u0063\u0068\u0061r";_bae ="\u0062\u0065\u0067i\u006e\u0062\u0066\u0072\u0061\u006e\u0067\u0065";_agggd ="\u0065\u006e\u0064\u0062\u0066\u0072\u0061\u006e\u0067\u0065";
_aae ="\u0062\u0065\u0067\u0069\u006e\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_bgcg ="e\u006e\u0064\u0063\u0069\u0064\u0072\u0061\u006e\u0067\u0065";_acfd ="\u0075s\u0065\u0063\u006d\u0061\u0070";_ebaa ="\u0057\u004d\u006fd\u0065";_bgg ="\u0043\u004d\u0061\u0070\u004e\u0061\u006d\u0065";
_fbcd ="\u0043\u004d\u0061\u0070\u0054\u0079\u0070\u0065";_fcb ="C\u004d\u0061\u0070\u0056\u0065\u0072\u0073\u0069\u006f\u006e";);func (_acag *cMapParser )parseOperand ()(cmapOperand ,error ){_babc :=cmapOperand {};_gfc :=_fg .Buffer {};for {_gfga ,_afae :=_acag ._fbed .Peek (1);
if _afae !=nil {if _afae ==_gc .EOF {break ;};return _babc ,_afae ;};if _fgd .IsDelimiter (_gfga [0]){break ;};if _fgd .IsWhiteSpace (_gfga [0]){break ;};_dafc ,_ :=_acag ._fbed .ReadByte ();_gfc .WriteByte (_dafc );};if _gfc .Len ()==0{return _babc ,_f .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u006f\u0070\u0065\u0072\u0061\u006e\u0064\u0020\u0028\u0065\u006d\u0070\u0074\u0079\u0029");
};_babc .Operand =_gfc .String ();return _babc ,nil ;};type cMapParser struct{_fbed *_ga .Reader };func (cmap *CMap )matchCode (_cba []byte )(_dcg CharCode ,_bcg int ,_fgde bool ){for _ab :=0;_ab < _fc ;_ab ++{if _ab < len (_cba ){_dcg =_dcg <<8|CharCode (_cba [_ab ]);
_bcg ++;};_fgde =cmap .inCodespace (_dcg ,_ab +1);if _fgde {return _dcg ,_bcg ,true ;};};_bc .Log .Debug ("\u0045\u0052\u0052\u004f\u0052\u003a\u0020\u004e\u006f\u0020\u0063o\u0064\u0065\u0073\u0070\u0061\u0063\u0065\u0020m\u0061t\u0063\u0068\u0065\u0073\u0020\u0062\u0079\u0074\u0065\u0073\u003d\u005b\u0025\u0020\u0030\u0032\u0078\u005d=\u0025\u0023\u0071\u0020\u0063\u006d\u0061\u0070\u003d\u0025\u0073",_cba ,string (_cba ),cmap );
return 0,0,false ;};func NewToUnicodeCMap (codeToRune map[CharCode ]rune )*CMap {_cd :=make (map[CharCode ]string ,len (codeToRune ));for _gg ,_adg :=range codeToRune {_cd [_gg ]=string (_adg );};cmap :=&CMap {_fca :"\u0041d\u006fb\u0065\u002d\u0049\u0064\u0065n\u0074\u0069t\u0079\u002d\u0055\u0043\u0053",_egb :2,_bcd :16,_c :CIDSystemInfo {Registry :"\u0041\u0064\u006fb\u0065",Ordering :"\u0055\u0043\u0053",Supplement :0},_fa :[]Codespace {{Low :0,High :0xffff}},_ge :_cd ,_ac :make (map[string ]CharCode ,len (codeToRune )),_bg :make (map[CharCode ]CharCode ,len (codeToRune )),_dfb :make (map[CharCode ]CharCode ,len (codeToRune ))};
cmap .computeInverseMappings ();return cmap ;};type cmapDict struct{Dict map[string ]cmapObject ;};