github.com/Onther-Tech/plasma-evm@v0.0.0-rc7.7/contracts/plasma/powerton/powerton.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package powerton
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	"github.com/Onther-Tech/plasma-evm"
    11  	"github.com/Onther-Tech/plasma-evm/accounts/abi"
    12  	"github.com/Onther-Tech/plasma-evm/accounts/abi/bind"
    13  	"github.com/Onther-Tech/plasma-evm/common"
    14  	"github.com/Onther-Tech/plasma-evm/core/types"
    15  	"github.com/Onther-Tech/plasma-evm/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = abi.U256
    24  	_ = bind.Bind
    25  	_ = common.Big1
    26  	_ = types.BloomLookup
    27  	_ = event.NewSubscription
    28  )
    29  
    30  // AddressABI is the input ABI used to generate the binding from.
    31  const AddressABI = "[]"
    32  
    33  // AddressBin is the compiled bytecode used for deploying new contracts.
    34  var AddressBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820caa83848f6f3a88a061ce398577e989d5da9a19232f9e00175de410a704b86e164736f6c634300050c0032"
    35  
    36  // DeployAddress deploys a new Ethereum contract, binding an instance of Address to it.
    37  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    38  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  
    43  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
    44  	if err != nil {
    45  		return common.Address{}, nil, nil, err
    46  	}
    47  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    48  }
    49  
    50  // Address is an auto generated Go binding around an Ethereum contract.
    51  type Address struct {
    52  	AddressCaller     // Read-only binding to the contract
    53  	AddressTransactor // Write-only binding to the contract
    54  	AddressFilterer   // Log filterer for contract events
    55  }
    56  
    57  // AddressCaller is an auto generated read-only Go binding around an Ethereum contract.
    58  type AddressCaller struct {
    59  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    60  }
    61  
    62  // AddressTransactor is an auto generated write-only Go binding around an Ethereum contract.
    63  type AddressTransactor struct {
    64  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    65  }
    66  
    67  // AddressFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    68  type AddressFilterer struct {
    69  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    70  }
    71  
    72  // AddressSession is an auto generated Go binding around an Ethereum contract,
    73  // with pre-set call and transact options.
    74  type AddressSession struct {
    75  	Contract     *Address          // Generic contract binding to set the session for
    76  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    77  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    78  }
    79  
    80  // AddressCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    81  // with pre-set call options.
    82  type AddressCallerSession struct {
    83  	Contract *AddressCaller // Generic contract caller binding to set the session for
    84  	CallOpts bind.CallOpts  // Call options to use throughout this session
    85  }
    86  
    87  // AddressTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    88  // with pre-set transact options.
    89  type AddressTransactorSession struct {
    90  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
    91  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    92  }
    93  
    94  // AddressRaw is an auto generated low-level Go binding around an Ethereum contract.
    95  type AddressRaw struct {
    96  	Contract *Address // Generic contract binding to access the raw methods on
    97  }
    98  
    99  // AddressCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   100  type AddressCallerRaw struct {
   101  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   102  }
   103  
   104  // AddressTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   105  type AddressTransactorRaw struct {
   106  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   107  }
   108  
   109  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   110  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   111  	contract, err := bindAddress(address, backend, backend, backend)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   116  }
   117  
   118  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   119  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   120  	contract, err := bindAddress(address, caller, nil, nil)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &AddressCaller{contract: contract}, nil
   125  }
   126  
   127  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   128  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   129  	contract, err := bindAddress(address, nil, transactor, nil)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  	return &AddressTransactor{contract: contract}, nil
   134  }
   135  
   136  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   137  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   138  	contract, err := bindAddress(address, nil, nil, filterer)
   139  	if err != nil {
   140  		return nil, err
   141  	}
   142  	return &AddressFilterer{contract: contract}, nil
   143  }
   144  
   145  // bindAddress binds a generic wrapper to an already deployed contract.
   146  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   147  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   148  	if err != nil {
   149  		return nil, err
   150  	}
   151  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   152  }
   153  
   154  // Call invokes the (constant) contract method with params as input values and
   155  // sets the output to result. The result type might be a single field for simple
   156  // returns, a slice of interfaces for anonymous returns and a struct for named
   157  // returns.
   158  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   159  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   160  }
   161  
   162  // Transfer initiates a plain transaction to move funds to the contract, calling
   163  // its default method if one is available.
   164  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   165  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   166  }
   167  
   168  // Transact invokes the (paid) contract method with params as input values.
   169  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   170  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   171  }
   172  
   173  // Call invokes the (constant) contract method with params as input values and
   174  // sets the output to result. The result type might be a single field for simple
   175  // returns, a slice of interfaces for anonymous returns and a struct for named
   176  // returns.
   177  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   178  	return _Address.Contract.contract.Call(opts, result, method, params...)
   179  }
   180  
   181  // Transfer initiates a plain transaction to move funds to the contract, calling
   182  // its default method if one is available.
   183  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   184  	return _Address.Contract.contract.Transfer(opts)
   185  }
   186  
   187  // Transact invokes the (paid) contract method with params as input values.
   188  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   189  	return _Address.Contract.contract.Transact(opts, method, params...)
   190  }
   191  
   192  // AuthControllerABI is the input ABI used to generate the binding from.
   193  const AuthControllerABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
   194  
   195  // AuthControllerFuncSigs maps the 4-byte function signature to its string representation.
   196  var AuthControllerFuncSigs = map[string]string{
   197  	"8f32d59b": "isOwner()",
   198  	"8da5cb5b": "owner()",
   199  	"5f112c68": "renounceMinter(address)",
   200  	"715018a6": "renounceOwnership()",
   201  	"38bf3cfa": "renounceOwnership(address)",
   202  	"41eb24bb": "renouncePauser(address)",
   203  	"f2fde38b": "transferOwnership(address)",
   204  	"6d435421": "transferOwnership(address,address)",
   205  }
   206  
   207  // AuthControllerBin is the compiled bytecode used for deploying new contracts.
   208  var AuthControllerBin = "0x608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b61062f806100796000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063715018a61161005b578063715018a61461012f5780638da5cb5b146101375780638f32d59b1461015b578063f2fde38b1461017757610088565b806338bf3cfa1461008d57806341eb24bb146100b55780635f112c68146100db5780636d43542114610101575b600080fd5b6100b3600480360360208110156100a357600080fd5b50356001600160a01b031661019d565b005b6100b3600480360360208110156100cb57600080fd5b50356001600160a01b031661023a565b6100b3600480360360208110156100f157600080fd5b50356001600160a01b03166102bc565b6100b36004803603604081101561011757600080fd5b506001600160a01b038135811691602001351661033e565b6100b36103f9565b61013f61048a565b604080516001600160a01b039092168252519081900360200190f35b610163610499565b604080519115158252519081900360200190f35b6100b36004803603602081101561018d57600080fd5b50356001600160a01b03166104bd565b6101a5610499565b6101e4576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561021f57600080fd5b505af1158015610233573d6000803e3d6000fd5b5050505050565b610242610499565b610281576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b806001600160a01b0316636ef8d66d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561021f57600080fd5b6102c4610499565b610303576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561021f57600080fd5b610346610499565b610385576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b1580156103dd57600080fd5b505af11580156103f1573d6000803e3d6000fd5b505050505050565b610401610499565b610440576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600080546001600160a01b03166104ae610510565b6001600160a01b031614905090565b6104c5610499565b610504576040805162461bcd60e51b815260206004820181905260248201526000805160206105db833981519152604482015290519081900360640190fd5b61050d81610514565b50565b3390565b6001600160a01b0381166105595760405162461bcd60e51b81526004018080602001828103825260268152602001806105b56026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a72315820f5dbf027aa9fb336aafe169eae7ece5653dd467fdb8b8d677f8775fa7b10105264736f6c634300050c0032"
   209  
   210  // DeployAuthController deploys a new Ethereum contract, binding an instance of AuthController to it.
   211  func DeployAuthController(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *AuthController, error) {
   212  	parsed, err := abi.JSON(strings.NewReader(AuthControllerABI))
   213  	if err != nil {
   214  		return common.Address{}, nil, nil, err
   215  	}
   216  
   217  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AuthControllerBin), backend)
   218  	if err != nil {
   219  		return common.Address{}, nil, nil, err
   220  	}
   221  	return address, tx, &AuthController{AuthControllerCaller: AuthControllerCaller{contract: contract}, AuthControllerTransactor: AuthControllerTransactor{contract: contract}, AuthControllerFilterer: AuthControllerFilterer{contract: contract}}, nil
   222  }
   223  
   224  // AuthController is an auto generated Go binding around an Ethereum contract.
   225  type AuthController struct {
   226  	AuthControllerCaller     // Read-only binding to the contract
   227  	AuthControllerTransactor // Write-only binding to the contract
   228  	AuthControllerFilterer   // Log filterer for contract events
   229  }
   230  
   231  // AuthControllerCaller is an auto generated read-only Go binding around an Ethereum contract.
   232  type AuthControllerCaller struct {
   233  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   234  }
   235  
   236  // AuthControllerTransactor is an auto generated write-only Go binding around an Ethereum contract.
   237  type AuthControllerTransactor struct {
   238  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   239  }
   240  
   241  // AuthControllerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   242  type AuthControllerFilterer struct {
   243  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   244  }
   245  
   246  // AuthControllerSession is an auto generated Go binding around an Ethereum contract,
   247  // with pre-set call and transact options.
   248  type AuthControllerSession struct {
   249  	Contract     *AuthController   // Generic contract binding to set the session for
   250  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   251  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   252  }
   253  
   254  // AuthControllerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   255  // with pre-set call options.
   256  type AuthControllerCallerSession struct {
   257  	Contract *AuthControllerCaller // Generic contract caller binding to set the session for
   258  	CallOpts bind.CallOpts         // Call options to use throughout this session
   259  }
   260  
   261  // AuthControllerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   262  // with pre-set transact options.
   263  type AuthControllerTransactorSession struct {
   264  	Contract     *AuthControllerTransactor // Generic contract transactor binding to set the session for
   265  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
   266  }
   267  
   268  // AuthControllerRaw is an auto generated low-level Go binding around an Ethereum contract.
   269  type AuthControllerRaw struct {
   270  	Contract *AuthController // Generic contract binding to access the raw methods on
   271  }
   272  
   273  // AuthControllerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   274  type AuthControllerCallerRaw struct {
   275  	Contract *AuthControllerCaller // Generic read-only contract binding to access the raw methods on
   276  }
   277  
   278  // AuthControllerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   279  type AuthControllerTransactorRaw struct {
   280  	Contract *AuthControllerTransactor // Generic write-only contract binding to access the raw methods on
   281  }
   282  
   283  // NewAuthController creates a new instance of AuthController, bound to a specific deployed contract.
   284  func NewAuthController(address common.Address, backend bind.ContractBackend) (*AuthController, error) {
   285  	contract, err := bindAuthController(address, backend, backend, backend)
   286  	if err != nil {
   287  		return nil, err
   288  	}
   289  	return &AuthController{AuthControllerCaller: AuthControllerCaller{contract: contract}, AuthControllerTransactor: AuthControllerTransactor{contract: contract}, AuthControllerFilterer: AuthControllerFilterer{contract: contract}}, nil
   290  }
   291  
   292  // NewAuthControllerCaller creates a new read-only instance of AuthController, bound to a specific deployed contract.
   293  func NewAuthControllerCaller(address common.Address, caller bind.ContractCaller) (*AuthControllerCaller, error) {
   294  	contract, err := bindAuthController(address, caller, nil, nil)
   295  	if err != nil {
   296  		return nil, err
   297  	}
   298  	return &AuthControllerCaller{contract: contract}, nil
   299  }
   300  
   301  // NewAuthControllerTransactor creates a new write-only instance of AuthController, bound to a specific deployed contract.
   302  func NewAuthControllerTransactor(address common.Address, transactor bind.ContractTransactor) (*AuthControllerTransactor, error) {
   303  	contract, err := bindAuthController(address, nil, transactor, nil)
   304  	if err != nil {
   305  		return nil, err
   306  	}
   307  	return &AuthControllerTransactor{contract: contract}, nil
   308  }
   309  
   310  // NewAuthControllerFilterer creates a new log filterer instance of AuthController, bound to a specific deployed contract.
   311  func NewAuthControllerFilterer(address common.Address, filterer bind.ContractFilterer) (*AuthControllerFilterer, error) {
   312  	contract, err := bindAuthController(address, nil, nil, filterer)
   313  	if err != nil {
   314  		return nil, err
   315  	}
   316  	return &AuthControllerFilterer{contract: contract}, nil
   317  }
   318  
   319  // bindAuthController binds a generic wrapper to an already deployed contract.
   320  func bindAuthController(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   321  	parsed, err := abi.JSON(strings.NewReader(AuthControllerABI))
   322  	if err != nil {
   323  		return nil, err
   324  	}
   325  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   326  }
   327  
   328  // Call invokes the (constant) contract method with params as input values and
   329  // sets the output to result. The result type might be a single field for simple
   330  // returns, a slice of interfaces for anonymous returns and a struct for named
   331  // returns.
   332  func (_AuthController *AuthControllerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   333  	return _AuthController.Contract.AuthControllerCaller.contract.Call(opts, result, method, params...)
   334  }
   335  
   336  // Transfer initiates a plain transaction to move funds to the contract, calling
   337  // its default method if one is available.
   338  func (_AuthController *AuthControllerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   339  	return _AuthController.Contract.AuthControllerTransactor.contract.Transfer(opts)
   340  }
   341  
   342  // Transact invokes the (paid) contract method with params as input values.
   343  func (_AuthController *AuthControllerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   344  	return _AuthController.Contract.AuthControllerTransactor.contract.Transact(opts, method, params...)
   345  }
   346  
   347  // Call invokes the (constant) contract method with params as input values and
   348  // sets the output to result. The result type might be a single field for simple
   349  // returns, a slice of interfaces for anonymous returns and a struct for named
   350  // returns.
   351  func (_AuthController *AuthControllerCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   352  	return _AuthController.Contract.contract.Call(opts, result, method, params...)
   353  }
   354  
   355  // Transfer initiates a plain transaction to move funds to the contract, calling
   356  // its default method if one is available.
   357  func (_AuthController *AuthControllerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   358  	return _AuthController.Contract.contract.Transfer(opts)
   359  }
   360  
   361  // Transact invokes the (paid) contract method with params as input values.
   362  func (_AuthController *AuthControllerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   363  	return _AuthController.Contract.contract.Transact(opts, method, params...)
   364  }
   365  
   366  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   367  //
   368  // Solidity: function isOwner() constant returns(bool)
   369  func (_AuthController *AuthControllerCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
   370  	var (
   371  		ret0 = new(bool)
   372  	)
   373  	out := ret0
   374  	err := _AuthController.contract.Call(opts, out, "isOwner")
   375  	return *ret0, err
   376  }
   377  
   378  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   379  //
   380  // Solidity: function isOwner() constant returns(bool)
   381  func (_AuthController *AuthControllerSession) IsOwner() (bool, error) {
   382  	return _AuthController.Contract.IsOwner(&_AuthController.CallOpts)
   383  }
   384  
   385  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
   386  //
   387  // Solidity: function isOwner() constant returns(bool)
   388  func (_AuthController *AuthControllerCallerSession) IsOwner() (bool, error) {
   389  	return _AuthController.Contract.IsOwner(&_AuthController.CallOpts)
   390  }
   391  
   392  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   393  //
   394  // Solidity: function owner() constant returns(address)
   395  func (_AuthController *AuthControllerCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
   396  	var (
   397  		ret0 = new(common.Address)
   398  	)
   399  	out := ret0
   400  	err := _AuthController.contract.Call(opts, out, "owner")
   401  	return *ret0, err
   402  }
   403  
   404  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   405  //
   406  // Solidity: function owner() constant returns(address)
   407  func (_AuthController *AuthControllerSession) Owner() (common.Address, error) {
   408  	return _AuthController.Contract.Owner(&_AuthController.CallOpts)
   409  }
   410  
   411  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
   412  //
   413  // Solidity: function owner() constant returns(address)
   414  func (_AuthController *AuthControllerCallerSession) Owner() (common.Address, error) {
   415  	return _AuthController.Contract.Owner(&_AuthController.CallOpts)
   416  }
   417  
   418  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
   419  //
   420  // Solidity: function renounceMinter(address target) returns()
   421  func (_AuthController *AuthControllerTransactor) RenounceMinter(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
   422  	return _AuthController.contract.Transact(opts, "renounceMinter", target)
   423  }
   424  
   425  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
   426  //
   427  // Solidity: function renounceMinter(address target) returns()
   428  func (_AuthController *AuthControllerSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
   429  	return _AuthController.Contract.RenounceMinter(&_AuthController.TransactOpts, target)
   430  }
   431  
   432  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
   433  //
   434  // Solidity: function renounceMinter(address target) returns()
   435  func (_AuthController *AuthControllerTransactorSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
   436  	return _AuthController.Contract.RenounceMinter(&_AuthController.TransactOpts, target)
   437  }
   438  
   439  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
   440  //
   441  // Solidity: function renounceOwnership(address target) returns()
   442  func (_AuthController *AuthControllerTransactor) RenounceOwnership(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
   443  	return _AuthController.contract.Transact(opts, "renounceOwnership", target)
   444  }
   445  
   446  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
   447  //
   448  // Solidity: function renounceOwnership(address target) returns()
   449  func (_AuthController *AuthControllerSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
   450  	return _AuthController.Contract.RenounceOwnership(&_AuthController.TransactOpts, target)
   451  }
   452  
   453  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
   454  //
   455  // Solidity: function renounceOwnership(address target) returns()
   456  func (_AuthController *AuthControllerTransactorSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
   457  	return _AuthController.Contract.RenounceOwnership(&_AuthController.TransactOpts, target)
   458  }
   459  
   460  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
   461  //
   462  // Solidity: function renounceOwnership() returns()
   463  func (_AuthController *AuthControllerTransactor) RenounceOwnership0(opts *bind.TransactOpts) (*types.Transaction, error) {
   464  	return _AuthController.contract.Transact(opts, "renounceOwnership0")
   465  }
   466  
   467  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
   468  //
   469  // Solidity: function renounceOwnership() returns()
   470  func (_AuthController *AuthControllerSession) RenounceOwnership0() (*types.Transaction, error) {
   471  	return _AuthController.Contract.RenounceOwnership0(&_AuthController.TransactOpts)
   472  }
   473  
   474  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
   475  //
   476  // Solidity: function renounceOwnership() returns()
   477  func (_AuthController *AuthControllerTransactorSession) RenounceOwnership0() (*types.Transaction, error) {
   478  	return _AuthController.Contract.RenounceOwnership0(&_AuthController.TransactOpts)
   479  }
   480  
   481  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
   482  //
   483  // Solidity: function renouncePauser(address target) returns()
   484  func (_AuthController *AuthControllerTransactor) RenouncePauser(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
   485  	return _AuthController.contract.Transact(opts, "renouncePauser", target)
   486  }
   487  
   488  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
   489  //
   490  // Solidity: function renouncePauser(address target) returns()
   491  func (_AuthController *AuthControllerSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
   492  	return _AuthController.Contract.RenouncePauser(&_AuthController.TransactOpts, target)
   493  }
   494  
   495  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
   496  //
   497  // Solidity: function renouncePauser(address target) returns()
   498  func (_AuthController *AuthControllerTransactorSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
   499  	return _AuthController.Contract.RenouncePauser(&_AuthController.TransactOpts, target)
   500  }
   501  
   502  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
   503  //
   504  // Solidity: function transferOwnership(address target, address newOwner) returns()
   505  func (_AuthController *AuthControllerTransactor) TransferOwnership(opts *bind.TransactOpts, target common.Address, newOwner common.Address) (*types.Transaction, error) {
   506  	return _AuthController.contract.Transact(opts, "transferOwnership", target, newOwner)
   507  }
   508  
   509  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
   510  //
   511  // Solidity: function transferOwnership(address target, address newOwner) returns()
   512  func (_AuthController *AuthControllerSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
   513  	return _AuthController.Contract.TransferOwnership(&_AuthController.TransactOpts, target, newOwner)
   514  }
   515  
   516  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
   517  //
   518  // Solidity: function transferOwnership(address target, address newOwner) returns()
   519  func (_AuthController *AuthControllerTransactorSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
   520  	return _AuthController.Contract.TransferOwnership(&_AuthController.TransactOpts, target, newOwner)
   521  }
   522  
   523  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
   524  //
   525  // Solidity: function transferOwnership(address newOwner) returns()
   526  func (_AuthController *AuthControllerTransactor) TransferOwnership0(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
   527  	return _AuthController.contract.Transact(opts, "transferOwnership0", newOwner)
   528  }
   529  
   530  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
   531  //
   532  // Solidity: function transferOwnership(address newOwner) returns()
   533  func (_AuthController *AuthControllerSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
   534  	return _AuthController.Contract.TransferOwnership0(&_AuthController.TransactOpts, newOwner)
   535  }
   536  
   537  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
   538  //
   539  // Solidity: function transferOwnership(address newOwner) returns()
   540  func (_AuthController *AuthControllerTransactorSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
   541  	return _AuthController.Contract.TransferOwnership0(&_AuthController.TransactOpts, newOwner)
   542  }
   543  
   544  // AuthControllerOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the AuthController contract.
   545  type AuthControllerOwnershipTransferredIterator struct {
   546  	Event *AuthControllerOwnershipTransferred // Event containing the contract specifics and raw log
   547  
   548  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   549  	event    string              // Event name to use for unpacking event data
   550  
   551  	logs chan types.Log        // Log channel receiving the found contract events
   552  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   553  	done bool                  // Whether the subscription completed delivering logs
   554  	fail error                 // Occurred error to stop iteration
   555  }
   556  
   557  // Next advances the iterator to the subsequent event, returning whether there
   558  // are any more events found. In case of a retrieval or parsing error, false is
   559  // returned and Error() can be queried for the exact failure.
   560  func (it *AuthControllerOwnershipTransferredIterator) Next() bool {
   561  	// If the iterator failed, stop iterating
   562  	if it.fail != nil {
   563  		return false
   564  	}
   565  	// If the iterator completed, deliver directly whatever's available
   566  	if it.done {
   567  		select {
   568  		case log := <-it.logs:
   569  			it.Event = new(AuthControllerOwnershipTransferred)
   570  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   571  				it.fail = err
   572  				return false
   573  			}
   574  			it.Event.Raw = log
   575  			return true
   576  
   577  		default:
   578  			return false
   579  		}
   580  	}
   581  	// Iterator still in progress, wait for either a data or an error event
   582  	select {
   583  	case log := <-it.logs:
   584  		it.Event = new(AuthControllerOwnershipTransferred)
   585  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   586  			it.fail = err
   587  			return false
   588  		}
   589  		it.Event.Raw = log
   590  		return true
   591  
   592  	case err := <-it.sub.Err():
   593  		it.done = true
   594  		it.fail = err
   595  		return it.Next()
   596  	}
   597  }
   598  
   599  // Error returns any retrieval or parsing error occurred during filtering.
   600  func (it *AuthControllerOwnershipTransferredIterator) Error() error {
   601  	return it.fail
   602  }
   603  
   604  // Close terminates the iteration process, releasing any pending underlying
   605  // resources.
   606  func (it *AuthControllerOwnershipTransferredIterator) Close() error {
   607  	it.sub.Unsubscribe()
   608  	return nil
   609  }
   610  
   611  // AuthControllerOwnershipTransferred represents a OwnershipTransferred event raised by the AuthController contract.
   612  type AuthControllerOwnershipTransferred struct {
   613  	PreviousOwner common.Address
   614  	NewOwner      common.Address
   615  	Raw           types.Log // Blockchain specific contextual infos
   616  }
   617  
   618  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   619  //
   620  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   621  func (_AuthController *AuthControllerFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*AuthControllerOwnershipTransferredIterator, error) {
   622  
   623  	var previousOwnerRule []interface{}
   624  	for _, previousOwnerItem := range previousOwner {
   625  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
   626  	}
   627  	var newOwnerRule []interface{}
   628  	for _, newOwnerItem := range newOwner {
   629  		newOwnerRule = append(newOwnerRule, newOwnerItem)
   630  	}
   631  
   632  	logs, sub, err := _AuthController.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
   633  	if err != nil {
   634  		return nil, err
   635  	}
   636  	return &AuthControllerOwnershipTransferredIterator{contract: _AuthController.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
   637  }
   638  
   639  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   640  //
   641  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   642  func (_AuthController *AuthControllerFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *AuthControllerOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
   643  
   644  	var previousOwnerRule []interface{}
   645  	for _, previousOwnerItem := range previousOwner {
   646  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
   647  	}
   648  	var newOwnerRule []interface{}
   649  	for _, newOwnerItem := range newOwner {
   650  		newOwnerRule = append(newOwnerRule, newOwnerItem)
   651  	}
   652  
   653  	logs, sub, err := _AuthController.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
   654  	if err != nil {
   655  		return nil, err
   656  	}
   657  	return event.NewSubscription(func(quit <-chan struct{}) error {
   658  		defer sub.Unsubscribe()
   659  		for {
   660  			select {
   661  			case log := <-logs:
   662  				// New log arrived, parse the event and forward to the user
   663  				event := new(AuthControllerOwnershipTransferred)
   664  				if err := _AuthController.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
   665  					return err
   666  				}
   667  				event.Raw = log
   668  
   669  				select {
   670  				case sink <- event:
   671  				case err := <-sub.Err():
   672  					return err
   673  				case <-quit:
   674  					return nil
   675  				}
   676  			case err := <-sub.Err():
   677  				return err
   678  			case <-quit:
   679  				return nil
   680  			}
   681  		}
   682  	}), nil
   683  }
   684  
   685  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
   686  //
   687  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
   688  func (_AuthController *AuthControllerFilterer) ParseOwnershipTransferred(log types.Log) (*AuthControllerOwnershipTransferred, error) {
   689  	event := new(AuthControllerOwnershipTransferred)
   690  	if err := _AuthController.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
   691  		return nil, err
   692  	}
   693  	return event, nil
   694  }
   695  
   696  // ContextABI is the input ABI used to generate the binding from.
   697  const ContextABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
   698  
   699  // Context is an auto generated Go binding around an Ethereum contract.
   700  type Context struct {
   701  	ContextCaller     // Read-only binding to the contract
   702  	ContextTransactor // Write-only binding to the contract
   703  	ContextFilterer   // Log filterer for contract events
   704  }
   705  
   706  // ContextCaller is an auto generated read-only Go binding around an Ethereum contract.
   707  type ContextCaller struct {
   708  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   709  }
   710  
   711  // ContextTransactor is an auto generated write-only Go binding around an Ethereum contract.
   712  type ContextTransactor struct {
   713  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   714  }
   715  
   716  // ContextFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   717  type ContextFilterer struct {
   718  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   719  }
   720  
   721  // ContextSession is an auto generated Go binding around an Ethereum contract,
   722  // with pre-set call and transact options.
   723  type ContextSession struct {
   724  	Contract     *Context          // Generic contract binding to set the session for
   725  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   726  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   727  }
   728  
   729  // ContextCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   730  // with pre-set call options.
   731  type ContextCallerSession struct {
   732  	Contract *ContextCaller // Generic contract caller binding to set the session for
   733  	CallOpts bind.CallOpts  // Call options to use throughout this session
   734  }
   735  
   736  // ContextTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   737  // with pre-set transact options.
   738  type ContextTransactorSession struct {
   739  	Contract     *ContextTransactor // Generic contract transactor binding to set the session for
   740  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   741  }
   742  
   743  // ContextRaw is an auto generated low-level Go binding around an Ethereum contract.
   744  type ContextRaw struct {
   745  	Contract *Context // Generic contract binding to access the raw methods on
   746  }
   747  
   748  // ContextCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   749  type ContextCallerRaw struct {
   750  	Contract *ContextCaller // Generic read-only contract binding to access the raw methods on
   751  }
   752  
   753  // ContextTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   754  type ContextTransactorRaw struct {
   755  	Contract *ContextTransactor // Generic write-only contract binding to access the raw methods on
   756  }
   757  
   758  // NewContext creates a new instance of Context, bound to a specific deployed contract.
   759  func NewContext(address common.Address, backend bind.ContractBackend) (*Context, error) {
   760  	contract, err := bindContext(address, backend, backend, backend)
   761  	if err != nil {
   762  		return nil, err
   763  	}
   764  	return &Context{ContextCaller: ContextCaller{contract: contract}, ContextTransactor: ContextTransactor{contract: contract}, ContextFilterer: ContextFilterer{contract: contract}}, nil
   765  }
   766  
   767  // NewContextCaller creates a new read-only instance of Context, bound to a specific deployed contract.
   768  func NewContextCaller(address common.Address, caller bind.ContractCaller) (*ContextCaller, error) {
   769  	contract, err := bindContext(address, caller, nil, nil)
   770  	if err != nil {
   771  		return nil, err
   772  	}
   773  	return &ContextCaller{contract: contract}, nil
   774  }
   775  
   776  // NewContextTransactor creates a new write-only instance of Context, bound to a specific deployed contract.
   777  func NewContextTransactor(address common.Address, transactor bind.ContractTransactor) (*ContextTransactor, error) {
   778  	contract, err := bindContext(address, nil, transactor, nil)
   779  	if err != nil {
   780  		return nil, err
   781  	}
   782  	return &ContextTransactor{contract: contract}, nil
   783  }
   784  
   785  // NewContextFilterer creates a new log filterer instance of Context, bound to a specific deployed contract.
   786  func NewContextFilterer(address common.Address, filterer bind.ContractFilterer) (*ContextFilterer, error) {
   787  	contract, err := bindContext(address, nil, nil, filterer)
   788  	if err != nil {
   789  		return nil, err
   790  	}
   791  	return &ContextFilterer{contract: contract}, nil
   792  }
   793  
   794  // bindContext binds a generic wrapper to an already deployed contract.
   795  func bindContext(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   796  	parsed, err := abi.JSON(strings.NewReader(ContextABI))
   797  	if err != nil {
   798  		return nil, err
   799  	}
   800  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   801  }
   802  
   803  // Call invokes the (constant) contract method with params as input values and
   804  // sets the output to result. The result type might be a single field for simple
   805  // returns, a slice of interfaces for anonymous returns and a struct for named
   806  // returns.
   807  func (_Context *ContextRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   808  	return _Context.Contract.ContextCaller.contract.Call(opts, result, method, params...)
   809  }
   810  
   811  // Transfer initiates a plain transaction to move funds to the contract, calling
   812  // its default method if one is available.
   813  func (_Context *ContextRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   814  	return _Context.Contract.ContextTransactor.contract.Transfer(opts)
   815  }
   816  
   817  // Transact invokes the (paid) contract method with params as input values.
   818  func (_Context *ContextRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   819  	return _Context.Contract.ContextTransactor.contract.Transact(opts, method, params...)
   820  }
   821  
   822  // Call invokes the (constant) contract method with params as input values and
   823  // sets the output to result. The result type might be a single field for simple
   824  // returns, a slice of interfaces for anonymous returns and a struct for named
   825  // returns.
   826  func (_Context *ContextCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   827  	return _Context.Contract.contract.Call(opts, result, method, params...)
   828  }
   829  
   830  // Transfer initiates a plain transaction to move funds to the contract, calling
   831  // its default method if one is available.
   832  func (_Context *ContextTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   833  	return _Context.Contract.contract.Transfer(opts)
   834  }
   835  
   836  // Transact invokes the (paid) contract method with params as input values.
   837  func (_Context *ContextTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   838  	return _Context.Contract.contract.Transact(opts, method, params...)
   839  }
   840  
   841  // DSMathABI is the input ABI used to generate the binding from.
   842  const DSMathABI = "[]"
   843  
   844  // DSMathBin is the compiled bytecode used for deploying new contracts.
   845  var DSMathBin = "0x6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158201d3383a4efea7d4c911511edcc2240f991199f32cf3b3c855dd9ffb45f3f45a164736f6c634300050c0032"
   846  
   847  // DeployDSMath deploys a new Ethereum contract, binding an instance of DSMath to it.
   848  func DeployDSMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *DSMath, error) {
   849  	parsed, err := abi.JSON(strings.NewReader(DSMathABI))
   850  	if err != nil {
   851  		return common.Address{}, nil, nil, err
   852  	}
   853  
   854  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(DSMathBin), backend)
   855  	if err != nil {
   856  		return common.Address{}, nil, nil, err
   857  	}
   858  	return address, tx, &DSMath{DSMathCaller: DSMathCaller{contract: contract}, DSMathTransactor: DSMathTransactor{contract: contract}, DSMathFilterer: DSMathFilterer{contract: contract}}, nil
   859  }
   860  
   861  // DSMath is an auto generated Go binding around an Ethereum contract.
   862  type DSMath struct {
   863  	DSMathCaller     // Read-only binding to the contract
   864  	DSMathTransactor // Write-only binding to the contract
   865  	DSMathFilterer   // Log filterer for contract events
   866  }
   867  
   868  // DSMathCaller is an auto generated read-only Go binding around an Ethereum contract.
   869  type DSMathCaller struct {
   870  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   871  }
   872  
   873  // DSMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
   874  type DSMathTransactor struct {
   875  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   876  }
   877  
   878  // DSMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
   879  type DSMathFilterer struct {
   880  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   881  }
   882  
   883  // DSMathSession is an auto generated Go binding around an Ethereum contract,
   884  // with pre-set call and transact options.
   885  type DSMathSession struct {
   886  	Contract     *DSMath           // Generic contract binding to set the session for
   887  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   888  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   889  }
   890  
   891  // DSMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
   892  // with pre-set call options.
   893  type DSMathCallerSession struct {
   894  	Contract *DSMathCaller // Generic contract caller binding to set the session for
   895  	CallOpts bind.CallOpts // Call options to use throughout this session
   896  }
   897  
   898  // DSMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
   899  // with pre-set transact options.
   900  type DSMathTransactorSession struct {
   901  	Contract     *DSMathTransactor // Generic contract transactor binding to set the session for
   902  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   903  }
   904  
   905  // DSMathRaw is an auto generated low-level Go binding around an Ethereum contract.
   906  type DSMathRaw struct {
   907  	Contract *DSMath // Generic contract binding to access the raw methods on
   908  }
   909  
   910  // DSMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   911  type DSMathCallerRaw struct {
   912  	Contract *DSMathCaller // Generic read-only contract binding to access the raw methods on
   913  }
   914  
   915  // DSMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   916  type DSMathTransactorRaw struct {
   917  	Contract *DSMathTransactor // Generic write-only contract binding to access the raw methods on
   918  }
   919  
   920  // NewDSMath creates a new instance of DSMath, bound to a specific deployed contract.
   921  func NewDSMath(address common.Address, backend bind.ContractBackend) (*DSMath, error) {
   922  	contract, err := bindDSMath(address, backend, backend, backend)
   923  	if err != nil {
   924  		return nil, err
   925  	}
   926  	return &DSMath{DSMathCaller: DSMathCaller{contract: contract}, DSMathTransactor: DSMathTransactor{contract: contract}, DSMathFilterer: DSMathFilterer{contract: contract}}, nil
   927  }
   928  
   929  // NewDSMathCaller creates a new read-only instance of DSMath, bound to a specific deployed contract.
   930  func NewDSMathCaller(address common.Address, caller bind.ContractCaller) (*DSMathCaller, error) {
   931  	contract, err := bindDSMath(address, caller, nil, nil)
   932  	if err != nil {
   933  		return nil, err
   934  	}
   935  	return &DSMathCaller{contract: contract}, nil
   936  }
   937  
   938  // NewDSMathTransactor creates a new write-only instance of DSMath, bound to a specific deployed contract.
   939  func NewDSMathTransactor(address common.Address, transactor bind.ContractTransactor) (*DSMathTransactor, error) {
   940  	contract, err := bindDSMath(address, nil, transactor, nil)
   941  	if err != nil {
   942  		return nil, err
   943  	}
   944  	return &DSMathTransactor{contract: contract}, nil
   945  }
   946  
   947  // NewDSMathFilterer creates a new log filterer instance of DSMath, bound to a specific deployed contract.
   948  func NewDSMathFilterer(address common.Address, filterer bind.ContractFilterer) (*DSMathFilterer, error) {
   949  	contract, err := bindDSMath(address, nil, nil, filterer)
   950  	if err != nil {
   951  		return nil, err
   952  	}
   953  	return &DSMathFilterer{contract: contract}, nil
   954  }
   955  
   956  // bindDSMath binds a generic wrapper to an already deployed contract.
   957  func bindDSMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   958  	parsed, err := abi.JSON(strings.NewReader(DSMathABI))
   959  	if err != nil {
   960  		return nil, err
   961  	}
   962  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   963  }
   964  
   965  // Call invokes the (constant) contract method with params as input values and
   966  // sets the output to result. The result type might be a single field for simple
   967  // returns, a slice of interfaces for anonymous returns and a struct for named
   968  // returns.
   969  func (_DSMath *DSMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   970  	return _DSMath.Contract.DSMathCaller.contract.Call(opts, result, method, params...)
   971  }
   972  
   973  // Transfer initiates a plain transaction to move funds to the contract, calling
   974  // its default method if one is available.
   975  func (_DSMath *DSMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   976  	return _DSMath.Contract.DSMathTransactor.contract.Transfer(opts)
   977  }
   978  
   979  // Transact invokes the (paid) contract method with params as input values.
   980  func (_DSMath *DSMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   981  	return _DSMath.Contract.DSMathTransactor.contract.Transact(opts, method, params...)
   982  }
   983  
   984  // Call invokes the (constant) contract method with params as input values and
   985  // sets the output to result. The result type might be a single field for simple
   986  // returns, a slice of interfaces for anonymous returns and a struct for named
   987  // returns.
   988  func (_DSMath *DSMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   989  	return _DSMath.Contract.contract.Call(opts, result, method, params...)
   990  }
   991  
   992  // Transfer initiates a plain transaction to move funds to the contract, calling
   993  // its default method if one is available.
   994  func (_DSMath *DSMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   995  	return _DSMath.Contract.contract.Transfer(opts)
   996  }
   997  
   998  // Transact invokes the (paid) contract method with params as input values.
   999  func (_DSMath *DSMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1000  	return _DSMath.Contract.contract.Transact(opts, method, params...)
  1001  }
  1002  
  1003  // DepositManagerIABI is the input ABI used to generate the binding from.
  1004  const DepositManagerIABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"WITHDRAWAL_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accStaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accStakedAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"accStakedRootChain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accUnstaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"accUnstakedAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"accUnstakedRootChain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"numPendingRequests\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"numRequests\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingUnstaked\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"pendingUnstakedAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"pendingUnstakedRootChain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"processRequest\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"n\",\"type\":\"uint256\"}],\"name\":\"processRequests\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"requestWithdrawal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"requestWithdrawalAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"seigManager\",\"type\":\"address\"}],\"name\":\"setSeigManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"withdrawalRequest\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"withdrawableBlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"bool\",\"name\":\"processed\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"withdrawalRequestIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"wton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  1005  
  1006  // DepositManagerIFuncSigs maps the 4-byte function signature to its string representation.
  1007  var DepositManagerIFuncSigs = map[string]string{
  1008  	"0ebb172a": "WITHDRAWAL_DELAY()",
  1009  	"2d2fab94": "accStaked(address,address)",
  1010  	"0055f5c1": "accStakedAccount(address)",
  1011  	"e8035ec9": "accStakedRootChain(address)",
  1012  	"9d91b87b": "accUnstaked(address,address)",
  1013  	"a3543989": "accUnstakedAccount(address)",
  1014  	"03dc6510": "accUnstakedRootChain(address)",
  1015  	"47e7ef24": "deposit(address,uint256)",
  1016  	"5c0df46b": "numPendingRequests(address,address)",
  1017  	"f762eb57": "numRequests(address,address)",
  1018  	"8da5cb5b": "owner()",
  1019  	"2638fdf5": "pendingUnstaked(address,address)",
  1020  	"a0b2a913": "pendingUnstakedAccount(address)",
  1021  	"a8f3fb98": "pendingUnstakedRootChain(address)",
  1022  	"5d6f7cca": "processRequest(address)",
  1023  	"06260ceb": "processRequests(address,uint256)",
  1024  	"7b103999": "registry()",
  1025  	"da95ebf7": "requestWithdrawal(address,uint256)",
  1026  	"6b2160b7": "requestWithdrawalAll(address)",
  1027  	"6fb7f558": "seigManager()",
  1028  	"7657f20a": "setSeigManager(address)",
  1029  	"8fbef2d0": "withdrawalRequest(address,address,uint256)",
  1030  	"c647f26e": "withdrawalRequestIndex(address,address)",
  1031  	"8d62d949": "wton()",
  1032  }
  1033  
  1034  // DepositManagerI is an auto generated Go binding around an Ethereum contract.
  1035  type DepositManagerI struct {
  1036  	DepositManagerICaller     // Read-only binding to the contract
  1037  	DepositManagerITransactor // Write-only binding to the contract
  1038  	DepositManagerIFilterer   // Log filterer for contract events
  1039  }
  1040  
  1041  // DepositManagerICaller is an auto generated read-only Go binding around an Ethereum contract.
  1042  type DepositManagerICaller struct {
  1043  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1044  }
  1045  
  1046  // DepositManagerITransactor is an auto generated write-only Go binding around an Ethereum contract.
  1047  type DepositManagerITransactor struct {
  1048  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1049  }
  1050  
  1051  // DepositManagerIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1052  type DepositManagerIFilterer struct {
  1053  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1054  }
  1055  
  1056  // DepositManagerISession is an auto generated Go binding around an Ethereum contract,
  1057  // with pre-set call and transact options.
  1058  type DepositManagerISession struct {
  1059  	Contract     *DepositManagerI  // Generic contract binding to set the session for
  1060  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1061  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1062  }
  1063  
  1064  // DepositManagerICallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1065  // with pre-set call options.
  1066  type DepositManagerICallerSession struct {
  1067  	Contract *DepositManagerICaller // Generic contract caller binding to set the session for
  1068  	CallOpts bind.CallOpts          // Call options to use throughout this session
  1069  }
  1070  
  1071  // DepositManagerITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1072  // with pre-set transact options.
  1073  type DepositManagerITransactorSession struct {
  1074  	Contract     *DepositManagerITransactor // Generic contract transactor binding to set the session for
  1075  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
  1076  }
  1077  
  1078  // DepositManagerIRaw is an auto generated low-level Go binding around an Ethereum contract.
  1079  type DepositManagerIRaw struct {
  1080  	Contract *DepositManagerI // Generic contract binding to access the raw methods on
  1081  }
  1082  
  1083  // DepositManagerICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1084  type DepositManagerICallerRaw struct {
  1085  	Contract *DepositManagerICaller // Generic read-only contract binding to access the raw methods on
  1086  }
  1087  
  1088  // DepositManagerITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1089  type DepositManagerITransactorRaw struct {
  1090  	Contract *DepositManagerITransactor // Generic write-only contract binding to access the raw methods on
  1091  }
  1092  
  1093  // NewDepositManagerI creates a new instance of DepositManagerI, bound to a specific deployed contract.
  1094  func NewDepositManagerI(address common.Address, backend bind.ContractBackend) (*DepositManagerI, error) {
  1095  	contract, err := bindDepositManagerI(address, backend, backend, backend)
  1096  	if err != nil {
  1097  		return nil, err
  1098  	}
  1099  	return &DepositManagerI{DepositManagerICaller: DepositManagerICaller{contract: contract}, DepositManagerITransactor: DepositManagerITransactor{contract: contract}, DepositManagerIFilterer: DepositManagerIFilterer{contract: contract}}, nil
  1100  }
  1101  
  1102  // NewDepositManagerICaller creates a new read-only instance of DepositManagerI, bound to a specific deployed contract.
  1103  func NewDepositManagerICaller(address common.Address, caller bind.ContractCaller) (*DepositManagerICaller, error) {
  1104  	contract, err := bindDepositManagerI(address, caller, nil, nil)
  1105  	if err != nil {
  1106  		return nil, err
  1107  	}
  1108  	return &DepositManagerICaller{contract: contract}, nil
  1109  }
  1110  
  1111  // NewDepositManagerITransactor creates a new write-only instance of DepositManagerI, bound to a specific deployed contract.
  1112  func NewDepositManagerITransactor(address common.Address, transactor bind.ContractTransactor) (*DepositManagerITransactor, error) {
  1113  	contract, err := bindDepositManagerI(address, nil, transactor, nil)
  1114  	if err != nil {
  1115  		return nil, err
  1116  	}
  1117  	return &DepositManagerITransactor{contract: contract}, nil
  1118  }
  1119  
  1120  // NewDepositManagerIFilterer creates a new log filterer instance of DepositManagerI, bound to a specific deployed contract.
  1121  func NewDepositManagerIFilterer(address common.Address, filterer bind.ContractFilterer) (*DepositManagerIFilterer, error) {
  1122  	contract, err := bindDepositManagerI(address, nil, nil, filterer)
  1123  	if err != nil {
  1124  		return nil, err
  1125  	}
  1126  	return &DepositManagerIFilterer{contract: contract}, nil
  1127  }
  1128  
  1129  // bindDepositManagerI binds a generic wrapper to an already deployed contract.
  1130  func bindDepositManagerI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1131  	parsed, err := abi.JSON(strings.NewReader(DepositManagerIABI))
  1132  	if err != nil {
  1133  		return nil, err
  1134  	}
  1135  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1136  }
  1137  
  1138  // Call invokes the (constant) contract method with params as input values and
  1139  // sets the output to result. The result type might be a single field for simple
  1140  // returns, a slice of interfaces for anonymous returns and a struct for named
  1141  // returns.
  1142  func (_DepositManagerI *DepositManagerIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1143  	return _DepositManagerI.Contract.DepositManagerICaller.contract.Call(opts, result, method, params...)
  1144  }
  1145  
  1146  // Transfer initiates a plain transaction to move funds to the contract, calling
  1147  // its default method if one is available.
  1148  func (_DepositManagerI *DepositManagerIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1149  	return _DepositManagerI.Contract.DepositManagerITransactor.contract.Transfer(opts)
  1150  }
  1151  
  1152  // Transact invokes the (paid) contract method with params as input values.
  1153  func (_DepositManagerI *DepositManagerIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1154  	return _DepositManagerI.Contract.DepositManagerITransactor.contract.Transact(opts, method, params...)
  1155  }
  1156  
  1157  // Call invokes the (constant) contract method with params as input values and
  1158  // sets the output to result. The result type might be a single field for simple
  1159  // returns, a slice of interfaces for anonymous returns and a struct for named
  1160  // returns.
  1161  func (_DepositManagerI *DepositManagerICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1162  	return _DepositManagerI.Contract.contract.Call(opts, result, method, params...)
  1163  }
  1164  
  1165  // Transfer initiates a plain transaction to move funds to the contract, calling
  1166  // its default method if one is available.
  1167  func (_DepositManagerI *DepositManagerITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1168  	return _DepositManagerI.Contract.contract.Transfer(opts)
  1169  }
  1170  
  1171  // Transact invokes the (paid) contract method with params as input values.
  1172  func (_DepositManagerI *DepositManagerITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1173  	return _DepositManagerI.Contract.contract.Transact(opts, method, params...)
  1174  }
  1175  
  1176  // WITHDRAWALDELAY is a free data retrieval call binding the contract method 0x0ebb172a.
  1177  //
  1178  // Solidity: function WITHDRAWAL_DELAY() constant returns(uint256)
  1179  func (_DepositManagerI *DepositManagerICaller) WITHDRAWALDELAY(opts *bind.CallOpts) (*big.Int, error) {
  1180  	var (
  1181  		ret0 = new(*big.Int)
  1182  	)
  1183  	out := ret0
  1184  	err := _DepositManagerI.contract.Call(opts, out, "WITHDRAWAL_DELAY")
  1185  	return *ret0, err
  1186  }
  1187  
  1188  // WITHDRAWALDELAY is a free data retrieval call binding the contract method 0x0ebb172a.
  1189  //
  1190  // Solidity: function WITHDRAWAL_DELAY() constant returns(uint256)
  1191  func (_DepositManagerI *DepositManagerISession) WITHDRAWALDELAY() (*big.Int, error) {
  1192  	return _DepositManagerI.Contract.WITHDRAWALDELAY(&_DepositManagerI.CallOpts)
  1193  }
  1194  
  1195  // WITHDRAWALDELAY is a free data retrieval call binding the contract method 0x0ebb172a.
  1196  //
  1197  // Solidity: function WITHDRAWAL_DELAY() constant returns(uint256)
  1198  func (_DepositManagerI *DepositManagerICallerSession) WITHDRAWALDELAY() (*big.Int, error) {
  1199  	return _DepositManagerI.Contract.WITHDRAWALDELAY(&_DepositManagerI.CallOpts)
  1200  }
  1201  
  1202  // AccStaked is a free data retrieval call binding the contract method 0x2d2fab94.
  1203  //
  1204  // Solidity: function accStaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1205  func (_DepositManagerI *DepositManagerICaller) AccStaked(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  1206  	var (
  1207  		ret0 = new(*big.Int)
  1208  	)
  1209  	out := ret0
  1210  	err := _DepositManagerI.contract.Call(opts, out, "accStaked", rootchain, account)
  1211  	return *ret0, err
  1212  }
  1213  
  1214  // AccStaked is a free data retrieval call binding the contract method 0x2d2fab94.
  1215  //
  1216  // Solidity: function accStaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1217  func (_DepositManagerI *DepositManagerISession) AccStaked(rootchain common.Address, account common.Address) (*big.Int, error) {
  1218  	return _DepositManagerI.Contract.AccStaked(&_DepositManagerI.CallOpts, rootchain, account)
  1219  }
  1220  
  1221  // AccStaked is a free data retrieval call binding the contract method 0x2d2fab94.
  1222  //
  1223  // Solidity: function accStaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1224  func (_DepositManagerI *DepositManagerICallerSession) AccStaked(rootchain common.Address, account common.Address) (*big.Int, error) {
  1225  	return _DepositManagerI.Contract.AccStaked(&_DepositManagerI.CallOpts, rootchain, account)
  1226  }
  1227  
  1228  // AccStakedAccount is a free data retrieval call binding the contract method 0x0055f5c1.
  1229  //
  1230  // Solidity: function accStakedAccount(address account) constant returns(uint256 wtonAmount)
  1231  func (_DepositManagerI *DepositManagerICaller) AccStakedAccount(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  1232  	var (
  1233  		ret0 = new(*big.Int)
  1234  	)
  1235  	out := ret0
  1236  	err := _DepositManagerI.contract.Call(opts, out, "accStakedAccount", account)
  1237  	return *ret0, err
  1238  }
  1239  
  1240  // AccStakedAccount is a free data retrieval call binding the contract method 0x0055f5c1.
  1241  //
  1242  // Solidity: function accStakedAccount(address account) constant returns(uint256 wtonAmount)
  1243  func (_DepositManagerI *DepositManagerISession) AccStakedAccount(account common.Address) (*big.Int, error) {
  1244  	return _DepositManagerI.Contract.AccStakedAccount(&_DepositManagerI.CallOpts, account)
  1245  }
  1246  
  1247  // AccStakedAccount is a free data retrieval call binding the contract method 0x0055f5c1.
  1248  //
  1249  // Solidity: function accStakedAccount(address account) constant returns(uint256 wtonAmount)
  1250  func (_DepositManagerI *DepositManagerICallerSession) AccStakedAccount(account common.Address) (*big.Int, error) {
  1251  	return _DepositManagerI.Contract.AccStakedAccount(&_DepositManagerI.CallOpts, account)
  1252  }
  1253  
  1254  // AccStakedRootChain is a free data retrieval call binding the contract method 0xe8035ec9.
  1255  //
  1256  // Solidity: function accStakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1257  func (_DepositManagerI *DepositManagerICaller) AccStakedRootChain(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
  1258  	var (
  1259  		ret0 = new(*big.Int)
  1260  	)
  1261  	out := ret0
  1262  	err := _DepositManagerI.contract.Call(opts, out, "accStakedRootChain", rootchain)
  1263  	return *ret0, err
  1264  }
  1265  
  1266  // AccStakedRootChain is a free data retrieval call binding the contract method 0xe8035ec9.
  1267  //
  1268  // Solidity: function accStakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1269  func (_DepositManagerI *DepositManagerISession) AccStakedRootChain(rootchain common.Address) (*big.Int, error) {
  1270  	return _DepositManagerI.Contract.AccStakedRootChain(&_DepositManagerI.CallOpts, rootchain)
  1271  }
  1272  
  1273  // AccStakedRootChain is a free data retrieval call binding the contract method 0xe8035ec9.
  1274  //
  1275  // Solidity: function accStakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1276  func (_DepositManagerI *DepositManagerICallerSession) AccStakedRootChain(rootchain common.Address) (*big.Int, error) {
  1277  	return _DepositManagerI.Contract.AccStakedRootChain(&_DepositManagerI.CallOpts, rootchain)
  1278  }
  1279  
  1280  // AccUnstaked is a free data retrieval call binding the contract method 0x9d91b87b.
  1281  //
  1282  // Solidity: function accUnstaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1283  func (_DepositManagerI *DepositManagerICaller) AccUnstaked(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  1284  	var (
  1285  		ret0 = new(*big.Int)
  1286  	)
  1287  	out := ret0
  1288  	err := _DepositManagerI.contract.Call(opts, out, "accUnstaked", rootchain, account)
  1289  	return *ret0, err
  1290  }
  1291  
  1292  // AccUnstaked is a free data retrieval call binding the contract method 0x9d91b87b.
  1293  //
  1294  // Solidity: function accUnstaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1295  func (_DepositManagerI *DepositManagerISession) AccUnstaked(rootchain common.Address, account common.Address) (*big.Int, error) {
  1296  	return _DepositManagerI.Contract.AccUnstaked(&_DepositManagerI.CallOpts, rootchain, account)
  1297  }
  1298  
  1299  // AccUnstaked is a free data retrieval call binding the contract method 0x9d91b87b.
  1300  //
  1301  // Solidity: function accUnstaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1302  func (_DepositManagerI *DepositManagerICallerSession) AccUnstaked(rootchain common.Address, account common.Address) (*big.Int, error) {
  1303  	return _DepositManagerI.Contract.AccUnstaked(&_DepositManagerI.CallOpts, rootchain, account)
  1304  }
  1305  
  1306  // AccUnstakedAccount is a free data retrieval call binding the contract method 0xa3543989.
  1307  //
  1308  // Solidity: function accUnstakedAccount(address account) constant returns(uint256 wtonAmount)
  1309  func (_DepositManagerI *DepositManagerICaller) AccUnstakedAccount(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  1310  	var (
  1311  		ret0 = new(*big.Int)
  1312  	)
  1313  	out := ret0
  1314  	err := _DepositManagerI.contract.Call(opts, out, "accUnstakedAccount", account)
  1315  	return *ret0, err
  1316  }
  1317  
  1318  // AccUnstakedAccount is a free data retrieval call binding the contract method 0xa3543989.
  1319  //
  1320  // Solidity: function accUnstakedAccount(address account) constant returns(uint256 wtonAmount)
  1321  func (_DepositManagerI *DepositManagerISession) AccUnstakedAccount(account common.Address) (*big.Int, error) {
  1322  	return _DepositManagerI.Contract.AccUnstakedAccount(&_DepositManagerI.CallOpts, account)
  1323  }
  1324  
  1325  // AccUnstakedAccount is a free data retrieval call binding the contract method 0xa3543989.
  1326  //
  1327  // Solidity: function accUnstakedAccount(address account) constant returns(uint256 wtonAmount)
  1328  func (_DepositManagerI *DepositManagerICallerSession) AccUnstakedAccount(account common.Address) (*big.Int, error) {
  1329  	return _DepositManagerI.Contract.AccUnstakedAccount(&_DepositManagerI.CallOpts, account)
  1330  }
  1331  
  1332  // AccUnstakedRootChain is a free data retrieval call binding the contract method 0x03dc6510.
  1333  //
  1334  // Solidity: function accUnstakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1335  func (_DepositManagerI *DepositManagerICaller) AccUnstakedRootChain(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
  1336  	var (
  1337  		ret0 = new(*big.Int)
  1338  	)
  1339  	out := ret0
  1340  	err := _DepositManagerI.contract.Call(opts, out, "accUnstakedRootChain", rootchain)
  1341  	return *ret0, err
  1342  }
  1343  
  1344  // AccUnstakedRootChain is a free data retrieval call binding the contract method 0x03dc6510.
  1345  //
  1346  // Solidity: function accUnstakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1347  func (_DepositManagerI *DepositManagerISession) AccUnstakedRootChain(rootchain common.Address) (*big.Int, error) {
  1348  	return _DepositManagerI.Contract.AccUnstakedRootChain(&_DepositManagerI.CallOpts, rootchain)
  1349  }
  1350  
  1351  // AccUnstakedRootChain is a free data retrieval call binding the contract method 0x03dc6510.
  1352  //
  1353  // Solidity: function accUnstakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1354  func (_DepositManagerI *DepositManagerICallerSession) AccUnstakedRootChain(rootchain common.Address) (*big.Int, error) {
  1355  	return _DepositManagerI.Contract.AccUnstakedRootChain(&_DepositManagerI.CallOpts, rootchain)
  1356  }
  1357  
  1358  // NumPendingRequests is a free data retrieval call binding the contract method 0x5c0df46b.
  1359  //
  1360  // Solidity: function numPendingRequests(address rootchain, address account) constant returns(uint256)
  1361  func (_DepositManagerI *DepositManagerICaller) NumPendingRequests(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  1362  	var (
  1363  		ret0 = new(*big.Int)
  1364  	)
  1365  	out := ret0
  1366  	err := _DepositManagerI.contract.Call(opts, out, "numPendingRequests", rootchain, account)
  1367  	return *ret0, err
  1368  }
  1369  
  1370  // NumPendingRequests is a free data retrieval call binding the contract method 0x5c0df46b.
  1371  //
  1372  // Solidity: function numPendingRequests(address rootchain, address account) constant returns(uint256)
  1373  func (_DepositManagerI *DepositManagerISession) NumPendingRequests(rootchain common.Address, account common.Address) (*big.Int, error) {
  1374  	return _DepositManagerI.Contract.NumPendingRequests(&_DepositManagerI.CallOpts, rootchain, account)
  1375  }
  1376  
  1377  // NumPendingRequests is a free data retrieval call binding the contract method 0x5c0df46b.
  1378  //
  1379  // Solidity: function numPendingRequests(address rootchain, address account) constant returns(uint256)
  1380  func (_DepositManagerI *DepositManagerICallerSession) NumPendingRequests(rootchain common.Address, account common.Address) (*big.Int, error) {
  1381  	return _DepositManagerI.Contract.NumPendingRequests(&_DepositManagerI.CallOpts, rootchain, account)
  1382  }
  1383  
  1384  // NumRequests is a free data retrieval call binding the contract method 0xf762eb57.
  1385  //
  1386  // Solidity: function numRequests(address rootchain, address account) constant returns(uint256)
  1387  func (_DepositManagerI *DepositManagerICaller) NumRequests(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  1388  	var (
  1389  		ret0 = new(*big.Int)
  1390  	)
  1391  	out := ret0
  1392  	err := _DepositManagerI.contract.Call(opts, out, "numRequests", rootchain, account)
  1393  	return *ret0, err
  1394  }
  1395  
  1396  // NumRequests is a free data retrieval call binding the contract method 0xf762eb57.
  1397  //
  1398  // Solidity: function numRequests(address rootchain, address account) constant returns(uint256)
  1399  func (_DepositManagerI *DepositManagerISession) NumRequests(rootchain common.Address, account common.Address) (*big.Int, error) {
  1400  	return _DepositManagerI.Contract.NumRequests(&_DepositManagerI.CallOpts, rootchain, account)
  1401  }
  1402  
  1403  // NumRequests is a free data retrieval call binding the contract method 0xf762eb57.
  1404  //
  1405  // Solidity: function numRequests(address rootchain, address account) constant returns(uint256)
  1406  func (_DepositManagerI *DepositManagerICallerSession) NumRequests(rootchain common.Address, account common.Address) (*big.Int, error) {
  1407  	return _DepositManagerI.Contract.NumRequests(&_DepositManagerI.CallOpts, rootchain, account)
  1408  }
  1409  
  1410  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1411  //
  1412  // Solidity: function owner() constant returns(address)
  1413  func (_DepositManagerI *DepositManagerICaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  1414  	var (
  1415  		ret0 = new(common.Address)
  1416  	)
  1417  	out := ret0
  1418  	err := _DepositManagerI.contract.Call(opts, out, "owner")
  1419  	return *ret0, err
  1420  }
  1421  
  1422  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1423  //
  1424  // Solidity: function owner() constant returns(address)
  1425  func (_DepositManagerI *DepositManagerISession) Owner() (common.Address, error) {
  1426  	return _DepositManagerI.Contract.Owner(&_DepositManagerI.CallOpts)
  1427  }
  1428  
  1429  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1430  //
  1431  // Solidity: function owner() constant returns(address)
  1432  func (_DepositManagerI *DepositManagerICallerSession) Owner() (common.Address, error) {
  1433  	return _DepositManagerI.Contract.Owner(&_DepositManagerI.CallOpts)
  1434  }
  1435  
  1436  // PendingUnstaked is a free data retrieval call binding the contract method 0x2638fdf5.
  1437  //
  1438  // Solidity: function pendingUnstaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1439  func (_DepositManagerI *DepositManagerICaller) PendingUnstaked(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  1440  	var (
  1441  		ret0 = new(*big.Int)
  1442  	)
  1443  	out := ret0
  1444  	err := _DepositManagerI.contract.Call(opts, out, "pendingUnstaked", rootchain, account)
  1445  	return *ret0, err
  1446  }
  1447  
  1448  // PendingUnstaked is a free data retrieval call binding the contract method 0x2638fdf5.
  1449  //
  1450  // Solidity: function pendingUnstaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1451  func (_DepositManagerI *DepositManagerISession) PendingUnstaked(rootchain common.Address, account common.Address) (*big.Int, error) {
  1452  	return _DepositManagerI.Contract.PendingUnstaked(&_DepositManagerI.CallOpts, rootchain, account)
  1453  }
  1454  
  1455  // PendingUnstaked is a free data retrieval call binding the contract method 0x2638fdf5.
  1456  //
  1457  // Solidity: function pendingUnstaked(address rootchain, address account) constant returns(uint256 wtonAmount)
  1458  func (_DepositManagerI *DepositManagerICallerSession) PendingUnstaked(rootchain common.Address, account common.Address) (*big.Int, error) {
  1459  	return _DepositManagerI.Contract.PendingUnstaked(&_DepositManagerI.CallOpts, rootchain, account)
  1460  }
  1461  
  1462  // PendingUnstakedAccount is a free data retrieval call binding the contract method 0xa0b2a913.
  1463  //
  1464  // Solidity: function pendingUnstakedAccount(address account) constant returns(uint256 wtonAmount)
  1465  func (_DepositManagerI *DepositManagerICaller) PendingUnstakedAccount(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  1466  	var (
  1467  		ret0 = new(*big.Int)
  1468  	)
  1469  	out := ret0
  1470  	err := _DepositManagerI.contract.Call(opts, out, "pendingUnstakedAccount", account)
  1471  	return *ret0, err
  1472  }
  1473  
  1474  // PendingUnstakedAccount is a free data retrieval call binding the contract method 0xa0b2a913.
  1475  //
  1476  // Solidity: function pendingUnstakedAccount(address account) constant returns(uint256 wtonAmount)
  1477  func (_DepositManagerI *DepositManagerISession) PendingUnstakedAccount(account common.Address) (*big.Int, error) {
  1478  	return _DepositManagerI.Contract.PendingUnstakedAccount(&_DepositManagerI.CallOpts, account)
  1479  }
  1480  
  1481  // PendingUnstakedAccount is a free data retrieval call binding the contract method 0xa0b2a913.
  1482  //
  1483  // Solidity: function pendingUnstakedAccount(address account) constant returns(uint256 wtonAmount)
  1484  func (_DepositManagerI *DepositManagerICallerSession) PendingUnstakedAccount(account common.Address) (*big.Int, error) {
  1485  	return _DepositManagerI.Contract.PendingUnstakedAccount(&_DepositManagerI.CallOpts, account)
  1486  }
  1487  
  1488  // PendingUnstakedRootChain is a free data retrieval call binding the contract method 0xa8f3fb98.
  1489  //
  1490  // Solidity: function pendingUnstakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1491  func (_DepositManagerI *DepositManagerICaller) PendingUnstakedRootChain(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
  1492  	var (
  1493  		ret0 = new(*big.Int)
  1494  	)
  1495  	out := ret0
  1496  	err := _DepositManagerI.contract.Call(opts, out, "pendingUnstakedRootChain", rootchain)
  1497  	return *ret0, err
  1498  }
  1499  
  1500  // PendingUnstakedRootChain is a free data retrieval call binding the contract method 0xa8f3fb98.
  1501  //
  1502  // Solidity: function pendingUnstakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1503  func (_DepositManagerI *DepositManagerISession) PendingUnstakedRootChain(rootchain common.Address) (*big.Int, error) {
  1504  	return _DepositManagerI.Contract.PendingUnstakedRootChain(&_DepositManagerI.CallOpts, rootchain)
  1505  }
  1506  
  1507  // PendingUnstakedRootChain is a free data retrieval call binding the contract method 0xa8f3fb98.
  1508  //
  1509  // Solidity: function pendingUnstakedRootChain(address rootchain) constant returns(uint256 wtonAmount)
  1510  func (_DepositManagerI *DepositManagerICallerSession) PendingUnstakedRootChain(rootchain common.Address) (*big.Int, error) {
  1511  	return _DepositManagerI.Contract.PendingUnstakedRootChain(&_DepositManagerI.CallOpts, rootchain)
  1512  }
  1513  
  1514  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  1515  //
  1516  // Solidity: function registry() constant returns(address)
  1517  func (_DepositManagerI *DepositManagerICaller) Registry(opts *bind.CallOpts) (common.Address, error) {
  1518  	var (
  1519  		ret0 = new(common.Address)
  1520  	)
  1521  	out := ret0
  1522  	err := _DepositManagerI.contract.Call(opts, out, "registry")
  1523  	return *ret0, err
  1524  }
  1525  
  1526  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  1527  //
  1528  // Solidity: function registry() constant returns(address)
  1529  func (_DepositManagerI *DepositManagerISession) Registry() (common.Address, error) {
  1530  	return _DepositManagerI.Contract.Registry(&_DepositManagerI.CallOpts)
  1531  }
  1532  
  1533  // Registry is a free data retrieval call binding the contract method 0x7b103999.
  1534  //
  1535  // Solidity: function registry() constant returns(address)
  1536  func (_DepositManagerI *DepositManagerICallerSession) Registry() (common.Address, error) {
  1537  	return _DepositManagerI.Contract.Registry(&_DepositManagerI.CallOpts)
  1538  }
  1539  
  1540  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  1541  //
  1542  // Solidity: function seigManager() constant returns(address)
  1543  func (_DepositManagerI *DepositManagerICaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
  1544  	var (
  1545  		ret0 = new(common.Address)
  1546  	)
  1547  	out := ret0
  1548  	err := _DepositManagerI.contract.Call(opts, out, "seigManager")
  1549  	return *ret0, err
  1550  }
  1551  
  1552  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  1553  //
  1554  // Solidity: function seigManager() constant returns(address)
  1555  func (_DepositManagerI *DepositManagerISession) SeigManager() (common.Address, error) {
  1556  	return _DepositManagerI.Contract.SeigManager(&_DepositManagerI.CallOpts)
  1557  }
  1558  
  1559  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
  1560  //
  1561  // Solidity: function seigManager() constant returns(address)
  1562  func (_DepositManagerI *DepositManagerICallerSession) SeigManager() (common.Address, error) {
  1563  	return _DepositManagerI.Contract.SeigManager(&_DepositManagerI.CallOpts)
  1564  }
  1565  
  1566  // WithdrawalRequest is a free data retrieval call binding the contract method 0x8fbef2d0.
  1567  //
  1568  // Solidity: function withdrawalRequest(address rootchain, address account, uint256 index) constant returns(uint128 withdrawableBlockNumber, uint128 amount, bool processed)
  1569  func (_DepositManagerI *DepositManagerICaller) WithdrawalRequest(opts *bind.CallOpts, rootchain common.Address, account common.Address, index *big.Int) (struct {
  1570  	WithdrawableBlockNumber *big.Int
  1571  	Amount                  *big.Int
  1572  	Processed               bool
  1573  }, error) {
  1574  	ret := new(struct {
  1575  		WithdrawableBlockNumber *big.Int
  1576  		Amount                  *big.Int
  1577  		Processed               bool
  1578  	})
  1579  	out := ret
  1580  	err := _DepositManagerI.contract.Call(opts, out, "withdrawalRequest", rootchain, account, index)
  1581  	return *ret, err
  1582  }
  1583  
  1584  // WithdrawalRequest is a free data retrieval call binding the contract method 0x8fbef2d0.
  1585  //
  1586  // Solidity: function withdrawalRequest(address rootchain, address account, uint256 index) constant returns(uint128 withdrawableBlockNumber, uint128 amount, bool processed)
  1587  func (_DepositManagerI *DepositManagerISession) WithdrawalRequest(rootchain common.Address, account common.Address, index *big.Int) (struct {
  1588  	WithdrawableBlockNumber *big.Int
  1589  	Amount                  *big.Int
  1590  	Processed               bool
  1591  }, error) {
  1592  	return _DepositManagerI.Contract.WithdrawalRequest(&_DepositManagerI.CallOpts, rootchain, account, index)
  1593  }
  1594  
  1595  // WithdrawalRequest is a free data retrieval call binding the contract method 0x8fbef2d0.
  1596  //
  1597  // Solidity: function withdrawalRequest(address rootchain, address account, uint256 index) constant returns(uint128 withdrawableBlockNumber, uint128 amount, bool processed)
  1598  func (_DepositManagerI *DepositManagerICallerSession) WithdrawalRequest(rootchain common.Address, account common.Address, index *big.Int) (struct {
  1599  	WithdrawableBlockNumber *big.Int
  1600  	Amount                  *big.Int
  1601  	Processed               bool
  1602  }, error) {
  1603  	return _DepositManagerI.Contract.WithdrawalRequest(&_DepositManagerI.CallOpts, rootchain, account, index)
  1604  }
  1605  
  1606  // WithdrawalRequestIndex is a free data retrieval call binding the contract method 0xc647f26e.
  1607  //
  1608  // Solidity: function withdrawalRequestIndex(address rootchain, address account) constant returns(uint256 index)
  1609  func (_DepositManagerI *DepositManagerICaller) WithdrawalRequestIndex(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
  1610  	var (
  1611  		ret0 = new(*big.Int)
  1612  	)
  1613  	out := ret0
  1614  	err := _DepositManagerI.contract.Call(opts, out, "withdrawalRequestIndex", rootchain, account)
  1615  	return *ret0, err
  1616  }
  1617  
  1618  // WithdrawalRequestIndex is a free data retrieval call binding the contract method 0xc647f26e.
  1619  //
  1620  // Solidity: function withdrawalRequestIndex(address rootchain, address account) constant returns(uint256 index)
  1621  func (_DepositManagerI *DepositManagerISession) WithdrawalRequestIndex(rootchain common.Address, account common.Address) (*big.Int, error) {
  1622  	return _DepositManagerI.Contract.WithdrawalRequestIndex(&_DepositManagerI.CallOpts, rootchain, account)
  1623  }
  1624  
  1625  // WithdrawalRequestIndex is a free data retrieval call binding the contract method 0xc647f26e.
  1626  //
  1627  // Solidity: function withdrawalRequestIndex(address rootchain, address account) constant returns(uint256 index)
  1628  func (_DepositManagerI *DepositManagerICallerSession) WithdrawalRequestIndex(rootchain common.Address, account common.Address) (*big.Int, error) {
  1629  	return _DepositManagerI.Contract.WithdrawalRequestIndex(&_DepositManagerI.CallOpts, rootchain, account)
  1630  }
  1631  
  1632  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  1633  //
  1634  // Solidity: function wton() constant returns(address)
  1635  func (_DepositManagerI *DepositManagerICaller) Wton(opts *bind.CallOpts) (common.Address, error) {
  1636  	var (
  1637  		ret0 = new(common.Address)
  1638  	)
  1639  	out := ret0
  1640  	err := _DepositManagerI.contract.Call(opts, out, "wton")
  1641  	return *ret0, err
  1642  }
  1643  
  1644  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  1645  //
  1646  // Solidity: function wton() constant returns(address)
  1647  func (_DepositManagerI *DepositManagerISession) Wton() (common.Address, error) {
  1648  	return _DepositManagerI.Contract.Wton(&_DepositManagerI.CallOpts)
  1649  }
  1650  
  1651  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
  1652  //
  1653  // Solidity: function wton() constant returns(address)
  1654  func (_DepositManagerI *DepositManagerICallerSession) Wton() (common.Address, error) {
  1655  	return _DepositManagerI.Contract.Wton(&_DepositManagerI.CallOpts)
  1656  }
  1657  
  1658  // Deposit is a paid mutator transaction binding the contract method 0x47e7ef24.
  1659  //
  1660  // Solidity: function deposit(address rootchain, uint256 amount) returns(bool)
  1661  func (_DepositManagerI *DepositManagerITransactor) Deposit(opts *bind.TransactOpts, rootchain common.Address, amount *big.Int) (*types.Transaction, error) {
  1662  	return _DepositManagerI.contract.Transact(opts, "deposit", rootchain, amount)
  1663  }
  1664  
  1665  // Deposit is a paid mutator transaction binding the contract method 0x47e7ef24.
  1666  //
  1667  // Solidity: function deposit(address rootchain, uint256 amount) returns(bool)
  1668  func (_DepositManagerI *DepositManagerISession) Deposit(rootchain common.Address, amount *big.Int) (*types.Transaction, error) {
  1669  	return _DepositManagerI.Contract.Deposit(&_DepositManagerI.TransactOpts, rootchain, amount)
  1670  }
  1671  
  1672  // Deposit is a paid mutator transaction binding the contract method 0x47e7ef24.
  1673  //
  1674  // Solidity: function deposit(address rootchain, uint256 amount) returns(bool)
  1675  func (_DepositManagerI *DepositManagerITransactorSession) Deposit(rootchain common.Address, amount *big.Int) (*types.Transaction, error) {
  1676  	return _DepositManagerI.Contract.Deposit(&_DepositManagerI.TransactOpts, rootchain, amount)
  1677  }
  1678  
  1679  // ProcessRequest is a paid mutator transaction binding the contract method 0x5d6f7cca.
  1680  //
  1681  // Solidity: function processRequest(address rootchain) returns(bool)
  1682  func (_DepositManagerI *DepositManagerITransactor) ProcessRequest(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
  1683  	return _DepositManagerI.contract.Transact(opts, "processRequest", rootchain)
  1684  }
  1685  
  1686  // ProcessRequest is a paid mutator transaction binding the contract method 0x5d6f7cca.
  1687  //
  1688  // Solidity: function processRequest(address rootchain) returns(bool)
  1689  func (_DepositManagerI *DepositManagerISession) ProcessRequest(rootchain common.Address) (*types.Transaction, error) {
  1690  	return _DepositManagerI.Contract.ProcessRequest(&_DepositManagerI.TransactOpts, rootchain)
  1691  }
  1692  
  1693  // ProcessRequest is a paid mutator transaction binding the contract method 0x5d6f7cca.
  1694  //
  1695  // Solidity: function processRequest(address rootchain) returns(bool)
  1696  func (_DepositManagerI *DepositManagerITransactorSession) ProcessRequest(rootchain common.Address) (*types.Transaction, error) {
  1697  	return _DepositManagerI.Contract.ProcessRequest(&_DepositManagerI.TransactOpts, rootchain)
  1698  }
  1699  
  1700  // ProcessRequests is a paid mutator transaction binding the contract method 0x06260ceb.
  1701  //
  1702  // Solidity: function processRequests(address rootchain, uint256 n) returns(bool)
  1703  func (_DepositManagerI *DepositManagerITransactor) ProcessRequests(opts *bind.TransactOpts, rootchain common.Address, n *big.Int) (*types.Transaction, error) {
  1704  	return _DepositManagerI.contract.Transact(opts, "processRequests", rootchain, n)
  1705  }
  1706  
  1707  // ProcessRequests is a paid mutator transaction binding the contract method 0x06260ceb.
  1708  //
  1709  // Solidity: function processRequests(address rootchain, uint256 n) returns(bool)
  1710  func (_DepositManagerI *DepositManagerISession) ProcessRequests(rootchain common.Address, n *big.Int) (*types.Transaction, error) {
  1711  	return _DepositManagerI.Contract.ProcessRequests(&_DepositManagerI.TransactOpts, rootchain, n)
  1712  }
  1713  
  1714  // ProcessRequests is a paid mutator transaction binding the contract method 0x06260ceb.
  1715  //
  1716  // Solidity: function processRequests(address rootchain, uint256 n) returns(bool)
  1717  func (_DepositManagerI *DepositManagerITransactorSession) ProcessRequests(rootchain common.Address, n *big.Int) (*types.Transaction, error) {
  1718  	return _DepositManagerI.Contract.ProcessRequests(&_DepositManagerI.TransactOpts, rootchain, n)
  1719  }
  1720  
  1721  // RequestWithdrawal is a paid mutator transaction binding the contract method 0xda95ebf7.
  1722  //
  1723  // Solidity: function requestWithdrawal(address rootchain, uint256 amount) returns(bool)
  1724  func (_DepositManagerI *DepositManagerITransactor) RequestWithdrawal(opts *bind.TransactOpts, rootchain common.Address, amount *big.Int) (*types.Transaction, error) {
  1725  	return _DepositManagerI.contract.Transact(opts, "requestWithdrawal", rootchain, amount)
  1726  }
  1727  
  1728  // RequestWithdrawal is a paid mutator transaction binding the contract method 0xda95ebf7.
  1729  //
  1730  // Solidity: function requestWithdrawal(address rootchain, uint256 amount) returns(bool)
  1731  func (_DepositManagerI *DepositManagerISession) RequestWithdrawal(rootchain common.Address, amount *big.Int) (*types.Transaction, error) {
  1732  	return _DepositManagerI.Contract.RequestWithdrawal(&_DepositManagerI.TransactOpts, rootchain, amount)
  1733  }
  1734  
  1735  // RequestWithdrawal is a paid mutator transaction binding the contract method 0xda95ebf7.
  1736  //
  1737  // Solidity: function requestWithdrawal(address rootchain, uint256 amount) returns(bool)
  1738  func (_DepositManagerI *DepositManagerITransactorSession) RequestWithdrawal(rootchain common.Address, amount *big.Int) (*types.Transaction, error) {
  1739  	return _DepositManagerI.Contract.RequestWithdrawal(&_DepositManagerI.TransactOpts, rootchain, amount)
  1740  }
  1741  
  1742  // RequestWithdrawalAll is a paid mutator transaction binding the contract method 0x6b2160b7.
  1743  //
  1744  // Solidity: function requestWithdrawalAll(address rootchain) returns(bool)
  1745  func (_DepositManagerI *DepositManagerITransactor) RequestWithdrawalAll(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
  1746  	return _DepositManagerI.contract.Transact(opts, "requestWithdrawalAll", rootchain)
  1747  }
  1748  
  1749  // RequestWithdrawalAll is a paid mutator transaction binding the contract method 0x6b2160b7.
  1750  //
  1751  // Solidity: function requestWithdrawalAll(address rootchain) returns(bool)
  1752  func (_DepositManagerI *DepositManagerISession) RequestWithdrawalAll(rootchain common.Address) (*types.Transaction, error) {
  1753  	return _DepositManagerI.Contract.RequestWithdrawalAll(&_DepositManagerI.TransactOpts, rootchain)
  1754  }
  1755  
  1756  // RequestWithdrawalAll is a paid mutator transaction binding the contract method 0x6b2160b7.
  1757  //
  1758  // Solidity: function requestWithdrawalAll(address rootchain) returns(bool)
  1759  func (_DepositManagerI *DepositManagerITransactorSession) RequestWithdrawalAll(rootchain common.Address) (*types.Transaction, error) {
  1760  	return _DepositManagerI.Contract.RequestWithdrawalAll(&_DepositManagerI.TransactOpts, rootchain)
  1761  }
  1762  
  1763  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  1764  //
  1765  // Solidity: function setSeigManager(address seigManager) returns()
  1766  func (_DepositManagerI *DepositManagerITransactor) SetSeigManager(opts *bind.TransactOpts, seigManager common.Address) (*types.Transaction, error) {
  1767  	return _DepositManagerI.contract.Transact(opts, "setSeigManager", seigManager)
  1768  }
  1769  
  1770  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  1771  //
  1772  // Solidity: function setSeigManager(address seigManager) returns()
  1773  func (_DepositManagerI *DepositManagerISession) SetSeigManager(seigManager common.Address) (*types.Transaction, error) {
  1774  	return _DepositManagerI.Contract.SetSeigManager(&_DepositManagerI.TransactOpts, seigManager)
  1775  }
  1776  
  1777  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
  1778  //
  1779  // Solidity: function setSeigManager(address seigManager) returns()
  1780  func (_DepositManagerI *DepositManagerITransactorSession) SetSeigManager(seigManager common.Address) (*types.Transaction, error) {
  1781  	return _DepositManagerI.Contract.SetSeigManager(&_DepositManagerI.TransactOpts, seigManager)
  1782  }
  1783  
  1784  // ERC165ABI is the input ABI used to generate the binding from.
  1785  const ERC165ABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  1786  
  1787  // ERC165FuncSigs maps the 4-byte function signature to its string representation.
  1788  var ERC165FuncSigs = map[string]string{
  1789  	"01ffc9a7": "supportsInterface(bytes4)",
  1790  }
  1791  
  1792  // ERC165 is an auto generated Go binding around an Ethereum contract.
  1793  type ERC165 struct {
  1794  	ERC165Caller     // Read-only binding to the contract
  1795  	ERC165Transactor // Write-only binding to the contract
  1796  	ERC165Filterer   // Log filterer for contract events
  1797  }
  1798  
  1799  // ERC165Caller is an auto generated read-only Go binding around an Ethereum contract.
  1800  type ERC165Caller struct {
  1801  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1802  }
  1803  
  1804  // ERC165Transactor is an auto generated write-only Go binding around an Ethereum contract.
  1805  type ERC165Transactor struct {
  1806  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1807  }
  1808  
  1809  // ERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1810  type ERC165Filterer struct {
  1811  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1812  }
  1813  
  1814  // ERC165Session is an auto generated Go binding around an Ethereum contract,
  1815  // with pre-set call and transact options.
  1816  type ERC165Session struct {
  1817  	Contract     *ERC165           // Generic contract binding to set the session for
  1818  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1819  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1820  }
  1821  
  1822  // ERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  1823  // with pre-set call options.
  1824  type ERC165CallerSession struct {
  1825  	Contract *ERC165Caller // Generic contract caller binding to set the session for
  1826  	CallOpts bind.CallOpts // Call options to use throughout this session
  1827  }
  1828  
  1829  // ERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  1830  // with pre-set transact options.
  1831  type ERC165TransactorSession struct {
  1832  	Contract     *ERC165Transactor // Generic contract transactor binding to set the session for
  1833  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1834  }
  1835  
  1836  // ERC165Raw is an auto generated low-level Go binding around an Ethereum contract.
  1837  type ERC165Raw struct {
  1838  	Contract *ERC165 // Generic contract binding to access the raw methods on
  1839  }
  1840  
  1841  // ERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  1842  type ERC165CallerRaw struct {
  1843  	Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on
  1844  }
  1845  
  1846  // ERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  1847  type ERC165TransactorRaw struct {
  1848  	Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on
  1849  }
  1850  
  1851  // NewERC165 creates a new instance of ERC165, bound to a specific deployed contract.
  1852  func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) {
  1853  	contract, err := bindERC165(address, backend, backend, backend)
  1854  	if err != nil {
  1855  		return nil, err
  1856  	}
  1857  	return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil
  1858  }
  1859  
  1860  // NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract.
  1861  func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) {
  1862  	contract, err := bindERC165(address, caller, nil, nil)
  1863  	if err != nil {
  1864  		return nil, err
  1865  	}
  1866  	return &ERC165Caller{contract: contract}, nil
  1867  }
  1868  
  1869  // NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract.
  1870  func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) {
  1871  	contract, err := bindERC165(address, nil, transactor, nil)
  1872  	if err != nil {
  1873  		return nil, err
  1874  	}
  1875  	return &ERC165Transactor{contract: contract}, nil
  1876  }
  1877  
  1878  // NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract.
  1879  func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) {
  1880  	contract, err := bindERC165(address, nil, nil, filterer)
  1881  	if err != nil {
  1882  		return nil, err
  1883  	}
  1884  	return &ERC165Filterer{contract: contract}, nil
  1885  }
  1886  
  1887  // bindERC165 binds a generic wrapper to an already deployed contract.
  1888  func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1889  	parsed, err := abi.JSON(strings.NewReader(ERC165ABI))
  1890  	if err != nil {
  1891  		return nil, err
  1892  	}
  1893  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1894  }
  1895  
  1896  // Call invokes the (constant) contract method with params as input values and
  1897  // sets the output to result. The result type might be a single field for simple
  1898  // returns, a slice of interfaces for anonymous returns and a struct for named
  1899  // returns.
  1900  func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1901  	return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...)
  1902  }
  1903  
  1904  // Transfer initiates a plain transaction to move funds to the contract, calling
  1905  // its default method if one is available.
  1906  func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1907  	return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts)
  1908  }
  1909  
  1910  // Transact invokes the (paid) contract method with params as input values.
  1911  func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1912  	return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...)
  1913  }
  1914  
  1915  // Call invokes the (constant) contract method with params as input values and
  1916  // sets the output to result. The result type might be a single field for simple
  1917  // returns, a slice of interfaces for anonymous returns and a struct for named
  1918  // returns.
  1919  func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1920  	return _ERC165.Contract.contract.Call(opts, result, method, params...)
  1921  }
  1922  
  1923  // Transfer initiates a plain transaction to move funds to the contract, calling
  1924  // its default method if one is available.
  1925  func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1926  	return _ERC165.Contract.contract.Transfer(opts)
  1927  }
  1928  
  1929  // Transact invokes the (paid) contract method with params as input values.
  1930  func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1931  	return _ERC165.Contract.contract.Transact(opts, method, params...)
  1932  }
  1933  
  1934  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1935  //
  1936  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  1937  func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  1938  	var (
  1939  		ret0 = new(bool)
  1940  	)
  1941  	out := ret0
  1942  	err := _ERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
  1943  	return *ret0, err
  1944  }
  1945  
  1946  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1947  //
  1948  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  1949  func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1950  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
  1951  }
  1952  
  1953  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1954  //
  1955  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  1956  func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1957  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
  1958  }
  1959  
  1960  // ERC165CheckerABI is the input ABI used to generate the binding from.
  1961  const ERC165CheckerABI = "[]"
  1962  
  1963  // ERC165CheckerBin is the compiled bytecode used for deploying new contracts.
  1964  var ERC165CheckerBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820ea851d268567a3ed8f55b193eb1a6f3028b7565ea2152c791833f991fbaa44e864736f6c634300050c0032"
  1965  
  1966  // DeployERC165Checker deploys a new Ethereum contract, binding an instance of ERC165Checker to it.
  1967  func DeployERC165Checker(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC165Checker, error) {
  1968  	parsed, err := abi.JSON(strings.NewReader(ERC165CheckerABI))
  1969  	if err != nil {
  1970  		return common.Address{}, nil, nil, err
  1971  	}
  1972  
  1973  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC165CheckerBin), backend)
  1974  	if err != nil {
  1975  		return common.Address{}, nil, nil, err
  1976  	}
  1977  	return address, tx, &ERC165Checker{ERC165CheckerCaller: ERC165CheckerCaller{contract: contract}, ERC165CheckerTransactor: ERC165CheckerTransactor{contract: contract}, ERC165CheckerFilterer: ERC165CheckerFilterer{contract: contract}}, nil
  1978  }
  1979  
  1980  // ERC165Checker is an auto generated Go binding around an Ethereum contract.
  1981  type ERC165Checker struct {
  1982  	ERC165CheckerCaller     // Read-only binding to the contract
  1983  	ERC165CheckerTransactor // Write-only binding to the contract
  1984  	ERC165CheckerFilterer   // Log filterer for contract events
  1985  }
  1986  
  1987  // ERC165CheckerCaller is an auto generated read-only Go binding around an Ethereum contract.
  1988  type ERC165CheckerCaller struct {
  1989  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1990  }
  1991  
  1992  // ERC165CheckerTransactor is an auto generated write-only Go binding around an Ethereum contract.
  1993  type ERC165CheckerTransactor struct {
  1994  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1995  }
  1996  
  1997  // ERC165CheckerFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  1998  type ERC165CheckerFilterer struct {
  1999  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2000  }
  2001  
  2002  // ERC165CheckerSession is an auto generated Go binding around an Ethereum contract,
  2003  // with pre-set call and transact options.
  2004  type ERC165CheckerSession struct {
  2005  	Contract     *ERC165Checker    // Generic contract binding to set the session for
  2006  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2007  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2008  }
  2009  
  2010  // ERC165CheckerCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2011  // with pre-set call options.
  2012  type ERC165CheckerCallerSession struct {
  2013  	Contract *ERC165CheckerCaller // Generic contract caller binding to set the session for
  2014  	CallOpts bind.CallOpts        // Call options to use throughout this session
  2015  }
  2016  
  2017  // ERC165CheckerTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2018  // with pre-set transact options.
  2019  type ERC165CheckerTransactorSession struct {
  2020  	Contract     *ERC165CheckerTransactor // Generic contract transactor binding to set the session for
  2021  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  2022  }
  2023  
  2024  // ERC165CheckerRaw is an auto generated low-level Go binding around an Ethereum contract.
  2025  type ERC165CheckerRaw struct {
  2026  	Contract *ERC165Checker // Generic contract binding to access the raw methods on
  2027  }
  2028  
  2029  // ERC165CheckerCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2030  type ERC165CheckerCallerRaw struct {
  2031  	Contract *ERC165CheckerCaller // Generic read-only contract binding to access the raw methods on
  2032  }
  2033  
  2034  // ERC165CheckerTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2035  type ERC165CheckerTransactorRaw struct {
  2036  	Contract *ERC165CheckerTransactor // Generic write-only contract binding to access the raw methods on
  2037  }
  2038  
  2039  // NewERC165Checker creates a new instance of ERC165Checker, bound to a specific deployed contract.
  2040  func NewERC165Checker(address common.Address, backend bind.ContractBackend) (*ERC165Checker, error) {
  2041  	contract, err := bindERC165Checker(address, backend, backend, backend)
  2042  	if err != nil {
  2043  		return nil, err
  2044  	}
  2045  	return &ERC165Checker{ERC165CheckerCaller: ERC165CheckerCaller{contract: contract}, ERC165CheckerTransactor: ERC165CheckerTransactor{contract: contract}, ERC165CheckerFilterer: ERC165CheckerFilterer{contract: contract}}, nil
  2046  }
  2047  
  2048  // NewERC165CheckerCaller creates a new read-only instance of ERC165Checker, bound to a specific deployed contract.
  2049  func NewERC165CheckerCaller(address common.Address, caller bind.ContractCaller) (*ERC165CheckerCaller, error) {
  2050  	contract, err := bindERC165Checker(address, caller, nil, nil)
  2051  	if err != nil {
  2052  		return nil, err
  2053  	}
  2054  	return &ERC165CheckerCaller{contract: contract}, nil
  2055  }
  2056  
  2057  // NewERC165CheckerTransactor creates a new write-only instance of ERC165Checker, bound to a specific deployed contract.
  2058  func NewERC165CheckerTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC165CheckerTransactor, error) {
  2059  	contract, err := bindERC165Checker(address, nil, transactor, nil)
  2060  	if err != nil {
  2061  		return nil, err
  2062  	}
  2063  	return &ERC165CheckerTransactor{contract: contract}, nil
  2064  }
  2065  
  2066  // NewERC165CheckerFilterer creates a new log filterer instance of ERC165Checker, bound to a specific deployed contract.
  2067  func NewERC165CheckerFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC165CheckerFilterer, error) {
  2068  	contract, err := bindERC165Checker(address, nil, nil, filterer)
  2069  	if err != nil {
  2070  		return nil, err
  2071  	}
  2072  	return &ERC165CheckerFilterer{contract: contract}, nil
  2073  }
  2074  
  2075  // bindERC165Checker binds a generic wrapper to an already deployed contract.
  2076  func bindERC165Checker(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2077  	parsed, err := abi.JSON(strings.NewReader(ERC165CheckerABI))
  2078  	if err != nil {
  2079  		return nil, err
  2080  	}
  2081  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2082  }
  2083  
  2084  // Call invokes the (constant) contract method with params as input values and
  2085  // sets the output to result. The result type might be a single field for simple
  2086  // returns, a slice of interfaces for anonymous returns and a struct for named
  2087  // returns.
  2088  func (_ERC165Checker *ERC165CheckerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2089  	return _ERC165Checker.Contract.ERC165CheckerCaller.contract.Call(opts, result, method, params...)
  2090  }
  2091  
  2092  // Transfer initiates a plain transaction to move funds to the contract, calling
  2093  // its default method if one is available.
  2094  func (_ERC165Checker *ERC165CheckerRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2095  	return _ERC165Checker.Contract.ERC165CheckerTransactor.contract.Transfer(opts)
  2096  }
  2097  
  2098  // Transact invokes the (paid) contract method with params as input values.
  2099  func (_ERC165Checker *ERC165CheckerRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2100  	return _ERC165Checker.Contract.ERC165CheckerTransactor.contract.Transact(opts, method, params...)
  2101  }
  2102  
  2103  // Call invokes the (constant) contract method with params as input values and
  2104  // sets the output to result. The result type might be a single field for simple
  2105  // returns, a slice of interfaces for anonymous returns and a struct for named
  2106  // returns.
  2107  func (_ERC165Checker *ERC165CheckerCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2108  	return _ERC165Checker.Contract.contract.Call(opts, result, method, params...)
  2109  }
  2110  
  2111  // Transfer initiates a plain transaction to move funds to the contract, calling
  2112  // its default method if one is available.
  2113  func (_ERC165Checker *ERC165CheckerTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2114  	return _ERC165Checker.Contract.contract.Transfer(opts)
  2115  }
  2116  
  2117  // Transact invokes the (paid) contract method with params as input values.
  2118  func (_ERC165Checker *ERC165CheckerTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2119  	return _ERC165Checker.Contract.contract.Transact(opts, method, params...)
  2120  }
  2121  
  2122  // ERC20ABI is the input ABI used to generate the binding from.
  2123  const ERC20ABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  2124  
  2125  // ERC20FuncSigs maps the 4-byte function signature to its string representation.
  2126  var ERC20FuncSigs = map[string]string{
  2127  	"dd62ed3e": "allowance(address,address)",
  2128  	"095ea7b3": "approve(address,uint256)",
  2129  	"70a08231": "balanceOf(address)",
  2130  	"a457c2d7": "decreaseAllowance(address,uint256)",
  2131  	"39509351": "increaseAllowance(address,uint256)",
  2132  	"18160ddd": "totalSupply()",
  2133  	"a9059cbb": "transfer(address,uint256)",
  2134  	"23b872dd": "transferFrom(address,address,uint256)",
  2135  }
  2136  
  2137  // ERC20Bin is the compiled bytecode used for deploying new contracts.
  2138  var ERC20Bin = "0x608060405261083b806100136000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d5610212565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610218565b6100b96004803603604081101561013357600080fd5b506001600160a01b0381351690602001356102a5565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102f9565b6100b96004803603604081101561018557600080fd5b506001600160a01b038135169060200135610314565b6100b9600480360360408110156101b157600080fd5b506001600160a01b038135169060200135610382565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610396565b60006102096102026103c1565b84846103c5565b50600192915050565b60025490565b60006102258484846104b1565b61029b846102316103c1565b61029685604051806060016040528060288152602001610771602891396001600160a01b038a1660009081526001602052604081209061026f6103c1565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61060d16565b6103c5565b5060019392505050565b60006102096102b26103c1565b8461029685600160006102c36103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6106a416565b6001600160a01b031660009081526020819052604090205490565b60006102096103216103c1565b84610296856040518060600160405280602581526020016107e2602591396001600061034b6103c1565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61060d16565b600061020961038f6103c1565b84846104b1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661040a5760405162461bcd60e51b81526004018080602001828103825260248152602001806107be6024913960400191505060405180910390fd5b6001600160a01b03821661044f5760405162461bcd60e51b81526004018080602001828103825260228152602001806107296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104f65760405162461bcd60e51b81526004018080602001828103825260258152602001806107996025913960400191505060405180910390fd5b6001600160a01b03821661053b5760405162461bcd60e51b81526004018080602001828103825260238152602001806107066023913960400191505060405180910390fd5b61057e8160405180606001604052806026815260200161074b602691396001600160a01b038616600090815260208190526040902054919063ffffffff61060d16565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546105b3908263ffffffff6106a416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561069c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610661578181015183820152602001610649565b50505050905090810190601f16801561068e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156106fe576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582008ca9864b08faad547b35ef43549788be26de128b59e0167fefa4ac97cd6733964736f6c634300050c0032"
  2139  
  2140  // DeployERC20 deploys a new Ethereum contract, binding an instance of ERC20 to it.
  2141  func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20, error) {
  2142  	parsed, err := abi.JSON(strings.NewReader(ERC20ABI))
  2143  	if err != nil {
  2144  		return common.Address{}, nil, nil, err
  2145  	}
  2146  
  2147  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20Bin), backend)
  2148  	if err != nil {
  2149  		return common.Address{}, nil, nil, err
  2150  	}
  2151  	return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
  2152  }
  2153  
  2154  // ERC20 is an auto generated Go binding around an Ethereum contract.
  2155  type ERC20 struct {
  2156  	ERC20Caller     // Read-only binding to the contract
  2157  	ERC20Transactor // Write-only binding to the contract
  2158  	ERC20Filterer   // Log filterer for contract events
  2159  }
  2160  
  2161  // ERC20Caller is an auto generated read-only Go binding around an Ethereum contract.
  2162  type ERC20Caller struct {
  2163  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2164  }
  2165  
  2166  // ERC20Transactor is an auto generated write-only Go binding around an Ethereum contract.
  2167  type ERC20Transactor struct {
  2168  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2169  }
  2170  
  2171  // ERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2172  type ERC20Filterer struct {
  2173  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2174  }
  2175  
  2176  // ERC20Session is an auto generated Go binding around an Ethereum contract,
  2177  // with pre-set call and transact options.
  2178  type ERC20Session struct {
  2179  	Contract     *ERC20            // Generic contract binding to set the session for
  2180  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2181  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2182  }
  2183  
  2184  // ERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2185  // with pre-set call options.
  2186  type ERC20CallerSession struct {
  2187  	Contract *ERC20Caller  // Generic contract caller binding to set the session for
  2188  	CallOpts bind.CallOpts // Call options to use throughout this session
  2189  }
  2190  
  2191  // ERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2192  // with pre-set transact options.
  2193  type ERC20TransactorSession struct {
  2194  	Contract     *ERC20Transactor  // Generic contract transactor binding to set the session for
  2195  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2196  }
  2197  
  2198  // ERC20Raw is an auto generated low-level Go binding around an Ethereum contract.
  2199  type ERC20Raw struct {
  2200  	Contract *ERC20 // Generic contract binding to access the raw methods on
  2201  }
  2202  
  2203  // ERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2204  type ERC20CallerRaw struct {
  2205  	Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on
  2206  }
  2207  
  2208  // ERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2209  type ERC20TransactorRaw struct {
  2210  	Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on
  2211  }
  2212  
  2213  // NewERC20 creates a new instance of ERC20, bound to a specific deployed contract.
  2214  func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) {
  2215  	contract, err := bindERC20(address, backend, backend, backend)
  2216  	if err != nil {
  2217  		return nil, err
  2218  	}
  2219  	return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
  2220  }
  2221  
  2222  // NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract.
  2223  func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) {
  2224  	contract, err := bindERC20(address, caller, nil, nil)
  2225  	if err != nil {
  2226  		return nil, err
  2227  	}
  2228  	return &ERC20Caller{contract: contract}, nil
  2229  }
  2230  
  2231  // NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract.
  2232  func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) {
  2233  	contract, err := bindERC20(address, nil, transactor, nil)
  2234  	if err != nil {
  2235  		return nil, err
  2236  	}
  2237  	return &ERC20Transactor{contract: contract}, nil
  2238  }
  2239  
  2240  // NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract.
  2241  func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) {
  2242  	contract, err := bindERC20(address, nil, nil, filterer)
  2243  	if err != nil {
  2244  		return nil, err
  2245  	}
  2246  	return &ERC20Filterer{contract: contract}, nil
  2247  }
  2248  
  2249  // bindERC20 binds a generic wrapper to an already deployed contract.
  2250  func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2251  	parsed, err := abi.JSON(strings.NewReader(ERC20ABI))
  2252  	if err != nil {
  2253  		return nil, err
  2254  	}
  2255  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2256  }
  2257  
  2258  // Call invokes the (constant) contract method with params as input values and
  2259  // sets the output to result. The result type might be a single field for simple
  2260  // returns, a slice of interfaces for anonymous returns and a struct for named
  2261  // returns.
  2262  func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2263  	return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...)
  2264  }
  2265  
  2266  // Transfer initiates a plain transaction to move funds to the contract, calling
  2267  // its default method if one is available.
  2268  func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2269  	return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts)
  2270  }
  2271  
  2272  // Transact invokes the (paid) contract method with params as input values.
  2273  func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2274  	return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...)
  2275  }
  2276  
  2277  // Call invokes the (constant) contract method with params as input values and
  2278  // sets the output to result. The result type might be a single field for simple
  2279  // returns, a slice of interfaces for anonymous returns and a struct for named
  2280  // returns.
  2281  func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2282  	return _ERC20.Contract.contract.Call(opts, result, method, params...)
  2283  }
  2284  
  2285  // Transfer initiates a plain transaction to move funds to the contract, calling
  2286  // its default method if one is available.
  2287  func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2288  	return _ERC20.Contract.contract.Transfer(opts)
  2289  }
  2290  
  2291  // Transact invokes the (paid) contract method with params as input values.
  2292  func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2293  	return _ERC20.Contract.contract.Transact(opts, method, params...)
  2294  }
  2295  
  2296  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2297  //
  2298  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2299  func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  2300  	var (
  2301  		ret0 = new(*big.Int)
  2302  	)
  2303  	out := ret0
  2304  	err := _ERC20.contract.Call(opts, out, "allowance", owner, spender)
  2305  	return *ret0, err
  2306  }
  2307  
  2308  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2309  //
  2310  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2311  func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2312  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
  2313  }
  2314  
  2315  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2316  //
  2317  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2318  func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2319  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
  2320  }
  2321  
  2322  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2323  //
  2324  // Solidity: function balanceOf(address account) constant returns(uint256)
  2325  func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  2326  	var (
  2327  		ret0 = new(*big.Int)
  2328  	)
  2329  	out := ret0
  2330  	err := _ERC20.contract.Call(opts, out, "balanceOf", account)
  2331  	return *ret0, err
  2332  }
  2333  
  2334  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2335  //
  2336  // Solidity: function balanceOf(address account) constant returns(uint256)
  2337  func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
  2338  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
  2339  }
  2340  
  2341  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2342  //
  2343  // Solidity: function balanceOf(address account) constant returns(uint256)
  2344  func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  2345  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
  2346  }
  2347  
  2348  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2349  //
  2350  // Solidity: function totalSupply() constant returns(uint256)
  2351  func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  2352  	var (
  2353  		ret0 = new(*big.Int)
  2354  	)
  2355  	out := ret0
  2356  	err := _ERC20.contract.Call(opts, out, "totalSupply")
  2357  	return *ret0, err
  2358  }
  2359  
  2360  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2361  //
  2362  // Solidity: function totalSupply() constant returns(uint256)
  2363  func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) {
  2364  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
  2365  }
  2366  
  2367  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2368  //
  2369  // Solidity: function totalSupply() constant returns(uint256)
  2370  func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) {
  2371  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
  2372  }
  2373  
  2374  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2375  //
  2376  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  2377  func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  2378  	return _ERC20.contract.Transact(opts, "approve", spender, amount)
  2379  }
  2380  
  2381  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2382  //
  2383  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  2384  func (_ERC20 *ERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  2385  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount)
  2386  }
  2387  
  2388  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2389  //
  2390  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  2391  func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  2392  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, amount)
  2393  }
  2394  
  2395  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2396  //
  2397  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2398  func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2399  	return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  2400  }
  2401  
  2402  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2403  //
  2404  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2405  func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2406  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
  2407  }
  2408  
  2409  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2410  //
  2411  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2412  func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2413  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
  2414  }
  2415  
  2416  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2417  //
  2418  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2419  func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2420  	return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  2421  }
  2422  
  2423  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2424  //
  2425  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2426  func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2427  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
  2428  }
  2429  
  2430  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2431  //
  2432  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2433  func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2434  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
  2435  }
  2436  
  2437  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2438  //
  2439  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2440  func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2441  	return _ERC20.contract.Transact(opts, "transfer", recipient, amount)
  2442  }
  2443  
  2444  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2445  //
  2446  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2447  func (_ERC20 *ERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2448  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
  2449  }
  2450  
  2451  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2452  //
  2453  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2454  func (_ERC20 *ERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2455  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
  2456  }
  2457  
  2458  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2459  //
  2460  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2461  func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2462  	return _ERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  2463  }
  2464  
  2465  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2466  //
  2467  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2468  func (_ERC20 *ERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2469  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
  2470  }
  2471  
  2472  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2473  //
  2474  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2475  func (_ERC20 *ERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2476  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
  2477  }
  2478  
  2479  // ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract.
  2480  type ERC20ApprovalIterator struct {
  2481  	Event *ERC20Approval // Event containing the contract specifics and raw log
  2482  
  2483  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2484  	event    string              // Event name to use for unpacking event data
  2485  
  2486  	logs chan types.Log        // Log channel receiving the found contract events
  2487  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2488  	done bool                  // Whether the subscription completed delivering logs
  2489  	fail error                 // Occurred error to stop iteration
  2490  }
  2491  
  2492  // Next advances the iterator to the subsequent event, returning whether there
  2493  // are any more events found. In case of a retrieval or parsing error, false is
  2494  // returned and Error() can be queried for the exact failure.
  2495  func (it *ERC20ApprovalIterator) Next() bool {
  2496  	// If the iterator failed, stop iterating
  2497  	if it.fail != nil {
  2498  		return false
  2499  	}
  2500  	// If the iterator completed, deliver directly whatever's available
  2501  	if it.done {
  2502  		select {
  2503  		case log := <-it.logs:
  2504  			it.Event = new(ERC20Approval)
  2505  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2506  				it.fail = err
  2507  				return false
  2508  			}
  2509  			it.Event.Raw = log
  2510  			return true
  2511  
  2512  		default:
  2513  			return false
  2514  		}
  2515  	}
  2516  	// Iterator still in progress, wait for either a data or an error event
  2517  	select {
  2518  	case log := <-it.logs:
  2519  		it.Event = new(ERC20Approval)
  2520  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2521  			it.fail = err
  2522  			return false
  2523  		}
  2524  		it.Event.Raw = log
  2525  		return true
  2526  
  2527  	case err := <-it.sub.Err():
  2528  		it.done = true
  2529  		it.fail = err
  2530  		return it.Next()
  2531  	}
  2532  }
  2533  
  2534  // Error returns any retrieval or parsing error occurred during filtering.
  2535  func (it *ERC20ApprovalIterator) Error() error {
  2536  	return it.fail
  2537  }
  2538  
  2539  // Close terminates the iteration process, releasing any pending underlying
  2540  // resources.
  2541  func (it *ERC20ApprovalIterator) Close() error {
  2542  	it.sub.Unsubscribe()
  2543  	return nil
  2544  }
  2545  
  2546  // ERC20Approval represents a Approval event raised by the ERC20 contract.
  2547  type ERC20Approval struct {
  2548  	Owner   common.Address
  2549  	Spender common.Address
  2550  	Value   *big.Int
  2551  	Raw     types.Log // Blockchain specific contextual infos
  2552  }
  2553  
  2554  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2555  //
  2556  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2557  func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) {
  2558  
  2559  	var ownerRule []interface{}
  2560  	for _, ownerItem := range owner {
  2561  		ownerRule = append(ownerRule, ownerItem)
  2562  	}
  2563  	var spenderRule []interface{}
  2564  	for _, spenderItem := range spender {
  2565  		spenderRule = append(spenderRule, spenderItem)
  2566  	}
  2567  
  2568  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  2569  	if err != nil {
  2570  		return nil, err
  2571  	}
  2572  	return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
  2573  }
  2574  
  2575  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2576  //
  2577  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2578  func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  2579  
  2580  	var ownerRule []interface{}
  2581  	for _, ownerItem := range owner {
  2582  		ownerRule = append(ownerRule, ownerItem)
  2583  	}
  2584  	var spenderRule []interface{}
  2585  	for _, spenderItem := range spender {
  2586  		spenderRule = append(spenderRule, spenderItem)
  2587  	}
  2588  
  2589  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  2590  	if err != nil {
  2591  		return nil, err
  2592  	}
  2593  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2594  		defer sub.Unsubscribe()
  2595  		for {
  2596  			select {
  2597  			case log := <-logs:
  2598  				// New log arrived, parse the event and forward to the user
  2599  				event := new(ERC20Approval)
  2600  				if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  2601  					return err
  2602  				}
  2603  				event.Raw = log
  2604  
  2605  				select {
  2606  				case sink <- event:
  2607  				case err := <-sub.Err():
  2608  					return err
  2609  				case <-quit:
  2610  					return nil
  2611  				}
  2612  			case err := <-sub.Err():
  2613  				return err
  2614  			case <-quit:
  2615  				return nil
  2616  			}
  2617  		}
  2618  	}), nil
  2619  }
  2620  
  2621  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2622  //
  2623  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2624  func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) {
  2625  	event := new(ERC20Approval)
  2626  	if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  2627  		return nil, err
  2628  	}
  2629  	return event, nil
  2630  }
  2631  
  2632  // ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract.
  2633  type ERC20TransferIterator struct {
  2634  	Event *ERC20Transfer // Event containing the contract specifics and raw log
  2635  
  2636  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2637  	event    string              // Event name to use for unpacking event data
  2638  
  2639  	logs chan types.Log        // Log channel receiving the found contract events
  2640  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  2641  	done bool                  // Whether the subscription completed delivering logs
  2642  	fail error                 // Occurred error to stop iteration
  2643  }
  2644  
  2645  // Next advances the iterator to the subsequent event, returning whether there
  2646  // are any more events found. In case of a retrieval or parsing error, false is
  2647  // returned and Error() can be queried for the exact failure.
  2648  func (it *ERC20TransferIterator) Next() bool {
  2649  	// If the iterator failed, stop iterating
  2650  	if it.fail != nil {
  2651  		return false
  2652  	}
  2653  	// If the iterator completed, deliver directly whatever's available
  2654  	if it.done {
  2655  		select {
  2656  		case log := <-it.logs:
  2657  			it.Event = new(ERC20Transfer)
  2658  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2659  				it.fail = err
  2660  				return false
  2661  			}
  2662  			it.Event.Raw = log
  2663  			return true
  2664  
  2665  		default:
  2666  			return false
  2667  		}
  2668  	}
  2669  	// Iterator still in progress, wait for either a data or an error event
  2670  	select {
  2671  	case log := <-it.logs:
  2672  		it.Event = new(ERC20Transfer)
  2673  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2674  			it.fail = err
  2675  			return false
  2676  		}
  2677  		it.Event.Raw = log
  2678  		return true
  2679  
  2680  	case err := <-it.sub.Err():
  2681  		it.done = true
  2682  		it.fail = err
  2683  		return it.Next()
  2684  	}
  2685  }
  2686  
  2687  // Error returns any retrieval or parsing error occurred during filtering.
  2688  func (it *ERC20TransferIterator) Error() error {
  2689  	return it.fail
  2690  }
  2691  
  2692  // Close terminates the iteration process, releasing any pending underlying
  2693  // resources.
  2694  func (it *ERC20TransferIterator) Close() error {
  2695  	it.sub.Unsubscribe()
  2696  	return nil
  2697  }
  2698  
  2699  // ERC20Transfer represents a Transfer event raised by the ERC20 contract.
  2700  type ERC20Transfer struct {
  2701  	From  common.Address
  2702  	To    common.Address
  2703  	Value *big.Int
  2704  	Raw   types.Log // Blockchain specific contextual infos
  2705  }
  2706  
  2707  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2708  //
  2709  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2710  func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) {
  2711  
  2712  	var fromRule []interface{}
  2713  	for _, fromItem := range from {
  2714  		fromRule = append(fromRule, fromItem)
  2715  	}
  2716  	var toRule []interface{}
  2717  	for _, toItem := range to {
  2718  		toRule = append(toRule, toItem)
  2719  	}
  2720  
  2721  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  2722  	if err != nil {
  2723  		return nil, err
  2724  	}
  2725  	return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2726  }
  2727  
  2728  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2729  //
  2730  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2731  func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  2732  
  2733  	var fromRule []interface{}
  2734  	for _, fromItem := range from {
  2735  		fromRule = append(fromRule, fromItem)
  2736  	}
  2737  	var toRule []interface{}
  2738  	for _, toItem := range to {
  2739  		toRule = append(toRule, toItem)
  2740  	}
  2741  
  2742  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  2743  	if err != nil {
  2744  		return nil, err
  2745  	}
  2746  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2747  		defer sub.Unsubscribe()
  2748  		for {
  2749  			select {
  2750  			case log := <-logs:
  2751  				// New log arrived, parse the event and forward to the user
  2752  				event := new(ERC20Transfer)
  2753  				if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  2754  					return err
  2755  				}
  2756  				event.Raw = log
  2757  
  2758  				select {
  2759  				case sink <- event:
  2760  				case err := <-sub.Err():
  2761  					return err
  2762  				case <-quit:
  2763  					return nil
  2764  				}
  2765  			case err := <-sub.Err():
  2766  				return err
  2767  			case <-quit:
  2768  				return nil
  2769  			}
  2770  		}
  2771  	}), nil
  2772  }
  2773  
  2774  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2775  //
  2776  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2777  func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) {
  2778  	event := new(ERC20Transfer)
  2779  	if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  2780  		return nil, err
  2781  	}
  2782  	return event, nil
  2783  }
  2784  
  2785  // ERC20BurnableABI is the input ABI used to generate the binding from.
  2786  const ERC20BurnableABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  2787  
  2788  // ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation.
  2789  var ERC20BurnableFuncSigs = map[string]string{
  2790  	"dd62ed3e": "allowance(address,address)",
  2791  	"095ea7b3": "approve(address,uint256)",
  2792  	"70a08231": "balanceOf(address)",
  2793  	"42966c68": "burn(uint256)",
  2794  	"79cc6790": "burnFrom(address,uint256)",
  2795  	"a457c2d7": "decreaseAllowance(address,uint256)",
  2796  	"39509351": "increaseAllowance(address,uint256)",
  2797  	"18160ddd": "totalSupply()",
  2798  	"a9059cbb": "transfer(address,uint256)",
  2799  	"23b872dd": "transferFrom(address,address,uint256)",
  2800  }
  2801  
  2802  // ERC20BurnableBin is the compiled bytecode used for deploying new contracts.
  2803  var ERC20BurnableBin = "0x6080604052610ab7806100136000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb610273565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610279565b6100cf6004803603604081101561014957600080fd5b506001600160a01b038135169060200135610306565b61017c6004803603602081101561017557600080fd5b503561035a565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b031661036e565b61017c600480360360408110156101ba57600080fd5b506001600160a01b038135169060200135610389565b6100cf600480360360408110156101e657600080fd5b506001600160a01b038135169060200135610397565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610405565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610419565b600061026a610263610444565b8484610448565b50600192915050565b60025490565b6000610286848484610534565b6102fc84610292610444565b6102f7856040518060600160405280602881526020016109a8602891396001600160a01b038a166000908152600160205260408120906102d0610444565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61069016565b610448565b5060019392505050565b600061026a610313610444565b846102f78560016000610324610444565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61072716565b61036b610365610444565b82610788565b50565b6001600160a01b031660009081526020819052604090205490565b6103938282610884565b5050565b600061026a6103a4610444565b846102f785604051806060016040528060258152602001610a5e60259139600160006103ce610444565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61069016565b600061026a610412610444565b8484610534565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661048d5760405162461bcd60e51b8152600401808060200182810382526024815260200180610a3a6024913960400191505060405180910390fd5b6001600160a01b0382166104d25760405162461bcd60e51b81526004018080602001828103825260228152602001806109606022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105795760405162461bcd60e51b8152600401808060200182810382526025815260200180610a156025913960400191505060405180910390fd5b6001600160a01b0382166105be5760405162461bcd60e51b815260040180806020018281038252602381526020018061091b6023913960400191505060405180910390fd5b61060181604051806060016040528060268152602001610982602691396001600160a01b038616600090815260208190526040902054919063ffffffff61069016565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610636908263ffffffff61072716565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561071f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156106e45781810151838201526020016106cc565b50505050905090810190601f1680156107115780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610781576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166107cd5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b6108108160405180606001604052806022815260200161093e602291396001600160a01b038516600090815260208190526040902054919063ffffffff61069016565b6001600160a01b03831660009081526020819052604090205560025461083c908263ffffffff6108d816565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b61088e8282610788565b6103938261089a610444565b6102f7846040518060600160405280602481526020016109d0602491396001600160a01b0388166000908152600160205260408120906102d0610444565b600061078183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061069056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a72315820f1d69ab24aa4e03a9c57d269487eac94ddd30d01e9f8e7fb8561cbef87d6535a64736f6c634300050c0032"
  2804  
  2805  // DeployERC20Burnable deploys a new Ethereum contract, binding an instance of ERC20Burnable to it.
  2806  func DeployERC20Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Burnable, error) {
  2807  	parsed, err := abi.JSON(strings.NewReader(ERC20BurnableABI))
  2808  	if err != nil {
  2809  		return common.Address{}, nil, nil, err
  2810  	}
  2811  
  2812  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20BurnableBin), backend)
  2813  	if err != nil {
  2814  		return common.Address{}, nil, nil, err
  2815  	}
  2816  	return address, tx, &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
  2817  }
  2818  
  2819  // ERC20Burnable is an auto generated Go binding around an Ethereum contract.
  2820  type ERC20Burnable struct {
  2821  	ERC20BurnableCaller     // Read-only binding to the contract
  2822  	ERC20BurnableTransactor // Write-only binding to the contract
  2823  	ERC20BurnableFilterer   // Log filterer for contract events
  2824  }
  2825  
  2826  // ERC20BurnableCaller is an auto generated read-only Go binding around an Ethereum contract.
  2827  type ERC20BurnableCaller struct {
  2828  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2829  }
  2830  
  2831  // ERC20BurnableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  2832  type ERC20BurnableTransactor struct {
  2833  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2834  }
  2835  
  2836  // ERC20BurnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  2837  type ERC20BurnableFilterer struct {
  2838  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2839  }
  2840  
  2841  // ERC20BurnableSession is an auto generated Go binding around an Ethereum contract,
  2842  // with pre-set call and transact options.
  2843  type ERC20BurnableSession struct {
  2844  	Contract     *ERC20Burnable    // Generic contract binding to set the session for
  2845  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2846  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2847  }
  2848  
  2849  // ERC20BurnableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  2850  // with pre-set call options.
  2851  type ERC20BurnableCallerSession struct {
  2852  	Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for
  2853  	CallOpts bind.CallOpts        // Call options to use throughout this session
  2854  }
  2855  
  2856  // ERC20BurnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  2857  // with pre-set transact options.
  2858  type ERC20BurnableTransactorSession struct {
  2859  	Contract     *ERC20BurnableTransactor // Generic contract transactor binding to set the session for
  2860  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  2861  }
  2862  
  2863  // ERC20BurnableRaw is an auto generated low-level Go binding around an Ethereum contract.
  2864  type ERC20BurnableRaw struct {
  2865  	Contract *ERC20Burnable // Generic contract binding to access the raw methods on
  2866  }
  2867  
  2868  // ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  2869  type ERC20BurnableCallerRaw struct {
  2870  	Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on
  2871  }
  2872  
  2873  // ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  2874  type ERC20BurnableTransactorRaw struct {
  2875  	Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on
  2876  }
  2877  
  2878  // NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract.
  2879  func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) {
  2880  	contract, err := bindERC20Burnable(address, backend, backend, backend)
  2881  	if err != nil {
  2882  		return nil, err
  2883  	}
  2884  	return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
  2885  }
  2886  
  2887  // NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract.
  2888  func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) {
  2889  	contract, err := bindERC20Burnable(address, caller, nil, nil)
  2890  	if err != nil {
  2891  		return nil, err
  2892  	}
  2893  	return &ERC20BurnableCaller{contract: contract}, nil
  2894  }
  2895  
  2896  // NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract.
  2897  func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) {
  2898  	contract, err := bindERC20Burnable(address, nil, transactor, nil)
  2899  	if err != nil {
  2900  		return nil, err
  2901  	}
  2902  	return &ERC20BurnableTransactor{contract: contract}, nil
  2903  }
  2904  
  2905  // NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract.
  2906  func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) {
  2907  	contract, err := bindERC20Burnable(address, nil, nil, filterer)
  2908  	if err != nil {
  2909  		return nil, err
  2910  	}
  2911  	return &ERC20BurnableFilterer{contract: contract}, nil
  2912  }
  2913  
  2914  // bindERC20Burnable binds a generic wrapper to an already deployed contract.
  2915  func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2916  	parsed, err := abi.JSON(strings.NewReader(ERC20BurnableABI))
  2917  	if err != nil {
  2918  		return nil, err
  2919  	}
  2920  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2921  }
  2922  
  2923  // Call invokes the (constant) contract method with params as input values and
  2924  // sets the output to result. The result type might be a single field for simple
  2925  // returns, a slice of interfaces for anonymous returns and a struct for named
  2926  // returns.
  2927  func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2928  	return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...)
  2929  }
  2930  
  2931  // Transfer initiates a plain transaction to move funds to the contract, calling
  2932  // its default method if one is available.
  2933  func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2934  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts)
  2935  }
  2936  
  2937  // Transact invokes the (paid) contract method with params as input values.
  2938  func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2939  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...)
  2940  }
  2941  
  2942  // Call invokes the (constant) contract method with params as input values and
  2943  // sets the output to result. The result type might be a single field for simple
  2944  // returns, a slice of interfaces for anonymous returns and a struct for named
  2945  // returns.
  2946  func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2947  	return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...)
  2948  }
  2949  
  2950  // Transfer initiates a plain transaction to move funds to the contract, calling
  2951  // its default method if one is available.
  2952  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2953  	return _ERC20Burnable.Contract.contract.Transfer(opts)
  2954  }
  2955  
  2956  // Transact invokes the (paid) contract method with params as input values.
  2957  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2958  	return _ERC20Burnable.Contract.contract.Transact(opts, method, params...)
  2959  }
  2960  
  2961  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2962  //
  2963  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2964  func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  2965  	var (
  2966  		ret0 = new(*big.Int)
  2967  	)
  2968  	out := ret0
  2969  	err := _ERC20Burnable.contract.Call(opts, out, "allowance", owner, spender)
  2970  	return *ret0, err
  2971  }
  2972  
  2973  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2974  //
  2975  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2976  func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2977  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
  2978  }
  2979  
  2980  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2981  //
  2982  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  2983  func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2984  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
  2985  }
  2986  
  2987  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2988  //
  2989  // Solidity: function balanceOf(address account) constant returns(uint256)
  2990  func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  2991  	var (
  2992  		ret0 = new(*big.Int)
  2993  	)
  2994  	out := ret0
  2995  	err := _ERC20Burnable.contract.Call(opts, out, "balanceOf", account)
  2996  	return *ret0, err
  2997  }
  2998  
  2999  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3000  //
  3001  // Solidity: function balanceOf(address account) constant returns(uint256)
  3002  func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) {
  3003  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
  3004  }
  3005  
  3006  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3007  //
  3008  // Solidity: function balanceOf(address account) constant returns(uint256)
  3009  func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  3010  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
  3011  }
  3012  
  3013  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3014  //
  3015  // Solidity: function totalSupply() constant returns(uint256)
  3016  func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3017  	var (
  3018  		ret0 = new(*big.Int)
  3019  	)
  3020  	out := ret0
  3021  	err := _ERC20Burnable.contract.Call(opts, out, "totalSupply")
  3022  	return *ret0, err
  3023  }
  3024  
  3025  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3026  //
  3027  // Solidity: function totalSupply() constant returns(uint256)
  3028  func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) {
  3029  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
  3030  }
  3031  
  3032  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3033  //
  3034  // Solidity: function totalSupply() constant returns(uint256)
  3035  func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) {
  3036  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
  3037  }
  3038  
  3039  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3040  //
  3041  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3042  func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3043  	return _ERC20Burnable.contract.Transact(opts, "approve", spender, amount)
  3044  }
  3045  
  3046  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3047  //
  3048  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3049  func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3050  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, amount)
  3051  }
  3052  
  3053  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3054  //
  3055  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3056  func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3057  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, amount)
  3058  }
  3059  
  3060  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  3061  //
  3062  // Solidity: function burn(uint256 amount) returns()
  3063  func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
  3064  	return _ERC20Burnable.contract.Transact(opts, "burn", amount)
  3065  }
  3066  
  3067  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  3068  //
  3069  // Solidity: function burn(uint256 amount) returns()
  3070  func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) {
  3071  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
  3072  }
  3073  
  3074  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  3075  //
  3076  // Solidity: function burn(uint256 amount) returns()
  3077  func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
  3078  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
  3079  }
  3080  
  3081  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  3082  //
  3083  // Solidity: function burnFrom(address account, uint256 amount) returns()
  3084  func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
  3085  	return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount)
  3086  }
  3087  
  3088  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  3089  //
  3090  // Solidity: function burnFrom(address account, uint256 amount) returns()
  3091  func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
  3092  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
  3093  }
  3094  
  3095  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  3096  //
  3097  // Solidity: function burnFrom(address account, uint256 amount) returns()
  3098  func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
  3099  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
  3100  }
  3101  
  3102  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3103  //
  3104  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3105  func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3106  	return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  3107  }
  3108  
  3109  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3110  //
  3111  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3112  func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3113  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
  3114  }
  3115  
  3116  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3117  //
  3118  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3119  func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3120  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
  3121  }
  3122  
  3123  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3124  //
  3125  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3126  func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3127  	return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  3128  }
  3129  
  3130  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3131  //
  3132  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3133  func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3134  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
  3135  }
  3136  
  3137  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3138  //
  3139  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3140  func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3141  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
  3142  }
  3143  
  3144  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3145  //
  3146  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3147  func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3148  	return _ERC20Burnable.contract.Transact(opts, "transfer", recipient, amount)
  3149  }
  3150  
  3151  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3152  //
  3153  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3154  func (_ERC20Burnable *ERC20BurnableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3155  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
  3156  }
  3157  
  3158  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3159  //
  3160  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3161  func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3162  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
  3163  }
  3164  
  3165  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3166  //
  3167  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3168  func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3169  	return _ERC20Burnable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  3170  }
  3171  
  3172  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3173  //
  3174  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3175  func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3176  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
  3177  }
  3178  
  3179  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3180  //
  3181  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3182  func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3183  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
  3184  }
  3185  
  3186  // ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract.
  3187  type ERC20BurnableApprovalIterator struct {
  3188  	Event *ERC20BurnableApproval // Event containing the contract specifics and raw log
  3189  
  3190  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3191  	event    string              // Event name to use for unpacking event data
  3192  
  3193  	logs chan types.Log        // Log channel receiving the found contract events
  3194  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3195  	done bool                  // Whether the subscription completed delivering logs
  3196  	fail error                 // Occurred error to stop iteration
  3197  }
  3198  
  3199  // Next advances the iterator to the subsequent event, returning whether there
  3200  // are any more events found. In case of a retrieval or parsing error, false is
  3201  // returned and Error() can be queried for the exact failure.
  3202  func (it *ERC20BurnableApprovalIterator) Next() bool {
  3203  	// If the iterator failed, stop iterating
  3204  	if it.fail != nil {
  3205  		return false
  3206  	}
  3207  	// If the iterator completed, deliver directly whatever's available
  3208  	if it.done {
  3209  		select {
  3210  		case log := <-it.logs:
  3211  			it.Event = new(ERC20BurnableApproval)
  3212  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3213  				it.fail = err
  3214  				return false
  3215  			}
  3216  			it.Event.Raw = log
  3217  			return true
  3218  
  3219  		default:
  3220  			return false
  3221  		}
  3222  	}
  3223  	// Iterator still in progress, wait for either a data or an error event
  3224  	select {
  3225  	case log := <-it.logs:
  3226  		it.Event = new(ERC20BurnableApproval)
  3227  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3228  			it.fail = err
  3229  			return false
  3230  		}
  3231  		it.Event.Raw = log
  3232  		return true
  3233  
  3234  	case err := <-it.sub.Err():
  3235  		it.done = true
  3236  		it.fail = err
  3237  		return it.Next()
  3238  	}
  3239  }
  3240  
  3241  // Error returns any retrieval or parsing error occurred during filtering.
  3242  func (it *ERC20BurnableApprovalIterator) Error() error {
  3243  	return it.fail
  3244  }
  3245  
  3246  // Close terminates the iteration process, releasing any pending underlying
  3247  // resources.
  3248  func (it *ERC20BurnableApprovalIterator) Close() error {
  3249  	it.sub.Unsubscribe()
  3250  	return nil
  3251  }
  3252  
  3253  // ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract.
  3254  type ERC20BurnableApproval struct {
  3255  	Owner   common.Address
  3256  	Spender common.Address
  3257  	Value   *big.Int
  3258  	Raw     types.Log // Blockchain specific contextual infos
  3259  }
  3260  
  3261  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3262  //
  3263  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3264  func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) {
  3265  
  3266  	var ownerRule []interface{}
  3267  	for _, ownerItem := range owner {
  3268  		ownerRule = append(ownerRule, ownerItem)
  3269  	}
  3270  	var spenderRule []interface{}
  3271  	for _, spenderItem := range spender {
  3272  		spenderRule = append(spenderRule, spenderItem)
  3273  	}
  3274  
  3275  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  3276  	if err != nil {
  3277  		return nil, err
  3278  	}
  3279  	return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
  3280  }
  3281  
  3282  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3283  //
  3284  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3285  func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  3286  
  3287  	var ownerRule []interface{}
  3288  	for _, ownerItem := range owner {
  3289  		ownerRule = append(ownerRule, ownerItem)
  3290  	}
  3291  	var spenderRule []interface{}
  3292  	for _, spenderItem := range spender {
  3293  		spenderRule = append(spenderRule, spenderItem)
  3294  	}
  3295  
  3296  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  3297  	if err != nil {
  3298  		return nil, err
  3299  	}
  3300  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3301  		defer sub.Unsubscribe()
  3302  		for {
  3303  			select {
  3304  			case log := <-logs:
  3305  				// New log arrived, parse the event and forward to the user
  3306  				event := new(ERC20BurnableApproval)
  3307  				if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  3308  					return err
  3309  				}
  3310  				event.Raw = log
  3311  
  3312  				select {
  3313  				case sink <- event:
  3314  				case err := <-sub.Err():
  3315  					return err
  3316  				case <-quit:
  3317  					return nil
  3318  				}
  3319  			case err := <-sub.Err():
  3320  				return err
  3321  			case <-quit:
  3322  				return nil
  3323  			}
  3324  		}
  3325  	}), nil
  3326  }
  3327  
  3328  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3329  //
  3330  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3331  func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) {
  3332  	event := new(ERC20BurnableApproval)
  3333  	if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  3334  		return nil, err
  3335  	}
  3336  	return event, nil
  3337  }
  3338  
  3339  // ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract.
  3340  type ERC20BurnableTransferIterator struct {
  3341  	Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log
  3342  
  3343  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3344  	event    string              // Event name to use for unpacking event data
  3345  
  3346  	logs chan types.Log        // Log channel receiving the found contract events
  3347  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3348  	done bool                  // Whether the subscription completed delivering logs
  3349  	fail error                 // Occurred error to stop iteration
  3350  }
  3351  
  3352  // Next advances the iterator to the subsequent event, returning whether there
  3353  // are any more events found. In case of a retrieval or parsing error, false is
  3354  // returned and Error() can be queried for the exact failure.
  3355  func (it *ERC20BurnableTransferIterator) Next() bool {
  3356  	// If the iterator failed, stop iterating
  3357  	if it.fail != nil {
  3358  		return false
  3359  	}
  3360  	// If the iterator completed, deliver directly whatever's available
  3361  	if it.done {
  3362  		select {
  3363  		case log := <-it.logs:
  3364  			it.Event = new(ERC20BurnableTransfer)
  3365  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3366  				it.fail = err
  3367  				return false
  3368  			}
  3369  			it.Event.Raw = log
  3370  			return true
  3371  
  3372  		default:
  3373  			return false
  3374  		}
  3375  	}
  3376  	// Iterator still in progress, wait for either a data or an error event
  3377  	select {
  3378  	case log := <-it.logs:
  3379  		it.Event = new(ERC20BurnableTransfer)
  3380  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3381  			it.fail = err
  3382  			return false
  3383  		}
  3384  		it.Event.Raw = log
  3385  		return true
  3386  
  3387  	case err := <-it.sub.Err():
  3388  		it.done = true
  3389  		it.fail = err
  3390  		return it.Next()
  3391  	}
  3392  }
  3393  
  3394  // Error returns any retrieval or parsing error occurred during filtering.
  3395  func (it *ERC20BurnableTransferIterator) Error() error {
  3396  	return it.fail
  3397  }
  3398  
  3399  // Close terminates the iteration process, releasing any pending underlying
  3400  // resources.
  3401  func (it *ERC20BurnableTransferIterator) Close() error {
  3402  	it.sub.Unsubscribe()
  3403  	return nil
  3404  }
  3405  
  3406  // ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract.
  3407  type ERC20BurnableTransfer struct {
  3408  	From  common.Address
  3409  	To    common.Address
  3410  	Value *big.Int
  3411  	Raw   types.Log // Blockchain specific contextual infos
  3412  }
  3413  
  3414  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3415  //
  3416  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3417  func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) {
  3418  
  3419  	var fromRule []interface{}
  3420  	for _, fromItem := range from {
  3421  		fromRule = append(fromRule, fromItem)
  3422  	}
  3423  	var toRule []interface{}
  3424  	for _, toItem := range to {
  3425  		toRule = append(toRule, toItem)
  3426  	}
  3427  
  3428  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  3429  	if err != nil {
  3430  		return nil, err
  3431  	}
  3432  	return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3433  }
  3434  
  3435  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3436  //
  3437  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3438  func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  3439  
  3440  	var fromRule []interface{}
  3441  	for _, fromItem := range from {
  3442  		fromRule = append(fromRule, fromItem)
  3443  	}
  3444  	var toRule []interface{}
  3445  	for _, toItem := range to {
  3446  		toRule = append(toRule, toItem)
  3447  	}
  3448  
  3449  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  3450  	if err != nil {
  3451  		return nil, err
  3452  	}
  3453  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3454  		defer sub.Unsubscribe()
  3455  		for {
  3456  			select {
  3457  			case log := <-logs:
  3458  				// New log arrived, parse the event and forward to the user
  3459  				event := new(ERC20BurnableTransfer)
  3460  				if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  3461  					return err
  3462  				}
  3463  				event.Raw = log
  3464  
  3465  				select {
  3466  				case sink <- event:
  3467  				case err := <-sub.Err():
  3468  					return err
  3469  				case <-quit:
  3470  					return nil
  3471  				}
  3472  			case err := <-sub.Err():
  3473  				return err
  3474  			case <-quit:
  3475  				return nil
  3476  			}
  3477  		}
  3478  	}), nil
  3479  }
  3480  
  3481  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3482  //
  3483  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3484  func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) {
  3485  	event := new(ERC20BurnableTransfer)
  3486  	if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  3487  		return nil, err
  3488  	}
  3489  	return event, nil
  3490  }
  3491  
  3492  // ERC20DetailedABI is the input ABI used to generate the binding from.
  3493  const ERC20DetailedABI = "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  3494  
  3495  // ERC20DetailedFuncSigs maps the 4-byte function signature to its string representation.
  3496  var ERC20DetailedFuncSigs = map[string]string{
  3497  	"dd62ed3e": "allowance(address,address)",
  3498  	"095ea7b3": "approve(address,uint256)",
  3499  	"70a08231": "balanceOf(address)",
  3500  	"313ce567": "decimals()",
  3501  	"06fdde03": "name()",
  3502  	"95d89b41": "symbol()",
  3503  	"18160ddd": "totalSupply()",
  3504  	"a9059cbb": "transfer(address,uint256)",
  3505  	"23b872dd": "transferFrom(address,address,uint256)",
  3506  }
  3507  
  3508  // ERC20Detailed is an auto generated Go binding around an Ethereum contract.
  3509  type ERC20Detailed struct {
  3510  	ERC20DetailedCaller     // Read-only binding to the contract
  3511  	ERC20DetailedTransactor // Write-only binding to the contract
  3512  	ERC20DetailedFilterer   // Log filterer for contract events
  3513  }
  3514  
  3515  // ERC20DetailedCaller is an auto generated read-only Go binding around an Ethereum contract.
  3516  type ERC20DetailedCaller struct {
  3517  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3518  }
  3519  
  3520  // ERC20DetailedTransactor is an auto generated write-only Go binding around an Ethereum contract.
  3521  type ERC20DetailedTransactor struct {
  3522  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3523  }
  3524  
  3525  // ERC20DetailedFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  3526  type ERC20DetailedFilterer struct {
  3527  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3528  }
  3529  
  3530  // ERC20DetailedSession is an auto generated Go binding around an Ethereum contract,
  3531  // with pre-set call and transact options.
  3532  type ERC20DetailedSession struct {
  3533  	Contract     *ERC20Detailed    // Generic contract binding to set the session for
  3534  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  3535  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  3536  }
  3537  
  3538  // ERC20DetailedCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  3539  // with pre-set call options.
  3540  type ERC20DetailedCallerSession struct {
  3541  	Contract *ERC20DetailedCaller // Generic contract caller binding to set the session for
  3542  	CallOpts bind.CallOpts        // Call options to use throughout this session
  3543  }
  3544  
  3545  // ERC20DetailedTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  3546  // with pre-set transact options.
  3547  type ERC20DetailedTransactorSession struct {
  3548  	Contract     *ERC20DetailedTransactor // Generic contract transactor binding to set the session for
  3549  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  3550  }
  3551  
  3552  // ERC20DetailedRaw is an auto generated low-level Go binding around an Ethereum contract.
  3553  type ERC20DetailedRaw struct {
  3554  	Contract *ERC20Detailed // Generic contract binding to access the raw methods on
  3555  }
  3556  
  3557  // ERC20DetailedCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  3558  type ERC20DetailedCallerRaw struct {
  3559  	Contract *ERC20DetailedCaller // Generic read-only contract binding to access the raw methods on
  3560  }
  3561  
  3562  // ERC20DetailedTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  3563  type ERC20DetailedTransactorRaw struct {
  3564  	Contract *ERC20DetailedTransactor // Generic write-only contract binding to access the raw methods on
  3565  }
  3566  
  3567  // NewERC20Detailed creates a new instance of ERC20Detailed, bound to a specific deployed contract.
  3568  func NewERC20Detailed(address common.Address, backend bind.ContractBackend) (*ERC20Detailed, error) {
  3569  	contract, err := bindERC20Detailed(address, backend, backend, backend)
  3570  	if err != nil {
  3571  		return nil, err
  3572  	}
  3573  	return &ERC20Detailed{ERC20DetailedCaller: ERC20DetailedCaller{contract: contract}, ERC20DetailedTransactor: ERC20DetailedTransactor{contract: contract}, ERC20DetailedFilterer: ERC20DetailedFilterer{contract: contract}}, nil
  3574  }
  3575  
  3576  // NewERC20DetailedCaller creates a new read-only instance of ERC20Detailed, bound to a specific deployed contract.
  3577  func NewERC20DetailedCaller(address common.Address, caller bind.ContractCaller) (*ERC20DetailedCaller, error) {
  3578  	contract, err := bindERC20Detailed(address, caller, nil, nil)
  3579  	if err != nil {
  3580  		return nil, err
  3581  	}
  3582  	return &ERC20DetailedCaller{contract: contract}, nil
  3583  }
  3584  
  3585  // NewERC20DetailedTransactor creates a new write-only instance of ERC20Detailed, bound to a specific deployed contract.
  3586  func NewERC20DetailedTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20DetailedTransactor, error) {
  3587  	contract, err := bindERC20Detailed(address, nil, transactor, nil)
  3588  	if err != nil {
  3589  		return nil, err
  3590  	}
  3591  	return &ERC20DetailedTransactor{contract: contract}, nil
  3592  }
  3593  
  3594  // NewERC20DetailedFilterer creates a new log filterer instance of ERC20Detailed, bound to a specific deployed contract.
  3595  func NewERC20DetailedFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20DetailedFilterer, error) {
  3596  	contract, err := bindERC20Detailed(address, nil, nil, filterer)
  3597  	if err != nil {
  3598  		return nil, err
  3599  	}
  3600  	return &ERC20DetailedFilterer{contract: contract}, nil
  3601  }
  3602  
  3603  // bindERC20Detailed binds a generic wrapper to an already deployed contract.
  3604  func bindERC20Detailed(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3605  	parsed, err := abi.JSON(strings.NewReader(ERC20DetailedABI))
  3606  	if err != nil {
  3607  		return nil, err
  3608  	}
  3609  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  3610  }
  3611  
  3612  // Call invokes the (constant) contract method with params as input values and
  3613  // sets the output to result. The result type might be a single field for simple
  3614  // returns, a slice of interfaces for anonymous returns and a struct for named
  3615  // returns.
  3616  func (_ERC20Detailed *ERC20DetailedRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3617  	return _ERC20Detailed.Contract.ERC20DetailedCaller.contract.Call(opts, result, method, params...)
  3618  }
  3619  
  3620  // Transfer initiates a plain transaction to move funds to the contract, calling
  3621  // its default method if one is available.
  3622  func (_ERC20Detailed *ERC20DetailedRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3623  	return _ERC20Detailed.Contract.ERC20DetailedTransactor.contract.Transfer(opts)
  3624  }
  3625  
  3626  // Transact invokes the (paid) contract method with params as input values.
  3627  func (_ERC20Detailed *ERC20DetailedRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3628  	return _ERC20Detailed.Contract.ERC20DetailedTransactor.contract.Transact(opts, method, params...)
  3629  }
  3630  
  3631  // Call invokes the (constant) contract method with params as input values and
  3632  // sets the output to result. The result type might be a single field for simple
  3633  // returns, a slice of interfaces for anonymous returns and a struct for named
  3634  // returns.
  3635  func (_ERC20Detailed *ERC20DetailedCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3636  	return _ERC20Detailed.Contract.contract.Call(opts, result, method, params...)
  3637  }
  3638  
  3639  // Transfer initiates a plain transaction to move funds to the contract, calling
  3640  // its default method if one is available.
  3641  func (_ERC20Detailed *ERC20DetailedTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3642  	return _ERC20Detailed.Contract.contract.Transfer(opts)
  3643  }
  3644  
  3645  // Transact invokes the (paid) contract method with params as input values.
  3646  func (_ERC20Detailed *ERC20DetailedTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3647  	return _ERC20Detailed.Contract.contract.Transact(opts, method, params...)
  3648  }
  3649  
  3650  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3651  //
  3652  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  3653  func (_ERC20Detailed *ERC20DetailedCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  3654  	var (
  3655  		ret0 = new(*big.Int)
  3656  	)
  3657  	out := ret0
  3658  	err := _ERC20Detailed.contract.Call(opts, out, "allowance", owner, spender)
  3659  	return *ret0, err
  3660  }
  3661  
  3662  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3663  //
  3664  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  3665  func (_ERC20Detailed *ERC20DetailedSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  3666  	return _ERC20Detailed.Contract.Allowance(&_ERC20Detailed.CallOpts, owner, spender)
  3667  }
  3668  
  3669  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3670  //
  3671  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  3672  func (_ERC20Detailed *ERC20DetailedCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  3673  	return _ERC20Detailed.Contract.Allowance(&_ERC20Detailed.CallOpts, owner, spender)
  3674  }
  3675  
  3676  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3677  //
  3678  // Solidity: function balanceOf(address account) constant returns(uint256)
  3679  func (_ERC20Detailed *ERC20DetailedCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  3680  	var (
  3681  		ret0 = new(*big.Int)
  3682  	)
  3683  	out := ret0
  3684  	err := _ERC20Detailed.contract.Call(opts, out, "balanceOf", account)
  3685  	return *ret0, err
  3686  }
  3687  
  3688  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3689  //
  3690  // Solidity: function balanceOf(address account) constant returns(uint256)
  3691  func (_ERC20Detailed *ERC20DetailedSession) BalanceOf(account common.Address) (*big.Int, error) {
  3692  	return _ERC20Detailed.Contract.BalanceOf(&_ERC20Detailed.CallOpts, account)
  3693  }
  3694  
  3695  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3696  //
  3697  // Solidity: function balanceOf(address account) constant returns(uint256)
  3698  func (_ERC20Detailed *ERC20DetailedCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  3699  	return _ERC20Detailed.Contract.BalanceOf(&_ERC20Detailed.CallOpts, account)
  3700  }
  3701  
  3702  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  3703  //
  3704  // Solidity: function decimals() constant returns(uint8)
  3705  func (_ERC20Detailed *ERC20DetailedCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
  3706  	var (
  3707  		ret0 = new(uint8)
  3708  	)
  3709  	out := ret0
  3710  	err := _ERC20Detailed.contract.Call(opts, out, "decimals")
  3711  	return *ret0, err
  3712  }
  3713  
  3714  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  3715  //
  3716  // Solidity: function decimals() constant returns(uint8)
  3717  func (_ERC20Detailed *ERC20DetailedSession) Decimals() (uint8, error) {
  3718  	return _ERC20Detailed.Contract.Decimals(&_ERC20Detailed.CallOpts)
  3719  }
  3720  
  3721  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
  3722  //
  3723  // Solidity: function decimals() constant returns(uint8)
  3724  func (_ERC20Detailed *ERC20DetailedCallerSession) Decimals() (uint8, error) {
  3725  	return _ERC20Detailed.Contract.Decimals(&_ERC20Detailed.CallOpts)
  3726  }
  3727  
  3728  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3729  //
  3730  // Solidity: function name() constant returns(string)
  3731  func (_ERC20Detailed *ERC20DetailedCaller) Name(opts *bind.CallOpts) (string, error) {
  3732  	var (
  3733  		ret0 = new(string)
  3734  	)
  3735  	out := ret0
  3736  	err := _ERC20Detailed.contract.Call(opts, out, "name")
  3737  	return *ret0, err
  3738  }
  3739  
  3740  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3741  //
  3742  // Solidity: function name() constant returns(string)
  3743  func (_ERC20Detailed *ERC20DetailedSession) Name() (string, error) {
  3744  	return _ERC20Detailed.Contract.Name(&_ERC20Detailed.CallOpts)
  3745  }
  3746  
  3747  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3748  //
  3749  // Solidity: function name() constant returns(string)
  3750  func (_ERC20Detailed *ERC20DetailedCallerSession) Name() (string, error) {
  3751  	return _ERC20Detailed.Contract.Name(&_ERC20Detailed.CallOpts)
  3752  }
  3753  
  3754  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3755  //
  3756  // Solidity: function symbol() constant returns(string)
  3757  func (_ERC20Detailed *ERC20DetailedCaller) Symbol(opts *bind.CallOpts) (string, error) {
  3758  	var (
  3759  		ret0 = new(string)
  3760  	)
  3761  	out := ret0
  3762  	err := _ERC20Detailed.contract.Call(opts, out, "symbol")
  3763  	return *ret0, err
  3764  }
  3765  
  3766  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3767  //
  3768  // Solidity: function symbol() constant returns(string)
  3769  func (_ERC20Detailed *ERC20DetailedSession) Symbol() (string, error) {
  3770  	return _ERC20Detailed.Contract.Symbol(&_ERC20Detailed.CallOpts)
  3771  }
  3772  
  3773  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3774  //
  3775  // Solidity: function symbol() constant returns(string)
  3776  func (_ERC20Detailed *ERC20DetailedCallerSession) Symbol() (string, error) {
  3777  	return _ERC20Detailed.Contract.Symbol(&_ERC20Detailed.CallOpts)
  3778  }
  3779  
  3780  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3781  //
  3782  // Solidity: function totalSupply() constant returns(uint256)
  3783  func (_ERC20Detailed *ERC20DetailedCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3784  	var (
  3785  		ret0 = new(*big.Int)
  3786  	)
  3787  	out := ret0
  3788  	err := _ERC20Detailed.contract.Call(opts, out, "totalSupply")
  3789  	return *ret0, err
  3790  }
  3791  
  3792  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3793  //
  3794  // Solidity: function totalSupply() constant returns(uint256)
  3795  func (_ERC20Detailed *ERC20DetailedSession) TotalSupply() (*big.Int, error) {
  3796  	return _ERC20Detailed.Contract.TotalSupply(&_ERC20Detailed.CallOpts)
  3797  }
  3798  
  3799  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3800  //
  3801  // Solidity: function totalSupply() constant returns(uint256)
  3802  func (_ERC20Detailed *ERC20DetailedCallerSession) TotalSupply() (*big.Int, error) {
  3803  	return _ERC20Detailed.Contract.TotalSupply(&_ERC20Detailed.CallOpts)
  3804  }
  3805  
  3806  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3807  //
  3808  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3809  func (_ERC20Detailed *ERC20DetailedTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3810  	return _ERC20Detailed.contract.Transact(opts, "approve", spender, amount)
  3811  }
  3812  
  3813  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3814  //
  3815  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3816  func (_ERC20Detailed *ERC20DetailedSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3817  	return _ERC20Detailed.Contract.Approve(&_ERC20Detailed.TransactOpts, spender, amount)
  3818  }
  3819  
  3820  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3821  //
  3822  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3823  func (_ERC20Detailed *ERC20DetailedTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3824  	return _ERC20Detailed.Contract.Approve(&_ERC20Detailed.TransactOpts, spender, amount)
  3825  }
  3826  
  3827  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3828  //
  3829  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3830  func (_ERC20Detailed *ERC20DetailedTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3831  	return _ERC20Detailed.contract.Transact(opts, "transfer", recipient, amount)
  3832  }
  3833  
  3834  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3835  //
  3836  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3837  func (_ERC20Detailed *ERC20DetailedSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3838  	return _ERC20Detailed.Contract.Transfer(&_ERC20Detailed.TransactOpts, recipient, amount)
  3839  }
  3840  
  3841  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3842  //
  3843  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3844  func (_ERC20Detailed *ERC20DetailedTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3845  	return _ERC20Detailed.Contract.Transfer(&_ERC20Detailed.TransactOpts, recipient, amount)
  3846  }
  3847  
  3848  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3849  //
  3850  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3851  func (_ERC20Detailed *ERC20DetailedTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3852  	return _ERC20Detailed.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  3853  }
  3854  
  3855  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3856  //
  3857  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3858  func (_ERC20Detailed *ERC20DetailedSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3859  	return _ERC20Detailed.Contract.TransferFrom(&_ERC20Detailed.TransactOpts, sender, recipient, amount)
  3860  }
  3861  
  3862  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3863  //
  3864  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3865  func (_ERC20Detailed *ERC20DetailedTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3866  	return _ERC20Detailed.Contract.TransferFrom(&_ERC20Detailed.TransactOpts, sender, recipient, amount)
  3867  }
  3868  
  3869  // ERC20DetailedApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Detailed contract.
  3870  type ERC20DetailedApprovalIterator struct {
  3871  	Event *ERC20DetailedApproval // Event containing the contract specifics and raw log
  3872  
  3873  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3874  	event    string              // Event name to use for unpacking event data
  3875  
  3876  	logs chan types.Log        // Log channel receiving the found contract events
  3877  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  3878  	done bool                  // Whether the subscription completed delivering logs
  3879  	fail error                 // Occurred error to stop iteration
  3880  }
  3881  
  3882  // Next advances the iterator to the subsequent event, returning whether there
  3883  // are any more events found. In case of a retrieval or parsing error, false is
  3884  // returned and Error() can be queried for the exact failure.
  3885  func (it *ERC20DetailedApprovalIterator) Next() bool {
  3886  	// If the iterator failed, stop iterating
  3887  	if it.fail != nil {
  3888  		return false
  3889  	}
  3890  	// If the iterator completed, deliver directly whatever's available
  3891  	if it.done {
  3892  		select {
  3893  		case log := <-it.logs:
  3894  			it.Event = new(ERC20DetailedApproval)
  3895  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3896  				it.fail = err
  3897  				return false
  3898  			}
  3899  			it.Event.Raw = log
  3900  			return true
  3901  
  3902  		default:
  3903  			return false
  3904  		}
  3905  	}
  3906  	// Iterator still in progress, wait for either a data or an error event
  3907  	select {
  3908  	case log := <-it.logs:
  3909  		it.Event = new(ERC20DetailedApproval)
  3910  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3911  			it.fail = err
  3912  			return false
  3913  		}
  3914  		it.Event.Raw = log
  3915  		return true
  3916  
  3917  	case err := <-it.sub.Err():
  3918  		it.done = true
  3919  		it.fail = err
  3920  		return it.Next()
  3921  	}
  3922  }
  3923  
  3924  // Error returns any retrieval or parsing error occurred during filtering.
  3925  func (it *ERC20DetailedApprovalIterator) Error() error {
  3926  	return it.fail
  3927  }
  3928  
  3929  // Close terminates the iteration process, releasing any pending underlying
  3930  // resources.
  3931  func (it *ERC20DetailedApprovalIterator) Close() error {
  3932  	it.sub.Unsubscribe()
  3933  	return nil
  3934  }
  3935  
  3936  // ERC20DetailedApproval represents a Approval event raised by the ERC20Detailed contract.
  3937  type ERC20DetailedApproval struct {
  3938  	Owner   common.Address
  3939  	Spender common.Address
  3940  	Value   *big.Int
  3941  	Raw     types.Log // Blockchain specific contextual infos
  3942  }
  3943  
  3944  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3945  //
  3946  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3947  func (_ERC20Detailed *ERC20DetailedFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20DetailedApprovalIterator, error) {
  3948  
  3949  	var ownerRule []interface{}
  3950  	for _, ownerItem := range owner {
  3951  		ownerRule = append(ownerRule, ownerItem)
  3952  	}
  3953  	var spenderRule []interface{}
  3954  	for _, spenderItem := range spender {
  3955  		spenderRule = append(spenderRule, spenderItem)
  3956  	}
  3957  
  3958  	logs, sub, err := _ERC20Detailed.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  3959  	if err != nil {
  3960  		return nil, err
  3961  	}
  3962  	return &ERC20DetailedApprovalIterator{contract: _ERC20Detailed.contract, event: "Approval", logs: logs, sub: sub}, nil
  3963  }
  3964  
  3965  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3966  //
  3967  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3968  func (_ERC20Detailed *ERC20DetailedFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20DetailedApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  3969  
  3970  	var ownerRule []interface{}
  3971  	for _, ownerItem := range owner {
  3972  		ownerRule = append(ownerRule, ownerItem)
  3973  	}
  3974  	var spenderRule []interface{}
  3975  	for _, spenderItem := range spender {
  3976  		spenderRule = append(spenderRule, spenderItem)
  3977  	}
  3978  
  3979  	logs, sub, err := _ERC20Detailed.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  3980  	if err != nil {
  3981  		return nil, err
  3982  	}
  3983  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3984  		defer sub.Unsubscribe()
  3985  		for {
  3986  			select {
  3987  			case log := <-logs:
  3988  				// New log arrived, parse the event and forward to the user
  3989  				event := new(ERC20DetailedApproval)
  3990  				if err := _ERC20Detailed.contract.UnpackLog(event, "Approval", log); err != nil {
  3991  					return err
  3992  				}
  3993  				event.Raw = log
  3994  
  3995  				select {
  3996  				case sink <- event:
  3997  				case err := <-sub.Err():
  3998  					return err
  3999  				case <-quit:
  4000  					return nil
  4001  				}
  4002  			case err := <-sub.Err():
  4003  				return err
  4004  			case <-quit:
  4005  				return nil
  4006  			}
  4007  		}
  4008  	}), nil
  4009  }
  4010  
  4011  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4012  //
  4013  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4014  func (_ERC20Detailed *ERC20DetailedFilterer) ParseApproval(log types.Log) (*ERC20DetailedApproval, error) {
  4015  	event := new(ERC20DetailedApproval)
  4016  	if err := _ERC20Detailed.contract.UnpackLog(event, "Approval", log); err != nil {
  4017  		return nil, err
  4018  	}
  4019  	return event, nil
  4020  }
  4021  
  4022  // ERC20DetailedTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Detailed contract.
  4023  type ERC20DetailedTransferIterator struct {
  4024  	Event *ERC20DetailedTransfer // Event containing the contract specifics and raw log
  4025  
  4026  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4027  	event    string              // Event name to use for unpacking event data
  4028  
  4029  	logs chan types.Log        // Log channel receiving the found contract events
  4030  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4031  	done bool                  // Whether the subscription completed delivering logs
  4032  	fail error                 // Occurred error to stop iteration
  4033  }
  4034  
  4035  // Next advances the iterator to the subsequent event, returning whether there
  4036  // are any more events found. In case of a retrieval or parsing error, false is
  4037  // returned and Error() can be queried for the exact failure.
  4038  func (it *ERC20DetailedTransferIterator) Next() bool {
  4039  	// If the iterator failed, stop iterating
  4040  	if it.fail != nil {
  4041  		return false
  4042  	}
  4043  	// If the iterator completed, deliver directly whatever's available
  4044  	if it.done {
  4045  		select {
  4046  		case log := <-it.logs:
  4047  			it.Event = new(ERC20DetailedTransfer)
  4048  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4049  				it.fail = err
  4050  				return false
  4051  			}
  4052  			it.Event.Raw = log
  4053  			return true
  4054  
  4055  		default:
  4056  			return false
  4057  		}
  4058  	}
  4059  	// Iterator still in progress, wait for either a data or an error event
  4060  	select {
  4061  	case log := <-it.logs:
  4062  		it.Event = new(ERC20DetailedTransfer)
  4063  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4064  			it.fail = err
  4065  			return false
  4066  		}
  4067  		it.Event.Raw = log
  4068  		return true
  4069  
  4070  	case err := <-it.sub.Err():
  4071  		it.done = true
  4072  		it.fail = err
  4073  		return it.Next()
  4074  	}
  4075  }
  4076  
  4077  // Error returns any retrieval or parsing error occurred during filtering.
  4078  func (it *ERC20DetailedTransferIterator) Error() error {
  4079  	return it.fail
  4080  }
  4081  
  4082  // Close terminates the iteration process, releasing any pending underlying
  4083  // resources.
  4084  func (it *ERC20DetailedTransferIterator) Close() error {
  4085  	it.sub.Unsubscribe()
  4086  	return nil
  4087  }
  4088  
  4089  // ERC20DetailedTransfer represents a Transfer event raised by the ERC20Detailed contract.
  4090  type ERC20DetailedTransfer struct {
  4091  	From  common.Address
  4092  	To    common.Address
  4093  	Value *big.Int
  4094  	Raw   types.Log // Blockchain specific contextual infos
  4095  }
  4096  
  4097  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4098  //
  4099  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4100  func (_ERC20Detailed *ERC20DetailedFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20DetailedTransferIterator, error) {
  4101  
  4102  	var fromRule []interface{}
  4103  	for _, fromItem := range from {
  4104  		fromRule = append(fromRule, fromItem)
  4105  	}
  4106  	var toRule []interface{}
  4107  	for _, toItem := range to {
  4108  		toRule = append(toRule, toItem)
  4109  	}
  4110  
  4111  	logs, sub, err := _ERC20Detailed.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  4112  	if err != nil {
  4113  		return nil, err
  4114  	}
  4115  	return &ERC20DetailedTransferIterator{contract: _ERC20Detailed.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4116  }
  4117  
  4118  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4119  //
  4120  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4121  func (_ERC20Detailed *ERC20DetailedFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20DetailedTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  4122  
  4123  	var fromRule []interface{}
  4124  	for _, fromItem := range from {
  4125  		fromRule = append(fromRule, fromItem)
  4126  	}
  4127  	var toRule []interface{}
  4128  	for _, toItem := range to {
  4129  		toRule = append(toRule, toItem)
  4130  	}
  4131  
  4132  	logs, sub, err := _ERC20Detailed.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  4133  	if err != nil {
  4134  		return nil, err
  4135  	}
  4136  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4137  		defer sub.Unsubscribe()
  4138  		for {
  4139  			select {
  4140  			case log := <-logs:
  4141  				// New log arrived, parse the event and forward to the user
  4142  				event := new(ERC20DetailedTransfer)
  4143  				if err := _ERC20Detailed.contract.UnpackLog(event, "Transfer", log); err != nil {
  4144  					return err
  4145  				}
  4146  				event.Raw = log
  4147  
  4148  				select {
  4149  				case sink <- event:
  4150  				case err := <-sub.Err():
  4151  					return err
  4152  				case <-quit:
  4153  					return nil
  4154  				}
  4155  			case err := <-sub.Err():
  4156  				return err
  4157  			case <-quit:
  4158  				return nil
  4159  			}
  4160  		}
  4161  	}), nil
  4162  }
  4163  
  4164  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4165  //
  4166  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4167  func (_ERC20Detailed *ERC20DetailedFilterer) ParseTransfer(log types.Log) (*ERC20DetailedTransfer, error) {
  4168  	event := new(ERC20DetailedTransfer)
  4169  	if err := _ERC20Detailed.contract.UnpackLog(event, "Transfer", log); err != nil {
  4170  		return nil, err
  4171  	}
  4172  	return event, nil
  4173  }
  4174  
  4175  // ERC20MintableABI is the input ABI used to generate the binding from.
  4176  const ERC20MintableABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  4177  
  4178  // ERC20MintableFuncSigs maps the 4-byte function signature to its string representation.
  4179  var ERC20MintableFuncSigs = map[string]string{
  4180  	"983b2d56": "addMinter(address)",
  4181  	"dd62ed3e": "allowance(address,address)",
  4182  	"095ea7b3": "approve(address,uint256)",
  4183  	"70a08231": "balanceOf(address)",
  4184  	"a457c2d7": "decreaseAllowance(address,uint256)",
  4185  	"39509351": "increaseAllowance(address,uint256)",
  4186  	"aa271e1a": "isMinter(address)",
  4187  	"40c10f19": "mint(address,uint256)",
  4188  	"98650275": "renounceMinter()",
  4189  	"18160ddd": "totalSupply()",
  4190  	"a9059cbb": "transfer(address,uint256)",
  4191  	"23b872dd": "transferFrom(address,address,uint256)",
  4192  }
  4193  
  4194  // ERC20MintableBin is the compiled bytecode used for deploying new contracts.
  4195  var ERC20MintableBin = "0x60806040526100266100186001600160e01b0361002b16565b6001600160e01b0361002f16565b6101a3565b3390565b61004781600361007e60201b610a6e1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61009182826001600160e01b0361012216565b156100fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610183576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610eb16022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610cff806101b26000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102c0565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102c6565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610353565b6100e56004803603604081101561018b57600080fd5b506001600160a01b0381351690602001356103a7565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103fe565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b0316610419565b005b6101ed61046b565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561047d565b6100e56004803603604081101561023957600080fd5b506001600160a01b0381351690602001356104eb565b6100e56004803603602081101561026557600080fd5b50356001600160a01b03166104ff565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610518565b60006102b76102b0610543565b8484610547565b50600192915050565b60025490565b60006102d3848484610633565b610349846102df610543565b61034485604051806060016040528060288152602001610c13602891396001600160a01b038a1660009081526001602052604081209061031d610543565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61078f16565b610547565b5060019392505050565b60006102b7610360610543565b846103448560016000610371610543565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61082616565b60006103b96103b4610543565b6104ff565b6103f45760405162461bcd60e51b8152600401808060200182810382526030815260200180610bc26030913960400191505060405180910390fd5b6102b78383610887565b6001600160a01b031660009081526020819052604090205490565b6104246103b4610543565b61045f5760405162461bcd60e51b8152600401808060200182810382526030815260200180610bc26030913960400191505060405180910390fd5b61046881610977565b50565b61047b610476610543565b6109bf565b565b60006102b761048a610543565b8461034485604051806060016040528060258152602001610ca660259139600160006104b4610543565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61078f16565b60006102b76104f8610543565b8484610633565b600061051260038363ffffffff610a0716565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661058c5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c826024913960400191505060405180910390fd5b6001600160a01b0382166105d15760405162461bcd60e51b8152600401808060200182810382526022815260200180610b7a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106785760405162461bcd60e51b8152600401808060200182810382526025815260200180610c5d6025913960400191505060405180910390fd5b6001600160a01b0382166106bd5760405162461bcd60e51b8152600401808060200182810382526023815260200180610b576023913960400191505060405180910390fd5b61070081604051806060016040528060268152602001610b9c602691396001600160a01b038616600090815260208190526040902054919063ffffffff61078f16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610735908263ffffffff61082616565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561081e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156107e35781810151838201526020016107cb565b50505050905090810190601f1680156108105780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610880576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108e2576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546108f5908263ffffffff61082616565b6002556001600160a01b038216600090815260208190526040902054610921908263ffffffff61082616565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61098860038263ffffffff610a6e16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6109d060038263ffffffff610aef16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610a4e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c3b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610a788282610a07565b15610aca576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610af98282610a07565b610b345760405162461bcd60e51b8152600401808060200182810382526021815260200180610bf26021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158209bffbae26a8473ab446e60484fc8f37931f262c4c630ff4ea7ef2fd99a2a4ba364736f6c634300050c0032526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
  4196  
  4197  // DeployERC20Mintable deploys a new Ethereum contract, binding an instance of ERC20Mintable to it.
  4198  func DeployERC20Mintable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Mintable, error) {
  4199  	parsed, err := abi.JSON(strings.NewReader(ERC20MintableABI))
  4200  	if err != nil {
  4201  		return common.Address{}, nil, nil, err
  4202  	}
  4203  
  4204  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20MintableBin), backend)
  4205  	if err != nil {
  4206  		return common.Address{}, nil, nil, err
  4207  	}
  4208  	return address, tx, &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
  4209  }
  4210  
  4211  // ERC20Mintable is an auto generated Go binding around an Ethereum contract.
  4212  type ERC20Mintable struct {
  4213  	ERC20MintableCaller     // Read-only binding to the contract
  4214  	ERC20MintableTransactor // Write-only binding to the contract
  4215  	ERC20MintableFilterer   // Log filterer for contract events
  4216  }
  4217  
  4218  // ERC20MintableCaller is an auto generated read-only Go binding around an Ethereum contract.
  4219  type ERC20MintableCaller struct {
  4220  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4221  }
  4222  
  4223  // ERC20MintableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  4224  type ERC20MintableTransactor struct {
  4225  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4226  }
  4227  
  4228  // ERC20MintableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  4229  type ERC20MintableFilterer struct {
  4230  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4231  }
  4232  
  4233  // ERC20MintableSession is an auto generated Go binding around an Ethereum contract,
  4234  // with pre-set call and transact options.
  4235  type ERC20MintableSession struct {
  4236  	Contract     *ERC20Mintable    // Generic contract binding to set the session for
  4237  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4238  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4239  }
  4240  
  4241  // ERC20MintableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  4242  // with pre-set call options.
  4243  type ERC20MintableCallerSession struct {
  4244  	Contract *ERC20MintableCaller // Generic contract caller binding to set the session for
  4245  	CallOpts bind.CallOpts        // Call options to use throughout this session
  4246  }
  4247  
  4248  // ERC20MintableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  4249  // with pre-set transact options.
  4250  type ERC20MintableTransactorSession struct {
  4251  	Contract     *ERC20MintableTransactor // Generic contract transactor binding to set the session for
  4252  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  4253  }
  4254  
  4255  // ERC20MintableRaw is an auto generated low-level Go binding around an Ethereum contract.
  4256  type ERC20MintableRaw struct {
  4257  	Contract *ERC20Mintable // Generic contract binding to access the raw methods on
  4258  }
  4259  
  4260  // ERC20MintableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  4261  type ERC20MintableCallerRaw struct {
  4262  	Contract *ERC20MintableCaller // Generic read-only contract binding to access the raw methods on
  4263  }
  4264  
  4265  // ERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  4266  type ERC20MintableTransactorRaw struct {
  4267  	Contract *ERC20MintableTransactor // Generic write-only contract binding to access the raw methods on
  4268  }
  4269  
  4270  // NewERC20Mintable creates a new instance of ERC20Mintable, bound to a specific deployed contract.
  4271  func NewERC20Mintable(address common.Address, backend bind.ContractBackend) (*ERC20Mintable, error) {
  4272  	contract, err := bindERC20Mintable(address, backend, backend, backend)
  4273  	if err != nil {
  4274  		return nil, err
  4275  	}
  4276  	return &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
  4277  }
  4278  
  4279  // NewERC20MintableCaller creates a new read-only instance of ERC20Mintable, bound to a specific deployed contract.
  4280  func NewERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*ERC20MintableCaller, error) {
  4281  	contract, err := bindERC20Mintable(address, caller, nil, nil)
  4282  	if err != nil {
  4283  		return nil, err
  4284  	}
  4285  	return &ERC20MintableCaller{contract: contract}, nil
  4286  }
  4287  
  4288  // NewERC20MintableTransactor creates a new write-only instance of ERC20Mintable, bound to a specific deployed contract.
  4289  func NewERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MintableTransactor, error) {
  4290  	contract, err := bindERC20Mintable(address, nil, transactor, nil)
  4291  	if err != nil {
  4292  		return nil, err
  4293  	}
  4294  	return &ERC20MintableTransactor{contract: contract}, nil
  4295  }
  4296  
  4297  // NewERC20MintableFilterer creates a new log filterer instance of ERC20Mintable, bound to a specific deployed contract.
  4298  func NewERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MintableFilterer, error) {
  4299  	contract, err := bindERC20Mintable(address, nil, nil, filterer)
  4300  	if err != nil {
  4301  		return nil, err
  4302  	}
  4303  	return &ERC20MintableFilterer{contract: contract}, nil
  4304  }
  4305  
  4306  // bindERC20Mintable binds a generic wrapper to an already deployed contract.
  4307  func bindERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4308  	parsed, err := abi.JSON(strings.NewReader(ERC20MintableABI))
  4309  	if err != nil {
  4310  		return nil, err
  4311  	}
  4312  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4313  }
  4314  
  4315  // Call invokes the (constant) contract method with params as input values and
  4316  // sets the output to result. The result type might be a single field for simple
  4317  // returns, a slice of interfaces for anonymous returns and a struct for named
  4318  // returns.
  4319  func (_ERC20Mintable *ERC20MintableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4320  	return _ERC20Mintable.Contract.ERC20MintableCaller.contract.Call(opts, result, method, params...)
  4321  }
  4322  
  4323  // Transfer initiates a plain transaction to move funds to the contract, calling
  4324  // its default method if one is available.
  4325  func (_ERC20Mintable *ERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4326  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transfer(opts)
  4327  }
  4328  
  4329  // Transact invokes the (paid) contract method with params as input values.
  4330  func (_ERC20Mintable *ERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4331  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transact(opts, method, params...)
  4332  }
  4333  
  4334  // Call invokes the (constant) contract method with params as input values and
  4335  // sets the output to result. The result type might be a single field for simple
  4336  // returns, a slice of interfaces for anonymous returns and a struct for named
  4337  // returns.
  4338  func (_ERC20Mintable *ERC20MintableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4339  	return _ERC20Mintable.Contract.contract.Call(opts, result, method, params...)
  4340  }
  4341  
  4342  // Transfer initiates a plain transaction to move funds to the contract, calling
  4343  // its default method if one is available.
  4344  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4345  	return _ERC20Mintable.Contract.contract.Transfer(opts)
  4346  }
  4347  
  4348  // Transact invokes the (paid) contract method with params as input values.
  4349  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4350  	return _ERC20Mintable.Contract.contract.Transact(opts, method, params...)
  4351  }
  4352  
  4353  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  4354  //
  4355  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  4356  func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  4357  	var (
  4358  		ret0 = new(*big.Int)
  4359  	)
  4360  	out := ret0
  4361  	err := _ERC20Mintable.contract.Call(opts, out, "allowance", owner, spender)
  4362  	return *ret0, err
  4363  }
  4364  
  4365  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  4366  //
  4367  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  4368  func (_ERC20Mintable *ERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  4369  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
  4370  }
  4371  
  4372  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  4373  //
  4374  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  4375  func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  4376  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
  4377  }
  4378  
  4379  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4380  //
  4381  // Solidity: function balanceOf(address account) constant returns(uint256)
  4382  func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  4383  	var (
  4384  		ret0 = new(*big.Int)
  4385  	)
  4386  	out := ret0
  4387  	err := _ERC20Mintable.contract.Call(opts, out, "balanceOf", account)
  4388  	return *ret0, err
  4389  }
  4390  
  4391  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4392  //
  4393  // Solidity: function balanceOf(address account) constant returns(uint256)
  4394  func (_ERC20Mintable *ERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) {
  4395  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
  4396  }
  4397  
  4398  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4399  //
  4400  // Solidity: function balanceOf(address account) constant returns(uint256)
  4401  func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  4402  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
  4403  }
  4404  
  4405  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  4406  //
  4407  // Solidity: function isMinter(address account) constant returns(bool)
  4408  func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  4409  	var (
  4410  		ret0 = new(bool)
  4411  	)
  4412  	out := ret0
  4413  	err := _ERC20Mintable.contract.Call(opts, out, "isMinter", account)
  4414  	return *ret0, err
  4415  }
  4416  
  4417  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  4418  //
  4419  // Solidity: function isMinter(address account) constant returns(bool)
  4420  func (_ERC20Mintable *ERC20MintableSession) IsMinter(account common.Address) (bool, error) {
  4421  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
  4422  }
  4423  
  4424  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  4425  //
  4426  // Solidity: function isMinter(address account) constant returns(bool)
  4427  func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Address) (bool, error) {
  4428  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
  4429  }
  4430  
  4431  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4432  //
  4433  // Solidity: function totalSupply() constant returns(uint256)
  4434  func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  4435  	var (
  4436  		ret0 = new(*big.Int)
  4437  	)
  4438  	out := ret0
  4439  	err := _ERC20Mintable.contract.Call(opts, out, "totalSupply")
  4440  	return *ret0, err
  4441  }
  4442  
  4443  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4444  //
  4445  // Solidity: function totalSupply() constant returns(uint256)
  4446  func (_ERC20Mintable *ERC20MintableSession) TotalSupply() (*big.Int, error) {
  4447  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
  4448  }
  4449  
  4450  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  4451  //
  4452  // Solidity: function totalSupply() constant returns(uint256)
  4453  func (_ERC20Mintable *ERC20MintableCallerSession) TotalSupply() (*big.Int, error) {
  4454  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
  4455  }
  4456  
  4457  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  4458  //
  4459  // Solidity: function addMinter(address account) returns()
  4460  func (_ERC20Mintable *ERC20MintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  4461  	return _ERC20Mintable.contract.Transact(opts, "addMinter", account)
  4462  }
  4463  
  4464  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  4465  //
  4466  // Solidity: function addMinter(address account) returns()
  4467  func (_ERC20Mintable *ERC20MintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
  4468  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
  4469  }
  4470  
  4471  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  4472  //
  4473  // Solidity: function addMinter(address account) returns()
  4474  func (_ERC20Mintable *ERC20MintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  4475  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
  4476  }
  4477  
  4478  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4479  //
  4480  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  4481  func (_ERC20Mintable *ERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  4482  	return _ERC20Mintable.contract.Transact(opts, "approve", spender, amount)
  4483  }
  4484  
  4485  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4486  //
  4487  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  4488  func (_ERC20Mintable *ERC20MintableSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  4489  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, amount)
  4490  }
  4491  
  4492  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4493  //
  4494  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  4495  func (_ERC20Mintable *ERC20MintableTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  4496  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, amount)
  4497  }
  4498  
  4499  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  4500  //
  4501  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  4502  func (_ERC20Mintable *ERC20MintableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  4503  	return _ERC20Mintable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  4504  }
  4505  
  4506  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  4507  //
  4508  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  4509  func (_ERC20Mintable *ERC20MintableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  4510  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
  4511  }
  4512  
  4513  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  4514  //
  4515  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  4516  func (_ERC20Mintable *ERC20MintableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  4517  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
  4518  }
  4519  
  4520  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  4521  //
  4522  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  4523  func (_ERC20Mintable *ERC20MintableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  4524  	return _ERC20Mintable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  4525  }
  4526  
  4527  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  4528  //
  4529  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  4530  func (_ERC20Mintable *ERC20MintableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  4531  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
  4532  }
  4533  
  4534  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  4535  //
  4536  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  4537  func (_ERC20Mintable *ERC20MintableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  4538  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
  4539  }
  4540  
  4541  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  4542  //
  4543  // Solidity: function mint(address account, uint256 amount) returns(bool)
  4544  func (_ERC20Mintable *ERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
  4545  	return _ERC20Mintable.contract.Transact(opts, "mint", account, amount)
  4546  }
  4547  
  4548  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  4549  //
  4550  // Solidity: function mint(address account, uint256 amount) returns(bool)
  4551  func (_ERC20Mintable *ERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
  4552  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
  4553  }
  4554  
  4555  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  4556  //
  4557  // Solidity: function mint(address account, uint256 amount) returns(bool)
  4558  func (_ERC20Mintable *ERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
  4559  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
  4560  }
  4561  
  4562  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  4563  //
  4564  // Solidity: function renounceMinter() returns()
  4565  func (_ERC20Mintable *ERC20MintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  4566  	return _ERC20Mintable.contract.Transact(opts, "renounceMinter")
  4567  }
  4568  
  4569  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  4570  //
  4571  // Solidity: function renounceMinter() returns()
  4572  func (_ERC20Mintable *ERC20MintableSession) RenounceMinter() (*types.Transaction, error) {
  4573  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
  4574  }
  4575  
  4576  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  4577  //
  4578  // Solidity: function renounceMinter() returns()
  4579  func (_ERC20Mintable *ERC20MintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
  4580  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
  4581  }
  4582  
  4583  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4584  //
  4585  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4586  func (_ERC20Mintable *ERC20MintableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4587  	return _ERC20Mintable.contract.Transact(opts, "transfer", recipient, amount)
  4588  }
  4589  
  4590  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4591  //
  4592  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4593  func (_ERC20Mintable *ERC20MintableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4594  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
  4595  }
  4596  
  4597  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4598  //
  4599  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4600  func (_ERC20Mintable *ERC20MintableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4601  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
  4602  }
  4603  
  4604  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4605  //
  4606  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4607  func (_ERC20Mintable *ERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4608  	return _ERC20Mintable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  4609  }
  4610  
  4611  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4612  //
  4613  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4614  func (_ERC20Mintable *ERC20MintableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4615  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
  4616  }
  4617  
  4618  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4619  //
  4620  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4621  func (_ERC20Mintable *ERC20MintableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4622  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
  4623  }
  4624  
  4625  // ERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Mintable contract.
  4626  type ERC20MintableApprovalIterator struct {
  4627  	Event *ERC20MintableApproval // Event containing the contract specifics and raw log
  4628  
  4629  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4630  	event    string              // Event name to use for unpacking event data
  4631  
  4632  	logs chan types.Log        // Log channel receiving the found contract events
  4633  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4634  	done bool                  // Whether the subscription completed delivering logs
  4635  	fail error                 // Occurred error to stop iteration
  4636  }
  4637  
  4638  // Next advances the iterator to the subsequent event, returning whether there
  4639  // are any more events found. In case of a retrieval or parsing error, false is
  4640  // returned and Error() can be queried for the exact failure.
  4641  func (it *ERC20MintableApprovalIterator) Next() bool {
  4642  	// If the iterator failed, stop iterating
  4643  	if it.fail != nil {
  4644  		return false
  4645  	}
  4646  	// If the iterator completed, deliver directly whatever's available
  4647  	if it.done {
  4648  		select {
  4649  		case log := <-it.logs:
  4650  			it.Event = new(ERC20MintableApproval)
  4651  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4652  				it.fail = err
  4653  				return false
  4654  			}
  4655  			it.Event.Raw = log
  4656  			return true
  4657  
  4658  		default:
  4659  			return false
  4660  		}
  4661  	}
  4662  	// Iterator still in progress, wait for either a data or an error event
  4663  	select {
  4664  	case log := <-it.logs:
  4665  		it.Event = new(ERC20MintableApproval)
  4666  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4667  			it.fail = err
  4668  			return false
  4669  		}
  4670  		it.Event.Raw = log
  4671  		return true
  4672  
  4673  	case err := <-it.sub.Err():
  4674  		it.done = true
  4675  		it.fail = err
  4676  		return it.Next()
  4677  	}
  4678  }
  4679  
  4680  // Error returns any retrieval or parsing error occurred during filtering.
  4681  func (it *ERC20MintableApprovalIterator) Error() error {
  4682  	return it.fail
  4683  }
  4684  
  4685  // Close terminates the iteration process, releasing any pending underlying
  4686  // resources.
  4687  func (it *ERC20MintableApprovalIterator) Close() error {
  4688  	it.sub.Unsubscribe()
  4689  	return nil
  4690  }
  4691  
  4692  // ERC20MintableApproval represents a Approval event raised by the ERC20Mintable contract.
  4693  type ERC20MintableApproval struct {
  4694  	Owner   common.Address
  4695  	Spender common.Address
  4696  	Value   *big.Int
  4697  	Raw     types.Log // Blockchain specific contextual infos
  4698  }
  4699  
  4700  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4701  //
  4702  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4703  func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) {
  4704  
  4705  	var ownerRule []interface{}
  4706  	for _, ownerItem := range owner {
  4707  		ownerRule = append(ownerRule, ownerItem)
  4708  	}
  4709  	var spenderRule []interface{}
  4710  	for _, spenderItem := range spender {
  4711  		spenderRule = append(spenderRule, spenderItem)
  4712  	}
  4713  
  4714  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  4715  	if err != nil {
  4716  		return nil, err
  4717  	}
  4718  	return &ERC20MintableApprovalIterator{contract: _ERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil
  4719  }
  4720  
  4721  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4722  //
  4723  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4724  func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  4725  
  4726  	var ownerRule []interface{}
  4727  	for _, ownerItem := range owner {
  4728  		ownerRule = append(ownerRule, ownerItem)
  4729  	}
  4730  	var spenderRule []interface{}
  4731  	for _, spenderItem := range spender {
  4732  		spenderRule = append(spenderRule, spenderItem)
  4733  	}
  4734  
  4735  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  4736  	if err != nil {
  4737  		return nil, err
  4738  	}
  4739  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4740  		defer sub.Unsubscribe()
  4741  		for {
  4742  			select {
  4743  			case log := <-logs:
  4744  				// New log arrived, parse the event and forward to the user
  4745  				event := new(ERC20MintableApproval)
  4746  				if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
  4747  					return err
  4748  				}
  4749  				event.Raw = log
  4750  
  4751  				select {
  4752  				case sink <- event:
  4753  				case err := <-sub.Err():
  4754  					return err
  4755  				case <-quit:
  4756  					return nil
  4757  				}
  4758  			case err := <-sub.Err():
  4759  				return err
  4760  			case <-quit:
  4761  				return nil
  4762  			}
  4763  		}
  4764  	}), nil
  4765  }
  4766  
  4767  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4768  //
  4769  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4770  func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC20MintableApproval, error) {
  4771  	event := new(ERC20MintableApproval)
  4772  	if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
  4773  		return nil, err
  4774  	}
  4775  	return event, nil
  4776  }
  4777  
  4778  // ERC20MintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC20Mintable contract.
  4779  type ERC20MintableMinterAddedIterator struct {
  4780  	Event *ERC20MintableMinterAdded // Event containing the contract specifics and raw log
  4781  
  4782  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4783  	event    string              // Event name to use for unpacking event data
  4784  
  4785  	logs chan types.Log        // Log channel receiving the found contract events
  4786  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4787  	done bool                  // Whether the subscription completed delivering logs
  4788  	fail error                 // Occurred error to stop iteration
  4789  }
  4790  
  4791  // Next advances the iterator to the subsequent event, returning whether there
  4792  // are any more events found. In case of a retrieval or parsing error, false is
  4793  // returned and Error() can be queried for the exact failure.
  4794  func (it *ERC20MintableMinterAddedIterator) Next() bool {
  4795  	// If the iterator failed, stop iterating
  4796  	if it.fail != nil {
  4797  		return false
  4798  	}
  4799  	// If the iterator completed, deliver directly whatever's available
  4800  	if it.done {
  4801  		select {
  4802  		case log := <-it.logs:
  4803  			it.Event = new(ERC20MintableMinterAdded)
  4804  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4805  				it.fail = err
  4806  				return false
  4807  			}
  4808  			it.Event.Raw = log
  4809  			return true
  4810  
  4811  		default:
  4812  			return false
  4813  		}
  4814  	}
  4815  	// Iterator still in progress, wait for either a data or an error event
  4816  	select {
  4817  	case log := <-it.logs:
  4818  		it.Event = new(ERC20MintableMinterAdded)
  4819  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4820  			it.fail = err
  4821  			return false
  4822  		}
  4823  		it.Event.Raw = log
  4824  		return true
  4825  
  4826  	case err := <-it.sub.Err():
  4827  		it.done = true
  4828  		it.fail = err
  4829  		return it.Next()
  4830  	}
  4831  }
  4832  
  4833  // Error returns any retrieval or parsing error occurred during filtering.
  4834  func (it *ERC20MintableMinterAddedIterator) Error() error {
  4835  	return it.fail
  4836  }
  4837  
  4838  // Close terminates the iteration process, releasing any pending underlying
  4839  // resources.
  4840  func (it *ERC20MintableMinterAddedIterator) Close() error {
  4841  	it.sub.Unsubscribe()
  4842  	return nil
  4843  }
  4844  
  4845  // ERC20MintableMinterAdded represents a MinterAdded event raised by the ERC20Mintable contract.
  4846  type ERC20MintableMinterAdded struct {
  4847  	Account common.Address
  4848  	Raw     types.Log // Blockchain specific contextual infos
  4849  }
  4850  
  4851  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4852  //
  4853  // Solidity: event MinterAdded(address indexed account)
  4854  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) {
  4855  
  4856  	var accountRule []interface{}
  4857  	for _, accountItem := range account {
  4858  		accountRule = append(accountRule, accountItem)
  4859  	}
  4860  
  4861  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
  4862  	if err != nil {
  4863  		return nil, err
  4864  	}
  4865  	return &ERC20MintableMinterAddedIterator{contract: _ERC20Mintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  4866  }
  4867  
  4868  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4869  //
  4870  // Solidity: event MinterAdded(address indexed account)
  4871  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) {
  4872  
  4873  	var accountRule []interface{}
  4874  	for _, accountItem := range account {
  4875  		accountRule = append(accountRule, accountItem)
  4876  	}
  4877  
  4878  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
  4879  	if err != nil {
  4880  		return nil, err
  4881  	}
  4882  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4883  		defer sub.Unsubscribe()
  4884  		for {
  4885  			select {
  4886  			case log := <-logs:
  4887  				// New log arrived, parse the event and forward to the user
  4888  				event := new(ERC20MintableMinterAdded)
  4889  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  4890  					return err
  4891  				}
  4892  				event.Raw = log
  4893  
  4894  				select {
  4895  				case sink <- event:
  4896  				case err := <-sub.Err():
  4897  					return err
  4898  				case <-quit:
  4899  					return nil
  4900  				}
  4901  			case err := <-sub.Err():
  4902  				return err
  4903  			case <-quit:
  4904  				return nil
  4905  			}
  4906  		}
  4907  	}), nil
  4908  }
  4909  
  4910  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4911  //
  4912  // Solidity: event MinterAdded(address indexed account)
  4913  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*ERC20MintableMinterAdded, error) {
  4914  	event := new(ERC20MintableMinterAdded)
  4915  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  4916  		return nil, err
  4917  	}
  4918  	return event, nil
  4919  }
  4920  
  4921  // ERC20MintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC20Mintable contract.
  4922  type ERC20MintableMinterRemovedIterator struct {
  4923  	Event *ERC20MintableMinterRemoved // Event containing the contract specifics and raw log
  4924  
  4925  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4926  	event    string              // Event name to use for unpacking event data
  4927  
  4928  	logs chan types.Log        // Log channel receiving the found contract events
  4929  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  4930  	done bool                  // Whether the subscription completed delivering logs
  4931  	fail error                 // Occurred error to stop iteration
  4932  }
  4933  
  4934  // Next advances the iterator to the subsequent event, returning whether there
  4935  // are any more events found. In case of a retrieval or parsing error, false is
  4936  // returned and Error() can be queried for the exact failure.
  4937  func (it *ERC20MintableMinterRemovedIterator) Next() bool {
  4938  	// If the iterator failed, stop iterating
  4939  	if it.fail != nil {
  4940  		return false
  4941  	}
  4942  	// If the iterator completed, deliver directly whatever's available
  4943  	if it.done {
  4944  		select {
  4945  		case log := <-it.logs:
  4946  			it.Event = new(ERC20MintableMinterRemoved)
  4947  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4948  				it.fail = err
  4949  				return false
  4950  			}
  4951  			it.Event.Raw = log
  4952  			return true
  4953  
  4954  		default:
  4955  			return false
  4956  		}
  4957  	}
  4958  	// Iterator still in progress, wait for either a data or an error event
  4959  	select {
  4960  	case log := <-it.logs:
  4961  		it.Event = new(ERC20MintableMinterRemoved)
  4962  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4963  			it.fail = err
  4964  			return false
  4965  		}
  4966  		it.Event.Raw = log
  4967  		return true
  4968  
  4969  	case err := <-it.sub.Err():
  4970  		it.done = true
  4971  		it.fail = err
  4972  		return it.Next()
  4973  	}
  4974  }
  4975  
  4976  // Error returns any retrieval or parsing error occurred during filtering.
  4977  func (it *ERC20MintableMinterRemovedIterator) Error() error {
  4978  	return it.fail
  4979  }
  4980  
  4981  // Close terminates the iteration process, releasing any pending underlying
  4982  // resources.
  4983  func (it *ERC20MintableMinterRemovedIterator) Close() error {
  4984  	it.sub.Unsubscribe()
  4985  	return nil
  4986  }
  4987  
  4988  // ERC20MintableMinterRemoved represents a MinterRemoved event raised by the ERC20Mintable contract.
  4989  type ERC20MintableMinterRemoved struct {
  4990  	Account common.Address
  4991  	Raw     types.Log // Blockchain specific contextual infos
  4992  }
  4993  
  4994  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  4995  //
  4996  // Solidity: event MinterRemoved(address indexed account)
  4997  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) {
  4998  
  4999  	var accountRule []interface{}
  5000  	for _, accountItem := range account {
  5001  		accountRule = append(accountRule, accountItem)
  5002  	}
  5003  
  5004  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  5005  	if err != nil {
  5006  		return nil, err
  5007  	}
  5008  	return &ERC20MintableMinterRemovedIterator{contract: _ERC20Mintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  5009  }
  5010  
  5011  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  5012  //
  5013  // Solidity: event MinterRemoved(address indexed account)
  5014  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) {
  5015  
  5016  	var accountRule []interface{}
  5017  	for _, accountItem := range account {
  5018  		accountRule = append(accountRule, accountItem)
  5019  	}
  5020  
  5021  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  5022  	if err != nil {
  5023  		return nil, err
  5024  	}
  5025  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5026  		defer sub.Unsubscribe()
  5027  		for {
  5028  			select {
  5029  			case log := <-logs:
  5030  				// New log arrived, parse the event and forward to the user
  5031  				event := new(ERC20MintableMinterRemoved)
  5032  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  5033  					return err
  5034  				}
  5035  				event.Raw = log
  5036  
  5037  				select {
  5038  				case sink <- event:
  5039  				case err := <-sub.Err():
  5040  					return err
  5041  				case <-quit:
  5042  					return nil
  5043  				}
  5044  			case err := <-sub.Err():
  5045  				return err
  5046  			case <-quit:
  5047  				return nil
  5048  			}
  5049  		}
  5050  	}), nil
  5051  }
  5052  
  5053  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  5054  //
  5055  // Solidity: event MinterRemoved(address indexed account)
  5056  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) (*ERC20MintableMinterRemoved, error) {
  5057  	event := new(ERC20MintableMinterRemoved)
  5058  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  5059  		return nil, err
  5060  	}
  5061  	return event, nil
  5062  }
  5063  
  5064  // ERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Mintable contract.
  5065  type ERC20MintableTransferIterator struct {
  5066  	Event *ERC20MintableTransfer // Event containing the contract specifics and raw log
  5067  
  5068  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5069  	event    string              // Event name to use for unpacking event data
  5070  
  5071  	logs chan types.Log        // Log channel receiving the found contract events
  5072  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5073  	done bool                  // Whether the subscription completed delivering logs
  5074  	fail error                 // Occurred error to stop iteration
  5075  }
  5076  
  5077  // Next advances the iterator to the subsequent event, returning whether there
  5078  // are any more events found. In case of a retrieval or parsing error, false is
  5079  // returned and Error() can be queried for the exact failure.
  5080  func (it *ERC20MintableTransferIterator) Next() bool {
  5081  	// If the iterator failed, stop iterating
  5082  	if it.fail != nil {
  5083  		return false
  5084  	}
  5085  	// If the iterator completed, deliver directly whatever's available
  5086  	if it.done {
  5087  		select {
  5088  		case log := <-it.logs:
  5089  			it.Event = new(ERC20MintableTransfer)
  5090  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5091  				it.fail = err
  5092  				return false
  5093  			}
  5094  			it.Event.Raw = log
  5095  			return true
  5096  
  5097  		default:
  5098  			return false
  5099  		}
  5100  	}
  5101  	// Iterator still in progress, wait for either a data or an error event
  5102  	select {
  5103  	case log := <-it.logs:
  5104  		it.Event = new(ERC20MintableTransfer)
  5105  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5106  			it.fail = err
  5107  			return false
  5108  		}
  5109  		it.Event.Raw = log
  5110  		return true
  5111  
  5112  	case err := <-it.sub.Err():
  5113  		it.done = true
  5114  		it.fail = err
  5115  		return it.Next()
  5116  	}
  5117  }
  5118  
  5119  // Error returns any retrieval or parsing error occurred during filtering.
  5120  func (it *ERC20MintableTransferIterator) Error() error {
  5121  	return it.fail
  5122  }
  5123  
  5124  // Close terminates the iteration process, releasing any pending underlying
  5125  // resources.
  5126  func (it *ERC20MintableTransferIterator) Close() error {
  5127  	it.sub.Unsubscribe()
  5128  	return nil
  5129  }
  5130  
  5131  // ERC20MintableTransfer represents a Transfer event raised by the ERC20Mintable contract.
  5132  type ERC20MintableTransfer struct {
  5133  	From  common.Address
  5134  	To    common.Address
  5135  	Value *big.Int
  5136  	Raw   types.Log // Blockchain specific contextual infos
  5137  }
  5138  
  5139  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5140  //
  5141  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5142  func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) {
  5143  
  5144  	var fromRule []interface{}
  5145  	for _, fromItem := range from {
  5146  		fromRule = append(fromRule, fromItem)
  5147  	}
  5148  	var toRule []interface{}
  5149  	for _, toItem := range to {
  5150  		toRule = append(toRule, toItem)
  5151  	}
  5152  
  5153  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  5154  	if err != nil {
  5155  		return nil, err
  5156  	}
  5157  	return &ERC20MintableTransferIterator{contract: _ERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5158  }
  5159  
  5160  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5161  //
  5162  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5163  func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  5164  
  5165  	var fromRule []interface{}
  5166  	for _, fromItem := range from {
  5167  		fromRule = append(fromRule, fromItem)
  5168  	}
  5169  	var toRule []interface{}
  5170  	for _, toItem := range to {
  5171  		toRule = append(toRule, toItem)
  5172  	}
  5173  
  5174  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  5175  	if err != nil {
  5176  		return nil, err
  5177  	}
  5178  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5179  		defer sub.Unsubscribe()
  5180  		for {
  5181  			select {
  5182  			case log := <-logs:
  5183  				// New log arrived, parse the event and forward to the user
  5184  				event := new(ERC20MintableTransfer)
  5185  				if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  5186  					return err
  5187  				}
  5188  				event.Raw = log
  5189  
  5190  				select {
  5191  				case sink <- event:
  5192  				case err := <-sub.Err():
  5193  					return err
  5194  				case <-quit:
  5195  					return nil
  5196  				}
  5197  			case err := <-sub.Err():
  5198  				return err
  5199  			case <-quit:
  5200  				return nil
  5201  			}
  5202  		}
  5203  	}), nil
  5204  }
  5205  
  5206  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5207  //
  5208  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5209  func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC20MintableTransfer, error) {
  5210  	event := new(ERC20MintableTransfer)
  5211  	if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  5212  		return nil, err
  5213  	}
  5214  	return event, nil
  5215  }
  5216  
  5217  // ERC20OnApproveABI is the input ABI used to generate the binding from.
  5218  const ERC20OnApproveABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  5219  
  5220  // ERC20OnApproveFuncSigs maps the 4-byte function signature to its string representation.
  5221  var ERC20OnApproveFuncSigs = map[string]string{
  5222  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
  5223  	"dd62ed3e": "allowance(address,address)",
  5224  	"095ea7b3": "approve(address,uint256)",
  5225  	"cae9ca51": "approveAndCall(address,uint256,bytes)",
  5226  	"70a08231": "balanceOf(address)",
  5227  	"a457c2d7": "decreaseAllowance(address,uint256)",
  5228  	"39509351": "increaseAllowance(address,uint256)",
  5229  	"18160ddd": "totalSupply()",
  5230  	"a9059cbb": "transfer(address,uint256)",
  5231  	"23b872dd": "transferFrom(address,address,uint256)",
  5232  }
  5233  
  5234  // ERC20OnApproveBin is the compiled bytecode used for deploying new contracts.
  5235  var ERC20OnApproveBin = "0x6080604052610dc0806100136000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a0823114610184578063a457c2d7146101aa578063a9059cbb146101d6578063cae9ca5114610202578063dd62ed3e146102bd5761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd57806339509351146101335780636cd28f9a1461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b0381351690602001356102eb565b604080519115158252519081900360200190f35b6100eb610308565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b0381358116916020810135909116906040013561030e565b6100cf6004803603604081101561014957600080fd5b506001600160a01b03813516906020013561039c565b6101676103f0565b604080516001600160e01b03199092168252519081900360200190f35b6100eb6004803603602081101561019a57600080fd5b50356001600160a01b031661040b565b6100cf600480360360408110156101c057600080fd5b506001600160a01b038135169060200135610426565b6100cf600480360360408110156101ec57600080fd5b506001600160a01b038135169060200135610494565b6100cf6004803603606081101561021857600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561024857600080fd5b82018360208201111561025a57600080fd5b8035906020019184600183028401116401000000008311171561027c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506104a8945050505050565b6100eb600480360360408110156102d357600080fd5b506001600160a01b03813581169160200135166104c9565b60006102ff6102f86104f4565b84846104f8565b50600192915050565b60025490565b600061031b8484846105e4565b610391846103276104f4565b61038c85604051806060016040528060288152602001610cf6602891396001600160a01b038a166000908152600160205260408120906103656104f4565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61074016565b6104f8565b5060015b9392505050565b60006102ff6103a96104f4565b8461038c85600160006103ba6104f4565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6107d716565b604051806028610cce82396028019050604051809103902081565b6001600160a01b031660009081526020819052604090205490565b60006102ff6104336104f4565b8461038c85604051806060016040528060258152602001610d67602591396001600061045d6104f4565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61074016565b60006102ff6104a16104f4565b84846105e4565b60006104b484846102eb565b6104bd57600080fd5b61039533858585610831565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b03831661053d5760405162461bcd60e51b8152600401808060200182810382526024815260200180610d436024913960400191505060405180910390fd5b6001600160a01b0382166105825760405162461bcd60e51b8152600401808060200182810382526022815260200180610c556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166106295760405162461bcd60e51b8152600401808060200182810382526025815260200180610d1e6025913960400191505060405180910390fd5b6001600160a01b03821661066e5760405162461bcd60e51b8152600401808060200182810382526023815260200180610c326023913960400191505060405180910390fd5b6106b181604051806060016040528060268152602001610ca8602691396001600160a01b038616600090815260208190526040902054919063ffffffff61074016565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546106e6908263ffffffff6107d716565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156107cf5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561079457818101518382015260200161077c565b50505050905090810190601f1680156107c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610395576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b610853836040518080610cce6028913960280190506040518091039020610a87565b61088e5760405162461bcd60e51b8152600401808060200182810382526031815260200180610c776031913960400191505060405180910390fd5b60006060846001600160a01b03166040518080610cce60289139602801905060405180910390208787878760405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561092f578181015183820152602001610917565b50505050905090810190601f16801561095c5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b602083106109c45780518252601f1990920191602091820191016109a5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610a26576040519150601f19603f3d011682016040523d82523d6000602084013e610a2b565b606091505b5091509150818190610a7e5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561079457818101518382015260200161077c565b50505050505050565b6000610a9283610aa3565b801561039557506103958383610ad7565b6000610ab6826301ffc9a760e01b610ad7565b8015610ad15750610acf826001600160e01b0319610ad7565b155b92915050565b6000806000610ae68585610afd565b91509150818015610af45750805b95945050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b60208310610b855780518252601f199092019160209182019101610b66565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d8060008114610be6576040519150601f19603f3d011682016040523d82523d6000602084013e610beb565b606091505b5091509150602081511015610c095760008094509450505050610c2a565b81818060200190516020811015610c1f57600080fd5b505190955093505050505b925092905056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332304f6e417070726f76653a207370656e64657220646f65736e277420737570706f7274206f6e417070726f766545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f6e417070726f766528616464726573732c616464726573732c75696e743235362c62797465732945524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158205f38639f33e199b2a44d46fed86192ba1daf836a08c11f82aa877b89bb0dc9fc64736f6c634300050c0032"
  5236  
  5237  // DeployERC20OnApprove deploys a new Ethereum contract, binding an instance of ERC20OnApprove to it.
  5238  func DeployERC20OnApprove(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20OnApprove, error) {
  5239  	parsed, err := abi.JSON(strings.NewReader(ERC20OnApproveABI))
  5240  	if err != nil {
  5241  		return common.Address{}, nil, nil, err
  5242  	}
  5243  
  5244  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20OnApproveBin), backend)
  5245  	if err != nil {
  5246  		return common.Address{}, nil, nil, err
  5247  	}
  5248  	return address, tx, &ERC20OnApprove{ERC20OnApproveCaller: ERC20OnApproveCaller{contract: contract}, ERC20OnApproveTransactor: ERC20OnApproveTransactor{contract: contract}, ERC20OnApproveFilterer: ERC20OnApproveFilterer{contract: contract}}, nil
  5249  }
  5250  
  5251  // ERC20OnApprove is an auto generated Go binding around an Ethereum contract.
  5252  type ERC20OnApprove struct {
  5253  	ERC20OnApproveCaller     // Read-only binding to the contract
  5254  	ERC20OnApproveTransactor // Write-only binding to the contract
  5255  	ERC20OnApproveFilterer   // Log filterer for contract events
  5256  }
  5257  
  5258  // ERC20OnApproveCaller is an auto generated read-only Go binding around an Ethereum contract.
  5259  type ERC20OnApproveCaller struct {
  5260  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5261  }
  5262  
  5263  // ERC20OnApproveTransactor is an auto generated write-only Go binding around an Ethereum contract.
  5264  type ERC20OnApproveTransactor struct {
  5265  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5266  }
  5267  
  5268  // ERC20OnApproveFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5269  type ERC20OnApproveFilterer struct {
  5270  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5271  }
  5272  
  5273  // ERC20OnApproveSession is an auto generated Go binding around an Ethereum contract,
  5274  // with pre-set call and transact options.
  5275  type ERC20OnApproveSession struct {
  5276  	Contract     *ERC20OnApprove   // Generic contract binding to set the session for
  5277  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5278  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5279  }
  5280  
  5281  // ERC20OnApproveCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5282  // with pre-set call options.
  5283  type ERC20OnApproveCallerSession struct {
  5284  	Contract *ERC20OnApproveCaller // Generic contract caller binding to set the session for
  5285  	CallOpts bind.CallOpts         // Call options to use throughout this session
  5286  }
  5287  
  5288  // ERC20OnApproveTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5289  // with pre-set transact options.
  5290  type ERC20OnApproveTransactorSession struct {
  5291  	Contract     *ERC20OnApproveTransactor // Generic contract transactor binding to set the session for
  5292  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  5293  }
  5294  
  5295  // ERC20OnApproveRaw is an auto generated low-level Go binding around an Ethereum contract.
  5296  type ERC20OnApproveRaw struct {
  5297  	Contract *ERC20OnApprove // Generic contract binding to access the raw methods on
  5298  }
  5299  
  5300  // ERC20OnApproveCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5301  type ERC20OnApproveCallerRaw struct {
  5302  	Contract *ERC20OnApproveCaller // Generic read-only contract binding to access the raw methods on
  5303  }
  5304  
  5305  // ERC20OnApproveTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5306  type ERC20OnApproveTransactorRaw struct {
  5307  	Contract *ERC20OnApproveTransactor // Generic write-only contract binding to access the raw methods on
  5308  }
  5309  
  5310  // NewERC20OnApprove creates a new instance of ERC20OnApprove, bound to a specific deployed contract.
  5311  func NewERC20OnApprove(address common.Address, backend bind.ContractBackend) (*ERC20OnApprove, error) {
  5312  	contract, err := bindERC20OnApprove(address, backend, backend, backend)
  5313  	if err != nil {
  5314  		return nil, err
  5315  	}
  5316  	return &ERC20OnApprove{ERC20OnApproveCaller: ERC20OnApproveCaller{contract: contract}, ERC20OnApproveTransactor: ERC20OnApproveTransactor{contract: contract}, ERC20OnApproveFilterer: ERC20OnApproveFilterer{contract: contract}}, nil
  5317  }
  5318  
  5319  // NewERC20OnApproveCaller creates a new read-only instance of ERC20OnApprove, bound to a specific deployed contract.
  5320  func NewERC20OnApproveCaller(address common.Address, caller bind.ContractCaller) (*ERC20OnApproveCaller, error) {
  5321  	contract, err := bindERC20OnApprove(address, caller, nil, nil)
  5322  	if err != nil {
  5323  		return nil, err
  5324  	}
  5325  	return &ERC20OnApproveCaller{contract: contract}, nil
  5326  }
  5327  
  5328  // NewERC20OnApproveTransactor creates a new write-only instance of ERC20OnApprove, bound to a specific deployed contract.
  5329  func NewERC20OnApproveTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20OnApproveTransactor, error) {
  5330  	contract, err := bindERC20OnApprove(address, nil, transactor, nil)
  5331  	if err != nil {
  5332  		return nil, err
  5333  	}
  5334  	return &ERC20OnApproveTransactor{contract: contract}, nil
  5335  }
  5336  
  5337  // NewERC20OnApproveFilterer creates a new log filterer instance of ERC20OnApprove, bound to a specific deployed contract.
  5338  func NewERC20OnApproveFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20OnApproveFilterer, error) {
  5339  	contract, err := bindERC20OnApprove(address, nil, nil, filterer)
  5340  	if err != nil {
  5341  		return nil, err
  5342  	}
  5343  	return &ERC20OnApproveFilterer{contract: contract}, nil
  5344  }
  5345  
  5346  // bindERC20OnApprove binds a generic wrapper to an already deployed contract.
  5347  func bindERC20OnApprove(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5348  	parsed, err := abi.JSON(strings.NewReader(ERC20OnApproveABI))
  5349  	if err != nil {
  5350  		return nil, err
  5351  	}
  5352  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5353  }
  5354  
  5355  // Call invokes the (constant) contract method with params as input values and
  5356  // sets the output to result. The result type might be a single field for simple
  5357  // returns, a slice of interfaces for anonymous returns and a struct for named
  5358  // returns.
  5359  func (_ERC20OnApprove *ERC20OnApproveRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5360  	return _ERC20OnApprove.Contract.ERC20OnApproveCaller.contract.Call(opts, result, method, params...)
  5361  }
  5362  
  5363  // Transfer initiates a plain transaction to move funds to the contract, calling
  5364  // its default method if one is available.
  5365  func (_ERC20OnApprove *ERC20OnApproveRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5366  	return _ERC20OnApprove.Contract.ERC20OnApproveTransactor.contract.Transfer(opts)
  5367  }
  5368  
  5369  // Transact invokes the (paid) contract method with params as input values.
  5370  func (_ERC20OnApprove *ERC20OnApproveRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5371  	return _ERC20OnApprove.Contract.ERC20OnApproveTransactor.contract.Transact(opts, method, params...)
  5372  }
  5373  
  5374  // Call invokes the (constant) contract method with params as input values and
  5375  // sets the output to result. The result type might be a single field for simple
  5376  // returns, a slice of interfaces for anonymous returns and a struct for named
  5377  // returns.
  5378  func (_ERC20OnApprove *ERC20OnApproveCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5379  	return _ERC20OnApprove.Contract.contract.Call(opts, result, method, params...)
  5380  }
  5381  
  5382  // Transfer initiates a plain transaction to move funds to the contract, calling
  5383  // its default method if one is available.
  5384  func (_ERC20OnApprove *ERC20OnApproveTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5385  	return _ERC20OnApprove.Contract.contract.Transfer(opts)
  5386  }
  5387  
  5388  // Transact invokes the (paid) contract method with params as input values.
  5389  func (_ERC20OnApprove *ERC20OnApproveTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5390  	return _ERC20OnApprove.Contract.contract.Transact(opts, method, params...)
  5391  }
  5392  
  5393  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  5394  //
  5395  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  5396  func (_ERC20OnApprove *ERC20OnApproveCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
  5397  	var (
  5398  		ret0 = new([4]byte)
  5399  	)
  5400  	out := ret0
  5401  	err := _ERC20OnApprove.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
  5402  	return *ret0, err
  5403  }
  5404  
  5405  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  5406  //
  5407  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  5408  func (_ERC20OnApprove *ERC20OnApproveSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  5409  	return _ERC20OnApprove.Contract.INTERFACEIDONAPPROVE(&_ERC20OnApprove.CallOpts)
  5410  }
  5411  
  5412  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  5413  //
  5414  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  5415  func (_ERC20OnApprove *ERC20OnApproveCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  5416  	return _ERC20OnApprove.Contract.INTERFACEIDONAPPROVE(&_ERC20OnApprove.CallOpts)
  5417  }
  5418  
  5419  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  5420  //
  5421  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  5422  func (_ERC20OnApprove *ERC20OnApproveCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  5423  	var (
  5424  		ret0 = new(*big.Int)
  5425  	)
  5426  	out := ret0
  5427  	err := _ERC20OnApprove.contract.Call(opts, out, "allowance", owner, spender)
  5428  	return *ret0, err
  5429  }
  5430  
  5431  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  5432  //
  5433  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  5434  func (_ERC20OnApprove *ERC20OnApproveSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  5435  	return _ERC20OnApprove.Contract.Allowance(&_ERC20OnApprove.CallOpts, owner, spender)
  5436  }
  5437  
  5438  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  5439  //
  5440  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  5441  func (_ERC20OnApprove *ERC20OnApproveCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  5442  	return _ERC20OnApprove.Contract.Allowance(&_ERC20OnApprove.CallOpts, owner, spender)
  5443  }
  5444  
  5445  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5446  //
  5447  // Solidity: function balanceOf(address account) constant returns(uint256)
  5448  func (_ERC20OnApprove *ERC20OnApproveCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  5449  	var (
  5450  		ret0 = new(*big.Int)
  5451  	)
  5452  	out := ret0
  5453  	err := _ERC20OnApprove.contract.Call(opts, out, "balanceOf", account)
  5454  	return *ret0, err
  5455  }
  5456  
  5457  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5458  //
  5459  // Solidity: function balanceOf(address account) constant returns(uint256)
  5460  func (_ERC20OnApprove *ERC20OnApproveSession) BalanceOf(account common.Address) (*big.Int, error) {
  5461  	return _ERC20OnApprove.Contract.BalanceOf(&_ERC20OnApprove.CallOpts, account)
  5462  }
  5463  
  5464  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5465  //
  5466  // Solidity: function balanceOf(address account) constant returns(uint256)
  5467  func (_ERC20OnApprove *ERC20OnApproveCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  5468  	return _ERC20OnApprove.Contract.BalanceOf(&_ERC20OnApprove.CallOpts, account)
  5469  }
  5470  
  5471  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  5472  //
  5473  // Solidity: function totalSupply() constant returns(uint256)
  5474  func (_ERC20OnApprove *ERC20OnApproveCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  5475  	var (
  5476  		ret0 = new(*big.Int)
  5477  	)
  5478  	out := ret0
  5479  	err := _ERC20OnApprove.contract.Call(opts, out, "totalSupply")
  5480  	return *ret0, err
  5481  }
  5482  
  5483  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  5484  //
  5485  // Solidity: function totalSupply() constant returns(uint256)
  5486  func (_ERC20OnApprove *ERC20OnApproveSession) TotalSupply() (*big.Int, error) {
  5487  	return _ERC20OnApprove.Contract.TotalSupply(&_ERC20OnApprove.CallOpts)
  5488  }
  5489  
  5490  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  5491  //
  5492  // Solidity: function totalSupply() constant returns(uint256)
  5493  func (_ERC20OnApprove *ERC20OnApproveCallerSession) TotalSupply() (*big.Int, error) {
  5494  	return _ERC20OnApprove.Contract.TotalSupply(&_ERC20OnApprove.CallOpts)
  5495  }
  5496  
  5497  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5498  //
  5499  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  5500  func (_ERC20OnApprove *ERC20OnApproveTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  5501  	return _ERC20OnApprove.contract.Transact(opts, "approve", spender, amount)
  5502  }
  5503  
  5504  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5505  //
  5506  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  5507  func (_ERC20OnApprove *ERC20OnApproveSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  5508  	return _ERC20OnApprove.Contract.Approve(&_ERC20OnApprove.TransactOpts, spender, amount)
  5509  }
  5510  
  5511  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5512  //
  5513  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  5514  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  5515  	return _ERC20OnApprove.Contract.Approve(&_ERC20OnApprove.TransactOpts, spender, amount)
  5516  }
  5517  
  5518  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  5519  //
  5520  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  5521  func (_ERC20OnApprove *ERC20OnApproveTransactor) ApproveAndCall(opts *bind.TransactOpts, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  5522  	return _ERC20OnApprove.contract.Transact(opts, "approveAndCall", spender, amount, data)
  5523  }
  5524  
  5525  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  5526  //
  5527  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  5528  func (_ERC20OnApprove *ERC20OnApproveSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  5529  	return _ERC20OnApprove.Contract.ApproveAndCall(&_ERC20OnApprove.TransactOpts, spender, amount, data)
  5530  }
  5531  
  5532  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
  5533  //
  5534  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
  5535  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  5536  	return _ERC20OnApprove.Contract.ApproveAndCall(&_ERC20OnApprove.TransactOpts, spender, amount, data)
  5537  }
  5538  
  5539  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  5540  //
  5541  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  5542  func (_ERC20OnApprove *ERC20OnApproveTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  5543  	return _ERC20OnApprove.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  5544  }
  5545  
  5546  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  5547  //
  5548  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  5549  func (_ERC20OnApprove *ERC20OnApproveSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  5550  	return _ERC20OnApprove.Contract.DecreaseAllowance(&_ERC20OnApprove.TransactOpts, spender, subtractedValue)
  5551  }
  5552  
  5553  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  5554  //
  5555  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  5556  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  5557  	return _ERC20OnApprove.Contract.DecreaseAllowance(&_ERC20OnApprove.TransactOpts, spender, subtractedValue)
  5558  }
  5559  
  5560  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  5561  //
  5562  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  5563  func (_ERC20OnApprove *ERC20OnApproveTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  5564  	return _ERC20OnApprove.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  5565  }
  5566  
  5567  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  5568  //
  5569  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  5570  func (_ERC20OnApprove *ERC20OnApproveSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  5571  	return _ERC20OnApprove.Contract.IncreaseAllowance(&_ERC20OnApprove.TransactOpts, spender, addedValue)
  5572  }
  5573  
  5574  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  5575  //
  5576  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  5577  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  5578  	return _ERC20OnApprove.Contract.IncreaseAllowance(&_ERC20OnApprove.TransactOpts, spender, addedValue)
  5579  }
  5580  
  5581  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  5582  //
  5583  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  5584  func (_ERC20OnApprove *ERC20OnApproveTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5585  	return _ERC20OnApprove.contract.Transact(opts, "transfer", recipient, amount)
  5586  }
  5587  
  5588  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  5589  //
  5590  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  5591  func (_ERC20OnApprove *ERC20OnApproveSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5592  	return _ERC20OnApprove.Contract.Transfer(&_ERC20OnApprove.TransactOpts, recipient, amount)
  5593  }
  5594  
  5595  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  5596  //
  5597  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  5598  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5599  	return _ERC20OnApprove.Contract.Transfer(&_ERC20OnApprove.TransactOpts, recipient, amount)
  5600  }
  5601  
  5602  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5603  //
  5604  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  5605  func (_ERC20OnApprove *ERC20OnApproveTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5606  	return _ERC20OnApprove.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  5607  }
  5608  
  5609  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5610  //
  5611  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  5612  func (_ERC20OnApprove *ERC20OnApproveSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5613  	return _ERC20OnApprove.Contract.TransferFrom(&_ERC20OnApprove.TransactOpts, sender, recipient, amount)
  5614  }
  5615  
  5616  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5617  //
  5618  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  5619  func (_ERC20OnApprove *ERC20OnApproveTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  5620  	return _ERC20OnApprove.Contract.TransferFrom(&_ERC20OnApprove.TransactOpts, sender, recipient, amount)
  5621  }
  5622  
  5623  // ERC20OnApproveApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20OnApprove contract.
  5624  type ERC20OnApproveApprovalIterator struct {
  5625  	Event *ERC20OnApproveApproval // Event containing the contract specifics and raw log
  5626  
  5627  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5628  	event    string              // Event name to use for unpacking event data
  5629  
  5630  	logs chan types.Log        // Log channel receiving the found contract events
  5631  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5632  	done bool                  // Whether the subscription completed delivering logs
  5633  	fail error                 // Occurred error to stop iteration
  5634  }
  5635  
  5636  // Next advances the iterator to the subsequent event, returning whether there
  5637  // are any more events found. In case of a retrieval or parsing error, false is
  5638  // returned and Error() can be queried for the exact failure.
  5639  func (it *ERC20OnApproveApprovalIterator) Next() bool {
  5640  	// If the iterator failed, stop iterating
  5641  	if it.fail != nil {
  5642  		return false
  5643  	}
  5644  	// If the iterator completed, deliver directly whatever's available
  5645  	if it.done {
  5646  		select {
  5647  		case log := <-it.logs:
  5648  			it.Event = new(ERC20OnApproveApproval)
  5649  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5650  				it.fail = err
  5651  				return false
  5652  			}
  5653  			it.Event.Raw = log
  5654  			return true
  5655  
  5656  		default:
  5657  			return false
  5658  		}
  5659  	}
  5660  	// Iterator still in progress, wait for either a data or an error event
  5661  	select {
  5662  	case log := <-it.logs:
  5663  		it.Event = new(ERC20OnApproveApproval)
  5664  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5665  			it.fail = err
  5666  			return false
  5667  		}
  5668  		it.Event.Raw = log
  5669  		return true
  5670  
  5671  	case err := <-it.sub.Err():
  5672  		it.done = true
  5673  		it.fail = err
  5674  		return it.Next()
  5675  	}
  5676  }
  5677  
  5678  // Error returns any retrieval or parsing error occurred during filtering.
  5679  func (it *ERC20OnApproveApprovalIterator) Error() error {
  5680  	return it.fail
  5681  }
  5682  
  5683  // Close terminates the iteration process, releasing any pending underlying
  5684  // resources.
  5685  func (it *ERC20OnApproveApprovalIterator) Close() error {
  5686  	it.sub.Unsubscribe()
  5687  	return nil
  5688  }
  5689  
  5690  // ERC20OnApproveApproval represents a Approval event raised by the ERC20OnApprove contract.
  5691  type ERC20OnApproveApproval struct {
  5692  	Owner   common.Address
  5693  	Spender common.Address
  5694  	Value   *big.Int
  5695  	Raw     types.Log // Blockchain specific contextual infos
  5696  }
  5697  
  5698  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5699  //
  5700  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  5701  func (_ERC20OnApprove *ERC20OnApproveFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20OnApproveApprovalIterator, error) {
  5702  
  5703  	var ownerRule []interface{}
  5704  	for _, ownerItem := range owner {
  5705  		ownerRule = append(ownerRule, ownerItem)
  5706  	}
  5707  	var spenderRule []interface{}
  5708  	for _, spenderItem := range spender {
  5709  		spenderRule = append(spenderRule, spenderItem)
  5710  	}
  5711  
  5712  	logs, sub, err := _ERC20OnApprove.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  5713  	if err != nil {
  5714  		return nil, err
  5715  	}
  5716  	return &ERC20OnApproveApprovalIterator{contract: _ERC20OnApprove.contract, event: "Approval", logs: logs, sub: sub}, nil
  5717  }
  5718  
  5719  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5720  //
  5721  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  5722  func (_ERC20OnApprove *ERC20OnApproveFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20OnApproveApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  5723  
  5724  	var ownerRule []interface{}
  5725  	for _, ownerItem := range owner {
  5726  		ownerRule = append(ownerRule, ownerItem)
  5727  	}
  5728  	var spenderRule []interface{}
  5729  	for _, spenderItem := range spender {
  5730  		spenderRule = append(spenderRule, spenderItem)
  5731  	}
  5732  
  5733  	logs, sub, err := _ERC20OnApprove.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  5734  	if err != nil {
  5735  		return nil, err
  5736  	}
  5737  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5738  		defer sub.Unsubscribe()
  5739  		for {
  5740  			select {
  5741  			case log := <-logs:
  5742  				// New log arrived, parse the event and forward to the user
  5743  				event := new(ERC20OnApproveApproval)
  5744  				if err := _ERC20OnApprove.contract.UnpackLog(event, "Approval", log); err != nil {
  5745  					return err
  5746  				}
  5747  				event.Raw = log
  5748  
  5749  				select {
  5750  				case sink <- event:
  5751  				case err := <-sub.Err():
  5752  					return err
  5753  				case <-quit:
  5754  					return nil
  5755  				}
  5756  			case err := <-sub.Err():
  5757  				return err
  5758  			case <-quit:
  5759  				return nil
  5760  			}
  5761  		}
  5762  	}), nil
  5763  }
  5764  
  5765  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5766  //
  5767  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  5768  func (_ERC20OnApprove *ERC20OnApproveFilterer) ParseApproval(log types.Log) (*ERC20OnApproveApproval, error) {
  5769  	event := new(ERC20OnApproveApproval)
  5770  	if err := _ERC20OnApprove.contract.UnpackLog(event, "Approval", log); err != nil {
  5771  		return nil, err
  5772  	}
  5773  	return event, nil
  5774  }
  5775  
  5776  // ERC20OnApproveTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20OnApprove contract.
  5777  type ERC20OnApproveTransferIterator struct {
  5778  	Event *ERC20OnApproveTransfer // Event containing the contract specifics and raw log
  5779  
  5780  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5781  	event    string              // Event name to use for unpacking event data
  5782  
  5783  	logs chan types.Log        // Log channel receiving the found contract events
  5784  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  5785  	done bool                  // Whether the subscription completed delivering logs
  5786  	fail error                 // Occurred error to stop iteration
  5787  }
  5788  
  5789  // Next advances the iterator to the subsequent event, returning whether there
  5790  // are any more events found. In case of a retrieval or parsing error, false is
  5791  // returned and Error() can be queried for the exact failure.
  5792  func (it *ERC20OnApproveTransferIterator) Next() bool {
  5793  	// If the iterator failed, stop iterating
  5794  	if it.fail != nil {
  5795  		return false
  5796  	}
  5797  	// If the iterator completed, deliver directly whatever's available
  5798  	if it.done {
  5799  		select {
  5800  		case log := <-it.logs:
  5801  			it.Event = new(ERC20OnApproveTransfer)
  5802  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5803  				it.fail = err
  5804  				return false
  5805  			}
  5806  			it.Event.Raw = log
  5807  			return true
  5808  
  5809  		default:
  5810  			return false
  5811  		}
  5812  	}
  5813  	// Iterator still in progress, wait for either a data or an error event
  5814  	select {
  5815  	case log := <-it.logs:
  5816  		it.Event = new(ERC20OnApproveTransfer)
  5817  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5818  			it.fail = err
  5819  			return false
  5820  		}
  5821  		it.Event.Raw = log
  5822  		return true
  5823  
  5824  	case err := <-it.sub.Err():
  5825  		it.done = true
  5826  		it.fail = err
  5827  		return it.Next()
  5828  	}
  5829  }
  5830  
  5831  // Error returns any retrieval or parsing error occurred during filtering.
  5832  func (it *ERC20OnApproveTransferIterator) Error() error {
  5833  	return it.fail
  5834  }
  5835  
  5836  // Close terminates the iteration process, releasing any pending underlying
  5837  // resources.
  5838  func (it *ERC20OnApproveTransferIterator) Close() error {
  5839  	it.sub.Unsubscribe()
  5840  	return nil
  5841  }
  5842  
  5843  // ERC20OnApproveTransfer represents a Transfer event raised by the ERC20OnApprove contract.
  5844  type ERC20OnApproveTransfer struct {
  5845  	From  common.Address
  5846  	To    common.Address
  5847  	Value *big.Int
  5848  	Raw   types.Log // Blockchain specific contextual infos
  5849  }
  5850  
  5851  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5852  //
  5853  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5854  func (_ERC20OnApprove *ERC20OnApproveFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20OnApproveTransferIterator, error) {
  5855  
  5856  	var fromRule []interface{}
  5857  	for _, fromItem := range from {
  5858  		fromRule = append(fromRule, fromItem)
  5859  	}
  5860  	var toRule []interface{}
  5861  	for _, toItem := range to {
  5862  		toRule = append(toRule, toItem)
  5863  	}
  5864  
  5865  	logs, sub, err := _ERC20OnApprove.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  5866  	if err != nil {
  5867  		return nil, err
  5868  	}
  5869  	return &ERC20OnApproveTransferIterator{contract: _ERC20OnApprove.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5870  }
  5871  
  5872  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5873  //
  5874  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5875  func (_ERC20OnApprove *ERC20OnApproveFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20OnApproveTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  5876  
  5877  	var fromRule []interface{}
  5878  	for _, fromItem := range from {
  5879  		fromRule = append(fromRule, fromItem)
  5880  	}
  5881  	var toRule []interface{}
  5882  	for _, toItem := range to {
  5883  		toRule = append(toRule, toItem)
  5884  	}
  5885  
  5886  	logs, sub, err := _ERC20OnApprove.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  5887  	if err != nil {
  5888  		return nil, err
  5889  	}
  5890  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5891  		defer sub.Unsubscribe()
  5892  		for {
  5893  			select {
  5894  			case log := <-logs:
  5895  				// New log arrived, parse the event and forward to the user
  5896  				event := new(ERC20OnApproveTransfer)
  5897  				if err := _ERC20OnApprove.contract.UnpackLog(event, "Transfer", log); err != nil {
  5898  					return err
  5899  				}
  5900  				event.Raw = log
  5901  
  5902  				select {
  5903  				case sink <- event:
  5904  				case err := <-sub.Err():
  5905  					return err
  5906  				case <-quit:
  5907  					return nil
  5908  				}
  5909  			case err := <-sub.Err():
  5910  				return err
  5911  			case <-quit:
  5912  				return nil
  5913  			}
  5914  		}
  5915  	}), nil
  5916  }
  5917  
  5918  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5919  //
  5920  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  5921  func (_ERC20OnApprove *ERC20OnApproveFilterer) ParseTransfer(log types.Log) (*ERC20OnApproveTransfer, error) {
  5922  	event := new(ERC20OnApproveTransfer)
  5923  	if err := _ERC20OnApprove.contract.UnpackLog(event, "Transfer", log); err != nil {
  5924  		return nil, err
  5925  	}
  5926  	return event, nil
  5927  }
  5928  
  5929  // IERC165ABI is the input ABI used to generate the binding from.
  5930  const IERC165ABI = "[{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  5931  
  5932  // IERC165FuncSigs maps the 4-byte function signature to its string representation.
  5933  var IERC165FuncSigs = map[string]string{
  5934  	"01ffc9a7": "supportsInterface(bytes4)",
  5935  }
  5936  
  5937  // IERC165 is an auto generated Go binding around an Ethereum contract.
  5938  type IERC165 struct {
  5939  	IERC165Caller     // Read-only binding to the contract
  5940  	IERC165Transactor // Write-only binding to the contract
  5941  	IERC165Filterer   // Log filterer for contract events
  5942  }
  5943  
  5944  // IERC165Caller is an auto generated read-only Go binding around an Ethereum contract.
  5945  type IERC165Caller struct {
  5946  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5947  }
  5948  
  5949  // IERC165Transactor is an auto generated write-only Go binding around an Ethereum contract.
  5950  type IERC165Transactor struct {
  5951  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5952  }
  5953  
  5954  // IERC165Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  5955  type IERC165Filterer struct {
  5956  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5957  }
  5958  
  5959  // IERC165Session is an auto generated Go binding around an Ethereum contract,
  5960  // with pre-set call and transact options.
  5961  type IERC165Session struct {
  5962  	Contract     *IERC165          // Generic contract binding to set the session for
  5963  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5964  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5965  }
  5966  
  5967  // IERC165CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  5968  // with pre-set call options.
  5969  type IERC165CallerSession struct {
  5970  	Contract *IERC165Caller // Generic contract caller binding to set the session for
  5971  	CallOpts bind.CallOpts  // Call options to use throughout this session
  5972  }
  5973  
  5974  // IERC165TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  5975  // with pre-set transact options.
  5976  type IERC165TransactorSession struct {
  5977  	Contract     *IERC165Transactor // Generic contract transactor binding to set the session for
  5978  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  5979  }
  5980  
  5981  // IERC165Raw is an auto generated low-level Go binding around an Ethereum contract.
  5982  type IERC165Raw struct {
  5983  	Contract *IERC165 // Generic contract binding to access the raw methods on
  5984  }
  5985  
  5986  // IERC165CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  5987  type IERC165CallerRaw struct {
  5988  	Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on
  5989  }
  5990  
  5991  // IERC165TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  5992  type IERC165TransactorRaw struct {
  5993  	Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on
  5994  }
  5995  
  5996  // NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract.
  5997  func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) {
  5998  	contract, err := bindIERC165(address, backend, backend, backend)
  5999  	if err != nil {
  6000  		return nil, err
  6001  	}
  6002  	return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil
  6003  }
  6004  
  6005  // NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract.
  6006  func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) {
  6007  	contract, err := bindIERC165(address, caller, nil, nil)
  6008  	if err != nil {
  6009  		return nil, err
  6010  	}
  6011  	return &IERC165Caller{contract: contract}, nil
  6012  }
  6013  
  6014  // NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract.
  6015  func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) {
  6016  	contract, err := bindIERC165(address, nil, transactor, nil)
  6017  	if err != nil {
  6018  		return nil, err
  6019  	}
  6020  	return &IERC165Transactor{contract: contract}, nil
  6021  }
  6022  
  6023  // NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract.
  6024  func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) {
  6025  	contract, err := bindIERC165(address, nil, nil, filterer)
  6026  	if err != nil {
  6027  		return nil, err
  6028  	}
  6029  	return &IERC165Filterer{contract: contract}, nil
  6030  }
  6031  
  6032  // bindIERC165 binds a generic wrapper to an already deployed contract.
  6033  func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6034  	parsed, err := abi.JSON(strings.NewReader(IERC165ABI))
  6035  	if err != nil {
  6036  		return nil, err
  6037  	}
  6038  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6039  }
  6040  
  6041  // Call invokes the (constant) contract method with params as input values and
  6042  // sets the output to result. The result type might be a single field for simple
  6043  // returns, a slice of interfaces for anonymous returns and a struct for named
  6044  // returns.
  6045  func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6046  	return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...)
  6047  }
  6048  
  6049  // Transfer initiates a plain transaction to move funds to the contract, calling
  6050  // its default method if one is available.
  6051  func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6052  	return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts)
  6053  }
  6054  
  6055  // Transact invokes the (paid) contract method with params as input values.
  6056  func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6057  	return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...)
  6058  }
  6059  
  6060  // Call invokes the (constant) contract method with params as input values and
  6061  // sets the output to result. The result type might be a single field for simple
  6062  // returns, a slice of interfaces for anonymous returns and a struct for named
  6063  // returns.
  6064  func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6065  	return _IERC165.Contract.contract.Call(opts, result, method, params...)
  6066  }
  6067  
  6068  // Transfer initiates a plain transaction to move funds to the contract, calling
  6069  // its default method if one is available.
  6070  func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6071  	return _IERC165.Contract.contract.Transfer(opts)
  6072  }
  6073  
  6074  // Transact invokes the (paid) contract method with params as input values.
  6075  func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6076  	return _IERC165.Contract.contract.Transact(opts, method, params...)
  6077  }
  6078  
  6079  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6080  //
  6081  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  6082  func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  6083  	var (
  6084  		ret0 = new(bool)
  6085  	)
  6086  	out := ret0
  6087  	err := _IERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
  6088  	return *ret0, err
  6089  }
  6090  
  6091  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6092  //
  6093  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  6094  func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  6095  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  6096  }
  6097  
  6098  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  6099  //
  6100  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  6101  func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  6102  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  6103  }
  6104  
  6105  // IERC20ABI is the input ABI used to generate the binding from.
  6106  const IERC20ABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6107  
  6108  // IERC20FuncSigs maps the 4-byte function signature to its string representation.
  6109  var IERC20FuncSigs = map[string]string{
  6110  	"dd62ed3e": "allowance(address,address)",
  6111  	"095ea7b3": "approve(address,uint256)",
  6112  	"70a08231": "balanceOf(address)",
  6113  	"18160ddd": "totalSupply()",
  6114  	"a9059cbb": "transfer(address,uint256)",
  6115  	"23b872dd": "transferFrom(address,address,uint256)",
  6116  }
  6117  
  6118  // IERC20 is an auto generated Go binding around an Ethereum contract.
  6119  type IERC20 struct {
  6120  	IERC20Caller     // Read-only binding to the contract
  6121  	IERC20Transactor // Write-only binding to the contract
  6122  	IERC20Filterer   // Log filterer for contract events
  6123  }
  6124  
  6125  // IERC20Caller is an auto generated read-only Go binding around an Ethereum contract.
  6126  type IERC20Caller struct {
  6127  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6128  }
  6129  
  6130  // IERC20Transactor is an auto generated write-only Go binding around an Ethereum contract.
  6131  type IERC20Transactor struct {
  6132  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6133  }
  6134  
  6135  // IERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6136  type IERC20Filterer struct {
  6137  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6138  }
  6139  
  6140  // IERC20Session is an auto generated Go binding around an Ethereum contract,
  6141  // with pre-set call and transact options.
  6142  type IERC20Session struct {
  6143  	Contract     *IERC20           // Generic contract binding to set the session for
  6144  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6145  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6146  }
  6147  
  6148  // IERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6149  // with pre-set call options.
  6150  type IERC20CallerSession struct {
  6151  	Contract *IERC20Caller // Generic contract caller binding to set the session for
  6152  	CallOpts bind.CallOpts // Call options to use throughout this session
  6153  }
  6154  
  6155  // IERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6156  // with pre-set transact options.
  6157  type IERC20TransactorSession struct {
  6158  	Contract     *IERC20Transactor // Generic contract transactor binding to set the session for
  6159  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6160  }
  6161  
  6162  // IERC20Raw is an auto generated low-level Go binding around an Ethereum contract.
  6163  type IERC20Raw struct {
  6164  	Contract *IERC20 // Generic contract binding to access the raw methods on
  6165  }
  6166  
  6167  // IERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6168  type IERC20CallerRaw struct {
  6169  	Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on
  6170  }
  6171  
  6172  // IERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6173  type IERC20TransactorRaw struct {
  6174  	Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on
  6175  }
  6176  
  6177  // NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract.
  6178  func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) {
  6179  	contract, err := bindIERC20(address, backend, backend, backend)
  6180  	if err != nil {
  6181  		return nil, err
  6182  	}
  6183  	return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil
  6184  }
  6185  
  6186  // NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract.
  6187  func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) {
  6188  	contract, err := bindIERC20(address, caller, nil, nil)
  6189  	if err != nil {
  6190  		return nil, err
  6191  	}
  6192  	return &IERC20Caller{contract: contract}, nil
  6193  }
  6194  
  6195  // NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract.
  6196  func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) {
  6197  	contract, err := bindIERC20(address, nil, transactor, nil)
  6198  	if err != nil {
  6199  		return nil, err
  6200  	}
  6201  	return &IERC20Transactor{contract: contract}, nil
  6202  }
  6203  
  6204  // NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract.
  6205  func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) {
  6206  	contract, err := bindIERC20(address, nil, nil, filterer)
  6207  	if err != nil {
  6208  		return nil, err
  6209  	}
  6210  	return &IERC20Filterer{contract: contract}, nil
  6211  }
  6212  
  6213  // bindIERC20 binds a generic wrapper to an already deployed contract.
  6214  func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6215  	parsed, err := abi.JSON(strings.NewReader(IERC20ABI))
  6216  	if err != nil {
  6217  		return nil, err
  6218  	}
  6219  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6220  }
  6221  
  6222  // Call invokes the (constant) contract method with params as input values and
  6223  // sets the output to result. The result type might be a single field for simple
  6224  // returns, a slice of interfaces for anonymous returns and a struct for named
  6225  // returns.
  6226  func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6227  	return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...)
  6228  }
  6229  
  6230  // Transfer initiates a plain transaction to move funds to the contract, calling
  6231  // its default method if one is available.
  6232  func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6233  	return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts)
  6234  }
  6235  
  6236  // Transact invokes the (paid) contract method with params as input values.
  6237  func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6238  	return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...)
  6239  }
  6240  
  6241  // Call invokes the (constant) contract method with params as input values and
  6242  // sets the output to result. The result type might be a single field for simple
  6243  // returns, a slice of interfaces for anonymous returns and a struct for named
  6244  // returns.
  6245  func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6246  	return _IERC20.Contract.contract.Call(opts, result, method, params...)
  6247  }
  6248  
  6249  // Transfer initiates a plain transaction to move funds to the contract, calling
  6250  // its default method if one is available.
  6251  func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6252  	return _IERC20.Contract.contract.Transfer(opts)
  6253  }
  6254  
  6255  // Transact invokes the (paid) contract method with params as input values.
  6256  func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6257  	return _IERC20.Contract.contract.Transact(opts, method, params...)
  6258  }
  6259  
  6260  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  6261  //
  6262  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  6263  func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  6264  	var (
  6265  		ret0 = new(*big.Int)
  6266  	)
  6267  	out := ret0
  6268  	err := _IERC20.contract.Call(opts, out, "allowance", owner, spender)
  6269  	return *ret0, err
  6270  }
  6271  
  6272  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  6273  //
  6274  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  6275  func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  6276  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
  6277  }
  6278  
  6279  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  6280  //
  6281  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
  6282  func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  6283  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
  6284  }
  6285  
  6286  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6287  //
  6288  // Solidity: function balanceOf(address account) constant returns(uint256)
  6289  func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  6290  	var (
  6291  		ret0 = new(*big.Int)
  6292  	)
  6293  	out := ret0
  6294  	err := _IERC20.contract.Call(opts, out, "balanceOf", account)
  6295  	return *ret0, err
  6296  }
  6297  
  6298  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6299  //
  6300  // Solidity: function balanceOf(address account) constant returns(uint256)
  6301  func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
  6302  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
  6303  }
  6304  
  6305  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6306  //
  6307  // Solidity: function balanceOf(address account) constant returns(uint256)
  6308  func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  6309  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
  6310  }
  6311  
  6312  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  6313  //
  6314  // Solidity: function totalSupply() constant returns(uint256)
  6315  func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  6316  	var (
  6317  		ret0 = new(*big.Int)
  6318  	)
  6319  	out := ret0
  6320  	err := _IERC20.contract.Call(opts, out, "totalSupply")
  6321  	return *ret0, err
  6322  }
  6323  
  6324  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  6325  //
  6326  // Solidity: function totalSupply() constant returns(uint256)
  6327  func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) {
  6328  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
  6329  }
  6330  
  6331  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  6332  //
  6333  // Solidity: function totalSupply() constant returns(uint256)
  6334  func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) {
  6335  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
  6336  }
  6337  
  6338  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6339  //
  6340  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  6341  func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  6342  	return _IERC20.contract.Transact(opts, "approve", spender, amount)
  6343  }
  6344  
  6345  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6346  //
  6347  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  6348  func (_IERC20 *IERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  6349  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
  6350  }
  6351  
  6352  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6353  //
  6354  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  6355  func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  6356  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
  6357  }
  6358  
  6359  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  6360  //
  6361  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  6362  func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6363  	return _IERC20.contract.Transact(opts, "transfer", recipient, amount)
  6364  }
  6365  
  6366  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  6367  //
  6368  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  6369  func (_IERC20 *IERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6370  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
  6371  }
  6372  
  6373  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  6374  //
  6375  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  6376  func (_IERC20 *IERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6377  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
  6378  }
  6379  
  6380  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6381  //
  6382  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  6383  func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6384  	return _IERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  6385  }
  6386  
  6387  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6388  //
  6389  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  6390  func (_IERC20 *IERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6391  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
  6392  }
  6393  
  6394  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6395  //
  6396  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  6397  func (_IERC20 *IERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6398  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
  6399  }
  6400  
  6401  // IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract.
  6402  type IERC20ApprovalIterator struct {
  6403  	Event *IERC20Approval // Event containing the contract specifics and raw log
  6404  
  6405  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6406  	event    string              // Event name to use for unpacking event data
  6407  
  6408  	logs chan types.Log        // Log channel receiving the found contract events
  6409  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6410  	done bool                  // Whether the subscription completed delivering logs
  6411  	fail error                 // Occurred error to stop iteration
  6412  }
  6413  
  6414  // Next advances the iterator to the subsequent event, returning whether there
  6415  // are any more events found. In case of a retrieval or parsing error, false is
  6416  // returned and Error() can be queried for the exact failure.
  6417  func (it *IERC20ApprovalIterator) Next() bool {
  6418  	// If the iterator failed, stop iterating
  6419  	if it.fail != nil {
  6420  		return false
  6421  	}
  6422  	// If the iterator completed, deliver directly whatever's available
  6423  	if it.done {
  6424  		select {
  6425  		case log := <-it.logs:
  6426  			it.Event = new(IERC20Approval)
  6427  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6428  				it.fail = err
  6429  				return false
  6430  			}
  6431  			it.Event.Raw = log
  6432  			return true
  6433  
  6434  		default:
  6435  			return false
  6436  		}
  6437  	}
  6438  	// Iterator still in progress, wait for either a data or an error event
  6439  	select {
  6440  	case log := <-it.logs:
  6441  		it.Event = new(IERC20Approval)
  6442  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6443  			it.fail = err
  6444  			return false
  6445  		}
  6446  		it.Event.Raw = log
  6447  		return true
  6448  
  6449  	case err := <-it.sub.Err():
  6450  		it.done = true
  6451  		it.fail = err
  6452  		return it.Next()
  6453  	}
  6454  }
  6455  
  6456  // Error returns any retrieval or parsing error occurred during filtering.
  6457  func (it *IERC20ApprovalIterator) Error() error {
  6458  	return it.fail
  6459  }
  6460  
  6461  // Close terminates the iteration process, releasing any pending underlying
  6462  // resources.
  6463  func (it *IERC20ApprovalIterator) Close() error {
  6464  	it.sub.Unsubscribe()
  6465  	return nil
  6466  }
  6467  
  6468  // IERC20Approval represents a Approval event raised by the IERC20 contract.
  6469  type IERC20Approval struct {
  6470  	Owner   common.Address
  6471  	Spender common.Address
  6472  	Value   *big.Int
  6473  	Raw     types.Log // Blockchain specific contextual infos
  6474  }
  6475  
  6476  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6477  //
  6478  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  6479  func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) {
  6480  
  6481  	var ownerRule []interface{}
  6482  	for _, ownerItem := range owner {
  6483  		ownerRule = append(ownerRule, ownerItem)
  6484  	}
  6485  	var spenderRule []interface{}
  6486  	for _, spenderItem := range spender {
  6487  		spenderRule = append(spenderRule, spenderItem)
  6488  	}
  6489  
  6490  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  6491  	if err != nil {
  6492  		return nil, err
  6493  	}
  6494  	return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
  6495  }
  6496  
  6497  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6498  //
  6499  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  6500  func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  6501  
  6502  	var ownerRule []interface{}
  6503  	for _, ownerItem := range owner {
  6504  		ownerRule = append(ownerRule, ownerItem)
  6505  	}
  6506  	var spenderRule []interface{}
  6507  	for _, spenderItem := range spender {
  6508  		spenderRule = append(spenderRule, spenderItem)
  6509  	}
  6510  
  6511  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  6512  	if err != nil {
  6513  		return nil, err
  6514  	}
  6515  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6516  		defer sub.Unsubscribe()
  6517  		for {
  6518  			select {
  6519  			case log := <-logs:
  6520  				// New log arrived, parse the event and forward to the user
  6521  				event := new(IERC20Approval)
  6522  				if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  6523  					return err
  6524  				}
  6525  				event.Raw = log
  6526  
  6527  				select {
  6528  				case sink <- event:
  6529  				case err := <-sub.Err():
  6530  					return err
  6531  				case <-quit:
  6532  					return nil
  6533  				}
  6534  			case err := <-sub.Err():
  6535  				return err
  6536  			case <-quit:
  6537  				return nil
  6538  			}
  6539  		}
  6540  	}), nil
  6541  }
  6542  
  6543  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6544  //
  6545  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  6546  func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) {
  6547  	event := new(IERC20Approval)
  6548  	if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  6549  		return nil, err
  6550  	}
  6551  	return event, nil
  6552  }
  6553  
  6554  // IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract.
  6555  type IERC20TransferIterator struct {
  6556  	Event *IERC20Transfer // Event containing the contract specifics and raw log
  6557  
  6558  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6559  	event    string              // Event name to use for unpacking event data
  6560  
  6561  	logs chan types.Log        // Log channel receiving the found contract events
  6562  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6563  	done bool                  // Whether the subscription completed delivering logs
  6564  	fail error                 // Occurred error to stop iteration
  6565  }
  6566  
  6567  // Next advances the iterator to the subsequent event, returning whether there
  6568  // are any more events found. In case of a retrieval or parsing error, false is
  6569  // returned and Error() can be queried for the exact failure.
  6570  func (it *IERC20TransferIterator) Next() bool {
  6571  	// If the iterator failed, stop iterating
  6572  	if it.fail != nil {
  6573  		return false
  6574  	}
  6575  	// If the iterator completed, deliver directly whatever's available
  6576  	if it.done {
  6577  		select {
  6578  		case log := <-it.logs:
  6579  			it.Event = new(IERC20Transfer)
  6580  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6581  				it.fail = err
  6582  				return false
  6583  			}
  6584  			it.Event.Raw = log
  6585  			return true
  6586  
  6587  		default:
  6588  			return false
  6589  		}
  6590  	}
  6591  	// Iterator still in progress, wait for either a data or an error event
  6592  	select {
  6593  	case log := <-it.logs:
  6594  		it.Event = new(IERC20Transfer)
  6595  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6596  			it.fail = err
  6597  			return false
  6598  		}
  6599  		it.Event.Raw = log
  6600  		return true
  6601  
  6602  	case err := <-it.sub.Err():
  6603  		it.done = true
  6604  		it.fail = err
  6605  		return it.Next()
  6606  	}
  6607  }
  6608  
  6609  // Error returns any retrieval or parsing error occurred during filtering.
  6610  func (it *IERC20TransferIterator) Error() error {
  6611  	return it.fail
  6612  }
  6613  
  6614  // Close terminates the iteration process, releasing any pending underlying
  6615  // resources.
  6616  func (it *IERC20TransferIterator) Close() error {
  6617  	it.sub.Unsubscribe()
  6618  	return nil
  6619  }
  6620  
  6621  // IERC20Transfer represents a Transfer event raised by the IERC20 contract.
  6622  type IERC20Transfer struct {
  6623  	From  common.Address
  6624  	To    common.Address
  6625  	Value *big.Int
  6626  	Raw   types.Log // Blockchain specific contextual infos
  6627  }
  6628  
  6629  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6630  //
  6631  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  6632  func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) {
  6633  
  6634  	var fromRule []interface{}
  6635  	for _, fromItem := range from {
  6636  		fromRule = append(fromRule, fromItem)
  6637  	}
  6638  	var toRule []interface{}
  6639  	for _, toItem := range to {
  6640  		toRule = append(toRule, toItem)
  6641  	}
  6642  
  6643  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  6644  	if err != nil {
  6645  		return nil, err
  6646  	}
  6647  	return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
  6648  }
  6649  
  6650  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6651  //
  6652  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  6653  func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  6654  
  6655  	var fromRule []interface{}
  6656  	for _, fromItem := range from {
  6657  		fromRule = append(fromRule, fromItem)
  6658  	}
  6659  	var toRule []interface{}
  6660  	for _, toItem := range to {
  6661  		toRule = append(toRule, toItem)
  6662  	}
  6663  
  6664  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  6665  	if err != nil {
  6666  		return nil, err
  6667  	}
  6668  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6669  		defer sub.Unsubscribe()
  6670  		for {
  6671  			select {
  6672  			case log := <-logs:
  6673  				// New log arrived, parse the event and forward to the user
  6674  				event := new(IERC20Transfer)
  6675  				if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  6676  					return err
  6677  				}
  6678  				event.Raw = log
  6679  
  6680  				select {
  6681  				case sink <- event:
  6682  				case err := <-sub.Err():
  6683  					return err
  6684  				case <-quit:
  6685  					return nil
  6686  				}
  6687  			case err := <-sub.Err():
  6688  				return err
  6689  			case <-quit:
  6690  				return nil
  6691  			}
  6692  		}
  6693  	}), nil
  6694  }
  6695  
  6696  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6697  //
  6698  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  6699  func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) {
  6700  	event := new(IERC20Transfer)
  6701  	if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  6702  		return nil, err
  6703  	}
  6704  	return event, nil
  6705  }
  6706  
  6707  // MinterRoleABI is the input ABI used to generate the binding from.
  6708  const MinterRoleABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  6709  
  6710  // MinterRoleFuncSigs maps the 4-byte function signature to its string representation.
  6711  var MinterRoleFuncSigs = map[string]string{
  6712  	"983b2d56": "addMinter(address)",
  6713  	"aa271e1a": "isMinter(address)",
  6714  	"98650275": "renounceMinter()",
  6715  }
  6716  
  6717  // MinterRole is an auto generated Go binding around an Ethereum contract.
  6718  type MinterRole struct {
  6719  	MinterRoleCaller     // Read-only binding to the contract
  6720  	MinterRoleTransactor // Write-only binding to the contract
  6721  	MinterRoleFilterer   // Log filterer for contract events
  6722  }
  6723  
  6724  // MinterRoleCaller is an auto generated read-only Go binding around an Ethereum contract.
  6725  type MinterRoleCaller struct {
  6726  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6727  }
  6728  
  6729  // MinterRoleTransactor is an auto generated write-only Go binding around an Ethereum contract.
  6730  type MinterRoleTransactor struct {
  6731  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6732  }
  6733  
  6734  // MinterRoleFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  6735  type MinterRoleFilterer struct {
  6736  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6737  }
  6738  
  6739  // MinterRoleSession is an auto generated Go binding around an Ethereum contract,
  6740  // with pre-set call and transact options.
  6741  type MinterRoleSession struct {
  6742  	Contract     *MinterRole       // Generic contract binding to set the session for
  6743  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  6744  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  6745  }
  6746  
  6747  // MinterRoleCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  6748  // with pre-set call options.
  6749  type MinterRoleCallerSession struct {
  6750  	Contract *MinterRoleCaller // Generic contract caller binding to set the session for
  6751  	CallOpts bind.CallOpts     // Call options to use throughout this session
  6752  }
  6753  
  6754  // MinterRoleTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  6755  // with pre-set transact options.
  6756  type MinterRoleTransactorSession struct {
  6757  	Contract     *MinterRoleTransactor // Generic contract transactor binding to set the session for
  6758  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  6759  }
  6760  
  6761  // MinterRoleRaw is an auto generated low-level Go binding around an Ethereum contract.
  6762  type MinterRoleRaw struct {
  6763  	Contract *MinterRole // Generic contract binding to access the raw methods on
  6764  }
  6765  
  6766  // MinterRoleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  6767  type MinterRoleCallerRaw struct {
  6768  	Contract *MinterRoleCaller // Generic read-only contract binding to access the raw methods on
  6769  }
  6770  
  6771  // MinterRoleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  6772  type MinterRoleTransactorRaw struct {
  6773  	Contract *MinterRoleTransactor // Generic write-only contract binding to access the raw methods on
  6774  }
  6775  
  6776  // NewMinterRole creates a new instance of MinterRole, bound to a specific deployed contract.
  6777  func NewMinterRole(address common.Address, backend bind.ContractBackend) (*MinterRole, error) {
  6778  	contract, err := bindMinterRole(address, backend, backend, backend)
  6779  	if err != nil {
  6780  		return nil, err
  6781  	}
  6782  	return &MinterRole{MinterRoleCaller: MinterRoleCaller{contract: contract}, MinterRoleTransactor: MinterRoleTransactor{contract: contract}, MinterRoleFilterer: MinterRoleFilterer{contract: contract}}, nil
  6783  }
  6784  
  6785  // NewMinterRoleCaller creates a new read-only instance of MinterRole, bound to a specific deployed contract.
  6786  func NewMinterRoleCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleCaller, error) {
  6787  	contract, err := bindMinterRole(address, caller, nil, nil)
  6788  	if err != nil {
  6789  		return nil, err
  6790  	}
  6791  	return &MinterRoleCaller{contract: contract}, nil
  6792  }
  6793  
  6794  // NewMinterRoleTransactor creates a new write-only instance of MinterRole, bound to a specific deployed contract.
  6795  func NewMinterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleTransactor, error) {
  6796  	contract, err := bindMinterRole(address, nil, transactor, nil)
  6797  	if err != nil {
  6798  		return nil, err
  6799  	}
  6800  	return &MinterRoleTransactor{contract: contract}, nil
  6801  }
  6802  
  6803  // NewMinterRoleFilterer creates a new log filterer instance of MinterRole, bound to a specific deployed contract.
  6804  func NewMinterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleFilterer, error) {
  6805  	contract, err := bindMinterRole(address, nil, nil, filterer)
  6806  	if err != nil {
  6807  		return nil, err
  6808  	}
  6809  	return &MinterRoleFilterer{contract: contract}, nil
  6810  }
  6811  
  6812  // bindMinterRole binds a generic wrapper to an already deployed contract.
  6813  func bindMinterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6814  	parsed, err := abi.JSON(strings.NewReader(MinterRoleABI))
  6815  	if err != nil {
  6816  		return nil, err
  6817  	}
  6818  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6819  }
  6820  
  6821  // Call invokes the (constant) contract method with params as input values and
  6822  // sets the output to result. The result type might be a single field for simple
  6823  // returns, a slice of interfaces for anonymous returns and a struct for named
  6824  // returns.
  6825  func (_MinterRole *MinterRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6826  	return _MinterRole.Contract.MinterRoleCaller.contract.Call(opts, result, method, params...)
  6827  }
  6828  
  6829  // Transfer initiates a plain transaction to move funds to the contract, calling
  6830  // its default method if one is available.
  6831  func (_MinterRole *MinterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6832  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transfer(opts)
  6833  }
  6834  
  6835  // Transact invokes the (paid) contract method with params as input values.
  6836  func (_MinterRole *MinterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6837  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transact(opts, method, params...)
  6838  }
  6839  
  6840  // Call invokes the (constant) contract method with params as input values and
  6841  // sets the output to result. The result type might be a single field for simple
  6842  // returns, a slice of interfaces for anonymous returns and a struct for named
  6843  // returns.
  6844  func (_MinterRole *MinterRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6845  	return _MinterRole.Contract.contract.Call(opts, result, method, params...)
  6846  }
  6847  
  6848  // Transfer initiates a plain transaction to move funds to the contract, calling
  6849  // its default method if one is available.
  6850  func (_MinterRole *MinterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6851  	return _MinterRole.Contract.contract.Transfer(opts)
  6852  }
  6853  
  6854  // Transact invokes the (paid) contract method with params as input values.
  6855  func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6856  	return _MinterRole.Contract.contract.Transact(opts, method, params...)
  6857  }
  6858  
  6859  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6860  //
  6861  // Solidity: function isMinter(address account) constant returns(bool)
  6862  func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  6863  	var (
  6864  		ret0 = new(bool)
  6865  	)
  6866  	out := ret0
  6867  	err := _MinterRole.contract.Call(opts, out, "isMinter", account)
  6868  	return *ret0, err
  6869  }
  6870  
  6871  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6872  //
  6873  // Solidity: function isMinter(address account) constant returns(bool)
  6874  func (_MinterRole *MinterRoleSession) IsMinter(account common.Address) (bool, error) {
  6875  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
  6876  }
  6877  
  6878  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6879  //
  6880  // Solidity: function isMinter(address account) constant returns(bool)
  6881  func (_MinterRole *MinterRoleCallerSession) IsMinter(account common.Address) (bool, error) {
  6882  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
  6883  }
  6884  
  6885  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6886  //
  6887  // Solidity: function addMinter(address account) returns()
  6888  func (_MinterRole *MinterRoleTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  6889  	return _MinterRole.contract.Transact(opts, "addMinter", account)
  6890  }
  6891  
  6892  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6893  //
  6894  // Solidity: function addMinter(address account) returns()
  6895  func (_MinterRole *MinterRoleSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6896  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
  6897  }
  6898  
  6899  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6900  //
  6901  // Solidity: function addMinter(address account) returns()
  6902  func (_MinterRole *MinterRoleTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6903  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
  6904  }
  6905  
  6906  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6907  //
  6908  // Solidity: function renounceMinter() returns()
  6909  func (_MinterRole *MinterRoleTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  6910  	return _MinterRole.contract.Transact(opts, "renounceMinter")
  6911  }
  6912  
  6913  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6914  //
  6915  // Solidity: function renounceMinter() returns()
  6916  func (_MinterRole *MinterRoleSession) RenounceMinter() (*types.Transaction, error) {
  6917  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
  6918  }
  6919  
  6920  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6921  //
  6922  // Solidity: function renounceMinter() returns()
  6923  func (_MinterRole *MinterRoleTransactorSession) RenounceMinter() (*types.Transaction, error) {
  6924  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
  6925  }
  6926  
  6927  // MinterRoleMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the MinterRole contract.
  6928  type MinterRoleMinterAddedIterator struct {
  6929  	Event *MinterRoleMinterAdded // Event containing the contract specifics and raw log
  6930  
  6931  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6932  	event    string              // Event name to use for unpacking event data
  6933  
  6934  	logs chan types.Log        // Log channel receiving the found contract events
  6935  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  6936  	done bool                  // Whether the subscription completed delivering logs
  6937  	fail error                 // Occurred error to stop iteration
  6938  }
  6939  
  6940  // Next advances the iterator to the subsequent event, returning whether there
  6941  // are any more events found. In case of a retrieval or parsing error, false is
  6942  // returned and Error() can be queried for the exact failure.
  6943  func (it *MinterRoleMinterAddedIterator) Next() bool {
  6944  	// If the iterator failed, stop iterating
  6945  	if it.fail != nil {
  6946  		return false
  6947  	}
  6948  	// If the iterator completed, deliver directly whatever's available
  6949  	if it.done {
  6950  		select {
  6951  		case log := <-it.logs:
  6952  			it.Event = new(MinterRoleMinterAdded)
  6953  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6954  				it.fail = err
  6955  				return false
  6956  			}
  6957  			it.Event.Raw = log
  6958  			return true
  6959  
  6960  		default:
  6961  			return false
  6962  		}
  6963  	}
  6964  	// Iterator still in progress, wait for either a data or an error event
  6965  	select {
  6966  	case log := <-it.logs:
  6967  		it.Event = new(MinterRoleMinterAdded)
  6968  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6969  			it.fail = err
  6970  			return false
  6971  		}
  6972  		it.Event.Raw = log
  6973  		return true
  6974  
  6975  	case err := <-it.sub.Err():
  6976  		it.done = true
  6977  		it.fail = err
  6978  		return it.Next()
  6979  	}
  6980  }
  6981  
  6982  // Error returns any retrieval or parsing error occurred during filtering.
  6983  func (it *MinterRoleMinterAddedIterator) Error() error {
  6984  	return it.fail
  6985  }
  6986  
  6987  // Close terminates the iteration process, releasing any pending underlying
  6988  // resources.
  6989  func (it *MinterRoleMinterAddedIterator) Close() error {
  6990  	it.sub.Unsubscribe()
  6991  	return nil
  6992  }
  6993  
  6994  // MinterRoleMinterAdded represents a MinterAdded event raised by the MinterRole contract.
  6995  type MinterRoleMinterAdded struct {
  6996  	Account common.Address
  6997  	Raw     types.Log // Blockchain specific contextual infos
  6998  }
  6999  
  7000  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  7001  //
  7002  // Solidity: event MinterAdded(address indexed account)
  7003  func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) {
  7004  
  7005  	var accountRule []interface{}
  7006  	for _, accountItem := range account {
  7007  		accountRule = append(accountRule, accountItem)
  7008  	}
  7009  
  7010  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterAdded", accountRule)
  7011  	if err != nil {
  7012  		return nil, err
  7013  	}
  7014  	return &MinterRoleMinterAddedIterator{contract: _MinterRole.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  7015  }
  7016  
  7017  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  7018  //
  7019  // Solidity: event MinterAdded(address indexed account)
  7020  func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) {
  7021  
  7022  	var accountRule []interface{}
  7023  	for _, accountItem := range account {
  7024  		accountRule = append(accountRule, accountItem)
  7025  	}
  7026  
  7027  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterAdded", accountRule)
  7028  	if err != nil {
  7029  		return nil, err
  7030  	}
  7031  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7032  		defer sub.Unsubscribe()
  7033  		for {
  7034  			select {
  7035  			case log := <-logs:
  7036  				// New log arrived, parse the event and forward to the user
  7037  				event := new(MinterRoleMinterAdded)
  7038  				if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  7039  					return err
  7040  				}
  7041  				event.Raw = log
  7042  
  7043  				select {
  7044  				case sink <- event:
  7045  				case err := <-sub.Err():
  7046  					return err
  7047  				case <-quit:
  7048  					return nil
  7049  				}
  7050  			case err := <-sub.Err():
  7051  				return err
  7052  			case <-quit:
  7053  				return nil
  7054  			}
  7055  		}
  7056  	}), nil
  7057  }
  7058  
  7059  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  7060  //
  7061  // Solidity: event MinterAdded(address indexed account)
  7062  func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterRoleMinterAdded, error) {
  7063  	event := new(MinterRoleMinterAdded)
  7064  	if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  7065  		return nil, err
  7066  	}
  7067  	return event, nil
  7068  }
  7069  
  7070  // MinterRoleMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the MinterRole contract.
  7071  type MinterRoleMinterRemovedIterator struct {
  7072  	Event *MinterRoleMinterRemoved // Event containing the contract specifics and raw log
  7073  
  7074  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7075  	event    string              // Event name to use for unpacking event data
  7076  
  7077  	logs chan types.Log        // Log channel receiving the found contract events
  7078  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  7079  	done bool                  // Whether the subscription completed delivering logs
  7080  	fail error                 // Occurred error to stop iteration
  7081  }
  7082  
  7083  // Next advances the iterator to the subsequent event, returning whether there
  7084  // are any more events found. In case of a retrieval or parsing error, false is
  7085  // returned and Error() can be queried for the exact failure.
  7086  func (it *MinterRoleMinterRemovedIterator) Next() bool {
  7087  	// If the iterator failed, stop iterating
  7088  	if it.fail != nil {
  7089  		return false
  7090  	}
  7091  	// If the iterator completed, deliver directly whatever's available
  7092  	if it.done {
  7093  		select {
  7094  		case log := <-it.logs:
  7095  			it.Event = new(MinterRoleMinterRemoved)
  7096  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7097  				it.fail = err
  7098  				return false
  7099  			}
  7100  			it.Event.Raw = log
  7101  			return true
  7102  
  7103  		default:
  7104  			return false
  7105  		}
  7106  	}
  7107  	// Iterator still in progress, wait for either a data or an error event
  7108  	select {
  7109  	case log := <-it.logs:
  7110  		it.Event = new(MinterRoleMinterRemoved)
  7111  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7112  			it.fail = err
  7113  			return false
  7114  		}
  7115  		it.Event.Raw = log
  7116  		return true
  7117  
  7118  	case err := <-it.sub.Err():
  7119  		it.done = true
  7120  		it.fail = err
  7121  		return it.Next()
  7122  	}
  7123  }
  7124  
  7125  // Error returns any retrieval or parsing error occurred during filtering.
  7126  func (it *MinterRoleMinterRemovedIterator) Error() error {
  7127  	return it.fail
  7128  }
  7129  
  7130  // Close terminates the iteration process, releasing any pending underlying
  7131  // resources.
  7132  func (it *MinterRoleMinterRemovedIterator) Close() error {
  7133  	it.sub.Unsubscribe()
  7134  	return nil
  7135  }
  7136  
  7137  // MinterRoleMinterRemoved represents a MinterRemoved event raised by the MinterRole contract.
  7138  type MinterRoleMinterRemoved struct {
  7139  	Account common.Address
  7140  	Raw     types.Log // Blockchain specific contextual infos
  7141  }
  7142  
  7143  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  7144  //
  7145  // Solidity: event MinterRemoved(address indexed account)
  7146  func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) {
  7147  
  7148  	var accountRule []interface{}
  7149  	for _, accountItem := range account {
  7150  		accountRule = append(accountRule, accountItem)
  7151  	}
  7152  
  7153  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  7154  	if err != nil {
  7155  		return nil, err
  7156  	}
  7157  	return &MinterRoleMinterRemovedIterator{contract: _MinterRole.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  7158  }
  7159  
  7160  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  7161  //
  7162  // Solidity: event MinterRemoved(address indexed account)
  7163  func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) {
  7164  
  7165  	var accountRule []interface{}
  7166  	for _, accountItem := range account {
  7167  		accountRule = append(accountRule, accountItem)
  7168  	}
  7169  
  7170  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  7171  	if err != nil {
  7172  		return nil, err
  7173  	}
  7174  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7175  		defer sub.Unsubscribe()
  7176  		for {
  7177  			select {
  7178  			case log := <-logs:
  7179  				// New log arrived, parse the event and forward to the user
  7180  				event := new(MinterRoleMinterRemoved)
  7181  				if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  7182  					return err
  7183  				}
  7184  				event.Raw = log
  7185  
  7186  				select {
  7187  				case sink <- event:
  7188  				case err := <-sub.Err():
  7189  					return err
  7190  				case <-quit:
  7191  					return nil
  7192  				}
  7193  			case err := <-sub.Err():
  7194  				return err
  7195  			case <-quit:
  7196  				return nil
  7197  			}
  7198  		}
  7199  	}), nil
  7200  }
  7201  
  7202  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  7203  //
  7204  // Solidity: event MinterRemoved(address indexed account)
  7205  func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*MinterRoleMinterRemoved, error) {
  7206  	event := new(MinterRoleMinterRemoved)
  7207  	if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  7208  		return nil, err
  7209  	}
  7210  	return event, nil
  7211  }
  7212  
  7213  // MinterRoleRenounceTargetABI is the input ABI used to generate the binding from.
  7214  const MinterRoleRenounceTargetABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  7215  
  7216  // MinterRoleRenounceTargetFuncSigs maps the 4-byte function signature to its string representation.
  7217  var MinterRoleRenounceTargetFuncSigs = map[string]string{
  7218  	"98650275": "renounceMinter()",
  7219  }
  7220  
  7221  // MinterRoleRenounceTarget is an auto generated Go binding around an Ethereum contract.
  7222  type MinterRoleRenounceTarget struct {
  7223  	MinterRoleRenounceTargetCaller     // Read-only binding to the contract
  7224  	MinterRoleRenounceTargetTransactor // Write-only binding to the contract
  7225  	MinterRoleRenounceTargetFilterer   // Log filterer for contract events
  7226  }
  7227  
  7228  // MinterRoleRenounceTargetCaller is an auto generated read-only Go binding around an Ethereum contract.
  7229  type MinterRoleRenounceTargetCaller struct {
  7230  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7231  }
  7232  
  7233  // MinterRoleRenounceTargetTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7234  type MinterRoleRenounceTargetTransactor struct {
  7235  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7236  }
  7237  
  7238  // MinterRoleRenounceTargetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7239  type MinterRoleRenounceTargetFilterer struct {
  7240  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7241  }
  7242  
  7243  // MinterRoleRenounceTargetSession is an auto generated Go binding around an Ethereum contract,
  7244  // with pre-set call and transact options.
  7245  type MinterRoleRenounceTargetSession struct {
  7246  	Contract     *MinterRoleRenounceTarget // Generic contract binding to set the session for
  7247  	CallOpts     bind.CallOpts             // Call options to use throughout this session
  7248  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  7249  }
  7250  
  7251  // MinterRoleRenounceTargetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7252  // with pre-set call options.
  7253  type MinterRoleRenounceTargetCallerSession struct {
  7254  	Contract *MinterRoleRenounceTargetCaller // Generic contract caller binding to set the session for
  7255  	CallOpts bind.CallOpts                   // Call options to use throughout this session
  7256  }
  7257  
  7258  // MinterRoleRenounceTargetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7259  // with pre-set transact options.
  7260  type MinterRoleRenounceTargetTransactorSession struct {
  7261  	Contract     *MinterRoleRenounceTargetTransactor // Generic contract transactor binding to set the session for
  7262  	TransactOpts bind.TransactOpts                   // Transaction auth options to use throughout this session
  7263  }
  7264  
  7265  // MinterRoleRenounceTargetRaw is an auto generated low-level Go binding around an Ethereum contract.
  7266  type MinterRoleRenounceTargetRaw struct {
  7267  	Contract *MinterRoleRenounceTarget // Generic contract binding to access the raw methods on
  7268  }
  7269  
  7270  // MinterRoleRenounceTargetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7271  type MinterRoleRenounceTargetCallerRaw struct {
  7272  	Contract *MinterRoleRenounceTargetCaller // Generic read-only contract binding to access the raw methods on
  7273  }
  7274  
  7275  // MinterRoleRenounceTargetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7276  type MinterRoleRenounceTargetTransactorRaw struct {
  7277  	Contract *MinterRoleRenounceTargetTransactor // Generic write-only contract binding to access the raw methods on
  7278  }
  7279  
  7280  // NewMinterRoleRenounceTarget creates a new instance of MinterRoleRenounceTarget, bound to a specific deployed contract.
  7281  func NewMinterRoleRenounceTarget(address common.Address, backend bind.ContractBackend) (*MinterRoleRenounceTarget, error) {
  7282  	contract, err := bindMinterRoleRenounceTarget(address, backend, backend, backend)
  7283  	if err != nil {
  7284  		return nil, err
  7285  	}
  7286  	return &MinterRoleRenounceTarget{MinterRoleRenounceTargetCaller: MinterRoleRenounceTargetCaller{contract: contract}, MinterRoleRenounceTargetTransactor: MinterRoleRenounceTargetTransactor{contract: contract}, MinterRoleRenounceTargetFilterer: MinterRoleRenounceTargetFilterer{contract: contract}}, nil
  7287  }
  7288  
  7289  // NewMinterRoleRenounceTargetCaller creates a new read-only instance of MinterRoleRenounceTarget, bound to a specific deployed contract.
  7290  func NewMinterRoleRenounceTargetCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleRenounceTargetCaller, error) {
  7291  	contract, err := bindMinterRoleRenounceTarget(address, caller, nil, nil)
  7292  	if err != nil {
  7293  		return nil, err
  7294  	}
  7295  	return &MinterRoleRenounceTargetCaller{contract: contract}, nil
  7296  }
  7297  
  7298  // NewMinterRoleRenounceTargetTransactor creates a new write-only instance of MinterRoleRenounceTarget, bound to a specific deployed contract.
  7299  func NewMinterRoleRenounceTargetTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleRenounceTargetTransactor, error) {
  7300  	contract, err := bindMinterRoleRenounceTarget(address, nil, transactor, nil)
  7301  	if err != nil {
  7302  		return nil, err
  7303  	}
  7304  	return &MinterRoleRenounceTargetTransactor{contract: contract}, nil
  7305  }
  7306  
  7307  // NewMinterRoleRenounceTargetFilterer creates a new log filterer instance of MinterRoleRenounceTarget, bound to a specific deployed contract.
  7308  func NewMinterRoleRenounceTargetFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleRenounceTargetFilterer, error) {
  7309  	contract, err := bindMinterRoleRenounceTarget(address, nil, nil, filterer)
  7310  	if err != nil {
  7311  		return nil, err
  7312  	}
  7313  	return &MinterRoleRenounceTargetFilterer{contract: contract}, nil
  7314  }
  7315  
  7316  // bindMinterRoleRenounceTarget binds a generic wrapper to an already deployed contract.
  7317  func bindMinterRoleRenounceTarget(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7318  	parsed, err := abi.JSON(strings.NewReader(MinterRoleRenounceTargetABI))
  7319  	if err != nil {
  7320  		return nil, err
  7321  	}
  7322  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7323  }
  7324  
  7325  // Call invokes the (constant) contract method with params as input values and
  7326  // sets the output to result. The result type might be a single field for simple
  7327  // returns, a slice of interfaces for anonymous returns and a struct for named
  7328  // returns.
  7329  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7330  	return _MinterRoleRenounceTarget.Contract.MinterRoleRenounceTargetCaller.contract.Call(opts, result, method, params...)
  7331  }
  7332  
  7333  // Transfer initiates a plain transaction to move funds to the contract, calling
  7334  // its default method if one is available.
  7335  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7336  	return _MinterRoleRenounceTarget.Contract.MinterRoleRenounceTargetTransactor.contract.Transfer(opts)
  7337  }
  7338  
  7339  // Transact invokes the (paid) contract method with params as input values.
  7340  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7341  	return _MinterRoleRenounceTarget.Contract.MinterRoleRenounceTargetTransactor.contract.Transact(opts, method, params...)
  7342  }
  7343  
  7344  // Call invokes the (constant) contract method with params as input values and
  7345  // sets the output to result. The result type might be a single field for simple
  7346  // returns, a slice of interfaces for anonymous returns and a struct for named
  7347  // returns.
  7348  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7349  	return _MinterRoleRenounceTarget.Contract.contract.Call(opts, result, method, params...)
  7350  }
  7351  
  7352  // Transfer initiates a plain transaction to move funds to the contract, calling
  7353  // its default method if one is available.
  7354  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7355  	return _MinterRoleRenounceTarget.Contract.contract.Transfer(opts)
  7356  }
  7357  
  7358  // Transact invokes the (paid) contract method with params as input values.
  7359  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7360  	return _MinterRoleRenounceTarget.Contract.contract.Transact(opts, method, params...)
  7361  }
  7362  
  7363  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  7364  //
  7365  // Solidity: function renounceMinter() returns()
  7366  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  7367  	return _MinterRoleRenounceTarget.contract.Transact(opts, "renounceMinter")
  7368  }
  7369  
  7370  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  7371  //
  7372  // Solidity: function renounceMinter() returns()
  7373  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetSession) RenounceMinter() (*types.Transaction, error) {
  7374  	return _MinterRoleRenounceTarget.Contract.RenounceMinter(&_MinterRoleRenounceTarget.TransactOpts)
  7375  }
  7376  
  7377  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  7378  //
  7379  // Solidity: function renounceMinter() returns()
  7380  func (_MinterRoleRenounceTarget *MinterRoleRenounceTargetTransactorSession) RenounceMinter() (*types.Transaction, error) {
  7381  	return _MinterRoleRenounceTarget.Contract.RenounceMinter(&_MinterRoleRenounceTarget.TransactOpts)
  7382  }
  7383  
  7384  // OnApproveABI is the input ABI used to generate the binding from.
  7385  const OnApproveABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onApprove\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  7386  
  7387  // OnApproveFuncSigs maps the 4-byte function signature to its string representation.
  7388  var OnApproveFuncSigs = map[string]string{
  7389  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
  7390  	"4273ca16": "onApprove(address,address,uint256,bytes)",
  7391  	"01ffc9a7": "supportsInterface(bytes4)",
  7392  }
  7393  
  7394  // OnApprove is an auto generated Go binding around an Ethereum contract.
  7395  type OnApprove struct {
  7396  	OnApproveCaller     // Read-only binding to the contract
  7397  	OnApproveTransactor // Write-only binding to the contract
  7398  	OnApproveFilterer   // Log filterer for contract events
  7399  }
  7400  
  7401  // OnApproveCaller is an auto generated read-only Go binding around an Ethereum contract.
  7402  type OnApproveCaller struct {
  7403  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7404  }
  7405  
  7406  // OnApproveTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7407  type OnApproveTransactor struct {
  7408  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7409  }
  7410  
  7411  // OnApproveFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7412  type OnApproveFilterer struct {
  7413  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7414  }
  7415  
  7416  // OnApproveSession is an auto generated Go binding around an Ethereum contract,
  7417  // with pre-set call and transact options.
  7418  type OnApproveSession struct {
  7419  	Contract     *OnApprove        // Generic contract binding to set the session for
  7420  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7421  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7422  }
  7423  
  7424  // OnApproveCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7425  // with pre-set call options.
  7426  type OnApproveCallerSession struct {
  7427  	Contract *OnApproveCaller // Generic contract caller binding to set the session for
  7428  	CallOpts bind.CallOpts    // Call options to use throughout this session
  7429  }
  7430  
  7431  // OnApproveTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7432  // with pre-set transact options.
  7433  type OnApproveTransactorSession struct {
  7434  	Contract     *OnApproveTransactor // Generic contract transactor binding to set the session for
  7435  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  7436  }
  7437  
  7438  // OnApproveRaw is an auto generated low-level Go binding around an Ethereum contract.
  7439  type OnApproveRaw struct {
  7440  	Contract *OnApprove // Generic contract binding to access the raw methods on
  7441  }
  7442  
  7443  // OnApproveCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7444  type OnApproveCallerRaw struct {
  7445  	Contract *OnApproveCaller // Generic read-only contract binding to access the raw methods on
  7446  }
  7447  
  7448  // OnApproveTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7449  type OnApproveTransactorRaw struct {
  7450  	Contract *OnApproveTransactor // Generic write-only contract binding to access the raw methods on
  7451  }
  7452  
  7453  // NewOnApprove creates a new instance of OnApprove, bound to a specific deployed contract.
  7454  func NewOnApprove(address common.Address, backend bind.ContractBackend) (*OnApprove, error) {
  7455  	contract, err := bindOnApprove(address, backend, backend, backend)
  7456  	if err != nil {
  7457  		return nil, err
  7458  	}
  7459  	return &OnApprove{OnApproveCaller: OnApproveCaller{contract: contract}, OnApproveTransactor: OnApproveTransactor{contract: contract}, OnApproveFilterer: OnApproveFilterer{contract: contract}}, nil
  7460  }
  7461  
  7462  // NewOnApproveCaller creates a new read-only instance of OnApprove, bound to a specific deployed contract.
  7463  func NewOnApproveCaller(address common.Address, caller bind.ContractCaller) (*OnApproveCaller, error) {
  7464  	contract, err := bindOnApprove(address, caller, nil, nil)
  7465  	if err != nil {
  7466  		return nil, err
  7467  	}
  7468  	return &OnApproveCaller{contract: contract}, nil
  7469  }
  7470  
  7471  // NewOnApproveTransactor creates a new write-only instance of OnApprove, bound to a specific deployed contract.
  7472  func NewOnApproveTransactor(address common.Address, transactor bind.ContractTransactor) (*OnApproveTransactor, error) {
  7473  	contract, err := bindOnApprove(address, nil, transactor, nil)
  7474  	if err != nil {
  7475  		return nil, err
  7476  	}
  7477  	return &OnApproveTransactor{contract: contract}, nil
  7478  }
  7479  
  7480  // NewOnApproveFilterer creates a new log filterer instance of OnApprove, bound to a specific deployed contract.
  7481  func NewOnApproveFilterer(address common.Address, filterer bind.ContractFilterer) (*OnApproveFilterer, error) {
  7482  	contract, err := bindOnApprove(address, nil, nil, filterer)
  7483  	if err != nil {
  7484  		return nil, err
  7485  	}
  7486  	return &OnApproveFilterer{contract: contract}, nil
  7487  }
  7488  
  7489  // bindOnApprove binds a generic wrapper to an already deployed contract.
  7490  func bindOnApprove(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7491  	parsed, err := abi.JSON(strings.NewReader(OnApproveABI))
  7492  	if err != nil {
  7493  		return nil, err
  7494  	}
  7495  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7496  }
  7497  
  7498  // Call invokes the (constant) contract method with params as input values and
  7499  // sets the output to result. The result type might be a single field for simple
  7500  // returns, a slice of interfaces for anonymous returns and a struct for named
  7501  // returns.
  7502  func (_OnApprove *OnApproveRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7503  	return _OnApprove.Contract.OnApproveCaller.contract.Call(opts, result, method, params...)
  7504  }
  7505  
  7506  // Transfer initiates a plain transaction to move funds to the contract, calling
  7507  // its default method if one is available.
  7508  func (_OnApprove *OnApproveRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7509  	return _OnApprove.Contract.OnApproveTransactor.contract.Transfer(opts)
  7510  }
  7511  
  7512  // Transact invokes the (paid) contract method with params as input values.
  7513  func (_OnApprove *OnApproveRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7514  	return _OnApprove.Contract.OnApproveTransactor.contract.Transact(opts, method, params...)
  7515  }
  7516  
  7517  // Call invokes the (constant) contract method with params as input values and
  7518  // sets the output to result. The result type might be a single field for simple
  7519  // returns, a slice of interfaces for anonymous returns and a struct for named
  7520  // returns.
  7521  func (_OnApprove *OnApproveCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7522  	return _OnApprove.Contract.contract.Call(opts, result, method, params...)
  7523  }
  7524  
  7525  // Transfer initiates a plain transaction to move funds to the contract, calling
  7526  // its default method if one is available.
  7527  func (_OnApprove *OnApproveTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7528  	return _OnApprove.Contract.contract.Transfer(opts)
  7529  }
  7530  
  7531  // Transact invokes the (paid) contract method with params as input values.
  7532  func (_OnApprove *OnApproveTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7533  	return _OnApprove.Contract.contract.Transact(opts, method, params...)
  7534  }
  7535  
  7536  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  7537  //
  7538  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  7539  func (_OnApprove *OnApproveCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
  7540  	var (
  7541  		ret0 = new([4]byte)
  7542  	)
  7543  	out := ret0
  7544  	err := _OnApprove.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
  7545  	return *ret0, err
  7546  }
  7547  
  7548  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  7549  //
  7550  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  7551  func (_OnApprove *OnApproveSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  7552  	return _OnApprove.Contract.INTERFACEIDONAPPROVE(&_OnApprove.CallOpts)
  7553  }
  7554  
  7555  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  7556  //
  7557  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  7558  func (_OnApprove *OnApproveCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  7559  	return _OnApprove.Contract.INTERFACEIDONAPPROVE(&_OnApprove.CallOpts)
  7560  }
  7561  
  7562  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7563  //
  7564  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  7565  func (_OnApprove *OnApproveCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  7566  	var (
  7567  		ret0 = new(bool)
  7568  	)
  7569  	out := ret0
  7570  	err := _OnApprove.contract.Call(opts, out, "supportsInterface", interfaceId)
  7571  	return *ret0, err
  7572  }
  7573  
  7574  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7575  //
  7576  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  7577  func (_OnApprove *OnApproveSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  7578  	return _OnApprove.Contract.SupportsInterface(&_OnApprove.CallOpts, interfaceId)
  7579  }
  7580  
  7581  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7582  //
  7583  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
  7584  func (_OnApprove *OnApproveCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  7585  	return _OnApprove.Contract.SupportsInterface(&_OnApprove.CallOpts, interfaceId)
  7586  }
  7587  
  7588  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
  7589  //
  7590  // Solidity: function onApprove(address owner, address spender, uint256 amount, bytes data) returns(bool)
  7591  func (_OnApprove *OnApproveTransactor) OnApprove(opts *bind.TransactOpts, owner common.Address, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  7592  	return _OnApprove.contract.Transact(opts, "onApprove", owner, spender, amount, data)
  7593  }
  7594  
  7595  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
  7596  //
  7597  // Solidity: function onApprove(address owner, address spender, uint256 amount, bytes data) returns(bool)
  7598  func (_OnApprove *OnApproveSession) OnApprove(owner common.Address, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  7599  	return _OnApprove.Contract.OnApprove(&_OnApprove.TransactOpts, owner, spender, amount, data)
  7600  }
  7601  
  7602  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
  7603  //
  7604  // Solidity: function onApprove(address owner, address spender, uint256 amount, bytes data) returns(bool)
  7605  func (_OnApprove *OnApproveTransactorSession) OnApprove(owner common.Address, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
  7606  	return _OnApprove.Contract.OnApprove(&_OnApprove.TransactOpts, owner, spender, amount, data)
  7607  }
  7608  
  7609  // OnApproveConstantABI is the input ABI used to generate the binding from.
  7610  const OnApproveConstantABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  7611  
  7612  // OnApproveConstantFuncSigs maps the 4-byte function signature to its string representation.
  7613  var OnApproveConstantFuncSigs = map[string]string{
  7614  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
  7615  }
  7616  
  7617  // OnApproveConstantBin is the compiled bytecode used for deploying new contracts.
  7618  var OnApproveConstantBin = "0x6080604052348015600f57600080fd5b5060c78061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80636cd28f9a14602d575b600080fd5b60336050565b604080516001600160e01b03199092168252519081900360200190f35b604051806028606b8239602801905060405180910390208156fe6f6e417070726f766528616464726573732c616464726573732c75696e743235362c627974657329a265627a7a723158206d94182e39f46cad6425154650e56ecd40259e07a64364bd131e67fe91c85c7664736f6c634300050c0032"
  7619  
  7620  // DeployOnApproveConstant deploys a new Ethereum contract, binding an instance of OnApproveConstant to it.
  7621  func DeployOnApproveConstant(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *OnApproveConstant, error) {
  7622  	parsed, err := abi.JSON(strings.NewReader(OnApproveConstantABI))
  7623  	if err != nil {
  7624  		return common.Address{}, nil, nil, err
  7625  	}
  7626  
  7627  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(OnApproveConstantBin), backend)
  7628  	if err != nil {
  7629  		return common.Address{}, nil, nil, err
  7630  	}
  7631  	return address, tx, &OnApproveConstant{OnApproveConstantCaller: OnApproveConstantCaller{contract: contract}, OnApproveConstantTransactor: OnApproveConstantTransactor{contract: contract}, OnApproveConstantFilterer: OnApproveConstantFilterer{contract: contract}}, nil
  7632  }
  7633  
  7634  // OnApproveConstant is an auto generated Go binding around an Ethereum contract.
  7635  type OnApproveConstant struct {
  7636  	OnApproveConstantCaller     // Read-only binding to the contract
  7637  	OnApproveConstantTransactor // Write-only binding to the contract
  7638  	OnApproveConstantFilterer   // Log filterer for contract events
  7639  }
  7640  
  7641  // OnApproveConstantCaller is an auto generated read-only Go binding around an Ethereum contract.
  7642  type OnApproveConstantCaller struct {
  7643  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7644  }
  7645  
  7646  // OnApproveConstantTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7647  type OnApproveConstantTransactor struct {
  7648  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7649  }
  7650  
  7651  // OnApproveConstantFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7652  type OnApproveConstantFilterer struct {
  7653  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7654  }
  7655  
  7656  // OnApproveConstantSession is an auto generated Go binding around an Ethereum contract,
  7657  // with pre-set call and transact options.
  7658  type OnApproveConstantSession struct {
  7659  	Contract     *OnApproveConstant // Generic contract binding to set the session for
  7660  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  7661  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  7662  }
  7663  
  7664  // OnApproveConstantCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7665  // with pre-set call options.
  7666  type OnApproveConstantCallerSession struct {
  7667  	Contract *OnApproveConstantCaller // Generic contract caller binding to set the session for
  7668  	CallOpts bind.CallOpts            // Call options to use throughout this session
  7669  }
  7670  
  7671  // OnApproveConstantTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7672  // with pre-set transact options.
  7673  type OnApproveConstantTransactorSession struct {
  7674  	Contract     *OnApproveConstantTransactor // Generic contract transactor binding to set the session for
  7675  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  7676  }
  7677  
  7678  // OnApproveConstantRaw is an auto generated low-level Go binding around an Ethereum contract.
  7679  type OnApproveConstantRaw struct {
  7680  	Contract *OnApproveConstant // Generic contract binding to access the raw methods on
  7681  }
  7682  
  7683  // OnApproveConstantCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7684  type OnApproveConstantCallerRaw struct {
  7685  	Contract *OnApproveConstantCaller // Generic read-only contract binding to access the raw methods on
  7686  }
  7687  
  7688  // OnApproveConstantTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7689  type OnApproveConstantTransactorRaw struct {
  7690  	Contract *OnApproveConstantTransactor // Generic write-only contract binding to access the raw methods on
  7691  }
  7692  
  7693  // NewOnApproveConstant creates a new instance of OnApproveConstant, bound to a specific deployed contract.
  7694  func NewOnApproveConstant(address common.Address, backend bind.ContractBackend) (*OnApproveConstant, error) {
  7695  	contract, err := bindOnApproveConstant(address, backend, backend, backend)
  7696  	if err != nil {
  7697  		return nil, err
  7698  	}
  7699  	return &OnApproveConstant{OnApproveConstantCaller: OnApproveConstantCaller{contract: contract}, OnApproveConstantTransactor: OnApproveConstantTransactor{contract: contract}, OnApproveConstantFilterer: OnApproveConstantFilterer{contract: contract}}, nil
  7700  }
  7701  
  7702  // NewOnApproveConstantCaller creates a new read-only instance of OnApproveConstant, bound to a specific deployed contract.
  7703  func NewOnApproveConstantCaller(address common.Address, caller bind.ContractCaller) (*OnApproveConstantCaller, error) {
  7704  	contract, err := bindOnApproveConstant(address, caller, nil, nil)
  7705  	if err != nil {
  7706  		return nil, err
  7707  	}
  7708  	return &OnApproveConstantCaller{contract: contract}, nil
  7709  }
  7710  
  7711  // NewOnApproveConstantTransactor creates a new write-only instance of OnApproveConstant, bound to a specific deployed contract.
  7712  func NewOnApproveConstantTransactor(address common.Address, transactor bind.ContractTransactor) (*OnApproveConstantTransactor, error) {
  7713  	contract, err := bindOnApproveConstant(address, nil, transactor, nil)
  7714  	if err != nil {
  7715  		return nil, err
  7716  	}
  7717  	return &OnApproveConstantTransactor{contract: contract}, nil
  7718  }
  7719  
  7720  // NewOnApproveConstantFilterer creates a new log filterer instance of OnApproveConstant, bound to a specific deployed contract.
  7721  func NewOnApproveConstantFilterer(address common.Address, filterer bind.ContractFilterer) (*OnApproveConstantFilterer, error) {
  7722  	contract, err := bindOnApproveConstant(address, nil, nil, filterer)
  7723  	if err != nil {
  7724  		return nil, err
  7725  	}
  7726  	return &OnApproveConstantFilterer{contract: contract}, nil
  7727  }
  7728  
  7729  // bindOnApproveConstant binds a generic wrapper to an already deployed contract.
  7730  func bindOnApproveConstant(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7731  	parsed, err := abi.JSON(strings.NewReader(OnApproveConstantABI))
  7732  	if err != nil {
  7733  		return nil, err
  7734  	}
  7735  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7736  }
  7737  
  7738  // Call invokes the (constant) contract method with params as input values and
  7739  // sets the output to result. The result type might be a single field for simple
  7740  // returns, a slice of interfaces for anonymous returns and a struct for named
  7741  // returns.
  7742  func (_OnApproveConstant *OnApproveConstantRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7743  	return _OnApproveConstant.Contract.OnApproveConstantCaller.contract.Call(opts, result, method, params...)
  7744  }
  7745  
  7746  // Transfer initiates a plain transaction to move funds to the contract, calling
  7747  // its default method if one is available.
  7748  func (_OnApproveConstant *OnApproveConstantRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7749  	return _OnApproveConstant.Contract.OnApproveConstantTransactor.contract.Transfer(opts)
  7750  }
  7751  
  7752  // Transact invokes the (paid) contract method with params as input values.
  7753  func (_OnApproveConstant *OnApproveConstantRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7754  	return _OnApproveConstant.Contract.OnApproveConstantTransactor.contract.Transact(opts, method, params...)
  7755  }
  7756  
  7757  // Call invokes the (constant) contract method with params as input values and
  7758  // sets the output to result. The result type might be a single field for simple
  7759  // returns, a slice of interfaces for anonymous returns and a struct for named
  7760  // returns.
  7761  func (_OnApproveConstant *OnApproveConstantCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7762  	return _OnApproveConstant.Contract.contract.Call(opts, result, method, params...)
  7763  }
  7764  
  7765  // Transfer initiates a plain transaction to move funds to the contract, calling
  7766  // its default method if one is available.
  7767  func (_OnApproveConstant *OnApproveConstantTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7768  	return _OnApproveConstant.Contract.contract.Transfer(opts)
  7769  }
  7770  
  7771  // Transact invokes the (paid) contract method with params as input values.
  7772  func (_OnApproveConstant *OnApproveConstantTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7773  	return _OnApproveConstant.Contract.contract.Transact(opts, method, params...)
  7774  }
  7775  
  7776  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  7777  //
  7778  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  7779  func (_OnApproveConstant *OnApproveConstantCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
  7780  	var (
  7781  		ret0 = new([4]byte)
  7782  	)
  7783  	out := ret0
  7784  	err := _OnApproveConstant.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
  7785  	return *ret0, err
  7786  }
  7787  
  7788  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  7789  //
  7790  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  7791  func (_OnApproveConstant *OnApproveConstantSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  7792  	return _OnApproveConstant.Contract.INTERFACEIDONAPPROVE(&_OnApproveConstant.CallOpts)
  7793  }
  7794  
  7795  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
  7796  //
  7797  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
  7798  func (_OnApproveConstant *OnApproveConstantCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
  7799  	return _OnApproveConstant.Contract.INTERFACEIDONAPPROVE(&_OnApproveConstant.CallOpts)
  7800  }
  7801  
  7802  // OwnableABI is the input ABI used to generate the binding from.
  7803  const OwnableABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  7804  
  7805  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
  7806  var OwnableFuncSigs = map[string]string{
  7807  	"8f32d59b": "isOwner()",
  7808  	"8da5cb5b": "owner()",
  7809  	"715018a6": "renounceOwnership()",
  7810  	"f2fde38b": "transferOwnership(address)",
  7811  }
  7812  
  7813  // Ownable is an auto generated Go binding around an Ethereum contract.
  7814  type Ownable struct {
  7815  	OwnableCaller     // Read-only binding to the contract
  7816  	OwnableTransactor // Write-only binding to the contract
  7817  	OwnableFilterer   // Log filterer for contract events
  7818  }
  7819  
  7820  // OwnableCaller is an auto generated read-only Go binding around an Ethereum contract.
  7821  type OwnableCaller struct {
  7822  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7823  }
  7824  
  7825  // OwnableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  7826  type OwnableTransactor struct {
  7827  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7828  }
  7829  
  7830  // OwnableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  7831  type OwnableFilterer struct {
  7832  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7833  }
  7834  
  7835  // OwnableSession is an auto generated Go binding around an Ethereum contract,
  7836  // with pre-set call and transact options.
  7837  type OwnableSession struct {
  7838  	Contract     *Ownable          // Generic contract binding to set the session for
  7839  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7840  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7841  }
  7842  
  7843  // OwnableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  7844  // with pre-set call options.
  7845  type OwnableCallerSession struct {
  7846  	Contract *OwnableCaller // Generic contract caller binding to set the session for
  7847  	CallOpts bind.CallOpts  // Call options to use throughout this session
  7848  }
  7849  
  7850  // OwnableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  7851  // with pre-set transact options.
  7852  type OwnableTransactorSession struct {
  7853  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
  7854  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  7855  }
  7856  
  7857  // OwnableRaw is an auto generated low-level Go binding around an Ethereum contract.
  7858  type OwnableRaw struct {
  7859  	Contract *Ownable // Generic contract binding to access the raw methods on
  7860  }
  7861  
  7862  // OwnableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  7863  type OwnableCallerRaw struct {
  7864  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
  7865  }
  7866  
  7867  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  7868  type OwnableTransactorRaw struct {
  7869  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
  7870  }
  7871  
  7872  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
  7873  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
  7874  	contract, err := bindOwnable(address, backend, backend, backend)
  7875  	if err != nil {
  7876  		return nil, err
  7877  	}
  7878  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
  7879  }
  7880  
  7881  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
  7882  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
  7883  	contract, err := bindOwnable(address, caller, nil, nil)
  7884  	if err != nil {
  7885  		return nil, err
  7886  	}
  7887  	return &OwnableCaller{contract: contract}, nil
  7888  }
  7889  
  7890  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
  7891  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
  7892  	contract, err := bindOwnable(address, nil, transactor, nil)
  7893  	if err != nil {
  7894  		return nil, err
  7895  	}
  7896  	return &OwnableTransactor{contract: contract}, nil
  7897  }
  7898  
  7899  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
  7900  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
  7901  	contract, err := bindOwnable(address, nil, nil, filterer)
  7902  	if err != nil {
  7903  		return nil, err
  7904  	}
  7905  	return &OwnableFilterer{contract: contract}, nil
  7906  }
  7907  
  7908  // bindOwnable binds a generic wrapper to an already deployed contract.
  7909  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7910  	parsed, err := abi.JSON(strings.NewReader(OwnableABI))
  7911  	if err != nil {
  7912  		return nil, err
  7913  	}
  7914  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7915  }
  7916  
  7917  // Call invokes the (constant) contract method with params as input values and
  7918  // sets the output to result. The result type might be a single field for simple
  7919  // returns, a slice of interfaces for anonymous returns and a struct for named
  7920  // returns.
  7921  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7922  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
  7923  }
  7924  
  7925  // Transfer initiates a plain transaction to move funds to the contract, calling
  7926  // its default method if one is available.
  7927  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7928  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
  7929  }
  7930  
  7931  // Transact invokes the (paid) contract method with params as input values.
  7932  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7933  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
  7934  }
  7935  
  7936  // Call invokes the (constant) contract method with params as input values and
  7937  // sets the output to result. The result type might be a single field for simple
  7938  // returns, a slice of interfaces for anonymous returns and a struct for named
  7939  // returns.
  7940  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7941  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
  7942  }
  7943  
  7944  // Transfer initiates a plain transaction to move funds to the contract, calling
  7945  // its default method if one is available.
  7946  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7947  	return _Ownable.Contract.contract.Transfer(opts)
  7948  }
  7949  
  7950  // Transact invokes the (paid) contract method with params as input values.
  7951  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7952  	return _Ownable.Contract.contract.Transact(opts, method, params...)
  7953  }
  7954  
  7955  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7956  //
  7957  // Solidity: function isOwner() constant returns(bool)
  7958  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  7959  	var (
  7960  		ret0 = new(bool)
  7961  	)
  7962  	out := ret0
  7963  	err := _Ownable.contract.Call(opts, out, "isOwner")
  7964  	return *ret0, err
  7965  }
  7966  
  7967  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7968  //
  7969  // Solidity: function isOwner() constant returns(bool)
  7970  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
  7971  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
  7972  }
  7973  
  7974  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  7975  //
  7976  // Solidity: function isOwner() constant returns(bool)
  7977  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
  7978  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
  7979  }
  7980  
  7981  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7982  //
  7983  // Solidity: function owner() constant returns(address)
  7984  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  7985  	var (
  7986  		ret0 = new(common.Address)
  7987  	)
  7988  	out := ret0
  7989  	err := _Ownable.contract.Call(opts, out, "owner")
  7990  	return *ret0, err
  7991  }
  7992  
  7993  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  7994  //
  7995  // Solidity: function owner() constant returns(address)
  7996  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
  7997  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  7998  }
  7999  
  8000  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8001  //
  8002  // Solidity: function owner() constant returns(address)
  8003  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
  8004  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  8005  }
  8006  
  8007  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8008  //
  8009  // Solidity: function renounceOwnership() returns()
  8010  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  8011  	return _Ownable.contract.Transact(opts, "renounceOwnership")
  8012  }
  8013  
  8014  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8015  //
  8016  // Solidity: function renounceOwnership() returns()
  8017  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
  8018  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  8019  }
  8020  
  8021  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8022  //
  8023  // Solidity: function renounceOwnership() returns()
  8024  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  8025  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  8026  }
  8027  
  8028  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8029  //
  8030  // Solidity: function transferOwnership(address newOwner) returns()
  8031  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  8032  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
  8033  }
  8034  
  8035  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8036  //
  8037  // Solidity: function transferOwnership(address newOwner) returns()
  8038  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8039  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  8040  }
  8041  
  8042  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8043  //
  8044  // Solidity: function transferOwnership(address newOwner) returns()
  8045  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8046  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  8047  }
  8048  
  8049  // OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract.
  8050  type OwnableOwnershipTransferredIterator struct {
  8051  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
  8052  
  8053  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8054  	event    string              // Event name to use for unpacking event data
  8055  
  8056  	logs chan types.Log        // Log channel receiving the found contract events
  8057  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8058  	done bool                  // Whether the subscription completed delivering logs
  8059  	fail error                 // Occurred error to stop iteration
  8060  }
  8061  
  8062  // Next advances the iterator to the subsequent event, returning whether there
  8063  // are any more events found. In case of a retrieval or parsing error, false is
  8064  // returned and Error() can be queried for the exact failure.
  8065  func (it *OwnableOwnershipTransferredIterator) Next() bool {
  8066  	// If the iterator failed, stop iterating
  8067  	if it.fail != nil {
  8068  		return false
  8069  	}
  8070  	// If the iterator completed, deliver directly whatever's available
  8071  	if it.done {
  8072  		select {
  8073  		case log := <-it.logs:
  8074  			it.Event = new(OwnableOwnershipTransferred)
  8075  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8076  				it.fail = err
  8077  				return false
  8078  			}
  8079  			it.Event.Raw = log
  8080  			return true
  8081  
  8082  		default:
  8083  			return false
  8084  		}
  8085  	}
  8086  	// Iterator still in progress, wait for either a data or an error event
  8087  	select {
  8088  	case log := <-it.logs:
  8089  		it.Event = new(OwnableOwnershipTransferred)
  8090  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8091  			it.fail = err
  8092  			return false
  8093  		}
  8094  		it.Event.Raw = log
  8095  		return true
  8096  
  8097  	case err := <-it.sub.Err():
  8098  		it.done = true
  8099  		it.fail = err
  8100  		return it.Next()
  8101  	}
  8102  }
  8103  
  8104  // Error returns any retrieval or parsing error occurred during filtering.
  8105  func (it *OwnableOwnershipTransferredIterator) Error() error {
  8106  	return it.fail
  8107  }
  8108  
  8109  // Close terminates the iteration process, releasing any pending underlying
  8110  // resources.
  8111  func (it *OwnableOwnershipTransferredIterator) Close() error {
  8112  	it.sub.Unsubscribe()
  8113  	return nil
  8114  }
  8115  
  8116  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
  8117  type OwnableOwnershipTransferred struct {
  8118  	PreviousOwner common.Address
  8119  	NewOwner      common.Address
  8120  	Raw           types.Log // Blockchain specific contextual infos
  8121  }
  8122  
  8123  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8124  //
  8125  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8126  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
  8127  
  8128  	var previousOwnerRule []interface{}
  8129  	for _, previousOwnerItem := range previousOwner {
  8130  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8131  	}
  8132  	var newOwnerRule []interface{}
  8133  	for _, newOwnerItem := range newOwner {
  8134  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8135  	}
  8136  
  8137  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8138  	if err != nil {
  8139  		return nil, err
  8140  	}
  8141  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  8142  }
  8143  
  8144  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8145  //
  8146  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8147  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  8148  
  8149  	var previousOwnerRule []interface{}
  8150  	for _, previousOwnerItem := range previousOwner {
  8151  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  8152  	}
  8153  	var newOwnerRule []interface{}
  8154  	for _, newOwnerItem := range newOwner {
  8155  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  8156  	}
  8157  
  8158  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  8159  	if err != nil {
  8160  		return nil, err
  8161  	}
  8162  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8163  		defer sub.Unsubscribe()
  8164  		for {
  8165  			select {
  8166  			case log := <-logs:
  8167  				// New log arrived, parse the event and forward to the user
  8168  				event := new(OwnableOwnershipTransferred)
  8169  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8170  					return err
  8171  				}
  8172  				event.Raw = log
  8173  
  8174  				select {
  8175  				case sink <- event:
  8176  				case err := <-sub.Err():
  8177  					return err
  8178  				case <-quit:
  8179  					return nil
  8180  				}
  8181  			case err := <-sub.Err():
  8182  				return err
  8183  			case <-quit:
  8184  				return nil
  8185  			}
  8186  		}
  8187  	}), nil
  8188  }
  8189  
  8190  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  8191  //
  8192  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  8193  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
  8194  	event := new(OwnableOwnershipTransferred)
  8195  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  8196  		return nil, err
  8197  	}
  8198  	return event, nil
  8199  }
  8200  
  8201  // OwnableTargetABI is the input ABI used to generate the binding from.
  8202  const OwnableTargetABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  8203  
  8204  // OwnableTargetFuncSigs maps the 4-byte function signature to its string representation.
  8205  var OwnableTargetFuncSigs = map[string]string{
  8206  	"715018a6": "renounceOwnership()",
  8207  	"f2fde38b": "transferOwnership(address)",
  8208  }
  8209  
  8210  // OwnableTarget is an auto generated Go binding around an Ethereum contract.
  8211  type OwnableTarget struct {
  8212  	OwnableTargetCaller     // Read-only binding to the contract
  8213  	OwnableTargetTransactor // Write-only binding to the contract
  8214  	OwnableTargetFilterer   // Log filterer for contract events
  8215  }
  8216  
  8217  // OwnableTargetCaller is an auto generated read-only Go binding around an Ethereum contract.
  8218  type OwnableTargetCaller struct {
  8219  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8220  }
  8221  
  8222  // OwnableTargetTransactor is an auto generated write-only Go binding around an Ethereum contract.
  8223  type OwnableTargetTransactor struct {
  8224  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8225  }
  8226  
  8227  // OwnableTargetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8228  type OwnableTargetFilterer struct {
  8229  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8230  }
  8231  
  8232  // OwnableTargetSession is an auto generated Go binding around an Ethereum contract,
  8233  // with pre-set call and transact options.
  8234  type OwnableTargetSession struct {
  8235  	Contract     *OwnableTarget    // Generic contract binding to set the session for
  8236  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8237  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8238  }
  8239  
  8240  // OwnableTargetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8241  // with pre-set call options.
  8242  type OwnableTargetCallerSession struct {
  8243  	Contract *OwnableTargetCaller // Generic contract caller binding to set the session for
  8244  	CallOpts bind.CallOpts        // Call options to use throughout this session
  8245  }
  8246  
  8247  // OwnableTargetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8248  // with pre-set transact options.
  8249  type OwnableTargetTransactorSession struct {
  8250  	Contract     *OwnableTargetTransactor // Generic contract transactor binding to set the session for
  8251  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  8252  }
  8253  
  8254  // OwnableTargetRaw is an auto generated low-level Go binding around an Ethereum contract.
  8255  type OwnableTargetRaw struct {
  8256  	Contract *OwnableTarget // Generic contract binding to access the raw methods on
  8257  }
  8258  
  8259  // OwnableTargetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8260  type OwnableTargetCallerRaw struct {
  8261  	Contract *OwnableTargetCaller // Generic read-only contract binding to access the raw methods on
  8262  }
  8263  
  8264  // OwnableTargetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8265  type OwnableTargetTransactorRaw struct {
  8266  	Contract *OwnableTargetTransactor // Generic write-only contract binding to access the raw methods on
  8267  }
  8268  
  8269  // NewOwnableTarget creates a new instance of OwnableTarget, bound to a specific deployed contract.
  8270  func NewOwnableTarget(address common.Address, backend bind.ContractBackend) (*OwnableTarget, error) {
  8271  	contract, err := bindOwnableTarget(address, backend, backend, backend)
  8272  	if err != nil {
  8273  		return nil, err
  8274  	}
  8275  	return &OwnableTarget{OwnableTargetCaller: OwnableTargetCaller{contract: contract}, OwnableTargetTransactor: OwnableTargetTransactor{contract: contract}, OwnableTargetFilterer: OwnableTargetFilterer{contract: contract}}, nil
  8276  }
  8277  
  8278  // NewOwnableTargetCaller creates a new read-only instance of OwnableTarget, bound to a specific deployed contract.
  8279  func NewOwnableTargetCaller(address common.Address, caller bind.ContractCaller) (*OwnableTargetCaller, error) {
  8280  	contract, err := bindOwnableTarget(address, caller, nil, nil)
  8281  	if err != nil {
  8282  		return nil, err
  8283  	}
  8284  	return &OwnableTargetCaller{contract: contract}, nil
  8285  }
  8286  
  8287  // NewOwnableTargetTransactor creates a new write-only instance of OwnableTarget, bound to a specific deployed contract.
  8288  func NewOwnableTargetTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTargetTransactor, error) {
  8289  	contract, err := bindOwnableTarget(address, nil, transactor, nil)
  8290  	if err != nil {
  8291  		return nil, err
  8292  	}
  8293  	return &OwnableTargetTransactor{contract: contract}, nil
  8294  }
  8295  
  8296  // NewOwnableTargetFilterer creates a new log filterer instance of OwnableTarget, bound to a specific deployed contract.
  8297  func NewOwnableTargetFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableTargetFilterer, error) {
  8298  	contract, err := bindOwnableTarget(address, nil, nil, filterer)
  8299  	if err != nil {
  8300  		return nil, err
  8301  	}
  8302  	return &OwnableTargetFilterer{contract: contract}, nil
  8303  }
  8304  
  8305  // bindOwnableTarget binds a generic wrapper to an already deployed contract.
  8306  func bindOwnableTarget(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8307  	parsed, err := abi.JSON(strings.NewReader(OwnableTargetABI))
  8308  	if err != nil {
  8309  		return nil, err
  8310  	}
  8311  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8312  }
  8313  
  8314  // Call invokes the (constant) contract method with params as input values and
  8315  // sets the output to result. The result type might be a single field for simple
  8316  // returns, a slice of interfaces for anonymous returns and a struct for named
  8317  // returns.
  8318  func (_OwnableTarget *OwnableTargetRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8319  	return _OwnableTarget.Contract.OwnableTargetCaller.contract.Call(opts, result, method, params...)
  8320  }
  8321  
  8322  // Transfer initiates a plain transaction to move funds to the contract, calling
  8323  // its default method if one is available.
  8324  func (_OwnableTarget *OwnableTargetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8325  	return _OwnableTarget.Contract.OwnableTargetTransactor.contract.Transfer(opts)
  8326  }
  8327  
  8328  // Transact invokes the (paid) contract method with params as input values.
  8329  func (_OwnableTarget *OwnableTargetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8330  	return _OwnableTarget.Contract.OwnableTargetTransactor.contract.Transact(opts, method, params...)
  8331  }
  8332  
  8333  // Call invokes the (constant) contract method with params as input values and
  8334  // sets the output to result. The result type might be a single field for simple
  8335  // returns, a slice of interfaces for anonymous returns and a struct for named
  8336  // returns.
  8337  func (_OwnableTarget *OwnableTargetCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8338  	return _OwnableTarget.Contract.contract.Call(opts, result, method, params...)
  8339  }
  8340  
  8341  // Transfer initiates a plain transaction to move funds to the contract, calling
  8342  // its default method if one is available.
  8343  func (_OwnableTarget *OwnableTargetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8344  	return _OwnableTarget.Contract.contract.Transfer(opts)
  8345  }
  8346  
  8347  // Transact invokes the (paid) contract method with params as input values.
  8348  func (_OwnableTarget *OwnableTargetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8349  	return _OwnableTarget.Contract.contract.Transact(opts, method, params...)
  8350  }
  8351  
  8352  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8353  //
  8354  // Solidity: function renounceOwnership() returns()
  8355  func (_OwnableTarget *OwnableTargetTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  8356  	return _OwnableTarget.contract.Transact(opts, "renounceOwnership")
  8357  }
  8358  
  8359  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8360  //
  8361  // Solidity: function renounceOwnership() returns()
  8362  func (_OwnableTarget *OwnableTargetSession) RenounceOwnership() (*types.Transaction, error) {
  8363  	return _OwnableTarget.Contract.RenounceOwnership(&_OwnableTarget.TransactOpts)
  8364  }
  8365  
  8366  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8367  //
  8368  // Solidity: function renounceOwnership() returns()
  8369  func (_OwnableTarget *OwnableTargetTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  8370  	return _OwnableTarget.Contract.RenounceOwnership(&_OwnableTarget.TransactOpts)
  8371  }
  8372  
  8373  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8374  //
  8375  // Solidity: function transferOwnership(address newOwner) returns()
  8376  func (_OwnableTarget *OwnableTargetTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  8377  	return _OwnableTarget.contract.Transact(opts, "transferOwnership", newOwner)
  8378  }
  8379  
  8380  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8381  //
  8382  // Solidity: function transferOwnership(address newOwner) returns()
  8383  func (_OwnableTarget *OwnableTargetSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8384  	return _OwnableTarget.Contract.TransferOwnership(&_OwnableTarget.TransactOpts, newOwner)
  8385  }
  8386  
  8387  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8388  //
  8389  // Solidity: function transferOwnership(address newOwner) returns()
  8390  func (_OwnableTarget *OwnableTargetTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8391  	return _OwnableTarget.Contract.TransferOwnership(&_OwnableTarget.TransactOpts, newOwner)
  8392  }
  8393  
  8394  // PausableABI is the input ABI used to generate the binding from.
  8395  const PausableABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  8396  
  8397  // PausableFuncSigs maps the 4-byte function signature to its string representation.
  8398  var PausableFuncSigs = map[string]string{
  8399  	"82dc1ec4": "addPauser(address)",
  8400  	"46fbf68e": "isPauser(address)",
  8401  	"8456cb59": "pause()",
  8402  	"5c975abb": "paused()",
  8403  	"6ef8d66d": "renouncePauser()",
  8404  	"3f4ba83a": "unpause()",
  8405  }
  8406  
  8407  // Pausable is an auto generated Go binding around an Ethereum contract.
  8408  type Pausable struct {
  8409  	PausableCaller     // Read-only binding to the contract
  8410  	PausableTransactor // Write-only binding to the contract
  8411  	PausableFilterer   // Log filterer for contract events
  8412  }
  8413  
  8414  // PausableCaller is an auto generated read-only Go binding around an Ethereum contract.
  8415  type PausableCaller struct {
  8416  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8417  }
  8418  
  8419  // PausableTransactor is an auto generated write-only Go binding around an Ethereum contract.
  8420  type PausableTransactor struct {
  8421  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8422  }
  8423  
  8424  // PausableFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  8425  type PausableFilterer struct {
  8426  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8427  }
  8428  
  8429  // PausableSession is an auto generated Go binding around an Ethereum contract,
  8430  // with pre-set call and transact options.
  8431  type PausableSession struct {
  8432  	Contract     *Pausable         // Generic contract binding to set the session for
  8433  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8434  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8435  }
  8436  
  8437  // PausableCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  8438  // with pre-set call options.
  8439  type PausableCallerSession struct {
  8440  	Contract *PausableCaller // Generic contract caller binding to set the session for
  8441  	CallOpts bind.CallOpts   // Call options to use throughout this session
  8442  }
  8443  
  8444  // PausableTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  8445  // with pre-set transact options.
  8446  type PausableTransactorSession struct {
  8447  	Contract     *PausableTransactor // Generic contract transactor binding to set the session for
  8448  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  8449  }
  8450  
  8451  // PausableRaw is an auto generated low-level Go binding around an Ethereum contract.
  8452  type PausableRaw struct {
  8453  	Contract *Pausable // Generic contract binding to access the raw methods on
  8454  }
  8455  
  8456  // PausableCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  8457  type PausableCallerRaw struct {
  8458  	Contract *PausableCaller // Generic read-only contract binding to access the raw methods on
  8459  }
  8460  
  8461  // PausableTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  8462  type PausableTransactorRaw struct {
  8463  	Contract *PausableTransactor // Generic write-only contract binding to access the raw methods on
  8464  }
  8465  
  8466  // NewPausable creates a new instance of Pausable, bound to a specific deployed contract.
  8467  func NewPausable(address common.Address, backend bind.ContractBackend) (*Pausable, error) {
  8468  	contract, err := bindPausable(address, backend, backend, backend)
  8469  	if err != nil {
  8470  		return nil, err
  8471  	}
  8472  	return &Pausable{PausableCaller: PausableCaller{contract: contract}, PausableTransactor: PausableTransactor{contract: contract}, PausableFilterer: PausableFilterer{contract: contract}}, nil
  8473  }
  8474  
  8475  // NewPausableCaller creates a new read-only instance of Pausable, bound to a specific deployed contract.
  8476  func NewPausableCaller(address common.Address, caller bind.ContractCaller) (*PausableCaller, error) {
  8477  	contract, err := bindPausable(address, caller, nil, nil)
  8478  	if err != nil {
  8479  		return nil, err
  8480  	}
  8481  	return &PausableCaller{contract: contract}, nil
  8482  }
  8483  
  8484  // NewPausableTransactor creates a new write-only instance of Pausable, bound to a specific deployed contract.
  8485  func NewPausableTransactor(address common.Address, transactor bind.ContractTransactor) (*PausableTransactor, error) {
  8486  	contract, err := bindPausable(address, nil, transactor, nil)
  8487  	if err != nil {
  8488  		return nil, err
  8489  	}
  8490  	return &PausableTransactor{contract: contract}, nil
  8491  }
  8492  
  8493  // NewPausableFilterer creates a new log filterer instance of Pausable, bound to a specific deployed contract.
  8494  func NewPausableFilterer(address common.Address, filterer bind.ContractFilterer) (*PausableFilterer, error) {
  8495  	contract, err := bindPausable(address, nil, nil, filterer)
  8496  	if err != nil {
  8497  		return nil, err
  8498  	}
  8499  	return &PausableFilterer{contract: contract}, nil
  8500  }
  8501  
  8502  // bindPausable binds a generic wrapper to an already deployed contract.
  8503  func bindPausable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8504  	parsed, err := abi.JSON(strings.NewReader(PausableABI))
  8505  	if err != nil {
  8506  		return nil, err
  8507  	}
  8508  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8509  }
  8510  
  8511  // Call invokes the (constant) contract method with params as input values and
  8512  // sets the output to result. The result type might be a single field for simple
  8513  // returns, a slice of interfaces for anonymous returns and a struct for named
  8514  // returns.
  8515  func (_Pausable *PausableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8516  	return _Pausable.Contract.PausableCaller.contract.Call(opts, result, method, params...)
  8517  }
  8518  
  8519  // Transfer initiates a plain transaction to move funds to the contract, calling
  8520  // its default method if one is available.
  8521  func (_Pausable *PausableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8522  	return _Pausable.Contract.PausableTransactor.contract.Transfer(opts)
  8523  }
  8524  
  8525  // Transact invokes the (paid) contract method with params as input values.
  8526  func (_Pausable *PausableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8527  	return _Pausable.Contract.PausableTransactor.contract.Transact(opts, method, params...)
  8528  }
  8529  
  8530  // Call invokes the (constant) contract method with params as input values and
  8531  // sets the output to result. The result type might be a single field for simple
  8532  // returns, a slice of interfaces for anonymous returns and a struct for named
  8533  // returns.
  8534  func (_Pausable *PausableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8535  	return _Pausable.Contract.contract.Call(opts, result, method, params...)
  8536  }
  8537  
  8538  // Transfer initiates a plain transaction to move funds to the contract, calling
  8539  // its default method if one is available.
  8540  func (_Pausable *PausableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8541  	return _Pausable.Contract.contract.Transfer(opts)
  8542  }
  8543  
  8544  // Transact invokes the (paid) contract method with params as input values.
  8545  func (_Pausable *PausableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8546  	return _Pausable.Contract.contract.Transact(opts, method, params...)
  8547  }
  8548  
  8549  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
  8550  //
  8551  // Solidity: function isPauser(address account) constant returns(bool)
  8552  func (_Pausable *PausableCaller) IsPauser(opts *bind.CallOpts, account common.Address) (bool, error) {
  8553  	var (
  8554  		ret0 = new(bool)
  8555  	)
  8556  	out := ret0
  8557  	err := _Pausable.contract.Call(opts, out, "isPauser", account)
  8558  	return *ret0, err
  8559  }
  8560  
  8561  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
  8562  //
  8563  // Solidity: function isPauser(address account) constant returns(bool)
  8564  func (_Pausable *PausableSession) IsPauser(account common.Address) (bool, error) {
  8565  	return _Pausable.Contract.IsPauser(&_Pausable.CallOpts, account)
  8566  }
  8567  
  8568  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
  8569  //
  8570  // Solidity: function isPauser(address account) constant returns(bool)
  8571  func (_Pausable *PausableCallerSession) IsPauser(account common.Address) (bool, error) {
  8572  	return _Pausable.Contract.IsPauser(&_Pausable.CallOpts, account)
  8573  }
  8574  
  8575  // Paused is a free data retrieval call binding the contract method 0x5c975abb.
  8576  //
  8577  // Solidity: function paused() constant returns(bool)
  8578  func (_Pausable *PausableCaller) Paused(opts *bind.CallOpts) (bool, error) {
  8579  	var (
  8580  		ret0 = new(bool)
  8581  	)
  8582  	out := ret0
  8583  	err := _Pausable.contract.Call(opts, out, "paused")
  8584  	return *ret0, err
  8585  }
  8586  
  8587  // Paused is a free data retrieval call binding the contract method 0x5c975abb.
  8588  //
  8589  // Solidity: function paused() constant returns(bool)
  8590  func (_Pausable *PausableSession) Paused() (bool, error) {
  8591  	return _Pausable.Contract.Paused(&_Pausable.CallOpts)
  8592  }
  8593  
  8594  // Paused is a free data retrieval call binding the contract method 0x5c975abb.
  8595  //
  8596  // Solidity: function paused() constant returns(bool)
  8597  func (_Pausable *PausableCallerSession) Paused() (bool, error) {
  8598  	return _Pausable.Contract.Paused(&_Pausable.CallOpts)
  8599  }
  8600  
  8601  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
  8602  //
  8603  // Solidity: function addPauser(address account) returns()
  8604  func (_Pausable *PausableTransactor) AddPauser(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  8605  	return _Pausable.contract.Transact(opts, "addPauser", account)
  8606  }
  8607  
  8608  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
  8609  //
  8610  // Solidity: function addPauser(address account) returns()
  8611  func (_Pausable *PausableSession) AddPauser(account common.Address) (*types.Transaction, error) {
  8612  	return _Pausable.Contract.AddPauser(&_Pausable.TransactOpts, account)
  8613  }
  8614  
  8615  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
  8616  //
  8617  // Solidity: function addPauser(address account) returns()
  8618  func (_Pausable *PausableTransactorSession) AddPauser(account common.Address) (*types.Transaction, error) {
  8619  	return _Pausable.Contract.AddPauser(&_Pausable.TransactOpts, account)
  8620  }
  8621  
  8622  // Pause is a paid mutator transaction binding the contract method 0x8456cb59.
  8623  //
  8624  // Solidity: function pause() returns()
  8625  func (_Pausable *PausableTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) {
  8626  	return _Pausable.contract.Transact(opts, "pause")
  8627  }
  8628  
  8629  // Pause is a paid mutator transaction binding the contract method 0x8456cb59.
  8630  //
  8631  // Solidity: function pause() returns()
  8632  func (_Pausable *PausableSession) Pause() (*types.Transaction, error) {
  8633  	return _Pausable.Contract.Pause(&_Pausable.TransactOpts)
  8634  }
  8635  
  8636  // Pause is a paid mutator transaction binding the contract method 0x8456cb59.
  8637  //
  8638  // Solidity: function pause() returns()
  8639  func (_Pausable *PausableTransactorSession) Pause() (*types.Transaction, error) {
  8640  	return _Pausable.Contract.Pause(&_Pausable.TransactOpts)
  8641  }
  8642  
  8643  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  8644  //
  8645  // Solidity: function renouncePauser() returns()
  8646  func (_Pausable *PausableTransactor) RenouncePauser(opts *bind.TransactOpts) (*types.Transaction, error) {
  8647  	return _Pausable.contract.Transact(opts, "renouncePauser")
  8648  }
  8649  
  8650  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  8651  //
  8652  // Solidity: function renouncePauser() returns()
  8653  func (_Pausable *PausableSession) RenouncePauser() (*types.Transaction, error) {
  8654  	return _Pausable.Contract.RenouncePauser(&_Pausable.TransactOpts)
  8655  }
  8656  
  8657  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  8658  //
  8659  // Solidity: function renouncePauser() returns()
  8660  func (_Pausable *PausableTransactorSession) RenouncePauser() (*types.Transaction, error) {
  8661  	return _Pausable.Contract.RenouncePauser(&_Pausable.TransactOpts)
  8662  }
  8663  
  8664  // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
  8665  //
  8666  // Solidity: function unpause() returns()
  8667  func (_Pausable *PausableTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) {
  8668  	return _Pausable.contract.Transact(opts, "unpause")
  8669  }
  8670  
  8671  // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
  8672  //
  8673  // Solidity: function unpause() returns()
  8674  func (_Pausable *PausableSession) Unpause() (*types.Transaction, error) {
  8675  	return _Pausable.Contract.Unpause(&_Pausable.TransactOpts)
  8676  }
  8677  
  8678  // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
  8679  //
  8680  // Solidity: function unpause() returns()
  8681  func (_Pausable *PausableTransactorSession) Unpause() (*types.Transaction, error) {
  8682  	return _Pausable.Contract.Unpause(&_Pausable.TransactOpts)
  8683  }
  8684  
  8685  // PausablePausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the Pausable contract.
  8686  type PausablePausedIterator struct {
  8687  	Event *PausablePaused // Event containing the contract specifics and raw log
  8688  
  8689  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8690  	event    string              // Event name to use for unpacking event data
  8691  
  8692  	logs chan types.Log        // Log channel receiving the found contract events
  8693  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8694  	done bool                  // Whether the subscription completed delivering logs
  8695  	fail error                 // Occurred error to stop iteration
  8696  }
  8697  
  8698  // Next advances the iterator to the subsequent event, returning whether there
  8699  // are any more events found. In case of a retrieval or parsing error, false is
  8700  // returned and Error() can be queried for the exact failure.
  8701  func (it *PausablePausedIterator) Next() bool {
  8702  	// If the iterator failed, stop iterating
  8703  	if it.fail != nil {
  8704  		return false
  8705  	}
  8706  	// If the iterator completed, deliver directly whatever's available
  8707  	if it.done {
  8708  		select {
  8709  		case log := <-it.logs:
  8710  			it.Event = new(PausablePaused)
  8711  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8712  				it.fail = err
  8713  				return false
  8714  			}
  8715  			it.Event.Raw = log
  8716  			return true
  8717  
  8718  		default:
  8719  			return false
  8720  		}
  8721  	}
  8722  	// Iterator still in progress, wait for either a data or an error event
  8723  	select {
  8724  	case log := <-it.logs:
  8725  		it.Event = new(PausablePaused)
  8726  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8727  			it.fail = err
  8728  			return false
  8729  		}
  8730  		it.Event.Raw = log
  8731  		return true
  8732  
  8733  	case err := <-it.sub.Err():
  8734  		it.done = true
  8735  		it.fail = err
  8736  		return it.Next()
  8737  	}
  8738  }
  8739  
  8740  // Error returns any retrieval or parsing error occurred during filtering.
  8741  func (it *PausablePausedIterator) Error() error {
  8742  	return it.fail
  8743  }
  8744  
  8745  // Close terminates the iteration process, releasing any pending underlying
  8746  // resources.
  8747  func (it *PausablePausedIterator) Close() error {
  8748  	it.sub.Unsubscribe()
  8749  	return nil
  8750  }
  8751  
  8752  // PausablePaused represents a Paused event raised by the Pausable contract.
  8753  type PausablePaused struct {
  8754  	Account common.Address
  8755  	Raw     types.Log // Blockchain specific contextual infos
  8756  }
  8757  
  8758  // FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
  8759  //
  8760  // Solidity: event Paused(address account)
  8761  func (_Pausable *PausableFilterer) FilterPaused(opts *bind.FilterOpts) (*PausablePausedIterator, error) {
  8762  
  8763  	logs, sub, err := _Pausable.contract.FilterLogs(opts, "Paused")
  8764  	if err != nil {
  8765  		return nil, err
  8766  	}
  8767  	return &PausablePausedIterator{contract: _Pausable.contract, event: "Paused", logs: logs, sub: sub}, nil
  8768  }
  8769  
  8770  // WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
  8771  //
  8772  // Solidity: event Paused(address account)
  8773  func (_Pausable *PausableFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *PausablePaused) (event.Subscription, error) {
  8774  
  8775  	logs, sub, err := _Pausable.contract.WatchLogs(opts, "Paused")
  8776  	if err != nil {
  8777  		return nil, err
  8778  	}
  8779  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8780  		defer sub.Unsubscribe()
  8781  		for {
  8782  			select {
  8783  			case log := <-logs:
  8784  				// New log arrived, parse the event and forward to the user
  8785  				event := new(PausablePaused)
  8786  				if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil {
  8787  					return err
  8788  				}
  8789  				event.Raw = log
  8790  
  8791  				select {
  8792  				case sink <- event:
  8793  				case err := <-sub.Err():
  8794  					return err
  8795  				case <-quit:
  8796  					return nil
  8797  				}
  8798  			case err := <-sub.Err():
  8799  				return err
  8800  			case <-quit:
  8801  				return nil
  8802  			}
  8803  		}
  8804  	}), nil
  8805  }
  8806  
  8807  // ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
  8808  //
  8809  // Solidity: event Paused(address account)
  8810  func (_Pausable *PausableFilterer) ParsePaused(log types.Log) (*PausablePaused, error) {
  8811  	event := new(PausablePaused)
  8812  	if err := _Pausable.contract.UnpackLog(event, "Paused", log); err != nil {
  8813  		return nil, err
  8814  	}
  8815  	return event, nil
  8816  }
  8817  
  8818  // PausablePauserAddedIterator is returned from FilterPauserAdded and is used to iterate over the raw logs and unpacked data for PauserAdded events raised by the Pausable contract.
  8819  type PausablePauserAddedIterator struct {
  8820  	Event *PausablePauserAdded // Event containing the contract specifics and raw log
  8821  
  8822  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8823  	event    string              // Event name to use for unpacking event data
  8824  
  8825  	logs chan types.Log        // Log channel receiving the found contract events
  8826  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8827  	done bool                  // Whether the subscription completed delivering logs
  8828  	fail error                 // Occurred error to stop iteration
  8829  }
  8830  
  8831  // Next advances the iterator to the subsequent event, returning whether there
  8832  // are any more events found. In case of a retrieval or parsing error, false is
  8833  // returned and Error() can be queried for the exact failure.
  8834  func (it *PausablePauserAddedIterator) Next() bool {
  8835  	// If the iterator failed, stop iterating
  8836  	if it.fail != nil {
  8837  		return false
  8838  	}
  8839  	// If the iterator completed, deliver directly whatever's available
  8840  	if it.done {
  8841  		select {
  8842  		case log := <-it.logs:
  8843  			it.Event = new(PausablePauserAdded)
  8844  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8845  				it.fail = err
  8846  				return false
  8847  			}
  8848  			it.Event.Raw = log
  8849  			return true
  8850  
  8851  		default:
  8852  			return false
  8853  		}
  8854  	}
  8855  	// Iterator still in progress, wait for either a data or an error event
  8856  	select {
  8857  	case log := <-it.logs:
  8858  		it.Event = new(PausablePauserAdded)
  8859  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8860  			it.fail = err
  8861  			return false
  8862  		}
  8863  		it.Event.Raw = log
  8864  		return true
  8865  
  8866  	case err := <-it.sub.Err():
  8867  		it.done = true
  8868  		it.fail = err
  8869  		return it.Next()
  8870  	}
  8871  }
  8872  
  8873  // Error returns any retrieval or parsing error occurred during filtering.
  8874  func (it *PausablePauserAddedIterator) Error() error {
  8875  	return it.fail
  8876  }
  8877  
  8878  // Close terminates the iteration process, releasing any pending underlying
  8879  // resources.
  8880  func (it *PausablePauserAddedIterator) Close() error {
  8881  	it.sub.Unsubscribe()
  8882  	return nil
  8883  }
  8884  
  8885  // PausablePauserAdded represents a PauserAdded event raised by the Pausable contract.
  8886  type PausablePauserAdded struct {
  8887  	Account common.Address
  8888  	Raw     types.Log // Blockchain specific contextual infos
  8889  }
  8890  
  8891  // FilterPauserAdded is a free log retrieval operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
  8892  //
  8893  // Solidity: event PauserAdded(address indexed account)
  8894  func (_Pausable *PausableFilterer) FilterPauserAdded(opts *bind.FilterOpts, account []common.Address) (*PausablePauserAddedIterator, error) {
  8895  
  8896  	var accountRule []interface{}
  8897  	for _, accountItem := range account {
  8898  		accountRule = append(accountRule, accountItem)
  8899  	}
  8900  
  8901  	logs, sub, err := _Pausable.contract.FilterLogs(opts, "PauserAdded", accountRule)
  8902  	if err != nil {
  8903  		return nil, err
  8904  	}
  8905  	return &PausablePauserAddedIterator{contract: _Pausable.contract, event: "PauserAdded", logs: logs, sub: sub}, nil
  8906  }
  8907  
  8908  // WatchPauserAdded is a free log subscription operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
  8909  //
  8910  // Solidity: event PauserAdded(address indexed account)
  8911  func (_Pausable *PausableFilterer) WatchPauserAdded(opts *bind.WatchOpts, sink chan<- *PausablePauserAdded, account []common.Address) (event.Subscription, error) {
  8912  
  8913  	var accountRule []interface{}
  8914  	for _, accountItem := range account {
  8915  		accountRule = append(accountRule, accountItem)
  8916  	}
  8917  
  8918  	logs, sub, err := _Pausable.contract.WatchLogs(opts, "PauserAdded", accountRule)
  8919  	if err != nil {
  8920  		return nil, err
  8921  	}
  8922  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8923  		defer sub.Unsubscribe()
  8924  		for {
  8925  			select {
  8926  			case log := <-logs:
  8927  				// New log arrived, parse the event and forward to the user
  8928  				event := new(PausablePauserAdded)
  8929  				if err := _Pausable.contract.UnpackLog(event, "PauserAdded", log); err != nil {
  8930  					return err
  8931  				}
  8932  				event.Raw = log
  8933  
  8934  				select {
  8935  				case sink <- event:
  8936  				case err := <-sub.Err():
  8937  					return err
  8938  				case <-quit:
  8939  					return nil
  8940  				}
  8941  			case err := <-sub.Err():
  8942  				return err
  8943  			case <-quit:
  8944  				return nil
  8945  			}
  8946  		}
  8947  	}), nil
  8948  }
  8949  
  8950  // ParsePauserAdded is a log parse operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
  8951  //
  8952  // Solidity: event PauserAdded(address indexed account)
  8953  func (_Pausable *PausableFilterer) ParsePauserAdded(log types.Log) (*PausablePauserAdded, error) {
  8954  	event := new(PausablePauserAdded)
  8955  	if err := _Pausable.contract.UnpackLog(event, "PauserAdded", log); err != nil {
  8956  		return nil, err
  8957  	}
  8958  	return event, nil
  8959  }
  8960  
  8961  // PausablePauserRemovedIterator is returned from FilterPauserRemoved and is used to iterate over the raw logs and unpacked data for PauserRemoved events raised by the Pausable contract.
  8962  type PausablePauserRemovedIterator struct {
  8963  	Event *PausablePauserRemoved // Event containing the contract specifics and raw log
  8964  
  8965  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8966  	event    string              // Event name to use for unpacking event data
  8967  
  8968  	logs chan types.Log        // Log channel receiving the found contract events
  8969  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  8970  	done bool                  // Whether the subscription completed delivering logs
  8971  	fail error                 // Occurred error to stop iteration
  8972  }
  8973  
  8974  // Next advances the iterator to the subsequent event, returning whether there
  8975  // are any more events found. In case of a retrieval or parsing error, false is
  8976  // returned and Error() can be queried for the exact failure.
  8977  func (it *PausablePauserRemovedIterator) Next() bool {
  8978  	// If the iterator failed, stop iterating
  8979  	if it.fail != nil {
  8980  		return false
  8981  	}
  8982  	// If the iterator completed, deliver directly whatever's available
  8983  	if it.done {
  8984  		select {
  8985  		case log := <-it.logs:
  8986  			it.Event = new(PausablePauserRemoved)
  8987  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8988  				it.fail = err
  8989  				return false
  8990  			}
  8991  			it.Event.Raw = log
  8992  			return true
  8993  
  8994  		default:
  8995  			return false
  8996  		}
  8997  	}
  8998  	// Iterator still in progress, wait for either a data or an error event
  8999  	select {
  9000  	case log := <-it.logs:
  9001  		it.Event = new(PausablePauserRemoved)
  9002  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9003  			it.fail = err
  9004  			return false
  9005  		}
  9006  		it.Event.Raw = log
  9007  		return true
  9008  
  9009  	case err := <-it.sub.Err():
  9010  		it.done = true
  9011  		it.fail = err
  9012  		return it.Next()
  9013  	}
  9014  }
  9015  
  9016  // Error returns any retrieval or parsing error occurred during filtering.
  9017  func (it *PausablePauserRemovedIterator) Error() error {
  9018  	return it.fail
  9019  }
  9020  
  9021  // Close terminates the iteration process, releasing any pending underlying
  9022  // resources.
  9023  func (it *PausablePauserRemovedIterator) Close() error {
  9024  	it.sub.Unsubscribe()
  9025  	return nil
  9026  }
  9027  
  9028  // PausablePauserRemoved represents a PauserRemoved event raised by the Pausable contract.
  9029  type PausablePauserRemoved struct {
  9030  	Account common.Address
  9031  	Raw     types.Log // Blockchain specific contextual infos
  9032  }
  9033  
  9034  // FilterPauserRemoved is a free log retrieval operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
  9035  //
  9036  // Solidity: event PauserRemoved(address indexed account)
  9037  func (_Pausable *PausableFilterer) FilterPauserRemoved(opts *bind.FilterOpts, account []common.Address) (*PausablePauserRemovedIterator, error) {
  9038  
  9039  	var accountRule []interface{}
  9040  	for _, accountItem := range account {
  9041  		accountRule = append(accountRule, accountItem)
  9042  	}
  9043  
  9044  	logs, sub, err := _Pausable.contract.FilterLogs(opts, "PauserRemoved", accountRule)
  9045  	if err != nil {
  9046  		return nil, err
  9047  	}
  9048  	return &PausablePauserRemovedIterator{contract: _Pausable.contract, event: "PauserRemoved", logs: logs, sub: sub}, nil
  9049  }
  9050  
  9051  // WatchPauserRemoved is a free log subscription operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
  9052  //
  9053  // Solidity: event PauserRemoved(address indexed account)
  9054  func (_Pausable *PausableFilterer) WatchPauserRemoved(opts *bind.WatchOpts, sink chan<- *PausablePauserRemoved, account []common.Address) (event.Subscription, error) {
  9055  
  9056  	var accountRule []interface{}
  9057  	for _, accountItem := range account {
  9058  		accountRule = append(accountRule, accountItem)
  9059  	}
  9060  
  9061  	logs, sub, err := _Pausable.contract.WatchLogs(opts, "PauserRemoved", accountRule)
  9062  	if err != nil {
  9063  		return nil, err
  9064  	}
  9065  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9066  		defer sub.Unsubscribe()
  9067  		for {
  9068  			select {
  9069  			case log := <-logs:
  9070  				// New log arrived, parse the event and forward to the user
  9071  				event := new(PausablePauserRemoved)
  9072  				if err := _Pausable.contract.UnpackLog(event, "PauserRemoved", log); err != nil {
  9073  					return err
  9074  				}
  9075  				event.Raw = log
  9076  
  9077  				select {
  9078  				case sink <- event:
  9079  				case err := <-sub.Err():
  9080  					return err
  9081  				case <-quit:
  9082  					return nil
  9083  				}
  9084  			case err := <-sub.Err():
  9085  				return err
  9086  			case <-quit:
  9087  				return nil
  9088  			}
  9089  		}
  9090  	}), nil
  9091  }
  9092  
  9093  // ParsePauserRemoved is a log parse operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
  9094  //
  9095  // Solidity: event PauserRemoved(address indexed account)
  9096  func (_Pausable *PausableFilterer) ParsePauserRemoved(log types.Log) (*PausablePauserRemoved, error) {
  9097  	event := new(PausablePauserRemoved)
  9098  	if err := _Pausable.contract.UnpackLog(event, "PauserRemoved", log); err != nil {
  9099  		return nil, err
  9100  	}
  9101  	return event, nil
  9102  }
  9103  
  9104  // PausableUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the Pausable contract.
  9105  type PausableUnpausedIterator struct {
  9106  	Event *PausableUnpaused // Event containing the contract specifics and raw log
  9107  
  9108  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9109  	event    string              // Event name to use for unpacking event data
  9110  
  9111  	logs chan types.Log        // Log channel receiving the found contract events
  9112  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9113  	done bool                  // Whether the subscription completed delivering logs
  9114  	fail error                 // Occurred error to stop iteration
  9115  }
  9116  
  9117  // Next advances the iterator to the subsequent event, returning whether there
  9118  // are any more events found. In case of a retrieval or parsing error, false is
  9119  // returned and Error() can be queried for the exact failure.
  9120  func (it *PausableUnpausedIterator) Next() bool {
  9121  	// If the iterator failed, stop iterating
  9122  	if it.fail != nil {
  9123  		return false
  9124  	}
  9125  	// If the iterator completed, deliver directly whatever's available
  9126  	if it.done {
  9127  		select {
  9128  		case log := <-it.logs:
  9129  			it.Event = new(PausableUnpaused)
  9130  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9131  				it.fail = err
  9132  				return false
  9133  			}
  9134  			it.Event.Raw = log
  9135  			return true
  9136  
  9137  		default:
  9138  			return false
  9139  		}
  9140  	}
  9141  	// Iterator still in progress, wait for either a data or an error event
  9142  	select {
  9143  	case log := <-it.logs:
  9144  		it.Event = new(PausableUnpaused)
  9145  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9146  			it.fail = err
  9147  			return false
  9148  		}
  9149  		it.Event.Raw = log
  9150  		return true
  9151  
  9152  	case err := <-it.sub.Err():
  9153  		it.done = true
  9154  		it.fail = err
  9155  		return it.Next()
  9156  	}
  9157  }
  9158  
  9159  // Error returns any retrieval or parsing error occurred during filtering.
  9160  func (it *PausableUnpausedIterator) Error() error {
  9161  	return it.fail
  9162  }
  9163  
  9164  // Close terminates the iteration process, releasing any pending underlying
  9165  // resources.
  9166  func (it *PausableUnpausedIterator) Close() error {
  9167  	it.sub.Unsubscribe()
  9168  	return nil
  9169  }
  9170  
  9171  // PausableUnpaused represents a Unpaused event raised by the Pausable contract.
  9172  type PausableUnpaused struct {
  9173  	Account common.Address
  9174  	Raw     types.Log // Blockchain specific contextual infos
  9175  }
  9176  
  9177  // FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
  9178  //
  9179  // Solidity: event Unpaused(address account)
  9180  func (_Pausable *PausableFilterer) FilterUnpaused(opts *bind.FilterOpts) (*PausableUnpausedIterator, error) {
  9181  
  9182  	logs, sub, err := _Pausable.contract.FilterLogs(opts, "Unpaused")
  9183  	if err != nil {
  9184  		return nil, err
  9185  	}
  9186  	return &PausableUnpausedIterator{contract: _Pausable.contract, event: "Unpaused", logs: logs, sub: sub}, nil
  9187  }
  9188  
  9189  // WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
  9190  //
  9191  // Solidity: event Unpaused(address account)
  9192  func (_Pausable *PausableFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *PausableUnpaused) (event.Subscription, error) {
  9193  
  9194  	logs, sub, err := _Pausable.contract.WatchLogs(opts, "Unpaused")
  9195  	if err != nil {
  9196  		return nil, err
  9197  	}
  9198  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9199  		defer sub.Unsubscribe()
  9200  		for {
  9201  			select {
  9202  			case log := <-logs:
  9203  				// New log arrived, parse the event and forward to the user
  9204  				event := new(PausableUnpaused)
  9205  				if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil {
  9206  					return err
  9207  				}
  9208  				event.Raw = log
  9209  
  9210  				select {
  9211  				case sink <- event:
  9212  				case err := <-sub.Err():
  9213  					return err
  9214  				case <-quit:
  9215  					return nil
  9216  				}
  9217  			case err := <-sub.Err():
  9218  				return err
  9219  			case <-quit:
  9220  				return nil
  9221  			}
  9222  		}
  9223  	}), nil
  9224  }
  9225  
  9226  // ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
  9227  //
  9228  // Solidity: event Unpaused(address account)
  9229  func (_Pausable *PausableFilterer) ParseUnpaused(log types.Log) (*PausableUnpaused, error) {
  9230  	event := new(PausableUnpaused)
  9231  	if err := _Pausable.contract.UnpackLog(event, "Unpaused", log); err != nil {
  9232  		return nil, err
  9233  	}
  9234  	return event, nil
  9235  }
  9236  
  9237  // PauserRoleABI is the input ABI used to generate the binding from.
  9238  const PauserRoleABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  9239  
  9240  // PauserRoleFuncSigs maps the 4-byte function signature to its string representation.
  9241  var PauserRoleFuncSigs = map[string]string{
  9242  	"82dc1ec4": "addPauser(address)",
  9243  	"46fbf68e": "isPauser(address)",
  9244  	"6ef8d66d": "renouncePauser()",
  9245  }
  9246  
  9247  // PauserRole is an auto generated Go binding around an Ethereum contract.
  9248  type PauserRole struct {
  9249  	PauserRoleCaller     // Read-only binding to the contract
  9250  	PauserRoleTransactor // Write-only binding to the contract
  9251  	PauserRoleFilterer   // Log filterer for contract events
  9252  }
  9253  
  9254  // PauserRoleCaller is an auto generated read-only Go binding around an Ethereum contract.
  9255  type PauserRoleCaller struct {
  9256  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9257  }
  9258  
  9259  // PauserRoleTransactor is an auto generated write-only Go binding around an Ethereum contract.
  9260  type PauserRoleTransactor struct {
  9261  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9262  }
  9263  
  9264  // PauserRoleFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  9265  type PauserRoleFilterer struct {
  9266  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9267  }
  9268  
  9269  // PauserRoleSession is an auto generated Go binding around an Ethereum contract,
  9270  // with pre-set call and transact options.
  9271  type PauserRoleSession struct {
  9272  	Contract     *PauserRole       // Generic contract binding to set the session for
  9273  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  9274  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  9275  }
  9276  
  9277  // PauserRoleCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  9278  // with pre-set call options.
  9279  type PauserRoleCallerSession struct {
  9280  	Contract *PauserRoleCaller // Generic contract caller binding to set the session for
  9281  	CallOpts bind.CallOpts     // Call options to use throughout this session
  9282  }
  9283  
  9284  // PauserRoleTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  9285  // with pre-set transact options.
  9286  type PauserRoleTransactorSession struct {
  9287  	Contract     *PauserRoleTransactor // Generic contract transactor binding to set the session for
  9288  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  9289  }
  9290  
  9291  // PauserRoleRaw is an auto generated low-level Go binding around an Ethereum contract.
  9292  type PauserRoleRaw struct {
  9293  	Contract *PauserRole // Generic contract binding to access the raw methods on
  9294  }
  9295  
  9296  // PauserRoleCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  9297  type PauserRoleCallerRaw struct {
  9298  	Contract *PauserRoleCaller // Generic read-only contract binding to access the raw methods on
  9299  }
  9300  
  9301  // PauserRoleTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  9302  type PauserRoleTransactorRaw struct {
  9303  	Contract *PauserRoleTransactor // Generic write-only contract binding to access the raw methods on
  9304  }
  9305  
  9306  // NewPauserRole creates a new instance of PauserRole, bound to a specific deployed contract.
  9307  func NewPauserRole(address common.Address, backend bind.ContractBackend) (*PauserRole, error) {
  9308  	contract, err := bindPauserRole(address, backend, backend, backend)
  9309  	if err != nil {
  9310  		return nil, err
  9311  	}
  9312  	return &PauserRole{PauserRoleCaller: PauserRoleCaller{contract: contract}, PauserRoleTransactor: PauserRoleTransactor{contract: contract}, PauserRoleFilterer: PauserRoleFilterer{contract: contract}}, nil
  9313  }
  9314  
  9315  // NewPauserRoleCaller creates a new read-only instance of PauserRole, bound to a specific deployed contract.
  9316  func NewPauserRoleCaller(address common.Address, caller bind.ContractCaller) (*PauserRoleCaller, error) {
  9317  	contract, err := bindPauserRole(address, caller, nil, nil)
  9318  	if err != nil {
  9319  		return nil, err
  9320  	}
  9321  	return &PauserRoleCaller{contract: contract}, nil
  9322  }
  9323  
  9324  // NewPauserRoleTransactor creates a new write-only instance of PauserRole, bound to a specific deployed contract.
  9325  func NewPauserRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*PauserRoleTransactor, error) {
  9326  	contract, err := bindPauserRole(address, nil, transactor, nil)
  9327  	if err != nil {
  9328  		return nil, err
  9329  	}
  9330  	return &PauserRoleTransactor{contract: contract}, nil
  9331  }
  9332  
  9333  // NewPauserRoleFilterer creates a new log filterer instance of PauserRole, bound to a specific deployed contract.
  9334  func NewPauserRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*PauserRoleFilterer, error) {
  9335  	contract, err := bindPauserRole(address, nil, nil, filterer)
  9336  	if err != nil {
  9337  		return nil, err
  9338  	}
  9339  	return &PauserRoleFilterer{contract: contract}, nil
  9340  }
  9341  
  9342  // bindPauserRole binds a generic wrapper to an already deployed contract.
  9343  func bindPauserRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9344  	parsed, err := abi.JSON(strings.NewReader(PauserRoleABI))
  9345  	if err != nil {
  9346  		return nil, err
  9347  	}
  9348  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  9349  }
  9350  
  9351  // Call invokes the (constant) contract method with params as input values and
  9352  // sets the output to result. The result type might be a single field for simple
  9353  // returns, a slice of interfaces for anonymous returns and a struct for named
  9354  // returns.
  9355  func (_PauserRole *PauserRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9356  	return _PauserRole.Contract.PauserRoleCaller.contract.Call(opts, result, method, params...)
  9357  }
  9358  
  9359  // Transfer initiates a plain transaction to move funds to the contract, calling
  9360  // its default method if one is available.
  9361  func (_PauserRole *PauserRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9362  	return _PauserRole.Contract.PauserRoleTransactor.contract.Transfer(opts)
  9363  }
  9364  
  9365  // Transact invokes the (paid) contract method with params as input values.
  9366  func (_PauserRole *PauserRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9367  	return _PauserRole.Contract.PauserRoleTransactor.contract.Transact(opts, method, params...)
  9368  }
  9369  
  9370  // Call invokes the (constant) contract method with params as input values and
  9371  // sets the output to result. The result type might be a single field for simple
  9372  // returns, a slice of interfaces for anonymous returns and a struct for named
  9373  // returns.
  9374  func (_PauserRole *PauserRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9375  	return _PauserRole.Contract.contract.Call(opts, result, method, params...)
  9376  }
  9377  
  9378  // Transfer initiates a plain transaction to move funds to the contract, calling
  9379  // its default method if one is available.
  9380  func (_PauserRole *PauserRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9381  	return _PauserRole.Contract.contract.Transfer(opts)
  9382  }
  9383  
  9384  // Transact invokes the (paid) contract method with params as input values.
  9385  func (_PauserRole *PauserRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9386  	return _PauserRole.Contract.contract.Transact(opts, method, params...)
  9387  }
  9388  
  9389  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
  9390  //
  9391  // Solidity: function isPauser(address account) constant returns(bool)
  9392  func (_PauserRole *PauserRoleCaller) IsPauser(opts *bind.CallOpts, account common.Address) (bool, error) {
  9393  	var (
  9394  		ret0 = new(bool)
  9395  	)
  9396  	out := ret0
  9397  	err := _PauserRole.contract.Call(opts, out, "isPauser", account)
  9398  	return *ret0, err
  9399  }
  9400  
  9401  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
  9402  //
  9403  // Solidity: function isPauser(address account) constant returns(bool)
  9404  func (_PauserRole *PauserRoleSession) IsPauser(account common.Address) (bool, error) {
  9405  	return _PauserRole.Contract.IsPauser(&_PauserRole.CallOpts, account)
  9406  }
  9407  
  9408  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
  9409  //
  9410  // Solidity: function isPauser(address account) constant returns(bool)
  9411  func (_PauserRole *PauserRoleCallerSession) IsPauser(account common.Address) (bool, error) {
  9412  	return _PauserRole.Contract.IsPauser(&_PauserRole.CallOpts, account)
  9413  }
  9414  
  9415  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
  9416  //
  9417  // Solidity: function addPauser(address account) returns()
  9418  func (_PauserRole *PauserRoleTransactor) AddPauser(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  9419  	return _PauserRole.contract.Transact(opts, "addPauser", account)
  9420  }
  9421  
  9422  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
  9423  //
  9424  // Solidity: function addPauser(address account) returns()
  9425  func (_PauserRole *PauserRoleSession) AddPauser(account common.Address) (*types.Transaction, error) {
  9426  	return _PauserRole.Contract.AddPauser(&_PauserRole.TransactOpts, account)
  9427  }
  9428  
  9429  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
  9430  //
  9431  // Solidity: function addPauser(address account) returns()
  9432  func (_PauserRole *PauserRoleTransactorSession) AddPauser(account common.Address) (*types.Transaction, error) {
  9433  	return _PauserRole.Contract.AddPauser(&_PauserRole.TransactOpts, account)
  9434  }
  9435  
  9436  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  9437  //
  9438  // Solidity: function renouncePauser() returns()
  9439  func (_PauserRole *PauserRoleTransactor) RenouncePauser(opts *bind.TransactOpts) (*types.Transaction, error) {
  9440  	return _PauserRole.contract.Transact(opts, "renouncePauser")
  9441  }
  9442  
  9443  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  9444  //
  9445  // Solidity: function renouncePauser() returns()
  9446  func (_PauserRole *PauserRoleSession) RenouncePauser() (*types.Transaction, error) {
  9447  	return _PauserRole.Contract.RenouncePauser(&_PauserRole.TransactOpts)
  9448  }
  9449  
  9450  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  9451  //
  9452  // Solidity: function renouncePauser() returns()
  9453  func (_PauserRole *PauserRoleTransactorSession) RenouncePauser() (*types.Transaction, error) {
  9454  	return _PauserRole.Contract.RenouncePauser(&_PauserRole.TransactOpts)
  9455  }
  9456  
  9457  // PauserRolePauserAddedIterator is returned from FilterPauserAdded and is used to iterate over the raw logs and unpacked data for PauserAdded events raised by the PauserRole contract.
  9458  type PauserRolePauserAddedIterator struct {
  9459  	Event *PauserRolePauserAdded // Event containing the contract specifics and raw log
  9460  
  9461  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9462  	event    string              // Event name to use for unpacking event data
  9463  
  9464  	logs chan types.Log        // Log channel receiving the found contract events
  9465  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9466  	done bool                  // Whether the subscription completed delivering logs
  9467  	fail error                 // Occurred error to stop iteration
  9468  }
  9469  
  9470  // Next advances the iterator to the subsequent event, returning whether there
  9471  // are any more events found. In case of a retrieval or parsing error, false is
  9472  // returned and Error() can be queried for the exact failure.
  9473  func (it *PauserRolePauserAddedIterator) Next() bool {
  9474  	// If the iterator failed, stop iterating
  9475  	if it.fail != nil {
  9476  		return false
  9477  	}
  9478  	// If the iterator completed, deliver directly whatever's available
  9479  	if it.done {
  9480  		select {
  9481  		case log := <-it.logs:
  9482  			it.Event = new(PauserRolePauserAdded)
  9483  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9484  				it.fail = err
  9485  				return false
  9486  			}
  9487  			it.Event.Raw = log
  9488  			return true
  9489  
  9490  		default:
  9491  			return false
  9492  		}
  9493  	}
  9494  	// Iterator still in progress, wait for either a data or an error event
  9495  	select {
  9496  	case log := <-it.logs:
  9497  		it.Event = new(PauserRolePauserAdded)
  9498  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9499  			it.fail = err
  9500  			return false
  9501  		}
  9502  		it.Event.Raw = log
  9503  		return true
  9504  
  9505  	case err := <-it.sub.Err():
  9506  		it.done = true
  9507  		it.fail = err
  9508  		return it.Next()
  9509  	}
  9510  }
  9511  
  9512  // Error returns any retrieval or parsing error occurred during filtering.
  9513  func (it *PauserRolePauserAddedIterator) Error() error {
  9514  	return it.fail
  9515  }
  9516  
  9517  // Close terminates the iteration process, releasing any pending underlying
  9518  // resources.
  9519  func (it *PauserRolePauserAddedIterator) Close() error {
  9520  	it.sub.Unsubscribe()
  9521  	return nil
  9522  }
  9523  
  9524  // PauserRolePauserAdded represents a PauserAdded event raised by the PauserRole contract.
  9525  type PauserRolePauserAdded struct {
  9526  	Account common.Address
  9527  	Raw     types.Log // Blockchain specific contextual infos
  9528  }
  9529  
  9530  // FilterPauserAdded is a free log retrieval operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
  9531  //
  9532  // Solidity: event PauserAdded(address indexed account)
  9533  func (_PauserRole *PauserRoleFilterer) FilterPauserAdded(opts *bind.FilterOpts, account []common.Address) (*PauserRolePauserAddedIterator, error) {
  9534  
  9535  	var accountRule []interface{}
  9536  	for _, accountItem := range account {
  9537  		accountRule = append(accountRule, accountItem)
  9538  	}
  9539  
  9540  	logs, sub, err := _PauserRole.contract.FilterLogs(opts, "PauserAdded", accountRule)
  9541  	if err != nil {
  9542  		return nil, err
  9543  	}
  9544  	return &PauserRolePauserAddedIterator{contract: _PauserRole.contract, event: "PauserAdded", logs: logs, sub: sub}, nil
  9545  }
  9546  
  9547  // WatchPauserAdded is a free log subscription operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
  9548  //
  9549  // Solidity: event PauserAdded(address indexed account)
  9550  func (_PauserRole *PauserRoleFilterer) WatchPauserAdded(opts *bind.WatchOpts, sink chan<- *PauserRolePauserAdded, account []common.Address) (event.Subscription, error) {
  9551  
  9552  	var accountRule []interface{}
  9553  	for _, accountItem := range account {
  9554  		accountRule = append(accountRule, accountItem)
  9555  	}
  9556  
  9557  	logs, sub, err := _PauserRole.contract.WatchLogs(opts, "PauserAdded", accountRule)
  9558  	if err != nil {
  9559  		return nil, err
  9560  	}
  9561  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9562  		defer sub.Unsubscribe()
  9563  		for {
  9564  			select {
  9565  			case log := <-logs:
  9566  				// New log arrived, parse the event and forward to the user
  9567  				event := new(PauserRolePauserAdded)
  9568  				if err := _PauserRole.contract.UnpackLog(event, "PauserAdded", log); err != nil {
  9569  					return err
  9570  				}
  9571  				event.Raw = log
  9572  
  9573  				select {
  9574  				case sink <- event:
  9575  				case err := <-sub.Err():
  9576  					return err
  9577  				case <-quit:
  9578  					return nil
  9579  				}
  9580  			case err := <-sub.Err():
  9581  				return err
  9582  			case <-quit:
  9583  				return nil
  9584  			}
  9585  		}
  9586  	}), nil
  9587  }
  9588  
  9589  // ParsePauserAdded is a log parse operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
  9590  //
  9591  // Solidity: event PauserAdded(address indexed account)
  9592  func (_PauserRole *PauserRoleFilterer) ParsePauserAdded(log types.Log) (*PauserRolePauserAdded, error) {
  9593  	event := new(PauserRolePauserAdded)
  9594  	if err := _PauserRole.contract.UnpackLog(event, "PauserAdded", log); err != nil {
  9595  		return nil, err
  9596  	}
  9597  	return event, nil
  9598  }
  9599  
  9600  // PauserRolePauserRemovedIterator is returned from FilterPauserRemoved and is used to iterate over the raw logs and unpacked data for PauserRemoved events raised by the PauserRole contract.
  9601  type PauserRolePauserRemovedIterator struct {
  9602  	Event *PauserRolePauserRemoved // Event containing the contract specifics and raw log
  9603  
  9604  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9605  	event    string              // Event name to use for unpacking event data
  9606  
  9607  	logs chan types.Log        // Log channel receiving the found contract events
  9608  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  9609  	done bool                  // Whether the subscription completed delivering logs
  9610  	fail error                 // Occurred error to stop iteration
  9611  }
  9612  
  9613  // Next advances the iterator to the subsequent event, returning whether there
  9614  // are any more events found. In case of a retrieval or parsing error, false is
  9615  // returned and Error() can be queried for the exact failure.
  9616  func (it *PauserRolePauserRemovedIterator) Next() bool {
  9617  	// If the iterator failed, stop iterating
  9618  	if it.fail != nil {
  9619  		return false
  9620  	}
  9621  	// If the iterator completed, deliver directly whatever's available
  9622  	if it.done {
  9623  		select {
  9624  		case log := <-it.logs:
  9625  			it.Event = new(PauserRolePauserRemoved)
  9626  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9627  				it.fail = err
  9628  				return false
  9629  			}
  9630  			it.Event.Raw = log
  9631  			return true
  9632  
  9633  		default:
  9634  			return false
  9635  		}
  9636  	}
  9637  	// Iterator still in progress, wait for either a data or an error event
  9638  	select {
  9639  	case log := <-it.logs:
  9640  		it.Event = new(PauserRolePauserRemoved)
  9641  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9642  			it.fail = err
  9643  			return false
  9644  		}
  9645  		it.Event.Raw = log
  9646  		return true
  9647  
  9648  	case err := <-it.sub.Err():
  9649  		it.done = true
  9650  		it.fail = err
  9651  		return it.Next()
  9652  	}
  9653  }
  9654  
  9655  // Error returns any retrieval or parsing error occurred during filtering.
  9656  func (it *PauserRolePauserRemovedIterator) Error() error {
  9657  	return it.fail
  9658  }
  9659  
  9660  // Close terminates the iteration process, releasing any pending underlying
  9661  // resources.
  9662  func (it *PauserRolePauserRemovedIterator) Close() error {
  9663  	it.sub.Unsubscribe()
  9664  	return nil
  9665  }
  9666  
  9667  // PauserRolePauserRemoved represents a PauserRemoved event raised by the PauserRole contract.
  9668  type PauserRolePauserRemoved struct {
  9669  	Account common.Address
  9670  	Raw     types.Log // Blockchain specific contextual infos
  9671  }
  9672  
  9673  // FilterPauserRemoved is a free log retrieval operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
  9674  //
  9675  // Solidity: event PauserRemoved(address indexed account)
  9676  func (_PauserRole *PauserRoleFilterer) FilterPauserRemoved(opts *bind.FilterOpts, account []common.Address) (*PauserRolePauserRemovedIterator, error) {
  9677  
  9678  	var accountRule []interface{}
  9679  	for _, accountItem := range account {
  9680  		accountRule = append(accountRule, accountItem)
  9681  	}
  9682  
  9683  	logs, sub, err := _PauserRole.contract.FilterLogs(opts, "PauserRemoved", accountRule)
  9684  	if err != nil {
  9685  		return nil, err
  9686  	}
  9687  	return &PauserRolePauserRemovedIterator{contract: _PauserRole.contract, event: "PauserRemoved", logs: logs, sub: sub}, nil
  9688  }
  9689  
  9690  // WatchPauserRemoved is a free log subscription operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
  9691  //
  9692  // Solidity: event PauserRemoved(address indexed account)
  9693  func (_PauserRole *PauserRoleFilterer) WatchPauserRemoved(opts *bind.WatchOpts, sink chan<- *PauserRolePauserRemoved, account []common.Address) (event.Subscription, error) {
  9694  
  9695  	var accountRule []interface{}
  9696  	for _, accountItem := range account {
  9697  		accountRule = append(accountRule, accountItem)
  9698  	}
  9699  
  9700  	logs, sub, err := _PauserRole.contract.WatchLogs(opts, "PauserRemoved", accountRule)
  9701  	if err != nil {
  9702  		return nil, err
  9703  	}
  9704  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9705  		defer sub.Unsubscribe()
  9706  		for {
  9707  			select {
  9708  			case log := <-logs:
  9709  				// New log arrived, parse the event and forward to the user
  9710  				event := new(PauserRolePauserRemoved)
  9711  				if err := _PauserRole.contract.UnpackLog(event, "PauserRemoved", log); err != nil {
  9712  					return err
  9713  				}
  9714  				event.Raw = log
  9715  
  9716  				select {
  9717  				case sink <- event:
  9718  				case err := <-sub.Err():
  9719  					return err
  9720  				case <-quit:
  9721  					return nil
  9722  				}
  9723  			case err := <-sub.Err():
  9724  				return err
  9725  			case <-quit:
  9726  				return nil
  9727  			}
  9728  		}
  9729  	}), nil
  9730  }
  9731  
  9732  // ParsePauserRemoved is a log parse operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
  9733  //
  9734  // Solidity: event PauserRemoved(address indexed account)
  9735  func (_PauserRole *PauserRoleFilterer) ParsePauserRemoved(log types.Log) (*PauserRolePauserRemoved, error) {
  9736  	event := new(PauserRolePauserRemoved)
  9737  	if err := _PauserRole.contract.UnpackLog(event, "PauserRemoved", log); err != nil {
  9738  		return nil, err
  9739  	}
  9740  	return event, nil
  9741  }
  9742  
  9743  // PauserRoleRenounceTargetABI is the input ABI used to generate the binding from.
  9744  const PauserRoleRenounceTargetABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  9745  
  9746  // PauserRoleRenounceTargetFuncSigs maps the 4-byte function signature to its string representation.
  9747  var PauserRoleRenounceTargetFuncSigs = map[string]string{
  9748  	"6ef8d66d": "renouncePauser()",
  9749  }
  9750  
  9751  // PauserRoleRenounceTarget is an auto generated Go binding around an Ethereum contract.
  9752  type PauserRoleRenounceTarget struct {
  9753  	PauserRoleRenounceTargetCaller     // Read-only binding to the contract
  9754  	PauserRoleRenounceTargetTransactor // Write-only binding to the contract
  9755  	PauserRoleRenounceTargetFilterer   // Log filterer for contract events
  9756  }
  9757  
  9758  // PauserRoleRenounceTargetCaller is an auto generated read-only Go binding around an Ethereum contract.
  9759  type PauserRoleRenounceTargetCaller struct {
  9760  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9761  }
  9762  
  9763  // PauserRoleRenounceTargetTransactor is an auto generated write-only Go binding around an Ethereum contract.
  9764  type PauserRoleRenounceTargetTransactor struct {
  9765  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9766  }
  9767  
  9768  // PauserRoleRenounceTargetFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  9769  type PauserRoleRenounceTargetFilterer struct {
  9770  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9771  }
  9772  
  9773  // PauserRoleRenounceTargetSession is an auto generated Go binding around an Ethereum contract,
  9774  // with pre-set call and transact options.
  9775  type PauserRoleRenounceTargetSession struct {
  9776  	Contract     *PauserRoleRenounceTarget // Generic contract binding to set the session for
  9777  	CallOpts     bind.CallOpts             // Call options to use throughout this session
  9778  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  9779  }
  9780  
  9781  // PauserRoleRenounceTargetCallerSession is an auto generated read-only Go binding around an Ethereum contract,
  9782  // with pre-set call options.
  9783  type PauserRoleRenounceTargetCallerSession struct {
  9784  	Contract *PauserRoleRenounceTargetCaller // Generic contract caller binding to set the session for
  9785  	CallOpts bind.CallOpts                   // Call options to use throughout this session
  9786  }
  9787  
  9788  // PauserRoleRenounceTargetTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
  9789  // with pre-set transact options.
  9790  type PauserRoleRenounceTargetTransactorSession struct {
  9791  	Contract     *PauserRoleRenounceTargetTransactor // Generic contract transactor binding to set the session for
  9792  	TransactOpts bind.TransactOpts                   // Transaction auth options to use throughout this session
  9793  }
  9794  
  9795  // PauserRoleRenounceTargetRaw is an auto generated low-level Go binding around an Ethereum contract.
  9796  type PauserRoleRenounceTargetRaw struct {
  9797  	Contract *PauserRoleRenounceTarget // Generic contract binding to access the raw methods on
  9798  }
  9799  
  9800  // PauserRoleRenounceTargetCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
  9801  type PauserRoleRenounceTargetCallerRaw struct {
  9802  	Contract *PauserRoleRenounceTargetCaller // Generic read-only contract binding to access the raw methods on
  9803  }
  9804  
  9805  // PauserRoleRenounceTargetTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
  9806  type PauserRoleRenounceTargetTransactorRaw struct {
  9807  	Contract *PauserRoleRenounceTargetTransactor // Generic write-only contract binding to access the raw methods on
  9808  }
  9809  
  9810  // NewPauserRoleRenounceTarget creates a new instance of PauserRoleRenounceTarget, bound to a specific deployed contract.
  9811  func NewPauserRoleRenounceTarget(address common.Address, backend bind.ContractBackend) (*PauserRoleRenounceTarget, error) {
  9812  	contract, err := bindPauserRoleRenounceTarget(address, backend, backend, backend)
  9813  	if err != nil {
  9814  		return nil, err
  9815  	}
  9816  	return &PauserRoleRenounceTarget{PauserRoleRenounceTargetCaller: PauserRoleRenounceTargetCaller{contract: contract}, PauserRoleRenounceTargetTransactor: PauserRoleRenounceTargetTransactor{contract: contract}, PauserRoleRenounceTargetFilterer: PauserRoleRenounceTargetFilterer{contract: contract}}, nil
  9817  }
  9818  
  9819  // NewPauserRoleRenounceTargetCaller creates a new read-only instance of PauserRoleRenounceTarget, bound to a specific deployed contract.
  9820  func NewPauserRoleRenounceTargetCaller(address common.Address, caller bind.ContractCaller) (*PauserRoleRenounceTargetCaller, error) {
  9821  	contract, err := bindPauserRoleRenounceTarget(address, caller, nil, nil)
  9822  	if err != nil {
  9823  		return nil, err
  9824  	}
  9825  	return &PauserRoleRenounceTargetCaller{contract: contract}, nil
  9826  }
  9827  
  9828  // NewPauserRoleRenounceTargetTransactor creates a new write-only instance of PauserRoleRenounceTarget, bound to a specific deployed contract.
  9829  func NewPauserRoleRenounceTargetTransactor(address common.Address, transactor bind.ContractTransactor) (*PauserRoleRenounceTargetTransactor, error) {
  9830  	contract, err := bindPauserRoleRenounceTarget(address, nil, transactor, nil)
  9831  	if err != nil {
  9832  		return nil, err
  9833  	}
  9834  	return &PauserRoleRenounceTargetTransactor{contract: contract}, nil
  9835  }
  9836  
  9837  // NewPauserRoleRenounceTargetFilterer creates a new log filterer instance of PauserRoleRenounceTarget, bound to a specific deployed contract.
  9838  func NewPauserRoleRenounceTargetFilterer(address common.Address, filterer bind.ContractFilterer) (*PauserRoleRenounceTargetFilterer, error) {
  9839  	contract, err := bindPauserRoleRenounceTarget(address, nil, nil, filterer)
  9840  	if err != nil {
  9841  		return nil, err
  9842  	}
  9843  	return &PauserRoleRenounceTargetFilterer{contract: contract}, nil
  9844  }
  9845  
  9846  // bindPauserRoleRenounceTarget binds a generic wrapper to an already deployed contract.
  9847  func bindPauserRoleRenounceTarget(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9848  	parsed, err := abi.JSON(strings.NewReader(PauserRoleRenounceTargetABI))
  9849  	if err != nil {
  9850  		return nil, err
  9851  	}
  9852  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  9853  }
  9854  
  9855  // Call invokes the (constant) contract method with params as input values and
  9856  // sets the output to result. The result type might be a single field for simple
  9857  // returns, a slice of interfaces for anonymous returns and a struct for named
  9858  // returns.
  9859  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9860  	return _PauserRoleRenounceTarget.Contract.PauserRoleRenounceTargetCaller.contract.Call(opts, result, method, params...)
  9861  }
  9862  
  9863  // Transfer initiates a plain transaction to move funds to the contract, calling
  9864  // its default method if one is available.
  9865  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9866  	return _PauserRoleRenounceTarget.Contract.PauserRoleRenounceTargetTransactor.contract.Transfer(opts)
  9867  }
  9868  
  9869  // Transact invokes the (paid) contract method with params as input values.
  9870  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9871  	return _PauserRoleRenounceTarget.Contract.PauserRoleRenounceTargetTransactor.contract.Transact(opts, method, params...)
  9872  }
  9873  
  9874  // Call invokes the (constant) contract method with params as input values and
  9875  // sets the output to result. The result type might be a single field for simple
  9876  // returns, a slice of interfaces for anonymous returns and a struct for named
  9877  // returns.
  9878  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9879  	return _PauserRoleRenounceTarget.Contract.contract.Call(opts, result, method, params...)
  9880  }
  9881  
  9882  // Transfer initiates a plain transaction to move funds to the contract, calling
  9883  // its default method if one is available.
  9884  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9885  	return _PauserRoleRenounceTarget.Contract.contract.Transfer(opts)
  9886  }
  9887  
  9888  // Transact invokes the (paid) contract method with params as input values.
  9889  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9890  	return _PauserRoleRenounceTarget.Contract.contract.Transact(opts, method, params...)
  9891  }
  9892  
  9893  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  9894  //
  9895  // Solidity: function renouncePauser() returns()
  9896  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetTransactor) RenouncePauser(opts *bind.TransactOpts) (*types.Transaction, error) {
  9897  	return _PauserRoleRenounceTarget.contract.Transact(opts, "renouncePauser")
  9898  }
  9899  
  9900  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  9901  //
  9902  // Solidity: function renouncePauser() returns()
  9903  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetSession) RenouncePauser() (*types.Transaction, error) {
  9904  	return _PauserRoleRenounceTarget.Contract.RenouncePauser(&_PauserRoleRenounceTarget.TransactOpts)
  9905  }
  9906  
  9907  // RenouncePauser is a paid mutator transaction binding the contract method 0x6ef8d66d.
  9908  //
  9909  // Solidity: function renouncePauser() returns()
  9910  func (_PauserRoleRenounceTarget *PauserRoleRenounceTargetTransactorSession) RenouncePauser() (*types.Transaction, error) {
  9911  	return _PauserRoleRenounceTarget.Contract.RenouncePauser(&_PauserRoleRenounceTarget.TransactOpts)
  9912  }
  9913  
  9914  // PowerTONABI is the input ABI used to generate the binding from.
  9915  const PowerTONABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"seigManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wton\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"roundDuration\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"PauserRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PowerDecreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PowerIncreased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"RoundEnd\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"RoundStart\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"REWARD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"REWARD_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addPauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"currentRoundFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"endRound\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isPauser\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onDeposit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onWithdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"powerOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"roundFinished\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"roundStarted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"rounds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"startTime\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"winner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"seigManager\",\"type\":\"address\"}],\"name\":\"setSeigManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"winnerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"wton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  9916  
  9917  // PowerTONFuncSigs maps the 4-byte function signature to its string representation.
  9918  var PowerTONFuncSigs = map[string]string{
  9919  	"819a9398": "REWARD_DENOMINATOR()",
  9920  	"4b816b67": "REWARD_NUMERATOR()",
  9921  	"82dc1ec4": "addPauser(address)",
  9922  	"8a19c8bc": "currentRound()",
  9923  	"c2dba50e": "currentRoundFinished()",
  9924  	"749aa2d9": "endRound()",
  9925  	"e1c7392a": "init()",
  9926  	"158ef93e": "initialized()",
  9927  	"8f32d59b": "isOwner()",
  9928  	"46fbf68e": "isPauser(address)",
  9929  	"412c6d50": "onDeposit(address,address,uint256)",
  9930  	"f850ffaa": "onWithdraw(address,address,uint256)",
  9931  	"8da5cb5b": "owner()",
  9932  	"8456cb59": "pause()",
  9933  	"5c975abb": "paused()",
  9934  	"1ac84690": "powerOf(address)",
  9935  	"5f112c68": "renounceMinter(address)",
  9936  	"715018a6": "renounceOwnership()",
  9937  	"38bf3cfa": "renounceOwnership(address)",
  9938  	"6ef8d66d": "renouncePauser()",
  9939  	"41eb24bb": "renouncePauser(address)",
  9940  	"f7cb789a": "roundDuration()",
  9941  	"1c602a63": "roundFinished(uint256)",
  9942  	"64402c07": "roundStarted(uint256)",
  9943  	"8c65c81f": "rounds(uint256)",
  9944  	"6fb7f558": "seigManager()",
  9945  	"7657f20a": "setSeigManager(address)",
  9946  	"be9a6555": "start()",
  9947  	"7d882097": "totalDeposits()",
  9948  	"f2fde38b": "transferOwnership(address)",
  9949  	"6d435421": "transferOwnership(address,address)",
  9950  	"3f4ba83a": "unpause()",
  9951  	"8cb5d700": "winnerOf(uint256)",
  9952  	"8d62d949": "wton()",
  9953  }
  9954  
  9955  // PowerTONBin is the compiled bytecode used for deploying new contracts.
  9956  var PowerTONBin = "0x60806040523480156200001157600080fd5b506040516200261238038062002612833981016040819052620000349162000264565b6200005a6200004b6001600160e01b036200010e16565b6001600160e01b036200011216565b60006200006f6001600160e01b036200010e16565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001805460ff60a01b1916905580620000d557600080fd5b600280546001600160a01b039485166001600160a01b0319918216179091556003805493909416921691909117909155600555620003bb565b3390565b6200012d8160006200016460201b620018301790919060201c565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b6200017982826001600160e01b03620001e116565b15620001bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b39062000354565b60405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b03821662000226576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001b39062000366565b506001600160a01b03811660009081526020839052604090205460ff165b92915050565b8051620002448162000396565b80516200024481620003b0565b6000806000606084860312156200027a57600080fd5b60006200028886866200024a565b93505060206200029b868287016200024a565b9250506040620002ae8682870162000257565b9150509250925092565b6000620002c7601f8362000378565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500815260200192915050565b60006200030260228362000378565b7f526f6c65733a206163636f756e7420697320746865207a65726f20616464726581527f7373000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b602080825281016200024481620002b8565b602080825281016200024481620002f3565b90815260200190565b60006001600160a01b03821662000244565b90565b620003a18162000381565b8114620003ad57600080fd5b50565b620003a18162000393565b61224780620003cb6000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80637657f20a1161011a5780638d62d949116100ad578063c2dba50e1161007c578063c2dba50e146103c4578063e1c7392a146103cc578063f2fde38b146103d4578063f7cb789a146103e7578063f850ffaa146103ef57610206565b80638d62d949146103a45780638da5cb5b146103ac5780638f32d59b146103b4578063be9a6555146103bc57610206565b80638456cb59116100e95780638456cb591461035e5780638a19c8bc146103665780638c65c81f1461036e5780638cb5d7001461039157610206565b80637657f20a146103285780637d8820971461033b578063819a93981461034357806382dc1ec41461034b57610206565b80634b816b671161019d5780636d4354211161016c5780636d435421146102e85780636ef8d66d146102fb5780636fb7f55814610303578063715018a614610318578063749aa2d91461032057610206565b80634b816b67146102b25780635c975abb146102ba5780635f112c68146102c257806364402c07146102d557610206565b80633f4ba83a116101d95780633f4ba83a14610271578063412c6d501461027957806341eb24bb1461028c57806346fbf68e1461029f57610206565b8063158ef93e1461020b5780631ac84690146102295780631c602a631461024957806338bf3cfa1461025c575b600080fd5b610213610402565b6040516102209190611fa2565b60405180910390f35b61023c610237366004611a01565b61040b565b60405161022091906120c1565b610213610257366004611acc565b610442565b61026f61026a366004611a01565b61049f565b005b61026f610522565b61026f610287366004611a61565b6105bf565b61026f61029a366004611a01565b610653565b6102136102ad366004611a01565b6106b2565b61023c6106c4565b6102136106c9565b61026f6102d0366004611a01565b6106da565b6102136102e3366004611acc565b610739565b61026f6102f6366004611a27565b610781565b61026f610807565b61030b610819565b6040516102209190611f6b565b61026f610828565b61026f610896565b61026f610336366004611a01565b6108c2565b61023c610908565b61023c61090e565b61026f610359366004611a01565b610913565b61026f610946565b61023c6109d3565b61038161037c366004611acc565b6109d9565b604051610220949392919061211f565b61030b61039f366004611acc565b610a18565b61030b610a36565b61030b610a45565b610213610a54565b61026f610a7a565b610213610b2d565b61026f610b3f565b61026f6103e2366004611a01565b610baa565b61023c610bd7565b61026f6103fd366004611a61565b610bdd565b60085460ff1681565b600061043c60405161041c90611f60565b604051809103902061042d84610c77565b6007919063ffffffff610c8316565b92915050565b600061044d82610739565b8015610478575060008281526006602052604090205442600160401b90910467ffffffffffffffff16105b801561043c5750506000908152600660205260409020600201546001600160a01b03161590565b6104a7610a54565b6104cc5760405162461bcd60e51b81526004016104c390612081565b60405180910390fd5b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050757600080fd5b505af115801561051b573d6000803e3d6000fd5b5050505050565b61052d6102ad610cd3565b6105495760405162461bcd60e51b81526004016104c390611ff1565b600154600160a01b900460ff166105725760405162461bcd60e51b81526004016104c390611fd1565b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6105a8610cd3565b6040516105b59190611f79565b60405180910390a1565b6105c7610b2d565b156105d4576105d4610cd7565b6002546001600160a01b031633146105eb57600080fd5b6105f58282610f09565b600954610608908263ffffffff610f7f16565b6009556040516001600160a01b038316907f7cb6ed9ab3c494e5dae6f6a137de115769e08b31ce667494edd37f75c84a1016906106469084906120c1565b60405180910390a2505050565b61065b610a54565b6106775760405162461bcd60e51b81526004016104c390612081565b806001600160a01b0316636ef8d66d6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050757600080fd5b600061043c818363ffffffff610fab16565b600881565b600154600160a01b900460ff165b90565b6106e2610a54565b6106fe5760405162461bcd60e51b81526004016104c390612081565b806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561050757600080fd5b60008181526006602052604081205467ffffffffffffffff161580159061043c575050600090815260066020526040902054600160401b900467ffffffffffffffff16151590565b610789610a54565b6107a55760405162461bcd60e51b81526004016104c390612081565b60405163f2fde38b60e01b81526001600160a01b0383169063f2fde38b906107d1908490600401611f6b565b600060405180830381600087803b1580156107eb57600080fd5b505af11580156107ff573d6000803e3d6000fd5b505050505050565b610817610812610cd3565b610ff3565b565b6002546001600160a01b031690565b610830610a54565b61084c5760405162461bcd60e51b81526004016104c390612081565b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600180546001600160a01b0319169055565b61089e610b2d565b6108ba5760405162461bcd60e51b81526004016104c390612031565b610817610cd7565b6108ca610a54565b6108e65760405162461bcd60e51b81526004016104c390612081565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60095490565b600a81565b61091e6102ad610cd3565b61093a5760405162461bcd60e51b81526004016104c390611ff1565b6109438161103b565b50565b6109516102ad610cd3565b61096d5760405162461bcd60e51b81526004016104c390611ff1565b600154600160a01b900460ff16156109975760405162461bcd60e51b81526004016104c390612041565b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586105a8610cd3565b60045490565b60066020526000908152604090208054600182015460029092015467ffffffffffffffff80831693600160401b9093041691906001600160a01b031684565b6000908152600660205260409020600201546001600160a01b031690565b6003546001600160a01b031690565b6001546001600160a01b031690565b6001546000906001600160a01b0316610a6b610cd3565b6001600160a01b031614905090565b610a82610a54565b610a9e5760405162461bcd60e51b81526004016104c390612081565b60045415610abe5760405162461bcd60e51b81526004016104c3906120b1565b60045460009081526006602052604090205467ffffffffffffffff16158015610b075750600454600090815260066020526040902054600160401b900467ffffffffffffffff16155b610b235760405162461bcd60e51b81526004016104c390612051565b6108176000611083565b6000610b3a600454610442565b905090565b610b47610a54565b610b635760405162461bcd60e51b81526004016104c390612081565b60085460ff1615610b7357600080fd5b610b9b604051610b8290611f60565b604051908190039020600790601063ffffffff6111c716565b6008805460ff19166001179055565b610bb2610a54565b610bce5760405162461bcd60e51b81526004016104c390612081565b61094381611252565b60055490565b610be5610b2d565b15610bf257610bf2610cd7565b6002546001600160a01b03163314610c0957600080fd5b6000610c1583836112d4565b600954909150610c2b908263ffffffff61134d16565b6009556040516001600160a01b038416907f2799180fb0f59973ce8643f2079ddedfb4c9c9c60cdd7d02c1c7798a379671d290610c699084906120c1565b60405180910390a250505050565b6001600160a01b031690565b6000828152602084815260408083208484526003810190925282205480610cad5760009250610cca565b816002018181548110610cbc57fe5b906000526020600020015492505b50509392505050565b3390565b600954610ce357610817565b6004546000818152600660205260408120600954909190610d07600019430161138f565b81610d0e57fe5b0690506000610d42610d3d604051610d2590611f60565b6040519081900390206007908563ffffffff6113d216565b6106d7565b90506001600160a01b038116610d6a5760405162461bcd60e51b81526004016104c390612001565b6002830180546001600160a01b0319166001600160a01b03838116919091179091556003546040516370a0823160e01b8152600092610e2b92600a92610e1f9260089216906370a0823190610dc3903090600401611f6b565b60206040518083038186803b158015610ddb57600080fd5b505afa158015610def573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e139190810190611aea565b9063ffffffff61149516565b9063ffffffff6114cf16565b90508084600101819055507fa49385eb61e4f439063d5c00de2ab7a1fff06ca35f6f06fb634d21a2e8ad3279858383604051610e69939291906120cf565b60405180910390a16004805460010190819055610e8590611083565b60035460405163e3b99e8560e01b81526001600160a01b039091169063e3b99e8590610eb79085908590600401611f87565b602060405180830381600087803b158015610ed157600080fd5b505af1158015610ee5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506107ff9190810190611aae565b6000610f1483610c77565b90506000610f4f83610f43604051610f2b90611f60565b6040519081900390206007908663ffffffff610c8316565b9063ffffffff610f7f16565b9050610f79604051610f6090611f60565b604051908190039020600790838563ffffffff61151116565b50505050565b600082820183811015610fa45760405162461bcd60e51b81526004016104c390612021565b9392505050565b60006001600160a01b038216610fd35760405162461bcd60e51b81526004016104c390612091565b506001600160a01b03166000908152602091909152604090205460ff1690565b61100460008263ffffffff6117e816565b6040516001600160a01b038216907fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e90600090a250565b61104c60008263ffffffff61183016565b6040516001600160a01b038216907f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f890600090a250565b8015806110dd5750600019810160009081526006602052604090205442600160401b90910467ffffffffffffffff161080156110dd575060001981016000908152600660205260409020600201546001600160a01b031615155b6110e657600080fd5b6000818152600660205260409020805467ffffffffffffffff1615801561111d57508054600160401b900467ffffffffffffffff16155b8015611134575060028101546001600160a01b0316155b61113d57600080fd5b60055481544291820167ffffffffffffffff818116600160401b026fffffffffffffffff00000000000000001991851667ffffffffffffffff1990941693909317169190911783556040517fe51113a62fc9e06008ca1c963fa05a240e64d51af7fdb2178c2a302cfcc5052f906111b9908690859085906120f7565b60405180910390a150505050565b60008281526020849052604090208054156111f45760405162461bcd60e51b81526004016104c3906120a1565b600182116112145760405162461bcd60e51b81526004016104c390611fc1565b8181556000611226600183018261198e565b506000611236600283018261198e565b5060020180546001810182556000918252602082200155505050565b6001600160a01b0381166112785760405162461bcd60e51b81526004016104c390612011565b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000806112e084610c77565b9050600061130b6040516112f390611f60565b6040519081900390206007908463ffffffff610c8316565b90506000611319828661187c565b905061134360405161132a90611f60565b604051908190039020600790838663ffffffff61151116565b9003949350505050565b6000610fa483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611898565b60008140806113b75760ff831660ff1943160192504383106113b357610100830392505b5081405b60095443808301600019909101400182029091020292915050565b60008281526020849052604081206002810180548391829182906113f257fe5b9060005260206000200154858161140557fe5b0690505b600283015483548302600101101561147a5760015b835481116114745760008184866000015402019050600085600201828154811061144457fe5b9060005260206000200154905080841061146257808403935061146a565b509250611474565b505060010161141e565b50611409565b50600090815260049091016020526040902054949350505050565b6000826114a45750600061043c565b828202828482816114b157fe5b0414610fa45760405162461bcd60e51b81526004016104c390612071565b6000610fa483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118c4565b60008381526020858152604080832084845260038101909252909120548061169c57831561169757600182015461160f57506002810180546001808201835560009283526020909220810185905590811480159061157b5750815460001982018161157857fe5b06155b1561160a578154600090828161158d57fe5b04600081815260048501602052604090205460028501805492935090916001850191908190859081106115bc57fe5b60009182526020808320909101548354600181018555938352818320909301929092559384526004860180825260408086208690558486526003880183528086208490559285529052909120555b611664565b600182018054600019810190811061162357fe5b60009182526020909120015460018301805491925061164690600019830161198e565b508382600201828154811061165757fe5b6000918252602090912001555b600083815260038301602090815260408083208490558383526004850190915290208390556116978686836001886118fb565b6107ff565b8361172d5760008260020182815481106116b257fe5b9060005260206000200154905060008360020183815481106116d057fe5b600091825260208083209091019290925560018086018054918201815582528282200184905585815260038501825260408082208290558482526004860190925290812081905561172790889088908590856118fb565b506107ff565b81600201818154811061173c57fe5b906000526020600020015484146107ff5760008483600201838154811061175f57fe5b906000526020600020015411159050600081611796578584600201848154811061178557fe5b9060005260206000200154036117b3565b8360020183815481106117a557fe5b906000526020600020015486035b9050858460020184815481106117c557fe5b6000918252602090912001556117de88888585856118fb565b5050505050505050565b6117f28282610fab565b61180e5760405162461bcd60e51b81526004016104c390612061565b6001600160a01b0316600090815260209190915260409020805460ff19169055565b61183a8282610fab565b156118575760405162461bcd60e51b81526004016104c390611fe1565b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60008183111561188f575080820361043c565b50600092915050565b600081848411156118bc5760405162461bcd60e51b81526004016104c39190611fb0565b505050900390565b600081836118e55760405162461bcd60e51b81526004016104c39190611fb0565b5060008385816118f157fe5b0495945050505050565b6000848152602086905260409020835b801561198557815460001982018161191f57fe5b04905083611948578282600201828154811061193757fe5b906000526020600020015403611965565b8282600201828154811061195857fe5b9060005260206000200154015b82600201828154811061197457fe5b60009182526020909120015561190b565b50505050505050565b8154818355818111156119b2576000838152602090206119b29181019083016119b7565b505050565b6106d791905b808211156119d157600081556001016119bd565b5090565b803561043c816121de565b805161043c816121f2565b803561043c816121fb565b805161043c816121fb565b600060208284031215611a1357600080fd5b6000611a1f84846119d5565b949350505050565b60008060408385031215611a3a57600080fd5b6000611a4685856119d5565b9250506020611a57858286016119d5565b9150509250929050565b600080600060608486031215611a7657600080fd5b6000611a8286866119d5565b9350506020611a93868287016119d5565b9250506040611aa4868287016119eb565b9150509250925092565b600060208284031215611ac057600080fd5b6000611a1f84846119e0565b600060208284031215611ade57600080fd5b6000611a1f84846119eb565b600060208284031215611afc57600080fd5b6000611a1f84846119f6565b611b118161218c565b82525050565b611b118161216f565b611b118161217a565b6000611b348261215d565b611b3e8185612161565b9350611b4e8185602086016121a8565b611b57816121d4565b9093019392505050565b6000611b6e601b83612161565b7f4b206d7573742062652067726561746572207468616e206f6e652e0000000000815260200192915050565b6000611ba7601483612161565b7314185d5cd8589b194e881b9bdd081c185d5cd95960621b815260200192915050565b6000611bd7601f83612161565b7f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500815260200192915050565b6000611c10603083612161565b7f506175736572526f6c653a2063616c6c657220646f6573206e6f74206861766581526f207468652050617573657220726f6c6560801b602082015260400192915050565b6000611c62601383612161565b722837bbb2b92a27a71d103737903bb4b73732b960691b815260200192915050565b6000611c91602683612161565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015260400192915050565b6000611cd9601b83612161565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000611d12600e8361216a565b6d706f7765722d62616c616e63657360901b8152600e0192915050565b6000611d3c601c83612161565b7f506f776572544f4e3a20726f756e64206e6f742066696e697368656400000000815260200192915050565b6000611d75601083612161565b6f14185d5cd8589b194e881c185d5cd95960821b815260200192915050565b6000611da1601f83612161565b7f506f776572544f4e3a20726f756e6420616c7265616479207374617274656400815260200192915050565b6000611dda602183612161565b7f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c8152606560f81b602082015260400192915050565b6000611e1d602183612161565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f8152607760f81b602082015260400192915050565b6000611e60602083612161565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572815260200192915050565b6000611e99602283612161565b7f526f6c65733a206163636f756e7420697320746865207a65726f206164647265815261737360f01b602082015260400192915050565b6000611edd601483612161565b732a3932b29030b63932b0b23c9032bc34b9ba399760611b815260200192915050565b6000611f0d602383612161565b7f506f776572544f4e3a2063757272656e7420726f756e64206973206e6f74207a81526265726f60e81b602082015260400192915050565b611b11816106d7565b611b118161219d565b611b118161217f565b600061043c82611d05565b6020810161043c8284611b17565b6020810161043c8284611b08565b60408101611f958285611b17565b610fa46020830184611f45565b6020810161043c8284611b20565b60208082528101610fa48184611b29565b6020808252810161043c81611b61565b6020808252810161043c81611b9a565b6020808252810161043c81611bca565b6020808252810161043c81611c03565b6020808252810161043c81611c55565b6020808252810161043c81611c84565b6020808252810161043c81611ccc565b6020808252810161043c81611d2f565b6020808252810161043c81611d68565b6020808252810161043c81611d94565b6020808252810161043c81611dcd565b6020808252810161043c81611e10565b6020808252810161043c81611e53565b6020808252810161043c81611e8c565b6020808252810161043c81611ed0565b6020808252810161043c81611f00565b6020810161043c8284611f45565b606081016120dd8286611f45565b6120ea6020830185611b17565b611a1f6040830184611f45565b606081016121058286611f45565b6121126020830185611f4e565b611a1f6040830184611f4e565b6080810161212d8287611f57565b61213a6020830186611f57565b6121476040830185611f45565b6121546060830184611b17565b95945050505050565b5190565b90815260200190565b919050565b600061043c82610c77565b151590565b67ffffffffffffffff1690565b600061043c82600061043c8261216f565b600061043c8261217f565b60005b838110156121c35781810151838201526020016121ab565b83811115610f795750506000910152565b601f01601f191690565b6121e78161216f565b811461094357600080fd5b6121e78161217a565b6121e7816106d756fea365627a7a72315820431358fe606368bdafd6d39f1d938c4445891edd23e050d87566ff2b78eb90926c6578706572696d656e74616cf564736f6c634300050c0040"
  9957  
  9958  // DeployPowerTON deploys a new Ethereum contract, binding an instance of PowerTON to it.
  9959  func DeployPowerTON(auth *bind.TransactOpts, backend bind.ContractBackend, seigManager common.Address, wton common.Address, roundDuration *big.Int) (common.Address, *types.Transaction, *PowerTON, error) {
  9960  	parsed, err := abi.JSON(strings.NewReader(PowerTONABI))
  9961  	if err != nil {
  9962  		return common.Address{}, nil, nil, err
  9963  	}
  9964  
  9965  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PowerTONBin), backend, seigManager, wton, roundDuration)
  9966  	if err != nil {
  9967  		return common.Address{}, nil, nil, err
  9968  	}
  9969  	return address, tx, &PowerTON{PowerTONCaller: PowerTONCaller{contract: contract}, PowerTONTransactor: PowerTONTransactor{contract: contract}, PowerTONFilterer: PowerTONFilterer{contract: contract}}, nil
  9970  }
  9971  
  9972  // PowerTON is an auto generated Go binding around an Ethereum contract.
  9973  type PowerTON struct {
  9974  	PowerTONCaller     // Read-only binding to the contract
  9975  	PowerTONTransactor // Write-only binding to the contract
  9976  	PowerTONFilterer   // Log filterer for contract events
  9977  }
  9978  
  9979  // PowerTONCaller is an auto generated read-only Go binding around an Ethereum contract.
  9980  type PowerTONCaller struct {
  9981  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9982  }
  9983  
  9984  // PowerTONTransactor is an auto generated write-only Go binding around an Ethereum contract.
  9985  type PowerTONTransactor struct {
  9986  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9987  }
  9988  
  9989  // PowerTONFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
  9990  type PowerTONFilterer struct {
  9991  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9992  }
  9993  
  9994  // PowerTONSession is an auto generated Go binding around an Ethereum contract,
  9995  // with pre-set call and transact options.
  9996  type PowerTONSession struct {
  9997  	Contract     *PowerTON         // Generic contract binding to set the session for
  9998  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  9999  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10000  }
 10001  
 10002  // PowerTONCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 10003  // with pre-set call options.
 10004  type PowerTONCallerSession struct {
 10005  	Contract *PowerTONCaller // Generic contract caller binding to set the session for
 10006  	CallOpts bind.CallOpts   // Call options to use throughout this session
 10007  }
 10008  
 10009  // PowerTONTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 10010  // with pre-set transact options.
 10011  type PowerTONTransactorSession struct {
 10012  	Contract     *PowerTONTransactor // Generic contract transactor binding to set the session for
 10013  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 10014  }
 10015  
 10016  // PowerTONRaw is an auto generated low-level Go binding around an Ethereum contract.
 10017  type PowerTONRaw struct {
 10018  	Contract *PowerTON // Generic contract binding to access the raw methods on
 10019  }
 10020  
 10021  // PowerTONCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 10022  type PowerTONCallerRaw struct {
 10023  	Contract *PowerTONCaller // Generic read-only contract binding to access the raw methods on
 10024  }
 10025  
 10026  // PowerTONTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 10027  type PowerTONTransactorRaw struct {
 10028  	Contract *PowerTONTransactor // Generic write-only contract binding to access the raw methods on
 10029  }
 10030  
 10031  // NewPowerTON creates a new instance of PowerTON, bound to a specific deployed contract.
 10032  func NewPowerTON(address common.Address, backend bind.ContractBackend) (*PowerTON, error) {
 10033  	contract, err := bindPowerTON(address, backend, backend, backend)
 10034  	if err != nil {
 10035  		return nil, err
 10036  	}
 10037  	return &PowerTON{PowerTONCaller: PowerTONCaller{contract: contract}, PowerTONTransactor: PowerTONTransactor{contract: contract}, PowerTONFilterer: PowerTONFilterer{contract: contract}}, nil
 10038  }
 10039  
 10040  // NewPowerTONCaller creates a new read-only instance of PowerTON, bound to a specific deployed contract.
 10041  func NewPowerTONCaller(address common.Address, caller bind.ContractCaller) (*PowerTONCaller, error) {
 10042  	contract, err := bindPowerTON(address, caller, nil, nil)
 10043  	if err != nil {
 10044  		return nil, err
 10045  	}
 10046  	return &PowerTONCaller{contract: contract}, nil
 10047  }
 10048  
 10049  // NewPowerTONTransactor creates a new write-only instance of PowerTON, bound to a specific deployed contract.
 10050  func NewPowerTONTransactor(address common.Address, transactor bind.ContractTransactor) (*PowerTONTransactor, error) {
 10051  	contract, err := bindPowerTON(address, nil, transactor, nil)
 10052  	if err != nil {
 10053  		return nil, err
 10054  	}
 10055  	return &PowerTONTransactor{contract: contract}, nil
 10056  }
 10057  
 10058  // NewPowerTONFilterer creates a new log filterer instance of PowerTON, bound to a specific deployed contract.
 10059  func NewPowerTONFilterer(address common.Address, filterer bind.ContractFilterer) (*PowerTONFilterer, error) {
 10060  	contract, err := bindPowerTON(address, nil, nil, filterer)
 10061  	if err != nil {
 10062  		return nil, err
 10063  	}
 10064  	return &PowerTONFilterer{contract: contract}, nil
 10065  }
 10066  
 10067  // bindPowerTON binds a generic wrapper to an already deployed contract.
 10068  func bindPowerTON(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 10069  	parsed, err := abi.JSON(strings.NewReader(PowerTONABI))
 10070  	if err != nil {
 10071  		return nil, err
 10072  	}
 10073  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 10074  }
 10075  
 10076  // Call invokes the (constant) contract method with params as input values and
 10077  // sets the output to result. The result type might be a single field for simple
 10078  // returns, a slice of interfaces for anonymous returns and a struct for named
 10079  // returns.
 10080  func (_PowerTON *PowerTONRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10081  	return _PowerTON.Contract.PowerTONCaller.contract.Call(opts, result, method, params...)
 10082  }
 10083  
 10084  // Transfer initiates a plain transaction to move funds to the contract, calling
 10085  // its default method if one is available.
 10086  func (_PowerTON *PowerTONRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10087  	return _PowerTON.Contract.PowerTONTransactor.contract.Transfer(opts)
 10088  }
 10089  
 10090  // Transact invokes the (paid) contract method with params as input values.
 10091  func (_PowerTON *PowerTONRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10092  	return _PowerTON.Contract.PowerTONTransactor.contract.Transact(opts, method, params...)
 10093  }
 10094  
 10095  // Call invokes the (constant) contract method with params as input values and
 10096  // sets the output to result. The result type might be a single field for simple
 10097  // returns, a slice of interfaces for anonymous returns and a struct for named
 10098  // returns.
 10099  func (_PowerTON *PowerTONCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10100  	return _PowerTON.Contract.contract.Call(opts, result, method, params...)
 10101  }
 10102  
 10103  // Transfer initiates a plain transaction to move funds to the contract, calling
 10104  // its default method if one is available.
 10105  func (_PowerTON *PowerTONTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10106  	return _PowerTON.Contract.contract.Transfer(opts)
 10107  }
 10108  
 10109  // Transact invokes the (paid) contract method with params as input values.
 10110  func (_PowerTON *PowerTONTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10111  	return _PowerTON.Contract.contract.Transact(opts, method, params...)
 10112  }
 10113  
 10114  // REWARDDENOMINATOR is a free data retrieval call binding the contract method 0x819a9398.
 10115  //
 10116  // Solidity: function REWARD_DENOMINATOR() constant returns(uint256)
 10117  func (_PowerTON *PowerTONCaller) REWARDDENOMINATOR(opts *bind.CallOpts) (*big.Int, error) {
 10118  	var (
 10119  		ret0 = new(*big.Int)
 10120  	)
 10121  	out := ret0
 10122  	err := _PowerTON.contract.Call(opts, out, "REWARD_DENOMINATOR")
 10123  	return *ret0, err
 10124  }
 10125  
 10126  // REWARDDENOMINATOR is a free data retrieval call binding the contract method 0x819a9398.
 10127  //
 10128  // Solidity: function REWARD_DENOMINATOR() constant returns(uint256)
 10129  func (_PowerTON *PowerTONSession) REWARDDENOMINATOR() (*big.Int, error) {
 10130  	return _PowerTON.Contract.REWARDDENOMINATOR(&_PowerTON.CallOpts)
 10131  }
 10132  
 10133  // REWARDDENOMINATOR is a free data retrieval call binding the contract method 0x819a9398.
 10134  //
 10135  // Solidity: function REWARD_DENOMINATOR() constant returns(uint256)
 10136  func (_PowerTON *PowerTONCallerSession) REWARDDENOMINATOR() (*big.Int, error) {
 10137  	return _PowerTON.Contract.REWARDDENOMINATOR(&_PowerTON.CallOpts)
 10138  }
 10139  
 10140  // REWARDNUMERATOR is a free data retrieval call binding the contract method 0x4b816b67.
 10141  //
 10142  // Solidity: function REWARD_NUMERATOR() constant returns(uint256)
 10143  func (_PowerTON *PowerTONCaller) REWARDNUMERATOR(opts *bind.CallOpts) (*big.Int, error) {
 10144  	var (
 10145  		ret0 = new(*big.Int)
 10146  	)
 10147  	out := ret0
 10148  	err := _PowerTON.contract.Call(opts, out, "REWARD_NUMERATOR")
 10149  	return *ret0, err
 10150  }
 10151  
 10152  // REWARDNUMERATOR is a free data retrieval call binding the contract method 0x4b816b67.
 10153  //
 10154  // Solidity: function REWARD_NUMERATOR() constant returns(uint256)
 10155  func (_PowerTON *PowerTONSession) REWARDNUMERATOR() (*big.Int, error) {
 10156  	return _PowerTON.Contract.REWARDNUMERATOR(&_PowerTON.CallOpts)
 10157  }
 10158  
 10159  // REWARDNUMERATOR is a free data retrieval call binding the contract method 0x4b816b67.
 10160  //
 10161  // Solidity: function REWARD_NUMERATOR() constant returns(uint256)
 10162  func (_PowerTON *PowerTONCallerSession) REWARDNUMERATOR() (*big.Int, error) {
 10163  	return _PowerTON.Contract.REWARDNUMERATOR(&_PowerTON.CallOpts)
 10164  }
 10165  
 10166  // CurrentRound is a free data retrieval call binding the contract method 0x8a19c8bc.
 10167  //
 10168  // Solidity: function currentRound() constant returns(uint256)
 10169  func (_PowerTON *PowerTONCaller) CurrentRound(opts *bind.CallOpts) (*big.Int, error) {
 10170  	var (
 10171  		ret0 = new(*big.Int)
 10172  	)
 10173  	out := ret0
 10174  	err := _PowerTON.contract.Call(opts, out, "currentRound")
 10175  	return *ret0, err
 10176  }
 10177  
 10178  // CurrentRound is a free data retrieval call binding the contract method 0x8a19c8bc.
 10179  //
 10180  // Solidity: function currentRound() constant returns(uint256)
 10181  func (_PowerTON *PowerTONSession) CurrentRound() (*big.Int, error) {
 10182  	return _PowerTON.Contract.CurrentRound(&_PowerTON.CallOpts)
 10183  }
 10184  
 10185  // CurrentRound is a free data retrieval call binding the contract method 0x8a19c8bc.
 10186  //
 10187  // Solidity: function currentRound() constant returns(uint256)
 10188  func (_PowerTON *PowerTONCallerSession) CurrentRound() (*big.Int, error) {
 10189  	return _PowerTON.Contract.CurrentRound(&_PowerTON.CallOpts)
 10190  }
 10191  
 10192  // CurrentRoundFinished is a free data retrieval call binding the contract method 0xc2dba50e.
 10193  //
 10194  // Solidity: function currentRoundFinished() constant returns(bool)
 10195  func (_PowerTON *PowerTONCaller) CurrentRoundFinished(opts *bind.CallOpts) (bool, error) {
 10196  	var (
 10197  		ret0 = new(bool)
 10198  	)
 10199  	out := ret0
 10200  	err := _PowerTON.contract.Call(opts, out, "currentRoundFinished")
 10201  	return *ret0, err
 10202  }
 10203  
 10204  // CurrentRoundFinished is a free data retrieval call binding the contract method 0xc2dba50e.
 10205  //
 10206  // Solidity: function currentRoundFinished() constant returns(bool)
 10207  func (_PowerTON *PowerTONSession) CurrentRoundFinished() (bool, error) {
 10208  	return _PowerTON.Contract.CurrentRoundFinished(&_PowerTON.CallOpts)
 10209  }
 10210  
 10211  // CurrentRoundFinished is a free data retrieval call binding the contract method 0xc2dba50e.
 10212  //
 10213  // Solidity: function currentRoundFinished() constant returns(bool)
 10214  func (_PowerTON *PowerTONCallerSession) CurrentRoundFinished() (bool, error) {
 10215  	return _PowerTON.Contract.CurrentRoundFinished(&_PowerTON.CallOpts)
 10216  }
 10217  
 10218  // Initialized is a free data retrieval call binding the contract method 0x158ef93e.
 10219  //
 10220  // Solidity: function initialized() constant returns(bool)
 10221  func (_PowerTON *PowerTONCaller) Initialized(opts *bind.CallOpts) (bool, error) {
 10222  	var (
 10223  		ret0 = new(bool)
 10224  	)
 10225  	out := ret0
 10226  	err := _PowerTON.contract.Call(opts, out, "initialized")
 10227  	return *ret0, err
 10228  }
 10229  
 10230  // Initialized is a free data retrieval call binding the contract method 0x158ef93e.
 10231  //
 10232  // Solidity: function initialized() constant returns(bool)
 10233  func (_PowerTON *PowerTONSession) Initialized() (bool, error) {
 10234  	return _PowerTON.Contract.Initialized(&_PowerTON.CallOpts)
 10235  }
 10236  
 10237  // Initialized is a free data retrieval call binding the contract method 0x158ef93e.
 10238  //
 10239  // Solidity: function initialized() constant returns(bool)
 10240  func (_PowerTON *PowerTONCallerSession) Initialized() (bool, error) {
 10241  	return _PowerTON.Contract.Initialized(&_PowerTON.CallOpts)
 10242  }
 10243  
 10244  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 10245  //
 10246  // Solidity: function isOwner() constant returns(bool)
 10247  func (_PowerTON *PowerTONCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 10248  	var (
 10249  		ret0 = new(bool)
 10250  	)
 10251  	out := ret0
 10252  	err := _PowerTON.contract.Call(opts, out, "isOwner")
 10253  	return *ret0, err
 10254  }
 10255  
 10256  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 10257  //
 10258  // Solidity: function isOwner() constant returns(bool)
 10259  func (_PowerTON *PowerTONSession) IsOwner() (bool, error) {
 10260  	return _PowerTON.Contract.IsOwner(&_PowerTON.CallOpts)
 10261  }
 10262  
 10263  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 10264  //
 10265  // Solidity: function isOwner() constant returns(bool)
 10266  func (_PowerTON *PowerTONCallerSession) IsOwner() (bool, error) {
 10267  	return _PowerTON.Contract.IsOwner(&_PowerTON.CallOpts)
 10268  }
 10269  
 10270  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
 10271  //
 10272  // Solidity: function isPauser(address account) constant returns(bool)
 10273  func (_PowerTON *PowerTONCaller) IsPauser(opts *bind.CallOpts, account common.Address) (bool, error) {
 10274  	var (
 10275  		ret0 = new(bool)
 10276  	)
 10277  	out := ret0
 10278  	err := _PowerTON.contract.Call(opts, out, "isPauser", account)
 10279  	return *ret0, err
 10280  }
 10281  
 10282  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
 10283  //
 10284  // Solidity: function isPauser(address account) constant returns(bool)
 10285  func (_PowerTON *PowerTONSession) IsPauser(account common.Address) (bool, error) {
 10286  	return _PowerTON.Contract.IsPauser(&_PowerTON.CallOpts, account)
 10287  }
 10288  
 10289  // IsPauser is a free data retrieval call binding the contract method 0x46fbf68e.
 10290  //
 10291  // Solidity: function isPauser(address account) constant returns(bool)
 10292  func (_PowerTON *PowerTONCallerSession) IsPauser(account common.Address) (bool, error) {
 10293  	return _PowerTON.Contract.IsPauser(&_PowerTON.CallOpts, account)
 10294  }
 10295  
 10296  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 10297  //
 10298  // Solidity: function owner() constant returns(address)
 10299  func (_PowerTON *PowerTONCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 10300  	var (
 10301  		ret0 = new(common.Address)
 10302  	)
 10303  	out := ret0
 10304  	err := _PowerTON.contract.Call(opts, out, "owner")
 10305  	return *ret0, err
 10306  }
 10307  
 10308  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 10309  //
 10310  // Solidity: function owner() constant returns(address)
 10311  func (_PowerTON *PowerTONSession) Owner() (common.Address, error) {
 10312  	return _PowerTON.Contract.Owner(&_PowerTON.CallOpts)
 10313  }
 10314  
 10315  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 10316  //
 10317  // Solidity: function owner() constant returns(address)
 10318  func (_PowerTON *PowerTONCallerSession) Owner() (common.Address, error) {
 10319  	return _PowerTON.Contract.Owner(&_PowerTON.CallOpts)
 10320  }
 10321  
 10322  // Paused is a free data retrieval call binding the contract method 0x5c975abb.
 10323  //
 10324  // Solidity: function paused() constant returns(bool)
 10325  func (_PowerTON *PowerTONCaller) Paused(opts *bind.CallOpts) (bool, error) {
 10326  	var (
 10327  		ret0 = new(bool)
 10328  	)
 10329  	out := ret0
 10330  	err := _PowerTON.contract.Call(opts, out, "paused")
 10331  	return *ret0, err
 10332  }
 10333  
 10334  // Paused is a free data retrieval call binding the contract method 0x5c975abb.
 10335  //
 10336  // Solidity: function paused() constant returns(bool)
 10337  func (_PowerTON *PowerTONSession) Paused() (bool, error) {
 10338  	return _PowerTON.Contract.Paused(&_PowerTON.CallOpts)
 10339  }
 10340  
 10341  // Paused is a free data retrieval call binding the contract method 0x5c975abb.
 10342  //
 10343  // Solidity: function paused() constant returns(bool)
 10344  func (_PowerTON *PowerTONCallerSession) Paused() (bool, error) {
 10345  	return _PowerTON.Contract.Paused(&_PowerTON.CallOpts)
 10346  }
 10347  
 10348  // PowerOf is a free data retrieval call binding the contract method 0x1ac84690.
 10349  //
 10350  // Solidity: function powerOf(address account) constant returns(uint256)
 10351  func (_PowerTON *PowerTONCaller) PowerOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 10352  	var (
 10353  		ret0 = new(*big.Int)
 10354  	)
 10355  	out := ret0
 10356  	err := _PowerTON.contract.Call(opts, out, "powerOf", account)
 10357  	return *ret0, err
 10358  }
 10359  
 10360  // PowerOf is a free data retrieval call binding the contract method 0x1ac84690.
 10361  //
 10362  // Solidity: function powerOf(address account) constant returns(uint256)
 10363  func (_PowerTON *PowerTONSession) PowerOf(account common.Address) (*big.Int, error) {
 10364  	return _PowerTON.Contract.PowerOf(&_PowerTON.CallOpts, account)
 10365  }
 10366  
 10367  // PowerOf is a free data retrieval call binding the contract method 0x1ac84690.
 10368  //
 10369  // Solidity: function powerOf(address account) constant returns(uint256)
 10370  func (_PowerTON *PowerTONCallerSession) PowerOf(account common.Address) (*big.Int, error) {
 10371  	return _PowerTON.Contract.PowerOf(&_PowerTON.CallOpts, account)
 10372  }
 10373  
 10374  // RoundDuration is a free data retrieval call binding the contract method 0xf7cb789a.
 10375  //
 10376  // Solidity: function roundDuration() constant returns(uint256)
 10377  func (_PowerTON *PowerTONCaller) RoundDuration(opts *bind.CallOpts) (*big.Int, error) {
 10378  	var (
 10379  		ret0 = new(*big.Int)
 10380  	)
 10381  	out := ret0
 10382  	err := _PowerTON.contract.Call(opts, out, "roundDuration")
 10383  	return *ret0, err
 10384  }
 10385  
 10386  // RoundDuration is a free data retrieval call binding the contract method 0xf7cb789a.
 10387  //
 10388  // Solidity: function roundDuration() constant returns(uint256)
 10389  func (_PowerTON *PowerTONSession) RoundDuration() (*big.Int, error) {
 10390  	return _PowerTON.Contract.RoundDuration(&_PowerTON.CallOpts)
 10391  }
 10392  
 10393  // RoundDuration is a free data retrieval call binding the contract method 0xf7cb789a.
 10394  //
 10395  // Solidity: function roundDuration() constant returns(uint256)
 10396  func (_PowerTON *PowerTONCallerSession) RoundDuration() (*big.Int, error) {
 10397  	return _PowerTON.Contract.RoundDuration(&_PowerTON.CallOpts)
 10398  }
 10399  
 10400  // RoundFinished is a free data retrieval call binding the contract method 0x1c602a63.
 10401  //
 10402  // Solidity: function roundFinished(uint256 round) constant returns(bool)
 10403  func (_PowerTON *PowerTONCaller) RoundFinished(opts *bind.CallOpts, round *big.Int) (bool, error) {
 10404  	var (
 10405  		ret0 = new(bool)
 10406  	)
 10407  	out := ret0
 10408  	err := _PowerTON.contract.Call(opts, out, "roundFinished", round)
 10409  	return *ret0, err
 10410  }
 10411  
 10412  // RoundFinished is a free data retrieval call binding the contract method 0x1c602a63.
 10413  //
 10414  // Solidity: function roundFinished(uint256 round) constant returns(bool)
 10415  func (_PowerTON *PowerTONSession) RoundFinished(round *big.Int) (bool, error) {
 10416  	return _PowerTON.Contract.RoundFinished(&_PowerTON.CallOpts, round)
 10417  }
 10418  
 10419  // RoundFinished is a free data retrieval call binding the contract method 0x1c602a63.
 10420  //
 10421  // Solidity: function roundFinished(uint256 round) constant returns(bool)
 10422  func (_PowerTON *PowerTONCallerSession) RoundFinished(round *big.Int) (bool, error) {
 10423  	return _PowerTON.Contract.RoundFinished(&_PowerTON.CallOpts, round)
 10424  }
 10425  
 10426  // RoundStarted is a free data retrieval call binding the contract method 0x64402c07.
 10427  //
 10428  // Solidity: function roundStarted(uint256 round) constant returns(bool)
 10429  func (_PowerTON *PowerTONCaller) RoundStarted(opts *bind.CallOpts, round *big.Int) (bool, error) {
 10430  	var (
 10431  		ret0 = new(bool)
 10432  	)
 10433  	out := ret0
 10434  	err := _PowerTON.contract.Call(opts, out, "roundStarted", round)
 10435  	return *ret0, err
 10436  }
 10437  
 10438  // RoundStarted is a free data retrieval call binding the contract method 0x64402c07.
 10439  //
 10440  // Solidity: function roundStarted(uint256 round) constant returns(bool)
 10441  func (_PowerTON *PowerTONSession) RoundStarted(round *big.Int) (bool, error) {
 10442  	return _PowerTON.Contract.RoundStarted(&_PowerTON.CallOpts, round)
 10443  }
 10444  
 10445  // RoundStarted is a free data retrieval call binding the contract method 0x64402c07.
 10446  //
 10447  // Solidity: function roundStarted(uint256 round) constant returns(bool)
 10448  func (_PowerTON *PowerTONCallerSession) RoundStarted(round *big.Int) (bool, error) {
 10449  	return _PowerTON.Contract.RoundStarted(&_PowerTON.CallOpts, round)
 10450  }
 10451  
 10452  // Rounds is a free data retrieval call binding the contract method 0x8c65c81f.
 10453  //
 10454  // Solidity: function rounds(uint256 ) constant returns(uint64 startTime, uint64 endTime, uint256 reward, address winner)
 10455  func (_PowerTON *PowerTONCaller) Rounds(opts *bind.CallOpts, arg0 *big.Int) (struct {
 10456  	StartTime uint64
 10457  	EndTime   uint64
 10458  	Reward    *big.Int
 10459  	Winner    common.Address
 10460  }, error) {
 10461  	ret := new(struct {
 10462  		StartTime uint64
 10463  		EndTime   uint64
 10464  		Reward    *big.Int
 10465  		Winner    common.Address
 10466  	})
 10467  	out := ret
 10468  	err := _PowerTON.contract.Call(opts, out, "rounds", arg0)
 10469  	return *ret, err
 10470  }
 10471  
 10472  // Rounds is a free data retrieval call binding the contract method 0x8c65c81f.
 10473  //
 10474  // Solidity: function rounds(uint256 ) constant returns(uint64 startTime, uint64 endTime, uint256 reward, address winner)
 10475  func (_PowerTON *PowerTONSession) Rounds(arg0 *big.Int) (struct {
 10476  	StartTime uint64
 10477  	EndTime   uint64
 10478  	Reward    *big.Int
 10479  	Winner    common.Address
 10480  }, error) {
 10481  	return _PowerTON.Contract.Rounds(&_PowerTON.CallOpts, arg0)
 10482  }
 10483  
 10484  // Rounds is a free data retrieval call binding the contract method 0x8c65c81f.
 10485  //
 10486  // Solidity: function rounds(uint256 ) constant returns(uint64 startTime, uint64 endTime, uint256 reward, address winner)
 10487  func (_PowerTON *PowerTONCallerSession) Rounds(arg0 *big.Int) (struct {
 10488  	StartTime uint64
 10489  	EndTime   uint64
 10490  	Reward    *big.Int
 10491  	Winner    common.Address
 10492  }, error) {
 10493  	return _PowerTON.Contract.Rounds(&_PowerTON.CallOpts, arg0)
 10494  }
 10495  
 10496  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 10497  //
 10498  // Solidity: function seigManager() constant returns(address)
 10499  func (_PowerTON *PowerTONCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
 10500  	var (
 10501  		ret0 = new(common.Address)
 10502  	)
 10503  	out := ret0
 10504  	err := _PowerTON.contract.Call(opts, out, "seigManager")
 10505  	return *ret0, err
 10506  }
 10507  
 10508  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 10509  //
 10510  // Solidity: function seigManager() constant returns(address)
 10511  func (_PowerTON *PowerTONSession) SeigManager() (common.Address, error) {
 10512  	return _PowerTON.Contract.SeigManager(&_PowerTON.CallOpts)
 10513  }
 10514  
 10515  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 10516  //
 10517  // Solidity: function seigManager() constant returns(address)
 10518  func (_PowerTON *PowerTONCallerSession) SeigManager() (common.Address, error) {
 10519  	return _PowerTON.Contract.SeigManager(&_PowerTON.CallOpts)
 10520  }
 10521  
 10522  // TotalDeposits is a free data retrieval call binding the contract method 0x7d882097.
 10523  //
 10524  // Solidity: function totalDeposits() constant returns(uint256)
 10525  func (_PowerTON *PowerTONCaller) TotalDeposits(opts *bind.CallOpts) (*big.Int, error) {
 10526  	var (
 10527  		ret0 = new(*big.Int)
 10528  	)
 10529  	out := ret0
 10530  	err := _PowerTON.contract.Call(opts, out, "totalDeposits")
 10531  	return *ret0, err
 10532  }
 10533  
 10534  // TotalDeposits is a free data retrieval call binding the contract method 0x7d882097.
 10535  //
 10536  // Solidity: function totalDeposits() constant returns(uint256)
 10537  func (_PowerTON *PowerTONSession) TotalDeposits() (*big.Int, error) {
 10538  	return _PowerTON.Contract.TotalDeposits(&_PowerTON.CallOpts)
 10539  }
 10540  
 10541  // TotalDeposits is a free data retrieval call binding the contract method 0x7d882097.
 10542  //
 10543  // Solidity: function totalDeposits() constant returns(uint256)
 10544  func (_PowerTON *PowerTONCallerSession) TotalDeposits() (*big.Int, error) {
 10545  	return _PowerTON.Contract.TotalDeposits(&_PowerTON.CallOpts)
 10546  }
 10547  
 10548  // WinnerOf is a free data retrieval call binding the contract method 0x8cb5d700.
 10549  //
 10550  // Solidity: function winnerOf(uint256 round) constant returns(address)
 10551  func (_PowerTON *PowerTONCaller) WinnerOf(opts *bind.CallOpts, round *big.Int) (common.Address, error) {
 10552  	var (
 10553  		ret0 = new(common.Address)
 10554  	)
 10555  	out := ret0
 10556  	err := _PowerTON.contract.Call(opts, out, "winnerOf", round)
 10557  	return *ret0, err
 10558  }
 10559  
 10560  // WinnerOf is a free data retrieval call binding the contract method 0x8cb5d700.
 10561  //
 10562  // Solidity: function winnerOf(uint256 round) constant returns(address)
 10563  func (_PowerTON *PowerTONSession) WinnerOf(round *big.Int) (common.Address, error) {
 10564  	return _PowerTON.Contract.WinnerOf(&_PowerTON.CallOpts, round)
 10565  }
 10566  
 10567  // WinnerOf is a free data retrieval call binding the contract method 0x8cb5d700.
 10568  //
 10569  // Solidity: function winnerOf(uint256 round) constant returns(address)
 10570  func (_PowerTON *PowerTONCallerSession) WinnerOf(round *big.Int) (common.Address, error) {
 10571  	return _PowerTON.Contract.WinnerOf(&_PowerTON.CallOpts, round)
 10572  }
 10573  
 10574  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 10575  //
 10576  // Solidity: function wton() constant returns(address)
 10577  func (_PowerTON *PowerTONCaller) Wton(opts *bind.CallOpts) (common.Address, error) {
 10578  	var (
 10579  		ret0 = new(common.Address)
 10580  	)
 10581  	out := ret0
 10582  	err := _PowerTON.contract.Call(opts, out, "wton")
 10583  	return *ret0, err
 10584  }
 10585  
 10586  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 10587  //
 10588  // Solidity: function wton() constant returns(address)
 10589  func (_PowerTON *PowerTONSession) Wton() (common.Address, error) {
 10590  	return _PowerTON.Contract.Wton(&_PowerTON.CallOpts)
 10591  }
 10592  
 10593  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 10594  //
 10595  // Solidity: function wton() constant returns(address)
 10596  func (_PowerTON *PowerTONCallerSession) Wton() (common.Address, error) {
 10597  	return _PowerTON.Contract.Wton(&_PowerTON.CallOpts)
 10598  }
 10599  
 10600  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
 10601  //
 10602  // Solidity: function addPauser(address account) returns()
 10603  func (_PowerTON *PowerTONTransactor) AddPauser(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 10604  	return _PowerTON.contract.Transact(opts, "addPauser", account)
 10605  }
 10606  
 10607  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
 10608  //
 10609  // Solidity: function addPauser(address account) returns()
 10610  func (_PowerTON *PowerTONSession) AddPauser(account common.Address) (*types.Transaction, error) {
 10611  	return _PowerTON.Contract.AddPauser(&_PowerTON.TransactOpts, account)
 10612  }
 10613  
 10614  // AddPauser is a paid mutator transaction binding the contract method 0x82dc1ec4.
 10615  //
 10616  // Solidity: function addPauser(address account) returns()
 10617  func (_PowerTON *PowerTONTransactorSession) AddPauser(account common.Address) (*types.Transaction, error) {
 10618  	return _PowerTON.Contract.AddPauser(&_PowerTON.TransactOpts, account)
 10619  }
 10620  
 10621  // EndRound is a paid mutator transaction binding the contract method 0x749aa2d9.
 10622  //
 10623  // Solidity: function endRound() returns()
 10624  func (_PowerTON *PowerTONTransactor) EndRound(opts *bind.TransactOpts) (*types.Transaction, error) {
 10625  	return _PowerTON.contract.Transact(opts, "endRound")
 10626  }
 10627  
 10628  // EndRound is a paid mutator transaction binding the contract method 0x749aa2d9.
 10629  //
 10630  // Solidity: function endRound() returns()
 10631  func (_PowerTON *PowerTONSession) EndRound() (*types.Transaction, error) {
 10632  	return _PowerTON.Contract.EndRound(&_PowerTON.TransactOpts)
 10633  }
 10634  
 10635  // EndRound is a paid mutator transaction binding the contract method 0x749aa2d9.
 10636  //
 10637  // Solidity: function endRound() returns()
 10638  func (_PowerTON *PowerTONTransactorSession) EndRound() (*types.Transaction, error) {
 10639  	return _PowerTON.Contract.EndRound(&_PowerTON.TransactOpts)
 10640  }
 10641  
 10642  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
 10643  //
 10644  // Solidity: function init() returns()
 10645  func (_PowerTON *PowerTONTransactor) Init(opts *bind.TransactOpts) (*types.Transaction, error) {
 10646  	return _PowerTON.contract.Transact(opts, "init")
 10647  }
 10648  
 10649  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
 10650  //
 10651  // Solidity: function init() returns()
 10652  func (_PowerTON *PowerTONSession) Init() (*types.Transaction, error) {
 10653  	return _PowerTON.Contract.Init(&_PowerTON.TransactOpts)
 10654  }
 10655  
 10656  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
 10657  //
 10658  // Solidity: function init() returns()
 10659  func (_PowerTON *PowerTONTransactorSession) Init() (*types.Transaction, error) {
 10660  	return _PowerTON.Contract.Init(&_PowerTON.TransactOpts)
 10661  }
 10662  
 10663  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 10664  //
 10665  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns()
 10666  func (_PowerTON *PowerTONTransactor) OnDeposit(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 10667  	return _PowerTON.contract.Transact(opts, "onDeposit", rootchain, account, amount)
 10668  }
 10669  
 10670  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 10671  //
 10672  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns()
 10673  func (_PowerTON *PowerTONSession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 10674  	return _PowerTON.Contract.OnDeposit(&_PowerTON.TransactOpts, rootchain, account, amount)
 10675  }
 10676  
 10677  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 10678  //
 10679  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns()
 10680  func (_PowerTON *PowerTONTransactorSession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 10681  	return _PowerTON.Contract.OnDeposit(&_PowerTON.TransactOpts, rootchain, account, amount)
 10682  }
 10683  
 10684  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 10685  //
 10686  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns()
 10687  func (_PowerTON *PowerTONTransactor) OnWithdraw(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 10688  	return _PowerTON.contract.Transact(opts, "onWithdraw", rootchain, account, amount)
 10689  }
 10690  
 10691  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 10692  //
 10693  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns()
 10694  func (_PowerTON *PowerTONSession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 10695  	return _PowerTON.Contract.OnWithdraw(&_PowerTON.TransactOpts, rootchain, account, amount)
 10696  }
 10697  
 10698  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 10699  //
 10700  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns()
 10701  func (_PowerTON *PowerTONTransactorSession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 10702  	return _PowerTON.Contract.OnWithdraw(&_PowerTON.TransactOpts, rootchain, account, amount)
 10703  }
 10704  
 10705  // Pause is a paid mutator transaction binding the contract method 0x8456cb59.
 10706  //
 10707  // Solidity: function pause() returns()
 10708  func (_PowerTON *PowerTONTransactor) Pause(opts *bind.TransactOpts) (*types.Transaction, error) {
 10709  	return _PowerTON.contract.Transact(opts, "pause")
 10710  }
 10711  
 10712  // Pause is a paid mutator transaction binding the contract method 0x8456cb59.
 10713  //
 10714  // Solidity: function pause() returns()
 10715  func (_PowerTON *PowerTONSession) Pause() (*types.Transaction, error) {
 10716  	return _PowerTON.Contract.Pause(&_PowerTON.TransactOpts)
 10717  }
 10718  
 10719  // Pause is a paid mutator transaction binding the contract method 0x8456cb59.
 10720  //
 10721  // Solidity: function pause() returns()
 10722  func (_PowerTON *PowerTONTransactorSession) Pause() (*types.Transaction, error) {
 10723  	return _PowerTON.Contract.Pause(&_PowerTON.TransactOpts)
 10724  }
 10725  
 10726  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10727  //
 10728  // Solidity: function renounceMinter(address target) returns()
 10729  func (_PowerTON *PowerTONTransactor) RenounceMinter(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 10730  	return _PowerTON.contract.Transact(opts, "renounceMinter", target)
 10731  }
 10732  
 10733  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10734  //
 10735  // Solidity: function renounceMinter(address target) returns()
 10736  func (_PowerTON *PowerTONSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
 10737  	return _PowerTON.Contract.RenounceMinter(&_PowerTON.TransactOpts, target)
 10738  }
 10739  
 10740  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 10741  //
 10742  // Solidity: function renounceMinter(address target) returns()
 10743  func (_PowerTON *PowerTONTransactorSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
 10744  	return _PowerTON.Contract.RenounceMinter(&_PowerTON.TransactOpts, target)
 10745  }
 10746  
 10747  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 10748  //
 10749  // Solidity: function renounceOwnership(address target) returns()
 10750  func (_PowerTON *PowerTONTransactor) RenounceOwnership(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 10751  	return _PowerTON.contract.Transact(opts, "renounceOwnership", target)
 10752  }
 10753  
 10754  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 10755  //
 10756  // Solidity: function renounceOwnership(address target) returns()
 10757  func (_PowerTON *PowerTONSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
 10758  	return _PowerTON.Contract.RenounceOwnership(&_PowerTON.TransactOpts, target)
 10759  }
 10760  
 10761  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 10762  //
 10763  // Solidity: function renounceOwnership(address target) returns()
 10764  func (_PowerTON *PowerTONTransactorSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
 10765  	return _PowerTON.Contract.RenounceOwnership(&_PowerTON.TransactOpts, target)
 10766  }
 10767  
 10768  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 10769  //
 10770  // Solidity: function renounceOwnership() returns()
 10771  func (_PowerTON *PowerTONTransactor) RenounceOwnership0(opts *bind.TransactOpts) (*types.Transaction, error) {
 10772  	return _PowerTON.contract.Transact(opts, "renounceOwnership0")
 10773  }
 10774  
 10775  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 10776  //
 10777  // Solidity: function renounceOwnership() returns()
 10778  func (_PowerTON *PowerTONSession) RenounceOwnership0() (*types.Transaction, error) {
 10779  	return _PowerTON.Contract.RenounceOwnership0(&_PowerTON.TransactOpts)
 10780  }
 10781  
 10782  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 10783  //
 10784  // Solidity: function renounceOwnership() returns()
 10785  func (_PowerTON *PowerTONTransactorSession) RenounceOwnership0() (*types.Transaction, error) {
 10786  	return _PowerTON.Contract.RenounceOwnership0(&_PowerTON.TransactOpts)
 10787  }
 10788  
 10789  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 10790  //
 10791  // Solidity: function renouncePauser(address target) returns()
 10792  func (_PowerTON *PowerTONTransactor) RenouncePauser(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 10793  	return _PowerTON.contract.Transact(opts, "renouncePauser", target)
 10794  }
 10795  
 10796  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 10797  //
 10798  // Solidity: function renouncePauser(address target) returns()
 10799  func (_PowerTON *PowerTONSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
 10800  	return _PowerTON.Contract.RenouncePauser(&_PowerTON.TransactOpts, target)
 10801  }
 10802  
 10803  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 10804  //
 10805  // Solidity: function renouncePauser(address target) returns()
 10806  func (_PowerTON *PowerTONTransactorSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
 10807  	return _PowerTON.Contract.RenouncePauser(&_PowerTON.TransactOpts, target)
 10808  }
 10809  
 10810  // RenouncePauser0 is a paid mutator transaction binding the contract method 0x6ef8d66d.
 10811  //
 10812  // Solidity: function renouncePauser() returns()
 10813  func (_PowerTON *PowerTONTransactor) RenouncePauser0(opts *bind.TransactOpts) (*types.Transaction, error) {
 10814  	return _PowerTON.contract.Transact(opts, "renouncePauser0")
 10815  }
 10816  
 10817  // RenouncePauser0 is a paid mutator transaction binding the contract method 0x6ef8d66d.
 10818  //
 10819  // Solidity: function renouncePauser() returns()
 10820  func (_PowerTON *PowerTONSession) RenouncePauser0() (*types.Transaction, error) {
 10821  	return _PowerTON.Contract.RenouncePauser0(&_PowerTON.TransactOpts)
 10822  }
 10823  
 10824  // RenouncePauser0 is a paid mutator transaction binding the contract method 0x6ef8d66d.
 10825  //
 10826  // Solidity: function renouncePauser() returns()
 10827  func (_PowerTON *PowerTONTransactorSession) RenouncePauser0() (*types.Transaction, error) {
 10828  	return _PowerTON.Contract.RenouncePauser0(&_PowerTON.TransactOpts)
 10829  }
 10830  
 10831  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 10832  //
 10833  // Solidity: function setSeigManager(address seigManager) returns()
 10834  func (_PowerTON *PowerTONTransactor) SetSeigManager(opts *bind.TransactOpts, seigManager common.Address) (*types.Transaction, error) {
 10835  	return _PowerTON.contract.Transact(opts, "setSeigManager", seigManager)
 10836  }
 10837  
 10838  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 10839  //
 10840  // Solidity: function setSeigManager(address seigManager) returns()
 10841  func (_PowerTON *PowerTONSession) SetSeigManager(seigManager common.Address) (*types.Transaction, error) {
 10842  	return _PowerTON.Contract.SetSeigManager(&_PowerTON.TransactOpts, seigManager)
 10843  }
 10844  
 10845  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 10846  //
 10847  // Solidity: function setSeigManager(address seigManager) returns()
 10848  func (_PowerTON *PowerTONTransactorSession) SetSeigManager(seigManager common.Address) (*types.Transaction, error) {
 10849  	return _PowerTON.Contract.SetSeigManager(&_PowerTON.TransactOpts, seigManager)
 10850  }
 10851  
 10852  // Start is a paid mutator transaction binding the contract method 0xbe9a6555.
 10853  //
 10854  // Solidity: function start() returns()
 10855  func (_PowerTON *PowerTONTransactor) Start(opts *bind.TransactOpts) (*types.Transaction, error) {
 10856  	return _PowerTON.contract.Transact(opts, "start")
 10857  }
 10858  
 10859  // Start is a paid mutator transaction binding the contract method 0xbe9a6555.
 10860  //
 10861  // Solidity: function start() returns()
 10862  func (_PowerTON *PowerTONSession) Start() (*types.Transaction, error) {
 10863  	return _PowerTON.Contract.Start(&_PowerTON.TransactOpts)
 10864  }
 10865  
 10866  // Start is a paid mutator transaction binding the contract method 0xbe9a6555.
 10867  //
 10868  // Solidity: function start() returns()
 10869  func (_PowerTON *PowerTONTransactorSession) Start() (*types.Transaction, error) {
 10870  	return _PowerTON.Contract.Start(&_PowerTON.TransactOpts)
 10871  }
 10872  
 10873  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 10874  //
 10875  // Solidity: function transferOwnership(address target, address newOwner) returns()
 10876  func (_PowerTON *PowerTONTransactor) TransferOwnership(opts *bind.TransactOpts, target common.Address, newOwner common.Address) (*types.Transaction, error) {
 10877  	return _PowerTON.contract.Transact(opts, "transferOwnership", target, newOwner)
 10878  }
 10879  
 10880  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 10881  //
 10882  // Solidity: function transferOwnership(address target, address newOwner) returns()
 10883  func (_PowerTON *PowerTONSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
 10884  	return _PowerTON.Contract.TransferOwnership(&_PowerTON.TransactOpts, target, newOwner)
 10885  }
 10886  
 10887  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 10888  //
 10889  // Solidity: function transferOwnership(address target, address newOwner) returns()
 10890  func (_PowerTON *PowerTONTransactorSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
 10891  	return _PowerTON.Contract.TransferOwnership(&_PowerTON.TransactOpts, target, newOwner)
 10892  }
 10893  
 10894  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 10895  //
 10896  // Solidity: function transferOwnership(address newOwner) returns()
 10897  func (_PowerTON *PowerTONTransactor) TransferOwnership0(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 10898  	return _PowerTON.contract.Transact(opts, "transferOwnership0", newOwner)
 10899  }
 10900  
 10901  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 10902  //
 10903  // Solidity: function transferOwnership(address newOwner) returns()
 10904  func (_PowerTON *PowerTONSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
 10905  	return _PowerTON.Contract.TransferOwnership0(&_PowerTON.TransactOpts, newOwner)
 10906  }
 10907  
 10908  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 10909  //
 10910  // Solidity: function transferOwnership(address newOwner) returns()
 10911  func (_PowerTON *PowerTONTransactorSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
 10912  	return _PowerTON.Contract.TransferOwnership0(&_PowerTON.TransactOpts, newOwner)
 10913  }
 10914  
 10915  // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
 10916  //
 10917  // Solidity: function unpause() returns()
 10918  func (_PowerTON *PowerTONTransactor) Unpause(opts *bind.TransactOpts) (*types.Transaction, error) {
 10919  	return _PowerTON.contract.Transact(opts, "unpause")
 10920  }
 10921  
 10922  // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
 10923  //
 10924  // Solidity: function unpause() returns()
 10925  func (_PowerTON *PowerTONSession) Unpause() (*types.Transaction, error) {
 10926  	return _PowerTON.Contract.Unpause(&_PowerTON.TransactOpts)
 10927  }
 10928  
 10929  // Unpause is a paid mutator transaction binding the contract method 0x3f4ba83a.
 10930  //
 10931  // Solidity: function unpause() returns()
 10932  func (_PowerTON *PowerTONTransactorSession) Unpause() (*types.Transaction, error) {
 10933  	return _PowerTON.Contract.Unpause(&_PowerTON.TransactOpts)
 10934  }
 10935  
 10936  // PowerTONOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the PowerTON contract.
 10937  type PowerTONOwnershipTransferredIterator struct {
 10938  	Event *PowerTONOwnershipTransferred // Event containing the contract specifics and raw log
 10939  
 10940  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10941  	event    string              // Event name to use for unpacking event data
 10942  
 10943  	logs chan types.Log        // Log channel receiving the found contract events
 10944  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 10945  	done bool                  // Whether the subscription completed delivering logs
 10946  	fail error                 // Occurred error to stop iteration
 10947  }
 10948  
 10949  // Next advances the iterator to the subsequent event, returning whether there
 10950  // are any more events found. In case of a retrieval or parsing error, false is
 10951  // returned and Error() can be queried for the exact failure.
 10952  func (it *PowerTONOwnershipTransferredIterator) Next() bool {
 10953  	// If the iterator failed, stop iterating
 10954  	if it.fail != nil {
 10955  		return false
 10956  	}
 10957  	// If the iterator completed, deliver directly whatever's available
 10958  	if it.done {
 10959  		select {
 10960  		case log := <-it.logs:
 10961  			it.Event = new(PowerTONOwnershipTransferred)
 10962  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10963  				it.fail = err
 10964  				return false
 10965  			}
 10966  			it.Event.Raw = log
 10967  			return true
 10968  
 10969  		default:
 10970  			return false
 10971  		}
 10972  	}
 10973  	// Iterator still in progress, wait for either a data or an error event
 10974  	select {
 10975  	case log := <-it.logs:
 10976  		it.Event = new(PowerTONOwnershipTransferred)
 10977  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10978  			it.fail = err
 10979  			return false
 10980  		}
 10981  		it.Event.Raw = log
 10982  		return true
 10983  
 10984  	case err := <-it.sub.Err():
 10985  		it.done = true
 10986  		it.fail = err
 10987  		return it.Next()
 10988  	}
 10989  }
 10990  
 10991  // Error returns any retrieval or parsing error occurred during filtering.
 10992  func (it *PowerTONOwnershipTransferredIterator) Error() error {
 10993  	return it.fail
 10994  }
 10995  
 10996  // Close terminates the iteration process, releasing any pending underlying
 10997  // resources.
 10998  func (it *PowerTONOwnershipTransferredIterator) Close() error {
 10999  	it.sub.Unsubscribe()
 11000  	return nil
 11001  }
 11002  
 11003  // PowerTONOwnershipTransferred represents a OwnershipTransferred event raised by the PowerTON contract.
 11004  type PowerTONOwnershipTransferred struct {
 11005  	PreviousOwner common.Address
 11006  	NewOwner      common.Address
 11007  	Raw           types.Log // Blockchain specific contextual infos
 11008  }
 11009  
 11010  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 11011  //
 11012  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 11013  func (_PowerTON *PowerTONFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*PowerTONOwnershipTransferredIterator, error) {
 11014  
 11015  	var previousOwnerRule []interface{}
 11016  	for _, previousOwnerItem := range previousOwner {
 11017  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 11018  	}
 11019  	var newOwnerRule []interface{}
 11020  	for _, newOwnerItem := range newOwner {
 11021  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 11022  	}
 11023  
 11024  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 11025  	if err != nil {
 11026  		return nil, err
 11027  	}
 11028  	return &PowerTONOwnershipTransferredIterator{contract: _PowerTON.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 11029  }
 11030  
 11031  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 11032  //
 11033  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 11034  func (_PowerTON *PowerTONFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *PowerTONOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 11035  
 11036  	var previousOwnerRule []interface{}
 11037  	for _, previousOwnerItem := range previousOwner {
 11038  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 11039  	}
 11040  	var newOwnerRule []interface{}
 11041  	for _, newOwnerItem := range newOwner {
 11042  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 11043  	}
 11044  
 11045  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 11046  	if err != nil {
 11047  		return nil, err
 11048  	}
 11049  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11050  		defer sub.Unsubscribe()
 11051  		for {
 11052  			select {
 11053  			case log := <-logs:
 11054  				// New log arrived, parse the event and forward to the user
 11055  				event := new(PowerTONOwnershipTransferred)
 11056  				if err := _PowerTON.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 11057  					return err
 11058  				}
 11059  				event.Raw = log
 11060  
 11061  				select {
 11062  				case sink <- event:
 11063  				case err := <-sub.Err():
 11064  					return err
 11065  				case <-quit:
 11066  					return nil
 11067  				}
 11068  			case err := <-sub.Err():
 11069  				return err
 11070  			case <-quit:
 11071  				return nil
 11072  			}
 11073  		}
 11074  	}), nil
 11075  }
 11076  
 11077  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 11078  //
 11079  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 11080  func (_PowerTON *PowerTONFilterer) ParseOwnershipTransferred(log types.Log) (*PowerTONOwnershipTransferred, error) {
 11081  	event := new(PowerTONOwnershipTransferred)
 11082  	if err := _PowerTON.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 11083  		return nil, err
 11084  	}
 11085  	return event, nil
 11086  }
 11087  
 11088  // PowerTONPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the PowerTON contract.
 11089  type PowerTONPausedIterator struct {
 11090  	Event *PowerTONPaused // Event containing the contract specifics and raw log
 11091  
 11092  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11093  	event    string              // Event name to use for unpacking event data
 11094  
 11095  	logs chan types.Log        // Log channel receiving the found contract events
 11096  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11097  	done bool                  // Whether the subscription completed delivering logs
 11098  	fail error                 // Occurred error to stop iteration
 11099  }
 11100  
 11101  // Next advances the iterator to the subsequent event, returning whether there
 11102  // are any more events found. In case of a retrieval or parsing error, false is
 11103  // returned and Error() can be queried for the exact failure.
 11104  func (it *PowerTONPausedIterator) Next() bool {
 11105  	// If the iterator failed, stop iterating
 11106  	if it.fail != nil {
 11107  		return false
 11108  	}
 11109  	// If the iterator completed, deliver directly whatever's available
 11110  	if it.done {
 11111  		select {
 11112  		case log := <-it.logs:
 11113  			it.Event = new(PowerTONPaused)
 11114  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11115  				it.fail = err
 11116  				return false
 11117  			}
 11118  			it.Event.Raw = log
 11119  			return true
 11120  
 11121  		default:
 11122  			return false
 11123  		}
 11124  	}
 11125  	// Iterator still in progress, wait for either a data or an error event
 11126  	select {
 11127  	case log := <-it.logs:
 11128  		it.Event = new(PowerTONPaused)
 11129  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11130  			it.fail = err
 11131  			return false
 11132  		}
 11133  		it.Event.Raw = log
 11134  		return true
 11135  
 11136  	case err := <-it.sub.Err():
 11137  		it.done = true
 11138  		it.fail = err
 11139  		return it.Next()
 11140  	}
 11141  }
 11142  
 11143  // Error returns any retrieval or parsing error occurred during filtering.
 11144  func (it *PowerTONPausedIterator) Error() error {
 11145  	return it.fail
 11146  }
 11147  
 11148  // Close terminates the iteration process, releasing any pending underlying
 11149  // resources.
 11150  func (it *PowerTONPausedIterator) Close() error {
 11151  	it.sub.Unsubscribe()
 11152  	return nil
 11153  }
 11154  
 11155  // PowerTONPaused represents a Paused event raised by the PowerTON contract.
 11156  type PowerTONPaused struct {
 11157  	Account common.Address
 11158  	Raw     types.Log // Blockchain specific contextual infos
 11159  }
 11160  
 11161  // FilterPaused is a free log retrieval operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
 11162  //
 11163  // Solidity: event Paused(address account)
 11164  func (_PowerTON *PowerTONFilterer) FilterPaused(opts *bind.FilterOpts) (*PowerTONPausedIterator, error) {
 11165  
 11166  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "Paused")
 11167  	if err != nil {
 11168  		return nil, err
 11169  	}
 11170  	return &PowerTONPausedIterator{contract: _PowerTON.contract, event: "Paused", logs: logs, sub: sub}, nil
 11171  }
 11172  
 11173  // WatchPaused is a free log subscription operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
 11174  //
 11175  // Solidity: event Paused(address account)
 11176  func (_PowerTON *PowerTONFilterer) WatchPaused(opts *bind.WatchOpts, sink chan<- *PowerTONPaused) (event.Subscription, error) {
 11177  
 11178  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "Paused")
 11179  	if err != nil {
 11180  		return nil, err
 11181  	}
 11182  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11183  		defer sub.Unsubscribe()
 11184  		for {
 11185  			select {
 11186  			case log := <-logs:
 11187  				// New log arrived, parse the event and forward to the user
 11188  				event := new(PowerTONPaused)
 11189  				if err := _PowerTON.contract.UnpackLog(event, "Paused", log); err != nil {
 11190  					return err
 11191  				}
 11192  				event.Raw = log
 11193  
 11194  				select {
 11195  				case sink <- event:
 11196  				case err := <-sub.Err():
 11197  					return err
 11198  				case <-quit:
 11199  					return nil
 11200  				}
 11201  			case err := <-sub.Err():
 11202  				return err
 11203  			case <-quit:
 11204  				return nil
 11205  			}
 11206  		}
 11207  	}), nil
 11208  }
 11209  
 11210  // ParsePaused is a log parse operation binding the contract event 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258.
 11211  //
 11212  // Solidity: event Paused(address account)
 11213  func (_PowerTON *PowerTONFilterer) ParsePaused(log types.Log) (*PowerTONPaused, error) {
 11214  	event := new(PowerTONPaused)
 11215  	if err := _PowerTON.contract.UnpackLog(event, "Paused", log); err != nil {
 11216  		return nil, err
 11217  	}
 11218  	return event, nil
 11219  }
 11220  
 11221  // PowerTONPauserAddedIterator is returned from FilterPauserAdded and is used to iterate over the raw logs and unpacked data for PauserAdded events raised by the PowerTON contract.
 11222  type PowerTONPauserAddedIterator struct {
 11223  	Event *PowerTONPauserAdded // Event containing the contract specifics and raw log
 11224  
 11225  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11226  	event    string              // Event name to use for unpacking event data
 11227  
 11228  	logs chan types.Log        // Log channel receiving the found contract events
 11229  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11230  	done bool                  // Whether the subscription completed delivering logs
 11231  	fail error                 // Occurred error to stop iteration
 11232  }
 11233  
 11234  // Next advances the iterator to the subsequent event, returning whether there
 11235  // are any more events found. In case of a retrieval or parsing error, false is
 11236  // returned and Error() can be queried for the exact failure.
 11237  func (it *PowerTONPauserAddedIterator) Next() bool {
 11238  	// If the iterator failed, stop iterating
 11239  	if it.fail != nil {
 11240  		return false
 11241  	}
 11242  	// If the iterator completed, deliver directly whatever's available
 11243  	if it.done {
 11244  		select {
 11245  		case log := <-it.logs:
 11246  			it.Event = new(PowerTONPauserAdded)
 11247  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11248  				it.fail = err
 11249  				return false
 11250  			}
 11251  			it.Event.Raw = log
 11252  			return true
 11253  
 11254  		default:
 11255  			return false
 11256  		}
 11257  	}
 11258  	// Iterator still in progress, wait for either a data or an error event
 11259  	select {
 11260  	case log := <-it.logs:
 11261  		it.Event = new(PowerTONPauserAdded)
 11262  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11263  			it.fail = err
 11264  			return false
 11265  		}
 11266  		it.Event.Raw = log
 11267  		return true
 11268  
 11269  	case err := <-it.sub.Err():
 11270  		it.done = true
 11271  		it.fail = err
 11272  		return it.Next()
 11273  	}
 11274  }
 11275  
 11276  // Error returns any retrieval or parsing error occurred during filtering.
 11277  func (it *PowerTONPauserAddedIterator) Error() error {
 11278  	return it.fail
 11279  }
 11280  
 11281  // Close terminates the iteration process, releasing any pending underlying
 11282  // resources.
 11283  func (it *PowerTONPauserAddedIterator) Close() error {
 11284  	it.sub.Unsubscribe()
 11285  	return nil
 11286  }
 11287  
 11288  // PowerTONPauserAdded represents a PauserAdded event raised by the PowerTON contract.
 11289  type PowerTONPauserAdded struct {
 11290  	Account common.Address
 11291  	Raw     types.Log // Blockchain specific contextual infos
 11292  }
 11293  
 11294  // FilterPauserAdded is a free log retrieval operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
 11295  //
 11296  // Solidity: event PauserAdded(address indexed account)
 11297  func (_PowerTON *PowerTONFilterer) FilterPauserAdded(opts *bind.FilterOpts, account []common.Address) (*PowerTONPauserAddedIterator, error) {
 11298  
 11299  	var accountRule []interface{}
 11300  	for _, accountItem := range account {
 11301  		accountRule = append(accountRule, accountItem)
 11302  	}
 11303  
 11304  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "PauserAdded", accountRule)
 11305  	if err != nil {
 11306  		return nil, err
 11307  	}
 11308  	return &PowerTONPauserAddedIterator{contract: _PowerTON.contract, event: "PauserAdded", logs: logs, sub: sub}, nil
 11309  }
 11310  
 11311  // WatchPauserAdded is a free log subscription operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
 11312  //
 11313  // Solidity: event PauserAdded(address indexed account)
 11314  func (_PowerTON *PowerTONFilterer) WatchPauserAdded(opts *bind.WatchOpts, sink chan<- *PowerTONPauserAdded, account []common.Address) (event.Subscription, error) {
 11315  
 11316  	var accountRule []interface{}
 11317  	for _, accountItem := range account {
 11318  		accountRule = append(accountRule, accountItem)
 11319  	}
 11320  
 11321  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "PauserAdded", accountRule)
 11322  	if err != nil {
 11323  		return nil, err
 11324  	}
 11325  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11326  		defer sub.Unsubscribe()
 11327  		for {
 11328  			select {
 11329  			case log := <-logs:
 11330  				// New log arrived, parse the event and forward to the user
 11331  				event := new(PowerTONPauserAdded)
 11332  				if err := _PowerTON.contract.UnpackLog(event, "PauserAdded", log); err != nil {
 11333  					return err
 11334  				}
 11335  				event.Raw = log
 11336  
 11337  				select {
 11338  				case sink <- event:
 11339  				case err := <-sub.Err():
 11340  					return err
 11341  				case <-quit:
 11342  					return nil
 11343  				}
 11344  			case err := <-sub.Err():
 11345  				return err
 11346  			case <-quit:
 11347  				return nil
 11348  			}
 11349  		}
 11350  	}), nil
 11351  }
 11352  
 11353  // ParsePauserAdded is a log parse operation binding the contract event 0x6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f8.
 11354  //
 11355  // Solidity: event PauserAdded(address indexed account)
 11356  func (_PowerTON *PowerTONFilterer) ParsePauserAdded(log types.Log) (*PowerTONPauserAdded, error) {
 11357  	event := new(PowerTONPauserAdded)
 11358  	if err := _PowerTON.contract.UnpackLog(event, "PauserAdded", log); err != nil {
 11359  		return nil, err
 11360  	}
 11361  	return event, nil
 11362  }
 11363  
 11364  // PowerTONPauserRemovedIterator is returned from FilterPauserRemoved and is used to iterate over the raw logs and unpacked data for PauserRemoved events raised by the PowerTON contract.
 11365  type PowerTONPauserRemovedIterator struct {
 11366  	Event *PowerTONPauserRemoved // Event containing the contract specifics and raw log
 11367  
 11368  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11369  	event    string              // Event name to use for unpacking event data
 11370  
 11371  	logs chan types.Log        // Log channel receiving the found contract events
 11372  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11373  	done bool                  // Whether the subscription completed delivering logs
 11374  	fail error                 // Occurred error to stop iteration
 11375  }
 11376  
 11377  // Next advances the iterator to the subsequent event, returning whether there
 11378  // are any more events found. In case of a retrieval or parsing error, false is
 11379  // returned and Error() can be queried for the exact failure.
 11380  func (it *PowerTONPauserRemovedIterator) Next() bool {
 11381  	// If the iterator failed, stop iterating
 11382  	if it.fail != nil {
 11383  		return false
 11384  	}
 11385  	// If the iterator completed, deliver directly whatever's available
 11386  	if it.done {
 11387  		select {
 11388  		case log := <-it.logs:
 11389  			it.Event = new(PowerTONPauserRemoved)
 11390  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11391  				it.fail = err
 11392  				return false
 11393  			}
 11394  			it.Event.Raw = log
 11395  			return true
 11396  
 11397  		default:
 11398  			return false
 11399  		}
 11400  	}
 11401  	// Iterator still in progress, wait for either a data or an error event
 11402  	select {
 11403  	case log := <-it.logs:
 11404  		it.Event = new(PowerTONPauserRemoved)
 11405  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11406  			it.fail = err
 11407  			return false
 11408  		}
 11409  		it.Event.Raw = log
 11410  		return true
 11411  
 11412  	case err := <-it.sub.Err():
 11413  		it.done = true
 11414  		it.fail = err
 11415  		return it.Next()
 11416  	}
 11417  }
 11418  
 11419  // Error returns any retrieval or parsing error occurred during filtering.
 11420  func (it *PowerTONPauserRemovedIterator) Error() error {
 11421  	return it.fail
 11422  }
 11423  
 11424  // Close terminates the iteration process, releasing any pending underlying
 11425  // resources.
 11426  func (it *PowerTONPauserRemovedIterator) Close() error {
 11427  	it.sub.Unsubscribe()
 11428  	return nil
 11429  }
 11430  
 11431  // PowerTONPauserRemoved represents a PauserRemoved event raised by the PowerTON contract.
 11432  type PowerTONPauserRemoved struct {
 11433  	Account common.Address
 11434  	Raw     types.Log // Blockchain specific contextual infos
 11435  }
 11436  
 11437  // FilterPauserRemoved is a free log retrieval operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
 11438  //
 11439  // Solidity: event PauserRemoved(address indexed account)
 11440  func (_PowerTON *PowerTONFilterer) FilterPauserRemoved(opts *bind.FilterOpts, account []common.Address) (*PowerTONPauserRemovedIterator, error) {
 11441  
 11442  	var accountRule []interface{}
 11443  	for _, accountItem := range account {
 11444  		accountRule = append(accountRule, accountItem)
 11445  	}
 11446  
 11447  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "PauserRemoved", accountRule)
 11448  	if err != nil {
 11449  		return nil, err
 11450  	}
 11451  	return &PowerTONPauserRemovedIterator{contract: _PowerTON.contract, event: "PauserRemoved", logs: logs, sub: sub}, nil
 11452  }
 11453  
 11454  // WatchPauserRemoved is a free log subscription operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
 11455  //
 11456  // Solidity: event PauserRemoved(address indexed account)
 11457  func (_PowerTON *PowerTONFilterer) WatchPauserRemoved(opts *bind.WatchOpts, sink chan<- *PowerTONPauserRemoved, account []common.Address) (event.Subscription, error) {
 11458  
 11459  	var accountRule []interface{}
 11460  	for _, accountItem := range account {
 11461  		accountRule = append(accountRule, accountItem)
 11462  	}
 11463  
 11464  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "PauserRemoved", accountRule)
 11465  	if err != nil {
 11466  		return nil, err
 11467  	}
 11468  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11469  		defer sub.Unsubscribe()
 11470  		for {
 11471  			select {
 11472  			case log := <-logs:
 11473  				// New log arrived, parse the event and forward to the user
 11474  				event := new(PowerTONPauserRemoved)
 11475  				if err := _PowerTON.contract.UnpackLog(event, "PauserRemoved", log); err != nil {
 11476  					return err
 11477  				}
 11478  				event.Raw = log
 11479  
 11480  				select {
 11481  				case sink <- event:
 11482  				case err := <-sub.Err():
 11483  					return err
 11484  				case <-quit:
 11485  					return nil
 11486  				}
 11487  			case err := <-sub.Err():
 11488  				return err
 11489  			case <-quit:
 11490  				return nil
 11491  			}
 11492  		}
 11493  	}), nil
 11494  }
 11495  
 11496  // ParsePauserRemoved is a log parse operation binding the contract event 0xcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e.
 11497  //
 11498  // Solidity: event PauserRemoved(address indexed account)
 11499  func (_PowerTON *PowerTONFilterer) ParsePauserRemoved(log types.Log) (*PowerTONPauserRemoved, error) {
 11500  	event := new(PowerTONPauserRemoved)
 11501  	if err := _PowerTON.contract.UnpackLog(event, "PauserRemoved", log); err != nil {
 11502  		return nil, err
 11503  	}
 11504  	return event, nil
 11505  }
 11506  
 11507  // PowerTONPowerDecreasedIterator is returned from FilterPowerDecreased and is used to iterate over the raw logs and unpacked data for PowerDecreased events raised by the PowerTON contract.
 11508  type PowerTONPowerDecreasedIterator struct {
 11509  	Event *PowerTONPowerDecreased // Event containing the contract specifics and raw log
 11510  
 11511  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11512  	event    string              // Event name to use for unpacking event data
 11513  
 11514  	logs chan types.Log        // Log channel receiving the found contract events
 11515  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11516  	done bool                  // Whether the subscription completed delivering logs
 11517  	fail error                 // Occurred error to stop iteration
 11518  }
 11519  
 11520  // Next advances the iterator to the subsequent event, returning whether there
 11521  // are any more events found. In case of a retrieval or parsing error, false is
 11522  // returned and Error() can be queried for the exact failure.
 11523  func (it *PowerTONPowerDecreasedIterator) Next() bool {
 11524  	// If the iterator failed, stop iterating
 11525  	if it.fail != nil {
 11526  		return false
 11527  	}
 11528  	// If the iterator completed, deliver directly whatever's available
 11529  	if it.done {
 11530  		select {
 11531  		case log := <-it.logs:
 11532  			it.Event = new(PowerTONPowerDecreased)
 11533  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11534  				it.fail = err
 11535  				return false
 11536  			}
 11537  			it.Event.Raw = log
 11538  			return true
 11539  
 11540  		default:
 11541  			return false
 11542  		}
 11543  	}
 11544  	// Iterator still in progress, wait for either a data or an error event
 11545  	select {
 11546  	case log := <-it.logs:
 11547  		it.Event = new(PowerTONPowerDecreased)
 11548  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11549  			it.fail = err
 11550  			return false
 11551  		}
 11552  		it.Event.Raw = log
 11553  		return true
 11554  
 11555  	case err := <-it.sub.Err():
 11556  		it.done = true
 11557  		it.fail = err
 11558  		return it.Next()
 11559  	}
 11560  }
 11561  
 11562  // Error returns any retrieval or parsing error occurred during filtering.
 11563  func (it *PowerTONPowerDecreasedIterator) Error() error {
 11564  	return it.fail
 11565  }
 11566  
 11567  // Close terminates the iteration process, releasing any pending underlying
 11568  // resources.
 11569  func (it *PowerTONPowerDecreasedIterator) Close() error {
 11570  	it.sub.Unsubscribe()
 11571  	return nil
 11572  }
 11573  
 11574  // PowerTONPowerDecreased represents a PowerDecreased event raised by the PowerTON contract.
 11575  type PowerTONPowerDecreased struct {
 11576  	Account common.Address
 11577  	Amount  *big.Int
 11578  	Raw     types.Log // Blockchain specific contextual infos
 11579  }
 11580  
 11581  // FilterPowerDecreased is a free log retrieval operation binding the contract event 0x2799180fb0f59973ce8643f2079ddedfb4c9c9c60cdd7d02c1c7798a379671d2.
 11582  //
 11583  // Solidity: event PowerDecreased(address indexed account, uint256 amount)
 11584  func (_PowerTON *PowerTONFilterer) FilterPowerDecreased(opts *bind.FilterOpts, account []common.Address) (*PowerTONPowerDecreasedIterator, error) {
 11585  
 11586  	var accountRule []interface{}
 11587  	for _, accountItem := range account {
 11588  		accountRule = append(accountRule, accountItem)
 11589  	}
 11590  
 11591  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "PowerDecreased", accountRule)
 11592  	if err != nil {
 11593  		return nil, err
 11594  	}
 11595  	return &PowerTONPowerDecreasedIterator{contract: _PowerTON.contract, event: "PowerDecreased", logs: logs, sub: sub}, nil
 11596  }
 11597  
 11598  // WatchPowerDecreased is a free log subscription operation binding the contract event 0x2799180fb0f59973ce8643f2079ddedfb4c9c9c60cdd7d02c1c7798a379671d2.
 11599  //
 11600  // Solidity: event PowerDecreased(address indexed account, uint256 amount)
 11601  func (_PowerTON *PowerTONFilterer) WatchPowerDecreased(opts *bind.WatchOpts, sink chan<- *PowerTONPowerDecreased, account []common.Address) (event.Subscription, error) {
 11602  
 11603  	var accountRule []interface{}
 11604  	for _, accountItem := range account {
 11605  		accountRule = append(accountRule, accountItem)
 11606  	}
 11607  
 11608  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "PowerDecreased", accountRule)
 11609  	if err != nil {
 11610  		return nil, err
 11611  	}
 11612  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11613  		defer sub.Unsubscribe()
 11614  		for {
 11615  			select {
 11616  			case log := <-logs:
 11617  				// New log arrived, parse the event and forward to the user
 11618  				event := new(PowerTONPowerDecreased)
 11619  				if err := _PowerTON.contract.UnpackLog(event, "PowerDecreased", log); err != nil {
 11620  					return err
 11621  				}
 11622  				event.Raw = log
 11623  
 11624  				select {
 11625  				case sink <- event:
 11626  				case err := <-sub.Err():
 11627  					return err
 11628  				case <-quit:
 11629  					return nil
 11630  				}
 11631  			case err := <-sub.Err():
 11632  				return err
 11633  			case <-quit:
 11634  				return nil
 11635  			}
 11636  		}
 11637  	}), nil
 11638  }
 11639  
 11640  // ParsePowerDecreased is a log parse operation binding the contract event 0x2799180fb0f59973ce8643f2079ddedfb4c9c9c60cdd7d02c1c7798a379671d2.
 11641  //
 11642  // Solidity: event PowerDecreased(address indexed account, uint256 amount)
 11643  func (_PowerTON *PowerTONFilterer) ParsePowerDecreased(log types.Log) (*PowerTONPowerDecreased, error) {
 11644  	event := new(PowerTONPowerDecreased)
 11645  	if err := _PowerTON.contract.UnpackLog(event, "PowerDecreased", log); err != nil {
 11646  		return nil, err
 11647  	}
 11648  	return event, nil
 11649  }
 11650  
 11651  // PowerTONPowerIncreasedIterator is returned from FilterPowerIncreased and is used to iterate over the raw logs and unpacked data for PowerIncreased events raised by the PowerTON contract.
 11652  type PowerTONPowerIncreasedIterator struct {
 11653  	Event *PowerTONPowerIncreased // Event containing the contract specifics and raw log
 11654  
 11655  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11656  	event    string              // Event name to use for unpacking event data
 11657  
 11658  	logs chan types.Log        // Log channel receiving the found contract events
 11659  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11660  	done bool                  // Whether the subscription completed delivering logs
 11661  	fail error                 // Occurred error to stop iteration
 11662  }
 11663  
 11664  // Next advances the iterator to the subsequent event, returning whether there
 11665  // are any more events found. In case of a retrieval or parsing error, false is
 11666  // returned and Error() can be queried for the exact failure.
 11667  func (it *PowerTONPowerIncreasedIterator) Next() bool {
 11668  	// If the iterator failed, stop iterating
 11669  	if it.fail != nil {
 11670  		return false
 11671  	}
 11672  	// If the iterator completed, deliver directly whatever's available
 11673  	if it.done {
 11674  		select {
 11675  		case log := <-it.logs:
 11676  			it.Event = new(PowerTONPowerIncreased)
 11677  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11678  				it.fail = err
 11679  				return false
 11680  			}
 11681  			it.Event.Raw = log
 11682  			return true
 11683  
 11684  		default:
 11685  			return false
 11686  		}
 11687  	}
 11688  	// Iterator still in progress, wait for either a data or an error event
 11689  	select {
 11690  	case log := <-it.logs:
 11691  		it.Event = new(PowerTONPowerIncreased)
 11692  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11693  			it.fail = err
 11694  			return false
 11695  		}
 11696  		it.Event.Raw = log
 11697  		return true
 11698  
 11699  	case err := <-it.sub.Err():
 11700  		it.done = true
 11701  		it.fail = err
 11702  		return it.Next()
 11703  	}
 11704  }
 11705  
 11706  // Error returns any retrieval or parsing error occurred during filtering.
 11707  func (it *PowerTONPowerIncreasedIterator) Error() error {
 11708  	return it.fail
 11709  }
 11710  
 11711  // Close terminates the iteration process, releasing any pending underlying
 11712  // resources.
 11713  func (it *PowerTONPowerIncreasedIterator) Close() error {
 11714  	it.sub.Unsubscribe()
 11715  	return nil
 11716  }
 11717  
 11718  // PowerTONPowerIncreased represents a PowerIncreased event raised by the PowerTON contract.
 11719  type PowerTONPowerIncreased struct {
 11720  	Account common.Address
 11721  	Amount  *big.Int
 11722  	Raw     types.Log // Blockchain specific contextual infos
 11723  }
 11724  
 11725  // FilterPowerIncreased is a free log retrieval operation binding the contract event 0x7cb6ed9ab3c494e5dae6f6a137de115769e08b31ce667494edd37f75c84a1016.
 11726  //
 11727  // Solidity: event PowerIncreased(address indexed account, uint256 amount)
 11728  func (_PowerTON *PowerTONFilterer) FilterPowerIncreased(opts *bind.FilterOpts, account []common.Address) (*PowerTONPowerIncreasedIterator, error) {
 11729  
 11730  	var accountRule []interface{}
 11731  	for _, accountItem := range account {
 11732  		accountRule = append(accountRule, accountItem)
 11733  	}
 11734  
 11735  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "PowerIncreased", accountRule)
 11736  	if err != nil {
 11737  		return nil, err
 11738  	}
 11739  	return &PowerTONPowerIncreasedIterator{contract: _PowerTON.contract, event: "PowerIncreased", logs: logs, sub: sub}, nil
 11740  }
 11741  
 11742  // WatchPowerIncreased is a free log subscription operation binding the contract event 0x7cb6ed9ab3c494e5dae6f6a137de115769e08b31ce667494edd37f75c84a1016.
 11743  //
 11744  // Solidity: event PowerIncreased(address indexed account, uint256 amount)
 11745  func (_PowerTON *PowerTONFilterer) WatchPowerIncreased(opts *bind.WatchOpts, sink chan<- *PowerTONPowerIncreased, account []common.Address) (event.Subscription, error) {
 11746  
 11747  	var accountRule []interface{}
 11748  	for _, accountItem := range account {
 11749  		accountRule = append(accountRule, accountItem)
 11750  	}
 11751  
 11752  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "PowerIncreased", accountRule)
 11753  	if err != nil {
 11754  		return nil, err
 11755  	}
 11756  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11757  		defer sub.Unsubscribe()
 11758  		for {
 11759  			select {
 11760  			case log := <-logs:
 11761  				// New log arrived, parse the event and forward to the user
 11762  				event := new(PowerTONPowerIncreased)
 11763  				if err := _PowerTON.contract.UnpackLog(event, "PowerIncreased", log); err != nil {
 11764  					return err
 11765  				}
 11766  				event.Raw = log
 11767  
 11768  				select {
 11769  				case sink <- event:
 11770  				case err := <-sub.Err():
 11771  					return err
 11772  				case <-quit:
 11773  					return nil
 11774  				}
 11775  			case err := <-sub.Err():
 11776  				return err
 11777  			case <-quit:
 11778  				return nil
 11779  			}
 11780  		}
 11781  	}), nil
 11782  }
 11783  
 11784  // ParsePowerIncreased is a log parse operation binding the contract event 0x7cb6ed9ab3c494e5dae6f6a137de115769e08b31ce667494edd37f75c84a1016.
 11785  //
 11786  // Solidity: event PowerIncreased(address indexed account, uint256 amount)
 11787  func (_PowerTON *PowerTONFilterer) ParsePowerIncreased(log types.Log) (*PowerTONPowerIncreased, error) {
 11788  	event := new(PowerTONPowerIncreased)
 11789  	if err := _PowerTON.contract.UnpackLog(event, "PowerIncreased", log); err != nil {
 11790  		return nil, err
 11791  	}
 11792  	return event, nil
 11793  }
 11794  
 11795  // PowerTONRoundEndIterator is returned from FilterRoundEnd and is used to iterate over the raw logs and unpacked data for RoundEnd events raised by the PowerTON contract.
 11796  type PowerTONRoundEndIterator struct {
 11797  	Event *PowerTONRoundEnd // Event containing the contract specifics and raw log
 11798  
 11799  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11800  	event    string              // Event name to use for unpacking event data
 11801  
 11802  	logs chan types.Log        // Log channel receiving the found contract events
 11803  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11804  	done bool                  // Whether the subscription completed delivering logs
 11805  	fail error                 // Occurred error to stop iteration
 11806  }
 11807  
 11808  // Next advances the iterator to the subsequent event, returning whether there
 11809  // are any more events found. In case of a retrieval or parsing error, false is
 11810  // returned and Error() can be queried for the exact failure.
 11811  func (it *PowerTONRoundEndIterator) Next() bool {
 11812  	// If the iterator failed, stop iterating
 11813  	if it.fail != nil {
 11814  		return false
 11815  	}
 11816  	// If the iterator completed, deliver directly whatever's available
 11817  	if it.done {
 11818  		select {
 11819  		case log := <-it.logs:
 11820  			it.Event = new(PowerTONRoundEnd)
 11821  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11822  				it.fail = err
 11823  				return false
 11824  			}
 11825  			it.Event.Raw = log
 11826  			return true
 11827  
 11828  		default:
 11829  			return false
 11830  		}
 11831  	}
 11832  	// Iterator still in progress, wait for either a data or an error event
 11833  	select {
 11834  	case log := <-it.logs:
 11835  		it.Event = new(PowerTONRoundEnd)
 11836  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11837  			it.fail = err
 11838  			return false
 11839  		}
 11840  		it.Event.Raw = log
 11841  		return true
 11842  
 11843  	case err := <-it.sub.Err():
 11844  		it.done = true
 11845  		it.fail = err
 11846  		return it.Next()
 11847  	}
 11848  }
 11849  
 11850  // Error returns any retrieval or parsing error occurred during filtering.
 11851  func (it *PowerTONRoundEndIterator) Error() error {
 11852  	return it.fail
 11853  }
 11854  
 11855  // Close terminates the iteration process, releasing any pending underlying
 11856  // resources.
 11857  func (it *PowerTONRoundEndIterator) Close() error {
 11858  	it.sub.Unsubscribe()
 11859  	return nil
 11860  }
 11861  
 11862  // PowerTONRoundEnd represents a RoundEnd event raised by the PowerTON contract.
 11863  type PowerTONRoundEnd struct {
 11864  	Round  *big.Int
 11865  	Winner common.Address
 11866  	Reward *big.Int
 11867  	Raw    types.Log // Blockchain specific contextual infos
 11868  }
 11869  
 11870  // FilterRoundEnd is a free log retrieval operation binding the contract event 0xa49385eb61e4f439063d5c00de2ab7a1fff06ca35f6f06fb634d21a2e8ad3279.
 11871  //
 11872  // Solidity: event RoundEnd(uint256 round, address winner, uint256 reward)
 11873  func (_PowerTON *PowerTONFilterer) FilterRoundEnd(opts *bind.FilterOpts) (*PowerTONRoundEndIterator, error) {
 11874  
 11875  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "RoundEnd")
 11876  	if err != nil {
 11877  		return nil, err
 11878  	}
 11879  	return &PowerTONRoundEndIterator{contract: _PowerTON.contract, event: "RoundEnd", logs: logs, sub: sub}, nil
 11880  }
 11881  
 11882  // WatchRoundEnd is a free log subscription operation binding the contract event 0xa49385eb61e4f439063d5c00de2ab7a1fff06ca35f6f06fb634d21a2e8ad3279.
 11883  //
 11884  // Solidity: event RoundEnd(uint256 round, address winner, uint256 reward)
 11885  func (_PowerTON *PowerTONFilterer) WatchRoundEnd(opts *bind.WatchOpts, sink chan<- *PowerTONRoundEnd) (event.Subscription, error) {
 11886  
 11887  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "RoundEnd")
 11888  	if err != nil {
 11889  		return nil, err
 11890  	}
 11891  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11892  		defer sub.Unsubscribe()
 11893  		for {
 11894  			select {
 11895  			case log := <-logs:
 11896  				// New log arrived, parse the event and forward to the user
 11897  				event := new(PowerTONRoundEnd)
 11898  				if err := _PowerTON.contract.UnpackLog(event, "RoundEnd", log); err != nil {
 11899  					return err
 11900  				}
 11901  				event.Raw = log
 11902  
 11903  				select {
 11904  				case sink <- event:
 11905  				case err := <-sub.Err():
 11906  					return err
 11907  				case <-quit:
 11908  					return nil
 11909  				}
 11910  			case err := <-sub.Err():
 11911  				return err
 11912  			case <-quit:
 11913  				return nil
 11914  			}
 11915  		}
 11916  	}), nil
 11917  }
 11918  
 11919  // ParseRoundEnd is a log parse operation binding the contract event 0xa49385eb61e4f439063d5c00de2ab7a1fff06ca35f6f06fb634d21a2e8ad3279.
 11920  //
 11921  // Solidity: event RoundEnd(uint256 round, address winner, uint256 reward)
 11922  func (_PowerTON *PowerTONFilterer) ParseRoundEnd(log types.Log) (*PowerTONRoundEnd, error) {
 11923  	event := new(PowerTONRoundEnd)
 11924  	if err := _PowerTON.contract.UnpackLog(event, "RoundEnd", log); err != nil {
 11925  		return nil, err
 11926  	}
 11927  	return event, nil
 11928  }
 11929  
 11930  // PowerTONRoundStartIterator is returned from FilterRoundStart and is used to iterate over the raw logs and unpacked data for RoundStart events raised by the PowerTON contract.
 11931  type PowerTONRoundStartIterator struct {
 11932  	Event *PowerTONRoundStart // Event containing the contract specifics and raw log
 11933  
 11934  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11935  	event    string              // Event name to use for unpacking event data
 11936  
 11937  	logs chan types.Log        // Log channel receiving the found contract events
 11938  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 11939  	done bool                  // Whether the subscription completed delivering logs
 11940  	fail error                 // Occurred error to stop iteration
 11941  }
 11942  
 11943  // Next advances the iterator to the subsequent event, returning whether there
 11944  // are any more events found. In case of a retrieval or parsing error, false is
 11945  // returned and Error() can be queried for the exact failure.
 11946  func (it *PowerTONRoundStartIterator) Next() bool {
 11947  	// If the iterator failed, stop iterating
 11948  	if it.fail != nil {
 11949  		return false
 11950  	}
 11951  	// If the iterator completed, deliver directly whatever's available
 11952  	if it.done {
 11953  		select {
 11954  		case log := <-it.logs:
 11955  			it.Event = new(PowerTONRoundStart)
 11956  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11957  				it.fail = err
 11958  				return false
 11959  			}
 11960  			it.Event.Raw = log
 11961  			return true
 11962  
 11963  		default:
 11964  			return false
 11965  		}
 11966  	}
 11967  	// Iterator still in progress, wait for either a data or an error event
 11968  	select {
 11969  	case log := <-it.logs:
 11970  		it.Event = new(PowerTONRoundStart)
 11971  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11972  			it.fail = err
 11973  			return false
 11974  		}
 11975  		it.Event.Raw = log
 11976  		return true
 11977  
 11978  	case err := <-it.sub.Err():
 11979  		it.done = true
 11980  		it.fail = err
 11981  		return it.Next()
 11982  	}
 11983  }
 11984  
 11985  // Error returns any retrieval or parsing error occurred during filtering.
 11986  func (it *PowerTONRoundStartIterator) Error() error {
 11987  	return it.fail
 11988  }
 11989  
 11990  // Close terminates the iteration process, releasing any pending underlying
 11991  // resources.
 11992  func (it *PowerTONRoundStartIterator) Close() error {
 11993  	it.sub.Unsubscribe()
 11994  	return nil
 11995  }
 11996  
 11997  // PowerTONRoundStart represents a RoundStart event raised by the PowerTON contract.
 11998  type PowerTONRoundStart struct {
 11999  	Round     *big.Int
 12000  	StartTime *big.Int
 12001  	EndTime   *big.Int
 12002  	Raw       types.Log // Blockchain specific contextual infos
 12003  }
 12004  
 12005  // FilterRoundStart is a free log retrieval operation binding the contract event 0xe51113a62fc9e06008ca1c963fa05a240e64d51af7fdb2178c2a302cfcc5052f.
 12006  //
 12007  // Solidity: event RoundStart(uint256 round, uint256 startTime, uint256 endTime)
 12008  func (_PowerTON *PowerTONFilterer) FilterRoundStart(opts *bind.FilterOpts) (*PowerTONRoundStartIterator, error) {
 12009  
 12010  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "RoundStart")
 12011  	if err != nil {
 12012  		return nil, err
 12013  	}
 12014  	return &PowerTONRoundStartIterator{contract: _PowerTON.contract, event: "RoundStart", logs: logs, sub: sub}, nil
 12015  }
 12016  
 12017  // WatchRoundStart is a free log subscription operation binding the contract event 0xe51113a62fc9e06008ca1c963fa05a240e64d51af7fdb2178c2a302cfcc5052f.
 12018  //
 12019  // Solidity: event RoundStart(uint256 round, uint256 startTime, uint256 endTime)
 12020  func (_PowerTON *PowerTONFilterer) WatchRoundStart(opts *bind.WatchOpts, sink chan<- *PowerTONRoundStart) (event.Subscription, error) {
 12021  
 12022  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "RoundStart")
 12023  	if err != nil {
 12024  		return nil, err
 12025  	}
 12026  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12027  		defer sub.Unsubscribe()
 12028  		for {
 12029  			select {
 12030  			case log := <-logs:
 12031  				// New log arrived, parse the event and forward to the user
 12032  				event := new(PowerTONRoundStart)
 12033  				if err := _PowerTON.contract.UnpackLog(event, "RoundStart", log); err != nil {
 12034  					return err
 12035  				}
 12036  				event.Raw = log
 12037  
 12038  				select {
 12039  				case sink <- event:
 12040  				case err := <-sub.Err():
 12041  					return err
 12042  				case <-quit:
 12043  					return nil
 12044  				}
 12045  			case err := <-sub.Err():
 12046  				return err
 12047  			case <-quit:
 12048  				return nil
 12049  			}
 12050  		}
 12051  	}), nil
 12052  }
 12053  
 12054  // ParseRoundStart is a log parse operation binding the contract event 0xe51113a62fc9e06008ca1c963fa05a240e64d51af7fdb2178c2a302cfcc5052f.
 12055  //
 12056  // Solidity: event RoundStart(uint256 round, uint256 startTime, uint256 endTime)
 12057  func (_PowerTON *PowerTONFilterer) ParseRoundStart(log types.Log) (*PowerTONRoundStart, error) {
 12058  	event := new(PowerTONRoundStart)
 12059  	if err := _PowerTON.contract.UnpackLog(event, "RoundStart", log); err != nil {
 12060  		return nil, err
 12061  	}
 12062  	return event, nil
 12063  }
 12064  
 12065  // PowerTONUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the PowerTON contract.
 12066  type PowerTONUnpausedIterator struct {
 12067  	Event *PowerTONUnpaused // Event containing the contract specifics and raw log
 12068  
 12069  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12070  	event    string              // Event name to use for unpacking event data
 12071  
 12072  	logs chan types.Log        // Log channel receiving the found contract events
 12073  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 12074  	done bool                  // Whether the subscription completed delivering logs
 12075  	fail error                 // Occurred error to stop iteration
 12076  }
 12077  
 12078  // Next advances the iterator to the subsequent event, returning whether there
 12079  // are any more events found. In case of a retrieval or parsing error, false is
 12080  // returned and Error() can be queried for the exact failure.
 12081  func (it *PowerTONUnpausedIterator) Next() bool {
 12082  	// If the iterator failed, stop iterating
 12083  	if it.fail != nil {
 12084  		return false
 12085  	}
 12086  	// If the iterator completed, deliver directly whatever's available
 12087  	if it.done {
 12088  		select {
 12089  		case log := <-it.logs:
 12090  			it.Event = new(PowerTONUnpaused)
 12091  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12092  				it.fail = err
 12093  				return false
 12094  			}
 12095  			it.Event.Raw = log
 12096  			return true
 12097  
 12098  		default:
 12099  			return false
 12100  		}
 12101  	}
 12102  	// Iterator still in progress, wait for either a data or an error event
 12103  	select {
 12104  	case log := <-it.logs:
 12105  		it.Event = new(PowerTONUnpaused)
 12106  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12107  			it.fail = err
 12108  			return false
 12109  		}
 12110  		it.Event.Raw = log
 12111  		return true
 12112  
 12113  	case err := <-it.sub.Err():
 12114  		it.done = true
 12115  		it.fail = err
 12116  		return it.Next()
 12117  	}
 12118  }
 12119  
 12120  // Error returns any retrieval or parsing error occurred during filtering.
 12121  func (it *PowerTONUnpausedIterator) Error() error {
 12122  	return it.fail
 12123  }
 12124  
 12125  // Close terminates the iteration process, releasing any pending underlying
 12126  // resources.
 12127  func (it *PowerTONUnpausedIterator) Close() error {
 12128  	it.sub.Unsubscribe()
 12129  	return nil
 12130  }
 12131  
 12132  // PowerTONUnpaused represents a Unpaused event raised by the PowerTON contract.
 12133  type PowerTONUnpaused struct {
 12134  	Account common.Address
 12135  	Raw     types.Log // Blockchain specific contextual infos
 12136  }
 12137  
 12138  // FilterUnpaused is a free log retrieval operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
 12139  //
 12140  // Solidity: event Unpaused(address account)
 12141  func (_PowerTON *PowerTONFilterer) FilterUnpaused(opts *bind.FilterOpts) (*PowerTONUnpausedIterator, error) {
 12142  
 12143  	logs, sub, err := _PowerTON.contract.FilterLogs(opts, "Unpaused")
 12144  	if err != nil {
 12145  		return nil, err
 12146  	}
 12147  	return &PowerTONUnpausedIterator{contract: _PowerTON.contract, event: "Unpaused", logs: logs, sub: sub}, nil
 12148  }
 12149  
 12150  // WatchUnpaused is a free log subscription operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
 12151  //
 12152  // Solidity: event Unpaused(address account)
 12153  func (_PowerTON *PowerTONFilterer) WatchUnpaused(opts *bind.WatchOpts, sink chan<- *PowerTONUnpaused) (event.Subscription, error) {
 12154  
 12155  	logs, sub, err := _PowerTON.contract.WatchLogs(opts, "Unpaused")
 12156  	if err != nil {
 12157  		return nil, err
 12158  	}
 12159  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12160  		defer sub.Unsubscribe()
 12161  		for {
 12162  			select {
 12163  			case log := <-logs:
 12164  				// New log arrived, parse the event and forward to the user
 12165  				event := new(PowerTONUnpaused)
 12166  				if err := _PowerTON.contract.UnpackLog(event, "Unpaused", log); err != nil {
 12167  					return err
 12168  				}
 12169  				event.Raw = log
 12170  
 12171  				select {
 12172  				case sink <- event:
 12173  				case err := <-sub.Err():
 12174  					return err
 12175  				case <-quit:
 12176  					return nil
 12177  				}
 12178  			case err := <-sub.Err():
 12179  				return err
 12180  			case <-quit:
 12181  				return nil
 12182  			}
 12183  		}
 12184  	}), nil
 12185  }
 12186  
 12187  // ParseUnpaused is a log parse operation binding the contract event 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa.
 12188  //
 12189  // Solidity: event Unpaused(address account)
 12190  func (_PowerTON *PowerTONFilterer) ParseUnpaused(log types.Log) (*PowerTONUnpaused, error) {
 12191  	event := new(PowerTONUnpaused)
 12192  	if err := _PowerTON.contract.UnpackLog(event, "Unpaused", log); err != nil {
 12193  		return nil, err
 12194  	}
 12195  	return event, nil
 12196  }
 12197  
 12198  // PowerTONIABI is the input ABI used to generate the binding from.
 12199  const PowerTONIABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"currentRound\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"endRound\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onDeposit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onWithdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"powerOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"roundDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalDeposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"round\",\"type\":\"uint256\"}],\"name\":\"winnerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"wton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
 12200  
 12201  // PowerTONIFuncSigs maps the 4-byte function signature to its string representation.
 12202  var PowerTONIFuncSigs = map[string]string{
 12203  	"8a19c8bc": "currentRound()",
 12204  	"749aa2d9": "endRound()",
 12205  	"e1c7392a": "init()",
 12206  	"412c6d50": "onDeposit(address,address,uint256)",
 12207  	"f850ffaa": "onWithdraw(address,address,uint256)",
 12208  	"1ac84690": "powerOf(address)",
 12209  	"f7cb789a": "roundDuration()",
 12210  	"6fb7f558": "seigManager()",
 12211  	"be9a6555": "start()",
 12212  	"7d882097": "totalDeposits()",
 12213  	"8cb5d700": "winnerOf(uint256)",
 12214  	"8d62d949": "wton()",
 12215  }
 12216  
 12217  // PowerTONI is an auto generated Go binding around an Ethereum contract.
 12218  type PowerTONI struct {
 12219  	PowerTONICaller     // Read-only binding to the contract
 12220  	PowerTONITransactor // Write-only binding to the contract
 12221  	PowerTONIFilterer   // Log filterer for contract events
 12222  }
 12223  
 12224  // PowerTONICaller is an auto generated read-only Go binding around an Ethereum contract.
 12225  type PowerTONICaller struct {
 12226  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12227  }
 12228  
 12229  // PowerTONITransactor is an auto generated write-only Go binding around an Ethereum contract.
 12230  type PowerTONITransactor struct {
 12231  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12232  }
 12233  
 12234  // PowerTONIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 12235  type PowerTONIFilterer struct {
 12236  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12237  }
 12238  
 12239  // PowerTONISession is an auto generated Go binding around an Ethereum contract,
 12240  // with pre-set call and transact options.
 12241  type PowerTONISession struct {
 12242  	Contract     *PowerTONI        // Generic contract binding to set the session for
 12243  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12244  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12245  }
 12246  
 12247  // PowerTONICallerSession is an auto generated read-only Go binding around an Ethereum contract,
 12248  // with pre-set call options.
 12249  type PowerTONICallerSession struct {
 12250  	Contract *PowerTONICaller // Generic contract caller binding to set the session for
 12251  	CallOpts bind.CallOpts    // Call options to use throughout this session
 12252  }
 12253  
 12254  // PowerTONITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 12255  // with pre-set transact options.
 12256  type PowerTONITransactorSession struct {
 12257  	Contract     *PowerTONITransactor // Generic contract transactor binding to set the session for
 12258  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
 12259  }
 12260  
 12261  // PowerTONIRaw is an auto generated low-level Go binding around an Ethereum contract.
 12262  type PowerTONIRaw struct {
 12263  	Contract *PowerTONI // Generic contract binding to access the raw methods on
 12264  }
 12265  
 12266  // PowerTONICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 12267  type PowerTONICallerRaw struct {
 12268  	Contract *PowerTONICaller // Generic read-only contract binding to access the raw methods on
 12269  }
 12270  
 12271  // PowerTONITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 12272  type PowerTONITransactorRaw struct {
 12273  	Contract *PowerTONITransactor // Generic write-only contract binding to access the raw methods on
 12274  }
 12275  
 12276  // NewPowerTONI creates a new instance of PowerTONI, bound to a specific deployed contract.
 12277  func NewPowerTONI(address common.Address, backend bind.ContractBackend) (*PowerTONI, error) {
 12278  	contract, err := bindPowerTONI(address, backend, backend, backend)
 12279  	if err != nil {
 12280  		return nil, err
 12281  	}
 12282  	return &PowerTONI{PowerTONICaller: PowerTONICaller{contract: contract}, PowerTONITransactor: PowerTONITransactor{contract: contract}, PowerTONIFilterer: PowerTONIFilterer{contract: contract}}, nil
 12283  }
 12284  
 12285  // NewPowerTONICaller creates a new read-only instance of PowerTONI, bound to a specific deployed contract.
 12286  func NewPowerTONICaller(address common.Address, caller bind.ContractCaller) (*PowerTONICaller, error) {
 12287  	contract, err := bindPowerTONI(address, caller, nil, nil)
 12288  	if err != nil {
 12289  		return nil, err
 12290  	}
 12291  	return &PowerTONICaller{contract: contract}, nil
 12292  }
 12293  
 12294  // NewPowerTONITransactor creates a new write-only instance of PowerTONI, bound to a specific deployed contract.
 12295  func NewPowerTONITransactor(address common.Address, transactor bind.ContractTransactor) (*PowerTONITransactor, error) {
 12296  	contract, err := bindPowerTONI(address, nil, transactor, nil)
 12297  	if err != nil {
 12298  		return nil, err
 12299  	}
 12300  	return &PowerTONITransactor{contract: contract}, nil
 12301  }
 12302  
 12303  // NewPowerTONIFilterer creates a new log filterer instance of PowerTONI, bound to a specific deployed contract.
 12304  func NewPowerTONIFilterer(address common.Address, filterer bind.ContractFilterer) (*PowerTONIFilterer, error) {
 12305  	contract, err := bindPowerTONI(address, nil, nil, filterer)
 12306  	if err != nil {
 12307  		return nil, err
 12308  	}
 12309  	return &PowerTONIFilterer{contract: contract}, nil
 12310  }
 12311  
 12312  // bindPowerTONI binds a generic wrapper to an already deployed contract.
 12313  func bindPowerTONI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12314  	parsed, err := abi.JSON(strings.NewReader(PowerTONIABI))
 12315  	if err != nil {
 12316  		return nil, err
 12317  	}
 12318  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 12319  }
 12320  
 12321  // Call invokes the (constant) contract method with params as input values and
 12322  // sets the output to result. The result type might be a single field for simple
 12323  // returns, a slice of interfaces for anonymous returns and a struct for named
 12324  // returns.
 12325  func (_PowerTONI *PowerTONIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12326  	return _PowerTONI.Contract.PowerTONICaller.contract.Call(opts, result, method, params...)
 12327  }
 12328  
 12329  // Transfer initiates a plain transaction to move funds to the contract, calling
 12330  // its default method if one is available.
 12331  func (_PowerTONI *PowerTONIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12332  	return _PowerTONI.Contract.PowerTONITransactor.contract.Transfer(opts)
 12333  }
 12334  
 12335  // Transact invokes the (paid) contract method with params as input values.
 12336  func (_PowerTONI *PowerTONIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12337  	return _PowerTONI.Contract.PowerTONITransactor.contract.Transact(opts, method, params...)
 12338  }
 12339  
 12340  // Call invokes the (constant) contract method with params as input values and
 12341  // sets the output to result. The result type might be a single field for simple
 12342  // returns, a slice of interfaces for anonymous returns and a struct for named
 12343  // returns.
 12344  func (_PowerTONI *PowerTONICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12345  	return _PowerTONI.Contract.contract.Call(opts, result, method, params...)
 12346  }
 12347  
 12348  // Transfer initiates a plain transaction to move funds to the contract, calling
 12349  // its default method if one is available.
 12350  func (_PowerTONI *PowerTONITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12351  	return _PowerTONI.Contract.contract.Transfer(opts)
 12352  }
 12353  
 12354  // Transact invokes the (paid) contract method with params as input values.
 12355  func (_PowerTONI *PowerTONITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12356  	return _PowerTONI.Contract.contract.Transact(opts, method, params...)
 12357  }
 12358  
 12359  // CurrentRound is a free data retrieval call binding the contract method 0x8a19c8bc.
 12360  //
 12361  // Solidity: function currentRound() constant returns(uint256)
 12362  func (_PowerTONI *PowerTONICaller) CurrentRound(opts *bind.CallOpts) (*big.Int, error) {
 12363  	var (
 12364  		ret0 = new(*big.Int)
 12365  	)
 12366  	out := ret0
 12367  	err := _PowerTONI.contract.Call(opts, out, "currentRound")
 12368  	return *ret0, err
 12369  }
 12370  
 12371  // CurrentRound is a free data retrieval call binding the contract method 0x8a19c8bc.
 12372  //
 12373  // Solidity: function currentRound() constant returns(uint256)
 12374  func (_PowerTONI *PowerTONISession) CurrentRound() (*big.Int, error) {
 12375  	return _PowerTONI.Contract.CurrentRound(&_PowerTONI.CallOpts)
 12376  }
 12377  
 12378  // CurrentRound is a free data retrieval call binding the contract method 0x8a19c8bc.
 12379  //
 12380  // Solidity: function currentRound() constant returns(uint256)
 12381  func (_PowerTONI *PowerTONICallerSession) CurrentRound() (*big.Int, error) {
 12382  	return _PowerTONI.Contract.CurrentRound(&_PowerTONI.CallOpts)
 12383  }
 12384  
 12385  // PowerOf is a free data retrieval call binding the contract method 0x1ac84690.
 12386  //
 12387  // Solidity: function powerOf(address account) constant returns(uint256)
 12388  func (_PowerTONI *PowerTONICaller) PowerOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 12389  	var (
 12390  		ret0 = new(*big.Int)
 12391  	)
 12392  	out := ret0
 12393  	err := _PowerTONI.contract.Call(opts, out, "powerOf", account)
 12394  	return *ret0, err
 12395  }
 12396  
 12397  // PowerOf is a free data retrieval call binding the contract method 0x1ac84690.
 12398  //
 12399  // Solidity: function powerOf(address account) constant returns(uint256)
 12400  func (_PowerTONI *PowerTONISession) PowerOf(account common.Address) (*big.Int, error) {
 12401  	return _PowerTONI.Contract.PowerOf(&_PowerTONI.CallOpts, account)
 12402  }
 12403  
 12404  // PowerOf is a free data retrieval call binding the contract method 0x1ac84690.
 12405  //
 12406  // Solidity: function powerOf(address account) constant returns(uint256)
 12407  func (_PowerTONI *PowerTONICallerSession) PowerOf(account common.Address) (*big.Int, error) {
 12408  	return _PowerTONI.Contract.PowerOf(&_PowerTONI.CallOpts, account)
 12409  }
 12410  
 12411  // RoundDuration is a free data retrieval call binding the contract method 0xf7cb789a.
 12412  //
 12413  // Solidity: function roundDuration() constant returns(uint256)
 12414  func (_PowerTONI *PowerTONICaller) RoundDuration(opts *bind.CallOpts) (*big.Int, error) {
 12415  	var (
 12416  		ret0 = new(*big.Int)
 12417  	)
 12418  	out := ret0
 12419  	err := _PowerTONI.contract.Call(opts, out, "roundDuration")
 12420  	return *ret0, err
 12421  }
 12422  
 12423  // RoundDuration is a free data retrieval call binding the contract method 0xf7cb789a.
 12424  //
 12425  // Solidity: function roundDuration() constant returns(uint256)
 12426  func (_PowerTONI *PowerTONISession) RoundDuration() (*big.Int, error) {
 12427  	return _PowerTONI.Contract.RoundDuration(&_PowerTONI.CallOpts)
 12428  }
 12429  
 12430  // RoundDuration is a free data retrieval call binding the contract method 0xf7cb789a.
 12431  //
 12432  // Solidity: function roundDuration() constant returns(uint256)
 12433  func (_PowerTONI *PowerTONICallerSession) RoundDuration() (*big.Int, error) {
 12434  	return _PowerTONI.Contract.RoundDuration(&_PowerTONI.CallOpts)
 12435  }
 12436  
 12437  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 12438  //
 12439  // Solidity: function seigManager() constant returns(address)
 12440  func (_PowerTONI *PowerTONICaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
 12441  	var (
 12442  		ret0 = new(common.Address)
 12443  	)
 12444  	out := ret0
 12445  	err := _PowerTONI.contract.Call(opts, out, "seigManager")
 12446  	return *ret0, err
 12447  }
 12448  
 12449  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 12450  //
 12451  // Solidity: function seigManager() constant returns(address)
 12452  func (_PowerTONI *PowerTONISession) SeigManager() (common.Address, error) {
 12453  	return _PowerTONI.Contract.SeigManager(&_PowerTONI.CallOpts)
 12454  }
 12455  
 12456  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 12457  //
 12458  // Solidity: function seigManager() constant returns(address)
 12459  func (_PowerTONI *PowerTONICallerSession) SeigManager() (common.Address, error) {
 12460  	return _PowerTONI.Contract.SeigManager(&_PowerTONI.CallOpts)
 12461  }
 12462  
 12463  // TotalDeposits is a free data retrieval call binding the contract method 0x7d882097.
 12464  //
 12465  // Solidity: function totalDeposits() constant returns(uint256)
 12466  func (_PowerTONI *PowerTONICaller) TotalDeposits(opts *bind.CallOpts) (*big.Int, error) {
 12467  	var (
 12468  		ret0 = new(*big.Int)
 12469  	)
 12470  	out := ret0
 12471  	err := _PowerTONI.contract.Call(opts, out, "totalDeposits")
 12472  	return *ret0, err
 12473  }
 12474  
 12475  // TotalDeposits is a free data retrieval call binding the contract method 0x7d882097.
 12476  //
 12477  // Solidity: function totalDeposits() constant returns(uint256)
 12478  func (_PowerTONI *PowerTONISession) TotalDeposits() (*big.Int, error) {
 12479  	return _PowerTONI.Contract.TotalDeposits(&_PowerTONI.CallOpts)
 12480  }
 12481  
 12482  // TotalDeposits is a free data retrieval call binding the contract method 0x7d882097.
 12483  //
 12484  // Solidity: function totalDeposits() constant returns(uint256)
 12485  func (_PowerTONI *PowerTONICallerSession) TotalDeposits() (*big.Int, error) {
 12486  	return _PowerTONI.Contract.TotalDeposits(&_PowerTONI.CallOpts)
 12487  }
 12488  
 12489  // WinnerOf is a free data retrieval call binding the contract method 0x8cb5d700.
 12490  //
 12491  // Solidity: function winnerOf(uint256 round) constant returns(address)
 12492  func (_PowerTONI *PowerTONICaller) WinnerOf(opts *bind.CallOpts, round *big.Int) (common.Address, error) {
 12493  	var (
 12494  		ret0 = new(common.Address)
 12495  	)
 12496  	out := ret0
 12497  	err := _PowerTONI.contract.Call(opts, out, "winnerOf", round)
 12498  	return *ret0, err
 12499  }
 12500  
 12501  // WinnerOf is a free data retrieval call binding the contract method 0x8cb5d700.
 12502  //
 12503  // Solidity: function winnerOf(uint256 round) constant returns(address)
 12504  func (_PowerTONI *PowerTONISession) WinnerOf(round *big.Int) (common.Address, error) {
 12505  	return _PowerTONI.Contract.WinnerOf(&_PowerTONI.CallOpts, round)
 12506  }
 12507  
 12508  // WinnerOf is a free data retrieval call binding the contract method 0x8cb5d700.
 12509  //
 12510  // Solidity: function winnerOf(uint256 round) constant returns(address)
 12511  func (_PowerTONI *PowerTONICallerSession) WinnerOf(round *big.Int) (common.Address, error) {
 12512  	return _PowerTONI.Contract.WinnerOf(&_PowerTONI.CallOpts, round)
 12513  }
 12514  
 12515  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 12516  //
 12517  // Solidity: function wton() constant returns(address)
 12518  func (_PowerTONI *PowerTONICaller) Wton(opts *bind.CallOpts) (common.Address, error) {
 12519  	var (
 12520  		ret0 = new(common.Address)
 12521  	)
 12522  	out := ret0
 12523  	err := _PowerTONI.contract.Call(opts, out, "wton")
 12524  	return *ret0, err
 12525  }
 12526  
 12527  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 12528  //
 12529  // Solidity: function wton() constant returns(address)
 12530  func (_PowerTONI *PowerTONISession) Wton() (common.Address, error) {
 12531  	return _PowerTONI.Contract.Wton(&_PowerTONI.CallOpts)
 12532  }
 12533  
 12534  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 12535  //
 12536  // Solidity: function wton() constant returns(address)
 12537  func (_PowerTONI *PowerTONICallerSession) Wton() (common.Address, error) {
 12538  	return _PowerTONI.Contract.Wton(&_PowerTONI.CallOpts)
 12539  }
 12540  
 12541  // EndRound is a paid mutator transaction binding the contract method 0x749aa2d9.
 12542  //
 12543  // Solidity: function endRound() returns()
 12544  func (_PowerTONI *PowerTONITransactor) EndRound(opts *bind.TransactOpts) (*types.Transaction, error) {
 12545  	return _PowerTONI.contract.Transact(opts, "endRound")
 12546  }
 12547  
 12548  // EndRound is a paid mutator transaction binding the contract method 0x749aa2d9.
 12549  //
 12550  // Solidity: function endRound() returns()
 12551  func (_PowerTONI *PowerTONISession) EndRound() (*types.Transaction, error) {
 12552  	return _PowerTONI.Contract.EndRound(&_PowerTONI.TransactOpts)
 12553  }
 12554  
 12555  // EndRound is a paid mutator transaction binding the contract method 0x749aa2d9.
 12556  //
 12557  // Solidity: function endRound() returns()
 12558  func (_PowerTONI *PowerTONITransactorSession) EndRound() (*types.Transaction, error) {
 12559  	return _PowerTONI.Contract.EndRound(&_PowerTONI.TransactOpts)
 12560  }
 12561  
 12562  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
 12563  //
 12564  // Solidity: function init() returns()
 12565  func (_PowerTONI *PowerTONITransactor) Init(opts *bind.TransactOpts) (*types.Transaction, error) {
 12566  	return _PowerTONI.contract.Transact(opts, "init")
 12567  }
 12568  
 12569  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
 12570  //
 12571  // Solidity: function init() returns()
 12572  func (_PowerTONI *PowerTONISession) Init() (*types.Transaction, error) {
 12573  	return _PowerTONI.Contract.Init(&_PowerTONI.TransactOpts)
 12574  }
 12575  
 12576  // Init is a paid mutator transaction binding the contract method 0xe1c7392a.
 12577  //
 12578  // Solidity: function init() returns()
 12579  func (_PowerTONI *PowerTONITransactorSession) Init() (*types.Transaction, error) {
 12580  	return _PowerTONI.Contract.Init(&_PowerTONI.TransactOpts)
 12581  }
 12582  
 12583  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 12584  //
 12585  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns()
 12586  func (_PowerTONI *PowerTONITransactor) OnDeposit(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 12587  	return _PowerTONI.contract.Transact(opts, "onDeposit", rootchain, account, amount)
 12588  }
 12589  
 12590  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 12591  //
 12592  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns()
 12593  func (_PowerTONI *PowerTONISession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 12594  	return _PowerTONI.Contract.OnDeposit(&_PowerTONI.TransactOpts, rootchain, account, amount)
 12595  }
 12596  
 12597  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 12598  //
 12599  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns()
 12600  func (_PowerTONI *PowerTONITransactorSession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 12601  	return _PowerTONI.Contract.OnDeposit(&_PowerTONI.TransactOpts, rootchain, account, amount)
 12602  }
 12603  
 12604  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 12605  //
 12606  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns()
 12607  func (_PowerTONI *PowerTONITransactor) OnWithdraw(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 12608  	return _PowerTONI.contract.Transact(opts, "onWithdraw", rootchain, account, amount)
 12609  }
 12610  
 12611  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 12612  //
 12613  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns()
 12614  func (_PowerTONI *PowerTONISession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 12615  	return _PowerTONI.Contract.OnWithdraw(&_PowerTONI.TransactOpts, rootchain, account, amount)
 12616  }
 12617  
 12618  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 12619  //
 12620  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns()
 12621  func (_PowerTONI *PowerTONITransactorSession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 12622  	return _PowerTONI.Contract.OnWithdraw(&_PowerTONI.TransactOpts, rootchain, account, amount)
 12623  }
 12624  
 12625  // Start is a paid mutator transaction binding the contract method 0xbe9a6555.
 12626  //
 12627  // Solidity: function start() returns()
 12628  func (_PowerTONI *PowerTONITransactor) Start(opts *bind.TransactOpts) (*types.Transaction, error) {
 12629  	return _PowerTONI.contract.Transact(opts, "start")
 12630  }
 12631  
 12632  // Start is a paid mutator transaction binding the contract method 0xbe9a6555.
 12633  //
 12634  // Solidity: function start() returns()
 12635  func (_PowerTONI *PowerTONISession) Start() (*types.Transaction, error) {
 12636  	return _PowerTONI.Contract.Start(&_PowerTONI.TransactOpts)
 12637  }
 12638  
 12639  // Start is a paid mutator transaction binding the contract method 0xbe9a6555.
 12640  //
 12641  // Solidity: function start() returns()
 12642  func (_PowerTONI *PowerTONITransactorSession) Start() (*types.Transaction, error) {
 12643  	return _PowerTONI.Contract.Start(&_PowerTONI.TransactOpts)
 12644  }
 12645  
 12646  // ReentrancyGuardABI is the input ABI used to generate the binding from.
 12647  const ReentrancyGuardABI = "[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
 12648  
 12649  // ReentrancyGuard is an auto generated Go binding around an Ethereum contract.
 12650  type ReentrancyGuard struct {
 12651  	ReentrancyGuardCaller     // Read-only binding to the contract
 12652  	ReentrancyGuardTransactor // Write-only binding to the contract
 12653  	ReentrancyGuardFilterer   // Log filterer for contract events
 12654  }
 12655  
 12656  // ReentrancyGuardCaller is an auto generated read-only Go binding around an Ethereum contract.
 12657  type ReentrancyGuardCaller struct {
 12658  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12659  }
 12660  
 12661  // ReentrancyGuardTransactor is an auto generated write-only Go binding around an Ethereum contract.
 12662  type ReentrancyGuardTransactor struct {
 12663  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12664  }
 12665  
 12666  // ReentrancyGuardFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 12667  type ReentrancyGuardFilterer struct {
 12668  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12669  }
 12670  
 12671  // ReentrancyGuardSession is an auto generated Go binding around an Ethereum contract,
 12672  // with pre-set call and transact options.
 12673  type ReentrancyGuardSession struct {
 12674  	Contract     *ReentrancyGuard  // Generic contract binding to set the session for
 12675  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12676  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12677  }
 12678  
 12679  // ReentrancyGuardCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 12680  // with pre-set call options.
 12681  type ReentrancyGuardCallerSession struct {
 12682  	Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for
 12683  	CallOpts bind.CallOpts          // Call options to use throughout this session
 12684  }
 12685  
 12686  // ReentrancyGuardTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 12687  // with pre-set transact options.
 12688  type ReentrancyGuardTransactorSession struct {
 12689  	Contract     *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for
 12690  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 12691  }
 12692  
 12693  // ReentrancyGuardRaw is an auto generated low-level Go binding around an Ethereum contract.
 12694  type ReentrancyGuardRaw struct {
 12695  	Contract *ReentrancyGuard // Generic contract binding to access the raw methods on
 12696  }
 12697  
 12698  // ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 12699  type ReentrancyGuardCallerRaw struct {
 12700  	Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on
 12701  }
 12702  
 12703  // ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 12704  type ReentrancyGuardTransactorRaw struct {
 12705  	Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on
 12706  }
 12707  
 12708  // NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract.
 12709  func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) {
 12710  	contract, err := bindReentrancyGuard(address, backend, backend, backend)
 12711  	if err != nil {
 12712  		return nil, err
 12713  	}
 12714  	return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil
 12715  }
 12716  
 12717  // NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract.
 12718  func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) {
 12719  	contract, err := bindReentrancyGuard(address, caller, nil, nil)
 12720  	if err != nil {
 12721  		return nil, err
 12722  	}
 12723  	return &ReentrancyGuardCaller{contract: contract}, nil
 12724  }
 12725  
 12726  // NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract.
 12727  func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) {
 12728  	contract, err := bindReentrancyGuard(address, nil, transactor, nil)
 12729  	if err != nil {
 12730  		return nil, err
 12731  	}
 12732  	return &ReentrancyGuardTransactor{contract: contract}, nil
 12733  }
 12734  
 12735  // NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract.
 12736  func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) {
 12737  	contract, err := bindReentrancyGuard(address, nil, nil, filterer)
 12738  	if err != nil {
 12739  		return nil, err
 12740  	}
 12741  	return &ReentrancyGuardFilterer{contract: contract}, nil
 12742  }
 12743  
 12744  // bindReentrancyGuard binds a generic wrapper to an already deployed contract.
 12745  func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12746  	parsed, err := abi.JSON(strings.NewReader(ReentrancyGuardABI))
 12747  	if err != nil {
 12748  		return nil, err
 12749  	}
 12750  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 12751  }
 12752  
 12753  // Call invokes the (constant) contract method with params as input values and
 12754  // sets the output to result. The result type might be a single field for simple
 12755  // returns, a slice of interfaces for anonymous returns and a struct for named
 12756  // returns.
 12757  func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12758  	return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...)
 12759  }
 12760  
 12761  // Transfer initiates a plain transaction to move funds to the contract, calling
 12762  // its default method if one is available.
 12763  func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12764  	return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts)
 12765  }
 12766  
 12767  // Transact invokes the (paid) contract method with params as input values.
 12768  func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12769  	return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...)
 12770  }
 12771  
 12772  // Call invokes the (constant) contract method with params as input values and
 12773  // sets the output to result. The result type might be a single field for simple
 12774  // returns, a slice of interfaces for anonymous returns and a struct for named
 12775  // returns.
 12776  func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12777  	return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...)
 12778  }
 12779  
 12780  // Transfer initiates a plain transaction to move funds to the contract, calling
 12781  // its default method if one is available.
 12782  func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12783  	return _ReentrancyGuard.Contract.contract.Transfer(opts)
 12784  }
 12785  
 12786  // Transact invokes the (paid) contract method with params as input values.
 12787  func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12788  	return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...)
 12789  }
 12790  
 12791  // RolesABI is the input ABI used to generate the binding from.
 12792  const RolesABI = "[]"
 12793  
 12794  // RolesBin is the compiled bytecode used for deploying new contracts.
 12795  var RolesBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820451a2112c879141f72bbe0ec00d853511a9d98646af7e3081d90a3d70270eb1564736f6c634300050c0032"
 12796  
 12797  // DeployRoles deploys a new Ethereum contract, binding an instance of Roles to it.
 12798  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
 12799  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
 12800  	if err != nil {
 12801  		return common.Address{}, nil, nil, err
 12802  	}
 12803  
 12804  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RolesBin), backend)
 12805  	if err != nil {
 12806  		return common.Address{}, nil, nil, err
 12807  	}
 12808  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 12809  }
 12810  
 12811  // Roles is an auto generated Go binding around an Ethereum contract.
 12812  type Roles struct {
 12813  	RolesCaller     // Read-only binding to the contract
 12814  	RolesTransactor // Write-only binding to the contract
 12815  	RolesFilterer   // Log filterer for contract events
 12816  }
 12817  
 12818  // RolesCaller is an auto generated read-only Go binding around an Ethereum contract.
 12819  type RolesCaller struct {
 12820  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12821  }
 12822  
 12823  // RolesTransactor is an auto generated write-only Go binding around an Ethereum contract.
 12824  type RolesTransactor struct {
 12825  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12826  }
 12827  
 12828  // RolesFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 12829  type RolesFilterer struct {
 12830  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12831  }
 12832  
 12833  // RolesSession is an auto generated Go binding around an Ethereum contract,
 12834  // with pre-set call and transact options.
 12835  type RolesSession struct {
 12836  	Contract     *Roles            // Generic contract binding to set the session for
 12837  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12838  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12839  }
 12840  
 12841  // RolesCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 12842  // with pre-set call options.
 12843  type RolesCallerSession struct {
 12844  	Contract *RolesCaller  // Generic contract caller binding to set the session for
 12845  	CallOpts bind.CallOpts // Call options to use throughout this session
 12846  }
 12847  
 12848  // RolesTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 12849  // with pre-set transact options.
 12850  type RolesTransactorSession struct {
 12851  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
 12852  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12853  }
 12854  
 12855  // RolesRaw is an auto generated low-level Go binding around an Ethereum contract.
 12856  type RolesRaw struct {
 12857  	Contract *Roles // Generic contract binding to access the raw methods on
 12858  }
 12859  
 12860  // RolesCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 12861  type RolesCallerRaw struct {
 12862  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
 12863  }
 12864  
 12865  // RolesTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 12866  type RolesTransactorRaw struct {
 12867  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
 12868  }
 12869  
 12870  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
 12871  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
 12872  	contract, err := bindRoles(address, backend, backend, backend)
 12873  	if err != nil {
 12874  		return nil, err
 12875  	}
 12876  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 12877  }
 12878  
 12879  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
 12880  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
 12881  	contract, err := bindRoles(address, caller, nil, nil)
 12882  	if err != nil {
 12883  		return nil, err
 12884  	}
 12885  	return &RolesCaller{contract: contract}, nil
 12886  }
 12887  
 12888  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
 12889  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
 12890  	contract, err := bindRoles(address, nil, transactor, nil)
 12891  	if err != nil {
 12892  		return nil, err
 12893  	}
 12894  	return &RolesTransactor{contract: contract}, nil
 12895  }
 12896  
 12897  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
 12898  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
 12899  	contract, err := bindRoles(address, nil, nil, filterer)
 12900  	if err != nil {
 12901  		return nil, err
 12902  	}
 12903  	return &RolesFilterer{contract: contract}, nil
 12904  }
 12905  
 12906  // bindRoles binds a generic wrapper to an already deployed contract.
 12907  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12908  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
 12909  	if err != nil {
 12910  		return nil, err
 12911  	}
 12912  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 12913  }
 12914  
 12915  // Call invokes the (constant) contract method with params as input values and
 12916  // sets the output to result. The result type might be a single field for simple
 12917  // returns, a slice of interfaces for anonymous returns and a struct for named
 12918  // returns.
 12919  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12920  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
 12921  }
 12922  
 12923  // Transfer initiates a plain transaction to move funds to the contract, calling
 12924  // its default method if one is available.
 12925  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12926  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
 12927  }
 12928  
 12929  // Transact invokes the (paid) contract method with params as input values.
 12930  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12931  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
 12932  }
 12933  
 12934  // Call invokes the (constant) contract method with params as input values and
 12935  // sets the output to result. The result type might be a single field for simple
 12936  // returns, a slice of interfaces for anonymous returns and a struct for named
 12937  // returns.
 12938  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12939  	return _Roles.Contract.contract.Call(opts, result, method, params...)
 12940  }
 12941  
 12942  // Transfer initiates a plain transaction to move funds to the contract, calling
 12943  // its default method if one is available.
 12944  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12945  	return _Roles.Contract.contract.Transfer(opts)
 12946  }
 12947  
 12948  // Transact invokes the (paid) contract method with params as input values.
 12949  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12950  	return _Roles.Contract.contract.Transact(opts, method, params...)
 12951  }
 12952  
 12953  // SafeERC20ABI is the input ABI used to generate the binding from.
 12954  const SafeERC20ABI = "[]"
 12955  
 12956  // SafeERC20Bin is the compiled bytecode used for deploying new contracts.
 12957  var SafeERC20Bin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582045a04cb654e4c37bcd57cef5b1e4313fd04e0fbb06c03b04321592cfa5eb149764736f6c634300050c0032"
 12958  
 12959  // DeploySafeERC20 deploys a new Ethereum contract, binding an instance of SafeERC20 to it.
 12960  func DeploySafeERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeERC20, error) {
 12961  	parsed, err := abi.JSON(strings.NewReader(SafeERC20ABI))
 12962  	if err != nil {
 12963  		return common.Address{}, nil, nil, err
 12964  	}
 12965  
 12966  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeERC20Bin), backend)
 12967  	if err != nil {
 12968  		return common.Address{}, nil, nil, err
 12969  	}
 12970  	return address, tx, &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil
 12971  }
 12972  
 12973  // SafeERC20 is an auto generated Go binding around an Ethereum contract.
 12974  type SafeERC20 struct {
 12975  	SafeERC20Caller     // Read-only binding to the contract
 12976  	SafeERC20Transactor // Write-only binding to the contract
 12977  	SafeERC20Filterer   // Log filterer for contract events
 12978  }
 12979  
 12980  // SafeERC20Caller is an auto generated read-only Go binding around an Ethereum contract.
 12981  type SafeERC20Caller struct {
 12982  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12983  }
 12984  
 12985  // SafeERC20Transactor is an auto generated write-only Go binding around an Ethereum contract.
 12986  type SafeERC20Transactor struct {
 12987  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12988  }
 12989  
 12990  // SafeERC20Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
 12991  type SafeERC20Filterer struct {
 12992  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12993  }
 12994  
 12995  // SafeERC20Session is an auto generated Go binding around an Ethereum contract,
 12996  // with pre-set call and transact options.
 12997  type SafeERC20Session struct {
 12998  	Contract     *SafeERC20        // Generic contract binding to set the session for
 12999  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 13000  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 13001  }
 13002  
 13003  // SafeERC20CallerSession is an auto generated read-only Go binding around an Ethereum contract,
 13004  // with pre-set call options.
 13005  type SafeERC20CallerSession struct {
 13006  	Contract *SafeERC20Caller // Generic contract caller binding to set the session for
 13007  	CallOpts bind.CallOpts    // Call options to use throughout this session
 13008  }
 13009  
 13010  // SafeERC20TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 13011  // with pre-set transact options.
 13012  type SafeERC20TransactorSession struct {
 13013  	Contract     *SafeERC20Transactor // Generic contract transactor binding to set the session for
 13014  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
 13015  }
 13016  
 13017  // SafeERC20Raw is an auto generated low-level Go binding around an Ethereum contract.
 13018  type SafeERC20Raw struct {
 13019  	Contract *SafeERC20 // Generic contract binding to access the raw methods on
 13020  }
 13021  
 13022  // SafeERC20CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 13023  type SafeERC20CallerRaw struct {
 13024  	Contract *SafeERC20Caller // Generic read-only contract binding to access the raw methods on
 13025  }
 13026  
 13027  // SafeERC20TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 13028  type SafeERC20TransactorRaw struct {
 13029  	Contract *SafeERC20Transactor // Generic write-only contract binding to access the raw methods on
 13030  }
 13031  
 13032  // NewSafeERC20 creates a new instance of SafeERC20, bound to a specific deployed contract.
 13033  func NewSafeERC20(address common.Address, backend bind.ContractBackend) (*SafeERC20, error) {
 13034  	contract, err := bindSafeERC20(address, backend, backend, backend)
 13035  	if err != nil {
 13036  		return nil, err
 13037  	}
 13038  	return &SafeERC20{SafeERC20Caller: SafeERC20Caller{contract: contract}, SafeERC20Transactor: SafeERC20Transactor{contract: contract}, SafeERC20Filterer: SafeERC20Filterer{contract: contract}}, nil
 13039  }
 13040  
 13041  // NewSafeERC20Caller creates a new read-only instance of SafeERC20, bound to a specific deployed contract.
 13042  func NewSafeERC20Caller(address common.Address, caller bind.ContractCaller) (*SafeERC20Caller, error) {
 13043  	contract, err := bindSafeERC20(address, caller, nil, nil)
 13044  	if err != nil {
 13045  		return nil, err
 13046  	}
 13047  	return &SafeERC20Caller{contract: contract}, nil
 13048  }
 13049  
 13050  // NewSafeERC20Transactor creates a new write-only instance of SafeERC20, bound to a specific deployed contract.
 13051  func NewSafeERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*SafeERC20Transactor, error) {
 13052  	contract, err := bindSafeERC20(address, nil, transactor, nil)
 13053  	if err != nil {
 13054  		return nil, err
 13055  	}
 13056  	return &SafeERC20Transactor{contract: contract}, nil
 13057  }
 13058  
 13059  // NewSafeERC20Filterer creates a new log filterer instance of SafeERC20, bound to a specific deployed contract.
 13060  func NewSafeERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*SafeERC20Filterer, error) {
 13061  	contract, err := bindSafeERC20(address, nil, nil, filterer)
 13062  	if err != nil {
 13063  		return nil, err
 13064  	}
 13065  	return &SafeERC20Filterer{contract: contract}, nil
 13066  }
 13067  
 13068  // bindSafeERC20 binds a generic wrapper to an already deployed contract.
 13069  func bindSafeERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 13070  	parsed, err := abi.JSON(strings.NewReader(SafeERC20ABI))
 13071  	if err != nil {
 13072  		return nil, err
 13073  	}
 13074  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 13075  }
 13076  
 13077  // Call invokes the (constant) contract method with params as input values and
 13078  // sets the output to result. The result type might be a single field for simple
 13079  // returns, a slice of interfaces for anonymous returns and a struct for named
 13080  // returns.
 13081  func (_SafeERC20 *SafeERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13082  	return _SafeERC20.Contract.SafeERC20Caller.contract.Call(opts, result, method, params...)
 13083  }
 13084  
 13085  // Transfer initiates a plain transaction to move funds to the contract, calling
 13086  // its default method if one is available.
 13087  func (_SafeERC20 *SafeERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13088  	return _SafeERC20.Contract.SafeERC20Transactor.contract.Transfer(opts)
 13089  }
 13090  
 13091  // Transact invokes the (paid) contract method with params as input values.
 13092  func (_SafeERC20 *SafeERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13093  	return _SafeERC20.Contract.SafeERC20Transactor.contract.Transact(opts, method, params...)
 13094  }
 13095  
 13096  // Call invokes the (constant) contract method with params as input values and
 13097  // sets the output to result. The result type might be a single field for simple
 13098  // returns, a slice of interfaces for anonymous returns and a struct for named
 13099  // returns.
 13100  func (_SafeERC20 *SafeERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13101  	return _SafeERC20.Contract.contract.Call(opts, result, method, params...)
 13102  }
 13103  
 13104  // Transfer initiates a plain transaction to move funds to the contract, calling
 13105  // its default method if one is available.
 13106  func (_SafeERC20 *SafeERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13107  	return _SafeERC20.Contract.contract.Transfer(opts)
 13108  }
 13109  
 13110  // Transact invokes the (paid) contract method with params as input values.
 13111  func (_SafeERC20 *SafeERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13112  	return _SafeERC20.Contract.contract.Transact(opts, method, params...)
 13113  }
 13114  
 13115  // SafeMathABI is the input ABI used to generate the binding from.
 13116  const SafeMathABI = "[]"
 13117  
 13118  // SafeMathBin is the compiled bytecode used for deploying new contracts.
 13119  var SafeMathBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582045f810ccb41cd151344ccf006ddfbe7c3c58a867d26e345c6576ae09178171dc64736f6c634300050c0032"
 13120  
 13121  // DeploySafeMath deploys a new Ethereum contract, binding an instance of SafeMath to it.
 13122  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
 13123  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 13124  	if err != nil {
 13125  		return common.Address{}, nil, nil, err
 13126  	}
 13127  
 13128  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
 13129  	if err != nil {
 13130  		return common.Address{}, nil, nil, err
 13131  	}
 13132  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 13133  }
 13134  
 13135  // SafeMath is an auto generated Go binding around an Ethereum contract.
 13136  type SafeMath struct {
 13137  	SafeMathCaller     // Read-only binding to the contract
 13138  	SafeMathTransactor // Write-only binding to the contract
 13139  	SafeMathFilterer   // Log filterer for contract events
 13140  }
 13141  
 13142  // SafeMathCaller is an auto generated read-only Go binding around an Ethereum contract.
 13143  type SafeMathCaller struct {
 13144  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13145  }
 13146  
 13147  // SafeMathTransactor is an auto generated write-only Go binding around an Ethereum contract.
 13148  type SafeMathTransactor struct {
 13149  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13150  }
 13151  
 13152  // SafeMathFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 13153  type SafeMathFilterer struct {
 13154  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13155  }
 13156  
 13157  // SafeMathSession is an auto generated Go binding around an Ethereum contract,
 13158  // with pre-set call and transact options.
 13159  type SafeMathSession struct {
 13160  	Contract     *SafeMath         // Generic contract binding to set the session for
 13161  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 13162  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 13163  }
 13164  
 13165  // SafeMathCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 13166  // with pre-set call options.
 13167  type SafeMathCallerSession struct {
 13168  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
 13169  	CallOpts bind.CallOpts   // Call options to use throughout this session
 13170  }
 13171  
 13172  // SafeMathTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 13173  // with pre-set transact options.
 13174  type SafeMathTransactorSession struct {
 13175  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
 13176  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 13177  }
 13178  
 13179  // SafeMathRaw is an auto generated low-level Go binding around an Ethereum contract.
 13180  type SafeMathRaw struct {
 13181  	Contract *SafeMath // Generic contract binding to access the raw methods on
 13182  }
 13183  
 13184  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 13185  type SafeMathCallerRaw struct {
 13186  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
 13187  }
 13188  
 13189  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 13190  type SafeMathTransactorRaw struct {
 13191  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
 13192  }
 13193  
 13194  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
 13195  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
 13196  	contract, err := bindSafeMath(address, backend, backend, backend)
 13197  	if err != nil {
 13198  		return nil, err
 13199  	}
 13200  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 13201  }
 13202  
 13203  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
 13204  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
 13205  	contract, err := bindSafeMath(address, caller, nil, nil)
 13206  	if err != nil {
 13207  		return nil, err
 13208  	}
 13209  	return &SafeMathCaller{contract: contract}, nil
 13210  }
 13211  
 13212  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
 13213  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
 13214  	contract, err := bindSafeMath(address, nil, transactor, nil)
 13215  	if err != nil {
 13216  		return nil, err
 13217  	}
 13218  	return &SafeMathTransactor{contract: contract}, nil
 13219  }
 13220  
 13221  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
 13222  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
 13223  	contract, err := bindSafeMath(address, nil, nil, filterer)
 13224  	if err != nil {
 13225  		return nil, err
 13226  	}
 13227  	return &SafeMathFilterer{contract: contract}, nil
 13228  }
 13229  
 13230  // bindSafeMath binds a generic wrapper to an already deployed contract.
 13231  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 13232  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 13233  	if err != nil {
 13234  		return nil, err
 13235  	}
 13236  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 13237  }
 13238  
 13239  // Call invokes the (constant) contract method with params as input values and
 13240  // sets the output to result. The result type might be a single field for simple
 13241  // returns, a slice of interfaces for anonymous returns and a struct for named
 13242  // returns.
 13243  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13244  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
 13245  }
 13246  
 13247  // Transfer initiates a plain transaction to move funds to the contract, calling
 13248  // its default method if one is available.
 13249  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13250  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
 13251  }
 13252  
 13253  // Transact invokes the (paid) contract method with params as input values.
 13254  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13255  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
 13256  }
 13257  
 13258  // Call invokes the (constant) contract method with params as input values and
 13259  // sets the output to result. The result type might be a single field for simple
 13260  // returns, a slice of interfaces for anonymous returns and a struct for named
 13261  // returns.
 13262  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13263  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
 13264  }
 13265  
 13266  // Transfer initiates a plain transaction to move funds to the contract, calling
 13267  // its default method if one is available.
 13268  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13269  	return _SafeMath.Contract.contract.Transfer(opts)
 13270  }
 13271  
 13272  // Transact invokes the (paid) contract method with params as input values.
 13273  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13274  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
 13275  }
 13276  
 13277  // SeigManagerIABI is the input ABI used to generate the binding from.
 13278  const SeigManagerIABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"DEFAULT_FACTOR\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"additionalTotBurnAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"coinages\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"commissionRates\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"deployCoinage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"depositManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"}],\"name\":\"lastCommitBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lastSeigBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"onCommit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onDeposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"onWithdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pausedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"powerton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigPerBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"commission\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isCommissionRateNegative\",\"type\":\"bool\"}],\"name\":\"setCommissionRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"stakeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tot\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"rootchain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"uncomittedStakeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"unpausedBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"wton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
 13279  
 13280  // SeigManagerIFuncSigs maps the 4-byte function signature to its string representation.
 13281  var SeigManagerIFuncSigs = map[string]string{
 13282  	"8bf91dc4": "DEFAULT_FACTOR()",
 13283  	"48c8577e": "additionalTotBurnAmount(address,address,uint256)",
 13284  	"4c063c19": "coinages(address)",
 13285  	"7b056c1b": "commissionRates(address)",
 13286  	"833a774f": "deployCoinage(address)",
 13287  	"6c7ac9d8": "depositManager()",
 13288  	"c59f1046": "lastCommitBlock(address)",
 13289  	"f35c89e8": "lastSeigBlock()",
 13290  	"359c4d59": "onCommit()",
 13291  	"412c6d50": "onDeposit(address,address,uint256)",
 13292  	"4a393149": "onTransfer(address,address,uint256)",
 13293  	"f850ffaa": "onWithdraw(address,address,uint256)",
 13294  	"32053c99": "pausedBlock()",
 13295  	"3e832e1d": "powerton()",
 13296  	"7b103999": "registry()",
 13297  	"5f40a349": "seigPerBlock()",
 13298  	"4224ed66": "setCommissionRate(address,uint256,bool)",
 13299  	"ce4cb876": "stakeOf(address,address)",
 13300  	"cc48b947": "ton()",
 13301  	"a16d6aa7": "tot()",
 13302  	"fa9789c8": "uncomittedStakeOf(address,address)",
 13303  	"1cc47890": "unpausedBlock()",
 13304  	"8d62d949": "wton()",
 13305  }
 13306  
 13307  // SeigManagerI is an auto generated Go binding around an Ethereum contract.
 13308  type SeigManagerI struct {
 13309  	SeigManagerICaller     // Read-only binding to the contract
 13310  	SeigManagerITransactor // Write-only binding to the contract
 13311  	SeigManagerIFilterer   // Log filterer for contract events
 13312  }
 13313  
 13314  // SeigManagerICaller is an auto generated read-only Go binding around an Ethereum contract.
 13315  type SeigManagerICaller struct {
 13316  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13317  }
 13318  
 13319  // SeigManagerITransactor is an auto generated write-only Go binding around an Ethereum contract.
 13320  type SeigManagerITransactor struct {
 13321  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13322  }
 13323  
 13324  // SeigManagerIFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 13325  type SeigManagerIFilterer struct {
 13326  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13327  }
 13328  
 13329  // SeigManagerISession is an auto generated Go binding around an Ethereum contract,
 13330  // with pre-set call and transact options.
 13331  type SeigManagerISession struct {
 13332  	Contract     *SeigManagerI     // Generic contract binding to set the session for
 13333  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 13334  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 13335  }
 13336  
 13337  // SeigManagerICallerSession is an auto generated read-only Go binding around an Ethereum contract,
 13338  // with pre-set call options.
 13339  type SeigManagerICallerSession struct {
 13340  	Contract *SeigManagerICaller // Generic contract caller binding to set the session for
 13341  	CallOpts bind.CallOpts       // Call options to use throughout this session
 13342  }
 13343  
 13344  // SeigManagerITransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 13345  // with pre-set transact options.
 13346  type SeigManagerITransactorSession struct {
 13347  	Contract     *SeigManagerITransactor // Generic contract transactor binding to set the session for
 13348  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
 13349  }
 13350  
 13351  // SeigManagerIRaw is an auto generated low-level Go binding around an Ethereum contract.
 13352  type SeigManagerIRaw struct {
 13353  	Contract *SeigManagerI // Generic contract binding to access the raw methods on
 13354  }
 13355  
 13356  // SeigManagerICallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 13357  type SeigManagerICallerRaw struct {
 13358  	Contract *SeigManagerICaller // Generic read-only contract binding to access the raw methods on
 13359  }
 13360  
 13361  // SeigManagerITransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 13362  type SeigManagerITransactorRaw struct {
 13363  	Contract *SeigManagerITransactor // Generic write-only contract binding to access the raw methods on
 13364  }
 13365  
 13366  // NewSeigManagerI creates a new instance of SeigManagerI, bound to a specific deployed contract.
 13367  func NewSeigManagerI(address common.Address, backend bind.ContractBackend) (*SeigManagerI, error) {
 13368  	contract, err := bindSeigManagerI(address, backend, backend, backend)
 13369  	if err != nil {
 13370  		return nil, err
 13371  	}
 13372  	return &SeigManagerI{SeigManagerICaller: SeigManagerICaller{contract: contract}, SeigManagerITransactor: SeigManagerITransactor{contract: contract}, SeigManagerIFilterer: SeigManagerIFilterer{contract: contract}}, nil
 13373  }
 13374  
 13375  // NewSeigManagerICaller creates a new read-only instance of SeigManagerI, bound to a specific deployed contract.
 13376  func NewSeigManagerICaller(address common.Address, caller bind.ContractCaller) (*SeigManagerICaller, error) {
 13377  	contract, err := bindSeigManagerI(address, caller, nil, nil)
 13378  	if err != nil {
 13379  		return nil, err
 13380  	}
 13381  	return &SeigManagerICaller{contract: contract}, nil
 13382  }
 13383  
 13384  // NewSeigManagerITransactor creates a new write-only instance of SeigManagerI, bound to a specific deployed contract.
 13385  func NewSeigManagerITransactor(address common.Address, transactor bind.ContractTransactor) (*SeigManagerITransactor, error) {
 13386  	contract, err := bindSeigManagerI(address, nil, transactor, nil)
 13387  	if err != nil {
 13388  		return nil, err
 13389  	}
 13390  	return &SeigManagerITransactor{contract: contract}, nil
 13391  }
 13392  
 13393  // NewSeigManagerIFilterer creates a new log filterer instance of SeigManagerI, bound to a specific deployed contract.
 13394  func NewSeigManagerIFilterer(address common.Address, filterer bind.ContractFilterer) (*SeigManagerIFilterer, error) {
 13395  	contract, err := bindSeigManagerI(address, nil, nil, filterer)
 13396  	if err != nil {
 13397  		return nil, err
 13398  	}
 13399  	return &SeigManagerIFilterer{contract: contract}, nil
 13400  }
 13401  
 13402  // bindSeigManagerI binds a generic wrapper to an already deployed contract.
 13403  func bindSeigManagerI(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 13404  	parsed, err := abi.JSON(strings.NewReader(SeigManagerIABI))
 13405  	if err != nil {
 13406  		return nil, err
 13407  	}
 13408  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 13409  }
 13410  
 13411  // Call invokes the (constant) contract method with params as input values and
 13412  // sets the output to result. The result type might be a single field for simple
 13413  // returns, a slice of interfaces for anonymous returns and a struct for named
 13414  // returns.
 13415  func (_SeigManagerI *SeigManagerIRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13416  	return _SeigManagerI.Contract.SeigManagerICaller.contract.Call(opts, result, method, params...)
 13417  }
 13418  
 13419  // Transfer initiates a plain transaction to move funds to the contract, calling
 13420  // its default method if one is available.
 13421  func (_SeigManagerI *SeigManagerIRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13422  	return _SeigManagerI.Contract.SeigManagerITransactor.contract.Transfer(opts)
 13423  }
 13424  
 13425  // Transact invokes the (paid) contract method with params as input values.
 13426  func (_SeigManagerI *SeigManagerIRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13427  	return _SeigManagerI.Contract.SeigManagerITransactor.contract.Transact(opts, method, params...)
 13428  }
 13429  
 13430  // Call invokes the (constant) contract method with params as input values and
 13431  // sets the output to result. The result type might be a single field for simple
 13432  // returns, a slice of interfaces for anonymous returns and a struct for named
 13433  // returns.
 13434  func (_SeigManagerI *SeigManagerICallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13435  	return _SeigManagerI.Contract.contract.Call(opts, result, method, params...)
 13436  }
 13437  
 13438  // Transfer initiates a plain transaction to move funds to the contract, calling
 13439  // its default method if one is available.
 13440  func (_SeigManagerI *SeigManagerITransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13441  	return _SeigManagerI.Contract.contract.Transfer(opts)
 13442  }
 13443  
 13444  // Transact invokes the (paid) contract method with params as input values.
 13445  func (_SeigManagerI *SeigManagerITransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13446  	return _SeigManagerI.Contract.contract.Transact(opts, method, params...)
 13447  }
 13448  
 13449  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
 13450  //
 13451  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
 13452  func (_SeigManagerI *SeigManagerICaller) DEFAULTFACTOR(opts *bind.CallOpts) (*big.Int, error) {
 13453  	var (
 13454  		ret0 = new(*big.Int)
 13455  	)
 13456  	out := ret0
 13457  	err := _SeigManagerI.contract.Call(opts, out, "DEFAULT_FACTOR")
 13458  	return *ret0, err
 13459  }
 13460  
 13461  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
 13462  //
 13463  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
 13464  func (_SeigManagerI *SeigManagerISession) DEFAULTFACTOR() (*big.Int, error) {
 13465  	return _SeigManagerI.Contract.DEFAULTFACTOR(&_SeigManagerI.CallOpts)
 13466  }
 13467  
 13468  // DEFAULTFACTOR is a free data retrieval call binding the contract method 0x8bf91dc4.
 13469  //
 13470  // Solidity: function DEFAULT_FACTOR() constant returns(uint256)
 13471  func (_SeigManagerI *SeigManagerICallerSession) DEFAULTFACTOR() (*big.Int, error) {
 13472  	return _SeigManagerI.Contract.DEFAULTFACTOR(&_SeigManagerI.CallOpts)
 13473  }
 13474  
 13475  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
 13476  //
 13477  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
 13478  func (_SeigManagerI *SeigManagerICaller) AdditionalTotBurnAmount(opts *bind.CallOpts, rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
 13479  	var (
 13480  		ret0 = new(*big.Int)
 13481  	)
 13482  	out := ret0
 13483  	err := _SeigManagerI.contract.Call(opts, out, "additionalTotBurnAmount", rootchain, account, amount)
 13484  	return *ret0, err
 13485  }
 13486  
 13487  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
 13488  //
 13489  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
 13490  func (_SeigManagerI *SeigManagerISession) AdditionalTotBurnAmount(rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
 13491  	return _SeigManagerI.Contract.AdditionalTotBurnAmount(&_SeigManagerI.CallOpts, rootchain, account, amount)
 13492  }
 13493  
 13494  // AdditionalTotBurnAmount is a free data retrieval call binding the contract method 0x48c8577e.
 13495  //
 13496  // Solidity: function additionalTotBurnAmount(address rootchain, address account, uint256 amount) constant returns(uint256 totAmount)
 13497  func (_SeigManagerI *SeigManagerICallerSession) AdditionalTotBurnAmount(rootchain common.Address, account common.Address, amount *big.Int) (*big.Int, error) {
 13498  	return _SeigManagerI.Contract.AdditionalTotBurnAmount(&_SeigManagerI.CallOpts, rootchain, account, amount)
 13499  }
 13500  
 13501  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
 13502  //
 13503  // Solidity: function coinages(address rootchain) constant returns(address)
 13504  func (_SeigManagerI *SeigManagerICaller) Coinages(opts *bind.CallOpts, rootchain common.Address) (common.Address, error) {
 13505  	var (
 13506  		ret0 = new(common.Address)
 13507  	)
 13508  	out := ret0
 13509  	err := _SeigManagerI.contract.Call(opts, out, "coinages", rootchain)
 13510  	return *ret0, err
 13511  }
 13512  
 13513  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
 13514  //
 13515  // Solidity: function coinages(address rootchain) constant returns(address)
 13516  func (_SeigManagerI *SeigManagerISession) Coinages(rootchain common.Address) (common.Address, error) {
 13517  	return _SeigManagerI.Contract.Coinages(&_SeigManagerI.CallOpts, rootchain)
 13518  }
 13519  
 13520  // Coinages is a free data retrieval call binding the contract method 0x4c063c19.
 13521  //
 13522  // Solidity: function coinages(address rootchain) constant returns(address)
 13523  func (_SeigManagerI *SeigManagerICallerSession) Coinages(rootchain common.Address) (common.Address, error) {
 13524  	return _SeigManagerI.Contract.Coinages(&_SeigManagerI.CallOpts, rootchain)
 13525  }
 13526  
 13527  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
 13528  //
 13529  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
 13530  func (_SeigManagerI *SeigManagerICaller) CommissionRates(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
 13531  	var (
 13532  		ret0 = new(*big.Int)
 13533  	)
 13534  	out := ret0
 13535  	err := _SeigManagerI.contract.Call(opts, out, "commissionRates", rootchain)
 13536  	return *ret0, err
 13537  }
 13538  
 13539  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
 13540  //
 13541  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
 13542  func (_SeigManagerI *SeigManagerISession) CommissionRates(rootchain common.Address) (*big.Int, error) {
 13543  	return _SeigManagerI.Contract.CommissionRates(&_SeigManagerI.CallOpts, rootchain)
 13544  }
 13545  
 13546  // CommissionRates is a free data retrieval call binding the contract method 0x7b056c1b.
 13547  //
 13548  // Solidity: function commissionRates(address rootchain) constant returns(uint256)
 13549  func (_SeigManagerI *SeigManagerICallerSession) CommissionRates(rootchain common.Address) (*big.Int, error) {
 13550  	return _SeigManagerI.Contract.CommissionRates(&_SeigManagerI.CallOpts, rootchain)
 13551  }
 13552  
 13553  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
 13554  //
 13555  // Solidity: function depositManager() constant returns(address)
 13556  func (_SeigManagerI *SeigManagerICaller) DepositManager(opts *bind.CallOpts) (common.Address, error) {
 13557  	var (
 13558  		ret0 = new(common.Address)
 13559  	)
 13560  	out := ret0
 13561  	err := _SeigManagerI.contract.Call(opts, out, "depositManager")
 13562  	return *ret0, err
 13563  }
 13564  
 13565  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
 13566  //
 13567  // Solidity: function depositManager() constant returns(address)
 13568  func (_SeigManagerI *SeigManagerISession) DepositManager() (common.Address, error) {
 13569  	return _SeigManagerI.Contract.DepositManager(&_SeigManagerI.CallOpts)
 13570  }
 13571  
 13572  // DepositManager is a free data retrieval call binding the contract method 0x6c7ac9d8.
 13573  //
 13574  // Solidity: function depositManager() constant returns(address)
 13575  func (_SeigManagerI *SeigManagerICallerSession) DepositManager() (common.Address, error) {
 13576  	return _SeigManagerI.Contract.DepositManager(&_SeigManagerI.CallOpts)
 13577  }
 13578  
 13579  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
 13580  //
 13581  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
 13582  func (_SeigManagerI *SeigManagerICaller) LastCommitBlock(opts *bind.CallOpts, rootchain common.Address) (*big.Int, error) {
 13583  	var (
 13584  		ret0 = new(*big.Int)
 13585  	)
 13586  	out := ret0
 13587  	err := _SeigManagerI.contract.Call(opts, out, "lastCommitBlock", rootchain)
 13588  	return *ret0, err
 13589  }
 13590  
 13591  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
 13592  //
 13593  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
 13594  func (_SeigManagerI *SeigManagerISession) LastCommitBlock(rootchain common.Address) (*big.Int, error) {
 13595  	return _SeigManagerI.Contract.LastCommitBlock(&_SeigManagerI.CallOpts, rootchain)
 13596  }
 13597  
 13598  // LastCommitBlock is a free data retrieval call binding the contract method 0xc59f1046.
 13599  //
 13600  // Solidity: function lastCommitBlock(address rootchain) constant returns(uint256)
 13601  func (_SeigManagerI *SeigManagerICallerSession) LastCommitBlock(rootchain common.Address) (*big.Int, error) {
 13602  	return _SeigManagerI.Contract.LastCommitBlock(&_SeigManagerI.CallOpts, rootchain)
 13603  }
 13604  
 13605  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
 13606  //
 13607  // Solidity: function lastSeigBlock() constant returns(uint256)
 13608  func (_SeigManagerI *SeigManagerICaller) LastSeigBlock(opts *bind.CallOpts) (*big.Int, error) {
 13609  	var (
 13610  		ret0 = new(*big.Int)
 13611  	)
 13612  	out := ret0
 13613  	err := _SeigManagerI.contract.Call(opts, out, "lastSeigBlock")
 13614  	return *ret0, err
 13615  }
 13616  
 13617  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
 13618  //
 13619  // Solidity: function lastSeigBlock() constant returns(uint256)
 13620  func (_SeigManagerI *SeigManagerISession) LastSeigBlock() (*big.Int, error) {
 13621  	return _SeigManagerI.Contract.LastSeigBlock(&_SeigManagerI.CallOpts)
 13622  }
 13623  
 13624  // LastSeigBlock is a free data retrieval call binding the contract method 0xf35c89e8.
 13625  //
 13626  // Solidity: function lastSeigBlock() constant returns(uint256)
 13627  func (_SeigManagerI *SeigManagerICallerSession) LastSeigBlock() (*big.Int, error) {
 13628  	return _SeigManagerI.Contract.LastSeigBlock(&_SeigManagerI.CallOpts)
 13629  }
 13630  
 13631  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
 13632  //
 13633  // Solidity: function pausedBlock() constant returns(uint256)
 13634  func (_SeigManagerI *SeigManagerICaller) PausedBlock(opts *bind.CallOpts) (*big.Int, error) {
 13635  	var (
 13636  		ret0 = new(*big.Int)
 13637  	)
 13638  	out := ret0
 13639  	err := _SeigManagerI.contract.Call(opts, out, "pausedBlock")
 13640  	return *ret0, err
 13641  }
 13642  
 13643  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
 13644  //
 13645  // Solidity: function pausedBlock() constant returns(uint256)
 13646  func (_SeigManagerI *SeigManagerISession) PausedBlock() (*big.Int, error) {
 13647  	return _SeigManagerI.Contract.PausedBlock(&_SeigManagerI.CallOpts)
 13648  }
 13649  
 13650  // PausedBlock is a free data retrieval call binding the contract method 0x32053c99.
 13651  //
 13652  // Solidity: function pausedBlock() constant returns(uint256)
 13653  func (_SeigManagerI *SeigManagerICallerSession) PausedBlock() (*big.Int, error) {
 13654  	return _SeigManagerI.Contract.PausedBlock(&_SeigManagerI.CallOpts)
 13655  }
 13656  
 13657  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
 13658  //
 13659  // Solidity: function powerton() constant returns(address)
 13660  func (_SeigManagerI *SeigManagerICaller) Powerton(opts *bind.CallOpts) (common.Address, error) {
 13661  	var (
 13662  		ret0 = new(common.Address)
 13663  	)
 13664  	out := ret0
 13665  	err := _SeigManagerI.contract.Call(opts, out, "powerton")
 13666  	return *ret0, err
 13667  }
 13668  
 13669  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
 13670  //
 13671  // Solidity: function powerton() constant returns(address)
 13672  func (_SeigManagerI *SeigManagerISession) Powerton() (common.Address, error) {
 13673  	return _SeigManagerI.Contract.Powerton(&_SeigManagerI.CallOpts)
 13674  }
 13675  
 13676  // Powerton is a free data retrieval call binding the contract method 0x3e832e1d.
 13677  //
 13678  // Solidity: function powerton() constant returns(address)
 13679  func (_SeigManagerI *SeigManagerICallerSession) Powerton() (common.Address, error) {
 13680  	return _SeigManagerI.Contract.Powerton(&_SeigManagerI.CallOpts)
 13681  }
 13682  
 13683  // Registry is a free data retrieval call binding the contract method 0x7b103999.
 13684  //
 13685  // Solidity: function registry() constant returns(address)
 13686  func (_SeigManagerI *SeigManagerICaller) Registry(opts *bind.CallOpts) (common.Address, error) {
 13687  	var (
 13688  		ret0 = new(common.Address)
 13689  	)
 13690  	out := ret0
 13691  	err := _SeigManagerI.contract.Call(opts, out, "registry")
 13692  	return *ret0, err
 13693  }
 13694  
 13695  // Registry is a free data retrieval call binding the contract method 0x7b103999.
 13696  //
 13697  // Solidity: function registry() constant returns(address)
 13698  func (_SeigManagerI *SeigManagerISession) Registry() (common.Address, error) {
 13699  	return _SeigManagerI.Contract.Registry(&_SeigManagerI.CallOpts)
 13700  }
 13701  
 13702  // Registry is a free data retrieval call binding the contract method 0x7b103999.
 13703  //
 13704  // Solidity: function registry() constant returns(address)
 13705  func (_SeigManagerI *SeigManagerICallerSession) Registry() (common.Address, error) {
 13706  	return _SeigManagerI.Contract.Registry(&_SeigManagerI.CallOpts)
 13707  }
 13708  
 13709  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
 13710  //
 13711  // Solidity: function seigPerBlock() constant returns(uint256)
 13712  func (_SeigManagerI *SeigManagerICaller) SeigPerBlock(opts *bind.CallOpts) (*big.Int, error) {
 13713  	var (
 13714  		ret0 = new(*big.Int)
 13715  	)
 13716  	out := ret0
 13717  	err := _SeigManagerI.contract.Call(opts, out, "seigPerBlock")
 13718  	return *ret0, err
 13719  }
 13720  
 13721  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
 13722  //
 13723  // Solidity: function seigPerBlock() constant returns(uint256)
 13724  func (_SeigManagerI *SeigManagerISession) SeigPerBlock() (*big.Int, error) {
 13725  	return _SeigManagerI.Contract.SeigPerBlock(&_SeigManagerI.CallOpts)
 13726  }
 13727  
 13728  // SeigPerBlock is a free data retrieval call binding the contract method 0x5f40a349.
 13729  //
 13730  // Solidity: function seigPerBlock() constant returns(uint256)
 13731  func (_SeigManagerI *SeigManagerICallerSession) SeigPerBlock() (*big.Int, error) {
 13732  	return _SeigManagerI.Contract.SeigPerBlock(&_SeigManagerI.CallOpts)
 13733  }
 13734  
 13735  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
 13736  //
 13737  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
 13738  func (_SeigManagerI *SeigManagerICaller) StakeOf(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
 13739  	var (
 13740  		ret0 = new(*big.Int)
 13741  	)
 13742  	out := ret0
 13743  	err := _SeigManagerI.contract.Call(opts, out, "stakeOf", rootchain, account)
 13744  	return *ret0, err
 13745  }
 13746  
 13747  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
 13748  //
 13749  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
 13750  func (_SeigManagerI *SeigManagerISession) StakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
 13751  	return _SeigManagerI.Contract.StakeOf(&_SeigManagerI.CallOpts, rootchain, account)
 13752  }
 13753  
 13754  // StakeOf is a free data retrieval call binding the contract method 0xce4cb876.
 13755  //
 13756  // Solidity: function stakeOf(address rootchain, address account) constant returns(uint256)
 13757  func (_SeigManagerI *SeigManagerICallerSession) StakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
 13758  	return _SeigManagerI.Contract.StakeOf(&_SeigManagerI.CallOpts, rootchain, account)
 13759  }
 13760  
 13761  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 13762  //
 13763  // Solidity: function ton() constant returns(address)
 13764  func (_SeigManagerI *SeigManagerICaller) Ton(opts *bind.CallOpts) (common.Address, error) {
 13765  	var (
 13766  		ret0 = new(common.Address)
 13767  	)
 13768  	out := ret0
 13769  	err := _SeigManagerI.contract.Call(opts, out, "ton")
 13770  	return *ret0, err
 13771  }
 13772  
 13773  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 13774  //
 13775  // Solidity: function ton() constant returns(address)
 13776  func (_SeigManagerI *SeigManagerISession) Ton() (common.Address, error) {
 13777  	return _SeigManagerI.Contract.Ton(&_SeigManagerI.CallOpts)
 13778  }
 13779  
 13780  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 13781  //
 13782  // Solidity: function ton() constant returns(address)
 13783  func (_SeigManagerI *SeigManagerICallerSession) Ton() (common.Address, error) {
 13784  	return _SeigManagerI.Contract.Ton(&_SeigManagerI.CallOpts)
 13785  }
 13786  
 13787  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
 13788  //
 13789  // Solidity: function tot() constant returns(address)
 13790  func (_SeigManagerI *SeigManagerICaller) Tot(opts *bind.CallOpts) (common.Address, error) {
 13791  	var (
 13792  		ret0 = new(common.Address)
 13793  	)
 13794  	out := ret0
 13795  	err := _SeigManagerI.contract.Call(opts, out, "tot")
 13796  	return *ret0, err
 13797  }
 13798  
 13799  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
 13800  //
 13801  // Solidity: function tot() constant returns(address)
 13802  func (_SeigManagerI *SeigManagerISession) Tot() (common.Address, error) {
 13803  	return _SeigManagerI.Contract.Tot(&_SeigManagerI.CallOpts)
 13804  }
 13805  
 13806  // Tot is a free data retrieval call binding the contract method 0xa16d6aa7.
 13807  //
 13808  // Solidity: function tot() constant returns(address)
 13809  func (_SeigManagerI *SeigManagerICallerSession) Tot() (common.Address, error) {
 13810  	return _SeigManagerI.Contract.Tot(&_SeigManagerI.CallOpts)
 13811  }
 13812  
 13813  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
 13814  //
 13815  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
 13816  func (_SeigManagerI *SeigManagerICaller) UncomittedStakeOf(opts *bind.CallOpts, rootchain common.Address, account common.Address) (*big.Int, error) {
 13817  	var (
 13818  		ret0 = new(*big.Int)
 13819  	)
 13820  	out := ret0
 13821  	err := _SeigManagerI.contract.Call(opts, out, "uncomittedStakeOf", rootchain, account)
 13822  	return *ret0, err
 13823  }
 13824  
 13825  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
 13826  //
 13827  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
 13828  func (_SeigManagerI *SeigManagerISession) UncomittedStakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
 13829  	return _SeigManagerI.Contract.UncomittedStakeOf(&_SeigManagerI.CallOpts, rootchain, account)
 13830  }
 13831  
 13832  // UncomittedStakeOf is a free data retrieval call binding the contract method 0xfa9789c8.
 13833  //
 13834  // Solidity: function uncomittedStakeOf(address rootchain, address account) constant returns(uint256)
 13835  func (_SeigManagerI *SeigManagerICallerSession) UncomittedStakeOf(rootchain common.Address, account common.Address) (*big.Int, error) {
 13836  	return _SeigManagerI.Contract.UncomittedStakeOf(&_SeigManagerI.CallOpts, rootchain, account)
 13837  }
 13838  
 13839  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
 13840  //
 13841  // Solidity: function unpausedBlock() constant returns(uint256)
 13842  func (_SeigManagerI *SeigManagerICaller) UnpausedBlock(opts *bind.CallOpts) (*big.Int, error) {
 13843  	var (
 13844  		ret0 = new(*big.Int)
 13845  	)
 13846  	out := ret0
 13847  	err := _SeigManagerI.contract.Call(opts, out, "unpausedBlock")
 13848  	return *ret0, err
 13849  }
 13850  
 13851  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
 13852  //
 13853  // Solidity: function unpausedBlock() constant returns(uint256)
 13854  func (_SeigManagerI *SeigManagerISession) UnpausedBlock() (*big.Int, error) {
 13855  	return _SeigManagerI.Contract.UnpausedBlock(&_SeigManagerI.CallOpts)
 13856  }
 13857  
 13858  // UnpausedBlock is a free data retrieval call binding the contract method 0x1cc47890.
 13859  //
 13860  // Solidity: function unpausedBlock() constant returns(uint256)
 13861  func (_SeigManagerI *SeigManagerICallerSession) UnpausedBlock() (*big.Int, error) {
 13862  	return _SeigManagerI.Contract.UnpausedBlock(&_SeigManagerI.CallOpts)
 13863  }
 13864  
 13865  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 13866  //
 13867  // Solidity: function wton() constant returns(address)
 13868  func (_SeigManagerI *SeigManagerICaller) Wton(opts *bind.CallOpts) (common.Address, error) {
 13869  	var (
 13870  		ret0 = new(common.Address)
 13871  	)
 13872  	out := ret0
 13873  	err := _SeigManagerI.contract.Call(opts, out, "wton")
 13874  	return *ret0, err
 13875  }
 13876  
 13877  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 13878  //
 13879  // Solidity: function wton() constant returns(address)
 13880  func (_SeigManagerI *SeigManagerISession) Wton() (common.Address, error) {
 13881  	return _SeigManagerI.Contract.Wton(&_SeigManagerI.CallOpts)
 13882  }
 13883  
 13884  // Wton is a free data retrieval call binding the contract method 0x8d62d949.
 13885  //
 13886  // Solidity: function wton() constant returns(address)
 13887  func (_SeigManagerI *SeigManagerICallerSession) Wton() (common.Address, error) {
 13888  	return _SeigManagerI.Contract.Wton(&_SeigManagerI.CallOpts)
 13889  }
 13890  
 13891  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
 13892  //
 13893  // Solidity: function deployCoinage(address rootchain) returns(bool)
 13894  func (_SeigManagerI *SeigManagerITransactor) DeployCoinage(opts *bind.TransactOpts, rootchain common.Address) (*types.Transaction, error) {
 13895  	return _SeigManagerI.contract.Transact(opts, "deployCoinage", rootchain)
 13896  }
 13897  
 13898  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
 13899  //
 13900  // Solidity: function deployCoinage(address rootchain) returns(bool)
 13901  func (_SeigManagerI *SeigManagerISession) DeployCoinage(rootchain common.Address) (*types.Transaction, error) {
 13902  	return _SeigManagerI.Contract.DeployCoinage(&_SeigManagerI.TransactOpts, rootchain)
 13903  }
 13904  
 13905  // DeployCoinage is a paid mutator transaction binding the contract method 0x833a774f.
 13906  //
 13907  // Solidity: function deployCoinage(address rootchain) returns(bool)
 13908  func (_SeigManagerI *SeigManagerITransactorSession) DeployCoinage(rootchain common.Address) (*types.Transaction, error) {
 13909  	return _SeigManagerI.Contract.DeployCoinage(&_SeigManagerI.TransactOpts, rootchain)
 13910  }
 13911  
 13912  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
 13913  //
 13914  // Solidity: function onCommit() returns(bool)
 13915  func (_SeigManagerI *SeigManagerITransactor) OnCommit(opts *bind.TransactOpts) (*types.Transaction, error) {
 13916  	return _SeigManagerI.contract.Transact(opts, "onCommit")
 13917  }
 13918  
 13919  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
 13920  //
 13921  // Solidity: function onCommit() returns(bool)
 13922  func (_SeigManagerI *SeigManagerISession) OnCommit() (*types.Transaction, error) {
 13923  	return _SeigManagerI.Contract.OnCommit(&_SeigManagerI.TransactOpts)
 13924  }
 13925  
 13926  // OnCommit is a paid mutator transaction binding the contract method 0x359c4d59.
 13927  //
 13928  // Solidity: function onCommit() returns(bool)
 13929  func (_SeigManagerI *SeigManagerITransactorSession) OnCommit() (*types.Transaction, error) {
 13930  	return _SeigManagerI.Contract.OnCommit(&_SeigManagerI.TransactOpts)
 13931  }
 13932  
 13933  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 13934  //
 13935  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
 13936  func (_SeigManagerI *SeigManagerITransactor) OnDeposit(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 13937  	return _SeigManagerI.contract.Transact(opts, "onDeposit", rootchain, account, amount)
 13938  }
 13939  
 13940  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 13941  //
 13942  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
 13943  func (_SeigManagerI *SeigManagerISession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 13944  	return _SeigManagerI.Contract.OnDeposit(&_SeigManagerI.TransactOpts, rootchain, account, amount)
 13945  }
 13946  
 13947  // OnDeposit is a paid mutator transaction binding the contract method 0x412c6d50.
 13948  //
 13949  // Solidity: function onDeposit(address rootchain, address account, uint256 amount) returns(bool)
 13950  func (_SeigManagerI *SeigManagerITransactorSession) OnDeposit(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 13951  	return _SeigManagerI.Contract.OnDeposit(&_SeigManagerI.TransactOpts, rootchain, account, amount)
 13952  }
 13953  
 13954  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
 13955  //
 13956  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
 13957  func (_SeigManagerI *SeigManagerITransactor) OnTransfer(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 13958  	return _SeigManagerI.contract.Transact(opts, "onTransfer", sender, recipient, amount)
 13959  }
 13960  
 13961  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
 13962  //
 13963  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
 13964  func (_SeigManagerI *SeigManagerISession) OnTransfer(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 13965  	return _SeigManagerI.Contract.OnTransfer(&_SeigManagerI.TransactOpts, sender, recipient, amount)
 13966  }
 13967  
 13968  // OnTransfer is a paid mutator transaction binding the contract method 0x4a393149.
 13969  //
 13970  // Solidity: function onTransfer(address sender, address recipient, uint256 amount) returns(bool)
 13971  func (_SeigManagerI *SeigManagerITransactorSession) OnTransfer(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 13972  	return _SeigManagerI.Contract.OnTransfer(&_SeigManagerI.TransactOpts, sender, recipient, amount)
 13973  }
 13974  
 13975  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 13976  //
 13977  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
 13978  func (_SeigManagerI *SeigManagerITransactor) OnWithdraw(opts *bind.TransactOpts, rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 13979  	return _SeigManagerI.contract.Transact(opts, "onWithdraw", rootchain, account, amount)
 13980  }
 13981  
 13982  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 13983  //
 13984  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
 13985  func (_SeigManagerI *SeigManagerISession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 13986  	return _SeigManagerI.Contract.OnWithdraw(&_SeigManagerI.TransactOpts, rootchain, account, amount)
 13987  }
 13988  
 13989  // OnWithdraw is a paid mutator transaction binding the contract method 0xf850ffaa.
 13990  //
 13991  // Solidity: function onWithdraw(address rootchain, address account, uint256 amount) returns(bool)
 13992  func (_SeigManagerI *SeigManagerITransactorSession) OnWithdraw(rootchain common.Address, account common.Address, amount *big.Int) (*types.Transaction, error) {
 13993  	return _SeigManagerI.Contract.OnWithdraw(&_SeigManagerI.TransactOpts, rootchain, account, amount)
 13994  }
 13995  
 13996  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
 13997  //
 13998  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
 13999  func (_SeigManagerI *SeigManagerITransactor) SetCommissionRate(opts *bind.TransactOpts, rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
 14000  	return _SeigManagerI.contract.Transact(opts, "setCommissionRate", rootchain, commission, isCommissionRateNegative)
 14001  }
 14002  
 14003  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
 14004  //
 14005  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
 14006  func (_SeigManagerI *SeigManagerISession) SetCommissionRate(rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
 14007  	return _SeigManagerI.Contract.SetCommissionRate(&_SeigManagerI.TransactOpts, rootchain, commission, isCommissionRateNegative)
 14008  }
 14009  
 14010  // SetCommissionRate is a paid mutator transaction binding the contract method 0x4224ed66.
 14011  //
 14012  // Solidity: function setCommissionRate(address rootchain, uint256 commission, bool isCommissionRateNegative) returns(bool)
 14013  func (_SeigManagerI *SeigManagerITransactorSession) SetCommissionRate(rootchain common.Address, commission *big.Int, isCommissionRateNegative bool) (*types.Transaction, error) {
 14014  	return _SeigManagerI.Contract.SetCommissionRate(&_SeigManagerI.TransactOpts, rootchain, commission, isCommissionRateNegative)
 14015  }
 14016  
 14017  // SeigTokenABI is the input ABI used to generate the binding from.
 14018  const SeigTokenABI = "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"contractSeigManagerI\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractSeigManagerI\",\"name\":\"_seigManager\",\"type\":\"address\"}],\"name\":\"setSeigManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 14019  
 14020  // SeigTokenFuncSigs maps the 4-byte function signature to its string representation.
 14021  var SeigTokenFuncSigs = map[string]string{
 14022  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
 14023  	"dd62ed3e": "allowance(address,address)",
 14024  	"095ea7b3": "approve(address,uint256)",
 14025  	"cae9ca51": "approveAndCall(address,uint256,bytes)",
 14026  	"70a08231": "balanceOf(address)",
 14027  	"a457c2d7": "decreaseAllowance(address,uint256)",
 14028  	"39509351": "increaseAllowance(address,uint256)",
 14029  	"8f32d59b": "isOwner()",
 14030  	"8da5cb5b": "owner()",
 14031  	"5f112c68": "renounceMinter(address)",
 14032  	"715018a6": "renounceOwnership()",
 14033  	"38bf3cfa": "renounceOwnership(address)",
 14034  	"41eb24bb": "renouncePauser(address)",
 14035  	"6fb7f558": "seigManager()",
 14036  	"7657f20a": "setSeigManager(address)",
 14037  	"18160ddd": "totalSupply()",
 14038  	"a9059cbb": "transfer(address,uint256)",
 14039  	"23b872dd": "transferFrom(address,address,uint256)",
 14040  	"f2fde38b": "transferOwnership(address)",
 14041  	"6d435421": "transferOwnership(address,address)",
 14042  }
 14043  
 14044  // SeigTokenBin is the compiled bytecode used for deploying new contracts.
 14045  var SeigTokenBin = "0x608060405260006100176001600160e01b0361006a16565b600380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6114e68061007d6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d71461033c578063a9059cbb14610368578063cae9ca5114610394578063dd62ed3e1461044f578063f2fde38b1461047d5761012c565b806370a08231146102d8578063715018a6146102fe5780637657f20a146103065780638da5cb5b1461032c5780638f32d59b146103345761012c565b806341eb24bb116100f457806341eb24bb146102155780635f112c681461023b5780636cd28f9a146102615780636d435421146102865780636fb7f558146102b45761012c565b8063095ea7b31461013157806318160ddd1461017157806323b872dd1461018b57806338bf3cfa146101c157806339509351146101e9575b600080fd5b61015d6004803603604081101561014757600080fd5b506001600160a01b0381351690602001356104a3565b604080519115158252519081900360200190f35b6101796104c0565b60408051918252519081900360200190f35b61015d600480360360608110156101a157600080fd5b506001600160a01b038135811691602081013590911690604001356104c6565b6101e7600480360360208110156101d757600080fd5b50356001600160a01b0316610554565b005b61015d600480360360408110156101ff57600080fd5b506001600160a01b0381351690602001356105f1565b6101e76004803603602081101561022b57600080fd5b50356001600160a01b0316610645565b6101e76004803603602081101561025157600080fd5b50356001600160a01b03166106c7565b610269610749565b604080516001600160e01b03199092168252519081900360200190f35b6101e76004803603604081101561029c57600080fd5b506001600160a01b0381358116916020013516610764565b6102bc61081f565b604080516001600160a01b039092168252519081900360200190f35b610179600480360360208110156102ee57600080fd5b50356001600160a01b031661082e565b6101e7610849565b6101e76004803603602081101561031c57600080fd5b50356001600160a01b03166108da565b6102bc610943565b61015d610952565b61015d6004803603604081101561035257600080fd5b506001600160a01b038135169060200135610978565b61015d6004803603604081101561037e57600080fd5b506001600160a01b0381351690602001356109e6565b61015d600480360360608110156103aa57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156103da57600080fd5b8201836020820111156103ec57600080fd5b8035906020019184600183028401116401000000008311171561040e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109fa945050505050565b6101796004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610a1b565b6101e76004803603602081101561049357600080fd5b50356001600160a01b0316610a46565b60006104b76104b0610a99565b8484610a9d565b50600192915050565b60025490565b60006104d3848484610b89565b610549846104df610a99565b610544856040518060600160405280602881526020016113fc602891396001600160a01b038a1660009081526001602052604081209061051d610a99565b6001600160a01b03168152602081019190915260400160002054919063ffffffff610bf316565b610a9d565b5060015b9392505050565b61055c610952565b61059b576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105d657600080fd5b505af11580156105ea573d6000803e3d6000fd5b5050505050565b60006104b76105fe610a99565b84610544856001600061060f610a99565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610c8a16565b61064d610952565b61068c576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b806001600160a01b0316636ef8d66d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105d657600080fd5b6106cf610952565b61070e576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105d657600080fd5b6040518060286113a482396028019050604051809103902081565b61076c610952565b6107ab576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561080357600080fd5b505af1158015610817573d6000803e3d6000fd5b505050505050565b6004546001600160a01b031681565b6001600160a01b031660009081526020819052604090205490565b610851610952565b610890576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b6108e2610952565b610921576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6003546001600160a01b031690565b6003546000906001600160a01b0316610969610a99565b6001600160a01b031614905090565b60006104b7610985610a99565b846105448560405180606001604052806025815260200161148d60259139600160006109af610a99565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610bf316565b60006104b76109f3610a99565b8484610b89565b6000610a0684846104a3565b610a0f57600080fd5b61054d33858585610ce4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610a4e610952565b610a8d576040805162461bcd60e51b81526020600482018190526024820152600080516020611424833981519152604482015290519081900360640190fd5b610a9681610f3a565b50565b3390565b6001600160a01b038316610ae25760405162461bcd60e51b81526004018080602001828103825260248152602001806114696024913960400191505060405180910390fd5b6001600160a01b038216610b275760405162461bcd60e51b815260040180806020018281038252602281526020018061132b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b336001600160a01b0384161480610ba85750336001600160a01b038316145b610be35760405162461bcd60e51b81526004018080602001828103825260308152602001806113cc6030913960400191505060405180910390fd5b610bee838383610fdb565b505050565b60008184841115610c825760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610c47578181015183820152602001610c2f565b50505050905090810190601f168015610c745780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008282018381101561054d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b610d068360405180806113a46028913960280190506040518091039020611137565b610d415760405162461bcd60e51b815260040180806020018281038252603181526020018061134d6031913960400191505060405180910390fd5b60006060846001600160a01b031660405180806113a460289139602801905060405180910390208787878760405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610de2578181015183820152602001610dca565b50505050905090810190601f168015610e0f5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b60208310610e775780518252601f199092019160209182019101610e58565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610ed9576040519150601f19603f3d011682016040523d82523d6000602084013e610ede565b606091505b5091509150818190610f315760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610c47578181015183820152602001610c2f565b50505050505050565b6001600160a01b038116610f7f5760405162461bcd60e51b81526004018080602001828103825260268152602001806113056026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110205760405162461bcd60e51b81526004018080602001828103825260258152602001806114446025913960400191505060405180910390fd5b6001600160a01b0382166110655760405162461bcd60e51b81526004018080602001828103825260238152602001806112e26023913960400191505060405180910390fd5b6110a88160405180606001604052806026815260200161137e602691396001600160a01b038616600090815260208190526040902054919063ffffffff610bf316565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546110dd908263ffffffff610c8a16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600061114283611153565b801561054d575061054d8383611187565b6000611166826301ffc9a760e01b611187565b8015611181575061117f826001600160e01b0319611187565b155b92915050565b600080600061119685856111ad565b915091508180156111a45750805b95945050505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b602083106112355780518252601f199092019160209182019101611216565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d8060008114611296576040519150601f19603f3d011682016040523d82523d6000602084013e61129b565b606091505b50915091506020815110156112b957600080945094505050506112da565b818180602001905160208110156112cf57600080fd5b505190955093505050505b925092905056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332304f6e417070726f76653a207370656e64657220646f65736e277420737570706f7274206f6e417070726f766545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f6e417070726f766528616464726573732c616464726573732c75696e743235362c62797465732953656967546f6b656e3a206f6e6c792073656e646572206f7220726563697069656e742063616e207472616e7366657245524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582076279835faafec28aae7facfa0911aaea8f78f2ebf1707778dba15d0dbc0713964736f6c634300050c0032"
 14046  
 14047  // DeploySeigToken deploys a new Ethereum contract, binding an instance of SeigToken to it.
 14048  func DeploySeigToken(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SeigToken, error) {
 14049  	parsed, err := abi.JSON(strings.NewReader(SeigTokenABI))
 14050  	if err != nil {
 14051  		return common.Address{}, nil, nil, err
 14052  	}
 14053  
 14054  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SeigTokenBin), backend)
 14055  	if err != nil {
 14056  		return common.Address{}, nil, nil, err
 14057  	}
 14058  	return address, tx, &SeigToken{SeigTokenCaller: SeigTokenCaller{contract: contract}, SeigTokenTransactor: SeigTokenTransactor{contract: contract}, SeigTokenFilterer: SeigTokenFilterer{contract: contract}}, nil
 14059  }
 14060  
 14061  // SeigToken is an auto generated Go binding around an Ethereum contract.
 14062  type SeigToken struct {
 14063  	SeigTokenCaller     // Read-only binding to the contract
 14064  	SeigTokenTransactor // Write-only binding to the contract
 14065  	SeigTokenFilterer   // Log filterer for contract events
 14066  }
 14067  
 14068  // SeigTokenCaller is an auto generated read-only Go binding around an Ethereum contract.
 14069  type SeigTokenCaller struct {
 14070  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14071  }
 14072  
 14073  // SeigTokenTransactor is an auto generated write-only Go binding around an Ethereum contract.
 14074  type SeigTokenTransactor struct {
 14075  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14076  }
 14077  
 14078  // SeigTokenFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 14079  type SeigTokenFilterer struct {
 14080  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14081  }
 14082  
 14083  // SeigTokenSession is an auto generated Go binding around an Ethereum contract,
 14084  // with pre-set call and transact options.
 14085  type SeigTokenSession struct {
 14086  	Contract     *SeigToken        // Generic contract binding to set the session for
 14087  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 14088  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 14089  }
 14090  
 14091  // SeigTokenCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 14092  // with pre-set call options.
 14093  type SeigTokenCallerSession struct {
 14094  	Contract *SeigTokenCaller // Generic contract caller binding to set the session for
 14095  	CallOpts bind.CallOpts    // Call options to use throughout this session
 14096  }
 14097  
 14098  // SeigTokenTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 14099  // with pre-set transact options.
 14100  type SeigTokenTransactorSession struct {
 14101  	Contract     *SeigTokenTransactor // Generic contract transactor binding to set the session for
 14102  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
 14103  }
 14104  
 14105  // SeigTokenRaw is an auto generated low-level Go binding around an Ethereum contract.
 14106  type SeigTokenRaw struct {
 14107  	Contract *SeigToken // Generic contract binding to access the raw methods on
 14108  }
 14109  
 14110  // SeigTokenCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 14111  type SeigTokenCallerRaw struct {
 14112  	Contract *SeigTokenCaller // Generic read-only contract binding to access the raw methods on
 14113  }
 14114  
 14115  // SeigTokenTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 14116  type SeigTokenTransactorRaw struct {
 14117  	Contract *SeigTokenTransactor // Generic write-only contract binding to access the raw methods on
 14118  }
 14119  
 14120  // NewSeigToken creates a new instance of SeigToken, bound to a specific deployed contract.
 14121  func NewSeigToken(address common.Address, backend bind.ContractBackend) (*SeigToken, error) {
 14122  	contract, err := bindSeigToken(address, backend, backend, backend)
 14123  	if err != nil {
 14124  		return nil, err
 14125  	}
 14126  	return &SeigToken{SeigTokenCaller: SeigTokenCaller{contract: contract}, SeigTokenTransactor: SeigTokenTransactor{contract: contract}, SeigTokenFilterer: SeigTokenFilterer{contract: contract}}, nil
 14127  }
 14128  
 14129  // NewSeigTokenCaller creates a new read-only instance of SeigToken, bound to a specific deployed contract.
 14130  func NewSeigTokenCaller(address common.Address, caller bind.ContractCaller) (*SeigTokenCaller, error) {
 14131  	contract, err := bindSeigToken(address, caller, nil, nil)
 14132  	if err != nil {
 14133  		return nil, err
 14134  	}
 14135  	return &SeigTokenCaller{contract: contract}, nil
 14136  }
 14137  
 14138  // NewSeigTokenTransactor creates a new write-only instance of SeigToken, bound to a specific deployed contract.
 14139  func NewSeigTokenTransactor(address common.Address, transactor bind.ContractTransactor) (*SeigTokenTransactor, error) {
 14140  	contract, err := bindSeigToken(address, nil, transactor, nil)
 14141  	if err != nil {
 14142  		return nil, err
 14143  	}
 14144  	return &SeigTokenTransactor{contract: contract}, nil
 14145  }
 14146  
 14147  // NewSeigTokenFilterer creates a new log filterer instance of SeigToken, bound to a specific deployed contract.
 14148  func NewSeigTokenFilterer(address common.Address, filterer bind.ContractFilterer) (*SeigTokenFilterer, error) {
 14149  	contract, err := bindSeigToken(address, nil, nil, filterer)
 14150  	if err != nil {
 14151  		return nil, err
 14152  	}
 14153  	return &SeigTokenFilterer{contract: contract}, nil
 14154  }
 14155  
 14156  // bindSeigToken binds a generic wrapper to an already deployed contract.
 14157  func bindSeigToken(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 14158  	parsed, err := abi.JSON(strings.NewReader(SeigTokenABI))
 14159  	if err != nil {
 14160  		return nil, err
 14161  	}
 14162  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 14163  }
 14164  
 14165  // Call invokes the (constant) contract method with params as input values and
 14166  // sets the output to result. The result type might be a single field for simple
 14167  // returns, a slice of interfaces for anonymous returns and a struct for named
 14168  // returns.
 14169  func (_SeigToken *SeigTokenRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14170  	return _SeigToken.Contract.SeigTokenCaller.contract.Call(opts, result, method, params...)
 14171  }
 14172  
 14173  // Transfer initiates a plain transaction to move funds to the contract, calling
 14174  // its default method if one is available.
 14175  func (_SeigToken *SeigTokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14176  	return _SeigToken.Contract.SeigTokenTransactor.contract.Transfer(opts)
 14177  }
 14178  
 14179  // Transact invokes the (paid) contract method with params as input values.
 14180  func (_SeigToken *SeigTokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14181  	return _SeigToken.Contract.SeigTokenTransactor.contract.Transact(opts, method, params...)
 14182  }
 14183  
 14184  // Call invokes the (constant) contract method with params as input values and
 14185  // sets the output to result. The result type might be a single field for simple
 14186  // returns, a slice of interfaces for anonymous returns and a struct for named
 14187  // returns.
 14188  func (_SeigToken *SeigTokenCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14189  	return _SeigToken.Contract.contract.Call(opts, result, method, params...)
 14190  }
 14191  
 14192  // Transfer initiates a plain transaction to move funds to the contract, calling
 14193  // its default method if one is available.
 14194  func (_SeigToken *SeigTokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14195  	return _SeigToken.Contract.contract.Transfer(opts)
 14196  }
 14197  
 14198  // Transact invokes the (paid) contract method with params as input values.
 14199  func (_SeigToken *SeigTokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14200  	return _SeigToken.Contract.contract.Transact(opts, method, params...)
 14201  }
 14202  
 14203  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 14204  //
 14205  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 14206  func (_SeigToken *SeigTokenCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
 14207  	var (
 14208  		ret0 = new([4]byte)
 14209  	)
 14210  	out := ret0
 14211  	err := _SeigToken.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
 14212  	return *ret0, err
 14213  }
 14214  
 14215  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 14216  //
 14217  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 14218  func (_SeigToken *SeigTokenSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
 14219  	return _SeigToken.Contract.INTERFACEIDONAPPROVE(&_SeigToken.CallOpts)
 14220  }
 14221  
 14222  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 14223  //
 14224  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 14225  func (_SeigToken *SeigTokenCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
 14226  	return _SeigToken.Contract.INTERFACEIDONAPPROVE(&_SeigToken.CallOpts)
 14227  }
 14228  
 14229  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 14230  //
 14231  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 14232  func (_SeigToken *SeigTokenCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 14233  	var (
 14234  		ret0 = new(*big.Int)
 14235  	)
 14236  	out := ret0
 14237  	err := _SeigToken.contract.Call(opts, out, "allowance", owner, spender)
 14238  	return *ret0, err
 14239  }
 14240  
 14241  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 14242  //
 14243  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 14244  func (_SeigToken *SeigTokenSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 14245  	return _SeigToken.Contract.Allowance(&_SeigToken.CallOpts, owner, spender)
 14246  }
 14247  
 14248  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 14249  //
 14250  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 14251  func (_SeigToken *SeigTokenCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 14252  	return _SeigToken.Contract.Allowance(&_SeigToken.CallOpts, owner, spender)
 14253  }
 14254  
 14255  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 14256  //
 14257  // Solidity: function balanceOf(address account) constant returns(uint256)
 14258  func (_SeigToken *SeigTokenCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 14259  	var (
 14260  		ret0 = new(*big.Int)
 14261  	)
 14262  	out := ret0
 14263  	err := _SeigToken.contract.Call(opts, out, "balanceOf", account)
 14264  	return *ret0, err
 14265  }
 14266  
 14267  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 14268  //
 14269  // Solidity: function balanceOf(address account) constant returns(uint256)
 14270  func (_SeigToken *SeigTokenSession) BalanceOf(account common.Address) (*big.Int, error) {
 14271  	return _SeigToken.Contract.BalanceOf(&_SeigToken.CallOpts, account)
 14272  }
 14273  
 14274  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 14275  //
 14276  // Solidity: function balanceOf(address account) constant returns(uint256)
 14277  func (_SeigToken *SeigTokenCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 14278  	return _SeigToken.Contract.BalanceOf(&_SeigToken.CallOpts, account)
 14279  }
 14280  
 14281  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 14282  //
 14283  // Solidity: function isOwner() constant returns(bool)
 14284  func (_SeigToken *SeigTokenCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 14285  	var (
 14286  		ret0 = new(bool)
 14287  	)
 14288  	out := ret0
 14289  	err := _SeigToken.contract.Call(opts, out, "isOwner")
 14290  	return *ret0, err
 14291  }
 14292  
 14293  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 14294  //
 14295  // Solidity: function isOwner() constant returns(bool)
 14296  func (_SeigToken *SeigTokenSession) IsOwner() (bool, error) {
 14297  	return _SeigToken.Contract.IsOwner(&_SeigToken.CallOpts)
 14298  }
 14299  
 14300  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 14301  //
 14302  // Solidity: function isOwner() constant returns(bool)
 14303  func (_SeigToken *SeigTokenCallerSession) IsOwner() (bool, error) {
 14304  	return _SeigToken.Contract.IsOwner(&_SeigToken.CallOpts)
 14305  }
 14306  
 14307  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 14308  //
 14309  // Solidity: function owner() constant returns(address)
 14310  func (_SeigToken *SeigTokenCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 14311  	var (
 14312  		ret0 = new(common.Address)
 14313  	)
 14314  	out := ret0
 14315  	err := _SeigToken.contract.Call(opts, out, "owner")
 14316  	return *ret0, err
 14317  }
 14318  
 14319  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 14320  //
 14321  // Solidity: function owner() constant returns(address)
 14322  func (_SeigToken *SeigTokenSession) Owner() (common.Address, error) {
 14323  	return _SeigToken.Contract.Owner(&_SeigToken.CallOpts)
 14324  }
 14325  
 14326  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 14327  //
 14328  // Solidity: function owner() constant returns(address)
 14329  func (_SeigToken *SeigTokenCallerSession) Owner() (common.Address, error) {
 14330  	return _SeigToken.Contract.Owner(&_SeigToken.CallOpts)
 14331  }
 14332  
 14333  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 14334  //
 14335  // Solidity: function seigManager() constant returns(address)
 14336  func (_SeigToken *SeigTokenCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
 14337  	var (
 14338  		ret0 = new(common.Address)
 14339  	)
 14340  	out := ret0
 14341  	err := _SeigToken.contract.Call(opts, out, "seigManager")
 14342  	return *ret0, err
 14343  }
 14344  
 14345  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 14346  //
 14347  // Solidity: function seigManager() constant returns(address)
 14348  func (_SeigToken *SeigTokenSession) SeigManager() (common.Address, error) {
 14349  	return _SeigToken.Contract.SeigManager(&_SeigToken.CallOpts)
 14350  }
 14351  
 14352  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 14353  //
 14354  // Solidity: function seigManager() constant returns(address)
 14355  func (_SeigToken *SeigTokenCallerSession) SeigManager() (common.Address, error) {
 14356  	return _SeigToken.Contract.SeigManager(&_SeigToken.CallOpts)
 14357  }
 14358  
 14359  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 14360  //
 14361  // Solidity: function totalSupply() constant returns(uint256)
 14362  func (_SeigToken *SeigTokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 14363  	var (
 14364  		ret0 = new(*big.Int)
 14365  	)
 14366  	out := ret0
 14367  	err := _SeigToken.contract.Call(opts, out, "totalSupply")
 14368  	return *ret0, err
 14369  }
 14370  
 14371  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 14372  //
 14373  // Solidity: function totalSupply() constant returns(uint256)
 14374  func (_SeigToken *SeigTokenSession) TotalSupply() (*big.Int, error) {
 14375  	return _SeigToken.Contract.TotalSupply(&_SeigToken.CallOpts)
 14376  }
 14377  
 14378  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 14379  //
 14380  // Solidity: function totalSupply() constant returns(uint256)
 14381  func (_SeigToken *SeigTokenCallerSession) TotalSupply() (*big.Int, error) {
 14382  	return _SeigToken.Contract.TotalSupply(&_SeigToken.CallOpts)
 14383  }
 14384  
 14385  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 14386  //
 14387  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 14388  func (_SeigToken *SeigTokenTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
 14389  	return _SeigToken.contract.Transact(opts, "approve", spender, amount)
 14390  }
 14391  
 14392  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 14393  //
 14394  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 14395  func (_SeigToken *SeigTokenSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 14396  	return _SeigToken.Contract.Approve(&_SeigToken.TransactOpts, spender, amount)
 14397  }
 14398  
 14399  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 14400  //
 14401  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 14402  func (_SeigToken *SeigTokenTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 14403  	return _SeigToken.Contract.Approve(&_SeigToken.TransactOpts, spender, amount)
 14404  }
 14405  
 14406  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 14407  //
 14408  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 14409  func (_SeigToken *SeigTokenTransactor) ApproveAndCall(opts *bind.TransactOpts, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 14410  	return _SeigToken.contract.Transact(opts, "approveAndCall", spender, amount, data)
 14411  }
 14412  
 14413  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 14414  //
 14415  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 14416  func (_SeigToken *SeigTokenSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 14417  	return _SeigToken.Contract.ApproveAndCall(&_SeigToken.TransactOpts, spender, amount, data)
 14418  }
 14419  
 14420  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 14421  //
 14422  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 14423  func (_SeigToken *SeigTokenTransactorSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 14424  	return _SeigToken.Contract.ApproveAndCall(&_SeigToken.TransactOpts, spender, amount, data)
 14425  }
 14426  
 14427  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 14428  //
 14429  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 14430  func (_SeigToken *SeigTokenTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 14431  	return _SeigToken.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 14432  }
 14433  
 14434  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 14435  //
 14436  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 14437  func (_SeigToken *SeigTokenSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 14438  	return _SeigToken.Contract.DecreaseAllowance(&_SeigToken.TransactOpts, spender, subtractedValue)
 14439  }
 14440  
 14441  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 14442  //
 14443  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 14444  func (_SeigToken *SeigTokenTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 14445  	return _SeigToken.Contract.DecreaseAllowance(&_SeigToken.TransactOpts, spender, subtractedValue)
 14446  }
 14447  
 14448  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 14449  //
 14450  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 14451  func (_SeigToken *SeigTokenTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 14452  	return _SeigToken.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 14453  }
 14454  
 14455  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 14456  //
 14457  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 14458  func (_SeigToken *SeigTokenSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 14459  	return _SeigToken.Contract.IncreaseAllowance(&_SeigToken.TransactOpts, spender, addedValue)
 14460  }
 14461  
 14462  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 14463  //
 14464  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 14465  func (_SeigToken *SeigTokenTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 14466  	return _SeigToken.Contract.IncreaseAllowance(&_SeigToken.TransactOpts, spender, addedValue)
 14467  }
 14468  
 14469  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 14470  //
 14471  // Solidity: function renounceMinter(address target) returns()
 14472  func (_SeigToken *SeigTokenTransactor) RenounceMinter(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 14473  	return _SeigToken.contract.Transact(opts, "renounceMinter", target)
 14474  }
 14475  
 14476  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 14477  //
 14478  // Solidity: function renounceMinter(address target) returns()
 14479  func (_SeigToken *SeigTokenSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
 14480  	return _SeigToken.Contract.RenounceMinter(&_SeigToken.TransactOpts, target)
 14481  }
 14482  
 14483  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 14484  //
 14485  // Solidity: function renounceMinter(address target) returns()
 14486  func (_SeigToken *SeigTokenTransactorSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
 14487  	return _SeigToken.Contract.RenounceMinter(&_SeigToken.TransactOpts, target)
 14488  }
 14489  
 14490  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 14491  //
 14492  // Solidity: function renounceOwnership(address target) returns()
 14493  func (_SeigToken *SeigTokenTransactor) RenounceOwnership(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 14494  	return _SeigToken.contract.Transact(opts, "renounceOwnership", target)
 14495  }
 14496  
 14497  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 14498  //
 14499  // Solidity: function renounceOwnership(address target) returns()
 14500  func (_SeigToken *SeigTokenSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
 14501  	return _SeigToken.Contract.RenounceOwnership(&_SeigToken.TransactOpts, target)
 14502  }
 14503  
 14504  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 14505  //
 14506  // Solidity: function renounceOwnership(address target) returns()
 14507  func (_SeigToken *SeigTokenTransactorSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
 14508  	return _SeigToken.Contract.RenounceOwnership(&_SeigToken.TransactOpts, target)
 14509  }
 14510  
 14511  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 14512  //
 14513  // Solidity: function renounceOwnership() returns()
 14514  func (_SeigToken *SeigTokenTransactor) RenounceOwnership0(opts *bind.TransactOpts) (*types.Transaction, error) {
 14515  	return _SeigToken.contract.Transact(opts, "renounceOwnership0")
 14516  }
 14517  
 14518  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 14519  //
 14520  // Solidity: function renounceOwnership() returns()
 14521  func (_SeigToken *SeigTokenSession) RenounceOwnership0() (*types.Transaction, error) {
 14522  	return _SeigToken.Contract.RenounceOwnership0(&_SeigToken.TransactOpts)
 14523  }
 14524  
 14525  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 14526  //
 14527  // Solidity: function renounceOwnership() returns()
 14528  func (_SeigToken *SeigTokenTransactorSession) RenounceOwnership0() (*types.Transaction, error) {
 14529  	return _SeigToken.Contract.RenounceOwnership0(&_SeigToken.TransactOpts)
 14530  }
 14531  
 14532  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 14533  //
 14534  // Solidity: function renouncePauser(address target) returns()
 14535  func (_SeigToken *SeigTokenTransactor) RenouncePauser(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 14536  	return _SeigToken.contract.Transact(opts, "renouncePauser", target)
 14537  }
 14538  
 14539  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 14540  //
 14541  // Solidity: function renouncePauser(address target) returns()
 14542  func (_SeigToken *SeigTokenSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
 14543  	return _SeigToken.Contract.RenouncePauser(&_SeigToken.TransactOpts, target)
 14544  }
 14545  
 14546  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 14547  //
 14548  // Solidity: function renouncePauser(address target) returns()
 14549  func (_SeigToken *SeigTokenTransactorSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
 14550  	return _SeigToken.Contract.RenouncePauser(&_SeigToken.TransactOpts, target)
 14551  }
 14552  
 14553  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 14554  //
 14555  // Solidity: function setSeigManager(address _seigManager) returns()
 14556  func (_SeigToken *SeigTokenTransactor) SetSeigManager(opts *bind.TransactOpts, _seigManager common.Address) (*types.Transaction, error) {
 14557  	return _SeigToken.contract.Transact(opts, "setSeigManager", _seigManager)
 14558  }
 14559  
 14560  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 14561  //
 14562  // Solidity: function setSeigManager(address _seigManager) returns()
 14563  func (_SeigToken *SeigTokenSession) SetSeigManager(_seigManager common.Address) (*types.Transaction, error) {
 14564  	return _SeigToken.Contract.SetSeigManager(&_SeigToken.TransactOpts, _seigManager)
 14565  }
 14566  
 14567  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 14568  //
 14569  // Solidity: function setSeigManager(address _seigManager) returns()
 14570  func (_SeigToken *SeigTokenTransactorSession) SetSeigManager(_seigManager common.Address) (*types.Transaction, error) {
 14571  	return _SeigToken.Contract.SetSeigManager(&_SeigToken.TransactOpts, _seigManager)
 14572  }
 14573  
 14574  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 14575  //
 14576  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 14577  func (_SeigToken *SeigTokenTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 14578  	return _SeigToken.contract.Transact(opts, "transfer", recipient, amount)
 14579  }
 14580  
 14581  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 14582  //
 14583  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 14584  func (_SeigToken *SeigTokenSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 14585  	return _SeigToken.Contract.Transfer(&_SeigToken.TransactOpts, recipient, amount)
 14586  }
 14587  
 14588  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 14589  //
 14590  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 14591  func (_SeigToken *SeigTokenTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 14592  	return _SeigToken.Contract.Transfer(&_SeigToken.TransactOpts, recipient, amount)
 14593  }
 14594  
 14595  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 14596  //
 14597  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 14598  func (_SeigToken *SeigTokenTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 14599  	return _SeigToken.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 14600  }
 14601  
 14602  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 14603  //
 14604  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 14605  func (_SeigToken *SeigTokenSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 14606  	return _SeigToken.Contract.TransferFrom(&_SeigToken.TransactOpts, sender, recipient, amount)
 14607  }
 14608  
 14609  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 14610  //
 14611  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 14612  func (_SeigToken *SeigTokenTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 14613  	return _SeigToken.Contract.TransferFrom(&_SeigToken.TransactOpts, sender, recipient, amount)
 14614  }
 14615  
 14616  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 14617  //
 14618  // Solidity: function transferOwnership(address target, address newOwner) returns()
 14619  func (_SeigToken *SeigTokenTransactor) TransferOwnership(opts *bind.TransactOpts, target common.Address, newOwner common.Address) (*types.Transaction, error) {
 14620  	return _SeigToken.contract.Transact(opts, "transferOwnership", target, newOwner)
 14621  }
 14622  
 14623  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 14624  //
 14625  // Solidity: function transferOwnership(address target, address newOwner) returns()
 14626  func (_SeigToken *SeigTokenSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
 14627  	return _SeigToken.Contract.TransferOwnership(&_SeigToken.TransactOpts, target, newOwner)
 14628  }
 14629  
 14630  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 14631  //
 14632  // Solidity: function transferOwnership(address target, address newOwner) returns()
 14633  func (_SeigToken *SeigTokenTransactorSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
 14634  	return _SeigToken.Contract.TransferOwnership(&_SeigToken.TransactOpts, target, newOwner)
 14635  }
 14636  
 14637  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 14638  //
 14639  // Solidity: function transferOwnership(address newOwner) returns()
 14640  func (_SeigToken *SeigTokenTransactor) TransferOwnership0(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 14641  	return _SeigToken.contract.Transact(opts, "transferOwnership0", newOwner)
 14642  }
 14643  
 14644  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 14645  //
 14646  // Solidity: function transferOwnership(address newOwner) returns()
 14647  func (_SeigToken *SeigTokenSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
 14648  	return _SeigToken.Contract.TransferOwnership0(&_SeigToken.TransactOpts, newOwner)
 14649  }
 14650  
 14651  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 14652  //
 14653  // Solidity: function transferOwnership(address newOwner) returns()
 14654  func (_SeigToken *SeigTokenTransactorSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
 14655  	return _SeigToken.Contract.TransferOwnership0(&_SeigToken.TransactOpts, newOwner)
 14656  }
 14657  
 14658  // SeigTokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the SeigToken contract.
 14659  type SeigTokenApprovalIterator struct {
 14660  	Event *SeigTokenApproval // Event containing the contract specifics and raw log
 14661  
 14662  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14663  	event    string              // Event name to use for unpacking event data
 14664  
 14665  	logs chan types.Log        // Log channel receiving the found contract events
 14666  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 14667  	done bool                  // Whether the subscription completed delivering logs
 14668  	fail error                 // Occurred error to stop iteration
 14669  }
 14670  
 14671  // Next advances the iterator to the subsequent event, returning whether there
 14672  // are any more events found. In case of a retrieval or parsing error, false is
 14673  // returned and Error() can be queried for the exact failure.
 14674  func (it *SeigTokenApprovalIterator) Next() bool {
 14675  	// If the iterator failed, stop iterating
 14676  	if it.fail != nil {
 14677  		return false
 14678  	}
 14679  	// If the iterator completed, deliver directly whatever's available
 14680  	if it.done {
 14681  		select {
 14682  		case log := <-it.logs:
 14683  			it.Event = new(SeigTokenApproval)
 14684  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14685  				it.fail = err
 14686  				return false
 14687  			}
 14688  			it.Event.Raw = log
 14689  			return true
 14690  
 14691  		default:
 14692  			return false
 14693  		}
 14694  	}
 14695  	// Iterator still in progress, wait for either a data or an error event
 14696  	select {
 14697  	case log := <-it.logs:
 14698  		it.Event = new(SeigTokenApproval)
 14699  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14700  			it.fail = err
 14701  			return false
 14702  		}
 14703  		it.Event.Raw = log
 14704  		return true
 14705  
 14706  	case err := <-it.sub.Err():
 14707  		it.done = true
 14708  		it.fail = err
 14709  		return it.Next()
 14710  	}
 14711  }
 14712  
 14713  // Error returns any retrieval or parsing error occurred during filtering.
 14714  func (it *SeigTokenApprovalIterator) Error() error {
 14715  	return it.fail
 14716  }
 14717  
 14718  // Close terminates the iteration process, releasing any pending underlying
 14719  // resources.
 14720  func (it *SeigTokenApprovalIterator) Close() error {
 14721  	it.sub.Unsubscribe()
 14722  	return nil
 14723  }
 14724  
 14725  // SeigTokenApproval represents a Approval event raised by the SeigToken contract.
 14726  type SeigTokenApproval struct {
 14727  	Owner   common.Address
 14728  	Spender common.Address
 14729  	Value   *big.Int
 14730  	Raw     types.Log // Blockchain specific contextual infos
 14731  }
 14732  
 14733  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14734  //
 14735  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 14736  func (_SeigToken *SeigTokenFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*SeigTokenApprovalIterator, error) {
 14737  
 14738  	var ownerRule []interface{}
 14739  	for _, ownerItem := range owner {
 14740  		ownerRule = append(ownerRule, ownerItem)
 14741  	}
 14742  	var spenderRule []interface{}
 14743  	for _, spenderItem := range spender {
 14744  		spenderRule = append(spenderRule, spenderItem)
 14745  	}
 14746  
 14747  	logs, sub, err := _SeigToken.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 14748  	if err != nil {
 14749  		return nil, err
 14750  	}
 14751  	return &SeigTokenApprovalIterator{contract: _SeigToken.contract, event: "Approval", logs: logs, sub: sub}, nil
 14752  }
 14753  
 14754  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14755  //
 14756  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 14757  func (_SeigToken *SeigTokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *SeigTokenApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 14758  
 14759  	var ownerRule []interface{}
 14760  	for _, ownerItem := range owner {
 14761  		ownerRule = append(ownerRule, ownerItem)
 14762  	}
 14763  	var spenderRule []interface{}
 14764  	for _, spenderItem := range spender {
 14765  		spenderRule = append(spenderRule, spenderItem)
 14766  	}
 14767  
 14768  	logs, sub, err := _SeigToken.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 14769  	if err != nil {
 14770  		return nil, err
 14771  	}
 14772  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14773  		defer sub.Unsubscribe()
 14774  		for {
 14775  			select {
 14776  			case log := <-logs:
 14777  				// New log arrived, parse the event and forward to the user
 14778  				event := new(SeigTokenApproval)
 14779  				if err := _SeigToken.contract.UnpackLog(event, "Approval", log); err != nil {
 14780  					return err
 14781  				}
 14782  				event.Raw = log
 14783  
 14784  				select {
 14785  				case sink <- event:
 14786  				case err := <-sub.Err():
 14787  					return err
 14788  				case <-quit:
 14789  					return nil
 14790  				}
 14791  			case err := <-sub.Err():
 14792  				return err
 14793  			case <-quit:
 14794  				return nil
 14795  			}
 14796  		}
 14797  	}), nil
 14798  }
 14799  
 14800  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14801  //
 14802  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 14803  func (_SeigToken *SeigTokenFilterer) ParseApproval(log types.Log) (*SeigTokenApproval, error) {
 14804  	event := new(SeigTokenApproval)
 14805  	if err := _SeigToken.contract.UnpackLog(event, "Approval", log); err != nil {
 14806  		return nil, err
 14807  	}
 14808  	return event, nil
 14809  }
 14810  
 14811  // SeigTokenOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the SeigToken contract.
 14812  type SeigTokenOwnershipTransferredIterator struct {
 14813  	Event *SeigTokenOwnershipTransferred // Event containing the contract specifics and raw log
 14814  
 14815  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14816  	event    string              // Event name to use for unpacking event data
 14817  
 14818  	logs chan types.Log        // Log channel receiving the found contract events
 14819  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 14820  	done bool                  // Whether the subscription completed delivering logs
 14821  	fail error                 // Occurred error to stop iteration
 14822  }
 14823  
 14824  // Next advances the iterator to the subsequent event, returning whether there
 14825  // are any more events found. In case of a retrieval or parsing error, false is
 14826  // returned and Error() can be queried for the exact failure.
 14827  func (it *SeigTokenOwnershipTransferredIterator) Next() bool {
 14828  	// If the iterator failed, stop iterating
 14829  	if it.fail != nil {
 14830  		return false
 14831  	}
 14832  	// If the iterator completed, deliver directly whatever's available
 14833  	if it.done {
 14834  		select {
 14835  		case log := <-it.logs:
 14836  			it.Event = new(SeigTokenOwnershipTransferred)
 14837  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14838  				it.fail = err
 14839  				return false
 14840  			}
 14841  			it.Event.Raw = log
 14842  			return true
 14843  
 14844  		default:
 14845  			return false
 14846  		}
 14847  	}
 14848  	// Iterator still in progress, wait for either a data or an error event
 14849  	select {
 14850  	case log := <-it.logs:
 14851  		it.Event = new(SeigTokenOwnershipTransferred)
 14852  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14853  			it.fail = err
 14854  			return false
 14855  		}
 14856  		it.Event.Raw = log
 14857  		return true
 14858  
 14859  	case err := <-it.sub.Err():
 14860  		it.done = true
 14861  		it.fail = err
 14862  		return it.Next()
 14863  	}
 14864  }
 14865  
 14866  // Error returns any retrieval or parsing error occurred during filtering.
 14867  func (it *SeigTokenOwnershipTransferredIterator) Error() error {
 14868  	return it.fail
 14869  }
 14870  
 14871  // Close terminates the iteration process, releasing any pending underlying
 14872  // resources.
 14873  func (it *SeigTokenOwnershipTransferredIterator) Close() error {
 14874  	it.sub.Unsubscribe()
 14875  	return nil
 14876  }
 14877  
 14878  // SeigTokenOwnershipTransferred represents a OwnershipTransferred event raised by the SeigToken contract.
 14879  type SeigTokenOwnershipTransferred struct {
 14880  	PreviousOwner common.Address
 14881  	NewOwner      common.Address
 14882  	Raw           types.Log // Blockchain specific contextual infos
 14883  }
 14884  
 14885  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 14886  //
 14887  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 14888  func (_SeigToken *SeigTokenFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*SeigTokenOwnershipTransferredIterator, error) {
 14889  
 14890  	var previousOwnerRule []interface{}
 14891  	for _, previousOwnerItem := range previousOwner {
 14892  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 14893  	}
 14894  	var newOwnerRule []interface{}
 14895  	for _, newOwnerItem := range newOwner {
 14896  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 14897  	}
 14898  
 14899  	logs, sub, err := _SeigToken.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 14900  	if err != nil {
 14901  		return nil, err
 14902  	}
 14903  	return &SeigTokenOwnershipTransferredIterator{contract: _SeigToken.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 14904  }
 14905  
 14906  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 14907  //
 14908  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 14909  func (_SeigToken *SeigTokenFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *SeigTokenOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 14910  
 14911  	var previousOwnerRule []interface{}
 14912  	for _, previousOwnerItem := range previousOwner {
 14913  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 14914  	}
 14915  	var newOwnerRule []interface{}
 14916  	for _, newOwnerItem := range newOwner {
 14917  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 14918  	}
 14919  
 14920  	logs, sub, err := _SeigToken.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 14921  	if err != nil {
 14922  		return nil, err
 14923  	}
 14924  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14925  		defer sub.Unsubscribe()
 14926  		for {
 14927  			select {
 14928  			case log := <-logs:
 14929  				// New log arrived, parse the event and forward to the user
 14930  				event := new(SeigTokenOwnershipTransferred)
 14931  				if err := _SeigToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 14932  					return err
 14933  				}
 14934  				event.Raw = log
 14935  
 14936  				select {
 14937  				case sink <- event:
 14938  				case err := <-sub.Err():
 14939  					return err
 14940  				case <-quit:
 14941  					return nil
 14942  				}
 14943  			case err := <-sub.Err():
 14944  				return err
 14945  			case <-quit:
 14946  				return nil
 14947  			}
 14948  		}
 14949  	}), nil
 14950  }
 14951  
 14952  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 14953  //
 14954  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 14955  func (_SeigToken *SeigTokenFilterer) ParseOwnershipTransferred(log types.Log) (*SeigTokenOwnershipTransferred, error) {
 14956  	event := new(SeigTokenOwnershipTransferred)
 14957  	if err := _SeigToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 14958  		return nil, err
 14959  	}
 14960  	return event, nil
 14961  }
 14962  
 14963  // SeigTokenTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the SeigToken contract.
 14964  type SeigTokenTransferIterator struct {
 14965  	Event *SeigTokenTransfer // Event containing the contract specifics and raw log
 14966  
 14967  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14968  	event    string              // Event name to use for unpacking event data
 14969  
 14970  	logs chan types.Log        // Log channel receiving the found contract events
 14971  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 14972  	done bool                  // Whether the subscription completed delivering logs
 14973  	fail error                 // Occurred error to stop iteration
 14974  }
 14975  
 14976  // Next advances the iterator to the subsequent event, returning whether there
 14977  // are any more events found. In case of a retrieval or parsing error, false is
 14978  // returned and Error() can be queried for the exact failure.
 14979  func (it *SeigTokenTransferIterator) Next() bool {
 14980  	// If the iterator failed, stop iterating
 14981  	if it.fail != nil {
 14982  		return false
 14983  	}
 14984  	// If the iterator completed, deliver directly whatever's available
 14985  	if it.done {
 14986  		select {
 14987  		case log := <-it.logs:
 14988  			it.Event = new(SeigTokenTransfer)
 14989  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14990  				it.fail = err
 14991  				return false
 14992  			}
 14993  			it.Event.Raw = log
 14994  			return true
 14995  
 14996  		default:
 14997  			return false
 14998  		}
 14999  	}
 15000  	// Iterator still in progress, wait for either a data or an error event
 15001  	select {
 15002  	case log := <-it.logs:
 15003  		it.Event = new(SeigTokenTransfer)
 15004  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15005  			it.fail = err
 15006  			return false
 15007  		}
 15008  		it.Event.Raw = log
 15009  		return true
 15010  
 15011  	case err := <-it.sub.Err():
 15012  		it.done = true
 15013  		it.fail = err
 15014  		return it.Next()
 15015  	}
 15016  }
 15017  
 15018  // Error returns any retrieval or parsing error occurred during filtering.
 15019  func (it *SeigTokenTransferIterator) Error() error {
 15020  	return it.fail
 15021  }
 15022  
 15023  // Close terminates the iteration process, releasing any pending underlying
 15024  // resources.
 15025  func (it *SeigTokenTransferIterator) Close() error {
 15026  	it.sub.Unsubscribe()
 15027  	return nil
 15028  }
 15029  
 15030  // SeigTokenTransfer represents a Transfer event raised by the SeigToken contract.
 15031  type SeigTokenTransfer struct {
 15032  	From  common.Address
 15033  	To    common.Address
 15034  	Value *big.Int
 15035  	Raw   types.Log // Blockchain specific contextual infos
 15036  }
 15037  
 15038  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 15039  //
 15040  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 15041  func (_SeigToken *SeigTokenFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*SeigTokenTransferIterator, error) {
 15042  
 15043  	var fromRule []interface{}
 15044  	for _, fromItem := range from {
 15045  		fromRule = append(fromRule, fromItem)
 15046  	}
 15047  	var toRule []interface{}
 15048  	for _, toItem := range to {
 15049  		toRule = append(toRule, toItem)
 15050  	}
 15051  
 15052  	logs, sub, err := _SeigToken.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 15053  	if err != nil {
 15054  		return nil, err
 15055  	}
 15056  	return &SeigTokenTransferIterator{contract: _SeigToken.contract, event: "Transfer", logs: logs, sub: sub}, nil
 15057  }
 15058  
 15059  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 15060  //
 15061  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 15062  func (_SeigToken *SeigTokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *SeigTokenTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 15063  
 15064  	var fromRule []interface{}
 15065  	for _, fromItem := range from {
 15066  		fromRule = append(fromRule, fromItem)
 15067  	}
 15068  	var toRule []interface{}
 15069  	for _, toItem := range to {
 15070  		toRule = append(toRule, toItem)
 15071  	}
 15072  
 15073  	logs, sub, err := _SeigToken.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 15074  	if err != nil {
 15075  		return nil, err
 15076  	}
 15077  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15078  		defer sub.Unsubscribe()
 15079  		for {
 15080  			select {
 15081  			case log := <-logs:
 15082  				// New log arrived, parse the event and forward to the user
 15083  				event := new(SeigTokenTransfer)
 15084  				if err := _SeigToken.contract.UnpackLog(event, "Transfer", log); err != nil {
 15085  					return err
 15086  				}
 15087  				event.Raw = log
 15088  
 15089  				select {
 15090  				case sink <- event:
 15091  				case err := <-sub.Err():
 15092  					return err
 15093  				case <-quit:
 15094  					return nil
 15095  				}
 15096  			case err := <-sub.Err():
 15097  				return err
 15098  			case <-quit:
 15099  				return nil
 15100  			}
 15101  		}
 15102  	}), nil
 15103  }
 15104  
 15105  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 15106  //
 15107  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 15108  func (_SeigToken *SeigTokenFilterer) ParseTransfer(log types.Log) (*SeigTokenTransfer, error) {
 15109  	event := new(SeigTokenTransfer)
 15110  	if err := _SeigToken.contract.UnpackLog(event, "Transfer", log); err != nil {
 15111  		return nil, err
 15112  	}
 15113  	return event, nil
 15114  }
 15115  
 15116  // SortitionSumTreeFactoryABI is the input ABI used to generate the binding from.
 15117  const SortitionSumTreeFactoryABI = "[]"
 15118  
 15119  // SortitionSumTreeFactoryBin is the compiled bytecode used for deploying new contracts.
 15120  var SortitionSumTreeFactoryBin = "0x60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bcd4a2f7191f6225818d24ef523ce38407f6aa8793bb239fc5b3f86701c244e164736f6c634300050c0032"
 15121  
 15122  // DeploySortitionSumTreeFactory deploys a new Ethereum contract, binding an instance of SortitionSumTreeFactory to it.
 15123  func DeploySortitionSumTreeFactory(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SortitionSumTreeFactory, error) {
 15124  	parsed, err := abi.JSON(strings.NewReader(SortitionSumTreeFactoryABI))
 15125  	if err != nil {
 15126  		return common.Address{}, nil, nil, err
 15127  	}
 15128  
 15129  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SortitionSumTreeFactoryBin), backend)
 15130  	if err != nil {
 15131  		return common.Address{}, nil, nil, err
 15132  	}
 15133  	return address, tx, &SortitionSumTreeFactory{SortitionSumTreeFactoryCaller: SortitionSumTreeFactoryCaller{contract: contract}, SortitionSumTreeFactoryTransactor: SortitionSumTreeFactoryTransactor{contract: contract}, SortitionSumTreeFactoryFilterer: SortitionSumTreeFactoryFilterer{contract: contract}}, nil
 15134  }
 15135  
 15136  // SortitionSumTreeFactory is an auto generated Go binding around an Ethereum contract.
 15137  type SortitionSumTreeFactory struct {
 15138  	SortitionSumTreeFactoryCaller     // Read-only binding to the contract
 15139  	SortitionSumTreeFactoryTransactor // Write-only binding to the contract
 15140  	SortitionSumTreeFactoryFilterer   // Log filterer for contract events
 15141  }
 15142  
 15143  // SortitionSumTreeFactoryCaller is an auto generated read-only Go binding around an Ethereum contract.
 15144  type SortitionSumTreeFactoryCaller struct {
 15145  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15146  }
 15147  
 15148  // SortitionSumTreeFactoryTransactor is an auto generated write-only Go binding around an Ethereum contract.
 15149  type SortitionSumTreeFactoryTransactor struct {
 15150  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15151  }
 15152  
 15153  // SortitionSumTreeFactoryFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 15154  type SortitionSumTreeFactoryFilterer struct {
 15155  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15156  }
 15157  
 15158  // SortitionSumTreeFactorySession is an auto generated Go binding around an Ethereum contract,
 15159  // with pre-set call and transact options.
 15160  type SortitionSumTreeFactorySession struct {
 15161  	Contract     *SortitionSumTreeFactory // Generic contract binding to set the session for
 15162  	CallOpts     bind.CallOpts            // Call options to use throughout this session
 15163  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
 15164  }
 15165  
 15166  // SortitionSumTreeFactoryCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 15167  // with pre-set call options.
 15168  type SortitionSumTreeFactoryCallerSession struct {
 15169  	Contract *SortitionSumTreeFactoryCaller // Generic contract caller binding to set the session for
 15170  	CallOpts bind.CallOpts                  // Call options to use throughout this session
 15171  }
 15172  
 15173  // SortitionSumTreeFactoryTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 15174  // with pre-set transact options.
 15175  type SortitionSumTreeFactoryTransactorSession struct {
 15176  	Contract     *SortitionSumTreeFactoryTransactor // Generic contract transactor binding to set the session for
 15177  	TransactOpts bind.TransactOpts                  // Transaction auth options to use throughout this session
 15178  }
 15179  
 15180  // SortitionSumTreeFactoryRaw is an auto generated low-level Go binding around an Ethereum contract.
 15181  type SortitionSumTreeFactoryRaw struct {
 15182  	Contract *SortitionSumTreeFactory // Generic contract binding to access the raw methods on
 15183  }
 15184  
 15185  // SortitionSumTreeFactoryCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 15186  type SortitionSumTreeFactoryCallerRaw struct {
 15187  	Contract *SortitionSumTreeFactoryCaller // Generic read-only contract binding to access the raw methods on
 15188  }
 15189  
 15190  // SortitionSumTreeFactoryTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 15191  type SortitionSumTreeFactoryTransactorRaw struct {
 15192  	Contract *SortitionSumTreeFactoryTransactor // Generic write-only contract binding to access the raw methods on
 15193  }
 15194  
 15195  // NewSortitionSumTreeFactory creates a new instance of SortitionSumTreeFactory, bound to a specific deployed contract.
 15196  func NewSortitionSumTreeFactory(address common.Address, backend bind.ContractBackend) (*SortitionSumTreeFactory, error) {
 15197  	contract, err := bindSortitionSumTreeFactory(address, backend, backend, backend)
 15198  	if err != nil {
 15199  		return nil, err
 15200  	}
 15201  	return &SortitionSumTreeFactory{SortitionSumTreeFactoryCaller: SortitionSumTreeFactoryCaller{contract: contract}, SortitionSumTreeFactoryTransactor: SortitionSumTreeFactoryTransactor{contract: contract}, SortitionSumTreeFactoryFilterer: SortitionSumTreeFactoryFilterer{contract: contract}}, nil
 15202  }
 15203  
 15204  // NewSortitionSumTreeFactoryCaller creates a new read-only instance of SortitionSumTreeFactory, bound to a specific deployed contract.
 15205  func NewSortitionSumTreeFactoryCaller(address common.Address, caller bind.ContractCaller) (*SortitionSumTreeFactoryCaller, error) {
 15206  	contract, err := bindSortitionSumTreeFactory(address, caller, nil, nil)
 15207  	if err != nil {
 15208  		return nil, err
 15209  	}
 15210  	return &SortitionSumTreeFactoryCaller{contract: contract}, nil
 15211  }
 15212  
 15213  // NewSortitionSumTreeFactoryTransactor creates a new write-only instance of SortitionSumTreeFactory, bound to a specific deployed contract.
 15214  func NewSortitionSumTreeFactoryTransactor(address common.Address, transactor bind.ContractTransactor) (*SortitionSumTreeFactoryTransactor, error) {
 15215  	contract, err := bindSortitionSumTreeFactory(address, nil, transactor, nil)
 15216  	if err != nil {
 15217  		return nil, err
 15218  	}
 15219  	return &SortitionSumTreeFactoryTransactor{contract: contract}, nil
 15220  }
 15221  
 15222  // NewSortitionSumTreeFactoryFilterer creates a new log filterer instance of SortitionSumTreeFactory, bound to a specific deployed contract.
 15223  func NewSortitionSumTreeFactoryFilterer(address common.Address, filterer bind.ContractFilterer) (*SortitionSumTreeFactoryFilterer, error) {
 15224  	contract, err := bindSortitionSumTreeFactory(address, nil, nil, filterer)
 15225  	if err != nil {
 15226  		return nil, err
 15227  	}
 15228  	return &SortitionSumTreeFactoryFilterer{contract: contract}, nil
 15229  }
 15230  
 15231  // bindSortitionSumTreeFactory binds a generic wrapper to an already deployed contract.
 15232  func bindSortitionSumTreeFactory(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 15233  	parsed, err := abi.JSON(strings.NewReader(SortitionSumTreeFactoryABI))
 15234  	if err != nil {
 15235  		return nil, err
 15236  	}
 15237  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 15238  }
 15239  
 15240  // Call invokes the (constant) contract method with params as input values and
 15241  // sets the output to result. The result type might be a single field for simple
 15242  // returns, a slice of interfaces for anonymous returns and a struct for named
 15243  // returns.
 15244  func (_SortitionSumTreeFactory *SortitionSumTreeFactoryRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 15245  	return _SortitionSumTreeFactory.Contract.SortitionSumTreeFactoryCaller.contract.Call(opts, result, method, params...)
 15246  }
 15247  
 15248  // Transfer initiates a plain transaction to move funds to the contract, calling
 15249  // its default method if one is available.
 15250  func (_SortitionSumTreeFactory *SortitionSumTreeFactoryRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 15251  	return _SortitionSumTreeFactory.Contract.SortitionSumTreeFactoryTransactor.contract.Transfer(opts)
 15252  }
 15253  
 15254  // Transact invokes the (paid) contract method with params as input values.
 15255  func (_SortitionSumTreeFactory *SortitionSumTreeFactoryRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 15256  	return _SortitionSumTreeFactory.Contract.SortitionSumTreeFactoryTransactor.contract.Transact(opts, method, params...)
 15257  }
 15258  
 15259  // Call invokes the (constant) contract method with params as input values and
 15260  // sets the output to result. The result type might be a single field for simple
 15261  // returns, a slice of interfaces for anonymous returns and a struct for named
 15262  // returns.
 15263  func (_SortitionSumTreeFactory *SortitionSumTreeFactoryCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 15264  	return _SortitionSumTreeFactory.Contract.contract.Call(opts, result, method, params...)
 15265  }
 15266  
 15267  // Transfer initiates a plain transaction to move funds to the contract, calling
 15268  // its default method if one is available.
 15269  func (_SortitionSumTreeFactory *SortitionSumTreeFactoryTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 15270  	return _SortitionSumTreeFactory.Contract.contract.Transfer(opts)
 15271  }
 15272  
 15273  // Transact invokes the (paid) contract method with params as input values.
 15274  func (_SortitionSumTreeFactory *SortitionSumTreeFactoryTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 15275  	return _SortitionSumTreeFactory.Contract.contract.Transact(opts, method, params...)
 15276  }
 15277  
 15278  // WTONABI is the input ABI used to generate the binding from.
 15279  const WTONABI = "[{\"inputs\":[{\"internalType\":\"contractERC20Mintable\",\"name\":\"_ton\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"INTERFACE_ID_ON_APPROVE\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tonAmount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onApprove\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"renouncePauser\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"seigManager\",\"outputs\":[{\"internalType\":\"contractSeigManagerI\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractSeigManagerI\",\"name\":\"_seigManager\",\"type\":\"address\"}],\"name\":\"setSeigManager\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tonAmount\",\"type\":\"uint256\"}],\"name\":\"swapFromTON\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tonAmount\",\"type\":\"uint256\"}],\"name\":\"swapFromTONAndTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"name\":\"swapToTON\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wtonAmount\",\"type\":\"uint256\"}],\"name\":\"swapToTONAndTransfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ton\",\"outputs\":[{\"internalType\":\"contractERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 15280  
 15281  // WTONFuncSigs maps the 4-byte function signature to its string representation.
 15282  var WTONFuncSigs = map[string]string{
 15283  	"6cd28f9a": "INTERFACE_ID_ON_APPROVE()",
 15284  	"983b2d56": "addMinter(address)",
 15285  	"dd62ed3e": "allowance(address,address)",
 15286  	"095ea7b3": "approve(address,uint256)",
 15287  	"cae9ca51": "approveAndCall(address,uint256,bytes)",
 15288  	"70a08231": "balanceOf(address)",
 15289  	"42966c68": "burn(uint256)",
 15290  	"79cc6790": "burnFrom(address,uint256)",
 15291  	"313ce567": "decimals()",
 15292  	"a457c2d7": "decreaseAllowance(address,uint256)",
 15293  	"39509351": "increaseAllowance(address,uint256)",
 15294  	"aa271e1a": "isMinter(address)",
 15295  	"8f32d59b": "isOwner()",
 15296  	"40c10f19": "mint(address,uint256)",
 15297  	"06fdde03": "name()",
 15298  	"4273ca16": "onApprove(address,address,uint256,bytes)",
 15299  	"8da5cb5b": "owner()",
 15300  	"98650275": "renounceMinter()",
 15301  	"5f112c68": "renounceMinter(address)",
 15302  	"715018a6": "renounceOwnership()",
 15303  	"38bf3cfa": "renounceOwnership(address)",
 15304  	"41eb24bb": "renouncePauser(address)",
 15305  	"6fb7f558": "seigManager()",
 15306  	"7657f20a": "setSeigManager(address)",
 15307  	"01ffc9a7": "supportsInterface(bytes4)",
 15308  	"e34869d7": "swapFromTON(uint256)",
 15309  	"588420b7": "swapFromTONAndTransfer(address,uint256)",
 15310  	"f53fe70f": "swapToTON(uint256)",
 15311  	"e3b99e85": "swapToTONAndTransfer(address,uint256)",
 15312  	"95d89b41": "symbol()",
 15313  	"cc48b947": "ton()",
 15314  	"18160ddd": "totalSupply()",
 15315  	"a9059cbb": "transfer(address,uint256)",
 15316  	"23b872dd": "transferFrom(address,address,uint256)",
 15317  	"f2fde38b": "transferOwnership(address)",
 15318  	"6d435421": "transferOwnership(address,address)",
 15319  }
 15320  
 15321  // WTONBin is the compiled bytecode used for deploying new contracts.
 15322  var WTONBin = "0x60806040523480156200001157600080fd5b5060405162002dd338038062002dd3833981810160405260208110156200003757600080fd5b5051604080518082018252600b81527f5772617070656420544f4e0000000000000000000000000000000000000000006020828101919091528251808401909352600483527f57544f4e00000000000000000000000000000000000000000000000000000000908301526000805460ff1916600117905590601b620000d7620000c86001600160e01b03620002d616565b6001600160e01b03620002db16565b6000620000ec6001600160e01b03620002d616565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35082516200014f90600690602086019062000526565b5081516200016590600790602085019062000526565b506008805460ff191660ff9290921691909117905550620001a890507f01ffc9a7000000000000000000000000000000000000000000000000000000006200032d565b620001d6604051808062002d896028913960405190819003602801902090506001600160e01b036200032d16565b806001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021057600080fd5b505afa15801562000225573d6000803e3d6000fd5b505050506040513d60208110156200023c57600080fd5b505160ff16601214620002b057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f57544f4e3a20646563696d616c73206f6620544f4e206d757374206265203138604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055620005c8565b335b90565b620002f6816004620003fc60201b62001f5f1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620003bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600960205260409020805460ff19166001179055565b6200041182826001600160e01b03620004a316565b156200047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b03821662000506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062002db16022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200056957805160ff191683800117855562000599565b8280016001018555821562000599579182015b82811115620005995782518255916020019190600101906200057c565b50620005a7929150620005ab565b5090565b620002d891905b80821115620005a75760008155600101620005b2565b6127b180620005d86000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c8063715018a611610125578063a9059cbb116100ad578063dd62ed3e1161007c578063dd62ed3e14610796578063e34869d7146107c4578063e3b99e85146107e1578063f2fde38b1461080d578063f53fe70f146108335761021c565b8063a9059cbb14610681578063aa271e1a146106ad578063cae9ca51146106d3578063cc48b9471461078e5761021c565b80638f32d59b116100f45780638f32d59b1461061757806395d89b411461061f578063983b2d5614610627578063986502751461064d578063a457c2d7146106555761021c565b8063715018a6146105b55780637657f20a146105bd57806379cc6790146105e35780638da5cb5b1461060f5761021c565b806341eb24bb116101a85780635f112c68116101775780635f112c68146104f25780636cd28f9a146105185780636d4354211461053d5780636fb7f5581461056b57806370a082311461058f5761021c565b806341eb24bb146103f35780634273ca161461041957806342966c68146104a9578063588420b7146104c65761021c565b806323b872dd116101ef57806323b872dd1461031f578063313ce5671461035557806338bf3cfa14610373578063395093511461039b57806340c10f19146103c75761021c565b806301ffc9a71461022157806306fdde031461025c578063095ea7b3146102d957806318160ddd14610305575b600080fd5b6102486004803603602081101561023757600080fd5b50356001600160e01b031916610850565b604080519115158252519081900360200190f35b61026461086f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029e578181015183820152602001610286565b50505050905090810190601f1680156102cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610248600480360360408110156102ef57600080fd5b506001600160a01b038135169060200135610905565b61030d610922565b60408051918252519081900360200190f35b6102486004803603606081101561033557600080fd5b506001600160a01b03813581169160208101359091169060400135610928565b61035d6109b6565b6040805160ff9092168252519081900360200190f35b6103996004803603602081101561038957600080fd5b50356001600160a01b03166109bf565b005b610248600480360360408110156103b157600080fd5b506001600160a01b038135169060200135610a5c565b610248600480360360408110156103dd57600080fd5b506001600160a01b038135169060200135610ab0565b6103996004803603602081101561040957600080fd5b50356001600160a01b0316610b07565b6102486004803603608081101561042f57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561046a57600080fd5b82018360208201111561047c57600080fd5b8035906020019184600183028401116401000000008311171561049e57600080fd5b509092509050610b89565b610399600480360360208110156104bf57600080fd5b5035610c68565b610248600480360360408110156104dc57600080fd5b506001600160a01b038135169060200135610c7c565b6103996004803603602081101561050857600080fd5b50356001600160a01b0316610cec565b610520610d6e565b604080516001600160e01b03199092168252519081900360200190f35b6103996004803603604081101561055357600080fd5b506001600160a01b0381358116916020013516610d89565b610573610e44565b604080516001600160a01b039092168252519081900360200190f35b61030d600480360360208110156105a557600080fd5b50356001600160a01b0316610e58565b610399610e73565b610399600480360360208110156105d357600080fd5b50356001600160a01b0316610f04565b610399600480360360408110156105f957600080fd5b506001600160a01b038135169060200135610f73565b610573610f9e565b610248610fad565b610264610fd3565b6103996004803603602081101561063d57600080fd5b50356001600160a01b0316611034565b610399611083565b6102486004803603604081101561066b57600080fd5b506001600160a01b038135169060200135611095565b6102486004803603604081101561069757600080fd5b506001600160a01b038135169060200135611103565b610248600480360360208110156106c357600080fd5b50356001600160a01b0316611117565b610248600480360360608110156106e957600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561071957600080fd5b82018360208201111561072b57600080fd5b8035906020019184600183028401116401000000008311171561074d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611130945050505050565b610573611151565b61030d600480360360408110156107ac57600080fd5b506001600160a01b0381358116916020013516611160565b610248600480360360208110156107da57600080fd5b503561118b565b610248600480360360408110156107f757600080fd5b506001600160a01b0381351690602001356111fa565b6103996004803603602081101561082357600080fd5b50356001600160a01b0316611255565b6102486004803603602081101561084957600080fd5b50356112a5565b6001600160e01b03191660009081526009602052604090205460ff1690565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108fb5780601f106108d0576101008083540402835291602001916108fb565b820191906000526020600020905b8154815290600101906020018083116108de57829003601f168201915b5050505050905090565b6000610919610912611300565b8484611304565b50600192915050565b60035490565b60006109358484846113f0565b6109ab84610941611300565b6109a685604051806060016040528060288152602001612610602891396001600160a01b038a1660009081526002602052604081209061097f611300565b6001600160a01b03168152602081019190915260400160002054919063ffffffff61145a16565b611304565b5060015b9392505050565b60085460ff1690565b6109c7610fad565b610a06576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b806001600160a01b031663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4157600080fd5b505af1158015610a55573d6000803e3d6000fd5b5050505050565b6000610919610a69611300565b846109a68560026000610a7a611300565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6114f116565b6000610ac2610abd611300565b611117565b610afd5760405162461bcd60e51b81526004018080602001828103825260308152602001806125bf6030913960400191505060405180910390fd5b610919838361154b565b610b0f610fad565b610b4e576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b806001600160a01b0316636ef8d66d6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4157600080fd5b600a546000906001600160a01b03163314610bd55760405162461bcd60e51b81526004018080602001828103825260268152602001806127086026913960400191505060405180910390fd5b610be0868786611555565b506000610bec85611587565b9050600080610c3086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061159092505050565b91509150610c3f898385611304565b6060610c4a826115b2565b9050610c588a8486846115dc565b5060019998505050505050505050565b610c79610c73611300565b82611832565b50565b6000805460ff16610cc2576040805162461bcd60e51b815260206004820152601f6024820152600080516020612486833981519152604482015290519081900360640190fd5b6000805460ff19169055610cd7338484611555565b90506000805460ff1916600117905592915050565b610cf4610fad565b610d33576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b806001600160a01b031663986502756040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a4157600080fd5b60405180602861256782396028019050604051809103902081565b610d91610fad565b610dd0576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b816001600160a01b031663f2fde38b826040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015610e2857600080fd5b505af1158015610e3c573d6000803e3d6000fd5b505050505050565b60085461010090046001600160a01b031681565b6001600160a01b031660009081526001602052604090205490565b610e7b610fad565b610eba576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b610f0c610fad565b610f4b576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b600880546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b610f7c33611117565b15610f9057610f8b8282611832565b610f9a565b610f9a828261183c565b5050565b6005546001600160a01b031690565b6005546000906001600160a01b0316610fc4611300565b6001600160a01b031614905090565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108fb5780601f106108d0576101008083540402835291602001916108fb565b61103f610abd611300565b61107a5760405162461bcd60e51b81526004018080602001828103825260308152602001806125bf6030913960400191505060405180910390fd5b610c7981611846565b61109361108e611300565b61188e565b565b60006109196110a2611300565b846109a68560405180606001604052806025815260200161275860259139600260006110cc611300565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61145a16565b6000610919611110611300565b84846113f0565b600061112a60048363ffffffff6118d616565b92915050565b600061113c8484610905565b61114557600080fd5b6109af338585856115dc565b600a546001600160a01b031681565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000805460ff166111d1576040805162461bcd60e51b815260206004820152601f6024820152600080516020612486833981519152604482015290519081900360640190fd5b6000805460ff191690556111e6338084611555565b90506000805460ff19166001179055919050565b6000805460ff16611240576040805162461bcd60e51b815260206004820152601f6024820152600080516020612486833981519152604482015290519081900360640190fd5b6000805460ff19169055610cd783338461193d565b61125d610fad565b61129c576040805162461bcd60e51b81526020600482018190526024820152600080516020612638833981519152604482015290519081900360640190fd5b610c7981611aa2565b6000805460ff166112eb576040805162461bcd60e51b815260206004820152601f6024820152600080516020612486833981519152604482015290519081900360640190fd5b6000805460ff191690556111e633808461193d565b3390565b6001600160a01b0383166113495760405162461bcd60e51b81526004018080602001828103825260248152602001806126e46024913960400191505060405180910390fd5b6001600160a01b03821661138e5760405162461bcd60e51b81526004018080602001828103825260228152602001806124ee6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b336001600160a01b038416148061140f5750336001600160a01b038316145b61144a5760405162461bcd60e51b815260040180806020018281038252603081526020018061258f6030913960400191505060405180910390fd5b611455838383611b43565b505050565b600081848411156114e95760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114ae578181015183820152602001611496565b50505050905090810190601f1680156114db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156109af576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b610f9a8282611ca1565b60006115698361156484611587565b61154b565b600a546109ab906001600160a01b031685308563ffffffff611d9316565b633b9aca000290565b60008082516040146115a157600080fd5b505060208101516040909101519091565b60408051602080825281830190925260609160208201818038833950505060208101929092525090565b6115fe8360405180806125676028913960280190506040518091039020611df3565b6116395760405162461bcd60e51b81526004018080602001828103825260318152602001806125106031913960400191505060405180910390fd5b60006060846001600160a01b0316604051808061256760289139602801905060405180910390208787878760405160240180856001600160a01b03166001600160a01b03168152602001846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156116da5781810151838201526020016116c2565b50505050905090810190601f1680156117075780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909a16999099178952518151919890975087965094509250829150849050835b6020831061176f5780518252601f199092019160209182019101611750565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117d1576040519150601f19603f3d011682016040523d82523d6000602084013e6117d6565b606091505b50915091508181906118295760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156114ae578181015183820152602001611496565b50505050505050565b610f9a8282611e0f565b610f9a8282611f0b565b61185760048263ffffffff611f5f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61189f60048263ffffffff611fe016565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661191d5760405162461bcd60e51b81526004018080602001828103825260228152602001806126586022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b60006119498383611832565b600061195483612047565b600a54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119a557600080fd5b505afa1580156119b9573d6000803e3d6000fd5b505050506040513d60208110156119cf57600080fd5b5051905081811015611a7957600a546001600160a01b03166340c10f19306119fd858563ffffffff61205116565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611a4c57600080fd5b505af1158015611a60573d6000803e3d6000fd5b505050506040513d6020811015611a7657600080fd5b50505b600a54611a96906001600160a01b0316878463ffffffff61209316565b50600195945050505050565b6001600160a01b038116611ae75760405162461bcd60e51b81526004018080602001828103825260268152602001806124c86026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611b885760405162461bcd60e51b81526004018080602001828103825260258152602001806126bf6025913960400191505060405180910390fd5b6001600160a01b038216611bcd5760405162461bcd60e51b81526004018080602001828103825260238152602001806124636023913960400191505060405180910390fd5b611c1081604051806060016040528060268152602001612541602691396001600160a01b038616600090815260016020526040902054919063ffffffff61145a16565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611c45908263ffffffff6114f116565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b038216611cfc576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600354611d0f908263ffffffff6114f116565b6003556001600160a01b038216600090815260016020526040902054611d3b908263ffffffff6114f116565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611ded9085906120e1565b50505050565b6000611dfe83612299565b80156109af57506109af83836122cc565b6001600160a01b038216611e545760405162461bcd60e51b815260040180806020018281038252602181526020018061269e6021913960400191505060405180910390fd5b611e97816040518060600160405280602281526020016124a6602291396001600160a01b038516600090815260016020526040902054919063ffffffff61145a16565b6001600160a01b038316600090815260016020526040902055600354611ec3908263ffffffff61205116565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b611f158282611832565b610f9a82611f21611300565b6109a68460405180606001604052806024815260200161267a602491396001600160a01b03881660009081526002602052604081209061097f611300565b611f6982826118d6565b15611fbb576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611fea82826118d6565b6120255760405162461bcd60e51b81526004018080602001828103825260218152602001806125ef6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b633b9aca00900490565b60006109af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061145a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114559084905b6120f3826001600160a01b03166122f2565b612144576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106121825780518252601f199092019160209182019101612163565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146121e4576040519150601f19603f3d011682016040523d82523d6000602084013e6121e9565b606091505b509150915081612240576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611ded5780806020019051602081101561225c57600080fd5b5051611ded5760405162461bcd60e51b815260040180806020018281038252602a81526020018061272e602a913960400191505060405180910390fd5b60006122ac826301ffc9a760e01b6122cc565b801561112a57506122c5826001600160e01b03196122cc565b1592915050565b60008060006122db858561232e565b915091508180156122e95750805b95945050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061232657508115155b949350505050565b604080516001600160e01b0319831660248083019190915282518083039091018152604490910182526020810180516001600160e01b03166301ffc9a760e01b1781529151815160009384939284926060926001600160a01b038a169261753092879282918083835b602083106123b65780518252601f199092019160209182019101612397565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303818686fa925050503d8060008114612417576040519150601f19603f3d011682016040523d82523d6000602084013e61241c565b606091505b509150915060208151101561243a576000809450945050505061245b565b8181806020019051602081101561245057600080fd5b505190955093505050505b925092905056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573735265656e7472616e637947756172643a207265656e7472616e742063616c6c0045524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332304f6e417070726f76653a207370656e64657220646f65736e277420737570706f7274206f6e417070726f766545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63656f6e417070726f766528616464726573732c616464726573732c75696e743235362c62797465732953656967546f6b656e3a206f6e6c792073656e646572206f7220726563697069656e742063616e207472616e736665724d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737357544f4e3a206f6e6c792061636365707420544f4e20617070726f76652063616c6c6261636b5361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a723158202bfe31d10b317d00b331127684b94dbdcf8eb8656dc5af1f2f15bd57a3cd166664736f6c634300050c00326f6e417070726f766528616464726573732c616464726573732c75696e743235362c627974657329526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
 15323  
 15324  // DeployWTON deploys a new Ethereum contract, binding an instance of WTON to it.
 15325  func DeployWTON(auth *bind.TransactOpts, backend bind.ContractBackend, _ton common.Address) (common.Address, *types.Transaction, *WTON, error) {
 15326  	parsed, err := abi.JSON(strings.NewReader(WTONABI))
 15327  	if err != nil {
 15328  		return common.Address{}, nil, nil, err
 15329  	}
 15330  
 15331  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(WTONBin), backend, _ton)
 15332  	if err != nil {
 15333  		return common.Address{}, nil, nil, err
 15334  	}
 15335  	return address, tx, &WTON{WTONCaller: WTONCaller{contract: contract}, WTONTransactor: WTONTransactor{contract: contract}, WTONFilterer: WTONFilterer{contract: contract}}, nil
 15336  }
 15337  
 15338  // WTON is an auto generated Go binding around an Ethereum contract.
 15339  type WTON struct {
 15340  	WTONCaller     // Read-only binding to the contract
 15341  	WTONTransactor // Write-only binding to the contract
 15342  	WTONFilterer   // Log filterer for contract events
 15343  }
 15344  
 15345  // WTONCaller is an auto generated read-only Go binding around an Ethereum contract.
 15346  type WTONCaller struct {
 15347  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15348  }
 15349  
 15350  // WTONTransactor is an auto generated write-only Go binding around an Ethereum contract.
 15351  type WTONTransactor struct {
 15352  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15353  }
 15354  
 15355  // WTONFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
 15356  type WTONFilterer struct {
 15357  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15358  }
 15359  
 15360  // WTONSession is an auto generated Go binding around an Ethereum contract,
 15361  // with pre-set call and transact options.
 15362  type WTONSession struct {
 15363  	Contract     *WTON             // Generic contract binding to set the session for
 15364  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 15365  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 15366  }
 15367  
 15368  // WTONCallerSession is an auto generated read-only Go binding around an Ethereum contract,
 15369  // with pre-set call options.
 15370  type WTONCallerSession struct {
 15371  	Contract *WTONCaller   // Generic contract caller binding to set the session for
 15372  	CallOpts bind.CallOpts // Call options to use throughout this session
 15373  }
 15374  
 15375  // WTONTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
 15376  // with pre-set transact options.
 15377  type WTONTransactorSession struct {
 15378  	Contract     *WTONTransactor   // Generic contract transactor binding to set the session for
 15379  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 15380  }
 15381  
 15382  // WTONRaw is an auto generated low-level Go binding around an Ethereum contract.
 15383  type WTONRaw struct {
 15384  	Contract *WTON // Generic contract binding to access the raw methods on
 15385  }
 15386  
 15387  // WTONCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
 15388  type WTONCallerRaw struct {
 15389  	Contract *WTONCaller // Generic read-only contract binding to access the raw methods on
 15390  }
 15391  
 15392  // WTONTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
 15393  type WTONTransactorRaw struct {
 15394  	Contract *WTONTransactor // Generic write-only contract binding to access the raw methods on
 15395  }
 15396  
 15397  // NewWTON creates a new instance of WTON, bound to a specific deployed contract.
 15398  func NewWTON(address common.Address, backend bind.ContractBackend) (*WTON, error) {
 15399  	contract, err := bindWTON(address, backend, backend, backend)
 15400  	if err != nil {
 15401  		return nil, err
 15402  	}
 15403  	return &WTON{WTONCaller: WTONCaller{contract: contract}, WTONTransactor: WTONTransactor{contract: contract}, WTONFilterer: WTONFilterer{contract: contract}}, nil
 15404  }
 15405  
 15406  // NewWTONCaller creates a new read-only instance of WTON, bound to a specific deployed contract.
 15407  func NewWTONCaller(address common.Address, caller bind.ContractCaller) (*WTONCaller, error) {
 15408  	contract, err := bindWTON(address, caller, nil, nil)
 15409  	if err != nil {
 15410  		return nil, err
 15411  	}
 15412  	return &WTONCaller{contract: contract}, nil
 15413  }
 15414  
 15415  // NewWTONTransactor creates a new write-only instance of WTON, bound to a specific deployed contract.
 15416  func NewWTONTransactor(address common.Address, transactor bind.ContractTransactor) (*WTONTransactor, error) {
 15417  	contract, err := bindWTON(address, nil, transactor, nil)
 15418  	if err != nil {
 15419  		return nil, err
 15420  	}
 15421  	return &WTONTransactor{contract: contract}, nil
 15422  }
 15423  
 15424  // NewWTONFilterer creates a new log filterer instance of WTON, bound to a specific deployed contract.
 15425  func NewWTONFilterer(address common.Address, filterer bind.ContractFilterer) (*WTONFilterer, error) {
 15426  	contract, err := bindWTON(address, nil, nil, filterer)
 15427  	if err != nil {
 15428  		return nil, err
 15429  	}
 15430  	return &WTONFilterer{contract: contract}, nil
 15431  }
 15432  
 15433  // bindWTON binds a generic wrapper to an already deployed contract.
 15434  func bindWTON(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 15435  	parsed, err := abi.JSON(strings.NewReader(WTONABI))
 15436  	if err != nil {
 15437  		return nil, err
 15438  	}
 15439  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 15440  }
 15441  
 15442  // Call invokes the (constant) contract method with params as input values and
 15443  // sets the output to result. The result type might be a single field for simple
 15444  // returns, a slice of interfaces for anonymous returns and a struct for named
 15445  // returns.
 15446  func (_WTON *WTONRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 15447  	return _WTON.Contract.WTONCaller.contract.Call(opts, result, method, params...)
 15448  }
 15449  
 15450  // Transfer initiates a plain transaction to move funds to the contract, calling
 15451  // its default method if one is available.
 15452  func (_WTON *WTONRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 15453  	return _WTON.Contract.WTONTransactor.contract.Transfer(opts)
 15454  }
 15455  
 15456  // Transact invokes the (paid) contract method with params as input values.
 15457  func (_WTON *WTONRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 15458  	return _WTON.Contract.WTONTransactor.contract.Transact(opts, method, params...)
 15459  }
 15460  
 15461  // Call invokes the (constant) contract method with params as input values and
 15462  // sets the output to result. The result type might be a single field for simple
 15463  // returns, a slice of interfaces for anonymous returns and a struct for named
 15464  // returns.
 15465  func (_WTON *WTONCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 15466  	return _WTON.Contract.contract.Call(opts, result, method, params...)
 15467  }
 15468  
 15469  // Transfer initiates a plain transaction to move funds to the contract, calling
 15470  // its default method if one is available.
 15471  func (_WTON *WTONTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 15472  	return _WTON.Contract.contract.Transfer(opts)
 15473  }
 15474  
 15475  // Transact invokes the (paid) contract method with params as input values.
 15476  func (_WTON *WTONTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 15477  	return _WTON.Contract.contract.Transact(opts, method, params...)
 15478  }
 15479  
 15480  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 15481  //
 15482  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 15483  func (_WTON *WTONCaller) INTERFACEIDONAPPROVE(opts *bind.CallOpts) ([4]byte, error) {
 15484  	var (
 15485  		ret0 = new([4]byte)
 15486  	)
 15487  	out := ret0
 15488  	err := _WTON.contract.Call(opts, out, "INTERFACE_ID_ON_APPROVE")
 15489  	return *ret0, err
 15490  }
 15491  
 15492  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 15493  //
 15494  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 15495  func (_WTON *WTONSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
 15496  	return _WTON.Contract.INTERFACEIDONAPPROVE(&_WTON.CallOpts)
 15497  }
 15498  
 15499  // INTERFACEIDONAPPROVE is a free data retrieval call binding the contract method 0x6cd28f9a.
 15500  //
 15501  // Solidity: function INTERFACE_ID_ON_APPROVE() constant returns(bytes4)
 15502  func (_WTON *WTONCallerSession) INTERFACEIDONAPPROVE() ([4]byte, error) {
 15503  	return _WTON.Contract.INTERFACEIDONAPPROVE(&_WTON.CallOpts)
 15504  }
 15505  
 15506  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 15507  //
 15508  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 15509  func (_WTON *WTONCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 15510  	var (
 15511  		ret0 = new(*big.Int)
 15512  	)
 15513  	out := ret0
 15514  	err := _WTON.contract.Call(opts, out, "allowance", owner, spender)
 15515  	return *ret0, err
 15516  }
 15517  
 15518  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 15519  //
 15520  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 15521  func (_WTON *WTONSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 15522  	return _WTON.Contract.Allowance(&_WTON.CallOpts, owner, spender)
 15523  }
 15524  
 15525  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 15526  //
 15527  // Solidity: function allowance(address owner, address spender) constant returns(uint256)
 15528  func (_WTON *WTONCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 15529  	return _WTON.Contract.Allowance(&_WTON.CallOpts, owner, spender)
 15530  }
 15531  
 15532  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 15533  //
 15534  // Solidity: function balanceOf(address account) constant returns(uint256)
 15535  func (_WTON *WTONCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 15536  	var (
 15537  		ret0 = new(*big.Int)
 15538  	)
 15539  	out := ret0
 15540  	err := _WTON.contract.Call(opts, out, "balanceOf", account)
 15541  	return *ret0, err
 15542  }
 15543  
 15544  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 15545  //
 15546  // Solidity: function balanceOf(address account) constant returns(uint256)
 15547  func (_WTON *WTONSession) BalanceOf(account common.Address) (*big.Int, error) {
 15548  	return _WTON.Contract.BalanceOf(&_WTON.CallOpts, account)
 15549  }
 15550  
 15551  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 15552  //
 15553  // Solidity: function balanceOf(address account) constant returns(uint256)
 15554  func (_WTON *WTONCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 15555  	return _WTON.Contract.BalanceOf(&_WTON.CallOpts, account)
 15556  }
 15557  
 15558  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
 15559  //
 15560  // Solidity: function decimals() constant returns(uint8)
 15561  func (_WTON *WTONCaller) Decimals(opts *bind.CallOpts) (uint8, error) {
 15562  	var (
 15563  		ret0 = new(uint8)
 15564  	)
 15565  	out := ret0
 15566  	err := _WTON.contract.Call(opts, out, "decimals")
 15567  	return *ret0, err
 15568  }
 15569  
 15570  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
 15571  //
 15572  // Solidity: function decimals() constant returns(uint8)
 15573  func (_WTON *WTONSession) Decimals() (uint8, error) {
 15574  	return _WTON.Contract.Decimals(&_WTON.CallOpts)
 15575  }
 15576  
 15577  // Decimals is a free data retrieval call binding the contract method 0x313ce567.
 15578  //
 15579  // Solidity: function decimals() constant returns(uint8)
 15580  func (_WTON *WTONCallerSession) Decimals() (uint8, error) {
 15581  	return _WTON.Contract.Decimals(&_WTON.CallOpts)
 15582  }
 15583  
 15584  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 15585  //
 15586  // Solidity: function isMinter(address account) constant returns(bool)
 15587  func (_WTON *WTONCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 15588  	var (
 15589  		ret0 = new(bool)
 15590  	)
 15591  	out := ret0
 15592  	err := _WTON.contract.Call(opts, out, "isMinter", account)
 15593  	return *ret0, err
 15594  }
 15595  
 15596  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 15597  //
 15598  // Solidity: function isMinter(address account) constant returns(bool)
 15599  func (_WTON *WTONSession) IsMinter(account common.Address) (bool, error) {
 15600  	return _WTON.Contract.IsMinter(&_WTON.CallOpts, account)
 15601  }
 15602  
 15603  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 15604  //
 15605  // Solidity: function isMinter(address account) constant returns(bool)
 15606  func (_WTON *WTONCallerSession) IsMinter(account common.Address) (bool, error) {
 15607  	return _WTON.Contract.IsMinter(&_WTON.CallOpts, account)
 15608  }
 15609  
 15610  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 15611  //
 15612  // Solidity: function isOwner() constant returns(bool)
 15613  func (_WTON *WTONCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 15614  	var (
 15615  		ret0 = new(bool)
 15616  	)
 15617  	out := ret0
 15618  	err := _WTON.contract.Call(opts, out, "isOwner")
 15619  	return *ret0, err
 15620  }
 15621  
 15622  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 15623  //
 15624  // Solidity: function isOwner() constant returns(bool)
 15625  func (_WTON *WTONSession) IsOwner() (bool, error) {
 15626  	return _WTON.Contract.IsOwner(&_WTON.CallOpts)
 15627  }
 15628  
 15629  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 15630  //
 15631  // Solidity: function isOwner() constant returns(bool)
 15632  func (_WTON *WTONCallerSession) IsOwner() (bool, error) {
 15633  	return _WTON.Contract.IsOwner(&_WTON.CallOpts)
 15634  }
 15635  
 15636  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 15637  //
 15638  // Solidity: function name() constant returns(string)
 15639  func (_WTON *WTONCaller) Name(opts *bind.CallOpts) (string, error) {
 15640  	var (
 15641  		ret0 = new(string)
 15642  	)
 15643  	out := ret0
 15644  	err := _WTON.contract.Call(opts, out, "name")
 15645  	return *ret0, err
 15646  }
 15647  
 15648  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 15649  //
 15650  // Solidity: function name() constant returns(string)
 15651  func (_WTON *WTONSession) Name() (string, error) {
 15652  	return _WTON.Contract.Name(&_WTON.CallOpts)
 15653  }
 15654  
 15655  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 15656  //
 15657  // Solidity: function name() constant returns(string)
 15658  func (_WTON *WTONCallerSession) Name() (string, error) {
 15659  	return _WTON.Contract.Name(&_WTON.CallOpts)
 15660  }
 15661  
 15662  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 15663  //
 15664  // Solidity: function owner() constant returns(address)
 15665  func (_WTON *WTONCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 15666  	var (
 15667  		ret0 = new(common.Address)
 15668  	)
 15669  	out := ret0
 15670  	err := _WTON.contract.Call(opts, out, "owner")
 15671  	return *ret0, err
 15672  }
 15673  
 15674  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 15675  //
 15676  // Solidity: function owner() constant returns(address)
 15677  func (_WTON *WTONSession) Owner() (common.Address, error) {
 15678  	return _WTON.Contract.Owner(&_WTON.CallOpts)
 15679  }
 15680  
 15681  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 15682  //
 15683  // Solidity: function owner() constant returns(address)
 15684  func (_WTON *WTONCallerSession) Owner() (common.Address, error) {
 15685  	return _WTON.Contract.Owner(&_WTON.CallOpts)
 15686  }
 15687  
 15688  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 15689  //
 15690  // Solidity: function seigManager() constant returns(address)
 15691  func (_WTON *WTONCaller) SeigManager(opts *bind.CallOpts) (common.Address, error) {
 15692  	var (
 15693  		ret0 = new(common.Address)
 15694  	)
 15695  	out := ret0
 15696  	err := _WTON.contract.Call(opts, out, "seigManager")
 15697  	return *ret0, err
 15698  }
 15699  
 15700  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 15701  //
 15702  // Solidity: function seigManager() constant returns(address)
 15703  func (_WTON *WTONSession) SeigManager() (common.Address, error) {
 15704  	return _WTON.Contract.SeigManager(&_WTON.CallOpts)
 15705  }
 15706  
 15707  // SeigManager is a free data retrieval call binding the contract method 0x6fb7f558.
 15708  //
 15709  // Solidity: function seigManager() constant returns(address)
 15710  func (_WTON *WTONCallerSession) SeigManager() (common.Address, error) {
 15711  	return _WTON.Contract.SeigManager(&_WTON.CallOpts)
 15712  }
 15713  
 15714  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 15715  //
 15716  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
 15717  func (_WTON *WTONCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 15718  	var (
 15719  		ret0 = new(bool)
 15720  	)
 15721  	out := ret0
 15722  	err := _WTON.contract.Call(opts, out, "supportsInterface", interfaceId)
 15723  	return *ret0, err
 15724  }
 15725  
 15726  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 15727  //
 15728  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
 15729  func (_WTON *WTONSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 15730  	return _WTON.Contract.SupportsInterface(&_WTON.CallOpts, interfaceId)
 15731  }
 15732  
 15733  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 15734  //
 15735  // Solidity: function supportsInterface(bytes4 interfaceId) constant returns(bool)
 15736  func (_WTON *WTONCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 15737  	return _WTON.Contract.SupportsInterface(&_WTON.CallOpts, interfaceId)
 15738  }
 15739  
 15740  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 15741  //
 15742  // Solidity: function symbol() constant returns(string)
 15743  func (_WTON *WTONCaller) Symbol(opts *bind.CallOpts) (string, error) {
 15744  	var (
 15745  		ret0 = new(string)
 15746  	)
 15747  	out := ret0
 15748  	err := _WTON.contract.Call(opts, out, "symbol")
 15749  	return *ret0, err
 15750  }
 15751  
 15752  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 15753  //
 15754  // Solidity: function symbol() constant returns(string)
 15755  func (_WTON *WTONSession) Symbol() (string, error) {
 15756  	return _WTON.Contract.Symbol(&_WTON.CallOpts)
 15757  }
 15758  
 15759  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 15760  //
 15761  // Solidity: function symbol() constant returns(string)
 15762  func (_WTON *WTONCallerSession) Symbol() (string, error) {
 15763  	return _WTON.Contract.Symbol(&_WTON.CallOpts)
 15764  }
 15765  
 15766  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 15767  //
 15768  // Solidity: function ton() constant returns(address)
 15769  func (_WTON *WTONCaller) Ton(opts *bind.CallOpts) (common.Address, error) {
 15770  	var (
 15771  		ret0 = new(common.Address)
 15772  	)
 15773  	out := ret0
 15774  	err := _WTON.contract.Call(opts, out, "ton")
 15775  	return *ret0, err
 15776  }
 15777  
 15778  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 15779  //
 15780  // Solidity: function ton() constant returns(address)
 15781  func (_WTON *WTONSession) Ton() (common.Address, error) {
 15782  	return _WTON.Contract.Ton(&_WTON.CallOpts)
 15783  }
 15784  
 15785  // Ton is a free data retrieval call binding the contract method 0xcc48b947.
 15786  //
 15787  // Solidity: function ton() constant returns(address)
 15788  func (_WTON *WTONCallerSession) Ton() (common.Address, error) {
 15789  	return _WTON.Contract.Ton(&_WTON.CallOpts)
 15790  }
 15791  
 15792  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 15793  //
 15794  // Solidity: function totalSupply() constant returns(uint256)
 15795  func (_WTON *WTONCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 15796  	var (
 15797  		ret0 = new(*big.Int)
 15798  	)
 15799  	out := ret0
 15800  	err := _WTON.contract.Call(opts, out, "totalSupply")
 15801  	return *ret0, err
 15802  }
 15803  
 15804  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 15805  //
 15806  // Solidity: function totalSupply() constant returns(uint256)
 15807  func (_WTON *WTONSession) TotalSupply() (*big.Int, error) {
 15808  	return _WTON.Contract.TotalSupply(&_WTON.CallOpts)
 15809  }
 15810  
 15811  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 15812  //
 15813  // Solidity: function totalSupply() constant returns(uint256)
 15814  func (_WTON *WTONCallerSession) TotalSupply() (*big.Int, error) {
 15815  	return _WTON.Contract.TotalSupply(&_WTON.CallOpts)
 15816  }
 15817  
 15818  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 15819  //
 15820  // Solidity: function addMinter(address account) returns()
 15821  func (_WTON *WTONTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 15822  	return _WTON.contract.Transact(opts, "addMinter", account)
 15823  }
 15824  
 15825  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 15826  //
 15827  // Solidity: function addMinter(address account) returns()
 15828  func (_WTON *WTONSession) AddMinter(account common.Address) (*types.Transaction, error) {
 15829  	return _WTON.Contract.AddMinter(&_WTON.TransactOpts, account)
 15830  }
 15831  
 15832  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 15833  //
 15834  // Solidity: function addMinter(address account) returns()
 15835  func (_WTON *WTONTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 15836  	return _WTON.Contract.AddMinter(&_WTON.TransactOpts, account)
 15837  }
 15838  
 15839  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 15840  //
 15841  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 15842  func (_WTON *WTONTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
 15843  	return _WTON.contract.Transact(opts, "approve", spender, amount)
 15844  }
 15845  
 15846  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 15847  //
 15848  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 15849  func (_WTON *WTONSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 15850  	return _WTON.Contract.Approve(&_WTON.TransactOpts, spender, amount)
 15851  }
 15852  
 15853  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 15854  //
 15855  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 15856  func (_WTON *WTONTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 15857  	return _WTON.Contract.Approve(&_WTON.TransactOpts, spender, amount)
 15858  }
 15859  
 15860  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 15861  //
 15862  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 15863  func (_WTON *WTONTransactor) ApproveAndCall(opts *bind.TransactOpts, spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 15864  	return _WTON.contract.Transact(opts, "approveAndCall", spender, amount, data)
 15865  }
 15866  
 15867  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 15868  //
 15869  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 15870  func (_WTON *WTONSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 15871  	return _WTON.Contract.ApproveAndCall(&_WTON.TransactOpts, spender, amount, data)
 15872  }
 15873  
 15874  // ApproveAndCall is a paid mutator transaction binding the contract method 0xcae9ca51.
 15875  //
 15876  // Solidity: function approveAndCall(address spender, uint256 amount, bytes data) returns(bool)
 15877  func (_WTON *WTONTransactorSession) ApproveAndCall(spender common.Address, amount *big.Int, data []byte) (*types.Transaction, error) {
 15878  	return _WTON.Contract.ApproveAndCall(&_WTON.TransactOpts, spender, amount, data)
 15879  }
 15880  
 15881  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 15882  //
 15883  // Solidity: function burn(uint256 amount) returns()
 15884  func (_WTON *WTONTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
 15885  	return _WTON.contract.Transact(opts, "burn", amount)
 15886  }
 15887  
 15888  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 15889  //
 15890  // Solidity: function burn(uint256 amount) returns()
 15891  func (_WTON *WTONSession) Burn(amount *big.Int) (*types.Transaction, error) {
 15892  	return _WTON.Contract.Burn(&_WTON.TransactOpts, amount)
 15893  }
 15894  
 15895  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 15896  //
 15897  // Solidity: function burn(uint256 amount) returns()
 15898  func (_WTON *WTONTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
 15899  	return _WTON.Contract.Burn(&_WTON.TransactOpts, amount)
 15900  }
 15901  
 15902  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 15903  //
 15904  // Solidity: function burnFrom(address account, uint256 amount) returns()
 15905  func (_WTON *WTONTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
 15906  	return _WTON.contract.Transact(opts, "burnFrom", account, amount)
 15907  }
 15908  
 15909  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 15910  //
 15911  // Solidity: function burnFrom(address account, uint256 amount) returns()
 15912  func (_WTON *WTONSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
 15913  	return _WTON.Contract.BurnFrom(&_WTON.TransactOpts, account, amount)
 15914  }
 15915  
 15916  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 15917  //
 15918  // Solidity: function burnFrom(address account, uint256 amount) returns()
 15919  func (_WTON *WTONTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
 15920  	return _WTON.Contract.BurnFrom(&_WTON.TransactOpts, account, amount)
 15921  }
 15922  
 15923  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 15924  //
 15925  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 15926  func (_WTON *WTONTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 15927  	return _WTON.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 15928  }
 15929  
 15930  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 15931  //
 15932  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 15933  func (_WTON *WTONSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 15934  	return _WTON.Contract.DecreaseAllowance(&_WTON.TransactOpts, spender, subtractedValue)
 15935  }
 15936  
 15937  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 15938  //
 15939  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 15940  func (_WTON *WTONTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 15941  	return _WTON.Contract.DecreaseAllowance(&_WTON.TransactOpts, spender, subtractedValue)
 15942  }
 15943  
 15944  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 15945  //
 15946  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 15947  func (_WTON *WTONTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 15948  	return _WTON.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 15949  }
 15950  
 15951  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 15952  //
 15953  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 15954  func (_WTON *WTONSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 15955  	return _WTON.Contract.IncreaseAllowance(&_WTON.TransactOpts, spender, addedValue)
 15956  }
 15957  
 15958  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 15959  //
 15960  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 15961  func (_WTON *WTONTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 15962  	return _WTON.Contract.IncreaseAllowance(&_WTON.TransactOpts, spender, addedValue)
 15963  }
 15964  
 15965  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 15966  //
 15967  // Solidity: function mint(address account, uint256 amount) returns(bool)
 15968  func (_WTON *WTONTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
 15969  	return _WTON.contract.Transact(opts, "mint", account, amount)
 15970  }
 15971  
 15972  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 15973  //
 15974  // Solidity: function mint(address account, uint256 amount) returns(bool)
 15975  func (_WTON *WTONSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
 15976  	return _WTON.Contract.Mint(&_WTON.TransactOpts, account, amount)
 15977  }
 15978  
 15979  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 15980  //
 15981  // Solidity: function mint(address account, uint256 amount) returns(bool)
 15982  func (_WTON *WTONTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
 15983  	return _WTON.Contract.Mint(&_WTON.TransactOpts, account, amount)
 15984  }
 15985  
 15986  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
 15987  //
 15988  // Solidity: function onApprove(address owner, address spender, uint256 tonAmount, bytes data) returns(bool)
 15989  func (_WTON *WTONTransactor) OnApprove(opts *bind.TransactOpts, owner common.Address, spender common.Address, tonAmount *big.Int, data []byte) (*types.Transaction, error) {
 15990  	return _WTON.contract.Transact(opts, "onApprove", owner, spender, tonAmount, data)
 15991  }
 15992  
 15993  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
 15994  //
 15995  // Solidity: function onApprove(address owner, address spender, uint256 tonAmount, bytes data) returns(bool)
 15996  func (_WTON *WTONSession) OnApprove(owner common.Address, spender common.Address, tonAmount *big.Int, data []byte) (*types.Transaction, error) {
 15997  	return _WTON.Contract.OnApprove(&_WTON.TransactOpts, owner, spender, tonAmount, data)
 15998  }
 15999  
 16000  // OnApprove is a paid mutator transaction binding the contract method 0x4273ca16.
 16001  //
 16002  // Solidity: function onApprove(address owner, address spender, uint256 tonAmount, bytes data) returns(bool)
 16003  func (_WTON *WTONTransactorSession) OnApprove(owner common.Address, spender common.Address, tonAmount *big.Int, data []byte) (*types.Transaction, error) {
 16004  	return _WTON.Contract.OnApprove(&_WTON.TransactOpts, owner, spender, tonAmount, data)
 16005  }
 16006  
 16007  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 16008  //
 16009  // Solidity: function renounceMinter(address target) returns()
 16010  func (_WTON *WTONTransactor) RenounceMinter(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 16011  	return _WTON.contract.Transact(opts, "renounceMinter", target)
 16012  }
 16013  
 16014  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 16015  //
 16016  // Solidity: function renounceMinter(address target) returns()
 16017  func (_WTON *WTONSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
 16018  	return _WTON.Contract.RenounceMinter(&_WTON.TransactOpts, target)
 16019  }
 16020  
 16021  // RenounceMinter is a paid mutator transaction binding the contract method 0x5f112c68.
 16022  //
 16023  // Solidity: function renounceMinter(address target) returns()
 16024  func (_WTON *WTONTransactorSession) RenounceMinter(target common.Address) (*types.Transaction, error) {
 16025  	return _WTON.Contract.RenounceMinter(&_WTON.TransactOpts, target)
 16026  }
 16027  
 16028  // RenounceMinter0 is a paid mutator transaction binding the contract method 0x98650275.
 16029  //
 16030  // Solidity: function renounceMinter() returns()
 16031  func (_WTON *WTONTransactor) RenounceMinter0(opts *bind.TransactOpts) (*types.Transaction, error) {
 16032  	return _WTON.contract.Transact(opts, "renounceMinter0")
 16033  }
 16034  
 16035  // RenounceMinter0 is a paid mutator transaction binding the contract method 0x98650275.
 16036  //
 16037  // Solidity: function renounceMinter() returns()
 16038  func (_WTON *WTONSession) RenounceMinter0() (*types.Transaction, error) {
 16039  	return _WTON.Contract.RenounceMinter0(&_WTON.TransactOpts)
 16040  }
 16041  
 16042  // RenounceMinter0 is a paid mutator transaction binding the contract method 0x98650275.
 16043  //
 16044  // Solidity: function renounceMinter() returns()
 16045  func (_WTON *WTONTransactorSession) RenounceMinter0() (*types.Transaction, error) {
 16046  	return _WTON.Contract.RenounceMinter0(&_WTON.TransactOpts)
 16047  }
 16048  
 16049  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 16050  //
 16051  // Solidity: function renounceOwnership(address target) returns()
 16052  func (_WTON *WTONTransactor) RenounceOwnership(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 16053  	return _WTON.contract.Transact(opts, "renounceOwnership", target)
 16054  }
 16055  
 16056  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 16057  //
 16058  // Solidity: function renounceOwnership(address target) returns()
 16059  func (_WTON *WTONSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
 16060  	return _WTON.Contract.RenounceOwnership(&_WTON.TransactOpts, target)
 16061  }
 16062  
 16063  // RenounceOwnership is a paid mutator transaction binding the contract method 0x38bf3cfa.
 16064  //
 16065  // Solidity: function renounceOwnership(address target) returns()
 16066  func (_WTON *WTONTransactorSession) RenounceOwnership(target common.Address) (*types.Transaction, error) {
 16067  	return _WTON.Contract.RenounceOwnership(&_WTON.TransactOpts, target)
 16068  }
 16069  
 16070  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 16071  //
 16072  // Solidity: function renounceOwnership() returns()
 16073  func (_WTON *WTONTransactor) RenounceOwnership0(opts *bind.TransactOpts) (*types.Transaction, error) {
 16074  	return _WTON.contract.Transact(opts, "renounceOwnership0")
 16075  }
 16076  
 16077  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 16078  //
 16079  // Solidity: function renounceOwnership() returns()
 16080  func (_WTON *WTONSession) RenounceOwnership0() (*types.Transaction, error) {
 16081  	return _WTON.Contract.RenounceOwnership0(&_WTON.TransactOpts)
 16082  }
 16083  
 16084  // RenounceOwnership0 is a paid mutator transaction binding the contract method 0x715018a6.
 16085  //
 16086  // Solidity: function renounceOwnership() returns()
 16087  func (_WTON *WTONTransactorSession) RenounceOwnership0() (*types.Transaction, error) {
 16088  	return _WTON.Contract.RenounceOwnership0(&_WTON.TransactOpts)
 16089  }
 16090  
 16091  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 16092  //
 16093  // Solidity: function renouncePauser(address target) returns()
 16094  func (_WTON *WTONTransactor) RenouncePauser(opts *bind.TransactOpts, target common.Address) (*types.Transaction, error) {
 16095  	return _WTON.contract.Transact(opts, "renouncePauser", target)
 16096  }
 16097  
 16098  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 16099  //
 16100  // Solidity: function renouncePauser(address target) returns()
 16101  func (_WTON *WTONSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
 16102  	return _WTON.Contract.RenouncePauser(&_WTON.TransactOpts, target)
 16103  }
 16104  
 16105  // RenouncePauser is a paid mutator transaction binding the contract method 0x41eb24bb.
 16106  //
 16107  // Solidity: function renouncePauser(address target) returns()
 16108  func (_WTON *WTONTransactorSession) RenouncePauser(target common.Address) (*types.Transaction, error) {
 16109  	return _WTON.Contract.RenouncePauser(&_WTON.TransactOpts, target)
 16110  }
 16111  
 16112  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 16113  //
 16114  // Solidity: function setSeigManager(address _seigManager) returns()
 16115  func (_WTON *WTONTransactor) SetSeigManager(opts *bind.TransactOpts, _seigManager common.Address) (*types.Transaction, error) {
 16116  	return _WTON.contract.Transact(opts, "setSeigManager", _seigManager)
 16117  }
 16118  
 16119  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 16120  //
 16121  // Solidity: function setSeigManager(address _seigManager) returns()
 16122  func (_WTON *WTONSession) SetSeigManager(_seigManager common.Address) (*types.Transaction, error) {
 16123  	return _WTON.Contract.SetSeigManager(&_WTON.TransactOpts, _seigManager)
 16124  }
 16125  
 16126  // SetSeigManager is a paid mutator transaction binding the contract method 0x7657f20a.
 16127  //
 16128  // Solidity: function setSeigManager(address _seigManager) returns()
 16129  func (_WTON *WTONTransactorSession) SetSeigManager(_seigManager common.Address) (*types.Transaction, error) {
 16130  	return _WTON.Contract.SetSeigManager(&_WTON.TransactOpts, _seigManager)
 16131  }
 16132  
 16133  // SwapFromTON is a paid mutator transaction binding the contract method 0xe34869d7.
 16134  //
 16135  // Solidity: function swapFromTON(uint256 tonAmount) returns(bool)
 16136  func (_WTON *WTONTransactor) SwapFromTON(opts *bind.TransactOpts, tonAmount *big.Int) (*types.Transaction, error) {
 16137  	return _WTON.contract.Transact(opts, "swapFromTON", tonAmount)
 16138  }
 16139  
 16140  // SwapFromTON is a paid mutator transaction binding the contract method 0xe34869d7.
 16141  //
 16142  // Solidity: function swapFromTON(uint256 tonAmount) returns(bool)
 16143  func (_WTON *WTONSession) SwapFromTON(tonAmount *big.Int) (*types.Transaction, error) {
 16144  	return _WTON.Contract.SwapFromTON(&_WTON.TransactOpts, tonAmount)
 16145  }
 16146  
 16147  // SwapFromTON is a paid mutator transaction binding the contract method 0xe34869d7.
 16148  //
 16149  // Solidity: function swapFromTON(uint256 tonAmount) returns(bool)
 16150  func (_WTON *WTONTransactorSession) SwapFromTON(tonAmount *big.Int) (*types.Transaction, error) {
 16151  	return _WTON.Contract.SwapFromTON(&_WTON.TransactOpts, tonAmount)
 16152  }
 16153  
 16154  // SwapFromTONAndTransfer is a paid mutator transaction binding the contract method 0x588420b7.
 16155  //
 16156  // Solidity: function swapFromTONAndTransfer(address to, uint256 tonAmount) returns(bool)
 16157  func (_WTON *WTONTransactor) SwapFromTONAndTransfer(opts *bind.TransactOpts, to common.Address, tonAmount *big.Int) (*types.Transaction, error) {
 16158  	return _WTON.contract.Transact(opts, "swapFromTONAndTransfer", to, tonAmount)
 16159  }
 16160  
 16161  // SwapFromTONAndTransfer is a paid mutator transaction binding the contract method 0x588420b7.
 16162  //
 16163  // Solidity: function swapFromTONAndTransfer(address to, uint256 tonAmount) returns(bool)
 16164  func (_WTON *WTONSession) SwapFromTONAndTransfer(to common.Address, tonAmount *big.Int) (*types.Transaction, error) {
 16165  	return _WTON.Contract.SwapFromTONAndTransfer(&_WTON.TransactOpts, to, tonAmount)
 16166  }
 16167  
 16168  // SwapFromTONAndTransfer is a paid mutator transaction binding the contract method 0x588420b7.
 16169  //
 16170  // Solidity: function swapFromTONAndTransfer(address to, uint256 tonAmount) returns(bool)
 16171  func (_WTON *WTONTransactorSession) SwapFromTONAndTransfer(to common.Address, tonAmount *big.Int) (*types.Transaction, error) {
 16172  	return _WTON.Contract.SwapFromTONAndTransfer(&_WTON.TransactOpts, to, tonAmount)
 16173  }
 16174  
 16175  // SwapToTON is a paid mutator transaction binding the contract method 0xf53fe70f.
 16176  //
 16177  // Solidity: function swapToTON(uint256 wtonAmount) returns(bool)
 16178  func (_WTON *WTONTransactor) SwapToTON(opts *bind.TransactOpts, wtonAmount *big.Int) (*types.Transaction, error) {
 16179  	return _WTON.contract.Transact(opts, "swapToTON", wtonAmount)
 16180  }
 16181  
 16182  // SwapToTON is a paid mutator transaction binding the contract method 0xf53fe70f.
 16183  //
 16184  // Solidity: function swapToTON(uint256 wtonAmount) returns(bool)
 16185  func (_WTON *WTONSession) SwapToTON(wtonAmount *big.Int) (*types.Transaction, error) {
 16186  	return _WTON.Contract.SwapToTON(&_WTON.TransactOpts, wtonAmount)
 16187  }
 16188  
 16189  // SwapToTON is a paid mutator transaction binding the contract method 0xf53fe70f.
 16190  //
 16191  // Solidity: function swapToTON(uint256 wtonAmount) returns(bool)
 16192  func (_WTON *WTONTransactorSession) SwapToTON(wtonAmount *big.Int) (*types.Transaction, error) {
 16193  	return _WTON.Contract.SwapToTON(&_WTON.TransactOpts, wtonAmount)
 16194  }
 16195  
 16196  // SwapToTONAndTransfer is a paid mutator transaction binding the contract method 0xe3b99e85.
 16197  //
 16198  // Solidity: function swapToTONAndTransfer(address to, uint256 wtonAmount) returns(bool)
 16199  func (_WTON *WTONTransactor) SwapToTONAndTransfer(opts *bind.TransactOpts, to common.Address, wtonAmount *big.Int) (*types.Transaction, error) {
 16200  	return _WTON.contract.Transact(opts, "swapToTONAndTransfer", to, wtonAmount)
 16201  }
 16202  
 16203  // SwapToTONAndTransfer is a paid mutator transaction binding the contract method 0xe3b99e85.
 16204  //
 16205  // Solidity: function swapToTONAndTransfer(address to, uint256 wtonAmount) returns(bool)
 16206  func (_WTON *WTONSession) SwapToTONAndTransfer(to common.Address, wtonAmount *big.Int) (*types.Transaction, error) {
 16207  	return _WTON.Contract.SwapToTONAndTransfer(&_WTON.TransactOpts, to, wtonAmount)
 16208  }
 16209  
 16210  // SwapToTONAndTransfer is a paid mutator transaction binding the contract method 0xe3b99e85.
 16211  //
 16212  // Solidity: function swapToTONAndTransfer(address to, uint256 wtonAmount) returns(bool)
 16213  func (_WTON *WTONTransactorSession) SwapToTONAndTransfer(to common.Address, wtonAmount *big.Int) (*types.Transaction, error) {
 16214  	return _WTON.Contract.SwapToTONAndTransfer(&_WTON.TransactOpts, to, wtonAmount)
 16215  }
 16216  
 16217  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 16218  //
 16219  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 16220  func (_WTON *WTONTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 16221  	return _WTON.contract.Transact(opts, "transfer", recipient, amount)
 16222  }
 16223  
 16224  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 16225  //
 16226  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 16227  func (_WTON *WTONSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 16228  	return _WTON.Contract.Transfer(&_WTON.TransactOpts, recipient, amount)
 16229  }
 16230  
 16231  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 16232  //
 16233  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 16234  func (_WTON *WTONTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 16235  	return _WTON.Contract.Transfer(&_WTON.TransactOpts, recipient, amount)
 16236  }
 16237  
 16238  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 16239  //
 16240  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 16241  func (_WTON *WTONTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 16242  	return _WTON.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 16243  }
 16244  
 16245  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 16246  //
 16247  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 16248  func (_WTON *WTONSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 16249  	return _WTON.Contract.TransferFrom(&_WTON.TransactOpts, sender, recipient, amount)
 16250  }
 16251  
 16252  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 16253  //
 16254  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 16255  func (_WTON *WTONTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 16256  	return _WTON.Contract.TransferFrom(&_WTON.TransactOpts, sender, recipient, amount)
 16257  }
 16258  
 16259  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 16260  //
 16261  // Solidity: function transferOwnership(address target, address newOwner) returns()
 16262  func (_WTON *WTONTransactor) TransferOwnership(opts *bind.TransactOpts, target common.Address, newOwner common.Address) (*types.Transaction, error) {
 16263  	return _WTON.contract.Transact(opts, "transferOwnership", target, newOwner)
 16264  }
 16265  
 16266  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 16267  //
 16268  // Solidity: function transferOwnership(address target, address newOwner) returns()
 16269  func (_WTON *WTONSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
 16270  	return _WTON.Contract.TransferOwnership(&_WTON.TransactOpts, target, newOwner)
 16271  }
 16272  
 16273  // TransferOwnership is a paid mutator transaction binding the contract method 0x6d435421.
 16274  //
 16275  // Solidity: function transferOwnership(address target, address newOwner) returns()
 16276  func (_WTON *WTONTransactorSession) TransferOwnership(target common.Address, newOwner common.Address) (*types.Transaction, error) {
 16277  	return _WTON.Contract.TransferOwnership(&_WTON.TransactOpts, target, newOwner)
 16278  }
 16279  
 16280  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 16281  //
 16282  // Solidity: function transferOwnership(address newOwner) returns()
 16283  func (_WTON *WTONTransactor) TransferOwnership0(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 16284  	return _WTON.contract.Transact(opts, "transferOwnership0", newOwner)
 16285  }
 16286  
 16287  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 16288  //
 16289  // Solidity: function transferOwnership(address newOwner) returns()
 16290  func (_WTON *WTONSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
 16291  	return _WTON.Contract.TransferOwnership0(&_WTON.TransactOpts, newOwner)
 16292  }
 16293  
 16294  // TransferOwnership0 is a paid mutator transaction binding the contract method 0xf2fde38b.
 16295  //
 16296  // Solidity: function transferOwnership(address newOwner) returns()
 16297  func (_WTON *WTONTransactorSession) TransferOwnership0(newOwner common.Address) (*types.Transaction, error) {
 16298  	return _WTON.Contract.TransferOwnership0(&_WTON.TransactOpts, newOwner)
 16299  }
 16300  
 16301  // WTONApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the WTON contract.
 16302  type WTONApprovalIterator struct {
 16303  	Event *WTONApproval // Event containing the contract specifics and raw log
 16304  
 16305  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16306  	event    string              // Event name to use for unpacking event data
 16307  
 16308  	logs chan types.Log        // Log channel receiving the found contract events
 16309  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 16310  	done bool                  // Whether the subscription completed delivering logs
 16311  	fail error                 // Occurred error to stop iteration
 16312  }
 16313  
 16314  // Next advances the iterator to the subsequent event, returning whether there
 16315  // are any more events found. In case of a retrieval or parsing error, false is
 16316  // returned and Error() can be queried for the exact failure.
 16317  func (it *WTONApprovalIterator) Next() bool {
 16318  	// If the iterator failed, stop iterating
 16319  	if it.fail != nil {
 16320  		return false
 16321  	}
 16322  	// If the iterator completed, deliver directly whatever's available
 16323  	if it.done {
 16324  		select {
 16325  		case log := <-it.logs:
 16326  			it.Event = new(WTONApproval)
 16327  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16328  				it.fail = err
 16329  				return false
 16330  			}
 16331  			it.Event.Raw = log
 16332  			return true
 16333  
 16334  		default:
 16335  			return false
 16336  		}
 16337  	}
 16338  	// Iterator still in progress, wait for either a data or an error event
 16339  	select {
 16340  	case log := <-it.logs:
 16341  		it.Event = new(WTONApproval)
 16342  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16343  			it.fail = err
 16344  			return false
 16345  		}
 16346  		it.Event.Raw = log
 16347  		return true
 16348  
 16349  	case err := <-it.sub.Err():
 16350  		it.done = true
 16351  		it.fail = err
 16352  		return it.Next()
 16353  	}
 16354  }
 16355  
 16356  // Error returns any retrieval or parsing error occurred during filtering.
 16357  func (it *WTONApprovalIterator) Error() error {
 16358  	return it.fail
 16359  }
 16360  
 16361  // Close terminates the iteration process, releasing any pending underlying
 16362  // resources.
 16363  func (it *WTONApprovalIterator) Close() error {
 16364  	it.sub.Unsubscribe()
 16365  	return nil
 16366  }
 16367  
 16368  // WTONApproval represents a Approval event raised by the WTON contract.
 16369  type WTONApproval struct {
 16370  	Owner   common.Address
 16371  	Spender common.Address
 16372  	Value   *big.Int
 16373  	Raw     types.Log // Blockchain specific contextual infos
 16374  }
 16375  
 16376  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 16377  //
 16378  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 16379  func (_WTON *WTONFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*WTONApprovalIterator, error) {
 16380  
 16381  	var ownerRule []interface{}
 16382  	for _, ownerItem := range owner {
 16383  		ownerRule = append(ownerRule, ownerItem)
 16384  	}
 16385  	var spenderRule []interface{}
 16386  	for _, spenderItem := range spender {
 16387  		spenderRule = append(spenderRule, spenderItem)
 16388  	}
 16389  
 16390  	logs, sub, err := _WTON.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 16391  	if err != nil {
 16392  		return nil, err
 16393  	}
 16394  	return &WTONApprovalIterator{contract: _WTON.contract, event: "Approval", logs: logs, sub: sub}, nil
 16395  }
 16396  
 16397  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 16398  //
 16399  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 16400  func (_WTON *WTONFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *WTONApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 16401  
 16402  	var ownerRule []interface{}
 16403  	for _, ownerItem := range owner {
 16404  		ownerRule = append(ownerRule, ownerItem)
 16405  	}
 16406  	var spenderRule []interface{}
 16407  	for _, spenderItem := range spender {
 16408  		spenderRule = append(spenderRule, spenderItem)
 16409  	}
 16410  
 16411  	logs, sub, err := _WTON.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 16412  	if err != nil {
 16413  		return nil, err
 16414  	}
 16415  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16416  		defer sub.Unsubscribe()
 16417  		for {
 16418  			select {
 16419  			case log := <-logs:
 16420  				// New log arrived, parse the event and forward to the user
 16421  				event := new(WTONApproval)
 16422  				if err := _WTON.contract.UnpackLog(event, "Approval", log); err != nil {
 16423  					return err
 16424  				}
 16425  				event.Raw = log
 16426  
 16427  				select {
 16428  				case sink <- event:
 16429  				case err := <-sub.Err():
 16430  					return err
 16431  				case <-quit:
 16432  					return nil
 16433  				}
 16434  			case err := <-sub.Err():
 16435  				return err
 16436  			case <-quit:
 16437  				return nil
 16438  			}
 16439  		}
 16440  	}), nil
 16441  }
 16442  
 16443  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 16444  //
 16445  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 16446  func (_WTON *WTONFilterer) ParseApproval(log types.Log) (*WTONApproval, error) {
 16447  	event := new(WTONApproval)
 16448  	if err := _WTON.contract.UnpackLog(event, "Approval", log); err != nil {
 16449  		return nil, err
 16450  	}
 16451  	return event, nil
 16452  }
 16453  
 16454  // WTONMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the WTON contract.
 16455  type WTONMinterAddedIterator struct {
 16456  	Event *WTONMinterAdded // Event containing the contract specifics and raw log
 16457  
 16458  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16459  	event    string              // Event name to use for unpacking event data
 16460  
 16461  	logs chan types.Log        // Log channel receiving the found contract events
 16462  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 16463  	done bool                  // Whether the subscription completed delivering logs
 16464  	fail error                 // Occurred error to stop iteration
 16465  }
 16466  
 16467  // Next advances the iterator to the subsequent event, returning whether there
 16468  // are any more events found. In case of a retrieval or parsing error, false is
 16469  // returned and Error() can be queried for the exact failure.
 16470  func (it *WTONMinterAddedIterator) Next() bool {
 16471  	// If the iterator failed, stop iterating
 16472  	if it.fail != nil {
 16473  		return false
 16474  	}
 16475  	// If the iterator completed, deliver directly whatever's available
 16476  	if it.done {
 16477  		select {
 16478  		case log := <-it.logs:
 16479  			it.Event = new(WTONMinterAdded)
 16480  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16481  				it.fail = err
 16482  				return false
 16483  			}
 16484  			it.Event.Raw = log
 16485  			return true
 16486  
 16487  		default:
 16488  			return false
 16489  		}
 16490  	}
 16491  	// Iterator still in progress, wait for either a data or an error event
 16492  	select {
 16493  	case log := <-it.logs:
 16494  		it.Event = new(WTONMinterAdded)
 16495  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16496  			it.fail = err
 16497  			return false
 16498  		}
 16499  		it.Event.Raw = log
 16500  		return true
 16501  
 16502  	case err := <-it.sub.Err():
 16503  		it.done = true
 16504  		it.fail = err
 16505  		return it.Next()
 16506  	}
 16507  }
 16508  
 16509  // Error returns any retrieval or parsing error occurred during filtering.
 16510  func (it *WTONMinterAddedIterator) Error() error {
 16511  	return it.fail
 16512  }
 16513  
 16514  // Close terminates the iteration process, releasing any pending underlying
 16515  // resources.
 16516  func (it *WTONMinterAddedIterator) Close() error {
 16517  	it.sub.Unsubscribe()
 16518  	return nil
 16519  }
 16520  
 16521  // WTONMinterAdded represents a MinterAdded event raised by the WTON contract.
 16522  type WTONMinterAdded struct {
 16523  	Account common.Address
 16524  	Raw     types.Log // Blockchain specific contextual infos
 16525  }
 16526  
 16527  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 16528  //
 16529  // Solidity: event MinterAdded(address indexed account)
 16530  func (_WTON *WTONFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*WTONMinterAddedIterator, error) {
 16531  
 16532  	var accountRule []interface{}
 16533  	for _, accountItem := range account {
 16534  		accountRule = append(accountRule, accountItem)
 16535  	}
 16536  
 16537  	logs, sub, err := _WTON.contract.FilterLogs(opts, "MinterAdded", accountRule)
 16538  	if err != nil {
 16539  		return nil, err
 16540  	}
 16541  	return &WTONMinterAddedIterator{contract: _WTON.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 16542  }
 16543  
 16544  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 16545  //
 16546  // Solidity: event MinterAdded(address indexed account)
 16547  func (_WTON *WTONFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *WTONMinterAdded, account []common.Address) (event.Subscription, error) {
 16548  
 16549  	var accountRule []interface{}
 16550  	for _, accountItem := range account {
 16551  		accountRule = append(accountRule, accountItem)
 16552  	}
 16553  
 16554  	logs, sub, err := _WTON.contract.WatchLogs(opts, "MinterAdded", accountRule)
 16555  	if err != nil {
 16556  		return nil, err
 16557  	}
 16558  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16559  		defer sub.Unsubscribe()
 16560  		for {
 16561  			select {
 16562  			case log := <-logs:
 16563  				// New log arrived, parse the event and forward to the user
 16564  				event := new(WTONMinterAdded)
 16565  				if err := _WTON.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 16566  					return err
 16567  				}
 16568  				event.Raw = log
 16569  
 16570  				select {
 16571  				case sink <- event:
 16572  				case err := <-sub.Err():
 16573  					return err
 16574  				case <-quit:
 16575  					return nil
 16576  				}
 16577  			case err := <-sub.Err():
 16578  				return err
 16579  			case <-quit:
 16580  				return nil
 16581  			}
 16582  		}
 16583  	}), nil
 16584  }
 16585  
 16586  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 16587  //
 16588  // Solidity: event MinterAdded(address indexed account)
 16589  func (_WTON *WTONFilterer) ParseMinterAdded(log types.Log) (*WTONMinterAdded, error) {
 16590  	event := new(WTONMinterAdded)
 16591  	if err := _WTON.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 16592  		return nil, err
 16593  	}
 16594  	return event, nil
 16595  }
 16596  
 16597  // WTONMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the WTON contract.
 16598  type WTONMinterRemovedIterator struct {
 16599  	Event *WTONMinterRemoved // Event containing the contract specifics and raw log
 16600  
 16601  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16602  	event    string              // Event name to use for unpacking event data
 16603  
 16604  	logs chan types.Log        // Log channel receiving the found contract events
 16605  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 16606  	done bool                  // Whether the subscription completed delivering logs
 16607  	fail error                 // Occurred error to stop iteration
 16608  }
 16609  
 16610  // Next advances the iterator to the subsequent event, returning whether there
 16611  // are any more events found. In case of a retrieval or parsing error, false is
 16612  // returned and Error() can be queried for the exact failure.
 16613  func (it *WTONMinterRemovedIterator) Next() bool {
 16614  	// If the iterator failed, stop iterating
 16615  	if it.fail != nil {
 16616  		return false
 16617  	}
 16618  	// If the iterator completed, deliver directly whatever's available
 16619  	if it.done {
 16620  		select {
 16621  		case log := <-it.logs:
 16622  			it.Event = new(WTONMinterRemoved)
 16623  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16624  				it.fail = err
 16625  				return false
 16626  			}
 16627  			it.Event.Raw = log
 16628  			return true
 16629  
 16630  		default:
 16631  			return false
 16632  		}
 16633  	}
 16634  	// Iterator still in progress, wait for either a data or an error event
 16635  	select {
 16636  	case log := <-it.logs:
 16637  		it.Event = new(WTONMinterRemoved)
 16638  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16639  			it.fail = err
 16640  			return false
 16641  		}
 16642  		it.Event.Raw = log
 16643  		return true
 16644  
 16645  	case err := <-it.sub.Err():
 16646  		it.done = true
 16647  		it.fail = err
 16648  		return it.Next()
 16649  	}
 16650  }
 16651  
 16652  // Error returns any retrieval or parsing error occurred during filtering.
 16653  func (it *WTONMinterRemovedIterator) Error() error {
 16654  	return it.fail
 16655  }
 16656  
 16657  // Close terminates the iteration process, releasing any pending underlying
 16658  // resources.
 16659  func (it *WTONMinterRemovedIterator) Close() error {
 16660  	it.sub.Unsubscribe()
 16661  	return nil
 16662  }
 16663  
 16664  // WTONMinterRemoved represents a MinterRemoved event raised by the WTON contract.
 16665  type WTONMinterRemoved struct {
 16666  	Account common.Address
 16667  	Raw     types.Log // Blockchain specific contextual infos
 16668  }
 16669  
 16670  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 16671  //
 16672  // Solidity: event MinterRemoved(address indexed account)
 16673  func (_WTON *WTONFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*WTONMinterRemovedIterator, error) {
 16674  
 16675  	var accountRule []interface{}
 16676  	for _, accountItem := range account {
 16677  		accountRule = append(accountRule, accountItem)
 16678  	}
 16679  
 16680  	logs, sub, err := _WTON.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 16681  	if err != nil {
 16682  		return nil, err
 16683  	}
 16684  	return &WTONMinterRemovedIterator{contract: _WTON.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 16685  }
 16686  
 16687  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 16688  //
 16689  // Solidity: event MinterRemoved(address indexed account)
 16690  func (_WTON *WTONFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *WTONMinterRemoved, account []common.Address) (event.Subscription, error) {
 16691  
 16692  	var accountRule []interface{}
 16693  	for _, accountItem := range account {
 16694  		accountRule = append(accountRule, accountItem)
 16695  	}
 16696  
 16697  	logs, sub, err := _WTON.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 16698  	if err != nil {
 16699  		return nil, err
 16700  	}
 16701  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16702  		defer sub.Unsubscribe()
 16703  		for {
 16704  			select {
 16705  			case log := <-logs:
 16706  				// New log arrived, parse the event and forward to the user
 16707  				event := new(WTONMinterRemoved)
 16708  				if err := _WTON.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 16709  					return err
 16710  				}
 16711  				event.Raw = log
 16712  
 16713  				select {
 16714  				case sink <- event:
 16715  				case err := <-sub.Err():
 16716  					return err
 16717  				case <-quit:
 16718  					return nil
 16719  				}
 16720  			case err := <-sub.Err():
 16721  				return err
 16722  			case <-quit:
 16723  				return nil
 16724  			}
 16725  		}
 16726  	}), nil
 16727  }
 16728  
 16729  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 16730  //
 16731  // Solidity: event MinterRemoved(address indexed account)
 16732  func (_WTON *WTONFilterer) ParseMinterRemoved(log types.Log) (*WTONMinterRemoved, error) {
 16733  	event := new(WTONMinterRemoved)
 16734  	if err := _WTON.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 16735  		return nil, err
 16736  	}
 16737  	return event, nil
 16738  }
 16739  
 16740  // WTONOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the WTON contract.
 16741  type WTONOwnershipTransferredIterator struct {
 16742  	Event *WTONOwnershipTransferred // Event containing the contract specifics and raw log
 16743  
 16744  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16745  	event    string              // Event name to use for unpacking event data
 16746  
 16747  	logs chan types.Log        // Log channel receiving the found contract events
 16748  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 16749  	done bool                  // Whether the subscription completed delivering logs
 16750  	fail error                 // Occurred error to stop iteration
 16751  }
 16752  
 16753  // Next advances the iterator to the subsequent event, returning whether there
 16754  // are any more events found. In case of a retrieval or parsing error, false is
 16755  // returned and Error() can be queried for the exact failure.
 16756  func (it *WTONOwnershipTransferredIterator) Next() bool {
 16757  	// If the iterator failed, stop iterating
 16758  	if it.fail != nil {
 16759  		return false
 16760  	}
 16761  	// If the iterator completed, deliver directly whatever's available
 16762  	if it.done {
 16763  		select {
 16764  		case log := <-it.logs:
 16765  			it.Event = new(WTONOwnershipTransferred)
 16766  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16767  				it.fail = err
 16768  				return false
 16769  			}
 16770  			it.Event.Raw = log
 16771  			return true
 16772  
 16773  		default:
 16774  			return false
 16775  		}
 16776  	}
 16777  	// Iterator still in progress, wait for either a data or an error event
 16778  	select {
 16779  	case log := <-it.logs:
 16780  		it.Event = new(WTONOwnershipTransferred)
 16781  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16782  			it.fail = err
 16783  			return false
 16784  		}
 16785  		it.Event.Raw = log
 16786  		return true
 16787  
 16788  	case err := <-it.sub.Err():
 16789  		it.done = true
 16790  		it.fail = err
 16791  		return it.Next()
 16792  	}
 16793  }
 16794  
 16795  // Error returns any retrieval or parsing error occurred during filtering.
 16796  func (it *WTONOwnershipTransferredIterator) Error() error {
 16797  	return it.fail
 16798  }
 16799  
 16800  // Close terminates the iteration process, releasing any pending underlying
 16801  // resources.
 16802  func (it *WTONOwnershipTransferredIterator) Close() error {
 16803  	it.sub.Unsubscribe()
 16804  	return nil
 16805  }
 16806  
 16807  // WTONOwnershipTransferred represents a OwnershipTransferred event raised by the WTON contract.
 16808  type WTONOwnershipTransferred struct {
 16809  	PreviousOwner common.Address
 16810  	NewOwner      common.Address
 16811  	Raw           types.Log // Blockchain specific contextual infos
 16812  }
 16813  
 16814  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 16815  //
 16816  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 16817  func (_WTON *WTONFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*WTONOwnershipTransferredIterator, error) {
 16818  
 16819  	var previousOwnerRule []interface{}
 16820  	for _, previousOwnerItem := range previousOwner {
 16821  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 16822  	}
 16823  	var newOwnerRule []interface{}
 16824  	for _, newOwnerItem := range newOwner {
 16825  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 16826  	}
 16827  
 16828  	logs, sub, err := _WTON.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 16829  	if err != nil {
 16830  		return nil, err
 16831  	}
 16832  	return &WTONOwnershipTransferredIterator{contract: _WTON.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 16833  }
 16834  
 16835  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 16836  //
 16837  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 16838  func (_WTON *WTONFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *WTONOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 16839  
 16840  	var previousOwnerRule []interface{}
 16841  	for _, previousOwnerItem := range previousOwner {
 16842  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 16843  	}
 16844  	var newOwnerRule []interface{}
 16845  	for _, newOwnerItem := range newOwner {
 16846  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 16847  	}
 16848  
 16849  	logs, sub, err := _WTON.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 16850  	if err != nil {
 16851  		return nil, err
 16852  	}
 16853  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16854  		defer sub.Unsubscribe()
 16855  		for {
 16856  			select {
 16857  			case log := <-logs:
 16858  				// New log arrived, parse the event and forward to the user
 16859  				event := new(WTONOwnershipTransferred)
 16860  				if err := _WTON.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 16861  					return err
 16862  				}
 16863  				event.Raw = log
 16864  
 16865  				select {
 16866  				case sink <- event:
 16867  				case err := <-sub.Err():
 16868  					return err
 16869  				case <-quit:
 16870  					return nil
 16871  				}
 16872  			case err := <-sub.Err():
 16873  				return err
 16874  			case <-quit:
 16875  				return nil
 16876  			}
 16877  		}
 16878  	}), nil
 16879  }
 16880  
 16881  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 16882  //
 16883  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 16884  func (_WTON *WTONFilterer) ParseOwnershipTransferred(log types.Log) (*WTONOwnershipTransferred, error) {
 16885  	event := new(WTONOwnershipTransferred)
 16886  	if err := _WTON.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 16887  		return nil, err
 16888  	}
 16889  	return event, nil
 16890  }
 16891  
 16892  // WTONTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the WTON contract.
 16893  type WTONTransferIterator struct {
 16894  	Event *WTONTransfer // Event containing the contract specifics and raw log
 16895  
 16896  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16897  	event    string              // Event name to use for unpacking event data
 16898  
 16899  	logs chan types.Log        // Log channel receiving the found contract events
 16900  	sub  ethereum.Subscription // Subscription for errors, completion and termination
 16901  	done bool                  // Whether the subscription completed delivering logs
 16902  	fail error                 // Occurred error to stop iteration
 16903  }
 16904  
 16905  // Next advances the iterator to the subsequent event, returning whether there
 16906  // are any more events found. In case of a retrieval or parsing error, false is
 16907  // returned and Error() can be queried for the exact failure.
 16908  func (it *WTONTransferIterator) Next() bool {
 16909  	// If the iterator failed, stop iterating
 16910  	if it.fail != nil {
 16911  		return false
 16912  	}
 16913  	// If the iterator completed, deliver directly whatever's available
 16914  	if it.done {
 16915  		select {
 16916  		case log := <-it.logs:
 16917  			it.Event = new(WTONTransfer)
 16918  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16919  				it.fail = err
 16920  				return false
 16921  			}
 16922  			it.Event.Raw = log
 16923  			return true
 16924  
 16925  		default:
 16926  			return false
 16927  		}
 16928  	}
 16929  	// Iterator still in progress, wait for either a data or an error event
 16930  	select {
 16931  	case log := <-it.logs:
 16932  		it.Event = new(WTONTransfer)
 16933  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16934  			it.fail = err
 16935  			return false
 16936  		}
 16937  		it.Event.Raw = log
 16938  		return true
 16939  
 16940  	case err := <-it.sub.Err():
 16941  		it.done = true
 16942  		it.fail = err
 16943  		return it.Next()
 16944  	}
 16945  }
 16946  
 16947  // Error returns any retrieval or parsing error occurred during filtering.
 16948  func (it *WTONTransferIterator) Error() error {
 16949  	return it.fail
 16950  }
 16951  
 16952  // Close terminates the iteration process, releasing any pending underlying
 16953  // resources.
 16954  func (it *WTONTransferIterator) Close() error {
 16955  	it.sub.Unsubscribe()
 16956  	return nil
 16957  }
 16958  
 16959  // WTONTransfer represents a Transfer event raised by the WTON contract.
 16960  type WTONTransfer struct {
 16961  	From  common.Address
 16962  	To    common.Address
 16963  	Value *big.Int
 16964  	Raw   types.Log // Blockchain specific contextual infos
 16965  }
 16966  
 16967  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 16968  //
 16969  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 16970  func (_WTON *WTONFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*WTONTransferIterator, error) {
 16971  
 16972  	var fromRule []interface{}
 16973  	for _, fromItem := range from {
 16974  		fromRule = append(fromRule, fromItem)
 16975  	}
 16976  	var toRule []interface{}
 16977  	for _, toItem := range to {
 16978  		toRule = append(toRule, toItem)
 16979  	}
 16980  
 16981  	logs, sub, err := _WTON.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 16982  	if err != nil {
 16983  		return nil, err
 16984  	}
 16985  	return &WTONTransferIterator{contract: _WTON.contract, event: "Transfer", logs: logs, sub: sub}, nil
 16986  }
 16987  
 16988  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 16989  //
 16990  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 16991  func (_WTON *WTONFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *WTONTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 16992  
 16993  	var fromRule []interface{}
 16994  	for _, fromItem := range from {
 16995  		fromRule = append(fromRule, fromItem)
 16996  	}
 16997  	var toRule []interface{}
 16998  	for _, toItem := range to {
 16999  		toRule = append(toRule, toItem)
 17000  	}
 17001  
 17002  	logs, sub, err := _WTON.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 17003  	if err != nil {
 17004  		return nil, err
 17005  	}
 17006  	return event.NewSubscription(func(quit <-chan struct{}) error {
 17007  		defer sub.Unsubscribe()
 17008  		for {
 17009  			select {
 17010  			case log := <-logs:
 17011  				// New log arrived, parse the event and forward to the user
 17012  				event := new(WTONTransfer)
 17013  				if err := _WTON.contract.UnpackLog(event, "Transfer", log); err != nil {
 17014  					return err
 17015  				}
 17016  				event.Raw = log
 17017  
 17018  				select {
 17019  				case sink <- event:
 17020  				case err := <-sub.Err():
 17021  					return err
 17022  				case <-quit:
 17023  					return nil
 17024  				}
 17025  			case err := <-sub.Err():
 17026  				return err
 17027  			case <-quit:
 17028  				return nil
 17029  			}
 17030  		}
 17031  	}), nil
 17032  }
 17033  
 17034  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 17035  //
 17036  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 17037  func (_WTON *WTONFilterer) ParseTransfer(log types.Log) (*WTONTransfer, error) {
 17038  	event := new(WTONTransfer)
 17039  	if err := _WTON.contract.UnpackLog(event, "Transfer", log); err != nil {
 17040  		return nil, err
 17041  	}
 17042  	return event, nil
 17043  }