unipdf/internal/license/license.go
2021-02-22 02:29:48 +00:00

104 lines
31 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 license ;import (_fg "bytes";_c "compress/gzip";_f "crypto";_ea "crypto/aes";_ffe "crypto/cipher";_df "crypto/rand";_fe "crypto/rsa";_af "crypto/sha512";_aa "crypto/x509";_bg "encoding/base64";_gd "encoding/hex";_bb "encoding/json";_ge "encoding/pem";
_fd "errors";_g "fmt";_cc "github.com/unidoc/unipdf/v3/common";_ff "io";_eb "io/ioutil";_cg "net";_a "net/http";_cb "os";_fc "path/filepath";_be "sort";_d "strings";_b "sync";_ba "time";);func GetLicenseKey ()*LicenseKey {if _dde ==nil {return nil ;};_effe :=*_dde ;
return &_effe ;};func (_abd *meteredClient )checkinUsage (_eec meteredUsageCheckinForm )(meteredUsageCheckinResp ,error ){_eec .Package ="\u0075\u006e\u0069\u0070\u0064\u0066";_eec .PackageVersion =_cc .Version ;var _ebfe meteredUsageCheckinResp ;_ffeb :=_abd ._daa +"\u002f\u006d\u0065\u0074er\u0065\u0064\u002f\u0075\u0073\u0061\u0067\u0065\u005f\u0063\u0068\u0065\u0063\u006bi\u006e";
_dba ,_bba :=_bb .Marshal (_eec );if _bba !=nil {return _ebfe ,_bba ;};_bea ,_bba :=_fegc (_dba );if _bba !=nil {return _ebfe ,_bba ;};_dfa ,_bba :=_a .NewRequest ("\u0050\u004f\u0053\u0054",_ffeb ,_bea );if _bba !=nil {return _ebfe ,_bba ;};_dfa .Header .Add ("\u0043\u006f\u006et\u0065\u006e\u0074\u002d\u0054\u0079\u0070\u0065","\u0061\u0070p\u006c\u0069\u0063a\u0074\u0069\u006f\u006e\u002f\u006a\u0073\u006f\u006e");
_dfa .Header .Add ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0067\u007a\u0069\u0070");_dfa .Header .Add ("\u0041c\u0063e\u0070\u0074\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0067\u007a\u0069\u0070");
_dfa .Header .Add ("\u0058-\u0041\u0050\u0049\u002d\u004b\u0045Y",_abd ._dfc );_aga ,_bba :=_abd ._gfg .Do (_dfa );if _bba !=nil {return _ebfe ,_bba ;};defer _aga .Body .Close ();if _aga .StatusCode !=200{return _ebfe ,_g .Errorf ("\u0066\u0061i\u006c\u0065\u0064\u0020t\u006f\u0020c\u0068\u0065\u0063\u006b\u0069\u006e\u002c\u0020s\u0074\u0061\u0074\u0075\u0073\u0020\u0063\u006f\u0064\u0065\u0020\u0069s\u003a\u0020\u0025\u0064",_aga .StatusCode );
};_fge ,_bba :=_bge (_aga );if _bba !=nil {return _ebfe ,_bba ;};_bba =_bb .Unmarshal (_fge ,&_ebfe );if _bba !=nil {return _ebfe ,_bba ;};return _ebfe ,nil ;};func (_gea *meteredClient )getStatus ()(meteredStatusResp ,error ){var _afc meteredStatusResp ;
_ee :=_gea ._daa +"\u002fm\u0065t\u0065\u0072\u0065\u0064\u002f\u0073\u0074\u0061\u0074\u0075\u0073";var _aabb meteredStatusForm ;_cfb ,_ebfg :=_bb .Marshal (_aabb );if _ebfg !=nil {return _afc ,_ebfg ;};_edec ,_ebfg :=_fegc (_cfb );if _ebfg !=nil {return _afc ,_ebfg ;
};_gg ,_ebfg :=_a .NewRequest ("\u0050\u004f\u0053\u0054",_ee ,_edec );if _ebfg !=nil {return _afc ,_ebfg ;};_gg .Header .Add ("\u0043\u006f\u006et\u0065\u006e\u0074\u002d\u0054\u0079\u0070\u0065","\u0061\u0070p\u006c\u0069\u0063a\u0074\u0069\u006f\u006e\u002f\u006a\u0073\u006f\u006e");
_gg .Header .Add ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0067\u007a\u0069\u0070");_gg .Header .Add ("\u0041c\u0063e\u0070\u0074\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067","\u0067\u007a\u0069\u0070");
_gg .Header .Add ("\u0058-\u0041\u0050\u0049\u002d\u004b\u0045Y",_gea ._dfc );_egb ,_ebfg :=_gea ._gfg .Do (_gg );if _ebfg !=nil {return _afc ,_ebfg ;};defer _egb .Body .Close ();if _egb .StatusCode !=200{return _afc ,_g .Errorf ("\u0066\u0061i\u006c\u0065\u0064\u0020t\u006f\u0020c\u0068\u0065\u0063\u006b\u0069\u006e\u002c\u0020s\u0074\u0061\u0074\u0075\u0073\u0020\u0063\u006f\u0064\u0065\u0020\u0069s\u003a\u0020\u0025\u0064",_egb .StatusCode );
};_fef ,_ebfg :=_bge (_egb );if _ebfg !=nil {return _afc ,_ebfg ;};_ebfg =_bb .Unmarshal (_fef ,&_afc );if _ebfg !=nil {return _afc ,_ebfg ;};return _afc ,nil ;};func (_gbb *LicenseKey )Validate ()error {if len (_gbb .LicenseId )< 10{return _g .Errorf ("i\u006e\u0076\u0061\u006c\u0069\u0064 \u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020L\u0069\u0063\u0065n\u0073e\u0020\u0049\u0064");
};if len (_gbb .CustomerId )< 10{return _g .Errorf ("\u0069\u006e\u0076\u0061l\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065:\u0020C\u0075\u0073\u0074\u006f\u006d\u0065\u0072 \u0049\u0064");};if len (_gbb .CustomerName )< 1{return _g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069c\u0065\u006e\u0073\u0065\u003a\u0020\u0043u\u0073\u0074\u006f\u006d\u0065\u0072\u0020\u004e\u0061\u006d\u0065");
};if _gb .After (_gbb .CreatedAt ){return _g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020\u0043\u0072\u0065\u0061\u0074\u0065\u0064 \u0041\u0074\u0020\u0069\u0073 \u0069\u006ev\u0061\u006c\u0069\u0064");
};if _gbb .ExpiresAt ==nil {_fgd :=_gbb .CreatedAt .AddDate (1,0,0);if _fb .After (_fgd ){_fgd =_fb ;};_gbb .ExpiresAt =&_fgd ;};if _gbb .CreatedAt .After (*_gbb .ExpiresAt ){return _g .Errorf ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020\u0043\u0072\u0065\u0061\u0074\u0065\u0064\u0020\u0041\u0074 \u0063a\u006e\u006e\u006f\u0074 \u0062\u0065 \u0047\u0072\u0065\u0061\u0074\u0065\u0072\u0020\u0074\u0068\u0061\u006e\u0020\u0045\u0078\u0070\u0069\u0072\u0065\u0073\u0020\u0041\u0074");
};if _gbb .isExpired (){return _g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020l\u0069\u0063\u0065ns\u0065\u003a\u0020\u0054\u0068\u0065 \u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u0068\u0061\u0073\u0020\u0061\u006c\u0072e\u0061\u0064\u0079\u0020\u0065\u0078\u0070\u0069r\u0065\u0064");
};if len (_gbb .CreatorName )< 1{return _g .Errorf ("\u0069\u006ev\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u003a\u0020\u0043\u0072\u0065\u0061\u0074\u006f\u0072\u0020na\u006d\u0065");};if len (_gbb .CreatorEmail )< 1{return _g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069c\u0065\u006e\u0073\u0065\u003a\u0020\u0043r\u0065\u0061\u0074\u006f\u0072\u0020\u0065\u006d\u0061\u0069\u006c");
};if _gbb .CreatedAt .After (_bgb ){if !_gbb .UniPDF {return _g .Errorf ("\u0069\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006c\u0069\u0063\u0065\u006e\u0073\u0065:\u0020\u0054\u0068\u0069\u0073\u0020\u0055\u006e\u0069\u0044\u006f\u0063\u0020k\u0065\u0079\u0020\u0069\u0073\u0020\u0069\u006e\u0076\u0061\u006c\u0069d \u0066\u006f\u0072\u0020\u0055\u006e\u0069\u0050\u0044\u0046");
};};return nil ;};func _fgfa (_gef *_a .Response )(_ff .ReadCloser ,error ){var _agad error ;var _aaca _ff .ReadCloser ;switch _d .ToLower (_gef .Header .Get ("\u0043\u006fn\u0074\u0065\u006et\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067")){case "\u0067\u007a\u0069\u0070":_aaca ,_agad =_c .NewReader (_gef .Body );
if _agad !=nil {return _aaca ,_agad ;};defer _aaca .Close ();default:_aaca =_gef .Body ;};return _aaca ,nil ;};func (_eaa *LicenseKey )isExpired ()bool {return _eaa .getExpiryDateToCompare ().After (*_eaa .ExpiresAt )};var _gb =_ba .Date (2010,1,1,0,0,0,0,_ba .UTC );
func _da (_dg string ,_ca string )([]byte ,error ){var (_gcf int ;_ga string ;);for _ ,_ga =range []string {"\u000a\u002b\u000a","\u000d\u000a\u002b\r\u000a","\u0020\u002b\u0020"}{if _gcf =_d .Index (_ca ,_ga );_gcf !=-1{break ;};};if _gcf ==-1{return nil ,_g .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0069\u006e\u0070\u0075\u0074\u002c \u0073i\u0067n\u0061t\u0075\u0072\u0065\u0020\u0073\u0065\u0070\u0061\u0072\u0061\u0074\u006f\u0072");
};_ce :=_ca [:_gcf ];_ag :=_gcf +len (_ga );_db :=_ca [_ag :];if _ce ==""||_db ==""{return nil ,_g .Errorf ("\u0069n\u0076\u0061l\u0069\u0064\u0020\u0069n\u0070\u0075\u0074,\u0020\u006d\u0069\u0073\u0073\u0069\u006e\u0067\u0020or\u0069\u0067\u0069n\u0061\u006c \u006f\u0072\u0020\u0073\u0069\u0067n\u0061\u0074u\u0072\u0065");
};_fgc ,_aca :=_bg .StdEncoding .DecodeString (_ce );if _aca !=nil {return nil ,_g .Errorf ("\u0069\u006e\u0076\u0061li\u0064\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u006f\u0072\u0069\u0067\u0069\u006ea\u006c");};_acc ,_aca :=_bg .StdEncoding .DecodeString (_db );
if _aca !=nil {return nil ,_g .Errorf ("\u0069\u006e\u0076al\u0069\u0064\u0020\u0069\u006e\u0070\u0075\u0074\u0020\u0073\u0069\u0067\u006e\u0061\u0074\u0075\u0072\u0065");};_aad ,_ :=_ge .Decode ([]byte (_dg ));if _aad ==nil {return nil ,_g .Errorf ("\u0050\u0075\u0062\u004b\u0065\u0079\u0020\u0066\u0061\u0069\u006c\u0065\u0064");
};_ef ,_aca :=_aa .ParsePKIXPublicKey (_aad .Bytes );if _aca !=nil {return nil ,_aca ;};_fdf :=_ef .(*_fe .PublicKey );if _fdf ==nil {return nil ,_g .Errorf ("\u0050u\u0062\u004b\u0065\u0079\u0020\u0063\u006f\u006e\u0076\u0065\u0072s\u0069\u006f\u006e\u0020\u0066\u0061\u0069\u006c\u0065\u0064");
};_bbc :=_af .New ();_bbc .Write (_fgc );_dfd :=_bbc .Sum (nil );_aca =_fe .VerifyPKCS1v15 (_fdf ,_f .SHA512 ,_dfd ,_acc );if _aca !=nil {return nil ,_aca ;};return _fgc ,nil ;};const (_bbb ="\u002d\u002d\u002d--\u0042\u0045\u0047\u0049\u004e\u0020\u0055\u004e\u0049D\u004fC\u0020L\u0049C\u0045\u004e\u0053\u0045\u0020\u004b\u0045\u0059\u002d\u002d\u002d\u002d\u002d";
_eg ="\u002d\u002d\u002d\u002d\u002d\u0045\u004e\u0044\u0020\u0055\u004e\u0049\u0044\u004f\u0043 \u004cI\u0043\u0045\u004e\u0053\u0045\u0020\u004b\u0045\u0059\u002d\u002d\u002d\u002d\u002d";);func _afgd ()(_cg .IP ,error ){_dcad ,_bfc :=_cg .Dial ("\u0075\u0064\u0070","\u0038\u002e\u0038\u002e\u0038\u002e\u0038\u003a\u0038\u0030");
if _bfc !=nil {return nil ,_bfc ;};defer _dcad .Close ();_bcb :=_dcad .LocalAddr ().(*_cg .UDPAddr );return _bcb .IP ,nil ;};type meteredUsageCheckinResp struct{Instance string `json:"inst"`;Next string `json:"next"`;Success bool `json:"success"`;Message string `json:"message"`;
RemainingDocs int `json:"rd"`;LimitDocs bool `json:"ld"`;};func _fegc (_age []byte )(_ff .Reader ,error ){_aac :=new (_fg .Buffer );_abe :=_c .NewWriter (_aac );_abe .Write (_age );_edeec :=_abe .Close ();if _edeec !=nil {return nil ,_edeec ;};return _aac ,nil ;
};func GetMeteredState ()(MeteredStatus ,error ){if _dde ==nil {return MeteredStatus {},_fd .New ("\u006c\u0069\u0063\u0065ns\u0065\u0020\u006b\u0065\u0079\u0020\u006e\u006f\u0074\u0020\u0073\u0065\u0074");};if !_dde ._fcf ||len (_dde ._fde )==0{return MeteredStatus {},_fd .New ("\u0061p\u0069 \u006b\u0065\u0079\u0020\u006e\u006f\u0074\u0020\u0073\u0065\u0074");
};_fdd ,_dfbf :=_fgce .loadState (_dde ._fde );if _dfbf !=nil {_cc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_dfbf );return MeteredStatus {},_dfbf ;};if _fdd .Docs > 0{_dd :=_bef ("","",true );if _dd !=nil {return MeteredStatus {},_dd ;
};};_bgf .Lock ();defer _bgf .Unlock ();_adf :=_de ();_adf ._dfc =_dde ._fde ;_egbg ,_dfbf :=_adf .getStatus ();if _dfbf !=nil {return MeteredStatus {},_dfbf ;};if !_egbg .Valid {return MeteredStatus {},_fd .New ("\u006b\u0065\u0079\u0020\u006e\u006f\u0074\u0020\u0076\u0061\u006c\u0069\u0064");
};_bee :=MeteredStatus {OK :true ,Credits :_egbg .OrgCredits ,Used :_egbg .OrgUsed };return _bee ,nil ;};const _cgga ="U\u004eI\u0050\u0044\u0046\u005f\u0043\u0055\u0053\u0054O\u004d\u0045\u0052\u005fNA\u004d\u0045";var _fgce stateLoader =defaultStateHolder {};
func SetMeteredKey (apiKey string )error {_afa :=_de ();_afa ._dfc =apiKey ;_ec ,_gab :=_afa .getStatus ();if _gab !=nil {return _gab ;};if !_ec .Valid {return _fd .New ("\u006b\u0065\u0079\u0020\u006e\u006f\u0074\u0020\u0076\u0061\u006c\u0069\u0064");
};_gdd :=&LicenseKey {_fcf :true ,_fde :apiKey };_dde =_gdd ;return nil ;};func TrackUse (useKey string ){if _dde ==nil {return ;};if !_dde ._fcf ||len (_dde ._fde )==0{return ;};if len (useKey )==0{return ;};_bgf .Lock ();defer _bgf .Unlock ();if _faf ==nil {_faf =map[string ]int {};
};_faf [useKey ]++;};type meteredUsageCheckinForm struct{Instance string `json:"inst"`;Next string `json:"next"`;UsageNumber int `json:"usage_number"`;NumFailed int64 `json:"num_failed"`;Hostname string `json:"hostname"`;LocalIP string `json:"local_ip"`;
MacAddress string `json:"mac_address"`;Package string `json:"package"`;PackageVersion string `json:"package_version"`;Usage map[string ]int `json:"u"`;};const _cba ="\u000a\u002d\u002d\u002d\u002d\u002d\u0042\u0045\u0047\u0049\u004e \u0050\u0055\u0042\u004c\u0049\u0043\u0020\u004b\u0045Y\u002d\u002d\u002d\u002d\u002d\u000a\u004d\u0049I\u0042\u0049\u006a\u0041NB\u0067\u006b\u0071\u0068\u006b\u0069G\u0039\u0077\u0030\u0042\u0041\u0051\u0045\u0046A\u0041\u004f\u0043\u0041\u0051\u0038\u0041\u004d\u0049\u0049\u0042\u0043\u0067\u004b\u0043\u0041\u0051\u0045A\u006dF\u0055\u0069\u0079\u0064\u0037\u0062\u0035\u0058\u006a\u0070\u006b\u0050\u0035\u0052\u0061\u0070\u0034\u0077\u000a\u0044\u0063\u0031d\u0079\u007a\u0049\u0051\u0034\u004c\u0065\u006b\u0078\u0072\u0076\u0079\u0074\u006e\u0045\u004d\u0070\u004e\u0055\u0062\u006f\u0036i\u0041\u0037\u0034\u0056\u0038\u0072\u0075\u005a\u004f\u0076\u0072\u0053\u0063\u0073\u0066\u0032\u0051\u0065\u004e9\u002f\u0071r\u0055\u0047\u0038\u0071\u0045\u0062\u0055\u0057\u0064\u006f\u0045\u0059\u0071+\u000a\u006f\u0074\u0046\u004e\u0041\u0046N\u0078\u006c\u0047\u0062\u0078\u0062\u0044\u0048\u0063\u0064\u0047\u0056\u0061\u004d\u0030\u004f\u0058\u0064\u0058g\u0044y\u004c5\u0061\u0049\u0045\u0061\u0067\u004c\u0030\u0063\u0035\u0070\u0077\u006a\u0049\u0064\u0050G\u0049\u006e\u0034\u0036\u0066\u0037\u0038\u0065\u004d\u004a\u002b\u004a\u006b\u0064\u0063\u0070\u0044\n\u0044\u004a\u0061\u0071\u0059\u0058d\u0072\u007a5\u004b\u0065\u0073\u0068\u006aS\u0069\u0049\u0061\u0061\u0037\u006d\u0065\u006e\u0042\u0049\u0041\u0058\u0053\u0034\u0055\u0046\u0078N\u0066H\u0068\u004e\u0030\u0048\u0043\u0059\u005a\u0059\u0071\u0051\u0047\u0037\u0062K+\u0073\u0035\u0072R\u0048\u006f\u006e\u0079\u0064\u004eW\u0045\u0047\u000a\u0048\u0038M\u0079\u0076\u00722\u0070\u0079\u0061\u0032K\u0072\u004d\u0075m\u0066\u006d\u0041\u0078\u0055\u0042\u0036\u0066\u0065\u006e\u0043\u002f4\u004f\u0030\u0057\u00728\u0067\u0066\u0050\u004f\u0055\u0038R\u0069\u0074\u006d\u0062\u0044\u0076\u0051\u0050\u0049\u0052\u0058\u004fL\u0034\u0076\u0054B\u0072\u0042\u0064\u0062a\u0041\u000a9\u006e\u0077\u004e\u0050\u002b\u0069\u002f\u002f\u0032\u0030\u004d\u00542\u0062\u0078\u006d\u0065\u0057\u0042\u002b\u0067\u0070\u0063\u0045\u0068G\u0070\u0058\u005a7\u0033\u0033\u0061\u007a\u0051\u0078\u0072\u0043\u0033\u004a\u0034\u0076\u0033C\u005a\u006d\u0045\u004eS\u0074\u0044\u004b\u002f\u004b\u0044\u0053\u0050\u004b\u0055\u0047\u0066\u00756\u000a\u0066\u0077I\u0044\u0041\u0051\u0041\u0042\u000a\u002d\u002d\u002d\u002d\u002dE\u004e\u0044\u0020\u0050\u0055\u0042\u004c\u0049\u0043 \u004b\u0045Y\u002d\u002d\u002d\u002d\u002d\n";
type LicenseKey struct{LicenseId string `json:"license_id"`;CustomerId string `json:"customer_id"`;CustomerName string `json:"customer_name"`;Tier string `json:"tier"`;CreatedAt _ba .Time `json:"-"`;CreatedAtInt int64 `json:"created_at"`;ExpiresAt *_ba .Time `json:"-"`;
ExpiresAtInt int64 `json:"expires_at"`;CreatedBy string `json:"created_by"`;CreatorName string `json:"creator_name"`;CreatorEmail string `json:"creator_email"`;UniPDF bool `json:"unipdf"`;UniOffice bool `json:"unioffice"`;UniHTML bool `json:"unihtml"`;
Trial bool `json:"trial"`;_fcf bool ;_fde string ;};func _dfe (_befg ,_gabf []byte )([]byte ,error ){_ddg ,_gde :=_ea .NewCipher (_befg );if _gde !=nil {return nil ,_gde ;};_bgga :=make ([]byte ,_ea .BlockSize +len (_gabf ));_bag :=_bgga [:_ea .BlockSize ];
if _ ,_bbcd :=_ff .ReadFull (_df .Reader ,_bag );_bbcd !=nil {return nil ,_bbcd ;};_fbd :=_ffe .NewCFBEncrypter (_ddg ,_bag );_fbd .XORKeyStream (_bgga [_ea .BlockSize :],_gabf );_agb :=make ([]byte ,_bg .URLEncoding .EncodedLen (len (_bgga )));_bg .URLEncoding .Encode (_agb ,_bgga );
return _agb ,nil ;};const (LicenseTierUnlicensed ="\u0075\u006e\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0064";LicenseTierCommunity ="\u0063o\u006d\u006d\u0075\u006e\u0069\u0074y";LicenseTierIndividual ="\u0069\u006e\u0064\u0069\u0076\u0069\u0064\u0075\u0061\u006c";
LicenseTierBusiness ="\u0062\u0075\u0073\u0069\u006e\u0065\u0073\u0073";);func SetLicenseKey (content string ,customerName string )error {_agg ,_agc :=_bf (content );if _agc !=nil {_cc .Log .Error ("\u004c\u0069c\u0065\u006e\u0073\u0065\u0020\u0063\u006f\u0064\u0065\u0020\u0064\u0065\u0063\u006f\u0064\u0065\u0020\u0065\u0072\u0072\u006f\u0072: \u0025\u0076",_agc );
return _agc ;};if !_d .EqualFold (_agg .CustomerName ,customerName ){_cc .Log .Error ("L\u0069ce\u006es\u0065 \u0063\u006f\u0064\u0065\u0020i\u0073\u0073\u0075e\u0020\u002d\u0020\u0043\u0075s\u0074\u006f\u006de\u0072\u0020\u006e\u0061\u006d\u0065\u0020\u006d\u0069\u0073\u006da\u0074\u0063\u0068, e\u0078\u0070\u0065\u0063\u0074\u0065d\u0020\u0027\u0025\u0073\u0027\u002c\u0020\u0062\u0075\u0074\u0020\u0067o\u0074 \u0027\u0025\u0073\u0027",customerName ,_agg .CustomerName );
return _g .Errorf ("\u0063\u0075\u0073\u0074\u006fm\u0065\u0072\u0020\u006e\u0061\u006d\u0065\u0020\u006d\u0069\u0073\u006d\u0061t\u0063\u0068\u002c\u0020\u0065\u0078\u0070\u0065\u0063\u0074\u0065\u0064\u0020\u0027\u0025\u0073\u0027\u002c\u0020\u0062\u0075\u0074\u0020\u0067\u006f\u0074\u0020\u0027\u0025\u0073'",customerName ,_agg .CustomerName );
};_agc =_agg .Validate ();if _agc !=nil {_cc .Log .Error ("\u004c\u0069\u0063\u0065\u006e\u0073e\u0020\u0063\u006f\u0064\u0065\u0020\u0076\u0061\u006c\u0069\u0064\u0061\u0074i\u006f\u006e\u0020\u0065\u0072\u0072\u006fr\u003a\u0020\u0025\u0076",_agc );return _agc ;
};_dde =&_agg ;return nil ;};const _degf ="\u0055\u004e\u0049\u0050DF\u005f\u004c\u0049\u0043\u0045\u004e\u0053\u0045\u005f\u0050\u0041\u0054\u0048";func MakeUnlicensedKey ()*LicenseKey {_abb :=LicenseKey {};_abb .CustomerName ="\u0055\u006e\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0064";
_abb .Tier =LicenseTierUnlicensed ;_abb .CreatedAt =_ba .Now ().UTC ();_abb .CreatedAtInt =_abb .CreatedAt .Unix ();return &_abb ;};func (_ebf *LicenseKey )TypeToString ()string {if _ebf ._fcf {return "M\u0065t\u0065\u0072\u0065\u0064\u0020\u0073\u0075\u0062s\u0063\u0072\u0069\u0070ti\u006f\u006e";
};if _ebf .Tier ==LicenseTierUnlicensed {return "\u0055\u006e\u006c\u0069\u0063\u0065\u006e\u0073\u0065\u0064";};if _ebf .Tier ==LicenseTierCommunity {return "\u0041\u0047PL\u0076\u0033\u0020O\u0070\u0065\u006e\u0020Sou\u0072ce\u0020\u0043\u006f\u006d\u006d\u0075\u006eit\u0079\u0020\u004c\u0069\u0063\u0065\u006es\u0065";
};if _ebf .Tier ==LicenseTierIndividual ||_ebf .Tier =="\u0069\u006e\u0064i\u0065"{return "\u0043\u006f\u006dm\u0065\u0072\u0063\u0069a\u006c\u0020\u004c\u0069\u0063\u0065\u006es\u0065\u0020\u002d\u0020\u0049\u006e\u0064\u0069\u0076\u0069\u0064\u0075\u0061\u006c";
};return "\u0043\u006fm\u006d\u0065\u0072\u0063\u0069\u0061\u006c\u0020\u004c\u0069\u0063\u0065\u006e\u0073\u0065\u0020\u002d\u0020\u0042\u0075\u0073\u0069ne\u0073\u0073";};var _faf map[string ]int ;type defaultStateHolder struct{};var _gcc map[string ]struct{};
type meteredClient struct{_daa string ;_dfc string ;_gfg *_a .Client ;};var _bgf =&_b .Mutex {};func (_fed defaultStateHolder )updateState (_bae ,_beb ,_cgf string ,_bad int ,_cd bool ,_bdb int ,_cff int ,_ecb _ba .Time ,_fec map[string ]int )error {_deg :=_cb .Getenv ("\u0048\u004f\u004d\u0045");
if len (_deg )==0{return _fd .New ("\u0068\u006fm\u0065\u0020\u0064i\u0072\u0020\u006e\u006f\u0074\u0020\u0073\u0065\u0074");};_dae :=_fc .Join (_deg ,"\u002eu\u006e\u0069\u0064\u006f\u0063");_bca :=_cb .MkdirAll (_dae ,0777);if _bca !=nil {return _bca ;
};if len (_bae )< 20{return _fd .New ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006b\u0065\u0079");};_dbb :=[]byte (_bae );_ggf :=_af .Sum512_256 (_dbb [:20]);_cee :=_gd .EncodeToString (_ggf [:]);_afg :=_fc .Join (_dae ,_cee );var _bde reportState ;
_bde .Docs =int64 (_bad );_bde .NumErrors =int64 (_cff );_bde .LimitDocs =_cd ;_bde .RemainingDocs =int64 (_bdb );_bde .LastWritten =_ba .Now ().UTC ();_bde .LastReported =_ecb ;_bde .Instance =_beb ;_bde .Next =_cgf ;_bde .Usage =_fec ;_dfaf ,_bca :=_bb .Marshal (_bde );
if _bca !=nil {return _bca ;};const _ebg ="\u0068\u00619\u004e\u004b\u0038]\u0052\u0062\u004c\u002a\u006d\u0034\u004c\u004b\u0057";_dfaf ,_bca =_dfe ([]byte (_ebg ),_dfaf );if _bca !=nil {return _bca ;};_bca =_eb .WriteFile (_afg ,_dfaf ,0600);if _bca !=nil {return _bca ;
};return nil ;};func _bge (_bfg *_a .Response )([]byte ,error ){var _ebfgb []byte ;_aee ,_dage :=_fgfa (_bfg );if _dage !=nil {return _ebfgb ,_dage ;};return _eb .ReadAll (_aee );};func (_aecf *LicenseKey )getExpiryDateToCompare ()_ba .Time {if _aecf .Trial {return _ba .Now ().UTC ();
};return _cc .ReleasedAt ;};func _bf (_aec string )(LicenseKey ,error ){var _bc LicenseKey ;_ffgb ,_fa :=_efa (_bbb ,_eg ,_aec );if _fa !=nil {return _bc ,_fa ;};_ccf ,_fa :=_da (_cba ,_ffgb );if _fa !=nil {return _bc ,_fa ;};_fa =_bb .Unmarshal (_ccf ,&_bc );
if _fa !=nil {return _bc ,_fa ;};_bc .CreatedAt =_ba .Unix (_bc .CreatedAtInt ,0);if _bc .ExpiresAtInt > 0{_ebe :=_ba .Unix (_bc .ExpiresAtInt ,0);_bc .ExpiresAt =&_ebe ;};return _bc ,nil ;};type MeteredStatus struct{OK bool ;Credits int64 ;Used int64 ;
};func _bef (_bgff string ,_bgba string ,_gag bool )error {if _dde ==nil {return _fd .New ("\u006e\u006f\u0020\u006c\u0069\u0063\u0065\u006e\u0073e\u0020\u006b\u0065\u0079");};if !_dde ._fcf ||len (_dde ._fde )==0{return nil ;};if len (_bgff )==0&&!_gag {return _fd .New ("\u0064\u006f\u0063\u004b\u0065\u0079\u0020\u006e\u006ft\u0020\u0073\u0065\u0074");
};_bgf .Lock ();defer _bgf .Unlock ();if _gcc ==nil {_gcc =map[string ]struct{}{};};if _faf ==nil {_faf =map[string ]int {};};_dca :=0;if !_gag {_ ,_gaba :=_gcc [_bgff ];if !_gaba {_gcc [_bgff ]=struct{}{};_dca ++;};if _dca ==0&&!_gag {return nil ;};_faf [_bgba ]++;
};_bfe :=_ba .Now ();_cge ,_edg :=_fgce .loadState (_dde ._fde );if _edg !=nil {_cc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_edg );return _edg ;};if _cge .Usage ==nil {_cge .Usage =map[string ]int {};};for _gce ,_aba :=range _faf {_cge .Usage [_gce ]+=_aba ;
};_faf =nil ;const _eecd =24*_ba .Hour ;const _bdef =3*24*_ba .Hour ;if len (_cge .Instance )==0||_bfe .Sub (_cge .LastReported )> _eecd ||(_cge .LimitDocs &&_cge .RemainingDocs <=_cge .Docs +int64 (_dca ))||_gag {_gec ,_baf :=_cb .Hostname ();if _baf !=nil {return _baf ;
};_dagf :=_cge .Docs ;_cbd ,_eaf ,_baf :=_bafa ();if _baf !=nil {return _baf ;};_be .Strings (_eaf );_be .Strings (_cbd );_ada ,_baf :=_afgd ();if _baf !=nil {return _baf ;};_gga :=false ;for _ ,_gecf :=range _eaf {if _gecf ==_ada .String (){_gga =true ;
};};if !_gga {_eaf =append (_eaf ,_ada .String ());};_dfbg :=_de ();_dfbg ._dfc =_dde ._fde ;_dagf +=int64 (_dca );_ead :=meteredUsageCheckinForm {Instance :_cge .Instance ,Next :_cge .Next ,UsageNumber :int (_dagf ),NumFailed :_cge .NumErrors ,Hostname :_gec ,LocalIP :_d .Join (_eaf ,"\u002c\u0020"),MacAddress :_d .Join (_cbd ,"\u002c\u0020"),Package :"\u0075\u006e\u0069\u0070\u0064\u0066",PackageVersion :_cc .Version ,Usage :_cge .Usage };
_dbe :=int64 (0);_fbb :=_cge .NumErrors ;_ecc :=_bfe ;_cgg :=0;_gbd :=_cge .LimitDocs ;_bgfb ,_baf :=_dfbg .checkinUsage (_ead );if _baf !=nil {if _bfe .Sub (_cge .LastReported )> _bdef {return _fd .New ("\u0074\u006f\u006f\u0020\u006c\u006f\u006e\u0067\u0020\u0073\u0069\u006e\u0063\u0065\u0020\u006c\u0061\u0073\u0074\u0020\u0073\u0075\u0063\u0063e\u0073\u0073\u0066\u0075\u006c \u0063\u0068e\u0063\u006b\u0069\u006e");
};_dbe =_dagf ;_fbb ++;_ecc =_cge .LastReported ;}else {_gbd =_bgfb .LimitDocs ;_cgg =_bgfb .RemainingDocs ;_fbb =0;};if len (_bgfb .Instance )==0{_bgfb .Instance =_ead .Instance ;};if len (_bgfb .Next )==0{_bgfb .Next =_ead .Next ;};_baf =_fgce .updateState (_dfbg ._dfc ,_bgfb .Instance ,_bgfb .Next ,int (_dbe ),_gbd ,_cgg ,int (_fbb ),_ecc ,nil );
if _baf !=nil {return _baf ;};if !_bgfb .Success {return _g .Errorf ("\u0065r\u0072\u006f\u0072\u003a\u0020\u0025s",_bgfb .Message );};}else {_edg =_fgce .updateState (_dde ._fde ,_cge .Instance ,_cge .Next ,int (_cge .Docs )+_dca ,_cge .LimitDocs ,int (_cge .RemainingDocs ),int (_cge .NumErrors ),_cge .LastReported ,_cge .Usage );
if _edg !=nil {return _edg ;};};return nil ;};func (_ebd defaultStateHolder )loadState (_ggg string )(reportState ,error ){_feg :=_cb .Getenv ("\u0048\u004f\u004d\u0045");if len (_feg )==0{return reportState {},_fd .New ("\u0068\u006fm\u0065\u0020\u0064i\u0072\u0020\u006e\u006f\u0074\u0020\u0073\u0065\u0074");
};_fag :=_fc .Join (_feg ,"\u002eu\u006e\u0069\u0064\u006f\u0063");_bcg :=_cb .MkdirAll (_fag ,0777);if _bcg !=nil {return reportState {},_bcg ;};if len (_ggg )< 20{return reportState {},_fd .New ("i\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u006b\u0065\u0079");
};_fca :=[]byte (_ggg );_ecf :=_af .Sum512_256 (_fca [:20]);_abg :=_gd .EncodeToString (_ecf [:]);_afe :=_fc .Join (_fag ,_abg );_geg ,_bcg :=_eb .ReadFile (_afe );if _bcg !=nil {if _cb .IsNotExist (_bcg ){return reportState {},nil ;};_cc .Log .Debug ("\u0045R\u0052\u004f\u0052\u003a\u0020\u0025v",_bcg );
return reportState {},_fd .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0061\u0074\u0061");};const _fgf ="\u0068\u00619\u004e\u004b\u0038]\u0052\u0062\u004c\u002a\u006d\u0034\u004c\u004b\u0057";_geg ,_bcg =_bfeg ([]byte (_fgf ),_geg );if _bcg !=nil {return reportState {},_bcg ;
};var _bcaa reportState ;_bcg =_bb .Unmarshal (_geg ,&_bcaa );if _bcg !=nil {_cc .Log .Debug ("\u0045\u0052\u0052OR\u003a\u0020\u0049\u006e\u0076\u0061\u006c\u0069\u0064\u0020\u0064\u0061\u0074\u0061\u003a\u0020\u0025\u0076",_bcg );return reportState {},_fd .New ("\u0069\u006e\u0076a\u006c\u0069\u0064\u0020\u0064\u0061\u0074\u0061");
};return _bcaa ,nil ;};func _bafa ()([]string ,[]string ,error ){_ded ,_dega :=_cg .Interfaces ();if _dega !=nil {return nil ,nil ,_dega ;};var _ace []string ;var _dcaf []string ;for _ ,_cgec :=range _ded {if _cgec .Flags &_cg .FlagUp ==0||_fg .Equal (_cgec .HardwareAddr ,nil ){continue ;
};if _cgec .HardwareAddr [0]&2==2{continue ;};_efaf ,_fdec :=_cgec .Addrs ();if _fdec !=nil {return nil ,nil ,_fdec ;};_ggc :=0;for _ ,_fgg :=range _efaf {var _eff _cg .IP ;switch _gdg :=_fgg .(type ){case *_cg .IPNet :_eff =_gdg .IP ;case *_cg .IPAddr :_eff =_gdg .IP ;
};if _eff .IsLoopback (){continue ;};if _eff .To4 ()==nil {continue ;};_dcaf =append (_dcaf ,_eff .String ());_ggc ++;};_fbf :=_cgec .HardwareAddr .String ();if _fbf !=""&&_ggc > 0{_ace =append (_ace ,_fbf );};};return _ace ,_dcaf ,nil ;};type meteredStatusForm struct{};
type meteredStatusResp struct{Valid bool `json:"valid"`;OrgCredits int64 `json:"org_credits"`;OrgUsed int64 `json:"org_used"`;OrgRemaining int64 `json:"org_remaining"`;};func (_gf *LicenseKey )IsLicensed ()bool {return _gf .Tier !=LicenseTierUnlicensed ||_gf ._fcf };
func Track (docKey string ,useKey string )error {return _bef (docKey ,useKey ,false )};func _de ()*meteredClient {_adc :=meteredClient {_daa :"h\u0074\u0074\u0070\u0073\u003a\u002f/\u0063\u006c\u006f\u0075\u0064\u002e\u0075\u006e\u0069d\u006f\u0063\u002ei\u006f/\u0061\u0070\u0069",_gfg :&_a .Client {Timeout :30*_ba .Second }};
if _adce :=_cb .Getenv ("\u0055N\u0049\u0044\u004f\u0043_\u004c\u0049\u0043\u0045\u004eS\u0045_\u0053E\u0052\u0056\u0045\u0052\u005f\u0055\u0052L");_d .HasPrefix (_adce ,"\u0068\u0074\u0074\u0070"){_adc ._daa =_adce ;};return &_adc ;};func _bfeg (_bac ,_acaf []byte )([]byte ,error ){_aff :=make ([]byte ,_bg .URLEncoding .DecodedLen (len (_acaf )));
_fcg ,_fff :=_bg .URLEncoding .Decode (_aff ,_acaf );if _fff !=nil {return nil ,_fff ;};_aff =_aff [:_fcg ];_gfgc ,_fff :=_ea .NewCipher (_bac );if _fff !=nil {return nil ,_fff ;};if len (_aff )< _ea .BlockSize {return nil ,_fd .New ("c\u0069p\u0068\u0065\u0072\u0074\u0065\u0078\u0074\u0020t\u006f\u006f\u0020\u0073ho\u0072\u0074");
};_dfgc :=_aff [:_ea .BlockSize ];_aff =_aff [_ea .BlockSize :];_adff :=_ffe .NewCFBDecrypter (_gfgc ,_dfgc );_adff .XORKeyStream (_aff ,_aff );return _aff ,nil ;};type stateLoader interface{loadState (_ccaa string )(reportState ,error );updateState (_bdf ,_dfbd ,_afd string ,_dc int ,_agd bool ,_ceb int ,_cgc int ,_cbg _ba .Time ,_bgg map[string ]int )error ;
};var _bgb =_ba .Date (2019,6,6,0,0,0,0,_ba .UTC );func init (){_edee :=_cb .Getenv (_degf );_efe :=_cb .Getenv (_cgga );if len (_edee )==0||len (_efe )==0{return ;};_acac ,_dfg :=_eb .ReadFile (_edee );if _dfg !=nil {_cc .Log .Error ("\u0055\u006eab\u006c\u0065\u0020t\u006f\u0020\u0072\u0065ad \u006cic\u0065\u006e\u0073\u0065\u0020\u0063\u006fde\u0020\u0066\u0069\u006c\u0065\u003a\u0020%\u0076",_dfg );
return ;};_dfg =SetLicenseKey (string (_acac ),_efe );if _dfg !=nil {_cc .Log .Error ("\u0055\u006e\u0061b\u006c\u0065\u0020\u0074o\u0020\u006c\u006f\u0061\u0064\u0020\u006ci\u0063\u0065\u006e\u0073\u0065\u0020\u0063\u006f\u0064\u0065\u003a\u0020\u0025\u0076",_dfg );
return ;};};func _gc (_cf string ,_dff []byte )(string ,error ){_fcc ,_ :=_ge .Decode ([]byte (_cf ));if _fcc ==nil {return "",_g .Errorf ("\u0050\u0072\u0069\u0076\u004b\u0065\u0079\u0020\u0066a\u0069\u006c\u0065\u0064");};_ae ,_ffg :=_aa .ParsePKCS1PrivateKey (_fcc .Bytes );
if _ffg !=nil {return "",_ffg ;};_cca :=_af .New ();_cca .Write (_dff );_bd :=_cca .Sum (nil );_ega ,_ffg :=_fe .SignPKCS1v15 (_df .Reader ,_ae ,_f .SHA512 ,_bd );if _ffg !=nil {return "",_ffg ;};_gca :=_bg .StdEncoding .EncodeToString (_dff );_gca +="\u000a\u002b\u000a";
_gca +=_bg .StdEncoding .EncodeToString (_ega );return _gca ,nil ;};func (_ede *LicenseKey )ToString ()string {if _ede ._fcf {return "M\u0065t\u0065\u0072\u0065\u0064\u0020\u0073\u0075\u0062s\u0063\u0072\u0069\u0070ti\u006f\u006e";};_dag :=_g .Sprintf ("\u004ci\u0063e\u006e\u0073\u0065\u0020\u0049\u0064\u003a\u0020\u0025\u0073\u000a",_ede .LicenseId );
_dag +=_g .Sprintf ("\u0043\u0075s\u0074\u006f\u006de\u0072\u0020\u0049\u0064\u003a\u0020\u0025\u0073\u000a",_ede .CustomerId );_dag +=_g .Sprintf ("\u0043u\u0073t\u006f\u006d\u0065\u0072\u0020N\u0061\u006de\u003a\u0020\u0025\u0073\u000a",_ede .CustomerName );
_dag +=_g .Sprintf ("\u0054i\u0065\u0072\u003a\u0020\u0025\u0073\n",_ede .Tier );_dag +=_g .Sprintf ("\u0043r\u0065a\u0074\u0065\u0064\u0020\u0041\u0074\u003a\u0020\u0025\u0073\u000a",_cc .UtcTimeFormat (_ede .CreatedAt ));if _ede .ExpiresAt ==nil {_dag +="\u0045x\u0070i\u0072\u0065\u0073\u0020\u0041t\u003a\u0020N\u0065\u0076\u0065\u0072\u000a";
}else {_dag +=_g .Sprintf ("\u0045x\u0070i\u0072\u0065\u0073\u0020\u0041\u0074\u003a\u0020\u0025\u0073\u000a",_cc .UtcTimeFormat (*_ede .ExpiresAt ));};_dag +=_g .Sprintf ("\u0043\u0072\u0065\u0061\u0074\u006f\u0072\u003a\u0020\u0025\u0073\u0020<\u0025\u0073\u003e\u000a",_ede .CreatorName ,_ede .CreatorEmail );
return _dag ;};func _efa (_dfb string ,_aab string ,_bbbf string )(string ,error ){_ab :=_d .Index (_bbbf ,_dfb );if _ab ==-1{return "",_g .Errorf ("\u0068\u0065a\u0064\u0065\u0072 \u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_ad :=_d .Index (_bbbf ,_aab );
if _ad ==-1{return "",_g .Errorf ("\u0066\u006fo\u0074\u0065\u0072 \u006e\u006f\u0074\u0020\u0066\u006f\u0075\u006e\u0064");};_aed :=_ab +len (_dfb )+1;return _bbbf [_aed :_ad -1],nil ;};var _fb =_ba .Date (2020,1,1,0,0,0,0,_ba .UTC );type reportState struct{Instance string `json:"inst"`;
Next string `json:"n"`;Docs int64 `json:"d"`;NumErrors int64 `json:"e"`;LimitDocs bool `json:"ld"`;RemainingDocs int64 `json:"rd"`;LastReported _ba .Time `json:"lr"`;LastWritten _ba .Time `json:"lw"`;Usage map[string ]int `json:"u"`;};var _dde =MakeUnlicensedKey ();