github.com/klaytn/klaytn@v1.12.1/contracts/sc_erc20/sc_token.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 sctoken
     5  
     6  import (
     7  	"errors"
     8  	"math/big"
     9  	"strings"
    10  
    11  	"github.com/klaytn/klaytn"
    12  	"github.com/klaytn/klaytn/accounts/abi"
    13  	"github.com/klaytn/klaytn/accounts/abi/bind"
    14  	"github.com/klaytn/klaytn/blockchain/types"
    15  	"github.com/klaytn/klaytn/common"
    16  	"github.com/klaytn/klaytn/event"
    17  )
    18  
    19  // Reference imports to suppress errors if they are not otherwise used.
    20  var (
    21  	_ = errors.New
    22  	_ = big.NewInt
    23  	_ = strings.NewReader
    24  	_ = klaytn.NotFound
    25  	_ = bind.Bind
    26  	_ = common.Big1
    27  	_ = types.BloomLookup
    28  	_ = event.NewSubscription
    29  	_ = abi.ConvertType
    30  )
    31  
    32  // AddressMetaData contains all meta data concerning the Address contract.
    33  var AddressMetaData = &bind.MetaData{
    34  	ABI: "[]",
    35  	Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029",
    36  }
    37  
    38  // AddressABI is the input ABI used to generate the binding from.
    39  // Deprecated: Use AddressMetaData.ABI instead.
    40  var AddressABI = AddressMetaData.ABI
    41  
    42  // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
    43  const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820299ebfdf39258e62f3b1db6c55ebb9d11001cde07d51662fa2fd336c270f24630029`
    44  
    45  // AddressBin is the compiled bytecode used for deploying new contracts.
    46  // Deprecated: Use AddressMetaData.Bin instead.
    47  var AddressBin = AddressMetaData.Bin
    48  
    49  // DeployAddress deploys a new Klaytn contract, binding an instance of Address to it.
    50  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    51  	parsed, err := AddressMetaData.GetAbi()
    52  	if err != nil {
    53  		return common.Address{}, nil, nil, err
    54  	}
    55  	if parsed == nil {
    56  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
    57  	}
    58  
    59  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AddressBin), backend)
    60  	if err != nil {
    61  		return common.Address{}, nil, nil, err
    62  	}
    63  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    64  }
    65  
    66  // Address is an auto generated Go binding around a Klaytn contract.
    67  type Address struct {
    68  	AddressCaller     // Read-only binding to the contract
    69  	AddressTransactor // Write-only binding to the contract
    70  	AddressFilterer   // Log filterer for contract events
    71  }
    72  
    73  // AddressCaller is an auto generated read-only Go binding around a Klaytn contract.
    74  type AddressCaller struct {
    75  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    76  }
    77  
    78  // AddressTransactor is an auto generated write-only Go binding around a Klaytn contract.
    79  type AddressTransactor struct {
    80  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    81  }
    82  
    83  // AddressFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
    84  type AddressFilterer struct {
    85  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    86  }
    87  
    88  // AddressSession is an auto generated Go binding around a Klaytn contract,
    89  // with pre-set call and transact options.
    90  type AddressSession struct {
    91  	Contract     *Address          // Generic contract binding to set the session for
    92  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    93  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    94  }
    95  
    96  // AddressCallerSession is an auto generated read-only Go binding around a Klaytn contract,
    97  // with pre-set call options.
    98  type AddressCallerSession struct {
    99  	Contract *AddressCaller // Generic contract caller binding to set the session for
   100  	CallOpts bind.CallOpts  // Call options to use throughout this session
   101  }
   102  
   103  // AddressTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   104  // with pre-set transact options.
   105  type AddressTransactorSession struct {
   106  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
   107  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
   108  }
   109  
   110  // AddressRaw is an auto generated low-level Go binding around a Klaytn contract.
   111  type AddressRaw struct {
   112  	Contract *Address // Generic contract binding to access the raw methods on
   113  }
   114  
   115  // AddressCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   116  type AddressCallerRaw struct {
   117  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   118  }
   119  
   120  // AddressTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   121  type AddressTransactorRaw struct {
   122  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   123  }
   124  
   125  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   126  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   127  	contract, err := bindAddress(address, backend, backend, backend)
   128  	if err != nil {
   129  		return nil, err
   130  	}
   131  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   132  }
   133  
   134  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   135  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   136  	contract, err := bindAddress(address, caller, nil, nil)
   137  	if err != nil {
   138  		return nil, err
   139  	}
   140  	return &AddressCaller{contract: contract}, nil
   141  }
   142  
   143  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   144  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   145  	contract, err := bindAddress(address, nil, transactor, nil)
   146  	if err != nil {
   147  		return nil, err
   148  	}
   149  	return &AddressTransactor{contract: contract}, nil
   150  }
   151  
   152  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   153  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   154  	contract, err := bindAddress(address, nil, nil, filterer)
   155  	if err != nil {
   156  		return nil, err
   157  	}
   158  	return &AddressFilterer{contract: contract}, nil
   159  }
   160  
   161  // bindAddress binds a generic wrapper to an already deployed contract.
   162  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   163  	parsed, err := AddressMetaData.GetAbi()
   164  	if err != nil {
   165  		return nil, err
   166  	}
   167  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   168  }
   169  
   170  // Call invokes the (constant) contract method with params as input values and
   171  // sets the output to result. The result type might be a single field for simple
   172  // returns, a slice of interfaces for anonymous returns and a struct for named
   173  // returns.
   174  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   175  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   176  }
   177  
   178  // Transfer initiates a plain transaction to move funds to the contract, calling
   179  // its default method if one is available.
   180  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   181  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   182  }
   183  
   184  // Transact invokes the (paid) contract method with params as input values.
   185  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   186  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   187  }
   188  
   189  // Call invokes the (constant) contract method with params as input values and
   190  // sets the output to result. The result type might be a single field for simple
   191  // returns, a slice of interfaces for anonymous returns and a struct for named
   192  // returns.
   193  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   194  	return _Address.Contract.contract.Call(opts, result, method, params...)
   195  }
   196  
   197  // Transfer initiates a plain transaction to move funds to the contract, calling
   198  // its default method if one is available.
   199  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   200  	return _Address.Contract.contract.Transfer(opts)
   201  }
   202  
   203  // Transact invokes the (paid) contract method with params as input values.
   204  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   205  	return _Address.Contract.contract.Transact(opts, method, params...)
   206  }
   207  
   208  // ERC20MetaData contains all meta data concerning the ERC20 contract.
   209  var ERC20MetaData = &bind.MetaData{
   210  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]",
   211  	Sigs: map[string]string{
   212  		"dd62ed3e": "allowance(address,address)",
   213  		"095ea7b3": "approve(address,uint256)",
   214  		"70a08231": "balanceOf(address)",
   215  		"a457c2d7": "decreaseAllowance(address,uint256)",
   216  		"39509351": "increaseAllowance(address,uint256)",
   217  		"18160ddd": "totalSupply()",
   218  		"a9059cbb": "transfer(address,uint256)",
   219  		"23b872dd": "transferFrom(address,address,uint256)",
   220  	},
   221  	Bin: "0x608060405234801561001057600080fd5b506106eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058200e33dfdabb620ad5daebde6c55a52fcc617b6413d3d04bdaeb7925e86b327d6a0029",
   222  }
   223  
   224  // ERC20ABI is the input ABI used to generate the binding from.
   225  // Deprecated: Use ERC20MetaData.ABI instead.
   226  var ERC20ABI = ERC20MetaData.ABI
   227  
   228  // ERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   229  const ERC20BinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058200e33dfdabb620ad5daebde6c55a52fcc617b6413d3d04bdaeb7925e86b327d6a0029`
   230  
   231  // ERC20FuncSigs maps the 4-byte function signature to its string representation.
   232  // Deprecated: Use ERC20MetaData.Sigs instead.
   233  var ERC20FuncSigs = ERC20MetaData.Sigs
   234  
   235  // ERC20Bin is the compiled bytecode used for deploying new contracts.
   236  // Deprecated: Use ERC20MetaData.Bin instead.
   237  var ERC20Bin = ERC20MetaData.Bin
   238  
   239  // DeployERC20 deploys a new Klaytn contract, binding an instance of ERC20 to it.
   240  func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20, error) {
   241  	parsed, err := ERC20MetaData.GetAbi()
   242  	if err != nil {
   243  		return common.Address{}, nil, nil, err
   244  	}
   245  	if parsed == nil {
   246  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
   247  	}
   248  
   249  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20Bin), backend)
   250  	if err != nil {
   251  		return common.Address{}, nil, nil, err
   252  	}
   253  	return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
   254  }
   255  
   256  // ERC20 is an auto generated Go binding around a Klaytn contract.
   257  type ERC20 struct {
   258  	ERC20Caller     // Read-only binding to the contract
   259  	ERC20Transactor // Write-only binding to the contract
   260  	ERC20Filterer   // Log filterer for contract events
   261  }
   262  
   263  // ERC20Caller is an auto generated read-only Go binding around a Klaytn contract.
   264  type ERC20Caller struct {
   265  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   266  }
   267  
   268  // ERC20Transactor is an auto generated write-only Go binding around a Klaytn contract.
   269  type ERC20Transactor struct {
   270  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   271  }
   272  
   273  // ERC20Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
   274  type ERC20Filterer struct {
   275  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   276  }
   277  
   278  // ERC20Session is an auto generated Go binding around a Klaytn contract,
   279  // with pre-set call and transact options.
   280  type ERC20Session struct {
   281  	Contract     *ERC20            // Generic contract binding to set the session for
   282  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   283  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   284  }
   285  
   286  // ERC20CallerSession is an auto generated read-only Go binding around a Klaytn contract,
   287  // with pre-set call options.
   288  type ERC20CallerSession struct {
   289  	Contract *ERC20Caller  // Generic contract caller binding to set the session for
   290  	CallOpts bind.CallOpts // Call options to use throughout this session
   291  }
   292  
   293  // ERC20TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   294  // with pre-set transact options.
   295  type ERC20TransactorSession struct {
   296  	Contract     *ERC20Transactor  // Generic contract transactor binding to set the session for
   297  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   298  }
   299  
   300  // ERC20Raw is an auto generated low-level Go binding around a Klaytn contract.
   301  type ERC20Raw struct {
   302  	Contract *ERC20 // Generic contract binding to access the raw methods on
   303  }
   304  
   305  // ERC20CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   306  type ERC20CallerRaw struct {
   307  	Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on
   308  }
   309  
   310  // ERC20TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   311  type ERC20TransactorRaw struct {
   312  	Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on
   313  }
   314  
   315  // NewERC20 creates a new instance of ERC20, bound to a specific deployed contract.
   316  func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) {
   317  	contract, err := bindERC20(address, backend, backend, backend)
   318  	if err != nil {
   319  		return nil, err
   320  	}
   321  	return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
   322  }
   323  
   324  // NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract.
   325  func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) {
   326  	contract, err := bindERC20(address, caller, nil, nil)
   327  	if err != nil {
   328  		return nil, err
   329  	}
   330  	return &ERC20Caller{contract: contract}, nil
   331  }
   332  
   333  // NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract.
   334  func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) {
   335  	contract, err := bindERC20(address, nil, transactor, nil)
   336  	if err != nil {
   337  		return nil, err
   338  	}
   339  	return &ERC20Transactor{contract: contract}, nil
   340  }
   341  
   342  // NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract.
   343  func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) {
   344  	contract, err := bindERC20(address, nil, nil, filterer)
   345  	if err != nil {
   346  		return nil, err
   347  	}
   348  	return &ERC20Filterer{contract: contract}, nil
   349  }
   350  
   351  // bindERC20 binds a generic wrapper to an already deployed contract.
   352  func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   353  	parsed, err := ERC20MetaData.GetAbi()
   354  	if err != nil {
   355  		return nil, err
   356  	}
   357  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
   358  }
   359  
   360  // Call invokes the (constant) contract method with params as input values and
   361  // sets the output to result. The result type might be a single field for simple
   362  // returns, a slice of interfaces for anonymous returns and a struct for named
   363  // returns.
   364  func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   365  	return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...)
   366  }
   367  
   368  // Transfer initiates a plain transaction to move funds to the contract, calling
   369  // its default method if one is available.
   370  func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   371  	return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts)
   372  }
   373  
   374  // Transact invokes the (paid) contract method with params as input values.
   375  func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   376  	return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...)
   377  }
   378  
   379  // Call invokes the (constant) contract method with params as input values and
   380  // sets the output to result. The result type might be a single field for simple
   381  // returns, a slice of interfaces for anonymous returns and a struct for named
   382  // returns.
   383  func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
   384  	return _ERC20.Contract.contract.Call(opts, result, method, params...)
   385  }
   386  
   387  // Transfer initiates a plain transaction to move funds to the contract, calling
   388  // its default method if one is available.
   389  func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   390  	return _ERC20.Contract.contract.Transfer(opts)
   391  }
   392  
   393  // Transact invokes the (paid) contract method with params as input values.
   394  func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   395  	return _ERC20.Contract.contract.Transact(opts, method, params...)
   396  }
   397  
   398  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   399  //
   400  // Solidity: function allowance(address owner, address spender) view returns(uint256)
   401  func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
   402  	var out []interface{}
   403  	err := _ERC20.contract.Call(opts, &out, "allowance", owner, spender)
   404  
   405  	if err != nil {
   406  		return *new(*big.Int), err
   407  	}
   408  
   409  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   410  
   411  	return out0, err
   412  
   413  }
   414  
   415  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   416  //
   417  // Solidity: function allowance(address owner, address spender) view returns(uint256)
   418  func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
   419  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
   420  }
   421  
   422  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
   423  //
   424  // Solidity: function allowance(address owner, address spender) view returns(uint256)
   425  func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
   426  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
   427  }
   428  
   429  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   430  //
   431  // Solidity: function balanceOf(address account) view returns(uint256)
   432  func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
   433  	var out []interface{}
   434  	err := _ERC20.contract.Call(opts, &out, "balanceOf", account)
   435  
   436  	if err != nil {
   437  		return *new(*big.Int), err
   438  	}
   439  
   440  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   441  
   442  	return out0, err
   443  
   444  }
   445  
   446  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   447  //
   448  // Solidity: function balanceOf(address account) view returns(uint256)
   449  func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
   450  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
   451  }
   452  
   453  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   454  //
   455  // Solidity: function balanceOf(address account) view returns(uint256)
   456  func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
   457  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
   458  }
   459  
   460  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   461  //
   462  // Solidity: function totalSupply() view returns(uint256)
   463  func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
   464  	var out []interface{}
   465  	err := _ERC20.contract.Call(opts, &out, "totalSupply")
   466  
   467  	if err != nil {
   468  		return *new(*big.Int), err
   469  	}
   470  
   471  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
   472  
   473  	return out0, err
   474  
   475  }
   476  
   477  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   478  //
   479  // Solidity: function totalSupply() view returns(uint256)
   480  func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) {
   481  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
   482  }
   483  
   484  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
   485  //
   486  // Solidity: function totalSupply() view returns(uint256)
   487  func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) {
   488  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
   489  }
   490  
   491  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   492  //
   493  // Solidity: function approve(address spender, uint256 value) returns(bool)
   494  func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
   495  	return _ERC20.contract.Transact(opts, "approve", spender, value)
   496  }
   497  
   498  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   499  //
   500  // Solidity: function approve(address spender, uint256 value) returns(bool)
   501  func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
   502  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value)
   503  }
   504  
   505  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   506  //
   507  // Solidity: function approve(address spender, uint256 value) returns(bool)
   508  func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
   509  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value)
   510  }
   511  
   512  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
   513  //
   514  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
   515  func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
   516  	return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
   517  }
   518  
   519  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
   520  //
   521  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
   522  func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
   523  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
   524  }
   525  
   526  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
   527  //
   528  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
   529  func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
   530  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
   531  }
   532  
   533  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
   534  //
   535  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
   536  func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
   537  	return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue)
   538  }
   539  
   540  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
   541  //
   542  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
   543  func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
   544  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
   545  }
   546  
   547  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
   548  //
   549  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
   550  func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
   551  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
   552  }
   553  
   554  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
   555  //
   556  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
   557  func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
   558  	return _ERC20.contract.Transact(opts, "transfer", recipient, amount)
   559  }
   560  
   561  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
   562  //
   563  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
   564  func (_ERC20 *ERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
   565  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
   566  }
   567  
   568  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
   569  //
   570  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
   571  func (_ERC20 *ERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
   572  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
   573  }
   574  
   575  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   576  //
   577  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
   578  func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
   579  	return _ERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
   580  }
   581  
   582  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   583  //
   584  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
   585  func (_ERC20 *ERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
   586  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
   587  }
   588  
   589  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   590  //
   591  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
   592  func (_ERC20 *ERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
   593  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
   594  }
   595  
   596  // 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.
   597  type ERC20ApprovalIterator struct {
   598  	Event *ERC20Approval // Event containing the contract specifics and raw log
   599  
   600  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   601  	event    string              // Event name to use for unpacking event data
   602  
   603  	logs chan types.Log      // Log channel receiving the found contract events
   604  	sub  klaytn.Subscription // Subscription for errors, completion and termination
   605  	done bool                // Whether the subscription completed delivering logs
   606  	fail error               // Occurred error to stop iteration
   607  }
   608  
   609  // Next advances the iterator to the subsequent event, returning whether there
   610  // are any more events found. In case of a retrieval or parsing error, false is
   611  // returned and Error() can be queried for the exact failure.
   612  func (it *ERC20ApprovalIterator) Next() bool {
   613  	// If the iterator failed, stop iterating
   614  	if it.fail != nil {
   615  		return false
   616  	}
   617  	// If the iterator completed, deliver directly whatever's available
   618  	if it.done {
   619  		select {
   620  		case log := <-it.logs:
   621  			it.Event = new(ERC20Approval)
   622  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   623  				it.fail = err
   624  				return false
   625  			}
   626  			it.Event.Raw = log
   627  			return true
   628  
   629  		default:
   630  			return false
   631  		}
   632  	}
   633  	// Iterator still in progress, wait for either a data or an error event
   634  	select {
   635  	case log := <-it.logs:
   636  		it.Event = new(ERC20Approval)
   637  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   638  			it.fail = err
   639  			return false
   640  		}
   641  		it.Event.Raw = log
   642  		return true
   643  
   644  	case err := <-it.sub.Err():
   645  		it.done = true
   646  		it.fail = err
   647  		return it.Next()
   648  	}
   649  }
   650  
   651  // Error returns any retrieval or parsing error occurred during filtering.
   652  func (it *ERC20ApprovalIterator) Error() error {
   653  	return it.fail
   654  }
   655  
   656  // Close terminates the iteration process, releasing any pending underlying
   657  // resources.
   658  func (it *ERC20ApprovalIterator) Close() error {
   659  	it.sub.Unsubscribe()
   660  	return nil
   661  }
   662  
   663  // ERC20Approval represents a Approval event raised by the ERC20 contract.
   664  type ERC20Approval struct {
   665  	Owner   common.Address
   666  	Spender common.Address
   667  	Value   *big.Int
   668  	Raw     types.Log // Blockchain specific contextual infos
   669  }
   670  
   671  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   672  //
   673  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
   674  func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) {
   675  
   676  	var ownerRule []interface{}
   677  	for _, ownerItem := range owner {
   678  		ownerRule = append(ownerRule, ownerItem)
   679  	}
   680  	var spenderRule []interface{}
   681  	for _, spenderItem := range spender {
   682  		spenderRule = append(spenderRule, spenderItem)
   683  	}
   684  
   685  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
   686  	if err != nil {
   687  		return nil, err
   688  	}
   689  	return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
   690  }
   691  
   692  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   693  //
   694  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
   695  func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
   696  
   697  	var ownerRule []interface{}
   698  	for _, ownerItem := range owner {
   699  		ownerRule = append(ownerRule, ownerItem)
   700  	}
   701  	var spenderRule []interface{}
   702  	for _, spenderItem := range spender {
   703  		spenderRule = append(spenderRule, spenderItem)
   704  	}
   705  
   706  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
   707  	if err != nil {
   708  		return nil, err
   709  	}
   710  	return event.NewSubscription(func(quit <-chan struct{}) error {
   711  		defer sub.Unsubscribe()
   712  		for {
   713  			select {
   714  			case log := <-logs:
   715  				// New log arrived, parse the event and forward to the user
   716  				event := new(ERC20Approval)
   717  				if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
   718  					return err
   719  				}
   720  				event.Raw = log
   721  
   722  				select {
   723  				case sink <- event:
   724  				case err := <-sub.Err():
   725  					return err
   726  				case <-quit:
   727  					return nil
   728  				}
   729  			case err := <-sub.Err():
   730  				return err
   731  			case <-quit:
   732  				return nil
   733  			}
   734  		}
   735  	}), nil
   736  }
   737  
   738  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
   739  //
   740  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
   741  func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) {
   742  	event := new(ERC20Approval)
   743  	if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
   744  		return nil, err
   745  	}
   746  	return event, nil
   747  }
   748  
   749  // 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.
   750  type ERC20TransferIterator struct {
   751  	Event *ERC20Transfer // Event containing the contract specifics and raw log
   752  
   753  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   754  	event    string              // Event name to use for unpacking event data
   755  
   756  	logs chan types.Log      // Log channel receiving the found contract events
   757  	sub  klaytn.Subscription // Subscription for errors, completion and termination
   758  	done bool                // Whether the subscription completed delivering logs
   759  	fail error               // Occurred error to stop iteration
   760  }
   761  
   762  // Next advances the iterator to the subsequent event, returning whether there
   763  // are any more events found. In case of a retrieval or parsing error, false is
   764  // returned and Error() can be queried for the exact failure.
   765  func (it *ERC20TransferIterator) Next() bool {
   766  	// If the iterator failed, stop iterating
   767  	if it.fail != nil {
   768  		return false
   769  	}
   770  	// If the iterator completed, deliver directly whatever's available
   771  	if it.done {
   772  		select {
   773  		case log := <-it.logs:
   774  			it.Event = new(ERC20Transfer)
   775  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   776  				it.fail = err
   777  				return false
   778  			}
   779  			it.Event.Raw = log
   780  			return true
   781  
   782  		default:
   783  			return false
   784  		}
   785  	}
   786  	// Iterator still in progress, wait for either a data or an error event
   787  	select {
   788  	case log := <-it.logs:
   789  		it.Event = new(ERC20Transfer)
   790  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   791  			it.fail = err
   792  			return false
   793  		}
   794  		it.Event.Raw = log
   795  		return true
   796  
   797  	case err := <-it.sub.Err():
   798  		it.done = true
   799  		it.fail = err
   800  		return it.Next()
   801  	}
   802  }
   803  
   804  // Error returns any retrieval or parsing error occurred during filtering.
   805  func (it *ERC20TransferIterator) Error() error {
   806  	return it.fail
   807  }
   808  
   809  // Close terminates the iteration process, releasing any pending underlying
   810  // resources.
   811  func (it *ERC20TransferIterator) Close() error {
   812  	it.sub.Unsubscribe()
   813  	return nil
   814  }
   815  
   816  // ERC20Transfer represents a Transfer event raised by the ERC20 contract.
   817  type ERC20Transfer struct {
   818  	From  common.Address
   819  	To    common.Address
   820  	Value *big.Int
   821  	Raw   types.Log // Blockchain specific contextual infos
   822  }
   823  
   824  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
   825  //
   826  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
   827  func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) {
   828  
   829  	var fromRule []interface{}
   830  	for _, fromItem := range from {
   831  		fromRule = append(fromRule, fromItem)
   832  	}
   833  	var toRule []interface{}
   834  	for _, toItem := range to {
   835  		toRule = append(toRule, toItem)
   836  	}
   837  
   838  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
   839  	if err != nil {
   840  		return nil, err
   841  	}
   842  	return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
   843  }
   844  
   845  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
   846  //
   847  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
   848  func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
   849  
   850  	var fromRule []interface{}
   851  	for _, fromItem := range from {
   852  		fromRule = append(fromRule, fromItem)
   853  	}
   854  	var toRule []interface{}
   855  	for _, toItem := range to {
   856  		toRule = append(toRule, toItem)
   857  	}
   858  
   859  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
   860  	if err != nil {
   861  		return nil, err
   862  	}
   863  	return event.NewSubscription(func(quit <-chan struct{}) error {
   864  		defer sub.Unsubscribe()
   865  		for {
   866  			select {
   867  			case log := <-logs:
   868  				// New log arrived, parse the event and forward to the user
   869  				event := new(ERC20Transfer)
   870  				if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
   871  					return err
   872  				}
   873  				event.Raw = log
   874  
   875  				select {
   876  				case sink <- event:
   877  				case err := <-sub.Err():
   878  					return err
   879  				case <-quit:
   880  					return nil
   881  				}
   882  			case err := <-sub.Err():
   883  				return err
   884  			case <-quit:
   885  				return nil
   886  			}
   887  		}
   888  	}), nil
   889  }
   890  
   891  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
   892  //
   893  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
   894  func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) {
   895  	event := new(ERC20Transfer)
   896  	if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
   897  		return nil, err
   898  	}
   899  	return event, nil
   900  }
   901  
   902  // ERC20BurnableMetaData contains all meta data concerning the ERC20Burnable contract.
   903  var ERC20BurnableMetaData = &bind.MetaData{
   904  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]",
   905  	Sigs: map[string]string{
   906  		"dd62ed3e": "allowance(address,address)",
   907  		"095ea7b3": "approve(address,uint256)",
   908  		"70a08231": "balanceOf(address)",
   909  		"42966c68": "burn(uint256)",
   910  		"79cc6790": "burnFrom(address,uint256)",
   911  		"a457c2d7": "decreaseAllowance(address,uint256)",
   912  		"39509351": "increaseAllowance(address,uint256)",
   913  		"18160ddd": "totalSupply()",
   914  		"a9059cbb": "transfer(address,uint256)",
   915  		"23b872dd": "transferFrom(address,address,uint256)",
   916  	},
   917  	Bin: "0x608060405234801561001057600080fd5b506108a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058204231ee98d3acc370c23b7a9c583a427b98017fb9b0fbf87a2a607bdd213332b30029",
   918  }
   919  
   920  // ERC20BurnableABI is the input ABI used to generate the binding from.
   921  // Deprecated: Use ERC20BurnableMetaData.ABI instead.
   922  var ERC20BurnableABI = ERC20BurnableMetaData.ABI
   923  
   924  // ERC20BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   925  const ERC20BurnableBinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058204231ee98d3acc370c23b7a9c583a427b98017fb9b0fbf87a2a607bdd213332b30029`
   926  
   927  // ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation.
   928  // Deprecated: Use ERC20BurnableMetaData.Sigs instead.
   929  var ERC20BurnableFuncSigs = ERC20BurnableMetaData.Sigs
   930  
   931  // ERC20BurnableBin is the compiled bytecode used for deploying new contracts.
   932  // Deprecated: Use ERC20BurnableMetaData.Bin instead.
   933  var ERC20BurnableBin = ERC20BurnableMetaData.Bin
   934  
   935  // DeployERC20Burnable deploys a new Klaytn contract, binding an instance of ERC20Burnable to it.
   936  func DeployERC20Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Burnable, error) {
   937  	parsed, err := ERC20BurnableMetaData.GetAbi()
   938  	if err != nil {
   939  		return common.Address{}, nil, nil, err
   940  	}
   941  	if parsed == nil {
   942  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
   943  	}
   944  
   945  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20BurnableBin), backend)
   946  	if err != nil {
   947  		return common.Address{}, nil, nil, err
   948  	}
   949  	return address, tx, &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
   950  }
   951  
   952  // ERC20Burnable is an auto generated Go binding around a Klaytn contract.
   953  type ERC20Burnable struct {
   954  	ERC20BurnableCaller     // Read-only binding to the contract
   955  	ERC20BurnableTransactor // Write-only binding to the contract
   956  	ERC20BurnableFilterer   // Log filterer for contract events
   957  }
   958  
   959  // ERC20BurnableCaller is an auto generated read-only Go binding around a Klaytn contract.
   960  type ERC20BurnableCaller struct {
   961  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   962  }
   963  
   964  // ERC20BurnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
   965  type ERC20BurnableTransactor struct {
   966  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   967  }
   968  
   969  // ERC20BurnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
   970  type ERC20BurnableFilterer struct {
   971  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   972  }
   973  
   974  // ERC20BurnableSession is an auto generated Go binding around a Klaytn contract,
   975  // with pre-set call and transact options.
   976  type ERC20BurnableSession struct {
   977  	Contract     *ERC20Burnable    // Generic contract binding to set the session for
   978  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   979  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   980  }
   981  
   982  // ERC20BurnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
   983  // with pre-set call options.
   984  type ERC20BurnableCallerSession struct {
   985  	Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for
   986  	CallOpts bind.CallOpts        // Call options to use throughout this session
   987  }
   988  
   989  // ERC20BurnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   990  // with pre-set transact options.
   991  type ERC20BurnableTransactorSession struct {
   992  	Contract     *ERC20BurnableTransactor // Generic contract transactor binding to set the session for
   993  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
   994  }
   995  
   996  // ERC20BurnableRaw is an auto generated low-level Go binding around a Klaytn contract.
   997  type ERC20BurnableRaw struct {
   998  	Contract *ERC20Burnable // Generic contract binding to access the raw methods on
   999  }
  1000  
  1001  // ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  1002  type ERC20BurnableCallerRaw struct {
  1003  	Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on
  1004  }
  1005  
  1006  // ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  1007  type ERC20BurnableTransactorRaw struct {
  1008  	Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on
  1009  }
  1010  
  1011  // NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract.
  1012  func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) {
  1013  	contract, err := bindERC20Burnable(address, backend, backend, backend)
  1014  	if err != nil {
  1015  		return nil, err
  1016  	}
  1017  	return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
  1018  }
  1019  
  1020  // NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract.
  1021  func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) {
  1022  	contract, err := bindERC20Burnable(address, caller, nil, nil)
  1023  	if err != nil {
  1024  		return nil, err
  1025  	}
  1026  	return &ERC20BurnableCaller{contract: contract}, nil
  1027  }
  1028  
  1029  // NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract.
  1030  func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) {
  1031  	contract, err := bindERC20Burnable(address, nil, transactor, nil)
  1032  	if err != nil {
  1033  		return nil, err
  1034  	}
  1035  	return &ERC20BurnableTransactor{contract: contract}, nil
  1036  }
  1037  
  1038  // NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract.
  1039  func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) {
  1040  	contract, err := bindERC20Burnable(address, nil, nil, filterer)
  1041  	if err != nil {
  1042  		return nil, err
  1043  	}
  1044  	return &ERC20BurnableFilterer{contract: contract}, nil
  1045  }
  1046  
  1047  // bindERC20Burnable binds a generic wrapper to an already deployed contract.
  1048  func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1049  	parsed, err := ERC20BurnableMetaData.GetAbi()
  1050  	if err != nil {
  1051  		return nil, err
  1052  	}
  1053  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  1054  }
  1055  
  1056  // Call invokes the (constant) contract method with params as input values and
  1057  // sets the output to result. The result type might be a single field for simple
  1058  // returns, a slice of interfaces for anonymous returns and a struct for named
  1059  // returns.
  1060  func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1061  	return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...)
  1062  }
  1063  
  1064  // Transfer initiates a plain transaction to move funds to the contract, calling
  1065  // its default method if one is available.
  1066  func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1067  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts)
  1068  }
  1069  
  1070  // Transact invokes the (paid) contract method with params as input values.
  1071  func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1072  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...)
  1073  }
  1074  
  1075  // Call invokes the (constant) contract method with params as input values and
  1076  // sets the output to result. The result type might be a single field for simple
  1077  // returns, a slice of interfaces for anonymous returns and a struct for named
  1078  // returns.
  1079  func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1080  	return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...)
  1081  }
  1082  
  1083  // Transfer initiates a plain transaction to move funds to the contract, calling
  1084  // its default method if one is available.
  1085  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1086  	return _ERC20Burnable.Contract.contract.Transfer(opts)
  1087  }
  1088  
  1089  // Transact invokes the (paid) contract method with params as input values.
  1090  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1091  	return _ERC20Burnable.Contract.contract.Transact(opts, method, params...)
  1092  }
  1093  
  1094  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1095  //
  1096  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  1097  func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  1098  	var out []interface{}
  1099  	err := _ERC20Burnable.contract.Call(opts, &out, "allowance", owner, spender)
  1100  
  1101  	if err != nil {
  1102  		return *new(*big.Int), err
  1103  	}
  1104  
  1105  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1106  
  1107  	return out0, err
  1108  
  1109  }
  1110  
  1111  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1112  //
  1113  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  1114  func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  1115  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
  1116  }
  1117  
  1118  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1119  //
  1120  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  1121  func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  1122  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
  1123  }
  1124  
  1125  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1126  //
  1127  // Solidity: function balanceOf(address account) view returns(uint256)
  1128  func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  1129  	var out []interface{}
  1130  	err := _ERC20Burnable.contract.Call(opts, &out, "balanceOf", account)
  1131  
  1132  	if err != nil {
  1133  		return *new(*big.Int), err
  1134  	}
  1135  
  1136  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1137  
  1138  	return out0, err
  1139  
  1140  }
  1141  
  1142  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1143  //
  1144  // Solidity: function balanceOf(address account) view returns(uint256)
  1145  func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) {
  1146  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
  1147  }
  1148  
  1149  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1150  //
  1151  // Solidity: function balanceOf(address account) view returns(uint256)
  1152  func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  1153  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
  1154  }
  1155  
  1156  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1157  //
  1158  // Solidity: function totalSupply() view returns(uint256)
  1159  func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  1160  	var out []interface{}
  1161  	err := _ERC20Burnable.contract.Call(opts, &out, "totalSupply")
  1162  
  1163  	if err != nil {
  1164  		return *new(*big.Int), err
  1165  	}
  1166  
  1167  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1168  
  1169  	return out0, err
  1170  
  1171  }
  1172  
  1173  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1174  //
  1175  // Solidity: function totalSupply() view returns(uint256)
  1176  func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) {
  1177  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
  1178  }
  1179  
  1180  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1181  //
  1182  // Solidity: function totalSupply() view returns(uint256)
  1183  func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) {
  1184  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
  1185  }
  1186  
  1187  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1188  //
  1189  // Solidity: function approve(address spender, uint256 value) returns(bool)
  1190  func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
  1191  	return _ERC20Burnable.contract.Transact(opts, "approve", spender, value)
  1192  }
  1193  
  1194  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1195  //
  1196  // Solidity: function approve(address spender, uint256 value) returns(bool)
  1197  func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  1198  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value)
  1199  }
  1200  
  1201  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1202  //
  1203  // Solidity: function approve(address spender, uint256 value) returns(bool)
  1204  func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  1205  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value)
  1206  }
  1207  
  1208  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1209  //
  1210  // Solidity: function burn(uint256 amount) returns()
  1211  func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
  1212  	return _ERC20Burnable.contract.Transact(opts, "burn", amount)
  1213  }
  1214  
  1215  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1216  //
  1217  // Solidity: function burn(uint256 amount) returns()
  1218  func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) {
  1219  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
  1220  }
  1221  
  1222  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1223  //
  1224  // Solidity: function burn(uint256 amount) returns()
  1225  func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
  1226  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
  1227  }
  1228  
  1229  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  1230  //
  1231  // Solidity: function burnFrom(address account, uint256 amount) returns()
  1232  func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
  1233  	return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount)
  1234  }
  1235  
  1236  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  1237  //
  1238  // Solidity: function burnFrom(address account, uint256 amount) returns()
  1239  func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
  1240  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
  1241  }
  1242  
  1243  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  1244  //
  1245  // Solidity: function burnFrom(address account, uint256 amount) returns()
  1246  func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
  1247  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
  1248  }
  1249  
  1250  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  1251  //
  1252  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  1253  func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  1254  	return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  1255  }
  1256  
  1257  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  1258  //
  1259  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  1260  func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  1261  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
  1262  }
  1263  
  1264  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  1265  //
  1266  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  1267  func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  1268  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
  1269  }
  1270  
  1271  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  1272  //
  1273  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  1274  func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  1275  	return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  1276  }
  1277  
  1278  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  1279  //
  1280  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  1281  func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  1282  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
  1283  }
  1284  
  1285  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  1286  //
  1287  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  1288  func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  1289  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
  1290  }
  1291  
  1292  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1293  //
  1294  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  1295  func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1296  	return _ERC20Burnable.contract.Transact(opts, "transfer", recipient, amount)
  1297  }
  1298  
  1299  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1300  //
  1301  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  1302  func (_ERC20Burnable *ERC20BurnableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1303  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
  1304  }
  1305  
  1306  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  1307  //
  1308  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  1309  func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1310  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
  1311  }
  1312  
  1313  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1314  //
  1315  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  1316  func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1317  	return _ERC20Burnable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  1318  }
  1319  
  1320  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1321  //
  1322  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  1323  func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1324  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
  1325  }
  1326  
  1327  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1328  //
  1329  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  1330  func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  1331  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
  1332  }
  1333  
  1334  // 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.
  1335  type ERC20BurnableApprovalIterator struct {
  1336  	Event *ERC20BurnableApproval // Event containing the contract specifics and raw log
  1337  
  1338  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1339  	event    string              // Event name to use for unpacking event data
  1340  
  1341  	logs chan types.Log      // Log channel receiving the found contract events
  1342  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1343  	done bool                // Whether the subscription completed delivering logs
  1344  	fail error               // Occurred error to stop iteration
  1345  }
  1346  
  1347  // Next advances the iterator to the subsequent event, returning whether there
  1348  // are any more events found. In case of a retrieval or parsing error, false is
  1349  // returned and Error() can be queried for the exact failure.
  1350  func (it *ERC20BurnableApprovalIterator) Next() bool {
  1351  	// If the iterator failed, stop iterating
  1352  	if it.fail != nil {
  1353  		return false
  1354  	}
  1355  	// If the iterator completed, deliver directly whatever's available
  1356  	if it.done {
  1357  		select {
  1358  		case log := <-it.logs:
  1359  			it.Event = new(ERC20BurnableApproval)
  1360  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1361  				it.fail = err
  1362  				return false
  1363  			}
  1364  			it.Event.Raw = log
  1365  			return true
  1366  
  1367  		default:
  1368  			return false
  1369  		}
  1370  	}
  1371  	// Iterator still in progress, wait for either a data or an error event
  1372  	select {
  1373  	case log := <-it.logs:
  1374  		it.Event = new(ERC20BurnableApproval)
  1375  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1376  			it.fail = err
  1377  			return false
  1378  		}
  1379  		it.Event.Raw = log
  1380  		return true
  1381  
  1382  	case err := <-it.sub.Err():
  1383  		it.done = true
  1384  		it.fail = err
  1385  		return it.Next()
  1386  	}
  1387  }
  1388  
  1389  // Error returns any retrieval or parsing error occurred during filtering.
  1390  func (it *ERC20BurnableApprovalIterator) Error() error {
  1391  	return it.fail
  1392  }
  1393  
  1394  // Close terminates the iteration process, releasing any pending underlying
  1395  // resources.
  1396  func (it *ERC20BurnableApprovalIterator) Close() error {
  1397  	it.sub.Unsubscribe()
  1398  	return nil
  1399  }
  1400  
  1401  // ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract.
  1402  type ERC20BurnableApproval struct {
  1403  	Owner   common.Address
  1404  	Spender common.Address
  1405  	Value   *big.Int
  1406  	Raw     types.Log // Blockchain specific contextual infos
  1407  }
  1408  
  1409  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1410  //
  1411  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1412  func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) {
  1413  
  1414  	var ownerRule []interface{}
  1415  	for _, ownerItem := range owner {
  1416  		ownerRule = append(ownerRule, ownerItem)
  1417  	}
  1418  	var spenderRule []interface{}
  1419  	for _, spenderItem := range spender {
  1420  		spenderRule = append(spenderRule, spenderItem)
  1421  	}
  1422  
  1423  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  1424  	if err != nil {
  1425  		return nil, err
  1426  	}
  1427  	return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
  1428  }
  1429  
  1430  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1431  //
  1432  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1433  func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  1434  
  1435  	var ownerRule []interface{}
  1436  	for _, ownerItem := range owner {
  1437  		ownerRule = append(ownerRule, ownerItem)
  1438  	}
  1439  	var spenderRule []interface{}
  1440  	for _, spenderItem := range spender {
  1441  		spenderRule = append(spenderRule, spenderItem)
  1442  	}
  1443  
  1444  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  1445  	if err != nil {
  1446  		return nil, err
  1447  	}
  1448  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1449  		defer sub.Unsubscribe()
  1450  		for {
  1451  			select {
  1452  			case log := <-logs:
  1453  				// New log arrived, parse the event and forward to the user
  1454  				event := new(ERC20BurnableApproval)
  1455  				if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  1456  					return err
  1457  				}
  1458  				event.Raw = log
  1459  
  1460  				select {
  1461  				case sink <- event:
  1462  				case err := <-sub.Err():
  1463  					return err
  1464  				case <-quit:
  1465  					return nil
  1466  				}
  1467  			case err := <-sub.Err():
  1468  				return err
  1469  			case <-quit:
  1470  				return nil
  1471  			}
  1472  		}
  1473  	}), nil
  1474  }
  1475  
  1476  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1477  //
  1478  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  1479  func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) {
  1480  	event := new(ERC20BurnableApproval)
  1481  	if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  1482  		return nil, err
  1483  	}
  1484  	return event, nil
  1485  }
  1486  
  1487  // 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.
  1488  type ERC20BurnableTransferIterator struct {
  1489  	Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log
  1490  
  1491  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1492  	event    string              // Event name to use for unpacking event data
  1493  
  1494  	logs chan types.Log      // Log channel receiving the found contract events
  1495  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1496  	done bool                // Whether the subscription completed delivering logs
  1497  	fail error               // Occurred error to stop iteration
  1498  }
  1499  
  1500  // Next advances the iterator to the subsequent event, returning whether there
  1501  // are any more events found. In case of a retrieval or parsing error, false is
  1502  // returned and Error() can be queried for the exact failure.
  1503  func (it *ERC20BurnableTransferIterator) Next() bool {
  1504  	// If the iterator failed, stop iterating
  1505  	if it.fail != nil {
  1506  		return false
  1507  	}
  1508  	// If the iterator completed, deliver directly whatever's available
  1509  	if it.done {
  1510  		select {
  1511  		case log := <-it.logs:
  1512  			it.Event = new(ERC20BurnableTransfer)
  1513  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1514  				it.fail = err
  1515  				return false
  1516  			}
  1517  			it.Event.Raw = log
  1518  			return true
  1519  
  1520  		default:
  1521  			return false
  1522  		}
  1523  	}
  1524  	// Iterator still in progress, wait for either a data or an error event
  1525  	select {
  1526  	case log := <-it.logs:
  1527  		it.Event = new(ERC20BurnableTransfer)
  1528  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1529  			it.fail = err
  1530  			return false
  1531  		}
  1532  		it.Event.Raw = log
  1533  		return true
  1534  
  1535  	case err := <-it.sub.Err():
  1536  		it.done = true
  1537  		it.fail = err
  1538  		return it.Next()
  1539  	}
  1540  }
  1541  
  1542  // Error returns any retrieval or parsing error occurred during filtering.
  1543  func (it *ERC20BurnableTransferIterator) Error() error {
  1544  	return it.fail
  1545  }
  1546  
  1547  // Close terminates the iteration process, releasing any pending underlying
  1548  // resources.
  1549  func (it *ERC20BurnableTransferIterator) Close() error {
  1550  	it.sub.Unsubscribe()
  1551  	return nil
  1552  }
  1553  
  1554  // ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract.
  1555  type ERC20BurnableTransfer struct {
  1556  	From  common.Address
  1557  	To    common.Address
  1558  	Value *big.Int
  1559  	Raw   types.Log // Blockchain specific contextual infos
  1560  }
  1561  
  1562  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1563  //
  1564  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  1565  func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) {
  1566  
  1567  	var fromRule []interface{}
  1568  	for _, fromItem := range from {
  1569  		fromRule = append(fromRule, fromItem)
  1570  	}
  1571  	var toRule []interface{}
  1572  	for _, toItem := range to {
  1573  		toRule = append(toRule, toItem)
  1574  	}
  1575  
  1576  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  1577  	if err != nil {
  1578  		return nil, err
  1579  	}
  1580  	return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  1581  }
  1582  
  1583  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1584  //
  1585  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  1586  func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  1587  
  1588  	var fromRule []interface{}
  1589  	for _, fromItem := range from {
  1590  		fromRule = append(fromRule, fromItem)
  1591  	}
  1592  	var toRule []interface{}
  1593  	for _, toItem := range to {
  1594  		toRule = append(toRule, toItem)
  1595  	}
  1596  
  1597  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  1598  	if err != nil {
  1599  		return nil, err
  1600  	}
  1601  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1602  		defer sub.Unsubscribe()
  1603  		for {
  1604  			select {
  1605  			case log := <-logs:
  1606  				// New log arrived, parse the event and forward to the user
  1607  				event := new(ERC20BurnableTransfer)
  1608  				if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  1609  					return err
  1610  				}
  1611  				event.Raw = log
  1612  
  1613  				select {
  1614  				case sink <- event:
  1615  				case err := <-sub.Err():
  1616  					return err
  1617  				case <-quit:
  1618  					return nil
  1619  				}
  1620  			case err := <-sub.Err():
  1621  				return err
  1622  			case <-quit:
  1623  				return nil
  1624  			}
  1625  		}
  1626  	}), nil
  1627  }
  1628  
  1629  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1630  //
  1631  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  1632  func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) {
  1633  	event := new(ERC20BurnableTransfer)
  1634  	if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  1635  		return nil, err
  1636  	}
  1637  	return event, nil
  1638  }
  1639  
  1640  // ERC20MintableMetaData contains all meta data concerning the ERC20Mintable contract.
  1641  var ERC20MintableMetaData = &bind.MetaData{
  1642  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]",
  1643  	Sigs: map[string]string{
  1644  		"983b2d56": "addMinter(address)",
  1645  		"dd62ed3e": "allowance(address,address)",
  1646  		"095ea7b3": "approve(address,uint256)",
  1647  		"70a08231": "balanceOf(address)",
  1648  		"a457c2d7": "decreaseAllowance(address,uint256)",
  1649  		"39509351": "increaseAllowance(address,uint256)",
  1650  		"aa271e1a": "isMinter(address)",
  1651  		"40c10f19": "mint(address,uint256)",
  1652  		"98650275": "renounceMinter()",
  1653  		"18160ddd": "totalSupply()",
  1654  		"a9059cbb": "transfer(address,uint256)",
  1655  		"23b872dd": "transferFrom(address,address,uint256)",
  1656  	},
  1657  	Bin: "0x60806040526100133361001860201b60201c565b610189565b61003081600361006760201b6109961790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610077828261010860201b60201c565b156100e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d496022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610bb1806101986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058207c035c37b5cdab580693ebc5ac8baa8dd64a88acae0a320928f95065065bb8180029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373",
  1658  }
  1659  
  1660  // ERC20MintableABI is the input ABI used to generate the binding from.
  1661  // Deprecated: Use ERC20MintableMetaData.ABI instead.
  1662  var ERC20MintableABI = ERC20MintableMetaData.ABI
  1663  
  1664  // ERC20MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  1665  const ERC20MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058207c035c37b5cdab580693ebc5ac8baa8dd64a88acae0a320928f95065065bb8180029`
  1666  
  1667  // ERC20MintableFuncSigs maps the 4-byte function signature to its string representation.
  1668  // Deprecated: Use ERC20MintableMetaData.Sigs instead.
  1669  var ERC20MintableFuncSigs = ERC20MintableMetaData.Sigs
  1670  
  1671  // ERC20MintableBin is the compiled bytecode used for deploying new contracts.
  1672  // Deprecated: Use ERC20MintableMetaData.Bin instead.
  1673  var ERC20MintableBin = ERC20MintableMetaData.Bin
  1674  
  1675  // DeployERC20Mintable deploys a new Klaytn contract, binding an instance of ERC20Mintable to it.
  1676  func DeployERC20Mintable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Mintable, error) {
  1677  	parsed, err := ERC20MintableMetaData.GetAbi()
  1678  	if err != nil {
  1679  		return common.Address{}, nil, nil, err
  1680  	}
  1681  	if parsed == nil {
  1682  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
  1683  	}
  1684  
  1685  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20MintableBin), backend)
  1686  	if err != nil {
  1687  		return common.Address{}, nil, nil, err
  1688  	}
  1689  	return address, tx, &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
  1690  }
  1691  
  1692  // ERC20Mintable is an auto generated Go binding around a Klaytn contract.
  1693  type ERC20Mintable struct {
  1694  	ERC20MintableCaller     // Read-only binding to the contract
  1695  	ERC20MintableTransactor // Write-only binding to the contract
  1696  	ERC20MintableFilterer   // Log filterer for contract events
  1697  }
  1698  
  1699  // ERC20MintableCaller is an auto generated read-only Go binding around a Klaytn contract.
  1700  type ERC20MintableCaller struct {
  1701  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1702  }
  1703  
  1704  // ERC20MintableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  1705  type ERC20MintableTransactor struct {
  1706  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1707  }
  1708  
  1709  // ERC20MintableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  1710  type ERC20MintableFilterer struct {
  1711  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1712  }
  1713  
  1714  // ERC20MintableSession is an auto generated Go binding around a Klaytn contract,
  1715  // with pre-set call and transact options.
  1716  type ERC20MintableSession struct {
  1717  	Contract     *ERC20Mintable    // Generic contract binding to set the session for
  1718  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1719  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1720  }
  1721  
  1722  // ERC20MintableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  1723  // with pre-set call options.
  1724  type ERC20MintableCallerSession struct {
  1725  	Contract *ERC20MintableCaller // Generic contract caller binding to set the session for
  1726  	CallOpts bind.CallOpts        // Call options to use throughout this session
  1727  }
  1728  
  1729  // ERC20MintableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  1730  // with pre-set transact options.
  1731  type ERC20MintableTransactorSession struct {
  1732  	Contract     *ERC20MintableTransactor // Generic contract transactor binding to set the session for
  1733  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
  1734  }
  1735  
  1736  // ERC20MintableRaw is an auto generated low-level Go binding around a Klaytn contract.
  1737  type ERC20MintableRaw struct {
  1738  	Contract *ERC20Mintable // Generic contract binding to access the raw methods on
  1739  }
  1740  
  1741  // ERC20MintableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  1742  type ERC20MintableCallerRaw struct {
  1743  	Contract *ERC20MintableCaller // Generic read-only contract binding to access the raw methods on
  1744  }
  1745  
  1746  // ERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  1747  type ERC20MintableTransactorRaw struct {
  1748  	Contract *ERC20MintableTransactor // Generic write-only contract binding to access the raw methods on
  1749  }
  1750  
  1751  // NewERC20Mintable creates a new instance of ERC20Mintable, bound to a specific deployed contract.
  1752  func NewERC20Mintable(address common.Address, backend bind.ContractBackend) (*ERC20Mintable, error) {
  1753  	contract, err := bindERC20Mintable(address, backend, backend, backend)
  1754  	if err != nil {
  1755  		return nil, err
  1756  	}
  1757  	return &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
  1758  }
  1759  
  1760  // NewERC20MintableCaller creates a new read-only instance of ERC20Mintable, bound to a specific deployed contract.
  1761  func NewERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*ERC20MintableCaller, error) {
  1762  	contract, err := bindERC20Mintable(address, caller, nil, nil)
  1763  	if err != nil {
  1764  		return nil, err
  1765  	}
  1766  	return &ERC20MintableCaller{contract: contract}, nil
  1767  }
  1768  
  1769  // NewERC20MintableTransactor creates a new write-only instance of ERC20Mintable, bound to a specific deployed contract.
  1770  func NewERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MintableTransactor, error) {
  1771  	contract, err := bindERC20Mintable(address, nil, transactor, nil)
  1772  	if err != nil {
  1773  		return nil, err
  1774  	}
  1775  	return &ERC20MintableTransactor{contract: contract}, nil
  1776  }
  1777  
  1778  // NewERC20MintableFilterer creates a new log filterer instance of ERC20Mintable, bound to a specific deployed contract.
  1779  func NewERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MintableFilterer, error) {
  1780  	contract, err := bindERC20Mintable(address, nil, nil, filterer)
  1781  	if err != nil {
  1782  		return nil, err
  1783  	}
  1784  	return &ERC20MintableFilterer{contract: contract}, nil
  1785  }
  1786  
  1787  // bindERC20Mintable binds a generic wrapper to an already deployed contract.
  1788  func bindERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1789  	parsed, err := ERC20MintableMetaData.GetAbi()
  1790  	if err != nil {
  1791  		return nil, err
  1792  	}
  1793  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  1794  }
  1795  
  1796  // Call invokes the (constant) contract method with params as input values and
  1797  // sets the output to result. The result type might be a single field for simple
  1798  // returns, a slice of interfaces for anonymous returns and a struct for named
  1799  // returns.
  1800  func (_ERC20Mintable *ERC20MintableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1801  	return _ERC20Mintable.Contract.ERC20MintableCaller.contract.Call(opts, result, method, params...)
  1802  }
  1803  
  1804  // Transfer initiates a plain transaction to move funds to the contract, calling
  1805  // its default method if one is available.
  1806  func (_ERC20Mintable *ERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1807  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transfer(opts)
  1808  }
  1809  
  1810  // Transact invokes the (paid) contract method with params as input values.
  1811  func (_ERC20Mintable *ERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1812  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transact(opts, method, params...)
  1813  }
  1814  
  1815  // Call invokes the (constant) contract method with params as input values and
  1816  // sets the output to result. The result type might be a single field for simple
  1817  // returns, a slice of interfaces for anonymous returns and a struct for named
  1818  // returns.
  1819  func (_ERC20Mintable *ERC20MintableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  1820  	return _ERC20Mintable.Contract.contract.Call(opts, result, method, params...)
  1821  }
  1822  
  1823  // Transfer initiates a plain transaction to move funds to the contract, calling
  1824  // its default method if one is available.
  1825  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1826  	return _ERC20Mintable.Contract.contract.Transfer(opts)
  1827  }
  1828  
  1829  // Transact invokes the (paid) contract method with params as input values.
  1830  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1831  	return _ERC20Mintable.Contract.contract.Transact(opts, method, params...)
  1832  }
  1833  
  1834  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1835  //
  1836  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  1837  func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  1838  	var out []interface{}
  1839  	err := _ERC20Mintable.contract.Call(opts, &out, "allowance", owner, spender)
  1840  
  1841  	if err != nil {
  1842  		return *new(*big.Int), err
  1843  	}
  1844  
  1845  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1846  
  1847  	return out0, err
  1848  
  1849  }
  1850  
  1851  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1852  //
  1853  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  1854  func (_ERC20Mintable *ERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  1855  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
  1856  }
  1857  
  1858  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  1859  //
  1860  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  1861  func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  1862  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
  1863  }
  1864  
  1865  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1866  //
  1867  // Solidity: function balanceOf(address account) view returns(uint256)
  1868  func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  1869  	var out []interface{}
  1870  	err := _ERC20Mintable.contract.Call(opts, &out, "balanceOf", account)
  1871  
  1872  	if err != nil {
  1873  		return *new(*big.Int), err
  1874  	}
  1875  
  1876  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1877  
  1878  	return out0, err
  1879  
  1880  }
  1881  
  1882  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1883  //
  1884  // Solidity: function balanceOf(address account) view returns(uint256)
  1885  func (_ERC20Mintable *ERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) {
  1886  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
  1887  }
  1888  
  1889  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1890  //
  1891  // Solidity: function balanceOf(address account) view returns(uint256)
  1892  func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  1893  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
  1894  }
  1895  
  1896  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  1897  //
  1898  // Solidity: function isMinter(address account) view returns(bool)
  1899  func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  1900  	var out []interface{}
  1901  	err := _ERC20Mintable.contract.Call(opts, &out, "isMinter", account)
  1902  
  1903  	if err != nil {
  1904  		return *new(bool), err
  1905  	}
  1906  
  1907  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  1908  
  1909  	return out0, err
  1910  
  1911  }
  1912  
  1913  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  1914  //
  1915  // Solidity: function isMinter(address account) view returns(bool)
  1916  func (_ERC20Mintable *ERC20MintableSession) IsMinter(account common.Address) (bool, error) {
  1917  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
  1918  }
  1919  
  1920  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  1921  //
  1922  // Solidity: function isMinter(address account) view returns(bool)
  1923  func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Address) (bool, error) {
  1924  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
  1925  }
  1926  
  1927  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1928  //
  1929  // Solidity: function totalSupply() view returns(uint256)
  1930  func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  1931  	var out []interface{}
  1932  	err := _ERC20Mintable.contract.Call(opts, &out, "totalSupply")
  1933  
  1934  	if err != nil {
  1935  		return *new(*big.Int), err
  1936  	}
  1937  
  1938  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  1939  
  1940  	return out0, err
  1941  
  1942  }
  1943  
  1944  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1945  //
  1946  // Solidity: function totalSupply() view returns(uint256)
  1947  func (_ERC20Mintable *ERC20MintableSession) TotalSupply() (*big.Int, error) {
  1948  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
  1949  }
  1950  
  1951  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  1952  //
  1953  // Solidity: function totalSupply() view returns(uint256)
  1954  func (_ERC20Mintable *ERC20MintableCallerSession) TotalSupply() (*big.Int, error) {
  1955  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
  1956  }
  1957  
  1958  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  1959  //
  1960  // Solidity: function addMinter(address account) returns()
  1961  func (_ERC20Mintable *ERC20MintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  1962  	return _ERC20Mintable.contract.Transact(opts, "addMinter", account)
  1963  }
  1964  
  1965  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  1966  //
  1967  // Solidity: function addMinter(address account) returns()
  1968  func (_ERC20Mintable *ERC20MintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
  1969  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
  1970  }
  1971  
  1972  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  1973  //
  1974  // Solidity: function addMinter(address account) returns()
  1975  func (_ERC20Mintable *ERC20MintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  1976  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
  1977  }
  1978  
  1979  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1980  //
  1981  // Solidity: function approve(address spender, uint256 value) returns(bool)
  1982  func (_ERC20Mintable *ERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
  1983  	return _ERC20Mintable.contract.Transact(opts, "approve", spender, value)
  1984  }
  1985  
  1986  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1987  //
  1988  // Solidity: function approve(address spender, uint256 value) returns(bool)
  1989  func (_ERC20Mintable *ERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  1990  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value)
  1991  }
  1992  
  1993  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1994  //
  1995  // Solidity: function approve(address spender, uint256 value) returns(bool)
  1996  func (_ERC20Mintable *ERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  1997  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value)
  1998  }
  1999  
  2000  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2001  //
  2002  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2003  func (_ERC20Mintable *ERC20MintableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2004  	return _ERC20Mintable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  2005  }
  2006  
  2007  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2008  //
  2009  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2010  func (_ERC20Mintable *ERC20MintableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2011  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
  2012  }
  2013  
  2014  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  2015  //
  2016  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  2017  func (_ERC20Mintable *ERC20MintableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  2018  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
  2019  }
  2020  
  2021  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2022  //
  2023  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2024  func (_ERC20Mintable *ERC20MintableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2025  	return _ERC20Mintable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  2026  }
  2027  
  2028  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2029  //
  2030  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2031  func (_ERC20Mintable *ERC20MintableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2032  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
  2033  }
  2034  
  2035  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  2036  //
  2037  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  2038  func (_ERC20Mintable *ERC20MintableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  2039  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
  2040  }
  2041  
  2042  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  2043  //
  2044  // Solidity: function mint(address account, uint256 amount) returns(bool)
  2045  func (_ERC20Mintable *ERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
  2046  	return _ERC20Mintable.contract.Transact(opts, "mint", account, amount)
  2047  }
  2048  
  2049  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  2050  //
  2051  // Solidity: function mint(address account, uint256 amount) returns(bool)
  2052  func (_ERC20Mintable *ERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
  2053  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
  2054  }
  2055  
  2056  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  2057  //
  2058  // Solidity: function mint(address account, uint256 amount) returns(bool)
  2059  func (_ERC20Mintable *ERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
  2060  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
  2061  }
  2062  
  2063  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  2064  //
  2065  // Solidity: function renounceMinter() returns()
  2066  func (_ERC20Mintable *ERC20MintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  2067  	return _ERC20Mintable.contract.Transact(opts, "renounceMinter")
  2068  }
  2069  
  2070  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  2071  //
  2072  // Solidity: function renounceMinter() returns()
  2073  func (_ERC20Mintable *ERC20MintableSession) RenounceMinter() (*types.Transaction, error) {
  2074  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
  2075  }
  2076  
  2077  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  2078  //
  2079  // Solidity: function renounceMinter() returns()
  2080  func (_ERC20Mintable *ERC20MintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
  2081  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
  2082  }
  2083  
  2084  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2085  //
  2086  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2087  func (_ERC20Mintable *ERC20MintableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2088  	return _ERC20Mintable.contract.Transact(opts, "transfer", recipient, amount)
  2089  }
  2090  
  2091  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2092  //
  2093  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2094  func (_ERC20Mintable *ERC20MintableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2095  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
  2096  }
  2097  
  2098  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  2099  //
  2100  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  2101  func (_ERC20Mintable *ERC20MintableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2102  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
  2103  }
  2104  
  2105  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2106  //
  2107  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2108  func (_ERC20Mintable *ERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2109  	return _ERC20Mintable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  2110  }
  2111  
  2112  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2113  //
  2114  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2115  func (_ERC20Mintable *ERC20MintableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2116  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
  2117  }
  2118  
  2119  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2120  //
  2121  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  2122  func (_ERC20Mintable *ERC20MintableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  2123  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
  2124  }
  2125  
  2126  // 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.
  2127  type ERC20MintableApprovalIterator struct {
  2128  	Event *ERC20MintableApproval // Event containing the contract specifics and raw log
  2129  
  2130  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2131  	event    string              // Event name to use for unpacking event data
  2132  
  2133  	logs chan types.Log      // Log channel receiving the found contract events
  2134  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2135  	done bool                // Whether the subscription completed delivering logs
  2136  	fail error               // Occurred error to stop iteration
  2137  }
  2138  
  2139  // Next advances the iterator to the subsequent event, returning whether there
  2140  // are any more events found. In case of a retrieval or parsing error, false is
  2141  // returned and Error() can be queried for the exact failure.
  2142  func (it *ERC20MintableApprovalIterator) Next() bool {
  2143  	// If the iterator failed, stop iterating
  2144  	if it.fail != nil {
  2145  		return false
  2146  	}
  2147  	// If the iterator completed, deliver directly whatever's available
  2148  	if it.done {
  2149  		select {
  2150  		case log := <-it.logs:
  2151  			it.Event = new(ERC20MintableApproval)
  2152  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2153  				it.fail = err
  2154  				return false
  2155  			}
  2156  			it.Event.Raw = log
  2157  			return true
  2158  
  2159  		default:
  2160  			return false
  2161  		}
  2162  	}
  2163  	// Iterator still in progress, wait for either a data or an error event
  2164  	select {
  2165  	case log := <-it.logs:
  2166  		it.Event = new(ERC20MintableApproval)
  2167  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2168  			it.fail = err
  2169  			return false
  2170  		}
  2171  		it.Event.Raw = log
  2172  		return true
  2173  
  2174  	case err := <-it.sub.Err():
  2175  		it.done = true
  2176  		it.fail = err
  2177  		return it.Next()
  2178  	}
  2179  }
  2180  
  2181  // Error returns any retrieval or parsing error occurred during filtering.
  2182  func (it *ERC20MintableApprovalIterator) Error() error {
  2183  	return it.fail
  2184  }
  2185  
  2186  // Close terminates the iteration process, releasing any pending underlying
  2187  // resources.
  2188  func (it *ERC20MintableApprovalIterator) Close() error {
  2189  	it.sub.Unsubscribe()
  2190  	return nil
  2191  }
  2192  
  2193  // ERC20MintableApproval represents a Approval event raised by the ERC20Mintable contract.
  2194  type ERC20MintableApproval struct {
  2195  	Owner   common.Address
  2196  	Spender common.Address
  2197  	Value   *big.Int
  2198  	Raw     types.Log // Blockchain specific contextual infos
  2199  }
  2200  
  2201  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2202  //
  2203  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2204  func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) {
  2205  
  2206  	var ownerRule []interface{}
  2207  	for _, ownerItem := range owner {
  2208  		ownerRule = append(ownerRule, ownerItem)
  2209  	}
  2210  	var spenderRule []interface{}
  2211  	for _, spenderItem := range spender {
  2212  		spenderRule = append(spenderRule, spenderItem)
  2213  	}
  2214  
  2215  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  2216  	if err != nil {
  2217  		return nil, err
  2218  	}
  2219  	return &ERC20MintableApprovalIterator{contract: _ERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil
  2220  }
  2221  
  2222  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2223  //
  2224  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2225  func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  2226  
  2227  	var ownerRule []interface{}
  2228  	for _, ownerItem := range owner {
  2229  		ownerRule = append(ownerRule, ownerItem)
  2230  	}
  2231  	var spenderRule []interface{}
  2232  	for _, spenderItem := range spender {
  2233  		spenderRule = append(spenderRule, spenderItem)
  2234  	}
  2235  
  2236  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  2237  	if err != nil {
  2238  		return nil, err
  2239  	}
  2240  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2241  		defer sub.Unsubscribe()
  2242  		for {
  2243  			select {
  2244  			case log := <-logs:
  2245  				// New log arrived, parse the event and forward to the user
  2246  				event := new(ERC20MintableApproval)
  2247  				if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
  2248  					return err
  2249  				}
  2250  				event.Raw = log
  2251  
  2252  				select {
  2253  				case sink <- event:
  2254  				case err := <-sub.Err():
  2255  					return err
  2256  				case <-quit:
  2257  					return nil
  2258  				}
  2259  			case err := <-sub.Err():
  2260  				return err
  2261  			case <-quit:
  2262  				return nil
  2263  			}
  2264  		}
  2265  	}), nil
  2266  }
  2267  
  2268  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2269  //
  2270  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  2271  func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC20MintableApproval, error) {
  2272  	event := new(ERC20MintableApproval)
  2273  	if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
  2274  		return nil, err
  2275  	}
  2276  	return event, nil
  2277  }
  2278  
  2279  // 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.
  2280  type ERC20MintableMinterAddedIterator struct {
  2281  	Event *ERC20MintableMinterAdded // Event containing the contract specifics and raw log
  2282  
  2283  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2284  	event    string              // Event name to use for unpacking event data
  2285  
  2286  	logs chan types.Log      // Log channel receiving the found contract events
  2287  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2288  	done bool                // Whether the subscription completed delivering logs
  2289  	fail error               // Occurred error to stop iteration
  2290  }
  2291  
  2292  // Next advances the iterator to the subsequent event, returning whether there
  2293  // are any more events found. In case of a retrieval or parsing error, false is
  2294  // returned and Error() can be queried for the exact failure.
  2295  func (it *ERC20MintableMinterAddedIterator) Next() bool {
  2296  	// If the iterator failed, stop iterating
  2297  	if it.fail != nil {
  2298  		return false
  2299  	}
  2300  	// If the iterator completed, deliver directly whatever's available
  2301  	if it.done {
  2302  		select {
  2303  		case log := <-it.logs:
  2304  			it.Event = new(ERC20MintableMinterAdded)
  2305  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2306  				it.fail = err
  2307  				return false
  2308  			}
  2309  			it.Event.Raw = log
  2310  			return true
  2311  
  2312  		default:
  2313  			return false
  2314  		}
  2315  	}
  2316  	// Iterator still in progress, wait for either a data or an error event
  2317  	select {
  2318  	case log := <-it.logs:
  2319  		it.Event = new(ERC20MintableMinterAdded)
  2320  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2321  			it.fail = err
  2322  			return false
  2323  		}
  2324  		it.Event.Raw = log
  2325  		return true
  2326  
  2327  	case err := <-it.sub.Err():
  2328  		it.done = true
  2329  		it.fail = err
  2330  		return it.Next()
  2331  	}
  2332  }
  2333  
  2334  // Error returns any retrieval or parsing error occurred during filtering.
  2335  func (it *ERC20MintableMinterAddedIterator) Error() error {
  2336  	return it.fail
  2337  }
  2338  
  2339  // Close terminates the iteration process, releasing any pending underlying
  2340  // resources.
  2341  func (it *ERC20MintableMinterAddedIterator) Close() error {
  2342  	it.sub.Unsubscribe()
  2343  	return nil
  2344  }
  2345  
  2346  // ERC20MintableMinterAdded represents a MinterAdded event raised by the ERC20Mintable contract.
  2347  type ERC20MintableMinterAdded struct {
  2348  	Account common.Address
  2349  	Raw     types.Log // Blockchain specific contextual infos
  2350  }
  2351  
  2352  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  2353  //
  2354  // Solidity: event MinterAdded(address indexed account)
  2355  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) {
  2356  
  2357  	var accountRule []interface{}
  2358  	for _, accountItem := range account {
  2359  		accountRule = append(accountRule, accountItem)
  2360  	}
  2361  
  2362  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
  2363  	if err != nil {
  2364  		return nil, err
  2365  	}
  2366  	return &ERC20MintableMinterAddedIterator{contract: _ERC20Mintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  2367  }
  2368  
  2369  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  2370  //
  2371  // Solidity: event MinterAdded(address indexed account)
  2372  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) {
  2373  
  2374  	var accountRule []interface{}
  2375  	for _, accountItem := range account {
  2376  		accountRule = append(accountRule, accountItem)
  2377  	}
  2378  
  2379  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
  2380  	if err != nil {
  2381  		return nil, err
  2382  	}
  2383  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2384  		defer sub.Unsubscribe()
  2385  		for {
  2386  			select {
  2387  			case log := <-logs:
  2388  				// New log arrived, parse the event and forward to the user
  2389  				event := new(ERC20MintableMinterAdded)
  2390  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  2391  					return err
  2392  				}
  2393  				event.Raw = log
  2394  
  2395  				select {
  2396  				case sink <- event:
  2397  				case err := <-sub.Err():
  2398  					return err
  2399  				case <-quit:
  2400  					return nil
  2401  				}
  2402  			case err := <-sub.Err():
  2403  				return err
  2404  			case <-quit:
  2405  				return nil
  2406  			}
  2407  		}
  2408  	}), nil
  2409  }
  2410  
  2411  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  2412  //
  2413  // Solidity: event MinterAdded(address indexed account)
  2414  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*ERC20MintableMinterAdded, error) {
  2415  	event := new(ERC20MintableMinterAdded)
  2416  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  2417  		return nil, err
  2418  	}
  2419  	return event, nil
  2420  }
  2421  
  2422  // 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.
  2423  type ERC20MintableMinterRemovedIterator struct {
  2424  	Event *ERC20MintableMinterRemoved // Event containing the contract specifics and raw log
  2425  
  2426  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2427  	event    string              // Event name to use for unpacking event data
  2428  
  2429  	logs chan types.Log      // Log channel receiving the found contract events
  2430  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2431  	done bool                // Whether the subscription completed delivering logs
  2432  	fail error               // Occurred error to stop iteration
  2433  }
  2434  
  2435  // Next advances the iterator to the subsequent event, returning whether there
  2436  // are any more events found. In case of a retrieval or parsing error, false is
  2437  // returned and Error() can be queried for the exact failure.
  2438  func (it *ERC20MintableMinterRemovedIterator) Next() bool {
  2439  	// If the iterator failed, stop iterating
  2440  	if it.fail != nil {
  2441  		return false
  2442  	}
  2443  	// If the iterator completed, deliver directly whatever's available
  2444  	if it.done {
  2445  		select {
  2446  		case log := <-it.logs:
  2447  			it.Event = new(ERC20MintableMinterRemoved)
  2448  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2449  				it.fail = err
  2450  				return false
  2451  			}
  2452  			it.Event.Raw = log
  2453  			return true
  2454  
  2455  		default:
  2456  			return false
  2457  		}
  2458  	}
  2459  	// Iterator still in progress, wait for either a data or an error event
  2460  	select {
  2461  	case log := <-it.logs:
  2462  		it.Event = new(ERC20MintableMinterRemoved)
  2463  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2464  			it.fail = err
  2465  			return false
  2466  		}
  2467  		it.Event.Raw = log
  2468  		return true
  2469  
  2470  	case err := <-it.sub.Err():
  2471  		it.done = true
  2472  		it.fail = err
  2473  		return it.Next()
  2474  	}
  2475  }
  2476  
  2477  // Error returns any retrieval or parsing error occurred during filtering.
  2478  func (it *ERC20MintableMinterRemovedIterator) Error() error {
  2479  	return it.fail
  2480  }
  2481  
  2482  // Close terminates the iteration process, releasing any pending underlying
  2483  // resources.
  2484  func (it *ERC20MintableMinterRemovedIterator) Close() error {
  2485  	it.sub.Unsubscribe()
  2486  	return nil
  2487  }
  2488  
  2489  // ERC20MintableMinterRemoved represents a MinterRemoved event raised by the ERC20Mintable contract.
  2490  type ERC20MintableMinterRemoved struct {
  2491  	Account common.Address
  2492  	Raw     types.Log // Blockchain specific contextual infos
  2493  }
  2494  
  2495  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  2496  //
  2497  // Solidity: event MinterRemoved(address indexed account)
  2498  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) {
  2499  
  2500  	var accountRule []interface{}
  2501  	for _, accountItem := range account {
  2502  		accountRule = append(accountRule, accountItem)
  2503  	}
  2504  
  2505  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  2506  	if err != nil {
  2507  		return nil, err
  2508  	}
  2509  	return &ERC20MintableMinterRemovedIterator{contract: _ERC20Mintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  2510  }
  2511  
  2512  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  2513  //
  2514  // Solidity: event MinterRemoved(address indexed account)
  2515  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) {
  2516  
  2517  	var accountRule []interface{}
  2518  	for _, accountItem := range account {
  2519  		accountRule = append(accountRule, accountItem)
  2520  	}
  2521  
  2522  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  2523  	if err != nil {
  2524  		return nil, err
  2525  	}
  2526  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2527  		defer sub.Unsubscribe()
  2528  		for {
  2529  			select {
  2530  			case log := <-logs:
  2531  				// New log arrived, parse the event and forward to the user
  2532  				event := new(ERC20MintableMinterRemoved)
  2533  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  2534  					return err
  2535  				}
  2536  				event.Raw = log
  2537  
  2538  				select {
  2539  				case sink <- event:
  2540  				case err := <-sub.Err():
  2541  					return err
  2542  				case <-quit:
  2543  					return nil
  2544  				}
  2545  			case err := <-sub.Err():
  2546  				return err
  2547  			case <-quit:
  2548  				return nil
  2549  			}
  2550  		}
  2551  	}), nil
  2552  }
  2553  
  2554  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  2555  //
  2556  // Solidity: event MinterRemoved(address indexed account)
  2557  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) (*ERC20MintableMinterRemoved, error) {
  2558  	event := new(ERC20MintableMinterRemoved)
  2559  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  2560  		return nil, err
  2561  	}
  2562  	return event, nil
  2563  }
  2564  
  2565  // 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.
  2566  type ERC20MintableTransferIterator struct {
  2567  	Event *ERC20MintableTransfer // Event containing the contract specifics and raw log
  2568  
  2569  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2570  	event    string              // Event name to use for unpacking event data
  2571  
  2572  	logs chan types.Log      // Log channel receiving the found contract events
  2573  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2574  	done bool                // Whether the subscription completed delivering logs
  2575  	fail error               // Occurred error to stop iteration
  2576  }
  2577  
  2578  // Next advances the iterator to the subsequent event, returning whether there
  2579  // are any more events found. In case of a retrieval or parsing error, false is
  2580  // returned and Error() can be queried for the exact failure.
  2581  func (it *ERC20MintableTransferIterator) Next() bool {
  2582  	// If the iterator failed, stop iterating
  2583  	if it.fail != nil {
  2584  		return false
  2585  	}
  2586  	// If the iterator completed, deliver directly whatever's available
  2587  	if it.done {
  2588  		select {
  2589  		case log := <-it.logs:
  2590  			it.Event = new(ERC20MintableTransfer)
  2591  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2592  				it.fail = err
  2593  				return false
  2594  			}
  2595  			it.Event.Raw = log
  2596  			return true
  2597  
  2598  		default:
  2599  			return false
  2600  		}
  2601  	}
  2602  	// Iterator still in progress, wait for either a data or an error event
  2603  	select {
  2604  	case log := <-it.logs:
  2605  		it.Event = new(ERC20MintableTransfer)
  2606  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2607  			it.fail = err
  2608  			return false
  2609  		}
  2610  		it.Event.Raw = log
  2611  		return true
  2612  
  2613  	case err := <-it.sub.Err():
  2614  		it.done = true
  2615  		it.fail = err
  2616  		return it.Next()
  2617  	}
  2618  }
  2619  
  2620  // Error returns any retrieval or parsing error occurred during filtering.
  2621  func (it *ERC20MintableTransferIterator) Error() error {
  2622  	return it.fail
  2623  }
  2624  
  2625  // Close terminates the iteration process, releasing any pending underlying
  2626  // resources.
  2627  func (it *ERC20MintableTransferIterator) Close() error {
  2628  	it.sub.Unsubscribe()
  2629  	return nil
  2630  }
  2631  
  2632  // ERC20MintableTransfer represents a Transfer event raised by the ERC20Mintable contract.
  2633  type ERC20MintableTransfer struct {
  2634  	From  common.Address
  2635  	To    common.Address
  2636  	Value *big.Int
  2637  	Raw   types.Log // Blockchain specific contextual infos
  2638  }
  2639  
  2640  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2641  //
  2642  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2643  func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) {
  2644  
  2645  	var fromRule []interface{}
  2646  	for _, fromItem := range from {
  2647  		fromRule = append(fromRule, fromItem)
  2648  	}
  2649  	var toRule []interface{}
  2650  	for _, toItem := range to {
  2651  		toRule = append(toRule, toItem)
  2652  	}
  2653  
  2654  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  2655  	if err != nil {
  2656  		return nil, err
  2657  	}
  2658  	return &ERC20MintableTransferIterator{contract: _ERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2659  }
  2660  
  2661  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2662  //
  2663  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2664  func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  2665  
  2666  	var fromRule []interface{}
  2667  	for _, fromItem := range from {
  2668  		fromRule = append(fromRule, fromItem)
  2669  	}
  2670  	var toRule []interface{}
  2671  	for _, toItem := range to {
  2672  		toRule = append(toRule, toItem)
  2673  	}
  2674  
  2675  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  2676  	if err != nil {
  2677  		return nil, err
  2678  	}
  2679  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2680  		defer sub.Unsubscribe()
  2681  		for {
  2682  			select {
  2683  			case log := <-logs:
  2684  				// New log arrived, parse the event and forward to the user
  2685  				event := new(ERC20MintableTransfer)
  2686  				if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2687  					return err
  2688  				}
  2689  				event.Raw = log
  2690  
  2691  				select {
  2692  				case sink <- event:
  2693  				case err := <-sub.Err():
  2694  					return err
  2695  				case <-quit:
  2696  					return nil
  2697  				}
  2698  			case err := <-sub.Err():
  2699  				return err
  2700  			case <-quit:
  2701  				return nil
  2702  			}
  2703  		}
  2704  	}), nil
  2705  }
  2706  
  2707  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2708  //
  2709  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  2710  func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC20MintableTransfer, error) {
  2711  	event := new(ERC20MintableTransfer)
  2712  	if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2713  		return nil, err
  2714  	}
  2715  	return event, nil
  2716  }
  2717  
  2718  // ERC20ServiceChainMetaData contains all meta data concerning the ERC20ServiceChain contract.
  2719  var ERC20ServiceChainMetaData = &bind.MetaData{
  2720  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestValueTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]",
  2721  	Sigs: map[string]string{
  2722  		"dd62ed3e": "allowance(address,address)",
  2723  		"095ea7b3": "approve(address,uint256)",
  2724  		"70a08231": "balanceOf(address)",
  2725  		"e78cea92": "bridge()",
  2726  		"a457c2d7": "decreaseAllowance(address,uint256)",
  2727  		"39509351": "increaseAllowance(address,uint256)",
  2728  		"8f32d59b": "isOwner()",
  2729  		"8da5cb5b": "owner()",
  2730  		"715018a6": "renounceOwnership()",
  2731  		"3dc3c9e1": "requestValueTransfer(uint256,address,uint256,bytes)",
  2732  		"8dd14802": "setBridge(address)",
  2733  		"18160ddd": "totalSupply()",
  2734  		"a9059cbb": "transfer(address,uint256)",
  2735  		"23b872dd": "transferFrom(address,address,uint256)",
  2736  		"f2fde38b": "transferOwnership(address)",
  2737  	},
  2738  }
  2739  
  2740  // ERC20ServiceChainABI is the input ABI used to generate the binding from.
  2741  // Deprecated: Use ERC20ServiceChainMetaData.ABI instead.
  2742  var ERC20ServiceChainABI = ERC20ServiceChainMetaData.ABI
  2743  
  2744  // ERC20ServiceChainBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  2745  const ERC20ServiceChainBinRuntime = ``
  2746  
  2747  // ERC20ServiceChainFuncSigs maps the 4-byte function signature to its string representation.
  2748  // Deprecated: Use ERC20ServiceChainMetaData.Sigs instead.
  2749  var ERC20ServiceChainFuncSigs = ERC20ServiceChainMetaData.Sigs
  2750  
  2751  // ERC20ServiceChain is an auto generated Go binding around a Klaytn contract.
  2752  type ERC20ServiceChain struct {
  2753  	ERC20ServiceChainCaller     // Read-only binding to the contract
  2754  	ERC20ServiceChainTransactor // Write-only binding to the contract
  2755  	ERC20ServiceChainFilterer   // Log filterer for contract events
  2756  }
  2757  
  2758  // ERC20ServiceChainCaller is an auto generated read-only Go binding around a Klaytn contract.
  2759  type ERC20ServiceChainCaller struct {
  2760  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2761  }
  2762  
  2763  // ERC20ServiceChainTransactor is an auto generated write-only Go binding around a Klaytn contract.
  2764  type ERC20ServiceChainTransactor struct {
  2765  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2766  }
  2767  
  2768  // ERC20ServiceChainFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  2769  type ERC20ServiceChainFilterer struct {
  2770  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2771  }
  2772  
  2773  // ERC20ServiceChainSession is an auto generated Go binding around a Klaytn contract,
  2774  // with pre-set call and transact options.
  2775  type ERC20ServiceChainSession struct {
  2776  	Contract     *ERC20ServiceChain // Generic contract binding to set the session for
  2777  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  2778  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  2779  }
  2780  
  2781  // ERC20ServiceChainCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  2782  // with pre-set call options.
  2783  type ERC20ServiceChainCallerSession struct {
  2784  	Contract *ERC20ServiceChainCaller // Generic contract caller binding to set the session for
  2785  	CallOpts bind.CallOpts            // Call options to use throughout this session
  2786  }
  2787  
  2788  // ERC20ServiceChainTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  2789  // with pre-set transact options.
  2790  type ERC20ServiceChainTransactorSession struct {
  2791  	Contract     *ERC20ServiceChainTransactor // Generic contract transactor binding to set the session for
  2792  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  2793  }
  2794  
  2795  // ERC20ServiceChainRaw is an auto generated low-level Go binding around a Klaytn contract.
  2796  type ERC20ServiceChainRaw struct {
  2797  	Contract *ERC20ServiceChain // Generic contract binding to access the raw methods on
  2798  }
  2799  
  2800  // ERC20ServiceChainCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  2801  type ERC20ServiceChainCallerRaw struct {
  2802  	Contract *ERC20ServiceChainCaller // Generic read-only contract binding to access the raw methods on
  2803  }
  2804  
  2805  // ERC20ServiceChainTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  2806  type ERC20ServiceChainTransactorRaw struct {
  2807  	Contract *ERC20ServiceChainTransactor // Generic write-only contract binding to access the raw methods on
  2808  }
  2809  
  2810  // NewERC20ServiceChain creates a new instance of ERC20ServiceChain, bound to a specific deployed contract.
  2811  func NewERC20ServiceChain(address common.Address, backend bind.ContractBackend) (*ERC20ServiceChain, error) {
  2812  	contract, err := bindERC20ServiceChain(address, backend, backend, backend)
  2813  	if err != nil {
  2814  		return nil, err
  2815  	}
  2816  	return &ERC20ServiceChain{ERC20ServiceChainCaller: ERC20ServiceChainCaller{contract: contract}, ERC20ServiceChainTransactor: ERC20ServiceChainTransactor{contract: contract}, ERC20ServiceChainFilterer: ERC20ServiceChainFilterer{contract: contract}}, nil
  2817  }
  2818  
  2819  // NewERC20ServiceChainCaller creates a new read-only instance of ERC20ServiceChain, bound to a specific deployed contract.
  2820  func NewERC20ServiceChainCaller(address common.Address, caller bind.ContractCaller) (*ERC20ServiceChainCaller, error) {
  2821  	contract, err := bindERC20ServiceChain(address, caller, nil, nil)
  2822  	if err != nil {
  2823  		return nil, err
  2824  	}
  2825  	return &ERC20ServiceChainCaller{contract: contract}, nil
  2826  }
  2827  
  2828  // NewERC20ServiceChainTransactor creates a new write-only instance of ERC20ServiceChain, bound to a specific deployed contract.
  2829  func NewERC20ServiceChainTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20ServiceChainTransactor, error) {
  2830  	contract, err := bindERC20ServiceChain(address, nil, transactor, nil)
  2831  	if err != nil {
  2832  		return nil, err
  2833  	}
  2834  	return &ERC20ServiceChainTransactor{contract: contract}, nil
  2835  }
  2836  
  2837  // NewERC20ServiceChainFilterer creates a new log filterer instance of ERC20ServiceChain, bound to a specific deployed contract.
  2838  func NewERC20ServiceChainFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20ServiceChainFilterer, error) {
  2839  	contract, err := bindERC20ServiceChain(address, nil, nil, filterer)
  2840  	if err != nil {
  2841  		return nil, err
  2842  	}
  2843  	return &ERC20ServiceChainFilterer{contract: contract}, nil
  2844  }
  2845  
  2846  // bindERC20ServiceChain binds a generic wrapper to an already deployed contract.
  2847  func bindERC20ServiceChain(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2848  	parsed, err := ERC20ServiceChainMetaData.GetAbi()
  2849  	if err != nil {
  2850  		return nil, err
  2851  	}
  2852  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  2853  }
  2854  
  2855  // Call invokes the (constant) contract method with params as input values and
  2856  // sets the output to result. The result type might be a single field for simple
  2857  // returns, a slice of interfaces for anonymous returns and a struct for named
  2858  // returns.
  2859  func (_ERC20ServiceChain *ERC20ServiceChainRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2860  	return _ERC20ServiceChain.Contract.ERC20ServiceChainCaller.contract.Call(opts, result, method, params...)
  2861  }
  2862  
  2863  // Transfer initiates a plain transaction to move funds to the contract, calling
  2864  // its default method if one is available.
  2865  func (_ERC20ServiceChain *ERC20ServiceChainRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2866  	return _ERC20ServiceChain.Contract.ERC20ServiceChainTransactor.contract.Transfer(opts)
  2867  }
  2868  
  2869  // Transact invokes the (paid) contract method with params as input values.
  2870  func (_ERC20ServiceChain *ERC20ServiceChainRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2871  	return _ERC20ServiceChain.Contract.ERC20ServiceChainTransactor.contract.Transact(opts, method, params...)
  2872  }
  2873  
  2874  // Call invokes the (constant) contract method with params as input values and
  2875  // sets the output to result. The result type might be a single field for simple
  2876  // returns, a slice of interfaces for anonymous returns and a struct for named
  2877  // returns.
  2878  func (_ERC20ServiceChain *ERC20ServiceChainCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  2879  	return _ERC20ServiceChain.Contract.contract.Call(opts, result, method, params...)
  2880  }
  2881  
  2882  // Transfer initiates a plain transaction to move funds to the contract, calling
  2883  // its default method if one is available.
  2884  func (_ERC20ServiceChain *ERC20ServiceChainTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2885  	return _ERC20ServiceChain.Contract.contract.Transfer(opts)
  2886  }
  2887  
  2888  // Transact invokes the (paid) contract method with params as input values.
  2889  func (_ERC20ServiceChain *ERC20ServiceChainTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2890  	return _ERC20ServiceChain.Contract.contract.Transact(opts, method, params...)
  2891  }
  2892  
  2893  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2894  //
  2895  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  2896  func (_ERC20ServiceChain *ERC20ServiceChainCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  2897  	var out []interface{}
  2898  	err := _ERC20ServiceChain.contract.Call(opts, &out, "allowance", owner, spender)
  2899  
  2900  	if err != nil {
  2901  		return *new(*big.Int), err
  2902  	}
  2903  
  2904  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2905  
  2906  	return out0, err
  2907  
  2908  }
  2909  
  2910  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2911  //
  2912  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  2913  func (_ERC20ServiceChain *ERC20ServiceChainSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2914  	return _ERC20ServiceChain.Contract.Allowance(&_ERC20ServiceChain.CallOpts, owner, spender)
  2915  }
  2916  
  2917  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  2918  //
  2919  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  2920  func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  2921  	return _ERC20ServiceChain.Contract.Allowance(&_ERC20ServiceChain.CallOpts, owner, spender)
  2922  }
  2923  
  2924  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2925  //
  2926  // Solidity: function balanceOf(address account) view returns(uint256)
  2927  func (_ERC20ServiceChain *ERC20ServiceChainCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  2928  	var out []interface{}
  2929  	err := _ERC20ServiceChain.contract.Call(opts, &out, "balanceOf", account)
  2930  
  2931  	if err != nil {
  2932  		return *new(*big.Int), err
  2933  	}
  2934  
  2935  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  2936  
  2937  	return out0, err
  2938  
  2939  }
  2940  
  2941  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2942  //
  2943  // Solidity: function balanceOf(address account) view returns(uint256)
  2944  func (_ERC20ServiceChain *ERC20ServiceChainSession) BalanceOf(account common.Address) (*big.Int, error) {
  2945  	return _ERC20ServiceChain.Contract.BalanceOf(&_ERC20ServiceChain.CallOpts, account)
  2946  }
  2947  
  2948  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2949  //
  2950  // Solidity: function balanceOf(address account) view returns(uint256)
  2951  func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  2952  	return _ERC20ServiceChain.Contract.BalanceOf(&_ERC20ServiceChain.CallOpts, account)
  2953  }
  2954  
  2955  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  2956  //
  2957  // Solidity: function bridge() view returns(address)
  2958  func (_ERC20ServiceChain *ERC20ServiceChainCaller) Bridge(opts *bind.CallOpts) (common.Address, error) {
  2959  	var out []interface{}
  2960  	err := _ERC20ServiceChain.contract.Call(opts, &out, "bridge")
  2961  
  2962  	if err != nil {
  2963  		return *new(common.Address), err
  2964  	}
  2965  
  2966  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  2967  
  2968  	return out0, err
  2969  
  2970  }
  2971  
  2972  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  2973  //
  2974  // Solidity: function bridge() view returns(address)
  2975  func (_ERC20ServiceChain *ERC20ServiceChainSession) Bridge() (common.Address, error) {
  2976  	return _ERC20ServiceChain.Contract.Bridge(&_ERC20ServiceChain.CallOpts)
  2977  }
  2978  
  2979  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  2980  //
  2981  // Solidity: function bridge() view returns(address)
  2982  func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) Bridge() (common.Address, error) {
  2983  	return _ERC20ServiceChain.Contract.Bridge(&_ERC20ServiceChain.CallOpts)
  2984  }
  2985  
  2986  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  2987  //
  2988  // Solidity: function isOwner() view returns(bool)
  2989  func (_ERC20ServiceChain *ERC20ServiceChainCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  2990  	var out []interface{}
  2991  	err := _ERC20ServiceChain.contract.Call(opts, &out, "isOwner")
  2992  
  2993  	if err != nil {
  2994  		return *new(bool), err
  2995  	}
  2996  
  2997  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  2998  
  2999  	return out0, err
  3000  
  3001  }
  3002  
  3003  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3004  //
  3005  // Solidity: function isOwner() view returns(bool)
  3006  func (_ERC20ServiceChain *ERC20ServiceChainSession) IsOwner() (bool, error) {
  3007  	return _ERC20ServiceChain.Contract.IsOwner(&_ERC20ServiceChain.CallOpts)
  3008  }
  3009  
  3010  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3011  //
  3012  // Solidity: function isOwner() view returns(bool)
  3013  func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) IsOwner() (bool, error) {
  3014  	return _ERC20ServiceChain.Contract.IsOwner(&_ERC20ServiceChain.CallOpts)
  3015  }
  3016  
  3017  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3018  //
  3019  // Solidity: function owner() view returns(address)
  3020  func (_ERC20ServiceChain *ERC20ServiceChainCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  3021  	var out []interface{}
  3022  	err := _ERC20ServiceChain.contract.Call(opts, &out, "owner")
  3023  
  3024  	if err != nil {
  3025  		return *new(common.Address), err
  3026  	}
  3027  
  3028  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  3029  
  3030  	return out0, err
  3031  
  3032  }
  3033  
  3034  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3035  //
  3036  // Solidity: function owner() view returns(address)
  3037  func (_ERC20ServiceChain *ERC20ServiceChainSession) Owner() (common.Address, error) {
  3038  	return _ERC20ServiceChain.Contract.Owner(&_ERC20ServiceChain.CallOpts)
  3039  }
  3040  
  3041  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3042  //
  3043  // Solidity: function owner() view returns(address)
  3044  func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) Owner() (common.Address, error) {
  3045  	return _ERC20ServiceChain.Contract.Owner(&_ERC20ServiceChain.CallOpts)
  3046  }
  3047  
  3048  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3049  //
  3050  // Solidity: function totalSupply() view returns(uint256)
  3051  func (_ERC20ServiceChain *ERC20ServiceChainCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3052  	var out []interface{}
  3053  	err := _ERC20ServiceChain.contract.Call(opts, &out, "totalSupply")
  3054  
  3055  	if err != nil {
  3056  		return *new(*big.Int), err
  3057  	}
  3058  
  3059  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3060  
  3061  	return out0, err
  3062  
  3063  }
  3064  
  3065  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3066  //
  3067  // Solidity: function totalSupply() view returns(uint256)
  3068  func (_ERC20ServiceChain *ERC20ServiceChainSession) TotalSupply() (*big.Int, error) {
  3069  	return _ERC20ServiceChain.Contract.TotalSupply(&_ERC20ServiceChain.CallOpts)
  3070  }
  3071  
  3072  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3073  //
  3074  // Solidity: function totalSupply() view returns(uint256)
  3075  func (_ERC20ServiceChain *ERC20ServiceChainCallerSession) TotalSupply() (*big.Int, error) {
  3076  	return _ERC20ServiceChain.Contract.TotalSupply(&_ERC20ServiceChain.CallOpts)
  3077  }
  3078  
  3079  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3080  //
  3081  // Solidity: function approve(address spender, uint256 value) returns(bool)
  3082  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
  3083  	return _ERC20ServiceChain.contract.Transact(opts, "approve", spender, value)
  3084  }
  3085  
  3086  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3087  //
  3088  // Solidity: function approve(address spender, uint256 value) returns(bool)
  3089  func (_ERC20ServiceChain *ERC20ServiceChainSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  3090  	return _ERC20ServiceChain.Contract.Approve(&_ERC20ServiceChain.TransactOpts, spender, value)
  3091  }
  3092  
  3093  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3094  //
  3095  // Solidity: function approve(address spender, uint256 value) returns(bool)
  3096  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  3097  	return _ERC20ServiceChain.Contract.Approve(&_ERC20ServiceChain.TransactOpts, spender, value)
  3098  }
  3099  
  3100  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3101  //
  3102  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3103  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3104  	return _ERC20ServiceChain.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  3105  }
  3106  
  3107  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3108  //
  3109  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3110  func (_ERC20ServiceChain *ERC20ServiceChainSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3111  	return _ERC20ServiceChain.Contract.DecreaseAllowance(&_ERC20ServiceChain.TransactOpts, spender, subtractedValue)
  3112  }
  3113  
  3114  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  3115  //
  3116  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  3117  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  3118  	return _ERC20ServiceChain.Contract.DecreaseAllowance(&_ERC20ServiceChain.TransactOpts, spender, subtractedValue)
  3119  }
  3120  
  3121  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3122  //
  3123  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3124  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3125  	return _ERC20ServiceChain.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  3126  }
  3127  
  3128  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3129  //
  3130  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3131  func (_ERC20ServiceChain *ERC20ServiceChainSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3132  	return _ERC20ServiceChain.Contract.IncreaseAllowance(&_ERC20ServiceChain.TransactOpts, spender, addedValue)
  3133  }
  3134  
  3135  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  3136  //
  3137  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  3138  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  3139  	return _ERC20ServiceChain.Contract.IncreaseAllowance(&_ERC20ServiceChain.TransactOpts, spender, addedValue)
  3140  }
  3141  
  3142  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3143  //
  3144  // Solidity: function renounceOwnership() returns()
  3145  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  3146  	return _ERC20ServiceChain.contract.Transact(opts, "renounceOwnership")
  3147  }
  3148  
  3149  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3150  //
  3151  // Solidity: function renounceOwnership() returns()
  3152  func (_ERC20ServiceChain *ERC20ServiceChainSession) RenounceOwnership() (*types.Transaction, error) {
  3153  	return _ERC20ServiceChain.Contract.RenounceOwnership(&_ERC20ServiceChain.TransactOpts)
  3154  }
  3155  
  3156  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3157  //
  3158  // Solidity: function renounceOwnership() returns()
  3159  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  3160  	return _ERC20ServiceChain.Contract.RenounceOwnership(&_ERC20ServiceChain.TransactOpts)
  3161  }
  3162  
  3163  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3dc3c9e1.
  3164  //
  3165  // Solidity: function requestValueTransfer(uint256 _amount, address _to, uint256 _feeLimit, bytes _extraData) returns()
  3166  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) RequestValueTransfer(opts *bind.TransactOpts, _amount *big.Int, _to common.Address, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  3167  	return _ERC20ServiceChain.contract.Transact(opts, "requestValueTransfer", _amount, _to, _feeLimit, _extraData)
  3168  }
  3169  
  3170  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3dc3c9e1.
  3171  //
  3172  // Solidity: function requestValueTransfer(uint256 _amount, address _to, uint256 _feeLimit, bytes _extraData) returns()
  3173  func (_ERC20ServiceChain *ERC20ServiceChainSession) RequestValueTransfer(_amount *big.Int, _to common.Address, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  3174  	return _ERC20ServiceChain.Contract.RequestValueTransfer(&_ERC20ServiceChain.TransactOpts, _amount, _to, _feeLimit, _extraData)
  3175  }
  3176  
  3177  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3dc3c9e1.
  3178  //
  3179  // Solidity: function requestValueTransfer(uint256 _amount, address _to, uint256 _feeLimit, bytes _extraData) returns()
  3180  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) RequestValueTransfer(_amount *big.Int, _to common.Address, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  3181  	return _ERC20ServiceChain.Contract.RequestValueTransfer(&_ERC20ServiceChain.TransactOpts, _amount, _to, _feeLimit, _extraData)
  3182  }
  3183  
  3184  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  3185  //
  3186  // Solidity: function setBridge(address _bridge) returns()
  3187  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) SetBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
  3188  	return _ERC20ServiceChain.contract.Transact(opts, "setBridge", _bridge)
  3189  }
  3190  
  3191  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  3192  //
  3193  // Solidity: function setBridge(address _bridge) returns()
  3194  func (_ERC20ServiceChain *ERC20ServiceChainSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  3195  	return _ERC20ServiceChain.Contract.SetBridge(&_ERC20ServiceChain.TransactOpts, _bridge)
  3196  }
  3197  
  3198  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  3199  //
  3200  // Solidity: function setBridge(address _bridge) returns()
  3201  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  3202  	return _ERC20ServiceChain.Contract.SetBridge(&_ERC20ServiceChain.TransactOpts, _bridge)
  3203  }
  3204  
  3205  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3206  //
  3207  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3208  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3209  	return _ERC20ServiceChain.contract.Transact(opts, "transfer", recipient, amount)
  3210  }
  3211  
  3212  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3213  //
  3214  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3215  func (_ERC20ServiceChain *ERC20ServiceChainSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3216  	return _ERC20ServiceChain.Contract.Transfer(&_ERC20ServiceChain.TransactOpts, recipient, amount)
  3217  }
  3218  
  3219  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  3220  //
  3221  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  3222  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3223  	return _ERC20ServiceChain.Contract.Transfer(&_ERC20ServiceChain.TransactOpts, recipient, amount)
  3224  }
  3225  
  3226  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3227  //
  3228  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3229  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3230  	return _ERC20ServiceChain.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  3231  }
  3232  
  3233  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3234  //
  3235  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3236  func (_ERC20ServiceChain *ERC20ServiceChainSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3237  	return _ERC20ServiceChain.Contract.TransferFrom(&_ERC20ServiceChain.TransactOpts, sender, recipient, amount)
  3238  }
  3239  
  3240  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3241  //
  3242  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  3243  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  3244  	return _ERC20ServiceChain.Contract.TransferFrom(&_ERC20ServiceChain.TransactOpts, sender, recipient, amount)
  3245  }
  3246  
  3247  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3248  //
  3249  // Solidity: function transferOwnership(address newOwner) returns()
  3250  func (_ERC20ServiceChain *ERC20ServiceChainTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  3251  	return _ERC20ServiceChain.contract.Transact(opts, "transferOwnership", newOwner)
  3252  }
  3253  
  3254  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3255  //
  3256  // Solidity: function transferOwnership(address newOwner) returns()
  3257  func (_ERC20ServiceChain *ERC20ServiceChainSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  3258  	return _ERC20ServiceChain.Contract.TransferOwnership(&_ERC20ServiceChain.TransactOpts, newOwner)
  3259  }
  3260  
  3261  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3262  //
  3263  // Solidity: function transferOwnership(address newOwner) returns()
  3264  func (_ERC20ServiceChain *ERC20ServiceChainTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  3265  	return _ERC20ServiceChain.Contract.TransferOwnership(&_ERC20ServiceChain.TransactOpts, newOwner)
  3266  }
  3267  
  3268  // ERC20ServiceChainApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20ServiceChain contract.
  3269  type ERC20ServiceChainApprovalIterator struct {
  3270  	Event *ERC20ServiceChainApproval // Event containing the contract specifics and raw log
  3271  
  3272  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3273  	event    string              // Event name to use for unpacking event data
  3274  
  3275  	logs chan types.Log      // Log channel receiving the found contract events
  3276  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3277  	done bool                // Whether the subscription completed delivering logs
  3278  	fail error               // Occurred error to stop iteration
  3279  }
  3280  
  3281  // Next advances the iterator to the subsequent event, returning whether there
  3282  // are any more events found. In case of a retrieval or parsing error, false is
  3283  // returned and Error() can be queried for the exact failure.
  3284  func (it *ERC20ServiceChainApprovalIterator) Next() bool {
  3285  	// If the iterator failed, stop iterating
  3286  	if it.fail != nil {
  3287  		return false
  3288  	}
  3289  	// If the iterator completed, deliver directly whatever's available
  3290  	if it.done {
  3291  		select {
  3292  		case log := <-it.logs:
  3293  			it.Event = new(ERC20ServiceChainApproval)
  3294  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3295  				it.fail = err
  3296  				return false
  3297  			}
  3298  			it.Event.Raw = log
  3299  			return true
  3300  
  3301  		default:
  3302  			return false
  3303  		}
  3304  	}
  3305  	// Iterator still in progress, wait for either a data or an error event
  3306  	select {
  3307  	case log := <-it.logs:
  3308  		it.Event = new(ERC20ServiceChainApproval)
  3309  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3310  			it.fail = err
  3311  			return false
  3312  		}
  3313  		it.Event.Raw = log
  3314  		return true
  3315  
  3316  	case err := <-it.sub.Err():
  3317  		it.done = true
  3318  		it.fail = err
  3319  		return it.Next()
  3320  	}
  3321  }
  3322  
  3323  // Error returns any retrieval or parsing error occurred during filtering.
  3324  func (it *ERC20ServiceChainApprovalIterator) Error() error {
  3325  	return it.fail
  3326  }
  3327  
  3328  // Close terminates the iteration process, releasing any pending underlying
  3329  // resources.
  3330  func (it *ERC20ServiceChainApprovalIterator) Close() error {
  3331  	it.sub.Unsubscribe()
  3332  	return nil
  3333  }
  3334  
  3335  // ERC20ServiceChainApproval represents a Approval event raised by the ERC20ServiceChain contract.
  3336  type ERC20ServiceChainApproval struct {
  3337  	Owner   common.Address
  3338  	Spender common.Address
  3339  	Value   *big.Int
  3340  	Raw     types.Log // Blockchain specific contextual infos
  3341  }
  3342  
  3343  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3344  //
  3345  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3346  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ServiceChainApprovalIterator, error) {
  3347  
  3348  	var ownerRule []interface{}
  3349  	for _, ownerItem := range owner {
  3350  		ownerRule = append(ownerRule, ownerItem)
  3351  	}
  3352  	var spenderRule []interface{}
  3353  	for _, spenderItem := range spender {
  3354  		spenderRule = append(spenderRule, spenderItem)
  3355  	}
  3356  
  3357  	logs, sub, err := _ERC20ServiceChain.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  3358  	if err != nil {
  3359  		return nil, err
  3360  	}
  3361  	return &ERC20ServiceChainApprovalIterator{contract: _ERC20ServiceChain.contract, event: "Approval", logs: logs, sub: sub}, nil
  3362  }
  3363  
  3364  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3365  //
  3366  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3367  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20ServiceChainApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  3368  
  3369  	var ownerRule []interface{}
  3370  	for _, ownerItem := range owner {
  3371  		ownerRule = append(ownerRule, ownerItem)
  3372  	}
  3373  	var spenderRule []interface{}
  3374  	for _, spenderItem := range spender {
  3375  		spenderRule = append(spenderRule, spenderItem)
  3376  	}
  3377  
  3378  	logs, sub, err := _ERC20ServiceChain.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  3379  	if err != nil {
  3380  		return nil, err
  3381  	}
  3382  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3383  		defer sub.Unsubscribe()
  3384  		for {
  3385  			select {
  3386  			case log := <-logs:
  3387  				// New log arrived, parse the event and forward to the user
  3388  				event := new(ERC20ServiceChainApproval)
  3389  				if err := _ERC20ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil {
  3390  					return err
  3391  				}
  3392  				event.Raw = log
  3393  
  3394  				select {
  3395  				case sink <- event:
  3396  				case err := <-sub.Err():
  3397  					return err
  3398  				case <-quit:
  3399  					return nil
  3400  				}
  3401  			case err := <-sub.Err():
  3402  				return err
  3403  			case <-quit:
  3404  				return nil
  3405  			}
  3406  		}
  3407  	}), nil
  3408  }
  3409  
  3410  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3411  //
  3412  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  3413  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) ParseApproval(log types.Log) (*ERC20ServiceChainApproval, error) {
  3414  	event := new(ERC20ServiceChainApproval)
  3415  	if err := _ERC20ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil {
  3416  		return nil, err
  3417  	}
  3418  	return event, nil
  3419  }
  3420  
  3421  // ERC20ServiceChainOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ERC20ServiceChain contract.
  3422  type ERC20ServiceChainOwnershipTransferredIterator struct {
  3423  	Event *ERC20ServiceChainOwnershipTransferred // Event containing the contract specifics and raw log
  3424  
  3425  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3426  	event    string              // Event name to use for unpacking event data
  3427  
  3428  	logs chan types.Log      // Log channel receiving the found contract events
  3429  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3430  	done bool                // Whether the subscription completed delivering logs
  3431  	fail error               // Occurred error to stop iteration
  3432  }
  3433  
  3434  // Next advances the iterator to the subsequent event, returning whether there
  3435  // are any more events found. In case of a retrieval or parsing error, false is
  3436  // returned and Error() can be queried for the exact failure.
  3437  func (it *ERC20ServiceChainOwnershipTransferredIterator) Next() bool {
  3438  	// If the iterator failed, stop iterating
  3439  	if it.fail != nil {
  3440  		return false
  3441  	}
  3442  	// If the iterator completed, deliver directly whatever's available
  3443  	if it.done {
  3444  		select {
  3445  		case log := <-it.logs:
  3446  			it.Event = new(ERC20ServiceChainOwnershipTransferred)
  3447  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3448  				it.fail = err
  3449  				return false
  3450  			}
  3451  			it.Event.Raw = log
  3452  			return true
  3453  
  3454  		default:
  3455  			return false
  3456  		}
  3457  	}
  3458  	// Iterator still in progress, wait for either a data or an error event
  3459  	select {
  3460  	case log := <-it.logs:
  3461  		it.Event = new(ERC20ServiceChainOwnershipTransferred)
  3462  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3463  			it.fail = err
  3464  			return false
  3465  		}
  3466  		it.Event.Raw = log
  3467  		return true
  3468  
  3469  	case err := <-it.sub.Err():
  3470  		it.done = true
  3471  		it.fail = err
  3472  		return it.Next()
  3473  	}
  3474  }
  3475  
  3476  // Error returns any retrieval or parsing error occurred during filtering.
  3477  func (it *ERC20ServiceChainOwnershipTransferredIterator) Error() error {
  3478  	return it.fail
  3479  }
  3480  
  3481  // Close terminates the iteration process, releasing any pending underlying
  3482  // resources.
  3483  func (it *ERC20ServiceChainOwnershipTransferredIterator) Close() error {
  3484  	it.sub.Unsubscribe()
  3485  	return nil
  3486  }
  3487  
  3488  // ERC20ServiceChainOwnershipTransferred represents a OwnershipTransferred event raised by the ERC20ServiceChain contract.
  3489  type ERC20ServiceChainOwnershipTransferred struct {
  3490  	PreviousOwner common.Address
  3491  	NewOwner      common.Address
  3492  	Raw           types.Log // Blockchain specific contextual infos
  3493  }
  3494  
  3495  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  3496  //
  3497  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  3498  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC20ServiceChainOwnershipTransferredIterator, error) {
  3499  
  3500  	var previousOwnerRule []interface{}
  3501  	for _, previousOwnerItem := range previousOwner {
  3502  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  3503  	}
  3504  	var newOwnerRule []interface{}
  3505  	for _, newOwnerItem := range newOwner {
  3506  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  3507  	}
  3508  
  3509  	logs, sub, err := _ERC20ServiceChain.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  3510  	if err != nil {
  3511  		return nil, err
  3512  	}
  3513  	return &ERC20ServiceChainOwnershipTransferredIterator{contract: _ERC20ServiceChain.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  3514  }
  3515  
  3516  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  3517  //
  3518  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  3519  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ERC20ServiceChainOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  3520  
  3521  	var previousOwnerRule []interface{}
  3522  	for _, previousOwnerItem := range previousOwner {
  3523  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  3524  	}
  3525  	var newOwnerRule []interface{}
  3526  	for _, newOwnerItem := range newOwner {
  3527  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  3528  	}
  3529  
  3530  	logs, sub, err := _ERC20ServiceChain.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  3531  	if err != nil {
  3532  		return nil, err
  3533  	}
  3534  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3535  		defer sub.Unsubscribe()
  3536  		for {
  3537  			select {
  3538  			case log := <-logs:
  3539  				// New log arrived, parse the event and forward to the user
  3540  				event := new(ERC20ServiceChainOwnershipTransferred)
  3541  				if err := _ERC20ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  3542  					return err
  3543  				}
  3544  				event.Raw = log
  3545  
  3546  				select {
  3547  				case sink <- event:
  3548  				case err := <-sub.Err():
  3549  					return err
  3550  				case <-quit:
  3551  					return nil
  3552  				}
  3553  			case err := <-sub.Err():
  3554  				return err
  3555  			case <-quit:
  3556  				return nil
  3557  			}
  3558  		}
  3559  	}), nil
  3560  }
  3561  
  3562  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  3563  //
  3564  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  3565  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) ParseOwnershipTransferred(log types.Log) (*ERC20ServiceChainOwnershipTransferred, error) {
  3566  	event := new(ERC20ServiceChainOwnershipTransferred)
  3567  	if err := _ERC20ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  3568  		return nil, err
  3569  	}
  3570  	return event, nil
  3571  }
  3572  
  3573  // ERC20ServiceChainTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20ServiceChain contract.
  3574  type ERC20ServiceChainTransferIterator struct {
  3575  	Event *ERC20ServiceChainTransfer // Event containing the contract specifics and raw log
  3576  
  3577  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3578  	event    string              // Event name to use for unpacking event data
  3579  
  3580  	logs chan types.Log      // Log channel receiving the found contract events
  3581  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3582  	done bool                // Whether the subscription completed delivering logs
  3583  	fail error               // Occurred error to stop iteration
  3584  }
  3585  
  3586  // Next advances the iterator to the subsequent event, returning whether there
  3587  // are any more events found. In case of a retrieval or parsing error, false is
  3588  // returned and Error() can be queried for the exact failure.
  3589  func (it *ERC20ServiceChainTransferIterator) Next() bool {
  3590  	// If the iterator failed, stop iterating
  3591  	if it.fail != nil {
  3592  		return false
  3593  	}
  3594  	// If the iterator completed, deliver directly whatever's available
  3595  	if it.done {
  3596  		select {
  3597  		case log := <-it.logs:
  3598  			it.Event = new(ERC20ServiceChainTransfer)
  3599  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3600  				it.fail = err
  3601  				return false
  3602  			}
  3603  			it.Event.Raw = log
  3604  			return true
  3605  
  3606  		default:
  3607  			return false
  3608  		}
  3609  	}
  3610  	// Iterator still in progress, wait for either a data or an error event
  3611  	select {
  3612  	case log := <-it.logs:
  3613  		it.Event = new(ERC20ServiceChainTransfer)
  3614  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3615  			it.fail = err
  3616  			return false
  3617  		}
  3618  		it.Event.Raw = log
  3619  		return true
  3620  
  3621  	case err := <-it.sub.Err():
  3622  		it.done = true
  3623  		it.fail = err
  3624  		return it.Next()
  3625  	}
  3626  }
  3627  
  3628  // Error returns any retrieval or parsing error occurred during filtering.
  3629  func (it *ERC20ServiceChainTransferIterator) Error() error {
  3630  	return it.fail
  3631  }
  3632  
  3633  // Close terminates the iteration process, releasing any pending underlying
  3634  // resources.
  3635  func (it *ERC20ServiceChainTransferIterator) Close() error {
  3636  	it.sub.Unsubscribe()
  3637  	return nil
  3638  }
  3639  
  3640  // ERC20ServiceChainTransfer represents a Transfer event raised by the ERC20ServiceChain contract.
  3641  type ERC20ServiceChainTransfer struct {
  3642  	From  common.Address
  3643  	To    common.Address
  3644  	Value *big.Int
  3645  	Raw   types.Log // Blockchain specific contextual infos
  3646  }
  3647  
  3648  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3649  //
  3650  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3651  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20ServiceChainTransferIterator, error) {
  3652  
  3653  	var fromRule []interface{}
  3654  	for _, fromItem := range from {
  3655  		fromRule = append(fromRule, fromItem)
  3656  	}
  3657  	var toRule []interface{}
  3658  	for _, toItem := range to {
  3659  		toRule = append(toRule, toItem)
  3660  	}
  3661  
  3662  	logs, sub, err := _ERC20ServiceChain.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  3663  	if err != nil {
  3664  		return nil, err
  3665  	}
  3666  	return &ERC20ServiceChainTransferIterator{contract: _ERC20ServiceChain.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3667  }
  3668  
  3669  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3670  //
  3671  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3672  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20ServiceChainTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  3673  
  3674  	var fromRule []interface{}
  3675  	for _, fromItem := range from {
  3676  		fromRule = append(fromRule, fromItem)
  3677  	}
  3678  	var toRule []interface{}
  3679  	for _, toItem := range to {
  3680  		toRule = append(toRule, toItem)
  3681  	}
  3682  
  3683  	logs, sub, err := _ERC20ServiceChain.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  3684  	if err != nil {
  3685  		return nil, err
  3686  	}
  3687  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3688  		defer sub.Unsubscribe()
  3689  		for {
  3690  			select {
  3691  			case log := <-logs:
  3692  				// New log arrived, parse the event and forward to the user
  3693  				event := new(ERC20ServiceChainTransfer)
  3694  				if err := _ERC20ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil {
  3695  					return err
  3696  				}
  3697  				event.Raw = log
  3698  
  3699  				select {
  3700  				case sink <- event:
  3701  				case err := <-sub.Err():
  3702  					return err
  3703  				case <-quit:
  3704  					return nil
  3705  				}
  3706  			case err := <-sub.Err():
  3707  				return err
  3708  			case <-quit:
  3709  				return nil
  3710  			}
  3711  		}
  3712  	}), nil
  3713  }
  3714  
  3715  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3716  //
  3717  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  3718  func (_ERC20ServiceChain *ERC20ServiceChainFilterer) ParseTransfer(log types.Log) (*ERC20ServiceChainTransfer, error) {
  3719  	event := new(ERC20ServiceChainTransfer)
  3720  	if err := _ERC20ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil {
  3721  		return nil, err
  3722  	}
  3723  	return event, nil
  3724  }
  3725  
  3726  // IERC20MetaData contains all meta data concerning the IERC20 contract.
  3727  var IERC20MetaData = &bind.MetaData{
  3728  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]",
  3729  	Sigs: map[string]string{
  3730  		"dd62ed3e": "allowance(address,address)",
  3731  		"095ea7b3": "approve(address,uint256)",
  3732  		"70a08231": "balanceOf(address)",
  3733  		"18160ddd": "totalSupply()",
  3734  		"a9059cbb": "transfer(address,uint256)",
  3735  		"23b872dd": "transferFrom(address,address,uint256)",
  3736  	},
  3737  }
  3738  
  3739  // IERC20ABI is the input ABI used to generate the binding from.
  3740  // Deprecated: Use IERC20MetaData.ABI instead.
  3741  var IERC20ABI = IERC20MetaData.ABI
  3742  
  3743  // IERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  3744  const IERC20BinRuntime = ``
  3745  
  3746  // IERC20FuncSigs maps the 4-byte function signature to its string representation.
  3747  // Deprecated: Use IERC20MetaData.Sigs instead.
  3748  var IERC20FuncSigs = IERC20MetaData.Sigs
  3749  
  3750  // IERC20 is an auto generated Go binding around a Klaytn contract.
  3751  type IERC20 struct {
  3752  	IERC20Caller     // Read-only binding to the contract
  3753  	IERC20Transactor // Write-only binding to the contract
  3754  	IERC20Filterer   // Log filterer for contract events
  3755  }
  3756  
  3757  // IERC20Caller is an auto generated read-only Go binding around a Klaytn contract.
  3758  type IERC20Caller struct {
  3759  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3760  }
  3761  
  3762  // IERC20Transactor is an auto generated write-only Go binding around a Klaytn contract.
  3763  type IERC20Transactor struct {
  3764  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3765  }
  3766  
  3767  // IERC20Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  3768  type IERC20Filterer struct {
  3769  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3770  }
  3771  
  3772  // IERC20Session is an auto generated Go binding around a Klaytn contract,
  3773  // with pre-set call and transact options.
  3774  type IERC20Session struct {
  3775  	Contract     *IERC20           // Generic contract binding to set the session for
  3776  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  3777  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  3778  }
  3779  
  3780  // IERC20CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  3781  // with pre-set call options.
  3782  type IERC20CallerSession struct {
  3783  	Contract *IERC20Caller // Generic contract caller binding to set the session for
  3784  	CallOpts bind.CallOpts // Call options to use throughout this session
  3785  }
  3786  
  3787  // IERC20TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  3788  // with pre-set transact options.
  3789  type IERC20TransactorSession struct {
  3790  	Contract     *IERC20Transactor // Generic contract transactor binding to set the session for
  3791  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  3792  }
  3793  
  3794  // IERC20Raw is an auto generated low-level Go binding around a Klaytn contract.
  3795  type IERC20Raw struct {
  3796  	Contract *IERC20 // Generic contract binding to access the raw methods on
  3797  }
  3798  
  3799  // IERC20CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  3800  type IERC20CallerRaw struct {
  3801  	Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on
  3802  }
  3803  
  3804  // IERC20TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  3805  type IERC20TransactorRaw struct {
  3806  	Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on
  3807  }
  3808  
  3809  // NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract.
  3810  func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) {
  3811  	contract, err := bindIERC20(address, backend, backend, backend)
  3812  	if err != nil {
  3813  		return nil, err
  3814  	}
  3815  	return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil
  3816  }
  3817  
  3818  // NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract.
  3819  func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) {
  3820  	contract, err := bindIERC20(address, caller, nil, nil)
  3821  	if err != nil {
  3822  		return nil, err
  3823  	}
  3824  	return &IERC20Caller{contract: contract}, nil
  3825  }
  3826  
  3827  // NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract.
  3828  func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) {
  3829  	contract, err := bindIERC20(address, nil, transactor, nil)
  3830  	if err != nil {
  3831  		return nil, err
  3832  	}
  3833  	return &IERC20Transactor{contract: contract}, nil
  3834  }
  3835  
  3836  // NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract.
  3837  func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) {
  3838  	contract, err := bindIERC20(address, nil, nil, filterer)
  3839  	if err != nil {
  3840  		return nil, err
  3841  	}
  3842  	return &IERC20Filterer{contract: contract}, nil
  3843  }
  3844  
  3845  // bindIERC20 binds a generic wrapper to an already deployed contract.
  3846  func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3847  	parsed, err := IERC20MetaData.GetAbi()
  3848  	if err != nil {
  3849  		return nil, err
  3850  	}
  3851  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  3852  }
  3853  
  3854  // Call invokes the (constant) contract method with params as input values and
  3855  // sets the output to result. The result type might be a single field for simple
  3856  // returns, a slice of interfaces for anonymous returns and a struct for named
  3857  // returns.
  3858  func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3859  	return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...)
  3860  }
  3861  
  3862  // Transfer initiates a plain transaction to move funds to the contract, calling
  3863  // its default method if one is available.
  3864  func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3865  	return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts)
  3866  }
  3867  
  3868  // Transact invokes the (paid) contract method with params as input values.
  3869  func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3870  	return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...)
  3871  }
  3872  
  3873  // Call invokes the (constant) contract method with params as input values and
  3874  // sets the output to result. The result type might be a single field for simple
  3875  // returns, a slice of interfaces for anonymous returns and a struct for named
  3876  // returns.
  3877  func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  3878  	return _IERC20.Contract.contract.Call(opts, result, method, params...)
  3879  }
  3880  
  3881  // Transfer initiates a plain transaction to move funds to the contract, calling
  3882  // its default method if one is available.
  3883  func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3884  	return _IERC20.Contract.contract.Transfer(opts)
  3885  }
  3886  
  3887  // Transact invokes the (paid) contract method with params as input values.
  3888  func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3889  	return _IERC20.Contract.contract.Transact(opts, method, params...)
  3890  }
  3891  
  3892  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3893  //
  3894  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  3895  func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  3896  	var out []interface{}
  3897  	err := _IERC20.contract.Call(opts, &out, "allowance", owner, spender)
  3898  
  3899  	if err != nil {
  3900  		return *new(*big.Int), err
  3901  	}
  3902  
  3903  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3904  
  3905  	return out0, err
  3906  
  3907  }
  3908  
  3909  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3910  //
  3911  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  3912  func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  3913  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
  3914  }
  3915  
  3916  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  3917  //
  3918  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  3919  func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  3920  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
  3921  }
  3922  
  3923  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3924  //
  3925  // Solidity: function balanceOf(address account) view returns(uint256)
  3926  func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  3927  	var out []interface{}
  3928  	err := _IERC20.contract.Call(opts, &out, "balanceOf", account)
  3929  
  3930  	if err != nil {
  3931  		return *new(*big.Int), err
  3932  	}
  3933  
  3934  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3935  
  3936  	return out0, err
  3937  
  3938  }
  3939  
  3940  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3941  //
  3942  // Solidity: function balanceOf(address account) view returns(uint256)
  3943  func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
  3944  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
  3945  }
  3946  
  3947  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3948  //
  3949  // Solidity: function balanceOf(address account) view returns(uint256)
  3950  func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  3951  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
  3952  }
  3953  
  3954  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3955  //
  3956  // Solidity: function totalSupply() view returns(uint256)
  3957  func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3958  	var out []interface{}
  3959  	err := _IERC20.contract.Call(opts, &out, "totalSupply")
  3960  
  3961  	if err != nil {
  3962  		return *new(*big.Int), err
  3963  	}
  3964  
  3965  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  3966  
  3967  	return out0, err
  3968  
  3969  }
  3970  
  3971  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3972  //
  3973  // Solidity: function totalSupply() view returns(uint256)
  3974  func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) {
  3975  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
  3976  }
  3977  
  3978  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3979  //
  3980  // Solidity: function totalSupply() view returns(uint256)
  3981  func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) {
  3982  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
  3983  }
  3984  
  3985  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3986  //
  3987  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3988  func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3989  	return _IERC20.contract.Transact(opts, "approve", spender, amount)
  3990  }
  3991  
  3992  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3993  //
  3994  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  3995  func (_IERC20 *IERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  3996  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
  3997  }
  3998  
  3999  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4000  //
  4001  // Solidity: function approve(address spender, uint256 amount) returns(bool)
  4002  func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
  4003  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
  4004  }
  4005  
  4006  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4007  //
  4008  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4009  func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4010  	return _IERC20.contract.Transact(opts, "transfer", recipient, amount)
  4011  }
  4012  
  4013  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4014  //
  4015  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4016  func (_IERC20 *IERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4017  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
  4018  }
  4019  
  4020  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  4021  //
  4022  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  4023  func (_IERC20 *IERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4024  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
  4025  }
  4026  
  4027  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4028  //
  4029  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4030  func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4031  	return _IERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  4032  }
  4033  
  4034  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4035  //
  4036  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4037  func (_IERC20 *IERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4038  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
  4039  }
  4040  
  4041  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4042  //
  4043  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  4044  func (_IERC20 *IERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  4045  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
  4046  }
  4047  
  4048  // 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.
  4049  type IERC20ApprovalIterator struct {
  4050  	Event *IERC20Approval // Event containing the contract specifics and raw log
  4051  
  4052  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4053  	event    string              // Event name to use for unpacking event data
  4054  
  4055  	logs chan types.Log      // Log channel receiving the found contract events
  4056  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4057  	done bool                // Whether the subscription completed delivering logs
  4058  	fail error               // Occurred error to stop iteration
  4059  }
  4060  
  4061  // Next advances the iterator to the subsequent event, returning whether there
  4062  // are any more events found. In case of a retrieval or parsing error, false is
  4063  // returned and Error() can be queried for the exact failure.
  4064  func (it *IERC20ApprovalIterator) Next() bool {
  4065  	// If the iterator failed, stop iterating
  4066  	if it.fail != nil {
  4067  		return false
  4068  	}
  4069  	// If the iterator completed, deliver directly whatever's available
  4070  	if it.done {
  4071  		select {
  4072  		case log := <-it.logs:
  4073  			it.Event = new(IERC20Approval)
  4074  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4075  				it.fail = err
  4076  				return false
  4077  			}
  4078  			it.Event.Raw = log
  4079  			return true
  4080  
  4081  		default:
  4082  			return false
  4083  		}
  4084  	}
  4085  	// Iterator still in progress, wait for either a data or an error event
  4086  	select {
  4087  	case log := <-it.logs:
  4088  		it.Event = new(IERC20Approval)
  4089  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4090  			it.fail = err
  4091  			return false
  4092  		}
  4093  		it.Event.Raw = log
  4094  		return true
  4095  
  4096  	case err := <-it.sub.Err():
  4097  		it.done = true
  4098  		it.fail = err
  4099  		return it.Next()
  4100  	}
  4101  }
  4102  
  4103  // Error returns any retrieval or parsing error occurred during filtering.
  4104  func (it *IERC20ApprovalIterator) Error() error {
  4105  	return it.fail
  4106  }
  4107  
  4108  // Close terminates the iteration process, releasing any pending underlying
  4109  // resources.
  4110  func (it *IERC20ApprovalIterator) Close() error {
  4111  	it.sub.Unsubscribe()
  4112  	return nil
  4113  }
  4114  
  4115  // IERC20Approval represents a Approval event raised by the IERC20 contract.
  4116  type IERC20Approval struct {
  4117  	Owner   common.Address
  4118  	Spender common.Address
  4119  	Value   *big.Int
  4120  	Raw     types.Log // Blockchain specific contextual infos
  4121  }
  4122  
  4123  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4124  //
  4125  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4126  func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) {
  4127  
  4128  	var ownerRule []interface{}
  4129  	for _, ownerItem := range owner {
  4130  		ownerRule = append(ownerRule, ownerItem)
  4131  	}
  4132  	var spenderRule []interface{}
  4133  	for _, spenderItem := range spender {
  4134  		spenderRule = append(spenderRule, spenderItem)
  4135  	}
  4136  
  4137  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  4138  	if err != nil {
  4139  		return nil, err
  4140  	}
  4141  	return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
  4142  }
  4143  
  4144  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4145  //
  4146  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4147  func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  4148  
  4149  	var ownerRule []interface{}
  4150  	for _, ownerItem := range owner {
  4151  		ownerRule = append(ownerRule, ownerItem)
  4152  	}
  4153  	var spenderRule []interface{}
  4154  	for _, spenderItem := range spender {
  4155  		spenderRule = append(spenderRule, spenderItem)
  4156  	}
  4157  
  4158  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  4159  	if err != nil {
  4160  		return nil, err
  4161  	}
  4162  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4163  		defer sub.Unsubscribe()
  4164  		for {
  4165  			select {
  4166  			case log := <-logs:
  4167  				// New log arrived, parse the event and forward to the user
  4168  				event := new(IERC20Approval)
  4169  				if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  4170  					return err
  4171  				}
  4172  				event.Raw = log
  4173  
  4174  				select {
  4175  				case sink <- event:
  4176  				case err := <-sub.Err():
  4177  					return err
  4178  				case <-quit:
  4179  					return nil
  4180  				}
  4181  			case err := <-sub.Err():
  4182  				return err
  4183  			case <-quit:
  4184  				return nil
  4185  			}
  4186  		}
  4187  	}), nil
  4188  }
  4189  
  4190  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4191  //
  4192  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  4193  func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) {
  4194  	event := new(IERC20Approval)
  4195  	if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
  4196  		return nil, err
  4197  	}
  4198  	return event, nil
  4199  }
  4200  
  4201  // 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.
  4202  type IERC20TransferIterator struct {
  4203  	Event *IERC20Transfer // Event containing the contract specifics and raw log
  4204  
  4205  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4206  	event    string              // Event name to use for unpacking event data
  4207  
  4208  	logs chan types.Log      // Log channel receiving the found contract events
  4209  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4210  	done bool                // Whether the subscription completed delivering logs
  4211  	fail error               // Occurred error to stop iteration
  4212  }
  4213  
  4214  // Next advances the iterator to the subsequent event, returning whether there
  4215  // are any more events found. In case of a retrieval or parsing error, false is
  4216  // returned and Error() can be queried for the exact failure.
  4217  func (it *IERC20TransferIterator) Next() bool {
  4218  	// If the iterator failed, stop iterating
  4219  	if it.fail != nil {
  4220  		return false
  4221  	}
  4222  	// If the iterator completed, deliver directly whatever's available
  4223  	if it.done {
  4224  		select {
  4225  		case log := <-it.logs:
  4226  			it.Event = new(IERC20Transfer)
  4227  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4228  				it.fail = err
  4229  				return false
  4230  			}
  4231  			it.Event.Raw = log
  4232  			return true
  4233  
  4234  		default:
  4235  			return false
  4236  		}
  4237  	}
  4238  	// Iterator still in progress, wait for either a data or an error event
  4239  	select {
  4240  	case log := <-it.logs:
  4241  		it.Event = new(IERC20Transfer)
  4242  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4243  			it.fail = err
  4244  			return false
  4245  		}
  4246  		it.Event.Raw = log
  4247  		return true
  4248  
  4249  	case err := <-it.sub.Err():
  4250  		it.done = true
  4251  		it.fail = err
  4252  		return it.Next()
  4253  	}
  4254  }
  4255  
  4256  // Error returns any retrieval or parsing error occurred during filtering.
  4257  func (it *IERC20TransferIterator) Error() error {
  4258  	return it.fail
  4259  }
  4260  
  4261  // Close terminates the iteration process, releasing any pending underlying
  4262  // resources.
  4263  func (it *IERC20TransferIterator) Close() error {
  4264  	it.sub.Unsubscribe()
  4265  	return nil
  4266  }
  4267  
  4268  // IERC20Transfer represents a Transfer event raised by the IERC20 contract.
  4269  type IERC20Transfer struct {
  4270  	From  common.Address
  4271  	To    common.Address
  4272  	Value *big.Int
  4273  	Raw   types.Log // Blockchain specific contextual infos
  4274  }
  4275  
  4276  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4277  //
  4278  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4279  func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) {
  4280  
  4281  	var fromRule []interface{}
  4282  	for _, fromItem := range from {
  4283  		fromRule = append(fromRule, fromItem)
  4284  	}
  4285  	var toRule []interface{}
  4286  	for _, toItem := range to {
  4287  		toRule = append(toRule, toItem)
  4288  	}
  4289  
  4290  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  4291  	if err != nil {
  4292  		return nil, err
  4293  	}
  4294  	return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4295  }
  4296  
  4297  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4298  //
  4299  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4300  func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  4301  
  4302  	var fromRule []interface{}
  4303  	for _, fromItem := range from {
  4304  		fromRule = append(fromRule, fromItem)
  4305  	}
  4306  	var toRule []interface{}
  4307  	for _, toItem := range to {
  4308  		toRule = append(toRule, toItem)
  4309  	}
  4310  
  4311  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  4312  	if err != nil {
  4313  		return nil, err
  4314  	}
  4315  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4316  		defer sub.Unsubscribe()
  4317  		for {
  4318  			select {
  4319  			case log := <-logs:
  4320  				// New log arrived, parse the event and forward to the user
  4321  				event := new(IERC20Transfer)
  4322  				if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  4323  					return err
  4324  				}
  4325  				event.Raw = log
  4326  
  4327  				select {
  4328  				case sink <- event:
  4329  				case err := <-sub.Err():
  4330  					return err
  4331  				case <-quit:
  4332  					return nil
  4333  				}
  4334  			case err := <-sub.Err():
  4335  				return err
  4336  			case <-quit:
  4337  				return nil
  4338  			}
  4339  		}
  4340  	}), nil
  4341  }
  4342  
  4343  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4344  //
  4345  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  4346  func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) {
  4347  	event := new(IERC20Transfer)
  4348  	if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
  4349  		return nil, err
  4350  	}
  4351  	return event, nil
  4352  }
  4353  
  4354  // IERC20BridgeReceiverMetaData contains all meta data concerning the IERC20BridgeReceiver contract.
  4355  var IERC20BridgeReceiverMetaData = &bind.MetaData{
  4356  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
  4357  	Sigs: map[string]string{
  4358  		"f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)",
  4359  	},
  4360  }
  4361  
  4362  // IERC20BridgeReceiverABI is the input ABI used to generate the binding from.
  4363  // Deprecated: Use IERC20BridgeReceiverMetaData.ABI instead.
  4364  var IERC20BridgeReceiverABI = IERC20BridgeReceiverMetaData.ABI
  4365  
  4366  // IERC20BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4367  const IERC20BridgeReceiverBinRuntime = ``
  4368  
  4369  // IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation.
  4370  // Deprecated: Use IERC20BridgeReceiverMetaData.Sigs instead.
  4371  var IERC20BridgeReceiverFuncSigs = IERC20BridgeReceiverMetaData.Sigs
  4372  
  4373  // IERC20BridgeReceiver is an auto generated Go binding around a Klaytn contract.
  4374  type IERC20BridgeReceiver struct {
  4375  	IERC20BridgeReceiverCaller     // Read-only binding to the contract
  4376  	IERC20BridgeReceiverTransactor // Write-only binding to the contract
  4377  	IERC20BridgeReceiverFilterer   // Log filterer for contract events
  4378  }
  4379  
  4380  // IERC20BridgeReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
  4381  type IERC20BridgeReceiverCaller struct {
  4382  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4383  }
  4384  
  4385  // IERC20BridgeReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
  4386  type IERC20BridgeReceiverTransactor struct {
  4387  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4388  }
  4389  
  4390  // IERC20BridgeReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4391  type IERC20BridgeReceiverFilterer struct {
  4392  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4393  }
  4394  
  4395  // IERC20BridgeReceiverSession is an auto generated Go binding around a Klaytn contract,
  4396  // with pre-set call and transact options.
  4397  type IERC20BridgeReceiverSession struct {
  4398  	Contract     *IERC20BridgeReceiver // Generic contract binding to set the session for
  4399  	CallOpts     bind.CallOpts         // Call options to use throughout this session
  4400  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  4401  }
  4402  
  4403  // IERC20BridgeReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  4404  // with pre-set call options.
  4405  type IERC20BridgeReceiverCallerSession struct {
  4406  	Contract *IERC20BridgeReceiverCaller // Generic contract caller binding to set the session for
  4407  	CallOpts bind.CallOpts               // Call options to use throughout this session
  4408  }
  4409  
  4410  // IERC20BridgeReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  4411  // with pre-set transact options.
  4412  type IERC20BridgeReceiverTransactorSession struct {
  4413  	Contract     *IERC20BridgeReceiverTransactor // Generic contract transactor binding to set the session for
  4414  	TransactOpts bind.TransactOpts               // Transaction auth options to use throughout this session
  4415  }
  4416  
  4417  // IERC20BridgeReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
  4418  type IERC20BridgeReceiverRaw struct {
  4419  	Contract *IERC20BridgeReceiver // Generic contract binding to access the raw methods on
  4420  }
  4421  
  4422  // IERC20BridgeReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  4423  type IERC20BridgeReceiverCallerRaw struct {
  4424  	Contract *IERC20BridgeReceiverCaller // Generic read-only contract binding to access the raw methods on
  4425  }
  4426  
  4427  // IERC20BridgeReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  4428  type IERC20BridgeReceiverTransactorRaw struct {
  4429  	Contract *IERC20BridgeReceiverTransactor // Generic write-only contract binding to access the raw methods on
  4430  }
  4431  
  4432  // NewIERC20BridgeReceiver creates a new instance of IERC20BridgeReceiver, bound to a specific deployed contract.
  4433  func NewIERC20BridgeReceiver(address common.Address, backend bind.ContractBackend) (*IERC20BridgeReceiver, error) {
  4434  	contract, err := bindIERC20BridgeReceiver(address, backend, backend, backend)
  4435  	if err != nil {
  4436  		return nil, err
  4437  	}
  4438  	return &IERC20BridgeReceiver{IERC20BridgeReceiverCaller: IERC20BridgeReceiverCaller{contract: contract}, IERC20BridgeReceiverTransactor: IERC20BridgeReceiverTransactor{contract: contract}, IERC20BridgeReceiverFilterer: IERC20BridgeReceiverFilterer{contract: contract}}, nil
  4439  }
  4440  
  4441  // NewIERC20BridgeReceiverCaller creates a new read-only instance of IERC20BridgeReceiver, bound to a specific deployed contract.
  4442  func NewIERC20BridgeReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC20BridgeReceiverCaller, error) {
  4443  	contract, err := bindIERC20BridgeReceiver(address, caller, nil, nil)
  4444  	if err != nil {
  4445  		return nil, err
  4446  	}
  4447  	return &IERC20BridgeReceiverCaller{contract: contract}, nil
  4448  }
  4449  
  4450  // NewIERC20BridgeReceiverTransactor creates a new write-only instance of IERC20BridgeReceiver, bound to a specific deployed contract.
  4451  func NewIERC20BridgeReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20BridgeReceiverTransactor, error) {
  4452  	contract, err := bindIERC20BridgeReceiver(address, nil, transactor, nil)
  4453  	if err != nil {
  4454  		return nil, err
  4455  	}
  4456  	return &IERC20BridgeReceiverTransactor{contract: contract}, nil
  4457  }
  4458  
  4459  // NewIERC20BridgeReceiverFilterer creates a new log filterer instance of IERC20BridgeReceiver, bound to a specific deployed contract.
  4460  func NewIERC20BridgeReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20BridgeReceiverFilterer, error) {
  4461  	contract, err := bindIERC20BridgeReceiver(address, nil, nil, filterer)
  4462  	if err != nil {
  4463  		return nil, err
  4464  	}
  4465  	return &IERC20BridgeReceiverFilterer{contract: contract}, nil
  4466  }
  4467  
  4468  // bindIERC20BridgeReceiver binds a generic wrapper to an already deployed contract.
  4469  func bindIERC20BridgeReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4470  	parsed, err := IERC20BridgeReceiverMetaData.GetAbi()
  4471  	if err != nil {
  4472  		return nil, err
  4473  	}
  4474  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  4475  }
  4476  
  4477  // Call invokes the (constant) contract method with params as input values and
  4478  // sets the output to result. The result type might be a single field for simple
  4479  // returns, a slice of interfaces for anonymous returns and a struct for named
  4480  // returns.
  4481  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4482  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverCaller.contract.Call(opts, result, method, params...)
  4483  }
  4484  
  4485  // Transfer initiates a plain transaction to move funds to the contract, calling
  4486  // its default method if one is available.
  4487  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4488  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverTransactor.contract.Transfer(opts)
  4489  }
  4490  
  4491  // Transact invokes the (paid) contract method with params as input values.
  4492  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4493  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverTransactor.contract.Transact(opts, method, params...)
  4494  }
  4495  
  4496  // Call invokes the (constant) contract method with params as input values and
  4497  // sets the output to result. The result type might be a single field for simple
  4498  // returns, a slice of interfaces for anonymous returns and a struct for named
  4499  // returns.
  4500  func (_IERC20BridgeReceiver *IERC20BridgeReceiverCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4501  	return _IERC20BridgeReceiver.Contract.contract.Call(opts, result, method, params...)
  4502  }
  4503  
  4504  // Transfer initiates a plain transaction to move funds to the contract, calling
  4505  // its default method if one is available.
  4506  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4507  	return _IERC20BridgeReceiver.Contract.contract.Transfer(opts)
  4508  }
  4509  
  4510  // Transact invokes the (paid) contract method with params as input values.
  4511  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4512  	return _IERC20BridgeReceiver.Contract.contract.Transact(opts, method, params...)
  4513  }
  4514  
  4515  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  4516  //
  4517  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
  4518  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  4519  	return _IERC20BridgeReceiver.contract.Transact(opts, "onERC20Received", _from, _to, _amount, _feeLimit, _extraData)
  4520  }
  4521  
  4522  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  4523  //
  4524  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
  4525  func (_IERC20BridgeReceiver *IERC20BridgeReceiverSession) OnERC20Received(_from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  4526  	return _IERC20BridgeReceiver.Contract.OnERC20Received(&_IERC20BridgeReceiver.TransactOpts, _from, _to, _amount, _feeLimit, _extraData)
  4527  }
  4528  
  4529  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  4530  //
  4531  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
  4532  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorSession) OnERC20Received(_from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  4533  	return _IERC20BridgeReceiver.Contract.OnERC20Received(&_IERC20BridgeReceiver.TransactOpts, _from, _to, _amount, _feeLimit, _extraData)
  4534  }
  4535  
  4536  // MinterRoleMetaData contains all meta data concerning the MinterRole contract.
  4537  var MinterRoleMetaData = &bind.MetaData{
  4538  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"}]",
  4539  	Sigs: map[string]string{
  4540  		"983b2d56": "addMinter(address)",
  4541  		"aa271e1a": "isMinter(address)",
  4542  		"98650275": "renounceMinter()",
  4543  	},
  4544  }
  4545  
  4546  // MinterRoleABI is the input ABI used to generate the binding from.
  4547  // Deprecated: Use MinterRoleMetaData.ABI instead.
  4548  var MinterRoleABI = MinterRoleMetaData.ABI
  4549  
  4550  // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4551  const MinterRoleBinRuntime = ``
  4552  
  4553  // MinterRoleFuncSigs maps the 4-byte function signature to its string representation.
  4554  // Deprecated: Use MinterRoleMetaData.Sigs instead.
  4555  var MinterRoleFuncSigs = MinterRoleMetaData.Sigs
  4556  
  4557  // MinterRole is an auto generated Go binding around a Klaytn contract.
  4558  type MinterRole struct {
  4559  	MinterRoleCaller     // Read-only binding to the contract
  4560  	MinterRoleTransactor // Write-only binding to the contract
  4561  	MinterRoleFilterer   // Log filterer for contract events
  4562  }
  4563  
  4564  // MinterRoleCaller is an auto generated read-only Go binding around a Klaytn contract.
  4565  type MinterRoleCaller struct {
  4566  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4567  }
  4568  
  4569  // MinterRoleTransactor is an auto generated write-only Go binding around a Klaytn contract.
  4570  type MinterRoleTransactor struct {
  4571  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4572  }
  4573  
  4574  // MinterRoleFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4575  type MinterRoleFilterer struct {
  4576  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4577  }
  4578  
  4579  // MinterRoleSession is an auto generated Go binding around a Klaytn contract,
  4580  // with pre-set call and transact options.
  4581  type MinterRoleSession struct {
  4582  	Contract     *MinterRole       // Generic contract binding to set the session for
  4583  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4584  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4585  }
  4586  
  4587  // MinterRoleCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  4588  // with pre-set call options.
  4589  type MinterRoleCallerSession struct {
  4590  	Contract *MinterRoleCaller // Generic contract caller binding to set the session for
  4591  	CallOpts bind.CallOpts     // Call options to use throughout this session
  4592  }
  4593  
  4594  // MinterRoleTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  4595  // with pre-set transact options.
  4596  type MinterRoleTransactorSession struct {
  4597  	Contract     *MinterRoleTransactor // Generic contract transactor binding to set the session for
  4598  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  4599  }
  4600  
  4601  // MinterRoleRaw is an auto generated low-level Go binding around a Klaytn contract.
  4602  type MinterRoleRaw struct {
  4603  	Contract *MinterRole // Generic contract binding to access the raw methods on
  4604  }
  4605  
  4606  // MinterRoleCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  4607  type MinterRoleCallerRaw struct {
  4608  	Contract *MinterRoleCaller // Generic read-only contract binding to access the raw methods on
  4609  }
  4610  
  4611  // MinterRoleTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  4612  type MinterRoleTransactorRaw struct {
  4613  	Contract *MinterRoleTransactor // Generic write-only contract binding to access the raw methods on
  4614  }
  4615  
  4616  // NewMinterRole creates a new instance of MinterRole, bound to a specific deployed contract.
  4617  func NewMinterRole(address common.Address, backend bind.ContractBackend) (*MinterRole, error) {
  4618  	contract, err := bindMinterRole(address, backend, backend, backend)
  4619  	if err != nil {
  4620  		return nil, err
  4621  	}
  4622  	return &MinterRole{MinterRoleCaller: MinterRoleCaller{contract: contract}, MinterRoleTransactor: MinterRoleTransactor{contract: contract}, MinterRoleFilterer: MinterRoleFilterer{contract: contract}}, nil
  4623  }
  4624  
  4625  // NewMinterRoleCaller creates a new read-only instance of MinterRole, bound to a specific deployed contract.
  4626  func NewMinterRoleCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleCaller, error) {
  4627  	contract, err := bindMinterRole(address, caller, nil, nil)
  4628  	if err != nil {
  4629  		return nil, err
  4630  	}
  4631  	return &MinterRoleCaller{contract: contract}, nil
  4632  }
  4633  
  4634  // NewMinterRoleTransactor creates a new write-only instance of MinterRole, bound to a specific deployed contract.
  4635  func NewMinterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleTransactor, error) {
  4636  	contract, err := bindMinterRole(address, nil, transactor, nil)
  4637  	if err != nil {
  4638  		return nil, err
  4639  	}
  4640  	return &MinterRoleTransactor{contract: contract}, nil
  4641  }
  4642  
  4643  // NewMinterRoleFilterer creates a new log filterer instance of MinterRole, bound to a specific deployed contract.
  4644  func NewMinterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleFilterer, error) {
  4645  	contract, err := bindMinterRole(address, nil, nil, filterer)
  4646  	if err != nil {
  4647  		return nil, err
  4648  	}
  4649  	return &MinterRoleFilterer{contract: contract}, nil
  4650  }
  4651  
  4652  // bindMinterRole binds a generic wrapper to an already deployed contract.
  4653  func bindMinterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4654  	parsed, err := MinterRoleMetaData.GetAbi()
  4655  	if err != nil {
  4656  		return nil, err
  4657  	}
  4658  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  4659  }
  4660  
  4661  // Call invokes the (constant) contract method with params as input values and
  4662  // sets the output to result. The result type might be a single field for simple
  4663  // returns, a slice of interfaces for anonymous returns and a struct for named
  4664  // returns.
  4665  func (_MinterRole *MinterRoleRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4666  	return _MinterRole.Contract.MinterRoleCaller.contract.Call(opts, result, method, params...)
  4667  }
  4668  
  4669  // Transfer initiates a plain transaction to move funds to the contract, calling
  4670  // its default method if one is available.
  4671  func (_MinterRole *MinterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4672  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transfer(opts)
  4673  }
  4674  
  4675  // Transact invokes the (paid) contract method with params as input values.
  4676  func (_MinterRole *MinterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4677  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transact(opts, method, params...)
  4678  }
  4679  
  4680  // Call invokes the (constant) contract method with params as input values and
  4681  // sets the output to result. The result type might be a single field for simple
  4682  // returns, a slice of interfaces for anonymous returns and a struct for named
  4683  // returns.
  4684  func (_MinterRole *MinterRoleCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  4685  	return _MinterRole.Contract.contract.Call(opts, result, method, params...)
  4686  }
  4687  
  4688  // Transfer initiates a plain transaction to move funds to the contract, calling
  4689  // its default method if one is available.
  4690  func (_MinterRole *MinterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4691  	return _MinterRole.Contract.contract.Transfer(opts)
  4692  }
  4693  
  4694  // Transact invokes the (paid) contract method with params as input values.
  4695  func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4696  	return _MinterRole.Contract.contract.Transact(opts, method, params...)
  4697  }
  4698  
  4699  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  4700  //
  4701  // Solidity: function isMinter(address account) view returns(bool)
  4702  func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  4703  	var out []interface{}
  4704  	err := _MinterRole.contract.Call(opts, &out, "isMinter", account)
  4705  
  4706  	if err != nil {
  4707  		return *new(bool), err
  4708  	}
  4709  
  4710  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  4711  
  4712  	return out0, err
  4713  
  4714  }
  4715  
  4716  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  4717  //
  4718  // Solidity: function isMinter(address account) view returns(bool)
  4719  func (_MinterRole *MinterRoleSession) IsMinter(account common.Address) (bool, error) {
  4720  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
  4721  }
  4722  
  4723  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  4724  //
  4725  // Solidity: function isMinter(address account) view returns(bool)
  4726  func (_MinterRole *MinterRoleCallerSession) IsMinter(account common.Address) (bool, error) {
  4727  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
  4728  }
  4729  
  4730  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  4731  //
  4732  // Solidity: function addMinter(address account) returns()
  4733  func (_MinterRole *MinterRoleTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  4734  	return _MinterRole.contract.Transact(opts, "addMinter", account)
  4735  }
  4736  
  4737  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  4738  //
  4739  // Solidity: function addMinter(address account) returns()
  4740  func (_MinterRole *MinterRoleSession) AddMinter(account common.Address) (*types.Transaction, error) {
  4741  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
  4742  }
  4743  
  4744  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  4745  //
  4746  // Solidity: function addMinter(address account) returns()
  4747  func (_MinterRole *MinterRoleTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  4748  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
  4749  }
  4750  
  4751  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  4752  //
  4753  // Solidity: function renounceMinter() returns()
  4754  func (_MinterRole *MinterRoleTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  4755  	return _MinterRole.contract.Transact(opts, "renounceMinter")
  4756  }
  4757  
  4758  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  4759  //
  4760  // Solidity: function renounceMinter() returns()
  4761  func (_MinterRole *MinterRoleSession) RenounceMinter() (*types.Transaction, error) {
  4762  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
  4763  }
  4764  
  4765  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  4766  //
  4767  // Solidity: function renounceMinter() returns()
  4768  func (_MinterRole *MinterRoleTransactorSession) RenounceMinter() (*types.Transaction, error) {
  4769  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
  4770  }
  4771  
  4772  // 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.
  4773  type MinterRoleMinterAddedIterator struct {
  4774  	Event *MinterRoleMinterAdded // Event containing the contract specifics and raw log
  4775  
  4776  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4777  	event    string              // Event name to use for unpacking event data
  4778  
  4779  	logs chan types.Log      // Log channel receiving the found contract events
  4780  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4781  	done bool                // Whether the subscription completed delivering logs
  4782  	fail error               // Occurred error to stop iteration
  4783  }
  4784  
  4785  // Next advances the iterator to the subsequent event, returning whether there
  4786  // are any more events found. In case of a retrieval or parsing error, false is
  4787  // returned and Error() can be queried for the exact failure.
  4788  func (it *MinterRoleMinterAddedIterator) Next() bool {
  4789  	// If the iterator failed, stop iterating
  4790  	if it.fail != nil {
  4791  		return false
  4792  	}
  4793  	// If the iterator completed, deliver directly whatever's available
  4794  	if it.done {
  4795  		select {
  4796  		case log := <-it.logs:
  4797  			it.Event = new(MinterRoleMinterAdded)
  4798  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4799  				it.fail = err
  4800  				return false
  4801  			}
  4802  			it.Event.Raw = log
  4803  			return true
  4804  
  4805  		default:
  4806  			return false
  4807  		}
  4808  	}
  4809  	// Iterator still in progress, wait for either a data or an error event
  4810  	select {
  4811  	case log := <-it.logs:
  4812  		it.Event = new(MinterRoleMinterAdded)
  4813  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4814  			it.fail = err
  4815  			return false
  4816  		}
  4817  		it.Event.Raw = log
  4818  		return true
  4819  
  4820  	case err := <-it.sub.Err():
  4821  		it.done = true
  4822  		it.fail = err
  4823  		return it.Next()
  4824  	}
  4825  }
  4826  
  4827  // Error returns any retrieval or parsing error occurred during filtering.
  4828  func (it *MinterRoleMinterAddedIterator) Error() error {
  4829  	return it.fail
  4830  }
  4831  
  4832  // Close terminates the iteration process, releasing any pending underlying
  4833  // resources.
  4834  func (it *MinterRoleMinterAddedIterator) Close() error {
  4835  	it.sub.Unsubscribe()
  4836  	return nil
  4837  }
  4838  
  4839  // MinterRoleMinterAdded represents a MinterAdded event raised by the MinterRole contract.
  4840  type MinterRoleMinterAdded struct {
  4841  	Account common.Address
  4842  	Raw     types.Log // Blockchain specific contextual infos
  4843  }
  4844  
  4845  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4846  //
  4847  // Solidity: event MinterAdded(address indexed account)
  4848  func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) {
  4849  
  4850  	var accountRule []interface{}
  4851  	for _, accountItem := range account {
  4852  		accountRule = append(accountRule, accountItem)
  4853  	}
  4854  
  4855  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterAdded", accountRule)
  4856  	if err != nil {
  4857  		return nil, err
  4858  	}
  4859  	return &MinterRoleMinterAddedIterator{contract: _MinterRole.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  4860  }
  4861  
  4862  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4863  //
  4864  // Solidity: event MinterAdded(address indexed account)
  4865  func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) {
  4866  
  4867  	var accountRule []interface{}
  4868  	for _, accountItem := range account {
  4869  		accountRule = append(accountRule, accountItem)
  4870  	}
  4871  
  4872  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterAdded", accountRule)
  4873  	if err != nil {
  4874  		return nil, err
  4875  	}
  4876  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4877  		defer sub.Unsubscribe()
  4878  		for {
  4879  			select {
  4880  			case log := <-logs:
  4881  				// New log arrived, parse the event and forward to the user
  4882  				event := new(MinterRoleMinterAdded)
  4883  				if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  4884  					return err
  4885  				}
  4886  				event.Raw = log
  4887  
  4888  				select {
  4889  				case sink <- event:
  4890  				case err := <-sub.Err():
  4891  					return err
  4892  				case <-quit:
  4893  					return nil
  4894  				}
  4895  			case err := <-sub.Err():
  4896  				return err
  4897  			case <-quit:
  4898  				return nil
  4899  			}
  4900  		}
  4901  	}), nil
  4902  }
  4903  
  4904  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  4905  //
  4906  // Solidity: event MinterAdded(address indexed account)
  4907  func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterRoleMinterAdded, error) {
  4908  	event := new(MinterRoleMinterAdded)
  4909  	if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  4910  		return nil, err
  4911  	}
  4912  	return event, nil
  4913  }
  4914  
  4915  // 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.
  4916  type MinterRoleMinterRemovedIterator struct {
  4917  	Event *MinterRoleMinterRemoved // Event containing the contract specifics and raw log
  4918  
  4919  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4920  	event    string              // Event name to use for unpacking event data
  4921  
  4922  	logs chan types.Log      // Log channel receiving the found contract events
  4923  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4924  	done bool                // Whether the subscription completed delivering logs
  4925  	fail error               // Occurred error to stop iteration
  4926  }
  4927  
  4928  // Next advances the iterator to the subsequent event, returning whether there
  4929  // are any more events found. In case of a retrieval or parsing error, false is
  4930  // returned and Error() can be queried for the exact failure.
  4931  func (it *MinterRoleMinterRemovedIterator) Next() bool {
  4932  	// If the iterator failed, stop iterating
  4933  	if it.fail != nil {
  4934  		return false
  4935  	}
  4936  	// If the iterator completed, deliver directly whatever's available
  4937  	if it.done {
  4938  		select {
  4939  		case log := <-it.logs:
  4940  			it.Event = new(MinterRoleMinterRemoved)
  4941  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4942  				it.fail = err
  4943  				return false
  4944  			}
  4945  			it.Event.Raw = log
  4946  			return true
  4947  
  4948  		default:
  4949  			return false
  4950  		}
  4951  	}
  4952  	// Iterator still in progress, wait for either a data or an error event
  4953  	select {
  4954  	case log := <-it.logs:
  4955  		it.Event = new(MinterRoleMinterRemoved)
  4956  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4957  			it.fail = err
  4958  			return false
  4959  		}
  4960  		it.Event.Raw = log
  4961  		return true
  4962  
  4963  	case err := <-it.sub.Err():
  4964  		it.done = true
  4965  		it.fail = err
  4966  		return it.Next()
  4967  	}
  4968  }
  4969  
  4970  // Error returns any retrieval or parsing error occurred during filtering.
  4971  func (it *MinterRoleMinterRemovedIterator) Error() error {
  4972  	return it.fail
  4973  }
  4974  
  4975  // Close terminates the iteration process, releasing any pending underlying
  4976  // resources.
  4977  func (it *MinterRoleMinterRemovedIterator) Close() error {
  4978  	it.sub.Unsubscribe()
  4979  	return nil
  4980  }
  4981  
  4982  // MinterRoleMinterRemoved represents a MinterRemoved event raised by the MinterRole contract.
  4983  type MinterRoleMinterRemoved struct {
  4984  	Account common.Address
  4985  	Raw     types.Log // Blockchain specific contextual infos
  4986  }
  4987  
  4988  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  4989  //
  4990  // Solidity: event MinterRemoved(address indexed account)
  4991  func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) {
  4992  
  4993  	var accountRule []interface{}
  4994  	for _, accountItem := range account {
  4995  		accountRule = append(accountRule, accountItem)
  4996  	}
  4997  
  4998  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  4999  	if err != nil {
  5000  		return nil, err
  5001  	}
  5002  	return &MinterRoleMinterRemovedIterator{contract: _MinterRole.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  5003  }
  5004  
  5005  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  5006  //
  5007  // Solidity: event MinterRemoved(address indexed account)
  5008  func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) {
  5009  
  5010  	var accountRule []interface{}
  5011  	for _, accountItem := range account {
  5012  		accountRule = append(accountRule, accountItem)
  5013  	}
  5014  
  5015  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  5016  	if err != nil {
  5017  		return nil, err
  5018  	}
  5019  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5020  		defer sub.Unsubscribe()
  5021  		for {
  5022  			select {
  5023  			case log := <-logs:
  5024  				// New log arrived, parse the event and forward to the user
  5025  				event := new(MinterRoleMinterRemoved)
  5026  				if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  5027  					return err
  5028  				}
  5029  				event.Raw = log
  5030  
  5031  				select {
  5032  				case sink <- event:
  5033  				case err := <-sub.Err():
  5034  					return err
  5035  				case <-quit:
  5036  					return nil
  5037  				}
  5038  			case err := <-sub.Err():
  5039  				return err
  5040  			case <-quit:
  5041  				return nil
  5042  			}
  5043  		}
  5044  	}), nil
  5045  }
  5046  
  5047  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  5048  //
  5049  // Solidity: event MinterRemoved(address indexed account)
  5050  func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*MinterRoleMinterRemoved, error) {
  5051  	event := new(MinterRoleMinterRemoved)
  5052  	if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  5053  		return nil, err
  5054  	}
  5055  	return event, nil
  5056  }
  5057  
  5058  // OwnableMetaData contains all meta data concerning the Ownable contract.
  5059  var OwnableMetaData = &bind.MetaData{
  5060  	ABI: "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]",
  5061  	Sigs: map[string]string{
  5062  		"8f32d59b": "isOwner()",
  5063  		"8da5cb5b": "owner()",
  5064  		"715018a6": "renounceOwnership()",
  5065  		"f2fde38b": "transferOwnership(address)",
  5066  	},
  5067  }
  5068  
  5069  // OwnableABI is the input ABI used to generate the binding from.
  5070  // Deprecated: Use OwnableMetaData.ABI instead.
  5071  var OwnableABI = OwnableMetaData.ABI
  5072  
  5073  // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  5074  const OwnableBinRuntime = ``
  5075  
  5076  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
  5077  // Deprecated: Use OwnableMetaData.Sigs instead.
  5078  var OwnableFuncSigs = OwnableMetaData.Sigs
  5079  
  5080  // Ownable is an auto generated Go binding around a Klaytn contract.
  5081  type Ownable struct {
  5082  	OwnableCaller     // Read-only binding to the contract
  5083  	OwnableTransactor // Write-only binding to the contract
  5084  	OwnableFilterer   // Log filterer for contract events
  5085  }
  5086  
  5087  // OwnableCaller is an auto generated read-only Go binding around a Klaytn contract.
  5088  type OwnableCaller struct {
  5089  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5090  }
  5091  
  5092  // OwnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  5093  type OwnableTransactor struct {
  5094  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5095  }
  5096  
  5097  // OwnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5098  type OwnableFilterer struct {
  5099  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5100  }
  5101  
  5102  // OwnableSession is an auto generated Go binding around a Klaytn contract,
  5103  // with pre-set call and transact options.
  5104  type OwnableSession struct {
  5105  	Contract     *Ownable          // Generic contract binding to set the session for
  5106  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5107  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5108  }
  5109  
  5110  // OwnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5111  // with pre-set call options.
  5112  type OwnableCallerSession struct {
  5113  	Contract *OwnableCaller // Generic contract caller binding to set the session for
  5114  	CallOpts bind.CallOpts  // Call options to use throughout this session
  5115  }
  5116  
  5117  // OwnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5118  // with pre-set transact options.
  5119  type OwnableTransactorSession struct {
  5120  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
  5121  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  5122  }
  5123  
  5124  // OwnableRaw is an auto generated low-level Go binding around a Klaytn contract.
  5125  type OwnableRaw struct {
  5126  	Contract *Ownable // Generic contract binding to access the raw methods on
  5127  }
  5128  
  5129  // OwnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5130  type OwnableCallerRaw struct {
  5131  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
  5132  }
  5133  
  5134  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5135  type OwnableTransactorRaw struct {
  5136  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
  5137  }
  5138  
  5139  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
  5140  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
  5141  	contract, err := bindOwnable(address, backend, backend, backend)
  5142  	if err != nil {
  5143  		return nil, err
  5144  	}
  5145  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
  5146  }
  5147  
  5148  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
  5149  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
  5150  	contract, err := bindOwnable(address, caller, nil, nil)
  5151  	if err != nil {
  5152  		return nil, err
  5153  	}
  5154  	return &OwnableCaller{contract: contract}, nil
  5155  }
  5156  
  5157  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
  5158  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
  5159  	contract, err := bindOwnable(address, nil, transactor, nil)
  5160  	if err != nil {
  5161  		return nil, err
  5162  	}
  5163  	return &OwnableTransactor{contract: contract}, nil
  5164  }
  5165  
  5166  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
  5167  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
  5168  	contract, err := bindOwnable(address, nil, nil, filterer)
  5169  	if err != nil {
  5170  		return nil, err
  5171  	}
  5172  	return &OwnableFilterer{contract: contract}, nil
  5173  }
  5174  
  5175  // bindOwnable binds a generic wrapper to an already deployed contract.
  5176  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5177  	parsed, err := OwnableMetaData.GetAbi()
  5178  	if err != nil {
  5179  		return nil, err
  5180  	}
  5181  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  5182  }
  5183  
  5184  // Call invokes the (constant) contract method with params as input values and
  5185  // sets the output to result. The result type might be a single field for simple
  5186  // returns, a slice of interfaces for anonymous returns and a struct for named
  5187  // returns.
  5188  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5189  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
  5190  }
  5191  
  5192  // Transfer initiates a plain transaction to move funds to the contract, calling
  5193  // its default method if one is available.
  5194  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5195  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
  5196  }
  5197  
  5198  // Transact invokes the (paid) contract method with params as input values.
  5199  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5200  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
  5201  }
  5202  
  5203  // Call invokes the (constant) contract method with params as input values and
  5204  // sets the output to result. The result type might be a single field for simple
  5205  // returns, a slice of interfaces for anonymous returns and a struct for named
  5206  // returns.
  5207  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5208  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
  5209  }
  5210  
  5211  // Transfer initiates a plain transaction to move funds to the contract, calling
  5212  // its default method if one is available.
  5213  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5214  	return _Ownable.Contract.contract.Transfer(opts)
  5215  }
  5216  
  5217  // Transact invokes the (paid) contract method with params as input values.
  5218  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5219  	return _Ownable.Contract.contract.Transact(opts, method, params...)
  5220  }
  5221  
  5222  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5223  //
  5224  // Solidity: function isOwner() view returns(bool)
  5225  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  5226  	var out []interface{}
  5227  	err := _Ownable.contract.Call(opts, &out, "isOwner")
  5228  
  5229  	if err != nil {
  5230  		return *new(bool), err
  5231  	}
  5232  
  5233  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  5234  
  5235  	return out0, err
  5236  
  5237  }
  5238  
  5239  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5240  //
  5241  // Solidity: function isOwner() view returns(bool)
  5242  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
  5243  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
  5244  }
  5245  
  5246  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5247  //
  5248  // Solidity: function isOwner() view returns(bool)
  5249  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
  5250  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
  5251  }
  5252  
  5253  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5254  //
  5255  // Solidity: function owner() view returns(address)
  5256  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  5257  	var out []interface{}
  5258  	err := _Ownable.contract.Call(opts, &out, "owner")
  5259  
  5260  	if err != nil {
  5261  		return *new(common.Address), err
  5262  	}
  5263  
  5264  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  5265  
  5266  	return out0, err
  5267  
  5268  }
  5269  
  5270  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5271  //
  5272  // Solidity: function owner() view returns(address)
  5273  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
  5274  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  5275  }
  5276  
  5277  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5278  //
  5279  // Solidity: function owner() view returns(address)
  5280  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
  5281  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
  5282  }
  5283  
  5284  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5285  //
  5286  // Solidity: function renounceOwnership() returns()
  5287  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  5288  	return _Ownable.contract.Transact(opts, "renounceOwnership")
  5289  }
  5290  
  5291  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5292  //
  5293  // Solidity: function renounceOwnership() returns()
  5294  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
  5295  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  5296  }
  5297  
  5298  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5299  //
  5300  // Solidity: function renounceOwnership() returns()
  5301  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  5302  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
  5303  }
  5304  
  5305  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5306  //
  5307  // Solidity: function transferOwnership(address newOwner) returns()
  5308  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  5309  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
  5310  }
  5311  
  5312  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5313  //
  5314  // Solidity: function transferOwnership(address newOwner) returns()
  5315  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  5316  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  5317  }
  5318  
  5319  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5320  //
  5321  // Solidity: function transferOwnership(address newOwner) returns()
  5322  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  5323  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
  5324  }
  5325  
  5326  // 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.
  5327  type OwnableOwnershipTransferredIterator struct {
  5328  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
  5329  
  5330  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5331  	event    string              // Event name to use for unpacking event data
  5332  
  5333  	logs chan types.Log      // Log channel receiving the found contract events
  5334  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5335  	done bool                // Whether the subscription completed delivering logs
  5336  	fail error               // Occurred error to stop iteration
  5337  }
  5338  
  5339  // Next advances the iterator to the subsequent event, returning whether there
  5340  // are any more events found. In case of a retrieval or parsing error, false is
  5341  // returned and Error() can be queried for the exact failure.
  5342  func (it *OwnableOwnershipTransferredIterator) Next() bool {
  5343  	// If the iterator failed, stop iterating
  5344  	if it.fail != nil {
  5345  		return false
  5346  	}
  5347  	// If the iterator completed, deliver directly whatever's available
  5348  	if it.done {
  5349  		select {
  5350  		case log := <-it.logs:
  5351  			it.Event = new(OwnableOwnershipTransferred)
  5352  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5353  				it.fail = err
  5354  				return false
  5355  			}
  5356  			it.Event.Raw = log
  5357  			return true
  5358  
  5359  		default:
  5360  			return false
  5361  		}
  5362  	}
  5363  	// Iterator still in progress, wait for either a data or an error event
  5364  	select {
  5365  	case log := <-it.logs:
  5366  		it.Event = new(OwnableOwnershipTransferred)
  5367  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5368  			it.fail = err
  5369  			return false
  5370  		}
  5371  		it.Event.Raw = log
  5372  		return true
  5373  
  5374  	case err := <-it.sub.Err():
  5375  		it.done = true
  5376  		it.fail = err
  5377  		return it.Next()
  5378  	}
  5379  }
  5380  
  5381  // Error returns any retrieval or parsing error occurred during filtering.
  5382  func (it *OwnableOwnershipTransferredIterator) Error() error {
  5383  	return it.fail
  5384  }
  5385  
  5386  // Close terminates the iteration process, releasing any pending underlying
  5387  // resources.
  5388  func (it *OwnableOwnershipTransferredIterator) Close() error {
  5389  	it.sub.Unsubscribe()
  5390  	return nil
  5391  }
  5392  
  5393  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
  5394  type OwnableOwnershipTransferred struct {
  5395  	PreviousOwner common.Address
  5396  	NewOwner      common.Address
  5397  	Raw           types.Log // Blockchain specific contextual infos
  5398  }
  5399  
  5400  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  5401  //
  5402  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  5403  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
  5404  
  5405  	var previousOwnerRule []interface{}
  5406  	for _, previousOwnerItem := range previousOwner {
  5407  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  5408  	}
  5409  	var newOwnerRule []interface{}
  5410  	for _, newOwnerItem := range newOwner {
  5411  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  5412  	}
  5413  
  5414  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  5415  	if err != nil {
  5416  		return nil, err
  5417  	}
  5418  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  5419  }
  5420  
  5421  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  5422  //
  5423  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  5424  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  5425  
  5426  	var previousOwnerRule []interface{}
  5427  	for _, previousOwnerItem := range previousOwner {
  5428  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  5429  	}
  5430  	var newOwnerRule []interface{}
  5431  	for _, newOwnerItem := range newOwner {
  5432  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  5433  	}
  5434  
  5435  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  5436  	if err != nil {
  5437  		return nil, err
  5438  	}
  5439  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5440  		defer sub.Unsubscribe()
  5441  		for {
  5442  			select {
  5443  			case log := <-logs:
  5444  				// New log arrived, parse the event and forward to the user
  5445  				event := new(OwnableOwnershipTransferred)
  5446  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  5447  					return err
  5448  				}
  5449  				event.Raw = log
  5450  
  5451  				select {
  5452  				case sink <- event:
  5453  				case err := <-sub.Err():
  5454  					return err
  5455  				case <-quit:
  5456  					return nil
  5457  				}
  5458  			case err := <-sub.Err():
  5459  				return err
  5460  			case <-quit:
  5461  				return nil
  5462  			}
  5463  		}
  5464  	}), nil
  5465  }
  5466  
  5467  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  5468  //
  5469  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  5470  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
  5471  	event := new(OwnableOwnershipTransferred)
  5472  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  5473  		return nil, err
  5474  	}
  5475  	return event, nil
  5476  }
  5477  
  5478  // RolesMetaData contains all meta data concerning the Roles contract.
  5479  var RolesMetaData = &bind.MetaData{
  5480  	ABI: "[]",
  5481  	Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029",
  5482  }
  5483  
  5484  // RolesABI is the input ABI used to generate the binding from.
  5485  // Deprecated: Use RolesMetaData.ABI instead.
  5486  var RolesABI = RolesMetaData.ABI
  5487  
  5488  // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  5489  const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058206fdeeec4a4b0b444bd488c924c927184696cea63963686d57a13cf42f3830d840029`
  5490  
  5491  // RolesBin is the compiled bytecode used for deploying new contracts.
  5492  // Deprecated: Use RolesMetaData.Bin instead.
  5493  var RolesBin = RolesMetaData.Bin
  5494  
  5495  // DeployRoles deploys a new Klaytn contract, binding an instance of Roles to it.
  5496  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
  5497  	parsed, err := RolesMetaData.GetAbi()
  5498  	if err != nil {
  5499  		return common.Address{}, nil, nil, err
  5500  	}
  5501  	if parsed == nil {
  5502  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
  5503  	}
  5504  
  5505  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(RolesBin), backend)
  5506  	if err != nil {
  5507  		return common.Address{}, nil, nil, err
  5508  	}
  5509  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
  5510  }
  5511  
  5512  // Roles is an auto generated Go binding around a Klaytn contract.
  5513  type Roles struct {
  5514  	RolesCaller     // Read-only binding to the contract
  5515  	RolesTransactor // Write-only binding to the contract
  5516  	RolesFilterer   // Log filterer for contract events
  5517  }
  5518  
  5519  // RolesCaller is an auto generated read-only Go binding around a Klaytn contract.
  5520  type RolesCaller struct {
  5521  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5522  }
  5523  
  5524  // RolesTransactor is an auto generated write-only Go binding around a Klaytn contract.
  5525  type RolesTransactor struct {
  5526  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5527  }
  5528  
  5529  // RolesFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5530  type RolesFilterer struct {
  5531  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5532  }
  5533  
  5534  // RolesSession is an auto generated Go binding around a Klaytn contract,
  5535  // with pre-set call and transact options.
  5536  type RolesSession struct {
  5537  	Contract     *Roles            // Generic contract binding to set the session for
  5538  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5539  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5540  }
  5541  
  5542  // RolesCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5543  // with pre-set call options.
  5544  type RolesCallerSession struct {
  5545  	Contract *RolesCaller  // Generic contract caller binding to set the session for
  5546  	CallOpts bind.CallOpts // Call options to use throughout this session
  5547  }
  5548  
  5549  // RolesTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5550  // with pre-set transact options.
  5551  type RolesTransactorSession struct {
  5552  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
  5553  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5554  }
  5555  
  5556  // RolesRaw is an auto generated low-level Go binding around a Klaytn contract.
  5557  type RolesRaw struct {
  5558  	Contract *Roles // Generic contract binding to access the raw methods on
  5559  }
  5560  
  5561  // RolesCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5562  type RolesCallerRaw struct {
  5563  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
  5564  }
  5565  
  5566  // RolesTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5567  type RolesTransactorRaw struct {
  5568  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
  5569  }
  5570  
  5571  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
  5572  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
  5573  	contract, err := bindRoles(address, backend, backend, backend)
  5574  	if err != nil {
  5575  		return nil, err
  5576  	}
  5577  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
  5578  }
  5579  
  5580  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
  5581  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
  5582  	contract, err := bindRoles(address, caller, nil, nil)
  5583  	if err != nil {
  5584  		return nil, err
  5585  	}
  5586  	return &RolesCaller{contract: contract}, nil
  5587  }
  5588  
  5589  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
  5590  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
  5591  	contract, err := bindRoles(address, nil, transactor, nil)
  5592  	if err != nil {
  5593  		return nil, err
  5594  	}
  5595  	return &RolesTransactor{contract: contract}, nil
  5596  }
  5597  
  5598  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
  5599  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
  5600  	contract, err := bindRoles(address, nil, nil, filterer)
  5601  	if err != nil {
  5602  		return nil, err
  5603  	}
  5604  	return &RolesFilterer{contract: contract}, nil
  5605  }
  5606  
  5607  // bindRoles binds a generic wrapper to an already deployed contract.
  5608  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5609  	parsed, err := RolesMetaData.GetAbi()
  5610  	if err != nil {
  5611  		return nil, err
  5612  	}
  5613  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  5614  }
  5615  
  5616  // Call invokes the (constant) contract method with params as input values and
  5617  // sets the output to result. The result type might be a single field for simple
  5618  // returns, a slice of interfaces for anonymous returns and a struct for named
  5619  // returns.
  5620  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5621  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
  5622  }
  5623  
  5624  // Transfer initiates a plain transaction to move funds to the contract, calling
  5625  // its default method if one is available.
  5626  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5627  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
  5628  }
  5629  
  5630  // Transact invokes the (paid) contract method with params as input values.
  5631  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5632  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
  5633  }
  5634  
  5635  // Call invokes the (constant) contract method with params as input values and
  5636  // sets the output to result. The result type might be a single field for simple
  5637  // returns, a slice of interfaces for anonymous returns and a struct for named
  5638  // returns.
  5639  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5640  	return _Roles.Contract.contract.Call(opts, result, method, params...)
  5641  }
  5642  
  5643  // Transfer initiates a plain transaction to move funds to the contract, calling
  5644  // its default method if one is available.
  5645  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5646  	return _Roles.Contract.contract.Transfer(opts)
  5647  }
  5648  
  5649  // Transact invokes the (paid) contract method with params as input values.
  5650  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5651  	return _Roles.Contract.contract.Transact(opts, method, params...)
  5652  }
  5653  
  5654  // SafeMathMetaData contains all meta data concerning the SafeMath contract.
  5655  var SafeMathMetaData = &bind.MetaData{
  5656  	ABI: "[]",
  5657  	Bin: "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029",
  5658  }
  5659  
  5660  // SafeMathABI is the input ABI used to generate the binding from.
  5661  // Deprecated: Use SafeMathMetaData.ABI instead.
  5662  var SafeMathABI = SafeMathMetaData.ABI
  5663  
  5664  // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  5665  const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582052c975835d8618888691b14d52ff822fc00b24a3637e28a17d824cf0361b62b90029`
  5666  
  5667  // SafeMathBin is the compiled bytecode used for deploying new contracts.
  5668  // Deprecated: Use SafeMathMetaData.Bin instead.
  5669  var SafeMathBin = SafeMathMetaData.Bin
  5670  
  5671  // DeploySafeMath deploys a new Klaytn contract, binding an instance of SafeMath to it.
  5672  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
  5673  	parsed, err := SafeMathMetaData.GetAbi()
  5674  	if err != nil {
  5675  		return common.Address{}, nil, nil, err
  5676  	}
  5677  	if parsed == nil {
  5678  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
  5679  	}
  5680  
  5681  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SafeMathBin), backend)
  5682  	if err != nil {
  5683  		return common.Address{}, nil, nil, err
  5684  	}
  5685  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  5686  }
  5687  
  5688  // SafeMath is an auto generated Go binding around a Klaytn contract.
  5689  type SafeMath struct {
  5690  	SafeMathCaller     // Read-only binding to the contract
  5691  	SafeMathTransactor // Write-only binding to the contract
  5692  	SafeMathFilterer   // Log filterer for contract events
  5693  }
  5694  
  5695  // SafeMathCaller is an auto generated read-only Go binding around a Klaytn contract.
  5696  type SafeMathCaller struct {
  5697  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5698  }
  5699  
  5700  // SafeMathTransactor is an auto generated write-only Go binding around a Klaytn contract.
  5701  type SafeMathTransactor struct {
  5702  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5703  }
  5704  
  5705  // SafeMathFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5706  type SafeMathFilterer struct {
  5707  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5708  }
  5709  
  5710  // SafeMathSession is an auto generated Go binding around a Klaytn contract,
  5711  // with pre-set call and transact options.
  5712  type SafeMathSession struct {
  5713  	Contract     *SafeMath         // Generic contract binding to set the session for
  5714  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  5715  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  5716  }
  5717  
  5718  // SafeMathCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5719  // with pre-set call options.
  5720  type SafeMathCallerSession struct {
  5721  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
  5722  	CallOpts bind.CallOpts   // Call options to use throughout this session
  5723  }
  5724  
  5725  // SafeMathTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5726  // with pre-set transact options.
  5727  type SafeMathTransactorSession struct {
  5728  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
  5729  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  5730  }
  5731  
  5732  // SafeMathRaw is an auto generated low-level Go binding around a Klaytn contract.
  5733  type SafeMathRaw struct {
  5734  	Contract *SafeMath // Generic contract binding to access the raw methods on
  5735  }
  5736  
  5737  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5738  type SafeMathCallerRaw struct {
  5739  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
  5740  }
  5741  
  5742  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5743  type SafeMathTransactorRaw struct {
  5744  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
  5745  }
  5746  
  5747  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
  5748  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
  5749  	contract, err := bindSafeMath(address, backend, backend, backend)
  5750  	if err != nil {
  5751  		return nil, err
  5752  	}
  5753  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
  5754  }
  5755  
  5756  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
  5757  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
  5758  	contract, err := bindSafeMath(address, caller, nil, nil)
  5759  	if err != nil {
  5760  		return nil, err
  5761  	}
  5762  	return &SafeMathCaller{contract: contract}, nil
  5763  }
  5764  
  5765  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
  5766  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
  5767  	contract, err := bindSafeMath(address, nil, transactor, nil)
  5768  	if err != nil {
  5769  		return nil, err
  5770  	}
  5771  	return &SafeMathTransactor{contract: contract}, nil
  5772  }
  5773  
  5774  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
  5775  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
  5776  	contract, err := bindSafeMath(address, nil, nil, filterer)
  5777  	if err != nil {
  5778  		return nil, err
  5779  	}
  5780  	return &SafeMathFilterer{contract: contract}, nil
  5781  }
  5782  
  5783  // bindSafeMath binds a generic wrapper to an already deployed contract.
  5784  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5785  	parsed, err := SafeMathMetaData.GetAbi()
  5786  	if err != nil {
  5787  		return nil, err
  5788  	}
  5789  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  5790  }
  5791  
  5792  // Call invokes the (constant) contract method with params as input values and
  5793  // sets the output to result. The result type might be a single field for simple
  5794  // returns, a slice of interfaces for anonymous returns and a struct for named
  5795  // returns.
  5796  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5797  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
  5798  }
  5799  
  5800  // Transfer initiates a plain transaction to move funds to the contract, calling
  5801  // its default method if one is available.
  5802  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5803  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
  5804  }
  5805  
  5806  // Transact invokes the (paid) contract method with params as input values.
  5807  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5808  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
  5809  }
  5810  
  5811  // Call invokes the (constant) contract method with params as input values and
  5812  // sets the output to result. The result type might be a single field for simple
  5813  // returns, a slice of interfaces for anonymous returns and a struct for named
  5814  // returns.
  5815  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  5816  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
  5817  }
  5818  
  5819  // Transfer initiates a plain transaction to move funds to the contract, calling
  5820  // its default method if one is available.
  5821  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5822  	return _SafeMath.Contract.contract.Transfer(opts)
  5823  }
  5824  
  5825  // Transact invokes the (paid) contract method with params as input values.
  5826  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5827  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
  5828  }
  5829  
  5830  // ServiceChainTokenMetaData contains all meta data concerning the ServiceChainToken contract.
  5831  var ServiceChainTokenMetaData = &bind.MetaData{
  5832  	ABI: "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"DECIMALS\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INITIAL_SUPPLY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestValueTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NAME\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"SYMBOL\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}]",
  5833  	Sigs: map[string]string{
  5834  		"2e0f2625": "DECIMALS()",
  5835  		"2ff2e9dc": "INITIAL_SUPPLY()",
  5836  		"a3f4df7e": "NAME()",
  5837  		"f76f8d78": "SYMBOL()",
  5838  		"983b2d56": "addMinter(address)",
  5839  		"dd62ed3e": "allowance(address,address)",
  5840  		"095ea7b3": "approve(address,uint256)",
  5841  		"70a08231": "balanceOf(address)",
  5842  		"e78cea92": "bridge()",
  5843  		"42966c68": "burn(uint256)",
  5844  		"79cc6790": "burnFrom(address,uint256)",
  5845  		"a457c2d7": "decreaseAllowance(address,uint256)",
  5846  		"39509351": "increaseAllowance(address,uint256)",
  5847  		"aa271e1a": "isMinter(address)",
  5848  		"8f32d59b": "isOwner()",
  5849  		"40c10f19": "mint(address,uint256)",
  5850  		"8da5cb5b": "owner()",
  5851  		"98650275": "renounceMinter()",
  5852  		"715018a6": "renounceOwnership()",
  5853  		"3dc3c9e1": "requestValueTransfer(uint256,address,uint256,bytes)",
  5854  		"8dd14802": "setBridge(address)",
  5855  		"18160ddd": "totalSupply()",
  5856  		"a9059cbb": "transfer(address,uint256)",
  5857  		"23b872dd": "transferFrom(address,address,uint256)",
  5858  		"f2fde38b": "transferOwnership(address)",
  5859  	},
  5860  	Bin: "0x60806040523480156200001157600080fd5b50604051602080620019c6833981018060405260208110156200003357600080fd5b5051806200004833620000cc602090811b901c565b600480546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620000a5816200011e60201b60201c565b50620000c5336b033b2e3c9fd0803ce800000062000247602090811b901c565b506200051c565b620000e78160036200036260201b620011f11790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6200012e6200040660201b60201c565b6200019a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620001b9816001600160a01b03166200041760201b6200104d1760201c565b6200022557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038216620002bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620002d9816002546200041d60201b62000dd51790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200030c91839062000dd56200041d821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6200037482826200049960201b60201c565b15620003e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6004546001600160a01b0316331490565b3b151590565b6000828201838110156200049257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006001600160a01b038216620004fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620019a46022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b611478806200052c6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e14610506578063e78cea9214610534578063f2fde38b1461053c578063f76f8d781461056257610173565b8063a457c2d714610488578063a9059cbb146104b4578063aa271e1a146104e057610173565b80638da5cb5b1461038b5780638dd14802146103af5780638f32d59b146103d5578063983b2d56146103dd5780639865027514610403578063a3f4df7e1461040b57610173565b80633dc3c9e1116101305780633dc3c9e11461025a57806340c10f19146102e857806342966c681461031457806370a0823114610331578063715018a61461035757806379cc67901461035f57610173565b8063095ea7b31461017857806318160ddd146101b857806323b872dd146101d25780632e0f2625146102085780632ff2e9dc14610226578063395093511461022e575b600080fd5b6101a46004803603604081101561018e57600080fd5b506001600160a01b03813516906020013561056a565b604080519115158252519081900360200190f35b6101c0610580565b60408051918252519081900360200190f35b6101a4600480360360608110156101e857600080fd5b506001600160a01b03813581169160208101359091169060400135610586565b6102106105dd565b6040805160ff9092168252519081900360200190f35b6101c06105e2565b6101a46004803603604081101561024457600080fd5b506001600160a01b0381351690602001356105f2565b6102e66004803603608081101561027057600080fd5b8135916001600160a01b0360208201351691604082013591908101906080810160608201356401000000008111156102a757600080fd5b8201836020820111156102b957600080fd5b803590602001918460018302840111640100000000831117156102db57600080fd5b50909250905061062e565b005b6101a4600480360360408110156102fe57600080fd5b506001600160a01b038135169060200135610751565b6102e66004803603602081101561032a57600080fd5b50356107a4565b6101c06004803603602081101561034757600080fd5b50356001600160a01b03166107b1565b6102e66107cc565b6102e66004803603604081101561037557600080fd5b506001600160a01b038135169060200135610872565b610393610880565b604080516001600160a01b039092168252519081900360200190f35b6102e6600480360360208110156103c557600080fd5b50356001600160a01b031661088f565b6101a4610973565b6102e6600480360360208110156103f357600080fd5b50356001600160a01b0316610984565b6102e66109d4565b6104136109df565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044d578181015183820152602001610435565b50505050905090810190601f16801561047a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a46004803603604081101561049e57600080fd5b506001600160a01b038135169060200135610a18565b6101a4600480360360408110156104ca57600080fd5b506001600160a01b038135169060200135610a54565b6101a4600480360360208110156104f657600080fd5b50356001600160a01b0316610a61565b6101c06004803603604081101561051c57600080fd5b506001600160a01b0381358116916020013516610a7a565b610393610aa5565b6102e66004803603602081101561055257600080fd5b50356001600160a01b0316610ab4565b610413610b19565b6000610577338484610b3b565b50600192915050565b60025490565b6000610593848484610c2d565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546105d39186916105ce908663ffffffff610d7516565b610b3b565b5060019392505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610dd516565b600554610653906001600160a01b031661064e878663ffffffff610dd516565b610a54565b61069157604051600160e51b62461bcd0281526004018080602001828103825260258152602001806114286025913960400191505060405180910390fd5b600554604051600160e01b63f1656e5302815233600482018181526001600160a01b038881166024850152604484018a90526064840188905260a06084850190815260a4850187905294169363f1656e539389928b928a928a928a92909160c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b505050505050505050565b600061075c33610a61565b61079a57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6105778383610e39565b6107ae3382610f2c565b50565b6001600160a01b031660009081526020819052604090205490565b6107d4610973565b6108285760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b61087c8282611008565b5050565b6004546001600160a01b031690565b610897610973565b6108eb5760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6108fd816001600160a01b031661104d565b6109515760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b61098d33610a61565b6109cb57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6107ae81611053565b6109dd3361109b565b565b6040518060400160405280601181526020017f53657276696365436861696e546f6b656e00000000000000000000000000000081525081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610d7516565b6000610577338484610c2d565b6000610a7460038363ffffffff6110e316565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031681565b610abc610973565b610b105760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6107ae8161114d565b604051806040016040528060038152602001600160ea1b6214d0d50281525081565b6001600160a01b038316610b8357604051600160e51b62461bcd0281526004018080602001828103825260248152602001806114046024913960400191505060405180910390fd5b6001600160a01b038216610bcb57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c7557604051600160e51b62461bcd0281526004018080602001828103825260258152602001806113df6025913960400191505060405180910390fd5b6001600160a01b038216610cbd57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806112e06023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ce6908263ffffffff610d7516565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610d1b908263ffffffff610dd516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610dcf5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610e325760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610e975760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610eaa908263ffffffff610dd516565b6002556001600160a01b038216600090815260208190526040902054610ed6908263ffffffff610dd516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038216610f7457604051600160e51b62461bcd0281526004018080602001828103825260218152602001806113be6021913960400191505060405180910390fd5b600254610f87908263ffffffff610d7516565b6002556001600160a01b038216600090815260208190526040902054610fb3908263ffffffff610d7516565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6110128282610f2c565b6001600160a01b03821660009081526001602090815260408083203380855292529091205461087c9184916105ce908563ffffffff610d7516565b3b151590565b61106460038263ffffffff6111f116565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6110ac60038263ffffffff61127516565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661112d57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061139c6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b03811661119557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806113036026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6111fb82826110e3565b156112505760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b61127f82826110e3565b6112bd57604051600160e51b62461bcd02815260040180806020018281038252602181526020018061137b6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573737265717565737456616c75655472616e736665723a207472616e73666572206661696c6564a165627a7a723058202e38a4147f4ac4c20a2215c319fa05c4bd78865723915d12ebc5ef7ae6c48c970029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373",
  5861  }
  5862  
  5863  // ServiceChainTokenABI is the input ABI used to generate the binding from.
  5864  // Deprecated: Use ServiceChainTokenMetaData.ABI instead.
  5865  var ServiceChainTokenABI = ServiceChainTokenMetaData.ABI
  5866  
  5867  // ServiceChainTokenBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  5868  const ServiceChainTokenBinRuntime = `608060405234801561001057600080fd5b50600436106101735760003560e01c80638da5cb5b116100de578063a457c2d711610097578063dd62ed3e11610071578063dd62ed3e14610506578063e78cea9214610534578063f2fde38b1461053c578063f76f8d781461056257610173565b8063a457c2d714610488578063a9059cbb146104b4578063aa271e1a146104e057610173565b80638da5cb5b1461038b5780638dd14802146103af5780638f32d59b146103d5578063983b2d56146103dd5780639865027514610403578063a3f4df7e1461040b57610173565b80633dc3c9e1116101305780633dc3c9e11461025a57806340c10f19146102e857806342966c681461031457806370a0823114610331578063715018a61461035757806379cc67901461035f57610173565b8063095ea7b31461017857806318160ddd146101b857806323b872dd146101d25780632e0f2625146102085780632ff2e9dc14610226578063395093511461022e575b600080fd5b6101a46004803603604081101561018e57600080fd5b506001600160a01b03813516906020013561056a565b604080519115158252519081900360200190f35b6101c0610580565b60408051918252519081900360200190f35b6101a4600480360360608110156101e857600080fd5b506001600160a01b03813581169160208101359091169060400135610586565b6102106105dd565b6040805160ff9092168252519081900360200190f35b6101c06105e2565b6101a46004803603604081101561024457600080fd5b506001600160a01b0381351690602001356105f2565b6102e66004803603608081101561027057600080fd5b8135916001600160a01b0360208201351691604082013591908101906080810160608201356401000000008111156102a757600080fd5b8201836020820111156102b957600080fd5b803590602001918460018302840111640100000000831117156102db57600080fd5b50909250905061062e565b005b6101a4600480360360408110156102fe57600080fd5b506001600160a01b038135169060200135610751565b6102e66004803603602081101561032a57600080fd5b50356107a4565b6101c06004803603602081101561034757600080fd5b50356001600160a01b03166107b1565b6102e66107cc565b6102e66004803603604081101561037557600080fd5b506001600160a01b038135169060200135610872565b610393610880565b604080516001600160a01b039092168252519081900360200190f35b6102e6600480360360208110156103c557600080fd5b50356001600160a01b031661088f565b6101a4610973565b6102e6600480360360208110156103f357600080fd5b50356001600160a01b0316610984565b6102e66109d4565b6104136109df565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561044d578181015183820152602001610435565b50505050905090810190601f16801561047a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a46004803603604081101561049e57600080fd5b506001600160a01b038135169060200135610a18565b6101a4600480360360408110156104ca57600080fd5b506001600160a01b038135169060200135610a54565b6101a4600480360360208110156104f657600080fd5b50356001600160a01b0316610a61565b6101c06004803603604081101561051c57600080fd5b506001600160a01b0381358116916020013516610a7a565b610393610aa5565b6102e66004803603602081101561055257600080fd5b50356001600160a01b0316610ab4565b610413610b19565b6000610577338484610b3b565b50600192915050565b60025490565b6000610593848484610c2d565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546105d39186916105ce908663ffffffff610d7516565b610b3b565b5060019392505050565b601281565b6b033b2e3c9fd0803ce800000081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610dd516565b600554610653906001600160a01b031661064e878663ffffffff610dd516565b610a54565b61069157604051600160e51b62461bcd0281526004018080602001828103825260258152602001806114286025913960400191505060405180910390fd5b600554604051600160e01b63f1656e5302815233600482018181526001600160a01b038881166024850152604484018a90526064840188905260a06084850190815260a4850187905294169363f1656e539389928b928a928a928a92909160c401848480828437600081840152601f19601f820116905080830192505050975050505050505050600060405180830381600087803b15801561073257600080fd5b505af1158015610746573d6000803e3d6000fd5b505050505050505050565b600061075c33610a61565b61079a57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6105778383610e39565b6107ae3382610f2c565b50565b6001600160a01b031660009081526020819052604090205490565b6107d4610973565b6108285760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b61087c8282611008565b5050565b6004546001600160a01b031690565b610897610973565b6108eb5760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6108fd816001600160a01b031661104d565b6109515760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b61098d33610a61565b6109cb57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061134b6030913960400191505060405180910390fd5b6107ae81611053565b6109dd3361109b565b565b6040518060400160405280601181526020017f53657276696365436861696e546f6b656e00000000000000000000000000000081525081565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105779185906105ce908663ffffffff610d7516565b6000610577338484610c2d565b6000610a7460038363ffffffff6110e316565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b031681565b610abc610973565b610b105760408051600160e51b62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6107ae8161114d565b604051806040016040528060038152602001600160ea1b6214d0d50281525081565b6001600160a01b038316610b8357604051600160e51b62461bcd0281526004018080602001828103825260248152602001806114046024913960400191505060405180910390fd5b6001600160a01b038216610bcb57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806113296022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610c7557604051600160e51b62461bcd0281526004018080602001828103825260258152602001806113df6025913960400191505060405180910390fd5b6001600160a01b038216610cbd57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806112e06023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ce6908263ffffffff610d7516565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610d1b908263ffffffff610dd516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610dcf5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610e325760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610e975760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610eaa908263ffffffff610dd516565b6002556001600160a01b038216600090815260208190526040902054610ed6908263ffffffff610dd516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038216610f7457604051600160e51b62461bcd0281526004018080602001828103825260218152602001806113be6021913960400191505060405180910390fd5b600254610f87908263ffffffff610d7516565b6002556001600160a01b038216600090815260208190526040902054610fb3908263ffffffff610d7516565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b6110128282610f2c565b6001600160a01b03821660009081526001602090815260408083203380855292529091205461087c9184916105ce908563ffffffff610d7516565b3b151590565b61106460038263ffffffff6111f116565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6110ac60038263ffffffff61127516565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661112d57604051600160e51b62461bcd02815260040180806020018281038252602281526020018061139c6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b03811661119557604051600160e51b62461bcd0281526004018080602001828103825260268152602001806113036026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6111fb82826110e3565b156112505760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b61127f82826110e3565b6112bd57604051600160e51b62461bcd02815260040180806020018281038252602181526020018061137b6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573737265717565737456616c75655472616e736665723a207472616e73666572206661696c6564a165627a7a723058202e38a4147f4ac4c20a2215c319fa05c4bd78865723915d12ebc5ef7ae6c48c970029`
  5869  
  5870  // ServiceChainTokenFuncSigs maps the 4-byte function signature to its string representation.
  5871  // Deprecated: Use ServiceChainTokenMetaData.Sigs instead.
  5872  var ServiceChainTokenFuncSigs = ServiceChainTokenMetaData.Sigs
  5873  
  5874  // ServiceChainTokenBin is the compiled bytecode used for deploying new contracts.
  5875  // Deprecated: Use ServiceChainTokenMetaData.Bin instead.
  5876  var ServiceChainTokenBin = ServiceChainTokenMetaData.Bin
  5877  
  5878  // DeployServiceChainToken deploys a new Klaytn contract, binding an instance of ServiceChainToken to it.
  5879  func DeployServiceChainToken(auth *bind.TransactOpts, backend bind.ContractBackend, _bridge common.Address) (common.Address, *types.Transaction, *ServiceChainToken, error) {
  5880  	parsed, err := ServiceChainTokenMetaData.GetAbi()
  5881  	if err != nil {
  5882  		return common.Address{}, nil, nil, err
  5883  	}
  5884  	if parsed == nil {
  5885  		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
  5886  	}
  5887  
  5888  	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ServiceChainTokenBin), backend, _bridge)
  5889  	if err != nil {
  5890  		return common.Address{}, nil, nil, err
  5891  	}
  5892  	return address, tx, &ServiceChainToken{ServiceChainTokenCaller: ServiceChainTokenCaller{contract: contract}, ServiceChainTokenTransactor: ServiceChainTokenTransactor{contract: contract}, ServiceChainTokenFilterer: ServiceChainTokenFilterer{contract: contract}}, nil
  5893  }
  5894  
  5895  // ServiceChainToken is an auto generated Go binding around a Klaytn contract.
  5896  type ServiceChainToken struct {
  5897  	ServiceChainTokenCaller     // Read-only binding to the contract
  5898  	ServiceChainTokenTransactor // Write-only binding to the contract
  5899  	ServiceChainTokenFilterer   // Log filterer for contract events
  5900  }
  5901  
  5902  // ServiceChainTokenCaller is an auto generated read-only Go binding around a Klaytn contract.
  5903  type ServiceChainTokenCaller struct {
  5904  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5905  }
  5906  
  5907  // ServiceChainTokenTransactor is an auto generated write-only Go binding around a Klaytn contract.
  5908  type ServiceChainTokenTransactor struct {
  5909  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5910  }
  5911  
  5912  // ServiceChainTokenFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5913  type ServiceChainTokenFilterer struct {
  5914  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5915  }
  5916  
  5917  // ServiceChainTokenSession is an auto generated Go binding around a Klaytn contract,
  5918  // with pre-set call and transact options.
  5919  type ServiceChainTokenSession struct {
  5920  	Contract     *ServiceChainToken // Generic contract binding to set the session for
  5921  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  5922  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  5923  }
  5924  
  5925  // ServiceChainTokenCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5926  // with pre-set call options.
  5927  type ServiceChainTokenCallerSession struct {
  5928  	Contract *ServiceChainTokenCaller // Generic contract caller binding to set the session for
  5929  	CallOpts bind.CallOpts            // Call options to use throughout this session
  5930  }
  5931  
  5932  // ServiceChainTokenTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5933  // with pre-set transact options.
  5934  type ServiceChainTokenTransactorSession struct {
  5935  	Contract     *ServiceChainTokenTransactor // Generic contract transactor binding to set the session for
  5936  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  5937  }
  5938  
  5939  // ServiceChainTokenRaw is an auto generated low-level Go binding around a Klaytn contract.
  5940  type ServiceChainTokenRaw struct {
  5941  	Contract *ServiceChainToken // Generic contract binding to access the raw methods on
  5942  }
  5943  
  5944  // ServiceChainTokenCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5945  type ServiceChainTokenCallerRaw struct {
  5946  	Contract *ServiceChainTokenCaller // Generic read-only contract binding to access the raw methods on
  5947  }
  5948  
  5949  // ServiceChainTokenTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5950  type ServiceChainTokenTransactorRaw struct {
  5951  	Contract *ServiceChainTokenTransactor // Generic write-only contract binding to access the raw methods on
  5952  }
  5953  
  5954  // NewServiceChainToken creates a new instance of ServiceChainToken, bound to a specific deployed contract.
  5955  func NewServiceChainToken(address common.Address, backend bind.ContractBackend) (*ServiceChainToken, error) {
  5956  	contract, err := bindServiceChainToken(address, backend, backend, backend)
  5957  	if err != nil {
  5958  		return nil, err
  5959  	}
  5960  	return &ServiceChainToken{ServiceChainTokenCaller: ServiceChainTokenCaller{contract: contract}, ServiceChainTokenTransactor: ServiceChainTokenTransactor{contract: contract}, ServiceChainTokenFilterer: ServiceChainTokenFilterer{contract: contract}}, nil
  5961  }
  5962  
  5963  // NewServiceChainTokenCaller creates a new read-only instance of ServiceChainToken, bound to a specific deployed contract.
  5964  func NewServiceChainTokenCaller(address common.Address, caller bind.ContractCaller) (*ServiceChainTokenCaller, error) {
  5965  	contract, err := bindServiceChainToken(address, caller, nil, nil)
  5966  	if err != nil {
  5967  		return nil, err
  5968  	}
  5969  	return &ServiceChainTokenCaller{contract: contract}, nil
  5970  }
  5971  
  5972  // NewServiceChainTokenTransactor creates a new write-only instance of ServiceChainToken, bound to a specific deployed contract.
  5973  func NewServiceChainTokenTransactor(address common.Address, transactor bind.ContractTransactor) (*ServiceChainTokenTransactor, error) {
  5974  	contract, err := bindServiceChainToken(address, nil, transactor, nil)
  5975  	if err != nil {
  5976  		return nil, err
  5977  	}
  5978  	return &ServiceChainTokenTransactor{contract: contract}, nil
  5979  }
  5980  
  5981  // NewServiceChainTokenFilterer creates a new log filterer instance of ServiceChainToken, bound to a specific deployed contract.
  5982  func NewServiceChainTokenFilterer(address common.Address, filterer bind.ContractFilterer) (*ServiceChainTokenFilterer, error) {
  5983  	contract, err := bindServiceChainToken(address, nil, nil, filterer)
  5984  	if err != nil {
  5985  		return nil, err
  5986  	}
  5987  	return &ServiceChainTokenFilterer{contract: contract}, nil
  5988  }
  5989  
  5990  // bindServiceChainToken binds a generic wrapper to an already deployed contract.
  5991  func bindServiceChainToken(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5992  	parsed, err := ServiceChainTokenMetaData.GetAbi()
  5993  	if err != nil {
  5994  		return nil, err
  5995  	}
  5996  	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
  5997  }
  5998  
  5999  // Call invokes the (constant) contract method with params as input values and
  6000  // sets the output to result. The result type might be a single field for simple
  6001  // returns, a slice of interfaces for anonymous returns and a struct for named
  6002  // returns.
  6003  func (_ServiceChainToken *ServiceChainTokenRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6004  	return _ServiceChainToken.Contract.ServiceChainTokenCaller.contract.Call(opts, result, method, params...)
  6005  }
  6006  
  6007  // Transfer initiates a plain transaction to move funds to the contract, calling
  6008  // its default method if one is available.
  6009  func (_ServiceChainToken *ServiceChainTokenRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6010  	return _ServiceChainToken.Contract.ServiceChainTokenTransactor.contract.Transfer(opts)
  6011  }
  6012  
  6013  // Transact invokes the (paid) contract method with params as input values.
  6014  func (_ServiceChainToken *ServiceChainTokenRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6015  	return _ServiceChainToken.Contract.ServiceChainTokenTransactor.contract.Transact(opts, method, params...)
  6016  }
  6017  
  6018  // Call invokes the (constant) contract method with params as input values and
  6019  // sets the output to result. The result type might be a single field for simple
  6020  // returns, a slice of interfaces for anonymous returns and a struct for named
  6021  // returns.
  6022  func (_ServiceChainToken *ServiceChainTokenCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
  6023  	return _ServiceChainToken.Contract.contract.Call(opts, result, method, params...)
  6024  }
  6025  
  6026  // Transfer initiates a plain transaction to move funds to the contract, calling
  6027  // its default method if one is available.
  6028  func (_ServiceChainToken *ServiceChainTokenTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6029  	return _ServiceChainToken.Contract.contract.Transfer(opts)
  6030  }
  6031  
  6032  // Transact invokes the (paid) contract method with params as input values.
  6033  func (_ServiceChainToken *ServiceChainTokenTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6034  	return _ServiceChainToken.Contract.contract.Transact(opts, method, params...)
  6035  }
  6036  
  6037  // DECIMALS is a free data retrieval call binding the contract method 0x2e0f2625.
  6038  //
  6039  // Solidity: function DECIMALS() view returns(uint8)
  6040  func (_ServiceChainToken *ServiceChainTokenCaller) DECIMALS(opts *bind.CallOpts) (uint8, error) {
  6041  	var out []interface{}
  6042  	err := _ServiceChainToken.contract.Call(opts, &out, "DECIMALS")
  6043  
  6044  	if err != nil {
  6045  		return *new(uint8), err
  6046  	}
  6047  
  6048  	out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8)
  6049  
  6050  	return out0, err
  6051  
  6052  }
  6053  
  6054  // DECIMALS is a free data retrieval call binding the contract method 0x2e0f2625.
  6055  //
  6056  // Solidity: function DECIMALS() view returns(uint8)
  6057  func (_ServiceChainToken *ServiceChainTokenSession) DECIMALS() (uint8, error) {
  6058  	return _ServiceChainToken.Contract.DECIMALS(&_ServiceChainToken.CallOpts)
  6059  }
  6060  
  6061  // DECIMALS is a free data retrieval call binding the contract method 0x2e0f2625.
  6062  //
  6063  // Solidity: function DECIMALS() view returns(uint8)
  6064  func (_ServiceChainToken *ServiceChainTokenCallerSession) DECIMALS() (uint8, error) {
  6065  	return _ServiceChainToken.Contract.DECIMALS(&_ServiceChainToken.CallOpts)
  6066  }
  6067  
  6068  // INITIALSUPPLY is a free data retrieval call binding the contract method 0x2ff2e9dc.
  6069  //
  6070  // Solidity: function INITIAL_SUPPLY() view returns(uint256)
  6071  func (_ServiceChainToken *ServiceChainTokenCaller) INITIALSUPPLY(opts *bind.CallOpts) (*big.Int, error) {
  6072  	var out []interface{}
  6073  	err := _ServiceChainToken.contract.Call(opts, &out, "INITIAL_SUPPLY")
  6074  
  6075  	if err != nil {
  6076  		return *new(*big.Int), err
  6077  	}
  6078  
  6079  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  6080  
  6081  	return out0, err
  6082  
  6083  }
  6084  
  6085  // INITIALSUPPLY is a free data retrieval call binding the contract method 0x2ff2e9dc.
  6086  //
  6087  // Solidity: function INITIAL_SUPPLY() view returns(uint256)
  6088  func (_ServiceChainToken *ServiceChainTokenSession) INITIALSUPPLY() (*big.Int, error) {
  6089  	return _ServiceChainToken.Contract.INITIALSUPPLY(&_ServiceChainToken.CallOpts)
  6090  }
  6091  
  6092  // INITIALSUPPLY is a free data retrieval call binding the contract method 0x2ff2e9dc.
  6093  //
  6094  // Solidity: function INITIAL_SUPPLY() view returns(uint256)
  6095  func (_ServiceChainToken *ServiceChainTokenCallerSession) INITIALSUPPLY() (*big.Int, error) {
  6096  	return _ServiceChainToken.Contract.INITIALSUPPLY(&_ServiceChainToken.CallOpts)
  6097  }
  6098  
  6099  // NAME is a free data retrieval call binding the contract method 0xa3f4df7e.
  6100  //
  6101  // Solidity: function NAME() view returns(string)
  6102  func (_ServiceChainToken *ServiceChainTokenCaller) NAME(opts *bind.CallOpts) (string, error) {
  6103  	var out []interface{}
  6104  	err := _ServiceChainToken.contract.Call(opts, &out, "NAME")
  6105  
  6106  	if err != nil {
  6107  		return *new(string), err
  6108  	}
  6109  
  6110  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  6111  
  6112  	return out0, err
  6113  
  6114  }
  6115  
  6116  // NAME is a free data retrieval call binding the contract method 0xa3f4df7e.
  6117  //
  6118  // Solidity: function NAME() view returns(string)
  6119  func (_ServiceChainToken *ServiceChainTokenSession) NAME() (string, error) {
  6120  	return _ServiceChainToken.Contract.NAME(&_ServiceChainToken.CallOpts)
  6121  }
  6122  
  6123  // NAME is a free data retrieval call binding the contract method 0xa3f4df7e.
  6124  //
  6125  // Solidity: function NAME() view returns(string)
  6126  func (_ServiceChainToken *ServiceChainTokenCallerSession) NAME() (string, error) {
  6127  	return _ServiceChainToken.Contract.NAME(&_ServiceChainToken.CallOpts)
  6128  }
  6129  
  6130  // SYMBOL is a free data retrieval call binding the contract method 0xf76f8d78.
  6131  //
  6132  // Solidity: function SYMBOL() view returns(string)
  6133  func (_ServiceChainToken *ServiceChainTokenCaller) SYMBOL(opts *bind.CallOpts) (string, error) {
  6134  	var out []interface{}
  6135  	err := _ServiceChainToken.contract.Call(opts, &out, "SYMBOL")
  6136  
  6137  	if err != nil {
  6138  		return *new(string), err
  6139  	}
  6140  
  6141  	out0 := *abi.ConvertType(out[0], new(string)).(*string)
  6142  
  6143  	return out0, err
  6144  
  6145  }
  6146  
  6147  // SYMBOL is a free data retrieval call binding the contract method 0xf76f8d78.
  6148  //
  6149  // Solidity: function SYMBOL() view returns(string)
  6150  func (_ServiceChainToken *ServiceChainTokenSession) SYMBOL() (string, error) {
  6151  	return _ServiceChainToken.Contract.SYMBOL(&_ServiceChainToken.CallOpts)
  6152  }
  6153  
  6154  // SYMBOL is a free data retrieval call binding the contract method 0xf76f8d78.
  6155  //
  6156  // Solidity: function SYMBOL() view returns(string)
  6157  func (_ServiceChainToken *ServiceChainTokenCallerSession) SYMBOL() (string, error) {
  6158  	return _ServiceChainToken.Contract.SYMBOL(&_ServiceChainToken.CallOpts)
  6159  }
  6160  
  6161  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  6162  //
  6163  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  6164  func (_ServiceChainToken *ServiceChainTokenCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
  6165  	var out []interface{}
  6166  	err := _ServiceChainToken.contract.Call(opts, &out, "allowance", owner, spender)
  6167  
  6168  	if err != nil {
  6169  		return *new(*big.Int), err
  6170  	}
  6171  
  6172  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  6173  
  6174  	return out0, err
  6175  
  6176  }
  6177  
  6178  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  6179  //
  6180  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  6181  func (_ServiceChainToken *ServiceChainTokenSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  6182  	return _ServiceChainToken.Contract.Allowance(&_ServiceChainToken.CallOpts, owner, spender)
  6183  }
  6184  
  6185  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
  6186  //
  6187  // Solidity: function allowance(address owner, address spender) view returns(uint256)
  6188  func (_ServiceChainToken *ServiceChainTokenCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
  6189  	return _ServiceChainToken.Contract.Allowance(&_ServiceChainToken.CallOpts, owner, spender)
  6190  }
  6191  
  6192  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6193  //
  6194  // Solidity: function balanceOf(address account) view returns(uint256)
  6195  func (_ServiceChainToken *ServiceChainTokenCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
  6196  	var out []interface{}
  6197  	err := _ServiceChainToken.contract.Call(opts, &out, "balanceOf", account)
  6198  
  6199  	if err != nil {
  6200  		return *new(*big.Int), err
  6201  	}
  6202  
  6203  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  6204  
  6205  	return out0, err
  6206  
  6207  }
  6208  
  6209  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6210  //
  6211  // Solidity: function balanceOf(address account) view returns(uint256)
  6212  func (_ServiceChainToken *ServiceChainTokenSession) BalanceOf(account common.Address) (*big.Int, error) {
  6213  	return _ServiceChainToken.Contract.BalanceOf(&_ServiceChainToken.CallOpts, account)
  6214  }
  6215  
  6216  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6217  //
  6218  // Solidity: function balanceOf(address account) view returns(uint256)
  6219  func (_ServiceChainToken *ServiceChainTokenCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
  6220  	return _ServiceChainToken.Contract.BalanceOf(&_ServiceChainToken.CallOpts, account)
  6221  }
  6222  
  6223  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  6224  //
  6225  // Solidity: function bridge() view returns(address)
  6226  func (_ServiceChainToken *ServiceChainTokenCaller) Bridge(opts *bind.CallOpts) (common.Address, error) {
  6227  	var out []interface{}
  6228  	err := _ServiceChainToken.contract.Call(opts, &out, "bridge")
  6229  
  6230  	if err != nil {
  6231  		return *new(common.Address), err
  6232  	}
  6233  
  6234  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  6235  
  6236  	return out0, err
  6237  
  6238  }
  6239  
  6240  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  6241  //
  6242  // Solidity: function bridge() view returns(address)
  6243  func (_ServiceChainToken *ServiceChainTokenSession) Bridge() (common.Address, error) {
  6244  	return _ServiceChainToken.Contract.Bridge(&_ServiceChainToken.CallOpts)
  6245  }
  6246  
  6247  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  6248  //
  6249  // Solidity: function bridge() view returns(address)
  6250  func (_ServiceChainToken *ServiceChainTokenCallerSession) Bridge() (common.Address, error) {
  6251  	return _ServiceChainToken.Contract.Bridge(&_ServiceChainToken.CallOpts)
  6252  }
  6253  
  6254  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6255  //
  6256  // Solidity: function isMinter(address account) view returns(bool)
  6257  func (_ServiceChainToken *ServiceChainTokenCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  6258  	var out []interface{}
  6259  	err := _ServiceChainToken.contract.Call(opts, &out, "isMinter", account)
  6260  
  6261  	if err != nil {
  6262  		return *new(bool), err
  6263  	}
  6264  
  6265  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  6266  
  6267  	return out0, err
  6268  
  6269  }
  6270  
  6271  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6272  //
  6273  // Solidity: function isMinter(address account) view returns(bool)
  6274  func (_ServiceChainToken *ServiceChainTokenSession) IsMinter(account common.Address) (bool, error) {
  6275  	return _ServiceChainToken.Contract.IsMinter(&_ServiceChainToken.CallOpts, account)
  6276  }
  6277  
  6278  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  6279  //
  6280  // Solidity: function isMinter(address account) view returns(bool)
  6281  func (_ServiceChainToken *ServiceChainTokenCallerSession) IsMinter(account common.Address) (bool, error) {
  6282  	return _ServiceChainToken.Contract.IsMinter(&_ServiceChainToken.CallOpts, account)
  6283  }
  6284  
  6285  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6286  //
  6287  // Solidity: function isOwner() view returns(bool)
  6288  func (_ServiceChainToken *ServiceChainTokenCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  6289  	var out []interface{}
  6290  	err := _ServiceChainToken.contract.Call(opts, &out, "isOwner")
  6291  
  6292  	if err != nil {
  6293  		return *new(bool), err
  6294  	}
  6295  
  6296  	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)
  6297  
  6298  	return out0, err
  6299  
  6300  }
  6301  
  6302  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6303  //
  6304  // Solidity: function isOwner() view returns(bool)
  6305  func (_ServiceChainToken *ServiceChainTokenSession) IsOwner() (bool, error) {
  6306  	return _ServiceChainToken.Contract.IsOwner(&_ServiceChainToken.CallOpts)
  6307  }
  6308  
  6309  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6310  //
  6311  // Solidity: function isOwner() view returns(bool)
  6312  func (_ServiceChainToken *ServiceChainTokenCallerSession) IsOwner() (bool, error) {
  6313  	return _ServiceChainToken.Contract.IsOwner(&_ServiceChainToken.CallOpts)
  6314  }
  6315  
  6316  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6317  //
  6318  // Solidity: function owner() view returns(address)
  6319  func (_ServiceChainToken *ServiceChainTokenCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  6320  	var out []interface{}
  6321  	err := _ServiceChainToken.contract.Call(opts, &out, "owner")
  6322  
  6323  	if err != nil {
  6324  		return *new(common.Address), err
  6325  	}
  6326  
  6327  	out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address)
  6328  
  6329  	return out0, err
  6330  
  6331  }
  6332  
  6333  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6334  //
  6335  // Solidity: function owner() view returns(address)
  6336  func (_ServiceChainToken *ServiceChainTokenSession) Owner() (common.Address, error) {
  6337  	return _ServiceChainToken.Contract.Owner(&_ServiceChainToken.CallOpts)
  6338  }
  6339  
  6340  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6341  //
  6342  // Solidity: function owner() view returns(address)
  6343  func (_ServiceChainToken *ServiceChainTokenCallerSession) Owner() (common.Address, error) {
  6344  	return _ServiceChainToken.Contract.Owner(&_ServiceChainToken.CallOpts)
  6345  }
  6346  
  6347  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  6348  //
  6349  // Solidity: function totalSupply() view returns(uint256)
  6350  func (_ServiceChainToken *ServiceChainTokenCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  6351  	var out []interface{}
  6352  	err := _ServiceChainToken.contract.Call(opts, &out, "totalSupply")
  6353  
  6354  	if err != nil {
  6355  		return *new(*big.Int), err
  6356  	}
  6357  
  6358  	out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int)
  6359  
  6360  	return out0, err
  6361  
  6362  }
  6363  
  6364  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  6365  //
  6366  // Solidity: function totalSupply() view returns(uint256)
  6367  func (_ServiceChainToken *ServiceChainTokenSession) TotalSupply() (*big.Int, error) {
  6368  	return _ServiceChainToken.Contract.TotalSupply(&_ServiceChainToken.CallOpts)
  6369  }
  6370  
  6371  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  6372  //
  6373  // Solidity: function totalSupply() view returns(uint256)
  6374  func (_ServiceChainToken *ServiceChainTokenCallerSession) TotalSupply() (*big.Int, error) {
  6375  	return _ServiceChainToken.Contract.TotalSupply(&_ServiceChainToken.CallOpts)
  6376  }
  6377  
  6378  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6379  //
  6380  // Solidity: function addMinter(address account) returns()
  6381  func (_ServiceChainToken *ServiceChainTokenTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  6382  	return _ServiceChainToken.contract.Transact(opts, "addMinter", account)
  6383  }
  6384  
  6385  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6386  //
  6387  // Solidity: function addMinter(address account) returns()
  6388  func (_ServiceChainToken *ServiceChainTokenSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6389  	return _ServiceChainToken.Contract.AddMinter(&_ServiceChainToken.TransactOpts, account)
  6390  }
  6391  
  6392  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  6393  //
  6394  // Solidity: function addMinter(address account) returns()
  6395  func (_ServiceChainToken *ServiceChainTokenTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  6396  	return _ServiceChainToken.Contract.AddMinter(&_ServiceChainToken.TransactOpts, account)
  6397  }
  6398  
  6399  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6400  //
  6401  // Solidity: function approve(address spender, uint256 value) returns(bool)
  6402  func (_ServiceChainToken *ServiceChainTokenTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
  6403  	return _ServiceChainToken.contract.Transact(opts, "approve", spender, value)
  6404  }
  6405  
  6406  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6407  //
  6408  // Solidity: function approve(address spender, uint256 value) returns(bool)
  6409  func (_ServiceChainToken *ServiceChainTokenSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  6410  	return _ServiceChainToken.Contract.Approve(&_ServiceChainToken.TransactOpts, spender, value)
  6411  }
  6412  
  6413  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  6414  //
  6415  // Solidity: function approve(address spender, uint256 value) returns(bool)
  6416  func (_ServiceChainToken *ServiceChainTokenTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
  6417  	return _ServiceChainToken.Contract.Approve(&_ServiceChainToken.TransactOpts, spender, value)
  6418  }
  6419  
  6420  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  6421  //
  6422  // Solidity: function burn(uint256 amount) returns()
  6423  func (_ServiceChainToken *ServiceChainTokenTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
  6424  	return _ServiceChainToken.contract.Transact(opts, "burn", amount)
  6425  }
  6426  
  6427  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  6428  //
  6429  // Solidity: function burn(uint256 amount) returns()
  6430  func (_ServiceChainToken *ServiceChainTokenSession) Burn(amount *big.Int) (*types.Transaction, error) {
  6431  	return _ServiceChainToken.Contract.Burn(&_ServiceChainToken.TransactOpts, amount)
  6432  }
  6433  
  6434  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  6435  //
  6436  // Solidity: function burn(uint256 amount) returns()
  6437  func (_ServiceChainToken *ServiceChainTokenTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
  6438  	return _ServiceChainToken.Contract.Burn(&_ServiceChainToken.TransactOpts, amount)
  6439  }
  6440  
  6441  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  6442  //
  6443  // Solidity: function burnFrom(address account, uint256 amount) returns()
  6444  func (_ServiceChainToken *ServiceChainTokenTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
  6445  	return _ServiceChainToken.contract.Transact(opts, "burnFrom", account, amount)
  6446  }
  6447  
  6448  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  6449  //
  6450  // Solidity: function burnFrom(address account, uint256 amount) returns()
  6451  func (_ServiceChainToken *ServiceChainTokenSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
  6452  	return _ServiceChainToken.Contract.BurnFrom(&_ServiceChainToken.TransactOpts, account, amount)
  6453  }
  6454  
  6455  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
  6456  //
  6457  // Solidity: function burnFrom(address account, uint256 amount) returns()
  6458  func (_ServiceChainToken *ServiceChainTokenTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
  6459  	return _ServiceChainToken.Contract.BurnFrom(&_ServiceChainToken.TransactOpts, account, amount)
  6460  }
  6461  
  6462  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  6463  //
  6464  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  6465  func (_ServiceChainToken *ServiceChainTokenTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  6466  	return _ServiceChainToken.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
  6467  }
  6468  
  6469  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  6470  //
  6471  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  6472  func (_ServiceChainToken *ServiceChainTokenSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  6473  	return _ServiceChainToken.Contract.DecreaseAllowance(&_ServiceChainToken.TransactOpts, spender, subtractedValue)
  6474  }
  6475  
  6476  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
  6477  //
  6478  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
  6479  func (_ServiceChainToken *ServiceChainTokenTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
  6480  	return _ServiceChainToken.Contract.DecreaseAllowance(&_ServiceChainToken.TransactOpts, spender, subtractedValue)
  6481  }
  6482  
  6483  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  6484  //
  6485  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  6486  func (_ServiceChainToken *ServiceChainTokenTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  6487  	return _ServiceChainToken.contract.Transact(opts, "increaseAllowance", spender, addedValue)
  6488  }
  6489  
  6490  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  6491  //
  6492  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  6493  func (_ServiceChainToken *ServiceChainTokenSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  6494  	return _ServiceChainToken.Contract.IncreaseAllowance(&_ServiceChainToken.TransactOpts, spender, addedValue)
  6495  }
  6496  
  6497  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
  6498  //
  6499  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
  6500  func (_ServiceChainToken *ServiceChainTokenTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
  6501  	return _ServiceChainToken.Contract.IncreaseAllowance(&_ServiceChainToken.TransactOpts, spender, addedValue)
  6502  }
  6503  
  6504  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  6505  //
  6506  // Solidity: function mint(address account, uint256 amount) returns(bool)
  6507  func (_ServiceChainToken *ServiceChainTokenTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
  6508  	return _ServiceChainToken.contract.Transact(opts, "mint", account, amount)
  6509  }
  6510  
  6511  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  6512  //
  6513  // Solidity: function mint(address account, uint256 amount) returns(bool)
  6514  func (_ServiceChainToken *ServiceChainTokenSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
  6515  	return _ServiceChainToken.Contract.Mint(&_ServiceChainToken.TransactOpts, account, amount)
  6516  }
  6517  
  6518  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
  6519  //
  6520  // Solidity: function mint(address account, uint256 amount) returns(bool)
  6521  func (_ServiceChainToken *ServiceChainTokenTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
  6522  	return _ServiceChainToken.Contract.Mint(&_ServiceChainToken.TransactOpts, account, amount)
  6523  }
  6524  
  6525  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6526  //
  6527  // Solidity: function renounceMinter() returns()
  6528  func (_ServiceChainToken *ServiceChainTokenTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  6529  	return _ServiceChainToken.contract.Transact(opts, "renounceMinter")
  6530  }
  6531  
  6532  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6533  //
  6534  // Solidity: function renounceMinter() returns()
  6535  func (_ServiceChainToken *ServiceChainTokenSession) RenounceMinter() (*types.Transaction, error) {
  6536  	return _ServiceChainToken.Contract.RenounceMinter(&_ServiceChainToken.TransactOpts)
  6537  }
  6538  
  6539  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  6540  //
  6541  // Solidity: function renounceMinter() returns()
  6542  func (_ServiceChainToken *ServiceChainTokenTransactorSession) RenounceMinter() (*types.Transaction, error) {
  6543  	return _ServiceChainToken.Contract.RenounceMinter(&_ServiceChainToken.TransactOpts)
  6544  }
  6545  
  6546  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6547  //
  6548  // Solidity: function renounceOwnership() returns()
  6549  func (_ServiceChainToken *ServiceChainTokenTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  6550  	return _ServiceChainToken.contract.Transact(opts, "renounceOwnership")
  6551  }
  6552  
  6553  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6554  //
  6555  // Solidity: function renounceOwnership() returns()
  6556  func (_ServiceChainToken *ServiceChainTokenSession) RenounceOwnership() (*types.Transaction, error) {
  6557  	return _ServiceChainToken.Contract.RenounceOwnership(&_ServiceChainToken.TransactOpts)
  6558  }
  6559  
  6560  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  6561  //
  6562  // Solidity: function renounceOwnership() returns()
  6563  func (_ServiceChainToken *ServiceChainTokenTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  6564  	return _ServiceChainToken.Contract.RenounceOwnership(&_ServiceChainToken.TransactOpts)
  6565  }
  6566  
  6567  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3dc3c9e1.
  6568  //
  6569  // Solidity: function requestValueTransfer(uint256 _amount, address _to, uint256 _feeLimit, bytes _extraData) returns()
  6570  func (_ServiceChainToken *ServiceChainTokenTransactor) RequestValueTransfer(opts *bind.TransactOpts, _amount *big.Int, _to common.Address, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  6571  	return _ServiceChainToken.contract.Transact(opts, "requestValueTransfer", _amount, _to, _feeLimit, _extraData)
  6572  }
  6573  
  6574  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3dc3c9e1.
  6575  //
  6576  // Solidity: function requestValueTransfer(uint256 _amount, address _to, uint256 _feeLimit, bytes _extraData) returns()
  6577  func (_ServiceChainToken *ServiceChainTokenSession) RequestValueTransfer(_amount *big.Int, _to common.Address, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  6578  	return _ServiceChainToken.Contract.RequestValueTransfer(&_ServiceChainToken.TransactOpts, _amount, _to, _feeLimit, _extraData)
  6579  }
  6580  
  6581  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3dc3c9e1.
  6582  //
  6583  // Solidity: function requestValueTransfer(uint256 _amount, address _to, uint256 _feeLimit, bytes _extraData) returns()
  6584  func (_ServiceChainToken *ServiceChainTokenTransactorSession) RequestValueTransfer(_amount *big.Int, _to common.Address, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  6585  	return _ServiceChainToken.Contract.RequestValueTransfer(&_ServiceChainToken.TransactOpts, _amount, _to, _feeLimit, _extraData)
  6586  }
  6587  
  6588  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  6589  //
  6590  // Solidity: function setBridge(address _bridge) returns()
  6591  func (_ServiceChainToken *ServiceChainTokenTransactor) SetBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
  6592  	return _ServiceChainToken.contract.Transact(opts, "setBridge", _bridge)
  6593  }
  6594  
  6595  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  6596  //
  6597  // Solidity: function setBridge(address _bridge) returns()
  6598  func (_ServiceChainToken *ServiceChainTokenSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  6599  	return _ServiceChainToken.Contract.SetBridge(&_ServiceChainToken.TransactOpts, _bridge)
  6600  }
  6601  
  6602  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  6603  //
  6604  // Solidity: function setBridge(address _bridge) returns()
  6605  func (_ServiceChainToken *ServiceChainTokenTransactorSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  6606  	return _ServiceChainToken.Contract.SetBridge(&_ServiceChainToken.TransactOpts, _bridge)
  6607  }
  6608  
  6609  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  6610  //
  6611  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  6612  func (_ServiceChainToken *ServiceChainTokenTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6613  	return _ServiceChainToken.contract.Transact(opts, "transfer", recipient, amount)
  6614  }
  6615  
  6616  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  6617  //
  6618  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  6619  func (_ServiceChainToken *ServiceChainTokenSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6620  	return _ServiceChainToken.Contract.Transfer(&_ServiceChainToken.TransactOpts, recipient, amount)
  6621  }
  6622  
  6623  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
  6624  //
  6625  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
  6626  func (_ServiceChainToken *ServiceChainTokenTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6627  	return _ServiceChainToken.Contract.Transfer(&_ServiceChainToken.TransactOpts, recipient, amount)
  6628  }
  6629  
  6630  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6631  //
  6632  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  6633  func (_ServiceChainToken *ServiceChainTokenTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6634  	return _ServiceChainToken.contract.Transact(opts, "transferFrom", sender, recipient, amount)
  6635  }
  6636  
  6637  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6638  //
  6639  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  6640  func (_ServiceChainToken *ServiceChainTokenSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6641  	return _ServiceChainToken.Contract.TransferFrom(&_ServiceChainToken.TransactOpts, sender, recipient, amount)
  6642  }
  6643  
  6644  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  6645  //
  6646  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
  6647  func (_ServiceChainToken *ServiceChainTokenTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
  6648  	return _ServiceChainToken.Contract.TransferFrom(&_ServiceChainToken.TransactOpts, sender, recipient, amount)
  6649  }
  6650  
  6651  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6652  //
  6653  // Solidity: function transferOwnership(address newOwner) returns()
  6654  func (_ServiceChainToken *ServiceChainTokenTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  6655  	return _ServiceChainToken.contract.Transact(opts, "transferOwnership", newOwner)
  6656  }
  6657  
  6658  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6659  //
  6660  // Solidity: function transferOwnership(address newOwner) returns()
  6661  func (_ServiceChainToken *ServiceChainTokenSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  6662  	return _ServiceChainToken.Contract.TransferOwnership(&_ServiceChainToken.TransactOpts, newOwner)
  6663  }
  6664  
  6665  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  6666  //
  6667  // Solidity: function transferOwnership(address newOwner) returns()
  6668  func (_ServiceChainToken *ServiceChainTokenTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  6669  	return _ServiceChainToken.Contract.TransferOwnership(&_ServiceChainToken.TransactOpts, newOwner)
  6670  }
  6671  
  6672  // ServiceChainTokenApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ServiceChainToken contract.
  6673  type ServiceChainTokenApprovalIterator struct {
  6674  	Event *ServiceChainTokenApproval // Event containing the contract specifics and raw log
  6675  
  6676  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6677  	event    string              // Event name to use for unpacking event data
  6678  
  6679  	logs chan types.Log      // Log channel receiving the found contract events
  6680  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6681  	done bool                // Whether the subscription completed delivering logs
  6682  	fail error               // Occurred error to stop iteration
  6683  }
  6684  
  6685  // Next advances the iterator to the subsequent event, returning whether there
  6686  // are any more events found. In case of a retrieval or parsing error, false is
  6687  // returned and Error() can be queried for the exact failure.
  6688  func (it *ServiceChainTokenApprovalIterator) Next() bool {
  6689  	// If the iterator failed, stop iterating
  6690  	if it.fail != nil {
  6691  		return false
  6692  	}
  6693  	// If the iterator completed, deliver directly whatever's available
  6694  	if it.done {
  6695  		select {
  6696  		case log := <-it.logs:
  6697  			it.Event = new(ServiceChainTokenApproval)
  6698  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6699  				it.fail = err
  6700  				return false
  6701  			}
  6702  			it.Event.Raw = log
  6703  			return true
  6704  
  6705  		default:
  6706  			return false
  6707  		}
  6708  	}
  6709  	// Iterator still in progress, wait for either a data or an error event
  6710  	select {
  6711  	case log := <-it.logs:
  6712  		it.Event = new(ServiceChainTokenApproval)
  6713  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6714  			it.fail = err
  6715  			return false
  6716  		}
  6717  		it.Event.Raw = log
  6718  		return true
  6719  
  6720  	case err := <-it.sub.Err():
  6721  		it.done = true
  6722  		it.fail = err
  6723  		return it.Next()
  6724  	}
  6725  }
  6726  
  6727  // Error returns any retrieval or parsing error occurred during filtering.
  6728  func (it *ServiceChainTokenApprovalIterator) Error() error {
  6729  	return it.fail
  6730  }
  6731  
  6732  // Close terminates the iteration process, releasing any pending underlying
  6733  // resources.
  6734  func (it *ServiceChainTokenApprovalIterator) Close() error {
  6735  	it.sub.Unsubscribe()
  6736  	return nil
  6737  }
  6738  
  6739  // ServiceChainTokenApproval represents a Approval event raised by the ServiceChainToken contract.
  6740  type ServiceChainTokenApproval struct {
  6741  	Owner   common.Address
  6742  	Spender common.Address
  6743  	Value   *big.Int
  6744  	Raw     types.Log // Blockchain specific contextual infos
  6745  }
  6746  
  6747  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6748  //
  6749  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  6750  func (_ServiceChainToken *ServiceChainTokenFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ServiceChainTokenApprovalIterator, error) {
  6751  
  6752  	var ownerRule []interface{}
  6753  	for _, ownerItem := range owner {
  6754  		ownerRule = append(ownerRule, ownerItem)
  6755  	}
  6756  	var spenderRule []interface{}
  6757  	for _, spenderItem := range spender {
  6758  		spenderRule = append(spenderRule, spenderItem)
  6759  	}
  6760  
  6761  	logs, sub, err := _ServiceChainToken.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
  6762  	if err != nil {
  6763  		return nil, err
  6764  	}
  6765  	return &ServiceChainTokenApprovalIterator{contract: _ServiceChainToken.contract, event: "Approval", logs: logs, sub: sub}, nil
  6766  }
  6767  
  6768  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6769  //
  6770  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  6771  func (_ServiceChainToken *ServiceChainTokenFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
  6772  
  6773  	var ownerRule []interface{}
  6774  	for _, ownerItem := range owner {
  6775  		ownerRule = append(ownerRule, ownerItem)
  6776  	}
  6777  	var spenderRule []interface{}
  6778  	for _, spenderItem := range spender {
  6779  		spenderRule = append(spenderRule, spenderItem)
  6780  	}
  6781  
  6782  	logs, sub, err := _ServiceChainToken.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
  6783  	if err != nil {
  6784  		return nil, err
  6785  	}
  6786  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6787  		defer sub.Unsubscribe()
  6788  		for {
  6789  			select {
  6790  			case log := <-logs:
  6791  				// New log arrived, parse the event and forward to the user
  6792  				event := new(ServiceChainTokenApproval)
  6793  				if err := _ServiceChainToken.contract.UnpackLog(event, "Approval", log); err != nil {
  6794  					return err
  6795  				}
  6796  				event.Raw = log
  6797  
  6798  				select {
  6799  				case sink <- event:
  6800  				case err := <-sub.Err():
  6801  					return err
  6802  				case <-quit:
  6803  					return nil
  6804  				}
  6805  			case err := <-sub.Err():
  6806  				return err
  6807  			case <-quit:
  6808  				return nil
  6809  			}
  6810  		}
  6811  	}), nil
  6812  }
  6813  
  6814  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6815  //
  6816  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
  6817  func (_ServiceChainToken *ServiceChainTokenFilterer) ParseApproval(log types.Log) (*ServiceChainTokenApproval, error) {
  6818  	event := new(ServiceChainTokenApproval)
  6819  	if err := _ServiceChainToken.contract.UnpackLog(event, "Approval", log); err != nil {
  6820  		return nil, err
  6821  	}
  6822  	return event, nil
  6823  }
  6824  
  6825  // ServiceChainTokenMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ServiceChainToken contract.
  6826  type ServiceChainTokenMinterAddedIterator struct {
  6827  	Event *ServiceChainTokenMinterAdded // Event containing the contract specifics and raw log
  6828  
  6829  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6830  	event    string              // Event name to use for unpacking event data
  6831  
  6832  	logs chan types.Log      // Log channel receiving the found contract events
  6833  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6834  	done bool                // Whether the subscription completed delivering logs
  6835  	fail error               // Occurred error to stop iteration
  6836  }
  6837  
  6838  // Next advances the iterator to the subsequent event, returning whether there
  6839  // are any more events found. In case of a retrieval or parsing error, false is
  6840  // returned and Error() can be queried for the exact failure.
  6841  func (it *ServiceChainTokenMinterAddedIterator) Next() bool {
  6842  	// If the iterator failed, stop iterating
  6843  	if it.fail != nil {
  6844  		return false
  6845  	}
  6846  	// If the iterator completed, deliver directly whatever's available
  6847  	if it.done {
  6848  		select {
  6849  		case log := <-it.logs:
  6850  			it.Event = new(ServiceChainTokenMinterAdded)
  6851  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6852  				it.fail = err
  6853  				return false
  6854  			}
  6855  			it.Event.Raw = log
  6856  			return true
  6857  
  6858  		default:
  6859  			return false
  6860  		}
  6861  	}
  6862  	// Iterator still in progress, wait for either a data or an error event
  6863  	select {
  6864  	case log := <-it.logs:
  6865  		it.Event = new(ServiceChainTokenMinterAdded)
  6866  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6867  			it.fail = err
  6868  			return false
  6869  		}
  6870  		it.Event.Raw = log
  6871  		return true
  6872  
  6873  	case err := <-it.sub.Err():
  6874  		it.done = true
  6875  		it.fail = err
  6876  		return it.Next()
  6877  	}
  6878  }
  6879  
  6880  // Error returns any retrieval or parsing error occurred during filtering.
  6881  func (it *ServiceChainTokenMinterAddedIterator) Error() error {
  6882  	return it.fail
  6883  }
  6884  
  6885  // Close terminates the iteration process, releasing any pending underlying
  6886  // resources.
  6887  func (it *ServiceChainTokenMinterAddedIterator) Close() error {
  6888  	it.sub.Unsubscribe()
  6889  	return nil
  6890  }
  6891  
  6892  // ServiceChainTokenMinterAdded represents a MinterAdded event raised by the ServiceChainToken contract.
  6893  type ServiceChainTokenMinterAdded struct {
  6894  	Account common.Address
  6895  	Raw     types.Log // Blockchain specific contextual infos
  6896  }
  6897  
  6898  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6899  //
  6900  // Solidity: event MinterAdded(address indexed account)
  6901  func (_ServiceChainToken *ServiceChainTokenFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ServiceChainTokenMinterAddedIterator, error) {
  6902  
  6903  	var accountRule []interface{}
  6904  	for _, accountItem := range account {
  6905  		accountRule = append(accountRule, accountItem)
  6906  	}
  6907  
  6908  	logs, sub, err := _ServiceChainToken.contract.FilterLogs(opts, "MinterAdded", accountRule)
  6909  	if err != nil {
  6910  		return nil, err
  6911  	}
  6912  	return &ServiceChainTokenMinterAddedIterator{contract: _ServiceChainToken.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  6913  }
  6914  
  6915  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6916  //
  6917  // Solidity: event MinterAdded(address indexed account)
  6918  func (_ServiceChainToken *ServiceChainTokenFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenMinterAdded, account []common.Address) (event.Subscription, error) {
  6919  
  6920  	var accountRule []interface{}
  6921  	for _, accountItem := range account {
  6922  		accountRule = append(accountRule, accountItem)
  6923  	}
  6924  
  6925  	logs, sub, err := _ServiceChainToken.contract.WatchLogs(opts, "MinterAdded", accountRule)
  6926  	if err != nil {
  6927  		return nil, err
  6928  	}
  6929  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6930  		defer sub.Unsubscribe()
  6931  		for {
  6932  			select {
  6933  			case log := <-logs:
  6934  				// New log arrived, parse the event and forward to the user
  6935  				event := new(ServiceChainTokenMinterAdded)
  6936  				if err := _ServiceChainToken.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6937  					return err
  6938  				}
  6939  				event.Raw = log
  6940  
  6941  				select {
  6942  				case sink <- event:
  6943  				case err := <-sub.Err():
  6944  					return err
  6945  				case <-quit:
  6946  					return nil
  6947  				}
  6948  			case err := <-sub.Err():
  6949  				return err
  6950  			case <-quit:
  6951  				return nil
  6952  			}
  6953  		}
  6954  	}), nil
  6955  }
  6956  
  6957  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6958  //
  6959  // Solidity: event MinterAdded(address indexed account)
  6960  func (_ServiceChainToken *ServiceChainTokenFilterer) ParseMinterAdded(log types.Log) (*ServiceChainTokenMinterAdded, error) {
  6961  	event := new(ServiceChainTokenMinterAdded)
  6962  	if err := _ServiceChainToken.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6963  		return nil, err
  6964  	}
  6965  	return event, nil
  6966  }
  6967  
  6968  // ServiceChainTokenMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ServiceChainToken contract.
  6969  type ServiceChainTokenMinterRemovedIterator struct {
  6970  	Event *ServiceChainTokenMinterRemoved // Event containing the contract specifics and raw log
  6971  
  6972  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6973  	event    string              // Event name to use for unpacking event data
  6974  
  6975  	logs chan types.Log      // Log channel receiving the found contract events
  6976  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6977  	done bool                // Whether the subscription completed delivering logs
  6978  	fail error               // Occurred error to stop iteration
  6979  }
  6980  
  6981  // Next advances the iterator to the subsequent event, returning whether there
  6982  // are any more events found. In case of a retrieval or parsing error, false is
  6983  // returned and Error() can be queried for the exact failure.
  6984  func (it *ServiceChainTokenMinterRemovedIterator) Next() bool {
  6985  	// If the iterator failed, stop iterating
  6986  	if it.fail != nil {
  6987  		return false
  6988  	}
  6989  	// If the iterator completed, deliver directly whatever's available
  6990  	if it.done {
  6991  		select {
  6992  		case log := <-it.logs:
  6993  			it.Event = new(ServiceChainTokenMinterRemoved)
  6994  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6995  				it.fail = err
  6996  				return false
  6997  			}
  6998  			it.Event.Raw = log
  6999  			return true
  7000  
  7001  		default:
  7002  			return false
  7003  		}
  7004  	}
  7005  	// Iterator still in progress, wait for either a data or an error event
  7006  	select {
  7007  	case log := <-it.logs:
  7008  		it.Event = new(ServiceChainTokenMinterRemoved)
  7009  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7010  			it.fail = err
  7011  			return false
  7012  		}
  7013  		it.Event.Raw = log
  7014  		return true
  7015  
  7016  	case err := <-it.sub.Err():
  7017  		it.done = true
  7018  		it.fail = err
  7019  		return it.Next()
  7020  	}
  7021  }
  7022  
  7023  // Error returns any retrieval or parsing error occurred during filtering.
  7024  func (it *ServiceChainTokenMinterRemovedIterator) Error() error {
  7025  	return it.fail
  7026  }
  7027  
  7028  // Close terminates the iteration process, releasing any pending underlying
  7029  // resources.
  7030  func (it *ServiceChainTokenMinterRemovedIterator) Close() error {
  7031  	it.sub.Unsubscribe()
  7032  	return nil
  7033  }
  7034  
  7035  // ServiceChainTokenMinterRemoved represents a MinterRemoved event raised by the ServiceChainToken contract.
  7036  type ServiceChainTokenMinterRemoved struct {
  7037  	Account common.Address
  7038  	Raw     types.Log // Blockchain specific contextual infos
  7039  }
  7040  
  7041  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  7042  //
  7043  // Solidity: event MinterRemoved(address indexed account)
  7044  func (_ServiceChainToken *ServiceChainTokenFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ServiceChainTokenMinterRemovedIterator, error) {
  7045  
  7046  	var accountRule []interface{}
  7047  	for _, accountItem := range account {
  7048  		accountRule = append(accountRule, accountItem)
  7049  	}
  7050  
  7051  	logs, sub, err := _ServiceChainToken.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  7052  	if err != nil {
  7053  		return nil, err
  7054  	}
  7055  	return &ServiceChainTokenMinterRemovedIterator{contract: _ServiceChainToken.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  7056  }
  7057  
  7058  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  7059  //
  7060  // Solidity: event MinterRemoved(address indexed account)
  7061  func (_ServiceChainToken *ServiceChainTokenFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenMinterRemoved, account []common.Address) (event.Subscription, error) {
  7062  
  7063  	var accountRule []interface{}
  7064  	for _, accountItem := range account {
  7065  		accountRule = append(accountRule, accountItem)
  7066  	}
  7067  
  7068  	logs, sub, err := _ServiceChainToken.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  7069  	if err != nil {
  7070  		return nil, err
  7071  	}
  7072  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7073  		defer sub.Unsubscribe()
  7074  		for {
  7075  			select {
  7076  			case log := <-logs:
  7077  				// New log arrived, parse the event and forward to the user
  7078  				event := new(ServiceChainTokenMinterRemoved)
  7079  				if err := _ServiceChainToken.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  7080  					return err
  7081  				}
  7082  				event.Raw = log
  7083  
  7084  				select {
  7085  				case sink <- event:
  7086  				case err := <-sub.Err():
  7087  					return err
  7088  				case <-quit:
  7089  					return nil
  7090  				}
  7091  			case err := <-sub.Err():
  7092  				return err
  7093  			case <-quit:
  7094  				return nil
  7095  			}
  7096  		}
  7097  	}), nil
  7098  }
  7099  
  7100  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  7101  //
  7102  // Solidity: event MinterRemoved(address indexed account)
  7103  func (_ServiceChainToken *ServiceChainTokenFilterer) ParseMinterRemoved(log types.Log) (*ServiceChainTokenMinterRemoved, error) {
  7104  	event := new(ServiceChainTokenMinterRemoved)
  7105  	if err := _ServiceChainToken.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  7106  		return nil, err
  7107  	}
  7108  	return event, nil
  7109  }
  7110  
  7111  // ServiceChainTokenOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ServiceChainToken contract.
  7112  type ServiceChainTokenOwnershipTransferredIterator struct {
  7113  	Event *ServiceChainTokenOwnershipTransferred // Event containing the contract specifics and raw log
  7114  
  7115  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7116  	event    string              // Event name to use for unpacking event data
  7117  
  7118  	logs chan types.Log      // Log channel receiving the found contract events
  7119  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7120  	done bool                // Whether the subscription completed delivering logs
  7121  	fail error               // Occurred error to stop iteration
  7122  }
  7123  
  7124  // Next advances the iterator to the subsequent event, returning whether there
  7125  // are any more events found. In case of a retrieval or parsing error, false is
  7126  // returned and Error() can be queried for the exact failure.
  7127  func (it *ServiceChainTokenOwnershipTransferredIterator) Next() bool {
  7128  	// If the iterator failed, stop iterating
  7129  	if it.fail != nil {
  7130  		return false
  7131  	}
  7132  	// If the iterator completed, deliver directly whatever's available
  7133  	if it.done {
  7134  		select {
  7135  		case log := <-it.logs:
  7136  			it.Event = new(ServiceChainTokenOwnershipTransferred)
  7137  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7138  				it.fail = err
  7139  				return false
  7140  			}
  7141  			it.Event.Raw = log
  7142  			return true
  7143  
  7144  		default:
  7145  			return false
  7146  		}
  7147  	}
  7148  	// Iterator still in progress, wait for either a data or an error event
  7149  	select {
  7150  	case log := <-it.logs:
  7151  		it.Event = new(ServiceChainTokenOwnershipTransferred)
  7152  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7153  			it.fail = err
  7154  			return false
  7155  		}
  7156  		it.Event.Raw = log
  7157  		return true
  7158  
  7159  	case err := <-it.sub.Err():
  7160  		it.done = true
  7161  		it.fail = err
  7162  		return it.Next()
  7163  	}
  7164  }
  7165  
  7166  // Error returns any retrieval or parsing error occurred during filtering.
  7167  func (it *ServiceChainTokenOwnershipTransferredIterator) Error() error {
  7168  	return it.fail
  7169  }
  7170  
  7171  // Close terminates the iteration process, releasing any pending underlying
  7172  // resources.
  7173  func (it *ServiceChainTokenOwnershipTransferredIterator) Close() error {
  7174  	it.sub.Unsubscribe()
  7175  	return nil
  7176  }
  7177  
  7178  // ServiceChainTokenOwnershipTransferred represents a OwnershipTransferred event raised by the ServiceChainToken contract.
  7179  type ServiceChainTokenOwnershipTransferred struct {
  7180  	PreviousOwner common.Address
  7181  	NewOwner      common.Address
  7182  	Raw           types.Log // Blockchain specific contextual infos
  7183  }
  7184  
  7185  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7186  //
  7187  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7188  func (_ServiceChainToken *ServiceChainTokenFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ServiceChainTokenOwnershipTransferredIterator, error) {
  7189  
  7190  	var previousOwnerRule []interface{}
  7191  	for _, previousOwnerItem := range previousOwner {
  7192  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7193  	}
  7194  	var newOwnerRule []interface{}
  7195  	for _, newOwnerItem := range newOwner {
  7196  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7197  	}
  7198  
  7199  	logs, sub, err := _ServiceChainToken.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7200  	if err != nil {
  7201  		return nil, err
  7202  	}
  7203  	return &ServiceChainTokenOwnershipTransferredIterator{contract: _ServiceChainToken.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  7204  }
  7205  
  7206  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7207  //
  7208  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7209  func (_ServiceChainToken *ServiceChainTokenFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  7210  
  7211  	var previousOwnerRule []interface{}
  7212  	for _, previousOwnerItem := range previousOwner {
  7213  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7214  	}
  7215  	var newOwnerRule []interface{}
  7216  	for _, newOwnerItem := range newOwner {
  7217  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7218  	}
  7219  
  7220  	logs, sub, err := _ServiceChainToken.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7221  	if err != nil {
  7222  		return nil, err
  7223  	}
  7224  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7225  		defer sub.Unsubscribe()
  7226  		for {
  7227  			select {
  7228  			case log := <-logs:
  7229  				// New log arrived, parse the event and forward to the user
  7230  				event := new(ServiceChainTokenOwnershipTransferred)
  7231  				if err := _ServiceChainToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7232  					return err
  7233  				}
  7234  				event.Raw = log
  7235  
  7236  				select {
  7237  				case sink <- event:
  7238  				case err := <-sub.Err():
  7239  					return err
  7240  				case <-quit:
  7241  					return nil
  7242  				}
  7243  			case err := <-sub.Err():
  7244  				return err
  7245  			case <-quit:
  7246  				return nil
  7247  			}
  7248  		}
  7249  	}), nil
  7250  }
  7251  
  7252  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7253  //
  7254  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7255  func (_ServiceChainToken *ServiceChainTokenFilterer) ParseOwnershipTransferred(log types.Log) (*ServiceChainTokenOwnershipTransferred, error) {
  7256  	event := new(ServiceChainTokenOwnershipTransferred)
  7257  	if err := _ServiceChainToken.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7258  		return nil, err
  7259  	}
  7260  	return event, nil
  7261  }
  7262  
  7263  // ServiceChainTokenTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ServiceChainToken contract.
  7264  type ServiceChainTokenTransferIterator struct {
  7265  	Event *ServiceChainTokenTransfer // Event containing the contract specifics and raw log
  7266  
  7267  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7268  	event    string              // Event name to use for unpacking event data
  7269  
  7270  	logs chan types.Log      // Log channel receiving the found contract events
  7271  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7272  	done bool                // Whether the subscription completed delivering logs
  7273  	fail error               // Occurred error to stop iteration
  7274  }
  7275  
  7276  // Next advances the iterator to the subsequent event, returning whether there
  7277  // are any more events found. In case of a retrieval or parsing error, false is
  7278  // returned and Error() can be queried for the exact failure.
  7279  func (it *ServiceChainTokenTransferIterator) Next() bool {
  7280  	// If the iterator failed, stop iterating
  7281  	if it.fail != nil {
  7282  		return false
  7283  	}
  7284  	// If the iterator completed, deliver directly whatever's available
  7285  	if it.done {
  7286  		select {
  7287  		case log := <-it.logs:
  7288  			it.Event = new(ServiceChainTokenTransfer)
  7289  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7290  				it.fail = err
  7291  				return false
  7292  			}
  7293  			it.Event.Raw = log
  7294  			return true
  7295  
  7296  		default:
  7297  			return false
  7298  		}
  7299  	}
  7300  	// Iterator still in progress, wait for either a data or an error event
  7301  	select {
  7302  	case log := <-it.logs:
  7303  		it.Event = new(ServiceChainTokenTransfer)
  7304  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7305  			it.fail = err
  7306  			return false
  7307  		}
  7308  		it.Event.Raw = log
  7309  		return true
  7310  
  7311  	case err := <-it.sub.Err():
  7312  		it.done = true
  7313  		it.fail = err
  7314  		return it.Next()
  7315  	}
  7316  }
  7317  
  7318  // Error returns any retrieval or parsing error occurred during filtering.
  7319  func (it *ServiceChainTokenTransferIterator) Error() error {
  7320  	return it.fail
  7321  }
  7322  
  7323  // Close terminates the iteration process, releasing any pending underlying
  7324  // resources.
  7325  func (it *ServiceChainTokenTransferIterator) Close() error {
  7326  	it.sub.Unsubscribe()
  7327  	return nil
  7328  }
  7329  
  7330  // ServiceChainTokenTransfer represents a Transfer event raised by the ServiceChainToken contract.
  7331  type ServiceChainTokenTransfer struct {
  7332  	From  common.Address
  7333  	To    common.Address
  7334  	Value *big.Int
  7335  	Raw   types.Log // Blockchain specific contextual infos
  7336  }
  7337  
  7338  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  7339  //
  7340  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  7341  func (_ServiceChainToken *ServiceChainTokenFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ServiceChainTokenTransferIterator, error) {
  7342  
  7343  	var fromRule []interface{}
  7344  	for _, fromItem := range from {
  7345  		fromRule = append(fromRule, fromItem)
  7346  	}
  7347  	var toRule []interface{}
  7348  	for _, toItem := range to {
  7349  		toRule = append(toRule, toItem)
  7350  	}
  7351  
  7352  	logs, sub, err := _ServiceChainToken.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
  7353  	if err != nil {
  7354  		return nil, err
  7355  	}
  7356  	return &ServiceChainTokenTransferIterator{contract: _ServiceChainToken.contract, event: "Transfer", logs: logs, sub: sub}, nil
  7357  }
  7358  
  7359  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  7360  //
  7361  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  7362  func (_ServiceChainToken *ServiceChainTokenFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ServiceChainTokenTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
  7363  
  7364  	var fromRule []interface{}
  7365  	for _, fromItem := range from {
  7366  		fromRule = append(fromRule, fromItem)
  7367  	}
  7368  	var toRule []interface{}
  7369  	for _, toItem := range to {
  7370  		toRule = append(toRule, toItem)
  7371  	}
  7372  
  7373  	logs, sub, err := _ServiceChainToken.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
  7374  	if err != nil {
  7375  		return nil, err
  7376  	}
  7377  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7378  		defer sub.Unsubscribe()
  7379  		for {
  7380  			select {
  7381  			case log := <-logs:
  7382  				// New log arrived, parse the event and forward to the user
  7383  				event := new(ServiceChainTokenTransfer)
  7384  				if err := _ServiceChainToken.contract.UnpackLog(event, "Transfer", log); err != nil {
  7385  					return err
  7386  				}
  7387  				event.Raw = log
  7388  
  7389  				select {
  7390  				case sink <- event:
  7391  				case err := <-sub.Err():
  7392  					return err
  7393  				case <-quit:
  7394  					return nil
  7395  				}
  7396  			case err := <-sub.Err():
  7397  				return err
  7398  			case <-quit:
  7399  				return nil
  7400  			}
  7401  		}
  7402  	}), nil
  7403  }
  7404  
  7405  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  7406  //
  7407  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
  7408  func (_ServiceChainToken *ServiceChainTokenFilterer) ParseTransfer(log types.Log) (*ServiceChainTokenTransfer, error) {
  7409  	event := new(ServiceChainTokenTransfer)
  7410  	if err := _ServiceChainToken.contract.UnpackLog(event, "Transfer", log); err != nil {
  7411  		return nil, err
  7412  	}
  7413  	return event, nil
  7414  }